2012年10月29日 星期一

OpenID

I may need to do some programming on OpenID. Here is the list that might be helpful:

  1. http://www.ibm.com/developerworks/java/library/j-openid/index.html
  2. https://developers.google.com/accounts/docs/OpenID
  3. http://www.died.tw/2010/07/google-openid.html
  4. https://code.google.com/p/google-api-java-client/wiki/OAuth2
  5. http://code.google.com/p/google-api-javascript-client/
  6. An OpenID consumer for Attribute Exchange with Google
  7. Using a Dynamic Host Page for Authentication and Initialization 
  8. New JavaScript SDK & OAuth 2.0 based FBConnect Tutorial

2012年10月28日 星期日

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

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

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

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

2012年10月26日 星期五

文章大概搬完了

今天已經大概把所有的文章從原來的網站搬過來了,總算可以歇口氣。今後,先暫時靠 Google 的網站了,未來再視狀況調整。

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-actrl-c 產生一個新的 screen 視窗(session)。你可以按 ctrl-actrl-w 使得螢幕下方出現編號 0 和 1 的兩個視窗。
  3. 輸入 btdownloadcurses --max_upload_rate 10 XXX.torrent 利用 btdownloadcurses 來下載 XXX.torrent 內容記載的檔案,其中 --max_upload_rate 10 代表上傳的速限為 10KB。
  4. 你可以觀察 BT 的下載情形,或者離開。離開 screen 而 讓 BT 繼續下載的方式是按 ctrl-actrl-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 作業系統的開機分割區的磁碟機代碼移除。

啟動安裝於外接式 USB 硬碟的 Ubuntu

距離完成前一篇直接從外接式 USB 硬碟將 Gentoo 啟動的時間,算算已經超過兩年多了,時間過的實在是超嚇人的。這一次又再度嘗試將 Ubuntu 安裝在外接式 USB 硬碟,主要原因是擁有一個 40G 的 USB 硬碟已經有了一陣子了,我把它分成兩個部份,一個部份是用來備份(約 20GB),另一個部份把它當作 Ubuntu 的開機硬碟,這樣子上班和回家都可以玩同一套 Ubuntu。安裝的過程中也發現了一些小狀況,除了利用這個文件作個紀錄之外,也順便做一些筆記,或許將來用得上。以下,我會分成幾個部分來探討,但是最重要的是你一定要確定兩部(或者多部電腦)之間,硬體上會不會有很大的差異,如果是,安裝的過程以及之後的使用都會比較麻煩;舉個例子來說,假設你上班的電腦是 ATI 的顯示卡,而家裡的電腦是 nVidia 的顯示卡,那麼你要如何使用 X 的介面?更不要說你想使用像是 beryl 或者 compiz 這一類的超強的 3D X 介面了。如果你也想像我這樣做,請你務必考慮清楚,因為我的狀況比較單純,家裡和上班的電腦都是 nVidia 的卡。

利用 tar 來備份

tar 是一個很強的工具,我利用它來作備份。首先,我先準備一份我想要備份的檔案清單,清單中可以包含檔案名稱或者是目錄名稱。如果是目錄名稱,它會將該目錄下的所有檔案(包含隱藏檔案)都備份起來。假設這份清單的檔案名稱為 backup.list,清單的內容如下:
/etc/fstab
/etc/X11/X86Config-4
/home/john/
這就表示我要備份的資料有 /etc/fstab 和 /etc/X11/X86Config-4 這兩個檔案,以及 /home/john 內的所有檔案。
再來我們就執行 tar -T backup.list -zcvf backup.tar.gz 這個指令。這個指令會將 backup.list 中的所有檔案 tar 成一個檔案 backup.tar.gz。其中 z 代表壓縮(gz 的壓縮方式)。
假設在你的備份清單中,你不希望有某些檔案或者目錄被備份,你可以建立例如如下的檔案 exclude.list,
/home/john/.mozilla
這時候的備份指令就是 tar -T backup.list -X exclude.list -zcvf backup.tar.gz

升級 Debian Kernel

