Flash Ripper RSS Readers

+

09.Июль.2008

URAFPUG - трансляция первой презентации по PureMVC

В 21:30 по киевскому времени начнется первая, пробная трансляция презентации по основам PureMVC с международной встречи URAFPUG.

Смотреть и задавать вопросы в чате по этому адресу: adobechats.adobe.acrobat.com/uafpug.

Posted by: Rost at 09:11 PM | Comments (7)

07.Апрель.2008

PureMVC и PHP — неожиданно высокая популярность

Сегодня я без всякого умысла разговорился с php-программистом о практиках кодирования. Была затронута тема паттернов, затем тема MVC, а затем он произнес слово 'PureMVC'. На мой удивленный вопрос, откуда он услышал этот термин, он ответил, что знакомые пиэйчпишники уже прожужжали ему уши этим самым Pure MVC для PHP. Как когда-то прожужжали ему те же самые уши Зенд фреймворком и т.п.

Я, конечно, знал, что изначально созданный для чистого AS3 фреймворк PureMVC уже портирован на PHP и множество других языков. Вот полный список: ActionScript 2, ActionScript 3, C#, ColdFusion, Java, Perl, PHP, Python и Ruby. Но что PureMVC приобрел популярность такого уровня среди русскоязычного PHP-сообщества — я и подумать не мог.

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

По этому поводу еще раз сошлюсь на подборку статей по PureMVC для AS3 — на русском.

Но не забываем: заставь идиота хоть байткод писать — он и клавиатуру расшибет, и байткод обругает.

Posted by: Rost at 08:35 PM | Comments (14)

04.Апрель.2008

Недостатки PureMVC и мысли по поводу Code Behind

Вот одна из лучших в мире дискуссий про PureMVC и о программировании вообще. Ведь дискуссию ведут очень толковые люди, среди которых есть и автор PureMVC Клифф Холл, и работающий на Yahoo Джош Туньяла, и много кто еще, включая людей, в PureMVC совсем начинающих. А комментарии к этой статье важнее нее самой.

Из одной этой дискуссии можно узнать несколько полезных вещей:

  1. Почему во фреймворке PureMVC используется собственный механизм рассылки Оповещений (Notifications), а не расширается класс Event (6-й коммент).
  2. Почему нельзя считать Events частью ядра языка ActionScript 3.
  3. Хороший и умный текст будет прочтен, даже если его запихнули на неизвеcтный читателю, не авторитетный для него сайт — именно по этому адресу я прочел статью. И только прочтя ее до конца, я увидел ссылку на оригинальное место размещения статьи в блоге ее автора Jesse Warden, который, безусловно, является весьма авторитетным голосом в сообществе Flash / Flex разработчиков.
  4. Почему нельзя верить на слово никому, даже самому опытному и авторитетному разработчику.
  5. Почему не стоит писать о фреймворке, не попробовав его в деле хотя бы один раз.
  6. Как мнение автора хорошей статьи может меняться под воздействием еще лучших комментариев.
  7. За что именно разработчики, не владеющие всей красотой лучших практик программирования, любят PureMVC.

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

Posted by: Rost at 06:59 PM | Comments (9)

26.Март.2008

Ростислав Сирык: PureMVC в картинках, доклад c UAFPUG-1

Продолжаем выкладывать презентации с UAFPUG-1 в порядке изложения докладов на самой встрече.

Предупреждение: материал представлен "как был". Мы решили, что лучше выложить презентации такими сейчас, чем выложить их слишком поздно или не выложить вообще.

Итак, презентация вторая — от Ростислава '_rost' Сирыка. У нее есть особенность: презентация оптимизирована под устный доклад, поэтому не серчайте, если мало буков (зато много ссылок :):

Скачать файл презентации. Продолжение следует.

См. также первую презентацию: Эльдар Прилуцкий, Событийная модель AS3.0 и втоарую: Денис Папазов, Flash Media Server 2 и новое в FMS3.

Posted by: Rost at 04:39 PM | Comments (12)

31.Январь.2008

Уроки по PureMVC — много, понятно и на русском

