четверг, ноября 30, 2006

Поисковые инструменты

Продолжая тему поиска flex приложений, кода и другой инфы увидел пост Браяна Рили:

Постраничный вывод в DataGrid

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

Уменьшение размера swf с помощью удаленных библиотек

Накнулся на интересный пост Джеймса Ворда, в котором рассказано, как уменьшить размер выходного swf файла с помощью использования Runtime Shared Libraries (RSL) - удаленных библиотек. Вот перевод.

Flex 2 позволяет загружать эти библиотеки с других доменов. Подразумевается, что приложение будет указывать на какой-нибудь определенный набор библиотек, который браузер будет быстро доставать из кэша. Перед началом необходимо заметить, что это не поддерживается Adobe, хотя команда разработчиков и работает в этом направлении, пока это просто хак. Во-вторых, пока нет нормального централизованного хранилища для RSL- библиотек, они хранятся на моем сервере, который может быть взломан и вместо изначальных библиотек вы получите какие-нибудь опасные компоненты. Несмотря на эти препоны, этот способ удовлетворяет большинство приложений и позволяет значительно уменьшить их размер. Как же это применить?

Мною было создано три библиотеки: малая, средняя и большая. Библиотеки взаимодополняемы, то есть, если необходимо использовать среднюю, то загружать надо малую и среднюю. См. таблицу у автора.


1) Скачайте необходимые SWC для RSL
2) Измените build path проекта
2.1) Если вы компилируете с помощью Ant или командной строки, определите пути к библиотекам следующим образом:

flex2-sdk/bin/mxmlc -external-library-path+=build/framework-2_0_0_a-small.swc,
build/framework-2_0_0_a-medium.swc -runtime-shared-libraries=
http://ws.jamesward.org/framework-2_0_0_a-small.swf,
http://ws.jamesward.org/framework-2_0_0_a-medium.swf-o=
build/testHostedFlexLibs-medium.swf -file-specs=test/testHostedFlexLibs.mxml

2.2) Если вы используете Flex Builder, перейдите в Project -> Properties -> Flex Build Path -> Library Path -> Add SWC -> [добавьте необходимые SWC]. Затем выберите SWC’s RSL URL и нажмите кнопку Edit. Измените Link Type на "Runtime shared library (RSL)", введите правильный URL, уберите галку с "Auto extract checkbox", затем нажмите OK.

2.3) Если вы используете FDS, добавьте SWC в папку flex/user_classes и обновите runtime-shared-libraries соответственно в файле flex-config.xml.

3) Перекомпилируйте приложение (если этого не произошло автоматически) и размер файла значительно уменьшится!

4) Еще одна преграда - приложение будет работать только из интернета, потому что политика безопасности запрещает загружать внешние ресурсы.

среда, ноября 29, 2006

Поиск по коду as и mxml файлов

Недавно узнал о таком полезном сервисе Гугла, как поиск по коду. Например, можно искать по mxml и as файлам следующим образом:
file:.mxml$ tabnavigator
file:.as$ displayobject

Отсюда

Четыре днюхи за неделю

Заметил тут, что буквально за неделю с 20.11 по 27.11 прошло целых четыре дня рождения:
20 - МК
23 - Дэн Иванов
26 - Рост
27 - мое:)

Всех поздравляю задним числом!

вторник, ноября 21, 2006

Использование data-driven виджетов

Закончил перевод главы "Использование data-driven виджетов". В ней рассмотрены следующие виджеты:

Форматирование чисел в AS3

Есть небольшая AS3 библиотека с полезными методами. Одним из них является вывод чисел, форматированных по маске. За это отвечает класс NumberFormat. Маски поддерживают следующие символы:

  • 0 - место, заполненное числом или нулем
  • # - место, заполненное числом или пробелом
  • . - дробный разделитель. Выводится символ точки
    или запятой - в зависимости от локали.
  • , - группировка символов. Выводится символ точки или запятой - в зависимости от
    локали.

