Обновить
256K+

C++ *

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

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

Управляем подсветкой клавиатуры при смене языка ввода

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

Недавно я купил себе клавиатуру от Corsair модели K55 RGB Pro. У нее есть модная нынче RGB-подсветка, а чтобы ее настраивать, производитель предлагает скачать программу iCUE. На сайте написано, что некоторые игры могут управлять подсветкой совместимых устройств. Я заинтересовался, как они это делают. Гугл обнаружил официальный SDK с примерами, а также документацию. Я решил сделать что-то полезное для себя, а заодно посмотреть, как создаются приложения под Windows.

Мой код (для Visual Studio) можно найти здесь.

Подробнее о том, как я это сделал, примеры кода и как это выглядит - под катом.

Читать далее

Как протащить верблюда сквозь игольное ушко, или обновление компилятора С++ на проекте старше 10 лет

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

Привет! Меня зовут Колосов Денис, я являюсь разработчиком клиентской части проекта «Allods Online» в студии IT Territory. Сегодня я расскажу о том, как мы решились обновить среду разработки и заодно компилятор на нашем проекте с Visual C++ 2010 на 2019. 

О чем пойдет речь?

1. Как мы докатились до такой жизни и отважились на этот шаг;
2. О сборке вендерских библиотек и всего окружения, которое у нас есть;
3. С какими кастомными проблемами мы столкнулись;
4. К чему это все привело.

Читать далее

Находим более качественные решения при помощи boost

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

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

Читать далее

Добавляем дополнительные особенности реализации на C++ с помощью «умных» оберток

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

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

Инструменты библиотеки feature позволяют наделить экземпляры объектов любого типа свойствами, которых у них изначально не существует. К таким свойствам можно отнести, например, ленивые вычисления (implicit shared и другое), потокобезопасность, выбор способа размещения объекта "по месту" или в "куче" и т.д.

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

Хотите узнать как? Прошу под кат.

Пути на графе. Задача коммивояжёра на C++

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

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

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

Эту задачу можно встретить и на практике. Например, поиск маршрута для полета квадрокоптера-курьера.

Читать далее

С++23 — итоги февральской встречи международного комитета

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

Без лишних слов, прямо к делу — вот какие новые вкусности будут нас ждать в C++23:

  • std::expected — новый механизм сообщения об ошибках без использования исключений и без недостатков кодов возврата.
  • constexpr-математика — теперь на этапе компиляции можно доставать разные части чисел с плавающей запятой, копировать знаки и округлять числа.
  • std::ranges::to — результаты работы алгоритмов можно легко превратить в контейнер.
  • std::views::join_with — добавление разделителя между элементами.

Что мы не увидим в C++23, на что ещё можно надеяться и что ещё приняли в текущий черновик стандарта? Всё это ждёт вас под катом.
Читать дальше →

Портируем код C/C++ на Python

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

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

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

Читать далее

Какая стратегия освобождения памяти используется в C и С++ ядре PVS-Studio?

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

Какая стратегия освобождения памяти используется в C и С++ ядре PVS-Studio?
Так получилось, что в различных обсуждениях мы уже несколько раз комментировали, как C и C++ модуль PVS-Studio работает с памятью. А раз так, пришло время оформить этот ответ в виде маленькой статьи.

Читать дальше →

Кондитерская программиста. Bon Appetit

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

Всем привет, в этой статье пойдёт речь о любопытных экспериментах с С++ и 3D графикой. Будем открывать свою собственную кондитерскую-программиста. Bon Appetit!

Открыть дверь в мир кондитерской

Мои собеседования '2021 (C++ developer)

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

Привет, меня зовут Дмитрий, разработчик на C++ со стажем более 15 лет. В основном приходилось заниматься разработкой десктопного софта и софта для мобильных устройств. Живу в Москве.

В начале 2021 года, после шести лет работы в одной компании (хотя и очень хорошей), решил что пора куда-то двигаться. Лучше дальше, но можно и вбок.

Соответственно собеседовался на позицию "C++ разработчик".

Делюсь впечатлениями.

Читать далее

Синхронные и асинхронные стектрейсы: опыт использования в Facebook

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

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

Читать далее

MuditaOS: зазвонит ли ваш будильник? Часть 1

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

Операционные системы – это тот вид софта, для которого качество исходного кода особенно критично. В этот раз под объективы анализатора PVS-Studio попала MuditaOS. Так давайте же посмотрим, что нам удалось найти в данной операционной системе с открытым исходным кодом.

Читать далее

Proof Of Concept на Python или как портировать С/С++

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

Язык программирования Python существует уже 31 год. Это полностью объектно-ориентированный язык. За все время существования на нем стало возможно применять разные парадигмы. Сейчас этот язык может поддерживать:

- объектно ориентированную парадигму
- структурное программрование
- обобщенное программирование
- функциональное программирование
- метапрограммирование
- контрактное и логическое программирование

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

