header image

Categories

FEED

  • goo RSSリーダーへ追加
  • Livedoorリーダーへ追加
  • はてなRSSへ追加
  • Googleへ追加
  • myyahooへ追加
  • feedpathへ追加
  • NewsGator Onlineへ追加
  • Bloglinesへ追加

携帯対応

QRコード

RING

人気ブログランキング



複数のTracプロジェクトをまとめてくれるTraM(Trac Multi)をインストールしてみた。

■インストール

svn co https://svn.rectang.com/tram/trunk
cd trunk
python setup.py install

■設定
□まとめる対象となる各プロジェクトに以下のように設定する。

[components]
tramplugin.* = enabled

※各所でtrac.ticket.report.* = disabledに設定しないと動作しないという記述があったが、むしろこちらを設定した方が動かないように見える

□まとめプロジェクトとSVNレポジトリを作成
ここでまとめ用のプロジェクトとSubversionのレポジトリを作成する。プロジェクトのディレクトリはallでないといけない。

cd /var/svn
svnadmin create all
chown -R apache:apache all
cd /var/www/trac
trac-admin create all initenv
chown -R apache:apache all/
(以下略)

□続いてapacheの設定を行う
httpd.confもしくはそれに準ずるファイルで下記を

PythonHandler trac.web.modpython_frontend

以下の通り変更する

PythonHandler tram.modpython_frontend

Trac全体としてはhttpd.confは以下のようになる。

<location /trac>
SetHandler mod_python
#PythonHandler trac.web.modpython_frontend
PythonHandler tram.modpython_frontend
PythonOption TracEnvParentDir /var/www/trac
PythonOption TracUriRoot /trac
SetEnv PYTHON_EGG_CACHE /tmp/.python_eggs
</location>
<locationmatch "/trac/[^/]+/login">
AuthType Basic
AuthName Trac
AuthUserFile /var/www/trac/.passwd
Require valid-user
</locationmatch>

この後apacheを再起動しておく。

□画面イメージ

■使用感
これ結構いいね。プロジェクトが多数あるような場合、状況を一覧して鳥瞰するのに効果的。ソースのレポジトリも追えるし、チケットも一覧できる。これならXMLRPCでゴリゴリしなくても何とかなるかもしれない。

StractisticsPluginはプロジェクトの状況をFlashを使って視覚的に表示するプラグイン。

インストール

easy_install http://trac-hacks.org/svn/stractisticsplugin/0.10/tags/0.3.2

設定

[components]
stractistics.* = enabled

インストールが終了すると上部のタブにStractisticsが追加される。
クリックすると状況が表示される。
現在表示されるものは下記の3つである。

  • 過去12週間のコミット数の推移
  • 過去30日間のチケットの状況推移
  • 過去12週間のWikiの状況推移

サンプルは下記の通りだ。
stratistics

導入に際してのオプションは下記の通りである。

repository_authors_limit
コミット数の推移で上位何人のコミッターまで表示するか。デフォルトは5人まで
wiki_authors_limit
Wikiの状況推移で上位何人の編集者まで表示するか。デフォルトは5人まで
ignored_repository_authors
コミット数の推移で集計から除外するコミッターを指定する。複数指定する場合はカンマ区切り
ignored_wiki_authors
Wikiの状況推移で集計から除外する編集者を指定する。複数指定する場合はカンマ区切り

WordpressMEがこの3月末で突然公開停止になったのに伴い、このブログのWordpressもME2.1から、本家版2.5.1に更新した。以前のME版ではEUC-JPの文字コードで運用していたのだが、本家版はUTF-8しかサポートしていないので、文字コードが変更になっているが、その他のプラグインや機能はすべてそのまま最新版にして動作させている。
#作業の際、一部時間帯において画面にエラーが出力されていた場合があった。酒飲みながらやってたので確認不足・・・。

2008/04/27 04:14:13 日記 none Comments
add Hatena Bookmark Tags:

