2009年2月12日

Media Center Linux升級

(本文同步回覆在Linux Media Center設置心得(使用DiGiMatrix搭配Debian使用MythTV或Freevo))
在今年過年的連假,將Media Center改灌成Mythbuntu了(又一台電腦被Ubuntu佔領啦~)。
整個安裝的確方便快速很多,以往lirc需要自己重新編譯相對應的kernel module或kernel,現在已經完全不需要了,在安裝時直接可以用選單選擇,選好、安裝完畢後即可使用。

由於Ubuntu和Debian系出同源,所有原先Debian上的設定全部都可沿用,整個移機重灌的過程中,雖然沒有完全無痛~但頂多也只是小痛~非常推薦Mythbuntu。

如果是完全沒裝過Media Center,希望以Linux作為Media Center的話,強烈推薦Mythbuntu,幾乎所有以前需要辛苦的設定,Mythbuntu都只需要簡單的選單選項即可完成,不需要花費功夫處理。

關於diskless的部份,目前已經處理完畢了,這部份是整個移機過程中最痛的部份,因為Mythbuntu預設的kernel initramfs是硬碟開機,因此無法直接diskless安裝,我是先用硬碟裝好,然後複製到NFS Server上的。

而設定上,大部分參照Booting On PXE And On A Customized Debian System的設定即可,
比較不一樣需要處理的,是要修改
/etc/initramfs-tools/initramfs.conf

確定以下幾個參數:
BOOT=nfs
DEVICE=eth0
MODULES=most


首先最關鍵的是 BOOT=nfs,不設這項,則開機後會出現「/dev/nfs does not exist」,反過來如果設了,則會無法硬碟開機。

接著是 DEVICE=eth0,這裡要設定相對應的網路裝置,沒設對則開機後會造成在網路卡的位置死掉!

再來是 MODULES=most,這項可以改成 netboot,改成 most 則所有 module 都會載入。

存檔後執行
update-initramfs -u

完成後即可用diskless的系統開機了。

2009年2月3日

關於「有趣的預言&先知」

因應原網站作者早先留言,該文已於1月初即已收編,
未來該文將不再登載,原文連結將永久無效,
在此公告。

原作者留言如下:
============================
您所說的都不是根據事實
雖然發表個人文章實屬言論自由
但由於您的部分發言已經涉及到刑法上之
[譭謗罪][造謠罪][人身攻擊]
並讓該廟負責人及信眾深感不悅
本網已拍照存證
望君一個月之內拿下此篇文章
不然我們將偕同網警採取法律途徑
感謝您的合作
============================

2009年2月2日

自力開發的Java FTP Server

去年年底忙完國科會計劃書之後,就開始發瘋的用Java寫FTP Server,過年期間同樣沒有懈怠,持續發瘋中~

既然是發瘋的成果,自然成果驚人。

我寫的FTP Server取名叫做「MyFTPBox」。

和其他自己寫得程式一樣,在開發時有注意使用的套件授權。
目前MyFTPBox使用的第三方套件只有SQLiteJDBC,這個SQLite的Java API授權是BSD,非常自由。
因此目前來說,產權沒有任何問題。

MyFTPBox目前已經支援下面功能:
1. 完全支援 UTF8,啟動時偵測系統的檔案編碼,並以此作為預設編碼,FTP Client登入後,可以使用OPTS UTF8 ON支援UTF8(Linux下由於預設都已經是UTF8編碼,因此FTP Server預設編碼直接是UTF8)

2. 經過簡單的測試,看起來能夠正常支援MODE ZMODE Z是一種壓縮技術,使用zlib作為壓縮的演算法,它會在資料傳輸過程中自動壓縮,不需要額外設定,但FTP Client同樣需要支援MODE Z,目前用CuteFTP Pro、SmartFTP測試,在使用MODE Z後,CuteFTP ProSmartFTP仍舊能夠正常的顯示出檔案列表,證明應該是work的

3. 流量控制,每個使用者能夠設定流量限制,但目前只能對每個連線限制流量,例如我限制10k,當同時下載2個檔案時,2個檔案都是10k

4. 極端混亂且可能有問題的虛擬檔案系統,我仿照ZFTP Server的模式設定,可以新增虛擬目錄,也可以把實體目錄對應到虛擬目錄下,但目前還有些bug(混亂原因在於,ZFTP那應該是用linklist寫的,我是用SQL寫的,SQL上資料都是平面的,而且因為欄位的關係,目前我處理目錄的方式很笨,寫得也亂)

5. 帳號管理、虛擬檔案系統均使用SQLite管理,因為都使用SQL code,因此未來很容易可以移植到mysql、M$ SQL Server,甚至M$ Access中,至於Server的設定,由於要可以指定使用的SQL Server和帳號密碼等,目前傾向另外用xml來儲存,用xml儲存的設定應該會包括Server Port、Admin Port、SQL、系統編碼

6. 簡易的Telnet管理介面,目前有實做了管理用Telnet Admin Server,目前可以用telnet的方式連入進行帳號、虛擬檔案系統的管理,未來畫出GUI的管理程式後,就可以有類似ZFTP Administraotr Interface那樣的管理程式來操作了。

7. 其他比較值得提到的,大概就是PASV/PORT mode,正式一點的FTP Server原則上都支援了,只有那種超小型的FTP Server半成品才不支援PASV mode,我的Java FTP Server能夠正常的支援PASV/PORT mode;此外,大概就是檔案列表吧~目前我的Java FTP Server支援UNIX Style檔案列表和MLSD/MLST Style檔案列表,這也是比較正式的FTP Server原則上都支援的(UNIX上的FTP Server有可能只支援UNIX Style)

整體來說,基於老王賣瓜的心裡,我認為這FTP Server還不錯,不過還需要花很多時間繼續加功能和修程式,但以功能性來說,目前Windows上主流FTP Server有的幾個功能都有支援了,不過都不夠完善就是了。
那最容易被問到的就是,既然都有了,那寫它幹嘛?它作用是?
首先,它就基本的FTP Server來說算是完成度很高的,它再加入SSH Tunnel的功能後,可以寫成類似Tunnelier這樣的SSH Tunnel程式,並且和Tunnelier一樣可以作到FTP-SFTP-Bridge的功能。
而目前Java的SSH Tunnel API很多,而且幾乎都是BSD、LGPL的,要開發Java版的SSH Tunnel並不難。
除了可以延伸寫成支援FTP-SFTP-Bridge的SSH Tunnel外,它算是我第一個檔案傳輸伺服器的程式,基本樣式完成了,未來要改成影像串流或其他檔案傳輸用的Custom Server都可以節省伺服器開發的功夫。
而這套Java FTP Server本身可能的賣點是,雖然在Windows上FTP Server選擇很多,像ZFTP Server、FileZilla Server、G6都是常見的選擇,我也是以它們為範本開發的,但首先,ZFTP Server在3.0之前都還不支援UTF8,G6要錢,FileZilla Server的管理介面非常難用。
其次,我們把場景放到Linux上,Linux上的FTP Server幾乎都強調高效能、高穩定性,但是很少可以像ZFTP Server、FileZilla Server這樣有虛擬檔案系統可以讓我們自己拉目錄,使用者管理又幾乎都跟系統帳戶綁在一起,不用系統帳戶,就要透過複雜的步驟讓FTP Server支援mysql。
對大部分人來說,僅僅希望在Linux上安裝個FTP站台,專門放mp3、動畫這樣簡單的需求,卻要搞得好像要開ftp.ntu.edu.tw這樣的大型站台。
然而對於一般性的需求,像是頻寬限制,帳戶登入時間管制之類的,卻要辛苦的k 使用手冊,找設定找半天才能作到,如果以這樣的角度來看,我認為我這套Java FTP Server是有賣點在的,因為它跨平台,又以Windows FTP Server為範本,用在Linux上反而能凸顯出它的特殊性,像MODE Z,Linux上有多少FTP Server支援它?應該很少吧~

PS:
最後附註一下,一直以來Java都號稱對網路程式開發可以很容易的設計,我一直都對此疑惑,但這次寫FTP Server,我發現Java在開發FTP Server時,其實滿容易的,Java本身幾乎支援FTP Server所需的所有功能,像MODE Z的核心zlib,Java直接就有InputStream、OutputStream可以套用,套上去就有了,像UTF8也是,直接套個InputStreamReader加個編碼就搞定了,同樣是開發FTP Server,我相信用gcc和glibc應該會複雜很多,光要把zlib library套進socket stream應該就有點麻煩了,再處理UTF8和non-UTF8應該也不是輕鬆的事。

Office 2007專用的2003選單外掛

最近把家裡自己的桌機改安裝成WinXP Pro,也許會納悶~是「XP Pro」嗎?
是的~我自己的桌機之前一直都是Win2000 & Ubuntu雙系統。
前陣子Ubuntu用比較多,這陣子Windows用比較多,兩個系統適應的都不錯。

由於Win2000沒有終端機服務,MSN又只能用可憐的7.5,加上這台電腦CPU是P4-2.4HT,卻因為Win2000對HT支援並不好,始終有個疙瘩在,因此這次過年就把他更新成XP Pro了。

因為更新成XP Pro,C碟有了很大很大的空間,所以也一併把Office從2003升級成2007。

