文章

海邊的 Kafka 與 Python Part 1 - 發佈(publish)與訂閱(subscribe)

Apache Kafka 是知名的分散式串流資料平台(distributed streaming platform),具備高效能、高吞吐量、可容錯(fault-tolerant)設計等特性,所以 Kafka 通常被應用在即時(real-time)串流資料的處理,例如應用程式產生的日誌(log)、使用者的活動紀錄(例如電子商務網站可能會紀錄使用者瀏覽哪些商品)等等。

而目前 MicroSoft, airbnb, NETFLIX, LinkedIn, LINE 等知名公司也是 Apache Kafka 的使用者,也因為有這些公司的背書,所以不太需要擔心 Apache Kafka 的成熟度及可靠度等問題。

不過單看 Apache Kafka 官網的介紹會有些難以理解其切確的功能及用途,所以本文將藉由撰寫 Python 應用程式實際認識 Kafka 的幾個主要面向與功能。

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

Backend 淺談 database Transaction Isolation Levels

在資料庫管理系統中有 4 個很重要的特性被稱為 ACID(Atomicity, Consistency, Isolation, Durability) ,也就是不可分割性、一致性、隔離性、持久性,這 4 個重要特性是為了確保每個 Transaction 操作結果都是正確、可靠的。

其中 Isolation 是為了防止多個 Transactions 同時執行導致資料不一致的情況,而 Isolation 中又有所謂的 Isolation Levels ,根據 SQL-92 的標準分為 4 種級別:

  1. Repeatable Read
  2. Read Committed
  3. Read Uncommitted
  4. Serializable

Posted on  Sep 30, 2018  in  資訊技術探索  by  Amo Chen  ‐ 3 min read

Python module - phonenumbers 電話號碼格式驗證

如果 Java, C++, Javascript 開發者想驗證各個不同國家電話號碼的格式與正確性的話,可以利用 Google 所開源的 libphonenumber ,著實省去很多苦工。如果是使用 Python 的開發者則可以安裝模組 phonenumbers 做到一樣的事情,該 module 是由 daviddrysdale 佛心將 Google libphonenumbers 移植到 Python 供大家使用,我每次使用時都心懷感激!

本文將介紹:

  1. E.164 電話號碼格式
  2. 用 phonenumbers 驗證電話號碼
  3. 用 phonenumbers 擷取電話號碼資訊

Posted on  Sep 29, 2018  in  Python 模組/套件推薦  by  Amo Chen  ‐ 2 min read

VirtualBox headless - 在系統背景(background)執行虛擬機器

一般啟動 VirtualBox 內的虛擬機器(Virtual Machine)後,會有一個即時顯示系統畫面的視窗,透過這個視窗,我們就能夠與虛擬機器進行互動,例如輸入指令、用滑鼠操作等等。

但有些時候,我們並不真的需要這一個即時顯示系統畫面的視窗,例如把虛擬機器當成 SSH server 或 Web Server 時,如果能夠把虛擬機器視窗關掉,讓虛擬機器在背景中執行的話會方便很多。

Posted on  Sep 16, 2018  in  VirtualBox  by  Amo Chen  ‐ 1 min read

Flask Test Client - GET / POST examples

Flask 的 test client 其實是複用 WerkzeugClient 支援 get patch post head 等方法。

不過文件中對於各個方法可以使用的參數並沒有寫得十分清楚,本篇紀錄常見的 get post 使用方法。

Posted on  Sep 15, 2018  in  Flask  by  Amo Chen  ‐ 1 min read