星期一, 12月 29, 2008

Building C libraries

Sample for shared libraries:
$> ls
a.c a.h lib.c
$> gcc -c -fPIC a.c -o a.o
$> gcc -shared -Wl,-soname,liba.so.1 -o liba.so a.o
$> gcc lib.c -o lib -L. -la
$> LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH
$> export LD_LIBRARY_PATH

星期五, 12月 19, 2008

幾年了?

前些在B的blog看到:『交往七年』、『結婚了七年』、『初識的一年』。我算了一下,我和小黃認識至今快十三年,戀愛至今十一年半,結婚剛滿三年;天啊!這男人竟在我的生命裡佔了近十三年!我和R一邊算著這些年歲,也問了老大同樣的問題;老大大我六歲,但結婚、生子甚早,他說與妻子相識大約快二十年,但戀愛則是(好像)十五年。關於年歲這事,不知男人是怎麼想的?看不大出老大的反應。

記得近四年前,初出社會的我和N都遇到生平第一次的同事離職,而且都是對我們很重要的。N更慘,因為當時公司的工作環境、氣氛也很差;於是來到新竹找我散心。我自己當然也是很受傷,因為從沒想過分離(日後就越來越習慣同事的來來去去,嘆~)(而分離之後又能重聚,卻也是相當了不起的緣分啊!)。

當時N說了一句:『我們在對方的生命裡都佔有了一半的生命!』當時聽了很感動。如今,驚訝於自己的生命裡小黃參與了十二多年,回想起N的這句話卻倍感溫暖;現在,你們可是參與了我一半一上的生命呢!畢竟年少時的朋友所佔有的位置還是相當與眾不同的!到了今日,各奔前程的各奔前程,汲汲於生活事業的也忙地沒完沒了,上週日聽了五月天的演唱會,看到這首歌也別有感觸,有機會大家要常聚聚。

噢買尬 五月天
詞曲:阿信

噢買尬 噢買尬 真的太久不見啦 我隨時OK 就等你電話

哭啊哭啊 哭啊哭到 眼淚都乾啦 哭到海灘只剩下沙
整個世界 只剩下你 聽我說話 一直到 天黑也不回家

混啊混啊 混啊混到 天空都老啦 計畫依然沒有變化
剩下我們 說的神話 夢話廢話 就這樣 陪著我到長大

噢買尬 噢買尬 這是一定要的啊 喝到掛 唱到啞 笑到流淚 哭到趴
噢買尬 噢買尬 真的太久不見啦 我隨時OK 就等你電話

巴黎鐵塔 東京鐵塔 蛋塔金字塔 回憶慢慢積沙成塔
回憶回不去了 但你一起來了 一起到 更遠的未來吧

無猜無邪 無私無暇 的友情無價 你是買不到的奢華
天涯有天 風景有風 浪花有花 再加上 我有你就夠啦

噢買尬 噢買尬 真的太久不見啦 我隨時OK 等你電話
老地方見等你電話 無時無刻等你的電話 我隨時OK 就等你電話

星期二, 12月 16, 2008

危險的gets()

今天在寫測試程式的時候,發現compiler給了各warning:
the `gets' function is dangerous and should not be used.

去google了一下,原來是因為它沒有做長度check,如果餵長一點的字串,就會overflow:
*** stack smashing detected ***: ./getstdin terminated
Aborted (core dumped)


除了自己check字串長度做保護外(但很麻煩),可以用fgets代替:
char *fgets(char *restrict s, int n, FILE *restrict stream);

說起來,由於歷史因素,許多好用的standard C functions到了現在這個越來越『先進』的時代,都變得dangerous,像是buffer的allocate和檢驗、是否可以reentrant、變數是否是library內static宣告...等。所以,使用一些有參數是pointer或是沒有限制buffer size的function,應該要提高警覺心,像是sprintf。有一些function有reentrant的版本,會命名為同名加上『_r』的方式。

sprintf --> snprintf
gets --> fgets
time系列functions(ex: asctime --> asctime_r)
search user DB系列functions(ex: getpwnam --> getpwnam_r)
string functions(ex: strerror --> strerror_r、strtok --> strtok)
...

星期四, 12月 04, 2008

倒著活

這陣子突然有各感覺,自己是倒著活的。大概是看完九把刀的『後。青春期的詩』,我回想著自己年輕時,發現我似乎並沒有立下什麼志願(好的、壞的、狂妄的、...)。昨天與朱和蔡吃飯,珠提到他目前的生涯規劃,提到當年高中時自己是有怎樣的志願和想望,而決定轉組;我似乎還是『照起工』的唸書、考試、升大學。反而是年紀越大,越有一些瘋狂、像少不更事的年輕人似的。

也許是比較早熟的關係、愛看小說的關係,學生時的我其實都是用很『大人』的思維在看世界,所以雖然很讚嘆狂妄的楊過、瀟灑的令狐沖,不過卻不會做類似的瘋狂行徑(骨子裡也不是那樣的人),分析起來,我應該是比較『張無忌』的人。

但是這些年入社會、結婚、生子、經歷不少的生離死別之後,想法、個性越來越放得開,越來越覺得『當下才是最重要的』、『日後回想起來會後悔的事,現在就要去做』。雖然不時被笑說,好像年紀少了十幾歲,不過快意就好:)

也預祝朱此去一切順利!