2007/01/29

DiscussPluginの日本語版

去年の10月に身体を壊してプログラマを辞めてしまったため、ほったらかしになっていたこのblogですが、今日、「DiscussPluginの日本語版をDLしたいけど、公開先のURLにアクセスできない」ってメールをいただきました。

申し訳ないです。blogでお断りしておけばよかったのですが、配布していた日本語版にちょっと不具合があって、TracとSubversion自体の公開を中止してました。

必要な方がいらっしゃるなら、ちょっと調べて修正した上で、再度公開しようと思います。数日中に調べますので、しばらくお待ちください。

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

2006/09/10

DiscussionPluginのトピック本文編集の件

ですが、trac-hacks.org にチケット書いたら作者の方からお答えいただきました。

どうやら、リクストメソッドをPOSTに変更するとViewTopicマクロが機能しなくなるらしいです(時間取れないので確かめてませんが)。

なので、昨日のblogに添付したeggはこの点をご了承の上、ご利用いただきたく。

あと、DiscussionPluginの日本語化とか怪しい修正したのは、うちのSubversionに置いてあります。日本語化と怪しい修正を一緒にコミットしちゃってあるので、日本語化だけほしい方には「なんじゃこれ」状態ですが。Tracも使えますんで、ご入用な方は(いないか。。。)適当に取捨選択して持っていってください(id: guest/pass: guest)。

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

昨日に引き続き

TracのDiscussionPluginに少し手を入れました。

今回もたいしたことじゃないんですが。。。
フォーラムで投稿に対して引用して返信を行う場合に、元メッセージに引用記号('>')を付けてくれるのですが、空行にも付けてくれちゃうので、Wiki的には全体が1パラグラフに表示されちゃうんですよね。これはどうかと思うので、

api.py(507行目あたり)
                for I in xrange(len(lines)):
                    lines[I] = '> %s' % (lines[I])

                for I in xrange(len(lines)):
                    # add quote marking
                    if lines[I] != '':
                        lines[I] = '> %s' % (lines[I])
                    else:
                        lines[I] = '[[BR]]>[[BR]]'

に修正。ほんとは空文字だけだったら'[[BR]]>[[BR]]'にしたかったんだけど、Pythonはよく分からないので。とりあえず簡単に。

diff

Index: trunk/discussion-ja/0.9/tracdiscussion/api.py
===================================================================
--- trunk/discussion-ja/0.9/tracdiscussion/api.py (revision 5)
+++ trunk/discussion-ja/0.9/tracdiscussion/api.py (revision 6)
@@ -506,5 +506,9 @@
                 lines = topic['body'].splitlines()
                 for I in xrange(len(lines)):
-                    lines[I] = '> %s' % (lines[I])
+                    # add quote marking
+     if lines[I] != '':
+                        lines[I] = '> %s' % (lines[I])
+                    else:
+                        lines[I] = '[[BR]]>[[BR]]'
                 req.hdf['args.body'] = '\n'.join(lines)

