Питонические атаки
1.19K subscribers
183 photos
4 videos
1 file
459 links
Всяческие заметки про программирование на Python и другие весёлые истории.
Download Telegram
Похоже, что Майкрософт всерьёз нацелились разогнать CPython и сейчас вербуют под это дело светлые умы. Гвидо опубликовал две вакансии — тимлид и разработчик в команду Faster CPython. Кто-нибудь знает, можно ли как-то набрать 5+ лет опыта разработки на C/C++ примерно за 21 день?

https://twitter.com/gvanrossum/status/1402756021358006272?s=21
Представил, как Python при возникновении ошибок и завершении работы проигрывает звуки из Windows XP.
Вчера вышел релиз psycopg2==2.9 — самого популярного питонячьего драйвера для СУБД PostgreSQL. Измнений не много, но они хорошие. В частности, починили старую проблему с открытием транзакций через контекст-менеджер, если соединение находится в autocommit mode. Вы знали про autocommit mode? Это чтобы не нужно было вручную завершать транзакцию через conn.commit() или conn.rollback() после каждого запроса.

А еще там теперь больше не поддерживаются Python 2.7, 3.4 и 3.5. Каждый раз радуюсь, когда очередная популярная библиотека перестаёт поддерживать Python 2.

https://www.psycopg.org/docs/news.html

#psycopg
Открыл для себя канал с выступлениями с Python Meetup Chelyabinsk. Насколько я вижу, они митапят уже три года, а недавно даже собрались на очередной очный митап после годичного перерыва. Там бывают годные выступления. Всё-таки не весь движ происходит в столицах.

Например, вот, что я там уже посмотрел:

* Аннотации типов в Python;
* Dependency Injection в Python;
* Python в браузере.

А поделитесь, пожалуйста, ссылками на ещё какие-нибудь митапы/конференции про питон (ютуб, каналы/чаты в телеграме, т.п.), которые вы посещаете или смотрите.
The only way to go fast, is to go well!

Внезапно, годная статья про дядюшку Боба, TDD (test driven development) и качество кода в блоге игры Factorio — песочницы, где нужно строить фабрики и автоматизировать строительство космического корабля. Хотя, если учесть, что большинство игроков так или иначе связаны с разработкой, ничего удивительного, что они пишут в блоге такие статьи вперемешку с игровыми новостями. Если у вас нет лишней недели жизни, то рекомендую даже не пробовать эту игру, очень затягивает. А если играть с командой и еще при этом одновременно передвигать тикеты по канбану и собираться на стендапы, то, наверное, будет ощущаться точь в точь как программирование на работе 😏

За 9 лет существования игры кодовая база доросла до 700k строк. Ребята уже пострадали и от дублирования кода, и от отсутствия тестов, и от регрессий, и от стремительного усложнения кода, который в итоге превращается в неуправляемое месиво и отравляет разработчикам жизнь. Так что вопросы качества кода стоят в команде очень остро. Суть статьи такая: может показаться, что тесты и рефакторинги замедляют получение результата, но на самом деле это оптимальный по скорости разработки подход в долгосрочной перспективе.

https://factorio.com/blog/post/fff-366
Python является самым популярным рантаймом для функций в AWS Lambda. Причём чем крупнее проект, тем выше шанс, что он на питоне. А в маленьких проектах популярен Node.js.

Источник: https://www.datadoghq.com/state-of-serverless/
Forwarded from oleg_log (Oleg Kovalov)
A day in the life of a professional software engineer

If you’re a graduate interviewing for a software job and wondering what a typical day is like, here’s some notes from what I did last Tuesday. It was a pretty typical day.

First, as soon as I got to work I realized the night shift had set the linked list up backwards. Doh! I quickly went to the whiteboard to figure out how to reverse it. This won’t be a problem much longer as our team is switching to a double-ended linked list soon. We’re presenting to management about it next week.

I grabbed the first task from my work queue: One of our customers has a long string, and they need to find whether a smaller string is contained within it. This is our bread-and-butter as software engineers. I quickly coded up a Rabin-Karp search with a rolling hash, and had the answer for them by 10am.

Coffee, then task two: The QA team rejected the sort implementation I did last week. I’d written a basic Bubble Sort, and QA wanted to beat O(n2) for the average case. No problem, I switched to a Merge Sort and was done by lunchtime.

That reminded me that I hadn’t finished my Big O calculations for the design review later this week, so that was my first task after lunch. Junior engineers only do the ‘n’ part, but as a senior I do the constant as well. I have three more functions to calculate.

Greg, my colleague came over, he needed help balancing his tree. He’s using a Red-Black; those are tricky. After a quick consult with Dave our lead engineer, I helped Greg switch his design to an AVL. He has a lookup-intensive use case, so it’s a better match.

