О шифровании с открытым ключом многие уже слышали и читали, и одним из самых популярных и известных является алгоритм RSA. Rivest, Shamir и Adleman в 1977 году опубликовали свою статью о данном алгоритме. Основывается он на факторизации простых довольно больших чисел. Пример реализации алгоритма описан Читать полностью »
Метка «c++» - 37
Реализация алгоритма шифрования RSA на C#
2013-05-26 в 9:23, admin, рубрики: rsa, криптография, Песочница, метки: c++, rsaПоддержка The Neverhood добавлена в ScummVM
2013-05-26 в 9:23, admin, рубрики: c++, classic, game development, Game Development Industry, Neverhood, old games, old school, reverse engineering, История ИТ, метки: c++, classic, game development, Neverhood, old games, old school, reverse engineering
Несколько дней назад, 15 мая, в ScummVM master была слита ветка кода с движком, который поддерживает классику квестового жанра, игру The Neverhood.
Это был один из самых захватывающих и длинных проектов в ScummVM. Разговоры об этом шедевре продолжались в течение нескольких лет, и на форумах регулярно просили добавить поддержку этой игры. Два года потребовалось на разработку движка, и я хочу коротко рассказать, как это происходило.
Как сделать ваше приложение быстрым: профильная оптимизация C++
2013-05-24 в 6:01, admin, рубрики: c++, Visual Studio, visual studio 2012, Блог компании Microsoft, оптимизация кода, метки: c++, visual studio 2012, оптимизация кода Профильная оптимизация это очень интересный способ оптимизации кода приложения в среде выполнения (в команде разработчиков Visual C этот метод называют POGO или PGO, от английского Profile Guided Optimization). Впервые профильная оптимизация была применена в конце 90-х исследовательскими группами в Visual C и Microsoft. Тогда она была рассчитана для архитектуры Itanium. Затем PGO была включена в состав Visual Studio C/C++ 2005. На сегодня это основной процесс оптимизации, значительно повышающий производительность приложений Microsoft и других разработчиков.
В этом посте будет рассказано, как создавать более быстрые и высокопроизводительные нативные приложения. Для начала, познакомимся ближе с PGO, а затем рассмотрим на примере (симуляция NBody), как с помощью нескольких простых шагов можно применить этот процесс оптимизации в ваших приложениях. Для работы используйте исходный код из примера. Для сборки проекта вам понадобится DirectX SDK.
Читать полностью »
Создание небольшой игры с помощью tengine
2013-05-21 в 12:50, admin, рубрики: game development, Gamedev, multiplatform, tengine, разработка, метки: c++, Gamedev, multiplatform, tengineСовсем недавно я опубликовал пост о моем небольшом проекте tengine. Для меня довольно неожиданным было то, что многие проявили интерес к его идеям и наработкам. А раз есть интерес – это повод продолжить публикации.
Предлагаемая вам статься является туториалом по созданию небольшой игры. Необходимость в нем очевидна: идеологически, создать что-либо в tengine без редактора уровней (MapEditor3, далее me3) фактически невозможно. Именно с помощью него ресурсы привязываются к объектам игры, генерируются файлы с константами-идентификаторами, создается сцена, звуковые схемы и т.д. И самое главное – me3 генерирует готовые бинарные файлы уровней, необходимые для работы логики tengine: файл с общими данными (o-файл), файлы с данными по каждому уровню (l[0..n]-файлы) и файлы с текстовыми тынными (t[0..n]-файлы)
Сравнение популярности технологий в России и мире
2013-05-19 в 19:23, admin, рубрики: c++, java, javascript, php, python, Программирование, метки: c++, java, javascript, PHP, pythonВ сети легко находится множество источников, где приводится современная статистика использования языков программирования в мире. Одним из самых известных индикаторов является TIOBE Programming Community Index. Однако все это в большинстве — общемировая статистика, а как обстоит дело в России? Отличается ли Россия от остального мира, и если да, то как?
Для того, чтобы оценить популярность того либо иного языка, необходима выборка, количественно показывающая использование одного языка сравнительно с другими. Для этого подходят, например:
- продажи или наименования книг
- предложения вакансий
- проекты с открытым кодом в GitHub
- группы и форумы
Основой для предлагаемой читателям оценки являются темы на сайтах вопросов и ответов по программированию универсальной направленности (независимо от языка или платформы) в мире и в России, а именно StackOverflow.com и HashCode.ru. Почему взяты именно эти сайты?
Stackoverflow.com — это оригинальный сайт, где на высоком профессиональном уровне спрашиваются и отвечаются вопросы, связанные с разработкой программного обеспечения. Сайт содержит более 2 миллионов вопросов, из них 81% отвечено (согласно критериям принятым на сайте).
HashCode.ru — это наиболее успешная попытка в России из известных автору (самый популярный сайт подобного рода) перенести оригинальную идею на местную почву: сайт содержит порядка 30 тысяч вопросов, из них 80% отвечено. На форуме общаются более 12 тысяч профессиональных программистов.
Популярность языка программирования будет оцениваться по количеству вопросов, отмеченных ярлыком, соответствующим какому-либо языку.
- Считается общее количество вопросов
- Считается количество вопросов по метке
- Считается удельный вес (доля) вопросов по ярлыку на сайте
- Языки ранжируются в соответствии с удельным весом на сайте
Полученная оценка будет отражать популярность языка программирования, в случае StackOverflow — в мире, в случае ХэшКода — в России. Эта оценка будет достаточно грубой, поскольку заранее неизвестно насколько статистически представительна взятая выборка (так же как трудно оценить результаты голосования в целом по стране, зная результаты выборов в отдельном поселке).
Читать полностью »
Маленький мультиплатформенный 2d движок tengine (android/win32/freeBSD)
2013-05-15 в 17:27, admin, рубрики: android, freebsd, game development, Gamedev, multiplatform, Ndk, OpenGL, OpenSL ES, tengine, win32, разработка, метки: android, c++, freebsd, Gamedev, multiplatform, Ndk, OpenGL, OpenSL ES, tengine, win32Приветствую всех, кому стало интересно узнать о моем небольшом проекте, которым занимаюсь в свободное от работы время, о своем долгоиграющем проекте под названием «tengine».
Какова же цель этого поста? Ответ простой — я ищу однодумцев. Я верю в то, что есть еще много людей, которым нравится славный и добрый олдскул. В этом и вся миссия — писать удовольствия ради что-то маленькое, но вполне функциональное, платформу для «приставочных» игрушек в стиле 8/16 бит.
Главная особенность, отличающая tengine от сотен подобных поделок — не совсем стандартная идеология:
- архитектура проекта делает упор на минимизацию использования динамической памяти. Если память и выделяется, она выделяется исключительно на инициализации подсистем
- использовать динамическую память нужно так, как будто не существует операционной системы, постоянно помнить о фрагментации. Удаление памяти происходит в строго обратном порядке создания (за этом следит простой механизм контроля удаляемых указателей)
- использование сторонних библиотек сведено к минимуму и должно быть аргументировано, зачастую это потенциальный источник фрагментации памяти
- игровая сцена представляет собою готовую для использования память, сгенерированная редактором уровней
- работа с объектами сцены игры ведется исключительно через идентификаторы, динамически создать объект невозможно
- использование fixed point вместо float
- мультиплатформенность
- официальный язык проекта — си
Снимаем звёздное небо с Emgu CV
2013-05-13 в 13:47, admin, рубрики: emgu cv, астрономия, звезды, Песочница, фотография, Фототехника, метки: c++, emgu cv, астрономия, звезды, фотографияДоброго времени суток.
Так уж получилось, что довольно давно интересуюсь фотографией и астрономией. Звёздное небо снимать люблю. Так как света ночью мало, то для того, чтобы получить по-настоящему что-то красивое приходится делать довольно долгие экспозиции. Но тут всплывает другая проблема — из-за того что Земля вращается, звёзды на небе движутся. Соответственно при относительно долгих экспозициях звёзды перестают быть точками, и начинают прочерчивать дуги. Чтобы компенсировать это движение при фотографии/наблюдении deep-sky объектов существуют устройства — монтировки. К сожалению, на данный момент купить мониторвку нет возможности, поэтому я решил задаться вопросом – а можно ли реализовать подобный эффект программно и что из этого получится?
Под катом много фотографий. Все фотографии в посте мои,(почти все) кликабельны, и free-to-download.
Читать полностью »
Пишем простейший скриптовый язык программирования на C# (Часть 1)
2013-05-13 в 13:45, admin, рубрики: .net, net framework, пишем сами, Скриптинг, язык программирования, метки: c++, net framework, пишем сами, Скриптинг, язык программированияДобрый день, %username%. Сегодня мы будем писать скриптовый язык программирования на C#, а точнее его интерпретатор.
Пролог
Я изучаю C# уже год, но никак не могу его нормально выучить. Подумав чуть-чуть я понял что нужно писать что-то более сложное, и в процессе этого получать опыт. Я решил написать интерпретатор Brainfuck. Написал его я минут за 5, но он так и остался без циклов. Затем я начал придумывать свой язык, писал кучу концептов синтаксиса и т.д.
Скорее под кат!
Читать полностью »
Используем фичи C# 5 (async и await) в .NET 2.0
2013-05-12 в 10:32, admin, рубрики: .net, legacy, Mono, Mono и Moonlight, магия вуду, метки: .net, c++, legacy, Mono, магия вудуПосвящается тем 45% .NET разработчиков, что до сих пор сидят на фремворках 2.0-3.5.
Да, вы не ослышались. async и await во втором дотнете. Но всё по-порядку.
Зачем?
В какой-то момент мне надоело вручную возиться с написанием асинхронного кода. Async/awat выглядели слишком вкусными, чтобы не попробовать. Зная, что Microsoft при добавлении новых возможностей в язык и компилятор не привязывает их жёстко к фреймворку (так, extension-методы и LINQ отлично можно использовать во втором .NET, если где-нибудь объявить System.CompilerServices.ExtensionAttribute) и видя Async CTP, добавляющего возможность использования async/await в 2010-ую студию при использовании в качестве целевого фреймворка .NET 4.0, я подумал, а почему бы и нет?
Apache Thrift RPC Server. Дружим C++ и Java
2013-05-10 в 6:05, admin, рубрики: c++, java, linux, thrift, Программирование, метки: c++, java, linux, thrift Привет, коллеги.
Хочу в этом топике выложить инструкцию, как быстро прикрутить Thrift, к своим поделкам.
Thrift — технология для организации межпроцессного взаимодействия между компонентами системы. Была разработана где то в недрах Facebook. Посути это кросс-языковой фреймворк для создания RPC сервисов, на бинарном протоколе. С помощью этого решения можно «подружить» компоненты написанные на разных языках C#, C++, Delphi, Erlang, Go, Java, PHP, Python, Ruby, итд. Описание сигнатур сервисов и данных осуществляется с помощью специального IDL — языка. Технология, по своей сути, похожа на COM, но без всей этой обвязки с регистрацией компонент. Так же не будем забывать, что COM это технология только для Windows, в то время как Thrift — кросплатформенна.
Вобщем решил поэкспериментировать, попробовать вынести часть нагруженной-вычислительной логики из Java в С++, в надежде что нативный С++ код будет немного производительней, и за одно опробовать Thrift RPC, в надежде что это быстрее чем REST.
Как и положено, без бубнов и граблей не обошлось!
Читать полностью »