Распределенные вычисления “нахаляву”

8 Февраль 2008

Навеяно http://stary71.livejournal.com/5875.html и постом Роста “Две идеи на мильон”. Несмотря на то, что я буду немножко критиковать вышеупомянутые идеи, для меня это всего лишь повод рассказать о моих реальных приключениях на ниве распределенных вычислений.

Итак, идея. Есть ОЧЕНЬ БОЛЬШОЙ объем вычислений, который можно распараллелить для их исполнения на множестве машин. Соответственно, тот, кому надо эти вычисления выполнить, согласен за это заплатить. Как это можно использовать:

1. Продавать в MMORPG время машин юзеров, которые в неё играют, и таким образом окупать игру.

2. Заставить считать сложные вычисления флеш-баннеры.

Радует, что идеи очень позитивные и оригинальные :)

Начнем с того, что есть. А есть открытая (Open Source) платформа BOINC от института Berkeley, которая позволяет производить распределенные вычисления на разных машинах. Лично я принимал участие в проекте Rosetta@home в команде TSC! Russia.

Платформа имеет клиент-серверную архитектуру. Сервер раздает задания, клиент их выполняет, в порядке очереди. Особое внимание стоит уделить тому, что просчет одного задания занимает в районе нескольких часов (первое ограничение для флеш-баннеров).

Во-вторых, BOINC-платформа исполняет native-код. В свое время, во время курса “Параллельная обработка данных” мне засела в голову мысль, что можно написать более удобную платформу, чем BOINC, а именно, на базе AIR. Главным преимуществом могли стать система автообновления, встроенные примитивы для работы с сетевыми протоколами, а также универсальный клиент для разных операционных систем.

Увы, первые же эксперименты меня серьезно отрезвили. В качестве задачи была взят взлом MD5-хеша (задача: дан MD5-хеш от строки, найти строку. Решается полным перебором, обратная функция на данный день неизвестна). Задача очень легко параллелится.

Native-программа, которую я взял для сравнения, считала хеши в 1000(!) раз быстрее, чем написанная мною на AIR. Т.е. при распределенных вычислениях, когда основной проблемой является привлечение пользователей, мне для достижения той же эффективности, что и BOINC, придется привлечь в 1000 раз больше пользователей. Нереально :( Но если AS3-машину еще улучшат, я попробую :)

И, наконец, третье. Я уже упоминал, что свои вычисления проводил в рамках некоей команды (TSC! Russia). За вычисления в системе дают некоторые очки, которые создают спортивный момент мероприятия. Последнее - немаловажный фактор, благодаря чему отдельные люди объединяются в команды. Соответственно, наиболее рьяные вычислители, чтобы получить побольше очков, подключают все машины, которые находятся в их ведении, например, на работе или в институте, когда машины простаивают. И, насколько я мог судить, именно эти машины обеспечивают главную долю вычислительных ресурсов. Увы, если я прав, вариант с MMORPG тоже отпадает.

Ну, и наконец, сладкое. Считал я в Rosetta@home дней 7, подключил две машины, наслаждался вкладом в общемировой прогресс :) Однако в один прекрасный день из-за Розетты обе мои машины свалились в “синий экран смерти”, причем, благодаря тому, что программа прописалась в автозагрузке, на сервере пришлось “выковыривать” её в Safe-режиме. После чего я её благополучно удалил.

А что делаете вы с использованием Flex?

20 Декабрь 2007

В прошедшее воскресенье состоялась первая встреча Russian Adobe Flash Platform User Group. Очень рад, что мне наконец удалось встретиться с многими известными мне только по своим блогам флешерами, в том числе Константином “Constantiner” Ковалевым (очень интересный доклад сделал, спасибо!), Евгением “john” Потапенко, Иваном “iv” Дембицким, Сашей “agahov” Гаховым, Таней “0xffffff” Белой, Юрой “Бармалей” Яровым и Алексеем “Vooparker” Аникутиным, Максимом “slon_v_sapogah” Качуровским и многими другими, извините, что не могу всех упомянуть. Получил море позитива :) Отдельное спасибо хочу сказать фирме Flexis, организовавшей это мероприятие, и непосредственно Артемию Малкову.

Хорошее описание встречи можно найти здесь и здесь.

Пока была произведена попытка определить количество AS3-кодеров нашей необъятной родины с помощью анкет, раздававшихся на встрече :) меня мучал вопрос, который я сейчас и хочу вам задать: а какого рода коммерческие приложения вы делаете с использованием Flex?

Пока мне запомнились несколько мнений, в том числе, и из услышанных на встрече:

  • На Flex делают всевозможного рода онлайн ГИС-приложения. Примеры можно найти, например, здесь, еще мысли - здесь. Это удобно по многим причинам, в частности, из-за наличия готовых кусков кода под разные задачи. По сравнению с JavaScript явно меньше ручного программирования.
  • На Flex делают интерфейсы для терминалов, тщательно скинуя его с помощью Flash. Удобство заключается в меньшем объеме программирования, чем в случае использования Flash для тех же целей. Где посмотреть примеры, к сожалению, не знаю, может, кто подскажет?

Еще известно, что в нашей стране на AS3 делают крутую 3D-игру, правда, не знаю, использовался ли для этого Flex-фреймворк, но с высокой вероятностью “да”.

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

А что делаете вы с использованием Flex? Можно в общих словах, но было бы очень приятно услышать ваше мнение в комментах.

Preview: OneManga.com manga reader

11 Декабрь 2007

Если вам вдруг интересно, я на досуге люблю посмотреть аниме и почитать мангу. У каждого человека есть свое небольшое сумасшедствие. http://shounen.ru/anime/otaku/, например. На этом тему “а зачем это нужно?” считаю закрытой :)

