7358
Полезные материалы по всему, что может быть полезно плюсовику/сишнику. По всем вопросам @evgenycarter
Универсальная С++ фабрика объектов: для Qt и не только
Меня зовут Михаил Полукаров, я занимаюсь разработкой Desktop-версии корпоративного супераппа для совместной работы VK Teams.
Если вы тоже работали с большими проектами, где активно применяются объектно-ориентированные паттерны проектирования, то наверняка сталкивались с паттернами проектирования Factory Method или AbstractFactory. В процессе разработки я неоднократно ловил себя на мысли, что часто пишу однотипный код таких фабрик, и задумался о том, как можно было бы избежать таких самоповторений.
В этой статье я покажу, как сделать универсальную фабрику объектов, покрывающую большую часть потребностей, следующую принципам DRY (Don’t Repeat Yourself), а также как можно использовать некоторые «фишки» новых стандартов С++.
https://habr.com/ru/companies/vktech/articles/932358/
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
C++ изнутри: внутренние механизмы классов
Крис Райан — CppCon 2024
В своём докладе я рассмотрю внутренние механизмы C++ по следующим темам:
- "Луковица C++": как она соотносится с конструированием, уничтожением объектов и полиморфизмом;
- Порядок конструирования и уничтожения объектов, а также обработка до и после выполнения main();
- Указатели на функции-члены (это не те C-указатели на функции, что вы знали раньше);
- Указатели на данные-члены (не просто «сырые» указатели) и их "data-morphic" функциональность;
- Понимание стека вызовов, кадров стека и механизмов базового указателя (base pointer).
источник
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
FTXUI
Простая кроссплатформенная библиотека C++ для пользовательских интерфейсов на базе терминала!
• Функциональный стиль
• Простой и элегантный синтаксис
• Создаваемые консольные UI поддерживают навигацию с помощью клавиатуры и мыши
• Поддержка UTF8
• Поддержка анимации
• Поддержка рисования
• Нет зависимостей
• Кроссплатформенность: Linux/MacOS, WebAssembly, Windows
https://github.com/ArthurSonzogni/FTXUI
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
🚀 Подборка полезных 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 лайфхак 📌
/channel/Excel_lifehack Excel лайфхак
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 Питер Новости: Санкт-Петербург / СПБ / ДТП
Сегментация памяти в программе на C/C++
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
Опенсорс от кристалла до программного стека
Нужны ли нам открытые архитектуры? Что нам нужно, чтобы они работали? В этом докладе мы попытаемся изложить основные проблемы и преимущества открытых архитектур на примере RISC-V — и расскажем про то, как происходит разработка различных инструментов, включая генераторы, компиляторы, средства бенчмаркинга.
00:00 Введение. Архитектура RISC-V, открытая и расширяемая (sigh).
05:38 Стадии конвейера и интерфейсы.
13:37 Открытые ядра на базе RISC-V, тестовое окружение и проблема верификации
19:14 Компиляторные технологии и LLVM
24:46 Моделирование и верификация RISC-V на разных уровнях и llvm-snippy
29:17 Задача бенчмаркинга и llvm-exegesis
34:24 Проблема высокоуровневого ПО, профили и развитие экосистемы
41:15 Ответы на вопросы
источник
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
Проектируем змейку под учебный RISC-V микроконтроллер
На третьем курсе некоторые направления в МИЭТ проходят лабораторный практикум, на котором им даётся возможность спроектировать собственную систему архитектуры RISC-V и написать под неё программу на С или C++.
В качестве затравки и повышения мотивации, хотелось показать им на что будет способна их процессорная система, и для этого было решено написать какую-нибудь простенькую игру, не требующую особых требований к ресурсам и графике. Так выбор пал на Змейку.
В этой я расскажу о том, как была написана данная игра под платформу, поддерживающую символьный вывод.
https://habr.com/ru/articles/915450/
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
Генерация лабиринтов: алгоритм Эллера
Сегодня я хотел бы рассказать о генерации идеального лабиринта — алгоритмом Эллера. Статья подойдёт всем любителям алгоритмов»
https://habr.com/ru/articles/667576/
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
Этот проект содержит исходный код игр Command & Conquer: Tiberian Dawn и Command & Conquer: Red Alert, выпущенных как часть сборника Command & Conquer Remastered Collection.
Код распространяется под лицензией GPL v3 и предоставляет возможность энтузиастам и разработчикам модифицировать, изучать и использовать движок в рамках условий лицензии. В проекте используется C++ и множество современных практик разработки, а также система сборки CMake.
Репозиторий включает:
* Исходный код движка на C++
* Документацию по сборке
* Скрипты для интеграции с игрой
* Исторический контекст разработки
Проект ориентирован на обучение, поддержку моддинга и развитие сообщества вокруг классических RTS-игр.
https://github.com/electronicarts/CnC_Remastered_Collection
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
🚀 CUTE_HEADERS - Коллекция кроссплатформенных однофайловых библиотек на C/C++ без зависимостей, в основном используемых для разработки игр.
🔹 Математика (векторы, матрицы)
🔹 Системы частиц
🔹 Аудио и таймеры
🔹 Работа с файлами
🔹 Простая физика и коллизии
🔹 Анимация и графика
🔹 И многое другое!
Все библиотеки — в одном .h файле, без зависимостей. Отлично подходят для маленьких проектов, прототипов и учебных задач.
https://github.com/RandyGaul/cute_headers
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
Как отслужить срочку, работая с Геранями, и получить диплом по дуальной системе Алабуга Политех?
Читать полностью…
📦 cpp-sort — это коллекция высокоэффективных алгоритмов сортировки, написанная на C++. Она предоставляет как классические алгоритмы (например, quicksort, mergesort), так и более современные, такие как ska_sort и spreadsort.
🔧 Основные особенности:
- Простое подключение
- Упор на производительность: множество алгоритмов оптимизированы под современные CPU
- Совместимость с std::sort и пользовательскими компараторами
- Некоторые алгоритмы устойчивы (stable), другие — нет (для повышения скорости)
- Поддержка сортировки по ключу (projection)
💡 Если ты работаешь с C++ и тебе нужна кастомная или быстрая сортировка — обязательно стоит взглянуть. Особенно если std::sort не даёт нужного эффекта.
https://github.com/Morwenn/cpp-sort
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
QML и Widgets в одном проекте: решение без костылей
Разработка приложения для настольных или встраиваемых платформ часто упирается в выбор между Qt Widgets и Qt Quick для создания интерфейса. У каждого подхода свои плюсы и минусы. Qt как гибкий фреймворк позволяет комбинировать их разными способами, а выбор способа интеграции этих API зависит от того, чего вы хотите добиться. В этой статье я покажу, как отображать окна Qt Widgets в приложении, написанном преимущественно на Qt Quick.
https://www.kdab.com/display-widget-windows-in-qt-quick-applications/
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
Веселье с type erasure: делаем обертку с семантикой значения для полиморфных типов
Павел Новиков
Цель доклада — познакомить с подноготной базовой реализации type erasure (т.н. «стирание типов») в C++, а также придать уверенности при возможном взаимодействии с подобным кодом.
Используя реализацию обертки с семантикой значения в качестве примера, мы посмотрели на то, как работает type erasure, похожий на std::any.
В отличие от повсеместно используемой семантики указателя или ссылки, в данном случае обертка с семантикой значения позволяет нам обращаться с полиморфными объектами со «стертыми типами» как с обычными значениями: перемещать их, копировать, присваивать новые значения, при этом всей головной болью владения (ownership) и клонирования объекта исходного типа займётся реализация «за кулисами».
источник
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
О векторном вычислении экспоненциальной функции
Однажды передо мной встала задача векторизовать функцию вычисления экспоненты. Неожиданно оказалось, что готового решения не существует. Функции быстрого вычисления экспоненты, использующие векторный код, имеются практически для всех платформ в составе быстрых математических библиотек. Но они, как правило, читают данные из массивов в памяти и возвращают результат обратно в память. А вот такого, чтобы взять данные из регистра и ответ поместить обратно в регистр, не нашлось. Intel, правда, реализовал функцию векторного вычисления экспоненты в своей библиотеке SVML. Microsoft лицензировала эту библиотеку для использования в составе Visual Studio. В этом случае проблем нет. Но если захочется портировать код под GCC, окажется, что SVML в составе стандартных библиотек отсутствует. Пришлось писать свою функцию.
https://habr.com/ru/articles/923234/
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
🛡️ Clang Hardening Cheat Sheet: 10 лет спустя
Ровно 10 лет назад ребята из Quarkslab выпустили свою знаменитую шпаргалку по харденингу (усилению безопасности) бинарников с помощью Clang. За это время ландшафт угроз изменился до неузнаваемости, а сам компилятор обзавёлся мощнейшими механизмами защиты.
Разработчики обновили гайд под современные реалии. Вот ключевые выжимки и новые флаги, которые стоит внедрить в свои CI/CD пайплайны уже сегодня, если вы пишете на C/C++:
1. Безопасность памяти и проверки выходов за границы
• -D_GLIBCXX_ASSERTIONS — включает встроенные проверки в стандартной библиотеке C++ (например, контроль границ при обращении к элементам std::vector или std::string). Минимальный оверхед, огромная польза.
• -fstrict-flex-arrays=3 — ужесточает контроль за размерами гибких массивов в структурах, предотвращая популярные out-of-bounds уязвимости.
• -fstack-clash-protection — защита от атак типа Stack Clash. Компилятор генерирует код, который циклически "прощупывает" стек, не позволяя атакующему перепрыгнуть через защитную страницу (guard page).
2. Защита указателей и контроль потока выполнения (CFI)
Современный Clang делает упор на аппаратные фичи процессоров (особенно актуально для ARM64):
• -mbranch-protection=standard — включает одновременно PAC (Pointer Authentication Code) для подписи адресов возврата и BTI (Branch Target Identification) для предотвращения несанкционированных переходов. Это мощный барьер против ROP/JOP атак.
3. Очистка следов в памяти (Zeroing Registers)
• -fzero-call-used-regs=all-gpr — заставляет компилятор очищать (обнулять) универсальные регистры перед выходом из функции. Это предотвращает утечку конфиденциальных данных (например, криптографических ключей), которые могли остаться в регистрах после вычислений.
4. Ограничения линкера (Linker Flags)
Помимо классических -Wl,-z,relro и -Wl,-z,now, авторы рекомендуют:
• -Wl,-z,nodlopen — запрещает динамическую загрузку библиотеки через dlopen() во время выполнения (если архитектура приложения этого не требует).
• -Wl,-z,noexecstack — строго разграничивает права: стек только для данных, исполнение кода там запрещено.
5. Обновлённый FORTIFY_SOURCE
В современных версиях Clang механизм -D_FORTIFY_SOURCE=3 стал намного умнее благодаря встроенным функциям __builtin_dynamic_object_size. Теперь компилятор умеет проверять размеры буферов (в функциях вроде memcpy, snprintf, strtok) даже в тех случаях, когда размер выделяемой памяти становится известен только на этапе выполнения (runtime).
https://blog.quarkslab.com/clang-hardening-cheat-sheet-ten-years-later.html
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
Dockerизированная toolchain в CLion с Conan
При разработке на C++ часто возникает необходимость воспроизводимой среды для сборки. Особенно если проект разрабатывается командой, где у каждого разработчика разные операционные системы и окружения. Тут на помощь приходит Docker.
Зачем это нужно?
- Единая среда для всех участников команды
- Изоляция от локальной системы
- Упрощение CI/CD
Интеграция с CLion
CLion поддерживает удалённые toolchain, включая Docker-контейнеры. То есть вы можете настроить сборку и отладку прямо в IDE, используя контейнер как основную среду.
Conan + Docker
Conan используется для управления зависимостями. Вместе с Docker это даёт:
- Контролируемую установку зависимостей
- Воспроизводимость билдов
- Возможность легко переключаться между разными окружениями
Краткие шаги настройки:
1. Создайте Docker-образ с нужными компиляторами и инструментами.
2. Настройте Toolchains в CLion, указав Docker как удалённую среду.
3. Подключите Conan для управления зависимостями.
4. Собирайте и отлаживайте проект прямо в контейнере.
Такой подход особенно полезен для кросс-платформенной разработки и больших командных проектов, где важна стабильность окружения.
https://schneide.blog/2025/06/23/dockerized-toolchain-in-clion-with-conan/
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
C++ Std:: string Interface Overview
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
Boehm-Demers-Weiser Garbage Collector (BDWGC)
Это автоматический сборщик мусора для C и C++, также известный как conservative garbage collector. Он может использоваться как полноценная замена malloc, когда нет желания вручную управлять памятью.
Этот сборщик мусора поддерживает многопоточность, работает на многих архитектурах и платформах, и может использоваться как с C, так и с C++ кодом. Основная идея — консервативный подход к сбору мусора: он предполагает, что любое значение, похожее на указатель, действительно может им быть, и не освобождает связанную с ним память.
BDWGC также может использоваться в качестве инструментального средства для отладки утечек памяти. Он широко применяется в проектах, где важна безопасность и стабильность при управлении памятью, но нет желания использовать ручное управление.
https://github.com/ivmai/bdwgc
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
Руководство по сборке Qt под Windows из исходников с MinGW
Официальный способ установки готовых бинарников Qt - через онлайн инсталлятор. Однако он требует обязательной регистрации. Да еще и недоступен на территории РФ. Есть и другие способы получить бинарники, или собрать с компилятором от Microsoft, однако не всегда эти способы приемлемы. Сборка из исходников под Windows может оказаться несколько нетривиальна для новичков, потому сделал небольшую инструкцию по сборке Qt 5 и Qt 6. А так же рассмотрена базовая настройка QT Creator.
https://habr.com/ru/articles/917252/
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
🚀 Подборка полезных 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 лайфхак 📌
/channel/Excel_lifehack Excel лайфхак
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 Питер Новости: Санкт-Петербург / СПБ / ДТП
Логика коэволюции компиляторов, инструментов разработки и языков программирования.
Выступление в институте iSpring 17 мая 2025 года. Огромная благодарность организаторам за приглашение и за разрешение выложить запись на моём канале.
В этой лекции мы поднимемся от самого нижнего уровня -- отдельных транзисторов до высокоуровневых языков программирования и проследим совместное развитие механизмов абстракции и инструментов разработки.
00:00 Начало: бинарные цифровые компьютеры
06:00 Мнемоническое представление и проблемы двоичного кода
14:10 Релокации и изобретение линкера
17:25 Язык ассемблера, секции и ассемблер как программа
24:30 Дизассемблер.
30:25 ABI и соглашения о вызове
35:35 Библиотеки
40:55 Проблемы ассемблера
48:10 Алгоритмические языки и компиляторы
54:45 Компилятор и его ограничения
01:03:40 Оптимизации в бэкенеде: inline и LTO
01:15:00 Гарантии по именам и механизмы абстракции
01:19:55 Завершение: абстракции не случайны
источник
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
ggwave — это компактная и переносимая библиотека C/C++ для передачи и приема коротких сообщений с использованием звуковых волн.
Она позволяет устройствам обмениваться данными через звук — без необходимости в Bluetooth, Wi-Fi или других беспроводных технологиях. Это особенно полезно для коротких одноразовых взаимодействий между устройствами, которые находятся рядом друг с другом.
Поддерживает:
* Передачу текста через звук
* Возможность генерации и анализа аудиосигналов в реальном времени
* Кроссплатформенность: работает на Windows, macOS, Linux, iOS, Android и в браузере (через WebAssembly)
Примеры использования:
* Аутентификация устройств поблизости
* Обмен контактами или ссылками
* Синхронизация устройств без интернета
https://github.com/ggerganov/ggwave
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
🔮 Асинхронный код часто воспринимается как магия: функции работают, задачи выполняются, но при сбоях или оптимизации становится непонятно, как всё устроено. Без этого сложно писать предсказуемые и эффективные решения.
❗️ На открытом уроке разберём, как Rust представляет асинхронные задачи, как компилятор преобразует async-функции и что происходит во время выполнения. Покажем, как описывать собственные асинхронные задачи и контролировать их поведение.
👣 Урок проходит в преддверии старта курса «Rust-разработчик. Продвинутый уровень». Если вы хотите понимать асинхронность на уровне реализации, а не только использовать её — подключайтесь.
➡️ Встречаемся 19 мая в 20:00 МСК. Подробности и регистрация: https://vk.cc/cXO63U
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
⚔️ Линус Торвальдс против C++: Почему ядро Linux остается на C?
Почему Линус Торвальдс категорически запрещает C++ в ядре Linux. Казалось бы, C++ - это "C на стероидах", но для разработки ядра эти стероиды - яд.
Разбираем основные аргументы Линуса (и почему они имеют смысл в context of kernel development).
1. Исключения (Exceptions) - зло для ядра
В C мы проверяем коды возврата. В C++ исключение может вылететь откуда угодно.
🩷Проблема: Недетерминированность. Для ядра с 30 млн строк кода это ад отладки.
🩷Риск: Если МРТ-сканер или система управления полетами "выбросит исключение" и упадет, последствия будут фатальными. Ядро требует полного контроля над потоком выполнения.
2. Скрытое управление памятью (RAII)
Линус считает, что компилятор не должен делать ничего "за спиной" программиста.
🩷Проблема: Конструкторы, деструкторы и неявные аллокации.
🩷Аргумент: В ядре управление памятью должно быть ручным и прозрачным. Зависимость от магии компилятора снижает производительность и стабильность.
3. "Жирная" объектная модель
Нужно ООП? Его можно сделать и на C. Линус утверждает, что C++ тянет за собой переусложненные иерархии и абстракции, которые потом невозможно рефакторить.
🩷Цитата: "Ограничение проекта языком C означает, что люди не смогут его испортить... идиотской чушью 'объектной модели'".
💡 Как выглядит ООП в стиле Linux (на чистом C):
Вместо классов - структуры и указатели на функции. Это дает полиморфизм без оверхеда C++.
typedef struct {
int value;
// V-table на минималках: указатель на функцию
void (*increment)(struct Person *self);
} Person;
void increment_person(Person *self) {
self->value++;
}
int main() {
Person *p = (Person*)malloc(sizeof(Person));
p->value = 5;
p->increment = increment_person; // Привязка метода
p->increment(p); // Вызов: 6
free(p);
}
Отказ от C++ - это выбор между эргономикой разработчика и стабильностью системы. Для User-space приложений C++ прекрасен. Но для ядра, от которого зависит работа миллиардов устройств (от тостеров до спутников), консерватизм C - единственно верный путь.
Практика языка C (МФТИ, 2023-2024). Допсеминар: системы сборки (make, cmake).
00:00 Зависимости и хедера
08:22 Build.sh
11:48 Makefiles и декларативная модель
19:51 Ленивые и переменные
30:52 Автоматические переменные
36:15 Первая версия makefile
41:33 Функции и wildcards
47:40 Вторая версия makefile и зависимости от хедеров
56:36 Третья итерация: почти идеальный makefile
01:06:26 Знакомство с cmake
01:19:35 Бонус. Немного больше про cmake.
01:30:40 Окончательные уроки.
источник
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
Пишем игру для NES на C
Всем привет. Я Даг. Добро пожаловать в мой учебник - Как запрограммировать игру NES на C. Вы можете сделать оригинальную игру Nintendo, которая будет играть на настоящей консоли NES (или эмуляторе).
Давайте поговорим о NES.
Выпущена в Японии (Famicom) в 1983 году, в США — в 1985 году.
Процессор — Ricoh 2A03, 1.79 МГц, клон 6502 (без десятичного режима) со звуковой схемой. Чип 6502 был очень популярен в то время и использовался, например, в Apple II и Atari 2600.
https://nesdoug.com/
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
Практика языка C.
Константин Владимиров.
На этом занятии мы завершим первый семестр знакомства с основами языка C и разберём многомодульные программы и структуры данных.
00:00 Хеш-таблицы.
15:10 Алгоритм Рабина-Карпа.
22:30 Range-based queries и снова о деревьях.
29:42 Многомодульные программы.
36:30 Структуры данных.
42:40 Литература и задачи.
44:45 Демонстрация многомодульных программ.
источник
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
🚀 Подборка полезных 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 и др.
1C разработка 📌
https://max.ru/odin1c_rus Cтатьи, курсы, советы, шаблоны кода 1С
Программирование C++📌
https://max.ru/cpp_lib Библиотека C/C++ разработчика
Программирование 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 Свежие новости Москвы
Преобразование JSON в объекты C++ на этапе компиляции: демонстрация возможностей принятой в C++26 рефлексии
https://brevzin.github.io/c++/2025/06/26/json-reflection/
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib