[料理佳餚] C# 使用 Google APIs 來控制 GCE(Google Compute Engine)VM 的開啟跟關閉

  • 379
  • 0
  • GCP
  • 2019-03-31

如果我們明確地知道我們的服務尖峰及離峰時間,那麼我們可以在離峰時間關閉一些機器來節省一點成本,GCE 沒有提供排程開關機的設定,所以我們只好自己寫,Google APIs 的文件告訴我們可以選擇純 HTTP 方式,或是使用 Google APIs Client Library 來控制 VM 的開關機,底下我就用 Google APIs Client Library for .NET 來撰寫控制 VM 開關機的程式。

...繼續閱讀 »

[桌邊服務] 將 ASP.NET MVC 的 View 依使用者角色來拆分可以減少邏輯分支

各位朋友應該都有碰過一種需求,就是有一個頁面,這個頁面服務的是廣大的 User,在這群廣大的 User 中有分好幾群,有的群要顯示這個不能顯示那個、有的群要顯示那個不能顯示這個、...,這是很典型的需求,你我的公司裡面應該都存在著這樣的頁面,而且裡面的 if...else... 錯綜複雜,我們冷靜想想,其實這種需求的設計是可以更簡單的。

...繼續閱讀 »

[小菜一碟] 將 2 的 n 次方加總結果再拆解回來

  • 297
  • 0
  • C#
  • 2019-03-18

在狀態表達的設計手法中,有一種是以 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 也能做分散式交易。

  • 785
  • 0
  • C#
  • 2019-02-24

無論是業務需求或是 IT 需求的關係,依據不同需要將資料庫分放在不同伺服器的情形很多見,要進行跨資料庫伺服器交易我們可以啟用 MSDTC 服務來達成,我就在想能不能不去動伺服器的設定,在應用程式端來實現分散式交易?

...繼續閱讀 »

[料理佳餚] C# 三種實作分散鎖定的方式

分散鎖定的使用場景通常是我們希望某個資源,同一個時間存取它的程序不要超過一個,在同一個應用程式中我們有 lock 陳述式Monitor.EnterMonitor.TryEnter 可以用來做鎖定,當有一個以上的應用程式,甚至是跨不同機器的應用程式要做鎖定,這個會需要用到額外的資源,我們儘量利用我們手邊有的資源來做這件事。

...繼續閱讀 »

[小菜一碟] 個人覺得 ReSharper Template 在設定上比 Visual Studio Code Snippet 好上手

程式寫久了總有一些常用的程式碼片段,我們可以透過 Visual Studio Code Snippet 來幫助我們把這些程式碼片段在需要的時候,快速插入,不過其設定步驟還挺繁瑣的,即使 Snippet Designer 已經在這個部分幫了很大的忙,但個人還是覺得 ReSharper 略勝一籌。

...繼續閱讀 »

[小菜一碟] 檔案目前位置取得方法的不同,而不是不同的檔案目前位置取得方法。

  • 357
  • 0
  • C#
  • 2019-02-04

這篇文章中網友的留言吸引了我的注意,.NET Framework 提供了至少三種取得檔案目前位置的方法:

  • AppDomain.CurrentDomain.BaseDirectory
  • System.Reflection.Assembly.GetExecutingAssembly().Location
  • System.IO.Directory.GetCurrentDirectory()

我還真不知道它們具體上的差異,趁這個機會做了一下實驗順便記錄下來,也提供給各位朋友參考。

...繼續閱讀 »