(本文適用 Windows 7 64bit 版本)
RAMDisk 通常是指定分配空間之後,不管你有沒有使用,都會吃掉實際可用的記憶體。例如你分一個 2GB 的 RAMDisk,到 Windows 的工作管理員可以看到記憶體已經被吃掉了。有一些 RAMDisk 有動態記憶體分配的技術 (Dynamic RAM Allocation),可以讓你吃多少用多少。這樣的好處是當你 RAMDisk 沒有用到的時候,系統不會將記憶體圈存起來,這樣你仍然可以使用完整的記憶體空間。當你真正放檔案到 RAMDisk 的時候,再真正的圈存記憶體。可惜有這個功能的 RAMDisk 是必須付錢的:VSuite Ramdisk、Primo Ramdisk之類。
現在,不管你用什麼 RAMdisk,只要使用微軟的 File-Based Write Filter (FBWF),就可以達到動態記憶體分配的效果。不過,這有幾個缺點:
不能放分頁檔到 RAMDisk 上 (因為 FBWF 啟動在分頁檔產生之後,而且原本縮小後的 RAMDisk 也無法容納)。
非 64bit 版本所能分配的空間有限 (XP: 320MB, Win7 32bit: 1GB, Win7 64bit: 128GB)。
當然,如果你不在意的話,倒是可以使用的很快樂。因為分配空間很重要,因此 64bit 的作業環境是最推薦的,上限 128GB 應該足夠的。
2012/05/07
2011/03/15
Android 程式: 注音倉頡輸入法非官方版
Android 手機刷機後通常 Android 預設沒有內建中文輸入法。像我自己因為不滿「摸拖」到今天都還沒釋出 Android 2.2 更新,前前後後刷了兩次 ROM。但這些 ROM 都是外國人修改的,沒內建中文輸入也是必然。於是有人在 Market 寫了一些中文輸入法。其中「注音倉頡輸入法」這個輸入法是 Google 台灣員工利用 20% 時間所寫的。(Ref: Open-sourcing Traditional Chinese IME on Android) 它輕薄短小卻實作了倉頡和注音的輸入法,而且介面簡潔,十分好用。坊間一堆輸入法都是 MB 起跳,它融合兩種輸入法竟然還可以維持 300KB 以內,真是驚人。
可是它自從 2010/04 就沒在更新了。它還有一些問題,例如標點符號的配置竟然是"。"句號比","逗號還要容易輸入。一般人的習慣應該是輸入逗號多於句號,這樣不太便利。而標點符號鍵盤也沒有常用的"、"頓號。因此我學會了安裝 Android SDK,下載輸入法原始碼,打算動手修改來符合自己需要。
可是它自從 2010/04 就沒在更新了。它還有一些問題,例如標點符號的配置竟然是"。"句號比","逗號還要容易輸入。一般人的習慣應該是輸入逗號多於句號,這樣不太便利。而標點符號鍵盤也沒有常用的"、"頓號。因此我學會了安裝 Android SDK,下載輸入法原始碼,打算動手修改來符合自己需要。
2010/07/07
PoPToP - Ubuntu 下架設 PPTP VPN
概要
以 PoPToP 在 Ubuntu 下架設 PPTP VPN 伺服器。這樣就可以透過 VPN 來幹很多事情,例如在公司連到家裡的 VPN 來上 MSN, 掛 PTT 之類的。或者存取遠端的網路芳鄰拿檔案。介紹
PPTP VPN 是許多 VPN 實現方法的其中一種,選擇它的原因是因為 Windows 已經內建 Client 端支援,可以直接進行 VPN 連線,不需安裝其他第三方軟體,最簡便。PPTP VPN 的連線過程中使用微軟 MPPE 128bit 加密。如果對安全性有非常大的需求 (例如 AES 256bit),建議使用其他解決方案,例如 OpenVPN。安裝方法
Ubuntu 套件 pptpd$ sudo apt-get install pptpd
非常簡單。
2010/04/18
FreeDOS on USB Stick/SD Card
最近從 PTT 入手了一台 ASUS EeePC 1000HAE,用了幾天感覺還不錯,10.1 吋螢幕果然比較好些,鍵盤的配置比起 8.9 吋也大多了。
因為有備份/分割/救援的需求,需要開機到 DOS 下來進行一些操作。由於 Windows XP 已經沒有製作開機片的工具了,找了一下發現網路上有一些相關教學,可以利用 FreeDOS 來製作 USB 隨身碟/SD 卡的開機媒體,遂整理如下:
參考以下文章:
- EEEPC_SD卡開機片製作(含工具程式)與GHOST 系統備份(XP)教學(圖解) - Mobile01 討論群組
- 愛作夢的男人: FreeDOS 用 USB Flash 開機
因為有備份/分割/救援的需求,需要開機到 DOS 下來進行一些操作。由於 Windows XP 已經沒有製作開機片的工具了,找了一下發現網路上有一些相關教學,可以利用 FreeDOS 來製作 USB 隨身碟/SD 卡的開機媒體,遂整理如下:
參考以下文章:
- EEEPC_SD卡開機片製作(含工具程式)與GHOST 系統備份(XP)教學(圖解) - Mobile01 討論群組
- 愛作夢的男人: FreeDOS 用 USB Flash 開機
2009/03/23
穿透 NAT - 遠端桌面連線軟體 TeamViewer
前面介紹使用 PacketiX VPN 服務讓兩台電腦連成一個區網藉以穿透 NAT 來遠端桌面連線,其實這太慢了。殺雞焉用牛刀,我推薦一款本身就具備穿透防火牆及 NAT 的遠端桌面軟體:TeamViewer。此軟體是一家德國公司製作的,本身有商業授權及一般非商用授權,商業授權6個月就要US$249,而非商用授權是免費的!(當然會有些限制,但是不影響使用,後面會提到)
此軟體跟其他 VNC 軟體最大的不同是,他不是單純的點對點連線 (遙控端 - 被控端),為了要達成穿透防火牆和 NAT 環境,它採用了中介伺服器的架構。所以一開始連線時會先連到他的中央伺服器,藉由中央伺服器幫你連到對方。因為 NAT 對外連線多無問題,有問題的多是對內,故連接到中央伺服器,由它代為牽線。
可能會有人疑慮:這樣我的操作不是會被看光?官方的說法是傳輸過程採用類似 RSA 的公開金鑰加密機制,中央伺服器僅代為牽線,兩端都達成協議後即開始以 UDP 傳輸,中央伺服器不予介入,所以很安全。不管你相不相信,這個軟體如果有問題應該會被大肆撻罰,畢竟商業版收費高昂,如果對企業來說都不安全了,個人用戶當然更不敢使用。但是這個軟體已經發展到 4.0 版本了,也沒聽說過安全問題,以此推論安全性方面應該是不必擔心 - 畢竟企業會比你更擔心安全問題。
1. 下載及安裝
官方提供安裝版跟USB免安裝版,我的建議是被控端下載安裝版並安裝,可以得到最大的便利性 (可以使用 Ctrl + Alt + Delete、可開機自動啟動、在登入畫面就可以被遙控)。遙控端直接使用USB免安裝版,連線完畢直接刪除即可,不留任何垃圾。之所以建議被控端安裝是因為安裝之後可以安裝為系統服務,這樣一開機便會常駐,方便連線,而且它可以在登入畫面就接受連線。也可以接受 Ctrl + Alt + Delete 指令跟重新開機 (一般/安全模式) 動作。如果是免安裝版上面的功能都沒辦法做到。
安裝版:下載頁面 (下載 TeamViewer (full version))
免安裝版:下載頁面 (TeamViewer Portable)
安裝時請注意選取授權,不要選到 Commercial 商業授權去了。一旦選到此項只能連線五分鐘之外,還有天數的限制。除非你真的使用於商業用途,不然就乖乖選 Non-Commercial / Free 吧。
免安裝版直接解壓即可,剩下的動作不必我解釋了吧。
2. 連線

啟動 TeamViewer,就可以看到主畫面。左邊是中央伺服器發給你的一組編號跟密碼,其中編號就是用來連線之用,取代IP的用途。此編號應該是綁 MAC Address 的,所以每個電腦應該都是固定的。密碼則是連線時認證用的一組密碼,免得有心人士亂連控制。預設情況這個值是每次隨機都不同的,但是稍後可以在設定內自行指定,回來後就發現變成如圖的「Predefind」(已定義)。
只要雙方都開啟 TeamViewer,被控端告訴遙控端 ID 編號跟連線密碼,遙控端只要輸入這些資訊就能輕鬆連線到對方的電腦,完全不必多加設定,還可直接穿透防火牆 / NAT,真可說是傻人救星!
3. 設定
Extra → Option 有更多細部設定可以調整,其中不乏安全性設定。

General - Your display name: 顯示名稱,對方連線後可以看到
Startup - Password: 預先定義密碼,設定完成後密碼就不會再是隨機的,方便定時遠端連線

Security 頁籤的設定可以讓你限定接受連線的對象,「Configure black- or whitelist」可以設定黑/白名單,阻擋所有人,除了特定ID的連線,這樣安全性就能大大提升。

Advanced 頁籤則能設定更多進階項目:
General - Temporarity save connection passwords... :
僅暫時記憶密碼。如果此項沒有勾選,下次重開程式連線時會發現密碼會記住,這很不安全
Network - LAN connections only:
不連接到中央伺服器,等於一般的VNC,只能靠IP互相連線,再也沒有穿透功能
DirectIn - Enable DirectIn Performance optimization:
打開監聽 Port 以加速。開啟一段時間可以發現會有大量 TCP 連線連入,研判這是一種每個人都能當中央伺服器的一種 P2P 機制,當然你也會連到別人的電腦 (我就有連到 SEEDNET, 亞太電訊, HiNet 過,這不可能是官方中央伺服器吧?)。開不開見仁見智,但我不喜歡別人連我電腦,所以關掉之外還加了防火牆規則通通擋掉,連線依然正常。
VNC 操作沒什麼好解釋的,玩了就會。值得一提的是 TeamViewer 支援「控制權交換」的動作,也就是角色互換,使用遙控的一瞬間變成被控的,這還滿有趣的。就遠端遙控功能來說,我甚至覺得 TeamViewer 比 UltraVNC 還要快速好用,當然後者是自由軟體且設定眾多 (加上有專屬加速 Video Driver) 仍是 TeamViewer 比不上的。如果還要加上 TeamViewer 的穿牆能力跟超傻瓜操作的話,TeamViewer 一定穩贏的嘛!
前面有提到免費版存在一個限制,那就是類似廣告的視窗 (Sponsored session):

這個視窗在使用一段時間後會出現,可能是遙控端出現、可能是被控端出現,或兩邊都同時出現。反正就是要你知道非商業授權不要用於商業行為這樣,順便打個廣告。基本上不影響使用,也不會像舊版一樣偵測到你是商業使用強迫斷你線的情況,仍可繼續使用。看在 TeamViewer 方便又免費的代價,偶爾出現幾次倒是無妨啦。
此軟體跟其他 VNC 軟體最大的不同是,他不是單純的點對點連線 (遙控端 - 被控端),為了要達成穿透防火牆和 NAT 環境,它採用了中介伺服器的架構。所以一開始連線時會先連到他的中央伺服器,藉由中央伺服器幫你連到對方。因為 NAT 對外連線多無問題,有問題的多是對內,故連接到中央伺服器,由它代為牽線。
可能會有人疑慮:這樣我的操作不是會被看光?官方的說法是傳輸過程採用類似 RSA 的公開金鑰加密機制,中央伺服器僅代為牽線,兩端都達成協議後即開始以 UDP 傳輸,中央伺服器不予介入,所以很安全。不管你相不相信,這個軟體如果有問題應該會被大肆撻罰,畢竟商業版收費高昂,如果對企業來說都不安全了,個人用戶當然更不敢使用。但是這個軟體已經發展到 4.0 版本了,也沒聽說過安全問題,以此推論安全性方面應該是不必擔心 - 畢竟企業會比你更擔心安全問題。
1. 下載及安裝
官方提供安裝版跟USB免安裝版,我的建議是被控端下載安裝版並安裝,可以得到最大的便利性 (可以使用 Ctrl + Alt + Delete、可開機自動啟動、在登入畫面就可以被遙控)。遙控端直接使用USB免安裝版,連線完畢直接刪除即可,不留任何垃圾。之所以建議被控端安裝是因為安裝之後可以安裝為系統服務,這樣一開機便會常駐,方便連線,而且它可以在登入畫面就接受連線。也可以接受 Ctrl + Alt + Delete 指令跟重新開機 (一般/安全模式) 動作。如果是免安裝版上面的功能都沒辦法做到。
安裝版:下載頁面 (下載 TeamViewer (full version))
免安裝版:下載頁面 (TeamViewer Portable)
安裝時請注意選取授權,不要選到 Commercial 商業授權去了。一旦選到此項只能連線五分鐘之外,還有天數的限制。除非你真的使用於商業用途,不然就乖乖選 Non-Commercial / Free 吧。
免安裝版直接解壓即可,剩下的動作不必我解釋了吧。
2. 連線

