2010年7月11日 星期日

有關C語言的struct進階初始化

之前在trace強者學長們寫的C code時,一直對某種struct initialization的方法很感興趣,卻不知道該如何使用。稍微研究一下終於有了小小心得,在此筆記一下。

假設有一個student的結構定義如下:

typedef struct student{
  char name[50];
  int studentNo;
  int age;
}student;


按照一般教科書上的寫法,初始化的方式是先宣告一個struct student的變數,然後再用點(dot)運算子去存取內部成員並賦值,例如:

struct student st1;
st1.name = "Peter";
st1.studentNo = 1234;
st1.age = 18;


但是進階的初始化方法卻是宣告直接再以點(dot)運算子賦值,例如:

student st1={
  .name = "Peter",
  .age = 18,
  .studentNo = 1234
};


原來點運算子就可以等同struct內的成員,多個成員則用(,)來分開,類似陣列(array)的宣告方法,不同的是,他賦值的順序是可以不用按照struct定義內的先後順序的!

說到陣列(array),他的宣告也是有幾種神奇的方法。
例如:

int a[7] = { [4]=29, 33, [2]=15 };
相當於
int a[7] = { 0, 0, 15, 0, 29, 33, 0 };

可以用[index]= value 的方法指定給特定的元素,沒有指派的值就是0這樣。

結合上面struct的用法,也可以一併使用combo連續技,例如:

student st2[5]={
  [3]={
      .name = "Titus",
      .age = 22,
      .studentNo = 1041 },
  [2]={
      .studentNo = 1042
      .age = 23,
      .name = "Stephen", },
}

[index]= 可以不必按照順序,裡頭的成員也不必按照順序,其餘沒指派的元素會自動初始化為0。


當然也可以將一連串連續的元素賦予相同的值,例如:

int a[]= { [0 ... 9]=1, [20 ... 99]=2, [100] =3};


其實這些進階的寫法有什麼實際的好處我也還沒參透(難道是這樣「看起來」有比較OO嗎?哈哈),但至少能看懂這些,以後再看別人的code有用這種語法時就不會再覺得好古怪好神奇了。這些小東西看在用JAVA或C#的人可能不值一提,不過我在這古老而傳統的C語言上能看見這些寫法,仍是感到十分特別又有趣的,所以說,C語言也是會與時俱進的!C語言好棒阿!(這種將C變成既簡潔又充滿彈性的極致語言我看就是Ruby了吧!哈哈!)

PS:以上應該都是使用革奴牌(GNU gcc)的延伸C語法,而不是標準的C語法,如果你是在非GNU gcc的compiler上要特別注意這種寫法是否能夠使用囉!

2010年7月8日 星期四

我的aGape新眼鏡


最近有不少人問起我的新眼鏡是啥牌子的在哪配的(奇怪都戴了快一個月了還有人問),我看了看上頭印的Mark叫做「aGape」,是個奇怪的韓國牌子。而我也不是在新竹配的,是在桃園的一家叫做「卡爾登眼鏡」配的,這家在PTT桃園版是被推爆、難得的好店。會去那配是我弟介紹的,他去年也才去那配了一副Lee Cooper的膠框眼鏡(事實上我們全家每個人幾乎都在那邊配過一支了),那家的老闆服務真的很親切很周到。

我當初配的目的是想找一副比較便宜又耐操膠框鏡架,可以讓我打球時候戴的。因為打籃球時,一些小小碰撞難免,我原來的眼鏡在打球時常常不小心滑落地上,鏡片都掉出來了,鼻墊也搖搖欲墜。(有人覺得打球應該帶隱形眼鏡才對,也比較安全,沒錯!但是我就是不敢戴隱形眼鏡呀!)

我去卡爾登眼鏡行時,本來是想先換個鼻墊而已,買不買眼鏡先逛逛再說。當時店裡生意很好,老闆正忙著熱情招呼先進來的客人們,我就在旁邊眼鏡架上一直試戴一直試戴,幾乎整面牆的鏡框都被我戴過一輪了,我對aGape這一區的眼鏡特別有好感,因為是膠框的又很有彈性、又蠻輕的,頗符合我的要求,只是不知道價位如何。後來客人一個個滿意的離開、老闆終於忙完了,也快到了打烊的時間,原本想說換個鼻墊隔天再來的,想不到老闆還是犧牲休息的時間,半關起門來要做我們最後一攤的生意。

