最新文章

[讀書心得] 要愛你的作品! - 修改代碼的藝術

5月 18, 2010
2010.05.18 (二)



(圖片取自豆瓣讀書)
s2690732 
(原文書名為:Working Effectively with Legacy Code)



對軟體工程師來說,維護一個作品,真的是一件不容易的事。
每當案子接近結束 (通常還沒有接近結束...XD),就開始為了時程的問題,草草的交差了事。
只求能順利驗收。

當然事後的維護工作,就會來討債了。
俗話說,出來跑,總要還的。


而且,經常遇到的情況是,維護的根本不是自己的程式。
寫的人早就不知跑到哪裏去了,只好自己瞎子摸象..

為了要在原本的程式碼追加功能,或是修正奇怪的bug。
在如同黑魔法一般的程式碼流程中,往往不知如何下手。

也難怪工程師們會視這種事為屎缺 …. XD


記得程式設計之道裏面有一段話:

好農夫會忽視他種的穀子嗎?
好老師會忽略他最差的學生嗎?
好父親會容許他的孩子挨餓嗎?
好程式員會拒絕維護自己的程式嗎?


我在海賊王中也看到一幕,偉大的工程師 - 湯姆先生所說的話:


image

男子漢要挺起胸膛,面對自己所造的船 !!

這一個橋段真的是讓我熱血沸騰啊!

我們自己捅出來的簍子當然要靠自己來收尾呀!


好像有點離題 XD

------------------------------------- 回到主題分隔線 ---------------------------



這本書我是買簡體版的,台灣似乎沒有出中文版。
再怎麼樣,我看簡體還是會比看英文快啦 …. = =



這本書乍看之下會以為和重構那本重疊。

但事實上,和重構一書比起來,
這本主要是在偏向實作面。
甚至連測試工具、編譯器的特性都用上了!

主要是討論,要怎麼樣去修改現有的程式碼 (不見得是自己寫的)。
而且並非完全以物件導向技術為主。

連C語言之類的循序式語言,也在本書的討論中。
比如善用C/C++的 linker 以及前置處理器來進行 seam。




書中主要以 test 和 seam 為中心。
在修改程式碼前,必須要確認有辦法對它進行測試。
同時當然要有測試程式碼,也就是 test driven (TDD) 的方式。

第一部分(1~5章)最好是能先讀過,了解本書的術語和基本技術 (seam, 相依性、重構工具...等)

第25章的”解依賴技術”,就彙整了各式解除相依性的方法。可以先詳讀這一章。
第15章的”到處都是API調用”,則是我們常會遇到的問題。如何把一個重度相依於系統API的程式碼,切割並提取出來改良。(幾乎每行都是在call API啊 XDD)            

這本書我也還在讀,我相信它對於軟體工程師來說,是值得去詳細讀完的一本工具書。


---------------------------------------------------------------------- 
此次的年度目標達成狀況 

目標:讀書心得 (6/50)   

目標的設定在2010年新的目標這篇。

