1. Введение в операционную систему реального времени с открытым исходным кодом

Алан Кей сказал: «Простые вещи должны быть простыми, сложные вещи должны быть возможными». Это предложение вдохновило основателя RT-Thread придерживаться своих убеждений.

Фон:

2. Уязвимость переполнения стека

Переполнение стека — это тип уязвимости, связанной с переполнением буфера. Когда мы наливаем в стакан воды больше, чем его вместимость, вода проливается или переливается, точно так же, когда мы вводим данные в буфер больше, чем его вместимость, данные переполняются в соседнюю область памяти, вызывая сбой программы. Это известно как переполнение буфера.

3. Как получить максимальную отдачу от OpenGL с помощью C++ и WASM

васм, opengl, cpp, с++, html

4. ОС RT-Thread IoT с открытым исходным кодом запускает встроенную интегрированную среду разработки

RT-Thread, встроенная операционная система реального времени с открытым исходным кодом, которая запустила свой инструмент разработки: RT-Thread Studio. RT-Thread Studio построена на базе Eclipse, но имеет инновационный дизайн взаимодействия с интерфейсом и представляет собой глубокую настройку Eclipse, легкую и простую в использовании, даже новые разработчики могут легко начать работу.

RT-Thread Studio имеет функции создания и управления проектами, редактирования кода, управления SDK, настройки RT-Thread, конфигурации сборки, конфигурации отладки, загрузки и отладки программы.

5. Понимание Chrome V8 — Глава 2: Hello World

Добро пожаловать в другие главы Давайте разберемся с Chrome V8

6. Давайте разберемся с Chrome V8 — Глава 6: Генерация байт-кода

Байт-код — это результат синтаксического анализа, представляющий собой архитектурно-независимый абстрактный машинный код.

7. Изучение обхода графа: от поиска в ширину до алгоритма Дейкстры

В этой статье алгоритм поиска в ширину объясняется с примерами и реализациями, в том числе о том, как его можно изменить для поиска кратчайших путей.

8. Свертывание в C++ с использованием шаблона функции Variadic

Пакет параметров шаблона был представлен в C++11. Сегодня мы будем использовать его для написания нашей функции fold. Для тех, кто не знает, что такое функция свертывания выражения fold(add, 1, 2, 3, 4, 5) , выведем (1 +(2 + (3 + (4 + 5)))) = 15 (левая складка). Аналогично для fold(mul, 1, 2, 3, 4, 5) мы выведем 120. Подробнее об этом можно узнать здесь.

9. Почему вам следует избегать использования #include ‹bits/stdc++.h› при написании кода

#include ‹bits/stdc++.h› не является стандартным заголовком C++. Использование его - плохая практика кодирования. В этой статье описаны причины, по которым следует избегать этого заголовка.

10. Заложите прочный фундамент, написав безопасные утилиты на C и C++

Библиотеки и системные утилиты образуют основу, на которой строятся более крупные проекты. Поэтому очень важно убедиться, что они, в частности, безопасны. Вот почему мы недавно представили пять новых правил для C++ и C для обнаружения нарушенной аутентификации и контроля доступа в системах *nix. Новые правила делятся на три категории: действительность учетной записи, предоставление разрешений и изменение каталогов.

11. Межмодульный анализ проектов C и C++ — Часть 1

Начиная с PVS-Studio 7.14, анализатор C и C++ поддерживает межмодульный анализ.

12. Как получить точную обратную связь от экосистемы SonarQube напрямую в C++

Запоздалая обратная связь — это боль в заднице. Независимо от того, как это произошло, услышать «то, что ты сделал две недели назад, было неправильно», в лучшем случае неприятно. Хорошая обратная связь является немедленной, действенной и, по крайней мере, беспристрастной, если не сострадательной.

13. Пошаговое руководство по изучению C++

В этой статье мы обсудим пошаговое руководство по изучению C++.

14. Как компоненты могут помочь ускорить процесс разработки с использованием RTOS

Нужны ли вам компоненты при работе с операционной системой реального времени? Такие компоненты, как консоль FinSH, виртуальная файловая система, инфраструктура utest, динамический модуль, уровень абстракции сокетов, AT-команды, интерфейс POSIX, журнал Ulog, управление питанием или сетевая инфраструктура. Если у вас есть эти требования, эта статья может быть интересна.

15. Статический полиморфизм с использованием любопытно повторяющегося шаблонного шаблона (CRTP)

Наследование — один из наиболее часто используемых методов повторного использования кода. Объектно-ориентированные языки стремятся к наследованию, чтобы собрать общую функциональность в базовом классе.

16. Алгоритм заливки с рекурсивной функцией

