вторник, декабря 26, 2006

Введение в контейнеры

Закончил перевод новой статьи FlexWiki - "Введение в контейнеры". Рассмотрены способы добавления и удаления элементов в контейнерах, системы координат контейнеров, события контейнеров, использование скроллбаров.

Использование Flex 2 и AMFPHP

Перевел летнюю статью Майка Поттера о работе с PHP из Flex 2 через AMFPHP.
А тем временем вышла бета AMFPHP 1.9, поддерживающая json, xml-rpc, amf3. Сервис-браузер теперь на флексе. Примеры работы с AMFPHP можно скачать на гугловской страничке проекта.

вторник, декабря 19, 2006

Первое Fisix приложение

Недавно я писал про альфа-релиз движка Fisix. Вот перевод вводного урока по его использованию.

воскресенье, декабря 17, 2006

Flex-девелоперы, терпите, ваше время - 2008 год...

Яков Файн, прослушав финансовый отчет от Адоби сделал маленький обзор:
- на данный момент прибыльными являются продукты из Creative Suite;
- Acrobat вообще рабочая лошадка;
- LiveCycle является победителем в enterprise-секторе;
- Flash Lite рулит на мобильных девайсах;
- прибылей от Flex и Apollo ожидают в 2007 году.

Поэтому флексеры вольются в мейнстрим только к 2008 году, а значит сейчас самое время учиться.

P.S. Интересно, в России кто-нибудь имеет доходы от этого? Не считая работу с забугорными закзчиками.

Вышла альфа 2d движка Fisix

Движок реализован на ActionScript 3. Скачать можно отсюда.
Примеры:
Mona the Ragdoll
Bike Game
Boxes Demo
Hourglass

Несколько уроков:
Первое Fisix приложение
Работа с Fisix в FlashDevelop
Партиклы
FisixObject
Мануал по Fisix

Думаю, скоро переведу.

Компонент FileUpload

Coding cowboys причесали свое приложение по загрузке файлов и выпустили компонент FileUpload (исходник).

вторник, декабря 12, 2006

Как правильно переносить текст в ячейке DataGrid

Брюс Филлип недавно потратил целых полтора часа на поиск решения проблемы правильного переноса в DataGrid.

Суть проблемы в следующем. Текст в ячейке с атрибутом wordWrap=true будет переноситься в остальных рядах, только если он переносится в первом. Посмотрим на следующий пример. Измените ширину правой колонки Title так, чтобы текст ячейки не требовал переноса, затем перейдите туда и обратно, чтобы обновить вид. При этом, если следующие ряды требуют переноса, то его не будет и текст просто обрежется. Если же текст первой ячейки переносится изначально, то все остальные будут переноситься тоже. То есть никакой wordWrap не поможет...

А поможет нам variableRowHeight = true!

Papervision3D - примеры использования

Papervision3D - 3D движок для Flash 8/9 проектов. Как заявляют разработчики, он отличается легкостью применения и высокой производительностью. Примеры его использования мягко говоря впечатляют:
раз, два, три, четыре и пять (с Flex'ом).



Ссылки по теме:
Страница на OSFlash
Блог разработчиков
Email лист

Исходников пока нет, но обещают в декабре.

Первая часть урока Flex Cairngorm/WebORB Issue Tracker

Дерек начал выкладывать урок по созданию Flex Cairngorm/WebORB Issue Tracker приложения. Я начал его переводить.

воскресенье, декабря 10, 2006

Переходы между цветами

Даррон Шелл выложил пример создания так называемых Color Transitions.

Примеры по скинованию Flex-приложений

Эндрю Трайс выложил в довес к своей презентации по скинованию несколько примеров скинования с исходниками, в числе которых использование scale9, изображений при скиновании, программного создания скинов и др. Загрузить весь код можно отсюда. Посмотреть работу можно со страницы оригинального поста.

четверг, декабря 07, 2006

Эмуляция repeat-x/repeat-y для фона Flex-приложения

Чтобы создать дублируемый фон для приложения можно использовать заливку beginBitmapFill для заведомо большого прямоугольника, который будет играть роль фона. Посмотреть можно здесь. Исходники там же.

среда, декабря 06, 2006

Просмотр сгенерированного из MXML-приложения AS кода

Как известно, Flex при компиляции создает из MXML-кода ActionScript. Просмотреть созданный код можно, задав параметр компиляции -keep-generated-actionscript в свойствах проекта в разделе Flex Copmiler. Теперь при компиляции будет создана папка generated, где будет расположен весь код.

вторник, декабря 05, 2006

Интеграция WPF/E и Flash

Ли Бримлоу выложил пример интеграции Flash и WPF через JavaScript и исходники.

Использование mx:Metadata для задания стилей компонентов

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

Давайте взглянем на пример. Здесь расположены два компонента (example 1 и example 2). Это два экземпляра компонента "MXML_Example". Да, выглядят они по разному, но родитель у них один. Каждый "MXML_Example" сожержит mx:Panel, mx:TextArea и mx:Button.

Посмотрим на исходный код компонентов:

<components:MXML_Example width="{(width/2)-20}" left="10" top="80" title="Example 1" styleName="example1" height="200" />
<components:MXML_Example width="{(width/2)-20}" right="10" top="80" title="Example 2" styleName="example2" height="200" />


Разница лишь в атрибуте styleName.

Давайте посмотрим на исходный код компонента "MXML_example". В теге mx:Metadata можно увидеть определения трех стилей.

<mx:Metadata>
[Style(name="panelStyleName", type="String", inherit="no" )]
[Style(name="buttonStyleName", type="String", inherit="no" )]
[Style(name="textAreaStyleName", type="String", inherit="no" )]
</mx:Metadata>


По наступлению события creationComplete эти стили применяются к компонентам внутри "MXML_Example".

private function onCreationComplete() : void
{
panel.styleName = getStyle("panelStyleName");
button.styleName = getStyle("buttonStyleName");
textArea.styleName = getStyle("textAreaStyleName");
}


А вот и сам CSS:

.example1
{
panelStyleName:"panel1";
buttonStyleName:"button1";
textAreaStyleName:"textArea1";
}
.example2
{
panelStyleName:"panel2";
buttonStyleName:"button2";
textAreaStyleName:"textArea2";
}


Можно увидеть, что для запчастей компонентов применены разные стили.

Открыть в новом окне
Посмотреть исходный код
Скачать исходный код

Статья

четверг, ноября 30, 2006

Поисковые инструменты

Продолжая тему поиска flex приложений, кода и другой инфы увидел пост Браяна Рили:

Постраничный вывод в DataGrid

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

Уменьшение размера swf с помощью удаленных библиотек

Накнулся на интересный пост Джеймса Ворда, в котором рассказано, как уменьшить размер выходного swf файла с помощью использования Runtime Shared Libraries (RSL) - удаленных библиотек. Вот перевод.

Flex 2 позволяет загружать эти библиотеки с других доменов. Подразумевается, что приложение будет указывать на какой-нибудь определенный набор библиотек, который браузер будет быстро доставать из кэша. Перед началом необходимо заметить, что это не поддерживается Adobe, хотя команда разработчиков и работает в этом направлении, пока это просто хак. Во-вторых, пока нет нормального централизованного хранилища для RSL- библиотек, они хранятся на моем сервере, который может быть взломан и вместо изначальных библиотек вы получите какие-нибудь опасные компоненты. Несмотря на эти препоны, этот способ удовлетворяет большинство приложений и позволяет значительно уменьшить их размер. Как же это применить?

Мною было создано три библиотеки: малая, средняя и большая. Библиотеки взаимодополняемы, то есть, если необходимо использовать среднюю, то загружать надо малую и среднюю. См. таблицу у автора.


1) Скачайте необходимые SWC для RSL
2) Измените build path проекта
2.1) Если вы компилируете с помощью Ant или командной строки, определите пути к библиотекам следующим образом:

