пятница, мая 30, 2008

А вот и флеш с поддержкой GPU

Flash 10 (Astro) умеет перекладывать часть вычислений на GPU. Есть некий Flash 3D API, при этом для рендеринга используются DirectX и OpenGL (в зависимости от ОС). То есть фактически вводится еще один уровень косвенности. Такое легкое извращение получается, что-то вроде dialup'а через IP-телефонию.

Также у Adobe есть вполне конкретные планы как-нибудь связать флеш и C, C++, Java. Видимо пытаются перетянуть огромную армию разработчиков. Идут споры о том, будет ли компиляция с C/C++/Java идти напрямую в байт-код, или все же сначала в ActionScript.
Несмотря на то, что споры по этому поводу продолжаются, на Youtube есть выступление, в котором код сначала преобразуется в ActionScript.



Ссылки по теме:
Flash 3D API
What does GPU acceleration mean? подробно о том, что именно флеш делает на GPU
Processing.js - вообще неплохо получается рисовать на канвасе браузера (пример со змейкой). Может он вообще уже не нужен, флеш этот? :-)

воскресенье, мая 11, 2008

Архитектура Skype

Skype - известная система интернет-телефонии, которой пользуется очень много народу по всему миру. Разберемся как оно работает.

Skype для работы использует P2P соединения, а не клиент-серверную модель. Что неудивительно, если вспомнить, что авторы Skype - те же люди, что работали над Kazaa. Однако совсем от клиент-серверной архитектуры им отойти не удалось. У них есть логин-серверы - это единственной централизованный компонент Скайпа (список серверов, к которым надо коннектиться запрятан в исходники Скайповского клиента). И этот единственный централизованный компонент их как-то раз подвел. В 2007 году пользователи Скайпа не могли с ним работать в течение двух дней. Причиной было то, что был выпущен Виндовый патч, который вызвал ребут всех пользовательских машин. Машины ребутнулись и стали дружно логиниться. Сервера Skype были погребены под огромным количеством одновременных логинов.

P2P соединения - это, конечно, хорошо. Однако как быть, если два пользователя, которые хотят сконнектиться, сидят за фаирволлами? Skype борется с симметричными NATами и фаирволлами следующим образом - гонит трафик через тех пользователей, кто не сидит за фаирволлом. Вообще в скайповской сети машины подразделяются на ноды - обычные машины, суперноды - которые разруливают трафик нодов, ну и на их собственные логин-серверы. Так вот, если у вас публичный IP адрес, достаточная мощность CPU, много памяти и пропускная способность сети не подкачала, то вы - супернод! И через вас пойдет чужой трафик. :-)

В качестве базы данных для работы Skype использует PostgreSQL. Но им пришлось PostgreSQL под себя затачивать. Результаты заточки распространяются под BSD лицензией. Лежат тут. Недавно поставили себе амбициозную цель: PostgreSQL должен масштабироваться до одного миллиарда пользователей.

Исходники Скайпа закрыты, протокол тоже закрыт. Есть, правда, Skype API, который позволяет расширять пользовательский интерфейс. Однако пытливые умы ковыряются в скайповском протоколе и находят интересные вещи. Есть очень известный доклад Vanilla Skype, в котором подробно рассказывается об особенностях работы Скайпа и о потенциальных его уязвимостях.

Еще парочка фактов: Для передачи звука они используют Global IP Sound (GIPS). Железо - dual или quad Opteron'ы со SCSI RAID.

Ссылки по теме:
Доклад Vanilla Skype part1[.pdf] и part2[.pdf]. Можно посмотреть видеозапись этого доклада. Осторожно, английский с сильным французским акцентом.
Skype Protocol - статья в Википедии
An Analysis of the Skype Peer-to-Peer Internet Telephony Protocol - довольно старые слайды
Иван Золотухин в своем докладе на РИТ2007 немного говорил о скайповском PostgreSQL.

вторник, мая 06, 2008

Статья "Редкая профессия"

Евгений Зуев у себя на блоге привел ссылку на свою статью "Редкая профессия". Статья старая, но я ее, например, не читала раньше... Рассказывается там о разработке С++ компилятора. Захватывающе.