老闆仔細的聽了我的需求後,就先叫我去驗光。驗光過程就不多說了,總之比我還要龜毛,後來結果出來是度數和前一副眼鏡是一樣的,沒有再加深(其實已經是深到近乎半瞎的狀態了)。我拿了一副蠻中意的框給老闆,老闆知道我這近視程度一戴那種沒度數的眼鏡,根本看不到鏡子裡的自己戴起來是如何,還硬是要我戴上日拋的隱形眼鏡才看得清楚(大推他不急不躁、細心的服務態度!)。老闆又從抽屜裡取出三四副類似的給我選,後來就選了深棕色、裡頭是乳白色的這副(如上圖)。

這副鏡框是一種很特別的「記憶膠框」材質,可以凹來折去都不會斷,又是沒有鼻墊的設計,剛好都符合我打球使用的需求(雖然老闆說這打球才戴太浪費了,平常戴也是很好看的)。不過當我看到裡頭寫著「MADE IN KOREA」時,眉頭不由得皺了一下,我也是很愛國的阿!韓貨能不買就不買的。老闆看了我的表情,彷彿也知道案情並不單純,解釋著說「我們也很討厭韓國阿!不過沒辦法,這種記憶膠框的材質是他們的專利,只有他們才做得出來!」好吧!為了生活我可以忍,就像當年剛有17吋LCD上市時,我花了兩萬四大洋買了一台SAMSUNG 173P電腦螢幕(PVA超廣角面板),用到現在卻怎麼用都用不壞一樣,韓國人討厭歸討厭,很多產品的確有他的獨到之處,這我是很可以理解的(重點是這個鏡框其實也不貴)。

接下來就是選擇鏡片等級,從小就深度近視的我早就知道我這度數大概的行情,都不太便宜(由於曲折率的關係一定要做超薄多層膜,反過來說若老闆報低於2K的鏡片那一定是爛貨)。老闆非常仔細的解說每一個技術的差異,玻璃或安全、球面或非球面,有奈米鍍膜或沒有,鏡片也有從頂級的ZEISS(蔡司)、KODAK(柯達)、SIEKO、Fuji、PENTAX等品牌,到中階的HOYA、NIKON、Polarized(寶麗來)等品牌,抑或是自有品牌(就是白牌)的各種價位讓我自己依個人預算考量做選擇,基於預算的考量加上老闆阿莎力的再殺個價給我,最後我選擇的是Polarized(寶麗來)的「非」奈米鍍膜鏡片(有奈米鍍膜實在是爆預算太大了呀!)

所以我最後是配了比較普通的框加上比較好的品牌鏡片,總價竟然和我前一副Levi's眼鏡差不多(前一副是比較好的品牌鏡框加上比較普通的鏡片)!而我前一副是在台北的「萬代明眼鏡行」配的,那是我當兵認識的好朋友的老爸開的,也是一家好店來的。兩副度數一樣,可以交替戴不太需要適應,這樣輪流著戴應該也會比較耐用吧!


原來的Levi's 眼鏡

最後來張mobile01最愛的「疊疊樂」照吧!XD

疊疊樂是一定要的!(這角度可以看得出我鏡片度數有多深了)

如果眼鏡行都能盡量不黑心,不浪費錢打廣告,改以完善的服務態度和合理的價位,用口碑來創造商機,那我也會絕不吝嗇的免費幫他們宣傳一下的!

大家若有配眼鏡、免費眼鏡維修、免費驗光、或買隱形眼鏡藥水的需求,不妨來這兩家逛逛阿:
  • 卡爾登眼鏡行
    地址:桃園縣桃鶯路78號
    電話:03-3755380
  • 萬代明眼鏡行
    地址:台北市大同區民生西路174號
    電話:02-2559-5539 

2010年7月7日 星期三

eSENSE J985多介面SATA&IDE轉USB快捷線使用心得


今晚陪學長去買外接硬碟,去NOVA和順發晃一晃,我順便想買一條IDE轉USB的轉接線,因為剛好有幾顆剛汰換下來的舊IDE硬碟,想說接個轉接線就可以變成外接硬碟,就可以繼續利用了,然而「物盡其用、童叟無欺」又是我做人的宗旨,於是乎就開始在NOVA裡尋尋覓覓。

這種轉接線,看來看去只有伽利略eSENSE這兩家最多,他們兩家各推出三四個產品,每種盒子都長的不太一樣,我拿起來比對了很久,實在搞不懂那些細微的差異,也不需要OTB(單鍵備份)的功能,所以就買最便宜的一款,eSENSE橘色包裝的J985,順發含稅價499元整。

