星期日, 5月 27, 2007

diff && patch

diff 跟patch 真是很好用的工具

diff 是用來比較兩個檔案的
當你要比較新舊的code 差在哪裡, 可以這樣寫 (diff old.file new.file)
# diff db.c db1.c
416c416
< sky =" SKY_CLOUDY;"> else if ( weather_info.mmhg <= 1320 ) weather_info.sk--- db.c 2007-05-19
當然如果你不喜歡這種寫法, 通常比較多人會用 diff -u
這樣看起來更清爽
# diff -u db.c db1.c
--- db.c 2007-05-19 14:19:12.000000000 +0800
+++ db1.c 2007-05-27 14:43:17.000000000 +0800
@@ -413,7 +413,7 @@

if ( weather_info.mmhg <= 980 ) weather_info.sky = SKY_LIGHTNING; else if ( weather_info.mmhg <= 1000 ) weather_info.sky = SKY_RAINING; - else if ( weather_info.mmhg <= 1020 ) weather_info.sky = SKY_CLOUDY; + else if ( weather_info.mmhg <= 1320 ) weather_info.sky = SKY_CLOUDY; else weather_info.sky = SKY_CLOUDLESS; }
--------------
patch 是diff 的好兄弟
patch 可以用 diff 輸出的檔案來update 舊的檔案
# diff -u db.c db1.c > db.c.diff
# patch ;lgt
patching file db.c
這樣就把 db.c 更新了!
-------------
當然diff, patch 沒那麼笨, 一次只能一個檔案
# diff -ruN src/ src.new/ > src.diff
# cd src && patch < src.diff
這樣就可以一次就patch 完囉!

星期三, 5月 23, 2007

Paste();

今天在看到 ptt 上 programming 版的一篇公告
說過長的code 可以貼到 http://rafb.net/paste 這個網站上
發現是個不錯的站 記錄一下.
----------
BTW 我今天在打球的時候 我同學跟我說了一句話我覺得很不錯
每次打球都要有進步,不然就白打了
我覺得他說的很對而且不管是在做什麼事情 都應該抱著這個信念才對!

星期四, 5月 17, 2007

SSH tunnel

我在 Tsung's Blog 看到的紀錄一下
其實我之前好像有試過 不過那時候是用putty 而且還失敗 囧oz
這次用ssh 就可以了!
如果我要建立一個ssh tunnel (透過HostA) 到www.google.com.tw
只要這樣就可以了..
ssh -N -f -L 9000:www.google.com.tw:80 user@HostA
輸入完密碼就建立了通道
只要連上 localhost:9000 就會透過ssh tunnel被forward 到HostA
此處 -N 是不要建立terminal interface, -f 是背景執行

星期三, 5月 16, 2007

套件檔案位置

有時候裝完東西(deb, apt-get install ..)都不知道有哪些檔案、放哪裡
當然可以開 synaptic 找到後再看看內容 可是並不是在每個狀況下都有GUI 可以用的
這時候就要用到 dpkg -L
例如我裝了一個screen (apt-get install screen)
這時後我只要輸入 dpkg -L screen 就能知道有哪些檔案被裝了

原文:
http://www.vdomck.org/2007/05/03/finding-where-ubuntu-installs-programs/