2007年 02月 21日

なんか 1.4 でばっかり撮ってる気がする。
今日ちょっときになってとりくらべたけど f10 ぐらいまで絞らないと鮮明にならない。4.5 でも結構にじむ。1.8 のほうでも同じだからこんなもんなのかなぁ。AF があってない可能性もあるけど、デフォルトのスクリーンだと開放のピントがどこにあってるのかよくわかんない (マニュアルで前後させて深度イメージしてから戻すとかしないとちゃんとあわない感じ)。
大きくても A4 程度にしかしないからどうでもいいっちゃどうでもいい

あ、うそ。やっぱりピントあってなかった。マニュアル 1.4 でとってみたけどそんなひどくない。4.5 で十分くっきりだった。AF あてになんねー

寝過ごす

よよぎうえはらー

AS libs

どこに置くべきかな。~/lib/ にでもおくのかな

flickr exif

Flickr API で exif 大量に取得しようとすると API 呼びまくるしかないっぽくてこわい。一気にとってこれるいい方法ないのかな

AS flickr

なんで AS の flickr 系ライブラリはリスナを登録してから呼ぶみたいになってるんだろう。
呼ぶ関数に直接関数渡せたほうがコールバックで余計な条件分岐しなくてすむのに

AS3 リフレクション

メソッドの一覧が for (var hoge:String in this) でとれない><

var t:XML = describeType(this);
for each (var m:XML in t.method) {
	if (m.@declaredBy == t.@name) {
		log(String(m.@name));
	}
}

これで this のクラスに定義されたメソッドだけをとれる、っぽい。

test memo あとで書く

wget http://as3flexunitlib.googlecode.com/files/flexunit-.85.zip
unzip flexunit-.85.zip
cp flexunit/bin/flexunit.swc ~/sdk/flex_sdk_2/frameworks/libs/

とりあえず

package {
	import flexunit.framework.Test;
	import flexunit.framework.TestCase;
	import flexunit.framework.TestSuite;
	import flash.utils.describeType;

	import Rational;

	public class RationalTest extends TestCase {

		public function RationalTest(methodName:String) {
			super(methodName);
		}

		public static function suite():TestSuite {
			var ts:TestSuite = new TestSuite();
			var t:XML = describeType(RationalTest);
			for each (var m:XML in t.factory.method) {
				if (m.@name.match(/^test/) && m.@declaredBy == t.@name) {
					ts.addTest( Test( new RationalTest(String(m.@name)) ) );
				}
			}

			return ts;
		}

		public function testTrue():void {
			assertTrue("trueTrue", true);
		}

		public function testRationalInit():void {
			assertEquals("(new Rational(2, 6)).numerator   == 1", (new Rational(2, 6)).numerator, 1);
			assertEquals("(new Rational(2, 6)).denominator == 3", (new Rational(2, 6)).denominator, 3);
		}

		public function testToString():void {
			assertEquals("String(new Rational(2, 6))", String(new Rational(2, 6)), "1 / 3");
		}

		public function testAdd():void {
		}
	}
}

みたいに書いたけど (途中) 、かくのがめんどい。メタプログラミングしたい!

AS regexp

なんか ^ が効かないんだけど!!

というかそもも regexp だめなのか

AS3 の E4X と JS (Spidermonkey) の差

XML 宣言の有無でエラーになったり (Spidermonkey) とか、XML オブジェクトに繋げるメソッドの動きとかが微妙にちがくてはまる。

AS3 でヒアドキュメントしようとおもって

var data:String = <>
	my
	input
	lines
	--- expected
	expected
	output
</>.replace(/¥t/g, "");

ってやると \t 消えない。

var data:String = <>
	my
	input
	lines
	--- expected
	expected
	output
</>.toString().replace(/¥t/g, "");

だと消える。

File.read

Perl めも

 do { local $/ ; <$foo> } 

暗号杉

use File::Slurp;

2007年 02月 20日

何もしてない

なんだか休みだと一週間が一瞬で過ぎてしまうようなので困る。明日の予定を立てようと思っても「明日の予定を立てるのは明日でいいや」みたいな無限ループが発生する。ああ

普段どおりぐらいの情報収集と (というかやることがあんまりないので永遠フィードリーダー開きっぱなし) 日常的に気になったプログラミングぐらいしかしてなくて、なんかまずい。今日は学校の鯖の構成とかちまちま調べてたけど、それがどうなるわけでもなく、来月のミーティング待な部分が (自分がやりたいところとしては) 多いので鼻糞ほじりながらやるぐらいしかやっていなかったり、なかったり、なかったり。あと近所の公園で頭使わずに写真とったりしてたけど、ちょうど小学生の下校時刻だったらしく、危ない人に思われたら嫌だななんて思って家にそそくさ帰ってきた次第であります。

こういうときに「YO! 今日あそぼうぜ」的な友達がいたらずいぶんいいのだろうけど、あんま近く (物理的にも精神的にも) にそういう人はいないわけで (なぁ神様なんで僕には可愛い幼馴染の女の子がいないんだ?)、ネット徘徊して鼻糞ほじりながらこのエントリおかしくねとか突っ込んでみたりするけど誤解だったりとか (僕のスコープを管理している人に、僕のまわりを with (cuteGirl) { } でくくってくれとお願いしたい)、たぶんそういう日だった。

ちょっと曇っていたり、雨があがったぐらいのときは楽しい。太陽はあんまりでているべきじゃないのだ。ありがたみが減ってしまうから。


あとはるぴったんエンドレスを二回と半分ぐらい素で見てしまったので 30 分近くはぴったんしてた。あと作業しながらダウンロードしたのを聞きまくっていたので昨日のぴったん度はやばかった。ぴたたーぴたたー

あと陰陽師とごっすんくぎを (オリジナルも含めて) 見てしまった。こういうの作れる人は素敵だなぁ。ひふみの二回目が可愛すぎる。痛くないわ!

はてブををっちしてる人が 20 になってる。もっとアルギな人をふぁぶったほうがいいんじゃないだろうかとか思うけど、うれしい

今一瞬書こうと思ったことがあったのに、すぐに消えてしまった。かなしい

悲しいことは悪いことじゃない。

ネトゲの中の人って向こう側に人間がいるって感じてないんだよね。ネトゲに限らないけど、掲示板とかそういうのみてると顕著だなぁって感じる。

カメラの説明書

ちょっとアレで読んでなかったのだけどネットからダウンロードして読んでる。
AdobeRGB の説明で 「sRGB 環境ではとても控えめな感じに仕上がるため」ってのがなんか素敵な表現だなぁと思った。

gerry

夕食後に寝てたら腹痛で起きた……

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 をそこらで公開されているやつに置換してみたのだけど、変換されなくなってしまった。うーん。自力でコンパイルしないとだめなのかなぁ。