顯示具有 教材 標籤的文章。 顯示所有文章
顯示具有 教材 標籤的文章。 顯示所有文章

2023年2月2日 星期四

ChatGPT 的快速筆記

好久沒更新這個部落格了。最近因為 ChatGPT 的興起,促使我動念玩了一下;雖然說 ChatGPT 很有趣,但是距離我想要做的東西還是有一些差距。玩的過程,一開始是使用官網上的介面,似乎是每個帳號可以有三個月的免費試用,之後會收費;至於如何收費,我沒深入去瞭解。我建議對 ChatGPT 有興趣的客官,可以先去試玩一下;試玩的過程,你需要登記成為免費會員,並且依據步驟你也會申請到一個 API key。請把這個 API key 放在一個隨手可得的地方(但是不要讓他人知道,我相信未來的收費機制是根據這把 API key 的),在之後的步驟會需要。

然後東翻西找我心裡面想要做的東西,突然發現了幾個 github 的網站:

1. @waylaidwanderer/chatgpt-api

2. acheong08/ChatGPT 

我暫時先跑了第一個網站的內容。由於我的電腦安裝的是 Windows 10 的作業系統,為了可以玩 ChatGPT API,我必須先安裝 Node.js 和 Git,請分別點擊連結來安裝。我是利用 winget 的方式安裝 Node.js,而 git 更是大家熟悉的安裝包。

首先,我們先利用 git 把 ChatPGT API 的內容複製到你的電腦,作法就是新增一個放置 ChatGPT API 的目錄,然後在該目錄下執行:git clone https://www.npmjs.com/package/@waylaidwanderer/chatgpt-api。這些指令我是在所謂的 Node.js command prompt 內執行的(如下圖),意思是說你至少要會一些指令式的操作。

2014年10月20日 星期一

測試 jQuery 傳送中文資料給 Tomcat


測試 jQuery 傳送中文資料給 Tomcat

The following examples had been tested on Mozilla's Firefox and Microsoft's IE. The document is provided as is. You are welcomed to use it for non-commercial purpose.
Written by: 國立中興大學資管系呂瑞麟 Eric Jui-Lin Lu
請勿轉貼
看其他教材

這個範例是對應 由 XMLHttpRequest 送出中文資料給 Tomcat,其主要的目的在於測試在 jQuery 的環境下,如何經資料(尤其是中文資料)傳送給 Tomcat。 在之前的對應文章中,我們說明了不同的開發環境以及瀏覽器對於傳送資料的作法不同, 而且目前也還沒有標準規範該如何做;我們經過多次實驗後得知,比較實用的做法是 瀏覽器端的 Javascript 在將資料送往 Tomcat 之前,最好先使用 encodeURIComponent() 對資料進行編碼。目前根據 jQuery 的文件,jQuery 在傳送資料給伺服器端之前, 會自動對傳送資料進行 encodeURIComponent() 編碼,這個功能讓我們的程式開發 又可以更輕鬆。 完成這個範例的步驟如下:

第二個範例:呼叫遠端 servlet

第二個範例:呼叫遠端 servlet

The following examples had been tested on Mozilla's Firefox and Microsoft's IE. The document is provided as is. You are welcomed to use it for non-commercial purpose.
Written by: 國立中興大學資管系呂瑞麟 Eric Jui-Lin Lu

請勿轉貼
看其他教材

這個範例是對應 AJAX 入門:第二個範例。 在第一個範例中,為了簡化起見,我們只是將遠端的檔案下載下來, 再經由 jQuery 的內建功能(如 find() 和 text())功能來剖析 XML 文件。可是 絕大多數的 jQuery 網頁都是跟伺服器端的程式來做互動的,因此在第二個範例中, 我們延續第一個範例,差別只是在於這次我們呼叫的對象是伺服器端的程式,其他不變。 雖然在本範例我們採用的遠端程式是 Java servlet,但是遠端程式可以是其他 開發環境,例如 php、asp、perl 等;另外,由於本例所使用的 servlet 程式跟 AJAX 對應文件的程式相同,我們就不再把 servlet 端的程式列示出來。 跟第一個範例主要的差別如下:
  • 由於是呼叫遠端程式,所以按鈕中的 onclick="makeRequest('taichung.xml') 需要改變成遠端的網址,依據 servlet 的網址,該段設定需要改成 onclick="makeRequest('http://xml.nchu.edu.tw:8080/jlu/servlet/Taichung')。

  • 由於 servlet 回傳的是一個 HTML 檔,而不是一個 XML 檔,所以 makeRequest() 並不需要處理 XML 的內容,而是直接接收即可,因此我們把它改成
      function makeRequest(str) {
        $.get(str, function(result) {
            $("#taichung").html(result);
        });
      }
    

  • 最後完成的結果如下: (由於跨域的安全考量,下列按鈕無法執行,請至demo 網頁)
    取得台中行政區域



