異体字同一視検索

PostgreSQL をバックエンドに、フロントエンドを PHP でどうにか書いて、自前のデータベースを仕事に使っています。そこでたまに異体字を同一視してほしい(たとえば「斎藤」さんだったか「齊藤」さんだったかうろ覚え)ときがあるのですが、それほど頻度も高くないし、人間が注意して対処(「読み」も登録しているので「さいとう」で検索)すれば乗り切れるので、つい後回しにしていました。

そろそろ何とかしなければ、と web を検索したところ、「異体字同一視検索」を見つけました。そう、以前に調べたときにこの方と同じく「漢字データベースの異体字データベース」を見つけてはいたものの、そこからどうしようと思いながらそのままにしていたのでした。

さっそくそのページの説明のとおりに自分のスクリプトに組み込みました。こちらでは日本語のいわゆる旧字体があれば十分で、簡体字は必要ではないのですが、そのままで快適に機能しています。このように情報を公開していただいていることに大変感謝しています。

インターネットラジオを FM ラジオで聴く

radiko や NHK のインターネット配信とちょうど逆の話。

仕事中に音楽を聴きたい。しかし目の前にある PC にはスピーカーが付いていない。どうしても必要なときのために簡単なヘッドホンを付けてあるのだが音楽を聴くのには向いていない。1時間に数回は席を立つので紐付きになってしまうのは非常にうっとうしい。

FM トランスミッター

FM ラジオで聴くことにした。と言っても普通の放送局では好みの音楽をやっていない。そこで、音楽サーバーを置いて電波を出すことにした。

目の前の PC のほかに、いわゆる自宅サーバーとして電源を入れっぱなしの PC がある。これに FM トランスミッターを付けた。しばらく前に買ったもののすぐに使わなくなっていた オーディオテクニカの AT-FMT6だ。もともと電池式だが、無理矢理ケーブルを付けて USB から電源をとるようにした。

XMMS2

Debian で動いているこの自宅サーバーには、これまでサウンド関係のソフトは入っていないので、まず alsa-base パッケージをインストールする(必要なものが芋づる式にインストールされる)。音楽プレーヤーは、軽そうな XMMS2 にした。xmms2 パッケージをインストールするとこれも必要なものが芋づる式にインストールされる。そのほかに必要となりそうなプラグイン、xmms2-plugin-curl, xmms2-plugin-pls などもインストールした。

XMMS2 はプレーヤー本体と操作パネルを分離できるので、今回のような場合にはもってこいである。サーバー側には上記のものを入れ、目の前にある PC にクライアントの gxmms2 を入れる。X や libgtk はこちらにだけあればよい。

サーバー側で

xmms2 config core.ipcsocket tcp://192.168.1.101:9667
のように、接続しにくるクライアントを指定しておき、いっぽうのクライアント側では環境変数 XMMS_PATHtcp://192.168.1.2:9667 のようにサーバーを指定する。

そしてサーバー側で xmms2-launcher として、デーモンを動かしておき、目の前の PC で gxmms2 を立ち上げる。

プレイリスト

あとの操作は gxmms2 で……と思ったものの、gxmms2 でのプレイリストの作成手順がよく分からないので、これはサーバー側に付いている CUI の nyxmms2 で行うことにした。

まず適当な名前で playlist を作成する(以下の例では gourd)。リストを切り換えて、聴きたいストリームの pls を加える。

nyxmms2 playlist create gourd
nyxmms2 playlist switch gourd
nyxmms2 addpls http://stream-19.streamsolutions.co.uk:9052/listen.pls

複数の接続先を設定したければこれを繰り返して行う。聴くときにはクライアントの gxmms2 でリストの切り換えができる。


サーバーは家のほぼ真ん中の階段下に置いてあるので、仕事場だけでなく台所や寝室のラジオでも聴けるようになった。トランスミッターのアンテナがもう少しよければ、庭仕事のときにも聴けるのだが。

GNOME の「最近開いたドキュメント」

evince などを起動しようとすると、数分ものあいだ固まったようになってしまうことがごくたまにある。そのときは、GNOME の「最近開いたドキュメント」が記録されている ~/.local/share/recently-used.xbel の内容を消去すると直る。

原因は、そのファイルに NFS の向こうにあるファイル名が記録されているからだった。「ごくたまに」というのは、目の前の PC を使っているときに NFS 先のもうひとつの PC が動いていないことはめったにないから。で、いま evince で見たいのは手元のファイルという場合だと、NFS 先の PC の電源が入っていないことはわかっていても、起動がおかしくなる原因がそれとはすぐに思いつかない。起動時に勝手に(?)「最近開いたドキュメント」を読み込もうとして、そこで引っかかっている。

