[ノート][編集履歴][一覧][最近の更新][->English]

more-functional

WiLiKiでChangeLogが続けられるのか挑戦。

Chicken/Scheme/loudmouth.egg

Category of Chicken
Category of Scheme

XMPPクライアントをまっさらのschemeで書くのに挫折したので、 かわりにloudmouthをchickenから呼べるようにした。

マニュアルはないけど、C APIを移しかえただけなので、 サンプルのloudmouthのコードそのまま持ってくれば動く。

オウムがえしするだけならこんな感じ。

コールバックの形式だけは普通にforeign-lambdaできないので、 ヘルパーマクロを使って、

(lm:define-message-handler
 presence-cb
 (conn mes data)
 (begin ここにコールバックの内容))

(lm:call-with-message-handler
  presence-cb #f #f
  (lambda (handler)
    (lm:connection-register-message-handler
      conn handler
      *LM-MESSAGE-TYPE-PRESENCE*
      *LM-HANDLER-PRIORITY-LAST*)))

みたいに書く。

コールバックの第一引数がvoid*なものだから、 データの移送はかなり面倒なことに。 これをscheme-objectにすると、gcされちゃう。

これを使ったtwitter->xmppボットは安定動作しているようなので、 モジュール部分だけ公開してみる。

CLだとcl-xmppなんてのがあって、 asdf-installで簡単インストールできたりしてちょっと羨ましかったり。

Programming/identicon

Category of Programming

gravatar apiがidenticonに対応している点を読み飛ばしていたので、 gravatar.elにコードを付け足した。 gravatarはほかにもmonsteridやwavatarsにも対応してるらしいので、 選べるように。

identiconというのはユニークなアイコンを生成する手法のひとつ。 詳しい説明はRadium Software - identiconでされてるので、特に付け加えることはないかな。

ちなみにfirefoxにもIdentFavIconというアドオンがあって、 faviconが無い場合はfaviconを自動生成してくれる。 ソースを読んでみると、 javascriptでcanvasに書き込んだりしていてなかなか面白い。 外部のサーバにアクセスもしないし、軽いのでお勧め。

Emacs/gravatar.el

Category of Emacs

そういえば、DISQUSのアカウントを作成するときに、 何も指定せずともアイコンが入っていた。 もしかするとgravatarに対応してるのかもしれない。

gravatarというのは個人のアイコンをストアするだけのサービスで、 アプリケーションが対応していれば、 アイコンを各サービスごとにアップロードしないで済むというもの。 CPANやgithubがこれを使っているので、 ソフトウェアの開発をしている人ならば、 知っている人も多いのではないだろうか。

というわけで以前書いたgravatarのgnus用のスクリプトを置いておく

.emacsに

(require 'gravatar)
(setq gnus-gravatar-directory "~/.emacs-gravatar/")

と書いておくと、 ニュースやメールのFrom行から送信者のgravatarアイコンをダウンロードしてフィールドに挿入する。 いってみればX-Faceのウェブ版のようなものだろうか。

ときどきすごいアイコンを登録している外国人がいて、 真面目な議論をしているときにふきだしてしまうことがある。

WiLiKi/disqus

あんまりにもさみしいのでコメントをつけられるようにしてみた。

自前で書くのも面倒なので、 DISQUSと言うサービスを使ってみることに。

friendfeedも公式に対応してるみたいなのでメンテも楽そうだ。

なかなかおしゃれな掲示板なのだが、 動作がかなり重い。新しいマシンが欲しくなるくらいだな、こりゃ。

uim/yahoo-jp

Category of uim

uimからYahooのかな漢字変換で変換できるようにした。

--with-curl --with-expatつけてビルドすること。

利用にはAPIキーが必要なので http://developer.yahoo.co.jp/ で登録する必要あり。 変換を開始する前にuim-pref-*からAPIキーを入れないとクラッシュするよ。

変換効率はまあ、あれだ。それと、学習機能がないのは残念。 予測入力もできるらしいけど、 このパッチもcanna.scmベースですので以下略。

それと、

文節の区切りを指定したい場合は、テキストを半角スペースで区切ってください。

とあるけど、区切って欲しいところにスペースをいれると、 関係無いところでさらに文節区切りが発生するらしく、 文節区切りを移動させていくと妙な挙動をするようになる。 これはなんとかしないといけないところ。

というか、sigschemeだけでssaxやろうとしたけど、 --enable-hygienic-macroつけてビルドするとgccがメモリ食い尽くして落ちるし、 readは(quote @)通さないので仕方なくexpatにしたんだよな。 なんとかならないんですかね。これ。