2012年12月7日 星期五

Java 網路程式設計範例

Java 網路程式設計範例

The materials in this web page are collected from Java Network Programming and Distributed Computing written by David Reilly and Michael Reilly and the Internet. They are solely used for educational purposes. Hopefully, I am not violating any copyright issue here. If so, please do email me.
Written by: 國立中興大學資管系呂瑞麟 Eric Jui-Lin Lu

請勿轉貼
看其他教材

目錄

  1. java.net.InetAddress
  2. Data Streams
    1. java.io.InputStream
    2. java.io.OutputStream
    3. Filter Streams
    4. Readers and Writers
    5. Object Persistence and Serialization
  3. User Datagram Protocol
  4. Transmission Control Protocol
  5. 執行緒:Multi-Threading
  6. Some application protocols
    1. SMTP Client
    2. POP3 Client
    3. HTTP/1.0 Server
    4. Simple HTTP Client
  7. Java Multicasting


2012年11月18日 星期日

Firefox OS 是什麼?

Firefox 就是被稱之為火狐狸的瀏覽器,不必介紹大家都知道。可是什麼是 Firefox OS?簡單的說,它就是像 android 或者 iOS 的手機作業系統。

你想嘗鮮嗎?很簡單,只要你有 Firefox,請到官方網站根據你的作業系統下載名為 r2d2b2g 的模擬器即可嘗鮮。我的是 Win8 系統,所以我就點選如下圖中 Windows 的連結,而該模擬器就像所有 Firefox 的外掛程式般安裝。

2012年10月28日 星期日

最新一期: 【封面故事】iThome 2012年 IT人大調查

過去一直訂閱 iTHome 的電子報,也有閱讀 iTHome 的習慣。最近該刊完成了

【封面故事】iThome 2012年 IT人大調查

內容完整,非常值得 MIS 的學生以及畢業生看看!

2012年10月26日 星期五

Remote Method Invocation 入門

Remote Method Invocation 入門

Many examples in this document are adapted from Java: How To Program (3rd Ed.), written by Deitel and Deitel, and Thinking in Java (2nd Edition), written by Bruce Eckel. All examples are solely used for educational purposes. Hopefully, I am not violating any copyright issue here. If so, please do email me.
Please install JDK 1.3.1_02 or later with Java Plugin to view this page. Also, this page is best viewed with browsers (for examples, Mozilla 0.99 or later, IE 6.x or later) with CSS2 support. This document is provided as is. You are welcomed to use it for non-commercial purpose.

Written by: 國立中興大學資管系呂瑞麟 Eric Jui-Lin Lu

請勿轉貼
看其他教材

目錄

  1. 前言
  2. Hello World -- RMI
  3. RMI and DB
  4. 查詢 services 清單
  5. RmiJdbc
  6. RMI 的其他議題


CSS 入門

Cascading Style Sheet

看其他教材


串接式的排版樣本(Cascading Style Sheet)是目前最常見的排版 語法,幾乎所有的部落格網站都大量使用 CSS。除了 HTML 之外,還發展 CSS 的主要 目旳在於將文件內容與呈現方式分開,這將使得網頁 的管理比較容易,尤其在開發網頁為介面的資訊系統時特別具有彈性。CSS 目前分成 兩個版本,分別為 CSS1 與 CSS2。 這裡是 W3Schools 所製作的一份 CSS Tutorial,不排斥英文的讀者,我們強烈建議去看看!

HTML Frame

HTML Frame

This document is copyrighted and provided as is. You are welcomed to use it for non-commercial purpose.


HTML 支援的框架總共有兩種,一種是 frameset + frame,另一種是 iframe, 他們的差別以及使用時機,我們會分別描述。首先,我們說明的是 frameset + frame。

