Библиотека C/C++ разработчика
7.22K subscribers
688 photos
720 videos
8 files
986 links
Полезные материалы по всему, что может быть полезно плюсовику/сишнику. По всем вопросам @evgenycarter
Download Telegram
💻 Курс “Программист на C” от OTUS — старт набора

Освойте один из самых мощных и востребованных языков системного программирования.

Почему стоит пойти:
• Глубокое погружение: синтаксис C, архитектура процессора, работа с памятью, ассемблер, структуры данных
• Реальные задачи уровня Middle для прокачки навыков
• Карьерные перспективы: база резюме OTUS и карьерные мероприятия

💡Кому подойдёт:

• Разработчикам, углубляющим знания C
• Специалистам по интеграции библиотек на C
• Тем, кто хочет в IoT и программирование микроконтроллеров

После курса вы сможете:

• Создавать быстрые и оптимизированные приложения
•Понимать архитектуру процессора и работу с памятью
• Работать с системным программированием и оптимизацией

👉 Запишитесь сейчас, пройдите вступительное тестирование и получите спеццену: https://vk.cc/cOLedH
❤‍🔥1
Оптимизация GUI на Qt

Как правило, при создании desktop-приложений на платформе Qt не возникает проблем, связанных с медленностью работы GUI. Qt – платформа достаточно надежная, неплохо вылизанная по всем параметрам, в том числе и по скорости работы. Однако всё же иногда бывают ситуации, когда из-за обилия виджетов графический интерфейс немного притормаживает, и это печально). В этой статье я приведу один частный пример простого графического интерфейса и покажу, как за два шага можно сначала ускорить его в 11 раз, а потом и в целых 34 раза. Вдобавок к этому, я постараюсь немного осветить механизм принятия решения для таких оптимизационных задач, постараюсь показать направление мыслей для правильного решения. Поехали!

https://habr.com/ru/post/672962/

#cpp #programming

👉 @cpp_lib
🔥8👍52
MemorySanitizer (MSAN), когда он нужен и как внедрять

По разным оценкам, до 10% уязвимостей в коде на C и C++ являются следствием использования неинициализированной памяти (источники: 1, 2). Задача MemorySanitizer (далее, MSAN) - выявлять использование неинициализированной памяти в коде, то есть мусора, например в блоке кода типа if (uninit_var) {...}. Кроме уязвимостей, неинициализированная память даёт о себе знать при портировании приложения на другую платформу, смене компилятора (или поднятии версии используемого), изменении уровня оптимизации или изменении кода таким образом, что то, что раньше "случайно" инициализировалось нулями, стало инициализироваться мусором.

MSAN не является статическим анализатором, то есть для его работы требуется выполнение кода (нужны тесты/fuzzing/реальная нагрузка). Прежде чем переходить к самому MSAN, сначала разберемся почему недостаточно (или достаточно?) статического анализа, ведь даже компиляторы умеют предупреждать об использовании неинициализированных данных.

https://habr.com/ru/articles/937934/

#cpp #programming

👉 @cpp_lib
👍73
🚀Хотите начать карьеру в IT и овладеть одним из самых мощных языков программирования? Начните путь разработчика с C++ уже сейчас!

📅 Старт обучения — 30 сентября

Курс «C++ Developer. Basic» создан для тех, кто хочет освоить программирование с нуля и сделать уверенный шаг в сторону профессии. Вы изучите основы C++, заложите фундамент для дальнейшего развития и научитесь создавать собственные программы, решающие реальные задачи.

Обучение в OTUS — это поддержка преподавателей, практические задания и подготовка к первым собеседованиям. После курса вы сможете развиваться как C++ разработчик или перейти на другие языки ООП.

⌛️Не откладывайте старт! Место в группе можно занять уже сейчас: https://vk.cc/cOO9zC

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Как в 19 лет я начал путь разработчика встраиваемого ПО

Привет! Меня зовут Данила, мне 21 год, и за последние 2,5 года я успел поработать в роли разработчика программного обеспечения для встраиваемых систем — в основном на базе STM32. В этой статье я хочу поделиться тем, как я вообще пришёл в эту сферу, с чего начинал, какие грабли собрал и какие выводы сделал по пути.

https://habr.com/ru/articles/922322/

#cpp #programming

👉 @cpp_lib
👍71
about:cloud – infrastructure: серия встреч об инфраструктурных сервисах Yandex Cloud

Митап впервые пройдёт в Санкт-Петербурге, Новосибирске, Екатеринбурге и Москве. Это встреча, где разработчики делятся практическими кейсами, рассказывают о том, как создаются инфраструктурные и сетевые сервисы Yandex Cloud, и обсуждают реальные технические вызовы в инфраструктуре.

