Обновить
256K+

C++ *

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

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

OneOCR — скрытая OCR внутри Windows 11

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

OneOCR — это набор из двух динамических библиотек и одной модели ONNX для распознавания текста в приложениях Snipping Tool и Photos в Windows 11.

Читать далее

Новости

Простой поиск имен в С++

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

Это продолжение темы начатой в статье Важны ли компилятору имена, и продолженной в Ночью все кошки серы, а using'и одинаковы, и далее в Компиляторы тоже путаются в именах. Если не читали, то лучше будет пробежаться по диагонали. Теперь вот мы подобрались к такой интересной теме, как квалифицированный и неквалифицированный поиск.

Что такое простой поиск(неквалифицированный) имени n в области S? Это механизм компилятора, который находит все объявления n, находящиеся непосредственно в этой области. Просто? С виду да, но даже этот простой механизм часто работает не так, как ожидает разработчик.

Например, у нас есть пространство имён N и локальная переменная N. Они могут сосуществовать вместе? Могут, потому что находятся в разных областях видимости. А пространство имён и глобальная переменная с тем же именем могут? Как же мы докатились до жизни такой, давайте разбираться.

Вот такой простой с++

Универсальный Task для C++20 coroutines: тип результата, политика запуска и владение coroutine state

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

Разбор минимального пользовательского Task для C++20 coroutines: выбор promise_type для void и value-результата, политики initial_suspend(), хранение coroutine_handle, final_suspend(), сохранение результата и исключения, а также границы текущей реализации.

Читать дале

Реалии open‑source разработки на примере Conan и userver

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

Исторически сложилось, что одна из главных проблем C++ — это тулчейны, системы сборки, управление зависимостями и всё вокруг. Ничего из этого не является частью стандарта, поэтому кто во что горазд. Любой бигтех просто обязан написать свой инструмент, который наконец‑то станет лучшим.

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

Пришло время исправить это упущение, и на примере внедрения Conan в userver также рассмотреть реалии open‑source разработки. Нам быстро придется покинуть мир розовых пони, погрузиться в самые дебри и понять, что иногда новые модные проекты держаться на людях, отрицающих все современные методы разработки.

Читать далее

Shine — C++ Фреймворк для десктоп приложений с использованием React

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

Краткий обзор и представление фреймворка Shine для разработки десктоп приложений используя C++ и React.

Читать далее

Direct 2D #9 О текстурах

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

Данная статья рассказывает о "Текстуре" в Direct2D , с конкретными примерами, кратко, понятно и на русском(в отличие от машинного перевода MSDN)

Читать далее

Личный опыт: Как я учил языки и написал свою программу для запоминания слов

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

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

Читать далее

Браслет для Бони

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

Возможно, на мой предвзятый взгляд, нынче автоматным программированием (АП) называют любое программирование, в которое вводят состояния (а параллельным – где используют потоки). Но не все, что с колесами – машина, а с крыльями – самолет. И далеко не всегда то, что «выглядит» как автомат, «плавает» как автомат и «крякает» как автомат им является. Это ясно, если руководствоваться математическим определением конечного автомата (КА). Только соответствие этому позволяет  считать программирование автоматным. Подробнее же об АП рассказано в [1].

Среди существующих программных подходов некоторые на взгляд программистов относятся к категории АП. Это, например, варианты диаграмм Харела (Statecharts) и языков на них основанных. Например, UML (Unified Modeling Language). Именно этой теме посвящена статья на Хабре, которая описывает проектирование на базе КА  в среде Engee[2].  В последней есть библиотека «Конечные автоматы» – «лучший инструмент для визуального проектирования сложной управляющей логики» [3].

Разберем данную статью, создав аналог рассмотренного в ней решения, но только на языке С++ и в среде ВКПа – классическом варианте технологии автоматного программирования. Это позволит объективно сравнить подходы, а вам, «хабравчане», останется только составить уже свое мнение о разных вариантах АП.

Читать далее

Как мы искали адреса регистров в памяти прибора

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

Как найти реальные адреса регистров, если документация не помогает. В статье разбираю реальный инженерный кейс: прибор отвечает, но в регистрах нули. Показываю, как через анализ трафика (опрос-ответ) найти нужные данные.

Читать далее

В чем реальная проблема внедрения видеоаналитики на предприятиях?

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

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

Нейросеть не ищет в своей памяти «похожую картинку», как это делал бы человек. Вместо этого она выделяет в кадре набор математических признаков (например: «объект круглой формы находится в верхней части другого объекта»). На основе миллионов заранее обученных весов (параметров) сеть вычисляет вероятность: «это каска — 96%», «это человек — 98%».

Откуда берутся весы? База знаний нейросети наполняется вручную на этапе обучения. Специалисты-разметчики показывают модели тысячи кадров, выделяя на них людей, каски, инструменты и другие нужные объекты.

Читать далее

С++ с нуля в 2026 году: почему нужно сразу учить C++20 и забыть про дедовские туториалы

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

Хабр, привет!

Если вы скажете знакомому разработчику (особенно фронтэндеру или Python-разработчику), что хотите выучить плюсы с нуля, скорее всего на вас посмотрят с сочувствием. В IT-сообществе укоренилось мнение, что плюсы - это темный лес с какими-то непонятными указателями, ручным управлением памятью и прочими прелестями языка. В целом они правы, кроме одного момента. Это было десятки лет назад. Начиная с С++11, а уж тем более в эпоху С++20, язык стал другим. Разработчику больше не нужно следить за жизнью переменной, выделенной через new, бояться обратиться за пределы массива, жонглировать сырыми указателями. На многое появились удобные обертки, которые упрощают жизнь разработчику. А некоторые из них еще и никак не влияют на производительность. Если вы студент, человек из другой сферы или разработчик, который хочет потрогать новый инструмент - не бойтесь. Главное - правильно начать.

