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社群的人是否該以支持、建議來取代抗議、謾罵呢?

2007年12月7日

中正紀念堂~大中至正~走了~

雖然蔣中正如何~
蔣經國如何~
和我關係不大~
但是這次把牌樓給拆了,我卻不高興,於是乎就上來寫寫了~

蔣中正很獨裁,可是至少他的目標是反攻大陸,
為了這個目標,他在台灣建軍隊,為了把台灣當作反共的模範,他建設台灣~
就算他沒很認真建設,但蔣經國的建設大家都看得到,
為了在全世界夾縫中生存,他們努力的和美國、中共斡旋,
在石油危機時,想盡辦法解決問題,不但化解危機,還讓台灣提昇。

中國有5000年的歷史,有北京猿人,我們都是黑頭髮、黃皮膚,
我們都說中文、寫中文,故宮博物院裡面放的,是中國5000年的文物,
蔣中正、蔣經國是歷史的一部分,這是沒辦法抹滅的。

今天,為了「民主」兩個字,要去換名稱、拆牌樓,
都只是為了年底和明年的選舉,
為什麼這麼篤定是選舉,而不是「民主」?
什麼是「民主」?
「以民為本」應該是答案吧?

中正紀念堂前面這麼多人在抗議,不願意換牌子,卻依舊把牌子給拆了,「以民為本」在哪?
更有趣的是,說要拆牌子的是「教育部」,
我在八百年前就說過我覺得台灣教育很失敗,
許多有特色的專業都沒有相關學校、科系,
這到現在還是沒改善,
每次一提到,就說要「教改」,
每次一提到教改,就人人都在罵~
這顯然,教改完全失敗了~
教育部不管教育,跑去管牌子?去管牌子上的字?
然後教育部長大聲的說「大家醒醒,這是民主」?

我不懂,真的不懂,這樣是對的嗎?這樣是主流嗎?
我以為教育部長應該是開教育座談會,
或者談論應該怎麼改進教授品質,
或者討論學校污教育部錢該怎麼改善,
或者討論學生住宿的問題。

原來這些都不是教育部、教育部長的重點工作阿~~

2007年11月30日

Linux & Windows 的 Unicode!?

最近日劇抓比較兇,忽然注意到的~

在wiki、摩托學園...等地方,都可以找到教人把Linux轉成Unicode環境的文章,
設定方式在現在其實已經不難了。
可是實際使用時,會發現Linux對Unicode的支援似乎不像Windows,
尤其是像影片檔的字幕(其實字幕比喻不很好,畢竟字幕的支援是看播放軟體的)。

其實同樣是Unicode,Unicode還是有分UTF-8、Unicode(UTF-16)...等,
在Windows上大部分都是使用Unicode(UTF-16)(也稱UCS-2),
不過在Linux上,似乎比較偏好UTF-8,
所以在Windows上看到的Unicode文件,轉成UTF-8之後就能夠在Linux上暢行無阻,
直接用Unicode,Linux似乎不是很歡迎~

最近的小心得~

2007年9月29日

Linux & RAID

比較有玩電腦的都知道,RAID可以容許硬碟故障,家裏的file server和nat最早都是淘汰的電腦組的,file server在一開始組的時候,只是因為mp3都放自己電腦的磁碟,別人不方便聽,而且別人聽mp3,複製個mp3,電腦就會lag,因此當時把淘汰的電腦拿來組file server。
當時組file server時,就是盡全力把所有能動的硬碟都往上面塞,反正廢物利用~後來硬碟不夠大了,開始針對它買硬碟,當時也都沒有想到硬碟掛了怎麼辦,只在想,哪會這麼衰,而且這幾顆硬碟耐操的勒~溫度50,60都沒事,哪是說掛就掛的~
這次暑假,更新gigabit網路,添購了gigabit網路卡、HUB和網路線(更新幾條線變成CAT6,預期這幾條線未來到10G頻寬應該都ok),誰知道K7的機器似乎不大支援Intel PRO/1000 Server Adapter,100M時沒事,1G就不行了~
我因此改了改CMOS的設定,擔心是CMOS設定的問題,誰知道這一改,反而就出事了~~
因為那台K7,裝了很多硬碟,我另外加了IDE擴充卡和SATA1擴充卡,CMOS設定一改,動到了PCI write cache, pci 2x之類的設定,結果SATA卡剛好在設定的插槽上,開進Linux之後,就亂動亂跑,結果聽聽mp3, 讀讀資料就彈出資料錯誤的訊息,然後硬碟資料就毀了~
受害者有SATA 80G和SATA 250G,裡面卡通mp3,無失真音樂檔,資料.............唉~~~

也因此全面更新file server主機板和建RAID的想法,暑假就砸了不少錢建起來了,目前這台電腦的硬體在新電腦中很初階,P5KPL-VM + E2140 + DDR2 667 1G................

說了半天終於要開始說重點了~~~RAID~~
要建立RAID,我一開始很猶豫要買RAID卡還是用Linux的soft RAID,結果在看了這兩篇的討論之後:
http://moto.debian.org.tw/viewtopic.php?t=6915
http://moto.debian.org.tw/viewtopic.php?t=4104

我發現除非買到超過6000的RAID卡,否則要有硬體RAID的支援,都是天方夜譚,連一些高級RAID卡,在Linux下也是靠soft,那何必用它呢?因此,我決定用soft RAID來建置file server的磁碟陣列。

話說Linux的soft RAID非常的有彈性,Linux的soft RAID是以partition為單位的,因此不像硬體RAID卡,它不需要使用整顆硬碟作RAID,只要每個磁碟都切出相同大小的partition(大小差一點沒關係),就可以組建RAID了,此外,也因為是partition為單位,SCSI、IDE、SATA都沒差,只要不在意速度的差異,完全可以混組RAID,這點~硬體RAID卡是作不到的,此外,硬體卡有個麻煩,如果是主機板內建,主機板掛了,資料就讀不出來了,除非找到同樣晶片的主機板來開機,如果是硬體RAID卡,要擔心卡片壞掉,壞掉一樣資料就讀不出來了,soft RAID則不,只要有Linux LiveCD,隨時可以把RAID掛載使用,不受硬體的影響。
而以我這邊來說,因為家裏的硬碟是陸陸續續買的,因此size有差,大部分都是80G的(本來有1顆60G,但RAID安裝上去後,就經常出現DMA error,之後RAID就顯示fail,因此換新了),1顆是160G的,其餘的主要就是這次新添購的3顆SATA 320G組成的RAID,分別是
80G x 3 + 160G => 240G RAID5 (160切剩下80G當Linux系統碟,按一般方式安裝Linux使用)
320G x 3 => 640G RAID5

至於前面提過的250G,目前閒置中,準備東征西討去跟別人copy卡通mp3,接著考慮網拍賣了改買320G,把320G RAID再提昇~

至於RAID的組建其實不難,剛開始不瞭解時會有些緊張,但是習慣之後就還好,我個人覺得安裝的部份,寫的不錯的是:
http://williewu.pbwiki.com/SoftRaid

至於損毀之後的加入動作也很容易,首先要知道的是,Linux的soft RAID會自己判斷硬碟是否損毀,判定損毀會自動把該磁碟自動設成fail和removed,之後只要將新的硬碟裝上去,進入系統,用cfdisk將RAID partition切割好(要確定有正確寫入唷~cfdisk最下面會顯示訊息,提示正確寫入,或需要重新開機),就可以用mdadm --add來把它加入了,加入之後,它就會自己rebuilding(過程和前面網頁教的,RAID1硬碟損毀時排除方法相同)~

中間要注意的是,rebuild的時候,不論是一開始建立還是換上新硬碟,過程中都不能關機或重新開機,必需要一直待在OS中,直到rebuild完成才可重新開機。

如果想體驗一下過程,我們也可以下指令,手動的讓RAID的特定磁碟發生fail、removed的狀態,當然,這情況下磁碟是好的,只是我們以下指令的方式,達到和真實的情況相同。

最後,RAID5的技術很有趣,不知道有沒有人想過,為何它的容錯技術,不論幾顆磁碟,都只需要花費1顆磁碟?
它其實滿神奇的,使用邏輯閘XOR,以1個bit來說,不論有多少顆硬碟,每顆的1個bit,假設是1,0,0,1,0,1,0,0,經過XOR計算之後,就只會產生1個bit的數值1,這是很巧妙的事,而當壞掉1顆磁碟時,同樣的,用包括XOR得出的那1個bit作XOR,又會反過來得出其中任何1個數值,達成容錯的效果。

2007年9月25日

UPnP Client

這篇算是接續前一篇,因為隨便搜尋就會發現,很多很多很多的人在問,有沒有UPnP tools可以很簡單的開port,有人要Linux版的,有人要Windows版的,因此我特別將miniupnp的UPnP Client抓出來圖文解說一下,心動的自己點連結下載,沒感覺、不瞭解、看熱鬧的..........隨意即可。
miniupnp的網站在http://miniupnp.free.fr/,在其中Download的頁面中,就有可以直接下載的連結。
連結中,Windows的部份直接就有提供編譯好的binary版本,省去了安裝MinGW,以及編譯的麻煩。
至於Linux部份,我直接下載source code,解壓縮後打make.....make install.....cp upnpc /usr/local/bin/ 就完成了,非常之輕鬆愉快~

以下是在Windows上執行的畫面,首先我們先執行看看,看長什麼樣子(備註:我已經先copy到C:\WINNT\system32\ 我是win2k系統):

我們可以看到,它有簡單而詳盡的說明。

接著我們可以用它來查詢目前UPnP Server開了哪些Port:

ㄟ~可以看到目前開了1個Port,是192.168.1.6的utorrent開的35050。

