Webコンサルタントの愚痴とアジャイル,生産性向上,Trac,オープンソースなどの与太話
しかも、mozillaのサイト見たときに、一番メモリ使いまくって、俺の環境でもスワップしまくり、応答が遅くなる。
どういうギャグだ?
View DiffでDiffを見ようとすると、
Traceback (most recent call last):
File "/var/www/html/reviewboard/diffviewer/views.py", line 82, in view_diff
files = get_diff_files(diffset, None, interdiffset, highlighting)
File "/var/www/html/reviewboard/diffviewer/diffutils.py", line 594, in get_diff_files
enable_syntax_highlighting)
File "/var/www/html/reviewboard/diffviewer/diffutils.py", line 513, in generate_files
lambda: get_chunks(filediff.diffset,
File "/var/www/html/reviewboard/djblets/util/misc.py", line 49, in cache_memoize
data = lookup_callable()
File "/var/www/html/reviewboard/diffviewer/diffutils.py", line 516, in <lambda>
enable_syntax_highlighting))
File "/var/www/html/reviewboard/diffviewer/diffutils.py", line 317, in get_chunks
new = get_patched_file(old, filediff)
File "/var/www/html/reviewboard/diffviewer/diffutils.py", line 233, in get_patched_file
return patch(filediff.diff, buffer, filediff.dest_file)
File "/var/www/html/reviewboard/diffviewer/diffutils.py", line 101, in patch
stderr=subprocess.STDOUT)
File "/usr/lib/python2.4/subprocess.py", line 542, in __init__
errread, errwrite)
File "/usr/lib/python2.4/subprocess.py", line 975, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
あと、UTF-8なのに、日本語文字化けする。
日本語含むフィールドを保存しようとすると
とりあえずテスト機に使ったのは、Fedora Core release 5 (Bordeaux)なので、CentOS5で試してみるが、こりゃ先は長いかな~。まだベータ版ということもあり、資料が少ないのが辛い。
ソースコードレビューのプラットフォームが欲しかったので、ReviewBoardを試してみた。
ReviewBoardはpython2.4以上で動作する。DBはMySQLやsqlite3等に対応。
#追記
このサイトの下記の記事も参照のこと。
http://www.ryuzee.com/contents/blog/658
http://www.ryuzee.com/contents/blog/666
http://www.ryuzee.com/contents/blog/667
SECRET_KEYを適当に設定
初期化テーブルの作成
サンプルをもとにこんな感じ。本体は/var/www/html/reviewboardにインストールして、こいつをドキュメントルートに指定した。
(本当は変。)
# Error handlers
ErrorDocument 500 /errordocs/500.html
# Serve django pages
<locationmatch ^/(.*)$>
PythonPath "['/var/www/html'] + ['/var/www/html/reviewboard'] + sys.path"
SetEnv DJANGO_SETTINGS_MODULE reviewboard.settings
SetHandler mod_python
PythonHandler django.core.handlers.modpython
PythonAutoReload Off
PythonDebug Off
SetEnv PYTHON_EGG_CACHE /tmp/.python-eggs
# If you run multiple mod_python sites in the same apache
# instonce, uncomment this line:
# PythonInterpreter reviewboard
</locationmatch>
# Serve static media without running it through mod_python
# (overrides the above)
<locationmatch ^(/(media|errordocs))>
SetHandler None
</locationmatch>
# Alias static media requests to filesystem
Alias /media /var/www/html/reviewboard/htdocs/media
Alias /css /var/www/htdocs/reviewboard/htdocs/css
Alias /images /var/www/htdocs/reviewboard/htdocs/images
Alias /scripts /var/www/htdocs/reviewboard/htdocs/scripts
Alias /errordocs/ /var/www/htdocs/reviewboard/htdocs/errordocs
</virtualhost>
#使用感と問題は次回に。
TestLinkでxmlをインポートしようとしたら
なんていうエラーが出てインポートできない。
このエラーは、PHPがdomを有効にした状態でコンパイルされていないのが原因。
なので、php-xmlというパッケージを導入すれば直る。
こんなんではまるとは・・・。とほほ。
ちなみに、これでXMLでテストスイートを一括インポートできるようになり、かなり効率があがった。
こちらにあるtestcaseConvを使うと、CSVファイルをテストスイートに変換してくれるので、既存資産も簡単に移行できる。
今日部下から、毎月やらなきゃいけないタスクがあって、真面目にチケット管理したいのだけど、毎回入れるのが負担だぁ、と言われたので、ちょっとやり方を考えてみた。
以下が考えられる案
案1)XMLRPCプラグインを突っ込んで、外部からチケット追加の操作を行う。
案2)Tracで利用しているデータベースに直接レコードを投入する。
案3)SeleniumとExcelを組み合わせて、自動登録ケースを作り、TestSuiteとして実行する。
メリットとデメリットを考えてみる。
案1は、カスタムフィールドを追加していたりするとどうなのかな?XMLRPCのインターフェイスは
なので、第三引数あたりでごにょごにょ出来るのかもしれないけど。試してみる必要がある。
あと、そもそもXMLRPCの呼び出し部分は、プログラム書かないといけないのと、そもそもデータの設定方法を考えないといけない。全体的に面倒な感じ。
案2は、これは比較的楽なんだけど、カスタムフィールド使っている場合は、複数テーブルにinsertしなきゃいけないのが若干面倒なのと、やっぱりデータの設定方法が面倒。案1よりはマシといった程度。
案3が推奨だと思う。
ExcelVBAとSeleniumを知っていればかなり簡単。
手順は以下の通りかな。
・Excelの表に登録したいチケットの内容を列挙する。
・ExcelVBAで、それをSeleniumのテストの形で出力する。
・複数のテストを束ねるTestSuiteも出力する。
・SeleniumIDE(β1.0以上が必要)で、TestSuiteを呼び込み全部まとめて実行する。
ちょっとVBAを作りこんでみよう。
社内でpukiwikiだのTracだの色々なwikiを使っているので、正直文法覚え切れない。
出来ればWYSIWYGでwiki表記覚えずにそれなりのページ作れたら良いよね~、ということでTracWysiwygPlugin。
■インストール
またプラグイン有効化のために以下を追加
以上が終わったらapache再起動
■出来ること
導入前後の画面を比べるとはっきり分かるが、Textareaの上部には、WYSIWYGにするかどうかのトグルが表示され、WYSIWYGを選択するとツールバーが表示されて、ごにょごにょ出来る。出来ることは以下の通り。
スクリーンショットはこんな感じ。ちょっとボタンは寂しいが、質実剛健。

