Emacs

Emacs23へ完全移行

長らくBlog記事を書いてなかったが、前の記事は春先に書いた物で気がつけばもうすぐ紅葉。今年はいろんなことに翻弄された結果、コンスタントに記事を書くと言う状況がなかなか作れなかった。(やる気がいろいろ抜けたとも言うが・・・) 小難しいことを考えても仕方ないので、少しずつ記事を書いていこうと思う。
大学時代からUnix文化に接して暮らしてきたせいか、基本的にGNU Emacsをメインのメールやプログラムを書く環境に用いている。そのためWindowsでもWindows版 GNU Emacsの1つであるMeadowを使ってきた。Meadow自体は日本語の特殊環境を踏まえていることもあって、Windowsの上では非常に使いやすいのだが、GNU Emacs 21.4から派生したMeadow 2.10から長らくメジャーバージョンアップもされず、他の環境で用いているバージョンとの乖離が大きくなってしまって、だんだんと疎遠になってしまった。最近Windowsでもちょっとしたプログラム書きとしてのRubyのスクリプトを書くにも、関数型言語のお勉強としてSchemeの実装の一つGaucheHaskell Plathomeが使いやすくなってきたので、急にEmacsの需要が出てきたというわけである。

サーバ環境アップデート

先週は秋の大型連休だったのですが、なかなか時間が取れていなかったので、1年半ぶりにサーバ環境をアップデートしました。(とはいうものの、FreeBSD自身のベースのユーザーランドは手をつけていないけど。こっちはあまり気合いがいらないので追々に。)

まず長らく使用してきたperl-5.8系(5.8.8)から5.10系にアップデート。さすがにもうPerl5系はここいらでしばらくでかいバージョンアップはなかろうという判断。一応MTOSを動かせるようにライブラリをインストール。残った問題点はImage::MagickとCrypt::DSAのインストールがうまくいっていないこと。どちらもどこが問題なのか突き詰めている間に連休が終わってしまったので放置。Image::Magickは写真なのでサムネイルやCAPTCHAの画像生成を行うために使っていたが、サムネイル作成はGDにお任せにすることにして、CAPTCHAに関してはreCAPTCHAで代用することとした。ただしれCAPTCHAの字が読みにくい。私人間なんですが。
最近あまり使っていないがrubyは1.8系と1.9系の一応最新版に追従しておいた、入れただけで放置。Pythonは最近始めてみたので2.6.2を導入。
今回のアップデートで一番大きかったのはEmacs22からEmacs23への変更か。僕はもう10年くらい前からEmacs+SEMI(APEL/FLIM/SEMI)+Wanderlustという環境でメールの読み書きをしているので、エディタのEmacsのバージョンアップはメール読み書き環境の大幅な変化を引き起こす。今回のアップデートでUTF-8周りの文字化けメールがほぼ解決しそうである。まあEvolutionのような訳の分からない思想(iso-2022-jp なヘッダーの符号化で q-enc 使って、本文はUTF-8とか)で送ってくるのはヘッダも本文も読めなくなって大きな問題。まあ読めないメールは読み飛ばせばいいのであるが、読めない方が悪いとかいう強者の論理を持ってくるけしからん人がいるので、Emacs23には期待していたのだ。効果は予想以上に大きい。おおむね読めるようになった物の、やはりCJKな人たちがこれまでの歴史を踏まえて作ってきたMUAを使いましょうよと声を大にして言いたい。あと何も考えなくてもUTF-8が使えるようになったのは大きいな。
あとはApacheの最新版への追従とかそんなところ。あとsshdの設定も変更してみた。以前よりは厳しめの設定となっているはずである。(だいぶんGroupとかアクセス先の制限とかかけてみたし。)
あとMovableTypeの設定を変更してみた。これまではユーザー登録をできなくしていたのだが、たぶんめんどくさい向きもあると思うので、ユーザー登録をできるようにしてみた。新規ユーザーはコメントのみ投稿可能。あとCrypt::SSLeayをインストールしたので、いろいろなOpenIDをつかった認証も行けるはずであるが、これらはテストが足りないので、使ってみてください。いちおうmixi OpenIDとかは使えそうではあるけど。

2005年11月22日 火曜日

なんでもかんでもExcel症候群