Рассмотрим следующую маску:
##,###.0000

Если эту маску применить к числам
1.2345
12.345
123.45
1234.5
12345

То они будут отображены в виде
1.2345
12.3450
123.4500
1,234.5000
12,345.0000

Задать маску числу можно следующими способами:

  1. создать эеземпляр NumberFormat:
    var styler:NumberFormat = new NumberFormat("##,###.0000");


  2. использовать свойство mask:
    styler.mask = "##.00";

Рассмотрим готовый пример:var styler:NumberFormat = new NumberFormat("#,###,###,###");
trace(styler.format(1));
trace(styler.format(12));
trace(styler.format(123));
trace(styler.format(1234));

styler.mask = "#,###,###,###.0000";

trace(styler.format(12345));
trace(styler.format(123456));
trace(styler.format(1234567));
trace(styler.format(12345678));
trace(styler.format(123456789));


Числа будут выведены в следующем виде:
1
12
123
1,234
12,345.0000
123,456.0000
1,234,567.0000
12,345,678.0000
123,456,789.0000

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

Locale.slanguage = "fr";

Во Франции, в качестве группировки применяются точки, а в качестве дробного разделителя запятые. Насколько я знаю, в России тоже самое, поэтому данную
установку можно использовать (или я ошибаюсь?).

При выполнении примеров не забудьте импортировать необходимые классы:
import ascb.util.NumberFormat;
import ascb.util.Locale;

Отслеживание реального фреймрейта

По умолчанию, флекс-приложения компилируются с фреймрейтом, равным 24 кадрам в секунду.
Установить свой фреймрейт можно с помощью команды компилятора:

mxmlc -default-frame-rate=50 HelloWorld.mxml

Но установка значение в 50 кадров в секунду вовсе не означает, что каждые 20 миллисекунд будет проигран кадр. Разные типы браузера, плеера, операционной системы дают разные результаты. Протестировать реальный фреймрейт можно с помощью следующего небольшого приложения:

<mx:Application
mx="http://www.adobe.com/2006/mxml"
layout="horizontal"
enterFrame="enterFrameHandler()">
<mx:Script>
<!--[CDATA[
var lastTime:int;
public function enterFrameHandler():void {
test.text = String(int(1000/(getTimer()-lastTime)));
lastTime=getTimer();
}
]]>

</mx:Script>
<mx:TextInput id="test" />
</mx:Application>
Взято у FARATA.

пятница, ноября 17, 2006

Коллекция уроков по Ruby on Rails

На Rails Forum с августа функционирует раздел уроков (на английском) по RoR. На данный момент представлено около 30 уроков. Тут же можно заказать урок - возможно кто-то его и напишет.

Эли Гринфилд почти закончил свой календарь

Эли Гринфилд представляет очередную демку своего интеактивного календаря. Не путать с Flex Scheduling Framework. Скачать исходник можно отсюда.

понедельник, ноября 13, 2006

Создание FDS Flex приложения с помощью FlashDevelop

К бесплатной программе для AS/Flex разработки FlashDevelop некто Gurufaction создал темплейт для разработки Flex Data Services приложений. Установка и создание тестового приложения рассмотрена здесь.

вторник, ноября 07, 2006

250 темплейтов для RadRails

Dr. Nik создал 199 ruby и 48 rhtml темплейтов.
После скачивания откройте RadRails, перейдите в меню
Windows > Preferences > Ruby > Editor > Templates, выделите все элементы (ctrl+A), затем удалите их. Потом выберите Import и импортируйте ruby-rr-templates.xml.
Для импорта rhtml темплейтов зайдите в
Rails > Editiors > RHTML Editor > RHTML Templates, повторите туже процедуру и импортируйте rhtml-rr-templates.xml.
Обещано включить эти темплейты в следующий релиз RadRails.

понедельник, ноября 06, 2006

