2010年4月21日水曜日

せっかく ispell 入れたけど aspell に…

せっかく ispell を導入したのですが、 What's the Difference Between Ispell and Aspell? に気になることが書かれています。

...Its primary advantage is that it is better at making suggestions when a word is seriously misspelled... Its disadvantage is that the approximate-matching algorithm is specific to English.

私が綴りを確認したいのは英語なので、aspell の方が適しているのかもしれません。

となれば、早速 aspell をインストールします。 過去には OpenSolaris のリポジトリに存在したようなのですが、 最新のビルドでは見つからないため、自前で構築します。

まずは、インストール先の確保。 個人的な習慣なのですが、GNU 系のモジュールを自分で構築した場合は、/opt/gnu に配置することにしています。 最近は欲しいものがほとんどリポジトリから入手できるので、インストール先のディレクトリすら作成してませんでした。

$ pfexec mkdir /opt/gnu
$ mkdir /export/opt/gnu
$ pfexec vi /etc/vfstab
$ tail -1 /etc/vfstab
/export/opt/gnu - /opt/gnu lofs - yes -
$ pfexec mount /opt/gnu

続いて、aspell 本体を構築します。 実は最初は Sun 謹製のコンパイラを使用したのですが、コンパイルエラーになりました。 ならばということで gcc を試したのですが、これもコンパイルエラー。 gcc --version で確認すると 3.4.3。ちょっと古めです。 そういえばと言うことでパッケージマネージャーで gcc を検索すると 4.3.3 があったのでこちらをインストール。 ところがこのコンパイラでもエラー。 エラーメッセージに wget_wch というシンボルがでているので man コマンドで確認すると、XPG4 の curses ライブラリに含まれていることがわかります。 該当するファイル prog/check_funs.cpp を眺めても、curses がらみであることは明らかです。 となれば、CXXFLAGS を設定すればと考えたのですが、関係ない部分に影響を与えるのは馬鹿っぽいです。 README を眺めていると、--enable-curses--enable-curses-include を使えば良さそうです。

$ wget -P /PATH/TO/WAREHOUSE ftp://ftp.gnu.org/gnu/aspell/aspell-0.60.6.tar.gz
$ gtar xfz /PATH/TO/aspell-0.60.6.tar.gz 
$ cd aspell-0.60.6
$ ./configure --prefix=/opt/gnu CC=/usr/gcc/4.3/bin/gcc CXX=/usr/gcc/4.3/bin/g++ --enable-curses='-L/usr/xpg4/lib -R/usr/xpg4/lib -lcurses' --enable-curses-include=/usr/xpg4/include
$ gmake
$ gmake install

aspell をインストールした後は、辞書をインストールします。 こちらのインストールには先にインストールした aspell が使用されます。

$ wget -P /PATH/TO/WAREHOUSE ftp://ftp.gnu.org/gnu/aspell/dict/en/aspell6-en-6.0-0.tar.bz2
$ bzip2 -d -c /PATH/TO/aspell6-en-6.0-0.tar.bz2 | gtar xf -
$ cd aspell6-en-6.0-0
$ PATH=/opt/gnu/bin:$PATH ./configure 
Finding Dictionary file location ... /opt/gnu/lib/aspell-0.60
Finding Data file location ... /opt/gnu/lib/aspell-0.60
$ gmake
$ gmake install

Emacs の中からは ispell という名前で起動しますので、 aspell が提供している ispell 互換スクリプトをインストールします。

$ cp -p scripts/ispell /opt/free/bin/ispell

ここで Emacs から M-x ispell を実行してみるとエラーになります。

Error: No word lists can be found for the language "ja_JP".

綴りを調べたいのは英語だけですので、先ほどのスクリプトで言語を指定することにします。

$ diff -u scripts/ispell /opt/free/bin/ispell
--- scripts/ispell 水 10月 27 02:12:17 2004
+++ /opt/free/bin/ispell 水  4月 21 16:59:50 2010
@@ -6,6 +6,8 @@
 #   mapping when checking files with the "ispell command".
 #CHECK_FLAGS="--keymapping=ispell"
 
