Обновить
296.27

C++ *

Типизированный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

ОС «Сивелькирия»: архитектура

Уровень сложностиСредний
Время на прочтение21 мин
Охват и читатели2.4K

Некоторое время назад я писал об идее проекта под названием «Сивелькирия». Данный проект представляет собой гибрид среды выполнения и операционной системы. Сегодня, когда прототипы нескольких ключевых систем завершены и покрыты тестами, подтверждающими, что модули в такой среде способны выполняться и обмениваться вызовами, я хотел бы подробнее рассказать об архитектуре решения.

Читать далее

Валидируем X509 сертификат с OpenSSL C++

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели7.2K

Данная статья является логическим продолжением статьи про генерацию сертификата. В ней мы рассмотрим, как мы можем провалидировать сертификат используя OpenSSL и C++.

Читать далее

Реализация утилиты cat на C

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели66K

Идея довольно проста - принять файл в качестве аргумента, открыть его, занести в буфер по частям и вывести на стандартный вывод. Утилита cat также оснащена различными флагами опций, которые позволяют пользователю манипулировать буфером перед его отправкой на стандартный вывод.

Читать далее

Интервью с создателем обобщённого программирования Александром Степановым

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели8.9K

Всем привет! В сообществе C++  Александр Александрович Степанов особо не нуждается в представлениях: это создатель обобщённого программирования и Standard Template Library. Менее известно, что он построил карьеру в США, но получил образование в СССР. И сейчас, когда многие разработчики уезжают из России, особенно интересно узнать, как переезд IT-специалиста выглядел почти полвека назад, до интернета и удалёнки. Изменились ли с тех пор вызовы и трудности?

Читать далее

Token-Based Authetification в автономных системах посредством Qt6 с использованием Qr-кодов. Qr-коды

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели2.6K

Третья часть цикла. Тут мы рассмотрим приложение, позволяющее генерировать и отображать Qr-коды, а также сделаем ui для управления токенами сервиса из прошлой статьи и дадим ему qss.

Читать далее

Разбираемся с использованием неблокируещего ввода-вывода в ОС Linux. Пишем пример сервера на голых системных вызовах

Время на прочтение11 мин
Охват и читатели16K

Как обычно пишут сервер, если не особо заботиться производительности? Программа запускается, затем начинает принимать входящие соединения от клиентов и для каждого клиента запускает новый поток, который занимается обслуживанием этого клиента. Если вы используете какой-нибудь, прости господи, Spring или Flask или там Poco, то он что-такое внутри себя и делает - разве что потоки можно переиспользовать, то есть брать из некого пула. Это всё довольно удобно, но не слишком эффективно. Скорее всего, ваши потоки, обслуживающие клиентов, живут недолго и большую часть времени ожидают либо получения данных от клиента, либо отправки их клиенту - то есть ждут возвращения системных вызовов. Создание потока ОС - довольно дорогая операция, как и переключение контекста между потоками ОС. Если вы хотите уметь обслуживать много клиентов эффективно, надо придумать что-то другое. Например, коллбеки. Но это довольно неудобно.

Читать далее

Token-Based Authetification в автономных системах посредством Qt6 с использованием Qr-кодов. Http-сервер

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели3K

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

Читать далее

Token-Based Authetification в автономных системах посредством Qt6 с использованием Qr-кодов

Уровень сложностиСредний
Время на прочтение2 мин
Охват и читатели1.7K

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

Читать далее

Змейка на PDCurses С++

Время на прочтение7 мин
Охват и читатели17K

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

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

Змейка всегда останется популярной игрой из-за своей простоты и увлекательности. Она является ретро - классикой, в которую играют на компьютере, телефоне или планшете.

Читать далее

Мониторинг: измеряем потери пакетов с помощью C++

Уровень сложностиПростой
Время на прочтение14 мин
Охват и читатели6.8K

В этой заметке я покажу, как с помощью Zabbix и C++ можно заниматься мониторингом потерь пакетов с очень высокой точностью. В этом примере пороговое значение - 0,01% потерь, но можно его ещё уменьшить при необходимости. Если интересно - добро пожаловать под кат.

Читать далее

Используем модель нейросети на C++

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели25K

Большинство туториалов по созданию и использованию моделей нейросетей написаны на Python. Однако для какого-нибудь проекта рано или поздно может понадобится использовать более быстрый и надежный язык для этих задач, например, C++. Эта статья о том, как на C++ можно использовать модель нейросети на примере модели YOLOv8 для детектирования лиц и библиотеки PyTorch.

