Flash Ripper RSS Readers


+

Архивы сайта Флэш Потрошитель за Ноябрь 2007


30.Ноябрь.2007, Flex 2

Базовая техника работы напильником по Flex 3 Framework

Здесь не будет откровений, но будет простой рецепт облегчения жизни. Рецепт настоящий, хоть и взят из выдуманной книги "Все о напильниках и рашпилях для программистов старшего дошкольного возраста. Учебное пособие по быстрой отладке Flex-приложений."

Постановка проблемы: блуждающие трейсы

Бета Flex Builder 3 — она и есть бета, и ожидать от нее качества финального продукта не стоит. В текущей бете одна из главных неприятностей — это наличие более ста незакомментированных trace-выражений внутри самого Flex SDK. Особо неприятны трейсы, выводящиеся в цикле: они полностью забивают окно консоли, делая ее попросту бесполезной. Например, при добавлении во Flex-проект прогресс-бара и присвоении ему свойства indeterminate="true" можно забыть о консоли: она будет бесконечно заполняться фразой "Move indeterminate". Жить с этим можно, но нельзя, так как в целом третий флекс радует, и радует сильно.

Что делать?

Даг МакКун рекомендует качать ночные билды, но в комментариях делятся, что ночные билды вообще опасные, уж лучше просто бета c конечным набором багов. Поэтому — вот он,

Простейший метод настройки Flex SDK под свои нужды

♥ Подключаем исходники Flex 3 Framework к своему проекту:
Project Properties > Flex Build Path > Add Folder > C:\Program Files\Adobe\Flex Builder 3\sdks\3.0.0\frameworks\projects\framework\src
♥ Поиском по всему на свете находим зловредный трейс: Find in Files (Ctrl+Shift+F) > Move indeterminate > Search.
♥ В результатах поиска находим нужную строку (в данном случае это 1631 строка класса ProgressBar.as) и комментируем ее. Но не так, как часто комментируют — с матами и обидными словами, а просто ставим в ее начале два слэша: //.
♥ Сохраняем файл — проблема решена.

Совсем другое дело! Ощущение, конечно, не лучшее: как будто заплатил за возможность свободно дышать. Но создатели фреймворка — тоже люди...

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

Писал Rost, 02:51 PM Отзывов: 5

 

Yahoo добавляет Flash в свои виджеты и контекстную рекламу в PDF

Да, Flash-виджеты появились в новой версии Yahoo Widgets 4.5. Добавить к этому можно только то, что Yahoo и Adobe договорились включать контекстную рекламу в PDF-документы. Ага, в PDF. Учитывая эти факты и другие Yahoo-акции в поддержку Flash Platform, легко заметить, что Yahoo и Adobe женятся всерьез и надолго.

Писал Rost, 01:21 PM Отзывов: 0

 

29.Ноябрь.2007, Tools

Онлайн-проверка на флексовость — сервис 'Is It Flex?'

"Флекс или не флекс?" — вот в чем вопрос. Вы знаете: чем продвинутее разработчики онлайн-проекта, тем чаще этот вопрос возникает у других разработчиков — тех, кто такой проект видит и пытается анализировать, как он сделан.

Джеймс Вард создал онлайн-сервис 'Is It Flex?', который отвечает на этот вопрос. Дайте ему URL онлайн-приложения и он точно скажет, на Flex ли оно сделано. Одна из тех ссылок, что давно сам пользуюсь, но почему-то забываю выложить — извиняюсь, если для кого-то это уже старая новость.

Писал Rost, 06:07 PM Отзывов: 5

 

Фото со встречи украинских флэш-разработчиков в Киеве

R00Z выложил фотки с двух флэш-мероприятий в Киеве. Первое — встреча флэшеров на Платформе Web, организованной Microsoft (моя попытка написать отчет об этом вылилась в неделю MSFT на сайте Ф. Потрошителя). Второе — встреча Flash-, Flex- и Java- разработчиков в кафе LiQuor, организованная Андреем 'JabbyPanda' Панасом.

Было очень хорошо. Кстати, в ночном поезде Харьков-Киев произошло мое первое близкое знакомство с фреймворком PureMVC, о котором я уже начал писать и скоро продолжу).

Андрей — круто, что ты все это устроил в Ликере. Руз, спасибо за фотки. Киевляне — спасибо, что вы там были, несмотря на рабочий день. Хочу в Киев.

