欢迎 👋

喺度写啲生活同技术笔记。

Hello World

第一个 post!博客跑喺 Cloudflare Pages 上面,全球 CDN 直出。 测试标题 支持 Markdown 代码块: 呢篇系示范文章,之后直接喺 content/posts/ 加 .md 文件再跑 deploy.sh 就得更新。 1 console.log("hello again");

November 9, 2026

整咗個 Cloudflare 多人電子白板

用 Cloudflare Workers + Durable Objects 寫咗個多人實時電子白板,開個房間、把連結發出去,大家就可以一齊畫。 源碼開放喺 GitHub:crazysarah/cf-whiteboard,wrangler deploy 一分鐘就開到自己嗰塊板。用法:房間名放喺 hash(https://<你的域>/#房間名),同一個 hash 就係同一塊板。 點解要自己寫一個 市面嘅白板工具(Miro、Excalidrawlive 嗰啲)要麼要註冊、要麼有牆。自己寫一個: 零註冊:開連結就畫,房間名即開即用 一個房間 = 一個 Durable Object:DO 係全球單實例強一致,天生就啱做房間狀態 WebSocket 用 Hibernation API:空房間唔佔 CPU 時間,hibernated 狀態免費——唔使驚養個白板燒錢 筆畫歷史存 DO 內置 SQLite:每 3 筆落盤,重新打開仲喺度(上限 5000 筆,舊嘅自動清) 截圖直接貼上牆:方便貼參考圖 一邊傾一邊畫:WebRTC 語音 P2P,DO 只轉發 SDP/ICE 信令,媒體流唔過 CF——零成本 架構一句話 /room/<name> 路由到同名 Durable Object;WebSocket 常駐但 hibernated(唔使 CPU 時間);歷史入 SQLite;語音走 P2P 信令通道。 已知取捨 清空係廣播式:任何人按清空,全房清掉(undo 栈留返做後續) 坐標係視口坐標,唔同屏幕比例睇到嘅畫面比例可能唔同(縮放適配後續加) 有興趣可以直接開個房試下,或者攞源碼去 wrangler deploy 一分鐘開埋自己嗰塊板。

November 9, 2026