Суть данной статьи заключается в изложении моего опыта по разработке приложений на технологии Flex в разрезе принятий решений о выборе или не выборе онной на конкретных проектах. Да, именно так, очень часто возникают ситуации, когда использование Flex не только невыгодно по временным ограничениям, но и губительно для проекта.
Category: Flex
5 копеек о Mate Flex Framework
До последнего момента я очень скептически относился ко всем существующим фреймворкам для Flex. Я, конечно, не уделял особого внимания изучениям подробностей Cairngorm или PureMVC, но тем не менее мне было известно их основное устройство. Например я презираю глобальную доступность View из любого места кода в Cairngorm. Так же, меня напрягло количество абстрактных классов PureMVC, которые нужно наследовать, а код разбухает как на дрожжах. Имеено по-этому я никогда ничем не пользовался кроме базовой компонентно-событийной системы Flex Framework.
Поддавшись на восторженые отзывы риа-гуру я решил разобратся что и к чему. Не надейтесь, я не собирась тут расписывать по-русски о модели работы Mate, я опишу несколькими предложениями. Это действительно круто! И я отвечаю за свои слова.
Я считаю, успех Mate связан с тем, что это не портированый фреймворк, а написаный именно под Flex. Он использует основные (возможно и не очень правильные) принципы и особенности Flex фреймворка, такие как:
- наследование всех классов от
EventDispatcher, которое позволяет использовать bubbling-события, как основные носители сообщений между View, Model и прочими сущностями; - довольно идентичную особенность биндинга, с помощью которой Mate наладило ненавязчивый IOC (Inversion of Controls);
- разметку mxml для описания деклараций связующих механизмов приложения в простой и понятной форме.
И все это работает поверх сущностей вашего приложения, без необходимости наследования утомляющих абстрактных классов команд, медиаторов, моделей и пр. Ну и на десерт, Mate фреймворк отлично расширяется путем наследования ваших дополнений от базовых управляющих классов.
В общем, листая документацию сайта, можно получить первое впечатление не более чем за час. Просмотр исходного кода подтвердает подозрения, что авторы проекта — отличные профессионалы, которые обернули нюансы Flex в бонусы. Нужно пользоваться!
Пару слов о MacroContent Builder
На моей последней работе в голландской компании KZOO webcreatie я разрабатывал AIR приложение для визуального построения шаблонов к некоему серверному движку, которым владеет компания. Приложение предоставляет пользователям набор элементов (список, елемент, контент) для построения гибкой древовидной структуры. Результатом работы есть XML файл, в котором содержится как некоторая скриптовая логика, так и структура БД, а так же и HTML представление. Серверный движок на основе этого файла реализует связь с БД и генерирует конечную HTML страницу. Система довольно универсальная, но, конечно же, не может покрыть узкопрофильные решения, только типовые сайты.
Программа доступна для ознакомительной установки. Наврядли удастся как-то использовать на практике, без соответствующего ПО для серверной стороны.
Некоторые детали: More…
Работа на полторы недели для Flex программиста
В связи с личной занятостю никак немогу (и не успею) выполнить небольшой проект для своего же заказчика из Голландии. Тому, кто возьмётся за выполнение оплата будет $15 за 1 час работы, по моим оценкам разработка потянет на 4-6 рабочих дней (со всеми рисками включительно). Проект очень простой.
Краткое описание: нужно создать swf компонент, который представляет из себя игру - разгадку кроссворда. Поле (матрица) слов всегда одинаковая, выглядит так

