2020年11月28日 星期六

mopcon 2020 筆記 - 測試x重構x新技術

 

  • 測試要測什麼?
    • 測 output (輸出的值)
    • 測物件狀態
    • 測與外部的行為動作
    • 確認環境封閉
  • 測試的順序
    1. 正常路徑
    2. 錯誤路徑
    3. 資料排列 (個人覺得不是必要)
    4. 邊界條件
    5. 資料驅動
    6. 測試缺陷 (哪裡出問題就那裡加測試)
  • 有測試的好處
    • 容易 code review: 別人容易理解你的情境
    • 容易表達用法、功能、邊界值
    • 不容易因為修改而壞掉
  • 想重構的理由
    • 看不順眼,最常發生的原因
    • 要使用新框架
    • Legacy code
    • 維護不下去了
    • 為了寫測試
  • Adapter pattern 是一種可以在重構時使用的 design patten,但存在下面的問題
    • 重複的 code 太多
    • 維護成本過高 (要改個需求,很多 class 都會動到?)
  • 重構時須注意
    • 了解歷史背景並具包容心
    • 重新定義 coding style
    • 為了五年後想 (維護上存在怎樣的問題)
  • 如何降低風險
    • 寫測試
    • pair programing
    • 讓部分使用者幫忙測試 ( EX: 只對 10% user 開放)

2020年11月15日 星期日

K8S 佈署策略

 這篇文章(應用部署的六種策略) 介紹了很多種在 Kubernetes 上的部屬策略,並有附上 git 的開源程式碼可以參考。當中最常被使用的部屬策略應該是滾動部署藍綠部署

滾動部屬: 緩慢地將舊版本的 pod 替換成新版本的 pod。好處是不需要佔用太多資源,但在release 過程中可能會有版本不依的情況。

藍綠部屬: 舊版本有多少 pod,新版本就建出多少,等新版本環境完全建置好,一次將使用者切過去。好處是不會有版本問題,壞處就是部屬時需消耗較多資源,花費較昂貴。

2020年10月5日 星期一

.Net standard test internal methods

 如果想在 .Net standard 測試 internal 方法有兩種做法

  1. 在要被測試的類別上加 tag
      [assembly:InternalsVisibleTo("Unit test 的專案名")]
      namespace XUnitAndFluentAssertionDemo
      {
       internal class Hello {   
       }
      }
      

    每個有 internal 方法要測試的類別,都要加這個 tag
  2. 在 project file 加 attribute

  3. 只需做一次整個專案都會有這個設定



    參考連結
    https://stackoverflow.com/questions/42235401/unit-testing-internal-methods-in-vs2017-net-standard-library
    https://anthonygiretti.com/2018/06/27/how-to-unit-test-internal-classes-in-net-core-applications/

2020年8月15日 星期六

Reverse Proxy 製作釣魚網站

最近看了一個關於利用 reverse proxy 製作釣魚網站的文章

下面是我自己的重點整理        
   1.  看完後的結論就是只要使用 reverse proxy,就不可能完全杜絕別人製作釣魚網站。唯一能做的是提高防護機制,增加模仿的複雜度,讓別人因為成本過高而不想做這件事

   2. 在系列文章的 Day 28 有整理出開發者的防範方法
        2.1 程式在前端檢查網址,錯誤跳訊息通知
        2.2 讓 cookie 只有在 Https 的情況下才能存取
            方法: cookie 用 __Host- 或是 __Secure- 開頭,就一定要有 secure 這個屬性,而有這個屬性的cookie 只有在 https 才能被存取。詳細可看系列文章的此篇
            缺點: 在 local 開發須使用 https,增加開發成本。local 安裝 https 可看這個
        2.3 後端檢查 http header, body
        2.4 後端檢查來源 IP,若有大量 request 來自相同的 IP,這 IP 可能就有問題

   3. 在系列文章的 Day 29 則是說使用者如何小心不要去到釣魚網站
        3.1 注意網站是否有用 https,合法的網站大部分都會使用
        3.2 時常更新瀏覽器,因新版瀏覽器可能會修掉一些釣魚網站使用的漏洞
        3.3 不使用來路不明的 DNS Server,因這些 server 可能會把你導去釣魚網站
        3.4 確認電腦的 Hosts file 是否有被惡意竄改,因這東西有轉導網址最高的優先權


2020年6月7日 星期日

i18n 翻成特定語言

i18n 翻譯, 基本上設置後, 就是整個網站有使用的地方, 都會被翻成目前選擇的語系.
但有的地方只想讓它顯示成語系, 不希望跟著系統設置變動怎麼辦?
可以用以下語法
   $t('keyName', 'ZH_CN');
語言名稱需與 message 設定相同


若翻譯需傳入變數, 可如此使用
test: 'Hi {name}',

$t("test", 'EN', {name:'Lily'})