Flex и RIA блоги



2008-07-31

12:51:21, Flash-ripper.com
Спорт спасет красоту, которая спасет мир!

Подсмотрел у Миу-Мау, почистил, исправил ошибку, усложнил ближе к концу:

Neck Training for Geeks

Тренируем, тренируем шею, господа программисты и дизайнеры :-)


2008-07-30

23:55:46, Flash-ripper.com
FlexCover — инструмент покрытия кода (угадайте чем)

Чтобы разобраться, зачем нужен проект FlexCover, обратимся к определению:

Покрытие кода — мера, используемая при тестировании ПО. Показывает процент покрытия исходного кода программы тестами (дальше читайте в Википедии).

Что такое Flexcover? Это инструмент покрытия кода для Flex, AIR и AS3-проектов. Он включает в себя модифицированную версию AS3-компилятора, которая добавляет некоторые дополнительные вызовы функций в результирующий код SWF или SWC-файла. Во время выполнения эти вызовы функций посылают информацию о покрытии кода приложения отдельному инструменту CoverageViewer.

Модифицированный компилятор также генерирует отдельный файл "метаданных покрытия" ("coverage metadata"). В этом файле описаны все возможные пакеты, классы, функции, блоки и строки кода, а также имена соответствующих файлов с исходным кодом.

Покрытие операторов кода или покрытие условий?

Начиная с версии 0.5, Flexcover умееет считать как покрытие тестами операторов кода (line coverage), так и покрытие условий (branch coverage). В покрытии условий учитываются условные пути в коде, а не просто строки кода (операторы). Условные пути — это все те места, где есть условные операторы, где ваша программа решает, что именно ей делать (включая условия в циклах). То есть это ключевые, логические точки функциональности. Многие разработчики считают покрытие условий намного более аккуратной мерой покрытия; оно способно определить недостатки покрытия в масштабах одной строки кода, такой, как сложные условия с операторами || и && или условными выражениями, использующими оператор ?:

См.: сайт проекта FlexCover (cоотвествующие модификации Flex SDK можно найти в проекте flexcover-sdk на Google Code), скриншот инструмента FlexCover в работе, сайт автора — Джозефа Берковица и его объяснение покрытия условий. А вот флекс-титан Александр Гахов сделал много хороших закладок с тэгом Ant.

И еще ссылка по теме: Модели зрелости процесса тестирования ПО.

Ну что флексеры и флэшеры, попадем в мир взрослого девелопмента?


22:58:00, Flex 2 & Co
14 июля начато строительство моста ...
...между Adobe Air и Java под названием Merapi.
Merapi - это фреймворк, объединяющий оба типа приложений, запущенных на десктопе и выступающий так называемым мостом между ними. Взаимодействие реализовано с помощью класса merapi.Bridge, реализованного как для Air, так и для Java. С помощью Merapi Air-приложение может выступать интерфейсом к Java-приложению, что позволит расширить возможности приложения до бесконечности. В общем, кому интересно - добро пожаловать на сайт проекта.

22:58:00, Flex 2 & Co
14 июля начато строительство моста ...
...между Adobe Air и Java под названием Merapi.
Merapi - это фреймворк, объединяющий оба типа приложений, запущенных на десктопе и выступающий так называемым мостом между ними. Взаимодействие реализовано с помощью класса merapi.Bridge, реализованного как для Air, так и для Java. С помощью Merapi Air-приложение может выступать интерфейсом к Java-приложению, что позволит расширить возможности приложения до бесконечности. В общем, кому интересно - добро пожаловать на сайт проекта.

13:58:54, Flash-ripper.com
Проект Walk2Web попал в TOP-15 инноваций по версии Nethackz

"В топ 15 мировых инновационных Интернет-проектов “15 Killer Web Apps That’ll Rock Your World” вошел украинский проект Walk2Web.com. Сервис визуализирует соединения между сайтами по всей мировой паутине, представляя процесс поиска информации «в разрезе». Стоит только ввести в строку поиска адрес интересующего сайта, и тут же все ссылки, которые имеют хоть какое-то отношение к нему, будут в распоряжении пользователя."
— вот оригинал неплохой статьи о ресурсе по отображенеию сетевых связей. Сайт walk2web.com сделан действительно достойно — молодцы.

12:00:03, blog.Leezarius.com
ВебМорда - скриншот сервис
Скриншот сервис

Скриншот сервис

Интересный сервис появился на просторах Казахстана. www.webmorda.kz позволяет создать скриншот любого сайта на лету. Особенность в том что отсутствуют какие бы то нибыло копирайты, вы просто получаете скриншот. К сожалению расстраивает достаточно низкая скорость.

“Эта могила станет вашей могилой…” © — В том смысле что “Cкриншот ресурса создан самим ресурсом.”


