Search
Write a publication
Pull to refresh
4
0
xRay @xRay

Пользователь

Send message

Рендеринг замедленной съёмки на основе отдельных кадров

Reading time2 min
Views11K
Теперь нам не нужна высокоскоростная камера, чтобы делать замедленную съёмку. Швейцарский программист и дизайнер Саймон Югстер (Simon A. Eugster) выпустил замечательный видеоредактор slowmoVideo для рендеринга замедленной съёмки (slow motion) на основе отдельных кадров. Можно использовать slow motion как художественный эффект — чтобы подчеркнуть какой-то момент на видео. Или можно генерировать целые видеоролики на основе ограниченного количества кадров. Например, вы даёте на входе 24 кадра, а программа генерирует 240.



репозиторий git

Инструкция по установке необходимых библиотек и компиляции здесь. К сожалению, программа работает только на картах nVidia из-за использования библиотеки V3D (GPU-KLT+FLOW).

UI, скринкаст и образцы проектов

Сканируем в 3D с помощью фотоаппарата или 123D Catch

Reading time3 min
Views134K
В современном мире трехмерные технологии стали очень популярны. 3D стремительно и разнообразно входит в жизнь даже обычного человека. Начиная от 3D телевизоров, 3D сканеров и даже принтеров. Хотя последние два устройства в большей степени пока доступны только специалистам. Но технологии не стоят на месте. Появляются трехмерные принтеры стоимостью около $2000, что уже приближает время, когда они появятся, если не у каждого школьника/студента на столе, то как минимум, у каждого инженера или дизайнера. Что касается методов получения трехмерной модели с реального физического объекта, то тут тоже не все однозначно. Требуются наличие либо дорогостоящего лазерного сканера, либо можно попытать счастье с помощью лазерного строительного уровня, веб-камеры и специального программного обеспечения. Наличием всех этих вещей тоже не может похвастаться абсолютно любой человек.
Однако есть очень простой способ “сканировать” объект в 3D модель, используя обычный цифровой фотоаппарат. Как это сделать? Об этом и пойдет речь далее.
Читать дальше →

Запускаем jQuery на движке Node.js вместо браузера

Reading time2 min
Views21K
Библиотека jQuery — это общепризнанное средство манипуляции сразу несколькими форматами данных (XML, HTML, объекты DOM, обыкновенные объекты), да притом работающее посредством удобного (цепного) вызова методов с удобными (краткими) названиями. Поэтому ничуть не удивляют попытки приспособить jQuery не только к одному клиентскому, но также ещё и к серверному джаваскрипту — в частности, к Node.js.

Признаюсь честно, что когда разработчики jQuery превозмогли проблему №7102, то её название («Register jQuery as a CommonJS async module») на какое-то время даже заставило меня обмануться: я сперва подумал было, что и в Node.js (так как модули Node.js и СommonJS имеют немало общего) отныне jQuery станет работать невозбранно. Ан нет, не тут-то было. Пристальное вглядывание в коммит и в запрос на слияние позволяет осознать, что jQuery, в сущности, обрёл возможность регистрироваться только как AMD-модуль и даже проверяет свойства define.amd и define.amd.jQuery перед саморегистрацией.

Собственно говоря, архитектура jQuery «затóчена» под употребление в условиях браузерной DOM: код jQuery полагается на существование объекта window, который служит аргументом главного замыкания, окаймляющего весь код jQuery. Прежде же таких неявных предположений было ещё больше, и только с устранением проблемы №6690 библиотека jQuery перестала полагаться на существование глобальных объектов navigator и location, начав вместо того получать их как свойства объекта window. (Понятно, что такое предположение никак не подходило для Node.js, где глобальные объекты служат свойствами объекта global, а вовсе не window; а равно не подходило и ко многим прочим реализациям CommonJS.)

Потому для запуска jQuery в Node.js применяются готовые реализации браузерной DOM — такие, как пакет jsdom, на основе которого невозбранно работает, например, вот какой код, предлагаемый в качестве примера:

Читать дальше →

BrowserID: почтовый адрес как ID пользователя

