Flex и RIA блоги
2007-11-07 |
ActionScript 3.0 Библия В свет вышла очередная, и уже традиционная ActionScript 3.0 Библия (традиционная - в плане, что под каждую версию ActionScript появляется гигантская книжка). Книга писалась почти год и авторы попытались сделать ее доступной всем, как опытным AS2 разработчикам, так и совсем начинающим. Книгу уже можно заказать на Amazon |
2007-11-06 |
AIR: HTML редактор с возможностью превью Майк Чамберс (Mike Chambers) в очередной раз не жадничает. И дает ссылку на простой HTML редактор, в котором можно делать live-превью вашего HTML кода. Редактор Майк сообразил на AIR. Само приложение является частью доклада об AIR на Flash on the Beach. Приложеньице демонстрирует:
Исходники с комментариями Майк разместил в репозитории “on AIR Tour” или можно за ними направляться прямо сюда. |
Эффективность Flash Remoting: быстрый эксперимент Мне выпал шанс сравнить производительность Flash Remoting во Flash Player 9 с передачей XML-данных. Рабочие условия: есть гео-данные в формате GML (XML), описывающие границы районов города в виде полигонов. Общее количество точек-вершин полигонов — около 4000. Размер загружаемого XML равен 244 Кб, а со стандартным GZIP-сжатием — 49 Кб. Требуется сократить размер загружаемых данных и время их загрузки. С использованием Flash Remoting размер загружаемых данных составил 44 Кб, а с GZIP-сжатием — 19 Кб. Это в 2,5 раза меньше размера XML, приблизительно настолько же быстрее оказалась и загрузка Remoting-данных. Кроме того, за счет обмена в Remoting типизированными геометрическими объектами удалось избавиться от некоторых шагов по разбору гео-данных из XML, так что выросла и скорость отрисовки загруженных полигонов. Но у Flash Remoting, похоже, есть свой минус. Загруженные данные не кэшируются между сессиями, поскольку работа Remoting идет через POST-запросы. Думаю о создании своего кэша во Flash Cookies, но он ведь тоже не резиновый, а объем данных весьма большой. Может, есть другие варианты? |
Эффективность Flash Remoting: быстрый эксперимент Мне выпал шанс грубо сравнить производительность Flash Remoting во Flash Player 9 с передачей XML-данных. Рабочие условия: есть гео-данные в формате GML (XML), описывающие границы районов города в виде полигонов. Общее количество точек-вершин полигонов — около 4000. Размер загружаемого XML равен 244 Кб, а со стандартным GZIP-сжатием — 49 Кб. Требуется сократить размер загружаемых данных и время их загрузки. С использованием Flash Remoting размер загружаемых данных составил 44 Кб, а с GZIP-сжатием — 19 Кб. Это в 2,5 раза меньше размера XML, приблизительно настолько же быстрее оказалась и загрузка Remoting-данных. Кроме того, за счет обмена в Remoting типизированными геометрическими объектами удалось избавиться от некоторых шагов по разбору гео-данных из XML, так что выросла и скорость отрисовки загруженных полигонов. Но у Flash Remoting, похоже, есть свой минус. Загруженные данные не кэшируются между сессиями, поскольку работа Remoting идет через POST-запросы. Думаю о создании своего кэша во Flash Cookies, но он ведь тоже не резиновый, а объем данных весьма большой. Может, есть другие варианты? |
Вся правда о Видео во Flex. Часть 6. Camera и Microphone. Индусы жгут, других слов нету! ) Работал я с ними мало поэтому пока только поверхностные отжиги). Чтобы получить список доступных устройств (вебкамер и микрофонов) нужно использовать свойство names у соответствующих классов Camera.names : Array [read-only]
Microphone.names : Array [read-only] Вроде все логично, но только до этого момента дальше чтобы получить конкретное устройство у класса Camera есть метод getCamera(), а у Microphone - getMicrophone() и выглядит это следующим образом: public static function getMicrophone(index:int = 0):Microphone
public static function getCamera(name:String = null):Camera Как-то странно подумал я: “в одном случае мы инт отдаем в другом стринг”. С микрофоном решил проблемы быстро ), а вот с камерой уже стало интереснее.
Отдав это имя я получил огромный болт, вернее null, а не камеру. 8 раз проверил - все равно болт. В ходе эксперементов над разумом, попробывал отдать индекс камеры в виде строки, и оно заработало! Внимание правильный ответ для решения этой проблемы: var camera : Camera = Camera.getCamera(myIndex.toString());
//где myIndex - это порядковый номер камеры в массиве Camera.names Привет адоб! |
Календарь IT-мероприятий в Москве По наводке Дениса 'Q-Zma' Кузнецова увидел Календарь IT-мероприятий в Москве. Есть интересные, но нет наших, кроме ClientSide2007. Календарь составлен автором сайта про джавку, j2ee, BEA и IBM. |
Новая мобильная Linux платформа — Android Open Handset Alliance — это группа, состоящая из более чем 30 различных компаний и технологий, объединивших свои усилия для того, чтобы ускорить прогресс в области разработки мобильных устройств, сделать ассортимент устройств более богатым, уменьшить стоимость разработки и улучшить свои знания в этом направлении. |
2007-11-05 |
Mozilla Prism для Mac и Linux Mozilla отдает на растерзание любителям Mac и Linux свой проект Prism. Для установки приложения нужно: после запуса Prism приложения нужно будет выбрать куда сохранить шорткат на приложение. В поле для URL вводим имя приложения. Более подробно читаем тут. |
Встречайте ECMAScript4. Обзор нового стандарта сетевого языка Рабочая группа TC39-TG1 выпустила обзор нового стандарта ECMAScript 4 (ES4) — "языка сети", или, более конкретно, фундамента языков JavaScript и ActionScript (приятно отметить, что в данном документе слово "ActionScript" встречается неоднократно, в том числе и при упоминании нового механизма верификации программного кода в ES4). Напомним, что предыдущей версией стандарта был, основанный на прототипах ES3. Это сегодняшний JavaScript 1.x. В новом стандарте ES4 учтены требования, возникшие при разработке крупных проектов, к которым относятся многие AJAX-, Flash и Flex-приложения. Одним из условий стандарта ES4 является совместимость с предыдущим стандартом, ES3. Краткий обзор характеристик ES4ООП в ECMAScript 4ECMASript4 поддерживает объектно-ориентированное программирование введением таких структур, как классы (class ) и интерфейсы (interface ) — подобно языку Java.
ПриватностьМодульность приложения поддерживается пакетами (package ) и пространствами имен (namespace ).
Типы данныхПрограммирование больших проектов упрощается за счет введения строгих типов данных, определяемых классами и интерфейсами.Проверка перед выполнением (верификация)Компонент приложения может быть скомпилирован в строгом режиме, что является гарантией его проверки перед выполнением (верифицирования). Проверяется корректность ссылок на переменные, защищенность констант, сравнение однотипных переменных и т.д. Статическая проверка типов в ES4 очень похожа на ту, что происходит в ActionScript3.Оптимизация времени и пространстваСтрогая типизация облегчает раннее связывание точек вызова и вызываемых из них методов, что потенциально уменьшает стоимость вызова методов по сравнению с ES3 (детали на английском от Теда Патрика). Указание типов также позволяет компилятору отказаться от проверки типов на этапе выполнения. Ориентированные на производительность типы данных (такие какVector ) малой ценой избавляют от излишеств слишком общих типов данных — таких как Array.
ДанныеES4 поддерживает параметризованные классы, объекты с геттер и сеттер-методами, типизированные объекты, рефлексию и средства системы типизации, ставящие созданные программистом объекты наравне со встроенными объектами языка.Отсылаю вас к обзору ECMAScript4 — работать мне надо. Пара слов к JavaScript-разработчикамБратья! Радостно осознавать, как скоро у вас в руках будет инструмент, действительно поддерживающий ООП и современные методы программирования. Больно наблюдать, как талантливые программисты вручную реализуют классы в JavaScript 1.x. Дни заката солнца вручную сочтены: один год. С новым, прогрессивным стандартом вас.Одно слово к ActionScript-флешерамРадостно осознавать, что наша возлюбленная Флэш-платформа обогащает стандарт, из которого вышла (даже несмотря на "плохую модель событий и потребность в компиляции" :-). Но вы не подумайте, что для вас в новом стандарте ECMAScript4 нет ничего нового. Есть, и предостаточно. Почитайте внимательно, и вы найдете там такие пока незнакомые многим конструкции, какlet , let const и let function , объединенные типы данных: (int,string) означает "int или string , вложенные типы данных (Deep types), подтипы (Subtypes), оператор "как" (like ), параметризованне типы данных (да, да! Вектор как параметризованный массив, привет C#?), неймспейсы и биндинги (не во флекс-фреймворке, а в ядре стандарта). А также Генераторы (Generators), перегрузку операторов (operator overloading) и глобальные мультиметоды, операторы "&&= и ||= , оператор "cast ", типы данных Vector и Map (похож на Dictionary в ActionScript3), класс ControlInspector , JSON-сериализацию по протоколу toJSONString / string.parseJSON , глобальную функцию "hashcode ", итераторы (iterators) и много всякого будущего!
Приятно отметить авторство стандарта ES4: "Copyright © 2007 Adobe Systems Inc., The Mozilla Foundation, Opera Software ASA, and others." |
Flash Player 9 Beta для Leopard На Adobe уже доступен Flash Player 9 Beta (да да тот самый, что Moviestar) для Leopard. Т.е. счасливые (?) обладатели Leopard могут ощутить всю прелесть бэты - официально. По крайне мере, так говорит Mike Chambers, а ему, я думаю, доверять стоит. flashplayer9, Leopard, Moviestar |
2007-11-04 |
Как заставить сборщик мусора таки собрать и вынести мусор Недокументированная фишка Flash Player 9. Создав два объекта try {Внимание! Предельно строго рекоменудется использовать этот трюк только для экспериментов в процессе разработки и не играть так с готовым приложением на машине конечного пользователя — фишка неофициальная, низкоуровневая, никаких гарантий нет и не предвидится. (Подглядел у Гранта Скиннера, в третьей статье из цикла "Управление ресурсами в AS3". Строго рекомендую всем.) |
AIRApps Wiki — более 100 AIR-приложений одним списком По приглашению Райана Стюарта попал в AIRApps Wiki. Cейчас на ее главной странице размещено 117 AIR-приложений. Вы тоже можете добавить туда свою работу — пароль там же. Ну вот, одним черновиком меньше. До сих пор не могу вспомнить, что помешало мне дописать и выложить эту запись три месяца назад. А, вспомнил! Я ждал, пока в списке будет 100 ЭЙР-приложений. Идиот... |
Расписание докладов ClientSide-2007 Буквально вчера ночью на сайте конференции ClientSide-2007 появилось расписание выступлений. Оба моих доклада попали в секцию «Мультимедиа». Действительно, одной из необходимых составляющих любой RIA-технологии являются интегрированные в среду исполнения медиа-возможности. Поэтому ввиду того, что приходится с печалью констатировать факт, что о RIA в российской интернет-разработке чаще всего говорить еще рано, такая классификация докладов имеет какое-то право на существование. Хотя приятно было бы видеть отдельную секцию, посвященную RIA, на которой много и интересно рассказывали бы об Adobe Flex, Adobe AIR (будет немного, но, надеюсь, интересно), Microsoft WPF, Microsoft Silverlight, Sun JavaFX, OpenLaszlo, XUL, Prism итд. А также о мобильных rich-клиентах и многом другом интересном. Но до такой секции на российских конференциях, посвященных клиентским веб-технологиям, нужно, думаю, шагать еще года два-три-четыре-пять. Подождем… Проблема в том, что на мои доклады «Сравнение современных технологий для создания насыщенных интернет-приложений (RIA)» и «Adobe Integrated Runtime (Adobe AIR): платформа для создания десктопных RIA» отведено всего по тридцать минут, а это очень мало. Ну ничего, буду быстро бежать по верхам. Не думаю, что широкой аудитории интересны технологии создания насыщенных интернет-приложений. Гораздо интереснее, например, AJAX и JavaScript, которые спустя несколько лет таки дошли до России и стали популярными. Так, в секцию «Мультимедиа» проник 45-минутный доклад по GWT, который имеет отношение к AJAX, а также 45-минутный доклад по анимационным эффектам в браузере, явно относящемся к секции «AJAX, JavaScript, JSON, GWT», тезисы которого начинаются с замечательных слов про Flash:
Видимо, автор не в курсе, что для Flash-платформы в отстающей в технологическом плане на несколько лет России можно писать не только в среде разработки Flash, но и с использованием того же Flex’а, с учетом которого слова автора о Flash-платформе правдивы лишь в утверждении о проприетарности, в чем лично я вижу только положительные стороны (думаю, что после конфы я опубликую свои соображения по этому поводу), а также о компилируемости приложений (с учетом наличия стандартного решения предоставления исходного кода приложения это тоже явный плюс). Но мы не будем вешать голову, а воспользуемся даже тем немногим, что нам дали, с максимальной отдачей. Надеюсь увидеть благодарных слушателей на своих докладах. Встретимся в Москве! |
97 черновиков Флэша Потрошителя. Нужно что-то менять! Только что прошелся по блогу и обнаружил, что 97 записей до сих пор находятся в статусе черновиков: их никто кроме меня не видел. Некоторые уже безнадежно устарели. Нужно быть решительнее. Было. (О! На выходных буду доводить до ума и публиковать стоящие черновики.) |
2007-11-03 |
Куда подевался Flash Remoting в CS3? Никуда. Он стал еще проще Вы любите Flash Remoting во Flash? Используете его простоту и скорость? Тогда вы наверняка заметили, что для Flash CS3 набора Remoting Components нет и не предвидится. Почему, я не знаю; зато знаю, как его вернуть. Оказывается, во Flash CS3 никакие специальные компоненты для ремоутинга вообще не нужны. Достаточно правильно использовать AS3-класс NetConnection, как подсказывает Оскар Трельес: создаем класс-обертку вокруг Далее - код, пример использования и одна проблема, с которой я столкнулся. |
Немного о проектировании Написание этой заметки совпадает у меня с формальным изучением RUP (Rational Unified Process) и проектированием систем в UML. В мировом масштабе сейчас лидирует объектно-ориентированная парадигма написания ПО, на старте находятся фреймворки и паттерны проектирования (GoF). Благодаря своей родной кафедре я сумел познакомиться с логической и функциональной парадигмой написания программ в Лиспе, Рефале и Прологе. Некоторый класс задач гораздо удобнее решать с использованием этих языков. Сам я пишу Web-сайты на PHP, знаю, что многие делают также и очень этим довольны, несмотря на то, что люди, пишущие в нем не очень часто используют классы. Кроме того, в Web-программировании набирает большие обороты Ruby-on-Rails. Хочу немного поразмышлять по этому поводу. |
2007-11-02 |
Как лучше определять свойства класса, предназначенные для потомков и внешнего пользования? Как лучше определять свойства класса, предназначенные для потомков и внешнего пользования? Вопрос не быстродействия а логики.
Первый способ дает неоднозначность - обращаться к свойству напрямую или через установщика. Однако, обращаясь напрямую, мы имеем дело с переменной, что улучшает производительность. Второй способ лучше, т.к. сокращает количество путей доступа к свойству, что лучше сказывается на инкапсуляции объекта. Последний способ применим только для простых конструкций. * * * Важно четко понимать, какой способ лучше применить:
|
Как устроены Модель, Вид и Управление во фреймворке PureMVC Друзья, данная часть цикла статей о флэш-фреймфорвке PureMVC должна называться "Как обмениваются Оповещениями участники PureMVC". Но комментарии к предыдущей части, "Фасад — ядро и лицо фреймворка PureMVC" навели на мысль, что стоит подробнее выяснить назначение и концептуальное устройство PureMVC, прежде чем переходить к более конкретной теме. Поэтому сначала еще немного о цели PureMVC, а также о крупных частях его тела: о Модели, Представлении, Контроллере и Фасаде. Цель флэш-фреймоворка PureMVC очень узка: разделить работу над проектом на три части. Это — 1) работа с данными, 2) работа с интерфейсом и 3) общее управление приложением. В PureMVC c данными работает Модель, с визуальным интерфейсом работает Представление, а управление производится через Контроллер. Такое разделение позволяет создавать расширяемые приложения, которые легче поддаются отладке, модификации и поддержке.В PureMVC Модель, Представление и Контроллер реализуются как три одноименных класса-синглтона: Model, View, Controller. В то же время, PureMVC организован так, что разработчик может использовать данные классы прозрачно, с помощью Фасада, тоже Синглтона. Этот класс знает каждого из трех главных участников системы. Такой Фасад можно назвать Центральным Фасадом приложения. Теперь коротко о каждом из трех главных игроков-синглтонов Pure MVC (Синглтон — это класс, гарантирующий существование только одного своего экземпляра, поэтому его также называют Одиночкой). Модель и ее Посредники (Model & Proxies)Синглетон Модели в PureMVC — это просто кэш ссылок на Посредников (Proxy). Посредники работают с моделью данных приложения: они и только они, как мы знаем из первой части "Архитектура PureMVC", работают с источниками информации. Получается так: Модель, являясь Одиночкой (Singleton), дает приложению широкий выбор своих возможностей работы с данными через Посредников. Представление и Медиаторы (View & Mediators)Синглтон Представления (View) является кэшем ссылок на Медиаторы (подобно тому, как Модель кэширует Посредников). Именно Медиаторы работают с внешним видом приложения: они и только они работают с визуализацией и обмениваются событиями с интерфейсом (например, с MXML-компонентами). Так в PureMVC Модель отделяется от Представления. Контроллер и Команды (Controller & Commands)Контроллер хранит ссылки на классы Команд, экземляры которых создаются на лету — по необходимости. Команды могут работать с Посредниками и Медиаторами, выполняя роль координаторов их взаимодействия, особенно когда речь идет о создании цепочек действий. Синглетоны Модели, Представлениея и Контроллера в PureMVC, по сути, не делают ничего, кроме выдачи ссылок на своих представителей. Именно поэтому подавляюще бОльшая часть кода при реализации PureMVC-приложения пишется именно внутри этих представителей: Посредников (представляют модель данных), Медиаторов (представляют вид приложения) и Команд (дают управление). И снова о Фасаде в PureMVCФасад в PureMVC отдувается за безделие главных игроков и занимается тем, что инициализирует их и дает доступ ко всем их методам (которых не много). Разработчик PureMVC-приложения получает всю необходимую функциональность, просто расширяя Фасад PureMVC своим классом, таким образом получая Конкретный Фасад приложения. И уже через этот Конкретный Фасад происходит работа с Конкретными Посредниками, Медиаторами и Командами — то есть с данными приложения и его видом, а также общее управление им. Почитайте о Фасаде в PureMVC еще раз. Если стало понятнее, то эта запись не прошла зря. |
Мини-пост о производительности Flex 3 Builder Работая в Flex 3 Builder, можно заметить ощутимое притормаживание при авто-импорте классов, и чем больше импортов уже имеет класс тем хуже становится билдеру, бывало задумывался до 3-4 секунд. Корень проблем зарыт в настройке билдера, в частности в опции “Keep imports organized”. Эта опция заставляет несчастный билдер при каждом импорте не только сортировать строчки в хедере, но еще и проверять на использование того или иного импорта (к стати иногда он у меня грохал свежие импорты как ненужные). Но это все мелочи Как вылечить смотрим тут: |
Потрошители тоже видят сны Великий и ужасный Флэш-Потрошитель, как оказалось, тоже иногда видит сны. Которые на самом деле навеяны войной блогов. И сны его об индейцах с узелковыми письмами и про мальчиков с косматыми улыбками. Пятница... чего только не приснится?! |
Потрошители тоже видят сны Великий и ужасный Флэш-Потрошитель, как оказалось, тоже иногда видит сны. Которые на самом деле навеяны войной блогов. И сны его об индейцах с узелковыми письмами и про мальчиков с косматыми улыбками. Пятница... чего только не приснится?! |
Флэш-сны: Saffron 13 UML, Шагги Минималист, Инжун Индеец про Flash 12 и флэш-кино с самим собой Мне приснился сон, из которого я запомнил: Из всего этого сыблось только предпоследнее... а вообще мне очень редко снятся сны, я каждому очень рад. |
2007-11-01 |
Удобная флекса для точной настройки атрибутов сглаживания шрифта Если бы Тема Лебедев занимался флэш-программированием, он бы порадовался этому приложению для тонкой настройки антиалиасинга шрифтов (с исходным кодом) и накатал бы еще один замечательный параграф об экранной типографике. Но поскольку Тема занимается каким-то дизайном (что это?), то придется нам разбираться с тонкостями антиалиасинга надписей самостоятельно. Как вы знаете, во Flash Player 9 появилась возможность задать текстовому полю специальный режим анти-алиасинга, "advanced". В этом режиме у текстового поля появляются три новых свойства стиля: Играя этими свойствами, можно добиться самых разных, порой неожиданных надписей. Попробуйте: продвинутая настройка свойств сглаживания для флэш-шрифтов. Демка очень наглядная и ее можно смело заносить в свой инструментарий, как и исходники над ней. |
Как загрузить библиотеку и затем аттачить из нее клипы Встал вопрос, как это сделать. Нашел такой код. Надо пробовать. * * * Попробовал, работает превосходно. Обожаю AS3. * * * Трансформируя вышеприведенный код получаем очень простое решение: Перед загрузкой указываем лоадеру контекст: var context:LoaderContext = new LoaderContext(true, ApplicationDomain.currentDomain); this.loader.load(this.source_url, context); Затем, уже после того как загрузится swf-ка, мы в любой момент можем сделать следующее: var movie_class:Class = ApplicationDomain.currentDomain.getDefinition("MovieClass") as Class; var movie_sprite:Sprite = new movie_class(); this.addChild(movie_sprite); |
Как загрузить библиотеку и затем аттачить из нее клипы Встал вопрос, как это сделать. Нашел такой код. Надо пробовать. |
Сколько памяти расходует небольшой класс в ActionScript3 Вчера в обсуждении экономии памяти за счет использования типа Я выяснил, сколько памяти отъедают экземпляры класса То есть: 23Мб памяти расходуется на хранение одного миллиона экземпляра классов PointVO, каждый из которых имеет два свойства А для типа данных Возникает интересный вопрос: почему в случае с типом Далее — исходный код теста для интересующихся. |
Версия подгружаемой SWF Смотреть 4й байт. Код. |
Client Side 2097, слет пионеров Вебтриноля Fcuk. Я не вижу возможности попасть 6-7 ноября в Москву на СlientSide2007. А вы, если можете, попадите. Там Дмитрий Поклонский (ссылка?), Иван Дембицкий и Костя Ковалев расскажут про кривые Безье во Flash, про работу с XML и про создание стандалонных Flash-приложений. Будет проведено сравнение современных RIA-технологий (Slight?) и обзор возможностей Adobe AIR. А еще будет много всего не про флэш, читайте программу конференции Client Side 2007 и непременно зайдите в обсуждение у Костантинера, у него там не только с подробностями, но и со ссылкой на бурную дискуссию о вреде пафоса в составе вступительных слов. С чем я не согласен и сейчас выражу свое несогласие. Мой грамм масла к полезной жирности вступительных словКак по мне, так вступительное слово обязано быть пафосным. Окей, пусть оно не будет именно таким. Пусть будет стебным, стремным, страшным или смешным. Но вступительное слово не имеет права быть никаким — тогда пусть его не будет вообще. Если ты, организатор, не горишь идеей собрания — кто будет гореть за тебя?Желаю всем с пользой провести славное время на ClientSide2007. Зажигай! |
Flare visualization toolkit Flare - это коллекция ActionScript 3 классов для создания разнообразных интерактивных визуализаций, например, при создании графиков, сложных анимаций, диаграмм и т.п. Flare основан на prefuse, богатом инструменте для визуализаций, написанном на Java. Flare является опенсорсным (BSD) и может спокойно использоваться для коммерческих целей. Скачать Демо Урок API докуметация |