阿貴師的專題...
是否適合你?
因為我全力投入推廣自由軟體, 所以有一些特殊的怪癖/偏好/優缺點, 考慮找我做專題的同學需要事先瞭解一下。
- 製作文件必須用開放檔案格式, 例如純文字, html 或 odt。
- 幾乎只用自由軟體。 什麼是自由軟體? 有原始碼, 可以自由拷貝甚至自由修改的, 才算自由軟體; 免費但不自由的, 例如 vmware 或 ie 不算。 為了堅持自由, 有時需要犧牲功能。
- 要會簡單的命令列操作 (ls, cp, mv, less, mount, vim/emacs/nano/joe/jed 任何一個文字編輯器, ...) 因為工作環境不是 Linux/*BSD 就是 cygwin。
- 要有上網找答案的習慣。
- 非常需要閱讀網路上的英文文件。 還好, 只需要讀, 並不需要聽說寫, 而且技術文件的英文通常比較沒有複雜的文法; 此外, 看不懂英文時, 經常還有指令可以參考。 因此, 放棄英文的同學千萬不要來找我; 另一方面, 即使目前英文程度不好, 只要不放棄, 願意用經常上英文網站看 linux 新聞 或用其他方式練習英文, 就算是必須大量倚賴翻譯機也沒有關係。
我的專題題目多半牽涉系統整合: 經常需要研讀網路上的 howto 文件, 仔細觀察甚至主動發掘應用軟體的錯誤訊息, 並且理解或上網查解決方案; 可能需要看別人的程式碼; 偶爾稍微修改; 多數主題幾乎不寫程式。 對於牽涉太多硬體技術的問題沒有力氣接觸。
適合誰?
讓我們面對現實吧: 真正有興趣, 有能力寫程式的人, 並沒有那麼多。 另一方面, 現在最欠缺的不是軟體, 而是懂得善用軟體的人。 找我做專題的同學, 需要有一些特質:
- 喜歡下載/編譯/安裝/測試新軟體。 總之就是 愛-玩-軟-體。
- 組員當中有些人如果對資訊技術不是特別有興趣, 那最好對某一項非資訊的技術有興趣, 例如畫漫畫, 混音, 製作地圖, ...; 或對於幫助弱勢有熱誠。
- 有一股衝動, 很想拿自由軟體來幫
- 可能需要/有機會經常與校外人士接觸, 例如鄉下的中小學, 圖書館, 社福機構等等。
如前所述, 我的專題不太需要寫太多程式, 倒是很可能需要寫 script (例如 perl/python/php/bash/javascript/...) 拿既有的工具來 組合 出使用者需要的功能。
必須事先警告選擇系統整合類的同學, 你可能要有一些心理準備: 一年半後看到別組同學學到很多 coding 的技巧, 寫了很多程式; 而我們卻沒有。 這不僅會有矮人一截的感覺, 甚至可能就真的註定你將來與程式開發無緣。 另一方面, 學習下指令/整理系統, 其實也是很有價值的學習投資, 說不定也比較符合 未來資訊市場的人力需求。
具體題目
有關題目的選擇, 我的彈性很大。 只要是使用自由軟體來做事, 我幾乎都可以配合 (但網路與資料庫是我的弱點, 如果你選的題目需要太多網路或資料庫技術, 我就很難幫得上忙.) 你的興趣^H^H狂熱最重要。 請聽聽看創辦 Apple, NeXT, 與 Pixar 的 Steve Jobs 在 Stanford 對畢業生怎麼說。 "I'm convinced that the only thing that kept me going was that I loved what I did. You've got to find what you love." 如果你並沒有特別熱衷的題目, 又不太喜歡我的題目, 我可以讓你一直換。 但隨著時間一個月一個月地過去, 到後來你會心荒意亂。 總之, 對軟體沒有好奇心, 不會主動上英文網站探索的同學會很痛苦。 這些同學千萬別選我的專題。
底下是一些可能的題目。
例題一: 公版地圖的轉檔處理
政府釋放出 一些地圖。 我們可能用 qcad 加以處理, 讓 qgis 可以運用。 也可能用其他工具將它轉成 Geography Markup Language 或其他開放檔案格式, 以便進一步與 google maps 結合, 模仿 GoogleMapsMania 所列的一些有趣網站, 進行 mashup。 還可能嘗試將政府釋出的部資料與 OpenStreetMap 結合。 這個題目為我將要開的一門 「公民參與的地理資訊」 課程作準備, 因此我會特別投入。 此外, 希望能與社區大學或其他非營利組織互動, 實做一些對他們有用的成果。 會寫 javascript 的同學, 在 mashup 方面有表現的機會; 但一如其他多數題目, 不會寫大程式還是可以選。
例題二: 雙面碟
我寫了一個小程式 mk-boot-usb 讓製作可開機隨身碟變得很容易, 也因此可以在各地的演講場合幫聽眾製作 百毒不侵救命碟。
但是對多數人來說, 還是習慣在 windows 下工作。 如果能製作一顆隨身碟, 它既可自己開機獨力進入 Linux, 也可從 windows 透過模擬器進入 Linux, 變成一顆 「雙面碟」, 那就更有趣了。 本專題的目標是客製化 windows 底下的 linux 模擬器 colinux, 進行以下改良:
- 用 mk-boot-usb 製作出來的可開機隨身碟, 上面的 linux 要讓 colinux 也可以開得起來。 於是你的 linux 可獨立開機, 也可在 windows 下執行。
- 撰寫簡單的 script, 簡化客製化流程。
如果你暫時離不開 Windows, 但又認同 長遠學習投資的理念, 希望立即可以開始學 Linux, 以及跨平臺的觀念/工具, 那麼這個題目就很適合你。 這是一條很務實, 衝擊較小的路徑。 我以前跳脫版權專屬軟體, 也是採取類似的步驟: 先在非自由平臺上面使用自由軟體。 只是我來自 OS/2 而不是 Windows; 當初用的是 emx 工具, 而不是 linux。
2008 年 5 月: 請參考 這篇 ulteo 的文章
又, qemu 是另一個模擬器, 原本是用來在 Linux (host) 下執行其他版本的 Linux (guest); 但聽說也可以在 Linux 下執行 Windows; 又有人將它移植到 Windows 下, 所以也可以在 Windows 下執行 Linux。 請參考 這篇文章, 製作一個 live usb, 裡面包含 qemu 與某個版本的 Linux 讓使用者可以在 Windows 下試用 Linux。 最好可以對 qemu 的許多選項仔細研讀, 看看如何提高模擬效率 (聽說有沒有加上 「加速器」, 速度差很多)。
與 colinux 和 qemu 類似/相關的模擬器還有 xen, User-Mode Linux, Vserver, ... 等等計劃, 不過多數好像都只能在 Linux 上模擬 Linux。 請見 這篇簡單的比較
例題三: 自製動畫短片
先上 AnimeMusicVideos 觀賞一些自製動畫。 然後參考 Using Linux to Edit Fan Video 這篇, 用作者所提及的工具。 用 Blender 及其他自由軟體工具自製影片, 加以編修, 並上傳至該網站。 這是我們這個年代的人很不熟悉的文化, 有待年輕人開發。 選擇這個主題的同學, 必須對這個主題超極有熱誠, 因為我完全外行, 不太能給太多指導。 只因為 Free Culture 這本書的作者 Lawrence Lessig 在他的文章 The Read-Write Internet 當中提到此事很重要, 所以我也想請同學嘗試看看。
或用 scratch "寫" 故事?
例題四: 為「開放香草輸入法」撰寫輸入模組
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 圖案]](/~greg/i/rss.png)
![[帶頭升級 Office 2007? 別當害群之馬]](/~greg/i/n7/no-office2007.png)
![[(力求維持) 符合 xhtml 1.0]](/~greg/i/vxhtml10.png)
