Содержание курса
Приветствие
5 уроков
1.
Давайте знакомиться
↗
2.
Рекомендации по курсам на Stepik и других ресурсах
↗
3.
Рынок и вход: трудоустройство в IT без иллюзий
↗
4.
SSR, SPA и причем тут Django и FastAPI
↗
5.
Предложения по развитию курса
↗
Заметки о Linux
2 урока
1.
Введение в Linux
↗
2.
Советы и лайфхаки в Linux
↗
Математика для бэкендера
12 уроков
1.
Введение
↗
2.
Теория чисел
↗
3.
Порядок выполнения арифметических операций
↗
4.
Переменные
↗
5.
Функции
↗
6.
Суммы
↗
7.
Возведение в степень
↗
8.
Логарифмы
↗
9.
Число e
↗
10.
Натуральные логарифмы
↗
11.
Пределы
↗
12.
Производные
↗
Алгоритмы
17 уроков
1.
Нотация «O большое» (Big O Notation)
↗
2.
Константная сложность 𝑂 ( 1 )
↗
3.
Линейная сложность 𝑂 ( 𝑛 )
↗
4.
Квадратичная сложность 𝑂 ( 𝑛^2 )
↗
5.
O(log n) — Логарифмическая сложность
↗
6.
Линейно‑логарифмическая сложность O(n * log n)
↗
7.
Кубическая сложность 𝑂 ( 𝑛^3 )
↗
8.
Экспоненциальная сложность 𝑂 ( 2^𝑛 )
↗
9.
Факториальная сложность 𝑂 ( 𝑛 ! )
↗
10.
Сравнение сложностей
↗
11.
Пространственная сложность
↗
12.
Амортизированная сложность
↗
13.
Как определить сложность
↗
14.
Два указателя (Two Pointers)
↗
15.
Префиксные суммы (Prefix Sums)
↗
16.
Стек (Stack)
↗
17.
Поиск в глубину (DFS - Depth-First Search)
↗
Задачки
2 урока
1.
Введение
↗
2.
Задачи по функциям и декораторам
↗
Что такое pipx и зачем он нужен?
5 уроков
1.
Что такое pipx?
↗
2.
Установка pipx и основные функции
↗
3.
Руководство по pipx
↗
4.
Список полезных программ, для pipx
↗
5.
Как сделать Python-пакет совместимым с pipx
↗
Модуль logging (Логирование)
8 уроков
1.
Введение в logging
↗
2.
Уровни логирования
↗
3.
Что такое basicConfig() и способы настройки логирования
↗
4.
Как использовать уровни логирования?
↗
5.
Именованные логгеры (getLogger)
↗
6.
Handlers (обработчики)
↗
7.
Formatters (формат сообщений)
↗
8.
Настройка dictConfig — dev/prod окружений
↗
Заметки о Docker
5 уроков
1.
Docker | Введение
↗
2.
Portainer
↗
3.
Флаги и различные команды
↗
4.
Основные команды Docker Compose
↗
5.
Практика: Docker compose, CloudBeaver, PostgreSQL, и MySQL
↗
Заметки о ngrok
2 урока
1.
Что такое ngrok, установка ngrok
↗
2.
Запуск ngrok для локального сервера
↗
Заметки о Django
5 уроков
1.
Введение в Django
↗
2.
Настройка VS Code для Django
↗
3.
ORM - annotate, aggregate, агрегирующие функции
↗
4.
Гайд по созданию Docker-контейнера Redis для Celery на Linux
↗
5.
Полный разбор системы User в Django
↗
Poetry
1 урок
1.
Введение в Poetry
↗
Django | OAuth 2.0 - социальная аутентификация
2 урока
1.
Google-аутентификация подготовка проекта
↗
2.
Google-аутентификация продолжение
↗
SQLAlchemy 2.0
63 урока
1.
-- ВВЕДЕНИЕ --
↗
2.
Что такое SQL и зачем он нужен
↗
3.
Что такое ORM и зачем он нужен
↗
4.
Что такое SQLAlchemy: Core vs ORM
↗
5.
Соединение с БД: клиент-сервер, пул, pgBouncer
↗
6.
Установка окружения: Poetry, Docker, VS Code
↗
7.
Структура учебного проекта
↗
8.
-- ОСНОВЫ (СИНХРОННЫЙ SQLAlchemy) --
↗
9.
Engine: create_engine, строка подключения, dialect
↗
10.
База данных: memory vs файл, DBeaver, WSL
↗
11.
DeclarativeBase и первая модель
↗
12.
Mapped[T] vs Annotated[T, mapped_column(...)]
↗
13.
Session: что это и зачем
↗
14.
CRUD: insert, select, update, delete (ORM)
↗
15.
CRUD: Core-стиль
↗
16.
Метод execute() и shortcuts (get, scalar, scalars)
↗
17.
scalar(), scalars(), scalar_one_or_none(), mappings()
↗
18.
values(), returning(), return_defaults()
↗
19.
Жизненный цикл объекта: transient → pending → persistent
↗
20.
Unit of Work и Identity Map
↗
21.
flush() vs commit()
↗
22.
autoflush: как работает
↗
23.
expire_on_commit
↗
24.
Состояния expired и detached
↗
25.
expire(), refresh(), expunge()
↗
26.
Транзакции: commit(), rollback(), begin(), sessionmaker()
↗
27.
Типичные ошибки: DetachedInstanceError, IntegrityError
↗
28.
-- СВЯЗИ МЕЖДУ ТАБЛИЦАМИ --
↗
29.
relationship() и back_populates: основы
↗
30.
One-to-Many
↗
31.
Many-to-One
↗
32.
One-to-One (UniqueConstraint, uselist=False)
↗
33.
Many-to-Many: secondary, ассоциативная таблица
↗
34.
Самоссылочные таблицы: remote_side
↗
35.
backref vs back_populates
↗
36.
Каскадное добавление объектов в Session
↗
37.
ondelete и onupdate управление каскадным поведением на уровне БД
↗
38.
ForeignKeyConstraint для составных ключей
↗
39.
Индексы и UniqueConstraint
↗
40.
Типичные ошибки связей
↗
41.
Примечание: кавычки в аннотациях типов
↗
42.
Примечание: One-to-Many vs Many-to-One
↗
43.
Примечание: указывать ли класс в relationship()
↗
44.
-- ЗАГРУЗКА СВЯЗАННЫХ ДАННЫХ --
↗
45.
Подготовка асинхронного проекта: PostgreSQL + async/await
↗
46.
Lazy loading и проблема N+1
↗
47.
selectinload() — основная стратегия для коллекций
↗
48.
options() — механизм добавления стратегий
↗
49.
joinedload() — основная стратегия для одиночных связей
↗
50.
subqueryload() — стратегия нетерпеливой загрузки через подзапрос
↗
51.
contains_eager() + join() — самописные JOIN
↗
52.
raiseload() — запрет ленивой загрузки
↗
53.
load_only(), defer — позволяет указать, какие колонки загружать
↗
54.
with_loader_criteria() — глобальный фильтр к загрузке сущностей
↗
55.
Настройка стратегии по умолчанию в relationship(lazy=...)
↗
56.
FastAPI-эндпоинт с selectinload
↗
57.
-- КАСКАДЫ ORM --
↗
58.
-- SELECT-ЗАПРОСЫ --
↗
59.
-- АСИНХРОННОСТЬ --
↗
60.
-- ИНФРАСТРУКТУРА --
↗
61.
-- ПРОДВИНУТЫЕ ТЕМЫ --
↗
62.
-- ПРАКТИЧЕСКИЕ ПРОЕКТЫ --
↗
63.
-- ПОДГОТОВКА К СОБЕСЕДОВАНИЮ --
↗
Заметки о Django REST Framework (DRF)
12 уроков
1.
Введение в Django REST Framework (DRF)
↗
2.
Сериализаторы
↗
3.
Serializers
↗
4.
ModelSerializer
↗
5.
APIView
↗
6.
GenericAPIView
↗
7.
Mixins (Миксины)
↗
8.
Generics (Общие представления)
↗
9.
ViewSets
↗
10.
GenericViewSet
↗
11.
ModelViewSet и ReadOnlyModelViewSet
↗
12.
Пользовательские базовые классы ViewSet в Django REST Framework
↗
Celery + Django
1 урок
1.
Основы Celery + Django
↗
Pydantic
2 урока
1.
Руководство по дженерикам (generics) в Pydantic
↗
2.
Введение в Pydantic
↗
Проект на DRF | Free Crypto API
5 уроков
1.
О проекте
↗
2.
DRF | Подготовка проекта
↗
3.
DRF | Авторизация и аутентификация
↗
4.
DRF | Приложение crypto
↗
5.
Скоро увидимся...
↗
FastAPI + SQLAlchemy 2.0 + Poetry + Pydantic
33 урока
1.
Подготовка для работы с FastAPI
↗
2.
Введение в Poetry
↗
3.
SQLAlchemy 2.0 | Дорожная карта изучения
↗
4.
Содержание раздела SQLAlchemy 2.0
↗
5.
SQLAlchemy 2.0 | Введение в ORM
↗
6.
SQLAlchemy 2.0 | Работа с объектами, связанными с ORM
↗
7.
SQLAlchemy 2.0 | Декларативное отображение | Связи
↗
8.
SQLAlchemy 2.0 | Самоссылочная таблица
↗
9.
CRUD проект (подключение к БД и CRUD + asyncio)
↗
10.
SQLAlchemy 2.0 | Создание асинхронной сессией, begin
↗
11.
SQLAlchemy 2.0 | Основы работы с асинхронной базой данных
↗
12.
SQLAlchemy 2.0 | SELECT-запросы. Часть 1
↗
13.
SQLAlchemy 2.0 | SELECT-запросы. Часть 2
↗
14.
Введение в Pydantic
↗
15.
FastAPI | Самый быстрый старт | Часть 1
↗
16.
FastAPI | Настроки launch.json
↗
17.
FastAPI | Самый быстрый старт | Часть 2
↗
18.
FastAPI | Зависимости
↗
19.
FastAPI | Настройка авторизации
↗
20.
Middleware (Промежуточный слой)
↗
21.
CORS (Cross-Origin Resource Sharing
↗
22.
FastAPI | APIRouter
↗
23.
FastAPI | Request Parameters — Параметры запроса
↗
24.
FastAPI | CRUD проект синхронный (SQLAlchemy + Alembic + isort)
↗
25.
FastAPI | Проект TaskPilot
↗
26.
FastAPI | Layered architecture — многоуровневая архитектура
↗
27.
FastAPI | Рефакторинг проекта и Создание модели пользователей
↗
28.
FastAPI | JWT, аутентификация и авторизация
↗
29.
FastAPI | Google OAuth2 авторизация
↗
30.
FastAPI | Яндекс OAuth2 авторизация
↗
31.
FastAPI | Вконтакте OAuth2 авторизация (в процессе)
↗
32.
FastAPI | Система прав пользователей
↗
33.
FastAPI | Подтверждение email после регистрации
↗
Продвинутые возможности фреймворка FastAPI
2 урока
1.
FastAPI | Lifespan — Events жизненный цикл приложения
↗
2.
Кастомные исключения и единый обработчик в FastAPI
↗
Python для FastAPI‑разработчика
6 уроков
1.
Введение
↗
2.
Модуль pathlib
↗
3.
Применение списков в FastAPI
↗
4.
Уникальные маркеры и скрытые свойства
↗
5.
Введение в корутины
↗
6.
Dataclasses и Функция asdict()
↗
Redis + FastAPI
1 урок
1.
Архитектура, структуры данных и практика
↗
Celery + FastAPI
6 уроков
1.
Введение в архитектуру, конфигурация и продакшен‑паттерны
↗
2.
Практика фоновых задач: FastAPI + Celery + RabbitMQ
↗
3.
Периодические задачи в Celery (Celery Beat)
↗
4.
Мониторинг и отладка Flower
↗
5.
Мониторинг и отладка RabbitMQ UI
↗
6.
Workers Guide
↗
TaskIQ + FastAPI
1 урок
1.
Введение
↗
RabbitMQ + Микросервисы на FastAPI
7 уроков
1.
Введение в микросервисы
↗
2.
Сравнение брокеров сообщений
↗
3.
RabbitMQ | Cоздание первого сервиса
↗
4.
RabbitMQ | Cоздание второго сервиса
↗
5.
RabbitMQ | aio-pika
↗
6.
RabbitMQ | Работа с брокером
↗
7.
RabbitMQ | Работа с базой данных
↗
Деплой | CI/CD | Работа на сервере | Практика
3 урока
1.
Практические этапы
↗
2.
Этап 1: Деплой FastAPI на VPS с Docker, Nginx и SSL
↗
3.
Этап 2: CI/CD — автоматический деплой в GitHub
↗
FastStream + FastAPI
1 урок
1.
Введение
↗
NATS и NATS JetStream + FastAPI
1 урок
1.
Введение
↗
JWT Auth (Безопасность)
1 урок
1.
Введение
↗
Самостоятельные проекты
2 урока
1.
Введение и мотивация
↗
2.
Техническое задание: ParkingFlow — система управления парковкой
↗
Проектирование систем и Clean Architecture на FastAPI
6 уроков
1.
Введение
↗
2.
Интерфейсы как «Контракт» в Чистой Архитектуре
↗
3.
Реализация паттерна Unit of Work в асинхронном FastAPI
↗
4.
Production-Ready Clean Architecture на FastAPI
↗
5.
Clean Architecture - Тестирование FastAPI-проекта
↗
6.
Анонс - Clean Architecture + DDD на FastAPI
↗
Тестирование (Pytest)
1 урок
1.
Введение
↗
Base Project
6 уроков
1.
Clean Architecture & DDD
↗
2.
Пирамида зависимостей в Clean Architecture
↗
3.
Domain Layer — бизнес-правила приложения
↗
4.
Application Layer (Use Cases) — Оркестрация бизнес-логики
↗
5.
Разбор Infrastructure Layer (Адаптеры)
↗
6.
Сборка воедино — Как HTTP-запрос оживляет всю архитектуру
↗
Dishka
16 уроков
1.
Проблема "ручного управления" зависимостями
↗
2.
Что такое DI и зачем нужен контейнер?
↗
3.
Почему Dishka? (Обзор возможностей)
↗
4.
Наш первый контейнер
↗
5.
Знакомство с Scope
↗
6.
Создание Provider. Два подхода
↗
7.
Финализация (очистка ресурсов)
↗
8.
Продвинутые техники работы с провайдерами
↗
9.
Массовая регистрация: provide_all
↗
10.
Работа с интерфейсами и абстракциями: alias и AnyOf
↗
11.
Композиция провайдеров
↗
12.
Интеграция с FastAPI (самый частый сценарий)
↗
13.
Асинхронность и Dishka
↗
14.
Компоненты (Components) — изоляция зависимостей
↗
15.
Тестирование с Dishka
↗
16.
Итоги модуля: Dishka как фундамент чистой архитектуры
↗
Финальный проект: Фотохостинг (Layered Architecture)
13 уроков
1.
UseCase — Сердце бизнес-логики
↗
2.
Описание проекта
↗
3.
Подготовка проекта
↗
4.
Backend: База данных (PostgreSQL)
↗
5.
Backend: Модуль auth
↗
6.
Backend: Модуль users
↗
7.
Backend: Модуль photos
↗
8.
Backend: Подключаем Yandex Object Storage
↗
9.
Реализуем модерацию изображений
↗
10.
Вводим ограничения и правила на бэкенде
↗
11.
Frontend: Реализуем на (Vue 3)
↗
12.
Готовим Docker и деплой
↗
13.
Пишем README
↗
ThreadPoolExecutor
14 уроков
1.
Многопоточность в Python | Lock, RLock и Condition
↗
2.
Введение в параллелизм в Python
↗
3.
Базовый интерфейс Executor
↗
4.
Что такое Future
↗
5.
Что такое пул потоков
↗
6.
Концепция и назначение ThreadPoolExecutor
↗
7.
Создание пула потоков. Метод submit
↗
8.
Работа с Future: result, exception, done
↗
9.
Метод map: параллельная обработка коллекций
↗
10.
Конструктор ThreadPoolExecutor: параметры и поведение
↗
11.
Жизненный цикл пула потоков. Метод shutdown
↗
12.
Обработка ошибок в ThreadPoolExecutor
↗
13.
Подводные камни: дедлоки
↗
14.
Практический пример: загрузка веб‑страниц
↗
Apache Kafka + FastAPI
13 уроков
1.
Kafka | Введение и архитектура
↗
2.
Kafka | Event-Driven архитектура событий, топиков и партиций
↗
3.
Kafka | Введение в Broker
↗
4.
Kafka | Запуск в Docker + работа с Python (aiokafka)
↗
5.
Kafka | Кластер в Docker: Конфигурация и запуск
↗
6.
Kafka | CLI и UI: управление топиками через терминал и интерфейс
↗
7.
Kafka | CLI — знакомство с параметрами консольных утилит
↗
8.
Kafka | Broker Configs
↗
9.
Kafka | Updating broker configs — Динамическое обновление
↗
10.
Kafka | Topic Configs
↗
11.
Kafka | Group Configs
↗
12.
Kafka | Producer Configs
↗
13.
Продолжение следует...
↗
Мини‑гайд по технологиям
2 урока
1.
Введение
↗
2.
MkDocs — статический генератор сайтов
↗
Сокеты, TCP и event loop: для тех, кто не понял. Плюс WebSocket
12 уроков
1.
Что такое сокет и как он работает
↗
2.
Неблокирующие сокеты и select
↗
3.
Первый event loop с select и мини‑ASGI‑сервер
↗
4.
Введение в корутины
↗
5.
Обработка ошибок и управление простоем сервера
↗
6.
Что такое коллбэк (функция обратного вызова)
↗
7.
Используем модуль selectors
↗
8.
Зачем нужны генераторы и yield from
↗
9.
Собираем всё вместе: асинхронный сервер
↗
10.
Как этот материал помогает в asyncio
↗
11.
Знакомство с WebSocket
↗
12.
Финальный проект: эхо-сервер
↗
Следующая тема ....
1 урок
1.
Давайте выберем тему вместе
↗
Планы развития курса
1 урок
1.
Что добавить
↗