Flex и RIA блоги



2009-02-26

17:51:30, Flash-ripper.com
Пожалуйста, подтвердите свое участие во встрече UFUG в Харькове 28 февраля

Около часа назад все зарегистрировавшиеся на встречу UFUG в Харькове 28 февраля в Харькове получили от Валерии Маллаевой письмо, которое она отправила каждому лично через систему сообщений сайта Adobe Groups.

На почту вам должно прийти оповещение, и, скорее всего, текст в нем нечитаем из-за кодировки. Это проблема сервиса отправки оповещений, и в данный момент мы общаемся с разработчиками для ее устранения (система новая, баги есть, но есть и сильные стороны — мы упомянем их на встрече).

А сейчас вы можете прочесть сообщение Валерии, кликнув по первой ссылке в пришедшем вам письме. Там вы найдете полезную информацию о встрече, проживании и т.п.

Важно: подтвердите участие во встрече как можно скорее, очень желательно до 10 утра завтрашнего дня (27 февраля, пятница). Напишите также Валерии свои имя и фамилию, так как нам нужно составить список для проходной института ФТИНТ, в помещении которого будет проходить встреча. При себе нужно иметь документ с похожим ФИО.

Итак, пожалуйста, напишите Валерии на гуглопочту mallayeva письмо с темой "UAFPUG - я буду", а в тело письма включите ваши имя и фамилию.

Кстати, почему бы не добавить их в свой профиль на Adobe Groups?

Если же вы еще и вовсе не зарегистрировались на встречу, то пока можно это сделать, просто оставьте комментарий на странице встречи и сразу же напишите Валерии письмо с подтверждением участия, именем, фамилией. А если вы по какой-то причине не можете зайти на сайт — все равно напишите Валерии, этого будет достаточно.

Кстати, Алексей Гончаренко опубликовал краткий отчет о встрече RAFPUG в Москве 8 февраля.


13:46:29, Flash-ripper.com
Как обеспечить офф-лайновую работу веб-приложения?

Иными словами, как хранить данные веб-приложения локально? Если вы делаете Flash / Flex / AIR, то вопросов здесь нет. Особенно, если использовать CRUD-БД bzoo, позволяющую организовать целую локальную базу данных для Flash.

А если вы делаете большое приложение на JavaScript? Может быть, можно как-то приспособить флэш для хранения этих данных? А если у клиента нет Flash или он отключен из-за рекламы, но браузер поддерживает свое собственное хранилище (которое у всех браузеров свое, лучшее и неповторимое)?

Очевидно, такие размышления привели автора библиотеки PersistJS Пола Дункана к ее созданию. Он решил использовать все возможности сразу: Persist-JS сама выбирает оптимальный вид хранилища, а вам, как пользолвателю ее API, об этом знать не обязательно. Но если нужно, вы можете вмешаться и, например, запретить использование определенных видов хранилищ.

Так, сейчас она умеет хранить данные локально, используя одну из этих возможностей:

  • flash: Flash 8 persistent storage.
  • gears: Google Gears-based persistent storage.
  • localstorage: HTML5 draft storage.
  • whatwg_db: HTML5 draft database storage.
  • globalstorage: HTML5 draft storage (old spec).
  • ie: Internet Explorer userdata behaviors.
  • cookie: Cookie-based persistent storage.

Но, может быть, PersistJS — не лучшее решение? Сегодня буду ее испытывать, а о результатах доложу. А вам — приходилось решать такие задачи?


13:46:29, Flash-ripper.com
Как обеспечить офф-лайновую работу веб-приложения?

Иными словами, как хранить данные веб-приложения локально? Если вы делаете Flash / Flex / AIR, то вопросов здесь нет. Особенно, если использовать CRUD-БД bzoo, позволяющую организовать целую локальную базу данных для Flash.

А если вы делаете большое приложение на JavaScript? Может быть, можно как-то приспособить флэш для хранения этих данных? А если у клиента нет Flash или он отключен из-за рекламы, но браузер поддерживает свое собственное хранилище (которое у всех браузеров свое, лучшее и неповторимое)?

