header image

Ryuzeeの他サイト

mixi Twitter Twitter

Categories

携帯対応

QRコード

RING

人気ブログランキング



新着記事

2008/05/17 05:37:36 Trac none Comments
add Hatena Bookmark Tags: ,

社内でpukiwikiだのTracだの色々なwikiを使っているので、正直文法覚え切れない。
出来ればWYSIWYGでwiki表記覚えずにそれなりのページ作れたら良いよね~、ということでTracWysiwygPlugin

■インストール

svn co http://trac-hacks.org/svn/tracwysiwygplugin/
cd tracwysiwygplugin/0.10/
python setup.py install

またプラグイン有効化のために以下を追加

[components]
tracwysiwyg.* = enabled

以上が終わったらapache再起動

■出来ること
導入前後の画面を比べるとはっきり分かるが、Textareaの上部には、WYSIWYGにするかどうかのトグルが表示され、WYSIWYGを選択するとツールバーが表示されて、ごにょごにょ出来る。出来ることは以下の通り。

  • 文字スタイル設定(H1~H6、コードブロック、引用)
  • 文字装飾(太字、斜体、下線、取消し線)
  • リンク挿入、リンク削除
  • リスト作成(番号つき、番号なし)
  • インデント
  • テーブル操作(作成、行や列の挿入・削除)
  • 区切り線の挿入、改行の挿入

スクリーンショットはこんな感じ。ちょっとボタンは寂しいが、質実剛健。

■お勧め度
ちょっと挙動が怪しげな気がしなくも無いのだけど、入れて損することはまずない。お勧め。

2008/05/12 06:16:30 Trac none Comments
add Hatena Bookmark Tags: ,

ProjectMenuPluginは複数のプロジェクトがある場合、他のプロジェクトに簡単に移動できるように画面上にプルダウンで他のプロジェクトを表示するプラグイン。
複数案件を同時に実施している場合に便利だ。

■インストール

svn co http://www.trac-hacks.org/wiki/ProjectMenuPlugin
cd projectmenuplugin/
cd 0.10/
python setup.py install

以上を実施したら、trac.iniにおいて

[components]
projectmenu.* = enabled

を追加して、apacheを再起動すれば良い。

■嵌りポイント
複数のTracをディレクトリを走査することで発見しているため、同一階層ディレクトリにTracプロジェクト以外のディレクトリが存在する場合は下記のようなエラーになる。
(下記のケースは同一階層にTracプロジェクトではないtmpディレクトリを作った場合)

Traceback (most recent call last):
  File "/usr/lib/python2.3/site-packages/trac/web/main.py", line 406, in dispatch_request
    dispatcher.dispatch(req)
  File "/usr/lib/python2.3/site-packages/trac/web/main.py", line 208, in dispatch
    chrome.populate_hdf(req, chosen_handler)
  File "/usr/lib/python2.3/site-packages/trac/web/chrome.py", line 319, in populate_hdf
    for category, name, text in contributor.get_navigation_items(req):
  File "build/bdist.linux-i686/egg/projectmenu/web_ui.py", line 21, in get_navigation_items
  File "/usr/lib/python2.3/site-packages/trac/web/main.py", line 58, in _open_environment
    env_cache[env_path] = open_environment(env_path)
  File "/usr/lib/python2.3/site-packages/trac/env.py", line 462, in open_environment
    env = Environment(env_path)
  File "/usr/lib/python2.3/site-packages/trac/env.py", line 147, in __init__
    self.verify()
  File "/usr/lib/python2.3/site-packages/trac/env.py", line 195, in verify
    fd = open(os.path.join(self.path, 'VERSION'), 'r')
IOError: [Errno 2] No such file or directory: '/var/www/trac/tmp/VERSION'

ということで、既にパッチが提供されている。
(普通にIOErrorをトラップして無視すれば良いのだけど)

■導入結果

2008/05/11 18:30:12 Trac none Comments
add Hatena Bookmark Tags: ,

