碰到一個小問題:用 NuGet 更新 ASP.NET MVC 專案的 Knockout.js 之後,發現 Visual Studio 2012 的 IntelliSense 功能不會提示 Knockout.js 語法了.... 轉貼:
現在的 Internet 應用程式往往會用到多套 JavaScript 函式庫,例如 jQuery、jQuery UI、Modernizr、Knockout 等等。這些檔案如果放在自家主機,當用戶遍及全球且數量龐大時,不僅占用頻寬,對主機的效能也會形成一些負擔。目前已經有幾家廠商的 CDN(Content Delivery Network)有提供常用的 JavaScript,若能善加利用,將有助於提升 Internet 應用程式的效能。 轉貼:
Visual Studio 2012 有個 Page Inspector 的功能挺酷,這裡有文章介紹如何使用:Using Page Inspector in ASP.NET MVC,其中還有附影片。 轉貼:
Visual Studio 2012 Color Scheme Editor 安裝此工具之後,從 Visual Studio 2012 主選單點開 TOOLS \ Options 視窗,在 Environment \ General 項目的 Color theme 下拉清單中,原本只有 Light 和 Dark 兩個主題可選,現在多了好幾個,如下圖: 轉貼:
整理兩個跟 Entity Framework 處理欄位預設值有關的問題:(1) 如何設定 entity 的欄位預設值? (2) 當資料表中的某個欄位有指定預設值,例如 CreatedTime 欄位的預設值為 getdate(),透過 Entity Framework 5 異動資料時,該預設值的設定卻沒作用? 轉貼:
設計軟體架構時要保持彈性,這已是老生常談。架構設計就是一堆取捨(trade-offs),大家也都知道。可是如何保持彈性、取誰捨誰,又是個大哉問。而我想說的是,設計人員在心態上保持彈性、謙虛,也很重要。在面對一個全新設計的軟體產品時,很早就開始優化(optimization),可能是不太謙虛的一個徵兆。 轉貼:
在 ASP.NET MVC 應用程式中使用 Entity Framework 時,DbContext(或 ObjectContext)物件的壽命,一般是建議與 HTTP request 「同生共死」.... Why? 轉貼:
EFMVC 是個開放原始碼專案,目的在於示範以 ASP.NET MVC 和 Entity Framework 5 Code First 模型來開發多層式(multi-layered)Web 應用程式。我用 Visual Studio 2012 開啟此範例專案時,會出現警告訊息,告訴我目前專案所使用的資料庫是 SQL Server Express,但我的電腦並沒有安裝這個軟體。 轉貼:
Visual Studio 2010 裡面有個 Schema Compare 功能可用來比對兩個資料庫的 schema 差異,非常方便,在資料庫欄位經常變動的情況下,可節省我們許多時間。另外還有個 Data Compare 功能,到了 Visual Studio 2012 卻不見了.... 轉貼:
當我們已經在應用程式中使用 ORM(例如 Entity Framework),還需要 Repository 嗎?這個問題就像「要不要使用 ORM」一樣,沒有標準答案。這類「該不該」的問題,有時真的挺傷腦筋。 轉貼:
在 WPF 應用程式或 Windows Forms 應用程式中攔截視窗程序(WndProc)並不難,可是如果要在 WPF 控制項中攔截 Windows Form 的視窗程序,就得動點手腳了。這篇筆記整理幾種攔截視窗訊息的方法和範例。 轉貼:
有一段時間沒使用 Subversion 了。最近從 CodePlex 取出一個開放原始碼專案,發現一個令人驚喜的改變:原本每個資料夾底下都有的 .svn 隱藏目錄,現在已經跟 Git 一樣,只剩下一個了。 轉貼:
最近看了點單元測試的東西,發覺 MSDN 網站上的這篇文章蠻容易入手:Isolating Code under Test with Microsoft Fakes,便做了點整理。這篇筆記裡面的範例也有一些取自該文,只是寫的比較囉嗦一些。 轉貼:
這個認證...其實有點不好意思拿出來。自己並不常寫 HTML5、JavaScript、CSS3,當初只是抱著去考看看的心情(當然是有自己先惡補一下)。不過,考過了還是挺開心,就拿出來曬一下,順便在這裡提示一點考試方向.... 轉貼:
網友 itplayer 在上一篇文章的留言中提到了洋蔥架構,我後來爬了一些文,發現其理念蠻有意思,而且跟自己上一篇文章裡面提到的作法有那麼一絲絲雷同處--這顯然是往自己臉上貼金。於是,將爬文所見整理一下,包括 Domain-Drive Design 多層式架構、六角架構、洋蔥架構等,作為此入門系列的一個概念總整理。上一版的範例程式也稍有修改,使其層次與模組的命名比較接近洋蔥架構。謬誤之處,還請各方不吝指正。 轉貼:
先前有一篇筆記說明了 .NET 事件訂閱寫法如何導致 Windows 應用程式很容易出現記憶體洩漏的問題。這次要介紹 .NET Memory Profiler 的一點粗淺用法,看看這項工具對於找出記憶體洩漏問題能夠提供什麼幫助。Visual Studio 2012 內建的剖析功能也會順便提一點。(圖多) 轉貼:
如果你正在撰寫 Windows service 應用程式,裡面需要將 DateTime 轉換成字串,而在轉換時不指定日期時間格式,例如 DateTime.Now.ToString()。這樣的寫法,你認為會得到什麼格式的日期時間字串?我想大概在 99% 的情況下,答案都非常明顯:根據目前執行緒的 CurrentCulture 而定,預設就是使用控制台裡面的設定。可是我卻碰到了那 1% 的狀況,整個追蹤過程就是覺得不可思議,直到真相大白。 轉貼:
這其實是<使用 Weak Events 來避免記憶體洩漏>的續集,主要是補充上次略過的部分,也就是撰寫自訂的 WeakEventManager 類別。此類別與我們的程式有何關係,前因後果已在上集說過,這裡就不再重複。 轉貼:
.NET 事件訂閱的語法很簡單,C# 是用 += 運算子來訂閱事件,用 -= 運算子來取消訂閱。這些我們都已經很熟悉了。可是,在某些情況下,這種事件訂閱的寫法會導致記憶體洩漏(memory leak),亦即應該由 GC 回收的記憶體,卻遲遲沒有回收,導致記憶體用量不斷升高,甚至造成應用程式不穩定。這裡用幾個範例程式來呈現問題和解法,包括 WPF 4.5 新增加的 WeakEventManager<TEventSource, TEventArgs>。 2012-09-19 更新:文後附上範例程式的下載連結。 轉貼:
這篇文章提供了一個簡單的入門範例,以展示分層設計的一種實作方式,以及幾個常見的基礎概念,如領域物件、資料存取物件等。有句老話還是要說一下:這裡示範的作法不見得很恰當,總是拋磚引玉;如果您願意分享自己的想法和經驗,都非常歡迎在此留言。 轉貼:
原先已經用 Enterprise Library 5.0 安裝程式把整套元件安裝好了,後來在為專案加入 EntLib 組件參考時,有些是用挑選組件的方式來加入參考,有些則是用 NuGet。結果用 NuGet 取得的部分組件版本比原先安裝的 EntLib 版本還要新,便產生了一些問題。 轉貼:
在 Enterprise Library 套件中,有一個功能區塊叫做 Data Access Application Block(DAAB),可協助開發人員寫出更彈性、一致的程式碼,並減少一些重複瑣碎的工作。本文將以範例說明 DAAB 的一些基本用法,以及在不使用 Entity Framework 或 NHibernate 等物件關聯對應框架的情形下,如何以傳統的 ADO.NET 資料存取技術搭配 DAAB 來實作簡易的資料存取物件(Data Access Objects)。 轉貼:
目前寫的 MMC snap-in 已經有點樣子,總算對 MMC snap-in 的程式設計模型有些粗淺的了解,也累積了一些可供日後參考的程式碼。作為上一篇 MMC 筆記的續集,這篇可能會稍嫌雜亂,一方面因為大部分都是隨手記下,加以拼湊;另一方面,最近總覺得時間不太夠用,文章無暇細琢。但如果你是第一次跟 MCM snap-in 打交道,我想裡面有些東西應該會有幫助。當然啦,MSDN 上面的文件最好還是盡量 K,以免遺漏一些關鍵細節,浪費許多摸索和試誤的時間(說我自己啦!)。 轉貼:
記錄從 Windows 8 Release Preview 升級至 Windows 8 RTM 的一些小問題,包括:就地升級、刪除 Windows.old 資料夾、安裝語言包、以及掛載虛擬光碟的功能突然消失。 轉貼:
今天才發現這個部落格裡的某些包含文章,其中程式碼的部分,Chrome 瀏覽器在顯示時會無故多了好多空白行,而且行號亂跳。如果用 IE 檢視網頁則無此現象。後來在 Stackoverflow 的一個討論串找到解法。 這提供解法的人應該是非常熟悉 CSS 吧!真想知道他是如何發現這個解法的。厲害! 轉貼:
問題 用戶端應用程式在呼叫一個 WCF 服務時出現 HTTP 500 內部伺服器錯誤,至伺服器端打開 Windows 事件檢視器,發現有個警告: Exception information: Exception type: InvalidOperationException Exception message: DataReader.GetFieldType(5) returned null. at System.Data.ProviderBase.SchemaMapping.SetupSchemaWithoutKeyInfo(MissingMappingAction mappingAction, MissingSchemaAction schemaAction, Boolean gettingData, DataColumn parentChapterColumn, Object chapterValue) ...... 轉貼:
微軟網站上有一篇 MMC Snap-in 的入門教學文章:How-To Create a Hello World Snap-in。這份文件在當時已經蠻清楚了,只是後來沒有持續更新,以至於有些內容未跟上目前的作業環境。這裡就針對過時或未及之處做一些補充,包括 MMC 3.0 執行於 64 位元環境的問題,以及與 .NET 4 的相容性問題。 轉貼:
有關 WMI 的文章和範例已經很多了,重點記錄一下就好。包括:如何使用 WMI 來做即時的系統監控,以及使用 Chart 控制項來顯示即時監控資訊。 (嗯...我也希望能夠直接用現成的工具,但是....) 轉貼:
91 兄在 Unity 入門 (5) 的留言板中提了一個實務上的問題,我原先沒有特別細想。由於留言板不方便編輯,所以我把整理後的回覆內容寫在這裡,方便日後參考。另一方面,則是順便補充先前入門系列所沒有提到的子容器用法。 轉貼:
作者:陳建村(Teddy Chen) 出版社:悅知文化 出版日期:2012年06月22日 《笑談軟體工程:敏捷開發法的逆襲》是悅知文化出版的新書。在市面通路上架之前,我就在網路書店上訂了一本。遲遲沒有寫心得上來,主要是因為有些內容其實我先前已在作者 Teddy 的部落格上看過(Scrum 的部分),所以就先擱著,想說等手上要消化的東西先告一段落,再來好好拜讀一番。 儘管有些內容在部落格上也能找到,之所以剛得知出版訊息就立刻上網訂購,一方面是內容好,又是 Made In Taiwan,一定要掏腰包支持一下。另一方面,是知道悅知文化對書籍品質一向講究,所以並不擔心。 作者的文筆風趣,讀來妙趣橫生,令我想起另一本書--應該說兩本書:《約耳趣談軟體》和《約耳續談軟體》。這兩本書也是悅知文化出版的,在此一併推薦給所有辛苦的軟體開發人員(包括專案經理)。 對了,雖然書名是「笑談軟體工程」,但我還是常把副標「敏捷開發法的逆襲」當作書名。這副標真是加分不少啊!不禁想到自己曾發過一篇標題殺人聳動的文章:開發人員的逆襲: Domain-Specific Languages。大概我對「逆襲」一詞頗有好感吧。(迷之音:其實是被電影《300 壯士:斯巴達的逆襲》影響 XD) 轉貼:
在上一回的範例當中,我們不是直接用 new 運算子去建立 SayHelloInEnglish 的物件實體(instance),而是透過 Unity 容器的 Resolve 方法來幫我們完成這項工作。這次要進一步說明這個 Resolve 方法在建立物件時的一些細節。 轉貼:
先前寫了六篇 dependency injection 筆記,之後因為工作上的變動而暫停。最近又有機會把注意力稍微拉回來,所以便有了這篇筆記。稱不上續集,因為先前的討論都還屬於 dependency injection(以下簡稱 DI)基礎觀念的範疇,而這篇筆記是直接跳到 Unity 實作的部分了....嗯,其實還蠻跳 tone 的,因為中間還有許多議題沒有談到。不過,對於已經具備 DI 基礎觀念、想盡快了解如何使用 Unity 的人來說,或許會有點幫助吧。 轉貼:
其實沒有特別喜歡看名人傳記,忘了先前從哪裡看到某人推薦這本書,腦海中有個印象。後來再看到,便從圖書館借來讀。 這本書分成四部分:釣魚哲學、幸福經濟、理想國、永恆的藝術。我目前只讀到第二部分,但有聽說第三部分<理想國>的政治味比較濃,不同意識形態的人讀起來可能會有很不一樣的感覺。 我覺得,第二部分的大標其實若改成「理想企業」也可以。如果真有公司能按照許董所說的理念和心胸去經營一家企業,那對員工來說真是非常理想啊!想起幾年前某同班同學告訴我,他在「奇美包子」,當時沒啥感覺,現在突然很羨慕他曾待過這樣一家公司。 話說回來,閱讀時在心理上也要有點防備,以免不斷拿書中描述的美好情境與自己的工作環境比較,平添哀怨(闔上書本就回到現實來吧 Orz)。 轉貼:
問題 Visual Studio 2010 建置專案時出現錯誤: The operation could not be completed. The parameter is incorrect. 這個錯誤訊息的用處不大。試過重開 Visual Studio 2010、Run as Administrator 都沒用。 轉貼:
開發 WCF 應用程式時,通常在 Solution Explorer 中的 Web.config 上點右鍵就會出現「Edit WCF Configuration」選單項目,方便讓我們直接開啟 WCF 組態編輯器。但有時候這個選單項目會出不來。 轉貼:
MSDN 網站上的 sys.dm_exec_requests 說明文件有提供幾個使用範例,包括如何透過這個 DMV(Dynamic Management Views)來取得執行中的 SQL 指令、如何找出所有的 locks、以及目前被卡住(blocked)的操作。MSDN 文件裡面有提供的,這裡就不重複貼了。 轉貼:
在嘗試使用 GitHub 來管理原始碼版本時,發現 TortoiseGit (v1.7.8) 在透過 SSH 協定存取遠端 GitHub 上的版本庫時會發生錯誤,但如果用 Git Bash 下指令的方式則沒有問題。 轉貼:
近日寫點網頁提供手機程式上傳檔案,順手做點筆記。主要包含兩個部分:一是檔案上傳背後所使用的 multipart 類型的 HTTP POST 訊息格式,二是如何在 ASP.NET 程式中處理上傳的檔案。 轉貼:
OK! 你已經知道怎麼安裝 AJAX Control Toolkit 而且已經安裝好了,然後你想利用 AutoCompleteExtender 來為某些 TextBox 控制項添加自動完成的功能(很簡單),而此功能所提示的項目清單要來自另一個 WCF Service,而不是來自網頁本身提供的 Web Method 或某個 Web Service(其實也很簡單)。最後,還想套用自訂的 CSS 來改善自動完成清單的顯示樣式。 轉貼:
上次嘗試利用 Fluent Configuration API 來動態設定應用程式組態,便想到以前經常碰到的問題:如何讓 DLL 組件有自己的「應用程式組態檔」? 這篇就稍微整理一下,並提供一個簡易的、讀取 DLL 組件的工具類別:AssemblySettings。 轉貼:
以往,我們安裝好 Enterprise Library 之後,大都是在 Solution Explorer 中,以點右鍵的方式開啟組態設定視窗來為 App.config 加入所需之組態。這裡示範完全使用程式碼的方式,而且是透過 Fluent Configuration API 來協助我們於執行時期設定應用程式組態。同時會稍微提及 Enterprise Library 裡面的 DI 容器。 轉貼:
(續上集)2012 年一月份的 MSDN 雜誌有一篇文章,標題是「Working with Agile in a Distributed Team Environment」,作者是 Sandeep Joshi。拜讀之餘,想想好久沒翻譯了,就順便練習一下。我僅取部分摘譯,分成兩篇發布。這是下集。 轉貼:
2012 年一月份的 MSDN 雜誌有一篇文章,標題是「Working with Agile in a Distributed Team Environment」,作者是 Sandeep Joshi。拜讀之餘,想想好久沒翻譯了,就順便練習一下。我僅取部分摘譯,預計分成兩篇發布。這是上集。 轉貼:
今天測試應用程式時,發現程式的版本號碼突然從 1.0.*.* 變成固定的 1.0.0.0。同事說,他們發現如果把 AssemblyInfo.cs 裡面的 AssemblyVersion 指定為 1.0.*,在 Visual Studio 除錯時常會出現 DLL 檔案目前被其他 process 使用中而無法覆蓋的問題,而當他們把版本號碼設定成固定的 1.0.0.0 時就很正常。 轉貼:
扣掉安裝失敗的不算,這次安裝 SharePoint Server 2010 和 Project Server 2010 應該是第五次了。這次又忘了一個小地方,導致執行 SharePoint 2010 Configuration Wizard 時無法建立資料庫。 轉貼:
Project Server 2010 安裝完成之後,接著就可以開始試試看在 server 上輸入一些專案資料了,像是建立專案、建立資源(小組成員)、設定成員的角色與權限、排專案時程....等等。這些都可以在 PWA(Project Web App) 網站上進行。 (註:由於我用的是英文版,所以文中提及按鈕或特定功能的名稱時,大多使用英文)。 轉貼:
最近協助處理一個很奇怪的問題:在 production 環境下的 ASP.NET 應用程式有時候會整個掛掉,而且連 IIS 也掛了(聽別人轉述的,我沒親眼見到)。作業系統是 Windows Server 2003 R2,.NET Framework 2.0 SP2。 轉貼:
久久一次碰到需要將工作環境從目前的 PC 轉移到另一台 PC 上,很容易忘記異機還原的一些細節,導致遺漏或弄錯操作程序,浪費許多時間。所以,這篇日誌完全是寫給我自己看的(只是等到下次再碰到需要用到異機還原的時候,作法或許又不一樣了)。 轉貼: