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的檔案。

比較特別的如下:
在執行時有個參數可以使用
./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

不過有點要注意,文中有人提到,現在因為寒天太紅了,到處都加寒天,雖然寒天本身沒熱量,但是往往加的東西熱量很高,像是「糖」,所以在吃、喝寒天食品時,要注意它的「額外配件」,否則越吃越胖還說寒天沒效果,我相信這是大有人在的。

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的字串取代很麻煩之外,其他部份就只是簡單的system(command);所以,很容易自由發揮... :p

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

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程式的合影。

VirtualBox和VMWare效能比較

雖然一直以來我都滿喜歡VMWare的,但是最近VirtualBox用得比較多,雖然VirtualBox感覺沒有VMWare便利,但是兩者的感覺已經比較接近了。
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當中:

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的偉大了~

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的發展是無比巨大的,也可以從根本上,提昇台灣硬體廠商在電腦上的影響力。

鴨子新紀錄(79,163,569)

這次是玩到死的,因此就沒有遺照了,真是不好意思~
沒圖沒真相,下面是結束後的圖片~

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的遊戲。)

2008年1月15日

又斷一個國家了~

很久沒po政治文了~

民進黨阿~請用力反省吧~~
立委選舉一出來,民進黨大敗,雖然是馬後炮,可是大家想想,選前國民黨的有爭什麼嗎?只有在黨內初選時爭副總統提名時有出現吧~
但是看看民進黨,一直一直都被報導謝、陳意見相左,不然又是謝助選不利,這些負面消息直接上新聞,又是不斷不斷不斷的出現,我想沒有人會喜歡看到這些吧~

現在又來個斷交新聞,看看他上台後,斷了幾個,新聞也上了,9個耶~
我們的外交處境不好又不是一天兩天,對面的打壓也不是一次兩次,斷交怪對面的,可是看看,每年都出訪,沒事就出訪,每次出訪都沒什麼計畫,每次出訪都是國內有反對聲浪,每次出訪都在國外放話,回來後,就爆出國際新聞,說當地政府、總統貪污了多少錢,吃了多少金援。

以前的政府,出訪很重要,幾乎是事情談妥了,才大大方方出訪,不然就是想盡辦法爭取曝光、爭取支持,現在不是,現在出訪是去渡假、去避難,看看之前邦交國的總統拼酒博感情,看~那是什麼阿,那哪是拼外交,那根本就像是業務員和大老闆談生意的樣子,還唱雙人枕頭勒,這是拼外交嗎?這怎麼看都像是被人奉承~
那他勒?他幹了什麼?就很像是渡假阿~到處晃晃,沒事就發表下意見,抒發下機歪的感情,這樣的事情,國內看不下去,記者看不下去,邦交國會喜歡嗎?
回到前面說的,外交處境艱難不是一天兩天,每次斷交就說對面的打壓,這種事情又不是一天兩天的事,但是之前又沒事,甚至還慢慢一點一點增加,國歌中一句「守成不易,莫圖勿進功」(字可能有打錯,就見諒吧。),感覺十分貼切~
想想幾年前,外交部長嘲笑新是LP,一般人感覺不大,只覺得這樣說很不好,但是大家知道嗎~新加坡在亞洲,可是少數幾個有錢的國家之一,正常人會跑去對著王永X、對著郭XX、對著比爾兄指著鼻子罵他是LP嗎?
罵LP時很囂張,斷交就說是打壓~
今天新聞也提到,馬拉威會跟對面的建交,除了錢之外,就是礦產,馬拉威有豐富的鈾礦,這就好笑了,它之前是我們的邦交國,他有鈾礦我們不知道嗎?對面的能協助開採,我們不行嗎?金錢援助又不是萬能的,以前台灣在非洲能打下邦交國,金錢援助不是唯一的方法,最主要的方式是農耕團、建設...等,一點一滴,從基礎慢慢的打最後打下來的,靠金錢就想要吃定對方,這方法一開始就有很大的問題,我不能說金錢效用不好,我也知道錢很重要,但人人都知道,直接把錢往桌上放,然後要跟對方交往是很俗氣而且丟臉的,同樣的錢拿去高級餐廳請吃飯,拿去遊樂園、觀光...等,或是每天持續的送花、接送~這些都是常見的方式,都需要錢,但是不是純粹把錢拿來砸、拿來丟的~
今天搞成這樣,還得要怪對面、怪制度,還是想想自己做了什麼吧~
說到制度,昨天上ptt看才有人說,現在民進黨怪制度對國民黨有利,但是這制度一開始,是民進黨提出來的,而且提出是因為2004年總統選完之後,立法院民進黨是多數席又有總統,想用這樣的政策,一口氣把國民黨趕出國會,一黨獨大想出來的,這制度一開始就說了,贏者全拿,現在反過來制度,根本沒有反省的感覺,只看到一個小屁孩輸了就不爽抱怨的嘴臉。
看看綠營這兩天發言,鄭運鵬說了,不分區的立委,都是藏污納垢,別人打天下他們乘涼,結果被點名的說什麼?謝謝指教、兩者沒關係...這叫反省嗎?已經這麼慘這麼爛了,不為整個黨想想,只關心到自己不要棄權,根本就還是不想放棄權力,被權力沖昏頭了~

2008年1月11日

Open Source 與 賺錢

我一向是一個支持Open Source的人,不過對於GNU GPL我卻不甚喜歡,
我個人的認知是,開放原始碼,在原始的授權條件下,應該要有一定合理的緩衝條件,
例如常見的作法是,我們利用Open Source來開發,
但我們將最新的程式碼限定在3個月或半年後開放,
這顯然和GNU GPL的條件不合,可是這應該是合理的作法,
否則Open Source沒有公司願意使用~

事實上,GNU GPL第二版有漏洞,目前全世界已經有許多公司利用漏洞進行開發並以此獲利,
自由軟體基金會也積極的在制定GNU GPL第三版,
GNU GPL第三版規定,只要使用到GNU GPL第三版的程式、演算法,都必須散佈,
但現在的狀況是,GNU GPL的最主要使用系統~Linux,它的作者Linus並不願意使用,
他持的論點也相當不錯,他認為強迫要求硬體廠商在提供了Linux Driver時,
一定要提供Source Code,並不是很合理的作法,因為硬體廠商的硬體設備,
有許多是有專利或機密的,Driver可能會需要碰觸到它的部份或全部,
因此並不適合用在GNU GPL第三版,也因為如此,
自由軟體基金會的人和Linus有很大的論戰,因此到目前為止,
GNU GPL第三版都還只是草稿階段~

身為一個正常的人,為了吃飯、過更好的生活,要求一定報酬的程式設計是合理的,
我一直認為自由軟體基金會的人都是神父,所以我之前就說過了,
我認為中樂透、中大獎,與其捐錢給什麼人道團體、宗教團體,
不如捐給自由軟體基金會、FreeBSD、Linux...等社群,
以自由軟體基金會來說,它們要求所有程式都無私的散佈、提供程式碼,
他們唯一的要求是,希望你改了程式之後,能夠散佈給更多的人使用,
讓程式越來越好用,越來越好~
會說出這樣話、這樣行動的人,除了是神父、和尚之外,
我實在想不出有什麼人有這樣的行為~~

那現在國外的公司,到底怎麼靠自由軟體來賺錢呢?
目前我看到的作法有4種:
1.它不靠軟體賺錢,靠服務賺錢,軟體只是它提供服務的媒介
這方法是自由軟體基金會等人建議的作法,但RedHat他們證實了,
這種方式提供服務,公司會倒的..... = =||
所以目前RedHat有商業版,提供給企業,一般版本改成Fedora,成立一獨立社群來開發、管理。

2.靠專利保護
我剛剛重新讀過GNU GPL第二版條款(我看中譯版的),它的確有針對這部份說明過,它提到如果你的程式以GNU GPL第二版發佈,但是在某些地區和專利相衝突時,可以選擇性的發佈在沒有衝突的地方,而要同時不侵犯專利又遵守GNU GPL第二版,方法就是不發佈程式和程式碼。
這是GNU GPL第二版清楚寫明的,因此有公司利用這一點,它們把技術申請專利,然後用Open Source來開發,在不違背的情況之下,他們以此來販賣,甚至他們一樣提供你Source Code,但是你不能修改、散佈,因為你修改、散佈之後,就侵犯專利了。

3.靠硬體保護
這也是最近常見的作法,而且剛剛想了下,ASUS的eee pc,應該會靠這方式來開發。
GNU GPL規定程式和程式碼都需要發佈,因此像FON、TIVO,它們的作法是,它賣的是整台機器,不論機器是Wireless AP或是機上盒,然後它限制不准拆卸、破解機器,否則不給予保固,但是同時,它又在網站中公開說它使用的是Linux,並提供Linux Source Code下載,擺明就是遵守GNU GPL第二版規範,但是你就是不能動它。