NavHiderPluginはTracのツールバーの項目を項目毎に非表示に出来るプラグイン。

■インストール。
いつも通り。

svn co http://trac-hacks.org/svn/navhiderplugin
cd navhiderplugin/0.10/
python setup.py install

そしたら、trac.iniを編集して、

[components]
navhider.* = enabled

としてコンポーネントを有効にする。

※python2.3の場合はエラーになってうまくいかない。(Internal Server Error)
本家サイトのチケットにあるようにモジュールを修正する。
具体的には、filter.pyの7行目付近

try:
    set = set
except ImportError:
    from sets import Set as set

について

try:
    set = set
except NameError:
    from sets import Set as set

に変えれば良い。

■メニューの表示・非表示の切り替え

[navhider]
mainnav = wiki,timeline,roadmap,browser,tickets,newticket,search,nikoniko,admin,ticketcalendar,ticketgantt,stractistics,
gantt
metanav = login,logout,settings,help,about

のように、隠すタブをtrac.iniに記述するだけで良い。表示させたい場合は機能名の先頭に!もしくは-をつけると、非表示にはされない。

■用途
とりあえずタブは隠すだけで機能自体を殺すわけではないので、画面表示をすっきりさせたい場合には有効。
僕みたいにたくさんプラグインを入れて、メニューが2段になってしまうような変な人にも有効かな。

前回、goodMoodやbadMoodを選択しても、そいつが設定されず、全部標準になってしまうという問題にぶつかったが、これは結局ソースコードを追う限り、QUERY_STRINGが正しく取得できていないためであった。具体的には
120行目付近からある

if req.args.has_key('badMood'):

のあたりで、リクエストパラメータにbadMood、okMood、goodMoodがあるかどうかを調べているのだが、リクエストの際に

/nikoniko?goodMood

のようにキー名のみになっていて、値が入っていない(=もない)ため、has_keyでキーが無いと判定されるのが原因っぽい。
なので、修正としては

/nikoniko?goodMood=dummy

のようにキーの存在を明示してあげるように、同梱のテンプレートを修正すれば良い。修正箇所は、ダウンロードしたソースのtemplates/nikoniko.csの27行目から29行目。それぞれ

<a href="?badMood">
</a><a href="?okMood">
</a><a href="?goodMood">

の箇所を

</a><a href="?badMood=">
</a><a href="?okMood=">
</a><a href="?goodMood=">

に修正する。

前回の日付周りの修正とこのテンプレートの修正が終わったら、再度いつものようにインストール作業をして、プラグインを有効化する。
すると以下のような画面を表示することが出来る。
NikoNikoPlugin

これをベースに更にアイコンを変えていくと良い。以下はNikoNikoPluginの画像を、NicoCaleMacroの画像に入れ替えたもの。こっちの方がよいかな。
NikonikoPluginImageChange

2008/05/04 12:04:52 Trac none Comments
add Hatena Bookmark Tags: ,

trac-hacksにあるNikoNikoPluginを評価してみようと思って試してみたが、失敗。

失敗の原因

  • python2.3のせいか、そもそもモジュールの実行時にエラーが出る。具体的にはweb_ui.pyの210行目付近
    mood_data[username][mood_date.strftime("%A")] = mood
    comment_data[username][mood_date.strftime("%A")] = comment

    にて、strftimeがunicodeオブジェクトのメンバーじゃないよ~というエラーが出る。

    AttributeError: 'unicode' object has no attribute 'strftime'

    これは以下のように直せばよい。

    st = time.strptime(mood_date,"%Y-%m-%d");
    dt = datetime.datetime(st.tm_year, st.tm_mon, st.tm_mday);
    mood_data[username][dt.strftime("%A")] = mood
    comment_data[username][dt.strftime("%A")] = comment

  • 他に問題として、俺の環境だけかもしれないのだが、goodMoodやbadMoodを選択しても、そいつが設定されず、全部標準になってしまう。多分根は単純だと思うが・・・
  • あとやっぱりUIが悪いかな~。あんまりチームで盛り上がるアイコンではない。自分で変えられるようなので変えればよい。

