Ура, товарищи! Достигнута очередная большая веха в развитии канала!
Во-первых, на канале уже 700+ читателей. Я раньше и подумать не мог, что кому-то может быть интересно читать мои потоки мыслей вперемешку со всякими статьями и ссылками, которые я нахожу занятными. Мне приятно. А если вы ещё и пишете комменты, то я вообще в восторге. Всегда рад пообщаться обо всем, что связано с моим любимым ЯП. Спасибо! ❤️
Во-вторых, на канал в комменты наконец-то пришли спамеры! Расцениваю это как отметку качества. Наконец-то они признали существование канала. Чтож, я ждал вас, механические ублюдки. Надо настроить бота, чтобы чистил комменты.
Во-первых, на канале уже 700+ читателей. Я раньше и подумать не мог, что кому-то может быть интересно читать мои потоки мыслей вперемешку со всякими статьями и ссылками, которые я нахожу занятными. Мне приятно. А если вы ещё и пишете комменты, то я вообще в восторге. Всегда рад пообщаться обо всем, что связано с моим любимым ЯП. Спасибо! ❤️
Во-вторых, на канал в комменты наконец-то пришли спамеры! Расцениваю это как отметку качества. Наконец-то они признали существование канала. Чтож, я ждал вас, механические ублюдки. Надо настроить бота, чтобы чистил комменты.
Forwarded from Python Daily
Если вы хотели попробовать сделать свою игру - вот список видео (+ бонус) с которых можно начать знакомство с pygame:
Введение: The ultimate introduction to Pygame
Тут объяснят основы: отрисовка изображений, позиционирование, коллизии, передвижение, анимации и т.д.
Большая и подробная серия видео про разработку платформера: Mario in Python with Pygame (and pirates)
Продолжение предыдущего ролика, которое объясняет такие вещи как: передвижение камеры, создание уровня в редакторе карт, глобальная карта локаций, UI и т.д.
Как работать с координатами в изометрических играх:
Introduction to Isometric Movement in Games
How Isometric Coordinates Work in 2D games
Основы создания тайлов для изометрических игр:
Pixel Art Class - Isometric Tile Basics!
Pixel Art Class - Isometric Character Basics
БОНУС
Огромный список примеров реализации разных механик и проблем: PyGame Examples and Answers
#pygame #gamedev #pydaily #nothabr
Введение: The ultimate introduction to Pygame
Тут объяснят основы: отрисовка изображений, позиционирование, коллизии, передвижение, анимации и т.д.
Большая и подробная серия видео про разработку платформера: Mario in Python with Pygame (and pirates)
Продолжение предыдущего ролика, которое объясняет такие вещи как: передвижение камеры, создание уровня в редакторе карт, глобальная карта локаций, UI и т.д.
Как работать с координатами в изометрических играх:
Introduction to Isometric Movement in Games
How Isometric Coordinates Work in 2D games
Основы создания тайлов для изометрических игр:
Pixel Art Class - Isometric Tile Basics!
Pixel Art Class - Isometric Character Basics
БОНУС
Огромный список примеров реализации разных механик и проблем: PyGame Examples and Answers
#pygame #gamedev #pydaily #nothabr
Forwarded from Podlodka Podcast – анонсы и новости подкаста про IT (Podlodka Bot)
🔥 В 10:00 приходите на лайвкодинг во Fleet!
📹 «Лайвкодинг во Fleet, новой IDE от JetBrains»
Посмотрим на автодополнение, рефакторинг и анализ кода.
Попробуем написать код в несколько рук.
Испытаем IDE типовым проектом на Spring Boot.
📹 «Лайвкодинг во Fleet, новой IDE от JetBrains»
Посмотрим на автодополнение, рефакторинг и анализ кода.
Попробуем написать код в несколько рук.
Испытаем IDE типовым проектом на Spring Boot.
Не про Python, но мы же все интересуемся новыми IDE. Через 40 минут начало стрима с лайвкодингом в JetBrains Fleet!
#jetbrains
#jetbrains
Давайте на мгновение перестанем деградировать и почтим Python 3.6 минутой молчания. Это был хороший релиз, который принёс нам f-строки. Пожалуй, тот самый релиз, который многих заставил наконец обновиться с Python 2. Покойся с миром!
Нет, серьезно. Больше в 3.6 не будут исправляться даже проблемы безопасности. Вот представьте, что там найдётся что-то вроде нашумевшей джавовой уязвимости log4shell (а рано или поздно такое обязательно находится везде, ведь не бывает кода без проблем), и вы рискуете остаться с этим один на один. Мейнтейнеры питона пофиксят свежие версии, а 3.6 так и останется уязвимым. Так что если вы до сих пор используете 3.6, то крайне рекомендую обновиться раньше, чем к вам пришла беда.
По данным из PyPI stats, 15% загрузок все ещё происходят с 3.6. Вот не будьте такими. Лучше будьте как 1,5%, которые уже обновились до Python 3.10!
Хорошая статья по теме: https://pythonspeed.com/articles/stop-using-python-3.6/
Нет, серьезно. Больше в 3.6 не будут исправляться даже проблемы безопасности. Вот представьте, что там найдётся что-то вроде нашумевшей джавовой уязвимости log4shell (а рано или поздно такое обязательно находится везде, ведь не бывает кода без проблем), и вы рискуете остаться с этим один на один. Мейнтейнеры питона пофиксят свежие версии, а 3.6 так и останется уязвимым. Так что если вы до сих пор используете 3.6, то крайне рекомендую обновиться раньше, чем к вам пришла беда.
По данным из PyPI stats, 15% загрузок все ещё происходят с 3.6. Вот не будьте такими. Лучше будьте как 1,5%, которые уже обновились до Python 3.10!
Хорошая статья по теме: https://pythonspeed.com/articles/stop-using-python-3.6/
Python⇒Speed
It’s time to stop using Python 3.8
Python 3.8 will stop getting security updates in November 2024. You really should upgrade!
Пользуясь случаем напоминаю, что 3.7 и 3.8 сейчас находятся на этапе security fixes only. То есть, если вы хотите, чтобы в вашем питоне исправлялись всякие баги с неправильным поведением и падениями, то вам нужно быть как минимум на 3.9.
Вот хорошая диаграмма, визуализирующая время жизни разных версий интерпретатора: https://python-release-cycle.glitch.me/
Вот хорошая диаграмма, визуализирующая время жизни разных версий интерпретатора: https://python-release-cycle.glitch.me/
👍1🔥1
Всем, кто пережил праздники и постепенно возвращается к жизни — с очередным наступившим!
В последнее время почти перестал читать новости и статьи, поэтому и тем для постов стало резко меньше. Зато я стал больше гулять и передвигаться на общественном транспорте. Или, например, в электричке на 6 часов без интернета. В таких условиях прям здорово залипнуть в окошко и слушать какой-нибудь легкий бубнёж. Короче, в качестве компенсации за отсутствие постов хочу порекомендовать подкаст, который мне давно уже рекомендовали, но я только недавно до него добрался.
Moscow Python Podcast — это удивительно годное шоу. Я прослушал уже выпусков десять, и мне прям нравится. Вроде всего лишь лёгкие разговоры под кофеёк, но оно пропитано какой-то непередаваемой мудростью. Ведущие классные — особенно Гриша Петров, который для меня уже стал легендой российского айти. Длина выпусков тоже оптимальная — хоть не страшно включать, а то некоторые подкасты и по 3 часа делают выпуски.
Вот тут вы найдёте все ссылки: https://podcast.python.ru/
Я слушаю на Яндекс.Музыке, поэтому скину отдельно: https://music.yandex.com/album/6892837
В последнее время почти перестал читать новости и статьи, поэтому и тем для постов стало резко меньше. Зато я стал больше гулять и передвигаться на общественном транспорте. Или, например, в электричке на 6 часов без интернета. В таких условиях прям здорово залипнуть в окошко и слушать какой-нибудь легкий бубнёж. Короче, в качестве компенсации за отсутствие постов хочу порекомендовать подкаст, который мне давно уже рекомендовали, но я только недавно до него добрался.
Moscow Python Podcast — это удивительно годное шоу. Я прослушал уже выпусков десять, и мне прям нравится. Вроде всего лишь лёгкие разговоры под кофеёк, но оно пропитано какой-то непередаваемой мудростью. Ведущие классные — особенно Гриша Петров, который для меня уже стал легендой российского айти. Длина выпусков тоже оптимальная — хоть не страшно включать, а то некоторые подкасты и по 3 часа делают выпуски.
Вот тут вы найдёте все ссылки: https://podcast.python.ru/
Я слушаю на Яндекс.Музыке, поэтому скину отдельно: https://music.yandex.com/album/6892837
Yandex Music
Moscow Python: подкаст о Python на русском
Подкаст о Python на русском от команды курсов LearnPython и организаторов сообщества MoscowPytho... • Podcast • 11,454 subscribers
👍5👎1
Forwarded from Code Mining
PyNose: a Test Smell Detector for Python
А ещё в прошлом году у JetBrains Research вышла определялка говнокода в python-тестах. Работает для
Виды test smell, которые выделяют авторы:
- Assertion Roulette
- Conditional Test Logic
- Constructor Initialization
- Default Test
- Duplicate Assert
- Empty Test
- Exception Handling
- Lack of Cohesion of Test Cases
- Magic Number Test
- Obscure In-Line Setup
- Redundant Assertion
- Redundant Print
- Sleepy Test
- Suboptimal Assert
- Test Maverick
Использовать можно в виде плагина к Pycharm.
Код: https://github.com/jetbrains-research/pynose
Подробности в статье: https://arxiv.org/abs/2108.04639. Единственное, она описывает предыдущую версию, которая в ветке
А ещё в прошлом году у JetBrains Research вышла определялка говнокода в python-тестах. Работает для
Unittest
& Pytest
. Версия 1.0.0 вышла в декабре'21.Виды test smell, которые выделяют авторы:
- Assertion Roulette
- Conditional Test Logic
- Constructor Initialization
- Default Test
- Duplicate Assert
- Empty Test
- Exception Handling
- Lack of Cohesion of Test Cases
- Magic Number Test
- Obscure In-Line Setup
- Redundant Assertion
- Redundant Print
- Sleepy Test
- Suboptimal Assert
- Test Maverick
Использовать можно в виде плагина к Pycharm.
Код: https://github.com/jetbrains-research/pynose
Подробности в статье: https://arxiv.org/abs/2108.04639. Единственное, она описывает предыдущую версию, которая в ветке
ASE2021
.GitHub
GitHub - JetBrains-Research/PyNose: A test smell detector for Python.
A test smell detector for Python. Contribute to JetBrains-Research/PyNose development by creating an account on GitHub.
👍10🎉1🤩1💋1
Forwarded from UfoStation
Григорий Петров - Почему Python медленный?
Не смотря на заявленное название в докладе рассматриваются и другие языки, в том числе Java, C#, JavaScript и другие. Рекомендую к ознакомлению всем интересующимся языками программирования.
Не смотря на заявленное название в докладе рассматриваются и другие языки, в том числе Java, C#, JavaScript и другие. Рекомендую к ознакомлению всем интересующимся языками программирования.
👍11
Forwarded from Senior Python Developer
Шуточный пакет pyjokes
Если в вашей крови течёт PEP, а дома вас ждёт домашняя змея в клетке, то и шутки вам нужны соответствующие. Вы всегда можете получить их с помощью модуля pyjokes. Устанавливается, как всегда, через pip.
Также есть отдельная категория с шутками Чака Норриса.
Если в вашей крови течёт PEP, а дома вас ждёт домашняя змея в клетке, то и шутки вам нужны соответствующие. Вы всегда можете получить их с помощью модуля pyjokes. Устанавливается, как всегда, через pip.
Также есть отдельная категория с шутками Чака Норриса.
Don't worry about tests, Chuck Norris's test cases cover your code too.
Forwarded from Хитрый Питон
Интересная статья про то, почему декоратором @lru_cache нельзя обертывать методы классов. Если коротко - объект не будет удаляться garbage collector-ом что может привести к неожиданным утечкам памяти. Также @lru_cache не умеет игнорировать self в списке аргументов, поэтому кэш будет для каждого объекта свой и кеширование по факту не будет работать.
С методами классов, статическими методами и обычными функциями работает, как и ожидается.
https://rednafi.github.io/reflections/dont-wrap-instance-methods-with-functoolslru_cache-decorator-in-python.html
С методами классов, статическими методами и обычными функциями работает, как и ожидается.
https://rednafi.github.io/reflections/dont-wrap-instance-methods-with-functoolslru_cache-decorator-in-python.html
Forwarded from Life of Tau
Twitter
Tushar Sadhwani
🐍Python news: CPython's main branch now compiles to webassembly! Thanks to @ethanhs and @ChristianHeimes Meaning: You can natively download and run Python in the browser. It's about a 5MB package right now. There's plans to make it smaller. Try it here: repl.ethanhs.me
👍3😱1
В Windows 7 официально поддерживается только Python 3.8. Разработчики не хотят тратить ресурсы на поддержку мёртвых версий ОС. Более новые версии интерпретатора уже не устанавливаются. Но если сильно хочется, то есть форк cpython-win7, который поддерживает все современные версии языка (сейчас там есть 3.10.1) и при этом совместим с Windows 7.
Если же вместо абстрактных странных обоев вы предпочитаете классические зелёные луга, вместо спотифая вы включаете Winamp, а вместо Кортаны у вас ассистент Скрепыш, то для вас тоже есть форк. Windows XP официально поддерживается лишь в Python 3.4, но умельцы запускают версии вплоть до последних релизов из ветки 3.6. Придётся собирать из исходников, но разве это преграда для настоящего энтузиаста?
#windows #retro
Если же вместо абстрактных странных обоев вы предпочитаете классические зелёные луга, вместо спотифая вы включаете Winamp, а вместо Кортаны у вас ассистент Скрепыш, то для вас тоже есть форк. Windows XP официально поддерживается лишь в Python 3.4, но умельцы запускают версии вплоть до последних релизов из ветки 3.6. Придётся собирать из исходников, но разве это преграда для настоящего энтузиаста?
#windows #retro
GitHub
cpython/Win7.rst at 3.10.1-win7 · NulAsh/cpython
The Python programming language. Contribute to NulAsh/cpython development by creating an account on GitHub.
👍4
АААА! У форматтера
https://github.com/psf/black/releases/tag/22.1.0
#black
black
наконец-то вышла стабильная (не бета) версия! Неужели дожили. Я ждал этого тжри года!https://github.com/psf/black/releases/tag/22.1.0
#black
GitHub
Release 22.1.0 · psf/black
At long last, Black is no longer a beta product! This is the first non-beta release and the first release covered by our new stability policy.
Highlights
Remove Python 2 support (#2740)
Introduce ...
Highlights
Remove Python 2 support (#2740)
Introduce ...
❤8👍1
Питонические атаки
В Windows 7 официально поддерживается только Python 3.8. Разработчики не хотят тратить ресурсы на поддержку мёртвых версий ОС. Более новые версии интерпретатора уже не устанавливаются. Но если сильно хочется, то есть форк cpython-win7, который поддерживает…
Кстати да, в комментариях напомнили про PPA-репозиторий deadsnakes для Ubuntu. В репо есть версии питона от очень старых до очень новых, и всё легко устанавливается через обычный привычный
Запустил Ubuntu 18.04, установил на ней Python 2.3 (это самый старый из доступных для этой версии убунты). Это настолько древняя версия языка, что здесь даже нет контекст-менеджеров (да, они появились в 2.5). Сложно представить питон без контекст-менеджеров, ведь это настолько естественная часть языка, что кажется, что оно должно было быть в языке с самого начала.
#deadsnakes #ubuntu #linux #retro
apt
, предсобранное, не требует установки компиляторов и всего остального, что нужно для сборки. Вопреки названию, этот репо зачастую используется для установки более новых версий интерпретатора, чем поставляется в дистрибутиве ОС.Запустил Ubuntu 18.04, установил на ней Python 2.3 (это самый старый из доступных для этой версии убунты). Это настолько древняя версия языка, что здесь даже нет контекст-менеджеров (да, они появились в 2.5). Сложно представить питон без контекст-менеджеров, ведь это настолько естественная часть языка, что кажется, что оно должно было быть в языке с самого начала.
#deadsnakes #ubuntu #linux #retro
В следующем релизе macOS Monterey 12.3 🍎, которая сейчас находится в бета-тестировании, обещают наконец-то удалить из системы предустановленный Python 2. Начиная с какой-то из предыдущих версий уже и так выскакивало окошко с предупреждением, если вдруг пайчарм случайно потрогает Python 2, а теперь устаревшая версия языка изгоняется из системы окончательно.
И это крайне логичное действие — незачем в системе держать легаси, которое лишь создаёт проблемы и путаницу. Большинство пользователей получат более компактную ОС и меньше проблем с выбором правильного интерпретатора, а те, кому всё ещё нужен Python 2, поставят его явно вручную. Они ведь всё равно уже привыкли страдать.
Пожалуй, макось из ныне живущих операционных систем продержалась со вторым питоном дольше всех.
Стоит отметить, что это не хейт отдельно взятого языка программирования. Эппл взяла курс на удаление многих скриптовых рантаймов, которые издревле поставлялись вместе с ОС, включая и Ruby, и Perl, и Python. Теперь всё это, если нужно, придётся ставить отдельно.
#macos #python2
И это крайне логичное действие — незачем в системе держать легаси, которое лишь создаёт проблемы и путаницу. Большинство пользователей получат более компактную ОС и меньше проблем с выбором правильного интерпретатора, а те, кому всё ещё нужен Python 2, поставят его явно вручную. Они ведь всё равно уже привыкли страдать.
Пожалуй, макось из ныне живущих операционных систем продержалась со вторым питоном дольше всех.
Стоит отметить, что это не хейт отдельно взятого языка программирования. Эппл взяла курс на удаление многих скриптовых рантаймов, которые издревле поставлялись вместе с ОС, включая и Ruby, и Perl, и Python. Теперь всё это, если нужно, придётся ставить отдельно.
#macos #python2
👍1
Forwarded from Блуждающий форвард
О паттерн матчинге в python.
В
Ну практически haskell, нет? Увы, нет, ведь в python значение — это не то же самое что и тип, поэтому и возможности заматчить по значению у нас в этом случае нет. Но, так или иначе,
А вот чего в python не завезли (по, в целом, понятным причинам) так это возможности запилить sync и async реализации функции под одним именем. И это печально.
В
3.10
, помимо всего прочего, завезли паттерн матчинг. И вы об этом, конечно, слышали. А вы слышали про functools
'овый singledispatch
который доступен аж со времён 3.4
и реализует матчинг типов аргументов в функции? Выглядит это так:
Recipient = Email | SmsNumber
@singledispatch
def send_message(message: str, recipient: Recipient):
raise NotImplemented()
@send_message.register
def send_message_via_email(message: str, recipient: Email):
# Send message via email by somehow
@send_message.register
def send_message_via_sms(message: str, recipient: SmsNumber):
# Send message via sms by somehow
some_email = Email('some@email.com')
some_phone = SmsNumber('+123456789')
send_message('message', some_email)
send_message('message', some_phone)
Ну практически haskell, нет? Увы, нет, ведь в python значение — это не то же самое что и тип, поэтому и возможности заматчить по значению у нас в этом случае нет. Но, так или иначе,
singledispatch
, бывает, здорово помогает организовать код лаконично и читаемо.А вот чего в python не завезли (по, в целом, понятным причинам) так это возможности запилить sync и async реализации функции под одним именем. И это печально.
👍6🔥1
До какой версии языка вы готовы откатиться?
Я бы точно ни в коем случае не хотел жить без f-строк и тайп-аннотаций для переменных (3.6).
Неудобно было бы жить без
Короче, пожалуй, я согласен писать на Python 3.7, но не старше.
А есть ли какие-то фичи в более новых версиях, от которых вы не готовы отказаться?
https://snarky.ca/a-reverse-chronology-of-some-python-features/
Я бы точно ни в коем случае не хотел жить без f-строк и тайп-аннотаций для переменных (3.6).
Неудобно было бы жить без
breakpoint()
(3.7), которая очень выручает в разных странных ситуациях, позволяя вывалиться в дебаггер. Вот вы помните, какое заклинание там раньше нужно было использовать, вместо этой удобной функции?Короче, пожалуй, я согласен писать на Python 3.7, но не старше.
А есть ли какие-то фичи в более новых версиях, от которых вы не готовы отказаться?
https://snarky.ca/a-reverse-chronology-of-some-python-features/
Tall, Snarky Canadian
A reverse chronology of some Python features
I occasionally hear people lament that Python is "bloated", "too big", "going
enterprise", or some other phrasing to suggest there was once an "ideal" version
of Python that had less bloat and was closer to what the person wanted.
But then this lament is…
enterprise", or some other phrasing to suggest there was once an "ideal" version
of Python that had less bloat and was closer to what the person wanted.
But then this lament is…
🤯☺️☺️☺️☺️🤯☺️☺️☺️☺️🤯…
Это если попытаться визуализировать версии питона по изменениям.
3.0 была шоком и прорывом, просто потому что язык сильно поменялся.
3.5 принесла асинхронность и тайп-аннотации.
3.10 принесла паттерн-матчинг, который тоже вероятно сильно повлияет на язык.
Короче, раз в 5 версий происходит революция. А промежуточные версии просто добавляют разные приятности. Если так и дальше пойдёт, то интересно, что же нам готовит 3.15?
Это если попытаться визуализировать версии питона по изменениям.
3.0 была шоком и прорывом, просто потому что язык сильно поменялся.
3.5 принесла асинхронность и тайп-аннотации.
3.10 принесла паттерн-матчинг, который тоже вероятно сильно повлияет на язык.
Короче, раз в 5 версий происходит революция. А промежуточные версии просто добавляют разные приятности. Если так и дальше пойдёт, то интересно, что же нам готовит 3.15?