👾 Ржавеющие плюсы: как внедрять современные проверки С++
💡Разработчик из Яндекс.Такси поделился опытом масштабного внедрения инструментов безопасности C++ — от статических анализаторов до санитайзеров.
❗️ Ключевые моменты доклада:
• внедрение CPP Hardening, Clang Lifetime Annotation и санитайзеров заняло 4 месяца
• из 40 тысяч падений тестов 20 тысяч были вызваны одной ошибкой
• санитайзеры нашли несколько сотен реальных багов в промышленной кодовой базе
Основной фокус — пятиэтапный процесс внедрения: тестирование проверок, анализ ошибок, постепенная починка багов, координация между командами и определение момента завершения работ.
Особенно актуально для компаний с большими legacy кодовыми базами, где безопасность кода критична для стабильности сервисов.
Вы узнаете, что простое включение проверок без продуманной стратегии может парализовать разработку, но правильный подход позволяет за месяц сократить количество критических ошибок с 17 тысяч до 39.
👉 Видео
Библиотека C/C++ разработчика #буст
💡Разработчик из Яндекс.Такси поделился опытом масштабного внедрения инструментов безопасности C++ — от статических анализаторов до санитайзеров.
❗️ Ключевые моменты доклада:
• внедрение CPP Hardening, Clang Lifetime Annotation и санитайзеров заняло 4 месяца
• из 40 тысяч падений тестов 20 тысяч были вызваны одной ошибкой
• санитайзеры нашли несколько сотен реальных багов в промышленной кодовой базе
Основной фокус — пятиэтапный процесс внедрения: тестирование проверок, анализ ошибок, постепенная починка багов, координация между командами и определение момента завершения работ.
Особенно актуально для компаний с большими legacy кодовыми базами, где безопасность кода критична для стабильности сервисов.
Вы узнаете, что простое включение проверок без продуманной стратегии может парализовать разработку, но правильный подход позволяет за месяц сократить количество критических ошибок с 17 тысяч до 39.
👉 Видео
Библиотека C/C++ разработчика #буст
❤4
😈 Полезный ли навык вайб-кодинга для реальных проектов
97% программистов уже пробовали ИИ для написания кода. Но где грань
между продуктивной помощью и потерей контроля над продуктом? Упрощает ли
вайб-кодинг жизнь джунам или затрудняет их развитие? И главное — как к
такому подходу относятся айтишники и их работодатели?
В этой статье постараемся разобраться, что такое вайб-кодинг на
самом деле, в чем его плюсы и минусы, и почему вокруг него сейчас
столько разговоров.
👉 Статья
Библиотека C/C++ разработчика
97% программистов уже пробовали ИИ для написания кода. Но где грань
между продуктивной помощью и потерей контроля над продуктом? Упрощает ли
вайб-кодинг жизнь джунам или затрудняет их развитие? И главное — как к
такому подходу относятся айтишники и их работодатели?
В этой статье постараемся разобраться, что такое вайб-кодинг на
самом деле, в чем его плюсы и минусы, и почему вокруг него сейчас
столько разговоров.
👉 Статья
Библиотека C/C++ разработчика
❤5🥰2
В каком стандарте C++ появились умные указатели?
Anonymous Quiz
11%
C++98
14%
C++03
63%
C++11
12%
C++14
📰 Свеженькое из мира C++
Подготовили подборку самых интересных материалов за неделю о разных аспектах программирования и интересных проектах в мире C++.
😎 Полезное:
• Как правильно реализовать оператор присваивания — реализация своего оператора присваивания
• Оптимизация времени компиляции — чек-лист по улучшению времени компиляции кода
• Как внедрять современные проверки С++ — видео о подходах к внедрению инструментов безопасности
🖨Интересные проекты:
• NanaZip — архиватор файлов с открытым исходным кодом (написан на основе исходного кода исходного кода 7-Zip)
• RocksDB — постоянное хранилище ключей и значений для флэш-памяти и оперативной памяти
• Atmosphère — кастомизированная прошивка для Nintendo Switch
Библиотека C/C++ разработчика #буст
Подготовили подборку самых интересных материалов за неделю о разных аспектах программирования и интересных проектах в мире C++.
😎 Полезное:
• Как правильно реализовать оператор присваивания — реализация своего оператора присваивания
• Оптимизация времени компиляции — чек-лист по улучшению времени компиляции кода
• Как внедрять современные проверки С++ — видео о подходах к внедрению инструментов безопасности
🖨Интересные проекты:
• NanaZip — архиватор файлов с открытым исходным кодом (написан на основе исходного кода исходного кода 7-Zip)
• RocksDB — постоянное хранилище ключей и значений для флэш-памяти и оперативной памяти
• Atmosphère — кастомизированная прошивка для Nintendo Switch
Библиотека C/C++ разработчика #буст
👍2
Forwarded from Библиотека задач по C++ | тесты, код, задания
Forwarded from Библиотека задач по C++ | тесты, код, задания
Что выведет программа?
Anonymous Poll
55%
Custom delete
22%
Ничего не выведет
15%
Компиляционная ошибка
6%
Undefined behavior
3%
Зависит от компилятора
🏖️ Подборка вакансий для C++-разработчиков за неделю
Разработчик C++ — от 250 000 и до 400 000 ₽ Удалёнка
Team Lead C++ (Social Core) — от 300 000 ₽ Удалёнка
Senior C++ Developer — от 380 000 и до 430 000 ₽ Удалёнка
Senior Embedded-разработчик / программист микроконтроллеров — от 300 000 ₽ Офис (Москва)
C++-разработчик (Новости) — от 270 000 и до 370 000 ₽ Удалёнка
Библиотека C/C++ разработчика
Разработчик C++ — от 250 000 и до 400 000 ₽ Удалёнка
Team Lead C++ (Social Core) — от 300 000 ₽ Удалёнка
Senior C++ Developer — от 380 000 и до 430 000 ₽ Удалёнка
Senior Embedded-разработчик / программист микроконтроллеров — от 300 000 ₽ Офис (Москва)
C++-разработчик (Новости) — от 270 000 и до 370 000 ₽ Удалёнка
Библиотека C/C++ разработчика
💭 Race conditions в атомарных операциях - одна из самых коварных проблем. Разбираемся с memory ordering.
Проблема: Неопределенное поведение при concurrent доступе
// ❌ ОПАСНО: data race!
std::atomic<bool> ready{false};
int data = 0;
// Thread 1
data = 42;
ready.store(true); // неопределенный ordering!
// Thread 2
if (ready.load()) {
process(data); // может быть 0 или 42!
}
Решение: Explicit memory ordering
// ✅ ПРАВИЛЬНО: используем memory_order
std::atomic<bool> ready{false};
int data = 0;
// Thread 1
data = 42;
ready.store(true, std::memory_order_release); // освобождаем
// Thread 2
if (ready.load(std::memory_order_acquire)) { // захватываем
process(data); // гарантированно 42!
}
⚠️ Частые ошибки:
• Использование memory_order_relaxed везде
• Забывание про acquire-release семантику
• Смешивание атомарных и неатомарных операций
Библиотека C/C++ разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔3👍1