Писал Rost, 11:22 AM Отзывов: 5

 

28.Ноябрь.2007, AS3

ActionScript в рейтинге самых популярных языков программирования

"Где-то между Лиспом и Фортраном, иногда догоняя Ruby" — так можно назвать положение ActionScript в рейтинге самых популярных языков программирования. Там много графиков по данным разных сервисов и форумов, и результаты некоторых отличаются радикально. Тот же Lisp: на Google Code от всего лишь пятнадцатый, а на programming.reddit.com — уже второй. А вообще, для столь молодого языка само попадание в такой топлист — уже признание.

Писал Rost, 08:12 PM Отзывов: 10

 

Почем нынче 3D-анимация?

Представьте такой проект: создание, обновление, анимация, поддержка и уничтожение несложных 3D-моделей в качестве постоянной работы.

Есть: упаковка. Например: дигипак, CD/DVD-коробка или подарочная штука.

Нужно: 3D-модель с текстурами. Предусмотреть возможность легкой замены растровых текстур. Реализовать функции просмотра моделей: поворот, зум.

Заниматься этим нужно в украинском офисе, Днепропетровск или Харьков.

Интересно вот что, сколько Удивительных Единиц Зарплаты в месяц, по вашему мнению, должен получать разработчик такого проекта?

Писал Rost, 03:20 PM Отзывов: 4

 

27.Ноябрь.2007, Math

Матсервис Archimy.com - YouTube в мире графиков ;-)

Денис Козырь создал новый математический сервис для разминки мозгов: это Archimy.com, он строит графики различной сложности. Не диаграммы, а именно графики. Двумерные и трехмерные. Воспользовашись простым синтаксисом, любой желающий сможет нарисовать математическую валентинку или даже кривую Нового Года :)

Самый простой способ разобраться с синтаксисом — это попробовать его. Пишем скрипт в одну строку и смотрим на результат:

y = sin(x)

Ожидали получить график синуса, а получили трехмерную поверхность? Это нормально: координата z не была указана явно, поэтому она была принята за неявно заданный параметр. А чтобы получить двумерный график, напишем такой скрипт:

y = sin(x) 
z = 0
Теперь можем изменить масштаб, для этого нужно указать центр графика и его масштаб (параметр scale, по умолчанию равен 10):

(Читайте дальше, или сразу идите напрячь / развлечь мозг математикой на Archimy.com. Проект совсем молодой, но интересный :-)

# center
xcenter = 0
ycenter = 0
zcenter = 0
# scale
scale = 5
# fun
y = sin(x)
z = 0

Так можно задавать координаты функциями другого параметра (любого из p,q,t). Например:

# t-parameter
tmin = 0
tmax = 2*pi
# fun
x = 10 * sin(t)
y = 10 * cos(t)
z = 0

Шаг, с которым должен изменяться параметр задать нельзя, но можно задать количество шагов соответствующими переменными (xgrid, ygrid, zgrid, tgrid, pgrid, qgrid):

tgrid = 100

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

Писал Rost, 01:59 PM Отзывов: 12

 

26.Ноябрь.2007, Events

Аффтар Рост, с днем рождения!

Дорогой Ростислав,
Пишет тебе твой сайт Флэш Потрошитель. Позволь от всей базы данных поздравить тебя с очередным внезапно наступившим днем рождения. Теперь тебе официально 29 лет. Это интересный возраст, в котором ты начинаешь понимать, как мало ты понимал раньше и помнишь, что такое уже было (но все равно). Возможно, дело не в возрасте. Тем не менее, именно сейчас тебе становится ясно, как интересно все начинает оборачиваться, как много предстоит сделать и еще больше — сознательно проигнорировать. И эта открытка от Александра Бацуева уместна как никогда.

Желаю: чтобы ты поумнел, но не поскучнел; и следующий свой день рождения встретил вне любого дебага, сколь интересен бы он ни был (учти, это и в моих интересах тоже! :-)

Писал Rost, 01:35 PM Отзывов: 48

 

24.Ноябрь.2007, Tools

Firefox 3 beta 1 - качаем, смотрим, побеждаем

Я почти не помню день 19 ноября 2007 года. Был в каком-то необычайно кромешном дебаге. Но именно 19 ноября 2007 года вышел долгожданный релиз Mozilla Firefox 3 beta 1 — спецверсия для разработчиков, чтобы потестить. Пока он скачивается, я написал этот текст в Firefox 2.0.0.9 >досюда<.

