В настоящий момент группа разработчиков Luxoft работает над новым проектом – разработкой online квеста, который позволит программистам не только протестировать свои скиллы, но и окунуться в атмосферу триллера. Подробно о самой игре мы вам расскажем немного позже, 07.10.2012, когда состоится официальный запуск, а сейчас мы хотели бы поделиться с вами чисто техническими подробностями и проблемами, которые мы встретили во время процесса разработки и их решениями.
Самой главной проблемой проекта стало обеспечение безопасности серверов во время игры, т.к. суть квеста заключается в том, чтобы игроки, выполняя задания, выкладывали на сервер свои программы, где они будут впоследствии проверяться. Т.е., запуская программы, мы должны понимать, что они были написаны для решения поставленной задачи и не являются вредоносными файлами.
Читать полностью »
Рубрика «распределённые вычисления» - 5
Под капотом квеста для программистов
2012-09-17 в 8:05, admin, рубрики: Блог компании Luxoft, Веб-разработка, игра, квест, Облачные вычисления, распределённые вычисления, метки: игра, квест, распределённые вычисленияDRuby aka DRb — основа распределенных систем на Ruby. Принцип работы и обход подводных камней
2012-05-12 в 0:03, admin, рубрики: ruby, Программирование, распределённые вычисления, метки: ruby, Программирование, распределённые вычисленияНедавно вышла книга The dRuby book — distributed and parallel computing with Ruby (перевод японской книги, написанной автором самой библиотеки). В этой статье я попытаюсь дать обзор глав книги, касающихся библиотеки DRb. Если вам захочется ознакомиться с темой более подробно, книгу можно купить или скачать. Сразу скажу, что я не буду говорить в этом посте не о синхронизации потоков, ни о библиотеке Rinda.
Предположим, что вы пишите систему, которая работает с более чем одним процессом. Например, у вас есть веб-сервер, который в фоновом режиме запускает задачи, работающие долгое время. Или вам просто нужно обеспечить пересылку данных из одного процесса в другой и координировать их. Для таких ситуаций и нужна библиотека DRb. Она написана целиком на Ruby и включена в стандартную библиотеку, поэтому начать работать с ней можно моментально. Для её подключения достаточно написать require 'drb'
Достоинства библиотеки DRb большей частью проистекают из динамичности самого языка Ruby.
Во-первых, при затрате минимальных усилий на подготовительном этапе, дальше вы работаете с объектами не задумываясь, где они расположены: в одном процессе или в другом. Библиотека полностью маскирует от вас все технические детали.
Во-вторых, вы не обязаны жестко прописывать интерфейс. Любой руби-объект может выставить свой интерфейс наружу — таким образом вы можете как воспользоваться функциональностью одного из стандартных классов типа Hash или Queue, а можете сделать свой класс с любым интерфейсом. Кроме того вам ничто не мешает менять интерфейс прямо в процессе исполнения, и даже использовать method_missing для обработки любых запросов. И уж разумеется, обновление интерфейса сервера вообще никак не влияет на клиента, если тот не вызывает методы, которые изменили сигнатуру или поведение. Таким образом сервер и клиент максимально независимы.
И наконец, клиент даже не обязан знать классы объектов, которые ему возвращает сервер, он может их использовать и без этого. Таким образом сервер волен скрыть столько много деталей, сколько ему угодно.
Но, конечно, есть и подводные камни, и их предостаточно. К счастью, dRuby несложен в понимании, ну а понимание его устройства позволяет большей части проблем просто не допускать. Документация к этой библиотеке, к сожалению, не проясняет множества моментов, поэтому статья будет интересна и новичкам, и людям уже поработавшим с библиотекой.
Алгоритмы / Распределенные эволюционные вычисления
2012-02-15 в 7:04, admin, рубрики: javascript, json, node.js, web workers, генетические алгоритмы, распределённые вычисления, эволюционный алгоритм, метки: javascript, json, node.js, web workers, генетические алгоритмы, распределённые вычисления, эволюционный алгоритм Одна из моих любимых тем в программировании – эволюционные вычисления и генетические алгоритмы в частности. Пару лет назад я поднимал эту (в целом уже заезженную) тему на Хабре, но сейчас глядя на то видео немного стыдно – слишком уж туманно и сумбурно было объяснение.
Сегодня я постараюсь объяснить генетические алгоритмы проще и нагляднее, а заодно рассказать вкратце о прототипе очень простого JavaScript-фреймворка для распределенных генетических вычислений degas.js. В двух словах – degas.js запускает генетический алгоритм в виде «треда» в браузере клиента используя web workers и обменивается информацией о полученных в ходеЧитать полностью »