ZETMAN 桂正和新作~~~

畫出電影少女的專畫美少女的作者:桂正和又有新的作品了,ZETMAN似乎回到桂正和最擅長的戰士劇情,但是這次的戰士卻有些像閃靈悍將(SPAWN)一樣,同樣是出身來自黑暗的戰士,只是這次的劇情又多了絕對的正義,似乎還蠻好看的。 講到桂正和我可是從小就是他的漫畫迷,我還有夢戰士的電動玩具說,想到那個可真是小時候的寶貝,不過~~~ 講真的,在桂正和的心中,正義戰士的樣子好像都差不多說~~~ (圖片來自: 桂正和圖片館 )
繼續閱讀

[Code Complete] 8: Defensive Programming心得(1)

再此寫下一些最近的讀書心得,可能太多無法一次全部寫完。但是有時間會繼續將其補其,有興趣的人再往下看吧!! 1.何謂Defensive Programming? _Defensive Programming_一辭簡單明瞭,在此書章節的開頭也有提到,所謂的Defensive Programming並不是增強程式的防禦,這樣是沒有用的。有太多種未知的輸入與狀況可能會出現,如何在已知、未知的環境中,對於正確、錯誤的輸入的反應,才是真正的Defensive Programming。 2.保護你的程式–對於不正確的輸入(Input) 好的程式絕對不會產出不正確的垃圾(garbage),不論是正確的、非法的輸入下都應該如此。所以一個程式的開始,對於參數的輸入,在處理之前都應該要有檢查的機制,避免處理過程中錯誤的產生。(在此書中有提到相關概念稱為 Preconditional)在此章節中,本書提到許多詳細的方式,就讓我稍微用一些方式將其整理一下: Check the values of all data from external source 對所有外來的變數,都應該要有做些檢查,比如說輸入字串就要能預防”Escape() “的輸入;對於網頁來的內容,要能分辨是不是含有非法的字串;對於數值要做”boundary check”,如此一來可大大降低錯誤產生的機率。 Check the values of all routine input parameter 處理的函式中,若要傳遞參數到其他的函式前,也要將其參數做相關的檢查,如此一來可避免不必要的錯誤值加以傳遞。 Design how to handle bad inputs OK,即使你抓到了錯誤的輸入,最重要的是,你要怎麼處理這樣的狀況,回傳預設值、回傳上一次正確值、直接改為正確值…許多的方式可以應用。 3.Assertion的應用 的確,本書對於assertion如何應用的方法算是相當的詳細,但是如果更仔細的使用(大量範例與CODE),可以去看Debugging Windows Programs裡面第三章對於assertion有相當的介紹,不過在此書還是有提到幾個比較重要的地方: Use error-handling code for conditions you expect to occurs; use assertions for conditions that should never occur. 也就是知道有可能發生的錯誤(輸入數值錯誤、找不到資訊、無法完成的函式)要有相關的錯誤處理方式,但是對於不應該、也不會發生的錯誤(指標尚未指定,參考點消失,COM被release掉)都應該要用assertion去加以標示出來,這一點是我認為本書再此章節中最重要的一個概念。 Avoid putting excutable code into assertions 在VC++中,assertion在release build中是不會執行的,所以儘量不要有類似以下的程式碼。 ASSERT(DoWorkReturnStatus()); > > Use assetion to document and verify precoditions and posconditions. 針對函式內參數的應用,可以利用assertion去做一些邏輯上的檢查,藉以作一份記錄。比如說,輸入的月份應該在1~12月之間,就可以寫成 ASSERT(nMonth > 0 && nMonth <= 12); > > For high robus code, assert and then handle the error anyway. 在此,作者建議。避免無法預測的錯誤,先ASSERT在針對ASSER的狀況去處理(光是assertion並不能解決問題,還是得將錯誤作一個妥善的控制才對。)這樣一來工程師可以快速的找到錯誤可能發生的地方,而程式本身也不會被不可預知的錯誤破壞。
繼續閱讀

Design Patterns–Observer

