.Net: 使用 FeatureManagement 套件來實作功能切換(Feature Toggle)吧

Image

在做上一篇 IOptions 的筆記時,剛好看到 FeatureManagement 這香東西。
馬上來收錄一篇。順便也簡單整理一下 Feature Flag (≒Feature Toggle) 的介紹。

認識一下 Feature Flag

本部落格秉持著「簡單、友善、我好菜」的精神,按照慣例先簡單介紹一下
已經知道的朋友就可以跳過這個小節,直接前往 #環境準備 囉。

假設我們原本有 Old 邏輯:

Old();

天庭傳來諭令,要我們改成 New 邏輯。這簡單,我們就把 Old 砍掉,換成 New。非常自然,改完就佈版

New();

隔天,天庭又傳來諭令,New 需要調整一下,先不要了
現在我們又需要把 New 邏輯砍掉,讓 Old 邏輯回來。
簡單,但看來我們得再上一版

Old();
// New();

再隔天,大家可能猜到天庭又要幹嘛了,總之又上了一版

// Old();
New();

如此往復三萬八千次,工程師終於受不了了:「俺老孫每天在這切換 Old 跟 New,改完還得佈版,每天搞這些就飽了,我滴媽呀,不幹了」

就在老孫關燈走人的那一瞬間,突然靈光一現:等等,俺加個開關還不行嗎?

……

閱讀全文



.Net: 使用 IOptions 取得 appsettings.json 的設定值吧

Image

因為手邊的 .Net Core API 專案越來越多,蠻常會需要讀 appsetting.json 的 Config,每次都要重找文章有點麻煩,這邊就來筆記一篇。

認識 Appsettings.json

首先簡單介紹一下 appsettings.json 是在幹嘛的:

我們開發的時候,常常會需要先設定好一些服務參數、組態設定之類的設定值,再用這些設定值用來控制我們程式的某些行為。例如:

  • 「某功能的上限值是 10
  • 「某項開關在測試環境是 false
  • 「某服務信件的發送者要用 noreply9527

另外常見的還有連線字串、寫 Log 時的 logging level 等等。

這些設定值會和程式碼拆開,放在設定檔集中管理,再讓程式碼從設定檔讀取相關的設定值來用就好,藉此來把設定值的管理和使用做個關注點分離。

有了設定檔,要調整修改也比較方便:要增加或是修改設定值,都只要先往設定檔衝就行。並且因為兩邊拆開了,我們也就可以簡單地替換這些設定值來應對不同狀況(例如正式環境和測試環境套用兩組不同的設定檔,或是在自己電腦測試的時候快速改個值之類的),彈性可說是 UPUP!

更重要的是,這樣我們就不需要把一大堆東西寫死在程式碼的各個地方,也就不會要改個值還要先搜尋整個專案再一個一個挖出來改了。我按 Shift Ctrl F 已經按到哭

把設定值抽出去丟到設定檔之後,我們就得到了:集中管理設定值、方便修改和替換、減少程式碼中又重複又寫死的臭東西等等好處。

在 .Net Core 的世界裡,這個設定檔就是 appsettings.json
前面提到的像是日誌等級、功能旗標之類的這些設定值,就會放在 appsettings.json 裡面。

而當我們想要從 appsettings.json 把這些設定值給讀出來的時候,
就可以使用我們的 IOptions 啦!

使用 IOptions 來註冊 & 注入

提醒:這篇的示範會用到一些些 .Net 依賴注入(DI)相關的操作。沒接觸過的朋友可以考慮先閱讀菜雞新訓記:依賴注入

假設我們有個專案,叫做大漢防禦管理系統。專案內的 appsettings.json 有以下內容:

{
  "StrongholdInfo": {
    "Index": 49,
    "Name": "劍閣",
    "Enabled": true, 
    "General": [
      "姜維",
      "廖化",
      "張翼",
      "董厥"
    ]
  }
}

我們正好在開發一個新功能,需要抓到這段設定值。現在就來示範一下:

……

閱讀全文