Reading time2 min
Views2.2K
Mozilla закончила разработку BrowserID — единой децентрализованной системы аутентификации, которая использует HTML5, криптографию с открытым ключом и цифровые подписи. Она основана на упрощённой интерпретации Verified Email Protocol.

Даже сейчас, на первом этапе внедрения, система довольно проста для пользователя: ему нужно один раз подтвердить email, после чего он получает возможность безопасной авторизации на любом сайте в два клика мышкой, без ввода пароля. В будущем авторизация ещё более упростится, когда поддержку BrowserID внедрят в браузеры, а почтовые провайдеры станут центрами идентификации первого уровня.


Так будет работать система, если Gmail станет поддерживать BrowserID. В этом случае отпадёт необходимость подтверждать свой email на сайте Browserid.org, который сейчас является пока единственным центром идентификации первого уровня.

Кроме отсутствия паролей, ключевым преимуществом BrowserID является защита приватности — в отличие от OpenID и всех подобных систем, провайдер identity в BrowserID не получает данных о том, на каком сайте залогинился пользователь.
Как поставить форму BrowserID на своём сайте

Краткий обзор современного инструментария для начинающего разработчика Drupal

Reading time6 min
Views5.4K
Относительно недавно в Москве проходила конференция DrupalConf'2011, на которой я рассказывал про инструменты для начинающего разработчика Drupal.

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

Видео я вставляю сразу, залито оно на Яндекс.Видео, потому у большинства пользователей не должно возникать проблем с просмотром. Кто экономит трафик, переходите под кат, там только презентация и текстовый конспект.


Читать дальше →

PHP MongoDB ORM

Reading time2 min
Views12K
php+mongo
MongoDB — документо-ориентированная система управления базами данных хранящая данные в виде наборов JSON-подобных документов. Для работы с MondoDB в PHP используется pecl расширение mongo, позволяющее полноценно работать с СУБД используя объекты доступа.
В статье пойдет речь об ORM (Object-relational mapping) standalone библиотеках и фреймворках позволяющих упростить использование Mongo в PHP проектах и предоставляющих интерфейс к работе с данными.
Читать дальше →

Каждой подсказке свое время

Reading time2 min
Views2.2K
В августе мы писали о том, что у Яндекса появились «свежие» подсказки. Они помогают задавать запросы о событиях, которые произошли совсем недавно. Сегодня мы хотим рассказать еще об одной технологии, которая тоже связана с подсказками. Она позволяет ранжировать подсказки таким образом, чтобы они отвечали текущим интересам пользователей. Например, в обычные дни по запросам, начинающимся на «по», людей чаще всего интересуют [погода] и [пробки], а в канун 8 марта — [подарки] и [поздравления]. Соответственно, перед 8 марта список подсказок должен выглядеть иначе, чем в другие дни.

Чтобы подсказки были актуальными, нужно угадать, о чем люди будут спрашивать завтра. По степени сложности эта задача сравнима с прогнозированием биржевых котировок или курсов валют и решается похожими методами. Ежедневно Яндекс обрабатывает сотни миллионов запросов и на основе сложных математических моделей просчитывает востребованность подсказок на следующий день. Чтобы построить прогноз для всех подсказок (а их десятки миллионов) мы используем вычислительные мощности нескольких сотен машин.

Прогноз строится с помощью регрессионного анализа — он позволяет вычислить будущее значение величины на основе данных за прошлый период. Для каждого запроса из базы подсказок Яндекс строит кривую, которая отражает, как менялась частота запроса за предшествующий период. Затем система подбирает функцию, которая максимально точно соответствует этой кривой. И по полученной формуле вычисляет, с какой частотой пользователи зададут этот же запрос в ближайшие дни. При этом текущая частота запроса и тренд за последние несколько дней учитываются с разными весами. Веса подбираются для каждой подсказки индивидуально — так, чтобы минимизировать ошибку прогноза.