Update:
依據 Upgrade Sarge to Etch, 我們可以利用下列的步驟來找尋最新的,而且符合自己的 Kernel:
  1. apt-get update 來更新最新的套件紀錄。
  2. apt-cache search linux-image 來找尋最符合你的需要的 kernel image。目前升級到 Debian Etch 之後,好像內建的 Kernel 已經支援 SMP,而不需要另行安裝,不過這一個部份,我沒多大的把握,也懶得再找答案了。
  3. apt-get install linux-image-XXXX 來安裝 kernel。
  4. 重新開機。
  5. 重新開機之後,如果一切無誤,建議將之前的 Kernel 移除掉,移除的指令是 apt-get remove linux-image-XXXX,在 menu.lst 中的項目也會被一併清除。
------------------------------------------------------------------------
現在的 Pentiun 4 絕大部分支援 Hyper-Threading,而 Debian 的預設安裝 Kernel 卻是非支援 Hyper-Threading(或者更準確的說非支援 SMP)的 Kernel,因此安裝完系統之後,可以考慮升級你的 Kernel,Kernel 的升級方式很簡單(我參考的文件是 http://www.cs.utexas.edu/users/suriya/kernel_2.6_migration.html 這一份資料):
  1. 先到 http://packages.debian.org/stable/base/ 去找你要的 Kernel,例如,假設我們想安裝的 Kernel 是 kernel-image-2.6.8-2-686-smp。
  2. 輸入apt-get install kernel-image-2.6.8-2-686-smp 即可,apt-get 也會幫你修改如 Grub 開機程式的設定檔。
  3. 重新開機。

安裝 Apache2 + MySQL + Tomcat5 + PHP5

我在這裡先把重要的設定檔給儲存下來,免得當掉以後又得從新再找一次。
  • 我希望能夠掌握安裝的系統設定狀況,因此採用比較複雜的下載原始套件,並手動安裝。如果這不是你需要的,你不必在往下閱讀了巷。 Debian 的基本系統少了一些套件,如果我印象沒錯,只需要再安裝 openssl, libssl-dev, libxml2, and libxml2-dev。
  • install MySQL

Installation of Software RAID with Debian Sarge

This note is provided so that I can re-do what I did easily without going thru pages of google search results. In fact, as of writing, there is no article that clearly identify the steps to build SATA RAID arrays when installation.
Note that, upon requests, I may translate this document into traditional Chinese.
I purchased an ASUS AP130-E1 which came with a Promise FastTrak SATA 150 TX4 (with chip PDC-20319) and two SATA hard disks. To make it as a server, I installed Debian v3.1r0. The Debian installation CD was started using linux26 and these two SATA HDs were recognized as sda and sdb. To make these two HDs as a RAID-1 array, the following (rough) steps were taken:

How do you know software RAID is up and running?

Note that, upon requests, I may translate this document into traditional Chinese.
How do you know that your SATA RAID arrays are up and running? It was tough for me to find out the answer even googled thru many web pages. I actually had once found that the RAID arrays I created were only partially running. There are two places that you can be ensured that the SATA RAID arrays are up and running. In my system, it looks like these:
  1. check your filesystem disk space usage by issuing df -k and verify that the filesystems are /dev/md*.
    Filesystem             1K-區段      已用     可用 已用% 掛載點
    /dev/md0                255799     66585    175566  28% /
    tmpfs                   453368         0    453368   0% /dev/shm
    /dev/md5              80089452    124612  79964840   1% /home
    /dev/md4                393452     32840    360612   9% /tmp
    /dev/md1              48827944    391588  48436356   1% /usr
    /dev/md2              29293500     84732  29208768   1% /var
    
  2. check your /proc/mdstat and make sure both partitions are U which means up and running. For example, in my system, md0 have two partitions which are sda1 and sdb1 and both partitions are [UU]. If any partition is [_], then it means one partition is not running.
    Personalities : [raid0] [raid1] [raid5]
    md1 : active raid1 sda5[0] sdb5[1]
          48829440 blocks [2/2] [UU]
    
    md2 : active raid1 sda6[0] sdb6[1]
          29294400 blocks [2/2] [UU]
    
    md4 : active raid1 sda8[0] sdb8[1]
          393472 blocks [2/2] [UU]
    
    md5 : active raid1 sda9[0] sdb9[1]
          80091904 blocks [2/2] [UU]
    
    md3 : active raid1 sda7[0] sdb7[1]
          1951744 blocks [2/2] [UU]
    
    md0 : active raid1 sda1[0] sdb1[1]
          272960 blocks [2/2] [UU]
    
    unused devices: 
    

2012年10月22日 星期一

Javascript 與 Java 合用

JavaScript 存取 Java Applet 的函數







在本例中,我們使用 JavaScript 的事件處理程序 onClick 去 呼叫 Java Applet,並將輸入欄位中的值由 Java Applet 顯示出來。 說明︰
  • Form 的內容
    <form name="form1">
    <input type="text" name="text1">
    <input type="button" value="變換文字"
           onClick="document.ControlJava.SetMessage(document.form1.text1.value);">
    </form>
    <applet name="ControlJava" code="ControlJava.class" width="450" height="120">
    </applet>
    
  • Applet 的內容
  • Java applets 也有一些困擾。例如,這個網頁的 applet 在 05/28/2007 之前 是利用JDK 1.2 版所 compile 的,在當時可以正確無誤的呈現中文。可以在 JDK 1.5 給 browser 的外掛程式之下卻無法正確的顯示中文,我必須重新以 JDK 1.5 compile 這個 applet 之後才能正確的顯示。希望以後,這類的困擾可以減少。


Javascript 與 Perl 合用

主從式架構



一個好的主從式的應用程式, 應該在使用者輸入時便立即確認其輸入值是否為 valid (可用 VBScript, JScript, JavaScript, PerlScript 等.), 然後才將 確認過的資料後傳至伺服器端處理程式 (如 CGI, ASP 等)。在以下範例中,使用者 可以在郵遞區號內輸入“aaa“,然後按”確定“,網頁會告訴你輸入的郵遞區號必須是數字。
範例:
郵遞區號: 傳真號碼:

Dynamic HTML (III)


Dynamic HTML (III)



範例:同時利用 DOM 以及 CSS 來動態呈現選項的結果。在實務上,我們經常 會依照使用者選擇的結果,來呈現某些特定的結果。例如,在本範例中, 使用者可以選擇"高雄"(我出生以及成長的地方)或者"台中"(我回台之後 工作的城市),然後程式會依照使用者選擇的都市來顯示該都市的行政區域。 請注意: 這個作法其實不是很好,因為載入網頁的時候,我們必須 先把所有的選項資料都載入,這容易造成不必要的資料傳送,而且資料的維護上 也比較不方便,我們建議採用 Ajax 的方式進行,這個範例只是用來展現 DOM 和 CSS 合用下可以完成的工作範例。
城市:
行政區:

Dynamic HTML (II)


Dynamic HTML (II)



範例:我們定義了三個訊息,而這些訊息存放在陣列中;只要使用者在 "Click to change" 的按鈕上按一下,這些訊息就會順序的顯示出來。

原始碼:

Dynamic HTML (I)


Dynamic HTML (I)



範例:請將滑鼠移到範例中藍色的圓圈上,你會發現他會變成紅色圓圈。當你把滑鼠移出,又會回到藍色的圓圈。 : onMouseOver

原始碼:

Javascript: window 物件

window 物件



本例題使用的語法為:
<body onLoad="newwin=window.open('http://web.nchu.edu.tw/~jlu',
        'targetname','height=300,width=400,toolbar=no,status=yes')">