更多 HTML table 範例

  1. 沒有邊框的表格
    Eric
  2. 有邊框的表格
    Eric
  3. 缺少部分資料的表格 (1)
    1,11,2
    2,12,22,3
  4. 缺少部分資料的表格 (2)
    1,11,2&nbsp
    2,12,22,3
  5. 設定表格的寬度
    1,11,2&nbsp
    2,12,22,3
  6. 設定表格的 ALIGN (LEFT*, CENTER, RIGHT) 以及 VALIGN (TOP, MIDDLE*, BOTTOM)
    1,11,2&nbsp
    2,12,22,3
  7. 設定表格的欄位寬度
    1,11,2&nbsp
    2,12,22,3
  8. 幫表格設定背景顏色 (bgcolor 可套用在所有表格的標籤內)
    1,11,2&nbsp
    2,12,22,3
  9. 跨欄(colspan)和跨列(rowspan)的表格
    1,1Eric
    2,12,22,3
  10. 表格內包含其他表格
    1,1Eric
    2,12,22,3
    家
    2,12,22,3
  11. 設定標題的表格
    Header
    1,1Eric
    2,12,22,3










HTML Table

HTML Table

This document is copyrighted and provided as is. You are welcomed to use it for non-commercial purpose.
看其他教材

  • Table 的組成元件:
    1. <table> </table>: 宣告表格
    2. <caption> </caption>: 表格標題 (Optional)
    3. <th> </th>: 表格欄位標題 (Optional)
    4. <tr> </tr>: 表格列
    5. <td> </td>: 表格欄
  • 第一個表格:
    老呂
    <table>
    <tr>
    <td>老呂</td>
    </tr>
    </table>
    
  • 比較像表格的表格:
    老呂


    老黃
    <table border="2">
    <tr>
    <td>老呂</td><td>&nbsp;</td><td>&nbsp;</td>
    </tr>
    <tr>
    <td>&nbsp;</td><td>老黃</td><td></td>
    </tr>
    <table>

HTML 表格範例

Form Pages

The following examples had been tested on Mozilla's Firefox and Microsoft's IE. The document is provided as is. You are welcomed to use it for non-commercial purpose.
Written by: 國立中興大學資管系呂瑞麟 Eric Jui-Lin Lu

請勿轉貼

在這個簡單的網頁中,我們介紹互動式網頁中最重要的 HTML 元件之一 -- form。 雖然在範例中,我們利用了簡單的 shell 以及 Perl 程式來當作後端的處理程式, 其 URL 可以用來呼叫各種語言寫成的後端程式 -- 例如,php、JSP、Java servlets 等。
  1. GET/POST 與文字欄位
    • HTML form 的基本格式,藉由 mailto 的觸發來執行程式。
      告訴我你是誰:
    • 沒有 submit 的按鈕,但是可以藉由 "Enter" 來觸發後端的程式。由於使用 GET,"Enter" 後請注意網址欄的內容 -- ? 以及 data= 等資料。
      請輸入一段文字 (GET):
    • 在這個範例,還是請注意網址欄的內容,請留意兩個欄位的資料 -- data1 和 data2 -- 之間的分隔符號。另外,也可以試試看 reset 的功能!
      Shell 版
      請輸入第一段文字 (GET):
      請輸入第二段文字 (GET):
    • Perl 版
      請輸入第一段文字 (GET):
      請輸入第二段文字 (GET):
    • 這個範例不再使用 GET,而改以 POST 的方式進行,還是請注意網址欄的內容。 。從這個範例的執行,可以觀察出 GET 和 POST 在網址欄內容的差異。
      Shell 版
      請輸入一段文字 (POST):
    • Perl 版
      請輸入第一段文字 (POST):
      請輸入第二段文字 (POST):  




Java Bluetooth 程式開發入門

Java Bluetooth 程式開發入門

This document is provided as is. Use it at your own risks. You are, however, welcomed to use it for educational, non-commercial purpose.
Written by: 國立中興大學資管系呂瑞麟

請勿轉貼
看其他教材

目錄

  1. 藍芽簡介
  2. 開發環境簡介
  3. 程式開發
    1. LocalDevice 的查詢
    2. RemoteDevice 的查詢
    3. 利用 RFCOMM 來交換訊息
    4. 利用 L2CAP 來交換訊息
    5. 利用 OBEX 來傳送檔案