Читать далее

О разнице между лямбдами и обычными функциями и о имплементации лямбд в некторых языках программирования

Уровень сложностиСредний
Время на прочтение17 мин
Охват и читатели24K

Цель настоящей статьи - изучить лямбда функции: чем они отличаются от обычных функций и изучить, как они реализованы в С++, Python 3 и Java.

На протяжении этой статьи я буду использовать godbolt.org, чтобы компилировать код и изучать машинный код или байт код. Я думаю, что при чтении статьи может быть удобнее смотреть не на приведённый машинный код в статье, а на этом сайте.

Читать далее

Обучение C++, UTF-8 с первой программы

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели37K

Мне понадобилось провести несколько вводных уроков по языку программирования C++. В интернете есть много разнообразных учебных пособий для начинающих. Но почти во всех из них символьные и строковые литералы в примерах и упражнениях даются на английском языке, начиная со знаменитой первой программы «Hello, world!».

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

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

Читать далее

Ближайшие события

Управление параметрами FPV видеопередатчиков по протоколам IRC Tramp и TBS SmartAudio

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели72K

Управление параметрами FPV видеопередатчиков по протоколам IRC Tramp и TBS SmartAudio

Читать далее

Движок C3D Vision управляет отображением 3D-текстур «на лету»

Время на прочтение5 мин
Охват и читатели2.3K

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

Читать далее

Быстрое нахождениe остатка от деления больших чисел для делителей специального вида

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели9.3K

В этой статье я расскажу об одном способе вычисления x mod p, для p вида (2 ** n - omega), причём omega значительно меньше 2 ** n. Напишу генератор констант на Python. Приведу пару игрушечных примеров на С++, для которых может быть выполнено исчерпывающее тестирование для всех возможных аргументов. А в качестве серьёзной проверки - вычислю 97! mod (2 ** 256 - 2 ** 32 - 977).

Читать далее

MIDI chiptune + detune

Уровень сложностиСредний
Время на прочтение15 мин
Охват и читатели8.4K

Добавляем функциональность к музыкальному MIDI-синтезатору на двух чипах AY-3-8910, а также вспоминаем, что общего между музыкой и математикой.

Читать далее

Генерируем X509 сертификат с OpenSSL C++

Уровень сложностиСложный
Время на прочтение11 мин
Охват и читатели11K

В данной статья я хочу рассказать, как работать с X509 сертификатом используя OpenSSL 3.0.0 в С++, начиная от генерации своего сертификата и заканчивая его валидацией.

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

В данной статье, я не буду рассказывать вам, что такое X509 сертификат, надеюсь, что это вы уже знаете, а если нет, то ссылка на статью вот тут.

Читать далее

О чём расскажут на C++ Russia 2023 в онлайне и офлайне

Время на прочтение20 мин
Охват и читатели5K

В доковидные времена (помните такие?) мы проводили C++ Russia два дня в офлайне. Когда в 2020-м конференция перешла в онлайн, один участник решил отложить поход на конференцию до возвращения полноценного офлайна. И вот теперь, в 2023-м, наконец снова проведём два дня в Москве. Получается, человек хотел сходить в год нового стандарта C++ и действительно сходит в год нового стандарта, но есть нюанс!

Однако многим успел понравиться онлайн-формат, когда участники не привязаны к городу. Поэтому будут ещё и два онлайн-дня. А к «офлайновой» части можно будет подключиться удалённо, не пропустив ни одного доклада.

Поскольку мероприятие на целых четыре дня, докладов получилось особенно много. И теперь, когда программа готова, рассказываем Хабру, о чём они будут.

Читать далее

«Прозрачный промоушн выгоден и разработчику, и его тимлиду». Нюансы карьеры разработчика на С++

Время на прочтение3 мин
Охват и читатели4.6K
На прошлой неделе мы в «Лаборатории Касперского» провели онлайновый митап «Нюансы карьеры разработчика на С++». Представители разных команд С++ посмотрели на карьерный трек «плюсера» как со стороны менеджеров, так со стороны самих разработчиков.



Здесь в посте — краткая выжимка эфира в семи ключевых тезисах. Если же вам интересно послушать более развернутую дискуссию и аргументы участников, посмотрите запись митапа по этой ссылке или в виджете ниже.
Читать дальше →

Вклад авторов