有時候在需要訊息傳遞的應用場景,因為需求簡單不想使用到像 RabbitMQ
這種企業級的訊息中介軟體 (middleware), 使用 Redis
雖然夠簡單但畢竟還是需要執行另一個進程 (process),總還是有殺雞用牛刀的感覺。
但是另一方面又有訊息不能遺失的需求,自己處理訊息持久性 (persistence) 實在麻煩, 畢竟訊息儲存還是要支援 ACID
特性才能號稱做到不遺失。

閱讀全文

什麼是 UUID? 相信多數參與軟體開發的人應該都知道。知道什麼是 UUID, 暸解
TimeUUID 也是輕而易舉的事情。雖然 TimeUUID 感覺無足輕重,
但在特定的使用案例 (use case),又是這麼方便,山姆鍋覺得值得為它介紹一番。

閱讀全文

山姆鍋平常喜歡搜尋一些有趣的開放源碼專案,尤其是有提供設計文件的。有天不知道怎麼地逛到了 Cockroach DB 這個專案,它的設計文件有許多有趣的地方,但我特別注意到其中一篇論文,關於使用邏輯與實體時鐘來實現一個分散式時間郵戳 (timestamp) 的演算法。

閱讀全文

山姆鍋期望雲端存儲與備份服務,可以做到保護使用者的資料安全與隱私。針對要達到這樣目標, 已經說明了其中需要的兩個關鍵技術:「資訊擴散演算法」以及「Convergent Encryption」。 本文山姆鍋說明另外一片重要拼圖:「去中心化身份驗證 (decentralized authentication)」。

閱讀全文

版本控制與檔案同步軟體其中一個重要功能:讓來源 (source) 檔案的內容跟目標 (target) 檔案內容相同。
直覺來說,最簡單的方式:將來源檔案複製 (copy) 到目標檔案。
不過這種做法,對於像是同一個檔案的不同版本的同步,會耗用太多不必要的頻寬與儲存空間之外,
時間往往也是個造成這種方式不實際的因素之一。那有沒有更有效的作法呢?

閱讀全文

Dropbox 是一個很受歡迎的雲端資料儲存與備份服務,從使用者的角度,它真的很方便,有些很大的檔案往往也能很快就能完成上載。 但您想過它為什麼可以做到這樣快速上傳,背後的技術原理是什麼?對於您的資料安全與個人隱私又有什麼影響? 山姆鍋根據自己的了解,為您解釋 Dropbox 到底是如何運作的。

閱讀全文

很早之前在寫 QR Code 解碼器的時候就接觸過「糾刪碼」(erasure code) 這種技術, 因為 QR Code 有使用到 Reed–Solomon error correction 。雖然知道是數學的運算結果,但至今還是對它的功用感到很神奇!背後的編碼理論已經超過山姆鍋的理解範圍,但撇除背後的數學理論,身為工程師要如何理解糾刪碼,以及作何應用呢?

閱讀全文
作者的圖片

Sampot (山姆鍋)

個人部落格, 記錄與分享一些軟體開發與運維相關資訊, 偶爾也會碎念一下


IT 自由工作者


台灣/台北