<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4291069679343025964</id><updated>2012-01-21T01:17:03.555+08:00</updated><category term='ASP.NET 4.0'/><category term='找回生活'/><category term='Vista'/><category term='Windows 8'/><category term='資訊管理'/><category term='心情'/><category term='研討會'/><category term='Windows phone 7'/><category term='專案管理'/><category term='AJAX'/><category term='滑鼠'/><category term='Silverlight Toolkit'/><category term='今夜不談程式'/><category term='開發工具'/><category term='電子書'/><category term='Skype'/><category term='ASP.NET MVC'/><category term='ASP.NET'/><category term='FaceBook'/><category term='範例'/><category term='WinForm'/><category term='客戶服務IIS專案管理WCF'/><category term='Developer Mind'/><category term='無關程式'/><category term='SQL Azure'/><category term='讀者回覆'/><category term='Chart'/><category term='課程'/><category term='JSON'/><category term='管理'/><category term='Dropbox'/><category term='難度等級300'/><category term='Windows 7'/><category term='開發環境'/><category term='Mobile'/><category term='ASP.NET 3.5 Extensions'/><category term='LINQ'/><category term='難度等級200'/><category term='Music Hub'/><category term='jQuery'/><category term='Winodws Azure'/><category term='REST'/><category term='Nokia'/><category term='Office'/><category term='Windows驗證'/><category term='SharePoint'/><category term='我最喜歡的Silverlight 3 新功能系列'/><category term='Behavior'/><category term='Visual basic'/><category term='Music Video Movie'/><category term='教學影片'/><category term='我很愛的電影'/><category term='我最喜歡的Silverlight 4 新功能系列'/><category term='Winodws Live'/><category term='C#'/><category term='Book Novel Prose'/><category term='CodeStorage'/><category term='Metro Style Apps'/><category term='Multi-Touch'/><category term='WCF'/><category term='VS2010'/><category term='軟體開發'/><category term='藍芽'/><category term='Hardware'/><category term='Bluetooth'/><category term='雲端'/><category term='Run！PC雜誌'/><category term='JavaScript'/><category term='N95'/><category term='ASP.NET 3.5'/><category term='Silverlight'/><title type='text'>.NET Walker</title><subtitle type='html'>Keep Walking With .NET</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default?start-index=101&amp;max-results=100'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>292</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-1851497808275208728</id><published>2012-01-16T00:42:00.005+08:00</published><updated>2012-01-16T13:26:08.626+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='資訊管理'/><category scheme='http://www.blogger.com/atom/ns#' term='軟體開發'/><category scheme='http://www.blogger.com/atom/ns#' term='專案管理'/><title type='text'>命苦是自找的...</title><content type='html'>Rick是專案團隊中脾氣非常好的一位工程師，和大多數的工程師一樣，Rick對於寫程式是相當具有熱誠的，在開發領域算是有一定的年資，程式碼的品質堪稱一流，在專案中也時常擔任與客戶端進行技術問題或系統功能溝通的重要角色。&lt;br /&gt;&lt;br /&gt;最近一陣子，我們發現Rick常常被突呼其來的電話打斷，隨著電話交談的時間長度，表情上的無奈越顯得明顯而清晰。同時，我們也發現Rick的程式碼開發品質與速度明顯的和過去相比降低了不少。&lt;br /&gt;&lt;br /&gt;關心之下，發現Rick其實並沒有任何個人的問題，他只是專注地完成交付公司給他的任務，也就是專案開發的客製化功能設計，但由於客戶端的PM和User，在長期和Rick建立了良好的溝通默契與個人關係之後，開始跳過PM將一些小問題(真的是無傷大雅的小問題)直接請Rick進行系統的極細部調整，也確實，這並沒有花非常多的時間，每一個調整動作都與系統整體的方向不衝突也不相違背，也就是說，這些問題即便依照正常程序經過PM來處理，這些修改依舊不會被PM擋掉，最終還是會發生，Rick也還是會著手修改。而User與Rick也都希望能夠快速地解決這些小問題，省去一些繁文縟節，因此常常跳過雙方PM，進行了規格上的零星修正、UI的小調整或是Bugs的Fix。&lt;br /&gt;&lt;br /&gt;發現這件事情之後，我請PM認真地把Rick找來，Rick很委屈的跟我說，他一開始認為這樣能夠提高效率，並且提升對客戶的服務品質，也確實如此，Rick總是擁有客戶端相當好的評價，甚至某些PM無法溝通的技術問題，由Rick出面協助溝通協調，客戶端總是比較能夠理解。時間一長，這樣的溝通模式形成慣例，客戶也在專案中偶而私下請託Rick進行一些工作，但久而久之，Rick的時間開始被無法拒絕的瑣事所佔據，雖然後來推掉了不少，但開了先例，也不好意思每一個問題都直接拒絕，就演變出今天的結果。&lt;br /&gt;&lt;br /&gt;這樣的情況，在專案工作中常常發生，不只發生在開發人員，偶而甚至發生在PM身上，儘管制度上我們都設計成必須要記錄每一個修正或程式修改動作，但實務上總是有一定比例的工作在檯面下持續進行著，不僅是專案，在企業內的MIS/IT也常常發生這樣的情況，越過主管的工作指派總是持續在發生著。&lt;br /&gt;&lt;br /&gt;程式設計師也很容易依照個人關係，來決定事情的優先順序，PM也容易依照與客戶的交情，來決定規格修改的退讓或調整幅度，長時間下來，讓客戶覺得系統微幅調整的成本其實並非那麼高，甚至專案公司無法堅守最初的專案規格，微幅調整逐漸累積成了架構上的大範圍異動，最終導致專案的時程延誤，成本暴增。&lt;br /&gt;&lt;br /&gt;這往往源於一開始的善意，客戶的殺手鐧常常是這樣的一句話：『我知道原本規格是這樣寫的，那這樣的設計，我們實際上根本沒辦法用啊!!!』或是：『我在上個milestone驗收的時候都很幫忙，你這邊稍微調整一下，應該不過分吧』(其實這句話聽起來有威脅的意味)，更多的情形是，雙方在簽約與SA、SD階段，根本沒打算認真把規格搞清楚，很多模糊的空間是刻意保留出來的，為了讓簽約和成交趕快確定。&lt;br /&gt;&lt;br /&gt;兩邊PM都在打自己的如意算盤，白紙黑字將來各自表述，規格文字的撰寫模糊到不能再模糊，廠商PM這別心裡想的是，反正將來我生出來的功能只要能符合規格書就好，買方PM這邊想的是反正將來我要你符合我寫出來的規格再簽驗收就行。可是，落在紙上同樣的一段話，只有功能的抽象描述卻沒有具體清晰的量化數字或說明，最終只落得專案在雙方都不滿意的狀況下收場。&lt;br /&gt;&lt;br /&gt;規格書上的模糊空間，專案團隊成員與客戶端的私人交情，這看起來八竿子打不著的兩件事情，導致了專案最後的失敗(或瑕疵)收尾，也造成了客戶慢慢覺得：『廠商應該早已把修改或異動成本算在專案裡了』，也難怪台灣的軟體專案總是那麼辛苦，客戶的需求總是那麼難釐清，專案的驗收總是那麼的困難，工程師的異動總是那麼頻繁...&lt;br /&gt;&lt;br /&gt;我想跟Rick，也跟Developer說，其實你應該更認真的看待你手上所撰寫的每一行程式，記得，你能夠寫出這一行程式，是累積了少說三五年開發經驗之後的結果，每『一行』程式碼都是你的價值所在，每一段程式碼的修改都是你的產值，請不要也毋須輕易的做人情送給客戶。&lt;span style="color: lime; font-size: large;"&gt;Starbucks的barista培訓只需要幾個月，他動手花短短的75秒做出一杯拿鐵咖啡大概值85元，而你累積了三五年功力，花了一個下午，喝了三杯Starbucks咖啡才修改完成的功能卻是免費???&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: lime; font-size: large;"&gt;&lt;strong&gt;Developer, Please, 你的一行程式碼的價值(價格)其實遠遠超過你的想像。&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;----------------------------------&lt;br /&gt;後記：在台灣，有太多的程式設計師、專案團隊以超級賤價的報價去硬生生地接了專案餬口，最終只是導致專案品質下降，同時也讓客戶覺得不就是寫寫程式或做個App嘛，要花那麼多錢嗎? 畫一幅畫是個專業，寫程式也是專業；畫一幅畫是一門藝術，寫程式也是一門藝術。&lt;br /&gt;&lt;br /&gt;台灣的電子代工或製造業，總是以調整製程壓低價格去賺那幾塊錢的毛利，台灣的軟體業也想走這樣的路，步上一樣的後塵嗎?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-1851497808275208728?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/1851497808275208728/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=1851497808275208728' title='16 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/1851497808275208728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/1851497808275208728'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2012/01/blog-post.html' title='命苦是自找的...'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>16</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-1774630928102530230</id><published>2011-12-24T13:11:00.003+08:00</published><updated>2011-12-24T13:24:47.036+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='開發環境'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='開發工具'/><title type='text'>走進廚房，才知道食材的好壞...</title><content type='html'>前幾天應邀到社群舉辦的講座，介紹雲端運算與行動裝置的整合，席間提到了Silverlight技術，不免又有一些開發人員問到這樣的問題：『聽說...微軟對Silvrlight的支持和更新將會如何如何...，這部分開發人員要如何因應』?&lt;br /&gt;&lt;br /&gt;面對這類問題，我最近一年少說不只回答了10次，首先，『聽說』這個前提就很是問題，雖然報紙偶而會有猜對的時候，但捕風捉影總是佔了大多數。&lt;br /&gt;&lt;br /&gt;另外就是開發人員要如何因應這種事情。&lt;br /&gt;&lt;br /&gt;我始終覺得，沒什麼好因應的，開發技術本來就是這樣，特別是展示層開發技術，我在&lt;a href="http://studyhost.blogspot.com/2011/08/blog-post.html"&gt;這篇&lt;/a&gt;文章中曾經說過，展示層技術的持續精進與改變是必然的趨勢。你回頭看，Wii和Kinect都是最近這幾年才發生的事情，但現在已經開始慢慢出現在我們LOB應用的UI裡面了。而觸控技術早就有了，最近五年才出現在手機上，如果回頭看過去20年，從黑底白字的文字模式，到Mac/Windows的圖形介面，到現在的RIA(Rich Internet Appication)開發技術，少說有沒有換過10種開發方式? &lt;br /&gt;&lt;br /&gt;請開發人員接受一個事情，就是presentation(展示層)的UI開發技術，是每隔兩三年就會大改一次的，ASP.NET從2002年誕生到現在，共四個版本，也不過八九年，中間還有AJAX技術進來攪局和jQuery的崛起，還有現在的MVC設計模式，這些技術都是持續在精進與改變的，不多人在2005年之前，會預知後面AJAX應用成長的那麼快(中間也跟網際網路頻寬與行動裝置拖不了干係)，而現在也不多人能100%論定是否HTML5將變成未來可能的一種趨勢。&lt;br /&gt;&lt;br /&gt;如果你比較Flex/Silverlight/HTML5，然後開始聽到iOS對Flex有些疑惑，Silverlight沒法跑在iOS和android上，HTML5又不夠成熟，那怎麼辦? 要投資哪一個? 哪一種技術可以讓你長治久安?&lt;br /&gt;&lt;br /&gt;&lt;span style="color: lime; font-size: large;"&gt;長治久安? 答案當然是沒有! 沒有一種開發技術是可以讓你在這個變動迅速的時代，軟體生命週期爆低的世代，可以長治久安的。沒有!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;但你確實可以選擇一個對自己來說投資成本比較低的方案，例如，著眼在跨平台，不同的device對你來說差不多，只是呈現出一個介面，你不會用到Device上的LBS或Camera，大部分的運算在伺服器端，那ASP.NET/JSP/PHP依舊是比較好的選擇。如果，你要建置的是企業內的LOB，你可以掌握幾乎所有用戶端的狀況，而過去你是.net的開發人員，那Silverlight絕對是不二選擇。其餘均可類推...&lt;br /&gt;&lt;br /&gt;不同的技術就是用在不同的scenario，彼此之前從沒有衝突，(我們沒有說Silverlight是用來取代ASP.NET的，兩者甚至依舊常常合作)，微軟的開發技術大多進入障礙低，這其實是一種設計過的優勢，我們希望開發人員不要花很多時間『一直在』學新技術，而是能夠很快地就去『用』新技術，去動手開發出點什麼可以改善這個世界的資訊產品。(寫這篇&lt;a href="http://www.hksilicon.com/kb/articles/49136/NET"&gt;文章&lt;/a&gt;的人，顯然對.NET不是很熟)&lt;br /&gt;&lt;br /&gt;在許多人還在爭論Silverlight的前途是否未明之前，我們公司的產品已經把Silverlight技術用的淋漓盡致(有點誇張我承認，但我一時之間找不到類似的詞，請包涵)，那你說我們會不會不管HTML5? 當然不會，她依舊是我們下個世代產品的展示層技術考量之一。&lt;br /&gt;&lt;br /&gt;因為我們熟悉Silverlight開發技術，在Windows Phone 7上我們的開發成本相當低，接下來的Windows 8，由於採用了XAML，對於熟悉Silverlight的我們來說，將Application(or Apps) Porting到Win8上當然也不是問題。&lt;br /&gt;&lt;br /&gt;很多開發團隊或人員，針對Silverlight開發技術的評估，其實坦白說並不認真，因為從2007年Silverlight出現到現在，始終停留在『評估』的階段，而這三年，已經有數以萬計的產品(包含微軟自己的Windows Azure管理平台)是100%以Silverlight技術打造的。&lt;br /&gt;&lt;br /&gt;我要說的是，如果你始終只停留在評估，那不如就乾脆放棄了吧，因為在你評估的同時，很可能競爭對手已經開始實作、已經開始推出產品。我總是覺得，與其花時間看遍報章雜誌去研究一個技術的未來，不如親自動手直接用這個技術開發點什麼。這是技術人員的本質，『評估』絕對不只是收集收集資料，綜合一下大家的意見就好。對技術人員還說，評估是親身的體驗，是自身的感受。&lt;br /&gt;&lt;br /&gt;畢竟，走進廚房，你才能真正知道這些食材與調味料的好壞...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-1774630928102530230?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/1774630928102530230/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=1774630928102530230' title='4 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/1774630928102530230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/1774630928102530230'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/12/blog-post.html' title='走進廚房，才知道食材的好壞...'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-5123082414822308101</id><published>2011-11-30T22:17:00.024+08:00</published><updated>2011-11-30T23:22:22.594+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='無關程式'/><title type='text'>通往地獄的路，是由『善意』鋪成的~</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://webpic.chinareviewnews.com/upload/200802/3/100562138.jpg" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" dda="true" height="287" src="http://webpic.chinareviewnews.com/upload/200802/3/100562138.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 如果你家裡有電視，大概不難知道最近柿子的新聞很是熱鬧。其實我最近已經被搞得很煩了，所以前幾天在FB上po了一小段文。今天早上又不巧看了&lt;a href="http://mrjamie.cc/2011/04/29/programmer-productivity-vs-pay/"&gt;Jamie的一篇文章&lt;/a&gt;，其中談到了軟體工程師以及台灣的整體軟體產業和資訊市場，所以許多不吐不快的想法，需要整理表達一下。&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 正打算提筆(其實是敲鍵盤)剛好又看到一篇商周的報導，讓我覺得今天或許是個不錯的時間，我們可以好好討論這個問題。&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 我想把順序反過來講，商周今天有篇文章『善意的大政府卻鋪出荒誕之路』，是這期週刊的專題報導的總結與社論，文章很長，如果你有興趣&lt;a href="http://www.businessweekly.com.tw/mag/?id=1745"&gt;可以自己買來看&lt;/a&gt;，但文內有三個標題我直接列出來，跟大家分享一下，來看看我們的政府最近幾年(又一次，兩黨都有份)搞出的投資建設如何：&lt;br /&gt;&lt;br /&gt;一、花上百億，架288支大風車，1年發電量只夠台灣用1.5天&lt;br /&gt;二、百億拼裝計畫改造彰化大城鄉，總統支票注定落空&lt;br /&gt;三、4大慘業虧損，全民埋單，每人面臨2萬8千元呆帳風險&lt;br /&gt;&lt;br /&gt;細節請大家自己看本期商周，這篇文章主要的意旨在提醒大家，對政府不應該有過度的期待，其實這符合經濟學中對自由經濟市場的理論，也就是政府管的越少越好，才能夠讓市場發揮(創造)最大的價值。關於這個論點我不再贅述，我也沒有那麼大本事關注整個台灣所有產業，我在意的還是台灣的軟體產業和軟體服務業的整個市場。 &lt;br /&gt;&lt;br /&gt;&lt;span style="color: lime; font-size: large;"&gt;因此，我要講的是這一路以來，我的觀察和看法。&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;這麼多年以來，政府對很多產業做了很多補助，從過去的石化、裕隆的汽車、早期的電子業、最近的四大慘業(面板、DRAM、LED、太陽能)，不管是出於善意或是各種利益考量，總之是花了非常多的錢下去，這些錢當然出自於你我的納稅。有些時候主政者用到了還算不錯的政(事)務官，有腦袋有良心，所以這些政府支持的產業交出了還可以看的成績；但不幸的是這幾十年來沒發生過幾次，反而是，在絕大多數的情況下，政府單位中對於產業其實一點也不熟的官員，本著上面交代的政策就多少做一點的上班族心態，把產業政策搞得一蹋糊塗，最後拍拍屁股政黨輪替或是退休去，領著公務人員的退休金，然而對於過去自己做的決策導致多少人沒有工作或生計困難，不知在午夜夢迴會不會覺得良心不安而輾轉難眠?&lt;br /&gt;&lt;br /&gt;最近補貼柿子(還有以前補貼香蕉、還有以前補貼...反正一堆)的那些事情，以及兩黨賄絡選民的老農年金，讓我對台灣的政治人物的品格之低下以及選民的短視有了更進一步的認識。&lt;br /&gt;&lt;br /&gt;&lt;span style="color: lime; font-size: large;"&gt;當天我在FB寫了底下這段話：&lt;/span&gt;&lt;br /&gt;-------------------------------------------------&lt;br /&gt;我想，我今年要投給有老程(老程式設計員)補助的候選人，再怎麼說，我們這些人對台灣的App和軟體產業應該多少也有那麼點貢獻，而且台灣要是再不補助軟體產業，那繁體中文App以及本土在地軟體開發商都要消失了(這跟台灣沒有人種田其實一樣嚴重耶)...&lt;br /&gt;&lt;br /&gt;但我們都沒有領過老程津貼(給老程式設計員的津貼)，我們寫App也沒有政府的保障收購價格，App賣不好的時候，我也不能要求政府來買支持我們一下，這個產業才剛起步，還要面對全球化的競爭和挑戰，政府也沒簽什麼條款來保護我們這些愛台灣的App開發商(例如國外的App一律加上100%關稅)，前陣子簽的ECFA也沒有給我們任何優惠和保障。一個柿子還可以賣二十幾塊，我們的App產地收購價格只有15塊上下，量還賣的沒有柿子多XD。這些候選人都不知道其實我們也很辛苦，也需要補助耶。&lt;br /&gt;&lt;br /&gt;雖然微軟好心的贊助了我們一部分免費的生財工具，但人家農民買肥料和柴油也都有減免耶，連計程車司機加油都有補貼和減免，但我買NB和HD只能用PC home的免手續費分期。&lt;br /&gt;&lt;br /&gt;每年都有政府出錢辦金馬金鐘金像獎來鼓勵台灣文化產業，其實我們也好希望有一個金柑(肝)獎來鼓勵我們這些辛苦寫Code的開發人員...弄個新光大道什麼的，支持一下在這個產業奮鬥了那麼多年的工作人員吧...&lt;br /&gt;-------------------------------------------------&lt;br /&gt;&lt;br /&gt;請不要誤會我的重點，&lt;strong&gt;&lt;span style="color: lime; font-size: large;"&gt;我從來就不希望政府補助軟體業，一分錢都不要&lt;/span&gt;&lt;/strong&gt;，除了App之外，其實台灣還有很多弱勢傳統軟體公司都需要補助，這需要通盤的產業政策(政府看似很在乎軟體業，但，真的有人在研究擬定台灣的軟體產業政策嗎?)，政府只看潮流(App或雲端)或選票來補助是行不通的~因為，我想要說的是，沒有一個產業可以靠補貼政策而茁壯、沒有哪一個產業面對競爭而殞落時政府非拿全民的錢投入火坑而非救不可，最近Nokia在手機市場上節節敗退，Nokia佔了芬蘭近1/10的稅收，但芬蘭政府是&lt;a href="http://zackma.pixnet.net/blog/post/33820573-%E6%9B%B4%E5%A4%9A%E6%86%A4%E6%80%92%E9%B3%A5%E6%9C%83%E6%8E%A5%E6%A3%92%EF%BC%81%E2%80%94%E2%80%94%E6%9C%80%E5%A4%A7%E4%BC%81%E6%A5%AD%E8%90%BD%E9%9B%A3%EF%BC%8C%E8%8A%AC%E8%98%AD"&gt;怎麼說的&lt;/a&gt;?&lt;br /&gt;&lt;br /&gt;「企業本來就有起落，他們必須自己reborn（重生）， 這是很自然的情況。」芬蘭國家技術創新局（TeKes）執行董事何睿楷（Riikka Heikinheimo）說。「它失敗就失敗了，政府不該救，損失也是它們自己應該承擔的， 這就是市場經濟。」芬蘭經濟研究所（ETLA）研究主管亞爾柯（.Jyrki Ali-Yrkk?）說。&lt;br /&gt;&lt;br /&gt;而台灣人呢? 銀行逾放比太高，呆帳太多要倒了，政府拿人民的錢補貼；小股民虧錢了，政府要國安基金進場；果農稻米欠收，政府要保障價格收購；高鐵要開天窗了，政府叫國營事業投資；四大慘業如今幾乎被證明是個白癡級的政策投資，但政府照樣拿錢繼續往坑裡面丟...&lt;br /&gt;&lt;br /&gt;這些補貼的錢，隨便拿個一兩億，都可以幹出更多&lt;a href="http://news.cts.com.tw/cts/life/201111/201111210873774.html"&gt;有價值有意義的事情&lt;/a&gt;。別再唬我台灣政府沒有錢了，我們繳的很多稅從我的觀點來看，根本是&lt;a href="http://tw.nextmedia.com/applenews/article/art_id/33791284/IssueID/20111104"&gt;亂花&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;更重要的事情是：我們從來沒有要政府去做這些自以為聰明的蠢事。&lt;br /&gt;請不要再拿我們的錢去東補貼、西補貼，然後以為自己有在做好事，錯，大錯特錯。很多補貼輕則厚此薄彼不說，更多的情況根本是造成官商勾結的弊案，或是轉化成政策買票以及圖利特定產業特定選民的黑箱暗盤。&lt;br /&gt;&lt;br /&gt;&lt;span style="color: lime; font-size: large;"&gt;政府要盡全力去做的『根本只有一件事情』，就是『把基礎的建設弄好』。&lt;/span&gt;你把基礎弄好了，再來錦上添花一下搞產業投資，我可能也不會那麼在意，但重點在你基礎沒搞好，這些產業投資根本是聊勝於無的短期作秀而已。&lt;br /&gt;&lt;br /&gt;什麼是基礎?&lt;br /&gt;把道路鋪平，把交通弄順暢。&lt;br /&gt;把商業制度與經濟環境弄健全，把行政效率全面提升。&lt;br /&gt;把法律與司法制度貫徹，實現一個公平正義的競爭與投資環境。&lt;br /&gt;&lt;br /&gt;讓我們這些廠商在打拼的時候沒有後顧之憂，這樣就可以了。&lt;br /&gt;&lt;br /&gt;是誰叫你拼命花錢辦白目的App比賽的? 是誰叫你到處撒錢弄出一堆養肥包商的軟體專案? 是不是可以不要再做這種事情了。&lt;br /&gt;&lt;br /&gt;把網路弄通暢，讓價格合理化，讓我們有好的連線品質，讓台灣可以成為真正運籌帷幄的訊息流通中心；把交通弄好、讓我們出國洽商或招待國外客人的時候，不用擔心&lt;a href="http://www.youtube.com/watch?v=z3Me6tuG-NA"&gt;機場屋頂會漏水&lt;/a&gt;或&lt;a href="http://news.sina.com.hk/news/94/1/1/2504477/1.html"&gt;X光機自己燒起來&lt;/a&gt;；把台灣的學校辦好，讓軟體研發廠商可以&lt;a href="http://studyhost.blogspot.com/2011/10/blog-post_13.html"&gt;在本地市場找到人才&lt;/a&gt;...而不是每年從學校培養出一堆只想繼續躲到研究所裡面好避免失業的&lt;span style="color: black;"&gt;蠢蛋&lt;/span&gt;。&lt;br /&gt;&lt;br /&gt;就這樣，是的，這樣就夠了。&lt;br /&gt;其他的我們自己來，讓產業中的人自己接手，我不需要政府對App或軟體開發有什麼補助，我需要的是法令可以跟上時代，App的銷售和金流可以順暢不被政府過時的法令所牽絆，其他的政府不需要操心，台灣人很努力，我們在全球上是有競爭力的，那些跟國外廠商廝殺的事情，不勞政府官員們您的費心，我們自己就可以搞定。這個道理就跟政府應該專注於農業政策，避免產銷失衡的問題，而不是拚了命在選前搞出各種補貼一樣。&lt;br /&gt;&lt;br /&gt;我不知道過去這麼多年來，政府到底是出於善意或是背後有什麼與特定產業廠商之間的利益交換，坦白說我也不在乎，但是如今通往地獄的路是現在是眼睜睜的擺在眼前的，iPhone和FaceBook改變這個世界只用了五年! 才五年，這世界就變了，而我們還有幾個五年可以等待政府腦袋開竅而想清楚到底該怎麼做呢?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-5123082414822308101?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/5123082414822308101/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=5123082414822308101' title='22 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/5123082414822308101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/5123082414822308101'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/11/blog-post_30.html' title='通往地獄的路，是由『善意』鋪成的~'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>22</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-3403066231202432915</id><published>2011-11-05T23:25:00.006+08:00</published><updated>2011-11-05T23:44:29.833+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='今夜不談程式'/><category scheme='http://www.blogger.com/atom/ns#' term='心情'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows phone 7'/><title type='text'>[周末留點時間給自己]起初的心情...</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://s4.thisnext.com/media/largest_dimension/71923339.jpg" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" ida="true" src="http://s4.thisnext.com/media/largest_dimension/71923339.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="color: lime;"&gt;『...然而有一件事我要責備你，就是你把起初的愛心離棄了。 所以，應當回想你是從哪裡墜落的，並要悔改，行起初所行的事...』啟示錄 2 : 4~5&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;最近在寫程式的時候，&lt;span style="font-size: x-large;"&gt;突然想到&lt;/span&gt;上面這段聖經經文。 &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;前陣子有些疲倦，這個疲倦可能不只是身體上的，也是心情上的疲倦。幾天前和一個廠商聊天，他提到收到一些終端用戶的來信，對於公司開發的產品的建議，以及對軟體收費的埋怨...如同我過去說的，台灣很多使用者認為大多數的App應該免費，持有的論點很多，但歸納到最終只有一個，就是能不付的錢當然就要省下來(老實說我異地自處、捫心自問，有時候連我自己也會這樣想，連老張都說未來景氣似乎不會太好，所以能省則省)，這是在市集中，衝動型消費或具有強烈需求的App比較容易讓用戶甘心掏錢的原因。也因此遊戲賣的比應用程式好、辣妹賣的比遊戲好的原因，而服務型或工具型的App則大多透過廣告或其他方式的獲利。而剛好最近我和在南部的App獨立開發商朋友們有一些討論，大夥兒對於台灣軟體業的生態和走向，依舊有點憂心。&lt;br /&gt;&lt;br /&gt;然而抱怨大家都會，所以我們要練習不要太多抱怨，今天也不適合來談什麼大道理或遠大的抱負，至於過去很多跟政府單位與長官們提出的建議，也是從整體市場的角度來看，說真的沒什麼私心。關於政府如何花錢這件事情，我就不再&lt;a href="http://studyhost.blogspot.com/2011/10/blog-post_13.html"&gt;多說&lt;/a&gt;了，最近還有一些讓人聽起來很不爽的案例，例如&lt;a href="http://tw.nextmedia.com/applenews/article/art_id/33791284/IssueID/20111104"&gt;一齣劇花上兩億之類&lt;/a&gt;。(文中說，曾道雄感嘆「其實只要二億一千五百萬元的一半費用，就夠我做一輩子的歌劇，甚至演到死都用不完」。兩億? 我猜我們大概可以寫一輩子App了。&lt;strong&gt;&lt;span style="color: lime;"&gt;因此我在此宣布，如果我包到兩億元的App政府專案，我立刻先捐出1/4，然後再開放100個周休三日的工作機會，程式設計師們都不用怕無薪假&lt;/span&gt;&lt;/strong&gt;)&lt;br /&gt;&lt;br /&gt;軟體產業會有這個狀況，歸納其因素，台灣市場小，是主因，最近從數據上來看， 即便是純中文化(沒有支援多國語言)的App，在台灣的銷量依舊遠小於台灣以外(這表示國外買中文App的消費者遠比台灣多? 這豈不奇怪?)，所以我們現在的App需要全面國際化，每一隻App都做multi-language是必然的，但即便如此，要讓大家願意掏錢，我們還是得要費下一番功夫，例如美術設計的補強，建立競爭者的進入障礙與門檻...等。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;不過這都不是這篇文章的重點，重點是，今天我想講一個故事。嚴格說起來，是有關於我個人有生以來的第一個軟體產品的。&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;事情是這樣開始的，大約二十多年前，有一天下午，我的堂弟很興奮的跟我說，大偉哥哥，我們在上課的時候看到你的名字耶，啥? 我的名字???&lt;br /&gt;&lt;br /&gt;『對啊，你的名字在課堂上，而且老師還提到 .... ... ... 』堂弟滔滔不絕的說，他們連續幾次整堂電腦課都在教我寫的軟體。&lt;br /&gt;&lt;br /&gt;我當時只是個學生，沒那麼厲害寫出什麼教學系統，細問之下，才知道原來是我在幾年前(如果從現在開始算，大概超過25年)寫的一支個人通訊錄管理程式(DOS版，很遜，找不到Source code了)，用C語言(那時候還沒有C++、沒有Java、沒有.NET)寫的。和我差不多年紀的朋友們，還記得那個freeware和shareware的時代嗎? 很多軟體是用捐款的方式來銷售(其實嚴格說起來根本沒有銷售，是推廣)的，當時是沒有internet的世界，是BBS當道的時代，寫好的程式是由開發人員上傳到BBS站台上去，讓大家自由下載使用的...&lt;br /&gt;&lt;br /&gt;就是這樣的一個年代，我們(當時還是學生)在家裡狂寫App，沒別的原因，只是寫了開心。因為資訊較為封閉的原因，當時寫好程式之後，甚至連跟別人炫耀的機會都沒有(那個年代不是每一個人都會奢侈地擁有一台個人電腦的，甚至絕大部分有電腦的家庭，是全家共用一台...)。因此，把自己寫好的App放上BBS，和大家一起分享...是當時很流行的方式。&lt;br /&gt;&lt;br /&gt;和我年紀相仿的朋友們，各位還記得那個年代嗎? 還記得寫程式不為別的，只是為了開心，只是在程式設計師的身體裡面有一股創作的動力，讓你源源不絕的想把這些分享出去。為了不讓堆積在腦袋裡的代碼爆炸，所以我們持續的學習，持續的撰寫，持續的分享...我要說的是，那時候，&lt;span style="font-size: x-large;"&gt;很開心&lt;/span&gt;。&lt;br /&gt;&lt;br /&gt;曾幾何時，寫程式的人變多了，用程式的人也變多了，整個市場變大了，流通變迅速了，應用程式從電腦跑到手機上，應用軟體從全家人共用變成每個人的私人貼身助理...轉眼間十幾二十年過去了，現在的我每天與程式碼為伍，有時候連作夢都會夢到新的開發架構或Idea，但當年那種純粹寫程式的開心卻時常消失的無影無蹤...&lt;br /&gt;&lt;br /&gt;所以我突然想到前面那節經文(我知道可能沒什麼直接關係，但是人的腦袋就是這樣，這是真實世界，我寫的是真實的紀錄，我沒法控制我突然要想到什麼)...我在想，起初的心情...而今晚，這個周末，我想開始找回起初寫Code的心情。 &lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-large;"&gt;Developers，何妨周末夜，為自己寫個小App吧，不為什麼，純粹只是開心而已。&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&lt;span style="color: black;"&gt;圖中的文字是...&lt;br /&gt;I am a Programmer. I work for days with little or no sleep. I am always evolving my knowledge. I translate theories into reality. I code in many languages. I tirelessly test the complex so you see just simplicity.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-3403066231202432915?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/3403066231202432915/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=3403066231202432915' title='4 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/3403066231202432915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/3403066231202432915'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/11/blog-post.html' title='[周末留點時間給自己]起初的心情...'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-1262088807957638806</id><published>2011-11-03T10:31:00.001+08:00</published><updated>2011-11-03T11:10:42.629+08:00</updated><title type='text'>在App中讀取Windows Phone 7手機內的照片資源(Picture Hub存取)</title><content type='html'>&lt;div class="MsoBodyTextIndent" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: &amp;quot;新細明體&amp;quot;, &amp;quot;serif&amp;quot;; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;同樣的，和&lt;a href="http://studyhost.blogspot.com/2011/10/appwp7music-hub.html"&gt;存取音樂檔案一樣&lt;/a&gt;，手機上的照片檔案存取，也採用一樣的方式，我們可以透過&lt;/span&gt;&lt;span lang="EN-US"&gt;Microsoft.Xna.Framework.Media.&lt;span style="color: #2b91af;"&gt;MediaLibrary&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;新細明體&amp;quot;, &amp;quot;serif&amp;quot;; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;取得用戶儲存於手機上的照片，關鍵在&lt;/span&gt;&lt;span lang="EN-US"&gt;Pictures&lt;/span&gt;&lt;span style="font-family: &amp;quot;新細明體&amp;quot;, &amp;quot;serif&amp;quot;; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;屬性：&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;pre class="brush: c-sharp"&gt;//透過MediaLibrary存取手機照片&lt;br /&gt;Microsoft.Xna.Framework.Media.MediaLibrary lib = new Microsoft.Xna.Framework.Media.MediaLibrary();&lt;br /&gt;foreach (var item in lib.Pictures)&lt;br /&gt;{&lt;br /&gt;    //動態建立Image物件&lt;br /&gt;    Image img = new Image();&lt;br /&gt;    //加入容器&lt;br /&gt;    StackPanel1.Children.Add(img);&lt;br /&gt;    img.Width = 400; img.Height = 400;&lt;br /&gt;    //設定圖片來源&lt;br /&gt;    BitmapImage bi = new BitmapImage();&lt;br /&gt;    //關鍵在item.GetImage取得圖片&lt;br /&gt;    bi.SetSource(item.GetImage());&lt;br /&gt;    img.Source = bi;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;開發人員需要比較留意的部分，是動態建立的Image物件，是透過source屬性來設定圖片，但圖片來源必須是BitmapImage，因此我們又動態建立了BitmapImage物件，並且透過SeetSource來設定該物件的binary圖形資料來源，而這個資料來源，當然是從item取得，使用的是GetImage()方法。 &lt;br /&gt;&lt;br /&gt;執行的結果如下：&lt;br /&gt;&lt;br /&gt;&lt;iframe allowfullscreen="" frameborder="0" height="349" src="http://www.youtube.com/embed/YusNy9nDZOI?hl=zh&amp;amp;fs=1" width="425"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;請留意，Microsoft.Xna.Framework.Media.MediaLibrary.Pictures取得的每一個物件，其型別是Microsoft.Xna.Framework.Media.Picture，這個物件除了可以透過GetImage()取得圖片之外，還有幾個重要的屬性，諸如：Name, Width, Height, Date, Album…分別可用來表達圖片的相關資訊。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-1262088807957638806?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/1262088807957638806/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=1262088807957638806' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/1262088807957638806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/1262088807957638806'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/11/appwindows-phone-7music-hub.html' title='在App中讀取Windows Phone 7手機內的照片資源(Picture Hub存取)'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/YusNy9nDZOI/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-2830177451106969534</id><published>2011-10-31T00:55:00.000+08:00</published><updated>2011-11-03T10:37:09.667+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows phone 7'/><category scheme='http://www.blogger.com/atom/ns#' term='Music Hub'/><title type='text'>在App中讀取Windows Phone 7手機內的音樂資源(Music Hub整合)</title><content type='html'>前陣子WP7 Marketplace當中有一隻HTC推出的免費App挺有趣，可以在App當中抓取顯示並撥放手機上的多媒體資源，諸如音樂檔案或是影片，先前我們在討論Silverlight開發技術的時候，並沒有看到API裡面有可以抓取到手機音樂的指令，第一次看到的時候著時讓我有些好奇，找了一下MSDN資料發現難怪之前沒看到，原來是出現在XNA這個Namespace底下。 &lt;br /&gt;&lt;br /&gt;我們可以透過底下的指令找到手機上的所有多媒體檔案：&lt;br /&gt;&lt;pre class="brush:c-sharp"&gt;void MainPage_Loaded(object sender, RoutedEventArgs e)&lt;br /&gt;{&lt;br /&gt;    //透過Xna抓取手機上的音樂&lt;br /&gt;    Microsoft.Xna.Framework.Media.MediaLibrary lib = &lt;br /&gt;        new Microsoft.Xna.Framework.Media.MediaLibrary();&lt;br /&gt;    //Binding到ListBox上&lt;br /&gt;    this.ListBox1.ItemsSource = lib.Songs;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;當然，由於屬於XNA Framework的部分，請在使用前先在專案中Add Reference：&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-YXGJEfBYjf4/Tq18HH_9icI/AAAAAAAAA3U/GC_GXfcPVaM/s1600/24c630e6-564f-499f-9c8f-bd17b89e7044.jpg" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="396" src="http://1.bp.blogspot.com/-YXGJEfBYjf4/Tq18HH_9icI/AAAAAAAAA3U/GC_GXfcPVaM/s640/24c630e6-564f-499f-9c8f-bd17b89e7044.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="left" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: center;"&gt;﻿&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;span style="font-family: &amp;quot;新細明體&amp;quot;, &amp;quot;serif&amp;quot;; font-size: 12pt; mso-ansi-language: EN-US; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;; mso-bidi-language: AR-SA; mso-fareast-language: ZH-TW; mso-font-kerning: 1.0pt; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;; mso-no-proof: yes;"&gt;加入&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Times New Roman&amp;quot;, &amp;quot;serif&amp;quot;; font-size: 12pt; mso-ansi-language: EN-US; mso-bidi-language: AR-SA; mso-fareast-font-family: 新細明體; mso-fareast-language: ZH-TW; mso-font-kerning: 1.0pt; mso-no-proof: yes;"&gt;Microsoft.Xna.framework&lt;/span&gt;&lt;span style="font-family: &amp;quot;新細明體&amp;quot;, &amp;quot;serif&amp;quot;; font-size: 12pt; mso-ansi-language: EN-US; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;; mso-bidi-language: AR-SA; mso-fareast-language: ZH-TW; mso-font-kerning: 1.0pt; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;; mso-no-proof: yes;"&gt;，接著即可使用前述的指令碼抓取到資料，如果你要像上述程式碼一樣把樂曲&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Times New Roman&amp;quot;, &amp;quot;serif&amp;quot;; font-size: 12pt; mso-ansi-language: EN-US; mso-bidi-language: AR-SA; mso-fareast-font-family: 新細明體; mso-fareast-language: ZH-TW; mso-font-kerning: 1.0pt; mso-no-proof: yes;"&gt;Binding&lt;/span&gt;&lt;span style="font-family: &amp;quot;新細明體&amp;quot;, &amp;quot;serif&amp;quot;; font-size: 12pt; mso-ansi-language: EN-US; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;; mso-bidi-language: AR-SA; mso-fareast-language: ZH-TW; mso-font-kerning: 1.0pt; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;; mso-no-proof: yes;"&gt;到&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Times New Roman&amp;quot;, &amp;quot;serif&amp;quot;; font-size: 12pt; mso-ansi-language: EN-US; mso-bidi-language: AR-SA; mso-fareast-font-family: 新細明體; mso-fareast-language: ZH-TW; mso-font-kerning: 1.0pt; mso-no-proof: yes;"&gt;ListBox&lt;/span&gt;&lt;span style="font-family: &amp;quot;新細明體&amp;quot;, &amp;quot;serif&amp;quot;; font-size: 12pt; mso-ansi-language: EN-US; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;; mso-bidi-language: AR-SA; mso-fareast-language: ZH-TW; mso-font-kerning: 1.0pt; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;; mso-no-proof: yes;"&gt;物件上，必須先幫&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Times New Roman&amp;quot;, &amp;quot;serif&amp;quot;; font-size: 12pt; mso-ansi-language: EN-US; mso-bidi-language: AR-SA; mso-fareast-font-family: 新細明體; mso-fareast-language: ZH-TW; mso-font-kerning: 1.0pt; mso-no-proof: yes;"&gt;ListBox&lt;/span&gt;&lt;span style="font-family: &amp;quot;新細明體&amp;quot;, &amp;quot;serif&amp;quot;; font-size: 12pt; mso-ansi-language: EN-US; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;; mso-bidi-language: AR-SA; mso-fareast-language: ZH-TW; mso-font-kerning: 1.0pt; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;; mso-no-proof: yes;"&gt;設計&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Times New Roman&amp;quot;, &amp;quot;serif&amp;quot;; font-size: 12pt; mso-ansi-language: EN-US; mso-bidi-language: AR-SA; mso-fareast-font-family: 新細明體; mso-fareast-language: ZH-TW; mso-font-kerning: 1.0pt; mso-no-proof: yes;"&gt;Template&lt;/span&gt;&lt;span style="font-family: &amp;quot;新細明體&amp;quot;, &amp;quot;serif&amp;quot;; font-size: 12pt; mso-ansi-language: EN-US; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;; mso-bidi-language: AR-SA; mso-fareast-language: ZH-TW; mso-font-kerning: 1.0pt; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;; mso-no-proof: yes;"&gt;：&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;pre class="brush: html"&gt;&lt;datatemplate x:key="DataTemplate1"&gt;&lt;br /&gt; &lt;border borderbrush="Red" borderthickness="0" height="100" width="431"&gt;&lt;br /&gt;  &lt;grid&gt;&lt;br /&gt;   &lt;textblock fontsize="21.333" height="33" margin="90,5,71,0" text="{Binding Name}" verticalalignment="Top"&gt;&lt;br /&gt;   &lt;img horizontalalignment="Left" margin="8,8,0,8" source="Images/Music-OnPhone-icon.png" stretch="Fill" width="78" x:name="image" /&gt;&lt;br /&gt;   &lt;textblock fontsize="13" foreground="#FFCECECE" margin="103,41,8,34" text="{Binding Artist}" textwrapping="Wrap"&gt;&lt;br /&gt;   &lt;textblock fontsize="13" foreground="#FFCECECE" height="22" margin="103,0,8,12" text="{Binding Album}" textwrapping="Wrap" verticalalignment="Bottom"&gt;&lt;br /&gt;  &lt;/grid&gt;&lt;br /&gt; &lt;/border&gt;&lt;br /&gt;&lt;/datatemplate&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div style="text-align: left;"&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;然後將此Template使用在ListBox上：&lt;br /&gt;&lt;pre class="brush: html"&gt;&lt;listbox itemtemplate="{StaticResource DataTemplate1}" margin="8" name="ListBox1"&gt;&lt;br /&gt;&lt;/pre&gt;如此一來就可以在自己開發的App中，呈現出手機上呈現出每一首歌的名稱，以及演唱者與專輯名稱：&lt;/div&gt;&lt;/div&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-dx3SGOfcZZA/Tq19BvxGryI/AAAAAAAAA3g/sgfYm3vpXr4/s1600/99367f6c-c4c0-4133-a569-45caf4550c23.jpg" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://4.bp.blogspot.com/-dx3SGOfcZZA/Tq19BvxGryI/AAAAAAAAA3g/sgfYm3vpXr4/s640/99367f6c-c4c0-4133-a569-45caf4550c23.jpg" width="384" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: left;"&gt;&lt;br /&gt;由於Silverlight的DataBinding技術，在listBox當中每一首點選的曲子，可透過底下的方式抓取到，甚至可以透過底下的程式碼，撥放選取的Item：﻿&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: left;"&gt;&lt;pre class="brush:c-sharp"&gt;private void button1_Click(object sender, RoutedEventArgs e)&lt;br /&gt;{&lt;br /&gt;    if (this.ListBox1.SelectedItem == null) return;&lt;br /&gt;    //取得選取的樂曲&lt;br /&gt;    Microsoft.Xna.Framework.Media.Song song =&lt;br /&gt;        this.ListBox1.SelectedItem as Microsoft.Xna.Framework.Media.Song;&lt;br /&gt;    //進行撥放&lt;br /&gt;    Microsoft.Xna.Framework.Media.Song item = song;&lt;br /&gt;    Microsoft.Xna.Framework.Media.MediaPlayer.Play(item);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: left;"&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;在模擬器上也可以操作，你會發現我們的App與Music Hub可以整合在一起，在模擬器(RTW版本)上也有內建有三首曲子，可以方便我們進行測試。&lt;/div&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;當你在開發測試環境當中，使用模擬器時，也可以按下鍵盤上的F9, F10按鍵，這時可以模擬手機音量鈕，呈現出左方的畫面。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-44hBNU913gk/Tq1-C1r_X3I/AAAAAAAAA3o/3HMHwr9yyLw/s1600/9810ecaa-23a9-4b8d-8d18-fb8ec86e581b.jpg" imageanchor="1" style="cssfloat: left; margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" ida="true" src="http://1.bp.blogspot.com/-44hBNU913gk/Tq1-C1r_X3I/AAAAAAAAA3o/3HMHwr9yyLw/s640/9810ecaa-23a9-4b8d-8d18-fb8ec86e581b.jpg" width="384" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;你不難發現，我們的App直接控制了WP7的Music Hub進行音樂的撥放。&lt;/div&gt;&lt;br /&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;如果不想使用DataBinding的方式，您也可以用底下的程式碼列出每首歌的名字： &lt;/div&gt;&lt;/div&gt;&lt;pre class="brush:c-sharp"&gt; Microsoft.Xna.Framework.Media.MediaLibrary lib = &lt;br /&gt;    new Microsoft.Xna.Framework.Media.MediaLibrary();&lt;br /&gt;foreach (var item in lib.Songs)&lt;br /&gt;{&lt;br /&gt;    //顯示樂曲名稱&lt;br /&gt;    MessageBox.Show(item.Name);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;div class="MsoBodyTextIndent" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: &amp;quot;新細明體&amp;quot;, &amp;quot;serif&amp;quot;; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;; mso-no-proof: yes;"&gt;透過這樣的方式，我們可以輕易地抓取到手機上的多媒體資源，並且和我們的&lt;/span&gt;&lt;span lang="EN-US" style="mso-no-proof: yes;"&gt;App&lt;/span&gt;&lt;span style="font-family: &amp;quot;新細明體&amp;quot;, &amp;quot;serif&amp;quot;; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;; mso-no-proof: yes;"&gt;進行整合，也可以控制&lt;/span&gt;&lt;span lang="EN-US" style="mso-no-proof: yes;"&gt;MusicHub&lt;/span&gt;&lt;span style="font-family: &amp;quot;新細明體&amp;quot;, &amp;quot;serif&amp;quot;; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;; mso-no-proof: yes;"&gt;的撥放，非常的方便。&lt;/span&gt;&lt;span lang="EN-US" style="mso-no-proof: yes;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;如何存取照片資源呢??? 請參考&lt;a href="http://studyhost.blogspot.com/2011/11/appwindows-phone-7music-hub.html"&gt;這裡&lt;/a&gt;。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-2830177451106969534?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/2830177451106969534/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=2830177451106969534' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/2830177451106969534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/2830177451106969534'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/10/appwp7music-hub.html' title='在App中讀取Windows Phone 7手機內的音樂資源(Music Hub整合)'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-YXGJEfBYjf4/Tq18HH_9icI/AAAAAAAAA3U/GC_GXfcPVaM/s72-c/24c630e6-564f-499f-9c8f-bd17b89e7044.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-1133787308391576205</id><published>2011-10-24T12:54:00.007+08:00</published><updated>2011-10-24T18:10:24.238+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Winodws Azure'/><title type='text'>關於雲端運算</title><content type='html'>&lt;span style="color: yellow;"&gt;[引言]這一篇，是幾個月之前應邀寫的一篇討論雲端運算的文章的原稿，因為篇幅的關係，這篇文章在刊出的時候做了相當大程度的刪減，幾個月過去了，重新看到，只貼在blog給有興趣的朋友...另外，這一篇並沒有試圖為雲端運算下定義，因為定義可以從NIST找到&lt;a href="http://www.nist.gov/itl/cloud/"&gt;http://www.nist.gov/itl/cloud/&lt;/a&gt;&amp;nbsp;這篇只是說明我們對雲端運算的一些規劃與想法...&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;span style="color: lime; font-size: x-large;"&gt;從虛無飄渺到豁然開朗&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.europeancloudcomputing.nl/wp-content/uploads/2009/12/cloudcomputing1.jpg" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="299" rda="true" src="http://www.europeancloudcomputing.nl/wp-content/uploads/2009/12/cloudcomputing1.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 前陣子受邀到某教育訓練中心上課，剛好學員前一堂課的講題是雲端運算，看到學員臉色頗為疲倦，不禁好奇早上的講師是否塞給大夥太多內容而造成學員壓力。因為這個班下午我得要接續著上課，所以不免關切地問了學員一聲：『早上雲端課程上的如何啊?』&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 沒想到不問還好，這一問之下，學員七嘴八舌地聊了開來，有個年長的學員用八個字做了總結：『虛無飄渺，無邊無際』。由於學員先前都沒有接觸過相關的概念，聽起來雲端運算好像很厲害，無所不能，但從講師的介紹中，又分不太出現在所謂的雲端運算和傳統的虛擬主機、主機代管、或網路服務有何不同，看起來像是過去我們說的SOA(Service-Oriented Architecture)的一種延伸，又像是ASP(Application Services Provider)的一種變形，那到底雲端是什麼? 早上一整個課程上下來，學員似乎還是摸不著頭緒…&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 其實這個話題，得要從20年前開始說起…&lt;br /&gt;&lt;br /&gt;&lt;span style="color: lime; font-size: x-large;"&gt;二十年前的夢想&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 約莫在15年前，Bill Gates出版了一本頗為引人關注的書籍『THE ROAD AHEAD』，清楚地闡述了他早在1990年11月於Comdex中所發表 - 主題為『Information At Your Fingertips』的演講，20年後的今天，你可以看到Bill Gates對未來描述的精準先見。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 當時所提及的概念，已經把網際網路和資訊科技將帶給我們的願景清晰地勾畫出來，可能在20年前你很難想像，任何人，在全球的任何地點，都可以從口袋中拿出一個可以隨身攜帶，只有手掌大小的設備，而這個設備可以提供你所需要的任何資訊，不管是當天全球重大的即時新聞(例如最近的股市崩跌)、或是你家裡大門口的監視器即時畫面。不論你在這個地球上的哪一個角落，只要能夠連上網路，不管是工作還是娛樂，所需要的各種資訊，都在你的掌握之中。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 20年前所說的『Information At Your Fingertips』(資訊彈指可得)，在智慧型手機和平板電腦的迅速普及下，早已從所謂的願景變成今天日常生活中的一部分，拿起你的智慧型手機，你所在位置方圓百里內的吃喝玩樂，也都一手掌握，這(如今我們習以為常的一切)，可是過去人們前所未有的體驗。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 而這一切的資料，都存放在哪裡? 提供這些搜尋或運算的伺服器主機又在何處? 串起這一切可能性的關鍵技術又是什麼? 沒錯，這些都是雲端運算的一部分。&lt;br /&gt;&lt;br /&gt;&lt;span style="color: lime;"&gt;&lt;span style="font-size: x-large;"&gt;從Application Service Provider到Cloud Computing&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 早在十多年前，在網際網路開始普遍之後，就有不少研究單位提出過ASP(Application Service Provider)的概念。打從軟體開始與硬體分開銷售，獨立收取費用以來，軟體的通用性與可複製性，就成為影響這個產業盛衰的關鍵因素。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 簡單的說，從商業的角度來看，開發完成後，只能賣一次的軟體我們叫做專案，能夠重複賣很多次的軟體我們叫做套裝軟件，而套裝軟件的獲利基礎則是建立在客戶群的規模上。軟體公司開發出一套辦公室軟件，銷售給全球的企業，由於使用量大(具有規模)，所以締造出了一個龐大的產業生態鏈。但沒過多久，大家發現這似乎有些問題…&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 首先，軟體並沒有辦法如同汽車一樣，一旦買了就一直用下去，而是每隔幾年就需要改版，升級，這不僅僅對於客戶來說是個困擾，對於軟體供應商也是個頭疼的事情，隨著升級改版所帶來的問題，常常需要更多的客服人員才能解決，使得隱含的軟體開發成本更高。由於軟體是安裝在客戶端，每一個客戶端的硬體狀況又有所不同，更造成了維護與服務上的困擾。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 不僅如此，對於廠商來說，軟體的獲利模式是基於複製，也就是我研發一次，可以賣出很多套，但這在某些地方顯然不可行，在某些對於智慧財產權並不嚴謹的區域，軟體的盜版和私自複製侵蝕了軟體公司的獲利。雪上加霜的是，隨著全球化的普及，企業營運的需求瞬息萬變，軟體的生命週期開始逐漸變短，改版的頻率漸高，慢慢地大家發現，軟體的獲利基礎已經不在，漸漸地開始被升級改版以及客服的成本所吞蝕。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 這時候，ASP(Application Service Provider)的概念為軟體界帶來一盞明燈，不少軟體廠商嘗試以服務的概念來替代軟體銷售，也就是說，我不再販賣一套一套的辦公室軟體，而是把軟體免費提供給客戶，由客戶自行安裝或是從網際網路上下載，或甚至直接透過瀏覽器執行，不再依照軟體的銷售來計費，而是依照軟體(或乾脆把軟體視為一種服務)的使用量來計費。企圖製造軟體廠商與客戶兩端雙贏的局面。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 怎麼說呢?因為客戶早就發現，一整套辦公室軟體，可能我只用到20%常用的功能，但每賣一套我還是得付100%的費用，套裝軟體也不像專案，可以分開計費，而即便開發商提供不同版本的功能，如何切割卻也並非由消費者自己決定，而是掌握在軟體廠商的手裡。如果，釜底抽薪的將計費方式改成用多少付多少，對於消費者來說似乎是更有利的。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 而從軟體廠商的角度來看，以租賃替代賣斷，看似降低了銷售金額，但其實後續獲利的可能性似乎更高，怎麼說呢? 過去我一套一套的賣，現在我則是你用一次我收一次錢，首先我隨時可以掌握使用者的狀況，我知道你用了哪些功能，開檔開過幾次，報表印過幾張，軟體廠商可以得知那些功能用戶最喜歡，那些功能客戶根本沒在使用，從而進行改版與更新，提供更好的服務。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 而更重要的是，不像過去一套一套賣的軟體，以租賃方式銷售只要客戶一但使用，要轉換成其它品牌同質產品的難度更高，無形之間增加了品牌向心力，只要你用了我的進銷存系統，大概總帳和會計系統也跑不掉，不久之後訂單就到我手裡了。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 而且這個機制一併解決了軟體被私自複製的盜版問題，所有的使用都需要連線到軟體廠商的伺服器端，經過驗證才能使用，以Web方式提供的軟體服務，更省去了客戶安裝的動作，改版時也不需要擔心客戶端的設備環境問題…過去困擾開發商的問題一一解決。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 這確實是個好的想法，但如同許多新穎的概念一般，由於當時的時空環境並不成熟，硬體與網際網路的效率與普及率稍嫌不足，再加上安全性的考量與收費機制(例如線上刷卡)的法令依據尚不完備，導致這個概念始終只停留於最初時期的測試營運階段，這一等，又過了將近10年。&lt;br /&gt;&lt;br /&gt;&lt;span style="color: lime; font-size: x-large;"&gt;雲端運算(Cloud Computing)的條件與要素&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10年後的今天，隨著網際網路的普及與頻寬大幅改善，以及虛擬化技術的成熟應用，雲端運算開始以不一樣的風貌重新出現在世人面前。但如果你以為現在我們說的雲端運算技術只是當年換湯不換藥的ASP(Application Service Provider)或是其實大同小異，那顯然這又是一個被媒體胡扯隨便報導下所導致的認知錯誤。&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 很多人以為，『能夠用Web方式提供軟體服務，或是以AJAX技術提供軟體服務的產品，就叫做雲端運算』….對於身為ISV的軟體開發商來說，這個解釋不僅錯，而且錯很大。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 請容我這麼說，這或許是沒有技術背景的行銷人員，從無限廣義的泛商業角度下，隨便勾畫出的雲端運算概念。一般人茶餘飯後聊天時可以這麼認知，身為有技術背景的專業人員的你千萬別這麼單純。&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 首先，以Web方式提供軟體服務，根本不是必要條件，不然現在的智慧型手機或是平板電腦上的App, 全都要被摒棄在雲端之外，豈不冤枉。況且，著名的DropBox或Skydrive，就是典型的雲端服務，這些雲端服務的用戶端呈現方式，除了Web瀏覽器之外，早就多的是以智慧型手機或PC的原生開發技術所建立出來的應用程式(App或Application)，是不是完全都要走80 port也不一定，所以這個定義顯然是有問題的。&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 而AJAX技術則是Web上Presentation(展示層)的開發技術，為了與後端數據庫進行連結，提供用戶更順暢的操作體驗，這更與雲端運算毫無瓜葛。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 唯一說對的大概只有雲端運算是以軟體服務的面貌出現，而非以軟體銷售的概念計費。因此，租用(用多少，付多少)與採購彈性肯定是當前雲端運算的主要定義之一。不過話又說回來，雲端運算的定義之所以如此的模糊，除了媒體所造成的誤解之外，部分軟體廠商刻意模糊焦點也是事實，畢竟定義越模糊，就越容易擠進申請政府補助的門檻，而消費者也更容易在不知所以的狀況下買單。&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 然而，對於身為ISV的廠商來說，我們認為雲端運算至少要具備底下特性，缺一不可：&lt;br /&gt;&lt;ol&gt;&lt;li&gt;以租用方式提供軟體服務，用多少付多少，而非銷售軟體。&lt;br /&gt;在雲端運算的時代，軟體開發商需要認知自己所銷售的是服務，而非軟體產品。軟體僅僅是開發商提供客戶服務的媒介(或是載體)。真正銷售的乃是服務，因此軟體的使用也開始有所改變，再也不像過去，是一套一套的賣，更可以想成是免費提供軟體，而客戶租用的是軟體公司所提供的服務品質、以及服務內容。&lt;br /&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;具有延展性，能夠隨時依照當下需求增減服務規模。&lt;br /&gt;既然軟體是以服務的面貌呈現，當然就需要考慮延展性的問題。所謂『軟體的延展性』是指：『當用戶端需求量瞬間增加或減少時，軟體服務能夠隨之動態調整的能力。』例如，我們建立的ERP服務，目前主機的營運規模，在客戶是500人同時使用的狀況下運行良好，但一夕之間客戶從500人同時使用突然變成5000人同時使用，多出了10倍，原本的軟體服務是否能夠在不改變程式碼，只透過設定的狀況下，就滿足客戶端流量和計算能力突然激增的需求? 這我們稱之為延展性。以網站來說，最典型的例子就是旅遊業的淡旺季，或是熱門表演的售票機制，這些應用都是隨時有可能出現爆量連線的狀況。現今的雲端運算軟體服務，在以『用多少、付多少』的概念為前提之下，要滿足客戶最理想經濟的購置成本，客戶理當可以在需求量較低時，以一兩台伺服器面對最基本的軟體應用需求，一旦發現流量激增，隨時可動態增加數台乃至於十數台伺服器，同時服務以達成延展性的需求。(在過去這樣的軟硬體架構有其實作上的難度，而今天拜虛擬化技術之賜，現在已經可以輕易地達成)&lt;br /&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;具有Load Balance(負載平衡)、與FailOver(錯誤後轉移)的能力。&lt;br /&gt;Cloud Computing必須提供永不斷線、穩定、且持續性服務，因此除了前述的延展性需求之外，隨之而來的還有穩定性與持續服務的能力。在理想的雲端運算技術架構下，不管是Web, AP, 乃至於DB Server, 都必須要提供Load Balance、與FailOver的能力。也就是說，使用者端(客戶)，連上來使用的每一個瞬間，位於雲端的軟體服務需要提供穩定的連線品質與資料的正確性。&lt;br /&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;以Multi-Tenant(多租戶)作為服務的基礎骨架與必備要素&lt;br /&gt;對於提供SaaS(Software as a Service)的廠商來說，由於一般性軟體開發的獲利必須建構在複製與一定的市場規模上，因此Multi-Tenant的架構則是這一切的基礎，若提供SaaS服務的ISV，無法以多租戶的技術滿足客戶的需求，還得新增一個客戶就手動開設一台服務器，顯然在競爭力上已經落於人後。&lt;/li&gt;&lt;/ol&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 您大概不難發現，上述這些軟體服務的技術基礎，都建構在虛擬化技術上，現今以虛擬化技術所建構的雲端運算服務平台(PaaS)，能夠在架構上滿足上述延展性與負載平衡等技術需求，並且同時能夠讓ISV搭建出以Multi-Tenant為主體的軟體服務(SaaS)。&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 十多年前，ASP(Application Service Provider)之所以無法成功，除了安全性是一大考量之外，當時的網際網路和硬體架構，實難承載上述軟體服務所需要的相關的基礎設施，而十多年後的今天，不僅在台灣隨處可以上網，上網設備更是琳瑯滿目，連線品質早就可以滿足絕大部份的資訊交換與遠端運算需求。同時，由於虛擬化技術的成熟，我們才有可能建構出極具延展性的軟體服務，隨著客戶實際需要的流量，動態調整記憶體、伺服器、儲存體的大小與數量。這些都是過去十多年前ASP(Application Service Provider)廠商可望而不可及的夢想。&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 再加上位於應用程式展示層的用戶端操作介面技術突飛猛進，透過現在的Silverlight開發技術可以輕易的設計出相當優質的UI，甚至可以運行在PC、平板、智慧型手機等各種不同的介面，在安全性上也跟著增強，如今ISV比起過去15年更有機會建構出優質的軟體服務應用。&lt;br /&gt;&lt;br /&gt;&lt;span style="color: lime; font-size: x-large;"&gt;雲端運算是軟體產業必然的方向&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 透過上面的說明您大概不難明白，隨著技術的演進與成熟，這段路走了十多年，雖然看是緩慢、波折，但卻堅持而持續著。從歷史演進的角度來看，雲端運算可說是必然會走的方向。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 過去許多人在意的安全性顧慮與隱私的問題，這幾年也慢慢開始改變，從Google, Microsoft, Youtube所提供的免費服務, 一直到SalesForce, DropBox提供的商業應用，市場逐步開始接受資料放置於雲端(遠端伺服器)的可能性，而服務供應商，也透過前述的種種技術，建構出優質、穩定、且安全的軟體服務。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 這形成了另一波的軟體革命，過去的軟體賣錢，未來軟體則是免費，君不見Google App免費的提供了類似Word、Excel的線上服務給個人用戶，而微軟也從今年開始，提供Office 365，讓消費者以租賃的方式使用，如今只需要連上網路，不管是用PC或SmartPhone，你都可以在線上使用Word、Excel編輯檔案，並且和遠端的上下游廠商或合作夥伴共同編輯同一份文件，達成前所未有的協同運作效果。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 而這一切居然都是免費的(微軟與Google都有提供免費的App服務給個人用戶)，靠著銷售軟體獲利的時代已經過去，破壞性創新讓軟體的開發與銷售走上了另一條路。現在你要做的是，讓你的消費者，打開電腦、拿起手機、連上的是你所提供的服務，藉由你的軟體服務，來協助客戶達成日常所需的一切資訊需求，利用你提供的軟體服務，來滿足客戶的資訊化需要。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 數年後的商業環境，使用以雲端服務提供的軟體應用，將會如同日常呼吸一樣的自然，而今天，軟體服務供應商的挑戰與競爭和重新洗牌則已然開始。&lt;br /&gt;&lt;br /&gt;&lt;span style="color: lime; font-size: x-large;"&gt;以微軟Windows Azure為基礎的具體應用&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 從ISV的角度來看，我們很高興微軟在這一塊並沒有缺席，不僅如此，微軟的Windows Azure以及SQL Azure技術有效地提供了良好的開發平台，讓身為ISV的我們，可以在這個平台上以更合理的開發成本，建構出優質的SaaS服務。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 過去半年，我們(光岩資訊)利用了微軟所提供的Azure技術，建構出了大中華區第一套以Silverlight(未來將擴展為HTML5)配合Windows Azure技術所研發的『EasyCloud雲端運算開發平台』，以及相關的辦公室e化應用套件，讓企業得以租用的方式，來使用我們所提供的一切軟體服務。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 不僅如此，為了讓中大型企業客戶也能夠享有安全的雲端運算開發技術，省去購置與維護伺服器的成本與人力，租用EasyCloud雲端開發平台時，可直接搭配微軟的Windows Azure與SQL Azure雲端服務。企業內的IT人員若擁有基本的.NET開發技術，甚至可在平台上自由建置與開發屬於自己的 App，將企業內部所需要的應用，透過我們所提供的EasyCloud開發平台，搭建於微軟所提供的雲端運算中心，享有前述諸如延展性、負載平衡、以及前所未有的穩定性。讓企業內的使用者不管身在何處，透過NB或SmartPhone(特別是Windows Phone 7)連上雲端，隨時可取得自己所需要的任何資料，甚至與地球另一端的夥伴一起合作。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 透過導入雲端運算技術所降低的營運成本，以及節省的管銷費用，更讓資訊化投資在財務規劃上更加透明且容易預測，不至於變成營運上的財務黑洞，這讓客戶對於雲端運算的投入更有信心。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 對於身為微軟ISV的友商來說，我們所開發的平台也有助於ISV在最少的投資下，將產品由現有的Web/Windows應用移轉成以微軟Azure為基礎的雲端運算服務，EasyCloud平台本身所內建的Multi-Tenant機制，可讓開發出的應用立即具有Multi-Tenant與Billing的功能。而這一切都是建構在Windows Azure以及SQL Azure良好的基礎上。&lt;br /&gt;&lt;br /&gt;&lt;span style="color: lime; font-size: x-large;"&gt;令人引頸期盼的未來&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 面對已經成為趨勢的雲端運算，我們隨著微軟邁出了第一步，我們看到的是一個嶄新的可能性，不管是市場狀況、SaaS的概念與Business Model，都將讓軟體產業重新洗牌。不僅如此，由於雲端運算的態性，我們面對的已經不只是台灣的市場，而是全球化競爭與機會。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 回顧軟體業，每一次的改變，都是梟雄崛起的全新機會，每一次的改變，也伴隨著不少巨人的殞落，面對這個趨勢，恐怕你立刻就必須決定下一步該怎麼走…&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-1133787308391576205?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/1133787308391576205/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=1133787308391576205' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/1133787308391576205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/1133787308391576205'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/10/blog-post_24.html' title='關於雲端運算'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-6564827321193835343</id><published>2011-10-13T22:12:00.022+08:00</published><updated>2011-10-18T13:11:14.008+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='今夜不談程式'/><category scheme='http://www.blogger.com/atom/ns#' term='心情'/><title type='text'>台灣的軟體人才在哪裡?</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://pic.pimg.tw/derek2009/e0245323444dc10401bba060bf0c6d2f.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="353" oda="true" src="http://pic.pimg.tw/derek2009/e0245323444dc10401bba060bf0c6d2f.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 最近，政府舉辦了不少的App設計比賽，大概是看到了芬蘭在沒了Nokia作手機界的霸主之後，居然還可以有一個能撐住半邊天的紅色小鳥，回頭想想台灣雙A品牌在小筆電上碰到的挫折，又環顧了一下過去幫台灣掙錢的代工產業前景茫茫，想說反正比起花在兩兆雙星上的銀兩，辦些個App比賽只是九牛一毛，搞個不好給他異軍突起，成為未來的一條生路...不知道是不是因為這樣，所以最近常常聽到各式各樣的App新聞，甚至也有跟前陣子雲端綁在一起炒的，不管如何，至少這個產業似乎被推廣開了，只要有動作，我都認為是好事...&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 但是前陣子跑了不少學校，並且和業界一些前輩們聊天，大家都有一個一樣的感慨，台灣的軟體人才真的越來越少了。雖然學校的科系開的琳琅滿目，從遊戲開發到機器人設計都有，各樣五花八門的學科讓人目不暇給，但是同學畢業之後，真的在職場上撐在那裡寫程式的，能有多少?&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 我不用算也知道，因為部落格會說話，全台灣軟體相關部落格一個月的點擊率加起來，能不能打敗教人化妝的部落格，或是隨便一個所謂的人氣美少女外拍部落格，不用我說大家也知道。前陣子流行金釵文化，一些大學的資工系學生寧願當Model走演藝路線，也不願意坐在辦公室寫程式，雖然我不知道人家在學校的成績怎麼樣，但我想就算人家小姐C++寫得很好，java駕輕就熟，畢業之後當Model或藝人大概還是比較划算，隨便一個主持通告比我們這些所謂講師的鐘點還要高，人家不願意自甘墮落寫程式，我也就不那麼在意了...&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 但是這凸顯出一個很有趣的落差，台灣很多軟體公司的開發人員其實不在台灣(這大家都知道)，而台灣土生土長的程式設計師，薪資結構上也並沒有比其他行業要來得高(這邊先不論畢業生的技術能力如何)，程式設計師薪資低，工時長，只有乍看之下很高檔的社會地位(因為以前大家都以為程式設計師是科技新貴，後來才慢慢發現搞錯了，那是指製造業寫韌體的)，結果不僅台北市的房子買不起，連台北郊區的也很拚...這時候，能留住所謂的人才才真的見鬼。&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 這薪資結構其來有自，如果市場上對一個軟體專案，對一個手機App，對一個套裝軟體...的價格始終是低估的，而內需市場又硬是比其他產業小，而外銷能力又還沒成熟到足夠與國外廠商車拚，那這個產業該怎麼扶植起來? 如果政府對某個產業的投資是矇著眼睛撒錢(其實總比沒撒錢來的好，我們現在的標準已經自動降低了)，那能夠培養出紅色小鳥才怪。&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 程式設計師學習了很多(而且每天都在持續更新與變多)的專業知識，每天昏天暗地不打緊，到頭來你依舊買不起工作地點附近的房子、對外常常被客戶抱怨、對內當專案或公司資源有限時，PM, Sales沒法壓縮(其實是已經壓縮過了，很多公司常常一個PM, 一個Sales跑遍全台灣)，老闆只好先砍Developer人力，使得增加工作量與加班變成常態。Developer常常一個人兼顧維護案加上新軟體的開發，在這種情況下軟體品質只是老闆與客戶第一次見面時高談的口號和夢想，資源不足時最先槓掉的就是品質這個空泛(不會立刻賺到錢)的指標...這樣的環境得適應並持續支撐下去... 因此你看到Developer頂著自己的專業背景(和花了錢考來的證照)，改行去開咖啡店賣咖啡或是做網拍也就不足為奇了。&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 昨天有個寫手機App的朋友跟我說，他吃炸醬麵的時候覺得很感慨，一個手機App賣0.99美元，折合台幣約莫30元，他寫了數個月，還附了錢請美術人員，但是每次吃麵的時候，他都覺得應該改行賣炸醬麵...很多人吃一碗麵付錢的時候眼睛都不會眨一下，但付費買App的時候，不僅要先試用，而且要弄了半天沒法下載到破解版的時候，才願意付那區區的0.99美元。而炸醬麵大概配方就是這樣，如果好吃可以一直賣，但他的App就算好用好玩，如果沒有持續改版，大概一兩個月後就無人問津了...這邊都還沒有算進去軟體技術的改變和改版所帶來的額外成本...&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 有些廠商跟我抱怨，現在賣軟體跟賣水果一樣，客戶總是愛挑挑價格，看看賣相好的，選好之後不忘要個折扣，順手再拿包梅子粉之類的。內需市場價格被壓得太低，卻依舊有廠商硬是可以把品質擱在一邊，硬生生吞下去低到不行的價格，而客戶也不太管一個軟體到底背後要花多少時間和人力進行優化，反正短期績效達成，三年的軟體專案結案時雙方PM早就換了好幾輪，是非對錯已經無從釐清。政府單位的發包也不管其實案子被大包廠商綁標之後，切割丟給小軟體公司時，這些小企業如何被壓榨，政府以為自己花了錢培植軟體產業，其實只是被上游那些大資本額的系統整合廠商給剝削了。&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 說來無奈，這個情況跟果菜市場的大盤收購香蕉的狀況很像，最基層的蕉農慘兮兮，但政府大官員們則是渾然不知，只看到果菜市場的批發價格之後沾沾自喜，覺得自己努力地照顧農民了所以感到很欣慰...&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 台灣怎麼會沒有軟體人才呢? 怎麼會沒有人喜歡寫程式呢? 為什麼資工系的學生寧願去網拍、寧願去當通告藝人呢? 是誰趕跑程式設計師的呢??? 我想不用多說了...很多持守在這個領域的朋友或前輩們，倚靠的純粹只有自己的興趣，沒別的，就只是興趣。但我相信，會持續待在這一行，絕對都是有夢想的~&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 所以，當產業界在問，當政府或研究單位在問，台灣的軟體人才，軟體產業在哪裡，其實很簡單，不用作研究報告，不用去找104調查，你自己下來當一兩個月程式設計師就知道了。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: lime;"&gt;後記：這篇文章得到很多朋友們的迴響和意見，路不好走是我們都知道的，但我們從來沒有想過要放棄，現在的情況，套一句說得很貼切的俗話『前途是光明的 ，但道路是崎嶇...』。然而有夢想，總是可以支撐下去；有方法，總是可以開創出一片天地...&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;ref1 : &lt;a href="http://chn.chosun.com/big5/site/data/html_dir/2011/08/18/20110818000025.html" target=_blank&gt;韓國軟件競爭力孱弱的五大原因&lt;/a&gt;&lt;br /&gt;ref2 : &lt;a href="http://forum.gamer.com.tw/C.php?bsn=60076&amp;amp;snA=928472&amp;amp;locked=F&amp;amp;page=1&amp;amp;gothis=13407958#13407958" target=_blank&gt;http://forum.gamer.com.tw/C.php?bsn=60076&amp;amp;snA=928472&amp;amp;locked=F&amp;amp;page=1&amp;amp;gothis=13407958#13407958&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-6564827321193835343?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/6564827321193835343/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=6564827321193835343' title='17 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/6564827321193835343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/6564827321193835343'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/10/blog-post_13.html' title='台灣的軟體人才在哪裡?'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>17</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-1250365571735768113</id><published>2011-10-10T23:35:00.001+08:00</published><updated>2011-10-11T09:44:45.337+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VS2010'/><title type='text'>[VS2010]在Build時自動update專案版本</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Aqd1K0aI2l0/TpMN8rWsSuI/AAAAAAAAA24/AxCS74Fg-zg/s1600/b2396773-585b-4ebb-a104-127e34a5c1f7.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="373" kca="true" src="http://1.bp.blogspot.com/-Aqd1K0aI2l0/TpMN8rWsSuI/AAAAAAAAA24/AxCS74Fg-zg/s400/b2396773-585b-4ebb-a104-127e34a5c1f7.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;最近比較多開發WP7的Apps, 每一個App都不大，但是版本編號(Build Number)的建立卻很重要，因為我時常在submit同一支卻不同版本的Apps。而公司最近的雲端運算開發平台上的Apps也有這個問題，每一個App其實都是一個小功能，更新的頻率非常高，因此常常需要讓User再回報問題的時候，提供Build Number給我們，才比較容易區分是哪一個版本的App。&lt;br /&gt;&lt;br /&gt;開發團隊的新成員問到，如何在每一個build自動update版本編號?&lt;br /&gt;我記得有一個工具，叫做Build Version Increment Add-In Visual Studio, 可以從底下這個位置下載：&lt;a href="http://autobuildversion.codeplex.com/releases/view/60932#DownloadId=208247"&gt;http://autobuildversion.codeplex.com/releases/view/60932#DownloadId=208247&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;用起來很簡單方便，安裝後只需要在VS2010的主選單上按下Tools-&amp;gt;Build Version Increment-&amp;gt;Settings：&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-ypMh-f4gjPw/TpMOXHPxNYI/AAAAAAAAA28/G5zmBcXsyuU/s1600/c951e5ae-21f6-4a8c-b3ba-d24802a7b73f.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="223" kca="true" src="http://4.bp.blogspot.com/-ypMh-f4gjPw/TpMOXHPxNYI/AAAAAAAAA28/G5zmBcXsyuU/s400/c951e5ae-21f6-4a8c-b3ba-d24802a7b73f.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="left" class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;即可進入設定畫面：&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/--VHwwqumG-U/TpMPr5KlSRI/AAAAAAAAA3A/xKL8NPCELr4/s1600/2512adff-8e1c-4a63-9f1d-13b9b18083e7.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="403" kca="true" src="http://1.bp.blogspot.com/--VHwwqumG-U/TpMPr5KlSRI/AAAAAAAAA3A/xKL8NPCELr4/s640/2512adff-8e1c-4a63-9f1d-13b9b18083e7.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;﻿&lt;/div&gt;&lt;div style="text-align: left;"&gt;主要是上述幾個項目，設定完成之後，每一次Build時的版本編號就可以自動依照規則遞增了。你也可以透過 Assembly.GetExecutingAssembly().FullName.Split(',')[1] 抓取到當前App的XAP版本, 提供給Developer參考...&lt;/div&gt;&lt;div style="text-align: left;"&gt;更詳細的使用說明可以參考這裡：&lt;/div&gt;&lt;a href="http://autobuildversion.codeplex.com/documentation"&gt;http://autobuildversion.codeplex.com/documentation&lt;/a&gt; &lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;iframe allowtransparency="allowtransparency" frameborder="0" id="fbLike" scrolling="no" src="" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; height: 65px; overflow: hidden; width: 350px;"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href="http://www.facebook.com/sharer.php" name="fb_share" type="button_count"&gt;分享&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-1250365571735768113?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/1250365571735768113/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=1250365571735768113' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/1250365571735768113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/1250365571735768113'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/10/vs2010buildupdate.html' title='[VS2010]在Build時自動update專案版本'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-Aqd1K0aI2l0/TpMN8rWsSuI/AAAAAAAAA24/AxCS74Fg-zg/s72-c/b2396773-585b-4ebb-a104-127e34a5c1f7.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-1240293050188576606</id><published>2011-10-06T18:14:00.000+08:00</published><updated>2011-10-06T18:14:28.164+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='心情'/><title type='text'>追悼賈伯斯</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-puN1L6EWHwk/To1_HxqU5TI/AAAAAAAAA20/gsnMuGKuH2o/s1600/Untitled+-+1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="344" kca="true" src="http://4.bp.blogspot.com/-puN1L6EWHwk/To1_HxqU5TI/AAAAAAAAA20/gsnMuGKuH2o/s640/Untitled+-+1.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://studyhost.blogspot.com/2011/08/blog-post_25.html"&gt;寫在一個多月前，賈伯斯辭職時&lt;/a&gt;...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-1240293050188576606?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/1240293050188576606/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=1240293050188576606' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/1240293050188576606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/1240293050188576606'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/10/blog-post.html' title='追悼賈伯斯'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-puN1L6EWHwk/To1_HxqU5TI/AAAAAAAAA20/gsnMuGKuH2o/s72-c/Untitled+-+1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-9121562270332390146</id><published>2011-09-28T09:00:00.001+08:00</published><updated>2011-09-28T09:06:58.997+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Developer Mind'/><title type='text'>千里之行，始於足下...</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-kXzj8MFy_-Y/ToJqpV2hm4I/AAAAAAAAA2w/YXL5YoFYEzU/s1600/WP_000011.jpg" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" kca="true" src="http://4.bp.blogspot.com/-kXzj8MFy_-Y/ToJqpV2hm4I/AAAAAAAAA2w/YXL5YoFYEzU/s400/WP_000011.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;今天早上，因為一時興起，到住家附近那個有湖的公園，一早步行上山，沿路蟲鳴鳥叫，難得清晨的乾淨空氣，精神很是清爽。&lt;br /&gt;&lt;br /&gt;到了山頂，發現原來這座山也不是挺高，以前從公園湖邊往上看去，總是不知道山裡面是什麼，這次親自走一遭，終於算是體驗了一下這個步道。&lt;br /&gt;&lt;br /&gt;沒想到住在這邊這麼多年，居然一直到今天，才有機會登山看看，從山上往下看的視野果然不同，沿途一邊思想最近手上的專案、公司的產品、以及未來在資訊技術上的改變與相關的因應之道，還有接下來準備整理學習的新技術...等，一邊步行、一邊思索；清晨登山，也算是頗有所得。&lt;br /&gt;&lt;br /&gt;回頭想想，資訊技術的學習，似乎也是如此，有很多新(或其實不是很新)的技術，總是在我們身邊晃來晃去，有時候聽到朋友說(Ruddy老師最常幹這種事情，到處跟人說，最近有哪些新技術很有趣)，但自己礙於時間，總是沒有辦法親自去試看看，從新穎的程式設計方法論、絢麗的展示層技術、或是某個哪個專案控管機制概念...等，我們常常都是聽的多，自己實際動手做卻來得少。&lt;br /&gt;&lt;br /&gt;偶然一天，有機會下手，才發現其實並不如自己想像的那麼困難(相信我，很多書籍或課程把一門新技術描述的很難，絕大部分狀況都是作者和講師的問題，技術本身可能一點都不難)，自己資質沒那麼差，只是過去並沒有真的把心思放在這裡，以至於似懂非懂。&lt;br /&gt;&lt;br /&gt;很多路，得自己走過，才會有感覺。一旦你走進去，不管是一條路，還是一門技術，你才能夠去體驗、感受，進而才能評斷出優劣與利弊，在對前面的路感到迷惘的時候，很可能暫時放下思索，直接走出去，沿途所見常常能夠刺激你找到更寬廣的路。&lt;br /&gt;&lt;br /&gt;對未來，或新的技術，想要挑戰看看嗎? 不妨，就從今天，從身邊的小山開始...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-9121562270332390146?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/9121562270332390146/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=9121562270332390146' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/9121562270332390146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/9121562270332390146'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/09/blog-post_28.html' title='千里之行，始於足下...'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-kXzj8MFy_-Y/ToJqpV2hm4I/AAAAAAAAA2w/YXL5YoFYEzU/s72-c/WP_000011.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-2478285213536159172</id><published>2011-09-27T11:12:00.001+08:00</published><updated>2011-09-27T11:15:33.302+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows phone 7'/><title type='text'>[推薦] Donma寫的...如何在WP7的Map Control當中，顯示中文化地圖...</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://3.bp.blogspot.com/-kSFoKOJ4bQY/ToE-lD4oZDI/AAAAAAAAA2s/QhfNwtHOg20/s1600/src1.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" kca="true" src="http://3.bp.blogspot.com/-kSFoKOJ4bQY/ToE-lD4oZDI/AAAAAAAAA2s/QhfNwtHOg20/s320/src1.png" width="192" /&gt;&lt;/a&gt;&lt;/div&gt;最近大夥玩WP7 Mango玩的不亦樂乎，開始體驗Windows Phone在生活當中的強大功能與應用，但是在開發層面，目前最大的困擾就是內建的WP7 Map control，實在是好用到不行，包含支援所有的手勢和相關功能，但殘忍的是，居然不支援中文，扼殺了廣大台灣開發人員的創意，而我在研討會介紹的時候，也因為沒有中文顯示，顯得有些美中不足。&lt;br /&gt;&lt;br /&gt;但是最近看到一篇Donma寫的文章，透過相當漂亮的作法，解決了這個問題，如果你對WP7或Silverlight應用程式地圖或導航開發有興趣，但苦於Map Control不支援中文，這篇文章可以說是救星了：&lt;br /&gt;&lt;a href="http://www.dotblogs.com.tw/junegoat/archive/2011/07/11/windows-phone7-bing-map-chinese-popo.aspx"&gt;http://www.dotblogs.com.tw/junegoat/archive/2011/07/11/windows-phone7-bing-map-chinese-popo.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;我順手把測試的專案放在底下這個位置：[&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=204"&gt;下載&lt;/a&gt;] 有興趣的朋友們可以參考。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: lime;"&gt;&lt;strong&gt;後記：&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;回想和Donma的認識，應該是七年前了，當時他是大三的學生，而我則開始在資訊教育訓練和著作上有一些耕耘。那時候透過一個朋友的介紹，第一次看到Donma對於程式設計的狂熱興趣與強大的企圖心，我今天回想起來當時的情境，還是覺得這個形容詞算是貼切，一點都不誇大...&lt;br /&gt;&lt;br /&gt;幾年後，他畢業了，過了一兩年，突然在很多微軟的研討會場合看到他，沒多久他也是微軟MVP的一員了，而現在他任職的公司則是微軟重要的合作夥伴，在公司中他也擔任重要且關鍵的開發任務...&lt;br /&gt;&lt;br /&gt;我得說，這正是一個軟體開發人員精彩的成長歷程，從Donma身上我看到過去我曾寫過的文章『&lt;a href="http://studyhost.blogspot.com/2010/06/blog-post.html"&gt;關於 如何快速增進程式功力&lt;/a&gt;』中所說，開發人員應該培養自己解決問題的能力的最佳例證。才幾年的時間，從學校的學生蛻變成專門解決他人問題的MVP，並且在軟體公司當中獨當一面，在如今景氣與趨勢變化迅速的年代，很多大學畢業生面對就業的困擾與憂心，希望政府提供幫助或是振興就業市場，但是別忘記，與其期待別人施予援手，其實自己才是開創未來前途最重要的關鍵因素。&lt;br /&gt;&lt;br /&gt;Keep Walking~&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-2478285213536159172?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/2478285213536159172/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=2478285213536159172' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/2478285213536159172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/2478285213536159172'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/09/donmawp7map-control.html' title='[推薦] Donma寫的...如何在WP7的Map Control當中，顯示中文化地圖...'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-kSFoKOJ4bQY/ToE-lD4oZDI/AAAAAAAAA2s/QhfNwtHOg20/s72-c/src1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-8151956870816065642</id><published>2011-09-24T11:08:00.000+08:00</published><updated>2011-09-24T11:08:12.840+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='藍芽'/><category scheme='http://www.blogger.com/atom/ns#' term='無關程式'/><category scheme='http://www.blogger.com/atom/ns#' term='滑鼠'/><category scheme='http://www.blogger.com/atom/ns#' term='Bluetooth'/><title type='text'>困擾我的線...和藍芽斷線</title><content type='html'>線路，一直是很困擾我的問題。&lt;br /&gt;桌上從USB、滑鼠、手機、充電器、螢幕...全都是線...你知道，這很煩的。&lt;br /&gt;有的線不夠長，你還得弄延長線，有的線太長，你還得拿個橡皮筋什麼的把它捆起來，這也很煩。&lt;br /&gt;&lt;br /&gt;所以如果可以，我盡量讓設備不要有線。&lt;br /&gt;最近滑鼠左鍵被我按壞了(彈不起來)，所以我只好再買一顆，這次我買了藍芽滑鼠，不用接接收器的那種(因為USB很寶貴，況且已經插滿了)，買來，接好，可以用。&lt;br /&gt;&lt;br /&gt;不過似乎移動沒有有線的滑鼠那麼順，沒關係，其實差異很微小，幾乎感覺不出來。&lt;br /&gt;但發現一個嚴重的問題，就是擱著幾分鐘之後，XX，他不會動了&amp;gt;_&amp;lt;&lt;br /&gt;&lt;br /&gt;try了幾次，發現是NB上的問題，每次我似乎都得重開藍芽，滑鼠才會醒過來，因此我找了一下，到底是哪邊的問題，最後....&lt;br /&gt;電腦--&amp;gt;滑鼠右鍵--&amp;gt;管理--&amp;gt;裝置管理員--&amp;gt;Bluetooth無線電--&amp;gt;Generic Bluetooth Adapter--&amp;gt;滑鼠右鍵--&amp;gt;內容--&amp;gt;電源管理：&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Gj0glMutFt8/Tn1JRvRkEZI/AAAAAAAAA2o/rVcdWJ4JXOc/s1600/f5fc5f3a-6b70-4a8e-9ddb-e2a2343bf6ad.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" hca="true" height="400" src="http://4.bp.blogspot.com/-Gj0glMutFt8/Tn1JRvRkEZI/AAAAAAAAA2o/rVcdWJ4JXOc/s400/f5fc5f3a-6b70-4a8e-9ddb-e2a2343bf6ad.jpg" width="385" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="left" class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="left" class="separator" style="clear: both; text-align: center;"&gt;﻿&lt;/div&gt;&lt;div align="left"&gt;把那該死的『允許電腦關閉xxx以節省電源』取消掉，搞定。^_^﻿&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-8151956870816065642?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/8151956870816065642/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=8151956870816065642' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/8151956870816065642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/8151956870816065642'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/09/blog-post.html' title='困擾我的線...和藍芽斷線'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-Gj0glMutFt8/Tn1JRvRkEZI/AAAAAAAAA2o/rVcdWJ4JXOc/s72-c/f5fc5f3a-6b70-4a8e-9ddb-e2a2343bf6ad.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-2528302807509088741</id><published>2011-09-23T12:53:00.000+08:00</published><updated>2011-09-23T12:53:53.584+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows phone 7'/><title type='text'>Windows Phone 7(WP7) - Mango(7.1)  中文 Apps 上架經驗</title><content type='html'>最近配合台灣成為全球第一個Mango Release的市場，開始將過去在微軟Marketplace上的一些Apps改成中文版，首先要提醒同學們注意的是，在現在的Mango版本App上架流程中，Assembly Infomation的Neutral Language不得保留空白(7.0時可以)，你必須選擇你的Target Marketplace 的Language，因此我要上台灣市場，所以底下選的是：Chinese (Traditional, Taiwan)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Tmae-4EWAY8/TnwOv0Y7iiI/AAAAAAAAA2k/b0NFSOc0jeU/s1600/b8420f84-16ad-4730-85ad-53ce1b7acca3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" hca="true" height="373" src="http://4.bp.blogspot.com/-Tmae-4EWAY8/TnwOv0Y7iiI/AAAAAAAAA2k/b0NFSOc0jeU/s400/b8420f84-16ad-4730-85ad-53ce1b7acca3.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;請注意先前有學員測試，選擇Chinese (Traditional)，怎麼上傳也傳不上去，App Hub始終跟你說Connect fail(詭異的訊息)，改成 Chinese (Traditional, Taiwan) 就OK了，這個問題目前只有一位同學回報，如果未來有碰到類似狀況，請update讓我知道...&lt;br /&gt;&lt;br /&gt;當你在Neutral Language 選擇了 Chinese (Traditional, Taiwan), 則你的App的 Description就可以先(只)寫中文，如果有勾選上架全球市場，則可考慮後面補上一段英文Description，例如:&lt;br /&gt;-------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;這支App的功能是xxxx, 是一隻非常讚的App.....&lt;br /&gt;改版歷程:&lt;br /&gt;&amp;nbsp;v1.0 : xxx&lt;br /&gt;&amp;nbsp;v2.0 :&amp;nbsp;zzz&lt;br /&gt;&lt;br /&gt;English Description:&lt;br /&gt;This is a awesome App, for...&lt;br /&gt;Version History:&lt;br /&gt;v1.0 : xxx&lt;br /&gt;v2.0: zzz&lt;br /&gt;-------------------------------------------------------------&lt;br /&gt;目前我差不多都是照上面這樣填寫Description...&lt;br /&gt;&lt;br /&gt;總的來說，Mango機在台灣上市了，台灣的Marketplace也開放了，中文的App也可以上架了...萬事俱備，只剩你的加入了~ ^_^&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-2528302807509088741?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/2528302807509088741/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=2528302807509088741' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/2528302807509088741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/2528302807509088741'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/09/windows-phone-7wp7-mango71-apps.html' title='Windows Phone 7(WP7) - Mango(7.1)  中文 Apps 上架經驗'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-Tmae-4EWAY8/TnwOv0Y7iiI/AAAAAAAAA2k/b0NFSOc0jeU/s72-c/b8420f84-16ad-4730-85ad-53ce1b7acca3.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-2651353052993511523</id><published>2011-09-21T14:11:00.001+08:00</published><updated>2011-09-21T14:12:40.075+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='研討會'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows phone 7'/><title type='text'>[範例程式] Windows Phone 7.1 Mango 自訂動態磚範例</title><content type='html'>底下的這個範例是TechDays 2011研討會時，我Demo的WP7.1當中，自訂動態磚的操作，可以配合先前的教學影片一同觀賞。&lt;br /&gt;[範例] &lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=203"&gt;下載&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;[教學影片]&lt;br /&gt;&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=190"&gt;109 Tiles動態磚的使用介紹&lt;/a&gt;&lt;br /&gt;這支影片當中介紹的是WP7當中相當重要的動態磚機制，我們介紹了7.0中的Application Tile以及7.1 Mango版本當中的Secondary Tiles。在WP7.1 Mango的版本當中，開發人員可以自由的透過程式碼建立Secondary Tiles，可以新增、修改或刪除，也可以自由地指定Tiles上的圖示、文字標題與數字等資訊。用戶從Start畫面點選Tiles也可以直接連入App，並且帶入參數，是一個相當好用的機制。&lt;br /&gt;&lt;br /&gt;[範例執行展示]&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/YNkGRu2DAzE/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/YNkGRu2DAzE?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/YNkGRu2DAzE?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-2651353052993511523?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/2651353052993511523/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=2651353052993511523' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/2651353052993511523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/2651353052993511523'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/09/windows-phone-71-mango.html' title='[範例程式] Windows Phone 7.1 Mango 自訂動態磚範例'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-9200869817372722601</id><published>2011-09-16T14:19:00.006+08:00</published><updated>2011-09-16T14:33:21.424+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Metro Style Apps'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows 8'/><title type='text'>Windows 8 Metro Style Apps開發...</title><content type='html'>&lt;a href="http://www.techbang.com.tw/posts/6980-build-windows-assembly-debut-inside-and-download-the-latest-windows-8"&gt;Keynote新聞介紹&lt;/a&gt;&amp;nbsp; &amp;lt;---Windows 8 的中文介紹&lt;br /&gt;&lt;br /&gt;要如何開發Windows 8 Metro Style 的 Apps呢...想嘗鮮的朋友可以看&lt;a href="http://video.ch9.ms/ch9/5d1b/e1098fdb-3e9f-4927-8be4-9f5d00bc5d1b/BUILD2011BigPicture3_high_ch9.mp4"&gt;這裡&lt;/a&gt;...&lt;br /&gt;(好像好像Silverlight啊~)&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" scrolling="no" src="http://channel9.msdn.com/Events/BUILD/BUILD2011/BPS-1006/player?w=960&amp;amp;h=544" style="height: 544px; width: 960px;"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-9200869817372722601?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/9200869817372722601/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=9200869817372722601' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/9200869817372722601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/9200869817372722601'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/09/windows-8-metro-style-apps.html' title='Windows 8 Metro Style Apps開發...'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-7357628999364325338</id><published>2011-09-16T13:19:00.001+08:00</published><updated>2011-09-16T13:22:32.998+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='研討會'/><title type='text'>忙完Techdays 2011之後...</title><content type='html'>今年TechDays和過去一樣，會場依舊好多人，走道間依舊是嘶聲吶喊、拼命想刷你卡片的廠商，穿梭在人群中的，當然還是不乏讓人眼睛一亮的展場ShowGirls...&lt;br /&gt;&lt;br /&gt;今年兩堂Windows Phone 7的課蠻開心的，可以看到平常在FB社團裡面才看得到的朋友們，這樣的大會也讓平時忙碌的講師們有難得的機會這樣聚在一起，說真的，參加了幾年下來，雖然每年都在備課時搞得天昏地暗，但講完之後的輕鬆和愉悅，以及和學員講師們互動的心情，也是少有其他經驗能比擬的。&lt;br /&gt;&lt;br /&gt;和will保哥聊起，彼此好幾年前在台下當聽眾時的心情，Ruddy前輩則一直說...好多好年輕的講師啊, 一大堆講師他都快不認識了...其實從某個角度看，或許這也是一種傳承，講師中有在台上始終屹立不搖的大師，也有今年第一年登場的猛將，就是這樣的組合，才讓整個大會有著不同的激盪。&lt;br /&gt;&lt;br /&gt;每次從台上往下看，學員中總是有每年都參加我的場次的朋友(特別是來自台中的幾位)，每年這時候的聚集，似乎已經是一種不需言語的默契，有這樣的學員在總是能讓講師在忙亂中立刻像吃了定心丸一般的穩定。當然學員中也有第一次見面的新朋友，甚至遠從澎湖來的學員(很感謝您的熱情參與和配合^_^)，一個年度盛會的成功，其實學員的投入才是最重要的關鍵。也很感謝學員很認真地讀完了PDF書稿，給我不少的Feedback。&lt;br /&gt;&lt;br /&gt;在TechDays的前幾天，剛好跟網友們在FB中聊到，其實這個訊息爆炸的時代，到處都是學習的資源和管道，我們也錄製了非常多的教學影片，撰寫了不少的文稿或blog中的文章，其實學員即便在地球的另一端，也能夠迅速地掌握最新的技術。&lt;br /&gt;&lt;br /&gt;因此，願意放下手邊的工作，參與三天的課程，顯然已經不只是對技術的熱情，更多是對未來的期待以及投入社群和大家一起互動的渴望，所以我很希望在課程的分享當中，更多一些和學員之間的互動，我也很建議學員，可以多認識身邊的其他技術夥伴，畢竟這是一個相當難得的場合，讓全台所有IT/開發人員能夠共聚一堂，不僅僅是垂直的技術學習，橫向的技術分享將是更無價的。&lt;br /&gt;&lt;br /&gt;希望在今年的大會中，每一場次的課程都讓您有所收穫，我會在blog和&lt;a href="http://fb.studyhost.com/"&gt;fb.studyhost.com&lt;/a&gt;陸續把相關的內容持續post上來，希望對大家有幫助，期待下一次再見面。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-7357628999364325338?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/7357628999364325338/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=7357628999364325338' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/7357628999364325338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/7357628999364325338'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/09/techdays-2011.html' title='忙完Techdays 2011之後...'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-2491139275242959221</id><published>2011-09-13T15:54:00.017+08:00</published><updated>2011-09-14T08:54:04.253+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='研討會'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='電子書'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows phone 7'/><title type='text'>Techdays Taiwan 2011</title><content type='html'>感謝大夥兒熱情參與今天的TechDays Taiwan 2011研討會，&lt;br /&gt;說好的相關資源請參考底下連結：&lt;br /&gt;&lt;br /&gt;[Slides]&lt;a href="http://blog.studyhost.com/BlogData/20110913/TechDays%20Taiwan%202011%20WP7%20Mango-PicPublic.pptx"&gt;TechDays Taiwan 2011 WP7 Mango關鍵報告&lt;/a&gt;&lt;br /&gt;[Slides]&lt;a href="http://blog.studyhost.com/BlogData/20110913/AppHubAndMarketplace-PicPublic.pptx"&gt;Microsoft WP7應用程式開發-AppHub帳號申請與送件&lt;/a&gt;&lt;br /&gt;[電子書]&lt;a href="http://blog.studyhost.com/BlogData/20110913/WP7.1%20Mango%20Programming(ch1,2)-trial.pdf"&gt;WP7.1 Mango程式設計關鍵報告(CH1,2-試讀版)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;[Resources]&lt;br /&gt;&lt;a href="http://www.facebook.com/#!/pages/David%E7%9A%84NET-Walker%E5%B0%88%E9%A0%81/115848851788030"&gt;.NET Walker專頁&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.facebook.com/#!/groups/WP7Developers/"&gt;WP7 Asia Developers Group&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;[Training Videos]&lt;br /&gt;•&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=201"&gt;101 從基礎開始 &lt;/a&gt;&lt;br /&gt;從最基本的WP7應用程式設計開始，撰寫你的第一支WP7 App，內容包含如何透過Visual Studio 2010建立Windows Phone 7 App專案，建置與佈署到模擬器運行，WP7中基本的動畫設計概念，以及事件驅動程式設計...etc。&lt;br /&gt;&lt;br /&gt;•&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=202"&gt;102 ApplicationBar選單與顯示模式&lt;/a&gt;&lt;br /&gt;了解WP7當中的頁面架構，XAML的基本概念，控制項佈置位置，App顯示模式的改變，以及WP7當中相當重要的ApplicationBars介紹暨選單(MenuItem)與按鈕(IconButton)的設計。&lt;br /&gt;&lt;br /&gt;•&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=197"&gt;103 場景切換、面參數傳遞、與Back鈕&lt;/a&gt;&lt;br /&gt;如何設計多個畫面，並且在多個頁面當中進行切換呢? 多頁面時該如何傳遞或共用參數? 如何在切換頁面時加上自訂的特效動畫? 以及如何攔截Back鈕顯示提示訊息?&lt;br /&gt;&lt;br /&gt;•&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=195"&gt;104 Launcher的使用 &lt;/a&gt;&lt;br /&gt;這支影片當中介紹的是Launcher與 Choosers的概念，以及如何透過叫用Launcher API在我們自己撰寫的App當中啟動手機內建的應用程式來達成特定的功能，例如傳送簡訊或撥打電話。比較特別的是，在Mango的版本當中，加入了ShareLinkTask，讓你的App可以輕易地送出訊息到FaceBook塗鴉牆或MSN的狀態上喔...&lt;br /&gt;&lt;br /&gt;•&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=196"&gt;105 Choosers的使用&lt;/a&gt;&lt;br /&gt;在這支影片當中，我們繼續討論了Chooser的使用，介紹系統中的Chooser種類，以及示範如何透過Save Ringtone Task將特定的音效檔案儲存到手機當作鈴聲，和如何透過PhoneNumberChooserTask的使用來取得手機通訊錄中特定人員的電話號碼... &lt;br /&gt;&lt;br /&gt;•&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=193"&gt;106 WP7設定(Setting)頁面的設計&lt;/a&gt;&lt;br /&gt;這支影片當中介紹的是WP7設定(Setting)頁面的設計，其中使用到了IsolatedStorageSettings技術，來保留使用者的設定狀態, 同時間介紹了 UserIdleDetectionMode 的功能，如何透過UserIdleDetectionMode 設定來防止應用程式在執行過程中被Screen Lock干擾(例如防止閱讀電子書時，突然出現的螢幕Lock)，以及設定頁面的設計原則和技巧。&lt;br /&gt;&lt;br /&gt;•&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=194"&gt;107 WP7 IsolatedStorageFile的使用技巧&lt;/a&gt;&lt;br /&gt;這支影片當中介紹的是WP7當中的IsolatedStorageFile機制，同時也介紹如何利用WebClient下載特定的檔案，儲存到IsolatedStorage當中，以供後續的使用。除了IsolatedStorageFile機制的操作與使用方式之外，其中如何將圖檔儲存到IsolatedStorage當中，以及從IsolatedStorage當中把圖檔取回顯示到App中，也是相當重要的一部分。&lt;br /&gt;&lt;br /&gt;•&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=192"&gt;108 Push Notification概念與Toast Notification使用介紹&lt;/a&gt;&lt;br /&gt;這支影片當中介紹的是WP7當中相當重要的 Push Notification機制，我們扼要地說明了 Push Notification的概念、有哪些種類、以及如何使用、建立 Push Notification時需要注意哪些事項、以及Mango版本當中Push Notification機制的增強...。我們展示了Toast Notification的建立與發送方法，並且如何透過Mango當中針對Toast Notification新增的參數，喚起App並連結到特定手機頁面。 &lt;br /&gt;&lt;br /&gt;•&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=190"&gt;109 Tiles動態磚的使用介紹&lt;/a&gt;&lt;br /&gt;這支影片當中介紹的是WP7當中相當重要的動態磚機制，我們介紹了7.0中的Application Tile以及7.1 Mango版本當中的Secondary Tiles。在WP7.1 Mango的版本當中，開發人員可以自由的透過程式碼建立Secondary Tiles，可以新增、修改或刪除，也可以自由地指定Tiles上的圖示、文字標題與數字等資訊。用戶從Start畫面點選Tiles也可以直接連入App，並且帶入參數，是一個相當好用的機制。 &lt;br /&gt;&lt;br /&gt;•&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=191"&gt;110 Tiles動態磚 vs PushTileNotification&lt;/a&gt;&lt;br /&gt;這支影片接著繼續介紹WP7當中相當重要的PushTileNotification機制，我們先前介紹了7.0中的Application Tile以及7.1 Mango版本當中的Secondary Tiles。您會發現Tiles動態磚技術是WP7當中相當特殊好用的設計，而Tile最吸引人的其中一個原因，就是App的開發單位，可以透過PushTileNotification技術，主動把訊息推送到動態磚上，即便用戶端的App沒有正在執行，我們也可以藉由PushTileNotification把文字、數字與背景圖示等訊息，即時的推送到用戶端，直接呈現在手機的動態磚上，用戶不僅能收到即時的訊息，也不需要花費任何簡訊費用，是非常務實好用的功能。 &lt;br /&gt;&lt;br /&gt;•&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=199"&gt;111 WebServices基本呼叫&lt;/a&gt;&lt;br /&gt;在這支影片當中，我們主要介紹了如何從WP7當中透過Web Services抓取位於Internet遠端的資料，這個技術讓WP7這也不只是一座孤島，能夠動態的透過存取遠端資料來掌握即時的訊息。在商業應用程式上也相當好用，我們可以透過這樣的方式來存取企業內部的資訊或後端資料庫中的內容。當然，這樣的存取需要撰寫Web Services(或WCF Services)因此我們在這支影片當中，完整的介紹了如何透過ASP.NET開發技術撰寫WP7(Silverlight)需要的Web Services，以及如何透過LinqToSql抓取到後端資料庫中的Record，直接傳遞給WP7來使用。 &lt;br /&gt;&lt;br /&gt;•&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=200"&gt;112 WebServices遠端資料存取 與 資料繫結(DataBinding)&lt;/a&gt;&lt;br /&gt;前面我們介紹過了如何在WP7當中，透過Web Services抓取遠端的資料，而在這個影片當中，我們更進一步的，要來介紹如何把抓取到的資料直接以WP7(Silverlight開發技術)當中，傲視群雄的DataBinding機制，填入控制項當中，呈現出相當優質的畫面效果。這是WP7(Silverlight開發技術)中非常厲害的招式，請密切注意，立即收看 :) 。&lt;a href="http://www.facebook.com/#!/pages/David%E7%9A%84NET-Walker%E5%B0%88%E9%A0%81/115848851788030"&gt;http://www.facebook.com/#!/pages/David%E7%9A%84NET-Walker%E5%B0%88%E9%A0%81/115848851788030&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-2491139275242959221?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/2491139275242959221/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=2491139275242959221' title='5 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/2491139275242959221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/2491139275242959221'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/09/techdays-taiwan-2011.html' title='Techdays Taiwan 2011'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-9181646458019024231</id><published>2011-09-12T08:33:00.024+08:00</published><updated>2011-09-13T10:12:49.048+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='教學影片'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows phone 7'/><title type='text'>[教學影片] Windows Phone 7 - 程式設計關鍵報告(112 WebServices遠端資料存取與資料繫結)</title><content type='html'>今天Windows Phone 7程式設計教育訓練短片當中介紹的是，WP7(Silverlight開發技術)當中，傲視群雄的DataBinding機制 與 Web Services的整合...很精彩&lt;br /&gt;&lt;br /&gt;&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=200"&gt;112 WebServices遠端資料存取 與 資料繫結(DataBinding)&lt;/a&gt;&lt;br /&gt;前面我們介紹過了如何在WP7當中，透過Web Services抓取遠端的資料，而在這個影片當中，我們更進一步的，要來介紹如何把抓取到的資料直接以WP7(Silverlight開發技術)當中，傲視群雄的DataBinding機制，填入控制項當中，呈現出相當優質的畫面效果。這是WP7(Silverlight開發技術)中非常厲害的招式，請密切注意，立即收看 :) 。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-9181646458019024231?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/9181646458019024231/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=9181646458019024231' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/9181646458019024231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/9181646458019024231'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/09/windows-phone-7-112-webservices.html' title='[教學影片] Windows Phone 7 - 程式設計關鍵報告(112 WebServices遠端資料存取與資料繫結)'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-9210390555153736223</id><published>2011-09-09T08:33:00.014+08:00</published><updated>2011-09-13T10:11:13.790+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='教學影片'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows phone 7'/><title type='text'>[教學影片] Windows Phone 7 - 程式設計關鍵報告(111 WebServices基本呼叫)</title><content type='html'>我們在今天的Windows Phone 7程式設計教育訓練短片當中介紹的是，如何從WP7存取遠端的資料，以及遠端資料庫中的內容。(今天這個主題超級重要喔~)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=199"&gt;111 WebServices基本呼叫&lt;/a&gt;&lt;br /&gt;在這支影片當中，我們主要介紹了如何從WP7當中透過Web Services抓取位於Internet遠端的資料，這個技術讓WP7這也不只是一座孤島，能夠動態的透過存取遠端資料來掌握即時的訊息。在商業應用程式上也相當好用，我們可以透過這樣的方式來存取企業內部的資訊或後端資料庫中的內容。&lt;br /&gt;&lt;br /&gt;當然，這樣的存取需要撰寫Web Services(或WCF Services)因此我們在這支影片當中，完整的介紹了如何透過ASP.NET開發技術撰寫WP7(Silverlight)需要的Web Services，以及如何透過LinqToSql抓取到後端資料庫中的Record，直接傳遞給WP7來使用。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-9210390555153736223?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/9210390555153736223/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=9210390555153736223' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/9210390555153736223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/9210390555153736223'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/09/windows-phone-7-111-webservices.html' title='[教學影片] Windows Phone 7 - 程式設計關鍵報告(111 WebServices基本呼叫)'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-5354449392237951011</id><published>2011-09-08T08:33:00.019+08:00</published><updated>2011-09-08T08:33:01.024+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows phone 7'/><title type='text'>Windows Phone 7  - Mango 剪貼簿(Clipboard)</title><content type='html'>在Mango的版本當中，開發人員開始可以自由地控制手機中的文字複製貼上功能，程式碼的撰寫如同過去我們在WindowsForm當中的做法一樣，相當的簡單：&lt;br /&gt;&lt;pre class="brush:c-sharp"&gt;//設定剪貼簿中的文字&lt;br /&gt;System.Windows.Clipboard.SetText("簡單貼...");&lt;br /&gt;//取得剪貼簿中的文字&lt;br /&gt;string buf = System.Windows.Clipboard.GetText(); &amp;lt;--目前不開放&lt;br /&gt;&lt;/pre&gt;就這樣，相當簡單但很好用。&lt;br /&gt;&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=198"&gt;範例下載&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-5354449392237951011?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/5354449392237951011/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=5354449392237951011' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/5354449392237951011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/5354449392237951011'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/09/windows-phone-7-mango-clipboard.html' title='Windows Phone 7  - Mango 剪貼簿(Clipboard)'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-2192335942909837759</id><published>2011-09-07T22:43:00.007+08:00</published><updated>2011-09-07T22:57:00.954+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='軟體開發'/><category scheme='http://www.blogger.com/atom/ns#' term='雲端'/><category scheme='http://www.blogger.com/atom/ns#' term='Winodws Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows phone 7'/><title type='text'>Data.Taipei台北市政府公開資料平台</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-oOMX3IJwj7U/TmeGL3IK6XI/AAAAAAAAA2g/LI-GaGA2b9E/s1600/biglogo.gif" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" nba="true" src="http://4.bp.blogspot.com/-oOMX3IJwj7U/TmeGL3IK6XI/AAAAAAAAA2g/LI-GaGA2b9E/s1600/biglogo.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://www.ithome.com.tw/itadm/article.php?c=69077"&gt;台北市政府最近跟微軟合作&lt;/a&gt;，採用了微軟的Windows Azure雲端運算平台，打造了&lt;a href="http://taipeiogdi.cloudapp.net/"&gt; 『Data.Taipei台北市政府公開資料平台』&lt;/a&gt;，同時為了推廣應用在手機App上，配合工業局舉辦的&lt;a href="http://www.jtv.com.tw/AppStar/"&gt;App Star高手爭霸戰&lt;/a&gt;，加碼&lt;a href="http://www.taipei.gov.tw/ct.asp?xItem=5049420&amp;amp;ctNode=44907&amp;amp;mp=datataipei"&gt;獎金30萬&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;不過我看了一下，目前對這個平台的技術架構沒太大疑問，但主要的問題是其中提供的內容稍嫌空泛了些，大家期待的公車即時位置尚未在這個平台上提供，而是需要另外&lt;a href="http://www.taipei.gov.tw/ct.asp?xItem=4004476&amp;amp;ctNode=44908&amp;amp;mp=datataipei"&gt;向臺北市政府交通局申請&lt;/a&gt;，但是我對目前平台上提供的資訊(諸如台北市公廁位置或是警察局的位置)也沒太大興趣，況且這些資料也並非即時資訊，下載個Excel檔案就可以寫App了，大費周章的連上雲端平台似乎意義不大。&lt;br /&gt;&lt;br /&gt;當然，我也知道不太可能要求台北市政府提供路口攝影機的即時影像資訊(雖然對我來說最希望看到的乃是這個，這樣宅男駭客就可以實現在家裡監控每個街口的電影情節)，所以截至目前為止，我們只能先看看&lt;a href="http://www.taipei.gov.tw/ct.asp?xItem=3450543&amp;amp;ctNode=45112&amp;amp;mp=datataipei"&gt;&lt;strong&gt;即時&lt;/strong&gt;公廁位置(還每日更新呢)&lt;/a&gt;過過乾癮...&lt;br /&gt;&lt;br /&gt;不過，就資料連結技術來說，台北市政府算是已經相當給力了，&lt;a href="http://taipeiogdi.cloudapp.net/DataBrowser/TaipeiOGDI/EPA01#param=NOFILTER--DataView--Results"&gt;資料連結的介面&lt;/a&gt;提供了豐富的Atom或Json形式，採用&lt;a href="http://ogdisdk.cloudapp.net/"&gt;OGDI&lt;/a&gt;以OData的形式提供資料(很趕得上潮流，拍拍手)，甚至C#範例都有了(還很先進的用了Linq查詢咧...)，一切都很不錯，就是Content差了些...&amp;gt;_&amp;lt;&lt;br /&gt;&lt;br /&gt;不過話又說回來，台北是繼紐約、倫敦之後，成功導入該服務的市政單位，也算是很趕時髦了，希望台北市政府繼續努力，讓我能夠有機會在短時間內可以update這篇po文。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-2192335942909837759?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/2192335942909837759/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=2192335942909837759' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/2192335942909837759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/2192335942909837759'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/09/datataipei.html' title='Data.Taipei台北市政府公開資料平台'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-oOMX3IJwj7U/TmeGL3IK6XI/AAAAAAAAA2g/LI-GaGA2b9E/s72-c/biglogo.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-1085497088996777366</id><published>2011-09-07T08:33:00.007+08:00</published><updated>2011-09-07T09:09:09.981+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='教學影片'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows phone 7'/><title type='text'>[教學影片] Windows Phone 7 - 程式設計關鍵報告(110 Tiles動態磚與PushTileNotification)</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Rxu-3dUTrFA/TmbELLLAjpI/AAAAAAAAA2c/oDrQjvBtt0U/s1600/959565d3-5716-4af7-8b73-20453678341e.jpg" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="239" nba="true" src="http://4.bp.blogspot.com/-Rxu-3dUTrFA/TmbELLLAjpI/AAAAAAAAA2c/oDrQjvBtt0U/s320/959565d3-5716-4af7-8b73-20453678341e.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;今天Windows Phone 7程式設計教育訓練短片當中介紹的是，許多開發人員有興趣的PushTileNotification機制。(今天這個主題很重要喔~)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=191"&gt;110 Tiles動態磚 vs PushTileNotification&lt;/a&gt;&lt;br /&gt;這支影片接著繼續介紹WP7當中相當重要的PushTileNotification機制，我們先前介紹了7.0中的Application Tile以及7.1 Mango版本當中的Secondary Tiles。您會發現Tiles動態磚技術是WP7當中相當特殊好用的設計，而Tile最吸引人的其中一個原因，就是App的開發單位，可以透過PushTileNotification技術，主動把訊息推送到動態磚上，即便用戶端的App沒有正在執行，我們也可以藉由PushTileNotification把文字、數字與背景圖示等訊息，即時的推送到用戶端，直接呈現在手機的動態磚上，用戶不僅能收到即時的訊息，也不需要花費任何簡訊費用，是非常務實好用的功能。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-1085497088996777366?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/1085497088996777366/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=1085497088996777366' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/1085497088996777366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/1085497088996777366'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/09/windows-phone-7-110-tilespushtilenotifi.html' title='[教學影片] Windows Phone 7 - 程式設計關鍵報告(110 Tiles動態磚與PushTileNotification)'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-Rxu-3dUTrFA/TmbELLLAjpI/AAAAAAAAA2c/oDrQjvBtt0U/s72-c/959565d3-5716-4af7-8b73-20453678341e.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-5578535905994779742</id><published>2011-09-05T08:30:00.002+08:00</published><updated>2011-09-06T21:51:03.938+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='教學影片'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows phone 7'/><title type='text'>[教學影片] Windows Phone 7 - 程式設計關鍵報告(109 Tiles動態磚)</title><content type='html'>今天繼續推出一隻介紹Windows Phone 7程式設計教育訓練短片。(今天這個主題也很重要喔)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=190"&gt;109 Tiles動態磚的使用介紹&lt;/a&gt;&lt;br /&gt;這支影片當中介紹的是WP7當中相當重要的動態磚機制，我們介紹了7.0中的Application Tile以及7.1 Mango版本當中的Secondary Tiles。在WP7.1 Mango的版本當中，開發人員可以自由的透過程式碼建立Secondary Tiles，可以新增、修改或刪除，也可以自由地指定Tiles上的圖示、文字標題與數字等資訊。用戶從Start畫面點選Tiles也可以直接連入App，並且帶入參數，是一個相當好用的機制。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-5578535905994779742?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/5578535905994779742/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=5578535905994779742' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/5578535905994779742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/5578535905994779742'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/09/windows-phone-7-109-tiles.html' title='[教學影片] Windows Phone 7 - 程式設計關鍵報告(109 Tiles動態磚)'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-8022982902479263088</id><published>2011-09-02T08:30:00.011+08:00</published><updated>2011-09-07T08:52:48.896+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='教學影片'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows phone 7'/><title type='text'>[教學影片] Windows Phone 7 - 程式設計關鍵報告(108 Push Notification)</title><content type='html'>今天繼續推出一隻介紹Windows Phone 7程式設計教育訓練短片。(雖然今天只有一支，但是今天這個主題很重要)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=192"&gt;108 Push Notification概念與Toast Notification使用介紹&lt;/a&gt;&lt;br /&gt;這支影片當中介紹的是WP7當中相當重要的 Push Notification機制，我們扼要地說明了 Push Notification的概念、有哪些種類、以及如何使用、建立 Push Notification時需要注意哪些事項、以及Mango版本當中Push Notification機制的增強...。我們展示了Toast Notification的建立與發送方法，並且如何透過Mango當中針對Toast Notification新增的參數，喚起App並連結到特定手機頁面。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-8022982902479263088?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/8022982902479263088/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=8022982902479263088' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/8022982902479263088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/8022982902479263088'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/09/windows-phone-7-108-push-notification.html' title='[教學影片] Windows Phone 7 - 程式設計關鍵報告(108 Push Notification)'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-8121122733614749931</id><published>2011-08-31T08:12:00.023+08:00</published><updated>2011-09-07T08:53:38.302+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='教學影片'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows phone 7'/><title type='text'>[教學影片] Windows Phone 7 - 程式設計關鍵報告(106-107)</title><content type='html'>繼續推出兩隻介紹Windows Phone 7程式設計教育訓練短片。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=193"&gt;106 WP7設定(Setting)頁面的設計&lt;/a&gt;&lt;br /&gt;這支影片當中介紹的是WP7設定(Setting)頁面的設計，其中使用到了IsolatedStorageSettings技術，來保留使用者的設定狀態, 同時間介紹了 UserIdleDetectionMode 的功能，如何透過UserIdleDetectionMode 設定來防止應用程式在執行過程中被Screen Lock干擾(例如防止閱讀電子書時，突然出現的螢幕Lock)，以及設定頁面的設計原則和技巧。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=194"&gt;107 WP7 IsolatedStorageFile的使用技巧&lt;/a&gt;&lt;br /&gt;這支影片當中介紹的是WP7當中的IsolatedStorageFile機制，同時也介紹如何利用WebClient下載特定的檔案，儲存到IsolatedStorage當中，以供後續的使用。除了IsolatedStorageFile機制的操作與使用方式之外，其中如何將圖檔儲存到IsolatedStorage當中，以及從IsolatedStorage當中把圖檔取回顯示到App中，也是相當重要的一部分。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-8121122733614749931?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/8121122733614749931/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=8121122733614749931' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/8121122733614749931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/8121122733614749931'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/08/windows-phone-7-106-107.html' title='[教學影片] Windows Phone 7 - 程式設計關鍵報告(106-107)'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-7469951342823420357</id><published>2011-08-30T12:17:00.001+08:00</published><updated>2011-08-30T12:30:35.282+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='無關程式'/><category scheme='http://www.blogger.com/atom/ns#' term='心情'/><title type='text'>風雨無阻</title><content type='html'>日前颱風天那天，聽到朋友中有位講師不辭辛勞，不畏風雨的依舊在預定的時間遠赴台灣的另一端，只為了說好的幫同學們上課，聽到了之後相當感動，所以我哼著熟悉的歌曲，寫了底下這首歌...描述許多講師、作者們共同的心情...&lt;br /&gt;&lt;br /&gt;&lt;span style="color: lime;"&gt;請配上 周華健‧風雨無阻...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: yellow;"&gt;給你我的全部　.NET是我今生唯一的賭注&lt;/span&gt;&lt;br /&gt;&lt;span style="color: yellow;"&gt;只留下這段代碼　讓我無怨無悔　全心的付出&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: yellow;"&gt;怕你疲倦　怕你哭　怕你迷惘　怕你糊塗&lt;/span&gt;&lt;br /&gt;&lt;span style="color: yellow;"&gt;編程千山萬里路　我可以朝朝暮暮&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: yellow;"&gt;給你一本我的書　它是我一生不停的腳步&lt;/span&gt;&lt;br /&gt;&lt;span style="color: yellow;"&gt;讓我寫滿數十萬字　堆滿整座倉庫　你慢慢閱讀&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: yellow;"&gt;Silverlight是漫長的旅途　一會快樂　一會痛苦&lt;/span&gt;&lt;br /&gt;&lt;span style="color: yellow;"&gt;千瘡百孔編程路　我可以縫縫補補&lt;/span&gt;&lt;br /&gt;&lt;span style="color: yellow;"&gt;⋯⋯&lt;/span&gt;&lt;br /&gt;&lt;span style="color: yellow;"&gt;提著昨日種種千辛萬苦　向明天換一些　夢想和錢途&lt;/span&gt;&lt;br /&gt;&lt;span style="color: yellow;"&gt;範例夠不夠多　講解夠不夠好　可以要求　不要不在乎&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: yellow;"&gt;不願讓你看見我的辛苦　是曾經無悔的風雨無阻&lt;/span&gt;&lt;br /&gt;&lt;span style="color: yellow;"&gt;贈品夠不夠多　點心夠不夠好　可以追求　不認輸&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;配樂 請用 &lt;a href="http://www.youtube.com/watch?v=D9b4Pnpbx4Q"&gt;http://www.youtube.com/watch?v=D9b4Pnpbx4Q&lt;/a&gt;&lt;br /&gt;或 &lt;a href="http://www.youtube.com/watch?v=LwM8AIYC5S8"&gt;http://www.youtube.com/watch?v=LwM8AIYC5S8&lt;/a&gt; &lt;br /&gt;&lt;object style="height: 390px; width: 640px;"&gt;&lt;param name="movie" value="http://www.youtube.com/v/D9b4Pnpbx4Q?version=3"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/D9b4Pnpbx4Q?version=3" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="390"&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-7469951342823420357?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/7469951342823420357/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=7469951342823420357' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/7469951342823420357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/7469951342823420357'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/08/blog-post_30.html' title='風雨無阻'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-385796653379455403</id><published>2011-08-29T08:07:00.005+08:00</published><updated>2011-09-07T08:54:25.777+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='教學影片'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows phone 7'/><title type='text'>[教學影片] Windows Phone 7 - 程式設計關鍵報告(104-105)</title><content type='html'>繼續放兩隻Windows Phone 7程式設計教育訓練短片。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=195"&gt;104 Launcher的使用 &lt;/a&gt;&lt;br /&gt;這支影片當中介紹的是Launcher與 Choosers的概念，以及如何透過叫用Launcher API在我們自己撰寫的App當中啟動手機內建的應用程式來達成特定的功能，例如傳送簡訊或撥打電話。比較特別的是，在Mango的版本當中，加入了ShareLinkTask，讓你的App可以輕易地送出訊息到FaceBook塗鴉牆或MSN的狀態上喔...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=196"&gt;105 Choosers的使用&lt;/a&gt;&lt;br /&gt;在這支影片當中，我們繼續討論了Chooser的使用，介紹系統中的Chooser種類，以及示範如何透過Save Ringtone Task將特定的音效檔案儲存到手機當作鈴聲，和如何透過PhoneNumberChooserTask的使用來取得手機通訊錄中特定人員的電話號碼...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-385796653379455403?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/385796653379455403/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=385796653379455403' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/385796653379455403'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/385796653379455403'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/08/windows-phone-7-104-105.html' title='[教學影片] Windows Phone 7 - 程式設計關鍵報告(104-105)'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-4248346074447154034</id><published>2011-08-26T12:33:00.004+08:00</published><updated>2011-09-13T10:17:34.511+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='教學影片'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows phone 7'/><title type='text'>[教學影片] Windows Phone 7 - 程式設計關鍵報告(101-103)</title><content type='html'>三隻適合Windows Phone 7程式設計初學者由淺入深的教育訓練短片。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=201"&gt;101 從基礎開始 &lt;/a&gt;&lt;br /&gt;從最基本的WP7應用程式設計開始，撰寫你的第一支WP7 App，內容包含如何透過Visual Studio 2010建立Windows Phone 7 App專案，建置與佈署到模擬器運行，WP7中基本的動畫設計概念，以及事件驅動程式設計...etc。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=202"&gt;102 ApplicationBar選單與顯示模式&lt;/a&gt;&lt;br /&gt;了解WP7當中的頁面架構，XAML的基本概念，控制項佈置位置，App顯示模式的改變，以及WP7當中相當重要的ApplicationBars介紹暨選單(MenuItem)與按鈕(IconButton)的設計。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=197"&gt;103 場景切換、面參數傳遞、與Back鈕&lt;/a&gt;&lt;br /&gt;如何設計多個畫面，並且在多個頁面當中進行切換呢? 多頁面時該如何傳遞或共用參數? 如何在切換頁面時加上自訂的特效動畫? 以及如何攔截Back鈕顯示提示訊息?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-4248346074447154034?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/4248346074447154034/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=4248346074447154034' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/4248346074447154034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/4248346074447154034'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/08/windows-phone-7.html' title='[教學影片] Windows Phone 7 - 程式設計關鍵報告(101-103)'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-5946715814468260132</id><published>2011-08-25T21:29:00.004+08:00</published><updated>2011-10-06T18:19:01.682+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='無關程式'/><category scheme='http://www.blogger.com/atom/ns#' term='心情'/><title type='text'>在努力背後...</title><content type='html'>&lt;span style="color: lime;"&gt;(後記：一個多月後, 10/6這天賈伯斯過世了...這篇文章中第一行的辭職，得改成辭世了。全球幾乎都一同哀悼賈伯斯的離開，並且深表不捨，Apple和Google的首頁也特別掛上或連結了賈伯斯的肖像以表追悼，肯定他一生的成就)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;聽到Steven Jobs辭職的消息，讓我有些感觸。&lt;br /&gt;&lt;br /&gt;在他經歷了那麼多的事情之後，阻止他繼續向前邁進的，不是外界競爭對手的攻擊、不是潮流趨勢的更替、不是資源或能力上的限制，而是他自己的身體!&lt;br /&gt;&lt;br /&gt;坦白說，一個在世代中如此具有影響力與領導特質的人，要能夠甘心停下腳步，其實相當不容易。我相信，在我們心裡，總是有一些夢想，對自己或未來的期待，隨時推動著我們往前邁進。年輕的時候，我參加TechED，坐在台下前幾排，認真地看著台上講師賣力的演出，我曾經想像過，如果有一天換我在台上，那會是怎樣的場景? 如今回想起來，感覺很遙遠，但記憶卻相當鮮明。&lt;br /&gt;&lt;br /&gt;在我中學的時代，那時候的資訊雜誌只有第三波，印象中我常常投稿，把磁片寄到雜誌社，參加雜誌上的程式設計比賽，想像著有朝一日，我是期刊專欄作者的心情。如果不是現在在寫這篇文章，我根本早已忘記曾經做過這些事情。現在想起來，我對這段回憶的感覺居然是一陣溫馨。&lt;br /&gt;&lt;br /&gt;好多年之後，小時候的夢想慢慢實現，但是我也逐漸發現，人生中最難的事情，不是拼命努力，不是隨波逐流，是如何在天平的兩頭當中拿捏出最適合自己的距離。&lt;br /&gt;&lt;br /&gt;回頭看賈伯斯，我不知道，他是否也覺得自己的一生意義非凡，我更加不確定，如果讓我選擇，他這樣的人生對我來說是否有吸引力。&lt;br /&gt;&lt;br /&gt;在這世界上許多努力奮鬥的國家當中，台灣人的工作時數和其他地區比起來算是很有得拚，我從退伍開始工作之後，就我印象所及，工作幾乎沒有間斷，35歲之前，一個工作接著一個，即便在新舊工作交替之際，也幾乎是立即銜接，沒有一刻喘息。&lt;br /&gt;&lt;br /&gt;在我的身邊，約莫和我同一期的朋友同學們，大多都是這樣拼命，冬天的時候天沒亮就出門，踏進園區的辦公大樓之後，像是跌入陷阱，沒到星月高掛不會看到回家的身影。直到結婚，小孩出生，才開始慢慢把時間留給家人，逐漸找回一些時間給自己。&lt;br /&gt;&lt;br /&gt;35歲像是一個分水嶺，35歲之前，最大的休閒，是喝著濃郁的咖啡寫程式，夜深了伴隨著廣播繼續努力；35歲之後，熬夜是留給年輕人的權利，節制是新發現的功課，還需要努力操練和學習。&lt;br /&gt;&lt;br /&gt;如果看這篇文章的你，還沒結婚，不到30，或許你還可以多加把勁，在你前面的前輩，當年付出的努力，和你比起來可能有過之而無不及；如果你和我一樣，慢慢的有了年紀，發現身體似乎也得好好顧惜，而且還得留一些生命給自己，不妨開始再多花點時間和家人朋友聚聚，新的技術如此生生不息，資訊界沒有我們還是會繼續...&lt;br /&gt;&lt;br /&gt;在努力背後，我盡可能凡事盡心盡力，最終的結果交給上帝。畢竟，人生價值的定義，肯定不止工作成就而已...&lt;br /&gt;&lt;br /&gt;&lt;object style="height: 390px; width: 640px;"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Ip0hG7FXVgs?version=3"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/Ip0hG7FXVgs?version=3" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="390"&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;10/6 追悼賈伯斯&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-puN1L6EWHwk/To1_HxqU5TI/AAAAAAAAA20/gsnMuGKuH2o/s1600/Untitled+-+1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="344" kca="true" src="http://4.bp.blogspot.com/-puN1L6EWHwk/To1_HxqU5TI/AAAAAAAAA20/gsnMuGKuH2o/s640/Untitled+-+1.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-5946715814468260132?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/5946715814468260132/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=5946715814468260132' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/5946715814468260132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/5946715814468260132'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/08/blog-post_25.html' title='在努力背後...'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-puN1L6EWHwk/To1_HxqU5TI/AAAAAAAAA20/gsnMuGKuH2o/s72-c/Untitled+-+1.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-3909394868916795848</id><published>2011-08-24T10:40:00.003+08:00</published><updated>2011-08-24T14:14:20.659+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='軟體開發'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>持續地改變是必然的趨勢...</title><content type='html'>大多是不想寫程式，不願意寫規格書，沒精神寫企劃案的時候，我才會寫文章。&lt;br /&gt;&lt;br /&gt;不過最近，在FB上看到一篇文章，主要是提到Silverlight技術的目前狀況，以及與未來HTML5之間的一些問題，還有未來開發技術云云。最近半年看到很多這樣的文字或報導，也有不少學員詢問，所以有感而發。&lt;br /&gt;&lt;br /&gt;說真的，大夥，別再問這個問題了，原因很簡單，就是展示層技術的改變根本就是必然的趨勢。(相信我，這還不是軟體開發趨勢裡面最讓人感到痛苦、悲憤、無奈、沮喪的一塊...那David言下之意，還有其他讓人更嘔的地方嗎? 當然有，還多著呢，以後有空再說)&lt;br /&gt;&lt;br /&gt;前陣子上課，和學員聊到分散式應用程式開發，說到一個結論：『在商業應用程式開發當中，越沒有UI的程式越值錢!』&lt;br /&gt;&lt;br /&gt;學員臉上泛起疑惑和不太相信的目光，我隨即解釋，你看過SQL Server吧，看過Skype，看過MSN，難寫的是MSN Server, 還是MSN UI? 有技術難度的是Skype Server, 還是Skype Client,&amp;nbsp;真正賣錢的是SQL Server的Services，還是SQL Server的Management Studio?&lt;br /&gt;&lt;br /&gt;這就是啦，你寫的不是Game，那就讓我告訴你，在商業應用程式的世界裡面，UI是不值錢的，UI可以是賣點，但常常不是成交的關鍵，UI可以是客戶嫌棄你的理由，但UI不是會讓客戶付你多一點錢的原因。&lt;br /&gt;&lt;br /&gt;過去這20年， UI層開發技術是一變再變的，從DOS的文字畫面，到Windows的GUI，到後來的Web UI，乃至於現在的WPF/Silverlight/Multi-Touch，這一路上的改變沒在少的，而且趨勢是改變的速度越來愈快，改變的幅度越來越大。&lt;br /&gt;&lt;br /&gt;也因此，每當我聽到學員感嘆某些展示層的開發技術改變太快，我就很擔心，大夥把焦點放錯位置了，UI從來不是一套軟體(或專案)成功的關鍵，UI只是你跟客戶表演時候吸引人目光的火花，有時候不同的客戶你還得放不同種類的煙火(平板? 行動? PC? Web? Windows? RIA?)，才會得到你想要的效果。&lt;br /&gt;&lt;br /&gt;過去這十多年的展示層開發技術，有哪一些可以沿用或重用的? 其實少之又少，先不管是否component可以reuse, 連source code要拿來reuse都很困難。所以，最理想的展示層技術是什麼? 是不要寫。或是我講一講就出來(例如，我說，要有選單，選單就出現；給我來個master-details維護畫面，畫面就誕生)，當然這種技術目前還沒出來(但星艦迷航記裡面有，所以我相信不久以後一定會有)。&lt;br /&gt;&lt;br /&gt;展示層技術是你的操作介面，操作介面不負責核心的運算，大部分分散式應用程式的核心運算都在伺服器端，這也是真正賣客戶比較值錢的地方，至於過去選擇Windows/Web，現在使用Silverlgiht，以後要變成什麼技術，相信我，都無所謂的，因為未來3-5年一定會變...&lt;br /&gt;&lt;br /&gt;1995年之前，我們用文字畫面做出來一堆App&lt;br /&gt;1995年到2002年，我們用Windows模式做出來一堆App&lt;br /&gt;2002年到2007年，我們開始走Web模式&lt;br /&gt;2007年到現在，我們上了 RIA(Rich Internet Applicatiion)&lt;br /&gt;現在到未來，我們還要掙扎在多種不同的展示層開發技術與應用平台之間...&lt;br /&gt;&lt;br /&gt;但是, 請記得，上面這些都不是一套真正有價值的軟體賣錢的關鍵，因此，也別太執著了。如果可以，多花點時間在值錢的地方，至於UI，當然也很重要，但當你時間有限時，取捨就是一門藝術了。&lt;br /&gt;(BTW, 請注意，UI跟使用者體驗有關，但不絕對有關~)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-3909394868916795848?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/3909394868916795848/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=3909394868916795848' title='6 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/3909394868916795848'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/3909394868916795848'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/08/blog-post.html' title='持續地改變是必然的趨勢...'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-3680664354926674332</id><published>2011-07-23T13:40:00.000+08:00</published><updated>2011-07-23T13:40:09.826+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='心情'/><title type='text'>跑了很多年的PC, 也有停下休息的時候...</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://album.udn.com/community/img/PSN_PHOTO/tchcvsdp/f_2470381_1.jpg" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://album.udn.com/community/img/PSN_PHOTO/tchcvsdp/f_2470381_1.jpg" t$="true" width="231" /&gt;&lt;/a&gt;&lt;/div&gt;最近，一本伴隨著許多技術人員從小看到大的資訊期刊決定併刊了，未來技術相關的主要內容將會調整為在線上以電子方式呈現。雖然這個改變不是很令人意外，但多少也讓我覺得有些感慨。&lt;br /&gt;&lt;br /&gt;知道這個消息，是在我上個月旅遊的途中。本來打算回來寫篇文紀念一番，但是礙於許多原因，最後沒有提筆，現在寫在這裡，多少也是因為木已成舟，所以留個紀錄而已。&lt;br /&gt;&lt;br /&gt;在旅途當中，我不只收到這個消息，另一件事情也讓我頗為感慨的，是一位出版界奮鬥已久、過去的合作夥伴，也在最近準備轉換戰場，我想多多少少，也都跟目前資訊出版市場的狀況有關。&lt;br /&gt;&lt;br /&gt;這幾年的出版當然跟過去不可同日而語，就像這幾天看FaceBook中朋友們的留言，提到：『跑電腦現在需要換個場地跑，大家也知道現在&lt;wbr&gt;&lt;/wbr&gt;​電腦不夯了，可能要跑平板之類的...』資訊技術是應用科學，內容隨著時間更迭並不新鮮稀奇，最近幾年的媒體和出版生態丕變，連報社都能一夕之間改弦易轍，或有換老闆經營者，更何況我們這個更加小眾市場的媒體呢?&lt;br /&gt;&lt;br /&gt;過去一本資訊圖書的出版，可以帶領許多讀者踏入這個充滿願景的工作領域；或是幫助技術人員建構養成觀念；或是激發開發人員的創意。隨著這幾年網路的盛行、大陸同胞們在資訊技術上的崛起、資訊產品的生命週期縮短、全球化市場競爭的衝擊、技術從業人員的獲利能力也跟著降低。&lt;br /&gt;&lt;br /&gt;一層層連鎖反應的影響，出版市場雖是衝擊的末端，但改變卻也來的快速而堅定。&lt;br /&gt;&lt;br /&gt;當然，伴隨著資訊環境與電子產品的進步，開發技術的傳遞方式理所當然地也應該走向現今各樣的主流趨勢，以最短的時間將重點透過各樣的手持行動裝置與平台推送給大家，結合社群傳播的力量，以另一種面貌出現在讀者的面前。這個，似乎才是出版從業人員在感嘆之餘得要繼續深思而努力的方向...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-3680664354926674332?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/3680664354926674332/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=3680664354926674332' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/3680664354926674332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/3680664354926674332'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/07/pc.html' title='跑了很多年的PC, 也有停下休息的時候...'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-7779441462520586999</id><published>2011-07-20T07:49:00.000+08:00</published><updated>2011-07-20T07:49:03.351+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows phone 7'/><title type='text'>WP7同步時Zune發生錯誤 - c00d11e4 (800c000e)</title><content type='html'>用了WP7很長一段時間，隨著手機連續幾次的更新，整個WP7的表現越來越貼近甚至超越我的期待，也因此使用的時間越來越高。&lt;br /&gt;&lt;br /&gt;WP7的手機在拍照或錄影之後，都可以隨時自動update到SkyDrive，這是一個相當方便的設計，對於慣於使用網路的用戶來說，相當的便利。&lt;br /&gt;&lt;br /&gt;不過，總是有一些時候，我們希望把照片資料同步到PC上，這時候PC的Zune軟體就發揮了功能。但不知道從何時開始，我的 WP7接上Zune的時候，一直有一些問題無法同步，收到底下的錯誤訊息...&lt;br /&gt;&lt;br /&gt;c00d11e4 (800c000e)&lt;br /&gt;&lt;br /&gt;一直不以為意，反正可以從網路上(SkyDrive)再抓下來，但今天心血來潮試著解決這個問題，後來上網搜尋，發現原因似乎是安裝了Ulead的軟體之後，會把底下機碼：&lt;br /&gt;HKEY_CLASSES_ROOT\.jpg&lt;br /&gt;的default直改為 PV85.Image&lt;br /&gt;導致無法Sync同步，重新改回jpegfile之後，我的Zune和WP7終於又可以順利地同步照片囉。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;jpegfile&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-7779441462520586999?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/7779441462520586999/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=7779441462520586999' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/7779441462520586999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/7779441462520586999'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/07/wp7zune-c00d11e4-800c000e.html' title='WP7同步時Zune發生錯誤 - c00d11e4 (800c000e)'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-7752495018313333028</id><published>2011-07-11T09:16:00.006+08:00</published><updated>2011-07-11T17:29:09.053+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows phone 7'/><title type='text'>在Windows Phone 7當中撰寫導航程式WP7 SDK 7.1 (Mango)</title><content type='html'>這次微軟算是卯上了全力。&lt;br /&gt;&lt;br /&gt;最近在測試Mango新的SDK，說真的，有了中文輸入的手機，整個使用起來果真是脫胎換骨，感覺完全不同。再加上7.1增加的API, 讓整台手機如虎添翼。&lt;br /&gt;&lt;br /&gt;例如，在API當中增加了BingMapsDirectionsTask，讓開發人員可以不費吹灰之力寫出導航的功能，底下這段影片展示了實際操作的過程，你會發現，導航功能很清楚的引導了使用者每一個轉折點的動向，除了對台灣人來說目前地圖是英文的有點遺憾之外，整個導航功能實在是相當完整了：&lt;br /&gt;&lt;iframe width="425" height="349" src="http://www.youtube.com/embed/B2_xFH10vbo?hl=zh&amp;fs=1" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;而這樣的導航程式要如何寫呢? 就底下這樣：&lt;br /&gt;&lt;pre class="brush:c-sharp"&gt;//建立BingMapsDirectionsTask &lt;br /&gt;Microsoft.Phone.Tasks.BingMapsDirectionsTask dt = new Microsoft.Phone.Tasks.BingMapsDirectionsTask();&lt;br /&gt;//設定起點(使用當前手機所在位置CurrentCO當作起始座標)&lt;br /&gt;dt.Start = new Microsoft.Phone.Tasks.LabeledMapLocation( "Start", CurrentCO);&lt;br /&gt;//取得使用者在ListBox中選擇的終點座標&lt;br /&gt;aRock.Google.Location.GeoResult po = this.listBox1.SelectedItem as aRock.Google.Location.GeoResult;&lt;br /&gt;//設定終點&lt;br /&gt;dt.End = new Microsoft.Phone.Tasks.LabeledMapLocation("Target", new GeoCoordinate(double.Parse(po.lat), double.Parse(po.lng)));&lt;br /&gt;//顯示導航畫面...&lt;br /&gt;dt.Show();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;開發人員只需要使用 BingMapsDirectionsTask , 傳入開始和結束的兩個座標點, 調用show()方法，一切搞定，任何人都可以寫出導航功能的手機電子地圖程式了。&lt;br /&gt;&lt;br /&gt;而且，這只是WP7.1(Mango)當中的一個小功能，還有其他近千個新的API, 看了這些之後，是不是一掃過去您對Windows Phoen銷量的擔憂? 再加上中文輸入功能，接下來恐怕手機要奇貨可居了。&lt;br /&gt;BTW, 地圖是英文的? Nokia都要把OVI Map貢獻出來了，你還擔心沒有在地的圖資嗎?&lt;br /&gt;&lt;br /&gt;&lt;iframe allowtransparency="allowtransparency" frameborder="0" id="fbLike" scrolling="no" src="" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; height: 65px; overflow: hidden; width: 350px;"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href="http://www.facebook.com/sharer.php" name="fb_share" type="button_count"&gt;分享&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-7752495018313333028?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/7752495018313333028/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=7752495018313333028' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/7752495018313333028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/7752495018313333028'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/07/windows-phone-7wp7-sdk-71-mango.html' title='在Windows Phone 7當中撰寫導航程式WP7 SDK 7.1 (Mango)'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/B2_xFH10vbo/default.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-7267810928785314201</id><published>2011-07-02T13:36:00.002+08:00</published><updated>2011-07-11T09:18:58.440+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows phone 7'/><title type='text'>Windows Phone 7.1 SDK beta 2</title><content type='html'>本來最近實在很忙，沒啥時間測試新東西，況且 Windows Phone 7.1 SDK beta 根本才出來沒多久，beta2會有那些新功能? 不過今天剛好整理機器，想說順手安裝一下，不測還好，測了之後發現不寫一篇Blog紀念一下不行...&lt;br /&gt;&lt;br /&gt;首先...Beta2的SDK中，模擬器整個變快了，比起beta時候的速度要快了不少，如果你在MS Developer Day 2011 中，曾經聽過我介紹 WP 7.1 SDK 的模擬器，當時的模擬器坦白說稍微慢了一點， 可能beta2當中做了一些優化，主觀上感覺快很多...&lt;br /&gt;&lt;br /&gt;不過...更重要的來了...beta2模擬器中居然開始支援中文手寫輸入, 這讓您有機會一窺Mango中的中文手寫輸入風采...影片在底下...喜歡就按個讚吧~&lt;br /&gt;&lt;iframe width="425" height="349" src="http://www.youtube.com/embed/2SlFhTIHkrU?hl=zh&amp;fs=1" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;WP7.1 SDK Beta2 &lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;id=26648"&gt;下載位置&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe allowtransparency="allowtransparency" frameborder="0" id="fbLike" scrolling="no" src="" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; height: 65px; overflow: hidden; width: 350px;"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href="http://www.facebook.com/sharer.php" name="fb_share" type="button_count"&gt;分享&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-7267810928785314201?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/7267810928785314201/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=7267810928785314201' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/7267810928785314201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/7267810928785314201'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/07/windows-phone-71-sdk-beta-2.html' title='Windows Phone 7.1 SDK beta 2'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/2SlFhTIHkrU/default.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-5893271977101981559</id><published>2011-06-22T09:07:00.000+08:00</published><updated>2011-06-22T09:07:34.124+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='研討會'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows phone 7'/><title type='text'>如何安裝與使用Code Snippet</title><content type='html'>在昨天的研討會中，Live Demo的部分，為了節省Key程式碼的時間，我把常用的WP7.1 API部分的功能整理成了Code Snippet(程式碼片段)，這是Visual Studio中非常貼心的設計，讓開發人員的創作速度大增，且相對提高了Coding的正確性。&lt;br /&gt;&lt;br /&gt;研討會中Demo的WP7.1的CodeSnippet整理如下：[&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=184"&gt;下載&lt;/a&gt;] &lt;br /&gt;&lt;br /&gt;使用方法教學影片:&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Oayg0lyd2eE?hl=zh&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/Oayg0lyd2eE?hl=zh&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-5893271977101981559?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/5893271977101981559/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=5893271977101981559' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/5893271977101981559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/5893271977101981559'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/06/code-snippet.html' title='如何安裝與使用Code Snippet'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-1529924121096589262</id><published>2011-06-21T14:43:00.004+08:00</published><updated>2011-06-21T21:10:55.258+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='研討會'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows phone 7'/><title type='text'>微軟 Microsoft Developer Day 2011 ...</title><content type='html'>&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/hV7PwKOEhTE?hl=zh&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/hV7PwKOEhTE?hl=zh&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;很感謝大家今天熱情參與微軟 Microsoft Developer Day 2011 ...&lt;br /&gt;今天提到的Mango SDK可從&lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=77586864-ab15-40e1-bc38-713a95a56a05&amp;amp;displaylang=en"&gt;此處&lt;/a&gt;下載。&lt;br /&gt;&lt;br /&gt;今天的投影片可從&lt;a href="http://blog.studyhost.com/BlogData/20110621/Microsoft%202011DeveloperDayWp7Slides-WP7%20Mango%20SDK%20-%20Public.pptx"&gt;此處&lt;/a&gt;下載。&lt;br /&gt;相關的範例展示影片可參考&lt;a href="http://blog.studyhost.com/BlogData/20110621/examples.html"&gt;此頁面&lt;/a&gt;。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-1529924121096589262?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/1529924121096589262/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=1529924121096589262' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/1529924121096589262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/1529924121096589262'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/06/2011-developer-day.html' title='微軟 Microsoft Developer Day 2011 ...'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-1734281688191056112</id><published>2011-06-13T09:40:00.001+08:00</published><updated>2011-06-13T09:41:03.204+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VS2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual basic'/><title type='text'>Visual Studio 中，VB開發人員熟悉的Shift-F2與Ctrl-Shift-F2</title><content type='html'>如果你和我一樣，過去是寫了很多年的VB開發人員(雖然現在多半寫C#, 但我還是很熱愛VB)，你應該很熟悉兩個hot key, Shift-F2(跳入特定的Method), 以及Ctrl-Shift-F2(返回原位置)，這兩個Hot key對於程式開發的效率有著莫大的幫助。&lt;br /&gt;&lt;br /&gt;到了C#開發環境，這兩個Hot-Key不見了，找了一陣子，終於發現這兩個HotKey分別是 Edit.GoToDefinition：&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-mAQxpXexppg/TfVphEB0QXI/AAAAAAAAA2M/xtndFpI3tyQ/s1600/80eaf3f3-9eff-4478-bee2-5e3c355f937f.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="245" src="http://3.bp.blogspot.com/-mAQxpXexppg/TfVphEB0QXI/AAAAAAAAA2M/xtndFpI3tyQ/s400/80eaf3f3-9eff-4478-bee2-5e3c355f937f.jpg" t8="true" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;﻿與View.NavigateBackward，&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-K8CKIRUmI5M/TfVqQI2_XmI/AAAAAAAAA2U/thkZ-Js0c38/s1600/dbdbd5a4-73ee-45f6-b0f4-5a379b9e14b6.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="245" src="http://2.bp.blogspot.com/-K8CKIRUmI5M/TfVqQI2_XmI/AAAAAAAAA2U/thkZ-Js0c38/s400/dbdbd5a4-73ee-45f6-b0f4-5a379b9e14b6.jpg" t8="true" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;透過VS2010的Option-&amp;gt;Environment-&amp;gt;Keyboard就可以設定了。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-1734281688191056112?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/1734281688191056112/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=1734281688191056112' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/1734281688191056112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/1734281688191056112'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/06/visual-studio-vbshift-f2ctrl-shift-f2.html' title='Visual Studio 中，VB開發人員熟悉的Shift-F2與Ctrl-Shift-F2'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-mAQxpXexppg/TfVphEB0QXI/AAAAAAAAA2M/xtndFpI3tyQ/s72-c/80eaf3f3-9eff-4478-bee2-5e3c355f937f.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-3952036337693544377</id><published>2011-06-11T23:39:00.003+08:00</published><updated>2011-06-11T23:46:22.209+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Multi-Touch'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>Silverlight 4 ListBox Gesture 手勢捲動功能</title><content type='html'>由於最近我們公司，配合下半年度平板電腦的火熱上市，整個將透過Silverlight開發的產品或功能都一律加上Gesture的支援。這讓Silverlight所開發出來的App，跑在目前坊間的Win7平板上所呈現出的效果比起iPad或Android上的App一點都不遜色且有過之而無不及。&lt;br /&gt;&lt;br /&gt;然而Silverlight 4不像WP7那麼好命，每一個ListBox或具有卷軸的控制項(例如ScrollViewer)都內建支援Gesture的功能，因此即便跑在平板電腦上，ListBox都需要用卷軸拖曳的方式來捲動，但明明Silverlight就支援Gesture，不能用手勢捲動ListItem似乎有些遜色。&lt;br /&gt;&lt;br /&gt;因此我在網路上找到了這組好用的Behavoir...&lt;br /&gt;&lt;a href="http://lighttouch.codeplex.com/"&gt;http://lighttouch.codeplex.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;下載之後，在你的專案中引用底下幾個.dll即可。&lt;br /&gt;Wintellect.Touch.dll &lt;br /&gt;System.Windows.Interactivity.dll&lt;br /&gt;System.Windows.Input.Manipulations.dll&lt;br /&gt;&lt;br /&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;如果你想要將ListBox加上Gesture功能，只需要把ListBoxTouchScrollBehavior拖曳到ListBox上：&lt;/div&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-zYE2sPH14xc/TfOD6xIoOqI/AAAAAAAAA2A/usHLqaMQoo8/s1600/9e0419e3-2326-40ce-9f5f-675903ff78a1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="233" src="http://2.bp.blogspot.com/-zYE2sPH14xc/TfOD6xIoOqI/AAAAAAAAA2A/usHLqaMQoo8/s400/9e0419e3-2326-40ce-9f5f-675903ff78a1.jpg" t8="true" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: left;"&gt;接著，幫ListBox設計一個ItemPanel，例如(關鍵在GestureListener)，完成後大致如下：﻿&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-s4LTNb1GEAg/TfOI0AzKX1I/AAAAAAAAA2E/tF5qle9btrU/s1600/a851ab4b-9e7d-4bfe-b732-4e1eb52754d6.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="183" src="http://1.bp.blogspot.com/-s4LTNb1GEAg/TfOI0AzKX1I/AAAAAAAAA2E/tF5qle9btrU/s400/a851ab4b-9e7d-4bfe-b732-4e1eb52754d6.jpg" t8="true" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;最後，幫ListBox的設計一個包含GestureListener Behavior的ItemTemplate即可：&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-REfn-0PRdsI/TfOJP8RziaI/AAAAAAAAA2I/31cleRxFWD8/s1600/016d5a20-b292-4cc6-9fbc-450b351dab5a.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="186" src="http://4.bp.blogspot.com/-REfn-0PRdsI/TfOJP8RziaI/AAAAAAAAA2I/31cleRxFWD8/s400/016d5a20-b292-4cc6-9fbc-450b351dab5a.jpg" t8="true" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;你可以從底下這邊看到預覽的效果：&lt;br /&gt;&lt;a href="http://blog.studyhost.com/BlogData/20110611/SilverlightApplication9TestPage.html"&gt;blog.studyhost.com/BlogData/20110611/SilverlightApplication9TestPage.html&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&lt;iframe width=300 height=300 src=http://blog.studyhost.com/BlogData/20110611/SilverlightApplication9TestPage.html &gt;&lt;/iframe&gt;&lt;br /&gt;你會發現，如果你有支援Multi-Touch的顯示器或是Win7平板電腦，整個手勢拖曳的動作非常順暢，即便你沒有多點觸控設備，這個.dll也支援用滑鼠模擬Gesture，算是挺不錯的設計。&lt;br /&gt;&lt;br /&gt;完整的範例程式碼可參考&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=177"&gt;這裡&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;&lt;iframe allowtransparency="allowtransparency" frameborder="0" id="fbLike" scrolling="no" src="" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; height: 65px; overflow: hidden; width: 350px;"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href="http://www.facebook.com/sharer.php" name="fb_share" type="button_count"&gt;分享&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-3952036337693544377?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/3952036337693544377/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=3952036337693544377' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/3952036337693544377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/3952036337693544377'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/06/silverlight-4-listbox-gesture.html' title='Silverlight 4 ListBox Gesture 手勢捲動功能'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-zYE2sPH14xc/TfOD6xIoOqI/AAAAAAAAA2A/usHLqaMQoo8/s72-c/9e0419e3-2326-40ce-9f5f-675903ff78a1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-2427213558062431354</id><published>2011-06-09T10:55:00.004+08:00</published><updated>2011-06-09T11:07:29.131+08:00</updated><title type='text'>Windows Phone 7 - Mango (sdk 7.1 beta) First Look - secondary Tile 自訂動態方塊磚</title><content type='html'>新的Mango，有許多好用的新功能，當然，承襲著Windows Phone 7獨樹一格的UI設計，動態磚早已深受好評，而Mango SDK中動態磚的控制功能當然就是開發人員期待已久的。&lt;br /&gt;&lt;br /&gt;過去動態磚之所以這麼命名，就是因為他能動，但過去要能動，似乎要耍點特權，我們第三方應用程式，不僅動態磚非得配合Notification，而且還沒有那種很炫的動態效果，似乎有點差強人意。&lt;br /&gt;&lt;br /&gt;在這個版本， 終於，我們可以寫出會動的方塊磚了，而且，還可以一次產生多個，我們甚至可以讓每一個動態磚，在被點選的時候帶入不同的參數到我們所撰寫的程式中：&lt;br /&gt;&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/YNkGRu2DAzE?hl=zh&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/YNkGRu2DAzE?hl=zh&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;怎麼做的呢?&lt;br /&gt;主要的API在Microsoft.Phone.Shell命名空間，開發人員可以透過底下的程式碼來建立自己的方塊磚：&lt;br /&gt;&lt;pre class="brush:c-sharp"&gt;//方塊磚資料&lt;br /&gt;            StandardTileData NewTileData = new StandardTileData&lt;br /&gt;            {&lt;br /&gt;                BackgroundImage = new Uri("/Images/People.png", UriKind.Relative),&lt;br /&gt;                Title = "方塊磚",&lt;br /&gt;                Count = int.Parse(textBox2.Text),&lt;br /&gt;                BackTitle = "參數是" + this.textBox1.Text,&lt;br /&gt;                BackContent = "方塊磚的背面",&lt;br /&gt;                BackBackgroundImage = new Uri("/Images/PeopleSay.png", UriKind.Relative)&lt;br /&gt;            };&lt;br /&gt;&lt;br /&gt;            // 建立方塊磚&lt;br /&gt;            ShellTile.Create(new Uri("/MainPage.xaml?TileID="+this.textBox1.Text, UriKind.Relative), NewTileData);&lt;/pre&gt;&lt;br /&gt;方塊磚依照Create()方法所傳入的NavigationURL來做區隔，動態磚資訊的描述則是透過上面程式碼當中StandardTileData這個物件來決定。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;每個方塊磚在點選的時候，可以帶入不同的參數，你會看到我們的範例中，可以在主頁面依序產生多個不同的方塊磚，每個方塊磚都可以有各自的背景圖，和動態背面背景圖與提示文字。 &lt;br /&gt;&lt;br /&gt;這種用程式碼產生的動態方塊磚我們稱之為 &lt;span class="parameter"&gt;&lt;em&gt;&lt;strong&gt;Secondary Tile, &lt;/strong&gt;&lt;/em&gt;而傳統的方塊磚(使用者自己按著App然後Pin到Start主畫面中的，我們稱之為&lt;strong&gt;&lt;em&gt;Application Tile&lt;/em&gt;。&lt;/strong&gt;&lt;/span&gt;，後面再為大家介紹更多的內容。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;廣告一下...更多相關的內容與範例，可以參加Microsoft 2011 Developer Day... &lt;br /&gt;&lt;a href="http://www.bnext.com.tw/edm/2011Developer/index.html"&gt;http://www.bnext.com.tw/edm/2011Developer/index.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe allowtransparency="allowtransparency" frameborder="0" id="fbLike" scrolling="no" src="" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; height: 65px; overflow: hidden; width: 350px;"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href="http://www.facebook.com/sharer.php" name="fb_share" type="button_count"&gt;分享&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-2427213558062431354?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/2427213558062431354/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=2427213558062431354' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/2427213558062431354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/2427213558062431354'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/06/windows-phone-7-mango-sdk-71-beta-first.html' title='Windows Phone 7 - Mango (sdk 7.1 beta) First Look - secondary Tile 自訂動態方塊磚'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-1119685035317390034</id><published>2011-06-08T23:11:00.004+08:00</published><updated>2011-06-08T23:27:29.394+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>還真的有Bug...</title><content type='html'>故事是這樣的...&lt;br /&gt;&lt;br /&gt;我們公司寫的Silverlight應用程式在正式上線後，客戶用得很開心，對於這個技術和開發人員的努力頗有好評，正當我們被客戶讚的輕飄飄，準備明天跟客戶端的老大demo的時候，前線傳來一個令人錯愕的消息...&lt;br /&gt;&lt;br /&gt;用我們寫應用程式的電腦會當...在客戶端3台不同的電腦測試，就像機器得了機瘟一樣，早上還OK，突然間下午全當了，只要進入某一個畫面之後, IE就當給你看，Chrome也死給你看，FireFox就懶得測了。&lt;br /&gt;&lt;br /&gt;Demo在即，碰到這種事情，非出面不可了...詭異的是，在家裡連到客戶端的網站，一切OK，我們公司沒有一台機器有問題，都算是很順，只好去客戶那邊看看。到了客戶端，正如客戶所說，沒有一台電腦能夠正常執行，而且客戶強調，早上還OK，就到下午，全不能動了...&amp;gt;_&amp;lt;&lt;br /&gt;&lt;br /&gt;這...也太誇張了吧。&lt;br /&gt;&lt;br /&gt;測試結果正如客戶所說，很清楚明顯的Run Silverlight的瀏覽器就是卡在那邊不動。&lt;br /&gt;那...到底在run什麼呢? 看不太出來，因為我們知道程式碼只是call一個WCF Services，並且把一堆字串傳到用戶端。當然，我們懷疑過字串的大小，但經過測試，其實才幾十k，比圖片小多了。況且早上都還OK，怎麼下午就不能動了，碰到網路傳輸瓶頸也不會這樣才對。&lt;br /&gt;&lt;br /&gt;更詭異的是，如果有資料傳輸的瓶頸，那為何在我們公司OK呢?&lt;br /&gt;CPU / RAM / GPU / intranet performance 都測過之後，突然間想到，似乎客戶端所有的PC都是XP，而我們公司所有的PC都是Win7...&lt;br /&gt;&lt;br /&gt;果然，在客戶端換了Win7之後，一切正常，回公司換了XP之後，IE當掉。同樣的一段code，怎麼會這樣呢?到底是什麼code有這麼大的魔力...答案如下：&lt;br /&gt;&lt;pre class="brush:c-sharp"&gt;if(arg.Result.IndexOf("Info")==0) return; &lt;br /&gt;&lt;/pre&gt;arg.Result是一個string, 如果有經驗的Silverlight developer應該猜的到，這是WCF Services的回傳值，很單純，內容就是字串。&lt;br /&gt;&lt;br /&gt;那為何會讓XP當掉呢?又為何Win7沒事呢...答案是...我也不知道...不過好在我不是第一個碰到這個問題的人...請參考底下...&lt;br /&gt;&lt;a href="http://connect.microsoft.com/VisualStudio/feedback/details/615069/silverlight-4-code-using-indexof-startswith-endswith-default-overloads-very-slow-for-xp-browsers"&gt;http://connect.microsoft.com/VisualStudio/feedback/details/615069/silverlight-4-code-using-indexof-startswith-endswith-default-overloads-very-slow-for-xp-browsers&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/629358/performance-problem-string-indexof-and-string-startswith"&gt;https://connect.microsoft.com/VisualStudio/feedback/details/629358/performance-problem-string-indexof-and-string-startswith&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;今天碰到這個問題，我們還沒有時間去找微軟是否已經提出了解決方案(或是SL5才會修正)，但先列出來提供開發人員參考，也作為紀念，而我們的AP當然先workaround了，畢竟本來的寫法也不是個很有效率的做法，倒是Silverlight會有這個問題頗讓人訝異的。&lt;iframe allowtransparency="allowtransparency" frameborder="0" id="fbLike" scrolling="no" src="" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; height: 65px; overflow: hidden; width: 350px;"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href="http://www.facebook.com/sharer.php" name="fb_share" type="button_count"&gt;分享&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-1119685035317390034?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/1119685035317390034/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=1119685035317390034' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/1119685035317390034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/1119685035317390034'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/06/bug.html' title='還真的有Bug...'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-6738044178009520097</id><published>2011-06-04T16:45:00.001+08:00</published><updated>2011-06-04T16:46:39.225+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual basic'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='LINQ'/><title type='text'>LinqToSql 範例</title><content type='html'>前幾天在上課的時候，提到了微軟的ORM技術，當然談到了LinqToSql和ADO.NET EF。&lt;br /&gt;&lt;br /&gt;過去習慣在.NET 2.0開發應用程式的學員們，自然對Linq語法不是很熟悉，但坦白說，一開始我也很不習慣，但改用Linq一段時間之後，開發速度確實提高了很多，很自然的，現在幾乎不管寫哪一種Code(SL, ASP.NET, class...etc)我依舊都會用到Linq...&lt;br /&gt;&lt;br /&gt;連去學校上課也都捨棄ADO.NET直接教Linq，原因是，大一大二的學生，在具備了基本的OO概念之後，要存取資料庫，以Linq搭配ORM，可以省去了學習SQL語法的動作。&lt;br /&gt;&lt;br /&gt;前幾天學員問到了Linq的語法實在不是很熟，例如Join怎麼下呢? 如何取得Max或avg呢?，有沒有可以參考的網頁，當然有，就在這裡了...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/vcsharp/aa336746"&gt;http://msdn.microsoft.com/en-us/vcsharp/aa336746&lt;/a&gt;&amp;nbsp;(C#)&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/vbasic/bb688085"&gt;http://msdn.microsoft.com/en-us/vbasic/bb688085&lt;/a&gt;&amp;nbsp;(VB)&lt;br /&gt;&lt;br /&gt;&lt;iframe allowtransparency="allowtransparency" frameborder="0" id="fbLike" scrolling="no" src="" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; height: 65px; overflow: hidden; width: 350px;"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href="http://www.facebook.com/sharer.php" name="fb_share" type="button_count"&gt;分享&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-6738044178009520097?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/6738044178009520097/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=6738044178009520097' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/6738044178009520097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/6738044178009520097'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/06/linqtosql.html' title='LinqToSql 範例'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-5076491061586682462</id><published>2011-05-26T08:45:00.006+08:00</published><updated>2011-05-26T16:23:54.588+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows phone 7'/><title type='text'>Windows Phone 7 - Mango (sdk 7.1 beta) First Look</title><content type='html'>你大概已經知道微軟準備釋出Mango了，前天微軟開了記者會，昨天連台灣的新聞播報了不短的時間(不過不少新聞是做成芒果挑戰蘋果之類的詭異比較...)。&lt;br /&gt;&lt;br /&gt;微軟說芒果這個新版的Windows Phone 7作業系統有超過500項新的功能，上千個API可以讓開發人員使用，那到底有那些東西呢? 我們在發表會後立刻下載了新版(7.1 beta)的 SDK+模擬器(對，正式的芒果恐怕要秋天才能吃到)進行了 firs look test...&lt;br /&gt;&lt;br /&gt;初步的嘗試，測試了模擬器的重要更新，錄成了底下的影片，沒有聲音，大家慢慢安靜欣賞...&lt;br /&gt;&lt;a href="http://mediaserver1.studyhost.com/Video/WP7/Mango7.1/MangoFirstLook.wmv"&gt;http://MediaServer1.studyhost.com/Video/WP7/Mango7.1/MangoFirstLook.wmv&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;我寫了三個測試App, 主要是，你會看到底下功能:&lt;br /&gt;1.原生的中文輸入(手寫尚未出現)&lt;br /&gt;2.模擬器支援accelerometer，可以模擬手機的傾斜度狀況&lt;br /&gt;3.模擬器支援GPS，可以模擬手機的移動(這個有趣)&lt;br /&gt;4.支援多工可以在手機上切換多個App(多工的部分模擬器還沒有100%支援，UI有點小醜)&lt;br /&gt;模擬器的新功能讓開發人員可以更方便的測試你的App, 整個方便不少, 晚一些再介紹一些重要的API...&lt;br /&gt;&lt;br /&gt;7.1 beta版的SDK在這裡...&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=77586864-ab15-40e1-bc38-713a95a56a05&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/en/details.aspx?FamilyID=77586864-ab15-40e1-bc38-713a95a56a05&amp;amp;displaylang=en&lt;/a&gt;&lt;br /&gt;enjoy it...&lt;br /&gt;&lt;iframe allowtransparency="allowtransparency" frameborder="0" id="fbLike" scrolling="no" src="" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; height: 65px; overflow: hidden; width: 350px;"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href="http://www.facebook.com/sharer.php" name="fb_share" type="button_count"&gt;分享&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-5076491061586682462?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/5076491061586682462/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=5076491061586682462' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/5076491061586682462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/5076491061586682462'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/05/windows-phone-7-mango-first-look.html' title='Windows Phone 7 - Mango (sdk 7.1 beta) First Look'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-1141032025009548447</id><published>2011-05-12T12:14:00.000+08:00</published><updated>2011-05-14T04:28:55.077+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='客戶服務IIS專案管理WCF'/><title type='text'>在IIS上設定WCF Services VS 不讓小問題搞死你</title><content type='html'>前陣子，委外的廠商開發了一個.svc的WCF Services，佈署到我們的新機器上之後，怎麼也跑不起來，直接瀏覽時會出現錯誤訊息，廠商先前都沒有用過WCF Services技術開發過.svc服務，在開發環境VS2010當中確實都可以運行沒有問題，因此這個Issue又觸礁無法解決...&lt;br /&gt;&lt;br /&gt;我們接洽的這位同事很可愛的在網路上找了這篇:&lt;br /&gt;&lt;a href="http://technet.microsoft.com/en-us/library/dd632554.aspx"&gt;http://technet.microsoft.com/en-us/library/dd632554.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;然後也設定了MIME，結果服務終於在瀏覽器上不會出錯，但卻根本沒法呼叫，只會出現blank text page, 因此我重新看了一下IIS的環境，最後執行底下指令：&lt;br /&gt;"%windir%\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\ServiceModelReg.exe" /i&lt;br /&gt;&lt;br /&gt;就這樣，搞定!&lt;br /&gt;原因當然是Windows Communication Foundation並沒有在IIS當中正確的建立 Metabase, 使得服務無法透過IIS給叫起來。&lt;br /&gt;&lt;br /&gt;過去我們的合作廠商和同事(都是developer background)，都在Hosting(或是Windows Azure)上架設網站，那些環境都是別人已經準備好的，所以當然不會有問題。然而卻從來沒有自己從頭到尾架設一個Windows Server，因此在最基本的問題上觸礁，且花了不少時間，直到客戶直接問我，為什麼環境架設那麼久，一直架設不好，回頭找員工討論，才知道卡在這個問題上。&lt;br /&gt;&lt;br /&gt;員工知道這一定是一個可以解決的問題(不然其他Server怎麼可以run?)，因此想自己解決，也不問身邊其他同事(怕被笑?)，但又因為身上還有其他工作，所以這個問題就懸了快一周，一周的時間就這樣過去不打緊，對客戶來說他反映出來的是服務品質和效率，當我知道了之後覺得很遺憾，因為短短一行指令就可以解決的問題，卻讓客戶等了好幾天...&lt;br /&gt;&lt;br /&gt;檢討這個狀況，發現基礎常識的不足，和資訊的不透通是最主要的原因，IT產業常常碰到很多的問題，每一個開發人員和IT技術人員每天都在處裡各式各樣的問題，一個問題處理完畢之後，能夠有log是最理想的狀況，但往往這些經驗是很難留在公司裏面(問題解決了很爽，寫Log卻很煩，先喝杯咖啡去，Log...再說吧)，而一個問題呈現出來的現象和狀況可能有多種面向，有時候也不那麼好歸類。&lt;br /&gt;&lt;br /&gt;但最最最糟的狀況是，某一個關鍵問題卡在一個人身上，在開會、Review進度時都沒有提出(或提的很模糊，沒人聽得懂，提的人也希望趕快跳過，不想被challenge)，然後卡在某個人身上一直無法解決(他也不是懶惰，而是一直找不到方法)，結果變成整個專案的瓶頸，這很冤枉，也很划不來...，明明是一個可以被處裡甚至被防範的簡單小問題，卻造成進度的落後。&lt;br /&gt;&lt;br /&gt;後來，針對這個現象，我們訂出了工作準則，並且透過資訊系統，要求員工在手上的待處理問題，如果超過一定時間沒解決(或是根本不知道該怎麼解決)，必須登入在員工每日工作的系統(EIP Portal)上， 讓這個問題公開，讓其他有經驗的同仁或他的主管，可以出手介入或施予援助。(管理單位也可以從這些Issue List上，推敲出目前專案的狀況)&lt;br /&gt;&lt;br /&gt;每一個人都不是全能的，資訊領域那麼大，大家各自有擅長的技術，彼此幫忙解決問題，才是我們想看到的結果，因為特定領域不熟悉，甚至羞於尋求幫助，並不是我們想鼓勵的文化，我們沒有讓每一位員工很忙，也是因為希望能夠多一些時間彼此幫忙。另一個有趣的現象，你會慢慢地發現，團隊中最有人緣或最有領導力的，常常是那個對其他人施予幫助的，而非技術能力最強的人。&lt;iframe allowtransparency="allowtransparency" frameborder="0" id="fbLike" scrolling="no" src="" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; height: 65px; overflow: hidden; width: 350px;"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href="http://www.facebook.com/sharer.php" name="fb_share" type="button_count"&gt;分享&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-1141032025009548447?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/1141032025009548447/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=1141032025009548447' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/1141032025009548447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/1141032025009548447'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/05/iiswcf-services-vs.html' title='在IIS上設定WCF Services VS 不讓小問題搞死你'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-4609199007360477134</id><published>2011-04-30T22:30:00.001+08:00</published><updated>2011-04-30T22:37:42.751+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Behavior'/><title type='text'>Silverlight ComboBox的Hotkey功能</title><content type='html'>最近在做專案時，客戶問到操作界面的問題，希望ComboBox能夠有hotkey，這種需求是很難拒絕的，特別是很久以前的WinForm早就有這種功能了。&lt;br /&gt;&lt;br /&gt;但不幸的是，Silverlight...沒有。沒有的原因是Silverlight的ComboBox比較強(嗯...好怪的邏輯唷)，不過，是真的，因為Silverlight的ListBox和ComboBox裡面的item並不像是以前WinForm or WebForm只能是ListBoxItem, 現在Silverlight中的ComboBox的Item，可以是任何物件，例如簡單一點的String, 複雜一點的Calendar, 甚至可以讓每一個Item是多個物件的集合。&lt;br /&gt;&lt;br /&gt;不過，這是ComboBox比較複雜且加上DataBinding的用法，那...假設ComboBox中的Items，根本就是很單純的ComboBoxItem或是String呢? 難道還是不能用HotKey嗎?&lt;br /&gt;&lt;br /&gt;然而這時候，可能就需要寫段小程式了，去Hook ComboBox的KeyUp事件，在按下特定的字母時，將ComboBox的SelectIndex做動態的調整，要寫Code，不麻煩，但要能reuse就需要花點腦筋了。&lt;br /&gt;&lt;br /&gt;不過令人興奮的是，Silverlight的Behavior技術，可以把這個功能封裝成可重複使用的原件，那，就設計成Behavoir好了...&lt;br /&gt;&lt;br /&gt;不過正準備動手時，轉念一想，這麼常用的功能不可能沒有吧，Search了一下，果不其然，國外已經有寫好的套件囉，而且還含有Source Code呢...網址如下...&lt;br /&gt;&lt;a href="http://gallery.expression.microsoft.com/RapidAccessKey"&gt;http://gallery.expression.microsoft.com/RapidAccessKey&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Enjoy it...&lt;br /&gt;&lt;br /&gt;&lt;iframe allowtransparency="allowtransparency" frameborder="0" id="fbLike" scrolling="no" src="" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; height: 65px; overflow: hidden; width: 350px;"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href="http://www.facebook.com/sharer.php" name="fb_share" type="button_count"&gt;分享&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-4609199007360477134?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/4609199007360477134/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=4609199007360477134' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/4609199007360477134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/4609199007360477134'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/04/silverlight-comboboxhotkey.html' title='Silverlight ComboBox的Hotkey功能'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-2327963352397888169</id><published>2011-04-28T18:50:00.003+08:00</published><updated>2011-04-28T18:57:17.916+08:00</updated><title type='text'>C# 101 - Cancel Event的設計</title><content type='html'>最近上課時，學員問到C#當中Event的設計，主要是希望能夠設計出類似WinForm視窗關閉時，那個帶有Cancel屬性的e參數，為此，該學員傷腦筋了很久。&lt;br /&gt;&lt;br /&gt;為了避免學員內心受創，因此我緩緩地先述說了一段事件設計的歷史故事，成功轉移焦點後，再委婉告訴他其實不用設計，因為.NET從2.0開始就有了，直接繼承&lt;a href="http://msdn.microsoft.com/zh-tw/library/system.componentmodel.canceleventargs(v=vs.80).aspx"&gt;CancelEventArgs 類別&lt;/a&gt;即可。&lt;br /&gt;&lt;br /&gt;程式碼如下：&lt;br /&gt;&lt;pre class="brush:c-sharp"&gt;public class MyEventArgs : System.ComponentModel.CancelEventArgs&lt;br /&gt;{&lt;br /&gt;//你可以加上其他你需要的屬性&lt;br /&gt;public string AnotherProperty { get; set; }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;而使用該參數時，只需要撰寫類似底下這樣的事件程式碼：&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:c-sharp"&gt;public delegate void MyActionEventHandler(object sender, MyEventArgs e);&lt;br /&gt;public event MyActionEventHandler MyAction; &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;這樣設計出來的事件，在使用參數時就會具有e.Cancel屬性，而在我們觸發該事件的程式碼中，就可以透過底下這樣的Code, 來依照Cancel的值判斷是否要繼續後面的程式碼(這就是我們在WinForm的Closing事件中將屬性e.Cancel設為true之後，就不會關閉視窗的原因)...&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:c-sharp"&gt;if (MyAction != null)&lt;br /&gt; {&lt;br /&gt;     MyEventArgs arg = new MyEventArgs();&lt;br /&gt;     MyAction.Invoke(this, arg);&lt;br /&gt;     if (arg.Cancel) { return; }&lt;br /&gt;     ...其他程式碼...&lt;br /&gt;  }&lt;/pre&gt;&lt;br /&gt;其實整個很簡單，但令人訝異的是，許多.NET Developer由於並不常寫Class，導致對.NET內建的許多類別異常的不熟悉。&lt;br /&gt;&lt;br /&gt;已經很久沒有機會和學員討論到基礎的東西了，頗令我感慨的是，學員對MVC有興趣，對MVVM有好奇，但由於網路資訊的普及，已經不多Developer，還願意花時間把Programing 101的書籍翻開來好好閱讀了...網路上資訊確實很多，但由於都較為片段，不容易有系統的學習，容易使得開發人員的觀念2266。&lt;br /&gt;&lt;br /&gt;可是，我很想跟學員說，其實你知道嗎? 扎實的基礎，才是能夠在職場中站穩腳步的關鍵要素。&lt;br /&gt;&lt;iframe allowtransparency="allowtransparency" frameborder="0" id="fbLike" scrolling="no" src="" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; height: 65px; overflow: hidden; width: 350px;"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href="http://www.facebook.com/sharer.php" name="fb_share" type="button_count"&gt;分享&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-2327963352397888169?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/2327963352397888169/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=2327963352397888169' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/2327963352397888169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/2327963352397888169'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/04/c-101-cancel-event.html' title='C# 101 - Cancel Event的設計'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-8702662199258579790</id><published>2011-04-22T11:09:00.006+08:00</published><updated>2011-04-22T11:23:53.435+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='心情'/><title type='text'>技術並非唯一的解決方案</title><content type='html'>投入資訊業到現在，已經數不清多少個年頭了，在這十幾二十年的歲月中，有幸在不同的時間擔任不同的角色，因此格外能夠體會技術人員的心情。 &lt;br /&gt;&lt;br /&gt;最近有機會到一些場合進行教育訓練，講授的是微軟新的雲端運算技術以及Silverlight開發技術，其中涉及n-tier概念以及物件導向程式設計，學員來自四面八方，很特別的背景，唯一的共同點就是都並非科班出身(詭異了，那資工資管畢業的人哪去了?)，而技術歷史更是迥異，有ASP開發人員、有ASP.NET開發人員、Java開發人員、VB開發人員....etc...&lt;br /&gt;&lt;br /&gt;原諒我這麼說，談到ORM、Class Design、Pattern等概念時，java背景的開發人員頻頻微笑點頭，顯然頗有認同之意，而大部分只寫過ASP.NET的WebForm開發人員似懂非懂，能夠抓到一個大概，但不太明白中間的道理和背後的原因，為何程式碼的需要延展性，如何提高重用性，為何要把這個機制設計成類別...似乎有些問號在腦袋裡...&lt;br /&gt;&lt;br /&gt;其中有位ASP開發人員則在第一天中午就離開，跟我說，老師您講得很好，但是這些新技術我應該用不到，下回需要時再來請教您...&lt;br /&gt;&lt;br /&gt;其實，這些路我都走過，我完全可以理解。(請相信我，這完全沒有對錯，上面這樣寫，跟開發人員的背景無關，其中也完全沒有任何的價值判斷)&lt;br /&gt;&lt;br /&gt;我們這一票從Apple II/DOS時代開始寫程式的老人(不然，我要寫壯年嗎? XD) 我深深知道當年從ASP轉換到ASP.NET乃至於把程式改寫成n-tier架構的痛苦，但這麼多年下來，我也大約領略到了背後的甘甜，不過不同的是，我不再辯解，也不強調採用新架構開發系統的優點，每個人(每家公司)都有自己的路，即便不學新東西，也能找到自己的一條生路。&lt;br /&gt;&lt;br /&gt;學習成本對每一個人來說是不同的，隨著年紀越長，我越來越少強調競爭力，畢竟電腦科技是應用科技，能產出結果、派上用場最重要，至於開發成本就見仁見智了。&lt;br /&gt;&lt;br /&gt;在前一陣子受朋友之託，到一家非常大的企業，幫朋友看一個資訊系統。&lt;br /&gt;&lt;br /&gt;主要是這樣，因為這個單位的資訊人員非常忙，這位朋友在部門中委託資訊單位建置了一個簡單的小系統，就是資料輸入和查詢，頂多加上一點分析，但系統建置完成之後，一開始可以用，不過久了之後想要做些調整，資訊單位卻遲遲無法配合，朋友明白這也並非IT人員的錯，因為工作量實在太大，救火都來不及了還改系統???&lt;br /&gt;&lt;br /&gt;我最近看到太多這樣的例子，最後企業中的部門獨立把系統外包，但這又造成了資訊單位頭疼的困擾，莫名其妙生出來的系統，該怎麼整合，要如何管理，資訊安全又是另一個衍生出的問題...&lt;br /&gt;&lt;br /&gt;我在IT/MIS部門待過很多年，我是教育訓練講師，我也是軟體廠商，我實在看過太多這樣的狀況，這也是目前台灣資訊產業的生態，甚至也是軟體公司在夾縫中生存的空隙之一，這類的資訊系統，在越大的企業中越容易發現，不僅IT單位不知道這個委外系統的存在，變成管理的漏洞，甚至某些由IT自行開發的系統隨著人事變遷也成為了孤兒...&lt;br /&gt;&lt;br /&gt;到底，針對這些系統要如何管理，在資訊化已經那麼成熟的今天，要如何去維護和確保系統能正常運作，資訊單位到底該集權管理還是成為企業委外資訊系統的窗口?&lt;br /&gt;&lt;br /&gt;最近看了六七家廠商這樣的問題之後，不由得感慨橫生，我沒有辦法在這一篇文章中給大家一個高明的解決方案，我卻有點遺憾，這麼多年過去，技術翻了豈止兩三翻，但企業所面對的問題依舊是這樣，解決方案是喊的震天價響的雲端運算? 時髦的平板或行動通訊裝置能否幫得上忙，還是20年後，這些問題依舊存在??? &lt;br /&gt;&lt;br /&gt;當年的我的讀者，如果還沒退役，還是IT產業線上的一員，現在也慢慢成為企業中的中階主管，開始掌握資訊化決策權，在我們下的每一個決策裡面，除了技術考量，還有很多管理上的因素需要注意，慢慢地您會發現，IT技術可能不是唯一的解決方案。&lt;br /&gt;&lt;iframe allowtransparency="allowtransparency" frameborder="0" id="fbLike" scrolling="no" src="" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; height: 65px; overflow: hidden; width: 350px;"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href="http://www.facebook.com/sharer.php" name="fb_share" type="button_count"&gt;分享&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-8702662199258579790?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/8702662199258579790/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=8702662199258579790' title='3 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/8702662199258579790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/8702662199258579790'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/04/blog-post.html' title='技術並非唯一的解決方案'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-1805415036995409468</id><published>2011-03-18T16:11:00.000+08:00</published><updated>2011-03-18T16:11:41.027+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='研討會'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Winodws Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows phone 7'/><title type='text'>感謝大家今天熱情參與...</title><content type='html'>感謝大家今天熱情參與由資策會所舉辦的『雲端嬉遊研討會』&lt;br /&gt;&lt;a href="http://www.iiiedu.org.tw/taipei/freetalking/cloud_201103.htm"&gt;http://www.iiiedu.org.tw/taipei/freetalking/cloud_201103.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;在今天的場次中和大家分享了Windows Phone 7如何與微軟Windows Azure雲端運算技術整合，以及相關的三螢一雲應用程式建置經驗。&lt;br /&gt;&lt;br /&gt;相關的投影片可在底下位置下載。&lt;br /&gt;&lt;a href="http://docs.com/B2Y9"&gt;http://docs.com/B2Y9&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-1805415036995409468?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/1805415036995409468/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=1805415036995409468' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/1805415036995409468'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/1805415036995409468'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/03/blog-post_18.html' title='感謝大家今天熱情參與...'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-7581135664195070344</id><published>2011-03-18T10:16:00.002+08:00</published><updated>2011-03-18T10:23:30.496+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='JSON'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows phone 7'/><title type='text'>在WP7/Silverlight當中接收JSON資料...</title><content type='html'>事情是這樣的，可能很多開發人員已經清楚，在Silverlight技術當中是不直接支援以ADO.NET方式來存取遠端DB的，關於這個部分，我在許多課堂中都有說明，隨著技術的改變與更新，現在有更好的方式在SL當中抓取資料，我們主要使用的是LINQ技術，在伺服器端可以配合LinqToSql和ADO.NET Entity Framework，所以我們會建議開發人員，在撰寫SL要呼叫的Web/WCF Services時，就直接透過LinqToSql or ADO.NET EF抓取資料，並且把抓到的資料直接以物件的方式回傳，這樣有一個超級棒的好處，就是在Silverlight去reference這個Web/WCF Services時，VS2010會自動在Silvelright端幫你generate這個物件的Type，然後你可以輕鬆的在SL當中使用這個物件，如同這個物件從伺服器端被傳到用戶端一樣。&lt;br /&gt;&lt;br /&gt;例如：&lt;br /&gt;&lt;pre class="brush:c-sharp"&gt;[WebMethod]&lt;br /&gt;        public AddrssBook[] getAllData()&lt;br /&gt;        {&lt;br /&gt;            AddrBookDataContext db = new AddrBookDataContext();&lt;br /&gt;            var ret = from c in db.AddrssBooks select c;&lt;br /&gt;&lt;br /&gt;            return ret.ToArray();&lt;br /&gt;        }&lt;/pre&gt;這邊的AddressBook類別是資料表名稱，是LinqToSql自動幫我們產生的類別定義。&lt;br /&gt;&lt;br /&gt;當SL去呼叫這個Web Services時，在Silvelright端就會自動產生該類別(從Win/Web Form時代就是這樣)，一切都相當容易。&lt;br /&gt;&lt;br /&gt;但在這個多元化的時候，很可能有時候沒那麼單純，總是有很多奇怪的場合，你的客戶會要求你達成跨平台這個遠大的目標。這時候，你要考慮Services是不是有可能要讓其他開發技術(PHP? Java? @#$%^&amp;amp;*@#$%?)來呼叫...因此，把資料轉成大家看得懂並且容易解析的方式會比較理想，例如JSON...&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;JSON是啥我就不多說了，有興趣的看&lt;a href="http://zh.wikipedia.org/zh-hant/JSON"&gt;這邊&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;所以呢，程式分成兩段，要如何在伺服器端把回傳的資料型別改成JSON呢? 很簡單，JSON只是字串，所以只需要把由LinqToSql抓到的資料經過轉換，程式如下：&lt;br /&gt;&lt;pre class="brush:c-sharp"&gt;//從LinqToSql抓資料            &lt;br /&gt;AddrBookDataContext db = new AddrBookDataContext();&lt;br /&gt;var ret = from c in db.AddrssBooks select c;&lt;br /&gt;//轉JSON&lt;br /&gt;string buf=ObjectToJson(ret.ToArray());&lt;br /&gt;//把buf回傳...&lt;br /&gt;...略...&lt;br /&gt;&lt;br /&gt;//物件轉成JSON字串&lt;br /&gt;private static string ObjectToJson(object obj, Type type)&lt;br /&gt;{&lt;br /&gt;    //Create a stream to serialize the object to.&lt;br /&gt;    MemoryStream ms = new MemoryStream();&lt;br /&gt;&lt;br /&gt;    // Serializer the User object to the stream.&lt;br /&gt;    DataContractJsonSerializer ser = new DataContractJsonSerializer(type);&lt;br /&gt;    ser.WriteObject(ms, obj);&lt;br /&gt;    byte[] json = ms.ToArray();&lt;br /&gt;    ms.Close();&lt;br /&gt;    return Encoding.UTF8.GetString(json, 0, json.Length);&lt;br /&gt;}&lt;/pre&gt;接著丟給Services網用戶端(Silverlight)傳，當用戶端接收到這個字串時，再透過底下程式碼轉回物件：&lt;br /&gt;&lt;pre class="brush:c-sharp"&gt;AddressBook[] addrs=JsonToObj(接收到的JsonString, typeof(AddressBook));&lt;br /&gt;//將JSON轉回物件&lt;br /&gt;private static object JsonToObj(string json, Type type)&lt;br /&gt;{&lt;br /&gt;    object obj;&lt;br /&gt;    MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json));&lt;br /&gt;    DataContractJsonSerializer ser = new DataContractJsonSerializer(type);&lt;br /&gt;    obj = ser.ReadObject(ms);&lt;br /&gt;    ms.Close();&lt;br /&gt;    return obj;&lt;br /&gt;}&lt;/pre&gt;當然，由於沒有VS2010貼心的幫你在add services reference後自動產生那個AddressBook類別，因此你得自己在用戶端建立一個一樣的類別，為了省事，我多半偷偷copy Services裡LinqToSql幫我generate出來的code...&lt;br /&gt;&lt;br /&gt;如此一來，你的用戶端(SL)既可以順利讀取到伺服器端的資料，其他開發技術所撰寫出來的程式也可以共享伺服器端的服務所傳遞的資料了。&lt;br /&gt;&lt;br /&gt;這樣的模式非常常見，例如FaceBook, DropBox等知名網站的API，都可傳遞Json類型的資料，以便於用戶端讀取和使用。&lt;br /&gt;&lt;br /&gt;而對於.NET來說，最主要的就是DataContractJsonSerializer這個類別，相關的資料可以在&lt;a href="http://msdn.microsoft.com/zh-tw/library/system.runtime.serialization.json.datacontractjsonserializer(v=vs.95).aspx"&gt;MSDN&lt;/a&gt;找到。&lt;br /&gt;&lt;iframe allowtransparency="allowtransparency" frameborder="0" id="fbLike" scrolling="no" src="" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; height: 65px; overflow: hidden; width: 350px;"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href="http://www.facebook.com/sharer.php" name="fb_share" type="button_count"&gt;分享&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-7581135664195070344?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/7581135664195070344/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=7581135664195070344' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/7581135664195070344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/7581135664195070344'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/03/wp7silverlightjson.html' title='在WP7/Silverlight當中接收JSON資料...'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-7741374269775546056</id><published>2011-03-05T11:17:00.002+08:00</published><updated>2011-03-05T11:23:29.981+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='雲端'/><title type='text'>SQL Azure Migration Wizard</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: left;"&gt;最近，應客戶的要求要上雲端，雖然有部分客戶對於雲端的意義和價值還搞不太清楚，但為了提升企業的競爭力和知名度，上雲端這件事情是肯定一定要的。(雖然兩者之間似乎沒太大關係)&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Anyway, 總之呢，下半年會有更多的雲端概念出現。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;但上雲端可不是隨便就上的，話說，先前我曾經說過，現階段對我來說，SQL Azure的CP值比較高，所以我在SQL Azure可以用了之後沒多久，就把很多在Web上的服務所用到的DB移上了SQL Azure。但是，這過程可是一波多折，截至目前為止，依舊沒有好的tool可以很方便的編修在雲端的資料庫(似乎，微軟覺得上了雲端的東西謹慎點好，沒事別改來改去)。對於眾多喜歡用tool不喜歡下SQL指令的Developer來說，實在是辛苦了點...&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;不過，在CodePlex上一直都有一套勉強可用的Tool, &lt;a href="http://sqlazuremw.codeplex.com/"&gt;SQL Azure Migration Wizard&lt;/a&gt;&amp;nbsp;這套工具可以幫助你將某個SQL Database進行分析後，移轉(Migrate)到雲端的SQL Azure上。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;最近剛好要操作，順便截錄畫面如下...&amp;nbsp;&lt;/div&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;進入Wizard後，第一個畫面可以選擇要進行的工作：&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-mWaLj7sIJu4/TXGpE6kgH_I/AAAAAAAAA1o/II0pznP88fU/s1600/683b001f-71f6-415f-b36f-b8aed63a4f79.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" l6="true" src="https://lh5.googleusercontent.com/-mWaLj7sIJu4/TXGpE6kgH_I/AAAAAAAAA1o/II0pznP88fU/s400/683b001f-71f6-415f-b36f-b8aed63a4f79.jpg" width="358" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="left" class="separator" style="clear: both; text-align: center;"&gt;接著，選擇你要連結的資料庫伺服器, &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-J6morD32JK4/TXGpg0ROD4I/AAAAAAAAA1s/PTzMXOLf5Cg/s1600/230d7057-d9b8-43d8-90aa-1f63c33a534e.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" l6="true" src="https://lh3.googleusercontent.com/-J6morD32JK4/TXGpg0ROD4I/AAAAAAAAA1s/PTzMXOLf5Cg/s320/230d7057-d9b8-43d8-90aa-1f63c33a534e.jpg" width="289" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;選擇你要的資料庫, &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-_rGPVX5C49Y/TXGpr3XVieI/AAAAAAAAA1w/KInLdEdzrn4/s1600/dc90029e-438a-4b68-bd42-3daea216dd80.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" l6="true" src="https://lh6.googleusercontent.com/-_rGPVX5C49Y/TXGpr3XVieI/AAAAAAAAA1w/KInLdEdzrn4/s320/dc90029e-438a-4b68-bd42-3daea216dd80.jpg" width="289" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="left" class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&amp;nbsp;選擇你要的資料表.....&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-OWYQwb4ZWj8/TXGqC4JnihI/AAAAAAAAA10/RhtGVE3LRok/s1600/ae96b678-a03e-442b-8339-5f51e25a3988.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" l6="true" src="https://lh4.googleusercontent.com/-OWYQwb4ZWj8/TXGqC4JnihI/AAAAAAAAA10/RhtGVE3LRok/s320/ae96b678-a03e-442b-8339-5f51e25a3988.jpg" width="287" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;自動列出要分析和移轉的項目： &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-MgQZkWoJc3I/TXGqOQVo0XI/AAAAAAAAA14/m_gkPDJyGdY/s1600/d8abc950-0639-4a5c-ab05-671c5007d481.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" l6="true" src="https://lh3.googleusercontent.com/-MgQZkWoJc3I/TXGqOQVo0XI/AAAAAAAAA14/m_gkPDJyGdY/s320/d8abc950-0639-4a5c-ab05-671c5007d481.jpg" width="289" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;接著進行分析...&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-bpZV9P57Ki0/TXGqXT_w1AI/AAAAAAAAA18/ALTw0C57QmE/s1600/6d1073cf-135c-4e6f-977a-4923722d3c87.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" l6="true" src="https://lh3.googleusercontent.com/-bpZV9P57Ki0/TXGqXT_w1AI/AAAAAAAAA18/ALTw0C57QmE/s320/6d1073cf-135c-4e6f-977a-4923722d3c87.jpg" width="287" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;確定無誤後繼續按Next，進行移轉... &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;接著，會讓你選擇位於雲端的資料庫伺服器位置和資料庫，持續按下Next後即可完成：&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-MKuf0aBRn1Q/TXGm9O4dLFI/AAAAAAAAA1k/kHcu_PAnqGg/s1600/5cbb0e0e-46d8-429d-ada1-9e21dc2ad639.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" l6="true" src="https://lh3.googleusercontent.com/-MKuf0aBRn1Q/TXGm9O4dLFI/AAAAAAAAA1k/kHcu_PAnqGg/s400/5cbb0e0e-46d8-429d-ada1-9e21dc2ad639.jpg" width="358" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;﻿&lt;/div&gt;&lt;div style="text-align: left;"&gt;有一點工具，總是比都自己下指令好些...&lt;/div&gt;&lt;iframe allowtransparency="allowtransparency" frameborder="0" id="fbLike" scrolling="no" src="" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; height: 65px; overflow: hidden; width: 350px;"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href="http://www.facebook.com/sharer.php" name="fb_share" type="button_count"&gt;分享&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-7741374269775546056?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/7741374269775546056/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=7741374269775546056' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/7741374269775546056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/7741374269775546056'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/03/sql-azure-migration-wizard.html' title='SQL Azure Migration Wizard'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh5.googleusercontent.com/-mWaLj7sIJu4/TXGpE6kgH_I/AAAAAAAAA1o/II0pznP88fU/s72-c/683b001f-71f6-415f-b36f-b8aed63a4f79.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-7424498787336482906</id><published>2011-03-03T17:03:00.004+08:00</published><updated>2011-03-03T17:14:12.579+08:00</updated><title type='text'>突破舊有思維制約的創意</title><content type='html'>&lt;div style="text-align: left;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://0.gvt0.com/vi/WmimH0COWMQ/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/WmimH0COWMQ&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266" src="http://www.youtube.com/v/WmimH0COWMQ&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;看這段影片，讓我回憶起了一些歷史，40年前，電腦是一棟建築物才能容納的高檔研究設備，有一家懷抱夢想的公司，把它帶入了家家戶戶的客廳...&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;30年前，那時候作業系統和套裝軟體是綁(配合)著電腦硬體銷售的，硬體的規格和OS密切整合，所以軟體發揮了很好的效能，但卻限制的設計的創新，也無法降低銷售成本，20多年前的某一天，有另一家帶著願景的公司決定只做軟體，把軟體從硬體切割出來，分開來銷售，這個動作，造就了某個在車庫裡創立的軟體公司這幾十年的基業，也成就了過去台灣十多年PC硬體產業的繁榮...&lt;br /&gt;&lt;br /&gt;2000年代初有家公司在市場占有率大幅滑落，面臨存亡關鍵之際，因緣際會轉型成為mp3撥放器的終端消費產品的製造廠商，在2007年又跨足智慧型手機的領域，這一跨足，把原先在該領域佔有率最高的軟體與手機廠商殺的片甲不留...&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;這一切，都在過去這幾十年發生，起起落落、風風雨雨，回顧這一切，只能說，能夠突破舊有思維制約的創意，才是讓企業能立於不敗的關鍵...改變，往往從某一件事，或某一個人開始...&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;不過歷史也告訴我們，持續的領先和成功，是需要不斷的創意和挑戰自己才能夠實現，如果一放鬆，隨時都有競爭對手等著超越過去。&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;BTW，什麼時候微軟也拍一個讓大夥感動的影片，最近怎麼都是Apple的產品介紹影片比較感動人心咧???&lt;/div&gt;&lt;iframe allowtransparency="allowtransparency" frameborder="0" id="fbLike" scrolling="no" src="" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; height: 65px; overflow: hidden; width: 350px;"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href="http://www.facebook.com/sharer.php" name="fb_share" type="button_count"&gt;分享&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-7424498787336482906?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/7424498787336482906/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=7424498787336482906' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/7424498787336482906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/7424498787336482906'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/03/blog-post.html' title='突破舊有思維制約的創意'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-4433502037528525019</id><published>2011-03-02T21:11:00.006+08:00</published><updated>2011-03-02T21:27:48.411+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dropbox'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='雲端'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows phone 7'/><title type='text'>在WP7中使用Silverlight開發DropBox應用</title><content type='html'>這篇文章的標題很有趣，WP7是手機、Silverlight是開發技術、DropBox是雲端服務應用...如果你對資訊技術(特別是開發技術)有興趣且持續關注，會發現這三個(類)名詞最近常常似有若無的連結在一起。(以後有機會再分享感觸...)&lt;br /&gt;&lt;br /&gt;使用WP7手機好一陣子了，比較特別的地方是，WP7手機沒有檔案系統的概念，而是比較偏向雲端資料儲存機制，也因此，如果你需要Sync PC上的檔案，比較理想的方式是將檔案從PC Sync到雲端(例如Dropbox或是Skydrive)，然後再透過手機去讀取...&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;不過要完成這樣的工作，就得跟雲端服務相關的API打交道了，也就是說，開發人員想要去存取於位於雲端上的檔案，可需要透過該服務提供的API。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.dropbox.com/"&gt;DropBox&lt;/a&gt;雖然起步&lt;a href="http://zh.wikipedia.org/zh-hk/Dropbox"&gt;不算早&lt;/a&gt;，但在檔案存取上已經算是一個典範了。因為這樣，最近開始有ㄧ些機會需要利用silverlight開發技術來存取用戶位於DropBox上的檔案。基本上，API不算複雜，可以參考底下位置：&lt;br /&gt;&lt;a href="http://www.dropbox.com/developers"&gt;http://www.dropbox.com/developers&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;我很喜歡這種簡單好用的API，沒有太多詭譎之處，就很直接了當。如果你是開發人員，想要寫可以存取DropBox的手機或Web應用程式，請參考底下網頁：&lt;br /&gt;&lt;a href="http://www.dropbox.com/developers/quickstart"&gt;http://www.dropbox.com/developers/quickstart&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-LiV1Mx1peQ8/TW48FBIov8I/AAAAAAAAA1c/zR1QinVkJ1E/s1600/25b1e672-3d6b-4dda-83f0-3921fcca5e1b.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="215" l6="true" src="https://lh3.googleusercontent.com/-LiV1Mx1peQ8/TW48FBIov8I/AAAAAAAAA1c/zR1QinVkJ1E/s400/25b1e672-3d6b-4dda-83f0-3921fcca5e1b.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;動作是：&lt;br /&gt;先取得一個Developer Key(當然，你先要註冊DropBox帳號，然後進入底下頁面：&lt;a href="https://www.dropbox.com/developers/apps"&gt;https://www.dropbox.com/developers/apps&lt;/a&gt;&amp;nbsp;)即可在該頁面上申請一個App：&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-hgukx8Hoyyg/TW475UeytVI/AAAAAAAAA1Y/yNrHc6H_Rso/s1600/7bcfb0b4-9414-41c1-b7ef-6a08e00b1304.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="215" l6="true" src="https://lh6.googleusercontent.com/-hgukx8Hoyyg/TW475UeytVI/AAAAAAAAA1Y/yNrHc6H_Rso/s400/7bcfb0b4-9414-41c1-b7ef-6a08e00b1304.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;申請完App之後，你會取得一組App Keys和Secret Code，這很重要，寫程式的時候會用到。&lt;br /&gt;&lt;br /&gt;接著，就可以來寫程式存取DropBox了，但請先注意，你申請的App目前是開發階段，所以你在測試時只能存取自己的DropBox，程式寫完測試好之後，還得跟DropBox申請Production Key替換掉程式中開發階段的Key，才能正式Release你的應用程式。&lt;br /&gt;&lt;br /&gt;要如何透過程式碼存取Dropbox呢?&lt;br /&gt;Silverlight開發人員可以參考底下這組 SDK：&lt;br /&gt;&lt;a href="https://github.com/dkarzon/DropNet"&gt;https://github.com/dkarzon/DropNet&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;下載後請reference幾個.dll，分別是：&lt;br /&gt;DropNet.WindowsPhone.dll&lt;br /&gt;Newtonsoft.Json.Silverlight.dll&lt;br /&gt;RestSharp.WindowsPhone.dll&lt;br /&gt;&lt;br /&gt;主要的組件是DropNet.WindowsPhone.dll，其他兩個組件是配合做Rest存取與Json的剖析用的。&lt;br /&gt;&lt;br /&gt;接著，你就可以透過底下的程式碼登入：&lt;br /&gt;&lt;pre class="brush:c-sharp"&gt;//建立dropNetClient&lt;br /&gt;if(dropNetClient==null)&lt;br /&gt;    dropNetClient = new DropNet.DropNetClient("你的AppKey", "你的Secret Code");&lt;br /&gt;//Login&lt;br /&gt;dropNetClient.LoginAsync(DropBox使用者帳號, DropBox使用者密碼, (para1) =&amp;gt;&lt;br /&gt;{&lt;br /&gt;    if (para1.Content.IndexOf("error")&amp;gt;0)&lt;br /&gt;    {&lt;br /&gt;        Dispatcher.BeginInvoke(() =&amp;gt; {&lt;br /&gt;            MessageBox.Show("Login fail, please make sure account &amp;amp; password is correct and try again, you can edit your account &amp;amp; password in the setting page.");&lt;br /&gt;        });&lt;br /&gt;        return;&lt;br /&gt;    }&lt;br /&gt;    //成功登入後, 取得用戶資訊&lt;br /&gt;    GetUserinfo();&lt;br /&gt;    //取得Public目錄清單&lt;br /&gt;    GotoPath("Public");&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;請特別注意 LoginAsync 的第三個參數，該參數是Action，簡單的說就是一個Call back Method，你可以直接把Login後的動作寫在裡面。例如，我們在成功當入後取得用戶的資訊和public檔案清單。&lt;br /&gt;&lt;br /&gt;我們來看public檔案清單的部分：&lt;br /&gt;&lt;pre class="brush:c-sharp"&gt;void GotoPath(string path)&lt;br /&gt;{&lt;br /&gt;    //Get Folder Info&lt;br /&gt;    dropNetClient.GetMetaDataAsync(path,&lt;br /&gt;        (para1) =&amp;gt;&lt;br /&gt;        {&lt;br /&gt;            //DataBinding&lt;br /&gt;            listBox1.Dispatcher.BeginInvoke(() =&amp;gt;&lt;br /&gt;            {&lt;br /&gt;                //取得目錄與檔案&lt;br /&gt;                listBox1.ItemsSource = para1.Data.Contents;&lt;br /&gt;            });&lt;br /&gt;        }&lt;br /&gt;     );&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;請注意在程式碼當中，DropBox API的呼叫都是以非同步的方式來進行，並且在另一個執行緒，因此你會看到有很多的Dispatcher...，而回傳的資料會在para1.data.contents，直接透過Silverlight的DataBinding技術Bind到listBox1上，呈現出的效果如下：&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-VdMSY2BpOZE/TW5B4xJAGZI/AAAAAAAAA1g/fWPlcZi2O_M/s1600/58058cfc-580a-4b08-b5f0-f1c489787591.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" l6="true" src="https://lh6.googleusercontent.com/-VdMSY2BpOZE/TW5B4xJAGZI/AAAAAAAAA1g/fWPlcZi2O_M/s400/58058cfc-580a-4b08-b5f0-f1c489787591.jpg" width="213" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;That's all， 就這樣，即可透過Silverlight存取DropBox，當然，這樣只是開始，還有許許多多其他的功能，如果改天有機會再詳述囉...&lt;/div&gt;&lt;iframe allowtransparency="allowtransparency" frameborder="0" id="fbLike" scrolling="no" src="" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; height: 65px; overflow: hidden; width: 350px;"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href="http://www.facebook.com/sharer.php" name="fb_share" type="button_count"&gt;分享&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-4433502037528525019?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/4433502037528525019/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=4433502037528525019' title='3 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/4433502037528525019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/4433502037528525019'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/03/wp7silverlightdropbox.html' title='在WP7中使用Silverlight開發DropBox應用'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh3.googleusercontent.com/-LiV1Mx1peQ8/TW48FBIov8I/AAAAAAAAA1c/zR1QinVkJ1E/s72-c/25b1e672-3d6b-4dda-83f0-3921fcca5e1b.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-7240442521274295729</id><published>2011-02-15T10:10:00.001+08:00</published><updated>2011-02-15T10:12:58.071+08:00</updated><title type='text'>顯然，大家對未來是有憧憬的...</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://3.gvt0.com/vi/6Cf7IL_eZ38/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/6Cf7IL_eZ38&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266" src="http://www.youtube.com/v/6Cf7IL_eZ38&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;iframe allowtransparency="allowtransparency" frameborder="0" id="fbLike" scrolling="no" src="" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; height: 65px; overflow: hidden; width: 350px;"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href="http://www.facebook.com/sharer.php" name="fb_share" type="button_count"&gt;分享&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-7240442521274295729?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/7240442521274295729/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=7240442521274295729' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/7240442521274295729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/7240442521274295729'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/02/blog-post_15.html' title='顯然，大家對未來是有憧憬的...'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-738140759801739037</id><published>2011-02-14T12:10:00.003+08:00</published><updated>2011-02-15T09:53:10.726+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows phone 7'/><title type='text'>從Resource、Content、stream、Bytes取得Image</title><content type='html'>最近在寫Silverlight，處裡一些與圖片有關的東西，會需要時常從Resource, Content等位置取得Image，然後填入Silverlight的Image物件，有時候則是透過WebClient取得stream，有時候則是取得一堆的bytes...總之呢，有各種不同的情境。&lt;br /&gt;&lt;br /&gt;所幸整理了一下,&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;pre class="brush:c-sharp"&gt;//從特定Path的Resource取得Image&lt;br /&gt;public static System.Windows.Media.Imaging.BitmapImage GetImageFromResourcePath(string path)&lt;br /&gt;{&lt;br /&gt;    return new System.Windows.Media.Imaging.BitmapImage(new Uri(path, UriKind.Relative));&lt;br /&gt;}&lt;/pre&gt;這邊要注意的是，UriKind務必是Relative，別設為Absolute。&lt;br /&gt;&lt;br /&gt;如果要從Content中取得Image，則可參考底下的這段程式碼：&lt;br /&gt;&lt;pre class="brush:c-sharp"&gt;/// 取得content類型的資源&lt;br /&gt;public static System.Windows.Media.Imaging.BitmapImage GetImageFromContentPath(string path)&lt;br /&gt;{&lt;br /&gt;    //直接抓檔案版本&lt;br /&gt;    Uri fileUri = new Uri(path, UriKind.Relative);&lt;br /&gt;    StreamResourceInfo streamResourceInfo = Application.GetResourceStream(fileUri);&lt;br /&gt;    using (BinaryReader br = new BinaryReader(streamResourceInfo.Stream))&lt;br /&gt;    {&lt;br /&gt;        byte[] content = br.ReadBytes((int)br.BaseStream.Length);&lt;br /&gt;        return aRock.Phone.Images.ByteToImageSource(content);&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;其實概念上是一樣的，只是多了一段從Bytes轉ImageSource的部分，也剛好順便看一下從bytes抓取Image到BitmapImage的方法：&lt;br /&gt;&lt;pre class="brush:c-sharp"&gt;/// 取得byte型態的Image&lt;br /&gt;public static BitmapImage ByteToImageSource(byte[] imageBytes)&lt;br /&gt;{&lt;br /&gt;    BitmapImage im = new BitmapImage();&lt;br /&gt;    MemoryStream ms = new MemoryStream(imageBytes);&lt;br /&gt;    im.SetSource(ms);&lt;br /&gt;    return im;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;底下這段Code則是從特定url取得Image&lt;br /&gt;&lt;pre class="brush:c-sharp"&gt;WebClient wc = new WebClient();&lt;br /&gt;Uri url = new Uri("filename", UriKind.Absolute);&lt;br /&gt;//取得資料後&lt;br /&gt;wc.OpenReadCompleted += (ss,arg) =&amp;gt; {&lt;br /&gt;    //把resource填入BitmapImage  &lt;br /&gt;    BitmapImage bi = new BitmapImage();&lt;br /&gt;    bi.SetSource(arg.Result);&lt;br /&gt;    //把BitmapImage填入Image&lt;br /&gt;    img.Source = bi;&lt;br /&gt;};&lt;br /&gt;//非同步讀取遠端資料(ImagesBytes)&lt;br /&gt;wc.OpenReadAsync(url);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;這些都是從特定資料來源取得Image的方法，在WP7和Silverlight當中都挺好用...&lt;br /&gt;&lt;br /&gt;BTW, 上面的程式碼我留了一些可簡化的空間，有興趣的朋友可以研究看看^^&lt;iframe allowtransparency="allowtransparency" frameborder="0" id="fbLike" scrolling="no" src="" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; height: 65px; overflow: hidden; width: 350px;"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href="http://www.facebook.com/sharer.php" name="fb_share" type="button_count"&gt;分享&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-738140759801739037?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/738140759801739037/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=738140759801739037' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/738140759801739037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/738140759801739037'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/02/resourcecontentstreambytesimage.html' title='從Resource、Content、stream、Bytes取得Image'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-9117782873543269882</id><published>2011-02-07T14:49:00.009+08:00</published><updated>2011-02-15T09:53:59.385+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='心情'/><title type='text'>軟體戰國時代...開始</title><content type='html'>時序進入了2011年，剛過完農曆新年，感覺上今年會是一個挺紛亂的戰國年。&lt;br /&gt;&lt;br /&gt;因為底下幾件事情，同時都發生在2010年底...&lt;br /&gt;&lt;br /&gt;去年，微軟算是一覺醒來，終於認真的面對行動裝置領域的挫敗，WP7的出現，讓微軟原本快要被逐出手機市場的頹勢，總算有了一現轉機...然而另一邊，iPad幾乎取代小筆電的銷售，讓市場上一方面充滿著期待，另一方面又充斥著失落感。似乎平板電腦上各種作業系統將會像過去前PC時代那樣的開戰(放心，我們過去經歷過的，充其量再來一次而已...)而kinect的熱銷，則讓先前獨占鰲頭的Wii開始有了危機意識...&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;回頭看這一年，微軟有輸有贏，然而整個市場也充滿著許多的不確定性。&lt;br /&gt;&lt;br /&gt;今(2011)年，用戶端各式各樣的行動裝置戰爭將會正式捉對廝殺，從FIC, ViewSonic, Acer...etc 越來越多的廠商開始跨入Win7的平板電腦市場，但是有更多的廠商在android OS上已經投入了不少的資源，這狀況在手機上完全一樣，看來我們將同時開始面對三種不同的OS(iPhone, android, Windows)一段不短的時間，這對於開發人員來說真的是比較棘手的一件事情。&lt;br /&gt;&lt;br /&gt;但反觀已經成熟到接近飽和的商務軟體市場，個人消費(consumer)市場則是一塊尚未被完整開發的領域，雖然AppStore算是初步證明這個領域的可行性，但由於真正獲利的人(App軟體開發商)依舊是少數(大多數的App屬於砲灰性質，根本賺不到什麼錢)，對軟體開發人員來說還有待觀察。儘管獲利可能性仍未確定，但大家絕不會放棄這個新鮮的機會。&lt;br /&gt;&lt;br /&gt;不管從什麼角度看，今年都會是市場紛亂的戰國年，更不用說再加上了大伙躍躍欲試的雲端運算，這個從去年初就開始喊到現在，讓大至政府、小到個人工作者儘管不明所以卻也都大力支持的老玩藝兒。特別是政府投入了不少經費，但似乎僅產生了一堆虛無飄渺的概念。而與終端開發人員比較有關的Platform as a Service (PaaS)技術，同樣是個各家都提出了各自的解決方案和技術(ex微軟的Windows Azure)，然而這些solutions要跨入到成熟階段顯然還有一段不算短的距離。&lt;br /&gt;&lt;br /&gt;如果真要我說，今年...還真是很亂的一年。&lt;br /&gt;&lt;br /&gt;但是就樣以前我們說過的，亂世，都有人能賺錢。過年這幾天天氣相當好，讓人不禁期待春天的到來，不管是季節的，還是景氣循環的春天。還等什麼? 下場來玩一輪吧~ ^_^&lt;br /&gt;&lt;iframe allowtransparency="allowtransparency" frameborder="0" id="fbLike" scrolling="no" src="" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; height: 65px; overflow: hidden; width: 350px;"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href="http://www.facebook.com/sharer.php" name="fb_share" type="button_count"&gt;分享&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-9117782873543269882?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/9117782873543269882/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=9117782873543269882' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/9117782873543269882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/9117782873543269882'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/02/blog-post.html' title='軟體戰國時代...開始'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-2025909298046545079</id><published>2011-01-25T11:49:00.008+08:00</published><updated>2011-01-29T12:33:47.161+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='研討會'/><category scheme='http://www.blogger.com/atom/ns#' term='雲端'/><title type='text'>智慧雲端平台及應用開發研討會</title><content type='html'>感謝大家踴躍參加昨天(1/24)的智慧雲端平台及應用開發研討會,&lt;br /&gt;其中相關的投影片和video影片檔，可以參考底下連結：&lt;br /&gt;&lt;a href="http://docs.com/A9NH"&gt;http://docs.com/A9NH&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;當天EasyCloud產品demo&lt;a href="http://www.youtube.com/watch?feature=player_detailpage&amp;amp;v=YwC2CN36KNI"&gt;影片&lt;br /&gt;&lt;/a&gt;WP7上透過手勢放大縮小圖片和文字&lt;a href="http://www.youtube.com/watch?v=WKyJ6MQnVGE"&gt;Demo&lt;/a&gt; (mp4)&lt;br /&gt;WP7簡單程式開發&lt;a href="http://www.youtube.com/watch?v=USNRzL6KC2Y"&gt;Demo影片&lt;/a&gt;&lt;br /&gt;WP7 個人財務管理程式&lt;a href="http://www.youtube.com/watch?v=2FDJeKivyIM"&gt;Demo&lt;/a&gt;(用到了SL toolkit中的圖表控制項在手機上顯示圖表)&lt;br /&gt;如何在VS2010當中透過ORM建立可提供給WP7使用的Web Services &lt;a href="http://www.youtube.com/watch?v=Rgs4raGg-YI"&gt;Demo&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;在這個研討會當中，我們首次Demo了應用程式上Windows Azure雲端以及SQL Azure雲端的步驟，以及開發WP7手機應用程式並且以微軟的雲端技術作為資料儲存位置的開發架構。&lt;br /&gt;&lt;br /&gt;希望對各位有所幫助。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-2025909298046545079?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/2025909298046545079/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=2025909298046545079' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/2025909298046545079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/2025909298046545079'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/01/blog-post.html' title='智慧雲端平台及應用開發研討會'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-4513248078422051904</id><published>2011-01-22T23:06:00.000+08:00</published><updated>2011-01-22T23:07:43.612+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='軟體開發'/><category scheme='http://www.blogger.com/atom/ns#' term='心情'/><category scheme='http://www.blogger.com/atom/ns#' term='雲端'/><title type='text'>the future ahead</title><content type='html'>我們寫的每一行程式，對這個世界會有幫助嗎?&lt;br /&gt;我們的努力，會不會為這個世界帶來一些改變?&lt;br /&gt;讓人變得更快樂? 讓世界變得更美好?&lt;br /&gt;&lt;br /&gt;讓每一個人更喜歡生活中的每一天?&lt;br /&gt;讓世界少一些苦難...多一些愉悅?&lt;br /&gt;我不知道，但我真的很期待...&lt;br /&gt;&lt;br /&gt;&lt;object style="WIDTH: 640px; HEIGHT: 390px"&gt;&lt;param name="movie" value="http://www.youtube.com/v/kv-71NH6bQ0?version=3"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/kv-71NH6bQ0?version=3" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="640" height="390"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-4513248078422051904?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/4513248078422051904/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=4513248078422051904' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/4513248078422051904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/4513248078422051904'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/01/future-ahead.html' title='the future ahead'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-5021409286148873137</id><published>2011-01-04T16:14:00.005+08:00</published><updated>2011-01-04T16:41:59.363+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='心情'/><title type='text'>2011 出發吧...</title><content type='html'>2011的第一個上班日前，連續地接到了幾個電話，讓我覺得，應該要寫篇文章紀念一些事情。&lt;br /&gt;&lt;br /&gt;第一通電話，朋友告訴我他今年決定要離職了，不是因為覺得今年景氣比較好所以準備另謀高就，而是打算豁出去，自己開公司。他說：『活了30多年，等了那麼久，總得下來玩這一把吧~』在網路公司任職那麼多年，看著的都是別人成功的故事，如果自己不下場，錯過了這一次，一定會後悔...&lt;br /&gt;&lt;br /&gt;第二通電話， 一位在教育訓練中心任職多年的講師朋友，決定回到IT職場上，對於授課、寫書的工作覺得不像當年那麼起勁了，他告訴我：『當年坐在台下聽講，總覺得講師在台上意氣風發，整個場次的聽眾隨著講師授課的聲音脈動，眼中閃爍著對技術的衝動與未來的期待』這麼多年過去了，技術起起伏伏，紅牌起起落落，每一季都有新的技術和理論，『還是交給年輕人吧，你自己也別撐太久啊~』他跟我說。&lt;br /&gt;&lt;br /&gt;第三通電話，一位在電腦書籍出版耕耘很久的作者，告訴我今年不打算出實體書了，『現在已經沒有銷量，不過或許會賭一把，嘗試電子書的出版吧。』『還能怎樣呢? 台灣開發人員太少了，天知道人都跑哪去了，連學校的學生都不買書了...花一年寫一本書，賺不到幾萬塊，況且網路上資源那麼多，現在年輕人不興讀書的啦...』『電子書複製和閱讀習慣的問題呢?』我問。『看著辦囉，如果銷量還是起不來，我真的去夜市賣雞排~』他笑著說。&lt;br /&gt;&lt;br /&gt;三通電話幾乎連續著接到，適逢2011年年初第一個上班日，心裡不免有些感慨，過去我們覺得所謂的夕陽產業，是傳統工業的代名詞，但是隨著網際網路的普及，不消說很多習慣的改變讓某些產業措手不及，變化的迅速讓人目不暇給。這幾種心情我都經歷過，所以頗有心有戚戚之感。&lt;br /&gt;&lt;br /&gt;電話中除了互勉之外，對接下來這一年還是抱有不少盼望，雲端技術和行動裝置在接下來這一年依舊會是重點，還有很多好玩的東西不是嗎? 畢竟無限的可能性，是這個行業最吸引人之所在了。&lt;br /&gt;&lt;br /&gt;最後跟朋友說，加油，不管接下來打算怎麼走，2011才開始，出發吧，別遲疑，我們正大步往這一年邁進...&lt;br /&gt;&lt;br /&gt;&lt;object style="WIDTH: 640px; HEIGHT: 390px"&gt;&lt;param name="movie" value="http://www.youtube.com/v/E4lsCCbik_I?version=3"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/E4lsCCbik_I?version=3" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="640" height="390"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;簡體版&lt;br /&gt;&lt;object style="WIDTH: 640px; HEIGHT: 390px"&gt;&lt;param name="movie" value="http://www.youtube.com/v/dT41c7gCT9I?version=3"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/dT41c7gCT9I?version=3" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="640" height="390"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-5021409286148873137?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/5021409286148873137/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=5021409286148873137' title='6 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/5021409286148873137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/5021409286148873137'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/01/2011.html' title='2011 出發吧...'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-2239972679679526338</id><published>2011-01-02T18:00:00.009+08:00</published><updated>2011-01-03T11:07:45.035+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Winodws Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows phone 7'/><title type='text'>迎向2011，面對軟體開發的未來</title><content type='html'>最近花了不少時間寫WP7上的應用程式，坦白說，有一些心得和想法，一直想找機會分享(說真的，FaceBook真的剝奪了寫Blog的時間...)不過心得和想法都跟技術無關，網路上技術資源太多了，而且休假日，不是很適合談技術的問題。&lt;br /&gt;&lt;br /&gt;這一陣子寫WP7的App，直覺的感覺就是很有趣、和很有成就感，主要是因為你知道你的客戶在哪裡，每天你都可以看到下載(和付費)數字，雖然不是即時的，但也足夠激勵人心了。而整個App開發的過程和循環都很短(相較於傳統應用程式)，手機上的功能不宜太複雜，所以一個有經驗的開發人員，用兩三天的時間，已經可以寫出一套不錯的手機應用程式(App)了，這也是開發手機應用程式吸引人的地方之一。&lt;br /&gt;&lt;br /&gt;雖然我沒投身過iPhone軟體開發的領域，但我不難明白，iPhone開發人員當時的心情了，有一段最近看到的iPhone開發人員相關的影片，可以描述這個心情：&lt;br /&gt;&lt;object style="WIDTH: 640px; HEIGHT: 390px"&gt;&lt;param name="movie" value="http://www.youtube.com/v/dgN6H_4aJQg?version=3"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/dgN6H_4aJQg?version=3" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="640" height="390"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;我很喜歡影片中受訪者提到『創作』這兩個字的神情...&lt;br /&gt;&lt;br /&gt;手機應用程式相當適合小型(創業型)的公司投入，不需要花費太多的人力，需要的是創意、專注、和設計能力(不管是軟體或美術)，Apple確實是個有創意的公司，軟體市集的平台，讓屈身於大公司擔任小螺絲釘的程序員(這個字好有趣，用來描述帶點苦命的開發人員很貼切)，有一個獨當一面的可能性。&lt;br /&gt;&lt;br /&gt;讓Developer可以暫時拋開空泛的設計模式、丟掉偉大的CMMI、離開把人搞得很悶的Testing plan，只需要專注在數個簡單的畫面、達成一項簡單的功能、讓使用者手上的電話，可以有不同的可能性。&lt;br /&gt;&lt;br /&gt;而更有趣的是，從開發到上架，時程可以縮短到兩周，第一個feedback可以在上架後的數小時內出現，這都是過去的軟體開發人員所沒有享受過的『刺激』。東西好不好，評價可以很快地回你的面前(我寫了一個簡單的個人財務管理程式，第一個回應的居然是來自國外的某教授，讓我很驚奇)，開發人員和使用者之間的互動可以更頻繁，距離可以更短，這些，都和過去開發中大型應用程式完全不同。而獲利，則是隱藏在這些讓人興奮的回饋之後的紅利。&lt;br /&gt;&lt;br /&gt;我相信很多手機開發人員並非專職，而是有其他的正職工作，對於它們來說，寫一個小App送上軟體市集，與其說是期待獲利，不如說是一種休閒和樂趣...&lt;br /&gt;&lt;br /&gt;什麼?寫程式是休閒和樂趣?&lt;br /&gt;我相信一定很多人知道這種感覺，對於讓開發人員來說，寫程式就跟寫小說、畫一幅畫一樣，他一直是一門創作、一項藝術，有時候同時也是一種休閒樂趣，特別是創作出讓自己都覺得很訝異的效果時，那種成就感筆墨難以形容。&lt;br /&gt;&lt;br /&gt;不過，隨著iPhone上的App數量越來越多，一般小公司的獲利開始越來越低，有一些聽來的統計，大致符合80/20法則，在軟體市集上能賺錢的，大概只有前20%的軟體，其他80%基本上是砲灰，獲利並非分散在每一個開發人員身上，不管軟體是數百、數千、乃至於數十萬。&lt;br /&gt;&lt;br /&gt;我相信在WP7上應該也會是這樣的結果，不過我們大概都沒有辦法否認，未來五年，軟體的重點會從PC上往兩端移動，一端是Cloud, 另一端是Mobile(Phone or Pad)，過去的Client-Server, N-tier，慢慢的就變成Mobile to Cloud。&lt;br /&gt;&lt;br /&gt;現在我們寫的WP7應用程式，已經開始往這樣的架構發展，我用WP7當作Cliend，透過Silverlight撰寫應用程式，好處是我知道未來可以很快地移轉到PC或Pad上, 而Services則可透過WCF/Web Services來撰寫，如果你願意，可以架設在Windows Azure，最後把資料存放在SQL Azure，在這個架構裡面，WP7是很好的資料呈現平台，大型的運算我放在Windows Azure，運算後的結果在WP7上呈現，但RAW Data可以放到SQL Azure中。&lt;br /&gt;&lt;br /&gt;由於WP7的開發透過Silverlight，這和我們現在開發Web應用程式以及PC應用程式(OOB)的方式完全相同，所以我只需要把程式重新compile，即可在Web或PC上執行，我幾乎肯定未來三五年的應用程式開發會走這個架構，這也是這幾年我比較少碰其他開發技術的原因。&lt;br /&gt;&lt;br /&gt;行動裝置上的Apps開發，也讓開發人員重新檢視了自己面對軟體設計的心態，如同我在幾場Session中向大家報告的，現在的辦公室軟體太複雜了，多數的功能是使用者用不到的，操作方式的複雜度阻礙了軟體親和性提高的可能性，回頭focus在最重要的功能上，讓使用者可以不需要額外的training，快速地達成目標，會是未來開發人員的挑戰...&lt;br /&gt;&lt;br /&gt;由於Silverlight對我們來說，相對而言進入障礙相當低，所以WP7是最近接我們的市場，當然，iPhone和機器人目前還遙遙領先，不過現在來談未來手機市場的趨勢似乎還太早，然而行動裝置加上雲端的應用，恐怕已經是接下來兩三年軟體非走不可的一條路了...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-2239972679679526338?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/2239972679679526338/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=2239972679679526338' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/2239972679679526338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/2239972679679526338'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2011/01/wp7facebookblog.html' title='迎向2011，面對軟體開發的未來'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-2241781783898386314</id><published>2010-12-13T14:51:00.002+08:00</published><updated>2010-12-13T14:55:03.779+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='研討會'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows phone 7'/><title type='text'>Windows Phone 7開發技術研討會 投影片</title><content type='html'>感謝大家參與 12/8,9,10 在北中南所舉辦的『&lt;a href="http://msdn.microsoft.com/zh-tw/gg429833.aspx"&gt;Windows Phone 7開發技術研討會&lt;/a&gt;』，我在這個場次當中簡單扼要地介紹了WP7應用程式開發的一些技巧，以及從申請App Hub帳號到將應用程式上傳至Marketplace的整個流程，希望對大家有所幫助。&lt;br /&gt;&lt;br /&gt;這個場次相關的投影片位置如下，請參考：&lt;br /&gt;&lt;a href="http://docs.com/9OAD"&gt;http://docs.com/9OAD&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-2241781783898386314?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/2241781783898386314/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=2241781783898386314' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/2241781783898386314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/2241781783898386314'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2010/12/windows-phone-7_13.html' title='Windows Phone 7開發技術研討會 投影片'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-3837407949553106013</id><published>2010-12-01T18:43:00.016+08:00</published><updated>2010-12-04T00:10:18.625+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows phone 7'/><title type='text'>Windows Phone 7中文通訊錄</title><content type='html'>我知道很多Windows Phone 7的使用者目前遭遇的困難，因為我自己也是使用者之一，不過有趣的地方就是，當碰到問題的時候，可以自己動手寫程式來解決，有時候也算是一種樂趣。&lt;br /&gt;&lt;br /&gt;目前英文版的WP7，最大的障礙就是內建的應用程式(諸如瀏覽器、地圖、電話簿)沒有中文輸入功能，這也是我們先前開發了Chinese SMS, Chinese Mail, Search in Chinese等應用程式的原因。&lt;br /&gt;&lt;br /&gt;但，更令人討厭的是，WP7有一個很強的People Hub功能，可以同步你在雲端(例如hotmail, GMail, facebook)的通訊錄，讓你直接使用，但壞就壞在上千個通訊錄同步下來，沒法輸入中文過濾找人可真是搞死人了。&lt;br /&gt;&lt;br /&gt;儘管WP7強大的UI可以讓你用嚕的嚕到你要找的聯絡人，然後再撥號，但要在一千多個名單中，找到特定某個人這也太痛苦了吧。所以，我們只好自己動手做，我們開發一個程式，在微軟正式將WP7升級成中文版之前，希望能夠有一個簡單的UI可以讓用戶來編輯通訊錄，然後同步到手機上，並且在手機上可以搜尋聯絡人並撥號。手機本來就不適合編輯資料，所以我們希望通訊錄可以在網路上編輯，然後再同步到手機上，可以在網路上編輯通訊錄的Web應用程式很多，survey了一下，最後選擇同步&lt;a href="http://www.google.com/contacts"&gt;Google(也就是GMail)通訊錄&lt;/a&gt;...&lt;br /&gt;&lt;br /&gt;理由是...似乎我身邊的人最常用的就是Google Mail和Google聯絡人，雖然我們都有MSN帳號，但尚且不多人把通訊錄建立在MSN的Windows Live當中(可能也很多人不知道，Outlook可以透過&lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=8a31fbf4-f4bf-4751-954b-5b36d80ec375&amp;amp;displaylang=en"&gt;Hotmail Connector&lt;/a&gt;直接連結雲端的Windows Live Account)。而Google通訊錄可以很輕易的匯入Outlook或其他的通訊錄，且Google Contacts API相當簡單好用，所以Google聯絡人就暫時先變成我們的標的。&lt;br /&gt;&lt;br /&gt;我們利用過去開發好的&lt;a href="http://www.arock.com.tw/ProductsInfo/WP7.aspx"&gt;注音輸入法控制項&lt;/a&gt;，很輕易地達成了通訊錄的搜尋和過濾功能，而同步Google通訊錄的部分，只需要透過Google API即可。&lt;br /&gt;&lt;br /&gt;擁有WP7手機的朋友可以透過&lt;a href="http://social.zune.net/redirect?type=phoneApp&amp;amp;id=d0224b89-eefc-df11-9264-00237de2db9e"&gt;Zune&lt;/a&gt;下載，有興趣的朋友可以參考。 使用的方式很簡單，請先建立一個Gmail帳號，然後進入&lt;a href="http://www.google.com/contacts"&gt;http://www.google.com/contacts&lt;/a&gt;編輯通訊錄，如果你手邊有現成的通訊錄檔案(例如Outlook匯出的.csv)，可以透過Google Contacts匯入，把通訊錄編輯好之後，進入手機Chinese Contacts程式(當然，請先從marketplace下載安裝, 台灣與大陸地區用戶請選擇試用)， 在主選單找到Import Google Contacts...，進入匯入畫面，輸入你的Google帳號密碼，手機程式即可下載通訊錄進行匯入動作，然後，你就可以在Chinese Contacts程式中看到您的通訊錄了...&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_RnPgsDyRc2Y/TPgpqUqhZUI/AAAAAAAAAkw/oVJyawn7Giw/s1600/200x200.png"&gt;&lt;img style="WIDTH: 200px; HEIGHT: 200px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5546228748185068866" border="0" alt="" src="http://1.bp.blogspot.com/_RnPgsDyRc2Y/TPgpqUqhZUI/AAAAAAAAAkw/oVJyawn7Giw/s320/200x200.png" /&gt;&lt;/a&gt;&lt;br /&gt;至於開發人員關心的，如何用程式抓取Google聯絡人，透過Google API真是簡單到不行，Google果然是一家可敬的公司。[&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=173"&gt;source code&lt;/a&gt;]&lt;br /&gt;&lt;br /&gt;補充說明：因為有用戶在問，所以整理一下...&lt;br /&gt;&lt;br /&gt;這個軟體可以做的事情：&lt;br /&gt;　1.下載您的Google(GMail)通訊錄到手機上的Chinese Contacts通訊錄中(不是WP7系統通訊錄)&lt;br /&gt;　2.在Chinese Contacts程式中用注音輸入法(沒有倉頡、拼音、手寫)搜尋通訊錄資料&lt;br /&gt;　3.下載特定位置的.csv檔案(OUTLOOK格式，須為UTF-8)到Chinese Contacts通訊錄中(不是WP7系統通訊錄)&lt;br /&gt;&lt;br /&gt;這個軟體不能做的事情：&lt;br /&gt;　1.讀取你SIM卡中的通訊錄(請自行想法子上傳到Google通訊錄)&lt;br /&gt;　2.直接讓WP7手機同步你的OUTLOOK(你可以將OUTLOOK通訊錄匯出成.csv然後在Google通訊錄中匯入)&lt;br /&gt;&lt;br /&gt;另外，找不到應用程式的WP7用戶，建議你用手機上Marketplace直接搜尋StudyHost.com即可，Zune一般來說會慢一些有時間差。&lt;br /&gt;&lt;br /&gt;這邊可以看到說明：&lt;br /&gt;&lt;a href="http://www.appsfuze.com/applications/windowsphone.tools/chinese-contacts,3193"&gt;http://www.appsfuze.com/applications/windowsphone.tools/chinese-contacts,3193&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-3837407949553106013?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/3837407949553106013/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=3837407949553106013' title='5 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/3837407949553106013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/3837407949553106013'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2010/12/windows-phone-7.html' title='Windows Phone 7中文通訊錄'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_RnPgsDyRc2Y/TPgpqUqhZUI/AAAAAAAAAkw/oVJyawn7Giw/s72-c/200x200.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-4924047496767837863</id><published>2010-11-25T22:33:00.007+08:00</published><updated>2010-11-25T23:02:19.240+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows phone 7'/><title type='text'>Windows Phone 7的Find My Phone功能</title><content type='html'>最近玩Windows Phone 7玩得不亦樂乎...由於Windows Phone在預設的狀況下，手機的通訊錄、行事曆...等資料都是同步Windows Live帳戶(和FaceBook)，使用起來方便不少(當然前提是你的資料已經在雲端...)&lt;br /&gt;&lt;br /&gt;如此狀況下，手機內也不免全是個人的機密資料，如果不見了恐怕超過災難兩字可以形容，也因此，現在的智慧型手機幾乎都有一個間諜級的功能，就是Find My Phone。&lt;br /&gt;&lt;br /&gt;不只是iPhone 4, 現在Windows Phone 7手機也有此功能，只需要在Settings-&gt;Find My Phone項目下，把Save my location ...打開即可。&lt;br /&gt;&lt;br /&gt;接著，用你登入在手機上的預設Windows Live Acount登入 &lt;a href="http://windowsphone.live.com/"&gt;http://windowsphone.live.com/&lt;/a&gt;, 將會看到底下畫面(如果尚未設定，請先進入網頁上的Devices-&gt;Setting進行設定)：&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_RnPgsDyRc2Y/TO56Zbg_j_I/AAAAAAAAAko/OveSYZTCwEE/s1600/p1.png"&gt;&lt;img style="WIDTH: 320px; HEIGHT: 218px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5543502768641118194" border="0" alt="" src="http://1.bp.blogspot.com/_RnPgsDyRc2Y/TO56Zbg_j_I/AAAAAAAAAko/OveSYZTCwEE/s320/p1.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;你會發現，除了可以透過GPS知道手機的所在位置，也可以強制讓手機鈴響一分鐘，或是Lock手機或乾脆把手機上的所有資料給刪了。&lt;/p&gt;&lt;p&gt;這樣可以確保手機遺失時的安全性。不過，當然這也表示，只要有你Windows Live ID帳號密碼的人，可以隨時知道你的手機(也就是你)的所在位置，甚至有人想到反過來應用，可以把自己的手機偷偷留在你的車上或包包裡面，就可以隨時知道你的所在位置...(這也不失為一個好應用)&lt;/p&gt;&lt;p&gt;總之，擁有了GPS以及3G/Wifi功能的手機，將會整合internet有更多元的應用已經是常態，手機上各式各樣的應用程式也越來越別出心裁...帶給開發人員一個無比想像的空間。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-4924047496767837863?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/4924047496767837863/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=4924047496767837863' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/4924047496767837863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/4924047496767837863'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2010/11/windows-phone-7find-my-phone.html' title='Windows Phone 7的Find My Phone功能'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_RnPgsDyRc2Y/TO56Zbg_j_I/AAAAAAAAAko/OveSYZTCwEE/s72-c/p1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-5926100177711727548</id><published>2010-11-12T14:48:00.012+08:00</published><updated>2010-11-14T10:07:59.727+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='研討會'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows phone 7'/><title type='text'>Windows Phone 7 中文應用程式開發經驗分享</title><content type='html'>從上一篇『WP7應用程式撰寫與App Hub - Marketplace 送件、審核經驗分享』到現在，已經過了十多天，在這段時間當中，我們持續的送出了大概是全球唯一的幾個中文應用程式到Marketplace，先前App hub僅開放先期開發人員上傳自己的應用程式，而且從這個月初開始，App Hub已經開放給所有註冊過的開發人員上傳自行撰寫的應用程式了，您上傳了自己撰寫的應用程式了沒?&lt;br /&gt;&lt;br /&gt;最近這幾天，我也聽到了身邊一些朋友買到了Windows Phone手機(真是遠渡重洋的漂洋過海來台灣)，很多人正開始一連串的WP7體驗之旅，我相信過不了多久，就會聽到許多的評價。&lt;br /&gt;&lt;br /&gt;趁有空的時間，我順便整理了一下截至目前為止我們已經Submit的WP7 Application，共有七款，都已經在微軟Marketplace上架，分別是：&lt;br /&gt;1.Chinese SMS：這是中文的簡訊發送程式(內建&lt;a href="http://www.arock.com.tw/ProductsInfo/PinYinInputMethod.aspx"&gt;拚音輸入法&lt;/a&gt;)，由於當前的WP7版本並沒有內建中文輸入法(但可以正確顯示中文)，因此我們建立了一個內建中文輸入法的簡訊發送程式，讓使用者可以輕易地傳送中文簡訊。 這個程式算是過渡階段彌補當前WP7英文版的不足，也驗證了自行設計輸入法在WP7當中是可行的。&lt;br /&gt;&lt;br /&gt;2.Chinese Holy Bible：中文聖經查詢系統，支援&lt;a href="http://www.arock.com.tw/ProductsInfo/WP7.aspx"&gt;注音輸入法&lt;/a&gt;，可透過關鍵字查詢經文，可自由的切換章節，以及設定書籤， 內含整本中文和合本聖經。在這個程式當中，大量地使用了IsolatedStorage與相關的儲存機制，也初步嘗試了電子書的可能性，我覺得WP7的電子書軟體應該不難開發。同時間資料查找的技術全透過Linq來進行，在我所測試的手機上有相當不錯的效能。&lt;br /&gt;&lt;br /&gt;3.Search In Chinese：支援注音輸入法的瀏覽器搜尋程式。由於目前WP7並沒有內建中文輸入，所以內建的瀏覽器並不支援透過輸入中文字來進行Google或bing搜尋，因此我們建立了這個小程式，讓使用者可以注音輸入中文關鍵字，並送入google, Yahoo, Bing等搜尋引擎進行搜尋動作。 這個程式中用上了WebBrowser控制項，可以很輕鬆的在WP7中進行瀏覽器控制。&lt;br /&gt;&lt;br /&gt;4.Taiwan Map：這是我們的愛台灣代表作，可透過注音輸入法輸入關鍵字，例如『台北, 忠孝東路』這樣的關鍵字來查找地址，由於目前的Bing Map只支援英文，所以我們在這個程式當中，特別透過Google API查找了Google的中文台灣地圖，讓WP7上也可以顯示中文地圖(不過可惜Google Map目前是靜態的，動態的Bing Map則暫無中文)。&lt;br /&gt;&lt;br /&gt;5.TW SMS：功能同 1. 但採用的是台灣所習慣的注音輸入法。&lt;br /&gt;&lt;br /&gt;6.PC Remote Controller：這款軟體是純英文軟體，與中文無關，但可以把你的WP7手機當作遙控器，控制你的PC音量，簡報時相當好用。&lt;br /&gt;&lt;br /&gt;7.Chinese Mail：這款軟體類似1和5，讓使用者可以透過中文輸入發送電子郵件，此款軟體同時支援注音語拼音輸入法。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_RnPgsDyRc2Y/TN9D_vqA0MI/AAAAAAAAAkI/rpnsp32XABY/s1600/p1.png"&gt;&lt;img style="WIDTH: 320px; HEIGHT: 192px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5539220829092499650" border="0" alt="" src="http://4.bp.blogspot.com/_RnPgsDyRc2Y/TN9D_vqA0MI/AAAAAAAAAkI/rpnsp32XABY/s320/p1.png" /&gt;&lt;/a&gt;&lt;br /&gt;好了，如果你已經採購了WP7手機，那別忘記用WP7上Marketplace下載這幾款軟體來試用看看，上述的所有軟體都是以免費或免費試用的方式即可下載，所以不需要額外付任何費用。如果有任何意見請mail到&lt;a href="mailto:services@arock.com.tw"&gt;services@arock.com.tw&lt;/a&gt; 給我們。或是在&lt;a href="https://groups.google.com/group/windows-phone-7-application?hl=zh-TW"&gt;討論區&lt;/a&gt;進行討論。&lt;br /&gt;&lt;br /&gt;當然，中文輸入法的部分由於是模擬的，並非系統內建，畢竟這是一個過渡性的替代方案，所以你很容易可以發現還有許多可以調整的不足之處，在微軟正式推出系統的輸入法之前，我們會持續update這些應用程式，盡可能讓輸入法可以貼近使用者真正的需求。&lt;br /&gt;&lt;br /&gt;其實，不管從哪一個角度來看，開發WP7應用程式都比iPhone簡單很多，最近在網路上的評價約莫也是如此，當然，現在iPhone和Android的用戶和軟體數量遠勝過WP7，不過就這幾周WP7的表現來說，已經算是足以讓iPhone和Android開始擔心了。&lt;br /&gt;&lt;br /&gt;說了這麼多，我們會在12月初針對Windows Phone 7的開發經驗有一些分享，這應該是亞太地區針對Windows Phone 7應用程式開發的第一手經驗分享，如果你有興趣，不妨立即報名。&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/zh-tw/gg429833.aspx"&gt;http://msdn.microsoft.com/zh-tw/gg429833.aspx&lt;/a&gt;&lt;br /&gt;期待在會場看到各位。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-5926100177711727548?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/5926100177711727548/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=5926100177711727548' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/5926100177711727548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/5926100177711727548'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2010/11/windows-phone-7.html' title='Windows Phone 7 中文應用程式開發經驗分享'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_RnPgsDyRc2Y/TN9D_vqA0MI/AAAAAAAAAkI/rpnsp32XABY/s72-c/p1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-6973041682499197176</id><published>2010-10-23T12:39:00.017+08:00</published><updated>2010-10-25T09:22:10.678+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows phone 7'/><title type='text'>WP7應用程式撰寫與App Hub - Marketplace 送件、審核經驗分享</title><content type='html'>我想大夥應該都不意外，很久沒更新Blog, 但卻看到我在FaceBook或Plurk上還健在，就表示最近真的很忙，忙什麼呢? 不難猜得出來，就是Windows Phone 7應用程式的開發。&lt;br /&gt;&lt;br /&gt;可能很多人都已經知道，從10/11號微軟CEO Steve Ballmer親自上陣的Windows Phone 7發表會之後，數款由HTC, Dell, Samsung所生產的Windows Phone手機就要正式上市了，最快可能下個月，你就可以在通路上(或透過管道)買到手機。&lt;br /&gt;&lt;br /&gt;當然這個階段的手機是多國語言的英文版，但對於中文的顯示絲毫不受影響，前陣子有幸試用了HTC 7 Mozart 一段時間，整體來說，看過的朋友(我自己就更不用說了)都相當滿意。WM6.5就不提了，與iPhone比較起來，操控感與流暢性毫不遜色。&lt;br /&gt;&lt;br /&gt;但由於是英文機，整個操作介面目前當然都是英文的，但安裝了我們自己撰寫的中文應用程式之後，感覺也沒那麼生硬了。(這一篇po文暫且不談開發過程、流程與應用程式背後的意義，有興趣可參考下個月2010/11月號的Run!PC特別報導)&lt;br /&gt;&lt;br /&gt;最近會一直很忙，是因為一直到今天，總算勉強算是走過整段軟體開發與送件(到Marketplace)的流程。類似App Store，在WP7上開發應用程式並且讓使用者可以下載使用的過程和過去WP6.5不太相同。&lt;br /&gt;&lt;br /&gt;首先，你必須上&lt;a href="http://create.msdn.com/"&gt;App Hub&lt;/a&gt;用你既有的Windows Live ID(MSN帳號)建立一個App Hub帳號(如果不是學生，那你需要付費USD$99)，且建立帳號後需要審核，強烈建議你如果申請個人帳號，請在一開始申請時填的名字就填和你的護照上一樣, 避免後續查驗時發生問題, 流程可參考&lt;a href="http://create.msdn.com/en-US/home/about/developer_registration_walkthrough_choose_account"&gt;這裡&lt;/a&gt;(&lt;a href="http://msdn.microsoft.com/zh-tw/windowsphone/gg180751.aspx"&gt;中文版&lt;/a&gt;)，然後你會收到一封來自GeoTrust的要求認證信件，你必須回這封信件且附上該附的資料，例如護照影本之類，通過審核你的帳號才能開通，一旦開通之後才能將你開發的應用程式送上 Marketplace或是在你登錄的實機上測試。&lt;br /&gt;&lt;br /&gt;(對，如果你沒有通過身分認證，那你寫的程式就只能在模擬器上跑...，所以不管你要把寫好的程式送上微軟Marketplace或在實機上測試，你的App Hub帳號是很重要的)&lt;br /&gt;&lt;br /&gt;接著，就是把你的程式寫完然後在實機上測過，這一部分的經驗是這樣...&lt;br /&gt;1.整體來說，實機的操控流暢度和靈敏度好過模擬器,&lt;br /&gt;2.在實機上的解析度比較好，文字呈現效果比較清晰，所以其實你的程式即便用預設大小的字型，你或許會覺得在模擬器上看怪怪的，但在實機上顯示起來還算不錯。&lt;br /&gt;3.由於CPU不同，模擬器上的程式運行效能普遍好過實機，請注意這跟前述 1. 不衝突，在實機上的測試感覺是，動畫、畫面資料的捲動...等動作都比模擬器流暢，但請注意，如果你的程式耗用大量的CPU資源進行運算(例如我在某個程式中嘗試做了手寫辨識的運算)，在模擬器上跑可能很順，但請注意在實機上運行可能會比較慢一些。&lt;br /&gt;4.如果有需要撥放音效，或是多媒體的處理，建議使用XNA，效能比起Silverlight，會好不少。&lt;br /&gt;5.如果你要大量的存取Isolated Storage，請注意也是在模擬器上的效能好過實機，因此建議你必須在實機上測試過。&lt;br /&gt;&lt;br /&gt;另外，你覺得程式寫的不錯了，準備送上Marketpace讓使用者下載，請在Submit前(其實最好是開發前)先看過&lt;a href="http://go.microsoft.com/?linkid=9730556"&gt;這份&lt;/a&gt;文件，這是微軟審核你的應用程式的標準，你送審的程式，會在3-5天左右的時間內回覆，並且提供你一個test results的report(PDF)，其中如果有測試失敗的項目，則會告訴你對照上述&lt;a href="http://go.microsoft.com/?linkid=9730556"&gt;那份&lt;/a&gt;文件的哪一條Validation Guideline有什麼問題，並且建議你該如何做。&lt;br /&gt;&lt;br /&gt;如果審核通過，你會收到來自Windows Phone Marketplace 的信件，恭喜你應用程式已經通過審核，且同時間，你也會在App Hub上看到你的帳戶底下該應用程式已經通過查驗...&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_RnPgsDyRc2Y/TMOUyKhgOyI/AAAAAAAAAjw/yly5qyUxj0E/s1600/published.png"&gt;&lt;img style="WIDTH: 320px; HEIGHT: 173px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5531428356880349986" border="0" alt="" src="http://2.bp.blogspot.com/_RnPgsDyRc2Y/TMOUyKhgOyI/AAAAAAAAAjw/yly5qyUxj0E/s320/published.png" /&gt;&lt;/a&gt;&lt;br /&gt;大約半個工作天，你的程式就會在Marketplace上架，等到在Marketplace上架之後，你的應用程式就可以從WP7手機上下載使用了。&lt;br /&gt;&lt;br /&gt;透過Zune軟體也可以同步看到你的應用程式：&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_RnPgsDyRc2Y/TMPhj6nFrvI/AAAAAAAAAj4/_3olbIZxeH4/s1600/publishedZune.png"&gt;&lt;img style="WIDTH: 320px; HEIGHT: 194px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5531512774485978866" border="0" alt="" src="http://2.bp.blogspot.com/_RnPgsDyRc2Y/TMPhj6nFrvI/AAAAAAAAAj4/_3olbIZxeH4/s320/publishedZune.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;你可以在App Hub上Submit最多五個免費的軟體到Marketplace，沒有限制個數的付費軟體，在送件填寫應用程式資料時，會要求你填寫(決定)手機使用者在Marketplace上下載你應用程式時，需要付費的金額，這個金額會扣稅之後進入你的當時填寫的銀行帳戶。&lt;br /&gt;&lt;br /&gt;當然，上述的所有應用程式送件(Submit)動作，目前我個人都建議使用英文，包含你在送件時對應用程式的介紹描述，這樣審查時會比較容易通過。後續，我會再詳細分享整個送件的流程和內容，還有撰寫程式的注意事項。&lt;br /&gt;&lt;br /&gt;其實整個流程算不複雜，而在這個階段，對於有興趣撰寫WP7應用程式的開發人員，先學習Silverlight以及申請一個App Hub帳號是必須先準備好的作業。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-6973041682499197176?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/6973041682499197176/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=6973041682499197176' title='17 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/6973041682499197176'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/6973041682499197176'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2010/10/wp7app-hub-marketplace.html' title='WP7應用程式撰寫與App Hub - Marketplace 送件、審核經驗分享'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_RnPgsDyRc2Y/TMOUyKhgOyI/AAAAAAAAAjw/yly5qyUxj0E/s72-c/published.png' height='72' width='72'/><thr:total>17</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-3191089557904460989</id><published>2010-10-11T13:43:00.004+08:00</published><updated>2010-10-11T15:22:05.399+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows phone 7'/><title type='text'>WP7準備亮相...</title><content type='html'>台北時間晚上九點30左右, WP7準備正式出現在世人面前...&lt;br /&gt;台灣主要的生產廠商是HTC，有興趣的朋友可以在網路上看到相關的新聞...&lt;br /&gt;&lt;a href="http://mag.udn.com/mag/digital/storypage.jsp?f_ART_ID=276515"&gt;http://mag.udn.com/mag/digital/storypage.jsp?f_ART_ID=276515 &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;當然，沒在台灣盛大發表，很大一個原因是因為目前登場的機種是英文版，雖然支援Multi-Language可正確無誤的顯示中文，但目前缺少了官方的中文輸入法(狀況就如同iPad, 和早期的iPhone相同)。&lt;br /&gt;&lt;br /&gt;不過不要緊，事實上熟悉Silverlight開發技術的開發人員大多已經磨刀霍霍準備開始跨入WP7的開發領域(這也是我最近忙的沒法更新Blog的原因)，很多讀者和學員問到，我在Techdays demo的WP7應用程式不是明明就有中文輸入法嗎? 怎麼說這個階段沒有呢?&lt;br /&gt;&lt;br /&gt;答案是，中文輸入法是自己做的!&lt;br /&gt;在這個階段，如果你的WP7應用程式需要中文輸入功能，你可能得考慮隨著應用程式綁一個輸入法，目前我們也正在開發相關的輸入法套件，以因應這個過渡階段的需要，相關資訊可以參考底下網址：&lt;br /&gt;&lt;a href="http://www.arock.com.tw/ProductsInfo/WP7.aspx"&gt;http://www.arock.com.tw/ProductsInfo/WP7.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;WP7中文輸入法&lt;a href="http://www.arock.com.tw/Videos/SendSMSWithChineseInputMethodDemo.wmv"&gt;Demo&lt;/a&gt;:&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-3191089557904460989?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/3191089557904460989/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=3191089557904460989' title='3 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/3191089557904460989'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/3191089557904460989'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2010/10/wp7.html' title='WP7準備亮相...'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-4238777619051548086</id><published>2010-09-29T19:42:00.004+08:00</published><updated>2010-09-29T20:03:08.793+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='研討會'/><title type='text'>感謝大家熱情參與 Tech Days 2010</title><content type='html'>感謝大家今天熱情參與今年我所負責的這兩場TechDays場次，在會場看到許多熟悉的老朋友，倍感親切，底下是今天分享的投影片內容，希望對各位有所幫助。&lt;br /&gt;&lt;br /&gt;WPH303 Windows Phone 7 應用程式開發 - 使用 Silverlight [&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=170"&gt;投影片&lt;/a&gt;]&lt;br /&gt;WUX308 Silverlight 安全實務 [&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=172"&gt;投影片&lt;/a&gt;]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-4238777619051548086?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/4238777619051548086/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=4238777619051548086' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/4238777619051548086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/4238777619051548086'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2010/09/tech-days-2010.html' title='感謝大家熱情參與 Tech Days 2010'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-1442211295191569154</id><published>2010-09-27T22:47:00.003+08:00</published><updated>2010-09-27T22:50:54.297+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='研討會'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>TechDays 2010 研討會 的兩個場次</title><content type='html'>&lt;span style="font-size:100%;"&gt;今年TechDays 2010我所負責的兩場研討會，依舊是我所熱愛的Silverlight主題，更重要的是今年還有WP7的加入，相關的資料在底下，期待在會場看到大家。&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#33cc00;"&gt;Windows Phone 7 應用程式開發 - 使用 Silverlight&lt;/span&gt;&lt;br /&gt;Silverlight 技術是目前唯一跨足微軟 Mobile, Business App, Web Site, Desktop/Web/Embedded 的應用程式開發技術，開發人員將可以最小的投資，得到最大的開發效益。在這個場次當中，我們將介紹 Silverlight 開發技術在 Windows Phone 上的應用， 說明如何透過利用Visual Studio 2010 迅速開發 Windows Phone 應用程式。&lt;br /&gt;課程代碼：WPH303&lt;br /&gt;講　　師：董大偉&lt;br /&gt;適合對象：開發人員課程等級：300 - 進階應用&lt;br /&gt;開課時間：2010年09月29日 13:30-14:40&lt;br /&gt;上課地點：101AB&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#33cc00;"&gt;Silverlight 安全實務&lt;/span&gt;&lt;br /&gt;隨著 Silverlight 頻繁的導入企業，逐漸成為商業應用程式和網站的開發趨勢之一後，開發人員開始需要更關切 Silverlight 應用程式的安全性議題。在這個場次當中，我們將會由淺入深，討論 Silverlight 應用程式開發時的安全機制，以及需要注意的問題，以確保應用程式運行時的安全性。&lt;br /&gt;課程代碼：WUX308&lt;br /&gt;講　　師：董大偉&lt;br /&gt;適合對象：開發人員，互動設計師課程等級：300 - 進階應用&lt;br /&gt;開課時間：2010年09月29日 08:40-09:50&lt;br /&gt;上課地點：貴賓廳&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-1442211295191569154?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/1442211295191569154/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=1442211295191569154' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/1442211295191569154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/1442211295191569154'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2010/09/techdays-2010.html' title='TechDays 2010 研討會 的兩個場次'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-5830231771640601829</id><published>2010-09-23T07:09:00.004+08:00</published><updated>2010-09-23T16:55:34.298+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows phone 7'/><title type='text'>5分鐘小Demo - 在WP7當中使用Bing Map地圖控制項</title><content type='html'>5分鐘小Demo - 在WP7當中使用&lt;span style="color:#33cc00;"&gt;Bing Map&lt;/span&gt;地圖控制項&lt;br /&gt;&lt;br /&gt;[&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=169"&gt;Video&lt;/a&gt;]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-5830231771640601829?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/5830231771640601829/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=5830231771640601829' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/5830231771640601829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/5830231771640601829'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2010/09/5demo-wp7bing-map.html' title='5分鐘小Demo - 在WP7當中使用Bing Map地圖控制項'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-5075689465100362224</id><published>2010-09-11T09:20:00.007+08:00</published><updated>2010-09-11T18:16:57.176+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='心情'/><title type='text'>你還有多少時間給自己</title><content type='html'>最近身邊很多朋友在工作上做了(或準備做)一些調整，但卻全不是因為想賺更多錢，或是工作上發生瓶頸，幾乎都只是為了一個原因，想找回人生中的一點時間，留給自己。&lt;br /&gt;&lt;br /&gt;在演講時，對於準備(或剛)畢業、退伍，初出社會的年輕人，我一向只將重點放在積極、樂觀、打拼這幾個字上，正在起步的人生，需要的是尋找一個方向，然後放膽往前衝，跑得快，是這個階段最重要的目標，所以年輕人，你要卯足全力。&lt;br /&gt;&lt;br /&gt;隨著年紀慢慢走向中年，生活當中開始發生了一些改變，我開始意識到，很多人跑得很快，卻不知道自己到底要跑去哪裡，或是這條跑道是不是我該衝刺的方向?&lt;br /&gt;&lt;br /&gt;也或許，你變了，變得有家人依賴，變得有員工或部屬要照顧，變得不再能只顧慮到自己一個人的心情，甚或是有時候你沒有變卻發現自己的跑道變了，跑著跑著發現似乎這條路跟當時熟悉的不同…讓你猶豫是否該繼續這樣跑下去…&lt;br /&gt;&lt;br /&gt;翻閱這一期的商周，提到了『最後14堂星期二的課』作者，當時寫作時的心境，我依稀還有印象，當年這本書對自己所帶來的影響，在心裡所立下的志願和對人生的期待，但隨著年紀漸長，生活開始被工作佔滿，卻讓我很容易忘了起初的信念，對工作和生涯的規劃與期許，還有對自己這一生所許的願望。&lt;br /&gt;&lt;br /&gt;一時興起，我翻了三年前那個已經關閉了的舊blog上的文章(感謝現今的資訊科技，讓我們可以留下一點人生的痕跡…)，當年的blog叫做The Way I Am，後來的blog(就是你現在看的這個)叫做KeepWalking，坦白說，在文字遊戲上有些有趣的意義…&lt;br /&gt;&lt;br /&gt;當年，最後一篇blog，我寫到…&lt;div&gt;----------------------------&lt;br /&gt;&lt;span&gt;&lt;b&gt;曾經有一段時間,數著園區的路燈和蝴蝶,想著未來要怎麼實現夢想,過一個自己喜歡的生活,數年過去,確實很多願望都已經實現(感謝上帝),只是不太敢去想,為了這一切所花費的時間和努力,是否真的是我夢寐以求的願景?人生的天平，會不會太過了頭，過於偏向哪一個方向而迷失自己?&lt;br /&gt;&lt;br /&gt;每一年總有一段時間，有些事情會莫名其妙的迸出來提醒自己，該回頭想想每一步，想想自己的初衷是否還在那裡，感謝上帝,謝謝祢在我徬徨的時後引導我，在我任意妄為的時候提醒我，在我無助的時候幫助我，雖然我不是那麼合祢心意…&lt;br /&gt;&lt;br /&gt;當然，就像我喜歡那個字--KeepWalking,所以理所當然,未來的路還是要繼續的努力走下去,我相信成功的人除了幸運和努力,更多的時候是,不管遭遇任何困難,都毫不考慮選擇放棄…&lt;br /&gt;&lt;br /&gt;就算有時候碰到不如意,so what,人生那麼短,這一切都會過去...&lt;br /&gt;就算有時候如魚得水，過的很得意，也別忘記提醒自己,同樣的,這一切都會過去...&lt;br /&gt;&lt;br /&gt;忘了是誰曾經跟我說,...&lt;br /&gt;有意義的人生,不是獲得了多少東西,而是為別人留下了多少東西...&lt;br /&gt;放眼望去，快樂的人,從不因為自己擁有了很多東西,而是能夠給予...&lt;/b&gt;&lt;br /&gt;&lt;/span&gt;----------------------------&lt;br /&gt;沒想到三年前的自己，腦袋還比現在清晰…&lt;br /&gt;&lt;br /&gt;坦白說，這幾年寫blog讓我很滿足也很開心，但想想我有些遺憾，隨著blog看的人越來越多，我能寫的東西就越來越少，也因為年紀，也早已沒有當年會因為有感而發就立即下筆的衝動與犀利。頂個老師的名字其實很無趣，我更愛學員們直接叫我David。&lt;br /&gt;&lt;br /&gt;記得當年我還在園區，還在想人生該走的方向，也比較有時間停下來想想自己，當時我很喜歡張文亮老師的一篇短詩：&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;b&gt;上帝給我一個任務，叫我牽一隻蝸牛去散步。&lt;br /&gt;我不能走得太快，蝸牛已經盡力爬，&lt;br /&gt;每次總是往前挪那麼一點點。&lt;br /&gt;我催牠，我唬牠，我責備牠，&lt;br /&gt;蝸牛用抱歉的眼光看著我，彷彿說：「人家已經盡了全力！」&lt;br /&gt;我拉牠，我扯牠，我甚至想踢牠，&lt;br /&gt;蝸牛受了傷，牠流著汗，喘著氣，往前爬。&lt;br /&gt;真奇怪，為什麼上帝叫我牽一隻蝸牛去散步？&lt;br /&gt;「上帝啊！為什麼？」天上一片安靜。&lt;br /&gt;「唉！也許上帝抓蝸牛去了！」&lt;br /&gt;好吧！鬆手吧！反正上帝不管了，我還管甚麼？&lt;br /&gt;任蝸牛往前爬，我在後面生悶氣。&lt;br /&gt;咦？我聞到花香，原來這邊有個花園。&lt;br /&gt;我感到微風吹來，原來夜裡的風這麼溫柔。&lt;br /&gt;慢著！我聽到鳥叫，我聽到蟲鳴，我看到滿天的星斗多亮麗。&lt;br /&gt;咦？以前怎麼沒有這些體會？&lt;br /&gt;我忽然想起來，莫非是我弄錯了！&lt;br /&gt;原來是上帝叫蝸牛牽我去散步。&lt;/b&gt;&lt;br /&gt;----------------------------&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;人生的境遇，有時候起起伏伏有時候斷斷續續，有時候走在高峰可以讓你忘了呼吸，坦白說，路還是要也一定會繼續走下去，但請別忘記，關鍵的時刻，多留一些時間給自己。&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-5075689465100362224?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/5075689465100362224/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=5075689465100362224' title='3 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/5075689465100362224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/5075689465100362224'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2010/09/blog-post.html' title='你還有多少時間給自己'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-4230126162139984560</id><published>2010-08-20T12:33:00.011+08:00</published><updated>2010-08-20T12:47:49.917+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='難度等級200'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight Toolkit'/><title type='text'>Silverlight toolkit中的Theme控制項</title><content type='html'>先前我們曾經提到過，Silverlight的所有控制項，都可以透過Style的方式來替換呈現的外觀樣式，當然這些樣式你必須自行設計，不過在Silverlight Toolkit當中，已經內建了數種樣式可以讓開發人員直接使用，同時Silverlight Toolkit當中也提供了相對應的Theme控制項，讓您可以很方便的動態切換外觀樣式如果你安裝了Silvelright toolkit，可以在場景中最下層墊一個Theme控制項：&lt;pre class="brush: xml"&gt;&amp;lt;!--在Grid控制項外墊一個Theme--&gt;&lt;br /&gt;&amp;lt;toolkit:Theme Name="theme1" &gt;&lt;br /&gt;&amp;lt;!--Grid中的控制項可以自由佈置--&gt;&lt;br /&gt;&amp;lt;Grid &gt;&lt;br /&gt;&amp;lt;Button Margin="19,79,0,0" Content="ShinyBlue" Name="Button1" Click="Button1_Click" /&gt;&lt;br /&gt;&amp;lt;sdk:Calendar Name="calendar1" /&gt;&lt;br /&gt;&amp;lt;sdk:DatePicker Name="datePicker1" /&gt;&lt;br /&gt;&amp;lt;ProgressBar Name="progressBar1" /&gt;&lt;br /&gt;&amp;lt;Button Content="RainierOrange" Name="button2" Click="button2_Click" /&gt;&lt;br /&gt;&amp;lt;/Grid&gt;&lt;br /&gt;&amp;lt;/toolkit:Theme&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;接著，請在Button上撰寫底下的指令碼：&lt;br /&gt;&lt;pre class="brush:c-sharp"&gt;&lt;br /&gt;private void Button1_Click(object sender, RoutedEventArgs e)&lt;br /&gt;{&lt;br /&gt;//切換成ShinyBlue&lt;br /&gt;theme1.ThemeUri =&lt;br /&gt;  new Uri("/System.Windows.Controls.Theming.ShinyBlue;component/Theme.xaml", UriKind.RelativeOrAbsolute);&lt;br /&gt;}&lt;br /&gt;private void button2_Click(object sender, RoutedEventArgs e)&lt;br /&gt;{&lt;br /&gt;//切換成RainierOrange&lt;br /&gt;theme1.ThemeUri =&lt;br /&gt;  new Uri("System.Windows.Controls.Theming.RainierOrange;component/Theme.xaml", UriKind.RelativeOrAbsolute);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;請特別留意，上面的程式碼會讓theme1控制項的透過抓取resource的方式來取得style定義，而上面程式碼中所撰寫的『System.Windows.Controls.Theming.RainierOrange』指的是組件(.dll)位置，而『Theme.xaml』則是Resource名稱，由於Silverlight Toolkit當中已經幫我們設計好了數種不同的樣式，您可以在安裝了Toolkit之後，透過Add Reference將樣式加入：&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_RnPgsDyRc2Y/TG4GwiISSxI/AAAAAAAAAjY/wZibdqwjvKw/s1600/p1.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 245px;" src="http://1.bp.blogspot.com/_RnPgsDyRc2Y/TG4GwiISSxI/AAAAAAAAAjY/wZibdqwjvKw/s320/p1.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5507346825185741586" /&gt;&lt;/a&gt;&lt;div&gt;&lt;p class="MsoBodyTextIndent"&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;;mso-hansi-Times New Roman&amp;quot;font-family:&amp;quot;;"&gt;當然，加入這些樣式會讓你的&lt;/span&gt;&lt;span lang="EN-US"&gt;XAP&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;;mso-hansi-Times New Roman&amp;quot;font-family:&amp;quot;;"&gt;檔案跟著膨脹，請選擇你需要的外觀樣式即可。&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoBodyTextIndent"&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;;mso-hansi-Times New Roman&amp;quot;font-family:&amp;quot;;"&gt;如此一來就可以動態切換樣式了，相當的簡單：&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_RnPgsDyRc2Y/TG4GwiISSxI/AAAAAAAAAjY/wZibdqwjvKw/s1600/p1.jpg"&gt;&lt;/a&gt;&lt;img src="http://3.bp.blogspot.com/_RnPgsDyRc2Y/TG4Gw4DXUPI/AAAAAAAAAjg/zd1it0IVQAM/s320/p2.jpg" style="cursor:pointer; cursor:hand;width: 320px; height: 262px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5507346831070679282" /&gt;&lt;/div&gt;&lt;div&gt;[&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=168"&gt;範例下載&lt;/a&gt;]&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-4230126162139984560?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/4230126162139984560/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=4230126162139984560' title='4 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/4230126162139984560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/4230126162139984560'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2010/08/silverlight-toolkittheme.html' title='Silverlight toolkit中的Theme控制項'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_RnPgsDyRc2Y/TG4GwiISSxI/AAAAAAAAAjY/wZibdqwjvKw/s72-c/p1.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-5153970254471595385</id><published>2010-08-16T10:17:00.015+08:00</published><updated>2010-08-16T18:59:30.485+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='難度等級300'/><title type='text'>Silverlight Data Binding中的Static Resources Binding</title><content type='html'>最近我在上課中曾經提到，Silvelright的Data Binding機制是如何地與過去ASP.NET和WinForm不同，這一部分一直是我非常熱愛Silverlight技術的原因，從最簡單的Data Binding機制，到Validation然後是data annotation，接著是Element to Element Binding，各式各樣精彩豐富的資料處理機制和效果，全部都藉著Data Binding技術來實現，連MVVM裡面都有Data Binding的影子...&lt;br /&gt;&lt;br /&gt;而Silvelright技術的Data Binding又和ASP.NET/WebForm如此的不同，叫人又愛又恨，愛的是它功能之強大，幾乎可以說是貫串整個Silverlight開發架構，而讓人討厭的則是他和過去ASP.NET與WinForm時代的data Binding有那麼些許的不同。&lt;br /&gt;&lt;br /&gt;然而，不管怎麼說，學習Silverlight時Data Binding絕對是你無法忽視的一大塊重要領域。這也是我Silvelright 4.0新書中花了將近萬把字很認真很努力的把Data Binding說個仔細的原因。雖然如此，我最喜歡的還是在課堂上和學員們分享Silverlight的Data Binding技術，上一期&lt;a href="http://www.global-pec.com/allopencourses.aspx#ITSL003"&gt;課程&lt;/a&gt;的學員應該可以很明顯的感受到，我們在Data Binding和N-tier架構概念的介紹所花的時間與精力。&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;原因都只有一個，因為Silverlight的data Binding非常、非常重要!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;同時間由於VS2010開始支援Silvelright的所視即所得設計，你會發現我們可以在VS2010中點選某個UI物件，物件的幾乎每一個屬性都可以設定Binding，而除了Element To Element Binding之外，讀者一定常常看到在微軟官網介紹的Silvelright應用程式中，常常利用Data Binding技術Bind到一個或多個Static Resources。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;這種場合相當特別，一般來說，我們在ASP.NET/WinForm是沒有這種概念的，Data Binding 繫結到的資料來源都是後面(後端，例如DB)傳過來的，但Silverlight的Data Binding由於是Bind到一個Object，所以可以寫程式new一個Object，然後Bind起來。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;可是，往往我們這樣做會很麻煩，Binding動作會被切分成兩段，一段是在XAML碼上面寫Markup Binding指令，另外一段是寫程式new一個object或一個Collection，接著藉由設定UI Element的DataContext屬性或ItemsSource屬性來進行Binding。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;有沒有可能，我們可以透過UI XAML描述就可以new出一個物件，並且進行Binding呢? 當然可以，例如，我設計了一個類別如下(請留意這個類別實作了INotifyPropertyChanged)，它表達一筆資料：&lt;/div&gt;&lt;pre class="brush:c-sharp"&gt;namespace BasicDataBinding&lt;br /&gt;{&lt;br /&gt; //一筆資料的類別結構&lt;br /&gt; public class AddressBookItem : System.ComponentModel.INotifyPropertyChanged&lt;br /&gt; {&lt;br /&gt;     private string _Cname;&lt;br /&gt;     /// 姓名&lt;br /&gt;     public string Cname&lt;br /&gt;     {&lt;br /&gt;         get { return _Cname; }&lt;br /&gt;         set { _Cname = value;  (...略...) }&lt;br /&gt;     }&lt;br /&gt;     private string _Tel;&lt;br /&gt;     /// &lt;summary&gt;&lt;br /&gt;     /// 電話&lt;br /&gt;     /// &lt;/summary&gt;&lt;br /&gt;     public string Tel&lt;br /&gt;     {&lt;br /&gt;         get { return _Tel; }&lt;br /&gt;         set { _Tel = value;  (...略...)}&lt;br /&gt;     }&lt;br /&gt;     private string _Address;&lt;br /&gt;     /// &lt;summary&gt;&lt;br /&gt;     /// 地址&lt;br /&gt;     /// &lt;/summary&gt;&lt;br /&gt;     public string Address&lt;br /&gt;     {&lt;br /&gt;         get { return _Address; }&lt;br /&gt;         set { _Address = value;  (...略...) }&lt;br /&gt;     }&lt;br /&gt;     //實作事件&lt;br /&gt;     public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;&lt;br /&gt;     //觸發事件用函式&lt;br /&gt;     public void NotifyPropertyChanged(string propertyName)&lt;br /&gt;     {&lt;br /&gt;       (...略...)&lt;br /&gt;     }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div&gt;然後我設計該類別的集合(請注意繼承自ObservableCollection)：&lt;/div&gt;&lt;pre class="brush:c-sharp"&gt;namespace BasicDataBinding&lt;br /&gt;{&lt;br /&gt;   //繼承ObservableCollection泛型類別&lt;br /&gt;   //表達一堆AddressBookItem的資料集合&lt;br /&gt;   public class AddressBooks : System.Collections.ObjectModel.ObservableCollection&lt;addressbookitem&gt;&lt;br /&gt;   {&lt;br /&gt;       (...略...)&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;請留意namespace都在BasicDataBinding。&lt;br /&gt;&lt;br /&gt;好了，有了這些個類別之後，我們可以透過撰寫底下程式碼來建立DataForm與data之間的DataBinding，例如：&lt;pre class="brush:c-sharp"&gt;//宣告資料存放物件集合&lt;br /&gt;AddressBooks data=new AddressBooks();&lt;br /&gt;//將資料與DataForm繫結&lt;br /&gt;this.dataForm1.ItemsSource = data;&lt;br /&gt;&lt;/pre&gt;但這樣要寫程式碼，如果是初階程式設計師，或是Designer，或是痛恨寫Code的開發人員，會覺得這樣太痛苦。不能透過VS2010或Blend在XAML上拖拖拉拉設定一下就完成Data Binding嗎? 可以。&lt;br /&gt;&lt;br /&gt;請先在XAML上註冊一下這個namespace：&lt;pre class="brush: xml"&gt;&amp;lt;UserControl x:Class="BasicDataBinding.MainPage"&lt;br /&gt;   xmlns:LocalData="clr-namespace:BasicDataBinding"&gt;&lt;/pre&gt;&lt;br /&gt;然後在Resources區段宣告它：&lt;pre class="brush: xml"&gt;&lt;br /&gt;&amp;lt;UserControl.Resources&gt;&lt;br /&gt;  &amp;lt;LocalData:AddressBooks x:Key="MyAddressBooks"&gt;&lt;br /&gt;  &amp;lt;/LocalData:AddressBooks&gt;&lt;br /&gt;&amp;lt;/UserControl.Resources&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;這樣的宣告，就等同於你new一個AddressBooks，並命名為MyAddressBooks，例如&lt;br /&gt;&lt;pre class="brush:c-sharp"&gt;&lt;br /&gt;AddressBooks MyAddressBooks=new MyAddressBooks();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;但不一樣的是，在XAML中的宣告：&lt;br /&gt;1.它是resource，便於管理或重用。&lt;br /&gt;2.它可以被VS2010看得懂，並且在設計階段就透過Wizard來進行Binding。&lt;br /&gt;&lt;br /&gt;所以，這樣我們在XAML中等同於new了一個ddressBooks集合物件，名稱為MyAddressBooks，如此一來，我們可以直接針對DataForm的ItemsSource屬性進行Apply Binding：&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_RnPgsDyRc2Y/TGkT5I5QUII/AAAAAAAAAjI/hosN_qZ3MME/s1600/p1.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 193px;" src="http://4.bp.blogspot.com/_RnPgsDyRc2Y/TGkT5I5QUII/AAAAAAAAAjI/hosN_qZ3MME/s320/p1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5505953891798241410" /&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_RnPgsDyRc2Y/TGkT5I5QUII/AAAAAAAAAjI/hosN_qZ3MME/s1600/p1.png"&gt;&lt;/a&gt;在Wizard中只需要透過設定的方式即可：&lt;/div&gt;&lt;div&gt;&lt;img src="http://1.bp.blogspot.com/_RnPgsDyRc2Y/TGkT5ZK8HaI/AAAAAAAAAjQ/NH7aDIoefGU/s320/p2.png" style="cursor:pointer; cursor:hand;width: 320px; height: 181px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5505953896167382434" /&gt;&lt;/div&gt;&lt;br /&gt;這樣的概念和技巧在Silverlight當中常常被用到。一開始的時候我發現很讓人難懂，特別是有ASP.NET或WinForm經驗的學員不容易明白Silverlight的Binding是怎麼回事，因為你會發現DataForm的XAML碼中，資料繫結指令是：&lt;pre class="brush: xml"&gt;&amp;lt;toolkit:DataForm Margin="12,180,354,12" Name="dataForm1" ItemsSource="{Binding Source={StaticResource MyAddressBooks}}" /&gt;&lt;/pre&gt;&lt;br /&gt;就這麼一行，它告訴你繫結到StaticResource MyAddressBooks，但StaticResource MyAddressBooks又是從哪來的呢? 即便你找到前面宣告的&lt;pre class="brush: xml"&gt;&lt;br /&gt;&amp;lt;UserControl.Resources&gt;&lt;br /&gt;  &amp;lt;LocalData:AddressBooks x:Key="MyAddressBooks"&gt;&lt;br /&gt;  &amp;lt;/LocalData:AddressBooks&gt;&lt;br /&gt;&amp;lt;/UserControl.Resources&gt;&lt;br /&gt;&lt;/pre&gt;又很難理解LocalData這個namespace又是從何而來的，裡面的AddressBooks又在哪?...???&lt;br /&gt;&lt;br /&gt;但是老外撰寫這一類的Silverlight範例特多，有時候又沒解釋清楚，常常讓開發人員只看範例會搞不清楚到底是怎麼回事，但，其實理解後發現也不是很困難，這卻是一個相當簡單卻很好用的概念。Silverlight把過去我們在TechED提到過的『宣告式語法』概念發揮的淋漓盡致，不只是宣告一個UI，甚至可以宣告一個物件(Object)，而記憶體中的物件和Silvelright的UI Control又可以Binding，這又是Silvelright與WPF的獨特之處。&lt;br /&gt;&lt;br /&gt;用慣了之後，讓人真的很enjoy~&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-5153970254471595385?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/5153970254471595385/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=5153970254471595385' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/5153970254471595385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/5153970254471595385'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2010/08/silverlight-data-bindingstatic.html' title='Silverlight Data Binding中的Static Resources Binding'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_RnPgsDyRc2Y/TGkT5I5QUII/AAAAAAAAAjI/hosN_qZ3MME/s72-c/p1.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-3502758865698286974</id><published>2010-08-07T14:12:00.002+08:00</published><updated>2010-08-07T14:15:18.754+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='無關程式'/><category scheme='http://www.blogger.com/atom/ns#' term='找回生活'/><category scheme='http://www.blogger.com/atom/ns#' term='心情'/><title type='text'>MSDN Flash專訪</title><content type='html'>接受MSDN Flash專訪, 有興趣的朋友們可以參考底下網址：&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/zh-tw/cc524082.aspx#a5"&gt;http://msdn.microsoft.com/zh-tw/cc524082.aspx#a5&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-3502758865698286974?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/3502758865698286974/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=3502758865698286974' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/3502758865698286974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/3502758865698286974'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2010/08/msdn-flash.html' title='MSDN Flash專訪'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-4960377308074700075</id><published>2010-07-28T10:33:00.009+08:00</published><updated>2010-07-28T12:51:13.163+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>關於Silverlight的Style機制與ResourceDictionary</title><content type='html'>前幾天在&lt;a href="http://www.facebook.com/pages/David-deNET-Walker-zhuan-ye/115848851788030"&gt;FaceBook專頁&lt;/a&gt;上&lt;span style="font-weight:bold;"&gt;明城&lt;/span&gt;提到了關於Silverlight中的Style機制，才恍然想起在先前的Blog和書上幾乎都完全沒有提到ResourceDictionary這個在SL3之後被加進來的物件，因此趁著SL4的書籍在做最後階段的整理，順便在Blog上提一下這個物件。&lt;br /&gt;ResourceDictionary讓我們可以在宣告Resource時，以Dictionary的方式來建置，例如：&lt;br /&gt;&lt;pre class="brush:html"&gt;&lt;br /&gt;&lt;Grid.Resources&gt;&lt;br /&gt;  &lt;!--樣式定義--&gt;&lt;br /&gt;  &lt;ResourceDictionary x:Name="RD1"&gt;&lt;br /&gt;    &lt;!--加上了ResourceDictionary--&gt;&lt;br /&gt;    &lt;Style TargetType="TextBox" x:Key="TextBoxStyle1"&gt;&lt;br /&gt;      &lt;!--資源TextBoxStyle1--&gt;&lt;br /&gt;      &lt;Setter Property="Width" Value="200"/&gt;&lt;br /&gt;      &lt;Setter Property="Height" Value="30"/&gt;&lt;br /&gt;      &lt;Setter Property="Margin" Value="4"/&gt;&lt;br /&gt;      &lt;Setter Property="Background" Value="Yellow"/&gt;&lt;br /&gt;      &lt;Setter Property="FontSize" Value="14"/&gt;&lt;br /&gt;    &lt;/Style&gt;&lt;br /&gt;    &lt;!--資源TextBoxStyle1--&gt;&lt;br /&gt;    &lt;Style TargetType="TextBox" x:Key="TextBoxStyle2"&gt;&lt;br /&gt;      &lt;!--資源TextBoxStyle2--&gt;&lt;br /&gt;      &lt;Setter Property="Width" Value="200"/&gt;&lt;br /&gt;      &lt;Setter Property="Height" Value="30"/&gt;&lt;br /&gt;      &lt;Setter Property="Margin" Value="4"/&gt;&lt;br /&gt;      &lt;Setter Property="Background" Value="LightBlue"/&gt;&lt;br /&gt;      &lt;Setter Property="FontSize" Value="14"/&gt;&lt;br /&gt;    &lt;/Style&gt;&lt;br /&gt;  &lt;/ResourceDictionary&gt;&lt;br /&gt;&lt;/Grid.Resources&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;這樣有一個好處，ResourceDictionary是繼承自Dictionary類別的物件，當Resource非常多的時候，或是Resource是動態載入的時候，開發人員可能無法記得或熟知每一個Resource的名稱，我們可以透過底下這樣的程式碼在ResourceDictionary中確認某一個資源設定是否存在：&lt;br /&gt;&lt;pre class="brush:c-sharp"&gt;&lt;br /&gt;//判斷TextBoxStyle1是否存在&lt;br /&gt;if (this.RD1.Contains("TextBoxStyle1"))&lt;br /&gt;{ … }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;因此，當資源被放置在ResourceDictionary中之後，我們也可以透過程式碼來動態的設置樣式，例如：&lt;br /&gt;&lt;pre class="brush:c-sharp"&gt;&lt;br /&gt;private void button1_Click(object sender, RoutedEventArgs e)&lt;br /&gt;{&lt;br /&gt;    //判斷TextBoxStyle1是否存在&lt;br /&gt;    if (this.RD1.Contains("TextBoxStyle1")) &lt;br /&gt;    {&lt;br /&gt;        //套用Resource&lt;br /&gt;        this.TextBox1.Style = RD1["TextBoxStyle1"] as Style;&lt;br /&gt;        this.TextBox2.Style = RD1["TextBoxStyle1"] as Style;&lt;br /&gt;        this.TextBox3.Style = RD1["TextBoxStyle1"] as Style;&lt;br /&gt;    }&lt;br /&gt;    else&lt;br /&gt;    {&lt;br /&gt;        MessageBox.Show("找不到此資源");&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;private void button2_Click(object sender, RoutedEventArgs e)&lt;br /&gt;{&lt;br /&gt;    //判斷TextBoxStyle2是否存在&lt;br /&gt;    if (this.RD1.Contains("TextBoxStyle2"))&lt;br /&gt;    {&lt;br /&gt;        //套用Resource&lt;br /&gt;        this.TextBox1.Style = RD1["TextBoxStyle2"] as Style;&lt;br /&gt;        this.TextBox2.Style = RD1["TextBoxStyle2"] as Style;&lt;br /&gt;        this.TextBox3.Style = RD1["TextBoxStyle2"] as Style;&lt;br /&gt;    }&lt;br /&gt;    else&lt;br /&gt;    {&lt;br /&gt;        MessageBox.Show("找不到此資源");&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;如此一來，我們不僅可以利用樣式動態決定控制項的外觀，也可以透過程式碼一次設置多個控制項，讓場景中的控制項可以有一致性的外觀。&lt;br /&gt;&lt;br /&gt;當然，還有其他更多的內容，可以參考我們即將出版的SL4書籍。 &lt;br /&gt;此範例請參考[&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=161"&gt;CodeStorage&lt;/a&gt;]。&lt;br /&gt;&lt;br /&gt;有興趣的朋友也可以參考明城寫的這篇文章：&lt;br /&gt;http://kenny.microdream.tw/index.php/archives/836.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-4960377308074700075?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/4960377308074700075/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=4960377308074700075' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/4960377308074700075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/4960377308074700075'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2010/07/silvelrightstyle.html' title='關於Silverlight的Style機制與ResourceDictionary'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-9076911798252626759</id><published>2010-07-24T14:55:00.006+08:00</published><updated>2010-07-24T15:11:25.917+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>以擴充方法替Canvas, Grid...等容器建立淡入淡出效果</title><content type='html'>從.NET的語言導入的擴充方法之後，我一直覺得它是一個挺方便的技術。&lt;br /&gt;而開發環境的配合，也讓擴充方法的便利性更加的高。&lt;br /&gt;&lt;br /&gt;舉個例子來說,我們寫了一段以程式碼動態為按鈕建立滑鼠移過時的淡入淡出效果，透過擴充方法，我們可以在主程式當中這樣使用：&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_RnPgsDyRc2Y/TEqQXhCL7kI/AAAAAAAAAjA/QalACnpNGxo/s1600/p1.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 139px;" src="http://2.bp.blogspot.com/_RnPgsDyRc2Y/TEqQXhCL7kI/AAAAAAAAAjA/QalACnpNGxo/s320/p1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5497365028838043202" /&gt;&lt;/a&gt;&lt;br /&gt;圖中的ButtonPanel是繼承自Panel的Canvas物件，當然，Canvas物件是沒有registerFadeEffect方法的，但由於我們替Panel建立了擴充方法：&lt;br /&gt;&lt;pre class="brush:c-sharp"&gt;&lt;br /&gt;    public static class MyEffects   //改為靜態類別, 以適用擴充方法&lt;br /&gt;    {&lt;br /&gt;        //註冊事件處理函式(擴充方法版)&lt;br /&gt;        public static void registerFadeEffect(this Panel container)&lt;br /&gt;        {&lt;br /&gt;            //設定先為0.1&lt;br /&gt;            container.Opacity = 0.1;&lt;br /&gt;            //如果滑鼠進入&lt;br /&gt;            container.MouseEnter += container_MouseEnter;&lt;br /&gt;            //如果滑鼠離開&lt;br /&gt;            container.MouseLeave += container_MouseLeave;&lt;br /&gt;        }&lt;/pre&gt;&lt;br /&gt;使得VS2010可以直接在ButtonPanel後面帶出該擴充方法，呼叫起來相當便利。&lt;br /&gt;&lt;br /&gt;請注意建立擴充方法的關鍵在其所屬的類別為靜態類別，且方法中第一個參數前加上this, 就表示該方法要提供給該參數所屬型別的所有物件使用。&lt;br /&gt;&lt;br /&gt;程式碼下載請參考[&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=158" target=_blank&gt;CodeStorage&lt;/a&gt;]。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-9076911798252626759?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/9076911798252626759/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=9076911798252626759' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/9076911798252626759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/9076911798252626759'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2010/07/canvas-grid.html' title='以擴充方法替Canvas, Grid...等容器建立淡入淡出效果'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_RnPgsDyRc2Y/TEqQXhCL7kI/AAAAAAAAAjA/QalACnpNGxo/s72-c/p1.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-8939221669249659387</id><published>2010-07-20T08:53:00.006+08:00</published><updated>2010-07-20T09:03:42.221+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='範例'/><category scheme='http://www.blogger.com/atom/ns#' term='CodeStorage'/><title type='text'>CodeStorage最新下載排行</title><content type='html'>CodeStorage最新下載排行(2010/7/1~2010/7/20)&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://codestorage.ria101.com.tw/_HitsCount/20100720.html" target="_blank"&gt;&lt;img src="http://codestorage.ria101.com.tw/_HitsCount/20100720.jpg" style="cursor:pointer; cursor:hand;width: 569px; height: 360px;" border="0" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;想看看大夥對什麼比較有興趣? 請點選[&lt;a href="http://codestorage.ria101.com.tw/_HitsCount/20100720.html" target="_blank"&gt;這裡&lt;/a&gt;]。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-8939221669249659387?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/8939221669249659387/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=8939221669249659387' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/8939221669249659387'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/8939221669249659387'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2010/07/codestorage.html' title='CodeStorage最新下載排行'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-6347091541169044361</id><published>2010-07-19T07:50:00.005+08:00</published><updated>2010-07-19T08:00:14.374+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET 4.0'/><title type='text'>ASP.NET AJAX中的HTML編輯器</title><content type='html'>HTML Editor是在最近這幾個版本的ASP.NET AJAX Control tooklit當中被加入的，不管是APS.NET 3.5或4.0都可以使用。實際上使用的時候和坊間一般的ASP.NET HTML編輯器如出一轍，相當簡單：&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_RnPgsDyRc2Y/TEOUJ1bxXlI/AAAAAAAAAi4/Tv-NfE3AKdY/s1600/p1.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 314px;" src="http://2.bp.blogspot.com/_RnPgsDyRc2Y/TEOUJ1bxXlI/AAAAAAAAAi4/Tv-NfE3AKdY/s320/p1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5495398867005431378" /&gt;&lt;/a&gt;&lt;br /&gt;可以透過content屬性設定或取得HTML值：&lt;br /&gt;&lt;pre class="brush:c-sharp"&gt;&lt;br /&gt;        protected void Button1_Click(object sender, EventArgs e)&lt;br /&gt;        {&lt;br /&gt;            //取得HTML碼&lt;br /&gt;            this.Literal1.Text= this.Editor1.Content;&lt;br /&gt;        }&lt;/pre&gt;&lt;br /&gt;但請留意，不要將HTML值填入TextBox控制項中，會不work，也有安全性的顧慮。另外使用前請記得先引用AJAX Control Toolkit套件，並從工具箱中將Editor拖曳到頁面中，請務必設定其width與height屬性。&lt;br /&gt;&lt;br /&gt;範例下載請至codeStorage：[&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=140"&gt;下載&lt;/a&gt;]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-6347091541169044361?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/6347091541169044361/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=6347091541169044361' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/6347091541169044361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/6347091541169044361'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2010/07/aspnet-ajaxhtml.html' title='ASP.NET AJAX中的HTML編輯器'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_RnPgsDyRc2Y/TEOUJ1bxXlI/AAAAAAAAAi4/Tv-NfE3AKdY/s72-c/p1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-5056673391648048800</id><published>2010-07-16T11:18:00.005+08:00</published><updated>2010-07-16T11:23:57.063+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><title type='text'>透過ASP.NET AJAX 4 Client Libraries實現 Modal Popup Window</title><content type='html'>現在很多網站都導入了AJAX技術，透過AJAX技術在網頁上實現類似Windows的強制回應視窗(Modal Popup Window)效果，像FaceBook、Google都有廣泛的使用這些功能。&lt;br /&gt;&lt;br /&gt;底下連結的這個範例介紹如何透過ASP.NET AJAX Client Libraries，不需要引用特定.dll，只需要參考MS CDN即可輕鬆在網頁上建立這樣的凸顯式強制回應視窗功能。&lt;br /&gt;&lt;br /&gt;程式碼約莫如下：&lt;pre class="brush:c-sharp"&gt;&lt;br /&gt;  &lt; script type="text/javascript" &gt;&lt;br /&gt;        Sys.debug = true;&lt;br /&gt;        Sys.require([Sys.components.watermark, Sys.components.modalPopup], function () {&lt;br /&gt;            $("#Button1").modalPopup({&lt;br /&gt;                PopupControlID: "window",                    //視窗物件名稱&lt;br /&gt;                OkControlID: "buttonOK",                        //設定OK鈕物件&lt;br /&gt;                CancelControlID: "buttonCancel",        //設定OK鈕物件&lt;br /&gt;                OnOkScript: okayWasClicked,                 //按下Cancel鈕要做的事情&lt;br /&gt;                OnCancelScript: cancelWasClicked,       //按下Cancel鈕要做的事情&lt;br /&gt;                BackgroundCssClass: "modalBackground"  //背景顏色&lt;br /&gt;            });&lt;br /&gt;            $("#UserName").watermark("&lt;請輸入姓名&gt;", "watermark");&lt;br /&gt;            $("#Pwd").watermark("&lt;請輸入密碼&gt;", "watermark");&lt;br /&gt;        });&lt;br /&gt;        //按下OK鈕要做的事情&lt;br /&gt;        function okayWasClicked() {&lt;br /&gt;            Sys.get("#Label1").innerText = "返回確定";&lt;br /&gt;        }&lt;br /&gt;        //按下Cancel鈕要做的事情&lt;br /&gt;        function cancelWasClicked() {&lt;br /&gt;            Sys.get("#Label1").innerText = "返回取消";&lt;br /&gt;        }    &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;完成程式碼請[&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=136"&gt;下載&lt;/a&gt;]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-5056673391648048800?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/5056673391648048800/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=5056673391648048800' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/5056673391648048800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/5056673391648048800'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2010/07/aspnet-ajax-4-client-libraries-modal.html' title='透過ASP.NET AJAX 4 Client Libraries實現 Modal Popup Window'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-7169868958324707233</id><published>2010-07-14T09:10:00.002+08:00</published><updated>2010-07-14T09:14:03.072+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>ASP.NET的顏色選擇器範例</title><content type='html'>這個範例是以ASP.NET AJAX 4 Client Libraries中所提供的ColorPicker機制建立的顏色選擇器，開發環境中不需要安裝任何套件，只需要引用微軟CDN當中的Javascript Libraries即可，相當方便好用。[&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=130"&gt;下載&lt;/a&gt;]&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;img src="http://2.bp.blogspot.com/_RnPgsDyRc2Y/TD0O0MUasAI/AAAAAAAAAiw/G-OB0EqwOjE/s320/p1.jpg" style="cursor:pointer; cursor:hand;width: 320px; height: 173px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5493563410284720130" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-7169868958324707233?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/7169868958324707233/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=7169868958324707233' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/7169868958324707233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/7169868958324707233'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2010/07/aspnet_14.html' title='ASP.NET的顏色選擇器範例'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_RnPgsDyRc2Y/TD0O0MUasAI/AAAAAAAAAiw/G-OB0EqwOjE/s72-c/p1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-35853226355231528</id><published>2010-07-13T08:06:00.002+08:00</published><updated>2010-07-13T08:12:32.917+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET 4.0'/><title type='text'>三個ASP.NET小範例</title><content type='html'>我在Code Storage上放了幾個ASP.NET的範例，分別是：&lt;br /&gt;●以Cookies記憶登入帳號：[&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=127" target=_blank&gt;下載&lt;/a&gt;]&lt;br /&gt;這個範例展示如何類似Google或是一般入口網站以Cookies紀錄登入者帳號，在一定時間內不需要重登入的機制，以仿Forms驗證的方式來進行。&lt;br /&gt;&lt;br /&gt;●AJAX Client Templates與遠端資料存取：[&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=125" target=_blank&gt;下載&lt;/a&gt;]&lt;br /&gt;這個範例透過了AJAX Client Templates和Web Services遠端資料存取的技術，讓頁面上的UI可以經由Services直接Bind(繫結)到遠端的資料。其中也使用到了ADO.NET Entity Framework與LINQ等技術。這個機制讓ASP.NET的Data Binding有機會在前端完成，不經過後端的C#/VB指令碼也可進行。&lt;br /&gt;&lt;br /&gt;●浮水印文字方塊(Waterwark textBox)：[&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=124" target=_blank&gt;下載&lt;/a&gt;]&lt;br /&gt;這個範例使用了ASP.NET AJAX 4的Client Libraries，以pure JavaScript方式(不需要引用ASP.NET AJAX Controls Toolkit的.dll)在頁面上建立出具有浮水印的文字方塊(Waterwark textBox)，並且利用了微軟CDN(Content delivery network)讓網站的效能更好，管理上也更加簡潔。如果只想要在網站尚設計出簡單的AJAX效果，但不希望引用一整個ASP.NET AJAX程式庫時相當好用。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-35853226355231528?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/35853226355231528/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=35853226355231528' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/35853226355231528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/35853226355231528'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2010/07/aspnet.html' title='三個ASP.NET小範例'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-1009178477978790362</id><published>2010-07-06T10:28:00.006+08:00</published><updated>2010-07-06T10:44:44.021+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>Noticeboard - Silverlight訊息看板套件</title><content type='html'>在撰寫Silverlight應用程式的時候，有幾種訊息顯示方式，典型的方式是透過ChildWindow或是MessageBox，但各有一些特點或缺點(例如ChildWindow要自己設計樣版，且兩者在顯示時主場景均無法操作)，有鑑於這個問題，Silverlight在OOB Mode當中，加上了Notification功能，但在非OOB Mode中卻缺少了有類似效果的機制。&lt;br /&gt;&lt;br /&gt;因此我們設計了一個類似的功能，使用的方式相當簡單： &lt;pre class="brush:c-sharp"&gt;&lt;br /&gt;StudyHost.Silverlight.Noticeboard _Noticeboard;&lt;br /&gt;_Noticeboard = new StudyHost.Silverlight.Noticeboard(this.LayoutRoot);&lt;br /&gt;_Noticeboard.show("這是測試按鈕顯示的文字...",3000);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;即可輕鬆的達成底下這樣的效果：&lt;br /&gt;&lt;a href="http://blog.studyhost.com/BlogData/20100706/NoticeboardTesterTestPage.html" target=_blank&gt;&lt;img style="WIDTH: 320px; HEIGHT: 306px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5490617678062307986" border="0" alt="" src="http://3.bp.blogspot.com/_RnPgsDyRc2Y/TDKXsApiSpI/AAAAAAAAAio/-79oqFZzpfM/s320/p1.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;如需下載此套件，可參考：[&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=111" target=_blank&gt;Noticeboard套件&lt;/a&gt;]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-1009178477978790362?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/1009178477978790362/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=1009178477978790362' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/1009178477978790362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/1009178477978790362'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2010/07/noticeboard-silverlight.html' title='Noticeboard - Silverlight訊息看板套件'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_RnPgsDyRc2Y/TDKXsApiSpI/AAAAAAAAAio/-79oqFZzpfM/s72-c/p1.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-6408590087982385138</id><published>2010-06-30T19:56:00.005+08:00</published><updated>2010-06-30T20:16:53.859+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>在Silverlight中透過WCF存取Session資料</title><content type='html'>有一些程式碼，是屬於『簡單，但是很重要』的部分。像現在我們的這個範例就是。&lt;br /&gt;在上課時不只一個學員(嚴格說起來有很多很多學員)，都很關心Silverlight和ASP.NET的整合，不論是資料的交換，或是ASP.NET頁面上的互動和整合，由於Silverlight以透過ActiveX插件的形式崁入網頁中，使得學員以為要進行資料交換很困難或是完全不行。&lt;br /&gt;&lt;br /&gt;這真可是誤會大了，對於Silverlight來說，與遠端(伺服器端)溝通的方是最典型的就是透過WCF Services(當然，傳統的Web Services也行)，所以只要透過在Silverlight場景中呼叫WCF Services，就可以輕易的存取Session資料。&lt;br /&gt;&lt;br /&gt;例如，你可以建立一個底下這樣的WCF Services：&lt;pre class="brush:c-sharp;"&gt;&lt;br /&gt;namespace AccessSessionViaWcfServices.Web&lt;br /&gt;{&lt;br /&gt;    [ServiceContract(Namespace = "")]&lt;br /&gt;    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]&lt;br /&gt;    public class Service1&lt;br /&gt;    {&lt;br /&gt;        [OperationContract]&lt;br /&gt;        public string GetSession(string SessionName)&lt;br /&gt;        {&lt;br /&gt;            // Add your operation implementation here&lt;br /&gt;            return System.Web.HttpContext.Current.Session[SessionName].ToString() ;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        [OperationContract]&lt;br /&gt;        public bool SetSession(string SessionName,string SessionValue)&lt;br /&gt;        {&lt;br /&gt;            // Add your operation implementation here&lt;br /&gt;            System.Web.HttpContext.Current.Session[SessionName] = SessionValue;&lt;br /&gt;             return true;&lt;br /&gt;        }&lt;br /&gt;    }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;關鍵在於這個Wcf services請務必選擇Silverlight-enabled WCF Services：&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_RnPgsDyRc2Y/TCs0nDx-RRI/AAAAAAAAAig/TAm2jLZ0otE/s1600/p1.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 204px;" src="http://4.bp.blogspot.com/_RnPgsDyRc2Y/TCs0nDx-RRI/AAAAAAAAAig/TAm2jLZ0otE/s320/p1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5488538416515532050" /&gt;&lt;/a&gt;&lt;br /&gt;同時透過 System.Web.HttpContext 即可存取與傳統 HttpContext有關的資訊。&lt;br /&gt;&lt;br /&gt;建立好Services之後，即可在Silverlight當中以非同步方式呼叫：&lt;pre class="brush:c-sharp;"&gt;&lt;br /&gt;        private void button1_Click(object sender, RoutedEventArgs e)&lt;br /&gt;        {&lt;br /&gt;            ServiceReference1.Service1Client srv = new ServiceReference1.Service1Client();&lt;br /&gt;            srv.GetSessionCompleted += (s, para) =&gt;&lt;br /&gt;            {&lt;br /&gt;                this.textBox2.Text = para.Result;&lt;br /&gt;            };&lt;br /&gt;            srv.GetSessionAsync(this.textBox1.Text);&lt;br /&gt;        }&lt;/pre&gt;&lt;br /&gt;即可輕易的取得Session的值，進而與ASP.NET交換資料，還可以利用這樣的機制處理帳號登入的問題，讓Silverlight也可以輕易的撰寫出具有與ASP.NET相容的登入與權限機制。&lt;br /&gt;&lt;br /&gt;完整的範例程式碼請參考[&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=108" target=_blank&gt;CodeStorage&lt;/a&gt;]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-6408590087982385138?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/6408590087982385138/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=6408590087982385138' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/6408590087982385138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/6408590087982385138'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2010/06/silverlightwcfsession.html' title='在Silverlight中透過WCF存取Session資料'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_RnPgsDyRc2Y/TCs0nDx-RRI/AAAAAAAAAig/TAm2jLZ0otE/s72-c/p1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-7406595617968789671</id><published>2010-06-19T11:21:00.007+08:00</published><updated>2010-06-19T16:51:15.447+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='讀者回覆'/><category scheme='http://www.blogger.com/atom/ns#' term='軟體開發'/><category scheme='http://www.blogger.com/atom/ns#' term='心情'/><title type='text'>關於 如何快速增進程式功力...</title><content type='html'>最近有網友在Blog上問到關於學習程式設計的問題(如何快速增進程式功力...)，我也很開心nowshow幫我做了一些回覆。(其它潛水多年的朋友們，該是甦醒的時候了...)&lt;br /&gt;&lt;br /&gt;其實我一直很想找個機會和大家聊聊『學習』這個主題，因為自己走了很多的冤枉路，所以總覺得有好多東西想分享。只是有時後工作忙，忘了，有時候寫著寫著發現詞不達意，放棄了。前陣子常這樣，說來你可能不相信，其實在這個Blog裡的已發表文章數量差不多只是所有所有文章數量的2/3，其他的我都沒寫完，擱著...久了就乾脆放棄不發表了。最近想打破這個限制，所以想到什麼寫什麼，也請讀到的朋友們原諒文章中用詞的隨性，畢竟這年頭『卸卸』之類的火星文充斥，我們這些老頭們寫的文章應該算工整了。&lt;br /&gt;&lt;br /&gt;回頭談學習，如何快速增進程式功力...?&lt;br /&gt;說來慚愧，但不怕各位見笑，打從我學習程式設計以來，到目前為止，只『付費』上過一次電腦課程，而且還是國小約莫3,4年級，此後，我從沒上過任何一堂課。程式設計幾乎都是自學。&lt;br /&gt;&lt;br /&gt;請千萬別誤會，我不是說上課不重要，特別是自己身為講師，如果我讓大夥覺得上課不重要，豈不是滑天下之大稽? 首先，我雖然沒付費上過電腦課，但自從開始以程式設計謀生(我的第一個收費的專案，是在高中時代寫的台北市某校的招生系統，當時還是用Clipper配合讀卡機呢)之後，只要有業界的教育訓練我都盡可能參加，每次的TechED我也都想辦法到場(公司出錢。對，我也曾和大家一樣坐在下面乖乖當聽眾)，觀念和眼界的建立是相當重要的。我身邊也有一些朋友們，是透過資策會或是其他知名的教育訓練中心的套裝課程，開始進入程式設計的領域。也有不少是科班出身，然後投身資訊領域。這些養成對他們都有相當大的幫助。&lt;br /&gt;&lt;br /&gt;但我要說的是，不管怎樣的養成，這絕對只是一個起頭，不管你曾經經過怎樣的訓練，你都只能拿到一張入場券，進入業界之後，才是真正挑戰和學習的開始。我相信幾乎每一個軟體開發從業人員都同意，如果你討厭常常學習新東西，目前的軟體業肯定不適合你。&lt;br /&gt;&lt;br /&gt;我回頭想了一下最近15年，我比較我『學習』一門技術的時間，和『使用』一門技術的時間，大家要不要猜猜看是『學習』的時間多還是『使用』的時間多? 我發現，隨著近幾年技術演進的速度越來越快，我花在學習的時間越來越長(不過這也因為身為講師或前導廠商的我們在學習這門技術的當下，相對而言手邊的資源會比大夥來的少一些，技術愈成熟，學習資源其實就會愈多)。&lt;br /&gt;&lt;br /&gt;在當前的資訊環境下，時常『學習新技術』來『解決問題』，絕對是優秀開發人員的特質。反過來講也成立，我幾乎在每一個優秀的開發人員身上，都看到『學習力』這個特質。有能力自己找到Resource(不管是透過書籍、影片、課程、研討會...)，持續學習和成長，絕對是一個重要的關鍵。請注意關鍵在學習新技術來解決問題，而不是漫無目的學新東西，或是道聽塗說看市場趨勢或風向就亂學。(解決問題這個目標是一切的根本，這待會說。)&lt;br /&gt;&lt;br /&gt;但學習這件事情很有趣，你一定聽過『突飛猛進』這個字，武俠小說裡也有過某個蠢蛋被打通任督二脈之後，就突然習得絕世武功之類的情境。我覺得並非不可能，而關鍵就在你是否奠定了一個很扎實的基礎。怎麼說呢? 對我來說就是這樣，我第一個學的程式語言是 Basic，當年是Apple II時代，那種燒在ROM裡面的Basic語言，坦白說那時候我照著書上抄了N百個程式也搞不清楚它在幹嘛。錯了也不知道該怎麼改，當時我是國小四年級左右，連英文單字都還有點問題。但興趣卻慢慢培養了起來。(我一直覺得，好的養成書籍或授課講師，把學員帶(教)到有興趣，讓學員願意自己去找答案，比把知識硬灌給學員來的重要多了)&lt;br /&gt;&lt;br /&gt;一直到國中，我有機會自修學習C, Assembly(當時施威銘先生的書對我有相當大的幫助)，我要很認真的說，C和Assembly對我的工作完全沒幫助，但卻對我日後的學習奠定下了一個難以磨滅的影響和超級穩固的基礎。在這邊我要說的是，你越熟悉了解某種技術基礎的運作概念，越能夠全盤掌握，觸類旁通。最近這幾年大家都在談Design Pattern，UML，或是TDD...等，每隔一段時間就會有新名詞。但我要說的是，如果你對基本物件導向程式設計沒有足夠的自信(沒有足夠的認識)，我建議你真的要考慮從基本開始，穩扎穩打才是王道。&lt;br /&gt;&lt;br /&gt;如果你不知道繼承的意義(為何要有繼承的機制?) 如果你搞不清楚類別和介面的使用時機，如果你對於抽象類別、泛型、多重繼承這些概念還有些陌生，或是你不曾從頭到尾寫過一個類別，用類別表達某一個實體(諸如訂單、一個功能、或是設計過一個資料存取機制...)，那千萬別去碰那些其它聽起來更高深的東西。因為，你的基礎愈扎實，學習才能愈有效。否則那些新東西只會擾亂你的大腦。時常檢視一下自己的基礎，發現不足之處就趕快補齊，在台灣，身為開發人員，我們要學習的東西很多，沒有哪一個人敢說自己什麼都會的，總是有不足之處，古人『聞過則喜』， 資訊人員則是『聞不懂則喜』。趕快補齊，學到了(用過的)才是你的，相信我，越基礎的東西越重要。&lt;br /&gt;&lt;br /&gt;有了好的基礎，加上持續且足夠的『學習力』，你即便不出類拔萃但大概也會是工作場合中所謂的『人才』了，接著，一個相當重要的關鍵能力，就是學習培養自己『解決問題的能力』。&lt;br /&gt;&lt;br /&gt;說真的，這麼多年下來我的感受是，一個開發人員(或是IT人員)與其說學習寫好程式，不如說學習培養自己解決問題的能力。資訊科學是應用科學，尤其我們都在業界工作，不是在學術單位，『能用』才是王道，『能解決問題』才是所有事情的關鍵。千萬別忘記，你學習的幾乎所有東西，都是為了解決相對應的特定問題。例如匿名網友說到的，程式設計裡面的遞迴、物件導向...等技術，都是為了解決問題、或對問題提供更好的解決方案。&lt;br /&gt;&lt;br /&gt;我自己的經驗，所謂『程式開發』就是等同於『問題解決』，一個一個的問題，一個一個慢慢面對、處理，面對客戶需求時要怎麼達成? 為了效能該怎麼規畫? 如何讓專案團隊更快速的開發和合作? Build完之後多少個Error, 該怎麼解決? 測完之後多少個Bug、該如何修改? 無法實作時該怎麼walkaround? 碰到技術障礙或瓶頸該怎麼面對? ... 每一個IT人員或開發人員每天的工作幾乎都是 『問題→思考→解決方案→行動』，然後一直是這樣的循環。&lt;br /&gt;&lt;br /&gt;整個關鍵都在『培養自己解決問題的能力』，不管是Debug、或是Creat Solutions，都是一樣的。不管你的角色是PM、SA、SD、Developer、Presale...幾乎放諸四海皆準。&lt;br /&gt;&lt;br /&gt;但很有趣的是，我曾經看過一些開發人員(許多是我的合作夥伴、學員、或同事)超級討厭問題、不想自己找解決方案，或對問題完全沒有思考能力...這幾個現象, 曾經讓我很不解，如果開發人員超級討厭問題，不曾享受過那種解決問題後的喜悅和成就感，表示他絕對選錯行，現今的軟體產業會榨乾他，他很可能會活在水深火熱之中。換工作的次數會很頻繁，直到他放棄這個行業為止。&lt;br /&gt;&lt;br /&gt;不想『自己』找解決方案, 表示該員有些投機或懶惰, 就算他很聰明，在這個行業大概也只能待個幾年，我偶而會看到一些開發人員對於新問題常常直接放棄(請注意，不是真的束手無策，是『直接放棄』)然後立即找外援，他的工作模式是『找範本-&gt;改程式-&gt;碰到問題-&gt;找人幫忙』，而不是『規劃-&gt;寫程式-&gt;碰到問題-&gt;找解決方法』，在Google誕生之前，這類開發人員的壽命很短，常常夭折，多半靠身邊的同事或高手幫他解決問題，擅長人際關係遠超過程式設計。但Google誕生之後，有許多此類開發人員無形中多了一個虛擬的幫手，上焉者善於利用工具，也在業界找到了安身立命的空間。但我要說的是，如果是初學者真的無可厚非，大夥都是從零開始，朋友們技術人員互相幫忙也是常有，但如果在業界待了一兩年，卻還是始終只靠別人幫忙解決問題，那恐怕不是長久之計。&lt;br /&gt;&lt;br /&gt;對問題沒有思考能力(表現出來的現象就是毫無頭緒，連要怎麼try都不知道)，是超級慘的一種狀況，我相信幾乎每一個人都曾經有過這樣的經驗(連身為講師的我們也不例外)，但如果你根基扎實，學習力強，很快的就能脫離這個狀況。會發生這樣的狀況，很可能是因為基礎知識不足...這時候，重新學習把基礎補齊是唯一的解決方案，也有可能是過去不常靠自己解決問題，那恭喜你，終於碰到成長的機會了。盡量自己試試看，不要放棄，你自己解決的問題越多，培養出的能力就越大。&lt;br /&gt;&lt;br /&gt;我還看過一些更有趣的現象，有一些開發人員，碰到了某個狀況，或是某個bugs怎麼也不過，屢try屢錯，  屢錯又try, try了又錯，但神奇的是，他從不改變方法，不仔細看錯誤訊息(常常是因為看不懂, 也不google一下 ; 或是google了關鍵字還打錯)，也不努力去思考出錯的原因，就是用同樣的方法猛try，...會try出答案才有鬼咧。&lt;br /&gt;&lt;br /&gt;石滋宜博士（前中國生產力中心負責人），曾說：「什麼是笨？ 就是老是用同樣的方法做事，卻期待會有不同結果的人。」 &lt;br /&gt;&lt;br /&gt;碰到問題找答案，我覺得是軟體開發這個工作當中最有趣(最有成就感)的部分，卻也是某些人認為最討厭(最痛苦)的部份，我只能說，近幾年來放眼望去每一個知名技術Blog的作者，或是我所認識的MVP，沒有一個不是解決問題的高手。很多問題看似無解，都能被大夥找到walkaround或是釜底抽薪的解決方案。在業界裡面，其實你很難定義何謂程式設計高手，但卻常常能看到，某人一出馬問題就能被解決，此之謂『專家』是也。&lt;br /&gt;&lt;br /&gt;最後，我以前老闆說過一句話，我印象深刻也奉行不渝，他說：『你的時間在哪裡，你的成就就在裡哪。』對我而言，幾乎是金科玉律，也是我親身體驗的經歷。很多事情沒有捷徑，你的時間在哪裡，你的成就就在裡哪。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-7406595617968789671?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/7406595617968789671/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=7406595617968789671' title='20 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/7406595617968789671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/7406595617968789671'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2010/06/blog-post.html' title='關於 如何快速增進程式功力...'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>20</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-5372477902916215866</id><published>2010-06-17T18:49:00.008+08:00</published><updated>2010-06-18T08:56:18.969+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows驗證'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>關於RunAs...與Windows驗證的ASP.NET應用程式</title><content type='html'>從過去幾年教育訓練、專案和產品導入的經驗看起來，台灣的開發人員一般在開發網站的過程當中，實際上使用Windows驗證的場合相當高，但卻讓我很訝異的發現，實際上使用的開發人員卻不多?&lt;br /&gt;&lt;br /&gt;很多企業在明明有AD的狀況下，還自己搞了一套SSO(Single Sign On)系統，當然，有些客戶是因為要整合非Windows環境的系統，那也就無可厚非，但卻還是看到不少客戶由於應用系統的建構是長年累月堆積出來的，一開始的Web應用程式並沒有用Windows驗證，導致後面想要做SSO也很困難。&lt;br /&gt;&lt;br /&gt;總的來說，驗證這件事情被很多ASP.NET開發人員丟在一邊很久了，導致很多客戶即便有AD，卻總是用自己的資料庫存放帳號密碼，再讓ASP.NET應用程式走Forms驗證。&lt;br /&gt;&lt;br /&gt;這也導致很多ASP.NET開發人員壓根沒用過RunAS這個指令。&lt;br /&gt;&lt;br /&gt;最近這幾年因為我任職的公司產品的特性，我們開發的ASP.NET網站甚或是Silverlight網站，都採用了Windows驗證，並且搭配Kerberos進行整合驗證動作。也因此，開發人員常常需要透過不同的帳號模擬用戶進行登入，來測試各種不同情境下的使用者功能。&lt;br /&gt;&lt;br /&gt;這時候，Windows當中的RunAs指令就相當重要了，你可以在Cmd Line利用底下的指令模擬特定使用者執行某個應用程式，最常用的情境式模擬特定使用者執行瀏覽器：&lt;pre class="brush:c-sharp;"&gt;&lt;br /&gt;runas.exe /user:StudyHost.Com\david "C:\Program Files\Internet Explorer\iexplore.exe"&lt;br /&gt;或&lt;br /&gt;runas.exe /user:david@StudyHost.Com "C:\Program Files\Internet Explorer\iexplore.exe"&lt;br /&gt;&lt;/pre&gt;上面這樣的指令可以模擬特定的使用者登入瀏覽器，方便開發人員進行測試工作。&lt;br /&gt;&lt;br /&gt;如果你懶的每次都要輸入密碼，也可以下底下這樣的指令：&lt;pre class="brush:c-sharp;"&gt;&lt;br /&gt;runas.exe /savecred /user:david@StudyHost.Com "C:\Program Files\Internet Explorer\iexplore.exe"&lt;br /&gt;&lt;/pre&gt;這樣就不用每次重新輸入密碼了。&lt;br /&gt;&lt;br /&gt;此外，如果你撰寫的Windows驗證的 ASP.NET應用程式，需要讓使用者登出(或重新用別的帳號登入)，可以透過底下的JavaScript：&lt;pre class="brush:c-sharp;"&gt;&lt;br /&gt;document.execCommand("ClearAuthenticationCache");&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;就會有類似MOSS登出使用者的效果了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-5372477902916215866?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/5372477902916215866/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=5372477902916215866' title='3 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/5372477902916215866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/5372477902916215866'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2010/06/runaswindowsaspnet.html' title='關於RunAs...與Windows驗證的ASP.NET應用程式'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-2009347591140874573</id><published>2010-06-11T10:56:00.003+08:00</published><updated>2010-06-11T10:59:19.890+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Office'/><title type='text'>Web 版Office Released...</title><content type='html'>Web 版Office Released... 我試著用了一兩天...個人覺得...速度上還是慢了一些。&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_RnPgsDyRc2Y/TBGmNLT9KwI/AAAAAAAAAiY/Y3d2tmSeess/s1600/p2.png"&gt;&lt;img style="WIDTH: 320px; HEIGHT: 190px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5481344966791604994" border="0" alt="" src="http://1.bp.blogspot.com/_RnPgsDyRc2Y/TBGmNLT9KwI/AAAAAAAAAiY/Y3d2tmSeess/s320/p2.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_RnPgsDyRc2Y/TBGmMtBsdKI/AAAAAAAAAiQ/43bxarDh28c/s1600/p1.png"&gt;&lt;img style="WIDTH: 320px; HEIGHT: 190px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5481344958661948578" border="0" alt="" src="http://2.bp.blogspot.com/_RnPgsDyRc2Y/TBGmMtBsdKI/AAAAAAAAAiQ/43bxarDh28c/s320/p1.png" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-2009347591140874573?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/2009347591140874573/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=2009347591140874573' title='3 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/2009347591140874573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/2009347591140874573'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2010/06/web-office-released.html' title='Web 版Office Released...'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_RnPgsDyRc2Y/TBGmNLT9KwI/AAAAAAAAAiY/Y3d2tmSeess/s72-c/p2.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-8598720024726484674</id><published>2010-06-08T14:28:00.001+08:00</published><updated>2010-06-08T14:30:09.974+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>在ASP.NET中使用 大檔案拖曳上傳 功能</title><content type='html'>在ASP.NET中使用 大檔案拖曳上傳 功能的教學影片已上架, 請參考FaceBook專頁。&lt;br /&gt;&lt;br /&gt;[&lt;a href="http://www.facebook.com/#!/pages/David-deNET-Walker-zhuan-ye/115848851788030?ref=sgm"&gt;連結&lt;/a&gt;]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-8598720024726484674?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/8598720024726484674/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=8598720024726484674' title='5 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/8598720024726484674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/8598720024726484674'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2010/06/aspnet.html' title='在ASP.NET中使用 大檔案拖曳上傳 功能'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-8489578143448970983</id><published>2010-06-05T20:16:00.015+08:00</published><updated>2010-06-07T07:34:55.899+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='VS2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>File Uploader 大檔案拖曳上傳控制項</title><content type='html'>想要在您的 Silverlight 和 ASP.NET 頁面上加入『大檔案拖曳上傳』的功能，並在上傳時顯示即時的上傳進度嗎?&lt;br /&gt;&lt;br /&gt;&lt;p&gt;在上個月的Visual Studio 2010上市發表會當中，我概略的展示了Silverlight 4的一些新功能，其中我個人最喜歡的範例就是大檔案的拖曳上傳(就是把file從檔案總管中拖曳到瀏覽器中並直接上傳，同時顯示該檔案的真實上傳進度)。&lt;br /&gt;&lt;br /&gt;這個功能早在ASP.NET 2.0時代，我們就嘗試透過AJAX來開發過(當然當時只能做大檔案上傳，還沒有拖曳功能)，在坊間許多文管系統當中(最典型的就是MOSS)，這個功能也都是相當重要的需求之一。但礙於當時技術的限制，過去多半的解決方案都是在用戶端安裝特殊的ActiveX元件來處理。一來這衍生出安全性問題，二來也不是每一個用戶端都能夠順利或無條件的安裝ActiveX元件，再加上許多ASP.NET開發人員對於ActiveX元件的開發可能相當陌生，造成開發人員很大的困擾。&lt;br /&gt;&lt;br /&gt;在Silverlight 4出現之後，我就一直很想把這個功能作一些整合，因此才有在VS2010上市發表會中的那個範例。但畢竟整個上傳動作涉及前後端的交互運作，前端是Silverlight 4，後端是ASP.NET應用程式，要開發人員從頭到尾重新建立這樣的功能實屬不易。&lt;br /&gt;&lt;br /&gt;也因此，趁記憶猶新，我把拖曳大檔案上傳的功能整理成可在Silverlight 4或ASP.NET應用程式當中可重複使用的&lt;strong&gt;控制項&lt;/strong&gt;，提供給需要的開發人員直接使用。 &lt;/p&gt;&lt;ul&gt;&lt;li&gt;相關的套件FileUploader檔案(Binaries &amp;amp; Examples)下載位置可參考[&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=87" target="_blank"&gt;這裡&lt;/a&gt;]。 (範例包含Silverlight與ASP.NET)&lt;/li&gt;&lt;li&gt;在ASP.NET 2.0~4.0應用程式中的直接使用方式之說明文件可參考[&lt;a href="http://blog.studyhost.com/BlogData/20100606/FileLoader_aspnet.pdf" target="_blank"&gt;這裡&lt;/a&gt;]。 (是的，在ASP.NET當中也可以&lt;strong&gt;&lt;u&gt;直接&lt;/u&gt;&lt;/strong&gt;使用，開發人員不一定需要會Silverlight)&lt;/li&gt;&lt;li&gt;在Silvelright 4應用程式當中的使用方式之說明文件可參考[&lt;a href="http://blog.studyhost.com/BlogData/20100606/FileLoader_silverlight.pdf" target="_blank"&gt;這裡&lt;/a&gt;]。 &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;底下是簡單的測試畫面展示，希望對各位有幫助。&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_RnPgsDyRc2Y/TApD6RR_vhI/AAAAAAAAAiI/Grn7oLX_Y2I/s1600/FileUpload.png"&gt;&lt;img style="WIDTH: 320px; HEIGHT: 234px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5479266564999986706" border="0" alt="" src="http://1.bp.blogspot.com/_RnPgsDyRc2Y/TApD6RR_vhI/AAAAAAAAAiI/Grn7oLX_Y2I/s320/FileUpload.png" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-8489578143448970983?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/8489578143448970983/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=8489578143448970983' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/8489578143448970983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/8489578143448970983'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2010/06/file-uploader.html' title='File Uploader 大檔案拖曳上傳控制項'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_RnPgsDyRc2Y/TApD6RR_vhI/AAAAAAAAAiI/Grn7oLX_Y2I/s72-c/FileUpload.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-858218430454278404</id><published>2010-06-04T15:54:00.002+08:00</published><updated>2010-06-04T15:58:13.217+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET 4.0'/><title type='text'>ASP.NET 4.0當中的 URL Routing機制</title><content type='html'>在剛推出的ASP.NET 4.0當中，Web Forms所新支援的URL Routing機制也是最令大家矚目的新功能之一，過去在MVC, Dynamic Data WebSite中才使用的URL Routing機制，現在在傳統的Web Forms當中也可以使用了，這對我們開發大型的Web應用程式相當有幫助。&lt;br /&gt;&lt;br /&gt;相關的介紹和說明可以參考本期Run!PC雜誌，您也可以點選[&lt;a href="http://www.facebook.com/pages/David-deNET-Walker-zhuan-ye#!/pages/David-deNET-Walker-zhuan-ye/115848851788030?ref=sgm"&gt;這裡&lt;/a&gt;]，參考剛才公布在FaceBook上的ASP.NET URL Routing機制的使用展示影片。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-858218430454278404?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/858218430454278404/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=858218430454278404' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/858218430454278404'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/858218430454278404'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2010/06/aspnet-40-url-routing.html' title='ASP.NET 4.0當中的 URL Routing機制'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-8382394928038077141</id><published>2010-06-01T12:48:00.003+08:00</published><updated>2010-06-01T12:51:28.921+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VS2010'/><title type='text'>Visual Studio 2010 CHT is released on MSDN</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/_RnPgsDyRc2Y/TASRWlEWtUI/AAAAAAAAAiA/5FyPMNj9_Gc/s1600/VS2010CHT.png"&gt;&lt;img style="WIDTH: 320px; HEIGHT: 200px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5477662863882892610" border="0" alt="" src="http://3.bp.blogspot.com/_RnPgsDyRc2Y/TASRWlEWtUI/AAAAAAAAAiA/5FyPMNj9_Gc/s320/VS2010CHT.png" /&gt;&lt;/a&gt;&lt;br /&gt;MSDN當中已經可以下載Visual Studio 2010中文版了, 有需要的朋友們可以下載(請選「開發人員工具」-&gt;「Visual Studio 2010」-&gt; 語言分類請選「Chinese – Traditional」)中文試用版將會再晚一些釋出。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-8382394928038077141?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/8382394928038077141/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=8382394928038077141' title='8 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/8382394928038077141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/8382394928038077141'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2010/06/visual-studio-2010-cht-is-released-on.html' title='Visual Studio 2010 CHT is released on MSDN'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_RnPgsDyRc2Y/TASRWlEWtUI/AAAAAAAAAiA/5FyPMNj9_Gc/s72-c/VS2010CHT.png' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-3913746940802218244</id><published>2010-05-29T16:12:00.004+08:00</published><updated>2010-05-29T16:15:49.447+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='FaceBook'/><title type='text'>faceBook應用程式(Silverlight)開發範例</title><content type='html'>整理兩個先前在FaceBook專頁上分享的利用Silverlight(VS2010)開發FaceBok應用程式的簡單範例已經上架，需要的朋友可以下載：&lt;br /&gt;1.登入，取得朋友清單 [&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=83"&gt;下載&lt;/a&gt;]&lt;br /&gt;2.發送訊息 [&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=84"&gt;下載&lt;/a&gt;]&lt;br /&gt;&lt;br /&gt;BTW, 不要忘了，你得先申請自己的FaceBook應用程式才能測試這個範例(因為需要AppKey), 程式是透過Vs2010開發的，請記得update一下您的開發環境唷。&lt;br /&gt;&lt;br /&gt;還是一樣，最新動態我會先放在faceBook專頁上，然後盡可能整理到Bolg上來。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-3913746940802218244?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/3913746940802218244/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=3913746940802218244' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/3913746940802218244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/3913746940802218244'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2010/05/facebooksilverlight.html' title='faceBook應用程式(Silverlight)開發範例'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-7235154895460324643</id><published>2010-05-27T08:13:00.007+08:00</published><updated>2010-05-27T08:34:11.271+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET 4.0'/><category scheme='http://www.blogger.com/atom/ns#' term='VS2010'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET MVC'/><title type='text'>ASP.NET 4 AJAX, Dynamic Data, MVC相關概念介紹文章分享</title><content type='html'>先前提到過，Run!PC的網站陸續刊出一些ASP.NET 4.0介紹文章的節錄摘要，可以在網站上先睹為快，完整版可以參考紙本雜誌。&lt;br /&gt;&lt;br /&gt;底下幾篇分別是與ASP.NET 4 四大功能中有關的其中幾個部分：&lt;br /&gt;&lt;br /&gt;ASP.NET 4 中的Dynamic Data技術概念介紹與說明(節錄)&lt;br /&gt;&lt;a href="http://www.runpc.com.tw/content/content.aspx?id=105872"&gt;http://www.runpc.com.tw/content/content.aspx?id=105872&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;ASP.NET 4 中的MVC2概念介紹與新功能說明(節錄)&lt;br /&gt;&lt;a href="http://www.runpc.com.tw/content/content.aspx?id=105871"&gt;http://www.runpc.com.tw/content/content.aspx?id=105871&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;ASP.NET 4 中的AJAX技術增強與AJAX Client Library的新功能(節錄)&lt;br /&gt;&lt;a href="http://www.runpc.com.tw/content/content.aspx?id=105870"&gt;http://www.runpc.com.tw/content/content.aspx?id=105870&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;上面幾篇是概念上簡單的介紹，具體的參考程式碼片段、範例、教學影片與完整的文字稿可參考接下來幾期的Run!PC或筆者BLOG, 當然，還有陸續將會出版的ASP.NET 4 新書。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-7235154895460324643?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/7235154895460324643/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=7235154895460324643' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/7235154895460324643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/7235154895460324643'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2010/05/aspnet-4-ajax-dynamic-data-mvc.html' title='ASP.NET 4 AJAX, Dynamic Data, MVC相關概念介紹文章分享'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-1316168627450933493</id><published>2010-05-19T10:02:00.004+08:00</published><updated>2010-05-19T12:07:16.719+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>Silverlight Tools for VS2010正式版釋出 &amp; 範例與文章分享</title><content type='html'>由於最近建立了FaceBook的專頁，因此一些比較即時性的訊息就在FaceBook上公告了，在Blog上就沒有跟著貼上來，這這邊做個整理，幾個公告事項如下：&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Silverlight Tools for VS2010已經釋出正式版：先前在上市發表會上demo時所用的RC版本，前幾天已經釋出正式版，可參考&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=902a7539-c4b5-4e54-b4c9-1432daabe1e8&amp;amp;displaylang=en"&gt;這裡&lt;/a&gt;。 &lt;/li&gt;&lt;li&gt;先前VS2010上市發表會當中，大家很有興趣的那個拖曳檔案到瀏覽器中，並且透過顯示進度的方式上傳到伺服器端的範例已經上架，請參考&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=80"&gt;這裡&lt;/a&gt;。&lt;/li&gt;&lt;li&gt;Run!PC的網站有一些SL4與ASP.NET的介紹文章摘要，雖然完整版還是要看紙本雜誌，但可以在網站上先睹為快。SL4介紹可參考&lt;a href="http://www.runpc.com.tw/content/main_content.aspx?mgo=195&amp;amp;fid=E07n"&gt;這裡&lt;/a&gt;，ASP.NET 4 WebForm介紹可參考&lt;a href="http://www.runpc.com.tw/content/main_content.aspx?mgo=195&amp;amp;fid=E02n"&gt;這裡&lt;/a&gt;。 &lt;/li&gt;&lt;/ol&gt;&lt;p&gt;如果你也有在用FaceBook，可以點選&lt;a href="http://www.facebook.com/pages/David-deNET-Walker-zhuan-ye/115848851788030#"&gt;這裡&lt;/a&gt;加入專頁，以便即時取得訊息。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-1316168627450933493?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/1316168627450933493/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=1316168627450933493' title='6 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/1316168627450933493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/1316168627450933493'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2010/05/silverlight-tools-for-vs2010.html' title='Silverlight Tools for VS2010正式版釋出 &amp; 範例與文章分享'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-1540220775811387458</id><published>2010-05-13T16:05:00.003+08:00</published><updated>2010-05-13T16:22:02.517+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='研討會'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>Visual Studio 2010上市發表會-高雄</title><content type='html'>高雄是巡迴場次的最後一場，每回到高雄來都希望能夠待久一些，只是多半也都是來去匆匆。&lt;br /&gt;還是一樣，謝謝高雄場次所有朋友們的熱情參與，因為時間的關係，master-details的Step By Step dem範例可參考&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=74"&gt;這裡&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;下載或瀏覽研討會中所提到的範例和影片下載，請至[&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?BookUid=5"&gt;這裡&lt;/a&gt;]。&lt;br /&gt;&lt;br /&gt;由於網站需要註冊帳號並經過驗證才能正確下載，若您先前沒有帳號，請依照流程註冊帳號，若無法註冊帳號或有任何相關問題，可隨時&lt;a href="mailto:sys@studyhost.com"&gt;mail&lt;/a&gt;與我們聯繫。&lt;br /&gt;&lt;br /&gt;目前已經放在網站上的範例和影片有：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;WCF RIA Services-1：展示WCF RIA Services配合VS2010，可快速的建構Business Application，抓取後端資料庫以及Data Binding的能力，同時介紹Data Annotations在Silverlight的應用。&lt;/li&gt;&lt;li&gt;WCF RIA Services-2：介紹RIA Services的資料過濾與篩選功能，透過自行修改後端Services可輕易的完成資料篩選功能。&lt;/li&gt;&lt;li&gt;WCF RIA Services Master-Details：介紹RIA Services如何透過VS2010的配合，快速完成連動式的Master-Details應用程式開發。&lt;/li&gt;&lt;li&gt;WebCam &amp;amp; Audio：WebCam和Audio範例截取以及列印範例。&lt;/li&gt;&lt;li&gt;DropTarget：檔案拖曳與顯示範例。&lt;/li&gt;&lt;li&gt;OOB的WebBrowser控制項：在Silverlight 4的OOB(Out-Of-Browser)模式中，透過WebBrowser顯示網頁。&lt;/li&gt;&lt;li&gt;ComAutomation：在Silverlight 4的OOB App當中，利用ComAutomation技術開啟Word、建立新文件，並在文件中動態填入文字。&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-1540220775811387458?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/1540220775811387458/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=1540220775811387458' title='6 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/1540220775811387458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/1540220775811387458'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2010/05/visual-studio-2010_13.html' title='Visual Studio 2010上市發表會-高雄'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-4359274961427118444</id><published>2010-05-11T16:35:00.002+08:00</published><updated>2010-05-11T16:39:01.470+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='研討會'/><title type='text'>Visual Studio 2010上市發表會-台中</title><content type='html'>謝謝台中場次大夥的熱情參與，因為時間的關係，所以送的書不多，還請見諒。&lt;br /&gt;&lt;br /&gt;和台北場次相同，研討會中所提到的範例和影片下載，將會從今天開始陸續放到網站上，下載或瀏覽請至[&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?BookUid=5"&gt;這裡&lt;/a&gt;]。&lt;br /&gt;&lt;br /&gt;由於網站需要註冊帳號並經過驗證才能正確下載，若您先前沒有帳號，請依照流程註冊帳號，若無法註冊帳號或有任何相關問題，可隨時&lt;a href="mailto:sys@studyhost.com"&gt;mail&lt;/a&gt;與我們聯繫。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-4359274961427118444?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/4359274961427118444/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=4359274961427118444' title='6 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/4359274961427118444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/4359274961427118444'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2010/05/visual-studio-2010_11.html' title='Visual Studio 2010上市發表會-台中'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-1842557138769320502</id><published>2010-05-10T08:30:00.001+08:00</published><updated>2010-05-10T08:33:01.485+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET 4.0'/><title type='text'>ASP.NET 4.0當中的Client ID Mode功能</title><content type='html'>有一個長久以來一直存在的問題，隨著這幾年瀏覽器用戶端程式碼(例如JavaScript/jQuery…等)的盛行，被更強烈的突顯了出來，那就是ASP.NET控制項的ClientID。&lt;br /&gt;&lt;br /&gt;過去ASP.NET的ClientID一直是一個常常困擾開發人員的問題，主要的原因是APS.NET在Render出HTML網頁到用戶端時，ClientID常常是動態且無法確定的，特別是ASP.NET頁面加上了master-page、UpdatePanel、或是那些會隨著資料錄數量而可能動態產生出不同資料列的GridView、ListView、Repeater控制項之後， ClientID則更加的不可測了。&lt;br /&gt;&lt;br /&gt;面對這個問題，ASP.NET 4提出了新的ClientIDMode屬性，可透過底下四種不同的設置值來決定ClientID的Render方式，分別是：AutoID、Static、Predictable、與Inhert。開發人員可以在程式碼中透過屬性來設定ClientID產生的方式。&lt;br /&gt;&lt;br /&gt;具體的說明請參考本期Run!PC或點選&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=72"&gt;這邊&lt;/a&gt;瀏覽教學影片或下載範例。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-1842557138769320502?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/1842557138769320502/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=1842557138769320502' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/1842557138769320502'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/1842557138769320502'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2010/05/aspnet-40client-id-mode.html' title='ASP.NET 4.0當中的Client ID Mode功能'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-269797110762293447</id><published>2010-05-06T17:25:00.005+08:00</published><updated>2010-05-07T09:39:40.824+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VS2010'/><category scheme='http://www.blogger.com/atom/ns#' term='研討會'/><title type='text'>visual Studio 2010上市發表會</title><content type='html'>感謝大家今天在台北場次的熱情參與，下午由我所主講的Silverlight 4場次中，所提到的範例和影片下載，將會從今天開始陸續放到網站上，下載或瀏覽請至[&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?BookUid=5"&gt;這裡&lt;/a&gt;]。&lt;br /&gt;&lt;br /&gt;由於網站需要註冊帳號並經過驗證才能正確下載，若您先前沒有帳號，請依照流程註冊帳號，若無法註冊帳號或有任何相關問題，可隨時&lt;a href="mailto:sys@studyhost.com"&gt;mail&lt;/a&gt;與我們聯繫。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-269797110762293447?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/269797110762293447/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=269797110762293447' title='6 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/269797110762293447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/269797110762293447'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2010/05/visual-studio-2010.html' title='visual Studio 2010上市發表會'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-3163421385417798960</id><published>2010-05-04T15:21:00.002+08:00</published><updated>2010-05-04T15:23:57.899+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='我最喜歡的Silverlight 4 新功能系列'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>Silverlight 4 Toolkit中的滑鼠右鍵選單(ContextMenu)支援</title><content type='html'>有了&lt;a href="http://studyhost.blogspot.com/2010/04/silverlight-4.html"&gt;滑鼠右鍵支援&lt;/a&gt;之後，第一個令人聯想到的，就是右鍵選單的設計了。配合著滑鼠右鍵的支援，在Silverlight 4 Toolkit當中，收錄了右鍵選單的控制項，當您安裝了Silverlight 4 Toolkit之後，可以從工具箱中找到這個ContextMenu控件：&lt;a href="http://3.bp.blogspot.com/_RnPgsDyRc2Y/S92Wr06AN6I/AAAAAAAAAg4/o2G9e_CuHy8/s1600/P4006.png"&gt;&lt;img style="WIDTH: 320px; HEIGHT: 288px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5466691202378119074" border="0" alt="" src="http://3.bp.blogspot.com/_RnPgsDyRc2Y/S92Wr06AN6I/AAAAAAAAAg4/o2G9e_CuHy8/s320/P4006.png" /&gt;&lt;/a&gt;&lt;br /&gt;您可以把ContextMenu附著在任何的UIElement上，呈現出的結果如上圖。除了ContextMenu之外，SL 4 Toolkit還附贈了一個ContextMenuService機制，這讓我們在設計XAML時可以這樣撰寫：&lt;pre class="brush:html;"&gt;&amp;lt;TextBox Height="26" HorizontalAlignment="Left" Margin="44,28,0,0" Name="textBox1" VerticalAlignment="Top" Width="286" Text="請在我身上按滑鼠右鍵" FontSize="16" &amp;gt;&lt;br /&gt;    &amp;lt;toolkit:ContextMenuService.ContextMenu&amp;gt;&lt;br /&gt;        &amp;lt;toolkit:ContextMenu  FontSize="12" HorizontalAlignment="Left" Name="contextMenu1" VerticalAlignment="Top"&amp;gt;&lt;br /&gt;            &amp;lt;toolkit:MenuItem&lt;br /&gt;                Header="選單一"&lt;br /&gt;                Click="MenuItem_Click"/&amp;gt;&lt;br /&gt;            &amp;lt;toolkit:Separator/&amp;gt;&lt;br /&gt;            &amp;lt;toolkit:MenuItem&lt;br /&gt;                Header="可以設為disabled"&lt;br /&gt;                IsEnabled="False"/&amp;gt;&lt;br /&gt;            &amp;lt;toolkit:Separator/&amp;gt;&lt;br /&gt;            &amp;lt;toolkit:MenuItem&lt;br /&gt;                Header="小圖示"&lt;br /&gt;                Click="MenuItem_Click"&amp;gt;&lt;br /&gt;                &amp;lt;toolkit:MenuItem.Icon&amp;gt;&lt;br /&gt;                    &amp;lt;Image Source="Images/User.png"/&amp;gt;&lt;br /&gt;                &amp;lt;/toolkit:MenuItem.Icon&amp;gt;&lt;br /&gt;            &amp;lt;/toolkit:MenuItem&amp;gt;&lt;br /&gt;        &amp;lt;/toolkit:ContextMenu&amp;gt;&lt;br /&gt;    &amp;lt;/toolkit:ContextMenuService.ContextMenu&amp;gt;&lt;br /&gt;&amp;lt;/TextBox&amp;gt;&lt;/pre&gt;透過ContextMenuService可以幫助我們不需要額外撰寫任何的程式碼，例如我們只需要在TextBox中加上ContextMenuService並在其中加入了ContextMenu，如此一來當使用者在TextBox上按下滑鼠右鍵時，就會自動出現右鍵選單了。&lt;br /&gt;[&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=66" target="_blank"&gt;參考範例下載&lt;/a&gt;]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-3163421385417798960?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/3163421385417798960/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=3163421385417798960' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/3163421385417798960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/3163421385417798960'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2010/05/silverlight-4-toolkitcontextmenu.html' title='Silverlight 4 Toolkit中的滑鼠右鍵選單(ContextMenu)支援'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_RnPgsDyRc2Y/S92Wr06AN6I/AAAAAAAAAg4/o2G9e_CuHy8/s72-c/P4006.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-1967116350992158047</id><published>2010-05-03T11:23:00.005+08:00</published><updated>2010-05-03T11:50:10.783+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='無關程式'/><category scheme='http://www.blogger.com/atom/ns#' term='找回生活'/><category scheme='http://www.blogger.com/atom/ns#' term='心情'/><title type='text'>我的咖啡館 之 精緻輕食套餐</title><content type='html'>一天假日，起得大早，難得天氣好，所以親自下廚給自己和家人準備一個好一些的早餐。&lt;br /&gt;&lt;br /&gt;全名是：三層超大火腿蛋番茄生菜洋蔥起司三明治，名稱沒什麼特色，但是一口氣把原料都講清楚了。&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_RnPgsDyRc2Y/S95DvB6HEYI/AAAAAAAAAhY/v0BihrKkMxE/s1600/20100503702.jpg"&gt;&lt;img style="WIDTH: 320px; HEIGHT: 240px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5466881472919441794" border="0" alt="" src="http://4.bp.blogspot.com/_RnPgsDyRc2Y/S95DvB6HEYI/AAAAAAAAAhY/v0BihrKkMxE/s320/20100503702.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;如果你有看過&lt;a href="http://studyhost.blogspot.com/2010/04/blog-post.html"&gt;我的咖啡館&lt;/a&gt;，那不用懷疑，這份輕食套餐肯定會是本店的招牌，便宜好吃又超大份量，專供developer一個人吃剛剛好。餐後附贈的咖啡雖然不是極品，但也是店長本人精挑細選的平價咖啡了。夠醇夠厚，而且後勁十足，包準你參加老闆每週一的精神演講絕對不會睡著。&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_RnPgsDyRc2Y/S95Du0te1SI/AAAAAAAAAhQ/_QR2DMPD4ro/s1600/20100503701.jpg"&gt;&lt;img style="WIDTH: 320px; HEIGHT: 240px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5466881469376812322" border="0" alt="" src="http://2.bp.blogspot.com/_RnPgsDyRc2Y/S95Du0te1SI/AAAAAAAAAhQ/_QR2DMPD4ro/s320/20100503701.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;配上店裡面優閒的soft Jzaa，我肯定你會有一個豐盛的早晨，加上輕快的好心情。&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_RnPgsDyRc2Y/S95DtyBMW1I/AAAAAAAAAhA/fDIBXPnagk0/s1600/20100503699.jpg"&gt;&lt;img style="WIDTH: 320px; HEIGHT: 240px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5466881451474312018" border="0" alt="" src="http://4.bp.blogspot.com/_RnPgsDyRc2Y/S95DtyBMW1I/AAAAAAAAAhA/fDIBXPnagk0/s320/20100503699.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;由於店長夫人覺得店長常年茹葷，蔬菜攝取量嚴重不足，而與本人一樣身為艱苦的Developer，或多或少肯定也都會有這樣的症狀，因此店長夫人總會叮嚀再三，要多加一些生菜...要多加一些生菜...所以狂加生菜就是本店招牌輕食的特色：&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_RnPgsDyRc2Y/S95DuVLsChI/AAAAAAAAAhI/BfmhpBPYiO4/s1600/20100503700.jpg"&gt;&lt;img style="WIDTH: 320px; HEIGHT: 240px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5466881460913572370" border="0" alt="" src="http://2.bp.blogspot.com/_RnPgsDyRc2Y/S95DuVLsChI/AAAAAAAAAhI/BfmhpBPYiO4/s320/20100503700.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;根據店長本人的親自測試，半個三明治約莫3-5口可以KO，對於忙著趕專案的開發人員來說，絕對是高效率的能量補給品，為了平衡加了很多的生菜，店長在加美乃滋和cream cheese時絕對不手軟：&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_RnPgsDyRc2Y/S95DvvWTrRI/AAAAAAAAAhg/d6egAUftYbM/s1600/20100503703.jpg"&gt;&lt;img style="WIDTH: 240px; HEIGHT: 320px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5466881485117304082" border="0" alt="" src="http://2.bp.blogspot.com/_RnPgsDyRc2Y/S95DvvWTrRI/AAAAAAAAAhg/d6egAUftYbM/s320/20100503703.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;前面說過，餐後的咖啡即便不是極品(免費贈送的不然你要怎樣???)，但也足以讓你撐一個上午的好精神了：&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_RnPgsDyRc2Y/S95FBCcdR7I/AAAAAAAAAho/UiEMdixHlQ4/s1600/20100503704.jpg"&gt;&lt;img style="WIDTH: 320px; HEIGHT: 240px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5466882881812776882" border="0" alt="" src="http://2.bp.blogspot.com/_RnPgsDyRc2Y/S95FBCcdR7I/AAAAAAAAAho/UiEMdixHlQ4/s320/20100503704.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;濃郁程度剛剛好：&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_RnPgsDyRc2Y/S95FBtzb4eI/AAAAAAAAAhw/cWxeg6PwCVw/s1600/20100503705.jpg"&gt;&lt;img style="WIDTH: 320px; HEIGHT: 240px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5466882893451878882" border="0" alt="" src="http://2.bp.blogspot.com/_RnPgsDyRc2Y/S95FBtzb4eI/AAAAAAAAAhw/cWxeg6PwCVw/s320/20100503705.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;我的咖啡館 之 精緻輕食套餐，凡是出示貴賓卡(就是店長著作的任何一本資訊書籍，要完整的，不能只剩封面或是殘缺內頁)的尊貴客人，每人每天限量一套只要 $39 元。&lt;br /&gt;&lt;br /&gt;價格實惠，本店週一到週五，每天限量10套。週六日無限量供應。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-1967116350992158047?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/1967116350992158047/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=1967116350992158047' title='7 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/1967116350992158047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/1967116350992158047'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2010/05/blog-post.html' title='我的咖啡館 之 精緻輕食套餐'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_RnPgsDyRc2Y/S95DvB6HEYI/AAAAAAAAAhY/v0BihrKkMxE/s72-c/20100503702.jpg' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-7568622182082391943</id><published>2010-04-30T23:33:00.004+08:00</published><updated>2010-04-30T23:38:12.494+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET 4.0'/><title type='text'>ASP.NET 4當中針對SEO(Search engine optimization)的支援</title><content type='html'>在ASP.NET 4當中，針對 Web Forms本身也有些許的增強，首先我們看到的是SEO(Search Engine Optimization)的支援。&lt;br /&gt;&lt;br /&gt;對於很多企業來說，自家的網頁在搜尋引擎上能否被快速的找到並且呈現出正確的資訊，是相當重要的課題。在新版的ASP.NET 4當中，增加了Page.MetaKeywords以及Page.MetaDescription這兩個屬性，這讓開發人員可以輕易的在網頁中加入可供搜尋引擎檢索的訊息：&lt;pre  class="brush:c-sharp;"&gt;&lt;br /&gt;protected void Page_Load(object sender, EventArgs e)&lt;br /&gt;{&lt;br /&gt;    Page.MetaKeywords = "ASP.NET 4";&lt;br /&gt;    Page.MetaDescription = "這是一個呈現ASP.NET 4最新技術的專業網站...";&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;當然，開發人員也可以透過.aspx的頁面修飾字來處理：&lt;br /&gt;&lt;pre  class="brush:c-sharp;"&gt;&lt; % @ Page Language="C#"  MetaKeywords="ASP.NET 4"&lt;br /&gt;|MetaDescription="這是一個呈現ASP.NET 4最新技術的專業網站..." &lt;br /&gt;AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="ASP.NET_Blank.WebForm1" % &gt;&lt;br /&gt;&lt;/pre&gt;這些訊息對於搜尋引擎來說有相當大的幫助。可以讓搜尋引擎精確的提供針對您的網頁的說明與介紹。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-7568622182082391943?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/7568622182082391943/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=7568622182082391943' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/7568622182082391943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/7568622182082391943'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2010/04/aspnet-4seo.html' title='ASP.NET 4當中針對SEO(Search engine optimization)的支援'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-6323890248183220262</id><published>2010-04-24T01:22:00.002+08:00</published><updated>2010-04-24T03:58:28.965+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VS2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>VS2010對Silverlight DataBinding的intellisense與Wizard支援</title><content type='html'>&lt;div&gt;和很多人一樣，我們剛開始接觸 Silverlight 的時候，恨透了Silverlight DataBinding技術的詭異， 覺得，怎麼它不像ASP.NET一樣, 可以一股腦兒的把後面的資料庫的內容Bind到前端UI裡面去呢? 如果這樣支援，開發起來不是很過癮嗎?&lt;br /&gt;&lt;br /&gt;後來才發現，當時我們的期待其實本身是有很多的問題的，特別是開發人員容易被制約在過去ASP.NET的思維裡，所以想當然的覺得做不到的事情就是Silverlight的DataBinding機制不夠好...&lt;br /&gt;&lt;br /&gt;但卻忽略了Silverlight的DataBinding技術跟ASP.NET根本完全迥異，甚至可以說八竿子打不著...更不用說過去ASP.NET從UI層Bind到後端資料庫的概念到底是不是正確... 反而漠視了Silverlight DataBind技術的強大，配合起DataTemplate, Converter恐怕是其他開發技術中的Binding概念所望塵莫及的。&lt;br /&gt;&lt;br /&gt;不過, 不過今天的重點不是這個(我會找天有空時認真的寫一篇歌頌(呃...不是...是介紹)Silverlight DataBinding技術的文章, 先回題), 今天想要分享的是, VS2010當中開始支援Silverlight DataBinding的intellisense了，這對於Silverlight開發人員來說，是一個相當不錯的功能增強。&lt;br /&gt;&lt;br /&gt;就拿Silverlight當中著名的Element to Element Binding技術來說，現在我可以很大方的這麼寫：&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_RnPgsDyRc2Y/S859GCC3auI/AAAAAAAAAgY/xggoNjWuTXs/s1600/p1.png"&gt;&lt;img style="WIDTH: 320px; HEIGHT: 257px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5462440940628568802" border="0" alt="" src="http://4.bp.blogspot.com/_RnPgsDyRc2Y/S859GCC3auI/AAAAAAAAAgY/xggoNjWuTXs/s320/p1.png" /&gt;&lt;/a&gt;&lt;br /&gt;你會發現，VS2010開發環境中已經完整的支援了Silverlight DataBinding的intellisense，當然，如果你要透過屬性視窗，透過Wizard來設定，當然也可以：&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_RnPgsDyRc2Y/S859598ajLI/AAAAAAAAAgo/V2MifEYVt0I/s1600/p3.png"&gt;&lt;img style="WIDTH: 320px; HEIGHT: 176px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5462441832880966834" border="0" alt="" src="http://2.bp.blogspot.com/_RnPgsDyRc2Y/S859598ajLI/AAAAAAAAAgo/V2MifEYVt0I/s320/p3.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;勾勾選選，不用寫任何程式碼，你會發現TextBox中的文字就會隨著SliderBar的拖曳而改變, 如何? 不錯吧, 這就是ElementToElement Binding技術：&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_RnPgsDyRc2Y/S859Vcj4vAI/AAAAAAAAAgg/Kl9twHUCAyM/s1600/p2.png"&gt;&lt;img style="WIDTH: 320px; HEIGHT: 204px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5462441205444426754" border="0" alt="" src="http://2.bp.blogspot.com/_RnPgsDyRc2Y/S859Vcj4vAI/AAAAAAAAAgg/Kl9twHUCAyM/s320/p2.png" /&gt;&lt;/a&gt;&lt;br /&gt;回題，Silverlight的Binding技術很讚，這個我們都知道，以後有空再介紹，這邊要說的是，經過了那麼多次版本更新，終於在這一次VS2010開始支援了Sivlerlight Binding的設定，不管是intellisense或是Wizard支援...&lt;br /&gt;&lt;br /&gt;&lt;p&gt;嘿嘿，沒有藉口不用Silverlight了吧!!!&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;[&lt;a href="http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?CodeUid=59" target="_blank"&gt;參考範例或影片&lt;/a&gt;]&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-6323890248183220262?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/6323890248183220262/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=6323890248183220262' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/6323890248183220262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/6323890248183220262'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2010/04/vs2010silverlight-databindingintellisen.html' title='VS2010對Silverlight DataBinding的intellisense與Wizard支援'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_RnPgsDyRc2Y/S859GCC3auI/AAAAAAAAAgY/xggoNjWuTXs/s72-c/p1.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4291069679343025964.post-5951505132194006101</id><published>2010-04-23T12:14:00.002+08:00</published><updated>2010-04-23T12:17:18.703+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Office'/><title type='text'>Office 2010 CHT is here...</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_RnPgsDyRc2Y/S9Eey-RmRgI/AAAAAAAAAgw/2PhD5eW_-o4/s1600/p1.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 182px;" src="http://1.bp.blogspot.com/_RnPgsDyRc2Y/S9Eey-RmRgI/AAAAAAAAAgw/2PhD5eW_-o4/s320/p1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5463181684036224514" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;看起來，該來的都來了，Office 2010在MSDN Subscriber已經可以下載...包含中文版。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4291069679343025964-5951505132194006101?l=studyhost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://studyhost.blogspot.com/feeds/5951505132194006101/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4291069679343025964&amp;postID=5951505132194006101' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/5951505132194006101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4291069679343025964/posts/default/5951505132194006101'/><link rel='alternate' type='text/html' href='http://studyhost.blogspot.com/2010/04/office-2010-cht-is-here.html' title='Office 2010 CHT is here...'/><author><name>David</name><uri>http://www.blogger.com/profile/14918558855624275059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_RnPgsDyRc2Y/S9Eey-RmRgI/AAAAAAAAAgw/2PhD5eW_-o4/s72-c/p1.png' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