再來我們試著來開port看看,我們開TCP 11131和UDP 11142:


恩~看到了,我們成功的把port開出來了。

再來我們把它們刪掉:


簡單方便吧~這樣一來,只要有支援UPnP的NAT,不論是AP、Linux、FreeBSD,我們都可以輕易的開個port來用,而Client更是沒有顧忌,不論是Linux、FreeBSD、Windows,也都可以簡單方便的使用這個工具,ㄟ~MacOS目前我不清楚有沒有支援,不過MacOS和Linux、FreeBSD都很親近,我相信是有支援的。

最後補充一點,有沒有發現整個示範過程中,沒有出現任何的帳號、密碼,而且由upnpc建立的port,他的程式名稱也只是簡單的libminiupnpc,看起來很容易竄改的感覺。
沒錯~UPnP方便歸方便,畢竟是M$提出來的東西,但是目前的UPnP有很大的問題,就是安全性極差,可以在google上搜尋upnp和安全漏洞,一定可以發現,之前已經有人發出UPnP有嚴重的安全性問題,主要原因可能就在於目前的UPnP Server多半都沒有認證機制,像miniupnpd只有簡單的設定許可的網路區段,這在目前是很嚴重的問題,沒有大量的浮現,主要原因恐怕是目前大部分人對它技術還不夠熟悉,不過最近client已經有很多人寫出來了,我相信相關的病毒在不久的未來就會出現,不論是針對UPnP的DDoS,或者是病毒利用UPnP自動開洞進行入侵,我相信會出現的,可能再說這麼說得時候,已經有寫好的版本,只是還沒大規模感染或我不知道罷了。

新神兵利器~UPnP(miniupnpd)

說來有點遜,很久前就把UPnP弄上FreeBSD了,可是一直以來都怪怪的,對UPnP又不瞭解,也就一直放著爛~
UPnP在FreeBSD上得資料不多,永遠都是安裝libupnp和LinuxIGD,然後就是開MSN測試,話是沒錯,可是MSN怎樣都會上線,也只會顯示個你是透過UPnP上線,過程順不順利,完全不知道~

最近重新安裝Azureus後,發現它UPnP的部份很詳盡,對於成功、失敗、和Server的對談都有顯示,才發現UPnP已經掛點很久了~更進一步發現,LinuxIGD和libupnp在FreeBSD上根本不支援pf,因此重新搜尋相關資料。
搜尋後發現,BSD系列有另一套UPnP,而且整個程式很小,甚至被移植到Linux上,像是OpenWRT就有它的身影,它叫做miniupnpd。

miniupnpd設定不難,也就1個設定檔miniupnpd.conf,裡面設定也很簡單,也就設定WAN界面卡和LAN IP,還有allow的網路區段。
不過它很方便的是,它可以直接執行,用「-d」參數即可前端執行,然後就可以看到UPnP Client和它的對話,像是Azureus、MSN都很清楚~
最最重要的是,它在設計時,就是針對pf設計,所以對pf的支援性很好。

話說UPnP在Linux、FreeBSD上,幹嘛要跟防火牆配合?
這就是我一直不瞭解的部份,這次找資料後終於理解了~

UPnP它當然有它的規範,就像其他protocol一樣,他有自己的protocol spec,簡單的來說,UPnP Server其實是一個小型的應答器,走的是類似Web Server的protocol(根本就算是),對於Client,Client部份發出Request,UPnP Server則利用Web Server的對話方式,提供以xml檔案為基礎的對話內容。

在FreeBSD上,基本的UPnP Server設計很簡單,它的功能就是幫你作Port對應,而實際上,就像前面說過的,它本身只是應答器,所有的對應動作,它還是交給Firewall,因此UPnP Server要支援防火牆,針對特定防火牆下Port對應的指令,以miniupnpd來說,在BSD上支援pf,在Linux上支援Netfilter;而LinuxIGD+libupnp在FreeBSD上則是支援IPFilter(ipnat)。

此外,miniupnpd除了UPnP Server之外,也有開發UPnP Client,最重要的是,miniupnp整個講求的就是小,因此不論是Server還是Client,都很容易被移植,所以miniupnp的client支援Linux、FreeBSD、Windows(MinGW),而且Client還可以用來顯示目前UPnP Server的狀態(Server資訊和目前對應情況),這樣一來,任何時候要開任何Port,都可以很輕易的用Client程式對應,任何時候要查詢Server目前的對應狀況,也可以輕鬆的查詢。

2007年9月23日

FON & heartbeat


FON是一個理想,它希望透過大家共享的方式,在全世界將wireless建置起來,為此,它提供了便宜的wireless AP讓大家購買、使用,尤其在一開始時,它提供了免費的wireless AP(在台灣要165元運費),這一批wireless AP正如之前提過好幾次的,硬體還不錯。

可惜FON提供的軟體不夠好用,功能不夠強,因此很多人就開始自己編譯自己需要的Linux kernel供使用,大大強化它的能力。

麻煩的是,FON的AP便宜歸便宜,它要求你第一年一定要開機,並且隨時檢查你的開機狀態,只要你關機超過1個月,就會被寄信通知要你注意,一旦超過一定時間,就要你付賠償金,正因為這個限制,讓很多人不敢隨便的將FON亂刷,乖乖的用FON提供的軟體。

正所謂有需要,就有破解..................... = =||

國外有人將它的開機狀態檢查進行了完整的分析,其實它的開機狀態檢查很簡單,它利用Linux上的crontab,每5分鐘執行一次script,而script主要的功能,則是利用ssh client連線到FON的伺服器,連線之後一方面提供FON的資訊(MAC位址)讓伺服器知道是哪一台FON被檢查,另一方面則提供FON查詢是否有更新程式,有~則自動更新,這樣的開機狀態檢查行為,國外的人取了個巧妙的名稱,叫做「heartbeat」,也就是「心跳」。

因此,為了提供將FON刷成DD-WRT的人也能通過檢查,國外有人寫了simthefon,讓DD-WRT或其他FON也能夠發出心跳。

之前我一直很乖,FON都乖乖開著,只是改過了bridge mode而已,沒想到有次更改,把心跳改停了,加上那陣子正好換Hibet FTTB,家裏網路不大穩,過了一陣子就收到通知信了..... = =
那時候FON有開165元買天線的活動,我還因此差點買不成,讓我在刷完DD-WRT之後,毅然決然的改用simthefon。



simthefon的程式設定很簡單,它只是個script,程式最前面就可以設定幾個需要的變數,像是最重要的WLAN網卡MAC和LAN的MAC(預設是直接讀取環境變數,DD-WRT直接寫在環境變數中),其他也可以設定路徑。
接著就是放入/etc/crontab中定時執行。
在DD-WRT中,因為DD-WRT本身都是由web介面控制的,整個系統除了web介面的設定外,不大能儲存,因此它是寫成startup script,開機的時候將simthefon下載好,並把排程寫入到/etc/crontab當中。

如果是非DD-WRT,有一點要注意的,因為它的ssh client不是openssh-client,而是專為嵌入式這類小型系統而開發的SSH~dropbear的client程式,它叫做dbclient,如果要在Linux上執行,以Debian來說,我們要安裝dropbear,否則它會說欠缺了程式。

安裝方式如下網頁:
http://www.dd-wrt.com/wiki/index.php/LaFonera_Software_Heartbeat

而標題圖片就是FON上線的檢查頁面,這是我停掉一個FON的心跳後抓的圖。

家裡網路架構之變化-2(使用2個FON(Bridge mode與Client Bridge mode)建置無線網路)

話說FON真是好東西阿~那時候花330元買了2個(1個165元),現在覺得實在是物超所值,而且很後悔早知道就多買幾個了。

正如數個月前剛裝FON時說過的,FON硬體其實很不錯,就是軔體的設定莫名其妙,不能設置Bridge mode非常的麻煩,雖然說市面上很多AP也都是這樣,但是不方便就是不方便,這也讓我對市面上的AP很有些未知,如果要買,我還真的是不會挑,很怕挑到不符合需求的機器,我不能瞭解的是,Bridge mode是很進階的功能嗎?為何這明明是軟體的設定,AP卻不做進Web介面中,而且不讓你這麼設~~

話說家裏的wireless從PCI卡改成FON後,以往wireless不穩、容易斷線的問題統統消失了,不過話說回來,PCI的wireless好像是PCI2.1規格的介面卡,不知道會不會是因為PII-300不支援PCI2.1,所以才問題不斷~~

這次暑假家裏網路架構的變化,第2個比較大的,就是將第2顆FON從學校拿回來,然後設置成了Client Bridge mode。

在家裏的網路中,我爸的房間一直以來都沒拉網路線,一直都是用wireless,然後我爸房間事主臥房,會有個獨立衛浴,這增加了牆壁的數量,讓隔壁房間的wireless訊號到了我爸房間就可憐兮兮,而我爸使用的電腦,是舊式的精英攜帶式電腦,也就是做的很像筆電,但是沒有PCMCIA、沒有電池,使用桌上型電腦用的CPU、晶片組,因此價位上很便宜。
這台電腦因為很舊了,又沒有擴充槽,整台電腦能夠外接的部份,就是4個USB1.1和1個網路接頭,之前給它用USB wireless,可是信號一直很差,而且因為是USB1.1,USB1.1速度太慢,根本沒辦法上到802.11g,802.11b/g USB wireless卡還很貼心的跳出訊息說,因為只支援到USB1.1,因此將關閉802.11g,只使用802.11b來傳輸~
結果就是那台電腦網路很慢~慢~慢~
連開網路芳鄰傳檔案,都可以跳出是否強制關閉的訊息~

為了解決這個問題,我想到利用FON,把原本 有線->無線 的AP功能反過來用,改成 無線->有線 的功能,可惜設了很久都失敗,上網查了之後才知道,原來這樣的功能是一個特殊的模式,稱之為Client Bridge mode,而且最重要的是,FON內建的系統~不~支~援~
因此,我終於在使用了4個月後,將一台FON給刷了,這台FON徹底的違約了.... = =||

雖然FON內建的系統不支援,但是FON的第三方系統DD-WRT支援(講這麼文謅謅,就是說別人惡搞的FON Linux有支援就對了)。
所謂的Client Bridge mode其實是很特殊的模式,不過它在一些場合被使用,而且很方便,下面這張圖,是國外的網站解說Client Bridge的架構圖,我就公然的借用拉~
http://www.wi-fiplanet.com/tutorials/article.php/3639271

這就是Client Bridge mode,也就是說,網路的兩端不使用網路線來連接,直接用wireless的2個AP來連接,兩端可以各自接上多個網路設備、電腦,全部都在同一個網路中,下面這張架構圖則表示了更為複雜一點點的架構。
http://www.dd-wrt.com/wiki/index.php/Wireless_Bridge

這張圖的架構,可以想做兩層樓的辦公室,各有自己的網路,透過Client Bridge mode,可以讓2層樓的網路串連在一起,不但電腦間可以方便的連線,也只需要一條ADSL即可上網際網路。

Client Bridge mode的架構上,其實就是2台AP,一台AP是一般的AP,使用一般的AP mode,另一台AP則需要設為Client Bridge mode,之所以稱為Client Bridge,因為Client Bridge的這台AP以wireless的角度來說,它是Client,但是同時,它又有bridge的功能,讓有線網路的其他電腦可以透過它橋接在wireless上。

還記得舊版的XBOX嗎?舊版的XBOX本身是一台PIII-700的電腦,它有額外販賣wireless的模組,而且這個模組要價3000多元(新台幣),一般市面上的USB wireless都不能用,為什麼這麼貴?難道XBOX有綁wireless嗎?
不是~相反地,XBOX根本沒有wireless,根本不支援wireless,它的wireless模組好聽叫做模組,實際上就是一台道地的Client Bridge mode AP,而且只提供1個網路接頭,硬體上和FON非常接近,連大小都很接近,但是價格是FON的好幾倍。

因此事實上,在論壇中,的確有很多人拿FON接XBOX,也有人拿FON接網路印表機,變成wireless Network Printer,都很有趣~

喔~回正題,我前後花了約2周左右的時間,搞清楚了FON不支援,DD-WRT支援,膽顫心驚的刷了DD-WRT,測試了很久才發現DD-WRT的Client Bridge不是每一版都能很好的支援,經過多次測試之後,發現能很好的支援Client Bridge mode的最新版,是2007-06-20的版本,更新的版本,相同的設定都無法動作。

不過很不幸的,Client Bridge mode後面的電腦,無法使用PPPoE撥接,最近查了之後才知道,Client Bridge的bridge功能,不是單純的bridge,所以並沒有辦法像bridge一樣將所有網路protocol都傳遞過來,可能需要Client Bridge mode的AP上再設定一個PPPoE Relay,不過這部份現階段仍然沒有設定成功,2007-06-20這個版本的軔體,pppoe-relay似乎有問題,不然就是client bridge環境太怪異,pppoe-relay不支援。

家裡網路架構之變化-1(MPD+pf設定檔與心得)

FreeBSD PF 心得:

FreeBSD PF 推薦網址如下:
==================================================================
我的pf.conf的主體是參考
http://72.14.235.104/search?q=cache:uLgfqA9R6c4J:fangshen.hwai.edu.tw/%3Fp%3D24+freebsd+pf%E8%AA%AA%E6%98%8E&hl=zh-TW&ct=clnk&cd=3&gl=tw&lr=lang_zh-TW&client=firefox

這裡除了很簡要的設定之外,最下面的指令介紹我到現在還經常上google查
FreeBSD 5.3 Release PF 初體驗

這裡的防掃描偵測不錯,不過我沒用就是了,他的指令更完整....
http://netflow.kmseh.gov.tw/blog/index.php?op=ViewArticle&articleId=6&blogId=1
(失聯)

FreeBSD handbook的PF教學,這一定要看的,他的重點是跟你說kernel怎麼選會支援pf.....ALTQ有哪些~~~
FreeBSD 使用手冊 Chapter 27 防火牆

這篇很容易被查到,我好像看了好幾次了... = =||
他對pf的介紹還不錯
FreeBSD-我的 PF 學習筆記

這是大陸的善心人士,他們把pf的man 給翻譯成簡體了~
pf中文手冊(for openbsd,但同樣適用FREEBSD)
==================================================================

看的順序則建議如下:
==================================================================
先看handbook瞭解pf要怎麼編譯進去~~
FreeBSD 使用手冊 Chapter 27 防火牆

再來看介紹
FreeBSD-我的 PF 學習筆記

之後大致瞭解pf的架構(Macro、Table...等一堆的語法順序),接著需要個樣板,參考主體
http://72.14.235.104/search?q=cache:uLgfqA9R6c4J:fangshen.hwai.edu.tw/%3Fp%3D24+freebsd+pf%E8%AA%AA%E6%98%8E&hl=zh-TW&ct=clnk&cd=3&gl=tw&lr=lang_zh-TW&client=firefox

從主體中可以知道變數的定義方式,然後特別注意,有分單一的變數和多個的變數,接著可以這個,它對NAT、防火牆的定義講解的比較簡單,ALTQ一律先跳過,這東西每個人說得都不同,因為他有好幾種~
http://freebsd.ntut.idv.tw/document/freebsd_pf_nat.html

最後看上面或下面的網址,知道指令怎麼下
http://netflow.kmseh.gov.tw/blog/index.php?op=ViewArticle&articleId=6&blogId=1

而翻成簡體的pf man文件,則可以用來查
pf中文手冊(for openbsd,但同樣適用FREEBSD)
==================================================================

mpd可以先抄我的來改,之後再去看......基本上就是sample改的~

至於ALTQ.....我建議先不要用........
ALTQ很多人寫法差異很大,因為ALTQ是QoS的名稱....它裡面有好幾種演算法,每種演算法的設定參數和方式都不同.........

mpd.conf
startup:
# configure the console
set console port 5005
set console ip 0.0.0.0
set console user ycfu sister
set console open
# configure the web server
set web port 5006
set web user ycfu sister
set web open

#
# Default configuration is "myisp"

default:
#PPPoE Relay設定
rnew r1 PPPoE-in PPPoE-out
#載入PPPoE撥接設定
load PPPoE

#
# PPPoE client example (see also mpd.links.sample entry "PPPoE")
#

PPPoE:
new PPPoE PPPoE
set iface route default
set iface disable on-demand
set iface idle 0
set iface enable tcpmssfix
set iface up-script /usr/local/etc/mpd4/mpd_init.sh
set ipcp yes vjcomp
set link max-redial 0
set link mtu 1492
set ipcp ranges 0.0.0.0/0 0.0.0.0/0
set bundle disable multilink
set auth authname ooxxoox@ip.hinet.net
set link no acfcomp protocomp
set link disable pap chap
set link accept chap
set ipcp enable req-pri-dns
set ipcp enable req-sec-dns
set link keep-alive 10 60
open


mpd.links
#
# For our PPPoE connection, using Ethernte interface "fxp1"
# Often the service is ignored. If yours is required, replace
# the "whatever" string with your PPPoE service string.
#

PPPoE-in:
set phys type pppoe
set pppoe iface ste0
set pppoe service ""
set pppoe enable incoming

PPPoE-out:
set phys type pppoe
set pppoe iface ste1
set pppoe service ""
set pppoe enable originate
set pppoe disable incoming
PPPoE:
set phys type pppoe
set pppoe iface ste1
set pppoe service ""
set pppoe enable originate
set pppoe disable incoming


pf.conf
#===================== 介面與變數設定 ================
ext_if = "ng0"
int_if = "ste1"
out_bw = "20Mb" # 要做 QoS 要設定頻寬總量(總上傳頻寬20Mb)
in_bw = "100Mb" # 下載頻寬(總下載頻寬100Mb)
ack_bw = "19.6Mb" # TCP ACK 的頻寬設定(ack頻寬保留2%, 0.4Mb)
internal_net = "192.168.0.0/16"
ycfu_pc = "192.168.1.1" # 個人PC區域網路IP
file_server = "192.168.1.6" # 檔案伺服器區域網路IP
media_server = "192.168.1.7" # MediaCenter區域網路IP

# 表格區,同上也是變數定義,但可以定義多個位址
ftp_port="{21,2201,20021}"
# Linux aMule
linux_amule_port = "{4712, 4662, 4665, 4672}"
windows_emule_port = "{4771, 4772, 4775}"
windows_telnet_ssh = "1024"
bittorrent_port = "1045"
windows_vnc_port = "{7800, 7801, 7802, 7803, 7804, 7805, 7900, 7901, 7902, 7903, 7904, 7905}"
file_nx_port = "5901"
media_nx_port = "5902"
web_port = "{1000, 1001}"
bbonline_port = "{2927, 2896, 2897, 2898, 2899}"

# 針對 Echo Request 即 icmp type 8 如 ping 做出回應
icmp_types = "echoreq"

#===================== 選項設定區 ================
set loginterface $ext_if
#set optimization normal #一般的網路環境
#set optimization high-latency #高反應時間的網路
set block-policy return
set limit { states 30000, src-nodes 30000, frags 15000 }

# scrub 重新整理
scrub in all
scrub out on $ext_if max-mss 1452 # PPPoE 時,MSS (Maximum Segment Size) 的設定

