ch
Feedback
Питонические атаки

Питонические атаки

前往频道在 Telegram

Всяческие заметки про программирование на Python и другие весёлые истории.

显示更多
1 299
订阅者
无数据24 小时
-37
-1130
帖子存档
Григорий Петров - Почему Python медленный? Не смотря на заявленное название в докладе рассматриваются и другие языки, в том ч
Григорий Петров - Почему Python медленный? Не смотря на заявленное название в докладе рассматриваются и другие языки, в том числе Java, C#, JavaScript и другие. Рекомендую к ознакомлению всем интересующимся языками программирования.

PyNose: a Test Smell Detector for Python А ещё в прошлом году у 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.

Всем, кто пережил праздники и постепенно возвращается к жизни — с очередным наступившим! В последнее время почти перестал читать новости и статьи, поэтому и тем для постов стало резко меньше. Зато я стал больше гулять и передвигаться на общественном транспорте. Или, например, в электричке на 6 часов без интернета. В таких условиях прям здорово залипнуть в окошко и слушать какой-нибудь легкий бубнёж. Короче, в качестве компенсации за отсутствие постов хочу порекомендовать подкаст, который мне давно уже рекомендовали, но я только недавно до него добрался. Moscow Python Podcast — это удивительно годное шоу. Я прослушал уже выпусков десять, и мне прям нравится. Вроде всего лишь лёгкие разговоры под кофеёк, но оно пропитано какой-то непередаваемой мудростью. Ведущие классные — особенно Гриша Петров, который для меня уже стал легендой российского айти. Длина выпусков тоже оптимальная — хоть не страшно включать, а то некоторые подкасты и по 3 часа делают выпуски. Вот тут вы найдёте все ссылки: https://podcast.python.ru/ Я слушаю на Яндекс.Музыке, поэтому скину отдельно: https://music.yandex.com/album/6892837

Пользуясь случаем напоминаю, что 3.7 и 3.8 сейчас находятся на этапе security fixes only. То есть, если вы хотите, чтобы в вашем питоне исправлялись всякие баги с неправильным поведением и падениями, то вам нужно быть как минимум на 3.9. Вот хорошая диаграмма, визуализирующая время жизни разных версий интерпретатора: https://python-release-cycle.glitch.me/

Давайте на мгновение перестанем деградировать и почтим 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/

моржовый оператор или что-то, я хз, я присваиваю через равно #пятница #meme
моржовый оператор или что-то, я хз, я присваиваю через равно #пятница #meme

Не про Python, но мы же все интересуемся новыми IDE. Через 40 минут начало стрима с лайвкодингом в JetBrains Fleet! #jetbrains

🔥 В 10:00 приходите на лайвкодинг во Fleet! 📹 «Лайвкодинг во Fleet, новой IDE от JetBrains» Посмотрим на автодополнение, ре
🔥 В 10:00 приходите на лайвкодинг во Fleet! 📹 «Лайвкодинг во Fleet, новой IDE от JetBrains» Посмотрим на автодополнение, рефакторинг и анализ кода. Попробуем написать код в несколько рук. Испытаем IDE типовым проектом на Spring Boot.

Если вы хотели попробовать сделать свою игру - вот список видео (+ бонус) с которых можно начать знакомство с 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

Ура, товарищи! Достигнута очередная большая веха в развитии канала! Во-первых, на канале уже 700+ читателей. Я раньше и подум
Ура, товарищи! Достигнута очередная большая веха в развитии канала! Во-первых, на канале уже 700+ читателей. Я раньше и подумать не мог, что кому-то может быть интересно читать мои потоки мыслей вперемешку со всякими статьями и ссылками, которые я нахожу занятными. Мне приятно. А если вы ещё и пишете комменты, то я вообще в восторге. Всегда рад пообщаться обо всем, что связано с моим любимым ЯП. Спасибо! ❤️ Во-вторых, на канал в комменты наконец-то пришли спамеры! Расцениваю это как отметку качества. Наконец-то они признали существование канала. Чтож, я ждал вас, механические ублюдки. Надо настроить бота, чтобы чистил комменты.

Всем привет! Состоялся релиз Django 4.0💥 https://www.djangoproject.com/weblog/2021/dec/07/django-40-released/

