2009年11月30日 星期一

SL3當中的Out Of Browser功能

前陣子有讀者問到SL3的Out Of Browser功能,我才發現我在Blog上似乎跳過了,因為這個功能雖然是SL3的重要新功能,但是因為相對而言是相當簡單的,所以可能被我略過了。

Out of Browser是SL3當中的重要功能之一,它讓SL應用程式在瀏覽器外執行。不過實際上使用此功能卻相當簡單,只需要在Silverlight專案上按下滑鼠右鍵,選擇Properties,在顯示出的屬性視窗上就可以設定了:

相關的細節可以點選[Out-of-Browser Settings]按鈕進行設定。

絕大部分的參數細項,均可透過設定指定完成。設定好了之後,這個SL應用程式就支援Out of Browser。這時候,使用者可以隨自己的需要,將該SL應用程式安裝到用戶端,安裝時只需要在網頁上按下滑鼠右鍵,就會出現底下這樣的選單:

點選『安裝到此電腦』,使用者即可直接將應用程式安裝到用戶端,甚至會為您建立桌面捷徑或是開始功能表捷徑(依照使用者自行選擇而定)。

除了以設定的方式為SL應用程是添加Out of Browser功能之外,我們也可以透過底下這樣的程式碼,將SL應用程式安裝到用戶端:

'用戶點選安裝鈕
Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs)
'安裝在用戶端
If Application.Current.InstallState = InstallState.NotInstalled Then
'安裝
Application.Current.Install()
End If
End Sub

從上面的程式碼您可以發現,我們可以透過『Application.Current.Install()』將SL應用程式安裝在用戶端,也可以透過『Application.Current.InstallState』來得知目前該應用程式的安裝狀況。

除了取得應用程式是否已經安裝到用戶端等資訊之外,幾個與Out of Browser有關的資訊取得方式我們分別列舉如下。

首先,我們可以透過底下的程式碼,來判斷目前用戶端網路是否可以使用:

System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable()

這個功能的目的,是在協助SL開發人員,可以更輕易的建構出離線運算的應用程式,我們不僅可以透過上面這個指令得知目前的網路連線狀況,還可透過底下的方式,讓網路連線狀況改變時,可以觸發我們所安排的程序:

若我們需要得知目前應用程式是否為Out of Browser執行,則可透過底下的指令:
Application.Current.IsRunningOutOfBrowser()

前面介紹的這幾個函式,可以幫助我們得知目前應用程式執行的狀況、判斷網路的連線,讓我們得以決定目前應用程是要以何種方式執行。

透過這些機制,我們也以SL撰寫離線應用,例如當應用程式是連線狀態時,可直接透過.NET RIA Services存取遠端的資料庫,而當應用程式是離線狀態時,則暫時將資料透過IsolatedStorage機制存放在用戶端(瀏覽器端),或是透過SaveFileDialog將資料先存起來,待偵測到連線後再將資料回寫到遠端的資料庫中。

2009年11月27日 星期五

在windows 7中安裝Loopback Adapter

先前曾經介紹過透過Loopback Adapter讓VPC和host透過網路相連的方式[參考這裡],透過Loopback網卡,可以很輕易的讓你的主機與VPC以區域網路的方式相連,這對我來說相當重要,因為我常常把VPC當作Server(不管是IIS, SQL Server, 或是其他Server),而把自己的NB當作工作環境(Client)。