何でもかんでもPowerPoint症候群の弊害を日記で書いたのだが、それよりも世の中に広く広まっている病的な物と言えば、_なんでもかんでもExcel症候群_であろう。とにかく通常の表だけに飽きたらず、提出書類から報告書まで_何でもかんでもExcel_なのである。つまり「何でもかんでもExcel症候群」とはExcelだけですべての仕事が完結してしまう恐ろしい病気なのだ。
その病巣の由来を簡単に予想するとすれば、子供の頃に升目の入ったノートで漢字の書き取りをやらされ(つまりカーニングとかに無頓着になる)、読書感想文などの類は原稿用紙で書かされ、漢字は少ない文字数で情報量を詰め込めることからすっきりとした表が書きやすく、何でもかんでも_表にしないと気が済まない_という日本人の悲しい習性に由来する物であろうと思うのだ。
まぁUnixでEmacsしか使わないというのと似たような話ではあるのだが、典型的なEmacsユーザーが扱うのは汎用的なテキストファイルであり、Emacs LISPでがんがんプログラムを書く(設定ですらLISPを書かねばならないので、多少は誰でも書く物だ)人が多い用に思われる。Excelの場合は、XLS形式という特殊なフォーマット(最近のはXMLなのか?)を用い、適当なワークシート関数などを表層的に使いこなしている人が多く、Excelの基本技とも言えるピボットテーブルとかソルバーを使いこなしている人がどの程度いるかと問えば、結構怪しい物だ。
まぁ会社で働いているとこういう病的な世界と常に隣り合わせであり、いつも精神汚染を受けているのであるが、これを前向きに楽しむにはどうすればいいか? ということに焦点を絞り込んで生活しないとやってられないと言うことになるであろうか。
そんなわけでExcelをちゃんと使いこなすにはVBAで遊びまくればいいのであるが、テキストファイルとのつきあいもやめられない。Unixな環境に一度でも触れてしまうと、VBAのお気軽さを楽しんでいても感じる最大の問題点は_正規表現が使えない_と言うところがなやましい。これまで正規表現(とハッシュ)を使うためにVBAからだと駄目だと思い、Active PerlとかActive Rubyとか非VBAでCOMオブジェクトをさわれる言語を選択していたのであるが、書いたプログラムを使ってもらうのに_わざわざPerlだのRubyだのをインストールしてもらわねばならない_という痛い問題があった。Windowsで全然閉じていないのである。Mac OSXみたいにPerlとかRubyがインストールされていればこんなことは考えなくて良いのだが、PerlやRubyを使うのは_Windows的なやり方ではないのである_と言う結論に落ち着いた。
Windows的にどうすればいいのかと言う話なのだが、結局のところ現在のほぼすべてのオフィスにあるWindows環境で前提として良さそうな物は、Internet Explorer 6 SP2とExcelであろうと言うことになる。いろいろ調べているとIE5以降だと、WIndows Scripting Hostが使える。_まてよWSHにはたしか正規表現オブジェクトがあったぞ_と思い出して、さらにCOMで呼び出せるじゃんと言うことを思い出したので、一気にこの方面の悩みが解消した。要はWSHの正規表現オブジェクトをVBAのオブジェクトにしてしまえばいいのである。なんてこったい。こんなので数年悩んでたよ。とりあえず、あるディレクトリにある複数のファイルを選択して、そのすべてのファイルに、入力したパターンマッチをして置換を行うVBAプログラムを書いてみよう。

2005年04月15日 金曜日

mkdiary用のAmazon書影表示のためのスクリプト

うちの日記用にAmazon書影表示のためのスクリプトを表示させるフィルタを書いてみた。ざっくりSOAP4Rの例題通り。
内容は[ASIN:0123456789]というパターンがあると、AmazonのASIN検索を行って、書影イメージと著者名(ある場合のみ)と書名に置き換えてくれるというものです。(フィルタ動作するところまでしか試してないけど。)たとえばこんな感じ。
[asin:4906391702]
という文字列を

<div class="amazon">
  <a href="http://www.amazon.co.jp/exec/obidos/ASIN/4906391702/ref=nosim/XXXXXXXXXX-XX/">
    <img src="http://images-jp.amazon.com/images/P/4906391702.09.MZZZZZZZ.jpg" alt="やさしいEmacs‐Lisp講座" title="やさしいEmacs‐Lisp講座">
  </a><br>
  広瀬 雄二 / <a href="http://www.amazon.co.jp/exec/obidos/ASIN/4906391702/ref=nosim/XXXXXXXXXX-XX">やさしいEmacs‐Lisp講座</a>
</div>

と変換する。絵を右に寄せたり、字を変えたりって言うのはclass指定したのでCSSでなんとかなるかなと思っている。(ソースいじってもいいですけど。)
依存するrubyパッケージは、SOAPを用いて通信を行う(クエリーを出す)のでSOAP4Rパッケージと、通信自身がUTF-8で行われるのでuconvパッケージに依存。1.8.1までKconvでUnicode関連の処理ができないこととこのページを書いているサーバにインストールされているnkfが古いので、こういうことになっています。そのうち書き換えるか…多分ruby-1.8系ならSOAP4RだけインストールすればOK。ruby-1.6系にインストールするのは値と大変。僕はもう使ってないので自分で調べてください。
uconvとkconvを併用している理由は、rubyのiconvパッケージのインストールに失敗していることと、うちの日記はISO 2022-JPであるためuconvとkconvを併用せざる得ないため。(SOAP4Rを使ったやりとりはUTF-8だし)しています。なんか大いなる無駄な気がしますが、nkfのラッパーのkconvとかnkfだとUTF-8が使えないし、uconvはEUC−JPとCP932(WindowsのShift-JIS亜種)とUCS-4とUTF-16とUTF-8しか使えない。微妙にEUC-JPしかかぶらないし…
使用上の注意ですが、これを使うにはAmazonのアソシエイト会員(たぶん必須じゃない)とデベロッパー登録をする必要があるので、注意してください。

2005年04月14日 木曜日

今日は1日中XML/HTML周りの調査

サイト全体の見直しを考えていて、これまで積んできた日記を中心とするデータの再利用を行うため、XMLやXHTML周りの調査など。うちの日記は、僕が書く際になるべくHTML4 Strictになるように書いているので、扱いやすいデータだと思うのですが、任意に何個かのファイルに対してHTML Tidyをかけてみた。割とすんなりとXHTML1.0 Strictに変換できることが分かったので、これで処理してみることにする。ざっくりと使えそうなTidyの設定ファイルは以下のようなもの。