問題です。
以下のメソッドを実行すると、Windows上では正常に動きますが、
Linux上で実行すると、期待通りの動作をしません。
さて、なぜでしょう?
public byte[] getHash(String word) throws Exception{ MessageDigest md = MessageDigest.getInstance("MD5"); byte[] b = md.digest(word.getBytes()); }
いくつか言及していない情報がありますが、
するどい人は分かるかも?
ヒント1
LINUX上では、同じ長さのwordを渡すと同じ値がかえってきます。
ヒント2
wordはShift_JISで渡されています。
わかりましたね。 String#getBytes()で、Linuxのデフォルト文字エンコーディング でエンコードされ、??????なバイト配列に対してdigestしてたわけです。。。
これで2時間悩みました。おかげでもう朝。 明日は早く起きねば。。。
Java Developer3月号で HSQLDBが紹介されていました。 面白そうだったので、触ってみました。
HSQLDBとは、PureJavaで書かれたシンプルなRDBです。 250KBほどしかなく、warに組み込んで配布なんてことが出来ちゃいます。 サンプルやデモの配布や、お試しアプリケーションの作成にいいんじゃないでしょうか。 HypersonicSQLという名前で、 JBossやTomcatでも使われていたような気がします。
http://sourceforge.net/projects/hsqldb/
hsqldb.jarにクラスパスを通して、
DBサーバ起動
java org.hsqldb.Server -database HOGEDB
GUIクライアントツールから操作
java org.hsqldb.util.DatabaseManager
createしてinsertしてselectできました。
hsqldb.jarをWEB-INF/libに置いて、こんな感じでConnectionを取得できます。
String url = "jdbc:hsqldb:" + getServletContext().getRealPath("/db/testdb"); Class.forName("org.hsqldb.jdbcDriver"); Connection con = DriverManager.getConnection(url, "sa", "");(サーブレットからConnectionを取得する例)
DBサーバーを別に起動しなくてもいいようです。 DBのファイル(.properties, .script)はなければ自動的に作ってくれます。 getRealPath()でWebアプリのルートからDBのパスを指定すれば、 warの中に含めることができますね(?)。
家サーバにPostgresを入れてみた。
http://www.hellohiro.com/jdbcpostgresql.htm
にシンプルなインストール方法が書いていたので、
それを見てやってみました。
RPMなんですげー簡単。 本やWebを見てると、日本語(マルチバイト)を使うのに、 ソースからconfigureオプションでコンパイルしないといけない とのことで気がひけてたんですが、最近のはいらないのかしらん?
リモートPCから接続するには、以下のような設定を行う。
pg_hba.confで接続許可するホストを指定
host all 192.168.1.0 255.255.255.0
postgresql.confでTCP/IP接続(?)を指定
tcpip_socket=true
Windowsクライアント(cygwinのpsql)から接続できました。
JDBCドライバは
http://jdbc.postgresql.org/
のDownloadsから入手可能。
(Type4(PureJava)ドライバらしいので、Postgresに付属しているものを
Windowsにコピーしてきても動くとは思うが、なんとなくダウンロード
)
Class.forName("org.postgresql.Driver"); Connection con = DriverManager.getConnection("jdbc:postgresql://192.168.1.10/hogedb", "postgres", ""); Statement smt = con.createStatement(); ResultSet rs = smt.executeQuery("select * from aaa"); while (rs.next()) { System.out.println(rs.getObject(1)); } System.out.println("END");
Javaからも動いたわーん。とりあえず満足。
スペースシャトルの事故をニュースで見た。 パイロットの家族のインタビューで、 (少なくともカメラの前では)取り乱す人はほとんどおらず、 中には、宇宙開発は続けていかないといけない、 とNASAの回し者かと思えてしまうことを言う人もいた。 冒険家の家族ともなると、さすが覚悟が出来ていますね。
P2Pコンピューティング入門 という本を読みました。
名前は聞いたことがあるけど、それっていったい何なんだろう? ちょっと使ったことはあるけど、それって大きな視点で見ると、 どんな技術なんだろう? 微妙に興味のあるテクノロジーやアプリケーションの紹介が盛りだくさんです。
漠然としていた知識が整理され、新たな世界が広がります。
その他、MSのNet PassportとSunのLiberty Alianceの話題、 Notes、Exchangeなどのグループウェアの話題、 Jini、Jxta、Sun One、.Netの話題など盛りだくさんです。 話題は浅く広くですが、文章も平易でわかりやすく書かれています。
SETI@HOMEの話題もありました。 宇宙人探索プロジェクトなんて、冗談かと思ってたんですが、 本当にあるんですね。。。
余談ですが、 この本を買ったきっかけは、紀伊国屋のPCコーナーで、 かっこいい(できそうな)兄ちゃんがこの本を買っているのを見たから。 かっこいい兄ちゃんはこういう本を読むのか、 とふと手にとって見てると、けっこう面白そう。 P2Pに特に興味があるというわけではなかったんですが、 衝動的に買ってしまいました。 買って積ん読本も多い中、最後まで面白く読めました。