BCC16 線上教材所在的主機:李白,在 2004 年 7 月 3 日早上, 也就是敏督利颱風引進的豪雨造成台灣重大水災的那天早上, 發生了一次損失慘重的磁碟毀損事件。 許多不幸的意外湊在一起發生,使得備份的資料也沒有全部派上用場, 那不堪回首的痛苦細節,也就不足為外人道了。 其實李白的磁碟毀損與所謂的七三水災並無直接關係, 位於中壢高地上的中央大學,在那場災難中並無損傷, 只是這兩場災難恰好發生在同一天罷了。 這實在也是很難解釋的巧合。
在李白的災後重建過程中,我發現一張網頁受損嚴重。 美國人說磁碟毀損為 disk crash,而 crash 就是『墜毀』的意思。 我看到那張慘不忍睹的網頁, 心中不由得浮現磁碟的讀寫頭『墜毀』在硬碟載體上的景象, 慘烈無比。
我保留了那張網頁。起初只是為了留作紀念,後來發現正好可以放在這裡作為教材。 讀者可以看到網頁的文字內容有許多莫名其妙的錯誤, 很明顯不是輸入不慎造成的別字。 那就是硬碟載體的瑕疵造成的字碼 (Big-5) 部份錯誤。 電腦只認字碼,再由字碼對應字型,然後印出字圖給我們看。 如果字碼錯了, 也許只是兩個字元 (Big-5 用兩個字元來對應一個中國字) 之中壞掉一個 bit 而已, 就會造成這種奇怪的錯誤。
但是,請讀者留意:即使網頁的文字內容有這麼多錯誤, 因為網頁是純文字檔案,它還是可以被瀏覽, 而且讀者還是幾乎可以讀懂文字內容的意義。 而作者 (我自己) 讀了之後當然就很容易看出來錯在哪裡, 而將它修改回來。
相對地,看看這張網頁嵌入的圖片。它們都是 GIF 或 PNG 格式的壓縮圖像檔案。 只要有一個字元發生錯誤,在解壓縮的時候就會全盤皆錯。 因此整張圖看起來完全無法辨識, 而且也沒有任何簡單的工具和方法來修復它。 錯得多一點的檔案,也許只錯了三個字元而已,甚至會整個無法解壓縮, 因此整張圖都無法呈現。
非文字檔案都是這樣的:只要錯了一點點,就幾乎全部無法使用, 而且幾乎沒有辦法修復---只能設法找出備份檔案,或者重造一份。
李白的硬碟毀損之後,我發現某些可執行檔無法執行了, 這肯定就是它的檔案中壞了一個以上的字元 (只要壞掉一個字元就可以毀掉整個可執行檔)。 還好我都有保存著原始碼。 原始碼也可能有錯,使得它不能被編譯。 但是還好原始碼是純文字檔案,根據編譯器的錯誤訊息, 我可以很輕易看出來它錯在哪裡。 譬如有一個錯誤是 echo 變成了 %echo,還有一個錯誤是 ip 變成了 )p。 您看,i 的 ASCII 是 0x69,二進制為 01101001, 而 ) 的 ASCII 是 0x29,二進制為 00101001,的確只差一個 bit 而已。
我可以輕易地修復原始碼,然後重新編譯,就重新製造了一個可執行檔。
以下就是那張被留作紀念的
[ 李白七三墜毀紀念碑 ]
請讀者去憑弔吧。
課外讀物:
單維彰 (2004/08/18) ---