Skip to main content

Education Center

Courses and materials from my own work. Not from someone else's slides.

9courses
85lessons
18materials

Learning Materials

Notes from the work. Open in full.

pythonarchitecturebusinesstypescriptdevopsanalyticsmarketingdatabaseproducttesting

Featured

pythonIntermediate180+ минут

asyncio в Python

Пока запрос ждёт БД, поток может делать другую работу. Когда это спасает, когда event loop встаёт, и как не заблокировать его синхронным кодом.

#python#asyncio#async#асинхронное программирование+1
architectureIntermediate50 минут

Feature-Sliced Design, когда components/ уже не открывается

Двести файлов в одной папке, фичу нельзя выкинуть. Слои, слайсы и public API, чтобы импорт шёл вниз, а не во все стороны.

#fsd#architecture#frontend#react+4
typescriptBeginner60 минут

TypeScript, если уже пишешь на JavaScript

Тот же JS, только редактор орёт до запуска. Типы, интерфейсы, generics и как переезжать по одному файлу.

#typescript#javascript#react#nextjs+4
devopsIntermediate120 минут

Docker и Compose, чтобы окружение перестало спорить

У разработчика Python 3.12, у тестировщика 3.9, на сервере другой Postgres. Dockerfile и compose, чтобы это перестало быть разговором на час.

#docker#docker-compose#контейнеризация#devops+3
pythonAdvanced90 минут

Утечки памяти в Python

Сервис не падает сразу. Память растёт неделю, потом OOM. Как это увидеть до ночи с пейджером: tracemalloc, циклы ссылок, кэш, который никто не чистит.

#python#memory leaks#утечки памяти#garbage collector+10
pythonIntermediate75 минут

Poetry и uv вместо requirements.txt

Poetry собирает и публикует пакет. uv ставит зависимости быстро. Оба фиксируют версии, чтобы «у меня поставилось» совпало с CI.

#python#poetry#uv#зависимости+6
pythonIntermediate50 минут

Типы в Python, чтобы ревью не гадало

Аннотации, TypedDict, Protocol, mypy. Типы не ускоряют рантайм. Они ускоряют человека, который читает чужой код.

#python#typing#mypy#static typing+3
marketingIntermediate60 минут

Омниканал: клиент не должен чинить ваши стены

Начал на сайте, закончил в магазине. Если консультант не видит, что человек уже купил, это не омниканал, а набор витрин.

#маркетинг#омниканальность#customer experience#CDP+3
databaseIntermediate80 минут

PostgreSQL из Python

SQLAlchemy, asyncpg, N+1, индексы, EXPLAIN. Когда ORM врёт, и что смотреть в плане запроса.

#postgresql#python#sqlalchemy#asyncpg+6

All materials

businessIntermediate30 минут

Упаковка идеи: кому, зачем, что меняется

Не «всем, кому нужно качество». Сегмент, боль, проверка гипотезы за одну формулировку.

#упаковка#product#custdev#гипотезы
analyticsIntermediate45 минут

Umami: своя аналитика без Google

Скрипт в два килобайта, данные на своём сервере. Куда люди уходят, какой канал приводит заявку, где кнопку не видно.

#analytics#umami#business-metrics#conversion+2
productIntermediate45 минут

Customer Journey Map: где клиент спотыкается

Карта пути: что человек пытается сделать, где бросает, какой отдел держит этот шов.

#customer journey#cjm#ux research#customer experience+2
architectureIntermediate55 минут

Self-hosted CMS и Next.js

Strapi, Directus, Keystone, Payload, Medusa. Не что моднее, а кому принадлежит контент, кто его правит и что ломается при деплое.

#headless-cms#nextjs#architecture#jamstack+6
testingAdvanced30 минут

Когда flaky в CI, смотрите трейс, не угадывайте

Тест падает раз в двадцать. Лог врёт порядком. Трейс, счётчик и артефакт рядом с тестом, без продового стека.

#pytest#observability#opentelemetry#prometheus+1
testingIntermediate15 минут

pytest-benchmark: бюджет времени рядом с тестом

Сериализация вдруг стала в три раза медленнее, а функциональные тесты зелёные. Бюджет в миллисекундах и baseline в CI.

#pytest#performance#benchmark#testing
testing

Тест не должен ждать семь секунд

Retry с паузами 1, 2, 4 секунды. В проде это нормально. В тесте sleep надо подменить, иначе сюит спит.

#pytest#asyncio#mocking#time+2
testing

Синхронные тесты БД, пока async ещё рано

Тест вставил пользователя и оставил его в базе. Следующий падает. Фикстуры, транзакция, rollback без async.

#pytest#postgresql#fixtures#beginner+1
testing

Гонка в потоках: два пакета молока

Два потока прочитали одно число и оба записали плюс один. Счётчик врёт. Холодильник с молоком, потом Lock.

#threading#race-condition#concurrency#pytest+1

If you need a one-to-one review, write.

A review of a task or a piece of material. I reply within a day.

Get in touch