Shibuya.trac新年会
Shibuya.trac2009新年会に参加しました。
自分の発表について
聞いてくださった方の寛大さとOかもとさんのつっこみに感謝です。まあ、TracのPlugin開発者自体まだまだ少数派なのに、今回のお題はニッチすぎるというのはうすうす気づいてました。
その他のメモ
思いつきで書いてます。詳しいところは他をあたったほうが吉です。
- Tracnavプラグイン。あとで試す。
- JAM Circle。「Tracの外側のツールもあっていい」という意見には激しく同意。スクリーンショットがLinuxだったので、Linux用かと思いきや、sourceforge.jpにはWindows版やMac版も置いてありますね。素晴らしいです。
- MailArchivePluginがTracLightningに入るの知らんかった。びびった。
- linuxでTracLightning使いたいという方にxdoc2txtはWindowsでしか動かないこというの忘れてた。
- Ticketの親子関係という話があった。チケットだけじゃなく他のコンテンツも含めた関連を表示したいなぁ。今は手をつけれんけど。
- SorceForgeの中の人の話おもしろかった。意外と少ない人数でやってるんですね。
- 飲み会でAIRいいよねで盛り上がれた。
- そば焼酎のそば湯割りは、濃さがわからんくて危険。でもうまい。
- プラグイン管理するプラグイン欲しいといったら作ることになった。
- OかもとさんがRealForce仲間だと知った。
- gihyo.jpの方と少しお話しできた。なんか書きたいっす。
- 同じ年代の人が結構いて安心した。若い人もいた。若い人がいるのはいいことだ。
- takayamaさんと会えた。Trac0.12の日本語化ピンチな話はやべぇ。大事なことなので2回言わねば。Trac0.12の日本語化が進んでなくて取り残されかねないとのこと。協力できる人は協力しましょう。詳しくはtakayamaさんのブログ
発表したスライドはこちら:
ワークフロー
かぬさんのブログからプログラマの思索-Tracのワークフローを読みました。
誰かプラグイン作らないかな♪と思ったので、メモ的にまとめてみました。
Tracのワークフローには、以下の機能が足りない。RedMineでは、1~3が可能(ロール別・チケットの種類別にワークフローを設定可能とすることでまとめて実現している)。
- チケットの種類毎に、異なるワークフローを使えるようにする機能
- RedMineのようなデシジョンマトリックスを用いたGUIでのワークフロー設定画面
- ステータス変更種別毎(または変更先のステータス毎)の変更権限設定
- ステータス変更時にownerを自動的に切り替える機能
なお、Tracでは、Trac.iniを使ってカスタマイズするのはBasicなやり方であり、Advancedな方法としてプラグインを作ってワークフロー遷移時の処理をカスタマイズするという方法と、自分でワークフローを実現するプラグインを作成して、それに入れ替えるという方法が可能です。Basicなやり方で満足できない人はチャレンジしてみるとイイかも。
上記の点で言えば、1については制御がややこしそう(Tracのチケットは後から種別を変更できちゃうので)ですが、2~4については、実現は難しくない気がします。とはいっても、完全に固定のワークフローならまだしも、ある程度カスタマイズできるような柔軟性をもったプラグインを作るのはそれなりに大変だと思いますが。
ちなみに、TracのAdvancedTicketWorkflowPluginを使うと4が可能になる(1~3は可能にはならない)他、外部のスクリプトが実行可能になるなどの機能があるようです。試してません。
ここまで書いておいてなんですが、私的にはステータスはnewとcloseだけにして、後はカスタムフィールドに「××した日」という項目を追加する+運用ルールでがんばる、無限権限方式がExcel的でいいんじゃね?とか思ったりしました。ごめんなさい。
それにしてもトラックバック機能が欲しいな、このblogプラグイン。
WLWriterPluginを再度AtomPub化
Windows Live Writerプラグインはxmlrpcを用いていたのですが、どうしてもブログ向けのxmlrpcの認証が気に入らず、再びAtomPub化しました。今後はXmlRpcPluginが無くても動きます。
これにより、AccountMgrPluginが不要になりました。Trac本来の認証方式に従って認証を行います。これでLDAPもたぶんいけるはず(試してないけど)
あと、HTMLをWiki化するロジックもだいぶ見直しました。 より妥当っぽいwikiを出力します。
これまでxmlrpc版を使用していた方は、プラグインのモジュールや必要なパーミッション、Windows Live Writerのアカウント設定のためのURLが変更になっているので注意してください。
いまはWikiの編集のみ可能で、TicketやBlogの編集機能は無くなっている形です。こちらはそのうち気が向いたら作ります。
ドキュメントも更新しました。
さくらインターネットへのインストール方法を更新
「さくらインターネットにTracを構築する(Trac0.11b1, Trac0.11rc1)」を更新しました。 subversionのインストールでneonを入れるとエラーになっていたのですが、 ネットで解決方法を公開されている方がいたのでそのとおりやったら 解決しました。
いままででもTrac使うだけには問題なかったんですが、ただ、さくらにtelnetしてsvn coができない状態でした。いやーよかったよかった。
参考:やっとむでぽん
カスタムクエリの記述とTicketQueryマクロの記述の違いについて
カスタムクエリで条件を指定すると、URLがTicketQueryのクエリ言語のような記述のようになるのですが、これは実は全く別のものだということに気づきました。
んん、そして私の作っているQueryChartマクロでは、これがごっちゃになっています。orz
違いを簡単にまとめました。
P.S. 最初にポストした記事でTicketQueryの方は異なるフィールドの場合OR条件となると書いてましたが、嘘でした。orz
カスタムクエリのURL
例:
/query?status=new&status=assigned&version=^1.0
- 頭に?がつきます。
- 部分一致、前方一致の指定は=^のようにイコールを前に書きます。
- 値1つ毎に"フィールド名=値"を&で区切ります。
- 同じフィールドはOR条件となり、異なるフィールドはAND条件となります。つまり、このURLは、以下のような検索条件となります。
((status='new' or status='assigned') and (version like '1.0%'))
TicketQueryのクエリ言語
例:
[query:status=new|assigned&version^=1.0]
- 頭に?がつきません。
- 部分一致、前方一致の指定は^=のようにイコールを後ろに書きます。
- フィールド名毎に"フィールド名=値"を&で区切ります。1フィールドに複数値を指定する場合は、|を使って値をつなげて書きます。
- 同じフィールドはOR条件となり、異なるフィールドはAND条件となります。つまり、この場合は、以下のような検索条件となります。
((status='new' or status='assigned') and (version like '1.0%'))
MailArchiveプラグインのアップデート
要望をいただいたこともあり、久しぶりにMailArchiveプラグインをアップデートしました。主に見た目の部分です。DBの変更はありません。
- リスト表示画面にページング機能を追加
名称・月毎にカテゴリ分けしていましたが、一ヶ月に大量のメールが発生する環境でリスト表示が長くなってしまっていました。検索機能と同じようにページ分けする処理を追加しました。 - 詳細表示画面のレイアウトをもう少しきれいに変更
- メニューバーが反転しない件を修正
- オプションの"title"を廃止([trac]mainnavで代替可能な為)
- タイムラインにメールアイコンを表示
- 等々(詳細はShibuya.TracのSVN参照)
あと、xdocviewもTrac0.11対応しました。かぬさんがxdocview Trac 0.11版登場! - almost nearly deadで紹介してくれました。
WLWriterプラグインのアップデート
WLWriterプラグインのアップデートを行いました。
- Trac0.11.ja1で既存のページが開けない障害を修正
- FullBlogPluginが入ってない環境で動かない障害を修正
- エントリポイントのURLをblogrsdからwlwriterに変更
つかいかたは、こちらを参照してください。
あと、Shibuya.Tracで発表したスライドをSlideShareに載せました。 Shiubya.trac勉強会0.11から見えます。
Shibuya.Tracおつかれさまです。
Shiubya.trac勉強会0.11が本日開催されました。参加された皆さん、おつかれさまです。
いろいろありますが、とりあえず言っておかないといけないのは、 今日紹介したWlwriterプラグイン、バグがあり動きません。(><)
行きの新幹線の中で修正してたものをまだCodeReposにあげてません。 あげたらこのブログで告知します。月曜になる前にはあげたい。
Trac0.11のCSV出力をExcelで文字化けせず表示するHack
ごぶさたです。
クライアントにExcelが入っている環境で、 Trac0.11のレポートのカンマ区切りテキストをダウンロードすると デフォルトでExcelが開きますよね。
なんだ、これでExcelReportPlugin要らないじゃんと思っていると、 日本語が化けて読めなかったりします。 (原因はTracがUTF-8で出力してて、ExcelがShiftJISしか読めないせい。どちらが悪いとかはあえて言わない)
この文字化けを直すHackを紹介。
Tracのreport.pyにある_send_csv(...)というメソッドの中にあるutf-8という記述(3箇所)をcp932に変更しましょう。
カスタムクエリのほうは、query.pyのexport_csv(...)というメソッド。こちらも3箇所。
ちなみにTracLightningを使っている場合は、複数のフォルダにreport.pyやquery.pyがあるので検索かけて全て直してから、Tracを再起動すると吉かと。
FullBlogPluginに移行
ブログをFullBlogPluginに移行してみました。
ちなみにTickTackBlogプラグインから移行するためのSQLは以下のようになります。この後、添付ファイルは手でコピーします。まあ、使っている人がいないと思うけど。
insert into fullblog_posts select 'blog'||substr('0000'||id,length(''||id),10) as name, 1 as version, summary as title, description as body, time as publish_time, changetime as version_time, '' as version_comment, reporter as version_author, reporter as author, component as categories from ticket where type='ブログ'; insert into fullblog_comments select 'blog'||substr('0000'||c.ticket,length(''||c.ticket),10) as name, c.time as number, c.newvalue as comment, c.author as author, c.time as time from ticket_change c where c.ticket in (select id from ticket where type='ブログ') and field = 'comment' and newvalue <> '' order by c.ticket,c.time; update fullblog_comments set number = (select count(*) from fullblog_comments c2 where c2.name=fullblog_comments.name and c2.time <= fullblog_comments.time); insert into attachment select 'blog' as type, 'blog'||substr('0000'||id,length(''||id),10) as id, filename, size, time, description, author, ipnr from attachment where type='ticket' and id in (select id from ticket where type='ブログ')
Trac-devのMLのアーカイブ7、8月分を読んで
Tracの勉強をしようとTrac-devのMLのアーカイブを眺めていました。7月1日までさかのぼったあたりでおなかいっぱいになったので、いったんメモ。
メモ
- 「Tracに貢献したくても、Ticketが大量にあるので、どのチケットを注目すべきかわかりにくい」といういうこで、協力を求めているチケットには、helpwantedというキーワードをつける運用をするようになったそうな。貢献したい人はこのキーワードで検索すべしと。オープンソースならではの問題と解決策ですな。今見たら12件あるようだ。元ねた(こことここ)
- trac.iniの[trac]にauto-reload=trueを記載すると、Genshiのテンプレートファイル変更時に自動的に読み込まれる。元ねたではeclips+pydevをつかってるとだめと書いてあったが、試したら機能した。--develop中のプラグインにも有効。
- setup.pyのなかでzip_safe=Falseを指定して、eggをzip化しないようにしている。これは、静的なファイルへのアクセス速度向上のためと、PYTHON_EGG_CACHEでおきるエラーを回避するため。元ねた
あとで読む
- Tracのプラグインについての議論。プラグインはどうあるべきかみたいな話?熱い議論が行われているようなのだが、長文なのであとで読みたい。
- eclipse+pydevでの開発環境の作り方のWikiがある
- RedMineとの比較。コメント多すぎてよみきらん。
ときどきt.e.oとかいう言葉が出てくるのだけど、これって何の略?
バグ収束曲線やバーンダウンチャートを描画するQuery Chart マクロ
バグ収束曲線やバーンダウンチャートを描画するQuery Chart マクロをCodeReposにアップしました。
インストール方法は、ここを参照。
現在、このプラグインに関する改善要望を絶賛募集中です!
改善要望があれば、このブログにコメントしてください。
現在、以下の制限があります。
- グラフの線をクリックしても何も起きない。これはFlotにそういう機能がないため。
- グラフの線上に件数を表示できない。これもFlotの機能から来る制約。
- 円グラフはかけない。これもFlotの機能制約。
- 1つのグラフに複数本の線を引く場合も、指定できる条件クエリは1種類のみ。たとえば、マイルストーンAのチケットについて、発生日と終了予定日の2本の線を1つのグラフに表示することはできるが、ひとつのグラフにマイルストーンAのチケットで1本、マイルストーンBのチケットで1本みたいな表示はできない。引数が複雑になるのであえてやっていない。
ブログパーツを表示するための Blog Parts プラグイン
Tracでブログパーツを表示するための Blog Parts プラグインを
Trac-Hacksにコミットしました。
(さいしょCodeReposにあげたのですが、Trac-Hacksのほうが適切かなとおもい移動しました。m(_ _)m)
http://trac-hacks.org/wiki/BlogPartsMacro
日本語の説明はこちらを参照
Trac0.11用(rc2で確認)です。 twitterなり、iKnow!なりをTracに貼り付けるのに使ってください。 といっても、私以外にそんな人がいればですが。 構想2ヶ月。製作1日。
WlWiterプラグインのAtomPub化がうまくいかない。
CodeReposに載せているWlWriterプラグインですが、 AtomPub対応がうまくいかない。 具体的には、WindowsLiveWriterをつかった画像ファイルのアップロードがうまくいかない。
- アカウント設定の更新直後に、新規に投稿する際には画像ファイルつきで投稿できる。
- 投稿済みのものを開いて、画像を追加して再投稿すると「このブログでは画像のアップロードがサポートされていません」とWlWriterに言われる。
なんでじゃー?? サービス文書には<accept>image/*</accept>てちゃんと書いてあるのに。 開く行為(フィードの取得)時に、画像アップロード可能かどうかが書き換わってしまうのか??WlWriterのログを見ると、
WindowsLiveWriter,3292,Fail,00078,01-Jul-2008 23:08:41.749,"Informational: UploadUri is null"," at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)
などと書いてある。UploadするURLはサービス文書に書いてあるよぉ。
HyperEstraierプラグインTrac0.11版
HyperEstraierプラグインTrac0.11版をCodeReposにUPしました。
ドキュメントはこちら。
ただ、1月ほど前に作ったやつなので、最近は動作確認してない。 うごかなかったらご連絡ください。
GoogleAppEngineでTracは動くのか!?(挫折編)
チャララッチャッチャ。3時間クッキングの時間です。材料は、旬のGoogleAppEngineSDK と Trac0.11rc1 ,Gneshi 0.4.4です。
GoogleAppEngineはアカウントを取得し、SDKでHellowWorldが表示できるところまで下ごしらえをしておいてください。
GoogleAppEngineの使いかたについては、 こちらのブログ をおススメします。すごいねぇ。
下調べ
さて、まず GoogleAppEngineの資料 を取り出しましょう。Python2.5.2が動くけど、いろいろ制限はあるようです。
- DBはGoogleが用意したDatastoreを使え(でも、Python2.5.2ならSQLiteが使えるのかな?)
- PurePythonなコードしか使えません。C拡張を使うのはダメってこと。これはPython Standard Libraryであっても同様。(たとえば、tempfileは不可)
- 基本的に、サーバ内のファイルに書き込みできません。データを蓄えたければ、AppEngineのデータストアを使用してください。
- socket通信は不可。HTTP,HTTPSのみURLFetchサービスを使えばOK
- サブプロセスやスレッドは不可
- リクエストに対する処理があまり長いと、切断されるよ
- signalsのようなシステムコールは使えません
制限を読むと、難しそうですねぇ。
材料を並べる
まず、作業フォルダをつくります。GoogleにUPするさいのアプリケーションIDを名前につけましょうか。
そこに、材料(Trac0.11rc1とGenshi 0.4.4)を並べます。材料は解凍して、作業フォルダからPythonがパスをうまくたどれるようにきれいに並べましょう。以下のようなフォルダ構成になればOKです。
さらに、repos_parentというフォルダを同じフォルダ下に作ります。これは、TracEnvを置く親フォルダです。その下に、TracEnvのフォルダを配置します。TracEnvは事前に作成しておいてください。TracEnvのフォルダをソースと同様に扱うということは、Tracから書き換えできなくなるということですが、その解決方法は後で考えます。
つづけて、app.yamlをおきます。中身はこんな感じ
application: [アプリケーションID] version: 1 runtime: python api_version: 1 handlers: - url: /.* script: trac_gae.py
trac_gae.pyを呼び出す形で書いていますね。trac_gae.pyを作ります。gaeはGoogleAppEngineの略です。ちなみにこのソースは、 ここ を参照しています。
import os os.environ['TRAC_ENV'] = 'repos_parent/[TracEnvのフォルダ名]' import trac.web.main application = trac.web.main.dispatch_request
こんな感じの構成になりましたか?(イメージ中devtracというフォルダがTracEnvのフォルダです)
余談:データアクセスについて
GoogleAppEngineは、ファイルの書き込みを許さず、DBとしてはDatastoreなるものしか使えない。これにより、既存のPythonのWebアプリはそのままではまず動作しない。
ただし、Tracでは0.10以降、さまざまな種類のDBサーバに対応するために、DBアクセス部分をプラグイン化しており、GoogleAppEngineのDatastore用のプラグインを作れば、動くかもしれないと期待できある。動くといいなぁ。
火を通す
では、動かしてみます。
エラーになった。
File "c:\python25\lib\site-packages\Trac-0.11b2-py2.5.egg\trac\__init__.py", l ine 14, in
どうやら、先ほど配置したのと別のTrac(このPCにはもうひとつTracがインストールしてある)を見に行っているようだ。そっちじゃないよ!
うまくわける方法が分からんので、とりあえずPythonインストールフォルダのsite-packagesフォルダを変名する。.bakをつけとこう
さあ、どんどんエラーが出てきた。めげずにがんばろう
ImportError: No module named pkg_resources
この辺は、どんどんモジュールを加えていこう。ちなみに、pkg_resourcesはsetuptoolsに入っている。 ここから ソースをダウンロードしてsetuptoolsフォルダとpkg_resourcesフォルダを作業フォルダにいれる。
File "C:\doc\GoogleAppEngine\irove\pkg_resources.py", line 23, in ImportError: cannot import name utime
さっきも見たな。このエラー。
なぜかsite-packageの方のTracを参照してしまう。site-package内のTracを変名して回避成功。
File "C:\doc\GoogleAppEngine\irove\pkg_resources.py", line 1247, in _get stream = open(path, 'rb') File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_apps erver.py", line 739, in __init__ raise IOError(errno.EACCES, 'file not accessible') IOError: [Errno 13] file not accessible
open(path, 'rb')が使えなさそうだということころで、挫折orz。
まとめ
そんなわけで、今回は大失敗に終わったのだが、まだ希望がないわけではない。
ここ で、setuptoolsをつかう方法が紹介されているのだっ!!Pylonsって何か知らんけど。
もうちょっと勉強して、再チャレンジしよう。
Trac0.12の日本語化作業
Tracの本を書いたtakayamaさんが、CodeReposでTrac0.12での国際化対応(日本語化)をやっていると伺ったので、いっちょかみさせていただくことに。
詳しくはここを参照。
ぱっと見ほとんどが日本語に翻訳されているので、こんなんすぐ終わるんじゃねぇの?と甘く見ていたんですが、そうでもなかったです。ごめんなさい。
Trac側のテンプレートがまだ十分に対応できてないので、翻訳しても反映されないのがあるなど、なかなかに時間がかかりそう。
まあ、そもそもTrac0.12の話なので、のんびりやればいいのかな。 興味のあるかた、いっしょにどうですか?
Trac本
twitterで、Tracの入門本ができたと聞きましたので、びっくりしてご紹介リンク張らせていただきます。
とうとうというか、ついにTrac本がでますね。
本屋の専門書コーナーを眺めて「Tracの本は何故ないんだろう」という日々ともおさらばです。しみじみ。
Windows Live WriterにAtompubのサービス文書を自動取得させる。
Windows Live WriterにAtompubのサービス文書を自動取得させる方法が わからなくて1月以上苦しんでいたんだけど、 やっと自動取得できるようになった。
具体的には、以下のリンクタグをHTMLのHEADタグ配下に埋め込めばよい。1つめのリンクがそれ。
なお、あくまでこれはWindows Live Writerで私が試してうまくいっただけの方法。AtomPubの正式な仕様ではないようだ。
ちなみに2つめのリンクはwlwmanifest.xmlのありかを示すリンク。
<link rel="service" href="[サービス文書のURL]" type="application/atomsvc+xml" /> <link rel="wlwmanifest" href="[wlwmanifest.xmlのURL]" type="application/wlwmanifest+xml" />
ネタ元はこちら
RSDとか調べてえらく遠回りした気がする。AtomPub関連はまだ十分な資料がWebにないなぁ。
あ、そんな中で、たけまるさんのブログは大変参考になりました。もっと早く見つけていればぁ。
あと、AtomPubについて参考になるのは、 こちらのブログで取り上げられている、RFCの日本語訳と、WEB+DB PRESS Vol.41かと。 WEB+DB PRESSはたまたま買っていた。かなり助かった。
PyDevでTracのpluginをつくる。
以前、テスト用ブログに書いていた、PyDevでTracのpluginを開発するをwikiに移動しました。
記事は上記のリンクを参照。
Google App Engineのおかげで、Pythonに追い風が吹いていますねぇ。
もっと 伸びろ♪
このサイトのTracを0.11rc1に
Trac0.11rc1がリリースされたので、 さっそくこのサイトをrc1にしてみた。
さくらインターネットにTracを構築する(Trac0.11b1) にそってTrac0.11b1がインストール済みの状態で、
easy_install Trac==0.11rc1
だけでOK。らくちん。
(もちろん、プラグインが動かなくなっている可能性はあり。ちょっと
ドキドキだったけど、ひととおり動いているみたい)
py-libフォルダにTrac-0.11b1-py2.4.eggが残るので、 それは手で削除(または移動)すること。
GoogleAppEngine
以前Google App Engineに申し込んでいたら、 使っていいよメールが届いていた。
とりあえずログインして、Application Identifier(URLの元になる重要な値)に私の名前であるhirobeをつけようとしたら、すでに取られていた。 すごくショック。
あいているのは何かなぁと適当に名前を変えてチェックしていたら、 間違えて"irove"で登録してしまった。しかも一度登録したら変更不可らしい。Orz...
hatana_bookmark_anywhere.jsを使ってTracにはてブのコメントを表示する。
このサイトの下部にはてブのコメントが表示されていますかね。 ブログにはてブのコメントを表示するhatana_bookmark_anywhere.jsが素晴らしかったので、 Tracでもやってみました。
なんと、あらゆるページではてブのコメントを表示できます。
以下はTrac0.11でのやり方。Trac0.10ではやり方が異なりますが、そもそもの設置方法が簡単なので、たぶん簡単に動くでしょう。
- hatana_bookmark_anywhere.jsを上記のサイトからダウンロードして、[TracEnv]/htdocsに置く。ファイル名はhatana_bookmark_anywhere.jsにすること。
- [TracEnv]/htdocs/site.htmlに以下のように記載する。注意点は、日本語が含まれるのでUTF-8Nで保存すること。なお、Trac0.11ではbody内にscriptタグがあると怒られるので、headタグに移動しています。
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://genshi.edgewall.org/" py:strip=""> <!-- Custom match templates go here --> <!--! Add site-specific style sheet --> <head py:match="head" py:attrs="select('@*')"> ${select('*')} <script type= "text/javascript">/*<![CDATA[*/ // var hatena_bookmark_anywhere_limit = 10; // 表示する件数 // var hatena_bookmark_anywhere_style = true; // trueでデフォルトスタイル falseを設定するとCSSでスタイルの指定が可能 // var hatena_bookmark_anywhere_collapse; // trueにすると、コメントの書いてないブクマを表示しない。指定しない場合は、表示件数を超えた場合のみコメントを表示しない // var hatena_bookmark_anywhere_url; // 表示するURL 未指定の場合、現在のページ /*]]>*/</script> <script src="${href.chrome('site/hatena-bookmark-anywhere.js')}" type="text/javascript" charset="utf-8"></script> </head> <body py:match="body" py:attrs="select('@*')"> ${select('*|text()')} <!--! Add site-specific footer --> <div id="sitefooter"> <div id="hatena_bookmark_anywhere"></div> <!--! Place your footer content here... --> </div> </body> </html>
あとは、コメントが付けば。orz
このサイトのTracを0.11b1に
このサイトのTracバージョンを0.11b1に入れ替えました。
というわけで、さくらインターネットにTracを構築する(Trac0.11b1)を書いてみました。
このブログのURLも変更されています。
過去のURLは書き換えていますが、RSSは読み込み直しになっているかもしれません。m(_ _)m
ちょこちょこおかしいところあるかもしれません。いくつか気がついたことを記載します。
wikiについて
FootNoteマクロが使えなくなっている。Trac0.11用のものはできていないみたい。とりあえず、ダミーのマクロを作って使ってます。
Trac0.10からupgradeしても、TitleIndexページは書き変わらないので、Trac0.11のデフォルトで表示されるようなTitleIndexにするためには、手で書き換える必要があります。
いくつかのページはTinyMCEWikiPluginを使って書いていたのを、wikiになおしています。内容は変わっていません。更新しなきゃ。
ブログについて
TickTackBlogプラグインではなく、今作成中のTBlogプラグインを使っています。 Vicuna CMS への対応は、まだ中途半端な状態ですorz。きちっと対応してからソースを公開します。
Trac0.11について
Trac.iniを書き換えると、メニューバーの文字列を変更できるようです。このサイトでもメニューバーが日本語になっていますよね。以下のように記載しています。
[mainnav] search.label = 検索 browser.label = リポジトリブラウザ tblog.label = ブログ tickets.label = チケットを見る newticket.label = チケット登録 timeline.label = タイムライン
テスト方法論
ひがやすお氏のテスト方法論が気に入ったので、ご紹介リンクです。
ITProの記事の最後でTracを薦めているところもイイですねぇ。
twitterとか大学とか
実はこの間会社を辞めて、大学の研究室にはいりました。
といっても、学生としてですが。そんなわけで、いま名古屋に住んでいます。
学生になったらもっと時間が取れるかと思ったら、それなりに忙しいです。
あと、twitterはじめました。idはhirobeです。よくこんなidがとれたなぁと思います。
今お友達がいないので、気軽にAddしていただけたら嬉しいです。
Wlwriterプラグインでの認証
Wlwriterプラグインをこのサイトで使おうとしても、 認証が通らない。おかしいなあと思っていたら、 Windows Live WriterでAuthorizationヘッダを送ってくれていないようだ。
XML-RPCのクライアントは普通にAuthorizationヘッダをつけるものなのかしら? XML-RPCでググっても、あまりそれらしい記載がない。 というか、ブログ用のAPIではIDもパスワードもXMLに含まれているんだけど、 これ以外にもAuthorizationヘッダをつけるものなのか? よくわからないからAtomにしようかしら。
TracのZipArchiveで全角ファイル名文字化けを直す
久しぶりにTrac本体のHack
Trac0.10以降?から、リポジトリブラウザでリポジトリ内容をzipにして ダウンロードする機能があります。 が、リポジトリのフォルダ名やファイル名が全角だと、解凍したときに文字化けします。
これを直すには、 trac/versioncontrol/web_ui/changeset.pyの、def _render_zipの以下の行を書き換えます。
zipinfo.filename = new_node.path.strip('/').encode('utf-8')
↓
zipinfo.filename = new_node.path.strip('/').encode('shift_jis')
Trac0.11b1で動作確認しましたが、Trac0.10でも大丈夫なはず。
Trac0.11b1でapache.exeがアプリケーションエラーと解決
作業メモ
会社でTracをセットアップしたところ、使っていると apache.exeがアプリケーションエラーになる。
エラーが出る:
OS Windows2000svr Apache 2.0.55 Trac 0.11b1 Python 2.5(r25:51908)
リポジトリブラウザで、深い階層や大量にフォルダがあるフォルダを参照しようとすると 高い頻度で発生する。 mod_pythonとmod_wsgiの両方で同じエラーがでる。
apacheを2.0.55→2.0.62に入れ替え。⇒発生する。
apacheのエラーをみるとpythonが落ちている?みたい。
Exception exceptions.SystemError: '\\loewis\\25\\python\\Python\\traceback.c:96: bad argument to internal function' in <generator object at 0x050A13F0> ignored
pythonを2.5→2.5.2に入れ替え。⇒起きなくなった!
なおった:
OS Windows2000svr Apache 2.0.63 Trac 0.11b1 Python 2.5.2(r252:60911)
ちなみにmod_pythonとmod_wsgi、Tracのサイトではmod_wsgiの方が速いあったけど、 両方とも十分早いので、 体感速度はそんなに変わらない気がする。
GanttCalendar PluginをTrac0.11b1で動かす。
会社にてGanttCalendar PluginをTrac0.11b1で動そうといじってみたら、 動きました。
Sf.jpのトラッキング に書いたけど、なんとなく気づかれなさそうと思い、 ここにも書くことに。
これ、私の方でコミットしちゃっていいんでしょうか>Oかもとさん
グラフ描画ライブラリ「Flot」
Tracでグラフ描くのにいいかもしれない。
jQueryベースの滑らかなグラフ描画ライブラリ「Flot」
jQueryベースの滑らかなグラフ描画ライブラリ「Flot」。 Flotを使えば次のようなグラフをJavaScriptで描画することが可能です。
XDocViewプラグインもCodeReposに
入れてみた。 こちらもtrunk空でbranchesのみ。
CodeReposにコミット
CodeReposにTracのプラグインをコミットしてみました。 栄えある第一弾は、SearchHyperEstraierプラグインです。 わりと需要があるようなので。
ただ、Trac0.9用しか存在しないので、braches作ってtrunkは空という無茶なフォルダ構成です。 だれかTrac0.10用とかTrac0.11用とかコミットしてくれないかな? (Trac0.10用の作り方は#181に書いていただいたのに、 私がうだうだやっている間に気がつけばTrac0.10用の開発環境をなくしてしまいました。 #203のエラーも気になるけど。)
とりあえずコミットしてみたということで。 trunkの中はだれも作らなければ、暇な時に作ります。
CodeReposに参加
アカウントが届いたのでCodeReposに参加してみた。 といってもとりあえず自分のWikiをちょっと書いただけ。 いろいろのぞいてみるのはこれからかな。
ところで、自分のアイコンってどうやってつけるんだろ。
Tracプラグイン案
Shibuya.tracの飲み会で話の出たプラグインの案。忘れないうちに書いておきます。
- 要件:チケットの分類によって、入力項目(カスタム項目含む)を切り替えたい。
- 実現案:分類を切り替えたときにJavaScriptで関係ない項目を隠す。
Adminでカスタム項目を定義したりできるとなおよいですね。
私はちょっと手があかないのでアレなんですが、 誰かチャレンジしてみませんか?
Shibuya.Tracのミーティング
Shibuya.Tracのミーティングに行ってきました。 ネット上でお世話になっている方々の顔が見れて 大変楽しかった。です。
わたしのプレゼンもとりあえずUPしました。ObjectタグがTracに削除されてしまうので、 FlashViewプラグインをつかってみたんだけど、 私の環境だと画質が「低」で表示されちゃうみたい。 見ずらい方は右クリックして画質を「高」にしてください。
例のものはもうちょっと整理してからUPする予定。
PostgreSQL対応するには
忘れないようにメモ:
PostgreSQLに対応するには、
- Order byで指定した項目は、値を取得する必要がなくてもselectの中にも含めること。
- 最大取得件数を指定するには、Limitを使うこと。
「SQLite,PostgreSQL,MySQLで共通して使えるSQLの文法」みたいな 資料ってないものかしら。 あんまり難しいことやりたいわけじゃないんだけど、いちいち環境を用意するのが大変なので。
さくらインターネットでsvnがエラー
このサイト、リポジトリブラウザを開いたら、エラーになってた。 シェルでログインしてみると
%svn /usr/libexec/ld-elf.so.1: Shared object "libexpat.so.5" not found, required by "svn"
モジュールの入れ替えでもあったのかな?さくら
WLWriterPluginをShibuya.tracに登録
Windows Live WriterでTracのwikiを編集するためのプラグイン「WLWriterPlugin」を Shibuya.tracに登録しました。
とりあえず、ひととおり動くようになったので。 おおむねのWiki文法は再保存しても壊れないようになっているつもり。 ああ、でも対応しているHTMLのタグと対応していないタグはあります。 使う人はまず新規ページでいろいろ試してみてください。
注意書きを書かなきゃ。。
trac0.11 beta1がリリースされたようだ。
trac0.11 beta1がリリースされたようだ。 リポジトリはこれ
インストールページもbeta1用にこっそり変わってる。 http://trac.edgewall.org/wiki/0.11/TracInstall#InstallingTrac
0.11用のプラグインはこれをベースに開発するべし。ってことか。
Trac0.11のAPIが変わってる
やられた。Trac0.11のAPIが結構変わってる。
Trac0.11devをインスコしガントチャートプラグインを導入してみんとす みて気づきました。
Edgewallのサイト調べると、「 r6139 でAPI変更になったよ。0.11dev用のプラグインは対応してね。詳しくは TracDev/ApiChanges/0.11 見れ。」との記載が。。。
気を取り直して、 TracDev/ApiChanges/0.11 をちょっと読んでみたんですが、
んーでもこれって、0.10から0.11最新版への変更点ですね。0.11の途中版からここへ持っていくのは、結局試行錯誤か。
Mail Archiveプラグインを対応させました。(Trac revision6333で動作確認)
えーと、contextはimportを変えただけでよかったけど、TimelineまわりとAttachement周りの変更が必要でした。
context
from trac.context import Context
↓
from trac.mimeview.api import Context
from trac.context import ResourceNotFound
↓
from trac.resource import *
ITimelineEventProvider
get_timeline_eventsの返却値が変わってる。HTMLを返さなくなった。HTMLはrender_timeline_eventで実装することになった。
#まあ、この変更は歓迎。Timelineを利用してなにかしようとしたときに、このほうが都合がいいし。
Attachmentについて
IPermissionPolicyのcheck_permissionの引数が変わってる。
また、AttachmentModule.attachment_listはなくなり、attachment_dataになった。これにはcontextを渡す必要がある。
#Permission周りはよく調べてないのでよくわからん。いまのところMailArchiveプラグインではパーミッション無視。
APIの変更は次のバージョンにしてくれー、とも思うが、変更しちゃいたい気持ちもよくわかる。
とりあえず、もう変更がないことを祈る。
Windows Live WriterでTracのwiki編集 - WlwWikiPlugin(仮称)
Windows Live WriterでTracのwikiを編集するプラグインを作ってみました。 とりあえず動くようになったので、暫定公開。ソースが汚いのでまだsvnにはupしてません。
Live Writerは非常に使い勝手の良いブログの投稿ツールです。クリップボードから直接画像を貼り付けできちゃうところとか。これでwikiを編集できたらなぁと思ったので。
使ってみたい方は、このページの添付ファイルsrc.zipをダウンロードしてください。
ここまで作って、会社で試してみようと思ったら、会社のPCではWindows Live Writerのインストールに失敗することが判明(T T)
Mail ArchiveプラグインをShibuya.tracに移動
Mail ArchiveプラグインをShibuya.tracに移動しました。 今後はShibuya.tracを更新します。
移動するときにミスして[112]をしてしまった。。 自分のサイトの方でよかったぁ。
Shibuya.tracに参加
Shibuya.tracに参加させていただきました。 これまで作ったプラグインも、こちらに移させていただこうかな、などと考えています。(いいのかな?)
このサイトだと私だけしかソースをいじれませんが、sourceforgeなら他の人もさわれるし。 TracHackとの関係はどうなんだろうかな。
Trac0.11DevにMailArchiveプラグインを対応
Trac0.11DevにMailArchiveプラグインを対応してみました。 [108][109][110]で。まだ、添付ファイルがある場合にクリップが表示できてません。
mailarchive-adminをtrac-adminと同じような作りにかえました。setup.pyで自動生成できるんですね~。
あと、添付ファイルの表示もTrac0.11の作法に則ってみました。 trac.iniに以下の記述が必要です。
[trac] permission_policies = DefaultPermissionPolicy, LegacyAttachmentPolicy,MailArchiveAttachmentPolicy
Trac0.11Devに対応させるのに1.5日くらいかかった。Genshiになったのを含め、内部的にはいろいろ変わってました。
変更方法はこのへんを参考にしました。
- http://trac.edgewall.org/wiki/TracDev/ApiChanges/0.11
- http://trac.edgewall.org/wiki/TracDev/PortingFromClearSilverToGenshi
- http://trac-hacks.org/wiki/EggCookingTutorialTrac0.11
ちなみに、Trac0.11はインストールするものが少なくなっていたり、なかなかいい感じです。 使い勝手としては、チケットで[[BR]]を書かなくても改行できるようになったことは、かなりの改善点かと。
サイト名変えました。
なんとなく、いや前から変えようと思っていたのですが、
サイト名変えました。
HirobeのHack倉庫
です。
地味に更新していきます。
改めてよろしくです。
m(_ _)m
FlashDevelopでApollo
Flash界隈で話題のApolloですが、FlashDevelopでApollo用のプロジェクトを作るテンプレートがあるようです。
http://www.boostworthy.com/blog/?p=140
私もまだ試してないですが。
気になるもの
ActionScript3,pythonあたりでWeb見ていて気になることをメモ。
- OZACC.blogさんの、Django AMF
ActionScript3でサーバと通信しようとしたらAMFが使いたい。そんなわけでDjangoも気になる。 - Pythonでバージョン管理
これもOZACC.blogさんから辿った。Pythonで書かれているというところもイイですが、Webでのリポジトリ公開がcgiでなされるところもイイですね。さくらインターネットでも簡単にリポジトリ公開できる? - haxe
以前ここで紹介したこともある、swfを生成できる言語。いつのまにか、FlashDevelopでコード補完ができるようになったっぽい。サーバサイドも同じ言語で書けるのがイイです。
Tracの静的リソースアクセスを軽くする(Trac本体編)
Tracは、cssファイルなどの静的リソースを持っていますが、 ブラウザがこれにアクセスする際もPythonが動きます。 静的リソースのうち、Trac本体の静的リソースについては、 Trac.iniの設定とApacheの設定を行うことで Pythonの起動を回避することができます。
なお、この記述はApacheからTracを起動する場合の話です。 mod_pythonを使っている場合は、あまり効果ないかも。 (逆にさくらインターネットのようなcgi起動しかできない環境では効果アリ)
(1)Trac本体の静的リソースのフォルダ(htdocs)を、Apacheで公開します。
そのフォルダが公開されてしまうので、セキュリティには注意。変なもの置かな
いように(^ ^;。
あと、公開するURLはTracのCGIのURLとかぶらないようにしてください。
TracのURLがhttp://サーバ名/trac/にしているなら、
http://サーバ名/trachtdocs/にするとか。
例:
TracLight(C:\TracLightにインストール)の場合:
httpd.confに以下を追加
Alias /trachtdocs/ "C:/TracLight/trac/htdocs/" <Directory "c:/TracLight/trac/htdocs/"> AllowOverride None Order allow,deny Allow from all </Directory>
さくらインターネットの場合:スタティックリンクを張って しまいましょう。シェルで以下のコマンドを実行。
ln -s ~/local/lib/share/trac/htdocs ~/www/trachtdocs
(2)Trac.iniの[trac]カテゴリのhtdocs_locationに、公開したURLを設定します。
例:
上記のtrachtdocsを設定。
[trac] htdocs_location = /trachtdocs/
以上。
実はこれは、Trac本体が用意している方法です。ですが、ドキュメント見ても 分かりずらいですよね。知らない人多いんじゃないかな。
TracのThemeEngineと自作のテーマ
ThemeEnginePluginを使うと、 Tracのテーマ(デザイン)を簡単に入れ替えることができます。
trac-hacksにもいくつかのテーマが投稿されていますが、
私も作ってみました。
ColorPaletteThemeプラグインです。
ご覧のとおり、今このサイトで適用してます(そのうち戻しますが)。
結構雰囲気が変わったでしょ?
Mail Archiveプラグインの取り込み機能強化
[100]でMain Archiveプラグインの取り込み機能を強化しました。 これで、エラーになるメールがかなり減ったと思いますが、どうでしょうか。
Paint.net 3.0のデフォルメ効果で遊ぶ
Paint.netの3.0に「デフォルメ」フィルタ機能があるのですが、 これが楽しい。
元画像がこれ。Adobe Fire Worksで描いてます。特殊なことは塗りをグラデーションにしたのとドロップシャドウをつけただけ。カタイですね。
元画像に、Paint.netの「膨らみ」効果を40程度つけたもの。主張が強い感じに
元画像に、Paint.netの「ねじれ」効果を-7程度つけたもの。軟らかい感じに
簡単に表情のある感じのアイコンができます。 コツは、キャンバスサイズをアイコンの倍くらいとって、キャンバス全体にデフォルメフィルタをちょっとだけかけること。特に「ねじれ」はデフォルト量だと渦巻きにしかならないので 注意。
ホントはFire Worksにこのフィルタが欲しい。 Fire Worksは後から文字を変更したり、サイズをちょっとだけ変更したりとかが簡単にできるので、ものすごくいいソフトだと思うんですよ。 ただ、Fire Works V8はAeroにも対応しない(起動中はAeroが解除されるだけでFireWorks自身はVistaで普通に動きます)。 Fire Worksの新バージョン早く出てくれ~。というかAdobeの生存競争で生き残れるのか?がんばれFire Works!
Trac0.11に向けて
リリースはまだまだ先そうなTrac0.11ですが、 HTMLのテンプレートエンジンがCliearSilverからGenshiになるのが(プラグイン開発者にとっては)大きな 変更点です。
で、テンプレートをCliearSilber用からGenshi用へ変換する手順をみつけました。
Porting Templates from ClearSilver to Genshi
これによると、若干書き方がシンプルになるみたいです。
Vistaのブルースクリーン復帰
VistaにcoLinux-0.6.4をインストールしようとしたらブルースクリーンになりました。 TAP-Win32かWinPcapがまずかったみたい。 coLinuxにはどこにも対応してあるとは書いてないので、まあ仕方がない。
で、Vistaが正常に起動しなくなってしまったんですが、 OSブート時に「前回正常起動時の構成」を選んだらアッサリ元に戻りました。 ちょっとすごいなVista(XPからそうだったっけ?)。
なにかあればOSの再インストール、なんてもう昔の話なんですかね。
Google AdSenseつけてみました
Google AdSenseつけてみました。せっかくなのでバーンと大きい画像で (^ ^)
ページレイアウトも横幅固定に変えてます。
<PRE>タグでの1行表示がおかしい
このサイトをIE7とVistaRC1でみると、<PRE>タグで1行のみ表示している箇所が つぶれて表示できなくなってしまってます。 なんか対応方法はあるのかな?
そーいえばVista発売日ですね。
予約してたのに忘れてた。。
プラグインのeggファイル名変更しています。
[88][89][90][91]の変更により、対象プラグインのeggファイルのファイル名が 変更されます。(大文字小文字まじり→小文字のみ)
対象プラグインは以下のものです。
- TickTackBlogプラグイン
- MailArchiveプラグイン
- GoogleSitemapプラグイン
- Counterプラグイン
Unix環境の人は気をつけてください。この変更により、生成されるeggファイル自体の ファイル名のが小文字に変更されます。 新しいリビジョンのプラグインに入れ替える際に、古いプラグインを手で削除してください。 しないと、大文字のeggファイルと、小文字のeggファイルの両方が存在してしまいます。
変更の理由は#121の障害です。 setup.pyのPACKAGEの指定と.egg-infoフォルダ名で大文字小文字が異なると、 Windows環境でeggファイルが誤った形で作成され、 プラグインを読み込んでも実行されないことがあるようです。 (しかもログにエラーが出ない)
IronPython
IronPythonってしってますか?
Pythonの.net版です。 イイと思うのは、.Netとして初のインタプリンタ型の言語だってこと(ほかにあったらごめんなさい)。コマンドラインから.Netのクラスを扱えるみたいです。
インストール方法は、Python & IronPython 入門を参考にするとよいかと。
SpamFilterプラグイン
最近またコメントSPAMが出てきたので、
re_guzyさんのtrac サイトにスパム対策
に倣ってTicketDeletePluginと
SpamFilterPluginを入れてみました。
どうかな?
TracでのRSSの活用
仕事で大人数で開発する場合に特にいえるのですが、 Tracのチケットの更新やWikiの更新通知をRSSで行いたいと考えると思います。 で、タイムラインや、クエリからRSSフィードを取得しようすると思います。 しかし、TracのRSSでは、自分が特に欲っしていない情報が多すぎて役に立たない(自分にとって重要な情報が埋もれてしまう)のです。
では、ホントに欲しいのがどんな情報かというと、
- 自分宛ての情報が一番欲しい。チケットの担当者が自分になったとか、自分の書いたチケットやwikiにコメントが付いたとか。
- 自分が登録した情報は全く欲しくない。そりゃすでに知っているので。
んで、こんな情報を取得できるようにRSSのフィードをカスタマイズできるといいのかなと。 具体的には、こんな機能があるといいかな。
自分宛ての情報をとるために、
(1) 特定キーワードを持つwiki/チケット/ログの登録・変更を取得したいので、キーワードの設定を行う画面(ユーザごとに)。
(2) 特定チケット番号でのチケットに関する変更。チケットについてピンを刺すような感じで、やはりユーザごとに設定を行う画面。
(3) 特定フォルダ、特定ファイルの登録・変更。これは(1)と似たようなもんか。
自分が登録した情報を除くために
(4) 上記(1)から(4)から特定ユーザが登録したものを取り除く機能
タイムライン(またはTickTackBlogプラグイン)の改造でできるかな。
ちなみに、皆さんはTracのRSSをうまく使えてますか?不満はありませんか?
さくらインターネットにtrac-0.10-ja-1をインストール
#102で触れたtrac-0.10-ja-1、早速このサイトに入れてみました。
FootNoteマクロがエラーになる。みたい。その他の変更点は私自身もこれから触ってみよーって感じです。
templateも0.10.0-jaにしてあります。日本語ドキュメントを見たい方はこちらからドーゾ。インタアクト株式会社に感謝しましょう。
以下は、trac0.9.5-jaからtrac-0.10.0-ja-1にアップグレードした手順のメモです。 trac0.9.5-jaはさくらインターネットにTracを構築するに沿ってインストールしたものを前提としています。
0.事前にチェック
trac0.10自体は、trac0.9.xが動いている環境であれば特に問題なく動きますが、 プラグインやマクロについてはそのままでは動かない可能性が高いです。 アップグレードする前に、使っているプラグインやマクロが0.10に対応しているかチェックしてください。
1.バックアップとクリーンアップ
環境のバックアップと、環境のクリーンアップを兼ねて、使っているTracのモジュールは フォルダごと別名に変更します。TracEnvについては別名でコピーした後、 pluginsフォルダの中身を全て削除します。
(1)モジュール
cd $HOME/local/lib/python2.4/site-packages mv trac trac.bak cd $HOME/local/share mv trac trac.bak cd $HOME/www mv trac_.cgi trac_.cgi.bak
(1)TracEnv
cd $HOME/var cp -r trac trac.bak cd $HOME/var/trac/repo/plugins rm *
2.tracのインストール
cd $HOME/local/src wget http://www.i-act.co.jp/project/products/downloads/trac-0.10-ja-1.zip unzip trac-0.10-ja-1.zip python ./setup.py install --prefix=$HOME/local cp $HOME/local/share/trac/cgi-bin/trac.cgi $HOME/www/trac_.cgi cd $HOME trac-admin var/trac/repo upgrade trac-admin var/trac/repo wiki upgrade
これで、Trac自体のインストールは完了。サイトが見えるかいったん確認します。 (私は間違えてtrac.cgiを上書きしてしまい、InternalServerErrorが表示されてしまいました。trac.cgiを直して、しばらく待ったら表示されました。)
3.プラグインのインストール
プラグインは1個ずつインストールしなおしましょう。
(1)WebAdmin
ここ参照。
Sakuraインターネットのサーバから直接svnでとることが出来なかったので、
一度PCにエクスポートしてからFTPでサーバに置いています。
http://svn.edgewall.com/repos/trac/sandbox/webadmin/ から取得。
python setup.py egg_info python setup.py bdist_egg cp dist/TracWebAdmin-0.1.2dev-py2.4.egg $HOME/var/trac/repo/plugins/
(2)AccountManagerPlugin
ここ参照。
WebAdminと同様に、いったんPCにエクスポートしてから、FTPでサーバに置く。
http://trac-hacks.org/svn/accountmanagerplugin/trunk から取得。easy_installの
使い方が分からなかったので、普通のプラグインと同じくbidst_eggを実行してます。
egg_infoは必要かどうか分からないけどWebAdminのまねしてやりました。
python setup.py egg_info python setup.py bdist_egg cp dist/TracAccountManager-0.1.2dev-py2.4.egg $HOME/var/trac/repo/plugins/
(3)FootNoteMacro
ここ からダウンロードして、FootNote.pyをTracEnvのwiki-macrosに置く。
注意:これはうまく行ってない。エラーになる。
あとは自作のプラグインをインストールしなおして完成。
TotoriseSVNとTracの連携
TortoiseSVN1.4.0からかな?
TortoiseSVNには「バグ追跡システム / 課題追跡システムとの統合」のための機能があり、
これを使うと
SVNのコミット時に、Trac等バグ追跡システムのissue番号を入力するフィールドを表示する
ことが出来ます。入力されたissue番号(チケットのID)はログメッセージの最後に追加されます。
その他、TortoiseSVNのログからTracのチケットを開くことも。
また、SVNのリポジトリ内のフォルダに対して設定するので、1回設定すれば そのリポジトリを使っている全員に適用することが出来ます。 (対応しているSVNクライアントを使う必要はあります)
ヘルプによると、2種類設定方法があるのですが、今回はその片方を紹介。 「TotoriseSVNとTracの連携」をご覧下さい。
trac-0.10-ja-1が公開されています
インタアクト株式会社からTrac 0.10の日本語版trac-0.10-ja-1が公開されていますね。 Trac日本語化作業グループ様、ごくろうさまです。
0.9から0.10へアップグレードしようとしている人は、使用しているプラグインが0.10に対応しているかチェックしたほうが良いでしょう。 メジャーバージョンアップのため、今使っているプラグインがそのまま使えるとは限りません。
うちのプラグインで、0.10に対応済みなのは今のところ MailArchiveプラグイン、TickTackBlogプラグインのみです。
Postgresqlで動くTrac
開発環境としてPostgresqlで動くTracを構築しました。
主にsaikyo.onlineさんのメモ/Mod_pythonでTracを参考にさせていただきました。 感謝です。 なお、環境変数LD_LIBRARY_PATHに/usr/local/pgsql/libを追加しないと、trac-adminのinitenvでエラーになるようです。
あと、メモですが、EdgeWallのサイトにもpostgresqlを使う方法のページがあります。
TickTackBlogブラグインをTrac0.10に対応
TickTackBlogブラグインをTrac0.10に対応させました。
こちらは、0.9用とソース共用です。
TortoiseSVN1.40
TortoiseSVNの1.4.0がでてますね。
1.4.0で一番ありがたく感じたのは、ヘルプも日本語化されたところでした。ヾ(-_-;)
ネットワークディスクもアイコンオーバーレイが使えるようになったところ もいいですね (^▽^)
MailArchiveプラグインをTrac0.10に対応
MailArchiveプラグインをTrac0.10に対応させました。
添付ファイルを扱うあたりが、結構変わってました。
ダウンロードするzipには、0.9と0.10の両方が含まれています。必要なほうをインストールしてください。
ただし、0.10のほうはあまりテストしていません。m(_ _)m
不具合があれば、チケットを発行して欲しいです。
チケットの属性のバージョンに「Trac0.9」「Trac0.10」の選択肢をつけたので、チケット発行の際には使っているほうを入力してください。
あと、他のプラグインで0.10に対応して欲しいものあれば教えてください。 優先的に対応しますよ。
tracの自作プラグインを0.9から0.10へ変更する
tracの自作プラグインを0.9から0.10へ変更するためのメモ。
元となるドキュメントはこれ。 ISearchSorceインタフェースを使ってなければ、ソースの変更は要らないのかも。
- unicodeを使うようになった。
→そもそも日本語を扱うためにunicodeは使っていたが。APIがよく分からん。これから勉強。
- self.env.hrefが非推奨になった。
→req.hrefを使えとのこと。ただし、self.env.hrefもまだ使えるので、今回はself.env.hrefを使うままにする。
- self.config.getのかわりにOption()が出来た。
→Optionをつかうと、ソースの中に説明を書くことができて、TracIni(doxygen)マクロで出力できるとのこと。
それにしても、ソースの中に説明を書く方式って 日本語デベロッパーとしてはどうなのか? やっぱり英語で書くべきなのか? そういう疑問もあって、これも今回はself.config.getを使うことにする。
- HTMLタグを扱うためのAPIが出来た。
→HTMLタグのマークアップはどのプラグイン作者も苦労しているようで、今回trac.util.htmlモジュールができた。
以下のように書ける。ソースの中にHTMLタグを書かなくて良いので、良いかも。一部使ってみる。
util.Markup('<a href="%s" accesskey="%s">%s</a>', self.env.href.mailarchive(), self.env.config.get('mailarchive', 'title','MailArchive'), self.env.config.get('mailarchive', 'accesskey',9))
↓
html.A(self.env.config.get('mailarchive', 'title','MailArchive'), href=self.env.href.mailarchive(), accesskey=self.env.config.get('mailarchive', 'accesskey',9))
- ISearchSorceインタフェースが変更された。
→検索のためのインタフェースが変更された。
私はこれを使ったプラグインをいっぱい作っているので、正直勘弁して欲しい。 対応しないと動かないので、対応するしかないにゃー。
- IHTMLPreviewRenderer
→メソッドがかわったらしい。これから勉強。しかし、この変更は0.11で既に非推奨となっているとのこと。なんじゃそりゃ。
さて、ぼちぼちプラグインを0.10に対応させなきゃ。
FedoraCoreで複数バージョンのTracを動かす
おひさしぶりです。m(_ _)m
まだ、仕事が落ち着いたわけではないですが、やっと2日間の休日をもらいました。
さて、tracのプラグイン開発環境としてFedoraCoreをインストールしてみました。 プラグインの動作確認のために、 複数バージョンのtracを動かしたかったのです。
で、バージョンごとにOSのユーザを作って、これと同じようにセットアップすれば動くかな~と考えていたのですが、apacheからの起動は失敗に終わりました。「trac.webがみつからない」と落ちてしまう。 SELinuxなどいじってみたのですが、結局断念。。。
tracdからは何の問題も無く動きました。 手順としては、
- Fedora Core 5をインストール
- rootで、 yum install trac
- rootで、 yum remove trac 。これはtracが依存するパッケージのみインストールしたいから。
- バージョンごとのユーザを作る
- 作ったユーザで入りなおして、これ(同上)の、2.(9)~3.(2)を実施。
- tracdで起動。
- 4~6を必要な分繰り返す。
とりあえず、trac-0.9.6-ja-1とtrac-0.10を動かすことに成功。
んで、trac-0.10でMailArchiveプラグインを動かそうとしたのですが、メニューにも出てこない。
なんで?(・_・?)
YahooのUIライブラリ
YahooがUIライブラリを公開しているようですね。 Tracと組み合わせてつかってみたいなあ。
SPAMまみれで思う
SPAM発生装置を作る人は楽しいのかね。いや、たしかにこれだけSPAM来ると、ちょっと笑っちゃうけど。
じゃあ、自分のやってるSEの仕事はどうか?って楽しくないなあ。ExcelとJavaの奴隷だもんなぁ。ひょっとしたらSPAM発生装置を作る人たちよりも楽しくない?
いや、少なくともパソコンは楽しいモノだ。今でも絶対。間違いなく。楽しい使い方をしなくちゃなぁ。
そんなわけでSPAMは明日掃除します。今日はおやすみなさい。
荒らされてます
SPAMによって荒らされてますね。
週末まで家に帰れないので、週末まで放置です。
ただ、時刻とか見ていると面白い。
ロボットが送信しているにしては、時刻が不定期なんですよね。
だれか一生懸命ボタン押しているのかなぁ。
もうしばらく放置して法則を見たい気もします。
TRICHORD
TRICHORDって知ってますか?
プロジェクトの見える化を助けるプロジェクト管理ツールだそうです。
http://trichord.change-vision.com/index_ja.html
ニコニコカレンダーが共感もてます。
「顔文字とかスマイルマークとかって仕事で使ってもいいんじゃないか」って思いますね。
ツールに入れることで有無を言わさず文化に出来そうでいいんじゃないかと。
ちなみに、私も同じような考えでTracのチケット属性に顔文字置いてます。(^^*)
興味を持ったのは、TRICHORDの開発管理にTracが使われていること。
Tracと併用できたりするのかしら。
http://trichord.change-vision.com/trac/
テンプレートで利用可能な変数を表示する
テンプレートを使ってプラグインを作る場合に、知ってると便利な機能を紹介。
プロジェクト名とかいろんな変数を使いたくなるのですが、Tracには使用可能な変数を全て表示する機能があります。
テンプレートで利用可能な変数を見たい場合、 Trac に接続している URL にクエリ文字列 ?hdfdump=1 を追加してください。 テンプレートデータを構造化表示できます。
AdvancedEggCookingの誤り
AdvancedEggCookingの訳では、ITemplateProviderのget_templates_dirsメソッドのみを実装していますが、これは正しくなさそうです。
ITemplateProviderを実装する場合、スタイルシートなどの静的なファイルを使う必要が無くても、get_htdocs_dirsメソッドも実装する必要があるみたいです。#80のようなエラーが発生して、他のプラグインのget_htdocs_dirsが動作しなくなりました。
[72]のように、空を返す実装をしておけばOKです。
AdvancedEggCookingの訳には、脚注をつけときました。ついでに英文を削除して見栄えを修正しときました。
スパムフィルタをつけてみた。
このサイトにも地味ながらスパム(スパムチケット?)が来ているので、スパムフィルタをつけてみました。
テキストフィールドを持っておいて、そこに初期値として表示したチェック文字がスパムロボットによって書き換えられた場合は、登録を拒否する方式です。
ソースの変更箇所は[69]を参照のこと。 チェック文字はtrac.iniのticketカテゴリのpassword項目を参照します。
[ticket] password = この項目は書き換えないでください。スパムチェックに使用します。
効果あるかな?
Trac0.9.4からTrac0.9.5にバージョンアップ
いまさらながら、このサイトのTracを0.9.5にバージョンアップしました。
元のバージョンやリポジトリを退避
mv $HOME/www/trac.cgi $HOME/www/trac.cgi.bak mv $HOME/www/trac_.cgi $HOME/www/trac_.cgi.094 cd $HOME/local/lib/python2.4/site-packages mv trac trac.094 cd $HOME/local/share mv trac trac.094 tar cvf var_bak.tar var
trac-0.9.5-ja-1をインストール
cd $HOME/local/src wget http://www.i-act.co.jp/project/products/downloads/trac-0.9.5-ja-1.zip unzip trac-0.9.5-ja-1 cd $HOME/local/src/trac-0.9.5-ja-1 python ./setup.py install --prefix=$HOME/local trac-admin $HOME/var/trac/repo upgrade trac-admin $HOME/var/trac/repo wiki upgrade cp $HOME/local/share/trac/cgi-bin/trac.cgi $HOME/www cd $HOME/www mv trac.cgi trac_.cgi mv trac.cgi.bak trac.cgi
参照
広告メールが。。
テスト用のMLに広告メールがきてますね。 明日も届くのかしら。 MLいったん止めたほうがいいかな。
言うまでもないですが、広告メールのリンク先は私は知りませんので、 クリックしないでくださいね。
グラタンが気になる
グラタンに、Tracを入れると、安価なプロジェクトサーバにできそう。
macminiや玄箱もいいんだけど、ディスクが吹っ飛ぶことが怖いので、RAID1がつかえるグラタンがいいかなー。
処理速度とかどうなんだろうか。試してみたい~( ̄p ̄)
それにしても今週は仕事が忙しすぎてHackできなさそう。あぁ。。
さくらインターネットの記事が人気
まちゅさんがブログに取り上げてくれたり、結城浩さんのwww.textfile.orgに投稿してくれたためか、「さくらインターネットにTracを構築する」記事のアクセス数がけっこうな量になりました。 アクセスしていただいた皆様、感謝感謝です。
GoogleSitemapsプラグイン
GoogleSitemapsプラグインを作って、GoogleSitemapsに登録してみました。 とりあえずエラーはないみたい。
スパムとかさんを参考にさせていただきました。
Tracサイトのデザインを変えてみる(その2)
Tracのデザインって標準でも綺麗なんだけど、 皆がTracそのままじゃ味気ないよね。 ブログサイトみたいに華やかなデザインにしてみたいよね。 ってことで、Tracのスタイルシートの変更方法です。
いろいろ試行錯誤しましたが、結論としては、 「Tracのtrac.cssファイルを直接変更するのが良い」 です。 TranEnvフォルダのsite_css.csに書くという方法(#29,TracGuide)もあるんだけど、以下の理由から。
- 大きくデザインを変えようとすると、trac.cssで定義してあるスタイルが邪魔になる。
- site_css.csは、linkタグではないので、HTMLにベタ書きされる。(これは@importすれば回避できる)
で、とりあえず、2つほど作ってみました。横幅固定にしたのと、ナビゲーションバーやbanner,footerの背景を変更。
使いたい人は、上記の「ダウンロード」からダウンロードして、tracのhtdocsに上書きしてください。(元のファイルのバックアップを忘れずに)
ホントはこのサイトにも適用したかったんだけど、バナーの画像が うまく白抜きできなくて断念。 まあ、Tracのデザインも大胆に変更できそうだということで、よしとしよう。
いろいろ修正しました。InputPadも置きました。
今週末は、いろいろ修正しました。
- anonymousさんから指摘いただいた #45,#46,#47 を修正(MailArchivePlugin)
- discypusさんから指摘いただいた #48 を修正(TickTackBlogPluginのドキュメント)
- InputPadのドキュメントを作成。Trac-0.9.5-ja-1をベースにソースも変更しています。shzmさんのブログで指摘いただいた問題は、残念なことに再現できませんでした。ただし#51が見つかりました。
あと、こっそりカウンターもつけました。
引っ越してきました。
FC2のブログから引っ越してきました。 今後は、こちらにメインに記事を書きます。
といっても、まだTrackBackの機能も無いし、TrackBackPingも送信できないのですが。く(*´ー`)
ブログの個々の記事へのリンクは、対応するチケットのURLに対して張っていただければ幸いです。
では、今後ともよろしくお願いいたします。\(^_^=^_^)/
ガントチャートとマイルストーン
Tracのマイルストーンは、「何かが完成するまでに必要な作業と、何が完了したか」を見ることが出来るできます。これは、ちょっとすごい機能ですね。 開発者が「進捗という資料」をつくらなくていい。 最初にマイルストーンを作成して、あとはチケットにやることを入力しておくだけで、 進捗表らしいものが出来るわけです。
ただ、仕事で使うにはちょっと物足りない。普通SEは、ガントチャートっていう もっと細かいスケジュールを使いますね。「何日~何日にこれをやって」「これが 終わらないとこれが開始できない」みたいな。クリティカルパスとか見たりするし。
そんなわけで、マイルストーンをガントチャートっぽく扱えるようにしたいなと。 次に作るものはそれにしようかな、と考えてます。
チケットに完了日項目を追加して、、ていう方法もあると思うんだけど、それはパスかな。 というか、実際にそういう方法でやってたんだけど、いまいち機能しなかったので。 開発者から見ると、1つ1つのチケットについて、これはxx日というのでは管理しづらいみたいですね。見落としやすいし、スケジュールの変更が発生したときに対応できないみたい。
post-commit
開発中のプラグインについて、最新版のソースを 取得できるようにpost-commitをいじってました。 かなり汚いやりかただけど、まあいいや。 trac 0.10ではまとめてzipダウンロードできる機能がつくみたいなので、それまでの命だし。
Tracサイトのデザインを変えてみる
このサイトのデザインをちょこっと変えてみました。で、そのときの覚え書き。
Tracではほとんど全てのページがスタイルシートによってデザインされている。
で、TracEnv配下のTemplate/site_css.csにCSSを書くと、サイトのデザインを変更できる。
↓こんな感じ。
<?cs ################################################################## # Site CSS - Place custom CSS, including overriding styles here. ?> .wikipage h2 { border-bottom: 1px solid #b00; border-left: 6px solid #b00; font-size: 120%; margin-top: .5em margin-bottom: .5em; padding-left: 5px; padding-top: 3px; padding-bottom: 0px; width:98%; } .wikipage h3 { border-bottom: 1px dashed #b00; width:98%; padding-left: 11px; }
cssファイルや、imageファイルを読み込ませたければ、
TracEnv配下のhtdocsフォルダ(いつから出来たのか不明。Trac-0.8には無かったような。)
にファイルを置いて、site_css.csに<?cs var:chrome.href ?>/site/(htdocs配下のパス)と書くと読み込ませることができる。
例:
.blogticket_icon { background-repeat: no-repeat; background-image: url(<?cs var:chrome.href ?>/site/hoge.png) !important }
なお、<?cs var:htdocs_locastion ?>xml.pngみたいに書くと、 Trac本体のiconとかを使える。 '/'がついたりつかなかったりとややこしいので注意。
(None)
資料整備
以下の資料をTracに移動しました。結構作ったもんだなあ('ー ' *)
SearchHyperEstraierプラグイン リポジトリを全文検索するためのプラグインです。
SearchNamazuプラグイン リポジトリを全文検索するためのプラグインです。
XDocViewプラグイン リポジトリブラウザでWord等のテキストを表示するプラグインです。