C++ Developer • Cpp System Programming. HighLoad, Алгоритмы и Структуры данных. Разработка на Linux и Windows. STL, Boost, Qt и Embedded.


Гео и язык канала: Россия, Русский
Категория: Технологии


Канал для серьезных C++ программистов. Глубокое погружение в STL, Boost и метапрограммирование (Templates). Управление памятью (Memory Management), умные указатели и безопасность кода. Разработка высоконагруженных систем, сетевое программирование и Embedded (встраиваемые системы). Сборка через CMake, компиляторы GCC/Clang. Подготовка к собеседованиям: LeetCode, System Design и ООП.

Связанные каналы

Гео и язык канала
Россия, Русский
Категория
Технологии
Статистика

Ошибки, которые не случились: C++ и compile‑time проверка SQL-запросов

В этой статье мы посмотрим, как можно реализовать полную compile‑time валидацию SQL‑запросов на основе схемы базы данных, встраиваемой прямо в код. Без магии, без рантайма, без сторонних тулов. Только стандартный C++ и ваша структура БД. Валидация таблиц, столбцов, типов аргументов и их количества — всё на compile‑time.

Представьте, если бы компилятор сам указывал «такой таблицы нет», «несуществующий столбец», «несовместимые типы» — до запуска программы. Такой подход полностью устраняет «сюрпризы» во время исполнения и исключает класс ошибок, связанных с генерацией SQL во время работы программы. Ваша программа даже не соберётся.

https://habr.com/ru/articles/929052/

#cpp #programming

👉 @cpp_lib


Эффективное использование С++

Лекция 1. Библиотеки, утилиты, средства разработки, сборка (Эффективное использование С++)
Лекция 2. Работа с памятью. Утечки ресурсов. RAII, умные указатели (Эффективное использование С++)
Лекция 3. Move semantics, rvalue reference, perfect forwarding.
Лекция 4. Callbacks: lambda, bind & function.
Лекция 5. Multithreading in C++ (потоки, блокировки, задачи, атомарные операции, очереди сообщений)
Лекция 6. Обзор возможностей современных стандартов C++

источник

#cpp #programming

👉 @cpp_lib


Курс по ООП в С++

введение
инкапсуляция
наследование
полиморфизм
шаблоны и метапрограммирование

источник

#cpp #programming

👉 @cpp_lib


🎥 Вебинар по C++: Паттерн многопоточного программирования «Producer-Consumer»

Когда несколько потоков одновременно работают с данными, недостаточно просто «запустить работу параллельно». Нужно правильно организовать передачу задач между потоками, не потерять данные и избежать ситуаций, когда приложение внезапно зависает.

👉 Разберём один из самых распространённых паттернов многопоточной разработки - Producer-Consumer. На практическом примере посмотрим, как один или несколько потоков создают задачи, другие их обрабатывают и какую роль между ними играет общая очередь.
Отдельное внимание уделим проблемам, с которыми разработчики сталкиваются на практике: гонкам данных, зависаниям, неправильной синхронизации и ситуации, когда задачи поступают быстрее, чем успевают обрабатываться.

🤓 План вебинара:
- Producer-Consumer: какую задачу решает паттерн
- Собираем Producer-Consumer на C++
- Почему многопоточный код «иногда работает, а иногда нет»
- Что делать, если Producer работает быстрее Consumer
- Разбор итоговой реализации и вопросы

🧠 Вебинар приурочен к старту курса «C++-разработчик. Продвинутый уровень», который помогает системно усилить навыки: от современных стандартов C++20 и C++23 до проектирования, многопоточности, работы с сетью, базами данных и большими объёмами информации.

👉 Для участия зарегистрируйтесь: https://vk.cc/d221Fs

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru


Respect++

#cpp #programming

👉 @cpp_lib


#cpp #programming

👉 @cpp_lib


Видео недоступно для предпросмотра
Смотреть в Max
Сегментация памяти в программе на C/C++

#cpp #programming

👉 @cpp_lib


RAII 2.0: RAII как архитектурный инструмент в C++

Идиома RAII — давно зарекомендовал себя как удобный способ автоматического управления ресурсами в C++. Обычно мы применяем его для управления памятью, файловыми дескрипторами или мьютексами. Однако что, если расширить понятие RAII до управления не только физическими ресурсами, но и логическими контрактами и состояниями системы?

В этой статье я хочу поговорить о том, как RAII можно использовать для контроля жизненного цикла асинхронных операций, транзакций или подписок, гарантируя их корректное завершение или откат до прежнего состояния.

https://habr.com/ru/articles/901092/

#cpp #programming

👉 @cpp_lib



ИТ-сообщество, хватит онлайн-митапов – приходите офлайн.

18 сентября в Москве состоится ЛЦТ. Старт Кодинга, открывающее событие восьмого сезона хакатона «Лидеры цифровой трансформации». Деловые сессии, нетворкинг, битва роботов, полигон роверов, зона кодинга и другие активности.

