С/С++ Portal | Программирование (@Cpportal) — Telegram-канал | Telegram Dialogs
Все каналы
С/С++ Portal | Программирование

С/С++ Portal | Программирование

@Cpportal

15.1K подписчиков технологии

Присоединяйтесь к нашему каналу и погрузитесь в мир для C/C++-разработчика Сотрудничество, реклама: @devmangx Менеджер: @Spiral_Yuri РКН: https://clck.ru/3Foc4d

Последние публикации

С/С++ Portal | Программирование
17.07.2026 17:41 · 👁 683
Когда std::vector увеличивает свою емкость, он поочередно копирует каждый элемент, а затем уничтожает исходные объекты. Для типов, которые по сути представляют собой просто набор битов (string, unique_ptr, сам vector), такое копирование с последующим уничтожением — лишняя работа. В C++26 компилятор сможет вместо этого использовать memcpy. Предложение P2786 добавляет в C++26 тривиальную перемещаемость. Пометьте свой тип как trivially_relocatable, и контейнеры смогут переносить элементы одним вызовом memcpy вместо копирования с последующим уничтожением. Измеренное ускорение при перераспределении памяти vector для распространенных типов: от 2 до 10 раз. 👉 @Cpportal
С/С++ Portal | Программирование
17.07.2026 15:41 · 👁 795
На Stepik вышла программа «DevOps с нуля: от Linux до Kubernetes» Это комплексная программа из 5 практических курсов по ключевым технологиям DevOps: Linux, Git, Docker, GitLab CI/CD, Kubernetes Вы последовательно пройдёте путь от работы в Linux и управления кодом через Git до контейнеризации приложений, настройки CI/CD-пайплайнов и развёртывания в Kubernetes. Что вы изучите: • работу с Linux и командной строкой • Git и контроль версий в реальных проектах • создание Docker-образов и запуск контейнеров • автоматизацию сборки, тестирования и деплоя в GitLab CI/CD • развёртывание и управление приложениями в Kubernetes • сети, хранилища, конфигурации и секреты • диагностику инфраструктуры и автоматизацию рутинных задач ... и многое другое Все знания закрепляются на практике с помощью заданий с автопроверкой. Материал подаётся последовательно и понятным языком: с примерами, схемами и демонстрациями. Во время обучения можно задавать вопросы по урокам и заданиям, получать обратную связь и помощь при возникновении сложностей. После прохождения программы вы получите сертификат, который можно добавить в резюме. Скидка 20% на 48 часов: по промокоду DEVOPS20 стоимость всей программы составит 10 392 ₽. Открыть программу на Stepik
С/С++ Portal | Программирование
17.07.2026 06:07 · 👁 1.2K
Парсинг URL в C++ не должен требовать сторонней зависимости, регулярных выражений или 200 строк самописного кода для разбиения строк. Boost.URL предоставляет парсинг URL в соответствии с RFC. url_view выполняет разбор без выделения памяти, а сам парсинг теперь поддерживает constexpr. Boost.URL поддерживается C++ Alliance. Среди последних обновлений — constexpr-парсинг, независимый аудит безопасности и полностью переработанная документация с использованием MrDocs. Парсите, изменяйте и разрешайте URL через типобезопасный API. Библиотеку можно использовать как header-only или в скомпилированном виде. Она работает с std::string и string_view. Documentation: boost.org/libs/url Source: github.com/boostorg/url 👉 @Cpportal
С/С++ Portal | Программирование
16.07.2026 16:07 · 👁 1.3K
std::string вызывает malloc у вас за спиной. Как только строка выходит за пределы small buffer optimization, каждое присваивание незаметно обращается к куче. На hot path это приводит к неожиданным задержкам. А в embedded- или real-time-коде динамическое выделение памяти может быть вообще недопустимо. Но что, если максимальная длина строки известна на этапе компиляции? Строка фиксированной ёмкости static_string<N>, которая хранит символы внутри самого объекта, не использует кучу и предоставляет интерфейс, совместимый с std::string. Превышение ёмкости N приводит к определённой ошибке, которую можно перехватить, а не к незаметному перевыделению памяти. static_string можно даже использовать в качестве нетипового параметра шаблона. Отлично подходит для embedded-систем, real-time-кода и hot path. https://godbolt.org/ 👉 @Cpportal
С/С++ Portal | Программирование
16.07.2026 06:07 · 👁 1.4K
Масштабирование множества Мандельброта на C Сложная динамика возникает при многократном выполнении итерации z = z² + c для миллионов пикселей. Для плавных цветовых переходов используется формула ν = n + 1 − log(log|z|) / log(2). Адаптивное количество итераций увеличивается примерно пропорционально −log(zoom), что позволяет эффективно сохранять детализацию при глубоком приближении. Косинусные палитры вычисляют цвет по формуле RGB = 0.5 + 0.5 cos(2πt + φ) для каждого кадра. Полный исходный код - https://github.com/Corg-Labs/mandel 👉 @Cpportal
С/С++ Portal | Программирование
15.07.2026 16:07 · 👁 1.4K
Программирование BMP-изображения на C youtu.be/UnW8TKlJUYg 👉 @Cpportal
С/С++ Portal | Программирование
15.07.2026 06:07 · 👁 1.5K
Переполнение знаковых целых чисел считается неопределённым поведением ещё со времён C89. И только в C23 появился стандартный способ проверить возможность переполнения, не выполняя сначала саму операцию. 👉 @Cpportal
С/С++ Portal | Программирование
14.07.2026 16:07 · 👁 1.6K
Все научились затирать пароли перед вызовом free(). Но годами компилятор незаметно удалял эту операцию. Не потому, что она была некорректной, а потому, что мог доказать: эти байты больше никто не прочитает. Безопасность проигрывала оптимизации, пока в C23 наконец не появился memset_explicit(). 👉 @Cpportal
С/С++ Portal | Программирование
14.07.2026 06:06 · 👁 1.6K
Мы можем реализовать алгоритм рисования линии Брезенхэма, используя только целочисленную арифметику и сложение. Он вычисляет координаты пикселей для растеризации линий без операций с плавающей точкой и без деления. void bresenham(int x0, int y0, int x1, int y1, void (*plot)(int, int)) { int dx = abs(x1 - x0); int dy = abs(y1 - y0); int sx = x0 < x1 ? 1 : -1; int sy = y0 < y1 ? 1 : -1; int err = dx - dy; while (1) { plot(x0, y0); if (x0 == x1 && y0 == y1) break; int e2 = 2 * err; if (e2 > -dy) { err -= dy; x0 += sx; } if (e2 < dx) { err += dx; y0 += sy; } } } 👉 @Cpportal
С/С++ Portal | Программирование
13.07.2026 16:07 · 👁 1.6K
Создание распределённых систем с нуля Процесс выбора лидера кажется простым: достаточно просто выбрать лидера. Но каждый, кто работал с реальным кластером, знает, насколько интересными бывают сбои: разделение голосов, устаревшие лидеры и узлы, которые не могут прийти к согласию о том, кто сейчас главный. Raft решает эту задачу благодаря удачному сочетанию случайных тайм-аутов и голосования на основе термов. Но по-настоящему понимаешь, почему это работает, только когда отлаживаешь кластер, который упорно не может выбрать лидера. В этом модуле вы реализуете механизм выбора лидера в Raft с нуля. Вы создадите три состояния узла (Leader, Follower и Candidate), реализуете heartbeat-сообщения для проверки доступности, случайные тайм-ауты для предотвращения разделения голосов и RPC RequestVote с корректным управлением термами. Затем вы разберётесь с наиболее неприятными случаями: разделением голосов, требующим повторного голосования, устаревшими кандидатами, которые не должны побеждать, и сценариями сетевого разделения, когда обе группы узлов считают, что у каждой есть свой лидер. Консенсус — самая сложная часть распределённых систем, и именно в механизме выбора лидера скрывается большинство ошибок алгоритмов консенсуса. Реализовать его самостоятельно, увидеть, как он ломается, исправить ошибки и наблюдать, как кластер снова приходит к согласованному состоянию, — именно это отличает знание Raft от его настоящего понимания. 👉 @Cpportal
Чат поддержки
Ответим здесь же, обычно быстро
Здравствуйте! Напишите ваш вопрос — оператор ответит в этом чате.