つい先日現在進行中の案件のソースコードレビューへの同席を要請されたので、一応もし品質悪かったら謝るのは俺だしぃ、ということで同席してみた。
結果分かったことについて書いておく。(前から分かっているけどさ)

  • いくらちゃんと概要設計や詳細設計をしようが、品質はかなりの確率でコーディング力に依存する。
  • 血と汗と涙と努力の結晶のようなソースコードは、ほぼ糞ソース。
  • こういう場合は大体1ファンクションがやたらと長いのと、あちこちで同じことが繰り返されていること間違いなし。なのでバグも繰り返し。
  • 英語のスペル間違えているようなのも駄目。他の人がソースを読むかもしれないことに意識が回っていない。
  • バージョン管理しているのに既存ソースがコメントアウトでごっそり残っているのは危険。バージョン管理の意義を理解していないレベルの要員か現場だ。別にメインブランチでなくたって別ブランチに分岐して好きに履歴取れるのに。
  • 以前に別エントリでも書いたが、入力値のサニタイズやレンジチェックが各所に分散しているケースは危険。だいたいチェック漏れがあることがほぼ確定。
  • その言語の一般的なコーディング規約から離れた書き方をしているケースは大体において開発者がその言語の経験が少ないか勉強不足(or自己流)であることを指している。そのようなソースは徹底的に確認する必要がある。以前のエントリで書いた、PHPでClassという単語がどこにも見つからない大物システムなんかがあったが、こういうのは駄目。
  • 納品直前にレビューするより、作り始めて2~3日くらいの時点でソースレビューを一度やると良い。この時点であればまだ修正を強制できるし、他の要員の手配も可能だ。リリース直前やテスト直前では、徹夜しか手が残されない。

そう考えるとXPのペアプロってのはやはり効果がありそうだ。早期からレビューしっぱなしだし小手先の実装はレビューワーが許さないし。
ペアプロしたことによる工数と品質の関係を自分の組織に当てはめて明らかに出来れば良いなぁ。

■必要なもの
Trac XML-RPCプラグイン
なお、Trac0.11の場合は本体にXML-RPCプラグインが含まれるようになったので不要

Trac0.10の場合はインストール後に設定ファイルに以下を追記すること

[components]
tracrpc.* = enabled

またXMLRPCでアクセスできるように権限を設定する必要があるので、authenticatedユーザに対してXML_RPC権限を付与すること。
(別にanonymousでも良いけどその場合誰でも何でもXMLRPC経由で出来ちゃう)
また操作の種類によってそれに応じた権限が必要になる。

■使い方
とりあえずPerlでやってみる。
CPANのモジュール使うとXMLRPCを簡単に扱えるので、まずはXMLRPC::Liteを導入する

cpan -i XMLRPC::Lite

テストコードは以下のようなカンジ。
肝は
・XMLRPCのリクエストURLは、認証が必要な場合については、/login/が間に入る。また認証が必要な場合はURLに含める。
・XMLRPCのライブラリにはXMLRPC::Liteを使い、callの箇所でAPI名、引数等を直接指定する。(別に自前で書いても良いけど面倒なだけだよ)
というくらい。

#!/usr/bin/perl
use strict;
use warnings;
use XMLRPC::Lite;
use Data::Dumper;
use utf8;

# RPC先
my $rpcurl = 'http://userid:password@serverna/trac_project_path/login/xmlrpc';

# チケットの優先度の一覧を取得
my $result=XMLRPC::Lite
        -> proxy($rpcurl)
        -> call('ticket.priority.getAll')
        -> result;
print Dumper($result);

# ステータスがClosedでないチケットIDの一覧を取得
$result=XMLRPC::Lite
        -> proxy($rpcurl)
        -> call('ticket.query', 'status!=closed')
        -> result;
print Dumper($result);

■使い方のアイデア
・定期的に全プロジェクトのチケット数、解決数を取得し、どこかに掲示して見える化する。
・一日の最後に自動集計してみんなにメールする。
・チケット全体に占める不具合の割合を自動チェックしてごにょごにょする。
なんていうのを検討中。

2008/04/25 23:14:07 日記 none Comments
add Hatena Bookmark Tags:

単なる自分メモ。
今日眼科に再度検査に行ったところ、自分から見て右が18mmHg、左が19mmHgだったので、どうやら薬の効果は出た模様。
また一ヶ月間続けて目薬をしないといけないが、とりあえず危険水域の数字ではなくなったので良かったよ。

TracのExcelReportPluginをpython2.3で利用できないかと探っていたが、
とりあえず出来たので他にやりたい人のためにhackの記録を残しておく。

流れ
・pyExceleratorの代わりになるxlwtライブラリをインストール
・xlwtライブラリはpython2.3対応と謳っているが、python2.4で導入されたDecimal型を
 使っているので関連モジュールを修正する
ExcelReportPluginでExcel出力ライブラリをpyExceleratorからxlwtに変更する。

詳細
1.xlwtのインストール

