利用 DataContractJsonSerializer 實現物件序列化與反序列化

15 years ago
DataContractJsonSerializer 類別是 .NET Framework 3.5 的新成員,它可以用來將物件序列化成 JSON 格式的字串,或者執行反序列化,也就是根據 JSON 格式的字串內容來建立物件,並還原物件的狀態...

亂碼 1/2:Unicode 字元不要用 char 型別來處理

15 years ago
最近在處理一些中文字的問題時,發現一個已經用了兩年多的程式,碰到一些特別罕見的中文字就無法正確執行。當初寫這個程式時,只有測試一般的 Unicode 字元,而沒有考慮到那些特別罕見的中文字。試看這個例子:string str = "風";char ch = s[0];MessageBox.Show(ch.ToString());不意外,畫面顯示的結果是 "風"。如果用 str.Length 來取字串長度,得到的結果也是預料中的 1。對於一般常見或「稍微罕見」的中文字,上面的寫法並不會有問題。但如果碰到特別罕見的中文字就會出狀況了,例如這個:string str = "𩗴";char ch = str[0];MessageBox.Show(ch.ToString());輸出的結果是.....亂碼。由於...

在 Windows 7 上安裝 VS2008 SP1 失敗:vsvars32.bat 無法寫入

15 years ago
終於把家裡和辦公室的電腦升級完畢,分別裝了 Windows 2008 和 Windows 7。Windows 2008 的部分很順利,但是 Windows 7,在安裝 Visual Studio 2008 SP1 英文版的時候卻失敗了。我到 VS2008 SP1 安裝光碟的 vs90sp1 目錄下手動執行各個安裝程式,順序是:VC_x86Runtime.exeWebDesignerCore_KB945140.mspWebDesignerCore_KB950278.mspWinSDK-KB946729.mspWinSDK-KB946733-enu.mspWinSDK-KB950424.mspvstor30sp1-KB949258-x86.mspVS90sp1-KB945140-X86-ENU.msp...

Crystal Reports 的網頁列印對話窗無法列印

15 years ago
這個問題已經是 FAQ 了,我自己也一再碰到,實在很煩人。 問題描述 環境:ASP.NET + Crystal Reports XI R2 SP4 + IE 8.0 Web 應用程式使用 Crystal Reports 來列印報表,當使用者在 CR viewer 視窗中點列印鈕時,新開啟的列印對話窗會掛掉,裡面一片空白,如下圖: 以下是解決此問題的幾個方法,碰到難纏的狀況時,不妨全都用上。 Web.config 裡面加入設定 參考這篇官方文件: http://devlibrary.businessobjects.com/businessobjectsxir2/en/en/CrystalReports_dotNET_SDK/crsdk_net_doc/doc/crsdk_net_doc/html/crconfeatureprinting.htm 注意裡面的...

《學習要像加勒比海盜》讀後感

15 years ago
書名:學習要像加勒比海盜 (博客來書店)作者:James Marcus Bach譯者:洪蘭出版社:遠流出版日期:2009年10月30日看完這本書之後,也許有些人會嗤之以鼻,因為書中對學校教育和文憑社會的現象多有批評。有些人可能心有同感,覺得受到激勵和啟發。我是屬於後者(一部分原因可能跟我研究所念了五、六年都還沒畢業有關 XD)。這是一本談學習方法的書,但跟我之前看過的,討論讀書方法、如何考試拿高分、或如何迅速記憶之類的書不太一樣(作者是反對速讀的)。這本書裡面沒有什麼教條、理論,內容主要是作者 James Bach 描述自己「學習如何學習」的一些過程和真實故事,以及自行歸納整理出來的學習觀念和方法。同時,你會看到很多關於「我」的想法、行為、經驗等等的描述。書中充滿了作者對自我學習歷程的觀察與剖析,有些細微之處描寫得相當到位,而且字裡行間可以感受到作者那份與人分享學習奧秘的熱誠,這是我喜歡這本書的主要原因。儘管很多想法都是以比較主觀的方式描述(我覺得怎樣怎樣,我會怎麼做.....諸如此類的),但是跟那種刻意用被動式、隱藏主詞來強調客觀性的寫法,我更喜歡作者直截了當的表達方式。關於學校教育我不會讓學校阻擾我的教育。  -馬克吐溫I...

安裝 Team Foundation Server 2010 Beta 2 真的只要 Next、Next....

15 years ago
微軟官網於 2009/10/21 發佈了 Team Foundation Server 2010 Beta 2,下載回來嘗試安裝看看...安裝步驟果真變得簡單多了。 我的作業環境是 Windows Server 2008(有 IIS),在安裝 TFS 2010 之前,還需要安裝 SQL Server 2008。基本上整個安裝過程就如 Channel 9 的教學影片所示範的一樣順利,這裡也有圖文並茂的安裝指南: Team Foundation Server 2010 Beta 2 Installation Guide (也有 pdf 版) 一點筆記: 只要 IIS 和 SQL Server 2008 等必要元件都有事先裝好,安裝步驟就很簡單:Next、Next、Next....就裝好了(中間可能會經過一次重新開機)。 TFS...

什麼是 Test Oracle?

15 years ago
審稿時發現譯者有一句沒有譯出來: A test oracle is a source of expected test results for a test case. 可能是因為當中的 "test oracle" 不太好處理吧...

Visual Studio 2010 與 .NET Framework 4 Beta 2 開放下載

15 years ago
It's here:http://msdn.microsoft.com/zh-tw/vstudio/dd582936%28en-us%29.a...

使用 Oracle 資料庫儲存 ASP.NET Session State

15 years ago
速記一下使用 Oracle 資料庫儲存 ASP.NET Session State 的方法(我的資料庫是 Oracle 10g)...

C# 4.0:Covariance 與 Contravariance 觀念入門

15 years ago
.NET Framework 4.0 進一步支援了泛型(generic types)的 covariance 與 contravariance 型別參數,這兩個術語有點抽象,不是很容易說明白。這裡嘗試用一些簡單的例子來說明相關的基礎概念...

將 ASP.NET 網站移轉至 IIS 7 時碰到的問題

15 years ago
總算有機會把原本在 IIS 6 上面跑的 Web 專案移轉到 Windows Server 2008 + IIS 7 環境,但部署完成後,瀏覽網站時卻發生錯誤: Request is not available in this context....

Framework Design Guidelines 筆記 (4): 低門檻原則

16 years ago
關鍵詞彙 Framework(框架;類別庫) The principle of low barrier to entry(低門檻原則) 低門檻原則指的是: 框架必須提供一個較低的入門門檻,讓初學者可以透過簡單的小實驗來學習這套框架。 (p.21) 然而,一套類別庫要做到功能強大、完整,同時又要易學易用,卻不是那麼容易。像 .NET Framework 這類比較大型的類別庫,裡面的類別非常多,為了方便學習、查找,就一定得要有適當、合理的分類和命名,否則可能寫了好多好用的工具,卻藏在類別庫中某個很深層的角落沒人發現。這分類的關鍵,主要就在 namespace 的運用。 因此,若要設計出容易學習的 API,應做到下列幾點(p.22-23): 平常寫程式經常用到的類別要能很容易找到,而且成員的數量要適中。比如說,一個...

審校碎碎念(二):靈活的翻譯?

16 years ago
例 1:These techniques do not replace other approaches to software testing but can significantly increase testing effectiveness, help identify and reduce redundancy, and also reduce the susceptibility of the testing effort to the pesticide paradox...

Greenfield 是綠海還是綠地?

16 years ago
去年五月,IBM 的 IT 架構師 Richard Hopkins 和 Kevin Jenkins 合寫了一本書:《Eating the IT Elephant: Moving from Greenfield Development to Brownfield》。這本書對岸有出簡體版,書名譯為「吃掉IT大象—從綠海到棕海」...

Framework Design Guidelines 筆記 (3) : 情節驅動設計

16 years ago
這是 Framework Design Guidelines 2nd edition 筆記的第 3 篇,基本介紹和表示法請參閱第 1 篇和第 2 篇。 關鍵詞彙 scenario-driven design(情節驅動設計) use cases(使用案例) test-driven development, TDD(測試驅動開發) 以下開始內容摘要,我自己的話用暗橘色標示。 ========================================== 情節驅動設計的原則 我們建議框架設計師先就框架使用者(按:我們常說的 app programmers)所欲處理的主要情節來撰寫程式碼,之後再根據這些範例程式碼來設計合適的物件模型。 此做法有點類似...

.NET Framework 4.0 新功能:Code Contracts

16 years ago
MSDN Magazine 2009 年 8 月號的 CLR Inside Out 專欄主題是 .NET Framework 4.0 的新功能:Code Contracts,由 Melitta Andersen 執筆。正如其名稱所揭示的,這項新功能的目的即在於進一步支援合約式設計(design by contract)的概念。...

Framework Design Guidelines 筆記 (2) : 漸進式框架

