分類彙整: 程式

嘗試整理 FreshRSS 的資訊,整理一份推薦閱讀摘要

嘗試透過資料來源、整理一些重要的資訊,整理範圍 2026-03-03 ~ 2026-03-10。這是第一篇整理的內容,流程是把平時訂閱的 RSS 內容(FreshRSS)挑選幾個分類產生一個列表,再丟到自行架設的 OpenWebUI 做文字編輯輸出。

看起來好像真的有這麼一回事,我就先來試試這樣的流程幾週看看!

本週必讀

  • 甲骨文正以未來的債務,建造昨天的資料中心 [產業]
    重點:OpenAI 終止與甲骨文擴建德州 Stargate 資料中心計畫,凸顯 AI 晶片迭代速度已超越傳統資料中心建設週期。
    推薦理由:這不只是單一合作案告吹,而是揭示「算力軍備競賽」的核心風險——當硬體世代更替快於基建折舊周期,資本支出與債務結構將成為科技巨頭的潛在壓力點,對整個 AI 基礎設施投資邏輯具指標意義。
  • ShinyHunters claims more high-profile victims in latest Salesforce customers data heist [安全]
    重點:駭客組織 ShinyHunters 宣稱入侵約 100 家知名企業並竊取 Salesforce 客戶資料,甚至濫用 Mandiant 開源工具發動攻擊。
    推薦理由:攻擊不僅波及供應鏈核心 SaaS 平台,還涉及開源安全工具被反向利用,對企業雲端依賴與開源治理帶來雙重警訊,是本週最具實質衝擊的資安事件。
  • 解鎖 Python 核心:移除全域直譯器鎖(GIL)後的硬體利用率與能耗影響 [技術]
    重點:研究比較標準版與無 GIL Python 在多種工作負載下的效能與能耗,指出移除 GIL 並非全面提升,需視場景權衡。
    推薦理由:無 GIL 是 Python 近年最重大的變革之一,這篇提供實證數據而非口號式討論,對後端服務、科學運算與基礎設施選型都有實際參考價值。
  • 根據自身憲章,OpenAI 應退出這場競賽 [產業]
    重點:作者指出 OpenAI 的商業化與競逐 AGI 的行為,可能已偏離其原始憲章中對安全與公共利益的承諾。
    推薦理由:在 AI 競賽白熱化之際,這篇文章從組織治理與價值承諾切入,提出尖銳質疑,有助理解 AI 巨頭在理想與資本壓力間的張力。
  • Bluesky 的新篇章 [市場]
    重點:Bluesky 用戶突破 4,000 萬後,CEO 交棒並引入具規模化經驗的高管接手營運。
    推薦理由:去中心化社交平台進入「規模化治理」階段,創辦人轉型與專業經理人進場,象徵產品理想走向商業現實,值得觀察其是否能避免傳統社群平台的路徑依賴。

選讀


本週關鍵字

算力基建風險、無 GIL Python、AI 治理張力、雲端供應鏈安全、即時生成模型

本週的共同主題是:當 AI 從模型競賽走向基建、治理與長期維運,真正的挑戰才正要開始。

mkdocs-material on Github Actions

Material for MkDocs 網站截圖
Material for MkDocs 是一個專為 MkDocs 設計的主題,都用來生成美觀且易於瀏覽的靜態文件網站。它結合了現代設計美學和豐富的功能,使得技術文檔不僅易於閱讀,還能夠輕鬆地進行導航和查找內容。這個主題提供了多種自訂選項,支援多語言以及進階搜尋功能,讓使用者能夠快速建立專業級的文件網站。對於開發人員和技術作家來說,Material for MkDocs 不僅提升了文件的可讀性,還大大簡化了文件的維護和展示工作。

滿喜歡用 Material for MkDocs 來產生文件網站,嚴格來說,這是一個建構在 MkDocs 之上的一個樣式套件,只是又加入了滿多設計樣式,相對於原始 MkDocs 來說在文件閱讀排版上更清晰。

以前常用 Sphinxrst 格式的純文字內容,後來 Markdown 成為主流,延伸出許多靜態網頁套件或是對應 Markdown 轉換其他文件格式的應用。我記得我是在使用 FastAPIPydantic 的技術文件注意到為什麼有一套很美的文件產生樣板,使用後就決定採用在當時做的專案,建構文件資訊給予其他貢獻者參與、閱讀。

以往所建立 Material for MkDocs 的文件專案,大部分都會將建立好的靜態網頁上傳到 AWS S3 存放,直接透過 AWS S3 的網站設定或是透過 nginx 路徑轉址合併到原有的網站中(如:/docs)。反而發現從來沒嘗試過直接用 Github Pages 來建立 Material for MkDocs 文件專案。

在 Github Actions 中有三種方式可以實現 Github Pages 的發佈,可以參考這份 yaml 檔案的描述。這裡用的套件管理是 uv。

MkDocs 有整合 Github Pages 的發佈,可以透過 mkdocs gh-deploy 來佈署,直接一行指令就可以完成。

- name: Build MkDocs
  run: |
      uv run mkdocs gh-deploy -b gh-pages -d ./docs

直接將產生出來的靜態檔案 ./docs 內的檔案上傳到 gh-pages 分支的頂層位置。

第二種方式是每次都從 main 建立一個新的分支 gh-pages 然後產生靜態文件後,強迫上傳覆蓋遠端原有的 gh-pages,這樣的方式是只會看到最新的文件提交紀錄。

- name: Build MkDocs
  run: |
      uv run mkdocs build -d ./docs
      git checkout -b gh-pages main
      git add -f ./docs
      git commit -m 'Deploy MkDocs to GitHub Pages'
      git push -f origin gh-pages

第三種方式是用 worktree 的方式將 gh-pages 建立在 ./docs,然後把靜態文件產生到 ./docs 中完成提交與推送。

- name: Build Mkdocs
  run: |
      git worktree add ./docs gh-pages
      rm -rf ./docs/*
      uv run mkdocs build -v -d ./docs
      cd ./docs
      if [ -n "$(git status --porcelain)" ]; then
        git add .
        git commit -a -m 'Deploy on ${{ github.ref_name }} ${{ github.sha }}'
        git push origin HEAD
      else
        echo "No changes to commit."
      fi

歷史紀錄

如果有使用 mkdocs-git-revision-date-localized-plugin 套件,應該會發現每次產生出來的文件建立日期與修改日期都會是一樣的,那是因為 Github Actions 在使用 actions/checkout 的時候不會擷取過往的 git 歷史提交,需要指定參數來提示擷取完整的 git 紀錄。

- uses: actions/checkout@v5
  with:
      fetch-depth: 0

以上,透過三種方式來建立 Material for MkDocs 靜態文件,看起來多行的指令是可以保留一些彈性操作的可能,例如在最後更換 og 預覽圖,當使用免費版本,都只能呈現預設的樣式。

Material for MkDocs 是一個很好快速建立靜態文件或是針對專案類型的說明網站,建立在 Github Pages 上也不用擔心主機安全性或流量問題,覺得這是一個值得投入瞭解與應用的靜態文件套件!