4.進行自由軟體的代工
自由軟體要開發,但不是所有人都會,尤其是公司,要研發商品,可是沒有能力開發自由軟體或者沒有能力開發kernel,因此聽說國外也有小型公司,專門進行kernel porting的工作,他們的唯一工作就是修改自由軟體,但因為他們受雇廠商,本身並不會發佈自由軟體的程式、程式碼,因此嚴格來說只算是自用,並不會侵犯GNU GPL第二版的授權,因為GNU GPL第二版中寫明了例外條件,就是只自己使用時,軟體、程式碼可以不散佈。

這4種方式,是目前常看到的自由軟體賺錢術,儘管大部分大型企業使用GNU GPL的自由軟體,但通常不會跟你說它用的就是GNU GPL的自由軟體,因此多少還是存在風險,最可惡的就是所謂的禿鷹集團,可以參考連結。

這類集團在大陸也很多,之前就聽聞有這類集團專門找上新產品的開發公司,只要發現產品是Linux base的,就要求你Open Source,當公司發佈Source Code之後,隔不到一個月,相同產品大量出現,接著就是紅海策略,大家比價格,誰低誰贏,第一個死的絕對不會是其他相同產品,而是開發公司,我一直不知道這類集團的稱呼,原來一般叫做禿鷹集團阿~
這些人很惡劣,不事生產只破壞,破解它沒能力,就跟乞丐、無賴一樣伸手要,非常機歪~

最後附帶一點,自由軟體的授權種類很多,其中有上述發佈要求的,僅僅只有GNU GPL。
FreeBSD所使用的BSD授權,是完全沒有任何限制的,它允許販賣,而且並不要求提供Source Code,它唯一的要求是,在原Source Code上附加修改者和說明,可是因為不強制要求發佈Source Code,再公司裡面這麼做,基本上沒啥意義,所以BSD被號稱是最自由的自由軟體。
另外像Mozilla的MPL,它們的授權是可以要求部份發佈,部份保留,也就是說一整個軟體中,可以把自由軟體的部份進行發佈,其餘部份不發佈。

而GNU的授權中,除了前面提到的自用之外,還有2種例外狀況:
1.除了GNU GPL之外,有另一種格式的授權,叫做GNU Library GPL,這種授權適用在library的發佈,它的許可條件是,當你使用GNU Library GPL的library時,有2種狀況:
a.當你使用static link時,你的程式、程式碼授權同GNU GPL。
b.但當你使用dynamic link時,附上GNU Library GPL的library和Source Code即可,軟體本身可以不用發佈。
寫程式的時候注意看,許多library的發佈方式,是使用GNU Library GPL的,但也有些library的發佈方式是GNU GPL的,兩者有區別。

2.當使用GNU GPL的軟體(software)進行使用時,使用GNU GPL軟體(Software)產生的其他作品,授權可以自訂,不受GNU GPL的規範。
這意思是說,當你使用Gimp(一套OpenSource的繪圖程式)畫出一張圖片,這張圖片的授權一樣受到著作權保護,你一樣可以自己訂定這張圖片的授權限制。
同樣的道理,當你使用GNU C/C++ Compiler時,只要Library無關GNU GPL,它所產生的程式、程式碼,授權一樣是由你自己決定的,因此,我們可以使用GNU C/C++ Compiler搭配跟公司買來的Library進行開發,之後使用自己的授權來販賣,這也是符合GNU GPL授權的。

2008年1月5日

Java主程式結構(main)的個人理解

學習程式語言最重要的起點,就是知道它的main長甚麼樣子~
尤其是C、Java這類的語言,相信第一堂課在介紹完他的特色和歷史之後,就應該是跟你說他的main長甚麼樣子~

之所以會有這篇,是在昨天晚上,有個學弟跟我說,他對Java的main有疑問,我就想,你真是問對人了,Java的main我也是想了很久,後來想出了這樣的理解~

我通常Java的main都會寫成下面這樣子,也認為這應該是要背起來的......
public class TEST {
public static void main(String args[]) {
TEST test = new TEST();
}
public TEST() {
xxxxxxx
}
}


上面這段code對於會Java的人一定不陌生,畢竟經常看,但是為何是這樣寫呢?

我的理解是:
Java是一個物件導向的語言,而且他強調的是『Java是完全物件導向』的程式語言,和當時『號稱』物件導向的程式語言不同(這其實指的是VB)~
因此Java裡面從一開始就會是物件,而物件(Object)有兩種型態,分別是:
『實體化前』稱為Class(類別)
『實體化後』稱為Object(物件)

而『實體化』,指的就是經過new之後的Class(類別)~
如果從電腦程式的角度來說,new就是電腦真正的去執行它,更專業的說法是,把它載入到記憶體中執行~
以上面這段code中的
TEST test = new TEST();

TEST是Class
test = new TEST() 因此test是Object

物件導向的概念是,所有東西都是物件,以車子來說,門是物件、引擎是物件、方向盤也是物件。
而Class(類別)可以想作是『藍圖、設計圖』,他還沒有做出來,只是一個設計,而經過了new之後的Object(物件),就是真正的實體,以上面來說,就是真實的車子~

以上這段內容,所有Java書的物件導向解說都有.... = =||

因此,Java程式的主體,就是一個『大物件』,裡面再包含了許多小物件,以上面程式來說,Java的程式主體,就是定義出了TEST這個類別(Class)(因為沒有實體化,所以稱它為Class),在程式執行時,Java執行器(好白痴的說法,就是runtime,更直覺的說法是,java.exe執行時),Java會去找main的區塊,然後跳進去操作~

在TEST的程式中,他操作了甚麼?
他把自己實體化了~~~~~ @@
就是這樣~

也就是說,以物件導向來看Java的主程式,
public class TEST { xxxxxxxx }
這是定義了一個TEST的Class

當程式執行之後,java.exe找到main區段並跳進去之後,他執行了
TEST test = new TEST();

他將自己進行了實體化,真正的開始了執行TEST的動作,
那TEST的動作在那裡呢?我們要寫的程式段寫在哪裡?

回到物件導向和Java的說明,在Java中有所謂的『建構子』,
這鬼名詞按字面想,想到翻掉我也不知道是甚麼,但是如果我解釋他的作用,就知道它是甚麼了~
前面我們說到了車子的物件,當我們車子『實體化』之後,也就是製造出來之後,我們通常需要做些處理,例如:根據車行上漆、發動引擎測試、加油、加水、踩煞車(!?).....等,這些東西我們可以給他的很容易理解的說法,就叫作『初始化』~
當我們將Class(類別)實體化成Object後,經常需要『初始化』一些東西,
這些東西其實就是我們要電腦執行的程式~
而建構子在Java的語法就是:
public TEST() {
xxxxxxxxxxxxxxxx
}


這裡TEST就是物件的名稱,我在初學時最常遇到的問題是,建構子和方法(method)不會分,兩者如下:
建構子:
public TEST() {
xxxxxx
}


方法(method):
public void TEST() {
xxxxx
}


看到差異了嗎?
主要差別在於回傳值,方法(method)需要設定回傳值,如果沒有,要設定『void』,而建構子則沒有回傳值這種東西~

前面我們說到java.exe在執行並找到main區塊之後,會把自己(TEST)實體化,
因此我們所有的程式段,通通都寫在自己(TEST)的『建構子』,
這樣一來,程式一樣是物件導向的,但是我們又可以像寫C一樣的寫它~

也許會有人說,也經常看到另一種寫法,又或者說我不是用這樣的寫法一樣可以阿~
另一個常見的寫法如下:
public class TEST {
public static void main(String args[]) {
JFrame jf = new JFrame();
jf.setTitle("標題");
}
}


這種寫法也很多人用,很多書這樣寫,它的解釋方式更單純,
java.exe跳進main區段後,就開始操作區段內的物件~

但是這種寫法經常遇到的問題是,因為他需要寫的是物件的操作,
而『建構子』寫的則是物件的方法(method),
以下面這段code來說,
public class TEST extends JFrame {
public static void main(String args[]) {
TEST test = new TEST();
}
public TEST() {
setTitle("標題");
}
}


在我常用的程式段中,因為程式是寫在建構子裡面,因此當TEST繼承了JFrame之後,我可以在建構子中直接使用JFrame的方法(method),而且不再需要new之類的動作,因為他已經是在執行了,而不是在物件描述,而且使用這種方式,我可以很明確的就知道我現在操作的就是自己(TEST)這個JFrame,而不會在extends繼承了,卻不知道要怎麼在main當中指定的問題(這裡應該用的是this)~

大致是這樣,從初學到現在,雖然Java還是很嫩,但是多少有些體悟,Java main的理解,算是我的重要體悟之一。

2008年1月4日

一杯咖啡的傷害&接水俄羅斯(Wetrix)

話說....很久沒喝左岸咖啡了,之前覺得那很好喝~
昨天心血來潮,想說買杯「奶茶」來喝,結果拿成咖啡~
喝下肚的結果..........就是現在6:33分.......還沒辦法睡...... = =||
剛剛躺床上躺了好久....精神好到爆炸...... = =||
起床後就繼續努力玩接水俄羅斯(Wetrix)了..... = =||