flex2-sdk/bin/mxmlc -external-library-path+=build/framework-2_0_0_a-small.swc,
build/framework-2_0_0_a-medium.swc -runtime-shared-libraries=
http://ws.jamesward.org/framework-2_0_0_a-small.swf,
http://ws.jamesward.org/framework-2_0_0_a-medium.swf-o=
build/testHostedFlexLibs-medium.swf -file-specs=test/testHostedFlexLibs.mxml

2.2) Если вы используете Flex Builder, перейдите в Project -> Properties -> Flex Build Path -> Library Path -> Add SWC -> [добавьте необходимые SWC]. Затем выберите SWC’s RSL URL и нажмите кнопку Edit. Измените Link Type на "Runtime shared library (RSL)", введите правильный URL, уберите галку с "Auto extract checkbox", затем нажмите OK.

2.3) Если вы используете FDS, добавьте SWC в папку flex/user_classes и обновите runtime-shared-libraries соответственно в файле flex-config.xml.

3) Перекомпилируйте приложение (если этого не произошло автоматически) и размер файла значительно уменьшится!

4) Еще одна преграда - приложение будет работать только из интернета, потому что политика безопасности запрещает загружать внешние ресурсы.

среда, ноября 29, 2006

Поиск по коду as и mxml файлов

Недавно узнал о таком полезном сервисе Гугла, как поиск по коду. Например, можно искать по mxml и as файлам следующим образом:
file:.mxml$ tabnavigator
file:.as$ displayobject

Отсюда

Четыре днюхи за неделю

Заметил тут, что буквально за неделю с 20.11 по 27.11 прошло целых четыре дня рождения:
20 - МК
23 - Дэн Иванов
26 - Рост
27 - мое:)

Всех поздравляю задним числом!

вторник, ноября 21, 2006

Использование data-driven виджетов

Закончил перевод главы "Использование data-driven виджетов". В ней рассмотрены следующие виджеты:

Форматирование чисел в AS3

Есть небольшая AS3 библиотека с полезными методами. Одним из них является вывод чисел, форматированных по маске. За это отвечает класс NumberFormat. Маски поддерживают следующие символы:

  • 0 - место, заполненное числом или нулем
  • # - место, заполненное числом или пробелом
  • . - дробный разделитель. Выводится символ точки
    или запятой - в зависимости от локали.
  • , - группировка символов. Выводится символ точки или запятой - в зависимости от
    локали.

Рассмотрим следующую маску:
##,###.0000

Если эту маску применить к числам
1.2345
12.345
123.45
1234.5
12345

То они будут отображены в виде
1.2345
12.3450
123.4500
1,234.5000
12,345.0000

Задать маску числу можно следующими способами:

  1. создать эеземпляр NumberFormat:
    var styler:NumberFormat = new NumberFormat("##,###.0000");


  2. использовать свойство mask:
    styler.mask = "##.00";

Рассмотрим готовый пример:var styler:NumberFormat = new NumberFormat("#,###,###,###");
trace(styler.format(1));
trace(styler.format(12));
trace(styler.format(123));
trace(styler.format(1234));

styler.mask = "#,###,###,###.0000";

trace(styler.format(12345));
trace(styler.format(123456));
trace(styler.format(1234567));
trace(styler.format(12345678));
trace(styler.format(123456789));


Числа будут выведены в следующем виде:
1
12
123
1,234
12,345.0000
123,456.0000
1,234,567.0000
12,345,678.0000
123,456,789.0000

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

Locale.slanguage = "fr";

Во Франции, в качестве группировки применяются точки, а в качестве дробного разделителя запятые. Насколько я знаю, в России тоже самое, поэтому данную
установку можно использовать (или я ошибаюсь?).

При выполнении примеров не забудьте импортировать необходимые классы:
import ascb.util.NumberFormat;
import ascb.util.Locale;

Отслеживание реального фреймрейта

По умолчанию, флекс-приложения компилируются с фреймрейтом, равным 24 кадрам в секунду.
Установить свой фреймрейт можно с помощью команды компилятора:

mxmlc -default-frame-rate=50 HelloWorld.mxml

Но установка значение в 50 кадров в секунду вовсе не означает, что каждые 20 миллисекунд будет проигран кадр. Разные типы браузера, плеера, операционной системы дают разные результаты. Протестировать реальный фреймрейт можно с помощью следующего небольшого приложения:

<mx:Application
mx="http://www.adobe.com/2006/mxml"
layout="horizontal"
enterFrame="enterFrameHandler()">
<mx:Script>
<!--[CDATA[
var lastTime:int;
public function enterFrameHandler():void {
test.text = String(int(1000/(getTimer()-lastTime)));
lastTime=getTimer();
}
]]>

