IoC 在 TypeScript 中的實作

預估閱讀時間: 6 分鐘
event 2022/5/21
work 程式
turned_in 中篇
turned_in IoC
turned_in TypeScript
turned_in DI
turned_in Design Pattern
turned_in 心得
turned_in 進階
以一個有名的開源專案為例子,整理出幾個 IoC 不錯的用法,以及基本應該遵守的規則。
最近為新專案導入 Inversion of Control (IoC) container,發現 Container Libraries 中,大部分都只有和自己相關的教學文件,比較少有實際實作的範例,這邊文章以一個有名的開源專案為例子,整理出幾個不錯的用法,以及基本應該遵守的規則。 IoC Containers 現在有很多很棒的 Containers 供大家使用,如果您使用 Angular 或是 Nest.js 之類的 Framework,本身也有內建 Container/DI 的功能,這邊列出幾個比較多人使用的 Container: * InversifyJS (本篇使用的 Conta

Bastion Host - Teleport 介紹

預估閱讀時間: 4 分鐘
event 2021/7/20
work 程式
work 雲端
turned_in 中篇
turned_in K8S
turned_in 工具
最近公司內部使用 Teleport 作為 Bastion Host,使用起來非常方便,寫篇文章簡單介紹一下它。
什麼是堡壘機 Bastion Host 通常我們會把內部的服務像是 Databases 或應用程式放在 Private Subnets,這些機器不能直接由 Public IP 存取,而是藉由 Load Balancers (ALB, ELB) 將流量導向內部的機器,這樣可以保護我們的服務不受外部攻擊,只讓真正需要對外的服務能夠被存取。如下圖所示(通常 Applications 和 Databases 不會放在同一個 Subnet): 不過我們偶爾還是需要 SSH 進去 Private Subnets 中的機器進行部署或診斷,這時候就需要額外的「跳板」讓我們連進機器了,這台機器就稱為 Bast

中繼憑證設定遺失問題

預估閱讀時間: 3 分鐘
event 2021/5/4
work 程式
work 雲端
turned_in 短篇
簡單解釋中繼憑證以及未正確設定時會發生的問題。
甚麼是中繼憑證 一般來說,證書頒發機構 (certificate authority, CA) 不會用真正的根憑證 (Root Certificate) 來簽發給使用者的憑證,畢竟終端使用者這麼多,放在線上每天簽屬風險太大。相對的,CA 會使用根憑證先簽發一張憑證,再用這張憑證來簽發給大家的憑證,這張憑證就稱為「中繼憑證」(或中間憑證,Intermediate Certificate)。 比如說著名的 Let’s Encrypt,目前 (2021 五月) 使用的根憑證是 DST Root CA X3,用來簽發的憑證則是 R3: Let's Encrypt 憑證,圖片來自 https://l

LBRY 基本介紹

預估閱讀時間: 2 分鐘
event 2020/12/31
work 雜談
turned_in 短篇
turned_in 加密貨幣
我最近看到好和弦在談論 LBRY,覺得是個很有趣的想法,於是稍微研究了一下官方的 Spec,整理一篇文章來談談 LBRY 的技術內容。
我最近看到 好和弦在談論 LBRY,覺得是個很有趣的想法,於是稍微研究了一下官方的 Spec,整理一篇文章來談談 LBRY 的技術內容。 甚麼是 LBRY LBRY,圖片來自官網 現在如果我們想上傳一部影片,YouTube 一定是大家的首選,Google 利用大家的資訊,提供廣告商精準的投放平台,讓使用者們可以免費的觀看影片,分潤機制也讓還沒有能力獨立談到業配的 YouTuber 們能有基本的收入。不過隨著 YouTube 越來越大,壟斷的爭議也越來越多,創作者們為了有更多的觸及率,開始製作 YouTube 喜歡的影片,平台開始「審查」影片內容來決定創作者們能否取得收益。 大家開始注意到

Kubernetes 上的 ExternalTrafficPolicy

預估閱讀時間: 16 分鐘
event 2020/11/15
work 程式
work 雲端
turned_in K8S
turned_in Azure
turned_in 進階
turned_in 長篇
在 Kubernetes 中 Pod 接收到的流量來源 IP 通常會是內部 (Node) IP,若想保留原始的來源位址的話必需修改 Service ,這篇文章粗略的介紹 kube proxy 如何處理流量以及說明 ExternalTrafficPolicy 的不同模式
前言 最近公司改用 Nginx ingress controller 配合一個 L4 Load Balancer 來處理進站流量,取代過去使用 Application Gateway,在部屬時發現官方預設在 Service 上設定 ExternalTrafficPolicy = Local (Ingress-nginx Azure deploy.yaml),AKS 文件上也提到如果想保留客戶端來源 IP 的話,必須要這樣設定。 經果一番探索後,發現和 Kube-proxy 如何處理進進站流量有關,也算是解答了我對 Service 實作的問題,這篇文章來記錄一下研究成果 🎉 Kube Pr

Jaxx 錢包被盜

預估閱讀時間: 2 分鐘
event 2020/9/13
work 雜談
turned_in 短篇
turned_in 加密貨幣
這幾個禮拜托 YFI 的福,幣圈又開始熱絡了起來,不過在使用錢包時需要注意是不是釣魚網站或 APP,這篇文章來分享一個活生生的慘案。
這幾個禮拜托 YFI 的福,幣圈又開始熱絡了起來,身邊的朋友也開始加入市場,這篇文章分享一個發生在身邊的慘案,最後的結果是錢包裡面所有的錢全部被轉走。 如果您的錢包已經遭遇不測,請不用往下看了,這篇文章沒有提供處理方法,請節哀😥。 Jaxx Jaxx Liberty 網站,圖片來自 Jaxx 官網。 Jaxx Liberty 是由 Decentral 這家加拿大公司所開發的手機熱錢包,可以在手機上管理超過 90 種貨幣。 他們並不會儲存我們的私鑰到伺服器,所有的私鑰都掌握在一串 12 個單字的助記詞(使用 BIP39) 中,誰得到這個字串就能存取錢包,像這個樣子: bridge ri

使用 Clasp 開發 Apps Script

預估閱讀時間: 2 分鐘
event 2020/8/28
work 程式
work 工具
turned_in 短篇
turned_in 入門
turned_in Apps Script
以前會寫一點 Google Apps Script 來協助更新 Google Sheet,前幾天突然發現她終於使用 V8 啦,甚至可以使用 Typescript 來撰寫,這篇文章來介紹實作這些功能的工具 Clasp。
Apps Script 以前會寫少少的 Apps Script 來協助操作 Google Sheet 或其他 Google 服務,就是直接從 Google Sheet 裡面的指令碼編輯器直接進到 Script 編輯畫面。 比如說利用 doPost() 來當作 Webhook 塞資料進到表格中之類的簡單功能。 不過這個東西真的不是很好寫,因為是使用 Rhino 的關係,只能寫 ES5 語法,沒有 Class、沒有 Arrow Function … 😂 而且必須使用線上 IDE 的關係,也沒有辦法做版控 … Clasp 還好現在 Apps Script 已經支援 V8 Runtime 了

Kubernetes 上的保留資源

預估閱讀時間: 3 分鐘
event 2020/8/22
work 程式
work 雲端
turned_in K8S
turned_in 短篇
turned_in Azure
turned_in AWS
最近發現我們在 Azure Kubernetes Service (AKS) 上的 Pod 很容易被驅逐,查了一下才發現原來我們不能用盡 Node 上的所有資源,這篇文章就來看看我們必須留下多少資源給系統吧。
最近發現我們在 Azure Kubernetes Service (AKS) 上的 Pod 很容易被驅逐,查了一下才發現原來我們不能用盡 Node 上的所有資源,這篇文章就來看看我們必須留下多少資源給系統吧。 Node Capacity 在 Kubernetes 上執行 Pod 的時候,我們可以指定 Resource Request/Limit 來告訴 K8S 我們的程式需要多少的資源來運行,K8S 會自動幫我們安排到符合條件的節點上,像下面這樣: resources: requests: memory: "64Mi" cpu: "250m" limits:

Kubernetes cluster autoscaler 介紹

預估閱讀時間: 9 分鐘
event 2020/5/10
work 程式
work 雲端
turned_in 中篇
turned_in K8S
turned_in Azure
turned_in AWS
turned_in CA
在一般的開發我們很少會處理到群集的伸縮,整個產品中可能就會研究一次,所以我稱這次工作上難得處理到 K8S Cluster autoscaler,趕快記錄下來,也和大家分享。
甚麼是 Cluster Autoscaler (CA) Cluster Autoscaler (以下簡稱 CA) 是 Kubernetes 官方出的一個工具,讓你的 Cluster 依照需求伸縮,簡單來說就是幫你開/關雲端上的機器。通常會配合上 Horizontal Pod Autoscaler (以下簡稱 HPA) 一起使用,當 Pod 記憶體/CPU 或其他指標達到一定標準後,擴展 Pod,當沒有足夠的機器 (Node) 來執行 Pod 時,CA 就會幫你擴展機器。相反的需求下降時,HPA 降低 Pod 數量,CA 也會關閉不需要的機器,如此一來就可以節省成本又可以達到同樣的運算能力。

使用 Azure user delegation SAS 來簽署 Blob 權限

預估閱讀時間: 3 分鐘
event 2020/4/19
work 程式
work 雲端
turned_in 短篇
turned_in Azure
turned_in Blob
最近在把原本使用 AWS S3 的服務轉往 Azure storage,需要實作類似 S3 中 Presigned URL 的功能,順便寫點筆記紀錄一下,這篇文章我會使用微軟建議的 User delegation SAS 來增加安全性。
最近在把原本使用 AWS S3 的服務轉往 Azure storage,需要實作類似 S3 中 Presigned URL 的功能,順便寫點筆記紀錄一下。 Presigned URL 在 AWS S3 中有個稱為 Presigned URL 的功能,簡單來說你可以產生一個專用的網址給 Client 端,裡面限定權限和使用期限之類的訊息,Client 端拿到這個網址後就可以直接對資源發出請求,例如下載/上傳檔案之類的事情。你可以完全管理權限,流量又不必經由伺服器再到客戶端,在處理大檔案的時候非常實用。 Azure SAS 在 Azure Blob storage (類似 S3 的服務)中也有

Goofy's blog

Hi, 這是一個沒有技術的工程師的部落格,會寫些技術筆記、旅遊紀錄以及大量的廢話,歡迎拍打餵食。
有任何建議都可以在文章下方留言或是到 Github 上開 Issue 😃