2007年 02月 19日

AS3 の undefined

型指定されていない変数のみに値 undefined を割り当てることができます。値 undefined をデータ型が指定されている変数に割り当てようとすると、Flash Player は値 undefined をそのデータ型のデフォルト値に変換します。Object データ型のインスタンスのデフォルト値は null です。つまり、undefined を Object インスタンスに割り当てようとすると、Flash Player は値 undefined を null に変換します

http://livedocs.adobe.com/flex/2_jp/docs/00001826.html

へー……

var num:Number;
var str:String;
var obj:Object;
var foo:*;

log(num, str, obj, foo);
#[Number NaN]
#[null null]
#[null null]
#[void undefined]
// Object に代入していたのを変えた。
package {
	import flash.utils.*;
	import flash.external.ExternalInterface;

	public function log(... args):void {
		for (var i:uint = 0; i < args.length; i++) {
			var className:String = getQualifiedClassName(args[i]);
			var l:String    = <>#[{className} {String(args[i])}]</>.toString();
			trace(l)
			ExternalInterface.call("console.log", l);
		}
	}
}

今はとりあえず上のやつを log.as で保存して他にファイルから import log; してる。package 名どうするのがいいんだろう。

type はいちおう予約語だから使わないほうがいいぜってせかんどらいふさんに言われたので log 関数をちょっと変えた

import log; しなくても動くよ!っていわれた! なんでだろう。

package 名

なんかテンパってるなぁ。net.lowreal.hoge みたいに Java っぽく書くのがいいのかなぁ。

ホイスト

ブロックレベルのスコープがないということは、関数が終了する前に変数が宣言されていれば、宣言される前に変数の読み書きが可能であるということです。これは、"ホイスト" と呼ばれる手法によるもので、コンパイラによりすべての変数宣言が関数の最上位に移動されます。たとえば、次のコードは、num 変数が宣言される前に num 変数の初期の trace() 関数が実行されてもコンパイルされます。

trace(num); // 出力 : NaN
var num:Number = 10;
trace(num); // 出力 : 10

しかし、コンパイラは代入ステートメントをホイストしません。このため、num の初期の trace() は数値データ型の変数のデフォルト値である NaN (非数) になります。つまり、次の例に示すように、変数が宣言される前でも変数に値を割り当てることができます。

num = 5;
trace(num); // 出力 : 5
var num:Number = 10;
trace(num); // 出力 : 10
http://livedocs.adobe.com/flex/2_jp/docs/00001822.html

ホイスト (hoist) っていうんだ。でも "変数 ホイスト" で検索してもこのドキュメントぐらいしかヒットしない。

anthy mac-uim

なんか辞書がよくないっぽくて「被写界深度」とかさえ一発変換できないのでかえてみようと思ったけどうまくいかなかった
/Library/Anthy/share/anthy/anthy.dic をそこらで公開されているやつに置換してみたのだけど、変換されなくなってしまった。うーん。自力でコンパイルしないとだめなのかなぁ。

2007年 02月 18日

XREA SQLite

XREA が公式に SQLite をサポートしはじめたらしい。まだ調べてないけど ruby-binding も入れてくれてるみたいだ。あとで試そう

gerry

なぜかいたい

2007年 02月 15日

mongrel

require 'rubygems'
require 'mongrel'
config = Mongrel::Configurator.new :host => "127.0.0.1" do
	listener :port => 3000 do
		uri "/app", :handler => Mongrel::DirHandler.new(".", load_mime_map("mime.yaml"))
	end
	run
end

(doc の例)
実行すると

uninitialized constant Mongrel::Configurator (NameError)

になってしまう。

自力でロードすると No such file to load -- mongrel/configurator (LoadError) になるので、インストールがうまくいってないっぽい

ls /usr/lib/ruby/gems/1.8/gems/mongrel-0.3.3/lib/mongrel
command.rb

ええ

ruby -v 1.8.2 のせいかな

AS3 Traits

あるタイプにおける共有プロパティ。static 変数 (クラス変数) は Class クラスのインスタンスのプロパティと考えることができるので TCA (クラストレイツ) で、インスタンス変数は TA (インスタンストレイツ) になる、でいいのかな。
というかダイナミックに解決する必要がない変数名はコンパイル時になくしてトレイツに突っ込んじゃって、継承時にはプロトタイプチェインではなくオブジェクトコピーですませるために導入してるんだよっていうのがアレであって、もしかするとそんなに気にするでもないのかもしれない。

スコープチェインの覚えかたはプロトタイプは遅いから後回しにするとか覚えておけばいいのかな

と、コードを書かないでごたごたやってるけど(ry

mxml の概念がよくわからない

sample/photoviewer/PhotoViewer.mxml で ViewStack の下に xmlns="*" な要素があるけど、これってどういうルールでリンクされるんだろう。
みたいなことがどこに書いてあるかわからなす! 

というか、スクロールバーが表示されてるのに、ホイール効かないのがだめすぎる。自力で実装しないといけない?

http://livedocs.macromedia.com/flex/2_jp/docs/00000449.html

SecurityError: Error #2060:

SecurityError: Error #2060:  セキュリティサンドボックス侵害 : ExternalInterface 呼び出し元 

とかいうのは file スキームのときに出るようだ。