А вот я пишу уже из Firefox 3.0b1. Начну с главного: стал ли он быстрее? По-моему, да. По меньшей мере, я могу сейчас писать это, не дожидаясь загрузки остальных 87 закладок (F3 подхватил все настройки своего старшего брата). Во втором нужно было подождать.

Новинки в Firefox 3:

Безопасность

- Клик по иконке сайта (favicon) в начале адресной строки выдает информацию о владельцах.
- В конце адресной строки появилась кнопка добавления страницы в избранное.
- Браузер предупреждает, если вы попали на сайт вирусоделов или троянопускателей.
- Firefox 3 выдает более точные сообщения об SSL-ошибках.
- Автоматическая проверка и отключение устаревших, "дырявых" версий плагинов.
- Интеграция Firefox 3 с антивирусным ПО.
- Интеграция со встроенной в Windows Vista системой "Папин Рычажок" (Parental Controls: чтобы дети не смогли случайно встретить папу на Плохих Сайтах). Хороший ход.

Пользабилити Рыжей Лизы Третьей

- Докачки! Firefox 3 умеет докачивать после перезапуска и т.п.
- И вообще менеджер закачек уволен, взяли нового.
- Упрощена работа с паролями.
- Зум страниц (меню View, шорткаты).
- Выбор нескольких фрагментов текста за один заход: попробуйте Ctrl + Drag. Жесть.
- В Менеджере Адд-онов можно включать и отключать любые плагины. Можно даже отключить Flash Player, как они посмели. Но там же можно запретить и Silverlignt. Справедливо? Вполне!
- Много графической радости для пользователей Windows Vista.
- Плюс интеграция с пользователями Mac-ов.
- Анимированные закладки (не на флэше — как они посмели еще раз?).

Firefox 3 для разработчиков и дизайнеров

- Поддержка оффлайнового режима для веб-приложений (эта функциональность должна также встречно поддерживаться самим приложением).
- Управление цветовыми профилями. Firefox — браузер для дизайнера.
- Улучшена поддержка CSS, SVG и навороченных шрифтов.
- "Родные" HTML-формы: на Маках и Линуксе рендерятся в теме соотв. ОС (OS X / Gnome).

Перепроизводительность Firefox 3

- Скорость Firefox 3: большие изменения в архитектуре (такие, как переход на Cairo и переосмысление принципа верстки страницы) уже дали свой полезный эффект в Firefox 3 Beta 1 и этот эффект будет возрастать. Firefox будет ускоряться c каждым новым релизом.
- Использование памяти: закрыто более 300 дырок, куда утекала память. Не врут. Firefox 2.0.0.9 с моим набором табов занимал около 900 Мб памяти. Третий сейчас занимает 517. Явный эффект.
- Еще более надежное хранение пользовательского хлама: ссылочек, табчиков, закладочек, букмарчишек, уютненьких журнальчиков, пузырьков с маной для онлайновых игрушечек.

Резюмируя вышевосторгнутое: Firefox 3 мне очень нравится. Хотя анимацию табов могли и на флексе сделать. Как все-таки жесток этот мир.

О разработке: Firefox 3 работает на обновленной платформе Gecko 1.9. Исправлено 11 000 багов, переписано 2 000 000 строк кода. Теперь ясно, почему так долго выходил.

Если вы надумаете скачать это чудо браузеростроения — учтите, что Firefox 3 заменит ваш Firefox 2 бесповортно. И я, как человек уже прошедший через, считаю так: не стоит этого бояться. Вообще: не стоит ничего бояться, даже публичных выступлений.

Я — обратно в дебаг.

UPDATE: Писал-писал, а оказалось — многое уже написано, и людьми не в пример умнее автора. Читайте краткий технический обзор Firefox 3 Beta 1 на Linux.org.ru.

Писал Rost, 04:01 PM Отзывов: 17

 

23.Ноябрь.2007, AS3

Дэн, с днем рождения!

Поздравляем Дэна Иванова с днем рождения, желаем счастья в личном блоге :)

Писал Rost, 05:25 PM Отзывов: 4

 

Автоматизация тестирования сложных Flash-интерфейсов. Презентация Александа Комлева, Rambler, QA