#===================== ALTQ QoS ================
# Queueing: rule-based bandwidth control.
#altq on $ext_if bandwidth 2Mb cbq queue { dflt, developers, marketing }
#queue dflt bandwidth 5% cbq(default)
#queue developers bandwidth 80%
#queue marketing bandwidth 15%

# TCP ACK 設置
#(因為上下傳不對稱,當上傳滿載時就會影響下載)
#(原因在於 TCP「下載」時,需要回應「上傳」ACK,上傳已經滿載了,ACK自然送不出去)
#(透過 ALTQ QoS,我們可以設定 TCP ACK 有高於所有封包的優先權)
#關於 TCP ACK 可以參考:http://www.chweng.idv.tw/swintro/cfos.php
#關於 pf ALTQ 設定 TCP ACK 可以參考:http://www.benzedrine.cx/ackpri.html
#(測試中)
altq on $ext_if priq bandwidth $ack_bw queue { ack_pri, def_pri}
queue ack_pri priority 7
#queue ssh_pri priority 2
queue def_pri priority 1 priq(default)

#altq on $ext_if priq bandwidth $out_bw queue { max_out }
#queue max_out priority 2 priq(default)

#queue file_server_p2p priority 1 priq # File Server 的預設優先權最低 (限制 P2P 用)
#queue file_server_std priority 2 priq # File Server 的其他 Port 優先權一般
#queue default_std priority 2 priq

#altq on $ext_if priq bandwidth $in_bw queue { max_in }
#queue max_in priority 1 priq(default)

#===================== NAT 設定區 ================
# 基本設定
nat on $ext_if from $internal_net to any -> ($ext_if)

# Port 對應
# rdr: packets coming in on $ext_if with destination $external_addr:1234 will
# be redirected to 10.1.1.1:5678. A state is created for such packets, and
# outgoing packets will be translated as coming from the external address.
rdr on $ext_if proto tcp from any to any port $linux_amule_port -> $file_server
rdr on $ext_if proto udp from any to any port $linux_amule_port -> $file_server
rdr on $ext_if proto tcp from any to any port $bittorrent_port -> $file_server
#rdr on $ext_if proto tcp from any to any port $windows_vnc_port -> $ycfu_pc
rdr on $ext_if proto tcp from any to any port $windows_telnet_ssh -> $ycfu_pc
rdr on $ext_if proto tcp from any to any port $bbonline_port -> $ycfu_pc
rdr on $ext_if proto tcp from any to any port $file_nx_port -> $file_server
rdr on $ext_if proto tcp from any to any port $media_nx_port -> $media_server
rdr on $ext_if proto tcp from any to any port $web_port -> $file_server

# IP 對應
# 參照: http://blog.chinaunix.net/u/10047/showart_218183.html
#web_serv_int = "192.168.1.100"
#web_serv_ext = "24.5.0.6"
#binat on tl0 from $web_serv_int to any -> $web_serv_ext

# 解決 FTP 問題
# 參考 http://www.chinaunix.net/jh/5/879515.html
nat-anchor "ftp-proxy/*"
rdr-anchor "ftp-proxy/*"
rdr on $int_if proto tcp from any to any port 21 -> 127.0.0.1 port 8021
anchor "ftp-proxy/*"
#antispoof for $ext_if inet

#===================== 防火牆規則區 ================
pass in all
pass out all

# 搭配 ALTQ QoS 的防火牆設定
#block on $ext_if proto tcp from any to any # 先將所有 TCP 封包擋住,之後兩個再作 QoS
pass out on $ext_if proto tcp from $ext_if to any flags S/SA keep state queue ( def_pri, ack_pri )
pass in on $ext_if proto tcp from any to $ext_if flags S/SA keep state queue ( def_pri, ack_pri )
#pass out on $ext_if proto tcp from any to any port 22 keep state queue ssh_pri #無作用

#pass out on $ext_if proto tcp from 192.168.1.6 to any port $linux_amule_port keep state queue p2p_pri
#pass out on $ext_if proto tcp from 192.168.1.6 to any port $bittorrent_port keep state queue p2p_pri

#pass out on $ext_if proto { tcp, udp } from $file_server to any queue (file_server_p2p, file_server_std)
#pass in on $ext_if proto { tcp, udp } from any to $file_server queue (file_server_p2p, file_server_std)
#pass out on $ext_if proto { tcp, udp } from $ext_if to any flags S/SA keep state queue ( max_out )
#pass out on $ext_if proto { tcp, udp } from any to $ext_if flags S/SA keep state queue ( max_in )

# block all incoming packets but allow ssh, pass all outgoing tcp and udp
# connections and keep state, logging blocked packets.
#block in log all
#pass in on $ext_if proto tcp from any to $ext_if port 22 keep state
#pass out on $ext_if proto { tcp, udp } all keep state

# pass incoming packets destined to the addresses given in table .
#pass in on $ext_if proto { tcp, udp } from any to port 80 keep state

# pass incoming ports for ftp-proxy
#pass in on $ext_if inet proto tcp from any to $ext_if user proxy keep state

# assign packets to a queue.
#pass out on $ext_if from 192.168.0.0/24 to any keep state queue developers
#pass out on $ext_if from 192.168.1.0/24 to any keep state queue marketing

家裏網路架構之變化-1(改用MPD+pf)

話說前陣子辦了中華電信的FTTB之後,速度真的是快非常多阿~~
不比較還好,一比較就深深地為東森(亞太)那爛到爆炸的網路品質感到非常不爽,之前竟然可以忍耐這麼久,人真是容易滿足.... = =||
辦了中華電信的FTTB之後,發現之前的NAT主機(PII-300 64MB RAM FreeBSD 5.5-STABLE)不太夠力了,這真的是讓人感到不可思議,因此打算更換電腦,目前已經更新完成,換成了前任桌機K7度龍800,並且make world將FreeBSD更新到6.2-STABLE。
這次換FTTB之後,之前的網路設定幾乎重新設定了,在使用東森時,因為是用DHCP,不需要PPPoE撥接,這也是我遲遲不願意換ISP的主要原因,畢竟要將設定上手,要一點時間,這會造成網路無法使用的窘境。
原本使用東森時,使用DHCP取得IP,並使用IPFilter來建置NAT防火牆,現在則改為使用MPD進行PPPoE撥接,並使用pf來建置NAT防火牆,雖然IPFilter已經是kernel級的NAT了,可是它不具備QoS的能力,而pf是FreeBSD自5.5開始,從OpenBSD移植來的防火牆,它提供ALTQ來進行QoS的管制。
這次的設定更新其實很循序漸進,一開始先使用FreeBSD內建的ppp進行PPPoE撥接,並使用內建的NAT功能(使用最早期的natd完成),但是它是使用者層級的PPP撥接程式,它的NAT(natd)也是使用者層級的防火牆,很吃系統資源,因此逐步改為MPD+IPFilter,之後再改為MPD+pf。

升級到pf之後,照例對QoS進行些微設定,參照了
http://www.chweng.idv.tw/swintro/cfos.php
http://www.benzedrine.cx/ackpri.html

這兩個網頁後,簡單的對TCP ACK進行優先權設定,看起來是有點效果的,至少chw來時,我問他,然後當場用2個FileZilla對ftp.adsl.hinet.net進行上傳和下載,下載能夠維持在全速,上傳則會浮動的變化,這看來應該就是有效了~

再更新了軟體之後,這時候自然而然的,會想知道全速下載、上傳時,系統的負載量如何~
很驚人的,出現了令人意外的情況。
在PII-300的電腦上,當全速在下載時(每秒1.1~1.2MBytes),使用top來監測,發現雖然系統的Load幾乎都是0.0x,可是CPU的interrupt竟然高達30%,甚至出現過40%,這表示當全速在下載時,FreeBSD的系統中,CPU有1/3甚至到接近1/2的時間都在進行中斷操作,這是否意味著CPU花了大量的時間在切換kernel mode和user mode?
因此,我決定更新電腦,因為在10M/2M的寬頻中,10M的下載速度(1.2MBytes)就會讓CPU這麼忙碌了,如果未來更新到20M、30M、50M甚至100M時,PII-300似乎是無法擔負這樣的工作量了。
現在更新到K7之後,在全速下載時,CPU的interrupt降低到了10%上下,大約是9%~11%之間跳動,情況好了很多~
不過我也想了一下,interrupt的數量可能並沒有減少,但是因為K7-800的時脈比PII-300高了2倍~3倍,有可能因此讓interrupt佔據CPU的時間相對減少了1/3。

此外,在使用了MPD之後,現在使用MPD最新版本4.3版後,也增加了新的功能,那就是PPPoE-Relay。
所謂的PPPoE-Relay,它和DHCP Relay類似,它們都可以將網路protocol的資訊進行轉發,PPPoE Relay可以將PPPoE的訊息轉發出來,而DHCP Relay則可以將另一個網路段的DHCP Server資訊轉發到這個網路段。
PPPoE Relay的功能簡單的說,就是可以讓NAT下面的電腦,也可以進行PPPoE的撥接,這樣一來,只要我想要真實IP,我可以在任何時候,用中華電信的撥接帳號、密碼,直接用PPPoE撥接來取得真實IP,而且這樣的操作,不會影響到目前的工作,像是網路芳鄰...等,都不會因此斷線,MSN則是會瞬斷後重連。

中秋節快樂......

又很長一陣子沒發文了~
這段時間,尤其是暑假期間,做了很多事情,這些事情都想著等全部完成再來寫,結果是都沒寫~ = =||

這次趁著中秋節期間,把幾篇寫出來吧~

2007年7月3日

變形金剛、美國現況與世界工廠