話說之前在ptt上看到有人在問這個遊戲,然後我也跟著去下載了,也跟著玩了~
剛開始一直玩不高分,我同學一玩玩到400萬分,我怎樣都無法突破.......
因此好勝心出現,就一直玩它~大概也玩了有一個月了......
結果勒~結果就是我一直挑戰我的極限~

目前的成果是,我已經能夠在左上和右上方各養4隻鴨子,總共7隻鴨子,然後再在下方再加一隻鴨子,共8隻~
然後玩到Level 10,分數51,944,171......看到這分數,我覺得我瘋了~~ = =||
下面這張就是截圖


之所以這麼確切的知道分數,那是因為抓圖程式抓完圖片之後,遊戲就暫停,然後我當時要放火在中間,就這麼滑鼠一點,「Quit Game」就按下去了~
所以這分數就是結束遊戲前的分數,一分都不差~~ = =||

好了,今天下午還要去看眼科,多少要休息一下...... :(

2008年1月1日

GNOME Nautilus 與 WINE

剛過新年沒多久,我就上來po文拉~
這篇將會同步po在Ubuntu論壇(和、或摩托學園)~~

前幾篇po過,最近嘗試用Ubuntu來生活,雖然還沒辦法完全離開Windows,工作時(看Paper...等)都還是要重開機回去,但已經很能適應了。

這次要說的,是Nautilus和WINE~

WINE透過google和其他blog高人的心得設定之後,中文已經支援的不錯了,軟體的支援幾乎不用改設定就可以支援了(一小部分軟體),算是不錯~

可惜的是,在Windows當中,一些軟體經常可以和檔案總管的右鍵結合,一般稱之為『shell extension』或『shellext』,在GNOME當中,類似的功能就要看Nautilus了。

GNOME當中,Nautilus身分就類似檔案總管,也的確有提供一些shell extension,但是和Windows相比,還是很弱阿~(我想要右鍵直接預覽圖片的功能,有嗎... :~~~ )

儘管如此,有個不錯的程式不錯,在套件庫就有了,套件名稱叫作『Nautilus-Actions』,它可以讓我們自訂右鍵的功能選單,能夠自訂要執行的程式指令和參數,還能自行指定圖示,相當的方便。

Nautilus-Actions介紹完了,讓我們說說WINE吧~

WINE是Linux上的Windows模擬器,可以執行一些些程式,像是ConvertZ、PDF-X Change PDF Viewer...等等。
以ConvertZ來說,我在Windows上的用法,多半是指個檔案,然後右鍵選ConvertZ,然後就能很方便的轉換到繁體(正體),儘管Linux能夠用WINE執行,但感覺少了甚麼.....就是右鍵執行的能力。

至於PDF-X Change PDF Viewer,這是套很不錯的PDF Viewer,它是免費的,而且可以直接下註解,在Windows上,我已經完全取代Adobe Reader了,雖然它能用WINE執行,但開啟檔案的視窗目前會當掉(我猜八九不離十是那個PDF預覽惹的禍),因此如果我們直接下指令,它是可以正常執行的,可是每次都下指令,還要查看轉換、檔案路徑(/home/xxx = z:\home\xxx),這不是很麻煩嗎。

有沒有辦法跟Nautilus-Actions進行結合呢?
我的解決方法是,寫個shell script幫我把檔案、目錄的路徑轉成z:\xxx\xxxx的格式,在送給WINE執行,因此就用我差勁的shell script能力寫了下面這樣的程式:
/usr/local/bin/wine_bridge
#!/bin/bash
rm /tmp/runcmd
echo -n "/usr/bin/wine '$1' '" > /tmp/runcmd
echo -n $2 | sed -e 's/\//\\/g' | sed -e 's/^/z:/g' >> /tmp/runcmd
echo -n "'" >> /tmp/runcmd
chmod 700 /tmp/runcmd
/tmp/runcmd


過程很簡單,把 wine ConvertZ.exe "/home/xxx/ooo.pdf" 轉成 wine ConvertZ.exe "z:\home\xxx\ooo.pdf" 並寫入到 /tmp/runcmd,之後就執行它~

使用方法是,加入新的Nautilus動作
系統->偏好設定->動作組態

新增->標籤自訂、圖示自訂、工具提示自訂
->動作 路徑->/usr/local/bin/wine_bridge(檔名路徑同前)
->動作 參數->"/home/xxx/.wine/drive_c/Program Files/ConvertZ/ConvertZ.exe" %M(前面填上WINE要執行程式的完整路徑檔名,後面的%M則就是目前指到的檔案(目錄)的完整路徑)

相信看到的人,可以幫我改良它,畢竟只花了點時間,而且我bash不熟,功能有到我就滿足了~

加入之後,我的ConvertZ、PDF-X Change PDF Viewer現在都能夠直接用Nautilus右鍵來呼叫執行了,非常方便~

最後,這程式看起來就很破,而且能改進的地方也很多,像是多個檔案的能力拉.....等等,歡迎修改它然後跟我說,讓我也能用..... :p

2007年12月27日

DAC、OP、擴音機、擴大機...等無底洞.......

今天中午,朋友問我DAC、OP熟不熟,我就說.....8051的DAC知道一點,音響的不大熟......

之後上網找,找到下面這篇:
http://chat.ericoffice.idv.tw/modules/news/article.php?storyid=83

作者雖然一直說他本行不是電子,不敢評論什麼,但是.....大哥您多慮了,您寫的很不錯..... :p

我雖然研究所前都是電子科系,可是電子學一向都是60飛過的,電路也很爛,
跟我一樣的人,多的勒~ :p

這篇文章標題叫「DAC--->(1) 結構簡介」,內容一開始就說得很明白,
DAC就3個部份:
1.數位輸入
2.解碼
3.類比輸出

還記得之前打過另一篇,說到我對DAC、耳擴不屑一顧,而且覺得浪費,
還不如花大錢買更好的音效卡之類的,這篇說了很多,也有異取同工之效,
他就說到,解碼部份大都是IC,IC根本不能動,
數位輸出通常都是IC的電路,幾乎都是公版,能動的也很有限,
頂多就是換換元件,而這.....能帶來多大的效用?能因此改變音質?這是否定的~
而且作者也說了,一個搞不好,電路就不會動了,我附加.....IC甚至可能燒掉~~

既然1,2都不能改,能改的也就3(類比輸出)了,
而類比輸出,能動的也就改改電容增加濾波效果,真正影響的不在這裡,
因為解碼晶片不好,解出來的類比資料不好,後面更不用說了~
所以DIY真正的效果,僅僅就是加強原本的硬體,多做濾波、多做緩衝,
但效用有多大?你能做,製產品的設備廠商為何不做?
因此說到底,與其DIY改半天,不如花大錢買好的設備還比較值得,
那至於這個大錢有多大?就看個人對大錢的定義了..... :p

最後補充一點,那篇的作者最後有提到,與其搞半天DAC,不如換好點的喇叭,
這點我非常認同,雖然喇叭很貴,但是他造成的差異性應該是最大的,
至於喇叭的選擇,我個人仍舊停留在5年前的認知~「越重越好」~
這和Power選擇差不多,畢竟都是繞線圈繞出來的,理論上越重表示越好,
想想看,做電磁鐵磁性要大,是線圈多繞點,還是少繞點?
Power現在的選擇有些不同,無法完全用重量判斷,原因有2:
1.現在Power幾乎都是Switch Power,Switch Power主要是靠RC震盪出來的,
因此線圈大概只剩下電感... = =||
因此不容易用線圈數量來判斷好壞,要真的去測測看它的效率、功率,
測法,當然得拆開用「專業儀器」量,通常辦不到,因此現在的判斷方式,
就是看Power上面的徽章了,徽章越多,價格越高,通常也越好~

2.Power會重,現在都是重在散熱片,散熱片越大會越好嗎?
我寧可是12cm的風扇或雙風扇,效果應該都比很大、很重的散熱片好.... = =||

所以現在Power已經不好用重量來判斷了,不過喇叭,就電磁鐵+磁鐵,
我還是很相信重量說法低~ :D

Linux Filesystem的選擇

早期Linux多半使用ext2來做filesystem,在數年前,大家就已經捨棄ext2了,
話說我一開始是用FreeBSD,一直以來都用UFS,開始用Linux時,就已經有ext3了,
因此我幾乎(很少)使用ext2.....

不過,通常查資料會發現,大部分人並不推薦ext3,推薦的唯一理由是,
ext3的相容性最好,而近幾年,大家比較推薦的,則是ReiserFS,
我個人目前也是用ReiserFS為主(根本所有Linux都是吧... = =||),
不過對filesystem的選擇,可以看看這篇
http://forum.ubuntu.org.cn/weblog_entry.php?e=5137&sid=980c1ca859619e20e716cb518085263e

他確實的比較了4種filesystem,並且做了測試,同時對照別人的測試,
和我一樣懶散的人,可以直接跳到最後看結果~~
========================================================
綜合結論

這些結果重現了Piszcz(2006)關於Ext3是最少的可用分區容量的系統,ReiserFS是最長掛載時間的系統,Ext3創建時間最長的系統。此外,和這份報告中的內容一樣,都發現JFS是CPU佔用最少的系統。最後,這份報告是第一個顯示ReiserFS在通常的文件操作中有較高的page faults。

認識到各個文件系統的優缺點之後,每個 分區/磁盤 只可以安裝一個文件系統。基於上面的測試,XFS似乎是最適合於家用文件服務器或者小型商務服務器使用:

* 他可以最大限度的使用你的硬盤。
* 他是創建、掛載、卸載速度最快的文件系統。
* 他是操作大文件(>500M)速度最快的文件系統。
* 他對於大量的中小文件和目錄的操作是第二快的。
* 在大的目錄樹列表和查找操作中,他在操作時間和CPU佔用間找到了很好的平衡。
* 他不是佔用資源最少的文件系統,但是他在比較老的硬件上面的資源佔用還可以接受。

Piszcz(2006)沒有明確的推薦XFS,他總結說「個人認為,我會因為性能和可靠性而選擇XFS」。我支持他的結論。
========================================================

還在使用ext3的人,醒醒吧~除了相容性之外,它幾乎沒什麼優勢,
還在用ReiserFS的夥伴們,我們是否該考慮跳槽其他filesystem了呢?
還在用ext2的朋友們,除了「最大相容性」、「老舊Server的維護性」、「不敢動資料的Server」之外,強烈建議不要再在新系統上用它了吧~
現在Debian、Fedora、RedHat、Ubuntu...等數套主流的Linux,預設都不用ext2了,
該跟上時代了~~

Ubuntu使用手記(2008-04-29更新)

快~新年剩沒幾天了~po出年前最後一篇~

這次要貼的,是最近這幾周使用Linux的心得,也許會說:「別鬧了,你Linux都用幾年了,裝嫩x~」
恩~這次不同以往,最近嘗試將Ubuntu當桌機來使用,而不是當Server使用,目前還在調校、適應階段,不過還差一些。

先把試用時的過程心得po出來,未來如果有更新,再修改~
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
Ubuntu使用手記(for 7.04):

目前正在進行Linux實用化的測試。

首先按照標準流程安裝Ubuntu,接著:
1. 聲音、影像
關於聲音是好處理的,只需要點2下音效,將Audigy Analog/Digital Output Jack關掉即可。
這選項就是一般Windows上的「數位輸出」......
會發現沒有重低音,目前知道是加入LFT,然後可以控制,但是LFT似乎會把重低音分配到幾隻喇叭上,不會只有重低音喇叭,這點目前不會解。

影像部份就是安裝顯示卡驅動程式,直接安裝基本的驅動程式即可。
點選->系統->管理->受限驅動程式管理員

然後點2下安裝套件、重新開機即可。

2. 網路芳鄰
搞半天原來Linux上現在網路芳鄰鬧雙胞胎,GNOME推smb協定(也就是smb開頭的URL),但並非很多人支援它。
因此在播放程式要播放網路芳鄰音樂時,有些軟體可以用GNOME的檔案總管直接建立後,直接播放,有些卻不行。
因此這邊另外要使用傳統的mount來連線網路芳鄰,方法如下:
sudo mount -t cifs //192.168.1.6/data1 /mnt -o username=ycfu,iocharset=utf8,codepage=cp950

之後可以搭配autofs對特定分享作自動連線

=============================================================+
2007-12-24
在Gnome上要自動掛載(如同軟碟、光碟、隨身碟...等)很簡單,
最下面的gnome-mount設定僅僅只針對要改mount時的參數時使用,
要自動掛載nfs、smb之類的,只需要簡單的設定/etc/fstab即可。
192.168.1.6:/home/data1/音樂分享區 /media/音樂分享區 nfs noauto,rw,intr,rsize=32768,wsize=32768,users 0 0
//192.168.1.6/ycfu /media/ycfu cifs noauto,users,username=ycfu,iocharset=utf8,codepage=cp950,password=xxxxxx 0 0

這邊要注意的部份是,在options的部份中,都有noauto和users
noauto是表示不要自動掛載
users是表示所有人都可以掛載

只要這樣設定好,在Gnome就可以看到它的蹤影,點兩下就可以掛載~~
=============================================================+

3. Firefox的Java/Flash
Ubuntu上的Java目前不是問題,直接安裝Java套件即可,但是Flash卻麻煩一點點。
到Flash網站下載Linux Flash Player,解壓縮後執行執行檔即可。
其實不會太難裝~~

4. 播放影片
這目前還沒有完善的解決方案。
首先知道Linux上現在播放軟體比我想的多。
Linux上現在播放軟體有4個核心:
mplayer、xine、vlc、gstreamer

預設安裝的「影音播放器」,本名叫做totem,預設是使用gstreamer,它也可以搭xine,但是搭配後目前不能用。
然後用xine的幾套目前都不能很順利的使用。
vlc剛裝,倒是頂期待他的表現。
表現最好的是SMPlayer,它是mplayer核心,效果、樣式都很好,支援也不錯(mplayer的關係)。

要播放mpg,avi...等,到mplayer網站下載codec,解壓縮到/usr/lib/win32即可(目前SMPlayer這樣就可以了)。
對於DVD播放,尤其是DVD image播放,SMPlayer可以做到,但是沒有DVD選單,mplayer的因素。
其他套目前還無解~~~

如果要使用第二張音效卡輸出,以MPlayer來說,要使用如下參數:
-ao alsa:device=hw=2.0

其他播放器,也是類似,選擇hw=2.0即可,hw就是用來選擇音效卡硬體的,1.x 表示第一張、2.x 表示第二張。
使用VLC可以很方便的選擇。

而在SMPlayer使用時會發現,不能調整音量,用喇叭沒差,但是用耳機就有問題,方法很簡單:
選項->設定->一般->使用軟體音量控制

5. 虛擬光碟
AcetoneISO2號稱可以做到,它可以把image檔mount之後變成目錄,無法變成真正的光碟機。
但是支援的image檔已經多一點點了,可惜不支援mds/mdf....這太常用了。

6. BBS/圖片瀏覽
這兩個放一起是因為,PCMan都有寫不錯的程式。
PCMan的幾套程式都裝,都不錯用,包括:
pcmanx-gtk2, pcmanfm, mozilla-plugin-pcmanx, gpicview(這要到網站下載安裝)

7. 音樂播放
音樂播放部分,目前使用Audacious這套,它預設不支援ape,但是可以簡單的安裝好。
做法基本上算是參考:
http://sunghlin.blogspot.com/2007/11/ubuntu-710-part-3-cue-tta-ape.html

以我瞭解的解說:
ape部分目前因為沒有授權Linux的版本,因此大家不敢放,所以預設都沒支援。
現階段來說,要在Audacious上支援ape需要2個步驟(也可以說是2個套件):
1.
mac-3.99-u4-b5
這是甚麼?這其實就是ape的codec,讓Linux能夠解碼ape,它實際是某位神人把win32的ape porting到Linux上來的。

2.
audacious-mac
這又是甚麼?單單有ape的codec不大夠,因為Linux能夠解碼ape不代表Audacious能夠解碼ape,因此需要有個Audacious的外掛,就是這個程式。
這個程式的功能很簡單,它實際是呼叫前面的mac,本身其實就是個Audacious呼叫mac的介面。

上述2個程式要安裝,沒辦法用套件,必須自己編譯出檔案,而在編譯檔案前,大家都知道要先確定有編譯的環境,環境建置如下:
apt-get install audacious-dev g++

因為這兩個鬼東西都是用C++寫的,都需要g++才能編譯,因此需要g++,Audacious-dev則不用說了,它是Audacious開發用的套件,
編譯它的外掛應該是會需要,裝上它的另一個好處是,它能幫我們把需要的套件補齊。

接下來很簡單,下載好上述的2個檔案,連結分別是:
http://ptao.victim.free.fr/DL/mac-3.99-u4-b5.tar.gz
http://www.netswarm.net/misc/audacious-mac-0.2.0.tar.gz

其中audacious-mac的總站是:
http://www.netswarm.net/

兩個都解壓縮到 /tmp 下,然後先編譯mac-3.99再編譯audacious-mac,編譯方法都是:
./configure && make && make install

直接下即可,它會放到它該放的地方。

安裝好之後,重新啟動Audacious應該就ok了,有一點要注意的,要讓中文正常,有2個設定:
1.Audacious偏好設定->外觀->字型
這不用解釋了,選個英文字型後要它出現中文,是強人所難~

2.Audacious偏好設定->外觀->使用點陣字(如果可用) 要「去掉」
這個不好解釋,原則上同非常早期的Winamp 2.x版,要把使用點陣字去掉,讓它使用一般字型來顯示。

8.Ubuntu懶人包
網址在:
http://lazybuntu.openfoundry.org/

我覺得裝它一部份東西不錯,像中文字型和codec、播放器,其他就.....,像Adobe Reader 8.11,讓我等到睡著,片子看完都還沒抓完~ = =||

9.顯示卡驅動程式
顯示卡驅動程式基本上參考:
http://www.ubuntufreunde.de/forum/p11783/ubuntu_gutsy_nvidia_treiber_96_43_01_installieren.html#post11783

雖然都是看不懂的「德文」,但照著做就ok了~

補充一點,Ubuntu的特效需要設定「受限的驅動程式」,它似乎看不懂NVIDIA官方的驅動程式,
建議的改善方法是,先安裝它,然後再按照上面的方法安裝官方的驅動程式。

10.預設音效卡問題
Ubuntu很笨,預設音效卡似乎會一直跑,解決方法如下網址:
http://www.ubuntu.org.tw/modules/newbb/viewtopic.php?post_id=23765

內文如下:
先在終端機下
sudo asoundconf list

像我有一個音效卡,是NB(NVidia)的,和一個USB(C-Media)的音效卡
輸入以上指令就會出現
NVidia
default

這時如果我要將筆電的音效設成預設,只要下
sudo asoundconf set-default-card NVidia
如果要將USB音效卡設成預設,只要下
sudo asoundconf set-default-card default

以此類推,如果asoundconf也抓不出的話,這方法就不適用了

10.VirtualBox設定
到網站下載之後,安裝完要如下設定:
a.新增到群組,如下指令:
sudo usermod -G vboxusers -a xxxxx

b.加入下列這行到/etc/fstab
none /proc/bus/usb usbfs devmode=666 0 0

這是將USB權限設定給全部人使用,要安全性好點,如下網頁設置:
http://forum.ubuntu.org.cn/viewtopic.php?t=78342

c1.使用NAT模式
參考如下網址設置:
http://www.linuxsir.org/bbs/showthread.php?t=293771

#chmod 0666 /dev/net/tun #設置訪問權限
#tunctl -t tap0 -u leemars #建立一個tap設備, 名字為tap0, 所有者為leemars

#ifconfig eth0 0.0.0.0 promisc #使eth0進入promiscuous模式
#ifconfig tap0 0.0.0.0 promisc #使tap0進入promiscuous模式
#brctl addbr br0 #增加一個網橋
#brctl addif br0 eth0 #將eth0加入網橋
#ifconfig eth0 up #激活eth0
#dhclient br0 #為br0設置IP地址
#brctl addif br0 tap0 #將tap0加入網橋
#ifconfig tap0 up #激活tap0

c.建立bridge模式
如下網頁設置:
http://blog.ssh.tw/?p=735

注意:
ifconfig eth0 0.0.0.0 promisc
brctl addif br0 eth0
dhclient br0

這幾行會導致網卡斷線,之後重新透過DHCP取得IP,
因此要注意,有設定到這幾行,要在本機設定,不然就是寫成script,給它背景執行。

PS:網頁作者參照如下網頁:
http://blog.chinaunix.net/u1/35100/showart_288321.html

11.aMSN安裝問題:
aMSN的鬼問題,參照:
http://www.ubuntu.org.tw/modules/newbb/viewtopic.php?post_id=30950

它提到有個檔案:
http://nmgmt.cs.nchu.edu.tw/nm/fixamsn.sh

執行它之後就會自動編譯、安裝出中文ok的aMSN~~
如果要還原修正後的檔案,同個檔案執行:
bash fixamsn.sh clean

即可~~

12.改用GPicView作為預設圖片顯示程式
如下網頁:
http://www.ubuntu.org.tw/modules/newbb/viewtopic.php?post_id=33957

輸入如下指令即可:
xdg-mime default gpicview.desktop `grep 'MimeType=' /usr/share/applications/gpicview.desktop | sed -e 's/.*=//' -e 's/;/ /g'`

13.OpenOffice支援MySQL
如網頁:http://blog.edu.cn/user2/27310/archives/2006/1204137.shtml

14.傳真掃描
掃描問題比較小,安裝xsane即可(預設好像就有裝了),然後需要設定的,是修改:
/etc/sane.d/net.conf

加入
192.168.1.6

即可

傳真部份,安裝gfax
裡面按設定設hylafax和帳號密碼

這邊需要注意的是,它掃描的檔案只吃.ps檔,目前知道用xsane掃描時,可以直接掃成.ps檔,其他目前還不清楚。

15.開機畫面顯示問題
開機一直沒畫面,終於把問題解決了,方法很簡單,參考網址如下:
http://webnews.giga.net.tw/thread//tw.bbs.comp.linux/57803

原文:
================================================================
解法,例如我的 Monitor 是 1280x1024,但是 usplash 可能只能用 1024x768 跑,
到 /etc/usplash.conf 中將
xres=1280
yres=1024
改成
xres=1024
yres=768
然後在打
sudo update-initramfs -u -k `uname -r`
更新一下就應該可以看到了
================================================================

Ubuntu上的開機畫面使用的是usplash(Ubuntu Splash),也就是類似之前Debian上玩的Bootsplash,
在Ubuntu上其實已經設定好了,且設定的很好,不能用的原因是它把解析度設錯了,
我不能理解為何Ubuntu要把我的解析度設到1280x1024..........這是人看的嗎.......... = =||

因此很簡單,修改
/etc/usplash.conf

依需要改變解析度,哪個是寬、哪個是高應該不用說了吧...... :p

我之前改完後重開機沒反應,感覺好像少了什麼步驟~
就是
sudo update-initramfs -u -k `uname -r`

套Debian當時的資訊,因為圖片其實是存放在initramfs中的,所以需要重建initramfs才會動作。

對了對了~因為開機時候都會出現FAT32的檔名錯誤,記得要修改/etc/fstab,把幾個FAT32後面的0 1改成0 0,讓它不要開機檢查。

16.RealPlayer沒聲音(我這邊是聲音輸出在AC97上)的解決方法
RealPlayer之所以沒聲音,是因為它並不支援ALSA,不過現在大部分都是介紹使用ALSA作為主要的聲音介面,
解決方法如網頁稍微修正:
http://www.linuxfans.org/bbs/thread-181653-1-1.html

1.安裝alsa-oss套件
sudo apt-get install alsa-oss

2.修改RealPlayer的呼叫指令,在前面加上aoss
這邊一般都是教使用sed把realplayer的script找出來改,可是我好像沒找到這個script檔案,
因此我稍微變通一下,修改GNOME選單的command~~

系統->偏好設定->Main Menu->影音->RealPlayer 10->滑鼠右鍵->屬性->Command改為『aoss realplay %U』

17.Swiftfox安裝(暫時)
Swiftfox不錯,可是它現在竟然強迫更新到3.x了.....
要安裝目前的正式版可以看:
http://www.ubuntu.org.tw/modules/planet/view.article.php?685

18.WINE中文設定(暫時)
WINE的中文問題分2部份,分別是顯示和輸入。

顯示的部份問題其實在WINE中字型的設定上,它用的字型全部都不是中文字型,中文字自然出不來~
設定可以用2種方式,一種是直接改~/.wine/system.reg和~/.wine/user.reg
但是其實這2個檔案,就是直接對應到regedit中的,所以也可以直接改regedit。

已設定來說,我用到最ok的(0.9.51)是
http://semson.blogspot.com/2007/11/wine-crossover-office-picasa-linux.html

這個人提供的regedit檔案,直接套用即可。

PSPad中文輸入與顯示:
PSPad在套用上面的中文設定之後,顯示應該就沒問題了,設定上要多設定個地方,
打開『設定->本程式各項設定->直接編輯->Font->Courier New』通通改成『AR PL New Sung』。

在使用cxoffice版本時,一樣要設定中文,也要設定音效,
中文設定時,呼叫regedit的方法是
執行cxrun,設定好bottle,然後執行的command輸入regedit,接著匯入前面說的網站的reg檔案。
兒音效的設定,則參考:
http://www.linuxjournal.com/article/8886

要使用
./wine --wl-app winecfg

不同的bottle則要用:
./wine --bottle win2000 --wl-app winecfg

19.Firefox中文字型設定
中文字型可以參考:
http://blog.xuite.net/ericsk0313/ubuntu/5239097

他是用細明體,只要安裝mscorexxx字型之後,Arial和Time字型都有了,細明體改成新宋即可。

20.GNOME mount
GNOME會自動mount裝置,像是USB、光碟機...等,可是autofs預設是沒有安裝的,
那GNOME那來這麼神奇的功能?
答案是,GNOME有GNOME mount這個程式,它用來做這樣的工作,
參考:
http://lusweblog.blogspot.com/2007/09/mounting-options-in-gconv.html

GNOME mount的執行程式是gnome-mount,他的設定儲存在GNOME裡類似registry的設定裡。
網頁原文是:
===========================================================
GNOME 會自動 mount usb device。
在 mount usb 硬碟時,我們常常會需要一些額外的 option, 例如utf8。
GNOME 預設沒有這些option, 所以在ntfs 或 vfat 的usb 碟碟裡的中文檔名全部都變亂碼了。
所幸gnome-mount 的 argument 是可以在 gconf 裡設定的。

開啟 configuration editor (gconf-editor),在 system/storage/default_options 裡可以設定各種 file system 在mount 時所要的參數。

gconf裡看起來好像還有很多東西可以玩,有空再來慢慢研究...

對了, GNOME 的 g 是不發音的... 我常忘了這件事...
===========================================================

21.Linux下ID3 tag問題
在Windows上mp3標籤已經很難搞了,到Linux上會發現,事情變得更複雜了。
關於Linux上標籤問題,參考:
http://www.oceanboo.cn/read.php?114

簡單說,就是下面這個表的問題:
ID3v1:只支持ISO--8859-1
ID3v2 2.3:ISO--8859-1、UTF-16
ID3v2 2.4:ISO--8859-1、UTF-16、UTF-8
APEv2:UTF-8

基本上,在Windows上就全吃,其中問題最大的在ID3v1,不支援中文,
因此Windows上直接用ISO-8859-1儲存中文,到Linux上就自爆了..... = =||
文章建議的方式是,直接改用ID3v2,ID3v1就別用了~~
不過不論如何,一次大規模的變更ID3似乎是不可避免了..... :(

======================================================
2008-01-01
22.Windows Key

Windows Key基本上算是部份解決了,儘管不漂亮,但的確是解決了問題,
其實在GNOME當中,對Windows Key的支援就已經有做了,在網路上說的remap設定其實不大需要~~

系統->偏好設定->鍵盤->配置選項

這裡我們可以看到有個『Alt-Win 鍵功能』,點開後可以看到一些選項,其中多半都是針對Win Key的設置,
以我來說,我選擇『Hyper 配置到兩個 Win-key』

選取之後,在
系統->偏好設定->鍵盤捷徑鍵

就可以直接用 Win-key 搭配其他鍵做設定了,例如我的
Desktop->顯示面板的『執行程式』對話視窗

就改成了
Win-key + r

它會顯示
Mod4 + r

此外,我們回到
系統->偏好設定->鍵盤

還有個『休息提示』,可以設定使用多久後提示休息~

23.Picasa2的中文設定
前面(以往)的Picasa2會按照WINE的設定方式進行設定,發現效果並不好,會掉字~

現在try try之後,發現不用這麼麻煩,而且效果超好~

安裝Picasa2 2.7.0 for Linux套件之後,直接點選選單中的Picasa進行安裝~

安裝完之後,關閉程式並點選『Picasa Font Settings』

Font Linking先加入要使用的中文字型,然後把其他字型全部拿掉,以目前來說(我改用Mac的LiHei Pro了),就只剩下LiHei Pro~

接著到Menu Font,選擇要使用的中文字型,以目前來說(我改用Mac的LiHei Pro了),就是LiHei Pro,然後設定下字體大小,我目前是用11~

按下OK後離開,重新開啟Picasa,進入程式後,應該會看到全部都變成LiHei Pro字型了,然後完全不會掉字~

24.VMWare設定
這是個詭異的問題,以往只有一張音效卡時都沒遇過問題,現在卻遇上了~

話說VirtualBox竟然不能安裝Alcohol 52%,這可是自Daemon Tools跳過來之後,目前我最常用的虛擬光碟軟體哩~
我個人認為,原因可能是模擬光碟機的部分和VM有衝突導致被禁止執行吧~

因此我又跳回VMWare了~沒想到VMWare竟然出現沒有聲音的問題..... :(

VMWare基本上使用OSS作為音效系統,但是正如前面說過的,現在的音效系統,要就是用alsa,不然就是esd(ESounD)或arts......

針對這部分,之前好像寫過blog~~

而VMWare要支援要怎麼辦呢?
看到下面這篇:
http://communities.vmware.com/message/706904;jsessionid=1AD50E88DE71AB6D968A4369EB181708

其中提到了這個連結:
https://www.sokrates.homelinux.net/~thomas/Private/Soft/vmwaredsp/vmwaredsp-1.4.tar.bz2

這是讓VMWare能夠支援esd、arts、alsa的模組,只需要編譯、安裝之後即可使用~

過程中他會需要一些library,像是libesd-dev...等,原則上,他提到甚麼not found就找甚麼即可~

安裝完之後,只要按照他說明:
ALSA執行
vmwarealsa

ESD執行
vmwareesd

arts我沒用,Makefile關於arts的部分我都註解掉了....

2008-01-07
25.關於Linux下5.1聲道的使用,並不如原先想像的容易,下面是教學,基本上可能需要了解alsa的設定,
目前暫時先只做紀錄~
http://www.cse.ohio-state.edu/~bondhugu/alsamch.shtml

26.Linux下的傳真
原本認為Hylafax是Linux的程式,Windows下沒有Hylafax Client,因此Windows的傳真可能比較難搞,
沒想到在Linux上,同樣很麻煩~

由於Linux上的傳真機,幾乎都是用PostScript(.ps)的格式來傳真的(不管hylafax、efax...等),
在Windows上要傳真,需要2個步驟:
1.把要傳真的檔案轉成PostScript(.ps)的格式
2.透過hylafax client送出傳真工具

不過好在許多印表機也都是吃PostScript(.ps)的格式,因此最常見的作法,就是把傳真機模擬成印表機,
透過列印把檔案轉成PostScript(.ps)並送出傳真工作~

這流程看起來很順利,但有個問題,電話號碼怎麼輸入?印表機通常不會問電話號碼的~
在之前,這是麻煩事,不過winprint這個程式出來之後,一切就簡單多了~

在Linux上問題重現,更慘的是連winprint這樣的印表機程式都沒有,因此,就寫了這個~
因為Linux上沒有像winprint這麼方便、統一的程式,可以簡單的設定個印表機達到傳真(可能我沒找到),
好在Linux上大部分的列印都是靠PostScript,因此找到了著力點~

在Linux上要傳真,就是靠傳真軟體,以我個人來說,我還滿推荐gfax的,在沒有找到其他更好用的傳真軟體之前,
這是我認為比較好用的軟體,KDE可能會有,可是KDE把傳真跟列印綁在一起由kprint來管理,
結果好像造成KDE的傳真軟體在GNOME下不大能用,似乎要先把KDE的列印系統設好才能動~

gfax它支援hylafax、efax,因此透過它可以知道hylafax server目前情況(已寄出、已收到...等),
它的傳真和其他程式一樣,只接受PostScript(.ps)格式的檔案~
因此結論1:
我們只要是PostScript(.ps)格式的檔案,都可以透過gfax傳真出去~

在Linux上,因為列印大都先轉成PostScript,因此我們可以比較容易的把文件轉成PostScript,作法很簡單~
在Windows上我們列印時經常會看到『列印到檔案』這樣的選項,
通常我們不會去用它,也不會去理會它~
而在Linux上,要傳真則要靠它,因為他能幫我們把列印的文件轉成PostScript(.ps)的檔案。

因此這部分,在Linux上就要看軟體對列印的設計了:
OpenOffice來說:
全系列OpenOffice只要能夠列印,任何印表機都提供『列印到檔案』的項目,勾選之後列印,
它就會出現『儲存』的視窗,右下角直接標記是儲存為『PostScript』

GNOME的文字編輯器(gedit):
它的列印和一般的不同,直接提供列印成PostScript、PDF的格式,同時也提供列印到gfax的功能,
從這邊的資訊往下查可以發現,gfax有提供一個程式叫作『gfaxlpr』,透過這個指令可以輕易的列印到gfax當中,
但是目前我不知道怎麼設定它成為印表機~

Firefox:
和OpenOffice一樣,列印時選擇『列印到檔案』,雖然它在儲存視窗不會顯示檔案的格式,但它就是PostScript格式沒錯,
可以用檔案總管(Nautilus)按右鍵按屬性來知道~

掃描器程式(XSANE、Kooka):
XSANE是老牌的掃描器程式,它是SANE主要的前端,它可以直接將圖檔掃瞄成PostScript(.ps)格式
Kooka是KDE預設的掃描器程式,我個人覺得它介面比XSANE好看,但沒有XSANE直覺~
Kooka掃瞄後需要先存檔,存檔後列印,列印時可以直接選擇『列印成檔案(PostScript)』~

Evolution:
Evolution是Linux上GNOME主要的郵件程式,相當於M$的Outlook,有行事曆...等功能,
它一樣直接列印,列印時可以選擇『列印到檔案』,接著可以選擇輸出格式是PDF或是PostScript。

gThumb:
gThumb是GNOME上主要的看圖程式,他的用法和Evolution幾乎一樣,
列印時除了第一個畫面讓你調整圖片的位置、大小之外,第二個畫面和Evolution用的相同。

Adobe Reader:
提供『列印到檔案』的選項,一樣是『PostScript格式』,不過它的印表機提供『自訂』,
我們可以直接輸入『gfaxlpr』讓它直接透過gfax傳真~

27.安裝Adobe Reader 7.0.9
Adobe Reader 8.0 Linux版繼承了Windows的所有優點,包括速度非常慢的特色,
因此我改安裝Adobe Reader 7.0.9~

Adobe Reader 7.0.9並沒有提供.deb的套件,只有.rpm和.tar.gz,
在Ubuntu上,我們只要安裝alien這個套件,
他可以幫我們把.rpm的套件轉成.deb,
下載.rpm的版本,執行alien xxxxx.rpm
產生adobearoread_7.0.9.deb
執行
sudo dpkg -i adobearoread_7.0.9.deb

將它安裝到系統中~

它會被安裝在
/usr/local/Adobe/Acrobat7.0

執行
/usr/local/Adobe/Acrobat7.0/bin/acroread

會發現無法起動,一直跳出expr error~

用google查詢之後,發現問題在起動程式(Script)有個判斷libgtk-x11-2.0的式子有問題,
首先查看看系統中的libgtk-x11到底是甚麼版本的,如下:
locate libgtk-x11

顯示:
/usr/lib/libgtk-x11-2.0.so.0
/usr/lib/libgtk-x11-2.0.la
/usr/lib/libgtk-x11-2.0.so
/usr/lib/libgtk-x11-2.0.so.0.1200.0
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/libgtk-x11-2.0.a
/usr/lib/vmware/lib/libgtk-x11-2.0.so.0
/usr/lib/vmware/lib/libgtk-x11-2.0.so.0/libgtk-x11-2.0.so.0

原來是0.1200.0的版本,再來修改起動程式
sudo vi /usr/local/Adobe/Acrobat7.0/bin/acroread

用『echo $mfile| sed』找到:
echo $mfile| sed 's/libgtk-x11-\([0-9]*\).0.so.0.\([0-9]\)00.\([0-9]*\)\|\(.*\)/\1\2\3/g'

改成
echo $mfile| sed 's/libgtk-x11-\([0-9]*\).0.so.0.\([0-9]\)200.\([0-9]*\)\|\(.*\)/\1\2\3/g'
^^^^^^^^^^^^^^^^^^^^^^^^
他的意思是(原始):
0.(0~9)00.(0~9)

我們的版本是:
0.1200.0

因此把00改成200即可~

接著把GNOME中的選單設定改掉,原本是:
acroread

改成:
/usr/local/Adobe/Acrobat7.0/bin/acroread


一起動,它會提示『PPKLite.api有問題』,上google搜尋後會發現,
只要安裝OpenLDAP套件即可~

問題是,我看PDF要OpenLDAP幹嘛?
進一步搜尋後會發現google中有人說,PPKLite.api都不用了,DigSig.api更是沒用了,
正好,就把這兩個api移除~

到
/usr/local/Adobe/Acrobat7.0/Reader/intellinux/plug_ins/

把
PPKLite.api 改成 PPKLite.api.bak
DigSig.api 改成 DigSig.api.bak

看到SendMail.api,我又不寄信,順便:
SendMail.api 改成 SendMail.api.bak

接著重新執行Adobe Reader 7.0.9,恩~和8.x相比順暢不少~

而且意外驚喜出現,星際譯王竟然可以直接使用,真是不敢相信~

28.SSH Tunnel
在Windows裡面,已經非常習慣使用Tunnelier了,這軟體實在好用到不行阿~

到了Linux上,儘管原創的OpenSSH就提供tunnel的功能了,
可是每次都要查指令參數,實在讓人無力,
查詢後找到原來GNOME已經有這樣的軟體了~

用套件管理程式安裝:
gSTM

它全名叫作:
gnome SSH Tunnel Manager

要建立firefox用的socks,只需要:
屬性->新增->Type:Dynamic->Port:1080

Firefox中設定Proxy,
Proxy是Socks
位置127.0.0.1
Port 1080

即可~

至於Tunnelier中的FTP-to-SFTP Bridge,雖然尚未找到類似的程式,
但Linux上有sshfs,可以完全替代該功能,目前比較遺憾的是,
sshfs需要輸入指令,或者和前面cifs、NFS一樣預先設置,無法有方便的GUI隨意設定隨意連線使用~
======================================================
2008-01-13

字型註記:
剛剛把XP的細明體和標楷體複製到Linux上,
經過比較之後發現,我之前一直搞錯了~

對應關係:
文鼎 PL 新宋=新細明體
文鼎 PL 新宋mono=細明體

也就是說,細明體是等寬字
======================================================
2008-01-17

29.Linux下的抓圖程式
我們經常會需要在電腦上抓圖,尤其做文件時,能夠抓圖再解說是很方便的,
那麼在Linux上要用什麼抓圖程式呢?

最基本的辦法,什麼都不裝,就是用「Print Screen」這個按鍵來抓圖,
按下去之後,用GImp或OpenOffice應該都可以貼上,
這方法在Windows和Linux都是通用的。這方法的最大缺點就是,永遠只能抓全螢幕,特定視窗、特定位置都不行。

而Linux上推薦的抓圖軟體,可以看下面這篇:
http://www.in-life.idv.tw/index.php?/archives/283-accaca-ksnapshot.html

這篇作者推薦用ksnapshot,這套抓圖軟體的確是相當方便好用的一套,畫面簡潔,但是基本的抓圖功能都具備了。

至於google搜尋之後其他幾個方案,什麼xv、gimp,還是算了吧~
xv都幾百年前的東西了,光介面就受不了了,gimp的抓圖功能又太單純了,效用不大。
相比之下,ksnapshot的確是不錯的選擇。

在Windows上,我們經常會用MWSnap,這是套小巧方便的抓圖程式,之前我幾乎都是用它(ksnapshot和它能力相當),
不過它有個致命的缺陷,它不支援捲軸抓圖,例如寫了程式,要把程式碼整個抓下來,
它就沒辦法幫你把整個程式碼全抓,頂多只能抓「這頁」程式碼,這時候可能就得要慢慢拼接,
這種事情,我是幹過的..... = =||

因此在去年,我改使用「FastStone Capture」這套抓圖軟體,它能支援捲軸抓圖,
在5.3版之前都是免費版,之後變成付費版。 = =||

在Linux上呢?目前我並沒有找到類似的抓圖軟體,還是使用ksnapshot,不過針對捲軸抓圖有個替代方案。
看下面這篇:
http://briian.com/?p=3543

重灌狂人有介紹一個抓圖程式,這個抓圖程式是Firefox的網頁抓圖外掛,軟體和公司如下:
軟體:
Pearl Crescent Page Saver

公司網頁:
https://pearlcrescent.com/products/pagesaver/

非常幸運的,這個外掛程式的Basic版本是免費的,而且最重要的,它能支援Linux x86。

雖然這個是Firefox的外掛程式,只能用在Firefox的顯示頁面中,不過因為Firefox本身有強大媒體支援性,
因此我們可以直接用Firefox開啟文字檔、網頁檔、圖片...等,雖然不能完全替代捲軸視窗的抓圖,
但是如果只是要抓程式碼(文字檔)、網頁之類的,它是可以勝任的。

30.細明體、新細明體設定
因為很多地方實在需要細明體和新細明體,這兩個字體基本上已經是中文系統的標準字型了,
尤其是「Yahoo!奇摩」...等網頁,它們直接在CSS中指定使用細明體,
另外像是用WINE使用Windows程式時,很多軟體預設也是用細明體(像是Office 2003),你不用它,
文件到了其它地方編排就是會有問題~~
把細明體、標楷體複製到/usr/share/fonts/truetype/
有了~可是卻出現了問題,所有細明體、新細明體都都會變形,什麼原因?怎麼解決?
如下:
http://blochy.com/lancetw/blog/archives/2006/07/16/107/

它提到主要原因是,英文字型要好看,需要反鋸齒功能,但中文字型不能加上反鋸齒,
而因為細明體、新細明體預設是英文名稱,就被當成英文字型來處理,18 size以下統統被加上反鋸齒,
統統都爛掉~~

解決方法它也提了,就是加個設定檔,應該是把字型名稱改成中文而已。

===========================================================
2008-01-20

昨天發現WINE莫名其妙無法使用,幾乎是一執行WINE的程式,整個X-win就會重開,
在dmesg的紀錄中,則會跳出APG進入8x mode的訊息。

發生的原因可能是這幾天的更新中有動到顯示相關的library,造成顯示卡驅動程式有些問題,
重新安裝驅動程式即可~

===========================================================
2008-01-26

Linux下的ADSL/VDSL/FTTB設定基本上不太難也不算太麻煩,
ADSL/VDSL/FTTB基本上都是透過PPPoE連線,
所以原則上就是安裝pppoeconf(一併安裝ppp),
之後執行pppoeconf然後按照簡單的詢問和回答即可完成設定。

Linux比較麻煩的是圖形化的操作,經過google大神的幫助後,找到下面頁面的介紹:
http://linuxtoy.org/archives/ppp-tray-icon.html

接著再經過google大神的詢問,找到下面的下載頁面:
http://linux.softpedia.com/progDownload/PPP-Tray-Icon-Download-31781.html

這個套件的主要功能是管理pon/poff用的,pon/poff則是呼叫PPPoE連線用的程式,
比較要注意的是,pppoeconf和pon/poff的設定檔是放在
/etc/ppp/peers/

要改變PPPoE的名稱,只需要直接改檔名就可以了!

===========================================================
2008-02-04

關於Linux下的特效,基本上就是Compiz。

要使用Compiz必須要安裝顯示卡驅動程式,目前我是安裝Nvidia原廠的驅動程式,
作法參考前面,原則上就是按照某個鬼文字網頁作法即可。

這邊要解釋Compiz的操作,關於Compiz我們要安裝套件,打開Synaptic「套件管理程式」,搜尋「compiz」。
安裝如下套件:
compiz
compiz-gnome
compizconfig-settings-manager
emerald

這邊稍微解釋一下幾個套件的用途:
compiz compiz主要套件,我不了解為何compiz-gnome安裝後它不會自動安裝
compiz-gnome compiz應用在GNOME時所需的套件,如果是KDE,則安裝相對應的compiz-kde
compizconfig-settings-manager compiz的主要設定程式,我們透過這個套件的GUI設定程式來設定所有特效
emerald 視窗裝飾

這邊要注意的是,前面提到過,Ubuntu一開始啟用特效時,會有視窗標題列消失的問題,
這主要的原因就是「emerald」的問題~

compiz本身算是視窗系統特效程式,裡面提供了非常多的視窗特效外掛,讓我們可以做出M$ Vista或MacOS X的效果,
但是它有兩個但是:
1.Compiz會取代原先GNOME預設的視窗管理
2.「compiz並不提供『視窗裝飾』」的功能,也就是說,compiz雖然會取代視窗管理功能,但卻沒有提供視窗裝飾,
而視窗裝飾,就是我們整個視窗的標題列、最大化/最小化/關閉視窗...等按鍵、視窗邊條...等,
而和compiz搭配的視窗裝飾管理程式,就是emerald,我們甚至不用另外執行,compiz就會幫我們呼叫執行了

有了以上概念之後,下面我們開始操作、設定。
我的設定原則上是參考:
http://wiki.debian.org.hk/w/Install_Compiz_Fusion

我是設定作業階段,在登入時候啟用compiz的。

之後我們可以透過
系統->偏好設定->Emerald Theme Manager

來變更視窗裝飾,可以用emerald + theme去google搜尋theme來使用。

而compiz,我們可以透過
系統->偏好設定->Advanced Desktop Effects Settings

來設定所有特效,可以設定使用或不使用該特效,在圖示上點選後,則可以設定這個特效,
其中比較重要的是,在點選圖示後設定特效時,經常可以看到有個「Action」的分頁(Tab Window),
這裡面可以看到按鍵設定,因為許多特效是需要透過快速鍵來呼叫的,不知道快速鍵就根本不知道這特效的作用,
不過目前我也沒摸很熟,很多特效其實不知道用途。

===========================================================
2008-02-18

軟體除錯可以用KDbg,目前用到最好用的。

ID3編輯目前用2套搭配:
Kid3目前用起來感覺最好,但是對 ISO8859-1 的 Big5 支援性不好
Easytag 對 ISO-8859-1 的 Big5 支援不錯,但是操作很麻煩

字幕處理,目前感覺 Subtitle Editor 似乎支援性不錯,但還不會用

===========================================================
2008-03-09

中文的TrueType字型安裝到Ubuntu其實很簡單,只需要把*.ttf的字型檔複製到
/usr/share/fonts/truetype/

接下來執行
fc-cache -v

原則上來說就可以了,但是實際上會遇到問題,
以我來說,最常遇到的問題是,字型看得到、選得到,但是全部都是方塊,
我在Ubuntu中文論壇發問,有人回應得到了解答,如下:
http://www.ubuntu.org.tw/modules/newbb/viewtopic.php?topic_id=8314&forum=8

關鍵在於『權限』。

字型要能夠使用,權限必須要是『755』,其他權限都是不行的,當沒有權限使用時,自然就會變成方塊了。

===========================================================
2008-03-22

StarDict(星際譯王) 在使用時會發現浮動視窗有問題,
當反白選字後,浮動視窗出現,可是滑鼠一動它就跑掉消失了,
這個問題解決方法其實早就有了,這是個舊版的bug,
解決方法很簡單,到StarDict的網站安裝新版的安裝套件即可(Ubuntu軟體庫裡面是3.0.0-1版,網站新版是3.0.1-1版)。
相關資訊來源:
http://www.ubuntu.org.tw/modules/newbb/viewtopic.php?post_id=32121

===========================================================
2008-03-26

最近針對NB安裝Ubuntu,發現Audacious 1.4版的安裝沒寫上來,
因此這邊補上~

Audacious 在 Ubuntu 的套件庫是 1.2版,
要更新到 1.4版我們需要找其他套件庫來安裝 1.4版 的 Ubuntu 套件。

下面網址是關於 Audacious 1.4版 套件庫的 blog 文章:
http://linux.blogbus.com/logs/14136342.html

下面這條就是 Audacious 1.4 針對 ubuntu 7.1(gutsy) 的套件庫設定:
deb http://backports.dereferenced.org/ gutsy universe

===========================================================
2008-04-26

Ubuntu使用手記(for 8.10)(升級):

Ubuntu 8.10 內建的 Audacious 套件已經是最新的 1.5.0 版,不需要額外設定了。
升級後,因為之前是安裝 NVIDIA 原廠的顯示卡驅動程式,需要重新安裝。
aMSN需要重新利用 fixamsn.sh 安裝。
Ubuntu 8.10 內建的 StarDict(星際譯王) 套件已經是最新的,不需要額外安裝了。
OpenOffice 更新為 2.4.x,關於資料庫的設定要重新設定(目前連mytsql中文有問題(JDBC和ODBC均是))。
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=

結語
這次使用,目前暫時又換回來了,因為目前看paper非常需要Dr.eye,
但Linux上還沒找到類似的軟體(別跟我說星際譯龍,那軟體需要複製,無法點選後直接翻譯,且不支援Adobe PDF Reader),目前還在尋找中~~
另外,還找不到好用虛擬光碟軟體(又~別跟我說用mount可以掛載iso....我要可以掛載mds/mdf,mdf問題還小,還有mds/I01,I02,I03...等)
再者,WINE的中文設定實在很無力,儘管已經有po了,但它不完全能顯示的很好,一些地方的中文還是出不來,另外關於Windows Media Player的支援也不夠好,無法用來收看網路電視(I'm TV),如果是NB+宿舍,這可以我用來收看新聞的主要來源阿~

2007年12月10日

華碩(ASUS)、Linux、eeePC 我支持你~

這次標題這樣下,不知道會不會讓搜尋到的機會變大,雖然不在乎多少人看,但是看的人多點點,還是會比較爽些..... :p

儘管我沒買eeePC(易PC),但是我個人頗支持它,10000元我目前還沒辦法花下手,等過完年看看嚕~

這次有趣的是,eeePC這次搭配了Linux,因為eeePC的設計、價格加上Linux,讓它在現在成為了最具話題性、爭議性的產品,而且似乎賣得很不錯。

雖然ASUS跳出來說,這不是低價電腦,但這顯然是為了之後調漲預先喊話,就eeePC而言,價格應該就這樣了,但隨著RAM增加、SSD(固態磁碟)容量增加、週邊增加、預載XP...等,eeePC未來的確會有越來越貴的趨勢。
加上ASUS已經說了,明年4月左右,eeePC二代就會推出,使用Intel新一代更省電的處理器/晶片組,eeePC二代價格會比一代便宜?打死我都不信~
儘管如此,它不是低價電腦這本身也很詭異,畢竟這個定價,看起來就是衝著低價電腦來的,所以目前看起來,一開始ASUS應該是有想做低價電腦,但發現市場接受度很好,硬體成本/效能又實在不好兼顧時,選擇了提高售價.....。

這篇最主要的,則是要說說ASUS的Linux,雖然很多人(尤其是Linux社群的人)一直批評它,說它不開放,沒原始碼。
可是我個人持相反意見,一來ASUS為eeePC提供專屬Linux的更新服務,這在目前品牌電腦中,不能說沒有(因為我不非常確定沒有),但真的不多,能夠在商業市場中,為Linux投注心力,這是值得鼓勵的,而且ASUS在被抗議後,也的確提供了原始碼,而且看起來並沒有故意拖延,這至少看得出來ASUS還算有誠意。
再者,很多人說eeePC上一些程式並不是GNU授權的,像那個介面.....,Linux希望推向商業,可是Linux社群中很多人卻不能接受獨占,不可否認,在商業市場中,要有特色才能吸引人,我個人認為,如果eeePC這麼做,對Linux市場佔有率有提昇效果,那麼它獨有的一些程式我認為是可以接受的,畢竟不接受獨占,反而讓所有的Linux都沒了特色。
現在ASUS的記者會中,M$的總經理出現了,讓我有看到電影魔鬼代言人的感覺,我相信ASUS站在電腦製造商的立場,它是支持Linux、支持低價電腦的,但它的支持是不夠的,在魔王面前,金錢、權力的誘惑永遠比神父的教誨要強大得多,看著許多人買了eeePC後改灌成XP,許多人買了之後退機,Linux社群的人是否該以支持、建議來取代抗議、謾罵呢?