keitairc 1.31 & 1.32

Posted by yoosee on Debian at 2007-09-30 22:00 JST

*1  keitairc 最新版

携帯電話向けの IRC web interface を提供するソフト、keitairc の 1.31 (その後アップデートで1.32) がリリースされた。新しいPOEへの対応、自動再接続機能やポケットはてな経由のURLアクセスなどが実装されている。再接続はこういう風に書けばよかったのか。
コメントでリリースを教えて頂いて大変ありがたい。es からだと本格的に IRC で会話したいときは EbIRC を使うけど、ログを見たい場合は keitairc の方が便利だし、w3m から IRC するのにも役に立ったりする。そこまでして IRC したいのかといわれると返す言葉もないが、まぁ中毒みたいなもんなんです。

*2  prefix が ! な irc channel

で、! で始まるチャンネルは存在し得るのかという話を書き込んで頂いたけど、rfc1459 には無いものの IRCNet で使われているはずの irc server 2.10 以降には ! で始まるチャネルがある。以下は ChangeLog より抜粋。
New features in 2.10.0:
* creation of a collision proof type of channels (prefix !).
* opless !channels may be reoped by the server (mode +r).
と言う具合に、split/collision proof タイプのチャンネルになる。自動的にチャネル名に unique な文字列が付き、特定の mode (特に re-op の +r) が設定されるチャンネルになる。POE のイベントとしては irc_public ではなく irc_msg になるらしい。

上記を含めて前回の 1.30 時に個人的に変更した機能は手元の自分が使うものには追従したけど、とりあえず今回は公開しないでおく。

bitlbee の文字化け問題

Posted by yoosee on Debian at 2007-09-29 22:00 JST

*1  bitlbee は一部変換出来ない文字があると全部化けるのが困る

最近は AIM, Gtalk (+twitter) は全て bitlbee 経由の IRC クライアントで使っているのだが、bitlbee では utf8 のハンドリングで一文字でも変換に失敗するとメッセージ全文が文字化けしてしまう。文字コード変換をしている bitlbee/util.c を見ると、do_iconv(...) 内で iconv() が (size_t) -1 を返したときの事後処理が全くないから、そりゃ化けるだろうという感じではある。

特に鬼門かつ頻繁に出るのが "〜" (0x2141) なわけだが、ad-hoc にこれだけでもエスケープするコードを書いて逃げるのがいいか。真っ当に対応するならどうするべきだろう。

*2  Pidgin (aka Gaim) での対応

と言う事で Pidgin ではどうしてるんだろうと思ってみてみたら、libpurple/desktopitem.c 内で glib の g_convert(...) を使ってる。で、glib の gconvert.c では iconv() の EILSEQ エラー(入力に無効なマルチバイト文字列がある) の場合はその先の文字列を継続して変換しているっぽい。真面目に自前で書くと結構面倒そうだが、Glib 以外にこの手の iconv wrapper で良いのは無いかな。

Google Calc の IRC bridge bot を今更実装

Posted by yoosee on Web at 2007-08-07 22:00 JST

*1  Google Calc の IRC bridge bot を今更実装

nadoka から、Google に query を投げて結果ページの一部を切り出して、Google Calc の結果がある場合のみ IRC に戻すと言う処理の bot を書いた。思いついてから動くまで45分。計算機能自体よりは通貨レートや度量衡換算が簡単に調べられるのが便利。他に何か IRC に持ち込んだら便利なものはないかな。などと考えるのはもちろん現実逃避です、はい。

*1  Bitlbee の接続時認証を自動化する

Bitlbee は各種 IM を IRC に統合してくれるしごく便利なソフトなのだが、接続のたびに identify password と入れるのが面倒だった。Windows で使っている IRC クライアント Cotton のサーバ設定には接続時コマンドを送る機能があったので、
privmsg &bitlbee :identify password
と設定したら自動的に繋がるようになってますます便利に。

*2  Riece でも同じ事をしたいと思ったが

Riece では接続時の処理として :function を定義できるようなのだけど、これは riece-open-server から irc を over ssh tunnel する際などに呼ぶものらしく、接続後にサーバにコマンドを送るという感じの処理ではなさそう。どこかで hook をかませばなんとかなるんだろうけど。

bitlbee と irc client の間に nadoka や tiarra のような irc proxy をかませば済む上にログまで取れて一石二鳥な話ではあるのだが、bitlbee 自体の daemon mode がお勧めされていない現状では、実質城中常駐モードになるそうした使い方にはちょっと不安が残る。

*1  BitlBee - An IRC to other chat networks gateway

