ch
Feedback
Библиотека C/C++ разработчика

Библиотека C/C++ разработчика

前往频道在 Telegram

Полезные материалы по всему, что может быть полезно плюсовику/сишнику. По всем вопросам @evgenycarter

显示更多
7 287
订阅者
-824 小时
-177
-3930
吸引订阅者
七月 '26
七月 '26
+16
在0个频道中
六月 '26
+72
在0个频道中
Get PRO
五月 '26
+79
在2个频道中
Get PRO
四月 '26
+85
在0个频道中
Get PRO
三月 '26
+80
在0个频道中
Get PRO
二月 '26
+95
在0个频道中
Get PRO
一月 '26
+90
在0个频道中
Get PRO
十二月 '25
+80
在1个频道中
Get PRO
十一月 '25
+138
在39个频道中
Get PRO
十月 '25
+134
在2个频道中
Get PRO
九月 '25
+158
在36个频道中
Get PRO
八月 '25
+316
在2个频道中
Get PRO
七月 '25
+255
在27个频道中
Get PRO
六月 '25
+270
在19个频道中
Get PRO
五月 '25
+141
在45个频道中
Get PRO
四月 '25
+178
在37个频道中
Get PRO
三月 '25
+140
在38个频道中
Get PRO
二月 '25
+215
在31个频道中
Get PRO
一月 '25
+207
在33个频道中
Get PRO
十二月 '24
+240
在34个频道中
Get PRO
十一月 '24
+218
在32个频道中
Get PRO
十月 '24
+255
在29个频道中
Get PRO
九月 '24
+309
在28个频道中
Get PRO
八月 '24
+197
在18个频道中
Get PRO
七月 '24
+162
在1个频道中
Get PRO
六月 '24
+215
在24个频道中
Get PRO
五月 '24
+207
在19个频道中
Get PRO
四月 '24
+258
在0个频道中
Get PRO
三月 '24
+280
在21个频道中
Get PRO
二月 '24
+324
在19个频道中
Get PRO
一月 '24
+312
在23个频道中
Get PRO
十二月 '23
+220
在25个频道中
Get PRO
十一月 '23
+202
在18个频道中
Get PRO
十月 '23
+212
在19个频道中
Get PRO
九月 '23
+195
在0个频道中
Get PRO
八月 '23
+159
在0个频道中
Get PRO
七月 '23
+185
在0个频道中
Get PRO
六月 '23
+224
在0个频道中
Get PRO
五月 '23
+173
在0个频道中
Get PRO
四月 '23
+146
在0个频道中
Get PRO
三月 '23
+116
在0个频道中
Get PRO
二月 '23
+184
在0个频道中
Get PRO
一月 '23
+361
在0个频道中
Get PRO
十二月 '22
+193
在0个频道中
Get PRO
十一月 '22
+135
在0个频道中
Get PRO
十月 '22
+244
在0个频道中
Get PRO
九月 '22
+269
在0个频道中
Get PRO
八月 '22
+307
在0个频道中
Get PRO
七月 '22
+548
在0个频道中
Get PRO
六月 '22
+1 976
在0个频道中
日期
订阅者增长
提及
频道
14 七月+1
13 七月0
12 七月+2
11 七月0
10 七月0
09 七月+2
08 七月+2
07 七月+1
06 七月+3
05 七月+1
04 七月+1
03 七月+1
02 七月0
01 七月+2
频道帖子
Путеводитель C++ программиста по неопределенному поведению Все начинается просто и незатейливо: обычный десятиклассник увлека
Путеводитель C++ программиста по неопределенному поведению Все начинается просто и незатейливо: обычный десятиклассник увлекается программированием, знакомится с алгоритмическими задачками, решения которых должны быть быстрыми. Узнает о языке C++, учит минимальный синтаксис, основные конструкции, контейнеры, решает задачи с предопределенным и всегда корректным форматом ввода и вывода, и горя не знает... В это же время, где-то в большом мире, матерые разработчики каждый день ругают то одни языки программирования, то другие. По самым разным причинам: не удобно, нет какой-то возможности, много лишних букв писать, ошибки в стандартной библиотеке... Но есть язык, который ругают за все и особенно за такую непонятную и таинственную вещь как неопределенное поведение (undefined behavior, UB). Спустя лет пять или шесть наш простой десятиклассник, горя не видавший в море оторванных от реальности программ, внезапно узнает, что тем самым горячо нелюбимым языком всегда был, остается и будет его C++. А потом еще в течение нескольких лет он наткнется на самые кошмарные и невероятные ужасы, поджидающие программистов на C++ почти на каждом шагу. Так и появится эта серия заметок, собирающая наиболее отвратительные примеры, на которые очень легко наткнуться при решении повседневных задач. Важно: этот сборник не является учебным пособием по языку и рассчитан на тех, кто уже знаком с программированием, с C++, и понимает основные его конструкции. https://github.com/Nekrolm/ubbook 📲 Мы в MAX #cpp #programming 👉 @cpp_lib

2
40 лет программирования на C++ и встраиваемых языков — Марк Гуидарелли, CppCast 409 / C++Weekly 541 Обязательно ознакомьтесь
40 лет программирования на C++ и встраиваемых языков — Марк Гуидарелли, CppCast 409 / C++Weekly 541 Обязательно ознакомьтесь с проектом Марка: https://github.com/mcguidarelli/trix В этом месяце к Джейсону и Матье присоединяется Марк Гуидарелли, чтобы обсудить историю C++ и эзотерические языки программирования. Мы также поговорим о личном опыте разработки Марка и о том, что означало «слияние» до появления систем контроля версий! источник #cpp #programming 👉 @cpp_lib
601
3
Константин Осипов — Стратегии слияния (compaction strategies) в LSM-деревьях Стратегия слияний в LSM-деревьях — проблема, для
Константин Осипов — Стратегии слияния (compaction strategies) в LSM-деревьях Стратегия слияний в LSM-деревьях — проблема, для которой сейчас не существует доказанного оптимального решения. RocksDB, Cassandra, CockroachDB реализуют целый ряд эвристик и предлагают пользователю многочисленные настройки по оптимизации под конкретные сценарии нагрузки. В докладе я попробую разобрать эту проблему в свете последних изменений в аналогичном алгоритме слияний в движке Vinyl для Tarantool и Picodata, который я реализовал. Разберу различные стратегии, настройки, и техники оптимизации. Коснусь последних статей по теме. В результате, надеюсь, у слушателей появится более целостная картина проблемной области и компромиссов, на которые идут разработчики движков хранения данных. источник 📲 Мы в MAX #cpp #programming 👉 @cpp_lib
938
4
👨‍💻Большинство разработчиков используют готовые средства для создания интерфейсов и редко задумываются, что происходит под
👨‍💻Большинство разработчиков используют готовые средства для создания интерфейсов и редко задумываются, что происходит под капотом. Но именно понимание внутренних механизмов помогает создавать более гибкие, быстрые и управляемые приложения. 📆14 июля в 20:00 МСК приглашаем на открытый урок, где разберём, как создавать собственные элементы управления без сложных надстроек и лишних зависимостей. Вы узнаете, как обрабатывать действия пользователя, выводить графику на экран, создавать кнопки, текстовые поля и другие элементы интерфейса, а также организовывать их взаимодействие внутри приложения. Все подходы будут рассмотрены на практических примерах. 🏁Открытый урок проходит в преддверии старта курса «C++-разработчик. Продвинутый уровень». Зарегистрируйтесь, чтобы глубже понять устройство интерфейсов, задать вопросы эксперту и оценить возможности дальнейшего развития в C++: https://vk.cc/cZqKci Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
966
5
Курс по C++ и SFML Простые программы на C++ В статье мы напишем пару простейших программ на C++ и посмотрим, как происходит их компиляция. https://ps-group.github.io/ps1/lesson_cpp_1 Знакомство с SFML. Компьютерная графика. SFML (Simple Fast Multimedia Library) — это C++ библиотека для мультимедиа. В статье мы воспользуемся SFML для рисования фигур в окне. https://ps-group.github.io/ps1/lesson_sfml_1 Основной цикл программы. Анимация. В статье мы освоим паттерн Game Loop, а также научимся обрабатывать события мыши и клавиатуры. https://ps-group.github.io/ps1/lesson_sfml_2 Обработка событий. Интерактив. В статье вы освоите обработку событий мыши и клавиатуры в мультимедийных программах и научитесь писать функции на языке С++ https://ps-group.github.io/ps1/lesson_sfml_3 Соглашения о кодировании на C++ Соглашения о кодировании для курса по C++/SFML https://ps-group.github.io/ps1/cxx_coding_style Комплексные задачи. Котик следует за мышкой В этой практике вы начнёте по шагам решать комплексные задачи, двигаясь от математической модели и псевдокода к готовой программе https://ps-group.github.io/ps1/sfml_workshop_1 Массовые столкновения На этом занятии вы научитесь программировать игры уровня Бильярда или Arkanoid https://ps-group.github.io/ps1/sfml_workshop_2 Ещё одна практика на SFML На этом занятии вы освоите более гибкие приёмы работы с SFML: виртуальную камеру, рисование произвольных фигур, проверку столкновения https://ps-group.github.io/ps1/sfml_workshop_3 Основной проект курса: 2D игра Цель проекта - самостоятельно написать комплексную программу, клон небольшой игры https://ps-group.github.io/ps1/project Задание | Спецификация проекта в виде MindMap Чтобы составить видение проекта-игры, нужно визуализировать. Сделать это поможет MindMap. https://docs.google.com/document/d/1Ki6DlbhDrZHskC6LED88FHeX8m-Se3-MrTpjwKYlcDk/edit?usp=sharing Задание | План проекта в виде RoadMap Чтобы справиться с известным проектом в известные сроки, нужно составить план действий. Сделать это поможет RoadMap. https://docs.google.com/document/d/1zdW81SLmgVf3ZXyMwXkOXxIwOzBzkTTvi4TTMLdUw_E/edit Пишем клон игры PacMan слой за слоем В этой коллекции примеров слой за слоем на C++/SFML воссоздаётся урезанный клон игры PacMan https://github.com/ps-group/sfml-packman Схема оценки проекта-игры В таблице записаны критерии оценки и примеры оценивания различных игр https://docs.google.com/spreadsheets/d/1n7OzeQEDujPDboW3dFn4M4iXhcPvlCR7FQbPRSE4jwM/edit?usp=sharing 📲 Мы в MAX #cpp #programming 👉 @cpp_lib
716
6
std::expected в C++23: гайд по миграции с исключений на функциональный error handling Исключения удобны, пока ошибки не стано
std::expected в C++23: гайд по миграции с исключений на функциональный error handling Исключения удобны, пока ошибки не становятся обычной частью логики. В C++23 для таких случаев есть std::expected: он явно показывает в сигнатуре, что функция вернёт либо результат, либо ошибку. Разберём, как перейти к этому подходу без переписывания проекта с нуля. https://habr.com/ru/companies/otus/articles/1054592/ 📲 Мы в MAX #cpp #programming 👉 @cpp_lib
683
7
🇷🇺 Разбираешься в радиочипах, оптике и связи? Забери до 1 000 000 рублей за свои инженерные навыки на турнире «Дронкон» 🇷�
🇷🇺 Разбираешься в радиочипах, оптике и связи? Забери до 1 000 000 рублей за свои инженерные навыки на турнире «Дронкон» 🇷🇺 «Сталинские Соколы» открывают регистрацию на 4-й Всероссийский турнир «Дронкон», который пройдет с 22 по 26 августа. Турнир пройдет по направлению: - Инженерное дело: навыки программирования, сборка электронного оборудования, беспроводная связь, оптические системы + стратегия «Битва Дронов»; Призовой фонд для победителей: 🥇место – 1 000 000 рублей 🥈место – 700 000 рублей 🥉место – 500 000 рублей Награда за 4-8 места - 100 000 рублей Пройди заочный онлайн-этап и получи путевку на очный этап турнира в Республику Татарстан! Перелет, питание, проживание - за счет организаторов. 🇷🇺 Подать заявку и узнать подробности 🇷🇺
812
8
👨‍💻 Два в одном: валидация и вызов в Control Flow Guard (CFG) Рэймонд Чен (Raymond Chen) в своем блоге The Old New Thing поделился интересными деталями реализации механизма Control Flow Guard в Windows. Обычно CFG работает в два этапа: сначала мы вызываем функцию вроде LdrpValidateUserCallTarget для проверки указателя, и если всё в порядке, возвращаемся и делаем вызов. Но существует и комбинированная версия, которая не просто проверяет указатель, но и сразу же делает по нему переход (jump). 🤔 Зачем это нужно и в чем подвох? Раз уж после валидации почти всегда следует вызов, объединение операций кажется логичным шагом для оптимизации. Но здесь кроется проблема: для такого трюка приходится менять соглашение о вызовах (calling convention). Регистры, которые использует функция валидации, ни в коем случае не должны пересекаться с регистрами, в которых лежат аргументы для итоговой функции. 🔧 Как это реализовано на уровне ассемблера: 🔹 x86-64: Обычная функция-валидатор принимает адрес в rcx и использует rax и rdx как временные регистры. Комбинированная версия принимает адрес в rax, использует r10 и r11 для своих расчетов, а в конце просто делает jmp rax. Все исходные параметры целевой функции остаются нетронутыми! 🔹 AArch64: Логика абсолютно та же. Обычная версия принимает адрес в x15, а комбинированная - в x9, завершаясь инструкцией br x9 вместо классического ret. Кстати, есть и приятный микро-бонус при обработке ошибок: если указатель оказывается «битым», комбинированной функции не нужно тратить инструкции на перекладывание адреса в нужный регистр перед прыжком в блок ошибки - плохой адрес уже находится там, где нужно (rax или x9). 🔗 Оригинальная статья и листинги дизассемблера: https://devblogs.microsoft.com/oldnewthing/20260708-00/?p=112510 📲 Мы в MAX #cpp #programming 👉 @cpp_lib
781
9
FTXUI Простая кроссплатформенная библиотека C++ для пользовательских интерфейсов на базе терминала! • Функциональный стиль •
FTXUI Простая кроссплатформенная библиотека C++ для пользовательских интерфейсов на базе терминала! • Функциональный стиль • Простой и элегантный синтаксис • Создаваемые консольные UI поддерживают навигацию с помощью клавиатуры и мыши • Поддержка UTF8 • Поддержка анимации • Поддержка рисования • Нет зависимостей • Кроссплатформенность: Linux/MacOS, WebAssembly, Windows https://github.com/ArthurSonzogni/FTXUI 📲 Мы в MAX #cpp #programming 👉 @cpp_lib
877
10
Как в 19 лет я начал путь разработчика встраиваемого ПО Привет! Меня зовут Данила, мне 21 год, и за последние 2,5 года я успе
Как в 19 лет я начал путь разработчика встраиваемого ПО Привет! Меня зовут Данила, мне 21 год, и за последние 2,5 года я успел поработать в роли разработчика программного обеспечения для встраиваемых систем — в основном на базе STM32. В этой статье я хочу поделиться тем, как я вообще пришёл в эту сферу, с чего начинал, какие грабли собрал и какие выводы сделал по пути. https://habr.com/ru/articles/922322/ 📲 Мы в MAX #cpp #programming 👉 @cpp_lib
1 025
11
Проблема рекламации памяти и два новых решения в C++26. Лекция в университете iSpring. Лекция прочитанная весной 2026-го года в городе Йошкар-Ола. Мы начинаем от самых основ и прицельно разбираем разные аспекты проблемы рекламации памяти в многопоточных программах. Timeline: 00:00 Начало. Пример, который мы будем использовать всю лекцию. 03:56 Потоки и гонка за данные. 09:35 Mutex или простота хуже воровства. 12:12 RAII обёртки над mutex. 19:23 Мьютекс это очередь. Концепция read/write lock. 25:51 Сеттинг который мы будем использовать в лекции и первые замеры. 29:14 Убираем в целом блокировки. CAS-циклы. 34:45 Happens before, барьеры и модели памяти. 42:50 Проблема рекламации. 47:30 Атомарный разделяемый указатель и новые замеры. 52:05 C++26: решение проблемы рекламации в стиле RCU и ещё замеры. 01:01:35 C++26: решение проблемы рекламации через Hazard Pointers и ещё замеры. 01:07:55 Список литературы и вопросы. https://www.youtube.com/watch?v=13b5hHwRvVk 📲 Мы в MAX #cpp #programming 👉 @cpp_lib
1 291
12
💀 C++ снова признали «худшим языком программирования всех времён» — но есть нюанс На Хабре вышел большой разбор боли под наз
💀 C++ снова признали «худшим языком программирования всех времён» — но есть нюанс На Хабре вышел большой разбор боли под названием «Худший язык программирования всех времён /s». И да, речь снова про C++. Автор не просто шутит над плюсами, а проходится по классике жанра: ▪️ десятки способов инициализировать переменную; ▪️ std::move, который не совсем move; ▪️ касты на любой вкус: static_cast, dynamic_cast, reinterpret_cast, const_cast; ▪️ простые задачи, которые превращаются в мини-лекцию по стандарту; ▪️ наследие C, обратная совместимость и миллиарды строк старого кода. Главная мысль: C++ ужасен не потому, что его плохо проектировали, а потому что он десятилетиями пытался быть всем сразу — быстрым, низкоуровневым, совместимым, мощным и при этом современным. В итоге язык, на котором написана половина инфраструктуры вокруг нас, сам стал инфраструктурой: страшной, сложной, но почти незаменимой. Любишь C++ — страдаешь. Не любишь C++ — всё равно пользуешься тем, что на нём написано. https://habr.com/ru/articles/1047890/ 📲 Мы в MAX #cpp #programming 👉 @cpp_lib
1 242
13
Отрежьте мне миллиард символов: как C++20, string_view и шаблонный ад могут скрывать баг годами Вы наверно знаете что высший пилотаж он же Высокий Слог С++ это шаблоны и метапрограммирование. Вы обязательно должны нагородить кучу несовместимых типов и самозабвенно искать для них универсальный алгоритм. Вот очередная статья о том что метапрограммирование и код с шаблонами не такие уж и плохие. Но я хочу рассказать вам историю одного детективного расследования в недрах крупного OpenBMC-проекта (экосистема серверных платформ swtSyst). Это история о том, как безудержное желание перенести всё в compile-time (constexpr), помноженное на ультрасовременный синтаксис C++20, породило идеальный «молчаливый баг» (silent failure). Он мог бы годами жить в продакшене, успешно компилировался, не выдавал ни одного ворнинга, но полностью ломал логику работы приложения. Если вы любите метапрограммирование, шаблоны, операторы свёртки (fold expressions) и тонкости работы с памятью в C++ — устраивайтесь поудобнее. Мы отправляемся в шаблонный ад. https://habr.com/ru/articles/1052830/ 📲 Мы в MAX #cpp #programming 👉 @cpp_lib
1 276
14
🔥 Оптимизация целочисленного деления: Clang vs GCC vs MSVC Автор блога NukeTheBees решил проверить, как разные компиляторы о
🔥 Оптимизация целочисленного деления: Clang vs GCC vs MSVC Автор блога NukeTheBees решил проверить, как разные компиляторы оптимизируют преобразование 1D-индекса в 3D-координаты сетки. Эта частая задача требует вычисления как частного, так и остатка от деления. Архитектура x86 позволяет сделать это максимально эффективно - всего двумя инструкциями idiv (она одновременно вычисляет и частное, и остаток, помещая их в разные регистры). Автор протестировал два подхода на C++: 1️⃣ Стандартные операторы / и % 2️⃣ Использование функции std::div 📊 Что показали компиляторы? 🔹 Вариант с операторами (/ и %): 🏆 Clang сгенерировал идеальный код: всего 2 инструкции idiv и никаких лишних обращений к памяти. 🥈 GCC тоже справился за 2 idiv, но зачем-то скинул промежуточные результаты в стек перед возвратом. ❌ MSVC оплошал и выдал избыточную третью инструкцию деления при вычислении y. 🔹 Вариант с std::div (в надежде помочь компилятору): ✅ MSVC резко исправился, заинлайнил вызовы и выдал те самые оптимальные 2 idiv. ❌ Зато Clang и GCC внезапно отказались инлайнить std::div! В итоге они сгенерировали настоящие вызовы функций (call div), что из-за накладных расходов делает этот код медленнее первого варианта. 💡Ни один из подходов на C++ не смог заставить все три компилятора выдать идеальный машинный код. Поэтому для критически важных участков производительности не стоит слепо доверять компилятору - всегда заглядывайте в сгенерированный ассемблер (например, через Compiler Explorer). 🔗 Подробный разбор ассемблерного кода читайте в статье: https://nukethebees.com/int-division-modulo-optimisation-differences-clang-gcc-msvc/ 📲 Мы в MAX #cpp #programming 👉 @cpp_lib
1 205
15
🤷Программа может работать месяцами без проблем, а затем внезапно начать терять память, завершаться с ошибками или вести себя
🤷Программа может работать месяцами без проблем, а затем внезапно начать терять память, завершаться с ошибками или вести себя непредсказуемо. Поиск таких проблем часто занимает гораздо больше времени, чем их предотвращение. 📈30 июня в 20:00 МСК приглашаем вас на открытый урок, где разберём один из ключевых принципов современного C++, который помогает создавать более устойчивые и безопасные приложения. На занятии рассмотрим основы RAII, его связь с обработкой исключений, применение в стандартной библиотеке и практические приёмы работы с ресурсами. Также разберём распространённые ошибки, которые приводят к утечкам памяти и усложняют сопровождение проектов. ⚡️Открытый урок проходит в преддверии старта курса «C++-разработчик. Продвинутый уровень». Зарегистрируйтесь, чтобы глубже понять современные подходы к разработке на C++, задать вопросы эксперту и получить практические рекомендации для своих проектов: https://vk.cc/cZ9Fyx Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
1 061
16
MemorySanitizer (MSAN), когда он нужен и как внедрять По разным оценкам, до 10% уязвимостей в коде на C и C++ являются следствием использования неинициализированной памяти (источники: 1, 2). Задача MemorySanitizer (далее, MSAN) - выявлять использование неинициализированной памяти в коде, то есть мусора, например в блоке кода типа if (uninit_var) {...}. Кроме уязвимостей, неинициализированная память даёт о себе знать при портировании приложения на другую платформу, смене компилятора (или поднятии версии используемого), изменении уровня оптимизации или изменении кода таким образом, что то, что раньше "случайно" инициализировалось нулями, стало инициализироваться мусором. MSAN не является статическим анализатором, то есть для его работы требуется выполнение кода (нужны тесты/fuzzing/реальная нагрузка). Прежде чем переходить к самому MSAN, сначала разберемся почему недостаточно (или достаточно?) статического анализа, ведь даже компиляторы умеют предупреждать об использовании неинициализированных данных. https://habr.com/ru/articles/937934/ 📲 Мы в MAX #cpp #programming 👉 @cpp_lib
1 020
17
🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https://max.ru/bash_srv Bash Советы https://max.ru/sysadminof Книги для админов, полезные материалы https://max.ru/i_odmin_book Библиотека Системного Администратора https://max.ru/i_devops DevOps: Пишем о Docker, Kubernetes и др. https://max.ru/tipsysdmin Типичный Сисадмин Excel лайфхак 📌 https://t.me/Excel_lifehack Excel лайфхак Английский с нуля 🇬🇧 https://max.ru/UchuEnglish 1C разработка 📌 https://max.ru/odin1c_rus Cтатьи, курсы, советы, шаблоны кода 1С Программирование C++📌 https://max.ru/cpp_lib Библиотека C/C++ разработчика Программирование Go📌 https://max.ru/golang_lib Библиотека Go (Golang) разработчика Программирование React📌 https://max.ru/react_lib React Программирование Python 📌 https://max.ru/python_of Python академия. https://max.ru/BookPython Библиотека Python разработчика Java разработка 📌 https://max.ru/bookjava Библиотека Java разработчика GitHub Сообщество 📌 https://max.ru/githublib Интересное из GitHub Базы данных (Data Base) 📌 https://max.ru/database_info Все про базы данных Фронтенд разработка 📌 https://max.ru/frontend_1 Подборки для frontend разработчиков Библиотеки 📌 https://max.ru/programmist_of Книги по программированию https://max.ru/proglb Библиотека программиста https://max.ru/bfbook Книги для программистов Программирование 📌 https://max.ru/bookflow Лекции, видеоуроки, доклады с IT конференций https://max.ru/itmozg Программисты, дизайнеры, новости из мира IT https://max.ru/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻 Шутки программистов 📌 https://max.ru/itumor Шутки программистов Защита, взлом, безопасность 📌 https://max.ru/thehaking Канал о кибербезопасности https://max.ru/xakkep_1 Хакер Free Книги, статьи для дизайнеров 📌 https://max.ru/odesigners Статьи, книги для дизайнеров Математика 📌 https://max.ru/Pomatematike Канал по математике https://max.ru/phismat_1 Обучающие видео, книги по Физике и Математике Вакансии 📌 https://max.ru/progjob Вакансии в IT Мир технологий 📌 https://max.ru/mir_teh Канал для любознательных Бонус 📌 https://max.ru/piterspb_78 Свежие новости Санкт-Петербурга https://max.ru/mockva_life Свежие новости Москвы https://max.ru/piterspb Питер Новости: Санкт-Петербург / СПБ / ДТП
987
18
🚀 Синхронизация потоков в C++20: Встречайте std::latch (аналог CountDownLatch из Java!) Многопоточное программирование - это
🚀 Синхронизация потоков в C++20: Встречайте std::latch (аналог CountDownLatch из Java!) Многопоточное программирование - это всегда вызов, особенно когда нужно заставить один поток дождаться завершения пула задач в других потоках. Если вы писали на Java, то наверняка знаете про невероятно удобный класс CountDownLatch. Хорошие новости: с приходом C++20 разработчикам больше не нужно изобретать велосипед с мьютексами (std::mutex) и условными переменными (std::condition_variable) для этой задачи. Теперь в стандартной библиотеке плюсов есть свой элегантный примитив синхронизации - std::latch. 🚧 В свежей статье на Hashnode автор подробно разбирает этот механизм. Вот что полезного можно узнать из материала: • 🔹 Как это работает: суть std::latch как одноразового счетчика обратного отсчета для потоков. • 🔹 Параллели с Java: прямое сравнение логики работы с пакетом Java Concurrency. • 🔹 Практика: понятные примеры кода (как инициализировать защелку, уменьшать счетчик через count_down() и заставлять главный поток ждать через wait()). Если вы переходите на современный стандарт C++ или просто хотите писать более чистый, читаемый и безопасный многопоточный код - этот материал определенно стоит вашего времени. 📖 Читать статью полностью: https://som-itsolutions.hashnode.dev/latches-in-c-20-concurrency-just-like-the-countdownlatch-of-java-concurrency-package 📲 Мы в MAX #cpp #programming 👉 @cpp_lib
1 170
19
🗑️ Zeroize: Почему просто удалить данные недостаточно? В разработке мы постоянно работаем с чувствительными данными: паролями, API-токенами, приватными криптографическими ключами. Но задумывались ли вы, что происходит с ними после того, как переменная выходит из области видимости? Оказывается, просто позволить сборщику мусора или ОС освободить память - небезопасно. Данные могут остаться лежать в оперативной памяти (или даже попасть в swap-файл на диске) в открытом виде, став легкой добычей для злоумышленников при дампе памяти. В этой статье подробно разбирается концепция Zeroize - гарантированного и безопасного затирания данных. О чем внутри: • Почему стандартные методы очистки памяти не подходят для секретов. • Как хитрые оптимизаторы компиляторов могут сыграть с вами злую шутку (например, вырезав ваш код очистки как «ненужный»). • Лучшие практики: как правильно перезаписывать память нулями, чтобы секреты исчезали навсегда. Всем, кто пишет код, работающий с авторизацией или криптографией — категорически рекомендуется к прочтению. 🔗 Читать статью полностью: https://ddanilov.me/zeroize 📲 Мы в MAX #cpp #programming 👉 @cpp_lib
1 278
20
🧩 Почему «обычный STL» в C++ иногда заменяют своим велосипедом На Хабре вышел большой разбор альтернативных STL и контейнеро
🧩 Почему «обычный STL» в C++ иногда заменяют своим велосипедом На Хабре вышел большой разбор альтернативных STL и контейнеров, которые используют в геймдеве, highload-сервисах, компиляторах и приложениях, где важны память, кеши и предсказуемость. В материале разбирают: 🔹 EASTL — библиотеку от Electronic Arts для игровых проектов, консолей и кода с жёстким бюджетом памяти. Главный плюс — контроль аллокаций и предсказуемое поведение на разных платформах. 🔹 LLVM SmallVector / DenseMap — контейнеры для случаев, где много мелких короткоживущих структур и важно не прыгать по куче без необходимости. 🔹 Folly — набор библиотек от Meta для highload-сервисов: быстрые хеш-таблицы, строки, small_vector и оптимизации под большие нагрузки. 🔹 Boost flat_map / std::flat_map — словарь на отсортированном векторе. Хорош, когда данные часто читаются и редко меняются. 🔹 Zmeya / FlatBuffers / Cap’n Proto — подход для read-only данных, которые можно загрузить почти без парсинга и сразу читать из памяти. Прежде чем тащить в проект EASTL, Folly или очередной «супербыстрый» контейнер, сначала стоит измерить реальные bottleneck’и. Потому что единственная секта, которой можно доверять в C++, — это секта профилирования своих данных. https://habr.com/ru/articles/1042198/ 📲 Мы в MAX #cpp #programming 👉 @cpp_lib
1 320