About:cloud – infrastructure объединяет разработчиков, архитекторов и сетевых инженеров — тех, кто ежедневно работает с облаками и строит их основу. В программе — доклады от разработчиков Yandex Cloud и Yandex Infrastructure, обсуждения архитектурных решений, обмен опытом с коллегами и советы, которые пригодятся в работе над сложными системами.

Программа на митапах разная, смотрите на сайте:

— 28.08 — Санкт-Петербург (офлайн) → Сайт и регистрация
— 04.09 — Новосибирск (офлайн) → Сайт и регистрация
— 11.09 — Екатеринбург (офлайн) → Сайт и регистрация
— 16.10 — Москва (офлайн + онлайн) → Сайт и регистрация

Забронируйте место на сайте, чтобы не пропустить событие в своём городе.
2
Портирование фреймворка ROOT на архитектуру e2k

Современная наука невозможна без компьютерных вычислений — от обработки результатов измерений до моделирования процессов. Одним из наиболее широко используемых инструментов для вычислений в ядерной физике и физике высоких энергий является фреймворк ROOT, разрабатываемый в CERN.

Собственная архитектура e2k с очень длинной машинной командой VLIW не позволяет отечественным процессорам Эльбрус без портирования нативно запускать программное обеспечение, в том числе и ROOT.

В статье рассмотрим "айсберг" проблем, с которыми пришлось столкнуться в ходе портирования ROOT, а также сферу и примеры его применения.

https://habr.com/ru/companies/nic_ct/articles/921676/

#cpp #programming

👉 @cpp_lib
👍32
Constexpr Game of Life

С чего все началось
В C++ уже больше 10 лет существует constexpr, который позволяет программисту ушло возложить часть вычислений на компилятор. В свое время это взорвало мне мозг, ведь компилятор может посчитать какие-то достаточно сложные вещи еще до запуска программы!

В какой-то момент я подумал: если компилятор сможет сам посчитать все за тебя, то зачем тогда тебе вообще рантайм? Что ты там будешь делать — ответ выводить что ли? Глупости какие-то. Это неспортивно.

На этом моменте и зародился мой челлендж:

"Без рук" или "даже не думай запускать exe-файл"


https://habr.com/ru/articles/860150/

#cpp #programming

👉 @cpp_lib
4👍1
Ваши .NET проекты превратились в спагетти-код — пора перейти к Clean Architecture

Пока одни разработчики продолжают страдать с legacy-кодом, другие применяют Clean Architecture и создают гибкие, тестируемые приложения. Виктор Дзицкий покажет эволюционный путь от классической многослойной архитектуры к современным принципам проектирования.

Вебинар «От N-Layer к Clean Architecture: эволюция проектирования .NET приложений» в рамках курса «C# Developer. Professional»

→ 27 августа, 20:00

Программа:

→ Сравнение подходов: классическая N-Layer vs современная Clean Architecture
→ Принцип инверсии зависимостей (DIP) и Dependency Injection как основа трансформации
→ Практическая демонстрация: как реорганизовать N-Layer проект в Clean Architecture
→ Достижение независимости бизнес-логики от инфраструктуры

Бесплатная регистрация — превратите хаос в порядок: https://vk.cc/cOTrVt

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
При каких условиях ReadFile или WriteFile могут не передать все байты, и как это обнаружить?

Один из клиентов хотел понять, в каких случаях функции ReadFile и WriteFile могут не передать все байты, и как определить, что это произошло.

Очевидная причина, по которой ReadFile может не прочитать все байты, - это то, что просто нет такого количества данных для чтения.

- Для файлов на диске это обычно происходит, если попытаться читать за концом файла.
- То же может случиться и с другими типами дескрипторов: для pipe в неблокирующем режиме в пайпе может не оказаться достаточного количества данных.
- Если это message pipe, сообщение может быть меньше, чем размер вашего буфера.
- Или при обращении к устройству - оно может не иметь всех байтов в наличии.

Аналогично, очевидная причина, по которой WriteFile может не записать все байты, — это нехватка места.

- Для файлов на диске это может быть полный диск или достижение лимита квоты.
- Для pipe в неблокирующем режиме запись может быть укорочена, если в буфере пайпа недостаточно места, чтобы принять все запрошенные данные.

Во всех таких случаях укороченную запись можно обнаружить, проверив, меньше ли число реально записанных байт по сравнению с запрошенным.

Если количество реально переданных байт больше нуля, то функции ReadFile и WriteFile вернут успех, но при этом передадут меньше байт, чем было запрошено.

#cpp #programming

👉 @cpp_lib
4👍3
Ранг-селект словари

