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.4721 和 12,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元,除非你能在其它投資中獲得比這個更高的金額,否則還是乖乖的把遊戲玩到底吧!