最近需要使用 BitTorrent 來實驗點對點資料傳輸功能,所以想說來玩玩 libtorrent 這個程式庫 (C++),為了方便實驗,也需要它的 Python 綁定。經過三天的爬文與奮戰,終於在 Windows, OSX 以及 Ubuntu 上成功編譯或安裝,本文山姆鍋就來分享在 Windows 64 位元電腦上編譯的方法之一。
閱讀全文由於專案需要在幾個桌面環境建構發行包 (distribution packages),不久也想在 Raspberry Pi 上面進行,需要一個可以在不同平台環境上自動執行建置工作的軟體。 基於過去比較與使用的經驗, 山姆鍋選擇了 Buildbot 來進行這項工作。
閱讀全文在很多時候,我們會希望所開發的應用軟體允許其他開發者擴展它的功能。為了達到這個目的, 通常的作法是讓軟體支援某種插件框架 (Plugin framework)。 Python
其實擁有內建的機制來實現一個簡單的插件框架。本文山姆鍋藉由插件框架來介紹 pkg_resources 這個 Python 用來管理套件資源的套件 (package)。
使用 Python 建立 Socket 物件並綁定 (bind) 到網卡後,該如何取得實際綁定的 IP 位址?這個問題多數人都會覺得簡單,但真的有這麼容易嗎?
閱讀全文在 高可擴展的任務執行架構需求 一文中,山姆鍋提到基於 Python 的超輕量級沙盒 (sandbox)。沙盒是一個有限制的執行環境, 用來執行不受信任的程式碼 / 腳本 (script)。本文山姆鍋基於需要,實驗一個 Python 沙盒的開源專案。
閱讀全文什麼是 UUID? 相信多數參與軟體開發的人應該都知道。知道什麼是 UUID, 暸解
TimeUUID 也是輕而易舉的事情。雖然 TimeUUID 感覺無足輕重,
但在特定的使用案例 (use case),又是這麼方便,山姆鍋覺得值得為它介紹一番。
山姆鍋平常喜歡搜尋一些有趣的開放源碼專案,尤其是有提供設計文件的。有天不知道怎麼地逛到了 Cockroach DB 這個專案,它的設計文件有許多有趣的地方,但我特別注意到其中一篇論文,關於使用邏輯與實體時鐘來實現一個分散式時間郵戳 (timestamp) 的演算法。
閱讀全文