Рубрика «c++»

Microsoft рекомендует современный WinUI 3 в качестве официального фундамента для будущих Windows‑приложений. Однако, стандартный стек C++/WinRT + XAML встречает разработчика чудовищным временем компиляции, миксиновым адом вместо нативного наследования, тоннами шаблонной рутины и плохочитаемым кодом.

В этой статье мы разберем архитектуру wxl — тонкой надстройки, которая позволяет описывать GUI на чистом C++23 декларативно (как во Flutter или SwiftUI). Вы узнаете, как сжать заголовочные файлы проекции в 50 раз, сократить время пересборки с полуминуты до 4 секунд, победить накладные расходы QueryInterfaceЧитать полностью »

Есть такая старая программистская байка, что нельзя платить программистам за строки кода, так как тогда они будут писать длинный бестолковый код и любить метод copy-paste. Будущее наступило. Только теперь этими “программистами” является генеративный ИИ (GenAI), которому как раз платят за строки кода. Иронично.

Пухлый вайб-код на С++

Пухлый вайб-код на С++

Читать полностью »

TL;DR. В распределённой СУБД YDB (читается вай‑ди‑би) векторный поиск по kmeans‑tree индексу раскрывался оптимизатором в цепочку из нескольких стадий StreamLookup. Это работало, но порождало большие планы запросов и существенно затрудняло оптимизации самого поиска. Я заменил эту цепочку одним специализированным read‑актором TKqpVectorSearchActor, который берёт всю логику обхода индекса под свой контроль, а не размазывает её по независимым стадиям.

Результат на стенде: 226.8 → 290.9 запросов/с (+28%), p50 42 → 33 мс, p99 66 → 53 мсЧитать полностью »

Привет, читатель!

Однажды, после просмотра ролика про эволюцию Вселенной, я загорелся идеей создать свою, со своими правилами. В итоге я написал собственный физический движок на С++, и в этой статье я расскажу про него, историю создания, и разные нюансы.

Как я создал свою мини‑Вселенную - 1

День, который всё изменил

Читать полностью »

Преамбула

Некоторое время назад передо мной встала задача спроектировать высокопроизводительный балансировщик нагрузки для протокола Diameter. Через три месяца проект на стороне заказчика свернули — решение показалось слишком долгим и дорогим в разработке. Тем не менее, я довел дело до конца и собрал MVP, готовый к развертыванию как на «голом железе», так и в облачной инфраструктуре.

Продукт получился отличным: он с лихвой выигрывал у имевшегося в компании решения, превосходя его по производительности примерно в 6 раз, а по эффективности использования ресурсов — почти в 100 раз.

Читать полностью »

Привет. Расскажу, как я собрал ИИ-Автопилот — замкнутый цикл разработки, где задача входит тикетом в YouTrack, а выходит GUI-проверенным исправлением в продукте. Агент разбирается в задаче, правит C+±код, собирает, идёт в живой интерфейс нашего геофизического приложения, проверяет там результат — и закрывает тикет ответом человеку в YouTrack. Дальше расскажу, как оно выросло и где людям всё ещё есть чем заняться.

Читать полностью »

Docker для userver удобен, но не обязателен. Ниже — рабочий путь: системные пакеты + CMake/Ninja + сборка сервиса из официального шаблона нативно.

Статья по мотивам реального подъёма сервиса на Ubuntu (без make docker-*).

Зачем без Docker

  • быстрее итерации по коду (нет обёртки контейнера);

  • проще отладка в IDE / sanitizers;

  • понятнее, какие библиотеки реально нужны.

Минус: первая сборка долгая — CMake тянет userver через CPM и компилирует сотни файлов.

Что понадобится

Доверьтесь компилятору: C++23 против трюков из 90-х - 1

Разработчики на C++ с самого начала изучают догмы о производительности: быстрый обратный квадратный корень, XOR‑обмен, Читать полностью »

Введение

Если вы когда-нибудь собирали проекты на C++, то практически наверняка получали ошибку от линковщика формата:

/usr/bin/ld: /tmp/ccYa2eaO.o: в функции «foo()»:
foo.cpp:(.text+0x0): повторное определение «foo()»; /tmp/ccKEs5I7.o:main.cpp:(.text+0x0): здесь первое определение
collect2: error: ld returned 1 exit status

Опытным C++ разработчикам эта проблема известна как ODR (One Definition Rule). Но корень этой ошибки выходит далеко за рамки «используй inline в .hpp» и «не определяй ничего в .hpp».

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js