目前分類:.Net 技術 (135)

瀏覽方式: 標題列表 簡短摘要

有些網站會導入 Queue 的機制,原因在於不想讓使用者長時間等待。例如使用者註冊網站會員,通常在註冊後會寄信到使用者所填入的信箱,但是在註冊時並不會馬上寄信,而是會留下一筆記錄然後就通知使用者已完成註冊的動作。這樣做的原因在於,如果寄信的機制出了問題或是寄信的時間過長,並不會影響到使用者的註冊及使用。而留下的這筆記錄,之後都會有一個 batch job 去處理,這樣的處理過程,讓註冊及寄信這兩個服務不會產生過大的相依性。

卑微研究生 發表在 痞客邦 留言(0) 人氣()

Markdown 算是小有名氣的標記語言,可以用來編輯文件,之前工作時所撰寫的文件,也都是用 Markdown 維護。只是文件都是放在網站上,要用電腦的軟體去編輯總是有些不便,如果有個線上編輯介面,就會方便許多。因此我尋找可用的元件來達到目的,後來找到了 MarkdownDeep。

http://www.toptensoftware.com/markdowndeep/api

卑微研究生 發表在 痞客邦 留言(0) 人氣()

前幾篇文章討論到 Expression Evaluation,無奈這些都不太合用,後來不小心看到了 SPRING.net,才發現原來有這麼強大的 Framework。

卑微研究生 發表在 痞客邦 留言(0) 人氣()

之前曾介紹過 NCalc,但它有個缺點,就是只支援內建型別,沒有支援自訂的類別,所以我又找了另一個函式庫:C# Expression Evaluator

卑微研究生 發表在 痞客邦 留言(0) 人氣()

商業需求是不斷在變化的,在面對不斷改變的大量需求,如果把一些計算公式(例如獎金計算公式)hard code在原始碼裡,光應付出 build 可能就累死人了,如果能把計算公式寫在設定檔裡,那問題可說是解決了一大半。

卑微研究生 發表在 痞客邦 留言(0) 人氣()

最近寫程式時有個需求,就是有些程式邏輯跟變數會寫在設定檔裡,對於變數的設定一直都有個困擾,如果變數型態是字串還好辦,但假如想放整數或是布林型態,如何從字串轉為真正對應的型態並沒有現成的函式可用,幸好 Reflection 技術可以解決這個問題。

卑微研究生 發表在 痞客邦 留言(0) 人氣()

自從知道 PostSharp 這套有趣的 AOP 元件後,就一直對其中的原理感到好奇。根據官方部落格,其中所使用的一項技術,就是 IL Injection,所以我嚐試尋找可行的作法。

卑微研究生 發表在 痞客邦 留言(0) 人氣()

在把物件轉為 json 時想到的一個問題,如果可以依據特定條件把類別的某些 property 或 field 刪掉,這樣產生 json 字串時就不會包含一些無用的屬性,於是就順手研究如何動態的產生類別。

卑微研究生 發表在 痞客邦 留言(0) 人氣()

對於一個開放於全球的網站或服務,在時間上的顯示是一個問題,因為各個國家都會有所謂的時差,好在 .Net Framework 提供 TimeZoneInfo 類別來解決這個問題。

卑微研究生 發表在 痞客邦 留言(0) 人氣()

C# 5.0 提供了 Async 關鍵字,用來做非同步的功能。當然在 F# 也會有同樣的功能,而且個人認為寫法比 C# 稍微簡潔一些。

卑微研究生 發表在 痞客邦 留言(0) 人氣()

寫程式時,一定會遇到要使用 switch case 語法的時候,但這語法的缺點在於一次就只能設定一個變數,如果要一次使用多個變數判斷,就只能使用 else if 這個語法。但在 F#,則可以使用 Pattern Match 來解決。

卑微研究生 發表在 痞客邦 留言(0) 人氣()

