2009年5月30日 星期六

Bash - Subversion Directory Switching Helper

基於現在很多都還是在用 subversion 作為版本控制,切換 branches/trunk 總是無法避免,如果非常常用的時候,cd 來 cd 去就會便得非常瑣碎並且浪費時間。

這隻 bash script 便是用來方便切換目錄用的。 svnb [branch name] 便可切換到 branch 上去,若是想看目前哪些 branch 則可 svnb 按下 Tab 鍵做 completion。svnt 則直接跳入 trunk 目錄。

可作用的路徑如下:

/project/trunk
/project/trunk/working/path
/project
/project/branches/
/project/branches/feature

將此 script 存起來,再將 .bashrc 裡面加入 source /path/to/file.sh 即可:

2009年5月29日 星期五

Devel::Cover

當你撰寫任何 Perl 應用程式或是模組,你可能會使用單元測試 (unit test) 來測試你的應用程式是否正確運作。但是測試總是會有遺漏的地方。

Devel::Cover 模組就是可以幫助你分析測試到的程式碼涵蓋哪些部份,哪些部份總共被執行了幾次,哪些地方沒有被測試到。

安裝 Devel::Cover 模組:
sudo cpanp i Devel::Cover

當你 test 都寫好於 t/ 目錄底下,Makefile.PL 也設定好哪些測試目錄底下的測試要被執行。便可先將 Makefile.PL 執行,產生 Makefile.
perl Makefile.PL && make

接著直接執行 Devel::Cover 所提供的 "cover" script.
cover -test

如此一來就會開始執行測試 (make test) 並且產生報表:



另外也會產生 HTML 報表:


更詳盡的測試分析:

2009年5月28日 星期四

Vim - Install CPAN Module via cWORD

I just wrote a script to install cpan modules inside vim. so that we can move cursor to the module name , and press C-x C-i to install module. :p

是一小段可以方便安裝 CPAN 模組的 vim script. 只要把 cursor 移動到 use YAML::Syck; 之類的 YAML 字樣上方,然後按下 C-x C-i 就會安裝 YAML::Syck 模組。

對於 python 或是 ruby 的朋友可以把對 CWORD 的 regular expression 和 command 換一下,應該就可以用了。

2009年5月26日 星期二

SVK FileType Plugin

在 vim.org 上找到這個 script (svk syntax plugin) ,不過功能只有 "新增" "移除" 所以做了一點 patch。已經 mail 給 Oleksandr Tymoshenko 了。

要用的朋友可以在設定後,直接把這隻 script replace 過去 ~/.vim/ftplugin/svk.vim 。



last-updated: 2009-05-26

2009年5月22日 星期五

Vim Color Test

要啟用 xterm 的 16 色模式,在 .vimrc 內加入

set t_Co=16

若有需要 xterm 更高階的色彩,請重新編譯 xfree-xterm ,可參閱 xfree-xterm 章節:
                                                        *xfree-xterm*
To get 16 colors or more, get the newest xterm version (which should be
included with XFree86 3.3 and later). You can also find the latest version
at: >
http://invisible-island.net/xterm/xterm.html
Here is a good way to configure it. This uses 88 colors and enables the
termcap-query feature, which allows Vim to ask the xterm how many colors it
supports. >
./configure --disable-bold-color --enable-88-color --enable-tcap-query
If you only get 8 colors, check the xterm compilation settings.
(Also see |UTF8-xterm| for using this xterm with UTF-8 character encoding).


至於一些支援 256 色的 colorscheme ,於此 page 有介紹:
http://www.frexx.de/xterm-256-notes/

另外 vim 提供了 color test 的 vim script ,可在 vim 內輸入:

:runtime syntax/colortest.vim

畫面大概會像這樣:

2009年5月21日 星期四

Jifty 0.90519 Released.

新的 Jifty Release 了,包含了我翻的中文教學,請各位多多指教。

於此:

不過卻發現了一兩個錯字呀,只好等下個版本更新了。

2009年5月17日 星期日



最近倒是對料理還蠻有興趣。在家有時隨便吃,有時弄點櫻花蝦炒飯、義大利麵之類的。
為了這些所以也買了真不少調味料。不過我的確很懶就是了,廚房都被弄的亂糟糟的。XD

所以我要逐漸步入 Hacker Kitchen 的行列了嗎?XD