</mx:Script>
<mx:TextInput id="test" />
</mx:Application>
Взято у FARATA.

пятница, ноября 17, 2006

Коллекция уроков по Ruby on Rails

На Rails Forum с августа функционирует раздел уроков (на английском) по RoR. На данный момент представлено около 30 уроков. Тут же можно заказать урок - возможно кто-то его и напишет.

Эли Гринфилд почти закончил свой календарь

Эли Гринфилд представляет очередную демку своего интеактивного календаря. Не путать с Flex Scheduling Framework. Скачать исходник можно отсюда.

понедельник, ноября 13, 2006

Создание FDS Flex приложения с помощью FlashDevelop

К бесплатной программе для AS/Flex разработки FlashDevelop некто Gurufaction создал темплейт для разработки Flex Data Services приложений. Установка и создание тестового приложения рассмотрена здесь.

вторник, ноября 07, 2006

250 темплейтов для RadRails

Dr. Nik создал 199 ruby и 48 rhtml темплейтов.
После скачивания откройте RadRails, перейдите в меню
Windows > Preferences > Ruby > Editor > Templates, выделите все элементы (ctrl+A), затем удалите их. Потом выберите Import и импортируйте ruby-rr-templates.xml.
Для импорта rhtml темплейтов зайдите в
Rails > Editiors > RHTML Editor > RHTML Templates, повторите туже процедуру и импортируйте rhtml-rr-templates.xml.
Обещано включить эти темплейты в следующий релиз RadRails.

понедельник, ноября 06, 2006

Загружаем эффекты, показанные на MAX 2006

Алекс Ульман выложил свою презентацию (pdf) с конференции MAX 2006 и весь исходный код своих эффектов. Данные эффекты используют утилиту DistortImage из 3d движка Sandy. Реализованы следующие эффекты - Flip, CubeRotate, Push, Pop, Door и Gate. Но лучше один раз увидеть, как говорится...

четверг, ноября 02, 2006

Видеоуроки по Flex 2 и Red5

Наткнулся на интересный сайт, предоставляющий видеоуроки по Flash / Flex / Red 5 - www.flashextensions.com. Особенно интересен Red5...

Компонент DisplayShelf

Компонент DisplayShelf представляет из себя богатый виджет для трехмерного отображения элементов.

Пример разделен на три блока. Первый, компонент TiltingPane, получает любой элемент и применяет к нему '3d' эффект. Второй, компонент DisplayShelf, использует компонент TiltingPane для отображения элементов вдоль виртуальной полки, из которой можно выбирать элемент.

В примере проиллюстрирурованы:
  • матричные трансформации
  • graphics API
  • маскирование
  • манипуляции с битмапом
  • темплейтинг
  • item renderers
  • интерфейс IList
  • реализация dataProvider'ов
  • анимация

Посмотреть DisplayShelf
Исходник
Загрузить

Отсюда

среда, ноября 01, 2006

Новый формат просмотра исходников Flex-приложения

NJ анонсировал более удобный просмотрщик исходного кода приложений. Само приложение можно посмотреть здесь. С первого взгляда - простой Flickr браузер, но вверху расположены ссылки на исходные файлы приложения. Некоторые элементы кода файлов подсвечены и при нажатии открывают подсказки. Приложение пока глючное, но автор обещает взяться за него серьезнее, если народ одобрит. А народ уже одобрил - это можно увидеть по комментам.

вторник, октября 31, 2006

Выложены некоторые примеры кода из RIABook

Выложены примеры кода приложений главы про DataGrid из RIABook. Сами примеры можно посмотреть здесь. Авторы также собираются опубликовать три из этой книги в ColdFusion magazine.

Увеличение производительности Eclipse IDE

Чтобы увеличить скорость работы Eclipse, необходимо изменить параметры выделяемой для программы виртуальной памяти. Изменения можно произвести в файле eclipse.ini, а для Flex Builder 2 - FlexBuilder.ini, которые находятся в папках установки этих программ. Также можно задавать эти параметры в командной строке при вызове IDE.

Например, для машины с 512 метрами памяти предлагается использовать следующие параметры:
-vmargs -Xms256m -Xmx256m -XX:PermSize=64m -XX:MaxPermSize=64m

А для 1024 -
vmargs -Xms512m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=128m

Оригинал

понедельник, октября 30, 2006

четверг, октября 26, 2006

Полнотекстовый поиск по Rails-приложению

Ferret - это Ruby-реализация поискового движка Apache Lucene. Использовать его довольно легко:

1. Откройте командную строку и установите
gem install ferret
2. Затем установите плагин acts_as_ferret в папку приложения:
ruby script/plugin install 
svn://projects.jkraemer.net/acts_as_ferret/
tags/stable/acts_as_ferret
3. Измените модель, соответствующую таблице, по которой должен идти поиск, следующим образом:
class Bug < ActiveRecord::Base
acts_as_ferret :fields => [ ‘description’]
end
где :fields - поля для индексации. Если не использовать этот атрибут, то будут проиндексированы все поля.

4. Добавьте, например, такой метод:
def searchBugs
@bugs= Bug.find_by_contents(params[:query])
render(:xml => @bugs.to_xml)
end
5. Наконец, можно вызвать этот метод из Flex-приложения с помощью HTTPService.

Например, следующий код вернет все bugs, содержащие слово "error" в поле description:
searchBugs.send({query:"error"});

Оттуда

Пример кода Apollo приложения

В дополнению к посту Майкла Клишина о структуре Apollo приложения хочу представить отрывок кода простого HelloWorld приложения, подсмотренный со слайдов FiTC Hollywood. Приложение состоит из конфигурационного xml-файла ApolloHelloWorld-app.xml:

<application
xmlns="http://ns.adobe.com/apollo/application/1.0"
appid="" version="1.0">
<properties>
<name>ApolloHelloWorld</name>
<publisher>Mike Chambers</publisher>

<description></description>
<copyright></copyright>
</properties>

<rootcontent
contenttype="application/x-shokwave-flash"
windowmode="transparent">
ApolloHelloWorld.swf
</rootcontent>

