Найти в Дзене
CMake от начинающего до опытного. Часть 7 - Автоматизируем выявление ошибок в программе при помощи Valgrind.
Иногда после внесения изменений в исходный код и запуска программы появляются странные ошибки. Например, программа зависает, не реагируя на действия пользователя, и аварийно завершается(падает). Либо зависания не происходит, но программа падает. Иногда даже анализ логов не добавляет ясности, так как падение происходит в том месте исходного кода, которое не вызывает подозрений (по крайней мере на первый взгляд). Некоторые ошибки можно выявить при прогоне тестов. Но они не всегда помогают. Теоретически...
4 месяца назад
Устанавливаем библиотеки Boost с помощью пакетного менеджера Conan
В мире, наверное, не найдется ни одного программиста на С++, который не слышал о Boost. Boost — собрание библиотек классов, использующих функциональность языка C++, и предоставляющих удобный кроссплатформенный высокоуровневый интерфейс для решения различных задач программирования, таких как работа с файлами, потоками, регулярными выражениями, генерацией псевдослучайных чисел, обработкой изображений, модульным тестированием и т. п. Библиотеки распространяется по лицензии Boost Software License, разработанной...
5 месяцев назад
Знакомство с СУБД Redis на практических примерах.
Redis (акроним из трех английских слов remote dictionary server) — резидентная система управления базами данных (СУБД), относящаяся к классу NoSQL, работающая со структурами данных типа «ключ — значение». База данных хранится в оперативной памяти и снабжена механизмами снимков и журналирования для обеспечения возможности хранения на дисках и твердотельных накопителях. Кроме того, Redis предоставляет операции для реализации механизма обмена сообщениями. NoSQL (от англ. not only SQL — не только SQL) —...
5 месяцев назад
Переход от монолита к микросервисам на практике. Часть 1 - Постановка задачи.
Данным материалом я начинаю серию статей в которых постараюсь на понятном примере описать различия между монолитной и микросервисной архитектурами, а также привести практические примеры создания каждой из них с использованием различных языков программирования (Python, Go) и фреймворков (fastapi, asyncio). Итак, начнем с постановки задачи. Требуется реализовать систему авто заполнения поисковых запросов, описанную в главе 13 книги System Design. Подготовка к сложному интервью . Авто заполнение можно встретить в поисковых системах или интернет-магазинах...
6 месяцев назад
CMake от начинающего до опытного. Часть 6 - Собираем отчеты о покрытии кода тестами.
В одной из предыдущих статей я начал тему тестирования. Сегодня продолжим развивать ее и посмотрим как тестирование помогает нам в процессе разработки. Как известно, написание исходного кода программы - это только пол дела. Кроме этого необходимо убедиться в том что созданный код работает правильно, а также в том, что изменения, внесенные в программу, не сломали какую-то часть ее функционала. Для этого код снабжается тестами, которые должны регулярно выполняться, например в автоматическом режиме в процессе непрерывной интеграции (continous integration)...
6 месяцев назад
CMake от начинающего до опытного. Часть 5 - Используем пакетный менеджер Conan для подключения библиотеки.
Conan - это менеджер зависимостей и пакетов для языков C и C++ с открытым исходным кодом. Работает на всех платформах Windows, Linux, OSX, FreeBSD, Solaris и т. д. и может использоваться для разработки для множества платформ, включая мобильные (iOS, Android). Он также интегрируется с многими системами управления сборкой, такими как CMake, Visual Studio (MSBuild), Makefile и т.д. Conan построен в соответствии с архитектурой клиент-сервер. Это означает, что клиенты могут извлекать пакеты с различных серверов («удаленные серверы»), а также загружать пакеты на них...
8 месяцев назад
CMake от начинающего до опытного. Часть 4 - Подключаем к проекту библиотеку для тестирования.
Работа с современными программными проектами затруднительна без использования сторонних библиотек. Такие библиотеки часто называют внешними зависимостями. Таким образом эффективное управление зависимостями является одной из важных задач для команды разработчиков. При этом ручное управление часто требует много времени на настройку и постоянную поддержку зависимостей. К счастью для автоматизации решения данной задачи отлично подходит CMake. Так как CMake фактически является стандартом в области автоматизации сборки, то многие библиотеки (их также называют пакетами) совместимы с ней...
8 месяцев назад
Задаем цели CMake проекта и улучшаем его структуру.
В предыдущей статье мы создали простой проект при помощи CMake и начали рассматривать конструкции языка описания сборки. Одним из недостатков полученного файла CMakeLists.txt является то, что в него включен список всех исходников, что нормально для небольшого проекта, но становится проблемой по мере его увеличения. Дерево проекта имеет следующий вид. Вынесем список исходников в отдельный файл sources.cmake, поместив этот файл в директорию src. sources.cmake set(sources src/main.cpp src/arithmetic...
8 месяцев назад
CMake от начинающего до опытного. Часть 2 - Создаем первый проект.
Приступим к практической работе с CMake. Как было сказано в предыдущей статье, CMake - это средство автоматизации сборки ПО. Оно не может ничего построить самостоятельно. Поэтому перед установкой CMake необходимо, как минимум, установить компилятор. Для операционных систем семейства Linux и языка С++ наиболее популярными являются компиляторы g++ и clang++. Для проверки примеров статей из данной серии я использую операционную систему Ubuntu 20.04 и компилятор g++ . Вначале проверим наличие g++ в системе командой g++ --version...
8 месяцев назад
CMake от начинающего до опытного. Часть 1 - Введение.
Данный материал открывает серию статей о моем опыте практического использования СМаке. Надеюсь серия поможет начинающим программистам в освоении этого крайне важного инструмента в арсенале C++ разработчика. Так что же такое СМакe? Согласно Википедии, CMake (от англ. cross-platform make — кросс платформенный make) — это кросс платформенное программное средство автоматизации сборки программного обеспечения из исходного кода. При этом сборка в данном случае - это не только процесс получения библиотеки или исполняемого файла из исходного текста программы...
345 читали · 10 месяцев назад