And now for something completely different

10 марта 2022
And now for something completely different

Приветствуем читателей нашего ежемесячного дайджеста по миру Python-разработки. Мы обработали массу информации, чтобы представить вам самые полезные инструменты и туториалы. Устраивайтесь поудобнее и приступайте к чтению. 

Краткое, ёмкое, хлёсткое

Начнем наш дайджест с отличного инструмента, позволяющего значительно уменьшить стресс, а в некоторых случаях даже ускорить работу. Сколько раз вы нецензурно выражались и всю команду вводили заново, допустив ошибку? А что если нецензурное выражение сделать универсальной командой, исправляющей ошибку или забытую часть команды?

Так и родилась идея приложения TheFuck. Оно ищет ошибку в предыдущей введенной команде и предлагает ее исправить. В качестве управляющей команды используется это самое слово из четырёх букв. Ну а чтобы каждый раз не подтверждать исправленную команду, можно дополнительно запускать приложение с флагом --yeah. Вот как это выглядит:

1

На данный момент приложение поддерживает большинство популярных опечаток при работе с git, apt, brew и так далее. Бонусом можно создавать свои собственные правила. Так что если вы часто допускаете ошибки при наборе — вам точно понравится это приложение.

 

Вдумчивый рефакторинг с LibCST

Значительное увеличение кодовой базы часто ведет к проблемам. Типичный сценарий выглядит так: несколько команд, не согласуя действия друг с другом, внедряют паттерны для увеличения производительности. Но при этом не особо задумываются о рефакторинге старого кода, чтобы новые паттерны были эффективными. Итог предсказуем — новые и старые функции работают вместе, что-то начинает дублировать друг друга. Производительность таким образом только падает.

Можно создать скрипт, так называемый codemod, позволяющий автоматически убирать все старые паттерны и заменять их на новые. Удобнее всего это делать с помощью библиотеки LibCST. Из написанного кода она строит дерево синтаксического анализа. Каждый узел такого древа будет выражением, вызовом функции, оператором и так далее.

Вначале идет анализ. Мы перемещаемся по узлам, изучаем структуру и формируем метаданные. Так становится ясно, где производить изменения. Это первый режим работы, так называемый Visitor. Для внесения изменений задействуется режим Transformer, который проходит по узлам и изменяет их. Затем структура преобразуется обратно в код, а все изменения выглядят, словно их внес разработчик вручную. 

Сначала может звучать сложновато из-за новых абстракций. Но есть и плюс — можно декомпозировать задачу рефакторинга на достаточно простые шаги. Итогом станет согласованность кодовой базы, несмотря на активный рост. Ну и производительность страдать не будет. Заинтересовали? Тогда читайте эту статью с примерами кода и дополнительными объяснениями.

 

Автоматизируем сообщения WhatsApp

Как взаимодействовать с WhatsApp парой строк кода и без головной боли? У нас есть ответ — библиотека PyWhatKit. Она предельно простая и не требует дополнительной настройки. Автоматически отправить сообщение в WhatsApp пока вы спите — легко. Сконвертировать картинку в ASCII-art — да, пожалуйста. Включить видео на YouTube — тоже никаких проблем.

Это отличное средство автоматизации напоминаний или ежедневной рутины. Есть множество ситуаций, когда надо быстро оповестить клиентов или сотрудников по WhatsApp и делать это вручную слишком долго. Сценариев применения множество: от поздравлений с праздниками по расписанию до создания какого-нибудь опроса или квеста на мероприятии.

 

Встраиваемый JIT-компилятор Pyjion

В прошлом дайджесте мы рассказывали о такой крутой штуке, как Cython, оптимизирующий статический компилятор, превращающий код на Python в код на языке C. Это действительно интересный вариант серьезно увеличить производительность. Однако, не только Cython может помочь в этом вопросе. Сегодня мы расскажем о таком JIT-компиляторе, как Pyjion.

Pyjion был создан в компании Microsoft, как радикальное средство ускорения приложений Python без изменения исходного кода. В некоторых случаях производительность вырастает на порядок. Магия кроется в ином механизме компиляции — тут она двойная.

Штатный компилятор просто использует главный цикл для перебора опкодов. Pyjion действует хитрее — для каждого опкода создается абстрактная таблица типов, после чего он компилируется в высокоуровневый ассемблер виртуальной машины .NET. Полученные CIL-опкоды далее передаются в компилятор .NET EE. Машинный код на выходе получается очень быстрым.

Но есть и серьезная ложка дёгтя. Если вы привыкли к async…await, то вас ждёт разочарование — Pyjion их пока не поддерживает (и вряд ли будет). Ещё одно ограничение связано с отсутствие поддержки блоков with. Но в дорожной карте Pyjion эта проблема есть и будет решена в будущих релизах.

 

Обучение

Онлайн

Курс Python в Evrone Academy

60 учебных модулей 

Если вы думаете о смене работы или хотите стать частью нашей команды, но у вас недостаточно коммерческого опыта, то теперь можно учиться прямо в Evrone. А после — попасть к нам на оплачиваемую стажировку.

 

Основа обучения в Evrone Academy — наши высокие требования к разработчикам и опыт в проектах. Мы записали лекции, подготовили текстовые версии, добавили практические задания — это позволит вам подтянуть знания до middle-уровня. На стажировке мы дополним теорию практикой, а после — добро пожаловать на «боевой» проект.

Сейчас академия доступна в режиме early access — можно пройти базовые части по Python или Ruby. Но мы уже готовим новые материалы и практические задания, подписывайтесь на нас в соцсетях, чтобы не пропустить обновления!

Регистрация

Конкурсы для разработчиков

Онлайн

Python Quiz

до 21 апреля 2022

Если хотите быстро проверить себя, а на технические собеседования не готовы — участвуйте в новом квизе по языку Python.

Его составляли наши опытные разработчики, так что придётся хорошо подумать. Внутри сложные вопросы и несколько вариантов ответов. Лишь один — верный.

Среди тех, кто правильно ответит на все вопросы мы разыграем Яндекс.Станцию. Подписывайтесь на наши соцсети, чтобы не пропустить прямую трансляцию розыгрыша.

Принять участие

Митапы

Онлайн

Python meetup

 19:00

Рады сообщить, что у нас запланирован Python Meetup, который пройдёт 13-го апреля. Наш DevRel летит с докладом на PyCon DE и, если звезды сложатся удачно, то онлайн трансляция митапа будет проведена с главной европейской Python-конференции! Детальная информация о мероприятии будет опубликована позже, следите за нашими новостями.

Регистрация

Вакансии

Удаленка / Офис

Evrone 

Мы открыты для новых Python-разработчиков. Evrone работает удалённо с первого дня, участие в Open-source проектах оплачивается, а расти в грейдах можно с помощью честной системы проверки навыков и менторства.

Подробнее

 

Не забывайте подписываться на наш дайджест, где вы будете регулярно находить полезные обзоры и новости мира разработки, а также добавляйте нашу RSS-ленту в свой любимый RSS-агрегатор, чтобы не пропустить выход новых материалов.

 

 

Подписаться
на Digest →
Важные новости и мероприятия без спама
Технологии которыми вы владеете и которые вам интересны
Ваш адрес электронной почты в безопасности - вот наша политика конфиденциальности.