HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <ul><li><a>Скучный Python: повышаем качество кода</a></li>
1 <ul><li><a>Скучный Python: повышаем качество кода</a></li>
2 <li><a>Python на сервере и в браузере. Путь к Web Assembly</a></li>
2 <li><a>Python на сервере и в браузере. Путь к Web Assembly</a></li>
3 <li><a>Там сложно, ты не разберешься</a></li>
3 <li><a>Там сложно, ты не разберешься</a></li>
4 <li><a>Группы асинхронных задач в Python 3.11</a></li>
4 <li><a>Группы асинхронных задач в Python 3.11</a></li>
5 <li><a>Объект многоточие в Python</a></li>
5 <li><a>Объект многоточие в Python</a></li>
6 <li><a>Разбираемся с декораторами в Python</a></li>
6 <li><a>Разбираемся с декораторами в Python</a></li>
7 <li><a>Управление производительностью с Python 3.12</a></li>
7 <li><a>Управление производительностью с Python 3.12</a></li>
8 <li><a>Python на сервере и в браузере. Путь к Web Assembly</a></li>
8 <li><a>Python на сервере и в браузере. Путь к Web Assembly</a></li>
9 <li><a>SQLAlchemy с FastAPI для асинхронной работы</a></li>
9 <li><a>SQLAlchemy с FastAPI для асинхронной работы</a></li>
10 </ul><h2>Скучный Python: повышаем качество кода</h2>
10 </ul><h2>Скучный Python: повышаем качество кода</h2>
11 <p>Это статья о том, как максимально скучно разрабатывать и выпускать приложения на Python. Под определением "скучный" автор не имеет в виду "надежный", "без багов или "без инцидентов". Баги все равно будут встречаться. Вы будете продолжать сталкиваться с ситуациями, когда функция или, возможно, весь сервис не работает. "Скучное" же связано с источниками этих инцидентов. Поговорим об инструментах, которые помогают выявлять потенциальные ошибки и другие проблемы как можно раньше, в идеале еще до того, как они попадут в кодовую базу, не говоря уже о попадании в релиз.<a>Перейти к статье</a></p>
11 <p>Это статья о том, как максимально скучно разрабатывать и выпускать приложения на Python. Под определением "скучный" автор не имеет в виду "надежный", "без багов или "без инцидентов". Баги все равно будут встречаться. Вы будете продолжать сталкиваться с ситуациями, когда функция или, возможно, весь сервис не работает. "Скучное" же связано с источниками этих инцидентов. Поговорим об инструментах, которые помогают выявлять потенциальные ошибки и другие проблемы как можно раньше, в идеале еще до того, как они попадут в кодовую базу, не говоря уже о попадании в релиз.<a>Перейти к статье</a></p>
12 <h2>Python на сервере и в браузере. Путь к Web Assembly</h2>
12 <h2>Python на сервере и в браузере. Путь к Web Assembly</h2>
13 <p>Рассмотрим несколько подходов к запуску Python-приложений внутри браузера и сервера с использованием WebAssembly.<a>Читать</a></p>
13 <p>Рассмотрим несколько подходов к запуску Python-приложений внутри браузера и сервера с использованием WebAssembly.<a>Читать</a></p>
14 <h2>Там сложно, ты не разберешься</h2>
14 <h2>Там сложно, ты не разберешься</h2>
15 <p>В <a>своей первой статье</a> на Хабре автор описывал опыт реверсинга и модификации проекта, доставшегося по наследству. Конечно, в отношении проекта на Python "реверсинг" - это гипербола, однако с чем-то ранее неизвестным столкнуться все же получилось. Если вкратце - вместо классических исходников использовались модули, загружаемые из .pyc, а не классических .py файлов. Философия "защитников" базируется на принципе "Там сложно, никто не разберется".</p>
15 <p>В <a>своей первой статье</a> на Хабре автор описывал опыт реверсинга и модификации проекта, доставшегося по наследству. Конечно, в отношении проекта на Python "реверсинг" - это гипербола, однако с чем-то ранее неизвестным столкнуться все же получилось. Если вкратце - вместо классических исходников использовались модули, загружаемые из .pyc, а не классических .py файлов. Философия "защитников" базируется на принципе "Там сложно, никто не разберется".</p>
16 <p>Ход событий же показал, что во-первых, не так уж и сложно (передача параметров в хранимую процедуру PgSQL, и получение результата, возврат его пользователю - далеко не шедевр обфускации, скорее тут будет более применим принцип "Там несложно, любой разберется, но не захочет"), а во-вторых - кто-нибудь да поймет и найдет способ изменить поведение в нужном ключе. </p>
16 <p>Ход событий же показал, что во-первых, не так уж и сложно (передача параметров в хранимую процедуру PgSQL, и получение результата, возврат его пользователю - далеко не шедевр обфускации, скорее тут будет более применим принцип "Там несложно, любой разберется, но не захочет"), а во-вторых - кто-нибудь да поймет и найдет способ изменить поведение в нужном ключе. </p>
17 <p>Есть ли все-таки методы защиты исходников на python, и какие методы можно применять для решения этого вопроса?<a>Узнаем в статье</a></p>
17 <p>Есть ли все-таки методы защиты исходников на python, и какие методы можно применять для решения этого вопроса?<a>Узнаем в статье</a></p>
18 <h2>Группы асинхронных задач в Python 3.11</h2>
18 <h2>Группы асинхронных задач в Python 3.11</h2>
19 <p>Поговорим о группах исключений и асинхронных задач. Первые позволяют одновременно выбрасывать и обрабатывать несколько исключений, в то время как вторые позволяют объединять задачи в общий event loop и координированно управлять группами задач.<a>Читать продолжение</a></p>
19 <p>Поговорим о группах исключений и асинхронных задач. Первые позволяют одновременно выбрасывать и обрабатывать несколько исключений, в то время как вторые позволяют объединять задачи в общий event loop и координированно управлять группами задач.<a>Читать продолжение</a></p>
20 <h2>Объект многоточие в Python</h2>
20 <h2>Объект многоточие в Python</h2>
21 <p>Подробно рассмотрим объект многоточия, где можно использовать его в повседневной практике программиста, и какие известные пакеты Python используют его.<a>Читать</a></p>
21 <p>Подробно рассмотрим объект многоточия, где можно использовать его в повседневной практике программиста, и какие известные пакеты Python используют его.<a>Читать</a></p>
22 <h2>Разбираемся с декораторами в Python</h2>
22 <h2>Разбираемся с декораторами в Python</h2>
23 <p>Декораторы - это обертка вокруг функций (или классов) в Python, которая меняет способ работы этой функции. Декоратор абстрагирует свой собственный функционал. Нотация декоратора в целом наименее инвазивна. Разработчик может писать свой код так, как ему хочется, и использовать декораторы только для расширения функциональности. Все это звучит крайне абстрактно, поэтому давайте<a>обратимся к примерам.</a></p>
23 <p>Декораторы - это обертка вокруг функций (или классов) в Python, которая меняет способ работы этой функции. Декоратор абстрагирует свой собственный функционал. Нотация декоратора в целом наименее инвазивна. Разработчик может писать свой код так, как ему хочется, и использовать декораторы только для расширения функциональности. Все это звучит крайне абстрактно, поэтому давайте<a>обратимся к примерам.</a></p>
24 <h2>Управление производительностью с Python 3.12</h2>
24 <h2>Управление производительностью с Python 3.12</h2>
25 <p>В<a>Python 3</a>.12 появилась поддержка perf profiling. В этой статье увидим, как это помогает сократить время выполнения Python-скрипта с 36 секунд до 0,8. Мы рассмотрим Linux-инструмент perf, графики Flame Graph, посмотрим на дизассемблированный код и займемся поиском ошибок.<a>Читать</a></p>
25 <p>В<a>Python 3</a>.12 появилась поддержка perf profiling. В этой статье увидим, как это помогает сократить время выполнения Python-скрипта с 36 секунд до 0,8. Мы рассмотрим Linux-инструмент perf, графики Flame Graph, посмотрим на дизассемблированный код и займемся поиском ошибок.<a>Читать</a></p>
26 <h2>Python на сервере и в браузере. Путь к Web Assembly</h2>
26 <h2>Python на сервере и в браузере. Путь к Web Assembly</h2>
27 <p>Python как технология разработки приложений преимущественно используется для создания сценариев автоматизации, создания бэкэнда и веб-приложений, а также для анализа данных и использования методов статистики и машинного обучения. Также есть некоторые подходы к созданию мобильных приложений на Python. Но остается незаполненной ниша использования Python-приложений в веб-браузере, что могло бы позволить перенести часть обработки данных непосредственно на клиентское устройство и создавать полноценные fullstack-приложения на одной технологии.</p>
27 <p>Python как технология разработки приложений преимущественно используется для создания сценариев автоматизации, создания бэкэнда и веб-приложений, а также для анализа данных и использования методов статистики и машинного обучения. Также есть некоторые подходы к созданию мобильных приложений на Python. Но остается незаполненной ниша использования Python-приложений в веб-браузере, что могло бы позволить перенести часть обработки данных непосредственно на клиентское устройство и создавать полноценные fullstack-приложения на одной технологии.</p>
28 <p>Решением этой задачи может стать кросскомпиляция Python в код WebAssembly, который может выполняться как в браузере, так и на сервере с использованием nodejs или движка V8, либо SSVM. В статье мы рассмотрим несколько подходов к запуску Python-приложений внутри браузера и сервера с использованием WebAssembly.<a>Продолжение</a></p>
28 <p>Решением этой задачи может стать кросскомпиляция Python в код WebAssembly, который может выполняться как в браузере, так и на сервере с использованием nodejs или движка V8, либо SSVM. В статье мы рассмотрим несколько подходов к запуску Python-приложений внутри браузера и сервера с использованием WebAssembly.<a>Продолжение</a></p>
29 <h2>SQLAlchemy с FastAPI для асинхронной работы</h2>
29 <h2>SQLAlchemy с FastAPI для асинхронной работы</h2>
30 <p>В этой заметке будем использовать новые асинхронные возможности ORM-слоя вместе с новыми запросами в стиле 2.0. и создадим простое FastAPI-приложение с двумя маршрутами. Один - для добавления городов и их жителей, а другой - для вывода списка наиболее населенных объектов.<a>Читать</a></p>
30 <p>В этой заметке будем использовать новые асинхронные возможности ORM-слоя вместе с новыми запросами в стиле 2.0. и создадим простое FastAPI-приложение с двумя маршрутами. Один - для добавления городов и их жителей, а другой - для вывода списка наиболее населенных объектов.<a>Читать</a></p>
31  
31