</application>
windowmode может быть также systemChrome.
Все просто и ясно.

И mxml-файла самого приложения ApolloHelloWorld.mxml:

<mx:application
xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute"
xmlns:apollo="http://www.abode.com/2006/apollo">
<mx:style>
Application
{
background-color:"";
background-image:"";
}
</mx:style>
<apollo:applicationwindow
title="Hello World" layout="absolute"
right="5" left="0" top="0" bottom="5">
<mx:label text="Hello World"
horizontalcenter="0"
verticalcenter="0">
</mx:label>
</apollo:applicationwindow>
</mx:application>
Тоже ничего сложного.

среда, октября 25, 2006

Как прилепить ApplicationControlBar к низу приложения

Для этого Andrew Trice расширил класс mx.core.Application и создал компонент BottomDockApplication.
Посмотреть
Исходник
Скачать

вторник, октября 24, 2006

Открыта вики по RadRails

Вики по RadRails. Правда статья там пока одна - как установить RadRails. Написано там "немало":

1) Скачать eclipse.

2) Запустить и перейти в Help | Software Updates | Find and Install | Search for New Features

3) Добавить следующие сайты:
  • RDT: http://updatesite.rubypeople.org/release
  • RadRails: http://radrails.sourceforge.net/update
  • Subclipse (не обязательно): http://subclipse.tigris.org/update_1.0.x

И поискать обновления.

Динамическая загрузка шрифтов

Шигеру Накагаки выложил несколько примеров (1, 2) использования встроенных шрифтов, а также пример динамической подгрузки шрифтов из внешнего swf файла.
Данная тема также рассмотрена в вики.

понедельник, октября 23, 2006

DataGrid с фильтрацией

Деррик Григг создал маленькую, но нужную вещицу - DataGrid c возможностью фильтрации.

Стеклянный DataGrid

Если добавить прозрачность к свойствам headerColors, selectionColor и rollOverColor, то получился стеклянный DataGrid.
Исходники по правому клику.

среда, октября 18, 2006

Выложены пдфы с AS3 API и Flex 2 Framework API

AS3 API (2,3 Мб)
Flex 2 Framework API (6 Мб)

Изменение стиля разделителя в заголовке mx:DataGrid

Этот вопрос задавался много раз:
Как изменить или избавится от вертикальных линий в заголовке mx:DataGrid?
Вот простой ответ.

понедельник, октября 16, 2006

Новая статья от Derek Wischusen

Derek Wischusen разместил на Adobe Flex Developer Center новую статью об интеграции Flex2 и RoR. Я в свою очередь выкладываю ее на русском. Кстати, я для создания Rails приложения рассматривается Radrails. Почитать можно здесь, pdf качнуть отсюда.

воскресенье, октября 15, 2006

Чат Flex2/Red5

Ренон Эриксон разработал Flex2/Red5 чат. Пока пример не полностью функционален. Автор еще не установил Red5 на сервер. Но в ближайщем будущем он обещает это сделать и поделиться возникшими проблемами при установке. А сперва он предлагает ознакомится с исходным кодом.

среда, октября 11, 2006

Новая статья "Использование текстовых виджетов"

В вики добавлена новая глава "Использование текстовых виджетов", в которой представлен обзор использования следующих виджетов:
а также правила использования простого и HTML форматированного текста во Flex-приложениях.

вторник, октября 10, 2006

DatGrid: меняем фоновый цвет ряда

Чтобы изменить фоновый цвет ряда необходимо:

1. Создайте новый класс, расширяющий mx.controls.DataGrid. Это может быть как MXML, так и ActionScript файл.
2. Переопределите метод drawRowBackground:
override protected function drawRowBackground
(s:Sprite, rowIndex:int, y:Number, height:Number,
color:uint, dataIndex:int):void
{
// изменяем цвет
color = 0xFF0000;
// вызываем метод родителя
super.drawRowBackground(s,rowIndex,y,
height,color,dataIndex);
}

3. Можете пользоваться.

Внутри drawRowBackground можно тестировать данные. Аргумент dataIndex может быть использован для поиска элемента в dataProvider, соответствующего этому ряду. Например, если необходимо выделить зеленым все ряды с данными больше 1000:

var item:Object = (dataProvider as ArrayCollection).getItemAt(dataIndex);
if( item.quantity > 1000 ) color = 0x00FF00;


Все просто.

Взято у Пента.

понедельник, октября 09, 2006

Поддержка полноэкранного режима плеера в браузере

В обновленном Flash плеере появилась возможность перехода в полноэкранный режим прямо в браузере. Раньше такая возможность была только в stand-alone плеере, projector-файлах и хаках в эксплоэре. Теперь же можно обновить плеер и несколько файлов и спокойно пользоваться этой возможностью (правда с некоторыми ограничениями). Вот перевод статьи от Adobe на эту тему.

четверг, октября 05, 2006

Использование swc во FlashDevelop-проектах

Для разрабоки Flex 2 приложений можно использовать бесплатный FlashDevelop. Конечно там нет многих возможностей Flex Builder, но
жить с ним можно:)
Так вот, чтобы заюзать swc-компоненты во FlashDevelop-проекте, необходимо добавить директиву компилятора типа в файл build.xml в блок compile:

<target name="compile">
<exec executable="${flex2.dir}/${compiler}">
<arg
line="-compiler.include-libraries
${source.dir}/your_file.swc">
...
</arg>
</exec>
</target>


В этом случае компонент your_file.swc находится в папке ${source.dir}.

вторник, октября 03, 2006

Анимированные чарты

Эли Гринфилд эксперементирует с анимированием диаграмм.

Прозрачные Flex-приложения

Майк Мореарти вспомнил про старый добрый wmode и замутил прозрачное приложение.
Чудес никаких - просто добавление в html-файл строки:

AC_FL_RunContent(
...,
"wmode", "transparent"
);

понедельник, октября 02, 2006

Учите Flash, Flex, Apollo, Actionscript 3 и WPF

Оригинал статьи Lee Brimelow

Последнее время я активно работаю с WPF и Flash. Flash давно является моей любимой платформой для создания интерактивности и анимации для веба. Вся шумиха от Microsoft и Adobe о WPF как о потенциальном убийце Flash так и останется шумихой. Пока эти два бегемота идут вместе во многих областях, Flash не должен беспокоится о конкуренции с WPF.