Всем нам известен инструмент «Ведро» Microsoft Paint, который используется для заливки области одним определенным цветом. Но знаем ли мы, как это работает на самом деле? Что ж, давайте обсудим это.

17. Как решить проблему расстояния Хэмминга в C++, вопрос интервью Google

В задаче о расстоянии Хэмминга мы находим количество позиций, в которых биты различны для данного входа с постоянной временной сложностью.

18. Что такое nullptr в C++

Ответ на вопрос «Что такое nullptr в C++?» было бы легко для опытных глаз С++ и для тех, кто знает о современном С++, т.е. ключевом слове. Но nullptr — это больше, чем просто ключевое слово в C++, и чтобы объяснить это, я написал эту статью. Но прежде чем перейти к этому, мы увидим проблемы с NULL, а затем мы погрузимся в простую реализацию nullptr и некоторые варианты использования nullptr.

19. Страшно ли изучать C++?

Пусть вас не пугает C++!

20. Понимание Chrome V8 — Глава 1:Оформить заказ, собрать, запустить V8

Добро пожаловать в первую главу «Давайте разберемся с Chrome V8».

21. Интервью с создателем C++ Бьерном Страуструпом

Мы отлично поговорили с Бьерном Страуструпом, дизайнером и первоначальным разработчиком C++.

22. Заложите прочный фундамент, написав безопасные утилиты на C и C++

Библиотеки и системные утилиты образуют основу, на которой строятся более крупные проекты. Поэтому очень важно убедиться, что они, в частности, безопасны. Вот почему мы недавно представили пять новых правил для C++ и C для обнаружения нарушенной аутентификации и контроля доступа в системах *nix. Новые правила делятся на три категории: действительность учетной записи, предоставление разрешений и изменение каталогов.

23. Для безопасного кода важна ремонтопригодность

Писатель Роберт Коллиер сказал, что «успех — это сумма небольших усилий, повторяемых изо дня в день». Это особенно верно, когда речь идет о безопасности.

24. Запуск произвольных рабочих нагрузок в нано-ВМ

Этот пост покажет вам, как вы можете запустить произвольный фрагмент кода на виртуальной машине nano. В этом посте предполагается, что у вас уже запущена виртуальная машина nano (здесь). Полную версию программы также можно найти здесь (gitlab).

25. Как победить в гонке против уязвимостей TOCTOU в C и C++

Безопасность — это вечная гонка между методами и технологиями злоумышленников и защитников. Сегодня я с гордостью объявляю о шаге вперед для защитников с новым правилом для обнаружения буквального состояния гонки: уязвимости TOCTOU (или TOCTTOU), известные в развернутой форме как Time Of Check (to) Time Of Use.

26. Шаблоны проектирования: шаблон прототипа в современном C++

Шаблон проектирования прототипа — это шаблон творческого проектирования, который помогает в прототипировании (дешевом создании/копировании) объекта с использованием отдельных методов или полиморфных классов. Вы можете рассматривать прототип как шаблон объекта до того, как фактический объект будет создан. В этой статье о творческих шаблонах проектирования мы рассмотрим, зачем нам нужен шаблон проектирования прототипа в C++, то есть мотивация, фабрика прототипов и использование шаблона проектирования прототипа для реализации конструктора виртуальной копии.

27. Создание веб-службы RESTful с использованием C++, пользовательского интерфейса Swagger и автоматически документируемых конечных точек

Это 5-минутное руководство по использованию веб-фреймворка Oat++ (AKA oatpp) для создания собственного высокопроизводительного веб-сервиса C++ и его интеграции с Swagger-UI.

28. Ложные срабатывания считаются врагами, но могут ли они быть вашими друзьями?

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

29. SOLID Design: принцип инверсии зависимостей в C++

Принцип инверсии зависимостей в C++ является пятым и последним принципом проектирования серии SOLID as a Rock. Принципы проектирования SOLID сосредоточены на разработке программного обеспечения, которое легко поддерживать, повторно использовать и расширять. В этой статье мы увидим пример кода с недостатком и исправим его с помощью DIP. Мы также увидим руководство и преимущества DIP во вложении к статье.

30. Открытый закрытый принцип: ПРОЧНОСТЬ, как скала

Это вторая часть серии из пяти статей о принципах проектирования SOLID as Rock. Принципы проектирования SOLID, объединенные вместе, облегчают программисту создание программного обеспечения, которое легко поддерживать, повторно использовать и расширять. Принцип Open-Closed (OCP) — это второй принцип в этой серии, который я буду обсуждать здесь с минималистичным примером в современном C++, а также с его преимуществами и общими рекомендациями.

