2009年4月25日 星期六

Ubuntu 9.04 and Grub

最近寫 code 的感覺又會來了,索性在家裝起了ubuntu 9.04-rc1,整體感覺還不錯!
比起以前的 gentoo,FC,似乎親切許多。其實裝 Linux 的原因,只是想寫程式,因為真的太久沒有寫自己好玩的 code,都是被別人叫去玩 code。

加上最近的 Android & iPhone 的 sdk 都陸續的釋出,看起來的成熟度都還不錯,是可以開始寫寫屬於自己的程式了,不然老是在用別人提供的 source code 感覺很沒貢獻度。

因為家中的網路速度過慢,所以每次 apt-get 都很久,看來也要順便更新一下網路。

不過在安裝完後遇到一個小問題,就是 grub 沒辦法開到 xp。花了一點時間思考跟搜尋,知道了問題點。

原本硬碟配置
sda(hd0) -> XP (已經安裝很久)
sdb(hd1) -> no OS
sdc(hd2) -> Linux (剛剛安裝完)

grub 我安裝在 sdc 的 mbr 上面,然後 BIOS 設定從第三顆硬碟(Linux)開機。開到 grub 後,第三顆硬碟(sdc)變成(hd0),所以第一顆硬碟(sda)變成(hd1),第二顆硬碟(sdb)變成(hd2),如下
進入 grub
sdc(hd0)
sda(hd1)
sdb(hd2)

但是這時候 bios 的裡面還是:
sda(hd0)
sdb(hd1)
sdc(hd2)

所以 grub 要去啟動 xp loader(Ntldr) 的時候,Ntldr 就會發現開機碟變成 (hd1) 跟原本 bios 中的設定不同,所以會造成沒辦法載入 XP。要解決這樣的問題,可以用 grub 裡面的 map 指令,將硬碟作虛擬對應。使得loader可以正常載入。

原本的 /boot/grub/menu.lst
title Microsoft Windows XP Professional
rootnoverify (hd0,0)
savedefault
chainloader +1


這邊就算將 rootnoverify (hd0,0) 改成 rootnoverify (hd1,0)還是沒辦法順利開到 XP。

修改後如下,可正常開啟 XP:
title Microsoft Windows XP Professional
map (hd0) (hd1)
map (hd1) (hd0)
rootnoverify (hd1,0)
savedefault
chainloader +1


參考資料:
http://www.gnu.org/software/grub/manual/html_node/DOS_002fWindows.html#DOS_002fWindows

2009年3月25日 星期三

multi tabbed ssh client

常用shh or telnet,但是卻不喜歡有多個視窗,覺得很混亂嗎?
可以try下面這個multi-tabbed plug-in for putty。

PuTTY Connection Manager
http://puttycm.free.fr/

PuTTY Connection Manager需要先安裝,然後在指定putty路徑,就可以運作。0.6.0.4822beta 的版本在我的電腦上,並不能正確運作,會出現下面的錯誤訊息

=============================
An unexpected error occured :
Object reference not set to an instance of an object..

Check log for further informations.
(c:\......\puttycm.log)
=============================

改用Alpha version 0.7.0.4780就可以正確運作

參考圖(reference:http://puttycm.free.fr/images/puttycm.JPG)


參考:
http://www.tsmexpert.org/2008/03/tabbed-sshtelnet-client.html

2009年3月23日 星期一

multi-projects of vim using cscope plugin

我在 Linux 上都是用 vim 在 trace source code,可是以前都是用 grep 的笨方法,並不知道 cscope 這個好東西,他可以直接在 vi 裡面直接連結到 function 的定義或是哪邊的 code 有用到這個 function 。
這像是在 windows 上的 source insight,也許用很多人認為 source insight 非常好用(也許是學習曲線較快),vi 相對來說,就需要花點時間去習慣,不過習慣後,就會討厭在寫 code 的時候要去動到滑鼠。:)

