Итак, закончился основной этап Rails Rumble 2010 и я рад представить вам наше творение – высокоинтеллектуальную кибер-корову Muuviz, которая может угадать, какой фильм вы недавно посмотрели, просто задав вам несколько вопросов. Наша команда – Дмитрий Максимов, Анатолий Михайлов, Зоя Новикова и ваш покорный слуга – трудилась без малого 48 часов (с перерывами на еду и сон), и надо сказать, что результат работы радует по меньшей мере нас самих. Жгучая внешность коровки и ее обширные познания в области кино просто поражают! :)
Если говорить о технической реализации, то проект получился не сильно сложным, но довольно интересным. В основе алгоритма угадывания фильма лежит та же модель вычисления, которая, по все видимости, используется в известном проекте Akinator. Мы переложили этот алгоритм на язык Ruby. Данные о вопросах и ответах хранятся в redis, кэшируются в запущенных экземплярах Rails для снижения затрат на демаршаллинг при загрузке из базы, и динамически перезагружаются при изменении. Чем больше людей играет, тем больше данных добавляется в систему и тем точнее система будет угадывать фильмы.
Кроме redis-а в приложении используется Sphinx – для поиска фильмов по базе когда система не смогла угадать фильм. Данные о фильме, включая картинки, берутся с Википедии, причем картинки подгружаются асинхронно при просмотре базы фильмов. Точно так же асинхронно подгружается рейтинг фильма на сервисе Netflix, где пользователи могут сразу посмотреть понравившийся фильм.
Конечно же, нам не хватило времени чтобы сделать все полезности и приятности, которые мы задумывали – полностью AJAX-овый интерфейс, специальные версии под iPhone и iPad (успели сделать самый минимум), интеграцию с Amazon и iTunes, и многое-многое другое. Однако, на мой взгляд, для 48 часов работы приложение получилось хорошее. Достоный прототип, из которого можно вырастить нелохой сервис. Очень скоро будет открыто голосование по конкурсным проектам. Если мы пройдем первоначальный отбор – выложу ссылку для голосования.
Сейчас как самое время покритиковать нашу работу :) Код заморожен до окончания голосования, но как только можно будет что-то править – мы внесем предложенные коррективы.
Высказывайтесь!