2008-07-29

22:48:58, Flash-ripper.com
British Telecom купила RibbitPhone за $105 000 000

Вот официальный анонс от Ribbit — разработчиков Flash VoIP-решения Amphibian, подтверждающий давно бродившие слухи о том, что их собирается купить British Telecom. Вот публикация этой новости на GigaOM (за эту ссылочку спасибо JabbyPanda).

А что же Adobe Pacifica?

Вот блог решения для Flash VoIP от Adobe под кодовым названием Pacifica, а вот он же, но уже официальный. Правда, пока там молчок. Видимо, реально заняты. На официальном Твиттере Пацифики информации немного больше.

Что такое Ribbit? Мы писали нем в заметке IP-телефония во Flash, или наш VoIP-привет Скайпу. Также он упоминался среди лучших сервисов 2007 года, так или иначе связанных с Flash Platform. И вот, связка мобильный-телефон + интернет на Flash Player начинает активно покорять просторы!


16:42:58, Flash-ripper.com
Редактор FLV-файлов — RichFLV!

Вот одно из полезнейших AIR-приложений — берем FLV-файл, загружаем, изменяем и сохраняем. Можно увидеть все ключевые кадры, можно резать видео, можно добавлять, редактировать и удалять метаданные, включая Cue Points с параметрами:

Есть импорт MP3, FLV и Cuepoints, есть экспорт в FLV (включая вариант "только звук"), в MP3, SWF, XML, JPEG и PNG. Качать: RichFLV Air Application (каких-то 592 Кб). Сделано на Flex/AIR Бенджамином Доблером.


14:25:41, Flash-ripper.com
Aviary выпускает бета-версии онлайн-редакторов графики

Вчера мне пришло сообщение о том, что заказанный полгода назад аккаунт на Aviary активирован. Теперь можно начинать тестировать онлайновый фотошоп в действии (см. старую демку) и более того — у меня есть 5 приглашений, которые я могу отдать желающим.

Картинка, созданная в графическом онлайн-редакторе Aviary Phoenix (и еще примеры):

Не следует забывать, что Aviary — не только онлайн редактор, но и сообщество всегда голодных фотожабберов, которые могут любую, созданную в Авиари картинку, взять, модифицировать и сохранить, и с ней затем может случиться то же самое. Авиари поддерживает версии, строит по картинкам палитры и делает множество других продвинутых вещей. Кроме графического редактора Aviary Phoenix, есть еще редактор паттернов (или текстур) Aviary Peacock. Сами онлайн-редакторы изготовлены на Flex. Неплохо так изготовлены.


08:12:27, 33 коровы
Скинование — работа не для ленивых!

Исходные данные:

  • PSD файл, в котором 20 скинов аккуратно нарисованы, разложены по слоям, слои названы красивыми именами.
  • Нужно использовать 9-slice scaling — скины имеют различные украшения

Цель: За короткий промежуток времени превратить PSD файл в CSS файл для flex приложения, используя минимум усилий.

Процесс. Замкнутый круг:

  1. Первый вариант — который мне пришел на ум это экспорт в флеш. Вариант прекрасный, на первый взляд. Все аккуратненько превращается в правильно названые мувиклипы, расставляем 9-slice scaling и получаем болт. А все потому, что нужно помнить, что 9-slice scaling не работает для битмап, только для вектора. В качестве бонуса придется еще писать CSS файл ручками.
  2. Попытка экспортировать из фотошопа скины по-слоям в виде PNG. Как это нормально сделать я так и не нашел. Во-первых по умолчанию фотошоп просто не поддерживает экспорт в PNG, для этого мне добрые люди посоветовали скрипты. Но эти скрипты экспортируют слой размером равным высоте и ширине исходного файла, кроме того  уродливо именуют файлы (работу по переименованю выполнить всеравно придется). Дорабатывать эти скрипты напильником у меня небыло ни времени, ни желания. Даже если я нашел бы в себе силы это сделать, то все равно пришлось сочинять CSS файл и вручную считать/подгонять 9-slice scaling.
  3. Безумная попытка достать PNG файлы.  Попытка выглядела так: фотошоп - флеш - софтник декомпилер. Она почти увенчалась успехом, были сохранены PNG и BMP:( файлы, естественно имена были image1, image2… вобщем я не стал разбираться почему часть была PNG часть в BMP. От извращений отказался.

Как я решил проблему:

Ни одна(!) из 3х попыток не привела к успеху. Оптимизировать процесс почеловечески не удалось. Поэтому я ручками сохранил и назвал каждый скин, правда делал я это из флеша — экономил на обрезку в фотошопе :). Затем ручками посчитал 9-slice scaling для каждого и вбил его в файл со стилем. Вобщем не самый рациональный способ, но другого я на то момент невидел.