それで、手っ取り早い解決策がそのファイルの中身を消去すること。

数年前にもこれで首を捻ったことがあるのだけれど、ずいぶん長いこと同じ目に遭わなかったのですっかり忘れていて、またもや首を捻ってしまった。そういう訳で、たぶんほかの人の役には立たないけれど、自分のためにここにメモしておく。

Debian の psql で日本語を入力できない

Debian の PostgreSQL のフロントエンド psql で日本語が入力できなくなっていることに気づいた。いろいろ検索してみてわかったことをざっと記すと、まず、以前の psql では問題なかったのが最近おかしくなったのは

#603599
これまでの psql は libreadline (GPL v2+) と libssl (BSD-like であり GPL とは非互換) の両方にリンクしており、ライセンス的にバイナリの再配布は不可能。そこで、libreadline をやめて BSDライセンスの libedit にする

という事情らしい。

#607109
psql でマルチバイト文字が使えない

で指摘されているように、-n オプションを使えば回避できることから、libedit のバグのようだ。

同じ libedit を使っている gnuplot

#596870
非アスキー文字が使えない

で、実際に試してみたらそのとおりだ。

当の libedit には

#579729
utf8 に対応した新しいバージョンをパッケージしてほしい

という要望が出されているものの、動きはなし。

上流は NetBSD libedit なのだけれど、「libedit I18N化への道」(イントロ)を見ると、utf8 対応といっても問題が多く、ことの成り行きはこの方にかかっているらしい (つづきが(その1)(その2)(その3)(その4)(その5)。そしてこの時点での最新の「めもがき」によると、たいへんお忙しいらしい)。

さし当たりこの問題を回避するには、libreadline / libedit の機能をあきらめて psql -n として使うか、libedit を libreadline に差し替えてパッケージを作り直すか。根本的解決は、能力のない者としてはただじっと待つより為す術がない。

Jabber と WordPress (補遺)

もたもたしている間に年が変わってしまいました。先日の記事に、これまで Jabber/XMPP と WordPress の連関について触れているところは少ない、というようなことを書いたのですが、前の記事を書く際に「WordPress勉強会「Automatticのワークスタイル」に参加しました」を見落としていました。

2009年8月とさらに1年遡って、その時点では Automattic 社内の事例として、P2im.wordpress.com のことに触れられています。その頃にはまったく気づいていませんでしたが。

P2 テーマと Jabber/XMPP

たとえば WordPress の翻訳に関わる人たちの情報交換の場が、昨年(2010年)9月末にメーリングリストから、この P2 を使った WP Polyglots に移行しました。私はもっぱら眺めているだけなのですが、私にとって P2 は非常に読みにくくて、移行後はもう読むこと自体をやめてしまっていました。

前の記事で触れた「ブログ投稿やコメントの即時配信」の記事を読んで、ようやく Jabber 通知を使えることを知り、さっそく継読するようにしました。コメントが投稿されるたびに通知されるので、以後はさっと流し読みだけでもできるようになりました。個人的には、Jabber/XMPP と組み合わせてはじめて P2 の力を見ることができました。

1年前や2年前の記事を見て何を今さら、と言われそうですが、私の検索能力が低いのか、やはり P2 を取り上げながら Jabber/XMPP に触れているのは、特に日本語では、上記の2009年の Automattic 社内の話以外には見つけることができません(このスライドも同じ時期のようです)。どうも Jabber/XMPP はあまり関心を持たれていないようです。

Jabber と WordPress (後編)

XMPP PubSub

Jabber / XMPP には PubSub という機能があります。Publish-Subscribe の意味です。

まず、Jabber サーバー上に「ノード node」と呼ばれるポイントを (たいていの場合、発信者が) 作成します。「発信者 publisher」と「継読者 subscriber」を文字どおり結びつける場所です。継読者は、このノードに対して継読を申し込みます(subscribe)。なお日本語では「購読」と訳されることが多いのですが、ここでは「継読」という語を当てます。そして、発信者がノードに対して情報を送るたびに、登録されている継読者にそのことが通知されます。

配信サービスという意味では、RSS/Atom フィードによく似ています。フィードは、更新があるかどうかを受信者側から (フィードリーダーの設定などにより定期的に) 情報を読みにいきます。このブログのように月に一度ほどしか更新がないのに受信者側がフィードリーダーに「60分」などと設定していると、受信者側からのアクセスに対する返答の十中八九は「更新情報なし」で、無駄足だったということになります。だからと言ってあまり長い時間間隔に設定していると、新しい情報が出た際には受信者がそれを読みにいく時刻までに大きなラグが生じます。