16 years ago
摘自:Framework Design Guidelines 2nd edition by Krzysztof Cwalina & Brad Abrams Key Terms progressive framework: 漸進式框架 表示法 DO: 表示強烈建議、務必遵守的設計原則。 CONSIDER: 建議考慮這麼做。 DO NOT: 禁止事項。 AVOID: 儘量避免的做法。 ============================= DO 設計框架時要兼顧功能強大與容易使用。如 Alan Kay 所說:「簡單的東西就要有簡單的設計,而碰到複雜的情況時也應該要能應付。」(Simple things should...

Framework Design Guidelines 筆記 (1) : 優良框架的特徵

16 years ago
小引 網路上有不少人推薦這本書,我也覺得是本內容紮實的好書。原以為應該很快就能看到中文版了,但一直到第二版都沒看到影子(中國大陸有出第一版的簡體版)。我想,這多少是因為從書名來看,它似乎是專門寫給 framework designers 看的,目標讀者的市場太小了。 其實,在目前的程式設計環境,開發人員多少都得碰觸到共用類別/元件的撰寫,即便是元件的使用者(或 app programmers),瞭解好的程式寫法與設計原則,對提升軟體品質也大有幫助。 另一個原因,也許和書中所提的類別設計原則與程式寫法(如命名規則、exception 的處理建議等)比較細緻有關。撰寫一般的 app code 時,多以結果導向,即程式能跑、功能正確就行,至於...

審稿碎碎念:有審校人員把關,譯稿的品質會更好還是更差?

16 years ago
有審校人員把關,譯稿的品質會更好還是更差? 類似的問題:有了測試人員,程式碼的品質會更好還是更差...

[C#] 泛型 = 樣板?

16 years ago
在 Eric Lippert 的部落格看到一段挺有意思的 C# code,以下是我稍微修改過的版本...

《玫瑰的名字》閱讀筆記 3

16 years ago
跟上一篇筆記一樣,這篇也是記錄我讀《玫瑰的名字》時碰到的怪句。 有時候,書上的每個字都認得,兜在一起卻完全看不懂。在《玫瑰的名字》裡面就有這麼一段,反覆看幾遍還是不懂...

《玫瑰的名字》閱讀筆記 2

16 years ago
都說不雞蛋裡挑骨頭了,還是忍不住..... >_<||...

《玫瑰的名字》閱讀筆記 1

16 years ago
書名:玫瑰的名字 作者:Umberto Eco/著 譯者:謝瑤玲 出版社:皇冠 出版日期:1993年09月15日 這本小說的中文版已經出版超過 15 年了。在網路上看到推薦文,便將屢屢啃食不下的《罪與罰》先晾在一邊,改看這本...

SQL Server Connection Forcibly Closed

16 years ago
又一個有點麻煩的問題:在 server farm 環境下,利用 SQL Server 資料庫來儲存 ASP.NET 網站的 sessions,可就是有某一台 app server 會三不五時(每週一兩次或者完全沒有)出現無法連接 SQL Server 的錯誤訊息: TCP Provider, error: 0 - An existing connection was forcibly closed by the remote host 當此問題發生時,我的伺服器當機偵測程式會發送 MSN 通知和 e-mail 給我。麻煩的地方在於,如果在收到通知訊息時立刻用瀏覽器開啟出問題的 app server 的網頁,卻又發現是正常的。也就是說,這個問題既不定時出現,出現的時間也很短暫,很難將它「鎖定」。 在...

天堂的階梯(The Good Death)

16 years ago
偶然在延伸的網路連結中發現此書,書名 The Good Death(好死)頗吸引我,於是從圖書館借了一本。這本書詳細描述了多位病人臨終前的痛苦經歷,才看完第一個個案,便感受到很大的衝擊。當然,生病沒有不辛苦的,但書中描述的個案,看了實在是令人不忍......怎一個「慘」字了得!同時也才稍稍了解,當活下去已經沒有任何意義,連尋死都成為一種奢求時,是多麼的悲哀。這些發生在美國的真實案例,有的是因為罹患癌症、愛滋病等疾病,有的則是因為用藥不當或車禍等意外而導致失去行為能力的病人。由於當時(大約 1970 年之前)醫界與一般民眾對於安寧療護、疼痛控制的認知還相當貧乏,對臨終病人與家屬能否決定拔管(呼吸器、鼻胃管)也存在歧見,使得那些重症病患在往生的前幾個月,不僅自己痛苦,家人也承受了極大的身心煎熬;有的家屬甚至奮戰近十年,與各種團體和政治勢力對抗,才促使美國政府制定相關法令,包括預立醫囑的合法性、將「全腦功能停止」納入死亡的定義(原本僅有心肺、呼吸功能停止)。作者透過採訪當事人所作的記錄,如實呈現臨終病人的心理變化與種種痛苦,同時對安寧療護、使用止痛藥與麻醉劑來控制疼痛的劑量如何才算適當、醫生的權威、病人與家屬自決的權利、安樂死等牽涉道德與法律層面的問題也多有探討。這才發現,原來這當中牽涉的問題是如此複雜:當我躺在病床上無法表達意見時,誰來決定我的生死?何時才應該放棄維持器官運作的治療?萬一還有一線生機呢?誰來執行(醫生也會擔心被告)?病人或家屬有權利不斷提高止痛藥的劑量嗎?安詳離世:茱迪絲的旅程書中的第一個案例,茱迪絲,因罹患乳癌而切除乳房,中間歷經數次化療和放射線治療,也試過各種非正統的醫療方法,如禪修冥想、印地安巫醫的召喚聖靈療法等(人到無可奈何時總會求助各種偏方),最終仍不幸離世。幸運的是,她最後選擇了與勇敢面對死亡,放棄進一步治療,而在家中與親人共同度過最後一段寧靜而美好的時光。就如茱迪絲的丈夫所說:「很顯然,我的妻子過世了,但對我們所有人來說,她死去的方式是那麼強而有力、獨特非凡。它讓我體悟到,死亡是一段旅程,而茱迪絲的旅程是美好的。......我唯一能說的是,對於我、賈斯汀和希瑟莉而言,茱迪絲的死讓我們深覺自己何其有幸,也何其不幸。」現代醫學訓練教些什麼?作者在第二章討論了一些醫病關係與醫學倫理的議題。例如她提到,原本死亡是人生的最終結果,但是在醫生的手中死亡,卻似乎成了醫生的失敗或過失。「因此之故,教學醫院訓練年輕醫師不顧成功機率的多寡,盡可能去嘗試每一種賭博。他們一次只把焦點放在一個器官上,專科醫師的狹窄見識使他們不去質疑,一個經過修復的心臟,能否與一個受損的肺臟一起正常運作;或者,對於一個纏綿病榻、承受極大痛楚的人,或肺臟、腎臟衰竭的人來說,修復修臟有什麼幫助?」(p....

使用共享的 AssemblyInfo 讓多個 .NET 專案的版本保持一致

16 years ago
如果你希望某個 solution 包含的全部專案都建置成同一個版本編號,可依下列步驟進行:編輯一個共用的組件資訊檔(Assembly Information File),命名為 SharedAssemblyInfo.cs(假設這是個 C# 專案)。此檔案的內容只包含版本資訊,例如:using System.Reflection;using System.Runtime.CompilerServices;using System.Runtime.InteropServices;[assembly: AssemblyVersion("1.8.3122.0")][assembly: AssemblyFileVersion("1.8.3122.0")]將此...

也來噗浪!

16 years ago
申請推特(Twitter)和噗浪(Plurk)帳號已有一段時間,但並沒有花太多時間去寫這類微型網誌。我比較喜歡 plurk 的展現方式,以後也許會比較常在我的 plurk上碎碎念吧!網誌右邊也加上了 plurk 區塊,可以隨時看到兩則最新的噗浪...

寄送郵件的封包被防火牆檔掉

16 years ago
記錄一個困擾很久(半年以上),最終由網管人員解決的問題: 應用程式利用 .NET 類別來發送郵件,大多時候沒有問題,可是偶爾使用者會反應沒收到信件。從應用程式的 log 發現 exception 訊息為:遠端伺服器已經中斷連線。 這種偶爾出現(約一兩個月才出現一次)的問題最讓人頭痛,因為開發人員比較不容易抓到問題的真正原因,一開始大都只能用猜的,例如:可能是網路瞬斷所造成。同時,沒有明確的證據,可能也不知道如何請網管人員協助查看是哪一段網路傳輸的部分可能有問題。 由於我對防火牆、路由器等網路設備相關知識不熟悉,郵件伺服器也不在我的管轄範圍,因此只能先以程式設計的角度嘗試找出問題發生的原因。經過反覆的測試,發現同一份 HTML 格式的郵件,如果將內文加入一些...

Visual Studio 2010 與 .NET Framework 4 Beta 1 開放下載了

16 years ago
Visual Studio 2010 與 .NET Framework 4 Beta 1 開放下載了。在下載安裝之前,可以先看看這個教學影片:http://tinyurl.com/vs2010be...

最糟糕的物件導向分析設計文件

16 years ago
最近 review 一份有如天書的「物件導向設計文件」,不禁想到《物件導向分析設計與應用》書中有這麼一段: 「最糟糕的物件導向分析設計文件,是將每一個類別各寫成一份文件,然後在每份文件裡面描述該類別的所有方法。這種作法會產生很多沒用的文件,沒人會看、也沒人會信賴這樣的文件,而且它也無法呈現跨越單一類別的重要架構議題,也就是類別與物件之間──尤其是元件之間──的合作情形。比較好的作法是,將這些高階結構用 UML 圖形表現,然後提示開發人員可以到哪裡找到某些重要類別的詳細說明。」 (摘自第七章,p.32...

Visual Studio 單元測試專案要怎麼增加額外的部署檔案

16 years ago
在開發應用程式時,經常有一些額外的組態檔必須在 build 專案時一併輸出到建置路徑下(即預設的 Bin\Debug 或 Bin\Release),這些檔案只要加入專案,並設定其 Copy to Output Directory 屬性為「Copy if newer」就行。但如果是單元測試專案,就還得做額外的設定。Visual Studio 2008 每次執行單元測試時都會新建一個目錄來存放執行結果,該目錄是建在 solution 目錄下的 TestResults 資料夾底下,目錄名稱以 [使用者名稱_電腦名稱 年月日 時分秒] 的格式命名。在這些目錄裡面,你可以看到一個名為 Out 的子目錄,而你會發現,那些建置專案時一併輸出的額外檔案並沒有丟到這裡。因此,你的單元測試程式碼如果需要載入這些額外的檔案,執行測試時便會失敗。解決方法:在...

《物件導向分析設計與應用》勘誤

16 years ago
《物件導向分析設計與應用》勘誤 p.58 倒數第三段 原文:我們對階層(hierachy)的定義如下: 更正:我們對階層(hierarchy)的定義如下: p.110 「實體包含」小節 原文將 aggregation 和 composition 的意思說反了: A less direct kind of aggregation is also possible, called composition, which is containment by reference....Hence, the lifetimes of these two objects are not so tightly coupled...

強制要求輸入送交說明的 Subversion Hook

16 years ago
剛用 C# 寫了一個 Subversion pre-commit hook,這個小工具能夠在開發人員執行 Subversion 送交命令時檢查是否有輸入送交說明(log message),如果沒輸入的話,就告訴 Subversion server 停止 commit 動作,並傳回錯誤訊息給用戶端,例如...

使用 VisualSVN 迅速建立 Subversion 伺服器

16 years ago
目前 Subversion 官網上面列了三種不同口味的 server 打包版本: CollabNet Tigris VisualSVN 以往我一直是用 CollabNet 打包的版本,這個版本(我用的是 v1.5)有個小缺點:若要使用 Windows 帳戶驗證,還得自己手動調整一些設定(參考這篇:Subversion 從 1.4.x 升級到 1.5 的注意事項)。 近日手癢,試了一下 VisualSVN v1.7。安裝方法非常簡單,幾乎都是按「下一步」就裝完了。在安裝過程中會讓你指定身分驗證機制要採用 Windows 帳戶驗證還是 VisualSVN 本身維護的帳戶,以及要用 HTTP 還是 HTTPS 協定。參考以下畫面: 不用三分鐘就裝完了,裝完之後不需要手動編輯組態檔,也不用其他額外設定,一台...

軟體設計方面的書籍

16 years ago
有位未具名的朋友在《物件導向分析設計與應用》書籍相關資訊的回應中問到:「還有什麼樣的書,類似這本,把關於IT設計的概念、方法、目的、應用等,都整理出來的好書。」在回覆時,寫著寫著覺得內容有點長了,於是拉出來自成一篇。我第一個想到的是四人幫的《Design Patterns》。雖然手邊還有其他討論軟體設計的書籍,但每次我有設計方面的疑問時,都會先從這本書下手。名副其實的經典!這本書有中文版:《物件導向設計模式》,葉秉哲翻譯。書中的範例是以 C++ 撰寫,也許有些人會覺得不夠親切吧。其他討論 design patterns 的書籍,我手邊有而且覺得不錯的:深入淺出設計模式(Head First Design Patterns),蔡學鏞...

客製化 BugTracker.NET

16 years ago
BugTracker.NET 除了安裝簡單,也有考慮到一些客製化的需求。例如,web.config 裡面有下列參數: <add key="AppTitle" value="BugTracker.NET"/><add key="SingularBugLabel" value="bug"/><add key="PluralBugLabel" value="bugs"/> AppTitle 是顯示於瀏覽器視窗標題的文字,SingularBugLabel 和 PluralBugLabel 則可以讓你用別的名稱取代 bug/bugs。如果覺得 bug 這個名詞太侷限,或太敏感,我們可以改用其他名稱,像這樣: <add...

Subversion 版本控制系統的基礎觀念

16 years ago
本文介紹 Subversion 版本控制系統的基礎觀念和術語,以及導入版本控制系統時應考慮的事項。 P.S. 這篇文章原本寫於 2004 年 6 月,之前將部落格搬到 blogger.com 時沒有整理進來,現在補上,順便重新編排、修剪...

ImeLib v0.1 測試報告 (二):Vista

16 years ago
延續上一篇測試報告,這次測試的作業平台是 Windows Vista 繁體中文版,已內建微軟新注音 10.0。結果出乎意料,ImeLib 的範例程式竟無法取得注音和拼音字根,只有日文平假名/片假名的功能可正常運作。用 RegEdit 搜尋關鍵字 MSIME,只能找到 MSIME.Japan 的註冊資訊。 這情形跟我在測試 Windows Server 2008 的情況一樣,但這次的解決方法並不是安裝 Office 2007 ...

ImeLib v0.1 測試報告,以及與 IMM32.dll 比較

16 years ago
這裡記錄一下自己測試 ImeLib v0.1 的結果,並簡單比較 IFELanguage 與 IMM32.dll...

ImeLib v0.1 發布於 CodePlex

16 years ago
剛剛把這兩天寫的一個取注音字根的元件放到 CodePlex 上面,取名為 ImeLib,以 LGPL 授權方式發布,附完整 C# 原始碼和一個範例程式。目前的版本是 0.1,還缺很多東西,但基本上我自己需要的部份(取得中文注音字根)已經大致完成且測試 OK。以下是範例程式的畫面...

A Better DataReader for C# 2.0

16 years ago
在使用 ADO.NET 的 DataReader 來讀取欄位資料時,常常要寫很多判斷欄位值是否為 DBNull 的程式碼,例如:SqlConnection cn = new SqlConnection("連線字串");SqlCommand cmd = new SqlCommand("SELECT * FROM ...", cn);SqlDataReader rdr = cmd.ExecuteReader();while (rdr.Read()){ if (rdr.IsDBNull(rdr.GetOrdinal("BIRTHDAY"))) { Response.Write(""); } else { Response.Write(Convert.ToDateTime(rdr["BIRTHDAY"],...

林以亮<翻譯的理論與實踐>

16 years ago
在《林以亮論翻譯》的第一篇<翻譯的理論與實踐>中,他把林語堂的翻譯三原則略加修正為: 一個翻譯者所應有的條件應該是:(一)對原作的把握;(二)對本國文字的操縱能力;(三)經驗加上豐富的想像力。 (p.10...

《物件導向分析設計與應用》未付印的譯序

16 years ago
《物件導向分析設計與應用》沒有譯序,而這篇,應可算是未付印的譯序吧。 在翻譯過程中就開始寫譯序,似乎成了我的習慣。每當有一些想法時就寫一點、改一點,等到整本書譯完,譯序也差不多完成了。但這次我並沒有把譯序交給出版社,一方面,本書作者已是大師級人物,讀者可能沒興趣再看一些錦上添花的推薦文,或翻譯甘苦談之類的碎碎念。另一方面,貼在部落格上比較方便修改,隨時反映新的想法。 一點提醒 雖然作者的名氣響亮,但每個人的需求和口味不同,建議您先看看試讀章節(包含目錄、序、和第一章),考慮一下這本書是不是「你的菜」。比如說,有些人可能會覺得這本書的參考文獻太「豐富」、學術味道太濃、UML 語法不夠完整詳盡、案例跟自己碰到的專案類型相差太遠(而無法直接依樣畫葫蘆)、譯筆太差、當枕頭太硬......等等。 其實光看厚度也知道,這本書不是兩三下就能消化完的,而且文字風格也絕對不會像...

WCF 入門練習

16 years ago
開發 WCF 應用程式基本上有三項工作: 撰寫 WCF 服務,這包括定義服務介面,以及撰寫實作服務介面的類別。 部署 WCF 服務。 撰寫 WCF 用戶端程式。...

Logging Application Block 概念圖

16 years ago
補一張 EL Logging Application Block 的簡易概念圖:MSDN 網站上也有一張比較詳細的類別圖可參考:Design of the Logging Application Blo...

Logging Application Block (三):撰寫自訂 Log 監聽器

16 years ago
儘管 EL4 的 Logging Application Block(以下簡稱 LAB)已經提供很多種 trace listeners,但有時候還是無法完全符合我們的需要,例如上一篇提到的,Email Trace Listener 並未支援 SMTP 伺服器身份驗證的功能。此時就得自己寫一個 log 監聽器(sink)了。...

Logging Application Block (二):透過 E-mail 寄送 log 訊息

16 years ago
本文將示範如何在 ASP.NET 網站中透過 Logging Application Block 記錄 log 訊息,包括: 使用 Filter 和 Severity 屬性的設定來篩選想要記錄的訊息。 將 ASP.NET 網站未處理的 exception 輸出至 log。 輸出的 log 訊息將透過 STMP 寄送至指定的 e-mail 信箱...

Logging Application Block (一):入門教學

16 years ago
摘要:本文說明 Enterprise Library 的 Logging Application Block 的基本用法,其中包含兩個 step-by-step 練習,分別示範將 log 訊息輸出至 Windows 事件檢視器以及可循環使用的純文字 log 檔案。...

BugTracker.NET 簡介

16 years ago
原本個人常用的 issue tracking system 是 BugNET,因為安裝簡單、免費、功能也不差,像是:切分專案與子系統、問題的嚴重度、問題分類、統計圖表(稍嫌陽春)、E-mail 通知(這個真的很必要)等都有。這兩天又試了另一款工具:BugTracker.NET。 同為 open source 軟體,我覺得二者的功能差不多,很難說哪一個一定比較好用。BugTracker.NET 還提供了自訂欄位,以及 E-mail 轉成 bug entry 的功能,此功能可以將 user 透過 e-mail 反映的問題轉入系統。 此外,BugTracker.NET 比較吸引我的部分,是它還能夠與 Subversion 整合。我還沒試這項功能,不過依官方文件的描述,它有提供...

《物件導向分析設計與應用 第三版》書籍相關資訊

16 years ago
書名:物件導向分析設計與應用 第三版   (OOAD with Applications 3ed)作者:Grady Booch et al譯者:蔡煥麟出版:碁峰,2009 年 2 月 18 日頁數:712(頁頁對譯) 相關資料:   - 未付印的譯序   - 試讀章節(.pdf 格式)   - 勘誤   - 第 1 章投影片(.ppt 格式) 與本書有關的資訊,包括文章、勘誤、檔案下載等,都會陸續在這裡更新。 如對本書有任何建議或指正,也歡迎在此留言 :) 相關文章 {iThome 書評—8} Object-Oriented Analysis and Design (針對原文書第二版) 【好書分享】Object-Oriented...

WCF 學習資源

16 years ago
台灣微軟的中文 WCF 教學短片:http://msdn.microsoft.com/zh-tw/cc963629.aspx Pluralsight.com 上面的 WCF 教學短片: Creating your first WCF service Configuring services with endpoints Hosting WCF services in IIS Self-hosting WCF services Creating your first WCF client Configuring service references Getting started with the WCF REST Starter...

Unicode 內碼在網頁上顯示的問題

16 years ago
2-25 Update:經網友 Laneser 提醒,其實這篇提到的問題用 HtmlDecode 就簡單解決掉啦! 裡面提到的函式大概就只剩下 FindUnicodeEntities 可能還有用處吧! 其他一長串的東西就不用浪費時間看啦!...

使用 Sandcastle Help File Builder 製作類別庫文件

16 years ago
簡介CodePlex 網站上有一個 Sandcastle 專案,這是用來製作類別庫文件的工具,如果你在撰寫 .NET 程式時,有輸入 XML 註解,這個工具可以幫你抓出來,並產生類似 MSDN help 那樣的說明文件(你的專案的 Build 選項中的 Output > XML documentation file 選項必須勾選)。可是 Sandcastle 是個命令列工具,它沒有 GUI,所以用起來不是那麼方便。這裡要介紹的就是搭配 Sandcastle 的一套 GUI 工具:Sandcastle Help File Builder。Sandcastle 能夠產生的說明文件格式包括:HtmlHelp 1.x(.CHM)HtmlHelp...

WCF 概念圖

16 years ago
Windows Communication Foundation (WCF) 概念圖 v1....

UISpy.exe 跑哪兒去了?

16 years ago
本來要找 Spy++,結果找到 Microsoft Windows SDK Blog 的一篇文章:Where is UISpy.exe?原來 2008 年 2 月發布的 Windows SDK for Windows Server 2008 and .NET Framework 3.5 裡面並沒有附這支工具程式(漏掉了?),微軟會在下一個版本把它放回去。如果現在要用的話,可以下載 Windows SDK for Vista Update,在安裝時,只勾選「.NET Framework Tools」就行了。安裝好之後,UISpy.exe 可以在 \Program Files\Microsoft SDKs\Windows\v6.0\Bin...

C# 4.0 動態型別應用例:動態載入 DLL 模組

16 years ago
小引 八年前(2001 年),我曾寫過一篇標題為「DLL 應用 - 設計可抽換的模組」的文章,當時的範例是以 Delphi 實作,之後經過一些修改,也成為自己開發 Windows 應用程式的主要框架。後來轉到 .NET 平台,又將此範例分別改寫成 Delphi.NET 和 C# 版本,並於 .NET Magazine 上發表類似的文章,標題是「設計動態載入的 Plug-in 應用程式」,這時候已經是 2005 年了。如今又過了四年,因為 C# 4.0 的 dynamic 型別,便想把這個範例拿出來改一下,看看有甚麼不一樣的地方。...

C# 4.0 新功能:動態繫結

16 years ago
官方網站 C# Future 上面有一份 2009 年 2 月份剛出爐的 C# 4.0 技術文件:New Features in C# 4.0。雖然 C# 4.0 規格尚未正式發布,但從這份文件已經可以看出一些端倪。例如文中提到,C# 4.0 的新功能主要可分成四大塊: ...

C# 筆記:從 Lambda 表示式到 LINQ

16 years ago
之前的<C# 筆記:重訪委派--從 C# 1.0 到 2.0 到 3.0>已經交代過 lambda expressions 的語法及其來龍去脈,這篇筆記會先複習一下 lambda 表示式,然後進入 LINQ...

C# 筆記:擴充方法

16 years ago
摘要:本文將簡單介紹 C# 3.0 的新語法:擴充方法(extension methods...

C# 筆記:重訪委派-從 C# 1.0 到 2.0 到 3.0

16 years ago
這篇文章主要是複習一下 C# 委派(delegate)的基本觀念,同時也示範從 C# 1.0、2.0、到 3.0 的委派寫法。 我們會看到更直覺的建立委派物件的語法、匿名方法、以及 Lambda 表示式...

C# 筆記:自動實作屬性與物件初始器

16 years ago
C# 3.0 增加了自動實作屬性(auto-implementation property)與物件初始器(object initializer)的語法。這兩種語法都提供了某種程度的方便性,Scott Guthrie 很早就寫了一篇文章介紹它們,這裡就不寫太多重複的東西了。貼個簡單的範例上來:...

C# 筆記:匿名型別

16 years ago
有時候,例如在某個函式裡面,我們會臨時需要一個簡單的類別來儲存一些簡單資料,但又不想為了這個簡單的需求另外定義一個類別,此時便可使用 C# 的匿名型別(anonymous type)。...

C# 筆記:使用 var 宣告隱含型別

16 years ago
C# 3.0 增加了 var 關鍵字,你可以用它來宣告隱含型別,例如: int i = 10; var j = 10;...

ASP.NET 網站呼叫 Web service 時出現 SocketException (0x274c)

16 years ago
這個問題不太好找,值得記錄一下。 問題描述 在 ASP.NET 2.0 網站中呼叫另一個網站的 Web service 時,「有些」用戶端瀏覽器會出現以下錯誤: 連線嘗試失敗,因為連線對象有一段時間並未正確回應,或是連線建立失敗,因為連線的主機無法回應。 111.xxx.xxx.xxx:80 [SocketException (0x274c): 連線嘗試失敗,因為連線對象有一段時間並未正確回應,或是連線建立失敗,因為連線的主機無法回應。 111.xxx.xxx.xxx:80] 問題難解的原因有兩個。首先,是這個問題只有在少數用戶端環境才會發生,開發團隊不易模擬出問題環境。其次,整個網站的運作架構有點複雜(load-balance、proxy、switch、firewall...blah...

《OOAD with Applications 3rd edition》的翻譯進度(2009/1/16 更新)

16 years ago
2009-02-24 更新:書籍已出版,詳情請看《物件導向分析設計與應用 第三版》書籍相關資訊《Object-Oriented Analysis and Design with Applications 3rd edition》是由物件導向三巨頭之一的 Grady Booch 以及其他作者所共同撰寫。中文版書名目前暫定為:《物件導向分析設計與應用 第三版》這本書將近 700 頁,雖然附錄和參考文獻就占了 139 頁,但是對我來說還是屬於重量級的挑戰(對讀者來說恐怕也是吧)。目前的翻譯進度:第 12 章 > 附錄 > 索引 > 校稿 > 等出版2009/1/16 更新:今天(2009/1/16)的版本應該是最後的修訂了,最後一次校稿結果是由出版社的編輯做最終修訂,我自己也沒有看到最後的排版結果。不過,碁峰出版社的編輯...

複雜的資料查詢:手工打造 SQL 指令 vs. 撰寫程式碼

16 years ago
對於複雜的資料查詢,我們是該用手工打造的 SQL 指令呢,還是該寫程式碼來處理?在甚麼情況下該選擇甚麼方法呢?我的看法是應該盡量以撰寫程式的方式來處理。在解釋原因之前,要先聲明一件事:我不是 SQL 高手,所以在一開始打算寫這篇文章時,我就在想我的結論可能過於偏頗。不過,若能拋磚引玉,得到其他前輩、高手的意見,因而修正自己的想法,倒也是好事一樁。其實在多年以前,我便覺得撰寫 SQL 對我來說是一件「寫時容易讀時難」的工作。我不是說兩三兩個資料表 join 這類簡單的 SQL 查詢,我說的是包含七八層、甚至更多層子查詢的 SQL。因此在我自己寫的程式裡面,我都盡量不寫太複雜的 SQL,而我的 SQL 功力自然也就一直停留在小學生的階段(好吧,也許是幼稚園階段)。兩種解法會想把這個議題寫下來,其中一個原因是不久前又碰到了複雜...

《I. M. Wright's "Hard Code"》第二章閱讀札記

16 years ago
延續上一篇,這裡寫一點第 2 章<流程改善,沒有魔法>的筆記。精實(Lean)製程定義了七種會破壞客戶價值流的浪費:過度生產(overproduction):開發太多不重要、甚至無用的功能。傳遞成本(transportation):專案建置(build)、版本分支(branch)、和團隊成員之間透過 e-mail 溝通等傳遞成本。多餘動作(motion):花在找資料、找解法、搞清楚要做甚麼等動作的時間太多。等待時間(waiting):系統功能的優先順序沒訂好、開發流程不當、品質不良等因素,導致各開發小組之間彼此等待。過度處理(overprocessing):把軟體功能設計得太複雜、對已經跑夠快的程式不斷做效能最佳化的調整、增加不必要的擴充等等。庫存過剩(inventory):矇著頭開發了一堆功能,後來發現有很多都白做了,在系統上線前就被拿掉,所以客戶也看不到這些功能--未實現的價值是種浪費。產品瑕疵(defects):太多...

舊文重發:Windows 表單與多執行緒

16 years ago
本文原刊載於 .NET Magazine 中文版 2005 年 12 月號,現在將此舊文重發,只是為了方便參考。摘要在撰寫多執行緒的 Windows 表單應用程式時,有一項必須特別注意的規則,就是不可以在工作執行緒(worker thread)當中修改表單或控制項的屬性與方法。本文說明這項規則的由來,以及違反此規則將造成的後果,同時示範錯誤的以及正確的程式撰寫方式。在撰寫多執行緒的 Windows 表單應用程式時,有一項必須特別注意的規則:只有在建立該表單(或控制項)的執行緒中,才能存取、修改表單(或控制項)的內容。如果讀者到MSDN Library查看Control.BeginInvoke方法的說明,也可以得到類似的訊息(雖然不是很明顯),其中有一段備註是這麼說的:「在任何執行緒裡面可以安全呼叫的函式只有四個:Invoke、BeginInvoke、EndInvoke、和...
Page 1 of 8612386Next
技術提供:Blogger.