😎 Интересное за 2025
Когда mutex — не панацея — от shared_mutex до lock-free атомиков, правильный выбор примитива синхронизации может изменить производительность на порядок
Inline static в классах — забудь про .cpp — C++17 позволяет избавиться от undefined reference при использовании static членов класса с помощью ключевого слова inline
ccache — компилятор кэш для ускорения пересборки проектов
Исходники Command & Conquer — компания Electronic Arts (EA) опубликовавала исходные коды нескольких частей культовой стратегической серии Command & Conquer
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#буст
Когда mutex — не панацея — от shared_mutex до lock-free атомиков, правильный выбор примитива синхронизации может изменить производительность на порядок
Inline static в классах — забудь про .cpp — C++17 позволяет избавиться от undefined reference при использовании static членов класса с помощью ключевого слова inline
ccache — компилятор кэш для ускорения пересборки проектов
Исходники Command & Conquer — компания Electronic Arts (EA) опубликовавала исходные коды нескольких частей культовой стратегической серии Command & Conquer
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#буст
👍3
🎄 Поделитесь своим новогоднем настроением в комментариях (ну или хотя бы фото ёлки).
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#междусобойчик
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#междусобойчик
😁9
🍉 constexpr Christmas: Вычисляем ёлку в compile-time
Пока все загружают процессор рождественской анимацией, давайте нарисуем ёлку, которая существует только во время компиляции!
С constexpr в C++20 можно творить магию. Даже
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#константная_правильность
Пока все загружают процессор рождественской анимацией, давайте нарисуем ёлку, которая существует только во время компиляции!
С constexpr в C++20 можно творить магию. Даже
std::string и std::vector стали constexpr-friendly, что открывает безумные возможности.#include <array>
#include <algorithm>
#include <iostream>
constexpr auto generate_tree(int height) {
constexpr int MAX_WIDTH = 100;
std::array<char, MAX_WIDTH * 10> tree{}; // Увеличим размер для хранения символов
int idx = 0;
for (int i = 0; i < height; ++i) {
int stars = i * 2 + 1; // Количество звездочек на уровне
int spaces = height - i - 1; // Количество пробелов перед звездочками
// Добавляем пробелы
for (int j = 0; j < spaces; ++j) {
tree[idx++] = ' ';
}
// Добавляем звездочки
for (int j = 0; j < stars; ++j) {
tree[idx++] = '*';
}
// Добавляем перевод строки
tree[idx++] = '\n';
}
tree[idx] = '\0'; // Завершающий нуль
return tree;
}
int main() {
constexpr auto my_tree = generate_tree(10);
std::cout << my_tree.data();
return 0;
}
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#константная_правильность
🔥7👍3
🐸 Подборка вакансий для C++-разработчиков за неделю
C Developer — от 280 000 и до 330 000 ₽ Офис (Москва)
Разработчик C/C++ (Linux) — от 270 000 ₽ Офис (Москва)
C++ Developer — Офис (Новосибирск)
Разработчик С++ (Junior) — до 130 000 ₽ Офис (Москва)
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#вакансии
C Developer — от 280 000 и до 330 000 ₽ Офис (Москва)
Разработчик C/C++ (Linux) — от 270 000 ₽ Офис (Москва)
C++ Developer — Офис (Новосибирск)
Разработчик С++ (Junior) — до 130 000 ₽ Офис (Москва)
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#вакансии
👍1😁1
Forwarded from Библиотека задач по C++ | тесты, код, задания
👻 Какие проблемы в коде?
Ответ:Если конструктор b бросит исключение, a утекает
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#междусобойчик
Ответ:
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#междусобойчик
👏4🤔2❤1😁1
📰 Свеженькое из мира C++
Подготовили подборку самых интересных материалов за неделю о разных аспектах программирования и интересных проектах в мире C++.
😎 Интересное:
• Литералы времени: пишите код, который читается — добавленные в C++14 user-defined literals для chrono. Это превращает магические числа в self-documenting код
• constexpr Christmas: Вычисляем ёлку в compile-time — рисуем новогоднюю ёлочку в compile-time
• Написал код на С++23, а он запустился на Windows 95... — разбор нестандартного подхода к ретро-программированию с использованием всех благ современного C++
• Почему std::chrono::duration не хранит единицы измерения? — пример использования compile-time магии для задания числовых промежутков
• От SFINAE к Concepts — история развития метапрограммирования
• Почему throw не просто делает goto к catch-блоку? — разбор почему опасно кидать исключения в деструкторах
🔹📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#свежак
Подготовили подборку самых интересных материалов за неделю о разных аспектах программирования и интересных проектах в мире C++.
😎 Интересное:
• Литералы времени: пишите код, который читается — добавленные в C++14 user-defined literals для chrono. Это превращает магические числа в self-documenting код
• constexpr Christmas: Вычисляем ёлку в compile-time — рисуем новогоднюю ёлочку в compile-time
• Написал код на С++23, а он запустился на Windows 95... — разбор нестандартного подхода к ретро-программированию с использованием всех благ современного C++
• Почему std::chrono::duration не хранит единицы измерения? — пример использования compile-time магии для задания числовых промежутков
• От SFINAE к Concepts — история развития метапрограммирования
• Почему throw не просто делает goto к catch-блоку? — разбор почему опасно кидать исключения в деструкторах
🔹📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#свежак
👍2
⏰ Время в C++: когда простое вычитание может сломать вашу программу
Казалось бы, что сложного в работе со временем? Берёшь
Пример: вы вычитаете
Библиотека
Разберёмся, почему разные часы нельзя просто так сравнивать, как правильно конвертировать между ними, и почему
👉 Продолжение
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#свежак
Казалось бы, что сложного в работе со временем? Берёшь
timestamp, вычитаешь другой timestamp — получаешь разницу. Но в C++ всё не так просто.Пример: вы вычитаете
steady_clock::time_point из system_clock::time_point. Что получится? Разница между 1 января 1970 года и... моментом загрузки системы? Или чем-то ещё более абстрактным? 🤷♂️Библиотека
<chrono> специально делает такие операции сложными — не из вредности, а чтобы защитить вас от целого класса неуловимых багов. Баги со временем — это те самые баги, которые проявляются только в проде, только по вторникам, и только когда админ решил синхронизировать часы с NTP.Разберёмся, почему разные часы нельзя просто так сравнивать, как правильно конвертировать между ними, и почему
1499ns вполне может превратиться в 1µs.👉 Продолжение
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#свежак
❤3👍2
AI-агенты и системное мышление: что нужно знать в 2026-м?
Даже в низкоуровневой разработке знание архитектуры ИИ-агентов становится критичным. Как управлять памятью агентов, как строить быстрые
На курсе «Разработка AI-агентов» мы учим проектировать автономные системы с нуля.
Темы курса:
— архитектура
— использование протокола
— построение баз знаний
— оркестрация автономных групп ботов.
Новый год — время для нового стека.
🎁 До 12 января акция «3 в 1»: курс по ИИ-агентам + ещё 2 курса в подарок.
Узнать больше
Даже в низкоуровневой разработке знание архитектуры ИИ-агентов становится критичным. Как управлять памятью агентов, как строить быстрые
RAG-системы и оптимизировать работу моделей?На курсе «Разработка AI-агентов» мы учим проектировать автономные системы с нуля.
Темы курса:
— архитектура
ReAct: разделение рассуждений и действий;— использование протокола
MCP для межсистемного взаимодействия;— построение баз знаний
RAG с миллисекундным доступом;— оркестрация автономных групп ботов.
Новый год — время для нового стека.
🎁 До 12 января акция «3 в 1»: курс по ИИ-агентам + ещё 2 курса в подарок.
Узнать больше
😁2
std::this_thread::sleep_for(std::chrono::milliseconds(0)) выглядит как no-op. Но бывает полезен для cooperative multitasking.// Busy-wait — сжигает CPU
while (!ready.load()) { }
// Cooperative — даёт шанс другим потокам
while (!ready.load()) {
std::this_thread::sleep_for(std::chrono::milliseconds(0));
}
• Системный вызов sched_yield() (Linux) или SwitchToThread() (Windows)
• Поток добровольно освобождает CPU
• Планировщик может переключиться на другой поток того же приоритета
• Если других готовых потоков нет — возврат немедленный"
Поток НЕ переводится в WAITING. Он остаётся RUNNING, но в конце очереди планировщика. Это не syscall с блокировкой!
std::this_thread::yield(); // Более явная семантика
sleep_for(0ms); // Может быть оптимизировано компилятором
Используйте yield() вместо sleep(0) для читаемости. В spin-lock'ах это снижает contention и энергопотребление. Но для реальных синхронизаций используйте condition variables — они эффективнее.
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#константная_правильность
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍1
Есть разумный компромисс между самым современным и каменным веком: использовать C++17 как минимальный стандарт для новых проектов.
C++17 поддерживается GCC 8+, Clang 5+, MSVC 19+. Это уже довольно старые версии, но они дают огромное преимущество:
std::optional, std::variant, std::filesystem, structured bindings, if constexpr. Это фундаментальные инструменты современного C++.При этом C++17 достаточно стабилен — большинство компиляторов его полностью поддерживают без багов.
Стратегия: начать с C++17, написать чистую архитектуру, а когда инфраструктура созреет — постепенно мигрировать на C++20/23. Это практичный подход, который не загоняет вас в угол.
Кстати, многие крупные проекты именно так и делают: устанавливают разумный минимум и плавно поднимают планку.
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥5👍4
Перед тем как написать первую строку кода, настроим проект. Никаких танцев с бубном — только современные практики
vcpkg install boost-asio
cmake_minimum_required(VERSION 3.20)
project(NetworkTutorial CXX)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
# Компилятор warnings
if(MSVC)
add_compile_options(/W4)
else()
add_compile_options(-Wall -Wextra -pedantic)
endif()
# Boost через vcpkg/system
find_package(Boost 1.82 REQUIRED COMPONENTS system)
add_executable(client main.cpp)
target_link_libraries(client
PRIVATE
Boost::system
Boost::headers
)
#include <boost/asio.hpp>
#include <iostream>
int main() {
try {
boost::asio::io_context io;
std::cout << "Boost.Asio version: "
<< BOOST_ASIO_VERSION << '\n';
std::cout << "Setup successful!\n";
// Проверяем, что io_context работает
boost::asio::steady_timer timer(io);
timer.expires_after(std::chrono::milliseconds(100));
timer.async_wait([](const boost::system::error_code&) {
std::cout << "Timer works!\n";
});
io.run();
return 0;
} catch (const std::exception& e) {
std::cerr << "Error: " << e.what() << '\n';
return 1;
}
}
# С vcpkg
cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE=[путь к vcpkg]/scripts/buildsystems/vcpkg.cmake
cmake --build build
./build/client
# Или с системным Boost (Linux/macOS)
cmake -B build -S .
cmake --build build
./build/client
Boost.Asio version: 103402
Setup successful!
Timer works!
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍1
Манипуляторы — не просто функции. Они изменяют внутренние флаги потока.
std::ostream хранит std::ios_base::fmtflags:std::cout << std::hex << 255; // ff
std::cout << 10; // a (всё ещё hex!)
std::cout.setf(std::ios::hex, std::ios::basefield);
// Эквивалентно std::hex
std::cout << std::hex << 255;
// Или
std::ios oldState(nullptr);
oldState.copyfmt(std::cout);
// ... вывод ...
std::cout.copyfmt(oldState); // Восстановление
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#под_капотом
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥3
Forwarded from Библиотека задач по C++ | тесты, код, задания
Forwarded from Библиотека задач по C++ | тесты, код, задания
Что можно сказать об этом коде?
Anonymous Quiz
33%
Выведет 0
23%
Выведет nullptr
19%
Выведет 0x0
12%
Ошибка компиляции
14%
Неопределённое поведение
😁2
🔗 libfoo.a vs libfoo.so: что выбрать?
Статическая и динамическая линковка — это выбор между размером бинарника и удобством обновлений.
❗️ Статическая линковка (.a на Linux, .lib на Windows):
✅ Один файл, работает везде
❌ Большой размер (мегабайты вместо килобайт)
❌ Обновление библиотеки = пересборка всего
❗️ Динамическая линковка (.so на Linux, .dll на Windows):
✅ Маленький бинарник
✅ Обновление библиотеки не требует пересборки
❌ Нужна библиотека на целевой системе
❌ "DLL hell" / dependency conflicts
🐸 Когда что использовать:
Статика: embedded, CLI-утилиты, дистрибуция
Динамика: системные демоны, плагины, shared libs
💡 Проверить зависимости:
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#константная_правильность
Статическая и динамическая линковка — это выбор между размером бинарника и удобством обновлений.
g++ main.cpp -static -o program
g++ main.cpp -o program # По умолчанию
✅ Маленький бинарник
✅ Обновление библиотеки не требует пересборки
❌ Нужна библиотека на целевой системе
❌ "DLL hell" / dependency conflicts
Статика: embedded, CLI-утилиты, дистрибуция
Динамика: системные демоны, плагины, shared libs
ldd ./program (Linux)📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#константная_правильность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
AI-агенты 2026: системный подход к автономности
Даже в мире
Что разберём на курсе:
— архитектура
— построение сверхбыстрых
— протокол
— оркестрация через
🎁 До 12 января действует акция «3 в 1»: курс по ИИ-агентам + 2 курса в подарок.
Прокачать системный AI
Даже в мире
C++ нельзя игнорировать ИИ. В новом году мы учимся проектировать высокопроизводительные системы, где логику принятия решений берут на себя агенты.Что разберём на курсе:
— архитектура
ReAct: как разделить логику и действия агента;— построение сверхбыстрых
RAG-систем для работы с документацией;— протокол
MCP: как подружить разные модели в одной системе;— оркестрация через
n8n для автоматизации разработки.🎁 До 12 января действует акция «3 в 1»: курс по ИИ-агентам + 2 курса в подарок.
Прокачать системный AI
👍3