說明:
  • window 物件的方法:
    • window.open(): open() 函數會傳回新視窗的物件 (如 newwin)。
      1. 第一個參數為 URL。
      2. 第二個參數為新開啟的視窗名稱。 此名稱可用於 <a> 的 target 參數。
      3. 第三個參數為視窗特色的描述。 描述的方式有:
        • height: 高度
        • width: 寬度
        • toolbar: 是否顯示工具列
        • status: 是否顯示狀態列
    • window.close(): 如要關閉剛剛開啟的視窗, 可使用 newwin.close();
  • window 物件的事件程序:
    • onLoad
    • onUnLoad
    • onFocus
    • onBlur

Javascript 事件處理


事件處理



範例:事件的處理(例如使用者在按鈕上點一下,即產生一個事件)是 Javascript 的一個強項。在這個範例中,我們試圖說明常用的 Javascript 的事件,以及其對應 的物件。 javascript:function: JavaScript Pseudo Protocol.


說明:這個範例由兩個部分所組成:一個是 HTML 的元件,而另一個是與其配合的 Javascript 程式碼。我們依序說明 HTML 元件並解釋與其配合的程式碼;至於,整個 網頁的內容應該如何設定,請讀者自行檢視本網頁的原始碼。

Alert, Confirm, and Prompt


