Рубрика «c++» - 245

Многозначное шифрование с использованием хеш функций: продолжениеВ прошлой заметке я рассказывал о возможности создать алгоритм шифрования, основывающийся на использовании хеш-функций, позволяющий шифровать несколько текстов с различными ключами в один неразделимый информационный поток, без возможности определить сколько и каких сущностей было зашифровано. Теперь детали алгоритма стали ясны, что позволило создать утилиту, реализующую описанный метод. В этой заметке я поделюсь утилитой, проведу анализ алгоритма и предложу (довольно поверхностные) обоснования криптостойкости метода.
Читать полностью »

Создание Cocos2D x проекта в Marmalade SDK

Некоторое время назад RIM совместно с Marmalade проводили акцию по которой и мне удалось получить планшет Blackberry Playbook. По условиям акции в течение полугода с момента регистрации необходимо разработать и загрузить в Blackberry App World игру сделанную при помощи Marmlade SDK. После изучения в сети некоторого количества материала об этом SDK я наткнулся на записи о том что есть возможность использовать Cocos2D-x, что возможно сократило бы мне время на разработку(хотя я не имею опыта работы ни с Marmalade ни с Cocos2D-x). Далее я скачал последний релиз Cocos2D-x и не обнаружил в нём никаких следов возможности взаимодействия с Marmalade SDK.
Читать полностью »

В данной статье я хочу показать, как можно использовать NDC в асинхронных операциях на примере log4cpp и boost.asio

Nested Diagnostic Context (NDC) — контекст, который добавляется в лог. Этот контекст может использоваться для дальнейшей фильтрации лог файла. Особенно это полезно, если производится несколько операций, и эти операции связаны между собой, например: выборка данных из БД, обработка, упаковка в сообщение, передача сообщения по сети клиенту и т.д… Если таких операций много и происходят они параллельно (или асинхронно), то по логу иногда бывает тяжело восстановить последовательность операций. Для этого и используется NDC: вначале мы создаем уникальный(псевдо) идентификатор, и затем помечаем каждую операцию логгирования в нашей цепочке этим идентификатором.

В теории все хорошо: генерируем уникальный ID и передаем его в логгер, однако на практике возникает несколько проблем:

  • Реализация NDC в библиотеке log4cpp основана на механизме Thread Local Storage (Thread Specific Ptr), таким образом NDC хранится только для одного потока. Соответственно встает вопрос передачи NDC между потоками
  • Из первого пункта также вытекает следующая проблема: асинхронные операции, например в boost::asio::io_service. Так как asio позволяет в одном (или нескольких) потоках выполнять множество асинхронных операций, то из-за особенностей log4cpp мы не сможем увидеть в логе правильный NDC. Нужен специальный механизм, который обеспечит корректность NDC в асинхронных операциях asio

Читать полностью »

В этом посте пойдет речь об одной интересной фичи в C++11, которая называется делегирующие конструкторы (delegating constructors): почему она интересна, и как ее можно применить для более эффективного управления ресурсами, т.е. реализации идиомы RAII.

Читать полностью »

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

  • Прописываем новую версию в соответствующем исходнике проекта. Нужно ли это для пользователей или в качестве диагностической информации – несущественно.
  • Собираем проектные файлы, необходимые для setup.
  • Обновляем версию внутри nsi-файла, поскольку используем ее в окнах на этапе установки и в имени результирующего setup-файла.

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

Не претендуя на новизну, предлагаемые ниже скрипты автоматизируют сборку C/C++ Visual Studio проектов практически в один клик и будут полезны, прежде всего, при одиночной разработке.

Читать полностью »

Презентация Герба Саттера про Visual C++ и C++11 на конференции BUILD
Фото Channel9

Только что на Channel 9 закончилась презентация Герба Саттера на конференции BUILD в Редмонде. Кому интересен конспект его выступления с последними новостями про Visual C++ и C++11 в целом — прошу под кат.

Читать полностью »

Чистый C++

Давайте знакомиться.

Я — Серега. (На фото — не я). Работаю в Intel. Вместе с коллегами пишу GPA. Программирую вот уже скоро 20 лет как. Ну, это если считать со школы. Последнее время накопилось много разных мыслей, которыми хочется с кем-то поделиться. Рассказать кому-то о том, что такое хорошо, а что такое плохо. Рассказывать можно и пустоте (так даже спокойней, никто не отвлекает и не суется со Своим Самым Правильным мнением), но это не очень эффективно. Поэтому буду сливать свои мысли сюда. Вдруг кому-нибудь пригодится…

В качестве введения

Многие считают, что есть два родственных языка — C и C++. При этом C++ — это якобы тот же C, только с двумя плюсами, т.е. ООП. Это очень распространенное заблуждение. «На самом деле все не так». C и С++ — это совершенно разные языки, не имеющие между собой практически ничего общего. Однако исторически так сложилось, что C++ синтаксически совместим с C, т.е. может компилировать программы, написанные на C. Из-за этой особенности четкая грань между языками отсутствует и существует множество кода, написанного на жуткой смеси этих языков. Причем пропорция этой смеси может меняться даже в рамках одной программы у одного автора. Читать полностью »

Мы с Vass записали и выложили вторую серию второго сезона подкаста «Заметки о Qt».
Подкаст «Заметки о Qt» s02e02
Сам подкаст на rpod.ru — qt-notes.rpod.ru/287388.html
Результаты конкурса внутри!
Читать полностью »

Возможно для многих из вас неизвестна данная методика, но наши западные коллеги применяют ее уже порядка 5-ти лет. Несложно догадаться, что алгоритмы продумываются программистами под действием психотропных веществ, наибольшую популярность приобрела марихуанна (как известно лсд на 2ом месте по популярности), этот метод впервые был применен неким Алексеем Елизаровым (vk.com/alex.elizarov) aka beauty_free 30 февраля 2005 года. Он же описывал воздействие Читать полностью »

Асинхронный пинг с помощью Boost.AsioОдним из этапов сканирования узла на наличие уязвимостей является определение его сетевой доступности. Как известно, сделать это можно несколькими способами, в том числе и посредством команды ping.

Для одного из проектов по анализу защищенности в организации с большим количеством рабочих станций нам понадобилось разработать собственный «пингер». Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js