Очевидно, такие размышления привели автора библиотеки PersistJS Пола Дункана к ее созданию. Он решил использовать все возможности сразу: Persist-JS сама выбирает оптимальный вид хранилища, а вам, как пользолвателю ее API, об этом знать не обязательно. Но если нужно, вы можете вмешаться и, например, запретить использование определенных видов хранилищ.

Так, сейчас она умеет хранить данные локально, используя одну из этих возможностей:

  • flash: Flash 8 persistent storage.
  • gears: Google Gears-based persistent storage.
  • localstorage: HTML5 draft storage.
  • whatwg_db: HTML5 draft database storage.
  • globalstorage: HTML5 draft storage (old spec).
  • ie: Internet Explorer userdata behaviors.
  • cookie: Cookie-based persistent storage.

Но, может быть, PersistJS — не лучшее решение? Сегодня буду ее испытывать, а о результатах доложу. А вам — приходилось решать такие задачи?


2009-02-25

22:12:00, Flash-разработка
В цинковом гробу. Перетаскиваемые окошки
Волею судеб, свалился мне проект такой. Есть несколько флэшек, так называемых виджетов, которые нужно одеть в Zinc так, чтобы еще и под Mac OSX работали.

Во-первых, сразу зарекаюсь - Мак только для мак-девелоперов. Без меня. Такого количества проблем я уже давно не встречал. Возможно, основным виновником их является Zinc, который я смело могу назвать УСЛОВНО кросс-платформенным.

Что сказать про Zinc 3.0? Под красивым брендовым дизайном, симпатичной оболочкой, красивыми заголовками скрывается довольно ограниченный функционал, убогая документация и море непонятностей, глюков и граблей.

В данном посте, приведу один пример, как простая задача решается через "заднее место".
Нужно, чтобы окошко нашего виджета перетаскивалось мышкой за специальную панельку. В документации, нам рассказывают про это так: Creating a Draggable Form. И что мы получаем? Да полный отстой. Мышь теряет окошко, потом, при наведении вдруг опять подхватывается, уже без нашего на то соизволения, в общем, ужас. Как это победить? Нужно повесить 3 обработчика мыши на панельку и сделать это вот как:

dragNDropRenderer.buttonMode = true; dragNDropRenderer.useHandCursor = true;
dragNDropRenderer.addEventListener(MouseEvent.ROLL_OVER, rollOverHandler);
dragNDropRenderer.addEventListener(MouseEvent.ROLL_OUT, rollOutHandler);
dragNDropRenderer.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);

. . .

private function rollOverHandler(event:MouseEvent):void {
mdm.Forms.getFormByName("MainForm").startDrag();
}

private function rollOutHandler(event:MouseEvent):void {
if (!event.buttonDown) {
mdm.Forms.getFormByName("MainForm").stopDrag();
}
}

private function mouseUpHandler(event:MouseEvent):void {
var renderer:DisplayObject = DisplayObject(event.target);
if (!renderer.getBounds(renderer).contains(event.localX,event.localY))
mdm.Forms.getFormByName("MainForm").stopDrag();
}

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

Другие баги - почему под MacOX криво работает LocalConnection, или не открываются Zinc-ом новые окошки, и не распарсивается полученный с сервера XML, мне еще предстоит выяснить. Чувствую, это будут "приятные" сюрпризы.

* * *

В обработчик отпускания мыши добавлена проверка на отсутствие мыши в области панели.

22:12:00, Flash-разработка
В цинковом гробу. Перетаскиваемые окошки
Волею судеб, свалился мне проект такой. Есть несколько флэшек, так называемых виджетов, которые нужно одеть в Zinc так, чтобы еще и под Mac OSX работали.

Во-первых, сразу зарекаюсь - Мак только для мак-девелоперов. Без меня. Такого количества проблем я уже давно не встречал. Возможно, основным виновником их является Zinc, который я смело могу назвать УСЛОВНО кросс-платформенным.

Что сказать про Zinc 3.0? Под красивым брендовым дизайном, симпатичной оболочкой, красивыми заголовками скрывается довольно ограниченный функционал, убогая документация и море непонятностей, глюков и граблей.

