リンク: [ホーム] [自己紹介] [リンク集] [アルバム] [ソフトウェア] [発表文献] [その他]

まさおのChangeLogメモ / 2005-04-26

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

2005-04-26 Tue

* URL memo

- Meadow2 Memorandum: delicious users
- LLDN - LLDN 開催のお知らせ: delicious6 users
2005年は、Lightweight Language Day and Night(通称:LLDN)
- propaganda for FSFS: delicious43 users
"FSFS" is the name of a Subversion filesystem implementation, an alternative to the original Berkeley DB-based implementation.
- OpenSSH FAQ 3.13: delicious users
3.13 - OpenSSH 3.8 にアップグレードしたら、いくつかの X11 プログラムが動かなくなった。
- 超リアルなドラクエレビュー。: delicious users

* SKKハング

SKKで個人辞書+L辞書に無いエントリを変換しようとすると、どうもハン
グしまい、変換できない状態が続いていた。

.skk で辞書読み込み部分にデバッグプリントを入れ、同時に skk.el の
ソースを読みながら原因を追求してみた。

これは、最近 .skk で二分探索をできるだけ使うようにするための設定と
して、以下を 10000 から 100 に変更したのが原因。

(defvar myskk-search-jisyo-limit 100)

何が起きるかを以下のデバッグプリントを埋め込んで探ってみた。

--- skk.el 27 Feb 2005 23:43:50 -0000 1.289
+++ skk.el 26 Apr 2005 09:09:20 -0000
@@ -3411,6 +3411,7 @@
  (goto-char (+ min (/ size 2)))
  (beginning-of-line)
  (setq p (point))
+ (message "%s: %s, %s" (mbuffer-substring-no-properties p (1- (search-forward " "))) min max)
  ;; 送りありなら逆順に比較を行なう。
  (let ((p-is-further
  (if okurigana


ようするに、一行が100バイト以上になっているような行が辞書ファイル
にあると、その行で二分探索を永遠に続けてしまう模様。

本来なら、ここの二分探索部分にそうならないような処理を加えるべき。
一時的な回避策として、一行の最大バイト数をカウントしてみると、

% perl -e '@a=<>;print sort {length($b)<=>length($a)} @a;' SKK-JISYO.*
こう /公/項/考;考案/孝;孝行/功;功罪/劫;永劫/[囲碁]/甲/香/口/校/行/高/広/硬/厚/工/江/港/稿/後/好/光/孔/膏/綱;つな/鋼;はがね/講;講座/侯;侯爵/候;候補/鉱;鉱山/抗/航/斯う/乞/国府;こくふ/向/巧;巧拙/降;降板/絳;あか/酵;発酵/哮;咆哮/吼;ほ・える/拘;拘束/佝;佝僂病/怐;(おろか)/鉤;かぎ/鈎;「鉤」の異体字/勾;勾配/宏;宏大/浤/紘;八紘一宇/肱;ひじ/砿;「礦」の異体字/昿;「曠」の異体字/絋;(わた)/弘;弘法/交;交差/効;効果/絞;絞殺/郊;郊外/鮫;さめ/傚;(ならう)/咬;咬合/效;「効」の旧字/狡;狡猾/皎;(しろい)/蛟;(みずち)蛟竜/佼;立正佼成会/餃;餃子(ぎょうざ)/鵁/耕;耕作/畊;「耕」の異体字/耗;消耗/更;更新/梗;脳梗塞/哽;(むせる)/峺;(さえぎる)/荒;荒野/慌;恐慌/縞;しま/敲;推敲/犒;ねぎら・う/稾;「稿」の異体字/鎬;しのぎ/...

→ 2287バイト。

とりあえず 3000 にしとけば、まあ安全みたい。