31. Все о лямбда-функциях в C++: от C++11 до C++17

Лямбда-функция — довольно интуитивно понятная концепция современного C++, представленная в C++11, поэтому в Интернете уже есть множество статей по учебнику по лямбда-функциям. Но все равно осталось что-то нераскрытое (типа IIFE, типы лямбда и т.д.), о котором никто не говорит. Поэтому здесь я не только покажу вам лямбда-функцию в C++, но и расскажу, как она работает внутри, и другие аспекты Lambda.

32. Как запускать и отлаживать код C/C++ с помощью VSCode

К концу этого краткого руководства вы сможете запускать, отлаживать и получать файлы IntelliSense для C/C++ в VSCode.

33. Как программа на C хранится в оперативной памяти

Когда вы запускаете любую C-программу, ее исполняемый образ загружается в ОЗУ компьютера в организованном порядке, известном как адресное пространство процесса или схема памяти C-программы. Здесь я попытался показать вам одно и то же в двух частях.

34. Изучите многопоточность C++ за 5 минут

Резюме: Ускоренный курс по многопоточным конструкциям C++14 в очень неподробной форме.

35. Variadic Template в C++: реализация простого кортежа

Начиная с C++11, std::tuple представляет собой невероятное расширение для Modern C++, которое предлагает коллекцию разнородных значений фиксированного размера. К сожалению, кортежи могут быть несколько сомнительными в управлении обычным способом. Но впоследствии выпущенный стандарт C++ представил несколько функций и помощников, которые значительно сократили необходимый шаблон. Итак, в этой статье я объясню вариативный шаблон в C++ с помощью простой реализации кортежа. А также проведет вас через сложную часть кортежа, то есть цикл через элемент кортежа. Несмотря на то, что я скрывал шаблон с переменным числом аргументов в своей предыдущей статье, т. е. Шаблон C++: быстрый взгляд на обновленную версию. Итак, мое внимание здесь будет сосредоточено на сочетании вариативной реализации шаблона и кортежа с более современными датчиками C++.

36. Шаблоны проектирования: одноэлементный шаблон в современном C++

В программной инженерии шаблоны креативного проектирования имеют дело с механизмами создания объектов, т. е. пытаются создавать объекты способом, подходящим для ситуации. Базовая или обычная форма создания объекта может привести к проблемам с дизайном или усложнить дизайн. В этой статье о креативных шаблонах проектирования мы рассмотрим очень ненавистный и часто задаваемый шаблон проектирования в интервью по программированию. Это шаблон проектирования Singleton в современном C++, который критикуют за его расширяемость и тестируемость. Я также расскажу о шаблоне проектирования Multiton, который совершенно противоположен Singleton.

37. Как работать с битами в C и C++

Все данные в компьютере представлены в двоичном виде, то есть в 0 или 1. Компьютеры или машины не понимают наши языки, они понимают биты. Обычно программист не заботится об операциях на битовом уровне. Но иногда программист должен погрузиться на более глубокий уровень и работать над битами.

38. Введение в шаблоны объектно-ориентированного проектирования

Достигнув определенного уровня опыта и проведя достаточно времени в отрасли, я осознал важность проектирования/архитектуры системы и программного обеспечения. Итак, я начал изучать дизайн системы/программного обеспечения и узнал, что ничто не может быть лучше начала, чем шаблон проектирования. И первое, что я сделал, это погуглил «Что такое шаблон проектирования?» Отсюда и возникла идея этой статьи.

39. Принцип единой ответственности в C++: SOLID as a Rock

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

40. Топ-10 ошибок, найденных в проектах C++ в 2020 году

10 основных ошибок, обнаруженных в проектах C++. Деление по модулю на единицу delete вместо delete[] Переполнение буфера Бессмысленная защита от переполнения

41. Операторы увеличения и уменьшения в C/C++

Я обнаружил, что знаки «++» и «—» в C++ сбивают с толку многих начинающих, поэтому давайте объясним, что они на самом деле означают.

42. Приведение типов C++ для разработчиков C

Приведение типов — это функция, которая делает C++ более безопасным для типов, надежным и может убедить вас использовать его вместо C. Но это также более недооцененная тема, когда вы новичок или переходите с фона C. Поэтому я придумываю статью об этом. Здесь мы не только увидим приведение типов C++ с примером для разработчиков C, но также рассмотрим, зачем нам нужно приведение типов? & C++ чит-коды приведения типов, чтобы разработчики C могли их легко запомнить и использовать.

43. Шаблоны проектирования: изучение фабричного метода в современном C++

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

44. Как программа C преобразуется в сборку

