Forwarded from Библиотека задач по C++ | тесты, код, задания
Какие часы обязаны быть монотонными (никогда не идут назад, не подвержены переводу системного времени)?
Anonymous Quiz
10%
system_clock
55%
steady_clock
14%
high_resolution_clock
13%
utc_clock
8%
Все перечисленные
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 и выступление питерской группы «Научно-технический рэп» с хитами «Алкоритм», «Тыжпрограммист».
Программа и регистрация — тут.
Участников ждут инженерные доклады и разбор реальных 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 и выступление питерской группы «Научно-технический рэп» с хитами «Алкоритм», «Тыжпрограммист».
Программа и регистрация — тут.
❤2👍1🥰1
Forwarded from Азбука айтишника
🤖 У нас уже отобрали работу роботы или есть другие угрозы?
Забудь про апокалиптичные прогнозы «AI отберет работу». Реальность интереснее и коварнее: появились новые правила игры, новые способы обмана заказчиков и новая ценность для тех, кто умеет думать головой. Разбираю пять таких сдвигов.
👉 Статья
Азбука айтишника
#свежак
Забудь про апокалиптичные прогнозы «AI отберет работу». Реальность интереснее и коварнее: появились новые правила игры, новые способы обмана заказчиков и новая ценность для тех, кто умеет думать головой. Разбираю пять таких сдвигов.
👉 Статья
Азбука айтишника
#свежак
😁2
🔥 Курс «Разработка ИИ-агентов» стартовал, но вы еще успеваете присоединиться!
Мы только начали, а первый практический воркшоп пройдет только 23 июля. До этого времени вы спокойно успеете изучить материалы и нагнать группу.
💼 Главная фишка: финальный проект в портфолио:
🎁 Упомяните менеджеру специальное предложение «3 курса по цене 1»: Берете VIP-тариф — получаете курс «Разработка ИИ-агентов», хардкорный «AgentOps» и ещё один курс на выбор. Выгода 129.000 ₽!
Двери потока вот-вот закроются окончательно. Успейте забрать стек курсов и начать работу над реальным проектом
🔗 Занять место и забрать 3 курса
Мы только начали, а первый практический воркшоп пройдет только 23 июля. До этого времени вы спокойно успеете изучить материалы и нагнать группу.
💼 Главная фишка: финальный проект в портфолио:
В финальном проекте вы сможете выбрать один из двух вариантов: реализовать свою идею или решить задачу от партнера курса — крупной российской финтех-компании. Вы будете работать с датасетом, построенным по реальным сценариям, получите бизнес-контекст и продовые ограничения. В результате соберете AI-агента, который станет сильным проектом для портфолио.
🎁 Упомяните менеджеру специальное предложение «3 курса по цене 1»: Берете VIP-тариф — получаете курс «Разработка ИИ-агентов», хардкорный «AgentOps» и ещё один курс на выбор. Выгода 129.000 ₽!
Двери потока вот-вот закроются окончательно. Успейте забрать стек курсов и начать работу над реальным проектом
🔗 Занять место и забрать 3 курса
Идеальный класс не содержит ни одного из пяти методов. Это не лень — это архитектурный принцип, который снижает количество багов.
Если каждое поле само корректно управляет своим ресурсом (
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 тип)string украдёт буфер, vector — массив, unique_ptr — указатель. Тебе не нужно писать ни строки.~User(){}, и ~User() = default одинаково опасны: любой user-declared деструктор отключает неявную генерацию move.📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#под_капотом
Please open Telegram to view this post
VIEW IN TELEGRAM
🙏2👍1
Компиляция большого C++ проекта разрастается до неприличных времён, но можно написать замену Clang/GCC/CL.EXE, начав с парсера.
• Парсер не пишется руками: грамматика на своём языке QapDSLv2
• На выходе CST, а не AST — с пробелами и комментариями
• Покрыто почти всё: 16 уровней приоритетов операторов, шаблоны, лямбды, структурное связывание.
• Неоднозначности решены грубо:
T<1>(2) всегда шаблон, struct S {...};🔥 Статья
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#под_капотом
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1
В прошлом посте
stride_view отдавал из end() пустую stride_sentinel{}, а итератор сам таскал внутри end_ и сравнивался с ним. Это уже был sentinel — просто самый скромный его вид. Сегодня посмотрим, на что sentinel способен, когда условие конца живёт в нём самом.Обычный
end() в STL — это итератор на позицию за последним элементом. Чтобы его получить, позицию надо знать заранее.Sentinel ломает это правило. Он не хранит позицию — он хранит условие остановки. Итератор шагает вперёд и на каждом шаге как бы спрашивает: «мы уже приехали?». Sentinel отвечает, глядя не на свой адрес, а на то, куда сейчас показывает итератор.
У 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++ разработчика
#под_капотом
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1
Forwarded from Proglib.academy | IT-курсы
Самое интересное, что разница здесь не столько в модели
На живом демо покажем, как один и тот же запрос работает без агентной системы и с ней
Please open Telegram to view this post
VIEW IN TELEGRAM
😁3