Подсмотрел у Кости Ковалева: Александр Комлев из QA-отдела Rambler'а выложил свою презентацию с ClientSide 2007 о тестировании интерфейсов насыщенных флэш-приложений. Рассматриваются существующие инструменты тестирования и проводится их сравнительный анализ. Предлагается собственное решение: более универсальное, основанное на использовании ExternalInterface и предполагающее более высокий уровень квалификации составителя тестов. Впрочем, вот сама презентация:

Напишите Александру, что вы об этом думаете.

Писал Rost, 10:34 AM Отзывов: 0

 

22.Ноябрь.2007, Strategy

Трогаем ECMAScript4 руками — видео, код и ссылка

Я выражаю острейший респект всем, скрестившим умы в концептуальном обсуждении официального обзора обновленного языка сети ECMAScript4. Идущие до сих пор комментарии не оставляют сомнений: эта тема интересна читателям Потрошителя (и меня это очень радует).

Друзья! Поступила специальная инфа для любителей будущего малой и средней дальности: играем с ECMAScript4, видео и код в блоге Джона Резига, автора jQuery. Почувствуй вкус обновленного языка! (гм, "вкус языка" — это как звук уха или запах носа!)

Ну, а самые резвые могут скачать по прямой ссылке ECMAScript 4 Reference Implementation рабочую консоль для экспериментов с ECMAScript4 и пощупать его непосредственным образом. // По наводке св. Колина.

Писал Rost, 07:29 PM Отзывов: 3

 

20.Ноябрь.2007, Community

Первое новогоднее предупреждение

Микро-напоминание самому себе: дедлайн кратчайшего флэш-проекта начинает критическое сближение с датой 31 декабря. Начиная с сегодняшнего дня и до 27 декабря крайне осторожно планируй новые проекты. Лучше просто отметай любые предложения. В противном случае новогоднюю ночь рискуешь провести в полном дебаге. Этот вариант ничем не не хуже иных, но только в том случае, если ты хорошо знаешь, на что идешь. Готовься к новому году сейчас! Письмо самому себе, из глубочайшего дебага.

Писал Rost, 05:36 PM Отзывов: 3

 

19.Ноябрь.2007, Contests

Flash штурмует «Премию Рунета»

С 6 по 27 ноября проходит народное голосование «Премии Рунета - 2007». Приятной неожиданностью стал прорыв в десятку лидеров онлайн-игры TimeZero, игровой мир которой полностью реализован на Flash. Сейчас этот проект маячит на 6-ом месте, но до конца голосования все еще может кардинально измениться.

Поддержать братьев-флэшеров, а зодно и способствовать мировому доминированию любимой технологии можно в том самом народном голосовании Премии Рунета (голосовать можно каждые 24 часа).

Писал Rost, 12:41 PM Отзывов: 10

 

15.Ноябрь.2007, AS3

Опасный uint (беззнаковое целое) в ActionScript3

На собственном опыте убедился, сколь ответственно нужно работать с AS3-типом uint в ситуациях возможного присвоения ему отрицательного значения. Сразу же к чести разработчиков компилятора AS3 отмечу, что он отсеивает часть таких ситуаций и выдавает предупреждение:

var ui:uint = -10000;
trace("ui = " + ui);
// Выводит:
// Warning: 1092: Negative value used where a uint (non-negative) value is expected.
// ui = 4294957296

Но не все такие случаи удается отсечь компилятором. Вот пример ошибки, которая успешно компилируется, но код не работает как ожидается, формально являясь правильным:

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);
// Выводит:
// Rectangle X = 4294967295 // многовато для -1
// Rectangle Y = 1

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

UPD: Давно хотел сослаться на эту толковую статью: Василий Нужа о типе uint в ActionScript.

Писал Rost, 04:06 PM Отзывов: 17

 

13.Ноябрь.2007, Job

Зарплата = $2-5k+ (дополнение к вакансии от Communigate Systems)

В комментариях к вакансии флэш-разработчика для российского представительства компании Communigate Systems был задан вопрос о конкретной зарплате. Я запросил информацию у работодателя. Оплата труда составляет $2-5k+ в зависимости от результатов собеседования. Пожалуй, я процитирую ответ:

За комментариями я не следил - не знаю как это делать автоматически, поэтому был не в курсе, иначе бы отреагировал гораздо раньше.

К сожалению, пока никто не написал.

