2008/06/29

Google技術講演会 in 京都(7/6) 行くよ

Google Codeディスカッショングループにタイトルにある案内が届いたので行こうと思います。
7月6日に京都で開催ですよ。
http://services.google.com/events/kyoto-techtalk2008

先週末はFlex User GroupのFlex3勉強会で大阪、来週はGoogle Tech Talkで京都。
関西遠征が続きます。

私の顔に見覚えがある方/ない方、見かけたら気兼ねなく声かけてくださいませ。

2008/06/28

Flex3勉強会行ってきたよ

大阪で勉強会があったから行ってきたよ。
懇親会でワイワイ飲んでたら楽しくって23時過ぎてた。
途中で抜けなくてはならなかったのが残念。

ダッシュで駅に向かったら、無事「きたぐに」に間に合った。
AM2時30分自宅着・・・。

懇親会がとても楽しかった!
Flex User Groupのみなさんありがとうございます。

2008/06/27

FlexでGearsを使う

FlexでGoogle Gears(Gears)を使う方法がサンプル&ソースコード付き紹介されてました。
やはり、ゴリゴリとJavaScriptを使わないといけないんですね。

Enhancing Flex applications with Google Gears
http://weblog.mrinalwadhwa.com/2008/06/27/flex-and-gears/

2008/06/24

ログAPIの使用

Flex、AIRでのデバッグ時にはtrace()を使っていたけど、パフォーマンス的によろしくないのでログAPIでログ情報を出力するようにTRYしてみた。

ログ API の使用
http://livedocs.adobe.com/flex/3_jp/html/help.html?content=logging_09.html

ログカテゴリには完全修飾クラス名を指定するのが規則なんだけど、イチイチ書くのは面倒なのでターゲットのオブジェクトを渡すと、そのオブジェクトの完全修飾クラス名を内部で取得して、そのカテゴリに関連付けられたロガーを返してくれるユーティリティを作ってみた。
ちなみにLogTargetのフィルターを指定していて、汎用性に欠けていることには後で気がついた・・・。

それと疑問なのが、LogTargetのフィルターでmx.messaging パッケージと mx.rpc パッケージを指定していないんだけど、BlazeDSでRPCするとログ情報が山ほど出てきてしまう。
そのため、Log.flush()を呼んで関係のないロガーを削除しているんだけど、Log.flush()はデバッグ専用で使っちゃまずそうなので後でなんとかしよう。

package net.air_life.utils
{
import flash.utils.getQualifiedClassName;

import mx.logging.ILogger;
import mx.logging.Log;
import mx.logging.LogEventLevel;
import mx.logging.targets.TraceTarget;

public class LogUtil
{
private static var logTarget:TraceTarget;

public static function getLogger(targetObj:Object):ILogger
{
if(!logTarget)
{
//デバッグ専用なのでここで使うのはまずいね
//http://livedocs.adobe.com/flex/3_jp/langref/mx/logging/Log.html#flush()
//mx.messaging パッケージと mx.rpc パッケージ配下のすべてのログ情報が出てしまうためにflushしている。
Log.flush();

var logTarget:TraceTarget = new TraceTarget();
logTarget.level = LogEventLevel.WARN;
//メッセージをログに出力するクラスを指定
logTarget.filters = ["net.air_life.hoge.*"];
logTarget.includeDate = true;
logTarget.includeTime = true;
logTarget.includeCategory = true;
logTarget.includeLevel = true;

Log.addTarget(logTarget);
}

//完全修飾クラス名は "net.air_life.hoge::Hoge"のような文字列なので、"::"をカテゴリ名に使える"."に置換している。
var category:String = getQualifiedClassName(targetObj).replace("::", ".");
var logger:ILogger = Log.getLogger(category);

return logger;
}
}
}

使い方はこう。
flash.utils.getQualifiedClassName()を使って、thisからログカテゴリに指定する完全修飾クラス名を作っている。

var logger:ILogger = LogUtil.getLogger(this);
logger.debug(event.target.toString());