Хитрый Питон
2.36K subscribers
4 photos
191 links
Я много читаю и делюсь в этом канале заинтересовавшими меня материалами, в основном про Python. @korneevm
Download Telegram
На realpython вышел новый туториал - как написать игру в "камень-ножницы-бумага". Кажется, это очень просто. Но по мере работы с туториалам игра усложняется к камню-ножницам и бумаге присоединяются еще два актора (те, кто смотрел Теорию большого взрыва в курсе, о чем речь, для остальных будет сюрприз). Количество комбинаций возрастает и приходится переписывать код, чтобы избавиться от if/elif-ов - https://realpython.com/python-rock-paper-scissors/
Если вы работаете с Django на достаточно большом проекте, то стандартный StatReloader, который перезапускает сервер, когда вы изменили какой-то файл может создавать дополнительную нагрузку на процессор (и батарею ноута, когда работаешь от батарейки). В качестве альтернативы можно использовать Watchman, который запускается как сервис и получает информацию о изменении файлов от операционки. Вот тут можно будет почитать подробнее https://adamj.eu/tech/2021/01/20/efficient-reloading-in-djangos-runserver-with-watchman/
Хранение конфигурации в переменных окружения - один из 12 принципов создания качесвтенных веб-приложений https://12factor.net/ru/. Если вы еще не используете environment variables - эта статья расскажет как и зачем это делать https://doppler.com/blog/environment-variables-in-python
В статье есть некоторое количество рекламы проекта над котором работает автор, но это не делает ее хуже.
Я как-то пропустил новость о том, что вышел новый mypy под python 3.9. Из интересного:
- понимает конструкции типа list[int] которые появились в 3.9
- понимает X | Y вместо Union[X, Y]
- наконец понимает модули без init.py
Подробности тут http://mypy-lang.blogspot.com/2021/01/mypy-0800-released.html
В большинстве веб-приложений нам приходится сталкиваться с задачей аутентификации пользователя - т.е. как получить от него логин/пароль, как их проверить и как после этого работать с ним. Хорошая статья, где преечислены основные виды аутентификации. используемые сейчас в веб-сервисах https://testdriven.io/blog/web-authentication-methods/
Статья как обычно на английском, с примерами кода и ссылками на бибилиотеки для flask/django/fastapi
Интересный материал про то, как сэкономить память при загрузке данных в pandas. И почему при объединении нескольких датафреймов можно получить ее неэффективное использование. Я не часто в последнее время использую pandas, но было интересно прочитать https://drawingfromdata.com/pandas/concat/memory/exploding-memory-usage-with-concat-and-categories.html
Интересная статья про внутренние оптимизации в cpython. В статье рассказано, как работает свертка констант (constant folding) - когда выражение вычисляется на этапе генерации байткода и в рантайме используется вычесленный результат. Будет интересно тем, кто хочет знать как все устроено внутри. Статья на английском и с некоторым количесвтом кода на C https://arpitbhayani.me/blogs/constant-folding-python
При написании сложных приложений очень важно помнить о целостности данных и многие проверки можно переложить на уровень базы данных. В статье показано несколько способов описания комплексных ограничений целосности (constraints) в моделях Django https://www.laac.dev/blog/database-constraints-in-django/
В веб-приложениях часто требуется прикрутить логин через соцсети. На testdriven.io вышел хороший туториал, который в общих чертах рассказывает, как работает OAuth и дается пример подключения социального логина к Flask-приложению https://testdriven.io/blog/flask-social-auth/
В Python есть очень удобная функция enumerate(), которая помогает, к примеру, пронумеровать элементы в цикле. Часто особенно новички в языке, не зная о этой возможности, придумывают обходные пути. В этом видео я покажу как использовать enumerate https://www.youtube.com/watch?v=xysJ0r2Iv_Q
Интересная и подробная статья о том, как python работает с памятью при использовании multiprocessing. Будет полезна, если вы используете какие-то большие readonly-объекты в вашем API. ну и в целом интересно, как все устроено под капотом https://luis-sena.medium.com/understanding-and-optimizing-python-multi-process-memory-management-24e1e5e79047
В питоне нашли ошибку связанную с переполнением буфера при работе с float-ами. Пишут, что в каких-то случаях баг может дать атакующему возможность удаленного исполнения кода. Рецепт исправления - обновиться до 3.8.8 или 3.9.2. Я пошел обновлять свои контейнеры с питоном https://nvd.nist.gov/vuln/detail/CVE-2021-3177