В данном посте, приведу один пример, как простая задача решается через "заднее место".
Нужно, чтобы окошко нашего виджета перетаскивалось мышкой за специальную панельку. В документации, нам рассказывают про это так: Creating a Draggable Form. И что мы получаем? Да полный отстой. Мышь теряет окошко, потом, при наведении вдруг опять подхватывается, уже без нашего на то соизволения, в общем, ужас. Как это победить? Нужно повесить 3 обработчика мыши на панельку и сделать это вот как:

dragNDropRenderer.buttonMode = true; dragNDropRenderer.useHandCursor = true;
dragNDropRenderer.addEventListener(MouseEvent.ROLL_OVER, rollOverHandler);
dragNDropRenderer.addEventListener(MouseEvent.ROLL_OUT, rollOutHandler);
dragNDropRenderer.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);

. . .

private function rollOverHandler(event:MouseEvent):void {
mdm.Forms.getFormByName("MainForm").startDrag();
}

private function rollOutHandler(event:MouseEvent):void {
if (!event.buttonDown) {
mdm.Forms.getFormByName("MainForm").stopDrag();
}
}

private function mouseUpHandler(event:MouseEvent):void {
var renderer:DisplayObject = DisplayObject(event.target);
if (!renderer.getBounds(renderer).contains(event.localX,event.localY))
mdm.Forms.getFormByName("MainForm").stopDrag();
}

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

Другие баги - почему под MacOX криво работает LocalConnection, или не открываются Zinc-ом новые окошки, и не распарсивается полученный с сервера XML, мне еще предстоит выяснить. Чувствую, это будут "приятные" сюрпризы.

* * *

В обработчик отпускания мыши добавлена проверка на отсутствие мыши в области панели.

* * *

Продолаются жалобы. Под MACOX не удалось (под Windows всё Ок) передать на сервер запрос с GET-параметрами (URLRequest). Запрос проходит, параметры не передаются. Не имел возможности выяснить, виновен ли в этом Zinc или админы сервера. В итоге, стали передавать параметры через POST, что сразу дало положительный результат.

* * *

Прозрачность. Плашка прозрачностью 1% ложится поверх поверхности со сложным изображением сложной прозрачности. Окно приложения устанавливается прозрачным. И что вы думаете? Эта плашка видна. Она как бы добавляет прозрачности подлежащему изображению. То же самое можно сказать, если поверх ложится растр с прозрачностью. Прозрачная область растра становится видна.
Выход - не допускать "недопрозрачностей", обтравливать растр во флэше.

* * *

Всё. Финиш. Zinc и MacOX - больше несовместимые понятия. Делаю полноэкранное приложение. В окне приложения, справа, где-то на 1/4 ширины, существует "мертвая" зона, в которой мышь перестает оказывать воздействие на интерактивные flash-элементы. Нет, нельзя сказать что совсем не оказывает. После 5-10 нажатий, кнопка срабатывает. Но это же бред. Элементраный пример - делаем во flash плашку размером с экран (1280x800), вставляем SWF в гроб, билдим и наблюдаем эту границу. Кошмар. Под Windows и под MacOX в Safari работает превосходно.
Сделать многооконное приложение с Zinc также не получилось - опять же проблемы с мышью. Интерактив не откликается.



15:23:14, Flash-ripper.com
BAFPUG March 2009

15 Марта в IBB Минск состоится тематическая встреча Belarusian Adobe Flash Platform User Group посвященная Flex фреймворкам.

На встрече прозвучат следующие доклады:

“PureMVC от теории к практике” - Валентин Железный
“Cairngorm в теории и на практике” - Юрий Жлоба
“Рассказ о Mate” - Зыков Евгений
“Flest Framework for Adobe Flex and ActionScript3 Applications” - Cергей Гончар

Начало мероприятия в 14.00 Всем желающим просьба зарегистрироваться на сайте группы.


15:23:14, Flash-ripper.com
BAFPUG March 2009

