Содержание курса
1. Первые шаги
1 урок
68
56
5м
0
Закрытый
1.1
Старт
↗
68
56
5м 46с
0
2. Настройка окружения
4 урока
202
190
21м
0
Закрытый
2.1
VS Code: установка и первые шаги
↗
56
48
3м 59с
0
Закрытый
2.2
Установка
↗
48
48
2м 54с
0
Закрытый
2.3
Hello GO
↗
50
46
5м 16с
0
Закрытый
2.4
Донастройка VS Code
↗
48
48
11м 31с
0
3. Базовые типы и переменные
11 уроков
408
385
134м
0
Закрытый
3.1
Структура Go-проекта: пакеты, модули и организация кода
↗
45
38
23м 40с
0
Закрытый
3.2
Организация кода. Точка входа
↗
38
37
2м 3с
0
Закрытый
3.3
Типы данных в Go: система числовых типов
↗
37
37
9м 20с
0
Закрытый
3.4
Основа базовых типов данных в Go: bool, string, float
↗
37
37
9м 18с
0
Закрытый
3.5
Объявление переменных и форматированный вывод в Go
↗
37
31
24м 37с
0
Закрытый
3.6
Анатомия переменной: память, адреса и размеры в Go
↗
37
36
18м 59с
0
Закрытый
3.7
Правила именования идентификаторов
↗
36
36
7м 34с
0
Закрытый
3.8
Экспорт идентификаторов и соглашения об аббревиатурах
↗
37
36
7м 49с
0
Закрытый
3.9
Комментарии: однострочные, многострочные и документирование
↗
36
35
12м 43с
0
Закрытый
3.10
Статическая типизация и краткое объявление переменных
↗
35
29
17м 1с
0
Закрытый
3.11
Нулевые значения (Zero Values)
↗
33
33
7м 54с
0
4. Выражения и константы
7 уроков
220
217
114м
0
Закрытый
4.1
Арифметические операции
↗
33
31
11м 20с
0
Закрытый
4.2
Операторы инкремента/декремента и присваивания
↗
31
31
12м 10с
0
Закрытый
4.3
Побитовые операции
↗
32
31
18м 44с
0
Закрытый
4.4
Пакет fmt: форматированный вывод
↗
31
31
21м 46с
0
Закрытый
4.5
Продвинутое форматирование
↗
31
31
15м 10с
0
Закрытый
4.6
Константы
↗
31
31
18м 44с
0
Закрытый
4.7
Техническое задание #1
↗
31
31
19м 52с
0
5. Типы и пользовательский ввод
6 уроков
174
167
135м
0
Закрытый
5.1
Пакет math
↗
31
30
20м 14с
0
Закрытый
5.2
Псевдонимы типов
↗
30
29
10м 6с
0
Закрытый
5.3
Приведение типов
↗
29
28
24м 1с
0
Закрытый
5.4
Пользовательский ввод
↗
29
27
22м 57с
0
Закрытый
5.5
Техническое задание #2
↗
28
27
8м 57с
0
Закрытый
5.6
Практика кода
↗
27
26
51м 2с
0
6. Память, указатели и продвинутый ввод данных
2 урока
51
48
68м
0
Закрытый
6.1
Области видимости, указатели, продвинутый ввод
↗
26
25
47м 15с
0
Закрытый
6.2
Продвинутый ввод и итоги
↗
25
23
20м 22с
0
7. Принятие решений: условия и логика
7 уроков
148
140
190м
0
Закрытый
7.1
Операции сравнения
↗
24
21
19м 15с
0
Закрытый
7.2
Логические операторы
↗
22
21
25м 40с
0
Закрытый
7.3
Условные конструкции
↗
21
21
33м 19с
0
Закрытый
7.4
Инициализация переменных в условии
↗
21
21
11м 1с
0
Закрытый
7.5
Техническое задание #3
↗
21
18
22м 21с
0
Закрытый
7.6
Оператор switch
↗
20
20
13м 15с
0
Закрытый
7.7
Практика кода
↗
19
18
66м 7с
0
8. Повторение
5 уроков
93
88
153м
0
Закрытый
8.1
Генерация псевдослучайных чисел
↗
19
18
35м 44с
0
Закрытый
8.2
Циклы: базовые структуры управления
↗
18
18
20м 13с
0
Закрытый
8.3
Цикл for
↗
19
17
29м 32с
0
Закрытый
8.4
Дополнение
↗
19
18
24м 30с
0
Закрытый
8.5
Практика кода
↗
18
17
46м 23с
0
9. Массивы
5 уроков
86
83
75м
0
Закрытый
9.1
Массивы: основы
↗
18
17
12м 51с
0
Закрытый
9.2
Основы работы с массивами
↗
17
17
16м 20с
0
Закрытый
9.3
Циклы и перебор массивов
↗
17
17
17м 56с
0
Закрытый
9.4
Практические задачи с массивами
↗
17
16
13м 5с
0
Закрытый
9.5
Алгоритмы поиска и обработки данных
↗
17
16
17м 51с
0
10. Слайсы
5 уроков
76
71
73м
0
Закрытый
10.1
Введение в слайсы
↗
17
17
18м 58с
0
Закрытый
10.2
Устройство и базовые операции
↗
17
15
28м 46с
0
Закрытый
10.3
Копирование, многомерность и специфика типа
↗
16
13
12м 11с
0
Закрытый
10.4
Практика: числовые срезы
↗
13
13
7м 53с
0
Закрытый
10.5
Практика: строки и «коллекции задач»
↗
13
13
8м 49с
0
11. Строки
5 уроков
70
61
94м
0
Закрытый
11.1
Основы строк и внутреннее устройство
↗
14
12
18м 15с
0
Закрытый
11.2
Длина строк, байты и руны
↗
14
13
14м 7с
0
Закрытый
11.3
Перебор строк и работа с символами
↗
14
12
13м 43с
0
Закрытый
11.4
Пакет strings
↗
14
13
13м 2с
0
Закрытый
11.5
Производительность
↗
14
11
36м 3с
0
12. Применение строк и срезов
3 урока
42
34
74м
0
Закрытый
12.1
Техническое задание #5
↗
14
11
14м 52с
0
Закрытый
12.2
Техническое задание #4
↗
14
12
38м 26с
0
Закрытый
12.3
Техническое задание #6
↗
14
11
21м 24с
0
13. Коллекции (map и set)
2 урока
25
23
54м
0
Закрытый
13.1
Ассоциативные массивы
↗
13
11
36м 37с
0
Закрытый
13.2
Множества
↗
12
12
18м 2с
0
14. Техническое задание #7
9 уроков
92
87
43м
0
Закрытый
14.1
Постановка задачи
↗
12
12
6м 18с
0
Закрытый
14.2
Базовый интерфейс и структура
↗
11
11
5м 37с
0
Закрытый
14.3
Добавление книг
↗
11
11
6м 44с
0
Закрытый
14.4
Просмотр книг
↗
9
9
3м 19с
0
Закрытый
14.5
Удаление книг
↗
10
10
5м 9с
0
Закрытый
14.6
Поиск
↗
11
11
7м 12с
0
Закрытый
14.7
Добавление пользователей
↗
9
9
5м 26с
0
Закрытый
14.8
Книги кользователя
↗
9
9
5м 48с
0
Закрытый
14.9
Выдача книг
↗
10
5
-
0
15. Функции
3 урока
18
16
109м
0
Закрытый
15.1
Функции: принцип DRY
↗
6
6
12м 13с
0
Закрытый
15.2
Основы функций
↗
6
5
49м 38с
0
Закрытый
15.3
Резюме
↗
6
5
48м 6с
0
16. Критические ситуации
3 урока
18
15
79м
0
Закрытый
16.1
Ошибки
↗
6
5
38м 3с
0
Закрытый
16.2
Паники
↗
6
5
41м 18с
0
Закрытый
16.3
Выводы
↗
6
5
-
0
17. Техническое задание #8
2 урока
12
10
24м
0
Закрытый
17.1
Постановка задачи
↗
6
5
2м 7с
0
Закрытый
17.2
Реализация
↗
6
5
22м 5с
0
18. Про время
2 урока
9
8
26м
0
Закрытый
18.1
Основа
↗
4
4
21м 17с
0
Закрытый
18.2
Всё, что нужно знать
↗
5
4
5м 52с
0
19. Про файлы и директории
2 урока
10
8
36м
0
Закрытый
19.1
Основа
↗
5
4
35м 25с
0
Закрытый
19.2
Всё, что нужно знать
↗
5
4
1м 3с
0
20. Техническое задание #9
15 уроков
58
50
222м
0
Закрытый
20.1
Постановка задачи
↗
4
4
11м 31с
0
Закрытый
20.2
Начало
↗
4
4
3м 38с
0
Закрытый
20.3
utils
↗
5
4
12м 29с
0
Закрытый
20.4
parse-format
↗
4
4
9м 29с
0
Закрытый
20.5
storage part 1
↗
5
4
14м 47с
0
Закрытый
20.6
storage part 2
↗
4
3
33м 59с
0
Закрытый
20.7
storage part 3
↗
3
3
8м 39с
0
Закрытый
20.8
storage part 4
↗
3
3
23м 24с
0
Закрытый
20.9
service 1
↗
4
3
38м 21с
0
Закрытый
20.10
service 2
↗
3
3
18м 29с
0
Закрытый
20.11
handler 1
↗
4
3
11м 13с
0
Закрытый
20.12
handler 2
↗
3
3
11м 3с
0
Закрытый
20.13
menu
↗
4
3
10м 42с
0
Закрытый
20.14
preRun
↗
3
3
10м 48с
0
Закрытый
20.15
Итоги
↗
5
3
10м 30с
0
21. Структуры
5 уроков
14
11
42м
0
Закрытый
21.1
Основы организации данных
↗
4
3
9м 24с
0
Закрытый
21.2
Создание и инициализация
↗
4
2
11м 51с
0
Закрытый
21.3
Инициализация структур и видимость
↗
2
2
6м 18с
0
Закрытый
21.4
Создание структур
↗
2
2
6м 25с
0
Закрытый
21.5
Резюме
↗
2
2
9м 53с
0
22. Техническое задание #10
2 урока
6
4
50м
0
Закрытый
22.1
Постановка задачи
↗
3
2
5м 0с
0
Закрытый
22.2
Реализация
↗
3
2
45м 1с
0
23. Про JSON
3 урока
7
6
29м
0
Закрытый
23.1
Предназначение
↗
2
2
12м 13с
0
Закрытый
23.2
Сериализация
↗
2
2
12м 56с
0
Закрытый
23.3
Десериализация
↗
3
2
5м 52с
0
24. Композиция — не наследование
5 уроков
12
11
38м
0
Закрытый
24.1
Дополнение
↗
2
2
4м 55с
0
Закрытый
24.2
Демонстрация
↗
2
2
19м 21с
0
Закрытый
24.3
Техническое задание #11
↗
2
2
1м 41с
0
Закрытый
24.4
Реализация
↗
3
3
5м 39с
0
Закрытый
24.5
Итоги
↗
3
2
9м 27с
0
25. Интерфейсы
3 урока
8
5
57м
0
Закрытый
25.1
Основа
↗
3
2
10м 5с
0
Закрытый
25.2
Замечание
↗
2
2
5м 27с
0
Закрытый
25.3
Погружение
↗
3
1
42м 44с
0
26. Практический проект: CRUD-приложение с персистентностью
25 уроков
40
38
0м
0
Закрытый
26.1
Клонирование шаблона и инициализация проекта
↗
2
2
-
0
Закрытый
26.2
Создание моделей Contact и ContactRelation
↗
2
2
-
0
Закрытый
26.3
DTO для обновления контакта с указателями
↗
1
1
-
0
Закрытый
26.4
Валидация полей и доменные ошибки
↗
1
1
-
0
Закрытый
26.5
Фабричная функция NewContact
↗
1
1
-
0
Закрытый
26.6
Методы управления тегами контакта
↗
1
1
-
0
Закрытый
26.7
Управление связями между контактами
↗
1
1
-
0
Закрытый
26.8
Структура ContactBook и конструктор
↗
1
1
-
0
Закрытый
26.9
CRUD-операции: создание и чтение контактов
↗
1
1
-
0
Закрытый
26.10
CRUD-операции: обновление и удаление
↗
1
1
-
0
Закрытый
26.11
Реализация поиска по имени, телефону и тегам
↗
1
1
-
0
Закрытый
26.12
Методы работы со связями в ContactBook
↗
1
1
-
0
Закрытый
26.13
Методы сериализации и десериализации
↗
1
1
-
0
Закрытый
26.14
Интерфейс Storage для персистентности
↗
1
1
-
0
Закрытый
26.15
JSONStorage: реализация метода Load
↗
2
2
-
0
Закрытый
26.16
JSONStorage: атомарная запись файлов
↗
2
2
-
0
Закрытый
26.17
Тестирование ContactBook и JSONStorage
↗
2
2
-
0
Закрытый
26.18
Структура CLI и внедрение зависимостей
↗
2
2
-
0
Закрытый
26.19
Обработчик вывода списка контактов
↗
2
2
-
0
Закрытый
26.20
Главный цикл и обработка команд CLI
↗
2
2
-
0
Закрытый
26.21
Точка входа и инициализация приложения
↗
2
2
-
0
Закрытый
26.22
CLI: создание контакта с вводом данных
↗
2
2
-
0
Закрытый
26.23
Обработчик выхода с сохранением данных
↗
2
2
-
0
Закрытый
26.24
Тестирование функции выхода
↗
3
3
-
0
Закрытый
26.25
Техническое задание #12
↗
3
1
-
0
27. Параллелизм и конкурентность
11 уроков
22
11
0м
0
Закрытый
27.1
Горутины: первые шаги
↗
2
1
-
0
Закрытый
27.2
Стек вызовов горутин и управление runtime
↗
2
1
-
0
Закрытый
27.3
Каналы как основы синхронизации горутин
↗
2
1
-
0
Закрытый
27.4
Буферизованные каналы
↗
2
1
-
0
Закрытый
27.5
Обработка ошибок в горутинах
↗
2
1
-
0
Закрытый
27.6
Альтернативная обработка ошибок
↗
2
1
-
0
Закрытый
27.7
Примитив синхронизации горутин
↗
2
1
-
0
Закрытый
27.8
Защита общих данных
↗
2
1
-
0
Закрытый
27.9
Практика
↗
2
1
-
0
Закрытый
27.10
Deadlock — взаимная блокировка горутин
↗
2
1
-
0
Закрытый
27.11
Самостоятельная работа
↗
2
1
-
0
28. Не SOLID
1 урок
2
0
0м
0
Закрытый
28.1
Принципы, которые делают код лучше
↗
2
0
-
0
29. Жизнь без ООП
6 уроков
3
1
0м
0
Закрытый
29.1
Factory
↗
0
0
-
0
Закрытый
29.2
Builder
↗
1
0
-
0
Закрытый
29.3
Prototype
↗
1
0
-
0
Закрытый
29.4
Singleton
↗
0
0
-
0
Закрытый
29.5
Adapter
↗
0
0
-
0
Закрытый
29.6
Дополнение
↗
1
1
-
0
30. Управление зависимостями
1 урок
3
1
6м
0
Закрытый
30.1
Подключение сторонних библиотек
↗
3
1
6м 5с
0
31. RESTful API: обзор фундаментальных концепций
2 урока
388
304
36м
37
Закрытый
31.1
Теория ключевых аспектов
↗
204
157
30м 21с
26
Закрытый
31.2
Есть вопросик...
↗
184
147
5м 23с
11
32. SQL и СУБД: SQLite, введение в теорию хранения данных
19 уроков
2 102
1 925
159м
231
Закрытый
32.1
Зачем нужны базы данных
↗
139
101
12м 9с
16
Закрытый
32.2
Установка и настройка окружения для работы с SQLite
↗
127
112
16м 35с
12
Закрытый
32.3
Основные концепции структуры базы данных
↗
123
111
9м 35с
12
Закрытый
32.4
Отношения в базе данных
↗
121
109
5м 11с
14
Закрытый
32.5
Что такое SQL и система типов
↗
114
105
9м 31с
12
Закрытый
32.6
Создание таблиц
↗
115
105
6м 59с
12
Закрытый
32.7
Ограничения SQL
↗
110
101
14м 59с
14
Закрытый
32.8
Добавление записей
↗
105
100
8м 48с
14
Закрытый
32.9
Самостоятельная работа: наполнение данными
↗
105
99
4м 19с
12
Закрытый
32.10
Выборка данных
↗
105
99
10м 15с
11
Закрытый
32.11
Фильтрация данных
↗
104
99
23м 43с
13
Закрытый
32.12
Оператор обновления данных
↗
103
99
4м 39с
10
Закрытый
32.13
Самостоятельная работа на обновление данных
↗
104
96
6м 44с
12
Закрытый
32.14
Оператор удаления данных
↗
103
98
5м 27с
12
Закрытый
32.15
Самостоятельная работа: создание и наполнение базы данных
↗
102
96
2м 16с
8
Закрытый
32.16
Сложные концепции
↗
108
99
15м 38с
13
Закрытый
32.17
Самостоятельная работа на сложные запросы
↗
102
93
3м 58с
11
Закрытый
32.18
Сложные запросы
↗
107
107
3м 2с
11
Закрытый
32.19
Самостоятельная работа на объединение
↗
105
96
6м 48с
12
33. Полноценный REST API с JWT‑аутентификацией
28 уроков
3
1
0м
0
Закрытый
33.1
Базовый HTTP-сервер
↗
1
1
-
0
Закрытый
33.2
Модель Contact
↗
0
0
-
0
Закрытый
33.3
Инициализация SQLite и миграции
↗
0
0
-
0
Закрытый
33.4
Репозиторий контактов
↗
0
0
-
0
Закрытый
33.5
Сервис контактов
↗
0
0
-
0
Закрытый
33.6
HTTP-обработчик создания контакта
↗
0
0
-
0
Закрытый
33.7
Интеграция слоя контактов
↗
0
0
-
0
Закрытый
33.8
Рефакторинг
↗
0
0
-
0
Закрытый
33.9
Валидация и уникальность
↗
0
0
-
0
Закрытый
33.10
Валидация по-взрослому
↗
0
0
-
0
Закрытый
33.11
GET-запрос получения всех контактов
↗
0
0
-
0
Закрытый
33.12
GET-запрос получение контакта по ID
↗
0
0
-
0
Закрытый
33.13
Мягкое удаление контакта (Soft Delete)
↗
0
0
-
0
Закрытый
33.14
Техническое задание
↗
0
0
-
0
Закрытый
33.15
Модель пользователя и структура аутентификации
↗
0
0
-
0
Закрытый
33.16
Таблица в базе данных
↗
0
0
-
0
Закрытый
33.17
Заготовка слоя регистрации
↗
0
0
-
0
Закрытый
33.18
Регистрация пользователя
↗
0
0
-
0
Закрытый
33.19
Хеширование паролей
↗
0
0
-
0
Закрытый
33.20
Аутентификация и проверка пароля
↗
0
0
-
0
Закрытый
33.21
JWT-токены: Claims и JWTService
↗
0
0
-
0
Закрытый
33.22
Генерация JWT при успешной авторизации
↗
0
0
-
0
Закрытый
33.23
Окружение
↗
0
0
-
0
Закрытый
33.24
JWT Middleware для защиты эндпоинтов
↗
0
0
-
0
Закрытый
33.25
Поддержка Bearer-токенов
↗
0
0
-
0
Закрытый
33.26
Проверка владельца при удалении
↗
0
0
-
0
Закрытый
33.27
Проверка владельца при обновлении
↗
0
0
-
0
Закрытый
33.28
Перспективы развития
↗
2
0
-
0
34. Описание проекта
1 урок
0
0
0м
0
Закрытый
34.1
Что будем делать
↗
0
0
-
0
35. Что нас ждёт на собеседовани
1 урок
3
3
0м
0
Закрытый
35.1
Практические рекомендации
↗
3
3
-
0
36. Каталог товаров
43 урока
0
0
0м
0
Закрытый
36.1
🗃️ 001 Введение в проект
↗
0
0
-
0
Закрытый
36.2
🗃️ 002 Инициализация Go-модуля и Gin-сервер
↗
0
0
-
0
Закрытый
36.3
🗃️ 003 Доменные сущности: BaseEntity, Brand, Category, CatalogI
↗
0
0
-
0
Закрытый
36.4
🗃️ 004 Docker Compose и PostgreSQL
↗
0
0
-
0
Закрытый
36.5
🗃️ 005 SQL-миграции и seed-данные
↗
0
0
-
0
Закрытый
36.6
🗃️ 006 Репозиторий брендов (PostgreSQL)
↗
0
0
-
0
Закрытый
36.7
🗃️ 007 Query handler: получение брендов
↗
0
0
-
0
Закрытый
36.8
🗃️ 008 HTTP handler: эндпоинт брендов
↗
0
0
-
0
Закрытый
36.9
🗃️ 009 Маршрутизация API v1: /brands
↗
0
0
-
0
Закрытый
36.10
🗃️ 010 Конфигурация через .env и godotenv
↗
0
0
-
0
Закрытый
36.11
🗃️ 011.1 [ТЗ] Самостоятельная работа
↗
0
0
-
0
Закрытый
36.12
🗃️ 011.2 Эндпоинт /categories: полный цикл
↗
0
0
-
0
Закрытый
36.13
🗃️ 012 Репозиторий товаров с JOIN
↗
0
0
-
0
Закрытый
36.14
🗃️ 013 Query handler: список товаров
↗
0
0
-
0
Закрытый
36.15
🗃️ 014 HTTP handler: список товаров
↗
0
0
-
0
Закрытый
36.16
🗃️ 015 Маршрут /catalog-items
↗
0
0
-
0
Закрытый
36.17
🗃️ 016 Рефакторинг SQL-запросов
↗
0
0
-
0
Закрытый
36.18
🗃️ 017 Репозиторий: получение товара по ID
↗
0
0
-
0
Закрытый
36.19
🗃️ 018 Query handler: товар по ID
↗
0
0
-
0
Закрытый
36.20
🗃️ 019 HTTP handler: товар по ID
↗
0
0
-
0
Закрытый
36.21
🗃️ 020 Маршрут /catalog-items/
↗
0
0
-
0
Закрытый
36.22
🗃️ 021 Поиск по названию (ILIKE)
↗
0
0
-
0
Закрытый
36.23
🗃️ 022 Query handler: поиск по названию
↗
0
0
-
0
Закрытый
36.24
🗃️ 023 HTTP handler: поиск по названию
↗
0
0
-
0
Закрытый
36.25
🗃️ 024 Маршрут /catalog-items/title/:title
↗
0
0
-
0
Закрытый
36.26
🗃️ 025 Репозиторий: создание товара (INSERT)
↗
0
0
-
0
Закрытый
36.27
🗃️ 026 Command handler: создание товара
↗
0
0
-
0
Закрытый
36.28
🗃️ 027 HTTP handler: POST-запрос
↗
0
0
-
0
Закрытый
36.29
🗃️ 028 Маршрут POST /catalog-items
↗
0
0
-
0
Закрытый
36.30
🗃️ 029 Репозиторий: обновление товара (UPDATE)
↗
0
0
-
0
Закрытый
36.31
🗃️ 030 Command handler: обновление товара
↗
0
0
-
0
Закрытый
36.32
🗃️ 031 HTTP handler: PUT-запрос
↗
0
0
-
0
Закрытый
36.33
🗃️ 032 Маршрут PUT /catalog-items
↗
0
0
-
0
Закрытый
36.34
🗃️ 033 [ТЗ] Удаление товара
↗
0
0
-
0
Закрытый
36.35
🗃️ 034 [ТЗ] Поиск по бренду
↗
0
0
-
0
Закрытый
36.36
🗃️ 035 Пагинация: Pagination и QueryArgs
↗
0
0
-
0
Закрытый
36.37
🗃️ 036 Фильтрация и сортировка: введение
↗
0
0
-
0
Закрытый
36.38
🗃️ 037 Query handler: пагинация (V2)
↗
0
0
-
0
Закрытый
36.39
🗃️ 038 HTTP handler: пагинация (V2)
↗
0
0
-
0
Закрытый
36.40
🗃️ 039 Маршрут GET /v2/catalog-items, тестирование пагинации
↗
0
0
-
0
Закрытый
36.41
🗃️ 040 Автомиграции при старте (golang-migrate)
↗
0
0
-
0
Закрытый
36.42
🗃️ 041 Финал каталога и итоговые правки
↗
0
0
-
0
Закрытый
36.43
🗃️ Саморефлексия
↗
0
0
-
0
37. Корзина покупок
23 урока
0
0
0м
0
Закрытый
37.1
🗑️ 042 PostgreSQL для Basket в Docker Compose
↗
0
0
-
0
Закрытый
37.2
🗑️ 043 Gin-сервер и health-check для Basket
↗
0
0
-
0
Закрытый
37.3
🗑️ 044 Миграции Basket и автозапуск
↗
0
0
-
0
Закрытый
37.4
🗑️ 045 Доменные модели: ShoppingCart, ShoppingCartItem
↗
0
0
-
0
Закрытый
37.5
🗑️ 046 Репозиторий: сохранение корзины (транзакция)
↗
0
0
-
0
Закрытый
37.6
🗑️ 047 Command handler: сохранение корзины
↗
0
0
-
0
Закрытый
37.7
🗑️ 048 HTTP handler: POST /cart
↗
0
0
-
0
Закрытый
37.8
🗑️ 049 Маршрутизация API v1: /cart
↗
0
0
-
0
Закрытый
37.9
🗑️ 050 Инициализация слоёв и DI
↗
0
0
-
0
Закрытый
37.10
🗑️ 051 Валидация моделей (go-playground/validator)
↗
0
0
-
0
Закрытый
37.11
🗑️ 052 Middleware: централизованная обработка ошибок
↗
0
0
-
0
Закрытый
37.12
🗑️ 053 Интеграция ErrorHandlerMiddleware
↗
0
0
-
0
Закрытый
37.13
🗑️ 054 Репозиторий: получение корзины
↗
0
0
-
0
Закрытый
37.14
🗑️ 055 Query handler: получение корзины
↗
0
0
-
0
Закрытый
37.15
🗑️ 056 HTTP handler: GET /cart/:accountName
↗
0
0
-
0
Закрытый
37.16
🗑️ 057 Маршрут GET /cart/:accountName
↗
0
0
-
0
Закрытый
37.17
🗑️ 058 Кастомный тип NotFoundError
↗
0
0
-
0
Закрытый
37.18
🗑️ 059 [ТЗ] Удаление корзины
↗
0
0
-
0
Закрытый
37.19
🗑️ 060 Redis-контейнер для кэширования
↗
0
0
-
0
Закрытый
37.20
🗑️ 061 RedisCartRepository
↗
0
0
-
0
Закрытый
37.21
🗑️ 062 Интеграция Redis
↗
0
0
-
0
Закрытый
37.22
🗑️ 063 Dockerfile и compose-prod для Basket
↗
0
0
-
0
Закрытый
37.23
🗑️ Саморефлексия
↗
0
0
-
0
38. Окончание
1 урок
1
0
472м
0
Закрытый
38.1
Итоги
↗
1
0
472м 9с
0
39. Промоакции
31 урок
0
0
0м
0
Закрытый
39.1
🏷️ 064 MySQL-контейнер для Promotion
↗
0
0
-
0
Закрытый
39.2
🏷️ 065 Подключение к MySQL и автомиграции
↗
0
0
-
0
Закрытый
39.3
🏷️ 066 Миграция: таблица promos и seed-данные
↗
0
0
-
0
Закрытый
39.4
🏷️ 067 Protocol Buffers: greet.proto и кодогенерация
↗
0
0
-
0
Закрытый
39.5
🏷️ 068 Реализация GreeterService (gRPC)
↗
0
0
-
0
Закрытый
39.6
🏷️ 069 gRPC-сервер с graceful shutdown
↗
0
0
-
0
Закрытый
39.7
🏷️ 070 gRPC Reflection и тестирование
↗
0
0
-
0
Закрытый
39.8
🏷️ 071.1 gRPC метод Add (практика)
↗
0
0
-
0
Закрытый
39.9
🏷️ 071.2 Proto-контракт
↗
0
0
-
0
Закрытый
39.10
🏷️ 072 Доменная модель
↗
0
0
-
0
Закрытый
39.11
🏷️ 073 Интерфейс PromotionRepository
↗
0
0
-
0
Закрытый
39.12
🏷️ 074 Реализация FindByCatalogItem
↗
0
0
-
0
Закрытый
39.13
🏷️ 075 Реализация обработчика promotion/queries
↗
0
0
-
0
Закрытый
39.14
🏷️ 076 gRPC-сервис PromoService: заглушка
↗
0
0
-
0
Закрытый
39.15
🏷️ 077 Реализация GetPromoByCatalogItem
↗
0
0
-
0
Закрытый
39.16
🏷️ 078 Интеграция PromoService в main
↗
0
0
-
0
Закрытый
39.17
🏷️ 079 Proto: CreatePromo RPC
↗
0
0
-
0
Закрытый
39.18
🏷️ 080 Репозиторий: вставка промоакции
↗
0
0
-
0
Закрытый
39.19
🏷️ 081 Command handler: создание промоакции
↗
0
0
-
0
Закрытый
39.20
🏷️ 082 gRPC эндпоинт CreatePromo
↗
0
0
-
0
Закрытый
39.21
🏷️ 083 Интеграция CreatePromoHandler и DI
↗
0
0
-
0
Закрытый
39.22
🏷️ 084 Unique-ограничение и обработка дубликатов
↗
0
0
-
0
Закрытый
39.23
🏷️ 085 UpdatePromo: полный цикл
↗
0
0
-
0
Закрытый
39.24
🏷️ 086 [ТЗ] Удаление промоакции
↗
0
0
-
0
Закрытый
39.25
🏷️ 087 gRPC-клиент в SaveCartHandler: применение скидок
↗
0
0
-
0
Закрытый
39.26
🏷️ 088 Интеграция gRPC-клиента в Basket
↗
0
0
-
0
Закрытый
39.27
🏷️ 089 Dockerfile и compose-prod для Promotion
↗
0
0
-
0
Закрытый
39.28
🏷️ 090.1 Проблема: БД не готова при старте
↗
0
0
-
0
Закрытый
39.29
🏷️ 090.2 Утилита WaitForDB с retry-логикой
↗
0
0
-
0
Закрытый
39.30
🏷️ 091 Интеграция WaitForDB во все сервисы
↗
0
0
-
0
Закрытый
39.31
🏷️ Саморефлексия
↗
0
0
-
0
40. Оформление заказов
25 уроков
0
0
0м
0
Закрытый
40.1
🚚 092 PostgreSQL для Checkout и миграции
↗
0
0
-
0
Закрытый
40.2
🚚 093 Конфигурация и запуск миграций
↗
0
0
-
0
Закрытый
40.3
🚚 094 Gin-сервер и health-check для Checkout
↗
0
0
-
0
Закрытый
40.4
🚚 095 Доменная модель: Order, Value Objects, Enums
↗
0
0
-
0
Закрытый
40.5
🚚 096 Интерфейс и реализация OrderRepository
↗
0
0
-
0
Закрытый
40.6
🚚 097 Репозиторий: получение заказа с позициями
↗
0
0
-
0
Закрытый
40.7
🚚 098 Репозиторий: поиск заказов по аккаунту
↗
0
0
-
0
Закрытый
40.8
🚚 099 Репозиторий: создание заказа (транзакция)
↗
0
0
-
0
Закрытый
40.9
🚚 100 Query handler: заказ по ID
↗
0
0
-
0
Закрытый
40.10
🚚 101 HTTP handler: GET /orders/:id
↗
0
0
-
0
Закрытый
40.11
🚚 102 Маршрут и DI для Checkout
↗
0
0
-
0
Закрытый
40.12
🚚 103 [ТЗ] Заказы по аккаунту
↗
0
0
-
0
Закрытый
40.13
🚚 104 RabbitMQ-контейнер в Docker Compose
↗
0
0
-
0
Закрытый
40.14
🚚 105 Структура messaging: заготовки
↗
0
0
-
0
Закрытый
40.15
🚚 106 BaseIntegrationEvent и OrderSubmittedEvent
↗
0
0
-
0
Закрытый
40.16
🚚 107 RabbitMQ Publisher: exchange, queue, publish
↗
0
0
-
0
Закрытый
40.17
🚚 108 Command handler: CheckoutCart и публикация события
↗
0
0
-
0
Закрытый
40.18
🚚 109 HTTP handler: POST /cart/checkout
↗
0
0
-
0
Закрытый
40.19
🚚 110 Маршрут checkout и интеграция RabbitMQ
↗
0
0
-
0
Закрытый
40.20
🚚 111 RabbitMQ Consumer: подключение и обработка
↗
0
0
-
0
Закрытый
40.21
🚚 112 ProcessOrderSubmissionHandler: создание заказа
↗
0
0
-
0
Закрытый
40.22
🚚 113 OrderSubmittedConsumer: маппинг события в команду
↗
0
0
-
0
Закрытый
40.23
🚚 114 Интеграция consumer в Checkout с graceful shutdown
↗
0
0
-
0
Закрытый
40.24
🚚 115 Dockerfile и compose-prod для Checkout
↗
0
0
-
0
Закрытый
40.25
🚚 Саморефлексия
↗
0
0
-
0
41. Мониторинг и инфраструктура
16 уроков
1
1
0м
0
Закрытый
41.1
📊 116.1 Введение в Prometheus и Grafana
↗
0
0
-
0
Закрытый
41.2
📊 116.2 Пакет metrics: HTTP, gRPC, DB, RabbitMQ
↗
0
0
-
0
Закрытый
41.3
📊 117 Gin Middleware для Prometheus-метрик
↗
0
0
-
0
Закрытый
41.4
📊 118 gRPC-интерцепторы метрик
↗
0
0
-
0
Закрытый
41.5
📊 119 Метрики в Catalog-сервисе
↗
0
0
-
0
Закрытый
41.6
📊 120 Метрики в Promotion-сервисе
↗
0
0
-
0
Закрытый
41.7
📊 121 Конфигурация Prometheus (prometheus.yml)
↗
0
0
-
0
Закрытый
41.8
📊 122 Datasource Grafana для Prometheus
↗
0
0
-
0
Закрытый
41.9
📊 123 Prometheus и Grafana в compose-prod
↗
0
0
-
0
Закрытый
41.10
📊 124.1 Демо: дашборды Prometheus и Grafana
↗
0
0
-
0
Закрытый
41.11
📊 124.2 Grafana-дашборды: Catalog и Promotion
↗
0
0
-
0
Закрытый
41.12
📊 125 Нагрузочное тестирование с k6 (HTTP)
↗
0
0
-
0
Закрытый
41.13
📊 126 Тюнинг пула соединений PostgreSQL
↗
0
0
-
0
Закрытый
41.14
📊 127 k6: нагрузочный тест gRPC
↗
0
0
-
0
Закрытый
41.15
📊 128 Portainer: управление контейнерами
↗
1
1
-
0
Закрытый
41.16
📊 Саморефлексия
↗
0
0
-
0