Обработав таким образом все подсказки, мы понимаем, насколько каждая из них может быть востребована завтра. И на следующий день Яндекс ранжирует подсказки в соответствии с их прогнозируемой частотой употребления. О точности прогнозов можно судить, сравнив предположения с реальными запросами пользователей. Например, вот так выглядят кривые предсказания и реальности по запросам [программа передач] и [подарки]:



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

Команда поиска,
стремимся к точности
.

Настольные игры: во что играют в IT-офисах

Reading time5 min
Views57K


В январе прошлого года я делал обзор IT-настолок, который оказался постом выбора подарков. В этом году обзор — до Нового Года, как просили в комментариях.

Раньше игры с компьютера «портировались» в настольные игры, например, так стало со Starcraft, Warcraft, Doom, Civilization, Master of Orion и кучей других шедевров.

В этом году ситуация радикально поменялась: из-за огромного распространения планшетов и мобильных телефонов с хорошей поддержкой игр, настолки стали перекочёвывать в Appstore и Android Market. Под катом обзор наиболее интересных штук этого года, пример отечественного краудсорсингового проекта и традиционный небольшой подарок всем хабражителям.

Читать дальше →

Обновлен пакет обучения Visual Studio 11 Training Course

Reading time1 min
Views5.9K
Для загрузки доступен обновленный подробный курс обучения новым возможностям Visual Studio 11, которые сегодня можно опробовать каждый желающий, установив Visual Studio 11 Developer Preview.

Загрузить новый курс можно с официальной страницы на MSDN в двух видах: веб-установщик для выборочной загрузки лабораторных работ и полный пакет установки.

Новый курс Visual Studio 11 Training Course предлагает следующие лабораторные работы:

Среда разработки Visual Studio
  • A Lap Around the Visual Studio 11 Development Environment
  • What's New in Visual Studio 11 for C++ Developers (new)
Языки
  • Asynchronous Programming in the .NET Framework 4.5
Web
  • What's New in ASP.NET and Web Development in VS 11
  • What's New in Web Forms in ASP.NET 4.5
  • What's New in ASP.NET MVC 4 (new)
  • Using Page Inspector in Visual Studio 11 (new)
  • Build RESTful APIs with WCF Web API
продложение списка...

Тестирование скорости алгоритмов шифрования в PHP

Reading time2 min
Views12K
Долгое время в своих проектах в случае необходимости шифрования, практически автоматически, выбирал AES (он же Rijndael), входящий в библиотеку Mcrypt.

Но на днях в процессе работы над скриптом бэкапа (в котором очень большое внимание уделяется скорости выполнения), решил протестировать, какой алгоритм самый быстрый.
Читать дальше →

Phalanger — Пишем на PHP, компилируем в .Net. Рост производительности?

Reading time1 min
Views2.6K
Есть такая штука, называется Phalanger.

Как следует из заголовка, проект компилирует PHP->.Net.
Зачем? Говорят, работает быстрей стандартного метода.
пара нюансов

Как создать визуальную библиотеку изображений с HTML5 Canvas

Reading time14 min
Views4.6K
Сегодня утром, открыв почту, получил очередную рассылку от Code Project, в которой был описан интересный путь создания галереи изображений при помощи Canvas элемента. Статья показалась достаточно интересной и я решил опубликовать ее перевод
здесь

Демоны на PHP

Reading time4 min
Views76K
Памятка начинающему экзорцисту.

Прежде, чем начать: я знаю, что такое phpDaemon и System_Daemon. Я читал статьи по этой тематике, и на хабре тоже.

Итак, предположим, что вы уже определились, что вам нужен именно демон. Что он должен уметь?
  • Запускаться из консоли и отвязываться от неё
  • Всю информацию писать в логи, ничего не выводить в консоль
  • Уметь плодить дочерние процессы и контролировать их
  • Выполнять поставленную задачу
  • Корректно завершать работу

Отвязываемся от консоли


// Создаем дочерний процесс
// весь код после pcntl_fork() будет выполняться двумя процессами: родительским и дочерним
$child_pid = pcntl_fork();
if ($child_pid) {
    // Выходим из родительского, привязанного к консоли, процесса
    exit();
}
// Делаем основным процессом дочерний.
posix_setsid();