使用時機: 可以建立出關於”訂閱與發佈”的系統(一對一、一對多),在”訂閱與發佈”之中,你可以不在乎有幾個人的訂閱,並且一次針對所有的人去發佈。 可能問題: 不論是在Design Patterns的書上、或是在網站的資料上,都會提到必須”確保subject 在知會他人之前是完好無缺的”(Making sure subject state is self-consistent before notification. ),但是在實作上會有相當大的困難。 _舉例而言:_小明一家三口都訂閱”貧”果日報,送報順序是:爸->媽->小明。有一天,爸爸看到上面的新聞報導著火山爆發的消息,所以一家三口都搬家,造成報紙無法送至其他人手中,造成問題。 也就是Observer在接到Notify後,自身所反映的update。某些情況下,不僅僅將自己的Observer砍掉(detach),也將其他的Observer都移除,造成subject之後的Notify會產生問題(雖然說Observer彼此間不應該存在太緊密地關係,也就是不該知道彼此間是否有attach 某些subject)但是這樣的實作確實容易存在,也不易解決,一般解決方式會採取的是: Subject在執行Noyify前,對於每個Observer均增加一次Attach,避免 Observer自身的update去驅動其他Observer的Dettach 而失去Subject與Observer之間的聯繫,(如果是COM,將造成無法執行某些Interface進而Access Violation。) 心得: 這樣的Pattern實在相當好用,但是這個CASE主要是一對多,若是單純的一對一的更新,可透過傳入函式或是某個程式指標的方式去驅動即可。詳細的Implement可以參考書上及網路上的應用,在此僅對於此Pattern用法與相關問題作一個討論。 Reference: SENG 609.04 Design Pattern “Observer Design Pattern” Observer Pattern Design Patterns Links On Using the Observer Design Pattern
繼續閱讀

星爺迷必看~~[功夫]

禮拜天,排了兩個小時,總算把令人期待功夫看了~剛看完,說實在的,總覺得哪裡不過癮。但是回去看了許多網友的解說之後,會發現這部片子裡面暗藏許多的隱喻。在此就不先說明~~ 我超愛周星馳~~~~~ 招式與演員表 經典對白~~~ 此外,我也買了這本書~~ 看了一下發現這本書很贊喜歡周星馳的可別忘了買~~
繼續閱讀

Make Your Sign

昨天上班,被這種圖片嚇到。其實也是可以自己作一個類似的圖片出來。 http://pack-square.business-php.com/ 我想,這個網站主要是利用GD的函式庫去繪圖,只是搭配的色澤還不錯,很逼真~~~~ 此外~~你也可以做另外一種 http://www.churchsigngenerator.com/index_1.php
繼續閱讀

帝國大反擊~~~MSN Space

微軟,這位軟體業的老大,最擅長的不過就是利用自己強大的市佔率,去強迫市場上的使用者,去使用他們的相關服務,舉反MSN Messenger與IE都是如此。日前~他們發表了MSN Messenger7.0的BETA版本,裡面加入了許多令人驚艷的功能,以下有一些相關報導 人民網 聯合新聞網 MSN 7.0 搶鮮版報到! 在此,就先不強調一些其他的新功能。但是眼尖的人會發現,其實此版的MSN Messenger(以下簡稱MSN)最主要的,就是將微軟的新服務(其實之前就介紹過了~~~)MSN SPACE推薦給全世界的Bloger。 針對這一點,主要的就是在MSN的名單列表上,會出現相關的分享空間(此為繁中譯文,個人覺得有點奇怪),如同以下的範例圖(摘自人民網),你會看到該連絡人所分享出的圖片,或是可以連接到該連絡人的網誌去。 於是乎,人人開始建立自己的MSN SPACE,但是經過我這幾天的測試與使用下,其實MSN SPACE還是有一些使用上相當不便的地方。 **版面不可修改HTML: **當然,對於許多的使用者。這個是相當方便的,你不必去修改難懂的HTML CODE,但是相對的、你也就不能使用http://del.icio.us/這種方便的BOOKLIST服務(或許微軟自己會搞一套,WHO KNOW?) 帳號與相關不確定性: 要這樣的服務,首先你需要有MSN .NET  PASSPORT的帳號(廢話! 有MSN的人一定都有的)。不過,在我無聊亂逛下,我看到一個有趣的畫面。( 上面是寫_*您可能需支付網際網路的費用。),以後會不會收費??  別問我 ^__^” **對於其他軟體TrackBack的通用: **TrackBack已經是相當被許多BLOGER使用的一套機制(我想也是個禮貌,引人人家文章要知會一聲),MT的TrackBack算是蠻好用的,Plog也支援MT格式的TrackBack,在此!! MSN SPACE 完全不提供其他軟體的PING (TrackBack主要是用Ping來傳遞訊息),其實此點完全是微軟的作風。 **備份機制??: **不知道,是微軟大哥忘記這件事,還是故意不寫,這套MSN SPACE是我看過BLOG系統上,少數幾個沒有備份機制的,不過~~~想到以後可能會收費,這樣的遺忘,似乎又是合理的。 以上幾點,是小弟我觀察到的缺點啦。當然,MSN SPACE有許多好用的地方(介面、拖曳修改外觀、支援圖片相本、HTML編輯方式),我在此就不多加敘述,你問我,會不會使用MSN SPACE? 我有申請一個阿,不過就是拿來放放10MB照片罷了!!!
繼續閱讀