2009年9月14日月曜日
postgresqlでtimezone
- timestamp without time zone
http://www.postgresql.jp/document/pg840doc/html/datatype-datetime.html#DATATYPE-DATETIME-INPUTより
- select at time zone '' from XXX;
http://archives.free.net.ph/message/20081017.183658.f2251aaa.ja.htmlより
http://www.postgresql.jp/document/pg840doc/html/datatype-datetime.html#DATATYPE-DATETIME-INPUTより
time without time zoneへの入力に時間帯が指定された場合、時間帯は警告なく無視されます。
- select
http://archives.free.net.ph/message/20081017.183658.f2251aaa.ja.htmlより
AT TIME ZONE on a timestamp WITHOUT tz means "assume that
the given timestamp is local time in this timezone
2009年2月25日水曜日
2009年1月15日木曜日
Canny edge detector - Non-maximum suppression
勾配方向の、前後の勾配の大きさと、自身の勾配の大きさを比較して、最大であれば、自身がエッジの位置とみなす。
勾配が複数ピクセルに跨っている場合、その中で最大の位置のみをエッジとして扱えば良いため。
参考URL:
http://en.wikipedia.org/wiki/Canny_edge_detector
http://www.pages.drexel.edu/~weg22/can_tut.html
勾配が複数ピクセルに跨っている場合、その中で最大の位置のみをエッジとして扱えば良いため。
参考URL:
http://en.wikipedia.org/wiki/Canny_edge_detector
http://www.pages.drexel.edu/~weg22/can_tut.html
2008年10月4日土曜日
2008年8月27日水曜日
fiberで添付ファイルを開く
Windows Vista で Meadow で Wanderlust 使ってて、これまでは添付ファイルは一旦ディスクに保存して開いていたけど、いい加減面倒になってきたので v (mime-preview-play-current-entity) で開けるようにした。
まず、~/.mailcapを作って以下のように記述
%s をシングルクォートでくくっているのは、ファイル名が日本語の時に、末尾に改行コードっぽいのが紛れ込んで認識できない事があったから。
シングルクォートでくくったら、なぜかOK。
cygwin のシェル経由で fiber を起動するので、文字コード/改行コードを明示的に指定。
そんで、何故だか FLIM の mime-format-mailcap-command がマルチバイト文字の前に'\'を追加するので、.wl に以下を追加して除去。
これで開けるようになった。
まず、~/.mailcapを作って以下のように記述
application/*; fiber -s '%s'
image/*; fiber -s '%s'
%s をシングルクォートでくくっているのは、ファイル名が日本語の時に、末尾に改行コードっぽいのが紛れ込んで認識できない事があったから。
シングルクォートでくくったら、なぜかOK。
cygwin のシェル経由で fiber を起動するので、文字コード/改行コードを明示的に指定。
(modify-coding-system-alist 'process ".*sh\\.exe" '(sjis-dos . sjis-unix))
そんで、何故だか FLIM の mime-format-mailcap-command がマルチバイト文字の前に'\'を追加するので、.wl に以下を追加して除去。
(eval-after-load "mime-conf"
'(defadvice mime-format-mailcap-command
(after remove-escape-chars activate)
"Remove all '\\' characters in return value of mime-format-mailcap-command "
(while (string-match "\\\\" ad-return-value)
(setq ad-return-value (replace-match "" nil t ad-return-value)))))
これで開けるようになった。
2008年7月2日水曜日
JPEG圧縮におけるDC成分とAC成分
DC成分は隣り合うブロックとの差がほとんどないため、差の配列を符号化する
AC成分はそのような特性は無いため、ブロック毎にDC成分を除く63個の値を左上から順にジグザグスキャンして符号化する
http://www2.starcat.ne.jp/~fussy/algo/algo8-7.htm
http://www.ccad.sist.chukyo-u.ac.jp/~mito/syllabi/compaction/frame.htm
AC成分はそのような特性は無いため、ブロック毎にDC成分を除く63個の値を左上から順にジグザグスキャンして符号化する
http://www2.starcat.ne.jp/~fussy/algo/algo8-7.htm
http://www.ccad.sist.chukyo-u.ac.jp/~mito/syllabi/compaction/frame.htm
2008年7月1日火曜日
The Collection Interface
Use Iterator instead of the for-each construct when you need to:
* Remove the current element. The for-each construct hides the iterator, so you cannot call remove. Therefore, the for-each construct is not usable for filtering.
* Iterate over multiple collections in parallel.
http://java.sun.com/docs/books/tutorial/collections/interfaces/collection.html
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/
すっかり忘れていたから、復習した。
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/
すっかり忘れていたから、復習した。
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にフルパスで定義した方が良さそう。
2008年3月31日月曜日
2008年3月25日火曜日
jhatメモ
class HeapDump {
public static void main(String[] args) {
java.util.List l = new java.util.ArrayList();
for (int i = 0; ; ++i) {
l.add(i);
}
}
} のような、OutOfMemoryErrorが発生するプログラムを実行。
$ java -XX:+HeapDumpOnOutOfMemoryError HeapDump
java.lang.OutOfMemoryError: Java heap space
Dumping heap to java_pid4888.hprof ...
Heap dump file created [84987937 bytes in 4.720 secs]
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.lang.Integer.valueOf(Integer.java:585)
at HeapDump.main(HeapDump.java:9)
ダンプファイルができているのを確認。
$ ls
HeapDump.class
HeapDump.java
java_pid4888.hprof
なお、
http://java.sun.com/javase/ja/6/docs/ja/technotes/tools/share/jhat.html
によれば、
Java のヒープダンプを生成するには、いくつかの方法があります。
* jmap の -dump オプションを使って実行時にヒープダンプを取得する。
* jconsole のオプションを使って HotSpotDiagnosticMXBean 経由で実行時にヒープダンプを取得する。
* -XX:+HeapDumpOnOutOfMemoryError VM オプションを指定すると、OutOfMemoryError のスロー時にヒープダンプが生成される。
* hprof を使用する。
という事らしい。
jhatの引数にダンプファイルを指定して起動すると、
$ jhat java_pid4888.hprof
Reading from java_pid4888.hprof...
Dump file created Tue Mar 25 14:19:26 JST 2008
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Hashtable.rehash(Hashtable.java:356)
at java.util.Hashtable.put(Hashtable.java:412)
at com.sun.tools.hat.internal.model.Snapshot.addHeapObject(Snapshot.java:153)
at com.sun.tools.hat.internal.parser.HprofReader.readInstance(HprofReader.java:724)
at com.sun.tools.hat.internal.parser.HprofReader.readHeapDump(HprofReader.java:470)
at com.sun.tools.hat.internal.parser.HprofReader.read(HprofReader.java:222)
at com.sun.tools.hat.internal.parser.Reader.readFile(Reader.java:79)
at com.sun.tools.hat.Main.main(Main.java:143)
がーん。気を取り直して。
bash-3.2$ jhat -J-Xmx512m java_pid4888.hprof
Reading from java_pid4888.hprof...
Dump file created Tue Mar 25 14:19:26 JST 2008
Snapshot read, resolving...
Resolving 3312656 objects...
Chasing references, expect 662 dots......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
Eliminating duplicate references......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
Snapshot resolved.
Started HTTP server on port 7000
Server is ready.
となった後、http://127.0.0.1:7000/ にアクセスして、Heap Histogramをみると、
Class Instance Count Total Size
class java.lang.Integer 3308797 13235188
となってて、Integerが怪しいね、って話になる。
References by Typeで辿ると、
Class Count
[Ljava.lang.Object; 3308667
ってのがあって、
Objectのでかい配列がIntegerの配列になってるんだ、って閃いて、
Collection系のインスタンスが怪しいね、って閃いて、
ArrayListじゃね?、と閃いて解決。
あってるよね?
2008年2月27日水曜日
登録:
投稿 (Atom)