文章

Python subprocess 模組使用教學

有時候開發功能不需要從頭寫到尾,利用他人開發的函式庫(library), API 之外,也可以整合既有的指令工具,不僅可以節省開發時間,也能夠完成需求。

我的碩士論文就是用 Python 作為膠水語言整合各種指令工具所完成的, Python 的 subprocess 模組在其中扮演不可獲缺的角色, subprocess 模組讓人可以執行各種指令,例如常見的 awk, sort, sed, uniq 等指令,並擷取其輸出(stdout / stderr),讓 Python 程式可以讀取,並進一步做其他處理。

本文將介紹 Python subprocess 模組的使用方法,以及應該注意的資安問題。

Last updated on  Jul 26, 2024  in  Python 程式設計 - 中階  by  Amo Chen  ‐ 5 min read

用 Docker 編譯並匯出執行檔 (compile & export)

最近在 macOS 用 Go 語言開發專案,不過遇到一些 Cross-Compiling 無法運作的問題,礙於時間壓力只得想辦法避開 Cross-Compiling 的問題,最直覺的方式就是直接在最終需要部署的作業系統中編譯,所以決定暫時用相同作業系統版本的 Docker container 以進行編譯,再將 Docker image 內最終編譯完成的執行檔匯出即可。

Docker 官方也提供文件指引如何匯出檔案,但是過程可能會遇到讀寫的問題,所以本文重新以比較簡單的方式介紹如何匯出 Docker image 內的檔案。

Posted on  Jun 16, 2023  in  Docker  by  Amo Chen  ‐ 2 min read

Python JSON 模組 - 走到跑,跑到飛的 orjson

orjson 是一套由 Rust 實作的 Python 套件,專門用以處理 JSON 相關的 encode 與 decode 的工作,效率不僅快(根據官方測試最快可以達到 json 模組的 40 到 50 倍效率)更天生能直接處理 Python 內建 json 模組所無法序列化(serialize)的 datetime, UUID, dataclass 等資料,不需額外編寫序列化的處理程式。

如果你想改善 Python API server 處理 JSON 的速度,以降低系統回應時間,又或者你有大量 JSON 相關的資料要處理,想有效減少處理時間的話,不妨試試 orjson 吧!

Posted on  May 10, 2023  in  Python 模組/套件推薦  by  Amo Chen  ‐ 4 min read

後端工程師面試考什麼 - CORS (Cross-Origin Resource Sharing)

隨著前後端技術演進,姑且不論是否採用微服務(microservice)架構,前後端分離成為越來越常見的開發模式,例如前端採用 NEXT.js 等框架,或者編譯成靜態網頁(static site)部署在雲端,所需要的後端 API 功能則是呼叫部署在另一個網域(domain)的伺服器,例如下圖:

不過採用此種前後端分離的架構,就需要理解何謂 CORS(Cross-Origin Resource Sharing),才能讓前端正常運作。

p.s. 通常有用到前後端分離架構的公司,就有可能問到何為 CORS 。

Posted on  Apr 19, 2023  in  後端面試準備  by  Amo Chen  ‐ 5 min read

後端工程師面試考什麼 - SQL 篇

後端工程師日常不僅要跟程式、作業系統、架構搏鬥,也要跟資料庫(database)打交道。

資料庫的類型也隨著時代演變越來越多,除了 NoSQL, In-memory database 之外,面試過程最常聊到的還是關聯式資料庫(relational database management system),而且關聯式資料庫也是目前業界常見的資料儲存系統,各個公司無論規模大小或多或少都會有關聯式資料庫的存在,除此之外,關聯式資料庫也相當適合用以儲存交易(transaction)類型的資料。

因此操作關聯式資料庫需要用到的 SQL(Structured Query Language) 幾乎成為後端工程師面試時的必考題,而且考 SQL 的好處在於它是一項標準,無論你是 MySQL 還是 PostgreSQL 還是 MS SQL Server 的使用者,基本上都能夠用 SQL 進行交流。

本文來介紹經常會被問到的 SQL 面試問題吧!

Last updated on  Oct 17, 2023  in  後端面試準備  by  Amo Chen  ‐ 8 min read

你應該要知道的 Python 實用模組 - functools 教學

functools 模組是 Python 內建專門提供各種實用裝飾子(decorator)以及實用函式(function)的模組。

functools 模組最常被使用的功能主要為:

學會正確使用 functools 不僅可以提升效能,也可以有效地提升程式碼的簡潔性。

本文將以實際範例介紹 functools 模組中常用的功能。

Posted on  Apr 10, 2023  in  Python 程式設計 - 中階  by  Amo Chen  ‐ 6 min read

後端工程師面試考什麼 - Lock 篇

在程式設計中,平行處理可能會同時訪問共享資源,這樣就可能導致共享資源的競爭與執行結果不一致等等問題。

為了避免這些問題,就需要使用 lock 進行同步,保證在同一時間只有一個執行緒或 process 能夠存取共享資源。

所以在面試中,許多面試官都會考面試者對於 lock 的了解和應用。常見的考題包括 lock 的原理、種類、常見問題和解決方法等。

了解 lock 的使用不僅僅可以應對相關面試問題,也有助於在實際開發中知道如何使用 lock, 以避免平行處理所造成的相關問題。

Posted on  Mar 29, 2023  in  後端面試準備  by  Amo Chen  ‐ 5 min read