💻 3 курса по цене одного — собери стек для оффера в топовую IT-компанию
Для следующего карьерного шага мало писать код. Работодатели ждут не только знания языка, но и понимания архитектуры, алгоритмов, автоматизации, AI-инструментов и агентных систем.
Одно направление закрывает только часть задачи.
Поэтому сейчас мы предлагаем освоить сразу несколько востребованных навыков — выбери любой курс и получи доступ еще к двум бесплатно 🔥
Собери стек навыков под свою цель:
🔹 подготовка к сильным компаниям (алгоритмы, архитектура);
🔹 переход в AI-направление (ИИ-агенты, AgentOps);
🔹 развитие в ML и Data Science (математика, основы ML);
🔹 новый оффер и рост дохода.
Полученные знания применяешь в работе уже во время обучения.
⏳ Акция действует 48 часов — 13 и 14 июня.
👉 Переходи на сайт, выбирай курсы и оставляй заявку — за 10 минут поможем собрать комплект под твою цель.
Для следующего карьерного шага мало писать код. Работодатели ждут не только знания языка, но и понимания архитектуры, алгоритмов, автоматизации, AI-инструментов и агентных систем.
Одно направление закрывает только часть задачи.
Поэтому сейчас мы предлагаем освоить сразу несколько востребованных навыков — выбери любой курс и получи доступ еще к двум бесплатно 🔥
Собери стек навыков под свою цель:
🔹 подготовка к сильным компаниям (алгоритмы, архитектура);
🔹 переход в AI-направление (ИИ-агенты, AgentOps);
🔹 развитие в ML и Data Science (математика, основы ML);
🔹 новый оффер и рост дохода.
Полученные знания применяешь в работе уже во время обучения.
⏳ Акция действует 48 часов — 13 и 14 июня.
👉 Переходи на сайт, выбирай курсы и оставляй заявку — за 10 минут поможем собрать комплект под твою цель.
📰 Свеженькое из мира C++
Подготовили подборку самых интересных материалов за неделю о разных аспектах программирования и интересных проектах в мире C++.
😎 Интересное:
• Инфляция грейдов, смерть джунов — смотрим что происходит с IT-рынком в 2026 году
• Почему find_package(Foo) ищет в двух режимах? — разбираемся где на самом деле CMake ищет пакеты
• C++26 наводит порядок в строковых литералах — новый стандарт приносит нам улучшение строк 😊
• Вас уже развели: 6 способов манипуляции зарплатами в 2026 году — хитрости, которые позволяют экономить на сотрудниках
📙 Ranges:
• Алгоритмы диапазонов: Свёртки (fold)
🔹📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#свежак
Подготовили подборку самых интересных материалов за неделю о разных аспектах программирования и интересных проектах в мире C++.
😎 Интересное:
• Инфляция грейдов, смерть джунов — смотрим что происходит с IT-рынком в 2026 году
• Почему find_package(Foo) ищет в двух режимах? — разбираемся где на самом деле CMake ищет пакеты
• C++26 наводит порядок в строковых литералах — новый стандарт приносит нам улучшение строк 😊
• Вас уже развели: 6 способов манипуляции зарплатами в 2026 году — хитрости, которые позволяют экономить на сотрудниках
📙 Ranges:
• Алгоритмы диапазонов: Свёртки (fold)
🔹📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#свежак
🎥 До открытого урока — несколько дней. Подготовили небольшую подборку материалов от нашего спикера Дмитрия Юдина.
Дмитрий руководит AI/ML-направлением в Сloud․ru и развивает Evolution AI Factory — среду для работы с GenAI: от инфраструктуры обучения LLM до внедрения интеллектуальных агентов.
С чего начать:
📺 AI-инструменты для разработчиков — как код, автотесты и ассистенты меняют рутину инженера.
📺 AI-эволюция бизнеса в эпоху генеративных моделей — агентные системы в реальных продуктах.
📺 Разработка мертва? — дискуссия о будущем профессии и роли AI в ней.
📖 Применение LLM в бизнесе — статья Дмитрия о практике внедрения и роли облака.
Одна из ключевых тем Дмитрия — практическое применение агентных систем и их ограничения.
Именно об этом — бесплатный урок 18 июня в 19:00: «Мультиагентные системы: почему большинство архитектур переусложнены» 🔥
🎁 Для участников подготовили промокод на скидку 10 000 ₽ на курс «Разработка ИИ-агентов».
👉 Успей занять место на открытом уроке
Дмитрий руководит AI/ML-направлением в Сloud․ru и развивает Evolution AI Factory — среду для работы с GenAI: от инфраструктуры обучения LLM до внедрения интеллектуальных агентов.
С чего начать:
📺 AI-инструменты для разработчиков — как код, автотесты и ассистенты меняют рутину инженера.
📺 AI-эволюция бизнеса в эпоху генеративных моделей — агентные системы в реальных продуктах.
📺 Разработка мертва? — дискуссия о будущем профессии и роли AI в ней.
📖 Применение LLM в бизнесе — статья Дмитрия о практике внедрения и роли облака.
Одна из ключевых тем Дмитрия — практическое применение агентных систем и их ограничения.
Именно об этом — бесплатный урок 18 июня в 19:00: «Мультиагентные системы: почему большинство архитектур переусложнены» 🔥
🎁 Для участников подготовили промокод на скидку 10 000 ₽ на курс «Разработка ИИ-агентов».
👉 Успей занять место на открытом уроке
😁2
🤖 Свой malloc для ОС: от наивного списка до бинов
Серия статей про аллокатор на C++ для собственной ОС — там, где нет ни стандартной библиотеки, ни готового ABI, а PageAllocator только предстоит написать.
🍿 Статьи
1. Неявный список свободных блоков с граничными тегами
2. Слияние блоков за константное время. Юнит тест для аллокатора
3. Финальный аллокатор со списками свободных блоков
4. mem_malloc_aligned
📍Навигация: Вакансии • Задачи • Собесы • Канал в Max
Библиотека C/C++ разработчика
#свежак
Серия статей про аллокатор на C++ для собственной ОС — там, где нет ни стандартной библиотеки, ни готового ABI, а PageAllocator только предстоит написать.
🍿 Статьи
1. Неявный список свободных блоков с граничными тегами
2. Слияние блоков за константное время. Юнит тест для аллокатора
3. Финальный аллокатор со списками свободных блоков
4. mem_malloc_aligned
📍Навигация: Вакансии • Задачи • Собесы • Канал в Max
Библиотека C/C++ разработчика
#свежак
👍4😁3
Forwarded from Библиотека задач по C++ | тесты, код, задания
Что проверяет EXPECT_DEATH?
Anonymous Quiz
56%
Что вызов завершает процесс (сигнал/код), а вывод совпал с regex
25%
Что вызванная функция выбрасывает наружу какое-нибудь C++-исключение
4%
Что вызванная функция в результате своей работы возвращает nullptr
10%
Что вызванная функция уходит в бесконечный цикл и навсегда зависает
6%
Что функция печатает слово "death" в стандартный поток ошибок stderr
Если думал, что death-тест в GoogleTest — это просто проверка «упадёт или нет», то это не так. На деле фреймворк изолирует ваш код в дочернем процессе, дожидается его завершения и проверяет, что тот умер именно так, как вы ожидали. Сам тест-раннер при этом остаётся жив — в этом весь смысл.
EXPECT_DEATH(stmt, "regex"), фреймворк форкает текущий процесс. Дочерний выполняет stmt, родитель через waitpid() ждёт его завершения и анализирует статус выхода.abort(), std::terminate или сработавший assert убивают процесс по-настоящему. Поймать это в том же процессе как исключение нельзя — управление уже не вернётся. Единственный способ протестировать смерть, не убив сам тест-раннер, — изолировать её в ребёнке.EXPECT_DEATH(
{ std::abort(); },
".*"
);
std::cout внутри блока ведёт себя странно.abort()-ветки или оставляете их «на авось»?📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#константная_правильность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤2🙏2
Если думал, что от одного голоса ничего не зависит, то это не так. На деле каждый буст поднимает уровень канала и открывает ему новые возможности. А тебе за это больше полезностей в канале
За Сторис — наш формат для небольших, но полезных находок, которые жалко оставлять «за кадром»:
• интересные инструменты
• короткие технические заметки
• полезные ссылки
• вопросы для программистов
• быстрые опросы
Библиотека C/C++ разработчика
Please open Telegram to view this post
VIEW IN TELEGRAM
1😁1
Одна из полезнейших тем в C++ диапазонах — это проекции.
Проекция — это функция, которая «извлекает» ключ из элемента перед тем, как алгоритм с ним работает. Подавляющее большинство алгоритмов из
std::ranges принимают необязательный параметр proj; по умолчанию там std::identity — элемент идёт как есть.Возьмём те самые задачи из прошлого поста:
struct Task { std::string name; int priority; };
std::vector<Task> tasks = { {"Код", 1}, {"Деплой", 3}, {"Тесты", 2} };
std::ranges::sort(tasks, {}, &Task::priority);
// порядок: Код(1), Тесты(2), Деплой(3)Здесь
{} — компаратор по умолчанию (ranges::less), а &Task::priority — проекция. Для каждой пары алгоритм считает less(a.priority, b.priority). Помните, в свёртках, чтобы сложить по priority, пришлось писать лямбду? Тут поле достаёт сама проекция.Самый частый случай —
&Тип::поле. И работает не только в sort:// найти задачу с priority == 3
auto it = std::ranges::find(tasks, 3, &Task::priority);
// *it == Task{"Деплой", 3}
// посчитать задачи с priority > 1
auto n = std::ranges::count_if(tasks,
[](int p){ return p > 1; }, &Task::priority);
// n == 2
Обратите внимание на порядок: у
find проекция идёт сразу после искомого значения (компаратора у него нет), а у count_if — после предиката. У каждого алгоритма свой набор параметров, проекция в нём всегда последняя.Не только поле. Подойдёт указатель на метод, лямбда, свободная функция — всё, что переваривает
std::invoke:std::vector<std::string> v = {"apple", "fig", "banana"};
std::ranges::sort(v, {}, &std::string::size); // по длине
// "fig"(3), "apple"(5), "banana"(6)
std::vector<int> nums = {-5, 2, -1, 3};
std::ranges::sort(nums, {}, [](int x){ return std::abs(x); }); // по модулю
// -1, 2, 3, -5Это главное, что надо уложить в голове. Проекция влияет только на то, ПО ЧЕМУ алгоритм принимает решения. Возвращает он по-прежнему исходные элементы, а не спроецированные значения:
auto top = std::ranges::max(tasks, {}, &Task::priority);
// top — это Task{"Деплой", 3}, а НЕ число 3
// (и это копия: max возвращает элемент по значению)
auto it = std::ranges::min_element(tasks, {}, &Task::priority);
// *it — Task{"Код", 1}, итератор на сам элемент (копии нет)То есть проекция — это «по какому ключу», а не «во что превратить». Если нужно именно превратить элементы — это уже
views::transform.Там, где сравниваются два диапазона (
equal, mismatch, …), проекций тоже две — по одной на каждый вход:std::vector<Task> a = { {"X", 1}, {"Y", 2} };
std::vector<Task> b = { {"A", 1}, {"B", 2} };
// равны ли списки по приоритетам, игнорируя имена?
bool same = std::ranges::equal(a, b, {}, &Task::priority, &Task::priority);
// {} — предикат по умолчанию, дальше proj1 и proj2
// true: 1 == 1, 2 == 2• Порядок аргументов.
proj идёт после компаратора, а не вместо. sort(tasks, &Task::priority) — указатель на поле не годится в компараторы → простыня ошибок. Правильно: sort(tasks, {}, &Task::priority).• Проекцию зовут много раз. В sort — на каждом сравнении, O(n log n) вызовов. Тяжёлую (парсит строку) выгоднее посчитать заранее и сортировать по готовым ключам.
• Проекция ≠ преобразование вывода. На выходе всегда исходные элементы. Превратить их —
это views::transform.• Свёртки без проекций. У
fold_* параметра proj нет (хотя у for_each и transform есть). «Свернуть по полю» — только лямбдой или через views::transform.📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#константная_правильностьx
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9
🧵 Hazard pointers без воды
Разбор безопасного освобождения памяти в
• Гонка: X взял указатель на вершину и уснул, Y удалил узел, X читает по освобождённому адресу. UB
• ABA: аллокатор переиспользует адрес, CAS видит «тот же» указатель и возвращает мёртвое значение. Развал структуры
• Идея: поток публикует адрес в атомарный
• Удаление откладывается: кандидаты копятся в
Scan собирает все активные
👉 Разбор
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#свежак
Разбор безопасного освобождения памяти в
lock-free структурах: почему нельзя просто delete узел, который кто-то ещё держит.• Гонка: X взял указатель на вершину и уснул, Y удалил узел, X читает по освобождённому адресу. UB
• ABA: аллокатор переиспользует адрес, CAS видит «тот же» указатель и возвращает мёртвое значение. Развал структуры
• Идея: поток публикует адрес в атомарный
hp_ptr. Пока опубликован — узел не удаляют• Удаление откладывается: кандидаты копятся в
retired_list, реальный delete идёт позже, в фазе scanScan собирает все активные
hp_ptr под shared_mutex, сортирует и бинарным поиском проверяет кандидатов. Нет в активных — deleter вызывается. 👉 Разбор
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#свежак
😁2❤1😢1
⏰ Уже сегодня в 19:00 (МСК) стартует открытый урок!
Тема:
🔥 За 90 минут разберёмся, когда действительно стоит строить мультиагентную систему, а когда она только добавляет сложность, расходы и новые точки отказа.
Поговорим о критериях выбора архитектуры, типичных ошибках и ограничениях современных ИИ-агентов, которые важно учитывать ещё до внедрения в продукт.
🎙️ Спикер — Дмитрий Юдин, руководитель AI/ML-направления в Сloud․ru.
🎁 Для всех участников подготовили промокод на скидку 10 000 ₽ на курс «Разработка ИИ-агентов».
👉 Успей присоединиться к уроку
Тема:
«Мультиагентные системы: почему большинство архитектур переусложнены»
🔥 За 90 минут разберёмся, когда действительно стоит строить мультиагентную систему, а когда она только добавляет сложность, расходы и новые точки отказа.
Поговорим о критериях выбора архитектуры, типичных ошибках и ограничениях современных ИИ-агентов, которые важно учитывать ещё до внедрения в продукт.
🎙️ Спикер — Дмитрий Юдин, руководитель AI/ML-направления в Сloud․ru.
🎁 Для всех участников подготовили промокод на скидку 10 000 ₽ на курс «Разработка ИИ-агентов».
👉 Успей присоединиться к уроку