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

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

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

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

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

#WXSSA
Download Telegram
😸 Каждый разработчик подходит к задаче со своим опытом: помнит прошлые решения, знает ограничения проекта и понимает, какой код команда пропустит на ревью.

Для человека это естественная часть работы. У Claude Code этого контекста по умолчанию нет — только задача и инструкции, которые ему дали.

Поэтому в большой команде недостаточно просто выбрать хорошую модель.

❗️ Нужно ещё объяснить ей, как у вас устроена разработка: какие подходы приняты, что обязательно проверять и по каким правилам принимать решения.


🗓 23 июля в 19:00 МСК поговорим об этом на бесплатном вебинаре с Алексеем Жиряковым — он Executive Director в Сбере, руководит
GenAI Data Platform, и с этой проблемой сталкивался не раз 🔥

Покажет живое демо, разберём, как встроить AI в процесс разработки так, чтобы он реально помогал, а не добавлял ещё один повод для споров на ревью.

🔗 Занять место на вебинаре

🏃‍♀️ Proglib Academy
Please open Telegram to view this post
VIEW IN TELEGRAM
🎹 Скорость разработки растёт, но вместе с ней появляется новая проблема — кодовая база быстро теряет единый стиль.

Ниже — бесплатный вебинар о том, как этого избежать 📍
Please open Telegram to view this post
VIEW IN TELEGRAM
1
🤢 Чем больше разработчиков в команде начинают пользоваться Claude Code, тем заметнее одна проблема: кодовая база перестаёт выглядеть как работа одной команды.

Где-то есть тесты, где-то их забыли. Где-то агент следует архитектуре проекта, где-то предлагает решение, которое с ней не сочетается.

⚠️ И это не проблема Claude Code. Он просто следует тому контексту, который получает от каждого разработчика.

Завтра покажем, как передать AI инженерный контекст команды и не превратить его внедрение в ещё один источник хаоса.

🗓 23 июля, 19:00 МСК
Бесплатно. 60 минут доклада + 30 минут вопросов.

🔗 Занять место на вебинаре и разобраться, почему так происходит

🏃‍♀️ Proglib Academy
Please open Telegram to view this post
VIEW IN TELEGRAM
😁1
🥳 Ranges в C++23

C++23 значительно расширил библиотеку Ranges. Рассмотрим важнейшие добавления.


1️⃣ ranges::to — материализация диапазонов

Раньше преобразование view в контейнер было неудобным:

// C++20: нужно было делать так
std::vector<int> v = {1, 2, 3, 4, 5};
auto view = v | views::filter([](int x) { return x > 2; });

std::vector<int> result(view.begin(), view.end()); // громоздко!


C++23 добавляет std::ranges::to:

// C++23: красиво и лаконично
auto result = v
| views::filter([](int x) { return x > 2; })
| std::ranges::to<std::vector>();
// result = {3, 4, 5}

// Можно указать тип элементов явно
auto strs = views::iota(1, 6)
| views::transform([](int x){ return std::to_string(x); })
| std::ranges::to<std::vector<std::string>>();
// strs = {"1", "2", "3", "4", "5"}

// Работает и с другими контейнерами
auto s = some_range | std::ranges::to<std::set>();
auto m = pairs_range | std::ranges::to<std::map>();



2️⃣ Новые адаптеры C++23

views::zip_transform — zip + transform в одном

std::vector<int> a = {1, 2, 3};
std::vector<int> b = {10, 20, 30};

// Попарная сумма
auto sums = views::zip_transform(std::plus{}, a, b);
// 11, 22, 33


views::adjacent — соседние N-ки

std::vector<int> v = {1, 2, 3, 4, 5};

// Пары соседних элементов
for (auto [a, b] : v | views::adjacent<2>) {
std::cout << "(" << a << "," << b << ") "; // (1,2) (2,3) (3,4) (4,5)
}

// Тройки
for (auto [a, b, c] : v | views::adjacent<3>) {
std::cout << a+b+c << " "; // 6 9 12
}