Основным моментом является то, что Flash и WPF - это удивительные инструменты для создания интерактивности и анимации. Но их конечные продукты сильно отличаются. WPF использует формат XBAP, который может быть прочитан IE. Вообще WPF заточен для создания богатых Windows приложений. Основываясь на своем опыте, могу сказать, что это платформа легка для изучения Flash разработчиками и дизайнерами. Комбинация C#/XAML в WPF похожа на связку Javascript/HTML, с которой знакомы многие веб-разработчики. WPF был разработан с целью достижения разделения визуального дизайна и данных(модели), что достаточно важно для современных приложений.

Причин того, что Flash не будет "убит" WPF, множество. Видео является той областью, где Flash явно доминирует над всеми. Никакая другая технология не может интегрировать видео и анимацию так легко, как это делает Flash. Также виновато само Flash сообщество, которое делает из мухи слона. Вот новости для всех: Microsoft - это не зло, а Adobe - не ваша добрая фея. Это просто компании, которые хотят заработать на вас деньги. То есть, судить технологии надо по их достоинствам, а не по тому, где они разработаны - в Редмонде или в Сан Хосе.

Итак, если Flash рулит в вебе, почему Flash разработчики и дизайнеры должны беспокоится о WPF? Ответ прост. Многие дизайн-студии уже получают тонны заказов на WPF проекты и сильно нуждаются в "полиглотах"-девелоперах. Мы уже завершили несколько проектов и ждем еще кучу. Итак, если вы хотите удержаться на плаву, расширять кругозор просто необходимо. Другой причиной изучения WPF является то, что он чертовски крут! Flash разработчики теперь имеют возможность создавать Windows приложения, которые содержат сложную анимацию и 3D. Поверьте мне, это не только круто, это еще и весело!

Хорошо, вы вняли моему совету и начали изучать WPF, который в связке с Flash-навыками, станет мощной силой в создании интерактивного контента как для веба, так и для десктопа. Но, подождите. Как же насчет Flex и Apollo? Когда вы подумали, что вся индустрия у вас на ладони, эти двое стучатся в дверь. Мой совет - учите и их! Flex - это технология, похожая по структуре на WPF, поэтому код можно практически легко портировать туда-сюда. Flex использует MXML в качестве языка размети, как XAML для WPF. Вместо C# для скриптинга используется Actionscript 3. Кстати, учите и его тоже. Но если вы знаете WPF или Flex, изучение другого является лишь проблемой синтаксиса. Отлично, теперь у вас три интеактивные технологии за плечами. В ваше резюме добавилась еще одна страница, но мы еще не закончили.

Apollo - это попытка Adobe войти на рынок десктопных приложений. С его помощью Flash разработчики могут создавать standalone приложения для Windows, Mac и Linux. Хотя релиза еще не было, я видел несколько демок и выглядят они впечатляюще. Теперь у вас есть полный контроль над приложениями, можно использовать такие фишки как прозрачные и округлые окна. Но если вы использовали Zinc до этого, вы скажете "Нах надо?". Поверьте на слово - надо! Основной проверкой будет проверка на кроссплатформенность этих приложений и насколько будет глубоким доступ к операционной системе. Apollo позиционируется как платформа для RIA на десктопе. Он не собирается замещать WPF с его огромной .NET библиотекой, которую никогда не достигнет Apollo.

Итак, хотите быть интерактивным крутнем, учите Flash, Flex, Apollo, Actionscript 3 и WPF.

четверг, сентября 28, 2006

среда, сентября 27, 2006

Image Converter на RoR и Flex

Derek Wischusen продолжает эксперименты. Теперь он создал jpg/png/bmb/gif/pdf/eps конвертер изображений. Конвертация происходит с помощью Rmagick. Из остального функционала:
  • загрузка изображений
  • zip-архивирование
  • сохранение изображений

Компонент Closeable Tab Navigator

Darron Schall создал компонент Closeable Tab Navigator. С помощью компонента можно создавать закладки (или табы) с различными иконками и возможностью закрытия.



Исходников не будет, так что делаем сами:)

понедельник, сентября 25, 2006

Трюки и приемы использования BitmapData во Flex 2

Andrew Trice делится опытом использования BitmapData во Flex 2. С его легкой руки теперь возможны следующие фичи:
  • сохранение изображения из приложения (над этим он сейчас трудится)
  • создания скриншотов текущего состояния приложения
  • зеркальное отображения поведения компонентов (есть эксперимент и с видео)
  • различные эффекты с изображениями
Скачать и почитать пдф можно здесь.

четверг, сентября 21, 2006

Flex-интерфейс для блога

Раймонд Камден создал интерфейс на Flex для своего блога.
Функционал:
  • поиск
  • выбор по категориям
  • выбор по календарю
  • добавление комментариев

среда, сентября 20, 2006

Компонент Calculator

Сделал компонент Calculator (исходник). Более чем уверен, что такие уже есть (даже не искал), но меня греет, что это свое:) Насчет найденных багов: просьба не ругать, если надо поправить что-либо - пожалуйста! А в принципе, пользоваться можно и так.

Update: Кстати, есть большой урок от Adobe по созданию калькулятора, правда для 1.5.

вторник, сентября 19, 2006

Yahoo! Maps на Flex 2 / AS3

Реализация Yahoo! Maps на Flex 2. Исходники в ассортименте.

Обновления у вики

На неделе были размещены следующие статьи во FlexWiki:
Все это относится к созданию интерфейсов во Flex.
Готовится большая статья по виджетам.

четверг, сентября 14, 2006

Компонент SelfLabelingTextInput

NJ анонсирует компонент SelfLabelingTextInput - поля формы теперь говорят сами за себя. Просто пишем
<controls:selflabelingtextinput x="10" y="10" width="238"
label="Name">
</controls:selflabelingtextinput>

и в поле формы написано Name - всем понятно - сюда пишем имя :). При получении фокуса подпись исчезает.



Исходники в ассортименте.

вторник, сентября 12, 2006

Тюнингованный Rich Text Editor для Flex 2