《九日》白金心得

Image Image

終於過了!九日沒有慣例的「完成所有成就」的盃,但是放結局獎盃又怕結局名字雷到路過的朋友,就截普通模式通關的盃吧。

按照慣例,留一篇筆記來聊聊心得和體驗,以下有雷。

補充:這篇是我個人遊玩《九日》的心得。
如果你是在找《九日》的白金獎盃攻略,推薦你這篇:【九日】才不是什麼全成就指南呢,哼!

……

閱讀全文



《Fate/Samurai Remnant》白金心得

Image

要開玩 DLC 的時候跳了盃,按照慣例來發一下白金心得文~

補充:這篇是我個人遊玩《Fate/Samurai Remnant》的心得。
如果你是在找《Fate/Samurai Remnant》的白金獎盃攻略,推薦你這幾篇

以下簡單列一下個人覺得的優點(當然有雷)

伊織和 Saber 這對主從很有特色。尤其是主角伊織的成長很有感,也有反應在遊戲性上,後期拿到空之架式的時候割草很爽快。在師徒決戰、伊織使出祕劍的時候,身為 Fate 玩家和動畫宅真的看得非常開心。

除此之外,二週目增加劇情、開始能漸漸窺見到主角內心異常的部份很棒。劍鬼意外地很有魅力,最後的對戰和收尾方式也相當舒服,應該是歷代精神狀況最令人「蛤?」的主角了吧。真不錯。

Image

……

閱讀全文



我買彩券是為了做一個善良的人

我買彩券是為了做一個善良的人
只要還沒開獎,我就有可能會成為億萬富翁

有緊急需求?沒問題
東西又改壞了?沒關係
客戶跑來罵我們全家?當然可以

一個買了彩劵的人,生活充滿希望,行事滿懷善良,心胸寬大、舉止謙讓

畢竟我說不定晚上就發財了,沒必要跟你們計較這些小事。對吧

……

閱讀全文



《臥龍:蒼天殞落》白金心得

Image

在東漢逛街快一個月,總算白金啦!

這次臥龍玩起來還算挺爽快的,從第一隻 Boss 張梁老師就好好教導玩家的基礎操作。而且意外地能從黃巾之亂一路做到官渡之戰,前期戰役打好打滿,算是蠻有誠意的。

白金之後就開始期待後續的三個 DLC 跟二代了。畢竟三國題材這麼多,實在不怕沒有後作嘛,但 DLC 還要等到六月,這篇就來稍微紀錄一下心得吧。

戰鬥=化解

這次戰鬥主打的是「化解」系統,基本上就是在敵人攻擊的瞬間進行化解,很有中國武術的味兒,也讓我想起隻狼鼓勵玩家要提起勇氣上前拚刀的快感。

初次接觸的時候會覺得這系統做得很不錯,同時帶來了風險和回報:化解失敗就會被捅一刀,而化解成功就可以提升氣勢(可以當成能量條,做任何動作都會消耗),並且得到進攻機會。

除此之外,化解殺招的畫面也很帥,敵人釋放絕招然後主角行雲流水擋掉回擊,很有觀賞樂趣。

因此整個遊戲的主軸就是化解敵人的攻擊和殺招,你來我往地進攻,整個戰鬥就是化解的節奏,打起來挺爽快的。

到這裡我都還是覺得化解真香。但到中後期的時候就開始發現:整個戰鬥過程,就只有化解。

……

閱讀全文



使用 Midjourney AI 繪圖 & Canva 產生 Banner 初體驗

Image

我們在前一篇嘗試自行產生簡單的文字 Banner,我也用了好一陣子(畢竟三年前的新訓文章還是沒整理完嘛)。

直到前陣子逛臉書的時候,看到有人說「我都改用 AI 繪圖工具來產生部落格的配圖了,還沒有版權問題」當下驚為天人:對呀!這不是很不錯嗎!

如此如此,這般這般。立馬開始爬文來嘗試神秘的 AI 繪圖囉!

初嘗試 Midjourney

