Перейти к содержанию

den_prox

Участники
  • Публикаций

    27
  • Points

  • Зарегистрирован

  • Посещение

Репутация

0

2 Подписчика

Информация о den_prox

  • Статус
    Постоялец
  • День рождения 01.08.1998

Информация

  • Пол
    Мужчина
  1. Конечно грубый. А вот сотрудников компании оскорблять - это видимо, не грубость. Ну что-ж, простите, не знал.
  2. Как вы себе это представляете? Компания написала лично про свои награды. Статус есть такой у других антивиров тоже) Вообще тема началась с того, что ESET облажался. Я до сих пор не пойму - в чём? Думаю, стоит закрыть эту тему, дальнейший спор - бессмысленный.
  3. А ты на русский переведи это: Top Rated Products Именно эту награду получил ESET, и всё правильно переведено. Статья верная, никаких ошибок.
  4. Это и есть этот самый тест. Переводится, как "Лучшие продукты года", а тут просто вместо "year" написано 2011, и переводится как "Лучшие продукты 2011". А сам тест этот же, неужели не понятно? Вы просто не поняли смысл, перевод правильный. Так что ESET не облажался, нисколько. А вот вы тут только бред какой-то раздули. И мне, как и некоторым другим пользователям неприятны подобные статьи. Очень печально, что ваш уровень таков.
  5. Вот ответ со стороны ESET Russia: Top Rated Products 2011 – топ лучших продуктов года. Антивирус ESET наряду с еще несколькими разработчиками стал лучшим продуктом. Мы нисколько не умаляем достоинств наших конкурентов, которые тоже вошли в этот рейтинг.
  6. ВНИМАНИЕ! Друзья, компания ESET действительно получила награду «Top Rated 2011» от AV-Comparatives. Подтверждение есть в отчете, который находится в открытом доступе. Эту награду также получили и другие антивирусные разработчики, такие как «Лаборатория Касперского», AVIRA, F-Secure, Bitdefender. Отчет находится здесь http://bit.ly/yhz616 НУ И КТО ТУТ ОБЛАЖАЛСЯ?
  7. Да, наверное вы правы. Но ещё раз говорю. Попрошу не обсирать ни кого из сотрудников.
  8. Давайте всё-же не будем обсирать конкурента? Они вас не обсирают, хотя могли-бы запросто. Просто так эту статью никто бы не дал. Либо это ошибка, либо вы что-то не так поняли.
  9. Сегодня новости об использовании графических процессоров для общих вычислений можно услышать на каждом углу. Такие слова, как CUDA, Stream и OpenCL, за каких-то два года стали чуть ли не самыми цитируемыми в айтишном интернете. Однако, что значат эти слова, и что несут стоящие за ними технологии, известно далеко не каждому. А для линуксоидов, привыкших "быть в пролете", так и вообще все это видится темным лесом. Предисловие В этой статье мы попытаемся разобраться, зачем нужна технология GPGPU (General-purpose graphics processing units, Графический процессор общего назначения) и все связанные с ней реализации от конкретных производителей. Узнаем, почему эта технология имеет очень узкую сферу применения, в которую подавляющее большинство софта не попадает в принципе, и конечно же, попытаемся извлечь из всего этого выгоду в виде существенных приростов производительности в таких задачах, как шифрование, подбор паролей, работа с мультимедиа и архивирование. Рождение GPGPU Мы все привыкли думать, что единственным компонентом компа, способным выполнять любой код, который ему прикажут, является центральный процессор. Долгое время почти все массовые ПК оснащались единственным процессором, который занимался всеми мыслимыми расчетами, включая код операционной системы, всего нашего софта и вирусов. Позже появились многоядерные процессоры и многопроцессорные системы, в которых таких компонентов было несколько. Это позволило машинам выполнять несколько задач одновременно, а общая (теоретическая) производительность системы поднялась ровно во столько раз, сколько ядер было установлено в машине. Однако оказалось, что производить и конструировать многоядерные процессоры слишком сложно и дорого. В каждом ядре приходилось размещать полноценный процессор сложной и запутанной x86-архитектуры, со своим (довольно объемным) кэшем, конвейером инструкций, блоками SSE, множеством блоков, выполняющих оптимизации и т.д. и т.п. Поэтому процесс наращивания количества ядер существенно затормозился, и белые университетские халаты, которым два или четыре ядра было явно мало, нашли способ задействовать для своих научных расчетов другие вычислительные мощности, которых было в достатке на видеокарте (в результате даже появился инструмент BrookGPU, эмулирующий дополнительный процессор с помощью вызовов функций DirectX и OpenGL). Графические процессоры, лишенные многих недостатков центрального процессора, оказались отличной и очень быстрой счетной машинкой, и совсем скоро к наработкам ученых умов начали присматриваться сами производители GPU (а nVidia так и вообще наняла большинство исследователей на работу). В результате появилась технология nVidia CUDA, определяющая интерфейс, с помощью которого стало возможным перенести вычисление сложных алгоритмов на плечи GPU без каких-либо костылей. Позже за ней последовала ATi (AMD) с собственным вариантом технологии под названием Close to Metal (ныне Stream), а совсем скоро появилась ставшая стандартом версия от Apple, получившая имя OpenCL. GPU — наше все? Несмотря на все преимущества, техника GPGPU имеет несколько проблем. Первая из них заключается в очень узкой сфере применения. GPU шагнули далеко вперед центрального процессора в плане наращивания вычислительной мощности и общего количества ядер (видеокарты несут на себе вычислительный блок, состоящий из более чем сотни ядер), однако такая высокая плотность достигается за счет максимального упрощения дизайна самого чипа. В сущности основная задача GPU сводится к математическим расчетам с помощью простых алгоритмов, получающих на вход не очень большие объемы предсказуемых данных. По этой причине ядра GPU имеют очень простой дизайн, мизерные объемы кэша и скромный набор инструкций, что в конечном счете и выливается в дешевизну их производства и возможность очень плотного размещения на чипе. GPU похожи на китайскую фабрику с тысячами рабочих. Какие-то простые вещи они делают достаточно хорошо (а главное — быстро и дешево), но если доверить им сборку самолета, то в результате получится максимум дельтаплан. Поэтому первое ограничение GPU — это ориентированность на быстрые математические расчеты, что ограничивает сферу применения графических процессоров помощью в работе мультимедийных приложений, а также любых программ, занимающихся сложной обработкой данных (например, архиваторов или систем шифрования, а также софтин, занимающихся флуоресцентной микроскопией, молекулярной динамикой, электростатикой и другими, малоинтересными для линуксоидов вещами). Вторая проблема GPGPU в том, что адаптировать для выполнения на GPU можно далеко не каждый алгоритм. Отдельно взятые ядра графического процессора довольно медлительны, и их мощь проявляется только при работе сообща. А это значит, что алгоритм будет настолько эффективным, насколько эффективно его сможет распараллелить программист. В большинстве случаев с такой работой может справиться только хороший математик, которых среди разработчиков софта совсем немного. И третье: графические процессоры работают с памятью, установленной на самой видеокарте, так что при каждом задействовании GPU будет происходить две дополнительных операции копирования: входные данные из оперативной памяти самого приложения и выходные данные из GRAM обратно в память приложения. Нетрудно догадаться, что это может свести на нет весь выигрыш во времени работы приложения (как и происходит в случае с инструментом FlacCL, который мы рассмотрим позже). Но и это еще не все. Несмотря на существование общепризнанного стандарта в лице OpenCL, многие программисты до сих пор предпочитают использовать привязанные к производителю реализации техники GPGPU. Особенно популярной оказалась CUDA, которая хоть и дает более гибкий интерфейс программирования (кстати, OpenCL в драйверах nVidia реализован поверх CUDA), но намертво привязывает приложение к видеокартам одного производителя. KGPU или ядро Linux, ускоренное GPU Исследователи из университета Юты разработали систему KGPU, позволяющую выполнять некоторые функции ядра Linux на графическом процессоре с помощью фреймворка CUDA. Для выполнения этой задачи используется модифицированное ядро Linux и специальный демон, который работает в пространстве пользователя, слушает запросы ядра и передает их драйверу видеокарты с помощью библиотеки CUDA. Интересно, что несмотря на существенный оверхед, который создает такая архитектура, авторам KGPU удалось создать реализацию алгоритма AES, который поднимает скорость шифрования файловой системы eCryptfs в 6 раз. Что есть сейчас? В силу своей молодости, а также благодаря описанным выше проблемам, GPGPU так и не стала по-настоящему распространенной технологией, однако полезный софт, использующий ее возможности, существует (хоть и в мизерном количестве). Одними из первых появились крэкеры различных хэшей, алгоритмы работы которых очень легко распараллелить. Также родились мультимедийные приложения, например, кодировщик FlacCL, позволяющий перекодировать звуковую дорожку в формат FLAC. Поддержкой GPGPU обзавелись и некоторые уже существовавшие ранее приложения, самым заметным из которых стал ImageMagick, который теперь умеет перекладывать часть своей работы на графический процессор с помощью OpenCL. Также есть проекты по переводу на CUDA/OpenCL (не любят юниксоиды ATi) архиваторов данных и других систем сжатия информации. Наиболее интересные из этих проектов мы рассмотрим в следующих разделах статьи, а пока попробуем разобраться с тем, что нам нужно для того, чтобы все это завелось и стабильно работало. GPU уже давно обогнали x86-процессоры в производительности Во-первых, понадобится видеокарта, поддерживающая технологию CUDA или Stream. Необязательно, чтобы она была топовая, достаточно только, чтобы год ее выпуска был не менее 2009. Полный список поддерживаемых видюшек можно посмотреть в Википедии: en.wikipedia.org/wiki/CUDA и en.wikipedia.org/wiki/AMD_Stream_Processor. Также о поддержке той или иной технологии можно узнать, прочитав документацию, хотя в большинстве случаев будет достаточным взглянуть на коробку из под видеокарты или ноутбука, обычно на нее наклеены различные рекламные стикеры. Во-вторых, в систему должны быть установлены последние проприетарные драйвера для видеокарты, они обеспечат поддержку как родных для карточки технологий GPGPU, так и открытого OpenCL. И в-третьих, так как пока дистрибутивостроители еще не начали распространять пакеты приложений с поддержкой GPGPU, нам придется собирать приложения самостоятельно, а для этого нужны официальные SDK от производителей: CUDA Toolkit или ATI Stream SDK. Они содержат в себе необходимые для сборки приложений заголовочные файлы и библиотеки. Ставим CUDA Toolkit Идем по вышеприведенной ссылке и скачиваем CUDA Toolkit для Linux (выбрать можно из нескольких версий, для дистрибутивов Fedora, RHEL, Ubuntu и SUSE, есть версии как для архитектуры x86, так и для x86_64). Кроме того, там же надо скачать комплекты драйверов для разработчиков (Developer Drivers for Linux, они идут первыми в списке). Запускаем инсталлятор SDK: $ sudo sh cudatoolkit_4.0.17_linux_64_ubuntu10.10.run Когда установка будет завершена, приступаем к установке драйверов. Для этого завершаем работу X-сервера: # sudo /etc/init.d/gdm stop Открываем консоль <Ctrl+Alt+F5> и запускаем инсталлятор драйверов: $ sudo sh devdriver_4.0_linux_64_270.41.19.run После окончания установки стартуем иксы: $ startx Чтобы приложения смогли работать с CUDA/OpenCL, прописываем путь до каталога с CUDA-библиотеками в переменную LD_LIBRARY_PATH: $ export LD_LIBRARY_PATH=/usr/local/cuda/lib64 Или, если ты установил 32-битную версию: $ export LD_LIBRARY_PATH=/usr/local/cuda/lib32 Также необходимо прописать путь до заголовочных файлов CUDA, чтобы компилятор их нашел на этапе сборки приложения: $ export C_INCLUDE_PATH=/usr/local/cuda/include Все, теперь можно приступить к сборке CUDA/OpenCL-софта. Ставим ATI Stream SDK Stream SDK не требует установки, поэтому скачанный с сайта AMD-архив можно просто распаковать в любой каталог (лучшим выбором будет /opt) и прописать путь до него во всю ту же переменную LD_LIBRARY_PATH: $ wget http://goo.gl/CNCNo $ sudo tar -xzf ~/AMD-APP-SDK-v2.4-lnx64.tgz -C /opt $ export LD_LIBRARY_PATH=/opt/AMD-APP-SDK-v2.4-lnx64/lib/x86_64/ $ export C_INCLUDE_PATH=/opt/AMD-APP-SDK-v2.4-lnx64/include/ Как и в случае с CUDA Toolkit, x86_64 необходимо заменить на x86 в 32-битных системах. Теперь переходим в корневой каталог и распаковываем архив icd-registration.tgz (это своего рода бесплатный лицензионный ключ): $ sudo tar -xzf /opt/AMD-APP-SDK-v2.4-lnx64/icd-registration.tgz -С / Проверяем правильность установки/работы пакета с помощью инструмента clinfo: $ /opt/AMD-APP-SDK-v2.4-lnx64/bin/x86_64/clinfo ImageMagick и OpenCL Поддержка OpenCL появилась в ImageMagick уже достаточно давно, однако по умолчанию она не активирована ни в одном дистрибутиве. Поэтому нам придется собрать IM самостоятельно из исходников. Ничего сложного в этом нет, все необходимое уже есть в SDK, поэтому сборка не потребует установки каких-то дополнительных библиотек от nVidia или AMD. Итак, скачиваем/распаковываем архив с исходниками: $ wget http://goo.gl/F6VYV $ tar -xjf ImageMagick-6.7.0-0.tar.bz2 $ cd ImageMagick-6.7.0-0 Далее устанавливаем инструменты сборки: $ sudo apt-get install build-essential Запускаем конфигуратор и грепаем его вывод на предмет поддержки OpenCL: $ LDFLAGS=-L$LD_LIBRARY_PATH ./confi gure | grep -e cl.h -e OpenCL Правильный результат работы команды должен выглядеть примерно так: checking CL/cl.h usability... yes checking CL/cl.h presence... yes checking for CL/cl.h... yes checking OpenCL/cl.h usability... no checking OpenCL/cl.h presence... no checking for OpenCL/cl.h... no checking for OpenCL library... -lOpenCL Словом "yes" должны быть отмечены либо первые три строки, либо вторые (или оба варианта сразу). Если это не так, значит, скорее всего, была неправильно инициализирована переменная C_INCLUDE_PATH. Если же словом "no" отмечена последняя строка, значит, дело в переменной LD_LIBRARY_PATH. Если все окей, запускаем процесс сборки/установки: $ sudo make install clean Проверяем, что ImageMagick действительно был скомпилирован с поддержкой OpenCL: $ /usr/local/bin/convert -version | grep Features Features: OpenMP OpenCL Теперь измерим полученный выигрыш в скорости. Разработчики ImageMagick рекомендуют использовать для этого фильтр convolve: $ time /usr/bin/convert image.jpg -convolve '-1, -1, -1, -1, 9, -1, -1, -1, -1' image2.jpg $ time /usr/local/bin/convert image.jpg -convolve '-1, -1, -1, -1, 9, -1, -1, -1, -1' image2.jpg Некоторые другие операции, такие как ресайз, теперь тоже должны работать значительно быстрее, однако надеяться на то, что ImageMagick начнет обрабатывать графику с бешеной скоростью, не стоит. Пока еще очень малая часть пакета оптимизирована с помощью OpenCL. FlacCL (Flacuda) FlacCL — это кодировщик звуковых файлов в формат FLAC, задействующий в своей работе возможности OpenCL. Он входит в состав пакета CUETools для Windows, но благодаря mono может быть использован и в Linux. Для получения архива с кодировщиком выполняем следующую команду: $ mkdir flaccl && cd flaccl $ wget www.cuetools.net/install/flaccl03.rar Далее устанавливаем unrar, mono и распаковываем архив: $ sudo apt-get install unrar mono $ unrar x fl accl03.rar Чтобы программа смогла найти библиотеку OpenCL, делаем символическую ссылку: $ ln -s $LD_LIBRARY_PATH/libOpenCL.so libopencl.so Теперь запускаем кодировщик: $ mono CUETools.FLACCL.cmd.exe music.wav Если на экран будет выведено сообщение об ошибке "Error: Requested compile size is bigger than the required workgroup size of 32", значит, у нас в системе слишком слабенькая видеокарта, и количество задействованных ядер следует сократить до указанного числа с помощью флага ‘--group-size XX’, где XX — нужное количество ядер. Сразу скажу, из-за долгого времени инициализации OpenCL заметный выигрыш можно получить только на достаточно длинных дорожках. Короткие звуковые файлы FlacCL обрабатывает почти с той же скоростью, что и его традиционная версия. oclHashcat или брутфорс по-быстрому Как я уже говорил, одними из первых поддержку GPGPU в свои продукты добавили разработчики различных крэкеров и систем брутфорса паролей. Для них новая технология стала настоящим святым граалем, который позволил с легкостью перенести от природы легко распараллеливаемый код на плечи быстрых GPU-процессоров. Поэтому неудивительно, что сейчас существуют десятки самых разных реализаций подобных программ. Но в этой статье я расскажу только об одной из них — oclHashcat. oclHashcat — это ломалка, которая умеет подбирать пароли по их хэшу с экстремально высокой скоростью, задействуя при этом мощности GPU с помощью OpenCL. Если верить замерам, опубликованным на сайте проекта, скорость подбора MD5-паролей на nVidia GTX580 составляет до 15800 млн комбинаций в секунду, благодаря чему oclHashcat способен найти средний по сложности восьмисимвольный пароль за какие-то 9 минут. Программа поддерживает OpenCL и CUDA, алгоритмы MD5, md5($pass.$salt), md5(md5($pass)), vBulletin < v3.8.5, SHA1, sha1($pass.$salt), хэши MySQL, MD4, NTLM, Domain Cached Credentials, SHA256, поддерживает распределенный подбор паролей с задействованием мощности нескольких машин. Автор не раскрывает исходники (что, в общем-то, логично), но у программы есть нормально работающая Linux-версия, которую можно получить на официальной страничке. Далее следует распаковать архив: $ 7z x oclHashcat-0.25.7z $ cd oclHashcat-0.25 И запустить программу (воспользуемся пробным списком хэшей и пробным словарем): $ ./oclHashcat64.bin example.hash ?l?l?l?l example.dict oclHashcat откроет текст пользовательского соглашения, с которым следует согласиться, набрав "YES". После этого начнется процесс перебора, прогресс которого можно узнать по нажатию <s>. Чтобы приостановить процесс, кнопаем <p>, для возобновления — <r>. Также можно использовать прямой перебор (например, от aaaaaaaa до zzzzzzzz): $ ./oclHashcat64.bin hash.txt ?l?l?l?l ?l?l?l?l И различные модификации словаря и метода прямого перебора, а также их комбинации (об этом можно прочитать в файле docs/examples.txt). В моем случае скорость перебора всего словаря составила 11 минут, тогда как прямой перебор (от aaaaaaaa до zzzzzzzz) длился около 40 минут. В среднем скорость работы GPU (чип RV710) составила 88,3 млн/с. Выводы Несмотря на множество самых разных ограничений и сложность разработки софта, GPGPU — будущее высокопроизводительных настольных компов. Но самое главное — использовать возможности этой технологии можно прямо сейчас, и это касается не только Windows-машин, но и Linux. Info Суть технологии GPGPU — произвольные вычисления на видеокартах. Существует OpenCL SDK, разрабатываемый компанией Intel, но пока с его помощью можно запускать приложения только на классическом CPU. FASTRA II — суперкомпьютер, построенный с использованием 13 видеокарт, мощностью 12TFLOPS. Links bzip2-cuda.github.com — реализация архиватора bzip2с использованием CUDA. www.hoopoe-cloud.com — облачный сервис, позволяющий загружать и запускать софт с поддержкой CUDA и OpenCL.
  10. Сенсор Kinect разработан для Xbox 360 и позволяет играть в игры без всяких приспособлений в руках. Появившись в ноябре 2010 года, он стал самым продаваемым электронным устройством в мире: за первые 2 месяца было продано более 10 млн штук. Изначально сенсор работает лишь с консолью, но при помощи ловких движений рук ты сможешь заставить его работать с PC, а он поможет тебе поддерживать физическую форму! Прежде чем втыкать Kinect в компьютер, разберемся с его внутренностями. Наш экземпляр, который дали помучить ребята из xbox-zone.ru, разбирать мы не решились, да и незачем — на сайте ifixit.com опубликовано подробное пошаговое руководство о том, как разобрать его до винтика. Итак, внутри у Kinect’a находятся: Камера видимого диапазона — обычная RGB-камера, похожа на среднестатистическую веб-камеру: 640x480 и 30 кадров в секунду. Инфракрасный лазерный проектор, который создает в пространстве сетку из точек. Камера, снимающая в инфракрасном спектре, которая регистрирует изображение этой сетки. Стереомикрофон с продвинутой системой шумопонижения — для правильного голосового управления. Мотор, регулирующий положение датчика. Чип PrimeSensor — творит главную часть магии, обрабатывая картинку с ИК-камеры, дает на выходе — 3D-картинку. Подключение Kinect’ы, продающиеся в коробках, уже имеют все необходимое для работы, их можно подключить к компьютеру напрямую. Если же сенсор из комплекта с новым xbox’ом, то к нему потребуется специальный адаптер, так как разъем USB там нестандартный, с дополнительным питанием 12 В (сенсору слабенького тока от порта недостаточно). Оригинальный блок питания можешь купить в магазине Microsoft за $34,99, а сэкономить получится, заказав китайский клон в три раза дешевле. Теперь можешь подтыкать к компьютеру и начинать возиться с программной частью. Драйвера Как только Кинект появился, компания Adafruit объявила конкурс с призом в $3000 тому, кто создаст открытый драйвер для сенсора. Не прошло и недели, и денежки уже лежали на счету у победителя — Гектора Мартина, а первый работоспособный драйвер — в репозитории на github.com/OpenKinect/libfreenect. Многого он еще не умел, но главное — выводить карту глубин в окне OpenGL у него уже получалось. Драйвер продолжает развиваться, и у него есть преимущества — он распространяется под лицензией apache 2.0, которая позволяет использовать его в коммерческих проектах, и у него есть обертки для целой кучи языков (java, matlab, python, ruby). Но тебе лучше взять другой драйвер. Сердце Kinect’а разработано не великой и могучей Microsoft, а молодой компанией PrimeSence. Для них Kinect — всего лишь один продукт, использующий их технологию NUI (natural user interface) — естественного пользовательского интерфейса, который позволяет человеку взаимодействовать с системой визуально, при помощи жестов, а также при помощи голосовых команд. Они желают повсеместного распространения своего детища и активно помогают open source-сообществу. В их репозитории на гитхабе лежит драйвер для референсного сенсора. Напрямую с кинектом он не работает, но его допиленная версия справляется с этой задачей отлично! Скачать его можно, например, с сайта проекта Faast. После установки загляни в диспетчер устройств — в разделе PrimeSensor должно быть три устройства: Kinect Camera, Kinect Motor и Kinect Audio. Но кроме самого драйвера, тебе потребуются библиотеки OpenNI и PrimeSense NITE. OpenNI — это некоммерческая организация, которая стремится создать открытый стандарт для "Естественных взаимодействий" (Natural Interactions). Также она разработала OpenNI — одноименный фреймворк с открытым исходным кодом, созданный, чтобы взаимодействовать с одной стороны — с оборудованием, и с более высокоуровневыми программными прослойками — с другой стороны. Развивается он бурно, и тебе потребуется последняя нестабильная его версия, загрузить которую можно здесь. NITE — это промежуточное ПО, которое решает задачи определения жестов для управления компьютером и играми и работает в связке с OpenNI. Хотя это и коммерческий продукт, но его разработчик, PrimeSence, распространяет бесплатный ключ, которым может пользоваться кто угодно. Вот этот ключ — 0KOIk2JeIBYClPWVnMoRKn5cdY4=. Его надо ввести при установке. Загрузить NITE можно по ссылке. После нужно изменить конфигурационные xml-файлы. Правильные версии можно загрузить по адресу. Отличаются они от тех, что уже предустановленны, только указанием серийного ключа. Распакуй архив и скопируй файл SampleConfig.xml из папки KinectXMLs\OpenNI в папку Data внутри каталога OpenNI (вероятнее всего, он внутри папки C:\Program Files\), а файлы из папки KinectXMLs\NITE — в C:\Program Files\Prime Sense\NITE\Data. Руки вверх, в позу Пси! Все готово, теперь можно пробовать кинект в деле. Для начала посмотри, какими готовыми программами ты можешь воспользоваться. Faast (Flexible Action and Articulated Skeleton Toolkit) — это инструментарий, который позволяет завязать движения пользователя на различные нажатия кнопок, перемещения мыши или действия джойстика. Таким образом можно подобрать набор действий, чтобы весьма правдоподобно играться в любую игру на PC. Загрузить его можно с projects.ict.usc.edu/mxr/faast/.Пользоваться программой нетрудно. Первым делом нужно загрузить файл конфигурации, написать который ты сможешь сам. Например, так он будет выглядеть для World of Warcraft: # связь входного и выходного действия # Формат: # название_входного_действия порог тип_выходного_действия действие left_arm_out 10 key a left_arm_across 10 key d lean_forwards 15 key w lean_backwards 10 key s left_arm_forwards 20 key tab right_arm_forwards 20 key 1 right_arm_up 12 key 4 right_arm_across 15 key 2 right_arm_out 15 key 3 После этого необходимо откалибровать пользователя, чтобы программа поняла, где у тебя руки, а где ноги. Для этого необходимо встать в позу Пси, а проще говоря, встать ровно и поднять руки вверх, словно на тебя навели ствол нехилого калибра. После того как опознание завершится — поверх тела будет изображен схематичный человечек из прямых линий. Все — теперь компьютер покорно следит за твоими жестами. Kinemote Другая программка для универсального управления. Из коробки позволяет управлять мультимедиа-центром XBMC и просто курсором мыши. Приятна она тем, что не требует калибровки и переводится в активный режим заранее выбранным жестом. Новые версии периодически выкладываются на сайте kinemote.net. А после последнего обновления в комплекте появилась еще и программа, позволяющая управлять не всем телом, а пальцами рук, правда, несмотря на все попытки, у меня она так и не заработала. Ultraseven Ультра Севен — это японский супергерой из конца шестидесятых, который бы мог и потеряться в памяти поколений, если бы не кинект и программка Ultraseven. Благодаря этой маленькой игрушке каждый может предстать в облике этого персонажа. Чтобы одеть его костюм, нужно встать в позу Пси. А уже оказавшись в красном облачении, можешь прикладывать руки к ушам, чтобы стрелять из смертоносного лазера и запускать бумеранг, торчащий из головы в виде ирокеза. Кроме тебя самого, отслеживаются и другие объекты в комнате — лучи будут пролетать за ближе лежащими предметами. Да, важное замечание — игрушка требует достаточно серьезной видеокарты, а на слабом железе работать будет очень нестабильно. Сайт проекта: code.google.com/p/kinect-ultra/. В здоровом теле — здоровый дух Теперь — самое главное! О том, как написать свою программу, которая будет использовать возможности чудо-сенсора, а заодно и поддерживать бодрость тела: после часа работы за компьютером она заблокирует клавиатуру и мышь и не позволит пользоваться вновь, пока не сделаешь десять приседаний. В уже установленном тобой пакете OpenNI есть примеры проектов (как на C++, так и на C#) для Microsoft Visual Studio 2010, которые можно дописать для своих задач. Но эти примеры несколько запутаны, и будет проще воспользоваться оберткой, которую написал греческий студент Вангос Птернеас. Найти его библиотеку — Nui.Vision.dll — можно на его сайте. С ней строчек кода понадобится гораздо меньше. Сначала создай в Visual Studio проект WPF Application и добавь в него ссылки на библиотеки OpenNi.net.dll (она находится в той папке, куда установлен OpenNI) и Nui.Vision.dll (ее можно положить в папку проекта). Теперь разберемся с работой сенсора. В описании формы MainWindow.xaml выстави размер 662x520 и добавь к ней изображение, в которое будет выводиться картинка с сенсора, и холст, на который будет выводиться дополнительная информация: <Image Name="imgCamera" /> <Canvas Name="LayoutRoot" /> Дальше в коде формы MainWindow.xaml.cs объяви использование необходимых пространств имен: using System.ComponentModel; // нужен для обработки в фоне using Nui.Vision; // работа с кинектом Затем объяви новый объект NuiUserTracker и инициализируй его в конструкторе. Да, нужно не забыть скопировать файл SamplesConfig.xml из директории OpenNI в папки Debug и Release твоего проекта. В классе формы объяви все переменные: NuiUserTracker _skeleton; // объявление объекта трекера BackgroundWorker _worker = new BackgroundWorker(); // фоновый обработчик double topY = 0; // верхнее положение приседания double bottomY = 0; // нижнее положение приседания int numOfBobs = 0; // счетчик полуприседаний bool bottomPosition, topPosition; // биты, в которых фиксируется пересечение линий Ellipse ellipse = new Ellipse // кружочек на груди { Fill = new SolidColorBrush(Colors.AliceBlue), Width = 20, Height = 20 }; В конструкторе инициализируй обработчик событий: // инициализируем объект и подгружаем конфиги кинекта _skeleton = new NuiUserTracker("SamplesConfi g.xml"); // объявляем функцию, которая будет обрабатывать // событие перемещения пользователя _skeleton.UsersUpdated += new NuiUserTracker.UserListUpdatedHandler(Skeleton_UsersUpdated); Теперь в переменной NuiUserListEventArgs.Users представлены все обнаруженные пользователи и набор координат всех распознанных частей их тел. Далее напиши обработчик события смены координат пользователя. Как только у тебя появляется ненулевое значение вертикальной координаты шеи пользователя — считай, что он готов приседать. Потом добавь две линии. Одна чуть ниже шеи, а другая — чуть выше пояса. Одним приседанием будет считаться двойное пересечение обеих линий: сначала — сверху вниз, а потом — снизу вверх. Отслеживается пересечение линий шеи (хотя визуально она где-то на груди). Такой вариант не идеальный — можно схалтурить, нагибаясь, или подойдя поближе к сенсору. // проделываем все манипуляции для каждого пользователя // (хотя приседать они будут под одну гребенку) foreach (var user in e.Users) { // если впервые нашлась шея if ((topY == 0) && (user.Neck.Y !=0) ) { // определяем положение верхней линии topY = user.Neck.Y+20; Line topLine = new Line { // определяем верхнюю линию Y1 = topY,X1 = 0, Y2 = topY, X2 = 662, Stroke = new SolidColorBrush(Colors.Red), StrokeThickness = 4 }; // рисуем верхнюю линию на холсте LayoutRoot.Children.Add(topLine); // определяем положение нижней линии bottomY = user.Torso.Y + 20; Line bottomLine = new Line { // определяем нижнюю линию Y1 = bottomY, X1 = 0, Y2 = bottomY, X2 = 662, Stroke = new SolidColorBrush(Colors.Blue), StrokeThickness = 4 }; // рисуем нижнюю линию на холсте LayoutRoot.Children.Add(bottomLine); // рисуем шею на холсте LayoutRoot.Children.Add(ellipse); } При каждом изменении координат нужно проверять, не произошло ли приседания: ellipse.Margin= new Thickness(user.Neck.X, user.Neck.Y, 0, 0); //перемещаем кружочек вслед за шеей // ставим флажок верхнего положения if (user.Neck.Y+5 < topY) topPosition = true; // ставим флажок нижнего положения if (user.Neck.Y + 25 > bottomY) bottomPosition = true; if (topPosition && bottomPosition) { // если оба флага есть numOfBobs++; // половину приседания в копилку topPosition = false; // сбрасываем флажки bottomPosition = false; } // если полуприседаний набралось двадцать штук — значит все, // выключаем программу if (numOfBobs >= 20) { Application.Current.Shutdown(); // выходим из программы } Осталось разобраться с таймером и блокировкой клавиатуры и мыши. Сперва в App.xaml.cs нужно добавить еще одно пространство имен: // работа с неуправляемым кодом, понадобится для // блокировки клавиатуры using System.Runtime.InteropServices; Потом объявить метод блокировки клавиатуры и мыши. Удобно воспользоваться функцией Windows API BlockInput: public partial class NativeMethods { [system.Runtime.InteropServices.DllImportAttribute( "user32.dll", EntryPoint = "BlockInput")] [return: System.Runtime.InteropServices.MarshalAsAttribute( System.Runtime.InteropServices.UnmanagedType.Bool)] public static extern bool BlockInput( [system.Runtime.InteropServices.MarshalAsAttribute( System.Runtime.InteropServices.UnmanagedType.Bool)] bool fBlockIt); } Для таймера можно создать отдельную форму и указать ее в App.xaml в качестве точки входа в программу. В код этой формы нужно добавить нэймспэйс работы с таймерами: using System.Timers; Объявить таймер: private static System.Timers.Timer TheTimer; А дальше запустить его, например, по нажатию кнопки: private void button1_Click(object sender, RoutedEventArgs e) { // ставим таймер на час TheTimer = new System.Timers.Timer(3600000); // как пройдет — блокируем комп TheTimer.Elapsed += new ElapsedEventHandler(BlockPC); TheTimer.Enabled = true; } А при срабатывании таймера будет блокироваться пользовательский ввод и открываться окошко с видео с кинекта: void BlockPC(object source, ElapsedEventArgs e) { App.NativeMethods.BlockInput(true); // блокируем ввод // создаем экземпляр формы с картинкой от сенсора MainWindow w = new MainWindow(); w.Show(); }// и показываем ее Осталось не забыть добавить отмену блокировки перед выходом из программы: // возвращаем пользователю клавиатуру и мышь App.NativeMethods.BlockInput(false); Если что-то не получилось, то полный код проекта и все файлы, необходимые для запуска, ты сможешь найти на диске. Одного кинекта мало Однако, эксперименты с кинектом одним кинектом ограничиваются! Если к сенсору добавить проектор — то получится система дополненной реальности, хочешь подсвечивай отдельные объекты в комнате, рисуй светом на стенах или создай систему, которая бы интеллектуально гоняла кота за световым пятнышком. Один кинект дает карту глубин с одной стороны, а если их взять 3 или 4 и расставить по углам, то можно получить полную трехмерную картину внутреннего пространства. Настоящий 3d-сканер, работающий в реальном времени! Но не все только людям! Еще Kinect придется по вкусу и роботам — еще бы, раньше трехмерные лазерные дальномеры стоили несколько тысяч долларов, а это устройство реализует те же возможности всего за две сотни. Таким образом, можно собрать мощного робота на недорогих серийных компонентах. Например: iRobot Create в качестве шасси, обычный нетбук с установленной Ubuntu и ROS — в роли мозга системы, а Kinect — в качестве датчиков. Именно так и выглядит Willow Garage Turtlebot. Да похожим образом устроен и Bilibot, к которому прикреплена еще и миловидная красная клешня. Плюс уже доступен для заказа за $1200. Вообще кинект — первый представитель нового класса устройств. Уже готов и его конкурент, изначально нацеленный на работу с PC, — Asus WAVI Xtion. Вероятно, пройдет еще немного времени, и к этой гонке подключатся новые производители, библиотеки обзаведутся обертками для множества языков, и готовые решения войдут в повседневную жизнь, а вид человека, машущего руками перед компьютером, станет обычным делом.
  11. Скажите, где можно скачать хороший видеоредактор типа nero multimedia show?
  12. Автомобили, оборудованные технологией OnStar, будут докладывать о своих владельцах даже если они не обращаются в автосервис, это произойдёт в декабре в связи с изменением политики компании. OnStar – это услуга, предлагаемая General Motors, которая встраивает в продаваемые автомобили мобильный телефон, спутниковую навигацию, а также комплект дистанционного слежения. Владельцам предлагалось подписаться на услугу навигации и автоматического сообщения о поломке, но изменённая политика компании предусматривает сбор данных о водителях, даже если они не подписывались на эту услугу. В сообщении, разосланном пользователям, GM объясняет, что с декабря этого года начнёт собирать информацию обо всём, начиная от уровня масла до автопробега, о подробностях любых аварий, связанных с транспортным средством – включая направление толчка, использование ремней безопасности и расположение/скорость транспортного средства в момент аварии. Это очень важная деталь, во всяком случае для страховых компаний. Несколько страховых претензий уже были признаны недействительными после того, как автомобили "настучали" на своих владельцев, и OnStar будет и дальше передавать данные в полицию или любым другим заинтересованным лицам. До сих пор эти данные были доступны только если владельцы подписались на эту услугу, но с декабря каждый, чья машина оборудована этой технологией, и кто официально не отказался, станет объектом слежения. В своём заявлении компания поясняет, что будет также собирать анонимные данные для анализа трафика и использования, возможно, они будут более ценными для General Motors чем подробности о самих пользователях. Источник: xakep.ru
×
×
  • Создать...

Важная информация

Мы используем файлы cookie, чтобы улучшить работу сайта. Продолжая пользоваться этим сайтом, вы соглашаетесь, что некоторые из ваших действий в браузере будут записаны в файлы cookie. Подробную информацию об использовании файлов cookie на этом сайте вы можете найти по ссылке узнать больше.