Обновить
202.78

C++ *

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

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

Не умер ли еще Microsoft COM, где можно найти его применение?

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

К написанию статьи меня подтолкнул вот такой вопрос:

Всем добрый день. Хотел бы получить краткие и понятные для новичка ответы на следующие вопросы:

Что такое COM объект?

Как происходит разработка COM объекта?

Какие особенности реализации COM Microsoft?

Прошу воздержаться от скидывания многостраничной литературы. Спасибо.

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

Читать далее

Многопоточность и Thread Pool в C++

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

Привет, Хабр! Я неожиданно созрел для написания первой статьи тут. За время работы в сфере IT у меня появилась своя собственная библиотека на языке C++, которая медленно, но верно обрастает различными полезными модулями. Не все включаемые в нее модули написаны мною с нуля, но я всегда стараюсь так или иначе адаптировать их под свои нужды. Сегодня у меня появилось непреодолимое желание поделиться с вами некоторыми фрагментами моей библиотеки.

Читать далее

Монадическая композиция Expected в C++

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

Продолжение статьи На грани между exceptions и std::expected.

Здесь речь пойдёт о трюке, который ещё больше имитирует код под исключениями C++ (а так же в какой-то степени уподобляется некоторым функциональным языкам). Реализован такой трюк будет при помощи описанного в предыдущей статье типа Expected и использования монадической композиции с сопрограммами.

Читать далее

[По полочкам] Алгоритмы сортировок. Часть 1

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

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

В этой статье рассматриваются следующие сортировки: сортировка обменами, сортировка выбором, сортировка пузырьком, сортировка вставками.

Читать далее

Программирование паяльником, пыльное железо и тонны легаси? Как на самом деле устроена разработка ПО в телекоме

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

Хабр, привет! Недавно я спросил нескольких коллег — вчерашних студентов, как они представляли себе разработку в телекоме до того как пришли в эту сферу. Их ответы были очень далеки от реальности. Многие считали, что разработка в телекоме — это возня со старым пыльным железом на чердаках и в подвалах. Внедрять новые и современные решения невозможно из-за тонн легаси, в сторону которого все боятся даже дышать. А большинство коллег — бородатые деды, которые программируют паяльником и строго следуют парадигме каскадной разработки. Да и задачки в целом довольно скучные: перекладываешь байты — и, в общем-то, больше ничего не происходит. Нечего будет рассказать внукам, когда сам станешь бородатым дедом.

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

Читать далее

На грани между 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% потерь, но можно его ещё уменьшить при необходимости. Если интересно - добро пожаловать под кат.

Читать далее