« 2005年10月 | 過去ログ一覧 | 2005年12月 »

2005-11-01 (Tue)

Trac のバージョンアップをしてみたよ

一応 Trac を使ってみたよ の続きなのか?Trac で遊んでみたよっての書きたいんだけど、まだまとまっていないのでまた今度。

んで、Trac の 0.9 がリリースされたようで、ファン(?)としては放っておけないので速攻でバージョンアップしました。Debian パッケージの 0.8.1-3sarge2 から 0.9 へのアップグレードです。

まず、新しいファイルをダウンロードしてきて現状のファイルを上書きインストールします。インストールする時に、--force を付けないと、今配置されているファイルを上書きしない様子。気付かなくてちょっとハマッタ。

$ wget http://ftp.edgewall.com/pub/trac/trac-0.9.tar.gz
$ tar xvfz trac-0.9.tar.gz
$ cd trac-0.9
$  ./setup install --force

本当は最初にパッケージを削除してから、/usr/local にインストールするべきなのでしょうけど、面倒臭いのでパス。すまん。

次にデータを新バージョンで使えるように変換(?)しないといけないので、trac-admin を使ってアップグレード。

$ trac-admin /path/to/HogeHoge upgrade
$ trac-admin /path/to/HogeHoge resync

upgrade すると resync もやってねって言われるのでこいつも実行。

mod_python の書式とかが変わっているので、apache の設定を変更。

#PythonHandler trac.ModPythonHandler      # ← 削除
PythonHandler trac.web.modpython_frontend # ← 追加

/trac への Alias 設定が必要なくなったようなので、これも apache の設定から削除。今後は http://example.com/project/HogeHoge/chrome/common でアクセス出来るみたい。

#Alias /trac "/usr/share/trac/htdocs/"

Subversion のコミット時にチケットのデータをいじるための trac-post-commit-hook も新しくなっているので入れ替え。ソースディレクトリの contrib/trac-post-commit-hook にあるので、既存のファイルを上書き。

一緒に Subversion 内の post-commit も変更の必要アリ。trac-post-commit-hook へ渡す引数に -s "http://example.com/project/HogeHoge" を追加。

ちなみに私の所では以下のようになっています。

# cat post-commit
#!/bin/sh -e

REPOS="$1"
REV="$2"

export LANG=ja_JP.UTF-8
LOG=`/usr/bin/svnlook log -r $REV $REPOS`
AUTHOR=`/usr/bin/svnlook author -r $REV $REPOS`

/usr/bin/python /usr/share/trac/trac-post-commit-hook \
 -p "/path/to/HogeHoge"  \
 -r "$REV"       \
 -u "$AUTHOR"    \
 -m "$LOG"       \
 -s "http://example.com/project/HogeHoge"

最後に trac.ini の書き換え。trac.ini が置いてあるディレクトリに新しい形式の trac.ini.sample が置いてあるので、これを見ながらお好みで設定を変更。

以上で無事バージョンアップ完了。心なしか動作速度も上がったような気がする。

今回からチケットに、新しく Type と言う属性が追加され、task だとか defect だとかが選択出来るようになりました。そして、古いデータで登録したチケットは全て defect です。この点はちょっと悲しい。

他にもデフォルトの severity や priority が変わったりもしているので、気になる人は trac-admin を使って修正しましょう。私は severity の normal を消しました。

今、気になっている事のメモ。

  • text/x-trac-wiki と言う mime-type の ファイルがあるんだけど これは何だろう。Wiki と連動しているような気がしないでもないけど、同じように動かない。
  • email2trac はある。email2tracwiki は無いのかな?これが出来ると qwik.jp のような事が出来そうなんだけどな。無かったら多分作ってみる。
  • BrowseSource で、指定したバージョン間の Diff が見たい。前後のバージョン間の差分だけしか見れないんなら、コマンドライン使っちゃう。Wiki は出来るんだから、出来るよねぇ。それとも気が付いてないだけで方法はあるのかな。
  • Python のインデントすげぇイイかも。こういうの大好きだ。やべぇな。

△トップ | コメント (0) | トラックバック(1)

2005-11-09 (Wed)

Google Maps API の測地系が世界測地系になったみたい

Google Maps の測地系が 世界測地系で統一されるよう です。

サービス(?)として使っている所があるので、早速アップデートしました。GPoint に渡す値を -0.0032 , 0.00325 として調整してやればOKなようです。

ふと思い立って GPoint 関数を適当にちょこちょこオーバーライド(って言うの?)させてみたら、あっさり対応出来ましたけど…。

var GMPoint = GPoint;
GPoint = function(x, y) {
   return new GMPoint(x-0.0032, y+0.00325);
}

これで良いのか、正しいのかじっくり確認してる暇がないから誰か宜しく。

使い方は、上に書いたコードを new GMap する直前辺りで一回実行するだけです。

△トップ | コメント (0) | トラックバック(0)

2005-11-16 (Wed)

