python

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

Python - QueueHandler & QueueListener 範例

Python logging 模組提供很多內建的 handlers ,可以依照各種不一樣的使用情況選擇不同的 handler 處理日誌(log)。

然而,關於 QueueHandlers 的說明最為吸引我的目光:

Along with the QueueListener class, QueueHandler can be used to let handlers do their work on a separate thread from the one which does the logging.

This is important in Web applications and also other service applications where threads servicing clients need to respond as quickly as possible, while any potentially slow operations (such as sending an email via SMTPHandler) are done on a separate thread.

QueueHandler 與 QueueListener 讓我們能夠把 logging 的功能用另外的執行緒(thread)執行,如此一來像是 SMTPHandler 這種耗時間會拖慢 Web 應用或是其他服務的 handler 就可以在另外的執行緒執行,讓重要的服務能夠盡快地回應用戶,避免被 logging 拖慢回應速度。

Posted on  Nov 30, 2018  in  Python 程式設計 - 高階  by  Amo Chen  ‐ 2 min read

用 Python 學 Google Protocol Buffers - Part 1

本文為系列教學:

What I Learned from Quip on How to Build a Product on 8 Different Platforms with Only 13 Engineers 一文說明 Quip 如何用僅 13 人的人力同時建置 8 種不同平台的產品,十分值得借鏡。

該文有個很重要的概念 - Build once, use multiple times ,就是提倡減少重複打造相同元件的過程,提高元件的再利用率。而該文也揭露 Quip 大量使用 Google Protocol Buffers ,透過 Google Protocol Buffers 定義資料結構之後,就能夠在各個語言或平台上自動化產生能夠讀寫相同資料結構的程式碼,甚至能夠作為資料交換格式在各種不同平台間傳遞,降低重複開發的成本進而增加開發效率。

如此方便的工具怎能夠放過,本篇就用 Python 學習 Google Protocol Buffers 吧!

Posted on  Oct 27, 2018  in  Python 程式設計 - 高階  by  Amo Chen  ‐ 4 min read