發表文章

目前顯示的是 2010的文章

Windows Phone 7開發技術研討會 投影片

感謝大家參與 12/8,9,10 在北中南所舉辦的『 Windows Phone 7開發技術研討會 』,我在這個場次當中簡單扼要地介紹了WP7應用程式開發的一些技巧,以及從申請App Hub帳號到將應用程式上傳至Marketplace的整個流程,希望對大家有所幫助。 這個場次相關的投影片位置如下,請參考: http://docs.com/9OAD

Windows Phone 7中文通訊錄

圖片
我知道很多Windows Phone 7的使用者目前遭遇的困難,因為我自己也是使用者之一,不過有趣的地方就是,當碰到問題的時候,可以自己動手寫程式來解決,有時候也算是一種樂趣。 目前英文版的WP7,最大的障礙就是內建的應用程式(諸如瀏覽器、地圖、電話簿)沒有中文輸入功能,這也是我們先前開發了Chinese SMS, Chinese Mail, Search in Chinese等應用程式的原因。 但,更令人討厭的是,WP7有一個很強的People Hub功能,可以同步你在雲端(例如hotmail, GMail, facebook)的通訊錄,讓你直接使用,但壞就壞在上千個通訊錄同步下來,沒法輸入中文過濾找人可真是搞死人了。 儘管WP7強大的UI可以讓你用嚕的嚕到你要找的聯絡人,然後再撥號,但要在一千多個名單中,找到特定某個人這也太痛苦了吧。所以,我們只好自己動手做,我們開發一個程式,在微軟正式將WP7升級成中文版之前,希望能夠有一個簡單的UI可以讓用戶來編輯通訊錄,然後同步到手機上,並且在手機上可以搜尋聯絡人並撥號。手機本來就不適合編輯資料,所以我們希望通訊錄可以在網路上編輯,然後再同步到手機上,可以在網路上編輯通訊錄的Web應用程式很多,survey了一下,最後選擇同步 Google(也就是GMail)通訊錄 ... 理由是...似乎我身邊的人最常用的就是Google Mail和Google聯絡人,雖然我們都有MSN帳號,但尚且不多人把通訊錄建立在MSN的Windows Live當中(可能也很多人不知道,Outlook可以透過 Hotmail Connector 直接連結雲端的Windows Live Account)。而Google通訊錄可以很輕易的匯入Outlook或其他的通訊錄,且Google Contacts API相當簡單好用,所以Google聯絡人就暫時先變成我們的標的。 我們利用過去開發好的 注音輸入法控制項 ,很輕易地達成了通訊錄的搜尋和過濾功能,而同步Google通訊錄的部分,只需要透過Google API即可。 擁有WP7手機的朋友可以透過 Zune 下載,有興趣的朋友可以參考。 使用的方式很簡單,請先建立一個Gmail帳號,然後進入 http://www.google.com/contacts 編輯通訊錄,如果你手邊有現成的通訊錄檔案(例如Ou...

Windows Phone 7的Find My Phone功能

圖片
最近玩Windows Phone 7玩得不亦樂乎...由於Windows Phone在預設的狀況下,手機的通訊錄、行事曆...等資料都是同步Windows Live帳戶(和FaceBook),使用起來方便不少(當然前提是你的資料已經在雲端...) 如此狀況下,手機內也不免全是個人的機密資料,如果不見了恐怕超過災難兩字可以形容,也因此,現在的智慧型手機幾乎都有一個間諜級的功能,就是Find My Phone。 不只是iPhone 4, 現在Windows Phone 7手機也有此功能,只需要在Settings->Find My Phone項目下,把Save my location ...打開即可。 接著,用你登入在手機上的預設Windows Live Acount登入 http://windowsphone.live.com/ , 將會看到底下畫面(如果尚未設定,請先進入網頁上的Devices->Setting進行設定): 你會發現,除了可以透過GPS知道手機的所在位置,也可以強制讓手機鈴響一分鐘,或是Lock手機或乾脆把手機上的所有資料給刪了。 這樣可以確保手機遺失時的安全性。不過,當然這也表示,只要有你Windows Live ID帳號密碼的人,可以隨時知道你的手機(也就是你)的所在位置,甚至有人想到反過來應用,可以把自己的手機偷偷留在你的車上或包包裡面,就可以隨時知道你的所在位置...(這也不失為一個好應用) 總之,擁有了GPS以及3G/Wifi功能的手機,將會整合internet有更多元的應用已經是常態,手機上各式各樣的應用程式也越來越別出心裁...帶給開發人員一個無比想像的空間。

Windows Phone 7 中文應用程式開發經驗分享

圖片
從上一篇『WP7應用程式撰寫與App Hub - Marketplace 送件、審核經驗分享』到現在,已經過了十多天,在這段時間當中,我們持續的送出了大概是全球唯一的幾個中文應用程式到Marketplace,先前App hub僅開放先期開發人員上傳自己的應用程式,而且從這個月初開始,App Hub已經開放給所有註冊過的開發人員上傳自行撰寫的應用程式了,您上傳了自己撰寫的應用程式了沒? 最近這幾天,我也聽到了身邊一些朋友買到了Windows Phone手機(真是遠渡重洋的漂洋過海來台灣),很多人正開始一連串的WP7體驗之旅,我相信過不了多久,就會聽到許多的評價。 趁有空的時間,我順便整理了一下截至目前為止我們已經Submit的WP7 Application,共有七款,都已經在微軟Marketplace上架,分別是: 1.Chinese SMS:這是中文的簡訊發送程式(內建 拚音輸入法 ),由於當前的WP7版本並沒有內建中文輸入法(但可以正確顯示中文),因此我們建立了一個內建中文輸入法的簡訊發送程式,讓使用者可以輕易地傳送中文簡訊。 這個程式算是過渡階段彌補當前WP7英文版的不足,也驗證了自行設計輸入法在WP7當中是可行的。 2.Chinese Holy Bible:中文聖經查詢系統,支援 注音輸入法 ,可透過關鍵字查詢經文,可自由的切換章節,以及設定書籤, 內含整本中文和合本聖經。在這個程式當中,大量地使用了IsolatedStorage與相關的儲存機制,也初步嘗試了電子書的可能性,我覺得WP7的電子書軟體應該不難開發。同時間資料查找的技術全透過Linq來進行,在我所測試的手機上有相當不錯的效能。 3.Search In Chinese:支援注音輸入法的瀏覽器搜尋程式。由於目前WP7並沒有內建中文輸入,所以內建的瀏覽器並不支援透過輸入中文字來進行Google或bing搜尋,因此我們建立了這個小程式,讓使用者可以注音輸入中文關鍵字,並送入google, Yahoo, Bing等搜尋引擎進行搜尋動作。 這個程式中用上了WebBrowser控制項,可以很輕鬆的在WP7中進行瀏覽器控制。 4.Taiwan Map:這是我們的愛台灣代表作,可透過注音輸入法輸入關鍵字,例如『台北, 忠孝東路』這樣的關鍵字來查找地址,由於目前的Bing Map只支援英文,所以我們在這個程式當中,特...

WP7應用程式撰寫與App Hub - Marketplace 送件、審核經驗分享

圖片
我想大夥應該都不意外,很久沒更新Blog, 但卻看到我在FaceBook或Plurk上還健在,就表示最近真的很忙,忙什麼呢? 不難猜得出來,就是Windows Phone 7應用程式的開發。 可能很多人都已經知道,從10/11號微軟CEO Steve Ballmer親自上陣的Windows Phone 7發表會之後,數款由HTC, Dell, Samsung所生產的Windows Phone手機就要正式上市了,最快可能下個月,你就可以在通路上(或透過管道)買到手機。 當然這個階段的手機是多國語言的英文版,但對於中文的顯示絲毫不受影響,前陣子有幸試用了HTC 7 Mozart 一段時間,整體來說,看過的朋友(我自己就更不用說了)都相當滿意。WM6.5就不提了,與iPhone比較起來,操控感與流暢性毫不遜色。 但由於是英文機,整個操作介面目前當然都是英文的,但安裝了我們自己撰寫的中文應用程式之後,感覺也沒那麼生硬了。(這一篇po文暫且不談開發過程、流程與應用程式背後的意義,有興趣可參考下個月2010/11月號的Run!PC特別報導) 最近會一直很忙,是因為一直到今天,總算勉強算是走過整段軟體開發與送件(到Marketplace)的流程。類似App Store,在WP7上開發應用程式並且讓使用者可以下載使用的過程和過去WP6.5不太相同。 首先,你必須上 App Hub 用你既有的Windows Live ID(MSN帳號)建立一個App Hub帳號(如果不是學生,那你需要付費USD$99),且建立帳號後需要審核,強烈建議你如果申請個人帳號,請在一開始申請時填的名字就填和你的護照上一樣, 避免後續查驗時發生問題, 流程可參考 這裡 ( 中文版 ),然後你會收到一封來自GeoTrust的要求認證信件,你必須回這封信件且附上該附的資料,例如護照影本之類,通過審核你的帳號才能開通,一旦開通之後才能將你開發的應用程式送上 Marketplace或是在你登錄的實機上測試。 (對,如果你沒有通過身分認證,那你寫的程式就只能在模擬器上跑...,所以不管你要把寫好的程式送上微軟Marketplace或在實機上測試,你的App Hub帳號是很重要的) 接著,就是把你的程式寫完然後在實機上測過,這一部分的經驗是這樣... 1.整體來說,實機的操控流暢度和靈敏度好過模擬器, 2.在實機上的解析...

