gram news
Аватар канала C++ Academy

C++ Academy

@cpluspluc

По всем вопросам- @workakkk РКН: clck.ru/3FmxJF #VRHSZ

15,500подписчиков

Открыть канал

Последние посты

  • C++ Academy

    22 сент., 17:16

    Физически корректный ray tracer всего в 99 строках C++smallpt от Kevin Beason - один из самых известных примеров того, насколько компактным может быть настоящий path tracer.В этих 99 строках есть:отражения преломления мягкие тени color bleeding зеркальные и стеклянные поверхностиОснова при этом минимальная: векторы, лучи, сферы и одна рекурсивная функция radiance().Если дать рендеру тысячи samples per pixel, он собирает полноценный Cornell Box с зеркальной и стеклянной сферами.Проект появился ещё в 2008 году и до сих пор отлично показывает базовую механику path tracing.
    Иллюстрация к посту канала C++ AcademyИллюстрация к посту канала C++ AcademyИллюстрация к посту канала C++ Academy
    1,050522Открыть в Telegram
  • C++ Academy

    22 сент., 15:05изменён

    ⚡️ Как спроектировать ИИ-агента над корпоративными данными6 октября в 17:00 мск пройдёт новая встреча Архитектурного клуба Яндекс 360 — открытого сообщества для архитекторов и инженеров высоконагруженных систем.Даниил Смирнов, руководитель службы бэкенд-разработки Антиспама Яндекс 360 , разберёт архитектуру корпоративного агента: оркестратор, инструменты, память, EVAL и наблюдаемость.На эфире обсудят:- как сочетать полнотекстовый и векторный поиск, метаданные, фильтры и переранжирование; - как наследовать права исходных систем и изолировать данные разных пользователей и организаций; - как не выдавать из индекса и кеша данные тем, у кого нет доступа; - как ограничивать автономность агента; - как отдельно оценивать качество поиска, выбора инструментов и итогового ответа.📅 6 октября, 17:00 мск 💻 Онлайн, участие бесплатное→ Зарегистрироваться на встречу
    Иллюстрация к посту канала C++ AcademyИллюстрация к посту канала C++ Academy
    1,11032221Открыть в Telegram
  • C++ Academy

    22 сент., 11:03

    Лицо C++-разработчика, когда он написал 6000 строк кода, чтобы обогнать твои 4 строки на Python на 0,000438 секунды.
    2,420видео1813321Открыть в Telegram
  • C++ Academy

    18 сент., 14:10

    Как посчитать миллиарды уникальных значений, используя всего несколько килобайт памятиДля этого существует HyperLogLog - вероятностный алгоритм оценки количества уникальных элементов.Вместо хранения каждого значения он:— хеширует элементы — распределяет их по buckets — отслеживает необычно длинные последовательности нулей в хэшах — по этой статистике оценивает cardinalityНапример, с 16384 регистрами можно оценивать даже огромные множества, занимая порядка десятков килобайт памяти.При этом ошибка может оставаться около 1%.Именно поэтому HyperLogLog любят в аналитике и больших данных: посчитать COUNT(DISTINCT ...) для миллиардов объектов можно без хранения миллиардов ID.Магия тут не в точности до последнего элемента, а в очень хорошем компромиссе между памятью и результатом.
    Иллюстрация к посту канала C++ AcademyИллюстрация к посту канала C++ Academy
    2,0001131Открыть в Telegram
  • C++ Academy

    17 сент., 18:04

    ⚙️ useful_abstractions - вычисления на этапе компиляции в C++23Библиотека упрощает работу с constexpr и consteval. Один заголовочный файл, без зависимостей за пределами стандартной библиотеки.Что можно делать при компиляции:Передавать строки в параметры шаблонов и собирать их из частей. Вычислять хеши. Получать имена типов без RTTI. Экранировать строки для JSON, URL и HTML. Проверять UTF-8 и преобразовывать его в UTF-16/UTF-32. Останавливать сборку с понятным сообщением при ошибке в данных.Например, некорректный строковый литерал или недопустимое значение можно обнаружить ещё до запуска программы.Требуется C++23: GCC 14+, Clang 19+ или свежий AppleClang.Документация — https://constexprcore.github.io/useful_abstractions/
    constexprcore.github.iouseful_abstractions — Useful AbstractionsA header-only C++23 library of compile-time abstractions: strings you can pass as template parameters, hashing, type names, UTF conversion and escaping — all usable inside constexpr and consteval code, and all with no dependencies beyond the standard library.
  • C++ Academy

    17 сент., 18:04

    Разница между C++ и Python
    1,590видео30621Открыть в Telegram
  • C++ Academy

    17 сент., 15:57

    «Я про бэкенд»: как устроены AI-системы под капотом бигтеха🗓 3 октября, Москва и онлайнО чём: как разработчики высоконагруженных рекомендательных и генеративных систем справляются с нетривиальными вызовами. Доклады в 6 направлениях — от архитектуры систем с AI/ML до MLOps и работы на стыке бэкенда с железом.Часть спикеров: 🎤 Михаил Цветков (Алиса AI и Умные устройства) — как устроен инференс генеративных ответов Алисы в Поиске 🎤 Алина Шестакова (Positive Technologies, Cloud SIEM) — вердикт за минуту: ML-фильтр и LLM на потоке более 40 тысяч событий в секунду 🎤 Андрей Аксёнов (Авито) — база векторных баз 🎤 Егор Хайруллин (Рекламные технологии Яндекса) — как распределённо обрабатывать более 100 ГБ/с в реальном времени без потерь и дублей с помощью YTsaurus Flow 🎤 Владислав Тюльбашев (Яндекс) — как надежно раздавать конфиги на 200к хостов при отказе [n-1] ДЦ 🎤 Алексей Логинов
    я про бэкендя про бэкенд — Конференция про вызовы бэкенд-разработки в эпоху роста нагрузки и развития AI
  • C++ Academy

    16 сент., 13:44

    💡 Алгоритм Флойда находит цикл в связном списке всего с двумя указателями и O(1) дополнительной памяти.Идея простая:slow двигается на 1 узел fast — на 2Если цикл есть, они обязательно встретятся.После встречи один указатель возвращаем в head, а дальше оба двигаем по одному узлу. Следующая точка встречи — точное начало цикла.Node detect_cycle(Node head) { Node slow = head, fast = head;while (fast && fast->next) { slow = slow->next; fast = fast->next->next;if (slow == fast) { slow = head;
    Иллюстрация к посту канала C++ AcademyИллюстрация к посту канала C++ Academy
  • C++ Academy

    16 сент., 11:01

    Иллюстрация к посту канала C++ AcademyИллюстрация к посту канала C++ Academy
    1,64012543Открыть в Telegram
  • C++ Academy

    16 сент., 09:51

    🔥 Приглашаем на бесплатный открытый вебинар курса «Программист С»: «Указатели в Си — от адреса к управлению памятью»🗓 Когда: 24 сентября, 20:00 (мск)Указатели — это не просто синтаксис, а ключ к пониманию того, как Си общается с памятью. Без них невозможно осознанно работать с массивами, строками, структурами и динамическими данными. На вебинаре разберём указатели от самого основания — адресов и операторов — до передачи параметров по ссылке, чтобы вы перестали бояться звёздочек и начали управлять памятью уверенно.Что будет на вебинаре: • Разбор ключевых понятий: адрес переменной, операторы & и , объявление и разыменовывание указателей — разберём, как Си работает с памятью напрямую;• Пошаговый анализ связи указателей, массивов и функций — выясним, как передавать параметры по ссылке и заставлять функции изменять переменные вызывающего кода.👉 Зарегистрируйтесь
    Иллюстрация к посту канала C++ AcademyИллюстрация к посту канала C++ Academy
  • C++ Academy

    14 сент., 12:01

    ⚡️ В Linux даже обычный syscall начинается с макроса.Например:SYSCALL_DEFINE3(write, unsigned int, fd, const char __user , buf, size_t, count)После препроцессора это превращается сразу в несколько функций:- sys_write - __se_sys_write - __do_sys_writeОдна строка описывает системный вызов, а C-препроцессор через макросы и token pasting собирает остальную обвязку автоматически.Именно поэтому код ядра Linux часто выглядит коротко, пока не начнёшь разворачивать макросы.
    Иллюстрация к посту канала C++ AcademyИллюстрация к посту канала C++ Academy
    1,950732Открыть в Telegram
  • C++ Academy

    14 сент., 11:03

    🔥 Почему в Redis Cluster именно 16 384 hash slot и при чём тут {}Redis Cluster распределяет ключи не напрямую по нодам, а сначала по 16 384 hash slots.Формула по сути такая:CRC16(key) % 16384Но есть важный трюк — hash tags.Если ключ содержит часть в фигурных скобках, Redis хеширует только содержимое внутри {}:{user100}:cart {user100}:ordersОба ключа будут вычислены по user100, поэтому попадут в один и тот же hash slot и, соответственно, на одну ноду.Это нужно для multi-key операций в cluster mode.Именно поэтому такие конструкции позволяют нормально использовать:
    Иллюстрация к посту канала C++ AcademyИллюстрация к посту канала C++ Academy
  • C++ Academy

    13 сент., 14:05

    💡 C++: std::map<std::string, ...> не обязан создавать временный std::string при каждом поискеЕсли ключ уже приходит как std::string_view, можно использовать transparent comparator:std::map<std::string, int, std::less<>> status_codes{ {"not_found", 404}, {"timeout", 504} };std::string_view key = "timeout";auto match = status_codes.find(key);
    Иллюстрация к посту канала C++ AcademyИллюстрация к посту канала C++ Academy
  • C++ Academy

    13 сент., 12:02

    🔥 Хочешь расти в IT быстрее остальных? Перестань учиться в одиночкуМожно годами смотреть курсы, читать документацию и всё равно топтаться на месте.А можно попасть в правильное окружение, где каждый день обсуждают новые инструменты, вакансии, реальные кейсы, ошибки и то, что уже завтра станет стандартом.Здесь собраны папки и каналы по разным направлениям IT, чтобы ты быстрее находил нужных людей, идеи и полезный контент - без бесконечного поиска.AI: t.me/ai_machinelearning_big_data Python: t.me/pythonl Linux: t.me/linuxacademiya Хакинг: t.me/linuxkalii DevOps: t.me/DevOPSitsec Docker: https://t.me/+90Z5TAyfuNU5YmRi Golang: t.me/Golang_google Rust: t.me/rust_code C++: t.me/cpluspluc C#: t.me/csharp_ci Java: t.me/javatg JavaScript: t.me/javascriptv
    Иллюстрация к посту канала C++ AcademyИллюстрация к посту канала C++ Academy
    1,880111Открыть в Telegram
  • C++ Academy

    12 сент., 11:00

    📚 Отличная подборка материалов по современному C++На Modernes C++ собрали большой структурированный каталог статей по языку - от базовых концепций до сложных тем из современного стандарта.Что есть внутри:- templates и metaprogramming; - concurrency и multithreading; - smart pointers и управление ресурсами; - ranges, concepts и coroutines; - STL и алгоритмы; - memory model; - best practices и типичные ошибки; - новые возможности C++20/23 и дальше.Удобно, что это не набор случайных постов, а фактически большая карта тем по современному C++.Хороший ресурс, если хочется системно закрыть пробелы и глубже понять, как язык работает под капотом.https://modernescpp.com/index.php/table-of-content/
    Иллюстрация к посту канала C++ AcademyИллюстрация к посту канала C++ Academy
    2,70013321Открыть в Telegram
  • C++ Academy

    11 сент., 10:24

    🛠 Как автоматически закрывать файлы из C-библиотеки в C++FILE можно обернуть в std::unique_ptr с собственным обработчиком освобождения:#include <cstdio> #include <memory>struct FileCloser { void operator()(std::FILE file) const noexcept { std::fclose(file); } };using File = std::unique_ptr<std::FILE, FileCloser>;Использование внутри функции:File file{std::fopen("data.txt", "r")};if (!file) {
    Иллюстрация к посту канала C++ AcademyИллюстрация к посту канала C++ Academy
    2,4501164Открыть в Telegram
  • C++ Academy

    10 сент., 12:04

    🐢 Все пытаются ускорить процессоры. А этот проект делает наоборот.Новый проект CPU deoptimization ищет самые медленные инструкции, которые когда-либо выполнялись на x86.Идея простая:Не «как заставить CPU работать быстрее», а:«Какую самую ужасную инструкцию можно заставить выполнить процессор?»Результат уже впечатляет:💀 Рекорд x86: 198 002 498 236 тактов CPU ≈ 62 секунды на выполнение одной инструкцииЭто целая «галерея позора» для ассемблера:- странные инструкции; - неожиданные микроархитектурные эффекты;
    Иллюстрация к посту канала C++ AcademyИллюстрация к посту канала C++ Academy
    2,2201895Открыть в Telegram
  • C++ Academy

    8 сент., 12:01

    🚀 Как ядро Linux создаёт пакеты переменной длины без лишних копированийВ C есть мощный паттерн — flexible array member.Вместо хранения заголовка и данных отдельно:header → отдельно payload → отдельноможно сделать один непрерывный блок памяти:+----------------+ | struct msg | | len | +----------------+ | payload data[] | +----------------+Код:
    Иллюстрация к посту канала C++ AcademyИллюстрация к посту канала C++ Academy
    2,45012651Открыть в Telegram
  • C++ Academy

    5 сент., 12:00

    Redis не доверяет обычным строкам C - и вот почемуВ C строка заканчивается нулевым байтом \0. Из-за этого strlen() каждый раз проходит весь буфер, а хранить произвольные бинарные данные становится неудобно.Поэтому Redis использует собственную структуру SDS — Simple Dynamic Strings.В памяти она выглядит примерно так:[len][alloc][flags][данные...\0] ↑ sdsПеред самими данными Redis хранит метаданные:- len — текущую длину; - alloc — размер выделенной памяти; - flags — тип заголовка.Благодаря этому длина строки определяется за O(1), а свободное место известно заранее. При добавлении данных Redis не обязан каждый раз заново вычислять размер и перевыделять память.
    Иллюстрация к посту канала C++ AcademyИллюстрация к посту канала C++ Academy
    2,970752Открыть в Telegram
  • C++ Academy

    5 сент., 10:16

    🔥 Python + AI без игрушечных демок. Курс для тех, кто хочет собирать рабочие системы.Stepik: «Python современный AI для разработчика и автоматизации задач»63 урока, 382 шага, практика с кодом и автопроверкой.Внутри: RAG, tool calling, агенты, evals, MCP, Ollama, vLLM, pgvector + HNSW, безопасный text-to-SQL, prompt injection, кэш, очереди и sandbox для агентного кода.Плюс реальные автоматизации: почта, отчёты, боты, вебхуки и браузерные сценарии.Для тех, кто уже знает Python и хочет перейти к production AI.⏳ 72 часа скидка 55%https://stepik.org/a/295921
    Иллюстрация к посту канала C++ AcademyИллюстрация к посту канала C++ Academy
    2,32022111Открыть в Telegram