header image

Categories

FEED

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

携帯対応

QRコード

RING

人気ブログランキング



2008/09/29 06:19:27 Firefox, 日記 none Comments
add Hatena Bookmark

しかも、mozillaのサイト見たときに、一番メモリ使いまくって、俺の環境でもスワップしまくり、応答が遅くなる。

どういうギャグだ?

View DiffでDiffを見ようとすると、

[Errno 2] No such file or directory

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なのに、日本語文字化けする。
日本語含むフィールドを保存しようとすると

Error:
Saving the draft has failed due to a server error: Internal Server Error. Please try again later. If this continues to happen, please report it to your administrator

とりあえずテスト機に使ったのは、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

djangoのインストール

svn co http://code.djangoproject.com/svn/django/trunk/
cd trunk
python setup.py install

PIL(Python Image Library)のインストール

wget http://effbot.org/downloads/Imaging-1.1.6.tar.gz
tar xvfz Imaging-1.1.6.tar.gz
cd Imaging-1.1.6
python setup.py install

PatchUtilsのインストール

wget http://cyberelk.net/tim/data/patchutils/stable/patchutils-0.2.31.tar.bz2
bunzip2 patchutils-0.2.31.tar.bz2
tar xvf patchutils-0.2.31.tar
cd patchutils-0.2.31
./configure
make
make install

MySQLでデータベース作っとく

create database reviewboard;

さらにpythonでMySQLを使うため、MySQLdbを導入する。

wget http://jaist.dl.sourceforge.net/sourceforge/mysql-python/MySQL-python-1.2.2.tar.gz
tar xvfz MySQL-python-1.2.2.tar.gz
cd MySQL-python-1.2.2
python setup.py install

pysvnをインストールしないとレポジトリ連携できないのでインストールする。

wget http://pysvn.barrys-emacs.org/source_kits/pysvn-1.5.3.tar.gz
tar xvfz pysvn-1.5.3.tar.gz
cd pysvn-1.5.3
cd Source
python setup.py configure
make
cp -R pysvn /usr/lib/python2.4/site-packages/

reviewboardのインストール

svn checkout http://reviewboard.googlecode.com/svn/trunk/reviewboard
cp settings_local.py.tmpl settings_local.py

SECRET_KEYを適当に設定

初期化テーブルの作成

python manage.py syncdb

apacheの設定

サンプルをもとにこんな感じ。本体は/var/www/html/reviewboardにインストールして、こいつをドキュメントルートに指定した。
(本当は変。)

<virtualhost *:80>
    ServerName www2.ryuzee.com
    DocumentRoot /var/www/html/reviewboard/htdocs

    # 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>

あとはapache経由でアクセスするとこんな画面。

次に初回アクセスだからディレクトリを作る。

mkdir /var/www/html/reviewboard/htdocs/media/uploaded/images
chmod -R 777 /var/www/html/reviewboard/htdocs/media/uploaded/

これをやってリロードすると以下のようなログイン画面になる。

#使用感と問題は次回に。

TestLinkでxmlをインポートしようとしたら

PHP Fatal error:  Class 'DOMDocument' not found in /var/www/html/dev/testlink/third_party/domxml-php4-to-php5.php on line 70

なんていうエラーが出てインポートできない。

このエラーは、PHPがdomを有効にした状態でコンパイルされていないのが原因。

[root@kounan testlink]# rpm -aq | grep php
php-mysql-5.1.6-12.el5
php-pdo-5.1.6-12.el5
php-cli-5.1.6-12.el5
php-ldap-5.1.6-12.el5
php-common-5.1.6-12.el5
php-5.1.6-12.el5

なので、php-xmlというパッケージを導入すれば直る。

yum instal php-xml

こんなんではまるとは・・・。とほほ。

ちなみに、これでXMLでテストスイートを一括インポートできるようになり、かなり効率があがった。
こちらにあるtestcaseConvを使うと、CSVファイルをテストスイートに変換してくれるので、既存資産も簡単に移行できる。

2008/05/21 22:31:22 Trac, オープンソース 1 Comments
add Hatena Bookmark Tags:

今日部下から、毎月やらなきゃいけないタスクがあって、真面目にチケット管理したいのだけど、毎回入れるのが負担だぁ、と言われたので、ちょっとやり方を考えてみた。

以下が考えられる案
案1)XMLRPCプラグインを突っ込んで、外部からチケット追加の操作を行う。
案2)Tracで利用しているデータベースに直接レコードを投入する。
案3)SeleniumとExcelを組み合わせて、自動登録ケースを作り、TestSuiteとして実行する。

メリットとデメリットを考えてみる。
案1は、カスタムフィールドを追加していたりするとどうなのかな?XMLRPCのインターフェイスは

int ticket.create(string summary, string description, struct attributes={}, boolean notify=False)

なので、第三引数あたりでごにょごにょ出来るのかもしれないけど。試してみる必要がある。
あと、そもそもXMLRPCの呼び出し部分は、プログラム書かないといけないのと、そもそもデータの設定方法を考えないといけない。全体的に面倒な感じ。

案2は、これは比較的楽なんだけど、カスタムフィールド使っている場合は、複数テーブルにinsertしなきゃいけないのが若干面倒なのと、やっぱりデータの設定方法が面倒。案1よりはマシといった程度。

案3が推奨だと思う。
ExcelVBAとSeleniumを知っていればかなり簡単。
手順は以下の通りかな。
・Excelの表に登録したいチケットの内容を列挙する。
・ExcelVBAで、それをSeleniumのテストの形で出力する。
・複数のテストを束ねるTestSuiteも出力する。
・SeleniumIDE(β1.0以上が必要)で、TestSuiteを呼び込み全部まとめて実行する。

ちょっとVBAを作りこんでみよう。

2008/05/17 05:37:36 オープンソース 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 オープンソース 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 オープンソース 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 オープンソース 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のプラグインしかない。自分で作ってみよう。

« 前の記事 


ads

Ryuzeeのお気に入り