F# 號稱動態語言,但跟其它語言整合的話,似乎也只能回到先編譯成 dll 元件的老路。如果想在系統中,隨時可以修改 F# 原始碼並且直接執行,動態編譯後再由 C# 程式呼叫可能是唯一的方法。

卑微研究生 發表在 痞客邦 留言(0) 人氣()

如果想知道程式碼裡引用了哪些類別、哪些函式,用一般的 reflection 方法似乎不管用。後來在網路上找到了這篇:

http://stackoverflow.com/questions/5490025/c-sharp-reflection-and-find-all-references

這篇文章提供了一個方法,後來就把MethodBaseRocks.cs這支程式抓回來用,效果不錯。

卑微研究生 發表在 痞客邦 留言(0) 人氣()

微軟推出 .net 平台也有十年的時間了,一直以來都是主推 C# 及 VB.NET。這幾年也推出了直譯式語言 F# (實際上也可當作是編譯式的語言),目前已經到了 3.0 版。雖然 C# 非常強大,但某些情況 F# 也是一個不錯的選擇,本篇文章會介紹 F# 的基本語法,當作是快速入門。

卑微研究生 發表在 痞客邦 留言(0) 人氣()

在寫網路程式時,常常會有從一個模板裡取代特定值並且輸出 html 或 json 的需求。如果是輸出 json,通常會從物件直接 json,但 html 比較沒辦法做到。以這兩種格式而言,其實要做的事情是一樣的。

卑微研究生 發表在 痞客邦 留言(0) 人氣()

對於一些跟錢有關的系統,在數字的計算上要特別小心。在程式設計上,一個變數能存的數目是有範圍的,不可能是無限大,所以會有所謂溢位的問題。

卑微研究生 發表在 痞客邦 留言(0) 人氣()

嗯…在下的中文程度淺薄,所以這標題下得很難懂。舉個例子來說,當程式發生 Exception 時,會用 catch block 來捕捉,通常程式設計師會順便把該類別及方法名稱一起記錄。但因為是把名稱寫死在字串變數裡,常常會有一些困擾,例如下列程式碼:

            try
            {
                InvokeSomeObject();
            }
            catch (Exception ex)
            {
                Log(ex, "class name");
            }

下次再有類似的需求,程式設計師肯定會用複製貼上的方法,照過去的經驗,通常 class name 都會忘了改,為了改善這種情況,可以用另外的方式來記錄。

卑微研究生 發表在 痞客邦 留言(0) 人氣()

利用 Lucene.Net 建完索引後,如果想檢視程式到底如何建立索引,可以利用現成 API 來檢查索引裡的 Term。所謂的 Term,用一個例子來說明就是,假設有一個句子”This is a book.”,用 Lucene.Net 建完索引後,正常情況下會將這個句子拆成”This”、”is”、”a”、”book”然後再存進檔案裡。當然,如果有過濾 stop word,那就只有”book”會被記錄。

卑微研究生 發表在 痞客邦 留言(0) 人氣()

在撰寫演算法相關程式時,通常會需要記錄程式的執行時間,以便評估演算法的優劣,這時候可以使用 .NET 內建的類別:Stopwatch

卑微研究生 發表在 痞客邦 留言(0) 人氣()

在 .Net 中, value type與 reference type 有一個很大的差別,就是 value type 並沒有所謂的 null 值,但 reference type 則有。但是在某些情況裡,會需要 value type 的變數也能指定 null 值。一個最經典的例子就是資料庫,資料庫的欄位是可以允許 null 的情況發生,例如電子商務網站的會員資料表裡,有一欄位是會員的年收入,這一欄假設允許會員不填寫,那會員不填寫時該存什麼?存零的話,那在做會員平均收入時就會有誤差,這個時候系統應該存入 null 值。但之後撈取資料時就會有一個問題,假設年收入的資料型態是 integer ,遇到 null 值時就沒辦法表示,如同前面所言,填零的話資料就會失真。

卑微研究生 發表在 痞客邦 留言(0) 人氣()