Kazuhiro's blog
ようこそ! Kazuhiro's blog
月曜日, 4月 19 2021 @ 12:47 午後 JST
 記事を友人にメールする 印刷用画面 

OALD7の圧縮について

general

Oxford Advanced Learner's Dictionary, 7th Editionに付属するOxford Advanced Learner's Compassのデータのうち、圧縮部分に関するメモです。 基本的には先人による解析をトレースしただけです。 圧縮部分も含めて暗号化はされていないので、伸長できれば比較的容易に調べる事が可能だと思います。 ただし、いわゆるidm形式一般にあてはまるものかどうかは分かりません。

本文テキストを例に出します。CONTENT.tdaが圧縮されたデータになります。圧縮されたファイル名に拡張子tdzをつけたファイル名(この例ではCONTENT.tda.tdz)がそのインデックスになります。

圧縮されたデータは、ファイルの末尾にnull文字をつけたものをいくつか結合したもの(以下チャンクと呼びます)をdeflate圧縮し、それを更に結合させて作成されています。ファイル名は別ファイルに収録されます。

インデックスは8バイトが一組で収録されており、その8バイトのうち、先頭の4バイトに圧縮前のチャンクのサイズが、後半の4バイトに圧縮後のサイズがそれぞれリトルエンディアンで収録されています。

本文データのようなテキストファイルを前から順番に取り出すだけの場合、CONTENT.tda.tdzから8バイトずつ読み込み圧縮されたチャンクのサイズを得て、CONTENT.tdaから圧縮されたチャンクを取得します。圧縮されたチャンクはzlibのinflate関数にかけて展開、null文字を区切りとすることで個々のエントリを得ることができます。

n番目のエントリの位置は同じディレクトリのfiles.datに収録されています。テーブル構造は同じディレクトリのconfig.cftを参照して下さい。尚、エントリの位置は圧縮されたチャンクを伸長して結合した場合のオフセットを指しています。 任意のn番目のテキストを得る場合は、CONTENT.tda.tdzに収録された圧縮前のチャンクのデータサイズから目的のテキストが存在するチャンクを決定してデータを取り出します。チャンクをまたいで存在することは無いようです。 テキストの場合はnull文字に当たるまで読み込んでもよいですが、音声・画像のようなバイナリデータの場合は次のエントリのオフセットも取得して伸長後のデータサイズを決定する必要があります。 個々のバイナリデータのサイズは

(n+1)番目のオフセット - n番目のオフセット - 1

のようになります。最後の-1は末尾のnull文字を削る必要がある為です。また、最終エントリについては次のエントリのオフセットがないので例外処理が必要になると思われます。

タグ:OALD7

 記事を友人にメールする 印刷用画面 

oald7-fpwを公開

general

OALD7のCD-ROMを見ていましたが、どうも期待するようなインデックスは存在しないような気がしてきた(Jammingでもインデックスを作成しないといけないようだし)ので変換ツールをもうちょっとましにして公開してみました。こっちのサイトにはまだ準備していません。

といっても字下げやらを指定しやすくしただけで、あんまりちゃんと調整していません。本家のブラウザと比べてこう見えて欲しい等ありましたら、字下げとか改行に関してはある程度は対応できるかもしれません。それから、Lookupとeblookで使用する場合は20070806以降をお薦めします。

(追記) こっちのサイトにもページを用意しました

タグ:OALD7 FreePWING EPWING

 記事を友人にメールする 印刷用画面 

OALD7をFreePWINGで変換

general

できなくもなさそうという事で、とりあえずテキストだけやってみました。 書式はちょっとだけ整えましたが、ほとんどxmlのタグを取っ払っただけです。

画像がJPG、音声がMP3なので、この辺のデータも入れるのならFreePWINGよりはEBStudioでの変換を試みた方がよいと思います。

個人的には辞書の変換よりは直接ひく方に興味があるのですが、インデックスがなんだかよく分かりません。

タグ:OALD7 FreePWING EPWING

 記事を友人にメールする 印刷用画面 

OALD7について

general

勢いあまってOALD7を買ってしまいました。 付属のCD-ROMをインストールする前に少し調べてみましたが暗号化はされておらず、圧縮されている部分もすぐに (zlibで) 伸長できました。 少し腕に覚えがあればFreePWINGやEBStudio向けの変換ツールを作成する事もそれほど困難ではないと思われます (xmlの解釈が面倒そうですが)。 尚、私は腕に覚えはありません。

変換ツールの作製に興味はあるが、買ってみて変換できませんでしたじゃ困るという人達むけの情報でした。

タグ:OALD7

 記事を友人にメールする 印刷用画面 

wikipedia-fpwを公開

general

前回紹介したウィキペディア日本語版のダンプデータからJIS X 4081な書籍を作るツールの続きです。取り敢えず相互参照できるようになったので公開しました

まだまだ整形がおかしかったり、実体参照やそのままでは収録できない文字の変換テーブルも全然作っていないのですが、いつまでたっても終わらない気がしたので気がついたら修正していくことにします。

正直なところ、Perlを知らない人間が動けばよしで書いたコードです。 変換テーブルの追加や修正、ツール自体の修正等ありましたらお気軽にどうぞ。