Какие еще есть варианты?

  • Использовать экстеншин к фотошопу для создания и экспорта скинов. Но там обязательно редактировать нужный шаблон. Если вы только начали, что рисовать то советую смотреть в сторону этого шаблона. В качестве недостатка — это огромнейшее количество файлов которые нужно потом ручками вбить в стиль (ну или найти где украсть подобный css-файл, я ненашел:), вернее украсть его можно здесь, спасибо Росту за наводку).
  • Нарисовать все сразу в векторе например во флеше используя все тот же экстеншин и опять все вбить ручками.
  • Нанять человека который за еду сделает это за вас.

Если не хочется вбивать все ручками можно попробовать истользовать редактор стилей в Flex Builder 3. Но: он не подхватывает заэмбеженые шрифты (говрит немогу и не переключается в визуальный редактор стилей), при выборе файла прописывает полный путь к нему, нельзя задать произвольные 9-slice scaling для разных состояний кнопки, ну иногда попросту задрачивает (попробуйте задать скины для табов у таб навигатора).

Выводы:

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

Прежде чем браться за скинирование 3 раза подумайте как вы это будете делать. И только потом начинайте процесс генерирования скина.  Иначе придеться делать очень много рутинной работы вместо “просто много”. :)

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

Берем попкорн, ждем Термо…


2008-07-28

22:01:36, Flash-ripper.com
Как отбиндить переменную во Flex

Недавно Андрей Микитюк задал мне простой вопрос — как отменить биндинг переменной во Flex? Честно говоря, я не смог ему ответить, зато он сам нашел готовый ответ в блоге одного из индийских Flex-евангелистов Raghunath Rao Thricovil, или просто — Raghu.

Тем, кто еще не в курсе, напомню: связывание, или биндинг данных (data binding) — одна из мощных фишек Флекса. Фишка в том, что переменная a связывается с переменной b и после этого значение a будет изменяться каждый раз, когда изменится значение b — они связаны (binded). Один из простейших примеров — текст, вводимый в поле ввода, автоматически появляется в другом месте приложения при вводе / удалении каждого нового символа. При грамотном применении биндинг позволяет сэкономить кучу кода и времени. Для начинающих (и не только) есть пара коротких уроков по биндингу — очень рекомендую.

А как отменить связывание переменнных?

Оказывается, отменить биндинг довольно просто в AS3 и невозможно в MXML. В AS3 это делается при создании биндинга стандартным образом с помощью метода bindProperty. Этот метод возвращает объект типа ChangeWatcher, который может "наблюдать" (watch) за самим связыванием, реагируя каждый раз при изменении переменной b. Чтобы разорвать связывание, достаточно вызвать на этом объекте-смотрителе метод unwatch(). Вот как это все выглядит в коде, а вот — как это работает.

Вообще, у Raghu весьма полезный блог.


18:45:21, DL1t's blog



12:36:32, Flash-ripper.com
haXe 2.0 — теперь с подержкой PHP

Вышел haXe 2.0. Если вы не знаете, что это такое: haXe — это язык программирования для веба, который поддерживает несколько платформ: Flash 6-8, Flash 9+, JavaScript, Neko, а теперь и PHP. Кратко о новинках в haXe 2.0:

  • Поддержка haXe/PHP: пишем на haXe, компилируем в PHP;
  • Новый пакет haxe.io для кросс-платформенного ввода-вывода и манипуляций с байтами;
  • Значения по умолчанию для параметров функций;
  • Новая реализация haXe remoting;
  • ... и многое другое.
Все подробности — на официальном сайте haxe.org. Скачать можно с haxe.org/download

2008-07-25

23:51:25, Flash-ripper.com
Да здравствует гигиена кодирования насыщенных приложений!

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

Итак, без недели месячник борьбы за чистоту кода объявляется открытым. Призываю вас к публичному обсуждению этих немаловажных вопросов! Как вам эта идея? Нравится? Сделаем? Обсуждение можно провести 16 августа в Киеве под лозунгом "За чистый код!"

Если вам есть, чем поделиться — предлагайте тему, или скажите, о чем хочется услышать.

И, конечно, не забывайте регистрироваться.


19:58:51, Flash-ripper.com
О том, как быстро исправлять ошибки во Flex 3 Framework (еще раз)

Представьте, что вы обнаруживаете в своем Flex-приложении баг, внесеный не вами, а разработчиками самого фреймворка. Ошибка явно находится в одном из "родных" классов. Вы даже знаете, как этот баг исправить, да вот как заставить Flex Builder это исправление подхватить без перекомпиляции всего фреймворка, ведь вы обычно работаете с уже готовым, представляющим фреймворк SWC-файлом типа 'framework.swc', а не c его исходным кодом, который так заманчиво доступен?

