2010年3月26日金曜日

Flash Builder 4 のキーボードショートカットを編集する

なんだか魅力的な機能が満載とあったので、Flash Builder 4 の試用版をダウンロードしてみました。ひと月程 FDT を利用して、サクサクコーディングを楽しませてもらったので、Flash Builder 4 がどんな感じなのか、楽しみです。

とりあえず『Getter/Setter を生成する』機能を試してみようと思ったのですが、JDT みたいに、まとめて生成してくれるわけじゃないんですね。ちょっと残念。ひとつずつ設定するのにショートカットが割り当てられていないと不便極まりないので、設定しました。

[ウィンドウ] - [設定] - [一般] - [キー]

フィルタがあるので、メニューにある名前でフィルタしてあげると便利です。

2010年3月25日木曜日

GoogleIMEJaCacheService.exe

ふとタスクマネージャを見てみたら、『GoogleIMEJaCacheService.exe』とぷプロセスが50MBくらい食ってました。何者かと調べてみたら、最新版では辞書データをメモリ上へ常に読み込んでおくことで、変換時の辞書読み込み速度を向上するという機能らしいです。メモリに余裕が無いわけではないけど、切ることができるようなので、切ってみます。

言語バーの設定から、Google日本語入力のプロパティを表示して、その他タブをクリック。「オンメモリ辞書の設定」の、設定変更ボタンをクリック、「辞書を常に物理メモリに配置し、変換を高速化する」のチェックを外してクリックで完了です。

とりあえず様子見。

2010年3月19日金曜日

Evernote の赤線が気にくわない

Evernote 3.5からスペルチェック機能がついたらしいけど、普通に日本語を入力しているつもりでも、やたらと赤線が表示される。なんで?って思うことが多々あり、非常にうっとうしいので、表示を消すことにしました。


[ツール]-[オプション]-[スペルチェックタブ]にて、『タイプ中にスペルチェック』のチェックを外すでOKです。

スペルチェックの必要なメモは、最後にスペルチェックしたらいいしね。

2010年3月10日水曜日

zlib形式で圧縮したデータをAS3.0で読み込む

Flashとwebサーバとのやりとりで、圧縮+暗号化を利用して欲しいという話がありました。調べてみたところ、Flash Player は標準で zlib アルゴリズムのみサポートしているとの事なので、それを利用することにします。Adobe AIR は、deflate アルゴリズム(GZIP などで用いられるらしい)も、利用することが出来るようです。

package 
{
 import flash.display.Sprite;
 import flash.events.Event;
 import flash.net.URLLoader;
 import flash.net.URLLoaderDataFormat;
 import flash.net.URLRequest;

 public class Main extends Sprite 
 {

  public function Main():void 
  {
   var req:URLRequest = new URLRequest("compress_sample.php");
   var loader:URLLoader = new URLLoader(req);
   
   // ダウンロードするデータ形式をバイナリに指定する。
   loader.dataFormat = URLLoaderDataFormat.BINARY;
   
   loader.addEventListener(Event.COMPLETE, function(event:Event):void 
   {
    try {
     // zlib形式で圧縮されたデータを解凍する。
     loader.data.uncompress();
    } catch (e:Error) {
     trace(e.message);
    }
    var str:String = loader.data;
    trace(str);
   });
   
   loader.load(req);
  }
 }
}

今回はwebサーバはPHPを利用するので、PHPでの例は以下の通り。


$message = gzcompress('このメッセージを圧縮して返します。', 9);

header('Content-Type: application/x-gzip');

echo $message;

返信するデータは、JSON 形式などでも同様に扱うことができます。XML 形式でも多分一緒と思います。

twtr2src

少しtwtr2srcを利用して、Twitter のつぶやきをまとめて投稿してみたけど、何か違う気がしたのでやめました。便利なサービスなんだけど、ノイズっぽいのよなぁ。RSSだけ提供してくれるサービスとかないかな。

2010年3月4日木曜日

getter setter メソッドの型について

get set キーワードは、プロパティに直接アクセス出来るように見えて、そのアクセサをちゃんと用意してあげられるので、コード的の見た目的にいい機能だなと思っていたんですが、get set キーワードで作るアクセサは、その型を一致させる必要があるみたい。

class SuperClass0
{
 // ...
}

class SubClass0 extends SuperClass0
{
 // ...
}

//-----------------------------------------------------------
// get set キーワードを使う場合(エラーになる)
//-----------------------------------------------------------

class SuperClass1 
{
 protected var _class0:SuperClass0;
 
 protected function set class0(value:SuperClass0):void 
 {
  _class0 = value;
 }
}

class SubClass1 extends SuperClass1
{
 protected function get class0():SubClass0
 {
  return SubClass0(_class0);
 }
}

//-----------------------------------------------------------
// 関数を定義する場合
//-----------------------------------------------------------

class SuperClass2
{
 protected var _class0:SuperClass0;
 
 protected function setClass0(value:SuperClass0):void 
 {
  _class0 = value;
 }
}

class SubClass2 extends SuperClass2
{
 protected function getClass0():SubClass0
 {
  return SubClass0(_class0);
 }
}

とあるクラスのインスタンスを親クラスに持たせておいて、派生クラスで利用するときは、必要な型にキャストして利用しようとしたんだけど、get だけキャストして型を変えたりすると、『Error: Accessor types must match.』とエラーが出ます。

set を子クラス毎に用意したらいい話なんやけど、親クラスにもたせてあげれば用意する必要のない setter を作るのも好ましくない。get set キーワードで作成したアクセサは、クラス内で参照するのにも利用するし、コード的にも綺麗。関数を用意すると大丈夫なんだけど、クラス内で使うにはちょっと不恰好だなぁとか。

2010年3月2日火曜日

SWC ファイルの作成

FlexSDK の compc を利用すれば、フォルダを指定して SWC が作れます。compc の居場所はwindows だと、以下の場所にあります。MacOS はまた調べる

C:\Program Files\Adobe\Flex Builder 3\sdks\3.2.0\bin

書式は以下の通り。

compc -include-sources [対象フォルダ名] -output [出力ファイル名]