Питонические атаки
Ir al canal en Telegram
Всяческие заметки про программирование на Python и другие весёлые истории.
Mostrar más1 299
Suscriptores
Sin datos24 horas
-37 días
-1130 días
Archivo de publicaciones
1 299
Григорий Петров - Почему Python медленный?
Не смотря на заявленное название в докладе рассматриваются и другие языки, в том числе Java, C#, JavaScript и другие. Рекомендую к ознакомлению всем интересующимся языками программирования.
1 299
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.1 299
Всем, кто пережил праздники и постепенно возвращается к жизни — с очередным наступившим!
В последнее время почти перестал читать новости и статьи, поэтому и тем для постов стало резко меньше. Зато я стал больше гулять и передвигаться на общественном транспорте. Или, например, в электричке на 6 часов без интернета. В таких условиях прям здорово залипнуть в окошко и слушать какой-нибудь легкий бубнёж. Короче, в качестве компенсации за отсутствие постов хочу порекомендовать подкаст, который мне давно уже рекомендовали, но я только недавно до него добрался.
Moscow Python Podcast — это удивительно годное шоу. Я прослушал уже выпусков десять, и мне прям нравится. Вроде всего лишь лёгкие разговоры под кофеёк, но оно пропитано какой-то непередаваемой мудростью. Ведущие классные — особенно Гриша Петров, который для меня уже стал легендой российского айти. Длина выпусков тоже оптимальная — хоть не страшно включать, а то некоторые подкасты и по 3 часа делают выпуски.
Вот тут вы найдёте все ссылки: https://podcast.python.ru/
Я слушаю на Яндекс.Музыке, поэтому скину отдельно: https://music.yandex.com/album/6892837
1 299
Пользуясь случаем напоминаю, что 3.7 и 3.8 сейчас находятся на этапе security fixes only. То есть, если вы хотите, чтобы в вашем питоне исправлялись всякие баги с неправильным поведением и падениями, то вам нужно быть как минимум на 3.9.
Вот хорошая диаграмма, визуализирующая время жизни разных версий интерпретатора: https://python-release-cycle.glitch.me/
1 299
Давайте на мгновение перестанем деградировать и почтим 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/
1 299
Не про Python, но мы же все интересуемся новыми IDE. Через 40 минут начало стрима с лайвкодингом в JetBrains Fleet!
#jetbrains
1 299
🔥 В 10:00 приходите на лайвкодинг во Fleet!
📹 «Лайвкодинг во Fleet, новой IDE от JetBrains»
Посмотрим на автодополнение, рефакторинг и анализ кода.
Попробуем написать код в несколько рук.
Испытаем IDE типовым проектом на Spring Boot.
1 299
Если вы хотели попробовать сделать свою игру - вот список видео (+ бонус) с которых можно начать знакомство с 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
1 299
Ура, товарищи! Достигнута очередная большая веха в развитии канала!
Во-первых, на канале уже 700+ читателей. Я раньше и подумать не мог, что кому-то может быть интересно читать мои потоки мыслей вперемешку со всякими статьями и ссылками, которые я нахожу занятными. Мне приятно. А если вы ещё и пишете комменты, то я вообще в восторге. Всегда рад пообщаться обо всем, что связано с моим любимым ЯП. Спасибо! ❤️
Во-вторых, на канал в комменты наконец-то пришли спамеры! Расцениваю это как отметку качества. Наконец-то они признали существование канала. Чтож, я ждал вас, механические ублюдки. Надо настроить бота, чтобы чистил комменты.
1 299
Всем привет! Состоялся релиз Django 4.0💥 https://www.djangoproject.com/weblog/2021/dec/07/django-40-released/
1 299
Ну все, теперь точно можно обновляться до 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
1 299
В Microsoft Store появился Python 3.10, так что можно прям в винде накликать себе свежий питон через встроенный магазин приложений.
Пользуется ли этим кто-нибудь?
https://www.microsoft.com/en-us/p/python-310/9pjpw5ldxlz5?rtc=1&activetab=pivot:overviewtab
1 299
"Imagine if I have an error 404 or something"
Это Pablo Galindo Salgado переименовывал ветку
master в main в репозитории CPython, и довёл гитхаб до приступа.
https://twitter.com/pyblogsal/status/1389559682159808518?s=201 299
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
1 299
Кстати, если решите на каком-нибудь рабочем проекте принять эту хорошую практику и пресечь такие ошибки в будущем, то нужна автоматизация. Потому что договорённости на словах обязательно забудутся.
Вот такой плагин для
flake8 есть: https://github.com/globality-corp/flake8-logging-format
#flake81 299
В модуле 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