Библиотека C/C++ разработчика | cpp, boost, qt
16.8K subscribers
2.26K photos
74 videos
16 files
4.64K links
Все самое полезное для плюсовика и сишника в одном канале.

Как запустить своего ии-агента: https://clc.to/tvpmDQ

По рекламе: @tproger_sales_bot

Обратная связь: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17

#WXSSA
Download Telegram
Насколько востребованы релоканты на российском рынке труда сегодня и кому из них будет проще найти работу в IT?

👉 Статья

Азбука айтишника

#свежак
😁4👍1
Куда на самом деле уходят токены во время агентного кодинга? ⚡️
❤1
😱 Знакомо? Лимит уже закончился, а задача всё ещё не готова. Часть токенов могла уйти на повторное чтение файлов, лишний контекст и неудачные попытки.

⚡️ Этому посвящён отдельный блок курса «ИИ для разработчиков». Вы разберёте расходы на собственных проектах, сравните подходы и найдёте места, где агент выполняет лишнюю работу.

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


До 31 июля курс можно купить со скидкой, а все материалы останутся в бессрочном доступе.

🔗 Узнать подробности о курсе

🏃‍♀️ Proglib Academy
Please open Telegram to view this post
VIEW IN TELEGRAM
😁2
🛡️ Почему 432 уязвимости в Linux — не повод паниковать

Недавно в новостях мелькнуло: за 31 час в ядре Linux нашли 432 уязвимости. Звучит как катастрофа — разберёмся, почему на самом деле это рабочая рутина.

🍒 Что такое CVE

CVE (Common Vulnerabilities and Exposures) — это уникальный номер, который присваивают каждой потенциальной дыре в безопасности. Один CVE = одна запись в общем каталоге, чтобы все говорили об одной и той же проблеме одинаково.

🥝 Откуда столько сразу

Заявки копились неделями из-за конференций и отпусков. То есть 432 дыры не открылись одновременно — их просто зарегистрировали одним заходом.

🥕 Номер ≠ катастрофа
Команда ядра намеренно присваивает CVE даже мелким исправлениям, которые теоретически могут повлиять на безопасность.

❗Если вы собираете ядро сами то стоит сопоставить из описания каждого CVE с теми компонентами, что реально включены. Так список «что чинить» сразу сокращается до 10%.

👉 Продолжение

Азбука айтишника

#свежак
👍3❤2
🐸 Подборка вакансий для C++-разработчиков за неделю

C/C++ разработчик — от 264 000 и до 290 000 ₽ Удалёнка

Lead IoT / Embedded-инженер — от 350 000 и до 500 000 ₽ Офис (Санкт-Петербург)

Senior / Strong Middle C++ Developer — от 2500 и до 3500 $ Удалёнка

Разработчик C/C++ Embedded (Middle/Senior) — Офис (Ижевск)

Middle AI Software Engineer (Python/C++) — развитие AI-инфраструктуры в HFT-фонде

C++-разработчик (Chromium) —Офис (Санкт-Петербург)

Backend-разработчик (Rust, C++) — Удалёнка/Гибрид (Москва)

📍Навигация: Вакансии • Задачи • Собесы

Библиотека C/C++ разработчика

#вакансии
👍1
Кажется, у онлайн-обучения появился формат, которого давно не хватало 👇
🤔 У большинства разработчиков уже есть подписки на IDE, GitHub Copilot, Claude, ChatGPT или облачные сервисы.

Логично, что обучение тоже постепенно приходит к той же модели: не покупать отдельный курс под каждую новую тему, а иметь доступ ко всей библиотеке и выбирать, что актуально именно сейчас.


Такой формат недавно появился и в Proglib Academy. Вместо одного курса — доступ сразу ко всей библиотеке и новым материалам, которые появляются в подписке 😎

🔗 Подробнее

🏃‍♀️ Proglib Academy
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1🔥1
⚙️ Почему классический ООП тормозит игровые движки — и что с этим делать

Обработка тысяч объектов в реальном времени превращается в кошмар с традиционным C++. Программист из Блэкхаб Геймс показывает, как Entity Component System решает проблемы производительности.