這次週末和難得從美國回來的當兵同學一起去看變形金剛。

變形金剛不愧是夢工廠的作品,相當的好看,個人覺得還頗好笑,片中有相當多的橋段諷刺美國的現況。
一個有趣的橋段是,在前線的特種部隊被壞的變形金剛攻擊,經過一番波折終於找到一隻手機,立刻撥電話到美國國防部要求增援,緊接著它用分割畫面來表示接電話的另一端,不是美國國防部,而是一個印度阿三,此時印度阿三用著純正的美國腔,一手修指甲一手接電話,並慢條斯理的問它,你現在的電話是需要付費的,你是否要用信用卡付費?是VISA還是Master?然後又問,需不需要使用折扣方案...etc,經過了好半天才轉接到美國國防部。
看得出來導演對於美國的產業外移並不喜歡,提個橋段來諷刺美國的產業都外移到印度去了,連接個電話的工作都在印度。
其實現在全世界的先進國家都面臨了相同的問題,台灣也是,產業不外移,大環境的競爭拼不過,公司遲早倒閉,產業外移了,一個國家除了空殼外,還剩下什麼?
反過來想想,不斷的外移,導致依賴性變得很高,就像吸毒一樣,一旦對方獅子太開口時,該怎麼辦?
目前我們親愛的扁政府,限制產業外移,卻導致產業都偷偷地跑光了,這次小馬哥提出的經濟統一,將高科技產業留下,我個人是十分的支持的,事實上就是如此,讓市場回歸到市場機制,沒有一個電子公司會願意無私的將最完整的科技放在大陸,就好像現在最常見的情況是,日本現在不製造了,他們全力在設計、研發,製造交給台灣,台灣負責cost down之後大量生產,以台日合作,來和韓國的三星這樣的超大型公司競爭,在這樣的策略聯盟下,我依然不相信日本會無私的將最最先進的技術交給台灣,除非日本認為台灣自己有能力做,只是不願意花時間、金錢,或者日本根本就認為台灣不可能設計得出來。
因為今日的盟友,可能會變成明日的敵人,所以一定會有些妥協和堅持。
大陸也是一樣,大陸是全世界的製造工廠,但是各家公司都不會把公司最新進的技術放在那裡,一定會透過一些方式來控管。

2007年6月29日

USB Sniffer試用心得

又好陣子沒發文了,最近的新聞是,我決定延畢,按部就班的來做論文。

這次要介紹的是USB Sniffer。

前言:
說到USB,USB在最近十分的熱門,尤其是嵌入式的領域,有不少USB的專書,分析背後的原因其實很簡單。
USB因為非常普及也非常方便,所以現在十分的熱門,可是USB的架構並不簡單,這樣想吧~USB只有4根接頭,扣掉2根電源(+和-),傳輸資料就只有2根,可是USB卻支援了包括隨身磁碟、鍵盤/滑鼠、webcam/攝影機、印表機、麥克風、喇叭...等,每種的傳輸協定都不同,USB卻只靠2根接頭全部搞定,它的設計並不容易。
稍微看它的架構更誇張,USB本身是硬體的匯流排介面,根據我們所學,匯流排介面不是串聯就是並聯,它只有2根,硬體連接必定是串列介面,然而它的flow和model卻是以網路的架構去設計的,因此還有HUB這樣的介面,要搞懂它老實說,是需要網路架構的概念的,這在1995年設計時,要理解真的不容易,畢竟會搞匯流排的,多半是硬體的工程師,要他們理解網路架構,是有難度的。
至此USB介紹到一段落,這次因為想要在Linux上使用HP PSC 1315的事務機,雖然掃描/列印都已經有driver,都可以動作了,但是上面的「SCAN按鍵」卻不支援,因此打算自己來搞搞看。
看了討論後,發現要搞這個,要知道「SCAN按鍵」的溝通訊息,而這個訊息目前只有HP的應用程式知道,因此我們需要想辦法知道這些溝通的「密語」,因此開始找USB Sniffer的軟體並練習使用它,也就是這篇了。

USB Sniffer:
在Windows上使用USB Sniffer,看起來大家都推SnoopyPro,這是一套OpenSource軟體,使用方式很容易,如下即可:

1.
下載SnifferPro軟體,目前為0.22版
它只有一個檔案,找個喜歡的地方放置即可
接著執行它

2.
執行後可以按「F2」或從選單「View->USB Device」執行(第一次執行時,會自動開啟USB Device視窗)

3.
在USB Device視窗中,會看到一大堆裝置,我們先不管它,因為還有更重要的事情要做
執行選單「File->Unpack Drivers」,正常會出現「Driver were successfully unpacked...
這步驟非常重要,它會把USB Sniffer的Driver解壓縮到目錄,目錄我猜想是WINDOWS目錄下的system32吧,目前不清楚

4.
接著要準備「竊聽」USB裝置了,首先要知道要竊聽的USB裝置是誰
以我的隨身碟為例:
我把隨身碟插入之後,到「裝置」去看看(我的電腦按右鍵選內容->硬體->裝置管理員)(這是WinXP的位置)
在「通用序列匯流排控制器」中,會看到「USB Mass Storage Device」,在「USB Mass Storage Device按右鍵選內容->詳細資料

在詳細資料中,我們可以看的是「裝置例項識別碼」或「硬體識別碼
以我的隨身碟來說,它們是:
裝置例項識別碼:
USB\VID_0CF2&PID_6220\606569746801

硬體識別碼:
USB\Vid_0cf2&Pid_6220&Rev_0100
USB\Vid_0cf2&Pid_6220


回到剛剛SnoopyPro的USB Device,找找看「USB\Vid_0cf2&Pid_6220」,BINGO~就是它了~

5.
這時候在它上面按右鍵,點「Install Service」(目前不清楚作用如何,但建議第一次要操作它)
接著再在它上面按右鍵,點「Install and Restart」,它會做兩個動作:
1.安裝Sniffer在這個裝置上(還沒開始竊聽它)
2.執行移除/插入的動作(插入後開始竊聽)

6.
此時順利的話,按下右上角的「X」把「USB Device」關閉
SnoopyPro的主視窗應該會有個「USBLog1」的視窗開起來,然後packet的數值慢慢跳,這就是擷取到的封包數量
此時可以按下停止,它就會顯示出所有封包的順序、方向、時間、function的名稱、資料內容。

參考資料:
SourceForge.net: SnoopyPro - Some info to get started
SnoopyPro-HOWTO

2007年5月31日

CF 磁碟上線

這個標題這樣下,想必會看的人很少很少很少~~~

不過不重要,這本來就是寫給自己自high的~

計畫了兩~三年,一直以來CF的價格和速度始終無法讓人接受,現在終於實現了~

多說無益,直接看系統紀錄,如下:
ad2: FAILURE - SETFEATURES ENABLE RCACHE status=51 error=4
ad2: FAILURE - SETFEATURES ENABLE WCACHE status=51 error=4
ad2: FAILURE - SET_MULTI status=51 error=4
ad2: 1943MB [3949/16/63] at ata1-master PIO4
Mounting root from ufs:/dev/ad2s1a

前面幾行 FAILURE 就自動略過吧,簡單的說,目前這張CF卡的DMA,FreeBSD在辨識上有問題,因此我把DMA關了。
後面一行才是關鍵:
ad2: 1943MB [3949/16/63] at ata1-master PIO4

我買的是Transcend 266X 2G CF記憶體,搭配之前買的CF-IDE轉接卡,還算順利的讓它上線了。

這張CF還不錯,有直接提供DMA,雖然FreeBSD還有問題,但我會嘗試解決看看,用DMA速度真的快不少,整體感覺還不錯,少了硬碟聲音,感覺很棒~
目前先觀望看看,看看使用上會不會有壞軌的情況,如果一切順利,到8G價格下來時,應該會考慮用8G來替換Media Center上的系統碟,然後將磁碟全部移到File Server上,看看散熱會不會有所改善~

2007年5月30日

中華電信FTTx之我見

最近線上詢問中華電信,發現我家可以牽FTTx,因此二話不說,趕在6月前申請(5/1~5/31有優惠,6月後會改為NCC的公定價1300)。

申請時就覺得納悶,明明是FTTx了,為啥需要電話呢?
又,我同學申請後說,他實際上是會提供VDSL的分享器,因此好奇到底是什麼情況,經過Google之後,我終於了解中華電信所謂的FTTx了。

FTTx,又可以稱之為光纖網路,速度非常優,以中華電信經濟型方案來說,有10M/2M(上傳/下載),可以說是相當快的速度,而且人人都知道光纖是未來趨勢,日本已經有許多光纖到府的服務了,速度也都非常快。

中華電信的FTTx其實不能算是光纖到府,他的架構實際上還是xDSL(ADSL是xDSL的一種)系列的一種。

中華電信的電話,實際上就我們關心的,就是機房和機箱,可以這樣說:

中華電信有網路中心,網路中心很多個,骨幹牽到網路中心,這段目前來說,應該會是光纖、海底電纜、衛星通訊...等。
網路中心再和各地機房以網路相連,以目前來說,這段幾乎都是光纖了。
而機房到你家,則是先連到機箱,也就是外面看得到大大的立在地上的鐵盒子,上面用油漆彩繪中華電信的東東,這段,以電話線(銅線)為主。
機箱到你家,則是電話線(銅線)拉進大樓,大樓的配線拉進家裏,大樓的配線,則是在蓋大樓時,建設公司配好的,當時(舊大樓)請中華電信拉的。

