
  <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
      <title>Coding and Climbing</title>
      <link>https://harry-su-blog.com/blog</link>
      <description>A blog recording my coding and climbing journey</description>
      <language>zh-TW</language>
      <managingEditor>undefined (Harry)</managingEditor>
      <webMaster>undefined (Harry)</webMaster>
      <lastBuildDate>Thu, 05 Nov 2026 12:00:00 GMT</lastBuildDate>
      <atom:link href="https://harry-su-blog.com/feed.xml" rel="self" type="application/rss+xml"/>
      
  <item>
    <guid>https://harry-su-blog.com/blog/2026/11/05/facebook-sdk-error-reporting-retrospective</guid>
    <title>Facebook SDK 錯誤回報的修改：如何避免只修到表面症狀</title>
    <link>https://harry-su-blog.com/blog/2026/11/05/facebook-sdk-error-reporting-retrospective</link>
    <description>從 Facebook SDK 錯誤回報的幾次修改，回顧如何區分功能問題與監控誤報、確認根因、控制修改範圍，並建立可驗證的成功標準。</description>
    <pubDate>Thu, 05 Nov 2026 12:00:00 GMT</pubDate>
    <author>undefined (Harry)</author>
    <category>facebook-sdk</category><category>rollbar</category><category>debugging</category><category>observability</category>
  </item>

  <item>
    <guid>https://harry-su-blog.com/blog/2026/11/05/facebook-sdk-error-reporting</guid>
    <title>Facebook SDK 錯誤回報機制的演進：讓 Rollbar 只在登入介面出現時回報</title>
    <link>https://harry-su-blog.com/blog/2026/11/05/facebook-sdk-error-reporting</link>
    <description>記錄 Facebook SDK unavailable 錯誤回報（ER0022）從 #1799、#1806 到 #1847 的三次調整：從觀測 SDK 載入失敗、只保留 timeout，到最後只在使用者實際看到登入介面時才開始監測，降低爬蟲與一般瀏覽造成的誤報。</description>
    <pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate>
    <author>undefined (Harry)</author>
    <category>facebook-sdk</category><category>rollbar</category><category>error-handling</category><category>observability</category>
  </item>

  <item>
    <guid>https://harry-su-blog.com/blog/2026/11/04/shadow-dom</guid>
    <title>Shadow DOM 是什麼？從實際場景理解元件封裝與 CSS 隔離</title>
    <link>https://harry-su-blog.com/blog/2026/11/04/shadow-dom</link>
    <description>Shadow DOM 是瀏覽器原生的封裝機制，能為元件建立獨立的 DOM 與 CSS 邊界。本文整理它解決的問題、實務用法、發展歷史與採用率，並與 CSS Modules、styled-components、Scoped CSS、iframe 比較適用情境。</description>
    <pubDate>Wed, 04 Nov 2026 00:00:00 GMT</pubDate>
    <author>undefined (Harry)</author>
    <category>shadow-dom</category><category>web-components</category><category>css</category>
  </item>

  <item>
    <guid>https://harry-su-blog.com/blog/2026/10/28/sitemap-url-data-contract</guid>
    <title>把頁面放進 Sitemap：URL、資料與前後端契約</title>
    <link>https://harry-su-blog.com/blog/2026/10/28/sitemap-url-data-contract</link>
    <description>把公司評價面向與制度頁加入 sitemap 時，整理出三個要分開回答的問題：哪些頁面真的存在、哪些值得收錄、前後端如何避免產生不同的 URL。並記錄用 Google 文件驗證過的 sitemap 限制與 canonical 關係。</description>
    <pubDate>Wed, 28 Oct 2026 00:00:00 GMT</pubDate>
    <author>undefined (Harry)</author>
    <category>seo</category><category>sitemap</category>
  </item>

  <item>
    <guid>https://harry-su-blog.com/blog/2026/10/08/mongodb-and-or-date-range</guid>
    <title>MongoDB 用 $and / $or 查「年、月分開存」的日期區間</title>
    <link>https://harry-su-blog.com/blog/2026/10/08/mongodb-and-or-date-range</link>
    <description>當日期拆成 year/month 兩個欄位存時，示範如何用 $or 包起點與終點條件、再用 $and 組合出區間查詢，並說明為什麼不能把兩個 $or 放在同一層物件裡。</description>
    <pubDate>Thu, 08 Oct 2026 00:00:00 GMT</pubDate>
    <author>undefined (Harry)</author>
    <category>mongodb</category>
  </item>

  <item>
    <guid>https://harry-su-blog.com/blog/2026/10/06/typescript-type-vs-interface</guid>
    <title>TypeScript：type 和 interface 的差異</title>
    <link>https://harry-su-blog.com/blog/2026/10/06/typescript-type-vs-interface</link>
    <description>整理 type 與 interface 在描述能力、declaration merging、擴充方式、屬性衝突、index signature 與編譯效能上的差異，並說明實務上該如何選擇。</description>
    <pubDate>Tue, 06 Oct 2026 00:00:00 GMT</pubDate>
    <author>undefined (Harry)</author>
    <category>typescript</category>
  </item>

  <item>
    <guid>https://harry-su-blog.com/blog/2026/10/06/zod-vs-yup</guid>
    <title>Zod vs Yup：差異不大，但細節要知道</title>
    <link>https://harry-su-blog.com/blog/2026/10/06/zod-vs-yup</link>
    <description>比較 Zod 與 Yup 在驗證失敗行為、型別轉換、未知 key、型別來源與巢狀預設值上的預設差異，並說明實務上的選擇依據。</description>
    <pubDate>Tue, 06 Oct 2026 00:00:00 GMT</pubDate>
    <author>undefined (Harry)</author>
    <category>typescript</category><category>zod</category><category>yup</category><category>validation</category>
  </item>

  <item>
    <guid>https://harry-su-blog.com/blog/2026/09/06/claude-code-context-window-compact</guid>
    <title>Claude Code 的 Context Window 與 `/compact`</title>
    <link>https://harry-su-blog.com/blog/2026/09/06/claude-code-context-window-compact</link>
    <description>整理 Claude Code context window 啟動時自動載入的內容、`/compact` 保留與捨棄什麼、跟 `/clear` 的差異，以及自動觸發 compact 其實有依 model 而異的預設閾值。</description>
    <pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate>
    <author>undefined (Harry)</author>
    <category>claude-code</category><category>settings</category><category>memory</category>
  </item>

  <item>
    <guid>https://harry-su-blog.com/blog/2026/09/06/unhandled-promise-rejection</guid>
    <title>Unhandled Promise Rejection 與 window.onunhandledrejection</title>
    <link>https://harry-su-blog.com/blog/2026/09/06/unhandled-promise-rejection</link>
    <description>整理 unhandledrejection / rejectionhandled 事件的觸發時機、Promise chain 分支各自獨立判定的陷阱、preventDefault() 的實際作用，以及和 Rollbar 的 captureUnhandledRejections 設定的關係。</description>
    <pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate>
    <author>undefined (Harry)</author>
    <category>javascript</category><category>error-handling</category><category>rollbar</category>
  </item>

  <item>
    <guid>https://harry-su-blog.com/blog/2026/09/05/claude-code-model-effort-permission-mode</guid>
    <title>Claude Code：Model / Effort 設定與 Permission Mode</title>
    <link>https://harry-su-blog.com/blog/2026/09/05/claude-code-model-effort-permission-mode</link>
    <description>整理 Claude Code 針對 slash command、skill、subagent 設定 model 與 effort 的方式，以及 6 種 permission mode 的差異，特別是 auto mode 與 bypassPermissions 的關鍵差別。</description>
    <pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate>
    <author>undefined (Harry)</author>
    <category>claude-code</category><category>settings</category>
  </item>

  <item>
    <guid>https://harry-su-blog.com/blog/2026/09/05/claude-code-project-memory-mechanisms</guid>
    <title>Claude Code 的專案設定機制：CLAUDE.md、.claude/rules/、Auto Memory、Hooks</title>
    <link>https://harry-su-blog.com/blog/2026/09/05/claude-code-project-memory-mechanisms</link>
    <description>整理 Claude Code 跨 session 保留知識的兩套機制（CLAUDE.md 與 auto memory）、.claude/rules/ 的條件式載入，以及「context」和「強制執行」的關鍵區分——真正能無條件擋下動作的只有 hooks。</description>
    <pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate>
    <author>undefined (Harry)</author>
    <category>claude-code</category><category>settings</category><category>memory</category>
  </item>

  <item>
    <guid>https://harry-su-blog.com/blog/2026/09/04/claude-code-settings-notes</guid>
    <title>Claude Code 個人設定筆記</title>
    <link>https://harry-su-blog.com/blog/2026/09/04/claude-code-settings-notes</link>
    <description>紀錄幾個容易搞混、值得回頭查的 Claude Code 設定：attribution、cleanupPeriodDays、sandbox、permissions、bypassPermissions 與 fewer-permission-prompts。</description>
    <pubDate>Fri, 04 Sep 2026 00:00:00 GMT</pubDate>
    <author>undefined (Harry)</author>
    <category>claude-code</category><category>settings</category>
  </item>

  <item>
    <guid>https://harry-su-blog.com/blog/2026/09/03/claude-code-print-mode</guid>
    <title>claude -p（print mode）</title>
    <link>https://harry-su-blog.com/blog/2026/09/03/claude-code-print-mode</link>
    <description>claude -p 是 Claude Code 的非互動模式，把 prompt 當參數丟進去，跑完直接印到 stdout 後退出，適合放在 script、CI、pipe 裡。</description>
    <pubDate>Thu, 03 Sep 2026 00:00:00 GMT</pubDate>
    <author>undefined (Harry)</author>
    <category>claude-code</category><category>cli</category>
  </item>

  <item>
    <guid>https://harry-su-blog.com/blog/2026/09/02/claude-code-auto-memory-limit</guid>
    <title>Claude Code 的 auto memory 越存越多，會怎樣？</title>
    <link>https://harry-su-blog.com/blog/2026/09/02/claude-code-auto-memory-limit</link>
    <description>Claude Code 的 auto memory 檔案越積越多，會不會全部塞進 context？答案是只有 MEMORY.md 索引的大小有影響。</description>
    <pubDate>Wed, 02 Sep 2026 00:00:00 GMT</pubDate>
    <author>undefined (Harry)</author>
    <category>claude-code</category><category>memory</category>
  </item>

  <item>
    <guid>https://harry-su-blog.com/blog/2026/09/02/what-is-razzle</guid>
    <title>Razzle 是什麼？</title>
    <link>https://harry-su-blog.com/blog/2026/09/02/what-is-razzle</link>
    <description>Razzle 是一個零設定的 React SSR 建置工具，只負責打包 client 與 server 兩份 bundle，routing 和資料預取都得自己來。</description>
    <pubDate>Wed, 02 Sep 2026 00:00:00 GMT</pubDate>
    <author>undefined (Harry)</author>
    <category>razzle</category><category>react</category><category>ssr</category>
  </item>

  <item>
    <guid>https://harry-su-blog.com/blog/2026/02/18/02/pub-sub</guid>
    <title>後端多 Process 架構與 Pub/Sub 非同步訊息系統入門</title>
    <link>https://harry-su-blog.com/blog/2026/02/18/02/pub-sub</link>
    <description>深入理解後端 Process 概念、多 Process 架構設計，以及 Pub/Sub 發布訂閱模式如何實現非同步解耦</description>
    <pubDate>Wed, 18 Feb 2026 00:00:00 GMT</pubDate>
    <author>undefined (Harry)</author>
    <category>pubsub</category><category>backend architecture</category>
  </item>

  <item>
    <guid>https://harry-su-blog.com/blog/2025/09/30/catch-throw-error-handling</guid>
    <title>API 錯誤處理：分層架構與 TanStack Query 整合</title>
    <link>https://harry-su-blog.com/blog/2025/09/30/catch-throw-error-handling</link>
    <description>深入探討 API 層與 UI 層的錯誤處理職責分離。說明在 .catch() 中必須重新拋出錯誤的原因，以及如何設計清晰的分層架構，讓 TanStack Query 的錯誤處理機制正常運作</description>
    <pubDate>Tue, 30 Sep 2025 00:00:00 GMT</pubDate>
    <author>undefined (Harry)</author>
    <category>TanStack Query</category><category>Error Handling</category><category>API Design</category>
  </item>

  <item>
    <guid>https://harry-su-blog.com/blog/2025/08/14/apple-silicon-mac-install-old-nodejs</guid>
    <title>Apple Silicon 與 Node.js 安裝那些事：理解 Rosetta、arch、arm64、i386</title>
    <link>https://harry-su-blog.com/blog/2025/08/14/apple-silicon-mac-install-old-nodejs</link>
    <description>由於在 Mac 中安裝相當舊版本的 node JS 的過程中，碰到一些問題，沒想到就順手了解 Rosetta、arch、arm64、i386 這些名詞的意義 💻。</description>
    <pubDate>Thu, 14 Aug 2025 00:00:00 GMT</pubDate>
    <author>undefined (Harry)</author>
    <category>Rosetta</category><category>arch</category><category>arm64</category><category>i386</category>
  </item>

  <item>
    <guid>https://harry-su-blog.com/blog/2025/08/06/cursor-collapse-code-shortcut</guid>
    <title>Cursor 編輯器中程式碼折疊快捷鍵的解決方案</title>
    <link>https://harry-su-blog.com/blog/2025/08/06/cursor-collapse-code-shortcut</link>
    <description>在 Cursor 編輯器中，由於 Cmd+K 被 AI 功能佔用，無法使用原生的程式碼折疊快捷鍵。發現了 `keybindings.json` 這個很棒的 shortcut list</description>
    <pubDate>Wed, 06 Aug 2025 00:00:00 GMT</pubDate>
    <author>undefined (Harry)</author>
    <category>Cursor</category><category>keyboard shortcuts</category>
  </item>

  <item>
    <guid>https://harry-su-blog.com/blog/2025/08/05/cross-env-dotenv</guid>
    <title>Node.js 環境變數載入順序解析：cross-env 與 dotenv 的交互作用</title>
    <link>https://harry-su-blog.com/blog/2025/08/05/cross-env-dotenv</link>
    <description>深入解析 Node.js 中 cross-env 與 dotenv 的環境變數載入機制，了解為什麼 dotenv 預設不會覆寫已存在的環境變數，以及如何正確配置環境變數載入順序。</description>
    <pubDate>Tue, 05 Aug 2025 00:00:00 GMT</pubDate>
    <author>undefined (Harry)</author>
    <category>Node.js</category><category>Environment Variables</category><category>dotenv</category><category>cross-env</category>
  </item>

  <item>
    <guid>https://harry-su-blog.com/blog/2025/07/28/github-actions-job-skip</guid>
    <title>GitHub Actions 分支條件判斷踩雷記錄</title>
    <link>https://harry-su-blog.com/blog/2025/07/28/github-actions-job-skip</link>
    <description>在使用 GitHub Actions 時，一直 skip job，直到多寫一個 debug 的 job 才釐清，本文記錄了一次實際遇到的問題和解決過程。</description>
    <pubDate>Mon, 28 Jul 2025 00:00:00 GMT</pubDate>
    <author>undefined (Harry)</author>
    <category>Github Actions</category>
  </item>

  <item>
    <guid>https://harry-su-blog.com/blog/2025/07/26/instagram-scraper</guid>
    <title>使用 instagram-posts-scraper 爬取 Instagram 貼文 — 新手實作與踩坑紀錄</title>
    <link>https://harry-su-blog.com/blog/2025/07/26/instagram-scraper</link>
    <description>這篇文章介紹使用 instagram-posts-scraper 爬取 Instagram 貼文，還有初學 Python 的記錄</description>
    <pubDate>Sat, 26 Jul 2025 00:00:00 GMT</pubDate>
    <author>undefined (Harry)</author>
    <category>Python</category><category>scraper</category>
  </item>

  <item>
    <guid>https://harry-su-blog.com/blog/2025/07/25/argo-cd</guid>
    <title>Argo CD</title>
    <link>https://harry-su-blog.com/blog/2025/07/25/argo-cd</link>
    <description>Argo CD 是一個 GitOps 工具，目前常用於看 log，覺得挺方便的</description>
    <pubDate>Fri, 25 Jul 2025 00:00:00 GMT</pubDate>
    <author>undefined (Harry)</author>
    <category>Argo CD</category><category>Kubernetes</category>
  </item>

  <item>
    <guid>https://harry-su-blog.com/blog/2025/07/24/01/tech-introduction</guid>
    <title>專案技術導入與優化紀錄（含已完成與待優化項目）</title>
    <link>https://harry-su-blog.com/blog/2025/07/24/01/tech-introduction</link>
    <description>專案中做了幾項優化，記錄一下，還蠻喜歡部分的優化的，簡單但 DX 體驗大好</description>
    <pubDate>Thu, 24 Jul 2025 00:00:00 GMT</pubDate>
    <author>undefined (Harry)</author>
    <category>essay</category>
  </item>

  <item>
    <guid>https://harry-su-blog.com/blog/2025/07/21/02/docker</guid>
    <title>docker 指令解釋</title>
    <link>https://harry-su-blog.com/blog/2025/07/21/02/docker</link>
    <description>docker 的一些基本指令介紹</description>
    <pubDate>Tue, 22 Jul 2025 00:00:00 GMT</pubDate>
    <author>undefined (Harry)</author>
    <category>docker</category>
  </item>

  <item>
    <guid>https://harry-su-blog.com/blog/2025/07/21/01/git-worktree</guid>
    <title>git worktree</title>
    <link>https://harry-su-blog.com/blog/2025/07/21/01/git-worktree</link>
    <description>之前就聽說 git worktree 很好用，有稍微學過，但一直沒有常用，直到再次被 threads 的貼文 打到，好好來學一下</description>
    <pubDate>Mon, 21 Jul 2025 00:00:00 GMT</pubDate>
    <author>undefined (Harry)</author>
    <category>git</category>
  </item>

  <item>
    <guid>https://harry-su-blog.com/blog/2025/07/12/01/jest-html-reporter</guid>
    <title>Jest HTML Reporter 問題、解決方案</title>
    <link>https://harry-su-blog.com/blog/2025/07/12/01/jest-html-reporter</link>
    
    <pubDate>Sat, 12 Jul 2025 00:00:00 GMT</pubDate>
    <author>undefined (Harry)</author>
    <category>e2e</category><category>Puppeteer</category><category>jest</category>
  </item>

  <item>
    <guid>https://harry-su-blog.com/blog/2025/07/12/02/yongchen-blog</guid>
    <title>部落格搬家 ＆ 重新啟航 - YongChen Blog</title>
    <link>https://harry-su-blog.com/blog/2025/07/12/02/yongchen-blog</link>
    <description>開新的部落格已有一個多月了，已經發佈了幾篇技術文章，想寫一篇非技術類的文章，所以這篇文章是記錄一下開新部落格的心境</description>
    <pubDate>Sat, 12 Jul 2025 00:00:00 GMT</pubDate>
    <author>undefined (Harry)</author>
    <category>essay</category>
  </item>

  <item>
    <guid>https://harry-su-blog.com/blog/2025/06/19/01/hostfile</guid>
    <title>localhost 的相關定義 &amp; 前往資料夾快捷鍵：⌘ + ⇧ + G</title>
    <link>https://harry-su-blog.com/blog/2025/06/19/01/hostfile</link>
    <description>想要熟記用快捷鍵前往 host file，順便複習 localhost 相關定義。macOS Finder 前往資料夾快捷鍵：⌘ + ⇧ + G</description>
    <pubDate>Thu, 19 Jun 2025 00:00:00 GMT</pubDate>
    <author>undefined (Harry)</author>
    <category>localhost</category><category>mac tips</category>
  </item>

  <item>
    <guid>https://harry-su-blog.com/blog/2025/06/16/01/postMessage</guid>
    <title>使用 postMessage 實現 iframe 父子頁面通訊</title>
    <link>https://harry-su-blog.com/blog/2025/06/16/01/postMessage</link>
    <description>介紹如何使用 postMessage API 實現 iframe 父子頁面之間的安全通訊，包含實際程式碼範例、執行流程說明及 console 輸出結果分析。</description>
    <pubDate>Mon, 16 Jun 2025 00:00:00 GMT</pubDate>
    <author>undefined (Harry)</author>
    <category>JS</category><category>postMessage</category><category>iframe</category>
  </item>

  <item>
    <guid>https://harry-su-blog.com/blog/2025/06/14/try-catch-error</guid>
    <title>JavaScript 錯誤處理：throw error vs throw new Error 的差異</title>
    <link>https://harry-su-blog.com/blog/2025/06/14/try-catch-error</link>
    <description>JavaScript 中 throw error 和 throw new Error 的差異，以及 Error 物件的重要屬性</description>
    <pubDate>Sat, 14 Jun 2025 00:00:00 GMT</pubDate>
    <author>undefined (Harry)</author>
    <category>JS</category><category>Try-Catch</category>
  </item>

  <item>
    <guid>https://harry-su-blog.com/blog/2025/06/01/github-action-cron</guid>
    <title>Github Action cron</title>
    <link>https://harry-su-blog.com/blog/2025/06/01/github-action-cron</link>
    <description>Github Action cron</description>
    <pubDate>Sun, 01 Jun 2025 00:00:00 GMT</pubDate>
    <author>undefined (Harry)</author>
    <category>Github Actions</category>
  </item>

  <item>
    <guid>https://harry-su-blog.com/blog/2025/05/31/ssh-https</guid>
    <title>https 與 ssh 的差異</title>
    <link>https://harry-su-blog.com/blog/2025/05/31/ssh-https</link>
    <description>https 與 ssh 的差異</description>
    <pubDate>Sat, 31 May 2025 00:00:00 GMT</pubDate>
    <author>undefined (Harry)</author>
    <category>https</category><category>ssh</category>
  </item>

  <item>
    <guid>https://harry-su-blog.com/blog/typescript/function-overload</guid>
    <title>role in</title>
    <link>https://harry-su-blog.com/blog/typescript/function-overload</link>
    <description>為你自己學 TypeScript</description>
    <pubDate>Mon, 12 May 2025 00:00:00 GMT</pubDate>
    <author>undefined (Harry)</author>
    <category>TypeScript</category>
  </item>

  <item>
    <guid>https://harry-su-blog.com/blog/typescript</guid>
    <title>為你自己學 TypeScript</title>
    <link>https://harry-su-blog.com/blog/typescript</link>
    <description>為你自己學 TypeScript</description>
    <pubDate>Sat, 10 May 2025 00:00:00 GMT</pubDate>
    <author>undefined (Harry)</author>
    <category>TypeScript</category>
  </item>

  <item>
    <guid>https://harry-su-blog.com/blog/typescript/union-type-narrowing</guid>
    <title>Union Type Narrowing</title>
    <link>https://harry-su-blog.com/blog/typescript/union-type-narrowing</link>
    <description>為你自己學 TypeScript</description>
    <pubDate>Sat, 10 May 2025 00:00:00 GMT</pubDate>
    <author>undefined (Harry)</author>
    <category>TypeScript</category>
  </item>

    </channel>
  </rss>