Чтобы быстро исправить ошибку Flex SDK для своего приложения, достаточно скопировать из фреймворка в свой проект соотвествующий файл класса с багом и разместить его в том же пакете. Например, класс mx.collections.Sort пойдет к вам в каталог src/mx/collections/Sort.as. Как правило, файлы классов включают также и дополнительный файл с версией фреймворка, так что скопируйте аналогичным образом и mx.core.Version.

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

Укрощение Flex-компилятора

Но есть еще одна хитрость, связанная с кэшированием при компиляции. Как известно, при включенном по умолчанию во Flex Builder параметре -incremental=true компилятор использует кэширование, чтобы сократить время компиляции. Поскольку вы уже наверняка компилировали свой проект, то скорее всего флекс-фреймворк уже в этом кэше и находится, что может помешать компилятору подхватить ваш класс, перекрывающий оригинальный. Кстати, обязательно почитайте о неожиданностях в поведении mxmlc-компилятора у Максима Качуровского и о том, как узнать параметры компиляции во Flex Builder у Александра Козловского.

Проблема легко решается, достаточно один раз "прогнать" проект через компилятор с отключенным кэшированием, а затем можно снова включить его. Чтобы отключить кэширование, зайдите в диалог свойств проекта Properties for [имя проекта] > Раздел Flex Compiler. Там в поле "Additional Compiler Arguments" добавьте через пробел один аргумент: -incremental=false и дайте проекту "сбилдиться". Затем вернитесь в этот же диалог и удалите добавленный параметр, таким образом вернув инкрементальную компиляцию по умолчанию.

Помог себе — выручи товарища

Используя описанную технику, можно спокойно исправлять досаждающе вам баги Flex. А если решитесь, то можно заслать свой патч с правками разработчикам самого Flex SDK, чтобы исправления были включены в следующие релизы. Adobe не только охотно принимает патчи, но и поощряет самых активных контрибьюторов. За каждые 3 принятые патча вам дадут любую книжку по продуктам Adobe из вашего виш-листа на Amazon. А тем двум, которые первыми сделают по 10 патчей, дают билет на Adobe MAX. Вот о том, как засылать патчи для Flex SDK.



15:20:57, Flash-ripper.com
BAFPUG 0.5 - полупервая Belarussian Adobe Flash Platform User Group

Поздравляем братьев из Беларуси — у них прошла первая, назовем ее учредительной, встреча Белорусской Флэш Группы, на которой было все, чему полагается быть на такой встрече — и обсуждение технологий, и планы на будущее, и даже небольшой конкурс для программистов. Вот краткий отчет о встрече с фотографиями на сайте организатора группы Валерия Песецкого.

Дописываю и сегодня выкладываю краткий отчет о встрече URAFPUG в Крыму.


2008-07-24

13:34:21, Flash-ripper.com
Можно ли на Flex делать игры? Смотрите на работающие примеры

Не одно копье сломано в спорах о том, возможно ли, стоит ли и как вообще делать игры на Flex.

Если раньше мы могли преимущественно выдвигать предположения о том, что в принципе это возможно и ничто этому не мешает, то сегодня мы можем прямо и во всеуслышание заявить: игры на Flex делаются, и очень даже неплохо получается.

Вот, пожалуйста: Playcrafter.com, про который даже и не скажешь, что это Flex, хотя он и есть. Это в дополнение к появившемуся ранее SmallWorlds.com, про который уже писал Андрей Горбатов.


2008-07-23

18:01:23, WebService //Flash
FDT 3.1 beta доступна для скачивания

Вышла обновленная бета-версия популярного инструмента для разработки ActionScript приложений - FDT.

В версии много вкусностей. Так что, качаем установочный файл. Также есть версия для яблочников.


16:04:17, Flash-ripper.com
Компонент AdvancedDataGrid во Flex — масса новых возможностей, в том числе и не всегда очевидных

Как вы знаете, Flex-компонент AdvancedDataGrid (ADG) дает такие возможности, что старый добрый DataGrid (DG) начинает нервно покуривать в сторонке. Кратко о новом в AdvancedDataGrid:

  1. Отображение иерархических (древовидных) и группируемых данных, в том числе автоматическая конвертация "плоских" датапровайдеров в иерархические;
  2. Продвинутая сортировка таблицы по нескольким колонкам;
  3. Возможность задавать строкам и колонкам таблицы собственные уникальные стили — свойство styleFunction;
  4. Объединение колонок таблицы в группы;
  5. Букет новых возможностей для ItemRenderers.

Не баг, а фича: выравнивание текста в AdvancedDataGrid

