Привет! Меня зовут Максим.

Живу в СПб. Создаю бэкенды на Python и Go. Изучаю языки. Люблю Open Source, музыку и животных.

Асинхронный Python и различные формы многозадачности 

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

Препроцессинг кода в Python

Препроцессинг — предварительная обработка исходного файла перед передачей его компилятору. Чаще всего препроцессор вводит расширенный синтаксис, чтобы упростить или оптимизировать какие-то задачи, а на выходе генерирует код, понятный компилятору.

Справочные модели в Django

Когда-то давно придумал милый DSL для описания таблиц-справочников (lookup tables) в моделях джанги. Это такие key-value таблицы с постоянным числом строк. Иногда хочется каждую запись представить как константу.

Технический английский 

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

Обработка ошибок в Python и Go: исключения против значений

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

Выборочная установка пакетов из нестабильной ветки в Debian

Чтобы обновить пакет до последней версии в Debian, не всегда нужно прибегать к сторонним репозиториям. Достаточно использовать пакеты из нестабильной версии (она же Debian Sid).

Перенос подписок на другой YouTube-аккаунт через Selenium

Как-то раз я переезжал с одного Google-акканунта на другой. Во многих гугловых сервисах есть импорт/экспорт, так что закладки и контакты переехали без проблем. А вот в Ютубе есть только экспорт подписок. Импорт — только руками, либо через API. Руками заходить на каждый и подписываться не хотелось, с гугловым API еще раз связываться тоже не очень. Решил попробовать Selenium для такой бытовой автоматизации. Получился скриптик.

Опыт использования Хакинтоша

До перехода на Макбук я почти год использовал так называемый «Хакинтош» — подпольно-установленная OS X на обычном PC. Она была нужна мне в роли Линукса с нативным Фотошопом. Цены на Макбуки мне тогда казались заоблачными, поэтому полистав пару тематических форумов я взялся за эксперименты.

Публикация Python пакета в PyPI

PyPI (Python Package Index, не путать с PyPy) — это репозиторий сторонних пакетов для Python. Тех самых, которые обычно ставятся через команду pip.

Приём платежей на сайте без ИП и договора 

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

Однако, у нас тут тривиальная задача для небольшого сервиса: за денежку открывать пользователю дополнительные плюшки. Сервис настолько небольшой, что даже не покроет затраты на содержание ИП.