■お勧め度
ちょっと挙動が怪しげな気がしなくも無いのだけど、入れて損することはまずない。お勧め。
ProjectMenuPluginは複数のプロジェクトがある場合、他のプロジェクトに簡単に移動できるように画面上にプルダウンで他のプロジェクトを表示するプラグイン。
複数案件を同時に実施している場合に便利だ。
■インストール
以上を実施したら、trac.iniにおいて
を追加して、apacheを再起動すれば良い。
■嵌りポイント
複数のTracをディレクトリを走査することで発見しているため、同一階層ディレクトリにTracプロジェクト以外のディレクトリが存在する場合は下記のようなエラーになる。
(下記のケースは同一階層にTracプロジェクトではないtmpディレクトリを作った場合)
ということで、既にパッチが提供されている。
(普通にIOErrorをトラップして無視すれば良いのだけど)
NavHiderPluginはTracのツールバーの項目を項目毎に非表示に出来るプラグイン。
■インストール。
いつも通り。
そしたら、trac.iniを編集して、
としてコンポーネントを有効にする。
※python2.3の場合はエラーになってうまくいかない。(Internal Server Error)
本家サイトのチケットにあるようにモジュールを修正する。
具体的には、filter.pyの7行目付近
について
に変えれば良い。
■メニューの表示・非表示の切り替え
のように、隠すタブをtrac.iniに記述するだけで良い。表示させたい場合は機能名の先頭に!もしくは-をつけると、非表示にはされない。
■用途
とりあえずタブは隠すだけで機能自体を殺すわけではないので、画面表示をすっきりさせたい場合には有効。
僕みたいにたくさんプラグインを入れて、メニューが2段になってしまうような変な人にも有効かな。
前回、goodMoodやbadMoodを選択しても、そいつが設定されず、全部標準になってしまうという問題にぶつかったが、これは結局ソースコードを追う限り、QUERY_STRINGが正しく取得できていないためであった。具体的には
120行目付近からある
のあたりで、リクエストパラメータにbadMood、okMood、goodMoodがあるかどうかを調べているのだが、リクエストの際に
のようにキー名のみになっていて、値が入っていない(=もない)ため、has_keyでキーが無いと判定されるのが原因っぽい。
なので、修正としては
のようにキーの存在を明示してあげるように、同梱のテンプレートを修正すれば良い。修正箇所は、ダウンロードしたソースのtemplates/nikoniko.csの27行目から29行目。それぞれ
の箇所を
に修正する。
前回の日付周りの修正とこのテンプレートの修正が終わったら、再度いつものようにインストール作業をして、プラグインを有効化する。
すると以下のような画面を表示することが出来る。

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

trac-hacksにあるNikoNikoPluginを評価してみようと思って試してみたが、失敗。
失敗の原因
にて、strftimeがunicodeオブジェクトのメンバーじゃないよ~というエラーが出る。
これは以下のように直せばよい。
ということでまだちゃんと動作しない。
ちゃんと動作すれば、チーム全体の雰囲気や問題の把握速度があがって良いだろう。
ニコニコカレンダー単体用のオープンソースアプリケーションがありそうな気もするのだが、pukiwikiのプラグインしかない。自分で作ってみよう。
日記 PHP オープンソース Linux Trac Perl wordpress フリーソフト Agile 自宅サーバ phpMyFaq Plugin 書評 Delphi apache プラグイン Subversion アジャイル mojavi セキュリティ Ruby Firefox Ajax/Web2.0 eclipse サーバ Zope フレームワーク CakePHP 文字化け scuttle OpenVZ 自宅 phpBB CMS 翻訳・日本語化 Excel ApacheDS 生産性向上 仮想化 hacks CodeIgniter XAMPP LDAP SBM taskfreak Ajax 修正 言語ファイル mod_security ダウンロード HTML::FillInForm 情報共有 格安 メンテナンス 移転 アンケート レンタル PhpScheduleIt 翻訳 API