Posts

If I fail to put it in writing, it is likely to slip my memory in due time.

Setup CouchDB Cluster using Docker Swarm

CouchDB,一個主打安裝好之後就可以直接有原生 Http API 進行 CRUD (新增、讀取、修改、刪除) 的 NoSQL 資料庫,對於較簡單的應用程式甚至就直接免去後端的開發成本,直接對接 CouchDB Http API 介面即可。

除此之外,CouchDB 同時也主打所謂的 muti-master cluster 架構,可以輕易地設定多個 CouchDB instances 來達到 HA 的目的,確保服務不會因為伺服器掛掉而無法存取。

而本篇就是在記錄如何透過 Docker Swarm 來佈署跨機器的三個 CouchDB 並且將之設定為 cluster mode.


用手機拍攝日食到底可不可行

這次六月二十一日台灣正好有機會觀測到難得一見的日環食,我當然也是必不缺席,直接跑去嘉義的香湖公園餐與這次盛會。雖然我一直在腦中規劃這次該如何觀測,但實際要採購時還是太晚根本買不到巴德膜,最後只買到十個日食觀測眼鏡….慘…

而這麼小的日食觀測眼鏡也不太容易直接套在單眼相機鏡頭前,所以我最後就索性決定這次只使用我的手機拍攝,順便來實測看看用手機拍攝日食到底可不可行?

日環食時間序列,下排左一算是有拍到貝里珠。器材:Google Pixel 4 + 太陽濾鏡 日環食時間序列,下排左一算是有拍到貝里珠。器材:Google Pixel 4 + 太陽濾鏡

Build a High Performance Computing Cluster on GCP

敝司長久以來都是自建 Cluster 來做為日常運算資源使用的,長時間一直都被擴充性、I/O 效能所卡住,若是卡在運算資源不夠光是採買新機器動輒要幾個月;被 share storage 的 I/O 效能卡住更慘,整個系統會慢到爆 job 都卡住…
所以我就在想有沒有辦法在雲上建立這種高效能運算叢集,想動態擴張幾台就幾台,再加上我相信無論是 AWS, GCP 等等大平台所提供的 NFS 服務應該都差不到哪裡去吧…?


Develop a Plugin for Hexo

這陣子心血來潮花了點時間整理敝部落格的原始碼,整理的過程發現其實可以把一些小工具獨立成模組,一方面可以讓 codebase 變精簡,另一方面則是抽出來的模組也可以給其他 Hexo 使用者使用。
一開始我以為只是搬移一下程式、剪剪貼貼就可以完成,後來越做越不對勁…原來要做一個 Hexo Plugin 也是滿多地方需要注意的。
最後的成品叫做 hexo-tag-photozoom,有興趣歡迎用用看~


Timing Attack in String Compare

程式語言通常在執行的時候,為了要最佳化執行的速度,常常會利用所謂的 Early Return。[1]
比如說條件式裡面 if (a && b) 這種判斷式,假設已經知道 A == false,那其實就可以不需要知道 b 的值,如此就可以直接忽略 b 而達到更快的知道這個判斷式是否為真[2]
同樣的這種作法其實會發生在很多地方,比方說像是比對兩個字串是否一樣:在很多程式語言中的實作其實就是遍歷兩個字串比對每一個字元,那只要過程中有一個字元不一樣那這兩個字串肯定就是不一樣,即可提早返回結果。