+LANG=en_US.UTF-8 export LANG
+
 command=""
 
 for p

これで無事に aspell が使えるようになりました。

Emacs でスペルチェックしたいので

Emacs で ispell を使いたくなったのですが、OpenSolaris のリポジトリには無いので、久しぶりに自分で構築することにしました。

GNU Emacs FAQ を見ると、ispell は International Ispell から持ってくるのが良さそうです。現行のバージョンということで、ispell-3.3.02.tar.gz をダウンロード。

wget -P ~/PATH/TO/WAREHOUSE http://www.lasr.cs.ucla.edu/geoff/tars/ispell-3.3.02.tar.gz

README ファイルを見ると、local.h.solarislocal.h にコピーして、必要があれば編集しろとのこと。 多少の試行錯誤の結果、次のように変更。 TERMLIB は変更しないと "-lncurses" が使用されて、コンパイルに失敗します。 ファイルの置き場所は基本的に好みの問題ですが、セクション番号はシステムの流儀にあわせます。

--- local.h.solaris 水  4月 27 07:40:08 2005
+++ local.h 水  4月 21 11:16:08 2010
@@ -67,6 +67,8 @@
 #define USG  /* Define on System V or if term.c won't compile */
 #define HAS_RENAME
 
+#define TERMLIB "-lcurses"
+
 /*
  * Important directory paths.  If you change MAN45DIR from man5 to
  * something else, you probably also want to set MAN45SECT and
@@ -73,11 +75,11 @@
  * MAN45EXT (but not if you keep the man pages in section 5 and just
  * store them in a different place).
  */
