網頁

搜尋此網誌

2010年4月30日 星期五

Pass Values Between Windows Forms表單之間資料傳遞

今天討論撰寫Windows常會遇到的問題,多個表單間的資料要如何傳遞?網路上已經有很多資料,可以參考以下的文章:
我想討論的事WPF(Windows Presentation Foundation)中傳遞資料的方式,基本上可以和Windows Forms是一樣的技巧,不過,WPF中有個Application物件,利用Application.Properties 屬性就可以完成視窗間資料的傳遞。

WPF的運作概念是,一個Application物件可以產生很多個Window物件,Application是看不到的,其作用像是一個錨點將我們寫的應用程式放在作用系統中,而Window物件則像是Windows Forms的表單,每個Window物件會是Application.Windows屬性中的一項。這個觀念在寫WPF時特別重要,也和以前的視窗程式設計不一樣!

2010年4月27日 星期二

No Silver Bullet 沒有銀彈

沒有銀彈」,什麼是銀彈?記得剛開始閱讀軟體方面的文章時,文章中常常出見這個詞彙「銀彈」,一直搞不清楚究竟有什麼含意,直到看了一本書才恍然大悟,這本書是1975年出版,1995年原著再版,軟體界的聖經:

「人月神話:軟體專案管理之道」
(The Mythical Man-Month: Essays on Software Engineering)

作者是Frederick P. Brooks, Jr.,書中第十六章「沒有銀彈:軟體工程的本質性與附屬性工作」(No Silver Bullet — Essence and Accidents of Software Engineering),這篇文章是1986年刊登於IFIPS上的文章,1987年轉載於IEEE《Computer》雜誌上。

「銀彈」的典故是來自於狼人的傳說,因為銀被視為月亮的同一體,具有法力,對付狼人必須使用銀製子彈射穿狼人的心臟,因此「銀彈」是殺死狼人的必殺技!

Frederick P. Brooks, Jr.著,錢一一譯,人月神話:軟體專案管理之道,台北:經濟新潮社,2004。

「沒有銀彈:軟體工程的本質性與附屬性工作 」這篇文章闡述的重點是(請記住時間是1986年):

「在未來十年之內,無論是在技術上或管理上,都不會有任何單一的重大突破頭夠保證在生產力、可靠度或簡潔性上獲得改善,甚至,連一個數量級的改善都不會有。」

There is no single development, in either technology or management technique, which by itself promises even one order-of-magnitude improvement within a decade in productivity, in reliability, in simplicity.

十年指的是1986年至1996年,而數量級指的是10倍的進步。銀彈指的是殺死狼人的「必殺技」,沒有銀彈比喻軟體上沒有必殺技的出現可以造成重大的進步。

Frederick P. Brooks, Jr.的論述指出:

軟體的開發工作區可以分成兩個部分,一是本質性(Essence):源自於軟體本質,屬於與生俱來的困難,指的是創造一種由抽象的軟體實體所組成的複雜概念結構。 另一是附屬性(Accident):當今伴隨在製作過程中所產生的困難,而非與生俱來的部分,指的是用程式語言來表現這些抽象的實體。

軟體的本質性(Essence)有:複雜性(Complexity)、配合性(Conformity)、易變性(Changeability)、隱匿性(Invisibility)。 這是軟體開發設計的天命,很難改變而有重大的進步。就目前(1986年)的進展都是對於附屬性(Accident)的進展,因此,雖說是有進步,但還未到達數量級的改善。

這本書一直是軟體開發的聖經,不是沒有道理,因為Brooks寫出所有人都誤以為正確的觀點,而且找出事情發生的原因,追根究柢看穿真相的精神,才是這本書的精華。

2010年4月19日 星期一

Globalization Localization 全球化與本地化

近日開發 Windows 應用程式遇到一個需求,原本 User Interface 建置為中文介面,現在由於需求必須修改成為英文介面。早在程式開發之初,我就有想說要將「多國語言(Multi-Language)」的功能加入,但礙於開發時間限制而沒有加入這個功能,對於目前全球化的市場,這項多國語言的功能勢必是需要的,值得我們好花時間研究一下。

.NET Framework 對於多國語言的需求已經支援,而且還更廣泛的提供一些元件和基礎給程式開發人員,這項支援是「全球化(Globalization)」與「本地化( Localization)」的討論範疇,全球化和本地化是不同的觀念。可以參考:
全球化 (或者說 Internationalization,簡稱 i18n,因為 i 和 n 之間有 18 個字母) 是指應用程式支援多種文化的特性,例如貨幣格式、日曆格式等,為了全球化市場做準備。於 .NET Framework 的命名空間是 System.Globalization

而本地化 (Localization簡稱 L10n ,因為 L 和 n 之間有 10 個字母) 是指應用程式本身可以針對特定地區語言做翻譯轉換的動作,為了符合本地人的文化需求,一般來說是利用資源檔 (Resources) 達成目的,位於 .NET Framework 的命名空間是 System.Resources