Компонент подгружает из сервера набор слов и описывающих их предложений (задача кроссворда), а также массив номеров ячеек из которых формируется ответ. После решения компонент отправляет на сервер емейл, дату, правильность решения. Подробности, после соглашения на разработку, можно будет обсудить с заказчиком (или мной если проблемы с английским).
UPD: Проект выполнен и закрыт. Готовую работу можно увидеть по адрессу http://kzoomail.nl/dagpuzzel/. Также, можно установить себе опубликованную выше AIR-версию.
Компонент ResizeableLayoutBox
Компонент org.goverla.containers.ResizeableLayoutBox предназначен для построения оконных интерфейсов типа dockable IDE. В связке с ним нужно использовать контейнер org.goverla.containers.CollapsablePanel, который предоставляет возможность сжимать и разворачивать панели.
В данной реализации можно использовать как вертикальное (по типу Accordion), так и горизонтальное позиционирование панелей. Для того что-бы изменить размер панели, нужно мышкой тянуть за её заголовок. При растягивании принимаются в расчет параметры minWidth, maxWidth, minHeight, maxHeight.
Классы можно взять из библиотеки Go!Verla.
Возврат к DragManagerImpl в AIR-приложениях
Наши дорогие индуские программисты сделали весьма много гадостей в релизе Flex Beta 3. Одна из самых неприятных — это использование по умолчанию NativeDragManagerImpl в DragManager. Причем, нет никакой возможности использовать DragManagerImpl, как было раньше.
Впринципе их можно понять, ведь в приложениях написаных для AIR нужна поддержка drag-n-drop с ОС, но не давать возможности выбирать, это, как всегда, плохо. Существует очень грязный хак: нужно присоединить исходники Flex Framework к нашему проекту Project Preferences -> Flex Build Path -> Source Path, которые находятся в /Applications/Adobe Flex Builder 3 Plug-in/sdks/3.0.0/frameworks/projects/framework/src. После этого мы можем поменять в классе SystemManager функцию docFrameHandler(), нужно оставить только данный код:
Singleton.registerClass("mx.managers::IDragManager",
Class(getDefinitionByName("mx.managers::DragManagerImpl")));
После перекомпиляции мы получим DragManager который использует DragManagerImpl по умолчанию.
Проблемы со скоростью Flex Builder в Mac OS X
Я в основном работаю в среде Eclipse с плагином Flex Builder 3 Beta 2 и обратил внимание, что в Mac OS он как-то нереально медленно компилирует проект, где-то в 3 раза дольше чем на PC — ну думаю, говнище этот Mac. А потом, случайно, заметил, что на Eclipse по умолчанию отведено не более 256 Мгб памяти (в Windows он просто выкидывает ошибки с такими параметрами и закрывается) и он медленно компилирует, потому что выкручивается с таким минималным объёмом ресурсов!
Круто? (Не совсем, можно было бы всё-таки ненавязчиво сообщить, что памяти-то маловато)
Думаю в этом, частично, проявляется суть Mac — сделать всё, что можно с любым ресурсом (прибегая даже к торможению) не спрашивая пользователя про детали (иногда это вминяют ему в повышеную стабильность и юзабильность). В Windows чаще всего, пользователь просто предстаёт перед какой-то ошибкой выполнения. А суть то одна и та же, нада что-то чинить.
И в том и в другом подходах, свои плюсы и минусы. А идеальных ОС нет =(. Может Ubuntu скоро станет такой…
Сайт jmak.com.ua
Ещё один сайт «за 24 часа» созданый с использованием технологии Adobe Flex 2, а также прочих штучек, улучшающих работу сайта в броузере и недавно опубликованную как open-source библиотеку Go!Verla.
Сайт представляет собой информацию и набор готового к просмотру видео студии Евгения Керпатенко (GAS), которая сняла некоторое множество бюджетных клипов наших альтернативных команд. Дизайн рисовал Женя, «изюминки» с телевизорами добавил я. Компонент видео-скриншотов с хитрой прокруткой очень любезно предоставил Сергей Ковалёв.
Компонент PatternRectangularBorder
Компонент org.goverla.skins.PatternRectangularBorder предназначен для заполнения фона таких контейнеров как Application, Canvas, HBox, VBox, Form и др. Он основан на mx.skins.RectangularBorder и BitmapData классах из Flex 2 SDK и работает по более естественному принципу чем CSS патерны WSBackgroundPixelSkin компонента.
Компонент поддерживает базовый стиль background-image класса Container и добавляет поддержку cтиля background-repeat, который обычно используется в HTML CSS, его возможные значения:
- repeat
- repeat-x
- repeat-y
Я не смог унаследовать mx.skins.RectangularBorder, так как он полностью закрытый — копи-паст наше всё.
Класс можно взять из библиотеки Go!Verla.
Решение cкомпилировано из статей:
Сайт etwasunders.com

http://etwasunders.com/ - моя последняя законченая работа в области ИТ. На изготовление сайта истрачено в общем счёте 30 часов. Старый сайт, также изготовленый мной, остался он-лайн. Два сайта работают над общей базой даных и соответственно все новости и записи гостевой пристутствуют на новом. В данный момент сайт на половину английский и украинский. В скором времени будет 3 языка, а также фотографии и всё такое. Дизайн нарисовал alesmardaletto.
Некоторые детали: More…


