2008年1月19日 星期六

一個人的星光舞台

說起來很慚愧,以我愛看電視的程度,應該早就會知道星光幫這三個字,但是我卻是從朋友口中知道。這篇文章不是想討論,喜歡其中的那位,節目製作的方式以及老師對某位參賽者有偏頗,我想就星光二班,從去年到現在所展現出來的變化及成果,討論為甚麼人會有如此大的潛力與能量,再短短半年間,會有這麼令人驚豔的表現。

以前,我一直會問自己一些問題,也許這些問題從來沒有跟朋友及家人提過,但一直深放在心中,一直到找到了答案。

常常聽到朋友說,工作上不如意,老闆不好,工作性質很枯燥乏味,也說過想換工作,想換到比較有潛力的公司或產業,但卻還是看他努力堅守崗位。
也有朋友說,他想追求平凡的生活,但卻對於工作與生活總是不能平衡,工作佔據了他大部分的時間,而如果捨棄這工作,經濟來源就會是一大問題。
常聽到自己說,對工作無熱情,感覺像行屍走肉,晚上班早下班,感覺像是在作壞事,每個月領薪水,都覺得領太多,頗心虛,也怕自己跟不上產業的腳步,只要停下來,就輸了,但又怕方向不對,浪費時間。

星光二班中,第四名的吳忠明(大Q),一直不覺得他有什麼樣的特質及能力,甚至回覺得為甚麼他可以打到六強?一直到昨天,他演唱的『我願意』,才感受到他的努力,原來他是有能力的,只是他累積的時間要長一點,比一般人要長,長那麼一點點,多等待一點醞釀的時間,才看的到改變。因為他一直狠狠抓住老師給的每次機會,也許每次都驚險過關,但他有進步,即使覺得沒那麼搶眼,但也可以到某一水平。想想自己工作能量的累積是不是也是這樣的情況?久一點,長一點,慢一點,到達一個水平,就會爆發出來,途中如果失去信心,換條路走,相對就浪費了很多時間。慢慢來,比較快,方向沒有絕對,只有看掌舵的人有沒有信心與勇氣面對挑戰

參加比賽,半年的時間不短,但是每個星期都要有精彩的表現不容易,尤其是要一直保持穩定狀態更是困難。試想在以工程師的角度出發,採取一星期驗收一次的星光舞台,是否半年後,我們也可以這麼茁壯?

我想,是的。這是一定可以做到的事情。只是一個人為自己舉辦的星光舞台與有社會大眾參與的星光舞台,是截然不同的感覺。因為你只會感到孤寂,沮喪,困惑,迷思,透過不斷的詢問自己為何要這樣強迫自己作些自己不喜歡的事情?如果你也有這樣的想法,表示你對這件事情沒什麼熱情,對吧!

記得星光幫,每位成員都以喜愛唱歌為出發點對吧!如果你不愛唱歌,去參加這個比賽,那簡直像是殘酷舞台,每一秒都像脫光衣服在冰櫃裡的感覺。就像梁文音在第一次在星光五舞出現,她的聲音讓我起雞皮疙瘩,但是之後的比賽越來越覺得普普,一直到他被高昱寰(Alisa)pk到敗部去,回來之後我又聽到了那種雞皮疙瘩的感覺。

在工作上,每個人都一定會有迷惘的情況,只是持續的時間長短不一,梁文音很幸福,她花了半年時間,就經歷過了迷惘與找回自己的過程,而我花了三年的時間,一直到現在,才慢慢覺得找回了自己,那種感覺很開心,就像他在最後一次的在星光舞台演出,那樣出自內心的吸引人,會讓你感受到,『對啊!這舞台是屬於我的』。

其實,周遭朋友有些人過的好,有些過的不好,有時候都不好意思問他們的近況,因為有些事情,你真的無能為力,能做的只是分擔憂愁,但是這沒有實質上的助益。希望可以幫上些什麼,唯一可以的,就是透過文字及閱讀的方式,只要你們想看,我就會寫。透過閱讀讓他們瞭解,事情可以用正面積極的態度去面對,也許結果不怎麼理想,但你可以很坦然,為下一次作準備。

其實寫這篇文章,是將想法寫給一個朋友看的,希望你能有所收穫。下面幾句話,一起共勉,就是

放下過去,努力當下,夢想未來,
經驗累積要,久一點,長一點,慢一點。

2008年1月5日 星期六

GNU gcc and ld

由於之前常常使用 makefile 去產生執行檔,但往往很多 makefile 都是從其他已經寫好的範例複製過來的,常常會忘記基本的 gcc 與 ld 的使用,甚至要拿來幫助 debug 的時候都忘記指令要怎麼下了,所以寫下這個筆記,以後要找比較方便。

寫程式有時候想瞭解某部份程式碼是否有問題,但卻礙於當程式編譯後,不知道確切的執行位址,要 debug 的時候就麻煩許多。而這時候最好就是拆解成 asm code 並同時產生 program map file 來尋找相對應的地方。這樣的情況在 embedded system 中更容易遇到,因需要定義哪邊的記憶體位置可以拿來使用,而 program (通常是 startup code)通常會被載入某特定區域,所以會在 linking 時做給予位址的動作,此時會有一個 linker script 來作為 mapping 的依據。 當然這個 script 也是事先寫好的。

參考 test.ld 如下:

ENTRY (main)

MEMORY
{
ram : ORIGIN = 0x00200000, LENGTH = 32M
rom : ORIGIN = 0x60000000, LENGTH = 16M
}

SECTIONS
{
data :
{
_DataStart = . ;
*(.data)
_DataEnd = . ;
} >ram

bss :
{
_BssStart = . ;
*(.bss)
_BssEnd = . ;
} >ram

text :
{
*(.text)
} >ram
}


用gcc編譯時:

#產生 test.o(object code), test.s(asm code)
# gcc -c -S -Wall test.c


會有下列檔案:
test.c
test.o
test.s


#手動連結,產生 t.out 執行檔,產生 test.map(map file),依照 test.ld(linker script),並連結標準函式庫-lc(libc)

# ld -o t.out -Map test.map -T test.ld -lc


這樣就可以完成 debug 所需要的資訊,而如果對看 asm code 覺得吃力,可以在想要看的程式馬前後插入下列程式碼(在 C 中):

__asm__("nop");
...
code...
...
__asm__("nop");


這樣就可以明確知道要 debug 的源碼到底位於那一段記憶體區段,甚至可以知道在編譯時最佳化會不會影響到程式的運作。


PS.太久沒寫code,很多東西快忘光了趕快紀錄一下。XD

參考連結:

2008年1月1日 星期二

2008 讀書計畫

每年的開始,都會給自己一些目標,希望可以達到,因為今年會在外島當兵,所以給的目標就是看書,至於看什麼書,就是下面這些書單,當然會不定期更新進度,有心得會寫在讀書筆記區。

1. UNIX Network Programming Vol. 1 (in progress)
Chapter 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31

2. The design of the UNIX operating system (in progress)
Chapter 1,2,3,4,5,6,7,8,9,10,11,12,13

4. Programming Embedded Systems in C and C ++ (in progress)
Chapter 1,2,3,4,5,6,7,8,9,10

3. Ultra Wide-Band 規格書

閒書:
1. 這小子,讓川普讚嘆!