2008年12月30日

台南永康正金宮回信

感謝「台南永康正金宮」的意見與指教。

回信內容如下:
=====================================
阿呆站長您好:

由於您一篇文章涉及到對本宮的傷害
http://ycfunet.blogspot.com/2008/01/blog-post.html

故本宮上下決議將對您提出法律程序上的訴訟

先來此函跟您知會一聲,也希望您能將您的個人資料回信過來
以便我們查察

因為若閣下不願意提供資料
我們必須在經由律師調請台北市刑九隊網路犯罪小組
再經過您所屬的Blogger網站調閱您的個人ip位址
這樣的稽查費用往返就要台幣6千多元

由於全案一但是閣下敗訴
我們告發人這裡的所有訴訟費用以及律師費用
都將由閣下來支付
也相信您不希望多出這麼多麻煩吧!

之後不過一個月
您將會收到本宮所發出的法院存證信函
或許您對於本宮及預言網存有很多誤解
但您所說的很多都不是事實
所以我們必須在法院上對您澄清
也希望您能配合後方司法的調查
非常感謝

小弟 金源
=====================================

首先,金源兄您好,自稱小弟實在太折煞我了。
我的blog如此之小都還可以被您找到,真的讓我萬分榮幸,讓我知道原來我的東西還有人在看,而且是本人,讓我看了真的非常感動。

如果您對本站blog的文章有疑慮,通知一聲我刪掉就算了,反正也不是第一次,之前有人反應我對SSD的描述有問題,我看了自知了解不足直接就刪了。

但是您直接寄了這樣一封信給我,信件內容我看得莫名其妙,既像是不滿要我拿掉,又像是要告我,也像是勒索我,還像是要詐騙我,我真的看的一頭霧水。

是不滿要我拿掉,整封信都沒提到要我拿掉?
是要告我,卻問我個人資料?
是要勒索我或詐騙我,又沒提到要多少和解金?

最後,我沒聽過刑九隊,只聽過偵九隊,我也從來不知道他們會隨意透漏個人資料給別人,況且文章中既沒有商業行為,也沒有任何不法勾當,更沒有張貼情色文章,相信管犯罪的「刑事警察局」不會沒事無聊來找我。
您提到的應該是屬於民事管轄的範圍,民事訴訟不至於要透過刑事警察來處理。

此外,我提的內容,都是您網站上自己打的,沒有多加字、也沒有少加字,其他僅是個人意見,硬要說的話,頂多侵犯個人著作,我道歉~主動拿掉~這我前面提到了,我是很樂意的!(您不也把奇摩新聞網整個網頁抓圖貼在你網站,人家最下面還註明,版權所有屬Yahoo!奇摩哩!)

最後的最後,我是個窮學生,你知道窮學生的特色是啥嗎?
1. 沒錢~我一天花費不過150,吃住在學校,死宅男一個~跟我要錢,我還希望你施捨我一點香油錢讓我生活勒!神?肚子都快餓死了~神也要救濟我阿!
2. 時間多~同樣的,身為死宅男的我,平常沒啥娛樂,不是上網看新聞、上ptt看八卦就是看日劇或台劇,你喜歡一直花錢請律師,就為了跟我耗時間,我實在也不能說什麼~
3. 到處找人求救~居士您是著名宮廟的廟主,我相信您是公平正義的化生,代表的是鏟奸除惡的神明,並不會有任何詐騙、逃漏稅、詐財、勒索的行為。如果真的有,那麼可能就是所謂的神棍,我相信刑事警察會更喜歡這樣的人

目前我的決定是,正如前面提到的,還有您以匿名方式在文章中回應的,我基於尊重您網站上的著作,畢竟那都是你寫的,原作者有意見,要求一個月內刪除,我會將該篇文章刪除,但是會照您的要求,在一個月刪掉。
不過我會把這篇永久保留,畢竟這也算是特殊的回憶阿~

2008年12月14日

免費Floppy Image軟體

現在時間都快2009年了,從我很小時候玩286時候,就已經有軟碟機(1.2MB大片、1.44MB小片)了,甚至更小時候玩Apple II時,大片的磁碟片、磁碟機(當時還不是1.2MB)就已經在用了,然而到了現在,有時候還是需要軟碟片、軟碟映像檔來開機。

在Floppy Image的工具中,名氣最響亮的就是WinImage了,可惜的是,它要花錢使用,當然,如果是偶爾需要,下載試用版用下還是很方便的。
那除了WinImage外,有沒有免費的方案呢?
我找了許久之後,找到了「Virtual Floppy Drive」,我認為這應該是免費中相當不錯的軟體了。

Virtual Floppy Drive的核心使用的是VMWare的API,透過它,我們就能夠建立、讀取、寫入映像檔,而它就是一個呼叫VMWare API的介面程式。

它的使用非常簡單,下載後,全部解壓縮到C:\VFD,然後點選vfdwin.exe並執行。
透過vfdwin.exe,我們可以建立出虛擬的A:、B:,然後透過介面將image掛載到A:、B:上,此外,它也提供格式化功能,可以方便快速的將image格式化。
除了一般的功能之外,它也提供了2.88MB的軟碟Image格式,讓我們建立出這種較特殊的Floppy Image。
這個程式可以說簡單、方便、好用。

除了Virtual Floppy Drive之外,另一個可以搭配的好用工具是Floppy Image
Floppy Image可以讓我們方便的把上面建立好的image檔案,透過它輕鬆轉換成.exe執行檔,以後要使用,只要直接執行該檔案,就會提示插入磁碟,並且將Image寫入軟碟片,如此一來,就不用擔心別的電腦上沒有Floppy Image的軟體了。
Floppy Image現在是商業軟體,不過既然這邊提出來,自然有好康。
Floppy Image在1.5.2版之前都是freeware,可以免費使用,不過公司網站已經不提供下載了,雖然如此,我們還是可以利用偉大的google大神幫我們找到它。
Last Freeware Version提供了許多免費版變商業版的最後一版免費軟體,其中這裡就有提供Floppy Image 1.5.2的下載

如果有在使用VMWare、VirtualBox...等VM軟體,或者系統要重灌,又或者要自製開機光碟、開機軟碟、開機USB,需要建立開機片或操作Floppy Image,上述2個軟體絕對有幫助。

2008年11月30日

EeePC新拍檔(EeePC專用轉換器)

我的EeePC就不在多做解釋了,之前提過了。

有EeePC的人不知道有沒有個困擾,就是它的變壓器沒辦法和一般NB共用,因此EeePC通常都會另外帶一顆小小看起來很可愛的變壓器,不可否認,這顆變壓器真的很小、很可愛,攜帶起來比一般NB變壓器要輕便很多,但是還是很不方便。

EeePC儘管優點很多,但是他的變壓器,和一般NB是沒辦法相容的,主要原因就是變壓器的供電電壓,一般NB的電壓是19V,而EeePC的則是12V,既然電壓不同,我們能不能做個小變壓器,讓他的電壓相同呢?

還記得之前做過電池轉5V的ARM開發板用變壓器電路,也做過19V轉5V的ARM開發板用變壓器,它的元件並不多,同樣的元件,要把19V轉12V並不難,因此我在EeePC買來沒多久就想做一個,但可惜的是,一直沒時間弄它。
上週週末和這周週末,我特別把這個電路弄出來了。

下面我們就來看圖說故事,看看成品吧!
首先看看第一張,這張是成品,也是經過遮掩後看起來最正常的一張:
寄件者 EeePC變壓器電路


接著我們慢慢越來越深入的看它,首先看它輸入的部份,它輸入部份就是一個一般的DC插頭,基本上我用的是2.5mm的插頭,一般NB變壓器通常都能插入,像台製的變壓器還能更換,那更是沒問題,至於塑膠殼的孔,我是用美工刀割的,所以並不好看:
寄件者 EeePC變壓器電路


看完了輸入端,我們看看輸出端,輸出端則是用電鑽磨出來的小開口,讓電線能夠有個出口,同樣並不很好看,但相信已經比輸入端要好的多了:
寄件者 EeePC變壓器電路


接著我們把它打開,看看它的廬山真面目,首先看看電路板的正面,看得出來元件並不多,而且我並沒有做任何處理,我使用的是LM2576-ADJ,這顆變壓IC是目前最容易取得的Switching Power IC:
寄件者 EeePC變壓器電路


再來我們看看電路板的背面,我必須說,我的銲接技術從高職到現在,始終沒有太大的進步:
寄件者 EeePC變壓器電路


接著我們看看塑膠殼的底板,這裡有點玄機,因為我的銲接中,一些地方是直接用銲錫拉的,因此比較厚,溫度也高,造成了塑膠殼底板其實會稍微燒融掉,這其實滿危險的,畢竟誰知道啥時會走火呢?
因此我在底板貼上一層鐵佛龍膠帶,沒錯~就是被大家用來貼滑鼠的鐵佛龍膠帶,我最近剛買了一卷使用... :p
鐵佛龍膠帶除了很滑(摩擦係數很低)外,他其實也可以耐高溫(可耐200度C以下)、防水、絕緣(導電係數低),因此它其實很好用,可以用在陽台、電路板、室外...等各式場合,如果你四周圍有人買了鐵佛龍膠帶,卻只是用來貼滑鼠,強烈建議跟他要一卷放著,很快就會注意到他好用的地方了。
寄件者 EeePC變壓器電路


接著,來個醜陋大集合,電路板背面和塑膠殼打洞處的合照:
寄件者 EeePC變壓器電路


最後,讓我們看看實際運作時的樣子,這張照片我們實際的把NB用的變壓器接上它,然後將它接到EeePC,EeePC就會顯示目前正在充電中,除了系統的顯示外,也可以注意到電池的燈號,它顯示橘燈,並且持續亮著,表示電池充電中:
寄件者 EeePC變壓器電路


以上就是這次EeePC新拍檔的介紹,當然,不可免俗的,來列出它的成本吧。
LM2576-ADJ NT $20(不大確定,有點忘了,約NT20~25元)
線繞電感 NT $20(工型電感比較便宜,效果相同)
精密電阻 NT $1 x 2
SMD電容 NT $25(不大確定,有點忘了,約NT20多元)
日製電容 NT $18(不大確定,有點忘了,約NT15~25元)
塑膠盒 NT $40(不大確定,有點忘了,約NT40元)
DC IN接頭 NT $5(不大確定,有點忘了,約NT5元)
DC OUT線 NT $30

總成本約 NT $150左右,比買一顆EeePC專用變壓器便宜,而且因為我之前在玩ARM開發板的變壓器時,買了上面這些零件,所以這次實際上並沒有買很多元件,只有買DC OUT線、電阻,其他都是現成的,這對現在不景氣的環境來說,可以說是非常不錯的,一方面好玩、一方面實用、一方面也省錢,可以說一石三鳥。

電子零件細節:
LM2576-ADJ
用的穩壓IC是LM2576-ADJ,LM2576是switching power的穩壓IC,它的輸入電壓可以吃8V~40V,有固定輸出版本和可調整輸出的版本,-ADJ是可調整的版本,這顆的轉換效率大概80~85%左右。

線繞電感
根據LM2576的datasheet,使用100uH的電感,電感建議用線繞電感,網路上關於電感的建議是,線繞電感比較適合Power這類功率用途,而工型電感適合在通訊類用途,不過這最後要看買得到什麼......

精密電阻
因為是用可調式的LM2576,因此需要用電阻來控制輸出電壓,專業的說法叫做分壓,為了輸出電壓的穩定性,我們不希望輸出電壓的變化太大,所以我們希望電阻的誤差小一點,因此買精密電阻,精密電阻的誤差在1%,一般的則是10%。
輸出電壓的算法是(一樣,datasheet寫的):
R2 = R1 x ( ( 輸出電壓(這邊是12V) / 1.23 ) - 1 )
根據上述算法,我使用的電阻是:
1.37k
12k

電容
LM2576需要2顆電容,一顆在輸入端,一顆在輸出端,datasheet建議用鋁製電容。
不過我去光華商場,只有看到SMD電容看起來像是鋁製電容,價格也像鋁製電容,因此輸入端我就用SMD的電容。
輸出端我找不到鋁製的電容或SMD電容,所以我買比較高級的日製電容,反正奇摩拍賣上也有人在賣日製電容,給人換在顯示卡上,我想品質應該ok。
datasheet對電容的要求是:
1. 輸入端為 100uF,輸出端為 1000uF
2. 電容的電壓規定是,電容的電壓必須比電壓(輸入端看輸入電壓,輸出端看輸出電壓)大,建議大1.5倍,datasheet解釋,這是避免突波的發生。
我使用的是:
SMD電容 100uF 50V
日製電容 1000uF 25V

這樣的規格,輸入端上到40V應該都ok,輸出12V沒問題。

二極體(上面漏掉了)
二極體要求要用蕭特基二極體,電流要求能耐3A。
耐3A的原因是,LM2576的最大輸出電流是3A,因此要能耐3A。
用蕭特基的原因是,switching power因為切換速度很快,因此二極體反應要夠快,蕭特基二極體能夠符合需要。

塑膠盒
隨意即可,不裝也ok

DC IN接頭
NB電源插的上去即可。

DC OUT線
我去國際電子廣場,拿著EeePC的變壓器對店員問,它就給我線了.... = =

datasheet的網址:
http://datasheet.eeworld.com.cn/pdf/164979_MOTOROLA_LM2576-15.html

2008年11月24日

HPLIP掃描功能終於支援HP Color LaserJet CM1015