Загружаем эффекты, показанные на MAX 2006

Алекс Ульман выложил свою презентацию (pdf) с конференции MAX 2006 и весь исходный код своих эффектов. Данные эффекты используют утилиту DistortImage из 3d движка Sandy. Реализованы следующие эффекты - Flip, CubeRotate, Push, Pop, Door и Gate. Но лучше один раз увидеть, как говорится...

четверг, ноября 02, 2006

Видеоуроки по Flex 2 и Red5

Наткнулся на интересный сайт, предоставляющий видеоуроки по Flash / Flex / Red 5 - www.flashextensions.com. Особенно интересен Red5...

Компонент DisplayShelf

Компонент DisplayShelf представляет из себя богатый виджет для трехмерного отображения элементов.

Пример разделен на три блока. Первый, компонент TiltingPane, получает любой элемент и применяет к нему '3d' эффект. Второй, компонент DisplayShelf, использует компонент TiltingPane для отображения элементов вдоль виртуальной полки, из которой можно выбирать элемент.

В примере проиллюстрирурованы:
  • матричные трансформации
  • graphics API
  • маскирование
  • манипуляции с битмапом
  • темплейтинг
  • item renderers
  • интерфейс IList
  • реализация dataProvider'ов
  • анимация

Посмотреть DisplayShelf
Исходник
Загрузить

Отсюда

среда, ноября 01, 2006

Новый формат просмотра исходников Flex-приложения

NJ анонсировал более удобный просмотрщик исходного кода приложений. Само приложение можно посмотреть здесь. С первого взгляда - простой Flickr браузер, но вверху расположены ссылки на исходные файлы приложения. Некоторые элементы кода файлов подсвечены и при нажатии открывают подсказки. Приложение пока глючное, но автор обещает взяться за него серьезнее, если народ одобрит. А народ уже одобрил - это можно увидеть по комментам.

вторник, октября 31, 2006

Выложены некоторые примеры кода из RIABook

Выложены примеры кода приложений главы про DataGrid из RIABook. Сами примеры можно посмотреть здесь. Авторы также собираются опубликовать три из этой книги в ColdFusion magazine.

Увеличение производительности Eclipse IDE

Чтобы увеличить скорость работы Eclipse, необходимо изменить параметры выделяемой для программы виртуальной памяти. Изменения можно произвести в файле eclipse.ini, а для Flex Builder 2 - FlexBuilder.ini, которые находятся в папках установки этих программ. Также можно задавать эти параметры в командной строке при вызове IDE.

Например, для машины с 512 метрами памяти предлагается использовать следующие параметры:
-vmargs -Xms256m -Xmx256m -XX:PermSize=64m -XX:MaxPermSize=64m

А для 1024 -
vmargs -Xms512m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=128m

Оригинал

понедельник, октября 30, 2006

четверг, октября 26, 2006

Полнотекстовый поиск по Rails-приложению

Ferret - это Ruby-реализация поискового движка Apache Lucene. Использовать его довольно легко:

1. Откройте командную строку и установите
gem install ferret
2. Затем установите плагин acts_as_ferret в папку приложения:
ruby script/plugin install 
svn://projects.jkraemer.net/acts_as_ferret/
tags/stable/acts_as_ferret
3. Измените модель, соответствующую таблице, по которой должен идти поиск, следующим образом:
class Bug < ActiveRecord::Base
acts_as_ferret :fields => [ ‘description’]
end
где :fields - поля для индексации. Если не использовать этот атрибут, то будут проиндексированы все поля.

4. Добавьте, например, такой метод:
def searchBugs
@bugs= Bug.find_by_contents(params[:query])
render(:xml => @bugs.to_xml)
end
5. Наконец, можно вызвать этот метод из Flex-приложения с помощью HTTPService.

Например, следующий код вернет все bugs, содержащие слово "error" в поле description:
searchBugs.send({query:"error"});

Оттуда