Но не все новые функции AdvancedDataGrid заметны невооруженным глазом. Некоторые из них обнаруживаются в ходе отладки. Например, я никак не мог сказать своему ADG, что текст в заголовке таблицы нужно выровнять по левому краю: как ни изменял значение свойства стиля textAlign, заголовки таблицы упорно выравнивались по центру (то есть по умолчанию). И только погуглив по AdvancedDataGrid Header Text Align, я нашел описание этого бага в Adobe JIRA (хорошо работает система). Там же, в первом комментарии сказано, что это не баг, а фича. Так и есть: в ADG, в отличие от DG, текст заголовка можно выравнивать сразу по двум осям, по вертикали и по горизонтали. Для этого нужно использовать свойства стиля horizontalAlign и verticalAlign. Мне стоило посмпотреть в этот док сразу, но кто знал.

Но небольшой баг тут все же есть. Во-первых, разработчикам Flex SDK стоит поддержать 'старое' свойство стиля textAlign (используемое в DG), продублировав в нем поведение нового horizontalAlign, чтобы лишний раз не конфузить разработчиков. Во-вторых, в документации к компоненту стоит явно указать это различие между ADG и DG, и вообще все такие мелкие различия, так как тема актуальна.

А вообще — AdvancedDataGrid очень и очень радует.


2008-07-22

15:56:55, Flash-ripper.com
Как вы боретесь с колесом мыши во Flash?

Известно, что в новом Flash Player есть новый баг: событие колеса мыши на флэшке или не срабатывает вообще, или срабатывает вместе с аналогичным событием в html-документе, эту флэшку содержащем. Может, это даже фича, но настолько необычная, что реально мешает работать, особенно на Mac-ах. В связи с этим — пара вопросов:

  1. Как вы решаете эту проблему?
  2. Пытались ли вы использовать популярные решения, сработали ли они для вас?

09:04:24, 33 коровы
Как работает AS3.0 и AVM2 изнутри

Ребята из dispatchEvent() (Collective thoughts of the New York Flash community) поняли, что флеш-девелоперы “не въезжают” в принципы работы AS3.0 и AVM2. И эту ситуацию они пытаются исправить двумя доками:

Actionscript 3.0 and Performance Tuning

AVM2 Overview

Первая - это 74 слайда (в pdf, подготовленные Gary Grossman’ом из Adobe) которые будут мегаполезными для понимания таких частей AVM2 как garbage collection, преимущества строгого типизирования, Actionscript byte code (abc) формат, code interpreter и JIT compilation. Для всех кто кодит на AS3 это must-read!

Вторая, значительно более “конденсированная”. В ней 108 страниц которые сухо объясняют всю подноготную работы AVM, показывает как AS3.0 команды “переходят” в процессорные инструкции. Короче - дока для настоящих гиков ::)))

Мой вердикт: первую читать обязательно, вторую - если есть свободное время…


08:20:16, 33 коровы
Ускоряем BitmapData.setPixel() до ~30fps