Alert, Confirm, and Prompt



範例:在本範例中,我們介紹三個最常用的對話視窗。其中,我們曾經介紹過 alert() 以及 prompt()。在操作這個範例時,如果出現"取消"按鈕,請記得也 點選它,並觀察結果有何不同。如果你想不斷重複操作,你只需要在瀏覽器上點選 "重載"即可。
原始碼:

Functions 的宣告與使用


Functions 的宣告與使用



範例:在這個範例中,我們說明函數(function)的宣告以及使用的方式。 範例中,我們定義了三個最常見的函數型態:world() 方法沒有傳入的參數, 也沒有回傳結果;hello(someone) 方法包含一個傳入的參數,但是沒有回傳結果; 還有,input() 方法,該方法沒有傳入的參數,卻有回傳結果。 定義完了方法之後,在程式碼的最後,我們分別呼叫這些方法。

認識「註解」,「變數」等

認識「註解」,「變數」等



範例:從使用者取得三個分數(或者成績),將三個分數存放在陣列中, 最後利用迴圈計算平均分數。這個範例同時涵蓋了變數的宣告,註解的 使用,陣列的宣告/使用,以及 for 迴圈敘述。

JavaScript 的基本架構

JavaScript 的基本架構



範例:

原始碼:
<body>
<script language="javascript">
<!--
  document.write("<h2>Hello World.</h2>");
// -->
</script>
</body>

介紹所有程式語言的第一個程式,當然非 Hello World 莫屬。在範例下出現的 Hello World 是由 JavaScript 程式碼所產生的。 說明:

JavaScript 入門

JavaScript 入門

The following examples had been tested on Netscape's Navigator, Microsoft's IE, and Opera. The document is provided as is. You are welcomed to use it for non-commercial purpose.


這是一份 Javascript 的講義,因為是為了我上課的目標而編寫的。寫這份 講義的時候,我假設讀者(也就是我的學生)已經會寫 Java (或者其他類似 的物件導向程式語言),非常多的觀念都是從物件來解釋的。如果不清楚 Java 或者想了解物件,請參考我和陳宜惠寫的 Java 101 物件導向程式設計。 Javascript 和 Java 一點兒關係也沒有。 Java 是由 Sun 所發展出來的語言, 而 Javascript 是由 Netscape Communication Company 所獨立開發。目前, JavaScript 已經有了標準,稱之為 ECMAScript,只是現有的瀏覽器所使用的 JavaScript 都另外新增一些功能,使得在 Firefox 上能執行的 JavaScript 不一定 可以在 Microsoft 的 Internet Explorer 上執行。


Written by: 國立中興大學資訊管理學系呂瑞麟

2012年10月16日 星期二

製作自創的開機動畫


把玩"魔術師" -- 製作自創的開機動畫

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

請勿轉貼
看其他教材

