Библиотека C/C++ разработчика | cpp, boost, qt
الذهاب إلى القناة على Telegram
Все самое полезное для плюсовика и сишника в одном канале. По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/d6cd2932 Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17
إظهار المزيد2025 عام في الأرقام

19 533
المشتركون
-524 ساعات
-427 أيام
-17730 أيام
أرشيف المشاركات
Photo unavailableShow in Telegram
Proglib Academy — это место, где вы превращаете теорию в практику. Здесь ваши знания становятся проектами для портфолио, а вы — более уверенным специалистом.
Выберите курс, который поможет сделать следующий шаг ⬇️
🚀 Для тех, кто начинает путь в IT:
— Основы IT для непрограммистов
— Программирование на Python (обновлённый)
— Frontend-разработчик с нуля: HTML, CSS, JavaScript
🧠 Для будущих и настоящих Data Scientist'ов:
— ML для старта в Data Science (начинается в сентябре)
— Базовые модели ML и приложения
— Математика для Data Science
— AI-агенты для DS-специалистов (скоро второй поток)
🛠️ Для опытных разработчиков, готовых к росту:
— Алгоритмы и структуры данных
— Архитектуры и шаблоны проектирования
Независимо от вашей цели, у нас есть курс, который поможет её достичь. Переходите в Proglib Academy, выбирайте свой путь и инвестируйте в навыки, которые всегда будут в цене!
❤ 2
Photo unavailableShow in Telegram
🫣 Боитесь математики в ML?
Думаете, для этого нужно вспоминать университетские интегралы и решать сложные уравнения?
У нас хорошая новость: машинное обучение — это в первую очередь инженерная практика, а не математическая олимпиада. Здесь важнее понимать суть, а не выводить формулы.
Именно на таком подходе — через логику, интуицию и наглядные примеры — и построен наш курс «ML для старта в Data Science», где мы объясняем всё на пальцах, без боли и зубрёжки.
Регистрируйтесь, пока есть свободные места 😉
❤ 1
Repost from TgId: 1727734638
Photo unavailableShow in Telegram
🌐 Чек-лист: как искать работу
Чтобы не застрять в вечной отладке своей карьеры, держим в голове (и перед глазами) понятный план. Вот чек-лист на период поиска:
✅ Обновите резюме и профиль (да, и GitHub тоже)
Ваш профиль — это витрина. Убедитесь, что в нём отражены:
• актуальные технологии (например, .NET 6/7/8, Blazor, ASP.NET, Azure и т. д.).
• понятные результаты («реализовал систему логирования» , а не «писал код»).
• ссылки на GitHub с чистыми, осмысленными проектами — лишнее желательно скрыть или удалить.
✅ Сформулируйте ключевые навыки и корректные поисковые запросы.
Большинство рекрутеров используют автоматические фильтры. Включите в резюме чёткие названия технологий: Entity Framework Core, LINQ, RabbitMQ, Docker, CI/CD, Kubernetes.
✅ Следите за вакансиями регулярно, но без стресса
• Настройте уведомления на LinkedIn, Habr Career, hh.
• Подпишитесь на каналы с вакансиями, например, наш канал с вакансиями для шарпистов.
✅ Готовьтесь к собеседованиям заранее
• Освежите базовые концепции вроде async/await, Dependency Injection, SOLID, разберитесь в нюансах работы ASP.NET.
• Подумайте заранее, какие проекты вы можете описать как удачные кейсы.
• Поработайте над формулировками, которые показывают ваш вклад — рекрутеры ценят конкретику.
Сколько ищете работу? Пару дней или пару месяцев? Пишите в комментарии👇
Proglib Academy #буст
💡 Фича дня: std::exchange (C++14)
Часто при написании операторов присваивания или swap-функций приходится сохранять старое значение, заменяя его новым. Код получается многословным и подверженным ошибкам.
std::exchange атомарно заменяет значение переменной и возвращает старое значение — всё в одной строке.
❌ До:
T old_value = obj;
obj = new_value;
return old_value;
✅ После:
return std::exchange(obj, new_value);
Код становится более читаемым, безопасным и выразительным. Особенно полезно в RAII-классах и при работе с умными указателями.
Библиотека C/C++ разработчика #буст👍 15❤ 1
👾 Clang получает режим усиленной безопасности
Разработчики
Clang обсуждают добавление флага -fhardened по аналогии с GCC 14.
🏖️ Новый режим одной командой активирует целый набор защитных механизмов:
• Инициализация переменных нулями
• Защита стека и от переполнений
• Рандомизация адресов
• Усиленные проверки библиотек
• Дополнительные предупреждения
Проблема: разрозненность опций безопасности в C/C++. Многие разработчики просто не знают о их существовании или забывают включать.
Решение: единый флаг, который «из коробки» делает код безопаснее.
Конечно, это костыли для языков 70-80х годов, но лучше поздно чем никогда.
👉 Заметка
Библиотека C/C++ разработчика #бустPhoto unavailableShow in Telegram
🤔 Зачем вообще понимать, как работает ML?
Сейчас многие просто запускают модельку в sklearn — и радуются точности 0.92.
Вроде всё работает… но почему? А когда сломается — что делать?Машинное обучение — это система, которую можно понять. Если знаешь, что делает градиентный спуск, зачем нужен бустинг и как дерево принимает решения — ты не просто «запускаешь», ты управляешь моделью. 👉 Мы сделали курс, чтобы в это было реально въехать: — без сложных формул; — с интуитивными объяснениями; — от простого к сложному. Если хочешь перейти от «гуглю код» к «понимаю, как это работает» — ты по адресу! ❗Стартуем в сентябре — бронируй место на курсе уже сейчас
❤ 2🥱 2😁 1
🍙 How-to: Как избежать memory ordering проблем в многопоточном коде
💭 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++ разработчика #буст🤔 5👍 2
🏖️ Подборка вакансий для 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++ разработчика
Repost from TgId: 1940255915
Что выведет программа?Anonymous voting
- Custom delete
- Ничего не выведет
- Компиляционная ошибка
- Undefined behavior
- Зависит от компилятора
❤ 1
Photo unavailableShow in Telegram
📰 Свеженькое из мира C++
Подготовили подборку самых интересных материалов за неделю о разных аспектах программирования и интересных проектах в мире C++.
😎 Полезное:
• Как правильно реализовать оператор присваивания — реализация своего оператора присваивания
• Оптимизация времени компиляции — чек-лист по улучшению времени компиляции кода
• Как внедрять современные проверки С++ — видео о подходах к внедрению инструментов безопасности
🖨️Интересные проекты:
• NanaZip — архиватор файлов с открытым исходным кодом (написан на основе исходного кода исходного кода 7-Zip)
• RocksDB — постоянное хранилище ключей и значений для флэш-памяти и оперативной памяти
• Atmosphère — кастомизированная прошивка для Nintendo Switch
Библиотека C/C++ разработчика #буст
👍 2❤ 1
В каком стандарте C++ появились умные указатели?Anonymous voting
- C++98
- C++03
- C++11
- C++14
Photo unavailableShow in Telegram
😈 Полезный ли навык вайб-кодинга для реальных проектов
97% программистов уже пробовали ИИ для написания кода. Но где грань
между продуктивной помощью и потерей контроля над продуктом? Упрощает ли
вайб-кодинг жизнь джунам или затрудняет их развитие? И главное — как к
такому подходу относятся айтишники и их работодатели?
В этой статье постараемся разобраться, что такое вайб-кодинг на
самом деле, в чем его плюсы и минусы, и почему вокруг него сейчас
столько разговоров.
👉 Статья
❤ 5🥰 2
Photo unavailableShow in Telegram
👾 Ржавеющие плюсы: как внедрять современные проверки С++
💡Разработчик из Яндекс.Такси поделился опытом масштабного внедрения инструментов безопасности C++ — от статических анализаторов до санитайзеров.
❗ Ключевые моменты доклада:
• внедрение CPP Hardening, Clang Lifetime Annotation и санитайзеров заняло 4 месяца
• из 40 тысяч падений тестов 20 тысяч были вызваны одной ошибкой
• санитайзеры нашли несколько сотен реальных багов в промышленной кодовой базе
Основной фокус — пятиэтапный процесс внедрения: тестирование проверок, анализ ошибок, постепенная починка багов, координация между командами и определение момента завершения работ.
Особенно актуально для компаний с большими legacy кодовыми базами, где безопасность кода критична для стабильности сервисов.
Вы узнаете, что простое включение проверок без продуманной стратегии может парализовать разработку, но правильный подход позволяет за месяц сократить количество критических ошибок с 17 тысяч до 39.
Библиотека C/C++ разработчика #буст
❤ 4
Repost from TgId: 1770516712
Какая особенность у lambda-выражений в C++11?Anonymous voting
- Они всегда имеют тип void
- Они не могут захватывать переменные
- Каждое lambda имеет уникальный тип
- Они работают только с auto
- Они не могут быть рекурсивными
❤ 1🔥 1
Photo unavailableShow in Telegram
🚀 C++17: structured bindings
Structured bindings в C++17 — это не просто красивый синтаксис, это читаемость кода на новом уровне!
// Старый способ (до C++17)
std::map<std::string, int> counts;
for (auto it = counts.begin(); it != counts.end(); ++it) {
std::cout << it->first << ": " << it->second << std::endl;
}
// C++17 structured bindings
for (const auto& [key, value] : counts) {
std::cout << key << ": " << value << std::endl;
}
// Работает с парами, tuple, массивами
auto [x, y, z] = std::make_tuple(1, 2.5f, "hello");
auto [min, max] = std::minmax({5, 2, 8, 1, 9});
Код стал намного читаемее. Особенно полезно при работе с контейнерами пар и функциями, возвращающими несколько значений.
🧠 Используете ли вы structured bindings? В каких случаях они наиболее полезны?
Библиотека C/C++ разработчика #междусобойчик👍 11🔥 9
Photo unavailableShow in Telegram
✅ Чек-лист: Оптимизация времени компиляции
Долгая компиляция убивает продуктивность. Ускорьте сборку вашего C++ проекта.
🎯 Структура проекта
✓ Используйте forward declarations вместо
#include где возможно
✓ Минимизируйте зависимости в header файлах
✓ Применяйте Pimpl idiom для скрытия деталей имплементации
✓ Разбивайте большие файлы на модули
🎯 Современные возможности
✓ Переходите на C++20 modules постепенно
✓ Используйте precompiled headers для стабильных зависимостей
✓ Настройте distributed compilation (distcc, Incredibuild)
🎯 Инструменты и настройки
✓ Включите параллельную компиляцию (-j флаг)
✓ Используйте ccache для кеширования результатов
✓ Профилируйте время компиляции с -ftime-trace (Clang)
✓ Настройте incremental linking
Как измерить результат: Замеряйте время полной и инкрементальной сборки регулярно.
Библиотека C/C++ разработчика #буст❤ 6🔥 5
