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

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

Открыть в Telegram

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

Больше

📈 Аналитический обзор Telegram-канала С/С++ Portal | Программирование

Канал С/С++ Portal | Программирование (@cpportal) языкового сегмента Русский является активным участником. Сейчас сообщество объединяет 15 320 подписчиков, занимая 8 530 место в категории Технологии и приложения и 43 728 место в регионе Россия.

📊 Показатели аудитории и динамика

С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 15 320 подписчиков.

Согласно последним данным от 14 июня, 2026, канал показывает стабильную активность. За последние 30 дней изменение числа участников составило -220, а за последние 24 часа — -16, при этом общий охват остаётся высоким.

  • Статус верификации: Не верифицирован
  • Уровень вовлечённости (ER): Средний показатель вовлечённости аудитории составляет 12.81%. В первые 24 часа после публикации контент обычно набирает 8.02% реакций от общего числа подписчиков.
  • Охват публикаций: В среднем каждый пост получает 1 963 просмотров. В течение первых суток публикация набирает 1 228 просмотров.
  • Реакции и взаимодействия: Аудитория активно поддерживает контент: среднее количество реакций на один пост — 15.
  • Тематические интересы: Контент сосредоточен на ключевых темах, таких как linux, ядро, c++, процессор, указатель.

📝 Описание и контентная политика

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

Благодаря высокой частоте обновлений (последние данные получены 15 июня, 2026) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Технологии и приложения.

15 320
Подписчики
-1624 часа
-687 дней
-22030 день

Загрузка данных...

Привлечение подписчиков
июнь '26
июнь '26
+10
в 2 каналах
май '26
+20
в 0 каналах
Get PRO
апрель '26
+6
в 0 каналах
Get PRO
март '26
+10
в 13 каналах
Get PRO
февраль '26
+6
в 3 каналах
Get PRO
январь '26
+15
в 4 каналах
Get PRO
декабрь '25
+224
в 8 каналах
Get PRO
ноябрь '25
+1 254
в 319 каналах
Get PRO
октябрь '25
+3
в 0 каналах
Get PRO
сентябрь '25
+12
в 0 каналах
Get PRO
август '25
+17
в 1 каналах
Get PRO
июль '25
+1 894
в 276 каналах
Get PRO
июнь '25
+471
в 1 каналах
Get PRO
май '25
+374
в 2 каналах
Get PRO
апрель '25
+774
в 0 каналах
Get PRO
март '25
+1 115
в 0 каналах
Get PRO
февраль '25
+880
в 1 каналах
Get PRO
январь '25
+1 567
в 2 каналах
Get PRO
декабрь '24
+2 704
в 398 каналах
Get PRO
ноябрь '24
+939
в 170 каналах
Get PRO
октябрь '24
+2 377
в 287 каналах
Get PRO
сентябрь '24
+1 692
в 283 каналах
Get PRO
август '24
+4 232
в 234 каналах
Дата
Привлечение подписчиков
Упоминания
Каналы
14 июня0
13 июня0
12 июня0
11 июня+5
10 июня0
09 июня0
08 июня0
07 июня0
06 июня0
05 июня+1
04 июня+3
03 июня+1
02 июня0
01 июня0
Посты канала
std::expected из C++23 может оказаться одним из самых практичных нововведений в языке за последние годы. Он даёт структуриров
std::expected из C++23 может оказаться одним из самых практичных нововведений в языке за последние годы. Он даёт структурированный способ обработки ошибок без использования исключений и выходных параметров. Вызывающий код не может случайно проигнорировать возможность ошибки, при этом здесь нет управления потоком выполнения через исключения. 👉 @Cpportal