使用過 Android 的使用者都知道,在手機開機過程除了第一個開機畫面是靜止的 之外(大多呈現公司的名稱或者 logo),第二個開機畫面大多是以動畫的方式 呈現。刷過機的人也都知道,刷機後的第二個開機畫面都跟原廠提供的不同, 也就是說,第二個開機畫面是可以自製的,所以這份文件就是在說明如何自製 開機動畫。請留意,我本人不是一個藝術創造者,所以在文件中,我找了一個 網友製作的動畫進行修改,而且修改的部分是以文字為主;有創作天份的網友 可以自行修改畫面的其他部分。
自己加裝開機動畫,能不能在沒有 root 的情形下進行,我不 知道。需要 root,或許有些風險;這些風險要自行承擔。
首先,先說一個簡單的作法(或者說測試方式)。請到第二個參考資料的網頁去下載 一個現成的開機動畫檔。例如,我下載的是 Boing by Qteknology;如果想先看看 動畫是什麼樣子,請在 "preview Boing" 點一下即可觀賞。把檔案下載完成後, 請將檔案名稱更改為 bootanimation.zip,並確保你的手機與電腦已經 連結,並且可以經由 adb devices 看到該設備的名稱;然後請下:
adb remount
adb push bootanimation.zip /data/local
這些指令;執行完成後,請重新啟動你的手機並觀賞你剛剛設定的開機動畫。 如果有一天你厭倦了該動畫並希望用原先預設的開機動畫呢?很簡單,只要把 bootanimation.zip 從手機內的 /data/local 目錄內 移除即可。另一種常見的測試方式是把手機原有的 bootanimation.zip 取代掉, 如果你想到採用這種方式,那麼我建議先把原有的 bootanimation.zip 備份下來, 備份的方式為:
adb pull /system/media/bootanimation.zip orig-bootanimation.zip
這個指令會把原有的檔案備份到電腦上並命名為 orig-bootanimation.zip; 完成備份後,你就可以把 bootanimation.zip 放到手機上來取代原來的檔案, 指令如下:
adb remount
adb push bootanimation.zip /system/media
以上的作法都是把現有的開機動畫檔放到手機上,可是要如何自製開機動畫呢? 在說明之前,必須先說明 bootanimation.zip 的檔案格式。讓我們依照參考資料 的第二項,下載了 Waving Droid Animation with ERIS logo,其檔案名稱為 eris-waving-bootanimation.zip,將其解壓縮之後,我們會發現其包含了一個 名為 desc.txt 的檔案,以及三個目錄,每一個目錄中包含了許多個圖檔; 仔細看看這些圖檔,很容易的就可以看出這些圖檔只是開機動畫中的一個一個 畫面,經由不斷的播放這些圖案,我們就看到了動畫的感覺。可是是哪一個 檔案告訴手機播放程式要如何播放呢?其實,大概可以猜的出來,那就是 desc.txt 了。

自製第一個開機畫面


把玩"魔術師" -- 自製第一個開機畫面

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

請勿轉貼
看其他教材

使用過 Android 的使用者都知道,在手機開機過程除了第一個開機畫面是靜止的 之外(大多呈現公司的名稱或者 logo),第二個開機畫面大多是以動畫的方式 呈現。刷過機的人也都知道,刷機後的第二個開機畫面大多跟原廠提供的不同, 但是第一個開機畫面幾乎都跟買機時的畫面相同。如果你想安裝一份不同的開機 畫面,那麼這份文件就是你要閱讀的。 更改第一個開機畫面是有一定的風險的,這些風險是 你要自行承擔的;不要說我沒警告你!

2012年10月14日 星期日

把玩"魔術師" -- 認識、把玩 APK 檔


把玩"魔術師" -- 認識、把玩 APK 檔

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

請勿轉貼
看其他教材

在製作自己的 ROM 之前,我們假設你已經可以取得必要的 image 檔或者 由網友已經製作好的 ROM;如果是 image 檔,你需要至少 boot.img 以及 system.img;如果是網友已經製作好的 ROM,大都以 zip 檔的型態出現。 如果你使用 Kitchen 的話,不論是 image 檔或者 zip 檔,它都可以完整的 把整個 ROM 解開來。解開 ROM 之後,一般我們會看到 boot.img (用來開機的 映像檔),META-INF 裡面包含一些簽章以及刷 ROM 過程的程式,以及 system 目錄。由於製作 ROM 只是修改 ROM 的部分內容 -- 嚴格的說,一些 文件檔、apk 檔等,我們並不會真正的修改程式碼,因此認識 apk 檔就成為 非常重要的概念。這個階段結束了之後,或許我會投入 Android 的程式, 也就是 apk 的開發。

2012年10月13日 星期六

自製 DHD 官方 Sense 3.0 ROM

自製 ROM (Case 2)

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

請勿轉貼
看其他教材

最近 HTC Desire DHD 的使用者大概都聽說了一個消息:Sense 3.0 的官方 RUU 已經在歐洲釋出了,可是台灣還是不動如山,完全沒有任何消息(如果真的 如此,我下一隻手機絕不會是 HTC,甚至投靠韓廠手機都可以接受;真的是 一整個無言)。

