Kevin Huang

@kevinhuangtw

Joined on Jun 10, 2022

  • 最近在協助同事將開發環境容器化(使用 Docker)時,發現一個有趣的現象:在 container 中執行 FastAPI server 時,print() 的輸出無法即時顯示在終端機上,但使用 logger 卻沒有這個問題。這篇文章就來簡單記錄一下這背後的原因。 先從緩衝區(Buffer)談起 緩衝區是一塊暫時儲存資料的記憶體空間,用來「暫存」資料,等到條件符合時再一次性地輸出或處理。這樣的設計可以減少 I/O 操作的頻率,提升效能。 以輸出到螢幕的 stdout buffering 為例,常見的緩衝模式有三種: Fully Buffered(全緩衝)資料會先存到 buffer 中,直到 buffer 滿了才會一次性輸出。常見於輸出到檔案或管道(pipe)時。 Line Buffered(行緩衝)每當遇到換行符號(\n)時,才會把 buffer 的內容輸出。常見於輸出到終端機。 Unbuffered(無緩衝)資料會立即輸出,不經過緩衝區。常見於錯誤輸出(stderr)或明確設定為無緩衝的情況。
     Like  Bookmark
  • 在上週某天突然發現 Production 上的資料全部都變成 RC 環境的資料,project settings 都是 RC 環境的參數,這是一個非常嚴重的錯誤發生在 Production,第一時間我還還毫無頭緒。 先來看看 VM 裡面的目錄長這樣: (先別嗆我為什麼三個環境的目錄會放在同一個 VM...) project-admin/ └──project-prod/ | ├─app.py | └─... └──project-rc/
     Like  Bookmark
  • 常常聽到 IAM,在公司使用 Google Cloud Platform (以下簡稱 GCP) 時也有遇到權限不足需要去申請的時候,但根本不了解裡面的內容,趁著最近讀完官方文件後簡單的寫個筆記。 What is IAM? 在 Google Cloud API 中的權限控管 (Access control) 可以大致拆分成三部分: Authentication Authorization Auditing 其中 Authentication 負責識別你是誰,Authorization 決定你能做什麼事,Auditing 則是記錄你做了什麼事,其中 Authorization 就是本文提到的 IAM。
     Like 2 Bookmark