發表文章

目前顯示的是 2月, 2008的文章

除了 Y2K, 系統遇到閏年也是一個難關啊~~

  今天是四年一次的閏年 Feb 29。   不約而同地,許多地方的不同系統都在這一個特別的日子開始作怪,這是就算 乖乖 也沒辦法保佑的災難。   我手上 CXBC 的通知平台系統,在這一天發出給客戶的交易通知,所有從西元年轉換成民國年的資料全部錯誤,顯示民國 97 年 2 月 28 日,讓客戶把今天和昨天的帳務全搞混在一起,客訴電話直逼服務人員腦門。   朋友在國 X 會負責的人資系統,也發現請假單開不出來,畢竟很多人會在今天請個假和 228 與週末湊個連續假期,不過幸運的是,請假作業是提前進行所以及早發現這個系統的毛病。但是另一個營運主系統則當得很慘,死機好幾個小時才搞清楚原來是閏年計算錯誤的問題。    【 用民國年計算閏年是不行的!要用西元年,西元年!】    【這不是學校老師都會出的作業習題嗎?小小毛病鬧這麼大?】   ( 這凸顯我這種非正統科班出身的程式員的訓練不足與悲哀 )    【你們這些廠商程式都不好好寫。】   透過 MSN ,我彷彿看到身為 MIS 的朋友難以置信地咆哮著...。   我遇到的問題呢,則是西元轉民國年,使用系統底層萬年曆運算,直接減去 1911 年所造成的,這種寫法的意思相當於,1911年前 ( 西元 97 年 ) 的今天的日期是幾月幾號。這樣的結果,找出的那一天當然不是閏年的二月 29 日。   聽到這樣做法的 MIS 朋友,簡直不可思議地直叫: 見鬼了!   要在最短的時間內 ( 今天營業日之前 ) 緊急搶救這個問題,我採用最 dirty 的方法,直接字串取代的方式硬生生幹掉,不過這並不能完整地解決此問題,只是暫時性的規避。我發現,要完整的解決此問題還不是件容易的事呢!因為程式允許使用者傳入 DateTime Format String 來自訂日期格式,我是先知道使用者會使用 "yyy/MM/dd" 的格式然後在程式中硬生生地針對這種 Case 作 Replace,若真要完整解決,我還得自己撰寫完整的 FomatString Parser 才行,工程實在不小。   總之,先過今天再慢慢想完整的解法。   像這樣的 bug 四年出現一次,當初做再多測試也不太可能事前測出這樣的 bug,只能說要寫出個沒有 bug 的系統真是不太可能。   處理閏年的問題,就留個不會遺忘的慘痛經驗來記起教訓吧。

[ 轉貼 ] 十年一覺程設夢 ( 下 )

前情提要點此   原先我喜歡當工程師, 獨自躲在安靜的角落, 把上級交代的事做完後, 就天馬行空想新點子, 上網找資料看論文, 然後動手實作出來. 坦白說, 軟體工程師是蠻幸福的, 只需一台 PC, 有上網環境, 就可以實踐創意. 不需像硬體工程師需要一堆設備跟很多單位配合, 才能動手.   然而經歷過 6 年不受重視被冰凍的職場生涯後, 我的態度改變了.   公司規模變很大後, 一些事情都慢慢變複雜, 日後能給我自由空間發揮的直屬高級主管恐怕也不多見. 而且遇上一些案子, 高層會先考量需求的研發/維護人力, 來交給一個 team, 而非一個人來執行.   工程師的我永遠是邊緣人, 只有發生問題解不掉時, 才會想到我. 而論功行賞, 封官加爵時, 根本忘記我的存在, 鐵定沒我的份.   成立有戰鬥力的研發團隊, 是很費時費力, 還要靠運氣(產品大賣).但要摧毀它, 只需派個只會打嘴砲的主管, 不出半年, 很快就搞定.   與其如此, 倒不如自己出任管理階層, 參與高層主管決策, 來爭取預算, 在自己業務範圍內, 營造出良好軟體開發環境, 吸引志同道合的 RD, 將所學 10 幾年的軟體經驗承傳下去, 為公司培養具執行能力的中階幹部, 來擔任士官長的角色. 只要具工程師性格, 有創意跟執行力的中階主管, 越來越多時, 我在公司內部, 才不會到處被視為麻煩製造者.   若 EeePC 打算要衝出 500 百萬台的大量, 需要成立更多課級單位, 應付現階段出貨需求, 著手開發未來次代機種, 以及研發新軟體技術, 拉高技術競爭門檻, 降低生產成本. 到時候就急需一群能獨立作戰, 充分授權的士官長來貫測執行.   軟體產業不是比人多, 而是比頭腦好的產業. 派個沒實務經驗的軟體主管, 馬上去大陸找一堆 2, 3 百個軟體人員來成立軟體部門, 沒有 20 幾個中階幹部來有組織規劃, 落實執行, 鐵定是一場災難.   我原本打算只成立小型團隊, 從 2007 年 7 月時慢慢找, 才找到一些合適人員. 但因接下來 EeePC 的延生機種, 系統客制化, 以及相關軟體的開發, 讓高層一直催促我要儲備更多的軟體人才, 來應付未來的產品規劃.   要加人可以, 但我要高層先答應, 以後分 Bonus 時, 是要看部門績效, 而不是數人頭. 如果我夠厲害, 其他軟體部門要用 10 ...

