Содержание курса
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. Начало работы с PyCharm
5 уроков
273
240
55м
33
Закрытый
9.1
Где писать код
↗
60
60
1м 23с
8
Закрытый
9.2
Установка PyCharm на Windows
↗
55
42
11м 48с
7
Закрытый
9.3
Установка PyCharm на Ubuntu
↗
52
40
20м 11с
7
Закрытый
9.4
Установка PyCharm на macOS
↗
49
45
15м 39с
4
Закрытый
9.5
Знакомство с PyCharm и первичная настройка
↗
57
53
8м 50с
7
10. Плагины
1 урок
58
55
7м
7
Закрытый
10.1
Ставим тему в PyCharm
↗
58
55
7м 50с
7
11. Обновление PyCharm
2 урока
0
0
11м
0
Закрытый
11.1
Обновляем PyCharm
↗
0
0
5м 23с
0
Закрытый
11.2
Проверяем новый PyCharm и ставим плагины
↗
0
0
5м 15с
0
12. Блок "Рабочее окружение"
1 урок
56
56
0м
3
Закрытый
12.1
О блоке "Рабочее окружение"
↗
56
56
0м 8с
3
13. Виртуальное окружение virtualenv
1 урок
56
56
0м
3
Закрытый
13.1
Знакомство с virtualenv
↗
56
56
0м 14с
3
14. Poetry
3 урока
166
155
29м
25
Закрытый
14.1
Установка Poetry
↗
58
57
4м 1с
9
Закрытый
14.2
Инициализация проекта и установка зависимостей
↗
55
52
10м 13с
7
Закрытый
14.3
Запуск скриптов в виртуальном окружении через Poetry
↗
53
46
15м 15с
9
15. uv
6 уроков
320
278
43м
43
Закрытый
15.1
Установка uv на *nix
↗
57
51
4м 55с
8
Закрытый
15.2
Установка uv на Windows
↗
51
46
2м 43с
5
Закрытый
15.3
uv vs pip и Poetry
↗
56
46
11м 39с
9
Закрытый
15.4
uv vs virtualenv
↗
52
52
1м 24с
7
Закрытый
15.5
uv vs pipx
↗
52
43
5м 25с
6
Закрытый
15.6
uv vs pyenv
↗
52
40
20м 37с
8
16. Установка и использование инструментов
3 урока
161
148
11м
21
Закрытый
16.1
Установка black через uv tool на Windows
↗
54
46
4м 51с
7
Закрытый
16.2
Использование black в терминале
↗
53
53
3м 13с
5
Закрытый
16.3
Автоформатирование black в PyCharm
↗
54
49
4м 43с
9
17. Блок "git"
1 урок
53
53
0м
4
Закрытый
17.1
О блоке "git"
↗
53
53
0м 9с
4
18. Контроль версий
3 урока
163
140
38м
25
Закрытый
18.1
Знакомство с git в PyCharm
↗
55
53
6м 21с
7
Закрытый
18.2
.gitignore
↗
55
53
7м 33с
9
Закрытый
18.3
git - Быстрый старт на Windows
↗
53
34
25м 26с
9
19. Удобное управление git
3 урока
153
138
15м
16
Закрытый
19.1
Знакомство с GitHub Desktop
↗
54
39
15м 9с
9
Закрытый
19.2
git в VS Code
↗
49
49
0м 4с
2
Закрытый
19.3
git в PyCharm
↗
50
50
0м 7с
5
20. Блок "FastAPI приложение коротких ссылок"
1 урок
55
55
0м
5
Закрытый
20.1
О блоке "FastAPI приложение коротких ссылок"
↗
55
55
0м 24с
5
21. FastAPI короткие ссылки REST API
18 уроков
809
660
741м
163
Закрытый
21.1
Старт FastAPI проекта коротких ссылок
↗
58
49
43м 37с
11
Закрытый
21.2
API представление
↗
57
46
27м 53с
11
Закрытый
21.3
Параметры пути, схемы, перенаправление, зависимости view
↗
53
45
82м 6с
11
Закрытый
21.4
Разделение и API Router
↗
52
40
39м 25с
9
Закрытый
21.5
Получение данных в форме
↗
46
35
45м 48с
9
Закрытый
21.6
Получение данных в JSON теле
↗
44
36
54м 16с
7
Закрытый
21.7
Хранение данных в памяти
↗
45
36
33м 27с
8
Закрытый
21.8
Удаление записи
↗
44
36
29м 19с
9
Закрытый
21.9
Нужно больше вложенных роутеров
↗
43
35
30м 1с
9
Закрытый
21.10
Обновление PUT
↗
40
35
42м 10с
9
Закрытый
21.11
Обновление PATCH
↗
41
35
22м 34с
8
Закрытый
21.12
Важность схемы ответа
↗
42
35
25м 40с
7
Закрытый
21.13
Хранение данных. Задание и решение
↗
42
36
122м 48с
11
Закрытый
21.14
Логирование событий
↗
42
34
35м 37с
8
Закрытый
21.15
Цикл жизни приложения
↗
42
33
35м 12с
8
Закрытый
21.16
BackgroundTasks - откладываем действия
↗
43
32
41м 46с
10
Закрытый
21.17
Зависимости на уровне роутера
↗
37
31
23м 28с
9
Закрытый
21.18
Проверка метода запроса
↗
38
31
14м 31с
9
22. FastAPI Auth
7 уроков
282
220
166м
72
Закрытый
22.1
Auth vs Auth
↗
44
38
5м 2с
14
Закрытый
22.2
Когда использовать Token Auth
↗
42
37
5м 43с
10
Закрытый
22.3
Токен в строке запроса
↗
42
30
50м 8с
11
Закрытый
22.4
Токен в заголовках запроса
↗
39
29
12м 19с
10
Закрытый
22.5
Единый вход в документации Swagger
↗
38
29
19м 1с
9
Закрытый
22.6
Basic Auth
↗
38
28
38м 9с
9
Закрытый
22.7
Выбор метода входа
↗
39
29
37м 3с
9
23. Знакомство с Docker Desktop
5 уроков
186
166
45м
37
Закрытый
23.1
Контейнеризация и Docker
↗
37
33
8м 56с
8
Закрытый
23.2
Установка Docker Desktop на Windows + WSL
↗
37
34
8м 59с
8
Закрытый
23.3
Установка Docker Desktop на Ubuntu
↗
37
32
13м 2с
8
Закрытый
23.4
Установка Docker Desktop на macOS
↗
35
30
5м 24с
6
Закрытый
23.5
Запуск контейнеров в терминале
↗
40
37
11м 8с
7
24. Знакомство с Redis
3 урока
114
100
25м
26
Закрытый
24.1
Что такое Redis
↗
39
35
10м 18с
8
Закрытый
24.2
Запуск Redis и первое знакомство
↗
38
32
11м 18с
10
Закрытый
24.3
Базы данных в Redis
↗
37
33
3м 24с
8
25. Хранение данных приложения в Redis
12 уроков
390
309
335м
94
Закрытый
25.1
Подключение Python приложения к Redis
↗
40
28
17м 19с
8
Закрытый
25.2
Хранение токенов в Redis
↗
38
29
30м 23с
8
Закрытый
25.3
Обертка над Redis для работы с токенами
↗
36
28
27м 21с
9
Закрытый
25.4
Хранение пользователей в Redis
↗
36
25
72м 3с
11
Закрытый
25.5
Сохранение коротких ссылок в Redis
↗
31
25
39м 32с
10
Закрытый
25.6
Получение короткой ссылки из Redis
↗
30
25
23м 58с
7
Закрытый
25.7
Получение коротких ссылок из Redis
↗
30
25
21м 8с
8
Закрытый
25.8
Обновление короткой ссылки в Redis
↗
30
25
48м 22с
7
Закрытый
25.9
Удаление короткой ссылки из Redis
↗
28
25
8м 10с
4
Закрытый
25.10
Уборка. Избавляемся от лишнего кода
↗
31
25
11м 51с
6
Закрытый
25.11
Проверка наличия короткой ссылки перед записью
↗
30
25
16м 24с
7
Закрытый
25.12
Реализация в CRUD проверки наличия короткой ссылки
↗
30
24
22м 42с
9
26. Команды в терминале
5 уроков
144
109
204м
29
Закрытый
26.1
Свои команды в терминале
↗
36
25
30м 27с
8
Закрытый
26.2
Команда для проверки токена
↗
31
22
12м 31с
7
Закрытый
26.3
Команда для отображения токенов
↗
29
24
66м 55с
7
Закрытый
26.4
Команды для управления токенами
↗
29
21
92м 50с
6
Закрытый
26.5
Запуск manage скрипта на Windows
↗
19
17
4м 28с
1
27. Принуждение к типизации
5 уроков
158
138
58м
34
Закрытый
27.1
Почему нам важно строго соблюдать типы
↗
33
24
7м 39с
8
Закрытый
27.2
Знакомство с mypy
↗
32
31
10м 6с
8
Закрытый
27.3
Согласование кода с mypy
↗
31
30
17м 24с
7
Закрытый
27.4
Строгий mypy
↗
30
26
19м 19с
7
Закрытый
27.5
mypy и Pydantic
↗
32
27
4м 26с
4
28. Соблюдение код-стиля
5 уроков
537
274
54м
31
Закрытый
28.1
Зачем соблюдать код-стиль
↗
29
29
1м 48с
5
Закрытый
28.2
Знакомство с ruff
↗
30
29
19м 40с
6
Закрытый
28.3
Автоматическое причесывание импортов
↗
30
30
5м 59с
7
Закрытый
28.4
Подключение новых правил
↗
30
28
15м 15с
7
Открытый
28.5
Принуждение к соблюдению код-стиля
↗
418
158
15м 40с
6
29. Тестирование на unittest
12 уроков
400
297
516м
73
Закрытый
29.1
Введение в тестирование
↗
32
26
7м 10с
7
Закрытый
29.2
Организация файлов тестирования
↗
31
25
8м 21с
5
Закрытый
29.3
Первый тест на unittest
↗
29
26
11м 0с
7
Закрытый
29.4
Проверка совместимости схем
↗
30
19
154м 37с
6
Закрытый
29.5
Группировка идентичных проверок
↗
30
22
177м 15с
5
Закрытый
29.6
Ожидание исключений
↗
30
22
35м 8с
7
Открытый
29.7
Переменные окружения на Windows в разных оболочках
↗
84
49
7м 40с
7
Закрытый
29.8
Тестовое окружение
↗
28
22
25м 5с
4
Закрытый
29.9
Проверка работы с хранилищем
↗
28
22
10м 9с
6
Закрытый
29.10
Другие способы валидации
↗
27
24
3м 1с
7
Закрытый
29.11
Предварительная настройка до теста и уборка за собой
↗
26
20
48м 9с
6
Закрытый
29.12
Предварительная настройка до всех тестов и уборка за собой
↗
25
20
30м 24с
6
30. Проверка покрытия
6 уроков
157
144
52м
30
Закрытый
30.1
Зачем проверять покрытие
↗
29
27
2м 10с
7
Закрытый
30.2
Проверка покрытия в PyCharm
↗
26
26
11м 16с
5
Закрытый
30.3
Знакомство с coverage
↗
26
23
8м 31с
4
Закрытый
30.4
Отчёты о покрытии
↗
25
23
5м 53с
5
Закрытый
30.5
Генерация отчётов
↗
26
23
6м 4с
5
Закрытый
30.6
Настройки coverage
↗
25
22
20м 58с
4
31. Тестирование на pytest
24 урока
580
527
332м
106
Закрытый
31.1
Почему нам недостаточно unittest
↗
30
24
6м 8с
5
Закрытый
31.2
Знакомство с pytest
↗
27
24
9м 23с
5
Закрытый
31.3
Первый тест на pytest
↗
25
24
5м 10с
6
Закрытый
31.4
Группа тестов на pytest
↗
25
24
5м 23с
4
Закрытый
31.5
Принудительное завершение pytest
↗
25
24
4м 14с
4
Закрытый
31.6
Знакомство с conftest
↗
26
24
6м 59с
6
Закрытый
31.7
Перенос представления в отдельный модуль
↗
26
24
5м 0с
5
Закрытый
31.8
Первый API тест FastAPI приложения
↗
25
24
18м 24с
3
Закрытый
31.9
Параметризация в pytest
↗
26
23
7м 11с
5
Закрытый
31.10
Ожидание исключений на pytest
↗
25
25
12м 47с
5
Закрытый
31.11
Фикстуры в pytest
↗
26
24
7м 51с
6
Закрытый
31.12
Фикстура убирает за собой
↗
25
24
7м 49с
6
Закрытый
31.13
Общие фикстуры в conftest
↗
25
24
10м 4с
3
Закрытый
31.14
Вложенные фикстуры, частота создания фикстур, api тесты
↗
25
23
29м 6с
8
Закрытый
31.15
Параметризация фикстур в pytest
↗
24
23
34м 34с
6
Закрытый
31.16
Косвенная и частичная параметризация фикстур
↗
24
18
71м 58с
5
Закрытый
31.17
Автоматическое применение фикстур в pytest
↗
21
21
8м 28с
6
Закрытый
31.18
Плагин pytest-cov
↗
21
15
14м 57с
3
Закрытый
31.19
Настройки pytest
↗
22
21
15м 56с
4
Закрытый
31.20
Метки pytest
↗
20
19
11м 29с
2
Закрытый
31.21
Ожидаемая ошибка - метка xfail
↗
20
18
17м 52с
2
Закрытый
31.22
Пропуск теста - skip и skipif
↗
21
19
16м 43с
2
Закрытый
31.23
Отчёт pytest по результатам - флаги r
↗
22
19
7м 53с
2
Закрытый
31.24
Фикстура caplog
↗
24
19
7м 16с
3
32. Знакомство с GitHub Actions
12 уроков
245
176
188м
46
Закрытый
32.1
Что такое CI
↗
26
20
7м 54с
4
Закрытый
32.2
Знакомство с GitHub Actions
↗
23
19
20м 48с
4
Закрытый
32.3
Контекст текущего запуска
↗
21
15
11м 56с
5
Закрытый
32.4
События и условия для действий
↗
19
14
23м 53с
4
Закрытый
32.5
Установка Python и запуск black в Github Actions
↗
20
14
28м 18с
4
Закрытый
32.6
Доступ PyCharm к GitHub для чтения Actions
↗
20
14
10м 10с
3
Закрытый
32.7
Обновляем и фиксируем версию uv
↗
21
14
10м 42с
3
Закрытый
32.8
Установка uv зависимостей в GitHub Actions
↗
19
14
12м 43с
4
Закрытый
32.9
Запуск mypy в GitHub Actions
↗
18
14
11м 18с
4
Закрытый
32.10
Запуск ruff в GitHub Actions
↗
20
13
21м 25с
4
Закрытый
32.11
Запуск pre-commit в GitHub Actions
↗
18
13
15м 3с
4
Закрытый
32.12
Бейджи по результатам CI
↗
20
12
20м 19с
3
33. Автотесты и проверка покрытия в GitHub Actions
10 уроков
184
119
228м
22
Закрытый
33.1
Обязательный успех для запуска следующей джобы в GitHub Action
↗
19
13
8м 10с
3
Закрытый
33.2
Запуск тестов в GitHub Actions
↗
18
12
7м 28с
3
Закрытый
33.3
Запуск контейнеров в GitHub Actions
↗
18
12
10м 11с
3
Закрытый
33.4
GitHub CLI
↗
18
12
5м 43с
2
Закрытый
33.5
Локальный запуск CI через act
↗
18
12
16м 18с
3
Закрытый
33.6
Секреты в локальном act
↗
17
11
8м 56с
2
Закрытый
33.7
Интерактивные отчёты о покрытии в GitHub
↗
21
11
56м 8с
2
Закрытый
33.8
Важность проверки покрытия
↗
21
12
24м 25с
1
Закрытый
33.9
Кастомный бейдж своими силами
↗
16
11
45м 4с
1
Закрытый
33.10
Артефакты по результатам CI
↗
18
13
48м 34с
2
34. Конфигурация приложения
7 уроков
143
98
173м
20
Закрытый
34.1
Знакомство с pydantic-settings
↗
23
14
26м 4с
3
Закрытый
34.2
Настройки настроек
↗
20
13
14м 11с
4
Закрытый
34.3
.env файл
↗
21
15
8м 56с
3
Закрытый
34.4
Несколько .env файлов
↗
20
14
6м 13с
3
Закрытый
34.5
Переменные окружения
↗
20
14
90м 43с
2
Закрытый
34.6
YAML файлы
↗
19
14
21м 47с
4
Закрытый
34.7
Кэшированный объект настроек
↗
20
14
8м 53с
1
35. FastAPI шаблоны HTML страниц
8 уроков
109
82
79м
8
Закрытый
35.1
Главная страница HTML
↗
18
11
8м 18с
1
Закрытый
35.2
Отображение представления в документации
↗
13
10
3м 24с
1
Закрытый
35.3
Шаблон главной страницы
↗
12
10
22м 2с
1
Закрытый
35.4
Базовый шаблон страницы
↗
12
10
10м 51с
1
Закрытый
35.5
Навигационная панель
↗
15
10
7м 8с
1
Закрытый
35.6
Стандартный контекст шаблона
↗
13
10
11м 37с
1
Закрытый
35.7
Страница о проекте
↗
13
11
5м 26с
1
Закрытый
35.8
Активная ссылка
↗
13
10
12м 58с
1
36. Наводим порядок перед большой работой
5 уроков
64
53
82м
7
Закрытый
36.1
Обновление тестов
↗
13
11
55м 17с
2
Закрытый
36.2
Расположение кода хранилища
↗
13
11
7м 53с
1
Закрытый
36.3
Организация HTML представлений
↗
13
11
8м 50с
3
Закрытый
36.4
Хранилище через зависимость
↗
13
10
5м 16с
0
Закрытый
36.5
Глобальный экземпляр хранилища
↗
12
10
6м 16с
1
37. Отображение коротких ссылок
4 урока
48
35
23м
3
Закрытый
37.1
Раздел коротких ссылок
↗
12
8
8м 7с
1
Закрытый
37.2
Пустой список коротких ссылок
↗
11
9
3м 33с
1
Закрытый
37.3
Список всех коротких ссылок
↗
12
9
10м 47с
1
Закрытый
37.4
Переход на целевой сайт
↗
13
9
3м 48с
0
38. Создание короткой ссылки
9 уроков
111
86
103м
5
Закрытый
38.1
Представления для создания новой короткой ссылки и Pydantic форм
↗
13
9
14м 21с
1
Закрытый
38.2
HTML форма создания новой короткой ссылки
↗
12
9
22м 55с
0
Закрытый
38.3
Макросы в Jinja
↗
13
10
11м 36с
1
Закрытый
38.4
Кнопки навигации
↗
13
10
6м 40с
1
Закрытый
38.5
Создание короткой ссылки через форму
↗
12
10
5м 17с
1
Закрытый
38.6
Обработка ошибки при создании
↗
12
10
18м 7с
0
Закрытый
38.7
Обработка ошибок валидации формы
↗
13
10
15м 52с
1
Закрытый
38.8
Аутентификация при создании
↗
12
9
9м 47с
0
Закрытый
38.9
Проверка кода и исправление ошибок
↗
11
9
3м 7с
0
39. Обновление короткой ссылки
7 уроков
81
70
111м
0
Закрытый
39.1
Рефакторинг ответа с формой
↗
12
10
16м 47с
0
Закрытый
39.2
Рефакторинг HTML формы
↗
12
9
12м 36с
0
Закрытый
39.3
Переход к редактированию короткой ссылки
↗
12
10
13м 26с
0
Закрытый
39.4
Страница редактирования короткой ссылки
↗
11
10
14м 10с
0
Закрытый
39.5
Проброс текущей короткой ссылки
↗
11
10
18м 11с
0
Закрытый
39.6
Обновление короткой ссылки
↗
12
11
29м 35с
0
Закрытый
39.7
Обработка ошибок при обновлении
↗
11
10
9м 59с
0
40. Удаление короткой ссылки
5 уроков
63
50
60м
0
Закрытый
40.1
Модальное окно
↗
14
11
17м 57с
0
Закрытый
40.2
Представление для удаления короткой ссылки
↗
12
10
14м 48с
0
Закрытый
40.3
Форма для удаления короткой ссылки
↗
11
10
3м 28с
0
Закрытый
40.4
Удаление короткой ссылки из хранилища
↗
13
11
5м 53с
0
Закрытый
40.5
Внезапный HTMX
↗
13
8
21м 11с
0
41. Сессия пользователя
3 урока
39
28
37м
0
Закрытый
41.1
Что такое сессия
↗
13
9
4м 50с
0
Закрытый
41.2
Starlette SessionMiddleware
↗
14
9
20м 13с
0
Закрытый
41.3
flash сообщения о создании
↗
12
10
13м 56с
0
42. Блок "Основы Frontend"
1 урок
22
22
1м
0
Закрытый
42.1
О блоке "Основы Frontend"
↗
22
22
1м 24с
0
43. HTML
6 уроков
118
79
95м
7
Закрытый
43.1
Что такое HTML
↗
23
14
8м 21с
4
Закрытый
43.2
Первая HTML страница
↗
21
14
14м 36с
1
Закрытый
43.3
Популярные теги
↗
18
12
28м 26с
1
Закрытый
43.4
Формы
↗
18
13
17м 40с
1
Закрытый
43.5
Стандартные поля ввода
↗
18
13
24м 49с
0
Закрытый
43.6
Правила хорошего тона
↗
20
13
5м 32с
0
44. CSS
4 урока
74
51
40м
2
Закрытый
44.1
Знакомство с CSS
↗
18
13
6м 43с
1
Закрытый
44.2
Стиль элемента
↗
20
12
7м 52с
1
Закрытый
44.3
Базовые стили элементов страницы
↗
18
13
16м 38с
0
Закрытый
44.4
Стили и классы
↗
18
13
12м 45с
0
45. JavaScript
6 уроков
115
70
45м
6
Закрытый
45.1
Зачем нужен JS
↗
23
17
3м 37с
2
Закрытый
45.2
Первые строки на JS
↗
20
11
7м 51с
1
Закрытый
45.3
Взаимодействие с компонентами
↗
21
12
18м 5с
2
Закрытый
45.4
Обновление части элемента
↗
16
11
7м 5с
1
Закрытый
45.5
Простая обработка событий
↗
17
10
7м 48с
0
Закрытый
45.6
Слушатели событий
↗
18
9
4м 37с
0
46. Готовые наборы CSS - Bootstrap
6 уроков
94
61
102м
7
Закрытый
46.1
Готовые наборы CSS - зачем нужны и какие бывают
↗
17
11
11м 10с
2
Закрытый
46.2
Знакомство с Bootstrap
↗
15
10
7м 56с
1
Закрытый
46.3
Система именования в Bootstrap
↗
15
10
18м 40с
1
Закрытый
46.4
Подключение Bootstrap CSS
↗
15
10
20м 21с
1
Закрытый
46.5
Сетка страницы
↗
15
10
31м 43с
1
Закрытый
46.6
Панель навигации
↗
17
10
16м 36с
1
47. Сторонний JS
5 уроков
78
46
46м
6
Закрытый
47.1
Использование стороннего JS
↗
15
10
8м 13с
1
Закрытый
47.2
Подключение Bootstrap JS
↗
15
10
7м 23с
1
Закрытый
47.3
Тултипы и поповеры
↗
18
8
13м 27с
2
Закрытый
47.4
Фильтр на JS
↗
14
9
12м 4с
1
Закрытый
47.5
Что если нет JS
↗
16
9
5м 9с
1
48. Публикация статичного сайта
3 урока
55
30
12м
3
Закрытый
48.1
Выбор хостинга
↗
21
16
4м 18с
1
Закрытый
48.2
Загрузка в репозиторий
↗
17
8
3м 18с
1
Закрытый
48.3
Запуск на GitHub Pages
↗
17
6
5м 35с
1
49. Блок "SQL"
1 урок
17
17
1м
0
Закрытый
49.1
О блоке "SQL"
↗
17
17
1м 47с
0
50. Знакомство с SQL
8 уроков
139
121
68м
5
Закрытый
50.1
Что такое базы данных
↗
18
16
7м 16с
1
Закрытый
50.2
Что такое SQL
↗
18
15
8м 24с
1
Закрытый
50.3
SQLite
↗
18
15
5м 56с
1
Закрытый
50.4
Запросы и сортировка
↗
20
18
16м 57с
2
Закрытый
50.5
Фильтрация
↗
17
15
10м 57с
0
Закрытый
50.6
Вставка
↗
16
15
9м 37с
0
Закрытый
50.7
Обновление
↗
15
13
9м 17с
0
Закрытый
50.8
Удаление
↗
17
14
3м 6с
0
51. Проектирование таблицы
8 уроков
130
111
61м
0
Закрытый
51.1
Описание таблицы товаров
↗
16
14
10м 56с
0
Закрытый
51.2
Схема таблицы товаров
↗
16
14
8м 12с
0
Закрытый
51.3
Тип первичного ключа
↗
16
13
18м 17с
0
Закрытый
51.4
Создание и удаление таблиц
↗
16
13
5м 3с
0
Закрытый
51.5
Создание таблицы товаров
↗
15
14
6м 36с
0
Закрытый
51.6
Описание таблицы клиентов
↗
16
13
7м 37с
0
Закрытый
51.7
Схема таблицы клиентов
↗
17
15
4м 13с
0
Закрытый
51.8
Создание таблицы клиентов
↗
18
15
3м 8с
0
52. Запуск Postgres и первое подключение
3 урока
51
46
11м
0
Закрытый
52.1
Запуск PostgreSQL в Docker
↗
19
16
4м 11с
0
Закрытый
52.2
Подключение через DBeaver
↗
16
15
3м 5с
0
Закрытый
52.3
Новая схема
↗
16
15
4м 4с
0
53. Обновление таблицы
5 уроков
76
67
25м
0
Закрытый
53.1
Доработка описания таблицы товаров
↗
17
15
5м 56с
0
Закрытый
53.2
Доработка схемы таблицы товаров
↗
16
14
4м 35с
0
Закрытый
53.3
Модификация таблицы товаров
↗
16
14
12м 51с
0
Закрытый
53.4
Доработка описания и схемы таблицы клиентов
↗
14
13
2м 4с
0
Закрытый
53.5
Модификация таблицы клиентов
↗
13
11
2м 17с
0
54. Ограничения - Constraints
11 уроков
145
126
81м
0
Закрытый
54.1
Описание нового ограничения в таблице
↗
16
12
3м 45с
0
Закрытый
54.2
Ограничение целого числа по значению
↗
13
12
5м 0с
0
Закрытый
54.3
Описание ограничения даты
↗
13
12
3м 36с
0
Закрытый
54.4
Ограничение даты
↗
14
12
10м 12с
0
Закрытый
54.5
Выбор типа строки и почему не нужен VARCHAR
↗
13
12
4м 51с
0
Закрытый
54.6
Переезд в новую колонку и ограничение текста по длине
↗
13
11
23м 52с
0
Закрытый
54.7
Описание ограничения текста по значению
↗
13
11
3м 44с
0
Закрытый
54.8
Ограничение TEXT по значению
↗
13
11
6м 21с
0
Закрытый
54.9
Колонка статуса клиента
↗
13
11
3м 56с
0
Закрытый
54.10
IDENTITY vs SERIAL
↗
13
11
6м 19с
0
Закрытый
54.11
Отказ от SERIAL в пользу IDENTITY
↗
11
11
16м 53с
0
55. Перечисление ENUM
7 уроков
81
75
48м
0
Закрытый
55.1
Enum vs CHECK IN
↗
13
12
9м 18с
0
Закрытый
55.2
Миграция в enum
↗
12
11
8м 38с
0
Закрытый
55.3
Таблица обращений пользователей
↗
11
10
6м 50с
0
Закрытый
55.4
Сортировка и фильтрация по приоритету Enum
↗
12
10
4м 10с
0
Закрытый
55.5
Строгий тип Enum
↗
11
10
12м 5с
0
Закрытый
55.6
Добавление значений в Enum
↗
11
11
4м 52с
0
Закрытый
55.7
Изменение опций в Enum
↗
11
11
5м 13с
0
56. Группировки и агрегатные функции
7 уроков
70
63
40м
0
Закрытый
56.1
Зачем нужны агрегатные функции
↗
13
11
2м 58с
0
Закрытый
56.2
Группировки
↗
11
10
12м 8с
0
Закрытый
56.3
COUNT
↗
11
9
8м 24с
0
Закрытый
56.4
SUM
↗
10
9
3м 28с
0
Закрытый
56.5
MAX
↗
9
8
6м 23с
0
Закрытый
56.6
MIN
↗
8
8
3м 44с
0
Закрытый
56.7
AVG
↗
8
8
5м 8с
0
57. RETURNING
5 уроков
51
43
31м
0
Закрытый
57.1
RETURNING при создании
↗
10
9
7м 59с
0
Закрытый
57.2
RETURNING при обновлении
↗
11
9
4м 28с
0
Закрытый
57.3
RETURNING при удалении
↗
9
9
1м 28с
0
Закрытый
57.4
Бекап базы Postgres и раскатка на новой версии
↗
11
8
15м 55с
0
Закрытый
57.5
RETURNING OLD AND NEW
↗
10
8
4м 32с
0
58. Функции в Postgres
12 уроков
125
105
55м
0
Закрытый
58.1
Простая функция в Postgres
↗
13
11
5м 59с
0
Закрытый
58.2
Обновление функции
↗
10
10
3м 55с
0
Закрытый
58.3
Возврат числа
↗
10
9
1м 19с
0
Закрытый
58.4
Возврат числа
↗
9
9
6м 14с
0
Закрытый
58.5
Ветвление
↗
9
9
4м 28с
0
Закрытый
58.6
Новые переменные внутри функций
↗
10
9
2м 15с
0
Закрытый
58.7
Запросы внутри функции
↗
10
8
3м 37с
0
Закрытый
58.8
Входные параметры IN
↗
10
8
2м 52с
0
Закрытый
58.9
Выходные параметры OUT
↗
8
8
4м 46с
0
Закрытый
58.10
Входные-выходные параметры INOUT
↗
8
8
4м 40с
0
Открытый
58.11
UUID версии 7
↗
16
8
13м 26с
0
Открытый
58.12
Первичный ключ UUIDv7
↗
12
8
8м 37с
0
59. Триггеры в Postgres
6 уроков
55
50
49м
0
Закрытый
59.1
Что такое триггер
↗
11
11
2м 7с
0
Закрытый
59.2
Триггер создания для автоматических логов событий
↗
9
8
12м 16с
0
Закрытый
59.3
Триггер обновления для автоматической истории изменений
↗
9
9
11м 27с
0
Закрытый
59.4
На каждую строку или на каждое выражение
↗
8
8
11м 59с
0
Закрытый
59.5
Автоматическое поле updated_at
↗
9
7
7м 28с
0
Закрытый
59.6
Правило для обновления updated_at
↗
9
7
5м 47с
0
60. Внешний ключ
9 уроков
65
59
60м
0
Закрытый
60.1
Зачем нужен внешний ключ
↗
10
8
8м 3с
0
Закрытый
60.2
Схема таблицы картинок товаров
↗
8
8
11м 51с
0
Закрытый
60.3
Внешний ключ и гарантия целостности
↗
8
6
12м 6с
0
Закрытый
60.4
Все товары с картинками - INNER JOIN
↗
8
7
5м 9с
0
Закрытый
60.5
Все-все товары и их картинки - LEFT JOIN
↗
6
6
2м 46с
0
Закрытый
60.6
Все картинки и их товары - RIGHT JOIN
↗
7
6
5м 48с
0
Закрытый
60.7
Все товары и все картинки
↗
6
6
2м 54с
0
Закрытый
60.8
Каскадное удаление
↗
6
6
5м 7с
0
Закрытый
60.9
ON DELETE SET NULL
↗
6
6
10м 25с
0
61. Отношение один-к-одному
5 уроков
31
30
26м
0
Закрытый
61.1
Зачем нужно отношение один к одному
↗
7
7
5м 21с
0
Закрытый
61.2
Описание таблицы профиля автора
↗
6
6
4м 18с
0
Закрытый
61.3
Схема таблицы профиля автора
↗
6
6
2м 55с
0
Закрытый
61.4
Таблица профиля автора
↗
6
6
10м 44с
0
Закрытый
61.5
Первичный ключ и внешний ключ в таблице 1к1
↗
6
5
5м 7с
0
62. Отношение многие-ко-многим
6 уроков
34
29
29м
0
Закрытый
62.1
Что за многие и к каким многим
↗
7
6
11м 23с
0
Закрытый
62.2
Описание таблиц для связи многие ко многим
↗
6
4
3м 3с
0
Закрытый
62.3
Схема связи многие ко многим
↗
5
5
2м 55с
0
Закрытый
62.4
Таблица тегов
↗
6
5
1м 38с
0
Закрытый
62.5
Таблица тегов статей
↗
5
4
2м 58с
0
Закрытый
62.6
Связь статей и тегов
↗
5
5
10м 51с
0
63. Индексы
13 уроков
9
7
86м
0
Закрытый
63.1
Описание таблицы пользователей
↗
2
1
4м 15с
0
Закрытый
63.2
Схема таблицы пользователей
↗
1
1
2м 52с
0
Закрытый
63.3
Серия данных
↗
1
1
3м 43с
0
Закрытый
63.4
Условия в запросе
↗
1
1
5м 39с
0
Закрытый
63.5
Таблица пользователей и данные
↗
1
1
11м 47с
0
Закрытый
63.6
Поиск по тысячам записей и анализ запроса
↗
1
1
8м 27с
0
Закрытый
63.7
Новый индекс
↗
1
1
4м 35с
0
Закрытый
63.8
Сбалансированное дерево поиска
↗
1
0
3м 19с
0
Закрытый
63.9
Неявный индекс - уникальное поле
↗
0
0
3м 51с
0
Закрытый
63.10
Составной индекс
↗
0
0
13м 24с
0
Закрытый
63.11
Индекс по выражению
↗
0
0
11м 33с
0
Закрытый
63.12
Частичный индекс
↗
0
0
9м 41с
0
Закрытый
63.13
Поиск по тексту на основе триграмм
↗
0
0
11м 20с
0
64. JSONB
6 уроков
21
15
84м
0
Закрытый
64.1
JSON и JSONB в Postgres
↗
7
3
16м 42с
0
Закрытый
64.2
Работа с JSONB в Postgres
↗
3
3
28м 16с
0
Закрытый
64.3
Сложная фильтрация по JSONB
↗
4
3
15м 0с
0
Закрытый
64.4
Обновление JSONB поля
↗
3
2
5м 29с
0
Закрытый
64.5
GIN индекс на JSONB поле
↗
2
2
12м 45с
0
Закрытый
64.6
Уникальный индекс JSONB поля
↗
2
2
7м 24с
0
65. 16 - Внешний ключ вместо перечисления
3 урока
6
4
19м
0
Закрытый
65.1
Категории товаров
↗
2
1
7м 34с
0
Закрытый
65.2
Внешний ключ на категорию
↗
2
1
7м 42с
0
Закрытый
65.3
Индекс на внешний ключ
↗
2
2
5м 17с
0
66. THIS IS a new module name
2 урока
0
0
0м
0
Закрытый
66.1
This is first lesson in the module
↗
0
0
-
0
Закрытый
66.2
This is SECOND lesson in the module
↗
0
0
-
0