15 марта в IBB Минск состоится тематическая встреча Belarusian Adobe Flash Platform User Group, посвященная Flex фреймворкам. На встрече прозвучат следующие доклады:

  • “PureMVC от теории к практике” - Валентин Железный
  • “Cairngorm в теории и на практике” - Юрий Жлоба
  • “Рассказ о Mate” - Зыков Евгений
  • “Flest Framework for Adobe Flex and ActionScript3 Applications” - Cергей Гончар

Начало мероприятия в 14.00. Желающих просим зарегистрироваться на сайте группы.


15:09:18, Flash-ripper.com
Потерял работу? Получи Flex Buider 3

Вдобавок к бесплатному Flex Builder 3 Professional для студентов и работников образования (и здесь), теперь Flex Buider можно получить также, если вы потеряли работу. Для этого достаточно связаться с одним из трех людей, которых некоторые из нас уже знают: Михай, Том, Серж. За новость спасибо Андрею Панасу.

А в эту субботу, 28 февраля, на встрече UFUG в Харькове кто-то написавших во Flex Cookbook получит Flex Buider 3 Professional, а кто-то — Adobe CS4. Немного попозже напишу об этом подробнее.


15:09:18, Flash-ripper.com
Потерял работу? Получи Flex Buider 3

Вдобавок к бесплатному Flex Builder 3 Professional для студентов и работников образования (и здесь), теперь Flex Buider можно получить также, если вы потеряли работу. Для этого достаточно связаться с одним из трех людей, которых некоторые из нас уже знают: Михай, Том, Серж. За новость спасибо Андрею Панасу.

А в эту субботу, 28 февраля, на встрече UFUG в Харькове кто-то из написавших во Flex Cookbook получит Flex Buider 3 Professional, а кто-то — Adobe CS4. Немного попозже напишу об этом подробнее.


13:35:18, Flash-ripper.com
Вышел Adobe AIR 1.5.1 с новой полезной функцией

Вышло обновление Adobe AIR 1.5.1. Кроме многочисленных исправлений ошибок, этот релиз включает также новую возможность, которую в своем блоге описывает Оливер Голдман, один из разработчиков этой платформы.

Теперь приложение имеет возможность определить, каким образом оно было запущено: обычным образом или в процессе автозапуска. Это можно определить из свойства события InvokeEvent.reason, которое может иметь два значения: "standard" и "login". Определив значение свойства, разработчик приложения может адаптировать его поведение соотвествующим образом, например, не показывать окно приложения при автозапуске, а просто поместить иконку приложения в трей, что является весьма популярной практикой.

Чтобы ваше приложение могло воспользоваться этой функциональнстью, нужно обновить версию в файле дескриптора:

xmlns="http://ns.adobe.com/air/application/1.5.1"

Доступен для скачивания обновленный Adobe AIR SDK и инструкция по его применению к существующей конфигурации Flex SDK, а также примечания к Adobe AIR 1.5.1.


13:35:18, Flash-ripper.com
Вышел Adobe AIR 1.5.1 с новой полезной функцией

Вышло обновление Adobe AIR 1.5.1. Кроме многочисленных исправлений ошибок, этот релиз включает также новую возможность, которую в своем блоге описывает Оливер Голдман, один из разработчиков этой платформы.

Теперь приложение имеет возможность определить, каким образом оно было запущено: обычным образом или в процессе автозапуска. Это можно определить из свойства события InvokeEvent.reason, которое может иметь два значения: "standard" и "login". Определив значение свойства, разработчик приложения может адаптировать его поведение соотвествующим образом, например, не показывать окно приложения при автозапуске, а просто поместить иконку приложения в трей, что является весьма популярной практикой.

Чтобы ваше приложение могло воспользоваться этой функциональнстью, нужно обновить версию в файле дескриптора:

xmlns="http://ns.adobe.com/air/application/1.5.1"

Доступен для скачивания обновленный Adobe AIR SDK и инструкция по его применению к существующей конфигурации Flex SDK, а также примечания к Adobe AIR 1.5.1.


2009-02-24

10:36:51, Flash-ripper.com
Подсказки по отладке Javasript-кода в Firebug

