因為之前家裏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
雖然相關訊息的印表機廠牌是不同的,但我認為結果是大同小異的,同樣是墨水夾,原廠價格這麼貴到底貴在哪?只是色偏嗎?色偏不會是全部的答案~
這篇文章,是我親身的經驗,對台製和原廠仍舊有疑問的,還是選原廠吧~
除非你的印表機,是放在人不會靠近非常遠的地方或獨立的房間,否則,還是不要害人害已的好~
至於雷射的印表機,也有類似的問題,原廠的碳粉夾超級貴,填充式的碳粉價格非常便宜,台製的也是~
但我四周有個小經驗,我媽以前在國中當教職員,她有個同事掛了~
那個同事是肺癌走的,她在國中,就是非常好心的專門幫大家在影印室影印、印刷,結果我媽說現在學校沒人敢去影印、印刷~
原因何在?碳粉的微粒非常細,很容易被人吸入體內,吸入過多,問題就很嚴重了~
而台製或填充的碳粉,相較於原廠,更容易散溢出來,因此相對於原廠,對健康的危害就大得多了~
于是乎就給他清墨清墨清清清~
可是始終有問題(我這邊的問題不是印不出來,是會一直印出橫線.....而且只有上半部一塊),想當然也知道是哪個牌子的印表機這麼有能耐... :(
但是重點不在這裡,這個牌子的印表機出問題也不是一天兩天的事了,上述問題只是背景介紹,沒甚麼好說的,反正以後注意不要再買這個牌子的印表機就好了,這次要提的,是可怕的台製墨水夾~
因為原廠墨水夾跟台製墨水夾價差很大,在這個牌子的印表機上,也都會發生噴嘴阻塞、斷墨...等鳥問題,原廠的墨水夾又故意容量超小,清墨幾次~再來幾次~多來幾次~耶~沒了耶~結果印出來還是有問題,因此就開始找台製墨水夾~
一般來說,網路上~耳語~行銷時普遍會看到原廠和台製墨水夾的區別,通常都會告訴你幾個答案:
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
在下(第一次用唷)我以前高職、二專、二技上來的,國中時英文不算好,但也沒有非常的爛,至少現在進行式、過去式之類的還了解,到了高職,英文課少了很多,但是基本上英文退步基礎還沒退到鴨蛋~
到了二專~當替代役~二技,現在的程度大概比一個上芝麻街美語的小朋友還糟吧 = =||
雖然現在研究所了,但是基本上英文程度仍舊不怎麼樣~
身為一個可憐的研究生,雖然因為我不抽煙、不喝酒,還沒進入煙酒生的境界,但有時候仍然需要發英文信,像是在論壇詢問、寫信給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元,除非你能在其它投資中獲得比這個更高的金額,否則還是乖乖的把遊戲玩到底吧!
在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元,除非你能在其它投資中獲得比這個更高的金額,否則還是乖乖的把遊戲玩到底吧!
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 套件不需要這麼辛苦的安裝,套件庫裡面已經有了
雖然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』
內容>如下:
這邊要稍微注意的是,『DEVICENAME 不再是 CAS_SMART_RDR』,要改為『/dev/null』。
這應該是因為我們這台是USB的關係,看其他設定檔,都是指定為『/dev/ttyS?』。
接下來以root執行
它就會自動更新到『/etc/reader.conf』了。
4. 關於插入讀卡機之後要重新開機的問題,不用麻煩~
只需要把 pcscd 重跑即可,如下:
5. 要知道目前讀卡機有沒有抓到,卡片有沒有插入,可以使用『pcsc_scan』這個程式。
我的/var/log/message訊息如下:
執行pcsc_scan後如下:
6. 我用WINE執行IE,然後連線到郵局的webatm,它的.ocx元件我能夠下載下來,也能夠透過wine的regsvr32.exe註冊到WINE系統裡。
進入webatm.post.gov.tw之後,他不會顯示元件尚未下載(看起來已經成功註冊到WINE了),但是會顯示『找不到讀卡機』。
目前看起來,Linux的Reader有成功跑起來,網路郵局的元件有有跑起來,但是WINE似乎缺少Reader的wrapper,所以目前仍舊沒辦法用讀卡機在網路郵局轉帳...
晶片卡和晶片卡讀卡機很重要,現在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 restart5. 要知道目前讀卡機有沒有抓到,卡片有沒有插入,可以使用『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中提到了紫外線,也就是太陽光,曬久了也不過就是皮膚很黑,會晒傷~
所以,不要再相信無謂的謠言了,事實上目前大部分這類的說法,都是沒有根據的。
上次工研院才發新聞稿說,這些環保團體(就是指『台灣環保聯盟』),他們的偵測器單位根本錯了,偵測器測的單位跟發佈(拿來騙錢)的單位根本不一樣,完全是外行在亂搞。
我們應該嚴重的抵制這樣的團體、這樣的行為,讓這樣的寄生蟲消失在台灣這片淨土(好有綠意)。
最近幾年,電磁波的議題變得非常火熱,尤其是在台灣,三不五時就會有新聞告訴你,你附近的電磁波會強到把你腦袋燒了,結果是什麼?
結果是像我老媽這樣的人,每天看著電視、抱著無線電話,手裡拎著手機,卻說不要無線電,不要無線網路。
關於電磁波,從下面這篇文章:
炒新聞的又來了
有完整的解釋。
簡單的說:
目前所有跟電磁波有關的新聞,全部都是由『台灣環保聯盟』炒作出來的。
這個『台灣環保聯盟』專門在搞反核四、反電磁波這些議題,並且從中獲利。
以電磁波來說,他們到處去亂測,然後拿電磁波來做新聞,讓大家對電磁波害怕、畏懼,接著他們就租借、販賣測量電磁波的工具,甚至販賣電磁波危害說的書籍。
如下轉述:
===================================
本會「電磁波測試器」租借辦法
租借須知
自從本會關心「電磁波」議題以來,民眾詢問度非常多與踴躍,故本會特別提供電磁波測試器,以便民眾免費租借使用。
借閱辦法
一、填寫電磁波儀器租借單及租借收據。
二、抵押現金二仟元,租期為時兩天,歸還時以租借收據作為退還押金的依據。
三、工作人員向您說明如何使用電磁波測試器。
四、完成租借手續,帶調查表與須知回家。
五、歸還時煩請填寫調查結果。
六、此儀器無法探測基地台及行動電話,請注意!
租借時間
週一至週五,上午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開發的程式,都不會有授權上的問題。
其實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 的設計其實頗複雜,我們可以從
裡面的圖

看出來。
這張圖相對來說,是比較清楚的,不然找到的經常是UML,那種就不是很容易看懂了..... = =||
從下列網頁中可以找到比較詳細些的關係說明:
要實現 Linux 上的 automount,Linux 設計了一套架構,如下:
=================================================
=================================================
上述這段是直接轉貼的,簡單的說:
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 上我認為執行
似乎不錯,當執行 dbus(也就是 D-bus daemon) 的重新起動時,它會一併重新起動 hald(HAL Daemon)、ivman,
整個內容如下:
udev 的部分,我相信如果有問題,可能連開機都會有問題的,除非你的 Linux 不是使用 udev。
3. 執行 ivman
這部分需要『特別注意』,我之前就是這地方沒弄好,一直一直沒弄成功。
在 man ivman 中有下面這段話:
這句話是關鍵,它說,如果你要正常使用 ivman,你必須要執行『2 次』ivman,一次執行在 OS 開機時,
以 Debian 來說,就是
指令執行的。
另一次則要在使用者進入 桌面系統 時執行。
以我來說,我把它加入
~/.xsession
中,類似如下:
至於其他部分,就是 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 部分註解去除,如下:
在 DVD影片光碟 插入時,已經能夠正常使用 xine 播放。
目前正在設定當 檔案光碟 插入時的動作,目前預設是只會 automount。
附帶一點:
在設定中可以注意到,『volume.disc.is_videodvd'這個參數,這個參數是 HAL 的參數,
也就是說 ivman 會監視 HAL(或說 HAL 會發出通知),當參數改變時,ivman 就會有相對應的動作。
關鍵點,要如何知道 HAL 的參數呢?
可以執行:
==================================
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==================================
2008年2月16日
MYVIDEO beta 2008-02-16
這算是第一個beta版,儘管還被我發現了些bug.....
不過算是一個能動的版本,穩定性基本上是還有些許問題吧~
不過在我家的環境還算穩定~
這版本跟昨天提到的差不多,已經加入了檔名跑馬燈效果,這部分解決的比我預期快很多;然後關於遙控器部分,目前已經滿順利的,加入了些timer去計時,解決了遙控速度太快,播放影片退出時又很容易結束程式的問題。
整個展示這次以文字解說的方式(沒麥克風... :( ),搭配操作進行展示。
影片連結如下:
MYVIDEO展示
因為時間滿久的(大部分都在打字),所以檔案也比較大,因此放在學校.....
至於目前的執行檔和設定檔、圖檔,則打包好了,連結如下:
MYVIDEO 2008-02-16 beta
執行環境需求:
1. 『一定要是Linux』
2. 要安裝mplayer
3. lirc設定有開時,要安裝lirc
4. libxml、libgnomecanvas-2.0、liblircclient0...我只想到這些,其他的應該灌系統或是安裝這幾個套件後就會有了吧...
目前設定並沒有額外的設定程式,需要手動設定xml的檔案。
比較特別的如下:
在執行時有個參數可以使用
可以直接指定 MAIN.xml 的設定檔路徑、檔名,因為程式路徑在 MAIN.xml 中有設定了,其他幾個設定檔可以透過 MAIN.xml 找到,但 MAIN.xml 不行,因此這個參數可以指定這個檔案的完整路徑。
至於設定檔的檔名(FILETYPE.xml、GUI.xml)和路徑(configs/ ),抱歉,這部分目前我是寫死的~
解析度部分,因為客廳電腦是CRT,只有設到 800x600,圖片都只畫到800x600,所以顯示1024x768時可能會發現背景有問題。
不過沒關係,只要圖片改成1024x768,幾個X、Y、寬、高設定一下,我相信很簡單就能變化成1024x768,甚至要自己另外設計擺放位置,也是類似的方式改改即可。
至於目前的佈景,是我用GImp畫的,感覺還滿有style的...哈~
選單部分要注意的是,因為目前我對『透明』還不了解怎麼搞,所以沒辦法支援透明,因此,目前光棒限制要是方塊,沒辦法用成橢圓,並不是不行,而是周圍會變成白色,這部分目前我還不知道怎麼解決。
至於選單設計,下次再找個獨立篇幅來說一下,如果是需要滾動的選單,目前認為這是不錯的方法。
目前執行過的環境,桌機部分:
Ubuntu 7.1.0
MediaCenter部分:
Debian testing
這個程式所依賴的所有library如下列出:
不過算是一個能動的版本,穩定性基本上是還有些許問題吧~
不過在我家的環境還算穩定~
這版本跟昨天提到的差不多,已經加入了檔名跑馬燈效果,這部分解決的比我預期快很多;然後關於遙控器部分,目前已經滿順利的,加入了些timer去計時,解決了遙控速度太快,播放影片退出時又很容易結束程式的問題。
整個展示這次以文字解說的方式(沒麥克風... :( ),搭配操作進行展示。
影片連結如下:
MYVIDEO展示
因為時間滿久的(大部分都在打字),所以檔案也比較大,因此放在學校.....
至於目前的執行檔和設定檔、圖檔,則打包好了,連結如下:
MYVIDEO 2008-02-16 beta
執行環境需求:
1. 『一定要是Linux』
2. 要安裝mplayer
3. lirc設定有開時,要安裝lirc
4. libxml、libgnomecanvas-2.0、liblircclient0...我只想到這些,其他的應該灌系統或是安裝這幾個套件後就會有了吧...
目前設定並沒有額外的設定程式,需要手動設定xml的檔案。
比較特別的如下:
在執行時有個參數可以使用
./MYVIDEO -main /home/ycfu/MYVIDEO/configs/MAIN.xml可以直接指定 MAIN.xml 的設定檔路徑、檔名,因為程式路徑在 MAIN.xml 中有設定了,其他幾個設定檔可以透過 MAIN.xml 找到,但 MAIN.xml 不行,因此這個參數可以指定這個檔案的完整路徑。
至於設定檔的檔名(FILETYPE.xml、GUI.xml)和路徑(configs/ ),抱歉,這部分目前我是寫死的~
解析度部分,因為客廳電腦是CRT,只有設到 800x600,圖片都只畫到800x600,所以顯示1024x768時可能會發現背景有問題。
不過沒關係,只要圖片改成1024x768,幾個X、Y、寬、高設定一下,我相信很簡單就能變化成1024x768,甚至要自己另外設計擺放位置,也是類似的方式改改即可。
至於目前的佈景,是我用GImp畫的,感覺還滿有style的...哈~
選單部分要注意的是,因為目前我對『透明』還不了解怎麼搞,所以沒辦法支援透明,因此,目前光棒限制要是方塊,沒辦法用成橢圓,並不是不行,而是周圍會變成白色,這部分目前我還不知道怎麼解決。
至於選單設計,下次再找個獨立篇幅來說一下,如果是需要滾動的選單,目前認為這是不錯的方法。
目前執行過的環境,桌機部分:
Ubuntu 7.1.0
MediaCenter部分:
Debian testing
這個程式所依賴的所有library如下列出:
ycfu [/home/ycfu/MYVIDEO] -ycfu- ldd MYVIDEO
linux-gate.so.1 => (0xffffe000)
libgnomecanvas-2.so.0 => /usr/lib/libgnomecanvas-2.so.0 (0xb7f3e000)
libart_lgpl_2.so.2 => /usr/lib/libart_lgpl_2.so.2 (0xb7f28000)
libgtk-x11-2.0.so.0 => /usr/lib/libgtk-x11-2.0.so.0 (0xb7ba2000)
libgdk-x11-2.0.so.0 => /usr/lib/libgdk-x11-2.0.so.0 (0xb7b1b000)
libatk-1.0.so.0 => /usr/lib/libatk-1.0.so.0 (0xb7b00000)
libgdk_pixbuf-2.0.so.0 => /usr/lib/libgdk_pixbuf-2.0.so.0 (0xb7ae8000)
libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0xb7ac3000)
libpangocairo-1.0.so.0 => /usr/lib/libpangocairo-1.0.so.0 (0xb7aba000)
libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0xb7a8e000)
libXext.so.6 => /usr/lib/libXext.so.6 (0xb7a80000)
libXrender.so.1 => /usr/lib/libXrender.so.1 (0xb7a78000)
libXinerama.so.1 => /usr/lib/libXinerama.so.1 (0xb7a75000)
libXi.so.6 => /usr/lib/libXi.so.6 (0xb7a6d000)
libXrandr.so.2 => /usr/lib/libXrandr.so.2 (0xb7a67000)
libXcursor.so.1 => /usr/lib/libXcursor.so.1 (0xb7a5d000)
libXcomposite.so.1 => /usr/lib/libXcomposite.so.1 (0xb7a5a000)
libXdamage.so.1 => /usr/lib/libXdamage.so.1 (0xb7a57000)
libpango-1.0.so.0 => /usr/lib/libpango-1.0.so.0 (0xb7a1a000)
libcairo.so.2 => /usr/lib/libcairo.so.2 (0xb79a3000)
libX11.so.6 => /usr/lib/libX11.so.6 (0xb78b2000)
libXfixes.so.3 => /usr/lib/libXfixes.so.3 (0xb78ac000)
libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0xb7871000)
libgmodule-2.0.so.0 => /usr/lib/libgmodule-2.0.so.0 (0xb786d000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7869000)
libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0xb77ac000)
libxml2.so.2 => /usr/lib/libxml2.so.2 (0xb768e000)
liblirc_client.so.0 => /usr/lib/liblirc_client.so.0 (0xb7687000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb753d000)
libgailutil.so.18 => /usr/lib/libgailutil.so.18 (0xb7535000)
libpangoft2-1.0.so.0 => /usr/lib/libpangoft2-1.0.so.0 (0xb7507000)
/lib/ld-linux.so.2 (0xb7f84000)
libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0xb7497000)
libz.so.1 => /usr/lib/libz.so.1 (0xb7481000)
libexpat.so.1 => /usr/lib/libexpat.so.1 (0xb7461000)
libXau.so.6 => /usr/lib/libXau.so.6 (0xb745e000)
libpng12.so.0 => /usr/lib/libpng12.so.0 (0xb743b000)
libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0xb7436000)
libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb741d000)
2008年2月15日
寒天、洋菜~減肥聖品
話說,因為我是宅男,整天在家不出門應該是很正常的。 :p
話說,因為我這幾年,大概有5,6年了,沒有忌口,什麼都吃,因此變比較胖也是很正常的。
話說,因為我長年生活在網路之中,沒什麼時間概念,因此會有點熬夜,生理時鐘錯亂也應該不意外。
最近看了新聞,發現這樣生活是很可怕的,會早死~會得糖尿病~
可是又發現,當看paper或找paper時,壓力比較大,就容易想吃.....怎麼辦?
所以就看了傳說中的寒天和洋菜。
同樣的,沒圖沒真相,話也不是我說的,連結如下:
"寒天"不就是洋菜嗎?怎麼那麼貴呀?
最近電視廣告實在是打的很兇,一直寒天寒天的,好像越說天氣越冷..... = =
洋菜這個名字,是我在學校時,一個同學說了我才知道的,當時我買杯珍奶,要它加寒天,就是什麼寒天奶茶之類的。
我同學看到了,他說了一句:「這不是洋菜嗎?」
我就愣住了~
於是回來之後,我去逛超市,發現洋菜這樣的東西,就買了一小包,印象中沒多少錢,不知道是10元還是20元。
洋菜這東西真是好用哩~它基本上就是果凍劑,任何東西加上洋菜之後,都可以變成像果凍那樣,因此,果凍、鮮奶凍、布丁,通通都是用它做的,這東西又便宜,10元、20元就有了~
最神奇的是,洋菜基本上幾乎沒有熱量,看討論中提到,洋菜因為沒什麼熱量,營養師很喜歡拿他來做文章,用它來調節飲食相當方便。
不過文中也提到,它基本上沒熱量,所以不適合當作主食,這點.....在現在這環境和時代,大概不大適用,現在情況是,隨便主食一吃,就充滿了熱量和能量..... = =||
不過有一點它有提到,原則上一天要吸收1000卡的熱量,低於1000卡是不對的~(我是懷疑它單位可能錯了,1000大卡吧~我看7-11的豆漿,就200多大卡哩,生菜沙拉也是180多大卡)
回文中也提到,除了洋菜之外,蒟蒻粉 和 愛玉粉 也有同樣的效果,都可以嘗試... :D
洋菜除了沒熱量又能增加飽足感(狂吃洋菜條 = 什麼都沒吃,但是會飽)之外,它「100公克的洋菜就含有74克以上的膳食纖維」,「這些能溶於水的食物纖維,在腸中會吸收膽固醇和膽汁酸」「能降低膽固醇」,另外「由於含有水會膨脹,能延遲食物從胃到小腸的時間,具有抑止血糖值上升的作用」,看起來相當優唷~ :p
不過有點要注意,文中有人提到,現在因為寒天太紅了,到處都加寒天,雖然寒天本身沒熱量,但是往往加的東西熱量很高,像是「糖」,所以在吃、喝寒天食品時,要注意它的「額外配件」,否則越吃越胖還說寒天沒效果,我相信這是大有人在的。
話說,因為我這幾年,大概有5,6年了,沒有忌口,什麼都吃,因此變比較胖也是很正常的。
話說,因為我長年生活在網路之中,沒什麼時間概念,因此會有點熬夜,生理時鐘錯亂也應該不意外。
最近看了新聞,發現這樣生活是很可怕的,會早死~會得糖尿病~
可是又發現,當看paper或找paper時,壓力比較大,就容易想吃.....怎麼辦?
所以就看了傳說中的寒天和洋菜。
同樣的,沒圖沒真相,話也不是我說的,連結如下:
"寒天"不就是洋菜嗎?怎麼那麼貴呀?
最近電視廣告實在是打的很兇,一直寒天寒天的,好像越說天氣越冷..... = =
洋菜這個名字,是我在學校時,一個同學說了我才知道的,當時我買杯珍奶,要它加寒天,就是什麼寒天奶茶之類的。
我同學看到了,他說了一句:「這不是洋菜嗎?」
我就愣住了~
於是回來之後,我去逛超市,發現洋菜這樣的東西,就買了一小包,印象中沒多少錢,不知道是10元還是20元。
洋菜這東西真是好用哩~它基本上就是果凍劑,任何東西加上洋菜之後,都可以變成像果凍那樣,因此,果凍、鮮奶凍、布丁,通通都是用它做的,這東西又便宜,10元、20元就有了~
最神奇的是,洋菜基本上幾乎沒有熱量,看討論中提到,洋菜因為沒什麼熱量,營養師很喜歡拿他來做文章,用它來調節飲食相當方便。
不過文中也提到,它基本上沒熱量,所以不適合當作主食,這點.....在現在這環境和時代,大概不大適用,現在情況是,隨便主食一吃,就充滿了熱量和能量..... = =||
不過有一點它有提到,原則上一天要吸收1000卡的熱量,低於1000卡是不對的~(我是懷疑它單位可能錯了,1000大卡吧~我看7-11的豆漿,就200多大卡哩,生菜沙拉也是180多大卡)
回文中也提到,除了洋菜之外,蒟蒻粉 和 愛玉粉 也有同樣的效果,都可以嘗試... :D
洋菜除了沒熱量又能增加飽足感(狂吃洋菜條 = 什麼都沒吃,但是會飽)之外,它「100公克的洋菜就含有74克以上的膳食纖維」,「這些能溶於水的食物纖維,在腸中會吸收膽固醇和膽汁酸」「能降低膽固醇」,另外「由於含有水會膨脹,能延遲食物從胃到小腸的時間,具有抑止血糖值上升的作用」,看起來相當優唷~ :p
不過有點要注意,文中有人提到,現在因為寒天太紅了,到處都加寒天,雖然寒天本身沒熱量,但是往往加的東西熱量很高,像是「糖」,所以在吃、喝寒天食品時,要注意它的「額外配件」,否則越吃越胖還說寒天沒效果,我相信這是大有人在的。
MYVIDEO嘗鮮
找paper、看paper,有點煩,上來發一下blog,順便提下過年幹得好事~
先說說過年幹得好事吧..... :p
不知道blog有沒有提過(忘了...好像沒有...),我去年底的時候開始打算學C,因為最近這兩年發現C的用途實在很廣泛,資源也非常豐富,和我算是會的語言-Java相比,它的優點實在很多,像是:
1. C的資源豐富,函數庫超級多
不可否認,C的資源實在太豐富了,幾乎是要什麼有什麼,要瀏覽器?Mozilla隨你用。要播放器?mplayer、xine隨你用。要XML?libxml隨你用。要MSN?libmsn隨你用。要GUI?GNOME、KDE隨你用。
可以說是要什麼有什麼,不過以上提得都是Linux,Windows則要看M$老大的臉色,基本上也是很齊全的拉~
2. 跨平台性還ok
C的跨平台性沒有Java強大是不可否認的事實,這如之前提過的,Java在跨平台這點上,目前應該是沒有敵手的,至於相容c#的MONO,光要相容c#就不容易了,現在看起來相容性不好了,因為它GUI之類的都套用GNOME之類的,單就mono在Windows上來說還ok,但要完全相容c#,或者吸引c#使用群,可能差異性還是頗大。
C的跨平台性主要在library,一些像mingw或是wxGTK之類的library,要讓C的程式能跨平台,還是可以的,只是在程式設計之初,就必須要構想好,確定要跨平台,否則要另外改用這些library,改寫depend on OS的code大概會哭吧。
3. 各層級的code都能開發
C可以說是程式語言之母了,目前大部分的OS kernel code,都是C,當然拉,我不否認也有用其他語言寫的OS,像C++有,Java有,據說M$有開發過c#的,組合語言有... :p
但主流還是C.....
其他目前沒想到,想到了再用另外篇幅說吧~ :p
因此我從去年開始考慮學C,一方面是上述原因還有些沒想到的原因想學,另一方面是,之後論文要實做,可能也是用C,打算先修一下~
先修的對象,就想到Linux的Media Center播放軟體,話說MythTV上有個媒體播放介面,稱為MythVideo,我只能說.....你真它ooxx的不好用~
首先~MythVideo是讀取資料庫的,因此如果檔案更新了,資料庫沒更新,那檔案就看不到,不能播放。
再來~因為同上原因,如果是合集式的光碟片,例如整部日劇檔案的DVD,整部卡通檔案的DVD,那種把一堆.avi或.rmvb燒成一張的合集,它就無法播放,需要更新資料庫才可以~
接著~不能直接播放DVD影片,如果今天是DVD影像光碟,也就是百事達租的那種片子,MyVideo不能看,要另外用一套MyDVD來看~可是,明明都是放影片,誰管得了這麼多?
又接著~它沒有提供連續播放的功能,沒辦法一放之後,就放到結束,雖然我現在用script作到了,但是只能治標,不能治本,還是有限制。
最後~它沒有預覽框,不能預覽,每次點到影片,它下面都會提供些資訊,像是影片圖片、影片介紹之類的,問題是,我哪這麼閒去幫每部影片製作影片介紹,還幫每部影片找封面,反正看完就刪掉了,找這些還不如找個好點的字幕檔。結果它提供了些莫名其妙的空間,卻沒有提供預覽框,我沒辦法預覽影片,這真的是太不貼切了。
因此,我就很想要作個播放介面來取代它,所以就打算拿這個播放介面程式來試刀,打算用C+GTK來寫,一來練習C,練習GTK,二來提高自己的自信心,讓自己相信,我論文搞這麼久沒個屁不是因為程度不好... :( 三來的確是有用處的,四來,想出來了才不會讓自己、讓別人覺得,我整天blog寫一堆,說程式、說想法說一堆,結果都是屁,什麼都寫不出來。
MYVIDEO就是成果,基本上寫了一段時間了,看之前整理的C的目錄,好像是11月左右(目錄的建立時間是11/20),加上之前試車沒想過整理的時間,大概在10~11月左右吧~
中間有遇到些問題,因此停了段時間,不然就是斷斷續續的在寫,畢竟大部分時間都還是找paper、看paper,多半是週末或煩、沒什麼事的時候。
最近過年,正好就卯起來寫,結果發現過年期間進度超快,不但之前問題解了,還加了很多新東西上去。
我瞭解,大家都說沒圖沒真相,我在前幾天有錄製了一段,雖然跟現在的部份還有些許差異,但是已經很貼近目前的版本了(修了些bug,加了2個label,正在寫跑馬燈式的檔案顯示)。
由於影片是莫名其妙的ogg,所以沒法上傳影片直接播放,還請包涵~
影片連結
這個程式目前的特色有幾個:
1.它的選單設計,並不是使用GTK的元件,而是另外以繪圖的方式設計,解釋起來有點複雜... = =||
而這樣設計的原因,是為了能夠提供選單捲動而做的,因此MYVIDEO的選單,是可以捲動或跑馬燈效果的,之所以沒有,是因為捲動效果的移動不好計算,目前的測試發現,它會突然發瘋,而且檔案很多時,捲動速度會莫名其妙變得很慢(檔案列表的檔案越多,速度越慢)(很詭異,因為整個選單不是很多個檔案或很多個圖片構成的,是整片字串aaa\nbbb\n這樣產生的一張圖片,跳動式沒問題,理論上捲動也不會有問題,但...就是有問題...)。
2.它的所有設定,全部是使用xml的設定檔進行設定的,因此改設定的時候,完全不需要修改程式,就可以變更所有設定
3.它的整個畫面,完全是佈景式的,背景、選單、選單位置(x,y)、選單大小(長、寬)、光棒、光棒位置、光棒大小、文字、文字大小,全部都可以設定,套第2點,這些設定全部都以xml設定在設定檔中,可以很輕易的透過畫圖、改設定來變化成不同的樣式,不論是擺放位置、大小都是,包括預覽視窗的位置、大小也是。
4.預覽視窗的影像套用mplayer,對影片支援度很高,從前面的影片連結中有一段能注意到,它能夠直接預覽.iso的光碟檔。
5.滑鼠游標消失,這可能不太容易發現到,影片一開始游標亂跑,當程式執行後,游標還是在亂跑,但只要移動到MYVIDEO的窗體,游標就不見了~沒錯,我有寫讓游標消失的程式,讓它消失~這不是我獨創的,是google教的,它的消失很單純,就是把游標圖片改成沒有東西... :p
6.支援遙控器,開玩笑,為了取代MythVideo,沒遙控器支援怎麼可以..... :p
不過,為了支援lirc,X的,我還去看Linux的IO Channel怎麼寫,沒辦法,GTK本身需要main loop來運作,白話的說,GTK的所有程式,主程式都是一個GTK迴圈,而且不允許別人也搞迴圈,就某方面而言,只准自己搞小圈圈,不准別人搞小圈圈,實在是很惡劣的事情..... :p
翩翩lirc的程式也是用迴圈寫的,它透過迴圈,不斷的在等使用者按下遙控器按鍵。
因此要讓它們和平相處,就2個方法:
a.multi-process或multi-thread,但網路上別人不建議,說這會破壞GTK迴圈(不了... = =)。
b.透過IO Channel,把lirc掛到系統的IO輪詢,讓系統沒事的時候去問問它(一般建議的作法,Linux上網路也是這樣搞的唷... :p)
7.副檔名偵測,不用說,誰會希望播放軟體沒事還顯示.srt、.dll、readme...等莫名其妙的檔案,因此MYVIDEO我有寫副檔名判斷,它可以自動篩選副檔名,副檔名判斷的準則是什麼?
同樣,由一個叫FILETYPE.xml的檔案設定,可以自行定義副檔名。
8.指定播放程式,這點和上面有關聯,MYVIDEO中,FILETYPE中所有的副檔名,都可以關聯到特定的播放程式,注意唷~是特定的播放「程式」,意思是說,你可以自行寫個script讓它呼叫,它就會直接執行script,並且把影片檔代入到script當中,代入的方式我很貼心的做了調整,只需要在整個指令串中加入「%s」,%s就會被代入成影片檔的完整路徑檔名,因此,你可以在整個command的任何地方操作影片檔,不會受限於一定要放在執行檔最後面。
這部份實際上滿簡單的,除了%s的字串取代很麻煩之外,其他部份就只是簡單的
9.版權,這不知道算不算特色... :p
整個程式我有稍微去注意,它所使用到的library,大部分是GLibc、GNOME Library,幾乎所有的程式都是「GNU Lesser General Public License」的授權(也就是GNU LGPL),這授權的規定是,只要提供library的code即可,程式本身不需要提供,因此程式的版權原則上完全是屬於我的,沒有Open Source的困擾。
也許會說,你不是用到mplayer了嗎?mplayer基本上沒有library可以呼叫,目前全部的mplayer frontend,都是另外以指令的方式呼叫mplayer執行的,操作部份則是透過建立一個所謂的pipe和mplayer溝通,送出mplayer的command來操作,因此這部份並不牽涉到授權的問題,GNU GPL中有提到,如果僅僅是「使用」GNU GPL的程式,像是你用gcc去compile程式,或像現在這樣的情況,你的程式並不需要Open。
目前就是上面這些特色了,我預期的功能還有:
1.選單是捲動(或說滾動?)的,不過我爸說,他不喜歡捲動...這部份我考慮不理它了... :p
2.檔名顯示可以類似Winamp那樣,以跑馬燈方式顯示
3.要能夠瀏覽DVD上的影片檔,這部份目前來說,設定路徑到光碟上,搭配Linux上的automount應該就ok了~
4.要能夠自動判斷DVD是影片檔或DVD影片,這部份目前不確定怎麼辦,因為在Linux上,DVD影片並沒有辦法像Windows一樣顯示成檔案和目錄,怎麼樣判斷它是影片,或者怎麼樣能進一步讓它推入DVD影片時自動播放,目前還在查資料。
目前第2點,還在設計中,發現最大的問題在於,我不知道如何計算、判斷整個字串的長度(不是字數,是佔用螢幕的pixel數),因為不知道怎麼計算、判斷,因此沒辦法知道到底跑馬燈要跑多遠,而這裡最大的問題是,每個字型中,字的寬度我現在還不會算,而且遇到abcd和1234,數字、字母的寬度都還有差別,這讓我無所適從,還在找有沒有相關的函數。
而第1點前面提過,在檔案列表很長的時候,會莫名其妙的嚴重lag,如果移動速度太快,會發瘋...下次把幾個bug錄起來一次展示出來... :p
而第3點,我的確有在想什麼時候來搞它,大概時間會是排在先把第2點問題解決吧。
第4點,我的確在前幾天有找Linux的HAL,Linux的HAL專門負責類似Windows上自動播放的動作,像是放入光碟片時的自動播放,插入隨身碟時的自動瀏覽,不過目前問題是,HAL的文件並不多,尤其是libhal,也就是HAL的library如何使用,並沒有找到很多文件和教學,我目前無從寫起。
因為程式還未完成,就像前面提到的,因此目前還沒有放程式的打算,我打算至少把跑馬燈效果和lirc的bug修好了來放(遙控器目前反應太靈敏,我設定quit鍵離開播放程式,同時設定quit鍵離開MYVIDEO,結果就是一播放完,按下按鍵,它連MYVIDEO都離開了... = =|| )
此外,到時候會再錄影一次,把更新的成果一起展示。 :p
最後嘴炮一下,目前寫這個程式到目前來說,感覺得出來成果滿多的,目前感覺上,C語言對指標還有問題,字串處理還有問題,字串指標問題一大堆,這些問題之外,對C已經頗為上手,對這次C+GTK的初體驗自我感覺相當好。
另外問一下,如果這東西要拿來賣~會有人或公司有興趣嗎... :p
先說說過年幹得好事吧..... :p
不知道blog有沒有提過(忘了...好像沒有...),我去年底的時候開始打算學C,因為最近這兩年發現C的用途實在很廣泛,資源也非常豐富,和我算是會的語言-Java相比,它的優點實在很多,像是:
1. C的資源豐富,函數庫超級多
不可否認,C的資源實在太豐富了,幾乎是要什麼有什麼,要瀏覽器?Mozilla隨你用。要播放器?mplayer、xine隨你用。要XML?libxml隨你用。要MSN?libmsn隨你用。要GUI?GNOME、KDE隨你用。
可以說是要什麼有什麼,不過以上提得都是Linux,Windows則要看M$老大的臉色,基本上也是很齊全的拉~
2. 跨平台性還ok
C的跨平台性沒有Java強大是不可否認的事實,這如之前提過的,Java在跨平台這點上,目前應該是沒有敵手的,至於相容c#的MONO,光要相容c#就不容易了,現在看起來相容性不好了,因為它GUI之類的都套用GNOME之類的,單就mono在Windows上來說還ok,但要完全相容c#,或者吸引c#使用群,可能差異性還是頗大。
C的跨平台性主要在library,一些像mingw或是wxGTK之類的library,要讓C的程式能跨平台,還是可以的,只是在程式設計之初,就必須要構想好,確定要跨平台,否則要另外改用這些library,改寫depend on OS的code大概會哭吧。
3. 各層級的code都能開發
C可以說是程式語言之母了,目前大部分的OS kernel code,都是C,當然拉,我不否認也有用其他語言寫的OS,像C++有,Java有,據說M$有開發過c#的,組合語言有... :p
但主流還是C.....
其他目前沒想到,想到了再用另外篇幅說吧~ :p
因此我從去年開始考慮學C,一方面是上述原因還有些沒想到的原因想學,另一方面是,之後論文要實做,可能也是用C,打算先修一下~
先修的對象,就想到Linux的Media Center播放軟體,話說MythTV上有個媒體播放介面,稱為MythVideo,我只能說.....你真它ooxx的不好用~
首先~MythVideo是讀取資料庫的,因此如果檔案更新了,資料庫沒更新,那檔案就看不到,不能播放。
再來~因為同上原因,如果是合集式的光碟片,例如整部日劇檔案的DVD,整部卡通檔案的DVD,那種把一堆.avi或.rmvb燒成一張的合集,它就無法播放,需要更新資料庫才可以~
接著~不能直接播放DVD影片,如果今天是DVD影像光碟,也就是百事達租的那種片子,MyVideo不能看,要另外用一套MyDVD來看~可是,明明都是放影片,誰管得了這麼多?
又接著~它沒有提供連續播放的功能,沒辦法一放之後,就放到結束,雖然我現在用script作到了,但是只能治標,不能治本,還是有限制。
最後~它沒有預覽框,不能預覽,每次點到影片,它下面都會提供些資訊,像是影片圖片、影片介紹之類的,問題是,我哪這麼閒去幫每部影片製作影片介紹,還幫每部影片找封面,反正看完就刪掉了,找這些還不如找個好點的字幕檔。結果它提供了些莫名其妙的空間,卻沒有提供預覽框,我沒辦法預覽影片,這真的是太不貼切了。
因此,我就很想要作個播放介面來取代它,所以就打算拿這個播放介面程式來試刀,打算用C+GTK來寫,一來練習C,練習GTK,二來提高自己的自信心,讓自己相信,我論文搞這麼久沒個屁不是因為程度不好... :( 三來的確是有用處的,四來,想出來了才不會讓自己、讓別人覺得,我整天blog寫一堆,說程式、說想法說一堆,結果都是屁,什麼都寫不出來。
MYVIDEO就是成果,基本上寫了一段時間了,看之前整理的C的目錄,好像是11月左右(目錄的建立時間是11/20),加上之前試車沒想過整理的時間,大概在10~11月左右吧~
中間有遇到些問題,因此停了段時間,不然就是斷斷續續的在寫,畢竟大部分時間都還是找paper、看paper,多半是週末或煩、沒什麼事的時候。
最近過年,正好就卯起來寫,結果發現過年期間進度超快,不但之前問題解了,還加了很多新東西上去。
我瞭解,大家都說沒圖沒真相,我在前幾天有錄製了一段,雖然跟現在的部份還有些許差異,但是已經很貼近目前的版本了(修了些bug,加了2個label,正在寫跑馬燈式的檔案顯示)。
由於影片是莫名其妙的ogg,所以沒法上傳影片直接播放,還請包涵~
影片連結
這個程式目前的特色有幾個:
1.它的選單設計,並不是使用GTK的元件,而是另外以繪圖的方式設計,解釋起來有點複雜... = =||
而這樣設計的原因,是為了能夠提供選單捲動而做的,因此MYVIDEO的選單,是可以捲動或跑馬燈效果的,之所以沒有,是因為捲動效果的移動不好計算,目前的測試發現,它會突然發瘋,而且檔案很多時,捲動速度會莫名其妙變得很慢(檔案列表的檔案越多,速度越慢)(很詭異,因為整個選單不是很多個檔案或很多個圖片構成的,是整片字串aaa\nbbb\n這樣產生的一張圖片,跳動式沒問題,理論上捲動也不會有問題,但...就是有問題...)。
2.它的所有設定,全部是使用xml的設定檔進行設定的,因此改設定的時候,完全不需要修改程式,就可以變更所有設定
3.它的整個畫面,完全是佈景式的,背景、選單、選單位置(x,y)、選單大小(長、寬)、光棒、光棒位置、光棒大小、文字、文字大小,全部都可以設定,套第2點,這些設定全部都以xml設定在設定檔中,可以很輕易的透過畫圖、改設定來變化成不同的樣式,不論是擺放位置、大小都是,包括預覽視窗的位置、大小也是。
4.預覽視窗的影像套用mplayer,對影片支援度很高,從前面的影片連結中有一段能注意到,它能夠直接預覽.iso的光碟檔。
5.滑鼠游標消失,這可能不太容易發現到,影片一開始游標亂跑,當程式執行後,游標還是在亂跑,但只要移動到MYVIDEO的窗體,游標就不見了~沒錯,我有寫讓游標消失的程式,讓它消失~這不是我獨創的,是google教的,它的消失很單純,就是把游標圖片改成沒有東西... :p
6.支援遙控器,開玩笑,為了取代MythVideo,沒遙控器支援怎麼可以..... :p
不過,為了支援lirc,X的,我還去看Linux的IO Channel怎麼寫,沒辦法,GTK本身需要main loop來運作,白話的說,GTK的所有程式,主程式都是一個GTK迴圈,而且不允許別人也搞迴圈,就某方面而言,只准自己搞小圈圈,不准別人搞小圈圈,實在是很惡劣的事情..... :p
翩翩lirc的程式也是用迴圈寫的,它透過迴圈,不斷的在等使用者按下遙控器按鍵。
因此要讓它們和平相處,就2個方法:
a.multi-process或multi-thread,但網路上別人不建議,說這會破壞GTK迴圈(不了... = =)。
b.透過IO Channel,把lirc掛到系統的IO輪詢,讓系統沒事的時候去問問它(一般建議的作法,Linux上網路也是這樣搞的唷... :p)
7.副檔名偵測,不用說,誰會希望播放軟體沒事還顯示.srt、.dll、readme...等莫名其妙的檔案,因此MYVIDEO我有寫副檔名判斷,它可以自動篩選副檔名,副檔名判斷的準則是什麼?
同樣,由一個叫FILETYPE.xml的檔案設定,可以自行定義副檔名。
8.指定播放程式,這點和上面有關聯,MYVIDEO中,FILETYPE中所有的副檔名,都可以關聯到特定的播放程式,注意唷~是特定的播放「程式」,意思是說,你可以自行寫個script讓它呼叫,它就會直接執行script,並且把影片檔代入到script當中,代入的方式我很貼心的做了調整,只需要在整個指令串中加入「%s」,%s就會被代入成影片檔的完整路徑檔名,因此,你可以在整個command的任何地方操作影片檔,不會受限於一定要放在執行檔最後面。
這部份實際上滿簡單的,除了%s的字串取代很麻煩之外,其他部份就只是簡單的
system(command);所以,很容易自由發揮... :p9.版權,這不知道算不算特色... :p
整個程式我有稍微去注意,它所使用到的library,大部分是GLibc、GNOME Library,幾乎所有的程式都是「GNU Lesser General Public License」的授權(也就是GNU LGPL),這授權的規定是,只要提供library的code即可,程式本身不需要提供,因此程式的版權原則上完全是屬於我的,沒有Open Source的困擾。
也許會說,你不是用到mplayer了嗎?mplayer基本上沒有library可以呼叫,目前全部的mplayer frontend,都是另外以指令的方式呼叫mplayer執行的,操作部份則是透過建立一個所謂的pipe和mplayer溝通,送出mplayer的command來操作,因此這部份並不牽涉到授權的問題,GNU GPL中有提到,如果僅僅是「使用」GNU GPL的程式,像是你用gcc去compile程式,或像現在這樣的情況,你的程式並不需要Open。
目前就是上面這些特色了,我預期的功能還有:
1.選單是捲動(或說滾動?)的,不過我爸說,他不喜歡捲動...這部份我考慮不理它了... :p
2.檔名顯示可以類似Winamp那樣,以跑馬燈方式顯示
3.要能夠瀏覽DVD上的影片檔,這部份目前來說,設定路徑到光碟上,搭配Linux上的automount應該就ok了~
4.要能夠自動判斷DVD是影片檔或DVD影片,這部份目前不確定怎麼辦,因為在Linux上,DVD影片並沒有辦法像Windows一樣顯示成檔案和目錄,怎麼樣判斷它是影片,或者怎麼樣能進一步讓它推入DVD影片時自動播放,目前還在查資料。
目前第2點,還在設計中,發現最大的問題在於,我不知道如何計算、判斷整個字串的長度(不是字數,是佔用螢幕的pixel數),因為不知道怎麼計算、判斷,因此沒辦法知道到底跑馬燈要跑多遠,而這裡最大的問題是,每個字型中,字的寬度我現在還不會算,而且遇到abcd和1234,數字、字母的寬度都還有差別,這讓我無所適從,還在找有沒有相關的函數。
而第1點前面提過,在檔案列表很長的時候,會莫名其妙的嚴重lag,如果移動速度太快,會發瘋...下次把幾個bug錄起來一次展示出來... :p
而第3點,我的確有在想什麼時候來搞它,大概時間會是排在先把第2點問題解決吧。
第4點,我的確在前幾天有找Linux的HAL,Linux的HAL專門負責類似Windows上自動播放的動作,像是放入光碟片時的自動播放,插入隨身碟時的自動瀏覽,不過目前問題是,HAL的文件並不多,尤其是libhal,也就是HAL的library如何使用,並沒有找到很多文件和教學,我目前無從寫起。
因為程式還未完成,就像前面提到的,因此目前還沒有放程式的打算,我打算至少把跑馬燈效果和lirc的bug修好了來放(遙控器目前反應太靈敏,我設定quit鍵離開播放程式,同時設定quit鍵離開MYVIDEO,結果就是一播放完,按下按鍵,它連MYVIDEO都離開了... = =|| )
此外,到時候會再錄影一次,把更新的成果一起展示。 :p
最後嘴炮一下,目前寫這個程式到目前來說,感覺得出來成果滿多的,目前感覺上,C語言對指標還有問題,字串處理還有問題,字串指標問題一大堆,這些問題之外,對C已經頗為上手,對這次C+GTK的初體驗自我感覺相當好。
另外問一下,如果這東西要拿來賣~會有人或公司有興趣嗎... :p
2008年2月1日
Running WinCV on Linux
跟我一樣有經歷過大補帖時代的人應該會對一個程式不陌生,那就是傳說中的『CV』,而程式全名叫『CVIEW』。
在那個年代中,CVIEW基本上等於檔案總管,電腦開機進入DOS之後,第一個執行的,就是CV.EXE(CVIEW的執行檔),CVIEW非常方便的地方在於,它速度非常快、檔案非常小,以分割視窗方式呈現,可以直接預覽檔案內容,直接對檔案按ENTER,會立刻開啟CE.EXE這個文字編輯軟體,文字檔時就直接編輯,執行檔或其他binary檔案則會直接以HEX模式顯示,如果點選的是圖檔時,會直接秀圖,可以說是非常的強大。
進入Windows之後,Windows將檔案總管能力提昇,GUI介面+副檔名關聯+圖檔、影片、音樂預覽+IE整合,檔案總管做到這地步,以往的這類程式需求度就變得很低了。
CVIEW的作者其實有個人網站,現在仍舊有零星更新,而且作者之後有開發WinCV,但因為前面提過的,我WinCV用的次數就很少很少了~
幾個月前,差不多是在把桌機轉換到Linux前沒多久,有一天突然想到個問題,當時的情境是,在網路上看到有人把他之前DOS時代寫的DOS程式,用Linux的DOS模擬器執行,我就想,我DOS模擬器沒玩過,不知道能執行甚麼東西,想著想著,就想到了CVIEW~
接著就想,Linux的終端機一直覺得不大方便,缺少了甚麼,原來就是CVIEW阿~
雖然現在已經是Windows的時代了,而大部分的人寧可動滑鼠點選,也不會願意用CVIEW純鍵盤的操作(有一票傢伙會說,打鍵盤key指令才是王道,那才快阿~問題是,打鍵盤key指令的操作方式,沒辦法一邊吃披薩、一般操作電腦...,套句閃電霹靂車中蘭德爾說過的話,「這種只能趴著開的車,不能夠坐著喝紅茶,我才不願意開勒....」,同理可證..... :p)但是Linux不同,Linux主要的操作還是以終端機為主,而在終端機的環境中,CVIEW的價值仍然存在,所以說,如果CVIEW能夠移植到Linux上.....就完美了.... :D
這部分有點可惜,因為作者在網頁中說,CVIEW for DOS不再更新,而且沒有提供Source Code,他程式又是用Win32forth寫的,接近組合語言(難怪檔案小、速度快),我Java夠破了,C也很糟,forth.....完全沒感覺,所以也不敢跟作者要Source Code,就算肯給,給了也沒用..... :p
不過WinCV就不同了,WinCV是該作者寫的視窗版CVIEW,雖然在視窗介面下已經有檔案總管(Linux下是Nautilus)了,但有WINE,玩玩還是可以的..... :p

看看,完全繼承了CVIEW的style,操作一樣流暢,而且一樣可以直接顯示文字檔,對於UTF-8也可以編輯,圖檔可以直接點選後秀出。
因為之前用Windows時就有玩過了,感覺並不會很懷念,但是在Linux下操作,感受倒是很特別,下面再貼一張,和其他Linux程式的合影。
在那個年代中,CVIEW基本上等於檔案總管,電腦開機進入DOS之後,第一個執行的,就是CV.EXE(CVIEW的執行檔),CVIEW非常方便的地方在於,它速度非常快、檔案非常小,以分割視窗方式呈現,可以直接預覽檔案內容,直接對檔案按ENTER,會立刻開啟CE.EXE這個文字編輯軟體,文字檔時就直接編輯,執行檔或其他binary檔案則會直接以HEX模式顯示,如果點選的是圖檔時,會直接秀圖,可以說是非常的強大。
進入Windows之後,Windows將檔案總管能力提昇,GUI介面+副檔名關聯+圖檔、影片、音樂預覽+IE整合,檔案總管做到這地步,以往的這類程式需求度就變得很低了。
CVIEW的作者其實有個人網站,現在仍舊有零星更新,而且作者之後有開發WinCV,但因為前面提過的,我WinCV用的次數就很少很少了~
幾個月前,差不多是在把桌機轉換到Linux前沒多久,有一天突然想到個問題,當時的情境是,在網路上看到有人把他之前DOS時代寫的DOS程式,用Linux的DOS模擬器執行,我就想,我DOS模擬器沒玩過,不知道能執行甚麼東西,想著想著,就想到了CVIEW~
接著就想,Linux的終端機一直覺得不大方便,缺少了甚麼,原來就是CVIEW阿~
雖然現在已經是Windows的時代了,而大部分的人寧可動滑鼠點選,也不會願意用CVIEW純鍵盤的操作(有一票傢伙會說,打鍵盤key指令才是王道,那才快阿~問題是,打鍵盤key指令的操作方式,沒辦法一邊吃披薩、一般操作電腦...,套句閃電霹靂車中蘭德爾說過的話,「這種只能趴著開的車,不能夠坐著喝紅茶,我才不願意開勒....」,同理可證..... :p)但是Linux不同,Linux主要的操作還是以終端機為主,而在終端機的環境中,CVIEW的價值仍然存在,所以說,如果CVIEW能夠移植到Linux上.....就完美了.... :D
這部分有點可惜,因為作者在網頁中說,CVIEW for DOS不再更新,而且沒有提供Source Code,他程式又是用Win32forth寫的,接近組合語言(難怪檔案小、速度快),我Java夠破了,C也很糟,forth.....完全沒感覺,所以也不敢跟作者要Source Code,就算肯給,給了也沒用..... :p
不過WinCV就不同了,WinCV是該作者寫的視窗版CVIEW,雖然在視窗介面下已經有檔案總管(Linux下是Nautilus)了,但有WINE,玩玩還是可以的..... :p

看看,完全繼承了CVIEW的style,操作一樣流暢,而且一樣可以直接顯示文字檔,對於UTF-8也可以編輯,圖檔可以直接點選後秀出。
因為之前用Windows時就有玩過了,感覺並不會很懷念,但是在Linux下操作,感受倒是很特別,下面再貼一張,和其他Linux程式的合影。
VirtualBox和VMWare效能比較
雖然一直以來我都滿喜歡VMWare的,但是最近VirtualBox用得比較多,雖然VirtualBox感覺沒有VMWare便利,但是兩者的感覺已經比較接近了。
VirtualBox自從Open Source之後便大受歡迎,大家都說它效能比較好,是不是真的比較好呢?
我個人來說,我一直是不這麼認為的,但是到底誰好,總是需要比較看看才確實~
雖然我沒有親自去比較過,不過有熱心的人有做了比較,並且貼在blog上,我們就來看看吧~
VirtualBox 與 VMware server 的虛擬機器效能比較
從作者的測試結果來看,VirtualBox的確有比較好的效能,至此我們可以知道,大部分人說VirtualBox效能比較好,是正確的,也是合情理的,因此在選擇VM軟體時,VirtualBox看起來是比較不錯的選擇。
VirtualBox自從Open Source之後便大受歡迎,大家都說它效能比較好,是不是真的比較好呢?
我個人來說,我一直是不這麼認為的,但是到底誰好,總是需要比較看看才確實~
雖然我沒有親自去比較過,不過有熱心的人有做了比較,並且貼在blog上,我們就來看看吧~
VirtualBox 與 VMware server 的虛擬機器效能比較
從作者的測試結果來看,VirtualBox的確有比較好的效能,至此我們可以知道,大部分人說VirtualBox效能比較好,是正確的,也是合情理的,因此在選擇VM軟體時,VirtualBox看起來是比較不錯的選擇。
2008年1月30日
Microsoft Windows 2000 支援 遠端桌面!?

各位不用懷疑,這真的是Windows 2000,也真的是用「遠端桌面」的連線程式連接的。
win2k真的支援remote desktop!?
好吧~這其實算是一個小玩笑,這答案說是~也對,說不是~也對!
看看下張圖片吧~稍微仔細一點點看,比較有經驗的就可以看出端倪了:

耶~為什麼遠端桌面這麼厲害,可以看到開機裝置選擇的畫面?
沒有拉~其實這是VirtualBox提供的遠端控制功能,VirtualBox大部分的人都是直接執行他的管理視窗,透過管理視窗啟動虛擬機器,但是VirtualBox其實可以用指令的方式執行,而且也提供所謂的「VRDP模式」,使用了VRDP模式之後,整個虛擬機器只會執行在背景,要操作、控制則透過Windows的「遠端桌面連線」就可以了。
所以上面的圖片的確是Windows 2000沒錯,也的確是透過遠端桌面連線的,但是提供遠端桌面功能的不是Windows 2000,而是VirtualBox,Windows 2000只是跑在虛擬機器上。
這算是剛剛研究的小心得,覺得有趣就po上來給大家開開眼界,下次看看有閒工夫,來把我知道的VirtualBox指令功能列出來。
其實VirtualBox的指令功能很強大,甚至超越了GUI介面提供的功能,但因為是指令,相當的複雜,我個人來說,每次要使用,都要查才會用,就操作便利性來說~~~0分!
2008年1月29日
將aMule的ed2k關聯到Firefox~遠距版
這標題下的不好,但我想不大出來有什麼比較適合的標題。
要解決的情況是這樣:
A電腦(Debian)-執行aMule
B電腦(Ubuntu)-執行Firefox,點選ed2k連結
B電腦上透過Firefox點選ed2k連結後,要下載的檔案會直接加入到A電腦上的aMule列表當中。
這樣的情況為什麼會出現?
BT、eMule不管怎麼說,就是會不斷的操作磁碟和網路讀寫,不論網路如何爭論,我個人的使用情況是,他會讓電腦變慢,尤其是2個一起開的時候,因此衍生出了把BT、eMule放到獨立電腦的想法,也就是現在大家俗稱的「寵物機」。
「寵物機」方便歸方便,可是對於遠端操作一直有些便利性的問題,我一直以來都是用VNC(現在用NX)這類遠端桌面程式在操作Linux,管理BT和aMule。
現在桌機(B電腦)換成Ubuntu了,有沒有什麼方法可以把ed2k的連結直接關聯到桌機(B電腦)的Firefox,卻可以直接加入到(A電腦)的aMule列表中呢?
隨便搜尋都可以找到有許多人在教如何讓Firefox能關聯aMule的ed2k,方法簡單說就是加入下面2行到about:config當中:
因此可以發現,只需要執行
這樣的語法,就能夠把ed2k連結加入到aMule列表中了~
可是因為aMule不是執行在桌機(B電腦),因此會執行無效,他會說找不到aMule的設定檔,接著我們進一步看看ed2k的說明:
原來ed2k需要aMule的設定檔才能動作,因此我們簡單的把A電腦的HOME目錄連線過來,連線的方式可以是NFS或Samba,只要能讓ed2k知道aMule設定檔目錄在那即可~
以我來說,我把A電腦的/home/ycfu分享出來,桌機(B電腦)則連上並mount到/media/ycfu,因此前面的ed2k指令改輸入為:
就能夠成功加入下載了~
(另一個方法是使用ssh遠端執行,方法簡單說一下帶過去,執行如下即可:
這種作法需搭配公私鑰的設定,不然會詢問密碼,不提的原因是,無法整合到Firefox的關聯中)
雖然前面提到用
可以成功,但是卻無法整合到Firefox的關聯,Firefox的關聯設定中,似乎只接受執行檔,不接受參數的設定,因此,我們需要簡單的修改ed2k的Source Code,來依需要修改。
下載和電腦相同版本的amule source code,然後用
直接找出ed2k的程式碼所在位置,找到程式碼是
直接進入後,找到
注意看紅字,原來aMule設定檔路徑是用變數config_path來設定的,接下來就簡單啦~
在整段IF的最前面加上
如下:
之後執行
然後把amule-cvs/src/ed2k複製出來,放到桌機(B電腦)上,以我前面的設定來說,儲存成/usr/bin/ed2k即可~
要解決的情況是這樣:
A電腦(Debian)-執行aMule
B電腦(Ubuntu)-執行Firefox,點選ed2k連結
B電腦上透過Firefox點選ed2k連結後,要下載的檔案會直接加入到A電腦上的aMule列表當中。
這樣的情況為什麼會出現?
BT、eMule不管怎麼說,就是會不斷的操作磁碟和網路讀寫,不論網路如何爭論,我個人的使用情況是,他會讓電腦變慢,尤其是2個一起開的時候,因此衍生出了把BT、eMule放到獨立電腦的想法,也就是現在大家俗稱的「寵物機」。
「寵物機」方便歸方便,可是對於遠端操作一直有些便利性的問題,我一直以來都是用VNC(現在用NX)這類遠端桌面程式在操作Linux,管理BT和aMule。
現在桌機(B電腦)換成Ubuntu了,有沒有什麼方法可以把ed2k的連結直接關聯到桌機(B電腦)的Firefox,卻可以直接加入到(A電腦)的aMule列表中呢?
隨便搜尋都可以找到有許多人在教如何讓Firefox能關聯aMule的ed2k,方法簡單說就是加入下面2行到about:config當中:
network.protocol-handler.external.ed2k 設為正負值(Boolean)true
network.protocol-handler.app.ed2k 設為字串(String)/usr/bin/ed2k
因此可以發現,只需要執行
ed2k ed2k://ooxxooxxooxxooxx/這樣的語法,就能夠把ed2k連結加入到aMule列表中了~
可是因為aMule不是執行在桌機(B電腦),因此會執行無效,他會說找不到aMule的設定檔,接著我們進一步看看ed2k的說明:
aMule ED2k link parser v1.4.0
Usage:
--help, -h Prints this help.
--config-dir, -c Specifies the aMule configuration directory.
--version, -v Displays version info.
magnet:? Causes the file to be queued for download.
ed2k://|file| Causes the file to be queued for download.
ed2k://|server| Causes the server to be listed or updated.
ed2k://|serverlist| Causes aMule to update the current serverlist.
--emulecollection, -e Loads all links of an emulecollection
*** NOTE: Option order is important! ***原來ed2k需要aMule的設定檔才能動作,因此我們簡單的把A電腦的HOME目錄連線過來,連線的方式可以是NFS或Samba,只要能讓ed2k知道aMule設定檔目錄在那即可~
以我來說,我把A電腦的/home/ycfu分享出來,桌機(B電腦)則連上並mount到/media/ycfu,因此前面的ed2k指令改輸入為:
ed2k -c /media/ycfu/.aMule ed2k://ooxxooxxooxxooxx/就能夠成功加入下載了~
(另一個方法是使用ssh遠端執行,方法簡單說一下帶過去,執行如下即可:
ssh A電腦IP /usr/local/amule/bin/ed2k ed2k://ooxxooxxooxxooxx/這種作法需搭配公私鑰的設定,不然會詢問密碼,不提的原因是,無法整合到Firefox的關聯中)
雖然前面提到用
ed2k -c /media/ycfu/.aMule ed2k://ooxxooxxooxxooxx/可以成功,但是卻無法整合到Firefox的關聯,Firefox的關聯設定中,似乎只接受執行檔,不接受參數的設定,因此,我們需要簡單的修改ed2k的Source Code,來依需要修改。
下載和電腦相同版本的amule source code,然後用
grep -R "Specifies the aMule configuration directory." *直接找出ed2k的程式碼所在位置,找到程式碼是
amule-cvs/src/ED2KLinkParser.cpp直接進入後,找到
.....
if ( arg.substr( 0, 8 ) == "ed2k://|" ) {
// Ensure the URI is valid
if ( arg.at( arg.length() - 1 ) != '/' ) {
arg += '/';
}
string type = arg.substr( 8, arg.find( '|', 9 ) - 8 );
if ( (type == "file") && checkFileLink( arg ) ) {
writeLink( arg, config_path );
} else if ( (type == "server") && checkServerLink( arg ) ) {
writeLink( arg, config_path );
} else if ( (type == "serverlist") && checkServerListLink( arg ) ) {
writeLink( arg, config_path );
} else {
std::cout << "Unknown or invalid link-type:\n\t" << arg << std::endl;
errors = true;
}
} else if (arg == "-c" || arg == "--config-dir") {
if (i < argc - 1) {
config_path = argv[++i];
} else {
std::cerr << "Missing mandatory argument for " << arg << std::endl;
errors = true;
}
} else if (arg.substr(0, 2) == "-c") {
config_path = arg.substr(2);
} else if (arg.substr(0, 13) == "--config-dir=") {
config_path = arg.substr(13);
} else if (arg == "-h" || arg == "--help") {
std::cout << getVersion()
<< "\n\n"
<< "Usage:\n"
<< " --help, -h Prints this help.\n"
<< " --config-dir, -c Specifies the aMule configuration directory.\n"
<< " --version, -v Displays version info.\n\n"
<< " magnet:?Causes the file to be queued for download.\n"
<< " ed2k://|file| Causes the file to be queued for download.\n"
<< " ed2k://|server| Causes the server to be listed or updated.\n"
<< " ed2k://|serverlist| Causes aMule to update the current serverlist.\n\n"
<< " --emulecollection, -e Loads all links of an emulecollection\n\n"
<< "*** NOTE: Option order is important! ***\n"
<< std::endl;
.....
注意看紅字,原來aMule設定檔路徑是用變數config_path來設定的,接下來就簡單啦~
在整段IF的最前面加上
config_path="/media/ycfu/.aMule";如下:
.....
config_path="/media/ycfu/.aMule";
if ( arg.substr( 0, 8 ) == "ed2k://|" ) {
// Ensure the URI is valid
if ( arg.at( arg.length() - 1 ) != '/' ) {
arg += '/';
}
string type = arg.substr( 8, arg.find( '|', 9 ) - 8 );
if ( (type == "file") && checkFileLink( arg ) ) {
writeLink( arg, config_path );
} else if ( (type == "server") && checkServerLink( arg ) ) {
writeLink( arg, config_path );
} else if ( (type == "serverlist") && checkServerListLink( arg ) ) {
writeLink( arg, config_path );
} else {
std::cout << "Unknown or invalid link-type:\n\t" << arg << std::endl;
errors = true;
}
} else if (arg == "-c" || arg == "--config-dir") {
if (i < argc - 1) {
config_path = argv[++i];
} else {
std::cerr << "Missing mandatory argument for " << arg << std::endl;
errors = true;
}
} else if (arg.substr(0, 2) == "-c") {
config_path = arg.substr(2);
} else if (arg.substr(0, 13) == "--config-dir=") {
config_path = arg.substr(13);
} else if (arg == "-h" || arg == "--help") {
std::cout << getVersion()
<< "\n\n"
<< "Usage:\n"
<< " --help, -h Prints this help.\n"
<< " --config-dir, -c Specifies the aMule configuration directory.\n"
<< " --version, -v Displays version info.\n\n"
<< " magnet:?Causes the file to be queued for download.\n"
<< " ed2k://|file| Causes the file to be queued for download.\n"
<< " ed2k://|server| Causes the server to be listed or updated.\n"
<< " ed2k://|serverlist| Causes aMule to update the current serverlist.\n\n"
<< " --emulecollection, -e Loads all links of an emulecollection\n\n"
<< "*** NOTE: Option order is important! ***\n"
<< std::endl;
.....
之後執行
./configure && make然後把amule-cvs/src/ed2k複製出來,放到桌機(B電腦)上,以我前面的設定來說,儲存成/usr/bin/ed2k即可~
2008年1月28日
Java與c#,誰好誰壞?
今天被同學問了這樣一個問題,「假如有個程式語言的新手想學物件導向的語言,Java和c#選哪個比較好?」又問「Java好,好在哪?」
我基本上算是學Java的人,在7~8年前時,當時玩DNS、防火牆、NAT、Apache...等網路的東西,可是漸漸發現一個問題,我沒有寫程式的能力,沒辦法根據自己需要來寫工具,因此我當時希望學習一套程式語言來作為寫工具的武器。
當時正好是php/Flash/Java熱門的時候,在用php和Flash開發時,發現php3+Flash4有不足的地方,加上前面希望學套程式語言的理由,我在C和Java間抉擇,最後很自然的選了Java。
原因有幾個:
1.Java可以寫Java Applet,補足php+Flash的不足(現在Flash本身就強到爆了...)
2.我當時已經用FreeBSD一段時間了(2,3年了),我希望能在FreeBSD/Linux/Windows下都能寫程式
3.當時Java比較熱門,且號稱完全物件導向,和VB根本不能比
4.Java的特色中說,它的門檻介於VB和C之間,比較容易入門
因為這幾個原因,我開始學習Java,到現在雖然Java沒學很熟,寫的還是破破爛爛的,但總歸是我目前比較熟悉的語言。
c#是近年M$推的很大力的程式語言,它在Java後很多年推出,它許多特色跟Java相同,而且積極的要吸收Java的程式設計師,同時又「強烈建議」VB的程式設計師轉用c#。
目前看起來成果相當不錯,憑藉著M$高人一等的行銷和規劃,c#的確有相當大的一塊市場。
回到問題,那到底Java和c#要選誰來學呢?
我的回答會是,看你有沒有用Linux/FreeBSD/Sun...等Unix的需要,如果有,學Java比較好,因為Java可以跨大部分主流的PC平台作業系統。
如果你只會用Windows,也只會在Windows上開發程式,你根本沒碰過Linux,或者裝過一次之後發現那東西根本難用的像垃圾,那麼...學c#吧~
和c#相比,Java其實有許多缺點:
1.Java的效能真的比較差,和c#相比感覺還好,但如果和C/C++...等相比,它效能真的比較差
這沒什麼好說的,經過VM執行的程式效率就是會比較差,c#也有VM,所以兩者差異比較小,但c#有平台優勢,因此整體來說,我相信c#效率會比較好,至於C/C++,根本沒VM,又都是編譯式語言,根本不用比了
2.Java沒有很強大的瀏覽器元件
Java上的瀏覽器元件,怎麼看就只有Swing Editor,找到翻天也找不到好用的瀏覽器元件,只有一個例外,那就是SWT的Mozilla元件,但Java本身附的是Swing,換到SWT,光要找SWT的安裝就找半天(dll+jar的設定),整個SWT語法和Swing完全不同,要重學,如果只因為瀏覽器元件要用SWT,在Swing和SWT混合使用的情況時,會有輕量化物件和重量級物件互相干擾的問題,而且不好解決。
而這在c#上,你可以自由自在的使用IE的元件,儘管它漏洞多、容易中毒、效能差,但不可否認的是,他在目前有全世界最好網頁相容性(被M$壟斷的結果)和最好的支援性(ActiveX)。
3.Java沒有很強大的媒體播放元件
Java上的媒體播放元件,以Sun提供的來說,就是JMF(Java Media Framework),這東西用過的都知道,它是個垃圾。本身設計複雜、難用不說,一堆功能統通都沒有,得要自己寫,更殘忍的是,它基本上只支援極少數的影音編碼(Codec),常見的xvid、DivX、MPEG4、H.264...等格式,統統都不支援。
而這在c#上,你可以使用Media Player SDK,呼叫了Media Player SDK之後,就跟常見的MPC(Media Player Classic)一樣,你可以透過安裝各種編碼包(Codec Package)來支援各種影音格式。
4.Java的IDE並不好用
Java上幾套主流的IDE,像是NetBeans、JBuilder、Eclipse,基本上沒有Visual Studio好用,Visual Studio所見即所得的設計非常好,Eclipse本身沒有辦法拖拉元件來設計GUI,需要另外裝外掛,但是這類外掛多半要錢,免費的不很好用(我記得我是用JVisual...不知道有沒有記錯)。NetBeans是我覺得GUI比較好用的,但是它跑起來很慢,吃得記憶體又大。
JBuilder我完全不會用..... = =||
5.Java的第三方物件庫比較少,尤其是跟比較硬體的呼叫,根本沒有
Java的物件庫比較少,尤其是和C/C++相比,少了很多,和硬體有關的幾乎沒有,舉個簡單的例子,我如果希望寫個程式,這程式可以退出光碟機托盤,這就不容易辦不到了。再提個例子,我希望取得系統中檔案的Owner、權限,這也不大容易辦到。
而在c#,因為沒有跨平台的壓力,c#可以呼叫比較硬體的功能,儘管它不建議,但是是可以的。
但在Java上,受限跨平台的因素,因此這對Java來說,就不容易了。
這樣看起來,Java根本一無是處阿~總有優點吧!?
Java最大的優點有2個,跨平台和物件導向。
先說物件導向吧~
我一直不了解物件導向到底好用在哪裡,直到我學弟跟我說了之後,我才了解~
物件導向的程式語言有個特色,它的程式碼會比較容易看懂,因為不管怎麼變,它都是按照物件導向的概念在寫的,所以只要抓到繼承關係,要看懂程式碼是比較容易的。
Java的物件導向其實比較傳統,傳統的同義字差不多可以說是沒什麼彈性,我同學在學c#的物件導向,聽它敘述之後才知道,c#有很多Java沒有的物件用法,方便是滿方便的,可是不可否認,整個程式碼會變得比較複雜難懂些。
所以相比起來,我認為Java的物件導向是比較好的,畢竟有彈性未必是好事,一方面不一定會去用,用了之後,看得人就很辛苦了。
另一個Java的優勢是跨平台,也許會說,這有什麼大不了的,前面這麼多缺點,一個優點也想打平所有缺點嗎?
結果似乎真的是這樣~
一個只會寫Windows程式,只會用Visual Studio的人,很難了解「跨平台」這件事情的難度,我曾經聽過個事情,在3~4年前,Linux正好開始熱起來,我朋友告訴我一個有趣的事,它公司一個新來的程式設計師被老闆要求把公司的程式移植到Linux上跑,公司的程式是用VB(還是VC...忘了)寫的,那位可憐的新人如果能做到這樣的事情,它就不會到那家公司去了,它可以去告好的公司工作了..... = =||
一般當進一步被問到跨平台的差異時,討論區的高手往往都會說一句「作業系統架構不同」來打死所有人的回答,也打死了問的人,但是什麼叫做「作業系統架構不同」,這很難嗎?
因為最近剛好在學GNU C + GTK,多少能夠有些體會~
首先,Windows和UNIX的發展是平行的,經過了n年之後,它們已經發展出各自的架構出來了,整個系統堆疊出的方塊圖就完全不同,細部更是差異很大。
我們先從小的說起,在UNIX當中,所有Device都被當成一個檔案,然後全部放在/dev目錄下,要呼叫很簡單,直接按照檔案存取的方式來操作Device File,Device就會動了,那像印表機、掃描器之類的,直接read或write之後仍然不會動,是因為中間加入了protocol(通訊協定),因此需要按照通訊協定的方式來read和write。
在Windows裡面,你什麼時候看到過Device File?M$的作法是,針對特定裝置,提供特定的API讓你呼叫使用,你幾乎不需要知道protocol和Device的操作,反正呼叫之後,Windows作業系統就呼叫相對應的元件,頂多跳出系統的視窗來詢問你。
再來,Windows從很久以前就很愛用Registry,一些用電腦多年的人都知道,這裡面藏污納垢,反正系統設定檔、程式設定檔,統統不需要檔案,往裡面丟就對了,容易丟、容易取。
但在UNIX下,基本上沒有這樣的東西,近年GNOME有仿照這樣的形式來設計,但目前用的還沒有很誇張,通常只用在GUI環境,非GUI環境仍舊不用,也多半還是用很醜的設定檔來設定。
光小地方就有這麼大的差異,大地方呢?
Linux、FreeBSD、Sun...等系統,雖然都是UNIX like的系統,但是他們之間仍舊存在差異性,它們的process(程序)設計並不完全一樣,這點到了MacOS上也是,而到了Windows上差異更大,Windows沒有process,只有thread,而全部的系統,在使用process或thread時,呼叫的function不完全一樣,操作方法也不完全一樣。
這種,就是所謂的「作業系統架構不同」,要在不同的作業系統上開發程式,如果要寫到多執行緒,需要參考各作業系統相關的寫法,然後根據不同系統來寫。
再者,Linux...等UNIX like的作業系統,它們用的視窗系統通常是X-win,X-win下面又有視窗管理員(Window Manager)的設計,常聽到的GNOME、KDE就都是Linux下的視窗管理員(Window Manager),各視窗管理員間的API不一樣,因此同樣是寫視窗程式,在UNIX上可能很多套、很多種選擇、寫法。
到了Windows,整個架構又變了,呼叫的API也完全不一樣,寫法、操作差異性更大。
就是因為有這麼大、這麼多的差異性在,因此「跨平台」這三個字才會這麼巨大,讓它的重要性可以補足前面的缺點,事實上前面許多的缺點,根本問題正是「跨平台」所造成的。
這也是為什麼高手跳出來說一句「作業系統架構完全不同」,所有人就得乖乖閉嘴,因為這句話,就是在描述上面寫的一堆東西。
所以Java的神奇在於,它今天利用VM,在所有平台上建構出了相同的執行環境,讓Java程式執行,但問題就在於,VM沒辦法包山包海,比較依賴硬體或作業系統的功能,它做不到,也因為Java程式要透過VM執行,所以執行效率再快,也快不過C/C++這類機器碼的執行效率。
如果感受不深刻的人,尤其長期在Visual Studio下工作的人,試著看看訪間Linux程式設計的書,看看在Linux上寫多執行緒、寫網路程式、寫GUI要怎麼寫?和Visual Studio上的差別有多大?
你就能夠感受到Java的偉大了~
我基本上算是學Java的人,在7~8年前時,當時玩DNS、防火牆、NAT、Apache...等網路的東西,可是漸漸發現一個問題,我沒有寫程式的能力,沒辦法根據自己需要來寫工具,因此我當時希望學習一套程式語言來作為寫工具的武器。
當時正好是php/Flash/Java熱門的時候,在用php和Flash開發時,發現php3+Flash4有不足的地方,加上前面希望學套程式語言的理由,我在C和Java間抉擇,最後很自然的選了Java。
原因有幾個:
1.Java可以寫Java Applet,補足php+Flash的不足(現在Flash本身就強到爆了...)
2.我當時已經用FreeBSD一段時間了(2,3年了),我希望能在FreeBSD/Linux/Windows下都能寫程式
3.當時Java比較熱門,且號稱完全物件導向,和VB根本不能比
4.Java的特色中說,它的門檻介於VB和C之間,比較容易入門
因為這幾個原因,我開始學習Java,到現在雖然Java沒學很熟,寫的還是破破爛爛的,但總歸是我目前比較熟悉的語言。
c#是近年M$推的很大力的程式語言,它在Java後很多年推出,它許多特色跟Java相同,而且積極的要吸收Java的程式設計師,同時又「強烈建議」VB的程式設計師轉用c#。
目前看起來成果相當不錯,憑藉著M$高人一等的行銷和規劃,c#的確有相當大的一塊市場。
回到問題,那到底Java和c#要選誰來學呢?
我的回答會是,看你有沒有用Linux/FreeBSD/Sun...等Unix的需要,如果有,學Java比較好,因為Java可以跨大部分主流的PC平台作業系統。
如果你只會用Windows,也只會在Windows上開發程式,你根本沒碰過Linux,或者裝過一次之後發現那東西根本難用的像垃圾,那麼...學c#吧~
和c#相比,Java其實有許多缺點:
1.Java的效能真的比較差,和c#相比感覺還好,但如果和C/C++...等相比,它效能真的比較差
這沒什麼好說的,經過VM執行的程式效率就是會比較差,c#也有VM,所以兩者差異比較小,但c#有平台優勢,因此整體來說,我相信c#效率會比較好,至於C/C++,根本沒VM,又都是編譯式語言,根本不用比了
2.Java沒有很強大的瀏覽器元件
Java上的瀏覽器元件,怎麼看就只有Swing Editor,找到翻天也找不到好用的瀏覽器元件,只有一個例外,那就是SWT的Mozilla元件,但Java本身附的是Swing,換到SWT,光要找SWT的安裝就找半天(dll+jar的設定),整個SWT語法和Swing完全不同,要重學,如果只因為瀏覽器元件要用SWT,在Swing和SWT混合使用的情況時,會有輕量化物件和重量級物件互相干擾的問題,而且不好解決。
而這在c#上,你可以自由自在的使用IE的元件,儘管它漏洞多、容易中毒、效能差,但不可否認的是,他在目前有全世界最好網頁相容性(被M$壟斷的結果)和最好的支援性(ActiveX)。
3.Java沒有很強大的媒體播放元件
Java上的媒體播放元件,以Sun提供的來說,就是JMF(Java Media Framework),這東西用過的都知道,它是個垃圾。本身設計複雜、難用不說,一堆功能統通都沒有,得要自己寫,更殘忍的是,它基本上只支援極少數的影音編碼(Codec),常見的xvid、DivX、MPEG4、H.264...等格式,統統都不支援。
而這在c#上,你可以使用Media Player SDK,呼叫了Media Player SDK之後,就跟常見的MPC(Media Player Classic)一樣,你可以透過安裝各種編碼包(Codec Package)來支援各種影音格式。
4.Java的IDE並不好用
Java上幾套主流的IDE,像是NetBeans、JBuilder、Eclipse,基本上沒有Visual Studio好用,Visual Studio所見即所得的設計非常好,Eclipse本身沒有辦法拖拉元件來設計GUI,需要另外裝外掛,但是這類外掛多半要錢,免費的不很好用(我記得我是用JVisual...不知道有沒有記錯)。NetBeans是我覺得GUI比較好用的,但是它跑起來很慢,吃得記憶體又大。
JBuilder我完全不會用..... = =||
5.Java的第三方物件庫比較少,尤其是跟比較硬體的呼叫,根本沒有
Java的物件庫比較少,尤其是和C/C++相比,少了很多,和硬體有關的幾乎沒有,舉個簡單的例子,我如果希望寫個程式,這程式可以退出光碟機托盤,這就不容易辦不到了。再提個例子,我希望取得系統中檔案的Owner、權限,這也不大容易辦到。
而在c#,因為沒有跨平台的壓力,c#可以呼叫比較硬體的功能,儘管它不建議,但是是可以的。
但在Java上,受限跨平台的因素,因此這對Java來說,就不容易了。
這樣看起來,Java根本一無是處阿~總有優點吧!?
Java最大的優點有2個,跨平台和物件導向。
先說物件導向吧~
我一直不了解物件導向到底好用在哪裡,直到我學弟跟我說了之後,我才了解~
物件導向的程式語言有個特色,它的程式碼會比較容易看懂,因為不管怎麼變,它都是按照物件導向的概念在寫的,所以只要抓到繼承關係,要看懂程式碼是比較容易的。
Java的物件導向其實比較傳統,傳統的同義字差不多可以說是沒什麼彈性,我同學在學c#的物件導向,聽它敘述之後才知道,c#有很多Java沒有的物件用法,方便是滿方便的,可是不可否認,整個程式碼會變得比較複雜難懂些。
所以相比起來,我認為Java的物件導向是比較好的,畢竟有彈性未必是好事,一方面不一定會去用,用了之後,看得人就很辛苦了。
另一個Java的優勢是跨平台,也許會說,這有什麼大不了的,前面這麼多缺點,一個優點也想打平所有缺點嗎?
結果似乎真的是這樣~
一個只會寫Windows程式,只會用Visual Studio的人,很難了解「跨平台」這件事情的難度,我曾經聽過個事情,在3~4年前,Linux正好開始熱起來,我朋友告訴我一個有趣的事,它公司一個新來的程式設計師被老闆要求把公司的程式移植到Linux上跑,公司的程式是用VB(還是VC...忘了)寫的,那位可憐的新人如果能做到這樣的事情,它就不會到那家公司去了,它可以去告好的公司工作了..... = =||
一般當進一步被問到跨平台的差異時,討論區的高手往往都會說一句「作業系統架構不同」來打死所有人的回答,也打死了問的人,但是什麼叫做「作業系統架構不同」,這很難嗎?
因為最近剛好在學GNU C + GTK,多少能夠有些體會~
首先,Windows和UNIX的發展是平行的,經過了n年之後,它們已經發展出各自的架構出來了,整個系統堆疊出的方塊圖就完全不同,細部更是差異很大。
我們先從小的說起,在UNIX當中,所有Device都被當成一個檔案,然後全部放在/dev目錄下,要呼叫很簡單,直接按照檔案存取的方式來操作Device File,Device就會動了,那像印表機、掃描器之類的,直接read或write之後仍然不會動,是因為中間加入了protocol(通訊協定),因此需要按照通訊協定的方式來read和write。
在Windows裡面,你什麼時候看到過Device File?M$的作法是,針對特定裝置,提供特定的API讓你呼叫使用,你幾乎不需要知道protocol和Device的操作,反正呼叫之後,Windows作業系統就呼叫相對應的元件,頂多跳出系統的視窗來詢問你。
再來,Windows從很久以前就很愛用Registry,一些用電腦多年的人都知道,這裡面藏污納垢,反正系統設定檔、程式設定檔,統統不需要檔案,往裡面丟就對了,容易丟、容易取。
但在UNIX下,基本上沒有這樣的東西,近年GNOME有仿照這樣的形式來設計,但目前用的還沒有很誇張,通常只用在GUI環境,非GUI環境仍舊不用,也多半還是用很醜的設定檔來設定。
光小地方就有這麼大的差異,大地方呢?
Linux、FreeBSD、Sun...等系統,雖然都是UNIX like的系統,但是他們之間仍舊存在差異性,它們的process(程序)設計並不完全一樣,這點到了MacOS上也是,而到了Windows上差異更大,Windows沒有process,只有thread,而全部的系統,在使用process或thread時,呼叫的function不完全一樣,操作方法也不完全一樣。
這種,就是所謂的「作業系統架構不同」,要在不同的作業系統上開發程式,如果要寫到多執行緒,需要參考各作業系統相關的寫法,然後根據不同系統來寫。
再者,Linux...等UNIX like的作業系統,它們用的視窗系統通常是X-win,X-win下面又有視窗管理員(Window Manager)的設計,常聽到的GNOME、KDE就都是Linux下的視窗管理員(Window Manager),各視窗管理員間的API不一樣,因此同樣是寫視窗程式,在UNIX上可能很多套、很多種選擇、寫法。
到了Windows,整個架構又變了,呼叫的API也完全不一樣,寫法、操作差異性更大。
就是因為有這麼大、這麼多的差異性在,因此「跨平台」這三個字才會這麼巨大,讓它的重要性可以補足前面的缺點,事實上前面許多的缺點,根本問題正是「跨平台」所造成的。
這也是為什麼高手跳出來說一句「作業系統架構完全不同」,所有人就得乖乖閉嘴,因為這句話,就是在描述上面寫的一堆東西。
所以Java的神奇在於,它今天利用VM,在所有平台上建構出了相同的執行環境,讓Java程式執行,但問題就在於,VM沒辦法包山包海,比較依賴硬體或作業系統的功能,它做不到,也因為Java程式要透過VM執行,所以執行效率再快,也快不過C/C++這類機器碼的執行效率。
如果感受不深刻的人,尤其長期在Visual Studio下工作的人,試著看看訪間Linux程式設計的書,看看在Linux上寫多執行緒、寫網路程式、寫GUI要怎麼寫?和Visual Studio上的差別有多大?
你就能夠感受到Java的偉大了~
2008年1月17日
Linux我在使用時感覺到的幾個問題
最近家裏的桌機正式改用Linux,重新開機進Win2000的次數已經很少了,基本上以Linux做日常用途已經很能接受了。
我用FreeBSD/Linux的時間其實很長了,算起來從高職2年級開始到現在,有10年了~
回想當時看著「黑皮書」灌FreeBSD 2.2-RELEASE的情景就覺得懷念,當時還很嫩,jdli、woju這些大人物沒一個接觸過,但他們的文件,我們這些初學者,是都會拜讀的,這些人現在都不見了,市面上、網路上看得到的,大概最耳熟能詳的,變成了鳥哥,它的網站幾乎是Linux使用者必去的地方,我個人來說,我覺得拿來查資料很方便,尤其是DNS、防火牆什麼的,忘了就google一樣,上去看看..... :p
一直以來Linux版上的人在推廣Linux時,幾個常見的論調是,Linux沒有Windows這麼多的宣傳,大家用Windows的時間都拿來用Linux的話,一定可以熟悉.....等等。
最近我以Linux當桌機日常使用之後,我深深地感覺到,Linux要和Windows相比,要佔領廣大的個人電腦市場,還需要時間,Linux的確在很多方面,和Windows差太多了~
聽起來Linux好像一無是處,不是的,是Windows在這樣的市場已經很久了,能做的幾乎都做了,沒做的,其他廠商也幫它做完了,Linux要切進來,目前看起來火候還不夠,如果說不太挑剔,用Linux當桌機,馬馬虎虎還可以~
我個人覺得,Linux如果要真正深入桌機,用什麼使用時間長短的屁話,是沒意義的,我覺得Linux like最成功深入桌機市場的,是MacOS.....
我覺得最近在使用Linux時所遇到的最大問題有幾點:
1.Linux的應用程式,缺乏介紹和整理
在Windows上,應用程式就是應用程式,大部分情況之下,要執行應用程式就是下載特定的安裝程式,執行完在程式集點選執行即可。
只有少數情況下,被要求要安裝特定函數庫,才需要安裝特定函式庫,也是以安裝程式的方式安裝。
在Linux上,我們知道有偉大的套件管理系統,負責管理整個系統的所有套件,問題就在這裡。
a.套件管理系統管理的是整個系統的套件,它並沒有區別這個套件是應用程式還是函數庫,只有簡單的被分類,我們大部分情況無法準確的知道到底現在系統裡面安裝了哪些應用程式,因為應用程式和函數庫的套件,完全被混在一起了。
Ubuntu、Fedora因此加入了新增移除程式的功能,但它又太鳥了,該有的一個都沒有,不該有的一堆,大部分教學幾乎都不用它。
b.在Linux上,嚴重缺乏應用程式的介紹、整理,沒有類似toget、軟體王這類的網站,統一介紹各種Linux的應用程式(有沒有人有興趣,我們一起來開這樣的網站吧),這時說回偉大的套件管理系統,套件管理系統儘管有包含一些說明,簡單的敘述套件的功能,但是又回到a提到的,它把函式庫跟應用程式混在一起,根本無法區分哪個是應用程式哪個是函數庫,另外它的說明實在是非常簡短,同一種應用程式可能還有分別(lynx會有lynx-ssl、lynx-i18n...等),我們無法簡單的用「瀏覽器」、「檔案管理程式」....等來搜尋。
2.Linux開發工具缺乏文件
這不是我說的,的確有人說,Linux的GTK開發,像是Windows以前的MFC,一切都要從include檔當中搜尋,然後猜猜看怎麼用,而我認為,這也間接導致了Linux上應用程式欠缺的問題(和Windows相比),用Visual Studio來開發,很直覺就是去MSDN查,甚至IDE介面中就有突顯介面來提示,寫程式便利很多,Linux感覺還停留在很原始的狀態,Java已經很不夠人性化了,和Java相比,文件部份還大輸。
我完全不認為Linux的函數庫缺乏,我甚至認為要什麼有什麼,要瀏覽器元件,Linux上mozilla就可以讓你直接呼叫,這可是和IE同等強大的,要播放程式,有XINE-lib、mplayer、vlc隨你用,這每套都可以和Windows Media Player SDK相比的,而且毫不遜色,可是文件都不多(以mplayer來看),Windows Media Player SDK則是MSDN寫完整給你~
其他Linux細部這邊就不說了,如果對為啥我覺得Linux應該跟MacOS看齊,往下看ㄅ,不然可以停了。
有注意MacOS的人會知道,MacOS其實是混種,它的核心就是UNIX,系統Library是BSD,嚴格來說,MacOS其實和BSD有一定的相似度甚至淵源,MacOS在整個介面上下了很大的功夫,在協力廠商的合作上下了功夫,它從買回來一開機到使用,可以完全遮蔽掉UNIX那種操作模式(動不動指令列、動不動設定檔,要能支援OpenGL,X.org要改什麼什麼....要支援什麼,kernel要改什麼什麼),然後提供一整套完整的操作說明,從開始到所有設定的完整圖文解說,並且全部放上圖形介面,甚至設計一套使用流程,讓人們按照流程去操作,弄了這些之後,用MacOS的人其實什麼都不懂,什麼也都不需要懂,說難聽些,他們的操作完全被Apple牽著鼻子走。
儘管如此,但我覺得這才是Linux能夠發展起來的方法,現在的Linux和其他OS相比,有著太多太多的優勢,Linux有非常完善的驅動程式支援(硬體支援),有非常完善的函式庫,有非常完善的程式庫,甚至有非常完善的通訊協定,以目前來說,除了Windows之外,能有最好支援度的,大概就是Linux了,甚至如果把其他平台(其他架構的處理器、系統平台)拿來比較,甚至比Windows有更強的支援性(Windows被切割到WinCE去了)。
我覺得Linux目前細部上的問題還滿多的,像是:
1.字型系統
和古早相比,儘管已經很便利了,但是/usr/share/fonts/truetype/這樣的路徑,誰會記得阿~各系統又還會有些微不同,再區分個~/.fonts/一整個天下大亂~
如果遇到中文顯示的問題,像是字型複製進去沒反應,變亂碼、字體跟鬼一樣傾斜、方塊字、部份中文方塊字...等等,扯到fonts.conf的設定、fc-cache的執行之類的,是人大概都會發瘋吧~
如果改了又沒作用,相信我,人的熱情是有限度的~Vista、XP很快又會有信奉者出現~
2.音效系統
之前就提過了,alsa、esd、arts、oss...等,第一次看到的人,誰搞得懂之間的差異性?不要說第一次看到,隨便找個玩Linux的人,我想10個有6個不知道它們的區別,已經夠亂了不說,又出現更多第三方系統希望整合它們,整合的優點還沒看到,又出現更多音效系統是真的。
好吧~不管有沒有搞清楚區別,隨便個問題,我的音效卡是5.1聲道、6.1聲道,我是最新、最先進、最高級的7.1聲道,我在Linux上怎麼設,才可以支援5.1、6.1、7.1聲道?
問題一出,大概沒幾個人會回答吧~
再不然,問題再來「各位前輩好,偶上google查了之後,建議我MPlayer音效裝置用alsa,可是它一直說裝置busy...怎麼辦?」
甚至,像我之前遇到過的問題,「我有2張音效卡,因為網路上都說內建的音效卡是AC97的,不好,我另外買了一張創X未X的卡,可是在Linux上,都沒聲音耶,要怎麼選才能讓它使用這張卡發出聲音?」
這些問題一大票,但是在Windows上,很奇怪的,都沒問題~
3.X的顯示系統
我想看特效,那個特效好炫喔~要怎麼用?
你要安裝Nvidia、ATi的驅動程式,有官方跟OpenSource的2種,如果是舊的,要裝xxx版.....
我想裝官方版的,可是裝完進不去X-win了,一片漆黑怎麼辦?
我裝OpenSource的,裝完怎麼終端機標題列都不見了,怎麼辦?
我裝完.....一堆麻煩和問題~~~
Windows不能說沒問題,以前win98時代,經常有開不了機跳回VGA模式的情況,也有無法開機的情況,但是進入2k/xp之後,情況已經非常少見了,可是同樣問題出現在Linux上,更慘的是,它的安裝過程經常是全手動(官方版本是如此),而且出問題後,不會自己用VGA模式(VESA mode)來啟動它,就是直接黑色畫面死給你看~
4.Linux的當機
說Linux不會當機,或者非常少當機的人,統統都該去跳海,最近用Linux的經驗是,Linux也滿常當機的,最主要的問題在於,它當機之後,對於一部分的響應很弱。
比較有Windows使用經驗的人,會在當機的時候按Ctrl+Alt+Del,跳到「Windows安全性」的介面,接著可以選擇登出、關機或叫出程序管理員。
在Linux上一樣會有類似的情況,但是Ctrl+Alt+Del的選單,只有關機、登出,沒辦法叫出程序管理員,因此假如下面的選單列也掛了,我們大概只能登出、登入(Ctrl+Alt+Del或Ctrl+Alt+<-),或者跳到文字介面終端機來處理(Ctrl+Alt+1)。
另外,Linux在遇到應用程式page fault(我不確定是不是這狀態,應該是)或其他異常時,它會把應用程式關閉,這是很正常的標準程序,Windows 2k/xp也是這樣,但是在2K/XP中,它關閉之後會彈出Message Box跟你說它被關閉了,但是在Linux上不會,你可能莫名其妙的應用程式就被關了,這情況最常見的,就是發生在Firefox上,眾所皆知的,Firefox吃記憶體吃很兇,經常記憶體被吃到滿載,就很容易莫名其妙的視窗不見了(GNOME)。
再者,當Linux吃記憶體吃到極限的時候,它會不斷不斷不斷的進行緩衝(SWAP和RAM),試圖要讓程式執行下去,以我家桌機來說,RAM 1G,SWAP 512M,在執行VirtualBox跑win2k、Firefox 30分頁、WINE執行IE6、再來個Adobe Reader 7時,當IE6出現問題,異常的狂吃記憶體時(瀏覽中華郵政的webatm網頁,估計是載入那個webatm元件後出問題的),整個系統會開始發瘋,最後完全不回應,這時看到硬碟狂跑,但是完全不理我,連程序管理員都叫不動~
這在Windows上,當RAM和SWAP爆掉的時候,它就會給予提示,再不行,它會強制關閉應用程式,但是在Linux上,看起來是會不斷不斷的嘗試去handle它,甚至到自身可能不能處理的境界。
最終我想總結的是,Linux作為伺服器已經有很長的時間了,就伺服器來說,它比Windows適合非常多,像前面記憶體管理的方式,作為伺服器很適合,OS不斷的handle它,頂多就是service慢很多,但是不至於停止服務,應用程式有問題,關閉即可,頂多在syslog加上註記,但是在桌上型電腦全視窗的環境來說,和Windows相比還是不足的,粗略的來看,Windows有的,Linux都有,Windows做得到的,Linux也做得到,但是細部來說,Linux還欠缺許多東西,我認為時間可以改善它們,現在的Linux,感覺像是Windows的98時代,像是Win98的圖形系統配上2K/XP的核心。
最近自從ASUS推出eee pc之後,感覺台灣的電腦廠商開始投入Linux開發了,從104人力銀行可以發現到這樣的趨勢,我認為這是非常正面的,我一直認為,硬體廠商開發Linux相當有優勢,硬體廠商不靠軟體賺錢,開發Linux和Windows其實差不多,但如果因此減少了軟體的成本,對硬體廠商是有優勢的(當然M$這種公司,會用便宜的價格、軟體開發的支援、新技術的授權...等進行威脅利誘),而這麼做之後,從硬體上對Linux進行支援、開發,對Linux的發展是無比巨大的,也可以從根本上,提昇台灣硬體廠商在電腦上的影響力。
我用FreeBSD/Linux的時間其實很長了,算起來從高職2年級開始到現在,有10年了~
回想當時看著「黑皮書」灌FreeBSD 2.2-RELEASE的情景就覺得懷念,當時還很嫩,jdli、woju這些大人物沒一個接觸過,但他們的文件,我們這些初學者,是都會拜讀的,這些人現在都不見了,市面上、網路上看得到的,大概最耳熟能詳的,變成了鳥哥,它的網站幾乎是Linux使用者必去的地方,我個人來說,我覺得拿來查資料很方便,尤其是DNS、防火牆什麼的,忘了就google一樣,上去看看..... :p
一直以來Linux版上的人在推廣Linux時,幾個常見的論調是,Linux沒有Windows這麼多的宣傳,大家用Windows的時間都拿來用Linux的話,一定可以熟悉.....等等。
最近我以Linux當桌機日常使用之後,我深深地感覺到,Linux要和Windows相比,要佔領廣大的個人電腦市場,還需要時間,Linux的確在很多方面,和Windows差太多了~
聽起來Linux好像一無是處,不是的,是Windows在這樣的市場已經很久了,能做的幾乎都做了,沒做的,其他廠商也幫它做完了,Linux要切進來,目前看起來火候還不夠,如果說不太挑剔,用Linux當桌機,馬馬虎虎還可以~
我個人覺得,Linux如果要真正深入桌機,用什麼使用時間長短的屁話,是沒意義的,我覺得Linux like最成功深入桌機市場的,是MacOS.....
我覺得最近在使用Linux時所遇到的最大問題有幾點:
1.Linux的應用程式,缺乏介紹和整理
在Windows上,應用程式就是應用程式,大部分情況之下,要執行應用程式就是下載特定的安裝程式,執行完在程式集點選執行即可。
只有少數情況下,被要求要安裝特定函數庫,才需要安裝特定函式庫,也是以安裝程式的方式安裝。
在Linux上,我們知道有偉大的套件管理系統,負責管理整個系統的所有套件,問題就在這裡。
a.套件管理系統管理的是整個系統的套件,它並沒有區別這個套件是應用程式還是函數庫,只有簡單的被分類,我們大部分情況無法準確的知道到底現在系統裡面安裝了哪些應用程式,因為應用程式和函數庫的套件,完全被混在一起了。
Ubuntu、Fedora因此加入了新增移除程式的功能,但它又太鳥了,該有的一個都沒有,不該有的一堆,大部分教學幾乎都不用它。
b.在Linux上,嚴重缺乏應用程式的介紹、整理,沒有類似toget、軟體王這類的網站,統一介紹各種Linux的應用程式(有沒有人有興趣,我們一起來開這樣的網站吧),這時說回偉大的套件管理系統,套件管理系統儘管有包含一些說明,簡單的敘述套件的功能,但是又回到a提到的,它把函式庫跟應用程式混在一起,根本無法區分哪個是應用程式哪個是函數庫,另外它的說明實在是非常簡短,同一種應用程式可能還有分別(lynx會有lynx-ssl、lynx-i18n...等),我們無法簡單的用「瀏覽器」、「檔案管理程式」....等來搜尋。
2.Linux開發工具缺乏文件
這不是我說的,的確有人說,Linux的GTK開發,像是Windows以前的MFC,一切都要從include檔當中搜尋,然後猜猜看怎麼用,而我認為,這也間接導致了Linux上應用程式欠缺的問題(和Windows相比),用Visual Studio來開發,很直覺就是去MSDN查,甚至IDE介面中就有突顯介面來提示,寫程式便利很多,Linux感覺還停留在很原始的狀態,Java已經很不夠人性化了,和Java相比,文件部份還大輸。
我完全不認為Linux的函數庫缺乏,我甚至認為要什麼有什麼,要瀏覽器元件,Linux上mozilla就可以讓你直接呼叫,這可是和IE同等強大的,要播放程式,有XINE-lib、mplayer、vlc隨你用,這每套都可以和Windows Media Player SDK相比的,而且毫不遜色,可是文件都不多(以mplayer來看),Windows Media Player SDK則是MSDN寫完整給你~
其他Linux細部這邊就不說了,如果對為啥我覺得Linux應該跟MacOS看齊,往下看ㄅ,不然可以停了。
有注意MacOS的人會知道,MacOS其實是混種,它的核心就是UNIX,系統Library是BSD,嚴格來說,MacOS其實和BSD有一定的相似度甚至淵源,MacOS在整個介面上下了很大的功夫,在協力廠商的合作上下了功夫,它從買回來一開機到使用,可以完全遮蔽掉UNIX那種操作模式(動不動指令列、動不動設定檔,要能支援OpenGL,X.org要改什麼什麼....要支援什麼,kernel要改什麼什麼),然後提供一整套完整的操作說明,從開始到所有設定的完整圖文解說,並且全部放上圖形介面,甚至設計一套使用流程,讓人們按照流程去操作,弄了這些之後,用MacOS的人其實什麼都不懂,什麼也都不需要懂,說難聽些,他們的操作完全被Apple牽著鼻子走。
儘管如此,但我覺得這才是Linux能夠發展起來的方法,現在的Linux和其他OS相比,有著太多太多的優勢,Linux有非常完善的驅動程式支援(硬體支援),有非常完善的函式庫,有非常完善的程式庫,甚至有非常完善的通訊協定,以目前來說,除了Windows之外,能有最好支援度的,大概就是Linux了,甚至如果把其他平台(其他架構的處理器、系統平台)拿來比較,甚至比Windows有更強的支援性(Windows被切割到WinCE去了)。
我覺得Linux目前細部上的問題還滿多的,像是:
1.字型系統
和古早相比,儘管已經很便利了,但是/usr/share/fonts/truetype/這樣的路徑,誰會記得阿~各系統又還會有些微不同,再區分個~/.fonts/一整個天下大亂~
如果遇到中文顯示的問題,像是字型複製進去沒反應,變亂碼、字體跟鬼一樣傾斜、方塊字、部份中文方塊字...等等,扯到fonts.conf的設定、fc-cache的執行之類的,是人大概都會發瘋吧~
如果改了又沒作用,相信我,人的熱情是有限度的~Vista、XP很快又會有信奉者出現~
2.音效系統
之前就提過了,alsa、esd、arts、oss...等,第一次看到的人,誰搞得懂之間的差異性?不要說第一次看到,隨便找個玩Linux的人,我想10個有6個不知道它們的區別,已經夠亂了不說,又出現更多第三方系統希望整合它們,整合的優點還沒看到,又出現更多音效系統是真的。
好吧~不管有沒有搞清楚區別,隨便個問題,我的音效卡是5.1聲道、6.1聲道,我是最新、最先進、最高級的7.1聲道,我在Linux上怎麼設,才可以支援5.1、6.1、7.1聲道?
問題一出,大概沒幾個人會回答吧~
再不然,問題再來「各位前輩好,偶上google查了之後,建議我MPlayer音效裝置用alsa,可是它一直說裝置busy...怎麼辦?」
甚至,像我之前遇到過的問題,「我有2張音效卡,因為網路上都說內建的音效卡是AC97的,不好,我另外買了一張創X未X的卡,可是在Linux上,都沒聲音耶,要怎麼選才能讓它使用這張卡發出聲音?」
這些問題一大票,但是在Windows上,很奇怪的,都沒問題~
3.X的顯示系統
我想看特效,那個特效好炫喔~要怎麼用?
你要安裝Nvidia、ATi的驅動程式,有官方跟OpenSource的2種,如果是舊的,要裝xxx版.....
我想裝官方版的,可是裝完進不去X-win了,一片漆黑怎麼辦?
我裝OpenSource的,裝完怎麼終端機標題列都不見了,怎麼辦?
我裝完.....一堆麻煩和問題~~~
Windows不能說沒問題,以前win98時代,經常有開不了機跳回VGA模式的情況,也有無法開機的情況,但是進入2k/xp之後,情況已經非常少見了,可是同樣問題出現在Linux上,更慘的是,它的安裝過程經常是全手動(官方版本是如此),而且出問題後,不會自己用VGA模式(VESA mode)來啟動它,就是直接黑色畫面死給你看~
4.Linux的當機
說Linux不會當機,或者非常少當機的人,統統都該去跳海,最近用Linux的經驗是,Linux也滿常當機的,最主要的問題在於,它當機之後,對於一部分的響應很弱。
比較有Windows使用經驗的人,會在當機的時候按Ctrl+Alt+Del,跳到「Windows安全性」的介面,接著可以選擇登出、關機或叫出程序管理員。
在Linux上一樣會有類似的情況,但是Ctrl+Alt+Del的選單,只有關機、登出,沒辦法叫出程序管理員,因此假如下面的選單列也掛了,我們大概只能登出、登入(Ctrl+Alt+Del或Ctrl+Alt+<-),或者跳到文字介面終端機來處理(Ctrl+Alt+1)。
另外,Linux在遇到應用程式page fault(我不確定是不是這狀態,應該是)或其他異常時,它會把應用程式關閉,這是很正常的標準程序,Windows 2k/xp也是這樣,但是在2K/XP中,它關閉之後會彈出Message Box跟你說它被關閉了,但是在Linux上不會,你可能莫名其妙的應用程式就被關了,這情況最常見的,就是發生在Firefox上,眾所皆知的,Firefox吃記憶體吃很兇,經常記憶體被吃到滿載,就很容易莫名其妙的視窗不見了(GNOME)。
再者,當Linux吃記憶體吃到極限的時候,它會不斷不斷不斷的進行緩衝(SWAP和RAM),試圖要讓程式執行下去,以我家桌機來說,RAM 1G,SWAP 512M,在執行VirtualBox跑win2k、Firefox 30分頁、WINE執行IE6、再來個Adobe Reader 7時,當IE6出現問題,異常的狂吃記憶體時(瀏覽中華郵政的webatm網頁,估計是載入那個webatm元件後出問題的),整個系統會開始發瘋,最後完全不回應,這時看到硬碟狂跑,但是完全不理我,連程序管理員都叫不動~
這在Windows上,當RAM和SWAP爆掉的時候,它就會給予提示,再不行,它會強制關閉應用程式,但是在Linux上,看起來是會不斷不斷的嘗試去handle它,甚至到自身可能不能處理的境界。
最終我想總結的是,Linux作為伺服器已經有很長的時間了,就伺服器來說,它比Windows適合非常多,像前面記憶體管理的方式,作為伺服器很適合,OS不斷的handle它,頂多就是service慢很多,但是不至於停止服務,應用程式有問題,關閉即可,頂多在syslog加上註記,但是在桌上型電腦全視窗的環境來說,和Windows相比還是不足的,粗略的來看,Windows有的,Linux都有,Windows做得到的,Linux也做得到,但是細部來說,Linux還欠缺許多東西,我認為時間可以改善它們,現在的Linux,感覺像是Windows的98時代,像是Win98的圖形系統配上2K/XP的核心。
最近自從ASUS推出eee pc之後,感覺台灣的電腦廠商開始投入Linux開發了,從104人力銀行可以發現到這樣的趨勢,我認為這是非常正面的,我一直認為,硬體廠商開發Linux相當有優勢,硬體廠商不靠軟體賺錢,開發Linux和Windows其實差不多,但如果因此減少了軟體的成本,對硬體廠商是有優勢的(當然M$這種公司,會用便宜的價格、軟體開發的支援、新技術的授權...等進行威脅利誘),而這麼做之後,從硬體上對Linux進行支援、開發,對Linux的發展是無比巨大的,也可以從根本上,提昇台灣硬體廠商在電腦上的影響力。
2008年1月16日
wii台灣專用機 買?還是不買?
這標題看起來可能會是敗家文,但其實內容是~~~
話說wii在前年就上市了,去年年初說年中,年中說年底,都好陣子沒看到消息了~
最近傳說中的博X又出來放話,說一月底上市是傳聞,不是事實,事實是?還是不能說~
博X爛,已經搞得大家都知道了,在那個輝煌的年代裡,沒有網際網路,要打GAME、買GAME只能到電動玩具店,老闆會拿出一大本給你挑,一個遊戲150、250、350隨便喊~
博X在那個年代獨家壟斷了任天堂所有生意,然後三不五時去抓抓盜版,過得既囂張又寫意~
現在已經21世紀了,網際網路發達,資訊傳播迅速,SNG滿街跑,亂放話、不做事、沒事抓盜版的年代已經不再了,博X卻仍是那副調調,我看~等著被ko吧~
wii亞洲版也好,台灣專用版也罷~代理商去跟別人喬,喬了半天喬不出東西,整天亂放話,沒一個是真的,現在就這樣一直一直一直一直的拖著,完全不心急~~
結果搞到現在,大家都說其實博X就是台灣背後最大的水貨商,這~也很有可能阿~不然怎麼代理商自己完全不急~
不過ㄋㄟ~看到這裡想必覺得,跟標題一點關係都沒有吧~好吧~標題要出來了~
wii還沒買的夥伴們,「千萬不要買」,已經買了的當然爽,都玩了一整年了,那成本完全回收了,還沒買的就算上市了也別買,因為........
~wii的模擬器已經有了~
雖然目前仍然是alpha版,但已經是alpha 1.1(第二版)了,我個人估計,不超過2年,就非常成熟了,到時候上網抓ROM,再加上模擬器,就跟wii一模一樣了~
也許會說,wii重點在那個遊戲阿~那個搖桿阿~
那麼再仔細看下去~
wii的搖桿是藍芽介面的,現在已經有Windows、Linux、MacOSX的Driver了~
如果你對它搖桿的控制有興趣,C/C++、Java的API都有,wii已經不再遙不可及了,與其等那個鬼扯亂放話的代理商亂搞,或是等不重視亞洲市場的任天堂總公司,還是等模擬器比較實在拉~
下面稍微說說wii模擬器的可行性,沒興趣就此打住吧~
所謂模擬器,就跟VMWare、Virtual PC一樣,簡單的說,就是用軟體來寫,寫出一整個硬體的架構,如此一來,程式就不需要在硬體上跑,直接用模擬器就可以執行了~
一般來說這種作法的好處是debug容易,不用辛苦的燒成光碟、作成卡夾、複製到硬碟,或者在嵌入式系統上,可能要寫入到FlashROM,既浪費時間又浪費耗材~
模擬器理論上來說效能是會比較差的,但這是比較級的,例如說:
當我們用PC架構的電腦(假設就是Windows),電腦等級是P4-2.4G,要模擬PowerPC架構,一樣是P4-2.4G這樣等級的電腦時,速度慢很多,因為一台電腦要完全模擬等級相同的另一台電腦,完全可以看作一台電腦執行2台電腦份量的工作(一台當兩台用),會慢是可以預期的,能動就燒香拜佛了~
因此以遊戲機的模擬器來說,PC(P4-2.4G)要模擬XBOX360或是PS3.....這是天方夜譚,不是不能模擬,是就算可以,速度也會慢到你無法接受~
但是有個特例,我們現在經常可以看到超任模擬器、任天堂模擬器、GameBoy模擬器、PS模擬器...等,這些遊戲機硬體等級其實不高,以最低階的任天堂紅白機來說,是8位元,頂多50MHz的處理器架構,沒有圖形加速,這對P4-2.4來說,根本是小菜兩碟,同時跑10個都嫌太快,PS算是比較高檔一點的,但是它仍舊是16位元處理器,時脈也不高,應該有簡單的圖形處理晶片,但跟現在相比,也低階很多,因此對P4-2.4來說,也還ok.....
PS2就有點困難了,當時模擬器出來就說了,等級要求要很高,因為PS2本身硬體規格就很不錯了~
那wii呢?在去年的新聞中提到,XBOX360主打3 core PowerPC處理器+影像處理晶片,這已經很變態了,PS3裡的電腦等級更高,還搭配影片專用的解碼晶片,藍光DVD,這是目前最新進的電腦配備了,訪間的桌上型都還沒到這等級勒~
wii則不同,wii主打的是遊戲的互動性,強調在那把遙控器,遊戲主機以台幣7000元來算,任天堂自己說了,這樣的定價每台可以賺7元美金,XBOX360 12000小賠,PS3 18000還已經是賠20%在賣了,從這邊就可以知道wii的硬體其實很普通,完全是目前非常成熟的硬體技術~
當「非常成熟」又「很普通」的硬體被做成模擬器時,我們就可以預期在效能上應該不會有太大的問題,所以我前面才會說,wii別買了,等模擬器吧~現在買wii根本是浪費錢~
話說回來,博X看到了肯定又會說,這是盜版,全部都是盜版,老太婆~
這模擬器不是台灣人寫的,是美國人、歐洲人寫的,他們早就有正版wii在賣了,台灣市場小就承認吧~別人盜版沒關係,那是因為他們市場大~台灣有沒有盜版,都一樣不會被重視的~~
再說,wii的遙控器現在可是很多實驗室研究的對象哩,很多人嘗試拿來做研究,看能否用在自動控制、影像辨識、復健...等,所以Driver是用在研究性質而開發的,盜版....ㄑㄧㄝˋ
所以結論是,反正都等了一整年了,再等等吧~模擬器已經有了,就等成熟而已~~
(更正啟事:(2008-04-17)
wii os我今天搜尋了網路的討論,也下載來試用了一下,它並不是wii模擬器,他只是將wii搖桿的驅動程式和其他模擬器打包,讓大家方便安裝玩遊戲,並沒有辦法玩wii的遊戲。)
話說wii在前年就上市了,去年年初說年中,年中說年底,都好陣子沒看到消息了~
最近傳說中的博X又出來放話,說一月底上市是傳聞,不是事實,事實是?還是不能說~
博X爛,已經搞得大家都知道了,在那個輝煌的年代裡,沒有網際網路,要打GAME、買GAME只能到電動玩具店,老闆會拿出一大本給你挑,一個遊戲150、250、350隨便喊~
博X在那個年代獨家壟斷了任天堂所有生意,然後三不五時去抓抓盜版,過得既囂張又寫意~
現在已經21世紀了,網際網路發達,資訊傳播迅速,SNG滿街跑,亂放話、不做事、沒事抓盜版的年代已經不再了,博X卻仍是那副調調,我看~等著被ko吧~
wii亞洲版也好,台灣專用版也罷~代理商去跟別人喬,喬了半天喬不出東西,整天亂放話,沒一個是真的,現在就這樣一直一直一直一直的拖著,完全不心急~~
結果搞到現在,大家都說其實博X就是台灣背後最大的水貨商,這~也很有可能阿~不然怎麼代理商自己完全不急~
不過ㄋㄟ~看到這裡想必覺得,跟標題一點關係都沒有吧~好吧~標題要出來了~
wii還沒買的夥伴們,「千萬不要買」,已經買了的當然爽,都玩了一整年了,那成本完全回收了,還沒買的就算上市了也別買,因為........
~wii的模擬器已經有了~
雖然目前仍然是alpha版,但已經是alpha 1.1(第二版)了,我個人估計,不超過2年,就非常成熟了,到時候上網抓ROM,再加上模擬器,就跟wii一模一樣了~
也許會說,wii重點在那個遊戲阿~那個搖桿阿~
那麼再仔細看下去~
wii的搖桿是藍芽介面的,現在已經有Windows、Linux、MacOSX的Driver了~
如果你對它搖桿的控制有興趣,C/C++、Java的API都有,wii已經不再遙不可及了,與其等那個鬼扯亂放話的代理商亂搞,或是等不重視亞洲市場的任天堂總公司,還是等模擬器比較實在拉~
下面稍微說說wii模擬器的可行性,沒興趣就此打住吧~
所謂模擬器,就跟VMWare、Virtual PC一樣,簡單的說,就是用軟體來寫,寫出一整個硬體的架構,如此一來,程式就不需要在硬體上跑,直接用模擬器就可以執行了~
一般來說這種作法的好處是debug容易,不用辛苦的燒成光碟、作成卡夾、複製到硬碟,或者在嵌入式系統上,可能要寫入到FlashROM,既浪費時間又浪費耗材~
模擬器理論上來說效能是會比較差的,但這是比較級的,例如說:
當我們用PC架構的電腦(假設就是Windows),電腦等級是P4-2.4G,要模擬PowerPC架構,一樣是P4-2.4G這樣等級的電腦時,速度慢很多,因為一台電腦要完全模擬等級相同的另一台電腦,完全可以看作一台電腦執行2台電腦份量的工作(一台當兩台用),會慢是可以預期的,能動就燒香拜佛了~
因此以遊戲機的模擬器來說,PC(P4-2.4G)要模擬XBOX360或是PS3.....這是天方夜譚,不是不能模擬,是就算可以,速度也會慢到你無法接受~
但是有個特例,我們現在經常可以看到超任模擬器、任天堂模擬器、GameBoy模擬器、PS模擬器...等,這些遊戲機硬體等級其實不高,以最低階的任天堂紅白機來說,是8位元,頂多50MHz的處理器架構,沒有圖形加速,這對P4-2.4來說,根本是小菜兩碟,同時跑10個都嫌太快,PS算是比較高檔一點的,但是它仍舊是16位元處理器,時脈也不高,應該有簡單的圖形處理晶片,但跟現在相比,也低階很多,因此對P4-2.4來說,也還ok.....
PS2就有點困難了,當時模擬器出來就說了,等級要求要很高,因為PS2本身硬體規格就很不錯了~
那wii呢?在去年的新聞中提到,XBOX360主打3 core PowerPC處理器+影像處理晶片,這已經很變態了,PS3裡的電腦等級更高,還搭配影片專用的解碼晶片,藍光DVD,這是目前最新進的電腦配備了,訪間的桌上型都還沒到這等級勒~
wii則不同,wii主打的是遊戲的互動性,強調在那把遙控器,遊戲主機以台幣7000元來算,任天堂自己說了,這樣的定價每台可以賺7元美金,XBOX360 12000小賠,PS3 18000還已經是賠20%在賣了,從這邊就可以知道wii的硬體其實很普通,完全是目前非常成熟的硬體技術~
當「非常成熟」又「很普通」的硬體被做成模擬器時,我們就可以預期在效能上應該不會有太大的問題,所以我前面才會說,wii別買了,等模擬器吧~現在買wii根本是浪費錢~
話說回來,博X看到了肯定又會說,這是盜版,全部都是盜版,老太婆~
這模擬器不是台灣人寫的,是美國人、歐洲人寫的,他們早就有正版wii在賣了,台灣市場小就承認吧~別人盜版沒關係,那是因為他們市場大~台灣有沒有盜版,都一樣不會被重視的~~
再說,wii的遙控器現在可是很多實驗室研究的對象哩,很多人嘗試拿來做研究,看能否用在自動控制、影像辨識、復健...等,所以Driver是用在研究性質而開發的,盜版....ㄑㄧㄝˋ
所以結論是,反正都等了一整年了,再等等吧~模擬器已經有了,就等成熟而已~~
(更正啟事:(2008-04-17)
wii os我今天搜尋了網路的討論,也下載來試用了一下,它並不是wii模擬器,他只是將wii搖桿的驅動程式和其他模擬器打包,讓大家方便安裝玩遊戲,並沒有辦法玩wii的遊戲。)
2008年1月15日
又斷一個國家了~
很久沒po政治文了~
民進黨阿~請用力反省吧~~
立委選舉一出來,民進黨大敗,雖然是馬後炮,可是大家想想,選前國民黨的有爭什麼嗎?只有在黨內初選時爭副總統提名時有出現吧~
但是看看民進黨,一直一直都被報導謝、陳意見相左,不然又是謝助選不利,這些負面消息直接上新聞,又是不斷不斷不斷的出現,我想沒有人會喜歡看到這些吧~
現在又來個斷交新聞,看看他上台後,斷了幾個,新聞也上了,9個耶~
我們的外交處境不好又不是一天兩天,對面的打壓也不是一次兩次,斷交怪對面的,可是看看,每年都出訪,沒事就出訪,每次出訪都沒什麼計畫,每次出訪都是國內有反對聲浪,每次出訪都在國外放話,回來後,就爆出國際新聞,說當地政府、總統貪污了多少錢,吃了多少金援。
以前的政府,出訪很重要,幾乎是事情談妥了,才大大方方出訪,不然就是想盡辦法爭取曝光、爭取支持,現在不是,現在出訪是去渡假、去避難,看看之前邦交國的總統拼酒博感情,看~那是什麼阿,那哪是拼外交,那根本就像是業務員和大老闆談生意的樣子,還唱雙人枕頭勒,這是拼外交嗎?這怎麼看都像是被人奉承~
那他勒?他幹了什麼?就很像是渡假阿~到處晃晃,沒事就發表下意見,抒發下機歪的感情,這樣的事情,國內看不下去,記者看不下去,邦交國會喜歡嗎?
回到前面說的,外交處境艱難不是一天兩天,每次斷交就說對面的打壓,這種事情又不是一天兩天的事,但是之前又沒事,甚至還慢慢一點一點增加,國歌中一句「守成不易,莫圖勿進功」(字可能有打錯,就見諒吧。),感覺十分貼切~
想想幾年前,外交部長嘲笑新是LP,一般人感覺不大,只覺得這樣說很不好,但是大家知道嗎~新加坡在亞洲,可是少數幾個有錢的國家之一,正常人會跑去對著王永X、對著郭XX、對著比爾兄指著鼻子罵他是LP嗎?
罵LP時很囂張,斷交就說是打壓~
今天新聞也提到,馬拉威會跟對面的建交,除了錢之外,就是礦產,馬拉威有豐富的鈾礦,這就好笑了,它之前是我們的邦交國,他有鈾礦我們不知道嗎?對面的能協助開採,我們不行嗎?金錢援助又不是萬能的,以前台灣在非洲能打下邦交國,金錢援助不是唯一的方法,最主要的方式是農耕團、建設...等,一點一滴,從基礎慢慢的打最後打下來的,靠金錢就想要吃定對方,這方法一開始就有很大的問題,我不能說金錢效用不好,我也知道錢很重要,但人人都知道,直接把錢往桌上放,然後要跟對方交往是很俗氣而且丟臉的,同樣的錢拿去高級餐廳請吃飯,拿去遊樂園、觀光...等,或是每天持續的送花、接送~這些都是常見的方式,都需要錢,但是不是純粹把錢拿來砸、拿來丟的~
今天搞成這樣,還得要怪對面、怪制度,還是想想自己做了什麼吧~
說到制度,昨天上ptt看才有人說,現在民進黨怪制度對國民黨有利,但是這制度一開始,是民進黨提出來的,而且提出是因為2004年總統選完之後,立法院民進黨是多數席又有總統,想用這樣的政策,一口氣把國民黨趕出國會,一黨獨大想出來的,這制度一開始就說了,贏者全拿,現在反過來制度,根本沒有反省的感覺,只看到一個小屁孩輸了就不爽抱怨的嘴臉。
看看綠營這兩天發言,鄭運鵬說了,不分區的立委,都是藏污納垢,別人打天下他們乘涼,結果被點名的說什麼?謝謝指教、兩者沒關係...這叫反省嗎?已經這麼慘這麼爛了,不為整個黨想想,只關心到自己不要棄權,根本就還是不想放棄權力,被權力沖昏頭了~
民進黨阿~請用力反省吧~~
立委選舉一出來,民進黨大敗,雖然是馬後炮,可是大家想想,選前國民黨的有爭什麼嗎?只有在黨內初選時爭副總統提名時有出現吧~
但是看看民進黨,一直一直都被報導謝、陳意見相左,不然又是謝助選不利,這些負面消息直接上新聞,又是不斷不斷不斷的出現,我想沒有人會喜歡看到這些吧~
現在又來個斷交新聞,看看他上台後,斷了幾個,新聞也上了,9個耶~
我們的外交處境不好又不是一天兩天,對面的打壓也不是一次兩次,斷交怪對面的,可是看看,每年都出訪,沒事就出訪,每次出訪都沒什麼計畫,每次出訪都是國內有反對聲浪,每次出訪都在國外放話,回來後,就爆出國際新聞,說當地政府、總統貪污了多少錢,吃了多少金援。
以前的政府,出訪很重要,幾乎是事情談妥了,才大大方方出訪,不然就是想盡辦法爭取曝光、爭取支持,現在不是,現在出訪是去渡假、去避難,看看之前邦交國的總統拼酒博感情,看~那是什麼阿,那哪是拼外交,那根本就像是業務員和大老闆談生意的樣子,還唱雙人枕頭勒,這是拼外交嗎?這怎麼看都像是被人奉承~
那他勒?他幹了什麼?就很像是渡假阿~到處晃晃,沒事就發表下意見,抒發下機歪的感情,這樣的事情,國內看不下去,記者看不下去,邦交國會喜歡嗎?
回到前面說的,外交處境艱難不是一天兩天,每次斷交就說對面的打壓,這種事情又不是一天兩天的事,但是之前又沒事,甚至還慢慢一點一點增加,國歌中一句「守成不易,莫圖勿進功」(字可能有打錯,就見諒吧。),感覺十分貼切~
想想幾年前,外交部長嘲笑新是LP,一般人感覺不大,只覺得這樣說很不好,但是大家知道嗎~新加坡在亞洲,可是少數幾個有錢的國家之一,正常人會跑去對著王永X、對著郭XX、對著比爾兄指著鼻子罵他是LP嗎?
罵LP時很囂張,斷交就說是打壓~
今天新聞也提到,馬拉威會跟對面的建交,除了錢之外,就是礦產,馬拉威有豐富的鈾礦,這就好笑了,它之前是我們的邦交國,他有鈾礦我們不知道嗎?對面的能協助開採,我們不行嗎?金錢援助又不是萬能的,以前台灣在非洲能打下邦交國,金錢援助不是唯一的方法,最主要的方式是農耕團、建設...等,一點一滴,從基礎慢慢的打最後打下來的,靠金錢就想要吃定對方,這方法一開始就有很大的問題,我不能說金錢效用不好,我也知道錢很重要,但人人都知道,直接把錢往桌上放,然後要跟對方交往是很俗氣而且丟臉的,同樣的錢拿去高級餐廳請吃飯,拿去遊樂園、觀光...等,或是每天持續的送花、接送~這些都是常見的方式,都需要錢,但是不是純粹把錢拿來砸、拿來丟的~
今天搞成這樣,還得要怪對面、怪制度,還是想想自己做了什麼吧~
說到制度,昨天上ptt看才有人說,現在民進黨怪制度對國民黨有利,但是這制度一開始,是民進黨提出來的,而且提出是因為2004年總統選完之後,立法院民進黨是多數席又有總統,想用這樣的政策,一口氣把國民黨趕出國會,一黨獨大想出來的,這制度一開始就說了,贏者全拿,現在反過來制度,根本沒有反省的感覺,只看到一個小屁孩輸了就不爽抱怨的嘴臉。
看看綠營這兩天發言,鄭運鵬說了,不分區的立委,都是藏污納垢,別人打天下他們乘涼,結果被點名的說什麼?謝謝指教、兩者沒關係...這叫反省嗎?已經這麼慘這麼爛了,不為整個黨想想,只關心到自己不要棄權,根本就還是不想放棄權力,被權力沖昏頭了~
訂閱:
文章 (Atom)