藍芽簡介

Under Construction

開發環境簡介

這一節的說明主要是針對 Linux 的環境,或者更嚴格的說是我還沒有發現 Blue Cove 以前的測試環境。現在 Windows XP SP2 之後已經支援藍芽的驅動程式, 再加上 Blue Cove 以及藍芽設備,你就可以開始開發了。不過,我還是把 以下的說明留下來當參考用。

窮人的 Java Bluetooth 開發環境之建置

窮人的 Java Bluetooth 開發環境之建置


Written by: 國立中興大學資管系呂瑞麟 Eric Jui-Lin Lu

請勿轉貼
看其他教材

  1. Log:
    1. 文件草稿始於 08/27/2004.
    2. Updated on 08/12/2005.
  2. 動機: 前一段時間對於手機藍芽程式的開發產生興趣, 可是又沒有很多經費,又希望開發的藍芽程式能以 Java 為主,但是又不想因為 只是想試試看而大費周章重新切割自己的硬碟,所以開始到處尋尋覓覓。 經過蠻曲折的過程,決定將開發環境設定為最精簡的 Knoppix(可以利用 光碟開機成 Linux 而不須對現有的磁碟進行分割,並且只需要一個 FAT/FAT32 的分割區就可以把需要安裝的程式放進去), Bluez (內建在 Linux Kernel 的藍芽驅動程式), 以及 Rococosoft's Impronto Developer Kit for Linux(經過註冊可以免費下載,這個開發工具 提供一個軟體層使得符合 JABWT 的 Java APIs 能與底層的 Bluez 驅動 程式溝通)。如此一來,除了藍芽裝置以外,幾乎不需要花太多的錢 就可以擁有一個 Java 的藍芽開發環境。

2012年10月25日 星期四

把玩"魔術師" -- 幫 boot.img 換 kernel

把玩"魔術師" -- 幫 boot.img 換 kernel

This document is provided as is. You are welcomed to use it for non-commercial purpose.
Written by: 國立中興大學資管系呂瑞麟 Eric Jui-Lin Lu

請勿轉貼


從 Android 的架構圖中,以及自己的經驗,kernel 是一部 Android 手機,尤其是 如觸控螢幕、相機、GPS 等硬體設備,是否能正確運作的重要元素。有時候,我們 取得了一個 ROM,或許你只想把它的 kernel 換掉以便測試在同樣的環境下,使用 不同的 kernel 是否可以得到更好的硬體支援,那麼幫 boot.img 更換 kernel 的步驟就很重要了。 假設我們已經有了 Magic 32A 的 kernel 以及 wlan.ko,且假設我們已經取得了 給 Magic 32B 的 boot.img,因此我們需要手動產生給 32A 的 boot.img, 這是因為 32A 的 address 和 32B 的不同所導致。假設你已經依據文件將 kernel 編譯好了,也有了 boot.img;一般來說,其步驟包含:
  1. 下載 PortTools.rar。這個檔案包含了一個 Linux 的執行檔以及幾個 Perl 的執行檔,請將其 解壓所後放置於 ~/tools(或者你喜歡的任意目錄)。
  2. 將 boot.img 從 ~/froyo/out/target/product/sapphire 複製進來。
  3. 將 zImage 從 ~/froyo/kernel/arch/arm/boot 或者 CM6 EBI1/32A kernel 的壓縮檔內複製進來。

把玩"魔術師" -- 編譯 AOSP 2.2 (Froyo) 原始碼

把玩"魔術師" -- 編譯 AOSP 2.2 (Froyo) 原始碼

This document is provided as is. You are welcomed to use it for non-commercial purpose.
Written by: 國立中興大學資管系呂瑞麟 Eric Jui-Lin Lu

請勿轉貼
看其他教材