不過目前都只是先做些簡單的東西,有空再來研究一下難一點的。

2009年5月12日 星期二

Vim Syntax Support for SD

由於 SD 的關係,所以前陣子就立即生了一個 vim syntax highlight for SD ticket。讓 ticket 可以彩色一下。 :p

vim script 的網址在這: http://www.vim.org/scripts/script.php?script_id=2614

如果各位有興趣也可以 patch 一下,以下是 gist。



最後在 .vimrc 加上:

" sd sticket filetype
au BufNewFile,BufRead *
\ if getline(1) =~ "required ticket metadata" |
\ setf sdticket |
\ endif


便可以使用了。

關於 Vim 於 Terminal 底下的 Comment Color

Vim 其實有內建不少 Colorscheme 是符合 Terminal Color 用的,但在 Terminal 下選來選去還是覺得 default colorscheme 最適合。唯一的缺點就是 comment 的 color 是藍色的,但 Terminal 背景又是黑色或又加一點透明,導致 comment 讀起來實在非常吃力,所以可以透過 has function 來判斷一下是不是在 Terminal 底下,若是,我們便將 Comment 這個 syntax highlight 改用我們所想要的。

我的作法是:



這樣會讓原本的 Comment 背景使用深藍色,前景使用灰色

2009年5月7日 星期四

Perldoc 翻譯

最近在 github 開了一個 perldoc translation 的 repository ,
打算有空就幫忙翻譯一點東西。
歡迎有意願幫忙的朋友和我索取 commitbit.

以下 repository 除了 perldoc 之外,也包含 moose 的文件。
我目前應該會先從 perlguts , perlxstut 著手。
希望有興趣的朋友也一起來幫忙。 :)

http://github.com/c9s/perldoc-zhtw-translation/tree/master

目前接受三種方式. :)

1. 先在 github 上頭申請帳號,然後我將commitbit 開給你
你就可以使用 git checkout , commit , pull , push 直接幫忙翻譯,
將翻譯好的部份直接 commit 進 repository. (適合長期)

2. 如果不想使用 git 也可直接將 patch 寄給我,我幫你 apply. 使用下列指令產生 patch:

diff -u 原檔名 翻譯後檔名 > tranlation.patch

(適合短期 , 一兩次的翻譯修正)

3. 又或者直接把片段寄 mail 給我,告訴我是在哪個檔案的第幾個部份。

我的 email: cornelius.howl _at_ gmail.com

關於 github 一些設定可參考:

github guides

另外關於 sshkey 設定的方式:

providing your ssh key

2009年5月3日 星期日

Perl on IRC

事實上 Perl Foundation 有自己的 IRC server,若有有興趣的朋友,可以連線至 irc.perl.org。

其中有幾個頻道要介紹的是:

#news

會有機器人將所有 Perl 相關大站的 Feed Aggregate 起來,並即時通知於頻道上,如 Perl Monkers , Perl Buzz , Iron Man 等類似站台。

另外也會有最近上傳至 CPAN 的模組的即時資訊。對於 CPAN 上頭的變動,看到奇妙的模組名稱,就好像看到奇妙的菜色想找出食譜一樣,想拿出來隨時玩玩。 :D


#perl

也就是 Perl 的頻道。不過上頭不是用來問問題的頻道。


#perl-help

幫助客官解決各種疑難雜症的頻道。


#yapc

Yet Another Perl Conference 頻道


另外有一些頻道是在 freenode 上頭才有的。如:

#jifty
#svk
#prophet

等等。

另外台灣的 Perl Channel 大部分是在 freenode 上

#chupei.pm

gugod 所開的頻道 (竹北 Perl 推廣組) 最近比較活躍。日前我將 jabbot 加上了 CPANAuthor 的 Plugin,所以會將 CPAN Upload 過濾,會在頻道上廣播最近台灣 CPAN Author 的模組動態。

此外,jabbot 也另外新增的 github 的 backend ,可在自己的 project repository 的 service hook 加上 jabbot service 的 URI ,則 jabbot 會即時廣播 commit log.


#perl.tw

Perl.TW Perl 台灣。不過比較沒這麼活躍。

#elixus



雖然不是 Perl 頻道,不過上頭仍有很多 Perl Hacker.

CPANPLUS 快速上手