ということでまだちゃんと動作しない。
ちゃんと動作すれば、チーム全体の雰囲気や問題の把握速度があがって良いだろう。

ニコニコカレンダー単体用のオープンソースアプリケーションがありそうな気もするのだが、pukiwikiのプラグインしかない。自分で作ってみよう。

2008/05/02 03:58:57 Trac 1 Comments
add Hatena Bookmark Tags: , , ,

ExcelReportPluginは便利なのだが、若干問題があるので修正してみた。

問題点は以下の通りだ。
・複数プロジェクトに導入すると、その個数分だけ、出力のリンクが追加されてしまう。
 (本家サイトでも報告済みでここに記載がある)

これに対応するためには、pluginsディレクトリ内に直接excel_report_plugin.pyを配置するのではなく、egg形式にして、共通ディレクトリに配置する。

手順は以下の通り。
1. trac-hacksからNew Plugin Generatorを入手して、適当な場所に解凍する。
2. 解凍した場所で以下のコマンドを実行する。

python newegg.py excel_report_plugin

これによりexcel_report_plugin-pluginというディレクトリの中にsetup.pyや各種ディレクトリが出来上がる。
3. この中にexcel_report_pluginというディレクトリが出来上がるので、excel_report_plugin.pyを配置する。
4. ここまで出来たらいつものように

python setup.py install

を実行する。これによりExcel_report_plugin-0.1-py2.4.eggがsite-packagesディレクトリにインストールされる。
5. 最後にプラグインを有効化する。

これでOK。
なお、setuptoolsでは依存性のチェックやなんかも出来るので覚えておいて損はなさそう。

2008/05/01 03:55:58 Trac none Comments
add Hatena Bookmark Tags: , ,

今度は各チケットにどれくらいの時間がかかっているか管理したいので、Timing and Estimation Pluginを導入してみる。

■インストール

# http://trac-hacks.org/svn/timingandestimationplugin/branches/trac0.10
# cd trac0.10/
# python setup.py install

trac.iniには以下を追加

[components]
timingandestimationplugin.* = enabled

trac環境をアップグレード
(/path/to/tracは自身の環境に合わせる)

# trac-admin /path/to/trac upgrade
Done
Timing and Estimation needs an upgrade
Upgrading Database
Creating bill_date table
Creating report_version table
Upgrading report_version table to v4
Dropping report_version table
Upgrading reports
Upgrading fields
Upgrading usermanual
Done Upgrading
Upgrade done.

そして以上が終わったらapache再起動する。

■使い方
チケットをいじくるときに、想定所要時間(Estimated Hours)、所要時間(Add Hours to Ticket)、請求対象(Billable)かどうかを入れていく。
レポート画面では、それぞれの予実の差や合計値などが閲覧できる。

■個人的な感想
もうちょっと完成度が高いと良いかなぁ。
マニュアルにも記載があるのだが、インストールすると「チケットを見る」の中にレポートが数種類追加されるのだが、どれをクリックしても

Report execution failed: Dynamic variable '$NEW' not defined.

といわれてしまい、しかもこれは仕様で「management」タブの中から見ろ、と書かれている。
こういうのはちょっと苦手。

ただ、実績の集計が出来るというのは従量課金で仕事をしているケースでは有効だと思われる。(カスタムフィールド使えば良いという話もある)

2008/04/30 01:53:55 Trac none Comments
add Hatena Bookmark Tags: , ,

複数の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でゴリゴリしなくても何とかなるかもしれない。

2008/04/29 02:40:13 Trac none Comments
add Hatena Bookmark Tags: , ,

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の状況推移で集計から除外する編集者を指定する。複数指定する場合はカンマ区切り

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にはパッチを適用しておくこと。
詳細は前のエントリを参照。

« 前の記事 

add to hatena hatena.comment (0) add to del.icio.us (0) add to livedoor.clip (0) add to Yahoo!Bookmark (0) Total: 0