在不斷嘗試編譯 Android 2.2 的過程中,我發現了三份比較重要的文件,分別是 編譯在G1上運行的android 2.2(froyo)代碼、編譯在G1上運行的android 2.2(froyo)代碼_正規版、以及 [HOW-TO] Compile AOSP Froyo + [ROM] Latest AOSP Froyo for Sapphire。經過幾個階段的測試、彙整,目前得到以下的方式最為完整。 之前所寫的另一個版本,也提供在 這裡 僅供參考。 既然能編譯出一個堪用的 HTC Magic 32A ROM,自然要把過程寫一下給有興趣的人試試看。 不過,這絕對不是一份任何人都一定看得懂的(我有些部分也還在摸索);因為 是給自己當筆記,我只能先假設你懂一些 Linux 的基本概念。我把編譯的過程 分成幾個步驟來說:(以下的步驟絕大部分都是在 Ubuntu/Linux 上執行)
  1. 你需要幫自己安裝一部執行 Linux 的電腦,AOSP 的文件建議使用 Ubuntu,而我安裝的是 Ubuntu 10.04 x86 32 bit 版。為了不影響平常的 使用,我是將 Ubuntu 安裝在一個名為 VirtualBox 的虛擬機器上;VirtualBox 是一套 Windows 的免費軟體,當在 VirtualBox 內執行 Ubuntu 的時候,電腦 基本上就同時執行 Windows 和 Ubuntu。當你將 Ubuntu 安裝完後,記得先用 "更新管理員"將所有軟體進行更新。

把玩"魔術師" -- 編譯 AOSP 2.1 (Eclair) 原始碼

把玩"魔術師" -- 編譯 AOSP 2.1 (Eclair) 原始碼

This document is provided as is. You are welcomed to use it for non-commercial purpose.
Written by: 國立中興大學資管系呂瑞麟 Eric Jui-Lin Lu

請勿轉貼
看其他教材

為了達到第一個目標 -- 自己編譯 AOSP(Android Open Source Project),便開始收集 資料,目前進度極緩慢,所以先把一些有用的資料集結在此,做個筆記,有機會再讓它 成為一篇完整的文章。在慢慢達成目標的過程,分成幾個階段,分別描述如下: 第一階段主要是參考 [HOW-TO] Compile AOSP Froyo + [ROM] Latest AOSP Froyo for Sapphire 這一串討論文。在編譯過程充滿了一些完全不知道要如何處理的困難(看起來基本功 不紮實),就算勉強解決了,可惜編譯出來的 image 檔無法在 Magic 上執行,也找不到 答案。這個階段有幾次想放棄,想想看:都這麼老了還玩?有沒有搞錯? 雖然這一階段的挫折最大,但是以下的文件也有不少是來自這一串討論文。
第二階段主要是參考 編譯 android 2.1 (eclair) 源碼 For HTC G1,這個文章是編譯給 HTC Dream 的,基本上這篇文章是參考一篇日文的文章 EclaironADP1andADP2,雖然看不懂日文,但是從指令可以看出想要編譯給 ADP2 (根據 Android FAQ,ADP2 是 Magic 32B),應該也可行。看文章跟著做的過程中,有不懂得就順便 Google 一下找答案,有 答案的,我會順便把它筆記下來。這一次的編譯,過程輕鬆多了,從頭到尾只 碰到如下的錯誤訊息
target StaticLib: libwebcore (out/target/product/sapphire-open/obj/STATIC_LIBRARIES/libwebcore_intermediates/libwebcore.a)
make: execvp: /bin/bash: Argument list too long (中文的錯誤訊息是"引數列項目過長")
make: *** [out/target/product/sapphire-open/obj/STATIC_LIBRARIES/libwebcore_intermediates/libwebcore.a]

把玩"魔術師"

把玩"魔術師"

This document is provided as is. You are welcomed to use it for non-commercial purpose.
Written by: 國立中興大學資管系呂瑞麟 Eric Jui-Lin Lu

請勿轉貼


目錄

  1. 編譯 AOSP 2.1 (Eclair) 原始碼
  2. 編譯 AOSP 2.2 (Froyo) 原始碼

大概是在 2009 年的 7 月買了人生第一部 Android 手機 -- HTC Magic,買它的原因 不外乎當初玩 Unix/Linux 的情形類似,因為畢竟 Android 的核心還是 Linux, 而且開發應用程式的程式語言是 Java(看的懂得人,不要暗笑,會內傷 ;-) )。 買了之後,玩了一陣子,也試著開發 一些小程式,算是滿意的;可是隨著 Google 不斷的推出,不到一年的時間,Android 的版本快速的從 1.5,發展到 2.2,甚至有傳言 2010 年的 10 月 Google 會推出 3.0 。 (其實這樣快速的大變動,是好的嗎?如果從企業經營的資訊策略 來看,會有什麼影響?要不要慢一點?) 這樣的發展,有什麼影響,目前還不能一探全貌,但是對我來說有下列幾點感想:

如何在 Linux 環境不中斷的利用 BT 下載檔案

使用 Linux (或者 Unix-like) 作業的使用者,在大部分的情形下會利用像 putty 或者 telnet 之類的軟體進行遠端登入,在登入可以做許多的事情,可惜的是在大部分的情形下,當你登出的時候,你執行的程式也跟著結束,這樣的情形非常不方便,尤其當你利用 BT 下載像是 Fedora Core 的 DVD 影像檔的時候。
在這裡,我把我的使用步驟記錄下來,當做筆記。我假設你已經安裝了 screen 和 bittorrent 的套件(請參考你的 Linux 安裝方式,我的以 Debian 為例)。
  1. 首先輸入 screen 來啟動 screen。
  2. 按 ctrl-a 和 ctrl-c 產生一個新的 screen 視窗(session)。你可以按 ctrl-a 和 ctrl-w 使得螢幕下方出現編號 0 和 1 的兩個視窗。
  3. 輸入 btdownloadcurses --max_upload_rate 10 XXX.torrent 利用 btdownloadcurses 來下載 XXX.torrent 內容記載的檔案,其中 --max_upload_rate 10 代表上傳的速限為 10KB。
  4. 你可以觀察 BT 的下載情形,或者離開。離開 screen 而 讓 BT 繼續下載的方式是按 ctrl-a 和 ctrl-d(d 代表 detach)。然後,你就可以像一般的情形一樣來登出。
  5. 之後,你可以重新登入檢查或者結束之前的 screen 視窗。假設你已經重新登入了,你可以輸入 screen -x 重新連上之前的 BT 畫面。如果 BT 還沒結束,你可以像之前一樣的離開 screen 畫面;若 BT 已經下載完畢,你可以結束 BT,並你可以一路的輸入 exit 結束每一個 screen 視窗直到登出為止。

多重開機:Vista/Windows 7 和 XP Pro 分別安裝於兩個硬碟上

