Обновить
296.94

C++ *

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

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

Сколько стоит содержать виртуальную девушку? Создаем подругу, записывающую кружочки в Telegram, с помощью 4 нейросетей

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

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

Поговорим о технической стороне. Как повторить этот шедевр и можно ли обойтись без сервисов OpenAI, которые сложно оплатить в России? И главное — сколько придется инвестировать в виртуальную подругу.
Читать дальше →

Call Stack Logger — инструментирование функций как способ отслеживания потока выполнения программы

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

Доводилось ли вам когда-нибудь работать над C++ проектом с такой огромной кодовой базой, что понимание того, что на самом деле происходит во время выполнения программы, требует кучи времени и сил? Откуда и какие функции вызываются? Вам когда-нибудь поручали исправить баг в таком проекте, прилагая лишь логи, которые приближают вас к нахождению первопричины проблемы так же, как Моисей к земле обетованной? А попытки воспроизведения бага не дают вам никакой полезной информации? Если ваш ответ да – пожалуйста, присаживайтесь поудобнее.

Читать далее

C++23 — финал, C++26 — начало

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

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

Комитет занимался полировкой C++23:
  • static operator[];
  • static constexpr в constexpr-функциях;
  • безопасный range-based for;
  • взаимодействие std::print с другими консольными выводами;
  • монадический интерфейс для std::expected;
  • static_assert(false) и прочее.

И прорабатывал новые фичи C++26:
  • std::get и std::tuple_size для агрегатов;
  • #embed;
  • получение std::stacktrace из исключений;
  • stackful-корутины.

Подробности

Компилятор с полностью гомоморфным шифрованием от Google

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

Ещё в мае 2022 года я переориентировал пару команд в Google на разработку полностью гомоморфного шифрования (вот объявление об этом в рассылке). С тех пор я участвовал в работе над многими проектами в этой области, в частности, руководил поддержкой на github.com/google/fully-homomorphic-encryption – это опенсорсный ПГШ-компилятор для C++. В этой статье даётся вводная информация о том, как при помощи этого инструмента компилировать программы с расчётом на ПГШ. Также пробежимся по тому, из чего этот компилятор состоит.

Читать далее

Переделка ККМ Атол в термопринтер

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

 

Некоторое время назад я увлекался тем, то писал самодельные прошивки для различных готовых устройств. Так, например, сделал пульт для управления солярием из пульта от охранной сигнализации. А что, смотрите сами:

— корпус есть отличный;

— уже встроена клавиатура и не просто, а более‑менее надежная;

— есть светодиодные индикаторы и динамик (пищалка);

— корпус штатно крепится к стене;

— все собрано красиво и на вид надежно.

Внутри есть платка с AVR микроконтроллером, разъемом внутрисхемного программирования. Что осталось:

— вывести наружу com порт для подключения к серверу;

— приделать реле для включения пускателя солярия;

— подключить блок питания;

— и главное — написать саму прошивку.

Читать далее

Приключения капитана Блада: потонет ли Арабелла?

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

Недавно в сети появилась новость о том, что был открыт исходный код игры "Приключения капитана Блада". Мы не смогли пройти мимо и проверили его качество с помощью PVS-Studio. Потонет ли легендарный корабль капитана Блада от найденных багов? Давайте узнаем!

Читать далее

Пчела на работе, разработка игр на SFML C++

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

Предыдущая тема

Делаем ли мы игру или мультимедийное приложение, важно правильно и эффективно
управлять её ресурсами.  Мы должны быть уверены, что игровые ресурсы не будут случайно уничтожены, или повторно загружены, тем самым перегружая память и работоспособность программы.

Читать далее

Просто о RCU (Read–Copy-Update). Часть 2

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

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

Читать далее

Столетний язык программирования — какой он

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

Особо амбициозные разработчики любят заявлять о том, что используемый ими язык программирования или фреймворк будет жить лет сто. Дерзкое заявление, учитывая, что разработке программного обеспечения, как таковой, всего около 65 лет. А фреймворки еще моложе. 