XD! 科技人也是很迷信的

圖片
  這兩天,我因為要解絕某個燙手山芋、大家避之唯恐不及、鬼魅般難解的系統與網路問題,勤跑某金控的機房...到門口如下圖,有沒有察覺什麼不對嗎?   轉頭看向另一邊,似乎機櫃上有某種降頭壓在上面...   靠!乖乖病毒已經徹底感染佔據某金控機房!( 噓~~不要說出去是哪一家... )   滿坑滿谷在機房繁殖的乖乖....   銀行資訊人員的心聲:『乖,小的我今年能否安心回鄉過年就靠您了。眾資訊系統請慢用,吾等絕不敢怠慢,請高抬貴手。』   來個乖乖供養系統大神的合照吧。   等等,這邊是...?   靠!連空調冷氣機也要吃乖乖啊!是啊,要是大小眼惹得空調大神不爽,空調大神一罷工,可是會連帶牽連資訊系統大神跟著不爽,然後集體罷工...有道理,說得過去。   離開前看著這滿坑滿谷的乖乖,沒想到以往和同事間的玩笑話竟然在這邊親眼所見血淋淋地上演著,哪天我是否會遇到一個客戶的機房,所有的機櫃外都貼上『 勒令禁止當機 』道士黃符?我相信在某個角落一定有這樣的機房存在。高科技人士的迷信程度其實並沒有比較低啊...

[ 轉貼 ] 十年一覺程設夢 ( 中 )

前情提要點此   2007 年四月某晚 8 點多時, 接到 Jerry 秘書的電話, 說要找我一起吃飯. 搭著 Jerry 的 Lexus 460 LS 加長豪華版, 去台北藝術大學吃飯. 席間才得知, 原來 Jonney 交代 Jerry 去執行百元電腦計畫, 但 Jonney 一直對軟體部分放心不下, 要 Jerry特別留意, Jerry 就請 HC 推薦合適的軟體人員來幫他看軟體這一塊.   雖然 HC 大力推薦, 但 Jerry 擔心我常跟其他軟體部門有磨擦, HC 反問他, 是要找一個會打仗, 攻山頭的人 ( 對啦, 這種人死的最快, 無法享受勝利成果 ), 還是守成, 注重部門和諧圓容的主管 ( 割稻尾最在行, 處世圓融, 見縫插針 ). 幾經思考後, Jerry 最後還是找上我.   其實在 2007 年 1 月時, Jerry 因底下的 PM 不懂軟體, 就叫我幫他看數位像框的發展機會, 我經過 2 天的技術 survey 後, 建議他取消, 因以其成本, 大可做一台 Thin Client 或 WebPAD. 如果真得要做, 建議 PM 考慮用 VIA C3 CPU + Linux 來開發.   而邀請 VIA CPU Sale 來開會時, 負責 AMD 百元電腦的 PM 也跑來插花. 後因華碩跟 VIA, AMD 價格談不攏, 最後連百元電腦的案子都停矲. 所幸 Intel 看到 AMD 在 OLPC 上的聲勢, 為防止 AMD 鹹魚翻身, 就跟華碩合作, 進入百元電腦市場, 而使這台小電腦起死回生.   餐敘後隔天就跟 PM, MID 等相關人員, 一起被關到北投春天酒店. 2 天後趕出百元電腦的UI/軟體功能規格初稿. ( 吃了兩天的生魚片, 真得有點反胃 )   那時候公司內部並不看好百元電腦的前途, 只好用我們這群從四處徵招來的散兵游勇來執行. 但因這是 Jonney 非常重視的案子, 使 Jerry 認真執行, 一個星期開 3 次會, 常常開到凌晨.   當時也不知道百元電腦會不會起來, 但與其繼續待在 NB team 被冰凍, 到不如把握這個機會闖一闖. 百元電腦是個人人不看好的案子, 沒有高官想進來插旗佔山頭, 完全沒有歷史包袱. 只有一群笨蛋, 傻傻的做. 有點像在公司內部創業的感覺, 如同 VGA 部門剛成立時一樣, 大家只...