Похоже, что Майкрософт всерьёз нацелились разогнать CPython и сейчас вербуют под это дело светлые умы. Гвидо опубликовал две вакансии — тимлид и разработчик в команду Faster CPython. Кто-нибудь знает, можно ли как-то набрать 5+ лет опыта разработки на C/C++ примерно за 21 день?
https://twitter.com/gvanrossum/status/1402756021358006272?s=21
https://twitter.com/gvanrossum/status/1402756021358006272?s=21
Вчера вышел релиз
А еще там теперь больше не поддерживаются Python 2.7, 3.4 и 3.5. Каждый раз радуюсь, когда очередная популярная библиотека перестаёт поддерживать Python 2.
https://www.psycopg.org/docs/news.html
#psycopg
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 в браузере.
А поделитесь, пожалуйста, ссылками на ещё какие-нибудь митапы/конференции про питон (ютуб, каналы/чаты в телеграме, т.п.), которые вы посещаете или смотрите.
Например, вот, что я там уже посмотрел:
* Аннотации типов в Python;
* Dependency Injection в Python;
* Python в браузере.
А поделитесь, пожалуйста, ссылками на ещё какие-нибудь митапы/конференции про питон (ютуб, каналы/чаты в телеграме, т.п.), которые вы посещаете или смотрите.
YouTube
Аннотации типов в Python. Иван Гончарук, Antida software
Python 3, кроме множества других улучшений, подарил нам аннотации — крайне полезный, но часто вызывающий вопросы механизм. Что такое аннотации типов в 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
Внезапно, годная статья про дядюшку Боба, TDD (test driven development) и качество кода в блоге игры Factorio — песочницы, где нужно строить фабрики и автоматизировать строительство космического корабля. Хотя, если учесть, что большинство игроков так или иначе связаны с разработкой, ничего удивительного, что они пишут в блоге такие статьи вперемешку с игровыми новостями. Если у вас нет лишней недели жизни, то рекомендую даже не пробовать эту игру, очень затягивает. А если играть с командой и еще при этом одновременно передвигать тикеты по канбану и собираться на стендапы, то, наверное, будет ощущаться точь в точь как программирование на работе 😏
За 9 лет существования игры кодовая база доросла до 700k строк. Ребята уже пострадали и от дублирования кода, и от отсутствия тестов, и от регрессий, и от стремительного усложнения кода, который в итоге превращается в неуправляемое месиво и отравляет разработчикам жизнь. Так что вопросы качества кода стоят в команде очень остро. Суть статьи такая: может показаться, что тесты и рефакторинги замедляют получение результата, но на самом деле это оптимальный по скорости разработки подход в долгосрочной перспективе.
https://factorio.com/blog/post/fff-366
Factorio
Friday Facts #366 - The only way to go fast, is to go well! | Factorio
Hello, long time no see :) We obviously have a lot to talk about when it comes to the game changes we recently did, or plan to do, but we don't want to share any of it yet. Yet, there is currently a topic very relevant to us and we can share it without…
Python является самым популярным рантаймом для функций в AWS Lambda. Причём чем крупнее проект, тем выше шанс, что он на питоне. А в маленьких проектах популярен Node.js.
Источник: https://www.datadoghq.com/state-of-serverless/
Источник: 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/
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/
Graham King
A day in the life of a professional software engineer
Just a normal day reversing linked lists on the whiteboard.
Forwarded from DevBrain
Про типы в Python: https://auth0.com/blog/typing-in-python/
Auth0 - Blog
Types in Python
A bird's view look to the Typing features in Python 3.x
Вышли минорные релизы 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
В ветке 3.9 пока фиксятся баги и вносятся прочие улучшения, а вот 3.8 и более старые ветки получают только исправления уязвимостей — найденные баги в эти ветки уже не бэкпортят. Видимо, ожидается, что к настоящему моменту большинство юзеров должно уже перейти на 3.9 (к сожалению, вряд ли это так).
А ветке 3.6 осталось поддерживаться всего полгода, так что с неё нужно обновляться как можно скорее, если вы вдруг все ещё на ней!
https://pythoninsider.blogspot.com/2021/06/python-396-3811-3711-and-3614-are-now.html
Blogspot
Python Insider: Python 3.9.6, 3.8.11, 3.7.11, and 3.6.14 are now available
Я заинтриговался и таки запросил доступ в техническое превью GitHub Copilot.
Похоже, большинству людей все-таки нравится эта игрушка. Однако, существует и отдельная категория людей, которые считают, что Copilot нарушает лицензии, потому что он обучался на миллиардах строк GPL-кода, а теперь просто воспроизводит оттуда сниппеты, которые будут растащены пользователями Copilot'а в их проприетарные проекты. Посмотрим, чем закончится этот лицензионный замес, а меня же больше интересует сама технология.
Похоже, большинству людей все-таки нравится эта игрушка. Однако, существует и отдельная категория людей, которые считают, что Copilot нарушает лицензии, потому что он обучался на миллиардах строк GPL-кода, а теперь просто воспроизводит оттуда сниппеты, которые будут растащены пользователями Copilot'а в их проприетарные проекты. Посмотрим, чем закончится этот лицензионный замес, а меня же больше интересует сама технология.
По поводу популярности версий Python.
Судя по последнему опросу от JetBrains (2020), наиболее популярной является ветка 3.8.
Опросы — это хорошо, но можем ли мы проверить эти данные или получить более свежую информацию? Конечно, можем. Индекс PyPI при установке пакетов собирает анонимную статистику, откуда можно вытащить версии интерпретатора. Эти данные доступны публично напрямую через сервис Google BigQuery, но можно получить их с некоторым отставанием и через HTTP API, например, через сервис pypistats.org (кстати, здесь можно смотреть статистику пакетов и через веб-интерфейс). По количеству скачиваний популярных пакетов мы примерно можем оценить какие сейчас ветки языка в ходу.
Субъективно выбрал пару пакетов, которые кажутся мне популярными и универсальными (т.е. применимы и для веб-разработки, и для data science, и для вообще всего), скачал данные за последние полгода. Нарисовались вот такие графики.
Судя по последнему опросу от 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!
* сейчас на пике популярности находится ветка 3.7 (напомню, там фиксятся только критичные уязвимости, но не прочие баги);
* далее примерно с одинаковым количеством скачиваний идут 3.8 и 3.6 (напомню, ей осталось поддерживаться ещё полгода);
* ~10%
Видимо, в опросах участвует наиболее активная часть сообщества, которая быстро обновляется, поэтому там данные более оптимистичные, чем в 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
А вот как обстоят дела с веб-фреймворками.
Что видно:
* FastAPI — самый прогрессивный. По очевидным причинам у него вообще нет пользователей на Python 2. Довольно много людей уже перешли на 3.9. Ветка 3.8 доминирует.
* Django тоже держится молодцом. Они всегда раньше всех отказываются от поддержки старых версий интерпретатора — например, у них в ветке
* У Flask и Tornado доминирует ветка 3.7.
#fastapi #flask
Что видно:
* 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