В питоне (как и в любом другом языке программирования) есть некоторое количество "особенностей", незнание которых может привести к серьезным проблемам с кодом.
Статья "10 подводных камней, связанных с безопасностью в python" рассказывает о таких неочевидных штуках. Некоторые из них уже не очень актуальны в новых версиях python, но все равно стоит потратить время и ознакомиться со статьей. Хотя бы потому, что примерно половина этих "особенностей" не будут проблемой, если вы никогда не доверяете данным пришедшим снаружи системы 🙂
https://blog.sonarsource.com/10-unknown-security-pitfalls-for-python
Статья "10 подводных камней, связанных с безопасностью в python" рассказывает о таких неочевидных штуках. Некоторые из них уже не очень актуальны в новых версиях python, но все равно стоит потратить время и ознакомиться со статьей. Хотя бы потому, что примерно половина этих "особенностей" не будут проблемой, если вы никогда не доверяете данным пришедшим снаружи системы 🙂
https://blog.sonarsource.com/10-unknown-security-pitfalls-for-python
Sonarsource
10 Unknown Security Pitfalls for Python
In this blog post, we share 10 security pitfalls for Python developers that we encountered in real-world projects.
👍28
Возможно, вы слышали о AST — это встроенная в питон библиотека для построения абстрактного синтаксического дерева кода. AST используется, например, при написании линтеров. Минус в том, что он позволяет анализировать код, но при этом выкидывает части кода, которые не важны для компилятора, но важны для нас (например, комментарии).
Некоторое время назад Instagram выложил LibCST - которая гораздо бережнее относится к коду и соответственно может использоваться не только для проверки, но и для модификации кода.
В статье разобран хороший пример, как с помощью LibCST можно написать инструмент для ручного рефакторинга кода, который было бы сложно сделать другими инструментами (и долго и неудобно вручную). Если вам интересна тема разработки инструментария для python - рекомендую https://engineering.instawork.com/refactoring-a-python-codebase-with-libcst-fc645ecc1f09
Некоторое время назад Instagram выложил LibCST - которая гораздо бережнее относится к коду и соответственно может использоваться не только для проверки, но и для модификации кода.
В статье разобран хороший пример, как с помощью LibCST можно написать инструмент для ручного рефакторинга кода, который было бы сложно сделать другими инструментами (и долго и неудобно вручную). Если вам интересна тема разработки инструментария для python - рекомендую https://engineering.instawork.com/refactoring-a-python-codebase-with-libcst-fc645ecc1f09
Medium
Refactoring a Python Codebase with LibCST
How can an engineering team maintain consistent conventions in a growing codebase? When working on new code, engineers add new patterns to…
👍14
Мои хорошие знакомые делают сегодня онлайн-митап про тему которая сейчас кажется становится еще более актуальной - "Нанимать или выращивать" крутых специалистов. Я планирую сходить послушать и видится мне, что тема эта может быть интересна не только для CEO/CTO/HRD и прочих топов, но и для обычных разработчиков. Полезно знать как думают те, кто будет тебя нанимать 🙂
Регистрация бесплатная по ссылке https://aihub.timepad.ru/event/2003165/
Регистрация бесплатная по ссылке https://aihub.timepad.ru/event/2003165/
aihub.timepad.ru
Вырастить уникального специалиста внутри компании или нанять готового? / События на TimePad.ru
Что эффективнее: выращивать своих или искать лучших на рынке? А если искать, то чем можно привлечь ценных специалистов с уникальной экспертизой?
👍12🔥3👎2
На ютуб выложены доклады с прошедшего PyCon US 2022. Я пока успел только посмотреть названия видео и темы докладов показались интересными, буду смотреть в ближайшие недели https://www.youtube.com/watch?v=nWnIRYQrVtk&list=PL2Uw4_HvXqvYeXy8ab7iRHjA-9HiYhRQl
YouTube
Welcome - Emily Morehouse
Welcome to PyCon US 2022
Note: Video begins at 1:50
Note: Video begins at 1:50
👍19🔥7
Как обещал, начну рассказывать свои впечатления о докладах с PyCon US. Первый доклад, который я посмотрел - "Best Practices for Continuous Integration in Python" https://www.youtube.com/watch?v=HMlXSiDKWrg&list=PL2Uw4_HvXqvYeXy8ab7iRHjA-9HiYhRQl&index=17
Честно говоря, ожидал большего. В течении 20 минут чувак рассказывает довольно таки очевидные вещи, причем с минимумом прикладных советов - "хороший CI должен быть точным, быстрым и дешевым", "не забывайте пинить версию питона и библиотек", "кеширование - это хорошо" и все в таком духе. Возможно, доклад может показаться интересным новичкам, которые с CI не сталкивались. Но даже в этом случае можно найти более информационно насыщенные видео.
Резюме - не рекомендую
Честно говоря, ожидал большего. В течении 20 минут чувак рассказывает довольно таки очевидные вещи, причем с минимумом прикладных советов - "хороший CI должен быть точным, быстрым и дешевым", "не забывайте пинить версию питона и библиотек", "кеширование - это хорошо" и все в таком духе. Возможно, доклад может показаться интересным новичкам, которые с CI не сталкивались. Но даже в этом случае можно найти более информационно насыщенные видео.
Резюме - не рекомендую
YouTube
Talk - Moshe Zadka: Best Practices for Continuous Integration in Python V02
It is now accepted that having continuous integration is a best practice for almost all non-trivial projects. But configuring CI for Python correctly is still hard. The solution space is big, many common configurations work around the bugs and limitations…
👍31🔥3
Следующий доклад, который я сегодня посмотрел Bootstrapping Your Local Python Environment - https://www.youtube.com/watch?v=-YEUFGFHWgQ&list=PL2Uw4_HvXqvYeXy8ab7iRHjA-9HiYhRQl&index=18
В самом начале показалось что, как и предыдущий уйдет в голую (и малополезную) теорию - "No SoDo" и вот это все. Но дальше докладчик довольно подробно показал работу
В целом он вкратце упомянул наверное большинство более-менее распространённых инструментов для управления версиями языка и зависимостями. В конце рассказал про мои любимые piptools.
Резюме - никаких откровений, но как вводная для тех кто знает только
В самом начале показалось что, как и предыдущий уйдет в голую (и малополезную) теорию - "No SoDo" и вот это все. Но дальше докладчик довольно подробно показал работу
pyenv
, который думаю далеко не все знают и используют. Я для себя узнал про pipx
, который позволяет удобно устанавливать python-утилиты. В целом он вкратце упомянул наверное большинство более-менее распространённых инструментов для управления версиями языка и зависимостями. В конце рассказал про мои любимые piptools.
Резюме - никаких откровений, но как вводная для тех кто знает только
python -m venv
будет полезно.YouTube
Talk - Calvin Hendryx-Parker: Bootstrapping Your Local Python Environment
There are simple, yet crucial, reminders that can differentiate an expert developer from a hobbyist. In this talk and live demo, developers will learn:
- the importance of abiding by the Zen of Python;
- where (and how) to install Python on your machine;…
- the importance of abiding by the Zen of Python;
- where (and how) to install Python on your machine;…
👍26🔥1
Работа с датой и временем всегда была довольно мозголомной задачей, даже если не вспоминать про заморочки с часовыми поясами. Вообще про часовые пояса очень часто забывают, особенно если пишут прототип "для себя". В этом докладе с PyCon-а хороша разобрана тема с тем, как устроена работа с таймзонами в питоне, какие есть подводные камни и как делать правильно https://www.youtube.com/watch?v=XZlPXLsSU2U&list=PL2Uw4_HvXqvYeXy8ab7iRHjA-9HiYhRQl&index=21
Резюме - всячески рекомендую
Резюме - всячески рекомендую
YouTube
Talk - Benjamin "Zags" Zagorsky: Handling Timezones in Python
Does your code use datetimes? There's a chance it has bugs that show up every night after 7pm!
Timezones and daylight savings time are problems that plague most systems. Even if your system is designed for use in a singe timezone, you still need to be aware…
Timezones and daylight savings time are problems that plague most systems. Even if your system is designed for use in a singe timezone, you still need to be aware…
👍15🔥12
Вышла джанга 4.1 https://www.djangoproject.com/weblog/2022/aug/03/django-41-released/ из интересного:
1. Поддержка асинхронных запросов в ORM, но магическим образом запросы асинхронными не станут, надо в явном виде вызывать начинающиеся с
2. В class-based views можно делать асинхронные методы
3. Meta.constraints теперь проверяются во время валидации модели. Я не успел посмотреть как это работает, но если модель сама начнет неявно лазить в базу для проверки
Еще всякие мелочи, которые показались интересными:
-
- новая команда
- поддержка пеерименования индексов в миграциях
-
-
- добавили механизм ротирования SEKRET_KEY-а https://docs.djangoproject.com/en/4.1/ref/settings/#secret-key-fallbacks
- много всякого removed/deprecated но ничего для себя интересного в списке я не нашел https://docs.djangoproject.com/en/4.1/releases/4.1/#backwards-incompatible-changes-in-4-1
Попробую на выходных один пет-проджект перевести на 4.1
1. Поддержка асинхронных запросов в ORM, но магическим образом запросы асинхронными не станут, надо в явном виде вызывать начинающиеся с
a
методы типа .afirst()
вместо .first()
2. В class-based views можно делать асинхронные методы
3. Meta.constraints теперь проверяются во время валидации модели. Я не успел посмотреть как это работает, но если модель сама начнет неявно лазить в базу для проверки
unique
то это скорее минусЕще всякие мелочи, которые показались интересными:
-
makemigrations --scriptable
выглядит как удобная для использования в CI штука- новая команда
optimizemigration
обещает некие оптимизации для миграций, интеерсно будет посмотреть как это работает- поддержка пеерименования индексов в миграциях
-
bulk_create()
теперь кажется умеет делать update если такая строка уже есть в базе-
iterator()
научили делать prefetch_related
- добавили механизм ротирования SEKRET_KEY-а https://docs.djangoproject.com/en/4.1/ref/settings/#secret-key-fallbacks
- много всякого removed/deprecated но ничего для себя интересного в списке я не нашел https://docs.djangoproject.com/en/4.1/releases/4.1/#backwards-incompatible-changes-in-4-1
Попробую на выходных один пет-проджект перевести на 4.1
Django Project
Settings | Django documentation
The web framework for perfectionists with deadlines.
👍35🔥15
Сегодня в 8 вечера по Москве (5pm UTC) по Москве можно будет вживую наблюдать стрим релиза питона 3.11 https://youtu.be/PGZPSWZSkJI
YouTube
Python 3.11 Release
Timestamps
00:00 - Introduction
24:30 - Brandt Bucher, Specializing Adaptive Interpreter
50:40 - Mark Shannon, Other Speedups
1:07:42 - Irit Katriel, Exception Improvements and Features
1:42:13 - Pablo Galindo, Better Tracebacks
1:58:46 - Pablo Galindo, tomllib…
00:00 - Introduction
24:30 - Brandt Bucher, Specializing Adaptive Interpreter
50:40 - Mark Shannon, Other Speedups
1:07:42 - Irit Katriel, Exception Improvements and Features
1:42:13 - Pablo Galindo, Better Tracebacks
1:58:46 - Pablo Galindo, tomllib…
👍12🔥3
В среду 02 ноября, в 19:00 мск пройдет Python meetup online
1. Куда двигается python в 2022 году? Денис Аникин — Райффайзенбанк
Расскажу о том куда двигается python: в первую очередь, о том как, когда и зачем он ускоряется, о nogil, cinder и прочих нововведениях.
2. Тестирование АПИ при помощи Django - Алексей Шарыпов VK
История написания сервиса для тестирования черного ящика без тестов и документации, написанном на малоизвестном языке
3. Распознаем интересные моменты в матчах Dota 2 - Савостьянов Дмитрий — Nordcurrent
В рамках доклада я расскажу как искать хайлайты в матчах Dota 2. Продемонстрирую, как парсить реплеи матчей и записи стримов на YouTube. Кратко обсудим архитектуры нейросетей BERT и TrOCR
Регистрация - https://meetups.evrone.ru/python-meetup-online-1?utm_source=tg&utm_medium=tricky_python&utm_campaign=online_python_meetup
1. Куда двигается python в 2022 году? Денис Аникин — Райффайзенбанк
Расскажу о том куда двигается python: в первую очередь, о том как, когда и зачем он ускоряется, о nogil, cinder и прочих нововведениях.
2. Тестирование АПИ при помощи Django - Алексей Шарыпов VK
История написания сервиса для тестирования черного ящика без тестов и документации, написанном на малоизвестном языке
3. Распознаем интересные моменты в матчах Dota 2 - Савостьянов Дмитрий — Nordcurrent
В рамках доклада я расскажу как искать хайлайты в матчах Dota 2. Продемонстрирую, как парсить реплеи матчей и записи стримов на YouTube. Кратко обсудим архитектуры нейросетей BERT и TrOCR
Регистрация - https://meetups.evrone.ru/python-meetup-online-1?utm_source=tg&utm_medium=tricky_python&utm_campaign=online_python_meetup
👍6
Привет, в эту пятницу в 14:00 МСК буду вести прямой эфир Moscow Python Podcast. Обсуждаем итоги года в python-разработке, приходите, задавайте ввопросы и вообще участвуйте 🙂
Ссылка - https://www.youtube.com/watch?v=Mq3Tkgrczi0
P.S. Конечно, подкаст будет как всегда доступен в записи через некоторое время после эфира
Ссылка - https://www.youtube.com/watch?v=Mq3Tkgrczi0
P.S. Конечно, подкаст будет как всегда доступен в записи через некоторое время после эфира
YouTube
Подводим итоги Python-года с Григорием Петровым, Златой Обуховской и Михаилом Корнеевым
00:00 - Григорий и Михаил про планы на 2023 и новые форматы прямых эфиров и новостных выпусков
1:35 - говорим про планы на ускорение Python (у Златы проблемы со звуком)
5:15 - про эксперимент с выпиливанием gil
11:21 - (небольшие проблемы со звуком)
…
1:35 - говорим про планы на ускорение Python (у Златы проблемы со звуком)
5:15 - про эксперимент с выпиливанием gil
11:21 - (небольшие проблемы со звуком)
…
👍20🔥6
Наткнулся на интересный gist Python People - список людей из глобального python-сообщества со ссылками на их twitter, github и mastodon. Если вы ищите "кого-бы почитать интересного про python" то посмотрите на людей из этого списка https://gist.github.com/samuelcolvin/1743d8919acb465c1fbbcea2c3cdaf3e
Gist
An incomplete list of people in the Python community to follow on Twitter and Mastodon.
An incomplete list of people in the Python community to follow on Twitter and Mastodon. - python-people.md
👍13🔥6
Закинули резюме того, что обсуждали на предновогоднем подкасте на Хабре https://habr.com/ru/post/708204/
Те, кто предпочитает читать выжимку прослушиванию подкаста - велкам
Те, кто предпочитает читать выжимку прослушиванию подкаста - велкам
🔥14👍4
С наступающим! Пусть новый год будет к нам всем добрее, чем старый. И больше питончика вам в новом году :) 🐍
👍36🔥8
На мой взгляд, одной из больших проблем как у тех, кто приходит в разработку так и у тех, кто довольно давно в ней работает. Это умение не просто хорошо писать код, а умение структурировать проект. Понимать, чем хорошая архитектура отличается от плохой. В книгах часто описываются высокоуровневые абстрактные концепции и дальше возникает вопрос — все это хорошо, но вот у меня есть проект на условной Джанге, как все это применить?
На выходных я разбирал закладки и наткнулся на несколько неплохих практических "около архитектурных" гайдов, про которые хочу рассказать:
1. Django Styleguide - гайд который ребята из HackSoftware развивают уже несколько лет. Если вы не читали - очень рекомендую, много хорошего можно утащить для своего проекта. Там хорошо описано как структурировать проект так, чтобы код было легче развивать, поддерживать и тестировать. Гайд постоянно развивается и обновляется https://github.com/HackSoftware/Django-Styleguide
2. Django API Domains - пример применения некоторых принципов Domain-Driven Design в Django. Тут как и в предыдущем гайде использован довольно прагматичный подход - вместо того, чтобы тащить все что есть в DDD, автор предлагает достаточно простую, легко реализуемую и поддерживаемую структуру проекта. Это не "чистый DDD", но лично мне такой подход больше нравится своей простотой. Гайд небольшой и не очень активно развивается, но я все равно рекомендую потратить время и ознакомиться с ним https://phalt.github.io/django-api-domains/
Ну и подводя итог хочу повторить то, что написано в двух первых гайдах. Это не инструкции, которым надо в точности следовать. Это скорее набор подсказок и принципов, из которых имеет смысл выбрать то, что вам покажется разумным и полезным в своих проектах.
P.S. Я попробовал включить комментарии в канале, надеюсь сработает 🙂 Если у вас есть другие хорошие гайды по архитектуре python-веб-приложений - кидайте в комменты, я по итогам сделаю еще один пост.
На выходных я разбирал закладки и наткнулся на несколько неплохих практических "около архитектурных" гайдов, про которые хочу рассказать:
1. Django Styleguide - гайд который ребята из HackSoftware развивают уже несколько лет. Если вы не читали - очень рекомендую, много хорошего можно утащить для своего проекта. Там хорошо описано как структурировать проект так, чтобы код было легче развивать, поддерживать и тестировать. Гайд постоянно развивается и обновляется https://github.com/HackSoftware/Django-Styleguide
2. Django API Domains - пример применения некоторых принципов Domain-Driven Design в Django. Тут как и в предыдущем гайде использован довольно прагматичный подход - вместо того, чтобы тащить все что есть в DDD, автор предлагает достаточно простую, легко реализуемую и поддерживаемую структуру проекта. Это не "чистый DDD", но лично мне такой подход больше нравится своей простотой. Гайд небольшой и не очень активно развивается, но я все равно рекомендую потратить время и ознакомиться с ним https://phalt.github.io/django-api-domains/
Ну и подводя итог хочу повторить то, что написано в двух первых гайдах. Это не инструкции, которым надо в точности следовать. Это скорее набор подсказок и принципов, из которых имеет смысл выбрать то, что вам покажется разумным и полезным в своих проектах.
P.S. Я попробовал включить комментарии в канале, надеюсь сработает 🙂 Если у вас есть другие хорошие гайды по архитектуре python-веб-приложений - кидайте в комменты, я по итогам сделаю еще один пост.
GitHub
GitHub - HackSoftware/Django-Styleguide: Django styleguide used in HackSoft projects
Django styleguide used in HackSoft projects. Contribute to HackSoftware/Django-Styleguide development by creating an account on GitHub.
👍29🔥12👎1
Tryo Labs опубликовали ежегодный обзор "Top Python Libraries 2022". Обзор несколько субъективный и смещен в сторону анализа данных/машинного обучения, но все равно но его интересно посомтреть с точки зрения " какие из этих библиотек я знаю/пробовал?". Мне было интересно пробежаться по предыдущим выпуска - самый ранний вышел в 2015 году. https://tryolabs.com/blog/2022/12/26/top-python-libraries-2022
Tryolabs
Top Python libraries of 2022
There are so many amazing Python libraries and tools out every year that it's hard to keep track of them all. That's why we share with you our hand-picked selection of our best picks.
👍12🔥6
Послезавтра, 19 января в 14:00 МСК будем в прямом эфире записывать очередной Moscow Python Podcast.
В гости к нам придет Георгий Могелашвили, Engineering Manager в Shopify и основатель GetMentor.dev. Обсудим опыт жизни за рубежом и адаптацию в зарубежной компании, развитие, поиск наставника и всем ли нужно становиться тимлидами.
В ходе трансляции будем отвечать на вопросы и комментарии в прямом эфире. Ссылка https://www.youtube.com/watch?v=1mpHfaxy104
В гости к нам придет Георгий Могелашвили, Engineering Manager в Shopify и основатель GetMentor.dev. Обсудим опыт жизни за рубежом и адаптацию в зарубежной компании, развитие, поиск наставника и всем ли нужно становиться тимлидами.
В ходе трансляции будем отвечать на вопросы и комментарии в прямом эфире. Ссылка https://www.youtube.com/watch?v=1mpHfaxy104
YouTube
Куда расти разработчику: взгляд из-за рубежа
В гостях у Moscow Python Podcast Георгий Могелашвили, Engineering Manager в Shopify и основатель GetMentor.dev. Обсудили опыт жизни за рубежом и адаптацию в зарубежной компании, развитие, поиск наставника и всем ли нужно становиться тимлидами.
00:00 - разница…
00:00 - разница…
🔥13👍5
В качестве пятничного чтения рекомендую большую статью про состояние и перспективы менеджмента пакетов в Питоне. На мой взгляд это одно из самых проблемных мест в экосистеме языка. Есть много инструментов, у каждого из которых свой подход. Нет единого лидера - судя по опросам, top3 самых популярных менеджера, одинаково популярны. Проблемы со стандартизацией - тот же PEP 582 уже несколько лет как завис в непонятном состоянии.
В статье довольно много личного авторского отношения и статья довольно длинная. Но если вы интересуетесь тем, что происходит в экосистеме это прямо must read https://chriswarrick.com/blog/2023/01/15/how-to-improve-python-packaging/
В статье довольно много личного авторского отношения и статья довольно длинная. Но если вы интересуетесь тем, что происходит в экосистеме это прямо must read https://chriswarrick.com/blog/2023/01/15/how-to-improve-python-packaging/
Chris Warrick
How to improve Python packaging, or why fourteen tools are at least tw
A journey to the world of Python packaging, a visit to the competition, a hopeful look at the future, and highlights from a disappointing discussion.
👍15🔥2
Я довольно мало работаю с данными, но, когда возникает задача, привычно беру pandas. Про polars, конечно, слышал но никогда его не использовал. Сегодня наткнулся на подробное сравнение синтаксиса этих библиотек, и мне прямо очень понравился синтаксис выборок в полярсе. В следующий раз, когда надо будет покрутить набор данных, я попробую взять для этого polars - https://kevinheavey.github.io/modern-polars/
Modern Polars
A side-by-side comparison of the Polars and Pandas libraries.
👍16🔥1
Если вы еще не смотрели проект
А теперь перейдем к новости - автор анонсировал поддержку yaml/toml. Правда, для парсинга для этих форматов будет использоваться существующие библиотеки и прибавки производительности можно не ждать. Тем не менее, возможность декларативно описывать, читать/писать и валидировать самые распространенные разные форматы выглядит очень вкусно - https://www.reddit.com/r/Python/comments/10gzbgo/parsing_and_validating_pyprojecttoml_files_with/
msgspec
(https://jcristharif.com/msgspec/index.html) - очень рекомендую взглянуть. Это сериализатор для json/msgpack
, у него удобный синтаксис, похожий на pydantic
и по тестам скорости сериализации/десериализации он обгоняет orjson
. В общем, быстрая и удобная штука.А теперь перейдем к новости - автор анонсировал поддержку yaml/toml. Правда, для парсинга для этих форматов будет использоваться существующие библиотеки и прибавки производительности можно не ждать. Тем не менее, возможность декларативно описывать, читать/писать и валидировать самые распространенные разные форматы выглядит очень вкусно - https://www.reddit.com/r/Python/comments/10gzbgo/parsing_and_validating_pyprojecttoml_files_with/
Reddit
From the Python community on Reddit
Explore this post and more from the Python community
👍19