⚡️ Продолжаем знакомить вас с экспертами курса AgentOps!
— Сергей Нотевский расскажет, как выстроить FinOps для AI-продуктов: оптимизировать затраты на разработку и продакшен, внедрить model routing, semantic cache и систему алертов для контроля расходов
— Эмиль Сатаев разберет Context Engineering: управление контекстом, защиту от prompt injection, работу с длинными контекстами и построение безопасного пайплайна входа для AI-систем
— Михаил Бондаревский покажет, как подготовить инфраструктуру для AI-агентов: Docker, sandboxing, streaming, docker-compose и воспроизводимое окружение для разработки и продакшена
— Мурат Хажгериев расскажет про Enterprise Integrations & MCP: когда MCP действительно нужен, как подключать внешние сервисы и реализовывать интеграции с OAuth2 delegation
— Герман Сабиров разберет Governance & Compliance для AI-систем: data flow, audit logs, требования 152-ФЗ, локализацию данных и построение compliance-подхода на уровне архитектуры
Курс для backend-разработчиков, тимлидов и LLM инженеров о том, как внедрять AI-логику в бэкенд IT-продуктов и сохранять стабильность сервиса.
👉 Изучить обновленную программу AgentOps и занять место.
— Сергей Нотевский расскажет, как выстроить FinOps для AI-продуктов: оптимизировать затраты на разработку и продакшен, внедрить model routing, semantic cache и систему алертов для контроля расходов
— Эмиль Сатаев разберет Context Engineering: управление контекстом, защиту от prompt injection, работу с длинными контекстами и построение безопасного пайплайна входа для AI-систем
— Михаил Бондаревский покажет, как подготовить инфраструктуру для AI-агентов: Docker, sandboxing, streaming, docker-compose и воспроизводимое окружение для разработки и продакшена
— Мурат Хажгериев расскажет про Enterprise Integrations & MCP: когда MCP действительно нужен, как подключать внешние сервисы и реализовывать интеграции с OAuth2 delegation
— Герман Сабиров разберет Governance & Compliance для AI-систем: data flow, audit logs, требования 152-ФЗ, локализацию данных и построение compliance-подхода на уровне архитектуры
Курс для backend-разработчиков, тимлидов и LLM инженеров о том, как внедрять AI-логику в бэкенд IT-продуктов и сохранять стабильность сервиса.
👉 Изучить обновленную программу AgentOps и занять место.
👍1
🖥 86Box 6.0: низкоуровневая эмуляция x86 как она есть
Вышел релиз открытого эмулятора 86Box — эмуляция машин от 8086 до Celeron Mendocino, способная поднять MS-DOS, Windows 3.11/95, OS/2, BeOS и NEXTSTEP.
• Реализована симуляция звуков HDD: писк шпинделя и щелчки позиционирования головок — фетиш для тех, кто скучает по железу 90-х
• Добавлен виртуальный сетевой коммутатор для связи нескольких экземпляров 86Box между собой
• Появился турбо-режим, снимающий искусственное ограничение скорости эмуляции.
• Заметно поднята производительность на ARM-хостах, добавлен запуск под ARM64-версии Windows
• Расширен список эмулируемых машин (от IBM Multistation 5550 до плат на Slot 1) и звуковых карт ISA/LPT
Кодовая база остаётся на чистом C — что для проекта с такой плотностью низкоуровневой работы с железом выбор предсказуемый: прямой контроль над памятью и отсутствие сюрпризов на границе ABI.
👉 Github
📍Навигация: Вакансии • Задачи • Собесы • Канал в Max
Библиотека C/C++ разработчика
#свежак
Вышел релиз открытого эмулятора 86Box — эмуляция машин от 8086 до Celeron Mendocino, способная поднять MS-DOS, Windows 3.11/95, OS/2, BeOS и NEXTSTEP.
• Реализована симуляция звуков HDD: писк шпинделя и щелчки позиционирования головок — фетиш для тех, кто скучает по железу 90-х
• Добавлен виртуальный сетевой коммутатор для связи нескольких экземпляров 86Box между собой
• Появился турбо-режим, снимающий искусственное ограничение скорости эмуляции.
• Заметно поднята производительность на ARM-хостах, добавлен запуск под ARM64-версии Windows
• Расширен список эмулируемых машин (от IBM Multistation 5550 до плат на Slot 1) и звуковых карт ISA/LPT
Кодовая база остаётся на чистом C — что для проекта с такой плотностью низкоуровневой работы с железом выбор предсказуемый: прямой контроль над памятью и отсутствие сюрпризов на границе ABI.
👉 Github
📍Навигация: Вакансии • Задачи • Собесы • Канал в Max
Библиотека C/C++ разработчика
#свежак
👍4
Forwarded from Библиотека собеса по C++ | вопросы с собеседований
Чтобы безопасно использовать выровненные SIMD-загрузки (например, _mm256_load_ps) по SoA-массиву float, массив должен быть выровнен на:
Anonymous Quiz
3%
1 байт
26%
4 байта
28%
8 байт
37%
32 байта
6%
Выравнивание не важно
👾2
📤 export: что именно вы отдаёте наружу?
Из модуля наружу видно только то, что помечено
Открыть наружу можно почти любую сущность: функции, типы, шаблоны, переменные, псевдонимы
🪐 Удобные формы записи
❗️
❌ Ошибки
•
• функцию со
• нельзя открывать что-либо из общей вступительной части модуля (того, что идёт до
📍Навигация: Вакансии • Задачи • Собесы • Канал в Max
Библиотека C/C++ разработчика
#константная_правильность
Из модуля наружу видно только то, что помечено
export. Всё остальное снаружи не видно — но это не «закрытость» уровня файла: у непомеченных сущностей модульное связывание, то есть их видят другие единицы трансляции того же модуля, просто не видит код, который подключает модуль. Это противоположность заголовкам, где в чужой код текстуально попадает вообще всё.export module geometry;
export struct Point { double x, y; }; // открыто наружу
double dist(Point a, Point b); // скрыто снаружи,
// но доступно внутри модуля
export double length(Point p) { // открыто наружу
return dist(p, {0, 0});
}
Открыть наружу можно почти любую сущность: функции, типы, шаблоны, переменные, псевдонимы
using.export { // блок экспорта
int foo();
int bar();
}
export namespace net { // только объявления ЭТОГО блока
void connect();
}
export import utils; // повторный экспорт: проброс
// чужого модуля дальшеexport namespace открывает только то, что объявлено в этом блоке. Если позже снова открыть пространство имён net без export, новые имена наружу не уйдут.• export допустим только в единице, которая начинается с export module …;. В единице реализации (module geometry; без export) это ошибка компиляции•
export нельзя ставить на сущности в безымянном пространстве имён — у них внутреннее связывание• функцию со
static не открыть — она по определению локальна (внутреннее связывание)• нельзя открывать что-либо из общей вступительной части модуля (того, что идёт до
export module …;)📍Навигация: Вакансии • Задачи • Собесы • Канал в Max
Библиотека C/C++ разработчика
#константная_правильность
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3❤2👍2🥱1
🐸 Подборка вакансий для C++-разработчиков за неделю
Системный разработчик С++ — Офис (Москва)
Разработчик C++ — Удалёнка
Senior C Developer —Удалёнка
Разработчик на C/C++ под Linux — от 250 000 и до 350 000 ₽ Удалёнка/Гибрид (Москва)
📍Навигация: Вакансии • Задачи • Собесы • Канал в Max
Библиотека C/C++ разработчика
#вакансии
Системный разработчик С++ — Офис (Москва)
Разработчик C++ — Удалёнка
Senior C Developer —Удалёнка
Разработчик на C/C++ под Linux — от 250 000 и до 350 000 ₽ Удалёнка/Гибрид (Москва)
📍Навигация: Вакансии • Задачи • Собесы • Канал в Max
Библиотека C/C++ разработчика
#вакансии
😁1😢1
⚙️ TypeScript без V8: AOT-компиляция в нативный бинарник
В МойОфисе уперлись в санкционные ограничения Qt и медленную разработку UI на C++. Решение — компилировать TypeScript в натив напрямую, без браузера и интерпретатора.
• Фронтенд компилятора написан на самом TS и крутится в Node.js: переиспользуют парсер и AST от Microsoft
• Выход фронтенда — LLVM IR, дальше стандартный бэкенд LLVM и llc. По сути поток компиляции концептуально идентичен Clang
• Свой JS-рантайм (TSNative STD): базовые типы ECMAScript, GC, event loop — всё, что обычно даёт V8
• Сопоставление TS-вызовов с C++-символами идёт через .d.ts-декларации и nm: ищут по обычному имени, вставляют в IR mangled
Точка входа живёт на стороне C++: она инициализирует рантайм и дёргает единственный экспорт tsmain, в который слинкован весь TS-код как статическая библиотека (extern «C», с оглядкой на ABI)
👉 Статья
👉 Видео
📍Навигация: Вакансии • Задачи • Собесы • Канал в Max
Библиотека C/C++ разработчика
#буст
В МойОфисе уперлись в санкционные ограничения Qt и медленную разработку UI на C++. Решение — компилировать TypeScript в натив напрямую, без браузера и интерпретатора.
• Фронтенд компилятора написан на самом TS и крутится в Node.js: переиспользуют парсер и AST от Microsoft
• Выход фронтенда — LLVM IR, дальше стандартный бэкенд LLVM и llc. По сути поток компиляции концептуально идентичен Clang
• Свой JS-рантайм (TSNative STD): базовые типы ECMAScript, GC, event loop — всё, что обычно даёт V8
• Сопоставление TS-вызовов с C++-символами идёт через .d.ts-декларации и nm: ищут по обычному имени, вставляют в IR mangled
Точка входа живёт на стороне C++: она инициализирует рантайм и дёргает единственный экспорт tsmain, в который слинкован весь TS-код как статическая библиотека (extern «C», с оглядкой на ABI)
👉 Статья
👉 Видео
📍Навигация: Вакансии • Задачи • Собесы • Канал в Max
Библиотека C/C++ разработчика
#буст
😢5👍3🤔2
😎 Знакомьтесь с экспертом Proglib.academy: Senior Software Engineer и Team Lead в Yandex Cloud Роман Барлос
Роман — консультант нашего курса «Разработка ИИ-агентов». Он работает на стыке cloud-native архитектуры и AI, активно внедряя современные ИИ-подходы в реальные процессы разработки.
За что его ценит IT-комьюнити?
🟣 Team Lead и AI-евангелист в команде UX Yandex Cloud
🟣 Техлид Sourcecraft Code Assistant
🟣 Создатель полезного Open Source
🟣 Автор интерактивных ML-визуализаций
Роман регулярно делится инженерными наработками, инсайтами и экспертизой в своем авторском Telegram-канале
На курсе Роман выступает консультантом программы: он помогает формировать содержание уроков с опорой на актуальные инженерные практики и жесткие требования индустрии.
Узнать больше о программе и разработке автономных систем:
👉 Курс «Разработка ИИ-агентов»
Так, продолжаем знакомить вас с командой?
👍 — Да, ждем новых лиц
🔥 — Жду полезные материалы от Романа
Роман — консультант нашего курса «Разработка ИИ-агентов». Он работает на стыке cloud-native архитектуры и AI, активно внедряя современные ИИ-подходы в реальные процессы разработки.
За что его ценит IT-комьюнити?
14-лет в разработке. Занимается AI-адопшеном в команде Yandex Cloud, проводит мастер-классы и продвигает лучшие практики для повышения эффективности разработчиков.
С сильным практическим бэкграундом принимал участие как технический лид в создании мощного AI-расширения для VS Code.
Разрабатывает утилиты, которые позволяют быстро начать эксперименты с инференсом и агентами в локальном окружении: например, набор скриптов vllm-setup для быстрого запуска окружения и mini-proxy — минималистичный прокси для OpenAI API провайдеров.
Объясняет сложные концепции наглядно. Создал серию залипательных обучающих материалов, где можно вживую пощупать работу сетей Хопфилда, машин Больцмана и VC-размерности.
Роман регулярно делится инженерными наработками, инсайтами и экспертизой в своем авторском Telegram-канале
На курсе Роман выступает консультантом программы: он помогает формировать содержание уроков с опорой на актуальные инженерные практики и жесткие требования индустрии.
Узнать больше о программе и разработке автономных систем:
👉 Курс «Разработка ИИ-агентов»
Так, продолжаем знакомить вас с командой?
👍 — Да, ждем новых лиц
🔥 — Жду полезные материалы от Романа
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱3😁1👾1
📰 Свеженькое из мира C++
Подготовили подборку самых интересных материалов за неделю о разных аспектах программирования и интересных проектах в мире C++.
😎 Интересное:
• Как выдать shared_ptr на себя из метода? — решение проблемы передачи сырых указателей на самого себя
• 86Box 6.0: низкоуровневая эмуляция x86 как она есть — обновление полноценного эмуляторы для x86 платформы
• export: что именно вы отдаёте наружу? — разбираем способы экспорта из C++ модулей
• TypeScript без V8: AOT-компиляция в нативный бинарник — интересный подход по связыванию TypeScript с C++ кодом
📙 Ranges:
• Алгоритмы диапазонов: Алгоритмы модификации
🔹📍Навигация: Вакансии • Задачи • Собесы • Канал в Max
Библиотека C/C++ разработчика
#свежак
Подготовили подборку самых интересных материалов за неделю о разных аспектах программирования и интересных проектах в мире C++.
😎 Интересное:
• Как выдать shared_ptr на себя из метода? — решение проблемы передачи сырых указателей на самого себя
• 86Box 6.0: низкоуровневая эмуляция x86 как она есть — обновление полноценного эмуляторы для x86 платформы
• export: что именно вы отдаёте наружу? — разбираем способы экспорта из C++ модулей
• TypeScript без V8: AOT-компиляция в нативный бинарник — интересный подход по связыванию TypeScript с C++ кодом
📙 Ranges:
• Алгоритмы диапазонов: Алгоритмы модификации
🔹📍Навигация: Вакансии • Задачи • Собесы • Канал в Max
Библиотека C/C++ разработчика
#свежак
😁2
Forwarded from Библиотека собеса по C++ | вопросы с собеседований
В C++23 приняли P2718R0 — и старый баг range-for тихо исчез. Но не для всех временных объектов и не безусловно.
std::vector<int> getData() { return {1, 2, 3}; }
for (int x : getData() // временный 1
| filtered) // вью поверх него
std::cout << x;📍Навигация: Вакансии • Задачи • Собесы • Канал в Max
Библиотека C/C++ разработчика
#константная_правильностьx
Please open Telegram to view this post
VIEW IN TELEGRAM
😁2🔥1
Мем к недавно выходившему посту 😆
📍Навигация: Вакансии • Задачи • Собесы • Канал в Max
Библиотека C/C++ разработчика
#развлекалово
📍Навигация: Вакансии • Задачи • Собесы • Канал в Max
Библиотека C/C++ разработчика
#развлекалово
😁10❤1
🔥 Инженерная методичка по ИИ от Романа Барлоса (Team Lead в Yandex Cloud)
Продолжаем делиться экспертизой команды курса «Разработка ИИ-агентов».
Роман собрал мастхев-инструменты и ключевые работы для тех, кто хочет выйти за рамки вайбкодинга.
🛠️ Полезные инструменты:
📚 Ключевые работы по LLM:
На курсе Роман выступает консультантом программы: помогает формировать содержание уроков с опорой на актуальные инженерные практики».
Занять свое место на потоке:
👉 Курс «Разработка ИИ-агентов»
Продолжаем делиться экспертизой команды курса «Разработка ИИ-агентов».
Роман собрал мастхев-инструменты и ключевые работы для тех, кто хочет выйти за рамки вайбкодинга.
🛠️ Полезные инструменты:
• Understand Anything — граф знаний по коду и зависимостям.
• DeepTutor — open-source платформа для персонализированного обучения.
• Superpowers — набор практик для системной разработки с ИИ.
• Awesome Agent Skills — коллекция навыков для ИИ-агентов.
📚 Ключевые работы по LLM:
• Attention Is All You Need (2017) — архитектура Transformer.
• GPT-1 (2018) — начало эпохи GPT.
• GPT-2 (2019) — решение новых задач без дообучения.
• GPT-3 (2020) — обучение на примерах из запроса.
• InstructGPT (2022) — RLHF и современные чат-боты.
На курсе Роман выступает консультантом программы: помогает формировать содержание уроков с опорой на актуальные инженерные практики».
Занять свое место на потоке:
👉 Курс «Разработка ИИ-агентов»
😁2❤1
Forwarded from Библиотека задач по C++ | тесты, код, задания
Forwarded from Библиотека задач по C++ | тесты, код, задания
😁2🔥1
В прошлый раз модифицировали диапазоны — теперь сворачиваем их в одно значение. В C++23 появилось семейство
fold_*, которое наконец заменяет std::accumulate и аккуратно выводит типы.🍰 ranges::fold_left — свёртка слева
std::vector<int> v = {1, 2, 3, 4, 5};
int sum = std::ranges::fold_left(v, 0, std::plus{}); // 15
int product = std::ranges::fold_left(v, 1, std::multiplies{}); // 120Левоассоциативная свёртка: аккумулятор — левый аргумент операции, элемент — правый. По шагам это (((( 0+1 )+2 )+3 )+4 )+5. Начальное значение задаёте сами.
🥨 ranges::fold_left_first — первый элемент как начало
std::vector<int> v = {3, 1, 4, 1, 5};
auto max_val = std::ranges::fold_left_first(v, [](int a, int b){
return std::max(a, b);
});
// max_val == std::optional<int>{5}То же самое, но начальным значением берётся первый элемент диапазона — отдельный init не нужен. Удобно для max/min, где придумывать «нейтральный» элемент неловко (Для готовых max/min, конечно, есть ranges::max —
fold_left_first интересен произвольной операцией).std::nullopt. Не забудьте проверить перед разыменованием.🥖 ranges::fold_right — свёртка справа
std::vector<int> v = {1, 2, 3};
int r = std::ranges::fold_right(v, 0, std::minus{});
// 1 - (2 - (3 - 0)) == 2
int l = std::ranges::fold_left(v, 0, std::minus{});
// ((0 - 1) - 2) - 3 == -6Идёт с правого конца: result = f(1, f(2, f(3, 0))). Для коммутативных операций (plus, multiplies) результат совпадёт с fold_left, а для некоммутативных — нет, как видно по вычитанию.
fold_right порядок аргументов операции зеркальный: вызывается f(элемент, аккумулятор), то есть элемент идёт первым, а не вторым. Для своих лямбд это легко перепутать.🥯 ranges::fold_right_last — последний элемент как начало
std::vector<int> v = {1, 2, 3};
auto res = std::ranges::fold_right_last(v, std::minus{});
// 1 - (2 - 3) == 2, внутри std::optional<int>{2}Зеркало fold_left_first: начальным значением берётся последний элемент, результат — тоже
std::optional с тем же поведением на пустом диапазоне.🧇 ranges::fold_left_with_iter — результат и итератор
std::vector<int> v = {1, 2, 3, 4, 5};
auto [in, value] = std::ranges::fold_left_with_iter(v, 0, std::plus{});
// value == 15
// in == v.end()Возвращает не просто значение, а структуру с полями
in (итератор конца обработки) и value. Полезно, когда после свёртки нужно знать, где именно остановились — например, при работе с подсчётами в потоке.• Главное отличие от accumulate — в том, как выводится тип накопления. У accumulate тип аккумулятора равен типу
init, поэтому std::accumulate(vd.begin(), vd.end(), 0) на векторе double молча копит в int и теряет дробную часть. А fold_left выводит тип аккумулятора из РЕЗУЛЬТАТА операции (U = decay_t<invoke_result_t<F&, T, range_reference_t<R>>>), и здесь int-ный ноль на векторе double уже ничего не теряет: plus(int, double) даёт double, и всё копится в double.std::vector<double> vd = {1.5, 2.5, 3.0};
auto s = std::ranges::fold_left(vd, 0, std::plus{});
// s == 7.0, а НЕ 6 — тип s выведен как double
// (то же самое через accumulate с init 0 дало бы int 6)Это и есть причина, по которой
fold_left лучше: он не обрезает молча.•
fold_left довольствуется однопроходным input-диапазоном (годится для istream_view и прочих потоков), а fold_right требует bidirectional-диапазона — ему нужно дойти до конца и пойти обратно. Поэтому «свернуть справа» поток на лету не выйдет.• В отличие от
remove, transform и copy_if из прошлого поста, свёртки НЕ принимают проекцию. «Свернуть по полю» одним аргументом не выйдет — нужна лямбда, которая сама достанет нужное:std::vector<Task> tasks = { {"Код", 1}, {"Деплой", 2} };
int total = std::ranges::fold_left(tasks, 0,
[](int acc, const Task& t){ return acc + t.priority; });
// 3📍Навигация: Вакансии • Задачи • Собесы • Канал в Max
Библиотека C/C++ разработчика
#константная_правильностьx
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡3👍3👾1
📉 Инфляция грейдов, смерть джунов, новая модель найма: что происходит с IT-рынком в 2026 году
Представь лифт, который застрял между этажами, а его двери завалили арматурой. Это и есть IT-рынок в 2026 году. Грейды ничего не значат, джунов не берут, кандидаты врут в резюме, компании завышают требования, а воронку найма пересобирают с нуля. Разбираемся, что пошло не так и как это чинят.
👉 Читать дальше
📍Навигация: Вакансии • Задачи • Собесы • Канал в Max
Библиотека C/C++ разработчика
#свежак
Представь лифт, который застрял между этажами, а его двери завалили арматурой. Это и есть IT-рынок в 2026 году. Грейды ничего не значат, джунов не берут, кандидаты врут в резюме, компании завышают требования, а воронку найма пересобирают с нуля. Разбираемся, что пошло не так и как это чинят.
👉 Читать дальше
📍Навигация: Вакансии • Задачи • Собесы • Канал в Max
Библиотека C/C++ разработчика
#свежак
😁3