內容物如上圖,共有:
  1. J985轉接線主體
  2. 電源線+變壓器
  3. SATA電源延長線
  4. 3.5”硬碟矽膠保護套
  5. 說明書一張
他的特色是:
  1. 支援Windows 7
  2. 可同時連接2種裝置
  3. 穩定的2.5安培供電
  4. 「號稱」SATA硬碟相容性高
  5. 上網登錄,兩年保固 (另一家伽利略的保固就不知道怎麼樣了......)


買回家後上網研究了一番,才發現這種「SATA/IDE轉USB的快捷線」不是隨便買買就好了,隨便買買很容易就踩到地雷了,某幾款型號會有「複製成功但檔案比對錯誤的情形」,讀取時某些錯誤的地方會差兩個byte,這可是很可怕的事情!(這也讓網友給揪了出來,網友真的是太強大了!)在PCDVD這個討論串有很激烈的討論,伽利略eSENSE這兩家都無一倖免、災情不斷,因為他們都是採用JMicron的晶片。那討論串搞到最後連JMicron都派人跑上來回文滅火了,賣產品系統商的不理不睬,chip商卻跑上來回End-user的鄉民文章,實在是很搞笑!更搞笑的是問題根本不是出在chip,而是系統工廠的Lay-out多上了一個不必要的電阻所以會造成PATA硬碟讀取檔案時造成錯誤,然後就有神人自行拆機解銲R15電阻(4.72K 歐姆)然後經過實驗後回報狀況果然回復正常!買個產品想要正常使用,還要自己解銲電阻,學習焊槍和吸錫的技巧,實在是太寓教於樂了阿!XD


而我終於爬完那21頁的文章後,第一件事馬上裝起來過電,傳個大檔測試比對一下。(雖然覺得我買的是最新的型號,廠商應該已經解決了這問題了,但總還是不夠放心...)我傳輸了個DVD-9 ISO檔單檔總共8GB多,然後也是用DOS下的FC指令比對檔案,指令大約如下:

C:\>fc /b c:\data\xxx.iso d:\dvd\xxx.iso

比對後報告是找不到差異,總算放下心了。


我用的是四年前買的IDE硬碟Seagate的梭魚10代(7200.10) 320GB,原本讀寫大約是60 MB/s的能耐,經過了USB2.0的封印過後變成了31 MB/s左右,整整砍了一半阿!不過這也是USB2.0的極限了吧,反正堪用就好,也只是偶爾備份一下而已,並不會拿來當作主力。
(還有,他是可以接光碟機和燒錄機沒錯,拿來讀取片子是沒問題,但是請不要挑戰他的穩定度,拿他轉接燒錄機來燒片子,除非你毫不在意燒出來的品質...)

最後發表一下個人淺見,這種東西價差可以從400到800多都有,但不是越貴越好,反而是越單純越好,因為他裡面的核心晶片是一樣的,貴是貴在外殼設計、讀取燈號設計、單鍵備份、什麼Turbo加速等等這些有的沒的功能,然而這些對於讀寫穩定是沒有實際幫助的,對於速度更是毫無提升,所以還是選最新的型號買,最便宜的買就好了。在此分享這些資訊給有需要的朋友。

2010年7月5日 星期一

LAMY Safari白色鋼筆


上週朋友冷不防送我一支筆,說是預先當做我的生日禮物,哈哈!所謂送禮送到心坎裡就是這意思吧!打開一看,是全白的鋼筆耶,還是Made in Germany耶!真是不好意思讓他破費,不過我真的很喜歡阿!裝了墨水後就在列印紙的背面塗鴉了好久......。

話說回來,我已經記不得上回用鋼筆寫字是什麼年代的事兒了,好像是國中某次段考名列前茅,老爸買了一支白金牌的鋼筆送我吧!不過便宜的鋼筆很挑紙,還有容易暈墨、出墨不順、粗細難以掌握等等缺點,有時筆尖漏出墨水,不但蘸了滿手,也弄髒了紙本。所以當時也不是特愛用鋼筆,總覺得滑不溜丟的鋼珠筆才寫得順手。


自從有了電腦之後,也不知多久沒有提筆寫作了。我回想起小時後「爬格子」的時光。小學二三年級時的作文,常被老師要求投稿到「國語日報」,於是我就得利用課後,乖乖的取出600字的綠色稿紙,一字一字的把作文簿上的句子給謄在稿紙上。

