2007/09/05

Silverlight 1.1



微軟日前正式發表Silverlight 1.0,並且展示了很多利用Silverlight 1.0技術的商業網站,例如MLB網站的影片,和微軟的Halo 3預覽網站HD版)、Tafiti.comMSN Podium '08。微軟沒有忘記必須讓Silverlight跨平台、跨網頁瀏覽器,因此Silverlight的runtime不僅有Windows和Mac版本,也會有Linux版,而Mono專案團隊將會負責實作開放源碼版的Silverlight 1.0和1.1;開放源碼版本的Silverlight的專案代號是Moonlight。Mono是由Novell贊助的Linux版.NET平台,有趣的是專案代號Moonlight。如何有趣?一是銀光、一是月光;再者,把Mono的最後兩個字母調換就變成Moon了不是嗎?

Moonlight不僅能在Linux套件執行,而且將支援Firefox、Konqueror、Opera。再者,Moonlight 1.0會如同Silverlight 1.0支援JavaScript程式開發架構,而Moonlight 1.1則會向Silverlight 1.1完整支援.NET架構。

隨著1.0的推出,微軟也正加快Silverlight 1.1的開發。Silverlight 1.1將會包含跨平台版本的.NET Framework,支援WPF的UI開發架構(包括可擴充的控制項架構、版面配置的管理、資料繫結、控制項面板、更多內建的控制項)。Silverlight 1.1也包含了目前開發人員使用的完整.NET Frameworkr基底類別庫的子集,能支援集合、泛型、IO、HTML DOM、XML、本機儲存、LINQ,以及sockets、Web Services、REST等網路功能。跨平台版本的.NET Framework,意味著開發人員可以利用任何.NET語言(VB、C#、JavaScript、Python、Ruby等等)來開發Silverlight程式。

目前如果想要開發Silverlight 1.0的程式,可以利用任何的文字編輯器-_-;或者以Visual Studio 2008/Visual Web Developer Express 2008 Beta 2搭配JavaScript Intellisense for Silverlight 1.0(這比利用文字編輯器hard coding方便許多)。如果現在就已經著眼於Silverlight 1.1,可以下載Silverlight Tools for Visual Studio 2008 Alpha和Express Blend Preview

More info:
Silverlight 1.0 Released and Silverlight for Linux Announced / Scott Guthrie's blog

2007/09/02

Chinese Article about eXtreme Programming

This is good intro in Chinese about XP programming. Finally there's more talk in Taiwan about iton a major IT publication.

If you interested in xp, also check out my older post. You should also know about Aglie Programming.
文/李延華 (記者) 2007-09-02

極限編程:訴求擁抱改變、注重溝通與測試,適合小團隊開發的敏捷開發方法論
在軟體開發領域談到「XP」,可不是指Windows XP,而是eXtreme Programming(極限編程)。

落實XP方法論的第一步,是拿起扳手與螺絲起子,拆除辦公室的隔板。因為XP強調的4個價值觀──溝通(Communication)、簡單(Simplicity)、回饋(Feedback)與勇氣(Courage),重點就是希望建立暢通而有效率的溝通管道。

另有12項實務,包括客戶駐廠(On-Site Customer)、系統隱喻(System Metaphor)、程式共享(Collective Ownership)、重構(Refactoring)、搭檔編程(Pair Programming)、編程標準(Coding Standards)簡單設計(Simple Design)、測試先行(Test Before Coding)、通盤規畫(The Planing Game)、小型改版(Small Release)、持續整合(Continuous Integration)、四十工時(Forty-Hour Week)等。

XP的簡單設計與靈活因應需求改變的主張,吸引所有人的目光,不過,我們不能忽略測試驅動(Test Driven)這個重要的原則。「測試」在XP中是必要的條件。

由於需求是不斷改變的,所以XP建議擁抱改變。而測試案例的目的,就是為了因應改變,而建置健全的測試案例將使專案無懼改變。

此外,不是所有的專案都適合XP,它適合2~12人的開發團隊,特別是應用在需求經常改變的領域。管理者、客戶及開發人員對XP而言,都是專案的成員,必須透過充分的溝通與回饋,才能讓每個成員都了解目前的版本能否滿足需求。文⊙李延華

Iteration 往覆式開發方法
早期的開發方式通常是瀑布式(Waterfall),從分析、設計、實作、測試到交付,是一路到底、不可逆的過程,然而這種方法在軟體業卻存有很大的風險。

由於客戶的需求經常改變,而且開發者憑自己的想像所開發的系統,也未必符合客戶的期望,因此許多方法論改採往覆式開發,每次設計、實作、測試與交付都採最小規模的方式。若不符客戶需求的設計,便可即早發現,進而修正。

Feedback 回饋
回饋與往覆是息息相關、互為因果的事件。在XP中,客戶與開發團隊之間的互動決定專案的成敗,客戶的回饋能提供專案後續發展的寶貴訊息。

在12項實務中,「客戶駐廠」也是呼應「回饋」的做法,而這個價值觀點出在XP方法論中客戶對專案的重要性。因為藉由客戶即時的回饋,開發團隊可以盡早了解問題與風險所在,即時修正不符合客戶預期的設計,朝正確的方向發展。

Simplicity 簡單
以瀑布式的開發方式為例,在實作系統之前,必須先做好完整的需求分析與系統設計。而且技術人員為了讓系統保持最大的彈性,往往在架構上預留擴充的空間。

但是XP方法論認為,客戶的需求隨時在改變,而且環境與技術也不斷地更新,所以預留彈性反而是增加包袱,因此建議開發者盡可能保持符合需求的最簡單版本,不要預想未來可能的功能,以控制成本、降低風險。

System Metaphor 系統隱喻
在XP中,每個人同時扮演系統分析師、系統設計師和程式開發者的角色,藉由客戶駐點,面對面溝通的方式,取得第一手的需求,然後直接做給客戶看。

為確保彼此的溝通沒有誤解,因此必須善用隱喻,讓客戶與開發者有共通的語言,利用說故事和打比方的方式,取代冗長而難以理解的文件。比喻的用語可以與IT無關,盡量以易於了解的方式,表達需要的功能。

Pair Programming 搭檔編程
兩個人共同開發一隻程式,一個人在寫程式的時候,另一個人需負責看程式,以檢查是否有出錯或可改進的部分,而且兩人要經常互換角色。

不過,搭檔編程通常是XP各項實務中最難被主管接受的一項,因為從成本與效率的觀點出發,大家各寫各的程式,將有兩倍的工作效率。再加上,管理者不容易確保看程式的人工作的品質,無法得知他是在發呆還是認真檢視程式碼。

Collective Ownership 程式共享
搭檔編程還有進階應用,就是搭檔關係也要經常替換(Switch Pair)。當使用者提出新的需求時,開發者就會被分配與新的對象合作,一起修改其他人合作開發的部分,並加入新的功能。

團隊的每個成員都有機會轉換與不同的對象搭檔,合作開發系統的各個部分,所以所有人也就都有能力修改與維護系統的每個部分,這樣的做法即是「程式共享」。

Continuous Integration 持續整合
在開發期間,當一組搭檔共同完成一個使用案例(User Story),並通過單元測試過後,便可以將程式簽入集中管理的版本控管系統,重新建構一次系統,並諮詢其他搭檔,執行所有測試。採用XP方法論一天內可能建構系統好幾次。

系統整合與測試之後,經由測試執行結果,可以讓開發團隊與駐點的客戶了解系統現階段確實可執行的功能是否符合需求,並掌握開發的進度。

Small Release 小型改版
依照XP的方法論,通常開發團隊是依據Story Card切割工作。每完成一個Story Card,就發行最新、可執行的版本,交由客戶驗收。此即XP所謂的「小型改版」。

客戶如果頻繁地檢視最新版的系統,便可確認專案是否符合期望,然後回饋意見作為開發團隊持續改進的參考。依照XP的要求,開發團隊至少每3周就要重新整合新功能到產品中,發行新版本,交由客戶驗收,並檢視未完成的需求。

Refactoring 重構
重構的意思,是指在不改變程式碼的外部行為的情況之下,修改程式碼,以改善內部的一致性和清晰性。根據XP的方法論,在每個小階段發行以及每個往覆式的周期之後,甚至是每天下班前,都可以執行一次重構。

重構通常是透過開發工具輔助執行,一般不會影響程式執行的結果,但為了確保重構之後,不會改變程式碼的行為及影響功能的正確性,開發團隊必須齊備完善的測試機制。

Cool Bandwidth Speed Tester (ADSL 速率測試)

When your ADSL operator said it's 8M, is it really that fast?

國內各大ISP 提供的測速網頁所 show的速率未必是實際速率 - 只能測出瞬間值。你用哪一家ISP用該家的測速網頁會較為公平 (從你家到機房端的速率) 。ISP比較能掌控的只有客戶到ISP自家機房這一段,而這也是身為消費者的我們能要求的...

這個 host在 DSL Report 的速率測試機就不同了,他不僅同時測量上下傳速率,並提供時間區段的均值,出來的統計結果專業多了,可惜只提供美國的。看來本島中華民族的差不多先生個性還是輸了...

Check it out: http://www.dslreports.com/speedtest?flash=1


keywords: Bandwidth test, 速率測試, ADSL

2007/08/22

C#基礎概念25問

1.靜態變數和非靜態變數的區別?
2.const 和 static readonly 區別?
3.extern 是什麼意思?
4.abstract 是什麼意思?
5.internal 修飾符起什麼作用?
6.sealed 修飾符是幹什麼的?
7.override 和 overload 的區別?
8.什麼是索引指示器?
9.new 修飾符是起什麼作用?
10.this 關鍵字的含義?
11.可以使用抽象函數重寫基類中的虛函數嗎?
12.密封類可以有虛函數嗎?
13.如果基類中的虛屬性只有一個屬性訪問器,那麼繼承類重寫該屬性後可以有幾個屬性訪問器?如果基類中有 get 和 set 兩個呢?
14.abstract 可以和 virtual 一起使用嗎?可以和 override 一起使用嗎?
15.介面可以包含哪些成員?
16.類和結構的區別?
17.介面的多繼承會帶來哪些問題?
18.抽象類別和介面的區別?
19.別名指示符是什麼?
20.如何釋放非託管資源?
21.P/Invoke是什麼?
22.StringBuilder 和 String 的區別?
23.explicit 和 implicit 的含義?
24.params 有什麼用?
25.什麼是反射?

2007/08/20

Process Monitor by Mark Russinovich and Bryce Cogswell (SysInternal)

SysInternal is been around since DOS date. And yet still active and hard core as they always are.

Their recent production: Process Monitor, I'm adding it into my must have toolbox - it allows you to watch windows processes and track 'em Comprehensively.


Process Monitor is an advanced monitoring tool for Windows that shows real-time file system, Registry and process/thread activity. It combines the features of two legacy Sysinternals utilities, Filemon and Regmon, and adds an extensive list of enhancements including rich and non-destructive filtering, comprehensive event properties such session IDs and user names, reliable process information, full thread stacks with integrated symbol support for each operation, simultaneous logging to a file, and much more. Its uniquely powerful features will make Process Monitor a core utility in your system troubleshooting and malware hunting toolkit.

2007/08/08

維基百科「致命的吸引力」

this article is written by on 2007/08/06. Check original post at: UDN
雖然同樣是「免費」,儘管校內齊備著各種專業資料庫,同學們仍然獨鍾維基百科。這是為什麼呢?

為期三天的維基2007國際年會 (Wikimania 2007) 在台北舉辦,我正好躬逢其盛,與另一位美國學者 David Pendery先生於首日共同主持一場名為【當台灣學生遇見維基】(Wikipedia and Taiwanese Students — A Good Mix) 的小型研討。在會中,我們邀請了幾位台灣學生,共同分享他們對於維基百科全書的看法以及實際使用的經驗,並且與在場的其他與會者進行了熱烈的討論。

我曾經教授「電腦網路書目學與研究方法」課程多年,對於台灣學生使用線上資料庫,有深刻的體會。事實上,國內大學圖書館每年都會投入大筆經費購買專業資料庫,其中除了 Project Muse、EBSCO、ProQuest等整合論文與期刊的全文或書目資料庫系統外,亦包括諸如【大英百科全書】、【大美百科全書】等知名一般資料庫。

由於這些資料庫十分昂貴,因此每年學校都會辦理講習,教導學生如何使用,只要在校園網域中,這些服務便完全免費,即使在校外,也可以透過設定「代理伺服器」(proxy) 免費存取這些資料。

然而有趣的是,雖然同樣是「免費」,儘管校內齊備著各種專業資料庫,同學們仍然獨鍾維基百科。這是為什麼呢?

其實答案很簡單,許多學生雖然做的是「研究報告」,但卻並不習慣使用專業資料庫。相反地,他們通常沿襲平時的查詢模式,使用Google等搜尋引擎作為資料收集起點。當他們輸入關鍵字後,往往會間接連結到維基百科全書。因此,透過搜尋引擎轉介,維基的開放性達到了最大值。。

它是個開放的平台,可以透過任何搜尋引擎存取,任何使用者都可以免費查詢。同時,任何人都可以增添、修改資料庫的內容,無論他們的專業背景或動機如何,都可以平起平坐,發表他們的議論。

維基的開放性,營造了其他專業、封閉資料庫所沒有的魅力,它真正達到了知識的全面下放與「去中心」,千百年來掌握在知識份子手中的權力開始解體,傳統的「讀者」(reader) 逐漸進化成為了「讀/寫者」(wreader = writer + reader),一種真正「眾聲喧嘩」的場域,透過超連結與多使用者互動,正無盡地展開。

當然,這並不表示維基百科的內容完全正確。相反地,它經常因為各種資訊誤導而為人所詬病。某些大學教授相當排斥學生引用維基百科的內容,一位與會學生便表示,她的報告因為引用了維基百科,而得到了極低的分數。因為該位教授稱「維基百科並無學術可信度」。

的確,雖然維基百科中的資料泰半正確;然而卻也經常因為不同動機或惡作劇,鬧出許多趣聞。例如今年七月馬英九便曾澄清維基百科中關於「父親馬鶴凌是陸軍中將退役,母親秦厚修是國防部總政治部股長」的惡搞內容,並非屬實。最後,維基只好限制網頁修改,設定為「半保護,匿名或新註冊用戶不能編輯」。

維基的魅力,在於人人都可以參與,交換意見,發表看法,分享知識。許多具有爭議性的主題,都可以在討論區看到精彩紛呈的辯論。然而維基的危險,卻在於大量的正確資料中隱藏著少量的錯誤,只要些微的誤導,就可能造成深遠的影響。

在這樣一個開放的場域中,「品質管控」成為了重要的課題。然而「品管」與「箝制」之間的分寸如何拿捏?這才是最棘手的問題。

維基的魅力,正是來自於它的危險。這種全然的開放性,形成了維基「致命的吸引力」。

延伸閱讀:
今年的維基國際年會,在台北〉〈挑戰極限:台北申辦維基國際年會記事

Mercury簡易改裝

有同好有一樣的困擾 - 如何使用自己的data logging軟體,因此寫了這篇來分享我的簡易改裝。 Background 雲豆子 MERCURY roaster 烘豆機的設計是使用自行開發的軟體,來:1. 操控風門/火力; 2. data logging/自動烘焙。 ...