有時候在需要訊息傳遞的應用場景,因為需求簡單不想使用到像 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 (山姆鍋)

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


伊凡達科技 - 技術長


台灣/台北