Это первая статья из планируемой серии про succinct data structures - класс наиболее компактных структур данных. Канонический пример такой структуры - это представление дерева в виде правильной скобочной последовательности, дерево изnвершин таким образом представляется с помощью2nбит в то время как типичная динамическая реализация требовала бы как два указателя по 64-бит на каждый узел (разумеется можно немного сократить простыми оптимизациями, но даже близко 2 бита не получить). Фундамент подобных структур - это rank-select словарь, представляющий собой битовый вектор и дополнительную структуру для выполнению двух операций ранг и селект. В указанном примере с деревом с помощью ранга и селекта можно сделать базовую навигацию: найти номера потомков/родителей, узнать размер поддерева. В статье расскажу как делать эти операции быстро используя при этом всего 3,6% дополнительной памяти.

https://habr.com/ru/articles/939614/

#cpp #programming

👉 @cpp_lib
3👍3
🚀Хотите повысить свою квалификацию в C++?

На курсе «C++ Developer. Professional» вы изучите паттерны проектирования и современные стандарты C++20/23, научитесь решать самые сложные задачи оптимизации и многопоточности.

Этот курс поможет вам освоить кроссплатформенную разработку, работать с большими объемами данных и интегрировать C++ с Python и Java. Вы также научитесь работать с памятью и делать код максимально эффективным.

🔥Старт совсем скоро! Пройдите короткое вступительное тестирование прямо сейчас и получите скидку на обучение: https://vk.cc/cOTIUW

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
👎1
This media is not supported in your browser
VIEW IN TELEGRAM
FTXUI

Простая кроссплатформенная библиотека C++ для пользовательских интерфейсов на базе терминала!

• Функциональный стиль
• Простой и элегантный синтаксис
• Создаваемые консольные UI поддерживают навигацию с помощью клавиатуры и мыши
• Поддержка UTF8
• Поддержка анимации
• Поддержка рисования
• Нет зависимостей
• Кроссплатформенность: Linux/MacOS, WebAssembly, Windows


https://github.com/ArthurSonzogni/FTXUI

#cpp #programming

👉 @cpp_lib
1👍112
Media is too big
VIEW IN TELEGRAM
Константин Владимиров — О денотации: разрешение имен и его пересмотр в C++23

Этот доклад — попытка сделать темную и мрачную область разрешения имен в C++ простой и ясной для практикующего программиста.

источник

#cpp #programming

👉 @cpp_lib
🔥5
Media is too big
VIEW IN TELEGRAM
Плывущий экран. Вирус на C++. Melting Screen

Программа предоставлена в образовательных целях! Автор не несёт ответственности за её использование!
В этом видео вы узнаете как написать вирус на с++ который заставляет экран сыпаться и плыть.

источник

#cpp #programming

👉 @cpp_lib
👍6😁2🔥1🕊1
🚀 Начинаете путь в C++ или хотите разобраться в основах надежной разработки? Приглашаем на открытый вебинар:

«Обработка ошибок в C++: исключения, ожидания и исключения из правил»

📅 28 августа в 19:00 (МСК)

Чем сложнее становится приложение, тем важнее правильно обрабатывать ошибки. На вебинаре от курса «C++ Developer. Basic» вы разберётесь, какие подходы существуют в C++ и когда стоит применять каждый из них:

- Классические коды ошибок - плюсы и минусы
- Современные инструменты: std::error_code, std::optional, std::variant, std::expected
- std::exception - особенности и паттерны использования

📌 Вебинар подойдёт начинающим C++ разработчикам, а также тем, кто хочет обновить или систематизировать знания.
По итогу вы получите рекомендации по выбору подхода к обработке ошибок в зависимости от проекта.

Начните разбираться в языке правильно - с опытом и поддержкой OTUS.

📲 Успейте зарегистрироваться - количество мест ограничено: https://vk.cc/cOTMPH

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
11👍1👎1
This media is not supported in your browser
VIEW IN TELEGRAM
🐦 Flappy Bird на Си: Вес APK < 100 Килобайт! 🚀

В сентябре 2024 года, увидев Flappy Bird на C# в дискорд-канале Raylib, я решил попробовать реализовать эту игру на Си для Android с весом APK менее 100 КБ. 🚀

Идея казалась безумной, но спортивный интерес взял верх. 💪

https://github.com/VadimBoev/FlappyBird

#cpp #programming

👉 @cpp_lib
👍17🔥4❤‍🔥1
Преобразование JSON в объекты C++ на этапе компиляции: демонстрация возможностей принятой в C++26 рефлексии

https://brevzin.github.io/c++/2025/06/26/json-reflection/

#cpp #programming

👉 @cpp_lib
🔥9❤‍🔥1