-#define BINDIR "/usr/local/bin"
-#define LIBDIR "/usr/local/lib"
-#define MAN1DIR "/usr/local/man/man1"
-#define MAN45DIR "/usr/local/man/man4"
-#define MAN45EXT ".4"
+#define BINDIR "/opt/free/bin"
+#define LIBDIR "/opt/free/share/ispell"
+#define MAN1DIR "/opt/free/share/man/man1"
+#define MAN45DIR "/opt/free/share/man/man5"
+#define MAN45EXT ".5"
 
 /*
  * Place any locally-required #include statements here

そして構築してインストール。 ディレクトリの自動作成がうまくいっていないようなので、自分で作成。 そして単に make install とすると不要なファイルまでインストールされるので、 必要なファイルだけということで partial-install を指定。

$ make
$ mkdir /opt/free/share/ispell
$ make partial-install

これで、無事に ispell が Emacs から使用できるようになりました。

2010年4月14日水曜日

radiko.jp でエラー

最近、radiko.jp をよく利用しているのですが、選局でエラーになることに気づきました。 選局タブを選び、別のラジオ局を選ぶと、エラーウィンドウが表示されます。

Error calling method on NPObject! [plugin exception: Error in Actionscript. Use a try/catch block to find error.].

そこで VirtualBox 内で Windows 7 を起動。 Firefox で radiko.jp にアクセスすると、、、問題ありません。 でも、Adobe Flash Player のバージョンが微妙に古い? そこで最新に更新してみると、問題が再現しました。 バージョンが上がってバグ発生?

っと、もう一度選局してみると、もう問題が起きません。。。う〜ん、キャッシュの問題か。 別プロファイルで Firefox を起動し radiko.jp にアクセスしてみると、はい、問題ありません。 確定っぽいです。

radiko.jp は専用のプロファイルを使用してアクセスしていますので、 プロファイルを作成し直して、無事一件落着。

2010年4月13日火曜日

印刷できない!

firefox 上で Ctrl+P を押して印刷しようとしたのですが、プリンタがうんともすんとも言いません。 仕方ないのでファイルにPSとして出力し、無事印刷。 最近、両面印刷に設定を変えたのですが、ちゃんと両面に印刷。 当たり前といえば当たり前ですか。

しばらくして、渡してしまう書類の複写がほしくて、xsane のお世話に。 「コピー」を選択しておけば、一気に印刷できるのが便利。


でも、片面印刷で二枚でてしまったのが残念。両面印刷に出来るか確認せねば。

さらにしばらくして、firefox から別のページを印刷。 やっぱり何も言わずに終了。 今度は truss を使用して確認。

6164: forkx(0)     Err#12 ENOMEM [sys_resource]
6164: lwp_sigmask(SIG_SETMASK, 0x00000000, 0x00000000) = 0xFFBFFEFF [0x0000FFFF]
6164: write(83, "FFFFFFFF", 4)   = 4
6164: write(81, "03\0\0\0", 4)   = 4
6164: write(81, "\f\0\0\0", 4)   = 4
6164: _exit(1)

fork で失敗、ENOMEM ということなのでメモり空間不足は確定。 top によれば、物理メモリ4G、スワップ2G、空き2G位で、 firefox-bin の大きさは1G弱。ふむ。 ログをもう一度見てみると、forkを二回していることに気づきました。 なるほどと言うことで、とりあえず無関係の VirtualBox を停止。 これで無事印刷できるように。 何というか、次にPC買うときはメモリは8Gか16Gにせねばと。

2010年4月9日金曜日

増殖するメールアドレス

ふと思ったのですが、個人的なメールアドレスの数がとても増えてます。

  • @gmail.com - 複数のアドレスを取得し、目的にあわせて使い分けています。 Firefox でアクセスしていますので、 用途に合わせてプロファイルを作成して、混乱しないようにしています。
    $ firefox -ProfileManager -no-remote
  • @yahoo.co.jp - とあるサービスの利用のために、メールアドレスを取得しました。 こちらも Firefox 経由ですね。
  • @xxxxxx.ocn.ne.jp - ウィルコムの通信サービスに入った際に、 OCN のサービスが必須だったため、流れで取得しました。 お金の支払い等が絡んだり、実名を登録しなければならない場合は、 このメールアドレスを使用することにしていました。 こちらは、Emacs で Mew を使用して POP でアクセスしています。
  • @docomo.ne.jp - iモード携帯電話を使用していますので、必然的に。
  • 090xxxxxxxx - SMS。iモード携帯電話でも使用できますが、 実際には自分で使ったことはありません。
  • @mopera.net - 最近 Xperia を購入したので、その流れで取得。 今のところ、利用する予定なし。
  • 090xxxxxxxx - SMS。Xperia 用です。こちらも利用する予定なし。
  • @nifty.com - 大昔に、nifty を利用していたことがあるので。
  • @地域ドメイン.jp - 以前、UUCP サイトを自前で運用していたのですが、 IIJ が UUCP サポートを廃止したので、それに伴い停止。

どうでも良いメールアドレスもありますが、重要なメールアドレスもあります。 その重要なメールアドレスの一つに、@xxxxxx.ocn.ne.jp があります。

実は今日、ウィルコムの通信サービスの解約手続きを始めました。 契約した当初はそれなりの目論見があったのですが、 実績を見ると、まったくではないものの、ほぼ無駄だったようです。 ここしばらくは、通信カードは取り出されて、埃をかぶっていました。

解約となると、問題となるのは @xxxxxx.ocn.ne.jp のメールアドレス。 このメールアドレスは残したいので、いきなり解約手続きに入ることはためらわれます。

そこでまず www.ocn.ne.jp を見てみると、 微妙に探しづらいプランに、OCNダイヤルアクセス「コミ・デ・プラン」があります。 一番安いもので月額420円。 プランの変更は Web から出来るようです。

それでも事故があると困るので、サポートに電話して相談。 事情を説明すると「OCN バリュープラン」が良いのではと即座に提案されました。 「OCN 各プラン比較」というリンクから行ける同名ページに記載されていたのですが、 自分では見つけられなかったプランで、262.5円からの従量制なのだとか。 その場で手続きをしてもらい、完了。

続いて、ウィルコムの解約手続き。 こちらはウェブの構成が壊れていますが、結局は電話をしなければならないことを理解。 電話して、手続きを進めてもらいました。