啟動 TeamViewer,就可以看到主畫面。左邊是中央伺服器發給你的一組編號跟密碼,其中編號就是用來連線之用,取代IP的用途。此編號應該是綁 MAC Address 的,所以每個電腦應該都是固定的。密碼則是連線時認證用的一組密碼,免得有心人士亂連控制。預設情況這個值是每次隨機都不同的,但是稍後可以在設定內自行指定,回來後就發現變成如圖的「Predefind」(已定義)。
只要雙方都開啟 TeamViewer,被控端告訴遙控端 ID 編號跟連線密碼,遙控端只要輸入這些資訊就能輕鬆連線到對方的電腦,完全不必多加設定,還可直接穿透防火牆 / NAT,真可說是傻人救星!
3. 設定
Extra → Option 有更多細部設定可以調整,其中不乏安全性設定。

General - Your display name: 顯示名稱,對方連線後可以看到
Startup - Password: 預先定義密碼,設定完成後密碼就不會再是隨機的,方便定時遠端連線

Security 頁籤的設定可以讓你限定接受連線的對象,「Configure black- or whitelist」可以設定黑/白名單,阻擋所有人,除了特定ID的連線,這樣安全性就能大大提升。

Advanced 頁籤則能設定更多進階項目:
General - Temporarity save connection passwords... :
僅暫時記憶密碼。如果此項沒有勾選,下次重開程式連線時會發現密碼會記住,這很不安全
Network - LAN connections only:
不連接到中央伺服器,等於一般的VNC,只能靠IP互相連線,再也沒有穿透功能
DirectIn - Enable DirectIn Performance optimization:
打開監聽 Port 以加速。開啟一段時間可以發現會有大量 TCP 連線連入,研判這是一種每個人都能當中央伺服器的一種 P2P 機制,當然你也會連到別人的電腦 (我就有連到 SEEDNET, 亞太電訊, HiNet 過,這不可能是官方中央伺服器吧?)。開不開見仁見智,但我不喜歡別人連我電腦,所以關掉之外還加了防火牆規則通通擋掉,連線依然正常。
VNC 操作沒什麼好解釋的,玩了就會。值得一提的是 TeamViewer 支援「控制權交換」的動作,也就是角色互換,使用遙控的一瞬間變成被控的,這還滿有趣的。就遠端遙控功能來說,我甚至覺得 TeamViewer 比 UltraVNC 還要快速好用,當然後者是自由軟體且設定眾多 (加上有專屬加速 Video Driver) 仍是 TeamViewer 比不上的。如果還要加上 TeamViewer 的穿牆能力跟超傻瓜操作的話,TeamViewer 一定穩贏的嘛!
前面有提到免費版存在一個限制,那就是類似廣告的視窗 (Sponsored session):

這個視窗在使用一段時間後會出現,可能是遙控端出現、可能是被控端出現,或兩邊都同時出現。反正就是要你知道非商業授權不要用於商業行為這樣,順便打個廣告。基本上不影響使用,也不會像舊版一樣偵測到你是商業使用強迫斷你線的情況,仍可繼續使用。看在 TeamViewer 方便又免費的代價,偶爾出現幾次倒是無妨啦。
穿透 NAT - 使用 PacketiX VPN 服務
畢業專題總算有個大概的方向了。之前有稍微提過我們打算作跟 RFID 或 Sensor Network 有關的系統,但是卻一直沒有頭緒,整個組就這樣當在那邊快一個月。好在有一位組員提出了他的構想,而指導教授也認為這個點子滿有趣的,這樣子總算有個底了。
也在最近完成了研究室的交接,我接收了一台 Pentium 4 2.8GHz 的老電腦,顯卡還是內建的,不過我 A 了一台 24 吋螢幕 (ViewSonic Q241wb),大雖大,可是一來顯卡只支援最大 1600x1200 解析度,二來這螢幕有很多亮點...Hmm...系上大概是看便宜才買的吧。接收後第一件事馬上先砍掉重練,不用說上一個人的系統一定被搞的亂七八糟。重灌過程也滿順利的,馬上就灌好了 Windows XP Professional SP3。因為我以後要常常學校家裡兩邊跑,所以想來搞個遠端連線,無奈經過測試,實驗室對外只有兩個 IP,而內部有六台電腦插上 Switch Hub 來達成共用,每一台電腦都沒有分配到 Public IP,簡單說是屬於 NAT 的網路環境。沒有Public IP就沒有辦法連到指定的電腦了,Port forwarding 我也沒有權限碰到機器去做調整,只好尋求解決方案。經過一番搜尋,我找到了最佳解:ASP 型 PacketiX VPN 服務。
PacketiX VPN,前身是幾年前很有名的 SoftEther 軟體,在免費版停止公開後推出了 2.0 版本並改名叫做 PacketiX。VPN 即是虛擬個人網路,可以藉由虛擬網卡和虛擬 Hub 把兩台異地電腦給連結在一起,組合成一個新的區域網路。架設 PacketiX VPN 的軟體是要收費的,但是 PacketiX 同時也提供了免費的 PacketiX.NET ASP (Application Service Provider,應用服務提供者) 型 VPN 服務供申請,讓你可以直接使用公開伺服器來產生虛擬 Hub,不必花費購買軟體自行架設。你只需要下載免費的 Client 端來產生虛擬網卡來接上這個虛擬 Hub,就能建構出一個虛擬LAN,聽起來很簡單吧。

(官網提供的介紹圖,跟你實際上建一個區域網路一樣,差別在於 VPN 全部都是虛擬的東西)
1. 申請帳號建立虛擬 Hub
連到 http://www.packetix.net/jp/vpn/ 頁面,點選「仮想 HUB の新規作成」就可以依照網頁指示申請一個虛擬 Hub 來管理,日後也可以點選「仮想 HUB 管理ログイン」來進行登入管理。
2. 登入建立連線使用者
建立好虛擬 Hub 後,就如同你新購買了一組 Hub 一樣,接下來的動作便是控管,不能讓隨便的人都能進入你的網路,所以藉由帳號密碼來管理。登入後可以看到各項管理功能。

其中我們先要點選「ユーザーの管理」(使用者管理)來新增可以使用此 VPN 的使用者。

要填的資料從上至下分別是使用者帳號、本名、說明跟所屬群組、使用者有效期限,其中只有第一個是最重要的,其他可以不必填。

密碼設定的話,直接使用「標準パスワード認証」(標準密碼認證)即可,下方連續輸入兩次密碼確認後,便可以點選「OK」建立新使用者。這個步驟依需求重複數遍,直到每個要加入 VPN 的電腦都有一個帳號。
3. 設定虛擬 DHCP 伺服器
點選左邊的「仮想 DHCP サーバー機能設定」(虛擬 DHCP 伺服器功能設定)進行調整,把 DCHP 打開,這是為了讓每個登入的電腦都能分配到一個虛擬 IP。

基本上勾選「仮想 DHCP サーバー機能を使用する」(使用虛擬 DHCP 伺服器功能),下面的設定保持如圖中的預設值便可,這樣日後登入的電腦便會獲得 192.168.30.10 等的 Private IP,這些在 VPN 的電腦要相互通信便可以直接使用這個 IP 來聯絡,無形中將數台在不同地方的電腦給串起來了。
4. 安裝 PacketiX VPN Client 軟體
這裡有兩個方法,一個是透過 IE ActiveX 控制項自動設定並安裝,一個是手動下載軟體安裝。我推薦手動安裝,但是前者卻可以自動設定,更為傻瓜。請點選管理畫面左邊選項「VPN クライアントソフトウェアのインストールと設定」(VPN Client Software 安裝與設定),就會有兩種方法讓您選擇,並列出手動設定項目跟設定檔案。
第一種方法 (ActiveX):畫面中有個文字輸入框,裡面的網址就是 ActiveX 自動設定的網址,只要使用 IE 瀏覽器連入,若您有系統管理員權限,便能全自動下載安裝設定,根據指示完成即可。
第二種方法 (手動):請到下載頁面: https://www.softether.com/jp/download/ 找尋「PacketiX VPN Client 2.0」,依照你的作業系統版本來下載,通常都是「Windows 32 bit (x86) インストーラ」(Win32 安裝程式) 吧。
下載下來的程式可能需要切換日本語系、刪除 AppLocale 以完成安裝程序,但我在另一台全新安裝完成的電腦上卻什麼事也不必做就安裝完成了。如果安裝過程失敗,請考慮刪 AppLocale 並轉日區再嘗試。轉日區只有安裝時需要,安裝完成後正式使用是不需要轉語系的。
安裝完成後請回到「VPN クライアントソフトウェアのインストールと設定」頁面下方,下載設定檔案,這樣便可以點兩下來執行設定程序,方便快速。

只要按下是便可以匯入設定,免除手動設定的繁複。
5. 設定登入 VPN 使用者

打開「PacketiX VPN クライアント接続マネージャ」(我想桌面上、程式集,甚至是右下方工作列都可以找到吧),你可以看到已經加入了我們之前新增的虛擬 Hub 連線資料,對著項目按右鍵,選擇プロパティ(屬性)來設定登入使用者:

右邊的「ユーザー認証」填寫之前登入的使用者帳號跟密碼,每台電腦各使用不同的使用者,這樣才能分別,按下OK儲存設定。
回到程式主畫面,如果你的下方並沒有出現如圖中的仮想 LAN カード(虛擬網卡)而是空無一物,可以在下方框格按右鍵選擇「新規仮想 LAN カードの作成」(產生新虛擬網卡),當然這是需要系統管理者權限的,按螢幕指示完成新增動作。
6. 連到 VPN 的虛擬 Hub
終於到最後的步驟,想互相連接的每一台電腦應該都完成安裝 VPN Client跟設定,只要對著程式上框格的接續設定點兩下,便可以連線到 PacketiX 提供的伺服器去。如果想要開機後就自動連線到 VPN,同樣在接續設定上按滑鼠右鍵,選擇「スタートアップ接続に設定」(設定啟動時連接),日後開機登入後便會自動連接。每一台電腦都依照上面的指示,便可以完成 VPN 的架構。
連線完成後,右下工作列應該會出現一個新的網路連線,提示你已經連上,可以查看分發的 IP 位置。你可以試看看ping 192.168.30.10 或是瀏覽網路上的芳鄰 (\\192.168.30.10),如果防火牆、系統權限等設定正確,應該會有所反應。更快確認的方法是到虛擬Hub管理頁面的「VPN セッション管理」(VPN Session 管理)查看已連接電腦,下方「IP アドレステーブル」(IP Address Table) 更能直接看出每台電腦分配到的 Private IP。

經過 PacketiX VPN 牽線後,我終於得到一個區網 IP 192.168.30.11,這就是我實驗室那台電腦在 VPN 代表的位置,要遠端連線,打 192.168.30.11 能正常連線;要共享檔案,\\192.168.30.11 能正常存取 (還能共用印表機,換句話說執行列印後我實驗室的印表機會動起來,不知道裡面的人會不會嚇死XD) 實驗幾天後,發現服務穩定且速度可接受,加上又是免費的 (Server 版授權金額很高,加上還要自己架,免費的 ASP 不用可惜),就這樣繼續用下去了。
也在最近完成了研究室的交接,我接收了一台 Pentium 4 2.8GHz 的老電腦,顯卡還是內建的,不過我 A 了一台 24 吋螢幕 (ViewSonic Q241wb),大雖大,可是一來顯卡只支援最大 1600x1200 解析度,二來這螢幕有很多亮點...Hmm...系上大概是看便宜才買的吧。接收後第一件事馬上先砍掉重練,不用說上一個人的系統一定被搞的亂七八糟。重灌過程也滿順利的,馬上就灌好了 Windows XP Professional SP3。因為我以後要常常學校家裡兩邊跑,所以想來搞個遠端連線,無奈經過測試,實驗室對外只有兩個 IP,而內部有六台電腦插上 Switch Hub 來達成共用,每一台電腦都沒有分配到 Public IP,簡單說是屬於 NAT 的網路環境。沒有Public IP就沒有辦法連到指定的電腦了,Port forwarding 我也沒有權限碰到機器去做調整,只好尋求解決方案。經過一番搜尋,我找到了最佳解:ASP 型 PacketiX VPN 服務。
PacketiX VPN,前身是幾年前很有名的 SoftEther 軟體,在免費版停止公開後推出了 2.0 版本並改名叫做 PacketiX。VPN 即是虛擬個人網路,可以藉由虛擬網卡和虛擬 Hub 把兩台異地電腦給連結在一起,組合成一個新的區域網路。架設 PacketiX VPN 的軟體是要收費的,但是 PacketiX 同時也提供了免費的 PacketiX.NET ASP (Application Service Provider,應用服務提供者) 型 VPN 服務供申請,讓你可以直接使用公開伺服器來產生虛擬 Hub,不必花費購買軟體自行架設。你只需要下載免費的 Client 端來產生虛擬網卡來接上這個虛擬 Hub,就能建構出一個虛擬LAN,聽起來很簡單吧。

(官網提供的介紹圖,跟你實際上建一個區域網路一樣,差別在於 VPN 全部都是虛擬的東西)
1. 申請帳號建立虛擬 Hub
連到 http://www.packetix.net/jp/vpn/ 頁面,點選「仮想 HUB の新規作成」就可以依照網頁指示申請一個虛擬 Hub 來管理,日後也可以點選「仮想 HUB 管理ログイン」來進行登入管理。
2. 登入建立連線使用者
建立好虛擬 Hub 後,就如同你新購買了一組 Hub 一樣,接下來的動作便是控管,不能讓隨便的人都能進入你的網路,所以藉由帳號密碼來管理。登入後可以看到各項管理功能。