Day Tripper の記述を読んで、IM - IRC gateway の BitlBee を導入した。
BitlBeeとはインスタントメッセンジャーとIRCをつなぐゲートウェイサーバーです。
これを使うとIRCクライアント一つでMSNメッセンジャーやGoogle Talkも使えるし、おまけに大ヒット中のTwitterをJabber経由で投稿できるのでウハウハじゃね?nofuture.tv - BitlBeeを使ってXchatでIRCとMSNメッセンジャーとTwitterをひとまとめにする
実際うはうはだった。IM のクライアントを IRC に集約できてかなり便利。もちろん Twitter - IM も BitlBee から使える。IM 周りの対応は Gaim のコードから派生して作りこんだものらしい。

インストールは上記サイトにある通り、Debian ならば
 # aptitude install bitlbee
で完了。標準では 6667 を listen しようとするので、変更するなら dpkg-reconfigure bitlbee とするか、手で /etc/bitlbee/bitlbee.conf と /etc/inetd.conf を編集する。AuthMode は標準で Open (誰でも接続・利用可能) なので、利用形態にあわせて Closed や Registered にしておくのが良いだろう。なお root 権限が無い場合は、付属の bitlbeed.c.gz 使うことで利用できるようだ。要は socket を 開いて常駐し、 bitlbee を kick するだけのプログラムのようだが。

IRC クライアントは Linux では riece と xchat (IRC over SSLを使う用)、Windows では Cotton を使っている。どれも複数サーバ対応で、問題なく接続が出来た。パスワードその他は平文で飛ぶので、インターネット経由で繋ぐ際には ssh tunnel でも使った方が良さそうか。

*2  BitlBee の使いかた

使いかたは上記サイトにある通りで、基本的に help と打てば使いかたに関しての色々な情報を得ることが出来る。まずは
 register <password>
でパスワードを設定する。ここで設定したパスワードは、次回接続時に identify コマンドとともに呼び出すもの。続いて IM のログイン情報を登録。AIM の場合は
account add oscar <account> <password> login.oscar.aol.com
と言った感じ。AIM では空白を含むアカウント名を使っているのだが、"〜" で囲んだら問題なくログインできた。登録後は
 account list 
で番号を確認し、
 account on 0 
のように接続する。接続時に inactive な buddy はリストに上がってこない。メッセージの送信は private message にしてもいいし、root window で nick: message と言う具合にしても送れる。問題なく繋がったら忘れずに save しよう。

twitter の更新も問題なく出来たし、twritter からの update もちゃんと表示された。日本語も set charset iso-2022-jp 設定で大丈夫(たぶん裏で utf-8 に変換してるのだろう)。欲をいえば Skype chat にも対応してほしいが、プロトコルが非公開ということもあるし難しいか。

ちなみにこのプログラムは inetd 経由で起動するものなので、非接続時は IM サーバ側からも接続されていない状態になる。IRC proxy は常駐するのが普通なので感覚の違いにちょっと注意した方が良さそう。常駐する Daemon mode もあるようだが、現時点では experimental としてお勧めは出来ないとされている。

また、BitlBee 公開サーバ もあるようだ。もちろん第三者のサーバにIMアカウント情報を預けることになるし、通信も基本平文のままなので利用は慎重に。

EbIRC - IRC Client for Windows Mobile

Posted by yoosee on Gadget at 2006-09-27 23:42 JST

*1  伊勢的新常識 - EbIRC

EbIRCWindows Mobile 用の新しい IRC クライアントが出ていた。.NET Framework 2.0 で書かれているようで起動は多少遅いが、その後の動作は快適。WM5.0 のソフトキーにも対応しているので、チャンネルの切替えなどは片手ででも出来る。

既存の ちゃっとCE と比べた利点は、個人的な使いかたからすると nadoka や plum のような pirc (IRC常駐プログラム) と高速に接続が可能という点に尽きる。サーバからのメッセージを一部無視しているそうなので、それが効を奏しているのかもしれないが、とにかく早い。
ちゃっとCEは 10チャネル程に常駐している pirc と繋ぐと処理中に切れるし、IRCサーバに直接繋ぎに行っても接続完了まで30秒以上もかかってしまい、個人的には使いものにならなかったが、こちらだと [PT] が出てから接続まで数秒と非常に早い。

あとはこれも個人的要望だが、Chocoa や Cotton や Riece のような (チャンネル|入力|その他全チャンネル) と言った 3ペイン表示してくれると非常に嬉しいのだけど、実装は難しいのだろうか。他の機能はあまりいじらずシンプルで構わないのだけど。

Riece 3.x.x での Ring (Shrink) Buffer

Posted by yoosee on Debian at 2006-08-26 23:42 JST

*1  Riece - IRC client for emacsen

以前 Riece と Ring Buffer で設定した 1.0.8-1 (sarge) の時には riece-max-buffer-size を設定しておけばよかったのだが、最近の 3.1.0-1 (sid) で効かなくなったと思ったら plugin として独立したらしい。addon に追加する設定が必要になっている。
(add-to-list 'riece-addons 'riece-shrink-buffer t)
(setq riece-max-buffer-size 4000)
設定は ~/.riece/init(.el) に書く。