下面的安裝,我做了些改良(cscope_maps.vim),讓 vim 自動尋找正確的 cscope 產生出來的 CSCOPE_DB(通常為 cscope.out ),這邊透過絕對路徑的方式讓 vim 可以在任何子目錄中跳到另外幾個目錄下的某個檔案,原本的機制是不行的。

1. Install cscope and ctags
sudo apt-get install cscope ctags

2. download and modify cscope_maps.vim

這邊預設的目錄深度為 20 層,所以如果你的 source code 的目錄深度大於 20 請自行修正 i 的值
if has("cscope")
......

" add the database pointed to by environment variable 

" Search database for each project, you can switch different projects easily, :)

let i = 1
  while i < 20
    if filereadable("cscope.out")
      let db = getcwd() . "/cscope.out"
      "echo db
      let $CSCOPE_DB = db
      cs add $CSCOPE_DB
      let i = 20
    else
      cd ..
    let i += 1
  endif
endwhile

" show msg when any other cscope db added

.......
3. put cscope_maps.vim into ~/.vim/plugin
(目錄不存在請自行建立)

4. Create goproj.sh and put it in ~/bin
這是為了方便建立 cscope.out (CSCOPE_DB)而寫的 goproj.sh,內容如下,為了方便起見可放在 ~/bin 下面。
Content of goproj.sh
#!/bin/bash
CSCOPE_FILE=cscope.out
if [ -n "$1" ]; then
  echo "Source code directory: " $1
  echo "Create file map : " $CSCOPE_FILE
  find $1 -name "*.h" -o -name "*.c" -o -name "*.cpp" > $CSCOPE_FILE
  cscope -bkq -i $CSCOPE_FILE
  # cscope -Rbkq
  ctags -R
else
  echo "Please key-in path of project"
fi 

5. 使用範例,以 kernel source
# tar zxvf kernel-2.6.29.tar.gz
# cd kernel-2.6.29
# goproj.sh `pwd`
# vim xxx.c


[ Ctrl + \ + s ] : 搜尋游標上的 function 哪邊參考到
[ Ctrl + \ + c ] : 搜尋游標上的 function 哪邊呼叫到
[ Ctrl + \ + g ] : 搜尋游標上的 function 是在哪邊定義的

[ Ctrl + \ + t ] : 跳回下一個位置
[ Ctrl + \ + o ] : 跳回上一個位置

另外由於 cscope_maps.vim 中有定義 Ctrl + ] 的作用,會取代原本 TAG 裡面的定義,所以如果不喜歡的話可以把 cscope_maps.vim 中的這行 (set cscopetag) 移除 。

6. 請用力使用。謝謝!

2008年12月24日 星期三

工作似曾相似

最近的工作狀態,很像個研究員,我似乎有種回到研究所的感覺,每次 survey 一些資料,都要寫report,而老闆也說你認為可以就好(我的好,很遙遠,因為我很龜毛,所以常常會做到死。恩!換句話說,老闆是要我做到死?是這樣嗎?)

而這幾個 project,更加上了要找出某個軟體與程式庫的效能瓶頸,所以測試報告就少不了,要去想哪邊應該做幾個 test case,應該怎麼闡述思考邏輯,才能有效率的找出瓶頸。所以我就從 shell script 一路寫,一路弄到 gnuplot 去畫圖,我的媽啊!這不是研究所的時候我在寫論文時候用的畫圖工具嗎?竟然再度相逢的時間是這麼快,心理想著,還好那時花了很多時間做 study,現在才可以馬上上手,這應該算是 "走過必留下痕跡" 的結果吧!

雖然活像個研究生,不過少了教授指導,也偶爾會有方向不對的時候,但經過兩年的洗禮,可不是這麼脆弱的!至少邏輯的思考上,比較有完整性。

另外也是給自己不少壓力,期望能進步的更快,更茁壯,不過好累喔!

2008年12月4日 星期四

學習投資