其中我們先要點選「ユーザーの管理」(使用者管理)來新增可以使用此 VPN 的使用者。

要填的資料從上至下分別是使用者帳號、本名、說明跟所屬群組、使用者有效期限,其中只有第一個是最重要的,其他可以不必填。

密碼設定的話,直接使用「標準パスワード認証」(標準密碼認證)即可,下方連續輸入兩次密碼確認後,便可以點選「OK」建立新使用者。這個步驟依需求重複數遍,直到每個要加入 VPN 的電腦都有一個帳號。
3. 設定虛擬 DHCP 伺服器
點選左邊的「仮想 DHCP サーバー機能設定」(虛擬 DHCP 伺服器功能設定)進行調整,把 DCHP 打開,這是為了讓每個登入的電腦都能分配到一個虛擬 IP。

基本上勾選「仮想 DHCP サーバー機能を使用する」(使用虛擬 DHCP 伺服器功能),下面的設定保持如圖中的預設值便可,這樣日後登入的電腦便會獲得 192.168.30.10 等的 Private IP,這些在 VPN 的電腦要相互通信便可以直接使用這個 IP 來聯絡,無形中將數台在不同地方的電腦給串起來了。
4. 安裝 PacketiX VPN Client 軟體
這裡有兩個方法,一個是透過 IE ActiveX 控制項自動設定並安裝,一個是手動下載軟體安裝。我推薦手動安裝,但是前者卻可以自動設定,更為傻瓜。請點選管理畫面左邊選項「VPN クライアントソフトウェアのインストールと設定」(VPN Client Software 安裝與設定),就會有兩種方法讓您選擇,並列出手動設定項目跟設定檔案。
第一種方法 (ActiveX):畫面中有個文字輸入框,裡面的網址就是 ActiveX 自動設定的網址,只要使用 IE 瀏覽器連入,若您有系統管理員權限,便能全自動下載安裝設定,根據指示完成即可。
第二種方法 (手動):請到下載頁面: https://www.softether.com/jp/download/ 找尋「PacketiX VPN Client 2.0」,依照你的作業系統版本來下載,通常都是「Windows 32 bit (x86) インストーラ」(Win32 安裝程式) 吧。
下載下來的程式可能需要切換日本語系、刪除 AppLocale 以完成安裝程序,但我在另一台全新安裝完成的電腦上卻什麼事也不必做就安裝完成了。如果安裝過程失敗,請考慮刪 AppLocale 並轉日區再嘗試。轉日區只有安裝時需要,安裝完成後正式使用是不需要轉語系的。
安裝完成後請回到「VPN クライアントソフトウェアのインストールと設定」頁面下方,下載設定檔案,這樣便可以點兩下來執行設定程序,方便快速。

只要按下是便可以匯入設定,免除手動設定的繁複。
5. 設定登入 VPN 使用者

打開「PacketiX VPN クライアント接続マネージャ」(我想桌面上、程式集,甚至是右下方工作列都可以找到吧),你可以看到已經加入了我們之前新增的虛擬 Hub 連線資料,對著項目按右鍵,選擇プロパティ(屬性)來設定登入使用者:

右邊的「ユーザー認証」填寫之前登入的使用者帳號跟密碼,每台電腦各使用不同的使用者,這樣才能分別,按下OK儲存設定。
回到程式主畫面,如果你的下方並沒有出現如圖中的仮想 LAN カード(虛擬網卡)而是空無一物,可以在下方框格按右鍵選擇「新規仮想 LAN カードの作成」(產生新虛擬網卡),當然這是需要系統管理者權限的,按螢幕指示完成新增動作。
6. 連到 VPN 的虛擬 Hub
終於到最後的步驟,想互相連接的每一台電腦應該都完成安裝 VPN Client跟設定,只要對著程式上框格的接續設定點兩下,便可以連線到 PacketiX 提供的伺服器去。如果想要開機後就自動連線到 VPN,同樣在接續設定上按滑鼠右鍵,選擇「スタートアップ接続に設定」(設定啟動時連接),日後開機登入後便會自動連接。每一台電腦都依照上面的指示,便可以完成 VPN 的架構。
連線完成後,右下工作列應該會出現一個新的網路連線,提示你已經連上,可以查看分發的 IP 位置。你可以試看看ping 192.168.30.10 或是瀏覽網路上的芳鄰 (\\192.168.30.10),如果防火牆、系統權限等設定正確,應該會有所反應。更快確認的方法是到虛擬Hub管理頁面的「VPN セッション管理」(VPN Session 管理)查看已連接電腦,下方「IP アドレステーブル」(IP Address Table) 更能直接看出每台電腦分配到的 Private IP。

