楊培安–愛上你是一個錯

 

楊培安的聲音不錯,不過在編曲上我喜歡的歌曲並不多,這首歌是他的作品裡面我喜歡的其中一首。

但是愛應該是一種無悔的付出,因為有情所以讓人生可以很美麗。即使最後沒有完美的結局,也不該用過去的付出及承受的委屈向對方施壓才對:p

 

 

====================

愛上你是一個錯

作詞:陳國華 

作曲:陳國華 

編曲:陳國華

 

人生有許多難關要過 

自古是情關最讓人難受

也許我命中註定情海中顛簸

為你我付出這麼的多 

卻讓我痛到有苦不能說

因為我愛你就像那飛蛾撲向火

 

請你告訴我愛上你是一個錯 

別讓我失魂落魄著了魔

解開我的迷惑 收起你的冷漠 

你怎忍心這樣做

 

請你告訴我愛上你是一個錯 

別讓我漫漫長夜守寂寞

傷痛已經太多 心也早已傷透 

我已不想再為誰去等候

====================

SOAP on Android(using ksoap2 for android)

最近 android team 新人的 training 題目有一題是實作一個 mantis 的 android client。

稍微看了一下新人試過但是據說試不出來的 mantisconnect java api,發現其實單純只是用 SOAP 跟 mantis 做溝通罷了。

所以就應 android team leader 所求,寫了一個簡單的 client,示範如何透過 soap 跟 mantis server 溝通。

剛好最近幫以前實驗室學長實作他手上專案要開放給廠商的 api,也是用 SOAP 的方式讓廠商橋接,所以就決定不用 mantisconnect java api,改用 ksoap2 去實作一個 general soap client,順便可以 demo 給廠商驗證。

廢話不多說,請看 code:p

X11 Forwarding on FreeBSD…

今天因某長官有需求,想透過 X11 Forwarding 操作一台 FreeBSD 上的 ddd。

但是卻告訴我執行後會出現 Error: Can’t open display:

試了一下,的確如此。本來以為只是單純的 $DISPLAY 變數沒設或設錯了,後來轉念一想,這東西應該是 login 後就會自動被 assign!!

(對不起,我從來沒想要用 X11 Forwarding 來玩 X application…..:$)

稍微追了一下,現在解決了:p

為了避免有後人遇到相同問題,這裡簡單隨手記一下剛剛做的幾件事情…

1. 裝 /usr/ports/x11/xauth
2. /etc/ssh/ssh_config:加上 ForwardAgent yes 及 ForwardX11 yes 及 XAuthLocation /usr/local/bin/xauth
3. /etc/ssh/sshd_config:加上 X11Forwarding yes 及 X11UseLocalhost yes

開啟 RT-N16 的 tomato pppoe relay

一直都以為刷了 tomato (我刷中文版)的 RT-N16 有 pppoe relay(asus 原廠韌體有),不過昨天怎麼桌機撥接都一直得到錯誤代碼 651。

仔細看了一下,原來 tomato 其實並沒有把 pppoe relay 包進 generic firmware。

稍微 survey 了一下,其實要掛上 pppoe relay 功能還蠻簡單的:p

首先要先打開 tomato 的 ssh 或 telnet service:路由器管理–遠端登入及密碼(基於安全性考量,建議開 ssh 並關閉遠端登入功能)

再來要打開 JFFS:路由器管理–JFFS–啟用,啟用後記得點選下方的格式化/清除,否則無法 mount。

接著,用剛剛開啟的 ssh/telnet 登入 RT-N16,可以用 PuTTY(這裡有我自行打包 patch 過的中文化版本:p)

帳號是 root,密碼則跟 Web 登入密碼相同

接下來是需要敲幾個簡單的指令,登入後依序敲入:

1. mkdir -p /tmp/test; cd /tmp/test

2. wget http://kamikaze.openwrt.org/8.09.2/brcm-2.4/packages/rp-pppoe-relay_3.10-1_mipsel.ipk