安裝 Kitchen

安裝 Kitchen

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

請勿轉貼
看其他教材

在製作自己的 ROM 之前,你必須安裝 dsixda 的 Kitchen,而使用 Kitchen 必須 先安裝 Java 的 JDK 以及 Cygwin。在安裝 Cygwin 和 Kitchen 之前,我們假設 你已經安裝了 Java 的 JDK。安裝的步驟如下:

製作自創的 ROM


製作自創的 ROM

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

請勿轉貼
看其他教材


如果"你"是刻意的來到這個網頁,我相信絕大多數應該都已經刷過機了。 最簡單的刷機,就是到 XDA 或者對岸的機鋒網下載一個 ROM(當然這個 ROM 必須配合你的手機型號,以及手機上的 SPL 和 Radio 的版本), 然後把這個 ROM 檔(大多是一個 ZIP 檔)儲存在 sdcard 內,然後 進入所謂的 recovery 模式,在刪除掉 data(wipe data)之後,將該 ZIP 刷到(flash)到手機內;最後重新開機就完成了。 刷機的人,在一開始大概都會有一個階段是"看到 ROM 就刷",因為好像永遠 找不到一個完全符合自己需要的 ROM,等到刷機狂熱退燒之後,或許有些人會 跟我一樣開始思考:我能不能找到一個最符合我的需求的 ROM?如果不能, 我能不能自己來做一個?

把玩"魔術師" -- 編譯 HTC Kernel 原始碼


把玩"魔術師" -- 編譯 HTC Kernel 原始碼

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

請勿轉貼
看其他教材

在編譯 AOSP 的原始碼過程中,我們可以清楚的知道,其編譯主要分成 kernel 的編譯以及 AOSP 平台的編譯;而 kernel 的編譯需要取得適當的 kernel 原始碼, 否則就算編譯成功,可能也會無法正常使用;而編譯 AOSP 的過程中,我們也需要 一些從之前的 ROM 中解出來的 .so 檔。(疑問:這些 .so 檔究竟在架構中是屬於 哪一塊?應該不是 device drivers,因為驅動程式的副檔名應該是 .ko 才對,那麼 這些 .so 檔究竟是架構圖中綠色的 libraries 還是 Android Runtime 系統的 藍色 Core Libraries?)

寫一個支援檔案上傳的 java Servlet 或者 JSP

最近決定寫一個檔案上傳的網頁讓研究生和專題學生把他們報告的投影片或者論文能夠上傳,以便以後在複習相關資料的時候,比較容易。利用 google 大神查到了 jGuru: How do I upload a file to my servlet or JSP?,然後決定採用 Apache Jakarta Commons 的 FileUpload 的套件來進行。
閱讀完了相關資料,並測試以後,我把過程列出來:

如何讓一個 login 的網頁只能經由 https 來登入

問題蠻複雜的,好像需要瞭解的東西也不少,所以我們慢慢來建構這個網頁。
動機: 在開發網頁資訊系統的時候,我們經常需要讓使用者登入,而且我們希望使用者登入的帳號以及密碼不會在 Internet 傳遞的時候被竊聽或者竊取,這時我們就需要使用 https 來對資料進行加密。可是往往設計一個登入的網頁(例如:login.php),我們不但可以 http://xml.nchu.edu.tw/test/login.php,也可以 https://xml.nchu.edu.tw/test/login.php 來存取。為了確保使用者只能使用 https 來登入,我們需要把所有 http://xml.nchu.edu.tw/test/login.php 的連線都轉成 https://xml.nchu.edu.tw/test/login.php。

Java Servlet 入門

Java Servlet 入門

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.
在以下的範例中,我們假設你已經在你自己的電腦上面安裝好了 Apache Tomcat 而且 port 為 8080。
Written by: 國立中興大學資管系呂瑞麟 Eric Jui-Lin Lu

JSP 入門:Session

JSP 入門:Session

All examples are solely used for educational purposes. This document is provided as is. You are welcomed to use it for non-commercial purpose.

Written by: 國立中興大學資管系呂瑞麟 Eric Jui-Lin Lu 在以下的範例中,我們假設你已經在你自己的電腦上面安裝好了 Apache Tomcat 而且 port 為 8080。如果你還沒安裝好,你可以 參考 安裝 Tomcat 5.5.x

