2011-03-31

Merlotをインストールして動かす

Mac OS Xで Merlot を動かすためのメモ。
Installing Merlot のドキュメントに書いてある通りで動くけど、せっかく日本語にしたので開発ブランチを使ってみましょう。
Google CodesにあるMercurialリポジトリをミラーして、VirtualEnvを組んで、buildoutを叩いたらインストール終わり。

一応コマンドリストだけでも書いておく:

$ hg clone https://merlot.googlecode.com/hg/ merlot
$ virtualenv --distribute --no-site-packages merlot
$ cd merlot
$ source bin/activate
$ python bootstrap.py
$ buildout

ここで、なぜかmechanizeのインストールに失敗することがある。エラーを見るにアーカイブをダウンロードしているときのレスポンスヘッダでContent-Lengthが"382313, 382313"みたいな感じでカンマ区切りで2個帰ってくるのがパースできないらしい。
RFC2616を見てみたところ、Content-Lengthヘッダは1*DIGITで書かなきゃいけないので、まあ、お行儀の悪いWebサーバーなのだろうけど、インストールプロセスが止まっちゃうのは困る。
なので、distributeのコードにパッチして無理やり通してしまった。virtualenvだと、こういう時にためらわずできていいね。

--- eggs/distribute-0.6.14-py2.7.egg/setuptools/package_index.py.orig     2011-03-26 15:00:28.000000000 +0900
+++ eggs/distribute-0.6.14-py2.7.egg/setuptools/package_index.py     2011-03-26 15:23:07.000000000 +0900
@@ -566,7 +566,10 @@
             bs = self.dl_blocksize
             size = -1
             if "content-length" in headers:
-                size = int(headers["Content-Length"])
+                try:
+                    size = int(headers["Content-Length"])
+                except ValueError:
+                    size = int(headers["Content-Length"].split(",")[0])
                 self.reporthook(url, filename, blocknum, bs, size)
             tfp = open(filename,'wb')
             while True:

で、パッチしたらもう一度buildoutを打つ。


$ buildout
$ merlot

merlotコマンドを打つと、grokフレームワークの簡易サーバが立ち上がるので、Webブラウザで 127.0.0.1:8080 にアクセスする。基本認証を聞かれるので、admin:adminで突破。このページはgrokフレームワークの管理画面らしくて、ホスティングするアプリケーションを追加、削除するためのもののよう。

"Name and create a new Merlot application" の所に適当に名前を入れて"Create"すると、インスタンスができる。名前はURLのトップディレクトリに使われるので、そこだけ気にすればよさそう。
とりあえずmerlotという名前で作ったことにする。

"Installed Applications" に新しくできたリンクをたどるとMerlotの世界へ。


こんな感じのトップページが来る。
この状態だと、rootディレクトリで打ったadminユーザーの基本認証を引き継いで動いているので、"ユーザー"タブから新しいユーザーを追加して、一旦ブラウザーを閉じてしまう。"ログアウト"はフォームで認証したときにCookieを消すだけなので、基本認証では効かない。次からのアクセスでは基本認証を使いたくないので、URLには 127.0.0.1:8080/merlot を使うこと。
この後は、"クライアント"を作って、"プロジェクト"を作って、"タスク"を作って、"ログ"を記録する。という流れになるんだけど、くわしくは次の記事で。

ところでWindowsを持っていないので動かしていないけど、誰か環境つくって手順もあるなら教えてください。

2011-03-27

Merlotに手を出してみた

第6回Python mini Hack-a-thonに行ってきた。
作っただけで放置しているプライベートプロジェクト某とか、同某とかの再開準備をしようかと思っていたけど、朝出掛けにこんなTweetを見てちょいと使ってみようかという気になったので、バージョン0.1が出たばかりのMerlotというアプリケーションに手を出してみた。"Project Management Software"なので、てっきりBTSを想像していたら、Timing and Estimateに特化したタスク管理ツールで、「クライアント (Client) < プロジェクト (Project) < タスク (Task) < ログ (Log)」という構成でタスクごとに使った時間を収集するようになっている。
Version 0.1で実装済みなのはデータ入力の部分が中心で、特にWorkLogの所はAjax実装とかもあってどんどん入力できる感じになっている (でも、消化時間の計算が入力直後に連動してなかったりするところが若干残念)。レポーティングはスクリーニングが取れるだけでまだまだこれからというところか。各モデルの属性も必要最低限な項目があるくらい。プロジェクトのロードマップもないので、今後どういう方向に拡張していくつもりなのかは、まだよく分からないけど、レポーティングの強化とか他のツールとの連携とかができるようになっていくんじゃないかなあ、と触ってみて思った。
いずれ多数顧客の多数プロジェクトでROIとかを計ろうとかいうことに完全に特化しているので、ニーズがばっちりはまるケースでは、現状のバージョンでも使えるように思える。画面は結構きれいだし。
実装言語はPythonでzope3派生のgrokというフレームワークで作ってあるっぽい。zopeもgrokも今まで使ってなかったので中身の作りを見るのはこれからだけど、poファイルを見つけたのでとりあえず日本語カタログを作って送りつけてみた。メッセージ翻訳周辺のツールはzc.i18nとかPasteScriptとかzc.buildoutで整備されていたので純粋にpoファイルを翻訳することに集中できたのは最近のツールの特徴になるのかなあ。中身のコードはというと、はじめて使うフレームワークだし周辺ツールも使ったことがないパッケージが大量にあるので、まだ全然見られていない。これから調べつつ順次見ていくという事になると思う。パッチとかも書いていくなら本格的にMercurialの使い方を身につけないといかんし。
今日一日で動かすだけはやってみたので、折を見てインストールの方法とか、ジャンプスタートとか、開発環境の作り方とか書いていく予定。今日は速報ということで。