2008年6月29日日曜日

オイラーの公式

全く起源の異なる指数関数と三角関数が複素数の世界では密接に結びついていることを示している
http://ja.wikipedia.org/wiki/%E3%82%AA%E3%82%A4%E3%83%A9%E3%83%BC%E3%81%AE%E5%85%AC%E5%BC%8F

幾何学的に解釈すると、実軸と虚軸の平面上での単位円になる

ここも参考にした
http://www12.plala.or.jp/ksp/mathInPhys/euler/

すっかり忘れていたから、復習した。

画像の輪郭

1次微分(グラディエント)による方法
→輝度の差が「輪郭の輝度」に効いてくる

2次微分(ラプラシアン)による方法
→輝度がどれだけ急激に変化したかが「輪郭の輝度」に効いてくる(輝度の差は関係ないという事)

2008年6月4日水曜日

2008年5月26日月曜日

libevent

http://www.monkey.org/~provos/libevent/

こんな便利なライブラリの存在に、つい先日気づいた。
あの時に使いたかった。。。

2008年5月8日木曜日

ファイルのアップロード

<input type="file" />のデフォルトのボタンが気に入らないので、カスタマイズする方法を探してたら、
http://www.quirksmode.org/dom/inputfile.html
や
http://www.shauninman.com/archive/2007/09/10/styling_file_inputs_with_css_and_the_dom
を発見。

前者は、CSSのcursor: pointerが効かない。
細かいとこだけど、これは結構でかい。

さらに、Fakeなボタン画像の大きさを、元のボタンの大きさに合わせて作らなきゃならないみたい。

後者は、IE上で実行すると、input要素がずっとマウスポインタにくっついてきて、
全然関係ないとこでクリックしても、ファイル選択ダイアログが開かれてしまう。

そんで、こっちもcursor: pointerが効かない。

んー、SWFUpload使うか。

UTF-8で符号化されたバイト配列から文字列を復元する関数

作ったんだけど、使わなくなった。
もったいないから、残しとく。

var decodeUtf8Array = function(ary) {
var s = "";
var uc = function(ind) {return (ary[ind] >= 0)? ary[ind]: (ary[ind] + 0xff + 1)};
for (i = 0; i < ary.length;) {
var c1 = uc(i);
if (c1 >= 0xf0) {
var c2 = uc(i+1);
var c3 = uc(i+2);
var c4 = uc(i+3);
s += String.fromCharCode(((c1 & 0x07) << 18) | ((c2 & 0x3f) << 12) | (c3 & 0x3f) << 6 | (c4 & 0x3f));
i += 4;
} else if (c1 >= 0xe0) {
var c2 = uc(i+1);
var c3 = uc(i+2);
s += String.fromCharCode(((c1 & 0x0f) << 12) | ((c2 & 0x3f) << 6) | (c3 & 0x3f));
i += 3;
} else if (c1 >= 0xc0) {
var c2 = uc(i+1);
s += String.fromCharCode(((c1 & 0x1f) << 6) | (c2 & 0x3f));
i += 2;
} else {
s += String.fromCharCode(c1 & 0x7f);
++i;
}
}
return s;
};