Столько всего интересного происходит, а времени написать нет ::((( Так-что посты коротенькие.

Как Вы думаете можно ли получить прирост с ~20fps на картинке 512×256 до ~38fps на картинке 1024×1024 при полной её “закраске” методом BitmapData.setPixel()?

Mr. doob доказывает, что можно!

Как он говорит: никогда не забывайте BitmapData.lock() и BitmapData.unlock(), они дают прирост с ~7 до ~38 fps.

Пример: http://mrdoob.com/lab/effects/1k/flaxor.swf

Исходник: http://mrdoob.com/lab/effects/1k/flaxor.txt


2008-07-21

18:21:20, Agahov's blog
Flex-Mojos. Пример сборки модульного проекта.

Глоссарий

flex module - swf, которая может быть загружена или выгружена flex приложением. Она не может быть запущена независимо. Несколько приложений могут использовать один и тотже модуль.(как собирать flex модули я опишу в следующей статье)
maven module - логическая часть вашего проекта, например клиентские программы, библиотеки, серверные модули, модули конфигурации и т.п.

Введение

Рассмотрим сборку проекта состоящего их нескольких maven модулей. Для построения такого проекта нам потребуется, создать иерархическую структуру директорий, для каждого модуля своя директория, в каждой директории будет находиться исходный код модуля и роm.xml, который его собирает. В корневой директории будет находится родительский pom для всего проекта.

Структура проекта

картинка

Проект состоит из двух модулей:
корень проекта:
multyModulesProject/pom.xml - родительский роm.xml
flex библиотека:
multyModulesProject/flexCoreLibrary/pom.xml;
multyModulesProject/flexCoreLibrary/…;
flex приложение:
multyModulesProject/flexClient/pom.xml;
multyModulesProject/flexClient/…;

Наследование от flex-super-pom

Это достаточно тонкий момент. Возможны следующий решения:

  • Унаследовать родительский pom от flex-super-pom. При данном решении возникает вопрос, что делать с модулями которые не имеют отношения к flex.
  • li>
  • Прописать все необходимые свойства непосредственно в дочерние модули. Приводит к излишнему дублированию кода.
  • Создать ещё один уровень иерархии. С модулями flex и java например. В модуле flex будет находиться my-flex-super-pom. Наследуется от родительского pom всего проекта и включает все необходимые параметры из flex-super-pom. Все maven модули собирающие flex, наследуются от my-flex-super-pom и помещаются в директорию flex. Недостаток данного метода в появлении ещё одного уровня иерархии.
  • И последний вариант, который я использую: Появляется модуль flex и my-flex-super-pom, как в предыдущем решении, но не создается иерархия. Все модули помещаются в корневую директорию. Модули собирающие flex артифакты наследуются от my-flex-super-pom. Сложность здесь в некоторой путанице с наследованием. Она не всегда совпадает с директориями, в которых находятся модули.

В итоге к нашему проекту добавился ешё один модуль flex.
multyModulesProject/flex/pom.xml; - по умолчанию полностью повторяет структуру flex-super-pom, но наследуется от родительского pom.

Родительский pom проекта

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

XML:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 href="http://maven.apache.org/maven-v4_0_0.xsd">">http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.mydomain.mypackage</groupId>
    <artifactId>myProjectArtifactId</artifactId>
    <name>myProjectName</name>
    <packaging>pom</packaging>
    <version>1.0</version>
    <url>http://maven.apache.org</url>
    <modules>
        <module>flex</module>
        <module>flexCoreLibrary</module>
        <module>flexClient</module>
    </modules>
            <repositories>
                  <repository>
                          <id>flex-mojos-repository</id>
                          <url>http://svn.sonatype.org/flexmojos/repository/</url>
                          <releases>
                                  <enabled>true</enabled>
                          </releases>
                  </repository>
      </repositories>
  
      <pluginRepositories>
 
          <pluginRepository>
            <id>flex-mojos-repository</id>
            <url>http://svn.sonatype.org/flexmojos/repository/</url>
            <releases>
              <enabled>true</enabled>
            </releases>
            <snapshots>
              <enabled>false</enabled>
            </snapshots>
          </pluginRepository>
        </pluginRepositories>
</project>

На что стоит обратить внимание:

XML:

<packaging>pom</packaging>

определяет тип собираемого артефакта, в данном случае pom.xml, оперирует другими pom.xml. Тип родительского модуля логический, обозначается “pom".

XML:

...
  <modules>
        <module>flex</module>
        <module>flexCoreLibrary</module>
        <module>flexClient</module>
        
  </modules>
...

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

XML:

...
<repositories>
...

тег repositories, выноситься в родительский pom.xml, так как maven поддерживает наследование, то данное свойство будет доступно в дочерних модулях.

Замечу что если у вас несколько проектов, то лучше его вынести в файл конфигурации maven.
под winXP, он находиться в: “C:\Documents and Settings\username\.m2\settings.xml", в других OS в той-же по смыслу директории.

my-flex-super-pom

Находиться в дирректории: multyModulesProject/flex
Отличается от flex-super-pom, добавлением кода определяющего родителя:

XML:

...
     <parent>
       <groupId>com.mydomain.mypackage</groupId>
       <artifactId>myProjectArtifactId</artifactId>
       <version>1.0</version>
    </parent>
...

и другим именем:

XML:

...
    <groupId>com.mydomain.mypackage</groupId>
    <artifactId>my-flex-super-pom</artifactId>
    <version>1.0</version>
    <name>parent pom for building modules with flex</name>
    <packaging>pom</packaging>
...

flex-core-library

Находится в директории: multyModulesProject/flexCoreLibrary:

XML:

<?xml version="1.0"?>
  <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 href="http://maven.apache.org/maven-v4_0_0.xsd">">http://maven.apache.org/maven-v4_0_0.xsd">
      <parent>
        <groupId>com.mydomain.mypackage</groupId>
              <artifactId>my-flex-super-pom</artifactId>
              <version>1.0</version>
      </parent>
  
      <modelVersion>4.0.0</modelVersion>
  
      <groupId>com.mydomain.mypackage</groupId>
      <artifactId>flex-core-library</artifactId>
      <packaging>swc</packaging>
      <name>flex-core-library</name>
      <version>1.0</version>
 
  </project>

Тег parent

устанавливает родительский pom. Теперь всё что определено в my-flex-super-pom будет доступно в данном проекте.

flex-client

Находится в директории: multyModulesProject/flexClient

XML:

<?xml version="1.0"?>
  <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 href="http://maven.apache.org/maven-v4_0_0.xsd">">http://maven.apache.org/maven-v4_0_0.xsd">
      <parent>
        <groupId>com.mydomain.mypackage</groupId>
              <artifactId>my-flex-super-pom</artifactId>
              <version>1.0</version>
      </parent>
  
      <modelVersion>4.0.0</modelVersion>
  
      <groupId>com.mydomain.mypackage</groupId>
      <artifactId>flex-client</artifactId>
      <packaging>swf</packaging>
      <name>flex client</name>
      <version>1.0</version>
 
            <dependencies>
               <dependency>
                 <groupId>com.mydomain.mypackage</groupId>
            <artifactId>flex-core-library</artifactId>
                  <version>1.0</version>
                  <type>swc</type>
                  <scope>internal</scope>
               </dependency>
            </dependencies>
  </project>

Тег parent

устанавливает родительский pom. Теперь всё что определено в my-flex-super-pom будет доступно в данном проекте.

Тег dependency

определяет зависимость flex-client от flex-core-library

Исходники

исходный код проект

Bookmark this article at


17:42:26, Flash-ripper.com
Adobe AIR 1.1 — все работает, и даже еще лучше, чем работало до этого

Сегодня вместе с Димой Кочетовым ставили новую версию Adobe AIR SDK для поддержки самого свежего Adobe AIR 1.1 Runtime во Flex Builder (если говорить просто). А если подробнее, то качали новый Flex SDK 3.0.3 с сайта Adobe Opensource, затем скрещивали его с некоторыми частями SDK 3.0.0 — в общем, Дима уже вкратце описал процесс и привел нужные ссылки в своем посте "Adobe AIR 1.1 + Flex 3".

После всех манипуляций приложение не перестало компилироваться, новых багов не появилсоь. А понадобилось нам все это затем, что в AIR 1.1 Runtime есть доработки, без которых было бы сложно довести до ума некоторые места проекта, в данном случае нам крайне необходимо было свойство File.spaceAvailable, оно поддерживается в AIR 1.1.

Вот полный перечень доработок в Adobe AIR 1.1, а я опишу их тут вкратце. Главное — интернационализация для построения многоязычных AIR-приложений:

  1. Все диалоги инсталлятора переведены на 10 языков, включая русский (мы писали);
  2. Добавлена поддержка локализованых дескрипторов приложения в атрибутах name и description;
  3. Добавлены новые свойства SQL-ошибок SQLError.detailID : int и SQLError.detailArguments : Array (также для помощи в локализации);
  4. Реализованы "родные" прозрачные окна средствами ОС (не забыли и про Линукс) — NativeWindow.supportsTransparency : Boolean
  5. Стал доступен список пользовательских локалей из системных настроек — Capabilities.languages : Array;
  6. Реализована миграция сертификатов с сохранением идентификатора приложения; например, можно мигрировать от "самописного" (self-signed) сертификата к авторитетному, выданному соответствующим учреждением типа Thawte.com (ищите Adobe AIR в конце списка);
  7. Поддержка Windows Vista и Windows XP Tablet PC Edition;
  8. Веб-сайт AIR также будет переведен на 10 поддерживаемых языков;
  9. Исправлено множество ошибок, в первую очередь в установщике, в работе окон, в системном драг-н-дропе и типизированном буфере обмена, в также в системных меню; особенно много пофиксили под Мак;
  10. Поумнел сборщик мусора;
  11. Пока непознанное: новые возможности доставки и распространения AIR-приложений, а именно — "тихая", автоматическая установка AIR Runtime вместе с AIR-приложением. Похоже, это и просили?
  12. Уже доступна документация к Adobe AIR 1.1
  13. Задокументированы многие баги и описаны временные способы их обхода.
Также описаны некоторые AIR-трюки — мега-апдейт.

13:22:14, RIA crumbs
Adobe AIR 1.1 + Flex 3

Адобовцы выпустили не так давно новый Adobe AIR run-time 1.1 + Adobe AIR SDK 1.1, с приятными багфиксами и нововведениями, одно из них мне очень понадобилось. Нововведение довольно простое - проверка свободного места на диске / папке.

Правда чтобы обновить у себя AIR SDK до версии 1.1, пришлось в руки брать бубен под названием Flex 3.0.2 SDK stable release :) Спасибо Адобовцам за то, что написали хорошие посты по обновлению AIR SDK.

Линки:


13:22:14, RIA crumbs
Adobe AIR 1.1 + Flex 3

Адобовцы выпустили не так давно новый Adobe AIR run-time 1.1 + Adobe AIR SDK 1.1, с приятными багфиксами и нововведениями, одно из них мне очень понадобилось. Нововведение довольно простое - проверка свободного места на диске / папке.

Правда чтобы обновить у себя AIR SDK до версии 1.1, пришлось в руки брать бубен под названием Flex 3.0.2 SDK stable release :) Спасибо Адобовцам за то, что написали хорошие посты по обновлению AIR SDK.

Линки:


12:29:41, Flash-ripper.com
Сіньйори флеш девелопери — вас шукають у Львові!

Для участі у розробці ММО флеш гри (chobots.com — вітчизняний стартап) розшукуються два сіньйор флеш девелопера та один джуніор з великим моском.

Вимоги до сіньйорів: IQ > 140, знання AS3.
Вимоги до джуніора: IQ > 140.
Робота у Львові в офісі фултайм.
Інфу про себе кидати на mokus@ukr.net

Вы просили переводить на русский: для участия в разработке ММО-флэш игры (chobots.com — отечественный стартап) разыскиваютс два синьйора флэш-девелопера и один джуниор с большим моском.

Требования к синьорам: IQ > 140, знание AS3.
Требования к джуниору: IQ > 140.

Работа во Львове в офисе фултайм.
Инфу о себе кидать на mokus@ukr.net

Добавлю от себя: Макс Грынив, который зовет вас к себе в команду — это мега-разработчики и суперчел. И пусть после этого кто-то скажет, что во Львове мало флэшеров и работы для них :-)


