Вообще без воды и по русски: Fror = Flex + Ruby on Rails (часть 1). Жаль только, скриншоты там слегка битые. Там нет описания установки Ruby on Rails (об установке ROR можно узнать в статье "Магазин на Flex + Ruby on Rails по русски").
Flex 2 упакован и готов к доставке
Круги на воде:
Flex.org Flexcoders.net Bill McCoy: Flash Player 9 & Flex 2 Released TechCrunch: Adobe Launches Flex 2 CNET: Adobe updates Flash Player, Flex tool
Flexcoders.net
Bill McCoy: Flash Player 9 & Flex 2 Released
TechCrunch: Adobe Launches Flex 2
CNET: Adobe updates Flash Player, Flex tool
Flash Professional 9 Actionscript 3.0 Preview -- для флэш-разработчиков, желающих поиграть с Actionscript 3 уже сейчас, не дожидаясь выхода новой версии Flash "Blaze" 9 в 2007 году.
Качайте Flash Professional 9 ActionScript 3.0 Preview. Эта версия -- практически тот же Flash 8, но с возможностью написания и проверки синтаксиса Actionscript 3 и с полной документацией к нему же (жми F1). И возможностью компиляции под Flash Player 9, который теперь доступен для всех по интуитивно-понятному, легко вспоминаемому адресу: adobe.com/go/getflash.
Хакерам в эту же тему: Формат файла SWF 9.
27 июня фреймворк Cairngorm 2 появился в Adobe Labs, как и было обещано.
Flex 2 -- это первый флэш-инструмент, перевод документации к которому появился раньше него самого (а сам Flex 2, если верить пророкам, выходит через несколько дней; а истинно же верующие получат его уже завтра). Сейчас уже переведена первая книга, называемая "Начало работы с Flex 2 (Getting started with Flex 2)". Эта ссылка ведет не сайт Майкла Клишина, который путем убеждений, диверсий и ухищрений заставил нескольких молодых людей бороться с тысячестраничным англоязычным pdf-файлом а себя подверг его беспощадному редактированию.
Респект? Рееееееееееееееспееееееееээээээээээээээээээээээээээээээээкт!
На сайте codeproject, помимо множества статей по программированию есть и раздел с вакансиями для программистов -- разных, в том числе и для флэш-разработчиков. Там даже есть объявления из стран СНГ. Там же можно разместить свое обявление о поиске работы/работника на сайте codeproject.com.
Глядя на работы Hoogerbrugge (кто знает, как правильно произнести по-русски?) я вспоминаю, что на самом деле главное во флэше. Что делает его именно флэшом, а не аяксом, не фотошопом и не дотнетом с джавой: сублимированный эксгибиционизм. Сложно звучит, да? А как сказать проще? Как посчитать тех, кто не пошел в опасные маньяки / мизантропы, заделавшись вместо этого (не)скромным флэш-артистом?
Вот из его нового:
А вот из старого:
Вы уже знаете, что скоро флэшу не нужны будут всякие обертки типа Zinc, Screenweaver и пр. для плотного взаимодействия с операционной системой? И что флэш сможет работать как десктоп-приложение, действуя при этом рука об руку с JavaSctipt/ HTML/ CSS/ PDF/ ? И что прозрачные окна, о которых не спали мы столько ночей, скоро придут в наши дома, то есть на наши рабочие столы?
Клишин продолжает коллекционировать и публиковать сведения об Adobe Apollo на русском языке, следующем важном шаге флэш-платформы.
Проходя шаг за шагом видео-туториал по использованию Google Web Toolkit (GWT) в IntelliJ IDEA GWT Studio, обнаружил замечательную особенность среды IDEA: в ней есть Undo на уровне операций над проектом. Например: создал класс -> нажал CTRL + Z -> можешь отменить создание класса. Класс.
Появилось толковое объяснение на русском, что такое опен-сорсный медиа-сервер Red5 и какие преимущества он дает при работе с аудио- и видео-потоками, веб-камерами, микрофонами и сокетными соединениями. Там же поясняется, как Java-природа бесплатного Red5 резко делает его на голову выше Flash Media Server -- платного сервера от макромедии за $40000.
JabbyPanda составил подробный отчет о состоявшемся в Киеве семинаре Adobe. Новости хорошие, но обо всем по порядку, слово -- автору отчета:
Семинар Adobe в Киеве проходил в конференц-зале ТЦ "Сity". Из заявленного, Wi-Fi не работал, и поэтому некоторые примеры адобовцы не смогли показать, хотя предпринимали отчаянные попытки соединиться с Сетью через GRPS Roaming, но не судьба.
Они -- из офиса Адобии в Мюнхене.
Мы заручились подержкой Кристофера и Конрада о создании на базе Cонопии Adobe Flex User Group Ukraine.
В будущем мы ожидаем оживления обмена знаниями из инженерами Адоби и Флекс и Флэш-фрилансерами, которые сотрудничают с Адоби, включая их возможный приезд в Киев для презентаций и семинаров.
Из неформального общения: интересен был момент, когда Кристофер Бреннан спустился на 1й этаж магазина "Сity.com" и купил за $6 два компакт-диска с Adobe Photoshop CS и Adobe Illustrator CS.
Макс Грынив "Мокус" выиграл в лотерею лицензионную копию Adobe Photoshop CS (Молодец, Макс! Я всегда в тебя верил! -- Рост), которую Сонопия обменяет ему на денежный эквивалент.
Макс "Dead moroz" выиграл в лотерею Ipod Shuffle 512 Мб.
Девелоперов на семинаре было совсем не много, я думаю из-за того, что у организаторов семинара не было прямого выхода на нас. С появлением Adobe Flex User Group Ukraine, ситуация должна измениться.
Ив написал actionscript-библиотеку BitmapLibrary -- для загрузки и грамотного кэширования картинок (растровых данных).
На пресс-конференции, посвященной выходу библиотеки BitmapData, Иван заявил: "только написал, еще не тестил даже толком. но по идее всё что есть должно работать нормально. вот мож методы еще добавятся - заказывайте :)"
Также на конференции обсуждались вопросы импорта/экспорта свободного времени. Один из докладчиков заявил, что... стоп-стоп-стоп, это уже тема для другой новости!
Flash Remoting шагает в сторону Ruby. Или наоборот -- но какая разница? Главное -- есть люди, которые их сближают. Вот Макс Лапшин сделал парсер amf пакетов на Ruby on Rails, написанный по спецификации amf с сайта osflash.org.
Любой желающий может забрать исходные файлы amf-парсера по указанной ссылке.
Говорит сам Макс:
"Он не сильно что бы хорошо оформлен и фреймворка вокруг этого нет. Но пакеты читать и писать умеет. Core data читается и пишется, кажется, целиком. Data types -- там есть еще чего обсуждать. В частности, не готовы RecordSet-ы."
Core data читается и пишется, кажется, целиком. Data types -- там есть еще чего обсуждать. В частности, не готовы RecordSet-ы."
Вот дочитаю книжку по флексу, затем дочитаю книжку про руби, и займусь этим. Впрочем, если кто-то опередит, мне будет совсем не обидно, правда ;)
23 июня 2006 года, в пятницу, в Киеве, сотрудники компании Adobe проведут бесплатный тренинг по продуктам Flex, Breeze и Media Server 2.
На повестке дня:
Начало
Длит.
Описание мероприятий.
9:00
0:15
Регистрация участников.
9:15
0:45
10:00
10:45
Кофе-пауза.
11:00
11:45
12:00
0:30
12:30
1:00
13:30
14:15
15:00
15:15
16:00
16:45
17:30
Вопросы - ответы.
17:45
-
Подробности, регистрация и адрес мероприятия на сайте: тренинг компании Adobe "Программное обеспечение Adobe -- успех продаж"
Как вы знаете, Flex-приложения быстрее всего создаются на языке MXML -- подмножетсве XML. Он используется для описания структуры Flex-приложения, его компонентов, некоторых элементарных обработчиков событий и пр. -- это так называемая "статическая" часть Flex-программы. MXML скрывает от разработчика внутренний механизм работы объектов/компонетов, предоставляя их базовые свойства в виде тэгов и аттрибутов. Для получения же более сложного поведения приложения (что требуется практически всегда) используется язык ActionScript3, вставляемый прямиком в исходный MXML-код в виде блоков CDATA (есть и другие способы -- классы, внешние файлы...) Так и получается: два языка бок о бок в исходном коде. И если у флэшера личность раздваивалась по оси "программист-дизайнер", то у флексовика личность состоит уже из двух программистов, один из которых все же слегка верстальщик.
Однако картина меняется при компиляции MXML-исходника: прежде, чем на выходе появится готовый swf-файл, весь MXML превращается в ActionScript3, из которого и получается затем готовое swf-приложение.
Вы это наверняка уже знали.
Но как увидеть этот промежуточный Actionscript-файл? Оказывается, очень просто. Досаточно только указать компилятору опцию "-keep-generated-actionscript" -- и финальный as-файл окажется рядом с готовым swf, пригодный для вашего детального исследования (в ходе которого выясняется, что существует весьма прямолинейное взаимное отображение между mxml и as3).
-keep-generated-actionscript
А что с этим делать дальше -- сто путей, сто дорог, вплоть до полного отказа от MXML как от возможной, но необязательной прослойки. Да мало ли что ;)
Указать опцию можно так: Flex Builder > Project > Properties > Flex Compiler > Additional compiler arguments > -keep-generated-actionscript
Flex Builder > Project > Properties > Flex Compiler > Additional compiler arguments > -keep-generated-actionscript
А старожилы флекcа наверняка скажут, что это вовсе и не новость, и что это было еще во Flex 1.5. А зашедшие на огонек джависты добавят, что это из джавы пошло ;-)
Еще не зная, что весьма короткая мысль разрастется на заметку в несколько абзацев, я запостил текст "Как избежать ловушки Допосинения" в ЖЖ. Но теперь я вижу, что на страницах Ф. Потрошителя эта запись будет тоже актуальна (если не более). Поэтому даю здесь ссылку на нее, а комметариями делитесь хоть тут, хоть там. Главное -- избежать Допосинения %-P
Update: Чем дальше я читал статью Фаулера об инверсии зависимостей (dependency injection), тем яснее видел, сколь наивна моя нижеприведенная попытка эту инверсию реализовать. Однако оставляю все как было напечатано. Кстати, на эту же тему есть отличная статья на русском: "Инверсия зависимостей при проектировании Объектно-Ориентированных систем". Долой костыли!
Возвращаясь к начатому Клишиным разговору о впрыскивании зависимостей в классы. Если коротко -- чтобы использующие друг друга классы меньше друг от друга зависели, то есть чтобы их действительно можно было безболезненно переносить из проекта в проект, придуман механизм наружного "вкалывания" в них этих зависимостей. Сначал постмотрим, как без этого; так, если написать в своем классе:
static private var app: App = App.getInstance(); static private var dc:Function = DelegateExt.create; static private var debug:Function = Debugger.getInstance().debug;
то даже в таком простом случае получим залипший именно на данной конфигурации класс, предполагающий, что для делегирования в нем всегда будет использоваться метод "DelegateExt.create", для трассировки -- Debugger.getInstance().debug, а класс основного приложения всегда называется App. Для внедрения такого класса в другую структуру придется преписывать его код, а это нехорошо.
DelegateExt.create
Debugger.getInstance().debug
Чтобы решить эту проблему и снизить зависимость классов друг от друга, и придуман механизм "Dependency Injection", т.е. -- "вкалывание зависимостей". Суть его в том, что зависимые от внешних изменяющихся классов пременные приобретают свои зависимые значения не внутри самого класса при объявлении, а задаются снаружи -- так мы уходим от необходимости переписывать класс при его переносе в другие проекты. Для впрыскивания зависмостей существует несколько методов, описанных по приведенной выше ссылке. Среди них -- метод сеттеров, когда зависимые свойства задаются через функции-сеттеры -- мне он понравился воей простотой.
Пытаясь применить механизм вкалывания зависмостей через сеттеры на своем проекте, я пришел к тому, что мои сеттеры и геттеры нагло разрастаются. Поэтому я вывел для себя комбинированный метод впрыскивания заависмостей. Пример:
Сам класс Ummmmm, использукющий вколотые зависимости:
class Ummmmm extends UIObject { /* * Dependency Injection Declarations */ private var app : Object; private var debug : Function; private var dc : Function; private var transformee : MovieClip; /* * Dependency Setter */ public function setDependencies(obj : Object) { for (var i:String in obj){ this[i] = obj[i]; } }
Пример использования:
ummmmm = Ummmmm.getInstance(); ummmmm.setDependencies({app:getInstance(), dc: DelegateExt.create, debug: Debugger.getInstance().debug});
Работает. Но должны быть в такой простоте и подводные камни.. предлагаю обсудить!
Adobe Consulting отвечает на вопросы об Apollo, а Клишин переводит ответы на русский и получается отличный Apollo FAQ на русском. Например, вы хотели спросить: куда, когда и как идет флэш, и можно ли наконец наладить мой любимый дрэг-н-дроп между swf-содержимым и операционной системой? Хотели? Там все есть, читайте.
Стивен Вебстер анонсировал скорое появление Flex-фреймворка Cairngorm 2 в обновленном виде в Adobe Labs. Точную дату появления и детали нововведений он не назвал, но сказал, что в новой версии будут учтены пожелания Flex-сообщества по улучшению Caringorm -- наверное, популярнейшего Flex-каркаса сейчас. Появление же Cairngorm 2 в семействе продуктов Adobe Labs делает его фактически официальным, рекомендуемым к использованию open-source инструментарием для Flex 2. В свете выходящего совсем скоро релиза Flex 2... в общем, не забывайте отдыхать :-)
Читая книжку "Programming Ruby" (Клишин дал почитать, спасибо), встретил упоминание об интерактивной версии интерпретатора Руби -- irb. А поскольку дома чисто случайно оказался установленнный Руби (это только частично шутка; Руби уже включается в конфигурацию по умолчанию некоторых Linux и Mac OS систем -- попробуйте ввести в консоли "ruby -v" и можете быть приятно удивлены), я решил попробовать этот irb в действии. Забавная штука -- ты пишешь строку руби-кода, irb тебе отвечает тут же. Незаменимая вещь для изучения языка "методом тыка": а что если так? А так? Вводишь любую команду и получаешь результат или ошибку. Пишешь: "2+2" а он: "4". Можно таким же образом задавать через irb переменные и работать с ними: a = 2, b = 2, a * b.
2+2
4
a = 2
b = 2
a * b
Или пишешь: puts "Hello World!" он отвечает: (угадайте, что?). Так что пока Руби -- самый дружелюбный известный мне язык программирования: на нем короче всего пишется "Hello World!" ;)
puts "Hello World!
Блоки кода тоже поддерживаются в irb. Я решил проверить, как у Руби дела с рекурсией. Хорошо оказались дела, вплоть до определения максимального количества самовызовов (уровней стека); вот мой диалог с irb, в котором я задаю рекурсивную функцию и вызываю ее (я показал весь процесс, начиная с запуска irb прямо из командной строки):
D:\>irb irb(main):001:0> def recursion irb(main):002:1> recursion irb(main):003:1> end => nil irb(main):004:0> recursion SystemStackError: stack level too deep from (irb):2:in `recursion' from (irb):2:in `recursion' from (irb):2:in `recursion' ... 1363 levels... from (irb):2:in `recursion' from (irb):2:in `recursion' from (irb):4irb(main):005:0>
Достаточно дилетантских отзывов; узнать больше об irb (и Ruby) можно в Википедии.
Клишину: RadRails установил на работе только вчера, у них сайт висел, а ко вчерашнему вечеру завелся. Поставил как раз на свежий Eclipse 3.2 RC7, кстати :)
fxri
xy_ задизайнил себе ЖЖ в стиле Flex 2. И рецепт приложил. А сделал он это... в далеком октябре 2005 года :)
Случалось ли вам попадать в долгий процесс отладки просто потому, что вы случайно ввели в исходном коде кириллический символ "с" вместо латинского "c" -- а они не только неотличиимы друг от друга, но и размещены на одной и той же клавише? Сколько времени было потеряно из-за такого дизайна клавиатур и моноширинного шрифта Courier New Cyr, не адаптированного для программирования, но по умолчанию для него использующегося! И если менять клавиатуры во всем СНГ не имеет смысла, то выпустить правильный обновленный шрифт для программистов уже могли бы, верно? И почему об этом молчит Лебедев, вот что тоже неясно...
с
c
В правильном программистском шрифте кириллический символ "С" содержит знак отличия от латинского "С". Вот ведь, например, в бесплатном шрифте Bitstream Vera Sans Mono символ "ноль" содержит точку посередине, чтобы его легко было отличить от заглавной буквы "О". Точно так же, можно выпустить шрифт "Courier New Cyr" с точкой посередине кириллической буквы "с" -- и это уже решало бы часть проблемы.
Тому же, кто не имеет правильного кириллического шрифта для программирования (это мы :) можно поступить радикальнее, воспользовавшись не-русифицированностью вышеупомянутого шрифта Bitstream Vera Sans Mono: скачав его, установив в системе и задав его в качестве шрифта основного текста в Eclipse (Window > Preferences > General > Appearance > Colors and Fonts > Text Font): в таком случае любая попытка ввести кириллическую "с" приведет к тому, что для ее отображения будет использован другой шрифт, содержащий кириллицу -- как правило, тот же Courier New. И тогда кириллическая "эс" будет визаульно отличаться от латинской "си".
Большое достоинство MTASC в том, что он при компиляции умеет распознавать "неправильные символы" типа вышеописанных кириллических "с" и выдает сообщения об ошибках. Но еще лучше было бы, если сама среда разработки предупреждала программиста о том, что он ввел недопустимый в данном контексте символ. Или вообще не давала его ввести (при включении опции "Block deprecated symbols while typing" в настройках IDE, например).
А как вы боретесь с этой проблемой?
Веб-разработчики, флексовики, флэшеры, дизайнеры, Java- и ColdFusion-программисты -- не пропустите! Серия бесплатных онлайн-семинаров Adobe стартует сегодня и это легкий способ войти в курс дела. Вот семинары, на которые еще можно подписаться (да, на некоторые уже нельзя. Разобрали. Чтобы перевести время семинара в московское, добавьте 8 часов):
Подписаться на любой из вышеперечисленных семинаров Adobe еще можно.
Open-source инициатива xinf (звучит как "'синф" = "xinf is not flash") -- это проект универсальной платформы для разработки кросс-платформенных приложений. Звучит?
Попытаюсь догадаться, о чем вы сейчас подумали. "Еще один пожиратель моего времени" -- да? У меня тоже много работы.
Но читаем дальше: проекты xinf работают под Adobe Flash Player, в браузерах, поддерживающих JavaScript, на платформо-независимом проигрывателе neko и на OpenGL, а создаются с помощью одного и того же базового кода.
Читаем еще дальше:
БОльшая часть кроспатформенной магии (да, там так написано) 'синфа основана на языке и компиляторе "haXe" от Николя Канасье. Xinf использует это замечательное изобретение для своих основных компонентов:
Существует скриншот, демонстрирующий, как этот исходный код на языке HaXe дает одинаковый результат работы во FlashPlayer, Firefox и в собственном проигрывателе 'синфа -- xinfinity.
Новый самозванец, посмевший снова нарушить наш покой -- Даниэль Фишер (Daniel Fischer (0xdf.com)), это он придумал этот 'синф.
Я, конечно, понимаю, что выглядит это как еще один безумный проект, но кто написал самый быстрый флэш-компилятор в мире? -- Человек, чье новое творение лежит в корне платформы XINF. И если вы хоть енмного романтик... то XINF API для вас ;-)
Вот, например, описанние XINF API для EventDispatcher'a (там уже есть такая вещь, как, например, addGlobalEventListener -- пригодится для слушателей глобальных событий типа ENTER_FRAME), а вот текущая реализация диспетчера событий в XINF API
addGlobalEventListener
Чтобы передать XML-объект на сервер при помощи Flash Remoting, не нужно предварительно превращать его в строку. Нужно взять и просто передать серверному методу этот XML -- а этот "принимающий" метод на сервере тоже должен ожидать именно XML объект, и это работает в разы быстрее, чем попытка передать XML как строку. Вот в чем ремотинг-чудо-то!
Расширение LiveHTTPHeaders для FireFox позволяет видеть, что именно гуляет между вашим браузером и сервером. Приятным сюрпризом для меня было увидеть там "Content-Type: application/x-amf". Эх, жаль, внутренностей amf только и не показывает.
А хорошим дополнением к LiveHTTPHeaders будет кнопка очистки кэша браузера "Clear Cache", еще одно расширение для Firefox (после установки вам нужно вручную добавить ее на панель инструментов).
Вдвоем эти экстеншены помогают отлаживать клиент-серверные взаимодействия.
То вам стоит живо поинтересоваться расширением FireBug для браузера FireFox. Ах, вы используете Internet Explorer? Так и это не проблема, Firefox может работать как ваш любимый IE с помощью другого своего расширения, IETab, позволяющего включать IE-рендерер html-страниц в любой вкладке FireFox одним кликом (и правым кликом по закладке открывать страницу в самом IE, а еще указать, для каких сайтов IE-рендерер нужно использовать по умолчанию, напр, для Windows Update etc.) Даже контекстное меню в нем будет от IE! Неубедительно? Тогда дальше не читайте, мне дорого ваше время. Дальше будет для тех, кому его время так же дорого, как оно дорого мне. Тем, кто FireBug уже знает, тоже может кое-что пригодиться из нижесказанного.
FireBug -- это расширение для для браузера FireFox, являющееся консолью, дебаггером, и DOM-инспектором Javascript / (D)HTML / CSS / XMLHTTPRequest в одной упаковке. Firebug показывает в консоли не только вызвавшую ошибку функцию, но стек (цепочку вызова) функций, вызвавших эту ошибочную гадюку. Он предупредит, что Javascript-метод/свойство и даже CSS-правило, которое вы пытаетесь использовать, не существует. FireBug при этом дотошнее всех валидаторов и самой встроенной консоли FireFox. Он даст вам ввести и выполнить Javascript прямо из своей консоли. А консоль эта находится всегда перед глазами, схлопывается и расхлопывается одним кликом и всем бы так жить, как живут теперь обладатели FireBug.
Говорить о том, что он стал любимым инструментом богов инета аяксовиков — просто лишнее. Он и запрос покажет, и адрес обработчика, и javascript разберет по косточкам, все задействованные функции покажет и выведет результат запроса — я пока лучше не скажу, так что цитирую.
Cуществует возможность работы непосредственно с консолью FireBug из вашего Javascript с помощью таких команд:
console.log(a);
console.log("Значение переменной a равно %s а значение b равно %d",a ,b);
a
b
console.info(a);
console.warn(b);
console.error(c);
Есть в FireBug и самый настоящий Javascript-отладчик, запуск которого изнутри ваших Javascript-ов включается простым влючением команды debugger; Вы просто пишете в коде debugger; и это вызывает пошаговый дебаггер. Продвинутый.
debugger;
А еще в нем можно измерять время выполения функций: достаточно в начале функции написать нечто вроде console.time("do this");, а в конце — console.timeEnd("do time"); В результате после выполения функции в консоли появится сообщение о времени выполнения.
console.time("do this");
console.timeEnd("do time")
Нужны еще аргументы?
А еще Firebug позволяет проводить интерактивное исследование и изменение структуры документа. Это делается в его закладке Inspector: там вся DOM структура отображается точно так, как видит ее в данный момент сам браузер (работает грамотный фолдинг). Водя мышкой по структуре документа в Инспекторе, вы увидите, как в самом документе соответствующий элемент выделяется красной рамкой. А теперь фича: здесь же, в Инспекторе, вы можете кликнуть по любому элементу и отредактировать любой его атрибут! Например, вы можете изменить строку типа div class="content" на div class="post". Вы можете посмотреть, как будет выглядеть эта же страница, но с другими стилями, просто изменив свойство href в строке типа <link href="style.css" ... /> на, например, "http://www.novemberain.com/blog/wp-content/themes/novemberain-flash/style.css" — да мало ли что вы захотите на лету изменить в вашем доке! (Кстати, я только что последнее сказанное проверил, и на проверку эту ушла минута.
div class="content"
div class="post"
href
<link href="style.css" ... />
"http://www.novemberain.com/blog/wp-content/themes/novemberain-flash/style.css"
А вообще, FireBug настолько прост в использовании, что и читать-то особо не о чем (хотя увидеть скринкаст-видео все же рекомендую даже закоренелым пользователям FireBug).
Ничего лучше для отладки Javascript, чем FireBug, не найти, и это точно. Проверьте и напишите сюда, и если вы убедите меня в обратном, я съем свою шляпу отдам вам свой собственный плакат "Flex 2 API Visual Reference" от RocketBoots => JabbyPanda (from Sonopia).
Товарищ, господин и братишка! Установи FireBug, пользуйся да радуйся, пока остальные жалуются на "этот невыносимый Javascript!" :-)
На толстом сайте ActionScript.com появилась статья, преподносящая в лучшем виде разрабатываемую Николя Канасье систему для написания всего на флэше HaXe. Известно, что некоторые считают Николя безумцем, и теперь видно, что не зря. Вглядитесь внимательно, какой страшный взгляд у этого человека (там фото его есть, рядом с примерами кода на языке HaXe ;-) Да он же горы свернет!
Как хотите, -- а я в него верю.
Я об этом еще не писал, а стоило бы. Вопрос такой: как должно происходить редактирование содержимого сайта? Ответ: а так же, как происходит правка любого документа, то есть должно править непосредственно страницу с содержимым, а не отображение этого содержимого в админ-части сайта. Админка должна быть сведена к минимуму; все, что можно ввести руками прямо на страницу, там же и должно вводиться, а изменения должны быть видны сразу и снова там же.
Страница и ее админка должны быть одним целым и находиться по одному адресу. Вот о чем я мечтал уже давно.
А что мы имеем на данный момент? В подавляющем большинстве случаев мы имеем устаревшую многоступенчатую модель действий "зашел в админку -> изменил контент -> зашел на сайт -> оценил изменения". Но свет в конце тоннеля уже виден. Его первым лучом стала флэш-система управления сайтом fCMS. Она позволяет редактировать текст и изображения на страницах флэш сайтов (знаю, для многих фраза "страница флэш-сайта" звучит дико, а часто это и выглядит дико, хехе :), не покидая этих страниц. На самом деле, это пока похоже скорее на зародыш той системы управления контентом, что должна стать Человечной Системой Управления Контентом Сайта. Но и это уже много. Через два месяца идею подхватят аяксовики (если уже не подхватили), чтобы снабдить такой же админкой любой HTML-сайт (на Фликре это уже давно частично реализовано -- там заголовок и описание любой фотки можно редактировать, просто кликнув по ним). Веселуха приближается!
Я поинтересовался, что на эту тему уже было на русском. Оказывается, ShaggySmile писал об этом, а поскольку его сайт лежит (кто знает, почему?), то вот ссылка на закэшированную Гуглом версию его страницы: Вся правда про fCMS, а вот еще одна, тоже из кэша: fCMS – система управления flash-сайта. По тем ссылкам и отзывы пользователей fCMS есть. Кстати, при поиске нашлось еще несколько мест, где люди искали разломанную fCMS, ибо стоит она уже $149.
Кстати, а почему лежит сайт ShaggySmile?
Пишущий о RIA товарищ Раян Стюарт сравнил примеры дизайна приложений во Flex и Avalon. Давно уже сравнил кстати, а приятно до сих пор!
Sonopia -- единственная в СНГ компания, создающая Flex-приложения. Давно хотел я увидеть живого флексера (например, Макса "Mokus" Грынива), и вот выпал шанс -- я еду в Киев по делам, а Sonopia оказывается в десяти минутах ходьбы от всех моих киевских дел, так что я заскочил к ним на часик, заодно оказавшись первым гостем фирмы Sonopia:
"Уютное место,-- подумал я, -- и у них есть время гасать в XBox. Гм, не слишком ли много я работаю?"
Затем я увидел другой кабинет в офисе Сонопии и понял, что для работы здесь место тоже найдется. Рабочие места пустуют частично из-за обеденности перерыва, а частично оттого, что ждут новых толковых разработчиков. Это правда: Sonopia ищет программистов (для flash lite тоже), ищет менеджеров, дизайнеров интерфейса, тестеров, админов и еще нескольких специалистов:
Это притом, что у них уже работает не только Макс Грынив (найдите на фотке Макса) а просто дофига интересных людей, которые здесь показывают мне создаваемое ими Flex-чудо (особенно замечательно то, что они уже не первый месяц воплощают идею, которая пришла в мою голову только неделю назад. Я в неподражаемом восторге):
Затем я познакомился с вице-президентом Сонопии по разработке Роджером Ноланом и обсудил с ним отладку Флекс-приложений. Этому человеку не придется обьяснять, что пора переходить на новую версию проигрывателя:
Затем Ф. Потрошитель как первый гость Sonopia получил постер Flex 2 API Visual Reference (в 3 (трех!) экземплярах). Один я уже повесил на стенку, два других пообещал отдать в хорошие руки:
Времени было мало, а удовольствия -- много. JabbyPanda -- спасибо, что все это устроил, а за постер так ваааще... кстати, отдам в хорошие руки постер "Flex 2 API Visual Reference" ;-)
Написано здесь: Microsoft пытается договориться с Adobe о включении Flash Player в Windows Vista. Нужные ссылки там же. Да и весь блог Грома Грэйма Харкера посвящен теме Flex + .NET
Совсем древнее: 17-20.09.2002, 23-30.09.2002, 01-04.10.2002, 07-11.10.2002, 14-19.10.2002, 20-26.10.2002, 27.10-02.11.2002, 04-08.11.2002, 11-16.11.2002, 18-23.11.2002 25-30.11.2002, 02-07.12.2002, 09-14.12.2002 Сайт заработал 17.09.2002