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

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

Учиться у нас: https://proglib.io/w/d6cd2932

Для обратной связи: @proglibrary_feeedback_bot

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

#WXSSA
Download Telegram
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🔄 Нестандартная карьера: как оформить резюме, если ты свитчер

Нестандартный карьерный трек — это одновременно твое преимущество и главная проблема при поиске работы.

Рассказываем, как оформить резюме свитчера так, чтобы разношерстный опыт выглядел как осознанное развитие, а не метания из стороны в сторону.

🐸 Библиотека программиста
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍4😁3🥱2
Собираем фулл-хаус: 3 курса по цене 1

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

Для тех, кто работает с производительностью, мастхэв — алгоритмы и структуры данных. Чтобы проектировать сложные системы грамотно — архитектура и шаблоны проектирования.

Если интересна математическая «начинка» нейросетей — полный набор по AI: от углублённой математики и ML-старта до разработки автономных агентов.

В качестве второго языка для быстрой разработки — обновлённый Python.

Собрать свой пак
😁3
🧩 Выходной челлендж: noexcept или не noexcept?

Многие добавляют noexcept "на глаз". А ты знаешь, где это критично?

class DataStore {
std::vector<int> data;
public:
DataStore() = default;

DataStore(DataStore&& other) {
data = std::move(other.data);
}

void add(int value) {
data.push_back(value);
}
};


Задача: В какие методы нужно добавить noexcept и почему?

Подсказка: один из них критически важен для производительности при работе с контейнерами STL.

💬 Делись своими мыслями! Объясни не только ЧТО добавить, но и ПОЧЕМУ это важно.

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

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

#междусобойчик
👍3
📰 Свеженькое из мира C++

Подготовили подборку самых интересных материалов за неделю о разных аспектах программирования и интересных проектах в мире C++.

😎 Интересное:

Почему assert() убивает тесты, а ASSERT_EQ не трогает другие? — объяснение как работает проверка условий в Google Test
Guidelines Support Library — библиотека от Microsoft позволяющая удобно проверять
параметры
Почему v.erase(remove(...)) быстрее цикла с erase()? — удобный и быстрый способ очистки массивов
Нестандартная карьера: как оформить резюме, если ты свитчер — советы по организации резюме для разноплановых разработчиков

Интересный софт за неделю — дайджест по софту за неделю

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

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

#свежак
1👍1👏1
Какая функция позволяет узнать, находится ли выполнение в процессе раскрутки стека?
Anonymous Quiz
30%
std::is_unwinding()
12%
std::uncaught_exception()
10%
std::uncaught_exceptions()
11%
std::in_exception()
38%
Такой функции нет
😁3
🔧 std::enable_if_t для проверки иерархии классов

Нужно убедиться, что класс является наследником другого? Проверяйте это на этапе компиляции с помощью type traits.

#include <type_traits>
#include <memory>

class Base {
public:
virtual ~Base() = default;
};

class Derived : public Base {};
class Unrelated {};

// Фабрика, работающая только с наследниками Base
template<typename T>
std::enable_if_t<std::is_base_of_v<Base, T> && !std::is_same_v<Base, T>,
std::unique_ptr<T>>
createObject() {
return std::make_unique<T>();
}

int main() {
auto obj1 = createObject<Derived>(); // OK
// auto obj2 = createObject<Unrelated>(); // Compile error
// auto obj3 = createObject<Base>(); // Compile error
}


Контроль иерархии классов на этапе компиляции
💰 Предотвращение неправильного использования API
⚡️Статическая проверка без runtime-затрат

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

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

#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
-Wdouble-promotion -Wfloat-equal — float ловушки

Floating-point арифметика полна сюрпризов. Два специализированных флага помогают найти неявные расширения float до double и опасные сравнения на равенство.

🏝 -Wdouble-promotion

float compute(float x) {
return x * 3.14; // Внимание! 3.14 — это double!
// x неявно расширяется до double
}

// С -Wdouble-promotion:
// warning: implicit conversion increases floating-point precision

// Исправление:
return x * 3.14f; // f-суффикс — явный float


☀️ -Wfloat-equal

double a = 0.1 + 0.2;
if (a == 0.3) { // Почти никогда не выполнится!
// 0.1 + 0.2 = 0.30000000000000004 в IEEE 754
}

// -Wfloat-equal: warning: comparing floating point with ==

// Правильно:
constexpr double EPS = 1e-9;
if (std::abs(a - 0.3) < EPS) { /* ... */ }


❗️ Для MSVC нету точного аналога, но похожего эффекта можно добиться с помощью /W4.


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

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

#константная_правильность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32
🫖 Измеряем время затрачиваемое блокировками
Автор статьи взял и замерил: mutex, futex, горячий atomic-спинлок — что сколько реально стоит в тактах, и когда какой примитив выбрать.

Ключевые моменты статьи:

std::mutex — стабильные ~25 накладных тактов, но 40 байт памяти на объект
futex через std::atomic wait/notify — ~14 тактов в удачном случае, но осторожно с contention
• горячий спинлок — 2–4 такта накладных, однако может съесть всё ядро и заморозить владельца лока

Основной фокус — бенчмарк на реальных данных: пул 128 МБ мелких защищённых объектов, два конкурирующих потока, измерение влияния cache-line соседства и contention.

Спойлер из выводов: unique_ptr<mutex> — неплохой безопасный дефолт, с которого не стыдно начать. А futex стоит рассматривать только если память давит и вы точно замерили свой contention — иначе легко получить проигрыш там, где ждали выигрыш.

👉 Статья

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

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

#линкер_рекомендует
3👍1😁1
Оптимизация и контроль: инженерный курс по AI-агентам

Пока другие пишут промпты, мы говорим об управлении ресурсами. Обновлённый курс «Разработка AI-агентов» — это про жёсткий инжиниринг, метрики и контроль выполнения.

Hardcore features:

🔹 Управление ресурсами. Оптимизация токенов, кэширование, роутинг запросов и контроль вычислительных затрат.

🔹 Архитектура. Построение отказоустойчивых графов (`LangGraph`), time-travel отладка и восстановление состояний.

🔹 Advanced RAG. Эффективные алгоритмы поиска и извлечения данных из сложных источников.

🔹 Prod-ready. Трассировка, логирование и метрики производительности системы.

Стартуй сейчас!
Материалы доступны сразу.

🎟 Промокод Agent — скидка 10 000 ₽ (до 28 февраля).

👉 Инженерный трек в AI
1😁1😢1
😎 Топ-вакансий для C++ разработчиков за неделю

Embedded engineer — от 330 000 и до 370 000 ₽ Офис(Москва)

Разработчик C++ — от 200 000 и до 260 000 ₽ Удалёнка

C++ Developer (Middle/Senior) — от 2 000 и до 4 000 $ Удалёнка

✍️ Еще больше топовых вакансий — в нашем канале C++ jobs

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

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

#буст
1😁1