Библиотека C/C++ разработчика
前往频道在 Telegram
Полезные материалы по всему, что может быть полезно плюсовику/сишнику. По всем вопросам @evgenycarter
显示更多7 322
订阅者
无数据24 小时
+47 天
+1330 天
帖子存档
На грани между exceptions и std::expected
Посмотрев на новый тип из грядущего стандарта под названием std::expected я пришел к интересному на мой взгляд мнению, что можно немного переосмыслить его суть и сделать несколько ближе к исключениям.
В данной статье хочу немного рассказать о небольшом исследовании реализации expected, в которой используется стирание типа ошибки.
https://habr.com/ru/articles/737408/
#cpp #programming
👉 @cpp_lib
Внимание, разработчики! Приглашаем вас на открытый вебинар по алгоритмам и структурам данных от опытного практикующего эксперта💯
Ждём вас на уроке «Визуальное сравнение 1-2-3 алгоритмов сортировок» от OTUS, где мы:
- подробно рассмотрим три алгоритма сортировок: Пузырьком, Вставкой и Шелла;
- сравним их по различным критериям: сложность и количество обменов, стабильность и адаптивность;
- напишем алгоритмы и сравним их быстродействие;
- продемонстрируем их работу на игральных картах🂱️
🔥 Спикер Евгений Волосатов — программист баз данных и преподаватель с огромным и разнообразным опытом, автор статей и учебных программ по C#, Java, PHP.
Встречаемся 1 июля в 20:00 мск в преддверии старта курса «Алгоритмы и структуры данных». Все участники вебинара получат специальную цену на обучение.
🔴 Ссылка для регистрации: https://vk.cc/cxYdTp
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Оптимизация GUI на Qt
Как правило, при создании desktop-приложений на платформе Qt не возникает проблем, связанных с медленностью работы GUI. Qt – платформа достаточно надежная, неплохо вылизанная по всем параметрам, в том числе и по скорости работы. Однако всё же иногда бывают ситуации, когда из-за обилия виджетов графический интерфейс немного притормаживает, и это печально). В этой статье я приведу один частный пример простого графического интерфейса и покажу, как за два шага можно сначала ускорить его в 11 раз, а потом и в целых 34 раза. Вдобавок к этому, я постараюсь немного осветить механизм принятия решения для таких оптимизационных задач, постараюсь показать направление мыслей для правильного решения. Поехали!
https://habr.com/ru/post/672962/
#cpp #programming
👉 @cpp_lib
Личный блог Барта Филиппеĸа про C++
Барт выпусĸал свои ĸниги, получил награду Microsoft MVP (Most Valuable Professional), частый гость подкаста CppCast.
https://www.fluentcpp.com/posts/
#cpp #programming
👉 @cpp_lib
🎯 Вперед к улучшенной организации кода с машиной состояний в Qt!
4 июля в 20:00 мск — откройте для себя мир работы с Qt на открытом практическом вебинаре.
На уроке вы освоите:
- основы работы с машиной состояний в Qt: создание состояний, определение переходов и управление сигналами;
- сложные логические условия для эффективных переходов и повышения производительности приложения;
- использование машины состояний для улучшения организации кода и создания более совершенного приложения.
Кому подходит урок:
- программистам, использующим Qt и стремящимся к оптимизации своего кода;
- любознательным разработчикам, желающим погрузиться в мир машин состояний и их применения.
Спикер — ведущий разработчик в одной из крупнейших компаний и опытный преподаватель.
Встречаемся в преддверии старта курса «Разработка прикладного ПО на Qt и ОС «Аврора». Все участники вебинара получат специальную цену на обучение!
➡️ Пройдите короткий тест прямо сейчас, чтобы посетить бесплатный урок: https://vk.cc/cxYb7o
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576📕API Design for C++, 2nd Edition
Martin Reddy (2024)
В этой книге всесторонне рассматривается разработка API, начиная с первоначального проектирования и заканчивая реализацией, тестированием, документированием, выпуском, версионированием, сопровождением и уничтожением. В ней представлены паттерны и практики, которые приносят реальную пользу как отдельным разработчикам, так и организациям. Второе издание включает все новые материалы, полностью обновленные для последних версий C++, в том числе новую главу о параллелизме и многопоточности, а также новую главу о том, как могут сосуществовать код Objective C++ и C++ и как можно получить доступ к API C++ из программ на Swift. Кроме того, в книге рассматриваются часто упускаемые из виду вопросы, как технические, так и нетехнические, способствующие принятию успешных проектных решений, которые приводят к созданию высококачественных, надежных и долговечных API.
#cpp #programming
👉 @cpp_lib
+3
Программирование на С++
https://bdpx.github.io/cpp/
#cpp #programming
👉 @cpp_lib
Промпт-инженеринг — новый хайп или перспективная профессия? 🤔
Рассказываем про направление с большим потенциалом и маленькой конкуренцией на рынке на нашей бесплатной лекции.
По итогам эфира вы узнаете:
— Кто такой промт-инженер и чем он занимается;
— Как интегрировать скиллы промт-инжинеринга в работу, если вы работаете в IT;
— Кому в действительности нужны его услуги и какие результаты это даст;
— Сколько платят промт-инженеру в России и мире;
— Кто может стать промт-инженером и какой порог входа;
Кликай на ссылку и забирай подробную информацию вместе с классными бонусами 👈🏼
erid: LjN8JzLER
ООО Зерокодер, ИНН 9715401631
Курс по ООП в С++: шаблоны и метапрограммирование
00:00 - Введение
02:12 - Внутреннее устройство шаблонов
03:55 - Явная специализация
06:25 - Частичная специализация
08:04 - Перегрузка и шаблоны
09:02 - Статический полиморфизм (CRTP)
12:40 - Шиблонный синглтон (CRTP)
17:57 - Основы метапрограммирования
22:17 - Заключение
источник
#cpp #programming
👉 @cpp_lib
С++ и безопасность: правда ли все так плохо?
Сергей проанализировал недавний отчет NSA и рассказал, так ли плохо обстоят дела с безопасностью в С++ на самом деле и что современная индустрия предлагает для решения этого вопроса.
Он разобрал проблемы с безопасностью в С++ на открытых примерах из Chromium, среди которых:
— работа с памятью;
— UB;
— C legacy, строки, арифметика, преобразования типов.
Спикер также показал различные подходы к митигации описанных проблем, в частности:
— статический анализ;
— динамический анализ;
— фаззинг-тестирование;
— харденинг;
— выделение безопасных подмножеств языка: Misra, AUTOSAR, стандарт Google;
— методология SDL как комплексное решение;
— (бонус) подход KasperskyOS по определению недоверенных компонентов, допускающих наличие уязвимостей, но без возможности их проэксплуатировать и развить атаку.
источник
#cpp #programming
👉 @cpp_lib
🚀Хочешь выжать максимум из своих проектов? Прокачай свои навыки и окунись в мир кроссплатформенной разработки на C++!
Включай свой мозг на полную мощность и присоединяйся к нам 24 июня в 20:00 мск на вебинаре от тимлида одного из крупнейших российских банков.
- узнаем, как решить проблему поиска зависимостей;
- напишем conan-файл;
- организуем свой сервер пакетов в своей экосистеме CI/CD.
👉 Не упусти возможность обойти конкурентов, регистрируйся прямо сейчас: РЕГИСТРАЦИЯ
Эффективное использование памяти во встраиваемых системах
Алексей Алешкин (ИнфоТеКС)
Отличительная особенность разработки ПО для встраиваемых систем — ограниченность доступной памяти. Применение С++ значительно повышает скорость разработки, однако ухудшает прозрачность управления памятью и нефункциональные характеристики кода. Эти побочные эффекты зачастую приводят к понижению потребительских качеств продукта, ухудшению стабильности его работы или даже к невозможности реализации проекта на заданной платформе.
В процессе разработки проекта SIES Core команда Алексея столкнулась со всеми перечисленными побочными эффектами, что потребовало глубоких долгих исследований, результатами которых он поделился с аудиторией.
Доклад будет интересен разработчикам backend и embedded, создающим ПО с использованием С++ на недорогих платформах с ограниченным объемом памяти и отсутствием MMU.
Технологии: аллокаторы, MMU, Semihosting FS, GCC, GDB, OpenOCD.
источник
#cpp #programming
👉 @cpp_lib
C++20 в bare-metal программировании, работа с регистрами микроконтроллеров Cortex-M
Сегодня я хотел бы обсудить тему, с которой так или иначе сталкивался почти каждый программист встраиваемых устройств без использования настоящих операционных систем, а именно прямое управление периферийными узлами микроконтроллера. A конкретнее, я хотел бы обсудить повышение безопасности при управлении периферийными модулями без потери эффективности, гибкости и читаемости.
Кто-то может подумать, что данная тема уже рассказана вдоль и поперек в многочисленных мануалах по проектам для STM32 (например, хабр). Те же, кто уже понял о чем будет идти речь, может подумать что это полное повторение уже существующих подобных идей (например эта и другие статьи автора зародили во мне интерес к этой теме несколько лет назад, а вот в языке программирования Rust большинство ящиков/крейтов Cortex-M/PAC уже используют проверками безопасности при манипулировании регистрами). Однако, не нужно спешить с выводами. Я полагаю, что могу дать интересную и полезную информацию для обоих вышеперечисленных категорий читателей.
Перед началом, тему того 'Зачем вообще лезть на уровень регистров, если каждый производитель дает HAL/BSP?' я оставлю вне рамок данной статьи. Я предполагаю, что если читатель открыл статью, то ему уже интересна данная тема, и мне не столь важно почему.
https://habr.com/ru/articles/819499/
#cpp #programming
👉 @cpp_lib
.💡 Разрабатываешь на C++? Освой кроссплатформенную разработку на QT и ОС Аврора
❗️ Вкладывай в перспективу - вкладывай в себя!
Пройди тест из 20 вопросов и проверь, насколько хорошо nы знаешь язык C++ и готов освоить QT и ОС Аврора .
Сможешь сдать — пройдёшь на продвинутый онлайн-курс "Разработка прикладного ПО на Qt и ОС Аврора" от OTUS.
👉 ПРОЙТИ ТЕСТ: https://vk.cc/cxKBIx
🎁 Успей на курс! Только до 23 июня скидка 10%, подробности у наших менеджеров - после прохождения теста они свяжутся с вами.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576Как сравнить целые числа со знаком и без знака в C++20?
Сравнение двух чисел должно быть простым, верно? Может быть, и должно, но в языке C++ это не так, даже если ограничить сравнение областью целых чисел.
Если попытаться сравнить знаковое и беззнаковое целое число, то возможны несколько вариантов развития событий. Возможно, это действительно сработает, и вы никогда не узнаете, чем рисковали. Возможно, все будет не так, как вы ожидали, и вы потратите немало времени, ломая голову над тем, что же произошло. Возможно также, что он не сработает в соответствии с вашими ожиданиями, но это останется незамеченным.
https://www.sandordargo.com/blog/2023/10/11/cpp20-intcmp-utilities
#cpp #programming
👉 @cpp_lib
Сборка мусора: как это делается в системном программировании
Давайте поговорим об одной из наиболее критичных по производительности программ, которой вы пользуетесь ежедневно: о вашей операционной системе. Поскольку при каждом разгоне железа вы получаете дополнительную вычислительную мощность, операционная система никогда за этим не поспевает. Поэтому постоянно доводится читать о том, как разработчики ядра и драйверов выжимают последнее из своего кода.
Кроме того, операционные системы должны быть рассчитаны на массовую конкурентность. Дело не только в том, что наша операционная система отвечает за планирование всех процессов и потоков пользовательского пространства, но и в том, что в ядре хватает собственных потоков, а также обработчиков прерываний, нужных для взаимодействия с железом. Требуется минимизировать время, которое тратится на ожидание, так как, опять же, при любой задержке вы воруете время ваших пользователей.
https://bitbashing.io/gc-for-systems-programmers.html
#cpp #programming
👉 @cpp_lib
🟢 Практический вебинар для начинающих С++-разработчиков — почему утекает динамически выделенная память и как с этим бороться?
Ждем вас на открытом уроке, где мы разберем:
- зачем нужна динамическая память и сложности работы с ней в C++;
- основные ошибки, которые возникают при работе с динамической памятью;
- инструментарий диагностики ошибок, такой как valgrind и sanitizers;
- идиому RAII в контексте динамической памяти.
👨🎓 Спикер — опытный разработчик и руководитель команд, преподаватель и эксперт конференций C++ Russia, escar Europe.
⏰ Встречаемся 20 июня в 20:00 мск в преддверии старта курса «Специализация C++ Developer». Все участники вебинара получат специальную цену на обучение!
➡ Регистрируйтесь прямо сейчас, чтобы занять место на открытом уроке и получить запись: РЕГИСТРАЦИЯ
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Разбор кода игры 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
现已上线!2025 年 Telegram 研究 — 年度关键洞察 