views::adjacent_transform — скользящая функция

std::vector<int> v = {1, 2, 3, 4, 5};

// Скользящий максимум из двух соседних элементов
auto sliding_max = v | views::adjacent_transform<2>(
[](int a, int b) { return std::max(a, b); }
);
// 2, 3, 4, 5


views::slide — скользящее окно

std::vector<int> v = {1, 2, 3, 4, 5};

// Скользящее окно размером 3
for (auto window : v | views::slide(3)) {
for (int x : window) std::cout << x << " ";
std::cout << "| ";
}
// 1 2 3 | 2 3 4 | 3 4 5 |


views::cartesian_product — декартово произведение

std::vector<int> xs = {1, 2};
std::vector<char> ys = {'a', 'b', 'c'};

for (auto [x, y] : views::cartesian_product(xs, ys)) {
std::cout << "(" << x << "," << y << ") ";
}
// (1,a) (1,b) (1,c) (2,a) (2,b) (2,c)



3️⃣ std::generator — корутины как диапазоны

C++23 добавляет std::generator<T> — корутину, которая является диапазоном:

#include <generator> // C++23

std::generator<int> fibonacci() {
int a = 0, b = 1;
while (true) {
co_yield a;
auto next = a + b;
a = b;
b = next;
}
}

// Использование как обычного диапазона!
for (int f : fibonacci() | views::take(10)) {
std::cout << f << " "; // 0 1 1 2 3 5 8 13 21 34
}

// Можно комбинировать с другими адаптерами
auto big_fibs = fibonacci()
| views::filter([](int x) { return x > 100; })
| views::take(5);


❗️Это мощно: теперь можно писать генераторы в естественном императивном стиле, а использовать их — в функциональном стиле через конвейеры.


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

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

#константная_правильность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍63
🔥 Задача на выходные: компаратор-предатель

Кажется, безобидная замена < на <=. Но теперь в сет уникальных чисел попадают дубликаты, а find иногда не находит существующий элемент.

struct Cmp {
bool operator()(int a, int b) const { return a <= b; }
};
std::set<int, Cmp> s;
s.insert(5);
s.insert(5);
// s.size() == ? find(5) работает?



✏️ Объясни, почему компаратор обязан быть strict weak ordering, и что именно ломает <=.


😏 Ответы ждём в комментариях — это одна из самых недооценённых причин UB в реальных проектах.


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

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

#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
🎹 Документация давно перестала быть формальностью. Особенно когда проект нужно объяснить кому-то ещё 👇
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
😳 Documentation Driven Development звучит как ещё один модный термин. Пока не попробуешь объяснить свой проект AI.

Агент работает только с тем контекстом, который ему дали. Если документация неполная или устарела, он начинает додумывать — отсюда появляется неверный код.

🔘 На курсе «ИИ для разработчиков» эту тему разбирает Арсений Харланов. Он покажет, как подготовить документацию и контекст, чтобы агент понимал архитектуру проекта, ограничения и связи между компонентами.

Также разберём, как выбирать модель под задачу: Claude, DeepSeek, Qwen и другие ✏️

Впереди 7 недель работы со своим репозиторием. Вебинары проходят вживую и остаются в записи.


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

🔗 Посмотреть, что будет на курсе

🏃‍♀️ Proglib Academy
Please open Telegram to view this post
VIEW IN TELEGRAM
😁1
🐸 Подборка вакансий для C++-разработчиков за неделю

C++ Developer (Chromium) — Sigma BrowserОфис (Санкт-Петербург)

Разработчик C++ — от 100 000 ₽ Офис (Новосибирск)

Разработчик С++ — Удалёнка

Разработчик С++/QT — от 160 000 и до 300 000 ₽ Удалёнка

Руководитель / Начальник отдела разработки ПО (C++) — Доход по договоренности, Офис (Санкт-Петербург)

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

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

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

👉 Статья

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

#свежак
😁3👍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%.

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

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

#свежак
👍32
🐸 Подборка вакансий для 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