Чему Мстители могут научить нас о Git?
Интересная статья, где сюжетные повороты с путешествиями во времени из Мстителей объясняются с точки зрения Git. Содержит спойлеры!
https://ljvmiranda921.github.io/notebook/2021/06/05/avengers-git/
#git
Интересная статья, где сюжетные повороты с путешествиями во времени из Мстителей объясняются с точки зрения Git. Содержит спойлеры!
https://ljvmiranda921.github.io/notebook/2021/06/05/avengers-git/
#git
ljvmiranda921.github.io
What can Avengers: Endgame teach us about Git?
Avengers and Git? The most ambitious crossover event in history. In this blog post, I will explain crucial plot points in Avengers: Endgame in five Git conce...
Интересное интервью с Гвидо ван Россумом, на основе которого в последнее время порождается много новостей в инфополе вокруг Python.
Мне в целом понравилось, но можете не смотреть, потому что вот ключевые моменты:
* Во время работы над ОС Amoeba Гвидо столкнулся с непреодолимой прокрастинацией, потому что приходилось писать много кода на C и шелл-скриптах. Так и появился Python, какое-то время он применялся в разработке этой ОС, но в итоге она загнулась, а Python внезапно обрёл популярность.
* Код с
* Гвидо никогда не увлекался ФП.
* Генераторы и list comprehensions сильно поменяли язык, дали ещё один толчок к росту популярности в Python.
* Некоторые идеи в плане типизации Python тащит из TypeScript, потому что языки в некотором смысле похожи.
* Гвидо не слишком оптимистичен по поводу запуска Python в браузере или на смартфонах. Слишком другое окружение, а язык изначально рассчитан для работы на мейнфреймах/ПК.
* Скорее всего Python 4.0 никогда не наступит, если только не случится какое-то фатально ломающее изменение (например, на уровне совместимости с нативными расширениями, изменение механизмов работы сборщика мусора или выпиливание GIL), чего разработчики сильно стараются избегать. Переход со второй на третью версию был слишком болезненным.
* Гвидо предполагает, что под-интерпретаторы (sub-interpreters) помогут решить проблему GIL. Его не придётся удалять, но мешать он больше не будет.
* Гвидо любит кататься на велосипеде, но не больше пары часов за заезд.
Прикольно, что у Гвидо очень понятный акцент. Возможно, это потому что английский — не его родной язык?
https://www.youtube.com/watch?v=aYbNh3NS7jA
#конспект
Мне в целом понравилось, но можете не смотреть, потому что вот ключевые моменты:
* Во время работы над ОС Amoeba Гвидо столкнулся с непреодолимой прокрастинацией, потому что приходилось писать много кода на C и шелл-скриптах. Так и появился Python, какое-то время он применялся в разработке этой ОС, но в итоге она загнулась, а Python внезапно обрёл популярность.
* Код с
reduce()
сложно понимать, поэтому Гвидо убрал эту функцию из built-ins. map()
и filter()
— норм, но в языке есть для них более приятные альтернативы.* Гвидо никогда не увлекался ФП.
* Генераторы и list comprehensions сильно поменяли язык, дали ещё один толчок к росту популярности в Python.
* Некоторые идеи в плане типизации Python тащит из TypeScript, потому что языки в некотором смысле похожи.
* Гвидо не слишком оптимистичен по поводу запуска Python в браузере или на смартфонах. Слишком другое окружение, а язык изначально рассчитан для работы на мейнфреймах/ПК.
* Скорее всего Python 4.0 никогда не наступит, если только не случится какое-то фатально ломающее изменение (например, на уровне совместимости с нативными расширениями, изменение механизмов работы сборщика мусора или выпиливание GIL), чего разработчики сильно стараются избегать. Переход со второй на третью версию был слишком болезненным.
* Гвидо предполагает, что под-интерпретаторы (sub-interpreters) помогут решить проблему GIL. Его не придётся удалять, но мешать он больше не будет.
* Гвидо любит кататься на велосипеде, но не больше пары часов за заезд.
Прикольно, что у Гвидо очень понятный акцент. Возможно, это потому что английский — не его родной язык?
https://www.youtube.com/watch?v=aYbNh3NS7jA
#конспект
YouTube
Q&A with Guido van Rossum, Inventor of Python
Guido van Rossum is a Dutch programmer best known as the creator of the Python programming language, for which he was the "Benevolent dictator for life" (BDFL) . Come join us for an open Q/A "Ask me Anything" to get to know how PyCon was born and Guido's…
Результаты опроса аудитории Telegram от TGStat за 2021 подъехали.
https://tgstat.ru/research-2021
Типичный пользователь телеграма — это мужчина 25-34 лет, проживающий в Москве, айтишник с высшим образованием и зарплатой 16-30 тыс. рублей. Держись, чувак, всё будет хорошо! 💪
https://tgstat.ru/research-2021
Типичный пользователь телеграма — это мужчина 25-34 лет, проживающий в Москве, айтишник с высшим образованием и зарплатой 16-30 тыс. рублей. Держись, чувак, всё будет хорошо! 💪
TGStat.ru
Исследование аудитории Telegram 2021.
Кто же он — пользователь Telegram 2021 года?
Вероятно, во всём виноват Fastly CDN, который испытывает некоторые трудности.
https://techcrunch.com/2021/06/08/numerous-popular-websites-are-facing-an-outage/
https://techcrunch.com/2021/06/08/numerous-popular-websites-are-facing-an-outage/
TechCrunch
Twitch, Pinterest, Reddit and more go down in Fastly CDN outage (Update: Outage resolved after 1 hour)
Countless popular websites including Reddit, Spotify, Twitch, Stack Overflow, GitHub, gov.uk, Hulu, HBO Max, Quora, PayPal, Vimeo, Shopify, Stripe, and news outlets CNN, The Guardian, The New York Times, BBC and Financial Times are currently facing an outage.…
Полезная ссылка для мониторинга ситуации вокруг инфраструктуры Python: https://status.python.org/
Спасибо @zotho!
Спасибо @zotho!
Forwarded from Python etc
Some operators in Python have special names.
Many Pythonistas know about the notorious "walrus" operator (
ones like the diamond operator (
The diamond operator was suggested in PEP 401 as one of
the first actions of the new leader of the language Barry Warsaw after Guido went climbing Mount Everest.
Luckily, it was just an April Fool joke and the operator was never really a part of the language.
Yet, it's still available but hidden behind the "import from future" flag.
Usually you compare for non-equality using
But if you enable the "Barry as FLUFL" feature the behavior changes:
Unfortunately, this easter egg is only working in interactive mode (REPL), but not in usual
By the way, it's interesting that this feature is marked as becoming mandatory in Python 4.0.
Many Pythonistas know about the notorious "walrus" operator (
:=
), but there are less famousones like the diamond operator (
<>
) — it's similar to the "not equals" operator but written in SQL style.The diamond operator was suggested in PEP 401 as one of
the first actions of the new leader of the language Barry Warsaw after Guido went climbing Mount Everest.
Luckily, it was just an April Fool joke and the operator was never really a part of the language.
Yet, it's still available but hidden behind the "import from future" flag.
Usually you compare for non-equality using
!=
:>>> "bdfl" != "flufl"
True
But if you enable the "Barry as FLUFL" feature the behavior changes:
>>> from __future__ import barry_as_FLUFL
>>> "bdfl" != "flufl"
File "<stdin>", line 1
"bdfl" != "flufl"
^
SyntaxError: with Barry as BDFL, use '<>' instead of '!='
>>> "bdfl" <> "flufl"
True
Unfortunately, this easter egg is only working in interactive mode (REPL), but not in usual
*.py
scripts.By the way, it's interesting that this feature is marked as becoming mandatory in Python 4.0.
Сможете угадать, что выведет последняя инструкция?
Anonymous Quiz
8%
bar
10%
{bar}
18%
{'bar'}
10%
{ {bar} }
4%
foo
2%
{'foo'}
8%
{foo}
6%
{ {foo} }
34%
NameError
Вышел релиз тайп-чекера mypy с круглой версией 0.900 и длинным списком изменений. Переход на новую версию потребует некоторых действий.
https://mypy-lang.blogspot.com/2021/06/mypy-0900-released.html
Самым крупным (и ломающим) изменением в этой версии является то, как
Короче, теперь у
Ещё из полезного добавлена поддержка кастомных тайп-гардов. Грубо говоря, теперь вы можете описать любую сколь угодно замысловатую логику валидации данных в функции (скорее всего это будет что-то с вызовами
Из других, менее крупных изменений отмечу следующие:
*
*
Мне нравится, что в Python появляется всё больше инструментов для типизации, а тайп-чекеры конкурируют между собой и становятся умнее.
https://mypy-lang.blogspot.com/2021/06/mypy-0900-released.html
Самым крупным (и ломающим) изменением в этой версии является то, как
mypy
ищет тайп-аннотации. Раньше у mypy
внутри был вшит весь репозиторий typeshed
, где хранилась информация о типах и для стандартной библиотеки, и для множества популярных (и не очень популярных) библиотек с PyPI, которые почему-то не могут или не хотят хранить типы прямо у себя в коде. Это было неудобно, потому что исправления в typeshed
(а там постоянно что-то фиксят) становились доступны пользователям mypy
только при очередном релизе mypy
с задержкой в несколько месяцев. А ещё вместе с mypy
вам в проект прилетали тайп-аннотации для кучи библиотек, которыми вы не пользуетесь.Короче, теперь у
mypy
в комплекте есть типы только для стандартной библиотеки, а typeshed
из одной царь-библиотеки распался на много маленьких, и вам нужно явно установить те из них, которые вам нужны. Например, если вы используете requests
, то вам нужно доустановить пакет types-requests
, иначе mypy
будет не хватать информации о типах. Для этих маленьких пакетов с типами будут автоматически создаваться новые релизы при каждом изменении, вам нужно будет обновлять их время от времени независимо от mypy
.Ещё из полезного добавлена поддержка кастомных тайп-гардов. Грубо говоря, теперь вы можете описать любую сколь угодно замысловатую логику валидации данных в функции (скорее всего это будет что-то с вызовами
isinstance()
), и после вызова этой функции mypy
сможет более точно вывести тип данных.Из других, менее крупных изменений отмечу следующие:
*
mypy
по умолчанию больше не работает для Python 2 кода; возможность проверять такой код всё ещё есть, но для этого нужно устанавливать дополнительные зависимости;*
mypy
научился читать свою конфигурацию из pyproject.toml
.Мне нравится, что в Python появляется всё больше инструментов для типизации, а тайп-чекеры конкурируют между собой и становятся умнее.
Blogspot
Mypy 0.900 Released
We’ve just uploaded mypy 0.900 to the Python Package Index ( PyPI ). Mypy is a static type checker for Python. This release includes many...
Вам на собеседовании задают вопрос: "Расскажите о положительных сторонах GIL". Что бы вы ответили?
Похоже, что Майкрософт всерьёз нацелились разогнать 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