經過 PacketiX VPN 牽線後,我終於得到一個區網 IP 192.168.30.11,這就是我實驗室那台電腦在 VPN 代表的位置,要遠端連線,打 192.168.30.11 能正常連線;要共享檔案,\\192.168.30.11 能正常存取 (還能共用印表機,換句話說執行列印後我實驗室的印表機會動起來,不知道裡面的人會不會嚇死XD) 實驗幾天後,發現服務穩定且速度可接受,加上又是免費的 (Server 版授權金額很高,加上還要自己架,免費的 ASP 不用可惜),就這樣繼續用下去了。
2008/09/03
Google Chrome beta
不來寫一下說不過去XD 最近正紅的玩意。簡單說這個 Google Chrome (Google 瀏覽器)是Google釋出的開放原始碼軟體,核心採用 WebKit,另外 JavaScript 虛擬機器採用自行開發的 V8 引擎,可以提升 JavaScript 的執行速度。另外也同捆了 Google Gears 這個套件,可以讓 Web 應用程式在離線下依然能動作並儲存一些資料的功能。
他主要的獨特設計在於一個頁籤是一個 Process 的設計,加上自身的工作管理員就會有n+1個行程。另外嵌在網頁內的 Plug-ins 如 Flash 等執行時也會獨立成一個行程,避免在執行時發生錯誤把整個瀏覽器都給關閉了。這樣的設計不會影響其他行程,缺點是過多的行程吃的 CPU 跟記憶體十分可觀。
另外說的很好聽的「無痕式視窗」其實就是不留下本機紀錄的設計罷了,Trace Cookie 等東西要抓你來訪過網站的紀錄還是可以的,簡單說他的無痕是著重在客戶端使用者這方面的,可能拿來上一些エロ網站不錯用?怕被人家抓包的時候就用這個模式來瀏覽,不過我是傾向於瀏覽完畢手動清除歷史紀錄、Cookie 及快取,反正現在都內建一個按鈕輕鬆搞定。
V8 引擎值得大書特書。許多網站都對其作過諸如 SunSpider 的 JavaScript Benchmark,速度還比 Opera 9.52、Firefox 3.01 和 Safari 3.1.2 (w/ WebKit-r35986) 快許多。不過 Fx 最近有個新武器 TraceMonkey,不知道可否追上 V8?另外系出同源的 Apple Safari 不知有沒有機會享受 Google 的開發成果,將此 V8 引擎的技術編回 WebKit 造福自由社群。
最後預設的中文字型有點醜,Safari 的字型圓滑效果十分棒結果它竟然沒有得到半點好處。設定對於進階使用者也太過簡單了,至少留下 about:config 這種底層設定供玩家 hacking。不過以一般使用者來說,簡單好上手又清爽,應該是不錯的選擇。不過想要以此撼動 IE 帝國的占有率,對於那些無知的愚民們大概也無關痛癢,反正點兩下 e 圖示就能上網,根本就不會想換了。倒有可能跟既有的 Firefox, Opera 跟 Safari 使用者產生排擠現象,搶占這些本來就不多的比例。但我個人認為 Firefox 獨特的擴充自訂性是其他瀏覽器難以取代的,沒有滑鼠手勢或強大的分頁管理就跟斷了右手一樣難以上網,你能想像嗎?
假如少了 Google Gears,我覺得 Google Chrome 就只是另一種新設計的 WebKit 核心瀏覽器罷了。的確他許多的設計不錯 (一頁一行程、V8 Engine),但是少了 Gears 帶來的殺手級離線 Web 應用程式支援就變的一般。我了解 Google 想利用這個自訂的瀏覽器達成他自己的完美 Web 應用程式支援,但目前還看不出有什麼必須使用它的理由,我用 Firefox 也同樣可以看 GMail,並沒有因為使用 Chrome 就變得方便或功能增加,以前微軟的 MSN Explorer 就對自家服務整合的非常徹底且非常方便。當然 Google 可能只是想為未來的 RIA 豐富網路程式作一個理想運作平台而不僅僅為自身著想,我可能看到了他的目標,但我認為這樣還不太足夠就是了。現在只靠 Gears 還不足以有大突進,還是要看未來更多技術定案 (HTML 5) 並直接內建 (JavaScript Libraries) 支援這樣才有進化的感覺吧。
*本文使用Google Chrome撰寫。
09/04 追記:
Google Chrome 開源碼庫 Chromium (鉻元素) 及開放社群已經成立 (http://www.chromium.org/),另外還有 Nightly Build 可以嘗鮮,不過目前的程式碼十分混亂,還是等官方進一步公告開發進度再說吧。看來未來可以期待社群版 Chromium Build了。(官方釋出版才能用 Google Chrome,非官方編譯版只能用 Chromium 當名字)
另外看到有人提出 Chrome 跟 V8 一詞其實分別代表傳統美國大車的外觀跟引擎 (see: http://fred.ipod.to/blog/?post;1656#c4),能發現這點實在不簡單。
2008/03/08
H.264/HE-AAC Encode
最近線上視訊網站有了一些新聞,如以高解析高畫質 DivX 檔案為特色的 Stage6 宣布關閉 (聽說一個月線路費一百萬美金,燒錢啊),和ニコニコ動画 SP1 更進一步支援了 H.264 視訊編碼。據說 2007 年 6 月 YouTube 就有在私底下試驗 H.264 (可以在網址列加上 &fmt=18 開啟),這下子終於可以擺脫 FLV1 那個連影片內文都看不清楚的低畫質了 (FLV4 的 VP6 雖然近一步提升,但果然 H.264 還是更佳啊)
其實上面網站要支援 H.264 根本就不是難事,去年 (2007) 底 Adobe 釋出了 Flash Player 9.0.115.0 修正版本,這個版本就導入了 H.264 支援。換言之關鍵的是你瀏覽器上面的 Flash 元件,所以才聽說有人在ニコニコ動画 SP1 看 H.264 影片需要更新吧?(我個人是去年看到有網站在討論重大安全性更新就手動更新了) 實際試驗手上能用的 Mediaplayer.swf 看看,這個 SWF 檔使用了媒體播放元件,可以線上播放 FLV 檔案,塞給它 MP4 檔吃,一樣可行,證實了我的想法。於是需要調整適應的地方不算很多,可以快速享受 H.264 的高畫質,只不過電腦配備 (CPU、GPU) 不夠好的朋友們可得注意了。
所以要玩的話就得要靠一些工具幫助我們編碼,以前的 FLV1 可以用懶人工具 Riva FLV Encoder 快速編碼,FLV4 時代也有攜帶動畫變換君這種 N 合一的東西可以幫助我們,H.264 雖然也有一些工具 (轉給 PSP 或 iPod 看的),不過我比較喜歡自己找工具來搭配,網路上看到有人用 AviUtil 在轉 (Ref: x264(mp4) encode教學 (採用ニコニコ動画及AviUtl為例)),各位不妨做個參考。
我選擇土砲法,才能充分理解壓縮步驟,準備以下工具:
AviSynth Frame server,我要用它的 Lanczos4Resize 功能來幫我 Downscale 影片
x264 CLI Encoder x264 是一套知名的 H.264 壓縮實作,用人家編好的版本來作視訊壓縮
Nero AAC Codec Nero 大發慈悲,AAC音訊編碼器完全免費!不用可惜
MP4Box GPAC 套裝的一部分,用來將視訊 H.264/AVC 跟音訊 AAC 包在一起的程式
FFmpeg 老實說前面的工具可以通通不要就用 FFmpeg 就好,但一來沒有學習效果,二來我使用 Unofficial FFmpeg Win32 Builds 進行 x264 壓縮怎麼試怎麼失敗 (好像是函式庫對 Intel 雙核支援的問題?目前作者也沒解決,放很久了),而且似乎也沒有 LanczosResize 可以用,不得已拋棄最簡易方案。這邊還是要用它抽出 WAV 音訊以便讓 Nero AAC Codec 讀取
以上就是主要的程式,流程為:
最後再 H.264/AVC + AAC → MP4 (MP4Box),大功告成,其實也不難嘛。
自己為了方便,寫了一個批次檔來負責這一大堆動作,全面自動化。隨著不斷的測試和調整,批次檔的也改的越來越人性化,可以直接拖檔案給它處理,只不過又使用了其他東西 (比如說 Horst Schaeffer 的 Wfolder,選取目標資料夾用輔助程式) 和多了一些判斷,諸位可以無視,畢竟那不是重點。
我想批次檔用了許多技巧,看不懂也是有可能的,不過還是抓幾個重點來介紹。首先是使用 AviSynth 這一部分,我使用 ECHO 動態了生成 avs 檔案,裡面指定了 Lanczos4Resize 來作畫面縮小的動作。
再來是重頭戲 x264,可以看到指令列跟了長長一串,這就是可以學習到的地方。我不敢保證上面列的參數是最完美的,但我也參考了很多地方如漫遊酷論壇、Doom9等地方的許多討論串,得出每個參數的大致功用,依照推薦所設定的。關鍵還是在「--bitrate %VBITRATE%」這邊,指定視訊流量。另外「--pass」是開啟 Multipass 的選項 (二次編碼),聽說 3pass 還是有一點用,所以我也用上了。
接著是音訊部分,使用 FFmpeg 將來源檔 (注意我沒用 AviSynth 處理)的音訊解成 WAV 後,再給 neroAacEnc 吃。值得一提的是 neroAacEnc 提供兩個執行檔,我使用有 SSE 的版本,CPU 指令集有支援應該比較好吧。關鍵在「-br %ABITRATE% %ACOMPRESSION%」這邊,因為是批次檔所以夾雜變數,範例中會變成「-br 64000 -he」,這表示壓成 64Kbps 的 HE-AAC (-he 為強制壓成 HE-AAC,這種模式下壓縮低流量品質仍十分好),當然也要加上「-2pass」來給它二次編碼用時間換品質,畢竟壓縮 AAC 速度非常快,這點時間算不了什麼。
最後就使用 MP4Box 加入兩個檔案的視訊跟音訊,建立新檔案 merged.mp4,這個檔案就是辛苦的結晶啦,用 VLC、Media Player Classic 或是 KMPlayer 都可以看吧,如果有安裝 ffdshow, MP4Splitter.ax, CoreAVC 等想必會更好,觀看部分我就不特別著墨,反正大家都會裝整合包所以應該都可以看吧。
---
2008/12/12 修改: 更新 Nero AAC Codec 下載位置跟 x264 參數,新版取消 --bime 跟 --b-rdo
其實上面網站要支援 H.264 根本就不是難事,去年 (2007) 底 Adobe 釋出了 Flash Player 9.0.115.0 修正版本,這個版本就導入了 H.264 支援。換言之關鍵的是你瀏覽器上面的 Flash 元件,所以才聽說有人在ニコニコ動画 SP1 看 H.264 影片需要更新吧?(我個人是去年看到有網站在討論重大安全性更新就手動更新了) 實際試驗手上能用的 Mediaplayer.swf 看看,這個 SWF 檔使用了媒體播放元件,可以線上播放 FLV 檔案,塞給它 MP4 檔吃,一樣可行,證實了我的想法。於是需要調整適應的地方不算很多,可以快速享受 H.264 的高畫質,只不過電腦配備 (CPU、GPU) 不夠好的朋友們可得注意了。
所以要玩的話就得要靠一些工具幫助我們編碼,以前的 FLV1 可以用懶人工具 Riva FLV Encoder 快速編碼,FLV4 時代也有攜帶動畫變換君這種 N 合一的東西可以幫助我們,H.264 雖然也有一些工具 (轉給 PSP 或 iPod 看的),不過我比較喜歡自己找工具來搭配,網路上看到有人用 AviUtil 在轉 (Ref: x264(mp4) encode教學 (採用ニコニコ動画及AviUtl為例)),各位不妨做個參考。
我選擇土砲法,才能充分理解壓縮步驟,準備以下工具:
以上就是主要的程式,流程為:
來源檔案 → Lanczos4Resize (AviSynth) → H.264/AVC (x264) *視訊
└→ WAV (FFmpeg) → AAC (Nero AAC Codec) *音訊
最後再 H.264/AVC + AAC → MP4 (MP4Box),大功告成,其實也不難嘛。
自己為了方便,寫了一個批次檔來負責這一大堆動作,全面自動化。隨著不斷的測試和調整,批次檔的也改的越來越人性化,可以直接拖檔案給它處理,只不過又使用了其他東西 (比如說 Horst Schaeffer 的 Wfolder,選取目標資料夾用輔助程式) 和多了一些判斷,諸位可以無視,畢竟那不是重點。
@ECHO OFF
SETLOCAL
SET BASEPATH=%~dp0
SET VBITRATE=500
REM SET VRES=512, 288
SET VRES=512, 384
SET /a ABITRATE=64 * 1000
SET ACOMPRESSION=-he
SET VCOMPRESSION=qualityEX
REM fast, quality, qualityEX
REM Set destination directory
"%BASEPATH%Wfolder2" "SET DESTDIR=" . "Choose a destination directory" /noquote /backslash > "%TEMP%\result_destfile.bat"
CALL "%TEMP%\result_destfile"
IF NOT %ERRORLEVEL% == 0 GOTO :EOF
ECHO Creating avs script...
IF /I %~x1 == .AVI GOTO TYPE_AVI
IF /I %~x1 == .DIVX GOTO TYPE_AVI
GOTO TYPE_OTHER
:TYPE_AVI
ECHO AviSource("%~1", false).Lanczos4Resize(%VRES%) > "%TEMP%\result_frame.avs"
GOTO IF2
:TYPE_OTHER
ECHO DirectShowSource("%~1", convertfps=true, audio=false).Lanczos4Resize(%VRES%) > "%TEMP%\result_frame.avs"
:IF2
ECHO Encoding video...
IF NOT %VCOMPRESSION% == fast GOTO quality
REM Fast Compression
ECHO Preset: Fast
"%BASEPATH%x264" --threads 2 --progress --pass 1 --bitrate %VBITRATE% --stats "%TEMP%\result_x264.stats" --subme 6 --ref 5 --filter 0:0 --keyint 250 --min-keyint 25 --direct temporal --sar 1:1 --bframes 2 --b-pyramid --weightb --8x8dct --ipratio 1.40 --pbratio 1.30 --qcomp 0.8 --analyse p8x8,i4x4 -o NUL "%TEMP%\result_frame.avs"
"%BASEPATH%x264" --threads 2 --progress --pass 2 --bitrate %VBITRATE% --stats "%TEMP%\result_x264.stats" --subme 6 --ref 5 --filter 0:0 --keyint 250 --min-keyint 25 --direct temporal --sar 1:1 --bframes 2 --b-pyramid --weightb --8x8dct --ipratio 1.40 --pbratio 1.30 --qcomp 0.8 --analyse b8x8,p8x8,p4x4,i4x4 -o "%TEMP%\result_video.mp4" "%TEMP%\result_frame.avs"
GOTO encodeaudio
:quality
IF %VCOMPRESSION% == quality ECHO Preset: Quality
IF %VCOMPRESSION% == qualityEX ECHO Preset: Quality Extreme
REM Quality Compression
"%BASEPATH%x264" --bframes 16 --ref 5 --keyint 250 --min-keyint 25 --b-pyramid --qcomp 1.0 --subme 7 --analyse all --weightb --8x8dct --trellis 2 --me umh --mixed-refs --direct auto --threads 2 --thread-input --no-psnr --no-ssim --no-fast-pskip --no-dct-decimate --progress --pass 1 --bitrate %VBITRATE% --stats "%TEMP%\result_x264.stats" --sar 1:1 --ipratio 1.40 --pbratio 1.30 -o NUL "%TEMP%\result_frame.avs"
IF NOT %VCOMPRESSION% == qualityEX GOTO finalpass
REM Quality Extreme Compression
"%BASEPATH%x264" --bframes 16 --ref 5 --keyint 250 --min-keyint 25 --b-pyramid --qcomp 1.0 --subme 7 --analyse all --weightb --8x8dct --trellis 2 --me umh --mixed-refs --direct auto --threads 2 --thread-input --no-psnr --no-ssim --no-fast-pskip --no-dct-decimate --progress --pass 3 --bitrate %VBITRATE% --stats "%TEMP%\result_x264.stats" --sar 1:1 --ipratio 1.40 --pbratio 1.30 -o NUL "%TEMP%\result_frame.avs"
:finalpass
"%BASEPATH%x264" --bframes 16 --ref 5 --keyint 250 --min-keyint 25 --b-pyramid --qcomp 1.0 --subme 7 --analyse all --weightb --8x8dct --trellis 2 --me umh --mixed-refs --direct auto --threads 2 --thread-input --no-psnr --no-ssim --no-fast-pskip --no-dct-decimate --progress --pass 2 --bitrate %VBITRATE% --stats "%TEMP%\result_x264.stats" --sar 1:1 --ipratio 1.40 --pbratio 1.30 -o "%TEMP%\result_video.mp4" "%TEMP%\result_frame.avs"
:encodeaudio
ECHO Encoding audio...
"%BASEPATH%ffmpeg" -y -i %1 -ar 48000 -ac 2 "%TEMP%\result_audio.wav"
"%BASEPATH%neroAacEnc" -br %ABITRATE% %ACOMPRESSION% -2pass -if "%TEMP%\result_audio.wav" -of "%TEMP%\result_audio.m4a"
ECHO Merging mp4...
"%BASEPATH%MP4Box" -add "%TEMP%\result_video.mp4#video" -add "%TEMP%\result_audio.m4a#audio" -new "%DESTDIR%merged.mp4"
ECHO Job finished.
PAUSE
del "%TEMP%\result_*.*" /Q
我想批次檔用了許多技巧,看不懂也是有可能的,不過還是抓幾個重點來介紹。首先是使用 AviSynth 這一部分,我使用 ECHO 動態了生成 avs 檔案,裡面指定了 Lanczos4Resize 來作畫面縮小的動作。
再來是重頭戲 x264,可以看到指令列跟了長長一串,這就是可以學習到的地方。我不敢保證上面列的參數是最完美的,但我也參考了很多地方如漫遊酷論壇、Doom9等地方的許多討論串,得出每個參數的大致功用,依照推薦所設定的。關鍵還是在「--bitrate %VBITRATE%」這邊,指定視訊流量。另外「--pass」是開啟 Multipass 的選項 (二次編碼),聽說 3pass 還是有一點用,所以我也用上了。
接著是音訊部分,使用 FFmpeg 將來源檔 (注意我沒用 AviSynth 處理)的音訊解成 WAV 後,再給 neroAacEnc 吃。
最後就使用 MP4Box 加入兩個檔案的視訊跟音訊,建立新檔案 merged.mp4,這個檔案就是辛苦的結晶啦,用 VLC、Media Player Classic 或是 KMPlayer 都可以看吧,如果有安裝 ffdshow, MP4Splitter.ax, CoreAVC 等想必會更好,觀看部分我就不特別著墨,反正大家都會裝整合包所以應該都可以看吧。
---
2008/12/12 修改: 更新 Nero AAC Codec 下載位置跟 x264 參數,新版取消 --bime 跟 --b-rdo
2008/01/11
foobar2000 0.9.5
自從棄 Winamp 投 foobar2000 已有幾個年頭了,在新的一年 Peter 更新了程式推出 0.9.5 版。改進了不少為人所詬病的超簡潔介面,現在即使是預設使用者介面也可以裝的美美的了。用了一段時間的 0.9.4.4 也趁這時來個更新。不更新還好,一更新許多相容性問題跟著來。首先外觀配置全部重頭開始,許多原本熟悉的圖像全部換新了 (按鈕。連工具列的圖示也變了是怎樣XD) 還好一進入隨即有快速配置精靈,可以讓我選擇排版,挑了一個跟以前最像的 Simple Playlist + Tabs 之後,連這個 Playlist 也變了不少,可以選擇欲顯示歌曲欄位 (當然能隨意對換),更重要的群組排序功能也多了 (Windows XP 就有類似的功能,「排列圖示依」選擇適當的項目後,勾選「以群組顯示」就可以依照指定的項目排成群組更為容易尋找),預設的幾個排序模式不太喜歡,可以自己新增依 %album% 排序,這樣就可以按專輯名稱排序,十分美觀及方便。
接著習慣的熱鍵通通消失了,像是 Z 停止 X 暫停 C 播放、Num +/- 調音量,只好自己到設定內 General → Keyboard Shortcuts 手動新增,參考一下舊版本 (預設有十幾條) 新增慣用的到新版本 (預設才幾條),好不容易找回之前的手感。
好在擴充套件倒是沒太大問題,0.9 體系的小改版並沒有改到套件太多地方,不過官方 ChangeLog 確實改了一些套件部分,過舊的套件可能日後再升級就不能用了。大特點 Layout Editing Mode 也試玩了一下,感覺跟堆積木一樣可以自行增加元件、編排位置,很自由化。不過預設的幾個元件實在沒什麼好加的了,還是精簡的好。以後應該會開放擴充套件能擴充元件使其自由擺放吧。
最後將一些新版的預設值改成較為習慣的舊版設定值 (例如 Display Formatting 外觀顯示格式:視窗標題、工作列顯示提示,下方狀態列重新顯示音量大小等) 就大功告成了,聽點音樂輕鬆一下吧!
2007/11/14
Google Android SDK
看到有人在討論就去弄 SDK 玩了。簡單說這是一個由 Google 主導的開放式手機平台 (以 Linux 為底),雖然實機還沒有出來,不過已經開放讓大家可以自由撰寫程式了 (Java),Google 也用優渥的獎金吸引人來開發軟體。SDK 內建 Android Emulator,內有 WebKit 核心瀏覽器 (UserAgent: Mozilla/5.0 (Linux; U; Android 0.5; en-us) AppleWebKit/522+ (KHTML, like Gecko) Safari/419.3),瀏覽一下網站還滿有趣的。另外壓縮包也附了幾個範例可以先來試玩 (圖片的程式碼就是範例之一),畢竟我的功力還很嫩,短時間內也寫不出什麼吧。
有空再繼續補充。
2007/11/03
Need for Speed: ProStreet PC Demo
繼 XBOX360, PS3 的 Demo 後,終於眾所盼望的 PC Demo 也出來了。檔案 795MB,許多網站開始有分流了,想玩的可以下載了。安裝過程中有個小插曲,因為 AppLocale 的緣故,安裝一直都會失敗,將它移除重開機後再嘗試安裝便可以了。安裝佔 1.41GB,請清出多餘的空間安裝。Need for Speed: ProStreet (中譯:極速快感: 職業街頭) PC 中英文合版即將在 11/16 在台灣地區開賣 (北美上市日為 11/14),上個禮拜各大遊戲網站已經展開了預購。Collector's Special Edition (特別版) 價格為 NT$1290 (各大網站賣 1160),特典為:
1. 極速旋風時計
2. 職業街頭識別證織帶+證件夾
3. NFS11 典藏序號車牌
4. Subaru Impreza WRX STi 下載卡
這次沒有幕後花絮 DVD 了啊?有點可惜,雖然看過一遍就不會再看第二遍,不過可以對開發小組和開發過程有更多的認識,而且製作成本應該也很低吧XD (錄畫面剪接不需多少錢吧)。其中 4. 的下載卡是比較令人疑惑的東西,看說明似乎是上網登錄解開車輛,所以又要搞 Paid Downloadable Car 了?還是說只是提早解開爽一下罷了?(9 代「全民公敵」黑名單版號稱有更多特別圖裝,最後證實只是提早解開罷了,跟普通版並無兩樣)
回到遊戲本體。執行 Demo 之後映入眼簾的是滿版的寬螢幕畫面 -- 感動啊!終於原生支援寬螢幕了,先前的版本都只支援傳統 4:3 或 5:4 比例,終於也支援 16:10 了啊。看過了開頭片段後,進入遊戲開頭。Demo 提供兩個賽事 (各搭配戰駒 M3 E92, GT-R) -- Speed Challenge (速度挑戰賽) 和 Grip (抓地賽),遊戲中有最佳路線提示和煞車提示 (路線顏色變化),跟 World Racing 2 差不多的感覺。操縱模式分為 Casual (業餘), Racer (車手) 跟 King (王者),越高等電腦介入的程度就越小,試了一下操作手感跟前幾代好像不太一樣,需要重新適應,而我認為 Racer 應該是最適合我的程度。氮氣也不會自動補充而改為如 Ridge Racer (RR, 實感賽車) 的使用次數限制,使用時機更為重要 (而且持續效果還很短)。
談談遊戲硬體需求,這次官方指定顯卡和 CPU 都是 A 牌的,看來對 NVIDIA 又是一大不利。實際使用 7600GT 特效全開 (1680x1050 with 8X AA) 明顯有頓,不過還不至於到幻燈片的程度 (
談談遊戲效果,一直強調的煙霧特效,實在不錯,PC 版的煙感覺比 XB360 版少很多,是錯覺嗎?車體毀損效果只能說雖然有不過只有一半吧 (大概也是 World Racing 2 的程度而已),原本的 Trailer 表現的應該是連輪胎都能撞掉的效果吧,大概被車廠施壓或小組嫌麻煩而未製作。玩過 Colin McRae: DiRT 就知道撞個稀巴爛是什麼感覺 (還會影響車子性能),結果「職業街頭」連最基本的車玻璃都撞不破,未免太奇怪了吧。喊了好幾年的重播還是沒加,小道消息是製作小組來不及加 (果然還是留一手嗎-_-;),現在的競速遊戲沒有重播感覺就不及格啊。畫面比起「全民公敵」感覺又上一層樓,已經很難想像次世代的競速遊戲還能進化到什麼樣子。
最後談點擬真度。玩過 GTR2 Demo, BMW M3 Challenge 等擬真遊戲後,感覺 NFS11 進入擬真的大門只有一點點,雖然手感真的不同了,也多了輔助系統可關閉的設計,不過車體損毀影響效能的設計沒有表現出來 (DiRT 表現的可好了,連懸吊、散熱風扇、引擎、渦輪等都可損壞影響性能),看來留一手的程度相當明顯,製作小組不是做不出來,而是不想做吧。怎麼不傾大廠 EA 資源作一套媲美甚至超越 Gran Turismo 或 GTR 的賽車「模擬器」(Simulator) 呢?擬真先不說,能收錄大量車輛及賽道的遊戲相信就能受到一定程度的歡迎。
發現遊戲好像會自己截圖(?),在根目錄找到不少圖片,挖個幾張給各位看看:
(Intel Core2 Duo E6300 @ 1.86GHz, NVIDIA GeForce 7600GT)

最後我這次會去排首賣會搶購吧,等進一步的公開情報了。
11/06 追記:試玩版 Esc 竟然是抓圖按鍵!?難怪玩一輪抓了不少奇怪的圖片。希望正式版能修正。
2007/10/14
Eclipse Platform‧續
10/14 公告:囧 原來最近更新程式碼過後系統出現了一些問題導致瀏覽及回文出現問題,現已修復,不便之處請見諒。
---
最近上了本系開設的「資訊安全學程」的「資訊安全實習」時,教授給我們每個人自行分組要操作 ZigBee 的版子,簡單說這是一個分散式無線網路的技術,而我們操作的機器是由 Jennic 製作的 JN5139 開發套件。新玩意當然對大家都很新鮮,紛紛拿來把玩一番。本體有一個 Coordinator (上面還有 LCD)、兩個 Router 和兩個 End-device。設定好 Channel 後就可以自動尋找機器形成一組網路以監控溫度、溼度和光暗變化,也可以藉由電腦連線修改其中韌體。
這又跟 Eclipse Platform 有什麼關係?課程中我們嘗試安裝 SDK 準備修改韌體內容,一打開才發現韌體是用 C/C++ 寫的,雖然這不是意料之外的事情,不過確實資管的課程至今還未教過 C/C++,我自己也沒學過 (我算從 Visual Basic 入門→網頁/Script→ASP/PHP/Ruby→Java),早就有過覺悟一定要學會 C/C++ 的說,不過總是沒能成功,這次終於有點推力可以引誘學習。無論如何先搞好開發環境吧。
基本上我使用的軟體多以自由軟體 (Open Source) 為主,所以常見的 Microsoft Visual C++ 我自然是不會去用。之前有用過 VC++.NET 2005 Express (免費使用) 但是還要安裝 Platform SDK 什麼的一大堆,搞到最後只有開過 IDE 介面看看環境連個編譯都沒有試過。這次剛好看到 GCC 這個編譯器集合,其中有個分支計畫稱為 MinGW 是給 Windows 專用的環境,安裝了 gcc, g++, mingw-make 等檔案就差不多 (我沒安裝 GDB 除錯工具,畢竟還不會用)。接著需要一個稱職的 IDE……讓我想到 Eclipse。
舊有的 Eclipse 感覺怪怪的而且版本也舊了,乾脆砍掉重練比較快:下載了包含的 JDT 的 Eclipse 之後再安裝 CDT (C/C++), RDT (Ruby) 之後就大功告成。CDT 似乎會自動偵測 MinGW 的程式位置那就不必再設東設西,接著就能開啟新專案寫一個 Hello world 啦!

說也奇怪,用 MinGW C++ 編譯出來的東西怎麼可以吃這麼大的空間?確定是 Release 版本卻可以吃上幾百 KB,真是奇怪。
其實最早看到的是同捆於 JN5139 SDK 的 Code::Blocks 這個同是自由軟體的 IDE,試用過發現整合的相當不錯可惜只有 C/C++ 編譯功能所以才想到可以支援多個語言的 Eclipse 平台。另外我最早接觸的 C/C++ IDE 應該是 Dev-C++,不過可笑的是我竟然把它跟 VC.NET 2005 一樣只把玩個 IDE 然後就丟了,編譯功能一直沒有試過。更早以前的 Turbo C/C++ 就不要提了。
最後嘛...該先學 C 好還是 C++ 好呢?基於 C++ 出現比較晚所以我可能會先學 C 吧。
---
最近上了本系開設的「資訊安全學程」的「資訊安全實習」時,教授給我們每個人自行分組要操作 ZigBee 的版子,簡單說這是一個分散式無線網路的技術,而我們操作的機器是由 Jennic 製作的 JN5139 開發套件。新玩意當然對大家都很新鮮,紛紛拿來把玩一番。本體有一個 Coordinator (上面還有 LCD)、兩個 Router 和兩個 End-device。設定好 Channel 後就可以自動尋找機器形成一組網路以監控溫度、溼度和光暗變化,也可以藉由電腦連線修改其中韌體。
這又跟 Eclipse Platform 有什麼關係?課程中我們嘗試安裝 SDK 準備修改韌體內容,一打開才發現韌體是用 C/C++ 寫的,雖然這不是意料之外的事情,不過確實資管的課程至今還未教過 C/C++,我自己也沒學過 (我算從 Visual Basic 入門→網頁/Script→ASP/PHP/Ruby→Java),早就有過覺悟一定要學會 C/C++ 的說,不過總是沒能成功,這次終於有點推力可以引誘學習。無論如何先搞好開發環境吧。
基本上我使用的軟體多以自由軟體 (Open Source) 為主,所以常見的 Microsoft Visual C++ 我自然是不會去用。之前有用過 VC++.NET 2005 Express (免費使用) 但是還要安裝 Platform SDK 什麼的一大堆,搞到最後只有開過 IDE 介面看看環境連個編譯都沒有試過。這次剛好看到 GCC 這個編譯器集合,其中有個分支計畫稱為 MinGW 是給 Windows 專用的環境,安裝了 gcc, g++, mingw-make 等檔案就差不多 (我沒安裝 GDB 除錯工具,畢竟還不會用)。接著需要一個稱職的 IDE……讓我想到 Eclipse。
舊有的 Eclipse 感覺怪怪的而且版本也舊了,乾脆砍掉重練比較快:下載了包含的 JDT 的 Eclipse 之後再安裝 CDT (C/C++), RDT (Ruby) 之後就大功告成。CDT 似乎會自動偵測 MinGW 的程式位置那就不必再設東設西,接著就能開啟新專案寫一個 Hello world 啦!

說也奇怪,用 MinGW C++ 編譯出來的東西怎麼可以吃這麼大的空間?確定是 Release 版本卻可以吃上幾百 KB,真是奇怪。
其實最早看到的是同捆於 JN5139 SDK 的 Code::Blocks 這個同是自由軟體的 IDE,試用過發現整合的相當不錯可惜只有 C/C++ 編譯功能所以才想到可以支援多個語言的 Eclipse 平台。另外我最早接觸的 C/C++ IDE 應該是 Dev-C++,不過可笑的是我竟然把它跟 VC.NET 2005 一樣只把玩個 IDE 然後就丟了,編譯功能一直沒有試過。更早以前的 Turbo C/C++ 就不要提了。
最後嘛...該先學 C 好還是 C++ 好呢?基於 C++ 出現比較晚所以我可能會先學 C 吧。
2007/07/25
PHP 生成預覽圖的方法整理
最近在 Komica 的高解析度版碰到有人提問為什麼版面的預覽圖 (或稱縮圖) 有的出不來,4chan 的 High Resolution 版就沒有這樣的情形。事實上我早就知道原因,也在 Pixmicat! 貼圖板上作過應對措施,原因就是 GD 函式庫受限於 PHP 本身執行時記憶體用量的限制,執行 PHP 程式碼時,每一次能使用的上限預設是 8MB (php.ini memory_limit 設定),而 GD 的 ImageCopyResampled() 方法卻是把圖檔轉化成未壓縮的點陣圖形式。因此一張 3000x4000 的 24bit 圖像大概要吃掉 30~40 MB 不等的空間,而這個值遠超過預設的 8MB,因此生成預覽圖時必定失敗,還會在 errorlog 裡附送你「PHP Fatal error: Allowed memory size of XXXX bytes exhausted」的訊息。
一味的加大 memory_limit 並不能解決問題,即使我調到了 128M 好了,難保哪天來個 20000x30000 的巨量圖檔 (假設有的話 ;-)),這時候實在覺得這個上限綁手綁腳。在高解析版的回應提到 ImageMagick 函式庫,這也是一套免費的圖形處理函式庫,不過 GD 幾乎都跟 PHP 綁定,ImageMagick 就比較少看到伺服器有安裝的。試驗一下雖然他也是吃掉巨量記憶體,不同的是他似乎不會受到 memory_limit 的上限束縛,那這就是個好方案了。(假如伺服器的記憶體夠多的話)
PHP 要使用 ImageMagick 有三個方法:1. 直接命令列呼叫 2. Imagick 套件 3. MagickWand for PHP 套件,都需要先安裝 ImageMagick。其中 Imagick 有在 PECL 維護,MagickWand for PHP 似乎是 ImageMagick 官方製作。
1. 直接呼叫
利用命令列方法直接使用 ImageMagick 的執行檔,以下是範例:
這個方法可以在 PHP 的 exec() 方法使用,但是請注意主機商可能會因為安全因素封鎖此方法。
2. Imagick 套件
http://www.php.net/imagick 就有 API Document,不過這完成度根本就不能當參考嘛,還好他有將方法列出來了比較方便。我推薦這個套件因為他具有物件導向的特性,產生一個 Imagick 物件後就可以使用物件的方法來對圖檔進行操作。以下是範例:
3. MagickWand for PHP 套件
上網搜尋大家比較推這個套件,但是我實際測試的結果似乎水土不服,光讀取圖檔就發生錯誤導致 PHP 當掉,根本不能用,不過有的時候卻又奇蹟似的動作?總之也是值得一用,但是這個套件沒有物件導向的特性,導致方法來方法去的,而方法的第一個總是接受 MagickWand 資源。
題外,雖然官方網站有 API Document 看似完美,實際上很多方法並沒有列出來,像生成預覽圖的 MagickThumbnailImage() 方法竟然不在文件之列,讓我以為他沒有實作。實際上利用 print_r(get_extension_funcs('magickwand')); 查看發現根本就有,這是隱藏裡技嗎?一樣,請看範例:
我發現 ImageMagick 除了不受 memory_limit 限制,支援的格式也十分豐富。BMP 是直接支援的,連 AVI, SVG, AVS, JP2, PSD 都支援,其特效處理功力也非常強大,不過上面並沒有用到。此外智慧式的以副檔名直接判斷檔案格式也十分不錯。
對了,既然標題是「PHP 生成預覽圖的方法整理」,GD 預覽圖自然不可以拋棄,直接給範例:
自此生成預覽圖應該不是難事,如果要生成高解析度圖檔的預覽圖,我建議 ImageMagick + Imagick 套件來生成,短短幾行十分方便,比 GD 還省事,也比較快些,更重要的連 BMP 都直接支援,不必再去找 ImageCreateFromBMP (Pixmicat! 有收錄,原載於 PHP ImageCreate 的 User Contributed Code),而且這還沒有支援全部的 BMP,例如 BITMAPV4HEADER, BITMAPV5HEADER 檔頭、32bit, 32bit with BITFIELDS, 8bit with RLE8, 4bit with RLE4 等格式。
一味的加大 memory_limit 並不能解決問題,即使我調到了 128M 好了,難保哪天來個 20000x30000 的巨量圖檔 (假設有的話 ;-)),這時候實在覺得這個上限綁手綁腳。在高解析版的回應提到 ImageMagick 函式庫,這也是一套免費的圖形處理函式庫,不過 GD 幾乎都跟 PHP 綁定,ImageMagick 就比較少看到伺服器有安裝的。試驗一下雖然他也是吃掉巨量記憶體,不同的是他似乎不會受到 memory_limit 的上限束縛,那這就是個好方案了。(假如伺服器的記憶體夠多的話)
PHP 要使用 ImageMagick 有三個方法:1. 直接命令列呼叫 2. Imagick 套件 3. MagickWand for PHP 套件,都需要先安裝 ImageMagick。其中 Imagick 有在 PECL 維護,MagickWand for PHP 似乎是 ImageMagick 官方製作。
1. 直接呼叫
利用命令列方法直接使用 ImageMagick 的執行檔,以下是範例:
$ convert -sample 25%x25% Source.png Destination.jpg
這個方法可以在 PHP 的 exec() 方法使用,但是請注意主機商可能會因為安全因素封鎖此方法。
2. Imagick 套件
http://www.php.net/imagick 就有 API Document,不過這完成度根本就不能當參考嘛,還好他有將方法列出來了比較方便。我推薦這個套件因為他具有物件導向的特性,產生一個 Imagick 物件後就可以使用物件的方法來對圖檔進行操作。以下是範例:
3. MagickWand for PHP 套件
上網搜尋大家比較推這個套件,但是我實際測試的結果似乎水土不服,光讀取圖檔就發生錯誤導致 PHP 當掉,根本不能用,不過有的時候卻又奇蹟似的動作?總之也是值得一用,但是這個套件沒有物件導向的特性,導致方法來方法去的,而方法的第一個總是接受 MagickWand 資源。
題外,雖然官方網站有 API Document 看似完美,實際上很多方法並沒有列出來,像生成預覽圖的 MagickThumbnailImage() 方法竟然不在文件之列,讓我以為他沒有實作。實際上利用 print_r(get_extension_funcs('magickwand')); 查看發現根本就有,這是隱藏裡技嗎?一樣,請看範例:
我發現 ImageMagick 除了不受 memory_limit 限制,支援的格式也十分豐富。BMP 是直接支援的,連 AVI, SVG, AVS, JP2, PSD 都支援,其特效處理功力也非常強大,不過上面並沒有用到。此外智慧式的以副檔名直接判斷檔案格式也十分不錯。
對了,既然標題是「PHP 生成預覽圖的方法整理」,GD 預覽圖自然不可以拋棄,直接給範例:
自此生成預覽圖應該不是難事,如果要生成高解析度圖檔的預覽圖,我建議 ImageMagick + Imagick 套件來生成,短短幾行十分方便,比 GD 還省事,也比較快些,更重要的連 BMP 都直接支援,不必再去找 ImageCreateFromBMP (Pixmicat! 有收錄,原載於 PHP ImageCreate 的 User Contributed Code),而且這還沒有支援全部的 BMP,例如 BITMAPV4HEADER, BITMAPV5HEADER 檔頭、32bit, 32bit with BITFIELDS, 8bit with RLE8, 4bit with RLE4 等格式。
2007/07/06
2007/06/14
JavaScript Libraries CSS Selector Test
今天又閒晃看到個很有趣的測試。大家都知道 Web 2.0 網站有個滿重要的技術就是 AJAX (非同步 JavaScript 和 XML),也因這個技術使得 JavaScript 的地位逐漸被重視甚至上升。而開發當然有一些函式庫可以用,現在已經有很多可以選用了,第一次可能不知道從何選起吧。這裡有一個名為 SlickSpeed 的測試項目可以讓你以最現實的執行速度來做做考量。
我手上有 IE 6.0 SP2、Mozilla Firefox 2.0.0.4 (tete009 PGO Build)、Opera 9.21 和新的 Apple Safari 3 beta,就來做個測試吧。
測試環境:Windows XP Home Edition SP2, Intel Core2 Duo E6300, 2GB RAM
截圖:

簡單做個表格:
結論:
我手上有 IE 6.0 SP2、Mozilla Firefox 2.0.0.4 (tete009 PGO Build)、Opera 9.21 和新的 Apple Safari 3 beta,就來做個測試吧。
測試環境:Windows XP Home Edition SP2, Intel Core2 Duo E6300, 2GB RAM
截圖:

簡單做個表格:
| Prototype | jQuery | MooTools | ext | cssQuery | dojo query | |
|---|---|---|---|---|---|---|
| IE6 SP2 | 1314 | 2640 | 1060 | 697 | 5598 | 612 |
| Firefox 2.0.0.4 (tete009) | 124 | 2373 | 112 | 524 | 3233 | 218 |
| Opera 9.21 | 64 | 1582 | 76 | 132 | 942 | 80 |
| Safari 3 beta | 76 | 614 | 120 | 124 | 797 | 155 |
| (Average) | 394.5 | 1802.25 | 342 | 369.25 | 2642.5 | 266.25 |
結論:
- Safari 3 名不虛傳,確實夠快,正式版可以期待 (當然不是想它能夠普及大眾,而是又多個開發人員愛玩的瀏覽器)
- IE 6 果然奪冠 - 最慢的 XD
- jQuery 竟然這麼慢?希望未來開發團隊能最佳化。不然現實考量可能會轉用 Prototype 囉
- Firefox tete009 自有編譯版果然針對 JavaScript 執行最佳化。雖然這裡沒有 Firefox 官版的測試數據,不過從其他部落客的測試結果大略比較的確有差
2007/06/13
JRuby 1.0 - pure-Java implementation of Ruby
距離上次寫 Ruby 學習手札好像距離很長一段時間了orz
最近無聊亂繞多看了一些網誌,發現 JRuby 這玩意。原來這是個以 JVM 作為平台來實現 Ruby 語言的直譯器,實在有趣。剛好被我發現的時候出了眾所期待的 1.0 版本,對我來說也是剛好,馬上下載安裝。
JRuby 官網:http://jruby.codehaus.org/
如果是 Windows 環境,下載區內有個 jruby-bin-1.0.zip 的就是了。存到本機後隨意解壓,例如 C:\jruby。注意因為這是以 JVM 為平台的,所以 Sun 的 JRE 也要安裝,因為我個人就讀科系的關係,剛好有安裝 JavaSE 6 JDK。接著只要設定環境變數 PATH 和 JAVA_HOME 就搞定了。PATH 加上剛才解壓後的目錄內的 bin 目錄位置 (本例是 C:\jruby\bin),JAVA_HOME 就比較容易,直接找到 JRE/JDK 的安裝目錄就可以了,不需要特別指到 bin 目錄 (像我是 C:\jdk)。這樣安裝就完成了。
到底怎麼用呢?很簡單,打開命令提示字元,打入 jruby -v 看看,假如出現一行版本資訊 (ex: ruby 1.8.5 (2007-06-07 rev 3841) [x86-jruby1.0]) 那就成功啦,如沒有請檢查環境變數設定是否正確。接著便可以打開文字編輯器來寫 Ruby 了。
JRuby 吸引我的其中一個功能是它已經可以使用 Java 廣大的套件,例如 Swing (javax.swing) 套件,這根本是如虎添翼啊。我對 Ruby 的基本還不是相當熟,但是我對 Java 的熟練肯定比 Ruby 要來的高 (廢話,學科有當掉壓力啊XD 雖然我的成績沒有什麼危機w)。之前熟悉的一些套件碼就可以搬過來讓 Ruby 用用,實在不錯。所以就是改用 Ruby 寫 Java 程式的感覺,我想這樣的學習方式也不錯啦 XD
試寫 JRuby,第一行首先要引入 Java 操作套件庫,然就就可以跟 Java 接軌,這感覺真奇妙。能用我熟悉的 JOptionPane 作使用者交互介面還真好玩 :-)
以上程式碼主要使用 java.util.GregorianCalendar 和 JOptionPane.showConfirmDialog 做一些操作,以使用者輸入的年紀回算出生西元年。題外 include_class 不能像 Java 的 import 使用星號真是囧啊,常常忘記某個類別屬於那個 Package,還得到 API 查查。
喔,JRuby 跟 Ruby 一樣還是屬於 Scripting Language,雖然 JRuby 1.0 說有 JIT Compile 以提升執行速度,不過我沒看到什麼 class 檔出現。要執行 *.rb 檔只不過從以往習慣的 ruby *.rb 改成 jruby *.rb 罷了。
每次看到很多專案使用 RoR (Ruby on Rails) 就很想玩玩,不過我就是看不懂怎麼玩,還是先來學 Ruby 吧。剛好在學校圖書館借到「Ruby Programming - 向 Ruby 之父學程式設計」一書,而且可以到暑假後開學再還,加上有 JRuby 這麼有趣的東西,真該好好學習啊orz
最近無聊亂繞多看了一些網誌,發現 JRuby 這玩意。原來這是個以 JVM 作為平台來實現 Ruby 語言的直譯器,實在有趣。剛好被我發現的時候出了眾所期待的 1.0 版本,對我來說也是剛好,馬上下載安裝。
JRuby 官網:http://jruby.codehaus.org/
如果是 Windows 環境,下載區內有個 jruby-bin-1.0.zip 的就是了。存到本機後隨意解壓,例如 C:\jruby。注意因為這是以 JVM 為平台的,所以 Sun 的 JRE 也要安裝,因為我個人就讀科系的關係,剛好有安裝 JavaSE 6 JDK。接著只要設定環境變數 PATH 和 JAVA_HOME 就搞定了。PATH 加上剛才解壓後的目錄內的 bin 目錄位置 (本例是 C:\jruby\bin),JAVA_HOME 就比較容易,直接找到 JRE/JDK 的安裝目錄就可以了,不需要特別指到 bin 目錄 (像我是 C:\jdk)。這樣安裝就完成了。
到底怎麼用呢?很簡單,打開命令提示字元,打入 jruby -v 看看,假如出現一行版本資訊 (ex: ruby 1.8.5 (2007-06-07 rev 3841) [x86-jruby1.0]) 那就成功啦,如沒有請檢查環境變數設定是否正確。接著便可以打開文字編輯器來寫 Ruby 了。
JRuby 吸引我的其中一個功能是它已經可以使用 Java 廣大的套件,例如 Swing (javax.swing) 套件,這根本是如虎添翼啊。我對 Ruby 的基本還不是相當熟,但是我對 Java 的熟練肯定比 Ruby 要來的高 (廢話,學科有當掉壓力啊XD 雖然我的成績沒有什麼危機w)。之前熟悉的一些套件碼就可以搬過來讓 Ruby 用用,實在不錯。所以就是改用 Ruby 寫 Java 程式的感覺,我想這樣的學習方式也不錯啦 XD
試寫 JRuby,第一行首先要引入 Java 操作套件庫,然就就可以跟 Java 接軌,這感覺真奇妙。能用我熟悉的 JOptionPane 作使用者交互介面還真好玩 :-)
以上程式碼主要使用 java.util.GregorianCalendar 和 JOptionPane.showConfirmDialog 做一些操作,以使用者輸入的年紀回算出生西元年。題外 include_class 不能像 Java 的 import 使用星號真是囧啊,常常忘記某個類別屬於那個 Package,還得到 API 查查。
喔,JRuby 跟 Ruby 一樣還是屬於 Scripting Language,雖然 JRuby 1.0 說有 JIT Compile 以提升執行速度,不過我沒看到什麼 class 檔出現。要執行 *.rb 檔只不過從以往習慣的 ruby *.rb 改成 jruby *.rb 罷了。
C:\>jruby test.rb
每次看到很多專案使用 RoR (Ruby on Rails) 就很想玩玩,不過我就是看不懂怎麼玩,還是先來學 Ruby 吧。剛好在學校圖書館借到「Ruby Programming - 向 Ruby 之父學程式設計」一書,而且可以到暑假後開學再還,加上有 JRuby 這麼有趣的東西,真該好好學習啊orz
2007/06/12
Apple Safari 3.0.1 Beta on Windows (+WebKit Nightly)
簡單一句話,這大概是 WWDC 07 為了秀一下而趕工的 pre-Alpha 版?不過 Windows 下終於能有 WebKit (KHTML Based) 的瀏覽器了。之前有人利用 WebKit 做出來的 Swift 0.2 現在看起來很像死掉了沒在作,現在蘋果要親自出馬動手做了!
網站:http://www.apple.com/safari/
目前推出的 Safari 3 Public Beta 問題多多,這可不是 Web 2.0 所一直掛帥的 BETA,這個是真的未完成測試版XD 目前已知有眾多錯誤和缺陷,其中更有安全性漏洞存在。不過除去這些,實際使用一下發現移植的還滿完整的,至少比那個 Swift 好很多,瀏覽英語系網站基本無礙。Acid2 測試無疑的當然通過。
目前的問題嘛,絕對有。首先是掉字問題,因為目前大概只完成一些,東亞語系還不完全支援,掉字還滿嚴重的。好在有的頁面透過修改預設字型能夠解決一下燃眉之急 (TrueType 字型比較可能會成功,多試幾個吧)。還有目前書籤功能一用就當掉等。不過這還是小 Case。
大的問題是 Memory Leak 現象。雖然 Safari 特效和動畫介面很炫 (工具列刪除按鈕還有特效喔,視窗還像紙張一樣收回去),不過開久就發現不對勁,怎麼系統感覺怪怪的?打開工作管理員一看...