因此目前要推光纖網路,之前很多ISP要推無法推,主要問題在於機房到機箱以及機箱到你家這段,早期都是中華電信拉好了,現在ISP要拉,除非自己另外申請挖馬路,否則不可能建設出來,但是現在民意高漲,大家都不喜歡看到馬路被亂挖,台北市還規定挖馬路要有流程,要事先申請,時間多長、距離多遠、挖的時間一堆規定,甚至新鋪設的馬路,幾個月內還不準挖,因此問題很大,最後結果是,只能找中華電信借電話線,然後賣ADSL.........

現在呢?中華電信要推的FTTx和所謂的光化大樓是啥?

中華電信的FTTx其實不是光纖到府,實際上走的還是電話線,差別在於:
中華電信現在將機房到機箱這一段,由電話線改拉光纖,如此一來,從骨幹到機箱都走光纖,可以算是光纖網路,而機箱到大樓這段呢?因為牽涉到大樓的配線,因此還是傳統電話線,不過因為到機箱都是光纖了,因此這段的距離很短,可以改使用VDSL。

VDSL的特色是,他的速度範圍很大,最快可以到50M/50M,最慢則可以到1M,速度一樣由距離決定,和ADSL相比,VDSL的距離影響更大,距離越長,速度掉得越兇,以中華電信網頁的解說,他的距離限制大約是500M~600M左右,和ADSL上到KM,是有很大的差別的。

因此,中華電信的FTTx,實際上還是電話線,但是電話線的距離更短了。

至於光化大樓,就真正是全光纖網路了,所謂光化大樓是說,現在新的大樓,在蓋大樓時,裡面就已經請中華電信、台灣固網...等ISP,在配線時直接配光纖,因此到大樓裡面都是走光纖,前段的機箱就都不用說了。

結論,中華電信的FTTx,不用懷疑,他還是電話,如果你家本來就是ADSL,他說不定只是去幫你把ADSL的機器換成VDSL的機器,其他完全沒變,也都還是使用PPPoE的撥接。
要完全光纖到府,看來是還要等等了~

2007年4月28日

壓力很大阿~

話說最近情緒很不穩,我終於很深刻的體會到,在我壓力很大時候會有的現象了~
原來我在壓力很大的時候阿,是會焦慮的,發這個blog時正是,想找個地方po,哪裡都不合適,就發來這了~

話說論文沒題目,週一要繳第一次口試的申請了,現在還在磨題目,很囧阿~

不過這篇重點不在這.... = =||

話說我因為同學看XEN,看他的Roadmap,赫然看到xenfs的發展,今天去之後發現,對方並不是一個term,而是一個可憐的博士生,今年做到第三年~

我在想阿,是否可以跟他一起玩下去,我看看有沒有辦法在XEN上搞分散式檔案系統。

就降~以上~

2007年4月14日

FOXY(P2P)與VMWare

話說VMWare這類的虛擬機器軟體免費了,VMWare Server在單機單一VM的情況下,效率很不錯(這是我同學說,稍後解釋),因此VMWare有個不錯的應用.....。

VMWare Server目前是免費的,我同學的論文題目是研究Xen,Linux上一套效能非常好的虛擬機器軟體,他經過測試後,證明了Xen的效能比VMWare Server好非常多,主要是在多虛擬機器的狀況下,特別明顯,因此我們可以大膽的認定,VMWare Server果然是VMWare Workstation和VMWare enterprise的縮減版,將最佳化都拿掉了(最近發現,不會解釋時,就可以用最佳化來帶過... :p)(這邊的最佳化指的是,可能有將多虛擬機器時的排程之類的演算法去除了)。
不管如何,在單機單一虛擬機器的前提下,VMWare算是相當好用的。 :p

話說FOXY這類P2P,最近有安全上的問題,而我在學校,針對IP有流量和連接數的限制,VMWare在這時候就很方便了。
VMWare可以簡單的安裝在Linux上,而且不需要開在前景,只需要背景執行,透過client程式就可以連進去了,而且client設計非常好,跟在本機端一模一樣,所有本機的功能幾乎都可以透過client來動作。
Linux一般來說,還是大部分人不會想碰的系統,長期以來,很少有人看到Linux之後,會想去碰碰他的,當然.....我或是一些Linux的常客例外..... :p
加上沒有畫面,根本不用擔心看到在幹嘛~

而VMWare安裝好後,直接就幫你設定好bridge的能力,只需要簡單的點選,就具有bridge的功能了。
因此,我們只需要切割2G的空間裝win2k,安裝上我們常見或喜歡的P2P軟體,搭配上Samba或網芳其他資源分享,就可以輕易的做到VMWare跑BT,檔案放在其他電腦上或Linux磁碟中。
這樣的好處在哪裡?
1.可以在只有Linux的環境下,按照正常的操作需求去使用BT...等P2P軟體,不用搞個WINE什麼的鬼東西,我搞了這麼久,也只能透過WINE執行uTorrent,而aMule和Azureus還是我的次要選擇(這兩個,都不讓我太滿意,Azureus資源吃得很兇,aMule實在沒有標準的eMule或帶Mod的eMule好用)哩~
2.VMWare內的磁碟,是透過模擬的方式讀取本機磁碟的一個Image或一個磁區,效率差很多,網卡則相對單純,效率應該會高不少(自己認為的,目前沒依據,但我覺得寫網卡的虛擬驅動程式比磁碟分享或Image操作,他的效率要高很多)。
3.VMWare內的電腦,只有單純的P2P,沒有太多額外程式,根本沒有其他服務,被破的機會小,就算破了,還要透過網芳才能得到資料,網芳,是有獨立設置權限的。
4.以學校來說,會鎖IP,沒關係,因為是bridge,所以可以連進去改設定、改IP,而且說句搞笑的,VMWare可以另外設定網路卡卡號,當然,這僅是針對沒有使用高階Switch的環境,如果是port對應網卡卡號,而且開學時要用申請來開放,是有困難的。
5.換機器動作簡單,當電腦要重灌,或有不可抗力的因素要改變執行環境時,只需要把虛擬機器關機,把檔案複製到其他地方,執行VMWare並套用進去,設定完全不用動,一模一樣跑給你看,很適合擺地攤的夥伴們。 :p

此外阿~VMWare我也曾經拿他來當做測試機台,之前要try Trace32,當時已經是要做說明文件了,Trace32已經摸很熟了,為了有乾淨的環境,我直接用VMWare,搭配他的USB功能(這很多人不知道唷... :p),可以很方便的將環境在虛擬機器中實做,這樣最方便的好處在哪?
當你今天的工作,是Embedded System上的操作,那個環境的建立可能不是很簡單,至少也要搞個幾周的時間才生得出來,今天你透過VMWare,可以輕鬆將完整的環境重現,不會有重灌的困擾。
更有甚者,可以將建制完成的環境,將他的檔案備份下來,接著就是複製給別人用即可,省去了每次都要建構環境的麻煩,最讚的是,不論你是用Windows,或是Linux,只要VMWare設置得宜,都可以跑出最適合的操作環境供開發。

2007年4月1日

耳擴真的需要嗎?

最近學校的學弟在研究耳擴(耳機用擴大機),十分專業的在看USB的音效盒(不好意思,請容我用這麼膚淺的名詞,我不知道他們專業的名詞是啥... = =||)以及耳機用的擴大機,甚至隔壁實驗室學弟的USB音效盒還是買套件自己焊接的(更換上面的零件)。

對此我實在有點無言,我認為砸錢買喇叭是有必要的,我個人在數年前是買Abit的SP50,至少在當時,SP50的評價相當優秀,也花了我8000大洋,可是對於耳機,我就不認為有需要買這麼好的了。

耳機會傷耳朵,這個大家都知道,儘管耳機能夠聽到聲音細微的部份,但是就是會傷耳朵,耳機怎麼找都只有2聲道,而且耳機的性能是型錄上直接看得到的,為了一個耳機,去買USB音效盒和耳擴,我不能理解,要好好聽音樂,就買多聲道的好喇叭阿,為何要這麼辛苦的買耳機加上一堆配件,耳機要做小,對於音質本來就很受限,還去搞這些實在很怪。

還有重要的幾點,我以往買過的耳機,沒有一個能夠安然的撐過數年的,到了最後都給我斷線,對於耳機,我認為它根本是耗材,而且耳機用久了音質會變差,這也不是什麼新聞,加上耳機的使用環境多半是在外面,什麼時候用?
騎車時你會希望耳機聲音不要過大,能夠聽到外面的情況;和朋友出去時,你會希望和朋友聊天、打屁、打牌,一個人聽耳機根本是孤僻;一個人在車上聽音樂,也許有點說得過去,但是在車上要等這麼久,為什麼不乾脆睡覺,要睡覺,戴耳機聽音樂也大有問題。
結果搞了半天,聽音樂的最佳時機竟然是工作時或一個人當宅男時,但是這時候,如果許可,我會希望聽喇叭,而不是耳機,而且的確有需要注意外面情況,不論是同事(同學)或其他事情。
另外,耳機使用時間多半是方便,為此還要搞個耳擴,這很奇怪,難道走到哪裡都要用耳擴嗎?像在車上,有插頭讓你插耳擴嗎?
USB音效盒也許說得過去,畢竟每台NB情況不同,遇到像我這台AT23,它用的音效晶片很破爛時,就很有需要用USB音效盒了,可是對音效盒,我不認為買台製或套件的會比較好,我比較傾向考慮創新未來(創具)這類的廠牌,我不知道上面的電容、電阻、電感對聲音影響有多大,不小我是不否認,但是既然是「USB音效盒」,它的問題就不只有電容、電阻、電感,問題更大是來自於它用的音效晶片,裡面DSP是否做得好,晶片好,用料好(電容、電阻、電感用的好),那麼這個「USB音效盒」才叫做好,這樣的東西不是沒有,當然有,創新未來就有推出這樣的產品,而且號稱24K鍍金材質,一個要價6xxx。
而且它能夠直接支援5.1甚至現在新的7.1聲道,我認為這樣的音效盒才是好的,因為它的整體設計,就是為了有較好的品質而做的。
如果是傳統的擴大機,我相信用料和音質是大有關系的,畢竟材料好壞的影響是不容小看的,但是當牽涉到「電腦元件」時,像是DSP IC、USB IC,我認為這時候用料不再是唯一的考量或問題,整體設計才是關鍵,當你買套件自己焊接時,你能保證它的元件非常好嗎?你又沒辦法換其他DSP IC,你又能保證你焊接技術優異,比機器焊得效果好嗎?當影響因素很多的時候,我相信一分錢還是一分貨,真的有決心要讓NB的音效飛上天,砸個6xxx買個USB音效盒吧,至少它能保證你未來的所有NB都能使用,音質也頗為優異,沒有這麼多小朋友,又或者認為僅僅針對NB沒這個必要,那還是乖乖的投資在多聲道喇叭,和中等價位「耐用」的耳機吧~