Будьте добры, напишите вилку $2-5k+ по результатам собеседования.

Напомню контактный емэйл: hrundik [жэвотное] stalker.com.

[Рост: Рву волосы, что не настроил уведомления о комментариях должным образом.]

Писал Rost, 05:59 PM Отзывов: 38

 

12.Ноябрь.2007, Community

Встречайте Флэшиста и мистера Фластара

Мистер Flastar делает сайт, выкладывая на нем свои флэш-находки, а Флэшист пишет очень и очень достойный блог про Flash и более того — предлагает задать ему вопрос и получить ответ. Спросите что-нибудь полезное.

Писал Rost, 09:37 PM Отзывов: 15

 

FlashDevelop 3 beta 4: TODO-списки и обузданный автокомплит

В этом релизе Flash Develop 3 beta 4: не такой дружелюбный автокомплит, как в Beta 3. Степень дружелюбия снижена по просьбам трудящихся. Хотя мне предыдущий тоже был ничего. И еще одно хорошее дополнение: появилась полноценная панелька Tasks, что парсит в вашем коде все TODO-шки и выводит их аккуратным списком. Я заново влюбляюсь во Flash Develop! Кстати, какие ваши любимые в нем плагины и рабочие настройки?

Писал Rost, 12:48 PM Отзывов: 7

 

11.Ноябрь.2007, Community

Cупер-отчет о Client Side 2007 и контуры Adobe Russia User Group

Костя Ковалев, сделав на ClientSide2007 два доклада, написал отчет об этой конференции. К отчету приложены: многа пазитифных вибраций, несколько супер-гипер-ссылок, фотография с пивом, флэшерами и флэшерками, а также две презентации с докладами Кости: "Сравнение современных технологий для создания насыщенных интернет-приложений (RIA)" и "Adobe Integrated Runtime (Adobe AIR): платформа для создания десктопных RIA". Идите по ссылке, читайте, качайте, радуйтесь. Костя также упоминает, а Слон в Сапогах пишет отдельный пост о том, что Adobe User Group Russia — уже на линии горизонта!

Друзья, я предлагаю ссылаться на Костин проект щедро и повсеместно.

Писал Rost, 08:06 PM Отзывов: 11

 

10.Ноябрь.2007, Components

ASTRA: набор инструментов для Flash-разработчика от Yahoo!

ActionScript Toolkit for Rich Applications — так расшифровывается название "ASTRA" (создатели тактично обошли стороной проблему "Internet vs. Interactive"). ASTRA — это набор Flash- и Flex- компонентов, бибилотек и готовых приложений. В данный момент доступны для скачивания:

+ ASTRA Flash Components Library, а именно: флэш-компоненты Tree, Menu, TabBar, AutoComplete и Charts.
+ ASTRA Web APIs Library (много всего яхушного, есть Yahoo! Maps AS3 Communication Kit).

Все бесплатно, OpenSource (BSD, лицензия) и все это — дело рук Yahoo Flash Platform Team, появившейся 17 Августа 2007 года.

Писал Rost, 06:55 PM Отзывов: 1

 

07.Ноябрь.2007, Job

Communigate Systems ищет программиста в Москве

Российское представительство компании CommuniGate Systems ищет классных программистов для работы над интересными проектами, существующими и новыми.

Требования к кандидатам:

  • Отличное знание AS3 и MXML.
  • Умение свободно общаться на письменном английском.
  • Понимание принципов ООП.
  • Готовность держать руку на пульсе современных технологий.
Большим плюсом будет опыт работы с Cairngorm.

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

Присылайте резюме с рассказом о себе на hrundik [жэвотное] stalker.com.

UPD: Я узнал размер зарплаты у работодателя, его ответ: $2-5k+ в зависимости от результатов собеседования.

Писал Rost, 01:05 PM Отзывов: 8

 

С первым днем рождения, Тамарин!

Начиная с сегодня, 7 ноября — не только День Предыдущей Конституции (увы!), но и праздник для большой части OpenSource-сообщества. Ведь ровно год назад, 7 ноября 2006 г. Adobe отдала Mozilla Foundation исходники виртуальной машины AVM2, на которой работает ActionScript3 и будет работать... а об этом завтра. Я допишу черновик со многими буквами и там всеми известными мне детялями поделюсь. С первым годом, Тамарин!

Писал Rost, 09:52 AM Отзывов: 2

 