// Дальнейший код выполнится только дочерним процессом, который уже отвязан от консоли

Читать дальше →

2ГИС API. Новые организации каждый день

Reading time2 min
Views8.2K
С декабря 2011 г. продукт API 2ГИС стал обновляться ежедневно. Например, если организация открылась в понедельник, уже во вторник данные о ней могут появиться в нашем справочнике. Это касается всех онлайн-продуктов на базе API: Фламп, Онлайн-версия 2ГИС и партнерские проекты. Поэтому теперь узнать адрес нового ресторана или написать отзыв о нем можно буквально на следующий день после открытия, когда информацию об этом зафиксируют наши специалисты.


Читать дальше →

Подарите Вебвизор своему сайту

Reading time1 min
Views9.6K

Мы уверены, что каждый сайт похож на живое существо – он хочет, чтобы о нем заботились, и мечтает быть нужным и полезным. Поэтому мы решили дать возможность каждому владельцу сайта сделать ему подарок — а именно Вебвизор.

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

Напомним, что Вебвизор — это уникальная технология, которая позволяет записывать и воспроизводить в формате видео действия посетителя. Действия могут быть любыми — движения мыши, прокрутка страниц, клики, выделение и копирование текста. Это позволяет оценить удобство своего ресурса, увидеть ошибки в его дизайне и структуре, в конечном счете – повысить конверсию.

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

Подарите сайту Вебвизор – и вы всё увидите сами.

Команда Яндекс.Метрики, за полезные подарки

.

Заповеди молодого разработчика Delphi

Reading time7 min
Views14K
В свое время на меня была возложена задача курирования молодых разработчиков. Начать было решено с формулировки кратких рекомендаций. Результат перед вами.

1 Коротко и неясно


  1. ЧИТАЙ КОД!
  2. Пиши код, который удобно читать всем остальным
  3. Пиши в комментарии не ЧТО делает код, а ЗАЧЕМ
  4. Предупреждения и подсказки опаснее ошибок компиляции — проект собирается без их устранения

2 Цикл разработки


  1. Постановка задачи руководителем
  2. Выработка решения
  3. Рецензирование решения
  4. Реализация решения
  5. Рецензирование кода
  6. Размещение в системе контроля версий

Читать дальше →

Простой пример реализации фонетического поиска

Reading time3 min
Views3.3K

Постановка проблемы


Имеется база данных, содержащая список российских и украинских имён-фамилий в английской транскрипции, как она записана в туристических паспортах. Поскольку некоторое время назад правила транскрибирования для оных паспортов в России поменялись (толи с английских на французские, толи наоборот), имеется вполне реальная и даже официальная возможность того, что какое либо ФИО может быть записано иначе. Кроме того, данные порой могут браться из морского паспорта, что делает ситуацию ещё запутанней.
А теперь представьте, что вам нужно быстро найти в этой базе человека по фамилии, ну например, Щеглов… (смайл)

Варианты решения


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

Читать дальше →

Конфиг-файлы в Delphi без проблем

Reading time6 min
Views17K
Как-то было дело и я задумался над тем, как же удобнее всего настройки пользователя где-нибудь локально, быстренько это дело написать и забыть. Хранить это дело я решил в xml-файле. Куда уж без них.
Главное в этом способе то, что при добавлении каких-то новых параметров или изменении старых, не нужно будет переписывать код сохранения данных и их загрузки. Все будет делаться автоматически. Все, что нам нужно — это создать базовый класс, который будет за нас все делать, а сами данные мы будем хранить в объектах классов-наследников.
читаем дальше

Delphi+PostgreSQL

Reading time2 min
Views26K
В одном из проектов понадобилось получить доступ к БД PostgreSQL из Delphi и, в частности, читать BLOB поля из этой БД. Разумеется, дабы не изобретать велосипед, решил поискать готовые компоненты. Нашлось два решения:

-бесплатное. ZeosLib.
-платное. PostgresDAC.

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

Читать дальше →

Создание генератора мира для minecraft

Reading time4 min
Views49K

Введение


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

Читать дальше →

Information

Rating
Does not participate
Registered
Activity