Классы политик в стиле Александреску: компонуйте поведение из взаимозаменяемых политик времени компиляции вместо переключателей времени выполнения. Нулевые накладные расходы, никакого виртуального вызова, неограниченная настраиваемость.
#templates#policy#crtp#c++20#metaprogramming
От SFINAE до концептов: как ограничивать шаблоны, писать трейты типов и задавать контракты времени компиляции. Практические паттерны C++17 и C++20 без академической теории.
#templates#concepts#c++20#c++17#metaprogramming
Как работает стирание типов в C++. Внутренности std::function, std::any, самодельное стирание типов с буфером хранения — когда каждый подход стоит своей сложности.
#templates#vtable#type-erasure#c++17#performance
Построение встраиваемого HMI на Qt. Архитектура сигнал-слот, фоновые рабочие потоки, отзывчивость UI и безопасная межпоточная коммуникация.
#qt#embedded#hmi#threads#signals
Эволюция автомата состояний прошивки от базового enum+switch до табличного дизайна и паттерна объектов-состояний. Практические примеры на STM32.
#fsm#embedded#stm32#firmware#patterns
Готовые к использованию CRTP-примеси: логирование, включение/отключение, сравнение, вывод, подсчёт экземпляров. Добавляйте в любой класс без виртуальной диспетчеризации.
#crtp#mixins#templates#patterns#c++
Классы политик в стиле Александреску: компонуйте поведение из взаимозаменяемых политик времени компиляции вместо переключателей времени выполнения. Нулевые накладные расходы, никакого виртуального вызова, неограниченная настраиваемость.
#templates#policy#crtp#c++20#metaprogramming
Как работает стирание типов в C++. Внутренности std::function, std::any, самодельное стирание типов с буфером хранения — когда каждый подход стоит своей сложности.
#templates#vtable#type-erasure#c++17#performance
Инкапсуляция операций как объектов. Стеки отмены/повтора, запись макросов, очереди отложенного выполнения — с примером UI на Qt.
#gof#qt#patterns#undo#command
Практическое руководство по perf и valgrind: что измеряет каждый инструмент, какие команды запускать и как читать вывод для поиска реальных узких мест производительности.
#profiling#perf#valgrind#performance#optimization
Как кэш-линии CPU определяют, помогает ли ваш способ хранения данных производительности или вредит ей. Массив структур vs структура массивов — с измерениями.
#cache#performance#simd#data-structures#optimization
Почему стандартная куча ломает встраиваемые прошивки и высокопроизводительные серверы. Пул-аллокаторы, аллокаторы-арены и стековые аллокаторы — реализация, компромиссы и применение.
#allocators#memory#embedded#performance#heap
Построение встраиваемого HMI на Qt. Архитектура сигнал-слот, фоновые рабочие потоки, отзывчивость UI и безопасная межпоточная коммуникация.
#qt#embedded#hmi#threads#signals
Эволюция автомата состояний прошивки от базового enum+switch до табличного дизайна и паттерна объектов-состояний. Практические примеры на STM32.
#fsm#embedded#stm32#firmware#patterns
Когда HAL STM32 — правильный выбор, когда доступ к регистрам его превосходит, и как смешать оба подхода в многоуровневой архитектуре прошивки без создания хаоса.
#stm32#hal#bare-metal#embedded#firmware
Готовые к использованию CRTP-примеси: логирование, включение/отключение, сравнение, вывод, подсчёт экземпляров. Добавляйте в любой класс без виртуальной диспетчеризации.
#crtp#mixins#templates#patterns#c++
Типобезопасный пул объектов фиксированной ёмкости для встраиваемых систем и систем реального времени. O(1) выделение и освобождение, без фрагментации кучи, совместим с unique_ptr.
#allocators#embedded#performance#memory#patterns
Единственная корректная реализация синглтона на C++11. Почему двойная проверка блокировки была сломана до C++11, почему работает сейчас и когда избегать синглтонов вообще.
#singleton#concurrency#c++11#patterns