06.Ноябрь.2007, Remoting

Целесобразность экономии на типах данных во Flash Remoting

Продолжая экспериментировать с производительностью Flash Remoting во Flash Player 9, я попробовал избавиться от класа Point, используемого для описания элементарной точки в массиве координат. Я предположил, что на описание типа данных расходуется значительная часть трафика, а когда точек действительно много, то можно попытаться сэкономить трафик, заменив массив с объектами типа Point массивом с простым набором чисел, где координаты x и y просто попеременно идут друг за другом.

Эффект от детипизации был не слишком высокий: вместо 19 Кб данные стали весить 18 Кб (для 4000 точек). Вопрос экономии на типах данных во Flash Remoting практически закрыт: похоже, здесь много не выиграешь. Хотя стоит проверить это еще раз — на огромных массивах.

Писал Rost, 03:44 PM Отзывов: 3

 

Эффективность 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, но он ведь тоже не резиновый, а объем данных весьма большой. Может, есть другие варианты?

Писал Rost, 03:43 PM Отзывов: 10

 

Календарь IT-мероприятий в Москве

По наводке Дениса 'Q-Zma' Кузнецова увидел Календарь IT-мероприятий в Москве. Есть интересные, но нет наших, кроме ClientSide2007. Календарь составлен автором сайта про джавку, j2ee, BEA и IBM.

Писал Rost, 11:45 AM Отзывов: 5

 

05.Ноябрь.2007, AS3

Встречайте ECMAScript4. Обзор нового стандарта сетевого языка

Рабочая группа TC39-TG1 выпустила обзор нового стандарта ECMAScript 4 (ES4) — "языка сети", или, более конкретно, фундамента языков JavaScript и ActionScript (приятно отметить, что в данном документе слово "ActionScript" встречается неоднократно, в том числе и при упоминании нового механизма верификации программного кода в ES4).

Напомним, что предыдущей версией стандарта был, основанный на прототипах ES3. Это сегодняшний JavaScript 1.x. В новом стандарте ES4 учтены требования, возникшие при разработке крупных проектов, к которым относятся многие AJAX-, Flash и Flex-приложения. Одним из условий стандарта ES4 является совместимость с предыдущим стандартом, ES3.

Краткий обзор характеристик ES4

ООП в ECMAScript 4

