3040
Автор @adilkhash Веду блог https://khashtamov.com/
В сети стали доступны доклады с DjangoCon US 2022. Я ещё не смотрел, но выделил для себя интересные презентации на основе названий:
- The Django Admin Is Your Oyster: Let’s Extend Its Functionality
- Django Logging Demystified
- Why I Didn't Start With Django
- Herding your database queries: diagnosing, improving and guarding performance of DB interactions
- Type checking your Django code with django-types and Pyright
- Keeping track of architectural-ish decisions in a sustainable way
- Explaining EXPLAIN: A dive into PostgreSQL's EXPLAIN plans
- Security Best Practices for Django Applications
- Why large Django projects need a data (prefetching) layer
- A pythonic full-text search with Paolo Melchiorre
- Integrating React in the Django way!
- Full Text Search with Django and PostgreSQL: More Facets, Less Dependencies!
Полный плейлист с докладами доступен по ссылке.
К слову, Django по-прежнему остаётся моим фаворитом когда дело касается разработки веб-приложений на Python 🐍
В сети стали доступны доклады с DjangoCon Europe 2022: https://bit.ly/3VIOHxt
В этот раз доклады получились более чем интересные, особенно про внутрянку Django: админку, работу ORM и т.д.
Привет всем! До начала нового сезона Podlodka Techlead Crew 🛠«Observability: monitoring, alerting, tracing» ещё осталось время. Мы перенесли старт на 17 октября. А значит вы еще можете успеть купить билет, чтобы узнать ответы на вопросы:
⚡️Как справляться быстро и эффективно с ошибками в проде — советы от Михаила Дружинина из Datadog.
⚡️Как и зачем нужно измерять надежность системы и какие подходы для этого применять. Тайны раскроет Павел Лакосников из «Авито».
⚡️Зачем нужны SRE-инженеры: почему возникла эта профессия, какие ее основные принципы и инструменты и чем они отличаются от DevOps-парадигмы. Примеры из практики Ганны Новиковой из Intergiro.
⚡️Как устроено SRE в разных компаниях — послушаем на круглом столе с Дмитрием Масленниковым из «Тинькофф», Михаилом Фесенко из Booking.com, Сергеем Бухаровым из АО «Финам» и Максимом Гусевым.
⚡️Какие бенефиты компания получит от внедрения SRE-культуры, как ее поддерживать и развивать — в интервью с Максимом Гусевым.
⚡️Кому, когда и зачем нужно тестирование доступности — сессия с Алексеем Мишкиным.
⚡️Как выбирать технические метрики правильно — чтобы избежать нескольких итераций и боли от множественных переделок. Секреты раскроет Маргарита Ольшанская из Bolt.
Все подробности сессий уже есть на сайте. Купить билет можно уже сейчас — до следующего понедельника действуют скидки!
23 сентября стартует 4 поток курса по асинхронной архитектуре. Авторы: Федя Борщёв и Антон Давыдов.
Вы научитесь проектировать и разрабатывать сложные распределенные системы — с Kafka, CQRS и сложными транзакциями. Курс — крафтовый: это значит вы не платите гигантской компании, которая просто пригласила пару чуваков из компании с громким именем. Наоборот — ребята давно копили опыт и теперь решили поделиться.
Это фундаментальный курс о проектировании больших систем — о форматах данных, отказоустойчивости, тестировании и даже разговорах с бизнесом. Будет полезен, если собираетесь иметь дело с любым серьёзным проектом, в котором больше одного репозитория.
Даже если вы джун, который пилит монолит в маленьком стартапе, курс вам поможет: мышление проектировщика позволяет писать более понятный и изолированный код.
Некоторые ученики рассказывают, что курс помог им найти новую работу или улучшить положение на старой. Некоторые получали оферы даже во время собеседования.
Длительность курса — 4 недели, по 2 урока в неделю. Будут домашки с разбором, так что на выходе, если не поленитесь — получите проект с асинхронной архитектурой в портфолио.
Для подписчиков скидка 10% по промокоду adil10. Действует до 14 сентября.
Посмотреть программу и отзывы →
Psycopg 3.1
Вышел новый релиз самой популярной python балалайки для работы с PostgreSQL — psycopg 3.1
Из значительных фич — pipeline mode. Режим позволяет отправлять запросы на сервер и не ждать ответа, что даёт буст в скорости работы приложения (например, при массовых вставках в условиях высокого пинга)
Как работает Redis? Узнать можно тут: https://bit.ly/3pIbA5b
Читать полностью…
ORM на базе Pydantic моделей: https://bit.ly/3dPNK4T
Читать полностью…
Какой крутой ресурс я нашел: https://deps.dev/
Сервис индексирует пакетные репозитории типа npm, pypi, cargo и т.д., и показывает детальную информацию о пакетах:
— прямые зависимости
— историю версий
— подробную информацию о лицензиях
Например, у Django есть 2 прямые зависимости: asgiref и sqlparse.
Django 4.1
Вышел долгожданный релиз Django 4.1: https://www.djangoproject.com/weblog/2022/aug/03/django-41-released/
Выходим на мета-уровень!🤯 11 июля начинается новый сезон Podlodka Soft Skills Crew, который называется "Научиться учиться"🤩
🎓В нашей жизни и так много обучения, а в айти и тем более – новые технологии, новые доменные области, новые процессы. Все это постоянно меняется.
Поэтому критически важно осваивать новые знания эффективно и осмысленно.
Поэтому в новом сезоне мы сконцентрируемся на выстраивании эффективного подхода к самообучению:
⭐️ Проанализируем свои потребности и цели в обучении
⭐️ Построим план по достижению этих целей
⭐️ Поймем принципы обучения на биологическом уровне
⭐️ Изучим и сравним инструменты обучения от книг и до сессий с ментором
⭐️ Научимся разбираться с мотивацией и находить силы
✨Бонус трек – в течение всей недели по утрам будут практические воркшопы по осознанности, рефлексии и самодиагностике!
Если вы еще ни разу не были на Podlodka Crew, то самое время попробовать! Главные фичи:
💡Узкая тема. Разбираем теорию и практику конкретного подхода или технологии.
💡Удобное расписание: сессии идут 2 раза в день с понедельника по пятницу.
💡Море практики, реальных кейсов и нетворкинга без границ
Купить билеты и посмотреть расписание можно на сайте конференции. Ждем вас на борту!
В доке Mozilla нашел html-тэг о котором ранее не знал — datalist: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/datalist
Этот тег выполняет функции select и input, но есть крутая фишечка — нативный автокомплит.
А вы знали о теге <datalist>?
Тут 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
Если вы разработчик и у вас есть пара минут, порефлексируйте, пожалуйста, с нами о происходящем в небольшом опросе. Ваши ответы помогут крупному работодателю понять, где теперь открывать офисы и какая помощь и поддержка вам нужны.
Пройти опрос
Weekend Offer для бэкенд-разработчиков 29–30 октября
Получить оффер Яндекса можно за 2 дня. Участвуйте в Weekend Offer Backend: решите тестовое, пройдите 2–3 секции 29 октября, а уже 30 октября получите оффер.
От Яндекса в мероприятии участвуют команды, которые готовы предложить работу в гибком формате — полностью удаленно, в смешанном режиме или из любого офиса или коворкинга в 20 городах России и мира. Варианты работы обсуждаются с каждым кандидатом индивидуально.
На мероприятии ждут инженеров с опытом разработки от 3-х лет на Java, C++, Python и Go, либо готовых к работе на этих языках программирования.
Зарегистрироваться на мероприятие
Реклама. Информация о рекламодателе на сайте http://www.yandex.ru/company
Мне тут на глаза попалась новая балалайка для логирования в Python от Microsoft: picologging
Интерфейс библиотеки на 100% совпадает со стандартным пакетом logging, о котором я, к слову, писал подробный гайд. Главная её фича — скорость. Высокая производительность достигается за счёт языка Си, picologging это расширение на сях. Например, метод format у Formatter-класса работает в 18 раз быстрее стандартного. Но есть и свои ограничения.
В остальном, можно без лишних движений заменить стандартный logging на picologging:
import picologging as logging
WARNING: библиотека находится в статусе альфы со всеми вытекающими 😁
Прошлый пост касался архитектуры Redis, а сейчас предлагаю вам познакомиться с кишками memcached: https://bit.ly/3czb6eQ
Лет 5-6 назад я был активным пользователем memcached, использовал его во всех проектах как основной кэш-бэкенд, но с бурным развитием Redis я переключился на него. Тем не менее, memcached поддерживается (последняя версия вышла 26 августа 2022 года), видео считаю очень полезным (как и канал автора в целом).
Советы по работе с git в PyCharm: https://youtu.be/IoUQ5JEokN4
Сам я уже давно не использую классический консольный git, пользуюсь исключительно UI от IDE, в частности PyCharm.
В блоге Wolt увидел полезный пост про структуру современных Python пакетов: https://blog.wolt.com/engineering/2022/08/11/project-template-for-modern-python-packages/
Читать полностью…
Нашел огромный список курсов по Computer Science с видео лекциями: https://bit.ly/3SBhr9u
Читать полностью…
Django 4.0.6, 3.2.14
В последнем продакшен релизе Django появился весьма не приятный баг, который может привести к SQL Injection: https://www.djangoproject.com/weblog/2022/jul/04/security-releases/
Рекомендуется обновиться как можно быстрее.
Python Web Conf 2022 Talks + Tutorials — https://bit.ly/3nrOChE
Читать полностью…
Про таймауты и внешние 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/
Читать полностью…