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

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

前往频道在 Telegram

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

显示更多

📈 Telegram 频道 С/С++ Portal | Программирование 的分析概览

频道 С/С++ Portal | Программирование (@cpportal) 俄语 语言赛道中的 是活跃参与者。目前社区聚集了 15 353 名订阅者,在 技术与应用 类别中位列第 8 497,并在 俄罗斯 地区排名第 43 691

📊 受众指标与增长动态

невідомо 创建以来,项目保持高速增长,吸引了 15 353 名订阅者。

根据 10 六月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 -193,过去 24 小时变化为 -12,整体触达仍然可观。

  • 认证状态: 未认证
  • 互动率 (ER): 平均受众互动率为 13.03%。内容发布后 24 小时内通常能获得 7.70% 的反应,占订阅者总量。
  • 帖子覆盖: 每篇帖子平均可获得 2 001 次浏览,首日通常累积 1 183 次浏览。
  • 互动与反馈: 受众积极参与,单帖平均反应数为 16
  • 主题关注点: 内容集中在 linux, ядро, c++, процессор, указатель 等核心主题上。

📝 描述与内容策略

作者将该频道定位为表达主观观点的平台:
Присоединяйтесь к нашему каналу и погрузитесь в мир для C/C++-разработчика Сотрудничество, реклама: @devmangx Менеджер: @Spiral_Yuri РКН: https://clck.ru/3Foc4d