ECMASript4 поддерживает объектно-ориентированное программирование введением таких структур, как классы (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."

Писал Rost, 12:50 PM Отзывов: 46

 

04.Ноябрь.2007, Debug

Как заставить сборщик мусора таки собрать и вынести мусор

Недокументированная фишка Flash Player 9. Создав два объекта LocalConnection c одинаковыми именами и предупредив возникновение исключения блоком "try..catch", вы заставите сборщик мусора (Garabage Gollector, не путать с сайтом Бармалея) собрать мусор и выбросить его. Проще говоря, это брутальный способ освободить память, занимаемую неиспользуемыми переменными вашего флэш-приложения:

try {
new LocalConnection().connect('foo');
new LocalConnection().connect('foo');
} catch (e:*) {}
// Сборщик мусора пройдется по вашей флэшапе после второго вызова и удалит все неиспользуемые переменные.
Внимание! Предельно строго рекоменудется использовать этот трюк только для экспериментов в процессе разработки и не играть так с готовым приложением на машине конечного пользователя — фишка неофициальная, низкоуровневая, никаких гарантий нет и не предвидится.
(Подглядел у Гранта Скиннера, в третьей статье из цикла "Управление ресурсами в AS3". Строго рекомендую всем.)

Писал Rost, 04:10 PM Отзывов: 5

 

AIRApps Wiki — более 100 AIR-приложений одним списком

По приглашению Райана Стюарта попал в AIRApps Wiki. Cейчас на ее главной странице размещено 117 AIR-приложений. Вы тоже можете добавить туда свою работу — пароль там же. Ну вот, одним черновиком меньше. До сих пор не могу вспомнить, что помешало мне дописать и выложить эту запись три месяца назад. А, вспомнил! Я ждал, пока в списке будет 100 ЭЙР-приложений. Идиот...

Писал Rost, 01:13 PM Отзывов: 0

 

97 черновиков Флэша Потрошителя. Нужно что-то менять!

Только что прошелся по блогу и обнаружил, что 97 записей до сих пор находятся в статусе черновиков: их никто кроме меня не видел. Некоторые уже безнадежно устарели. Нужно быть решительнее. Было. (О! На выходных буду доводить до ума и публиковать стоящие черновики.)

Писал Rost, 11:48 AM Отзывов: 7

 

03.Ноябрь.2007, Remoting

Куда подевался Flash Remoting в CS3? Никуда. Он стал еще проще

Вы любите Flash Remoting во Flash? Используете его простоту и скорость? Тогда вы наверняка заметили, что для Flash CS3 набора Remoting Components нет и не предвидится. Почему, я не знаю; зато знаю, как его вернуть. Оказывается, во Flash CS3 никакие специальные компоненты для ремоутинга вообще не нужны. Достаточно правильно использовать AS3-класс NetConnection, как подсказывает Оскар Трельес: создаем класс-обертку вокруг NetConnection и называем его RemotingService. В нем задаем кодировку ремоутинга (AMF0/AMF3) и устанавливаем соединение. Работает хоть с AMFPHP, хоть с Fluorine под .NET.

Далее - код, пример использования и одна проблема, с которой я столкнулся.

Исходный код класса RemotingService, устанавливающего remoting-соединение


package {
import flash.net.NetConnection;
import flash.net.ObjectEncoding;
public class RemotingService extends NetConnection {
function RemotingService(url:String) {
// Set AMF version
objectEncoding=ObjectEncoding.AMF3;
// Connect to gateway
connect(url);
}
}
}


Исходный код класса RemotingGateway, вызывающего Remoting-методы


package {
import flash.net.Responder;
public class RemotingGateway {
private var gatewayURL:String;
private var rs:RemotingService;

function RemotingGateway(strServicePath:String = null) {
trace("Init remoting, path = " + strServicePath);
init(strServicePath);
}
private function init(strServicePath:String = null) {
gatewayURL = strServicePath;
rs=new RemotingService(gatewayURL);
}
public function testRemoting():void {
var responder:Responder=new Responder(onResult,onFault);
rs.call("Web.Services.FlashProxy.Test",responder, {array:new Array(0,1,2)});
}
private function onResult(result:Object):void {
trace("Remoting Result: " + result);
}
private function onFault(fault:Object):void {
trace
(
"Remoting fault type:\t" + fault.type
+ "\nFault code:\t" + fault.code
+ "\nFault level:\t" + fault.level
+ "\nDescription:\n\t" + fault.description
+ "\nDetails:\n\t" + fault.details
);
}
}
}

Пример использования AS3 Remoting


var remotingGateway:RemotingGateway = new RemotingGateway("URL — ПУТЬ К СЕРВИСУ");
remotingGateway.testRemoting();

Работает!

Помогите разобраться: не могу передать удаленному методу более одного параметра

Все вроде бы шоколадно: ремоутинг стал еще проще, чем был. Но есть одна проблема, которую я пока не смог решить. Я не могу при вызове удаленного метода передать более 1 переменной. Если я в последнем примере, где вызывается rs.call("Web.Services.FlashProxy.Test",responder, {array:new Array(0,1,2)}) вместо одного объекта {array:new Array(0,1,2)} пытаюсь передать несколько чисел: rs.call("Web.Services.FlashProxy.Test",responder, 0, 1, 2), то получаю от Fluorine ошибку типа "com.TheSilentGroup.Fluorine.Exceptions.FluorineException" с таким описанием:
Could not find a suitable method with name Test.
Details:
at com.TheSilentGroup.Fluorine.MethodHandler.GetMethod(IApplicationContext applicationContext, Type type, String methodName, IList arguments)

at com.TheSilentGroup.Fluorine.Filter.LibraryAdapter.Invoke(IApplicationContext applicationContext, AMFBody amfBody)

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

В чем причина такого поеведения? Может, я что-то делаю не так? Не та версия ремоутинга? Бьюсь второй день.

UPD: Похоже, мне удалось обойти проблему, используя AMF0 в настройке класса RemotingService: objectEncoding=ObjectEncoding.AMF0;. Но ведь Fluorine умеет работать с более производительным AMF3! Как склонить его к нормальной работе с AMF3?

Писал Rost, 03:04 PM Отзывов: 5

 

02.Ноябрь.2007, PureMVC

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

Писал Rost, 05:04 PM Отзывов: 2

 

Флэш-сны: Saffron 13 UML, Шагги Минималист, Инжун Индеец про Flash 12 и флэш-кино с самим собой

Мне приснился сон, из которого я запомнил:
- Что Сэмюэль Аглесиас выпустил свое долгожданное детище и назвал его Saffron 13.
- Что вышла новая Флексапа, позволяющая создавать микро-мультики с самим собой и зашаривать в сеть.
- Что Шаггисмайл сделал минималистичный дизайн сайта.
- Что я выспался.
- Что Инжун — таки индеец и написал про Flash Player 12 узелковое письмо.

Из всего этого сыблось только предпоследнее... а вообще мне очень редко снятся сны, я каждому очень рад.

Писал Rost, 11:45 AM Отзывов: 4

 

01.Ноябрь.2007, Design

Удобная флекса для точной настройки атрибутов сглаживания шрифта

Если бы Тема Лебедев занимался флэш-программированием, он бы порадовался этому приложению для тонкой настройки антиалиасинга шрифтов (с исходным кодом) и накатал бы еще один замечательный параграф об экранной типографике.

Но поскольку Тема занимается каким-то дизайном (что это?), то придется нам разбираться с тонкостями антиалиасинга надписей самостоятельно.

Как вы знаете, во Flash Player 8 появилась возможность задать текстовому полю специальный режим анти-алиасинга, "advanced". В этом режиме у текстового поля появляются три новых свойства: sharpness, thickness и gridFitType (Dan, спасибо за уточнение).

А с выходом Flex 2 эти свойства дали начало новым CSS-стилям: fontSharpness, fontThickness и fontGridFitType — таким образом, флекс-разработчики могут контролировать эти параметры через обычный CSS-код.

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

Писал Rost, 09:54 PM Отзывов: 5

 

Сколько памяти расходует небольшой класс в ActionScript3

Вчера в обсуждении экономии памяти за счет использования типа int вместо типа Number Вадим Войтюк поднял интересный вопрос: сколько памяти уходит на использование самого класса PointVO, участвовавшего в тестировании?

Я выяснил, сколько памяти отъедают экземпляры класса PointVO. Без PointVO расход пямяти на хранение двух миллионов переменных типа Number составляет 30Мб, что почти в два раза меньше 53Мб — памяти, расходуемой с использованием PointVO.
Время — 618 Мсек против 1226, т.е. в 1.9 раза быстрее без использования класса PointVO.
Чистая разница расхода памяти: 53Мб - 30Мб = 23Мб.

То есть: 23Мб памяти расходуется на хранение одного миллиона экземпляра классов PointVO, каждый из которых имеет два свойства x и y типа Number.

А для типа данных 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 байт на обертку.

Далее — исходный код теста для интересующихся.

Исходный код теста для переменной типа Number


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]);