🔜 Что узнаешь из доклада:

• Почему наследование и виртуальные таблицы убивают производительность при обработке тысяч сущностей
• Как ECS разделяет данные и логик🔗
• Data-Oriented Design: как пулы компонентов улучшают кэш-локальность и позволяют использовать SIMD
• Простая многопоточность без головной боли
• Практическая реализация на библиотеке Flex с примерами кода
• Почему доступ через ID лучше указателей в динамичных игровых сценах


Доклад полезен не только геймдевам — ECS применяется в биржевых системах, симуляциях и везде, где нужна высокая производительность обработки данных.

👉 Видео

📍Навигация: Вакансии • Задачи • Собесы

Библиотека C/C++ разработчика

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍1🔥1😁1
❓Кто этот призрак в вашем коде: изучаем особенности работы с легаси на C++

Легаси — вот что объединяет всех разработчиков на всех языках программирования. Мы учимся уживаться с «наследием», встраиваем его в современную кодовую базу или стараемся не трогать.

Пришло время разобраться с легаси в email-проекте Ghost in the code.

Вы получите семь писем от инженеров, в числе которых представитель России в Международной рабочей группе по стандартизации C++ Антон Полухин и эксперт по архитектуре Константин Владимиров. Вместе с ними и другими опытным разработчиками пройдете путь от навигации по «зрелому» коду с помощью AI до выстраивания процессов с учетом легаси.

➡️Подписывайтесь на серию писем, это бесплатно. Оставляйте email-адрес на сайте проекта — первое письмо придет 15 сентября.
❤1😁1
This media is not supported in your browser
VIEW IN TELEGRAM
🌸 Вселенная намекает: пора уже начать этот курс

С 14 сентября цены в Proglib Academy вырастут на 20% 👀

Так что если курс давно ждёт своего часа — лучше не откладывать ещё на месяц 😏

📍 Выбрать курс
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👏2😁2🤔2👍1
🤩 Inline static в классах — забудь про .cpp

Сколько раз ты забывал добавить определение static члена в .cpp, и компилятор радостно выдавал undefined reference?
С C++17 можно просто добавить inline к static переменной класса, и всё работает. Особенно круто это для счётчиков, кешей и паттерна Registry.


// До C++17
class Logger {
public:
static std::ofstream log_file; // объявление
static int message_count; // объявление
};
// В .cpp обязательно нужны определения:
// std::ofstream Logger::log_file{"app.log"};
// int Logger::message_count = 0;

// С C++17
class Logger {
public:
inline static std::ofstream log_file{"app.log"};
inline static int message_count = 0;
inline static std::mutex log_mutex;

static void log(const std::string& msg) {
std::lock_guard lock(log_mutex);
log_file << "[" << message_count++ << "] " << msg << '\n';
}
};
// Никаких дополнительных файлов!


❗️Теперь весь класс может жить в заголовочном файле, что идеально для template классов и header-only библиотек. Инициализация происходит при первом использовании, потокобезопасно и предсказуемо.

🐸 Библиотека C/C++ разработчика

#шаблонный_код
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍7🔥1😁1🤔1
🤪 Если бы можно было задать один вопрос про AI в разработке — что бы вы спросили?

Как выбрать инструмент? Как работать с AI-агентами? Как проверять сгенерированный код? Или как вообще встроить нейросети в свой процесс?


Собираем вопросы для вебинара. Самые залайканные разберём в первую очередь 🔥

Пишите, что действительно интересно ⬇️
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤3🔥3👏2😁2
😭 Как не потратить недельный лимит AI-кодинга за три дня?

Разберём на вебинаре, как тратить меньше на AI-агентов — без потери качества кода.

🔘 Поговорим о том:

— когда дорогая модель действительно нужна, а когда хватит дешёвой;
— сколько стоит один прогон и куда уходят токены;
— какие задачи можно отдавать субагентам;
— как настроить маршрутизацию моделей;
— что проверять в AI-коде перед merge.

