Завтра, 1 июня, провожу день в Киеве, в районе м. Арсенальная (к-р "Зоряний").
Браття! Мій мобіл із (050) 406-03-96
У Макромедии давно уже выложен док на их собственный, документированный, но мало раз залинкованный XPathAPI от Macromedia (пусть и не такой продвинутый, как XPath от XFactorStudio, но тоже неплохо себе работающий :)
(via injun comments)
Я пробовал as2unit год назад, а юнит-тесты из состава as2lib.test.unit не пробовал вообще. Способ испольования as2unit показался мне слегка громоздким. У кого-нибудь есть соображения или опыт по поводу? Что предпочтительнее?
Давно и часто слышал я про SVN, как самое удобное (и бесплатное) решение для контроля версий исходного кода. А после того, как нашел у Аралабалкана ссылку на однокликовую инсталляцию SVN со всеми потрохами, понял, что так жить дальше нельзя, скачал и установил себе эту SVN (врут про один клик. Там их не меньше пяти!!!) Интересно то, что уже на следующий день ко мне обратились программеры из соседнего отдела (я с ними сотрудничаю) с вопросом -- знаю ли я что такое SVN, и смогу ли подключиться к их только что устfновленной. Конечно, знаю, -- ответил я с видом знатока... синхронистичность?
Андрей Горбатов перевел на русский язык урок от Кристофа Конраца "Flex-магазин + Ruby on Rails", которым я совсем недавно так восхищался.
Что в этом туториале хорошо -- так это то, что весь процесс показан с самого начала -- с создания базы данных и установки языка интерпретатора (ворчал Клишин) и менеджера пакетов языка Руби и его рельсов. А заканчивается урок прикручиванием слайдеров из состава Yahoo UI Library для большей аяксовости. Так что если вы хотите пить -- урок лучше не читать, там нет воды. Фрилэнсеры, обратите самое пристальное внимание.. стоит того, чтобы прочесть и удивиться!
Сегодня мы раcсмотрим еще один тип заданий, которые умеет выполнять полезный инструмент Ant. Мы увидим, как он удаляет вредные файлы, в данном случае -- кэш браузера. Послушайте меня, на самом деле, это -- не самое лучшее, что вы можете сделать (лучше дерево посадить), но бывает, что процесс отладки приложения заходит так далеко, что в вашем исходном коде все уже проверено-перепроверено, везде где только можно стоят брейкпойнты и трейсы, а все равно ничего не работает. Тогда становится ясно, что подлый баг засел в кэше браузера, и единственный шас его замочить -- это тотальная экстерминация всего кэша. Затем, когда кэш очищен, а баг снова радостно машет вам красным платочком зарождающегося разочарования в людях и технологиях, вы понимаете, что, чорт побери, действительно где-то допустили ошибку... и после этого уже за считаные минуты находите кириллическую "с" вместо латинской "c" в проверке типа "if (mcContainer._name = "mcContainerTest")", а затем еще быстрее находите оператор присваивания ("=") вместо оператора сравнения ("==") в этой же строке кода. Поэтому, что бы кто ни говорил, а очистка кэша браузера имеет важнейшее психологическое значение, заставляя мозг разработчика начинать думать -- а потому что отступать некуда; позади -- чистый кэш!
if (mcContainer._name = "mcContainerTest")
А чтобы удалить файл, нужно знать только одно: путь к нему. В моем случае (кэш браузера Firefox) это путь типа "c:\Documents and Settings\[USERNAME]\Local Settings\Application Data\Mozilla\Firefox\Profiles\[SOME_RANDOM_STRING]default\Cache". (Кстати, сегодня я совершил для себя приятнейшее открытие, обнаружив, что Firefox имеет встроенный навороченный браузер собственного кэша, и вызывается он по гениальнейшему адресу about:cache (вводите этот адрес вручную или открывайте средним кликом в новой вкладке -- иначе не сработает. А если вы еще не иcпользуете Firefox, то начните делать это прямо сейчас, -- и ничего, что коньки IEще не сносились -- на дворе уж лето, вдохните свежего воздуха полной грудью!
c:\Documents and Settings\[USERNAME]\Local Settings\Application Data\Mozilla\Firefox\Profiles\[SOME_RANDOM_STRING]default\Cache
Для очистки кэша заведем в нашем билд-файле (он был описан в предыдущей статье, посвященной сердитой компиляции, вследствие которой ваша сложная флэшка cкомпилится за секунду, и автоматически откроется не в беспомощном стэнделон-проигрывателе, а сразу в окне тестового браузера, да еще и с вашего же сервера, -- и все это по нажатию Ctrl+Enter!)
Итак, вот исходный код, который нужно добавить в билд-файл, чтобь почистить кэш браузера (изменить параметры по вкусу!):
<target name="browser.cache.clean"> <delete> <fileset includes="*" defaultexcludes="no" dir="c:\Documents and Settings\[USERNAME]\Local Settings\Application Data\Mozilla\Firefox\Profiles\[SOME_RANDOM_STRING]default\Cache" /> </delete> </target>
Обратите внимание на то, что операция удаления -- настраиваема: можно указать и шаблон имен файлов для удаления (includes), и шаблон имен для тех, кого не трогать, и, конечно, каталог с жертвами. А чтобы просто удалить нежелательный каталог со всеми потрохами, достаточно написать <delete dir="c:/Program Files/Internet Explorer" /> (нe забудьте после этого установить Firefox). И, наконец, чтобы удалить абсолютно все ненужные файлы, можно обойтись совсем короткой командой <delete dir="*" />, выключить комп навсегда и устроиться в ЖЭК кочегаром, чтобы начать приносить людям пользу.
<delete dir="c:/Program Files/Internet Explorer" />
<delete dir="*" />
На самом деле, цель этой заметки -- еще раз показать функциональность Ant, чтобы убедить еще хоть одного флэш-разработчика перейти к использованию таких повышающих продуктивность работы инструментов, как Eclipse, Ant, MTASC, ASDT/FDT, SWFObject и неконтролируемое чувство юмора. Буквально сегодня я нашел еще пару отличных страниц-путеводителей по Анту: "Apache Ant -- Википедия" и "Top 15 Ant Best Practices". Читайте, применяйте и радуйтесь новой скорости разработки!
А как вы думаете я снова нашел время для написания этих длиннющих, всем уже надоевших статей-новостей? Во всем виноваты Apache Ant, Клишин и Constantiner!
Вот.
Я уже писал, как использовать ant-скрипты для сердитой компиляции флэш-проектов, чтобы тестировать обновленный(е) скомпилированный(е) swf-файл(ы) сразу в окне браузера, содержащем открытый прямо с вашего сервера документ, а не в одиного торчащем окне standalone-flash-проигрывателя.
Сегодня мы рассмотрим, как, базируясь на том же самом билд-скрипте, передать вашему флэш-приложению дополнительные параметры через адресную строку браузера (иными словами, передать параметры через GET-запрос). Один из самых распространненых случаев, когда нам нужен это прием -- это так называемый запрет кэширования swf-файла(ов). Как вы наверняка уже знаете, чтобы загружаемый файл гарантированно обновился, а не брался из кэша браузера, существует верный способ: изменять путь к нему, приписывая к этому пути параметр с изменяющимся значением. В результате html-код будет выглядеть как: <param name="movie" value="app.swf?v=1.0.121">. В качестве изменяющегося параметра мы будем приписывать номер билда, увеличивающийся на единицу при каждой компиляции проекта. Его еще называют минорной версией и стандартно изпользуют как в Java, так и в .NET.
<param name="movie" value="app.swf?v=1.0.121">
Итак, разберемся, что нам нужно получить. Начинаем "с конца":
Всего три шага к решению задачи! Из них первый не требует никаких усилий вообще. Второй шаг тоже несложный, но нужно акцентировать внимание не том, как именно мы возьмем значение параметра из адресной строки и передадим его флэш-объекту. Для этого лучше всего подходит SWFObject, так как у него уже есть встроенный и тыщу раз протестированный метод getQueryParamValue(), который берет аргументы адресной строки браузера и приписывает их как параметры swf-объекта прямо в исходный код: so.addVariable("v", getQueryParamValue("v")); so.write("flashcontent"); этим мы и воспользуемся!
getQueryParamValue()
so.addVariable("v", getQueryParamValue("v")); so.write("flashcontent");
Кстати, если вы до сих пор не используете SWFObject для встраивания флэш-приложений в свои страницы, то вам стоит начать это делать прямо сейчас, благо есть понятная и компактная русскоязычная инструкция к SWFObject от МК. Вообще, без SWFObject лучше ничего дальше не делайте, потому что он и проблемы отображения Flash в IE решает (помните историю с Eolas-патентом, из-за которой мы до сих пор выгребаем?), и версию проигрывателя может легко определить. К поисковикам он тоже дружелюбнее всех остальных способов встраивания флэша в веб-страницу. При этом он прост и элегантен! В общем, если ваши лыжи при скольжении по асфальту до сих пор издают неприятный звук, переходите на использование SWFObject как можно скорее!
Третий шаг производится в билд-файле. Для увеличения номера билда в ant имеется спецсвойство <buildnumber />. Оно принимает аргумент "file" (по умолчанию он равен "build.number")—имя файла, в котором будет храниться номер билда. Если такого файла нет, он будет создан в корневом каталоге проекта. Если уже есть—то хранящийся в нем номер билда увеличивается на единицу (также в этом файле хранится дата/время последнего билда).
<buildnumber />
file
build.number
Используем же свойство <buildnumber /> в билд-файле из предыдущего урока, посвященного сердитой компиляции! Для этого добавим в него новую цель "build.number.increment" и обеспечим ее вызов из основной цели "build" прежде двух других целей, "mtasc.compile" и "run.html". И, наконец, в цели run.html припишем увеличенное значение из build.number к аргументу output.html,—обратите внимание, ради этого последнего действия все и затевалось: <arg line="${output.html}${build.number}" />.
build.number.increment
build
mtasc.compile
run.html
output.html
<arg line="${output.html}${build.number}" />.
Заметьте, как выглядит теперь аргумент output.html: он заканчивается строкой "/index.html?v=0.0."—таким образом, после приписывания к нему номера билда получится нечто вроде "/index.html?v=0.0.121"—и последнее число будет автоматически увеличиваться с каждой компиляцией и попадать в адресную строку браузера. А Javascript из страницы index.html будет брать этот аргумент из адресной строки и приписывать его к параметру movie swf-файла, и мы получим требуемый: <param name="movie" value="app.swf?v=1.0.121">. Кстати, флэш-приложение app.swf может затем использовать этот параметр во всех своих методах загрузки внешних данных, таким образом исключая кеширование и их тоже!
/index.html?v=0.0.
/index.html?v=0.0.121
movie
Вот обновленный код файла build.xml (новые строки выделены жирным):
<?xml version="1.0"?> <project default="build" basedir="."> <property name="mtasc.path" value="C:\Program Files\Mtasc\mtasc.exe" /> <property name="matsc.args" value='App -version 8 -swf "d:\projects\[PROJECT]\bin\app.swf" -cp "[DISC]:\Documents and Settings\[USERNAME]\Local Settings\Application Data\Macromedia\Flash 8\en\Configuration\Classes" -cp D:\Projects\[PROJECT]\classes -cp D:\Swf\classes' /> <property name="web.browser.path" value="c:\Program Files\Firefox\Firefox.exe" /> <property name="output.html" value="-url http://localhost/[PROJECT]/index.html?v=0.0." /> <!-- property name="flash.player.path" value="c:\Program Files\Macromedia\Flash 8\Players\Debug\SAFlashPlayer.exe" / --> <!-- property name="flashcommand.path" value="'c:\Program Files\FlashCommand\FlashCommand.exe'" / --> <!-- property name="" value="" / --> <target name="build" depends="build.number.increment, mtasc.compile, run.html" /> <target name="build.number.increment" > <buildnumber file="build.number"/> </target> <target name="mtasc.compile"> <exec executable="${mtasc.path}" > <arg line="${matsc.args}" /> </exec> </target> <target name="run.html"> <exec executable="${web.browser.path}" > <arg line="${output.html}${build.number}" /> </exec> </target> </project>
Как видите, Ant полезен во многих отношениях. И если вас интересует этот действительно мощный инструмент, то вот пара толковых ресурсов для тех, кто только начинает с ним знакомиться, и это по-русски:"Ant за 10 шагов — документация Javatech" и "Автоматизируйте процесс сборки Java программ с помощью Ant". И, конечно, бессмертная статья от Константинера: Разработка Flash-проектов с использованием Apache Ant (доклад на семинаре New Media)!
Неделю назад я заинтересовался Руби и его рельсами, прочел пару хороших статей на тему Ruby on Rails по-русски (PDF, 900Кб), получил десять хороших книжек по Руби от Клишина и решил двинуть с места в карьер, освоив туториал от Кристофа Конраца "Flex-магазин на рельсах". О туториале этом можно сказать много хорошего, и самое лучшее то, что он проводит через процесс работы с Руби с самого начала, включая его установку, загадочный скаффолдинг (раскрыто ниже), настройку приложения и собственно прикручивание Руби к Флексу. При этом туториал действительно проходится на одном дыхании. Заминка у меня возникла только в конце, где Кристоф прибегает к использованию уже устаревших версий как FABridge, так и Flex -- он писал свои примеры под Flex 2 Beta 2, а сейчас уж третья бета на дворе, вот я и обновил его приложение. Завершить это на прошлых выходных я не успел, так как есть работа. Что ж, зато закончил на этих.
Мои впечатления от прохождения туториала, находятся где-то между изучением аккорда Am и его же версии на пятом ладу через баррэ. Ключевое слово в Ruby on Rails -- оптимизация. После установки и запуска получаю:
* внятные сообщения об ошибках в браузере. Нет, это действительно внятные сообщения об ошибках. Во Flex Builder 2 таких пока нет -- или язык там такой сложный? Так или иначе, ошибку удавалось найти и исправить с первой попытки, редко -- со второй -- именно благодаря этим сообщениям.
* скаффолдинг таки рулит. Это когда на вход подается база данных, а затем одной командой создается как работающая админка для этой базы данных, так и готовый сайт, эти данные отображающий (пусть рельсовики поправят, если я ошибся).
* немного непривычно такое частое использование знака процента на каждом шагу. Это одна из моих частых ошибок в Руби коде -- я вместо него все время норовлю вписать доллар..
* возможность вывода результата в XML через спецшаблоны. Это и есть та точка (наверняка это только одна из них), где Руби можно коннектить с другими решениями. Например, с Flash.
* набирал все руками; Кроме последнего примера, демонстрирующего работу с Yahoo UI Library %( -- пройдя туториал, вы поймете, почему );
* одной из моих ошибок было то, что я иногда забывал запустить MySQL перед запуском идущего с RoR сервера WEBrick. В результате получал ошибку "No connection could be made because the target machine actively refused it". После запуска MySQL и перезапуска WEBrick все становилось на свои рельсы и летало.
Ruby on Rails -- очень хороший вариант для фрилансеров, работающих как над серверной, так и над клиентской частью сразу. Хоть я сам им и не являюсь -- но тесты проводил дома, при включенной жене и громкой музыке реггей, в присутствии другого срочного проекта так что условия можно считать вполне боевыми %)
И для небольших компаний разработчиков, не переутяжеленных ISO-9001 стандартизацией и любовью к избыточному документированию каждого пука язык Ruby и особенно фреймворк Ruby on Rails тоже очень может пригодиться. Поинтересоваться им стоит в любом случае -- хотя бы на уровне пары туториалов, чтобы узнать об одной из хороших реализаций концепции "Работа как отдых" ;-)
Актуально до 4 июня 2006 года:
В фирму Validio Ukraine (бывший МИИК) нужен флэш-разработчик для работы над большим проектом. Разглашать детали не могу, но в резюме эту работу можно ставить рядом с Amazon, MySpace и т.п. Точнее, немножко выше.
Требования: знание AS2. Желание перейти на AS3 приветствуется.
Хорошее дополение от Андрея Глебова (он тут же работает): считаю необходимым поправить Роста, так как он, кажется, слегка увлекся: нужен просто шарящий флэшер с уклоном в программирование, но если неплохой аниматор, то тоже хорошо, лишь бы не боялся AS в принципе и любил учиться. ХТМЛ и web-дизайн будут хорошим плюсом.
Если интересно -- спрашивайте по ящику rost(сабака)validio.com.ua. Человек нужен до даты, указанной в этой записи. Подробности -- под катом.
Зарплата от $[впишите, сколько вы хотите, комментах!] (стартовая минимальная). Если ваши скилы высокие, стартовая зарплата больше. Повышается раз в полгода. Премии.
Снова правильное дополнение от Глебова: Тоже, как мне кажется, следует вмешаться. Официально тут зарплаты друг друга никто не знает. Я, например, не представляю - сколько Рост зарабатывает. И названная сумма - это не просто не предел, а... как бы это... ориентир для начинающих. Все зависит от кандидата. Если на собеседовании он сможет оставить о себе впечатление человека, в котором фирма всерьез нуждается, можете смело поднимать планку. И никто не только не осудит, но даже и знать не будет - сколько вы зарабатываете. Насчет остального - за полтора года мне лично зарплату повышали раза три. Премий было тоже примерно столько же, не считая новогодних (это святое). А вообще тут приятно: столовая, медпункт (кому нужно), массаж делают время от времени. Культурная программа - обширная. Летом, при желании, можно на шашлыки или в байдарочный поход попадать почти каждые выходные. За счет фирмы, ессессно. Да! Чуть не забыл. Английскому учат на холяву. Без отрыва от производства. Три раза в неделю.
Насчет остального - за полтора года мне лично зарплату повышали раза три. Премий было тоже примерно столько же, не считая новогодних (это святое). А вообще тут приятно: столовая, медпункт (кому нужно), массаж делают время от времени. Культурная программа - обширная. Летом, при желании, можно на шашлыки или в байдарочный поход попадать почти каждые выходные. За счет фирмы, ессессно.
Да! Чуть не забыл. Английскому учат на холяву. Без отрыва от производства. Три раза в неделю.
Премии платят и за привлечение новых сотрудников: в случае вашего прихода через меня я своей поделюсь. Есть своя столовая, спортзал, теннис, воллейбол и ходить на работу можно хоть к обеду (так и хожу), в офисе быть можно до 23:00 и дольше если показать охраннику серьезное лицо (на самом деле об этом легко договориться с менеджером). Слишком умным устраивают командировки к западным партнерам/клиентам. Недавно в байдарочный поход плавали за счет фирмы. Ну и всякие такие приятные мелочи. Мой отдел самый веселый потомушто мы ж дизайнеры, с нас спросу мало.
Мне самому контора нравится, работаю вот уже третий год тут, и если уйду, то уже на фриланс, как Константинер ;).
Как обычно происходит процесс отладки большого флэш-приложения, наcыщенного графикой и работающего со скриптами, как с клиентскими, так и с серверными (например, проводящем аутентификацию пользователя)? А так: если вы не используете MTASC, то сначала вы запускаете компиляцию проекта из среды Flash IDE. Ждете от минуты до двух, и то, если так еще повезет. Затем вручную открываете некую страницу в браузере (типа http://localhost/index.php?frob=df2oi-3324-kjlsd-2342), где собственно и тестируете, как все это теперь работает *(коротко об автоматических юнит-тестах -- потом). Ну, а если вы счастливый обладатель Eclipse/FDT/MTASC, то вы запускаете компиляцию, которая происходит значительно быстрее -- всего секунда, и готово! А потом происходит самое страшное: вы снова вручную открываете нужную вам страницу в браузере. А, чуть не забыл, в Eclipse/FDT есть опция "открыть swf во флэш-проигрывателе" после компиляции -- спасибо, но мне не это нужно! Мне нужно в браузере, и не swf какой-нибудь, а конкретную страницу с этим swf и еще джаваскриптами, передающими ему пару параметров, и эта страница должна быть на моем сервере, пусть и локальном. И еще хочу, чтобы swf гарантировано не кешировался: то есть хочу передать ему параметр типа app.swf?v=0.1.15 (об этом в следующей статье). А вы мне -- "открыть swf после компиляции". А я можт жить хочу, а не страницы эти ваши после компиляции вручную открывать -- и каждый раз одним и тем же роботизированным действием, чорт побери, вот за что обидно! Это тебе любой дурак скрипт сможет сделать.
И такой скрипт есть, и может он все, а называется он Apache Ant. И тот, кто его попробовал, навсегда запомнит запах скорости, а заодно получит много свободного времени для написания таких длиннющих статей и чтения еще более длинных.
Потому что теперь процесс отладки будет выглядеть так: ты работаешь в Eclipse и пишешь код. Нажимаешь Ctrl+Enter. Через секунду видишь результат компиляции в реальной рабочей среде своего сайта, а не в сиротливом окне Standalone-проигрывателя. И чувствуешь себя человеком.
Но как это все воплотить? Очень просто: первое, что нужно сделать, это прочесть офигенную, фундаментальную статью Константинера о том, как правильно использовать инструмент Ant для безболезненной, мультиплатформенной, самоконфигурирующейся и абсолютно корректной сборки проекта: "Разработка Flash-проектов с использованием Apache Ant (доклад на семинаре New Media)". У него в начале статьи есть ссылка на его же замечательную презентацию об Ant: сначала посмотрите ту презентацию. Потом прочтите статью до конца. До конца я сказал. Потом вернетесь сюда.
Признаюсь честно, я в статье той не все понял, да и не нужно все понимать, от этого можно стать всепонимающим. А нам нужно работать и жить с легкостью.
Прочтя статью Кости (уже два раза, ясно вам? *вздымает руки к небу*), я понял и запустил главное, хотя и не самое правильное с точки зрения той статьи: это так называемый билд-файл, который, будучи запущенным из среды Eclipse, делает все то, о чем я так мечтал. Его задача -- помогать мне дебажить и только это (именно в моем случае! Ant может все в других случаях).
Пошаговые инструкции для настройки процесса гуманного дебага (все происходит в среде Eclipse):
<?xml version="1.0"?> <project default="build" basedir="."> <property name="mtasc.path" value="C:\Program Files\Mtasc\mtasc.exe" /> <property name="matsc.args" value='App -version 8 -swf "d:\projects\[PROJECT]\bin\app.swf" -cp "[DISC]:\Documents and Settings\[USERNAME]\Local Settings\Application Data\Macromedia\Flash 8\en\Configuration\Classes" -cp D:\Projects\[PROJECT]\classes -cp D:\Swf\classes' /> <property name="web.browser.path" value="c:\Program Files\Firefox\Firefox.exe" /> <property name="output.html" value="-url http://localhost/[PROJECT]/index.html" /> <!-- property name="flash.player.path" value="c:\Program Files\Macromedia\Flash 8\Players\Debug\SAFlashPlayer.exe" / --> <!-- property name="flashcommand.path" value="'c:\Program Files\FlashCommand\FlashCommand.exe'" / --> <!-- property name="" value="" / --> <target name="build" depends="mtasc.compile, run.html" /> <target name="mtasc.compile"> <exec executable="${mtasc.path}" > <arg line="${matsc.args}" /> </exec> </target> <target name="run.html"> <exec executable="${web.browser.path}" > <arg line="${output.html}" /> </exec> </target> </project>
Теперь можно работать.
Как назначить запуску этого билд-файла шорткат Ctrl+Enter -- объяснять не надо?
Что такое sIFR и как счастливы испольующие его дизайнеры уже не раз написано по-русски. Если коротко -- сИФР позволяет отображать на любом сайте любой шрифт, используя грамотно прописанные флэш-вставки.
Сегодня вышла альфа третьей версии сИФРа, автор приглашает скачать и поучаствовать в тестировании.
так же, как и я до сих пор побаиваюсь их свободного применения в своих проектах, то вот добрые боги завели песочницу для игры с регулярными выражениями.
Песочница получилась славная. Во-первых, она уже содержит стартовое регулярное выражение в первом текстовом поле. Это выражение можно сразу редактировать и на лету получать результат обработки этим выражением строки из второго текстового поля. Этот результат отображается в третьем текстовом поле. Пока выражение правильное, фон второго поля остается зеленым. Если в регулярном выражении обнаружена ошибка (то есть оно ничего не возвращает в результате обработки исходной строки из второго поля) -- фон становится красным, из монитора высовывается рука пожарного и обливает неумелого регулятора холодной водой из брандспойта всеобщего осуждения.
Подсмотреть синтаксис регулярных выражений Flex 2 можно здесь.
Регулярные выражения -- это средство компактной и быстрой обработки строк. Турбонаддув для любого умеющего работать с ними языка. Жить можно и без них, так разве это жизнь?
Update: Constantine в комментариях подкинул еще одну хорошую ссылку на освоитель регулярных выражений: www.regexbuddy.com
А еще что я вам скажу: в Eclipse, так там вообще есть мгновенная подсказка по регуляркам прямо в диалоге Find/Replace [Ctrl+F]: обратите внимание на иконку лампочки, появляющуюся рядом с текстовым полем после простановки галочки "Regular Expression".
Майк Лида провел тесты производительности Actionscript в разных версиях проигрывателя сравнении с Javascript. Результаты интересные. Так, Flash Player 8.5 немного проигрывает в некоторых специфических случаях (например, в сортировке массива), но с просто огромным отрывом делает всех в misc тесте (этот тест надо понимать как смешение нескольких видов функциональности в одном скрипте, так?) Там же есть исходники чтобы скачать и проверить.
Майк Мориарти, один из разработчиков Flex Builder 2, написал, как настроить цвета в редакторе кода Flex Builder 2.
В Адоби лабс прямым текстом утверждается, что нет более быстрого или легкого пути построения насыщенного веб-приложения, чем использование комбинации ColdFusion + Flex 2. Этой связке технологий посвящена специальная страница на сайте лабс: ColdFusion/Flex Connectivity. Там можно скачать дистрибутив ColdFusion/Flex Connectivity Beta, включающий новые ColdFusion Remoting-компоненты и ColdFusion Data Services для использования с Flex 2.
Впрочем, у Инжуна, специалиста по ColdFusion, уже идет обсуждение этой темы.
Клаус Ваулерс, один из гениальнейших флэш-прогрммистов, на пару с Джесси Уорденом (тоже еще тем умником) уже весьма давно и совсем не тайком разрабатывали эмулятор культового когда-то Commodore 64, компьютера, на котором выросло поколение европейских кулхацкеров (я на нем вырасти не успел, мой первый Синклер спаяли харьковские инженеры за чисто символическую плату (как я теперь понимаю %). Работал он тоже чисто симсволически (как я понимал уже тогда %)
Так вот, детище Клауса и Джесси доросло до возраста, когда на нем уже можно запустить первую игру. Идите сюда (без Flash Player 9 не входить):
Первая игра для Commodore 64, работающая на эмуляторе под Flash Player 9.
Чтобы запустит игру, введите команду RUN и жмите [enter].
Управление: Вверх: Keypad-8 Вправо: Keypad-6 Влево: Keypad-4 Вниз: Keypad-2 Огонь: Space
Немного об авторе. До этого Клаус делал SVG-парсер для Flash и свой знаменитый работающий во флэш-проигрывателе модульный XML-браузер DENG, тоже opensource. Задача ДЕНГА в том, чтобы парсить и выводить на экран все, что не могут парсить и выводить современные, но все же консервативные браузеры. То есть: CSS2 и CSS3, подмножества XForms, SVG, XHTML, XFrames, произвольный XML (типа RSS). Примеры ДЕНГ здесь. Корроче говоря, ДЕНГ предназаначен для тех, кому неохота ждать поддержки новейших технологий в браузерах (пока парни из W3C примут стандарт а производители браузеров его реализуют (как всегда, по разному)). А ДЕНГ -- один под все браузеры, работает везде одинаково и хорошо. И весит 79 Кб. Качать ДЕНГ здесь. Клаус, ты безумец.
Я спросил у гугла о преимущестах Ruby а он ответил мне идеей игры, мир кторой содают сами играющие. Как вам это?
Выходные обещают быть солнечными.
Читая посвященнык Ruby посты неутомимого Клишина (часто противоречивые, что только подогревало мой интерес), я все четче видел надвигающуюся беспощадную легкость освоения еще одного языка. Но нужно было, чтобы кто-то взял за ручку, поводил по эрогенным зонам и убедил выбросить из личного времени еще немного мусора, освободив место под динамическую типизацию и работу как отдых.
Мои опасения подтвердились самым наихудшим образом.
loop do read and reply mails write code write document/article/book write code end
Этот куткос кода Руби-приложния взят со страницы "Программисты говорят о Ruby". Там можно узнать кое-какие начальные факты о рубящем языке и решить, надо оно тнбн или пока так можно.. наверняка я не один такой %)
Нырнуть в глуби руби немного резче можно здесь.
Чуть не забыл, что у Фотрошителя есть читатели со скоростью света. Для них приготовлено специальное рубиизвержение в сторону Flex. Там создают магазин. Кто знает лучшие точки входа -- делитесь.
Принимаются заявки на фичи ActionScript 3 IDE.
Вот одним грязным списком некторые из уже предложенных фич:
- поддержка деббагера 8 плеера - рефакторинг - форматирование - нормальный поиск - список вызовов метода - Поддержка JavaDoc’ов - Stricker AS2 Syntaxis checher - автоформатирование, (настраиваемое, как для Java). - MXML Design View - MXML автокомплит - Продвинутый байндинг из MXML view в АС3 (а-ля Matisse в NetBeans, ну или хотя бы дельфи) - Визард для MXML компонента, создающий в обязательном порядке связанный AS3 класс - функционал EnterpriseArchitect касательно ActionScript - Работа с mxmlc- и compc- компиляторами из Flex 2 Framework. - Возможность пост-процессинга скомпилированного приложения; - Опция публикации “добавить номер билда”; - Code collapse - Code insight - Style checker - Code Templates - Сode Dragging - Duplicating items with Alt-Drag (both code/design)
Для кого-то еще секрет, а для когото-то уже нет, что подавляющее большинство страниц инета используют устаревший, неудобный как для разработчика, так и для пользователя метод включения флэш-контента в html-страницу. А SWFObject просто берет и разрубает этот уже заскорузлый гордиев узел, состоящий из определения версии флэш-проигрывателя, обновления его же, убеждения IE в том, что Flash не несет угрозы, передачи флэшу пременных из его окружения, -- в общем, облегчает проникновение флэш-выигрывателя в дальнейшие глуби мировых широт. Читать всем: SWFObject в деталях на русском: от обхода патча к IE до детекции версии и автоустановки плеера.
Проект Юрия Ярового "Flash Lite 2 in Russia" целиком и полностью посвящен теме использования flash-контента на мобильных устройствах. В настоящее время русскоязычной документации по этой теме практически нет. Целью проекта является восполнение этого недостатка -- так говорит о себе сайт.
Полное название статьи -- "определение столкновений в сетке с тайлами и трассировка лучей". Это уже вторая переводная статья от Nox Noctis. В уроке рассмотрена сеточная структура (grid-based system) для карты, состоящей из тайлов (tiles) -- грубо говоря, тайлы -- это плитка (или мозаика), которой выложен двумерный план игры (Нокс, поправь, если я ошибся). В уроке реализуется широкая фаза определения столкновений — когда нужно найти все объекты, проверяемые на столкновения в узкой фазе алгоритма. Узкая фаза описана в ранее преведенной Ноксом статье о базовых алгоритмах определения столкновений.
Обе статьи -- от авторов легендарной игры N.
Начиная с этой новости, проверка орфографии в сообщениях Ф. Потрошителя отключается. Фремя дороже.
На сайте cflex.net флексеры обмениваются опытом, получают работу и примеры флекс-приложений, подсказки для начинающих и ответы на популярные вопросы. А зарегистрировавшись, можно добавлять на сайт сообщества свой контент.
Из официального пресс-релиза:
Всего на конкурс было прислано более 200 работ, 107 из них прошли отбор и были опубликованы на сайте.
Работы занявшие первые места вы можете увидеть на официальном сайте конкурса www.flashawards.ru в разделе победители, ниже представлен шорт-лист.
Номинация Art:
Номинация Мультипликация:
Номинация 3D:
Номинация Коммерция:
Номинация Техническая заслуга:
Номинация Игра:
Номинация Анимация:
Номинация Видео:
Номинация Озвучивание:
Сергей Дифлюкс: «Я рад, что теперь есть сайт, который собрал в себе лучшие Flash-проекты России. Мы показали, что Россия и близлежащие страны постсоветского пространства умеют делать flash-сайты не хуже «буржуев».
Опубликованные работы показывают отличный уровень, и служат примером для молодых flash’еров».
JBoss Mail Client построен на Flex 2.
Во Flex их существует два вида: mxml и actionscript компоненты. Второй вид хорошо знаком флэш-программистам, -- но зачем нужен первый? Хотя бы потому, что создавать mxml-компоненты в разы легче. А сама целесообразность их создания возникает, как правило, когда разрабатываемый компонент расширяет возможности уже существующих компонентов, и как правило визуальных.
Постановка задачи -- классическая: сделать текстовое поле для ввода, содержащее пригласительный текст, при клике по которому текст-приглашение автоматически выделялся бы для удобства пользователя, чтобы можно было сразу начинать ввод текста требуемого.
Для достижения требуемого эффекта я решил создать компонент TextInputAutoSelected, расширяющий стандартный flex-компонент TextInput путем добавления к нему обработчика события focusIn. Функция-обработчик при этом вписана в исходный код самого компонента и занимается выделением текста в поле ввода:
TextInputAutoSelected
TextInput
focusIn
<?xml version="1.0"?> <!-- TextInputAutoSelected.mxml --> <mx:TextInput text="Enter text here" focusIn="handleFocusIn(event);" xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Script> <![CDATA[ private function handleFocusIn(event:Event):void { var ti:TextInputAutoSelected=TextInputAutoSelected(event.currentTarget); ti.setSelection(0,ti.text.length); } ]]> </mx:Script> </mx:TextInput>
Вот пример его использования:
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:component="components.*"> <component:TextInputAutoSelected /> <component:TextInputAutoSelected text="Or here" /> </mx:Application>
Как mxml, так и actionscript-компоненты определяют новые классы. И в том, и в другом случае имя класса совпадает с именем файла компонента. Почти все, что можно сделать в as, можно сделать и в mxml, а простые компоненты лучше в нем и делать. Есть специальная страница официальной документации, которая поможет решить, какой именно метод выбрать: принятие решения о создании компонента в MXML или в ActionScript.
Установив Flex Builder 2 дома, на старенький PIII 700 MHz с 320 Мб памяти, я ни на что особо не надеялся -- в лучшем случае, рассчитывал почитать документацию с удобными средствами поиска от платформы Eclipse. Но был приятно удивлен открывшейся производительностью, увеличивающейся с каждой минутой работы: не только каждая новая компиляция приложения (довольно простого, следует признать) занимала все меньше и меньше времени. Но и поиск по документации, выпадение хинтов кода, скорость отзыва как всего редактора кода, так и режима Design View -- вся производительность Flex Builder 2 IDE приблизилась к производительности моей студийной машины (3000 MHz, 2Gb RAM). Через некоторое время я вообще почти перестал замечать эту разницу. Фактически, я сейчас пользуюсь последним шансом свое открытие записать, пока я ее еще эту исчезающую разницу чувствую Ж-)
Отследить развитие Вавилона земной цивилизации теперь можно здесь, на Гугле.
Возник чисто рабочий вопрос -- какоe из решений Flash Remoting под .NET вы считаете лучшим? Если можно -- почему?
Разработчики могут использовать пространство имен mx_internal, чтобы добраться до textField и большинства других субкомпонентов, -- пишут на Адоби Лабз, -- и учтите, что это не описано в API, а значит, может измениться. Используйте пространство имен mx_internal на свой страх и риск так:
mx_internal
textField
import mx.core.mx_internal; use namespace mx_internal;
Похоже, теперь мы будем видеть его все чаще: Шо Кувамото, руководитель разработки Flex Builder 2, показывает, как создать Flex-приложение за 15 минут.
Добавлено: обнаружилось еще с полдюжины полезных видео, демонстрирующих работу с дата-сервисами, использование AJAX и оптимизацию программирования (два видео от одной дамы) во Flex.
Давид Цукерман -- один из разработчиков Flex Builder 2. Его побочный проект, Alpha Plugin, предназанчен для быстрого исправления ошибок в исходном коде ActionScript 3 (обещает сделать для MXML) при работе во Flex Builder 2. В основной релиз он не вошел.
Функции: автокомплит упущенных переменных и возвращаемых функциями значений; автосоздание переменных как для методов, так и для класса; автодобавление и автоудаление import'ов; выравнивание кривых модификаторов доступа. Кроме того -- подсветка всеx проблем компилятора. Подробности со скриншотами: "Alpha Plugin for Flex Builder 2 Beta 3"
import
P.S. А ведь такой функционал надо включать в среду разработки по умолчанию. P.P.S. Чорт, а ведь constantiner об этом уже писал %)
Мы живем в страшное время: сайт Ф. Потрошителя раздираем внутренними противоречиями: так, в то время, пока в комментариях к одной записи нормальные пацаны жалуются, что "да отстойный это форум, тут даже ссылки на ломаную Flash MX 2004 нету!", то в комментариях к другой записи ненормальные будут жаловаться на глюки бесплатного Flex 2.0 Framework и совсем уж офигевшего девятого флэш-проигрывателя, качая и то, и другое и все остальное вполне официально: вот Flash Player 9, вот Flex SDK 2.0 (включающий Flex Framework с его бесплатным компилятором), а вот все остальное.
Флекс попал на обложку журнала JDJ ("The world's leading Java resource", "#1 i-Technology magazine in the world" -- вот те скромные эпитеты, которыми этот журнал себя наделяет), а флэш -- в телевизор: ABC, один из крупнейших поставщиков видеопотока, выбрал флэш-видео, причем флэш используется не только как проигрыватель, но и как продвинутая переключалка каналов.
F2B3 должен выйти в мае, а вот справка к нему уже выложена в сеть: вот Flex 2.0 beta 3 - ActionScript 3 Language Reference, вот вся документация к Flex 2.0 Beta 3. Над этой версией хорошо поработали!
Клаус Ваулерс решил озадачить flash player 8.5 чем-нибудь реальным и в результате провел загрузку и отображение 3-мегабайтного файла карты мира в бинарном формате VPF (Vector Product Format). Поскольку fp8.5 умеет работать с бинарными данными напрямую через методы класса flash.util.ByteArray, а сами данные можно загружать потоково методами класса flash.net.URLStream, то Клаус провел загрузку, десериализацию бинарных данных в массивы и рендеринг потоково -- по мере загрузки этих данных.
flash.util.ByteArray
flash.net.URLStream
Flash Player 9 рендерит 3-мегабайтную карту за 5 секунд (в комментариях выяснилось, что в несколько раз быстрее), отрисовывая при этом 250 000 линий. При быстром соединении.
В ActionScript 3 появилось событие stage.onMouseLeave. Это означает, что теперь можно забыть о тех темных временах, когда флэш-кодеры путем уловок и ухищрений заставляли flash player определять момент выхода мышки за флэшку.
stage.onMouseLeave
Теперь можно писать так (prof, спасибо за поправки!):
package { import flash.display.Sprite; import flash.display.Stage; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.text.TextField; import flash.events.Event; public class stageOnMouseLeave extends Sprite /*MovieClip*/{ private var textTest:TextField; private var intCount:int=0; public function stageOnMouseLeave(){ stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; stage.showDefaultContextMenu=false; stage.addEventListener(Event.MOUSE_LEAVE, onStageLeave); textTest = new TextField(); addChild(textTest); textTest.text = "Не покидай меня!"; } public function onStageLeave(event:Event):void{ textTest.text = "Ты бросил меня\n"+ ++intCount + " раз."; } } }
Это работающий пример, его можно компилировать из консоли (т.е. просто написав: mxmlc stageOnMouseLeave.as. Вы ведь уже добавили путь к mxmlc, компилятору actionscript3 в переменную окружения patn, как было описано в компиляции flex-приложений из командной строки.)
mxmlc stageOnMouseLeave.as
patn
Результат:
Одна из опаснейших сторон выходящего уже совсем скоро flex 2 -- это бесплатный двуголовый command-line компилятор для as3 / mxml, который Adobe обещает выпустить, (а на самом деле уже выпустила) в составе flex framework 2 для flex sdk 2.0 (15 Mb). Совсем скоро любой желающий сможет создавать flex-приложения, не потратив ни цента на покупку среды разработки. На самом деле, любой желающий уже может начать это делать, хотя и несколько обходным путем. Для этого достаточно скачать бета-версию flex builder 2.0 и использовать ее встроенный компилятор, он пока ближе к завершению. Во flex framework 2 войдет он же, пройдя обработку напильником наблюдаемых нами уже давно альфа- и бета- версий.
Из двух голов нового компилятора "главной" является голова "mxmlc", предназначенная для сборки рабочих приложений (написанных как на as3, так и на mxml), а вторая голова, "compc", изрыгает на свет компоненты (и swc-файлы вообще). В этом компиляторе реализована так называемая пошаговая компиляция (incremental compilation). Она уменьшает время сборки flex-приложений при использовании опции командной строки --incremental=true компилятора mxmlc. Обычно, когда последний собирает приложение, то генерируется достаточно много данных, одинаковых для каждой компиляции. А пошаговая компиляция позволяет разработчику указать, какую именно часть приложения нужно подвергнуть перекомпиляции. Остальное кэшируется в файле с именем "названиеПроекта_число.cache" и тем самым экономится время сборки. Кэш-файл хранится рядом с исходниками, так что при малейшем подозрении о закэшированности ошибки можно быстро удалить весь кэш. Эффективность этой опции прямо пропорциональна исходному времени компиляции проекта: на простейшем проекте выигрыш составляет приблизительно секунду из трех, на больших приложениях время компиляции уменьшалось с 40 секунд до почти 20 (пишет Даниэль). Его статья "компилируем легко с mxmlс!" должна помочь всем флэшерам-макоманам (звучит ;). Вот -- пример для пользователей Windows:
--incremental=true
Можно уже сейчас компилировать с помощью flex framework 2. Для этого достаточно распаковать flex sdk (15 Mb) в каталог "d:/swf/flex/sdk/". После этого в командной строке ввести:
"D:/swf/flex/sdk 2.0/bin/mxmlc.exe" MyApplication.as
И подождать от двух и более секунд, пока скомпилируется проект. Можно скачать простейший пример компиляции с помощью mxmlc, состоящий из одного as-файла и двух .bat-файлов (один компилирует, второй выводит справку по опциям компилятора, оба сохраняют результаты в текстовых логах там же)
"C:/Program Files/Adobe/Flex Builder 2 Beta 2/Flex Framework 2/bin/mxmlc.exe" ThankYou.mxml
Для удобства дальнейшего использования стоит занести путь к каталогу flex в переменную окружения path.
О компиляторах командной строки asctionscript 3 и mxml в Ливдоках. Их опции тоже подробно описаны: mxmlc, compc.
Николя Канасье выпустил первую предрелизную версию своего детища haXe 1.0.
Необходимость появления haXe Николя объясняет так: флэш-кодеры заслужили право иметь под рукой один универсальный (желательно простой -- добавляю я) язык программирования. Чтобы можно было создавать сайты, включающие в себя функциональность Flash, Javascript / AJAX и все серверные функции (и работу с базами данных), используя при этом только один язык. Для flash-разработчиков отдельно сообщается, что as-синтаксис сохранен полностью (во введении в haXe для флэшэров прямым текстом сказано, что в качестве документации следует использовать Ливдоки) и обещана поддержка flash player 8.5 в скором времени.
В этот релиз haXe вошли следующие новинки: - поддержка регулярных выражений - серверные сокеты - haXe-сериализация - haXe-remoting - система шаблонов haXe - новая кроссплатформенная поддержка xml и что-то еще.
Кстати, соотечествееник Николя Канасье, Мишель Монтень, пишет в своих "Опытах" (том 1) о том, с какой осторожностью нужно вводить все новое: так, он приводит пример, как в некоей стране любой, кто предлагал новый закон, должен был выйти и публично огласить суть своего нововведения на площади. Если нововведение признавалось бесполезным, оратор был казнен тотчас же на месте. Надеюсь, Канасье читал Монтеня..
Добрый чел не пожалел времени, нашел и выложил ссылки на презентации прошедшего недавно в Торонто фестиваля Flash in The Can. Коротко о темах: ActionScript 3 (Darron Schall), 3D-движок с помощью flash 8 API (Paul Ortchanian), введение во Flex 2.0 (Chafic Kazoun), объезжаем растр (Keith Peters).
Не миновало и двух поколений флэш, как Brainbench открыл бесплатное тестирование по Flash MX 2004.
Они говорят: наш тест по Flash MX 2004 измеряет ваше знание разработки графических презентаций с использованием Flash MX. Рассчитанный на серьезных разработчиков, этот тест покрывает следующие темы: ActionScript 2.0, создание графики, интерфейс Flash, публикация, звук и видео, символы и библиотека, трансформационная анимация.
Даже не знаю, что сказать. Хотя, дареному коню и синица в руке ;)
Совсем древнее: 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