Amo Chen

Python dotenv 介紹與使用教學

將一些重要的資料存在環境變數(environment variable)中,是開發時常見的手段,不僅可以避免將重要的資料不小心 commit 進 codebase 之外,也可以利用環境變數儲存系統或程式設定,實務上也經常利用環境變數區隔開發環境(development)與生產環境(production),例如:

if os. getenv('MODE') == 'development':
    # do development-related things
    pass
else:
    # do production-related things
    pass

但隨著需要設定的環境變數增多,可能導致每次進行開發都有一堆環境變數要先塞好,如果你有遇到這種情況,不妨試試 python-dotenv 吧!

Posted on  Feb 12, 2020  in  Python 模組/套件推薦  by  Amo Chen  ‐ 2 min read

Python 版本管理的好工具 - pyenv

Python 近 10 年來一直在演進,因此 Python 專案的開發也需要考慮版本的問題。

特別是 Python 2 已經退休了,而現在的 Python 專案都以 Python 3 為主,然而有些公司內部的老舊專案仍以 Python 2 開發,因此開發者必須在 Python 2 與 3 之間進行切換。

如果你有 Python 版本切換上的困擾,那麼 pyenv 會是你的好朋友!

Last updated on  Mar 13, 2023  in  Python 程式設計 - 初階 , Python 模組/套件推薦  by  Amo Chen  ‐ 2 min read

Golang gRPC 教學 - part 1

gRPC 是由 Google 所開源的一項 RPC(Remote Procedure Call) 專案。

由於 Google 內部使用了相當多的 Microservices, 也因此 Google 內部十分仰賴以 RPC 技術作為資料傳遞、處理的骨幹,他們內部也使用了一套稱為 Stubby 的 RPC 技術框架,可以視為 gRPC 的前身,不過隨著 SPDY, HTTP/2 及 QUIC 等技術的出現,加上多年使用 Stubby 的經驗以及為了改近 Stubby 的不足,促使 Google 決定打造一套新世代的 RPC 框架,最後造就 gRPC 問世。(有興趣可以進一步閱讀 gRPC Blog

Posted on  Feb 4, 2020  in  Go 程式設計 - 高階  by  Amo Chen  ‐ 4 min read

用 Google Sheets SUMIF 函式製作外幣均價表

有在買賣外幣的人都會知道均價是很重要的,因為匯率是會隨時變動的,隨著不同時間買入或賣出,均價都會有所變動,所以最簡單的獲利方法就是在銀行買價大於均價時。

因此利用 Google Sheets 紀錄外幣買賣操作的均價是相當好的一種辦法!而製作這種表格也只需要懂一個函式 SUMIF

Posted on  Nov 9, 2019  in  Google 試算表  by  Amo Chen  ‐ 2 min read

wait-for-it.sh - 使用 Docker Compose depends_on 的必備 bash script

撰寫 docker-compose.yaml 經常會遇到要使用 depends_on 的情況,確保某些特定的服務可以先啟動,例如 Web Application 經常要 depends_on 資料庫(database)服務。

但是 depends_on 指確保該 container 狀態會進到 running ,而非確保 container 內的服務會完整啟動結束。

However, for startup Compose does not wait until a container is “ready” (whatever that means for your particular application) - only until it’s running.

以 Web Application 與資料庫服務為例,在這種情況下,就會遇到資料庫服務的 container 已經進到 running ,但其實資料庫的程序(process)還沒完全啟動,進而導致 Web Application 服務連不到資料庫而失敗。

遇到這問題,建議可以使用 wait-for-it.sh 來解決!

Posted on  Nov 1, 2019  in  Docker  by  Amo Chen  ‐ 2 min read

用 sed 指令插入(insert)文字到檔案中的指定行數

最近在改用 hexo 寫成的部落格文章,幫文章加上 langauthor 2 個 Front-matter 變數,但是檔案有 100 個以上,總不可能一個一個慢慢改,問了 Google 大神後,發現 sed 指令可以幫忙把文字插入到檔案中的功能,著實減輕不少麻煩。

一起來看看 sed 怎麼把資料插入到檔案的特定行數吧!

Posted on  Oct 27, 2019  in  Unix-like 命令列教學  by  Amo Chen  ‐ 1 min read

用 pytest 結合 Allure2 產生精美的測試報表

隨著專案的規模越來越大,測試的效率及測試工具的有效運用也會成為開發團隊很重要的需求之一。

剛好有人介紹一款不錯的測試報表產生工具 Allure ,除了支援支援 Java, Javascript, Ruby, PHP, .Net, Scala, Python 等多種程式語言之外,連 pytest , behave 等 Python 常見的測試套件也都有整合,故以此文記錄一下這款不錯的報表產生工具。

Posted on  Oct 13, 2019  in  Python 模組/套件推薦  by  Amo Chen  ‐ 3 min read

Python 打包(packaging)與套件相依性管理系統 - Poetry

Python 專案的開發者目前大多數都會選擇 pip 或者 pipenv 作為套件相依性的管理工具,其中 pipenvPipenv: promises a lot, delivers very little 討論串中也得到不少負面評價,主要是 pipenv 一開始承諾的 features 遠多過於後來 release 的版本,而且有些反直覺的行為(e.g. Issue 3304 merge 之前 pipenv 每當安裝新套件就會強制更新 Pipfile.lock 內的所有套件版本)造成開發者困擾,雖然如此, pipenv 依然持續進化中,我們仍可對其抱持中立的態度。

不過前述的討論串中,蠻多人提到 Poetry 這套打包(packaging)與套件相依性管理系統,看來也是值得試試看的一個工具。因此本文特地介紹 Poetry 的使用方法。

Posted on  Oct 1, 2019  in  Python 程式設計 - 高階  by  Amo Chen  ‐ 3 min read