[料理佳餚] C# 用 Google Analytics Reporting API 來抓取特定 URL 的 PageView
Google Analytics(簡稱 GA)是 Google 推出的流量分析服務,既免費又強大,做商業網站的我們多少要會一點,通常我們查看流量分析的數據大都是到 GA 的網站,如果我們反過來把 GA 當成是資料來源,那麼我們怎麼從 GA 來取得流量的數據?
[小菜一碟] 將 2 的 n 次方加總結果再拆解回來
在狀態表達的設計手法中,有一種是以 2 的 n 次方來設計,例如:Status1 = 1、Status2 = 2、Status3 = 4、...依此類推,當我們得知某物件的 Status = 5,我們就知道它包含了 Status1 以及 Status3(因為 5 = 1 + 4),.NET Framework 中有一個列舉型別 System.Reflection.BindingFlags 就是這樣設計的,那重點來了,我們要怎麼知道任意一個正整數可以由哪些 2 的次方加總結果呢?
[料理佳餚] C# 實作二階段提交(Two-phase Commit),即使 SQL Server 沒有啟用 MSDTC 也能做分散式交易。
無論是業務需求或是 IT 需求的關係,依據不同需要將資料庫分放在不同伺服器的情形很多見,要進行跨資料庫伺服器交易我們可以啟用 MSDTC 服務來達成,我就在想能不能不去動伺服器的設定,在應用程式端來實現分散式交易?
[料理佳餚] C# 三種實作跨應用程式鎖定的方式
「鎖定」的使用場景通常是我們希望某個資源,同一個時間只有一個程序來存取它,在同一個應用程式中我們有 lock 陳述式、Monitor.Enter、Monitor.TryEnter 可以用來做鎖定,當有一個以上的應用程式,甚至是跨不同機器的應用程式要做鎖定時,會需要用到額外的資源,我們儘量利用我們手邊有的資源來做這件事。
[小菜一碟] 檔案目前位置取得方法的不同,而不是不同的檔案目前位置取得方法。
在這篇文章中網友的留言吸引了我的注意,.NET Framework 提供了至少三種取得檔案目前位置的方法:
AppDomain.CurrentDomain.BaseDirectory
System.Reflection.Assembly.GetExecutingAssembly().Location
System.IO.Directory.GetCurrentDirectory()
我還真不知道它們具體上的差異,趁這個機會做了一下實驗順便記錄下來,也提供給各位朋友參考。
[創意料理] 生平第一次使用 >>(右移)、<<(左移)運算子就獻給 Base32 了
Base64 各位朋友應該都有聽過,也使用過,但是 Base32 或許就比較少了,而且 .NET Framework 也沒有內建 Base32 的 API,會碰到 Base32 是因為有一個需要編碼結果全小寫的需求,顯然 Base64 並不適合,.NET Framework 又沒有 Base32 可以用,那就只好自己來寫一個了。
[食譜好菜] Json.NET 處理多型的反序列化
[料理佳餚] 用 ValueTuple 解放雞肋類別
我們呼叫一個函式原則上以回傳一個結果為優,偶爾像 int.TryParse 使用 out 修飾詞,或是使用 Tuple 類別 來多吐一些結果,不過這些都不如將多個結果封裝成一個類別還來的合適,但是如果私有函式有回傳多個結果的需求,為此定義一個類別就顯得有些雞肋,除了要取一個適當的名字之外,還要定義它的存取限制,把它弄成 public 也不是,弄成 private 放在當前類別裡面又覺得「嘖...」。
[食譜好菜] 檔案及資料夾的路徑不用自己兜,讓 System.IO.Path 靜態類別來做會方便許多。
前幾天處理了一個檔案沒更新的問題,請看下圖:
這是一個 UNC 路徑,可以看到它路徑中間有兩個 \
,然後它就爆了。
會造成這樣的原因是因為在原始程式碼中,在兜路徑的時候沒有處理尾綴的 \
的數量,而使得尾綴的 \
多了或少了,路徑就失效了。