My brain hurts

08 июня 2022
My brain hurts

Python продолжает красоваться на первом месте в индексе TIOBE. Это самый популярный язык в мире, поэтому мы в очередной раз собрали много интересных материалов. Наливайте кофе и приятного чтения!

Автоматизируем рутину Kubernetes

Теперь даже в самой маленькой компании можно встретить Kubernetes. Это удобно, ведь достаточно указать системе желаемое состояние, а она самостоятельно попробует его достичь. Но есть и вариант ручного управления. В Kubernetes для этого предусмотрена утилита kubectl, которая взаимодействует с кластером по API. 

Если хочется автоматизировать работу с этой утилитой, то привычных скриптовых языков, будет недостаточно. Здесь нужен полноценный язык программирования и Python прекрасно подойдет. Для этого есть официальная Python-библиотека для Kubernetes. В ней есть всё необходимое, чтобы управлять кластером и отслеживать состояние через API.

Главное в таком способе, что он позволяет выполнять команды, для которых, например, не предусмотрено API. Так можно выполнить deployment rollout, обычно производимый вручную с помощью kubectl rollout restart. Ещё можно автоматизировать рутинные операции по масштабированию кластера через API, отслеживать утилизацию системных ресурсов и многое другое. Попробовать стоит!

Симбиоз Python и GSheets

Каждая крутая корпорация в том или ином виде старается объединить свои продукты в единую экосистему. Это создает общую точку входа для всех сервисов. Пользователю это удобно. А вот разработчикам не весело, ведь приходится думать о совместимости инструментов и экосистемы.

Google Docs — офисный пакет, обладающий гибкостью и удобством работы. Незаменимая штука для тех, кому важна совместная работа над документами. Взглянем на Google Sheets, давным-давно имеющий собственный API. Для взаимодействия с ним было создано множество пакетов, таких как gspread, pygsheets, etc. Одна проблема — эти пакеты жёстко зависят от облачной инфраструктуры Google Cloud Platform и предназначены исключительно для работы внутри неё.

А вот xlwings позволяет разрабатывать интерактивные приложения прямо внутри Google Sheets. Магия тут в том, что xlwings — это просто веб-приложение, задействующее Google Sheets, как внешний интерфейс. Это резко все упрощает, можно не ковыряться с HTML, CSS и JavaScript.

Код с душком

Своему появлению на свет этот забавный термин обязан Кенту Беку (Kent Beck), создателю методологии экстремального программирования. Означает он потенциально проблемные участки кода. Словно «Пиратский кодекс» из превосходной саги с Джонни Деппом — «это просто свод указаний, а не жёстких законов». Речь не о чётких критериях определения плохого кода, а скорее о том, где стоит приложить максимум усилий при рефакторинге.

Новое — это хорошо забытое старое, так что советуем перечитать статью 5 Python Code Smells You Should Be Wary Of. Автор не просто сделал акцент на часто встречающихся случаях, но и дал дельные советы по приведению кода в порядок. Всего он выделил 5 ситуаций, когда стоит задуматься о «запахе» кода:

  1. изменение предопределённых значений функции во время вызова;
  2. предпочтение выбирать диапазон, вместо перечисления;
  3. чрезмерное использование циклов (в том числе вложенных);
  4. злоупотребление списками;
  5. нездоровое влечение к глобальным переменным и булевым значениям.

Так что, если вы поймали себя на мысли, что часто создаете такие ситуации — пришло время меняться. Давайте писать хороший код и не переживать о появлении «запаха».

Первый взгляд на PyScript

Наш любимый Real Python подготовил обзор недавно появившего фреймворка PyScript. Впервые мы услышали о нём на PyCon US 2022. PyScript предназначен для создания интерактивных веб-сайтов на чистом Python или в связке с JavaScript. Фактически это SPA на TypeScript плюс Svelte c оформлением на Tailwind CSS и упаковщиком rollup.js. «Франкенштейн» пока находится в статусе альфа-версии, но активно развивается и дорабатывается.

Основная задача PyScript — снизить порог входа во фронтенд-разработку и позволить применять знания, полученные в результате изучения Python. Чтобы всё это корректно работало в браузере, за основу был взят Pyodide (порт CPython под веб) и скомпилирован в WebAssembly. Круто, что при разработке не потребуется даже запуска веб-сервера. 

Но есть и ложка дёгтя — первый запуск потребует скачивания среды выполнения Pyodide из интернета (около 20 Мбайт). Зато после помещения в кэш можно смело работать автономно. Конечно, есть и возможность предварительной загрузки среды исполнения с помощью встроенного в Python локального HTTP-сервера, но пока что это не панацея. Часть всё равно будет загружаться из CDN. Спишем это на особенности альфа-версии. 

Из особенностей, которые стоит учитывать — форматирование кода. Если для JavaScript или CSS пробелы могут быть спокойно удалены, без вреда для интерпретации, то с Python не всё так просто. Средства автоматического форматирования кода легко могут испортить ваш Python-код, вырезав нужные пробелы. Это вызовет исключение и ошибки Pyodide.

Объявление строкового литерала тоже может забросить вас в «Лютный переулок». Браузер интерпретирует такое объявление как HTMLUnknownElement и вырежет его, оставив внутри только текст. Workaround — заменять символы на объекты HTML. Ну а об остальных особенностях вы узнаете из оригинальной статьи.

Дополнительная бета Python 3.11.0b3

Изменения редко проходят бесследно. При разработке Python 3.11.0 поломали совместимость с pytest. Дело в том, что для лучшего проведения диагностики, pytest перезаписывает узлы AST, которые затем компилируются. В этом основная проблема — узлы AST, созданные pytest, оказываются несовместимыми по причине изменений в компиляторе. Даже если созданный узел не вызывает сбой, он потенциально имеет поврежденную структуру.

Для исправления этой проблемы была выпущена дополнительная бета-версия 3.11.0b3. Таким образом вместо четырёх запланированных бета-версий, их выйдет пять. Ситуация с pytest была исправлена в 3.11.0b3. В предыдущей 3.11.0b2 тоже есть возможность работать с pytest, но исключительно на ваш страх и риск. Для этого добавьте «--assert=plain» в вызов pytest. Выход следующей тестовой версии будет по плану 16.06.2022.

Интересно посмотреть

Мы уже упомянули замечательное мероприятие PyCon US 2022. Питонисты Evrone особенно отметили доклад про GraphQL. Наслаждайтесь! 

 

Обмен опытом — важная часть нашей работы. Две недели назад мы провели Python-митап. Спикеры из компаний Утконос Онлайн, duckstax и Yandex представили три отличных доклада. Традиционно они были записаны в высоком качестве 4K и с хорошим студийным звуком:

 

Как мы ускоряли код – Python + numba

 

Как вызвать C++ из Python и не стать медленнее

 

RecSys Cookbook: строим рекомендательную систему на Python без глубоких знаний математики

Обучение

Онлайн

Курс Python в Evrone Academy

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

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

 

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

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

Регистрация

Митапы

Онлайн

Python meetup

 19:00

Рады сообщить, что у нас запланирован Python Meetup, который пройдёт 7 сентября. Детальная информация о мероприятии будет опубликована позже, следите за нашими новостями.

Регистрация

Вакансии

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

Evrone 

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

Подробнее

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