それに対して PubSub は、発信者が情報を出すたびに、「電光石火の速さ」で継読者に通知されます。

WordPress と PubSub

WordPress.com のブログ記事「ブログ投稿やコメントの即時配信」 (この日本語訳は2010年9月24日付ですが、元の英文記事は2010年8月25日付)は、WordPress.com のブログサービスにこの Jabber の PubSub 機能を連動させたことを伝えています。WordPress.com のサポートのページ (英語)の後半の解説によると、継読の申し込みや解除などの操作は bot を介して行うようです。

WordPress.com ではなく、WordPress.org で配布されているインストール型の WordPress には、この機能はないのでしょうか? プラグイン Jabber Feed を使えば実現できそうです。しかし、ノードを作成する権限のある Jabber サーバーがあるかどうか、など環境が整わないと難しそうです。自前で Jabber サーバーを設置できれば自由がききます。このブログにも設定してみました (サイドバーにリンクがあります)。

多くのホスティングサービスでは Web サーバー と Mail サーバーを使わせてくれますが、Jabber サーバーを使わせてくれるところというのは聞いたことがありません。素人考えでは Web サーバー や Mail サーバーに比べて難しいことはないと思うのですが。これが一般的になれば、Jabber の利用が拡がり、インストール型の WordPress でも PubSub を簡単に使えるようになるかもしれません。

【跋】 今頃(2010年11月末)になって、数カ月前の WordPress.com のブログ記事に気づきました。しかし検索してみると、この間にこれに注目しているような日本語の情報はごくわずかの例を除いて見つかりませんでした。また、WordPress.com のブログ記事も PubSub の機能を主に紹介するもので、Jabber のもっとも一般的な面であるインスタントメッセージングについての解説がなかった (そもそも Jabber に関する情報は日本語ではとても少ない) ので、ここに書いてみることにしました。

Jabber と WordPress (前編)

Jabber / XMPP とは

Jabber とはインスタントメッセージングサービスのひとつです。XMPP はそのプロトコルです。Web に対する HTTP と同じ対応で、Jabber に対する XMPP ということになります。

インスタントメッセージングサービスというと、「Yahoo!メッセンジャー」とか「Windows Live メッセンジャー」などと同系統のものですが、仕様がオープンなので、多くのサーバーやクライアントのソフトが存在します。好きなクライアントを選んで使うことができますし、また、Web サーバーや Mail サーバーを設置・運用するのと同じように、自分でサーバーを設置して運用することもできます。XMPP どうしならサーバーを越えて通信できます。たとえば、Google トークは XMPP 準拠なので、ほかの XMPP のサーバー、ネットワークと通信できます。

Jabber / XMPP1対1のチャットは、あまり説明の必要はありませんが、ちょうどメール、その返事、その返事……の連続といったものととらえることもできます。

多人数のチャット (Muiti-User Chat (MUC))もあります。ユーザーからの見た目や操作は IRC によく似ています。

クライアントとアカウント

Jabber を始めるのに必要なものは、まず Jabber クライアントです。Web を利用するのにブラウザが、Mail を利用するのにメールソフトが必要なのと同じです。

クライアントの

などは日本語化されていています。Web ブラウザ上で動くもの、モバイル向けなど、ほかにもたくさんあります

もう一つ、欠かせないのがアカウントです。メールを使う際にはメールアドレスが必要なのと同じことです。Jabber のアカウントは Jabber ID、略して JID と呼ばれ、形はメールアドレスにそっくりで、

name@example.com

アットマークの前はユーザー名、後ろはそのユーザーの属するサーバー名です。

自分で XMPP サーバーを設置できれば簡単に (そして自由に) JID を得られるのですが、そうでない場合はどうすればいいのでしょうか? ひとつの方法は公開 XMPP サーバーで JID を作ることができます。日本語では XMPP.JP というところがあります。

しかし、Jabber をいままで知らなかった人でも実は既に JID を持っている可能性があります。

のいずれかであれば、既に JID を持っています。

GMail の場合、メールアドレスとまったく同じで、たとえば name というアカウントを持っていれば、JID は name@gmail.com です。GMail にはチャット機能が含まれており、これが Google トーク、すなわち XMPP のメッセージングなのです。この Google の JID を別のクライアントで使用することも可能です。

WordPress.com (WordPress.com であって WordPress.org ではありません) の場合、たとえば name というアカウントを持っていれば、JID は name@im.wordpress.comになります。WordPress.com のサポートのページ (英語)に解説があり、そのページのリンクには主なクライアントの設定方法もあります。

前置きのような内容だけでも長くなったので、ここで区切って続きは後編で。