О блоге
Усложнять - просто, упрощать - сложно
Об авторе
Привет! Меня зовут Андрей, я давно и с удовольствием разрабатываю и поддерживаю решения на C++. Сфера моих интересов и компетенций включает, но не ограничивается:
- Проектирование и разработка серверной архитектуры на C++/Linux. Создание отказоустойчивых HTTP и WebSocket бэкендов для приложений с разной спецификой: игровые проекты, интернет-магазины, финтех, складской учет.
- OpenGL/WebGL: оптимизация рендера (instanced draw, transform feedback), рефлексия C++ vertex-структур в VAO — zero-boilerplate инициализация вершинных форматов
- Доменно-специфичная рефлексия как таковая: построение удобной, надежной и вычислительно-эффективной системы описания объектов с помощью offsetof, reinterpret_cast и какой-то матери так, чтобы все необходимое работало из коробки: диспетчеризация значений параметров и событий между иерархиями и репозиториями объектов, их сериализация для хранения и передачи по сети, отражение в SQL, отображение в визуальных редакторах свойств.
- Qt. теряюсь, как развернуть эту тему красиво. В моей профессиональноый жизни очень много Qt. Пожалуй, больше, чем я бы того хотел (:
Помимо непосредственно разработки, меня как и любого разработчика окружает достаточно количество смежных задач:
- Администрирование серверов linux во всех его проявлениях
- Профилирование рантайма на консолях: работа с Microsoft PIX (GPU/Timing Captures для DirectX 12 на Xbox Dev Kit) и Nintendo NDK / nsprof (профилирование CPU/GPU на Switch)
- Профилирование и отладка на PC, преимущественно в linux: VTune Profiler, valgrind, renderdoc
- Много рутинной возни с CD/CI: развертывание сборочных серверов с ansible, настройка jenkins. Был опыт развертывания GitLab, теперь предпочитаю Forgejo
- Proxmox у меня не в продакшене, а в домашнем стенде — на нём собрано всё: от сборочных серверов до файлопомоек, с которых дети смотрят мультики.
Я любопытный. Кустарная реализация того, что уже и так имеет сотни имплементаций - это, пожалуй, одно из моих хобби
- Signed distance field рендеринг текста и монохромных изображений
- Упаковка спрайт-листов
- HTML шаблонизатор-минификатор (не надо далеко ходить - он только что собрал вам эту страницу, загляните во View Page Source)
- Встроенный профилировщик: собираем ошибки, дерево вызовов и счетчик reentrancy, длительность выполнения сами про себя
О сайте
Я пишу заметки постоянно. Иногда они оказываются полезными даже спустя время. Решил, что логичнее хранить их в открытом доступе: если материал сэкономит кому-то время — уже хорошо.
Бэкенд сайта написан на C++. Как иначе-то. В качестве reverse proxy используется nginx, из сторонних библиотек — только libwebsockets и MariaDB Connector/C.
Чем я могу помочь
- Локализация и устранения каверзных проблем и оптимизация производительности;
- А что, так можно было?! - я люблю находить и имплементировать системные решения вне общепринятых подходов, облегчающие рутинную работу над задачами бизнеслогики и вообще, делающие код таким, что с ним хочется работать дальше
Контакты
- Telegram: @bitmaskmagic