Обновить
200.51

C++ *

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

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

На грани между exceptions и std::expected

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

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

Читать далее

userver — что мы узнали за полгода в open-source

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели22K
image
Прошло больше полугода с момента выхода фреймворка для C++ ? userver в open-source. За это время мы многое узнали, на многом настрадались, а главное — получили много приятных сюрпризов.

И мы решили об этом написать. Рассказ будет полезен тем, кто ведёт или планирует вести свой open-source проект или занимается контрибьютами. Остальным будет интересно почитать про чужое набивание шишек и что вообще open-source даёт проекту.
Читать дальше →

Сам себе игровая консоль: превращаем планшет с нерабочим тачскрином в игровой девайс из 8 кнопок и микроконтроллера

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

К сожалению, в наше время многие старые, но весьма неплохие по характеристикам гаджеты отправляются напрямую в помойку, и их владельцы не подозревают, что им можно найти применение. Сервер, мультимедийная-станция, да даже просто как TV-приставка — люди в упор не замечают сфер, где старенький планшет мог бы быть полезен. Но как быть, если посвящаешь жизнь портативным гаджетам, кодингу и копанию в железе? Правильно: сделать довольно мощную игровую консоль из старого планшета самому! Сегодня вам расскажу, как я сделал свою портативную приставку из планшета с нерабочим тачскрином, Raspberry Pi Pico и 8 кнопок! За рабочим результатом прячется несколько дней работы: поиск UART на плате, разработка контроллера геймпада на базе RPi Pico, написание приложения-сервиса, которое слушает события и отправляет их в подсистему ввода Linux в обход Android. Интересно? Тогда жду вас под катом!
Читать дальше →

Blur Behind: История провалов на разных ОС

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


Привет, Хабр! Меня зовут Михаил Полукаров, я занимаюсь разработкой Desktop-версии корпоративного супераппа в команде VK Teams. Я уже писал на Хабр две статьи про использование масок, создание сложных многослойных и полупрозрачных окон и о своем опыте реализации красивых спецэффектов с использованием Qt Framework: вот первая и вторая. По просьбам читателей я решил закончить этот небольшой цикл статей описанием неудач, с которыми мне пришлось столкнуться при реализации спецэффекта Blur Behind для разных ОС.
Читать дальше →

Подвох с указателями на Default Subobject

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

Пожалуй, любой С++ разработчик на Unreal Engine имел дело с созданием Default Subobject в конструкторе. Через этот механизм, в частности, создаются компоненты по-умолчанию для акторов. Казалось бы, какие нюансы могут быть связаны с использованием такого стандартного функционала?

Между тем, они есть. И если их не учитывать - можно получить весьма странные проблемы.

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

Третья часть цикла. Тут мы рассмотрим приложение, позволяющее генерировать и отображать 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.9K

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

Читать далее

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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