WP7準備亮相...

台北時間晚上九點30左右, WP7準備正式出現在世人面前... 台灣主要的生產廠商是HTC,有興趣的朋友可以在網路上看到相關的新聞... http://mag.udn.com/mag/digital/storypage.jsp?f_ART_ID=276515 當然,沒在台灣盛大發表,很大一個原因是因為目前登場的機種是英文版,雖然支援Multi-Language可正確無誤的顯示中文,但目前缺少了官方的中文輸入法(狀況就如同iPad, 和早期的iPhone相同)。 不過不要緊,事實上熟悉Silverlight開發技術的開發人員大多已經磨刀霍霍準備開始跨入WP7的開發領域(這也是我最近忙的沒法更新Blog的原因),很多讀者和學員問到,我在Techdays demo的WP7應用程式不是明明就有中文輸入法嗎? 怎麼說這個階段沒有呢? 答案是,中文輸入法是自己做的! 在這個階段,如果你的WP7應用程式需要中文輸入功能,你可能得考慮隨著應用程式綁一個輸入法,目前我們也正在開發相關的輸入法套件,以因應這個過渡階段的需要,相關資訊可以參考底下網址: http://www.arock.com.tw/ProductsInfo/WP7.aspx WP7中文輸入法 Demo :

感謝大家熱情參與 Tech Days 2010

感謝大家今天熱情參與今年我所負責的這兩場TechDays場次,在會場看到許多熟悉的老朋友,倍感親切,底下是今天分享的投影片內容,希望對各位有所幫助。 WPH303 Windows Phone 7 應用程式開發 - 使用 Silverlight [ 投影片 ] WUX308 Silverlight 安全實務 [ 投影片 ]

TechDays 2010 研討會 的兩個場次

今年TechDays 2010我所負責的兩場研討會,依舊是我所熱愛的Silverlight主題,更重要的是今年還有WP7的加入,相關的資料在底下,期待在會場看到大家。 Windows Phone 7 應用程式開發 - 使用 Silverlight Silverlight 技術是目前唯一跨足微軟 Mobile, Business App, Web Site, Desktop/Web/Embedded 的應用程式開發技術,開發人員將可以最小的投資,得到最大的開發效益。在這個場次當中,我們將介紹 Silverlight 開發技術在 Windows Phone 上的應用, 說明如何透過利用Visual Studio 2010 迅速開發 Windows Phone 應用程式。 課程代碼:WPH303 講  師:董大偉 適合對象:開發人員課程等級:300 - 進階應用 開課時間:2010年09月29日 13:30-14:40 上課地點:101AB Silverlight 安全實務 隨著 Silverlight 頻繁的導入企業,逐漸成為商業應用程式和網站的開發趨勢之一後,開發人員開始需要更關切 Silverlight 應用程式的安全性議題。在這個場次當中,我們將會由淺入深,討論 Silverlight 應用程式開發時的安全機制,以及需要注意的問題,以確保應用程式運行時的安全性。 課程代碼:WUX308 講  師:董大偉 適合對象:開發人員,互動設計師課程等級:300 - 進階應用 開課時間:2010年09月29日 08:40-09:50 上課地點:貴賓廳

5分鐘小Demo - 在WP7當中使用Bing Map地圖控制項

5分鐘小Demo - 在WP7當中使用 Bing Map 地圖控制項 [ Video ]

你還有多少時間給自己

最近身邊很多朋友在工作上做了(或準備做)一些調整,但卻全不是因為想賺更多錢,或是工作上發生瓶頸,幾乎都只是為了一個原因,想找回人生中的一點時間,留給自己。 在演講時,對於準備(或剛)畢業、退伍,初出社會的年輕人,我一向只將重點放在積極、樂觀、打拼這幾個字上,正在起步的人生,需要的是尋找一個方向,然後放膽往前衝,跑得快,是這個階段最重要的目標,所以年輕人,你要卯足全力。 隨著年紀慢慢走向中年,生活當中開始發生了一些改變,我開始意識到,很多人跑得很快,卻不知道自己到底要跑去哪裡,或是這條跑道是不是我該衝刺的方向? 也或許,你變了,變得有家人依賴,變得有員工或部屬要照顧,變得不再能只顧慮到自己一個人的心情,甚或是有時候你沒有變卻發現自己的跑道變了,跑著跑著發現似乎這條路跟當時熟悉的不同…讓你猶豫是否該繼續這樣跑下去… 翻閱這一期的商周,提到了『最後14堂星期二的課』作者,當時寫作時的心境,我依稀還有印象,當年這本書對自己所帶來的影響,在心裡所立下的志願和對人生的期待,但隨著年紀漸長,生活開始被工作佔滿,卻讓我很容易忘了起初的信念,對工作和生涯的規劃與期許,還有對自己這一生所許的願望。 一時興起,我翻了三年前那個已經關閉了的舊blog上的文章(感謝現今的資訊科技,讓我們可以留下一點人生的痕跡…),當年的blog叫做The Way I Am,後來的blog(就是你現在看的這個)叫做KeepWalking,坦白說,在文字遊戲上有些有趣的意義… 當年,最後一篇blog,我寫到… ---------------------------- 曾經有一段時間,數著園區的路燈和蝴蝶,想著未來要怎麼實現夢想,過一個自己喜歡的生活,數年過去,確實很多願望都已經實現(感謝上帝),只是不太敢去想,為了這一切所花費的時間和努力,是否真的是我夢寐以求的願景?人生的天平,會不會太過了頭,過於偏向哪一個方向而迷失自己? 每一年總有一段時間,有些事情會莫名其妙的迸出來提醒自己,該回頭想想每一步,想想自己的初衷是否還在那裡,感謝上帝,謝謝祢在我徬徨的時後引導我,在我任意妄為的時候提醒我,在我無助的時候幫助我,雖然我不是那麼合祢心意… 當然,就像我喜歡那個字--KeepWalking,所以理所當然,未來的路還是要繼續的努力走下去,我相信成功的人除了幸運和努力,更多的時候是,不管遭遇任何困難,都毫不考慮選擇放棄…...

Silverlight toolkit中的Theme控制項