請勿轉貼
看其他教材

開發網頁資訊系統(web-based information systems)的人員都應該知道一件事實, 那就網頁與網頁之間是獨立;也就是說,若有兩個網頁 A 和 B,呼叫 A 網頁是一件 獨立的作業,而呼叫 B 網頁又是一個獨立的作業,兩者之間是沒有關係的,網頁 伺服器無法判斷這些網頁是由同一個使用者、或者多個使用者呼叫的;比較專業的說法, HTTP 協定是無狀態的(stateless)(或者翻譯成"不會保留狀態的"比較恰當)。 但是,這種無狀態的協定,在應用系統的使用上卻是非常不方便的; 例如,某些網頁需要知道使用者是否已經登入;若已經登入才可以看網頁的內容, 否則要求使用者登入。一般來說,有三種常用方式可以讓 web server 經由某些 資料來判斷,而這三種方法分別為隱藏資料在網頁中、使用 Cookie、和 Session。 這三種方式中,以 Session 的方式相對安全。

Java 與資料處理入門

資料處理入門

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. 使用 Properties 來初始化你的程式
  2. 資料庫
  3. JDBC 的種類
  4. 資料庫存取的基本步驟
  5. 資料庫新增、刪除、查詢、修改
  6. JDBC 的種類
  7. 如何從 Unix (或 Linux)連資料庫?
  8. 從 applet 連資料庫的問題
  9. 讀取 Excel 的資料

MySQL Server 與中文

MySQL Server 與中文

The materials presented in this web page is provided as is and is used solely for educational purpose. Use at your own risks.
Written by: 國立中興大學資管系呂瑞麟 Eric Jui-Lin Lu

請勿轉貼
看其他教材

絕大多數的 Java 程式開發人員在使用 MySQL 之後,都會發現 Java 程式 在存取中文資料的時候很容易出現亂碼,但是英文的資料卻不會。這個問題 之所以存在的主要原因之一就是資料的編碼;身為一個程式開發人員,如果你的 程式(不限定於 Java)發生了中文亂碼的情形,你應該問問自己以下的問題: 資料庫儲存中文資料時,是以什麼 樣的編碼方式儲存,大五碼嗎?資料庫跟客戶端程式互相傳遞資料的時候, 它們又是以什麼樣的編碼在傳遞,大五碼嗎?你的應用程式中的中文資料 是以什麼方式編碼,大五碼嗎?在了解了這些編碼的情形之後,絕大部分的 問題應該可以迎刃而解。

2012年10月8日 星期一

大二專題學生參加比賽

今天,我帶的四個大二專題學生,經過一個暑假的奮戰,終於完成一個手機程式並參加“中區國稅局APP創意競賽”。得不得獎不重要,重要的是

1. 他們幾乎都是自己看書學的;
2. 他們是自發性的,想盡辦法在充滿陽光誘惑的暑假中,投入心力完成的;
3. 他們才剛從大一升上大二。

因此,這裡一定要記上一筆,留作紀念。

2012年10月3日 星期三

ZK 入門

ZK 入門

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

請勿轉貼
看其他教材

請注意: 不知道是哪一項原因所造成的(我沒有太多的時間 測試),如果你的作業系統是 Windows 7 64 bits 版,安裝的是 Tomcat 5.5.x 版, 那麼很有可能你會碰到跟我一樣的情形:執行程式的時候會看到 commons-fileupload.jar 沒有安裝的錯誤訊息,或者執行 ZK 時看到 java.lang.NoClassDefFoundError: bsh/NameSpace 的錯誤訊息,解決的方法就是把 tomcat\webapps\xml\WEB-INF\lib\ext 中的 bsh.jar 以及 commons-fileupload.jar 移到 tomcat\shared\lib 中,就可以解決。

2012年10月1日 星期一

第一個範例:取得台中行政區域 (Part II)


第一個範例:取得台中行政區域 (Part II)

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

請勿轉貼
看其他教材