フォームに入力を促すメッセージを出力する JavaScript

input type="text" なフォームに最初から「ここに入力して下さい」みたいなメッセージを薄い色で表示させておいて入力を促すようなのありますよね。なんか、あれを、現実逃避気味に書いたので。

function inputDefault(elm, msg) {
   this.elm     = elm;
   this.msg     = msg;
   this.color   = '#999999';
   this.bgColor = '#F9FFF9';
}

inputDefault.prototype.set = function() {
   this._cleared    = false;
   this._defColor   = this.elm.style.color;
   this._defBGColor = this.elm.style.backgroundColor;

   this.elm.value        = this.msg;
   this.elm.style.color  = this.color;
   this.elm.style.backgroundColor = this.bgColor;

   var _this = this;
   addEvent( this.elm,      'focus',  function() { _this.clear();  } );
   addEvent( this.elm.form, 'submit', function() { _this.submit(); } );
}

inputDefault.prototype.clear = function() {
   if(this._cleared) return;

   this.elm.style.color            = this._defColor;
   this.elm.style.backgroundColor  = this._defBGColor;
   this.elm.value = '';
   this._cleared  = true;
}

inputDefault.prototype.submit = function() {
   if(this._cleared) return;

   var _this = this;
   this.elm.disabled = true;
   window.setTimeout(function() { _this.elm.disabled = false; }, 1);
}


function addEvent(elm, type, event) {
   if(elm.addEventListener) {
      elm.addEventListener(type, event, false);
   } else if(elm.attachEvent) {
      elm.attachEvent('on'+type, event);
   } else {
      elm['on'+type] = event;
   }
}

えっと。

var input = new inputDefault(form, 'hogehoge');
input.set();

なんてやれば動くはずです。form の部分は document.form.hoge とかなんか適当に。サンプルも用意してみたのでわかんない人はこっち見て。

手軽に出来るので結構便利かもわからない。

ここまで書いて気が付いたのだけど、submit する時に「ここに入力して下さい」って文字列が送信されちゃうじゃん(今更かよ!)。onsubmit の時に clear を実行したりするように変更せねば…。

追記: onsubmit の時に一瞬だけ disabled にしてデータを送らないようにしてみた。

△トップ | コメント (5) | トラックバック(1)

2005-11-26 (Sat)

Trac で遊んでみたよ その1 - 日本語

Trac 入れてから 1ヶ月位経ちましたが、大分手放せないツールになってきました。チケットとログの連動が便利杉。

さて、そんな Trac ですが、ソースコードブラウザで EUC や ShiftJIS が化けます。これ自体は trac.ini の default_charset を japanese.shift_jis とかにしておけば良いのですが、(勿論 python-japanese-codecs が必要ですが!!) 1つしか指定出来ないので、文字コードが混在している自分のウンコ環境では片方が確実に文字化けしてしまいます。

インタアクト さんの所の配布物に含まれるドキュメントによると、svn:mime-types を指定してやれば解決する可能性が高いらしいですが、全部チェックするのは面倒すぎなので、trac のソースコードをいじって対応してみました。

たいした変更じゃないのでやっておくと安心かも。

更新したファイル /usr/lib/python2.3/site-packages/trac/util.py

@@ -78,7 +78,8 @@
             u = unicode(text, charset)
         except UnicodeError:
             # This should always work
-            u = unicode(text, 'iso-8859-15')
+            #u = unicode(text, 'iso-8859-15')
+            u = unicode(text, 'japanese.euc-jp')
         return u.encode('utf-8')

この状態で default_charset を shift_jis にしておけば、EUC-JP と Shift_JIS の混在環境でもOKでした。あと Unicode も普通に表示出来ます。他は知らないけど、この辺の条件分岐に追記してやったりすれば簡単に対応出来そう。

ところで、今見ていて気が付いたのですが、インタアクトさんの所の日本語版が更新されて0.9版の配布も開始されていました。今回から、差分の提供じゃなくなったみたいですね。自分でも見た目をちょっといじってるので更新しずらいかも…。しかし何にせよこうして更新して下さるのには頭が下がる思いです。

△トップ | コメント (6) | トラックバック(3)

2005-11-27 (Sun)

Trac で遊んでみたよ その2 - 色分け

ドキュメントにもあるのですが、SilverCity なるものを入れるとソースコードが色分けして表示されるようになって結構見やすくなります。

アーカイブをダウンロードしてきて、./setup.py install を実行するだけで、すぐにカラフルになります。

あと、Trac の ML で見掛けたのですが、JavaScript ファイルのマップが一致していない ようなので、気になる人は変えておきましょう。

私はこれとは別に、api.py に tmpl の HTML への関連付けを追加しちゃいました。MIME_MAP の所に 'tmpl':'text/html', ってのを追加しただけ。

△トップ | コメント (0) | トラックバック(1)

 
Copyright (C) Kyosuke Takayama, Some rights reserved.