3. tar xzf rp-pppoe-relay_3.10-1_mipsel.ipk

4. tar xzf data.tar.gz

5. cp usr/sbin/pppoe-relay /jffs

6. cd /; rm -rf /tmp/test

7. /jffs/pppoe-relay -S vlan2 -C br0

最後,我們要讓 tomato 在開機時都能執行 pppoe relay,

所以要在 tomato 的 web 設定頁面(路由器管理–系統指令)輸入

sleep 10 && /jffs/pppoe-relay -S vlan2 -C br0

這樣就大功告成了:p

ps. 如果是 dd-wrt,同樣也適用本方法,唯一要注意的是可能需要將指令中的 vlan2 換成 vlan1。

另外,因為是把 pppoe-relay 指令放在 jffs 掛載區,所以如果之後升級韌體後,上述動作需要重做一次。

Build a git project on hudson & some git plug-in bugs…

最近在處理 daily build system,要把某些 project 透過 hudson 建置成無人值守的自動化編譯系統。

不過在 git plug-in 上吃鱉….。

簡單描述一下我的狀況及解決辦法:

我在 github 上開了個 android project,想要設定 hudson 自動檢查 github 上的 code 是否有變更,有變動的話就抓回來編一份丟給 QA 去測試。

而這個 project 有兩個 branch,分別是 master 跟 bugfix。

為了清楚明瞭,在 hudson 上開了兩個不同的 project,一個專門 build master branch,另一個則專門 build bugfix branch。

這時候怪事來了….bugfix 的 SCM polling check log 看起來似乎抓到了 master 的 commit,而 master 的 polling check log 好像也抓到了 bugfix 的 commit。

本來以為是其他開發人員不小心把兩個 branch 做了 merge,不過仔細一看卻又不像這麼一回事。

稍微思考了一下,決定從 hudson 的 build log 下手。

結果發現了這種東西….

[workspace] $ c:\cygwin\bin\git.exe fetch -t git@github.com:gaod/android.git +refs/heads/bugfix:refs/remotes/origin/bugfix
[workspace] $ c:\cygwin\bin\git.exe ls-tree HEAD
[workspace] $ c:\cygwin\bin\git.exe log –all –pretty=format:’%H#%ct’ origin/bugfix

等等,為什麼是 git log –all 呢?!

抓到兇手!git log –all 會去抓整個 project 的所有 branch commit log 啊!那難怪一直出現奇怪現象…

(不過奇怪的是,我搜尋了一下,似乎沒看到有人遇到這問題?)

解法就是,自己去抓 git plug-in 回來修掉這部分,拿掉做 git log 時傳入的 –all 參數,果然就好了!

下面附上 hudson 上這個 github 的 project 的 project 設定檔(好繞口:p)

URL of repository:git@github.com:gaod/android.git
Name of repository:origin
Refspec:+refs/heads/bugfix:refs/remotes/origin/bugfix
Branch Specifier:origin/bugfix

FreeBSD mount iso file

在 FreeBSD 上掛載 iso 檔其實很簡單…
掛載:
mdconfig -a -t vnode -f xxx.iso -u 0
mount -t cd9660 /dev/md0 /mnt
卸載:
umount /mnt
mdconfig -d -u 0

CVS 轉換到 Git

下面是用某公司內部神秘專案 KKK 做例子的示範,將整個專案內容從 cvs 搬移到 github 上,不過也適用於其他 git hosting/server

由於 code 中 big5 與 utf-8 混雜,但是 comment log 又都是 big5,導致沒辦法直接用 git cvsimport 來處理(git cvsimport 無法處理這種混亂的編碼狀況)

原先 Izero 長輩提供的做法是 cvs to svn,svn to git,切成兩段來做。但是太麻煩了,這樣還得架 svn server 才能處理。

這邊提供一個經過測試後可行的簡單完美做法…