Питер Бейрд из Adobe Consulting немного усовершенствовал компонент Rich Text Editor - он сделал панель с настройками редактирования текста выезжающей. Мило.

Использование JSON и Flex 2

Перевел статью Майка Чемберза про использование JSON данных во flex-приложении. Скачать пфд можно здесь.

понедельник, сентября 11, 2006

Редактируем картинки во Flex - сохраняем с помощью rails

Derek Wischusen перенес с Java на RoR пример FlexPaint и добавил в RubyOnRailsRIASDKbyAdobe. Кто не в курсе, это редактирование изображений и их сохранение в формате Jpeg ( Tinic.)

пятница, сентября 08, 2006

Укрощаем XML - получаем соседский узел

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

Например, одним способом представления пары имя / значение является следующая форма:

<Artist>Interpol</Artist>

А формат Apple делает это с помощью структуры ключ / значение:

<key>Artist</key><string>Interpol</string>

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

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

Вот пример:

package {
import flash.display.Sprite;

public class XMLTest extends Sprite
{
public function XMLTest()
{
var xml:XML =
<xml>
<songs>
<song>
<key>Artist</key><string>Interpol</string>
<key>Track Number</key><int>7</int>
</song>
<song>
<key>Artist</key><string>Bloc Party</string>
<key>Track Number</key><int>3</int>
</song>
</songs>
</xml>

var temp:XML;
var artistName:String;

//проходим через songs
for each (var song:XML in xml.songs.song)
{
// получаем узел key, имеющий значение Artist,
// в первой song
temp = song.key.(text() == "Artist")[0];

//получаем следующий узел
//(т.е. соседский узел узла key).
//Сохраняем его как Stirng
artistName =
String(temp.parent().children()[temp.childIndex() + 1]);

trace(artistName);
}
}
}
}


Важной частью примера является строка:

temp.parent().children()[temp.childIndex() + 1]

Здесь извлекается соседский узел узла temp. Для получения предыдущего узла, вычтите 1:

temp.parent().children()[temp.childIndex() - 1]

Данный метод добавлен Майком Чамберсом в класс XMLUtil в corelib.

Оригинал поста

среда, сентября 06, 2006

Альтернативная IDE для RoR

Я уже рассматривал одну из самых популярных IDE для разработки rails приложений - Radrails. Сейчас попалась в руки еще одна бесплатная вещица - RoRed. Правда только для Windows платформы.
Главное преимущество - это вес - всего 900Кб.
Основные фичи:
  • Таб-навигация между открытыми файлами
  • Навигация по коду с помощью Ctrl+клик
  • Переключение назад/вперед между открытыми файлами
  • Использование закладок, гиперзакладок, макросов
  • Подсветка синтаксиса для .rb .rhtml файлов (черный фон - белые буквы - круто)
  • Запуск сервера, консоли, командной строки в одно нажатие
В будущем планируют добавить автокомплит по шаблонам.
В общем, пробуйте, выбор за вами.

понедельник, сентября 04, 2006

Затемнение ala Windows XP (Flex 2)

Alistair McLeod любит Windows XP, а особенно выключать его и любоваться эффектом затемнения всего, что находится за модальным окном. В связи с этим, он решил реализовать этот эффект во Flex 2.

Примеры данного эффекта можно посмотреть в оригинальном посте автора, там же можно загрузить библиотеку данного эффекта и SWC-файл. Просто нажмите кнопку и фон за модальным окном померкнет.

Работает это так. Класс PopUpManager имеет недокументированное внутреннее свойтсво modalWindowClass. Если задать в качестве значения этого свойства какой-нибудь класс, то его экземпляр будет создан при создании модального (только модального!) окна. Экземпляр появляется позади модального окна и изменяет внешний вид приложения.

Alistair создал класс SaturationFadePopUpBlocker, который использует его новый эффект SaturationFade. SaturationFade изменяет насыщенность компонента, который является целью эффекта.

Чтобы добавить данный эффект в приложение, необходимо добавить в обработчик creationComplete строку:

PopUpManager.mx_internal::modalWindowClass = 
SaturationFadePopUpBlocker;


Вот переделанный пример из документации с использованием данного эффекта:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
creationComplete="doInit();">
<mx:Script>
<![CDATA[
import mx.managers.PopUpManager;
import mx.core.IFlexDisplayObject;
import com.adobe.effects.*;
private function doInit():void {
PopUpManager.mx_internal::modalWindowClass =
SaturationFadePopUpBlocker;
}
private function showLogin():void {
var helpWindow:IFlexDisplayObject =
PopUpManager.createPopUp(this, MyLoginForm, true);
}
]]>
</mx:Script>

<mx:VBox>
<mx:Button click="showLogin();" label="Login"/>

<mx:Image source="img/sunset.jpg" />
</mx:VBox>

</mx:Application>

Необходимо еще само модальное окно, но его можно взять из хелпа. Изменений никаких в нем нет.

Естественно, все классы или swc файлы должны быть импортированны.
Эффект можно настроить для любого уровня насыщенности. Эффект SaturationFade можно использовать отдельно. В следующем примере эффект проигрывается при нажатии на изображения. Насыщенность меняется с 1 до 0. При отпускании эффект проигрывается в обратную сторону:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:eff="com.adobe.effects.*" >
<mx:Script>
<![CDATA[
import com.adobe.effects.SaturationFade;
]]>
</mx:Script>
<eff:SaturationFade id="fadeToGray" duration="500"
saturationFrom="1" saturationTo="0" />
<eff:SaturationFade id="fadeBack" duration="500"
saturationFrom="0" saturationTo="1" />
<mx:Image mouseDownEffect="fadeToGray" mouseUpEffect="fadeBack"
source="sunset.jpg" />
</mx:Application>

Кого интересует реализация данного эффекта во Flash - добро пожаловать.

воскресенье, сентября 03, 2006

Исходники и библиотеки от Quietlyscheming

Эли Гринфилд (Ely Greenfield) выложил архив (11 Мб) исходников своих проектов (11) и библиотек, обновленных до версии Flex 2 / Flash Player9. Качайте, а я пойду, добавлю в вики.

четверг, августа 31, 2006

Русскоязычная wiki по Flex 2