Ну все, теперь точно можно обновляться до 3.10, потому что уже выпустили первый багфикс релиз. От версии с 1 или больше на конце уже можно ожидать какой-то надежности. Все самые очевидные грабли уже потоптаны. Да и большинство либ к этому моменту уже тоже должно было адаптироваться, так что обязательно попробуйте обновиться. Анонс: https://pythoninsider.blogspot.com/2021/12/python-3101-is-available.html Список изменений: https://docs.python.org/3/whatsnew/changelog.html#python-3-10-1-final

В Microsoft Store появился Python 3.10, так что можно прям в винде накликать себе свежий питон через встроенный магазин приложений. Пользуется ли этим кто-нибудь? https://www.microsoft.com/en-us/p/python-310/9pjpw5ldxlz5?rtc=1&activetab=pivot:overviewtab

"Imagine if I have an error 404 or something" Это Pablo Galindo Salgado переименовывал ветку master в main в репозитории CPython, и довёл гитхаб до приступа. https://twitter.com/pyblogsal/status/1389559682159808518?s=20

Добавили поддержку poetry, какие-то интеграции с FastAPI.

Introducing PyCharm 2021.3! #jetbrains #pycharm #nothabr #news #releases #newsletter

Небольшая видео-презентация Fleet. https://www.youtube.com/watch?v=ow5kdhDa_pk #jetbrains

JetBrains Fleet — a lightweight editor but with a twist! Вы посмотрите какая красота. Похоже, JetBrains вдохновились VSCode, учли все те проблемы, с которыми они страдают в последнее время в своих полноценных тяжелых монолитных IDE, и запилили свой легковесный редактор. Уже существует минимум три способа, чтобы работать в IDE удаленно — CodeWithMe, Projector, Remote Development. И вот теперь есть ещё и четвертая альтернатива. Походу, JetBrains отчаянно пытается решить проблемы, которые порождены монолитностью их IDE (фронтенд и бэкенд нельзя/сложно отделить друг от друга). Возможно, другие попытки лишь отчасти решают проблему, поэтому JetBrains пилят новый редактор с нуля 🤔 Fleet уже поддерживает 7 популярных языков, в том числе и Python, конечно. Скоро добавят ещё языков. Интересно за этим понаблюдать. Записался на превью (EAP). https://blog.jetbrains.com/blog/2021/11/29/welcome-to-fleet/ #jetbrains

Кстати, если решите на каком-нибудь рабочем проекте принять эту хорошую практику и пресечь такие ошибки в будущем, то нужна автоматизация. Потому что договорённости на словах обязательно забудутся. Вот такой плагин для flake8 есть: https://github.com/globality-corp/flake8-logging-format #flake8

В модуле logging предусмотрен немного необычный способ форматирования строки без форматирования. logging.info('Message %s %s', arg1, arg2) На самом деле, если вы его не используете то вы делаете неправильно!⚠️ Если вам требуется указать в строке сообщения какой-либо аргумент то обычно это делается форматированием строки logging.info('New value is %s' % value) Или любой другой доступный нам способ logging.info(f'New value is {value}') logging.info(f'{value=}') Кажется, всё логично, все так делают. Но нет, это ошибка! 😫 Функция записи сообщения должна быть очень быстрой. Да, она в любом случае занимает время, но чем меньше тем лучше. И особенно, когда это сообщение не проходит по фильтру уровня логирования. Например, у меня установлен уровень WARNING и выполняется вот такой вызов logging.debug(f'Current user: {user}') Что произойдет? Сообщение не попадает под установленный уровень логирования и будет проигнорировано. Это обрабатывается сразу же первой командой в вызываемой функции debug. Но при этом форматирование строки всё равно произойдёт! И проблема не в самом форматировании, которое достаточно быстрое (даже при складывании строк через "+"), а в тех возможных действиях, которые придется вызвать для преобразования объекта user в строку. Возможно, там будет запрос в БД, разбор больших массивов данных или еще что-то не очень быстрое (или не очень умное🤪). Нам всё это придётся посчитать чтобы потом.....ничего с этим не сделать. Поэтому правильно писать так: logging.debug('Current user: %s', user) Мы просто передаём подготовленную неформатированную строку и аргументы для форматирования, это не требует вычислений. Но само форматирование и сопутствующие вызовы произойдут только в случае когда это действительно потребуется, то есть уровень сообщения попадает под условия настройки текущего логгера. #libs #tricks