記得三四年錢,有朋友問我要怎麼投資,其實那時我也很稚嫩,所以也不敢給朋友什麼建議,唯一的建議就是多看書。現在,我瞭解了一些事情,是可以回答部份的問題。朋友們,看看吧!

來說個小故事吧!



故事中有三個主角,C君,D君與E君,也生存在不景氣的大環境中,所以大家的話題也圍繞著關於賺錢與存錢這檔事。

D君:
你們會不會覺得女生花錢都買一些包包,衣服,叫他不要買偏偏一直買,然後要存個錢都不知道怎麼跟他說,你們的女朋友都會這樣花錢嗎?


E君:
我的另一半,都是不知道自己的錢花到哪邊去,到月底就會覺得沒有錢,然後還會問我,奇怪怎麼我都存不到錢。


C君:
我家夫人,都是買基金,叫他不要亂買,結果現在虧一堆,還說跟我確認過可以買。看來大家都需要時間跟另一半溝通溝通,那你們自己怎麼存錢?


接著

E君:
我都會自己先記帳,然後在做分析,然後再抓預算,每個月薪水下來就先分配到不同的戶頭,然後固定提撥一定金額買股票或定存,看景氣狀況來決定,股票價格到達我喜歡的價位,就每月分批買入,如果沒有就拿去定存。


D君:
哇!太厲害了,那些我都不懂,我只知道我們可以買公司股票,但是金額有限,我連我買多少了我都不知道

C君:
你這樣不行,我看你要自己去瞭解一下,而且最近景氣不好,股票在谷底,可以考慮加碼一下。最近一直在看房地產的書還有看房子,因為房子的價格越來越貴(加上通貨膨脹),所以怎麼想都很划算,所以越早買房子越好。


D君:
唉!看來離我想退休的時間還很久,不知道我哪時候才能不用工作靠股息跟利息過生活!


C君:
可以啦!但是過程很無聊就是了!(E君狂點頭)


E君:
是啊!就像是在玩大富翁,每繞一次圈圈就可以拿到固定的金額(薪水),然後走到喜歡的地區慢慢買,然後蓋小房子,四個小房子再去換大房子,這樣每個人一走過,就可以收費用。這不就像是我們的真實人生嗎?




上面的對話,沒有好壞之分,只有是否瞭解自己的財務狀況,才是重點。不知道大家看完上面的對話,有沒有什麼獲得?你怎麼想的?
  • 過度消費會造成另一半困擾?
  • 要學會如何記帳?
  • 瞭解自己投資的商品?
  • 存錢的過程很無聊?
  • 大家都在玩真人版大富翁?

以我來說,重點應該是下面的排序:

基本能力:
  1. 學習記帳(瞭解消費習慣)
  2. 學會適當消費(透過記帳學習如何預先支出,抓預算)
  3. 存錢的過程真的很無聊(就像是機器人,重複同樣的動作)
真實世界:
  1. 瞭解投資的商品(透過閱讀與學習來投資自己,減少投資的風險)
  2. 開始進入真人版大富翁(過程很慢長,需要紀律才能永保安康)

基本能力,就是你能否過的愉快的基本配備,如果你沒有辦法做到,年紀大一點,就會體認到,社會是殘酷的這件事

記帳又不能賺大錢,想想怎麼賺錢比較實在!這句話很有道理,但是你有聽過公司不需要會計,老闆很懂得賺錢,然後公司可以存活超過一年的嗎?

也許很多人認為,收入很少,不用記帳,不用記帳當然不用分析,更不用說抓預算。但是記帳可以說是一種練習,讓你清楚自己的開銷,與不正常的花費,你才會知道有多少的資金可以運作(稱作現金流量)。才不會導致你現金短缺,然後像公司一樣倒閉(潛逃大陸?XD)

雖然記帳,分析,預算這三件事情很無聊,但是有作就有機會改變,有改變就有富足的機會

這就像是在情場的男歡女愛一樣,你喜歡一個女生,不說不告白,就沒機會,有說就有機會改變,有機會改變就有成為男女朋友的可能,你說對不對呢?

