Mongodb 的 aggregate
在資料查詢、分析等操作中是一個強大的聚合操作,但我發現在嘗試編寫它時,即使是非常簡單的語法,也總是需要參考官方文件或 ChatGPT 或 Perplexity 等 AI 工具,因此我總結了一些常用的模式作為模板,以便在工作中快速參考。
Nodejs 效能提示。
React 基礎知識與陷阱。大部分來自官方文件。
在Windows 11的wsl2上新安裝 ubuntu 22.04後,可能會遇到一些問題,例如開啟播放音訊的網頁時沒有聲音輸出,或瀏覽器無法正確顯示包含 CJK 字元的網頁,以下列舉了一些快速解決方案。
Web Worker和Service Worker都是在後台執行的 JavaScript 工作者類型,與主瀏覽器執行緒分開。但它們的用途不同,且具有鮮明的特點。
常用 Terraform 指令和操作方法的快速參考。
嘗試 Windows 11 和 Ubuntu 雙啟動後,我決定刪除 Ubuntu。理由是可能是未知硬體驅動程式問題,導致無論 CPU 幾乎為零還是記憶體使用率很低的情況下,我的筆記型電腦的風扇都會一直發出噪音。按照互聯網上提供的指南中的步驟,我刪除了 Ubuntu 分割區並從磁碟管理工具將 Windows 分割區擴展回原始磁碟區。然而,還有一個遺留問題,就是 UEFI(BIOS)有一個 Ubuntu 的幽靈啟動項,似乎沒有直接的方法可以刪除它。在網路上搜尋了一段時間後,我終於發現下面的方法可以可靠地工作。
跨編輯器和平台的最小統一程式快速鍵。
最近我遇到了一個系統問題,我們一些以 Ruby Rake 任務形式編寫的批次作業最終出現重複調用,這導致資料庫中出現重複記錄或在 Slack 中出現重複警報。這絕對是基礎設施問題,但在從基礎設施修復它之前,我需要從編碼角度找到解決它的方法。嘗試將所有內容重寫為盡可能冪等的並不太現實,增強應用程式級驗證或資料庫唯一性約束也不是一個選擇,因為並非所有作業都可以是冪等的,也並非所有作業都會寫入資料庫,此外問題是由競爭條件引起的,不是來自兩個線程,而是來自兩個進程。經過一些研究和實驗,我決定使用「Redis」作為一個簡單的分散鎖解決方案,它已經在我們的應用程式中可用,不需要任何額外的設置,而且它是一個單一實例,因此不需要考慮複製同步問題。 「Redis」 是單執行緒架構,無論有多少並發客戶端嘗試寫入它,它都能保證結果是順序的和原子的。我發現可以利用這種性質來解決所面臨的問題。