В лучшем когда-либо созданном отладчике JavaScript-кода Firebug есть несколько полезных функций, которые я постоянно использую и думаю, что они пригодятся многим, имеющим дело с отладкой кода в браузере:

  • Программная вставка точки останова (breakpoint). Чтобы вызвать отладчик Firebug в любом месте вашего JavaScript-кода, нужно вставить в код строку "debugger;" (скобки не нужны).
  • Вызов отладчика при возникновении ошибок. В Firebug, на вкладке "Script" в правой части ее панели инструментов находится кнопка "Options", а в ней — опция "Break on All errors". Установите ее и каждый раз при возникновении ошибки в вашем коде будет автоматическим запускаться отладчик с фокусом на строке, вызвавшей ошибку. А если побродить по сети, не отключая эту опцию, можно неслабо прозреть.
  • Условные точки останова. Кликнув правой мышей по колонке с номерами строк, вы получите диалог для ввода условного выражения. Код будет остановлен в этом месте, если результат выражения будет равен true. В тему: отличная статья "Правдивость в JavaScript".
  • Переход на строку с номером N. Для этого достаточно ввести в строку поиска сочетание символов #N, где N — номер нужной строки.

Просьба к тем, кто это все уже знает: не бросайте в меня ботинком.
А какие полезности Firebug любите вы?


10:36:51, Flash-ripper.com
Подсказки по отладке Javasript-кода в Firebug

В лучшем когда-либо созданном отладчике JavaScript-кода Firebug есть несколько полезных функций, которые я постоянно использую и думаю, что они пригодятся многим, имеющим дело с отладкой кода в браузере:

  • Программная вставка точки останова (breakpoint). Чтобы вызвать отладчик Firebug в любом месте вашего JavaScript-кода, нужно вставить в код строку "debugger;" (скобки не нужны).
  • Вызов отладчика при возникновении ошибок. В Firebug, на вкладке "Script" в правой части ее панели инструментов находится кнопка "Options", а в ней — опция "Break on All errors". Установите ее и каждый раз при возникновении ошибки в вашем коде будет автоматическим запускаться отладчик с фокусом на строке, вызвавшей ошибку. А если побродить по сети, не отключая эту опцию, можно неслабо прозреть.
  • Условные точки останова. Кликнув правой мышей по колонке с номерами строк, вы получите диалог для ввода условного выражения. Код будет остановлен в этом месте, если результат выражения будет равен true. В тему: отличная статья "Правдивость в JavaScript".
  • Переход на строку с номером N. Для этого достаточно ввести в строку поиска сочетание символов #N, где N — номер нужной строки.

Просьба к тем, кто это все уже знает: не бросайте в меня ботинком.
А какие полезности Firebug любите вы?


09:54:27, Flash-ripper.com
Raven: бесплатный онлайновый векторный редактор от Aviary

Raven — free online vector editor by Aviary. Aviary, ранее выпустившие онлайновые графический редактор Aviary Phoenix и генератор паттернов Aviary Peacock, выпустили онлайновый векторный редактор Raven.

Если вам нужно сделать логотип, векторный клип-арт, дизайн футблоки — он справится. Демки и скринкаст можно увидеть в блоге Aviary.

Примеры готовых работ — в галерее векторного редактора Raven.


09:54:27, Flash-ripper.com
Raven: бесплатный онлайновый векторный редактор от Aviary

Raven — free online vector editor by Aviary. Aviary, ранее выпустившие онлайновые графический редактор Aviary Phoenix и генератор паттернов Aviary Peacock, выпустили онлайновый векторный редактор Raven.

Если вам нужно сделать логотип, векторный клип-арт, дизайн футблоки — он справится. Демки и скринкаст можно увидеть в блоге Aviary.

Примеры готовых работ — в галерее векторного редактора Raven.


2009-02-23

17:06:06, 33 коровы
Закрываем И запускаем AIR-debugger с помощью Eclipse Monkey

Про апгрейченый скрипт запуска AIR дебагера:

/* * Menu: Kill adl an run debug * Key: M3+d * Kudos: Ilja Panin http://the33cows.com * DOM: http://download.eclipse.org/technology/dash/update/org.eclipse.eclipsemonkey.lang.javascript */ var workspace = Packages.org.eclipse.core.resources.ResourcesPlugin.getWorkspace(); var configToRunName = "[YOU_DEBUG_CONFIGURATION_NAME]"; function main() { Packages.java.lang.Runtime.getRuntime().exec("tskill.exe adl"); loadBundle("org.eclipse.debug.ui"); var ProgressMonitorDialog = Packages.org.eclipse.jface.dialogs.ProgressMonitorDialog; var IRunnableWithProgress = Packages.org.eclipse.jface.operation.IRunnableWithProgress; var runnableWithProgress = new IRunnableWithProgress({run: runfun}); var monitorDialog = new ProgressMonitorDialog(window.getShell()).run(true, true, runnableWithProgress);; } function runfun(monitorDialog) { monitorDialog.beginTask("Run debbuger ...", 1); var plugin = Packages.org.eclipse.debug.core.DebugPlugin; var launchManager = plugin.getDefault().getLaunchManager(); configurations = launchManager.getLaunchConfigurations(); var conf; for (var i in configurations) { if (configurations[i].getName() == configToRunName ) { conf = configurations[i]; } } if (conf) { var launch = Packages.org.eclipse.debug.ui.DebugUITools.buildAndLaunch(conf, "debug", monitorDialog); } else { debug("project not found!"); } monitorDialog.done() } function debug(s) { out.println(s); }

Правила применения:
1.заменяем строку [YOU_DEBUG_CONFIGURATION_NAME] на имя конфигурации запуска приложения. Это имя можно найти в меню “Run -> Open Debug Dialog…”
2. заменяем сочетание M3+d на свое (M3 это alt). Для меня alt+d ближе чем F11 :)

При выполнении скрипт, убивается процесс AIR дебагера и запускает процесс сборки и новый дебагер.


12:54:17, Flash-ripper.com
Мультиматограф

Ежегодный некоммерческий фестиваль компьютерного анимационного и видео-творчества «Мультиматограф».
Прием работ продолжается до 14 марта.
Все подробности на сайте www.multimatograf.ru

читать далее


12:54:17, Flash-ripper.com
Мультиматограф

Ежегодный некоммерческий фестиваль компьютерного анимационного и видео-творчества «Мультиматограф».
Прием работ продолжается до 14 марта.
Все подробности на сайте www.multimatograf.ru

читать далее


12:54:17, Flash-ripper.com
Мультиматограф

Ежегодный некоммерческий фестиваль компьютерного анимационного и видео-творчества «Мультиматограф».
Прием работ продолжается до 14 марта.
Все подробности на сайте www.multimatograf.ru

читать далее


12:23:02, Flash-ripper.com
Примите мои поздравления

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

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

Это легко услышать в оригинальном видео: прослушайте моменты 00:40 и 01:10 ок


12:23:02, Flash-ripper.com
Примите мои поздравления

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

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

Это легко услышать в оригинальном видео: прослушайте моменты 00:40 и 01:10 ок


12:23:02, Flash-ripper.com
Примите мои поздравления

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

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

Это легко услышать в оригинальном видео: прослушайте моменты 00:40 и 01:10 ок


10:54:19, Flash-ripper.com
Звонки из Flash в Skype - реальность

Проект flaphone уже позволял раньше звонить из flash по протоколу SIP на другие SIP-клиенты или в вообще на обычные телефонные номера с использованием провайдеров SIP-телефонии, теперь к этому добавилась возможность звонить из flaphone в Skype, причем с отличным качеством звука. Для того, чтобы позвонить пользователю skype нужно выбрать SIP-аккаунт "none(global)" в выпадающем списке наверху софтфона, а потом ввести номер в формате sip:skypeusername@skype - и нажать кнопку вызова, тот кому вы звоните увидит входящий звонок. Пока вся система находится на стадии бета-тестирования, поэтому любой фидбэк будет очень полезен.


10:54:19, Flash-ripper.com
Звонки из Flash в Skype - реальность