2008-07-18

14:31:32, Flash-ripper.com
Настольная Кили: приложение AIR к чувствительным местам

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


Да кто она такая, эта "Настольная Кили"? Да она не более, чем набор сменяющихся с частотой 25 раз в секунду прозрачных кадров, упакованных в AIR-приложение Desktop Keeley! Кили — девушка хрупкая, но имеет вес: придется скачать 40,7 Мб (спасибо за подсказку, Руз :-).

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

За супер-ссылку на суп-ликейшен — спасибо Рузу. А под катом — еще несколько скриншотов Настольной Кили (но и они не передают всего разнообразия ее ужимок, одежек и повадок).


13:34:34, Flash-ripper.com
Нужен Flex Developer, привествуется знание Mate. Москва

Требования: хорошее знание ООП, ActionScript3, Flex.

Будет плюсом:

  1. AIR, PHP && (AMFPHP || webORB) || JAVA (&& BlazeDS), JavaScript, HTML, опыт работы с БД, Jira, SVN, Unix, умение работать в команде.
  2. Умение грамотно формулировать задачи.
  3. Умение выдерживать сроки.
  4. Желание учиться новым технологиям и знаниям.
  5. Приветствуется знание последних технологий в отрасли и практический опыт их применения (например, Mate).

Задачи: разработка больших интранет- и интернет-систем (Rich interfaces).