2
Стандартный макрос min(a, b) может вернуть неверный результат, если один аргумент знаковый (signed), а другой беззнаковый (un
Стандартный макрос min(a, b) может вернуть неверный результат, если один аргумент знаковый (signed), а другой беззнаковый (unsigned). Во время сравнения оба значения приводятся к unsigned, поэтому отрицательные числа превращаются в огромные положительные значения. В ядре Linux макрос min() защищает от такой ошибки: он выполняет проверку типов и превращает подобные случаи в ошибку компиляции. 👉 @Cpportal
1 125
3
В C есть оператор «идёт к», которого так и не добавили в стандарт. Выглядит как оператор, но на самом деле им не является. Ко
В C есть оператор «идёт к», которого так и не добавили в стандарт. Выглядит как оператор, но на самом деле им не является. Компилятор интерпретирует его как: (x--) > 0 Сначала выполняется постдекремент, затем результат сравнивается с нулём. 👉 @Cpportal
1 293
4
Один геймер превратил GTA Online с 6-минутной загрузкой в игру с секундной загрузкой за один уикенд. Rockstar терпел эту проб
Один геймер превратил GTA Online с 6-минутной загрузкой в игру с секундной загрузкой за один уикенд. Rockstar терпел эту проблему почти 7 лет. t0st разобрал игру на уровне реверса и выявил два узких места: Один парсер каждый шаг вызывал strlen() на оставшихся 10 МБ JSON, повторяя лишнюю работу. Другая функция делала почти 2 миллиарда проверок дубликатов на 63 000 уникальных предметов, хотя в этом не было необходимости. // bug 1 - ChakraCore sscanf implementation // github.com/chakra-core/ChakraCore/blob/master/pal/src/safecrt/sscanf.c int sscanf(const char *string, const char *format, ...) { size_t count = strlen(string); // scans the whole string before parsing starts return input_s_l(..., string, count, ...); } // bug 2 - from t0st's decompilation notes char __fastcall netcat_insert_dedupe( uint64_t catalog, uint64_t *key, uint64_t *item ) { uint64_t not_a_hashmap = catalog + 88; if (!(*(uint8_t(__fastcall**)(uint64_t*))(item + 48))(item)) return 0; array_find_and_insert(not_a_hashmap, key, &item); // linear search on every insert } То же самое игра, те же данные — всего несколько строк кода решают разницу между минутами и секундами. t0st решил проблему максимально просто: Для парсера JSON он не переписывал весь движок, а просто «повесил» хук на strlen() и кешировал результат, чтобы не пересчитывать его каждый раз. Для проверки дубликатов он заметил, что элементы уже уникальные, и пропустил проверку полностью. // fix 1 - cache strlen results for very large strings size_t strlen_cacher(char *str) { static char *start, *end; if (start && str >= start && str <= end) return end - str; size_t len = __builtin_strlen(str); if (len > 20000) { start = str; end = str + len; } return len; } // fix 2 - skip the duplicate lookup entirely char __fastcall netcat_insert_dedupe_hooked( uint64_t catalog, uint64_t *key, uint64_t *item ) { uint64_t not_a_hashmap = catalog + 88; if (!(*(uint8_t(__fastcall**)(uint64_t*))(item + 48))(item)) return 0; netcat_insert_direct(not_a_hashmap, key, &item); // bypass the scan } В итоге загрузка GTA Online упала с ~6 минут до менее чем 2 минут. t0st позже сказал, что исправление выглядело как задача, которую один разработчик мог бы сделать меньше чем за день. Rockstar выплатили ему $10,000 через программу bug bounty. 👉 @Cpportal
1 394
5
В исходниках Nginx HTTP-парсер реализован как ручная конечная машина с примерно 25 состояниями. Каждый байт запроса обрабатыв
В исходниках Nginx HTTP-парсер реализован как ручная конечная машина с примерно 25 состояниями. Каждый байт запроса обрабатывается по одному, с одной трансформацией состояния за символ. Весь HTTP/1.1 request line проходит через этот парсер в один проход, без промежуточных буферизаций или повторного анализа. Это классический подход для высокопроизводительных C-серверов: минимальные аллокации, предсказуемое поведение и высокая скорость. 👉 @Cpportal
1 492
6
PID'ы переиспользуются. pidfd — нет. Если вызвать kill() для PID, который ты сохранил 20 минут назад, есть шанс отправить сиг
PID'ы переиспользуются. pidfd — нет. Если вызвать kill() для PID, который ты сохранил 20 минут назад, есть шанс отправить сигнал уже совершенно другому процессу. pidfd — это стабильный дескриптор конкретного процесса. Он остаётся привязанным именно к нему, даже если его PID позже будет переиспользован системой. Одна из тех фич Linux, после знакомства с которыми возникает только один вопрос: почему я не знал об этом раньше? 👉 @Cpportal
1 554
7
Этот обычный на вид C-код содержит серьёзную уязвимость: она может повредить память и привести к эксплуатации. Такой паттерн
Этот обычный на вид C-код содержит серьёзную уязвимость: она может повредить память и привести к эксплуатации. Такой паттерн находили в OpenSSH в 2002 году, libtiff и куче других проектов. Сможете сказать, в чём проблема, если код запускается на 32-битной системе? Именно этот кусок кода стал причиной уязвимости OpenSSH (CVE-2002-0640). nresp = packet_get_int(); if (nresp > 0) { response = xmalloc(nresp * sizeof(char *)); for (i = 0; i < nresp; i++) response[i] = packet_get_string(NULL); } Через неё атакующие могли ломать кучу, выполнять свой код на сервере и получать над ним контроль. 👉 @Cpportal
1 596
8
Бинарный поиск, который вы заучили, скорее всего реализован с ошибкой. Джон Бентли опубликовал реализацию бинарного поиска в
Бинарный поиск, который вы заучили, скорее всего реализован с ошибкой. Джон Бентли опубликовал реализацию бинарного поиска в Programming Pearls после того, как доказал её корректность и протестировал. Ошибка оставалась незамеченной почти 20 лет. Позже Джошуа Блох обнаружил ту же самую ошибку в реализации бинарного поиска, которую написал для JDK. Исследование 1988 года показало, что корректная реализация бинарного поиска была только в 5 из 20 учебников. Ошибка проявляется только на массивах размером 2³⁰ элементов и больше. Проблема возникает при вычислении середины диапазона. mid = (low + high) / 2 На очень больших массивах такое выражение может вызвать переполнение. Исправление простое: mid = low + (high - low) / 2 В C переполнение приводит к выходу за границы массива с непредсказуемыми последствиями. В Java это заканчивается исключением ArrayIndexOutOfBoundsException. Та же ошибка затронула Merge Sort и множество других алгоритмов класса «разделяй и властвуй». Эта ошибка была и в ядре Linux — в kallsyms.c. Вегард Носсум исправил её, а Линус Торвальдс одобрил патч. Исправление сводилось к замене: mid = (low + high) / 2; на: mid = low + (high - low) / 2; Джошуа Блох завершил свою статью фразой, которая остаётся актуальной и сегодня: «Трудно правильно написать даже самый маленький фрагмент кода, а весь наш мир работает на больших и сложных программных системах». 👉 @Cpportal
1 665
9
Ищем Senior Rendering Engineer (C++) в команду 3D-карты 2ГИС Мы делаем карту более реалистичной: работаем над рельефом, дорог
Ищем Senior Rendering Engineer (C++) в команду 3D-карты 2ГИС Мы делаем карту более реалистичной: работаем над рельефом, дорогами, развязками, тоннелями, анимациями и графическими эффектами. Внутри — собственный 3D-движок на C+20 (500k строк кода), современные графические API (Vulkan, Metal, OpenGL), шейдеры, сложные алгоритмы и задачи производительности. Будет интересно, если вам нравится компьютерная графика, низкоуровневая разработка и создание продукта, который ежедневно используют миллионы людей. Удалённо из РФ или из офисов 2ГИС. ДМС, обучение, конференции и возможность напрямую влиять на развитие 3D-карты. Подробнее Другие инженерные инсайты от 2ГИС → в Telegram-канале RnD
1 509
10
Вышел бесплатный гайд по Vim. Внутри: → история Vim → настройка и кастомизация → плагины → основные команды для повседневной работы https://freecodecamp.org/news/mastering-vim-your-guide-to-efficient-text-editing/ 👉 @Cpportal
1 749
11
Одна из самых недооценённых анонсированных на WWDC фич — Container Machines. Она позволяет запускать на Mac лёгкое и постоянное Linux-окружение, в котором домашний каталог пользователя и репозитории автоматически монтируются внутрь контейнера. По сути, разработчики получают Linux-среду, тесно интегрированную с macOS, без необходимости вручную настраивать виртуальные машины или сложную инфраструктуру контейнеров.🍎🐧 https://github.com/apple/container/blob/main/docs/container-machine.md 👉 @Cpportal
1 756
12
Забавный факт: решето Эратосфена позволяет найти все простые числа примерно до 8 миллионов, используя всего около 1 МБ памяти
Забавный факт: решето Эратосфена позволяет найти все простые числа примерно до 8 миллионов, используя всего около 1 МБ памяти. Один бит хранит информацию об одном числе, а внутренний цикл помечает составные числа с помощью битовых операций. Этот же подход используется в генераторах простых чисел и при выборе размеров хеш-таблиц. Если пост был полезен как и всегда - ставь like 🫢 👉 @Cpportal
1 848
13
Только что наткнулся на довольно безумную штуку — Linux прямо в браузере. ✓ Без установки и настройки, всё работает через Web
Только что наткнулся на довольно безумную штуку — Linux прямо в браузере. ✓ Без установки и настройки, всё работает через WebAssembly ✓ Из коробки доступны Python, C, C++, Vim, cURL и другие инструменты ✓ Есть доступ в интернет, так что можно ставить дополнительные пакеты Потыкать можно здесь: webvm.io Честно, не ожидал, что это будет работать настолько хорошо. 👉 @Cpportal
1 827
14
Этот алгоритм подсчёта установленных битов был опубликован ещё в 1957 году. Он считает все 64 бита параллельно с помощью ариф
Этот алгоритм подсчёта установленных битов был опубликован ещё в 1957 году. Он считает все 64 бита параллельно с помощью арифметики над битовыми масками, вместо того чтобы проходить по каждому биту в цикле. Когда инструкция POPCNT недоступна, ядро Linux использует ту же идею в функции __sw_hweight64. 👉 @Cpportal
2 024
15
Я читал исходники SQLite и нашёл интересную вещь. DELETE на самом деле не уменьшает размер файла базы данных. Удалённые стран
Я читал исходники SQLite и нашёл интересную вещь. DELETE на самом деле не уменьшает размер файла базы данных. Удалённые страницы попадают во внутренний freelist прямо внутри файла. Новые INSERT сначала переиспользуют эти свободные страницы, а уже потом снова увеличивают базу. Сам файл уменьшается только после VACUUM. Можно удалить всё из базы на 1 ГБ, а файл всё равно останется 1 ГБ, пока вы его не сожмёте. 👉 @Cpportal
2 146
16
Аллокатор памяти в NGINX по сути представляет собой указатель, который движется только вперёд. В нём нет free list-ов, он изб
Аллокатор памяти в NGINX по сути представляет собой указатель, который движется только вперёд. В нём нет free list-ов, он избегает фрагментации и сохраняет минимальные накладные расходы на каждое выделение памяти. Память выделяется из одного большого блока по мере поступления запросов. Когда обработка запроса завершается, весь пул памяти освобождается целиком за один раз. Именно этот аллокатор используется в nginx/src/core/ngx_palloc.c 👉 @Cpportal
2 136
17
файловый организатор, который автоматически наводит порядок в захламлённой папке Downloads. Достаточно запустить его один раз+1
файловый организатор, который автоматически наводит порядок в захламлённой папке Downloads. Достаточно запустить его один раз, и он разложит файлы по категориям: изображения в Images/, документы в Documents/, видео в Videos/ и так далее. 👉 @Cpportal
2 169
18
Знаете ли вы, что в ядре Linux есть механизм, появившийся ещё в 1997 году, который сегодня позволяет Mac на Apple Silicon эфф
Знаете ли вы, что в ядре Linux есть механизм, появившийся ещё в 1997 году, который сегодня позволяет Mac на Apple Silicon эффективно запускать x86-контейнеры? Он называется binfmt_misc и был добавлен в Linux 2.1.43 почти 30 лет назад. Принцип работы очень простой. Когда ядро Linux запускает бинарный файл, оно сначала читает magic number из заголовка файла. Если заранее зарегистрировать правило в /proc/sys/fs/binfmt_misc/ вида: «При встрече файла с таким magic number передавать его определённому интерпретатору», то ядро автоматически передаст выполнение этому интерпретатору. По сути, это тот же механизм, что и shebang #!/bin/bash, только сопоставление выполняется не по первой строке файла, а по сигнатуре бинарного заголовка. Изначально этот механизм использовался для того, чтобы Linux мог напрямую «запускать» Java class-файлы и Windows PE-исполняемые файлы. Позже QEMU использовал его для реализации пользовательской эмуляции между архитектурами: запуск x86 ELF-бинарников на ARM Linux, где ядро автоматически вызывало qemu-x86_64 для трансляции. Затем появился Apple Silicon. Когда на Mac с Apple Silicon вы запускаете Linux VM через Colima или Lima (использующие Virtualization.framework в macOS) и включаете rosetta: true, происходит следующее: macOS монтирует бинарник-транслятор Rosetta внутрь Linux VM по пути /mnt/lima-rosetta/rosetta через virtio-fs. Внутри VM регистрируется обычное правило binfmt_misc: при обнаружении x86_64 ELF-сигнатуры (7f454c46...02003e00) передавать выполнение /mnt/lima-rosetta/rosetta. После этого любой запуск x86_64-бинарников внутри VM автоматически перехватывается ядром и передаётся Rosetta для трансляции. Для контейнеров всё выглядит полностью прозрачно. Команда: docker run --platform linux/amd64 nginx -скачивает x86-образ, процессы внутри контейнера являются x86 ELF-бинарниками, а ядро Linux автоматически запускает трансляцию через Rosetta с помощью binfmt_misc. Сам контейнер даже не подозревает, что происходит за кулисами. Сравнение производительности: Подход с Rosetta: около 70–90% от нативной производительности (JIT-трансляция и оптимизация на уровне инструкций). Подход с полной виртуализацией через QEMU: примерно 10–30% от нативной производительности (полная эмуляция x86-процессора). Механизм ядра, созданный в 1997 году для запуска Java class-файлов, в 2024 году стал одним из ключевых элементов инфраструктуры для запуска x86-контейнеров на Apple Silicon. Иногда самые долговечные архитектурные решения оказываются самыми простыми и универсальными абстракциями. $ colima ssh $ cat /proc/sys/fs/binfmt_misc/rosetta enabled interpreter /mnt/lima-rosetta/rosetta flags: OCF magic 7f454c4602010100000000000000000002003e00 👉 @Cpportal
1 960
19
Явная инстанциация шаблонов в C++ — полезная возможность для борьбы с раздуванием кода из-за шаблонов. Однако ни в одном туто
Явная инстанциация шаблонов в C++ — полезная возможность для борьбы с раздуванием кода из-за шаблонов. Однако ни в одном туториале не объясняют, что инстанциации стоит разносить по нескольким файлам. Может, предполагается, что все должны сами до этого додуматься? 👉 @Cpportal
1 914
20
Очередное напоминание, что если хочешь реально понять, как работает компьютер, рано или поздно придётся написать всё это само
Очередное напоминание, что если хочешь реально понять, как работает компьютер, рано или поздно придётся написать всё это самому: • мини-шелл (fork, exec, пайпы, сигналы) • свой malloc/free • монитор процессов через /proc • рекурсивный обход файловой системы • HTTP-сервер на сокетах • многопользовательский чат через TCP и select() • пакетный менеджер с распаковкой tar.gz Парень собрал весь этот набор с нуля, без сторонних библиотек. Самое интересное, что это не учебные проекты ради галочки. Всё идёт в EduOS — offline-first ОС с ИИ для школ в Африке. Нравится такой подход. Вместо бесконечных туториалов по очередному JS-фреймворку человек просто сел и начал разбирать фундаментальные вещи. Следующий этап у него — ассемблер. https://github.com/MonarchCorps 👉 @Cpportal
2 083