And now for something completely different
Приветствуем читателей нашего ежемесячного дайджеста по миру Python-разработки. Мы обработали массу информации, чтобы представить вам самые полезные инструменты и туториалы. Устраивайтесь поудобнее и приступайте к чтению.
Краткое, ёмкое, хлёсткое
Начнем наш дайджест с отличного инструмента, позволяющего значительно уменьшить стресс, а в некоторых случаях даже ускорить работу. Сколько раз вы нецензурно выражались и всю команду вводили заново, допустив ошибку? А что если нецензурное выражение сделать универсальной командой, исправляющей ошибку или забытую часть команды?
Так и родилась идея приложения TheFuck. Оно ищет ошибку в предыдущей введенной команде и предлагает ее исправить. В качестве управляющей команды используется это самое слово из четырёх букв. Ну а чтобы каждый раз не подтверждать исправленную команду, можно дополнительно запускать приложение с флагом --yeah. Вот как это выглядит:
На данный момент приложение поддерживает большинство популярных опечаток при работе с 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-агрегатор, чтобы не пропустить выход новых материалов.