Условия:

  1. Территориально: Москва, м. Дубровка (10 минут от метро).
  2. З/п: адекватная рынку, зависит от способностей кандидата, индексируется в зависимости от опыта и желания работать.
  3. Соблюдение ТТК.

Пишите на ivannikov@smart-art.ru.


2008-07-17

13:04:51, Flash-ripper.com
Нужен Flash-разработчик в игровой проект InDaLife (Москва)

В команде создателей онлайн-игры InDaLife (победитель Russian Flash Awards 2008 в номинации "Игра") открыта вакансия Flash-разработчика.

Обязанности: разработка клиентской части проекта beta.indalife.ru.

Необходимые навыки:

  • Профессиональное знание и опыт работы с AS2;
  • Опыт взаимодействия с серверными технологиями и XML;
  • Знание и опыт применения принципов ООП;
  • Умение держать обозначенные сроки, ответственность и креативность.

Плюсом будет:

  • Базовые знания ActionScript3
  • Желание получать новые знания и расти профессионально
  • Отсутствие страха перед разбором чужого кода, легкость в общении и открытость.

Условия:

  • Офис м. Белорусская, Маяковская.
  • В дополнение к заработной плате мы предлагаем компенсационный пакет, включающий:
    * Интересную работу в соответствии с трудовым законодательством;
    * Обязательное медицинское страхование;
    * Оплачиваемые курсы иностранных языков (после прохождения испытательного срока);
    * Повышение квалификации специалистов за счет компании (после прохождения испытательного срока);
    * Частичная компенсация спортивных занятий (тренажерный зал, бассейн и т.д.);
    * Рабочие часы с 10 до 19 (возможен гибкий график), выходные дни: суббота и воскресенье.

Мы обеспечиваем своим сотрудникам:

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

Заработная плата: 70 000 - 90 000р.

Узнать подробности и отослать резюме можно по e-mail: team [AT] indalife.ru

Кто пойдет и переведет все на ActionScript3?


Предыдущие 30 | Следующие 30