在 Part I 中,我們介紹了比較複雜的 .ajax() 方法;本文中,我們介紹 另一個相對簡單的方法 .get()。整個網頁都跟 Part I 幾乎相同,不一樣的 部分只有在 makeRequest() 方法:
  • 再來就是定義 makeRequest() 方法,在該方法中我們利用 jQuery 提供的方法 呼叫遠端服務或者檔案,首先介紹最複雜的 .ajax() 方法:
      function makeRequest(str) {
        $.get(str, function(xml) {
            var msg = "";
            $(xml).find("areas").find("area").each(function() {
              msg += $(this).text() + "<br/>\n";
            });
            //alert(msg);
            $("#taichung").html(msg);
        });
      }
    
    .get() 方法的第一個參數就是遠端的網址,而第二個參數就是成功呼叫之後的 callback 函數;由於該函數的內容與 Part I 的部分相同,本文就不再贅述。 喔,.post() 方法跟 .get() 方法雷同,你們可以直接把程式碼中的 get 改成 post 即可。(由於跨域了,以下按鈕無法執行,請依照本文練習)最後完成的結果如下:

    取得台中行政區域


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

第一個範例:取得台中行政區域 (Part I)


第一個範例:取得台中行政區域 (Part I)

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

請勿轉貼
看其他教材

讓我們說明如何使用 jQuery 來執行 AJAX 呼叫。為了簡化,我們利用之前 範例來說明 jQuery 的 AJAX 用法;第一個範例就是從遠端取得台中行政區的檔案。 要完成這個範例的步驟跟之前的差不多,我們條列如下;為了節省篇幅, 跟之前相同的,我們就不再說明:

安裝 jQuery

安裝 jQuery

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

請勿轉貼

安裝 jQuery 的簡單程度可能超過你的想像;由於 jQuery 是由一堆的 Javascript 所組成,所以安裝的方式就是把 jQuery 的 js 檔下載下來並置放於適當的 目錄下即可:
  1. 請到 jQuery 下載區 的 "Current Release" 下載,其中 "Minified" 和 "Uncompressed" 連結的內容都完全相同,只是 "Minified" 的版本是經過壓縮的檔案,它的好處在於 壓縮過後的檔案比較小,可以降低網路傳輸時間。雖然 "Minified" 版本降低了 網路傳輸時間,但是瀏覽器卻需要多餘的 CPU 時間對該檔案進行解壓縮;由於 網路的傳輸時間往往是整體執行時間的瓶頸,因此個人建議使用 "Minified"。

jQuery 入門

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 的介紹以及使用中,我們知道 AJAX 程式的寫作受到瀏覽器的影響很大, 要能寫出一個跨瀏覽器的 AJAX 程式,程式設計人員必須非常注意許多的細節, 這些細節包含瀏覽器對 Javascript 和 CSS 的支援度。為了解決這個問題,許多 的 framework 或者 Javascript library + CSS 被開發出來,除了我們只說到 一點點的 Dojo 和 Yahoo 之外,目前最流行的大概就屬 jQuery 了。因此這篇 教學文要說的就是 jQuery;喔,順便廣告一下,學習 jQuery 的好處還包含 它也可以用在行動設備(包含 Android/iOS 的手機和平板上),未來有空我一定 會把他們寫進來。 在開始閱讀以前,我強烈建議先把 AJAX 系列文章看完,我們假設你已經了解 AJAX 的架構,看得懂 DOM、HTML、CSS、以及 Javascript。


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



安裝 Tomcat 5.5.x

安裝 Tomcat 5.5.x

This document is provided as is. You are welcomed to use it for non-commercial purpose.
Written by: 國立中興大學資管系呂瑞麟
請勿轉貼
看其他教材

支援一般連線

Tomcat 是一個讓開發者能夠執行 JSP/servlet 的伺服器(比較專業的說法是 container),其安裝步驟如下:
  1. 安裝 JDK 1.5.x 版或者更新的版本。
    • 記得要設定環境變數 JAVA_HOME。假設 JDK 安裝在 c:\jdk,我們需要執行 set JAVA_HOME=c:\jdk或者在控制台內設定。
  2. 安裝 Tomcat(我們以 5.5.x 版為例;並假設 Tomcat 安裝於 d:\tomcat)。下列 的設定不適用於 Tomcat 6.x 或者 Ttomcat 7.x 版。