英辞郎辞書を辞書.appで使う
まずは、「Leopardの「辞書」アプリで「英辞郎」を使う」を参考にするのですが、そのままするとエラーが出ることがあります。2010.02.28現在、「英辞郎+略辞郎」で成功した事例を紹介します。
シェルがtcshの場合を想定。
unlimit stacksize
としてスタックサイズを一時的に大きくしましょう。これでスタックサイズが8MBバイトからから64MBバイトまで拡張されるので、変数の格納サイズが大幅に増えます。結果としてSegmentation Faultがおきにくくなります。
注意点:Finkなどを使っている場合には、/sw/bin/cpはリネームしましょう。-Xオプションがないとエラー出てしまいます。
和辞郎は、
time ruby eiji_conv.rb < WAEI-118.TXT > Waei.txt
MyInfo.plistの英辞郎を和辞郎に名称変更(エディタはCotEditor、Mi、CarbonEmacsなどを使えばいいでしょう)
time make
make install
timeを頭につけると実行時間が表示されます。makeは恐ろしく時間がかかります。英辞郎はたしかに1日以上かかりました・・・。
なおまだ試してませんが、英辞郎+略辞郎+和辞郎も可能でしょう。いちおう方法を書いておきます。
それぞれの辞書のテキストファイルをproject_templatesにおいておいて、
ruby -Ks ryaku_conv.rb , RYAKU-118.TXT > Ryaku.txt
ruby -Ks cat.rb EIJI-118.TXT Ryaku.txt WAEI-118.TXT > Eiji-Ryaku-WAEI.txt
time ruby eiji_conv.rb < Eiji-Ryaku-WAEI.txt > MyDictionary.xml
(大体 MacBookPro 15inch 2.8GHz 6GBメモリで、2時間ちょっと
6GBメモリも食いつぶすので、仮想メモリをOFFなど特殊設定をしていてたら解除すること)
unlimit stacksize
time make
(大体1日ぐらい。こちらはメモリはあまり使わない)
make install
しかしまぁ、indexエラーで止まってしまいますね。和辞郎のほうは。
2010.02.29現在、和辞郎+例辞郎(v118)のmake失敗。
add_body_record[19108:903] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSCFArray objectAtIndex:]: index (1) beyond bounds (1)'
unlimit stacksize
ruby -Ks cat.rb WAEI-118.TXT REIJI-118.TXT > WAEI-Reiji.txt
time ruby eiji_conv.rb < WAEI-Reiji.txt > MyDictionary.xml
(9時間もかかりました。WAEI-Reiji.txtは279.9MB、MyDictionary.xmlは1.01GB)
(Eijiro+Ryakuの場合は、152.4MBで2時間台でおわったんですけどね)
time make(午前8時4分より実施中)
これは失敗。和辞郎だけでも失敗。
Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSCFArray objectAtIndex:]: index (1) beyond bounds (1)'
とAdding body data.で止まってしまう。
最後に、MacOS10.5 (Leopard)のDictionary Development Kitに置き換えてmakeしてみるもおなじ。これはstacksizeはあんまり関係ないんでしょうかねぇ。
Makefileの「DICT_BUILD_OPTS」に-s 0や-v 10.6等をいれるも効果無し。