1. Цели курса
2. Как будет проходить курс
3. Границы тем курса
4. Как потратить время зря
5. Как получить от курса максимум
6. Многозадачность, сон, скорость
7. Задания, Google и ChatGPT
8. Разделы КОМП — Как Оно Мне Поможет
9. Задавайте вопросы
10. Платформа
11. Практика — rroom
12. Книги!.md
10. Словарь
11. Множество
12. Стек и очередь
13. Линейный поиск
14. Бинарный поиск
15. Алгоритм Дейкстры
16. Жадные алгоритмы
17. Как мы на практике NP-полную задачу решали
18. README
1. Искусство или навык
2. Нейминг
3. Форматирование
4. Комментарии
5. DRY
6. KISS
7. YAGNI
8. Как писать хорошие функции и методы
9. Проектирование от функций
10. Функции большие и малые
11. Отмерять и отрезать
12. Закон Деметры
13. Принцип единой ответственности
14. Принцип окрытости-закрытости
15. Принцип подстановки Барбары Лисков
16. Принцип разделения интерфейсов
17. Принцип инверсии зависимостей
18. Low Coupling, High Cohesion
19. Принцип наименьшего удивления
20. Абстракции
21. Смешение уровней абстракции
22. Валидации, проверки, исключения
23. Оценка качества программы
24. Рефакторинг
25. Борьба со сложностью
26. Термины бизнес-области
1. Git — must-have инструмент любого разработчика
2. Установка
3. Инициализация Git-репозитория и что происходит под
4. Первый коммит
5. Список коммитов и информация о коммите
6. Индекс и объектное хранилище Git
7. Што такое, зачем так сложно, Линус, я недоволен
8. Как добавить в репозиторий пустую директорию
9. Как закоммитить сразу несколько файлов
10. Как включать игнор
11. Удобные сокращения git-команд
12. Удобная история изменений проекта
13. Создание новой ветки
14. Сливаем ветки
15. Красота и величие указателя HEAD
16. GUI для работы с Git
17. Merge-коммит и его особенности
18. Конфликты слияния
19. Изучаем разницу версий
20. Откат изменений в рабочей директории или индексе
21. Сброс проекта до старого коммита
22. Подправить последний коммит
23. rebase для предотвращения merge-коммитов
24. rebase для объединения коммитов
25. Клонируем удалённый репозиторий
26. Создаём свой удалённый репозиторий
27. Pull Request A.K.A. Merge Request
28. Кто, когда и зачем добавил эту строку в проект
29. Изменения истории веток, уже отправленных на сервер
30. Тайные тайники Git
31. cherry-pick и патчи (не корейские)
32. Другие возможности Git
33. Gitflow, GitHub Flow — организационный процесс работы с Git
34. Правила комментирования коммитов
35. pre-commit
36. Markdown
37. Итого
38. Дополнительные материалы
1. Что такое контейнеризация?
2. Оркестратор, движок контейнеров, OCI рантайм
3. Как работают контейнеры
4. Образы контейнеров
5. Docker vs Podman
6. Запуск и остановка контейнера
7. Вход в контейнер
8. Работа с образами и контейнерами на локальном компьютере
9. Dockerfile, Containerfile, сборка образа
10. docker-compose, podman pods
11. Volumes
12. Сеть
13. Вопросы безопасности контейнеров
14. Пример контейнеризованного Python веб-приложения
15. Деплой с контейнерами
16. Дополнительные материалы
1. Постановка задачи
2. Пишем HTTP сервачелло на голом Python
3. О фреймворках и библиотеках
4. Пишем Hello World на FastAPI
5. Создаём HTML шаблон
6. Создаём и стилизуем форму логина
7. Принимаем данные формы на бэкенде
8. Проверка логина и пароля из формы
9. Сохраняем пользователя в Cookies
10. Читаем Cookie запись
11. Цифровая подпись Cookies
12. Хеширование паролей
13. JavaScript и AJAX
14. SPA и JS фреймворки
15. Варианты передачи данных в запросе
16. Веб-сокеты
17. Git
18. Покупка и настройка домена
19. Привязка домена к серверу
20. Перенос приложения на сервер
21. Настройка сертификата
1. О PostgreSQL
2. Установка PostgreSQL в контейнере
3. Установка PostgreSQL в Linux из пакетного менеджера
4. Сборка PostgreSQL из исходников
5. Установка PostgreSQL установщиком на маке
6. Тулзяшечки — psql, pgcli, DBeaver, PyCharm
7. ACID
8. Термины — реальные и задротские
9. Первичный ключ и внешний ключ
10. Основные типы данных
11. DDL, DML, DCL, TCL и прочий БДСМ
12. Создаём пользователя
13. Создаём БД, схему, таблицы, связи
14. Комментарии в SQL и к таблицам-колонкам
15. Вставка данных
16. Простейшие выборки
17. Обновление и всякое хитрое удаление данных
18. Операторы и фильтрация выборки
19. Сортировка выборки
20. Ограничение количества возвращаемых данных
21. Псевдонимы = алиасы = aliases
22. LIKE, ILIKE
23. Использование даты и времени
24. CASE WHEN
25. Выборка из нескольких таблиц — JOIN
26. Coalesce и значения NULL
27. Подсчет количества результата
28. Группировка результатов выборки
29. Фильтрация вкупе с группировкой
30. Агрегатные функции
31. Работа со строками
32. Приведение типов
33. Подзапросы
34. UNION, EXCEPT, INTERSECT
35. Вьюшки обычные и материализованные
36. CTE
37. Оконные функции
38. Пример с оконными функциями
39. Транзакции
40. Read Committed изоляция транзакций
41. Repeatable Read изоляция транзакций
42. Serializable изоляция транзакций
43. Массивы
44. JSON и JSONB
45. Индексы в PostgreSQL
46. Индекс на уникальность
47. Индекс по выражению
48. Частичные индексы
49. Виды индексов PostgreSQL
50. Полнотекстовый поиск в PostgreSQL
51. Нормализация и денормализация
52. Репликация и шардинг
53. Что использовать в качестве первичного ключа?
54. Временные таблицы
55. TRUNCATE
56. Триггеры и правила
57. EXPLAIN
58. OLTP и OLAP
59. PL/pgSQL
60. Получаем размер базы данных
61. Стратегии бэкапов
62. Пулер запросов PgBouncer и Yandex Odyssey
63. SQLite
64. Дополнительные материалы
1. Зачем нам этот ваш ещё Redis?
2. Установка Redis
3. Что внутри
4. Строки
5. Хеши
6. Списки
7. Множества
8. Отсортированные множества
9. Транзакции
10. Срок жизни ключей
11. Pub-sub
12. Streams
13. Репликация
14. Дополнительные материалы
1. Как оно работает обычно
2. Процессы, потоки, корутины
3. GIL
4. Чем поможет нам asyncio
5. Concurrency is not parallelism
6. Сопрограммы, они же корутины
7. Шо за цикл событий такой умный?
8. Почему мой код не выполняется быстрее с async-await?
9. И как же мне ускорить выполнение кода c конкурентностью?
10. asyncio.create_task
11. Ожидание окончания выполнения задачи
12. Когда использовать и когда не использовать асинхронность
13. Способы запустить код асинхронно
14. asyncio.gather
15. asyncio.TaskGroup
16. asyncio.as_completed
17. asyncio.wait
18. Надо ли обычные функции определять с async def?
19. Асинхронно ходим в веб-сервисы
20. Асинхронно ходим в СУБД
21. Асинхронно ходим в файлы
22. Трэш и содомия — пулы процессов
23. Семафоры
24. asyncio.to_thread
25. Контекстные переменные
26. throttle и debounce
27. Как принудительно отдать управление в цикл событий
28. uvloop и замена цикла событий
1. Обзор фреймворка, преимущества и недостатки
2. Установка, инициализация, структура
3. Первое приложение
4. Модели хранилища
5. Подцепляем контейнеры
6. Миграции
7. Великий и ужасный Django ORM
8. Какой SQL варганит Django ORM
9. Оптимизация использования Django ORM
10. Или ну его в пень и пишем голый SQL
11. Шаблоны
12. Админка
13. Реализация CRUD влоб
14. Формы
15. Function Based и Class Based Views
16. Django для SPA и для не SPA
17. Аутентификация
18. Авторизация
19. Аутентификация через внешние сервисы
20. CORS в Django
21. CRUD с DRF
22. Swagger с DRF
23. Асинхронность в Django
24. Фоновые задачи с Django
25. Использование Django apps
26. Архитектура Django-проектов
27. Стайлгайд
28. Two Scoops of Django
29. Дополнительные материалы
1. Обзор фреймворка, преимущества и недостатки
2. Асинхронность в FastAPI
3. Запросы-ответы-валидация
4. Выуживаем данные запроса
5. Return Type
6. Статусы ответов
7. Swagger с FastAPI
8. CORS в FastAPI
9. Подцепляем контейнеры
10. Асинхронный SQLAlchemy
11. Миграции с Alembic
12. CRUD c SQLAlchemy
13. Фоновые задачи с FastAPI
14. Вебсокеты и Server Side Events с FastAPI
15. Архитектура FastAPI-проектов
1. Зачем нам автотесты
2. Какие есть виды тестов
3. Пирамида тестирования
4. и при чём тут архитектура
5. unittest, pytest, nose
6. Структура теста
7. Рекомендации по юнит-тестам
8. Чем качественные юнит-тесты отличаются от некачественных
9. Тесты в Django
10. Тесты в FastAPI
11. Мокать аль не мокать?
12. Школы тестирования
13. Test suite для проекта
14. Интеграционное тестирование
15. E2E тестирование
16. База данных в тестах
17. Тесты и приватные методы
18. Время
19. Изучаем Pytest
1. Что такое архитектура и зачем она нам
2. Быстрее отгрузить vs Сделать хорошо
3. Писать хорошо, а нехорошо не писать
4. Что есть зависимость
5. Любую зависимость можно инвертировать
6. Устойчивость кода
7. Отделяем мух от котлет
8. Сущности
9. Сервисы = сценарии использования
10. Репозитории, инфраструктура
11. Чистая, гексагональная, портов и адаптеров и прочие архитектуры
12. Зависимости
13. Сборка всего приложения
14. Пример
1. Один код — разные развёртывания
2. Зависимости
3. Конфигурация
4. Сторонние сервисы
5. Сборка, релиз, выполнение
6. Процессы
7. Port binding
8. Параллелизм
9. Утилизируемость
10. Паритет разработки и работы приложения
11. Логи
12. Задачи администрирования
1. Версии HTML
2. Структура документа
3. Кодировка документа и текста
4. Что за что отвечает
5. Тэги
6. Форматирование текста
7. Ссылки
8. Списки
9. Entities, UTF8 символы
10. Разные размеры изображений
11. Растровая и векторная графика
12. Фоновые изображения
13. Пути
14. Семантическая разметка, контейнеры
15. Таблицы
16. Формы
17. Комментарии
18. Favicon
19. Фреймы
20. Block и inline элементы
21. Canvas
22. Интеграция плееров
23. Форматирование HTML-кода
24. W3C-валидатор
1. Что может делать CSS
2. Подключение стилей
3. Макет страницы
4. Что такое стиль
5. Codepen
6. Достать по тэгу
7. Достать по классу
8. Достать по идентификатору
9. Достать по атрибуту
10. Достать сразу нескольких
11. Родственные отношения
12. Достать потомков
13. Достать детей
14. Псевдоклассы, псевдоэлементы
15. Достать родственничков
16. Достать вот этих, но не тех
17. Наследование
18. Специфичность
19. Хак с important
20. Сброс стилей
21. Шрифты и форматирование текста
22. Цвета — RGB, RGBA, HSL, HSLA
23. Размеры
24. Списки
25. Блочная модель
26. Схлопывание полей
27. Блочные и строчные элементы
28. Границы и тени
29. Установка размера блочного элемента
30. box-sizing
31. Overflow, ограничение max размеров
32. float
33. Изображения фоном
34. Несколько фоновых изображений
35. Список ссылок, ролловеры
36. Трансформация без трансформатора
37. Анимации
38. Оформление таблиц
39. Оформление форм
40. Фикс, резина, адаптив
41. Как верстать?
42. Древняя верстка
43. Современность — flexbox
44. Позиционирование
45. Как делается адаптив
46. Контейнерные запросы
47. Как узнать, какая тема на устройстве включена?
48. Включен ли режим энергоэффективности?
49. Как скрыть или показать элемент?
50. calc
51. min, max, clamp
52. CSS-валидатор
53. Can I use
54. Минимизация CSS
55. БЭМ
56. Дополнительные материалы
1. Cordova
2. Ionic
3. PWA
1. Сколько нам нужно железа
2. Арендуем сервачелло
3. Присобачиваем домен
4. Прокидываем SSH-ключи
5. Ставим необходимые пакеты
6. Используем контейнеры на проде
7. Ставим Python
8. Ставим PostgreSQL
9. Ставим пулер коннектов для PostgreSQL
10. Разворачиваем чудо-приложеньку
11. Настраиваем Systemd
12. Настраиваем файрвол
13. Настраиваем анти-DDoS в Nginx
14. Статику раздаёт Nginx, S3 или CDN
15. Выносим PostgreSQL на отдельный сервер
16. Настраиваем бэкапы
17. Настраиваем ротацию логов
18. Клонируем application-серваки
19. Как запустить это всё в контейнерах
20. А теперь подвиньтесь, выходит Ansible
1. Где применяется JavaScript?
2. Типы данных
3. Управляющие конструкции, печать
4. var, let, const
5. Функции
6. Стрелочные функции
7. Объекты, методы, this
8. null, undefined
9. Глобальные браузерные переменные
10. Структуры данных
11. Деструктуризация, распространение
12. Циклы
13. Исключения
14. Работа с датой и временем
15. Форматирование строк
16. Функциональное программирование в JS
17. Модули
18. Стиль кода
19. Асинхронный JS
20. Полифилы
21. Работа с DOM-деревом на чистом JavaScript
22. События в браузере
23. MutationObserver
24. Fetch и axios
25. Cookies и LocalStorage
26. node, deno
27. Дополнительные материалы
1. Для чего нам TypeScript?
2. Установка TypeScript
3. Теперь везде ставить типы?
4. Основные типы
5. Типизация функций
6. Интерфейсы и структурная типизация
7. Any и запрет Any
8. typeof
9. Дженерики
10. Типизация объектов
11. Keyof
12. Typeof
1. Зачем нам вообще фронтенд-фреймворки?
2. Веб-компоненты
3. React vs SolidJS
4. Создаём React-приложение
5. JSX и чем он хорош
6. Нарезаем компоненты
7. Props
8. Условный рендеринг
9. Передача данных компонентам вверх и вниз
10. Стейт
11. Понимание рендера
12. Контекст
13. Refs
14. Жизненный цикл
15. Хуки
16. Управление стейтом приложения
17. Как проблемы React решает Solid?
18. Установка Solid
19. JSX Solid
20. Сигналы Solid
21. Эффекты Solid
22. Memos Solid
23. Порталы, ууу
24. Рендер-логика в Solid
25. Жизненный цикл в Solid
26. События с Solid
27. Refs в Solid
28. Стилизация
29. Удобные хранилища Solid
30. Асинхронность в Solid
31. TypeScript в Solid
1. Бэкендерское тут неприменимо?
2. Разбираемся с FSD
3. Продолжаем разбираться с FSD
4. Микрофронтенды
5. Практика
1. Обзор
2. Злодейски угоняем аккаунт
3. Защита
4. Коварно строим подлянки юзерам
5. Защита
6. Негодяйски угоняем данные
7. Защита
8. Подлецки хакаем сервер
9. Защита
10. Коварно хихикая, фишим
11. Защита
12. Левой пяткой хакаем Django
13. Защита
14. Мощнецки дудосим
15. Защита
16. Обуваем всех подряд
17. Защита
18. Заметки по безопасности
1. Зачем нам оно
2. Подходы к CI/CD
3. Сине-зеленое развертывание
4. Инструменты
5. Демонстрация
1. Зачем оно нам?
2. Платформы
3. Сервера
4. S3-хранилища
5. CDN
6. Управляемые СУБД
7. Балансеры
8. Serverless Containers
9. Lambda
10. Инфраструктура как код
11. Terraform, Ansible
1. Резюме
2. Собеседование
3. Опыт работы
4. Дизайн в проектах
5. Как спрашивать помощи
6. Самозванцы и Даннинг-Крюгер
7. Тех долг
8. Рефакторинг
9. Изменяемость и неизменяемость
10. Логирование
11. Конфиги
12. Знай и используй инструментарий
13. Code review
14. Локализуй проблему
15. Задавай вопросы бизнесу
16. Обучение
17. Документация
18. Баланс
19. Модненький Agile
20. Что всем от вас надо
21. Касания с другими людьми
22. Помогайте
23. Обещания и профессиональная честность
24. Мотивация vs Творчество vs Дисциплина
25. Привычки
26. Удалёнка