あー、でも、これだと引用の引用はやっぱりおかしなことになっちゃうなあ。。。(^^;;;;

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

DiscussionPluginで長文のトピック本文が編集できない件について

DiscussionPlugin、よくできていると思うのですが。

トピックの本文になが~~い文章を書くと、後で修正しようと思っても編集できなくなります。トピック作成の時はPOSTで送ってるのに、なぜか編集の時はGETで送ってるんですよね。で、なが~~い文だと「414 Request-URI Too Long」になっちゃうんですね。トピック編集だけじゃなくて、返信もそう。

簡単には直せないんだろうなと思ったのですが、message-list.csのフォームをmethod='post'にしたらあっさり直りました。ついでに、メッセージを日本語化。

ざっとテストしてみたけど、大丈夫みたい。でも、ほんとにこんなんでいいんだろうか。そもそもなぜgetになっていたんだろう。なにか深いわけがあるのかも。

とりあえず、eggをUPしてみます。よかったら持っていって試してみてください。単純に既存のを置き換えればOKだと思います。あ、Trac0.9用です。

「TracDiscussion-0.5-py2.3.egg」をダウンロード

------

(9/10 追記)
やっぱりリクエストメソッドをPOSTに変更すると副作用があるらしいです。詳しくはTrac Hacksのチケットをご参照ください。

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

2006/09/04

アカウント管理系プラグイン3本

この週末は、なんかやる気がでなくてごろごろ。で、こんな時間になんとなくやる気になって。。。あー、また寝不足の月曜日(^^;;

今日はTrac君にアカウント管理系のプラグインを3つばかり入れてみました。ユーザ追加のたびにサーバにログインして、htpasswd叩くのメンドイから。

1. AccountManagerPlugin
このプラグインを入れると未ログイン状態でRegisterメニューが表示され、アカウント作成画面からアカウントを作成できます。

インストールは、コマンド一発。

easy_install http://trac-hacks.org/svn/accountmanagerplugin/0.9

で、trac.iniに以下の設定を追加。

[components]
acct_mgr.web_ui.registrationmodule = enabled
acct_mgr.web_ui.accountmodule = enabled
acct_mgr.api.accountmanager = enabled
acct_mgr.web_ui.loginmodule = enabled
acct_mgr.htfile.abstractpasswordfilestore = enabled
acct_mgr.htfile.htdigeststore = enabled  <--htdigest形式のパスワードファイルを使う場合
acct_mgr.htfile.htpasswdstore = enabled  <--htpasswd形式のパスワードファイルを使う場合
trac.web.auth.loginmodule = disabled <--Tracのデフォルトログインモジュールを無効に

htpasswdの場合

[account-manager]
password_format = htpasswd
password_file = /var/trac/trac.htpasswd <-- パスワードファイルの場所

htdigestの場合
[account-manager]
password_format = htdigest
password_file = /var/trac/trac.htdigest <--パスワードファイルの場所
htdigest_realm = TracRealm

さらに、HTTP認証を有効にしている場合は、無効にします。わたしの場合は、/etc/httpd/conf.d/python.confを修正。

これでApacheを再起動すればOK。

2. WebAdminUsersPlugin

このプラグインを入れると、WebAdminの画面でユーザの追加/削除/パスワードの変更ができるようになります。WebAdminPluginAccountManagerPluginが入ってないと使えないです。

# svn co http://trac-hacks.org/svn/webadminusersplugin
# cd webadminusersplugin
# python setup.py install

でインストールできるはずなんですが、なぜかこける。

Traceback (most recent call last):
  File "setup.py", line 3, in ?
    import ez_setup.py
ImportError: No module named ez_setup.py

こんなエラーが出ちゃうんです。。。よくわかんないけど、

import ez_setup.py
ez_setup.use_setuptools()

の2行をコメントアウトしたらインストールできた。(webadminuserspluginをチェックアウトしたディレクトリでpython ez_setup.py installすればよかったらしい。9/5追記)

あとは、TracのWebAdminのプラグイン設定画面でWebAdminUsersを有効にすればOK。WebAdminのメニューにUser Accountメニューが追加されて、ユーザの追加/削除/パスワード変更ができるようになります。

3. AuthzWebadminPlugin

WebAdminの画面上でSubversionのauthzファイルを編集できるようにするプラグイン。

# svn co http://trac-hacks.org/svn/authzwebadminplugin
# cd authzwebadminplugin/0.9/
# python setup.py install

インストールしたらtrac.iniを編集。

[trac]
authz_file = /path/to/subversion.authz <-- Subversionのauthzファイルのパス

[components]
webadmin_authz.authz.authzmanager = enable

WebAdminの画面にAuthz Controlメニューが追加されます。テキストエリアに現在のauthzファイルの中身が表示されて、編集できるってだけなんですけどね。ブラウザからできるのは便利かな。

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

2006/09/01

DiscussPluginのインストール

会社のTracはやはりSwigとSubversionのSwigバインディングが入っていなかったようで、それらをインストールして無事使えるようになりました。会社のはSubversionのロック方式の競合解決が欲しかったのでソースからビルドしたのですが、前提条件の確認不足でした。自宅ではyumでロック方式サポート前の1.1.4を入れてたのでうっかりでした。インストールについては、もう一度検証して、きちんとまとめたのを週末にでもアップしたいと思います。

今日は、Wikiではやりにくい他部署との連携に便利そうなDiscussionPluginを入れてみました。

Discussionプラグインのインストール

trac-hacks.orgにあるDiscussionPluginのページから、discussionplugin.zipをダウンロードします。
最初は、WebAdminプラグインと同じように拡張子を.eggに替えて、/usr/lib/python2.3/site-packages/に置いてみたんだけど動かない。unzipして中を見てみたら、ソースコードそのままでeggパッケージになってるわけではないらしい。なので、

# unzip discussionplugin.zip
# cd discussionplugin/0.9/
# python setup.py install

を実行してインストールしたあと、

# /etc/rc.d/init.d/httpd restart

でApacheを再起動したら、WebAdminのプラグイン画面に'TracDiscussion 0.5'が表示されました。あとは、'TracDiscussion 0.5'のリンクをクリックして、Discussionプラグインの設定画面を出して機能を有効にします。[Apply changes]をクリックしたとたんにInternal Server Errorが表示されますが、慌てなくて大丈夫。

# trac-admin /home/trac/projects/trac/ upgrade

を実行し、リロードすればインストール完了です。メニューバーの一番右側に[Discussion]ボタンが表示されるはず。それとともにWebAdminのメニューにDiscussion Systemのメニューが表示されます。

WebAdminが入っていない場合は、<trac_env_dir>/conf/trac.iniに以下の設定を記述して、upgradeを実行すればいいみたいです。ただ、フォーラムの管理を考えるとWebAdminは入っていたほうが便利だと思います。

[discussion]
title = Discussion

[components]
tracdiscussion.init.discussioninit = enabled
tracdiscussion.timeline.discussiontimeline = enabled
tracdiscussion.wiki.discussionwiki = enabled
tracdiscussion.admin.discussionwebadmin = enabled
tracdiscussion.core.discussioncore = enabled

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

2006/08/31

Tracいいっ!

週末をつぶしておうちPCにインストールしたTracですが、その後も毎晩遅くまでblogを徘徊して情報集めたり、プラグインをインストールしたりTrac不眠の毎日です。

会社で提案してみたところ、とりあえずわたしが参加しているプロジェクトでためしに使ってみることになりました。で、帰り際の1時間ちょっとを使って、開発用サーバ機(CentOS)にインストール。PythonのSubversionバインディングがらみでエラー出ててリポジトリブラウザが動いてないけど、その修正は明日。

実は、会社では先週の月曜日あたりにAll-In-One-Tracを自分の開発マシン(Windows XP)にインストールして、ひとりTracしてたのでした。1週間ほど、しかも個人的に使っただけですが、その便利さは十分わかりましたよ。何が便利かって、

  • ソース見てて今やってる作業とは関係ないところで「あれ?ここ変」と思ったときに、チケット登録しておけばちゃんと管理できる
  • チケットからリポジトリブラウザ、リポジトリブラウザからチケット、さらにはWikiと横断的にリンクを貼れる
  • 直したはずのバグが直ってなかったとき、チケットに貼ったチェンジログのリンクを辿れば、すぐにタコだった修正個所が確認できる
  • 画面がなかなかカッコイイ
  • チケットをCloseするのが快感!!(笑

ひとりTracでも相当大きなメリットを享受できるので、チーム使った場合にはほんとに効果絶大だと思う。他のメンバーの作業を覗いて、いいアイディアをいただく、なんてことも気軽にできるので、チームのレベルアップにも役立つんじゃないかと思う。あそこってどうやって実装したのかな、とか思ってもとソースを漁るのが面倒でなかなかできなかったりするので。

しかも、うちの会社は基本的に社内開発なので、運営サイドの部署との連携にも使えそう。

ただ、素のTracだとちょっと不満もある。たとえば、

  1. 管理がコマンドラインツールのみ
  2. 一度ログインするとログアウトしてもブラウザを閉じないと認証情報が消えない(Basic/Digest認証だからしょうがないんだけど)
  3. Wikiがちょっとシンプルすぎ
  4. チケットのワークフローにテストフェーズがない
  5. プロジェクト全体を一度に見回すことができない

ぱっと思いつくのはこれくらいかな。でも、わたしが思いつくくらいのことなので、やっぱりエライ人も同じことを思ったらしく。ちゃんと解決してくれるプラグインとかがあったりするみたいなんですね。

  1. WebAdminプラグイン紹介Wikiでんでんのハマリメモ
  2. AccountManager紹介Wiki
  3. MacroBazaar
  4. WorkFlowDisscussion紹介blog
  5. TraM紹介blog

ほかにも添付ファイルの文字バケ問題とかいろいろ気になってることはあるけど。今日はこれくらい。少しずつ調べて、試してみたらまたメモ書きます。

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

2006/08/29

WebAdminプラグインのインストールでハマリ

Tracの管理はすべてコマンドラインツールのtrac-adminで行います。コマンドラインツールでの管理は、バッチ処理とかもできるので便利だとは思います。でも、ちょっと権限を直したいようなときにも、サーバにリモートログインしてコマンド叩かなきゃならないってのはやはり面倒。

「Webインタフェースないのかな~」と思ってたらありました。その名もWebAdmin!さっそくインストール。

全プロジェクトで使いたいので、グローバルにインストールすることにします。

まずは、マニュアルの「Tracプラグイン」のページに書いてある通りに、setuptoolsをインストール。

# wget http://peak.telecommunity.com/dist/ez_setup.py
# python ez_setup.py

Python2.3の場合は、TracWebAdmin-0.1dev_r2440-py2.3.egg.zipをダウンロードして、TracWebAdmin-0.1dev_r2440-py2.3.eggにリネームしたものを/usr/lib/python2.3/site-packages/(CentOSの場合。このディレクトリがなければ多分別の場所です。locate lib/python2.3/site-packagesして探してください)にコピーすればいいみたい。

# wget http://trac.edgewall.org/attachment/wiki/WebAdmin/TracWebAdmin-0.1dev_r2440-py2.3.egg.zip
# cp TracWebAdmin-0.1dev_r2440-py2.3.egg.zip /usr/lib/python2.3/site-packages/TracWebAdmin-0.1dev_r2440-py2.3.egg

あとは、trac.iniの編集
# vi /home/trac/project/conf/trac.ini
(省略)
[components]
webadmin.* = enabled
↑この2行を追加

管理者ユーザにTRAC_ADMIN権限が与えられていないといけません。確認します。
# trac-admin /home/trac/trac/ permission list admin
User    Action         
------------------------
admin BROWSER_VIEW   
(省略)
admin  TRAC_ADMIN

TRAC_ADMINがない場合は、
# trac-admin /home/trac/trac/ permission add admin TRAC_ADMIN
で権限を追加します。

さて、これでOKのはず。

Oops...
Trac detected an internal error:

Can't extract file(s) to egg cache
The following error occurred while trying to extract file(s) to the Python egg
cache:

  [Errno 13] Permission denied: '/root/.python-eggs'

The Python egg cache directory is currently set to:

  /root/.python-eggs

Perhaps your account does not have write access to this directory? You can
change the cache directory by setting the PYTHON_EGG_CACHE environment
variable to point to an accessible directory.

がーん。メッセージ読むと、/root/.python-eggsにキャッシュ作ろうとしてるらしい。/rootに権限与えるわけにはいかないしなあ。。。環境変数PYTHON_EGG_CACHEを設定すればキャッシュ先を変えられるらしいけど。apacheにシェルはないし。ここでさんざん悩んだ末。マニュアルよく読んだらかいてあるじゃん。

プラグインのキャッシュの設定 ¶

(略)
PYTHON_EGG_CACHE を SetEnv ディレクティブを使用して Apache に設定するには以下のようにします:

SetEnv PYTHON_EGG_CACHE /path/to/dir

あ、そっか。そういえば、そんなディレクティブあったっけ。てことで。昨日編集した/etc/httpd/conf.d/python.confの<Location /projects>ブロックを修正。

<Location /projects>
  SetHandler mod_python
  PythonHandler trac.web.modpython_frontend
  PythonOption TracEnvParentDir /home/trac
  PythonOption TracUriRoot /projects
  SetEnv PYTHON_EGG_CACHE /home/trac/.python-eggs  ←--この行を追加
</Location>

これでWebAdminが動きました。きっと、setuptoolsをrootでインストールしちゃったのがまずかった?

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

2006/08/28

Tracの設定

Trac設定作業の流れ
1. プロジェクト環境の作成
2. Apacheの設定
3. 権限の設定

1. プロジェクト環境の設定
# mkdir /home/trac
# trac-admin /home/trac/project initenv
# chown -R apache.apache /home/trac/project <-書き忘れてました。(8/28追記)
trac-adminがプロジェクト環境の設定に必要な情報を聞いてきますので、答えていきます。

2. Apacheの設定(マルチプロジェクト対応)
mod_python用の設定は、/etc/httpd/conf.d/python.confに書きます。LocationMatchによりマルチプロジェクトに対応する設定です。
# vi /etc/httpd/conf.d/python.conf
<Location /projects>
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnvParentDir /home/trac
PythonOption TracUriRoot /projects
</Location>

<LocationMatch "/[^/]+/login">
AuthType Basic
AuthName "Trac"
AuthUserFile /etc/httpd/passwd/dav_svn.passwd
Require valid-user
SSLRequireSSL
</LocationMatch>
# /etc/rc.d/init.d/httpd restart

AuthUserFileには、Subversionの認証用に作成したのと同じパスワードファイルを指定するとよいでしょう。

これで、https://localhost/projectsにアクセスするとプロジェクトのリスト(今は1つだけ)が表示されます。リンクを辿れば、プロジェクトのTracページが表示されます。

3. 権限の設定
デフォルトでは、anonymousにたくさんの権限が与えられているので、必要に応じて削除します。次のように与えられている権限を確認したあと、不要な権限を削除します。

# trac-admin /home/trac/project permission list anonymous

User Action
--------------------------
anonymous BROWSER_VIEW
anonymous CHANGESET_VIEW
anonymous FILE_VIEW
anonymous LOG_VIEW
anonymous MILESTONE_VIEW
anonymous REPORT_SQL_VIEW
anonymous REPORT_VIEW
anonymous ROADMAP_VIEW
anonymous SEARCH_VIEW
anonymous TICKET_APPEND
anonymous TICKET_CHGPROP
anonymous TICKET_CREATE
anonymous TICKET_MODIFY
anonymous TICKET_VIEW
anonymous TIMELINE_VIEW
anonymous WIKI_CREATE
anonymous WIKI_MODIFY
anonymous WIKI_VIEW
(略)

# trac-admin /home/trac/project permission remove anonymous REPORT_DELETE WIKI_CREATE WIKI_MODIFY REPORT_SQL_VIEW

あとは、ユーザごとに必要な権限を与えていきます。
# trac-admin /home/trac/project permission add <ユーザ名> <権限リスト>

Tracのインストール、設定については、TracのWikiにはじめから入っているマニュアルに詳しく書いてあります。
インストールとプロジェクト環境の設定
https://mercure.homeip.net/projects/trac/wiki/TracInstall

Apache(mod_python)の設定
https://mercure.homeip.net/projects/trac/wiki/TracModPython

権限の設定
https://mercure.homeip.net/projects/trac/wiki/TracPermissions

これで一応インストールはおしまい。あとはプラグインを入れたりしていろいろいじってみます。

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

2006/08/26

Subversion+Tracのインストール

うちの会社、バージョン管理使ってないので、Subversion+Tracを使ったら便利じゃないかなーと思って、自宅のマシンにインストールしてみました。会社の開発用サーバがCentOSなので、自宅の空いてるPCにCentOSをインストールするところから。

CentOSはここを参考にしてインストール。
http://centossrv.com/

1. apache、subversionのインストール
ApacheとSubversionの連携のためのmod_dav_svn、暗号化のためのmod_sslも一緒にインストールする。
# yum -y install httpd
# yum -y install subversion
# yum -y install mod_dav_svn
# yum -y install mod_ssl

2. Apacheの起動、リブート時の自動起動の設定
# /etc/rc.d/init.d/httpd start
# chkconfig httpd on
# chkconfig --list httpd
httpd           0:off   1:off   2:on    3:on    4:on    5:on    6:off

3. Subversionリポジトリの作成
# mkdir /home/svn
# cd /home/svn
# svnadmin create /home/svn/project
# svn mkdir file:///home/svn/project/trunk file:///home/svn/project/tags file:///home/svn/project/branches -m 'Create trunk, tags, and branches.'
# chown -R apache.apache /home/svn/project

4. Subversionの設定
/etc/httpd/conf.d/subversion.conf を編集
以下の設定を追加する。
<Location /mojavi>
    DAV svn
    SVNPath /home/svn/project
    AuthType Basic
    AuthName "Project repository"
    AuthUserFile /etc/httpd/passwd/dav_svn.passwd
    Require valid-user
</Location>

Basic認証用のパスワードファイルを作成する。
# /usr/bin/htpasswd -c /etc/httpd/passwd/dav_svn.passwd denden
New passwd: <パスワードを入力>
Re-Type new password: <パスワードを入力>

5. tracのインストールに必要なものをインストール
mod_python
ClearSilver
Python-XML
JapaneseCodecs
# yum -y install mod_python

# wget http://www.clearsilver.net/downloads/clearsilver-0.10.3.tar.gz
# tar xvfz clearsilver-0.10.3.tar.gz
# cd clearsilver-0.10.3
# ../configure --with-python=/usr/bin/python
# make install

# wget http://jaist.dl.sourceforge.net/sourceforge/pyxml/PyXML-0.8.4.tar.gz
# tar xvfz PyXML-0.8.4.tar.gz
# cd PyXML-0.8.4
# python setup.py install

# wget http://ftp.python.jp/pub/JapaneseCodecs/JapaneseCodecs-1.4.10.tar.gz
# tar xvfz JapaneseCodecs-1.4.10.tar.gz
# cd JapaneseCodecs-1.4.10
# python setup.py install

6. trac-jaのインストール
# wget http://www.i-act.co.jp/project/products/downloads/trac-0.9.6-ja-1.zip
# unzip trac-0.9.6-ja-1.zip
# cd trac-0.9.6-ja-1
# python setup.py install

はあ。とりあえず、SubversionとTracのインストールは完了。
Trac関係の設定は明日。

8/27 追記
trac-jaはインタアクト株式会社さんが公開&されている、日本語化されたTracです。メニューやメッセージはもとより、Wikiに入ってくるマニュアルまでほぼ完全に日本語化されています。

8/28 追記
<、>が消えちゃってました。実態参照で書かないとだめなんだ。。。

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

その他のカテゴリー

PHP | SUSE Linux | Trac | Web | お知らせ | 自宅サーバ