依我當時的字量,每次大概都得爬滿三張稿紙左右,寫到後頭,右手非常的酸痛,頭也抬得累了,有時索性就伏在案上以左手當枕趴著繼續寫,被老媽發現後,免不了一陣痛罵,我想我的視力在當時就開始變壞了吧!這個「謄稿」的畫面深深烙在我的童年印象中,我家的櫃子裡好像還有一本老媽收集的剪貼簿,裡頭貼著我國語日報刊登上的十來篇文章。


這支LAMY鋼筆蠻好握的,連續書寫也不太會酸,但是他的筆尖感覺硬度很夠,大概是德國人的個性都比較剛毅吧!我在PChome購物有看到LAMY的專區,觀察一下這支應該是最經典的「safari」款,真的是很耐看阿!連mobile01都說LAMY是設計師的筆,不過我曾經嘗試拿這支筆寫幾行code畫幾個架構圖在紙上,還是一點靈感也沒有,大概這個設計師不包括「程式設計師」吧?看來工欲善其事,利其器也不見得管用,還是先有顆好腦袋比較要緊。



在此拿這筆和這友人先前送我的逸品「文友樓詩草」合個影,這本詩集是他老爸寫的,裡頭收錄的詩非常的酷,難以形容的絕妙,不過這本書不知道哪裡買的到就是了,所以大家可能也無此眼福一窺其風貌。希望我用了這支筆將來也能「妙筆生花」,文思有如泉湧阿!

2010年7月2日 星期五

[Chrome]擴充套件個人Top20精選

我所安裝的精選套件

個人身為Google的信徒,當然從Google Chrome瀏覽器一推出時就使用他至今了,而他本身的表現也確實夠優異。其中最令人稱道的就是目前無可匹敵、比閃電還快的瀏覽速度(尤其是內含javascript的網頁),對於現今一個比一肥大的網頁,他的瀏覽效能改善是顯而易見的。

以現今瀏覽器的市佔率來說,排名第一的IE他的爛是有目共睹、罄竹難書,就別提了(只有在登入網路ATM或網路銀行時需要ActiveX時才會逼不得已使用他),排名第二的FireFox仍然是客製化的極品,豐富的Add-Ons為其最大特色。再來就是Chrome了,他的市佔率已經悄悄的幹掉蘋果的Safari了,我相信Chrome的市佔率一定會慢慢急起直追直逼FireFox的。