Помимо всех этих возможностей из-за простого синтаксиса язык стал самым распространенным для прототипирования различных функций больших и маленьких проектов. Некоторые области Computer Science вообще изначально используют этот язык, потому что он максимально прост и не обязательно долго листать документацию, чтобы понять, как создать простейшее приложение. На Python написано большое количество библиотек, которые могут решать различные задачи: от 3D моделирования до сетевого взаимодействия. Причем использовать язык можно не только на уровне абстракций, которые применяют языки высокого уровня, но также можно выполнять и более низкоуровневые задачи.

Статья будет содержать 3 части, в ходе которых мы будем иссследовать возможность портирования C/C++ кода для различных ОС. В этой статье посмотрим, насколько эффективно можно реализовать возможность работы с оперативной памятью и получением данных от системы.

Читать далее

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

Многострадальный C++ и системы сборки

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

Очередная статья на тему "автор жалуется как ему всё не нравится".В C++ есть вещи, которые меня бесят не только в языке и новых стандартах, но и его компиляторах и системах сборки.

Читать далее

Анатомия асинхронных фреймворков в С++ и других языках

Время на прочтение20 мин
Охват и читатели51K
Привет! В этой статье я расскажу об устройстве асинхронных движков с корутинами и без них. Для начала сосредоточимся не на конкретном движке, а на том, почему во всех популярных языках программирования появились корутины и чем они так хороши. Это может быть интересно не только C++-разработчикам, но и всем, кто занимается разработкой сетевых приложений или интересуется архитектурой современных фреймворков.

Пройдёмся по разным архитектурам построения серверов — от самой простой синхронной к более интересным, посмотрим на типичную архитектуру корутинового движка, а после окунёмся в дебри C++ и взглянем на самое страшное на примере нашего фреймворка userver.

Пишем синхронный сервер


Представьте, что у вашего сервиса очень маленькая нагрузка — 100 rps, и вам дали задачу написать простой сервер, понятный каждому второму школьнику. У вас получится что-то наподобие следующего:

void naive_accept() {
  for (;;) {
    auto new_socket = accept(listener);

    std::thread thrd([socket = std::move(new_socket)] {
      auto data = socket.receive();
      process(data);
      socket.send(data);
    });

    thrd.detach();
  }
}
Читать дальше →

DINS C++ EVENING: принципы разработки высокопроизводительных сетевых приложений и типовые проблемы Threadpool и Numa

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

Андрей Новохатько из DINS расскажет, как устроены современные NIC, основные идеи DPDK фреймворка и то, как это можно использовать для оптимизации своих высоконагруженных backend-сервисов, а Александр Боргардт поделится из «ВКонтакте» поделится о типовых проблемах Threadpool и Numa.

Участие бесплатное, но нужно зарегистрироваться. Подробная программа и информация о спикерах — под катом.

Читать далее

Online ROS Meetup 27 января: Оптимизированная передача данных в ROS2 без копий

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

В Robot Operating System сообществе мы решили в эру изоляции проводить специализированные мини митапы на темы связанные с робототехникой. Теперь каждая встреча будет посвящена одной теме, которую мы будем подробно обсуждать онлайн в ZOOM. Поэтому, каждый участник задающий вопросы и ведущий дискуссию важен, будьте активны!

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

Видеозапись доклада выложена под катом.

Читать далее

Приплюснутый, плюсы и «кресты»: за что мы любим и ненавидим C++

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

В конце прошлого года 71 год исполнился Бьерну Страуструпу – создателю C++, одного из самых сложных и интересных языков программирования. Мы в ABBYY любим C++, ведь он лежит в основе и наших технологий компьютерного зрения, и используется в алгоритмах обработки естественного языка, да и опенсорсная библиотека ABBYY NeoML опирается на «плюсы».

По случаю дня рождения Бьерна Страуструпа мы поговорили с Дмитрием, руководителем группы разработчиков, которые создают в компании технологии для интеллектуального анализа бизнес-процессов. Мы уже немного рассказывали об этом решении в одном из постов. Дима работает на C++ уже 15 лет, начинал еще до того, как появился так называемый modern C++ (C++11/14 и выше). Он рассказал о том, как впервые столкнулся с C++, какие возможности есть у этого языка и что советует тем, кто только начинает погружаться в его основы или хочет прокачаться в теме.

Читать далее

Мультиплеер в Unreal Engine: Игровой процесс

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

Привет Хабр!
В данной статье я бы хотел разобрать мультиплеер со стороны игрового процесса. Опорой для написания статьи выступает популярный Network Compendium.

Читать далее

PProto: бинарный rpc-протокол для Qt framework (часть 1)

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

Думаю, не сильно ошибусь, если скажу, что каждый разработчик программного обеспечения рано или поздно сталкивается с задачей взаимодействия приложений расположенных на удаленных узлах локальной или глобальной сети. В разных проектах мне довелось поработать с DCOM, SOAP, самописным (не моим) rpc-протоколом, использующим связку json+boost.asio. Проблематика коммуникации приложений и процессов мне всегда была интересна. Пытаясь разобраться, как устроены различные механизмы взаимодействия, ставя эксперименты по сериализации данных, со временем, я пришел к решению, о котором хочу рассказать.

Читать далее