Библиотека C/C++ разработчика
Открыть в Telegram
Полезные материалы по всему, что может быть полезно плюсовику/сишнику. По всем вопросам @evgenycarter
Больше7 325
Подписчики
+524 часа
+67 дней
+1230 день
Архив постов
Dockerизированная toolchain в CLion с Conan
При разработке на C++ часто возникает необходимость воспроизводимой среды для сборки. Особенно если проект разрабатывается командой, где у каждого разработчика разные операционные системы и окружения. Тут на помощь приходит Docker.
Зачем это нужно?
- Единая среда для всех участников команды
- Изоляция от локальной системы
- Упрощение CI/CD
Интеграция с CLion
CLion поддерживает удалённые toolchain, включая Docker-контейнеры. То есть вы можете настроить сборку и отладку прямо в IDE, используя контейнер как основную среду.
Conan + Docker
Conan используется для управления зависимостями. Вместе с Docker это даёт:
- Контролируемую установку зависимостей
- Воспроизводимость билдов
- Возможность легко переключаться между разными окружениями
Краткие шаги настройки:
1. Создайте Docker-образ с нужными компиляторами и инструментами.
2. Настройте Toolchains в CLion, указав Docker как удалённую среду.
3. Подключите Conan для управления зависимостями.
4. Собирайте и отлаживайте проект прямо в контейнере.
Такой подход особенно полезен для кросс-платформенной разработки и больших командных проектов, где важна стабильность окружения.
https://schneide.blog/2025/06/23/dockerized-toolchain-in-clion-with-conan/
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
🛠 Каждый C++-разработчик знает: здесь нельзя писать «на удачу». Одно неверное обращение к памяти — и всё падает. Если вам не хватает системности, уверенности в многопоточности, работы с сетью или просто хочется наконец разобраться, почему код ведёт себя именно так — это повышение квалификации станет апгрейдом вашего уровня.
👩💻 На курсе «C++ Developer. Professional» вы изучите язык до мельчайших деталей: от шаблонов и паттернов проектирования до принципов эффективного многопоточного кода и стандартов C++20 и 23. 14 практических работ, эксперты из индустрии и живая поддержка менторов помогут вам вывести свои проекты на уровень, который требует рынок.
Если вы хотите писать стабильный, быстрый и понятный код — научитесь мыслить как инженер, а не просто программист.➡️ Пройдите короткое вступительное тестирование и получите скидку на обучение, старт совсем скоро: https://vk.cc/cUiWeC Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Ошибки, которые не случились: C++ и compile‑time проверка SQL-запросов
В этой статье мы посмотрим, как можно реализовать полную compile‑time валидацию SQL‑запросов на основе схемы базы данных, встраиваемой прямо в код. Без магии, без рантайма, без сторонних тулов. Только стандартный C++ и ваша структура БД. Валидация таблиц, столбцов, типов аргументов и их количества — всё на compile‑time.
Представьте, если бы компилятор сам указывал «такой таблицы нет», «несуществующий столбец», «несовместимые типы» — до запуска программы. Такой подход полностью устраняет «сюрпризы» во время исполнения и исключает класс ошибок, связанных с генерацией SQL во время работы программы. Ваша программа даже не соберётся.
https://habr.com/ru/articles/929052/
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
Запись System Level MeetUp. Поток C++
Мы встретились, чтобы поговорить об C++ в системной разработке: обсудить стандарты, подходы и реальные задачи, которые решаются на этом языке.
00:00 - Открытие мероприятия.
08:30 - Доклад "Девиртуализация в C++, компиляторах и вашей программе" (Константин Владимиров и Илья Андреев).
47:50 - Вопросы от участников.
01:00:32 - Доклад "Кодек для json'ов с фиксированной схемой" (Никита Пешаков).
01:27:33 - Вопросы от участников.
01:43:04 - Дискуссия "Как писать меньше на C++?" (Константин Владимиров, Илья Казаков, Алексей Щербаков, Василий Рамаданов).
02:43:06 - Доклад "Реализация динамического полиморфизма для свободных функций" (Кирилл Колодяжный).
03:00:56 - Вопросы участников.
03:11:00 - Доклад "Шаблонное мета-программирование в современном C++ для задач космической баллистики" (Леонид Меркин).
03:59:32 - Вопросы участников.
04:06:05 - Доклад "C++ внутри PostgreSQL: удобство против традиций" (Илья Шишков).
04:46:55 - Вопросы участников.
источник
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
👩💻 Открытый урок «Lock-free в C++: Без блокировок к высокой производительности».
🗓 09 февраля в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «C++ Developer. Professional».
Мьютексы и блокировки долгое время считались стандартом синхронизации в C++. Но по мере роста нагрузки именно они всё чаще становятся узким местом и тормозят масштабирование многопоточных систем.Что будет на вебинаре: На открытом уроке разберём, как устроено lock-free программирование и почему современные C++-приложения всё чаще отказываются от классических блокировок. Поговорим о том, какие задачи действительно выигрывают от lock-free подхода и какие механизмы предоставляет стандарт C++ для работы с атомарными операциями и памятью. Кому будет интересно: • Начинающим программистам C++ • Программистам на других языках, которые хотят сравнить подходы к многопоточности в их технологии с подходами в C++ 🔗 Ссылка на регистрацию: https://vk.cc/cU2Pw6 Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Лаконичный макрос defer для C++17
Ручное управление ресурсами в низкоуровневом си-подобном коде на C++ — довольно хлопотное занятие. Создание достойных RAII-врапперов для каждого используемого сишного API не всегда практично, а использование подходов с goto cleanup или множеством вложенных if (success) вредит читаемости кода.
Макрос defer как никогда кстати! Отложенная лямбда будет выполнена при выходе из области видимости, независимо от того, будет ли выполнен return, брошено исключение, или даже выполнен goto наружу. Данный макрос по-настоящему zero-cost и не зависит от рантайма C или стандартной библиотеки, поэтому его можно использовать даже в разработке под ядро ОС.
https://habr.com/ru/articles/916732/
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
Низкоуровневый скриптинг на C++ для игровых движков
Я постарался охватить только основы, но текст всё равно получился очень длинным.
libriscv — это зрелый эмулятор RISC-V, который в настоящее время используется в игровых движках. Насколько мне известно, это единственный эмулятор, в котором основной акцент делается на обработке задержек, а также предоставляются специализированные решения и инструменты для выполнения быстрых вызовов при обращении с функциями — как входящих, так и исходящих. Причём, всё это заключено в безопасной песочнице. Задержки, наблюдаемые в libriscv, гораздо ниже, чем в эталонных эмуляторах.
Меня многие спрашивали, как им пользоваться, но здесь интереснее то, как вообще может прийти в голову мысль писать скрипты на C++ — не слишком ли сложно это будет? Оказывается, нет, не очень. Вот уже несколько лет я пишу на C++ скрипты для одной большой и одной не очень большой игры, и меня почти не посещало ощущение, что виной каким-то возникающим при этом проблемам являются язык C++ или связанные с ним скриптовые API. Я много лет программирую на Lua, а до этого пользовался обычным C. Но сейчас современный идиоматический C++ — то, что мне нужно. Причём, я могу писать на этом языке как в самом игровом движке, так и за его пределами, при этом опираясь (буквально) на одни и те же абстракции и оперируя одинаковыми структурами данных. Наконец, C++ просто очень мощный. Правда, я признаю, что о вкусах не спорят, и при работе с C++ также не обойтись без компромиссов.
https://habr.com/ru/articles/919620/
original https://fwsgonzo.medium.com/an-introduction-to-low-latency-scripting-with-libriscv-ad0619edab40
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
Руководство по сборке Qt под Windows из исходников с MinGW
Официальный способ установки готовых бинарников Qt - через онлайн инсталлятор. Однако он требует обязательной регистрации. Да еще и недоступен на территории РФ. Есть и другие способы получить бинарники, или собрать с компилятором от Microsoft, однако не всегда эти способы приемлемы. Сборка из исходников под Windows может оказаться несколько нетривиальна для новичков, потому сделал небольшую инструкцию по сборке Qt 5 и Qt 6. А так же рассмотрена базовая настройка QT Creator.
https://habr.com/ru/articles/917252/
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
Опенсорс от кристалла до программного стека
Нужны ли нам открытые архитектуры? Что нам нужно, чтобы они работали? В этом докладе мы попытаемся изложить основные проблемы и преимущества открытых архитектур на примере RISC-V — и расскажем про то, как происходит разработка различных инструментов, включая генераторы, компиляторы, средства бенчмаркинга.
00:00 Введение. Архитектура RISC-V, открытая и расширяемая (sigh).
05:38 Стадии конвейера и интерфейсы.
13:37 Открытые ядра на базе RISC-V, тестовое окружение и проблема верификации
19:14 Компиляторные технологии и LLVM
24:46 Моделирование и верификация RISC-V на разных уровнях и llvm-snippy
29:17 Задача бенчмаркинга и llvm-exegesis
34:24 Проблема высокоуровневого ПО, профили и развитие экосистемы
41:15 Ответы на вопросы
источник
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
Проектируем змейку под учебный RISC-V микроконтроллер
На третьем курсе некоторые направления в МИЭТ проходят лабораторный практикум, на котором им даётся возможность спроектировать собственную систему архитектуры RISC-V и написать под неё программу на С или C++.
В качестве затравки и повышения мотивации, хотелось показать им на что будет способна их процессорная система, и для этого было решено написать какую-нибудь простенькую игру, не требующую особых требований к ресурсам и графике. Так выбор пал на Змейку.
В этой я расскажу о том, как была написана данная игра под платформу, поддерживающую символьный вывод.
https://habr.com/ru/articles/915450/
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
Логика коэволюции компиляторов, инструментов разработки и языков программирования.
Выступление в институте iSpring 17 мая 2025 года. Огромная благодарность организаторам за приглашение и за разрешение выложить запись на моём канале.
В этой лекции мы поднимемся от самого нижнего уровня -- отдельных транзисторов до высокоуровневых языков программирования и проследим совместное развитие механизмов абстракции и инструментов разработки.
00:00 Начало: бинарные цифровые компьютеры
06:00 Мнемоническое представление и проблемы двоичного кода
14:10 Релокации и изобретение линкера
17:25 Язык ассемблера, секции и ассемблер как программа
24:30 Дизассемблер.
30:25 ABI и соглашения о вызове
35:35 Библиотеки
40:55 Проблемы ассемблера
48:10 Алгоритмические языки и компиляторы
54:45 Компилятор и его ограничения
01:03:40 Оптимизации в бэкенеде: inline и LTO
01:15:00 Гарантии по именам и механизмы абстракции
01:19:55 Завершение: абстракции не случайны
источник
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
👩💻 Паттерны проектирования на С++
Приглашаем на открытый урок.
🗓 28 января в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «C++ Developer. Professional».
На вебинаре сформируем чёткое понимание паттернов проектирования в C++, покажем их реальную ценность в разработке и продемонстрируем, как применять их в повседневных задачах.
Разберём несколько интересных и полезных паттернов для повседневности:
✔️ Строитель (Builder)
✔️ Адаптер (Adapter)
✔️ Легковес (Flyweight)
✔️ Команда (Command)
✔️ Мементо (Memento)
🔗 Ссылка на регистрацию: https://vk.cc/cTBlEB
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
🚀 JSON тормозит? Вы просто не умеете его готовить
Казалось бы, парсинг JSON - задача решенная. Взял библиотеку, вызвал метод, получил объект. Но что делать, когда сервис начинает задыхаться под нагрузкой, а профайлер предательски указывает на десериализацию?
Автор столкнулся именно с такой проблемой. Спойлер: просто сменой библиотеки дело не ограничилось. Пришлось погрузиться в работу с памятью и архитектурные оптимизации.
Результат впечатляет: ускорение в 4 раза по сравнению с исходным решением.
В статье подробно описан путь от «у нас проблема» до «летит как ракета». Отличный кейс по оптимизации C++ кода.
👉 Ссылка на статью: https://habr.com/ru/articles/908406/
📲 Мы в MAX
#cpp #json #optimization #highload #habr
👉 @cpp_lib
Генерация лабиринтов: алгоритм Эллера
Сегодня я хотел бы рассказать о генерации идеального лабиринта — алгоритмом Эллера. Статья подойдёт всем любителям алгоритмов»
https://habr.com/ru/articles/667576/
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
ggwave — это компактная и переносимая библиотека C/C++ для передачи и приема коротких сообщений с использованием звуковых волн.
Она позволяет устройствам обмениваться данными через звук — без необходимости в Bluetooth, Wi-Fi или других беспроводных технологиях. Это особенно полезно для коротких одноразовых взаимодействий между устройствами, которые находятся рядом друг с другом.
Поддерживает:
* Передачу текста через звук
* Возможность генерации и анализа аудиосигналов в реальном времени
* Кроссплатформенность: работает на Windows, macOS, Linux, iOS, Android и в браузере (через WebAssembly)
Примеры использования:
* Аутентификация устройств поблизости
* Обмен контактами или ссылками
* Синхронизация устройств без интернета
https://github.com/ggerganov/ggwave
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
Этот проект содержит исходный код игр Command & Conquer: Tiberian Dawn и Command & Conquer: Red Alert, выпущенных как часть сборника Command & Conquer Remastered Collection.
Код распространяется под лицензией GPL v3 и предоставляет возможность энтузиастам и разработчикам модифицировать, изучать и использовать движок в рамках условий лицензии. В проекте используется C++ и множество современных практик разработки, а также система сборки CMake.
Репозиторий включает:
* Исходный код движка на C++
* Документацию по сборке
* Скрипты для интеграции с игрой
* Исторический контекст разработки
Проект ориентирован на обучение, поддержку моддинга и развитие сообщества вокруг классических RTS-игр.
https://github.com/electronicarts/CnC_Remastered_Collection
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
🧑💻Пишете на Vue и давно работаете с Vue Router по привычке? Сейчас в экосистеме появляется новая опция — Kitbag Router. Лёгкий повод пересобрать подход к роутингу и обновить стек.
На открытом уроке разберём, как подключить его к проекту, настроить под свой стек и чем он принципиально отличается от Vue Router. Пошагово пройдём путь от установки до рабочих маршрутов в SPA.
Вы познакомитесь с новой библиотекой роутинга для VueJS, научитесь создавать приложения с клиентским роутингом на Kitbag Router, сравнивать его с Vue Router и осознанно выбирать инструмент под задачу.
📆Встречаемся 21 января в 20:00 МСК в преддверие старта курса «Vue.js разработчик». Регистрация открыта: https://vk.cc/cTo00r
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Уже доступно! Исследование Telegram 2025 — ключевые инсайты года 
