Факт: множество разработчиков до сих пор используют ActionScript 2 в качестве основного языка. Парадокс: зачастую это не студенты-двоечники, застрявшие на использовании устаревших уроков, а талантливые разработчики, написавшие собственные AS2-библиотеки, активно их использующие и в связи с этим испытывающие известные трудности с переходом на новый язык ActionScript 3. Это тот самый случай, когда багаж оказывается балластом и мешает осваивать новые технологии. А осваивать стоит, ведь все полезные нововведения, включая продвинутую работу с текстом, генерирование и обработку звука на лету, трехмерную функциональность, собственные эффекты и шейдеры, строгий контроль типов и новые полезные объекты языка — все эти вкусные новинки реализуются именно под новый язык AS3.
Колин Мук, известный своим глубоким и вдумчивым подходом, пытается решить эту проблему, вскрыть конфликтные точки и найти решение. С этой целью он выложил две статьи на английском:
Второй материал посвящен анализу 9 конкретных страхов, испытываемых AS2-староверами по поводу нового языка. Обе статьи вызвали бурное обсуждение. Количество комментариев (и не жиденького флуда типа +1, а ответов по делу) приближается к сотне.
Эти материалы достойны тщательного изучения флэшерами всех мастей и религий. И это надо срочно переводить на русский.
Друзья, с радостью сообщаю, что сайт Ф. Потрошителя вернулся в нормальный режим работы. Извините за неудобства. Для любопытных: несколько часов сайт работал с резервного сервера. Сбой в DNS произошел в ходе переезда в другой датацентр. Все материалы снова доступны.
Появилась поваренная книга Flex-разработчика на русском, по самому названию которой ясно, что это сайт о том, как готовить Flex — FlexCookBook.ru. Там вы найдете ответы на массу вопросов типа "Как(\\s*\\S*)*Flex(\\s*\\S*)*", то есть начинающихся со слова "Как", со следующим затем словом "Flex".
"Как(\\s*\\S*)*Flex(\\s*\\S*)*"
Но важно не только готовить Flex, но и делать это правильно. Юра Яровой в своих комментариях к русскому переводу "Flex SDK Coding Conventions and Best Practices" от Adobe объясняет, почему стоит тратить время на приведение кода в соответствие с соглашениями, принятыми в команде. Подписываюсь под его словами, и дублирую из его записи оглавление полного перевода:
На закуску: пример активного использования Flex на сайте Euro 2008 // via FishBounce.
Интересное совпадение: организаторы Russian Flash Awards как бы предвидели стилистику вышедшего недавно Flash Player 10, кодовое имя которому — Astro, и синхронизировались стилями с новым проигрывателем?
Важно: до 1 июня можно подать заявку на участие (достаточно просто написать письмо) в церемонии награждения победителей и тем самым получить возможность приобрести билет на церемонию со скидкой в 50% (итого заплатиы 4 тыс. рублей). Приведу официальный пресс-релиз:
«Russian Flash Awards» является одним из знаковых событий в мире информационных технологий и искусства. Среди работ будут представлены лучшие российские и зарубежные flash-проекты в девяти номинациях: Art, Коммерция, AIR/Flex, Игра, Анимация, Мультипликация, Техническая заслуга, Видео, 3D.
В церемонии награждения примут участие представители органов власти, руководители российских и зарубежных компаний, видные деятели культуры, звезды шоу-бизнеса, журналисты авторитетных СМИ и телеканалов, а также талантливые специалисты в области IT.
Мероприятие будет проходить в космической стилистике. Гостей праздника ждет музыкальная программа с участием диджея Svet'а, а также «космические» призы и подарки. <----- конец пресс-релиза.
Кстати, о победителях. Уже неоднократно я встречал нарекания типа "а почему эта работа (вкусняшка) не победила, а победила вот эта (какашка)?". Друзья, но разве бывает так, что мнения одинаковы? Реально — на любой аргумент "за" что-либо всегда можно найти еще больше аргументов "против". А вот член жюри RFA Иван Дембицкий подробно рассказывает о том, как именно он оценивал работы.
И еще: сколь пафосно ни звучит пресс-релиз — но факт заключается в том, что событий, подобных RFA, действительно нет, и фраза о том, что «Russian Flash Awards» является одним из знаковых событий в мире информационных технологий и искусства — верна.
Весьма интересные эксперименты и краш-тест на сайте Flash Island. Жаль, что все они квартальной давности. Буду надеяться, что автор увлекся чем-то интересным.
Алмаз. Шесть уровней опровержения мнения собеседника. Автор — Пол Грэм, перевел Arty:
"Самая большая польза от правильного несогласия не в том, что оно сделает обсуждения лучше, а в том, что оно сделает участников счастливее."
Читать всем, срочно: как выражать несогласие.
Качайте Adobe Media Player (AIR), чтобы смотреть сетевое видео без браузера. Медиаплейер переехал из Adobe Labs на главный сайт и теперь это не просто видео проигрыватель, а сеть по распространению медиаконтента, в которую приглашаются новые партнеры. DRM и HD — тут же, это медиа-коммерция такая.
Смотрите Adobe TV — там уже более 200 видео файлов, включая уроки. Всего в телевизоре Adobe 6 каналов, есть и для разработчиков один; вот видео "Основы Adobe AIR".
Происходит прямая трансляция Первой Украинской Конференции Веб-Разработчиков. На самом деле это РИТ — Российские Интернет Технологии, и это хорошо:
Хорошо получается (жаль только, что не видно экран).
А в 17:30-18:05 будет доклад "Silverlight 2.0 — первое знакомство" от Сергея Байдачного (см. также полное расписание конференции UAWEB 2008).
Удачно выступить вам, ребята!
Первая встреча UAFPUG прошла у меня дома, в Харькове:
Рис. 1. R00Z, NoubaSE и Shagrat. Утро, неспешная беседа, чай "Maitre". 16 марта 2008 г., Харьков
Хороших выходных всем :)
Я часто читаю фразы в духе "флэшер умер" или "а что, флэшер еще жив?" Последний раз это было вчера в записи про необычный рефакторинг на форуме Flasher.ru.
Похоже, это явление мнимой смерти связано с демонстративным презрением к начинающим (или "нищим духом"). Мол, мы-то уже духом не нищи, а богаты. Мы, мол, аристократы девелопмента и у нас не бывает багов и вопросов, у нас одни насмешки над индусами, нубами да пиндосами. Флэшер у нас в прошлом, а впереди у нас тотальная мировая доминация и поворот земной оси в одиннадцатом проигрывателе. А наши какашки пахнут хвоей и превращаются в лесных эльфов. Это смешно, ребята :)
Кто сможет подсчитать то количество талантливых (и гениальных) разработчиков, для которых именно флэшер стал первым опытом, знанием, домом, исходником, второй семьей и чистилищем? Я не могу. Но вы их знаете.
Проблема, как я понимаю, в энтропии сообщества на флэшере: только элита собралась обсудить глобальные вопросы, как появляется новичок и лезет со своими глупостями. Ох уж эти новички. Как бы нам от них избавиться?
Как бы нам избавиться от новичков и потерять платформу, на которой мы стоим — Флэш Платформу? Будем себе жить-доживать на ней, спокойно, без этих непредсказуемых варваров-новобранцев.
Короче, и без шуток: ресурс Flasher.ru есть главный и стратегически важный центр поддержки Flash в Рунете. Я могу это доказать: на собеседованиях на вопрос "где вы берете информацию по флэшу" чаще всего отвечают "на флэшере". Это факт. Флешер и есть та самая "кузница кадров", прямо у нас под носом.
Но как всякий зрелый сетевой организм (1999-2008) флэшер имеет свою историю, в том числе и историю болезни. Проявите богатство духа уважением к сложной и интенсивной системе его взаимосвязей. Помните, что только погибающие цивилизации избавлялись от стариков, больных и слабых младенцев.
И если вы не можете помочь флэшеру делом, то хотя бы не вредите ему словом: имейте респект не только к опытным, но и к начинающим.
Так и яблоня не плодоносит прошлогодними яблоками. Они как бы умерли, но каждый год яблоня приносит нам новые плоды, радуя способных насладиться ими (но любители прошлогодних яблок их просто не видят в упор (не-на-видят?).
Невозможно одним сознанием объять флэшер с его 1000 одновременно находящимися на сайте пользователями. Самые главные прозрения и самые жаркие споры — это флэшер.ру.
Сказать, что флэшер умер — то же самое, что обвинить во смерти цветущий луг.
Все это написал я, а потом проснулся внутренний критик и сказал мне, что я мало понимаю в этой проблеме. Поэтому если вы понимаете в ней больше моего — с удовольствием расширю свое понимание, поскольку считаю данную проблему важной.
Пришла в голову шальная мысль. Пишу срочно, пока внутренний цензор спит.
Вопросы сравнения и конкурирования AIR, Zinc и Silverlight возникают все чаще и чаще. Как правило, опытные, имевшие дело в этими технологиями люди на такие вопросы отвечают, что Silverlight не является конкурентом Adobe AIR или что Zinc нельзя сравнивать с AIR.
Поэтому совершенно нормально, что флэшеры, не испорченные знанием ограничений каждой из указанных платформ ждут от каждой из них одного и того же: полноценного флэш-решения для десктопа. Им, "недалеким", совершенно неведомы глубинные и далеко идущие замыслы архитекторов этих платформ. Им нужна просто работающая вещь.
Это естественно: если производитель указал в названии продукта "for desktop", то этот продукт — для десктопа, и его можно сравнивать с аналогичными.
Поэтому вопросы сравнения Zinc с AIR, и даже Zinc с Silverlight — вполне законны. Они отражают реальные и самые настоящие потребности прикладных разработчиков, а также их ожидание того, как должна работать технология. А если технология работает не так, как от нее ожидается, то разработчик найдет другую вместо того, чтобы перестраивать свое понимание того, как должна работать такая технология.
Ситуация, сложившаяся вокруг этого вопроса, говорит о большом разрыве между потребностями разработчиков и понимании (или удовлетворении) этих потребностей архитекторами десктоп-платформ.
И в этой ситуации правы прикладные разработчики, сравнивающие платформы AIR, Silverlight и Zinc между собой: победитель должен быть один (по меньшей мере в данное время и в данных обстоятельствах). Да, у платформы могут быть далеко идущие планы, с трудом поддающиеся мгновенному пониманию разработчиками. Но, если этот разрыв между планами архитекторов на будущее и сегодняшними чаяниями разработчиков столь велик, что блокирует адекватное восприятие десктоп-платформ здесь и сейчас — не грозит ли это возможным провалом успеха платформ, как не отвечающих ожиданиям?
Что можно сделать в этой ситуации? Нужно изучать проблему и продолжать задавать вопросы — чтобы архитекторы десктоп-платформ лучше понимали, для кого они создают свои технологии.
На флэшере возникло народное движение "За Оптимизацию и Хорошую Жисть". Все желающие приглашаются понаблюдать, как группа добровольцев (реально состоящая из одного человека) получает готовый код и удовольствие.
Дело вот в чем: происходит перевод на рельсы AS3 хорошего проекта, но написанного на AS2. Причем проект это конкретный и недецкий — SVG to Flash от Helen Triolo.
И вот, на Флэшере, некий субъект взялся не просто портировать этот код — но сделать это чисто по флэшерски, на глазах у восхищенной публики (при этом комментируя свои действия). Начав с задачи "заставить проект работать на AS3" он идет дальше: к рефакторингу, оптимизации и счастью для всех.
Наблюдаем, хвалим, ругаем, помогаем, пользуемся? А самые умные уже догадываются, что результат будет доступен всем в виде опенсорсного проекта :)
Сервис FlashPhone.ru развивается и вот уже появляется ZMS — платформа для создания VoIP-сервисов на Flash Platform (кстати, Silverlight-у такое пока не грозит вроде?)
Если вы не знаете о чем речь, то см. видео "How To Use FlashPhone":
Рунет обрастает платформами :)
В феерическом сиянии выхода Flex 3 и Adobe AIR почти незамеченной прошла новость о развивающейся поддержке AIR во Flash CS3. Пусть и не очень шустро развивающейся, но все же.
Впрочем, я вру. DeliMIter заметил! Кто еще, как не тру флэшер, смог бы выловить эту новость в инфокеане. Читайте: Adobe AIR Update для Flash CS3 на форуме Flash-MX.ru. Респект.
Уровень читателя: начинающий. Есть очень удобный способ разобраться, как просто устроен флекс:
Урок сделан просто на "отлично". Нет, он сделано на "превосходно", потому что в нем есть Вивисектор Кода. С помощью Вивисектора вы быстро разбираетесь, как устроено приложение. Важные компоненты приложения обозначены красными метками, кликая по которым вы сразу попадаете в соответствующие им места исходного кода.
Угадайте с нулевого клика, кто написал отчет о харьковской встрече флэш- и флекс- разработчиков в формате ActionScript? С фотографиями! С исходнегом прелогаецо?
Update: автор сообщает, что код отчета был написан быстро, а вот отладка заняла время.
Простоту и элегантность библиотеки Tweener я уже оценил на одном реальном проекте.
Пусть она и не самая быстрая, но ее простота очень мне по вкусу. Есть один-единственный класс Tweener. Чтобы добавить в AS3-приложение анимацию, достаточно вызвать на этом классе статический метод addTween с соответствующими параметрами. При этом в одном-единственном вызове метода вы можете задать сразу несколько анимаций.
addTween
Да что там рассказывать — все уже показано. Некто IMUGI записал видео-урок и выложил его в открытый доcтуп: Видео-урок "Работа с библиотекой Tweener" — всего 2 минуты.
Кстати, встречайте флэш-блог: /iMUGi\.
На Потрошителе стали появляться комментарии некоего 'Kradar'a. Комменты со вкусом — соотношение перца и соли выдержано. Что делает человек, пишущий все больше полезных комментариев? Он открывает свой блог.
Встречайте: Дмитрий 'Kradar' Краснов (RSS), человек с опытом в Java, пришедший во Flex. Он пишет об управлении компиляцией и доступе к SWC-библиотекам в FDT — емкая статья для всех, кто хочет начать дружбу с Flex. А также пишет о MODx, серверной составляющей Flash-сайта. Это система управления содержимым для Flash-сайтов (CMS), выглядит привлекательно: поддержка плагинов, создание HTML-версии — почитайте оригинал.
Знаю, что боян, но наверняка не все видели, а из видевших многие поленились прочесть: на флэшере давно уже выложены 100 советов по ActionScript 3 (скачать одним архивом). Это перевод серии "ActionScript 3 Tips and Tricks" от Senocular — человека, чья компетентность сравнима с профессиональным просветлением. Все эти советы являются полным ответом на вопрос "А что из нового в AS3 мне реально нужно и как это применить?". Семиглаз — лучший!
Почему Семиглаз? Так расшифровывается Senocular. Кстати, у него ведь еще есть хороший туториал для начинающих во Flash — Getting Started with ActionScript 3.0 in Adobe Flash CS3 (5 частей). Тоже вполне достойный перевода материал, ведь начинающие во Flash будут всегда, пока жива технология (God Save The Flash!), так пусть они начинают правильно, там в 5 части ООП есть.
Кстати, друзья, а что если эти 100 советов по AS3 загнать в один файл, будь то PDF или CHM? Великая польза от того должна получиться, как минимум с точки зрения печати. Верно?
Расширяемый набор валидаторов данных для Flash, AS3. Функциональность аналогична валидаторам из Flex SDK. Можно использовать как во Flash-, так и во Flex-приложениях.
Валидаторы выполняют стандартную проверку email-адресов, почтовых индексов, номеров кредиток, URL и т.п. Библиотека расширяема под нужды конкретных проектов. Рекомендуется бегло изучить классы библиотеки перед применением. Скачать flash_validators_v0.5.zip.
Интересная запись от 5 января 1996 года с упомининанием зарождающейся технологии FutureWave — той самой, которая стала началом технологии Flash. Переведу текст:
Чарли тоже мечтаетЧарли Джексон (Charlie Jackson) — мой старый друг со времен начала ПО-бизнеса для Макинтошей. Он создал SuperPaint и SuperCard, а затем продал их компании Aldus за круглую сумму. Затем он ушел из софтверного бизнеса за новой целью — создание хорошей олимпийской команды для США по стрельбе. Между прочим, Чарли, был главным спонсором журнала Wired (заслуженно процветающего по сей день — Рост). Теперь же он основал FutureWave, новую софтверную фирму. Это предприятие обещает сделать сеть намного быстрее за счет резкого снижения трафика с веб-сайтов. Каждому понравится эта идея, каждому от злобного админа до блуждающего по сети тинейджера. Это такая простая идея, что я удивляюсь, почему Netscape до сих пор не сделал чего-то вроде этого (до победы IE было еще далеко — Рост). Если Чарли и его компания смогут выпустить свое ПО, то несомненно, что каждый захочет использовать эту технологию. — Friday, January 5, 1996 by Dave Winer
Теперь же он основал FutureWave, новую софтверную фирму. Это предприятие обещает сделать сеть намного быстрее за счет резкого снижения трафика с веб-сайтов. Каждому понравится эта идея, каждому от злобного админа до блуждающего по сети тинейджера. Это такая простая идея, что я удивляюсь, почему Netscape до сих пор не сделал чего-то вроде этого (до победы IE было еще далеко — Рост). Если Чарли и его компания смогут выпустить свое ПО, то несомненно, что каждый захочет использовать эту технологию. — Friday, January 5, 1996 by Dave Winer
Зачем я это пишу? Помимо чисто исторического интереса, этот первый отзыв о будущей технологии Flash навел меня на старую мысль о том, что "как вы лодку назовете, так она и поплывет". Как Flash изначально преподнесли, так он и воспринимается до сих пор — как простой анимационный движок.
И мне захотелось припомнить, как преподносится Silverlight:
"Кросс-браузерный, кросс-платформенный плагин для доставки следующего поколения медиа-опыта на базе приложений .NET и RIA для сети. Сильверлайт предлагает гибкую модель программирования, поддерживающую AJAX, VB, C#, Python и Ruby, и интегрируется с существующими веб-приложениями. Сильверлайт поддерживает быструю и недорогую доставку высококачесвенного видео во все популярные браузеры, работающие на Mac OS или Windows".
Я пытаюсь сравнить это с простой фразой "Каждому это понравится — от админа до тинейджера", сказанной о когда-то зарождающейся Flash и понимаю, что большую часть битвы Сильверлайт уже проиграл, точнее, у него не было возможности эту часть выиграть — флэш как вспышка сознания уже состоялась, осталась "быстрая доставка недорогого видео".
Забавно, Microsoft барахтается в собственной ловушке: "Rich Interactive Applications for the Web". Не смейтесь, у RIA-евангелистов тоже случается религиозно-корпоративное затмение.
Продолжение истории: Чем теперь занимается Джонатан Гей — отец технологии Flash .
Джейсон Крист (Jason Crist) создал AS3-библиотеку для работы с Facebook. Она обеспечивает обмен данными по протоколу REST между Flash / Flex приложениями и этой скандальной плюс быстрорастущей социальной сетью. Рекомендуется всем, кто хотел поработать со ставшим уже одиозным Facebook API. Кстати, у кого-то уже есть опыт работы с Facebook?
Безусловно, флэш-притча "Отпусти ветку" могла и не быть флэш-притчей. Ее можно было бы просто написать в виде текста — но что-то утеряется в самом конце. Ее можно было бы изготовить как гиф-анимацию — но... именно флэш как технология вдохновляет творческих людей на уникальную форму визуальной поэзии. Я не знаю другой такой технологии. Ее нет и не предвидится.
Флэш позволяет при наличии известной доли трудолюбия изготавливать визуальные рифмы кустарным способом, не прибегая к помощи специалистов. Любой мог бы (но не каждый смог) делать это, начиная с самых ранних версий. Вот "кнок, кнок", один из лучших образцов флэш-поэзии. Он был создан еще под четвертую версию флэш-проигрывателя.
Это сфера, в которой война технологий невозможна. Почему? Потому, что данная технология рифмы является абсолютно завершенным инструментом, усложнение которого автоматически приводит к его негодности. Повышение квалификационной планки сужает аудиторию пользователей инструмента. Усложнение отталкивает тех, для кого сложность уже была оптимальной. Флэш-поэтов мало. Из флэша исчезает атмосфера алхимии: на смену ей приходит ООХ — Объектно-Ориентированная Химия.
Во флеше всегда был дух прагматичной простоты. Он утерян. Сейчас Adobe делает новую попытку вернуть поэзию во флэш — Бордо (Bordeaux). На шаг впереди MSFT, йоу! Грядет новая волна флэш-позии. Сопровождаемой еще большим количеством еще более легких в изготовлении флэш-баннеров ;-)
Возможно, в скором времени флэш-алхимики получат новые инструменты и реагенты. Слово "альтернатива" больше не пригодно к употреблению! Надеюсь, вы меня понимаете ;-)
Я понял, о чем на самом деле писал — о том, как соскучился по душевной флэш-анимации.
Интересную историю поведал мне Alexandru, основатель уже несуществующей компании InterAKT — в сентябре 2006 года Adobe купила их технологии и команду. Это история о том, как румынский мальчик вырос в румынского дядю и продал свое детище большому бизнесу.
InterAKT — это разработчики многих популярных расширений для Dreamwever и Eclipse. Самый известный из последних, продукт JSEclipse теперь интегрирован в продукты Adobe и Labs; он уже идет как бесплатное дополнение к Flex 3.
Вы, наверное, в курсе самой свежей бури в стакане по поводу очередных "дыр в безопасности" Flash Player. В этот раз "уязвимости" обнаружены Самими Работниками Google и изложены в специальной книжке. Джон Дауделл (неофициальный, но авторитетный рупор Adobe), уточняет, что эти проблемы касаются только старых проигрывателей, и не имеют совершенно никакого отношения к Flash Player самой свежей версии — "Moviestar" r115. Но самое интересное следует дальше, Джон пишет в скобках:
"Зачем обновлять старые версии? Потому что у некоторых интранет-сетей очень бюрократизирован процесс принятия к использованию новых версий ПО, но зато очень быстрая ракция на обновления, свызанные с безопасностью уже установленных программ."
Это мой вольный перевод, но он как бы намекает нам: все дыры в безопасности флэш-проигрываеля находятся по заказу Adobe. И на этот раз заказ выполен с упомининанием священного имени Гугла. Для пущей убедительности.
Update: Результат не заставил себя долго ждать. Apple уже включила самую свежую версию Flash Player 9.0.115.0 в свой December Security Update. Распространение Flash Player 9 достигло 95.7%. Гоните от себя всех, кто просит "слепить баннерок" под 6-7-8 версии. Даешь только 9 проигрыватель в 2008!
Почему на одной машине swf-файл после компиляции весит на три килобайта меньше, чем на другой? Версия языка — AS3. На одной машине — 136 Кб, на другой — 133. Работают оба.
Продолжая свою совместную с Mozilla Foundation работу над проектом Tamarin, компания Adobe отдала в репозиторий проекта исходные коды новой виртуальной машины, называемой QVM ("tamarin-tracing"). Мы парализуем конкурентов неожиданными шагами.
Как сообщает Тед Патрик, части QVM написаны на языке Форт. Этот язык оптимизирован под задачи создания рантаймов для микроустройств с 50K памяти, в общем для любого доступного сегодня девайса. QVM уже сейчас может выполнять AS3-байткод на подавляющем большинстве современных эээ... гаджетов — сегодняшних гаджетов, не будущих. Это часть стратегии Adobe в отношении Flash Player и AIR. Гаджет — дурацкое слово.
Привет, Flash Lite 4.0
Update 1: Влад Январев в комментариях дает ссылку на сайт русских форт-программистов. Как вы уже догадались, сейчас я дам ссылку на русскоязычный блог об удивительном языке Форт, в котором программа – это набор слов и словарей, которые тоже могут быть словами.
Update 2: Читайте, как все было плохо до этого проекта (особенно советы № 7 и 9): 10 советов по разработке игр для Flash Lite от 29.01.2008.
Наверняка каждый, кто использует интерфейсы в AS3, однажды получал такую ошибку. Меня она всегда ставит перед вопросом: как это "not implemented", если я реализовал ('имплементировал') метод интерфейса в классе? Каждый раз я нахожу ответ заново:
public
Записал три раза, а вдруг все же запомню? Моя хитрая память отказывается работать с тем, что я считаю нелогичным. Поэтому я не люблю хаки: почти все хаки нужно зазубривать, а это — насилие над сознанием. 'Логическое обоснование' хака — еще хуже.
В случае с данной ошибкой моя логика блокирует запоминание верного ответа дважды:
internal
PyAMF — это компактная библиотека для совместной работы Flash и Python через AMF — ActionScript Message Format (который вчера пошел в OpenSource).
Подробности: * Кодирует / декодирует AMF0 и AMF3. * Поддерживает классы IExternalizable, ArrayCollection, ObjectProxy, ByteArray, RecordSet и RemoteObject. * Есть Remoting-гейтвеи для Twisted, WSGI и Django. * Поддерживает аутентификацию / setCredentials (только AMF0). * zlib-сжатие для ByteArray. * Имеется Remoting-клиент (!) с httplib.
PyAMF имеет MIT-лицензию ("делайте со мной что вам угодно").
Скачать PyAMF Alpha | читать инструкцию по установке | вступить в переписку с авторами
Старый добрый Ультрашок становится флексовым, чего так сразу и не скажешь. От стандартных флекс-компонентов на нем можно узнать разве что круглые часики прелоадера. При более детальном рассмотрении можно увидеть больше — но поскиновали ответственно и приглашают фанатов качества к сотрудничеству.
Да, поработали очень хорошо. На флексовых страницах не оставили ни одного html-пикселя. При этом поддерживается резиновость, deep linking, и т.д. и т.п. Короче, полный вебдваноль :)
Вы задавались кода-нибудь вопросом, сколько 'весят' конкретные объекты вашего флэш-приложения? К сожалению, (или к счастью?) свойства size у них нет. Но в AS3 есть класс ByteArray с массой полезных применений (например, быстрое клонирование сложных объектов). И у класса ByteArray есть свойство length и метод writeObject, с помощью которых легко измерить вес объекта в байтах:
ByteArray
length
writeObject
var ba:ByteArray = new ByteArray(); trace("ByteArray size: " + ba.length);// 0 bytes var p:Point = new Point(100, 100); ba.writeObject(p); trace("ByteArray size with point: " + ba.length);// 11 bytes
"Где-то между Лиспом и Фортраном, иногда догоняя Ruby" — так можно назвать положение ActionScript в рейтинге самых популярных языков программирования. Там много графиков по данным разных сервисов и форумов, и результаты некоторых отличаются радикально. Тот же Lisp: на Google Code от всего лишь пятнадцатый, а на programming.reddit.com — уже второй. А вообще, для столь молодого языка само попадание в такой топлист — уже признание.
Поздравляем Дэна Иванова с днем рождения, желаем счастья в личном блоге :)
На собственном опыте убедился, сколь ответственно нужно работать с AS3-типом uint в ситуациях возможного присвоения ему отрицательного значения. Сразу же к чести разработчиков компилятора AS3 отмечу, что он отсеивает часть таких ситуаций и выдавает предупреждение:
uint
var ui:uint = -10000; trace("ui = " + ui);
Но не все такие случаи удается отсечь компилятором. Вот пример ошибки, которая успешно компилируется, но код не работает как ожидается, формально являясь правильным:
var rect:Rectangle = new Rectangle(-1, 1, 1, 1); var rectX: uint = rect.x; // !Попытка присвоить значение -1 беззнаковому целому! var rectY: uint = rect.y; trace("Rectangle X = " + rectX); trace("Rectangle Y = " + rectY);
UPD: Давно хотел сослаться на эту толковую статью: Василий Нужа о типе uint в ActionScript.
Рабочая группа TC39-TG1 выпустила обзор нового стандарта ECMAScript 4 (ES4) — "языка сети", или, более конкретно, фундамента языков JavaScript и ActionScript (приятно отметить, что в данном документе слово "ActionScript" встречается неоднократно, в том числе и при упоминании нового механизма верификации программного кода в ES4).
Напомним, что предыдущей версией стандарта был, основанный на прототипах ES3. Это сегодняшний JavaScript 1.x. В новом стандарте ES4 учтены требования, возникшие при разработке крупных проектов, к которым относятся многие AJAX-, Flash и Flex-приложения. Одним из условий стандарта ES4 является совместимость с предыдущим стандартом, ES3.
class
interface
package
namespace
Vector
Отсылаю вас к обзору ECMAScript4 — работать мне надо.
let
let const
let function
(int,string)
int
string
like
&&=
||=
cast
Map
ControlInspector
toJSONString
string.parseJSON
hashcode
Приятно отметить авторство стандарта ES4: "Copyright © 2007 Adobe Systems Inc., The Mozilla Foundation, Opera Software ASA, and others."
Вчера в обсуждении экономии памяти за счет использования типа int вместо типа Number Вадим Войтюк поднял интересный вопрос: сколько памяти уходит на использование самого класса PointVO, участвовавшего в тестировании?
Number
PointVO
Я выяснил, сколько памяти отъедают экземпляры класса PointVO. Без PointVO расход пямяти на хранение двух миллионов переменных типа Number составляет 30Мб, что почти в два раза меньше 53Мб — памяти, расходуемой с использованием PointVO. Время — 618 Мсек против 1226, т.е. в 1.9 раза быстрее без использования класса PointVO. Чистая разница расхода памяти: 53Мб - 30Мб = 23Мб.
То есть: 23Мб памяти расходуется на хранение одного миллиона экземпляра классов PointVO, каждый из которых имеет два свойства x и y типа Number.
x
y
А для типа данных int расход памяти без использования PointVO составил 13Мб, что в три с половиной раза меньше 45Мб для случая с использованием PointVO. Время — 441 Мсек против 1226, т.е. быстрее в 2.7 раза без PointVO. Чистая разница расхода памяти: 45 - 13 = 32Мб.
Возникает интересный вопрос: почему в случае с типом int чистая разница расхода памяти составила 32Мб, а в случае с типом Number — всего 23Мб? Возможно, потому, что класс PointVO для хранения переменных x и y типа int использует для них дополнительную обертку вокруг типа Number, как пишет Василий здесь? А массив, значения которого не типизированы, никаких оберток не использует, так? Получается, на два миллиона оберток типа int вокруг типа Number уходит 9 Мб оперативной памяти. То есть приблизительно 5 байт на обертку.
Далее — исходный код теста для интересующихся.
var startTime:uint; var memory:uint; var time:uint; var memoryAverage:uint; var timeAverage:uint; var cycles:uint = 10; var pCount:uint = 1000000; var i:uint; var j:uint; var pArray:Array; var randCoord:Number; for(j; j < 10; j++) { startTime = getTimer(); pArray = new Array(); for(i=0; i { randCoord = Math.random() * 10000000 / 10000; pArray.push(randCoord); /* pArray.push(int(randCoord)); */ pArray.push(randCoord); /* pArray.push(int(randCoord)); */ } memoryAverage += memory = System.totalMemory; timeAverage += time = getTimer() - startTime; trace("Memory: " + memory); trace("Time: " + time); } trace("Memory average: " + Math.round(memoryAverage / cycles)); trace("Time average: " + Math.round(timeAverage / cycles)); trace("Type: " + (pArray[0] is int) + " var: " + pArray[0]);
Недавно на большом проекте осознал, что могу сократить кучу кода за счет использования появившегося в AS3 класса Dictionary (уже давно, позор мне, мне же известного ;-) Было:
function tileIsRendered(theTile:MapTile):Boolean { var result:Boolean; var aTile:MapTile; for each(aTile in renderedTiles) { if(aTile == theTile) { result = true; break; } } return result }
function tileIsRendered(theTile:MapTile):Boolean { return renderedTiles[theTile] == true }
Если вы не в курсе: Dictionary—это подобие ассоциативного массива, но его ключами можно назначать не только строки, но и объекты любого типа. Ключи объекта Dictionary работают как ссылки на объекты. Осталось проверить, насколько этот способ быстре вычислительно.
Так не хотелось прерывать поcвященную Microsoft неделю публикациями Flash-новостей, но не могу удержаться: Состоялся релиз FDT 3.0.
Сервис dpaste.com существует с одной целью: чтобы разработчики могли показать друг другу подсвеченный код. Поэтому дизайн сайта выполнен в концептуально серой гамме. База кода регулярно самоочищается: если никто не смотрел код более месяца, он удаляется. Никакого списка свежих поступлений: спамеры отдыхают. Заточеность проекта под удобство конкретного пользователя можно считать образцовой.
Проект изначально создан Python-программистами для обмена кодом HTML-шаблонов Django web framework. Затем была добавлена подсветка синтаксиса для Python, SQL, diffs, XML, CSS, JavaScript, конфигов Apache, bash-скриптов, Ruby, и RHTML. А тут уже и до ActionScript недалеко. Расцветка кода реализована на библиотеке Pygments (Python).
UPDATE: мой ActionSсript тоже выглядит на Dpaste.
Вот, например, реализация списка друзей в классе UserProfile сервиса Pownce. Это новый проект Кевина Роуза, автора Digg.com. Цель сервиса—точно такая же как у Digg: делиться лучшим. Но концепция пересмотрена: делитесь лучшим с друзьями. На Дигге мы делимся сразу со всеми, а друзья там стоят как доп. возможность создать клан. На Powncе клан создается изначально, а делиться можно не только ссылками, но также сообщениями, событиями и файлами до 100 Мб (бесплатно).
Есть к сервису Pownce и десктоп-клиент, выполнен на Adobe AIR. Официально Pownce работает по инвайтам — если что, у меня там есть 6 штук приглашений...
Update, 2008/01/23: Pownce вышел из беты, открыт публичный доступ.
UPDATE: Я поторопился с радостыми прогнозами: Саффрон еще не вышел. Впрочем, это ничего не отменяет по существу: Saffrom AIR UML Tool — это инструмент для UML-моделирования, созданный во Flash / Flex / AIR дизайнером, инженером, поэтом, музыкантом и просто Афросамураем Сэмюэлем Аглесиасом Пастелем.
Краткая характеристика Saffron UML:
associatedClass
Теперь вы знаете, почему не нужно бояться за любимую технологию: поэты, музыканты и просто афросамураи играют за наших. Я на полном серьезе: все дело в этом. Просто подумайте сами.
Если бы парни всей земли взяли да и придумали Идеальный Дебаггер (ИД), то началось бы Совсем Окончательное Счастье (СОС). Но пока до этого далеко, естественный отбор продолжается, а значит - эволюция существует!
Как существует множество флэш-отладчиков и трейсеров. Вы будете смеяться, но у меня тоже есть свой трейсер, и он тоже не такой, как все. Впрочем, сегодня мы ищем баги в Flash Tracer от Сергея a.k.a. ir73.
Это Java-приложение, работает под Java Runtime 1.6+. Вам нужно скачать один исполняемый файл Tracer.jar и поместить его в каталог с флэш-логом (типа C:\Documents and Settings\[USER_NAME]\Application Data\Macromedia\Flash Player\Logs). Можно указать свой путь к логам - на странице проекта это описано в деталях.
Я попросил автора рассказать о своей разработке. Пишет Сергей:
«В общем-то, сопроводительный текст, не что иное, как предыстория о том, что побудило написать очередной трейсер, которых уже миллион. Я в свое время перепробовал практически все мало-мальски известные утилиты для чтения трейсов дебаг плейера. Среди них -- afterthought (так кажется он зовется), F7Debug, Mozilla Firefox Plug-in и еще что-то. У одних были одни фичи, у других -- другие фичи, но почему-то не было продукта, в котором все фичи есть вместе. В результыте я решил родить продукт, который бы полностью меня устраивал. А именно, он должен был содержать в себе как минимум поиск, возможность удалять (очищать) трейсовый файл, не был бы привязан к какому-то конкретному браузеру или IDE и еще много чего. Спустя пол года, было решено продукт заопенсорсить. Найти последний билд можно тут: code.google.com/p/flash-tracer. Там же есть и svn репозиторий с сорсами. Баг репорты -- всегда велкам.»
Кстати, эта штука действительно ищет в отображаемом логе.
Вышел FlashDevelop 3.0.0 Beta3 и библиотека для работы с популярными структурами игровых данных:
«Здравствуйте, ruFlex Вчера наткнулся на интересную библиотеку от немецких Flash-разработчиков. Вот описание. Захотелось поделиться ссылкой. 'AS3 Data Structures For Game Developers' — это пакет популярных структур данных, полезных при программировании flash-игр и приложений. Я начала проект, чтобы иметь под рукой библиотеку повторно используемых от игры к игре классов.'»
Вчера наткнулся на интересную библиотеку от немецких Flash-разработчиков. Вот описание. Захотелось поделиться ссылкой.
'AS3 Data Structures For Game Developers' — это пакет популярных структур данных, полезных при программировании flash-игр и приложений. Я начала проект, чтобы иметь под рукой библиотеку повторно используемых от игры к игре классов.'»
- Пишет Михаил Шевчук, цитируя автора библиотеки.
Начавшись на странице Джона Грдена, обсуждение способов оптимизации ActionScript3 нереально разрослось и плавно перешло на страницу "тесты скорости AS3" сайта OSFlash.org и там разрослось еще раз.
Имеет ли смысл русская версия? Ведь там больше ActionScript, чем английского.
Питер Холл -- помните такого? -- выпустил XPath для AS.
На закономерный вопрос -- "зачем, ведь у нас уже есть e4x?" Питер ответил мне так:
e4x действительно неплох для многих задач. Но XPath необходим для реализации некоторых других веб-технологий. XSL и REX -- два примера таковых. С помощью XPath ты можешь задавать свои собственные пути как данные, и загружать их из внешних источников, или создавать их динамически. А в e4x ты связан жестко вписанными в код выражениями. XPath также включает большую библиотеку полезных функций, которые с помощью e4x реализуются далеким от элегантного способом. Спецификация e4x учитывает это, и указывает, что реализации могут дополнительно включать XPath. Но поскольку это необязательно и Flash Player имеет известные ограничения по размеру файла, то Adobe не стала добавлять XPath.
С помощью XPath ты можешь задавать свои собственные пути как данные, и загружать их из внешних источников, или создавать их динамически. А в e4x ты связан жестко вписанными в код выражениями.
XPath также включает большую библиотеку полезных функций, которые с помощью e4x реализуются далеким от элегантного способом.
Спецификация e4x учитывает это, и указывает, что реализации могут дополнительно включать XPath. Но поскольку это необязательно и Flash Player имеет известные ограничения по размеру файла, то Adobe не стала добавлять XPath.
(Цитирую из обсуждения "как по-настоящему спрятать Flex-компонент") в блоге Питера Холла.
"Программимрование сегодня -- это состязание между разработчиками ПО, пытающимися создавать бОльшие и лучше защищенные от идиотов программы, и Вселенной, пытающейся производить бОльших и лучших идиотов. Пока Вселенная побеждает." - Rich Coo
В Flash при
Вы знаете: самый быстрый по выполнению язык -- это всегда ассемблер. И новая AVM2 в составе Flash Player 9 отличается оптимизированной архитектурой и ассемблером/байткодом.
Канасье выпустил библиотеку hxASM для написания кода прямо в ассемблере Flash9 при помощи языка haXe.
Библиотека может динамически генерировать массив байтов ByteArray, представляющий SWF-файл со скомплированными матодами ассемблера. Затем этот код может быть выполнен при помощи метода flash.display.Loader.loadBytes.
flash.display.Loader.loadBytes
Насколько библиотека hxASM может ускорить выполнение флэш9-приложений?
В качестве примера - вычисление ряда Фибоначчи. Ускорение достигает 30%. Подробности - на странице библиотеки hxASM.
hxASM вышла под лицензией BSD; репозиторий исходного кода находится по адресу http://code.google.com/p/hxasm.
FlASM для Flash 9?
iiley выложил AS3-реализацию алгоритма кодирования восьмибитных ПИНГ (PNG) файлов с индексированными цветами. Потребность в таком сжатии возникает там, где ограничено использование весьма громоздкого полноцветного PNG.
Автор пишет, что оптимизировал скорость работы алгоритма. Кодирование 8-битной пинг-картинки размером в 800x600 пикселей занимает около секунды (но при этом кодирование полноцветного аналога занимает в три раза меньше времени).
Получился кодер с возможностями PNG-кодирования 32-битных картинок с альфа-каналом, 24-битных непрозрачных картинок и 8-битных прозрачных.
Демо-приложение можно скачать в формате AIR (кстати, использует набор компонентов ASWing). Исходные коды есть в SVN: AsPngEncoder и AsPngEncoderTest.
Читайте также оригинальную новость от iiley: Another png encoder which support 8-bit indexed color - со скриншотами.
В этот раз она падает уже в ActionScript3, точнее -- используется Fisix Engine версии 0.5 alpha: пример инверсной кинематики в AS3.
// спасибо, Pave!
Читайте здесь: "Как думаете, насколько быстро сделать парсер AS3 для JetBrains??"
Респект. Обещают, что скоро можно будеть тестировать!
В конце прошлого года я наступил на преинтереснейшие грабли: попытка изменить свойство scaleX или scaleY объекта приводит к непредсказуемому результату (объект просто исчезает), в то время как свойства x и y успешно изменяются в этом же куске кода, буквально в соседней строке!
scaleX
scaleY
Путем проб и ошибок, а также совместной с Ильей Паниным медитации над кусками кода удалось выяснить причину: свойства scaleX, scaleY и rotation объекта перестают правильно работать, если к объекту была применена матрица трансформации (свойство transform.matrix).
rotation
transform.matrix
В то же время свойства x и y объекта с его матрицей трансформации не конфликтуют.
Проверить это поведение можно с помощью простого приложения; после нажатия не кнопу "Set matrix" -- кнопки "Set scaleX" и "Set rotation" начинают срабатывать непредсказуемо, а "Set x" -- работает как ожидается:
Найти описание этого конфликта в доке мне не удалось, а может -- плохо искал %-)
Неплохая реализация физики -- Fisix, оптимизированная под новые вычислительные мощности проигрывателя Flash Player 9. Внизу страницы -- примеры. Лицензия -- shareware, а точнее, бесплатная до тех пор, пока вы на этом не зарабатываете сами.
Для тех, кто во флэше привык пользоваться _root для получения конфигурационных переменных и не знает, как это сделать во флексе -- -- простое одностраничное руководство "Получение переменных, переданных через GET или FlashVars". С примером кода.
Дэвид Холройд анонсировал Java-библиотеку MetaAS для генерирования и разбора AS3-классов.
Совсем древнее: 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