*2  余談: riece で irchat(-pj).el のように横にユーザ一覧・チャネル一覧を出さない設定

Riece でユーザ一覧・チャネル一覧を非表示にし、(チャンネルの発言|入力エリア|他チャネルの発言) の 3画面構成のみにする設定。
(setq riece-user-list-buffer-mode nil)
(setq riece-channel-list-buffer-mode nil)
この前 IRC で聞かれたこともあり、意外と知らない人が多いようなので。

keitairc 1.30 への patch

Posted by yoosee on Web at 2006-08-05 23:42 JST

*1  keitairc 1.30

2年ぶりのリリース。内容は URL へのリンクに Google Wireless Transcoder へのリンクを追加するもの。現状スマートフォンを使っているものの、良いIRCクライアントがないので相変わらずこれを使っている。と言うことで以前のバージョンに個人的に手を入れたものを改めて keitairc-1.30.patch として置いておく。内容は
  • チャネル一覧に各チャネルの最終発言日時を表示
  • ! で始まるチャネルを扱えるように irc_msg のハンドラを用意
と言うもの。個人的にはこの他に
  • recent は正順に表示(通常は逆順)
  • プロセス再起動ボタンを付ける(本当はセッション切断時の自動再接続が欲しいが実装方法がわからん)
  • joined イベントは表示しない
  • NOTICE は NOTICE と分かるよう prefix を入れて表示
と言う変更も入れて使っている。POE/Component/IRC.pm の 1670行目が warning を吐きまくるのはなんとかならんかな。

keitairc の自動再接続

Posted by yoosee on Web at 2005-03-25 23:42 JST

*1  keitairc の再接続

keitairc を使っていて、繋ぎ先の irc proxy との接続が切れると再接続してくれないのが不便だったので少しいじってみた。disconnect 時に connect と同じ処理をしているだけなんだけど、これで動くのかは未確認。
POE::Session->new(
...
  irc_disconnected => \&on_irc_disconnected,
);
...
sub on_irc_disconnected{
  my $kernel = $_[KERNEL];
  $kernel->post('keitairc' => 'connect' => {
    Nick => $config->irc_nick,
    Username => $config->irc_username,
    Ircname => $config->irc_desc,
    Server => $config->irc_server,
    Port => $config->irc_port,
    Password => $config->irc_password
  });
}
しばらく試してみて、うまく動くようなら patch 投げてみよう。retly 回数や delay はどうやって与えたらいいんだろう?

国内IRCサーバの一斉メンテナンス

Posted by yoosee on Web at 2004-03-12 23:42 JST

*1  IRCサーバメンテナンス情報

2004年3月12日 22:00 より国内IRCNET網の一斉メンテナンスを行います。上記時間帯はIRCサーバへの接続が出来なくなりますが、ご理解下さい。
作業内容は OSのアップデート及び IRCサーバのバージョンアップを行います。また、長時間、海外への接続が切れておりましたが、irc.media.kyoto-u.ac.jpのサーバより海外への接点を設ける事により、海外との接続の安定化を図る予定です。
と言うわけで 12 日の 22:20 くらいから接続が切れて、結局 23 日午前 2 時くらいまでかかった模様。管理者の方々、お疲れさまでした。最近の IRCNet は不安定な状態が続いていたけど、これで少しは安定するようになったのかな。

IRC log analyzer

Posted by yoosee on Web at 2004-03-02 23:42 JST

*1  pisg - perl irc statistic generator

Pisg sample一昨日あたりに "#orkut" に試しに join してみたら、Topic に URL が表示されていた。なんだろうと思って見てみると、IRC の log を統計的に解析して出力したレポートページらしい。どうも pisg と言うプログラムで生成されたもののようだ。

*2  pisg の plum / 日本語対応

早速自分の IRC log を食わせてみようと思ったのだが、どうやら log の parser は各種ログ形式によって個別の perl module として提供されているようで、plum 形式のものはなかった。ちょっと悔しかったので中身を見てみると、どうやら正規表現で log line から時刻や nick を切出せればそれで良いらしい。と言うことで plum.pm を作成し、ついでなのでメッセージカタログも日本語のものを作ってみた。詳しくは yoosee.wiki - pisg を参照。

*3  自動化

今のところ、特定のチャンネルについてのみ自動化してレポートを生成しているが、パスワードでアクセス制限をしているので一般公開はしていません。興味がある人は IRC で声をかけてみてください。

About W.W.Walker

World Wide Walker は yoosee による blog です。PDA, Web・サーバ技術, 美味しい食べ物などの話題を取り上げています... read more

Monthly Archives

Select Month to read
  

Ads

Recent Entries

Related Sites