買電腦要注意的事項

呢排有幾個friends 都想買電腦,不如係到分享下我的少少心得:
買電腦第一件事,就係要決定你買部電腦番來係做乜野的。
呢一樣野正正就係好多人成日話部電腦慢的其中一個原因,
原本你諗住買部機只是做普通文書,上下網咁,但原來其實你買左部機番來係用來打機,剪片,咁你就話部機慢,
我覺得咁講係對部機唔公平,情況就好似買經濟客位飛機票要有頭等服務一樣。
因為e+ d 電腦已經好快,只要唔係用來打機,剪片,買部low end d 都冇問題,只是不要在打機和剪片時話部機慢即可(low end機係咁lor wor)。
 
跟住介紹下d component la,但呢一樣野同個人經歷有d 關係,所以冇絕對的好唔好: 
  1. 底板(Motherbroad):首推ASUS(華碩),但價錢比較貴,佢都有平價version,就係ASROCK(華擎) 呢個牌子la,但我未用過唔知點樣。
    個人比較鐘意用GigaByte(技嘉)因為佢比華碩平,但表現不錯,可是我從不超頻,所以呢方便我唔知點樣。講完好,就講下痛苦回憶;
    首推MSI(微星),沙士果時我幫人整機,裝window xp,裝左成晚upgrade 埋bios 都唔係好穩定,其次是輝煌(Magic Pro),當年我用佢地底板和
    display card,用用下發覺有問題攞去換,點知換完用左無幾耐又有問題,再換之後,唯有襯佢未有問題就即刻賣左。
  2. 硬碟(hard disk):曾經有個sale 話我聽hard disk一輪輪的,有一排ibm 有幾隻成日死,有一排seagate 有幾隻成日死,所以有d"撞手神",個人唔係太
    鐘意MAXTOR 和Western Digital,多多少少和痛苦回憶有點關係。如果隻hard disk 係用來做bt或server最好買企業版la。
  3. 火牛(power supply):呢樣野就更加和痛苦回憶有直接關係,因為唔同sale有唔同喜好,真係唔知邊隻好,我屋企用開GTR 同埋Antec,都好ok,咁其他牌
    子我就唔清楚la。
  4. 顯示咭(display card):如果部機只是用做下文書,上下網咁就可以在揀底板時搵塊有埋display 的,咁就可以慳番幾百蚊。如果是用來打機和剪片的話,
    咁就要睇budget 買la,因為價錢由幾百到幾千都有。
  5. 處理器(CPU):至於CPU其實Intel 和AMD都沒有問題(用來做server 另計),由於AMD收購了ATI,所以如果諗住用AMD CPU咁最好用番ATI的display card.
  6. 記憶體(RAM):Kingston 和Cosair都用過,暫時都冇問題,RAMBO就試過要去換,但唔記得換完之後有冇問題,好多時我都係聽sale 介紹果d。

  最後,我suggest 各位比多$150叫埋間舖頭砌埋,因為呢$150係包埋保養的。 

Web MSN

閒來無事,做了個web 版msn.
program 是由今年 3月開始寫的,講真我沒有那麼厲害由零開始,我是從網上download 個lib. 回來,然後,我只是做user interface 而已,情況好似我想食炒菜,唔通我要去種菜咩,緊係落街買條菜番來炒la;當然我可以直接去餐廳食都得,但自己煮過癮d(如果自己識煮,又有mood的話).

寫program 同煮野一樣咁繁複,同樣要由好細的component 做起,然後將呢d component 連埋佢。

做這些 component最費心神,因為要處理太多細微東西,但做好這些component之後program就好寫好多。係今年6月的時候曾經因為microsoft 果邊轉過野,搞到個lib. 唔work 而停過一輪,後來8月個lib.出左新version 解決左個問題,又繼續"開工",我的web msn現在已經是第二version la,我將個web site放係個台灣programming forum,估不到每日都有一兩個"台灣客"來用wor,最勁同一時有16個user一齊用;還有由第一版upgrade上第二版時,真係有人係個forum投訴,真過癮!!!

最緊要阿kin,高基都幫手做白老鼠,重提供好多有用的suggestion,多謝!!!

