[小菜一碟] 談談物件導向設計原則中 DIP(依賴反轉原則)中的 Dependency(依賴)

DIP - Dependency Inversion Principle(依賴反轉原則)說:

  1. 高層次的模組不應該依賴於低層次的模組,兩者都應該依賴於抽象介面。
  2. 抽象介面不應該依賴於具體實現。而具體實現則應該依賴於抽象介面。

如果是初次接觸到這段說明的朋友可能會有一個感覺,就是裡面每個字都看得懂,但是它在講什麼?要了解 DIP 要先清楚它這邊提到的依賴是什麼?我就以我個人的理解來分享我的心得。

...繼續閱讀 »

[小菜一碟] AngularJS 中 Directive 如何傳遞參數給 Isolate Scope 觸發函式(&)?

用 AngularJS 開發程式很少不用額外撰寫 Directive,如果我們在 Directive 裡面使用 Isolate Scope 並且從 Controller 指定了一個 function 為觸發函式(&),好死不死這個 function 是需要丟參數給它的,按照一般正常的丟法是不會 work 的,想要丟參數給觸發函式需要一點迂迴的做法。

...繼續閱讀 »

[食譜好菜] 使用 StackExchange.Redis 對 Redis 執行批次寫入指令

Redis 的效能有體驗過的朋友應該都是有目共睹的,最近遇到一個一次要寫入 16 萬筆資料的場景,測試環境的 VM 規格都是最基本的,在測試環境測試一筆一筆寫入要大概將近 20 分鐘,而且還會 Timeout,心想即使規格不高 16 萬筆應該也不至於這麼慢吧,爬了一下文大概找到了兩種解法。

...繼續閱讀 »

[料理佳餚] Xamarin.Forms 中 Button IsEnable 與 Command 屬性的綁定糾葛

Button 要 Enable 或 Disable 除了直接操控 Button 本身的 IsEnabled 屬性之外,也可以藉由綁定的方式綁定一個變數,當變數值異動的時候 Button 的啟用狀態也跟著改變,有用 MVVM 模式在開發 Xamarin App 的朋友相信應該也會習慣先考慮用綁定的方式來操控 UI,但如果 Button 同時有為 IsEnabled 及 Command 提供綁定值,會有一些問題出現。

...繼續閱讀 »

[食譜好菜] Xamarin.Forms 內建的 DI Library - DependencyService

Xamarin.Forms 已經有一個內建的 DI Library 叫 DependencyService,它提供了簡單註冊及解析的方法,如果我們的使用情境並不複雜,DependencyService 就已經能夠滿足我們絕大部分的需求,有需要的時候再考慮去引用像 Unity 或 Autofac 這種能夠提供更彈性的註冊及解析方法的 Library,底下我就用取得 Android 及 iOS 設備平台識別碼的範例來簡單說明 DependencyService 如何使用。

...繼續閱讀 »

[廚餘回收] Redis 裝在 GCE Windows Server 上須注意一下虛擬記憶體的設定

某個週末公司某個裝在 Windows Server 上的 Redis 服務掛點,從 Server Log 看到下面這段錯誤:

# Write error saving DB on disk: Invalid argument
# rdbSave failed in qfork: Invalid argument
# fork operation complete
# Background saving error

是在 Redis 做 Snapshot 的時候沒有成功,進而影響到服務的運作,Snapshot 會失敗大概會有幾個原因:

  1. 記憶體不足
  2. 磁碟空間不足
  3. 權限不足

現在我們就來看看是哪一個原因?

...繼續閱讀 »