圖片
先前我們曾經提到過,Silverlight的所有控制項,都可以透過Style的方式來替換呈現的外觀樣式,當然這些樣式你必須自行設計,不過在Silverlight Toolkit當中,已經內建了數種樣式可以讓開發人員直接使用,同時Silverlight Toolkit當中也提供了相對應的Theme控制項,讓您可以很方便的動態切換外觀樣式如果你安裝了Silvelright toolkit,可以在場景中最下層墊一個Theme控制項: <!--在Grid控制項外墊一個Theme--> <toolkit:Theme Name="theme1" > <!--Grid中的控制項可以自由佈置--> <Grid > <Button Margin="19,79,0,0" Content="ShinyBlue" Name="Button1" Click="Button1_Click" /> <sdk:Calendar Name="calendar1" /> <sdk:DatePicker Name="datePicker1" /> <ProgressBar Name="progressBar1" /> <Button Content="RainierOrange" Name="button2" Click="button2_Click" /> </Grid> </toolkit:Theme> 接著,請在Button上撰寫底下的指令碼: private void Button1_Click(object sender, RoutedEventArgs e) { //切換成ShinyBlue theme1.ThemeUri = new Uri("/System.Windows.Controls.Theming.ShinyBlue;component/Theme.xaml", UriKind.RelativeOrAbsolu...

Silverlight Data Binding中的Static Resources Binding

圖片
最近我在上課中曾經提到,Silvelright的Data Binding機制是如何地與過去ASP.NET和WinForm不同,這一部分一直是我非常熱愛Silverlight技術的原因,從最簡單的Data Binding機制,到Validation然後是data annotation,接著是Element to Element Binding,各式各樣精彩豐富的資料處理機制和效果,全部都藉著Data Binding技術來實現,連MVVM裡面都有Data Binding的影子... 而Silvelright技術的Data Binding又和ASP.NET/WebForm如此的不同,叫人又愛又恨,愛的是它功能之強大,幾乎可以說是貫串整個Silverlight開發架構,而讓人討厭的則是他和過去ASP.NET與WinForm時代的data Binding有那麼些許的不同。 然而,不管怎麼說,學習Silverlight時Data Binding絕對是你無法忽視的一大塊重要領域。這也是我Silvelright 4.0新書中花了將近萬把字很認真很努力的把Data Binding說個仔細的原因。雖然如此,我最喜歡的還是在課堂上和學員們分享Silverlight的Data Binding技術,上一期 課程 的學員應該可以很明顯的感受到,我們在Data Binding和N-tier架構概念的介紹所花的時間與精力。 原因都只有一個,因為Silverlight的data Binding非常、非常重要! 同時間由於VS2010開始支援Silvelright的所視即所得設計,你會發現我們可以在VS2010中點選某個UI物件,物件的幾乎每一個屬性都可以設定Binding,而除了Element To Element Binding之外,讀者一定常常看到在微軟官網介紹的Silvelright應用程式中,常常利用Data Binding技術Bind到一個或多個Static Resources。 這種場合相當特別,一般來說,我們在ASP.NET/WinForm是沒有這種概念的,Data Binding 繫結到的資料來源都是後面(後端,例如DB)傳過來的,但Silverlight的Data Binding由於是Bind到一個Object,所以可以寫程式new一個Object,然後Bind起來。 可是,往往我...

MSDN Flash專訪

接受MSDN Flash專訪, 有興趣的朋友們可以參考底下網址: http://msdn.microsoft.com/zh-tw/cc524082.aspx#a5

關於Silverlight的Style機制與ResourceDictionary

前幾天在 FaceBook專頁 上 明城 提到了關於Silverlight中的Style機制,才恍然想起在先前的Blog和書上幾乎都完全沒有提到ResourceDictionary這個在SL3之後被加進來的物件,因此趁著SL4的書籍在做最後階段的整理,順便在Blog上提一下這個物件。 ResourceDictionary讓我們可以在宣告Resource時,以Dictionary的方式來建置,例如: 這樣有一個好處,ResourceDictionary是繼承自Dictionary類別的物件,當Resource非常多的時候,或是Resource是動態載入的時候,開發人員可能無法記得或熟知每一個Resource的名稱,我們可以透過底下這樣的程式碼在ResourceDictionary中確認某一個資源設定是否存在: //判斷TextBoxStyle1是否存在 if (this.RD1.Contains("TextBoxStyle1")) { … } 因此,當資源被放置在ResourceDictionary中之後,我們也可以透過程式碼來動態的設置樣式,例如: private void button1_Click(object sender, RoutedEventArgs e) { //判斷TextBoxStyle1是否存在 if (this.RD1.Contains("TextBoxStyle1")) { //套用Resource this.TextBox1.Style = RD1["TextBoxStyle1"] as Style; this.TextBox2.Style = RD1["TextBoxStyle1"] as Style; this.TextBox3.Style = RD1["TextBoxStyle1"] as Style; } else { MessageBox.Show("找不到此資源"); } } private void button2_Click(ob...

以擴充方法替Canvas, Grid...等容器建立淡入淡出效果

圖片
從.NET的語言導入的擴充方法之後,我一直覺得它是一個挺方便的技術。 而開發環境的配合,也讓擴充方法的便利性更加的高。 舉個例子來說,我們寫了一段以程式碼動態為按鈕建立滑鼠移過時的淡入淡出效果,透過擴充方法,我們可以在主程式當中這樣使用: 圖中的ButtonPanel是繼承自Panel的Canvas物件,當然,Canvas物件是沒有registerFadeEffect方法的,但由於我們替Panel建立了擴充方法: public static class MyEffects //改為靜態類別, 以適用擴充方法 { //註冊事件處理函式(擴充方法版) public static void registerFadeEffect(this Panel container) { //設定先為0.1 container.Opacity = 0.1; //如果滑鼠進入 container.MouseEnter += container_MouseEnter; //如果滑鼠離開 container.MouseLeave += container_MouseLeave; } 使得VS2010可以直接在ButtonPanel後面帶出該擴充方法,呼叫起來相當便利。 請注意建立擴充方法的關鍵在其所屬的類別為靜態類別,且方法中第一個參數前加上this, 就表示該方法要提供給該參數所屬型別的所有物件使用。 程式碼下載請參考[ CodeStorage ]。

CodeStorage最新下載排行

圖片
CodeStorage最新下載排行(2010/7/1~2010/7/20) 想看看大夥對什麼比較有興趣? 請點選[ 這裡 ]。

ASP.NET AJAX中的HTML編輯器

圖片
HTML Editor是在最近這幾個版本的ASP.NET AJAX Control tooklit當中被加入的,不管是APS.NET 3.5或4.0都可以使用。實際上使用的時候和坊間一般的ASP.NET HTML編輯器如出一轍,相當簡單: 可以透過content屬性設定或取得HTML值: protected void Button1_Click(object sender, EventArgs e) { //取得HTML碼 this.Literal1.Text= this.Editor1.Content; } 但請留意,不要將HTML值填入TextBox控制項中,會不work,也有安全性的顧慮。另外使用前請記得先引用AJAX Control Toolkit套件,並從工具箱中將Editor拖曳到頁面中,請務必設定其width與height屬性。 範例下載請至codeStorage:[ 下載 ]

透過ASP.NET AJAX 4 Client Libraries實現 Modal Popup Window

現在很多網站都導入了AJAX技術,透過AJAX技術在網頁上實現類似Windows的強制回應視窗(Modal Popup Window)效果,像FaceBook、Google都有廣泛的使用這些功能。 底下連結的這個範例介紹如何透過ASP.NET AJAX Client Libraries,不需要引用特定.dll,只需要參考MS CDN即可輕鬆在網頁上建立這樣的凸顯式強制回應視窗功能。 程式碼約莫如下: Sys.debug = true; Sys.require([Sys.components.watermark, Sys.components.modalPopup], function () { $("#Button1").modalPopup({ PopupControlID: "window", //視窗物件名稱 OkControlID: "buttonOK", //設定OK鈕物件 CancelControlID: "buttonCancel", //設定OK鈕物件 OnOkScript: okayWasClicked, //按下Cancel鈕要做的事情 OnCancelScript: cancelWasClicked, //按下Cancel鈕要做的事情 BackgroundCssClass: "modalBackground" //背景顏色 }); $("#UserName").watermark(" ", "watermark"); $("#Pwd").watermark(" ", "water...

ASP.NET的顏色選擇器範例

圖片
這個範例是以ASP.NET AJAX 4 Client Libraries中所提供的ColorPicker機制建立的顏色選擇器,開發環境中不需要安裝任何套件,只需要引用微軟CDN當中的Javascript Libraries即可,相當方便好用。[ 下載 ]

三個ASP.NET小範例

我在Code Storage上放了幾個ASP.NET的範例,分別是: ●以Cookies記憶登入帳號:[ 下載 ] 這個範例展示如何類似Google或是一般入口網站以Cookies紀錄登入者帳號,在一定時間內不需要重登入的機制,以仿Forms驗證的方式來進行。 ●AJAX Client Templates與遠端資料存取:[ 下載 ] 這個範例透過了AJAX Client Templates和Web Services遠端資料存取的技術,讓頁面上的UI可以經由Services直接Bind(繫結)到遠端的資料。其中也使用到了ADO.NET Entity Framework與LINQ等技術。這個機制讓ASP.NET的Data Binding有機會在前端完成,不經過後端的C#/VB指令碼也可進行。 ●浮水印文字方塊(Waterwark textBox):[ 下載 ] 這個範例使用了ASP.NET AJAX 4的Client Libraries,以pure JavaScript方式(不需要引用ASP.NET AJAX Controls Toolkit的.dll)在頁面上建立出具有浮水印的文字方塊(Waterwark textBox),並且利用了微軟CDN(Content delivery network)讓網站的效能更好,管理上也更加簡潔。如果只想要在網站尚設計出簡單的AJAX效果,但不希望引用一整個ASP.NET AJAX程式庫時相當好用。

Noticeboard - Silverlight訊息看板套件

圖片
在撰寫Silverlight應用程式的時候,有幾種訊息顯示方式,典型的方式是透過ChildWindow或是MessageBox,但各有一些特點或缺點(例如ChildWindow要自己設計樣版,且兩者在顯示時主場景均無法操作),有鑑於這個問題,Silverlight在OOB Mode當中,加上了Notification功能,但在非OOB Mode中卻缺少了有類似效果的機制。 因此我們設計了一個類似的功能,使用的方式相當簡單: StudyHost.Silverlight.Noticeboard _Noticeboard; _Noticeboard = new StudyHost.Silverlight.Noticeboard(this.LayoutRoot); _Noticeboard.show("這是測試按鈕顯示的文字...",3000); 即可輕鬆的達成底下這樣的效果: 如需下載此套件,可參考:[ Noticeboard套件 ]

在Silverlight中透過WCF存取Session資料

圖片
有一些程式碼,是屬於『簡單,但是很重要』的部分。像現在我們的這個範例就是。 在上課時不只一個學員(嚴格說起來有很多很多學員),都很關心Silverlight和ASP.NET的整合,不論是資料的交換,或是ASP.NET頁面上的互動和整合,由於Silverlight以透過ActiveX插件的形式崁入網頁中,使得學員以為要進行資料交換很困難或是完全不行。 這真可是誤會大了,對於Silverlight來說,與遠端(伺服器端)溝通的方是最典型的就是透過WCF Services(當然,傳統的Web Services也行),所以只要透過在Silverlight場景中呼叫WCF Services,就可以輕易的存取Session資料。 例如,你可以建立一個底下這樣的WCF Services: namespace AccessSessionViaWcfServices.Web { [ServiceContract(Namespace = "")] [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] public class Service1 { [OperationContract] public string GetSession(string SessionName) { // Add your operation implementation here return System.Web.HttpContext.Current.Session[SessionName].ToString() ; } [OperationContract] public bool SetSession(string SessionName,string SessionValue) { // Add your operation implementation here System.Web.HttpCon...

關於 如何快速增進程式功力...

最近有網友在Blog上問到關於學習程式設計的問題(如何快速增進程式功力...),我也很開心nowshow幫我做了一些回覆。(其它潛水多年的朋友們,該是甦醒的時候了...) 其實我一直很想找個機會和大家聊聊『學習』這個主題,因為自己走了很多的冤枉路,所以總覺得有好多東西想分享。只是有時後工作忙,忘了,有時候寫著寫著發現詞不達意,放棄了。前陣子常這樣,說來你可能不相信,其實在這個Blog裡的已發表文章數量差不多只是所有所有文章數量的2/3,其他的我都沒寫完,擱著...久了就乾脆放棄不發表了。最近想打破這個限制,所以想到什麼寫什麼,也請讀到的朋友們原諒文章中用詞的隨性,畢竟這年頭『卸卸』之類的火星文充斥,我們這些老頭們寫的文章應該算工整了。 回頭談學習,如何快速增進程式功力...? 說來慚愧,但不怕各位見笑,打從我學習程式設計以來,到目前為止,只『付費』上過一次電腦課程,而且還是國小約莫3,4年級,此後,我從沒上過任何一堂課。程式設計幾乎都是自學。 請千萬別誤會,我不是說上課不重要,特別是自己身為講師,如果我讓大夥覺得上課不重要,豈不是滑天下之大稽? 首先,我雖然沒付費上過電腦課,但自從開始以程式設計謀生(我的第一個收費的專案,是在高中時代寫的台北市某校的招生系統,當時還是用Clipper配合讀卡機呢)之後,只要有業界的教育訓練我都盡可能參加,每次的TechED我也都想辦法到場(公司出錢。對,我也曾和大家一樣坐在下面乖乖當聽眾),觀念和眼界的建立是相當重要的。我身邊也有一些朋友們,是透過資策會或是其他知名的教育訓練中心的套裝課程,開始進入程式設計的領域。也有不少是科班出身,然後投身資訊領域。這些養成對他們都有相當大的幫助。 但我要說的是,不管怎樣的養成,這絕對只是一個起頭,不管你曾經經過怎樣的訓練,你都只能拿到一張入場券,進入業界之後,才是真正挑戰和學習的開始。我相信幾乎每一個軟體開發從業人員都同意,如果你討厭常常學習新東西,目前的軟體業肯定不適合你。 我回頭想了一下最近15年,我比較我『學習』一門技術的時間,和『使用』一門技術的時間,大家要不要猜猜看是『學習』的時間多還是『使用』的時間多? 我發現,隨著近幾年技術演進的速度越來越快,我花在學習的時間越來越長(不過這也因為身為講師或前導廠商的我們在學習這門技術的當下,相對而言手邊的資源會比大夥來的少一些,技術愈成熟,學習資...

關於RunAs...與Windows驗證的ASP.NET應用程式

從過去幾年教育訓練、專案和產品導入的經驗看起來,台灣的開發人員一般在開發網站的過程當中,實際上使用Windows驗證的場合相當高,但卻讓我很訝異的發現,實際上使用的開發人員卻不多? 很多企業在明明有AD的狀況下,還自己搞了一套SSO(Single Sign On)系統,當然,有些客戶是因為要整合非Windows環境的系統,那也就無可厚非,但卻還是看到不少客戶由於應用系統的建構是長年累月堆積出來的,一開始的Web應用程式並沒有用Windows驗證,導致後面想要做SSO也很困難。 總的來說,驗證這件事情被很多ASP.NET開發人員丟在一邊很久了,導致很多客戶即便有AD,卻總是用自己的資料庫存放帳號密碼,再讓ASP.NET應用程式走Forms驗證。 這也導致很多ASP.NET開發人員壓根沒用過RunAS這個指令。 最近這幾年因為我任職的公司產品的特性,我們開發的ASP.NET網站甚或是Silverlight網站,都採用了Windows驗證,並且搭配Kerberos進行整合驗證動作。也因此,開發人員常常需要透過不同的帳號模擬用戶進行登入,來測試各種不同情境下的使用者功能。 這時候,Windows當中的RunAs指令就相當重要了,你可以在Cmd Line利用底下的指令模擬特定使用者執行某個應用程式,最常用的情境式模擬特定使用者執行瀏覽器: runas.exe /user:StudyHost.Com\david "C:\Program Files\Internet Explorer\iexplore.exe" 或 runas.exe /user:david@StudyHost.Com "C:\Program Files\Internet Explorer\iexplore.exe" 上面這樣的指令可以模擬特定的使用者登入瀏覽器,方便開發人員進行測試工作。 如果你懶的每次都要輸入密碼,也可以下底下這樣的指令: runas.exe /savecred /user:david@StudyHost.Com "C:\Program Files\Internet Explorer\iexplore.exe" 這樣就不用每次重新輸入密碼了。 此外,如果你撰寫的Windows驗證的 ASP.NET應用程式,需要讓使用者登出(或重新用別...

Web 版Office Released...

圖片
Web 版Office Released... 我試著用了一兩天...個人覺得...速度上還是慢了一些。

在ASP.NET中使用 大檔案拖曳上傳 功能

在ASP.NET中使用 大檔案拖曳上傳 功能的教學影片已上架, 請參考FaceBook專頁。 [ 連結 ]

File Uploader 大檔案拖曳上傳控制項

圖片
想要在您的 Silverlight 和 ASP.NET 頁面上加入『大檔案拖曳上傳』的功能,並在上傳時顯示即時的上傳進度嗎? 在上個月的Visual Studio 2010上市發表會當中,我概略的展示了Silverlight 4的一些新功能,其中我個人最喜歡的範例就是大檔案的拖曳上傳(就是把file從檔案總管中拖曳到瀏覽器中並直接上傳,同時顯示該檔案的真實上傳進度)。 這個功能早在ASP.NET 2.0時代,我們就嘗試透過AJAX來開發過(當然當時只能做大檔案上傳,還沒有拖曳功能),在坊間許多文管系統當中(最典型的就是MOSS),這個功能也都是相當重要的需求之一。但礙於當時技術的限制,過去多半的解決方案都是在用戶端安裝特殊的ActiveX元件來處理。一來這衍生出安全性問題,二來也不是每一個用戶端都能夠順利或無條件的安裝ActiveX元件,再加上許多ASP.NET開發人員對於ActiveX元件的開發可能相當陌生,造成開發人員很大的困擾。 在Silverlight 4出現之後,我就一直很想把這個功能作一些整合,因此才有在VS2010上市發表會中的那個範例。但畢竟整個上傳動作涉及前後端的交互運作,前端是Silverlight 4,後端是ASP.NET應用程式,要開發人員從頭到尾重新建立這樣的功能實屬不易。 也因此,趁記憶猶新,我把拖曳大檔案上傳的功能整理成可在Silverlight 4或ASP.NET應用程式當中可重複使用的 控制項 ,提供給需要的開發人員直接使用。 相關的套件FileUploader檔案(Binaries & Examples)下載位置可參考[ 這裡 ]。 (範例包含Silverlight與ASP.NET) 在ASP.NET 2.0~4.0應用程式中的直接使用方式之說明文件可參考[ 這裡 ]。 (是的,在ASP.NET當中也可以 直接 使用,開發人員不一定需要會Silverlight) 在Silvelright 4應用程式當中的使用方式之說明文件可參考[ 這裡 ]。 底下是簡單的測試畫面展示,希望對各位有幫助。

ASP.NET 4.0當中的 URL Routing機制

在剛推出的ASP.NET 4.0當中,Web Forms所新支援的URL Routing機制也是最令大家矚目的新功能之一,過去在MVC, Dynamic Data WebSite中才使用的URL Routing機制,現在在傳統的Web Forms當中也可以使用了,這對我們開發大型的Web應用程式相當有幫助。 相關的介紹和說明可以參考本期Run!PC雜誌,您也可以點選[ 這裡 ],參考剛才公布在FaceBook上的ASP.NET URL Routing機制的使用展示影片。

Visual Studio 2010 CHT is released on MSDN

圖片
MSDN當中已經可以下載Visual Studio 2010中文版了, 有需要的朋友們可以下載(請選「開發人員工具」->「Visual Studio 2010」-> 語言分類請選「Chinese – Traditional」)中文試用版將會再晚一些釋出。

faceBook應用程式(Silverlight)開發範例

整理兩個先前在FaceBook專頁上分享的利用Silverlight(VS2010)開發FaceBok應用程式的簡單範例已經上架,需要的朋友可以下載: 1.登入,取得朋友清單 [ 下載 ] 2.發送訊息 [ 下載 ] BTW, 不要忘了,你得先申請自己的FaceBook應用程式才能測試這個範例(因為需要AppKey), 程式是透過Vs2010開發的,請記得update一下您的開發環境唷。 還是一樣,最新動態我會先放在faceBook專頁上,然後盡可能整理到Bolg上來。

ASP.NET 4 AJAX, Dynamic Data, MVC相關概念介紹文章分享

先前提到過,Run!PC的網站陸續刊出一些ASP.NET 4.0介紹文章的節錄摘要,可以在網站上先睹為快,完整版可以參考紙本雜誌。 底下幾篇分別是與ASP.NET 4 四大功能中有關的其中幾個部分: ASP.NET 4 中的Dynamic Data技術概念介紹與說明(節錄) http://www.runpc.com.tw/content/content.aspx?id=105872 ASP.NET 4 中的MVC2概念介紹與新功能說明(節錄) http://www.runpc.com.tw/content/content.aspx?id=105871 ASP.NET 4 中的AJAX技術增強與AJAX Client Library的新功能(節錄) http://www.runpc.com.tw/content/content.aspx?id=105870 上面幾篇是概念上簡單的介紹,具體的參考程式碼片段、範例、教學影片與完整的文字稿可參考接下來幾期的Run!PC或筆者BLOG, 當然,還有陸續將會出版的ASP.NET 4 新書。

Silverlight Tools for VS2010正式版釋出 & 範例與文章分享

由於最近建立了FaceBook的專頁,因此一些比較即時性的訊息就在FaceBook上公告了,在Blog上就沒有跟著貼上來,這這邊做個整理,幾個公告事項如下: Silverlight Tools for VS2010已經釋出正式版:先前在上市發表會上demo時所用的RC版本,前幾天已經釋出正式版,可參考 這裡 。 先前VS2010上市發表會當中,大家很有興趣的那個拖曳檔案到瀏覽器中,並且透過顯示進度的方式上傳到伺服器端的範例已經上架,請參考 這裡 。 Run!PC的網站有一些SL4與ASP.NET的介紹文章摘要,雖然完整版還是要看紙本雜誌,但可以在網站上先睹為快。SL4介紹可參考 這裡 ,ASP.NET 4 WebForm介紹可參考 這裡 。 如果你也有在用FaceBook,可以點選 這裡 加入專頁,以便即時取得訊息。

Visual Studio 2010上市發表會-高雄

高雄是巡迴場次的最後一場,每回到高雄來都希望能夠待久一些,只是多半也都是來去匆匆。 還是一樣,謝謝高雄場次所有朋友們的熱情參與,因為時間的關係,master-details的Step By Step dem範例可參考 這裡 。 下載或瀏覽研討會中所提到的範例和影片下載,請至[ 這裡 ]。 由於網站需要註冊帳號並經過驗證才能正確下載,若您先前沒有帳號,請依照流程註冊帳號,若無法註冊帳號或有任何相關問題,可隨時 mail 與我們聯繫。 目前已經放在網站上的範例和影片有: WCF RIA Services-1:展示WCF RIA Services配合VS2010,可快速的建構Business Application,抓取後端資料庫以及Data Binding的能力,同時介紹Data Annotations在Silverlight的應用。 WCF RIA Services-2:介紹RIA Services的資料過濾與篩選功能,透過自行修改後端Services可輕易的完成資料篩選功能。 WCF RIA Services Master-Details:介紹RIA Services如何透過VS2010的配合,快速完成連動式的Master-Details應用程式開發。 WebCam & Audio:WebCam和Audio範例截取以及列印範例。 DropTarget:檔案拖曳與顯示範例。 OOB的WebBrowser控制項:在Silverlight 4的OOB(Out-Of-Browser)模式中,透過WebBrowser顯示網頁。 ComAutomation:在Silverlight 4的OOB App當中,利用ComAutomation技術開啟Word、建立新文件,並在文件中動態填入文字。

Visual Studio 2010上市發表會-台中

謝謝台中場次大夥的熱情參與,因為時間的關係,所以送的書不多,還請見諒。 和台北場次相同,研討會中所提到的範例和影片下載,將會從今天開始陸續放到網站上,下載或瀏覽請至[ 這裡 ]。 由於網站需要註冊帳號並經過驗證才能正確下載,若您先前沒有帳號,請依照流程註冊帳號,若無法註冊帳號或有任何相關問題,可隨時 mail 與我們聯繫。

ASP.NET 4.0當中的Client ID Mode功能

有一個長久以來一直存在的問題,隨著這幾年瀏覽器用戶端程式碼(例如JavaScript/jQuery…等)的盛行,被更強烈的突顯了出來,那就是ASP.NET控制項的ClientID。 過去ASP.NET的ClientID一直是一個常常困擾開發人員的問題,主要的原因是APS.NET在Render出HTML網頁到用戶端時,ClientID常常是動態且無法確定的,特別是ASP.NET頁面加上了master-page、UpdatePanel、或是那些會隨著資料錄數量而可能動態產生出不同資料列的GridView、ListView、Repeater控制項之後, ClientID則更加的不可測了。 面對這個問題,ASP.NET 4提出了新的ClientIDMode屬性,可透過底下四種不同的設置值來決定ClientID的Render方式,分別是:AutoID、Static、Predictable、與Inhert。開發人員可以在程式碼中透過屬性來設定ClientID產生的方式。 具體的說明請參考本期Run!PC或點選 這邊 瀏覽教學影片或下載範例。

visual Studio 2010上市發表會

感謝大家今天在台北場次的熱情參與,下午由我所主講的Silverlight 4場次中,所提到的範例和影片下載,將會從今天開始陸續放到網站上,下載或瀏覽請至[ 這裡 ]。 由於網站需要註冊帳號並經過驗證才能正確下載,若您先前沒有帳號,請依照流程註冊帳號,若無法註冊帳號或有任何相關問題,可隨時 mail 與我們聯繫。

Silverlight 4 Toolkit中的滑鼠右鍵選單(ContextMenu)支援

圖片
有了 滑鼠右鍵支援 之後,第一個令人聯想到的,就是右鍵選單的設計了。配合著滑鼠右鍵的支援,在Silverlight 4 Toolkit當中,收錄了右鍵選單的控制項,當您安裝了Silverlight 4 Toolkit之後,可以從工具箱中找到這個ContextMenu控件: 您可以把ContextMenu附著在任何的UIElement上,呈現出的結果如上圖。除了ContextMenu之外,SL 4 Toolkit還附贈了一個ContextMenuService機制,這讓我們在設計XAML時可以這樣撰寫: <TextBox Height="26" HorizontalAlignment="Left" Margin="44,28,0,0" Name="textBox1" VerticalAlignment="Top" Width="286" Text="請在我身上按滑鼠右鍵" FontSize="16" > <toolkit:ContextMenuService.ContextMenu> <toolkit:ContextMenu FontSize="12" HorizontalAlignment="Left" Name="contextMenu1" VerticalAlignment="Top"> <toolkit:MenuItem Header="選單一" Click="MenuItem_Click"/> <toolkit:Separator/> <toolkit:MenuItem Header="可以設為disabled" IsEnabled="False"/>...

我的咖啡館 之 精緻輕食套餐

圖片
一天假日,起得大早,難得天氣好,所以親自下廚給自己和家人準備一個好一些的早餐。 全名是:三層超大火腿蛋番茄生菜洋蔥起司三明治,名稱沒什麼特色,但是一口氣把原料都講清楚了。 如果你有看過 我的咖啡館 ,那不用懷疑,這份輕食套餐肯定會是本店的招牌,便宜好吃又超大份量,專供developer一個人吃剛剛好。餐後附贈的咖啡雖然不是極品,但也是店長本人精挑細選的平價咖啡了。夠醇夠厚,而且後勁十足,包準你參加老闆每週一的精神演講絕對不會睡著。 配上店裡面優閒的soft Jzaa,我肯定你會有一個豐盛的早晨,加上輕快的好心情。 由於店長夫人覺得店長常年茹葷,蔬菜攝取量嚴重不足,而與本人一樣身為艱苦的Developer,或多或少肯定也都會有這樣的症狀,因此店長夫人總會叮嚀再三,要多加一些生菜...要多加一些生菜...所以狂加生菜就是本店招牌輕食的特色: 根據店長本人的親自測試,半個三明治約莫3-5口可以KO,對於忙著趕專案的開發人員來說,絕對是高效率的能量補給品,為了平衡加了很多的生菜,店長在加美乃滋和cream cheese時絕對不手軟: 前面說過,餐後的咖啡即便不是極品(免費贈送的不然你要怎樣???),但也足以讓你撐一個上午的好精神了: 濃郁程度剛剛好: 我的咖啡館 之 精緻輕食套餐,凡是出示貴賓卡(就是店長著作的任何一本資訊書籍,要完整的,不能只剩封面或是殘缺內頁)的尊貴客人,每人每天限量一套只要 $39 元。 價格實惠,本店週一到週五,每天限量10套。週六日無限量供應。

ASP.NET 4當中針對SEO(Search engine optimization)的支援

在ASP.NET 4當中,針對 Web Forms本身也有些許的增強,首先我們看到的是SEO(Search Engine Optimization)的支援。 對於很多企業來說,自家的網頁在搜尋引擎上能否被快速的找到並且呈現出正確的資訊,是相當重要的課題。在新版的ASP.NET 4當中,增加了Page.MetaKeywords以及Page.MetaDescription這兩個屬性,這讓開發人員可以輕易的在網頁中加入可供搜尋引擎檢索的訊息: protected void Page_Load(object sender, EventArgs e) { Page.MetaKeywords = "ASP.NET 4"; Page.MetaDescription = "這是一個呈現ASP.NET 4最新技術的專業網站..."; } 當然,開發人員也可以透過.aspx的頁面修飾字來處理: |MetaDescription="這是一個呈現ASP.NET 4最新技術的專業網站..." AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="ASP.NET_Blank.WebForm1" % > 這些訊息對於搜尋引擎來說有相當大的幫助。可以讓搜尋引擎精確的提供針對您的網頁的說明與介紹。

VS2010對Silverlight DataBinding的intellisense與Wizard支援

圖片
和很多人一樣,我們剛開始接觸 Silverlight 的時候,恨透了Silverlight DataBinding技術的詭異, 覺得,怎麼它不像ASP.NET一樣, 可以一股腦兒的把後面的資料庫的內容Bind到前端UI裡面去呢? 如果這樣支援,開發起來不是很過癮嗎? 後來才發現,當時我們的期待其實本身是有很多的問題的,特別是開發人員容易被制約在過去ASP.NET的思維裡,所以想當然的覺得做不到的事情就是Silverlight的DataBinding機制不夠好... 但卻忽略了Silverlight的DataBinding技術跟ASP.NET根本完全迥異,甚至可以說八竿子打不著...更不用說過去ASP.NET從UI層Bind到後端資料庫的概念到底是不是正確... 反而漠視了Silverlight DataBind技術的強大,配合起DataTemplate, Converter恐怕是其他開發技術中的Binding概念所望塵莫及的。 不過, 不過今天的重點不是這個(我會找天有空時認真的寫一篇歌頌(呃...不是...是介紹)Silverlight DataBinding技術的文章, 先回題), 今天想要分享的是, VS2010當中開始支援Silverlight DataBinding的intellisense了,這對於Silverlight開發人員來說,是一個相當不錯的功能增強。 就拿Silverlight當中著名的Element to Element Binding技術來說,現在我可以很大方的這麼寫: 你會發現,VS2010開發環境中已經完整的支援了Silverlight DataBinding的intellisense,當然,如果你要透過屬性視窗,透過Wizard來設定,當然也可以: 勾勾選選,不用寫任何程式碼,你會發現TextBox中的文字就會隨著SliderBar的拖曳而改變, 如何? 不錯吧, 這就是ElementToElement Binding技術: 回題,Silverlight的Binding技術很讚,這個我們都知道,以後有空再介紹,這邊要說的是,經過了那麼多次版本更新,終於在這一次VS2010開始支援了Sivlerlight Binding的設定,不管是intellisense或是Wizard支援... 嘿嘿,沒有藉口不用Silverlight了吧!!! ...

Office 2010 CHT is here...

圖片
看起來,該來的都來了,Office 2010在MSDN Subscriber已經可以下載...包含中文版。

VS2010中的新功能 - Generate From Usage

圖片
這是一個很有趣的新功能,我只能說開發工具真是越來越貼心了。 過去,我們在設計程式的時候,都是先寫好Method/property才去呼叫他,或事先寫好骨架,然後再逐步寫程式。 但是你一定有一個經驗,就是程式寫著寫著,想到其實應該要針對某各類別再加上一個功能(Property或是Method),例如在寫主程式使用到Customers這個類別時,發現應該要有一個Find()方法,先前設計Customers類別時沒想到,且Find()方法的參數應該要有string KeyWord,回傳值應該是CustomerName的陣列集合...在過去,你得回頭把Customers類別找出來先添加這個Method,然後程式再繼續寫下。 而現在,在VS2010當中,你可以先在主程式中先寫(呼叫)Find()這個方法,即便實際上Find()這個方法並不存在,例如底下的Cust.find(...): 接著,在出現的錯誤(當然會錯誤囉,因為Customers類別沒有Find()方法)提示訊息上選擇...產生find方法...(如上圖) 嘿嘿,神奇的事情發生囉... VS2010自動依照你的參數,回傳型別等等資訊,幫你在Customers類別中產生了find() Method的框架!!!! 這一招C#/VB均可使用... 坦白說,如果就TDD概念或是比較嚴謹的開發法來說,這樣做似乎都太隨性了一些...。但,這要怎麼說呢? 因為我猜這個功能將會是台灣的開發人員喜愛VS2010的幾個要因之一,因為用久了之後,發現...真是太方便了。 [ 參考範例或影片 ]

VB2010的新語法(二) - Implicit Line Continuation

過去C#一直可以把程式碼分段來寫,直到分號 ; 視為整段程式碼的終點,而VB則是一行就是一行,除非加上 _ 符號,否則一行程式碼無法拆成多行來寫(不過倒是可以把兩行以冒號 : 隔開)。 不過這樣在一行程式碼很長時會很不方便,因此在新版的VB2010當中,有一些特殊狀況下,你可以把VB程式碼拆成兩行,Compiler還是會視為一行。 例如,逗點(,)之後或左右括號 ( ) 之前: Public Function Add(ByVal Number1 As Integer, ByVal Number2 As Integer ) As Integer Return Number1 + Number2 End Function 或是,大括號{ } 的前後 ,例如: Dim info As Integer() = { 1, 3, 5, 7, 9 } 或是 = (其實還包含 &=, :=, +=, -=, *=, /=, \=, ^=, >=, +, -, /, *, Mod, , , =, ^, >>, Dim msg As String = "Hello, " & "Silverlight " 還有LINQ查詢語法的關鍵字之後, 例如: Dim a() As String = {"123", "456", "789", "ABC", "DE1"} Dim ret = From c In a Where c.Contains("1") Select c 這樣,果然方便多了。

VB2010的新語法(一) - Auto-Implemented Properties

VB2010當中,新增了Auto-Implemented Properties這個功能,很顯然是因為n百年前C#就可以這麼寫: public string UserName { get; set; } 而VB終於在這個版本支援了對等的功能 Public Property UserName As String 過去在VS2008當中,如我你用上面這樣的方式宣告,則VS2008會幫你把程式碼擴展成: Public Property UserName() As String Get End Get Set(ByVal value As String) End Set End Property 而現在在VS2010當中,則依舊保留 Public Property UserName As String 不會幫你自動擴展程式碼,因為兩者現在完全相同,也就是說,在VB2010當中直接以語法開始支援了Properties的Auto-Implemented,不需要再寫成Get/Set兩個部分了。 不過有個地方需要留意,當你使用了這個功能時,Compiler會自動幫你產生一個加上底線(_)的變數作為實際的資料存放位置,因此,若你定義了: Public Property UserName As String 則不可以再手動定義一個 Dim _UserName As String 這樣是不合法的。

Live 365 surprised me again...

前陣子跟大家提過 Live 365 這個廣播網站,坦白說對於開發人員或是作者來說(也就是對我來說),廣播好過任何一種其他的媒體,在寫程式或寫稿件的時候,可以讓我頭腦清晰甚至覺得很幸福。 先前我大多是聽piano或是Jazz,偶而聽聽古典音樂,今天心血來潮,在搜尋打入關鍵字Chinese, Oh My...原來還有中文電台? 不時還會聽到我年輕時代聽的流行樂(如今這個世代的年輕人已經將其視為老歌了)...呵, 我只能說, Live 365, you're surprised me again... 回頭想想,在internet上,一些簡單方便的應用,總是讓我覺得有價值,願意付點金額不高的小錢,不僅算是給廠商的支持自己也可以真的享受這些更好的服務,說真的,我觀察了一下,自己每天活在internet上,享用的免費服務大約80%以上,也就是說只有20%是要付費的,而且坦白說付的費用真的可以說是象徵性的費用。 這10年,internet真的改變了我們的生活習慣和方式。 BTW, 我知道i-phonoe和Nokia都有支援Live365,也就是你只要有3G,那音樂真的是無處不在...讚!

Silverlight 4 RTM is here !!!

圖片
Silverlight 4 RTM 正式推出, 已經安裝了VS2010的開發人員可以從底下連結下載安裝開發套件: [ Microsoft Silverlight 4 Tools RC2 for Visual Studio 2010 ] 如果你沒有VS2010, 可以考慮從[ 這邊 ]安裝免費的Express版本, 或是從[ 這邊 ]下載試用版。 Blend 4 RC可以從[ 這邊 ]下載 Silverlight 4 Toolkit 同步更新, 可從[ 這邊 ]下載 呵呵,來得好,等你很久了。 安裝完之後您會發現範本多了WCF RIA Services: Blend 安裝的時候問會你Key, 別擔心,線上可以免費申請: Silverlight Toolkit安裝之後,你會發現工具箱中多了很多的新控件: 如今...萬事俱備,只欠東風...^_^

真是每天有新的驚喜啊 - VS2010中出現令人期待已久的功能...呼叫階層

圖片
當你在VS2010的開發環境中,在某一個Method()上,按滑鼠右鍵出現的突顯式選單中,新增了一個『檢視呼叫階層』,點選後會出現『呼叫階層』視窗: 英文版畫面: 呵呵,不需要解釋,知道這是什麼吧,它是我期待了很久的功能,我一直希望看到哪一些Method呼叫了我寫的某個Method, 或是我寫的Method中呼叫了哪些Method...現在...都在這裡囉。 雖然簡單,但很好用!

ASP.NET AJAX Libary 正式版 released.

圖片
如同先前提到過的ASP.NET AJAX已經隨著VS2010正式版推出了,如果先前你有使用到AJAX Client-side controls的同志們,可以開始更新。 http://ajaxcontroltoolkit.codeplex.com/releases/view/43475

MSDN Subscribers: Visual Studio 2010 is Here!!

圖片
MSDN開放下載Visual Studio 2010囉, 如果您是MSDN訂閱戶, 現在已經可以開始下載了。 這一次全新改版的Visual Studio 2010針對Web應用程式的開發有相當多的貼心的設計,在上市發表會中相信您都將會看到,所以,再提醒一下如果還沒報名參加的...快快報名唷[ Visual Studio 2010 上市發表會 ] 另外,最近在撰寫VS2010的介紹文稿時,有一幕讓我挺感動的畫面,和大家分享... 有沒有發現? VS2010支援jQuery的intellisense,而且還是...中文版的。 關於Silverlight 4的部分預估也將會在本周稍晚釋出,近請期待。 updated: 順待提一下安裝的細節,你可能會發現下載項目和過去不太一下,有一個需要注意的地方是,Visual Studio Team System 改名為 Visual Studio 2010 Ultimate 企業旗艦版,此版本即原本 Visual Studio Team Suite,已整合所有 VSTS 之功能。再來才是Premium和Professional,詳細的比較表請參考 這邊

即將推出的ASP.NET Ajax Library...

有很久一段時間我的BLOG上沒有出現AJAX相關訊息了,主要當然是因為絕大部分的重心都放到了Silverlight身上(可預期的未來應該也會是如此)。 但由於工作上的需要,最近還是回頭看了一下即將推出的ASP.NET Ajax Library...,順便google了一下網路上的訊息,看這個態勢我猜想應該不少ASP.NET開發人員忽略掉了這個其實已經beta很久即將隨著VS2010推出的JavaScript Library,當然,也可能是因為您已經在使用jQuery了。 不過仔細看看ASP.NET Ajax Library當中還是有不少精彩的功能,同時現在微軟針對AJAX JavaScript Library也提供了CDN(content delivery network)服務,讓您可以直接在頁面上引用位於微軟的javaScript檔案,而不再需要把檔案放在自己的專案中。 後面如果時間允許,我也會陸續介紹ASP.NET Ajax Library中的一些功能,以及和jQuery的整合方式。首先來看ASP.NET Ajax Library中Client Controls的使用(底下的範例是浮水印的TextBox): &lthead> &lttitle>Untitled Page&lt/title> &ltstyle type="text/css"> .wm { color:Gray } &lt/style> &lt!--從CDN引用js--> &ltscript src="http://ajax.microsoft.com/ajax/jquery/jquery-1.3.2.js" type="text/javascript">&lt/script> &ltscript src="http://ajax.microsoft.com/ajax/beta/0911/Start.debug.js" type="text/javascript">&...

Silverlight 4 當中的滑鼠右鍵支援

圖片
過去在SL3時代,滑鼠右鍵是完全不被支援的,不管是在Browser或是OOB模式中,當您按下滑鼠右鍵,只會出現一個Silverlight預設的選單,如今在Silverlight 4當中,右鍵選單開始被支援了,我們可以透過『MouseRightButtonDown』和『MouseRightButtonUp』這兩個事件,來處理滑鼠右鍵的動作。 有了這兩個事件,控制滑鼠右件顯然不是太大的問題,但請特別留意在MouseRightButtonDown事件當中,你必須加上底下的程式碼: private void button1_MouseRightButtonDown(object sender, MouseButtonEventArgs e) { //必須設定這個屬性,否則預設的Silverlight右鍵選單會出現 e.Handled = true; } 否則原本(預設)的Silverlight右鍵選單還是會出現。 當您在MouseRightButtonDown事件當中這樣設定之後,接著就可以在MouseRightButtonUp事件當中實際處理你要進行的工作,例如在範例中我們是透過自己建立的EasyContentMenu來處理右鍵動作: //EasyContentMenu是我們自己建立的ChildWindow物件 EasyContentMenu cm = new EasyContentMenu(); private void textBox1_MouseRightButtonUp(object sender, MouseButtonEventArgs e) { //跳出突顯示選單 cm.Closed += new EventHandler(cm_Closed); cm.Show(); } //當EasyContentMenu物件關閉 void cm_Closed(object sender, EventArgs e) { //把值填入textBox this.textBox1.Text = cm.ReturnText; } 當使用者在TextBox1上面按下滑鼠右鍵時,會出現底下這樣的突顯式選單,當使用者選取了選單中的任何一個item,值會填入TextBox中: 當然,在ChildWindow程式碼當中也需要稍做配合: //建立一個ReturnText屬性,...

我的咖啡館

我的咖啡館位於首都郊區一條不起眼的巷弄中的一個角落。 店面略顯古樸的外表讓你覺得似乎有些不搭,但落地窗透出的柔和燈光,和隱約的咖啡香卻讓路過的人對咖啡館有著另一種想一探究竟的期待。 和Starbucks與伯朗咖啡不一樣,這個咖啡館即便是用餐時刻,喧鬧的情況也是少見,店裡每一位人客,都認真專心的盯著自己的NB或是書籍、期刊,彷彿正在和腦袋裡虛幻的敵軍奮戰,偶而輕啐一口咖啡(這是本店唯一的飲料),念念有詞的敲著鍵盤。而中年發福留著大鬍子的老闆(那可能是我),總是專注地看著電腦螢幕皺眉發呆,又像是思索著難以理解的數學題一般。 絕大部分的客人都帶著NB(如果你忘了帶,可以跟櫃抬抵押證件借用小NB一台),這裡有極高速的專線直接連到北美、中國以及幾個重要的資訊重鎮,當然,每一桌都有獨立的電源線以及各種網路連接設備,這是為了讓SOHO或是習慣在辦公室外工作的人員可以透過最方便的方式存取到自己需要的資料。對於需要開會的客人,有一間獨立包廂和投影設備,空間不大,但舉行小型會議則是綽綽有餘,已經連上區域網路的印表機、掃描器等設備也都是店內所有客人可以隨時使用的。 包廂以外,店內24小時播放著的是古典音樂或輕音樂、特別的時段會有音樂劇、或是Jazz樂,很多客人每天總是待到很晚,我們也準備了重烘培黑咖啡之類的飲品,確保熬夜加班趕專案進度的客人能夠撐到最後一刻,得以順利的結案。 店裡面佔滿一座牆的巨型書櫃,則是跟台灣各大電腦資訊書籍出版社合作的,有台灣最近三年(持續更新)的所有重要資訊書籍、雜誌、期刊,差不多也有十分之一是外文書籍,每一本都可以免費在店內借閱瀏覽,很多客人很喜歡這樣,因為電腦書汰舊換新太快,大多數剛畢業的年輕人也買不起,到店裡面看電腦書,反而變成一種替代方案。 店裡面唯一比較熱鬧的時候,是每週三晚上的developer time,我們會邀請最近熱門議題的講師或廠商,來店內分享心得,和社群夥伴們一起互動,剛開始舉辦的時候知道的人不多,現在幾乎已經是開發人員朝聖的所在。 別以為我們是以硬體設備取勝,如果你對咖啡有所研究,會知道我們採用的是巴西上等的咖啡豆(當然,也有台灣土產咖啡),每一杯咖啡的香醇口感,以及撲鼻的香氣,會變成你一天當中,最難以割捨的一餐。為了響應環保,幾乎每一個客人在我們店裡都有自己的杯子,客人走進來,吧檯的工作夥伴立即找出你的杯子,幫你烹調出最喜歡的口感。 店裡...

Silverlight 4當中的剪貼簿支援

圖片
在Silverlight 4當中,剪貼簿開始被直接支援,但是由於畢竟應用程式是執行在瀏覽器當中,所以安全性還是會被額外的考量,所以當您撰寫的Silverlight應用程式欲存取剪貼簿時,會出現底下這樣的畫面: 待使用者按下『是(Y)』後,我們的程式才能夠存取剪貼簿。 不過,程式碼卻相當簡單,存取剪貼簿的程式碼如下: private void Button_Paste_Click(object sender, RoutedEventArgs e) { //將文字貼上RichTextBox2 RichTextBox2.Selection.Text = System.Windows.Clipboard.GetText(); } private void Button_Copy_Click(object sender, RoutedEventArgs e) { //從RichTextBox1中將選取的文字填入剪貼簿 System.Windows.Clipboard.SetText(RichTextBox1.Selection.Text); } 透過靜態類別Clipboard,我們就可以輕易的在系統剪貼簿中存取文字類型的資料。

[研討會] 面對VS2010 我們準備好了...

嘿嘿,是的,面對VS2010 我們準備好了... VS2010上市在即, 三螢一雲的開發平台:Microsoft Visual Studio 2010 上市發表會 開始報名囉... 詳細的訊息可參考底下網頁:[ Visual Studio 2010 上市發表會 ] 時間還有一個多月,但是由於這次的內容以及 .NET 4 的新版涉及相當多不同的領於,有更強的.NET 4, 嶄新的VS2010, 還有令人引頸期盼的Silverlight 4, 全方位的ASP.NET 4, 以及引領未來風潮的 Windows Azure...在這一場發表會中,您將會一次看到這些嶄新功能的全新體驗。 My Advice? 趕快報名吧...有台北,台中,高雄三個場次唷...

Silverlight 4中的檔案拖曳 Part II - MediaPlayer

有人看了 這篇 ,以為圖片中的拖曳wmv檔案是唬人的,因為圖片有但範例卻沒有,如果你這樣認為,那可誤會大了。 Silverlight 4當中的拖曳功能,當然可以把任何檔案拖曳到Silverlight 4的應用程式中,不管是文字檔案、圖形、或是wmv媒體檔,都是可以的,眼見為憑,請看:[ 測試範例 ] 貼心小提醒:測試上面這個範例時,別忘了要先安裝Silverlight 4 RC run-time, 因為RC版和Beta2版的Run-Time是不同的。 呵呵,很讚,不是嗎? ^_^

天使飛飛 Flying Togother

週日的晚上10點,在TVBS節目上看到關於 天使飛飛 紀錄片的片段,看到身心障礙家庭所遭遇到的問題以及努力,回想起前陣子因為家人的關係,自己住在醫院的那段時間,多少可以體會到病人家屬所面對的辛苦。很多真的不是三言兩語能說清楚的。 看了這段影片之後,不由得萬千感慨。 天使飛飛 相關訊息可以參考 http://flyflyangel.blogspot.com/2009/09/blog-post_4180.html 天使心家族 相關訊息可以參考 http://www.ah-h.org/ 天使飛飛紀錄片01 http://www.youtube.com/watch?v=fGrWC3n9JA4 天使飛飛紀錄片02 http://www.youtube.com/watch?v=SvmhPczc_gA 天使飛飛紀錄片03 http://www.youtube.com/watch?v=v-3u-2rxXNE 天使飛飛紀錄片04 http://www.youtube.com/watch?v=-x4vp_inQrs 天使飛飛紀錄片05 http://www.youtube.com/watch?v=nlr8j7Wjyw0 天使飛飛紀錄片06 http://www.youtube.com/watch?v=W_w0odJ3seo 天使飛飛紀錄片07 http://www.youtube.com/watch?v=zHKgPWUcDWs 天使飛飛紀錄片08 http://www.youtube.com/watch?v=f8BOsidVydc 天使飛飛紀錄片09 http://www.youtube.com/watch?v=m91UCWziz94 天使飛飛紀錄片10 http://www.youtube.com/watch?v=XWjBfJon3CA

Silverlight 4中的檔案拖曳支援

圖片
在Silverlight 4當中,針對拖曳的行為也有相當令人激賞的增強,這同時也讓Silverlight中OOB應用程式所能達成的效果又向傳統的WindowsForm應用程式逼近了一大步。 過去我們已經可以透過程式碼在Silverlight應用程式的畫面中讓物件(element)們被拖曳,現在在Silverlight 4當中,我們甚至可以把實體檔案拖曳到瀏覽器上正在執行的Silverlight應用程式中。 Silverlight 4當中,針對所有的UIElement物件,增加了一個AllowDrop屬性,您可以直接將其設定為True: 如此一來,該物件將被允許接收拖曳的檔案,也就是說,您可以從桌面、檔案總管等位置,把一個或多個檔案拖曳到剛才你指定AllowDrop為True的Silverlight物件上: 這樣還不夠,這只是將控制項設定為可以接受檔案而已,當檔案被拖曳到物件上之後,我們還需要去開啟它,並且透過程式碼來做一些額外的處理,例如開檔、顯示…等動作。 我們可以在控制項的Drop事件中來處理檔案的開啟與讀取動作: private void textBox1_Drag(object sender, DragEventArgs e) { if (e.Data == null) return; //從e.Data取得資料物件 IDataObject DataObject = e.Data as IDataObject; //取得檔案(集合,可能有多個檔案) System.IO.FileInfo[] files = (System.IO.FileInfo[])DataObject.GetData(DataFormats.FileDrop); //列舉每一個檔案 foreach (System.IO.FileInfo item in files) { //如果檔名為*.txt if (item.Extension.Equals(".txt")) { //則開檔 using (System.IO.Stream stream = item.OpenRead()) { ...

Silverlight對Windows Phone的支援

圖片
Ok, 稍微分享一下心得,截至目前為止,我們知道整個Windows Phone的應用程式開發標準的工具就是Silverlight(來的好,等很久了,嘿嘿,這讓我們的市場又大了一塊),落實 在Windows Phone上的Silverlight開發技術主要是based-on Silverlight 3的架構,目前Windows Phone上支援的feature包含: Silverlight基本輸出入功能, XAML UI的呈現, Media(支援列表請參考下圖), Deep Zoom, Controls, Layout, Data binding, Isolated storage, Networking (HttpWebRequest, WebClient), XAP packaging, XML serialization, Windows Communication Foundation (WCF), LinQ, Web-Browser Control(SL4) 而底下這些則是Windows Phone版本中的Silverlight獨有的一些支援或功能: Gesture-aware controls Manipulation events TextBox control額外支援了Software input panel (SIP) Application Bar Locatioin(透過GPS, Wi-Fi, 或cellular)等機制取得位置 Push Notification service 當然,還有一些像是電話本身的功能,例如撥號,照片的存放...等,Silverlight for Windows Phone中一樣有相對應的Class Library支援。 Media支援列表:(竟然...支援GIF!) 當然,由於現在是CTP,所以不是沒有改變的可能。 總括來說,對於既有的Silverlight開發人員來說,絕對是個利多的消息,整個開發方式幾乎和典型的Silverlight一樣,對開發人員來說不會造成而外的困擾。不管是近端資料存取或遠端資料存取方式都和SL3中的幾乎一致,喔,當然,Microsoft SQL Server Compact目前是不支援的。

終於,微軟釋出Windows Phone Developer Tools(CTP) Silverlight開發套件

圖片
從2008年就喊得震天價響的Silverlight Mobile開發套件,終於終於終於在MIX 2010公布了,Silverlight的官網也跟著更新了,關於Silverlight for mobile部分,再也不是虛無飄渺空空蕩蕩的一堆廣告文字,現在你可以扎扎實實地download到相關的開發套件了。 和我們猜測的差不多,你可以用VS2010與Blend來開發WP7應用程式,整個開發方式都是透過managed code,支援Multi-touch, Camera, microphone, DRM, IIS Smooth Streaming, ... etc. 果然如同先前Charlie Kindel提到的,整個開發方式讓原有的Silverlight開發人員感到非常的喜悅。 隨著進行中的MIX2010,我們將會看到更多的訊息釋出,同時,微軟也搭建了一個marketplace網站,將會如同iPhone一樣,讓開發人員可以上傳自己開發的應用程式,並且在市集上銷售,我當場就註冊了一個帳號(但居然要付錢!!!有點敗興) 總得來說,消息面是令人愉快的,那實際開發之後的感想呢? 很抱歉,我還沒動手,晚一些再和大家分享。 相關套件的下載位置先釋出: Windows Phone Developer Tools CTP 順帶一提,Silverlight 4 tools for VS2010RC也釋出了.. Microsoft Silverlight 4 Tools for Visual Studio 2010 RC 補充報告: 安裝完了測試之後,整個開發方式和Silverlight幾乎一樣,從下圖中可以看得出來: 呵呵,恭喜了,各位Silverlight pioneer,你沒選錯投資的開發工具。 下載安裝畫面: