[
  {
    "slug": "fix-markdown-pdf-mermaid-export-error",
    "kind": "article",
    "publishedOn": "2025-07-18",
    "author": "Z. Yuan",
    "locale": "zh-hant",
    "title": "修復 Markdown PDF Mermaid 匯出錯誤",
    "summary": "Markdown PDF 匯出 Mermaid 圖表失敗時，可先檢查腳本網址與版本，並逐種圖表確認 PDF。",
    "path": "/content/blog/zh-hant/fix-markdown-pdf-mermaid-export-error.e0883c6319c6.md",
    "imageSizes": {
      "/content/blog/assets/fix-markdown-pdf-mermaid-export-error/618d04abeda8.jpg": {
        "width": 2809,
        "height": 2099
      },
      "/content/blog/assets/fix-markdown-pdf-mermaid-export-error/2a400b3591ff.jpg": {
        "width": 1224,
        "height": 292
      },
      "/content/blog/assets/fix-markdown-pdf-mermaid-export-error/dbb0b39591b7.jpg": {
        "width": 1224,
        "height": 508
      }
    },
    "cover": "/content/blog/assets/fix-markdown-pdf-mermaid-export-error/766792adc6fd.jpg"
  },
  {
    "slug": "colorful-cli-with-ansi-escape-codes",
    "kind": "article",
    "publishedOn": "2025-04-12",
    "author": "Z. Yuan",
    "locale": "zh-hant",
    "title": "終端機不該只有黑與白",
    "summary": "從 ANSI Escape Code 的格式開始，替終端機輸出加上清楚的狀態與顏色。",
    "path": "/content/blog/zh-hant/colorful-cli-with-ansi-escape-codes.bdc18cb1a857.md",
    "imageSizes": {},
    "cover": "/content/blog/assets/colorful-cli-with-ansi-escape-codes/bf86e674e0c4.jpg"
  },
  {
    "slug": "fas-paper-roadmap",
    "kind": "article",
    "publishedOn": "2025-04-01",
    "author": "Z. Yuan",
    "locale": "zh-hant",
    "title": "Face Anti-Spoofing 技術地圖",
    "summary": "以四十篇研究筆記整理人臉防偽的資料集、方法與評估路線。",
    "path": "/content/blog/zh-hant/fas-paper-roadmap.ae5ffc904665.md",
    "imageSizes": {},
    "cover": "/content/blog/assets/fas-paper-roadmap/d2483bf19175.jpg"
  },
  {
    "slug": "download-from-google-drive-using-python",
    "kind": "article",
    "publishedOn": "2025-02-19",
    "author": "Z. Yuan",
    "locale": "zh-hant",
    "title": "使用 Python 從 Google Drive 下載檔案",
    "summary": "檢查 Google Drive 的確認頁、回應標頭與串流下載，並說明何時改用官方 API。",
    "path": "/content/blog/zh-hant/download-from-google-drive-using-python.50884a69263f.md",
    "imageSizes": {},
    "cover": "/content/blog/assets/download-from-google-drive-using-python/6e2af5a3dd4c.webp"
  },
  {
    "slug": "github-markdown-advanced-syntax",
    "kind": "article",
    "publishedOn": "2025-01-13",
    "author": "Z. Yuan",
    "locale": "zh-hant",
    "title": "好用的 github markdown 語法",
    "summary": "挑五種 GitHub Markdown 實用語法，讓 README 的進度、警告和補充說明更好讀。",
    "path": "/content/blog/zh-hant/github-markdown-advanced-syntax.c395af8276d3.md",
    "imageSizes": {
      "/content/blog/assets/github-markdown-advanced-syntax/f50d5b642be3.jpg": {
        "width": 1224,
        "height": 756
      }
    },
    "cover": "/content/blog/assets/github-markdown-advanced-syntax/f95adfcfd00e.webp"
  },
  {
    "slug": "extract-font-info-by-python",
    "kind": "article",
    "publishedOn": "2024-12-26",
    "author": "Z. Yuan",
    "locale": "zh-hant",
    "title": "取得字型檔案的資訊",
    "summary": "用 fontTools 讀取 TTF／OTF 的名稱、字元對應與排版度量。",
    "path": "/content/blog/zh-hant/extract-font-info-by-python.60b1ce7a204b.md",
    "imageSizes": {},
    "cover": "/content/blog/assets/extract-font-info-by-python/e46339160260.webp"
  },
  {
    "slug": "graph-convolutional-networks",
    "kind": "article",
    "publishedOn": "2024-12-05",
    "author": "Z. Yuan",
    "locale": "zh-hant",
    "title": "淺談圖卷積網路",
    "summary": "用三個節點算一次 GCN 訊息聚合，再對照 Transformer 的權重來源。",
    "path": "/content/blog/zh-hant/graph-convolutional-networks.5b847b3a8845.md",
    "imageSizes": {
      "/content/blog/assets/graph-convolutional-networks/e30e59d73288.jpg": {
        "width": 3721,
        "height": 1668
      }
    },
    "cover": "/content/blog/assets/graph-convolutional-networks/aae5b21e1ac5.webp"
  },
  {
    "slug": "fourier-transform",
    "kind": "article",
    "publishedOn": "2024-12-02",
    "author": "Z. Yuan",
    "locale": "zh-hant",
    "title": "淺談傅立葉轉換",
    "summary": "從正弦波、複數表示走到頻譜，搭配互動圖表理解傅立葉轉換。",
    "path": "/content/blog/zh-hant/fourier-transform.b3cd8d970df3.md",
    "imageSizes": {
      "/content/blog/assets/fourier-transform/60c45d0f6141.png": {
        "width": 1920,
        "height": 1978
      }
    },
    "cover": "/content/blog/assets/fourier-transform/2d5915c160f6.webp"
  },
  {
    "slug": "torch-layernorm-mismatch",
    "kind": "article",
    "publishedOn": "2024-08-20",
    "author": "Z. Yuan",
    "locale": "zh-hant",
    "title": "手算的 LayerNorm 數值不對？",
    "summary": "手算 LayerNorm 和 PyTorch 對不上時，從變異數的 correction 參數查起。",
    "path": "/content/blog/zh-hant/torch-layernorm-mismatch.65335f0c5566.md",
    "imageSizes": {},
    "cover": "/content/blog/assets/torch-layernorm-mismatch/77e51e1e30aa.webp"
  },
  {
    "slug": "impl-normalized-levenshtein-similarity",
    "kind": "article",
    "publishedOn": "2024-05-16",
    "author": "Z. Yuan",
    "locale": "zh-hant",
    "title": "實作 ANLS",
    "summary": "用 torchmetrics 計算標準化編輯距離，補上 ST-VQA 評分使用的 0.5 門檻。",
    "path": "/content/blog/zh-hant/impl-normalized-levenshtein-similarity.eb88c19a27f7.md",
    "imageSizes": {},
    "cover": "/content/blog/assets/impl-normalized-levenshtein-similarity/beabe67a25de.webp"
  },
  {
    "slug": "gosu-usage",
    "kind": "article",
    "publishedOn": "2024-02-03",
    "author": "Z. Yuan",
    "locale": "zh-hant",
    "title": "容器下的使用者切換工具：gosu",
    "summary": "在容器入口腳本用 gosu 切換身分，並檢查程序訊號與 TTY 的邊界。",
    "path": "/content/blog/zh-hant/gosu-usage.fa3a38853497.md",
    "imageSizes": {},
    "cover": "/content/blog/assets/gosu-usage/a18176ea0d8e.webp"
  },
  {
    "slug": "login-rtf8207w",
    "kind": "article",
    "publishedOn": "2023-09-04",
    "author": "Z. Yuan",
    "locale": "zh-hant",
    "title": "登入 RTF8207W 路由器",
    "summary": "辨識設備版本、查找管理位址，並檢查登錄前的網路與授權條件。",
    "path": "/content/blog/zh-hant/login-rtf8207w.03e2b3a3e455.md",
    "imageSizes": {
      "/content/blog/assets/login-rtf8207w/79386cc3d28a.jpg": {
        "width": 1184,
        "height": 688
      }
    },
    "cover": "/content/blog/assets/login-rtf8207w/c2a6a326421a.webp"
  },
  {
    "slug": "llm-long-context",
    "kind": "article",
    "publishedOn": "2026-10-26",
    "author": "Z. Yuan",
    "locale": "zh-hant",
    "title": "從 512 到百萬 Token：LLM 的上下文視窗是怎麼長大的？",
    "summary": "上下文上限補幾個零，模型就能讀完整本書嗎？位置要認得、計算要跑得完，最後還得考過閱讀測驗。百萬 Token 背後，每一步都有自己的麻煩。",
    "path": "/content/blog/zh-hant/llm-long-context.fb99f4bd06e5.md",
    "imageSizes": {
      "/content/blog/assets/llm-long-context/0e698e0187f6.png": {
        "width": 1697,
        "height": 995
      },
      "/content/blog/assets/llm-long-context/9922e97e5772.png": {
        "width": 725,
        "height": 680
      }
    },
    "cover": "/content/blog/assets/llm-long-context/4550d418eafb.webp"
  },
  {
    "slug": "llm-rag-rise-and-decline",
    "kind": "article",
    "publishedOn": "2026-11-08",
    "author": "Z. Yuan",
    "locale": "zh-hant",
    "title": "LLM 的 RAG 快速興起與衰亡",
    "summary": "Cursor 在 2025 年 11 月還說語意搜尋「目前必要」，2026 年 7 月就把語意索引換成 grep。沿著長上下文、KV cache 與會自己翻資料的 agent，看看早期 RAG 配方的哪些前提變了，以及找對資料為何仍然困難。",
    "path": "/content/blog/zh-hant/llm-rag-rise-and-decline.c69ad42a1f61.md",
    "imageSizes": {
      "/content/blog/assets/llm-rag-rise-and-decline/5b1c9e8a86b4.svg": {
        "width": 400,
        "height": 650
      },
      "/content/blog/assets/llm-rag-rise-and-decline/b8f8a0903431.svg": {
        "width": 400,
        "height": 570
      },
      "/content/blog/assets/llm-rag-rise-and-decline/5214c2151510.svg": {
        "width": 400,
        "height": 476
      },
      "/content/blog/assets/llm-rag-rise-and-decline/290f8ee01f86.svg": {
        "width": 400,
        "height": 680
      }
    },
    "cover": "/content/blog/assets/llm-rag-rise-and-decline/6245112b8af3.webp",
    "showCover": true
  }
]