有人問我,記帳會改變什麼?

會改變你對一元的看法,會改變你對時間的看法,會改變你對金錢的使用態度。

2008年11月21日 星期五

時間價值

再當兵之前,覺得很多東西都可以慢慢來。但是現在卻覺得不喜歡這樣的方式,因為我開始在意自己的時間價值,甚至現在會因時間被莫名的浪費掉而生氣,不只在工作上,生活上的小片段都開始會介意。

而會介意時間,是源自當兵期間,自己的時間很破碎,甚至沒有,所以只要找到機會,就拿書來看,不知不覺開始愛惜時間。而因為這樣的習慣,讓在當兵的我,也看了不少書,應該有30本左右吧!這樣的時間利用,讓我覺得很有價值,所以對於浪費時間的事情也就開始在意。

就拿最近生氣的例子來說,因為工作上還在受訓,所以會有很多課程要上,而公司受訓的方式就是丟一些東西,然後找個人說明一下,就給你去寫程式。其實這樣訓練的缺點就是受訓出來的員工不能達到一致的水準。很多的時候是工程師會寫程式,但是卻對軟體邏輯及架構完全不清楚。

而我就在這樣的訓練過程中,遇到自己覺得生氣的狀況。前陣子拿到新版子,電路圖,規格書,但唯一就缺一份規格書(晶片規格書,如何控制晶片的說明手冊),一開始不以為意,想說這些東西應該就足夠了,差那一本應該沒關係(因為負責的人說他也沒有那本規格書,XD)。結果花了三到四天,整天都在debug,到最後發現必須要有規格書,才有足夠的資訊做下去。再那期間也一直向上反應需要規格書,可是得到的回應都是:我沒有,你問看看誰誰誰有沒有,如果沒有就沒有了!

最後我是透過自己的老闆去要,才要到那本規格書,可能有簽DNI的關係所以才會如此難要吧!因為協調溝通上的沒有效率,所以浪費了自己三四天的時間,所以讓我有點火氣。也許很多人會覺得反正都有領薪水,無所謂。但我認為每個小時要有一定的產出,才是比較負責的態度。不過再debug的過程也是學到一些東西,所以也算是有收穫。不過如果用這樣的新人訓練方式,會造成很沒有效率的循環。

總結,開始在意自己的時間,是一件可以開心的事情,這樣可以讓自己成長的更快。更有機會讓自己的時間價值無限擴張,接下來的就是時間上的規劃要更有效率,才能創造出更多價值。

2008年11月16日 星期日

財務規劃

最近,大家應該發現,我很少出現在msn上,可是我並沒有消失,只是最近下班後,都在思考財務上的規劃,原因只是家裏的財務沒有規劃,怕哪時突然會出現一個財務缺口,然後又要奮鬥20年才能回填這個缺口。

縱使自己沒有賺多少錢,但卻想要作財務規劃,其實只是想搞清楚這些東西的邏輯,就像是在玩大富翁,要搞清楚規則,才能好好在遊戲中成為地產大亨。這一個多月的思考下的初步結論,有幾點很清楚,如下(依照重要性):
  • 記帳習慣
有記帳的習慣,才能分配所得,哪些該花,哪些該省。這樣才能預估哪時候要支付什麼帳款,更可以對未來的現金流有更清楚的拿捏。

  • 紀律
支出的部份需要一些紀律,才能依照原本的規劃作支出,少了這部份,是沒有辦法發揮記帳後產生的漣漪效應。

  • 簡單化,系統化
投資規則越簡單越好,最好可以系統化機械化不要花去過多時間,把這些時間拿來投資自己的人生,持續學習不同的知識及技能。

我想推薦幾本書:
  1. 富貴成雙
  2. 錢與閒
  3. 點時成金
這三本書,是我認為很適合大家去閱讀,因為裡面的觀念都很實用,也許你可以問問你的理財顧問,有沒有看過這幾本書,然後問問他的看法及想法。