Внутри STL: Строка
Можно подумать, что строка std::string (и все ее друзья из семейства std::basic_string) - это, по сути, вектор символов. Однако строки устроены иначе из-за специфических оптимизаций, допустимых для строк, но не для векторов.
https://devblogs.microsoft.com/oldnewthing/20230803-00/?p=108532
#cpp #programming
👉 @cpp_lib
Что Должно Быть в Каждом FirmWare Pепозитории
В этом тексте я предлагаю порассуждать, что же должно быть в нормальном взрослом firmware репозитории (репе/общаке) безотносительно к конкретному проекту. То есть самые универсальные и переносимые программные компоненты (кирпичики/SubSystems), которые могут пригодиться в практически любой сборке.
#cpp #programming
👉 @cpp_lib
C++ Full Course (FOUR HOUR All-in-One Tutorial for Beginners)
00:00 - Introduction
09:40 - User Input and Output
20:56 - using namespace std (Potential Problems)
30:38 - if Statement and Comparisons
37:41 - Comparing char with tolower
43:43 - User Input with getchar()
48:59 - else Clause and else if
59:14 - Nested if Statements
01:03:12 - Logical Operators
01:10:27 - booleans (The Truth Exposed)
01:22:47 - Switch Statement
01:31:28 - Defining a Function Prototype and Definition
01:37:29 - Function Returns and Arguments
01:45:24 - While Loop with Guessing Games
01:52:58 - Random Number Generation
02:02:44 - Multiple C++ File Compilation
02:10:05 - for Loops vs While Loops
02:16:53 - Decrementing for Loop (Count Down)
02:24:50 - Arrays and Looping
02:35:57 - Vectors
02:40:40 - Passing Arrays and Vectors to Functions
02:56:38 - Function Overloading
03:00:53 - Function Templates and Template Overloads
03:10:27 - Intro to Deques (Double Ended Queue)
03:14:45 - Reading and Writing to Files (ifstream and ofstream)
03:21:06 - Intro to Classes and Objects (Object Oriented Programming)
03:26:44 - Reading and Writing Custom Object Collection from File
03:36:06 - Custom Constructors
03:41:53 - Static Methods
03:46:47 - Stacks and Queues Shopping List Exercise
источник
#cpp #programming
👉 @cpp_lib
Как два байта переслать: контрибьютим в KPHP
KPHP - компилятор для PHP. Он конвертирует PHP код в код на C++, компилируя который, ускоряет производительность в десятки раз. Это open-source проект, созданный ВКонтакте. Благодаря ему собирается огромный монолит ВКонтакте на 9 миллионов строк PHP кода в обычный бинарник, запуская который вы локально поднимаете полноценный ВКонтакте.
Цель
Я расскажу про добавление новых функций в runtime KPHP. Точнее про тернистую дорогу на пути.
https://habr.com/ru/articles/749792/
#cpp #programming
👉 @cpp_lib
Развлечения с gRPC и C++
Погружение в асинхронные серверы и клиенты с использованием C++ и gRPC в 2023 году
Почему я пишу эту серию статей? Так получилось, что я хочу использовать gRPC в своем будущем DNS-сервере.
В прошлом я уже использовал gRPC - с большим трудом. В этот раз я посмотрел несколько примеров и сделал что-то вроде реализации - но понял, что это дерьмо. К тому же было слишком много вещей, которых я не знал и не понимал, чтобы исправить это. Поэтому я решил потратить некоторое время на игру с gRPC, чтобы лучше понять его.
https://lastviking.eu/fun_with_gRPC_and_C++/
#cpp #programming
👉 @cpp_lib
Бьерн Страуструп: Как развивать язык
С самого начала своего существования язык C++ развивался в направлении создания элегантного и эффективного кода, включающего полную безопасность типов и ресурсов, равную поддержку встроенных и определяемых пользователем типов, а также прямое манипулирование аппаратными и системными ресурсами. Я расскажу об основных идеалах языка C++ и о стратегиях его развития, приведших к появлению современного стандарта ISO C++20. Ключевая идея заключалась в том, что мир постоянно меняется, и Си++ должен меняться вместе с ним на основе обратной связи с реальными проблемами. Однако эти изменения должны происходить в условиях жестких ограничений, связанных с необходимостью обеспечения стабильности основных пользователей.
источник
#cpp #programming
👉 @cpp_lib
🎮 Прими участие в бесплатном курсе по 3D моделированию для игр в Blender
Регистрация по ссылке👇
https://srflnk.ru/mvOunb
За 4 занятия ты поймешь, что создавать свои игровые модели может каждый!
📢 Что будем делать:
- Подробно разберем интерфейс Blender
- Изучим технику блокинга формы
- Научимся работать с полигональным моделированием и созданием Lowpoly моделей под игры
- Научимся настраивать pbr материалы в движке Eevee, а также работать со светом и настройками визуализации, чтобы красиво подать модель!
⏳ Продолжительность - 7 дней
Запишись по ссылке 👇
https://srflnk.ru/mvOunb
Вызываем демонов с printf
Начинающие реверс-инженеры часто сталкиваются с многочисленными препятствиями. Эта статья описывает определённый метод, который, как полагает автор, может вызвать замешательство у тех, кто только начинает изучать область анализа приложений. Стоит подчеркнуть, что цель данного материала не в представлении инновационного подхода или оказании значительной практической пользы, а в рассмотрении показательного случая.
https://habr.com/ru/articles/739764/
#cpp #programming
👉 @cpp_lib
Как вывести форматированный текст на экран в C++
Рано или поздно у каждого программиста появляется желание вывести форматированный текст на экран. Немудрено, у пляшущих на экране буковок есть свой неповторимый шарм, а факт форматированности добавляет им еще и загадочности — мы можем даже не догадываться, что в точности будет напечатано.
Но как сделать это оптимально и кроссплатформенно?
https://habr.com/ru/articles/748336/
#cpp #programming
👉 @cpp_lib
Создаём проект на С++ для Unreal Engine 5
#01. Создаём FPS-проект на С++
#02. Рефакторинг персонажа по умолчанию
#03. Рефакторим делегаты
#04. Рефакторинг компонента оружия
#05. Добавим наборы оружия
#06. Создаём оружие
#07. Взаимодействие с предметами
#08. Подбираем оружие
#09. Добавим персонажа Mixamo
#10. Аттачим оружие к персонажу
источник
#cpp #programming
👉 @cpp_lib
CMake с нуля
00 Введение
01 Структура проекта
02 Генерирование проектных файлов
03 Минимальный проект
04 Таргеты - add_executable
05 Таргеты - add_library
06 Таргеты - target_link_libraries
07 Переменные
08 Кэшированные переменные
09 Установка переменных командной строкой
источник
#cpp #programming
👉 @cpp_lib
Constrain your user-defined conversions
https://www.foonathan.net/2023/07/constrain-user-defined-conversions/
#cpp #programming
👉 @cpp_lib
C++ OpenGL 3D Game Tutorial Series From Scratch
1: Making the Window with Win32 API
2: Making OpenGL 3D Engine
3: Drawing a Triangle
4: Shaders
5: Animations
6: The Matrix
7: Rendering 3D Cube
8: Entity System
источник
#cpp #programming
👉 @cpp_lib
Курс современного C++ | Боннский университет, Германия.
Course Introduction and Hello World
Variables, Basic Types, Control Structures
Compilation, Debugging, Functions, Header/Source, Libraries, CMake
Google Test, Namespaces, Classes
Move Semantics, Classes
Polymorphism, I/O, Stringstreams, CMake find
Static, Numbers, Arrays, Non-owning pointers, Classes
Pointers, const with pointers, Stack and Heap, Memory leaks
Smart/Unique/Shared ptrs, Associative con., Enumeration
Templates, Iterators, Exceptions, Program input parameters, OpenCV
источник
#cpp #programming
👉 @cpp_lib
ТОП-3 вопроса о внесении программ в Реестр отечественного ПО
Вопрос №1
На какой срок ПО включается в Реестр Минцифры?
ПО включается в Реестр на неограниченный срок. При этом Минцифры ежегодно проверяет продолжает ли Ваше ПО соответствовать необходимым критериям и, в случае несоответствия, исключает ПО из реестра.
Вопрос №2
Какие льготы дает внесение в Реестр?
Внесение в Реестр позволяет: участвовать в государственных и муниципальных закупках; обнулять свой НДС при продаже программного продукта; получать гранты; принимать участие в акселераторах для малого бизнеса и стартапов.
Вопрос №3
Если ПО не внесено в Реестр, может ли оно быть признанным российским?
Продукты, не включенные в Реестр, не считаются российскими даже если полностью созданы российскими компаниями.
Проверьте, можно ли включить ваш продукт в Реестр Минцифры, пройдя тест по ссылке, и получите скидку 25% на внесение ПО в Реестр.
👉 ПРОЙТИ ТЕСТ 👈
✅Приглашаем на открытый урок по С++ от OTUS
Тема: Почему в C++ 13 способов передать параметр в функцию?
Дата: 22 августа, 20:00
Преподаватель: Павел Филонов, Ex-Data Science Manager в Kaspersky
Урок пройдёт в рамках курса «Специализация С++ Developer» от OTUS
🔹Что будет на занятии:
- синтаксис передачи параметров в функции;
- константы, указатели, ссылки, умные указатели, lvalue, rvalue, forward reference;
- практические советы по объявлению функций, основанные на C++ Core Guidelines.
🔸Чему вы научитесь:
- узнаете про разнообразие способов объявления параметров функции;
- сможете обоснованно выбирать, какой способ использовать в разных ситуациях.
Доступ к уроку бесплатный. После него вы сможете продолжить обучение на курсе, который доступен в рассрочку!
♦️Регистрация: https://otus.pw/3Ph6/
Самый быстрый и безопасный PNG декодер в мире
TL;DR: декодер изображений PNG из стандартной библиотеки языка программирования Wuffs работает в 1.22–2.75 раза быстрее, чем libpng (широко используемая реализация PNG декодера на C с открытым исходным кодом), C-библиотеки libspng, lodepng и stb_image, а также самые популярные библиотеки для работы с PNG на Go и Rust.
Декодирование PNG с помощью Wuffs обсуждалось на Hacker News №1, Hacker News №2, /r/programming, /r/rust и lobste.rs.
https://habr.com/ru/articles/751462/
#cpp #programming
👉 @cpp_lib
Молниеносный фреймворк нейронных сетей на C++/CUDA (by nvlabs)
https://www.libhunt.com/r/tiny-cuda-nn
#cpp #programming
👉 @cpp_lib
Выносим за скобки настройки CMake
Каждый день я создаю множество однотипных проектов C++ с системой сборки cmake. И открывая проекты в IDE, каждый раз снимаю галочки с типа сборки, оставляя только Debug. А ещё меняю путь к папке сборки. Мелочь, а утомляет.
Я решил изучить, как сделать эти действия автоматически, а в итоге узнал про удобный метод обмена настройками cmake между программистами.
Оказывается, существуют пресеты. Пресеты позволяют вынести параметры сборки из CMakeLists.txt. Это нужно для того, чтобы ваши проекты без проблем собирались под разные платформы и тулчейны. Пресет представляет из себя json-файл, в котором задаются различные параметры, влияющие на сборку проекта (опции конфигурации, флаги компилятора и т. д.).
https://habr.com/ru/companies/timeweb/articles/741868/
#cpp #programming
👉 @cpp_lib
⚡️Сишарповец, апнуться — просто!
Начните на бесплатном вебинаре онлайн-курса «C# ASP.NET Core разработчик» — «ASP.NET: взаимодействие с источниками данных»: регистрация
На бесплатном занятии мы:
— познакомимся с видами баз данных;
— разберем, как работать с реляционными и нереляционными базами данных напрямую и через ORM.
🔥Экспертизой поделится Дмитрий Гурьянов — опытный Тимлид команды разработки CRM-решений на платформе .NET.
— Продолжить обучение после вебинара по спеццене можно на полном курсе, доступном также в рассрочку.
Нативная интеграция. Информация о продукте www.otus.ru
Исправление GCC для создания фактически переносимых исполняемых файлов
https://ahgamut.github.io/2023/07/13/patching-gcc-cosmo/
#cpp #programming
👉 @cpp_lib
ТОП вопросов на С++ собеседовании | Вопросы и задачи с реальных собеседований
00:00 - Введение
02:07 - Общие вопросы на собеседовании по С++
03:46 - Стандартная библиотека С++
06:53 - Указатели в С++
07:51 - Виртуальность в С++
09:51 - Шаблоны в С++
11:52 - Заключение
источник
#cpp #programming
👉 @cpp_lib
⚡️Сишарповец, пора расти дальше!
Узнайте больше про C# ASP.NET Core-разработку ЗАВТРА, 3 августа в 20:00 мск на бесплатном вебинаре онлайн-курса в Отус — «Стандартные middleware своими руками»: регистрация
На бесплатном занятии мы:
— изучим, какие middleware по умолчанию используются в ASP.NET проектах;
— узнаем, зачем они нужны, как они устроены;
— реализуем свои аналоги.
🔥Экспертизой поделится Антон Герасименко — опытный .net developer + lead.
— После вебинара вы сможете продолжить обучение по спеццене, оплатив курс, в том числе, в рассрочку.
Нативная интеграция. Информация о продукте www.otus.ru
C++ с нуля
00 | Введение
01 | Hello World
02 | Биты, байты и двоичная система
03 | Типы данных в C++
04 | Операции с переменными
05 | Логические операции и операции сравнения
06 | Побитовые логические операции
07 | Функции
08 | Компиляция и линковка
09 | Безопасные и небезопасные преобразования
10 | Cсылки
11 | Указатели
12 | Область видимости
13 | Ветвление: if else
14 | switch
15 | Циклы while, do while, for
16 | enum
17 | struct
Все видео доступны на youtube
#cpp #programming
👉 @cpp_lib
🎮 Прими участие в бесплатном курсе по 3D моделированию для игр в Blender
Регистрация по ссылке👇
https://srflnk.ru/mvOunb
За 4 занятия ты поймешь, что создавать свои игровые модели может каждый!
📢 Что будем делать:
- Подробно разберем интерфейс Blender
- Изучим технику блокинга формы
- Научимся работать с полигональным моделированием и созданием Lowpoly моделей под игры
- Научимся настраивать pbr материалы в движке Eevee, а также работать со светом и настройками визуализации, чтобы красиво подать модель!
⏳ Продолжительность - 7 дней
Запишись по ссылке 👇
https://srflnk.ru/mvOunb
C++23: Alias declarations in for loop init-statements
https://www.sandordargo.com/blog/2023/07/12/cpp23-extended-init-statement-with-alias-declaration
#cpp #programming
👉 @cpp_lib
⚡️Скорость разработки ПО падает по мере роста размера проекта. Инструменты разработки не могут изменить тенденции, а лишь замедлить и отсрочить неизбежное. SOLID является одной из практик, которая гарантирует неизменность скорости разработки.
Узнайте больше про SOLID-принципы на бесплатном вебинаре онлайн-курса «Архитектура и шаблоны проектирования» в Отус — «SOLID как условие постоянной скорости разработки»: регистрация
На бесплатном занятии мы:
— разберем, почему SOLID принципы являются достаточным условием сохранения скорости разработки;
— рассмотрим простой и понятный механизм их применения для получения повторно используемого кода.
🔥Экспертизой поделится Евгений Тюменцев — опытный директор компании по разработке программного обеспечения.
Нативная интеграция. Информация о продукте www.otus.ru
🎮 Прими участие в бесплатном курсе по 3D моделированию для игр в Blender
Регистрация по ссылке👇
https://srflnk.ru/mvOunb
За 4 занятия ты поймешь, что создавать свои игровые модели может каждый!
📢 Что будем делать:
- Подробно разберем интерфейс Blender
- Изучим технику блокинга формы
- Научимся работать с полигональным моделированием и созданием Lowpoly моделей под игры
- Научимся настраивать pbr материалы в движке Eevee, а также работать со светом и настройками визуализации, чтобы красиво подать модель!
⏳ Продолжительность - 7 дней
Запишись по ссылке 👇
https://srflnk.ru/mvOunb
Первый проект длиною в полтора года…
На дворе 2021 год, я занимаюсь ремонтом электроники уже на протяжении десяти лет. Свободное от работы время я посвящаю изучению 3D-моделирования и печати. Для этих целей в 2018 году были куплены два самодельных FDM-принтера.
В один из дней приходит знакомый, держа в руках плату с большим количеством радиаторов. Предлагает посмотреть краем глаза, почему она не работает.
Я, конечно же, был не очень рад его предложению, так как занимаюсь больше ремонтом мобильных телефонов и планшетов. В процессе небольшой дискуссии соглашаюсь с одной оговоркой, что если за два выходных дня у меня получится погрузиться в проблему и изучить сам вопрос и понять, что это за плата, то я берусь.
Уже вечером этого дня я изучаю дома плату и первый раз узнаю такие слова, как "Asic", майнер, майнинг. Изучив немного вопрос, понимаю, что имею на руках плату одного такого устройства, а в данном случае именно AntMiner S9.
https://habr.com/ru/articles/746118/
#cpp #programming
👉 @cpp_lib
Оптимизация GUI на Qt
Как правило, при создании desktop-приложений на платформе Qt не возникает проблем, связанных с медленностью работы GUI. Qt – платформа достаточно надежная, неплохо вылизанная по всем параметрам, в том числе и по скорости работы. Однако всё же иногда бывают ситуации, когда из-за обилия виджетов графический интерфейс немного притормаживает, и это печально). В этой статье я приведу один частный пример простого графического интерфейса и покажу, как за два шага можно сначала ускорить его в 11 раз, а потом и в целых 34 раза. Вдобавок к этому, я постараюсь немного осветить механизм принятия решения для таких оптимизационных задач, постараюсь показать направление мыслей для правильного решения. Поехали!
https://habr.com/ru/post/672962/
#cpp #programming
👉 @cpp_lib