python

Python daemon thread 解說

閱讀 Python Threading 文件時,關於 Thread Objects 中有提到 Daemon Thread

A thread can be flagged as a “daemon thread”. The significance of this flag is that the entire Python program exits when only daemon threads are left.

單看說明其實還不是特別清楚,可以用個範例實際幫助理解。

Last updated on  Sep 8, 2023  in  Python 程式設計 - 中階  by  Amo Chen  ‐ 2 min read

Python mock 模組 - 淺談 spec, return_value, side_effect, wraps - Part 1

本文為 unittest.mock 系列文章:

Python 的測試案例(test case)寫到最後,免不了都會用上 unittest.mock 模組,原因在於有些類別、資料用 mock 的方式製造,遠遠方便於實際執行過一遍,例如測試使用者利用臉書登入,利用 mock 模擬實際臉書伺服器的回應遠比實際執行來得方便之外,也更加確保測試案例的可控制性,不會因為臉書伺服器故障或者網路問題而導致測試案例不穩定的情況發生。

然而 mock 對於初學者而言並不是十分容易理解,本文就談談 mock 中幾個重要的功能,了解這些功能之後,肯定能夠打通 mock 模組的任督二脈!

Posted on  Dec 16, 2018  in  Python 程式設計 - 高階  by  Amo Chen  ‐ 3 min read

Python 用 Click 模組製作好用的指令

Python 作為一個成熟的腳本語言(scripting langage),已經發展相當多方便地模組、套件供開發者們使用,得益於其方便性與易用性, Python 也十分適合用來撰寫命令列(command line)工具,幫忙解決日常工作或生活上瑣事的自動化。

本文將介紹 Click 模組,讓開發者們能夠更方便地製作命令列工具。

學會 Click 後就能將各種製作指令的瑣事交給它 ,將能夠更專注於主要功能的開發!

Last updated on  Feb 13, 2024  in  Python 模組/套件推薦  by  Amo Chen  ‐ 5 min read

SQLAlchemy - 用 Mixin / Custom Base Classes 撰寫好維護的 ORM

越是使用 SQLAlchemy 就會越是發現 SQLAlchemy 在 Python ORM 的用心,例如 Mixin and Custom Base Classes 讓我們能夠將常見的資料庫欄位或者功能放在一起,變成 Mixin 類別(class) ,只要繼承該 Mixin 就能夠獲得相同的欄位與功能,減少重複的程式並提高可維護性( Djano 的 view 也有類似的作法,詳見 Using mixins with class-based views )。

Posted on  Dec 8, 2018  in  Python 模組/套件推薦  by  Amo Chen  ‐ 1 min read

Python - Flask i18n 多國語系功能實作

Django 對於 internationalization 與 localization 已提供成熟的解決方案,官方 文件 也寫得十分詳細。

而 Flask 作為一個輕量化的 Web Framework ,並沒有內建 i18n & l10n 的功能,不過只要安裝 Flask-Babel 也可以做到一樣的事情,剛好整合過程也十分簡單,特此紀錄一篇。

Posted on  Dec 7, 2018  in  Flask  by  Amo Chen  ‐ 4 min read

Python - JWT (JSON Web Token)

JWT(JSON Web Token) 是 RFC 7519 定義的一套標準,用以確保應用(application)之間傳遞訊息的安全性與完整性(integrity)。 JWT 常常與傳統的 Cookie/Session 技術一起被比較,然而這些技術是為了解決不同問題所發明的,也有各自的優缺點與特別合適的應用場景,沒有誰優誰劣的絕對定論。

目前實務上也越來越多應用會利用 JWT 傳遞資料,譬如 APP 在使用者登入時透過 JWT 取得常用的「非機敏性資料」(例如,暱稱、語系設定等等),並且儲存在裝置內,以減少詢問伺服器的次數,達到節省伺服器資源與增加下一次 APP 啟動速度的效果,運用得當的話也是一個加分的技術。

至於為什麼特別強調「非機敏性資料」,本文稍後將作解釋,先一起透過 Python 學習 JWT 相關的概念與使用吧!

Posted on  Dec 1, 2018  in  Python 模組/套件推薦  by  Amo Chen  ‐ 3 min read