📅 18 сентября, с 15:00
📍 Центр роботизации «Создатели», ул. Миклухо-Маклая, 27А, 3 этаж (м. Беляево)
🔗 Регистрация на событие и подробности по ссылке. Количество мест ограничено!


Удобный способ работы с перечислениями в C++ — приведение enum к строке и обратно.

Во многих проектах используется enum, чтобы задать ограниченный набор значений. Но как вывести значение enum в лог? Или, наоборот, прочитать из строки и получить нужное значение enum?

C++ сам по себе не умеет конвертировать enum в строку и обратно. Вот простая реализация этого функционала через std::unordered_map:

enum class LogLevel {
Debug,
Info,
Warning,
Error
};

const std::unordered_map<LogLevel, std::string> LogLevelToString = {
{LogLevel::Debug, "Debug"},
{LogLevel::Info, "Info"},
{LogLevel::Warning, "Warning"},
{LogLevel::Error, "Error"},
};

const std::unordered_map<std::string, LogLevel> StringToLogLevel = {
{"Debug", LogLevel::Debug},
{"Info", LogLevel::Info},
{"Warning", LogLevel::Warning},
{"Error", LogLevel::Error},
};

std::string to_string(LogLevel level) {
return LogLevelToString.at(level);
}

LogLevel to_log_level(const std::string& str) {
return StringToLogLevel.at(str);
}

Такой подход хорошо работает, если enum не слишком большой. Если значений много — можно автоматизировать генерацию через макросы или использовать библиотеки вроде magic_enum.

#cpp #programming

👉 @cpp_lib


Лаконичный макрос defer для C++17

Ручное управление ресурсами в низкоуровневом си-подобном коде на C++ — довольно хлопотное занятие. Создание достойных RAII-врапперов для каждого используемого сишного API не всегда практично, а использование подходов с goto cleanup или множеством вложенных if (success) вредит читаемости кода.

Макрос defer как никогда кстати! Отложенная лямбда будет выполнена при выходе из области видимости, независимо от того, будет ли выполнен return, брошено исключение, или даже выполнен goto наружу. Данный макрос по-настоящему zero-cost и не зависит от рантайма C или стандартной библиотеки, поэтому его можно использовать даже в разработке под ядро ОС.

https://habr.com/ru/articles/916732/

#cpp #programming

👉 @cpp_lib


AI-агенты уже экономят специалистам до 15 часов в неделю.

У Яндекс Практикума есть курсы по нейросетям для разных задач и уровней подготовки:

→ работа с ИИ для повседневных и рабочих задач;
→ создание AI-агентов и автоматизация процессов;
→ вайбкодинг и разработка с помощью нейросетей;
→ применение ИИ в маркетинге, аналитике и других профессиях.

Во многих курсах есть бесплатные вводные модули – можно познакомиться с программой и начать обучение без оплаты. Промокод PRACT10SEPT дает скидку 10% на покупку курса.

→ Добавить ИИ в свой стек навыков

Erid: 2SDnjdNJMpX
Название: ООО "ЯНДЕКС"
ИНН: 7736207543


Низкоуровневый скриптинг на C++ для игровых движков

Я постарался охватить только основы, но текст всё равно получился очень длинным.

libriscv — это зрелый эмулятор RISC-V, который в настоящее время используется в игровых движках. Насколько мне известно, это единственный эмулятор, в котором основной акцент делается на обработке задержек, а также предоставляются специализированные решения и инструменты для выполнения быстрых вызовов при обращении с функциями — как входящих, так и исходящих. Причём, всё это заключено в безопасной песочнице. Задержки, наблюдаемые в libriscv, гораздо ниже, чем в эталонных эмуляторах.

Меня многие спрашивали, как им пользоваться, но здесь интереснее то, как вообще может прийти в голову мысль писать скрипты на C++ — не слишком ли сложно это будет? Оказывается, нет, не очень. Вот уже несколько лет я пишу на C++ скрипты для одной большой и одной не очень большой игры, и меня почти не посещало ощущение, что виной каким-то возникающим при этом проблемам являются язык C++ или связанные с ним скриптовые API. Я много лет программирую на Lua, а до этого пользовался обычным C. Но сейчас современный идиоматический C++ — то, что мне нужно. Причём, я могу писать на этом языке как в самом игровом движке, так и за его пределами, при этом опираясь (буквально) на одни и те же абстракции и оперируя одинаковыми структурами данных. Наконец, C++ просто очень мощный. Правда, я признаю, что о вкусах не спорят, и при работе с C++ также не обойтись без компромиссов.

https://habr.com/ru/articles/919620/

#cpp #programming

👉 @cpp_lib
Низкоуровневый скриптинг на C++ для игровых движков
Я постарался охватить только основы, но текст всё равно получился очень длинным. libriscv  — это зрелый эмулятор RISC-V , который в настоящее время используется в игровых движках. Насколько мне...
Хабр


Пишем игру для игровой ретро-консоли Anbernic на C++

