Это больше вопрос про “что мы имеем” или “чем мы обладаем”. Я помню, как детстве, находя интересный мне сайт я хотел его распечатать. Я тогда не знал о закладках, да и не помогли бы они (нужен доступ в интернет). Тут есть 2 идеи, которые были присущи интернету тех лет: Интересная информация - бесплатная. Ты можешь обладать этой информацией. Правда, для полной картины нужно что-то еще, а именно - в нем есть интересная информация и она может исчезнуть в любой момент (страницы умирают постоянно и слава архиву). ...
Структура передачи последнего стейта потоку
Intro и постановка задачи Возникла у меня задача передавать данные между потоками со следующими условиями: Любой пакет не зависит от предыдущего. Новый пакет отменяет значение предыдущего. Пакет может быть сформирован лишь в определенный момент времени (не по запросу потребителя). Другими словами есть некоторый снепшот состояния подсистемы, который уникален для каждого отрезка времени. Другой подсистеме нужно получать последнее доступное состояние (в любой момент времени). Решение получилось достаточно интересным, чем и решил поделиться с общественностью. ...
Генерация обертки XMVector на шаблонах
Intro В библиотеке DirectXMath есть тип XMVector, который использует SIMD инструкции, для обеспечения большей производительности. Есть у него один недостаток - это упакованные данные и для получения привычного представления вектора (как скажем в glm), необходима конвертация через функции XMStore*/XMLoad*. Таких типов достаточно много и писать обертки к каждому дело утомительное, но можно поупражняться в шаблонах для автоматической генерации оберток. Следует отметить, что использование кода ниже может привести к падению производительности вашего приложения. ...
Рекурсивный шаблонный тип
Intro Довелось мне столкнуться со странной структурой данных (похожей на JSON). Она представляет собой гетерогенное дерево, каждый узел которого содержит некоторые данные и множество дочерних узлов. Особенность заключается в том, что это множество может быть как простым контейнером (std::vector) так и ассоциативным (std::map). Получается, если узел хранит дочерние узлы в мапе - это JSON Object, а если вектор - JSON Array. В реализации этой структуры данных меня смущала сложная иерархия классов и то, что класс, который должен храниться в этом контейнере, обязательно должен реализовывать некий интерфейс. ...