阿貴師的專題...
是否適合你?
因為我全力投入推廣自由軟體, 所以有一些特殊的怪癖/偏好/優缺點, 考慮找我做專題的同學需要事先瞭解一下。
- 幾乎只用自由軟體。 什麼是自由軟體? 有原始碼, 可以自由拷貝甚至自由修改的, 才算自由軟體; 免費但不自由的, 例如 vmware 或 ie 不算。 為了堅持自由, 有時需要犧牲功能。
- 製作文件必須用開放檔案格式, 例如純文字, html 或 odt。
- 簡單的命令列操作是必備能力 (ls, cp, mv, less, vim/emacs/nano/joe/jed 任何一個文字編輯器, ...) 因為工作環境不是 Linux/*BSD 就是 cygwin。
- 非常需要閱讀網路上的英文文件。 其實我們只需要讀, 並不需要聽說寫, 而且技術文件的英文通常比較沒有複雜的文法; 此外, 看不懂英文時, 經常還有指令可以參考。 因此, 放棄英文的同學千萬不要來找我; 另一方面, 即使目前英文程度不好, 只要不放棄, 願意用經常上英文網站看 linux 新聞 或用其他方式練習英文, 就算是必須大量倚賴翻譯機也沒有關係。
我的專題題目有兩大類: 系統整合與軟體開發。 目前對於牽涉太多硬體技術的問題沒有力氣接觸。
系統整合類適合誰?
讓我們面對現實吧: 真正有興趣, 有能力寫程式的人, 並沒有那麼多。 大部分找我做專題的同學, 都會被勸說選擇此類。 適合此類專題的同學需要有一些特質:
- 喜歡下載/編譯/安裝/測試新軟體。 總之就是 愛-玩-軟-體。
- 有一股衝動, 很想拿自由軟體來幫
- 可能需要/有機會經常與校外人士接觸, 例如鄉下的中小學, 圖書館, 社福機構等等。
這類題目通常不太需要寫太多程式, 倒是很可能需要寫 script (例如 perl 或 php 或 bash) 拿既有的工具來 組合 出使用者需要的功能。
必須事先警告選擇系統整合類的同學, 你可能要有一些心理準備: 一年半後看到別組同學學到很多 coding 的技巧, 寫了很多程式; 而我們卻沒有。 這不僅會有矮人一截的感覺, 甚至可能就真的註定你將來與程式開發無緣。 另一方面, 學習下指令/整理系統, 其實也是很有價值的學習投資, 說不定也比較符合 未來資訊市場的人力需求。
軟體開發類適合誰?
喜歡寫 c/c++ 程式的同學還是可以找我做專題。 最好是你已常用某套自由軟體, 或至少對它感到興趣, 想要為它做一點改進。 如果要從 Savanah, Source Forge, OpenFoundry 或其他自由軟體集散地裡面挑一個你有興趣的專案也可以, 但是這樣會比較漫無目標。
你可能需要有勇氣寫簡單的英文信參與討論。 又, 撰寫自由軟體的動機, 最好是興趣, 而不是賺錢, 要不然可能會很失望。
具體題目
有關題目的選擇, 我的彈性很大。 只要是使用自由軟體來做事, 我幾乎都可以配合 (但網路與資料庫是我的弱點, 如果你選的題目需要太多網路或資料庫技術, 我就很難幫得上忙.) 你的興趣^H^H狂熱最重要。 (聽聽看創辦 Apple, NeXT, 與 Pixar 的 Steve Jobs 在 Stanford 對畢業生怎麼說。) 如果你並沒有特別熱衷的題目, 又不太喜歡我的題目, 我可以讓你一直換。 但隨著時間一個月一個月地過去, 到後來你會心荒意亂。 總之, 對軟體沒有好奇心, 不會主動探索的同學會很痛苦。
底下是一些可能的題目。
例題一: 在 Windows 下建構學習自由軟體命令列的環境
學 Linux 的入門障礙往往是安裝作業系統的步驟; 但其實就算不安裝 Linux, 在 Windows 底下一樣可以 透過 cygwin 直接學習命令列。 不過從官方網站安裝 cygwin 有點麻煩, 所以美國印地安納大學製作了 XLiveCD, 你可以帶著它到處跑, 到任何 Windows 機器上都可以不必安裝直接使用命令列, 甚至用它的 ssh 連線到遠端的 Linux 或 *BSD 主機, 在 Windows 上透過 X Server 顯示遠端執行的 GUI 軟體。 但是 XLiveCD 只出了一個版本, 沒有持續更新。 本專題的目標是客製化 XLiveCD, 進行以下改良:
- 改造 XLiveCD, 加上 gnuplot, perldoc, 中文環境, ... 等等上課可能用得到的套件。
- 將額外的軟體灌在 USB 碟, 令 cygwin 環境可以看見這些額外軟體。 如此可以方便使用者自行客製化, 不必每次重燒 XLiveCD。
- 撰寫簡單的 script, 簡化客製化流程。
- 在 cygwin 上面編輯一些 GUI 軟體, 例如 Dr. Geo。
如果你暫時離不開 Windows, 但又認同 長遠學習投資的理念, 希望立即可以開始學 Linux, 以及跨平臺的觀念/工具, 那麼這個題目就很適合你。 這是一條很務實, 衝擊較小的路徑。 我以前跳脫版權專屬軟體, 也是採取類似的步驟: 先在非自由平臺上面使用自由軟體。 只是我來自 OS/2 而不是 Windows; 當初用的是 emx 工具, 而不是 cygwin。
例題二: 在 Windows 下執行完整的 Linux
qemu 是一個模擬器, 原本是用來在 Linux (host) 下執行其他版本的 Linux (guest); 但聽說也可以在 Linux 下執行 Windows; 又有人將它移植到 Windows 下, 所以也可以在 Windows 下執行 Linux。 本專題的目標是製作一張 livecd, 裡面包含 qemu 與某個版本的 Linux (可能是中文化的 knoppix) 讓使用者可以在 Windows 下試用 Linux。 最好可以對 qemu 的許多選項仔細研讀, 看看如何提高模擬效率 (聽說有沒有加上 「加速器」, 速度差很多)。
與 qemu 類似的模擬器還有 colinux, xen, User-Mode Linux, Vserver, ... 等等計劃, 不過多數好像都只能在 Linux 上模擬 Linux。 請見 這篇簡單的比較
例題三: 英文文法分析工具探討
單字只是學習英文的一部分, 有時候每個單字都認得, 但句子還是看不懂。 如果有工具可以幫我們分析英文句子的結構, 不是很棒嗎? 例如下面這句話 (班傑明 福蘭克林的名言), 如果有軟體可以將它拆開, 用大小不同的字形顯示, 再配合字典或翻譯機, 就可以大概看出它的意思:
Those who would give up essential liberty to purchase a little temporary safety deserve neither liberty nor safety.
- 他們不配享受安全也不配享受自由。
- 誰不配? 可以放棄基本自由的人。
- 為了什麼而放棄? 為了獲得一點點短暫的安全。
事實上分析文法的工具 有好幾套, 但是它們的輸出多半都太複雜, 太龐大, 遠遠超過一般學習英文的需要。 本專題需要試用每套軟體, 並從其中找出一套來稍微修改 (或只是加上 output filter) 產生比較平易近人的輸出, 變成幫助學習英文文法的工具。
這個題目可能需要熟悉 perl, 特別是其中的 regular expressions。 有可能延伸成為碩士論文題目。
例題四: 為「開放香草輸入法」撰寫輸入模組
OpenVanilla 開放香草輸入法是國內最近很紅的一個計劃。 以前要撰寫中文輸入法程式非常麻煩; OV 將複雜的系統溝通部分藏起來, 讓入門的程式設計師可以專心聚焦在演算法部分。
這個題目需要寫 C/C++ 程式。 想進入自由軟體領域, 又想寫低階程式的同學, 應該先 想清楚你的動機
例題五: 改進 Dr. Geo
Dr. Geo 是一套幾何教學軟體。 作者 Hilaire Fernandes 計劃改用 squeak 重寫, 因為 C/C++ 版本可能會較少維護。 這個題目旨在填補他留下來的空缺。
這個題目需要寫 C/C++ 程式。 想進入自由軟體領域, 又想寫低階程式的同學, 應該先 想清楚你的動機
要做些什麼事?
- 每組請取一個組名吧。 中英文皆可, 長短不拘; 我為了建 mail alias 方便, 會將它翻成 8 個以內的英文字母。
- 平時要養成有效率的學習方式, 特別要學一些 搜尋技巧,
- 每週或隔週 meeting 時, 要準備好詳盡的 錯誤訊息 以便討論 -- 請先 mail 給我, 抄下來, 貼在網頁上, ... 用各種方式就是一定要把錯誤訊息帶來給我看。 特別提醒大家: Windows 下不注重錯誤訊息的壞習慣, 一定要改過來! 不然經過一年下來, 別組已經學了很多東西, 你還在原地踏步, 一切的 meeting 都是浪費時間。 不帶錯誤訊息來的同學, meeting 時將被請出去, 直接放假。
- 進度報告: 每位組員每個月要用 2-3 句摘要說明這個月做了那些事, 例如 "學習 Perl 的 regular expression。 把 icewm 設定得很花俏。 用 mulinux 燒錄可開機光碟失敗。" 不必詳盡, 也不必一定要有成果。 如果失敗了, 還是要記下來, 至少還可以讓我知道你花了很多時間在做那件事。
- 每組要有一個網頁讓我從 「我的書籤」 連過去。 有關整組的文件/連結, 就收集在這裡, 也方便討論時 demo 或交換資訊/檔案 (例如錯誤訊息/有用的書籤/...)。 另外從這裡要有 link 連到每位組員的進度報告。 指向內部文件/圖檔的超連結盡量使用 相對路徑 (例如 <a href="../xxx/yyy.png">), 避免使用絕對路徑 (例如 <a href= "http://www.cyut.edu.tw/~s1234567/xxx/yyy.png">), 不然將來畢業展之後要交檔案時, 會改得很辛苦。
- 記得向我要學長姊的舊資料來參考, 裡面有對學弟妹的建議等文件。
- 文件檔案必須使用跨平臺的工具, 產生格式公開的檔案。 例如用 OO.o 製作開放檔案格式 ODF, 或用 http://www.nvu.com 製作符合 w3c 國際標準的 .html 格式, 或用 s5 製作 html 格式的網頁。 對我而言, 文件的可攜性與內容, 絕對比外觀更重要!
- 盡量將所有 html 檔用 tidy 處理成 無障礙網頁, 並貼上「符合 xhtml 1.0」的標籤。
準備專題展的幾項提醒
- 準備一張清單, 列出你們過去一年半來所遇到, 最有成就感或最有挑戰性的問題 (不論最後是否完整解決)。 報告那位同學一定要把握機會讓老師們知道你們的苦功都下到那裡去了。
- 為把握短短數分鐘的報告時間, 可以用一部機器簡報, 其他機器操作, 兩者同時進行。
- 不要小看舉例。 例子一定要先準備, 不要拖到當場即興產生。 好的例子不但秀出難處理的狀況, 也秀出你們的程式針對錯誤輸入的處置。
- 需要輸入一長串文字的例子, 不妨事先敲入一個文字檔, 到時候直接剪貼即可, 節省時間。
- 預演時注意那些步驟非常耗時 (開啟軟體? 傳送 fax? ...) 並想好對策 (預先開好縮小在一旁? 趁這個時候講一段你們的苦功? ...)
- 報告時, 誠實為上策。 盡管陳述事實; 但注意同樣一件事, 可以有正面的語氣 ("老師要我們自己從參考資料學, 很有挑戰性") 或負面的語氣 ("很難, 我們都不會, 老師也沒有教")
- 不妨花一些時間打扮你的桌面: http://www.themes.org/
專題展後請交一個壓縮檔
給系上的 cd, 以完整為主; 但我這邊希望方便保存, 以便給學弟妹參考。 所以請將交給系上的 cd 稍微修改, 另外交一份小小的壓縮檔給我。 請拿 這個骨架檔, 按照下面注意事項來修改。
- 目錄名稱及壓縮後的檔名, 請用各組組名。
- 裡面的檔名及目錄名稱請避免用中文。
- 請注意連結是否有效。 如果當初你的網頁裡面用了很多絕對的網址 (http://...) 指向自己的文件, 那麼放入光碟/壓縮檔時, 將不會指到光碟/壓縮檔上面的版本, 而是指向網路上的版本!
- 盡量只保留 你們的創作, 及小型的重要檔案;
網路上可以下載的大檔案, 請盡量刪除。 非本組創作部分,
請只保留不佔空間的重要檔案, 例如幾百 k 以內的參考文件 *.html
等等。 不用擔心內容太少, 反正我已經知道你們做了多少東西,
灌水也沒有用 :-) 如此可以不必燒 cd 直接壓縮成一個 .tgz 或 .zip 以
mail 寄出或告訴我到何處下載, 這樣比較環保。 我將下指令
du -s * | sort -n與ls -l | sort -n +4找出佔用最多空間的子目錄與檔案, 如果灌水情況太嚴重, 將退回重做。 - 檔名與檔案格式可由各組自行決定。 例如你們的 簡報用 html 做, 而不是用 simpress 做, 就用 present.html 取代範例中的 present.sxw 。 但所有文件檔案請用 .txt .html 或 .sxw 等 公開格式。
如果有 組員自己製作的 其他檔案, 也請都放上來。 但記得要在 index.html 中加入簡單說明, 或至少像範例一樣, 用文件的中文標題及超連結指過去, 這樣學弟妹才知道這些多出來的檔案是做什麼用的。
「專題簡介」 是系上要求的文件, 請見系上公佈欄。
「正式文件」 是那三本要交到系上的厚厚文件, 請參考先前請大家下載的學長姊成果。
「Howto/技術報告」 是對學弟妹學習最有幫助的技術文件。 目錄底下收集所有你們這三學期來所遇到的重要問題與解決方式。 這些文件不以長度為重點; 而是以解決問題為重點。 例如撰寫 「為 morphix 製作 mini-module 的注意事項」, 應有超連結指向網路上的相關文件及工具, 但不需要重複它們的內容。 如果你發現有那些步驟特別容易做錯, 或是有比較節省時間的做法, 那就是最有價值的部分了。 請以整組為單位綜合整理, 不要按照組員再分子目錄。
「網路文件」 是網路上找到的, 推薦給學弟妹的好文件。 索引檔 index.html 基本上是一個書籤檔, 大致按照題目性質分類。 (例如 「系統管理」, 「影音播放」, ... 等等) 有一些極佳的短文 (100k 以內) 可以放進來; 其他太大的檔案請不要包進來, 只要在 index.html 裡面用連結指過去就好。 一樣, 請以整組為單位綜合整理, 不要按照組員再分子目錄。
所有以個人為單位分開整理的檔案, 請放在 「本組成員」 底下。 每位同學至少要有以下兩部分: 「心得與建議」 的目的是提醒/警告/鼓勵學弟妹: 你認為你們這組 (或你自己) 最成功的地方? 最值得改進的地方? 如果再重來一次, 做法會有那些改變? ...。 等等。 ("英文很重要!", "不要隨便聽任老師換題目" ...) 「進度報告」 是過去三學期來每個月的進度摘要。 歡迎放上其他多的資料; 不過我會將整個檔案給學弟妹, 所以如果要放上個人相片或手機號碼等資料, 請三思...
![[rss feed 圖案]](/~ckhung/i/rss.png)
![[帶頭升級 Office 2007? 別當害群之馬]](/~ckhung/i/n7/no-office2007.png)
![[(力求維持) 符合 xhtml 1.0]](/~ckhung/i/vxhtml10.png)