有幾件事情當然得先做
1. 註冊 github 帳號
2. 在要 access github 上資訊的電腦做 ssh2 key,把 public key 上傳到 github
3. 在 github 開個專案

確認已經可以存取 github 上的專案內容後
1. 取得 cvs server 上的 CVSROOT & KKK repository,解開丟到 /home/cvsroot 後切換到 /home/cvsroot
2. 裝 cvs2svn(cvs2svn),待會兒將透過 cvs2svn 中的 cvs2git 這個工具來做轉移
3. cvs2git –blobfile /tmp/cvs2git.blob –dumpfile /tmp/cvs2git.dump –fallback-encoding=utf-8 –encoding=big5 KKK –username gaod
(用 cvs 上的 gaod 身分把 KKK 專案在 cvs 上的東西 dump 到 /tmp/cvs2git.{blog,dump}。cvs 上程式碼編碼是 big5 & utf-8 混雜,comment log 則是 big5)
4. cd /tmp;git init KKK;cd KKK
(先 git init 建目錄後切換過去建出來的 KKK)
5. cat /tmp/cvs2git.{blob,dump} | git fast-import –force
(把 cvs 上的東西倒進去剛剛 git init 出來的目錄)
6. git remote add origin git@github.com:gaod/KKK.git
7. git push –force
(force push 到 remote)

SVN repository remote dump

早上 JoeHorn 告訴我,OpenSVN 要收了,所以原本 host 在 OpenSVN 上的 Maple-itoc project 顯然得趕快換地方了。雖然 OpenSVN 公告說五月一日開始會提供 repository dump,不過既然都要搬家了,自己 dump 一下當作練習也是不錯。

Survey 了一下,大部份的文章都是教學用 svnsync 來處理,不過我發現另一個工具也是很好用:rsvndump。

差別在於,svnsync 可以直接 mirror 整個 repository,而 rsvndump 則是 dump 成一個檔案。

svnsync 我的做法:

1.  cd ${SVNHOME}; svnadmin create Maple-itoc

# 到 svn server 的 repos 目錄

2. 修改 ${SVNHOME}/Maple-itoc/hooks/pre-revprop-change,我是懶得設,直接丟個空白檔案然後 chmod +x

3. svnsync init file:///${SVNHOME}/Maple-itoc https://opensvn.csie.org/MapleBBSitoc

# 初始化 dest repos,可以用 svnsync init help 看詳細參數,這裡都是匿名存取所以不需帳號密碼

4. svnsync sync file:///${SVNHOME}/Maple-itoc

# 開始 sync….

rsvndump 的話,我的做法是:
1. rsvndump http://OpenSVN.csie.org/MapleBBSitoc > Maple-itoc.dump
# 把整個 remote repos dump 出來存到 Maple-itoc.dump

RT-N16 從 3rd-party 韌體刷回原廠韌體

1. 先將PC設定為 192.168.1.2,子網路遮罩為255.255.255.0
2. 用有線網路將電腦接上 RT-N16
3. 將 RT-N16 關機,按住 restore 鍵不放,開啟電源,直到 RT-N16 power LED開始閃爍後才放開 restore 鍵
4. tftp -i 192.168.1.1 PUT RT-N16_9.9.3.7.trx,大約 20 秒(RT-N16_9.9.3.7.trx 從華碩官網抓)
5. 等五分鐘,重開 RT-N16,大功告成

WinSCP 正體中文翻譯

一年前開始做 WinSCP 的正體中文翻譯,感謝 Mark Lin,今天終於全部翻譯完畢。需要的人請自行安裝 WinSCP 英文版,再抓翻譯檔下來放在 WinSCP 安裝目錄下,進入 WinSCP後即可選擇中文介面。但是因為功蓋許問題,WinSCP的作者不知道怎麼處理,所以有不少詞彙只能暫時用同義字替代,這個我還會跟 Martin Prikryl 問問,能不能我自己 compile 後再丟給他放官網:p如果發現誤義或是翻的不好,還請告訴我,謝謝:)