先前都相安無事, 不過換成W7之後,突然找不到安裝Loopback Adapter的地方(-_-'''), Google了一下,把心得和大家分享。

原始來源網址:
http://www.windowsreference.com/windows-7/how-to-install-a-loopback-adapter-in-windows-7/

首先,請利用管理員身分執行cmd.exe:


接著在命令列模式執行hdwwiz.exe,會出現底下畫面:


請按下一步,接著以手動方式安裝硬體:


接著選擇網路介面卡:


確定之後下一步:


這樣就OK囉。

2009年11月25日 星期三

office 2010 the movie : 很有趣的影片

office 2010 the movie : 很有趣的影片,還高畫質咧...
不過外國人的幽默有時候還真不好懂...

2009年11月24日 星期二

幾個我喜歡的爵士(Jazz)樂台

除了上回我介紹過的音樂電台之外,我最近又發現了幾個還不錯的網路電台,網路電台有兩種類型,一個是純網路電台,沒有在真實世界FM/AM發聲,只有在internet上傳遞,另一種是傳統的AM/FM,具有真實的廣播網路,然後透過網際網路發聲。

不管是哪一種,你會發現現在媒體是全世界傳播,無國界已經是一個趨勢,這十年毫無疑問的網際網路改變了我們的生活和世界。

最近發現的電台網址是:http://www.live365.com/cgi-bin/directory.cgi?genre=jazz
嚴格說起來它是一個電台的集合,我覺得有趣的是,蒐集一些電台變成清單,也可以變成一種生意,看來網際網路上可玩的business Model真的很多。

不過不管如何,對我來說,免費的東西總是好東西,況且台灣能聽到好爵士樂的地方真的不多。所以這幾個電台現在變成我的最愛,而且台北3.5G上網不是問題,電台還能隨身攜帶,挺好的。

[試試看]

你猜,我最常在什麼時候聽這個電台? 我肯定你猜不到,是洗碗的時候,音樂讓洗碗都變成一種享受...

2009年11月22日 星期日

Silverlight 4 中的列印功能

過去的Silverlight 1,2,3,經歷了22個月,改版速度快的讓人吒舌了,但是我相信沒有比PDC的時候SL4 beta突然推出更讓人訝異的事情了,真的,我們不是前陣子才在SL3 Launch嗎? SL4 beta已經出了? 真是驗證了我以前烏鴉嘴講的揣測,看來Silverlight的改版硬是要直接追上.NET Framework的進度,一起邁向 4.0。

不過我們更關心的,是SL4增加了哪些功能? 第一個想跟你分享的,是Silverlight的列印機制,SL4提供了一個簡單到不行的概念,但其實還真的蠻實用的東西。

請參考底下這個測試頁面:[列印功能測試]
但請注意,測試前需先安裝SL4 Developer runtimes: Windows 然後才能執行

你會發現這個小程式很輕易的SL把畫面列印出來了,這個功能怎麼完成?
看看程式碼,簡單到不行:


Imports System.Windows.Printing

Partial Public Class MainPage
Inherits UserControl

Public Sub New()
InitializeComponent()
End Sub

'列印物件
Private WithEvents pd As PrintDocument

'PrintDocument的PrintPage事件負責處理要列印的東西
Private Sub pd_PrintPage(ByVal sender As Object, _
ByVal e As PrintPageEventArgs) Handles pd.PrintPage
e.PageVisual = Me '將表單本身(me)列印出
e.HasMorePages = False '後續沒有其他頁面要列印
End Sub

'Button1被按下
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click
pd = New PrintDocument()
pd.DocumentName = "文件名稱" '顯示文件名稱
'列印
pd.Print()
End Sub
End Class

這個列印程式的概念幾乎和WinForm差不多,只是當然相較之下也陽春一些,但是對大多數Web應用程式來說已經夠用了,甚至很多原本ASP.NET沒法做到的列印控制,我們現在開始可以用SL建立解決方案,如果我真的要做出一些比較優質的列印效果,需要做的也只不過是利用SL在場景上繪製張圖,然後丟給PageVisual,你會發現PageVisual可以接受任何UIelement物件(包含Image),然後就那麼自然的印出來了,簡單到不行。但卻方便好用...

看來不多久就會出現SL的報表或列印解決方案套裝軟體了。

2009年11月19日 星期四

Silverlight 4 beta 登場 : 此時無聲勝有聲, 一切盡在不言中...

http://www.silverlight.net/getstarted/silverlight-4-beta [懶得看英文?]
http://www.techweb.com.cn/news/2009-11-19/474275.shtml

你認為該有的,過去卻沒有的,現在都有了, 列印, 滑鼠右鍵, WebCam, 拖曳檔案, 驗證與安全性, RichtextBox, 剪貼簿, 輸入法支援...

每回PDC總要要丟出一些令人訝異的東西...Anyway, 不多說了, 此時無聲勝有聲, 一切盡在不言中...

以下節錄自Tim's Blog
Visual Studio 2010 Beta 2 or Visual Web Developer Express 2010 Beta 2 (pick one)
Silverlight Tools for Visual Studio 2010
Expression Blend for .NET 4 Preview – for authoring Silverlight 4 and WPF 4 applications
WCF RIA Services (formerly .NET RIA Services) (NOTE: This is actually included in the SL Tools for Silverlight 4)
Silverlight 4 SDK CHM (offline documentation) – optionally online here as well
• Updated Silverlight Toolkit for Silverlight 4
• Developer runtimes: Windows and Mac platforms
Silverlight 4 SDK only – not needed if you install the tools above
Silverlight Media Framework – a new, Open Source media player framework for you to use.

Windows Azure 雲端應用程式開發

微軟煞有介事的弄了一個『Windows Azure 雲端應用程式開發』網站,提供SDK和相關資源的下載。雲端應用程式,簡單的說,就是把我們寫的應用程式放在遠端伺服器上(雲端),透過internet串聯,開發人員不需要去管(不需要在意)雲端的實體狀況,雲端設備供應商負責營運、維護、擴充、並確保效能上的最優,而開發人員只需要focus on開發的部分。(甚至有些雲端服務供應上會負責軟體的使用付費或收款)

如此一來,開發人員就可以專心開發,關於程式儲存位置、資料庫實體位置、使用者資訊(組織或帳號)這些都不需要操心,且開發出的應用程式可以在任何有網際網路連線的地方即可執行(當然也可以考慮開發出離線應用)。

而微軟和Google都提供了所謂雲端應用程式開發的SDK和相關資源,也就是說,你只要透過這些開發技術並且符合整個設計框架,就可以開發出所謂的雲端應用程式,放在網際網路上讓眾人執行。

當然,由於程式位於雲端,所以我們不(需要)知道具體的位置,微軟的雲端服務承諾我們24小時不打烊的服務以及最穩定和高效能的平台,只要你的程式放上去,隨即可以在網際網路上執行,但是由於在雲端,因此整個開發並不像我們把程式寫在實體機器或是部屬到IIS這樣的概念,所以沒有實體的SQL Server,沒有實體的資料庫,取而代之的是SQL Data Services,這是一套微軟提供的資料庫服務,我們可以申請帳號,然後免費(目前)存取,你的應用程式資料存放,就透過這組服務來進行,這表示你的資料也在雲端,你也不需要知道他的具體存放位置,微軟(運端服務供應商)負責保障資料的安全性。

同樣的,與組織、人員登入有關的機制,微軟提供了Live Services,負責管理使用者資料及應用程式資源,所謂的使用者資料其實就是過去的Windows Live技術,除此之外,還有一套Microsoft .NET Services,類似過去的.NET Framework,提供開發人員所需要的類別庫(現在是以服務的形式出現)。

有了這些,開發雲端應用就變得相對簡單了。還有不足之處?別擔心,除了微軟之外,還有太多的廠商正準備涉足這一塊,提供各式各樣的雲端服務,讓開發人員使用(當然,以後這些服務都要錢),慢慢的軟體變成租賃性質,甚至我們寫程式時用到的組件、服務,都變成租賃性質,回頭想想,這一切都是建立在全世界的連線基礎internet上,幾年後,軟體開發會不會變成另一個更有趣的世界?(屆時一定很多電影形容當internet斷線之後,造成世界末日的場景)

不論如何,在眾多大廠對雲端技術的推廣與支持下(商周報導,Google、微軟、亞馬遜、IBM、戴爾、昇陽、惠普等各科技大廠,都大舉跨入雲端運算領域。儘管雲端戰場已經打得火熱,還是有人認為,雲端運算不過是IT大廠想出來的另一個行銷花招。對此,廣達電腦董事長林百里的回答是:「No!這不是slogan(口號)也不是謊言,這是一個must(必然),是未來的氧氣。」),呵呵,好一個未來的氧氣,不管如何,大公司砸大錢投資是事實,如果你對這部分有興趣,現在微軟已經開放申請,開發人員可以到底下這個網址:
http://msdn.microsoft.com/zh-tw/azure/default.aspx
相關的SDK、開發的方式、教學資訊、影片...都已經在網站上了。

2009年11月16日 星期一

Office Live與雲端技術

隨著所謂的雲端技術的逐漸熱門(說到熱門,每隔一段時間就有一些熱門或風雲技術,但會不會撐下去則不一定,有的熱門技術沒多久就再也沒也人提起了,不過不知道你有沒有發現,最近一期的Run!PC和商業週刊,都在討論所謂的雲端技術...而Google、微軟等大廠都在用各種不同的方式支援,所以和Live有關的,我們也不免俗的要討論一下),Office也支援了雲端的儲存和共享機制,從現在開始,你可以下載Office Live Update 1.4套件,同時在這邊申請一個Office Live Workspace 帳號,完成之後,就可以享受 線上儲存、遠端多人合作等功能。

Office Live Workspace 有點類似MOSS,可以讓多人共享、共同編輯同一個檔案,或是作為團隊(公司、同學、家庭)的文件存放位置,同時你可以針對不同的工作區或文件設定分享,讓有權限的人才可以存取。微軟贈送5G的儲存空間,所以我可以把研討會的投影片直接放在網路上,只要有任何一台裝有office的NB就可以直接工作。

不僅如此,還可以跟Outlook整合,把通訊錄和行事曆拋轉到網路上。

而Office Live Update則讓你可以直接從Word、Excel、PowerPoint直接存取雲端中(Office Live Workspace )的檔案:

你會發現儲存檔案時,除了Local之外可以直接存到遠端:

另外,Office也快推出Web版,有興趣的朋友可以參考[Video],Office的Web版配合Office Live Workspace,這顯然會帶來一股不小的改變,看來微軟對雲端真是磨刀霍霍,對於開發人員來說,是否開始需要思考自己的應用程式是否也能搭上雲端的這股浪潮呢。

VS2010中的Silverlight Toolkit

自從Silverlight Toolkit開始被我歸類為必備品之後,VS2010beta2推出後,我最擔心的就是Silverlight Toolkit是否能夠在VS2010環境中運行,特別是DataForm。

如果有看過我在TechDays或是Silverlight Training介紹DataForm的讀者或網友,肯定也和我一樣,很關心DataForm是否在SL on VS2010的環境中也可使用。

所幸經過測試當然是OK的,使用SL Soolkit Oct 19 2009的版本,在V2010中也可以正常運行:

另一個很有趣的部分是VS2010的開發環境,你會發現圖中Button的上下左右四條線條,是可以點選的,和Blend當中一樣,這可以用來設定Aligment的,依照傳統WinForm設計的概念,就是Dock:

總的來說,至少在VS2010當中已經有所視即所得的開發環境,不需要每次非得切換到Blend進行開發了。

BTW, VS2010切換到Blend的時候會出現一些警告訊息,Blend 3目前是看不懂VS2010的專案檔的,不過你可以選擇忽略這個訊息,Blend 3依舊可以邊修VS2010產生的XAML檔案。

2009年11月15日 星期日

缺席的ASP.NET 3.5

上周有一些時間,到書店晃了一下,坦白說,我已經很久沒有逛(嚴格說起來也不是逛,來去匆匆實在沒有逛的感覺)書店了,老實講,每回去書店我還是會站在電腦書籍那一兩櫃之間徘徊,不管是不是電腦書的專賣店,我都會去看看『市場狀況』,不過最近這一年也少了,主要的原因一方面是電腦書籍的寫作和出版目前不是我的主業,另外一方面是最近也沒出什麼新書,甚至沒有很確定的寫作計畫,所以暫別一下市場也沒啥不好。

這回去,我看到架上有非常多的ASP.NET 3.5新書,新書是指,今年出版的書籍,看了之後不免也有些慚愧,從ASP.NET 2.0之後,我沒有再撰寫ASP.NET的書籍,一方面是Silverlight佔去了我相當多的時間,另一方面是(對,跟大家碰到的問題一樣),技術的改版太快,而書的整體銷量也確實沒有以前好,聽說(我沒有數據,所以真的是聽說),現在在架上所有的軟體開發類資訊書籍一個月銷量的總和,可能還不及過去一本暢銷書一個月的銷量,對這一點我是蠻相信的。但是反觀作者的寫作成本卻很高,拿我的好友奚祭司的經驗來說,扎扎實實的認真寫一本書大概要超過半年,縱使寫作速度快一些的,恐怕3-6個月還是跑不掉,但是現在一本書的銷量可能不及2000本,但是幾乎不到一年就得改版或更新,換算一下,全職作者每個月的工資恐怕差不多一個初階工程師一個月的薪水。

這也是你會發現很多作者其實是Part time在寫書的,大概大夥算算也發現不合,所以還是得找一個『正職』才行。同時你也會發現,市場上多了很多新手作者,或是大陸作者寫的書,原因是對出版社來說,新手作者(或大陸作者)的成本比較低,在沒有把握書一定會賣的狀況下(即便過去的暢銷書作者,也沒人有把握書一定賣的),能省任何一點的成本,都是能繼續活下去的關鍵,氣比別人長,在現在這種書市一片蕭條的狀況下,也是成為最後贏家的重要條件。

從作者和出版社的角度看,是市場變小了,大家都不買書了,或是開發人員(寫程式的人)變少了,至少在台灣正體中文書籍的市場很明顯是這樣,而出版又是一個需要規模的市場,沒有規模是無法獲利的,如果每一本書都只賣個一兩千本,那出版社距離收攤也不遠了。

但是從讀者的角度來說,則是可選擇的書籍少了,且品質或內容變差了,學習的成效變差了,能夠在職場上應用的就更少了,然而在網路上可尋得的資源卻變多了,這也是目前出版市場碰到的一很大的問題。如果閱讀只是為了取得片段的資訊,對於載體來說,其實網路比紙本書籍要好得多,又可以搜尋,又可以複製貼上,方便的很。

如果閱讀書籍沒有讓人有享受的感覺,恐怕會被blog取代是無可避免的,書籍的走向和過去可能完全不同了。也因此,ASP.NET 3.5的書籍,我是真的一本也沒出,一方面沒時間,一方面我也想想清楚台灣出版市場未來的走向。而現在,有結論了嗎?

面對明年的ASP.NET 4.0,我提過有機會我會在BLOG上把相關的東西整理出來,也有網友讀者建議不如直接寫本ASP.NET 4.0的Bible類書籍,也有網友問MVC的書籍是否打算出,這些建議我都放在心裡了。 不管出書與否,在Blog上各位都會看到我們最新的動態,一些最新的內容也都會先出現在 Blog或雜誌上,書籍,可能無法求量,但是和我上課時的心情一樣,就當作一種和讀者網友間交朋友的緣分了。

2009年11月10日 星期二

Silverlight Multi-Touch程式範例與說明

在這個月(2009/11)的Run!PC當中,我介紹了如何利用Silverlight開發Multi-Touch應用程式,包含如何同時拖曳多Element、利用Multi-Touch技術針對Element進行放大縮小,或是利用Multi-Touch配合Ink達成繪圖或手寫輸入的功能,有興趣的讀者可以參考。

2009年11月2日 星期一

VS2010 Beta 2

先前由於時間的關係,所以實際談VS2010的機會不多,終於,VS2010 Beta2現在開放下載了,同時,這次的下載附帶了一個『Go Live許可』,意思是你可以在特定的授權狀況下,開始以beta2的軟體開發你的產品,某種程度上也意味著微軟對於Beta2品質的信心以及希望能夠在剩餘的時間內廣泛的收取用戶的建議。

依照我們過去的經驗,Beta2某種程度上已經相當接近RTM版本的主要功能,同時,在安裝中您也會發現MVC 2和SL3已經是預設安裝的一部分了。很多新東西可以玩,ASP.NET 4.0的新功能在TechDays 2009場次中我也曾大致介紹,但是由於時間的關係,沒法完整的和大家分享,接下來我會盡可能就ASP.NET 4.0的部分和大家有更多的分享與說明...

VS2010 Beta 2下載位置:
http://www.microsoft.com/downloads/details.aspx?FamilyID=dc333ac8-596d-41e3-ba6c-84264e761b81&displaylang=en#filelist

2009年11月1日 星期日

不患寡而患不均

剛看完班艾佛列克和羅素克羅所演的絕對陰謀(State of Play)讓我覺得有些感慨,片子還算挺好看,只是我感慨的部分是關於報紙這個載體,當然,這跟劇情無關,只是片中羅素克羅說了一句:『你覺得現在都沒人看報紙了嗎?即便如此,我堅信讀者還是希望知道真相。』

這句話讓我想到這幾年由於網際網路等電子媒體(包含最近很熱門的電子書)興起之後,報社關的關倒的倒、換人經營的也不少,而剩下來(或興起的)報社,報導的真實性和正確性,則同時隨著報社價值觀的改變(銷量導向),和過去我們年輕時完全不同。

這幾年我的感覺是,訊息變多了,內容卻變得空泛了,報紙張數變很多,但是有深度的專訪和內容越來越少;電視節目很多,但是能讓你靜下心來看的越來越少;新聞台變成24小時放送,但是八卦流言和未經證實的小道消息卻變成新聞的主流;台灣書出得越來越多,但是值得放在書櫃上留下來的卻越來越少;可以吃的食物和新花樣很多,但是讓人健康的越來越少,反倒是有問題的食品層出不窮。

這幾年很多事情都變了。過去的價值觀,被持守的正直、公平、誠信、憐憫...在這個時代似乎都只是變成參考,好像成功和口袋賺得飽飽的才是王道。即便被抓到貪汙賄選定罪,但是選舉還是可以有票。

小小的台北市同時存在著一坪上百萬的豪宅和流浪街頭的老漢,有一天我搭高鐵很晚回到台北,才知道原來台北車站底下有那麼多流浪漢。在貧富差距越來越大的社會中,大多數的市民是永遠不會快樂的,幾千年前孟子早說了:『有國有家者,不患寡而患不均,不患貧而患不安』。

公平是穩定社會的碁石,我相信這個世界上大多數的人都想當好人,只是我們須要先建立出一個能夠鼓勵好人的社會。很多傳統的東西,還是值得留下來的...