眾所皆知的,M$不知道發甚麼神經病,把Office2007的選單介面換了,更神經的是,它竟然不提供2003選單樣式,強迫可憐的芸芸眾生只能一邊幹一邊接受(XP至少都還提供所謂的「Windows Classic Theme」)。

不過沒關係,我們廣大的網際網路,萬能的Google給了我們選擇其他選擇。

用Google以「office 2007 classic」進行搜尋會發現,大概有2~3套的國外套裝軟體提供了這樣的功能,只要安裝它並輸入序號,就能夠變身成原來2003的樣式。
如果有人跟我一樣對正版軟體有奇怪的執著,沒關係,這裡提供了一個免費的選擇,和其他自由軟體、免費軟體一樣,要好好感謝開發的作者。
Excel Add-ins這個網站作者特別針對Office2007的Word、Excel、PowerPoint、Access開發了增益集外掛,只需要下載並直接點選執行它,它就會彈出視窗問你,是否要啟用這個「看起來很危險的增益集」,二話不說,啟用它~
重新開啟程式後就會看到選單多了一項叫做「增益集」,點它之後就會看到下面出現一排熟悉的選單。

我個人覺得相當不錯,讓我很方便的就能夠適應Office2007的操作。

至於XP Pro和Office2007怎麼來的?
相信許多人都知道去年M$有提供Office2007的學生方案(話說~這應該是因為Office2007銷售太差,普及率太低的原因才提出的吧...),身為對正版軟體、免費軟體有奇怪執著的我,就以自己和老妹的名義各買一套。
至於XP Pro,最近因為M$好像要淘汰XP了,XP Pro教育版價格跟之前隨機版、升級版一樣,而隨機版、升級版都不見了,擔心未來買不到XP,因此砸錢買了一套。

至於身為Linux/FreeBSD愛好者兼免費軟體愛好者的我為啥要花錢贊助M$?
相信我,目前的XP(Win2000)、M$ Office還是有非常大的必要性,OpenOffice我不是沒在用,但因為一堆原因,它跟M$ Office就是無法完全相容,可我老闆、國科會範本、學校論文範例,都是用Word格式,在這個看老闆看學校吃飯的環境下,我也只能低頭了。
至於Linux上的wine?相信我,它對M$ Office的支援只是「不錯」,並不是「非常好」,原因包括:
1. 像我有在使用Zotero管理參考文獻,WINE的M$ Office沒辦法支援
2. WINE的M$ Office甚至不能按「ctrl + s」進行存檔動作
3. 因為WINE的中文需要額外設定,也因為額外設定的關係,M$ Office顯示的字型會和一般Windows上的Office不大一樣(設定會有些差別),讓文件看起來就不同會不一致

PS:
我會因為遠端桌面而改用XP也許看來有點可笑,不過我有原因。
目前在Windows上,效能最好、支援性最好、各平台都有Client程式的,只有俗稱遠端桌面的終端機服務
有跨平台能力的,多半直接想到VNC,我之前win2000時的確都是用VNC,不過我相信任何用過遠端桌面的人,只要用一次VNC,就會直接移除了。
VNC底層不是用DirectX寫的,因此無法像終端機服務可以遠端直接看影片,VNC也不支援音效功能,沒辦法遠端聽音樂,在棒球8搶3轉播時,我不少同學用遠端桌面直接連到宿舍,用電視棒看轉播,邊看還會邊說,影像有點lag,但這在VNC上,是完全辦不到的。
VNC檔案傳輸能力很弱,到現在~只有Windows上的VNC可以傳檔案,而且是一個檔案一個檔案傳,還要用類似FTP那種選單來傳輸,遠端桌面整合網路芳鄰,非常方便,離譜的是,Linux上的遠端桌面client(rdesktop)也支援這能力,可以把Linux的「/」對應到遠端桌面上。
此外,不知道是不是VNC protocol不好,幾乎所有用VNC核心的遠端遙控,感覺效率都不好,反應鈍鈍的,吃頻寬又兇,而且解析度差、畫面常常不會更新
至於其他的遠端遙控程式,多半都還是小眾市場,大多只提供Windows的client,Linux上無法操控。
而以遠端遙控軟體來比較,不論Windows、Linux,M$的終端機服務整體來說,相當的優秀,它吃使用的頻寬小,因為使用圖示快取,畫面品質很不錯,加上前面提到的它直接用DirectX,影像、聲音都能通,而且品質非常好,它甚至能把遠端的Printer Port、Serial Port對應過來,要達成這些條件的遠端遙控軟體真的不多,在Linux上,我認為只有NX最接近,但NX目前還無法處理影像,聲音部份會lag大約3秒。

補圖:
Word 2007


Excel 2007


PowerPoint 2007