夏天到~家庭計劃開始

夏天即將要來了,雖然說下週二又要轉冷,可是夏天的例行計畫又要開始了。

每到夏天,就有兩項計畫要開始:
一個是蟑螂計畫
一個是散熱計畫

先說散熱吧,因為今年對散熱沒什麼大計畫,去年換了機殼,給file server加了風扇,問題看起來是改善了些,現在問題最大的,就是客廳的Media Center了.... :~~~

Media Center在去年給我熱爆了一顆160G硬碟後,我將硬碟從Media Center「裡面」移出來了,現在算是外接的狀態,沒想到昨天看個錄影的Discovery,看到一半硬碟就給我熱當了.... = =||
現在搞得我也不知道怎麼辦才好,因為它是外接式IDE,根本找不到這樣的外接盒,加上目前用的硬碟也是IDE的,更是難搞,我是不想因為這樣硬是讓它用USB,USB當開機磁碟,有沒有搞錯阿,穩定性行不行阿~
目前的計畫很詭異,而且滿花錢的,還要從長計議,目前是打算用IDE2SATA轉接頭(600)加上SATA外接盒(至少要內建8cm風扇)+SATA硬碟,但是這樣的配法,三樣都要買,連硬碟都要換,這反而讓160G無處用了,整個問題看起來麻煩了些,還在計畫中,先畢業再說吧~

至於蟑螂計畫,是我目前主要要考慮的,家裡的蟑螂,已經搞到我老妹都受不了了,你能想像在客廳看電視,有蟑螂陪你看的感覺嗎~
你能想像廚房裡,蟑螂在炒菜鍋裡對你微笑嗎?
這實在是很可怕的事情,我本來是打算畢業後再說的,但是~它已經讓我沒辦法迴避了~

每年夏天,都會施行蟑螂作戰,幾乎是從前年開始的吧~
每次都買誘餌,好像有些些效果,還是心理作用,不瞭解~但是還是這麼做。

今年打算朝幾個方面下手,首先,我家是大樓,我在奇摩知識看到有人說蟑螂會從排水孔爬出來,我是頗相信的,雖然我沒看過有蟑螂從排水孔爬出來,但是有看過爬進去的,而且大樓排水孔大都是相連的,會爬出東西我一點都不意外。
剛好看到了這個,看看後就給它買下去了,不管蟑螂會不會從裡面出來,用上它至少能保證一個來源是安全的,而且要不是有看到,我還不知道有這樣的好東西哩。

另一個就是垃圾桶,因為家裡的垃圾多半是食物,多半直接丟廚房,多半廚房的垃圾桶裡外蟑螂都不少,這次決定把廚房的垃圾桶換成腳踏式的,強制加蓋,這樣應該可以解決垃圾桶的蟑螂問題。

接著我打算嘗試在家裡做廚餘分類,之前一直都沒做,直接丟垃圾桶交給大樓收垃圾的,但是這讓蟑螂橫行,考慮弄出(買或找出來)廚餘桶,並嘗試能否成功用有機土堆肥。

這幾個方案加上蟑螂藥餌,應該能夠多少解決蟑螂的問題吧~

2007年3月28日

電腦與軍事武器(IDF翔昇機)

最近一個跟軍事有關的主要新聞,就是我們的IDF升級計畫,翔昇計畫完成,儘管看起來還需要一段不短的時間進行驗證,但出廠的樣式看來不錯。

身為男性,往往都會對強悍、高科技的裝置有興趣,而軍事武器往往是其中之一,不過在大家熱烈討論的時候,往往都會非常自動的將它的用途(殺人)略過,儘管如此,大家還是樂此不疲的討論。

我個人覺得,近40年來,歐美最成功的東西就是電腦,單單靠電腦,就不知道讓歐美(尤其是美國)擁有多少不可數的優勢,美國是一個非常幸福的國家,它的國土面積是全世界第三大的,但是人口只有3億人,中國比它大,但是人口有12億,而且西半部一大塊都是荒地、高山,根本不能開發,不過因為美國的這種特性,他們有更多自動化的需求,也比其他國家更講人權,人少當然人命寶貴,換做中國,死一票又如何,人這麼多~

因為如此,電腦對美國有特別重要的需求,能夠利用電腦節省一個人力,就是非常不錯的投資,能節省許多人力,成本上升一倍也值得,同樣的話在中國顯然不這麼適用,一件事情一個人做不完,那就10個吧~

而電腦,這真是強大的工具阿~舉個有趣的例子,之前看過忘了是Discovery還是網路的消息,東西德統一後,他們第一件事情就是拿米格29和F-16進行纏鬥,看看誰強~

有趣的事情出現了,米格29的氣動力表現和引擎能量沒話說,就是比F-16強大,我相信這裡指的是,當需要瞬間能量時,米格29可以做出非常優異的動作,引擎能提供瞬間強大的力量,而飛機氣動力優良,能讓動作做出來~
相比之下,F-16的迴轉力不錯,靈活度也不錯,但是對於大角度的動作,它沒辦法像米格29這麼強悍,結論是,就整個機構來說,米格29是很強的。
然而有趣的事情出現了,米格29的駕駛艙,搖桿的正後方有個大大的時鐘,其他部份則很多都是開關,這時候飛行員解釋說,米格29在飛彈的發射,非常需要看時鐘,因為米格29的電腦僅僅只會幫你瞄準,不會告訴你多久後會命中,也不會告訴你是不是在射程之內,而如果是紅外線導引或半主動雷達導引的飛彈,需要戰鬥機提供鎖定的資訊,那麼這時候飛行員只能看著時鐘自己倒數,雖然這看起來不這麼重要,但是在戰鬥時分秒必爭的環節,對於「人的多工」就有了決定性的差異。
至於F-16,在它一推出之時,就是以優異的電線傳導取代油壓,搭配優秀的射控、電控電腦著稱的,它的電腦會主動瞄準,並顯示距離和預計的命中時間,飛行員只要看看時間,評估一下就可以決定要攻擊的目標了,兩相比較,誰強誰弱很清楚。

我們的IDF,很多人說它很破爛,可是事實上,和其他國家的戰機相比,並不遜色,IDF最讓人詬病的就是引擎,因為拿不到大引擎,因此用了小引擎,但是如果去漢祥網站看,我們的引擎可是全數位化的,而且是全自製的,我們有完整的設計圖,要提昇性能,在一定的性能提昇上(10%上下)並不會困難到需要很大的代價。
相比來看看其他國家,日本的沒話說,他們本身就有F-1戰機的設計能力,F-2戰機對他們來說,他們要的是F-15的能力(重型戰機,也就是掛彈量大,Power強),美國一樣限制他們,強迫他們只能參考F-16來設計(F-16是輕型戰機),結果它們搞了個F-16的威力加強版。
至於韓國呢?韓國的K-50,改名後叫做黃金鷹,可以去維基百科看看,它的引擎只用一顆,推力並不如我們兩顆的推力,意思是,IDF還比黃金鷹強些些。

而雷達,大家都說我們的GD-53是垃圾,可是我們的GD-53和韓國一樣,是APG-67雷達改的(至少我們還有改良,韓國直接套用,未來可否更新也許是問題),至於日本,人家的三菱重工自己就有能力做出強力雷達,當然不屑美國的幫助,美國也沒理由強迫他們用顆搜尋能力差的雷達。

看看IDF之前的開發,當時的電腦系統(電控、射控系統)是由英國航太系統公司(BAE Systems)直接提供的,說起來也合理,當時又沒有相關的技術。
雷達系統則是拿APG-67改的,看起來應該是把對地攻擊的部份拿掉了。
加上給顆性能不夠好的引擎,因此飛機就做不大,油箱也不能放多,設計就受限了。

這次的翔昇計畫,主要是修改電腦系統,但是也加了油箱,而且一開始我以為是掛在下面,發現不是,是整合進飛機裡面,增加了「飛機內部」的油箱空間,這很直覺就可以聯想,下一步就是提昇引擎性能了,不然加個油箱在「飛機裡面」幹嘛~
而電腦系統就更炫了,從原本BAE使用的16位元1750 CPU改成32位元的,這個16位元處理器,八成是顆DSP處理器,就一些看到的討論,有人說到「不過就是16位元CPU加上40位元的浮點運算器」,這八九不離十就是DSP處理器了,雖然不差,可是的確不能適用在新一代的應用場合。
這次找BAE換CPU,直接換成了32位元的PowerPC處理器,也換了顯示器,換成全彩的,而且以現在這個時間點來看,八成是全彩觸控式液晶螢幕。
這樣的修改,讓IDF變成全數位化的戰機,而32位元的電腦系統,最直接的影響就是可以使用OS(16位元不是沒有OS,但OS主流還是在32位元上),這讓程式開發容易許多,要在上面開發個MP3播放程式我都不意外,而且將開發簡化後,我們能夠進一步開發許多應用程式,像是飛機間通訊,情報交換,甚至上面有TCP/IP可以上網我都不意外。
這樣的改變是很棒的,這讓IDF成為我們的主力戰機,至少不會被美國綁著,賣個爛F-16 A/B,F-16 A/B還是類比系統耶,而且程式設計、系統整合都要看別人臉色,花錢做到,明明就只是protocol的問題罷了,不賣就是沒辦法開發。

