<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Josh's Dev Blog (中文)</title>
    <link>https://joshhong.vercel.app/zh</link>
    <description>Frontend engineering insights and personal development journey (中文版)</description>
    <language>zh-TW</language>
    <atom:link href="https://joshhong.vercel.app/api/feed?locale=zh" rel="self" type="application/rss+xml"/>
    <lastBuildDate>Mon, 15 Jun 2026 02:33:46 GMT</lastBuildDate>
    
    <item>
      <title><![CDATA[Cost #6：Batch API + Cache Write 優化 — 進階省錢的最後 30%]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-08-17_Cost_06_Batch_Cache_Write_Optimization</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-08-17_Cost_06_Batch_Cache_Write_Optimization</guid>
      <description><![CDATA[把前面 5 篇的基礎打好，月帳單通常已經砍 50%+。]]></description>
      <pubDate>Mon, 17 Aug 2026 00:00:00 GMT</pubDate>
      <category>Claude Code</category>
      <category>Cost</category>
      <category>Batch API</category>
      <category>Prompt Engineering</category>
    </item>
    <item>
      <title><![CDATA[Cost #5：Monthly Bill Audit 工作流 — 從 926 sessions 找出燒 token 的元兇]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-08-10_Cost_05_Monthly_Bill_Audit</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-08-10_Cost_05_Monthly_Bill_Audit</guid>
      <description><![CDATA[每個月看到 Claude 帳單金額會皺眉一下，但很少人真的去看「錢花在哪個 session」。]]></description>
      <pubDate>Mon, 10 Aug 2026 00:00:00 GMT</pubDate>
      <category>Claude Code</category>
      <category>Cost</category>
      <category>Audit</category>
      <category>Token Insights</category>
    </item>
    <item>
      <title><![CDATA[Cost #4：Pro / Max / API 哪個 ROI 高 — 用什麼 workload 該選什麼 plan]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-08-03_Cost_04_Pro_Max_API_ROI</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-08-03_Cost_04_Pro_Max_API_ROI</guid>
      <description><![CDATA[我這年付過 Claude Pro、Max、純 API 三種——各付過幾個月，每種有實際使用數據。]]></description>
      <pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate>
      <category>Claude Code</category>
      <category>Cost</category>
      <category>Subscription</category>
      <category>ROI</category>
    </item>
    <item>
      <title><![CDATA[Cost #3：Agentic Loop Token Bombing 防線 — Ralph 跑一夜燒 $200 怎麼防]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-07-27_Cost_03_Agentic_Loop_Token_Defense</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-07-27_Cost_03_Agentic_Loop_Token_Defense</guid>
      <description><![CDATA[Ralph Loop 跟 Auto-Research 的最大價值是「不睡覺替你工作」——但同樣理由，它也能不睡覺替你燒帳單。]]></description>
      <pubDate>Mon, 27 Jul 2026 00:00:00 GMT</pubDate>
      <category>Claude Code</category>
      <category>Cost</category>
      <category>Ralph Loop</category>
      <category>Auto-Research</category>
    </item>
    <item>
      <title><![CDATA[Cost #2：模型選擇經濟學 — Opus / Sonnet / Haiku 何時用哪個]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-07-20_Cost_02_Model_Selection_Economics</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-07-20_Cost_02_Model_Selection_Economics</guid>
      <description><![CDATA[很多人開 Claude Code 預設都用 Opus，覺得「最強的最好」。然後看到月帳單三位數美元發現不對勁。]]></description>
      <pubDate>Mon, 20 Jul 2026 00:00:00 GMT</pubDate>
      <category>Claude Code</category>
      <category>Cost</category>
      <category>Model Selection</category>
      <category>Routing</category>
    </item>
    <item>
      <title><![CDATA[Cost #1：Cache TTL Pro vs Max — 5 分鐘 vs 1 小時的物理影響]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-07-13_Cost_01_Cache_TTL_Deep_Dive</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-07-13_Cost_01_Cache_TTL_Deep_Dive</guid>
      <description><![CDATA[我那篇 Threads 講 Pro 跟 Max 的 cache TTL 差異得到 8139 views。底下留言一半是「真的差這麼多？」、「我不知道有這個」。]]></description>
      <pubDate>Mon, 13 Jul 2026 00:00:00 GMT</pubDate>
      <category>Claude Code</category>
      <category>Cost</category>
      <category>Cache</category>
      <category>經濟學</category>
    </item>
    <item>
      <title><![CDATA[Recipe #10：圖像 4 層路由管線 — 不要每張圖都重想用什麼工具]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-07-06_Recipe_10_Image_Routing_Pipeline</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-07-06_Recipe_10_Image_Routing_Pipeline</guid>
      <description><![CDATA[每次想做圖之前要問自己：用哪個工具？gti 還是 ComfyUI 還是直接 HTML？想 5 分鐘還沒動手。]]></description>
      <pubDate>Mon, 06 Jul 2026 00:00:00 GMT</pubDate>
      <category>Pipeline</category>
      <category>Image Generation</category>
      <category>ComfyUI</category>
      <category>Decision Tree</category>
    </item>
    <item>
      <title><![CDATA[Recipe #9：Wiki 知識管線 — raw → wiki → site 三層自動化]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-06-29_Recipe_09_Wiki_Knowledge_Pipeline</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-06-29_Recipe_09_Wiki_Knowledge_Pipeline</guid>
      <description><![CDATA[我累積了大量資料：對話 transcript、研究筆記、PDF 摘錄、訪談⋯⋯每次想找「上次提到的那個資料夾結構」都要翻 30 分鐘。]]></description>
      <pubDate>Mon, 29 Jun 2026 00:00:00 GMT</pubDate>
      <category>Pipeline</category>
      <category>Wiki</category>
      <category>Knowledge Management</category>
      <category>Static Site</category>
    </item>
    <item>
      <title><![CDATA[Recipe #8：多 Agent 編排管線 — PM + Simon + Giselle + 三 Teammate 怎麼跑]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-06-22_Recipe_08_Multi_Agent_Orchestration_Pipeline</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-06-22_Recipe_08_Multi_Agent_Orchestration_Pipeline</guid>
      <description><![CDATA[「這個 blog post 我要寫文章內文 + 配圖 SVG + 確保 sanitize-html 白名單沒擋 + 跑 evaluate script」——四件事，按順序做要 4 小時。]]></description>
      <pubDate>Mon, 22 Jun 2026 00:00:00 GMT</pubDate>
      <category>Pipeline</category>
      <category>Multi-Agent</category>
      <category>Worktree</category>
      <category>PM</category>
    </item>
    <item>
      <title><![CDATA[Recipe #7：Ralph Loop 管線 — Stop Hook 攔截 + 跨 session 自動接力]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-06-15_Recipe_07_Ralph_Loop_Pipeline</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-06-15_Recipe_07_Ralph_Loop_Pipeline</guid>
      <description><![CDATA[很多 task 不是「session 跑得完」的——例如「實作 X feature 並讓所有 e2e 測試通過」。一個 session 8 小時或 200K tokens 燒完還沒做完，你要重開 session 嗎？]]></description>
      <pubDate>Mon, 15 Jun 2026 00:00:00 GMT</pubDate>
      <category>Pipeline</category>
      <category>Ralph Loop</category>
      <category>Stop Hook</category>
      <category>自動迭代</category>
    </item>
    <item>
      <title><![CDATA[Recipe #6：Auto-Research 管線 — 把品味變成數字然後讓 Agent 自動推]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-06-08_Recipe_06_Auto_Research_Pipeline</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-06-08_Recipe_06_Auto_Research_Pipeline</guid>
      <description><![CDATA[某次想把 blog landing page 設計推到「夠看」的水準，但「夠看」這詞本身定義不出來。我設計、Claude 改、看一下、再說、改、看⋯⋯轉了半天，比 baseline 還醜。]]></description>
      <pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate>
      <category>Pipeline</category>
      <category>Auto-Research</category>
      <category>Karpathy</category>
      <category>自動優化</category>
    </item>
    <item>
      <title><![CDATA[六邊形 #6：風險意識 — Telegram 是 injection 入口、worktree 是 race condition 防線]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-06-05_Hexagon_06_Risk_Awareness</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-06-05_Hexagon_06_Risk_Awareness</guid>
      <description><![CDATA[最危險的 Agent 失控不是它做錯了什麼，是你還來不及看就做了。]]></description>
      <pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate>
      <category>AI Agent</category>
      <category>Security</category>
      <category>Permission</category>
      <category>風險意識</category>
    </item>
    <item>
      <title><![CDATA[Recipe #5：內容分發管線 — Threads → Blog → LinkedIn → X → YT 一魚多吃]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-06-01_Recipe_05_Content_Distribution_Pipeline</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-06-01_Recipe_05_Content_Distribution_Pipeline</guid>
      <description><![CDATA[每個 indie maker 都遇過：寫了一篇 blog，但 Threads 沒空想開頭，LinkedIn 跟 Twitter 各要重寫，YT 影片更不用提——一個內容花在分發的時間是創作的 5 倍。]]></description>
      <pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate>
      <category>Pipeline</category>
      <category>Content</category>
      <category>Remotion</category>
      <category>Building in Public</category>
    </item>
    <item>
      <title><![CDATA[六邊形 #5：指令設計 — Reference Fidelity 跟 Anti-Minimal 的兩條鐵律]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-05-29_Hexagon_05_Prompt_Craft</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-05-29_Hexagon_05_Prompt_Craft</guid>
      <description><![CDATA[最近一次失敗：給 Agent 一個 66-node 的 ComfyUI workflow，叫他「移植到新場景」。]]></description>
      <pubDate>Fri, 29 May 2026 00:00:00 GMT</pubDate>
      <category>AI Agent</category>
      <category>Prompt</category>
      <category>CLAUDE.md</category>
      <category>指令設計</category>
    </item>
    <item>
      <title><![CDATA[Recipe #4：求職管線 — 6 爬蟲 + Supabase + GPT enrich + 英語面試一條龍]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-05-25_Recipe_04_Job_Hunting_Pipeline</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-05-25_Recipe_04_Job_Hunting_Pipeline</guid>
      <description><![CDATA[我目標想找海外遠端工程職缺，但市面上的 job board 每天看 30 分鐘只能掃完 2-3 個站。]]></description>
      <pubDate>Mon, 25 May 2026 00:00:00 GMT</pubDate>
      <category>Pipeline</category>
      <category>Supabase</category>
      <category>求職</category>
      <category>MockMaster</category>
    </item>
    <item>
      <title><![CDATA[六邊形 #4：輸出驗證 — 把主觀感覺變成數字才能 chase]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-05-22_Hexagon_04_Output_Verification</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-05-22_Hexagon_04_Output_Verification</guid>
      <description><![CDATA[Agent 跑出來的 code 看起來都對。語法正確、邏輯通順、命名也合理。]]></description>
      <pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate>
      <category>AI Agent</category>
      <category>Quality Gate</category>
      <category>Auto-Research</category>
      <category>輸出驗證</category>
    </item>
    <item>
      <title><![CDATA[Recipe #3：VN 圖像管線 — 為什麼 66 個 node 一個都不能砍]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-05-18_Recipe_03_VN_Image_Pipeline</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-05-18_Recipe_03_VN_Image_Pipeline</guid>
      <description><![CDATA[最近做了一件蠢事：把一個 66 個 node 的 ComfyUI workflow 砍到 23 個 node，自稱 "minimal v8"，跑出來一塌糊塗。]]></description>
      <pubDate>Mon, 18 May 2026 00:00:00 GMT</pubDate>
      <category>Pipeline</category>
      <category>ComfyUI</category>
      <category>SDXL</category>
      <category>VN</category>
    </item>
    <item>
      <title><![CDATA[六邊形 #3：任務策略 — 知道什麼丟給 Agent、什麼自己做更快]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-05-15_Hexagon_03_Task_Strategy</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-05-15_Hexagon_03_Task_Strategy</guid>
      <description><![CDATA[把整個 feature 一口氣丟給 Agent，跑出來的東西半小時內就要砍掉重做——這幾乎是初學者必經的痛。]]></description>
      <pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate>
      <category>AI Agent</category>
      <category>Task Decomposition</category>
      <category>Ralph Loop</category>
      <category>任務策略</category>
    </item>
    <item>
      <title><![CDATA[Recipe #2：動畫生成管線 — gpt-image-2 keyframes + RIFE 補幀]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-05-11_Recipe_02_Animation_Pipeline</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-05-11_Recipe_02_Animation_Pipeline</guid>
      <description><![CDATA[要做一個 1 秒的揮手動畫。]]></description>
      <pubDate>Mon, 11 May 2026 00:00:00 GMT</pubDate>
      <category>Pipeline</category>
      <category>ComfyUI</category>
      <category>Animation</category>
      <category>RIFE</category>
    </item>
    <item>
      <title><![CDATA[六邊形 #2：迭代學習 — 把每個錯誤變成永久的規則]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-05-08_Hexagon_02_Iteration_Learning</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-05-08_Hexagon_02_Iteration_Learning</guid>
      <description><![CDATA[操作 Agent 最累的不是寫 prompt，是第三次糾正同樣的錯誤。]]></description>
      <pubDate>Fri, 08 May 2026 00:00:00 GMT</pubDate>
      <category>AI Agent</category>
      <category>Memory</category>
      <category>Feedback Loop</category>
      <category>迭代學習</category>
    </item>
    <item>
      <title><![CDATA[Recipe #1：影音翻譯管線 — Whisper + Claude 把日文 podcast 變雙語 markdown]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-05-04_Recipe_01_AV_Translation_Pipeline</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-05-04_Recipe_01_AV_Translation_Pipeline</guid>
      <description><![CDATA[之前每次想看一支日文 podcast / 講座 / live 的內容，要嘛硬聽要嘛找字幕，找不到就放棄。]]></description>
      <pubDate>Mon, 04 May 2026 00:00:00 GMT</pubDate>
      <category>Pipeline</category>
      <category>Whisper</category>
      <category>Claude</category>
      <category>翻譯</category>
    </item>
    <item>
      <title><![CDATA[六邊形 #1：上下文管理 — 讓 Agent 30 秒進入狀況]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-05-01_Hexagon_01_Context_Management</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-05-01_Hexagon_01_Context_Management</guid>
      <description><![CDATA[Agent 每次開新 session 都是失憶狀態。這不是 bug，是物理事實——context window 燒光就是燒光。]]></description>
      <pubDate>Fri, 01 May 2026 00:00:00 GMT</pubDate>
      <category>AI Agent</category>
      <category>Claude Code</category>
      <category>Memory</category>
      <category>上下文管理</category>
    </item>
    <item>
      <title><![CDATA[SVG 動畫的 Sweet Spot：7 個真該用，4 個根本不該碰]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-04-25_SVG_Animation_Sweet_Spot</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-04-25_SVG_Animation_Sweet_Spot</guid>
      <description><![CDATA[最近給這個部落格做了一個「蛇吃 heatmap」的動畫——蛇在 22×7 的 contribution 格子上遊走，碰到活躍的格子就吃掉，1.5 秒後 regen。做完之後我在想一件事：]]></description>
      <pubDate>Sat, 25 Apr 2026 00:00:00 GMT</pubDate>
      <category>SVG</category>
      <category>前端</category>
      <category>動畫</category>
      <category>UI</category>
    </item>
    <item>
      <title><![CDATA[AI Agent 時代的工程師能力：六邊形戰士養成指南]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-04-22_AI_Agent_Engineer_Hexagon</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-04-22_AI_Agent_Engineer_Hexagon</guid>
      <description><![CDATA[Harness Engineering 談的是系統設計：怎麼建構 Agent 周圍的約束和反饋機制。但系統建好了，還是要有人操作。這篇談的是另一半：工程師駕馭 AI Agent 的即時操作能力。]]></description>
      <pubDate>Wed, 22 Apr 2026 00:00:00 GMT</pubDate>
      <category>AI Agent</category>
      <category>Claude Code</category>
      <category>工程師能力</category>
      <category>職涯發展</category>
    </item>
    <item>
      <title><![CDATA[AI 驅動開發的三個工具：Impeccable、Auto-Research 和 Ralph]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-04-16_Three_Tools_for_AI_Driven_Development</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-04-16_Three_Tools_for_AI_Driven_Development</guid>
      <description><![CDATA[前言]]></description>
      <pubDate>Thu, 16 Apr 2026 00:00:00 GMT</pubDate>
      <category>AI Agent</category>
      <category>Claude Code</category>
      <category>Automation</category>
      <category>DevTools</category>
      <category>Guides</category>
    </item>
    <item>
      <title><![CDATA[三合一組合拳：用 Impeccable + Auto-Research + Ralph 重建我的部落格]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-04-16_Impeccable_AutoResearch_Ralph_Combo</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-04-16_Impeccable_AutoResearch_Ralph_Combo</guid>
      <description><![CDATA[背景]]></description>
      <pubDate>Thu, 16 Apr 2026 00:00:00 GMT</pubDate>
      <category>AI Agent</category>
      <category>Claude Code</category>
      <category>Automation</category>
      <category>DevTools</category>
    </item>
    <item>
      <title><![CDATA[Google Gemini Flash Image research]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-04-16_Google_Gemini_Flash_Image_research</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-04-16_Google_Gemini_Flash_Image_research</guid>
      <description><![CDATA[Google 命名系統很亂，先把名字搞清楚。]]></description>
      <pubDate>Thu, 16 Apr 2026 00:00:00 GMT</pubDate>
      <category>AI Agent</category>
      <category>Claude Code</category>
    </item>
    <item>
      <title><![CDATA[Harness Engineering：AI Agent 工作環境設計指南]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-04-10_harness-engineering-ai-agent</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-04-10_harness-engineering-ai-agent</guid>
      <description><![CDATA[Harness Engineering：讓 AI agent 能夠長時間、穩定、可驗證地自主工作的環境設計方法。模型是引擎，harness 是讓引擎能跑的一切其他東西。]]></description>
      <pubDate>Fri, 10 Apr 2026 00:00:00 GMT</pubDate>
      <category>Claude Code</category>
      <category>AI Agent</category>
      <category>工作流程</category>
    </item>
    <item>
      <title><![CDATA[Claude Code Prompt Caching 機制整理：Pro vs Max TTL 完整數據]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-04-10_claude-code-cache-ttl-pro-vs-max</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-04-10_claude-code-cache-ttl-pro-vs-max</guid>
      <description><![CDATA[每個 turn，Claude Code 把整段 context 重送給模型。Prompt caching 讓相同 prefix 只付 1/10 費用，TTL 決定 cache 能撐多久。]]></description>
      <pubDate>Fri, 10 Apr 2026 00:00:00 GMT</pubDate>
      <category>Claude Code</category>
      <category>AI工具</category>
      <category>Token</category>
    </item>
    <item>
      <title><![CDATA[我用 AI 團隊蓋了一間像素風虛擬辦公室]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-03-25_Virtual_Office_Pixel_Dashboard</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-03-25_Virtual_Office_Pixel_Dashboard</guid>
      <description><![CDATA[看到有些 OpenClaw 玩家做了像素風的 AI Office dashboard，覺得蠻可愛，就想說自己也來弄一個。]]></description>
      <pubDate>Wed, 25 Mar 2026 00:00:00 GMT</pubDate>
      <category>AI</category>
      <category>Side Project</category>
      <category>Pixel Art</category>
      <category>OpenClaw</category>
      <category>Build Log</category>
    </item>
    <item>
      <title><![CDATA[Automation Playbook: OpenClaw 記憶體管理]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-02-13_Playbook_Memory_Management</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-02-13_Playbook_Memory_Management</guid>
      <description><![CDATA[目標
為 OpenClaw agents 建立持久、可查詢的記憶系統，在 sessions 和 compactions 之間保持資訊延續。]]></description>
      <pubDate>Fri, 13 Feb 2026 00:00:00 GMT</pubDate>
      <category>Automation</category>
      <category>Playbook</category>
      <category>OpenClaw</category>
      <category>Memory</category>
    </item>
    <item>
      <title><![CDATA[OpenClaw Field Notes 合集：4 大主題、13 個踩過的坑]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-02-13_OpenClaw_Field_Notes_Collection</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-02-13_OpenClaw_Field_Notes_Collection</guid>
      <description><![CDATA[背景
這份合集把 OpenClaw 維運期間累積的 Field Notes 整併在一起，按主題分成四組：Gmail OAuth 寄送、Session Routing、Agent Config Schema、Bootstrap 檔案與 Compaction。每一條都是真的踩過、留下訊息或錯誤碼可對照的案例。內容刻意保留原始 symptom / 原因 / 修復格式，方便日後遇到同樣問題直接用關鍵字搜到。]]></description>
      <pubDate>Fri, 13 Feb 2026 00:00:00 GMT</pubDate>
      <category>OpenClaw</category>
      <category>Field Notes</category>
      <category>Gmail</category>
      <category>OAuth</category>
      <category>Sessions</category>
      <category>Config</category>
    </item>
    <item>
      <title><![CDATA[OpenClaw Field Notes：Auto-Update 後的 Cron Jobs 修復]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-02-12_OpenClaw_Field_Notes_Cron_Jobs_Auto_Update_Fix</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-02-12_OpenClaw_Field_Notes_Cron_Jobs_Auto_Update_Fix</guid>
      <description><![CDATA[背景]]></description>
      <pubDate>Thu, 12 Feb 2026 00:00:00 GMT</pubDate>
      <category>OpenClaw</category>
      <category>Cron</category>
      <category>Field Notes</category>
      <category>Config</category>
    </item>
    <item>
      <title><![CDATA[Automation Playbook：Cron 環境用 Python 發送 Gmail（OAuth）]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-02-12_Automation_Playbook_Gmail_OAuth_in_Cron</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-02-12_Automation_Playbook_Gmail_OAuth_in_Cron</guid>
      <description><![CDATA[問題]]></description>
      <pubDate>Thu, 12 Feb 2026 00:00:00 GMT</pubDate>
      <category>Automation</category>
      <category>Gmail</category>
      <category>OAuth</category>
      <category>Python</category>
      <category>Cron</category>
      <category>Playbook</category>
    </item>
    <item>
      <title><![CDATA[Automation Playbook：新 Agent Onboarding SOP]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-02-09_New_Agent_Onboarding_SOP</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-02-09_New_Agent_Onboarding_SOP</guid>
      <description><![CDATA[目標
建立一個完整可用的 OpenClaw agent（身份檔案、訊息管道、授權與健康檢查）。本 Playbook 提供詳細的步驟說明、範例與故障排除。]]></description>
      <pubDate>Mon, 09 Feb 2026 00:00:00 GMT</pubDate>
      <category>Automation</category>
      <category>Playbook</category>
      <category>OpenClaw</category>
      <category>Onboarding</category>
    </item>
    <item>
      <title><![CDATA[Day 18: Skills 系統（如何寫自己的 skill）]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-02-01_Learn_day18-skills</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-02-01_Learn_day18-skills</guid>
      <description><![CDATA[概念]]></description>
      <pubDate>Sun, 01 Feb 2026 00:00:00 GMT</pubDate>
      <category>AI Agent</category>
      <category>OpenClaw Deep Dive</category>
      <category>OpenClaw</category>
    </item>
    <item>
      <title><![CDATA[Day 17: Logging 與 Debug]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-01-31_Learn_day17-logging</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-01-31_Learn_day17-logging</guid>
      <description><![CDATA[概念]]></description>
      <pubDate>Sat, 31 Jan 2026 00:00:00 GMT</pubDate>
      <category>AI Agent</category>
      <category>LLM</category>
      <category>OpenClaw Deep Dive</category>
      <category>Architecture</category>
    </item>
    <item>
      <title><![CDATA[Day 16: Provider 系統（OpenAI, Anthropic, Google）]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-01-30_Learn_day16-providers</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-01-30_Learn_day16-providers</guid>
      <description><![CDATA[概念]]></description>
      <pubDate>Fri, 30 Jan 2026 00:00:00 GMT</pubDate>
      <category>AI Agent</category>
      <category>LLM</category>
      <category>OpenClaw Deep Dive</category>
      <category>Architecture</category>
    </item>
    <item>
      <title><![CDATA[Day 15: Hooks 系統]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-01-29_Learn_day15-hooks</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-01-29_Learn_day15-hooks</guid>
      <description><![CDATA[概念]]></description>
      <pubDate>Thu, 29 Jan 2026 00:00:00 GMT</pubDate>
      <category>AI Agent</category>
      <category>LLM</category>
      <category>OpenClaw Deep Dive</category>
      <category>Automation</category>
    </item>
    <item>
      <title><![CDATA[Day 14: Security（sandbox, tool policies, SSRF protection）]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-01-28_Learn_day14-security</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-01-28_Learn_day14-security</guid>
      <description><![CDATA[概念]]></description>
      <pubDate>Wed, 28 Jan 2026 00:00:00 GMT</pubDate>
      <category>AI Agent</category>
      <category>LLM</category>
      <category>OpenClaw Deep Dive</category>
      <category>Security</category>
    </item>
    <item>
      <title><![CDATA[Speak2Type：一個 Windows 的全域語音輸入小工具]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-01-27_speak2type</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-01-27_speak2type</guid>
      <description><![CDATA[想要提高大部分非核心思考的 input 量，不要浪費時間在打字上。所以做了一個語音的輸入工具，按熱鍵、說話、文字直接貼到我正在使用的視窗，支援各種不同的程式。]]></description>
      <pubDate>Tue, 27 Jan 2026 00:00:00 GMT</pubDate>
      <category>Windows</category>
      <category>Side Project</category>
      <category>Tool</category>
    </item>
    <item>
      <title><![CDATA[Day 13: Commands 系統]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-01-27_Learn_day13-commands</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-01-27_Learn_day13-commands</guid>
      <description><![CDATA[概念]]></description>
      <pubDate>Tue, 27 Jan 2026 00:00:00 GMT</pubDate>
      <category>AI Agent</category>
      <category>LLM</category>
      <category>OpenClaw Deep Dive</category>
      <category>Tool Use</category>
    </item>
    <item>
      <title><![CDATA[Day 12: Browser Control（CDP, profiles, snapshots）]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-01-26_Learn_day12-browser</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-01-26_Learn_day12-browser</guid>
      <description><![CDATA[概念]]></description>
      <pubDate>Mon, 26 Jan 2026 00:00:00 GMT</pubDate>
      <category>AI Agent</category>
      <category>LLM</category>
      <category>OpenClaw Deep Dive</category>
      <category>Tool Use</category>
    </item>
    <item>
      <title><![CDATA[Day 11: Subagents（sessions_spawn）]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-01-25_Learn_day11-subagents</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-01-25_Learn_day11-subagents</guid>
      <description><![CDATA[概念]]></description>
      <pubDate>Sun, 25 Jan 2026 00:00:00 GMT</pubDate>
      <category>AI Agent</category>
      <category>LLM</category>
      <category>OpenClaw Deep Dive</category>
      <category>Architecture</category>
    </item>
    <item>
      <title><![CDATA[Day 10: Auto-reply 機制（heartbeat, routing）]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-01-24_Learn_day10-heartbeat</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-01-24_Learn_day10-heartbeat</guid>
      <description><![CDATA[概念]]></description>
      <pubDate>Sat, 24 Jan 2026 00:00:00 GMT</pubDate>
      <category>AI Agent</category>
      <category>LLM</category>
      <category>OpenClaw Deep Dive</category>
      <category>Automation</category>
    </item>
    <item>
      <title><![CDATA[Day 9: Context 管理（workspace files, project context）]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-01-23_Learn_day09-context</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-01-23_Learn_day09-context</guid>
      <description><![CDATA[概念]]></description>
      <pubDate>Fri, 23 Jan 2026 00:00:00 GMT</pubDate>
      <category>AI Agent</category>
      <category>LLM</category>
      <category>OpenClaw Deep Dive</category>
      <category>Context Management</category>
    </item>
    <item>
      <title><![CDATA[Day 8: Config 系統（openclaw.json, agents, bindings）]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-01-22_Learn_day08-config</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-01-22_Learn_day08-config</guid>
      <description><![CDATA[概念]]></description>
      <pubDate>Thu, 22 Jan 2026 00:00:00 GMT</pubDate>
      <category>AI Agent</category>
      <category>LLM</category>
      <category>OpenClaw Deep Dive</category>
      <category>Architecture</category>
    </item>
    <item>
      <title><![CDATA[Day 7: Memory 系統（compaction, memory-flush）]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-01-21_Learn_day07-memory</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-01-21_Learn_day07-memory</guid>
      <description><![CDATA[概念]]></description>
      <pubDate>Wed, 21 Jan 2026 00:00:00 GMT</pubDate>
      <category>AI Agent</category>
      <category>LLM</category>
      <category>OpenClaw Deep Dive</category>
      <category>Memory</category>
    </item>
    <item>
      <title><![CDATA[Day 6: Cron 系統（schedule, payload, delivery）]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-01-20_Learn_day06-cron</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-01-20_Learn_day06-cron</guid>
      <description><![CDATA[概念]]></description>
      <pubDate>Tue, 20 Jan 2026 00:00:00 GMT</pubDate>
      <category>AI Agent</category>
      <category>LLM</category>
      <category>OpenClaw Deep Dive</category>
      <category>Automation</category>
    </item>
    <item>
      <title><![CDATA[Day 5: Plugin 架構（Telegram/WhatsApp 如何整合）]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-01-19_Learn_day05-plugins</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-01-19_Learn_day05-plugins</guid>
      <description><![CDATA[概念]]></description>
      <pubDate>Mon, 19 Jan 2026 00:00:00 GMT</pubDate>
      <category>AI Agent</category>
      <category>LLM</category>
      <category>OpenClaw Deep Dive</category>
      <category>Plugins</category>
    </item>
    <item>
      <title><![CDATA[Day 4: Tool 系統（exec, browser, message 等）]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-01-18_Learn_day04-tools</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-01-18_Learn_day04-tools</guid>
      <description><![CDATA[概念]]></description>
      <pubDate>Sun, 18 Jan 2026 00:00:00 GMT</pubDate>
      <category>AI Agent</category>
      <category>LLM</category>
      <category>OpenClaw Deep Dive</category>
      <category>Tool Use</category>
    </item>
    <item>
      <title><![CDATA[Day 3: Session 機制（isolated vs main）]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-01-17_Learn_day03-session</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-01-17_Learn_day03-session</guid>
      <description><![CDATA[概念]]></description>
      <pubDate>Sat, 17 Jan 2026 00:00:00 GMT</pubDate>
      <category>AI Agent</category>
      <category>LLM</category>
      <category>OpenClaw Deep Dive</category>
      <category>Context Management</category>
    </item>
    <item>
      <title><![CDATA[Day 2: Agent 系統（處理訊息的核心邏輯）]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-01-16_Learn_day02-agent-system</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-01-16_Learn_day02-agent-system</guid>
      <description><![CDATA[概念]]></description>
      <pubDate>Fri, 16 Jan 2026 00:00:00 GMT</pubDate>
      <category>AI Agent</category>
      <category>LLM</category>
      <category>OpenClaw Deep Dive</category>
      <category>Architecture</category>
    </item>
    <item>
      <title><![CDATA[Day 1: OpenClaw 整體架構]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-01-15_Learn_day01-architecture</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-01-15_Learn_day01-architecture</guid>
      <description><![CDATA[概念]]></description>
      <pubDate>Thu, 15 Jan 2026 00:00:00 GMT</pubDate>
      <category>AI Agent</category>
      <category>LLM</category>
      <category>OpenClaw Deep Dive</category>
      <category>Architecture</category>
    </item>
    <item>
      <title><![CDATA[12. Token 優化與成本控制：省錢的藝術]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-01-12_Learn_12-cost-optimization</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-01-12_Learn_12-cost-optimization</guid>
      <description><![CDATA[LLM API 的成本結構]]></description>
      <pubDate>Mon, 12 Jan 2026 00:00:00 GMT</pubDate>
      <category>AI Agent</category>
      <category>LLM</category>
      <category>AI Agent Fundamentals</category>
      <category>Cost Optimization</category>
    </item>
    <item>
      <title><![CDATA[11. Trust Boundary：什麼是可信的、什麼不是]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-01-11_Learn_11-trust-boundary</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-01-11_Learn_11-trust-boundary</guid>
      <description><![CDATA[為什麼要區分信任邊界？]]></description>
      <pubDate>Sun, 11 Jan 2026 00:00:00 GMT</pubDate>
      <category>AI Agent</category>
      <category>LLM</category>
      <category>AI Agent Fundamentals</category>
      <category>Security</category>
    </item>
    <item>
      <title><![CDATA[10. Embedding 與向量搜尋：Agent 的長期記憶]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-01-10_Learn_10-embeddings</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-01-10_Learn_10-embeddings</guid>
      <description><![CDATA[Context 的限制]]></description>
      <pubDate>Sat, 10 Jan 2026 00:00:00 GMT</pubDate>
      <category>AI Agent</category>
      <category>LLM</category>
      <category>AI Agent Fundamentals</category>
      <category>Embeddings</category>
    </item>
    <item>
      <title><![CDATA[09. Provider 抽象層：OpenClaw 如何支援多個 LLM]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-01-09_Learn_09-provider-abstraction</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-01-09_Learn_09-provider-abstraction</guid>
      <description><![CDATA[問題：每個 LLM API 都不一樣]]></description>
      <pubDate>Fri, 09 Jan 2026 00:00:00 GMT</pubDate>
      <category>AI Agent</category>
      <category>LLM</category>
      <category>AI Agent Fundamentals</category>
      <category>Architecture</category>
    </item>
    <item>
      <title><![CDATA[08. Session 狀態機：Agent 對話的生命週期]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-01-08_Learn_08-session-state</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-01-08_Learn_08-session-state</guid>
      <description><![CDATA[什麼是 Session？]]></description>
      <pubDate>Thu, 08 Jan 2026 00:00:00 GMT</pubDate>
      <category>AI Agent</category>
      <category>LLM</category>
      <category>AI Agent Fundamentals</category>
      <category>Context Management</category>
    </item>
    <item>
      <title><![CDATA[07. Context Management：為什麼 Agent 需要「遺忘」]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-01-07_Learn_07-context-management</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-01-07_Learn_07-context-management</guid>
      <description><![CDATA[問題：Context Window 會滿]]></description>
      <pubDate>Wed, 07 Jan 2026 00:00:00 GMT</pubDate>
      <category>AI Agent</category>
      <category>LLM</category>
      <category>AI Agent Fundamentals</category>
      <category>Context Management</category>
    </item>
    <item>
      <title><![CDATA[06. ReAct 模式：Agent 的思考循環]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-01-06_Learn_06-react-pattern</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-01-06_Learn_06-react-pattern</guid>
      <description><![CDATA[什麼是 ReAct？]]></description>
      <pubDate>Tue, 06 Jan 2026 00:00:00 GMT</pubDate>
      <category>AI Agent</category>
      <category>LLM</category>
      <category>AI Agent Fundamentals</category>
      <category>Architecture</category>
    </item>
    <item>
      <title><![CDATA[05. System Prompt 的地位：為什麼它能控制 AI 行為]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-01-05_Learn_05-system-prompt</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-01-05_Learn_05-system-prompt</guid>
      <description><![CDATA[System Prompt 是什麼？]]></description>
      <pubDate>Mon, 05 Jan 2026 00:00:00 GMT</pubDate>
      <category>AI Agent</category>
      <category>LLM</category>
      <category>AI Agent Fundamentals</category>
      <category>Prompt Engineering</category>
    </item>
    <item>
      <title><![CDATA[04. Temperature 與 Top-p：控制 LLM 的「創意」]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-01-04_Learn_04-temperature</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-01-04_Learn_04-temperature</guid>
      <description><![CDATA[LLM 如何選擇下一個 Token？]]></description>
      <pubDate>Sun, 04 Jan 2026 00:00:00 GMT</pubDate>
      <category>AI Agent</category>
      <category>LLM</category>
      <category>AI Agent Fundamentals</category>
      <category>Prompt Engineering</category>
    </item>
    <item>
      <title><![CDATA[03. Streaming 原理：為什麼可以邊打邊出字]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-01-03_Learn_03-streaming</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-01-03_Learn_03-streaming</guid>
      <description><![CDATA[問題：LLM 回應很慢]]></description>
      <pubDate>Sat, 03 Jan 2026 00:00:00 GMT</pubDate>
      <category>AI Agent</category>
      <category>LLM</category>
      <category>AI Agent Fundamentals</category>
      <category>Streaming</category>
    </item>
    <item>
      <title><![CDATA[02. Tool Calling 協議：Agent 能「動手」的原理]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-01-02_Learn_02-tool-calling</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-01-02_Learn_02-tool-calling</guid>
      <description><![CDATA[為什麼 LLM 需要 Tools？]]></description>
      <pubDate>Fri, 02 Jan 2026 00:00:00 GMT</pubDate>
      <category>AI Agent</category>
      <category>LLM</category>
      <category>AI Agent Fundamentals</category>
      <category>Tool Use</category>
    </item>
    <item>
      <title><![CDATA[01. Token 機制：LLM 的計量單位]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2026-01-01_Learn_01-tokens</link>
      <guid>https://joshhong.vercel.app/zh/posts/2026-01-01_Learn_01-tokens</guid>
      <description><![CDATA[為什麼要先懂 Token？]]></description>
      <pubDate>Thu, 01 Jan 2026 00:00:00 GMT</pubDate>
      <category>AI Agent</category>
      <category>LLM</category>
      <category>AI Agent Fundamentals</category>
    </item>
    <item>
      <title><![CDATA[從登入狀態學 Web 儲存策略：Cookie、Session、JWT 的實戰指南]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2025-08-31_Web_Authentication_Storage_Strategy</link>
      <guid>https://joshhong.vercel.app/zh/posts/2025-08-31_Web_Authentication_Storage_Strategy</guid>
      <description><![CDATA[「為什麼我明明勾選了『記住我』，下次還是要重新登入？」「為什麼有些網站可以保持登入 30 天，有些關掉瀏覽器就登出？」這些看似簡單的問題，背後涉及了 Web 開發中最重要的議題之一：如何正確地管理登入狀態。]]></description>
      <pubDate>Sun, 31 Aug 2025 00:00:00 GMT</pubDate>
      <category>Auth</category>
      <category>Security</category>
      <category>JavaScript</category>
    </item>
    <item>
      <title><![CDATA[Memory Cache 實作：測試快取效果]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2025-08-31_Memory_Cache_SSG_Comparison</link>
      <guid>https://joshhong.vercel.app/zh/posts/2025-08-31_Memory_Cache_SSG_Comparison</guid>
      <description><![CDATA[把 Blog 改成 SSG 後想進一步測試看看 Memory Cache 的效果。本文記錄實作過程與實測結果。]]></description>
      <pubDate>Sun, 31 Aug 2025 00:00:00 GMT</pubDate>
      <category>Cache</category>
      <category>Performance</category>
      <category>Next.js</category>
    </item>
    <item>
      <title><![CDATA[Port 管理速查表：開發者必備的網路診斷指令]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2025-08-30_Port_Management_Cheat_Sheet</link>
      <guid>https://joshhong.vercel.app/zh/posts/2025-08-30_Port_Management_Cheat_Sheet</guid>
      <description><![CDATA[開發過程中經常遇到 "Port already in use" 錯誤，或需要診斷網路連線問題。這份速查表整理了各平台常用的 Port 管理指令，幫助快速解決問題。]]></description>
      <pubDate>Sat, 30 Aug 2025 00:00:00 GMT</pubDate>
      <category>DevTools</category>
    </item>
    <item>
      <title><![CDATA[Next.js 渲染模式完全指南：SSR/CSR/SSG/ISR]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2025-08-24_NextJS_Rendering_Patterns_Complete_Guide</link>
      <guid>https://joshhong.vercel.app/zh/posts/2025-08-24_NextJS_Rendering_Patterns_Complete_Guide</guid>
      <description><![CDATA[這是部落格使用 SSG 重構後，自己針對 Next.js 中見過的渲染方式做整理紀錄。]]></description>
      <pubDate>Sun, 24 Aug 2025 00:00:00 GMT</pubDate>
      <category>Next.js</category>
      <category>SSG</category>
      <category>SSR</category>
      <category>Rendering</category>
      <category>Performance</category>
    </item>
    <item>
      <title><![CDATA[Next.js 部落格 SSG 實作：從 SSR 到 SSG ]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2025-08-23_SSG_Implementation_Next_Blog</link>
      <guid>https://joshhong.vercel.app/zh/posts/2025-08-23_SSG_Implementation_Next_Blog</guid>
      <description><![CDATA[最近重構了個人部落格的渲染架構，從原本的 Server-Side Rendering (SSR) 改為 Static Site Generation (SSG)，以此記錄。]]></description>
      <pubDate>Sat, 23 Aug 2025 00:00:00 GMT</pubDate>
      <category>Next.js</category>
      <category>SSG</category>
      <category>SSR</category>
      <category>Performance</category>
    </item>
    <item>
      <title><![CDATA[XSS防護實戰：從「改 100 個檔案」到「一個攔截器」的經驗]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2025-08-01_XSS_Protection_Architecture_Refactoring</link>
      <guid>https://joshhong.vercel.app/zh/posts/2025-08-01_XSS_Protection_Architecture_Refactoring</guid>
      <description><![CDATA[最近接到一個需求：專案所有內部 API 調用都要加上 XSS 檢查，防止惡意腳本通過 API 傳遞到後端。看到這個需求時，我第一個反應是「好吧，那就寫個函數然後每個 route 都呼叫一下」。]]></description>
      <pubDate>Fri, 01 Aug 2025 00:00:00 GMT</pubDate>
      <category>Security</category>
      <category>XSS</category>
      <category>JavaScript</category>
      <category>API</category>
    </item>
    <item>
      <title><![CDATA[前端 gRPC 整合實戰：從 REST API 到 gRPC 的完整遷移方案]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2025-08-01_Frontend_gRPC_Integration_Implementation</link>
      <guid>https://joshhong.vercel.app/zh/posts/2025-08-01_Frontend_gRPC_Integration_Implementation</guid>
      <description><![CDATA[前陣子在工作上接到了一個有趣的任務：將某些 route 從 REST API 改為 gRPC 呼叫，作為技術 POC 。整個實作過程涵蓋了從環境設置、Protocol Buffers 編譯、Route 改寫、錯誤處理到 Mock Server 測試的完整流程。]]></description>
      <pubDate>Fri, 01 Aug 2025 00:00:00 GMT</pubDate>
      <category>gRPC</category>
      <category>TypeScript</category>
      <category>Next.js</category>
      <category>API</category>
    </item>
    <item>
      <title><![CDATA[如何建立一個具有記憶能力，帶有大量上下文感知的聊天機器人（VideoSummarizer 專案）]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2025-06-22_video_summarizer_chatbot</link>
      <guid>https://joshhong.vercel.app/zh/posts/2025-06-22_video_summarizer_chatbot</guid>
      <description><![CDATA[這篇文章紀錄的是，我如何在 videoSummarizer 的每支影片頁面下方，加入一個能記憶上下文、根據影片內容回答問題的聊天機器人，讓我能像用 ChatGPT 一樣做主題式的討論：]]></description>
      <pubDate>Sun, 22 Jun 2025 00:00:00 GMT</pubDate>
      <category>AI</category>
      <category>Next.js</category>
      <category>API</category>
      <category>Node.js</category>
    </item>
    <item>
      <title><![CDATA[30 秒見真章 — 我自製的 YouTube 管理・摘要・筆記工具《VideoSummarizer》]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2025-06-21_Video_summarizer_project</link>
      <guid>https://joshhong.vercel.app/zh/posts/2025-06-21_Video_summarizer_project</guid>
      <description><![CDATA[我的 YouTube「稍後觀看」中的影片大概超過 50 則吧，總是刷到有些東西有興趣，但當下沒時間看，或者覺得是標題黨，就會先收到稍後觀看，然後久了就堆積如山再也不會去看。這些大都是非娛樂性質的影片(娛樂性的總是當下觀看 XD)。後來覺得需要一個工具去快速擷取影片資訊，判斷是否值得花時間去看這一隻 10-20 分鐘的影片，並有效濃縮有用的重點和自己的想法，所以才有了這個專案。這次用的是 Supabase (因為 mongoDB free tier 爆了 QQ)。]]></description>
      <pubDate>Sat, 21 Jun 2025 00:00:00 GMT</pubDate>
      <category>Next.js</category>
      <category>AI</category>
      <category>Node.js</category>
      <category>Video</category>
    </item>
    <item>
      <title><![CDATA[成為軟體工程師一年之後，以及未來]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2025-06-15_after_a_year_being_swe</link>
      <guid>https://joshhong.vercel.app/zh/posts/2025-06-15_after_a_year_being_swe</guid>
      <description><![CDATA[一年過去，撈一撈自己的 Github data，近 200 個 PR 和 50000 行的 code，雖然只是轉換身分的第一年，也有了不少心得。
回顧一下自己成長了多少？工作內和工作外又有什麼改變？]]></description>
      <pubDate>Sun, 15 Jun 2025 00:00:00 GMT</pubDate>
      <category>Career</category>
    </item>
    <item>
      <title><![CDATA[GoogleDoc to Markdown 轉換小工具 (自動轉換+上傳圖片至Cloudinary+AI修文)]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2025-06-01_Google_Docs_to_Markdown_Tool</link>
      <guid>https://joshhong.vercel.app/zh/posts/2025-06-01_Google_Docs_to_Markdown_Tool</guid>
      <description><![CDATA[身為一個需要在寫作與程式之間切換的人，總是意識到自己的流程不夠有效率。直接用 Markdown 撰寫文章很方便，但有時候只是用手機草擬想法或內容，或身邊沒有電腦時就會用到 Google Docs。但從 Google Docs 調整到慣用的 Markdown 過於繁瑣，格式亂掉、圖片不能直接用，這樣東調西調就降低了我整理的意願。]]></description>
      <pubDate>Sun, 01 Jun 2025 00:00:00 GMT</pubDate>
      <category>Node.js</category>
      <category>AI</category>
      <category>DevTools</category>
    </item>
    <item>
      <title><![CDATA[轉職軟體工程師？我個人的真實經驗分享]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2025-04-14_Career_switch_experience</link>
      <guid>https://joshhong.vercel.app/zh/posts/2025-04-14_Career_switch_experience</guid>
      <description><![CDATA[這是一篇大概兩三個月前我曾在 PTT 上回覆一位版友的內容，稍作整理後分享於此，希望能對也在思考轉職的人帶來參考。
這位版友對自己是有思考的，只是背景普通，加上對轉職所需和未來的概念不太清晰，所以大部分的人當初是勸退。我看到的時候就想說太多人唱衰了就來個平衡打擊好了，畢竟自己是實際走過這一遭的人，能分享一些經驗和看法讓他參考，下面是我當初的回文：]]></description>
      <pubDate>Mon, 14 Apr 2025 00:00:00 GMT</pubDate>
      <category>Career</category>
    </item>
    <item>
      <title><![CDATA[WhisperX + AiNiee + SakuraLLM 實現日文影片轉錄中文字幕]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2025-03-20_Whisperx_AiNiee_Sakurallm</link>
      <guid>https://joshhong.vercel.app/zh/posts/2025-03-20_Whisperx_AiNiee_Sakurallm</guid>
      <description><![CDATA[算是用現成的東西去兜成一個無字幕的日文影片/動畫產出中文字幕的解決方案。]]></description>
      <pubDate>Thu, 20 Mar 2025 00:00:00 GMT</pubDate>
      <category>AI</category>
      <category>Node.js</category>
      <category>DevTools</category>
      <category>Video</category>
    </item>
    <item>
      <title><![CDATA[2025 Side Projects and Tools]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2025-03-13_side_projects_and_tools</link>
      <guid>https://joshhong.vercel.app/zh/posts/2025-03-13_side_projects_and_tools</guid>
      <description><![CDATA[2025 又過了兩個月，這陣子嘗試了一些 LLM 和 node.js 的應用，想用這篇先稍微紀錄一下，之後有空再寫細節。]]></description>
      <pubDate>Thu, 13 Mar 2025 00:00:00 GMT</pubDate>
      <category>AI</category>
      <category>Node.js</category>
      <category>DevTools</category>
    </item>
    <item>
      <title><![CDATA[NextAuth簡易實作流程]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2025-01-15_Simple_Implementation_Process_for_NextAuth</link>
      <guid>https://joshhong.vercel.app/zh/posts/2025-01-15_Simple_Implementation_Process_for_NextAuth</guid>
      <description><![CDATA[NextAuth 是一個適用於 Next.js 的完整身份驗證解決方案，支持 OAuth（如 Google、Facebook、Line 等）和憑證(Credential)登入。可以在幾小時內做出一個包含帳號密碼和第三方登入的機制，理論上會比自己做一個 OAuth 實作來得簡單許多。]]></description>
      <pubDate>Wed, 15 Jan 2025 00:00:00 GMT</pubDate>
      <category>Next.js</category>
      <category>Auth</category>
      <category>Node.js</category>
    </item>
    <item>
      <title><![CDATA[個人部落格更新紀錄(一)：實作文章篩選器]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2025-01-12_Personal_Blog_Update_Post_Filters</link>
      <guid>https://joshhong.vercel.app/zh/posts/2025-01-12_Personal_Blog_Update_Post_Filters</guid>
      <description><![CDATA[隨著文章累積，篩選功能肯定是需要的，於是就趁著小孩睡著的週六夜趕快來弄一下。]]></description>
      <pubDate>Sun, 12 Jan 2025 00:00:00 GMT</pubDate>
      <category>React</category>
      <category>Next.js</category>
      <category>JavaScript</category>
    </item>
    <item>
      <title><![CDATA[Component共享狀態做法之context API實作]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2025-01-11_Component_State_Sharing_Options</link>
      <guid>https://joshhong.vercel.app/zh/posts/2025-01-11_Component_State_Sharing_Options</guid>
      <description><![CDATA[在前端開發中，將頁面或功能分成獨立的 component（如這裡的 Posts 和 PostsFilter）是常見的作法，因為這樣可以提升代碼的可重用性和維護性。然而當 component 彼此之間需要共享狀態去決定 UI 或 data 的處理邏輯時，就無法像一個甚麼都寫在裡面的元件直接使用。]]></description>
      <pubDate>Sat, 11 Jan 2025 00:00:00 GMT</pubDate>
      <category>React</category>
      <category>Next.js</category>
      <category>JavaScript</category>
    </item>
    <item>
      <title><![CDATA[Moonlight 遠端串流設置筆記]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2025-01-10_Moonlight_Remote_Access_Setup_Notes</link>
      <guid>https://joshhong.vercel.app/zh/posts/2025-01-10_Moonlight_Remote_Access_Setup_Notes</guid>
      <description><![CDATA[因為在家工作室是用桌機，但有時候看小孩必須在客廳，就有了用電視/筆電/iPad 遠端控制房間內的桌機需求。]]></description>
      <pubDate>Fri, 10 Jan 2025 00:00:00 GMT</pubDate>
      <category>DevTools</category>
    </item>
    <item>
      <title><![CDATA[控制Next.js路由變化連動的API請求]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2025-01-08_Handling_Nextjs_Routing_and_Context_Fetch_Issues</link>
      <guid>https://joshhong.vercel.app/zh/posts/2025-01-08_Handling_Nextjs_Routing_and_Context_Fetch_Issues</guid>
      <description><![CDATA[當 api 請求的參數是經由 url params 構建的時候，在同一個 router 下不同 params 會產生不同的 url 請求，返回不同的資料。]]></description>
      <pubDate>Wed, 08 Jan 2025 00:00:00 GMT</pubDate>
      <category>Next.js</category>
      <category>React</category>
      <category>API</category>
    </item>
    <item>
      <title><![CDATA[在Next.js應用下使用i18n]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2025-01-06_Using_i18n_in_Nextjs_Applications</link>
      <guid>https://joshhong.vercel.app/zh/posts/2025-01-06_Using_i18n_in_Nextjs_Applications</guid>
      <description><![CDATA[2 年前在寫這個部落格專案的時候還不知道 i18n，於是為了要做中英切換，page 元件都做 en 和 ch 兩個版本...。]]></description>
      <pubDate>Mon, 06 Jan 2025 00:00:00 GMT</pubDate>
      <category>Next.js</category>
      <category>React</category>
      <category>JavaScript</category>
    </item>
    <item>
      <title><![CDATA[React 父子元件通信與 prop 使用]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2025-01-05_React_Parent_Child_Communication_and_Props_Usage</link>
      <guid>https://joshhong.vercel.app/zh/posts/2025-01-05_React_Parent_Child_Communication_and_Props_Usage</guid>
      <description><![CDATA[對有經驗的人來說應該是相當直覺的用法，但當初 prop 這個概念堵塞了我的腦袋很久，看了許多 tutorial 和文章還是不太懂，結果自己寫過幾次相關元件就理解了。]]></description>
      <pubDate>Sun, 05 Jan 2025 00:00:00 GMT</pubDate>
      <category>React</category>
      <category>JavaScript</category>
    </item>
    <item>
      <title><![CDATA[小寶成長日記更新紀錄(一)：前端與DB日期處理]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2025-01-04_Our_Little_Explorer_Update_Record</link>
      <guid>https://joshhong.vercel.app/zh/posts/2025-01-04_Our_Little_Explorer_Update_Record</guid>
      <description><![CDATA[小寶成長日記當初一直都是用月份去做前後端的輸入和讀取的，在前端輸入小寶的月數，然後 DB 直接存。]]></description>
      <pubDate>Sat, 04 Jan 2025 00:00:00 GMT</pubDate>
      <category>Next.js</category>
      <category>React</category>
      <category>JavaScript</category>
      <category>Node.js</category>
    </item>
    <item>
      <title><![CDATA[使用IntersectionObserver實現lazyload的應用]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2025-01-03_Using_IntersectionObserver_for_Lazyload_Applications</link>
      <guid>https://joshhong.vercel.app/zh/posts/2025-01-03_Using_IntersectionObserver_for_Lazyload_Applications</guid>
      <description><![CDATA[之前需要處理一個 Product Table 上面，對從 Redux 獲取的產品圖片進行 lazyload 的效果，於是找了幾個方法，發現用 IntersectionObserver 是最簡單也最穩定的方式。]]></description>
      <pubDate>Fri, 03 Jan 2025 00:00:00 GMT</pubDate>
      <category>JavaScript</category>
      <category>Performance</category>
      <category>React</category>
    </item>
    <item>
      <title><![CDATA[git fetch & git pull 專案錯誤]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2025-01-02_Git_Fetch_Pull_Project_Errors</link>
      <guid>https://joshhong.vercel.app/zh/posts/2025-01-02_Git_Fetch_Pull_Project_Errors</guid>
      <description><![CDATA[有一次香港那邊通知 .env 有變，還有一次是主支從 develop 改成 main，我在 pull 的時候都發生了問題。]]></description>
      <pubDate>Thu, 02 Jan 2025 00:00:00 GMT</pubDate>
      <category>Git</category>
      <category>DevTools</category>
    </item>
    <item>
      <title><![CDATA[使用Postman查詢Github GraphQL API]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2025-01-01_Using_Postman_to_Query_Github_GraphQL_API</link>
      <guid>https://joshhong.vercel.app/zh/posts/2025-01-01_Using_Postman_to_Query_Github_GraphQL_API</guid>
      <description><![CDATA[接續上一篇使用 git 命令去統計自己的 commit lines，這一篇則是使用 Postman 和 Github Graph API 去做一個更完整的查詢。]]></description>
      <pubDate>Wed, 01 Jan 2025 00:00:00 GMT</pubDate>
      <category>API</category>
      <category>Git</category>
      <category>DevTools</category>
    </item>
    <item>
      <title><![CDATA[Git commit line count]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2024-12-31_Git_Commit_Line_Count</link>
      <guid>https://joshhong.vercel.app/zh/posts/2024-12-31_Git_Commit_Line_Count</guid>
      <description><![CDATA[通常在年底經常需要統計自己或團隊成員在專案中的代碼數量，來衡量某部分的工作情況。]]></description>
      <pubDate>Tue, 31 Dec 2024 00:00:00 GMT</pubDate>
      <category>Git</category>
      <category>DevTools</category>
    </item>
    <item>
      <title><![CDATA[MUI Select和表單元件]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2024-12-28_MUI_Select_and_Form_Components</link>
      <guid>https://joshhong.vercel.app/zh/posts/2024-12-28_MUI_Select_and_Form_Components</guid>
      <description><![CDATA[React 和 Next.js 專案會碰到兩種表單元件：controlled 和 uncontrolled，以我自己的經驗還是 controlled 來得多，但 uncontrolled 也會遇到。]]></description>
      <pubDate>Sat, 28 Dec 2024 00:00:00 GMT</pubDate>
      <category>React</category>
      <category>JavaScript</category>
    </item>
    <item>
      <title><![CDATA[通用專案開發環境設置]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2024-12-26_dev_env_setup_guide</link>
      <guid>https://joshhong.vercel.app/zh/posts/2024-12-26_dev_env_setup_guide</guid>
      <description><![CDATA[無論是新電腦新專案，新電腦舊專案，或者舊電腦新專案通用的快速設置流程筆記。]]></description>
      <pubDate>Thu, 26 Dec 2024 00:00:00 GMT</pubDate>
      <category>DevTools</category>
      <category>Git</category>
      <category>Deployment</category>
    </item>
    <item>
      <title><![CDATA[了解JS陣列方法之 flat() and new Set()]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2024-12-13_Understanding_JavaScript_Array_Methods</link>
      <guid>https://joshhong.vercel.app/zh/posts/2024-12-13_Understanding_JavaScript_Array_Methods</guid>
      <description><![CDATA[兩個 JS 中實用的陣列資料處理方式 flat() 和 Set()，其實不算很常遇到，但是在處理某些嵌套陣列資料的時候就相當有用。]]></description>
      <pubDate>Fri, 13 Dec 2024 00:00:00 GMT</pubDate>
      <category>JavaScript</category>
    </item>
    <item>
      <title><![CDATA[Metadata筆記]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2024-12-10_Understanding_Metadata</link>
      <guid>https://joshhong.vercel.app/zh/posts/2024-12-10_Understanding_Metadata</guid>
      <description><![CDATA[在網頁應用中，metadata 指的是與網頁有關的資訊，用來幫助搜索引擎和社交媒體平台更好地理解和展示該網頁的內容。這些資訊包括網頁的標題 (title)、描述 (description)、關鍵字 (keywords)、OG (Open Graph)等。]]></description>
      <pubDate>Tue, 10 Dec 2024 00:00:00 GMT</pubDate>
      <category>Next.js</category>
      <category>Performance</category>
    </item>
    <item>
      <title><![CDATA[VSCode 降版筆記]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2024-12-05_VSCode_Downgrade_and_Update_Settings_Notes</link>
      <guid>https://joshhong.vercel.app/zh/posts/2024-12-05_VSCode_Downgrade_and_Update_Settings_Notes</guid>
      <description><![CDATA[因為 VSCode 1.91 之後的版本在 commit 那邊從原本的 list 變成了 graph，試用了一下還是不習慣，開發需求經常要大量看已 commit 還沒 push 的 code，所以就只能降版回去 1.91，以下為記錄。]]></description>
      <pubDate>Thu, 05 Dec 2024 00:00:00 GMT</pubDate>
      <category>DevTools</category>
      <category>Git</category>
    </item>
    <item>
      <title><![CDATA[一行 JavaScript 函數將 URL 參數轉物件]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2024-12-02_url_params_to_object</link>
      <guid>https://joshhong.vercel.app/zh/posts/2024-12-02_url_params_to_object</guid>
      <description><![CDATA[如何使用一行 JavaScript 函數將 URL 參數轉換為物件？]]></description>
      <pubDate>Mon, 02 Dec 2024 00:00:00 GMT</pubDate>
      <category>JavaScript</category>
    </item>
    <item>
      <title><![CDATA[Synchronous(同步) vs Asynchronous (非同步) 筆記]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2024-11-28_Synchronous_vs_Asynchronous_Notes</link>
      <guid>https://joshhong.vercel.app/zh/posts/2024-11-28_Synchronous_vs_Asynchronous_Notes</guid>
      <description><![CDATA[同步(Sync)和非同步(Async)在日常語境中和程式語言中的涵義其實是衝突的，值得記錄一篇每次腦袋打結就來看看。]]></description>
      <pubDate>Thu, 28 Nov 2024 00:00:00 GMT</pubDate>
      <category>JavaScript</category>
      <category>Node.js</category>
    </item>
    <item>
      <title><![CDATA[Node.js fs.readdir, readdirSync 使用方式]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2024-11-26_Nodejs_fs_readdir_and_readdirSync_Explained</link>
      <guid>https://joshhong.vercel.app/zh/posts/2024-11-26_Nodejs_fs_readdir_and_readdirSync_Explained</guid>
      <description><![CDATA[Node.js 常用的 fs, readdir(), readdirSync()的筆記。]]></description>
      <pubDate>Tue, 26 Nov 2024 00:00:00 GMT</pubDate>
      <category>Node.js</category>
      <category>JavaScript</category>
    </item>
    <item>
      <title><![CDATA[Node.js Path.join 與 Process.cwd 方法]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2024-11-25_Nodejs_Path_join_and_Process_cwd_Explained</link>
      <guid>https://joshhong.vercel.app/zh/posts/2024-11-25_Nodejs_Path_join_and_Process_cwd_Explained</guid>
      <description><![CDATA[Node.js 第一篇筆記]]></description>
      <pubDate>Mon, 25 Nov 2024 00:00:00 GMT</pubDate>
      <category>Node.js</category>
      <category>JavaScript</category>
    </item>
    <item>
      <title><![CDATA[DOMPurify使用方式]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2024-11-23_Using_DOMPurify</link>
      <guid>https://joshhong.vercel.app/zh/posts/2024-11-23_Using_DOMPurify</guid>
      <description><![CDATA[DOMPurify 是一個用於清理 HTML 的 JavaScript 庫，主要用於防範跨站腳本攻擊 (XSS)。當我們需要在瀏覽器中呈現來自外部或不受信任來源的 HTML 時，DOMPurify 可以移除其中的惡意代碼，保證內容的安全性。]]></description>
      <pubDate>Sat, 23 Nov 2024 00:00:00 GMT</pubDate>
      <category>JavaScript</category>
      <category>Security</category>
    </item>
    <item>
      <title><![CDATA[了解JavaScript的String.replace()使用方式]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2024-11-22_Understanding_String_replace_Method_in_JavaScript</link>
      <guid>https://joshhong.vercel.app/zh/posts/2024-11-22_Understanding_String_replace_Method_in_JavaScript</guid>
      <description><![CDATA[String.prototype.replace() 是 JavaScript 中的方法，用來查找字串中的子字串並將其替換為另一個子字串。]]></description>
      <pubDate>Fri, 22 Nov 2024 00:00:00 GMT</pubDate>
      <category>JavaScript</category>
    </item>
    <item>
      <title><![CDATA[Google Sheets API 串接紀錄]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2024-09-13_Google_Sheets_API_Setup_and_Troubleshooting_Notes</link>
      <guid>https://joshhong.vercel.app/zh/posts/2024-09-13_Google_Sheets_API_Setup_and_Troubleshooting_Notes</guid>
      <description><![CDATA[為了當初紀錄容易，小寶成長日記的 Dashboard 和 Message board 是用 Google Sheet 作為資料來源的，等於是直接把 Google Sheet 當作 DB 在用了，也符合當初的需求。]]></description>
      <pubDate>Fri, 13 Sep 2024 00:00:00 GMT</pubDate>
      <category>API</category>
      <category>Node.js</category>
      <category>Database</category>
    </item>
    <item>
      <title><![CDATA[專案回顧-小寶成長日記]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2023-05-28_06baby</link>
      <guid>https://joshhong.vercel.app/zh/posts/2023-05-28_06baby</guid>
      <description><![CDATA[小寶出生後大概有一個半月沒寫文章了，這陣子嚴重的睡眠不足和手忙腳亂讓我沒辦法如當初所想的：每周要產出兩篇文章。]]></description>
      <pubDate>Sun, 28 May 2023 00:00:00 GMT</pubDate>
      <category>Next.js</category>
      <category>React</category>
      <category>TypeScript</category>
      <category>API</category>
    </item>
    <item>
      <title><![CDATA[React Table初探]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2023-04-18_reacttable</link>
      <guid>https://joshhong.vercel.app/zh/posts/2023-04-18_reacttable</guid>
      <description><![CDATA[在小寶成長日記中，我使用 React Table 來實現表格元件。其實表格解決方案，例如 MUI 和 Data-grid，但 React Table 其實是蠻簡單的選擇，並且它不帶預設樣式，方便用戶整合主題或使用 Tailwind CSS。]]></description>
      <pubDate>Tue, 18 Apr 2023 00:00:00 GMT</pubDate>
      <category>React</category>
      <category>JavaScript</category>
    </item>
    <item>
      <title><![CDATA[API是什麼？REST API又是什麼？ ]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2023-04-05_restfulapi</link>
      <guid>https://joshhong.vercel.app/zh/posts/2023-04-05_restfulapi</guid>
      <description><![CDATA[如何解釋 API 和 RESTful API？]]></description>
      <pubDate>Wed, 05 Apr 2023 00:00:00 GMT</pubDate>
      <category>API</category>
      <category>Node.js</category>
    </item>
    <item>
      <title><![CDATA[useState介紹]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2023-03-31_useState_explained</link>
      <guid>https://joshhong.vercel.app/zh/posts/2023-03-31_useState_explained</guid>
      <description><![CDATA[useState 是 React 中幾乎每個元件不可或缺的 Hook。剛開始接觸的時候還有點卡，但現在只要需要管理狀態來處理 UI 或邏輯時，就會直覺地想到使用 useState。]]></description>
      <pubDate>Fri, 31 Mar 2023 00:00:00 GMT</pubDate>
      <category>React</category>
      <category>JavaScript</category>
    </item>
    <item>
      <title><![CDATA[Tailwind CSS 使用心得，開發速度有感提升(2025/1/3更新)]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2023-03-30_Tailwind_CSS_Usage_Experience</link>
      <guid>https://joshhong.vercel.app/zh/posts/2023-03-30_Tailwind_CSS_Usage_Experience</guid>
      <description><![CDATA[Tailwind CSS 是一個用過後就回不去的東西。為什麼呢？好處就是 html, css, js 寫在一起，開發快速方便。]]></description>
      <pubDate>Thu, 30 Mar 2023 00:00:00 GMT</pubDate>
      <category>CSS</category>
      <category>Tailwind</category>
    </item>
    <item>
      <title><![CDATA[寫技術部落格的理由與期望]]></title>
      <link>https://joshhong.vercel.app/zh/posts/2023-03-29_Reasons_and_Expectations_for_Writing_a_Dev_Blog</link>
      <guid>https://joshhong.vercel.app/zh/posts/2023-03-29_Reasons_and_Expectations_for_Writing_a_Dev_Blog</guid>
      <description><![CDATA[寫這個部落格的動機主要是幫助自己的學習，並留下成長的紀錄。]]></description>
      <pubDate>Wed, 29 Mar 2023 00:00:00 GMT</pubDate>
      <category>Career</category>
      <category>Blog</category>
    </item>
  </channel>
</rss>