Новости, статьи, книги и видео из мира разработки софта Автор @adilkhash Веду блог https://khashtamov.com/
Про таймауты и внешние API
Хорошей практикой при работе с внешними сервисами я считаю явное указание таймаутов ожидания соединения и ответа от хоста. Такой подход поможет избежать проблем с "зависанием" соединения и, как следствие, блокировкой процесса (для блокирующих соединений). На моей памяти было 2 неприятных кейса. В далёком 2015 я использовал requests для работы с сервисом поиска и бронирования ЖД билетов в Казахстане, по-умолчанию в requests нет таймаута и ожидание может превратиться в бесконечность. Всё было хорошо до тех пор пока у внешнего сервиса не начались проблемы, и он перестал отвечать на запросы. Все worker-процессы ушли в бесконечное ожидание, и мой сервис перестал принимать новые соединения, сайт попросту сломался. Тогда мне потребовалось некоторое время, чтобы понять в чем проблема.
Со второй проблемой я столкнулся неделю назад. Сейчас я разрабатываю веб-сервисы для автоматизации рекламных сетей, активно пользуюсь Facebook Ads. Для работы с маркетинговым сервисом Фейсбука существует библиотека facebook-python-business-sdk. Внимание! Под капотом она использует requests 😉 И у неё нет таймаута по умолчанию. Я наткнулся на те же грабли, когда ФБ стал подтормаживать.
К слову, если вы как и я пользуетесь facebook-python-business-sdk, то таймаут можно установить через инициализацию API-класса:
FacebookAdsApi.init(access_token=access_token, api_version='v13.0', timeout=settings.FACEBOOK_ADS_API_TIMEOUT)
Не наступайте на грабли, ставьте таймауты 😉
Также по теме в ленте увидел пост про патчинг requests: https://adamj.eu/tech/2022/06/23/how-to-patch-requests-to-have-a-default-timeout/
Видосы с прошедшего PyCon US 2022 подъехали: https://bit.ly/3wF0qSV
Читать полностью…Вы приняты
Многие из вас уже учились в Школе Сильных Программистов — это ребята, которые сделали курсы «Асинхронная Архитектура» и «Стать Тимлидом».
Теперь Федя с Марьяной запускают курс на максимально актуальную сейчас тему — как найти работу за рубежом. На курс позвали чувака, который уже 4 года нанимает инженеров в Мюнхене, и сам переехал в Германию из Красноярска в 2014 году. Обещают помочь с линкедин-профилем, провести мок-интервью и дать обратной связи от себя и других студентов.
Обучение стартует 26 мая, продлится три недели и затронет весь цикл трудоустройства — от выбора компании до оценки адекватности оффера.
Записаться →
P.S. По промокоду devbrain10 скидка 10% до 18 мая.
Месяц назад ребята из Delivery Club поделились первой частью эволюции собственной рекомендательной системы ресторанов. Подробнее в публикации на Хабре.
На днях вышло продолжение. Из новой статьи вы узнаете, как отранжировать рестораны персонально для каждого пользователя, зачем нужна офлайновая ML-модель и почему обучение моделей «в лоб» не работает.
Крутой справочник по f-строкам в Python: https://fstring.help/
Читать полностью…21 апреля стартует курс по асинхронной архитектуре. Авторы — двое известных чуваков: Федя Борщёв и Антон Давыдов.
Вы научитесь проектировать и разрабатывать сложные распределенные системы — с Kafka, CQRS и сложными транзакциями. Курс — крафтовый: это значит вы не платите гигантской компании, которая просто пригласила пару чуваков из компании с громким именем. Наоборот — ребята давно копили опыт и теперь решили поделиться.
Это фундаментальный курс о проектировании больших систем — о форматах данных, отказоустойчивости, тестировании и даже разговорах с бизнесом. Будет полезен, если собираетесь иметь дело с любым серьёзным проектом, в котором больше одного репозитория.
Даже если вы джун, который пилит монолит в маленьком стартапе, курс вам поможет: мышление проектировщика позволяет писать более понятный и изолированный код.
Учимся 4 недели, по 2 урока в неделю. Будут домашки с разбором, так что на выходе, если не поленитесь — получите проект с асинхронной архитектурой в портфолио.
Для подписчиков скидка 10% по промокоду devbrain. Действует до 10 апреля.
Посмотреть программу и отзывы →
Ребят, соскучились?) Месяц сюда ничего не постил в связи с сильной занятостью, да и событий после праздников интересных пока не происходило. Сегодня хочу поделиться с вами книгой, которую заканчиваю читать и она, пожалуй, лучшая из тех, что я прочитал в 2017 году. Называется она Designing Data-Intensive Applications, на русском языке пока не издавалась. Чем же примечательна эта книга? Ранее я упоминал, что интересуюсь темой Data Engineering, и даже взял специализацию в Яндексе. Материала по теме очень мало в сети, поэтому собирать приходится по крупицам. Книга Designing Data-Intensive Applications поможет вам влиться в тему разработки распределённых систем, расскажет как работают транзакции, в чем отличия между Thrift, Avro и Protobuf. Особенно полезно будет тем, кто только начинает свой путь в разработке сложных бекендов, интересуется как работает репликация, что такое CAP-теорема да и вообще какие проблемы могут возникнуть при взаимодействие распределённых систем между собой.
Примечательной особенностью книги является простота с которой написан текст. Здесь вы не найдёте сложных математически формул или академического стиля повествования. Всё просто и доступно. Эта книга настоящий кладезь знаний для современного разработчика! В сети можно найти электронную версию книги, я же заказал её с Amazon в бумажном виде (это того стоит).
Сегодня я подготовил небольшой дайджет свежих материалов, которые могут вас заинтересовать. Пожалуйста, поделитесь мнением, нравится ли вам такой формат? http://telegra.ph/Interesnoe-v-IT-1-12-12
Читать полностью…Около месяца назад начал проходить сразу 2 специализации на платформе Coursera:
- Машинное обучение и анализ данных от МФТИ
- Big Data for Data Engineers от Яндекса
Последняя специализация, к слову, была запущена чуть больше месяца назад. На сегодня закончил по 1 курсу из каждой специализации, а именно вот эти:
- Математика и Python для анализа данных (мой сертификат)
- Big Data Essentials: HDFS, MapReduce and Spark RDD (мой сертификат)
Хочу поделиться мыслями о курсах. Начнём с первого.
Цель курса "Математика и Python для анализа данных" — обозначить необходимый набор навыков для успешного прохождения всей специализации. Здесь вы найдёте небольшое введение в язык Python и его инструменты для анализа данных: pandas, numpy, scipy, остальная же часть курса посвящена математическому аппарату, а именно темам из линейной алгебры (матрицы, векторы, векторное пространство), теории вероятностей и немного затронут математический анализ — предел и производная. Особенно понравился упор на прикладные задачи, т.е. изучая, например, матрицы или векторы, понимаешь как их применять для решения прикладных задач. Но курс всё таки требует некоторой предварительной подготовки по обозначенным мною темам.
Эти материалы возможно помогут при прохождении курса:
- Essence of linear algebra
- Введение в pandas
Big Data Essentials это первый из 5 курсов, посвященных "горячей" нынче теме про построение инфраструктуры для эффективного анализа данных. Анонс специализации я делал у себя в Telegram канале в первой половине октября. Тогда я только присматривался, в итоге решил проходить. Что из себя представляет первый курс? Это плавное введение в основные инструменты анализа больших данных — Apache Hadoop и Apache Spark. Из 6 недель курса, 2 недели исключительно практические, вообще практических заданий тут хватает. Материалы курса предполагают некоторый опыт программирования, от себя добавлю, что большим плюсом будет наличие навыка в функциональном программировании. К сожалению, есть и ряд минусов. Так как материал появился относительно недавно, в нём есть ошибки из-за которых я терял время. Во-первых, встречаются задания с ошибками в формулах и коде, частенько "валился" удалённый hadoop/spark кластер. Мой совет перед выполнением заданий — активно читайте форум, тестируейте код локально на небольших кусках данных, по возможности поднимите свой docker-контейнер с hadoop или spark (в материалах есть ссылка на контейнер, а на форуме инструкция по настройке). Ещё смущает дичайший русский акцент, иногда в речи встречаются неверно составленные предложения, но к этому можно привыкнуть.
Изучение продолжается. На очереди у меня "Обучение на размеченных данных" и "Big Data Analysis: Hive, Spark SQL, DataFrames and GraphFrames". Скучно точно не будет :)
В сети стали доступны видео-доклады с прошедшей в Москве конференции Moscow Python Conf 2017. Вот список докладов, которые могут вас заинтересовать:
Построение распределённых Django систем
Блокчейн и Python
Работа с изображениями на Python в 2017 году, Александр работает разработчиком в Uploadcare (когда-то собеседовался туда) и развивает Pillow, поэтому знает о чем говорит.
Все видео доступны в 2-х плейлистах:
Поток 1
Поток 2
#python #video
Ребята из frameworks days организовывают тематические митапы/конференции. На этот раз затронули тему высоконагруженных систем, доклады можно посмотреть тут
#highload
Если вы также как и я "плаваете" в океане инструментов JS и фронтенд-разработки, то вот эта замечательная статья на русском языке поможет навести порядок в том хаосе, который творится в наших головах при изучении JS в 2017 году. 100% концентрат полезной информации.
Читать полностью…Высшая школа экономики вместе с Яндексом запустили новую специализацию на платформе Coursera — Advanced Machine Learning Specialization. Вас ждут 7 курсов хардкорного погружения в передовые технологии искусственного интеллекта.
Читать полностью…Лариса Агаркова известная личность в определённых кругах, работает в Google уже несколько лет, и ведёт свой блог. В октябре она выступала с лекцией на мехмате БГУ на тему "Хочу работать в Google". Получилась философско-поучительная презентация, которую я предлагаю вам посмотреть. А вот её блог с кучей статей на ту же тему — larrr.com
Читать полностью…Очень классная серия статей про устройство дисков с точки зрения файловой и операционной систем, а также разбор двух популярных структур данных на основе которых строятся движки баз данных: B-Tree и LSM-Tree.
1. On Disk IO, Part 1: Flavours of IO
2. On Disk IO, Part 2: More Flavours of IO
3. On Disk IO, Part 3: LSM Trees
4. On Disk IO, Part 4: B-Trees and RUM Conjecture
#dataengineering
Тут DigitalOcean завёз новый сервис FaaS, Function as a Service: https://do.co/3PBPcWS
Читать полностью…Релиз первой альфы Django 4.1
Вышла первая альфа-версия Django 4.1: https://www.djangoproject.com/weblog/2022/may/18/django-41-alpha-1-released/
Альфа-релиз подразумевает feature-freeze, а ближайшая бета-версия выйдет в конце июня. Финальный же релиз намечается на начало августа. Отмечу, что Django 4.1 это не LTS релиз, LTS-версией будет Django 4.2, которая выйдет в августе 2023 года.
Что же примечательного в Django 4.1?
1. Class-based views стали асинхронными (ранее асинхронными были только функции, function-based views).
2. Появился асинхронный интерфейс для Django ORM, но отмечу что разработчики лишь скрыли под капотом вызовы запросов к базе через sync_to_async. Проще говоря, синхронные запросы к БД запускаются в отдельных потоках в рамках eventloop. У ORM-методов появились свои асинхронные аналоги с приставкой a:
Примеры:
- Book.objects.aget()
- Book.objects.afirst()
3. Прекращение поддержки PostgreSQL ниже 11 версии. Django 4.1 поддерживает только PostgreSQL 11 и выше.
4. Запрет вызова logout через HTTP GET метод. Если у вас на сайте есть кнопка выхода, проверьте что вы это делаете через POST запрос (исправьте при необходимости).
5. Прекращается поддержка кэш-бэкенда для memcached
Более подробную информацию о фичах и обратно несовместимых изменениях можно почитать на сайте: https://docs.djangoproject.com/en/dev/releases/4.1/
А вы используете Django в своих проектах/на работе?
Вышла первая бета python 3.11: https://www.python.org/downloads/release/python-3110b1/
Версия 3.11 несёт в себе большое количество новых фич. Скоро выпущу подробный пост с разбором каждой фичи. Помимо этого в рамках инициативы Faster Python заявляется, что версия 3.11 в среднем на 22% быстрее чем 3.10 😲😲
Возможны вы уже видели, но если нет, то вышел очень крутой профайлер памяти для Python от Bloomberg: https://github.com/bloomberg/memray
У Юрия Селиванова в твиттере есть тред по этой теме: https://twitter.com/1st1/status/1516859294896906241
Хорошие новости. В AWS Lambda появились HTTPS URL, теперь можно вызывать Lambda по ссылке, минуя настройку через API Gateway: https://aws.amazon.com/ru/blogs/aws/announcing-aws-lambda-function-urls-built-in-https-endpoints-for-single-function-microservices/
Как ни странно, но в Яндекс.Облаке такая фича была изначально, это помогло мне развернуть телеграм-бота и не платить за него ни копейки.
На днях были опубликованы видео с проходившей в ноябре конференции PiterPy № 4 — посмотреть. Каждый год PiterPy понемногу эволюционирует в международную конференцию, учитывая интересы иностранных докладчиков и гостей, поэтому в этот раз можно увидеть переводы англоязычных докладов на русский и обратно. Также в сети стали доступны доклады с конференции Highload++ Junior 2017 (HLj) — смотреть. Доклады будут интересны в первую очередь начинающих "хайлоудерам", помогут систематизировать знания.
Читать полностью…Внимание! Подъехала годнота в виде докладов с прошедшего Highload++ 2017. Качаем, смотрим, комментируем. Для просмотра кликайте по ссылке https://goo.gl/X2UDRn
Читать полностью…13 декабря пройдет бесплатный вебинар «Создай свою первую модель машинного обучения».
Вы соберете и проанализируете данные с сайта hh.ru, на основе которых создадите модель регрессии и оцените результаты. Также вы узнаете секреты работы с категориальными и текстовыми данными.
Ведущий — Петр Ермаков, руководитель отдела аналитики Mail.Ru Group.
Регистрация — https://goo.gl/EkXxwo.
Занятная статья про упорство и трудолюбие, которое может привести к получению офферов от крупнейших IT компаний мира. Читаем на "Хабре" - https://goo.gl/gbfAzN
Читать полностью…Не так давно на канале я публиковал видео, где автор наглядно объясняет что из себя представляет нейронная сеть. А вот вам такое же видео на тему глубокого обучения. Смотрим.
Что такое нейронная сеть?
Что такое глубокое обучение?
#datascience
Разработчики VueJS выпустили доклад на 80 страниц под названием State Of Vue.JS 2017. Что из себя представляет этот документ? История развития и будущее фреймвореа Vue в экосистеме JavaScript. Я активно использую vue в своих проектах и пока мне всё нравится. С каждым днём количество новых компонентов растёт, а вместе с тем и сообщество. Интерес со стороны крупных игроков также есть, что свидетельствует о зрелости технологии.
Читать полностью…Нахождение минимального расстояния между словами это одна из самых популярных задач на собеседованиях. Любителям щёлкать алгоритмические задачки понравится.
/channel/unilecs/78
SkillFactory запускают крутой курс по Machine Learning. Обещают научить важным навыкам в области машинного обучения для решения конкретных бизнес-задач. А еще работать с алгоритмами машинного обучения на Python, готовить данные и выбирать подходящую модель. Закончится курс выпускным хакатоном.
Курс подойдет аналитикам, разработчикам и product-менеджерам. Преподаватели — аналитики Mail.ru и преподаватели НИУ ВШЭ.
Курс начинается 27 ноября, пройдет очно в Москве
Подробнее — https://goo.gl/BifvWG
Техносфера запустила очередной крутой курс про высоконагруженные системы. Ведут его технари из Одноклассников, я уже посмотрел 2 лекции и очень советую его вам. Смотреть
Читать полностью…Нашел классное объяснение что из себя представляет нейронная сеть и технология глубокого обучения. Смотрите видео
Читать полностью…