還好俺的記憶體夠大 (Firefox 2.0.0.4 吃大是因為我用 tete009 版,修改設定以記憶體換取效能及速度),不然我想連圖都抓不下來吧XD
總該有優點吧?有,列舉如下:
首先終於可以讓大多數使用 Windows 環境的網頁程式設計師來針對 Safari 作相容性的修改和測試了。Safari 核心 WebKit 是從自由軟體瀏覽器 Konqueror 核心 KHTML 演化來的,因此也開放原始碼。而近期才有 Swift 這個首度 Mac 之外實作在 Windows 下的 WebKit 核心瀏覽器。不過這軟體沒在更新了 (卡在 0.2,0.3 有消息但沒出)。現階段蘋果要來移植當然大歡迎,一方面大家終於可以更方便的針對 WebKit 作相容修改,一方面也能確保並擴張 WebKit 的佔有率。
再來是字型顯示很漂亮。預設的強化功能讓字型看起來很漂亮,實在不錯。不愧是 Apple,整個感覺都美美的,連程式介面也是。
功能上也不輸。研究顯示 Safari 的成像速度、JavaScript 執行速度、開啟速度等都贏其他瀏覽器,自詡為最快的瀏覽器,真是夠嗆的。實際使用也真的很快啦。
最後嘛...多一個可以玩的瀏覽器吧。喜歡蘋果的人有福了,拋 WMP 用 iTune 的人也有福了,你們可以用 Safari 來滿足一下了!
最後正式版預計 2007/10 釋出,希望正式版能解決目前所有問題。這樣我就能拿他來做瀏覽器相容性的開發工具了。
06/15 追記:
Safari 3.0.1 beta 更新,我寫成了回覆在下面。
值得注意官方貼出下次改版目標 (例如多語系支援、工具列提示、輸入法支援等),值得期待。
06/17 追記:
無聊發現 WebKit 首頁 (http://www.webkit.org),這是開放原始碼的瀏覽器核心。隨著蘋果公開移植 Windows 而開始有 Windows Nightly Build (WebKit Nightly Build), 可以下載。
使用方式:
1. 解壓縮 WebKit 壓縮檔,放到特定目錄
2. 修改 run-nightly-webkit.cmd (假設你的 Safari 不是安裝在預設 Program files) 中 Safari.exe 所在位置
3. 點擊此檔案執行 Safari,它會自動以此作為核心來操作
與官方 3.0.1 的差異:
1. 版本號倒退?官方為 3.522.12.1,Nightly Build 是 3.522.4.1
2. 滑鼠右鍵多了 Inspect Element 功能,跳出很漂亮半透明的 Widget 顯示網頁元素屬性
3. View -> Text Encoding 似乎可以顯示大多數的非英語系文字了,不過網頁一樣慘不忍睹
06/18追記:
昨天 WebKit Nightly Build r23553 出了,不過壓縮檔毀損無法實驗,今天重下載果然正常了。發現套用此版已經可以在網頁表單輸出英數字而不會當機,但新注音等輸入法的支援依舊沒有實作。大體來說已經可以作為測試用途,我測了一下連 JavaScript Trip 生成都正常 (AJAX 動態取回應則是有點問題特別改了一下),現在 Safari 也可以正常使用本網誌了。
06/21追記:
不知道還有沒有人在注意的,作為 Web Programmer 的我是一直有在注意啦。
06/21 WebKit r23677 來了,這次 Web Inspector 變實用了,也漂亮不少。(如下圖)

網站:http://www.apple.com/safari/
目前推出的 Safari 3 Public Beta 問題多多,這可不是 Web 2.0 所一直掛帥的 BETA,這個是真的未完成測試版XD 目前已知有眾多錯誤和缺陷,其中更有安全性漏洞存在。不過除去這些,實際使用一下發現移植的還滿完整的,至少比那個 Swift 好很多,瀏覽英語系網站基本無礙。Acid2 測試無疑的當然通過。
目前的問題嘛,絕對有。首先是掉字問題,因為目前大概只完成一些,東亞語系還不完全支援,掉字還滿嚴重的。好在有的頁面透過修改預設字型能夠解決一下燃眉之急 (TrueType 字型比較可能會成功,多試幾個吧)。還有目前書籤功能一用就當掉等。不過這還是小 Case。
大的問題是 Memory Leak 現象。雖然 Safari 特效和動畫介面很炫 (工具列刪除按鈕還有特效喔,視窗還像紙張一樣收回去),不過開久就發現不對勁,怎麼系統感覺怪怪的?打開工作管理員一看...

還好俺的記憶體夠大 (Firefox 2.0.0.4 吃大是因為我用 tete009 版,修改設定以記憶體換取效能及速度),不然我想連圖都抓不下來吧XD
總該有優點吧?有,列舉如下:
首先終於可以讓大多數使用 Windows 環境的網頁程式設計師來針對 Safari 作相容性的修改和測試了。Safari 核心 WebKit 是從自由軟體瀏覽器 Konqueror 核心 KHTML 演化來的,因此也開放原始碼。而近期才有 Swift 這個首度 Mac 之外實作在 Windows 下的 WebKit 核心瀏覽器。不過這軟體沒在更新了 (卡在 0.2,0.3 有消息但沒出)。現階段蘋果要來移植當然大歡迎,一方面大家終於可以更方便的針對 WebKit 作相容修改,一方面也能確保並擴張 WebKit 的佔有率。
再來是字型顯示很漂亮。預設的強化功能讓字型看起來很漂亮,實在不錯。不愧是 Apple,整個感覺都美美的,連程式介面也是。
功能上也不輸。研究顯示 Safari 的成像速度、JavaScript 執行速度、開啟速度等都贏其他瀏覽器,自詡為最快的瀏覽器,真是夠嗆的。實際使用也真的很快啦。
最後嘛...多一個可以玩的瀏覽器吧。喜歡蘋果的人有福了,拋 WMP 用 iTune 的人也有福了,你們可以用 Safari 來滿足一下了!
最後正式版預計 2007/10 釋出,希望正式版能解決目前所有問題。這樣我就能拿他來做瀏覽器相容性的開發工具了。
06/15 追記:
Safari 3.0.1 beta 更新,我寫成了回覆在下面。
值得注意官方貼出下次改版目標 (例如多語系支援、工具列提示、輸入法支援等),值得期待。
06/17 追記:
無聊發現 WebKit 首頁 (http://www.webkit.org),這是開放原始碼的瀏覽器核心。隨著蘋果公開移植 Windows 而開始有 Windows Nightly Build (WebKit Nightly Build), 可以下載。
使用方式:
1. 解壓縮 WebKit 壓縮檔,放到特定目錄
2. 修改 run-nightly-webkit.cmd (假設你的 Safari 不是安裝在預設 Program files) 中 Safari.exe 所在位置
3. 點擊此檔案執行 Safari,它會自動以此作為核心來操作
與官方 3.0.1 的差異:
1. 版本號倒退?官方為 3.522.12.1,Nightly Build 是 3.522.4.1
2. 滑鼠右鍵多了 Inspect Element 功能,跳出很漂亮半透明的 Widget 顯示網頁元素屬性
3. View -> Text Encoding 似乎可以顯示大多數的非英語系文字了,不過網頁一樣慘不忍睹
06/18追記:
昨天 WebKit Nightly Build r23553 出了,不過壓縮檔毀損無法實驗,今天重下載果然正常了。發現套用此版已經可以在網頁表單輸出英數字而不會當機,但新注音等輸入法的支援依舊沒有實作。大體來說已經可以作為測試用途,我測了一下連 JavaScript Trip 生成都正常 (AJAX 動態取回應則是有點問題特別改了一下),現在 Safari 也可以正常使用本網誌了。
06/21追記:
不知道還有沒有人在注意的,作為 Web Programmer 的我是一直有在注意啦。
06/21 WebKit r23677 來了,這次 Web Inspector 變實用了,也漂亮不少。(如下圖)

2007/03/16
裝好的 Fedora Core 被我搞爛了
我之前有利用 MS Virtual PC 2004 (已升級為 2007) 安裝 Fedora Core 5,也在其上架了伺服器以當測試環境,順便練習自己操作 Unix 系統的功力。不過最近發現 Kernel 升級到 2.6.18 以後的版本,一開機就卡在硬碟掛載 (看起來是),不過用 2.6.15 開機就沒什麼問題。同樣地,我想另外安裝新的 Fedora Core 6 虛擬系統,進入安裝介面按下 Enter 或鍵入 linux text 開始解壓 Kernel 執行後,便卡在檢查的地方 (我記得是檢查 AT 鍵盤和掛載某個檔案系統)。查一下 Kernel 是 2.6.18。而拿舊的 FC5 DVD (2.6.14 吧) 就不會卡,實在有夠奇怪。本來以為是 VPC 2007 本身的模擬問題,誰知道拿了 InnoTek VirtualBox 模擬,卻也是相同的結果? (不過 VirtualBox 效率很高,有空再介紹) 找遍 Google 似乎沒有類似的資料,只好自認倒楣收場,繼續玩 FC5 搭配舊核心。
至於搞爛又是怎麼一回事呢?由於虛擬硬碟竟然吃了 6GB 有餘,一般來說 Windows 要吃這麼多也是其他程式的影響,同理我覺得這應該是用不到的套件造成的,於是開了 yumex 把不用的套件解除安裝,誰之到重新開機後漂亮的 GDM 登入不見了,取而代之的是醜到不行的 XDM,而且輸入帳號密碼還不能進入桌面環境?(GNOME 確定裝了) 真是匪夷所思,好在 Ctrl + Alt + F1 和 SSH 遠端登入還可以用,而 http://192.168.1.5 的 lighttpd 也正常,算是不幸中的大幸。不過少了桌面感覺好像少了什麼,操作也不很方便。

另外遇過一個較為奇怪的問題是開啟 Virtual PC 2007 / VirtualBox 模擬時,有時候虛擬電腦的速度會像開了加速器一樣提升十倍有的速度,連開機都變快了 XD 問題是這樣一來輸入密碼登入只要按一下鍵盤就會跑出連續的字母 (ex: ZZZZZZZZZZZZZZZZZZ) ,叫我如何登入?用 SSH 也沒用,因為連線逾時時間也變短了,如果密碼沒在 0.5 秒內輸入完成,恭喜你連結又中斷了 囧
---
題外,版面改用 pHistory (搭配其他 Blog 元件改稱 Thistory) 作 AJAX 的頁面歷史模擬,但是要以 #res;12345678790 就能做出動作還是有點難度 (抓取回應網址沒給,只給編號沒用),所以還是著重在按下回應後,其上一頁有用這樣就夠了。另外發現先前的配置對 xxx.html 連過來看的會有問題,也一併修正。
至於搞爛又是怎麼一回事呢?由於虛擬硬碟竟然吃了 6GB 有餘,一般來說 Windows 要吃這麼多也是其他程式的影響,同理我覺得這應該是用不到的套件造成的,於是開了 yumex 把不用的套件解除安裝,誰之到重新開機後漂亮的 GDM 登入不見了,取而代之的是醜到不行的 XDM,而且輸入帳號密碼還不能進入桌面環境?(GNOME 確定裝了) 真是匪夷所思,好在 Ctrl + Alt + F1 和 SSH 遠端登入還可以用,而 http://192.168.1.5 的 lighttpd 也正常,算是不幸中的大幸。不過少了桌面感覺好像少了什麼,操作也不很方便。

另外遇過一個較為奇怪的問題是開啟 Virtual PC 2007 / VirtualBox 模擬時,有時候虛擬電腦的速度會像開了加速器一樣提升十倍有的速度,連開機都變快了 XD 問題是這樣一來輸入密碼登入只要按一下鍵盤就會跑出連續的字母 (ex: ZZZZZZZZZZZZZZZZZZ) ,叫我如何登入?用 SSH 也沒用,因為連線逾時時間也變短了,如果密碼沒在 0.5 秒內輸入完成,恭喜你連結又中斷了 囧
---
題外,版面改用 pHistory (搭配其他 Blog 元件改稱 Thistory) 作 AJAX 的頁面歷史模擬,但是要以 #res;12345678790 就能做出動作還是有點難度 (抓取回應網址沒給,只給編號沒用),所以還是著重在按下回應後,其上一頁有用這樣就夠了。另外發現先前的配置對 xxx.html 連過來看的會有問題,也一併修正。
2007/03/11
Virtual PC 2007 / PHP-6.0.0dev Compile
好久不見。
開學之後就鮮少有動力去寫網誌,不過最近碰巧發現 Microsoft Virtual PC 2007 終於推出正式版了,而且同樣不必認證,說真的就是免費軟體。安裝升級之後發現終於多了 Hardware-assist Virtualization (也就是虛擬化技術),這對目前的雙核 CPU 如 Intel Core2 Duo 來說真是有用的功能。Intel 本身就有一個 VT 技術,現在終於可以讓 Virtaul PC 2007 正式支援了。
開啟之後感覺似乎有那麼一點快的感覺,大概是心理作用,不過做做一些差事也十分足夠。
再來是安裝於其上的 Fedora Core 5,這是上學期修習 Unix 作業系統時安裝的,最近一看虛擬硬碟檔案足足吃掉 6GB 大小的實體硬碟空間,而 Linux 上似乎沒有什麼硬碟清理工具,剛好 Fedora Core 6 早已推出多時,有點想找個機會來砍掉重練,不過老話一句:我懶。真要動手大概就是將我那一台 Pentium4 2.0G 的電腦抓來裝 FC7 (那時應該出了吧) 吧。
喔,最近在寫 Pixmicat!2 的框架工作,寫著寫著突然想到即將到來的 PHP6 其相容性不知怎樣。原本這台虛擬電腦安裝的是 PHP 5.2.1RC2-dev,當然近日已推出正式版。不過又要重新編譯也麻煩,加上我也想玩玩尚未面世的 PHP6,考慮之下抓了 PHP6 Snapshot 回家編譯啦。
PHP 6.0.0dev 的編譯過程有點不太一樣,做個記錄好了:
因為 PHP6 首度導入 Unicode 支援,所以安裝之前請確認電腦有安裝 ICU (International Component for Unicode) 套件,這應該不是預設套件所以要自己抓來編譯。提供的官方網站連結有 icu4c-3_6-src.tgz 3.6 版原始碼可下載,以下就是大略的安裝步驟:
這樣 ICU 就安裝完成。接著就可以來處理 PHP6 本身:
終於完成安裝,來修改 HTTP 伺服器的設定 (我用 lighttpd/1.4.13):
儲存後重開伺服器或直接重開機都沒關係,完成後用 phpinfo(); 來檢查吧:

不過目前這個虛擬系統肥又大,還是找時間來重灌吧。
開學之後就鮮少有動力去寫網誌,不過最近碰巧發現 Microsoft Virtual PC 2007 終於推出正式版了,而且同樣不必認證,說真的就是免費軟體。安裝升級之後發現終於多了 Hardware-assist Virtualization (也就是虛擬化技術),這對目前的雙核 CPU 如 Intel Core2 Duo 來說真是有用的功能。Intel 本身就有一個 VT 技術,現在終於可以讓 Virtaul PC 2007 正式支援了。
開啟之後感覺似乎有那麼一點快的感覺,大概是心理作用,不過做做一些差事也十分足夠。
再來是安裝於其上的 Fedora Core 5,這是上學期修習 Unix 作業系統時安裝的,最近一看虛擬硬碟檔案足足吃掉 6GB 大小的實體硬碟空間,而 Linux 上似乎沒有什麼硬碟清理工具,剛好 Fedora Core 6 早已推出多時,有點想找個機會來砍掉重練,不過老話一句:我懶。真要動手大概就是將我那一台 Pentium4 2.0G 的電腦抓來裝 FC7 (那時應該出了吧) 吧。
喔,最近在寫 Pixmicat!2 的框架工作,寫著寫著突然想到即將到來的 PHP6 其相容性不知怎樣。原本這台虛擬電腦安裝的是 PHP 5.2.1RC2-dev,當然近日已推出正式版。不過又要重新編譯也麻煩,加上我也想玩玩尚未面世的 PHP6,考慮之下抓了 PHP6 Snapshot 回家編譯啦。
PHP 6.0.0dev 的編譯過程有點不太一樣,做個記錄好了:
因為 PHP6 首度導入 Unicode 支援,所以安裝之前請確認電腦有安裝 ICU (International Component for Unicode) 套件,這應該不是預設套件所以要自己抓來編譯。提供的官方網站連結有 icu4c-3_6-src.tgz 3.6 版原始碼可下載,以下就是大略的安裝步驟:
(假定工作目錄為 /usr/local/src)
> wget ftp://ftp.software.ibm.com/software/globalization/icu/3.6/icu4c-3_6-src.tgz
> tar -xzvf icu4c-3_6-src.tgz
抓取檔案並解壓結構
> cd icu/source
> mkdir /usr/local/icu
到 ICU 的原始碼資料夾,並生成 /usr/local/icu 存放編譯結果
> ./configure --prefix=/usr/local/icu
> make && make install
指定編譯結果存放目錄,進行編譯、安裝
這樣 ICU 就安裝完成。接著就可以來處理 PHP6 本身:
(假定工作目錄為 /usr/local/src)
> wget http://snaps.php.net/php6.0-latest.tar.gz
> tar -xzvf php6.0-latest.tar.gz
> cd php6.0*
下載原始碼並解壓,切換工作目錄,準備進行設定
> ./configure --prefix=/usr/local/bin/php-6.0.0dev --enable-fastcgi \
> --enable-zend-multibyte --with-config-file-path=/usr/local/bin/php-6.0.0dev/config \
> --enable-discard-path --enable-force-cgi-redirect --with-gd \
> --with-freetype-dir=/usr/local/include/freetype/freetype2 --with-zlib --with-bz2 \
> --enable-mbstring --with-png-dir --with-jpeg-dir --with-icu-dir=/usr/local/icu \
> --with-pdo-sqlite --enable-shmop --enable-sockets --enable-sqlite-utf8 \
> --disable-mbregex
下編譯指令,這讓很多人都很頭痛,每個人的機器都不太一樣,我列出我自己的作參考。記得 --prefix=/usr/local/bin/php-6.0.0dev (安裝路徑) 、 --with-config-file-path=/usr/local/bin/php-6.0.0dev/config (設定檔路徑) 和 --with-icu-dir=/usr/local/icu (ICU 組件路徑) 比較重要。如果要編譯 FastCGI 版則記得加 --enable-fastcgi。其他組件如 GD, SQLite 等請自己斟酌。
如果過程順利沒有任何錯誤,則請下最後的編譯與安裝命令。
> make && make install
經過漫長的編譯手續,終於安裝完成,PHP會希望你做一下 make test 的步驟以改善 PHP6 的品質,那我們就再做一下吧。
> make test
這指令會針對 PHP 的錯誤作四千多項的測試,結果如果有問題還可以回傳資訊給開發團隊 (檔案大小大概 5MB 多一些),建議按 Y 並輸入 E-mail 回傳一下 (我 E-mail 是亂打就是)。
終於完成安裝,來修改 HTTP 伺服器的設定 (我用 lighttpd/1.4.13):
儲存後重開伺服器或直接重開機都沒關係,完成後用 phpinfo(); 來檢查吧:

不過目前這個虛擬系統肥又大,還是找時間來重灌吧。
2007/02/25
Pixmicat!2 Working Draft
那個 W3C 都可以玩這種把戲,我也來一個 XD
以下是我心目中(?)的 下一代 Pixmicat!,也是正式拋棄舊有 futaba.php 的全新設計。
(功能、版面樣式不敢說拋棄 XD)
簡述:
Pixmicat!2 (暫定,但目前經驗談事前說暫定的,最後都會懶的改而用這個名字)
取消原有 futaba.php 傳承的程式架構 (巨核式,什麼功能都纜在身上),而另以新架構開發的新程式,一方面擺脫目前日漸難以維護的結構;一方面就可以不為 GazouBBS/futaba 的衍生著作程式,只能說是參考寫作,藉此有機會可以改用 GPLv2。
程式以 Pixmicat!-PIO 版為基礎,PIO 版時做了兩套函式庫 PIO 和 FileIO 個別管理文章和圖片。Pixmicat!2 沿用我們自己撰寫的函式庫以支援多樣化的資料後端,而一併導入 AJAX 及 REST 的設計。AJAX 可以在不重新整理頁面的情況下更新頁面資料;REST 則是一種架構風格。打算將伺服器的負擔轉移到用戶端上,例如排版方面就交給瀏覽器負責。
詳細開發記事:
Pixmicat!2 Development Frame:
以下是我心目中(?)的 下一代 Pixmicat!,也是正式拋棄舊有 futaba.php 的全新設計。
(功能、版面樣式不敢說拋棄 XD)
簡述:
Pixmicat!2 (暫定,但目前經驗談事前說暫定的,最後都會懶的改而用這個名字)
取消原有 futaba.php 傳承的程式架構 (巨核式,什麼功能都纜在身上),而另以新架構開發的新程式,一方面擺脫目前日漸難以維護的結構;一方面就可以不為 GazouBBS/futaba 的衍生著作程式,只能說是參考寫作,藉此有機會可以改用 GPLv2。
程式以 Pixmicat!-PIO 版為基礎,PIO 版時做了兩套函式庫 PIO 和 FileIO 個別管理文章和圖片。Pixmicat!2 沿用我們自己撰寫的函式庫以支援多樣化的資料後端,而一併導入 AJAX 及 REST 的設計。AJAX 可以在不重新整理頁面的情況下更新頁面資料;REST 則是一種架構風格。打算將伺服器的負擔轉移到用戶端上,例如排版方面就交給瀏覽器負責。
詳細開發記事:
Pixmicat!2 Development Frame:
- XHTML 1.0 Transitional 化 (1.1 太嚴格不合用)
- 從原本的 PHP 小程式變成 Web Application 的概念
- 瀏覽版面導入 AJAX, JSON,文章使用動態要求並輸出,當然可以快取
- JavaScript + CSS + XHTML + 圖片資源
- 上傳使用隱藏 iframe 處理
- 將各個架構以資料夾分明便於分辨及維護
- 本體直接支援多設定檔、多版面設定
- 頁面從 1 開始,不再從 0
- 導入 REST (Representational State Transfer) 架構風格
- 活用 $_SERVER['PATH_INFO'], $_SERVER['HTTP_METHOD'], $_SERVER['HTTP_ACCEPT']
和 mod_rewrite。記住沒人強制一定要 100% RESTful,只要開發、維護及使用上便利就好 - 將各動作控制區塊分開,取代以往的巨型框架。需要時再取用
- 網址的意義:
pixmicat.php/設定檔名稱/動作控制區塊/參數 - 研討萬一設定檔只有一個的時候,要不要省略?不過省略之後又要另外判斷,太麻煩啦
打成 pixmicat.php/0/show/1 不也挺不錯的? (設定檔取名為 0) - PTE Client Version 到底是什麼玩意?簡單說就是把回傳的 JSON 給排好這樣,
將以前的 lib_pixmicat.tpl 讀取後把特定標籤取代成資料再丟入某<div>內 - 頁面快取
如同舊有 Pixmicat!,快取的部分是一頁的份量,討論串的回應模式並沒有去快取,
目前仍僅對一頁量作快取,格式為 JSON。其內容為當頁所有討論串及回應(僅顯示部分)
取得後排版並印出 - 動態取得回應
利用 XMLHttpRequest GET pixmicat.php/comic/threads/486/2 (仍為 JSON) 再排版印出 - 新增文章 / 回應
使用傳統 Form,不過 target 為事先安排好的 iframe (這也是換用 XHTML 1.0 Transitional 的原因)
然後正常程序送出表單,不過前端這時看起來是沒什麼動作的。成功之後 iframe 會印出回傳資料,
在這邊可以印 <script>parent.OK();</script> 一類提醒送出成功後的方法 - 後端管理
採用 Session 儲存登入認證。有了認證後即具有管理權限。
不管到哪一頁,只要能確認身分,都可以實施管理。本來想把前後端整合,但是顧及隱密資料及管理方便,
還是另設後端快速檢視資料並管理較妥當 - 歷史問題
雖然能以 iframe + #Hash 方式來模擬,但換個方式想如果導覽功能做的好,
使使用者能順其自然使用導覽功能,就能夠避免掉這個問題
訂閱:
文章 (Atom)