Top About Help Login Search

Real World Haskellの訳本が届いた!

2009/10/21 23:06
tom

O'reilly JapanでTシャツプレゼントキャンペーンをやっていたのでついかっとなって注文した。

発売日24日なのに、20日の夜には不在通知が来ているという超フライング。

image:1:1256133940-RealWorldHaskell.JPG

Tシャツのデザインで批判されたりもしましたが後悔はしていません。

実用的なHaskellの本が日本語でしかもオライリーから出るという幸運に感謝です。

翻訳してくださった山下さん、伊東さんにも感謝です。


Plack入門

2009/10/08 00:35
tom

まだコードは1文字も書いていない。

とりあえず

$ git clone git://github.com/miyagawa/psgi-specs.git
$ git clone git://github.com/miyagawa/Plack.git

してPSGIのspecとPlackのREADMEを読む。

Rackとほぼ同じ。

  • psgiにおけるアプリケーションとは、単なるコードリファレンス。
  • このcoderefは、$envという一つの引数を受け取る。
  • $envはhashrefになっていて、Requestの内容はすべてこのHashに入っている。
  • CGIでいう環境変数的なものは、 $env->{REQUEST_METHOD} とかでとれる。
  • CGIでいうstdin的なものは、 $env->{'psgi.input'} をreadするととれる。
  • アプリケーション中のエラーは $env->{'psgi.erros'} print する。
  • Responseはcoderefからreturnで返す。フォーマットはarrayrefで、 [ status, headers, body ]
  • headersはhashrefじゃなくてarrayref。 [X-FOO => 100, X-BAR => 200] みたいな感じで。
  • bodyは、arrayrefか、getlineとcloseメソッドを実装したオブジェクト。

Middlewareというのは、アプリケーションのwrapper。サーバとアプリ(coderef)の間にはさまって、サーバに対してはアプリのように振る舞い、アプリに透過的に便利な機能を提供する。

以上specを読んだだけで書いてるので間違った記述が含まれるかも知れません。

今からなんかしら動かす。


tokyopromenade.elというのを作ってみています

2009/10/05 01:15
tom

Tokyo Promenade導入ついでに、Emacsから記事が投稿できたら嬉しいなということでtokyopromenade.elというのを作ってみています。

まだ作り始めたばかりなので不具合も多いかと思うのですがgithubに上げたのでチャレンジャーな方は是非使ってみていただけると嬉しいです。

  1. ここからtarballをダウンロード
  2. 解凍したら出てくるtokyopromenade.elをload-pathの通ってるところに設置
  3. 以下のような設定を.emacs.elに書く。
(custom-set-variables
 '(tokyopromenade-host "tom-lpsd.dyndns.org")
 '(tokyopromenade-pass "xxxxxxxx")
 '(tokyopromenade-path "/tom/promenade.cgi")
 '(tokyopromenade-user "tom"))

M-x tokyopromenade とやると新しいバッファができて記事を書く画面になります。

記事を書き終わったらC-cC-cで投稿完了です。

機能はこれだけです(少な

投稿した記事はすぐに確認したいので、記事投稿完了の通知を受け取れるhookを用意していて

(add-hook 'tokyopromenade-after-post-article-hooks
	  (lambda (uri) (call-process "open" nil nil nil uri)))

のようにするとmacのopenコマンドで、投稿したての記事のURLをオープンしたりできるようになってます。

作ってみてやっぱりプレビューがないので微妙だなと思ったり。。。。

なんかすてきな機能のアイディアがあったらコメントでお寄せいただけると対応しますたぶん。


Ruby版 HTML::Template::Pro を rubyforge にアップしました

2009/10/03 18:26
tom

CPANモジュールであるところの、HTML::Template::ProをRubyに移植しました。

http://tmplpro.rubyforge.org/

別にrubyforgeに登録するほどのものでもないかと思ったんですが、なんだか簡単にできそうだったのでやってみました。

gem install html-template-pro

でインストールできるはずです。(ruby 1.9が対象です。1.8だとエラーになります。)

rubyforgeへのアップは、プロジェクト登録の依頼もすぐに承認されてなんだかあっさりって感じでした。newgemを使うとリリースもコマンドラインから一発なので便利です。

使い方は、上記URLやrdocを見ていただくと、なんとなく分かるかと思います。(英語は苦手なのでたくさん間違いがあると思いますがご容赦ください。ご指摘いただければすぐに修正します。)

Rubyにはすでに多くのテンプレートエンジンがあります。そんな中、新しいエンジンを導入するメリットはないような気がします。実際Railsで使われているerbなどは機能も豊富で(なにしろRubyそのものなので)、利用実績もあります。

今回作ったhtml-template-proは、そういった既存のテンプレートエンジンを置き換える目的ではなく、すでにPerlでHTML::Templateを使用して作られているシステムのテンプレートをそのまま流用できるようにするために作成しました。(超ニッチ

あんまり使いどころないじゃん、と言われるとその通りなんですがHTML::Template::Pro コアがCで書かれているためスピードはそれなりだと思います。HTML::Template::Proのパッケージに付属しているbenckmark.pl.tをruby用に書き換えて簡単にベンチマークしてみた感じでは、erbやerubisよりは高速な雰囲気がでてます。(グラフを載せられるほど真面目にやってなくてアレなんですが。。。)Tenjinとか速さを売りにしている他のエンジンとの比較はまだできてないので、そのうちやろうかと思ってます。

というわけで、超ニッチなモジュールですが、もしかして使えるかもという人がいたら、使ってみていただけると幸いです。


Tokyo Promenadeにしてみました

2009/10/03 16:34
tom

シンプルで使いやすいと評判なので導入しました。

導入手順はとても簡単で、こちらのサイトに書いてある通りやったら動きました。

データベースはTCのテーブルデータベース一つ、ユーザ管理はpasswordファイル一つ、その他に設定ファイル一つと、たしかにとてもシンプルです。

最近ブログを書いてなくていかんなぁと思うところがあるので、ちょくちょくまた書いて行けるようにがんばります。

前にやっていたブログも一応残してありますが、コメントフォームとかはもう使えなくなってます。

http://tom-lpsd.dyndns.org/tom/b/