Как в 19 лет я начал путь разработчика встраиваемого ПО
Привет! Меня зовут Данила, мне 21 год, и за последние 2,5 года я успел поработать в роли разработчика программного обеспечения для встраиваемых систем — в основном на базе STM32. В этой статье я хочу поделиться тем, как я вообще пришёл в эту сферу, с чего начинал, какие грабли собрал и какие выводы сделал по пути.
https://habr.com/ru/articles/922322/
#cpp #programming
👉 @cpp_lib
Привет! Меня зовут Данила, мне 21 год, и за последние 2,5 года я успел поработать в роли разработчика программного обеспечения для встраиваемых систем — в основном на базе STM32. В этой статье я хочу поделиться тем, как я вообще пришёл в эту сферу, с чего начинал, какие грабли собрал и какие выводы сделал по пути.
https://habr.com/ru/articles/922322/
#cpp #programming
👉 @cpp_lib
👍7❤1
about:cloud – infrastructure: серия встреч об инфраструктурных сервисах Yandex Cloud
Митап впервые пройдёт в Санкт-Петербурге, Новосибирске, Екатеринбурге и Москве. Это встреча, где разработчики делятся практическими кейсами, рассказывают о том, как создаются инфраструктурные и сетевые сервисы Yandex Cloud, и обсуждают реальные технические вызовы в инфраструктуре.
About:cloud – infrastructure объединяет разработчиков, архитекторов и сетевых инженеров — тех, кто ежедневно работает с облаками и строит их основу. В программе — доклады от разработчиков Yandex Cloud и Yandex Infrastructure, обсуждения архитектурных решений, обмен опытом с коллегами и советы, которые пригодятся в работе над сложными системами.
Программа на митапах разная, смотрите на сайте:
— 28.08 — Санкт-Петербург (офлайн) → Сайт и регистрация
— 04.09 — Новосибирск (офлайн) → Сайт и регистрация
— 11.09 — Екатеринбург (офлайн) → Сайт и регистрация
— 16.10 — Москва (офлайн + онлайн) → Сайт и регистрация
Забронируйте место на сайте, чтобы не пропустить событие в своём городе.
Митап впервые пройдёт в Санкт-Петербурге, Новосибирске, Екатеринбурге и Москве. Это встреча, где разработчики делятся практическими кейсами, рассказывают о том, как создаются инфраструктурные и сетевые сервисы 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
Современная наука невозможна без компьютерных вычислений — от обработки результатов измерений до моделирования процессов. Одним из наиболее широко используемых инструментов для вычислений в ядерной физике и физике высоких энергий является фреймворк ROOT, разрабатываемый в CERN.
Собственная архитектура e2k с очень длинной машинной командой VLIW не позволяет отечественным процессорам Эльбрус без портирования нативно запускать программное обеспечение, в том числе и ROOT.
В статье рассмотрим "айсберг" проблем, с которыми пришлось столкнуться в ходе портирования ROOT, а также сферу и примеры его применения.
https://habr.com/ru/companies/nic_ct/articles/921676/
#cpp #programming
👉 @cpp_lib
👍3❤2
Constexpr Game of Life
С чего все началось
В C++ уже больше 10 лет существует constexpr, который позволяет программисту ушло возложить часть вычислений на компилятор. В свое время это взорвало мне мозг, ведь компилятор может посчитать какие-то достаточно сложные вещи еще до запуска программы!
В какой-то момент я подумал: если компилятор сможет сам посчитать все за тебя, то зачем тогда тебе вообще рантайм? Что ты там будешь делать — ответ выводить что ли? Глупости какие-то. Это неспортивно.
На этом моменте и зародился мой челлендж:
https://habr.com/ru/articles/860150/
#cpp #programming
👉 @cpp_lib
С чего все началось
В 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
Пока одни разработчики продолжают страдать с 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
Один из клиентов хотел понять, в каких случаях функции 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
Это первая статья из планируемой серии про 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
На курсе «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
Простая кроссплатформенная библиотека C++ для пользовательских интерфейсов на базе терминала!
• Функциональный стиль
• Простой и элегантный синтаксис
• Создаваемые консольные UI поддерживают навигацию с помощью клавиатуры и мыши
• Поддержка UTF8
• Поддержка анимации
• Поддержка рисования
• Нет зависимостей
• Кроссплатформенность: Linux/MacOS, WebAssembly, Windows
https://github.com/ArthurSonzogni/FTXUI
#cpp #programming
👉 @cpp_lib
1👍11❤2
Media is too big
VIEW IN TELEGRAM
Константин Владимиров — О денотации: разрешение имен и его пересмотр в C++23
Этот доклад — попытка сделать темную и мрачную область разрешения имен в C++ простой и ясной для практикующего программиста.
источник
#cpp #programming
👉 @cpp_lib
Этот доклад — попытка сделать темную и мрачную область разрешения имен в C++ простой и ясной для практикующего программиста.
источник
#cpp #programming
👉 @cpp_lib
🔥5
Media is too big
VIEW IN TELEGRAM
Плывущий экран. Вирус на C++. Melting Screen
Программа предоставлена в образовательных целях! Автор не несёт ответственности за её использование!
В этом видео вы узнаете как написать вирус на с++ который заставляет экран сыпаться и плыть.
источник
#cpp #programming
👉 @cpp_lib
Программа предоставлена в образовательных целях! Автор не несёт ответственности за её использование!
В этом видео вы узнаете как написать вирус на с++ который заставляет экран сыпаться и плыть.
источник
#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
«Обработка ошибок в 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
1❤1👍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
В сентябре 2024 года, увидев Flappy Bird на C# в дискорд-канале Raylib, я решил попробовать реализовать эту игру на Си для Android с весом APK менее 100 КБ. 🚀
Идея казалась безумной, но спортивный интерес взял верх. 💪
https://github.com/VadimBoev/FlappyBird
#cpp #programming
👉 @cpp_lib
👍16🔥4❤🔥1
Преобразование JSON в объекты C++ на этапе компиляции: демонстрация возможностей принятой в C++26 рефлексии
https://brevzin.github.io/c++/2025/06/26/json-reflection/
#cpp #programming
👉 @cpp_lib
https://brevzin.github.io/c++/2025/06/26/json-reflection/
#cpp #programming
👉 @cpp_lib
Barry’s C++ Blog
Reflecting JSON into C++ Objects
Last week, C++26 was finalized in Sofia, Bulgaria — and C++26 will include all of the reflection papers that we were pushing for:
🔥9❤🔥1
📂 Ввод-вывод в C: от fopen до системных вызовов
📅 4 сентября | 20:00 мск | бесплатно
На вебинаре разберём:
📜 Стандартные функции C: fopen, fread, fwrite, printf, scanf
⚡️ Буферизацию и почему fflush() не всегда срабатывает
🛠 Системные вызовы: read, write, open vs стандартная библиотека
🚫 Как избежать типичных ошибок при работе с файлами и потоками
Полезно для:
💡 Junior-разработчиков и тех, кто хочет глубже понять подсистему I/O в C и ОС
👉 Регистрируйтесь:
https://vk.cc/cP0uB3
Занятие приурочено к старту курса "Программист С", обучение на котором позволит не только глубоко погрузиться в возможности языка С, но и изучить низкоуровневые особенности устройства UNIX-совместимых ОС и ОС семейства Windows
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
📅 4 сентября | 20:00 мск | бесплатно
На вебинаре разберём:
📜 Стандартные функции C: fopen, fread, fwrite, printf, scanf
⚡️ Буферизацию и почему fflush() не всегда срабатывает
🛠 Системные вызовы: read, write, open vs стандартная библиотека
🚫 Как избежать типичных ошибок при работе с файлами и потоками
Полезно для:
💡 Junior-разработчиков и тех, кто хочет глубже понять подсистему I/O в C и ОС
👉 Регистрируйтесь:
https://vk.cc/cP0uB3
Занятие приурочено к старту курса "Программист С", обучение на котором позволит не только глубоко погрузиться в возможности языка С, но и изучить низкоуровневые особенности устройства UNIX-совместимых ОС и ОС семейства Windows
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
❤🔥2❤1
InputParser — это библиотека на C++ для парсинга командной строки, разработанная Джан Луисом Боливаром Дианой. Она позволяет легко добавлять и обрабатывать опции командной строки в приложениях на C++. Для использования необходимо создать объект
https://github.com/gianluisdiana/InputParser
#cpp #programming
👉 @cpp_lib
Parser
, добавить необходимые опции с помощью метода addOption
, а затем вызвать метод parse
для обработки аргументов. Библиотека требует компилятора с поддержкой стандарта C++23 и распространяется по лицензии MIT. https://github.com/gianluisdiana/InputParser
#cpp #programming
👉 @cpp_lib
GitHub
GitHub - gianluisdiana/InputParser: C++ command line parser
C++ command line parser. Contribute to gianluisdiana/InputParser development by creating an account on GitHub.
❤3👍1
Тренировки Яндекса по алгоритмам: от решения задач к карьере в IT
Вас ждет 4 недели практики, чтобы систематизировать знания и научиться решать задачи, которые встречаются на собеседованиях и в реальной работе.
Программа включает восемь ключевых тем: множества, словари, динамическое программирование и не только. Лекции и разборы будет вести Михаил Густокашин — директор Центра студенческих олимпиад ВШЭ и тренер чемпионов мира по программированию.
Топ-300 участников смогут пропустить контест при отборе на стажировку в Яндекс по направлениям бэкенд, фронтенд, мобилка и пройти пробное техническое собеседование. А еще лидеры рейтинга смогут получить персональные карьерные консультации.
Подать заявку можно до 29 сентября.
Вас ждет 4 недели практики, чтобы систематизировать знания и научиться решать задачи, которые встречаются на собеседованиях и в реальной работе.
Программа включает восемь ключевых тем: множества, словари, динамическое программирование и не только. Лекции и разборы будет вести Михаил Густокашин — директор Центра студенческих олимпиад ВШЭ и тренер чемпионов мира по программированию.
Топ-300 участников смогут пропустить контест при отборе на стажировку в Яндекс по направлениям бэкенд, фронтенд, мобилка и пройти пробное техническое собеседование. А еще лидеры рейтинга смогут получить персональные карьерные консультации.
Подать заявку можно до 29 сентября.
❤3
Библиотека Asio для начинающих: работаем с корутинами без сегфолтов
Когда я начал работать с Asio и изучал документацию библиотеки, прочитал мнение, что доку писали «для роботов». Описание каждого концепта, функции или особенности приводится лишь однажды, без перекрестных ссылок и других удобных для разработчика деталей. Документация составлена так, что понять ее может разве что машина, «просканировав» текст целиком.
Я подумал, что было бы здорово написать статью, которая служила бы введением в библиотеку. Статью, которая помогла бы начать пользоваться Asio, даже если раньше вы с ней не работали. Что получилось, читайте в статье.
https://habr.com/ru/companies/yadro/articles/939174/
#cpp #programming
👉 @cpp_lib
Когда я начал работать с Asio и изучал документацию библиотеки, прочитал мнение, что доку писали «для роботов». Описание каждого концепта, функции или особенности приводится лишь однажды, без перекрестных ссылок и других удобных для разработчика деталей. Документация составлена так, что понять ее может разве что машина, «просканировав» текст целиком.
Я подумал, что было бы здорово написать статью, которая служила бы введением в библиотеку. Статью, которая помогла бы начать пользоваться Asio, даже если раньше вы с ней не работали. Что получилось, читайте в статье.
https://habr.com/ru/companies/yadro/articles/939174/
#cpp #programming
👉 @cpp_lib
👍6❤4