Скучный Python: повышаем качество кода

Это статья о том, как максимально скучно разрабатывать и выпускать приложения на Python. Под определением «скучный» автор не имеет в виду «надежный», «без багов или «без инцидентов». Баги все равно будут встречаться. Вы будете продолжать сталкиваться с ситуациями, когда функция или, возможно, весь сервис не работает. «Скучное» же связано с источниками этих инцидентов. Поговорим об инструментах, которые помогают выявлять потенциальные ошибки и другие проблемы как можно раньше, в идеале еще до того, как они попадут в кодовую базу, не говоря уже о попадании в релиз. Перейти к статье


Python на сервере и в браузере. Путь к Web Assembly

Рассмотрим несколько подходов к запуску Python-приложений внутри браузера и сервера с использованием WebAssembly. Читать


Там сложно, ты не разберешься

В своей первой статье на Хабре автор описывал опыт реверсинга и модификации проекта, доставшегося по наследству. Конечно, в отношении проекта на Python «реверсинг» — это гипербола, однако с чем-то ранее неизвестным столкнуться все же получилось. Если вкратце — вместо классических исходников использовались модули, загружаемые из .pyc, а не классических .py файлов. Философия «защитников» базируется на принципе «Там сложно, никто не разберется».

Ход событий же показал, что во-первых, не так уж и сложно (передача параметров в хранимую процедуру PgSQL, и получение результата, возврат его пользователю — далеко не шедевр обфускации, скорее тут будет более применим принцип «Там несложно, любой разберется, но не захочет»), а во-вторых — кто-нибудь да поймет и найдет способ изменить поведение в нужном ключе. 

Есть ли все-таки методы защиты исходников на python, и какие методы можно применять для решения этого вопроса? Узнаем в статье


Группы асинхронных задач в Python 3.11

Поговорим о группах исключений и асинхронных задач. Первые позволяют одновременно выбрасывать и обрабатывать несколько исключений, в то время как вторые позволяют объединять задачи в общий event loop и координированно управлять группами задач. Читать продолжение


Объект многоточие в Python

Подробно рассмотрим объект многоточия, где можно использовать его в повседневной практике программиста, и какие известные пакеты Python используют его. Читать


Разбираемся с декораторами в Python

Декораторы – это обертка вокруг функций (или классов) в Python, которая меняет способ работы этой функции. Декоратор абстрагирует свой собственный функционал. Нотация декоратора в целом наименее инвазивна. Разработчик может писать свой код так, как ему хочется, и использовать декораторы только для расширения функциональности. Все это звучит крайне абстрактно, поэтому давайте обратимся к примерам.


Управление производительностью с Python 3.12

В Python 3.12 появилась поддержка perf profiling. В этой статье увидим, как это помогает сократить время выполнения Python-скрипта с 36 секунд до 0,8. Мы рассмотрим Linux-инструмент perf, графики Flame Graph, посмотрим на  дизассемблированный код и займемся поиском ошибок. Читать


Python на сервере и в браузере. Путь к Web Assembly

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

Решением этой задачи может стать кросскомпиляция Python в код WebAssembly, который может выполняться как в браузере, так и на сервере с использованием nodejs или движка V8, либо SSVM. В статье мы рассмотрим несколько подходов к запуску Python-приложений внутри браузера и сервера с использованием WebAssembly. Продолжение


SQLAlchemy с FastAPI для асинхронной работы

В этой заметке будем использовать новые асинхронные возможности ORM-слоя вместе с новыми запросами в стиле 2.0. и создадим простое FastAPI-приложение с двумя маршрутами. Один — для добавления городов и их жителей, а другой — для вывода списка наиболее населенных объектов. Читать