1次微分(グラディエント)による方法
→輝度の差が「輪郭の輝度」に効いてくる
2次微分(ラプラシアン)による方法
→輝度がどれだけ急激に変化したかが「輪郭の輝度」に効いてくる(輝度の差は関係ないという事)
2008年6月4日水曜日
2008年5月29日木曜日
2008年5月26日月曜日
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使うか。
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;
};
2008年4月9日水曜日
さくらインターネットとimapとopensslとwl
WanderlustでさくらインターネットのIMAPサーバにSSLで接続。
これまでは、.wlに、
SSLのネゴシエーションのパケットをWiresharkでキャプチャしたら、
保存した二つの証明書を、opensslコマンドでBase64エンコード
sakura-*.pemの最初と最後に
-----BEGIN CERTIFICATE-----
と
-----END CERTIFICATE-----
を追加した。
ちなみに、この証明書のフォーマットはX509形式で、Base64で符号化したものをPEMというらしい。
PEM以外にも符号化の種類によって、DERとかあるみたい。
この2つのPEMを'hash format'のディレクトリに置くべく、
そのあと、
最後、wlからopensslを使うときの証明書ディレクトリを指定して完了。
2008/8/28 追記
証明書ディレクトリは
じゃなくて、
って形で.wlにフルパスで定義した方が良さそう。
これまでは、.wlに、
(setq ssl-certificate-verification-policy 1)と書いていたけど、誤魔化しているようで嫌だったので証明書を取り込むことにした。
SSLのネゴシエーションのパケットをWiresharkでキャプチャしたら、
Protocol: TLSv1のレコードに証明書が二つ含まれていたので、それぞれバイナリで保存した。
Info: Certificate
保存した二つの証明書を、opensslコマンドでBase64エンコード
$ openssl base64 -in sakura-1.bin -e -out sakura-1.pem
$ openssl base64 -in sakura-2.bin -e -out sakura-2.pem
sakura-*.pemの最初と最後に
-----BEGIN CERTIFICATE-----
と
-----END CERTIFICATE-----
を追加した。
ちなみに、この証明書のフォーマットはX509形式で、Base64で符号化したものをPEMというらしい。
PEM以外にも符号化の種類によって、DERとかあるみたい。
この2つのPEMを'hash format'のディレクトリに置くべく、
$ cp sakura-1.pem /path/to/certdir/とやった。
$ cp sakura-1.pem /path/to/certdir/
$ c_rehash /path/to/certdir/
そのあと、
$ openssl s_client -host hostname.sakura.ne.jp -port 993 -verify 0 -CApath /path/to/certdirで
Verify return code: 0 (ok)となっている事を確認。
最後、wlからopensslを使うときの証明書ディレクトリを指定して完了。
(custom-set-variables
'(ssl-certificate-directory "/path/to/certdir/"))
2008/8/28 追記
証明書ディレクトリは
(custom-set-variables
'(ssl-certificate-directory "/path/to/certdir/"))
じゃなくて、
(setq ssl-certificate-directory "/path/to/certdir/")
って形で.wlにフルパスで定義した方が良さそう。
登録:
投稿 (Atom)