Проект flaphone уже позволял раньше звонить из flash по протоколу SIP на другие SIP-клиенты или в вообще на обычные телефонные номера с использованием провайдеров SIP-телефонии, теперь к этому добавилась возможность звонить из flaphone в Skype, причем с отличным качеством звука. Для того, чтобы позвонить пользователю skype нужно выбрать SIP-аккаунт "none(global)" в выпадающем списке наверху софтфона, а потом ввести номер в формате sip:skypeusername@skype - и нажать кнопку вызова, тот кому вы звоните увидит входящий звонок. Пока вся система находится на стадии бета-тестирования, поэтому любой фидбэк будет очень полезен.


2009-02-22

16:21:21, 33 коровы
Закрываем AIR-debugger с помощью Eclipse Monkey

Flex Builder не умеет закрывать дебагер AIR приложений.

Лично я все время забываю закрывать приложение и каждый раз при запуске получаю сообщение об ошибке. После чего приходится “искать” приложение и закрывать его. Отнимает время и иногда нервирует.

Чтобы облегчить себе работу в закрытии приложения я написал небольшой Eclipse Monkey script:

/* * Menu: kill adl * Key: M3+d * Kudos: Ilja Panin http://the33cows.com * DOM: http://download.eclipse.org/technology/dash/update/org.eclipse.eclipsemonkey.lang.javascript */ function main() { Packages.java.lang.Runtime.getRuntime().exec("tskill.exe adl"); }

он убивает запущенный процесс adl.exe(отладчик AIR) легким движением руки ) и экономит время.

В идеале я хотел написать скрипт, который слушает событие эклипса о запуске дебагера, и автоматом дебагер, но не нашел как “достучатся” до дебагера.

upd: чтобы запустить скрипт нужно создать в папке со скриптами(по умолчанию проект monkey папка scripts) js файл, например kill-adl.js в него вставить код. Запускаеться скрипт нажатием alt+d или выбором пункта из меню


16:21:21, 33 коровы
Закрываем AIR-debugger с помощью Eclipse Monkey

Flex Builder не умеет закрывать дебагер AIR приложений.

Лично я все время забываю закрывать приложение и каждый раз при запуске получаю сообщение об ошибке. После чего приходится “искать” приложение и закрывать его. Отнимает время и иногда нервирует.

Чтобы облегчить себе работу в закрытии приложения я написал небольшой Eclipse Monkey script:

/* * Menu: kill adl * Key: M3+d * Kudos: Ilja Panin http://the33cows.com * DOM: http://download.eclipse.org/technology/dash/update/org.eclipse.eclipsemonkey.lang.javascript */ function main() { Packages.java.lang.Runtime.getRuntime().exec("tskill.exe adl"); }

он убивает запущенный процесс adl.exe(отладчик AIR) легким движением руки ) и экономит время.

В идеале я хотел написать скрипт, который слушает событие эклипса о запуске дебагера, и автоматом дебагер, но не нашел как “достучатся” до дебагера.

upd: чтобы запустить скрипт нужно создать в папке со скриптами(по умолчанию проект monkey папка scripts) js файл, например kill-adl.js в него вставить код. Запускаеться скрипт нажатием alt+d или выбором пункта из меню


2009-02-21

22:56:00, Flex 2 & Co
Adobe организует субботник
28 марта Adobe в Сиэтле организует субботник по правке багов во Flex SDK. Приглашаются все желающие. Можно еще участвовать через Connect, ссылку отправят всем зарегистрированным. Будут присутствовать разработчики из Adobe. В общем достаточно любопытное меропрятие.

22:56:00, Flex 2 & Co


22:56:00, Flex 2 & Co
Adobe организует субботник
28 марта Adobe в Сиэтле организует субботник по правке багов во Flex SDK. Приглашаются все желающие. Можно еще участвовать через Connect, ссылку отправят всем зарегистрированным. Будут присутствовать разработчики из Adobe. В общем достаточно любопытное меропрятие.

22:56:00, Flex 2 & Co


Предыдущие 30 | Следующие 30