CPANPLUS 是一能夠幫你輕鬆安裝 CPAN 模組的工具。若沒 CPANPLUS 或 CPAN Shell ,我們就需上 http://search.cpan.org/ 手動下載模組,並 perl Makefile.PL , make , make install 的手續來安裝,若是遇到相依性的問題,那麼就更又頭大。

所以,幸好有 CPANPLUS ,我們就可以輕鬆安裝模組。

由於 Perl5.10 已經提供 CPANPLUS Shell , 所以我們只需要稍做調校就可以使用。

第一次進 CPANPLUS ,需要稍微調整一下參數,譬如說 Mirror Site , 以及 Follow Prerequisite ,等可以幫助自己省事安裝模組的設定。

在進入之前,如果你沒有 root 或是 sudo 的權限,可以參考這篇: 安裝 CPAN 模組於 Home 目錄下

進入 CPANPLUS

首先先進入 CPANPLUS:

$ sudo cpanp

設定 Mirror Site

第一次執行 CPANPLUS 請先進入設定選單來選擇速度較快的 Mirror Site:

s reconfigure

選 7 Select mirrors

輸入 No 不保留目前設定 (才能繼續設定)

選 1 Mirror ,接著 CPANPLUS 會去下載 Mirror List

選 3 Asia

選 9 Taiwan

輸入你想要的 MirrorSite 號碼,譬如說 1 3 5 8 ,用空白分隔

選完之後選擇 Quit 跳出,設定就會自動儲存

選 9 Save and exit

Ctrl-D 跳出即可。

設定對每個相依模組安裝時行為 ( No, Yes, Ask, Build but not install )

通常對一次要安裝許多 CPAN 模組,每次預設都問是否安裝實在太煩人了。進入 cpanp 之後請下:

s conf prereqs 1
s save

是否執行模組單元測試

對於 CPAN 模組,都會固定有一些單元測試,用來測試在你系統上每個功能是否運作正常。因此會花去一些時間來做測試,這些測試結果當然不浪費掉,他會送至 CPAN 網站做彙整、統計。

如果覺得每次測試太花時間,可以將測試取消:

s conf skiptest 1
s save

基本使用

進入 CPANPLUS Shell 之後,按下 ? 會出現說明頁面。

首先可以先將 CPANPLUS 本身更新 ,請輸入:

s selfupdate all

之後我們可以先安裝一下 Bundle::CPAN 模組,將一些必要模組安裝 (非必要) ,請輸入:

i Bundle::CPAN

接下來動手安裝你想把玩的模組吧!就會輕鬆的多!

安裝模組

譬如說,安裝 Data::Dumper::Simple

i Data::Dumper::Simple

或者用關鍵字尋找 YAML 有關的模組:

m YAML

又或者搜尋某作者的模組

a leon

以上。

Have Fun!

2009年5月2日 星期六

SD Bug Tracking System Tutorial

SD stands for Simple Defects, a bug tracking system such as Git, SVK.

SD let you retrieve tickets to your local system. and you can sync your repository with other nodes, not only the central web server. and you can work with SD offline. just like SVK or Git , you can work on local branches , when you get online again , you can push your changes to remote servers.

SD currently supports RT, Hiveminder .. etc. and Google Code is the next. Oh Gugod just wrote a Net::Redmine, so it's possible to be able to use SD with Redmine in the future.

Install SD:

before you install SD , you will need Prophet , Prophet is a distributed database system designed for small to medium scale database applications (currently up to around 50,000 records of a given type). early targets include things such as bug tracking.

Download Prophet from github , or you can check out via git.

git clone git://github.com/obra/prophet.git

Once you've downloaded Prophet , you can install it:
cd prophet
PERL_MM_USE_DEFAULT=1 perl Makefile.PL
make test
make install
Then you can download SD from github:

get clone git://github.com/obra/sd.git

Once you've downloaded SD, you can install it:


cd sd
PERL_MM_USE_DEFAULT=1 perl Makefile.PL
make test
make install
Using SD for rt.cpan.org,

SD_REPO=/path/to/your/module sd clone 'rt:https://rt.cpan.org/|Your-Module|'

So that, SD will retrieve tickets from rt.cpan.org , next time you need to load your repository. just enter:

SD_REPO=/path/to/your/module sd

then you can create tickets, update tickets , take tickets , pull (retrieve changes from remote servers) , push ( send your local changes to remote servers)

SD> pull
SD> push
SD> ticket create

to see more help about ticket commands:

SD> help ticket