關於我 留言板 相簿 統計資訊


2008-10-23

再過兩年的蟲蟲危機--民國百年蟲

相信很多如同我這個歲數的人,都曾到過漫畫店租過漫畫吧..
對他們所使用的租借系統是不是很有印象呢
再不然,中小型診所也是有同樣架構的軟體
都是建構在dos作業系統底下的ERP
這些系統幾乎都非常的穩定,一直忠心耿耿地幫業主維護資料,建立資訊
但是再過兩年,這些系統可能就要報廢了,可能無法在繼續使用

有聽過千禧蟲嗎?西元1999年的12月31日,當大家還歡聲雷動準備慶祝跨年的夜晚
有許多工程師在電腦前嚴鎮待命,他們一點也高興不起來
因為2000年的1月1日一到,可能會有許多程式出現錯誤,而導致駭客有機可乘
不過幸好早在幾年前就有專家預測這樣的現象
以致於沒有什麼樣的重大影響

千禧蟲走了,這次換民國百年蟲來了,會有什麼影響嗎?
答案是有的,而且情況更嚴重,可能嚴重影響到數以萬計的中小型企業
這些系統都有可能因時間錯序而產生難以預估的錯亂
而釀成嚴重的損失,也可能導致系統無法正常運作而造成企業運作停擺
更嚴重的話可能讓企業倒閉了..

這什麼蟲?怎麼這麼厲害?
其實百年蟲不是厲害在他本身
而是十幾二十年前設計者的一番美意,導致程式在100年的時候避不掉時間錯亂的危機
這些設計程式的人員,也許都還想不到這些軟體能存活那麼久吧
也可能沒考慮到民國百年的時候所有的程式會因為時間而資料錯亂

簡單來說,早期建制在DOS環境底下的應用軟體,針對"年"的設計
是採用偉大的中華民國的民國年為基準
雖然自系統時間擷取出來的依然是西元年
但為了要節省儲存空間,增進效能,大家就不約而同的把西元年-1911
而轉換成了民國年,存入了資料庫,整個運作系統的欄位也和西元系的不一樣
為8碼(民民/MM/DD),西元系的則是(西西西西/MM/DD)
那麼民國百年的時候會發生什麼事情呢?
其實很簡單,99/12/31的時間會跳成00/01/01
就觀賞面而言,很直覺的就是民國一百年的1月1日
但是就電腦的應用面來說,時間則是回朔到一百年前,也就是西元1911年的1月1日
也許很多人會不以為意,認為時間只是歸零而已,但
如果一套系統的處理時間突然往前跳了一百年,很多資料的意義就馬上轉變了

例如:
小明在民國99年12月28日借了一本漫畫,如果以七天內還的話
那應該要在民國100年的1月4日還書,逾期一天該罰5元
過了七天(100年1月4日)小明拿漫畫來還,理應不用罰錢,但是系統出現了錯亂
要求小明罰款5*365*100=182500
因為系統認定小明逾期了剛好一百年,一年罰365*5元,所以大約要罰18萬元的逾期費
也不知道當初在設計逾期費欄位長度的時候,有沒有到五位數,
但貼心的設計師應該不會設定那麼多才是
造成了溢位的問題,程式應該無法跑了


但是仰賴系統時間的系統,若時間不是當下,也沒什麼意義了,因為無法"即時"回應相關資料
PS.民國百年的時候應該就會出錯了,應該不用等到100年1月4日

最有效率的解決辦法,就是請當初撰寫程式的人員,先把民國年資料轉為西元年,再把程式的年份長度+2
雖說這應該是小工程,但大多數系統買斷很久,開發人員早就不知去向,就算一直有和設計者聯繫
他們應該早就不曉得把原始碼丟到哪了吧,就算找到了也不會改,因為真的隔太久了....

所以解決辦法也只能趕緊想辦法把資料庫抓出來,看能不能另外請人重新撰寫ERP程式了
距離百年蟲還有兩年,開發一套系統應該足夠,姑且不論使用人員上手的問題
但是累積了十幾二十年的資料,那不是開玩笑的,用錢也買不到,所以趁還有時間,趕緊重新做一個吧~~
(唐牛:做魚生還差不多XD)
如果你們有老闆還在DOS下用ERP系統,請告訴他事情的嚴重性,明理的老闆應該會很感謝你
又如果你會轉資料庫+寫程式的話最好,這是一展長才的好機會,趕快毛遂自薦一下
保住了公司長年的資料是大功一件

我?我無法一展長才,因為我要改寫的是我們家裡面的ERP系統,我爸不會感謝我,他視為是理所當然XD

 
Blogger Template Layout Design by [ METAMUSE ] : Code Name Gadget 1.1