Flash-, Flex- и AIR-фреймфорк PureMVC (я когда-то начал писать цикл статей о нем (и закончу)) набирает популярность, в том числе и в рунете.

Я неоднократно слышал нарекания: мол, новинка вышла, а ничего не понятно, как ею пользоваться — неизвестно. Но не в случае с PureMVC. Уже сейчас на русском языке есть масса статей по этому компактному и фреймворку, в том числе и переводных. В частности, Injun написал о PureMVC несколько отличных постов, за что ему отдельные респект и уважуха:

  1. 10 советов по PureMVC.
  2. Что мы знаем о flash/flex фреймуорках?
  3. Пример Flash-галереи на PureMVC.
  4. Как создать простой FLV-плеер во Flex и Flash, используя PureMVC (совсем свежее!)

По поводу моей серии. Моей изначальной целью было последовательное ознакомление с концепциями, заложеннными в PureMVC — и я буду придерживаться этого подхода. Сочетая прикладные аспекты, изложенные в указанных выше статьях Injun'а, со следующими более теоретическими материалами, читатель получит максимально широкое понимание фреймворка PureMVC и не только:

  1. -= Чисто MVC =- (тут важны комменты).
  2. Архитектура и ключевые фигуры фреймворка PureMVC.
  3. Фасад (Façade) — ядро и лицо фреймворка PureMVC.
  4. Как устроены Модель, Вид и Управление во фреймворке PureMVC
  5. Кто использует Cairngorm? (здесь не про PureMVC, но снова — важны комменты)

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

Posted by: Rost at 12:30 PM | Comments (5)

02.Ноябрь.2007

Как устроены Модель, Вид и Управление во фреймворке 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 еще раз. Если стало понятнее, то эта запись не прошла зря.

Posted by: Rost at 05:04 PM | Comments (2)

30.Октябрь.2007

Кто использует Cairngorm?

Друзья, пока пишу про PureMVC, понимаю, что рано или поздно встанет вопрос сравнения его с доминирующим сейчас MVC-фреймворком для Flex — микро-архитектурой Cairngorm.

Меня интересуют два вопроса:
1. Есть ли среди посетителей Flash Ripper люди, использующие Cairngorm в работе или изучавшие его? Сколько вас?
2. Существует ли статья (или серия) с описанием Cairngorm на русском?

(Сейчас жалею, что в свое время не написал о Сairngorm почти ничего, кроме пояснения, кому и почему не следует его использовать).

Posted by: Rost at 07:49 PM | Comments (9)

29.Октябрь.2007

Фасад (Façade) — ядро и лицо фреймворка PureMVC

Продолжаю описание флэш-фреймворка PureMVC рассказом о центре системы—Фасаде.

Внимательный читатель заметил, что в первой части "Архитектура и ключевые фигуры фреймворка PureMVC", в поименном перечислении членов фреймворка не были названы фундаментальные части MVC, чья необходимость самоочевидна: Model, View и Controller.

Там же мы узнали, что Фасад (Façade) — это участник, предоставляющий членам системы MVC прозрачный взаимный доступ друг к другу.

Наличие Фасада и есть причина отсутствия "Model", "View" и "Controller" в списке членов PureMVC. Дело в том, что Фасад "прячет" за собой эти части фреймворка, обеспечивая им взаимную видимость "сквозь фасад". Это так же прозрачно и для разработчика приложения. Конкретно, для разработчика-пользователя PureMVC это означает, что вы не обязаны явным образом создавать экземпляры этих трех ключевых классов: они строятся автоматически при создании Фасада. Разработчик создает один экземпляр класса Facade, а в дальшейшем все участники системы используют Фасад как централизованную точку доступа друг к другу.

Структура Фасада в PureMVC


Фасад в PureMVC является классом типа Синглтон (или Одиночка: класс, гарантирующий создание не более чем одного своего экземпляра и доступ к нему). Код Фасада состоит из таких блоков:
  1. Объявление имен Оповещений (Notifications) приложения. Задаются как статические константы типа static const NOTE_APP_INIT: String = "noteAppInit".
  2. Реализация Синглтона: метод getInstance, возвращающий ссылку на единственный экземпляр класса Façade.
  3. Регистрация Команд приложения: метод initializeController, регистрирующий в Контроллере все используемые в приложении Команды.

