2010年5月26日水曜日

久々の ImageMagick

スキャナで取り込んだ画像を PDF に変換するために ImageMagick をインストールしたので、その防備録。

なぜ ImageMagick かというと、「convert JPEG to PDF linux」で探したら、ImageMagick で出来るよと言いうのがあったから。 ImageMagick は大昔は自分でインストールして使用していた時代がありましたが、最近はさっぱり。 標準のリポジトリを検索しましたが、見つからなかったので、自分でインストールすることに。

Google で「imagemagick source」を検索すると、一番上に求めるページが出てくるので、 素直にそこからソースコードをダウンロード。

$ wget -P /PATH/TO/DOWNLOAD/ ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick.tar.gz

続いて展開。

$ cd /PATH/TO/BUILD/
$ gtar xfz /PATH/TO/DOWNLOAD/ImageMagick.tar.gz
$ cd ImageMagick-6.6.2-0/

そして構築。 個人的に、ImageMagick のコマンド名の命名規則は許容範囲を大きく外れているので、 専用のディレクトリを作成してその下に入れることにします。 本当は Sun 謹製のコンパイラを使いたかったのですが、 構築時に警告メッセージ(軽微なものですが)が大量に表示されるので、 gcc を使うことにしました。

$ ./configure --prefix=/opt/free/imagemagick CC=/usr/gcc/4.3/bin/gcc CXX=/usr/gcc/4.3/bin/g++
$ gmake
$ gmake check
$ gmake install

実際に複数の JPEG ファイルを一つの PDF ファイルに変換するにはこんな感じ。

$ cd /PATH/TO/JPEG/
$ /opt/free/imagemagick/bin/convert *.jpeg target.pdf
$ acroread target.pdf

2010年5月17日月曜日

Ubuntu 10.04 を入れてみた

VirtualBox の更新があったので、 ついでに先日ダウンロードした Ubuntu 10.04 を VirtualBox に入れてみました。

驚いたのはインストールが早いこと。正味十分ほど。 インストールの途中は、自分の名前、パスワード、ホスト名を入れたくらいで、 何もすることが無くて寂しい。 後で df -k でディスクの使用量を見ると 3181052 となっていましたので、 約3GB を十分で書き込んだことになります。

ちなみに、Ubuntu 10.04 のダウンロードも、ほぼ同じく十分かかっていました。

$ wget -P /PATH/TO/DOWNLOAD/ http://ftp.jaist.ac.jp/pub/Linux/ubuntu-jp-cdimage/releases/10.04/ubuntu-ja-10.04-desktop-i386.iso
--2010-05-06 11:48:41--  http://ftp.jaist.ac.jp/pub/Linux/ubuntu-jp-cdimage/releases/10.04/ubuntu-ja-10.04-desktop-i386.iso
ftp.jaist.ac.jp (ftp.jaist.ac.jp) をDNSに問いあわせています... 150.65.7.130
ftp.jaist.ac.jp (ftp.jaist.ac.jp)|150.65.7.130|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 733184000 (699M) [application/octet-stream]
`/PATH/TO/DOWNLOAD/ubuntu-ja-10.04-desktop-i386.iso' に保存中

100%[======================================>] 733,184,000 1.12M/s 時間 10m 3s  

2010-05-06 11:58:44 (1.16 MB/s) - `/PATH/TO/DOWNLOAD/ubuntu-ja-10.04-desktop-i386.iso' へ保存完了 [733184000/733184000]

そしてログインすると、 アップデート・マネージャが重量なセキュリティアップデートを入れろとせかしてくるわけです。 こちらも数分で終わり。

続いて VirtualBox の Guest Additions を入れる。 「デバイス」から「Guest Additions のインストール」を選択。 /media/VBOXADDITIONS_3.1.8_61359 に移動し、

$ sudo ./VBoxLinuxAdditions-x86.run
と実行。

再起動せよと言われるので素直に再起動。 すると、う〜ん、なぜか画面が大きくなりました。 ま、この大きさにするつもりだったのでよかったわけですが。

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円からの従量制なのだとか。 その場で手続きをしてもらい、完了。

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