Вы наверно уже в курсе - сегодня открылась русскоязычная flex wiki под предводительством неутомимого Майкла Клишина. Я также являюсь ее соавтором. В процессе - размещение первой части документации Getting Started с корректировкой под релиз Flex 2, почти готова вторая часть доки. Также имеется куча разделов с полезными ссылками на туториалы, блоги, компоненты и другие полезные материалы.
Приглашаем всех заинтересованных к наполнению.

воскресенье, августа 27, 2006

Использование визуальных javascript эффектов в rails приложениях

Как известно (или не совсем), есть JavaScript библиотека различных эффектов. Использовать данные эффекты в Rails приложениях достаточно легко, так как существует метод-помощник visual_effect, который может быть использован с любым событием, например, onclick. Вот пример:
<%= content_tag 'DIV', 'Hello, World', :id => 'msg' %>
<%= content_tag 'DIV', 'Click Here',
:onclick =>
visual_effect(:highlight, 'msg', :duration => 1.0) %>

Здесь, при нажатии текст Hello, World подсветится на 1 секунду. Можно также группировать несколько эффектов в тег SCRIPT:
<SCRIPT type="text/javascript">
<%= visual_effect :opacity, 'idOne', :duration => 2.0,
:from => 1.0, :to => 0.5 %>
<%= visual_effect :opacity, 'idTwo', :duration => 2.0,
:from => 1.0, :to => 0.5, :transition =>
'Effect.Transitions.wobble' %>
</SCRIPT>

В дополнению к эффектам прозрачности и подсветки, visual_effect поддерживает: fade, appear, puff, blindUp, blindDown, switchOff, dropOut, shake, slideDown, slideUp, squish, grow, shrink, pulsate и fold. Переводить смысла нет, лучше попробовать.
Данными эффектами поддерживается параметры задержки (delay ) и времени проигрывания (duration ) эффекта.
<SCRIPT type="text/javascript">
<%= visual_effect :fade, 'idOne', :duration => 5.0,
:delay => 5.0 %>
<%= visual_effect :puff, 'idTwo', :duration => 1.0,
:delay => 5.0 %>
</SCRIPT>

Также можно просто копировать и вставлять себе готовые эффекты, созданные пользователями и visual_effect будет их поддерживать также.
Есть также drag and drop эффекты. Чтобы сделать DIV перетаскиваемым:
<%= draggable_element 'idOne', :revert => true,
:zindex => -1 %>
пс. Кстати, библиотеки эффектов включены в rails и расположены в папке public/javascripts. Чтобы подключить библиотеки нужно просто написать
<%= javascript_include_tag :defaults %>
и все!
Оригинал поста

четверг, августа 24, 2006

Вы все еще пишете CSS руками? Тогда мы идем к вам!

А идем мы вот с чем - Flex 2: Styles Creator. Это полезное творение создал Derek Wischusen, который работал с Flex 2: Styles Explorer и понял, что чего то не хватает, а не хватает собственно автоматизации сохранения всего кода в конечный CSS файл. Просто эксперементируйте со стилями, а затем нажмите на кнопку Download CSS и файл будет сохранен у вас на компьютере! В дальнейших планах Дерека создать базу данных стилей, которые каждый может себе загрузить.
пс. работает сие творение на Rails.

среда, августа 23, 2006

Open source Календарь для Flex 2

Постоянные обсуждения на FlexCoders о необходимости хорошего компонента-календаря вынудили команду Adobe Consulting его сделать:) В ближайшее время будет анонсирован фреймворк Calendar! Сейчас Alex Uhlmann доводит последние штрихи.
На рисунке представлен скриншот данного компонента.




Не расстраивайтесь из-за внешней простоты примера - с помощью данного компонента можно создавать гораздо более сложные вещи. К его выходу мы представим более интересные примеры.
Вот некоторые особенности фреймворка:
  • Отображение и управление 1000-ю календарных записей без потери производительности;
  • Расположение записей с помощью предопределенного или своего лэйаут-менеджера;
  • Назначение своих рендереров для создания оригинального вида записей;
  • Обеспечение рендереров в MXML или ActionScript;
  • Поддержка зума с помощью zoom API;
  • Использование таких эффектов фреймворка как Zoom и Move для большей выразительности и юзабилити компонента;
  • Добавление, удаление и обновление записей в runtime;
  • Назначение различных фонов для разного времени, например рабочих часов, обедов;
  • Полностью стилизуемый;
  • Подсветка записей;
  • Основан на dataProvider;
и многое другое...

Чтобы наглядно показать API календаря, вот MXML код приведенного выше примера (API может изменится в релизе):

<scheduling:CalendarViewer
id="calendar"
width="600" height="400"
dataProvider="{ appointments }"
startDate="{ new Date() }"
duration="{ DateUtil.DAY_IN_MILLISECONDS }"
zoom="{ zoom }" itemRenderer="com.adobe.scheduling.AppointmentEntryRenderer" itemLayoutManager="com.adobe.calendarClasses.BestFitLayoutManager" />

Ждите выхода - "It'll be ready when its ready"!

Оригинал поста

вторник, августа 22, 2006

Flash? Flex? Только вместе!

Джесси Ворден выложил презентацию на тему совместного использования Flex и Flash. Интересный стиль изложения, полезно тем, кого интересует вопрос, что такое Flex и с чем его едят, кратко и без воды. Читаем на русском (PowerPoint, 3,2Мб).

понедельник, августа 21, 2006

flexonrails.net

Наконец-то!
Derek Wischusen открыл блог, посвященный такой интереснейшей связке технологий!
Итак, добро пожаловать - flexonrails.net
И сразу же интересные темы (пока на английском) - руби-скрипт для аплоада файлов из флекса и сохранение CSS с помощью Flex 2: Styles Creator.

четверг, августа 17, 2006

Разработка Flex2/AS3 приложений с помощью FlashDevelop

FlashDevelop является бесплатной и довольно удобной программой для разработки Flash/Flex приложений. А теперь, когда появились патчи с AS3 и MXML автокомплитом, она вообще может стать незаменимым инструментом разработчика. Почитать можно здесь. Скачать pdf отсюда.

среда, августа 16, 2006

Кратко о Radrails