Писал Rost, 02:06 PM Отзывов: 2

 

Client Side 2097, слет пионеров Вебтриноля

Fcuk. Я не вижу возможности попасть 6-7 ноября в Москву на СlientSide2007. А вы, если можете, попадите. Там Дмитрий Поклонский (ссылка?), Иван Дембицкий и Костя Ковалев расскажут про кривые Безье во Flash, про работу с XML и про создание стандалонных Flash-приложений. Будет проведено сравнение современных RIA-технологий (Slight?) и обзор возможностей Adobe AIR. А еще будет много всего не про флэш, читайте программу конференции Client Side 2007 и непременно зайдите в обсуждение у Костантинера, у него там не только с подробностями, но и со ссылкой на бурную дискуссию о вреде пафоса в составе вступительных слов. С чем я не согласен и сейчас выражу свое несогласие.

Мой грамм масла к полезной жирности вступительных слов

Как по мне, так вступительное слово обязано быть пафосным. Окей, пусть оно не будет именно таким. Пусть будет стебным, стремным, страшным или смешным. Но вступительное слово не имеет права быть никаким — тогда пусть его не будет вообще. Если ты, организатор, не горишь идеей собрания — кто будет гореть за тебя?

Желаю всем с пользой провести славное время на ClientSide2007. Зажигай!

Писал Rost, 09:41 AM Отзывов: 11

 

Примечания: Статус документа: в процессе
++


Этот сайт окупается за счет саперов. Они говорят:
+++




++++



© 2002-2008 Производство: Рост Прибыли · О проекте · Подписка на новости (RSS)