Б
Библиотека C/C++ разработчика | cpp, boost, qt
17.07.2026 19:57 · 👁 284
🏃♀️ Proglib Academy
#развлекалово
Б
Библиотека C/C++ разработчика | cpp, boost, qt
16.07.2026 15:04 · 👁 433
🫡 Один и тот же запрос к AI можно выполнить двумя способами — и получить совершенно разный результат.
1️⃣ способ — просто попросить написать код. Модель может сгенерировать рабочее решение, но именно на этапе проверки часто всплывают пропущенные edge case’ы, ошибки обработки или проблемы с тестами.
2️⃣ способ — дать агенту цикл Think → Act → Observe. Он не останавливается после первой попытки: планирует действия, проверяет результат и, если находит ошибку, исправляет её и пробует снова.
Самое интересное, что разница здесь не столько в модели ❕ Claude, GPT или другая LLM могут быть одинаковыми. Разницу создаёт инженерная система вокруг них.
📅 Именно это разберём 23 июля в 19:00 (МСК) на бесплатном вебинаре с Алексеем Жиряковым (Executive Director в Сбере, GenAI Data Platform, ex-CTO Stream и KION).
На живом демо покажем, как один и тот же запрос работает без агентной системы и с ней 🔥
🔗 Регистрация
🏃♀️ Proglib Academy
Б
Библиотека C/C++ разработчика | cpp, boost, qt
16.07.2026 11:17 · 👁 684
🍙 Sentinel: нестандартный конец диапазона
В прошлом посте stride_view отдавал из end() пустую stride_sentinel{}, а итератор сам таскал внутри end_ и сравнивался с ним. Это уже был sentinel — просто самый скромный его вид. Сегодня посмотрим, на что sentinel способен, когда условие конца живёт в нём самом.
🍬 Итератор говорит «где», sentinel — «когда стоп»
Обычный end() в STL — это итератор на позицию за последним элементом. Чтобы его получить, позицию надо знать заранее.
Sentinel ломает это правило. Он не хранит позицию — он хранит условие остановки. Итератор шагает вперёд и на каждом шаге как бы спрашивает: «мы уже приехали?». Sentinel отвечает, глядя не на свой адрес, а на то, куда сейчас показывает итератор.
🍴 Классика жанра — C-строки
У C-строки нет заранее известного конца: он определяется на лету — идём, пока не встретим '\0'. Идеальный кейс для sentinel:
struct null_sentinel_t {
// 🔴 Сравниваем не адреса, а СОДЕРЖИМОЕ:
// итератор == концу, если он смотрит на '\0'
bool operator==(const char* ptr) const { return *ptr == '\0'; }
};
inline constexpr null_sentinel_t null_sentinel{};
struct cstring_range {
const char* ptr;
const char* begin() const { return ptr; } // обычный итератор
null_sentinel_t end() const { return null_sentinel; } // sentinel другого типа!
};
// Использование
const char* str = "hello";
for (char c : cstring_range{str}) {
std::cout << c; // hello
}
❗️Обрати внимание: begin() возвращает const char*, а end() — null_sentinel_t. Разные типы! Range-based for это разрешает ещё с C++17, а C++20 добавляет it != null_sentinel сам разворачивается в !null_sentinel.operator==(it). Пишешь один operator== — и обе стороны, и != работают бесплатно.
❓ Зачем вообще так заморачиваться
🥝 Ленивый конец. Не нужно звать strlen и проходить строку дважды — конец «находится» прямо во время итерации.
♾️ Бесконечные диапазоны. У генераторов, потоков, views::iota без верхней границы конца-позиции просто нет. Sentinel — единственный способ вообще описать такой диапазон.
⚡️ Дешёвое сравнение. Проверить условие (== '\0', счётчик дошёл до нуля) часто быстрее, чем сравнивать два итератора.
🥳 В стандартной библиотеке это уже есть
Свой sentinel писать нужно не всегда. В STL живёт std::default_sentinel_t (объект std::default_sentinel) — та самая пустая заглушка, которой пользуются counted_iterator, istream_view и куча вьюх. А для честно бесконечных диапазонов есть std::unreachable_sentinel — «мы не доедем никогда», и компилятор с чистой совестью выкидывает проверки границ.
🫰 std::ranges поддерживает нестандартные sentinel-ы из коробки: достаточно, чтобы для пары <итератор, sentinel> выполнялся концепт std::sentinel_for — и твой тип поедет во все алгоритмы ranges наравне с обычными итераторами.
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#под_капотом
Б
Библиотека C/C++ разработчика | cpp, boost, qt
15.07.2026 18:46 · 👁 999
💡 Свой парсер C++ на самодельном DSL
Компиляция большого C++ проекта разрастается до неприличных времён, но можно написать замену Clang/GCC/CL.EXE, начав с парсера.
• Парсер не пишется руками: грамматика на своём языке QapDSLv2
• На выходе CST, а не AST — с пробелами и комментариями
• Покрыто почти всё: 16 уровней приоритетов операторов, шаблоны, лямбды, структурное связывание.
• Неоднозначности решены грубо: T<1>(2) всегда шаблон, struct S {...};
❗️Автор честен: проект вот-вот упрётся в лимит памяти при собственной сборке и рискует тихо умереть, но с другой стороны со стороны погружения в тему интересен. Код открыт на GitHub.
🔥 Статья
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#под_капотом
Б
Библиотека C/C++ разработчика | cpp, boost, qt
15.07.2026 15:20 · 👁 1K
🍴 Rule of Zero: лучший Fab Four — тот, что ты не писал
Идеальный класс не содержит ни одного из пяти методов. Это не лень — это архитектурный принцип, который снижает количество багов.
🍒 Rule of Zero
Если каждое поле само корректно управляет своим ресурсом (std::string, std::vector, std::unique_ptr), то классу-агрегату не нужны свои Fab Four. Компилятор сгенерирует правильные почленные версии.
struct User {
std::string name;
std::vector<int> scores;
std::unique_ptr<Db> conn;
};
// move + dtor — сгенерированы, корректны и БЕСПЛАТНЫ
// copy — корректно УДАЛЁН: unique_ptr некопируем → User тоже (move-only тип)
❗️Почему работает: почленное перемещение вызовет move у каждого поля. string украдёт буфер, vector — массив, unique_ptr — указатель. Тебе не нужно писать ни строки.
❗️ Ключевое условие — не объявлять деструктор. И ~User(){}, и ~User() = default одинаково опасны: любой user-declared деструктор отключает неявную генерацию move.
✏️ Твои классы владеют new/delete напрямую — или прячут их в unique_ptr и живут по Rule of Zero?
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#под_капотом
Б
Библиотека C/C++ разработчика | cpp, boost, qt
15.07.2026 10:00 · 👁 985
🔥 Курс «Разработка ИИ-агентов» стартовал, но вы еще успеваете присоединиться!
Мы только начали, а первый практический воркшоп пройдет только 23 июля. До этого времени вы спокойно успеете изучить материалы и нагнать группу.
💼 Главная фишка: финальный проект в портфолио:
В финальном проекте вы сможете выбрать один из двух вариантов: реализовать свою идею или решить задачу от партнера курса — крупной российской финтех-компании. Вы будете работать с датасетом, построенным по реальным сценариям, получите бизнес-контекст и продовые ограничения. В результате соберете AI-агента, который станет сильным проектом для портфолио.
🎁 Упомяните менеджеру специальное предложение «3 курса по цене 1»: Берете VIP-тариф — получаете курс «Разработка ИИ-агентов», хардкорный «AgentOps» и ещё один курс на выбор. Выгода 129.000 ₽!
Двери потока вот-вот закроются окончательно. Успейте забрать стек курсов и начать работу над реальным проектом
🔗 Занять место и забрать 3 курса
Б
Библиотека C/C++ разработчика | cpp, boost, qt
14.07.2026 19:40 · 👁 1K
🤖 У нас уже отобрали работу роботы или есть другие угрозы?
Забудь про апокалиптичные прогнозы «AI отберет работу». Реальность интереснее и коварнее: появились новые правила игры, новые способы обмана заказчиков и новая ценность для тех, кто умеет думать головой. Разбираю пять таких сдвигов.
👉 Статья
Азбука айтишника
#свежак
Б
Библиотека C/C++ разработчика | cpp, boost, qt
14.07.2026 15:34 · 👁 990
1 августа Яндекс проведет Back to Back — бэкенд- конференцию, которая пройдет в Москве, Белграде и Ереване
Участников ждут инженерные доклады и разбор реальных production-проблем. В Москве состоится трек C++ Zero Cost — про производительность, системную разработку и инженерные задачи на C++, там же пройдет Architecture & Performance — про архитектуру, производительность и реальные production-задачи.
На конференции выступят эксперты из Яндекса, Авито, Positive Technologies и других компаний. Что планируют в Москве:
🔅Новости со встречи Международного комитета C++ — про интересные возможности C++26, перспективы языка и планы на C++29 расскажет Антон Полухин из Яндекса
🔅9 миллиардов этажей concurrency — база про concurrency, parallelism и многопоточность от руководителя инфраструктуры поиска Авито Андрея Аксенов
🔅Сверлим дыры в луне: добавляем поддержку языка LuaJIT в eBPF-профилировщик Perforator — ограничения eBPF, сложность устройства LuaJIT и челленджи профилирования динамических языков от Саввы Лебедева из Positive Technologies
Помимо докладов, в Москве участников ждут экспертные сессии 1:1 и выступление питерской группы «Научно-технический рэп» с хитами «Алкоритм», «Тыжпрограммист».
Программа и регистрация — тут.
Б
Библиотека C/C++ разработчика | cpp, boost, qt
14.07.2026 08:50 · 👁 990
🔥 Стартуем СЕГОДНЯ! Новый поток курса «Разработка ИИ-агентов» открыт
По этому поводу мы решили выложить закрытую запись одного из уроков из программы. Найти её в поиске YouTube нельзя — она доступна только по ссылке и всем, кто будет на курсе.
Внутри глубокий разбор LLM от Алексея Яндутова (Senior ML-инженер, развивал ответы «Алисы» и «Нейро» в Яндексе). Учимся получать точный результат без галлюцинаций.
Что внутри урока:
- Устройство LLM.
- Рабочие шаблоны промптов (Persona, Chain-of-Thought и др.).
- Разбор реального кейса Яндекса. Как автоматизировать разметку, обойти качество людей на 5% и срезать косты на 60%.
После просмотра вы поймете, когда хватает промпт-инжиниринга, а когда нужен RAG или fine-tuning.
👉Смотреть закрытый урок на YouTube
Понравился урок? Переходите на новый уровень! Оставляйте заявку на курс, чтобы научиться проектировать надежные автономные системы. Обучение началось, но вы еще успеваете присоединиться.
🔗 Занять место на курсе
Б
Библиотека C/C++ разработчика | cpp, boost, qt
13.07.2026 17:16 · 👁 808
🧩 Терминал и оболочка — это не одно и то же
Вы открываете «терминал», набираете ls — и кажется, что всё делает одна программа. На самом деле их две, и путаница между ними мешает понять половину советов из интернета.
📕 Терминал — это окно
Изначально терминал был железкой: экран и клавиатура, подключённые проводом к большому компьютеру. Сегодня это программа-эмулятор (iTerm, Windows Terminal, Gnome Terminal), которая только принимает нажатия клавиш и рисует текст на экране.
🤖 Оболочка — это мозг
Оболочка (shell) — программа, которая читает вашу команду, разбирает её и просит операционную систему запустить нужный процесс. Bash, Zsh, Fish — это всё оболочки, и они разные: команда, работающая в bash, может не завестись в fish.
⏳ Аналогия
Терминал — как браузер, а оболочка — как сайт внутри него. Браузер рисует страницу, но логика живёт не в нём.
❓ Кто что делает при вводе команды
Пока вы печатаете, оболочка ничего не знает — символы обрабатывает терминал. И только после Enter строка уходит в оболочку, которая решает, что с ней делать: выполнить встроенную команду вроде cd самой или запустить отдельную программу через ОС.
‼️ Пайпы — это работа оболочки
Вертикальная черта склеивает процессы в цепочку: вывод одного сразу становится вводом другого, без временных файлов на диске.
cat log.txt | grep ERROR | wc -l
⚠️ Частая ошибка: менять настройки терминала, когда проблема в оболочке (или наоборот). Не подхватился алиас — смотрите конфиг оболочки (.zshrc, .bashrc). Кривые цвета и эмодзи — это к терминалу.
🚨 Подкаст о терминалах и оболочках от Podlodka
✏️ А в чём вы открываете командную строку?
❤️ — в том, что был в системе
🤩 — поставил свой: iTerm, Alacritty, Ghostty, WezTerm и т.д.
🌚 — только внутри VS Code
🔥 — вообще не открываю терминал
👾 — Другое (напишу в комментариях)
🏃♀️ Азбука айтишника