Replicant Detector: A Common Lisp and Datastar Demo
Replicant Detector 是一個技術演示,整合了 Common Lisp、Datastar 以及 BKNR datastore,旨在展示一種高效能、反應式的網頁應用程式架構。該專案作為 Common Lisp 版 Datastar SDK 的演示,透過單一 GET 串流與多個 POST 指令來實作命令查詢職責分離 (CQRS) 模式。
Architecture and Technical Stack
該應用程式利用了一套特定的技術來實現即時更新與持久化儲存:
- Common Lisp: 用於後端邏輯的核心程式語言。
- Datastar: 一個用於管理前端反應性的超媒體驅動框架。
- BKNR Datastore: 作為應用程式數據的持久化儲存層。
- CQRS Pattern: 遵循「Datastar Tao」,應用程式將讀取與寫入操作分離。它使用單一 GET 串流進行更新,並使用多個 POST 指令進行狀態變更。
Real-Time Updates and SSE Implementation
為了支持應用程式的反應性,開發者對 Common Lisp 生態系統進行了幾項底層增強:
- Server-Sent Events (SSE): 應用程式使用 SSE 向客戶端推送更新。為了防止阻塞事件迴圈,開發者將修改整合至 Woo web server (透過 Clack) 以支持用戶頻道 (user channels)。
- Event Pool: 使用用戶頻道讓應用程式能夠利用事件池 (event pool),這對於 CQRS 實作中在不阻塞伺服器的情況下發送通知至關重要。
- Brotli Compression: 作為開發此演示的副產品,作者創建了一個 cl-brotli 函式庫,為 Common Lisp 提供 Brotli 壓縮支持。
Application Features and Interface
Replicant Detector 的主題設定為 Tyrell Corp Blade Runner Division 的「Replicant Registration Database」。介面提供了一個具備以下功能的即時追蹤系統:
- Unit Tracking: 一個分類為型號 (Nexus-6, Nexus-7, Nexus-8)、角色 (例如:Combat, Infiltrator, Loader) 與狀態 (At-Large 或 Retired) 的複製人資料庫。
- Orbital Tracking: 一個使用基於 SVG 的等距圓柱投影 (利用 GeoLite2-City 數據) 的視覺化地圖,用以顯示最後已知位置。
- Field Agent Activity Log: 一個即時日誌,追蹤特務的身分辨識與退役行動 (例如:「Agent S8XLQ08416 (United States): RETIRE N6FAB61216」)。
Development Context
此專案是為 Common Lisp 建立 Datastar SDK 以及在 lambda-combine.net 的「hyper-guide」上提供配套互動式指南的更廣泛工作的一部分。作者指出,此實作目前仍處於開發中 (WIP) 階段,旨在展示這些工具在現代反應式網頁環境中的可行性。