今年年初和年中,台灣HP的彩色雷射印表機都有優惠,因此我在年中就參加了。
優惠方案原則上就是用比較便宜的價格買彩色雷射印表機,不過要寫個心得報告。
便宜多少呢?以我買的HP CM1015來說,我當時砸了NT13000左右(真的是很用力的砸下去了,我的24' LCD因此飛走了),基本上便宜個NT4000元。

家裏的印表機目前都由File Server在管理,File Server是Linux(Debian),因此使用上就有很大的限制,目前上面接了3台印表機,分別是:
Epson Photo 790
HP PSC 1315
HP Color LaserJet CM1015

由於Epson的惡習,因此目前已經停用了,而自從CM1015來了之後,主軸就幾乎都放在它身上。

在這邊我不得不說,HP印表機、掃描器、事務機對Linux的支援真的「比較好」(尤其是事務機),儘管它的支援和Windows相比,大概是天和地的分別,但已經比其他廠牌要好得多,而比較少聽過的品牌,很多都沒辦法在Linux上使用。

HP印表機、掃描器、事務機在Linux上的支援,基本上是透過一個稱之為HPLIP的OpenSource專案(HP Linux Imaging and Printing (HPLIP)),它和HP的密切程度之高,我基本上認為它應該是HP公司在維護和開發的。
透過HPLIP,在Linux上我們能夠比較方便的設定印表機、掃描器、事務機,大致來說只需要執行:
hp-setup
一問一答之間,就完成設定了,而能用的功能就是能用,不能用的功能,大概也沒機會可以用到了,真的是很方便。

CM1015有2個型號,分別在於有沒有網路的功能,價格大約差NT3000元,而這台專案機,原則上沒的挑,就是沒有網路。
不過這對我不是問題,我也不希望它有網路,畢竟接上File Server後,透過網路就能夠列印、掃描,加上File Server上數據機的傳真功能,這3000元實在沒有花的必要。

從買來的第一天開始,我就在關注HPLIP對CM1015的支援性,我本來以為這台機器不新,加上HP對Linux的支援性,應該都ok了,沒想到我還是高估了。
HPLIP一直以來,對CM1015都只支援列印功能,不支援掃描,這讓我很不舒服,畢竟花了這麼多錢,還要靠PSC 1315來掃描,那CM1015上的掃描器只是好看而已嗎.... :(

終於~HPLIP在2.8.10將CM1015的掃描功能加入了,我剛剛試用了,的確可以正常工作,這讓人非常興奮,CM1015終於正式變成事務機了。

最後提一下目前關於家中掃描、列印、傳真的整個配置:
列印部份:
使用CUPS進行列印的處理,這問題不大,設定很常見,在Windows、Linux上都能順利工作,網路列印也ok。

掃描部份:
Linux上的掃描器主要靠SANE,SANE是一個非常老牌的Linux掃描器系統,因為掃描器的硬體混亂,因此SANE本身分成前端、後端:
SANE前端:
SANE前端提供一些SANE的掃描軟體呼叫,對掃描器進行操作,在Linux上問題不大,基本上直接用xsane即可,在Windows上比較麻煩,Windows要透過TWAIN介面,而目前在Windows上TWAIN和SANE的溝通,主要是SaneTwainXSANE,我個人認為,SaneTwain比較好用,而且順道一說,它目前的中文介面,是我幫忙翻譯的。
SANE前端要能夠讓Windows透過網路來溝通,必須要啟動saned這個daemon,只要run起來,就能夠讓其他SANE的掃描軟體透過網路和SANE前端溝通。

SANE後端:
SANE後端主要就是掃描器的驅動程式介面,各種掃描器驅動程式都可以透過SANE後端的介面,讓SANE可以支援,前面提到的HPLIP,它就是提供了SANE後端的介面,讓SANE後端可以連結HPLIP來對掃描器進行操作。

所以Linux的掃描功能,基本上只要SANE能夠搞定,一切都沒問題,要網路掃描,SANE也能做到,整體來說我是相當滿意的。

傳真部份:
我在Linux上的傳真,使用HylaFax這套傳真軟體,HylaFax分成Server和Client,File Server上安裝的自然就是HylaFax Server,而各個Client(包括Windows、Linux)都需要安裝HylaFax Client才能夠透過網路來傳真。
Linux上問題不大,GFax就支援HylaFax傳真,最慘下指令也能傳真,Windows上比較麻煩,我個人推薦Winprint HylaFAX,這套軟體能夠簡單的傳真,並且容易操作,缺點是,它無法取消傳真,也無法看目前收到的傳真。
為此,我的解決方案有2個:
1. 在File Server上另外建立一個資源分享,目錄指定到/var/spool/hylafax/recvq,這樣一來,透過網路芳鄰,就能夠簡單的瀏覽、刪除已收到的傳真。
2. 除了Winprint HylaFAX之外,另外搭配WHFC Windows HylaFAX client使用,這套軟體介面不好看,而且久久沒更新,但還算堪用。

有了上述的幾個部份互相搭配,只要在家裏,我可以透過有線網路、無線網路在任何地方直接列印、掃描、傳真任何資料,那麼~誰還需要多花NT3000元購買有網路功能的事務機呢?誰又需要購買列印伺服器呢?

2008年11月23日

我所知道的嵌入式系統

嵌入式系統是我近6年來不斷嘗試要摸索的東西,但是一直到現在,我都還沒有學會嵌入式系統。
blog一直到現在,好像也從來沒有寫過嵌入式系統相關的東西,因此就發一篇來說說我所知道的嵌入式系統。

早在8年前,我在讀二專時,當時我曾經有個疑惑,到底IP分享器是怎麼做的?
同樣是微電腦系統,IP分享器一台不過NT2000元,硬體應該跟8051差不多,那8051可以作成IP分享器?可以有網路功能?可以寫Visual C++程式嗎?
二專畢業後,我當兵去當替代役,在當時買了生平第一台,也是目前唯一一台的PDA~iPAQ 3970,當時我從網路知道,它是嵌入式系統,一些人用它來搞嵌入式的實驗和開發,因此我就買了,也嘗試灌Linux上去,還因此燒掛過2次機板,其中一次還是自費6000元換的。
當完兵回去念二技,在當時專題老師說有塊ARM的板子可以玩,我就自告奮勇,很興奮的接下來玩,在當時,我知道ARM是嵌入式系統,但不瞭解它們間的關係。
在當時,為了能夠瞭解嵌入式系統、ARM的開發,死k那厚厚的說明文件,還有參加嵌入式系統的研討會,不過對嵌入式系統一直瞭解得很模糊,直到一場在中國技術學院辦的研討會,其中一個主講者的一句話,我終於瞭解了,這也是我到現在對嵌入式系統的理解。
所謂的嵌入式系統,其實可以這樣解釋,就是「嵌入式作業系統」,它的本質,實際上就是把作業系統嵌入到某個硬體平台上,就叫做嵌入式系統。
但因為作業系統的定義其實有模糊地帶,所以嵌入式系統也被泛指各種微電腦系統,原因在於,所謂的作業系統,它可能很單純,但也可以很複雜,我們用個
while(1) {}

裡面包入幾份工作,輪流的執行,這廣義的來說就算是作業系統。
因此很多微電腦系統都號稱是嵌入式系統,說起來也不完全是錯的。

而事實上,目前大部分指的嵌入式系統,多半是指32位元處理器形成的微電腦系統,並且在上面執行Linux、BSD、WinCE、WinXP這類的作業系統,這類客制化硬體 + 流行、功能強大的作業系統,是目前多半描述的嵌入式系統。
不過事實上,現在有些8051開發板,上面搭配了網路晶片、USB晶片,甚至音效晶片,並且在上面執行8051可以執行的簡易作業系統,這其實也是嵌入式系統的成員之一。

我們可以從上面我對嵌入式系統的名詞解釋(個人的理解),我們可以發現到,嵌入式系統包含了硬體、軟體、軔體(有時也稱驅動程式),因此嵌入式系統的門檻真的很高,我認為,一個嵌入式系統的工程師,至少需要具備一部分電子能力、一部分作業系統的瞭解、還程式開發的能力,我自認目前我還不具備上述所有的能力,至少每個部份我都還欠缺很多。
但同時,我認為35歲以下的年輕人(包括快30的我),要同時具備所有能力,應該很有難度,除非25歲就進入公司,並且被公司磨練了10年才有辦法。
而我認為,嵌入式系統要入門,有人帶的情況下,至少需要3年的時間,才能瞭解這些東西。

我在研究所至今,我必須說,我很不幸的遇到了很糟的老闆,以至於我唸了第四年,能不能畢業都還很難說,但最慘的是,我因此浪費了至少2年的嵌入式學習機會,儘管我老闆號稱做嵌入式系統,但其實他幾乎不瞭解嵌入式系統,我曾經聽他說過,他說「uC/OS這樣的作業系統,根本不能稱之為作業系統」,他也不懂硬體,看到電路、組合語言就完全畏懼,但很不幸的,我認為要搞嵌入式系統,這些是必要的。
因為正如我前面說過的,uC/OS和Linux相比,是一套小作業系統,但我們要開發商品或硬體,很多時候因為各種因素的限制(成本、體積、散熱、耗電...等),我們沒辦法使用32位元處理器,沒辦法有MB級的Flash,沒辦法有鋰電池電源,但是我們需要OS,這樣的系統它還是嵌入式系統,但沒辦法使用Linux、WinCE,因此uC/OS這類小型作業系統成了必要的選項。
此外,搞嵌入式系統,寫應用程式應該已經是非常幸福的了,因為沒有莫名其妙的問題,但既然是搞嵌入式系統,相信寫應用程式的應該是少數,就算是寫應用程式,也應該是受限制的嚴重,像是沒有加密函式庫,而像是.NET?我想應該很難看到他的身影,否則公司何必一個月NT40000請你呢?外包出去可能20000一週就能搞定了。
因此搞到軔體、驅動程式的機會其實很大,那麼在一個客制化硬體中寫軔體、驅動程式,不會碰到硬體IO、不會看到組合語言的機會有多大?我個人悲觀的認為並不大,因此,我會認為我老闆只是號稱做嵌入式系統,他其實對嵌入式系統並不瞭解。

我注意到這兩年嵌入式系統已經不像4,5年前那麼神秘了,被老闆綁越久,其實越難過,因為我很早就知道要走這條路,也很早就努力在摸索,但這兩年不但沒辦法進一步研究,還被綁著沒辦法出去,我估計再過2,3年,嵌入式系統的發展會更成熟,到時候人力需求會更少,相關的人才會更多(這兩年已經有這樣的傾向了)。

我認為,嵌入式系統在2年前甚至4年前,還是一團混亂,我認為這樣的情況會越來越少,我認為嵌入式系統在未來的發展,可能有幾個方向:
1. 開發走向標準化開發,會出現統一的開發方式,統一的函式庫
2. 會出現一些認證,因為目前嵌入式的工程師,程度差異性太大,像我老闆這樣「號稱」的人很多,因此認證變得有需要
3. 各層開發能夠分離,應用程式歸應用程式,作業系統歸作業系統,硬體歸硬體,能夠更有效的分散
4. 導入軟體工程,目前的嵌入式系統很亂,經常連開發時程都不好算,能不能開發出來都很難說,但軟體開發始終需要有計劃,否則對公司來說,漫無目的的砸錢並不是辦法,如何導入軟體工程,我相信目前還算是趨勢,套我之前學長說的,軟體工程中,說到itest這類測試工具,能夠有效的對程式開發時,錯誤的問題進行處理,但在嵌入式系統,三不五時就crash,不要說程式除錯,系統都死了怎麼除?顯然,軟工在這部分還有可以著墨的地方。
5. 硬體的相容性會越來越好,很難想像,嵌入式系統從8年前到現在,光OS的porting,就幾乎是非常大的問題,就算到現在,隨便一顆處理器的微電腦系統,要找到能用的作業系統都很難,要自己porting,還是只能看天,至於公司,除了求助硬體廠商之外,少不了至少3個工程師,花上2個月的時間進行porting,完畢後可能還需要2周,1個月進行測試,除了一堆bug後,工程師才會說「應該ok了」,所以我相信,這問題會逐步改善。

其實上述的問題,儘管我不喜歡M$,但不得不說,M$在嵌入式系統的發展上,很有計畫,而且做的很不錯。
1. M$把硬體相容性用驅動程式的概念來推行,在網頁直接列出某個版本的WinCE支援哪些硬體,並且新的WinCE都能支援舊的硬體,且不斷增加。
2. M$不得不說,對OS的Support至少是還ok的,讓硬體或軔體(驅動程式)廠商在開發WinCE時,不像Linux這麼無助。
3. M$把IE、Windows Media Player...等直接移植到WinCE,這讓開發多媒體、網路的廠商,可以不用辛苦的知道mplayer怎麼porting、mozilla怎麼porting就能直接開發多媒體、網路的產品。
4. M$直接提供 .NET CF...等函式庫,它知道開發嵌入式系統時,混亂的函式庫環境造成了多大的開發麻煩。
5. M$的共享程式碼計畫和龐大的WinCE架構(WinCE的一堆API),能夠讓嵌入式開發分層化,儘管因為架構很大很亂,分層起來還是很難搞,但至少有一堆interface,讓開發上能夠輕鬆些,Linux不得不說,這方面還是很亂,其他OS就更不用說了。

基於上述這些理由,還有M$對嵌入式的行銷,不得不說M$在嵌入式的市場真的是玩真的,而且這快10年的發展,真的讓M$在嵌入式的市場搶下很大的份額,至少手機、PDA部份,它吃掉了很大一塊,M$最近的新聞是,他要搞車用電腦。

2008年9月30日

FreeBSD NFS Client 與 not responding

長久以來,我家的NAT都是用FreeBSD,這在之前文章提過了。

因為系統精簡化,因此FreeBSD上面,現在只用CFtoIDE + 2G CF(創見266x)。
在原本的計畫中,我希望用的是1G CF,無奈266x的世界中,已經是2G起跳了.... :(

有用FreeBSD的人這時可能會問:「那port和src放哪?這兩個傢伙可是很肥的耶~」
我用NFS,把它們丟到File Server(Debian)上了。

ok...重點出現了~
在上次更新完畢之後,我的NAT就一直無法連上File Server的NFS,它可以連,建立檔案或目錄有時候也正常,但只要傳輸大檔案或者持續的改寫檔案(cvsup),就會出現.....
not responding
not responding
not responding
.....

這非常麻煩,不但檔案無法繼續傳輸,還會讓整個系統當掉。
以至於我的NAT有半年以上沒有make world和更新port了,非常不舒服~

上網路找資料發現,not responding很多人問,問的人多,但回答的少,不然就是跟我情況不同。
在經過了長久的嘗試之後,我終於發現問題所在了。
現在我在fstab中NFS的options改成如下設定:
192.168.1.6:/usr/freebsd_dir/src /usr/src nfs rw,nfsv3,tcp,noauto 0 0

簡單的說,我設定FreeBSD使用NFSv3,並且使用TCP protocol,問題就全部解決了。

由解答倒推問題原因,我認為FreeBSD的NFS預設應該是用UDP,可能我這邊網路環境並不大穩定,或者Debian上網路不大穩定(我這台Debian,網路卡是用atl1的driver,會有
atl1 0000:01:00.0: tx busy
的問題),因此NFS會有問題,改用TCP後就能夠解決了。

如果有其他人也有類似的問題,也許可以試試看~

2008年9月2日

VirtualBox小發現~電池電量顯示

這是無意中發現的,原來當VirtualBox勾選ACPI的支援之後,VirtualBox的Guest OS就能夠顯示出Host OS上的電源資訊,連電池電量都能夠正確顯示,沒圖沒真相,真相如下圖:


插電之後,電池充電中的顯示如下:


以上圖片環境如下:
機器:EeePC 901
Host OS:Ubuntu 8.04
Guest OS:WinXP Home

2008年8月31日

NX Server 3.x 的新功能 (Linux上的遠端桌面)

這篇算是繼NX使用心得新NX使用心得後,的小小新介紹。

NX細節就不說了,在目前 Linux 環境中,它算是相當優異的 遠端控制 軟體。

NX Server 2.x 甚至 1.x 有個功能,我們一直希望能提供,那就是類似 XP遠端桌面,或者 VNC 那樣(像 x11vnc那樣),可以直接操作目前 Linux 本機的畫面(在GNOME環境下,就是vino這套VNC Server提供的能力)。
這樣的功能其實在 NX Server 3.x 就已經支援了,算起來也提供了有半年以上了,不過本來一直沒注意,最近心血來潮才發現(這裡要抱怨一下,NX 的說明文件寫的真的是...,設定的部份帶個圖片就很清楚了,硬是讓我看了半天才看懂)。

那就直接進入主題了。

首先我們要先確定 NX Server 是 3.x 版,如下:


接下來我們要確定 NX Client 也是 3.x 版,如下:


NX Server 3.x 預設的設定,就能夠支援遠端桌面這樣的功能了。

接下來很容易,直接在設定部份設定如下:


使用時的連線則會顯示如下:


連線後畫面如下,而本機的螢幕畫面會更著變動:


完成。

相關設定的細節可以參考:
NX Server Administrator's Guide

2008年8月27日

EeePC 901在Ubuntu上得wireless、wired支援

正如前兩篇寫的,ITE後來送了我一台EeePC,意外的是,ITE是直接在PCHOME訂購的,所以直接就是PCHOME送來,當時送來的是EeePC 701(含webcam、白色)版本,後來經過了一番努力之後,它終於找到新主人,本來還擔心它新主人知不知道它的習性,後來面交時有詢問過,我也因此放心了,不然還擔心它會不會被遺棄或再換主人。

後來經過一番考慮後,我決定購買EeePC 901,考量因素有幾個:
1. Aspire One的SSD只有8G,而且是MLC,買SD是必要的,可是SD一張差不多就要1000,2000元
2. 除了SSD外,Aspire One的wireless只有802.11 b/g,沒有藍牙、802.11 n的支援
3. Aspire One的webcam是30萬像素,901是130萬像素
4. Aspire One的電池容量和901容量差很多

這些差異,價格差距卻在3000元,因此就決定買901了。

以上介紹完畢,正式進入這次的主題。
本篇文章同步po在mobile01的回覆中。
=================================
EeePC 在安裝 Ubuntu 時常見的問題主要是目前 Ubuntu 8.04 中的 Kernel 還不支援 EeePC 上有線、無線的網路卡,需要另外編譯 Kernel,不過.....

針對 Eee PC 的 Ubuntu Linux Kernel 已經有了,現在已經不需要辛苦的自己編譯 ralink module。

Kernel 的下載網址在Array.org EeePC Ubuntu Repository - Custom Linux Kernel,作者針對 Eee PC(包括901/1000/1000H) 製作了 Ubuntu 客制化的 Kernel Image 和 Module,並且持續提供更新。

目前它提供的 Kernel 包括下列部份:
1. Wired ethernet support (via atl1e module from Asus) (提供 EeePC 有線網路卡的 module 支援)
2. Wireless ethernet support (via rt2860sta module from Ralink) (提供 EeePC 無線網路卡的 module 支援)
3. Complete WEP and WPA wireless encryption support (via unreleased Ralink patch) (無線網路卡的 module 已經 patch 過,可以直接支援 WEP 和 WPA 無線網路模式)
4. Complete sound card support (via unreleased AlsaProject code) (完整音效卡支援)
5. ACPI with Bluetooth support (via patched eeepc-acpi module) (EeePC 內的 ACPI 能夠支援藍牙)
6. SMP enabled (for hyperthreading your Intel Atom CPU) (能支援 EeePC 中 ATOM CPU 的 HT 功能)
7. Simplified Persistent USB support (via an "always-on" patch) (USB 不知道什麼碗糕的 patch )

此外,根據網頁介紹,這個針對 EeePC 客制化的 Kernel,能讓開機時間快上 20~30 秒。
原文:Along with routine upstream updates, additional benefits include faster boot times (20-23 seconds), and pre-compiled eeepc & madwifi modules.

我的經驗是,使用它的 kernel 之後,有線網路直接就能看到,wireless 的部份還不太會開,需要 patch 讓 wireless 的功能鍵能夠動作。

設定 wireless 功能鍵,我是參考EeeUser ASUS Eee PC Forum / [HELP NEEDED] Ubuntu-Support-Script for EeePC 901/1000/1000H這個設定

設定方法就按照它作法即可。

這時候也許會問,我 EeePC 現在裝好 Ubuntu 8.04 就是沒網路,那這些要怎麼搞?

可以準備一個 SD,容量不拘,大概只需要 128MB 就夠了。

把前面提到的 Kernel、Module 和 wireless 功能鍵 的 patch 檔案放進 SD,連結分別是:
ACPI_scripts-EeePC_901_1000.tar.gz
Linux Kernel(linux-image-2.6.24-21-eeepc_2.6.24-21.39eeepc1_i386.deb)
Linux Module(linux-ubuntu-modules-2.6.24-21-eeepc_2.6.24-21.30eeepc3_i386.deb)

把 SD 插入 EeePC 當中,Ubuntu 就能自動找到並掛載了。

接著打開終端機,並按照下列動作操作:
1. 切換到 SD 的路徑
cd /media/disk

2. 安裝 Linux Kernel 和 Module
sudo dpkg -i linux-image*.deb linux-ubuntu-modules*.deb

3. 切換到 暫存區 路徑
cd /tmp

4. 將 wireless 功能鍵 patch 壓縮檔解開
tar zxvf /media/disk/Ubuntu_ACPI_scripts-EeePC_901_1000.tar.gz

5. 安裝 wireless 功能鍵 patch
cd Ubuntu_ACPI_scripts-EeePC_901_1000/
chmod +x install.sh
sudo ./install.sh

6. 重新開機,並享用 EeePC 上的 Ubuntu
reboot


目前我所感覺到還需要 patch 的部份,大概就是 wireless 功能鍵,上述的 patch 似乎只有 wireless 的開關,沒有 wireless開 / 藍牙開 / wireless+藍牙 開 / 全關 這樣的切換,看起來需要在翻些資料來修改它的內容,不過目前我都還沒用到 藍牙,因此這對我還不是個問題。

最後一點,以上動作我都操作過沒問題,我的環境是 EeePC 901。

2008年8月26日

Linux的RAM Disk(資料不消失版)

RAM Disk是一個非常方便的東西,尤其現在DDR2的RAM很便宜時,善用RAM Disk可以有很大的效能改善。
雖然RAM Disk已經不是什麼新鮮的東西了,但是這次我針對Linux上的RAM Disk Script加入了開/關機備份/還原的功能,應該就很少見了。

我個人認為Linux上的RAM Disk比Windows和FreeBSD來得方便好用,Linux的shm(Share Memory)實在太強大了。
在Windows上,RAM Disk的軟體不少,但多半都是切割一塊RAM當磁碟,舊版的FreeBSD上也是(FreeBSD的tmpfs實做在FreeBSD 7.0開始提供~),在Linux上,因為tmpfs技術的關係,能夠直接使用Share Memory當成檔案系統來使用,因此能讓檔案系統上的資料能複製到Share Memory當中,和其他process共用Memory。這樣的優點是,系統記憶體和RAM Disk是共用的,RAM Disk不需要額外割一塊出來,舉個例子:
假設RAM有1024MB(1G),我要512MB的RAM Disk
在Windows、FreeBSD上,系統記憶體就只剩下512MB,另外512MB變成一個RAM Disk。
而在Linux上,系統記憶體還是1024MB(1G),假如我在RAM Disk上吃掉了100MB的空間,則系統記憶體會變成924MB,而RAM Disk(Share Memory)的上限是多少?1024MB嗎?
這可以自己設定,系統預設是RAM的一半,以這例子來說,Linux預設的RAM Disk(Share Memory)就是512MB。

RAM Disk速度很快,尤其是拿來compile kernel時特別明顯,可以明顯感受到,花費的時間比較短,這要歸功於Linux Kernel Source Code很大,所以感受得出來。

另一個重要的場合大概就是Eee PC這類輕巧筆電了,輕巧筆電因為「輕巧」、「價格」...等因素,往往硬碟很小,而且硬碟經常速度很慢(EeePC 900、901的第二顆Flash,Aspire one 110的8G Flash),在無法擴充或是擴充價格很誇張時,加大RAM並善用它變得很重要,因此在輕巧筆電上設定RAM Disk,幾乎是「必要的設定」(不論是XP或Linux)。

RAM Disk的致命傷就是重開機資料就消失,稍微搜尋後可以發現,Windows上已經有不少人提供備份、還原的script,搭配XP Pro的系統原則就可以在關機時備份RAM Disk的資料,那Linux呢?就在這裡啦~~

首先,我RAM Disk的建立,是使用[閒聊]有趣的 tmpfs最後的script版本,並不是寫在/etc/fstab當中。
RAM Disk(tmpfs)的詳細介紹可以參考Tsung's Blog的拿 RAM 當硬碟來用(RAM Disk),作者把所有的tmpfs建立方法全部敘述了,內容清楚明確,非常值得參考,我使用的屬於方法一。

簡單敘述建立RAM Disk的方法:

1. 把下列script內容編輯,並存檔為/etc/init.d/mounttmpfs.sh
#!/bin/sh
#
# mounttmpdir Mount /tmp after mounvirtfs exec-ed
#
# Version: @(#)mounttmpdir 0.01 24-Dec-2004 antony shen
# 參考網址:http://moto.debian.org.tw/viewtopic.php?t=4100&highlight=shm
# 執行指令:update-rc.d mounttmpfs.sh start 37 S .
#

# Script needs to be robust and continue when parts fail,
# so we're not setting the "-e" flag.
#set -e

PATH=/lib/init:/bin:/sbin

if [ -d /dev/shm ]
then
if [ ! -d /dev/shm/tmp ]
then
echo -n "Mounting tmpfs(/tmp,/var/tmp) under /dev/shm..."

mkdir /dev/shm/tmp
mkdir /dev/shm/vtmp
chmod 1777 /dev/shm/tmp
chmod 1777 /dev/shm/vtmp
mount --bind /dev/shm/tmp /tmp
mount --bind /dev/shm/vtmp /var/tmp

echo "OK."
fi
else
echo "Failed to find /dev/shm, unable to link /tmp under it!"
fi


2. 執行
update-rc.d mounttmpfs.sh start 37 S .

3. 重新開機

4. 複製個檔案 (cp /boot/* /tmp/) 到 /tmp 執行 df,查看 /dev/shm 的使用空間有沒有變化,有變化就是成功了。

接下來,我們進一步來玩Backup/Restore的部份,如下:

1. 把下列script存檔為/etc/init.d/backuptmpfs.sh
#!/bin/sh
#
# 參考 mounttmpfs.sh 修改而成
#
# Version: @(#)backuptmpfs.sh 0.01 2008-08-26 YCFu
# 執行指令:update-rc.d backuptmpfs.sh stop 1 0 6 .
#

# Script needs to be robust and continue when parts fail,
# so we're not setting the "-e" flag.
#set -e

PATH=/lib/init:/bin:/sbin

if [ -d /dev/shm ]
then
if [ -d /dev/shm/tmp ]
then
echo -n "Backup tmpfs(/tmp) to /RAMDISK_bak.tar..."

tar -X /etc/non-list -C /tmp -cf /RAMDISK_bak.tar .
chmod 600 /RAMDISK_bak.tar

echo "OK."
fi
else
echo "Backup Fail!"
fi


2. 把下列script存檔為/etc/init.d/restoretmpfs.sh
#!/bin/sh
#
# 參考 backuptmpfs.sh 修改而成
#
# Version: @(#)backuptmpfs.sh 0.01 2008-08-26 YCFu
# 執行指令:update-rc.d restoretmpfs.sh start 38 S .
#

# Script needs to be robust and continue when parts fail,
# so we're not setting the "-e" flag.
#set -e

PATH=/lib/init:/bin:/sbin

if [ -f /RAMDISK_bak.tar ]
then
echo -n "Restore tmpfs(/tmp) from /RAMDISK_bak.tar..."

tar -C /tmp -xf /RAMDISK_bak.tar
rm /RAMDISK_bak.tar

echo "OK."
fi

3. 執行下列指令:
update-rc.d restoretmpfs.sh start 38 S .
update-rc.d backuptmpfs.sh stop 1 0 6 .


4. 執行下列指令建立排除檔案列表
touch /etc/non-list

5.完成

上述程式說明:
簡單的說,我改了2個script,一個用在關機時備份RAM Disk,一個用在開機時還原RAM Disk。

關機時備份RAM Disk的叫做backuptmpfs.sh,它會在inittab狀態為0和6時執行(放到rc0.d和rc6.d),0和6分別是關機狀態和重新開機狀態。

開機時還原RAM Disk的叫做restoretmpfs.sh,「它必須在 mounttmpfs.sh 之後執行」,它會在開機時,建立RAM Disk之後,將RAM Disk資料還原回去。
為什麼不整合到mounttmpfs.sh之中呢?
我試過了,它似乎會和mount --bind衝突,可能需要delay一點時間吧。

由於RAM Disk中,通常會放置Firefox的暫存目錄,我們不希望所有東西都備份,因此我們要設定個排除檔案名單,將特定的目錄或檔案排除。
排除名單放在/etc/non-list,只需要把不要備份的名稱加入即可
以Firefox的暫存目錄來說,Firefox會自動建立暫存目錄/tmp/Cache,我們只需要在/etc/non-list中寫上:
Cache

如果我們希望排除多個檔案或目錄,例如檔案「EEE」和目錄「Cache」,則在/etc/non-list中寫上:
Cache
EEE


備份的檔案會存在哪裡?檔名是什麼呢?
備份的檔案會存為/RAMDISK_bak.tar會在還原後自動刪除
此外,為了安全性的考量,/RAMDISK_bak.tar的權限會設為600

最後,因為這是第一版,所以我並沒有將上面提到的參數設為變數,不過這幾個script並不複雜,相信稍微看一下,就能夠看懂並修改,歡迎大家修改使用,改過後記得再貼出來造福更多人。

2008年7月20日

得獎嚕~

這篇純粹是炫耀文。

話說之前ITE(經濟部資訊專業人員鑑定)有寄廣告給我(因為我有考過網路通訊類證書),說有個評比,又送MP3隨身聽、又送ASUS Eee PC,考的還是我熟悉的Linux,因此,我拿出了傳說中的小算盤撥弄了一下。
恩~扣掉報名費,但是可以賺到MP3隨身聽和證書,甚至有機會賺到Eee PC.....
划算~因此二話不說就報名了。

本來想說,賺個MP3隨身聽,然後看看成績有沒有機會拼Eee PC,沒想到第一次考試的成績都很不錯(90,90),這時候心想,Eee PC看來很有機會,這種成績,應該聽牌了吧~
於是乎又把小算盤拿出來撥弄一下,考第二次之後,報名費要多少,加上第一次的報名費要多少~
再查看一下評比的規定:
自符合評比資格之應考人開放式系統類合格成績中,取分數最高之兩科目計算
平均分數(小數點後第二位四捨五入)進行評比,若結果相同時依照以下條件順序決定優先次序:
1. 開放式系統類合格科目數多者優先。
2. 總答對題數多者優先。
3. 總作答時間少者優先。

看來要拿Eee PC,本錢要下足一點,第二次考試也要過,這樣勝率會更大、更有保障些,因此二話不說,又報名了~第二次雖然成績不非常好看(75),不過志在通過,不在分數。
因此就每天期待著評比的公佈~

最後結果出來,我果然得獎了~不過名次比我預期的要低~高手果然是無所不在的~

最近在煩惱,Eee PC是自用,還是賣掉換2代、3代,還是乾脆賣掉求現就好了。

最後介紹一下ITE(經濟部資訊專業人員鑑定),也算是對它即將送我MP3隨身聽和Eee PC的回饋。
ITE全名叫做經濟部資訊專業人員鑑定,網址如下:
ITE資訊專業人員鑑定

這個鑑定其實算是模仿MCSE、CCNA之類的IT認證而建的,雖然是標示「經濟部」,但主辦其實就是電腦技能基金會,電腦技能基金會辦理的比較有名的認證,就是TQC,專門在考Office之類的操作,考取後一樣有證書。
這張證書實際上並不很有名、也不很好用,根據我在IT公司工作的朋友說(他之前也有考),IT公司其實不大看這張證書的。
儘管如此,ITE還是有些值得一書地方。
1. ITE算是國家證書,至少是經濟部承認的證書。
2. ITE的起源很有趣,它是在「89年11月亞太經濟合作發展會議部長級會議(Asia-Pacific Economic Cooperation;簡稱APEC)」時,由日本方面向經濟部提出的建議。
3. 正如上面所說,因此ITE具有跨國性,日本也承認這個證書。

因此,儘管ITE不怎樣,但是倒是個可以玩玩的證書,考個一張、兩張放身邊,還可以不同時期考,這樣可以拿到好幾個經濟部長的印章。 :p

至於ITE的現況如何,根據我這次去考的經驗,很多高中生去考,感覺變成了技術士技能檢定的翻版,我不知道這樣是好還是不好。
其次,之前我考網路通訊類的時候,並沒有「應考指南」這樣的東西,因此說實話並不好考,感覺範圍很雜、有些地方很細(指令的參數);不過這次考試發現,已經有「應考指南」這樣的東西了,我這次考,還「送」了一本給我,到現場,也看到許多人人手一本,網路通訊類的也有。

有了這樣的東西,要過真的容易很多,就我個人的感覺,它的難易度分配大致如下:
1. Linux初階 應考指南大約200題考題,命中率大約8~9成
2. Linux進階 應考指南大約200題考題,命中率大約6~7成
3. 開放式XXX 應考指南只有40題考題,命中率沒注意,大概7~8題有出現

上述內容乃我個人的心得,不代表ITE或電腦技能基金會的立場。

至於名單中哪個是我,為了個人隱私,還是不公佈拉~

2008年7月3日

NAT轉移

好陣子沒有po些技術文件或新的電腦、電子文。

首先,最近世界性通貨膨脹+石油危機已經嚴重到連我都有明顯感受,最近在假日,都儘可能的改搭捷運了,摩托車只有在去學校時才用。
其實我最近頗疑惑,改搭捷運之後,減碳不說,到底和騎車相比,開銷是多點還是少點?

話說,NAT其實去年暑假和前年暑假其實都有進行升級,短期內其實不大需要進行更動,不過最近朋友在Y拍上看到便宜的ITX主機板,經過一番遊說之後,還是決定更換了。

這次的NAT更換計畫,其實並不算升級,因為RAM沒換(因為插槽少一個,還變小了),CPU時脈同樣都是800MHz,網路卡也是沿用之前買的Dual Port網卡,因此除了主機板之外,硬體幾乎沒太大變化,既然這樣,更換的理由是什麼?
1. NAT size縮小,為未來微型化計畫預做準備
2. 「據說」VIA EPIA系列的主機板很省電,這部份目前沒啥感受,唯一能說的是,溫度的確比較低,至少CPU風扇小了好幾號,顯示卡內建,而且不需要風扇也不會燙

既然NAT已經換裝了,接下來呢?
接續前兩次發文提到的DC-DC穩壓電路,目前的目標是,製作出主機板用的DC-DC Power Adapter,預期會跟Y拍上別人賣得功能類似,功率應該不大,但是純手工製作,成本應該不會太貴。
主機板用的DC-DC Power Adapter怎麼製作?
目前的理解是,ATX需要的電源主要有4組,分別是:
3.3V
5V
12V
-12V

因此計畫是,製作4組DC-DC穩壓電路,降壓分別如上,然後就衝啦~

而這部份,最近持續在找零件,因為之前買的那批LM2576-5都是固定5V輸出的,沒辦法製作成3.3V、12V、-12V,因此最近持續在找可調整型的DC-DC IC來使用。

NAT部分值得一提的是,這次買的ITX主機板是二手的,買回來使用後發現上面有顆電容快不行了,大概在爆炸邊緣,這電容不查則以,一查嚇死人,它可以頂頂有名的GSC電容,google上打上GSC+爆電容,就可以發現到它多有名氣了。:p
巧合的是,GSC的電容規格和我上次買的DC-DC穩壓電路需要的規格相同,而且我買的還是傳說中的固態電容,因此二話不說,就換了~
這也是我第一次自行更換主機板電容,雖然只有換一顆,但是能把主機板修好,這還是非常值得驕傲的。
至於舊的主機板(Abit KT7+杜龍800),目前考慮把它拿去網拍賣賣看,看能賣多少錢。

2008年6月27日

wii台灣版?那也叫台灣版嗎?

任天堂的wii很不錯,去年年底就已經賣到爆炸了,當時的「台灣總代理」「博優公司」跳出來說「水貨全部都是盜版的」,後來甚至說什麼「水貨沒有通過電信檢測」。
因為新聞太大了(主要是博優自己跑去NCC告狀),NCC一查,發現wii主要零件都台灣製造,出口前都經過電信檢測了... = =
而關於盜版說,因為任天堂並沒有在台灣正式販售,意思是,博優還拿不到代理權,那麼根本沒有盜版的說法,因為所謂的盜版,是台灣代理商已經取得該產品的代理,那麼就不能私下販售,但是代理商沒有拿到代理之前,盜版根本不成立。
因為以上2個說法都被戳破了,博優開始唬爛放利多,說「wii會有台灣專用版,會和中華電信合作,架設台灣專用主機」,「會有在地化的中文介面」,「價格將會多便宜多便宜」。
結果事隔將近一年,以上全部幻滅。
台灣版介面仍舊是「日文」,台灣版「沒有辦法連線伺服器」,台灣版價格「趨近於水貨,不算遊戲,定價還比較貴」,這每項每項都像一把劍,深深的、用力的刺進了苦苦等待的消費者們。

「博優」阿~現在已經是21世紀了,請不要再用30年前的方式經營電玩業了。
沒有中文介面,沒有台灣專用伺服器,這些牽拖了半天,關鍵其實就是因為技術不如人,只想做個「進出口商」,既不想、也沒能力進行產品的相關support。
最近媒體開始說,因為華人市場小...等等,但是說到底,中文介面純粹就是談判跟技術的結果,沒技術不會中文介面的製作,只是跟任天堂喊著要中文介面,怎麼可能會有~
要能夠更進一步的合作,拿出技術和工程師,加上談判才會有阿~
台灣專用伺服器的部份更是,怎麼看都像是沒技術的結果,我想主要問題還是出在伺服器的經營成本上吧~
畢竟台灣版「不能連線伺服器」,這表示問題不是在wii上,而是根本沒伺服器能連,為什麼沒伺服器連?
相信大家心中都有一把尺,任天堂台灣代理商這樣搞,我們只能祈禱,它能趕快因為市場環境被淘汰掉。
最後,還是老話~
與其接受不平等的wii待遇,還是等模擬器比較實際些~
等只要花時間,在現在世界通膨的大環境中,少花錢等於賺了~
等模擬器既不花錢,時候到了又能達到一樣的享受~

2008年6月11日

綠卡 ≠ 雙重國籍~別再混淆視聽了~

好陣子沒po blog,一來就是一篇政治文,實在是因為覺得太莫名其妙了~

最近綠色的立委真的是一群神經病,在野了就該好好反省,想想看怎樣族群融合,想想看怎樣讓台灣更進步,結果不是~在野了瞬間恢復以往本性,整天在立法院作秀搶媒體曝光,真的是讓人看了覺得噁心~

此外,我真的嚴重的覺得台灣「為數眾多」的媒體們,長點腦袋吧~
這些擺明就是作秀,還跟著聞雞起舞幹嘛阿~
多報導些國際新聞~
報導事情時,看事情深入一點,搞的像一群小學生一樣~米價漲了就一窩蜂去堵人,然後找農夫哭著說活不下去了,幹嘛這樣呢~應該去報導,米價上漲的原因,整理出幾個米價上漲的原因,讓大家瞭解確實的狀況阿~

最近幾件事情當中,最讓人莫名其妙就是「綠卡風波」,連媒體也在聞雞起舞,一直堵人問綠卡,搞的好像有綠卡的人通通都該下地獄一樣,結果搞到現在,有看到任何人或媒體解釋什麼叫做綠卡嗎?只有一直比較誰有綠卡,有多少人有綠卡,真的全部都是神經病~

何謂綠卡?
維基百科對綠卡的說明

綠卡白話的說,就是「居留許可證」,並不是「公民證」,意思是說,有綠卡不等於有雙重國籍,綠卡 ≠ 雙重國籍

在政府的法令中有規定,「從事公職者,不能具備多重國籍」,你也許會說,我空口說白話,胡說,沒問題~來個連結:
對「政務官、民選首長宜否納入忠誠查核」之評析

其中關於公職者不能具備多重國籍的解說如下,在此轉述:
例如未具或喪失中華民國國籍、或具雙重國籍、或動員戡亂時期終止後犯內亂、外患、或有貪污行為經判刑確定,或通緝尚未結案,或判處其他有期徒刑尚未執行或執行未畢,依法停止任用,禠奪公權尚未復權等,依法均不得遴任為政務官。

內容寫的清清楚楚,政務官不能具有多重國籍,也不能喪失中華民國國籍,這就是為什麼這幾天行政院長說,政務官的指派一切合法,因為這次的任命,對多重國籍都有檢查過了。

這些綠色的立委真的是惟恐天下不亂,製造亂七八糟的假議題,這擺明就是故意把「綠卡」和「多重國籍」攪在一起,然後拿這個來做文章,所以每次都作秀,都是說綠卡,然後說雙重國籍,這根本就是混蛋。

也許會問,既然綠卡 ≠ 雙重國籍,那幹嘛要有綠卡?
簡單的說,在國外(主要是美國),有很多行為,是要求要有綠卡才能做了,像信用卡申請,就必須要有綠卡才能申請。

由於綠卡只是居留證,因此他是有期限,必須一段時間一段時間去換證才能繼續留在國外,如果該國(主要依然是美國)不繼續給綠卡,或者你離開該國(主要還是美國)很長時間不回去,你就沒有綠卡(綠卡失效),就必須出境或者無法入境。

除了這次綠色立委很可惡,亂搞假議題之外,這次藍色立委也是莫名其妙,我們給你們執政,給你們當國會最大黨不是給你們搞內鬥的,是你們說這樣行政、立法統一,效率高才投你們的。
這時候遇到這種事情,不是藍色立委跳出來跟綠色神經病一起質疑的時候,是應該跟大家解釋綠卡是什麼?為什麼這些人會需要申請綠卡?
像外交部長被質疑有綠卡我就覺得誇張,外交部長長期在國外處理事務,有綠卡才好辦事阿~難道每次都要申請簽證,等個一、兩星期再去辦嗎?

然後說行政團隊,那什麼爛解釋阿,清查政務官綠卡是ok,但是要把綠卡說明清楚阿,只說工作需要,這樣是有國際觀的人才,當然被當箭靶阿~
因為現實狀況是,10個有9個不知道綠卡跟公民權的關係,你們這樣回答,不是讓那些人更能發揮嗎!
拜託~清醒點吧~

2008年5月26日

省錢省能源省時間~騎機車最好

相信買3C商品的人都聽過CP值,也都希望CP值越高越好,同樣的,在全世界省電、省油、省能源的趨勢下,CP值最高的交通工具是什麼呢?
其實就是「騎機車」~

剛剛看新聞,CNN做了個簡單有趣的實驗,3個記者同時一起出發,一個開車、一個坐地鐵(捷運)、一個騎腳踏車,然後看看誰先到CNN辦公室。

結果揭曉,開車最快到,地鐵次之,騎腳踏車最慢到。
而花費呢?開車花費約4美金,地鐵2.9美金,腳踏車0美金。

從這邊的實驗來看,地鐵似乎是最折衷的方案,具備了不多的花費和較快的速度。

可是實際上,還有個選項沒有實驗,那就是騎機車。

機車的速度其實不慢,同樣可以到60公里、80公里,但是沒有汽車的重量,因此機車的耗油很省。
根據「經濟部能源局」提供的「車輛油耗測試資料統計」,125 c.c. 的機車一公升大約可以行駛40公里左右,而小轎車來說,Toyota的PRIUS (HYBRID)看來已經是最省油的,而且又用了油電技術,它一公升行駛24.7公里,而其他省油車的油耗,多半落在17,18公里左右。

由此可以發現到,汽車的油耗,至少是機車的2倍,可是機車和汽車在市區的速度,基本上差不多。
此外,機車和腳踏車一樣,當汽車遇到塞車時,機車可以直接穿越,具有和腳踏車一樣,抗塞車能力都不錯,可是和腳踏車不同,機車的車速可以比腳踏車快很多。
而和地鐵相比,首先,機車的能源成本比地鐵便宜,照前面CNN的實驗,汽車4美金,地鐵2.9美金,但如果是機車,成本大約是汽車的一半,也就是2美金,比地鐵還要便宜,可是機車比地鐵更方便,因為地鐵通常沒辦法到達目的地,也沒辦法出門就直接搭地鐵,都需要走一段路,這段路的時間通常會比較久,而機車基本上可以從出門直達目的地,中間不需要任何轉乘或走路。

從這邊來看我們可以發現,台灣人都很精明,很自動的都選擇了CP值最高的交通工具。
在這樣高油價的時代,是不是該犒賞我們這些機車族呢?

2008年5月21日

四川大震,一起哀悼

這次四川發生了8.0的大地震,傷亡慘重,讓我們一起祝福他們。

這次的四川地震,相信大部分的人都能感受到中國政府對災難的重視程度,儘管有人說,這是因為奧運的而表演給國外看的,但我認為,有重視總是好的,畢竟和過年時的雪災相比,明顯能夠感受到差異。

而這次的四川地震,大家都希望能夠有錢出錢,有力出力,順應這波潮流,我也透過智邦公益館捐了3000元,同時也在blog右下角放上了「關懷四川震災」的圖示。
一般都說,捐一日所得,身為研究生的我,3000元可是我1/3個月的所得,相信是很夠意思了。
而我是捐給「紅十字會」進行賑災,因為說起來,我很早po過,我個人不是很喜歡慈濟。
這邊要附註一點,四川的捐款是可以百分之百抵稅的,因此可以給老爸抵稅,抵稅方式,憑捐款收據即可。

這次四川地震其實有很多面向可以來看,首先,大規模的利用軍事科技進行救災,這應該是中國的第一次,此外,從中國救難隊配備生命探測儀、救難犬來看,中國現在特別搜救隊基本上已經很有水準了,和其他國外的搜救隊相比,並不差。
比較值得仔細注意到的包括了:
1. 這次中國的軍隊動員能力,大概貼近了最大的動員能力,能在這麼短的時間內動員到這麼多的軍警,真的是相當誇張,如果我沒記錯,24小時內就用運輸機和12架借來的民航機動員了將近7000名解放軍。

2. 這次應該是中國第一次在救災行動中動用空降部隊,事實上,我在台灣,印象中從來沒看過有利用空降部隊進行登陸,相當聰明而有效的作法,而且也看得出來,中國的空降能力相當優異。

3. 這次中國的強行軍,也很讓人驚訝,能夠動員這麼多步兵部隊,而且以強行軍的方式快速的進入災區,這點也非常了不起。

4. 台灣在八掌溪事件之後,政府終於了解到,成立一個直昇機的搜救部隊是很重要的,不論在高山救援、救火都非常重要,因此現在,每次到了山難、森林火災、颱風、海難、地震,都可以看到搜救直昇機。而這次,中國大規模的利用直昇機進行物資運補、人員運補,可以說是一大進步,而事實證明,效果的確非常好。

5. 衛星定位的優勢,這次一個很搶鋒頭的系統,就是衛星定位系統,尤其是大陸自行研發的北斗一號,之前曾經在網路上查過北斗一號的資料,北斗一號和一般常用的GPS相比,北斗一號只能用在亞洲,只有3顆衛星進行定位,此外,北斗一號的通訊和GPS不大一樣,北斗一號的定位方式,是和衛星或無線電站台通訊後定位的,也就是說,北斗的系統是雙向通訊,而GPS不同,GPS是單向的由衛星不斷發射信號,沒辦法和GPS衛星通訊。
相比之下,北斗系統的缺點是,當使用人數很多的時候,會因為頻道忙碌、或者衛星負載太重而斷線或失效,但這樣的設計也有優點,而且在這次救災中完全顯現出來。
這次救災應該是中國第一次將衛星定位投入救災中,而且我們可以注意到,所有北斗的定位系統,因為能和衛星雙向通訊,因此就算因為地震,災區沒水沒電,但仍然可以準確的讓衛星站定位出所有北斗的終端機位置。
和北斗相比,GPS因為是單向的,所以位置通常需要靠其他通訊方式來傳送,最常用的就是基地台,但是像這次,災區沒水沒電沒通訊,基地台都不通,其實GPS用處就受到了限制。
不過相對來說,這次台灣的旅行團能夠找到,GPS還是主要的功臣。

6. 這次大陸非常難得的對新聞媒體寬待,甚至有網友質疑部份新聞的真實性,表示中國已經從以往的控制媒體,轉而開放媒體、利用媒體來宣傳,這其實很值得鼓勵,表示大陸對媒體比以前更開放了。

7. 這次大陸對救災的分工很明確,總理(也就是我們的行政院長)第一時間趕到現場,也很積極的發佈指示和勘災,這很值得讚賞。
想想看,如果高層不到第一線,只在辦公室裡面指揮,第一線的各級幹部又怎麼會推進到災區呢?畢竟人都多少有惰性,上面沒指示,下面沒動作。
而雖然總理在災區,但是仍可以發現,對於指揮調度其實不錯,沒有因為人在第一線導致指揮調度出現問題。

8. 無人飛機探測災情,這在大陸應該也是首次出現的吧。對無人飛機的探測,在台灣我好像只聽說過颱風時候有用無人飛機去偵查,賑災、火災、風災...等,我還沒看過台灣有動用過無人飛機偵查,這也很值得我們學習。

整體來說,大陸這次的震災應變,的確有展現出大國的應變態勢,而且可以注意到現代化程度很高,非常值得讚賞。

話說回來,這次台灣的新聞媒體我就很有些意見,所有的新聞都圍繞在台灣捐錢世界第一,大陸富豪不捐錢;搜救隊去大陸,大陸民眾沒見過,感覺很新奇;旅行團利用GPS找到了;旅行團在大陸醫院接受X光等檢查;台灣提供高解析度衛星照片給大陸...等。
感覺上,台灣的新聞報導,一直一直都以一種優越感在報導四川地震的新聞,好像大陸是不毛之地,設備落後、人民沒常識一樣,偏偏所有新聞頻道都這樣,民X尤其嚴重。
可是實際上,如果去「四川在線」的網頁看,你會看到大陸的大部分新聞畫面,正如前面提過的,大陸現在也有設備先進的救難隊,大陸這次救災,運輸直昇機幾乎都是大型的,他們一樣使用了非常先進的設備,我覺得新聞媒體在報導的時候,還是把優越感收起來吧。

最後,上面說了一些我對這次震災的看法,重點還是只有一個,這次大陸遇到的,是世界少見的超大型地震,對於大陸、對於收災者、對於罹難者,我們都應該用心來祈福,並期望四川能夠趕快復原回來。

2008年5月18日

LM2576T-5穩壓電路一號

之前曾經寫過,要開始自走車的開發計畫,希望能夠把ARM的小電腦放在自走車上跑,不過一直以來都沒辦法開展,其中一個原因就是電源。

大部分的ARM開發板都提供小變壓器供電,可是仔細看,這些變壓器清一色都是Switch Power,電流都可以到2.0A~3.0A,在我們沒辦法準確的估計出ARM的耗電量時,我們只能相信,給它2.0A~3.0A的電源應該就夠了。

回想8051單晶片自走車的電源電路,儘管我一直沒做過8051自走車,但是找資料這種事還是會的,大部分8051自走車的電源電路,都是使用7805或LM317這兩顆穩壓IC,可惜的是,這兩顆穩壓IC的輸出電流都很小,像7805只有100mA,這和我需要的2.0A~3.0A相差很大,因此,我們需要找其他解決方案。

看看目前新式的DC-DC Converter,幾乎都是Switch的天下,除了降壓的電路外,甚至也有升壓電路和升降壓電路,也都有做成穩壓IC,可惜的是,一般散貨市場非常不好找,幾乎找不到這類IC,因此計畫幾乎放棄。

最近的一次搜尋中,終於發現簡單、便宜、好找、好用的穩壓IC,那就是LM2576,這顆穩壓IC很好找,而且很便宜,在Y拍上就可以找到,也可以零買,網拍價格只需要30~35元,而這顆IC,它是一顆Switch降壓IC,它的輸出電壓有固定式的3.3V(LM2576-3.3)、5V(LM2576-5.0)、12V(LM2576-12)...等,也有可調式的LM2576-ADJ,輸出電流最大可達3.0A,至於輸入,可以容許8V~40V的輸入電壓。

由此可以發現,LM2576真的很不錯,CP值非常高,因此我就利用這次週末試著找零件做出來。

在這邊我不得不說,光華商場實在是.....,該有的零件都沒有,電腦倒是賣很多,這也叫光華商場嗎?
這兩天去找零件,還是金華電子賣得比較齊全,至少我要的鋁質電容,那邊都還可以找到,其他在國際電子廣場的幾家,包括B1那兩家(良X、X達),B2靠樓梯那家(B2的X鄉我沒去),都沒賣鋁質電容,不是沒有我要的型號,是完全沒有賣。
不過話說回來,金華電子也不是什麼善男性女,它LM2576-5一顆賣我90元,前面說過,Y拍、露天拍都有賣,一顆也不過30、35元,加上30~50元運費,一顆我可以買2、3顆,雖然如此,但是考慮到我只有週末2天的時間,所以我還是先買了2顆來測試(怕一顆被我燒了)。

關於LM2576-5的電路,我就不多說了,基本上電路我是參考下面的datasheet做的:
http://www.alldatasheet.com/datasheet-pdf/pdf/167372/MOTOROLA/LM2576-5.html

輔助則是參考:
http://forum.jorsindo.com/viewthread.php?tid=13708

目前我已經把電路生出來了,雖然很醜,但是看起來應該是會動的。

下面是我電路的正反面照片:
正面


背面


當然,我也進行了些簡單的測試:






接上ARM開發板後的照片:




目前我還測不到最大電流,剛剛稍微想了下,因為V=IxR,所以V = 5V,I = 3A,則R = 1.66666Ω
所以看起來,電阻應該要用1.7Ω~2.0Ω,才能量得到2.5A~3.0A的輸出電流,今天再去找電阻囉!

2008年5月13日

自助加油成功

現在油價越來越誇張,520之後還肯定會漲價,加上我目前還沒畢業,每星期還要不斷的往返林口跟台北,雖然跟之前每天來回相比,已經少了很多了,但是油錢仍然是很大的開銷。
我算過,以我的悍將4V一代來說,我大概來回2趟半(去回-去回-去),就要加油了,以前每次加油大概80~100,現在則都要100~150,上次騎到很底去加油,還給我加到200元,不只我當場傻眼,我看後面那個機車騎士(還載女友),表情也怪怪的盯著價格看。

中油提供的加油優惠並不多,目前在加油上能夠有補償的,以我所知道的就是:
1. 中國信託中油卡(每30元2點紅利;紅利看兌換商品,最划算大概每10點可以換到新台幣1元)
2. 自助加油(每公升便宜0.8元)

雖然都不多,但總比甚麼都沒有要好。

2008年5月8日

RRDTool初步認識與入門

人就是會手賤,手賤完之後就開始後悔,偏偏這世界沒有後悔藥,沒做前很期待,總覺得會更好,做了之後很後悔,後悔早知道就不做了。

RRDTool就是這樣,也因此出現了這篇~RRDTool初步認識,其實我一整個無言~

會玩NAT的,多半都會想玩玩mrtg,幾乎所有講到NAT建置的書,都會介紹SNMP和MRTG,MRTG幾乎已經是流量分析中的王者。
可是在玩過MRTG之後,經常會覺得MRTG不夠好用,總覺得哪裡怪怪的,例如:
1. 一張圖中,沒辦法多個機器的流量相疊比較
2. 一張圖中,統計資料永遠只有2筆,永遠只有線條+長條的圖
3. 那個流量的間隔時間,基本上單位都很固定,要長、要短都很不方便

而許許多多免費、商業的流量分析軟體,圖片一個比一個好看,當然就會讓人有種嚮往,接著~經過google大師的指點,很容易就會跳入RRDTool的陷阱中。

我在這邊強烈的建議,想跳但還沒跳的人,務必三思,RRDTool沒這麼好玩~
和MRTG相比,便利性是完全不用說了,覺得MRTG已經很難搞的,RRDTool不要碰。
和MRTG相比,功能性並沒有比較強,仔細看所有對RRDTool的介紹都提到,RRDTool是一套強大的「圖表繪圖軟體」,但很少會說它是一套強大的資料收集軟體。

如果執意要跳的,我們繼續看下去... :p
關於RRDTool的中文教學,毋庸置疑的,「rrdtool 教學」的確是經典。
但經典不代表解說完整,作者自己也說了,「rrdcgi 或 rrd 的 perl module 皆不在我們的介紹範圍」,但我認為,RRDTool的module才是關鍵。
其實上述的教學,很值得參考的是「語法解說和介紹」,就語法的解說來說,這篇真的是經典,事實上,整篇教學也是著重在語法的部份。

好拉~其他廢話不多說了,我們開始「初步認識」RRDTool吧!
這邊要備註一下,我這邊不會提到任何語法,因為我還沒看到那邊,而且語法部份上面的教學才是經典,我主要會針對RRDTool入門時的疑問進行解釋。

首先,我們先從MRTG開始說起,畢竟這是大部分人都聽過的,也是會接觸RRDTool的人多半都有經驗的,所以我假設大家對MRTG都有基本認識,如果問MRTG是什麼的,請先去翻翻書。
MRTG在流量分析來說,算是整合的很好的工具程式。
MRTG其實包含了2個部份:
1. 流量收集
2. 圖表繪製

我們都知道要使用MRTG前,要先安裝SNMP,事實上MRTG所有的流量資訊都是從SNMP取得的,也就是說,SNMP就是一個提供流量資訊的伺服器,你用程式連它,它就會給你「現在的流量」。
所以MRTG的第一部份功能,就是定期的詢問SNMP Server(通常是用crontab),取得流量。
這部份MRTG比RRDTool方便非常多,方便的地方在於,MRTG提供了「cfgmaker」這樣的程式,透過它就能幫我們詢問SNMP,並轉換成MRTG的設定,「我們完全不需要知道SNMP查詢出來的資料格式」。
同樣的,在每次MRTG執行時,我們一樣不需要知道SNMP的資料格式,MRTG就會幫我們轉譯成它要的資料,接著自動存成特定的紀錄檔(例如:127.0.0.1_2.log)。

MRTG的另一部分功能就是「圖表繪製」,前面產生出來的log檔,MRTG會自動把相對應的圖表畫出來。
因此MRTG的動作流程是:
執行 mrtg /etc/mrtg.cfg 後

詢問SNMP目前流量 -> 畫出圖表

比較詳細的流程是:

判斷 mrtg.cfg -> 根據 mrtg.cfg 詢問SNMP目前流量 -> 儲存成 xxx.log 紀錄檔 -> 畫出圖表 -> 儲存成PNG 圖檔

而 RRDTool 和 MRTG 也有些類似,但又不完全一樣。
RRDTool 同樣有 2 個部份的功能:
1. 資料紀錄(但不包含 SNMP 的溝通)
2. 圖表繪製

RRDTool 的紀錄檔格式和 MRTG 完全不同,它使用的紀錄檔格式是 .rrd 的檔案,是自訂的特殊格式。
此外,RRDTool 在圖表繪製的部份有非常大的彈性,在 MRTG 中,「永遠只有一種圖表樣式」,每個圖表「永遠只能有 2 筆資料」,RRDTool 提供了更多的圖表繪製功能,好處是,你能根據需要畫出複雜的圖表,壞處是,你必須從頭到尾自己定義圖表的線條樣式、單位、類型,有點像是M$ Excel中,製作圖表的文字版設定,這讓 RRDTool 圖表繪製變得很複雜。

和 MRTG 相比,RRDTool 有幾個差異點:
1. MRTG 將全部流程包裹起來,每次執行都是完全動作;RRDTool 則把流程的動作分離,資料紀錄歸資料紀錄,圖表繪製歸圖表繪製
2. MRTG 提供 SNMP 的溝通,能夠自行解析 SNMP 的資料;RRDTool 沒有辦法自行解析 SNMP 資料,它的資料紀錄,只用來產生 .rrd 紀錄檔

所以我們到這邊可以先做幾個小結論:
1. MRTG 的功能性來說,是比 RRDTool 更強的,因為它包含了 SNMP 的解析,而 RRDTool 沒有
2. 我們可以發現到,RRDTool 使用的資料紀錄不是單純的 .log,而是自有格式 .rrd,就資料儲存的彈性上,會比 MRTG 更好。
3. RRDTool 的效能可以大幅超越 MRTG,原因包括:
a. 因為 RRDTool 把所有操作流程分離,我們在定時操作時,只需要產生 .rrd 紀錄檔,並不需要畫圖表
b. RRDTool 因為使用特殊的格式,能加快處理速度,在 .rrd 紀錄檔的存取上可以比 MRTG 更快
c. RRDTool 並不需要額外解析判斷 SNMP 的 code,因為 RRDTool 定位是圖表繪製工具,並不是專門的流量繪製工具,所以並不負責 SNMP 資料的判讀,這也加快了它的速度,讓程式在這部份更單純
4. MRTG 只提供「一種圖表樣式」,缺乏彈性,但是簡單方便,RRDTool 彈性很大,但是需要自訂很多繪圖的參數

接下來,我們來介紹rrdtool 教學中沒提到的rrdcgi。

RRDTool 本身雖然是個應用程式,但是 RRDTool 也有提供其他語言用的 module,可以讓其他語言直接呼叫執行。
以 RRDTool 本身來說,作者開發了 rrdcgi,這個程式可以被用來產生 web-page。

想想看,我們在上面提到過,RRDTool 把操作流程分離,定時產生 .rrd 資料和圖表繪製是分開的。
而作者又另外提供了 rrdcgi 來產生 web-page,因此我們可以注意到,「RRDTool 的圖表繪製部份並不需要定期來製作(意思是:我們不用每 5 分鐘產生很多張 PNG 流量圖)」,事實上,我們可以利用 rrdcgi,當使用者瀏覽網頁時,動態的產生圖表。
這樣的好處是,我們不需要每 5 分鐘產生一次,可以在有人瀏覽時才產生,對於比較小的伺服器來說(像家裏的電腦),可以節省很多系統負載;對於專門的 Log Server 來說,可以把圖表的負載轉嫁出去;對於更有即時性的資料來說,我們可以更即時的繪製出目前的資料。

前面我們提到過,RRDTool 的資料收集並不方便,要蒐集 SNMP 的資料,居然還要我們自己用 snmpget 來抓資料,並且自己分析內容,想到就昏倒了。
有沒有更方便的辦法,尤其是已經使用 MRTG 的我們,要轉移到 RRDTool 有沒有更快的方式。

有的~我們可以在 mrtg.cfg(通常是 /etc/mrtg.cfg) 中加入下面這條:
LogFormat: rrdtool

之後執行
mrtg /etc/mrtg.cfg

MRTG 就會非常聰明且自動的幫我們把 MRTG 的所有 .log 紀錄檔轉換成 .rrd 紀錄檔,未來每次的執行,都會自動更新 .rrd 紀錄檔。

這樣的意義何在?
前面我們提到過,MRTG 和 RRDTool 的一個不同點在於,MRTG 包含了 SNMP 的資料解析能力,RRDTool 沒有,而使用上面的設定之後,我們就能夠利用 MRTG 幫我們把 SNMP 的資料解析出來,之後它會自動呼叫 rrdtool 把資料寫成 .rrd 格式的紀錄檔。
如此一來,我們不需要擔心 MRTG 轉移時舊紀錄遺失,也不用為了如何用 snmpget 產生 SNMP資料,更不需要煩惱 rrdtool 收集資料時的參數,我們只需要把重心完全放在 RRDTool 的強項,資料繪製上。
這邊要注意,雖然上述辦法似乎不錯,但是 RRDTool 收集資料時有很多參數可以設定,用 MRTG 來幫我們產生 .rrd,這些設定是沒辦法用的,意思是,「如果需要更詳盡的紀錄資訊,自己寫資料解析程式仍舊不可避免。」
這邊我的建議是,「從 MRTG 開始,MRTG 用得很順了,開始改用 RRDTool 來繪製圖表,之後再更進一步自己寫解析程式,自己使用 RRDTool 來建立資料。」

我們都知道,傳統上來說,CGI 大多是 perl 寫的,CGI 的缺點我就不多說了,這已經是 FAQ 的答案了,而 RRDTool 提供 rrdcgi,從網頁上就提到了,它能提供 shell/perl 的操作。而其他語言呢?

RRDTool 也提供了包括 Ruby、Python 的 module,透過這些 module,可以在不同的語言中呼叫使用 RRDTool,尤其因為這類 module 都是呼叫 librrd(RRDTool Library),因此速度上、效率上都會比 system() 執行 rrdtool 要更好。
而以我來說,我個人在 shell script 和 web 中,偏好使用 php,也只會使用 php,有沒有 RRDTool 的 php module 呢?
有的~RRDTool 的 php module 教學網址如下:
http://www.ioncannon.net/system-administration/59/php-rrdtool-tutorial/

由於 Debian/Ubuntu 套件庫中並沒有包含 RRDTool 的 php module,因此我們要自己「製造」出來,相關的教學網址如下:
http://www.ioncannon.net/system-administration/25/how-to-build-the-php-rrdtool-extension-by-hand/

目前我已經做成功了,phpinfo() 中已經有顯示 rrdtool 的 module,相關的教學會在之後另外 po 一篇。

最後最後,在初步認識的最後面,我要提出不使用 RRDTool 的意見。
前面提到過,RRDTool 分為「資料紀錄」和「繪製圖表」兩部份,我們可以看作:
前段-資料蒐集
後段-繪製圖表

1. RRDTool 在前段-資料蒐集中,並沒有提供任何資料解析的能力,因此如果認為 MRTG 的資料處理並不夠好用,那麼不用考慮 RRDTool 了,RRDTool 這部份更差、更複雜(資料建立時,參數很多很麻煩),此時你該考慮,是否自己試著寫資料解析的程式。

2. 如果你認為在前段-資料蒐集中,用檔案儲存紀錄很討厭,不幸的,RRDTool 同樣是以檔案來儲存紀錄,並沒有以 SQL Server 儲存,不過目前這部份相關資訊還沒找很齊,目前看起來不太好找。

3. 如果覺得 RRDTool 後段-繪製圖表的功能不符合需求,例如無法繪製成 .swf 的 Flash 檔案,那麼除非你已經用 MRTG 很久了,轉成 RRDTool 和 .rrd 資料看起來似乎比較好處理,除此以外,不建議使用 RRDTool,自己乖乖的畫 Flash,乖乖的寫分析程式,應該會更方便些,因為這些 RRDTool 都幫不上忙,用了 RRDTool~多此一舉~

2008年5月5日

2個發展中的異想

我相信創新的想法,來自於莫名其妙的想像和奇特的需求。

我有時候會想一些奇怪的想法,並且嘗試找找看有沒有人在做,透過google的幫忙,很容易可以發現,但也同時證明了,全世界人實在太多了,創新的想法,其實別人早就想到了,而且已經研究很久了。

我在去年剛想要做Ad-hoc network時,就想到個問題,在Ad-hoc network上,尤其是Wireless Sensor Network上,省電議題一直是一個大問題。
省電不外乎就是開源跟節流,目前幾乎所有的省電議題,都放在節流上。
事實上,我們在接802.11的wireless AP時,必不可缺的永遠是「網路線」和「電源線」。
如果要做到完全無線,網路線的部份問題很簡單,只需要統統用無線網路即可,但電源呢?

目前所有野放、移動的wireless device,電源的解決方案都是「電池」,頂多加上「太陽能」之類的充電電路。
電池的問題在於,他的電量只會減少,不會增加,增加的辦法就是充電。
現在讓我們以共享的角度來看,網路的部份大家研究很多,透過網路的方式,共享或交換資源,利用資訊共享的方式,讓所有wireless device一起合作,達成許多神奇的事情,這也是我們使用它的(一堆wireless device)重要原因。
但電力呢?電力有沒有辦法共享?假設一堆wireless device,A device的電量多,B device的電量少,偏偏B device所在位置又很重要,我有沒有可能把A device的電力傳給B device,就算中間有損耗,只要能夠讓B device運作更久,它就是有價值的,這樣的想法有可能實現嗎?
接著讓我們更進一步來想,什麼是無線網路?什麼是無線電?
無線網路的基礎,其實就是無線電,根本來說,它跟AM、FM是一樣的東西,差別只在於上面傳的是類比訊息還是數位訊息。
而無線電是什麼?無線電其實和船上用的燈號一樣,我利用振盪器,把電以能量的形式震盪出去(發射出去)(發射機端),另一端用接收器,把震盪出來的電能接收進來(接收震盪能量進來)(接收端),接著判斷這個震盪大小、幅度...等。
由此可以發現,無線電和無線網路,其實就是一種能量傳遞的應用,我們從A device上發出能量,在B device上把能量接收進來,判斷出能量的意義之後,把能量拋棄。
那麼,我們有沒有可能把無線電的信號加強,把接收到的無線電信號,他的電能接到充電電路上回充到電池呢?
其實很有可能,事實上,這樣的電力傳輸機制,MIT已經在研究了,而且研究很多年了,看看如下的介紹:
Goodbye wires... MIT experimentally demonstrates wireless power transfer

中文的介紹:
再見電線... MIT 示範無線電力傳輸

就是這麼回事。

另一個想法是今天早上騎車時想到的,不過也有很多人在進行相關研究了。
現在不斷的講再生能源,再生能源的議題非常重要,而再生能源說到底,其實就是找出各種能量,並嘗試把它轉換成電。
能量其實是很單純的東西,任何的變化其實都是能量的表現,但問題在於,並不是所有變化都能夠被應用。
國外已經有車站、健身中心設計利用人走路,或健身的腳踏車進行發電,而我曾經想過,現代人每天坐在椅子上的時間長的嚇人,如果可以在椅子上安裝發電機,人坐著就能夠發電,那發電量一定很可觀,我把想法跟我爸說,被否定了,其中有個關鍵,那就是沒有動能。
人坐在椅子上,除了椅子承受地心引力和人的重量,在上面安裝類似彈簧這樣的東西,它有可能有動能出現,否則它其實是沒有動能的。
今天早上我則是想到了電腦,電腦是非常偉大的發明,掌握電腦在這個時代非常重要,可是是人都知道,電腦速度越快,消耗的能量越高,發出的熱越嚇人,我其實一直不了解,像美國的M1A2坦克,裡面完全資訊化、電腦化,在沙漠作戰,電腦怎麼散熱的?我估計是靠冷氣機~
有電腦和沒電腦,在根本上是有非常可怕的差異的,舉幾個戰場的例子:
1. 每個士兵攜帶通訊電腦
當每個士兵都攜帶通訊電腦時,你們不用交談就能知道彼此位置,甚至知道敵人位置,這種即時的眼睛資訊非常厲害,當對手還在估算同伴位置時,你已經可以用隊形和技巧繞到他們附近擊殺他們。
2. 炸彈有了電腦
本來炸彈、砲彈的施放,需要根據觀測員觀測目標,調整砲的威力、角度、位置,發射數次後命中目標。但炸彈、砲彈有了電腦之後,利用電腦的快速計算,隨時調整位置和速度,可以做到一次命中。
其他就不提了~

既然電腦這麼重要,卻這麼會發熱,有沒有一勞永逸的辦法?
電腦的熱怎麼產生的?目前怎麼把熱消去的?
以CPU來說,CPU裡面有非常多的電晶體和電路,當電腦不執行時,走A線路,跳過所有電晶體,但是當電腦執行時,走的線路會根據程式,錯綜複雜的變化,經過許多電晶體。
熱,其實就是由電晶體和線路產生的,電流過線路時,一定會產生熱,當經過「很多線路」時,熱一定會很多,同樣的,電流走過電晶體也會產生熱,經過越多的電晶體,產生越多熱。
這些由線路(電線)、電晶體產生的熱,其實就是損耗,舉個簡單的小例子。
假設電源產生100W,實際運作時,CPU吃100W,但是CPU上所有元件總消耗功率只有70W,另外30W就是CPU的損耗,它就會以熱的形式發散出來,熱就是這樣產生的。
那目前把熱消去的辦法其實很單純,就是利用風扇,用風快速的把冷空氣帶進來,把30W的熱帶出去。換句話說,就是利用大自然,把熱帶走(就是把熱拋棄掉)。
那有沒有可能進一步把這個熱拿來利用呢?畢竟這個熱也是能量的一種,而且只要CPU不斷再運作,就會不斷的被產生。
我今天早上騎車時想到,是否能夠把這些熱集中,利用熱空氣上升、冷空氣下降的方式,把整台電腦全部的熱導引到某個地方,然後接上一個小型的壓力鍋,透過不斷產生的熱來加熱它,當壓力到達時,推動小引擎來發電。
不過這作法太複雜了,而且效率感覺並不好。
真正目前被視為有價值的相關研究其實是所謂的「熱電發電」,類似如下:
體熱發電機?

它的原理如下:
超薄熱電模組設立熱電應用全新性能標竿
利用電腦廢熱發電! 熱能轉電能技術
神奇的熱電材料——利用溫差的熱電發電技術

簡單的說,它的發展和太陽能電池有些雷同,有人發現某些金屬導體,當2片金屬導體的溫度差異很大時,會出現電流的變化,反之亦同。
因此目前出現了2種發展:
1. 以這樣的模式,我們加強上面的電流,這樣一來可以讓2片金屬導體的溫度差異更大(一邊更冷、一邊更熱),這樣的東西叫做「致冷片」,目前已經很常見了,例如:
勝特力 - 熱電半導體(致冷片)

2. 以同樣的模式,當溫度差異很大時,我們可以從電流的變化中,慢慢的汲取電流,讓它變成一個小發電機,這種作法就是所謂的「利用溫差的熱電發電技術」,目前還不大容易找到產品(可能商業市場有,零售市場還很難買到),這種作法顯然比我前面提到的想法更好些,這種作法目前是一個再生能源重要的發展之一。

想法很重要,要能想出別人沒想到的想法很難,儘管如此,我認為能夠有些異想仍舊是很重要的,畢竟所有的創意,都是這樣來的,況且以上面我提得來說,雖然都有人提出一樣功能的作法,而且方法更好,但有時候並不代表我的想法就不適用,有可能我的作法也能走出特別的路,適用在特別的場合中。
前面提到的想法乃我想到的,不過我並沒有深究是否已經被提出過了,如果覺得想法很有趣想討論或研究,我們也許可以聊聊,提出時記得把我的大名列出來,讓我也過過發明人的癮。:p

需要買濾水器嗎?還是別浪費錢吧~

這件事起因於我妹。
從很久之前就聽說過最好的開水,還是用煮的。
因此從前年開始,我在夏天都會煮開水放,可是我妹都不喝,她寧可花錢買礦泉水,也不願意喝煮的開水,一方面她認為礦泉水比較乾淨,另一方面她覺得礦泉水沒有異味。

最近她從我媽那邊聽說濾水器,因此一直遊說我爸買濾水器,昨天去逛家樂福時,還非常認真的聽推銷員解說濾水器,我呢?我看到濾水器的價格,就非常不以為然,非常反對買這種東西。

首先,濾水器非常貴,這是最大的問題,一台濾水器至少要10,000元(新臺幣)以上,貴一點的甚至要20,000元以上,以現在來說,20,000多可以買到一台NB、PC了,兩者的價值和技術差異這麼大,是我寧可把錢拿來買NB、PC,況且現在甚麼情況,全球性通貨膨脹,甚麼都超貴,省下來更好。
再者,濾水器並不是一次投資的,它的濾心必須定期更換,反過來說,不定期更換濾心的濾水器,它出來的水的品質,事實上水的品質會更差,甚至比煮的開水還差,因為經過二次污染。而最重要的,濾心也不便宜,長期下來,其實是不小的開銷。
接著,濾水器出來的水就可以直接喝嗎?所有濾水器的廣告都跟你說濾水器的水可以直接喝,推銷員也跟你說濾水器的水可以直接喝,但是除非是蒸餾式的濾水器,因為它取的水是煮開後的水蒸氣,否則大部份過濾式的濾水器都沒有殺菌的效果。所以實際上,濾水器的水還是需要煮過,用煮開水的動作來殺菌。
況且,台灣的水質,尤其是身在台北市的我們(外縣市的朋友不好意思拉~),翡翠水庫水質之好是眾所皆知的,只要確定管線是乾淨的,水池、水塔有定期清洗,生飲都可以,在來源可以確保的情況下,多買一個濾水器根本是浪費又莫名其妙的行為。
解釋再多,還是會有很多疑慮,畢竟我不是專門「搞水」的,來看看下面由「台北自來水事業處」針對濾水器的說明吧。
優質自來水,不必多「濾」!

仔細看其中常見濾水器的不實推銷手法,這讓我非常印象深刻,因為昨天在家樂福,我妹就是聽推銷員用這些方法解說的

我個人認為,我妹一直覺得煮的開水有味道,經過網路搜尋之後,目前來說,我認為應該買個竹炭片,不論是煮開後丟到水裡,或者煮的時候丟進去一起煮,竹炭就能夠把味道吸收,事實上,我認為濾水器中讓水沒有味道,主要也是靠活性碳濾網把味道吸附的,與其花這麼多錢做出一樣效果,還不如買個竹炭片除臭,更加經濟、方便。
對於竹炭的效用或建議,我目前還沒用過,而且同樣都是炭,價格差異性非常大,我也不了解差別在哪,就目前來說,我是覺得越便宜越好,畢竟炭能吸收異味,至於是木炭、竹炭、備長炭,我覺得都差不多,差別要真的用了,而且每個都用很多次才能知道。

2008年4月29日

歷年來的Windows版本與開機音樂

在YouTube看到的,這是到目前歷年來各Windows版本的開機畫面和開機音樂,看起來其實還滿懷念的,而且好幾首音樂其實都滿好聽的。:p
廢話不多說,點選播放吧~~~

2008年4月28日

程式設計之快速入門法

程式設計對大部分人來說,都會感覺是非常專業的東西。
從我小時候接觸到的電視、電影經常可以發現到,裡面的電腦高手,往往都是對著電腦不斷的打字,然後螢幕不斷顯現各種奇怪的畫面或程式碼,就算程式碼出現的只是9x9乘法表,都還是會讓人感覺非常的專業。
也許因為電腦的發展往往跟『高科技』畫上等號,又也許電腦常常出現在讓人感覺不可思議的場合,也可能是電視、電影長期灌輸的電腦高手印象,不論是任何人,只要看到在寫程式的人,都會從內心升起一股莫名的崇拜。

而我個人來說,從國小就開始玩電腦,還記得小學六年級上電腦課,還簡單的寫過GW Basic,以我的年紀來說,和一些年長些的高手相比,我還嫩了些(看過有blog,有比我大10歲左右的高手,在那個年代就在超頻286、386),但跟其他大部分的人相比,我的電腦經驗算是很早的了。

很多人想要學習程式設計,會去上課、補習,很多人在學校上電腦課上了一個學期,仍然不會寫程式,看著一些所謂的電腦高手,短時間內就可以把程式寫出來、跑出來,往往都會感覺很不可思議,從內心發出一聲『高手阿~』的吶喊。
包括我在內的許多可憐蟲,只有在這種時候,才會莫名的受到歡迎,班上不熟的男女咖,會在這種時間點突然跟你聊天,這種時候就會想,電影上又高又帥的電腦高手,其實從來不曾出現在現實生活中~(抱怨到此結束~)

那到底程式要怎麼寫?怎樣才可以快速的入門,學會程式寫作?

經過這麼多年的經驗後,我可以告訴大家,關鍵只有2個:
1. 語法(包含if, for, while...等使用)
2. 函式

不論是哪種程式語言,不管是硬體的、軟體的,比較硬一點的,比較軟一點的,軟硬適中的,通通脫離不了上述2個關鍵,差別只在稱呼和用法。

以高階的程式語言來說,我們拿Java來說(我Java還是比較熟些,比較不會漏氣... :p),跟C相比,Java的語法比較特別,因為它有物件導向的概念,所以程式碼長的會和C比較不同,而和其他物件導向的語言相比(c#、php...等),因為概念很接近,又都互相摹仿,所以語法會長的很接近。
我在之前曾經提過關於Java物件導向主程式的樣式,這類樣式通常是很固定的語法,建議直接背起來比較快,因為解釋了半天,結論還是把它背起來。
其他比較細節的語法,以Java來說,String a = new String();這種樣式,通過Example的一再練習,可以幫助快速的熟悉語法。

而程式語言的另一個重點在於函式,當我們語法熟悉之後,最重要的就是要找出這個語言提供的函式,了解我們有哪些函式可以使用。
以我個人感覺來說,以100分為滿分來看寫程式這件事情,會語法可以讓你從0分變成35分,知道函式之後,可以讓你從35分變成70分,2者對於寫程式的重要性就是這樣。

也許會說,你提的是高階語言,那低階語言呢?
以8051組合語言來說,以我之前當助教的經驗來說,很多人覺得很難,我以前還不相信資工的會怕寫程式,在我親自上課、帶課之後,才深刻發現到,原來資工的同學,對於組合語言有種莫名的懼怕,這是我以前在電子科系時候沒有出現過的。
以8051組合語言來說,同樣可以代入上述的2個關鍵,只是稱呼有些不同,在8051組語中,兩者分別是:
1. 語法
2. 指令集

其實8051組語給我感覺比PC上的Java簡單非常多,它的函式(指令集)從頭到尾,從尾到頭,怎麼數也都是那十幾二十個。
不論怎麼變化,永遠都是這些指令集的搭配使用,基本上能夠掌握住指令集,看得懂語法,知道如何用指令集來寫出if, for,那麼基本上8051大概前1/3的課你已經ok了。

同樣的情況也適用在Verilog這類硬體描述語言,尤其是Verilog,它的語法長的跟高階語言比較像,入門其實容易些,因為我這方面不很熟,只修過一個學期的課,能力僅僅只是用C的寫法去寫Verilog,不符合block設計的概念,模擬時還ok,實際下去跑,我相信會有很嚴重的delay問題,細節就不方便拿來解釋了。

電腦其實是很單純的東西,不論它的程式怎麼變化,最基本就是很多很多的指令(指令集),所謂的程式,就是指令集的組合。
當程式的層次提昇之後,指令集已經不足以描述程式的動作了,因此變成了function(函式),但這些函式的設計,本質上和指令集是類似的,當加入物件導向概念之後,function為了適應物件導向的敘述和設計,變成了類別、物件(Class),但本質上來說,仍舊是指令集的延伸,因此程式設計上,就是先找出能夠使用的指令集、function、Class。

而語法也是一樣的情況,因為程式的層次不同,最底層就是使用特定的格式把指令集組合起來,並使用if(8051組語中的JZ xx xx,當暫存器內容等於0的時候跳), for(DJNZ xx xx,當暫存器內容-1等於0之後跳;非8051的單晶片,很多沒有DJNZ這樣的指令,同樣可以用SUB xx xx加上JZ xx xx,讓暫存器內容-1,等於0時跳)讓電腦進行判斷和重覆操作,這就是電腦最基本的操作方式。
而層次不斷的提昇,可以讓程式的複雜度越來越高,但是基本上仍舊脫離不了電腦本質的操作方式(if, for),而為了更接近人的語言,專門設計了int x = 10;這樣的敘述樣式和String x = new String();這樣的敘述樣式,但根本上還是組合函式(組合指令集),並使用if, for的電腦操作。

結論,從上面提到的一堆可以知道,要學寫程式,最快的方式就是了解語法,找出可以用的函式,只要掌握這兩點,我相信任何程式語言都能夠比較快速的上手。

看到這裡其實文章算是結束了,但是可能會有人有疑問,感覺還差了甚麼,也有人會問,上述2點掌握了,我能拿到70分,那要拿80,90甚至更高要怎麼拿?所以我加了這段~

要拿到70分很容易,要拿更高就有難度了,關鍵在於:
3. 了解程式語言的模式、設計

這部分以8051組合語言來敘述很貼切,8051前面1/3除了頭2堂課解說8051的接腳、歷史之外,主要在教基本I/O和語法,先讓同學熟悉語法。
但是從1/3開始,會開始教Timer、中斷、七段顯示器操作、鍵盤掃瞄...等,這每個部分的程式設計都很特別,都具有某些特色,像Timer要使用要先設定某些暫存器,中斷要使用要設定某些暫存器,中斷又能和Timer搭配使用,鍵盤掃瞄要以迴圈方式不斷的檢查按鍵...等,這些就是8051組合語言的模式、設計。
同樣的道理也出現在Java上,Java許多Class我們都需要看Example,而且Class之間使用的方式差異性很大,像是Java的I/O(BufferedReader、BufferedWriter)這種設計就和C的I/O完全不同,沒看過範例,可能很難了解怎麼使用它,這就是Java在I/O的模式、設計。
在Java上同樣情況也發生在資料庫呼叫(JDBC操作),JDBC固定那4,5個步驟,如果沒看過Example,很難理解它要怎麼寫,這就是Java在資料庫操作的模式、設計。
而在Linux上的C也是這樣,因為在Linux上,相對Java來說又是比較低階的程式語言,有許多POSIX特性的設計和function,像我之前寫MYVIDEO時才學到的IOChannel,這在舊版的Java是沒有的,都要用Thread,新版的Java(1.5還是1.6吧~)才加入了類似的機制。
而在Verilog更是明顯,Verilog的設計都以Block為思考方式,設計上比較接近pipeline的概念,程式設計強調的是同時所有Block一起操作,但每個Block只操作一個動作,而且Block設計的程式碼以精簡為訴求,Block內程式愈短,整顆IC在每個clock的delay可以控制的愈短。
這以高階語言來看,有點像是同時設計超多的Thread,每個Thread要求又要像Interrupt內容一樣,愈短愈好。
而程式多半建議以加法器、減法器來組合,概念類似AND、OR、NOT的邏輯閘算式,這就是硬體描述語言的模式、設計。

這部分的經驗愈豐富,看的Example愈多,分數可以拿的愈高,掌握基本的幾個模式、設計,分數可以從70分拉到80甚至90分沒問題。

而我認為最後一個程式設計的要點,算是:
4. 演算法&Model

這點和3有些關係,畢竟很多模式、設計,都是演算法&Model實作出來的,所以第3點和這第4點間的界定有些模糊。
不可否認,電腦其實就是計算機,計算機主要就是用來算數學用的,所以電腦最初的發展,就是用來進行高速運算,一直到現在,儘管電腦有了很多發展方向,但運算能力仍舊是電腦的主要核心,高速運算也一直是電腦發展中一個主要的領域之一。
正因為如此,演算法在電腦的程式設計中,是很重要的部分,目前全世界有數不清的演算法正在發展,但更多的是成熟的電腦演算法,要晉升到電腦高手,程式設計能力要從80~90上升到90以上,學習電腦演算法是不可避免的,正如前面提到的,很多模式、設計都是從演算法、Model實作出來的,但我們無法保證所有程式語言都有提供這些演算法,這時候如果能夠自行寫出符合環境需要的演算法,那麼對於程式效能、程式功能都會有決定性的影響。
而Model也是,因為電腦程式越來越複雜,大量的Interface和Model是不可避免的,這可以降低程式的複雜度,讓程式碼更容易理解,更方便開發,電腦設計中同樣有很多成熟的Model被廣泛運用,這類的Model接觸愈多,對於程式設計的幫助愈大。

我個人評價,當你已經是個腦中有許多演算法設計、許多Model設計,又對於很多程式的模式、設計很有經驗,那麼你可以打聽看看別人對你的電腦評價,應該不會低於85分。

2008年4月27日

unixODBC 教學

在Windows上寫過資料庫程式的,應該都聽過ODBC這個東西,這東西全名是Open Database Connectivity,由M$所制定的,相關說明可以參考中文維基百科-ODBC或更詳細的英文維基百科-ODBC

簡單的說,M$為了統一所有資料庫系統在Windows上的存取方式,因此訂出了ODBC這樣的介面標準,並開放給資料庫廠商呼叫使用,而且美其名叫『Open Database Connectivity(開放資料庫互連)』,但實際上,開放在哪裡?
而且一直來說,都是M$說,別人做,哪來開放的道理?
更有趣的是,翻翻Visual C++、Visual C#、Visual Basic...等任何一本書,M$實際上建議大家使用ADO,並說使用ADO呼叫資料庫會有比較好的存取效率,因此我們完全可以認為,M$提供一個介面給別人用,但是包括他自己在內的所有人都知道,多一個介面來存取資料庫,並不會提昇效能。
不過這個介面並非都是缺點,有了ODBC,Windows上所有資料庫存取都有了統一的呼叫方式,這讓程式開發時,有了統一的資料庫呼叫,對資料轉移,程式碼的彈性都有幫助。

可惜ODBC的這一切都只在Windows上,事實上除了Windows之外,很多OS並沒有ODBC,結果說到底,感覺M$比較像是自己定規則給別人(ODBC),但是自己也建議別人不要用(建議用ADO)。

目前Linux/FreeBSD上已經有Open Source的ODBC實作,要設定使用都很容易,教學如下:
===================================
Linux 上要設定 ODBC 很容易,首先要知道,Linux 上的 ODBC 有兩套,分別是:
iODBC
unixODBC

這裡我們使用 unixODBC,並搭配 MySQL。

使用 Ubuntu 時(Debian 應該一樣),安裝套件:
unixodbc unixODBC 主程式
unixodbc-bin unixODBC 圖形化設定介面
libmyodbc MySQL 的 unixODBC Driver

安裝好之後,要設定很容易,他的設定分 2 部分:
一個部分是設定 unixODBC 的 Driver,MySQL Driver 的設定有提供 example,位置如下:
/usr/share/libmyodbc/odbcinst.ini

如果是第一次安裝 unixODBC,這時候正常是沒有任何 Driver 設定的,
那我們可以簡單的直接把設定檔複製到 /etc/ 下,如下:

# cp /usr/share/libmyodbc/odbcinst.ini /etc/

如果曾經安裝過其他 Driver,
我們可以把 /usr/share/libmyodbc/odbcinst.ini 內容加入到 /etc/odbcinst.ini

另一部份就要先提 Windows 上 ODBC 的設定,
在 Windows 上『控制台』->『系統管理程式』有個『ODBC資料來源

裡面可以設定 ODBC 的資料庫來源,內容包括 SQL Server IP、帳號、密碼、資料庫名稱...等,
然後只需要透過 ODBC 的名稱來使用這些資訊,並連線到 SQL Server。
另外值得一提的是,『ODBC資料來源』中,有所謂的『使用者來源』和『系統來源』,
這指的是這個資料庫設定,是只有使用者看得到、用得到的,還是整個系統(所有使用者)都看得到、用得到。

而在 unixODBC 上也是一樣的,只是這些設定儲存在設定檔中,
以『系統來源』來說,所有使用者都能使用的 ODBC 設定,設定檔是 /etc/odbc.ini;
以『使用者來源』來說,只有自己能使用的 ODBC 設定,設定檔是 ~/.odbc.ini。

設定檔範例如下:
[MySQL-Optical_Disc_Manage]
Description = MySQL Optical_Disc_Manage
Driver = MySQL
Server = 192.168.1.6
Database = Optical_Disc_Manage
Port = 3306


格式說明如下:
[ODBC連線名稱]
Description = 這個連線的描述
Driver = Driver的類型,這部分參考 /etc/odbcinst.ini
Server = SQL Server IP
Database = 資料庫名稱
Port = 連接埠埠號


而 odbcinst.ini 正常來說,Driver 都要提供範例,以這邊 MySQL 為例,它的內容如下:
[MySQL]
Description = MySQL driver
Driver = /usr/lib/odbc/libmyodbc.so
Setup = /usr/lib/odbc/libodbcmyS.so
CPTimeout =
CPReuse =


注意到『[MySQL]』,這就是我們上面 odbc.ini 中提到的 Driver 欄位要填的內容。

上面說了一堆之後,我們可以發現到 unixODBC 設定實在有夠麻煩,尤其是 odbc.ini 的設定,
有沒有類似 Windows 上『ODBC資料來源』那樣的 GUI 設定介面呢?

有~我們前面安裝的套件『unixodbc-bin』,裡面就有提供這樣的工具給我們使用,
unixODBC 有 2 個圖形化介面工具可以使用,分別是:
ODBCConfig
DataManager

其中最重要、好用的,就是 ODBCConfig,如下執行:
# ODBCConfig

執行後會看到一個類似 Windows 上『ODBC資料來源』的 GUI 視窗。

如果前面已經有按照說明設定過了,
以我來說,我將上面 odbc.ini 的設定存成 ~/.odbc.ini,
那麼進入 ODBCConfig 介面後,我會在『User DSN』分頁看到這個設定。

目前,中文似乎還有問題,如何指定編碼目前我還不會。
==============================================

2008年4月24日

Ubuntu 8.04 LTS正式發佈

這新聞還很熱~

Ubuntu最新版本正式發佈,值得注意的是,這次發佈的版本是LTS版,所謂的LTS版是指這個版本會有較長的支援服務,原文介紹如下:
The "LTS" version of Ubuntu receives long-term support. 3 years for desktop versions and 5 years for server versions.

Ubuntu 8.04 LTS Desktop Edition - Supported to 2011
Ubuntu 8.04 LTS Server Edition - Supported to 2013

下載可以到Ubuntu美國的下載頁面選擇下載,頁面網址如下:
http://www.ubuntu.com/getubuntu/download

如果在台灣,想直接從台灣站台下載,下面是台大的下載連結:
Ubuntu 8.04 LTS Desktop Edition - Supported to 2011
Ubuntu 8.04 LTS Server Edition - Supported to 2013

2008年4月21日

寶特瓶重複使用來減量~政策倒車?

看看如下新聞:
德國採重複使用減量 環團促傚法

整篇新聞看起來立意良好,似乎是合情合理的,可是讓我們把時間推到20年前。

有多少人還記得20年前寶特瓶飲料的價格?
如果我沒記錯,當時是15元一瓶。

當時環保署(局?)推行寶特瓶回收計畫,為了讓計畫能夠順利推行,當時把所有寶特瓶的價格都漲了2元(變成17元),這2元叫做什麼寶特瓶處理費還是寶特瓶回收費。
只要我們把喝過的寶特瓶拿回7-11,就可以拿到2元,而學校各個班級,也盡全力要全班努力收集寶特瓶,全校各年級比賽,看哪個班級收集的最多,而這些回收的錢,都是用作班費來使用。
上面這段過去,我相信六年級生和七年級初段班的學生應該都有印象。

在過了多年之後,我們發現到寶特瓶飲料這2元從來沒有降回來過,而寶特瓶回收也偷偷地消失了,現在的寶特瓶回收,似乎變成了自發性的行為,那我想問,回收金到哪裡去了?當時廠商因為回收金偷漲的2元到哪裡去了?

而過了20年之後,現在又出現了新聞,建議我們把寶特瓶重複使用,這不是很諷刺嗎?因為類似的政策,在20年前就定了,而且也實行了很多年,既然寶特瓶飲料只有漲價沒有降價,那麼我們是否可以相信,整個回收流程已經制度化拉~

因此這則新聞我特別有意見,並把它po出來是因為2點:
1. 類似的政策應該以前環保署就推行過了,而且當時還是結合廠商、通路...等,以回收金的方式加到使用者身上了,這顯然變成政策倒車
2. 既然現在又被提出來,那麼台灣當時的寶特瓶回收政策,是否已經失敗了?那我們的回收金呢?是回收業者污了,還是廠商污了?
3. 還是其實台灣這方面已經做的很好了,這則新聞純粹是搞不清楚狀況的記者,加上幾個搞不清楚狀況的人士亂寫出來的?

2008年4月17日

Blog性能小提昇

新增「推推王」推文按鍵。
畫了一張「阿呆的blog LOGO」,使標題從原本單調的文字變成圖片,色調上我沿用了原來的色調,因此整體感覺不會和之前的標題差太多~

2008年4月10日

新增「繼續閱讀」功能

因為我blog經常都是長篇大論,所以就想加入「繼續閱讀」的功能,讓版面乾淨點。

我直接使用「繼續閱讀懶人加強版」,因為DIY的版本很多都需要自己設定「隱藏文章」,而繼續閱讀懶人加強版已經寫好JavaScript,除了加入參數方便設定之外,最重要的是有用JavaScript自動計算行數,固定顯示3行,對於我這種打blog不注意行數的人特別方便,因此就用它了。

2008年4月9日

台灣~裕隆~汽車設計

昨天上網亂翻,翻到了「飛羚101」~

可能是年紀的關係,我四周圍的同學沒有一個聽過這個東西,很不幸的~我竟然知道..... = =
讓我一瞬間就覺得,我老拉~這是兩代間的代溝~

其實台灣很可憐(不是民進黨的愛台灣),可能是民族自尊吧~往往大家都覺得我們並不輸別人,事實上,看看台灣高鐵,看看台北101,台灣的技術真的不輸別人,再看看當每次打棒球世界盃時,旅外的球員都會盡量趕回來參賽,當政府要發展火箭、飛彈時,總工程師往往也都是在國外有成的台灣人回來協助研發的,雖然這樣,可是很多台灣人不知道為啥都有種自卑感,覺得國外的比較好,外國的月亮比較圓。
也不想想,我們能造出高速鐵路、能蓋出全世界第一高樓,電腦能夠賣到世界第一,世界上多少國家連想都不敢想,去找找韓國高鐵的資料,人家韓國高鐵蓋到沒錢蓋,增資好幾次(增資就是多借一點錢,可能是沒錢了,也可能花費比預算高),到最後差點蓋不出來,鐵軌有1/3必須沿用現有鐵軌,最近才在慢慢重新改用高鐵專用鐵軌(版式鐵軌)。
世界第一高樓也不是說蓋就ok,看看上海那個什麼環球金融中心,1996年說要蓋世界第一高,結果蓋到後來沒錢了(遇到金融風暴),然後大樓就這樣放著~一放10年,最近才又繼續蓋~
我們至少是說做,然後就一路按照計畫進行,一直到完成~
這樣看起來,到底我們自卑在哪裡阿?

昨天因為看到「飛羚101」的影片,就一併找了相關的資料,下面是簡單的介紹:
飛羚101是台灣第一部自行研發的汽車,除了引擎之外,整輛車子都是由「裕隆」設計製造的,這台車子在1986年上市,之後陸續有「飛羚102」、「精兵601」,都是衍生車型。

根據mobile01的討論串可以知道,飛羚101是裕隆公司心中的痛,也是台灣汽車產業的痛,在20年前,台灣被國際排擠,被中國打壓(到現在),因此政府希望能夠把工業科技發展起來,除了改善台灣環境,增加台灣的能見度之外,也希望能夠反攻大陸。

在整個工業發展中,汽車發展是很重要的一個部份,其實我們可以稍微注意一下「偉人傳記」、「Discovery、國家地理頻道的科技介紹、科技成就」,因為這些提到的人物、科技背後,往往都是影響了未來數十年甚至上百年的世界發展,其中福特發明汽車就是一個大家耳熟能詳的故事。
在偉人傳記中,我們只會知道福特發明汽車,然後當時和歐洲其他幾個大型車廠的競爭(克萊斯勒、法拉利...等),但是書中並沒有提到其他國家的處境,中國就是當時可憐的國家,沒有競爭的機會,自然不可能發展到汽車產業。
其實同樣的情況也發生在火車,看看目前世界上有能力設計、製造高速鐵路、捷運的國家,往前追溯,幾乎都是在火車發展的時期,有公司有碰觸到,擁有技術,然後參與競爭的國家。
至於其他國家,沒機會發展到的,大概終其一身就只能當消費者了~

正因為這樣,台灣在完全沒有技術背景的前提下要發展汽車,說難聽點,根本是找死~
事實證明了,果然差點把裕隆玩死了~
很多人在罵裕隆根本是賣國,當初政府為了讓它發展汽車,根本就是錢當水在倒,結果你裕隆把車子做出來了,有了汽車的設計技術了,就把整間公司賣給日本的Nissan,現在全部的裕隆車,統統都掛Nissan,這是怎樣~~

但是mobile01討論串內容推翻了這點,事實是,當時裕隆的確硬尻把車子尻出來了,但是技術背景不夠是事實,而且最重要的,台灣的汽車市場實在太小了,以現在來說,一年的車輛銷售約70000輛,少點就是60000多,多點就是70000多,這市場太小,而且已經飽和了。
裕隆自己慢慢尻,結果是光研發費用都攤不平,更不要說賺錢了,搞到最後裕隆差點破產,而現在整天穿阿曼尼的嚴凱泰之所以有名,就是因為當時他很倒楣的接了這樣的公司,然後透過公司賤賣(賣25%給Nissan),加上把裕隆很多廠關了才撐下來的,也因此被罵賣國。

所以飛羚101就成了裕隆和台灣的痛,裕隆因為她差點倒閉,一堆技術人員流失,台灣因為她,花了非常非常多的錢,結果汽車產業還是死了~

汽車產業是非常封閉的產業,世界上汽車廠商就這麼幾家,相互之間還互向結盟,要進入這樣的產業非常困難,一來沒有技術(技術在汽車100年前發展時就開始累積),二來沒有市場(市場都已經被這些廠商獨占),三來還會被惡意排擠(這些廠商會有意的排擠新的車廠),因此要發展汽車產業難度超級高,目前全世界真正成功把汽車產業發展起來的,就只有日本、南韓。
日本在發展時,也是吃足苦頭,TOYOTA最早時,在美國被視為便宜的破爛車,南韓也好不到哪裡,以前小的時候,就看過中視有播放韓劇「車神」,講韓國發展汽車的艱辛過程,最關鍵的一段場景是,為了證明他們的車子非常耐用,開出50輛汽車,橫越極地(我忘了地方,是很冷下雪的地方),然後由董事長(男主角)親自帶隊和記者跟隨,過程中還抓到其他車廠派去的間諜,試圖破壞車輛,要讓計畫失敗。
看得出來,汽車產業的發展,在各國都是非常辛苦的,我們自然也不例外,因此裕隆就成了非常好的反面教材。
不過裕隆在這20年沒有白過,他成為Nissan的附庸,但是看來仍舊在努力發展,目前裕隆已經有能力進行整車,根據網友說的,Nissan的SERENA180,就是裕隆的成果,SERENA180除了引擎之外,整輛車子都是由裕隆操刀設計的(應該不含底盤),因此可以知道,裕隆已經有整輛車子設計的能力,SERENA180甚至也賣回日本和東南亞部份國家。

在昨天翻找資料過程中發現到,裕隆似乎不甘於幫別人代工,從去年開始就已經陸續有新聞提到,裕隆在經過了20年之後,要再次自製汽車了。

儘管這件消息網路上有些網友說,裕隆只是因為要賣車到大陸,因為大陸的工業限制,要求一定要有造車能力才能在大陸賣車,所以裕隆才想造個車子,好方便他在大陸賣車。

但是最近陸續的消息是,裕隆為了這台車子,已經砸了100億台幣了,未來估計還需要砸800億進行行銷,而且裕隆為了造車,將新店舊廠重開,把全集團(裕隆、中華)的高手全部集結,就為了造出車子,我個人是認為,如果只是為了能在大陸賣車,這樣的投資規模也太大太誇張了,媒體甚至用了「嚴凱泰的豪賭」來形容這樣的投資,看得出來這不單純只是為了大陸市場,是真的想拼拼看。

看新聞,目前裕隆這台車子,已經進入最後階段了,也就是說,車輛早已實作完成,測試也進行的差不多了,看來已經到投產的階段了,在這裡我們幫忙他們集氣,希望這台車子未來能夠成功吃下大陸市場,反攻大陸不成,至少讓車子反攻成功。

最後,把目前已經知道的車子資訊po出來:
嚴凱泰絕不能輸的世紀豪賭 砸兩百億元拚第二輛自有品牌車

目前已知的消息是,車型最初將有3種:轎車、SUV及MPV。
引擎使用的是:華擎機械工業股份有限公司設計的引擎。
華擎機械工業股份有限公司是由裕隆、中華(同一家)、工研院(提供技術研發)、國家開發基金(政府資金)開辦的,目前已經設計出數顆引擎,包括:
1200 c.c.引擎
1300 c.c.引擎
2000 c.c.引擎
2200 c.c.引擎(具有渦輪增壓)

其中比較特別值得說的是,之前的中華威力(應該就是長得很像麵包車,方方正正又小小的中華三菱小箱型車),就是使用華擎1200 c.c.引擎,大部分人可能以為是三菱引擎吧..... :p
另外有趣的是,這家公司的引擎技術,主要是工研院機械所設計完成,由清大動機系李進修教授擔任顧問(李進修教授在GM進行相關設計非常久的時間)完成的。(參照:引擎設計與分析技術汽機車引擎設計與分析技術書籍作者介紹)

新設計的這台車子將使用2200 c.c.引擎,另外會出柴油款,柴油款使用歐洲某廠的引擎,相關連結:
[新聞] 裕隆品牌車 明年發動引擎
以台灣的技術,做的出汽車引擎嗎?
華擎國造引擎前進中國 光陽產製機車騎進俄國

這輛新設計的車子沒有自製的部份,除了柴油引擎之外,大概就是底盤的設計,底盤使用的是雷諾的ESPACE的底盤,是華創車電出面向法國馬特拉集團支付技術報酬金方式,取得ESPACE底盤使用權(參照:裕隆自創品牌汽車 即將成真),目前這台車子最可惜的部份,大概就是油電系統了,目前看起來,這台車子最初版本應該不會是油電車(參照:油價飆漲 車廠搶推油電混合車),注意到參照的新聞,是2008/03/12),要在年底、明年推出新車,而且車子要是油電車,除非裕隆放假消息,否則看來是不可能的。

這輛新車由華創車電技術中心所研發,從「車電」可以注意到,它的目標不單單只有車輛研發,還包括了車用電子的研發。
從網路上找到的資料來看,它的股東不只有裕隆和開發基金,更重要的是還包括了宏達電、中華電信...等IT廠商,而且研發的項目不是只有單純的車用播放設備,內容可能包括了汽車晶片、行車電腦、倒車雷達、電子穩定系統、剎車系統、巡航系統、安全氣囊、安全保護系統和汽車視訊...等。
也就是要開發汽車的行車電腦...等車用電子技術,這些車用電子技術之所以不容易切入,主要原因在於目前世界各車廠這部份都是獨家技術,沒有任何兩家車廠的規格是相同的,所以雖然都是電腦、電子,但是廠商沒辦法做,車廠也不會讓你做,要做就必須通過車廠的一堆認證,除了花錢,還花時間~
以下是參照網頁:
華創車電能成為另一個聯電或台積電嗎?
嚴凱泰主導華創車電前進中國市場
中華電信 跨足車用電子
發展汽車電子 催生新兆元產業
重兵集結華創車電 打造汽車夢
推動汽車電子產業 華創車電技術中心成立
工研院與華創車電共同開發UWB車輛安全感測技術

最後,這台車子的照片目前已經被人拍到了,下面就是這台車子被人拍到的照片,地點是中橫武嶺。
捕獲「華創車電」打造正港國產車!

什麼時候可以正式和大家見面呢?
根據2008/02/27的新聞,裕隆品牌車 明年發動引擎
看起來大約年底可以正式現身,明年就能在展售中心看到車子了。

2008年4月7日

新酷音自訂詞彙心得

新酷音要自訂詞彙有兩種方式:

正常的方式,是以「使用者詞庫」的方式建立,它會另外儲存到一個詞庫檔當中。
這種方式的缺點是,使用者詞庫的優先權似乎超級低,因此當遇到使用者詞庫和內建詞庫衝突時,很容易有問題,相關討論如下網址:
http://forum.talkdigi.net/phpBB2/viewtopic.php?t=513

見解如下:
經三交的觀察,應該是使用者自建詞庫(hash.dat)與統計字頻率資料(us_freq.dat)發生搭配上的錯亂所致
而且執行「存入使用者詞庫」的次數愈多,問題就愈嚴重
當然,這有可能三交才會有的情況,或說是個案也可以
在研究「新酷音詞庫修改教學」之後
摸索出以下的方法,不敢保證一定有用
卻有相當程度的解決成效


以及
Roger大,讓三交來跟你解釋一下
「工件」這個字在共享詞庫是不存在的
而是在內建詞庫才有

基本上內建詞庫(也就是裝好新酷音預設的詞庫)的詞
輸出的優先權永遠大於共享詞庫
所以三交再怎麼改,「工件」的優先權一定都會先於「弓箭」
改善方式就是如您文中所說的,「弓箭」連續打三次才能改善

算是內建詞庫的「原罪」吧Orz
共享詞庫沒這麼厲害的說


上述的共享詞庫,就是使用者詞庫。

剛討論內容是,「三交」這個網友認為新酷音詞庫維護團隊更新的實在太慢了,而且更新的並不符合使用習慣,他希望新酷音能夠有類似Google輸入法的功能,可以線上共享詞庫,因此以討論區手動的方式來進行詞庫整理。

使用者詞庫:
要在Linux上使用「使用者詞庫」,基本上有下列幾點要知道的:
1. 使用者詞庫檔案所在路徑、檔名
~/.chewing/uhash.dat

2. 當使用者詞庫有任何問題時,只需要將該目錄下的檔案刪除即可,尤其是「uhash.dat」這個詞庫檔

3. 「使用者詞庫」編輯工具
Linux下我目前並沒有找到「使用者詞庫」編輯工具,所以要使用,可以從 Windows 上把「使用者詞庫」編輯工具複製到 Linux,接著搭配 wine 來執行,我測試後,基本上除了「新增詞彙」不能動作之外,其他的功能應該都是正常的。
新增詞彙的動作怎麼辦?
可以直接利用「Ctrl + 2、3、4、5」添加詞彙,再把使用者詞庫檔讀取出來。

Windows上「使用者詞庫」編輯工具所在的路徑、檔名是:
C:\WINDOWS\system32\IME\Chewing\HashEd.exe

4. 要使用前面網友「三交」的詞彙
步驟其實很簡單,下載他的詞彙檔,解壓縮後會得到檔案uhash.dat,接著刪除「~/.chewing/uhash.dat」,利用「wine HashEd.exe」將網友的uhash.dat匯入(匯入前正常情況應該是完全沒有詞彙的),接著存檔即可。

網友「三交」有提到我們自己的詞彙跟他的詞彙整合的問題,方法上其實也很單純,先把我們自己的詞彙輸入之後匯出成「uhash.dat」這樣的檔案,然後刪除「~/.chewing/uhash.dat」,再來把他的uhash.dat匯入,最後再匯入我們自己的「uhash.dat」


內建詞庫:
因為上述提過的原因,使用「使用者詞庫」有時候並不是好方法,再加上「使用者詞庫」沒辦法自行設定破音字的輸入,例如:「嫉ㄐ一ˋ妒」,這個「嫉ㄐ一ˋ」其實應該是「嫉ㄐ一ˊ」,但大家都用錯了,久而久之就變成非法的破音字。

這樣的詞彙沒辦法定義在「使用者詞庫」中,使用者詞庫無法允許不存在的字的詞彙,這時候我們就必須要修改「內建詞庫」。

內建詞庫的修改主要參考:
http://chewing.csie.net/chewing_dict_edit.html

首先我們先把流程列出來,流程如下:
1. 用 svn 下載「新酷音詞庫團隊」最新的詞庫檔
svn co http://svn.openfoundry.org/libchewingdata/

2. 產生內建詞庫相關的檔案
cd libchewingdata/utf-8
rm *.dat *.dat_bin
wine dat2bin.exe


之後會產生出好幾個「.dat」的檔案,這些檔案就是內建詞庫的檔案,檔案如下:
ch_index.dat
dict.dat
fonetree.dat
ph_index.dat
us_freq.dat


3. 將內建詞庫所需檔案複製到系統中
首先要知道,Ubuntu 下「內建詞庫」的目錄在:
/usr/share/libchewing3/chewing/

接著要知道,內建詞庫所需的檔案除了上述的 5 個「.dat」外,還有個「pinyin.tab」,操作如下:
cd libchewingdata
cp pinyin.tab /usr/share/libchewing3/chewing/ (pinyin.tab在 libchewingdata/ 下)
cd utf-8
cp *.dat /usr/share/libchewing3/chewing/ (產生出來的 *.dat 在 libchewingdata/utf-8/ 下)


4. 最後有個步驟要注意,「內建詞庫」在 Ubuntu 中,有個專門的套件,名稱叫做「libchewing3-data」,要記得把這個套件鎖定,否則系統更新後,改過的「內建詞庫」會被改寫掉

解說完更新的整個流程後,接著要來稍微解說如何改「內建詞庫」,「內建詞庫」的檔案就 2 個,檔名和功能如下(檔案存在 libchewingdata/utf-8/ 下):
phone.cin 定義所有字的注音(注意,它的注音是以英文表示,例如:「傅ㄈㄨˋ」會定義成「傅zj4」),因此要加入破音字可以修改這個檔加入

tsi.src 定義所有內建的詞庫(這邊注意到,它有個特性,就算「phone.cin」中沒有定義「嫉ㄐ一ˊ」,但它還是可以接受詞彙中同時有「嫉ㄐ一ˊ妒」、「嫉ㄐ一ˋ妒」)

tsi.src的詞彙格式如下:
酷音 1000 ㄎㄨˋ ㄧㄣ

其中1000表示優先順序,數值越大優先權越高

2008年4月5日

壓縮軟體之比較

因為之前家裏File Server曾經因為PCI硬碟擴充卡出現問題,250G和80G硬碟的資料全毀,當時所有的卡通MP3和APE無失真音樂全數陣亡,讓我當場傻掉。
也因為這樣,我在之前文章提過了,在去年啟動了RAID計畫,把File Server電腦更新,從K7-度龍800升級到Core 2 Due電腦。
不過RAID仍舊會有資料損毀的可能,RAID雖然能保證壞一顆硬碟時受到保障,但如果同樣遇到PCI硬碟擴充卡出現問題,又或者IDE RAID上,同條排線的IDE硬碟有問題,都有可能造成RAID停止、資料損毀,甚至於說,RAID本身設定比較複雜,當出現問題時的問題排除步驟錯誤,也很有機會讓RAID掛掉(我在Lab的機器上就發生過)。

最保險的方式,莫過於把資料備份,用燒錄機燒成光碟片,只要光碟片品質好些、不亂丟、不刮傷、不發瘋拿去曬太陽殺菌,原則上來說還算是可以接受的備份方案,最重要的是,和其他備份方式相比,燒光碟成本是最低的。

把資料備份,我習慣上會先壓縮,尤其是MP3、APE這類檔案,因為光碟片本身會有編碼的問題,再加上經過壓縮打包,在解壓縮時我可以判斷檔案是否正常沒有損壞,所以我認為壓縮後燒錄事比較好的辦法。

當要燒錄,就牽涉到壓縮軟體的選用了,經過了一番挑選,我選擇了rar來使用,下面是我這次的挑選過程判斷。

常見的壓縮軟體包括:
zip、rar、7-zip、gzip、bzip2

這次對壓縮的需求有兩項:
1. 要支援分片壓縮,分片壓縮中最重要的一點,分片壓縮的壓縮檔要能獨立解壓縮
2. 要能正常的對中文、簡體中文、日文...等進行壓縮、解壓縮(也就是要支援Unicode)

經過了比較之後,我最後使用rar。

首先我先解釋一下需求,尤其是第1點,什麼叫做分片壓縮的壓縮檔要能獨立解壓縮?
因為我要燒到光碟上,分片壓縮是必要的,雖然光碟片理論上可以放很久,但是大家都知道,實際上光碟片放一放就不能讀的機會其實很高,這也是一片3元和一片12元片子的主要差異~可靠度。
而光碟片除了可能會不能讀之外,也可能因為刮傷等原因出現壞軌,這就會造成某個檔案讀取有問題。
因為媒體的可靠度不是百分之百可靠,因此分片壓縮的壓縮檔,必需要能獨立的解壓縮,這樣一來,就算檔案有損毀,也不會造成資料全毀,頂多是幾首MP3,幾張專輯毀壞罷了。

第2點相信不用多說了,MP3、APE這些音樂檔,各種語言都有,日文、中文、簡體中文都很常見,連韓文、俄文都出現過,不支援多國編碼(Unicode)的壓縮軟體,遇到日文、韓文就掛了,更不要說備份了。

而目前這幾種壓縮檔格式中,唯一全部符合的,就只有rar了。

zip是目前非常常見的壓縮檔格式,不但是使用最廣,也是支援最好,API最齊全的壓縮格式。
很不幸的,zip的歷史因素,造成了zip不支援Unicode的缺憾,正確的說法是,目前大多數的壓縮軟體,對zip的壓縮、解壓縮都不支援Unicode,這包括了WinRAR、WinZip、7-Zip...等。
因此很不幸的,zip落選了,儘管如此,但是因為zip有大量的API支援,目前我嘗試在寫的備份程式,還在試著用zip來達成需求。

rar對於多國語系竟然意外的好,這點和網路上許多WinRAR解簡體壓縮檔的經驗差異很大,事實上,rar壓縮、解壓縮各式語系的檔案,都能夠正常的操作。
而rar對於分片壓縮,也有很獨到的設計,除了rar分片壓縮出來的檔案能夠分片解壓縮外,rar的分片壓縮甚至有類似RAID的能力,能夠多產生幾個壓縮檔,容許幾個壓縮檔損毀,這功能並不常見。
不過rar也不是沒有缺點,他最大的問題在於,他是商業軟體,因此要花錢買,而且它並沒有免費提供壓縮的API。

7-Zip我原本對它頗為看好,一方面他的壓縮比可以很高,又是OpenSource的軟體,我一向對商業軟體有些感冒,而且在軟體介紹中有提到他支援分片壓縮,這讓我很興奮,結果感覺像是騙人的。
7-Zip的優點很多,壓縮比高於RAR等壓縮軟體是他的最大特色,加上他是OpenSource,對於Linux平台支援性很好,在各個平台都支援multi-thread,讓7-Zip在Linux上能夠最大程度的使用到多處理器的能力。
7-Zip對多國語系(Unicode)支援也非常好,預設就是UTF-8,因此基本上沒有檔名亂碼的問題,整體評價來說,僅次於RAR。
但是7-Zip的分片壓縮非常鳥,感覺很敷衍,7-Zip的分片壓縮其實只是簡單的檔案分割,動作流程如下:
1. 按照正常程序把一堆檔案壓縮
2. 壓縮完成之後產生 xxx.7z
3. 把 xxx.7z 開始分割,分割成 xxx.7z.000, xxx.7z.001...等

這有3個很大的缺點:
1. 要分片壓縮,它需要先壓縮,再分割檔案,這表示它的動作過程需要消耗 2倍 的硬碟空間,這在小檔案問題不大,但是當資料大到好幾G,甚至像我這樣好幾十G時,問題就很嚴重了,沒這麼多硬碟空間給它緩衝。
2. 它的每個分片壓縮檔都只是檔案分割,因此要解壓縮前,必需要先合併檔案,把分片壓縮檔還原,之後才能解壓縮,這意味著跟上面同樣的問題,解壓縮時同樣需要消耗 2倍 的硬碟空間。
3. 它必需要先合併分片壓縮檔之後才能解壓縮,這表示只要任何一個檔案損毀,整個資料就報銷了,你無法單獨把某個檔案找出來解壓縮。

此外,7-Zip還有個缺點,它提供的API非常差,尤其是Java的,基本上只有演算法的實作,還不到能用的程度。

至於gzip和bzip2,它的壓縮檔無法事後「加入」,只能夠一次壓縮完,這點問題不大~
gzip和bzip2的主要問題其實也是分片壓縮,它的分片壓縮和7-Zip一樣,都是檔案分割,會面臨同樣的問題,檔案編碼部份我則沒有注意。

2008年4月4日

台製墨水夾的祕辛

今天心血來潮要來印東西,發現印表機又開始亂來了~
于是乎就給他清墨清墨清清清~

可是始終有問題(我這邊的問題不是印不出來,是會一直印出橫線.....而且只有上半部一塊),想當然也知道是哪個牌子的印表機這麼有能耐... :(

但是重點不在這裡,這個牌子的印表機出問題也不是一天兩天的事了,上述問題只是背景介紹,沒甚麼好說的,反正以後注意不要再買這個牌子的印表機就好了,這次要提的,是可怕的台製墨水夾~

因為原廠墨水夾跟台製墨水夾價差很大,在這個牌子的印表機上,也都會發生噴嘴阻塞、斷墨...等鳥問題,原廠的墨水夾又故意容量超小,清墨幾次~再來幾次~多來幾次~耶~沒了耶~結果印出來還是有問題,因此就開始找台製墨水夾~

一般來說,網路上~耳語~行銷時普遍會看到原廠和台製墨水夾的區別,通常都會告訴你幾個答案:
A:原廠色彩清晰,不會色偏(我只印報告,偏不偏不在乎,只要紅色還是紅色就好了)
B:原廠墨水夾容量小一半(x的勒~這怎麼行,我報告隨便都是100頁耶,印個3次就沒了是怎樣)
C:原廠墨水夾比較不會阻塞噴頭(屁拉~那我2星期清墨一次,卻還是一條條白線是怎樣?)

以上是常見的回答,跟我個人還有廣大民眾普遍的答案~

可是今天我得到了個可怕的經驗,我今天陪印表機玩了1個多鐘頭,結果發現我頭昏想吐,這顯然並不正常,況且晚餐時候都很正常~
而印表機列印時,會聞到油墨的味道~

于是乎,我用google打上了『台製墨水夾、致癌』這樣的關鍵字,就彈出了如下的句子:
.....
由於競爭激烈,部分廠商甚至不惜使用苯酚類溶劑 (致癌物)來製作墨水,而有些化學功力不如人,就乾脆在印表機前裝置吹風機,直接烘乾。研發人員對於『理想墨水』Ideal Ink的追求,正隨著現在的技術 進步,不斷地逼近。

.....

出處:
http://www.digital.idv.tw/DIGITAL/Classroom/MROH-CLASS/oh81/index-81.htm

接著我們可以在PCHOME看到HP原廠墨水夾的宣傳:
.....
全面顧及身體健康:
HP原廠耗材經過嚴格控管及檢測,品質佳、無異味、不含致癌物,不影響人體健康。

.....

出處:
http://buy.yahoo.com.tw/gdsale/gdsale.asp?gdid=636985

雖然相關訊息的印表機廠牌是不同的,但我認為結果是大同小異的,同樣是墨水夾,原廠價格這麼貴到底貴在哪?只是色偏嗎?色偏不會是全部的答案~
這篇文章,是我親身的經驗,對台製和原廠仍舊有疑問的,還是選原廠吧~
除非你的印表機,是放在
人不會靠近非常遠的地方或獨立的房間,否則,還是不要害人害已的好~

至於雷射的印表機,也有類似的問題,原廠的碳粉夾超級貴,填充式的碳粉價格非常便宜,台製的也是~
但我四周有個小經驗,我媽以前在國中當教職員,她有個同事掛了~
那個同事是肺癌走的,她在國中,就是非常好心的專門幫大家在影印室影印、印刷,結果我媽說現在學校沒人敢去影印、印刷~
原因何在?碳粉的微粒非常細,很容易被人吸入體內,吸入過多,問題就很嚴重了~
而台製或填充的碳粉,相較於原廠,更容易散溢出來,因此相對於原廠,對健康的危害就大得多了~

2008年3月29日

在論壇發英文信?

這個標題也許很多人看了會疑惑,對於英文程度馬馬虎虎的人,可能會覺得這沒甚麼大不了的,對專科出身的同學,可能會覺得~怎麼可能辦得到... :p

在下(第一次用唷)我以前高職、二專、二技上來的,國中時英文不算好,但也沒有非常的爛,至少現在進行式、過去式之類的還了解,到了高職,英文課少了很多,但是基本上英文退步基礎還沒退到鴨蛋~
到了二專~當替代役~二技,現在的程度大概比一個上芝麻街美語的小朋友還糟吧 = =||
雖然現在研究所了,但是基本上英文程度仍舊不怎麼樣~

身為一個可憐的研究生,雖然因為我不抽煙、不喝酒,還沒進入煙酒生的境界,但有時候仍然需要發英文信,像是在論壇詢問、寫信給paper作者,還有對一些軟體的功能發表一些建議.....(最後一個才是重點吧... :p)

我最早有模式的英文信,算是發給PSPad的,當時用PSPad看code,因為code很醜,理所當然的就需要一大堆的註解,在每次理解了的程式碼或段落的後面加上自己的理解,不然想想看,code這麼多,看這裡想到那個,看那個這個全忘了,這怎麼行~
可是當時的PSPad有個bug,bug問題在於字數計算,當時的PSPad對『中文』字的辨識能力很有問題,把每個字都當作半形來計算,結果就是結尾的中文註解會被切掉~
我因為實在受不了了,終於發出了算是第1篇比較有模式的英文信,至今一直按這個模式在處理,方法很簡單,就是靠『Dr.eye的全文翻譯』。
我們輸入中文讓他翻成英文,然後自己判斷一下他的語句順不順,大家都知道,翻譯軟體的全文翻譯能力差不多趨近於幼稚園程度,太複雜的句子它就會亂翻。
因此我們輸入的中文句子原則就是,句子愈簡單愈好,儘量不要一口氣給他翻譯超過2句(以,隔開的),第一次翻譯之後,看出規則性之後,然後手動進行調整,這句話就ok拉~
接著換下一句,因此怎麼樣用簡單的句子來描述問題很重要。
像『我在Ubuntu上的grub在開機時會crash』,就可以用『When my Ubuntu booting, the grub crashed』。
雖然語法可能有問題,整句話很醜很像幼稚園寫的,但是正常人看起來都知道,就是Ubuntu開機時會crash,這樣的英文對於我這種人來說,就很足夠了,畢竟是非正式的提問,而不是寫文章。

像前幾天,在PDF X-Change Viewer的論壇發文,給予建議,文章如下:
標題
Text copy with "-" and wrap-line

內容
hi~

I am a fan of PDF-XChange Viewer.

I find a good design in Adobe Reader, I think it can add to PDF X-Change Viewer.

When I copy the following articles,
========================================
.....
Wireless sensor networks are ideally suited for long-lived appli-
cations deployed at large densities for low cost. Unfortunately, the
current WSN platforms built from commercial off-the-shelf (COTS)
.....
========================================

In Adobe Reader, it like
Wireless sensor networks are ideally suited for long-lived applications
deployed at large densities for low cost. Unfortunately,

But in PDF-XChange Viewer, it like
Wireless sensor networks are ideally suited for long-lived appli-
cations deployed at large densities for low cost. Unfortunately,

We can see, in the Adobe Reader, when end-of-line is '-', it will merge words(appli- and cations -> applications), but PDF-XChange PDF Viewer will not.

I think this is a small function but it is very convenient, ,perhaps PDF-XChange PDF Viewer can join this function.

Yuan-Chia Fu


整段文章程度不怎樣,但至少明確的指名了我要表達的功能,這對我來說就夠了,有興趣的可以去看看,竟然還有人支持我的論點哩..... :p

2008年3月25日

6年期儲蓄險

這次文章和電腦完全無關,這次我們來看看6年期儲蓄險..... :p

在3年前,差不多是研一下學期時,當時聽說有6年期儲蓄險,在當時利率不斷往下掉的時代,很多人投入,我在當時剛好收到新光人壽的6年期儲蓄險DM,就保拉~

當時的概念很簡單,因為研究所很忙,沒時間搞東搞西,想存錢又擔心戶頭有錢就會隨意亂花,因此想,那就乾脆保了吧,當作強迫存錢,而且在當時,的確是潮流~
大概到了前年底~去年,開始有很多新聞報導到,很多人提前解約,因為定存利率開始上升了。
那麼,到底我存的6年期儲蓄險最後是賺了,還是賠了呢?

其實6年期儲蓄險這個概念真的很有趣,在非常華麗的外表下,內在其實就是「定存」,不過和一般定存不同,他的定存年限非常的長,以我現在算過之後來做選擇,我不會再選6年期儲蓄險

因為我錢多半放中國信託,因此以中國信託的利率來計算,利率用的是現在2008/3的利率。
看到台幣存款利率,目前定存利率如下:
1 月 2.0850%
3 月 2.1600%
6 月 2.3300%
9 月 2.4600%
1 年 2.6000%
2 年 2.6450%
3 年 2.6750%

因為6年期儲蓄險是沒辦法中途停止的,因此我們用固定利率來計算。

首先我們假設,我們要存的是180,000的保單,第1年要繳28,110元,之後每年要繳27,829元。
該金額由當時的DM擷取,一分錢都不差。

因為是每年繳錢,因此計算上不會是用28,110 + 27,829 x 5 = 167,255來算
如果以167,255來計算6年期的定存利率,那麼很簡單,利息就是:
168,660 x 2.6750% = 4,474.07125(1年利息)
4,474.07125 x 6 = 26,844.4275(6年利息)

換算下來,利息幾乎是6年期儲蓄險提供的2倍,這顯然出入很大,畢竟你又不是一次投入的,而是分階段一年一年投入的,因此計算上會變成:
第1年的錢 28,110 x 2.6750% x 6 = 4,511.655
第2年的錢 27,829 x 2.6750% x 5 = 3,722.12875
第3年的錢 27,829 x 2.6750% x 4 = 2,977.703
第4年的錢 27,829 x 2.6750% x 3 = 2,233.27725
第5年的錢 27,829 x 2.6450% x 2 = 1,472.1541(定存低於3年,改以2年定存利率來計算)
第6年的錢 27,829 x 2.6000% x 1 = 7,23.554(定存低於2年,改以1年定存利率來計算)

接下來把所有的利息加起來,如下:
4,511.655 + 3,722.12875 + 2,977.703 + 2,233.27725 + 1,472.1541 + 723.554 = 15,640.4721

這就是實際拿來定存時的利息,和前面我們提到的獲利相比。
15,640.472112,745 比較,整體來看,新光3年前的6年期儲蓄險和現在定存相比,大概少了3000元上下

不過事情不能這樣推算,當時的利息的確是偏低的,以當時利率來說,保險公司實際上,是在賭未來的利率,像現在這樣,保險公司就是贏了~
但是有一點我們要先想一下,當你保單簽下去之後,就必須要和6年後的利率來比較,我們也許可以推測未來一年的利率,勉強可以推測未來3年的利率,但是未來6年,利率會如何?

因此,像之前那樣,日本零利率,台灣持續降息的時候,我們該賭6年後利息會降到0?還是該賭6年後利息會升?

再者,以現在來看3年前的儲蓄險,我們可以估計到未來會賠更慘,因為3/22剛結束,大家都認為未來會持續升息,但是未來還有3年,我們能保證3年後利率會比現在更高嗎?

最後,有一個很重要的點,既然現在看來,和定存相比已經賠了,那我應該解約把錢拿出來嗎?
根據新光人壽的說法,你解約,那麼只能拿回7成的錢~
以目前第3年的現款打7折來看,如下:
28,110 + 27,829 x 2 = 83,768
83,768 - (83,768 * 70%) = 25130.4

注意到,我們立刻賠了25,130.4元,除非你能在其它投資中獲得比這個更高的金額,否則還是乖乖的把遊戲玩到底吧!

2008年3月15日

Linux 晶片卡讀卡機 使用心得

本篇po在摩托學園『五月天為了報稅安裝讀卡機』的回文,一樣是我po的,所以現在就另外貼在自己的blog上。

晶片卡和晶片卡讀卡機很重要,現在webATM盛行,一些銀行的webATM轉帳還比較便宜,晶片卡也能拿來報稅,如果Linux也能使用,那是非常棒的事情。

可惜目前在Linux上,還是無法使用晶片卡來進行報稅或webATM,主要原因是軟體幾乎都是針對Windows寫的,並沒有針對Linux寫,因此儘管Linux上的讀卡機有驅動程式,可以讀到卡片,但是仍然無法使用。

目前就我最近查到的,在wine-dev的mail-list中,2008-03(現在) ,已經有人開始針對WINE上smartcard相關的service和.dll撰寫中,雖然目的不清楚(看發文的工程師,公司title是做security方面的),但有在寫總是比較好的,至少有進步了。
不過看討論,他們目前還只是在作變數的對應,功能性的function應該都還沒動,路~還長著呢~~

下面是我針對晶片卡讀卡機在Linux(Ubuntu,但我認為Debian應該也是)下的設定、使用方式。
針對的是『Castles 虹堡 EZ-100PU』,該公司其他幾款共用Driver的,也都能夠使用。
而這麼大手筆打它廣告,並不是因為我跟公司有利益關係,而是目前我只知道他有提供Linux Driver,如果其他公司的晶片卡讀卡機有提供Linux Driver,我不小心剛好有機會用到,我會再修正它,但是現階段,就是在幫他打廣告沒錯。

1. pcsc-lite 套件不需要這麼辛苦的安裝,套件庫裡面已經有了
apt-get install pcsc-tools pcscd

雖然PC/SC Lite在套件庫中已經有了,但是『EZ100PU/EZMINI/PISCES系列的驅動程式』仍舊需要,因此要到『虹堡科技股份有限公司』的網站下載Linux Driver,我們只需要裡面的『ezusb.so

2. ezusb.so 建議複製到『/usr/lib/pcsc/drivers/ezusb.so』,PC/SC Reader的驅動程式都放在這裡

3. 設定檔的部分要修改
新增檔案『/etc/reader.conf.d/libezusb

內容>如下:
FRIENDLYNAME "CASTLES EZ100PU"
DEVICENAME /dev/null
LIBPATH /usr/lib/pcsc/drivers/ezusb.so
CHANNELID 0x000000


這邊要稍微注意的是,『DEVICENAME 不再是 CAS_SMART_RDR』,要改為『/dev/null』。
這應該是因為我們這台是USB的關係,看其他設定檔,都是指定為『/dev/ttyS?』。

接下來以root執行
update-reader.conf

它就會自動更新到『/etc/reader.conf』了。

4. 關於插入讀卡機之後要重新開機的問題,不用麻煩~
只需要把 pcscd 重跑即可,如下:
/etc/init.d/pcscd restart

5. 要知道目前讀卡機有沒有抓到,卡片有沒有插入,可以使用『pcsc_scan』這個程式。

我的/var/log/message訊息如下:
Mar 8 15:16:46 ycfu kernel: [12204.451952] usb 4-2: new full speed USB device using uhci_hcd and address 7
Mar 8 15:16:46 ycfu kernel: [12204.629079] usb 4-2: configuration #1 chosen from 1 choice
(插入讀卡機後,執行/etc/init.d/pcscd start)
Mar 8 15:16:58 ycfu pcscd: readerfactory.c:1113:RFInitializeReader() Attempting startup of CASTLES EZ100PU 00 00 using /usr/lib/pcsc/drivers/ezusb.so
Mar 8 15:16:58 ycfu pcscd: readerfactory.c:946:RFBindFunctions() Loading IFD Handler 2.0
Mar 8 15:16:58 ycfu pcscd: pcscdaemon.c:507:main() pcsc-lite 1.4.3 daemon ready.
Mar 8 15:16:58 ycfu pcscd: hotplug_libusb.c:401:HPEstablishUSBNotifications() Driver ifd-etoken.bundle does not support IFD_GENERATE_HOTPLUG
Mar 8 15:16:58 ycfu pcscd: hotplug_libusb.c:410:HPEstablishUSBNotifications() Polling forced every 1 second(s)


執行pcsc_scan後如下:
ycfu [/etc] -ycfu- pcsc_scan
PC/SC device scanner
V 1.4.9 (c) 2001-2006, Ludovic Rousseau
Compiled with PC/SC lite version: 1.4.2
Scanning present readers
0: CASTLES EZ100PU 00 00

Sat Mar 8 15:18:06 2008
Reader 0: CASTLES EZ100PU 00 00
Card state: Card removed,
(插入郵局提款卡之後)

Sat Mar 8 15:18:29 2008
Reader 0: CASTLES EZ100PU 00 00
Card state: Card inserted,
ATR: 3B F7 11 00 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

ATR: 3B F7 11 00 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ TS = xx --> Direct Convention
+ T0 = xx, Y(1): xxxx, K: x (historical bytes)
.......


6. 我用WINE執行IE,然後連線到郵局的webatm,它的.ocx元件我能夠下載下來,也能夠透過wine的regsvr32.exe註冊到WINE系統裡。
進入webatm.post.gov.tw之後,他不會顯示元件尚未下載(看起來已經成功註冊到WINE了),但是會顯示『找不到讀卡機』。
目前看起來,Linux的Reader有成功跑起來,網路郵局的元件有有跑起來,但是WINE似乎缺少Reader的wrapper,所以目前仍舊沒辦法用讀卡機在網路郵局轉帳...

2008年2月27日

電磁波的可怕~

這次用了個聳動的標題,希望反向操作,讓查詢電磁波危害的人能夠了解「事實」。

最近幾年,電磁波的議題變得非常火熱,尤其是在台灣,三不五時就會有新聞告訴你,你附近的電磁波會強到把你腦袋燒了,結果是什麼?
結果是像我老媽這樣的人,每天看著電視、抱著無線電話,手裡拎著手機,卻說不要無線電,不要無線網路。

關於電磁波,從下面這篇文章:
炒新聞的又來了

有完整的解釋。

簡單的說:
目前所有跟電磁波有關的新聞,全部都是由『台灣環保聯盟』炒作出來的。

這個『台灣環保聯盟』專門在搞反核四、反電磁波這些議題,並且從中獲利。

以電磁波來說,他們到處去亂測,然後拿電磁波來做新聞,讓大家對電磁波害怕、畏懼,接著他們就租借、販賣測量電磁波的工具,甚至販賣電磁波危害說的書籍。
如下轉述:
===================================
本會「電磁波測試器」租借辦法

租借須知
自從本會關心「電磁波」議題以來,民眾詢問度非常多與踴躍,故本會特別提供電磁波測試器,以便民眾免費租借使用。

借閱辦法
一、填寫電磁波儀器租借單及租借收據。
二、抵押現金二仟元,租期為時兩天,歸還時以租借收據作為退還押金的依據。
三、工作人員向您說明如何使用電磁波測試器。
四、完成租借手續,帶調查表與須知回家。
五、歸還時煩請填寫調查結果。
六、此儀器無法探測基地台及行動電話,請注意!

租借時間
週一至週五,上午10:00~12:00,下午14:00~17:00

服務地點
台北總會 台北市汀州路三段107號二樓
舊三軍總醫院對面,台電大樓捷運站 02-2364-8587                 
台中友會 主婦聯盟台中辦公室 04-23755234
台南分會 06-3363751
桃園分會 03-3346452

義 賣 品
重要書籍:向電磁波說不-如何避開電磁場污染 義賣價280元
測試機器:電磁波測試器 義賣價2,000元
===================================

最重要的就是「義賣品」的部份,看得出來,應該很好賺。
而除了上述之外,相信主要的財源來自於「捐款」,也就是說,公司不捐款,公司就是超強電磁波發射器,四周圍的鄰居通通會得癌症死亡,然後四周圍宣傳,說隔壁某某陳先生就是因為電磁波死的,反正現在癌症死亡這麼多,挨家挨戶問,一定可以問到,接著串起來四處宣傳,全部都是你們公司的電磁波造成的。
這樣的行為,就是環保流氓。

而關於這個環保流氓的團體,一些其他的blog也有評論,如下:
新聞記者的專業在那裡?
沒見過壞人嗎:拒絕無知,消滅對電磁波的恐懼
大紀元:電磁波應由合格證照單位量測
以上來源由炒新聞的又來了取得

在上面同個blog中提到了,電磁波目前的危害在哪裡?什麼叫做電磁波?解釋的清楚明白,比我之前了解的要明白。

首先,什麼叫做電磁波?
先說我的了解。
電磁波就是能量,我們生活的地球,大部分感受得到的能量,都以電磁波來描述、表現。
各種聲音、亮光都是電磁波的表現形式。

所以,當你到郊外時,聽到鳥的叫聲,或者你抓了一隻鳥來,用電磁波的偵測器來測量,沒錯~它是會有反應的。
科學家,或說工程師很厲害,他們將電磁波分類,從低頻率到高頻率一層層區分開來,然後畫成一張電磁波的表,這就是頻譜表。

電磁波既然是能量,能量對人體有沒有害處或影響?
根據前面提到的blog說到,目前人們對電磁波和人體影響的了解。
「能量大的(電磁波),會破壞身體細胞分子的鍵結(身體細胞的分子和分子間像鏈子一樣鎖緊,才能維持固定的形狀,太強的能量會把鏈子打斷,破壞原有的功能,或者造成細胞增殖DNA異常啟動,就是癌症)」。

這是目前對電磁波影響人體的主要癥結,而目前知道最強的電磁波射線,對人體有害的,就是「伽傌射線」、「X光」,這些射線的能量都很強,因此都有限制人最大的吸收量。
除此之外的其他電磁波射線(能量更小的),目前並沒有任何證據證明對人體有影響。
blog中提到了紫外線,也就是太陽光,曬久了也不過就是皮膚很黑,會晒傷~

所以,不要再相信無謂的謠言了,事實上目前大部分這類的說法,都是沒有根據的。
上次工研院才發新聞稿說,這些環保團體(就是指『台灣環保聯盟』),他們的偵測器單位根本錯了,偵測器測的單位跟發佈(拿來騙錢)的單位根本不一樣,完全是外行在亂搞。

我們應該嚴重的抵制這樣的團體、這樣的行為,讓這樣的寄生蟲消失在台灣這片淨土(好有綠意)。

2008年2月20日

OpenSource規避手法的技巧

最近寫MYVIDEO時有用到MPlayer,如果你有稍微去看過MPlayer frontend的設定,你就會發現裡面有一些奇怪的設定,像SMPlayer的設定中,進階的部份有所謂的「End of file」和「No video」這樣的設定,裡面寫了奇怪的字串。
其實MPlayer並沒有提供任何library供人呼叫使用,它利用fork()來建立process,用execvl來執行mplayer指令,至於下指令的方式,則利用pipe或fifo來連接操作。
這樣的設計的確可以規避掉OpenSource GNU GPL的麻煩,而且同樣可以利用GNU GPL的程式。

例如:
我們想要使用一套GNU GPL的library,它是FTP的,我們可以特別為這個FTP library來寫一個程式,這個程式類似MPlayer,是獨立程式,提供FTP連線操作,我們可以利用pipe、fifo甚至socket的方式來操作它。
如此一來,我們的主程式不會有授權的問題,只需要OpenSource這個操作的小程式即可。

其實同樣的情況也發生在LIRC的Windows版本,我去看了WINLIRC之後發現,WINLIRC本身是GNU GPL的,而且同樣沒有提供呼叫用的library,但它提供了socket的呼叫、控制,透過這樣的方式,所有利用WINLIRC開發的程式,都不會有授權上的問題。

2008年2月17日

ivman 與 HAL

上篇文章中提到,可能需要去寫 HAL 的程式,不過發現 2 個問題:
1. libhal 是 GNU GPL 授權
2. HAL 實在很有難度阿..... = =

不過不用擔心,我找到解決方案了,那就是 ivman。
下面把我目前對 HAL、ivman、d-bus、udev 間的關聯、理解貼上來,原則上都是 google 來的。

==================================
HAL、D-bus、ivman、udev心得:

一直以來我對udev、HAL、D-bus的角色一直不很瞭解,
一直到最近桌機安裝Ubuntu之後,在前陣子要修改預設的影片播放器,
那時候才稍微知道HAL的功用。

在Windows當中,每當我們插入光碟、隨身碟時,系統就會自動開啟檔案總管,
如果是DVD影片,則會自動開啟播放程式,當然了~預設就是Windows Media Player。
正因為這樣的設計,讓M$立於不敗之地,畢竟習慣是很可怕的,
當預設的播放環境習慣之後,要選擇其他的播放環境,那麼就要有十足的說服力來說明新的播放環境比較好。

在Linux上,我一直認為沒有很好的自動判斷機制,雖然Unix一直是device file的機制,這也許是原因之一,
也許Unix一直以來都有許多的歷史包袱,但沒有就是沒有,不方便就是不方便~

Linux並不是不希望改善,所以有automount這樣的機制,現在也是內建措施之一,
但是automount實在是不怎麼樣,它很單純的設計成:
當執行 "cd /media/nfs" 時,自動 mount 這個目錄。
當超過一定時間時,自動 unmount 這個目錄。

這樣的設計顯然不怎麼聰明,但它的確是 Linux/FreeBSD 上常見的設計。

現在 Linux 的 GNOME 很聰明了,它已經能夠做到 Windows 這樣的能力,透過的是甚麼?
透過的是 HAL 的技術。

在 Linux 上,HAL 全名是 Hardware Abstraction Layer,
雖然 Windows 上也有相同的名稱,但就 google 的說法,是不同的東西。

HAL 的設計其實頗複雜,我們可以從
http://people.redhat.com/davidz/hal-spec/hal-spec.html

裡面的圖


看出來。

這張圖相對來說,是比較清楚的,不然找到的經常是UML,那種就不是很容易看懂了..... = =||

從下列網頁中可以找到比較詳細些的關係說明:
http://Linux.chinaitlab.com/driver/40018.html

要實現 Linux 上的 automount,Linux 設計了一套架構,如下:
=================================================
hotplug 是內核的一部分,在設備插入或拔出時,自動進行配置內核狀態。udev 是 hotplug 的一部分,負責維護動態的 /dev 目錄,使 /dev 目錄的內容與當前系統狀態一致。D-BUS 可以在應用程序之間傳送消息,例如可以把「連接上一台打印機」的消息發送給 HAL。HAL 可以集成多種來源的信息,包括內核消息,配置文件等等,然後根據 D-BUS 的消息進行操 作。gamin 是改進的文件狀態監視程序。
例如插入優盤。hotplug 自動加載需要的模塊,udev 創建相應的 /dev/sda1 等等節點,hotplug 向 HAL 發消息,HAL 收到消息後,根據配置文件,它運行 fstab-sync 來修改 fstab,創建 /media 的子目錄作為掛載點。gamin 檢測到 fstab 發生變化之後,通知桌面系統。桌面系統在 「計算機」 項目中建立驅動器圖標。
在拔出優盤時,與上面的過程類似,模塊被卸載,設備文件被刪除,fstab 中相應條目被刪除,/media 目錄下的掛載點也被刪除了。

=================================================

上述這段是直接轉貼的,簡單的說:
1. Linux 2.6 kernel 包含 hotplug,來判斷硬體的插入、移除。

2. Linux OS 透過 udev 來搭配 hotplug,專門維護 /dev 下的 device file,
這也就是我之前在摩托學園發的問題的所在點,它會動態的建立出各種裝置的 device file。

3. Linux OS 透過 D-BUS 來轉發系統訊息,告知 HAL 硬體的插入、拔出動作。

4. HAL 則呼叫相對應的應用程式來執行相對應的操作。


整個 auto mount 或 auto umount 就是上述的流程,實際上 HAL 還是一組 library,
除非應用程式以 HAL 的 library 來開發,否則應用程式通常無法直接收到 HAL 的消息,
簡單的說,HAL 還太低階,雖然他能夠直接操作特定的系統消息(像 DVD影片 插入時),
但彈性不足(設定煩雜,不容易設定、修改),因此通常還需要一個 manager 來進行真正的 HAL 操作。
這在 GNOME 就是 Gnome Volume Manager。

將整個堆疊以文字分層來表示,大致如下:

GNOME Volume Manager
HAL(Hardware Abstraction Layer)
D-Bus
udev

kernel hotplug

上述這些部分,除了 kernel hotplug 之外,全部都是以 daemon 的型式,一直常駐在系統中,
所以每個程式都需要持續的執行。

因為整個架構的複雜,就某方面來說,幾乎獨佔了整個 Linux 的 automount 設計,
每個部分的可以用的程式選擇都很少。

目前的情況是,以 HAL 以上,整個架構相容性最好的是 GNOME,
其他 桌面系統(包括 KDE),似乎都沒有很好的相容性。
icewm 相關的設計更是嚴重缺乏。

所以目前可以知道的是,儘管所有 Linux(Debian、Ubuntu、Fedora) 幾乎都直接使用 udev、d-bus 甚至 HAL,
幾乎每個 Linux 上都可以看到 hald、udev 在執行中,大部分人卻不知道也不敢動這幾個東西,
有點冒險精神的人,會嘗試把它關掉,結果可能會從 try & error 中發現,這會導致系統完全無法開機..... :p
偏偏這整套東西,沒有 GNOME 時,通常沒有 Volume Manager,
然後就是大部分 Linux User 覺得它一直在跑也不知道在幹嘛,扒著資源不放。
另一部分來說,非 GNOME 的 桌面系統,要使用 HAL,經常不知道怎麼使用,
這造成了有 Linux 發行套件,使用 KDE 作為 桌面系統,卻使用 GNOME Volume Manager 這種不協調的情況。

幸好我們還有 ivman,ivman 全名 Ikke's Volume Manager
它的身份基本上等於 GNOME Volume Manager,它可以接收各種 HAL 發出的訊息,
最棒的是,ivman 不是 桌面系統 的一部份,也不是 GUI程式,
它的設定都是以 xml設定檔 方式定義,執行的程式完全由我們自己定義,
這表示它應該有不錯的彈性,儘管看起來,
它的相容性似乎不很好,而且當選擇太多時,我們反而會不知道該怎麼選擇。

ivman 要安裝,我覺得 man ivman 是最好的主意,網路上找的資料,幾乎沒辦法協助我排除安裝的問題,
後來看了 man ivman 之後,問題就解決了~

1. 在 Debian 上,ivman 直接是套件,安裝即可

2. ivman 要正常動作,要確定 udev、d-bus、hald 這幾個 daemon 都正常運作中,
這部分我相信只要沒漏裝,都是 ok 的
要測試,在 Debian 上我認為執行
/etc/init.d/dbus restart

似乎不錯,當執行 dbus(也就是 D-bus daemon) 的重新起動時,它會一併重新起動 hald(HAL Daemon)、ivman,
整個內容如下:
media [/root] -root- /etc/init.d/dbus restart
Stopping Hardware abstraction layer: hald.
Stopping Avahi mDNS/DNS-SD Daemon: avahi-daemon.
Stopping ivman: ivman.
Stopping System Tools Backends: system-tools-backends.
Stopping system message bus: dbus.
Starting system message bus: dbus.
Starting System Tools Backends: system-tools-backends.
Starting ivman: manager.c:1387 (do_startup_configure) Directory /etc/ivman/ will be used for configuration files.
ivman.
Starting Avahi mDNS/DNS-SD Daemon: avahi-daemon.
Starting Hardware abstraction layer: hald.


udev 的部分,我相信如果有問題,可能連開機都會有問題的,除非你的 Linux 不是使用 udev。

3. 執行 ivman
這部分需要『特別注意』,我之前就是這地方沒弄好,一直一直沒弄成功。
在 man ivman 中有下面這段話:
For automount purposes, Ivman should be run once from a system-wide init script and once per user session (e.g., create a link to /usr/bin/ivman in ~/.kde/Autostart or put an entry for /usr/bin/ivman in gnome-session-manager).

這句話是關鍵,它說,如果你要正常使用 ivman,你必須要執行『2 次』ivman,一次執行在 OS 開機時,
以 Debian 來說,就是
/etc/init.d/ivman

指令執行的。

另一次則要在使用者進入 桌面系統 時執行。

以我來說,我把它加入
~/.xsession

中,類似如下:
.....
icewm-session-lite &
/usr/bin/ivman &
.....



至於其他部分,就是 lirc、mythfrontend、scim,所以我就沒列出來了。

而從前面說明中,它則建議加入到 KDE 的 Autorun 或 GNOME 的 session-manager,這都是起動 X-win 時自動執行的方式,
我加入到 .xsession,實在是因為我基本上是沒用 桌面系統 的,硬要說,也就是 icewm-lite,
主要是因為我整個系統只執行 mythtv,加了大型的 桌面系統 沒有意義。

4. 設定 ivman
ivman 的設定和上面一樣,也是『2 份』,一份放 /etc/ivman/,另一份則是 ~/.ivman/ 下。
原則上,/etc/ivman/ 下的設定檔不需要動,所有使用者都只要設定 ~/.ivman/ 下的設定檔即可,
這點讓 ivman 可以根據不同的使用者,定義不同的 automount 設定,相當不錯。

當使用者執行過 ivman 後,~/.ivman/ 下的設定檔就會自動產生,基本上和系統的相同,
都是 4 個檔案,分別是:
IvmConfigActions.xml
IvmConfigConditions.xml
IvmConfigBase.xml
IvmConfigProperties.xml


其中比較重要的是『IvmConfigActions.xml',這檔案負責所有訊息的動作,
目前的進度是,我將 IvmConfigActions.xml 中的 autoplay video DVD 部分註解去除,如下:
.....
<!-- autoplay video DVDs in Xine (change PLAYER and PLAYEROPT to use a different media player -->
<ivm:Match name="hal.volume.disc.is_videodvd" value="true">
<ivm:Option name="exec" value="PLAYER='xine'; PLAYEROPT='-f dvd://'; pumount '$hal.volume.mount_point$' && ${PLAYER} ${PLAYEROPT}$hal.block.device$" />
</ivm:Match>
.....


在 DVD影片光碟 插入時,已經能夠正常使用 xine 播放。
目前正在設定當 檔案光碟 插入時的動作,目前預設是只會 automount。

附帶一點:
在設定中可以注意到,『volume.disc.is_videodvd'這個參數,這個參數是 HAL 的參數,
也就是說 ivman 會監視 HAL(或說 HAL 會發出通知),當參數改變時,ivman 就會有相對應的動作。
關鍵點,要如何知道 HAL 的參數呢?
可以執行:
> lshal
==================================