自從Chrome也支持了「擴充套件」之後,官方和非官方的套件一一出爐,雖然數量和品質還無法撼動「附加元件」王者--FireFox的地位,但是也足夠我絕大部分的需求了(幾乎FireFox好用的套件也都有出Chrome版的了)。接下來推薦一下我個人偏愛的Chrome擴充套件精選,我大略分為三類:「非裝不可」類、「見仁見智」類和「可有可無」類。


  • 非裝不可類:
  1. AdBlock:有效的把一些網頁上討人厭的廣告給消失,除非你超愛看垃圾廣告,否則必裝無疑!
  2. Mouse Stroke:滑鼠手勢+拖放手勢,超級超級推薦安裝的套件!沒有用他我上網簡直跟殘廢沒兩樣!Chrome有很多滑鼠手勢的套件,例如Smooth GesturesChrome Gestures,但這比較少人推薦的Mouse Stroke反而深得我心,除了可自訂各式各樣的滑鼠手勢外,我最喜歡「反白字串後再拖曳即可另開分頁並將該字串以Google搜尋」(簡單來說就是Drag-To-Go)這功能,Chrome內建只能「反白字串後按右鍵選擇『在Google上搜尋...』」已經算很貼心的設計了,不過直接拖曳放開還是更好用又更直覺。這套件的「選項」有非常多的設定,值得你好好的玩味一下,在此就不多說了。
  3. IE Tab:將目前分頁改成用IE核心來開,裝了這個就可以徹底跟IE說掰掰了,例如我開頭所說的很多銀行網頁用Chrome開啟後卻跟你說他是「IE Only」的,就可以點選這個icon把這網頁變成用IE開啟,還可以將這頁存在書籤裡,以後進這網址自動會以IE開啟。
  4. Google 文件 PDF/PowerPoint 檢視器:其實Chrome就有內建pdf瀏覽器了,這擴充套件就是解除這個封印的利器,你再也不必裝拖慢系統的Adobe Reader了,裝了這個後連結是pdf或ppt的就會自動以Google文件來開啟瀏覽。
  5. RSS 訂閱擴充功能:有像我一樣在用「Google閱讀器」或其他線上RSS Reader的人必備,就是若是逛到可以用RSS訂閱的部落格或一些網站時,網址列尾會多個橘色的RSS icon,一鍵點選後就可以輕鬆訂閱。
  • 見仁見智類:
  1. Google Mail Checker:檢查Gmail的通知器,當有未讀的新郵件時會顯示數目。如果你得了三不五時就想開Gmail看有沒有人寄情書給你的強迫症+妄想症,裝這個準沒錯。如果你需要直接預覽新信件的大綱甚至直接回信,你可以裝威力加強版─「Google Mail Checker Plus」。
  2. Facebook Photo Zoom:這也是我極力推薦的,裝了之後逛臉書,滑鼠移到每張圖都會pop出大圖,省去了層層點進去才能看大圖的麻煩,超神奇的臉書閱覽體驗,只可意會,難以形容!
  3. Facebook for Google Chrome:檢查Facebook的通知器,等同於Facebook首頁左上方那三個圖示,有新的通知就會顯示數目,還可以點選後直接瀏覽不需要開Facebook網頁。如果你得了不馬上看新訊息就會死的病,裝這個包準藥到病除,讓好友們嘖嘖驚嘆你的回覆速度。
  4. Auto HD for YouTube:在逛Youtube時會自動選擇最高畫質的影片播出,有多高選多高,適合電腦夠快加上網路夠快的使用者,輕鬆享受高畫質的Youtube。
  5. Bubble Translate:氣泡式翻譯,按住Ctrl同時反白選擇你想翻譯的字句或單字,就會跳出氣泡式的翻譯結果,還蠻實用的。(至於整個網頁全文的翻譯,不必裝套件在最新的Chrome已經內建了,請安裝最新版本的Chrome逛非中文的網頁即可發現!)
  6. AutoPager Chrome:自動翻頁工具,在有多個分頁的網頁(例如Google的搜尋結果)會在網頁往下捲時自動幫你展開在同一頁(類似Facebook瀏覽時的效果),省去一頁一頁按的麻煩。極度適合常在逛論壇的使用者(例如mobile01或各種千奇百怪的論壇、相簿)。
  7. 投影片:將您最愛的相片網站 (例如 Flickr、Picasa、Facebook 和 Google 圖片搜尋) 變成Slideshow方式的投影片瀏覽。我知道很多人最愛的相片網站不是上述那些,而是無名、痞客邦等等有正妹相簿的,沒錯,我聽到你內心的渴望了,我找到熱心的強者加了這些相簿網站,不過作者因為著作權因素沒有放到Google那邊,請連到作者網頁,安裝這個「投影片台灣威力加強版套件」,相信你會賞圖賞得很愉快。
  8. 網頁快照:把整個網頁(包括螢幕看不到的部分)快速和簡單地儲存一張JPG圖檔。如果你嫌他的功能太陽春的話,可以試試看對岸高手寫的「截圖快手」,還可以在上面畫重點加眉批後再存成圖檔,更加方便些。
  9. Session Manager:你有像我一樣想把很多個分頁存成某個紀錄的需求嗎?可以很輕鬆的把你Chrome目前所開的的分頁存成一個「Session」(還可以為他命名),之後可以點擊他,一次打開所有分頁,輕輕一點就回覆原來的樣子。
  10. Mini Google Maps:Google地圖迷你套件,適合懶得開新網頁查地圖的人,可以直接在氣泡式的視窗上查找地圖,而不用真的切換到Google地圖網頁,不會影響目前正瀏覽的網頁。
  • 可有可無類:
  1. Tab Sync:同步化分頁,有點像上面的Session Manager但實際用處不同,這套件化自動備份你目前開的所有分頁(偷用Chrome同步化書籤的功能,所以Chrome同步化要打開),讓你可以在甲地A機器用Chrome可以用這套件儲存開啟卻還沒看完的分頁,到乙地B機器Restore回來後繼續瀏覽這樣,適合Chrome重度成癮使用者。
  2. Google Account Switcher:可以快速切換Google帳號的套件,支援Google搜尋、Gmai、Picasa等等網頁,需要事先在「選項」裡設定每個Google帳號和密碼,之後在上述網頁的右上角就會出現下拉式選單,可以迅速切換了。適合家裡多人搶用一台電腦,人人都有Google帳號的使用者。
  3. SearchPreview for Google:可在Google的搜尋結果內出現網頁的預覽圖片,避免不小心點進去掛羊頭賣狗肉的網頁。
  4. Search Box:讓Chrome網址列不只可以用Google搜尋,還可以其他搜尋引擎搜尋,適合有在用其他搜尋引擎的使用者,可以很方便的做切換。
  5. Beauty Clock:這......相信大家都聽過「美人時計」吧,這套件一次網羅了好幾個國家的美人時計,還請看官們慢慢享用,安裝後各自體會箇中奧妙。
