Input parser - библиотека для парсинга командной строки
https://github.com/gianluisdiana/InputParser
#cpp #programming
👉 @cpp_lib
https://github.com/gianluisdiana/InputParser
#cpp #programming
👉 @cpp_lib
GitHub
GitHub - gianluisdiana/InputParser: C++ command line parser
C++ command line parser. Contribute to gianluisdiana/InputParser development by creating an account on GitHub.
👍6
Media is too big
VIEW IN TELEGRAM
Идея по улучшению многопоточного кода
Александр Корнилов
Александр описывает подход к написанию многопоточного кода, который помогает избежать типовых ошибок, связанных с использованием базовых примитивов синхронизации. Демонстрация идеи проходит на живых примерах кода на современном C++.
источник
#cpp #programming
👉 @cpp_lib
Александр Корнилов
Александр описывает подход к написанию многопоточного кода, который помогает избежать типовых ошибок, связанных с использованием базовых примитивов синхронизации. Демонстрация идеи проходит на живых примерах кода на современном C++.
источник
#cpp #programming
👉 @cpp_lib
👍5🤣1
50 веб сайтов по изучению C/C++
В этой статье я расскажу о 50 сайтах, которые, по моему мнению, должен знать и добавить в закладки каждый разработчик на Си или Си++. В этом списке представлены прямые ссылки на исходные коды программ вместе с их описанием.
https://www.mycplus.com/featured-articles/50-c-cpp-source-code-websites/
#cpp #programming
👉 @cpp_lib
В этой статье я расскажу о 50 сайтах, которые, по моему мнению, должен знать и добавить в закладки каждый разработчик на Си или Си++. В этом списке представлены прямые ссылки на исходные коды программ вместе с их описанием.
https://www.mycplus.com/featured-articles/50-c-cpp-source-code-websites/
#cpp #programming
👉 @cpp_lib
👍7❤2🔥2
Я сделал C++ версию функции Python print()
Мне нравится функция Python
В последнее время я занимаюсь соревновательным программированием, но эта функция помогает мне отлаживать и там.
https://dev.to/philip82148/i-made-a-c-version-of-consolelog-o88
#cpp #programming
👉 @cpp_lib
Мне нравится функция Python
print(obj...)
, поскольку она может выводить переменные любого типа: числа, строки, массивы и объекты, а также полезна для отладки.В последнее время я занимаюсь соревновательным программированием, но эта функция помогает мне отлаживать и там.
https://dev.to/philip82148/i-made-a-c-version-of-consolelog-o88
#cpp #programming
👉 @cpp_lib
👍9😁2
Media is too big
VIEW IN TELEGRAM
Разбор кода игры Super Mario на языке C++
00:00 Начало
00:17 Шаг 1: Создание игрока
01:48 Шаг 2: Создание платформера
07:03 Шаг 3: Создание флажка
08:26 Шаг 4: Поставить изображение frend
08:57 Шаг 5: Добавления надписей для уровня
11:25 Шаг 6: Добавления врагов
16:45 Шаг 7: Добавление урона и возрождение игрока
19:13 Шаг 8: Добавление меню
23:31 Шаг 9: Добавление музыки и звуки
26:43 Игра готова
Ссылки на картинки и звуки https://disk.yandex.ru/d/V03815gsktfqUw
Ссылка на код https://gist.github.com/Andrey-byte/0a8834600a241eda303e293498c664fb
#cpp #programming
👉 @cpp_lib
00:00 Начало
00:17 Шаг 1: Создание игрока
01:48 Шаг 2: Создание платформера
07:03 Шаг 3: Создание флажка
08:26 Шаг 4: Поставить изображение frend
08:57 Шаг 5: Добавления надписей для уровня
11:25 Шаг 6: Добавления врагов
16:45 Шаг 7: Добавление урона и возрождение игрока
19:13 Шаг 8: Добавление меню
23:31 Шаг 9: Добавление музыки и звуки
26:43 Игра готова
Ссылки на картинки и звуки https://disk.yandex.ru/d/V03815gsktfqUw
Ссылка на код https://gist.github.com/Andrey-byte/0a8834600a241eda303e293498c664fb
#cpp #programming
👉 @cpp_lib
🔥10👍2❤1😁1
Сборка мусора: как это делается в системном программировании
Давайте поговорим об одной из наиболее критичных по производительности программ, которой вы пользуетесь ежедневно: о вашей операционной системе. Поскольку при каждом разгоне железа вы получаете дополнительную вычислительную мощность, операционная система никогда за этим не поспевает. Поэтому постоянно доводится читать о том, как разработчики ядра и драйверов выжимают последнее из своего кода.
Кроме того, операционные системы должны быть рассчитаны на массовую конкурентность. Дело не только в том, что наша операционная система отвечает за планирование всех процессов и потоков пользовательского пространства, но и в том, что в ядре хватает собственных потоков, а также обработчиков прерываний, нужных для взаимодействия с железом. Требуется минимизировать время, которое тратится на ожидание, так как, опять же, при любой задержке вы воруете время ваших пользователей.
https://bitbashing.io/gc-for-systems-programmers.html
#cpp #programming
👉 @cpp_lib
Давайте поговорим об одной из наиболее критичных по производительности программ, которой вы пользуетесь ежедневно: о вашей операционной системе. Поскольку при каждом разгоне железа вы получаете дополнительную вычислительную мощность, операционная система никогда за этим не поспевает. Поэтому постоянно доводится читать о том, как разработчики ядра и драйверов выжимают последнее из своего кода.
Кроме того, операционные системы должны быть рассчитаны на массовую конкурентность. Дело не только в том, что наша операционная система отвечает за планирование всех процессов и потоков пользовательского пространства, но и в том, что в ядре хватает собственных потоков, а также обработчиков прерываний, нужных для взаимодействия с железом. Требуется минимизировать время, которое тратится на ожидание, так как, опять же, при любой задержке вы воруете время ваших пользователей.
https://bitbashing.io/gc-for-systems-programmers.html
#cpp #programming
👉 @cpp_lib
👍2🔥2
Как сравнить целые числа со знаком и без знака в C++20?
Сравнение двух чисел должно быть простым, верно? Может быть, и должно, но в языке C++ это не так, даже если ограничить сравнение областью целых чисел.
Если попытаться сравнить знаковое и беззнаковое целое число, то возможны несколько вариантов развития событий. Возможно, это действительно сработает, и вы никогда не узнаете, чем рисковали. Возможно, все будет не так, как вы ожидали, и вы потратите немало времени, ломая голову над тем, что же произошло. Возможно также, что он не сработает в соответствии с вашими ожиданиями, но это останется незамеченным.
https://www.sandordargo.com/blog/2023/10/11/cpp20-intcmp-utilities
#cpp #programming
👉 @cpp_lib
Сравнение двух чисел должно быть простым, верно? Может быть, и должно, но в языке C++ это не так, даже если ограничить сравнение областью целых чисел.
Если попытаться сравнить знаковое и беззнаковое целое число, то возможны несколько вариантов развития событий. Возможно, это действительно сработает, и вы никогда не узнаете, чем рисковали. Возможно, все будет не так, как вы ожидали, и вы потратите немало времени, ломая голову над тем, что же произошло. Возможно также, что он не сработает в соответствии с вашими ожиданиями, но это останется незамеченным.
https://www.sandordargo.com/blog/2023/10/11/cpp20-intcmp-utilities
#cpp #programming
👉 @cpp_lib
👍5
C++20 в bare-metal программировании, работа с регистрами микроконтроллеров Cortex-M
Сегодня я хотел бы обсудить тему, с которой так или иначе сталкивался почти каждый программист встраиваемых устройств без использования настоящих операционных систем, а именно прямое управление периферийными узлами микроконтроллера. A конкретнее, я хотел бы обсудить повышение безопасности при управлении периферийными модулями без потери эффективности, гибкости и читаемости.
Кто-то может подумать, что данная тема уже рассказана вдоль и поперек в многочисленных мануалах по проектам для STM32 (например, хабр). Те же, кто уже понял о чем будет идти речь, может подумать что это полное повторение уже существующих подобных идей (например эта и другие статьи автора зародили во мне интерес к этой теме несколько лет назад, а вот в языке программирования Rust большинство ящиков/крейтов Cortex-M/PAC уже используют проверками безопасности при манипулировании регистрами). Однако, не нужно спешить с выводами. Я полагаю, что могу дать интересную и полезную информацию для обоих вышеперечисленных категорий читателей.
Перед началом, тему того 'Зачем вообще лезть на уровень регистров, если каждый производитель дает HAL/BSP?' я оставлю вне рамок данной статьи. Я предполагаю, что если читатель открыл статью, то ему уже интересна данная тема, и мне не столь важно почему.
https://habr.com/ru/articles/819499/
#cpp #programming
👉 @cpp_lib
Сегодня я хотел бы обсудить тему, с которой так или иначе сталкивался почти каждый программист встраиваемых устройств без использования настоящих операционных систем, а именно прямое управление периферийными узлами микроконтроллера. A конкретнее, я хотел бы обсудить повышение безопасности при управлении периферийными модулями без потери эффективности, гибкости и читаемости.
Кто-то может подумать, что данная тема уже рассказана вдоль и поперек в многочисленных мануалах по проектам для STM32 (например, хабр). Те же, кто уже понял о чем будет идти речь, может подумать что это полное повторение уже существующих подобных идей (например эта и другие статьи автора зародили во мне интерес к этой теме несколько лет назад, а вот в языке программирования Rust большинство ящиков/крейтов Cortex-M/PAC уже используют проверками безопасности при манипулировании регистрами). Однако, не нужно спешить с выводами. Я полагаю, что могу дать интересную и полезную информацию для обоих вышеперечисленных категорий читателей.
Перед началом, тему того 'Зачем вообще лезть на уровень регистров, если каждый производитель дает HAL/BSP?' я оставлю вне рамок данной статьи. Я предполагаю, что если читатель открыл статью, то ему уже интересна данная тема, и мне не столь важно почему.
https://habr.com/ru/articles/819499/
#cpp #programming
👉 @cpp_lib
🔥4👍3
Media is too big
VIEW IN TELEGRAM
Эффективное использование памяти во встраиваемых системах
Алексей Алешкин (ИнфоТеКС)
Отличительная особенность разработки ПО для встраиваемых систем — ограниченность доступной памяти. Применение С++ значительно повышает скорость разработки, однако ухудшает прозрачность управления памятью и нефункциональные характеристики кода. Эти побочные эффекты зачастую приводят к понижению потребительских качеств продукта, ухудшению стабильности его работы или даже к невозможности реализации проекта на заданной платформе.
В процессе разработки проекта SIES Core команда Алексея столкнулась со всеми перечисленными побочными эффектами, что потребовало глубоких долгих исследований, результатами которых он поделился с аудиторией.
Доклад будет интересен разработчикам backend и embedded, создающим ПО с использованием С++ на недорогих платформах с ограниченным объемом памяти и отсутствием MMU.
Технологии: аллокаторы, MMU, Semihosting FS, GCC, GDB, OpenOCD.
источник
#cpp #programming
👉 @cpp_lib
Алексей Алешкин (ИнфоТеКС)
Отличительная особенность разработки ПО для встраиваемых систем — ограниченность доступной памяти. Применение С++ значительно повышает скорость разработки, однако ухудшает прозрачность управления памятью и нефункциональные характеристики кода. Эти побочные эффекты зачастую приводят к понижению потребительских качеств продукта, ухудшению стабильности его работы или даже к невозможности реализации проекта на заданной платформе.
В процессе разработки проекта SIES Core команда Алексея столкнулась со всеми перечисленными побочными эффектами, что потребовало глубоких долгих исследований, результатами которых он поделился с аудиторией.
Доклад будет интересен разработчикам backend и embedded, создающим ПО с использованием С++ на недорогих платформах с ограниченным объемом памяти и отсутствием MMU.
Технологии: аллокаторы, MMU, Semihosting FS, GCC, GDB, OpenOCD.
источник
#cpp #programming
👉 @cpp_lib
👍5🔥2
Media is too big
VIEW IN TELEGRAM
С++ и безопасность: правда ли все так плохо?
Сергей проанализировал недавний отчет NSA и рассказал, так ли плохо обстоят дела с безопасностью в С++ на самом деле и что современная индустрия предлагает для решения этого вопроса.
Он разобрал проблемы с безопасностью в С++ на открытых примерах из Chromium, среди которых:
— работа с памятью;
— UB;
— C legacy, строки, арифметика, преобразования типов.
Спикер также показал различные подходы к митигации описанных проблем, в частности:
— статический анализ;
— динамический анализ;
— фаззинг-тестирование;
— харденинг;
— выделение безопасных подмножеств языка: Misra, AUTOSAR, стандарт Google;
— методология SDL как комплексное решение;
— (бонус) подход KasperskyOS по определению недоверенных компонентов, допускающих наличие уязвимостей, но без возможности их проэксплуатировать и развить атаку.
источник
#cpp #programming
👉 @cpp_lib
Сергей проанализировал недавний отчет NSA и рассказал, так ли плохо обстоят дела с безопасностью в С++ на самом деле и что современная индустрия предлагает для решения этого вопроса.
Он разобрал проблемы с безопасностью в С++ на открытых примерах из Chromium, среди которых:
— работа с памятью;
— UB;
— C legacy, строки, арифметика, преобразования типов.
Спикер также показал различные подходы к митигации описанных проблем, в частности:
— статический анализ;
— динамический анализ;
— фаззинг-тестирование;
— харденинг;
— выделение безопасных подмножеств языка: Misra, AUTOSAR, стандарт Google;
— методология SDL как комплексное решение;
— (бонус) подход KasperskyOS по определению недоверенных компонентов, допускающих наличие уязвимостей, но без возможности их проэксплуатировать и развить атаку.
источник
#cpp #programming
👉 @cpp_lib
👍6❤1
Media is too big
VIEW IN TELEGRAM
Курс по ООП в С++: шаблоны и метапрограммирование
00:00 - Введение
02:12 - Внутреннее устройство шаблонов
03:55 - Явная специализация
06:25 - Частичная специализация
08:04 - Перегрузка и шаблоны
09:02 - Статический полиморфизм (CRTP)
12:40 - Шиблонный синглтон (CRTP)
17:57 - Основы метапрограммирования
22:17 - Заключение
источник
#cpp #programming
👉 @cpp_lib
00:00 - Введение
02:12 - Внутреннее устройство шаблонов
03:55 - Явная специализация
06:25 - Частичная специализация
08:04 - Перегрузка и шаблоны
09:02 - Статический полиморфизм (CRTP)
12:40 - Шиблонный синглтон (CRTP)
17:57 - Основы метапрограммирования
22:17 - Заключение
источник
#cpp #programming
👉 @cpp_lib
👍5🎉2🔥1
👏8👍3❤1🤨1
Martin Reddy (2024)
В этой книге всесторонне рассматривается разработка API, начиная с первоначального проектирования и заканчивая реализацией, тестированием, документированием, выпуском, версионированием, сопровождением и уничтожением. В ней представлены паттерны и практики, которые приносят реальную пользу как отдельным разработчикам, так и организациям. Второе издание включает все новые материалы, полностью обновленные для последних версий C++, в том числе новую главу о параллелизме и многопоточности, а также новую главу о том, как могут сосуществовать код Objective C++ и C++ и как можно получить доступ к API C++ из программ на Swift. Кроме того, в книге рассматриваются часто упускаемые из виду вопросы, как технические, так и нетехнические, способствующие принятию успешных проектных решений, которые приводят к созданию высококачественных, надежных и долговечных API.
#cpp #programming
👉 @cpp_lib
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Личный блог Барта Филиппеĸа про C++
Барт выпусĸал свои ĸниги, получил награду Microsoft MVP (Most Valuable Professional), частый гость подкаста CppCast.
https://www.fluentcpp.com/posts/
#cpp #programming
👉 @cpp_lib
Барт выпусĸал свои ĸниги, получил награду Microsoft MVP (Most Valuable Professional), частый гость подкаста CppCast.
https://www.fluentcpp.com/posts/
#cpp #programming
👉 @cpp_lib
Fluent C++
Posts
Expressive code in C++
👍3🥰3
Оптимизация GUI на Qt
Как правило, при создании desktop-приложений на платформе Qt не возникает проблем, связанных с медленностью работы GUI. Qt – платформа достаточно надежная, неплохо вылизанная по всем параметрам, в том числе и по скорости работы. Однако всё же иногда бывают ситуации, когда из-за обилия виджетов графический интерфейс немного притормаживает, и это печально). В этой статье я приведу один частный пример простого графического интерфейса и покажу, как за два шага можно сначала ускорить его в 11 раз, а потом и в целых 34 раза. Вдобавок к этому, я постараюсь немного осветить механизм принятия решения для таких оптимизационных задач, постараюсь показать направление мыслей для правильного решения. Поехали!
https://habr.com/ru/post/672962/
#cpp #programming
👉 @cpp_lib
Как правило, при создании desktop-приложений на платформе Qt не возникает проблем, связанных с медленностью работы GUI. Qt – платформа достаточно надежная, неплохо вылизанная по всем параметрам, в том числе и по скорости работы. Однако всё же иногда бывают ситуации, когда из-за обилия виджетов графический интерфейс немного притормаживает, и это печально). В этой статье я приведу один частный пример простого графического интерфейса и покажу, как за два шага можно сначала ускорить его в 11 раз, а потом и в целых 34 раза. Вдобавок к этому, я постараюсь немного осветить механизм принятия решения для таких оптимизационных задач, постараюсь показать направление мыслей для правильного решения. Поехали!
https://habr.com/ru/post/672962/
#cpp #programming
👉 @cpp_lib
🔥6👍1
На грани между exceptions и std::expected
Посмотрев на новый тип из грядущего стандарта под названием std::expected я пришел к интересному на мой взгляд мнению, что можно немного переосмыслить его суть и сделать несколько ближе к исключениям.
В данной статье хочу немного рассказать о небольшом исследовании реализации expected, в которой используется стирание типа ошибки.
https://habr.com/ru/articles/737408/
#cpp #programming
👉 @cpp_lib
Посмотрев на новый тип из грядущего стандарта под названием std::expected я пришел к интересному на мой взгляд мнению, что можно немного переосмыслить его суть и сделать несколько ближе к исключениям.
В данной статье хочу немного рассказать о небольшом исследовании реализации expected, в которой используется стирание типа ошибки.
https://habr.com/ru/articles/737408/
#cpp #programming
👉 @cpp_lib
Хабр
На грани между exceptions и std::expected
Посмотрев на новый тип из грядущего стандарта под названием std::expected я пришел к интересному на мой взгляд мнению, что можно немного переосмыслить его суть и сделать несколько ближе к исключениям....
👍3🥰1
Media is too big
VIEW IN TELEGRAM
*(char*)0 = 0; - What Does the C++ Programmer Intend With This Code?
- JF Bastien - C++ on Sea 2023
источник
#cpp #programming
👉 @cpp_lib
- JF Bastien - C++ on Sea 2023
источник
#cpp #programming
👉 @cpp_lib
👍4