[
  {
    "slug": "fix-markdown-pdf-mermaid-export-error",
    "kind": "article",
    "publishedOn": "2025-07-18",
    "author": "Z. Yuan",
    "locale": "ja",
    "title": "Markdown PDF Mermaid のエクスポートエラー修正",
    "summary": "エクスポートエラーを修正し、Mermaid 図が正しく表示されるようにする。",
    "path": "/content/blog/ja/fix-markdown-pdf-mermaid-export-error.ddbbb9f0bdcd.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": "ja",
    "title": "ターミナルは黒と白だけではない",
    "summary": "ANSIエスケープコードを使って、CLIの出力もカラフルにしましょう。",
    "path": "/content/blog/ja/colorful-cli-with-ansi-escape-codes.18c41c7c0f53.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": "ja",
    "title": "Face Anti-Spoofing 技術マップ",
    "summary": "40 本の研究ノートから、顔なりすまし検知のデータセット、手法、評価を整理します。",
    "path": "/content/blog/ja/fas-paper-roadmap.c60255b98e1d.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": "ja",
    "title": "Python で Google Drive のファイルをダウンロード",
    "summary": "確認ページとレスポンスヘッダーを確認し、公式 API を使う場面も整理します。",
    "path": "/content/blog/ja/download-from-google-drive-using-python.06a9ab09a3b6.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": "ja",
    "title": "便利な GitHub Markdown の文法",
    "summary": "あまり知られていないが便利な文法について紹介します。",
    "path": "/content/blog/ja/github-markdown-advanced-syntax.859cbe22b04c.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": "ja",
    "title": "Python でフォントファイルの情報を取得",
    "summary": "fontTools で TTF／OTF の名前、文字マップ、組版メトリクスを確認します。",
    "path": "/content/blog/ja/extract-font-info-by-python.1f5264a1141e.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": "ja",
    "title": "グラフ畳み込みネットワークの概要",
    "summary": "グラフ畳み込みの簡単な紹介",
    "path": "/content/blog/ja/graph-convolutional-networks.ad173979534b.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": "ja",
    "title": "フーリエ変換の概要",
    "summary": "フーリエ変換の基本的な概念について簡単に紹介します。",
    "path": "/content/blog/ja/fourier-transform.8b3598726f8d.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": "ja",
    "title": "手計算したLayerNormの値が合わない？",
    "summary": "暇つぶしに計算してみたら、あれ、値が合わない？",
    "path": "/content/blog/ja/torch-layernorm-mismatch.57deff3bfc9c.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": "ja",
    "title": "ANLS を実装する",
    "summary": "torchmetrics で編集距離を正規化し、ST-VQA の閾値を適用します。",
    "path": "/content/blog/ja/impl-normalized-levenshtein-similarity.503fc51492cf.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": "ja",
    "title": "コンテナのユーザー切り替えツール gosu",
    "summary": "エントリーポイントで gosu を使い、シグナルと TTY の境界を確認します。",
    "path": "/content/blog/ja/gosu-usage.835b1cb0f105.md",
    "imageSizes": {},
    "cover": "/content/blog/assets/gosu-usage/a18176ea0d8e.webp"
  },
  {
    "slug": "login-rtf8207w",
    "kind": "article",
    "publishedOn": "2023-09-04",
    "author": "Z. Yuan",
    "locale": "ja",
    "title": "RTF8207W ルーターにログイン",
    "summary": "機器の版と管理アドレスを確認し、接続条件を整理します。",
    "path": "/content/blog/ja/login-rtf8207w.1678bddb614f.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": "ja",
    "title": "512から100万トークンへ：LLM のコンテキストはどう広がった？",
    "summary": "上限にゼロを足せば、小説を丸ごと読めるのでしょうか。位置を扱い、計算を終え、読解テストにも答える。100万トークンまでの道には、それぞれの難所があります。",
    "path": "/content/blog/ja/llm-long-context.1a6e6614aab0.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": "ja",
    "title": "LLMにおけるRAGの急速な台頭と衰退",
    "summary": "2025年11月には意味検索を「現時点では必要」としていたCursorが、2026年7月には意味検索の索引をgrepへ切り替えました。長いコンテキスト、KV cache、自分で資料を探すagentをたどり、初期RAGのどの前提が変わり、正しい資料を見つけることがなぜ今も難しいのかを考えます。",
    "path": "/content/blog/ja/llm-rag-rise-and-decline.c7f05ca404ed.md",
    "imageSizes": {
      "/content/blog/assets/llm-rag-rise-and-decline/99b0c6c434a2.svg": {
        "width": 400,
        "height": 650
      },
      "/content/blog/assets/llm-rag-rise-and-decline/2879d75279d8.svg": {
        "width": 400,
        "height": 570
      },
      "/content/blog/assets/llm-rag-rise-and-decline/d4de04b9b26b.svg": {
        "width": 400,
        "height": 476
      },
      "/content/blog/assets/llm-rag-rise-and-decline/a5a81387aad8.svg": {
        "width": 400,
        "height": 680
      }
    },
    "cover": "/content/blog/assets/llm-rag-rise-and-decline/6245112b8af3.webp",
    "showCover": true
  }
]