Данная статья предназначена тем читателям, которые уже знакомы с разработкой Rails приложений и не является подробным руководством по созданию приложений с помошью Radrails. Здесь описан интерфейс основных перспектив Rails и Data, а также важные функции данной IDE.

PS. Если интересно создание простого проекта с помощью Radrails от начала и до конца, пишите в комментах, сделаю урок.

вторник, августа 15, 2006

Интеграция Flex 2 и PHP

Урок Майка Поттера по созданию приложения с серверной частью на PHP. Приложение простейшее - добавление и извлечение данных в/из БД. У автора в коде есть некоторые опечатки, я их подправил. Читаем перевод.

Кстати, автор начал неофициальный проект Adobe PHP SDK, который облегчит PHP разработчикам работу по созданию бэкэндов на PHP для RIA.

понедельник, августа 14, 2006

В чем разница?

Создаем ActionScript файл HelloWorld.as:

package {
import flash.display.Sprite;
import flash.text.TextField;
public class HelloWorld extends Sprite {
public function HelloWorld() {
var textField:TextField = new TextField();
textField.text = "Hello, world!";
addChild(textField);
trace("Hello, world!");
}
}
}

Создаем MXML файл HelloWorld.mxml:

<application xmlns="http://www.adobe.com/2006/mxml">
<label text="Hello, world!">
</label>
</application>


Компилируем первый файл:

mxmlc HelloWorld.as

Размер - 642 b

Компилируем второй файл:

mxmlc HelloWorld.mxml

Размер - 116 972 b

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

Подсмотрено у Manish Jethani

воскресенье, августа 13, 2006

Компиляция Flex 2 и AS3 проектов с помощью BAT файла

Сенокуляр в своем посте-введении в AS3 рассказывает о том, как автоматизировать компиляцию AS3 проектов с помощью простых BAT файлов и собственно про сам AS3. Я перевел пока про компиляцию. Остальное позже:)

четверг, августа 10, 2006

Как Flex меняет наши впечатления?

Кристоф Коэнратс рассказывает о том, как работа с Flex-приложениями может изменить впечатления пользователя в положительную сторону. В статье приведены пять преимуществ flex-приложений: выразительность, производительность, работа в реальном времени, богатый медиа-контент, поддержка работы в offline.

среда, августа 09, 2006

Загрузка скинов для Adobe Flex 2 приложений в Runtime

Brian Riggs рассказывает нам, как программно скиновать виджеты во время выполнения приложения. Проскальзывает идея создания приложений с возможностью полного изменения внешнего вида по желанию пользователя. Читаем.

Скрещивание ActionScript 2 SWF файлов с Flex 2 приложениями

Опять Питер Энт. На этот раз он нам расскажет о том, как управлять флешками с AS2 из Flex 2 приложений и наоборот! В отличии от предыдущих версий плеера, в девятке при загрузке swf файлов с AS меньше 3, создается отдельная виртуальная машина. Управление, таким образом происходит через LocalConnection.

Устанавливаем Typo по современному

В связи выходом Typo 4.0.0, его установка стала проще, так как теперь он включает .gem инсталлятор. Если вкратце, то установка движка состоит из двух команд, если подробнее, то читаем.

Устанавливаем Typo

Typo - движок для блогов на Rails. Здесь можно почитать о том, как его установить. Честно говоря, у меня он немного глючит в администрировании, но думаю из-за того, что я еще не до конца с ним разобрался, а вообще приятная штуковина:)

UPDATE: Для нормальной работы с русским языком надо добавить в файл database.yml строку encoding: utf8 (в туторе добавил).
Возможные возникающие проблемы при постинге могут решится установкой другого адаптера БД. Проблема описана тут.
Спасибо RubyOnRails to russian

вторник, августа 08, 2006

Flex 2 компонент Masked Text Input от Питера Энта

Вам надо ввести телефонный номер в поле "Номер". Как его вводить? 8(111)222-22-22? 8-111-2222222? 81112222222? Короче, черт ногу сломит. Питер Энт создал компонент, который лишает нас всяких сомнений насчет того, как заполнять поля с длинными номерами, а также предлагает некоторые приятные моменты, типа капитализации первых букв в полях с именем/фамилией, автоперехода к следующему полю.

Компонент перехватывает нажатия клавиш и сравнивает их с заданным шаблоном. В шаблонах используется # для цифровых значений, C - для букв, которые будут капитализованы, c - для букв, которые будут автоматически переведены в нижный регистр и A (или a) для любого символа. Итак, шаблон телефонного номера можно задать так: "(###) ###-####", а имя человека - "Ccccccccccc".

Некоторые проблемы возникают при обработке нажатия Backspace, Space, Delete, Home, End и стрелок Влево и Вправо. Например, если вы введете (999) 555-____ , а затем перейдете курсором на позицию перед первой цифрой 5 и вставите цифру 6, то последняя заменит эту пятерку и получится (999) 655-____ , а курсор теперь встанет после этой шестерки.

Новый виджет имеет следующие атрибуты:

inputMask: шаблон маски, например ###-##-####.

blankChar: Символ визуального отображения шаблона в поле формы. Например, для поля телефонного номера будет (___) ___-____ , так как символ по умолчанию blankChar это _.

defaultChar: Этот символ заменяет blankChar при извлечении текста из виджета с помощью атрибута actualText. Например, если вы хотите, чтобы все # стали 0, задайте defaultChar = 0. Этот символ также используется при нажатии пробела.

text: Атрибут виджета TextInput переопределен для облегчения задания/получения значения поля. Например, если у есть шаблон ввода телефонного номера, вы можете задать text="9995551212" и символы будут разделены в соответствии с заданым шаблоном и будут отражены как "(999) 555-1212". При получении значения text, остаются только числа без шаблонов и символов blankChar.

Появилось новое событие:

inputMaskEnd: Событие наступает при вводе последнего символа шаблона. Вы можете использовать его для автоматического перехода на следующее поле.

Все, что уже переведено...

... лежит на www.gorbatov.org.

Добро пожаловать!

Целью его создания я поставил русификацию информации об Adobe Flex 2, Ruby on Rails, Flash lite, Flash и всего, что мне покажется интересным. В основном это конечно же туториалы. Я согласен с утверждением, что английский язык надо учить, но приятней все же читать на родном:)
Не судите строго! Я учусь вместе с Вами!