And that’s it, I headed for the bus station and home. But wait, my day wasn’t over! The bus driver’s watch was broken, and he needed to time 15 minutes. Luckily I had with me two ropes of varying density, both of which burn for exactly one hour…

https://www.darkcoding.net/software/a-day-in-the-life-of-a-professional-software-engineer/
Вышли минорные релизы CPython всех поддерживаемых веток (3.6 — 3.9).

В ветке 3.9 пока фиксятся баги и вносятся прочие улучшения, а вот 3.8 и более старые ветки получают только исправления уязвимостей — найденные баги в эти ветки уже не бэкпортят. Видимо, ожидается, что к настоящему моменту большинство юзеров должно уже перейти на 3.9 (к сожалению, вряд ли это так).

А ветке 3.6 осталось поддерживаться всего полгода, так что с неё нужно обновляться как можно скорее, если вы вдруг все ещё на ней!

https://pythoninsider.blogspot.com/2021/06/python-396-3811-3711-and-3614-are-now.html
GitHub выпускает Copilot, который может дополнять код целыми функциями. Тем временем автодополнение в пайчарме.
Я заинтриговался и таки запросил доступ в техническое превью GitHub Copilot.

Похоже, большинству людей все-таки нравится эта игрушка. Однако, существует и отдельная категория людей, которые считают, что Copilot нарушает лицензии, потому что он обучался на миллиардах строк GPL-кода, а теперь просто воспроизводит оттуда сниппеты, которые будут растащены пользователями Copilot'а в их проприетарные проекты. Посмотрим, чем закончится этот лицензионный замес, а меня же больше интересует сама технология.
По поводу популярности версий Python.

Судя по последнему опросу от JetBrains (2020), наиболее популярной является ветка 3.8.

Опросы — это хорошо, но можем ли мы проверить эти данные или получить более свежую информацию? Конечно, можем. Индекс PyPI при установке пакетов собирает анонимную статистику, откуда можно вытащить версии интерпретатора. Эти данные доступны публично напрямую через сервис Google BigQuery, но можно получить их с некоторым отставанием и через HTTP API, например, через сервис pypistats.org (кстати, здесь можно смотреть статистику пакетов и через веб-интерфейс). По количеству скачиваний популярных пакетов мы примерно можем оценить какие сейчас ветки языка в ходу.

Субъективно выбрал пару пакетов, которые кажутся мне популярными и универсальными (т.е. применимы и для веб-разработки, и для data science, и для вообще всего), скачал данные за последние полгода. Нарисовались вот такие графики.
Что видно:
* сейчас на пике популярности находится ветка 3.7 (напомню, там фиксятся только критичные уязвимости, но не прочие баги);
* далее примерно с одинаковым количеством скачиваний идут 3.8 и 3.6 (напомню, ей осталось поддерживаться ещё полгода);
* ~10% наркоманов разработчиков все ещё сидят на Python 2.

Видимо, в опросах участвует наиболее активная часть сообщества, которая быстро обновляется, поэтому там данные более оптимистичные, чем в PyPI.

Честно говоря, я не понимаю, почему есть такое отставание по версиям. Переход между версиями языка 3.X обычно проходит почти безболезненно. Максимум, придётся просмотреть DeprecationWarning'и и вызывать какие-нибудь другие функции. А взамен получаете новые языковые фичи, оптимизации производительности, исправления багов и уязвимостей.

Короче, домашнее задание! Прямо завтра попробуйте обновить ваши проекты до следующей версии питона, а в идеале сразу же до последней доступной — до 3.9!
Какая на ваших проектах сейчас самая старая версия Python?
Anonymous Poll
13%
3.9
18%
3.8
21%
3.7
27%
3.6
7%
3.5
15%
2
А самая новая?
Anonymous Poll
61%
3.9
28%
3.8
6%
3.7
2%
3.6
0%
3.5
2%
2 😢
А вот как обстоят дела с веб-фреймворками.

Что видно:
* FastAPI — самый прогрессивный. По очевидным причинам у него вообще нет пользователей на Python 2. Довольно много людей уже перешли на 3.9. Ветка 3.8 доминирует.
* Django тоже держится молодцом. Они всегда раньше всех отказываются от поддержки старых версий интерпретатора — например, у них в ветке main (это следующая мажорная версия фреймворка) уже поддерживаются только 3.8 и 3.9. Сообщество активно обновляется, поэтому тоже много установок с 3.8 и 3.9, но и более старые версии питона тоже все ещё много используются. На ветке 3.10 активнее всего тестируется именно Django (больше всего установок), так что к моменту релиза наверняка всё будет сразу же работать.
* У Flask и Tornado доминирует ветка 3.7.

#fastapi #flask