Для любителей почитать мангу существует сайт OneManga.com. Там выкладываются свежие главы популярных манг, достаточно оперативно и в одном формате. Правда, на английском, но ждать перевода на русский того, что я хочу прочитать, долго.
Структура проста: собственно “манга” - “главы” - “страницы”. По клике на странице переходишь на следующую страницу и т.д.

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

“С этой задачей Flex должен справиться с легкостью - достаточно наладить предзагрузку картинок” - подумал я, и работа закипела. Результат можно оценить на http://qs.janvarev.ru/app/#/XmBookReader-onemanga/. Поскольку на мою просьбу в OneManga предоставить XML с мангами, главами и страницами, увы, никто не откликнулся, пришлось парсить HTML-выдачу.

Элемент гордости: на создание рабочей версии ушло всего 3 часа. Еще 3 часа было потрачено на приведение в божеский вид, легкую доработку интерфейса, About, выкладывание на сайт, написания релиза на OneManga и здесь.

PS: Приятно, но на OneManga уже есть один положительный отзыв, притом, что пост был около часа назад. Активное комьюнити, однако :)

Первая встреча Russian Adobe Flash-platform User Group

8 Декабрь 2007

…начнется в 12:00 16 декабря 2007 в московском офисе Adobe. Проводником и помощником Adobe в этом нелегком деле стала компания Flexis, за что им большое спасибо.

Не знаю, как вы, а я там буду и надеюсь увидеть многих знакомых по Flex-сообществу.

Если вы заинтересованы, срочно бегите, присоединяйтесь в группу http://groups.google.com/group/fpug?hl=ru и пишите письмо, что тоже хотите туда попасть :) Дедлайн подачи заявок - 10 декабря.

Сайт Прогимназии г. Королев

25 Ноябрь 2007

Сделали сайт для Прогимназии г. Королев: http://korolev-progym.ru/ - в общем, обычный сайт для веб-студии.

Хотя в каждом сайте, который мы делаем, пробуется что-то новое. В этот раз это касалось публикации материалов заказчика.

Далее »

Кросспост в ЖЖ

15 Ноябрь 2007

Настроил трансляцию постов из моего standalone-блога в ЖЖ. Теперь меня можно читать и здесь, и там :)

Далее »

Silverlight vs. Flash - эпопея продолжается…

15 Ноябрь 2007

«Первый канал» сделал свой выбор в пользу Silverlight

Ох, догадываюсь я, каковы были причины… :)

Кстати, уже не в первый раз наблюдаю подобную картину - например, Microsoft организовала и поставила СДО (систему дистанционного обучения) во ВГИКе, вроде. В первую очередь все были рады тому, что специалисты Microsoft им помогали на всех этапах внедрения.

Придется поразмышлять :)

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

Мое предположение: цель Microsoft - не традиционная Flash-аудитория, и даже не сервисы типа YouTube. Цель - предоставить высокопроизводительное решение для доставки HD-видео через Интернет крупным обладателям видеоресурсов. Поскольку деньги там крутятся очень большие, также будут требовать очень солидную поддержку. Что и умеет хорошо обеспечивать вышеупомянутая фирма.

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

Может мы сможем доказать обратное :)

Поиск по Flex и RIA-блогам

15 Ноябрь 2007

Сегодня наконец-то дошли руки добавить поиск в написанную мною RSS-читалку.

Естественно, первым был произведен апгрейд для аггрегатора Flex и RIA-блогов. Смотреть здесь: http://janvarev.ru/FlexBlogs

Прошел курс “Введение в анализ, синтез и моделирование систем”

10 Ноябрь 2007

Вчера обнаружил в институте интересную книжку по курсу “Введение в анализ, синтез и моделирование систем”. Книжки такие выпускаются по соответствующим курсам Интернет-университета информационных технологий (http://intuit.ru/) Там в принципе, всегда есть электронная версия, но так уж случилось, что мне было нечего почитать в электричке - вот и купил :)

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

Катастрофами называются скачкообразные дестабилизирующие изменения, возникающие в результате отклика системы на плавное изменение условий окружающей среды. <…>

Пример. Так называемый “черный вторник” на валютном рынке возник на фоне плавных, ничего катастрофического не предвещающих, условий среды (внешне эти условия плавно менялись накануне).

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

Из недостатков: конечно же, вопросы к главам и некоторые раздражающие опечатки. Хотя, безусловно, можно это понять: все авторы должны подготовить очень большое число вопросов к каждой главе, и не удивительно, что они пользуются Copy-Paste, создавая довольно формальные вопросы.

Ну, и наконец - я полностью прошел первый курс на Интуите, вот и диплом:

Диплом Интернет-Университета Информационных Технологий: Введение в анализ, синтез и моделирование систем

Если вы захотите его себе в печатном виде, обойдется это удовольствие в 200 р. - не так много.

Немного о проектировании

3 Ноябрь 2007

Написание этой заметки совпадает у меня с формальным изучением RUP (Rational Unified Process) и проектированием систем в UML. В мировом масштабе сейчас лидирует объектно-ориентированная парадигма написания ПО, на старте находятся фреймворки и паттерны проектирования (GoF).

Благодаря своей родной кафедре я сумел познакомиться с логической и функциональной парадигмой написания программ в Лиспе, Рефале и Прологе. Некоторый класс задач гораздо удобнее решать с использованием этих языков.

Сам я пишу Web-сайты на PHP, знаю, что многие делают также и очень этим довольны, несмотря на то, что люди, пишущие в нем не очень часто используют классы. Кроме того, в Web-программировании набирает большие обороты Ruby-on-Rails.

Хочу немного поразмышлять по этому поводу.

Далее »