И всё же интересно, какие языки все еще будут использоваться через 100 лет?

Читать далее

C++17 — std::string_view и никакого копирования

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

Назначение std::string_view заключается в том, чтобы избежать копирования данных, которые уже чему-то принадлежат и для которых требуется только лишь неизменяемое представление. Как вы уже могли догадаться, этот пост будет посвящен производительности.

Сегодня речь пойдёт об одной из главных фич C++17.

Читать далее

Сам себя не потренируешь — никто не потренирует

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

Однажды мой коллега для кругозора заинтересовался темой построения треугольника Серпинского с помощью «игры в хаос». И познакомил с ней меня. Показал видео. Потом он сказал: «Ты же учишься программировать – попробуй написать программу, в которой это будет реализовано».

Читать

Тонкости C++: итак, вы объявили класс…

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

Во время работы наша команда постоянно сталкивается с некоторыми особенностями языка, которые могут быть неизвестны рядовому C++ программисту. В этой статье мы расскажем о том, как работает, казалось бы, обыденная вещь – forward-декларации классов.

Читать далее

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

Концепции Rust, которые неплохо бы знать пораньше

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

Весь минувший месяц я глаз не мог оторвать от языка программирования Rust, ведь его конёк – создание современных программ, обеспечивающих безопасную работу с памятью. За прошедшие годы появилось несколько языков, которые позиционировались как «инструмент что надо» для написания надёжного бекенд-софта. Постепенно маятник качнулся от Java/C++ к Go и Rust, выстроенных на многолетних разработках по теории языков программирования. Суть – в создании инструментов, которые были бы эффективны именно в наш век.

Читать далее

Изучение физического движка Bullet Physics. Часть 2. Примеры

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

Данная статья продолжает тему исследования библиотеки симуляции столкновений в Bullet Physics (Bullet). Предыдущая статья здесь.

Чтобы разбавить теоретические рассуждения, здесь будут приведены практические примеры, в которых освещено общее взаимодействие с объектами средствами Bullet.

В качестве системы визуализации используется Unreal Engine(UE), поскольку  хайповая штука и она мне знакома она бесплатна, имеет множество дополнений и, в целом, предоставляет красивую картинку “из коробки”.

Читать далее

Засылаем картинку из Unreal Engine на сервер в теле HTTP запроса

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

Привет, Хабражители!

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

Читать далее

Пчела на работе, разработка игр на SFML C++

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

Предыдущая тема

Обзор игры на SFML С++. Как клонировать репозиторий и собрать проект с помощью СMake. Обзор классов игры "Пчела на работе".

Читать далее

HabraTab — девайс для хаброзависимых

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

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

Что же получилось?

XY-робот с удалённым управлением

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели4K
Картинка 3dtoday.ru

Некоторое время назад, автору этой статьи пришла в голову своеобразная мысль: а что если сделать удалённо-управляемый манипулятор, который может перемещаться по XY и совершать некую полезную работу?

Сказано — сделано, и работа закипела… В качестве основы для подобного манипулятора было решено взять широко известный принцип кинематики H-bot.

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

Boson — разработка СУБД «с нуля» (часть II)

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

В первой части статьи мы обсуждали разработку самого нижнего слоя СУБД Boson - CachedFileIO. Как упоминалось, статистика такого явления как Locality of Reference говорит о том, что в реальных приложениях ~95% запросов к данным локализованы в 10-15% базы данных. При этом среднее соотношение чтения/записи - 70%/30%. Это делает эффективным использование кэша (cache) работающего на основе алгоритма Least Recently Used (LRU). Реализовав его, мы получили 260%-600% прироста скорости чтения при 87%-97% cache hits.

Следующим после кэша слоем СУБД Boson является хранилище записей RecordFileIO. Это уже первый прообраз базы данных, который начинает приносить прикладную пользу. Сформулируем верхнеуровневую спецификацию требований:

Читать далее

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