整體來看,我個人是覺得做得很不錯的說,尤其自己又是玩電腦的,加強電腦很直覺可以想得到有非常多的好處,而且未來的開發無可限量,一個搞不好,說不定上面跑的還是WinCE勒~

不過近日注意新聞,發現官員對它似乎不特別有興趣,頂多只想靠它買到F-16 C/D。
想一想,如果靠漢翔讓軍購變便宜,也許整體算起來,合算當然是買軍購,可是,軍購的背後每次都靠他們開發,也沒有因為軍購後補助他們,這擺明就是美國不讓台灣有自主國防,然後說些沒決心之類的風涼話。
所以是否應該想想升級的必要性,還是其實大家打的主意是兩者並進,嫌錢太多,我相信大家都不會有意見的~

最後提一下,避免造成誤會,竊取國防機密之類的,資料來源全部都是網路:
維基百科(http://en.wikipedia.org/wiki/AIDC_F-CK_Indigenous_Defence_Fighter)及其外部連結
近日新聞
戰國時代討論區(ArtOfWar)-漢翔改良IDF 雙十節首飛~(http://artofwar.homeip.net/bboard/viewtopic.php?t=6125&postdays=0&postorder=asc&start=0&sid=c77c8303a543bb4779668ddd0a75ec27)及其外部連結
google

2007年3月26日

台灣首位本土圍棋王與教育

很早前就說過,台灣教育實在失敗~

我不在意教改,那種把小學生課本改來改去的教改,在這點是,唯一有意見的,大概是政治涉入吧~

可是這次的圍棋王、棋靈王,我卻很有意見了~

台灣號稱自由、民主,可是什麼都沒有,政府沒為人做過什麼,我是個學生,至少目前還是,其實沒資格說什麼政府為人民做什麼的大話,畢竟連稅金、健保金都要我爸繳的人,沒資格說這種話。

但是有一點我非常的感同身受,那就是教育的缺失。

我不瞭解什麼叫做成功的教育,可是一直以來,我一直一直認為台灣的學校和業界脫勾嚴重,十幾年前,台灣PC GAME遊戲興盛,還記得軟體世界雜誌每次都介紹著國內外遊戲軟體公司,也不斷的說國內遊戲軟體公司缺人,十幾年後,儘管許多遊戲軟體公司倒的倒,轉型的轉型,但是缺人風依舊,讓我們想想,遊戲軟體的產生,需要多少人,需要哪些技能的專業?只是簡單的程式設計師嗎?
一套遊戲軟體,從規劃、設計、寫遊戲、包裝、行銷,每個程序都需要專業人員,規劃需要企劃人員,設計故事需要作家、美工、美術設計,寫遊戲需要程式設計師、包裝和行銷需要企管,中間還有專案管理員之類的人,而現在線上遊戲熱門,線上遊戲公司甚至還需要日文、韓文的翻譯。
這些每個環節都是專業,這些專業的人員從哪裡來?難道從石頭蹦出來嗎?當然是學校阿~
可是看看,現在的學校都是些什麼科系?有跟遊戲軟體相關的嗎?
再看看這次的世界棋王,我們姑且叫他棋靈王吧~
他念的是什麼班級?什麼學校?是體育專班耶~
請問他下圍棋,跟跳高、跳遠、100公尺短跑、馬拉松長跑、游泳有什麼關係?
卻因為一般學校的課程跟不上轉念體育專班,而在台灣,這樣的例子比比皆是。
大陸落後,可是他們在上海成立了棋藝學校,也廣設軟體學院,這些學校的建設,持續發展下去,任何人看起來,至少未來20年開花結果了,可以帶出多少這些專業領域的人才?
我們號稱自由、民主,結果只是在搞三隻小豬是不是成語,在搞小學歷史課本,真正有用的是教育改革是什麼?
台灣普遍存在升學是唯一的路,一直以來根深蒂固,但是在這同時,我們經常看到許多專業的人在特定學校的特定班級努力發光,像調酒、跳水、這次的圍棋、電玩比賽、漫畫、歌唱。

這些有些是在特定班級,由「某位」專業老師努力的培育著,希望學生能成為所謂的「台灣之光」。
有許多是平常上課所學,和自己努力的專業毫無關係,每天去上學不知道為了什麼,成績不好,還會聯絡家長,說著你小孩如何不讀書、不努力,但是,讀書跟成功是劃上等號的嗎?
我們號稱的自由,是這樣的自由嗎?是限制發展的自由嗎?
為什麼不能為這些特殊項目成立特殊的學院或學校呢?
什麼叫做專業?當某個事物,不斷不斷的鑽研,不斷不斷的研究,當經驗累積到了某個程度,它就是專業,這一點,日本比我們成功很多很多~
在我們看來,看著日本人贏了某某獎項,一群人抱著痛哭,一群人喊著萬歲,就算只是微不足道的獎項,還是跟瘋子一樣的拼命,這看來很愚蠢。
但一堆人拼了命的研究,努力把它用各種莫名其妙的歸類法、經驗法則把它專業化,最後打敗了全世界的人,而且立於不敗之地之後,這些愚蠢會變成可怕的實力。
試問,我們在哪裡?我們只會在出現王建民時,稱讚的台灣之光,出現棋靈王時,稱讚台灣之光,但是政府有正視這些不斷挑戰自己的人嗎?只有和他們照照相、沾沾光、送個獎章,可是真正要做的,應該是正視這些人,在給予鼓勵的同時,創辦學校、學院、給予補助,或者僅僅只要新增法令,新增規範,這些做不到嗎?
看著記者問行政院長,說到棋靈王沒有接受到任何政府補助和培訓,他的回答很妙「這可以用特例申請」,特例申請,有多少人申請過?看不看學校成績?評判標準?真是十足的官腔~

2007年3月23日

SSH Tunnel心得

剛打的,也就沒什麼前言了,直接看囉~

=============================================================
SSH Tunnel心得:

一直以來都知道SSH其實只是一個加密的Tunnel,本身不像telnet只有提供終端機服務,
但是對SSH的Tunnel並沒有很大的興趣去玩它,又或者說其實是不會玩~

前陣子原本因為PSPad不支援sftp,因此用了一套「Bitvise Tunnelier」的軟體,
它能提供SFTP-FTP的功能,讓PSPad可以透過它連上SFTP機器,
此外,它也有Socks Tunnel的功能,讓我覺得非常方便~

無奈Bitvise Tunnelier需要在右下角有個圖示,而且Linux上不能用,
要做壞事就因此受限了,因此在研究有沒有程式可以做到Socks Tunnel的功能,
又可以跑在背景的~

答案是PuTTY和所屬的plink(PuTTY Link),以下是使用法。

PuTTY作法:
首先從最基本的PuTTY使用法介紹起,要用PuTTY來幫你做SSH Tunnel很簡單,
如下面這篇的作法:
http://www.pumb.org/viewthread.php?tid=155&fpage=1&highlight=

簡單的說,就是按照一般PuTTY使用,填入「Host Name(or IP address)」和「Port」,
接著點選左邊「Connection」->「SSH」->「Tunnels」
接著在「Source port」填入「1080」(你喜歡的port),
點選「Dynamic」,之後按下「Add」

之後按正常方式連線,放著即可~~

PuTTY Link(plink)作法:
PuTTY雖然方便,可是它要開個討厭的視窗,可以不要嗎?
答案就是plink。

首先到PuTTY的網站下載plink.exe,網址如下:
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

下面先給個範例:
plink -D 1080 -N -pw ooxx user@xxx.xxx.xxx.xxx

plink其實就是PuTTY的指令版,沒有圖形化的選單,也沒有ANSI支援,但是它有PuTTY的連線能力。
我們會用到的幾個參數介紹如下:
-D Dynamic SOCKS-based port forwarding(其實就是PuTTY點選的「Dynamic」,後面填上喜歡的port
-N don't start a shell/command (SSH-2 only)(雖然僅支援SSH2,但這不是問題,它的功能是不要開啟討厭的SHELL)
-pw 你的SSH密碼
user@xxx.xxx.xxx.xxx 你SSH的帳號和SSH Server的IP

測試後可以連線了,但是依然要開一個命令提示字元的視窗,有辦法關掉它嗎?

這時候我們要靠M$提供的優秀程式「start.exe」了!

只需要執行
start /b plink -D 1080 -N -pw ooxx user@xxx.xxx.xxx.xxx

即可~

要關閉,需要按「Ctrl+Alt+Del」,接著把plink結束執行。

OpenSSH作法:
如果我們需要在Linux或FreeBSD這類機器上做類似的工作呢?我們需要什麼樣的程式?

完全不用,Linux內附的ssh就提供這樣的功能了,它的操作如下:
ssh -f -N -L 1080:: user@xxx.xxx.xxx.xxx

照例,列出它的參數說明:
-f 背景執行
-N 不要執行SHELL
-L 後面填入你要的port,「::」表示省略remote host和remote port
user@xxx.xxx.xxx.xxx 表示你SSH的帳號和SSH Server IP