В более ранней статье мы видели среду выполнения C: перед запуском основной программы и как программа C хранится в оперативной памяти. Здесь мы увидим «Как программа на C конвертируется в сборку?» и другой аспект его работы на машинном уровне.

45. Шаблоны проектирования: шаблон построения в современном C++

В программной инженерии шаблоны креативного проектирования имеют дело с механизмами создания объектов, пытаясь создавать объекты способом, подходящим для ситуации. Базовая или обычная форма создания объекта может привести к проблемам с дизайном или усложнить дизайн. Шаблон проектирования Builder в C++ решает эту конкретную проблему, отделяя построение сложного объекта от его представления.

46. SOLID Design: принцип разделения интерфейса в C++

Принцип разделения интерфейса в C++ является четвертым и, безусловно, самым простым принципом проектирования серии SOLID as a Rock. Принципы проектирования SOLID сосредоточены на разработке программного обеспечения, которое легко поддерживать, повторно использовать и расширять. В этой статье мы увидим код, нарушающий ISP, решение того же кода, рекомендации и преимущества ISP.

47. 10 основных ошибок проектов с открытым исходным кодом C++, обнаруженных в 2019 году

Очередной год подходит к концу, и это идеальное время, чтобы сделать себе чашку кофе и перечитать обзоры ошибок, собранные в проектах с открытым исходным кодом за этот год. Конечно, это займет довольно много времени, поэтому мы подготовили эту статью, чтобы облегчить вам задачу. Сегодня мы вспомним самые интересные темные пятна, с которыми мы столкнулись в open-source C/C++ проектах в 2019 году.

48. Ошибки из 90-х: Кодекс игры Command & Conquer

Американская компания Electronic Arts Inc (EA) сделала общедоступными исходные коды игр Command & Conquer: Tiberian Dawn и Command & Conquer: Red Alert. Этот код должен помочь игровому сообществу разрабатывать моды и карты, создавать собственные юниты и настраивать логику игрового процесса. У всех нас теперь есть уникальная возможность окунуться в историю развития, которая сильно отличается от современной.

49. 7 лучших практик обработки исключений в C++

Обработка исключений в C++ — хорошо изученная тема, если вы наблюдаете начальные этапы кривой обучения. В Интернете доступно множество руководств по обработке исключений в C++ с примерами. Но немногие объясняют, чего не следует делать, и тонкости, связанные с этим. Итак, здесь мы увидим некоторые тонкости, откуда и почему вы не должны генерировать исключение, а также некоторые новые функции, представленные в Modern C++ для обработки исключений, на примере. Я не эксперт, но это то, что я получил из различных источников, курсов и отраслевого опыта.

50. Современный C и C++: важные факты, которые нужно знать

C был разработан и продвигался Деннисом Ритчи в период между 1969 и 1973 годами в AT&T Bell Labs. C++ появился примерно в 1979 году благодаря Бьерну Страуструпу. C++ был создан как дополнение к языку программирования C и первоначально назывался «C with Classes».

51. Как использовать нулевые указатели C++

Возможно, некоторые из вас уже устали от этой темы, но наши инженеры-программисты выбрали 7 примеров и попытались объяснить их поведение с помощью Стандарта (последний черновик на момент написания):

52. Ошибки 90-х: The Code of Command and Conquer [Том 2]

Американская компания Electronic Arts Inc (EA) открыла в открытом доступе исходный код игр Command & Conquer: Tiberian Dawn и Command & Conquer: Red Alert. С помощью анализатора PVS-Studio в исходном коде было обнаружено несколько десятков ошибок, так что приветствуйте продолжение обзора найденных дефектов.

53. 7 продвинутых концепций C++, которые вы должны знать

Итак, я начал обновлять себя с помощью Modern C++ некоторое время назад, и с тех пор, как я опубликовал 21 новую функцию Modern C++ для использования в вашем проекте, и все о лямбда-функциях в C++ было популярно, я решил написать о передовых концепциях и идиомах C++, которые я изучил. из этой викикниги и курса.

54. Исправление ошибок кода в Amnesia: The Dark Descent

Накануне релиза игры «Amnesia: Rebirth» вендор Fractional Games открыл исходный код легендарной «Amnesia: The Dark Descent» и ее сиквела «Amnesia: A Machine For Pigs». Почему бы не использовать инструмент статического анализа, чтобы увидеть, какие ужасные ошибки скрыты внутри этих культовых игр ужасов?

55. Машинное обучение в статическом анализе кода

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

Благодарим вас за просмотр 55 самых читаемых статей о Cpp на HackerNoon.

Посетите /Learn Repo, чтобы найти самые читаемые истории о любой технологии.

Эта история изначально была опубликована на hackernoon.com.