Полезные материалы по всему, что может быть полезно плюсовику/сишнику.
Игрушечная имлементация чисел с фиксированной точкой в C++
В C++ нет базового типа чисел с фиксированной точкой, в стандартной библиотеке также нет классов для них. В тоже время работа с числами с плавающей точкой (double, float) часто может быть неочевидна (например, ответьте на вопрос: ассоциативна ли операция сложения над ними?), вдобавок язык предоставляет (часто критикуемую) возможность перегрузки арифмитических операторов, подталкивая нас к созданию собственного типа данных.
https://habr.com/ru/articles/831624/
#cpp #programming
👉 @cpp_lib
👍Пройдите тест по IoT👍
📌Пройдите тест из 10 вопросов и проверьте, насколько вы готовы к обучению на углубленном курсе «IoT Developer» от OTUS. Сможете сдать - пройдете на курс со скидкой!
⏰ Время прохождения теста ограничено 10 минут
👉ПРОЙТИ ТЕСТ
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Как написать 2D игру на C++ и чистом STL для терминала в Linux
Привет, Хабр, я PHP разработчик с опытом работы в продакшне более 8 лет. После долгого и упорного труда мне стало скучно пилить микросервисы и бэкенды в хайлоде, я решил постичь магию разработки игр. Выбрал курс по Unreal Engine 5 и C++, так как там все структурировано, понятно, и в случае необходимости есть кому задать вопрос. На первой лекции по основам С++ преподаватель сразу предложил челлендж - написать 2D игру без использования игрового движка. Идея мне понравилась и я сразу приступил к реализации.
https://habr.com/ru/post/708486/
#cpp #programming
👉 @cpp_lib
Основы программирования на С/C++
Что такое IDE?
Почему стоит изучать С++?
Работа в Visual Studio C++ #1
Первая программа на С++
#5 Escape последовательности и Raw-строки в C++
Основные понятия языка С++
Представление чисел в памяти компьютера
Переменные и типы данных в С++
Локальные и глобальные переменные
Литералы
Потоковый ввод вывод в С++
.
.
.
Стек вызовов
Перегрузка и шаблоны функций в С++
Хвостовой возвращаемый тип в С++
Параметры по умолчанию в функции С/С++
Рекурсивные алгоритмы на языке С++
Указатель на функцию в языке С++
Динамическая память в языке С
Динамическая память в языке C++
Пример задачи на работу с динамической памятью в С++
Двумерный динамический массивна Еськова. Основы программирования
Доступно 56 видео
#cpp #programming
👉 @cpp_lib
🦾Хардкорный тест по языку С🦾
📌Пройдите тест из 20 вопросов и проверьте, насколько вы готовы к обучению на углубленном курсе «Программист С» от OTUS. Сможете сдать - пройдете на курс по спеццене!
⏰ Время прохождения теста ограничено 30 минут
👉ПРОЙТИ ТЕСТ
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Lightning Talk: Let's Write a Lambda in C++ - Ben Deane - CppCon 2023
https://www.youtube.com/watch?v=EqiLTgQcDPM
#cpp #programming
👉 @cpp_lib
San Diego C++ Meetup July 16 2024 - 64
https://youtu.be/v1mrBXrM6FQ?si=zBMOBxQmW2tTbDuO
#cpp #programming
👉 @cpp_lib
Разработка интерфейса для Windows — это боль
Последние несколько дней я пытался найти библиотеку, которая бы позволила мне писать на C++ программы с GUI. Мои требования были довольно просты:
Достаточно только поддержки Windows;
Разрешено коммерческое использование;
Простая стилизация, в том числе и тёмный режим;
Результатом должен быть единый файл .exe размером меньше 40 МБ без или с минимальным количеством зависимостей;
Написание части программы с GUI не должно занимать больше времени, чем сама функциональность.
https://tulach.cc/writing-gui-apps-for-windows-is-painful/
#cpp #programming
👉 @cpp_lib
🎯 Освой разработку ПО на QT и ОС Аврора
Пройди тест из 20 вопросов и проверь, насколько хорошо nы знаешь язык C++ и готов освоить QT и ОС Аврора .
Сможешь сдать — пройдёшь на продвинутый онлайн-курс "Разработка прикладного ПО на Qt и ОС Аврора" от OTUS.
👉 ПРОЙТИ ТЕСТ: https://vk.cc/cyseFb
🎫 Начни обучение со скидкой в 10%, действует до конца июля.Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Как malloc сломала JPGLoader в Serenity, или Как выиграть в лотерее
Пару лет назад мне выпала возможность расследовать в SerenityOS интересный баг, связанный с декодированием изображений JPG, которые по какой-то причине при просмотре выглядели так, как вы видите выше.
Странно, не так ли? Похоже, будто просто перепутали RGB и BGR. При этом внесение в JPGLoader.cpp следующего изменения:- const Color color { (u8)block.y[pixel_index], (u8)block.cb[pixel_index], (u8)block.cr[pixel_index] };
+ const Color color { (u8)block.cr[pixel_index], (u8)block.cb[pixel_index], (u8)block.y[pixel_index] };
context.bitmap->set_pixel(x, y, color);
https://habr.com/ru/companies/ruvds/articles/828224/
original https://sin-ack.github.io/posts/jpg-loader-bork/
#cpp #programming
👉 @cpp_lib
Безопасное копирование, перемещение и уничтожение объектов в современном C++ по правилу «все или ничего»
Какие конструкторы нужны классу C++? Какие он генерирует сам? Как насчет различных операторов присваивания? А деструктор? Как не отстрелить себе ногу и без труда ориентироваться в этих водах?
Это и многое другое мы рассмотрим в этом видео, которое расскажет нам о простом правиле, которому нужно следовать при реализации классов в современном C++, - правиле "все или ничего". Мы погрузимся в причины его существования и посмотрим, как оно облегчает нам жизнь.
источник
#cpp #programming
👉 @cpp_lib
Библеотека CPR
C++ Requests - это простая обертка вокруг libcurl, вдохновленная отличным проектом Python Requests.
Несмотря на свое название, простой интерфейс libcurl - это еще не все, и ошибки, неправильное использование этого языка - частый источник ошибок и разочарований. Используя более выразительные языковые средства C++17 (или C++11, если вы используете cpr < 1.10.0), эта библиотека укладывает суть выполнения сетевых вызовов в несколько лаконичных идиом.
Вот быстрый GET-запрос:#include <cpr/cpr.h>
int main(int argc, char** argv) {
cpr::Response r = cpr::Get(cpr::Url{"https://api.github.com/repos/whoshuu/cpr/contributors"},
cpr::Authentication{"user", "pass", cpr::AuthMode::BASIC},
cpr::Parameters{{"anon", "true"}, {"key", "value"}});
r.status_code; // 200
r.header["content-type"]; // application/json; charset=utf-8
r.text; // JSON text string
return 0;
}
https://github.com/libcpr/cpr
#cpp #programming
👉 @cpp_lib
FTXUI
Простая кроссплатформенная библиотека C++ для пользовательских интерфейсов на базе терминала!
• Функциональный стиль
• Простой и элегантный синтаксис
• Создаваемые консольные UI поддерживают навигацию с помощью клавиатуры и мыши
• Поддержка UTF8
• Поддержка анимации
• Поддержка рисования
• Нет зависимостей
• Кроссплатформенность: Linux/MacOS, WebAssembly, Windows
https://github.com/ArthurSonzogni/FTXUI
#cpp #programming
👉 @cpp_lib
Константин Владимиров — О денотации: разрешение имен и его пересмотр в C++23
Этот доклад — попытка сделать темную и мрачную область разрешения имен в C++ простой и ясной для практикующего программиста.
источник
#cpp #programming
👉 @cpp_lib
❓Хотите узнать, какой алгоритм сортировки быстрее и эффективнее? Присоединяйтесь к нашему открытому уроку!
Тема: Визуальное сравнение 4-5 алгоритмов сортировок.
Дата: 15 июля в 20:00 мск.
На занятии мы подробно рассмотрим два популярных алгоритма сортировки: Выбором и Пирамидальной. Разберём их по различным критериям, включая сложность, количество обменов, стабильность и адаптивность.
Мы напишем и сравним алгоритмы по их быстродействию. Этот урок идеально подходит для студентов, разработчиков и всех, кто хочет углубить свои знания в области алгоритмов сортировки.
🔥 Спикер Евгений Волосатов — программист баз данных и преподаватель с огромным и разнообразным опытом, автор статей и учебных программ по C#, Java, PHP.
🔴 Пройдите короткий тест прямо сейчас, чтобы посетить бесплатный урок: https://vk.cc/cyflwxРеклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
📕Introducing Qt 6: Learn to Build Fun Apps & Games for Mobile & Desktop in C++
Автор: Ben Coepp (2022)
Быстро начните работать с Qt, популярным фреймворком с открытым исходным кодом для создания приложений и игр на основе C++. Эта книга поможет вам в кратчайшие сроки создать полнофункциональные настольные и мобильные приложения.
#cpp #programming
👉 @cpp_lib
Прошиваем программу не только в начало FLASH памяти STM32
Знаете ли вы куда попадает ваша программа после того, как вы нажали кнопку RUN или DEBUG в IDE? Если да, то как изменить этот адрес или даже выйти за пределы постоянной памяти и прожигаться сразу в оперативную память.
Я работаю в CubeIDE и весь мой интерфейс будет именно из этой среды разработки.
Начнем с ответа на первый вопрос, если использовать стандартные настройки IDE и взять стандартный ST-LINK (не важно оригинал или свисток), то при прожигании микроконтроллера будет очищено нужное количество секторов во FLASH памяти и на их место будет записана программа, причем в самое начало FLASH памяти по адресу 0x08000000.
Тут немного остановимся. Для большинства проектов этого достаточно, программа находится во FLASH памяти, при перезагрузке микроконтроллера ни куда не исчезает и исправно запускается. Проблемы начинаются, когда приходит задача, встроить загрузчик, который будет самостоятельно принимать прошивку по одному из интерфейсов, будь то UART/USART, I2C или CAN и сохранять ее в требуемом месте FLASH памяти, а после перезагрузки должен самостоятельно подготовить и передать управление требуемой программе.
https://habr.com/ru/articles/831016/
#cpp #programming
👉 @cpp_lib
🤝 Сидите на работе, пишете код и чувствуете, что застряли в рутине?
Ваши проекты скучны, а возможности ограничены? Хотите создавать крутые приложения для современной техники и работать с крупными государственными компаниями и бизнесом?
Представьте себе, что вы стали мастером в разработке на Qt и ОС «Аврора». Вы создаете интерфейсы для цифровой техники, мобильные приложения для госкомпаний и крупного бизнеса, а ваши навыки востребованы как никогда.
Присоединяйтесь к онлайн-курсу «Разработка прикладного ПО на Qt и ОС «Аврора» и сделайте этот прыжок в будущее!
Что вам даст этот курс:
- освоите Qt — одну из лучших кроссплатформенных библиотек для разработки UI на С++;
- изучите нативную разработку для Авроры 5.0;
- изучите структуру библиотеки Qt и научитесь писать программы на QML.
И многое другое!
👉Пройдите тест, проверьте, хватит ли вам навыков для обучения на курсе: https://vk.cc/cyCO74
🎫 Начните обучение со скидкой в 10%, действует до конца июля.Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Два типа рефлексий в C++
Задумывались ли вы когда-нибудь, что вашему коду стоило бы пройти сеанс психотерапии? В C++ это возможно благодаря такой замечательной штуке, как рефлексия. Она позволяет вашему коду буквально видить в зеркале себя и понимать свои ошибки и достоинства.
Итак, рефлексия — это процесс, при котором программа может инспектировать и изменять структуру и поведение во время выполнения.
Рефлексия в C++ бывает двух основных типов: компиляционная и рефлексия времени выполнения. Оба типа имеют свои особенности и применяются в различных сценариях.
https://habr.com/ru/companies/otus/articles/818507/
#cpp #programming
👉 @cpp_lib
Как выстрелить себе в ногу в C и C++. Сборник рецептов Haiku OS
История встречи статического анализатора PVS-Studio с кодом операционной системы Haiku уходит в далёкий 2015-й год. Это был интереснейший эксперимент и полезный опыт для команд обоих проектов. Почему эксперимент? Анализатора для Linux тогда не было и не будет ещё полтора года. Но труды энтузиастов нашей команды были вознаграждены: мы познакомились с разработчиками Haiku и повысили качество кода, пополнили базу редкими ошибками программистов и доработали анализатор. Сейчас проверить код Haiku на наличие ошибок можно легко и быстро.
https://habr.com/ru/companies/pvs-studio/articles/461255/
#cpp #programming
👉 @cpp_lib
Неуязвимого кода не существует. Абсолютно защищённых данных – тоже.
Зато есть способы восстановить информацию после серьёзного сбоя или атаки.
Именно о способах восстановления повреждённых данных мы и поговорим на открытом вебинаре «Создаём бэкапы для Ethereum-блокчейна на Rust»
Вы познакомитесь с принципами хранения и развития данных в блокчейн-системах, увидите, как с помощью Rust эффективно переиспользовать код для разных задач на разных целевых платформах.
Вебинар проведёт Кирилл Федченко, опытный программист на Rust, Python, C++.
Будет интересно и Rust-разработчикам и тем, кто использует другие языки.
23 июля, 19:00 МСК
Бесплатно
➡️ Записаться на событие: https://vk.cc/cyy5pA
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Плывущий экран. Вирус на C++. Melting Screen
Программа предоставлена в образовательных целях! Автор не несёт ответственности за её использование!
В этом видео вы узнаете как написать вирус на с++ который заставляет экран сыпаться и плыть.
источник
#cpp #programming
👉 @cpp_lib
📕C++20 Get the Details
Grimm Rainer (2022)
В этой книге подробно рассказывается о новом стандарте С++20. Для тех, кто не знаком с С++20, приводится краткий обзор, далее рассматриваются ключевые возможности языка. Вы получите представление о ключевых изменениях в ядре языка (концепты и модули), новой библиотеке диапазонов, корутинах, а затем сможете применить теорию на практике, изучив ряд примеров. Книгу можно использовать как справочное руководство и изучать главы в удобном для вас порядке.
Издание будет полезно разработчикам, желающим освоить последнюю версию С++, изучить передовые возможности и добавления в язык, а также заглянуть за кулисы разработки новых стандартов языка и узнать, как предлагаются, обсуждаются и утверждаются новые изменения в стандарт С++ и чем вызваны эти изменения.
#cpp #programming
👉 @cpp_lib
Структуры и классы в C++ и D
Реализации объектно-ориентированного программирования в разных Си-подобных языках, конечно, похожи, и все такие языки, созданные после C++, пытаются сделать ООП более удобно используемым. Сравним в этой статье ООП в D и С++.
Структуры и классы в C++ — это фактически одно и то же (хотя на практике используются по-разному), но в D есть явная семантическая разница. Структуры в D в основном предназначены для простой инкапсуляции данных и функций в единой сущности. Наследовать структуры нельзя, а память под структуры чаще всего выделяется на стеке. Классы же можно наследовать друг от друга, а объекты классов выделяются (почти всегда) в куче, контролируемой сборщиком мусора.
https://habr.com/ru/articles/827240/
#cpp #programming
👉 @cpp_lib
Надоело писать код, который тормозит?
Хочешь стать востребованным middle или senior разработчиком и получать предложения о работе от топов российского и международного рынка?
Тогда курс «Алгоритмы и структуры данных» — то, что тебе нужно!
На обучении ты:
- освоишь самые актуальные алгоритмы (жадные алгоритмы, бинарный поиск и др.), которые нужны для решения реальных задач и прохождения собеседований в крупные IT-компании;
- научишься оптимизировать свой код так, чтобы он летал, как ракета, а не ползал, как улитка;
- прокачаешь алгоритмическое мышление и сможешь создавать свои собственные алгоритмы для решения любых задач;
- получишь опыт реализации классических алгоритмов: твой GitHub будет сиять;
- разберёшься в сложных структурах данных: деревья поиска, хеш-таблицы, графы и всё, что нужно настоящему профи.
⏰ Только до 21 июля действует 10% скидка на обучение! С 22 июля скидка — 5%.
💚 Действуй сегодня, записывайся в группу: https://vk.cc/cyqZUsРеклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Приходите на C++ Zero Cost Conf 27 июля!
Конференция одновременно пройдёт в Москве, Ереване и онлайн. На встрече практикующие разработчики из топовых компаний прочитают доклады, поделятся реальными кейсами и метриками. А ещё будет крутой нетворкинг и афтерпати.
Программа получилась насыщенной — зарегистрироваться можно по ссылке.
До встречи на C++ Zero Cost Conf! ☀️
CGAL
Библиотека алгоритмов вычислительной геометрии (CGAL) - это библиотека C++, цель которой - обеспечить легкий доступ к эффективным и надежным алгоритмам вычислительной геометрии.
https://github.com/CGAL/cgal
#cpp #programming
👉 @cpp_lib
🎯 Готовы открыть для себя мир мобильной разработки на ОС Аврора 5?
16 июля в 20:00 мск присоединяйтесь к нашему открытому уроку и узнайте все секреты!
ОС Аврора 5 — это передовая российская мобильная операционная система, готовая к использованию в самых амбициозных проектах. Хотите узнать, как её покорить? Тогда этот вебинар для вас!
На занятии мы познакомимся с ключевыми особенностями ОС Аврора 5 и погрузимся в её уникальную среду разработки приложений — Аврора IDE. Ознакомимся со структурой и конфигурацией приложений на этой платформе.
Вы увидите наглядную демонстрацию приложения, которое отправляет уведомления в графическую подсистему Lipstick.
Встречаемся в преддверии старта курса «Разработка прикладного ПО на Qt и ОС «Аврора».
Все участники вебинара получат специальную цену на обучение!
➡️ Регистрируйтесь прямо сейчас, чтобы посетить бесплатный урок: https://vk.cc/cygmmlРеклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
📕Introduction to C++ : 500+ Difficulty-Scaled Solved Programming Exercises.
George S. Tselikis (2023)
Эта книга предназначена в первую очередь для студентов, изучающих курс языка C++, для тех, кто хочет самостоятельно изучить язык C++, а также для программистов, имеющих опыт работы с C и желающих перейти на C++. Она также может оказаться полезной преподавателям курса С++, которые ищут поясняющие примеры программирования для добавления в свои лекции. Основное внимание в этой книге уделено прочному введению в язык C++ и знаниям программирования с помощью большого количества практических примеров и содержательных советов. Она включает более 500 упражнений и примеров постепенного усложнения, чтобы помочь читателю понять принципы C++ и увидеть, как концепции могут материализоваться в коде.
#cpp #programming
👉 @cpp_lib
I HAVE NO CONSTRUCTOR, AND I MUST INITIALIZE
Когда несколько лет назад я проходил первый курс по C++, меня учили, что при определенных обстоятельствах компилятор будет предоставлять некие конструкторы по умолчанию на случай, если мы не предоставим свои собственные. Любопытно было узнать больше, но в первую очередь меня интересовали такие случаи:struct T { /* ... */ };
T t;
T s{};
T r{arg1, arg2, ...};
https://consteval.ca/2024/07/03/initialization/
#cpp #programming
👉 @cpp_lib