最後容我稍微提醒一下,這些擴充套件可不是多多益善、裝越多越好阿!如同FireFox一樣,裝越多套件就會變得越吃系統資源,執行也會拖得越慢,所以只要裝「一定會用到」其功能的套件就好,沒在用的套件就沒必要安裝,以使用方便順手的前提下,擴充套件是裝越少越好的!不過Chrome的每個擴充套件都是以各自獨立的Process在運行的,這點還蠻值得嘉許的(可以減少當機Crash的機率),也可以隨時停用和移除,所以大家還是可以大膽的安裝各種套件試用看看,不爽再移除就好了。


大致上就是這樣啦,精選20個已經算太多了(我推薦的優先順位也是從第1個到第20個依序排下來的)。如果大家有發現更好用更棒的的Chrome擴充套件,還請留言分享給我呀!

2010年7月1日 星期四

有關C語言的static用法

由於工作的關係使用的是C語言,而static的關鍵字我卻常以JAVA的角度來理解而造成誤解,經過trace大量的code和翻查一些書後,我總算搞懂static在C語言中的用法了。原來他是依修飾的對象不同而有不同的功能,大致上就分為兩種,簡單筆記如下,以免以後自己又忘了:


1. 使用在全域變數或全域函式 (Global variable & Global function)
讓該變數(或該函式)的可視範圍只侷限在該檔案內,其他的 .c檔看不到此變數(或函式)的存在。
既使其他檔案用extern宣告也看不到!套句行話來說,他把Global的變數或函數變成了「internal linkage」,當Linker在找symbol時是會忽略它的。
(在C++中也相容這種用法,不過被視為比較不建議的舊的用法,C++比較建議使用unnamed namespace。)

使用時機:當此全域變數(或全域函式)不想被其他檔案引用和修改時,或者不同檔案可以使用相同名字的全域變數(或全域函式)而不會產生命名衝突。

2. 使用在函式內的區域變數 (Local variable)
因為區域變數預設就是動態變數,而在區域變數前加上static修飾字則會將變數由動態(dynamic)變數轉為靜態(static)變數,靜態變數的壽命(lifetime)與動態變數不同,靜態變數會一直存在,直到程式結束為止。

使用時機:這種很適合用來做統計次數的功能(某函式被呼叫幾次),例如以下的代碼...


void count();
int main()
{
int i;
for (i = 1; i <= 10; i++)
count();
return 0;
}
void count()
{
static cnt = 0;
cnt++;
printf(" It have been called %d",cnt,"times\n");
}

其執行結果就會是:
It have been called 1 times.
It have been called 2 times.
It have been called 3 times.




做個總結,static的用法整理如下表:

修飾對象   使用在...    Linkage    Scope
---------------------------------
變數     函式裡       internal    Block
變數     函式外       internal    File
變數     成員        external     Class    (for C++)
函式     global       internal     File
函式     成員        external     Class    (for C++)


static感覺是很簡單的東西,解釋起來卻這麼複雜,也難怪我花了這麼久的時間才把他搞懂了...如果高手看到這篇還有我觀念錯誤的地方,還請不吝指教阿 ^^|||

PS:又有同學舉一反三的問我:那C語言中的static和const還有volatile在用法上各有什麼差異?這問題實在是問的太好了,請這位童鞋自己去找答案後再告訴我吧!C我也不熟阿!

寫在參加309反核遊行之前

圖片出自:日本藝術家 奈良美智(Yoshitomo Nara) 的經典反核作品 一開始,先來聽首好聽的【 棉花糖 katncandix2 - 深黑的河 】 吧! 我一直以來都犯個毛病,就是有時會過於理性,相信「證據會說話」,換句話說就是愛當「認真魔人」,...