電腦網絡與7層塔城

自從出來做野之後,身旁的同事似乎對電腦網絡的OSI 7 layer model不太熟識,講真,如果唔係讀hi. dip臨考畢業試時,阿sir summarize比我聽,我都不太清楚,
現在我嘗試解釋下 呢7個layer 係做乜ka la。

Overview:

其實呢個model係一個reference model 的,目的比d 設計網絡protocol(通訊協定) 的人做reference的,所以不是一個每一個protocol都跟隨這個reference model設計出來的,至少INTERNET 用的TCP/IP都不是隨這個reference model設計出來的。要使資料能夠在電腦之間準確地傳送,我們需要一套共同語言來控制資料傳送,而這一套共同語言就是所謂PROTOCOL(通訊協定)了。

Layer 1(Physical layer):

我地以電話系統為比喻,首先要決定用乜野線將兩個電話駁埋,然後,將兩個電話駁通。

Layer 2(Data link layer):

e+個多左一部電話,total 3部電話,我們要考慮的有兩樣野:
1)開始要比每一部電話一個no.(學名叫addressing),
2)要design 一個mechanism 去防止有人霸住線

Layer 3(Network layer):

e+電話再多了好多,要將電話分區,所以打電話時要打地區號碼,使local機樓懂得如何將我地個電話駁去目的地.(學名叫routing),。

Layer 4(Transport layer):

搵到路之後就駁通遠方的機樓,進行同步之後,再經過遠方的機樓駁通遠方的電話。

Layer 5(Session layer):

好了,有橋有路,任何application program 都可以經network 傳送data到遠方的電腦了,但application program 本身都要控制資料傳送,
好似打通電話之後,你同都要同對方合作,否則,就會出現"你講佢又講"的情況。

Layer 6(Presentation layer):

好了,可以傾到電話了,如果大家都要講同一語言先可以溝通到,用電腦話來講即係要用一個encoding,如果唔係就好似有時去大陸web site咁,出現亂碼。

Layer 7(Application layer):

呢一個就係我地用的application program 如MSN,online game 等

我對寫web 程式的體會

我寫web 程式已經有9年經驗,想寫下我的體會,最初時係用asp,php之類,即係所有野都放晒入個page到果隻,亦係所謂model 1,因為web 的版面成日會轉,咁做既話當轉版面時,無可避免地對程式碼(code)做成影响,而且除非預先設計得好,
否則程式碼比較難reuse。

所以,有人提出model 2/mvc model(Microsoft 叫呢個做code behind) 的方案,就係將business logic 包裝成object,然後係object係裡面提供適當interface,咁係page裡面就call 呢d object interface 即可,這樣做可以做到版面同程式碼分開,咁樣是但一邊有改動時,對另外一邊冇影响,容易做maintenance,由於business logic 已經包裝成object,reuse程式碼就好容易做到la。

已往多數的web 程式背後都係database 來store data,但e+儲data 的方法有好多種(e.g. rss,xml,flat file),
所以有dao(data access object,唔係vb6用果個)出現,DAO就係在application 同Persistance layer 中間既一個layer,令到上層的business logic 唔需要知道下面係用乜野來儲data,只需要同dao 講要乜野data or 要儲data 乜野即可,咁樣做就可以使business logic 同persistance layer 分開;已往要做咁樣一定要用ejb,e+多左好多選擇如hibernate,ibatis,spring….

呢排我玩緊ajax 和json(咁遲先玩,我舊同事幾年前開始玩la),已往web 程式都是click submit button then wait for refresh screen,咁ajax 其實都submit data 去server只是佢唔會refresh screen啫,要係唔refresh screen情況下改動畫面內容,只有javascript做得到,但server response 回來的data 要乜野format javascript 才好容易處理到le,早期只有將data format 成xml javascript 才能"食"得到,可是javascript在處理xml 時要用for loop逐個data loop 出來 ,所以d人覺得咁做冇効率,咁制定javascript standard 既ECMA就define 一個format出來,只需要用eval 呢個function 就可以將啱format 左data 變成javascript object la,咁就可以用array 形式去access data la,而呢個format 就叫JSON(JavaScript Object Notation).