Больше функциональности в C++23
Björn Fahller
Функции высшего порядка - функции, принимающие функции на вход или возвращающие функции, - полезны для того, чтобы сделать ваш код более композиционным и выразительным. Развитие стандартной библиотеки с помощью диапазонов, std::expected и последних расширений std::optional делает использование функций высшего порядка гораздо более желательным. В то же время развитие основного языка сделало их гораздо проще в написании.
Я покажу вам приемы, позволяющие повысить выразительность вашего кода
не жертвуя производительностью, и продемонстрирую, как некоторые из недавних
дополнений к языку и библиотеке улучшают работу разработчика.
источник
#cpp #programming
👉 @cpp_lib
Подборка Telegram каналов для программистов
Системное администрирование 📌
/channel/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
/channel/sysadminof Книги для админов, полезные материалы
/channel/i_odmin Все для системного администратора
/channel/i_odmin_book Библиотека Системного Администратора
/channel/i_odmin_chat Чат системных администраторов
/channel/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
/channel/sysadminoff Новости Линукс Linux
/channel/tikon_1 Новости высоких технологий, науки и техники💡
/channel/mir_teh Мир технологий (Technology World)
/channel/rust_lib Полезный контент по программированию на Rust
/channel/golang_lib Библиотека Go (Golang) разработчика
/channel/itmozg Программисты, дизайнеры, новости из мира IT.
/channel/phis_mat Обучающие видео, книги по Физике и Математике
/channel/php_lib Библиотека PHP программиста 👨🏼💻👩💻
/channel/nodejs_lib Подборки по Node js и все что с ним связано
/channel/ruby_lib Библиотека Ruby программиста
1C разработка 📌
/channel/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
Программирование C++📌
/channel/cpp_lib Библиотека C/C++ разработчика
/channel/cpp_knigi Книги для программистов C/C++
/channel/cpp_geek Учим C/C++ на примерах
Программирование Python 📌
/channel/pythonofff Python академия. Учи Python быстро и легко🐍
/channel/BookPython Библиотека Python разработчика
/channel/python_real Python подборки на русском и английском
/channel/python_360 Книги по Python Rus
Java разработка 📌
/channel/BookJava Библиотека Java разработчика
/channel/java_360 Книги по Java Rus
/channel/java_geek Учим Java на примерах
GitHub Сообщество 📌
/channel/Githublib Интересное из GitHub
Базы данных (Data Base) 📌
/channel/database_info Все про базы данных
Мобильная разработка: iOS, Android 📌
/channel/developer_mobila Мобильная разработка
/channel/kotlin_lib Подборки полезного материала по Kotlin
Фронтенд разработка 📌
/channel/frontend_1 Подборки для frontend разработчиков
/channel/frontend_sovet Frontend советы, примеры и практика!
/channel/React_lib Подборки по React js и все что с ним связано
Разработка игр 📌
/channel/game_devv Все о разработке игр
Вакансии 📌
/channel/sysadmin_rabota Системный Администратор
/channel/progjob Вакансии в IT
Чат программистов📌
/channel/developers_ru
Библиотеки 📌
/channel/book_for_dev Книги для программистов Rus
/channel/programmist_of Книги по программированию
/channel/proglb Библиотека программиста
/channel/bfbook Книги для программистов
/channel/books_reserv Книги для программистов
БигДата, машинное обучение 📌
/channel/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning
Программирование 📌
/channel/bookflow Лекции, видеоуроки, доклады с IT конференций
/channel/coddy_academy Полезные советы по программированию
QA, тестирование 📌
/channel/testlab_qa Библиотека тестировщика
Шутки программистов 📌
/channel/itumor Шутки программистов
Защита, взлом, безопасность 📌
/channel/thehaking Канал о кибербезопасности
/channel/xakep_1 Статьи из "Хакера"
Книги, статьи для дизайнеров 📌
/channel/ux_web Статьи, книги для дизайнеров
Английский 📌
/channel/UchuEnglish Английский с нуля
Математика 📌
/channel/Pomatematike Канал по математике
Excel лайфхак📌
/channel/Excel_lifehack
CMake Tutorial
1 | Understanding The Basics
2 | Libraries | Installing | Pairing with Executables | RE-DONE!
3 | Git Submodules (adding glfw windowing library example)
4 | Versioning Source Code
5 | Making Libs Optional
6 | Installing Your Software! (part 1/2 of install)
7 | Installing With CPack! (part 2/2 of install)
8 | find_library(...) (part 1/2 of find lib)
9 | find_package modules and config options (2/2 of find libs)
10 | Running CMake on Windows (like linux) (Over-explained)
источник
#cpp #programming
👉 @cpp_lib
Стремление к лучшему коду на C++, часть I: основы анализа потоков данных
В CLion встроен анализатор потока данных, который постоянно работает во время написания кода и помогает улучшить его качество. Он может выявить различные проблемы в коде, которые впоследствии могут привести к проблемам во время выполнения, нарушениям безопасности и другим уязвимостям. Примерами таких полезных проверок являются проверки на наличие постоянных условий, мертвого кода, разыменований нулевых указателей, утечек памяти и проблем с индексами массивов. Мы начинаем серию статей в блоге, в которых расскажем, как некоторые из этих проверок работают в CLion.
https://blog.jetbrains.com/clion/2023/11/striving-for-better-cpp-code-part-i-data-flow-analysis-basics/
#cpp #programming
👉 @cpp_lib
Неклассические контейнеры в C++
Контейнер - это объект, используемый для хранения других объектов. Контейнер берет на себя управление всей памятью, которые эти объекты занимают.
В стандартную библиотеку C++ входит несколько контейнеров. Кроме этого, в Open Source есть несколько контейнеров, которые покрывают больше юзкейсов. Я опишу устройство интересных контейнеров вне STL1 и их отличия от классических контейнеров.
https://habr.com/ru/post/664044/
#cpp #programming
👉 @cpp_lib
[MUC++] Елизавета Шуланкина - Анализ приложений на C++ для оптимизации производительности
Некоторые из нас, вольно или невольно, сталкивались с необходимостью анализа кода для повышения производительности. Конечно, мы прибегали к различным профилировщикам кода, чтобы выяснить, что не так с нашим идеально написанным кодом... И чаще всего профилировщик удивлял нас, указывая на узкое место в коде!
Этот доклад станет введением в оптимизацию производительности приложений на C++ с помощью таких инструментов, как Intel VTune Profiler и Intel Advisor. Мы кратко рассмотрим шаги по оптимизации производительности, затем возьмем небольшое приложение на C++ и попросим VTune и Advisor помочь нам понять, что происходит, каковы узкие места в производительности и как с ними справиться, чтобы сделать наше приложение эффективным с точки зрения памяти и вычислений. Мы проведем несколько итераций настройки этого приложения на C++ и посмотрим, как оно ускорится.
https://www.youtube.com/watch?v=M1D8iez1Ph0
источник
#cpp #programming
👉 @cpp_lib
Modern CMake for C++: Discover a better approach to building, testing and packaging your software
Rafal Swidzinski (2022)
В книге рассказывается о том, как формировать исходные каталоги, а также создавать целевые объекты и пакеты. По мере продвижения вы узнаете, как компилировать и связывать исполняемые файлы и библиотеки, как эти процессы работают в деталях и как оптимизировать все шаги для достижения наилучших результатов. Вы также поймете, как добавить в проект внешние зависимости: сторонние библиотеки, фреймворки тестирования, инструменты анализа программ и генераторы документации. Наконец, вы узнаете, как экспортировать, установить и упаковать ваше решение для внутренних и внешних целей. Прочитав эту книгу, вы сможете уверенно использовать CMake на профессиональном уровне.
👉 @cpp_knigi
🔥 Хардкорный тест для разработчиков, тимлидов и архитекторов!
💻 Ответьте на 11 вопросов и узнайте, достаточно ли у вас знаний, чтобы пройти онлайн-курс «Software Architect».
🏆 Курс поможет прокачать весь арсенал навыков, необходимых архитектору ПО.
👉 Пройти тест - https://vk.cc/ctkmr4
🎓Успешное прохождение теста откроет:
✔️ Лучшие открытые уроки прошлых наборов курса
✔️ Скидку на прохождение онлайн курса «Software Architect»Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
21 фича современного C++, которые вам обязательно пригодятся
Итак, судьба снова свела вас с C++, и вы поражены его возможностями с точки зрения производительности, удобства и выразительности кода. Но вот незадача: вы теряетесь в этом многообразии замечательных новых фич и, как следствие, затрудняетесь сходу определить, что из этого всего вам действительно стоило бы взять на вооружение в своей повседневной работе по написанию кода. Не стоит расстраиваться, в этой статье вашему вниманию будут представлены 21 новая фича современного C++, которые помогут сделать ваш проект лучше, а работу над ним легче.
https://www.vishalchovatiya.com/21-new-features-of-modern-cpp-to-use-in-your-project/
#cpp #programming
👉 @cpp_lib
C++ System Programming Cookbook: Practical recipes for Linux system-level programming using the latest C++ features
Onorato Vaticone (2020)
C++ является хорошим выбором для системного программирования из-за его эффективных низкоуровневых вычислений, абстракции данных и объектно-ориентированных особенностей. Системное программирование - это разработка и написание компьютерных программ, которые тесно взаимодействуют с базовой операционной системой и позволяют компьютерному оборудованию взаимодействовать с программистом и пользователем. Данная книга послужит справочником для разработчиков, которые хотят иметь готовые к использованию решения для основных аспектов системного программирования.
👉 @cpp_knigi
Начните изучение архитектуры ПО с бесплатного открытого урока «Модели взаимодействия или модели хранения данных» от OTUS.
На вебинаре:
- рассмотрим различные типы хранилищ: реляционные базы данных, NoSQL-базы и хранилища файлов;
- узнаем, как выбрать наиболее подходящий тип хранилища для различных сценариев и требований;
- изучим популярные модели CQRS и Event Sourcing.
Занятие пройдёт 20 декабря в 20:00 мск и будет приурочено к старту курса «Software Architect». После урока вы сможете продолжить обучение в рассрочку по специальной цене.
Регистрируйтесь бесплатно прямо сейчас и ставьте событие в календарь, чтобы ничего не пропустить: https://vk.cc/cteZAeРеклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Простая в реализации arena-friendly hash map
https://nullprogram.com/blog/2023/09/30/
#cpp #programming
👉 @cpp_lib
Pure Virtual Cast / С++ - производительность и щепотка безопасности.
https://www.youtube.com/watch?v=kWBu3Yg5fjE
#cpp #programming
👉 @cpp_lib
erid: LjN8JtLX8
🦾Хардкорный тест по языку С🦾
📌Пройдите тест из 20 вопросов и проверьте, насколько вы готовы к обучению на углубленном курсе - «Программист С» от OTUS. Сможете сдать - пройдете на курс по спеццене!
⏰ Время прохождения теста ограничено 30 минут
👉ПРОЙТИ ТЕСТ
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
Классические или плоские ассоциативные контейнеры – что выбрать разработчику на С++?
Разберемся на бесплатном открытом уроке вместе с Андреем Рыжиковым – разработчиком в НИИ обработки аэрокосмических изображений.
На вебинаре:
- вспомним устройство «классических» ассоциативных контейнеров;
- поймем, как выбрать между std::map и std::unordered_map;
- узнаем, как реализованы «плоские» контейнеры из C++23 и когда их стоит предпочесть.
Занятие пройдёт 20 декабря в 20:00 мск в рамках курса «C++ Developer. Professional». После урока вы сможете продолжить обучение в рассрочку.
Для бесплатного участия и получения записи пройдите короткое тестирование прямо сейчас: https://vk.cc/ct614UРеклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Опыт создания UI библиотеки на C++
Началось все почти два года назад в декабрe, наш основной проект (видео мессенджер) использовал WTL для Windows и GTKmm для Linux. Поддержки мака не было. Огромной неприятностью было тащить два идентичных клиента, которые, по идее, должны делать все строго одно и тоже. Разумеется, это никогда не получалось. От мысли что надо бы сделать ещё один нативный клиент для мака начинался нервный тик...
На резонный вопрос - почему сразу делалось не на Qt могу лишь ответить, что это связано с, так скажем, гурманскими предпочтениями и, отчасти, с любовью к монолитным exe. Да и не требовалось на старте ничего кроме винды.
В течение шести лет жизни с двумя кодовыми базами одного и того же, неспешно подбирались легковесные UI библиотеки написанные хотя бы в стиле C++11.
Надо сказать, что мы активно используем boost и всей душой, как можем, его любим...
В 2021 году видимо Гугл работал плохо или звёзды так сошлись, но не нашлось ничего стоящего. Все что попадалось - основанные на рендеринге html проекты и обертка над wxWidgets. Сейчас то мы знаем про lvgl, да... А вообще, тысячи их.
wxWidgets не плох, но хотелось своего рисования, без окошек под кнопки, поля ввода и списки, boost/bsd подобной лицензией, максимально лаконичной, и в идеале работающей от Windows XP / CentOS 6 на стандартном GDI / X11 до Vulkan на современных машинах.
В итоге, все же было принято волевое решение сделать минимальный UI фреймворк для этого проекта, и сразу выпускать его в Open Source под лицензией boost.
https://habr.com/ru/articles/768336/
#cpp #programming
👉 @cpp_lib
Дорожная карта навыков разработчика на C++
В этой статье мы с помощью карты покажем, какие навыки и знания нужны разработчику на C++. Естественно, разбирать путь развития «плюсистов» будем на собственном примере — тем более что у нас в «Лаборатории Касперского» много очень разных проектов с отличающимися задачами. Однако наша карта по большей части универсальна и будет полезна всем, кто хочет развиваться в разработке на C++.
https://habr.com/ru/specials/726724/
#cpp #programming
👉 @cpp_lib
Стремление к лучшему коду на C++, часть II: краткие описания функций для ускорения анализа потока данных
В CLion 2023.3, которая сейчас находится в стадии Early Preview, мы полностью переработали DFA CLion, чтобы сделать анализ более быстрым и точным. Мы реализовали подход, называемый суммированием функций, который позволил нам различать различные контексты функций для произвольных вложенных цепочек вызовов, что привело к более точному анализу. Давайте посмотрим, как это было сделано.
https://blog.jetbrains.com/clion/2023/12/striving-for-better-cpp-code-part-ii-function-summaries-to-speed-up-the-data-flow-analysis/
#cpp #programming
👉 @cpp_lib
Привет всем любителям побрейнштормить и хорошенько развлечься! Команда PVS-Studio на связи 😎.
Новый крутой квиз с интересными вопросами из мира программирования уже у нас на сайте. Да не простой квиз, а задачки от Сергея Кушниренко — разработчика игр в 4A Games!
Попробуйте найти ошибки в C++ коде и проверить свою внимательность и знание языка . Предупреждаем: ошибки не такие уж и простые! В этом квизе вы найдете 18 фрагментов кода. В каждом фрагменте спряталась ошибка. Готовы испытать свои силы? 💪
Ссылка на квиз :)
Реклама. ООО "ПВС". ИНН 7105502635.
The Design and Evolution of C++
Бьерн Страуструп (2016)
Эту книгу стоит прочесть каждому, кого интересует вопрос создания с нуля языков программирования. Создатель одного из самых популярных языков программирования, Бьёрн Страуструп, расскажет о процессе проектирования и создания С++. Рассмотрены не только основы и принципы, заложенные в С++, но и дизайн современных средств языка: шаблоны, исключения, пространства имён и прочее. Также автор продемонстрирует правильное применение объектно-ориентированных языков.
В книге рассматриваются следующие темы:
✔️ предыстория С++;
✔️ язык С с классами;
✔️ цели С++;
✔️ языки С и С++;
✔️ правила проектирования С++;
✔️ стандартизация;
✔️ библиотеки;
✔️ перспективы развития С++ и многое другое.
👉 @cpp_knigi
Технические собеседования: что болит у тех, кто их проводит и кто на них приходит
Константин Владимиров, Елена Степанова, Илья Казаков (все YADRO) и Илья Шишков (экс-Яндекс) обсудили с аудиторией московского C++ митапа все, что наболело в теме собеседований.
00:00 - Кто больше всех насобеседовал в своей карьере
01:35 - "Собеседования как пощечина вузовскому образованию"
02:20 - Стоит ли "спрашивать кандидата за резюме" (особенно когда собеседуешь не в свою команду)
05:55 - Лучшее собеседование в жизни Елены Степановой
07:45 - Можно ли обойтись без leetcode и алгоритмических секций
13:35 - Стоит ли применять подход fake it till you make it
16:30 - Грустная история про стажера и софтскиллы
17:45 - Вопрос про выбор между опытом и остротой ума или "проблема вагонетки"
21:10 - Вопрос про интересные вопросы и неожиданные ответы
24:40 - Продолжение грустной истории про стажера и софтскиллы
26:35 - Про ключевые вопросы и красные флаги на собеседованиях
34:35 - О фидбеке после интервью (и почему его не всегда дают)
35:45 - Вопрос про код-ревью как форму собеседования
36:45 - Как понять, надолго ли к вам выйдет кандидат
38:30 - Вопрос про Qt и зло ли это
41:50 - Про каверзные вопросы и нужны ли они
43:25 - Вопрос про странных интервьюеров
45:10 - Стоит ли спрашивать про алгоритмы того, кто будет перекладывать байтики
47:50 - Итоговый вопрос для Константина Владимирова
источник
#cpp #programming
👉 @cpp_lib
Длительность хранения и нелокальные объекты в C++
C++ позволяет нам объявлять различные формы нелокальных объектов: обычно они живут на протяжении всего выполнения программы. В этой статье мы рассмотрим глобальные переменные, динамические и потоково-локальные объекты. Также мы рассмотрим новые возможности безопасной инициализации C++20.
https://www.cppstories.com/2023/storage-init-cpp/
#cpp #programming
👉 @cpp_lib
Современный С++ в разработке девайсов
Меня зовут Андрей Белобров. Я тимлид одной из команд, разрабатывающих приложения для умных девайсов Сбера.
На прошедшей недавно конференции Салют, OS DevConf! я выступил с докладом, в котором рассказал, как мы с командой разрабатываем приложения на С++ для умных устройств с виртуальным ассистентом. А также о том, как инструменты статического и динамического анализа помогают поддерживать единый стиль и высокое качество кода в проекте.
Во время доклада меня попросили подробнее описать детали нашего подхода в статье, поэтому рад поделиться с вами расширенной текстовой версией.
Все наши устройства должны уметь взаимодействовать c виртуальным ассистентом, проигрывать музыку, обновлять прошивку, выполнять аутентификацию пользователя и т.д.. Такая функциональность реализована в едином для всех платформ приложении, работающем в пользовательском режиме на каждом из наших устройств, будь то умная колонка, ТВ-приставка или умный телевизор.
Язык С++ позволяет писать эффективный и переносимый между различными платформами код, поэтому выбор языка программирования для нашего приложения был очевиден. При этом язык известен своей сложностью и возможностью выполнить одну и ту же задачу несколькими способами.
Чтобы успешно разрабатывать большой проект на языке C++, необходимо хорошо настроить процесс разработки в команде (а у нас это несколько десятков инженеров). Также можно значительно осовременить разработку на C++ за счет использования подходящих инструментов статического и динамического анализа и правильной интеграции их в процесс разработки.
https://habr.com/ru/companies/sberdevices/articles/780476/
#cpp #programming
👉 @cpp_lib
🔥Магия вне Хогвартса для начинающих Embedded Developer!
19 декабря в 20.00 (мск) приглашаем на открытый урок курса Embedded Developer в OTUS «Философский камень или как оживить кристалл кодом», где вы узнаете:
- как программируются микроконтроллеры;
- какие языки для этого используют;
- способы написания кода и его влияние;
- что такое фреймворки и какие они бывают;
- что такое RTOS и почему это высший навык программирования.
⚡Занятие приурочено к старту курса, программа которого позволит погрузиться в три самые важные области: программирование микроконтроллеров, проектирование печатных плат, схемотехника. А по итогам обучения вы сможете разработать собственное цифровое устройство.
👉Регистрация для участия https://otus.pw/8ksm/?erid=LjN8KKBAe
После урока возможно продолжить обучение по специальной цене и с рассрочкой платежа.
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
Магия swizzle из шейдеров в C++
В шейдере мы можем написать vec3 v0 = v1.xxy * 2, а также любую другую комбинацию x, y, z и w в зависимости от длины вектора. Я рассматриваю только размеры вектора до 4, как самые распространенные для использования. Полученный вектор может иметь не только ту же самую размерность, но и меньшую или большую, причем его компоненты могут быть скопированы в произвольном порядке. Эта операция называется 'swizzle', и она чертовски удобна для различных операций с малоразмерными векторами, особенно если они представляют игровые сущности в виде позиций, размера или цветов. Вектора используются повсюду в игровых проектах (да и не только в игровых), а не только в шейдерах. В какой-то момент было решено добавить 'swizzle' в наш игровой движок в базовые классы vec2, vec3 и vec4. Возникли вопросы: как добиться такого же синтаксического и семантического поведения в C++ коде, при этом минимизируя потери производительности.
https://habr.com/ru/articles/779616/
#cpp #programming
👉 @cpp_lib
О хранении изображений в памяти с выравниванием
В разговорах с коллегами, а также по отдельным постам на форумах я заметил, что даже относительно опытные разработчики порой не очень понимают особенности хранения изображений в памяти. Если вы знаете, что такое выравнивание на границу 64-x байт, а также термины типа «длина или шаг строки (LineWidth/StepWidth, Stride)», «зазоры выравнивания (Alignment Gaps)», кроме того в курсе размеров линий кэша и страниц, то вам, вероятно, не будет интересно, а остальные, особенно те, кто интересуется обработкой изображений — могут ознакомиться с предлагаемым материалом, и, возможно найдут для себя что-то новое и полезное. Под катом будет немножко кода на Си и ассемблере, пара LabVIEW скриншотов, предполагается также, что у читателя есть базовые знания OpenCV. Для экспериментов понадобится компьютер с камушком, поддерживающим AVX2, всё это под Windows 11 x64.
https://habr.com/ru/articles/773948/
#cpp #programming
👉 @cpp_lib
Где изучать C++ с нуля до Middle-уровня?
19 декабря в 20:00 мск на открытом уроке мы разберем пример реализации полиморфизма на языке С++.
Что будет на занятии:
- реальных практический пример использования полиморфизма, а не синтетические животные или геометрические фигуры, как это часто встречается в учебниках;
- синтаксис языка C++ для объявления виртуальных функций;
- разборе того, как под капотом работают виртуальные функции.
Чему научитесь:
- в каких случаях полезно использовать полиморфизм
- как работать с виртуальными функциями в C++
- какая цена использования виртуальных функций
Кому это будет полезно:
начинающим программистам на C++
программистам на других языках, которые интересуются C++
Занятие пройдёт в рамках курса «Специализация C++ Developer». После урока вы сможете продолжить обучение на специальных условиях.
Для бесплатного участия и получения записи регистрируйтесь прямо сейчас: https://vk.cc/ctd5zwРеклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Майкл Керриск :: Понимание пространств имен пользователей Linux
Пользовательские пространства имен лежат в основе многих интересных технологий Linux, позволяющих изолировать и изолировать приложения, например, запускать контейнеры без привилегий root и создавать "песочницу" для плагинов веб-браузеров. В этой презентации мы подробно рассмотрим пользовательские пространства имен, получив базовое представление о том, что такое пользовательское пространство имен, и перейдем к таким вопросам, как: что позволяет вам делать статус "суперпользователя внутри пользовательского пространства имен" (и чего он не позволяет); и какова связь между пользовательскими пространствами имен и другими типами пространств имен (PID, UTS, сетевое и т. д.)? Мы также воспользуемся некоторыми простыми командами оболочки для создания и экспериментов с пользовательскими пространствами имен, чтобы лучше понять, как они работают.
источник
#cpp #programming
👉 @cpp_lib
С++
Сергей Шамбир (iSpring) - “Быстрые и надёжные сигналы-слоты в C++”
Евгений Зуев (Университет Иннополис) - “Архитектура компиляции: проблемы и решения.”
Константин Гейст (iSpring) - “Следи за своим состоянием: валидация в ООП”
Антон Полухин (Yandex.Taxi) - Полезный constexpr
Институт программных систем
источник
#cpp #programming
👉 @cpp_lib
Измерение частоты на STM32
В этой небольшой статье хочу рассказать вам о различных методах измерения частоты прямоугольного сигнала с помощью микроконтроллера STM32.
В процессе работы над одной из железок возникла необходимость организовать несколько выводов, которые бы измеряли частоту входного сигнала. Опробовав несколько разных вариантов, я решил, что негоже примерам пылиться на задворках диска D и стоит ими поделиться с сообществом. Надеюсь кому-то, находящемся в похожей ситуации, этот материал будет полезен. Материал в первую очередь рассчитан на новичков.
https://habr.com/ru/articles/770478/
#cpp #programming
👉 @cpp_lib