[Warstorm] 人類勢力十強! (AOW's Top 10: Human Faction)

5月 18, 2010
AOW 的票選又出來了!(原文在 AOW's Top 10: Human Faction)
這次是人類勢力的十大強牌。

本篇是根據原文改寫的心得。




10: Pegasus Rider



天馬騎士對付血在四以下的弓箭手,可說是一等一的好卡。
不過遇到像 CHG 或是 Hero 弓手,就會直接被秒掉囉。


9: Charge



和瞬發捨棄詠唱時間 (sorry 死神看太多 orz) 的戰鬥準備比起來,
Charge 有 Animated 是相當值得一用的。
反正一切就是拼運氣  XD


8: Earth Works

 

步兵團最愛用的卡,搭配 spearhead 能力的卡,超好用。
雖然步兵團本身會被弓兵強攻,但仍是相當泛用的牌組。

7: Archaeologist Arugi


 

人類陣營中少見的治療系 hero。
雖然人類有其他單位可以 Heal 來補血,但他們是步兵!
所以具有被弓箭手強打的弱點在~~~

Arugi 就強在他是 Hero XD

6: White Drake



雖然很容易被弓箭手射下來,
但較慢進場時,是很棒的控場角色!



5: Lord Darius




相當優秀的 hero。
在這樣的回合數能有如此的基本能力是很划算的!

搭配 barrier 卡片,若剛好也較晚進場,場上有4到6個單位時,
spearhead 的攻擊加成會讓對手慘兮兮啊~~

4. Mithril Shield





雖然對於 blast 、zap 這類的法術沒辦法擋住。
但 Block 2 可以擋住大部分的物理攻擊! (大多數單位的物理攻擊都在2以下)
相當強悍的盾!

3. Ball Lightning



就如作者所說,有 animated 就是讚。
這張比起原本的 Zap  ,需要多花兩個回合,而且攻擊力少1。
但衝著 animated 還是值得一用!

仍然是對付快攻 (anti-spam) 的首選!

2. Cirrusaliosa



和排名第一位的 White Dragon 比起來,Cirrusaliosa 的能力都比較好。
只需要多花兩個回合。

會排在 White Dragon 之後,原因就是因為牠是  hero ...XDD
這難道是試作機量產機的區別嗎? (sorry... 鋼彈看多了 orz)

1. White Dragon



噹噹噹! 第一名出爐。
就是在之前[Warstorm] 十強登場! AOW 票選出爐! 那篇中,唯一入選的人類陣營牌。

這張 White Dragon 不管是什麼樣的排名,總能排在前三名。
為什麼?

就因為牠可以量產化
此外也是該篇中,唯一不用 CC 幣就可以入手的牌。
至於牠的能力就不需要再評價了~~

小鐵的第一張獎狀 - 實戰投入第二彈 (U-BABY搬搬樂)

5月 17, 2010
image
2010.05.16 (日)

U-BABY 有辦搬搬樂後,我就幫小鐵報名了。

小鐵玩手指膏

5月 15, 2010
2010.05.03


媽教小鐵用手指膏,之前小鐵都是用筆或磁性畫板來畫畫。
這對小鐵來說還是第一遭呢 ^^



小鐵可以自己打開手指膏並擠在紙上:

image
(小鐵將手指膏擠在紙上)


雖然小鐵還不太會用手指塗抹著畫,
但是鐵媽教小鐵用拍打的,小鐵可是樂的很呢 ^^

image

手指膏可以比起一般的顏料較有黏性,適合小朋友沾在手上作畫。
也相當好洗。

我的記憶還停留在我小時候啊...完全不知道有這些東西  ^^"

還好鐵媽都知道,呼~~

我家的母親節聚餐

5月 14, 2010
2010.05.09 (日)

天是母親節

在昨晚娘家的母親節聚餐後,今天就換我們家囉 ^^

Visual Studio 2010 上市發表會心得

5月 13, 2010
image
2010.05.11 (二)


天去金典酒店參加了微軟 Visual Studio 2010 上市發表會

 前公司也有許多同事去,剛好就順便聚聚啦 ^^

到了的時候,只要把列印出來的報到單給服務人員,就可以迅速完成報到。

image
(趁下午沒有人時拍一下報到處 XD)


當然這次也擺了廠商攤位。

 原本有個門在旁邊,我們從那兒進出就不會經過攤位,直接就可以到中廊。
後來下午他們就把門封閉了,大家都得由廠商這一邊進出 XD

image

image

image

image

如果有帶名片,就可以用名片來換紀念品哦!
可惜我沒有名片....  記得之前和經理提過要做...

我:經理我們可不可以做名片啊?

經理:唔... 我們的工作是不對外公開的耶...  不然你拿我的去用好了!


我:............




上午的場次,一開始是概觀。
就是點出三螢一雲這個主題。
每一樣大概都講一點點~~~

三螢一雲,就是指三種Client (PC, 手機, 和智慧型裝置/嵌入式系統),以及雲端開發。
全部可以用同一套工具搞定。


第二場是軟體開發流程與軟體品質的改善。

TFS真的是重頭戲啊...
本次也圍繞著 Test 這個主題在跑。

到了中午,又要煩惱要吃啥了。
記得上次來參加 Mobile 研討會時,Tomato 學姐帶我們去吃麥當勞 XD

這次因為我們人還不少(Ricky, Kenny, Lucky, Nini, Grant ,Clover,另外Ken和海灘褲不知跑哪去了... = =),所以 Ricky 提議在對面的印度料理吃午餐~


image


我們當然叫了很有特色的烤餅。

image 

每一份咖哩,就裝在這樣的容器中。看起來份量不多啊...
一份要250元。

image

結果我們當下立刻決定要再追加白飯 XD

我們點了四份咖哩,大家分著沾醬吃。
味道真道地呢!

再來為了不要在下午想睡,所以大家就前往星巴克買個咖啡。(好悠閒啊~~~)

買了咖啡後,下午課程開始了,首先是保哥的 ASP.NET 4.0 。
60秒內完成資料後台 (Dynamic Data 的功能) 真是威啊!
我原本不知道保哥,但我有在看他的 Blog
議程中當然會秀一下他的blog囉,那時我才知道原來這位就是保哥呀 ^^"


image
(中場休息)


再來是董大偉先生的 Silverlight 4.0。
微軟已經把它變為主要的UI...
三螢的使用者介面,全部可以用這個打造。
最後還列了張 WPF vs Silverlight。

image

再來則是胡百敬先生的 TFS 2010。
這可說是重點之一。



image

最後的壓軸,就是微軟的雲端平台。
李智樺先生仍然維持一貫的搞笑風格。
也讓大家比較擺脫想睡的狀態啦 XD

我蠻喜歡聽他講的東西,~~


雲端目前只要知道個概念就好,因為實作的部分在將來更能會有變。
所以不用太過於care。
當然還是要大家去 try try 看就是了。


image






=============================================


我只講一些我比較有感覺的部分~~~

IDE的提升:

重點就是可維護舊版的專案!(當然也支援專案升級)
這個功能就立於不敗之地了... 至少我裝了2010可以不會對現行專案造成影響 XD
甚至連 VC++ 6.0、 MFC 都可以加到裏面一起維護。
之後就不需要再用舊的 Visual Studio 了。

editor 本身也有加強,光是 IntelliSense 就有進步,可以和C#, VB.NET 一樣直接帶出程式碼片段 (支援了 javascript)。
Pascal Case,可以讓IS輸入首字大寫,即可找出函式 ^^

現場也show了 jQuery 的支援。



其他還有許多新功能,再自行體驗囉。

ASP.NET 4.0:

內建了圖表控制項、以及輸出的 HTML 更加標準化。
Session 和 viewstate 採用了更彈性的方式來管理。



最方便的應該就是 Web一鍵部署 吧?
設定完成後,一執行,IIS 、SQL Server 全部幫你建立設定好。
連資料庫內容都可以一併打包。

這對我這種需要經常發布測試機和正式機的情況,真的好好用。


平行運算:


我本身的工作比較偏重這邊,對這種議題也較有興趣。
VS2010 這次提供了平行運算函式庫,可以讓我們不用再直接去處理 MT 的程式碼。
而且系統能自行充份運用多核CPU的效能來計算。
可是,我是有很多問題想問啦.....

可惜沒有專門的議程,只有用個範例帶過去而已。
看來還是自個兒上網去搜尋了 ^^"

另外會讓人很有興趣的是Debug 在平行運算上新增的Parallel TaskParallel Stack  工具視窗!
可以讓我們在除錯時觀察 thread 間的相依關係和資訊。
有助於找出 deadlock 的問題點。



Dynamic Data:

Data driven 開發方式實用化!
只要採用 entity 中的 meta data,就可以由模板來產生出我們在資料處理時常用的 CRUD 功能。

ASP.NET 4.0 下,可以直接在傳統 Web 程式上,直接加入這個特性。
Demo 時,約一分鐘,就可以生成資料表的後台程式,並發佈在網站上。


TFS 2010:
 
發展成這樣後,微軟幾乎全包下這塊了啊!

而且測試人員,可以不用安裝VS,也不用懂程式開發。只要再安裝Test Manager就好。
自動測試錄製的功能很強悍,記得之前還在GIS中心時,有廠商來推廣類似的產品。
現在 VS2010都內建在裏面,而且和 TFS 整合。


以往開發人員和測試人員間的溝通很有問題,所以微軟在這一方面有了改進。
強化了測試及 Bug 文件。

其中 Bug 單真的是一絕啊!

我們 debug 時最頭痛的就是無法重現錯誤!
但現在的錯誤回報機制,除了圖片外,也可錄影下來。
重點是,還能重現當時的 stack 狀態、變數內容。(使用虛擬環境來實現)



由於 TFS 使用 WebService 的架構,所以可以讓各種工具介接。
所以目前流程控管、程式碼管理、測試管理... 等,全部連接在一起了。
看到講師 demo 直接產生 UML 的循序圖,真的是讓我覺得太讚啦。


此外,還有 Layer diagram,讓我們自訂分層 (像是 資料存取層、邏輯層...)
然後程式碼分析就可以幫我們產生相依圖,並自動檢查是否有不正常的呼叫關係 (讚啊!)


Silverlight 4.0:

這部分不在我的守備範圍。真該請我們 UI 來聽聽看 XD          

基本上是增加一些強力控制項 (RichTextBox 、WebBrowser ...等)
而且程式人員不用再頻頻手key XAML了,大部分可以像 Windows Form 或 Web Form 這樣施拉完成。

另一個重點是,原本的 Silverlight 是以 sandbox 模式來進行的。
但現在提供 Elevated Trust 權限!
就可以對用戶端的資源做存取!

除了檔案系統、剪貼簿,連 COM Automation 機制 (表示 Office 也可供驅策) 都提供了。
讓 Silverlight 更加強悍。


Microsoft Windows Azure:


本次的主題之一。

不過以現在來講,除非是工作有立刻的需求,否則了解一下概念就好。
因為細節的部分還會再變。

VS2010 有提供模擬器,方便讓開發人員測試完成後再上傳發佈 (雲端可無法除錯啊~~)。



大概看到的就是這樣,其他的就是我不專心或是忽略掉了吧。
這次的講師群都很棒啊,希望在台中還有更多這樣的活動。

小鐵又有新玩具

5月 12, 2010
2010.05.06 (四)

媽買奶粉加購的玩具麥克風
同時還搭配一支眼鏡

小鐵對那支麥克風愛不釋手呀~~
一按下去就會有各種不同的音樂,小鐵也就會跟著跳舞 XD



小鐵也愛戴這支眼鏡,戴上就不想拿下來了 ^^"

image
(小鐵的眼鏡,看來好炫哦~~)

小鐵故意讓眼鏡掉下來掛在臉上,一副調皮的樣子~

image 

影片中,小鐵和以前一樣,會隨著音樂而動起來。
不過可愛的是和鐵媽的相互對話。

小鐵已經可以立刻吸收我們講的話,並重覆說出來。
而且會記住,加入他自己的詞庫中 XD

下一次需要的時候就會忽然冒出來呢!





此外,鐵媽也幫他買了小馬桶
打算先讓小鐵把它當玩具玩,之後再教他用 ^^

image 

其實這篇主要都是小鐵和鐵媽的對話互動。
小鐵又成長囉 ^^

 
Copyright © 大鐵與小鐵的煉鋼廠. Designed by OddThemes