2010年4月18日 星期日

Important New Concepts in WPF

開發 WPF 至今大約快一個月了,其中一些觀念實在是有趣而且重要,今天來談談 WPF 中重要的新觀念。這裡主要參考書籍是 Adam Nathan, Windows Presentation Foundation Unleashed, Sams Publishing, 2007,台灣中文版是「鄭淑芬譯,Windows Presentation Foundation新一代使用體驗開發實務,台北:精誠資訊,2007」出版的書籍。

基本上這些內容在 MSDN 上都有說明,但是書籍的協助讓我們可以對 WPF 有整體性的認識,下面列出 WPF 中重要的新觀念與 MSDN 參考網址。

邏輯樹狀結構 (Logical Tree ) 與視覺化樹狀結構 (Visual Tree)
相依性屬性 (Dependency Property)
路由事件 (Routed Event)
命令 (Command)
這 4 大類觀念是開發 WPF 應用時應該要具備的觀念,也是 WPF 和 .NET Framework 比較不一樣的地方,這都是為了將 WPF 做為 Presentation 之用的設計。

###

2010年4月13日 星期二

Formatting Types格式化型別

使用Visual C#撰寫Windows或是Web程式都會遇到輸出字串(string)的情形,將數值輸出成字串的時候都會希望呈現(render)好看一點,這時候就要使用「格式化型別(Formatting Types)」的技巧。

因為太常使用了,可是書籍上都不會寫這部分,於是在這篇Blog列出相關資源,方便自己後續得利用。這個技巧數屬於MSDN裡面的:

開發工具和語言 \ Visual Studio 2008 \ 基本開發工作 \ 使用基底型別 \ 格式化型別

MSDN中提到:

.NET Framework 提供您一致、彈性和完整的方式來將任何數值、列舉型別 (Enumeration),以及日期和時間基底資料型別表示為字串。格式化是由格式規範字元組成的字串來控制,其可指示如何表示基底型別 (Base Type) 值。例如,格式規範可以指示格式化數字是否應該以科學標記法來表示,或格式化日期是否應該將月份表示為數字或名稱。...

功能是非常強大的!更詳細請參考MSDN網站。

最常用的莫過於「標準數值格式字串」與「標準日期和時間格式字串」兩大類。

2010年4月10日 星期六

Franz Liszt 弗朗茨‧李斯特

前陣子買了一張CD,這是李斯特(Franz Liszt)的交響曲。

官方網址:http://www.zigzag-territoires.com/article.php3?id_article=301&lang=en

曲目:
  1. Totentanz
  2. Ungarische Rhapsodie No. 1 en Fa
  3. Les Preludes Symphonische Dichtung
  4. Ungarische Rhapsodie No. 3 en Re
  5. Die wiege
  6. Der Kampf Um S Dasein
  7. Zum Grabe Der Wiege Des Zukunft
  8. Mazeppa Symphonische Dichtung

當下享受人生中美好的時刻,欣賞交響曲就是其中之一。

2010年4月9日 星期五

Organizations and Individuals 組織與個人

今天談談「組織(Organization)」與「個人(Individual)」的課題,起因於查爾斯‧韓第(Charles Handy)的書「你拿什麼定義自己?:組織大師韓第的生命故事」再次認真看完一遍,加上我的第一份工作至今已經快半年的時間,自身對於組織有更深入的體會與心得。

首先,我認為不應該稱公司為「公司」,因為公司是一群人組合而成的,用組織稱呼我認為比較恰當而且明白清楚!

進入一個組織之後,組織的氛圍會影響個人的行為與思考,最明顯的就是,個人不會想要盡全力貢獻他最好的一部分,因為絕大多數(看起來99.9%)的組織都是「自私主義(Selfish Doctrine)」,做的多不代表薪水報酬高,做的多工作量只會越來越多,於是形成組織的文化,這是很難去屏除的基因特質!這沒有對與錯的問題,畢竟個人必須在組織中活下去。

所以,一旦個人在組織中存活之後,個人會變得不像「個人」他自己,對於一個新進人員來說,絕大多數通常抱持著願景與熱情進入一個組織工作,殊不知個人已經開始隨組織的文化開始氧化,好聽一點是職場學習,事實上則是去個人化、制度化的開始。好的組織會讓一個人變好,爛的組織則是讓一個人變爛。很多人不了解這個事實,因為自身已經在環境中,又如何以自己的角度觀察自己,除非是死亡前的那一段日子,回顧自己的一生才會了解。幸運的是我們可以藉由查爾斯‧韓第的著作反省自己。

「你拿什麼定義自己?:組織大師韓第的生命故事」有太多的經歷彷彿就是現實生活中自己發生的例子,然而查爾斯‧韓第從不同的角度察覺,使我自身能夠完整看見更多事情的面相。

Thanks to Charles Handy.

熱門文章