凭借高频更新(最新数据采集于 11 六月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。

15 353
订阅者
-1224 小时
-487
-19330
吸引订阅者
六月 '26
六月 '26
+5
在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个频道中
日期
订阅者增长
提及
频道
11 六月0
10 六月0
09 六月0
08 六月0
07 六月0
06 六月0
05 六月+1
04 六月+3
03 六月+1
02 六月0
01 六月0
频道帖子
Бинарный поиск, который вы заучили, скорее всего реализован с ошибкой. Джон Бентли опубликовал реализацию бинарного поиска в
Бинарный поиск, который вы заучили, скорее всего реализован с ошибкой. Джон Бентли опубликовал реализацию бинарного поиска в 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

2
Ищем 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
871
3
Вышел бесплатный гайд по Vim. Внутри: → история Vim → настройка и кастомизация → плагины → основные команды для повседневной работы https://freecodecamp.org/news/mastering-vim-your-guide-to-efficient-text-editing/ 👉 @Cpportal
1 163
4
Одна из самых недооценённых анонсированных на WWDC фич — Container Machines. Она позволяет запускать на Mac лёгкое и постоянное Linux-окружение, в котором домашний каталог пользователя и репозитории автоматически монтируются внутрь контейнера. По сути, разработчики получают Linux-среду, тесно интегрированную с macOS, без необходимости вручную настраивать виртуальные машины или сложную инфраструктуру контейнеров.🍎🐧 https://github.com/apple/container/blob/main/docs/container-machine.md 👉 @Cpportal
1 331
5
Забавный факт: решето Эратосфена позволяет найти все простые числа примерно до 8 миллионов, используя всего около 1 МБ памяти
Забавный факт: решето Эратосфена позволяет найти все простые числа примерно до 8 миллионов, используя всего около 1 МБ памяти. Один бит хранит информацию об одном числе, а внутренний цикл помечает составные числа с помощью битовых операций. Этот же подход используется в генераторах простых чисел и при выборе размеров хеш-таблиц. Если пост был полезен как и всегда - ставь like 🫢 👉 @Cpportal
1 460
6
Только что наткнулся на довольно безумную штуку — Linux прямо в браузере. ✓ Без установки и настройки, всё работает через Web
Только что наткнулся на довольно безумную штуку — Linux прямо в браузере. ✓ Без установки и настройки, всё работает через WebAssembly ✓ Из коробки доступны Python, C, C++, Vim, cURL и другие инструменты ✓ Есть доступ в интернет, так что можно ставить дополнительные пакеты Потыкать можно здесь: webvm.io Честно, не ожидал, что это будет работать настолько хорошо. 👉 @Cpportal
1 496
7
Этот алгоритм подсчёта установленных битов был опубликован ещё в 1957 году. Он считает все 64 бита параллельно с помощью ариф
Этот алгоритм подсчёта установленных битов был опубликован ещё в 1957 году. Он считает все 64 бита параллельно с помощью арифметики над битовыми масками, вместо того чтобы проходить по каждому биту в цикле. Когда инструкция POPCNT недоступна, ядро Linux использует ту же идею в функции __sw_hweight64. 👉 @Cpportal
1 507
8
Я читал исходники SQLite и нашёл интересную вещь. DELETE на самом деле не уменьшает размер файла базы данных. Удалённые стран
Я читал исходники SQLite и нашёл интересную вещь. DELETE на самом деле не уменьшает размер файла базы данных. Удалённые страницы попадают во внутренний freelist прямо внутри файла. Новые INSERT сначала переиспользуют эти свободные страницы, а уже потом снова увеличивают базу. Сам файл уменьшается только после VACUUM. Можно удалить всё из базы на 1 ГБ, а файл всё равно останется 1 ГБ, пока вы его не сожмёте. 👉 @Cpportal
1 589
9
Аллокатор памяти в NGINX по сути представляет собой указатель, который движется только вперёд. В нём нет free list-ов, он изб
Аллокатор памяти в NGINX по сути представляет собой указатель, который движется только вперёд. В нём нет free list-ов, он избегает фрагментации и сохраняет минимальные накладные расходы на каждое выделение памяти. Память выделяется из одного большого блока по мере поступления запросов. Когда обработка запроса завершается, весь пул памяти освобождается целиком за один раз. Именно этот аллокатор используется в nginx/src/core/ngx_palloc.c 👉 @Cpportal
1 586
10
файловый организатор, который автоматически наводит порядок в захламлённой папке Downloads. Достаточно запустить его один раз+1
файловый организатор, который автоматически наводит порядок в захламлённой папке Downloads. Достаточно запустить его один раз, и он разложит файлы по категориям: изображения в Images/, документы в Documents/, видео в Videos/ и так далее. 👉 @Cpportal
1 700
11
Знаете ли вы, что в ядре 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 535
12
Явная инстанциация шаблонов в C++ — полезная возможность для борьбы с раздуванием кода из-за шаблонов. Однако ни в одном туто
Явная инстанциация шаблонов в C++ — полезная возможность для борьбы с раздуванием кода из-за шаблонов. Однако ни в одном туториале не объясняют, что инстанциации стоит разносить по нескольким файлам. Может, предполагается, что все должны сами до этого додуматься? 👉 @Cpportal
1 600
13
Очередное напоминание, что если хочешь реально понять, как работает компьютер, рано или поздно придётся написать всё это само
Очередное напоминание, что если хочешь реально понять, как работает компьютер, рано или поздно придётся написать всё это самому: • мини-шелл (fork, exec, пайпы, сигналы) • свой malloc/free • монитор процессов через /proc • рекурсивный обход файловой системы • HTTP-сервер на сокетах • многопользовательский чат через TCP и select() • пакетный менеджер с распаковкой tar.gz Парень собрал весь этот набор с нуля, без сторонних библиотек. Самое интересное, что это не учебные проекты ради галочки. Всё идёт в EduOS — offline-first ОС с ИИ для школ в Африке. Нравится такой подход. Вместо бесконечных туториалов по очередному JS-фреймворку человек просто сел и начал разбирать фундаментальные вещи. Следующий этап у него — ассемблер. https://github.com/MonarchCorps 👉 @Cpportal
1 668
14
Каждому системному разработчику стоит это прочитать. Параллелизм перестанет казаться чёрным ящиком: от lock-free до wait-free
Каждому системному разработчику стоит это прочитать. Параллелизм перестанет казаться чёрным ящиком: от lock-free до wait-free синхронизации — эта насыщенная статья навсегда изменит твоё представление о конкурентности PDF: https://assets.bitbashing.io/papers/concurrency-primer.pdf 🥲 👉 @Cpportal
1 886
15
📎 Смотрите записи докладов с Backend Talks от Яндекс 360 На конференции обсуждали решение прикладных архитектурных задач и р
📎 Смотрите записи докладов с Backend Talks от Яндекс 360 На конференции обсуждали решение прикладных архитектурных задач и разбирали реальные инженерные кейсы. Будет полезно и интересно вне зависимости от стека. ➕ Направленный ациклический граф в PostgreSQL: как мы научили реляционную базу хранить оргструктуру на 500 000 пользователей. Малик Минубаев, разработчик в B2B-платформе, рассказал, почему стандартные паттерны хранения иерархий не работают для ориентированного ациклического графа. А также сравнил несколько вариантов Closure Table с бенчмарками на реальной нагрузке ➕ Как Яндекс Диск выдерживает сотни гигабит входящего трафика: устройство балансировки загрузок. Илья Абрамов, разработчик в Диске, разобрал, почему нам не подошёл подход «как у всех», и показал эволюцию алгоритма балансировки загрузок: от наивного Round-Robin до разработки собственного алгоритма ➕ Как формировать технологический стек и не погибнуть в священных войнах: от хаоса к процессам и техрадару. Дмитрий Сафонов, руководитель команды разработки платформы микросервисов, рассказал, как строить стек для промышленной разработки и разрешать споры о технологиях. А также поделился опытом внедрения Техрадара в Яндекс 360 ➕ Зачем и как бэкендеру расти в карьере в 2026 году. Дмитрий Соломонов, руководитель группы B2B-разработки бэкенда Диска, рассказал, как развивать команду с помощью индивидуальных планов и выбора узкой специализации для разных уровней разработчиков. И поделился, как связать получение знаний с реальными задачами ➕ Семь раз подумай, один раз пошардируй: как мы начали горизонтально масштабировать метаданные чатов Телемоста. Никита Звонарев, разработчик в Мессенджере, рассказал, что может предпринять команда, когда вертикально масштабироваться уже не получается, а сервису нужно функционировать дальше в условиях возрастающей нагрузки, и как при этом не устроить себе проблемы в будущем 🎤 Плейлист доступен на YouTube и в VK Видео
1 793
16
MIT преподаёт операционные системы, давая студентам рабочее Unix-подобное ядро и предлагая им его модифицировать. Оно называется xv6. Это переосмысление Unix Version 6 образца 1975 года, переписанное на современном C для многопроцессорных систем на архитектуре RISC-V. Всё ядро занимает всего около 6000 строк кода. Процессы, системные вызовы, виртуальная память, файловые дескрипторы, каналы (pipes) и планировщик задач здесь присутствуют в полном виде, так что их можно изучать и экспериментировать с ними. Именно такие вещи изучают, когда хотят понять, как операционная система работает на практике, а не только на уровне общих концепций. Это реализация чтения из канала (pipe) в xv6 из файла kernel/pipe.c. Когда канал пуст, процесс-читатель переводится в состояние сна и ждёт появления данных на стороне чтения. Как только процесс-писатель записывает данные в канал, он пробуждает читателя. Блокировка (lock), перевод процесса в сон (sleep) и его пробуждение (wakeup) здесь скоординированы всего примерно в 15 строках кода. // xv6 kernel kernel/pipe.c piperead int piperead(struct pipe *pi, uint64 addr, int n) { int i; struct proc *pr = myproc(); acquire(&pi->lock); while(pi->nread == pi->nwrite && pi->writeopen){ if(killed(pr)){ release(&pi->lock); return -1; } sleep(&pi->nread, &pi->lock); // wait until a writer adds data } for(i = 0; i < n; i++){ if(pi->nread == pi->nwrite) break; pi->data[pi->nread++ % PIPESIZE]; // consume one byte from the ring buffer } wakeup(&pi->nwrite); // writers may have space now release(&pi->lock); return i; } https://pdos.csail.mit.edu/6.828/2025/xv6/book-riscv-rev5.pdf 👉 @Cpportal
1 737
17
И ещё одна книга с открытым доступом для углублённого изучения встраиваемых систем. https://link.springer.com/book/10.1007/97
И ещё одна книга с открытым доступом для углублённого изучения встраиваемых систем. https://link.springer.com/book/10.1007/978-3-030-60910-8 👉 @Cpportal
1 904
18
Вот как я обрабатываю ошибки в C. На мой взгляд, это один из самых чистых паттернов обработки ошибок: вызываешь 10 функций по
Вот как я обрабатываю ошибки в C. На мой взгляд, это один из самых чистых паттернов обработки ошибок: вызываешь 10 функций подряд, а все ошибки обрабатываешь в одном месте. Именно этот подход активно используется в Linux kernel во многих драйверах и подсистемах, потому что код остаётся читаемым даже тогда, когда ветки обработки ошибок становятся довольно сложными.
1 946
19
В 2008 году Джеймс Моллой написал бесплатный туториал, который показал тысячам разработчиков, как собрать UNIX-подобную опера
В 2008 году Джеймс Моллой написал бесплатный туториал, который показал тысячам разработчиков, как собрать UNIX-подобную операционную систему с нуля на C и ассемблере. Он называется "Roll Your Own Toy UNIX Clone OS" и пошагово проводит через создание настоящего ядра. В руководстве разбираются: • загрузчик (bootloader) • GDT и IDT • обработка прерываний • страничная память (paging) • управление кучей (heap management) • файловые системы Глава про Interrupt Descriptor Table (IDT) показывает, как процессор прерывает текущее выполнение и передаёт управление вашему коду. // isr.c - called straight from the assembly interrupt entry code typedef struct registers { u32int ds; u32int edi, esi, ebp, esp; u32int ebx, edx, ecx, eax; u32int int_no, err_code; u32int eip, cs, eflags, useresp, ss; } registers_t; void isr_handler(registers_t regs) { monitor_write("received interrupt: "); monitor_write_dec(regs.int_no); monitor_put('\n'); } // assembly stub saves CPU state into this struct first // handler just gets a snapshot of the registers at interrupt time // handy for debugging when you're bringing up the kernel. В ней разбирается настоящий isr_handler из туториала. Именно эта функция вызывается каждый раз, когда срабатывает прерывание. Достаточно взглянуть на неё один раз, чтобы понять базовый механизм работы прерываний. Структура registers напрямую соответствует значениям, которые процессор сохраняет в стек при возникновении прерывания. На этом и строится вся схема: • процессор сохраняет текущее состояние • передаёт управление обработчику прерывания • обработчик анализирует сохранённые данные • после завершения управление возвращается к прерванному коду Всё просто. Процессор сохраняет контекст, вызывает ваш код и затем продолжает выполнение с того места, где остановился. • многозадачность • пользовательский режим (user mode) Каждая глава содержит рабочий код, который можно скомпилировать, запустить в QEMU и самостоятельно поэкспериментировать с внутренним устройством операционной системы. https://web.archive.org/web/20160412174753/http://www.jamesmolloy.co.uk/tutorial_html/index.html 👉 @Cpportal
1 905
20
Если тема кэш-памяти и производительности вам интересна, рекомендую главу Data Locality из книги Game Programming Patterns. h
Если тема кэш-памяти и производительности вам интересна, рекомендую главу Data Locality из книги Game Programming Patterns. https://gameprogrammingpatterns.com/data-locality.html Там очень простым языком объясняется вещь, которую многие разработчики начинают понимать только после профилирования реальных приложений. We can process data faster than ever, but we can't get that data faster. Процессоры становятся всё быстрее. Память тоже становится быстрее, но разрыв между скоростью CPU и скоростью доступа к данным продолжает оставаться огромным. Поэтому во многих случаях производительность упирается не в количество инструкций и не в сложность алгоритма. Она упирается в то, насколько эффективно ваша программа получает данные из памяти. После этой главы многие вещи вроде cache misses, data-oriented design, SoA vs AoS и производительности циклов начинают выглядеть намного понятнее. 👉 @Cpportal
1 918