Содержание курса
1. Введение
2 урока
156
156
2м
20
Закрытый
1.1
Знакомство
↗
80
80
2м 12с
10
Закрытый
1.2
Чат
↗
76
76
0м 12с
10
2. Групповые встречи
7 уроков
251
217
353м
17
Закрытый
2.1
Про встречи
↗
67
67
0м 12с
4
Закрытый
2.2
Встреча №0 - 20 апреля 2025
↗
69
51
36м 54с
6
Закрытый
2.3
Встреча №1 - 17 мая 2025
↗
32
28
49м 13с
2
Закрытый
2.4
Встреча №2 - 21 июня 2025
↗
27
22
61м 0с
1
Закрытый
2.5
Встреча №3 - 20 июля 2025
↗
22
20
69м 6с
3
Закрытый
2.6
Встреча №4 - 07 сентября 2025
↗
21
17
79м 32с
1
Закрытый
2.7
Встреча №5 - 12 октября 2025
↗
13
12
59м 2с
0
3. Блок "Работа на локальном компьютере"
1 урок
71
71
0м
4
Закрытый
3.1
О блоке "Работа на локальном компьютере"
↗
71
71
0м 16с
4
4. Терминал
6 уроков
325
293
23м
40
Закрытый
4.1
Windows CMD
↗
67
61
1м 27с
7
Закрытый
4.2
PowerShell
↗
64
61
3м 48с
10
Закрытый
4.3
WSL - Ubuntu на Windows
↗
63
46
13м 34с
10
Закрытый
4.4
zsh
↗
64
64
0м 13с
7
Закрытый
4.5
Настройка шрифтов в oh-my-posh
↗
34
28
4м 36с
3
Закрытый
4.6
Настройка шрифта в терминале PyCharm на Windows
↗
33
33
2м 24с
3
5. Установка Python
6 уроков
350
270
46м
38
Закрытый
5.1
Зачем запускать Python локально
↗
67
52
5м 41с
8
Закрытый
5.2
Установка Scoop на Windows
↗
61
34
7м 9с
7
Закрытый
5.3
Установка Python на Windows
↗
57
49
9м 52с
7
Закрытый
5.4
Установка Python на Ubuntu или Debian Linux
↗
57
46
9м 9с
6
Закрытый
5.5
Установка brew на macOS
↗
54
44
6м 0с
5
Закрытый
5.6
Установка Python на macOS
↗
54
45
10м 54с
5
6. REPL
2 урока
124
123
1м
10
Закрытый
6.1
REPL
↗
62
61
1м 31с
5
Закрытый
6.2
Нижнее подчеркивание
↗
62
62
0м 15с
5
7. Установка pipx
4 урока
216
179
28м
29
Закрытый
7.1
Зачем нужен pipx
↗
63
44
9м 22с
11
Закрытый
7.2
Установка pipx на Windows
↗
51
46
7м 48с
7
Закрытый
7.3
Установка pipx на Ubuntu Linux
↗
52
46
7м 5с
7
Закрытый
7.4
Установка pipx на macOS
↗
50
43
5м 4с
4
8. Блок "PyCharm"
1 урок
58
58
0м
5
Закрытый
8.1
О блоке "PyCharm"
↗
58
58
0м 8с
5
9. Обновление Python
1 урок
1
0
4м
0
Закрытый
9.1
Обновление Python на Windows через pyenv
↗
1
0
4м 29с
0
10. Начало работы с PyCharm
5 уроков
273
240
55м
33
Закрытый
10.1
Где писать код
↗
60
60
1м 23с
8
Закрытый
10.2
Установка PyCharm на Windows
↗
55
42
11м 48с
7
Закрытый
10.3
Установка PyCharm на Ubuntu
↗
52
40
20м 11с
7
Закрытый
10.4
Установка PyCharm на macOS
↗
49
45
15м 39с
4
Закрытый
10.5
Знакомство с PyCharm и первичная настройка
↗
57
53
8м 50с
7
11. Плагины
1 урок
58
55
7м
7
Закрытый
11.1
Ставим тему в PyCharm
↗
58
55
7м 50с
7
12. Блок "Рабочее окружение"
1 урок
56
56
0м
3
Закрытый
12.1
О блоке "Рабочее окружение"
↗
56
56
0м 8с
3
13. Обновление PyCharm
2 урока
0
0
11м
0
Закрытый
13.1
Обновляем PyCharm
↗
0
0
5м 23с
0
Закрытый
13.2
Проверяем новый PyCharm и ставим плагины
↗
0
0
5м 15с
0
14. Виртуальное окружение virtualenv
1 урок
56
56
0м
3
Закрытый
14.1
Знакомство с virtualenv
↗
56
56
0м 14с
3
15. Poetry
3 урока
166
155
29м
25
Закрытый
15.1
Установка Poetry
↗
58
57
4м 1с
9
Закрытый
15.2
Инициализация проекта и установка зависимостей
↗
55
52
10м 13с
7
Закрытый
15.3
Запуск скриптов в виртуальном окружении через Poetry
↗
53
46
15м 15с
9
16. uv
6 уроков
320
278
43м
43
Закрытый
16.1
Установка uv на *nix
↗
57
51
4м 55с
8
Закрытый
16.2
Установка uv на Windows
↗
51
46
2м 43с
5
Закрытый
16.3
uv vs pip и Poetry
↗
56
46
11м 39с
9
Закрытый
16.4
uv vs virtualenv
↗
52
52
1м 24с
7
Закрытый
16.5
uv vs pipx
↗
52
43
5м 25с
6
Закрытый
16.6
uv vs pyenv
↗
52
40
20м 37с
8
17. Установка и использование инструментов
3 урока
161
148
11м
21
Закрытый
17.1
Установка black через uv tool на Windows
↗
54
46
4м 51с
7
Закрытый
17.2
Использование black в терминале
↗
53
53
3м 13с
5
Закрытый
17.3
Автоформатирование black в PyCharm
↗
54
49
4м 43с
9
18. Блок "git"
1 урок
53
53
0м
4
Закрытый
18.1
О блоке "git"
↗
53
53
0м 9с
4
19. Контроль версий
3 урока
163
140
38м
25
Закрытый
19.1
Знакомство с git в PyCharm
↗
55
53
6м 21с
7
Закрытый
19.2
.gitignore
↗
55
53
7м 33с
9
Закрытый
19.3
git - Быстрый старт на Windows
↗
53
34
25м 26с
9
20. Удобное управление git
3 урока
153
138
15м
16
Закрытый
20.1
Знакомство с GitHub Desktop
↗
54
39
15м 9с
9
Закрытый
20.2
git в VS Code
↗
49
49
0м 4с
2
Закрытый
20.3
git в PyCharm
↗
50
50
0м 7с
5
21. Блок "FastAPI приложение коротких ссылок"
1 урок
55
55
0м
5
Закрытый
21.1
О блоке "FastAPI приложение коротких ссылок"
↗
55
55
0м 24с
5
22. FastAPI короткие ссылки REST API
18 уроков
809
660
741м
163
Закрытый
22.1
Старт FastAPI проекта коротких ссылок
↗
58
49
43м 37с
11
Закрытый
22.2
API представление
↗
57
46
27м 53с
11
Закрытый
22.3
Параметры пути, схемы, перенаправление, зависимости view
↗
53
45
82м 6с
11
Закрытый
22.4
Разделение и API Router
↗
52
40
39м 25с
9
Закрытый
22.5
Получение данных в форме
↗
46
35
45м 48с
9
Закрытый
22.6
Получение данных в JSON теле
↗
44
36
54м 16с
7
Закрытый
22.7
Хранение данных в памяти
↗
45
36
33м 27с
8
Закрытый
22.8
Удаление записи
↗
44
36
29м 19с
9
Закрытый
22.9
Нужно больше вложенных роутеров
↗
43
35
30м 1с
9
Закрытый
22.10
Обновление PUT
↗
40
35
42м 10с
9
Закрытый
22.11
Обновление PATCH
↗
41
35
22м 34с
8
Закрытый
22.12
Важность схемы ответа
↗
42
35
25м 40с
7
Закрытый
22.13
Хранение данных. Задание и решение
↗
42
36
122м 48с
11
Закрытый
22.14
Логирование событий
↗
42
34
35м 37с
8
Закрытый
22.15
Цикл жизни приложения
↗
42
33
35м 12с
8
Закрытый
22.16
BackgroundTasks - откладываем действия
↗
43
32
41м 46с
10
Закрытый
22.17
Зависимости на уровне роутера
↗
37
31
23м 28с
9
Закрытый
22.18
Проверка метода запроса
↗
38
31
14м 31с
9
23. FastAPI Auth
7 уроков
282
220
166м
72
Закрытый
23.1
Auth vs Auth
↗
44
38
5м 2с
14
Закрытый
23.2
Когда использовать Token Auth
↗
42
37
5м 43с
10
Закрытый
23.3
Токен в строке запроса
↗
42
30
50м 8с
11
Закрытый
23.4
Токен в заголовках запроса
↗
39
29
12м 19с
10
Закрытый
23.5
Единый вход в документации Swagger
↗
38
29
19м 1с
9
Закрытый
23.6
Basic Auth
↗
38
28
38м 9с
9
Закрытый
23.7
Выбор метода входа
↗
39
29
37м 3с
9
24. Знакомство с Docker Desktop
5 уроков
186
166
45м
37
Закрытый
24.1
Контейнеризация и Docker
↗
37
33
8м 56с
8
Закрытый
24.2
Установка Docker Desktop на Windows + WSL
↗
37
34
8м 59с
8
Закрытый
24.3
Установка Docker Desktop на Ubuntu
↗
37
32
13м 2с
8
Закрытый
24.4
Установка Docker Desktop на macOS
↗
35
30
5м 24с
6
Закрытый
24.5
Запуск контейнеров в терминале
↗
40
37
11м 8с
7
25. Знакомство с Redis
3 урока
114
100
25м
26
Закрытый
25.1
Что такое Redis
↗
39
35
10м 18с
8
Закрытый
25.2
Запуск Redis и первое знакомство
↗
38
32
11м 18с
10
Закрытый
25.3
Базы данных в Redis
↗
37
33
3м 24с
8
26. Хранение данных приложения в Redis
12 уроков
390
309
335м
94
Закрытый
26.1
Подключение Python приложения к Redis
↗
40
28
17м 19с
8
Закрытый
26.2
Хранение токенов в Redis
↗
38
29
30м 23с
8
Закрытый
26.3
Обертка над Redis для работы с токенами
↗
36
28
27м 21с
9
Закрытый
26.4
Хранение пользователей в Redis
↗
36
25
72м 3с
11
Закрытый
26.5
Сохранение коротких ссылок в Redis
↗
31
25
39м 32с
10
Закрытый
26.6
Получение короткой ссылки из Redis
↗
30
25
23м 58с
7
Закрытый
26.7
Получение коротких ссылок из Redis
↗
30
25
21м 8с
8
Закрытый
26.8
Обновление короткой ссылки в Redis
↗
30
25
48м 22с
7
Закрытый
26.9
Удаление короткой ссылки из Redis
↗
28
25
8м 10с
4
Закрытый
26.10
Уборка. Избавляемся от лишнего кода
↗
31
25
11м 51с
6
Закрытый
26.11
Проверка наличия короткой ссылки перед записью
↗
30
25
16м 24с
7
Закрытый
26.12
Реализация в CRUD проверки наличия короткой ссылки
↗
30
24
22м 42с
9
27. Команды в терминале
5 уроков
144
109
204м
29
Закрытый
27.1
Свои команды в терминале
↗
36
25
30м 27с
8
Закрытый
27.2
Команда для проверки токена
↗
31
22
12м 31с
7
Закрытый
27.3
Команда для отображения токенов
↗
29
24
66м 55с
7
Закрытый
27.4
Команды для управления токенами
↗
29
21
92м 50с
6
Закрытый
27.5
Запуск manage скрипта на Windows
↗
19
17
4м 28с
1
28. Принуждение к типизации
5 уроков
158
138
58м
34
Закрытый
28.1
Почему нам важно строго соблюдать типы
↗
33
24
7м 39с
8
Закрытый
28.2
Знакомство с mypy
↗
32
31
10м 6с
8
Закрытый
28.3
Согласование кода с mypy
↗
31
30
17м 24с
7
Закрытый
28.4
Строгий mypy
↗
30
26
19м 19с
7
Закрытый
28.5
mypy и Pydantic
↗
32
27
4м 26с
4
29. Соблюдение код-стиля
5 уроков
537
274
54м
31
Закрытый
29.1
Зачем соблюдать код-стиль
↗
29
29
1м 48с
5
Закрытый
29.2
Знакомство с ruff
↗
30
29
19м 40с
6
Закрытый
29.3
Автоматическое причесывание импортов
↗
30
30
5м 59с
7
Закрытый
29.4
Подключение новых правил
↗
30
28
15м 15с
7
Открытый
29.5
Принуждение к соблюдению код-стиля
↗
418
158
15м 40с
6
30. Тестирование на unittest
12 уроков
400
297
516м
73
Закрытый
30.1
Введение в тестирование
↗
32
26
7м 10с
7
Закрытый
30.2
Организация файлов тестирования
↗
31
25
8м 21с
5
Закрытый
30.3
Первый тест на unittest
↗
29
26
11м 0с
7
Закрытый
30.4
Проверка совместимости схем
↗
30
19
154м 37с
6
Закрытый
30.5
Группировка идентичных проверок
↗
30
22
177м 15с
5
Закрытый
30.6
Ожидание исключений
↗
30
22
35м 8с
7
Открытый
30.7
Переменные окружения на Windows в разных оболочках
↗
84
49
7м 40с
7
Закрытый
30.8
Тестовое окружение
↗
28
22
25м 5с
4
Закрытый
30.9
Проверка работы с хранилищем
↗
28
22
10м 9с
6
Закрытый
30.10
Другие способы валидации
↗
27
24
3м 1с
7
Закрытый
30.11
Предварительная настройка до теста и уборка за собой
↗
26
20
48м 9с
6
Закрытый
30.12
Предварительная настройка до всех тестов и уборка за собой
↗
25
20
30м 24с
6
31. Проверка покрытия
6 уроков
157
144
52м
30
Закрытый
31.1
Зачем проверять покрытие
↗
29
27
2м 10с
7
Закрытый
31.2
Проверка покрытия в PyCharm
↗
26
26
11м 16с
5
Закрытый
31.3
Знакомство с coverage
↗
26
23
8м 31с
4
Закрытый
31.4
Отчёты о покрытии
↗
25
23
5м 53с
5
Закрытый
31.5
Генерация отчётов
↗
26
23
6м 4с
5
Закрытый
31.6
Настройки coverage
↗
25
22
20м 58с
4
32. Тестирование на pytest
24 урока
580
527
332м
106
Закрытый
32.1
Почему нам недостаточно unittest
↗
30
24
6м 8с
5
Закрытый
32.2
Знакомство с pytest
↗
27
24
9м 23с
5
Закрытый
32.3
Первый тест на pytest
↗
25
24
5м 10с
6
Закрытый
32.4
Группа тестов на pytest
↗
25
24
5м 23с
4
Закрытый
32.5
Принудительное завершение pytest
↗
25
24
4м 14с
4
Закрытый
32.6
Знакомство с conftest
↗
26
24
6м 59с
6
Закрытый
32.7
Перенос представления в отдельный модуль
↗
26
24
5м 0с
5
Закрытый
32.8
Первый API тест FastAPI приложения
↗
25
24
18м 24с
3
Закрытый
32.9
Параметризация в pytest
↗
26
23
7м 11с
5
Закрытый
32.10
Ожидание исключений на pytest
↗
25
25
12м 47с
5
Закрытый
32.11
Фикстуры в pytest
↗
26
24
7м 51с
6
Закрытый
32.12
Фикстура убирает за собой
↗
25
24
7м 49с
6
Закрытый
32.13
Общие фикстуры в conftest
↗
25
24
10м 4с
3
Закрытый
32.14
Вложенные фикстуры, частота создания фикстур, api тесты
↗
25
23
29м 6с
8
Закрытый
32.15
Параметризация фикстур в pytest
↗
24
23
34м 34с
6
Закрытый
32.16
Косвенная и частичная параметризация фикстур
↗
24
18
71м 58с
5
Закрытый
32.17
Автоматическое применение фикстур в pytest
↗
21
21
8м 28с
6
Закрытый
32.18
Плагин pytest-cov
↗
21
15
14м 57с
3
Закрытый
32.19
Настройки pytest
↗
22
21
15м 56с
4
Закрытый
32.20
Метки pytest
↗
20
19
11м 29с
2
Закрытый
32.21
Ожидаемая ошибка - метка xfail
↗
20
18
17м 52с
2
Закрытый
32.22
Пропуск теста - skip и skipif
↗
21
19
16м 43с
2
Закрытый
32.23
Отчёт pytest по результатам - флаги r
↗
22
19
7м 53с
2
Закрытый
32.24
Фикстура caplog
↗
24
19
7м 16с
3
33. Знакомство с GitHub Actions
12 уроков
245
176
188м
46
Закрытый
33.1
Что такое CI
↗
26
20
7м 54с
4
Закрытый
33.2
Знакомство с GitHub Actions
↗
23
19
20м 48с
4
Закрытый
33.3
Контекст текущего запуска
↗
21
15
11м 56с
5
Закрытый
33.4
События и условия для действий
↗
19
14
23м 53с
4
Закрытый
33.5
Установка Python и запуск black в Github Actions
↗
20
14
28м 18с
4
Закрытый
33.6
Доступ PyCharm к GitHub для чтения Actions
↗
20
14
10м 10с
3
Закрытый
33.7
Обновляем и фиксируем версию uv
↗
21
14
10м 42с
3
Закрытый
33.8
Установка uv зависимостей в GitHub Actions
↗
19
14
12м 43с
4
Закрытый
33.9
Запуск mypy в GitHub Actions
↗
18
14
11м 18с
4
Закрытый
33.10
Запуск ruff в GitHub Actions
↗
20
13
21м 25с
4
Закрытый
33.11
Запуск pre-commit в GitHub Actions
↗
18
13
15м 3с
4
Закрытый
33.12
Бейджи по результатам CI
↗
20
12
20м 19с
3
34. Автотесты и проверка покрытия в GitHub Actions
10 уроков
184
119
228м
22
Закрытый
34.1
Обязательный успех для запуска следующей джобы в GitHub Action
↗
19
13
8м 10с
3
Закрытый
34.2
Запуск тестов в GitHub Actions
↗
18
12
7м 28с
3
Закрытый
34.3
Запуск контейнеров в GitHub Actions
↗
18
12
10м 11с
3
Закрытый
34.4
GitHub CLI
↗
18
12
5м 43с
2
Закрытый
34.5
Локальный запуск CI через act
↗
18
12
16м 18с
3
Закрытый
34.6
Секреты в локальном act
↗
17
11
8м 56с
2
Закрытый
34.7
Интерактивные отчёты о покрытии в GitHub
↗
21
11
56м 8с
2
Закрытый
34.8
Важность проверки покрытия
↗
21
12
24м 25с
1
Закрытый
34.9
Кастомный бейдж своими силами
↗
16
11
45м 4с
1
Закрытый
34.10
Артефакты по результатам CI
↗
18
13
48м 34с
2
35. Конфигурация приложения
7 уроков
143
98
173м
20
Закрытый
35.1
Знакомство с pydantic-settings
↗
23
14
26м 4с
3
Закрытый
35.2
Настройки настроек
↗
20
13
14м 11с
4
Закрытый
35.3
.env файл
↗
21
15
8м 56с
3
Закрытый
35.4
Несколько .env файлов
↗
20
14
6м 13с
3
Закрытый
35.5
Переменные окружения
↗
20
14
90м 43с
2
Закрытый
35.6
YAML файлы
↗
19
14
21м 47с
4
Закрытый
35.7
Кэшированный объект настроек
↗
20
14
8м 53с
1
36. FastAPI шаблоны HTML страниц
8 уроков
109
82
79м
8
Закрытый
36.1
Главная страница HTML
↗
18
11
8м 18с
1
Закрытый
36.2
Отображение представления в документации
↗
13
10
3м 24с
1
Закрытый
36.3
Шаблон главной страницы
↗
12
10
22м 2с
1
Закрытый
36.4
Базовый шаблон страницы
↗
12
10
10м 51с
1
Закрытый
36.5
Навигационная панель
↗
15
10
7м 8с
1
Закрытый
36.6
Стандартный контекст шаблона
↗
13
10
11м 37с
1
Закрытый
36.7
Страница о проекте
↗
13
11
5м 26с
1
Закрытый
36.8
Активная ссылка
↗
13
10
12м 58с
1
37. Наводим порядок перед большой работой
5 уроков
64
53
82м
7
Закрытый
37.1
Обновление тестов
↗
13
11
55м 17с
2
Закрытый
37.2
Расположение кода хранилища
↗
13
11
7м 53с
1
Закрытый
37.3
Организация HTML представлений
↗
13
11
8м 50с
3
Закрытый
37.4
Хранилище через зависимость
↗
13
10
5м 16с
0
Закрытый
37.5
Глобальный экземпляр хранилища
↗
12
10
6м 16с
1
38. Отображение коротких ссылок
4 урока
48
35
23м
3
Закрытый
38.1
Раздел коротких ссылок
↗
12
8
8м 7с
1
Закрытый
38.2
Пустой список коротких ссылок
↗
11
9
3м 33с
1
Закрытый
38.3
Список всех коротких ссылок
↗
12
9
10м 47с
1
Закрытый
38.4
Переход на целевой сайт
↗
13
9
3м 48с
0
39. Создание короткой ссылки
9 уроков
111
86
103м
5
Закрытый
39.1
Представления для создания новой короткой ссылки и Pydantic форм
↗
13
9
14м 21с
1
Закрытый
39.2
HTML форма создания новой короткой ссылки
↗
12
9
22м 55с
0
Закрытый
39.3
Макросы в Jinja
↗
13
10
11м 36с
1
Закрытый
39.4
Кнопки навигации
↗
13
10
6м 40с
1
Закрытый
39.5
Создание короткой ссылки через форму
↗
12
10
5м 17с
1
Закрытый
39.6
Обработка ошибки при создании
↗
12
10
18м 7с
0
Закрытый
39.7
Обработка ошибок валидации формы
↗
13
10
15м 52с
1
Закрытый
39.8
Аутентификация при создании
↗
12
9
9м 47с
0
Закрытый
39.9
Проверка кода и исправление ошибок
↗
11
9
3м 7с
0
40. Обновление короткой ссылки
7 уроков
81
70
111м
0
Закрытый
40.1
Рефакторинг ответа с формой
↗
12
10
16м 47с
0
Закрытый
40.2
Рефакторинг HTML формы
↗
12
9
12м 36с
0
Закрытый
40.3
Переход к редактированию короткой ссылки
↗
12
10
13м 26с
0
Закрытый
40.4
Страница редактирования короткой ссылки
↗
11
10
14м 10с
0
Закрытый
40.5
Проброс текущей короткой ссылки
↗
11
10
18м 11с
0
Закрытый
40.6
Обновление короткой ссылки
↗
12
11
29м 35с
0
Закрытый
40.7
Обработка ошибок при обновлении
↗
11
10
9м 59с
0
41. Удаление короткой ссылки
5 уроков
63
50
60м
0
Закрытый
41.1
Модальное окно
↗
14
11
17м 57с
0
Закрытый
41.2
Представление для удаления короткой ссылки
↗
12
10
14м 48с
0
Закрытый
41.3
Форма для удаления короткой ссылки
↗
11
10
3м 28с
0
Закрытый
41.4
Удаление короткой ссылки из хранилища
↗
13
11
5м 53с
0
Закрытый
41.5
Внезапный HTMX
↗
13
8
21м 11с
0
42. Сессия пользователя
3 урока
39
28
37м
0
Закрытый
42.1
Что такое сессия
↗
13
9
4м 50с
0
Закрытый
42.2
Starlette SessionMiddleware
↗
14
9
20м 13с
0
Закрытый
42.3
flash сообщения о создании
↗
12
10
13м 56с
0
43. Блок "Основы Frontend"
1 урок
22
22
1м
0
Закрытый
43.1
О блоке "Основы Frontend"
↗
22
22
1м 24с
0
44. HTML
6 уроков
118
79
95м
7
Закрытый
44.1
Что такое HTML
↗
23
14
8м 21с
4
Закрытый
44.2
Первая HTML страница
↗
21
14
14м 36с
1
Закрытый
44.3
Популярные теги
↗
18
12
28м 26с
1
Закрытый
44.4
Формы
↗
18
13
17м 40с
1
Закрытый
44.5
Стандартные поля ввода
↗
18
13
24м 49с
0
Закрытый
44.6
Правила хорошего тона
↗
20
13
5м 32с
0
45. CSS
4 урока
74
51
40м
2
Закрытый
45.1
Знакомство с CSS
↗
18
13
6м 43с
1
Закрытый
45.2
Стиль элемента
↗
20
12
7м 52с
1
Закрытый
45.3
Базовые стили элементов страницы
↗
18
13
16м 38с
0
Закрытый
45.4
Стили и классы
↗
18
13
12м 45с
0
46. JavaScript
6 уроков
115
70
45м
6
Закрытый
46.1
Зачем нужен JS
↗
23
17
3м 37с
2
Закрытый
46.2
Первые строки на JS
↗
20
11
7м 51с
1
Закрытый
46.3
Взаимодействие с компонентами
↗
21
12
18м 5с
2
Закрытый
46.4
Обновление части элемента
↗
16
11
7м 5с
1
Закрытый
46.5
Простая обработка событий
↗
17
10
7м 48с
0
Закрытый
46.6
Слушатели событий
↗
18
9
4м 37с
0
47. Готовые наборы CSS - Bootstrap
6 уроков
94
61
102м
7
Закрытый
47.1
Готовые наборы CSS - зачем нужны и какие бывают
↗
17
11
11м 10с
2
Закрытый
47.2
Знакомство с Bootstrap
↗
15
10
7м 56с
1
Закрытый
47.3
Система именования в Bootstrap
↗
15
10
18м 40с
1
Закрытый
47.4
Подключение Bootstrap CSS
↗
15
10
20м 21с
1
Закрытый
47.5
Сетка страницы
↗
15
10
31м 43с
1
Закрытый
47.6
Панель навигации
↗
17
10
16м 36с
1
48. Сторонний JS
5 уроков
78
46
46м
6
Закрытый
48.1
Использование стороннего JS
↗
15
10
8м 13с
1
Закрытый
48.2
Подключение Bootstrap JS
↗
15
10
7м 23с
1
Закрытый
48.3
Тултипы и поповеры
↗
18
8
13м 27с
2
Закрытый
48.4
Фильтр на JS
↗
14
9
12м 4с
1
Закрытый
48.5
Что если нет JS
↗
16
9
5м 9с
1
49. Публикация статичного сайта
3 урока
55
30
12м
3
Закрытый
49.1
Выбор хостинга
↗
21
16
4м 18с
1
Закрытый
49.2
Загрузка в репозиторий
↗
17
8
3м 18с
1
Закрытый
49.3
Запуск на GitHub Pages
↗
17
6
5м 35с
1
50. Блок "SQL"
1 урок
17
17
1м
0
Закрытый
50.1
О блоке "SQL"
↗
17
17
1м 47с
0
51. Знакомство с SQL
8 уроков
139
121
68м
5
Закрытый
51.1
Что такое базы данных
↗
18
16
7м 16с
1
Закрытый
51.2
Что такое SQL
↗
18
15
8м 24с
1
Закрытый
51.3
SQLite
↗
18
15
5м 56с
1
Закрытый
51.4
Запросы и сортировка
↗
20
18
16м 57с
2
Закрытый
51.5
Фильтрация
↗
17
15
10м 57с
0
Закрытый
51.6
Вставка
↗
16
15
9м 37с
0
Закрытый
51.7
Обновление
↗
15
13
9м 17с
0
Закрытый
51.8
Удаление
↗
17
14
3м 6с
0
52. Проектирование таблицы
8 уроков
130
111
61м
0
Закрытый
52.1
Описание таблицы товаров
↗
16
14
10м 56с
0
Закрытый
52.2
Схема таблицы товаров
↗
16
14
8м 12с
0
Закрытый
52.3
Тип первичного ключа
↗
16
13
18м 17с
0
Закрытый
52.4
Создание и удаление таблиц
↗
16
13
5м 3с
0
Закрытый
52.5
Создание таблицы товаров
↗
15
14
6м 36с
0
Закрытый
52.6
Описание таблицы клиентов
↗
16
13
7м 37с
0
Закрытый
52.7
Схема таблицы клиентов
↗
17
15
4м 13с
0
Закрытый
52.8
Создание таблицы клиентов
↗
18
15
3м 8с
0
53. Запуск Postgres и первое подключение
3 урока
51
46
11м
0
Закрытый
53.1
Запуск PostgreSQL в Docker
↗
19
16
4м 11с
0
Закрытый
53.2
Подключение через DBeaver
↗
16
15
3м 5с
0
Закрытый
53.3
Новая схема
↗
16
15
4м 4с
0
54. Обновление таблицы
5 уроков
76
67
25м
0
Закрытый
54.1
Доработка описания таблицы товаров
↗
17
15
5м 56с
0
Закрытый
54.2
Доработка схемы таблицы товаров
↗
16
14
4м 35с
0
Закрытый
54.3
Модификация таблицы товаров
↗
16
14
12м 51с
0
Закрытый
54.4
Доработка описания и схемы таблицы клиентов
↗
14
13
2м 4с
0
Закрытый
54.5
Модификация таблицы клиентов
↗
13
11
2м 17с
0
55. Ограничения - Constraints
11 уроков
145
126
81м
0
Закрытый
55.1
Описание нового ограничения в таблице
↗
16
12
3м 45с
0
Закрытый
55.2
Ограничение целого числа по значению
↗
13
12
5м 0с
0
Закрытый
55.3
Описание ограничения даты
↗
13
12
3м 36с
0
Закрытый
55.4
Ограничение даты
↗
14
12
10м 12с
0
Закрытый
55.5
Выбор типа строки и почему не нужен VARCHAR
↗
13
12
4м 51с
0
Закрытый
55.6
Переезд в новую колонку и ограничение текста по длине
↗
13
11
23м 52с
0
Закрытый
55.7
Описание ограничения текста по значению
↗
13
11
3м 44с
0
Закрытый
55.8
Ограничение TEXT по значению
↗
13
11
6м 21с
0
Закрытый
55.9
Колонка статуса клиента
↗
13
11
3м 56с
0
Закрытый
55.10
IDENTITY vs SERIAL
↗
13
11
6м 19с
0
Закрытый
55.11
Отказ от SERIAL в пользу IDENTITY
↗
11
11
16м 53с
0
56. Перечисление ENUM
7 уроков
81
75
48м
0
Закрытый
56.1
Enum vs CHECK IN
↗
13
12
9м 18с
0
Закрытый
56.2
Миграция в enum
↗
12
11
8м 38с
0
Закрытый
56.3
Таблица обращений пользователей
↗
11
10
6м 50с
0
Закрытый
56.4
Сортировка и фильтрация по приоритету Enum
↗
12
10
4м 10с
0
Закрытый
56.5
Строгий тип Enum
↗
11
10
12м 5с
0
Закрытый
56.6
Добавление значений в Enum
↗
11
11
4м 52с
0
Закрытый
56.7
Изменение опций в Enum
↗
11
11
5м 13с
0
57. Группировки и агрегатные функции
7 уроков
70
63
40м
0
Закрытый
57.1
Зачем нужны агрегатные функции
↗
13
11
2м 58с
0
Закрытый
57.2
Группировки
↗
11
10
12м 8с
0
Закрытый
57.3
COUNT
↗
11
9
8м 24с
0
Закрытый
57.4
SUM
↗
10
9
3м 28с
0
Закрытый
57.5
MAX
↗
9
8
6м 23с
0
Закрытый
57.6
MIN
↗
8
8
3м 44с
0
Закрытый
57.7
AVG
↗
8
8
5м 8с
0
58. RETURNING
5 уроков
51
43
31м
0
Закрытый
58.1
RETURNING при создании
↗
10
9
7м 59с
0
Закрытый
58.2
RETURNING при обновлении
↗
11
9
4м 28с
0
Закрытый
58.3
RETURNING при удалении
↗
9
9
1м 28с
0
Закрытый
58.4
Бекап базы Postgres и раскатка на новой версии
↗
11
8
15м 55с
0
Закрытый
58.5
RETURNING OLD AND NEW
↗
10
8
4м 32с
0
59. Функции в Postgres
12 уроков
125
105
55м
0
Закрытый
59.1
Простая функция в Postgres
↗
13
11
5м 59с
0
Закрытый
59.2
Обновление функции
↗
10
10
3м 55с
0
Закрытый
59.3
Возврат числа
↗
10
9
1м 19с
0
Закрытый
59.4
Возврат числа
↗
9
9
6м 14с
0
Закрытый
59.5
Ветвление
↗
9
9
4м 28с
0
Закрытый
59.6
Новые переменные внутри функций
↗
10
9
2м 15с
0
Закрытый
59.7
Запросы внутри функции
↗
10
8
3м 37с
0
Закрытый
59.8
Входные параметры IN
↗
10
8
2м 52с
0
Закрытый
59.9
Выходные параметры OUT
↗
8
8
4м 46с
0
Закрытый
59.10
Входные-выходные параметры INOUT
↗
8
8
4м 40с
0
Открытый
59.11
UUID версии 7
↗
16
8
13м 26с
0
Открытый
59.12
Первичный ключ UUIDv7
↗
12
8
8м 37с
0
60. Триггеры в Postgres
6 уроков
55
50
49м
0
Закрытый
60.1
Что такое триггер
↗
11
11
2м 7с
0
Закрытый
60.2
Триггер создания для автоматических логов событий
↗
9
8
12м 16с
0
Закрытый
60.3
Триггер обновления для автоматической истории изменений
↗
9
9
11м 27с
0
Закрытый
60.4
На каждую строку или на каждое выражение
↗
8
8
11м 59с
0
Закрытый
60.5
Автоматическое поле updated_at
↗
9
7
7м 28с
0
Закрытый
60.6
Правило для обновления updated_at
↗
9
7
5м 47с
0
61. Внешний ключ
9 уроков
65
59
60м
0
Закрытый
61.1
Зачем нужен внешний ключ
↗
10
8
8м 3с
0
Закрытый
61.2
Схема таблицы картинок товаров
↗
8
8
11м 51с
0
Закрытый
61.3
Внешний ключ и гарантия целостности
↗
8
6
12м 6с
0
Закрытый
61.4
Все товары с картинками - INNER JOIN
↗
8
7
5м 9с
0
Закрытый
61.5
Все-все товары и их картинки - LEFT JOIN
↗
6
6
2м 46с
0
Закрытый
61.6
Все картинки и их товары - RIGHT JOIN
↗
7
6
5м 48с
0
Закрытый
61.7
Все товары и все картинки
↗
6
6
2м 54с
0
Закрытый
61.8
Каскадное удаление
↗
6
6
5м 7с
0
Закрытый
61.9
ON DELETE SET NULL
↗
6
6
10м 25с
0
62. Отношение один-к-одному
5 уроков
31
30
26м
0
Закрытый
62.1
Зачем нужно отношение один к одному
↗
7
7
5м 21с
0
Закрытый
62.2
Описание таблицы профиля автора
↗
6
6
4м 18с
0
Закрытый
62.3
Схема таблицы профиля автора
↗
6
6
2м 55с
0
Закрытый
62.4
Таблица профиля автора
↗
6
6
10м 44с
0
Закрытый
62.5
Первичный ключ и внешний ключ в таблице 1к1
↗
6
5
5м 7с
0
63. Отношение многие-ко-многим
6 уроков
34
29
29м
0
Закрытый
63.1
Что за многие и к каким многим
↗
7
6
11м 23с
0
Закрытый
63.2
Описание таблиц для связи многие ко многим
↗
6
4
3м 3с
0
Закрытый
63.3
Схема связи многие ко многим
↗
5
5
2м 55с
0
Закрытый
63.4
Таблица тегов
↗
6
5
1м 38с
0
Закрытый
63.5
Таблица тегов статей
↗
5
4
2м 58с
0
Закрытый
63.6
Связь статей и тегов
↗
5
5
10м 51с
0
64. Индексы
13 уроков
9
7
86м
0
Закрытый
64.1
Описание таблицы пользователей
↗
2
1
4м 15с
0
Закрытый
64.2
Схема таблицы пользователей
↗
1
1
2м 52с
0
Закрытый
64.3
Серия данных
↗
1
1
3м 43с
0
Закрытый
64.4
Условия в запросе
↗
1
1
5м 39с
0
Закрытый
64.5
Таблица пользователей и данные
↗
1
1
11м 47с
0
Закрытый
64.6
Поиск по тысячам записей и анализ запроса
↗
1
1
8м 27с
0
Закрытый
64.7
Новый индекс
↗
1
1
4м 35с
0
Закрытый
64.8
Сбалансированное дерево поиска
↗
1
0
3м 19с
0
Закрытый
64.9
Неявный индекс - уникальное поле
↗
0
0
3м 51с
0
Закрытый
64.10
Составной индекс
↗
0
0
13м 24с
0
Закрытый
64.11
Индекс по выражению
↗
0
0
11м 33с
0
Закрытый
64.12
Частичный индекс
↗
0
0
9м 41с
0
Закрытый
64.13
Поиск по тексту на основе триграмм
↗
0
0
11м 20с
0
65. JSONB
6 уроков
21
15
84м
0
Закрытый
65.1
JSON и JSONB в Postgres
↗
7
3
16м 42с
0
Закрытый
65.2
Работа с JSONB в Postgres
↗
3
3
28м 16с
0
Закрытый
65.3
Сложная фильтрация по JSONB
↗
4
3
15м 0с
0
Закрытый
65.4
Обновление JSONB поля
↗
3
2
5м 29с
0
Закрытый
65.5
GIN индекс на JSONB поле
↗
2
2
12м 45с
0
Закрытый
65.6
Уникальный индекс JSONB поля
↗
2
2
7м 24с
0
66. 16 - Внешний ключ вместо перечисления
3 урока
6
4
19м
0
Закрытый
66.1
Категории товаров
↗
2
1
7м 34с
0
Закрытый
66.2
Внешний ключ на категорию
↗
2
1
7м 42с
0
Закрытый
66.3
Индекс на внешний ключ
↗
2
2
5м 17с
0
67. THIS IS a new module name
2 урока
0
0
0м
0
Закрытый
67.1
This is first lesson in the module
↗
0
0
-
0
Закрытый
67.2
This is SECOND lesson in the module
↗
0
0
-
0
68. Блок "Интеграция Python с базами данных"
1 урок
4
4
0м
0
Закрытый
68.1
О блоке "Интеграция Python с базами данных"
↗
4
4
-
0
69. Python и SQLite
9 уроков
32
21
93м
0
Закрытый
69.1
Подключение к SQLite в Python
↗
5
5
17м 5с
0
Закрытый
69.2
Создание таблицы и вставка значений
↗
8
5
21м 39с
0
Закрытый
69.3
Доступ к данным в строке по имени колонки
↗
5
3
8м 36с
0
Закрытый
69.4
Параметризованные запросы
↗
4
3
16м 24с
0
Закрытый
69.5
Параметризованные запросы через словарь
↗
3
3
9м 46с
0
Закрытый
69.6
Обновление данных
↗
2
1
12м 46с
0
Закрытый
69.7
Удаление данных
↗
2
0
5м 13с
0
Закрытый
69.8
Python SQLite CLI
↗
0
0
2м 21с
0
Закрытый
69.9
SQLite в памяти
↗
3
1
3м 48с
0
70. Python и Postgres
6 уроков
15
11
128м
0
Закрытый
70.1
Подключение к Postgres в Python
↗
3
2
16м 33с
0
Закрытый
70.2
Создание таблицы и вставка записей из Python в Postgres
↗
2
2
15м 48с
0
Закрытый
70.3
Чтение данных и фабрики строк
↗
2
2
16м 58с
0
Закрытый
70.4
Обновление и удаление срок в Postgres на Python
↗
1
1
14м 2с
0
Закрытый
70.5
Форматирование запросов
↗
3
2
23м 16с
0
Закрытый
70.6
template strings в Python 3.14 и psycopg
↗
4
2
44м 53с
0