從開始玩電腦以來,我就很喜歡嘗試不同的東西,作業系統的安裝、使用就是其中一種,其中包含這個部落格裡面寫的各式各樣的 Linux (含 Mac OSX)。就是因為有這個習慣,如果狀況允許,我用的電腦都有兩顆硬碟,而硬碟的第一個分割區就是我用來安裝測試用的作業系統,例如:在正式使用 Vista 以前,我把 XP 安裝在第一顆硬碟,而 Vista 就安裝在第二顆硬碟;又例如,想測試主機板究竟支不支援 AHCI/RAID 功能,也可以把作業系統試著安裝在其中一顆硬碟。
最近因為 Windows 7 Beta 被公開下載,又聽說其同時擁有 XP 和 Vista 的優點,因此當然要測試一下。測了兩天之後,覺得真的不錯,於是決定不要再從 BIOS 來調啟動順序,而決定要走多重開機的方式。雖然之前在啟動安裝於外接式 USB 硬碟的 Ubuntu中 討論過如何使用 bcdedit 和 Grub4DOS 來設定多重開機,但是總是覺得:已經有了 Spfdisk 這個好工具,為什麼要哪麼麻煩去搞定複雜的 bcdedit?於是就決定還是使用 Spfdisk,可是這下子慘了,不同的分割區在不同的作業系統下會自動隱藏(從 NTFS Type 07 變成隱藏式 NTFS Type 17)。這下子麻煩了,因為這一招在 Vista 不會,我想八、九成是 Windows 7 Beta 的臭蟲,可是如果不是呢?要不要解決?
由於 Windows 7 不錯用,想想以後一定會遇上同樣的問題,所以就花了一些時間把這個問題解決,因為解決的方法適用於在兩顆硬碟多重開機 Vista 和 XP,或者 Windows 和 XP(或許還有無限種可能,因為使用 Grub),所以就把解決方法寫下來。
  1. 首先,先經由 BIOS 調整,讓開機順序從 Vista/Windows 7 的硬碟開機(因為我們要借用 Vista/Windows 7 的 boot manager)。
  2. 下載並安裝 EasyBCD。EasyBCD 是個免費軟體(當然作者也希望使用者可以樂捐;在台灣用 PayPal 極度不方便,所以幫作者打一下廣告),它會使得你在修改 BCD registry(也就是經由 bcdedit 來完成的事)變得非常簡單,而且最有趣的就是它也支援 Grub。
  3. 執行 EasyBCD:請注意閱讀,你的畫面跟下列畫面應該會有不同。
    • 執行 EasyBCD 之後的第一個畫面如下。右邊紅色框框內的設定,是第一次使用的情形,只是它的名稱是 Windows 7;至於,我是如何把它改成 Windows 7 Ultimate,等下會說。然後請按下 ‘Add/Remove Entries’(左邊的紅色框框)來新增多重開機的作業系統。
      bcd1
    • 進入的畫面如下圖所示,這張圖是直接引用 EasyBCD 官網的圖片,因為我已經安裝了 NeoGrub,所以看不到這個畫面。請依照圖中上面的紅色框框(也就是 NeoGrub)點一下,然後會出現如圖中下面的紅色框框,然後請按下 ‘Install NeoGrub’ 來安裝 NeoGrub(是一種 Grub 的變形)。之後的 XP 的啟動,是讓 Vista/Windows 7 的 boot manager 來啟動 NeoGrub,最後再由 NeoGrub 來啟動 XP。雖然好像有點複雜,但是這大概是唯一的方式,除非 Spfdisk 的新版能解決這個問題(或者 Window 7 正式版能解決分割區不見的問題)。
      bcd2
    • 安裝了 NeoGrub 之後,畫面如下。請按下紅色框框中的 ‘Configure’ 來進行 NeoGrub 的設定。按下之後,會跳出一個筆記本的視窗,我們需要輸入一些設定值。 bcd3
      請將下列的設定複製到筆記本內:

      default 0
      timeout 0
      title Windows XP Professional
      root (hd0,0)
      savedefault
      makeactive
      map (hd1) (hd0)
      map (hd0) (hd1)
      chainloader +1

      我們需要對這個檔案做一些說明,若你需要進一步了解,可以在 Google 大神上搜尋 Grub 或者 menu.lst 都可以,不論是 Linux 版本還是 Windows 的版本都可以。
      從檔案中的第 3 行(title ….)開始一直到結束,代表一個開機的選項。title 後面接的是選項中的名稱;因為我們希望啟動 Windows XP Professional,所以就把這個名稱輸入進去,你可以依照你的喜好來輸入(但是中文應該不支援吧 [喔,某些版本的 Grub 可以支援])。
      title 之後的設定,除了有 hd0 和 hd1 的敘述之外,可以全部不改。我的電腦有兩顆硬碟,XP 安裝在 hd0 的 第一個分割區(也就是分割區 0),所以才有 ‘root (hd0,0)’ 的設定;如果你的 XP 安裝在 hd1 的第一個分割區,那就要改成 ‘root (hd1,0)’。可是要如何知道哪一顆硬碟是 hd0,哪一顆硬碟是 hd1 呢?請利用控制台的磁碟管理功能來看,裡面的磁碟 0 就是 hd0,而磁碟 1 就是 hd1。
      最後,如果你的設定是 ‘root (hd1,0)’,那麼你就需要把 map 的那兩行改成:

      map (hd0) (hd1)
      map (hd1) (hd0)

      至於,’default 0′ 指的就是預設的情形,會啟動第一個開機選項,也就是 XP;而 ‘timeout 0′ 的意思是說不必出現開機選項的畫面,直接啟動 XP。你可以把 ‘timeout 0′ 改成 ‘timeout 10′ 來觀察一下開機時的變化。
    • 這個步驟可有可無。藍色框框內可以選擇你預設啟動的作業系統,而紅色框框內,可以允許你將開機的選項名稱改成你喜歡的名稱;例如,預設是 Windows 7,你就可以在這裡把 Windows 7 改成 Windows 7 Ultimate。
      bcd4
安裝好了之後,可以試著重新開機,試試開進不同的作業系統有沒有問題。最後,為了避免不小心刪掉另一個作業系統的檔案或者資料,我的習慣是當我在 A 作業系統時,我會利用控制台把 B 作業系統的開機分割區的磁碟機代碼移除;同樣的,在 B 作業系統時,我會利用控制台把 A 作業系統的開機分割區的磁碟機代碼移除。