JeffHung.Blog

(My smile insists of having nose. :-)

能產生 trac wiki 語法的 WYSIWYG editor plugin

今天看到的,讚:TracWiki WYSIWYG Editor Plugin。

能夠真正產生 Trac 的 wiki 語法存在資料庫裡,故能完美地與 Trac 協同合作。不像 TinyMce Wiki Plugin 會存入 html,造成相容問題。
經測試,能夠直接從 word 把內容複製貼上,樣式會盡可能地保留[1]。

雖然不甚完美,但毋須苛求了。 ↩

練習寫 TracMacro - [[TicketStatus]]

因為我們常要寫 wiki page 以便追蹤專案的進度、列出待辦事項等等,由於在 Trac 裡寫 #1 只會顯示 ticket number,往往我們必須要手動把 ticket summary 加在後面,當 ticket 有所變動時,wiki 與 ticket 兩邊就會不同步,維護起來非常麻煩。所以剛剛練習寫了一個 WikiMacro,取名為 TicketStatus.py,列出 ticket number、summary、status 與 owner,開會時一打開,所有事情一目了然。
WikiMacro 不難寫,不過因為我不太熟 python,所以比較麻煩的地方在於怎樣抓取資料。可能是由於 dynamic language 的特性,很難直接從原始碼追蹤,了解手上可以用的參數,其型別與屬性分別可以輾轉得到哪些資料。不過這對熟悉 python programming 的人,應該不是問題。因為多半有現成的工具,如 ipython 等,幫助我們直接取得、分析、追蹤整個物件結構。
TicketStatus.py 的原始碼如下:

"""
Display status and summaries of specified ticket numbers. Useful for listing
TODOs.

Example:
{{{
[[TicketStatus(#1,#7,#31)]] [...]

回應 Edward: Trac Aggregator

我看了 XPlanner 的 screenshots,感覺這也是相當強大的軟體。我現在比較會碰到的困擾是,issue tracker 常會無法與 process 整合。要把 issue tracker 用的好,勢必要有一套 process 配合。但因為人工作時的活動,其實是非常 dynamic 的,若要遷就 issue tracker 所內含的 process 邏輯,人會感到非常痛苦。
我覺得應該是要讓 issue tracker 來配合 process 才對。雖說人的工作過程是 dynamic 的,但還是會自然而然地形成出一種流程,這樣子的流程,其實才是最符合開發的需要。
我在使用 Trac 時,也會感到這種與 process 的不協調感,所以才會想簡單弄個 Trac Aggregator,看看能不能解決一些已經意識到的問題。這還是只有我一個人在用,我不敢想像多人使用的情況下,事情會變得多糟糕。
不曉得 Edward 兄在工作上,使用 XPlanner 有沒有什麼心得呢?:-)

The design of trac aggregator

前陣子我在 blog 上簡單介紹了 Trac Aggregator,因為在工作上總是必須多個專案同時進行,相互依存,又因為當初規劃 repository 的決策,造成搭配 Trac 時,因為 Trac 沒有 multi-project support,而使用起來非常麻煩[1]。所以只好簡單地寫了這個 PHP script 當作個人工作用的 issue portal。
其實說穿了很簡單,Trac 的 report 是藉由讓使用者自行編輯 SQL 指令而產生的。而 Trac 的資料庫就放在 TRAC_ENV 下的 db/trac.db 這個 SQLite 資料檔裡。所以我們只要自己用 PHP 開 SQLite 資料檔,然後把 Trac 裡的 report 的 SQL 指令搬過來,排版 output 一下,簡易版 Trac Aggregator 就完成了。
比較麻煩的,反而是如何呈現跨專案的 ticket list。由於每個專案的 milestone 進度都不會相同,排序的問題就相對地複雜很多。目前我只是簡單地在 script 裡,用 compositional compare function [...]

Subversion 最佳實務

在愛德華日誌看到這篇《Subversion 最佳實務》,愛德華應該一樣是在台灣工作吧?看到有台灣的公司這麼先進,實在高興。我們部門現在用的是非常鳥的 Visual SourceSafe (VSS),根本一點都不 safe。我只好偷偷自己用 Subversion,有需要的時候,再來和 VSS 做 sychronization。苦啊!
Issue tracker 建議使用 Trac,這是我見過目前與 Subversion 整合的最好的 issue tracker。剛也寫了一篇關於 Subversion 與 Trac 的升級心得,歡迎指教。Trac 最可惜的就是直到 1.0 版大概都還不會有真的 multi-project support,我只好另外寫簡單的 Trac Aggregator 來湊合著用。很希望能多和大家交流版本管理系統的使用心得。:-)

Trac Aggregtor

Trac 是我目前正在用的 issue tracking system,由於整合了 wiki 與 subversion,故幾乎可以拿來當作 project management system 來用了。不過,目前的 Trac 即使是進展到了 1.0 版,也仍然將是 single project 的系統。然而,實際工作上,多個 project 一併進行,設置互有牽扯的情況非常普遍。因此,我寫了一個簡單的 PHP 網頁,剛好可以簡單地當作 multi-project trac portal 來用。
使用前,請先依照 TracMultiProjects 的說明,設定好 multi-project 的環境。然後,修改這個 PHP 網頁最前面的 define(),TRAC_DIR 是指你放那堆 trac environment 的目錄,而 TRAC_USR 則是你登入 trac 用的帳號。最後,把這個網頁放在你覺得最適合的地方即可。

<?php

define('TRAC_DIR', '/trac');
define('TRAC_USR', 'jeffhung');

$tracagg_errors = array();
function tracagg_raise_error($errmsg)
{
array_push($tracagg_errors, $errmsg);
}

function wrap_html_text($text)
{
[...]