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

2007年3月22日

Regular Expression對中文Unicode的支援

最近寫電視節目表擷取程式,發現最大問題在於中文擷取,對於如何框定中文,是一件很麻煩的事情,目前我常見的方法是利用「>(.*)」類似這樣的方法來做,可是效果很差,尤其遇到有些沒斷行的網頁,完全無法判斷(.*的判斷準則是斷行),因此在想要如何在RegEx上對中文進行判斷。
聽說有學校有學長會RegEx,當然先去問他,可是很不幸的,他並沒有相關的經驗,一提到就覺得很難搞得樣子,最後他說透過ASCII的方式,用16進位的範圍來判斷,方法很基本,可是我在想,應該不能適用在Unicode或UTF-8吧... :(
上網找之後,發現還是可以的,但是要使用Unicode的作法,最後很不幸的,在php上的作法和學長提的類似,不過能夠達成任務,就相當不錯。
以下是打的心得:
==========================================================
Regular Expression對中文Unicode的支援:

目前Unicode已經是主流,看ASCII的反而不實用了~

regex目前我會用到的,大概就是 Java 和 php,
要在 Java 上用 regex 抓出中文,如下:
Matcher matcher = Pattern.compile("\\p{InCJKUnifiedIdeographs}").matcher(字串);
while( matcher.find() )
{
String 一個中文字 = matcher.group();
}

這邊要解釋「\\p{InCJKUnifiedIdeographs}」:
在 Unicode 中,有針對各個編碼區塊做分類,它的列表可以參照下面的檔名:

Unicode 3.2 的列表:
http://www.unicode.org/Public/3.2-Update/Blocks-3.2.0.txt

Unicode 4.1.0 的列表:
http://www.unicode.org/Public/4.1.0/ucd/Blocks.txt

Unicode 5.0 的列表
http://www.unicode.org/Public/5.0.0/ucd/Blocks.txt

這個表裡面列出了統一碼區塊名和相對應的 Unicode 區段,
而其中的「CJK Unified Ideographs」就是我們的中文字區段(看名稱,應該包含日文、簡體、韓文),
而在 RegEx 中,可以透過「\p」來指定這個統一碼區塊名,
透過指定它,找出相對應的文字範圍,Java 就是這樣做的。

至於細節,可以參考:
http://www.javaworld.com.tw/confluence/display/J2SE/Regular+Expression's+Unicode+support
http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html

至於 php,php 的 PCRE RegEx function,它使用 PCRE 套件(原本用於 perl,移植到 php),
PCRE 的 \p 並無法支援「CJK Unified Ideographs」,
而在 PCRE 的套件下,要能夠擷取出 Unicode,常見的作法有兩種:
1.
使用 \u 來指定 Unicode 的碼,可惜 php 的 PCRE 不支援

2.
使用 \x 來指定 Unicode 的碼,這個沒問題
參考網頁:
http://tw.php.net/manual/tw/reference.pcre.pattern.modifiers.php

原文:
=================================================================
Spent a few days, trying to understand how to create a pattern for Unicode chars, using the hex codes. Finally made it, after reading several manuals, that weren't giving any practical PHP-valid examples. So here's one of them:

For example we would like to search for Japanese-standard circled numbers 1-9 (Unicode codes are 0x2460-0x2468) in order to make it through the hex-codes the following call should be used:
preg_match('/[\x{2460}-\x{2468}]/u', $str);

Here $str is a haystack string
\x{hex} - is an UTF-8 hex char-code
and /u is used for identifying the class as a class of Unicode chars.

Hope, it'll be useful.
=================================================================

它使用「/xxx/u」,在最後加上「u」,以這方式支援 UTF-8,
而在「/xxx/」內部,使用「[\x{2460}-\x{2468}]」來框出 Unicode 的統一碼範圍,
而要使用類似方式來應用在中文,就非常容易了,
如前面所述,看看 Blocks 的內容,
CJK Unified Ideographs 的統一碼範圍在 4E00..9FFF

答案揭曉~~

下面來個 php 的範例:
=================================================================
#!/usr/bin/php -q
$a = "def:123:這是:AB=你好!";
$pattern = '/123:([\x{4e00}-\x{9fff}]+):[A-B]*/u';
preg_match($pattern, $a,$match);
echo $match[0];
?>
=================================================================

可以得出
=================================================================
123:這是:AB
=================================================================

2007年2月26日

台灣高鐵很糟嗎?

剛剛看了Discovery介紹韓國的KTX高速鐵路,接著就上網查了查關於台灣高鐵的消息。

說到台灣高鐵,大家都知道這是日本第一次輸出新幹線,全世界都非常關注,而日本方面也非常謹慎,可以說是只許成功不許失敗的大事。

關於新幹線,我們可以看Wiki新幹線的介紹,而且我們可以從最早的新幹線0系開始看每個系列的介紹。

近年新幹線的主流是700系列,日本自己目前用的最新車款,是700改良型N700,輸出台灣的是700改良型700T,因此說起來,700T的確是目前最新的款式,並不存在「賣舊貨」的道理。

而且事實上,日本的新幹線列車使用時間都很長,經典的新幹線0系從1964年開始服役,直到1999年才全線退出,其他新幹線系列有不少也都在服役中,並不是N700出來了,就全日本新幹線都換N700,因此這次出口的700T,並不遜色於日本自己在用的車子。

再提一次,車子相關介紹可以看Wiki新幹線

再來我們可以看chinshen在MyAV視聽商情報網的發文

chinshen本身在台灣高鐵工作,他的發文中有對台灣高鐵被質疑的幾個部份給予回應。

一般對高鐵的質疑,
第一點屬官商勾結,廠商得利,我對這點實在沒太大興趣,不過chinshen有對這部份進行篇幅不少的說明,主要是說,台灣高鐵屬BOT,政府並沒有大手筆的出資救急,政府有做的,只有「借貸」和「投資」,另外他也提到有趣的一點,全世界的高速鐵路,除了自設計、自產的原始國德、法、日之外,沒有一國是不追加款項、不工程延宕的,台灣高鐵已經是追加款最少,工程延宕最少的了。
第二點屬日、歐混血,chinshen也提出了說明,台灣的新幹線,機電系統都是日本新幹線興建的,沒有所謂日、歐混血,會引起爭議的原因在於,日本的新幹線並沒有使用太多的自動化系統,主要是靠駕駛和車長來負責,歐美則用自動化系統來協助管理,像是有防止駕駛睡著等自動化的措施,在台灣高鐵訂立合約時,就要求要使用這樣的系統,在台灣,是日規系統和歐規自動化系統都有的,有雙層的防護措施,而對於自動化系統,合約中就定好日本新幹線必須要將機電整合做好。
第三點屬換系統,很多人質疑原本用法國的系統,為什麼後來改用日本的,也是因為這樣造成日、歐混血的嗎?chinshen提出了簡單的說明,在一開始的時候,日本新幹線和法國TGV提出的金額都是1500億元,而且日本新幹線提供500型的車子。
後來日本重提金額,日本提出金額改為1000億元,而且日本新幹線提供新型的700型車子。
正常人當然都會改選日本新幹線,因此台灣高鐵後來改使用日本新幹線也是合情合理的,現省500億,誰不幹阿?而後來法國TGV要求求償50億,當然付阿,省的錢是求償的10倍耶。

而且目前參與興建的廠商,這些公司、這樣的組合,事實上是台灣工程建設的第一首選了,事實上要換其他營造商,可能也沒什麼選擇,畢竟台灣有能力的營造商,屬得出來的就是他們幾家了。

看到最後,還會認為台灣高鐵差嗎?
我個人對高鐵,唯一有點意見是價格,畢竟沒有人會對價格沒有意見的,不過話說回來,我沒有經常南下的需要,事實上放假時,連家門都很少外出,但看了chinshen的解釋,我對台灣高鐵是非常有信心的。

2007年2月25日

沒啥好說,一個煩字~

隨著放假日快結束,論文又非常懶得進行,到現在都找不到題目卻煩得沒心思,就知道問題不小了~
剛剛在google和Flickr申請了相簿,以後大頭照改放到google(又或者Flickr目前不確定),如此一來,在寫些心得文之類的時候,也可以放圖片上去(夠有心的時候)。

這幾天,硬要說工作,在很懶的同時,對MythTV進行調配,目前狀況已經很不錯了,算是基本功能齊備,在延伸功能了,目前幾個主要的問題是:
1.電視卡的電視,畫質實在爛,目前我是懷疑家裡線分得太兇,線材不好訊號太差,目前打算加個強波器試試看,因為畫質很糟,這是沒人用它看電視的最大問題,老爸說過「電腦的電視畫面感覺比較差的樣子」,一句話道盡我的無言。
2.電視卡的電視,音質爛阿~
這跟前面那點很相似,電視卡的音質不好,我目前還無力解決它,先看看用強波器畫質有沒有改善再說吧。
3.節目表問題,目前節目表的問題是,我可以得到節目表的訊息,可是我不知道哪裡可以設定它是重播或首播?

2007年2月20日

Java與Debian

以往在Linux或FreeBSD上安裝Java,簡直就是自找麻煩,尤其是在Debian上~~~

話說Debian有嚴重的License情節,相關訊息可以參考Debian 和 Mozilla® 在 Firefox 的 LOGO 和 名稱 上的爭議

而在FreeBSD上,情況有些類似,但是更可憐,因為FreeBSD不是Linux,Sun沒有提供FreeBSD版的Java,雖然Sun的Java有提供Source Code,但必須同意不同的License規範,其中一點,就是「不能散佈」。
所以FreeBSD從Java 2(Java 1.2)開始,就無法使用了,終於有一小群人看不下去了,他們維護FreeBSD Java的patch,一開始提供patch,後來將patch過的Java送Sun審查,在Java 2(Java 1.3.1)終於過了,也因此有了自Java 1.1後的第一個FreeBSD Java公開套件。
爾後陸續提供新版patch,也陸續提供較新版本的套件,目前FreeBSD提供的最新版本是Java 5(Java 1.5.06),而Sun的最新版Java則是Java 5(Java 1.5.11),測試版則有Java 6(Java 1.6)了......... :(

前面說到Debian有嚴重的License情節,也因為License的問題,因此Debian始終沒有把Java做成套件放入APT tree當中。

現在Java的授權改了,因此我們終於可以在Debian裡面,直接用套件安裝Java了~~

至於寫這篇的原因,除了解釋前面一大堆之外,最重要的是,網路上很多關於Debian安裝Java的資訊都舊了,但是FAQ還是非常多,多到淹沒了新的消息。
如果你想在Debian上安裝Java,到google一查,你很容易看到下面這個步驟:
1.安裝java-package
2.執行fakeroot make-jpkg jre-xxxxxxx.bin

*警告*
~這個方法是舊的~

現在方便、快速、無負擔的方法是:
1.修改/etc/apt/sources.list,在原本的deb ooxxooxx testing main最後面加上non-free,類似如下:
deb http://ftp.tw.debian.org/debian/ etch main non-free
deb-src http://ftp.tw.debian.org/debian/ etch main non-free

2.更新APT,執行apt-get update

3.進aptitude,搜尋sun並安裝,套件有sun-java5-fonts、sun-java5-jdk(或sun-java5-jre)、sun-java5-plugin,其他讓它自己相依安裝即可。

詳細的訊息可以參閱:
https://jdk-distros.dev.java.net/debian-dev.html

中樂透與捐錢

在去年年底的最後一期大樂透,獎金上看8億,大家都在買,我也就很入境隨俗的買了兩組號碼。

開獎後,我在生日的當天對獎了,也許是因為生日手氣特別旺吧,很有中獎的感覺,結果真的給我中了4個號碼~~

儘管在對的過程告訴自己,4個已經不得了了,都沒中過這麼多號碼,但是在查獎金時,還是一直在難過為何不多1,2個號碼,獎金可是差了10倍、百倍、千倍的耶~~

4個號碼有多少錢呢?這次中的人特別多,均分下,只有不到3500元。
領錢時更發現,扣完稅金,只剩下29xx元..... :(

不過不論如何,當時就許下,這錢是多少該捐一點出來,然後買電腦機殼,捐多少?那就捐個1/10吧~~因此我就想,捐個300左右吧~~

說到捐錢,在很早很早以前就寫過,我對慈濟這種捐錢的單位實在很不以為然,希望大家捐錢,可是可以蓋金舍、蓋醫院、蓋學校,出發點也許不非常壞,但也沒有好到什麼程度,況且我對他們「做善事」的認知實在不非常喜歡,為什麼到醫院做義工或者捐大錢才是做「做善事」?
我今天寫個軟體,把它OpenSoruce出去,這不是「做善事」嗎?
結論是,「做善事」在乎一心,心裡認為是做善事,那就是善心的表現。

有了這樣的想法之後,我就在想,要捐給誰?雖然只有300元.....
後來想想,捐給一些寫軟體的團體好了,而這件事,就這樣擱著了~~

到了剛剛,看到Java,想到FreeBSD上的Java,剛好給我看到捐款的按鈕,我想到了這件事,就給它按下去了,因此最後這300元(US10$),就用信用卡給了FreeBSD Foundation。

許多人在中獎之後,都會捐錢,然後都會捐給社福團體或宗教。
許多人在做善事時,也都會找社福團體或宗教當義工。
並不是說這些團體不好,但是我覺得,身為資訊人,很多電腦社團也很可憐,沒電腦、沒設備、沒人力,也許我們可以試著將錢捐給他們,讓他們能夠寫出更好的軟體讓大家用。
而且說起來,身為資訊人、網路一族,去做義工太吃力,扛東西扛不動、揹老伯伯揹不動、跑個腿說不定還中暑,與其做這些和自身優勢相異的「善事」,不如發揮所長,盡情的寫程式,把程式貢獻給大家,這.....也是善心的表現吧~

2007年2月9日

boot from floppy image and CD iso

經過了長久的探尋,它出現了~~
長久以來,我一直希望把軟碟機從桌上型PC移除,可是始終無法如願,就是因為找不到一個很好的解決方案來解決當機後重灌和還原的問題,現在,這個問題終於解決了~~

不過因為晚了,之後再整理整理po出,可以先說的是,關鍵在grub和isoemu。

FON bridge mode GoGoGo(簡易&細節詳細說明)

原文po在Taiwan FON社群,直接轉啦~~

因為有回覆說看不大懂,因此另外發個簡易說明的版本。

首先回應幾個回覆時問的:
1.
它並沒有修改任何的Firmware,而且,直接給Firmware看似簡單,但其實更危險,一個不小心就是車毀人亡。
如果是直接把Firmware刷掉的話,能做的事情,就不僅僅只是bridge了,可以直接裝一些人家編譯好的套件,像是ftp、nfs、samba....等,我個人是對BT和eMule比較有興趣的,不過還沒有仔細查有沒有人有放。

2.
我個人是覺得,傳輸效率應該沒有差別的,因為硬體相同,也沒有額外加上參數,因此我不認為傳輸效率會有差別。

3.
我目前對FON的wpa設定還有FON的FON_AP(開放的那個連線)的設定並不熟悉,因此目前提供的檔案,並沒有支援wpa設定,FON_AP雖然看得到,但是並不能使用。
如果您是一個「極度有善心」,或者您覺得「沒有wpa認證,這樣的無線網路安全性不夠」,完全不能接受的話,請先不要用。

下面,我就把一堆廢話拿掉,僅把修改加入bridge mode的部份寫出來:

1.
先把FON的SSH功能打開。
為了簡化說明,作法就不詳述了,earlreco大大有po了,網路上用La Fonera和ssh來搜尋,也可以找到一堆

2.
登入FON,並執行下面指令來編輯script檔案。
vi /tmp/test.sh

3.
將script內容寫入(可以用貼的,或自己用手打)後存檔離開。
先按i或a,讓vi進入(變成)編輯模式
貼上(key入)下列內容(「=」請自動略過,「xxx」請自己改成自己要的wep key)
===================================================
#!/bin/ash
echo "Setting up LAN bridge"
# 將 DHCP server 和 DHCP client 停止
/usr/bin/killall dnsmasq
/usr/bin/killall -9 udhcpc

# 建立 bridge interface
/usr/sbin/brctl addbr br0
/usr/sbin/brctl stp br0 off
/usr/sbin/brctl setfd br0 0

# 將 eth0 和 ath1(有線 / 無線) 設定清除
/sbin/ifconfig eth0:1 down
/sbin/ifconfig eth0 0.0.0.0
/sbin/ifconfig ath1 0.0.0.0

# 啟動 bridge interface
/sbin/ifconfig br0 up

# 將 eth0 和 ath1(有線 / 無線) 加入到 bridge interface
/usr/sbin/brctl addif br0 ath1
/usr/sbin/brctl addif br0 eth0

# 設定 bridge interface 的 IP(udhcpc為DHCP / ifconfig為手動)
/sbin/udhcpc -i br0 -R # get new IP via dhcp
#/sbin/ifconfig br0 192.168.0.103 # static IP

# 設定防火牆, 允許 bridge interface 的 Input / Output
iptables -A INPUT -i br0 -j ACCEPT
iptables -A OUTPUT -o br0 -j ACCEPT

# add bridge to hostapd.conf and restart hostapd (allows to use WPA)
# 原指令為執行 hostapd 來啟動 ath1 的 AP
# 改為直接用 iwconfig 來啟動
# 因為 hostapd 不熟不清楚設定,hostapd 能支援 wpa...等認證
[ `grep -c bridge=br0 /tmp/hostapd.conf` = "0" ] && echo bridge=br0 >> /tmp/hostapd.conf
/usr/bin/killall killall hostapd
#/usr/sbin/hostapd -B /tmp/hostapd.conf
/usr/sbin/iwconfig ath1 essid HOME mode Master key xxxxxxxxxxxxxxxxxxxxxxxxxx(麻煩請自己取,共26位)

# restart public SSID (doesn't work!)
# 重新啟用 FON 的開放連線, 不確定能否使用, 看起來是不能
/sbin/ifdown hotspot
/sbin/ifup hotspot
===================================================

4.存檔離開並修改權限並執行看看
先按幾下「ESC」鍵,然後按「Shift+:」切換vi成指令模式
輸入「wq」存檔離開
chmod 755 /tmp/test.sh
/tmp/test.sh

5.用無線網路連看看(連HOME),然後自行判斷是否是bridge模式。
判斷方式,
如果你的FON是接在IP分享器上面,應該會拿到一個IP分享器的IP。
如果你的FON是接在ADSL上面,應該會拿到一個真實IP。
如果你的FON是接在區域網路,需要自己設IP,將會發現FON不會分配任何IP(出現這是有限能力的網路)。

6.確定已經成為bridge模式了,執行下面指令讓FON開機時能自動執行。
mv /tmp/test.sh /etc/init.d/N15bridge

7.重新開機,確定它已經能開機自動動作。
reboot

2007年2月4日

MythTV EPG GoGoGo

最近這幾週,MythTV的EPG終於搞定了,我也有po文在摩托學園的share版了,這邊將原文直接轉貼啦~ :p

而目前發現,晚上12:00的節目表,可能會出現問題,看起來12:00的節目經常會空白的~~

.....................

發現到因為它有HTML的關係,會造成格式錯亂,我就不貼了,直接連結到摩托學園那邊去啦~~
Linux Media Center設置心得(MythTV)-MythTV EPG

FON bridge mode GoGoGo

話說前鎮子有FON的優惠活動,我在一開始時對FON並沒有太大的興趣,
有一天,我想到宿舍如果放一台FON AP,好像還不錯。
反正是學校的網路,要用就用吧,我又不痛不癢~

因此開始詢問FON的情況,等了許久,在前鎮子開始了FON台灣的促銷,
統一價165,當時我還覺得有些貴,這麼小一顆,
只有一個網路孔,沒有內建HUB,硬體應該是不怎麼樣吧~

不過當時在朋友的慫恿下,買了2顆,一顆按計畫放宿舍,
另一顆考慮放家裏或學校實驗室~~

FON陸續到貨了,第一顆我很乖的放宿舍,很乖的按照設定設定它。

但是第二顆呢.....嘿嘿嘿.........

因為本來家裏使用FreeBSD當NAT和AP,
不過因為主機板很舊的關係(P2-350),對PCI和wireeless PCI支援不很好,
插三張網路卡,經常發生device timeout或watchdog timeout,
尤其是插上wireeless PCI之後,情況尤其嚴重~~
加上PCI的wireeless card訊號實在不大強,還掏錢幫它加天線,還滿囧的~

這次第二顆,就打算放家裏用用看,也玩玩看,
因為我始終相信,機器在手上,怎麼可能沒有人在惡搞它~~

因為在宿舍使用的經驗,發現它的穩定度很不錯,速度也很好,
在家裏相信也會有不錯的表現,可惜的是,沒有bridge mode..... :(

上網路一查,赫然發現,人人都在惡搞它,透過CGI的bug,
很簡單就能把SSH打開,一進去,發現是Linux 2.4,
再仔細查找後,發現它硬體還不錯,看看下面這篇:
http://www.dd-wrt.com/wiki/index.php/La_Fonera_Hardware_Specifications

它用的是Atheros的MIPS SoC Processor,
直接內建ath的802.11b/g和10/100M的網卡,
難怪它的穩定性和效率都相當好~
而顆Processor的時脈也不低,
還內建了8MB Flash和16MB RAM,這相當不錯~
就165而言非常划算~~

在這裡,我僅把我的心得po出來,
先聲明一點,我只是「正常的使用它內建的功能」,「並沒有惡意的破壞它」,
不過,這裡指的「惡意破壞」,指的是把Flash ROM刷掉........ = =||
套個不文雅的說法,就是蓋棉被純聊天,頂多摸一摸罷了(真低級的比喻)....... = =||

我的需求很簡單,和芸芸眾生一樣,我只想要讓FON有bridge的功能,
一個NAT已經很發瘋了,還NAT中的NAT勒..... = =||

要做到這點,第一步驟是把FON的SSH功能「打開」(我絕對沒有破壞它,只是打開而已),
看了些說明之後,發現
這裡的解說

搭配
這裡的程式

是安全性最高的,基本上不需要太擔心把它搞壞,我們只是不小心設個IP,
不小心點了兩個.xml網頁罷了~~

這邊要注意的是,在將SSH功能打開之後,按照前面解說的網頁,
它會在重新開機或下載更新之後還原,
解決的方法在這裡
Always Open~FON SSH

從網頁我們可以得到一個重要資訊,
/etc/config在自動更新之後,是不會蓋掉的~~

因此,我們除了可以讓FON像7-11一樣,FON SSH天天營業,
我們也可以做些其他事情,像是幫我們把「更新程式」在FON更新後自動放回去~

而第二步驟,就是把FON的bridge功能「打開」,
我在這邊要嚴正的正名一下,FON的bridge功能,是本來就有的,
並沒有額外增加patch或module,因此談不上「破壞機器」~

在Linux上要把bridge功能弄起來很麻煩,
不像FreeBSD改改sysctl就搞定了.... :(

基本上我們可以參考
Mini HOWTO:Ethernet Bridge + netfilter

這邊會解釋Linux上bridge的設定方式。

而簡單的說,步驟如下:
1.建立 beidge interface(br0)
2.把要bridge的幾張網路介面加入br0(eth0,eth1,ath0...etc)
3.如果需要讓bridge有IP可以讓人連線,幫br0設個IP
4.把br0啟動

大功告成~~

在FON上也是一樣的,參考網頁:
http://mrmuh.blogspot.com/2006/11/updates-explained-and-bridging-mode.html

裡面有提供N15bridge的設定用script檔案

瀏覽後會發現,它的流程和上面說得有些類似,但加了些東西,大流程如下:
1.關閉DHCP(Server和Client)
2.如上設定Bridge
3.設定內部無線網路的ath1介面
4.設定外部無線網路的ath0介面

我在使用時,hostapd一直沒有成功跑起來,因此改使用
iwconfig直接設定,直接用WEP的認證,而不使用wpa了~~

我的script如下:
#!/bin/ash
echo "Setting up LAN bridge"
# 將 DHCP server 和 DHCP client 停止
/usr/bin/killall dnsmasq
/usr/bin/killall -9 udhcpc

# 建立 bridge interface
/usr/sbin/brctl addbr br0
/usr/sbin/brctl stp br0 off
/usr/sbin/brctl setfd br0 0

# 將 eth0 和 ath1(有線 / 無線) 設定清除
/sbin/ifconfig eth0:1 down
/sbin/ifconfig eth0 0.0.0.0
/sbin/ifconfig ath1 0.0.0.0

# 啟動 bridge interface
/sbin/ifconfig br0 up

# 將 eth0 和 ath1(有線 / 無線) 加入到 bridge interface
/usr/sbin/brctl addif br0 ath1
/usr/sbin/brctl addif br0 eth0

# 設定 bridge interface 的 IP(udhcpc為DHCP / ifconfig為手動)
/sbin/udhcpc -i br0 -R # get new IP via dhcp
#/sbin/ifconfig br0 192.168.0.103 # static IP

# 設定防火牆, 允許 bridge interface 的 Input / Output
iptables -A INPUT -i br0 -j ACCEPT
iptables -A OUTPUT -o br0 -j ACCEPT

# add bridge to hostapd.conf and restart hostapd (allows to use WPA)
# 原指令為執行 hostapd 來啟動 ath1 的 AP
# 改為直接用 iwconfig 來啟動
# 因為 hostapd 不熟不清楚設定,hostapd 能支援 wpa...等認證
[ `grep -c bridge=br0 /tmp/hostapd.conf` = "0" ] && echo bridge=br0 >> /tmp/hostapd.conf
/usr/bin/killall killall hostapd
#/usr/sbin/hostapd -B /tmp/hostapd.conf
/usr/sbin/iwconfig ath1 essid HOME mode Master key xxxxxxxxxxxxxxxxxxxxxxxxxx(麻煩請自己取)

# restart public SSID (doesn't work!)
# 重新啟用 FON 的開放連線, 不確定能否使用, 看起來是不能
/sbin/ifdown hotspot
/sbin/ifup hotspot


我們先把它存成/tmp/test.sh,執行看看能不能跑。

確定是ok的,我們把它移到/etc/init.d/讓它在開機時能自動執行,步驟如下:
chmod 755 /tmp/test.sh
mv /tmp/test.sh /etc/init.d/N15bridge


重開機之後,等一陣子,得到了相同的效果,表示我們成功了~~ :D

2007年1月2日

自走車計畫展開

2007年的新計畫是什麼?

我個人來說,我打算開始做8051自走車了。
說起來有些給它丟臉,一直以來都覺得8051自走車很過時,之前還嚴厲批判過8051自走車早該進垃圾桶了,但是,我的新計畫竟然是要做它。

說起來,在高職時,我就去參加過自走車比賽,不過很可惜的,當時的軟硬體都是老師做好的,我們算是掛掛人頭罷了。
話說回來,很多人也許在想,都幾歲了,都什麼年紀了,還要搞8051自走車,也太遜了吧,甚至會有人開始說,那東西簡單了,我都做過了........麻煩這種人來封信吧,給點意見... :D

我的目標很大,我真正希望做的,是把ARM開發板放上去的自走車,而且我希望作坦克車,打算用遙控坦克車來改,在加入了ARM之後,我要有Webcam和Wireless的能力,進一步做出智慧型的車子來玩........
完成了,接著把遙控船抓來改,都放在那邊發霉很久了,對它很不好意思~~
因此我打算分三階段來做:
第一階段先完成8051部份的東西,像是重要的電源電路和感測電路,電源電路完成後,更換更大的元件,用在ARM開發板上,感測元件則和8051的相同,要接上ARM開發板。
第二階段,依據遙控車來做馬達控制,也就是可能會直接跳過達靈頓電路為主的電流放大馬達驅動電路。
能夠完成到這裡,車子大概也差不多了,接著才會開始動船的主意,畢竟船和車子不同,出去了,會回不來低...... :p

以上是我的新年新希望。 :D

新NX 使用心得

2007年到了,在2007年的開始第一天,我做了什麼?

我把我的MythTV重新裝了幾次,因為之前的160G硬碟損毀(過熱),雖然上面沒有影片、沒有MP3,但是上面有之前的所有過程設定檔,一切都要重新來過..... :(

另一方面,也很幸運的把NX的遠端聲音播放弄出來了,加上之前網路分享測試過的,NX的幾個重要機能都try出來了,下面是加入聲音播放的使用心得。

====================================================
NX 使用心得:

NX 是由 NoMachine 這家公司推出的技術,
NoMachine 很大方的將它們的核心技術 NX 以 GPL 的方式開放,
而 FreeNX 則是網路上 OpenSource 社群以 NX 技術為基礎開發的 OpenSource 程式,
目前來說,NoMachine 和 RealVNC 類似,有提供一個免費的版本供人使用,
而 FreeNX 和這個版本相比,目前差異性並不大,
而且網路上的教學,大部分的說明在安裝 FreeNX 的同時,
也是要裝這版免費版,以取得其中的核心 NX 技術來用。

而我自己的使用上,FreeNX 是不會動的,
而 NX Free Editor 則運作順利,且異常容易安裝,
讓我還以為是不是有什麼陷阱.... :p

NX 在 Debian 上得安裝十分容易,
我這邊簡單列出步驟,詳細就不說了~~

1.下載 NX Free Editor 的 NX Server
下載 NX Node
下載 NX Client
上述的 Linux Debian deb 版本

2.依序安裝 NX Client -> NX Node -> NX Server,
在安裝時,會說有相依套件沒裝,此時不用擔心,直接進 aptitude,
接著按「g」,它就會自動把相依套件裝上去

3.設定 /usr/NX/etc/node.cfg,加入
AGENT_EXTRA_OPTIONS_X = "-fp /usr/share/fonts/X11/misc"

原因是,現在的 Debian 在 testing 或 unstable 都已經是 X11R7 了,
對字型的目錄已經改過了,這邊需要指定字型目錄,我是隨便找個字型目錄,
可以用了我就沒在意差異性了~~~

4.按照網頁
http://www.lxnaydesign.net/index.php?option=com_content&task=view&id=92&Itemid=2

解說來進行修改,不然會造成在 X-win 當中,鍵盤完全沒反應(本機、NX 均是),這是 NX 的 bug~~

5.輸入法問題設定
輸入法問題,還是得用 script 的老方法來解決,解法和 VNC 極為雷同,
在 /usr/NX/bin/ 編寫兩個 script 檔,用來對應到 KDE 和 GNOME 的啟動,分別如下:

/usr/NX/bin/KDE.sh
=============================================================
#!/bin/tcsh

setenv LANG zh_TW.UTF-8
setenv XMODIFIERS "@im=SCIM"
setenv GTK_IM_MODULE "xim"
/usr/bin/scim -d
/usr/bin/dbus-launch --exit-with-session startkde
=============================================================

/usr/NX/bin/GNOME.sh
=============================================================
#!/bin/tcsh

setenv LANG zh_TW.UTF-8
setenv XMODIFIERS "@im=SCIM"
setenv GTK_IM_MODULE "xim"
/usr/bin/scim -d
/usr/bin/dbus-launch --exit-with-session gnome-session
=============================================================

寫好之後,變更 script 檔權限,如下:
chmod 755 /usr/NX/bin/*.sh

再來修改設定檔 /usr/NX/etc/node.cfg,如下:


COMMAND_START_GNOME="/usr/bin/dbus-launch --exit-with-session gnome-session"

改為
COMMAND_START_GNOME="/usr/NX/bin/GNOME.sh"


COMMAND_START_KDE="/usr/bin/dbus-launch --exit-with-session startkde"

改為
COMMAND_START_KDE="/usr/NX/bin/KDE.sh"

即可。

PS:
/usr/bin/dbus-launch 的作用是,它類似 WindowsXP 的登入管理員,讓你下次登入時,恢復上次執行的 session。

==================================================================
(2006-09-02)
因為之前用 VNC,把 Port Map 對應到 5901,
在不希望變更設定的前提下,
打算變更 NX 的連接埠設定,
要怎麼改呢?

基本上,NX 使用 SSH 來進行連接,
因此 NX 只會使用「1個」連接埠,
而預設,這個連接埠是 22,
要變更設定,有一點要注意,
那就是 OpenSSH 也要更改,因為 NX 的 SSH 是相依在 OpenSSH 上的。

下面是設定:

1.新增 SSH連接埠 5901
/etc/ssh/sshd_config
=============================================
# What ports, IPs and protocols we listen for
Port 22
# Use these options to restrict which interfaces/protocols sshd will bind to
...

改為
# What ports, IPs and protocols we listen for
Port 22
Port 5901
# Use these options to restrict which interfaces/protocols sshd will bind to
...

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

2.修改 NX 的 連接埠 的相關設定,
原則上就是改
/usr/NX/etc/server.cfg
/usr/NX/etc/node.cfg

裡面所有的 22,並把它改為 5901,
這邊要注意的是,改完之後,有註解的要把它拿掉。

改成如下:
/usr/NX/etc/server.cfg
=============================================
....
#
# Specify the TCP port where the NX server SSHD daemon is running.
#
SSHD_PORT = "5901"
....
#
# Specify the TCP port where the SSHD daemon is running on the NX SSH
# authentication server.
#
SSHD_AUTH_PORT = "5901"
....
=============================================

/usr/NX/etc/node.cfg
=============================================
# Specify the TCP port where the NX node SSHD daemon is running.
#
SSHD_PORT = "5901"
=============================================

3.重新執行 OpenSSH 和 NX
/etc/init.d/ssh restart
/etc/init.d/nxserver restart

或者心情不好,重新開機也可以~~

即可~~

2007-01-01
==================================================================
新的一年有新的趣味~~


NX 的媒體播放終於測試出來了~~

NX 的影像一開就會放了,但是聲音始終出不來,NX 的聲音怎麼設定?

NX 的聲音部份是使用 esd,也就是 ESounD 這套混音系統,
ESounD 的主要功能是讓 Linux 上多個應用程式能夠同時使用音效卡裝置,
所有的作業系統,通常都只會有一個音效裝置,
要讓一個音效裝置同時給多個程式使用,就需要一個音效系統(混音系統),
因此 Linux/FreeBSD 在幾年前,同時只能有一個程式播放音樂或音效,
這樣的問題和早期 DOS 時代一樣,當進入 KDE/GNOME 後,
因為桌面環境的需要,開始了幾個音效系統的開發,
ESounD(簡稱 ESD 或 esd) 和 aRts 就是兩套當時開始的音效系統,
這類音效系統主要的工作是將所有要播放的聲音進行混音後播放,
因此稱作混音系統~~~

而目前較有名的音效驅動程式有 ALSA 和 OSS,
OSS 是商業的驅動程式,早期提供的很多音效驅動程式都只能試用,
後來逐步開放使用,
ALSA 則是因應 OSS 的發展,開發的 OpenSource 的音效驅動程式,
ALSA/OSS 和 ESounD/aRts 的關係是,ALSA/OSS 提供驅動程式驅動音效卡裝置,
而 ESounD/aRts 則負責讓多個應用程式同時使用 ALSA/OSS。

不過目前的 ALSA 已經很強了,ALSA 本身也內建了混音系統,
儘管說 ALSA 的混音系統聽說不是很好,不過不知道這新聞是多久前的,
一般來說使用上是還ok.......

NX 的多媒體功能,是以 ESounD 為基礎,也就是說,
只要 Linux 能支援 ESounD,NX 就可以遠端聽到聲音,
在現在的 GNOME 上,要開啟 ESounD,
只需要在「桌面->偏好設定->音效」,
在「啟用軟體混音[ESD]」和「播放系統音效」上打勾即可。

而要注意的是,在使用播放軟體時,要注意播放軟體是否支援 ESD,
通常是在安裝套件時會發現,有特別分出 -esd、-alsa、-oss、-arts,
以 vlc 為例,vlc 就有 vlc-plugin-esd、vlc-plugin-arts....等。
================================================