svn co https://secure.simplistix.co.uk/svn/xlwt/
cd trunk
python setup.py install

2.xlwtの問題箇所修正
/usr/lib/python2.3/site-packages/xlwtに移動してRow.pyを修正
9行目の下記をコメントアウト

from decimal import Decimal

216行目

elif isinstance(label, (float, int, long, Decimal)):

を以下の通り修正

elif isinstance(label, (float, int, long, int)):

3.ExcelReportPluginを修正
excel_report_plugin.pyを修正する

from pyExcelerator import *

from xlwt import CompoundDoc
from xlwt import Workbook
from xlwt import Font
from xlwt import Alignment
from xlwt import XFStyle

なお、上記作業の前に、reporter.pyにはパッチを適用しておくこと。
詳細は前のエントリを参照。

プロジェクトにあったら便利なので試してみる。
なお、Python2.4が必要になるので注意が必要だ。

1.ReportPluginPatchを適用する
まずreport-pluguinにパッチを適用する必要がある。バージョンにあったものを適用する。

wget http://www.trac-hacks.org/attachment/wiki/ReportPluginPatch/trac-0.10.4-report-plugin.patch?format=raw
cp /usr/lib/python2.3/site-packages/trac/ticket/report.py /usr/lib/python2.3/site-packages/trac/ticket/report.py.org
patch /usr/lib/python2.3/site-packages/trac/ticket/report.py trac-0.10.4-report-plugin.patch

2.pyExceleratorを導入する

wget http://nchc.dl.sourceforge.net/sourceforge/pyexcelerator/pyexcelerator-0.6.3a.zip
unzip pyexcelerator-0.6.3a.zip
cd pyExcelerator-0.6.3a
python setup.py install

3.ExcelReportPluguinの導入
モジュールを入手して、pluguinディレクトリにコピーすれば良いだけ。

svn co http://trac-hacks.org/svn/excelreportplugin
cd excelreportplugin/0.10/
cp excel_report_plugin.py /var/www/trac/foobar/plugins/

以上で、Tracのチケットの出力の際に、Excel形式もダウンロードできるようになる。
これだけで顧客や協力会社との課題管理表のやりとりの準備に時間がかからなくなるはずだ。
会社での評判も良かった。

#現在Python2.3で動作するように色々パッチ作成中。。。。
【後日追記】
Python2.3でも動かせる方法を発見しました。こちらを参照してhackしてください。

【後日追記】
このままでは、出力リンクが、Tracのインスタンス数分表示されてしまう不具合があります。
これは、プラグインが単なるpy形式で提供されていてeggになっていないためです。
こちらを参照して、自分でegg化してインストールすると良いでしょう。

TracのExcelReportPluginをインストールしようとしたが、pythonのバージョンが2.3だった。がっくし。

さすがにバージョンあげるとなると大仕事だなぁ。

大分社内への布教活動も進んでいて、さらに使いやすくするために色々いじくっているのでメモ。
なお、現在利用しているバージョンは0.10.4である。

■チケットの担当者をプルダウン選択にする

trac.iniの[ticket]セクションにあるrestrict_ownerをtrueに変えれば良い。

■ガントチャートとカレンダーを利用する

TracGanttCalendarプラグインを利用する。
但し本家サイトで作成されているものは0.11専用で0.10系では動作しない。
そこでこちらから、0.10対応のモジュールを入手する。

wget http://pw.tech-arts.co.jp/technical/src/ganttcalendar-0.0.1.tar.gz
tar xvfz ganttcalendar-0.0.1.tar.gz
cd ganttcalendar-0.0.1
python setup.py install

引き続き設定を行う。
trac.iniに以下を追加する。

[components]
ganttcalendar.* = enabled

[ticket-custom]
due_assign = text
due_assign.label = 開始日
due_assign.order = 1
due_close= text
due_close.label = 終了日
due_close.order = 2
complete= text
complete.label = 進捗率(%)
complete.order = 3

を追加。
これでapacheを再起動すると、Tracのタブにカレンダーとガントが出るようになる。

■日付入力支援機能を利用する

Decoratorプラグインを利用する。

svn co http://svn.sourceforge.jp/svnroot/shibuya-trac/plugins/decoratorplugin/branches/0.10
cd 0.10/
python setup.py install

引き続き設定を行う
trac.iniに以下を追加する。

[components]
decorator.* = enabled

[decorator]
calendar_fields=due_assign,due_close

« 前の記事 


ads

Ryuzeeのお気に入り