タグ:Wikipedia FreePWING EPWING

 記事を友人にメールする 印刷用画面 

WikipediaのダンプデータをJIS X 4081に変換する

general

ウィキペディア日本語版のダンプデータをFreePWINGで処理してみました。 UTF-8な文字とか画像とか音声とか数式とか表とかは全てオミットして、何も考えずに表示できるテキストだけ抽出しています。 他項目へのリダイレクト等を省いて約43万弱の項目があり、HONMONファイルは約1.2GBになりました。

ちなみに、本当は英語版のウィキペディアに挑戦しようと思ったのですが、ダンプデータが圧縮した状態で2.5GBというのを見て一瞬で方針を変更しました。

やっつけっぷりのかなりひどいコードですが、相互参照を扱えるようにできれば一度公開してみようかと思います。

タグ:Wikipedia FreePWING EPWING

 記事を友人にメールする 印刷用画面 

ノートPC

general

ノートPCを新しくしました。 ちなみに、今まで使用していたのはThinkpad X23です。 速さはあまり気にしていなかったのですが、メモリが最大640MBまでしか積めなくて悲しい事が時々あったので、バッテリがへたって来たのを契機に買い替える事にしました。

購入したのはパームレストが熱いと評判のThinkpad X60です。 うわさに違わず無線をオンにしているとかなり熱いです。 (質量が)軽くなったのはいいですが、色々使いまわしができないのが残念です。 それから、右から左から線が生えているのでポートリプリケータが欲しくなりました。

という事で、あり余るマシンパワーとメモリ(はまだ増やしてませんが)を浪費するためにVMwareでNetBSDを入れてみました。 NetBSDである事にあまり意味はありませんが、これでUNIX環境での動作検証がしやすくなると思います。

 記事を友人にメールする 印刷用画面 

掲示板の廃止

general

能動的に行ったわけではありませんが、レンタルしていた掲示板がいつの間にやら消されてしまいました。 多分閑古鳥が鳴きすぎたのだと思います。 元々そういう規約なので削除される前に自分で何か書き込めばよかったのですが、すっかり忘れていました。

新しい掲示板についてですが

  • 同じところでもう一度掲示板を借り直す
  • 別のところで借りる
  • 自前で立ち上げる

のどれかにしようかとも思いましたが、現状では書き込む人もほとんどいなかったので取り敢えず無いままにします。 ニーズがあるようならまた検討という事で。

尚、質問等は電子辞書オープンラボのMLまでという事にしていますが、わざわざ入るのも面倒という場合は直メールで送って頂いても構いません(どうせ数も無いので)。

 記事を友人にメールする 印刷用画面 

添付メッセージの保存 (Wanderlustで)

general

以前にemacs-mime-jaに投稿しましたが誰からも反応がなかったのでメモ。 私は、メーラにWanderlustを使用しています。 受信したメールに添付されたmessage/rfc822なデータをディスクに保存しようと思ってmime-preview-extract-current-entityを実行すると、保存されたデータの改行コードがCRLFになってしまいます。 また、Content-Transfer-Encodingが8bitになっている添付データ(実際に受け取ることはまず無いですが、自作は可能です)を保存しても、同様にLFがCRLFに置換されてしまいます。

おそらくWindows環境のEmacs22ではデフォルトの改行コードがCRLFになった事による影響だと思われます。MLへの投稿にも書いた通り、下記のパッチで症状はなくなりますが正しいかどうかは分かりません。

--- mel.el.org	2005-07-06 11:09:04.000000000 +0900
+++ mel.el	2007-02-26 19:56:06.603177600 +0900
@@ -86,7 +86,7 @@
 
 (defun 8bit-write-decoded-region (start end filename)
   "Decode and write current region encoded by \"8bit\" into FILENAME."
-  (let ((coding-system-for-write 'raw-text)
+  (let ((coding-system-for-write 'no-conversion)
 	format-alist)
     (write-region start end filename)))

(追記) とっくに2ちゃんねるで指摘されていました。

タグ:Emacs Wanderlust FLIM

 記事を友人にメールする 印刷用画面 

携帯電話のアラーム

general

携帯電話の電池が残り少なくなり、後で使う為に電源を切っていたところ、アラームを設定していた時刻に自動で電源が入ってびっくりしました。

ちょっと調べた限りではそれなりに採用されている機能らしいです。 ちなみに、私が使っている機種ではその機能はオフにはできないようでした。 残り30秒の電池でそんな余計な事はしてくれなくていいですとか思ったけど、もっとPDA的な使い方をしている人にはありがたい機能なのかもしれません。

そういえば、携帯電話のスケジュール機能を使い込んでいる人はどのくらいいるのでしょうか? 少なくとも私の身の回りでは見かけたことがないです。 電車の中などでもメールを打っている人はいてもスケジュールをチェックしている人は見たことがないです。 でもまあ、母集団がかなり大きいし、いろんなソフトも出回っているようなので、PDAでスケジュールを確認する人よりよっぽど多いのかも知れません。

(追記) 念の為、PDAでスケジュールの確認をしている人も身の回りや電車内では見かけたことはありません(自分自身を除いて)。

(追記 その2) はてなのアンケートによればある程度は使っている層があるようです。