Читать далее

Scene not Graph

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

Scene not Graph. Место для запятой выбирайте сами.

Scene Graph как концепция появился в академической и промышленной среде, где компьютерная графика использовалась для CAD-систем, научной визуализации и инженерного проектирования, а потом уже пришел в игры. Задачи отрисовки мира и его объектов в CAD были совсем другие и нужно было описывать, например, сложные сборки из деталей, с шестерней в редукторе, редукторе в двигателе, двигателе в машине, и такая модель отражала физическую реальность, которая играм была нужна с приставкой "не". Причины, по которым Scene Graph пришел и остается в играх довольно банальные, этой концепции учат в университете, и многие кто пришел делать игры, естественно знакомились с ней раньше других. На курсе компьютерной графики ИТМО эту модель давали уже на втором месяце и объясняли её полгода, а остальные пять или шесть техник давали всего месяц и в конце года.

Но проблема была в том, что в CAD иерархия объектов это буквальное описание устройства изделия, и перенос этой модели в игры в целом и в игровую графику в частности был концептуальной ошибкой с самого начала. Поняли это достаточно поздно, чтобы эта модель успела поселиться в мозгах целого поколения, выпуск OpenGL в 1992 году с принципиально другой моделью (immediate mode) стал первым сигналом что играм надо двигаться в другую сторону, но инерция Scene Graph в движковой архитектуре сохраняется до сих пор.

Читать далее

«ECS — like» вектор на с++

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

В программировании частая задача это работа с последовательными элементами. В этой, порой непростой задаче, нам часто помогают вектора. Вектора бывают самыми разными от queue и set до unordered_map и обычных массивов. Все они позволяют работать с данными по разному, где то быстрее вставка, где то быстрее доступ, но все они выполняют одну важную задачу это хранение данных.

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

О чем я?

Читать далее

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

Многопоточность в SCADA системах

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

Пишу SCADA-ядро на C++ для инженерных систем: опрос ПЛК, кэширование значений, правила автоматики и управление исполнительными механизмами. На текущем этапе упёрся в практический вопрос многопоточности: как правильно разделять потоки чтения и записи, как сериализовать доступ к одному каналу связи, и насколько оправдано использование std::condition_variable. В статье показываю текущую реализацию потока опроса ПЛК и хочу услышать мнение коллег, которые разрабатывали промышленные SCADA-системы.

Читать далее

MemHawk: часть 2. Real-time flamegraph в вашей Grafana

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

В прошлой статье я рассказал, как можно сделать профилировщик памяти ориентированный на многопоточные приложения, который в 16 раз быстрее heaptrack.

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

Ключевые особенности:
Flamegraph аллокаций и деаллокаций за интервал времени
График потребления памяти с детализацией до функции/строчки в коде(настраиваемо)
Flamegraph в момент пика памяти
Flamegraph суммарного числа аллокаций
Flamegraph суммарного объема аллокаций

Звучит интересно!

Вышел рекомпилятор MegaDriveRecomp

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

Теперь возможно экспортировать в C++ код игр Sega MegaDrive (Genesis) для последующей модификации, включая ресурсы игры.

https://github.com/testdriveupgrade/MegaDriveRecomp

Читать далее

Чего не хватает в С++

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

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

Объекты-значения

Большинству объектов не нужен скурпулёзный учёт вызванных конструкторов, потому что обычно объекты нужны, чтобы хранить значения, а не выполнять код конструкторов. Например:

auto a = b + c; f(a);

Читать далее

Алиса в вашем умном доме. Или Маруся. Или Салют

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

Универсальный шлюз для работы с разными голосовыми помощниками и разными умными домами и умными устройствами.

Читать далее

Подготовка контекста C++ проекта для эффективного взаимодействия с языковой моделью в режиме чат-кодинга

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

Если почитать комментарии на хабре по тематике языковых моделей, то наблюдалась совсем недавно тенденция от резкого перехода «языковая модель только для справки» до «используем агентов». В первом случае помощь от языковых моделей минимальна. Во втором случае есть вопросы с доступностью подписок из России и/или большим расходом токенов. Надо конечно понимать что агент — это нечто большее чем просто языковая модель + обвязка, так как языковые модели специально дообучают агентным возможностям. То есть используя алгоритмическое составление контекста можно применять сравнительно бюджетные языковые модели, которые уже умеют писать код, но недостаточно хороши в агентных возможностях.

Читать далее

far2l 2.8.0 в Ubuntu 26.04: новые классные фичи

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

Привет, Хабр! Пока мир обсуждает новые версии нейросетей, в тихой гавани системных утилит произошло не менее важное для многих из нас событие: вышла Ubuntu 26.04, в которой по умолчанию идёт новая версия far2l: 2.8.0.

Если вы следите за моими дайджестами, то знаете: путь этого порта (а теперь уже полноценного форка) Far Manager из мира Windows в нативный Linux был долгим. Начиналось всё с «просто запустить», а сейчас мы пришли к инструменту, который в некоторых аспектах уже опережает своего прародителя.

В этой версии мы закрыли еще несколько древних тикетов и добавили новую функциональность. Под катом — разбор самых вкусных фич релиза.

Читать далее
1
23 ...