在網路搜了一下,發現有大神已經整理 Midjourney 入坑詳細步驟,特此感謝:

這邊就稍微紀錄一下,總之先衝到 Midjourney,然後直接註他個冊、登他個入:

Image

……

閱讀全文



使用 .Net 的 System.Drawing 產生簡單的文字 Banner 初體驗

Image

原本我都是用產生 FB 封面的「康熙字典體產生器」來做簡單的文字 Banner,就拿來當作文章的封面照

用了好一陣子也沒啥問題。結果某天文章寫好,吃著火鍋唱著歌,產生器打開一看,服務竟然就沒了!

當下是一個震驚啊,一氣之下決定直接打開 Linqpad 寫一個。

註:現在搜尋康熙字典體產生器,還查得到介面截圖,還真的蠻簡單方便的 Q_Q

以前面的菜雞與物件導向系列 Banner 為例,我們大概需要:

  • 產生一張圖
  • 在圖上面放主標題和副標題
  • 關鍵字可以上色

Image

稍微搜尋一下發現 .Net 已經有 System.Drawing 這個工具可以幫我們完成這些簡單的圖片任務,事不宜遲馬上就來嘗試!

……

閱讀全文



Polyglot Notebooks -- 在 VSCode 簡單迅速地撰寫 C# 腳本吧

Image

像我這樣的菜鳥工程師,在 Coding 的時候時常會需要簡單試一些想法。像是「我這邊下了這串 Linq 出來的資料,到底是不是我想要的內容啊 = =?」

或是在進行開發任務時:「這個步驟能不能這樣做啊?先拆個簡單的 Method 試試看好了」之類的

以往遇到這種時候,我都會打開香香的 Linqpad 直接無情開寫,快速地作個小小的概念驗證。

畢竟 Linqpad 可以迅速地開始撰寫簡單的 C# 腳本,並且有良好的語法提示、Nuget 支援和方便的資料庫連線,省去我還要開一個 Console 專案自己弄這些東西,更可以存著之後備查,所以一直以來我都愛不釋手。

但在因緣際會下(其實就是閒逛論壇的時候),發現了微軟把拔出的 Polyglot Notebooks 這款 VSCode 擴充套件。當下驚為天人!Linqpad 在我心中的地位就這麼動搖了

Polyglot Notebooks 可以讓我們直接在 VSCode 上面撰寫簡單的 C#、F#、JavaScirpt 等腳本、迅速驗證想法。甚至可以對程式碼分段、加入 Markdown 文檔,讓我們能更有邏輯、有步驟地撰寫我們的腳本、處理我們的資料。

它的特色是這麼對我的胃口,看來我以後鐵定是會用到的。現在就來簡單記錄 Polyglot Notebooks 的使用方式吧!

……

閱讀全文



《仁王》&《仁王2》白金心得

Image Image

終於趁著這次連假白金啦囧

在法環的白金文有提到過,我真的很懶得刷一些要農、重複蒐集東西的成就。偏偏仁王和仁王2後期都在做這兩件事情,結果兩款的主線過完之後就進入無限拖延狀態

尤其像仁王2的主線通關成就早在 2021/9/18 就拿到了,BOSS也都挑戰完一輪,但想到後面有一堆跟仁王1一樣要蒐集的東西,就一路拖到現在 2023/1/24 才農出白金

Image

仁王系列給我的感覺很特別,它在前期的時候是個完完全全的魂系遊戲:容易死亡、要熟悉BOSS招式、要思考打法、重複挑戰和修正等等

但差不多一周目過完之後,中後期就會開始往暗黑那種刷裝、配裝的方向走。所以最佳方針就是一路打上高難度、農出可以搭配的裝、然後大功告成輾壓眾生。到這個階段已經沒有什麼魂系遊戲的味道了,樂趣變成是嘗試各種裝備的搭配和打法,完全變成另一款遊戲

……

閱讀全文



系列文

轉貼文

最近文章

分類

友鏈

標籤

統計資訊

工商服務

    DDDTaiwan