Содержание курса
Boost как платформа и проект Rota
8 уроков
1.
Что такое Boost сегодня и зачем он C++23-разработчику
↗
2.
Сквозной проект Rota: задача, домен, архитектура
↗
3.
Установка Boost 1.92: MSYS2, vcpkg, apt и сборка из исходников
↗
4.
Boost и CMake: find_package в режиме CONFIG и цели Boost
↗
5.
Header-only и компилируемые библиотеки, Boost.Config
↗
6.
Каркас Rota: структура каталогов, CMakePresets, первая сборка
↗
7.
Как читать документацию Boost, версии и миграция между релизами
↗
8.
Практика: каркас rotad и rota-cli с проверкой версии Boost
↗
Ошибки, диагностика и базовые утилиты Boost
8 уроков
1.
Boost.System: error_code, error_category и свои коды ошибок
↗
2.
result из Boost.System рядом со стандартным expected
↗
3.
Boost.Outcome: result, outcome, BOOST_OUTCOME_TRY и политики
↗
4.
Boost.LEAF: ошибки с контекстом без затрат в happy path
↗
5.
Boost.Exception и ThrowException: диагностика на исключениях
↗
6.
Boost.Scope: scope_exit, scope_fail, unique_resource
↗
7.
Boost.Stacktrace, Boost.Assert и Boost.Core
↗
8.
Практика: модель ошибок Rota и единый формат диагностики
↗
Контейнеры и структуры данных Boost
8 уроков
1.
Boost.Unordered: unordered_flat_map, node_map и когда они лучше
↗
2.
Boost.Unordered concurrent_flat_map: доступ без мьютекса
↗
3.
Boost.Container: small_vector, static_vector, flat_map, pmr
↗
4.
Boost.MultiIndex: реестр пайплайнов с несколькими индексами
↗
5.
Boost.MultiIndex: модификация, ranked-индексы, composite_key
↗
6.
Boost.Circular_buffer и Boost.Heap: буфер вывода и очередь
↗
7.
Boost.Intrusive, Bloom, PolyCollection и Flyweight
↗
8.
Практика: реестр запусков Rota на MultiIndex и Unordered
↗
Строки, разбор текста и URL
8 уроков
1.
Boost.String_algo: trim, split, join, замены, предикаты
↗
2.
Boost.CharConv и Boost.Lexical_cast: конвертация чисел и строк
↗
3.
Boost.Regex и Boost.Tokenizer: фильтры логов и разбор строк
↗
4.
Boost.Parser: грамматика cron-выражений
↗
5.
Boost.Spirit X3: разбор длительностей и сравнение с Boost.Parser
↗
6.
Boost.URL: разбор адресов, сегменты, query и маршрутизация API
↗
7.
Boost.Locale, Static_string и Format рядом со стандартным format
↗
8.
Практика: cron-планировщик Rota — от строки до next_fire
↗
Boost.JSON, Boost.Describe и Boost.PFR
8 уроков
1.
Boost.JSON: value, object, array, parse и serialize
↗
2.
Boost.JSON: value_to, value_from и tag_invoke для своих типов
↗
3.
Boost.Describe: описание структур и enum для (де)сериализации
↗
4.
Boost.PFR: рефлексия агрегатов без макросов
↗
5.
Boost.JSON: stream_parser, memory_resource и большие документы
↗
6.
Ошибки разбора и валидация: error_code, parse_options, схема
↗
7.
Конфигурация Rota: rota.json, файлы пайплайнов, умолчания
↗
8.
Практика: загрузчик конфигурации и API-модели Rota
↗
Boost.Asio: модель исполнения
8 уроков
1.
io_context, executors и any_io_executor
↗
2.
Completion tokens: callbacks, use_awaitable, deferred, future
↗
3.
C++20-корутины в Asio: awaitable, co_spawn, detached
↗
4.
Таймеры: steady_timer, периодические задачи, планировщик
↗
5.
Strands и потокобезопасность: один io_context, несколько потоков
↗
6.
Отмена операций: cancellation_signal, slot, типы отмены
↗
7.
Сигналы ОС, graceful shutdown, post/dispatch/defer, thread_pool
↗
8.
Практика: асинхронное ядро планировщика Rota
↗
Boost.Asio: сеть и протоколы
8 уроков
1.
TCP: acceptor, socket, resolver, endpoints
↗
2.
Буферы Asio: const_buffer, mutable_buffer, dynamic_buffer
↗
3.
async_read, async_write, async_read_until и composed operations
↗
4.
Таймауты: awaitable operators, отмена по таймеру
↗
5.
SSL и TLS в Asio: ssl context, ssl stream, сертификаты
↗
6.
Свои composed operations: async_compose и async_result
↗
7.
UDP, локальные сокеты и диагностика сетевых ошибок
↗
8.
Практика: TCP-агент статуса Rota (line protocol)
↗
Boost.Beast: HTTP и WebSocket
8 уроков
1.
Beast поверх Asio: message, fields, body, parser и serializer
↗
2.
HTTP-сервер на корутинах: сессия, keep-alive, таймауты
↗
3.
Маршрутизация запросов: Boost.URL и обработчики Rota API
↗
4.
JSON-тела запросов и ответов, единый формат ошибок API
↗
5.
HTTP-клиент Beast: вебхуки Rota и повтор с backoff
↗
6.
WebSocket-сервер: поток событий запусков
↗
7.
Beast: буферы, flat_buffer, тела файлов, chunked, HTTPS
↗
8.
Практика: HTTP API и WebSocket Rota
↗
Boost.Cobalt: корутины поверх Asio
8 уроков
1.
Cobalt: зачем ещё один слой над Asio, main, run и thread
↗
2.
task и promise: ленивые и жадные корутины
↗
3.
generator: ленивые последовательности и push-генераторы
↗
4.
channel: обмен между корутинами и backpressure
↗
5.
race, gather, join и таймауты
↗
6.
with, async RAII и отмена в Cobalt
↗
7.
Совместимость Cobalt с asio awaitable, Beast и Process
↗
8.
Практика: конвейер запуска задач Rota на Cobalt
↗
Boost.Process и Boost.DLL: процессы и плагины
8 уроков
1.
Boost.Process v2: process, execute, exit codes
↗
2.
Асинхронный запуск: async_execute, readable_pipe, process_stdio
↗
3.
Окружение, рабочий каталог, поиск исполняемого файла
↗
4.
Таймауты, terminate, request_exit, группы и различия ОС
↗
5.
Boost.DLL: shared_library, импорт символов и alias
↗
6.
Плагины исполнителей Rota: интерфейс, ABI, жизненный цикл
↗
7.
Boost.Filesystem рядом со стандартным filesystem, каталоги задач
↗
8.
Практика: process executor и plugin executor Rota
↗
Boost.Graph: DAG задач
8 уроков
1.
adjacency_list: выбор контейнеров, свойства вершин и рёбер
↗
2.
Построение DAG пайплайна из конфигурации
↗
3.
topological_sort и проверка ацикличности
↗
4.
Обходы: depth_first_search, breadth_first_search, visitors
↗
5.
Критический путь и веса: длиннейший путь в DAG
↗
6.
Динамические графы, filtered_graph, subgraph
↗
7.
Экспорт в Graphviz и визуализация
↗
8.
Практика: планирование порядка запуска в Rota
↗
Многопоточность и межпроцессное взаимодействие
8 уроков
1.
Boost.Thread рядом со стандартным thread: что осталось полезного
↗
2.
Boost.Atomic: atomic_ref, memory order, wait/notify, ipc_atomic
↗
3.
Boost.Lockfree: spsc_queue, queue, stack
↗
4.
Boost.Fiber: пользовательские потоки и планировщики
↗
5.
Boost.Interprocess: shared memory, managed segments, аллокаторы
↗
6.
Boost.Interprocess: синхронизация, message_queue, статус-доска
↗
7.
Boost.Pool и Boost.Align: аллокаторы и выравнивание
↗
8.
Практика: shared-memory статус и lock-free метрики Rota
↗
Обобщённый код, события и машины состояний
8 уроков
1.
Boost.Mp11: списки типов, mp_for_each, mp_with_index
↗
2.
Boost.Variant2 и Boost.Optional: visit без valueless
↗
3.
Boost.TypeErasure, Boost.Callable_traits и Boost.Compat
↗
4.
Boost.Signals2: сигналы, соединения, combiners
↗
5.
Boost.MSM: машина состояний запуска задачи
↗
6.
Boost.MSM: guards, actions, подмашины, обработка ошибок
↗
7.
Boost.Hana и Boost.Describe для конфигурации типов
↗
8.
Практика: событийная шина и жизненный цикл Run в Rota
↗
Эксплуатация: логирование, конфигурация, время, потоки данных
8 уроков
1.
Boost.Log: trivial, severity, глобальные логгеры
↗
2.
Boost.Log: sinks, форматтеры, атрибуты, ротация файлов
↗
3.
Boost.Log: каналы, фильтры, асинхронный sink, структурные логи
↗
4.
Boost.Program_options: CLI rotad и rota, конфиг-файлы, окружение
↗
5.
Boost.DateTime и Boost.Chrono рядом со стандартным chrono
↗
6.
Boost.Iostreams: фильтры, gzip логов, mapped files
↗
7.
Boost.Histogram и Boost.Accumulators: метрики длительностей
↗
8.
Практика: наблюдаемость Rota — логи, метрики, CLI
↗
Персистентность и интеграция с хранилищами
8 уроков
1.
Boost.Serialization: архивы, serialize(), версии классов
↗
2.
Boost.Serialization: указатели, полиморфизм, контейнеры, снапшот
↗
3.
Boost.Endian и Boost.CRC: бинарный журнал событий
↗
4.
Boost.Hash2 и Boost.Uuid: идентификаторы и контрольные суммы
↗
5.
Boost.Redis: connection, request, response, pub/sub
↗
6.
Boost.Redis в Rota: распределённая блокировка и события
↗
7.
Boost.MySQL: any_connection, prepared statements, static_results
↗
8.
Практика: история запусков Rota в MySQL и снапшоты
↗
Тестирование, сборка и финальный запуск
8 уроков
1.
Boost.Test: организация тестов, suites, BOOST_TEST
↗
2.
Boost.Test: fixtures, data-driven, параметры командной строки
↗
3.
Тестирование Asio- и Beast-кода: io_context в тестах
↗
4.
Тесты Process, Graph и JSON-контрактов
↗
5.
CMake для Boost-проекта: цели, опции, install, vcpkg manifest
↗
6.
Sanitizers, warnings, Boost.Stacktrace в production
↗
7.
Docker и Docker Compose для Rota
↗
8.
Практика: финальная сборка, запуск и приёмка Rota
↗