Питонические атаки
JetBrains (да блин, опять я про них пишу) собирают деньги для Django Software Foundation. До 29 апреля можно купить подписку на PyCharm Professional со скидкой 30%, а все собранные деньги пойдут в DSF. Промокод на странице: https://www.jetbrains.com/pych…
JetBrains смогли собрать $45K для Django Software Foundation в этом году. Это примерно 20% годового бюджета DSF, который тратится на разработку фреймворка и проведение конференций.
https://blog.jetbrains.com/pycharm/2021/05/dsf-campaign-results/
#jetbrains
https://blog.jetbrains.com/pycharm/2021/05/dsf-campaign-results/
#jetbrains
JetBrains Blog
Thank You for Supporting the PyCharm and DSF Campaign | The PyCharm Blog
This April we joined forces with the Django Software Foundation to get as much support as possible from our audience for Django.
In one month we managed to reach out to thousands of Pythonistas who h
In one month we managed to reach out to thousands of Pythonistas who h
Forwarded from Python Заметки
В PyCharm есть окно со статистикой продуктивности (Help / Productivity Guide), где отображена интересная информация об использовании IDE.
В частности, можно узнать сколько нажатий на кнопки вам сэкономил автокомплит.
У меня 231К за 14 месяцев !
Не плохо конечно, но клавиатура всё равно стёрлась)))
🙌⌨️😵
#offtop
В частности, можно узнать сколько нажатий на кнопки вам сэкономил автокомплит.
У меня 231К за 14 месяцев !
Не плохо конечно, но клавиатура всё равно стёрлась)))
🙌⌨️😵
#offtop
На Хабре в последнее время чего-то не так много интересных статей, но вот эта прям супер годная. Я пока не настолько хорош в иностранных языках, чтобы прям уверенно мочь читать художественную литературу в оригинале, так что обязательно как-нибудь попробую сделать себе параллельную книгу и перечитать что-нибудь типа «Автостопом по галактике». Наверное, в оригинале должно быть ещё круче.
https://habr.com/p/557664/
https://habr.com/p/557664/
Хабр
Сам себе Гутенберг. Делаем параллельные книги
Если вам нравится изучать языки (или вы их преподаете), то вы наверняка сталкивались с таким способом освоения языка как параллельное чтение. Он помогает погруз...
В очередной раз обновил пост про настройку точечного обхода блокировок на роутере, потому что сменил провайдера VPN. Теперь я пользуюсь Red Shield VPN — это VPN от админа канала @itsorm, так что дух цифрового сопротивления зашкаливает. Они буквально пару недель назад запилили поддержку WireGuard и теперь удовлетворяют всем моим запросам. И они вроде классные — скорость хорошая и по деньгам выходит раза в полтора дешевле, чем мой предыдущий VPN. Так как я уже очень привык не замечать козни Роскомнадзора, в этот раз я подписался на VPN сразу на год.
Если вам тоже такое интересно, то я там в посте приложил рефералку, по ней вам дадут месяц бесплатного VPN. А еще вот тут есть промокод на удешевлённый тариф.
Если вам тоже такое интересно, то я там в посте приложил рефералку, по ней вам дадут месяц бесплатного VPN. А еще вот тут есть промокод на удешевлённый тариф.
Питонические атаки
Настройка точечного обхода блокировок на роутере с OpenWRT
Как перестать думать о блокировках сайтов и начать жить
This media is not supported in your browser
VIEW IN TELEGRAM
Мигель Гринберг — широко известный в кругах пользователей Flask автор библиотек, туториалов и статей — изобрёл ещё одну классную штуку под названием
https://blog.miguelgrinberg.com/post/dynamically-update-your-flask-web-pages-using-turbo-flask
#flask
Turbo-Flask
. Этот плагин интегрирует во Flask-приложение фронтендовую библиотеку turbo.js
, которая слушает команды от сервера через WebSocket и обновляет части страницы динамически. Похоже, что в итоге можно сделать практически какую угодно динамическую логику на фронтенде, не написав ни одной строчки на JS. Если не учитывать того, что рендеринг всё-таки происходит на бэкенде, то выглядит это прям как настоящее SPA (Single Page Application).https://blog.miguelgrinberg.com/post/dynamically-update-your-flask-web-pages-using-turbo-flask
#flask
На недавно прошедшем Language Summit был презентован PEP 654 — Exception Groups and except*, который сейчас находится на стадии черновика и, вероятно, попадёт в язык в версии 3.11. Этот PEP предлагает добавить в Python возможность запускать сразу несколько не связанных друг с другом исключений, и обрабатывать тоже по несколько штук сразу в одном специальном блоке
Вот так можно будет запустить группу исключений:
Исключения
Да, группировка исключений — это весьма своеобразная фича. Авторы документа не предполагают, что такой способ работы с исключениями получит широкое распространение. Насколько я понимаю, этот новый механизм создаётся для решения каких-то специфичных проблем.
except*
. Это позволит более удобным образом спроектировать API в различных местах stdlib и сторонних библиотек, а также сделает поведение более правильным и в некоторых краевых случаях позволит не терять исключения.Вот так можно будет запустить группу исключений:
raise ExceptionGroup(
"everything is bad",
[
ValueError("bad value"),
TypeError("bad type")
],
)
Можно создавать из групп исключений целые иерархии и запускать их (вложить ExceptionGroup
внутрь ExceptionGroup
).Исключения
ExceptionGroup
можно перехватывать как обычные исключения (при помощи except
), а можно вот так разбивать группу на отдельные исключения и обрабатывать в каждом блоке except*
исключения только определенного типа:try:
...
except *TypeError:
print("type is bad")
except *ValueError as e:
assert isinstance(e, ExceptionGroup) # it's a group!
print("value is bad")
При выполнении куска кода выше по идее должно будет напечататься следующее:type is bad
value is bad
То есть будут выполнены сразу два блока except*
. Причём в каждый блок except*
приходит не одно исключение, а целая группа. Обработанные исключения удаляются из исходной группы, а необработанные идут по следующим блокам except*
. При разбивании группы исключений на подгруппы происходит обход группы как дерева. Если после проверки всех блоков группа исключений осталась непустой, то она рейзится дальше. Нельзя для одного блока try
иметь и обычный except
, и групповой except*
.Да, группировка исключений — это весьма своеобразная фича. Авторы документа не предполагают, что такой способ работы с исключениями получит широкое распространение. Насколько я понимаю, этот новый механизм создаётся для решения каких-то специфичных проблем.
peps.python.org
PEP 654 – Exception Groups and except* | peps.python.org
Python Enhancement Proposals (PEPs)
Питонические атаки
На недавно прошедшем Language Summit был презентован PEP 654 — Exception Groups and except*, который сейчас находится на стадии черновика и, вероятно, попадёт в язык в версии 3.11. Этот PEP предлагает добавить в Python возможность запускать сразу несколько…
Первое впечатление об этом документе у меня было такое: "ну и дичь". Когда попытался вникнуть получше и пересказать, то всё стало более-менее логично и понятно, но до сих пор не уверен, что те краевые случаи, которыми мотивировано добавление этого далеко не самого простого механизма, того стоят. Посмотрим, конечно, попадёт ли это в язык, и если попадёт, то в каком виде. Если уж над этим PEP работает сам Гвидо и его презентовали на языковом саммите, то, наверное, высоки шансы, что эта фича в том или ином виде пройдёт в язык.
Если что, слайды с презентации этого PEP можно найти в посте в блоге PSF: https://pyfound.blogspot.com/2021/05/the-2021-python-language-summit-pep-654.html
В мире браузерных языков транспиляция является очень распространенным явлением. Это довольно полезное действие, которое переводит код программы с одного языка на другой (зачастую, в JavaScript). Существуют множество языков, для которых единственным способом запуска является транспиляция в JavaScript. А еще часто код с более новых версий JS переводят в более старые, чтобы поддержать как можно больше браузеров.
В мире Python особой нужды в транспиляции нет, но, тем не менее, существуют проекты, которые её используют. Например, Coconut — надмножество языка Python, расширенное в сторону поддержки функционального программирования. Пишешь код на Coconut с красивыми лямбдами, пайплайнами и паттерн-матчингом, затем он транспилируется в обычный код на Python и запускается дальше как обычно. Код в итоге получается очень похожим на Haskell.
Вот что умеет Coconut по сравнению с Python:
* пайплайны (это когда результат работы предыдущей функции передаётся в следующую по цепочке) при помощи оператора
* сокращенный синтаксис для лямбда-функций;
* частичное применение функций;
* паттерн-матчинг (не совсем такой, как будет в 3.10, но он тоже поддерживается);
* присваивания с распаковками;
* расширенный синтаксис для тайп-аннотаций, интеграция с
* и многое другое (см. список на сайте проекта).
Даже если вы не собираетесь использовать функциональные расширения языка, можно просто писать код на обычном Python 3, а Coconut затем сделает ваш код универсальным, т.е. обеспечит его работу на предыдущих версиях языка, в том числе и на Python 2 (надеюсь, вы уже давно его не используете).
Это офигенно! Определенно стоит того, чтобы поиграться.
Узнал про Coconut вот из этой статьи на Хабре.
В мире Python особой нужды в транспиляции нет, но, тем не менее, существуют проекты, которые её используют. Например, Coconut — надмножество языка Python, расширенное в сторону поддержки функционального программирования. Пишешь код на Coconut с красивыми лямбдами, пайплайнами и паттерн-матчингом, затем он транспилируется в обычный код на Python и запускается дальше как обычно. Код в итоге получается очень похожим на Haskell.
Вот что умеет Coconut по сравнению с Python:
* пайплайны (это когда результат работы предыдущей функции передаётся в следующую по цепочке) при помощи оператора
|>
;* сокращенный синтаксис для лямбда-функций;
* частичное применение функций;
* паттерн-матчинг (не совсем такой, как будет в 3.10, но он тоже поддерживается);
* присваивания с распаковками;
* расширенный синтаксис для тайп-аннотаций, интеграция с
mypy
;* и многое другое (см. список на сайте проекта).
Даже если вы не собираетесь использовать функциональные расширения языка, можно просто писать код на обычном Python 3, а Coconut затем сделает ваш код универсальным, т.е. обеспечит его работу на предыдущих версиях языка, в том числе и на Python 2 (надеюсь, вы уже давно его не используете).
Это офигенно! Определенно стоит того, чтобы поиграться.
Узнал про Coconut вот из этой статьи на Хабре.
coconut-lang.org
Coconut Programming Language
Simple, elegant, Pythonic functional programming.
Известно ли вам про какие-нибудь другие языки, которые компилируются/транспилируются в Python?
Забавная статья, много безумных внутрянок питона затронуто. Сеттинг вот такой:
"Сложить два целых числа (от 1 до 99) без использования оператора 'плюс'. Дайте пять разных ответов"
https://habr.com/ru/post/555488/
"Сложить два целых числа (от 1 до 99) без использования оператора 'плюс'. Дайте пять разных ответов"
https://habr.com/ru/post/555488/
Хабр
Если у вас нет плюсов
Мой друг Алексей ищет работу и ходит на собеседования. После которых интересуется, как бы я ответил на некоторые из заданных вопросов. Отвечая на один такой вопрос, я слегка увлёкся, и материала...
Факт дня сомнительной полезности
А знали ли вы, что Hello World — программу, выводящую два этих слова — на Python можно записать в два слова?
Удачного дня сомнительной полезности!
А знали ли вы, что Hello World — программу, выводящую два этих слова — на Python можно записать в два слова?
>>> import __hello__Поздравляю, теперь вы профессиональный хелловорлд-разработчик! Идиоматично, кратко, лаконично, красиво! Обязательно щегольните этим скиллом на собеседовании или удивите коллег.
Hello world!
Удачного дня сомнительной полезности!
Кстати, неделю назад открылся ежегодный опросник за 2021 год от StackOverflow! Я уже сдал про себя всю подноготную. Предлагаю и вам пойти сделать то же самое. Через несколько месяцев, надеюсь, получим какие-нибудь интересные результаты. Каждый год их жду.
Пост в блоге StackOverflow: https://stackoverflow.blog/2021/05/25/the-2021-developer-survey-is-now-open/
Ссылка на опросник: https://stackoverflow.az1.qualtrics.com/jfe/form/SV_7arimtzVFf8ipfM?utm_source=twitter&utm_medium=social&utm_campaign=dev-survey-2021&utm_content=post-1
Пост в блоге StackOverflow: https://stackoverflow.blog/2021/05/25/the-2021-developer-survey-is-now-open/
Ссылка на опросник: https://stackoverflow.az1.qualtrics.com/jfe/form/SV_7arimtzVFf8ipfM?utm_source=twitter&utm_medium=social&utm_campaign=dev-survey-2021&utm_content=post-1
Stack Overflow Blog
The 2021 Developer Survey is now open!
The 2021 Developer Survey is ready for your input.
Записи выступлений с PyCon US 2021 выложили.
https://youtube.com/playlist?list=PL2Uw4_HvXqvYk1Y5P8kryoyd83L_0Uk5K
https://youtube.com/playlist?list=PL2Uw4_HvXqvYk1Y5P8kryoyd83L_0Uk5K
YouTube
PyCon US 2021
Share your videos with friends, family, and the world
Вопрос-поднаброс. А сможете ли без Википедии объяснить разницу между компилируемыми и интерпретируемыми языками?
Например, посмотрим как работает Java с высоты птичьего полёта. Исходный код на Java преобразуется в некое промежуточное представление (байткод), а затем некая виртуальная машина (JVM) выполняет этот байткод, преобразуя его в настоящие машинные инструкции.
А теперь с высоты птичьего помёта посмотрим как работает Python (конкретнее, CPython). Исходный код на Python преобразуется в некое промежуточное представление (байткод), а затем некая виртуальная машина (PVM) выполняет этот байткод, преобразуя его в настоящие машинные инструкции.
Если принцип один и тот же, то почему Java — компилируемый, а Python — интерпретируемый?
Например, посмотрим как работает Java с высоты птичьего полёта. Исходный код на Java преобразуется в некое промежуточное представление (байткод), а затем некая виртуальная машина (JVM) выполняет этот байткод, преобразуя его в настоящие машинные инструкции.
А теперь с высоты птичьего помёта посмотрим как работает Python (конкретнее, CPython). Исходный код на Python преобразуется в некое промежуточное представление (байткод), а затем некая виртуальная машина (PVM) выполняет этот байткод, преобразуя его в настоящие машинные инструкции.
Если принцип один и тот же, то почему Java — компилируемый, а Python — интерпретируемый?
Интересный и забавный пост, где некий сеньёр-разработчик под винцо подытоживает уроки, полученные за 10 лет карьеры в IT.
https://www.reddit.com/r/ExperiencedDevs/comments/nmodyl/drunk_post_things_ive_learned_as_a_sr_engineer/
https://www.reddit.com/r/ExperiencedDevs/comments/nmodyl/drunk_post_things_ive_learned_as_a_sr_engineer/
Reddit
From the ExperiencedDevs community on Reddit
Explore this post and more from the ExperiencedDevs community
Как же приятно наблюдать за настоящим профессионалом за работой. Тоже иногда хочется взять и распечатать на принтере весь проект на 20к строк в виде скриншотов IDE с тёмной темой.
Кстати, вроде похоже на питон, да ведь?
via Reddit
Кстати, вроде похоже на питон, да ведь?
via Reddit
Чему Мстители могут научить нас о 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...