Дисклеймер
Сразу скажу, что почти всё, что описано в этой статье, я делал первый раз в жизни, поэтому я не мог не совершить ошибок. Некоторые мои решения и заявления могут быть некорректными. Воспринимать эту статью как туториал можно только на свой страх и риск. Для нормального восприятия этой статьи вы должны обладать базовыми навыками программирования на C++ и хотя бы общим представлением о том, что из себя представляет операционная система Linux.

Как всё начиналось
Не так давно ко мне в руки попала игровая консоль Anbernic RG35XX SP. Это портативная игровая консоль на базе четырёхъядерного процессора Allwinner H700 с ядрами Cortex-A53, которая имеет на борту операционную систему OFW (дистрибутив Linux, основанный на Ubuntu). Консоль предназначена для запуска ретро игр на эмуляторе Retroarch. Этот эмулятор поддерживает эмуляцию множества популярных игровых консолей 90х и 2000х и позволяет запускать ТЫСЯЧИ популярных игр, которые можно устанавливать на SD карточку.

https://habr.com/ru/articles/897338/

#cpp #programming

👉 @cpp_lib


Руководство по сборке Qt под Windows из исходников с MinGW

Официальный способ установки готовых бинарников Qt - через онлайн инсталлятор. Однако он требует обязательной регистрации. Да еще и недоступен на территории РФ. Есть и другие способы получить бинарники, или собрать с компилятором от Microsoft, однако не всегда эти способы приемлемы. Сборка из исходников под Windows может оказаться несколько нетривиальна для новичков, потому сделал небольшую инструкцию по сборке Qt 5 и Qt 6. А так же рассмотрена базовая настройка QT Creator.

https://habr.com/ru/articles/917252/

#cpp #programming

👉 @cpp_lib


Вы сталкиваетесь с блокировками в PostgreSQL при росте нагрузки? На открытом уроке OTUS разберём, как обеспечить высокую параллельность даже в высоконагруженных системах.

8 сентября в 20:00 — вебинар «Борьба с блокировками в PostgreSQL: как достичь высокой параллельности при большой нагрузке». Вы изучите типы блокировок, инструменты диагностики deadlock‑ов, приёмы оптимизации запросов и архитектурные best practices. В программе — реальные кейсы из продакшена и стратегии проектирования систем, выдерживающих тысячи параллельных запросов.

Урок проходит в преддверии старта курса «Высоконагруженные системы: архитектура и масштабирование». Все участники получат скидку на обучение.

Запишитесь сейчас — усилите экспертизу и научитесь строить стабильные высокопроизводительные системы.

👉 Записаться: https://vk.cc/d1i4nm

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru


#cpp #programming

👉 @cpp_lib


Видео недоступно для предпросмотра
Смотреть в Max
Опенсорс от кристалла до программного стека

Нужны ли нам открытые архитектуры? Что нам нужно, чтобы они работали? В этом докладе мы попытаемся изложить основные проблемы и преимущества открытых архитектур на примере 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 Ответы на вопросы

источник

#cpp #programming

👉 @cpp_lib


⚡️ 40 000 000 ₽ ждут, пока ты дочитаешь этот пост

Если ты пишешь код, рисуешь интерфейсы или анализируешь данные до трёх ночи — у нас для тебя новость. Стартовала регистрация на конкурс «Лидеры цифровой трансформации», и призовой фонд там не шуточный —40 000 000 ₽ 🔥

🥇 1 место — 1 000 000 ₽
🥈 2 место — 600 000 ₽
🥉 3 место — 400 000 ₽

Что ещё:
💼 20 живых задач Правительства Москвы и бизнеса: Positive Technologies, «Газпромбанк.Тех», билайн бизнес, Yandex Cloud, VK Tech, РСХБ, «Фалькон Тех», ГК «Геоскан», ИТ Школа Ростелекома, ОЭЗ «Алабуга».
🧠 14 дней на разработку вашего решения
🪩 в конце — молодежный технологический фестиваль с награждением, нетворкингом, интерактивными стендами и крутой программой

Кто может участвовать?
👉🏻 Специалисты от 16 лет в любом цифровом направлении — ИИ-инженеры, разработчики, специалисты по обработке и анализу данных, аналитики, проджект-менеджеры, дизайнеры….

Собирай свою команду профи и принимай вызов!
Кто знает, возможно, эти призовые деньги ждут именно тебя 😉

📲 Регистрация тут:
https://i.moscow/lct?utm_source=sp&utm_medium=social&utm_campaign=cpp_lib/?erid=2VtzqxP8qwH
До 14 сентября — не пропусти!


Проектируем змейку под учебный RISC-V микроконтроллер

На третьем курсе некоторые направления в МИЭТ проходят лабораторный практикум, на котором им даётся возможность спроектировать собственную систему архитектуры RISC-V и написать под неё программу на С или C++.

В качестве затравки и повышения мотивации, хотелось показать им на что будет способна их процессорная система, и для этого было решено написать какую-нибудь простенькую игру, не требующую особых требований к ресурсам и графике. Так выбор пал на Змейку.

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

https://habr.com/ru/articles/915450/

#cpp #programming

👉 @cpp_lib

Показано 20 последних публикаций.