2010年4月29日木曜日

またもやXMLに翻弄される


xmlからmemcachedへデータを書き出すjavaプログラムをつくった。
xml parserとしてjava 1.6標準のStAXライブラリがあるが、
これが曲者であった。
巨大ファイルを扱ってもOutOfMemoryErrorにならないはずだが、
OutOfMemoryErrorに。
自分のコードをさんざん疑って時間を浪費したが、
なんとこれはライブラリのほうのバグであった・・・

xml parseで、apache xercesを使っている部分があるらしいのだが、
そこでchar[]にストリームをため込み続けてOutOfMemoryに至るよう。
memory analyzerのメッセージを読んだときは最初???だった。
ちなみにこれはjava 1.6 update 14で修正されたというアナウンスがあったらしいが、
直ってないらしい・・・

結局、海外サイトの掲示板で書かれていた方法で対処。
woodstoxという同じくStAXを扱うjava StAXからの拡張ライブラリがあり、
そちらを使用。
といってもコードを書き換える必要はなく、
classpathでライブラリのjarを含めるだけ。
これで、巨大XMLファイルでも、低ヒープメモリで扱えるようになった。

(apache xercesのほうのライブラリをclasspathに含めてもいけるかもしれない、が試していない)

2010年4月25日日曜日

XMLDBに翻弄される…


MEDLINE(PubMed)の検索インデックスで使われているシソーラスデータでMeSH(Medical Subject Headings)というものがある。
1年毎の改訂で、最新版のダウンロードはフリー。
こいつがXMLファイルで提供されていて、
安易にXMLDBを使ってみようと思ったのは浅はかだった…

現在構想しているシステムのサブシステムで、MeSHデータの検索ができるようにしたい。
しかしXMLDBは時間がかかりすぎる。
eXistというものを意気揚々といれてハマった。
これはDOMでツリー構造を保存している?
MeSHのデータは300MB弱で、余裕でOutOfMemoryError。
(ひねくれてjavaヒープメモリを数Gbとか用意してやりたくなるが、諦めた)
IBMのDB2 Express-Cがフリーで使えるが、なんかめんどくさくなった(笑)
高速を謳っている他のXMLDBは金がないので手が出せない。
結局、今後の処理のことも考えて、memcache+MySQLみたいな感じにしとくか、と思い始めた。

なんか1日ちょっとで終わる予定の工程が1週間以上伸びてる;

2010年4月12日月曜日

Ninja

海外で、達人や専門家のことをNinjaと呼ぶ人たちがいるらしい。

しかしWorld of Warcraft(のみならずMMORPG)でも、
Ninjaという言葉がけっこう使われていることを思い出した。
簡単にいうとゲーム内で他のプレイヤーの同意なく、レアアイテムを勝手にかっぱらっていく人だ。
もっともゲームとはいえ社会性が破綻していると長く続けられないので
(MMORPGは一般にソロではたいしたことができんのです)
そういうことを繰り返すのはお子様が多いとは思うのだが。


2010年3月30日火曜日

Apache Axis2についていろいろググってみた

PubMedという医学、biomedical系の学術文献検索サイトがある。
こちらを使ってちょっとした検索支援サイトをつくろうと考えている。

とにもかくにもシステムからPubMedにqueryを投げられないと話にならないが、
httpリクエストでGETするか、SOAP(axis2で稼働)で取りに行くということらしい。
SOAPの説明見ると、どうやらコンパイル済みのスタブファイルがDL可能で
簡単そうなのでSOAPでテストクライアントをつくってみることにした。

しかしそのjarファイルも依存関係がいろいろあるらしく、
結局axis2のlibに入っているjarをすべてビルドパスに加えることに・・・。
マジですか。
まあどうせサーバに入れるものだし、いいか。

次は自然言語処理のライブラリをいじくらねば。



2010年3月12日金曜日

GWT+IEの不具合

gwt2.0 + uibinderを使って何かつくってみてる最中であるが、
だいぶuibinderのくせみたいなものがわかってきた。

しかし順調に見えたのも束の間、chromeとfirefoxでは問題ないものの、
IEでLayoutPanel関連?が全く表示されないという状態を発見。

日本語情報でこれに関連したものがないなあと思って
GWT groupsのスレッドを検索してみたら、同じ問題に遭遇してる人がいた。

とりあえずの解決策は、javascriptを呼び出すhtmlの中で
最初の<!DOCTYPEなんちゃらの部分を次のように書き換え。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">

いくらgwtでつくっていても、javascriptの基本は押さえておいた方が良さそうだ。
(quirks modeでなくstandard modeにする必要がある。
 上記のコメントでも完全なstandard modeではないよう)

2010年3月10日水曜日

subversion関係のトラブルで消耗した・・・

この2日間、不毛であった。

きっかけはsubversionからのチェックアウト。
普段、バージョン管理システムでsubversionを利用している。
eclipse+subversiveからの利用だったが、
どうも昨日から調子悪いらしい。
挙げ句の果てにプロジェクトファイルも同期されなくなるわ、compileもうまくいかなくなるわで
原因究明に疲れた。一部ソースを間違って消してしまうわで、バージョン管理システムを使ってるのになんともおかしな状況。

結局、0からプロジェクトを作り直し、せっせとソースをコピーして復旧。
パスの調整なんやらで気をつかって。
eclipseそのものもなんか挙動が変なので、
これも一から入れ直し。
今度はsubclipseを使ってみることにした。(どうもその方が安定するらしい)
今のところ快調。

2010年2月20日土曜日

A列車で行こう9


はじめてA列車シリーズに出会ったのは中2の18年前(!!)
1と2のセットパッケージを買ってはまったのは懐かしい。
その後、3→5→4(winXP版)という遍歴をたどった。
しかし6以降の方向性がわからなくなりtapering。

この冬、9が出て非常に楽しみで、買うかどうか悩んでいたが、
アマゾンのレビューを見ると・・・
ものすごい酷評である・・;
買うのはよしておこうと思った。

それよりもまたWarcraft3病が出てきた。
ひとにあげなきゃよかった・・・
(下手だけども)