✏️ Покажем всё на конкретных цифрах и вживую: сравним расходы до и после.

⬇️ 17 сентября, 19:00 МСК
⬇️ 1,5 часа · бесплатно
⬇️ Арсений Харланов и Олег Лайок

💬 Пишите в комментариях, где упираетесь в лимиты и на что уходят деньги. Самые залайканные вопросы разберём на вебинаре.

🔗 Зарегистрироваться на вебинар⁠
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7😁5🔥3🤔3👏2
Forwarded from Библиотека программиста
👀 Как вы смотрите видео?

Разбираете урок, слушаете интервью фоном или начинаете на телефоне, а продолжаете на большом экране?

Хотим узнать, что делает просмотр удобным для вас. Вспомните последнее видео — ролик, урок, фильм или серию сериала — и расскажите о своём опыте. Если детали не запомнились, можно так и ответить.

🕰️ Опрос займёт около 3 минут.

В результатах сможете сравнить свои привычки с ответами других участников. А разработчики и инженеры видеоплатформы расскажут, что происходит по ту сторону экрана, пока вы смотрите видео.

🔗 Поделиться опытом

🐸 Библиотека программиста
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ mdspan: один буфер, две раскладки

Шесть чисел можно представить матрицей 2×3 без копирования элементов. std::mdspan из C++23 связывает данные, размеры и способ преобразования индексов в смещение.

Для буфера 10, 20, 30, 40, 50, 60 раскладка layout_right идёт по строкам, layout_left — по столбцам. В проверенном примере индекс [1,1] даёт соответственно 50 и 40. Запись через один вид меняет тот же буфер, который виден другому.

Размеры и layout не управляют временем жизни данных. В этом примере обычный accessor работает с указателем на std::array, поэтому массив должен жить дольше представлений. Поддержку C++23 нужно проверить и у компилятора, и у стандартной библиотеки.

Устройство mdspan в P0009

📍 Навигация: Вакансии • Задачи • Собесы

#под_капотом
❤1😁1
Forwarded from Типичный программист
🧑‍💻 Какие навыки помогают вам в разработке в 2026 году?

Что вы чаще используете в работе? В каких задачах помогает ИИ, а где проще справиться самостоятельно?

Мы решили собрать портрет современного разработчика — и приглашаем вас поделиться своим опытом. Расскажите, какие навыки вам пригодились и как вы используете ИИ. Если обходите его стороной, нам тоже интересно узнать почему.

Опрос анонимный и займёт около 5 минут. Результаты опубликуем в общем большом исследовании.

👉 Пройти опрос
❤1
💡 to_chars: число записано, а C-строка не готова

std::to_chars пишет символы в переданный буфер и возвращает ptr сразу после результата. Завершающий нулевой символ он не добавляет.

В тесте буфер заполнен X. После записи числа 123 в нём осталось 123XXXXX. Строку получили из диапазона [first, result.ptr), а не поиском первого нуля. Это важно, если дальше API ожидает C-строку.

Сначала проверяйте result.ec. Если места мало, вернётся std::errc::value_too_large, а содержимое диапазона не определено. Не считайте его частично готовым результатом.

Целочисленные перегрузки доступны с C++17. Оба сценария — достаточный и маленький буфер — реально проверены.

Контракт to_chars

📍 Навигация: Вакансии • Задачи • Собесы

#под_капотом
❤1👍1🙏1
💡 popcount и bit_width считают разные вещи

Для числа 8 двоичная запись — 1000. Единичный бит один, но для записи нужны четыре позиции. Поэтому std::popcount(8u) возвращает 1, а std::bit_width(8u) — 4.

У семёрки 111 оба результата равны 3. Это случайное совпадение, которое легко скрывает ошибку при проверке только такого значения. Для нуля обе функции возвращают 0.

popcount подходит для подсчёта установленных флагов, bit_width — для минимальной ширины двоичного представления ненулевого значения. Эти функции доступны с C++20 и работают с беззнаковыми целочисленными типами.

Функции для работы с битами

📍 Навигация: Вакансии • Задачи • Собесы

#под_капотом
👍4❤1