Зачем в PureMVC нужны Оповещения и Команды


Оповещения (Notifications) используются как микро-операции для взаимодействия каждого члена фреймворка PureMVC с остальными его членами. Это — "атомы" взаимодействия элементов PureMVC друг с другом. Например: некий Заместитель (Proxy), закончив обработку своих данных, создает соответствующее Оповещение. Фасад рассылает это Оповещение заинтересованному(ым) Медиатору(ам), который(е) эти данные отображает(ют) в нужном виде, а также может выполнить Команды, на это Оповещение зарегистрированные.

Команды же используются как макро-операции, руководящие работой системы в целом. Их деятельность можно уподобить действиям дирижера. Например, команды могут координировать последовательность действий при инициализации или закрытии приложения.
Каждая команда — это часть Контроллера. Фасад знает о Контроллере и дает прозрачный доступ к каждой Команде; таким образом, разработчик оперирует не самим Контроллером, а его представителями—Командами.

Фасад — структурное ядро приложения PureMVC


Итак, Фасад (Façade) как ядро системы PureMVC:
  1. Обеспечивает набор элементарных микро-частиц обмена информацией между членами PureMVC. Это Оповещения (Notifications).
  2. Строит костяк макро-управления работой приложения. Это Команды (Commands).

В следующей части — о том, как обмениваются Оповещениями участники PureMVC.

Вопрос: понятно ли я излагаю? Что следует уточнить, а на что дать ссылки?

Posted by: Rost at 04:30 PM | Comments (12)

25.Октябрь.2007

Архитектура и ключевые фигуры фреймворка PureMVC

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

Развернутая архитектура фреймворка PureMVC



Ключевые фигуры PureMVC

PureMVC — это реализация классического MVC для Flash-платформы, но у него есть изюминка. С нее и начнем поименное перечисление действующих лиц этого фреймворка:
  1. Façade. Фасад. Предоставляет участникам системы прозрачный взаимный доступ друг к другу. Синглтон.
  2. Mediator. Медиатор. Представляет свою часть интерфейса пользователя Фасаду, Командам, Заместителям и другим Медиаторам.
    Proxy. Заместитель. Представляет свои Данные Фасаду, Командам, Медиаторам и другим Заместителям.
  3. Command. Команда. Координирует взаимодействия Фасада, Медиаторов, Заместителей и других Команд.
  4. Notification. Сообщение.Элементарная единица внутреннего обмена информацией между Фасадом, Командами, Медиаторами и Заместителями. Камикадзе с посланием произвольного содержания, умирает сразу после доставки сообщения. Показаны голубыми стрелками.

Пограничные объекты (boundary objects) по отношению к MVC-ядру

  1. UI. ПИ. Пользовательский интерфейс, компоненты, формы etc. Взаимодействуют только с Медиаторами.
  2. Data objects. Данные. Объекты данных, включая удаленные. Взаимодействуют только с Заместителями.
  3. Events. События. События пользовательского интерфейса или данных. Камикадзе, доставляют посылки между ПИ и Медиаторами и между Данными и Заместителями. Показаны серыми стрелками.
Пограничные объекты—это внешние по отношению к фреймворку PureMVC элементы приложения и именно они есть причина его существования. Задача фреймворка — структурировать работу с ними, разделив код приложения на логические блоки.

Такова архитектура PureMVC в общих чертах.

Следующая часть: Фасад (Façade) — ядро и лицо фреймворка PureMVC.
Также почитать: Почитать о классическом Фасаде. Забыть.

Posted by: Rost at 02:42 PM | Comments (10)

23.Октябрь.2007

-= Чисто MVC =-

Стоп. Медитируй.

PureMVC -=m@v@c=- чисто МВК
Posted by: Rost at 12:59 PM | Comments (26)


++