<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Posts on Peter.H's Full-Stack GAME</title><link>https://peter-notes.com/posts/</link><description>Recent content in Posts on Peter.H's Full-Stack GAME</description><image><title>Peter.H's Full-Stack GAME</title><url>https://peter-notes.com/images/og-image.jpg</url><link>https://peter-notes.com/images/og-image.jpg</link></image><generator>Hugo</generator><language>zh-tw</language><lastBuildDate>Fri, 22 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://peter-notes.com/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>Combining Strategic Cutover Docs with Tactical Headless Orchestrators</title><link>https://peter-notes.com/posts/strategic-cutover-docs-with-tactical-headless-orchestrators/</link><pubDate>Fri, 22 May 2026 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/strategic-cutover-docs-with-tactical-headless-orchestrators/</guid><description>Cutover doc 解決跨 session、跨天的戰略協調，但單一高階任務底下的執行還是手動驅動。把社群上流行的 orchestrator + claude headless pattern 接到 cutover doc 之下，組成戰略層（長期決策記憶）+ 戰術層（單 loop 內自動化執行）的兩層記憶體階層。</description></item><item><title>Designing a Control-Plane Document for Async Multi-Session AI Agents</title><link>https://peter-notes.com/posts/async-multi-agent-coordination-via-markdown-control-plane/</link><pubDate>Fri, 22 May 2026 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/async-multi-agent-coordination-via-markdown-control-plane/</guid><description>從一個跨三個 repo、橫跨十多個 AI session 的 schema migration 中萃取出的 8 個 control-plane document 設計模式：append-only audit、cross-session message queue、pickup prompt engineering，讓非同步 AI agent 協作成為可工程化的問題。</description></item><item><title>EKS 維運的三個隱形陷阱：工具 Pod 消失、事件蒸發、審計空白</title><link>https://peter-notes.com/posts/eks-ops-bare-pod-audit-log-pitfalls/</link><pubDate>Sat, 16 May 2026 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/eks-ops-bare-pod-audit-log-pitfalls/</guid><description>從一個工具 Pod 莫名消失的事件出發，揭露 EKS 維運中三個容易被忽略的陷阱：裸 Pod 的脆弱性、K8s Events 的短暫生命、以及 Audit Log 未啟用的盲區。每一個都是出事後才會後悔沒處理的問題。</description></item><item><title>LLM 驅動的 E2E 驗證：為什麼 bot 比人更容易揭發 backend regression</title><link>https://peter-notes.com/posts/llm-driven-e2e-surfaces-backend-regression/</link><pubDate>Fri, 15 May 2026 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/llm-driven-e2e-surfaces-backend-regression/</guid><description>用 Playwright MCP 讓 LLM 驅動瀏覽器跑 STG 驗收，原本目標是確認 frontend 修補有效，卻意外揭發 backend dual-write lifecycle hook 失效的 regression。POST 200 不等於資料寫對：探討為什麼 bot 會多走那一步、人手 UAT 為什麼通常碰不到、以及如何把這個習慣寫進 verification recipe。</description></item><item><title>Schema 主表翻轉的 dual-write 過渡:一場不能 stop-the-world 的搬家</title><link>https://peter-notes.com/posts/schema-pivot-dual-write-migration/</link><pubDate>Fri, 15 May 2026 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/schema-pivot-dual-write-migration/</guid><description>外部系統匯入的 customers 表跑了三年,現在想換成 SaaS 自己的 users 表為主。Stop-the-world 風險太高,dual-write 過渡是唯一可行解。本文拆解 3 階段 migration、partial cut-over、DISTINCT ON 去重、永久共存政策的設計考量與實戰踩坑。</description></item><item><title>可列印 A4 報表的 CSS 全攻略：頁碼、跨頁表頭、列印隔離</title><link>https://peter-notes.com/posts/printable-a4-report-css-guide/</link><pubDate>Wed, 06 May 2026 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/printable-a4-report-css-guide/</guid><description>想用瀏覽器原生列印做 A4 報表？看似簡單，實際坑多：頁碼怎麼來、跨頁時表頭會不會消失、admin shell 裡的 sidebar 會不會印出來。本文用一個會計報表的實作經驗，整理 CSS Paged Media Module 在實戰中該怎麼用：@page margin box、thead 跨頁重複、visibility: hidden 列印隔離、以及 screen vs print 雙模式的取捨。</description></item><item><title>ORM 在騙你：當 populate / include 悄悄失效</title><link>https://peter-notes.com/posts/orm-silent-populate-failure/</link><pubDate>Fri, 24 Apr 2026 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/orm-silent-populate-failure/</guid><description>一個 CMS 文件的「上傳者」欄位永遠空白引出的除錯故事：當 ORM 的 populate / include 在特定條件組合下靜默失敗，HTTP 200 OK、其他欄位都對，唯獨關聯變成 null。介紹這類跨 ORM 的通病怎麼診斷、怎麼繞過、怎麼從架構分層理解為什麼只有這一層會騙人。</description></item><item><title>Strapi v5's Silent populate Failure with Relation Filters</title><link>https://peter-notes.com/posts/strapi-v5-populate-silent-failure-with-relation-filters/</link><pubDate>Fri, 24 Apr 2026 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/strapi-v5-populate-silent-failure-with-relation-filters/</guid><description>A reproducible Strapi v5 bug: combining filters[relation][id][$eq] with populate[relation]=true silently returns null for the populated field — no error, no warning, just missing data. This post walks through the symptom, a curl reproduction, why it happens at the ORM layer, and a knex-based custom find controller that fixes it.</description></item><item><title>Strapi 忘記密碼的安靜回應：Anti-Enumeration、Phishing-as-a-Service 與撞庫經濟學</title><link>https://peter-notes.com/posts/strapi-forgot-password-anti-enumeration/</link><pubDate>Tue, 21 Apr 2026 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/strapi-forgot-password-anti-enumeration/</guid><description>從一次 kubectl 排查出發，解析為何 Strapi 忘記密碼 API 對不存在的 email 仍回 200，並深入釣魚工具（Gophish、Evilginx2）與撞庫工具（OpenBullet）的運作與經濟模型，說明 App 文案為何必須配合後端的 anti-enumeration 設計。</description></item><item><title>頭貼切不回去？一個 Bug 揪出 Admin Panel 權限漂移的跨後端通病</title><link>https://peter-notes.com/posts/admin-panel-permission-drift-cms-backends/</link><pubDate>Fri, 17 Apr 2026 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/admin-panel-permission-drift-cms-backends/</guid><description>從一個 Flutter 切不回手機頭貼的 bug 出發，揭開 Strapi Admin Panel 權限漂移這個跨後端的共通陷阱。深入分析雙層根因、衍生的 null validation bug，以及為什麼 Firebase、Supabase、Hasura、AWS IAM 都逃不過這個問題。</description></item><item><title>Flutter 子母帳號切換踩了四個坑：GetX 狀態管理的隱藏地雷</title><link>https://peter-notes.com/posts/flutter-getx-account-switch-state-trap/</link><pubDate>Thu, 16 Apr 2026 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/flutter-getx-account-switch-state-trap/</guid><description>實作 Flutter 子母帳號切換功能時，連環踩了四個 GetX 狀態管理的坑：身份憑證不同步、ViewModel 生命週期錯亂、全域變數過期參考、記憶體狀態未持久化。逐一分析根因與修復思路。</description></item><item><title>Fastlane CI 突然壞了：一個被遺忘的 Keychain 依賴如何讓 Build 連續失敗</title><link>https://peter-notes.com/posts/fastlane-keychain-ghost-dependency-ci-failure/</link><pubDate>Sat, 11 Apr 2026 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/fastlane-keychain-ghost-dependency-ci-failure/</guid><description>Jenkins 上的 Fastlane iOS build 突然連續失敗，排查發現是遷移到 match 後遺留的 unlock_keychain 指令依賴一個不該存在的 keychain。記錄從症狀到根因的完整除錯過程，以及 CI 環境中幽靈依賴的危險性。</description></item><item><title>廠商說不支援 URL Scheme：跨 App 綁定從自訂協議遷移到 Universal Link 的完整實錄</title><link>https://peter-notes.com/posts/flutter-universal-link-migration-from-url-scheme/</link><pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/flutter-universal-link-migration-from-url-scheme/</guid><description>第三方裝置廠商不支援 URL Scheme 回調，要求改用 Universal Link。從 AASA 設定、Android App Links、token 安全驗證到跨平台 fallback 策略，完整記錄遷移過程，以及上線後踩到的 Play Store 簽名指紋陷阱和 token 靜默失敗問題。</description></item><item><title>Jenkins Multibranch Pipeline 的 Tag 大掃除</title><link>https://peter-notes.com/posts/jenkins-multibranch-git-tag-cleanup/</link><pubDate>Thu, 09 Apr 2026 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/jenkins-multibranch-git-tag-cleanup/</guid><description>當 Jenkins Multibranch Pipeline 累積了數百個過時的 Git Tag，如何用 shell 腳本批次清理三個 repo 共 900 多個 tag，並只保留每個版本系列的最新版本。</description></item><item><title>Kubernetes 節點 DiskPressure 事故：部署失敗到緊急救援的完整記錄</title><link>https://peter-notes.com/posts/kubernetes-node-diskpressure-incident/</link><pubDate>Thu, 26 Mar 2026 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/kubernetes-node-diskpressure-incident/</guid><description>EKS 部署失敗後發現 Staging 節點因磁碟空間不足而 NotReady，記錄從發現問題、診斷根因到緊急恢復的完整過程，以及如何設定自動清理機制防止再次發生。</description></item><item><title>從 53 種食物到 13,152 種：五國食物資料庫 ETL 管線設計實錄</title><link>https://peter-notes.com/posts/usda-fooddata-etl-pipeline-design/</link><pubDate>Tue, 17 Mar 2026 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/usda-fooddata-etl-pipeline-design/</guid><description>從實戰出發，記錄如何設計一條 Python ETL 管線，整合台灣、日本、中國、USDA 四個政府食物營養資料庫，並處理 API 格式不一致、缺少分類欄位等真實踩坑經驗。</description></item><item><title>Google Play 警告消不掉：Fastlane 上傳 Native Debug Symbols 的三個陷阱</title><link>https://peter-notes.com/posts/fastlane-native-symbols-google-play/</link><pubDate>Tue, 24 Feb 2026 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/fastlane-native-symbols-google-play/</guid><description>Google Play Console 一直警告缺少偵錯符號檔，明明 Fastlane 有寫上傳邏輯卻沒有作用。問題不在程式碼邏輯，而是 Fastlane 路徑解析機制、supply API 參數衝突、以及 CI 架構設計上的耦合。</description></item><item><title>後端修好了，前端卻沒跟上：Vue 網頁版的 JWT Refresh 機制從零補上</title><link>https://peter-notes.com/posts/vue-jwt-refresh-token-flutter-sso/</link><pubDate>Tue, 24 Feb 2026 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/vue-jwt-refresh-token-flutter-sso/</guid><description>Flutter App 透過 SSO 開啟 Vue 網頁，但 JWT 15 分鐘過期後結帳頁直接報錯。問題不在後端，而是 Vue 從來沒有 refresh token 機制。從跨平台 token 傳遞到 axios interceptor 自動續約的完整修復過程。</description></item><item><title>Docker BuildKit Cache Mount 的隱形陷阱</title><link>https://peter-notes.com/posts/docker-buildkit-cache-mount-stale-build/</link><pubDate>Wed, 18 Feb 2026 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/docker-buildkit-cache-mount-stale-build/</guid><description>深入分析 Docker BuildKit 的 --mount=type=cache 如何在 CI/CD 中導致部署了舊版程式碼，以及為什麼 --no-cache 旗標無法解決這個問題。從四次失敗部署中拆解 Docker 快取的三層機制。</description></item><item><title>Flutter iOS 冷啟動閃退：Debug 模式的隱藏陷阱</title><link>https://peter-notes.com/posts/flutter-ios-cold-start-crash-debug-mode/</link><pubDate>Tue, 17 Feb 2026 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/flutter-ios-cold-start-crash-debug-mode/</guid><description>深入分析 Flutter iOS App 從主畫面啟動時閃退的根本原因：iOS 14+ 的 ptrace 安全限制導致 Debug 模式無法獨立運行，以及如何正確診斷和解決這個問題。</description></item><item><title>功能部署後憑空消失？一場 Jenkins Workspace 的除錯之旅</title><link>https://peter-notes.com/posts/jenkins-workspace-stale-code-debugging/</link><pubDate>Thu, 12 Feb 2026 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/jenkins-workspace-stale-code-debugging/</guid><description>深入分析 Jenkins Pipeline 中因缺少 checkout scm 導致 workspace 未同步到 git tag commit，造成新功能部署後消失的問題。從 Kubernetes Pod 內檢查實際檔案、比對 Git tag 內容，到發現 Jenkins workspace 持久化機制的隱形陷阱，完整記錄除錯過程、根因分析與三項防範措施</description></item><item><title>升級 Strapi v5.31+ 後 JWT 過期就被登出？問題藏在你沒注意到的內建路由裡</title><link>https://peter-notes.com/posts/strapi-v5-auth-refresh-route-pitfall/</link><pubDate>Fri, 06 Feb 2026 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/strapi-v5-auth-refresh-route-pitfall/</guid><description>深入剖析 Strapi v5.31+ 將 /auth/refresh 改為內建路由後，導致 JWT 過期呼叫 refresh 回傳 403 的根因與修復方式。一個版本升級隱含的行為變更，如何讓除錯方向完全走偏。</description></item><item><title>AWS S3 Upload Failed: The Bucket Does Not Allow ACLs</title><link>https://peter-notes.com/posts/aws-s3-acl-upload-error/</link><pubDate>Fri, 30 Jan 2026 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/aws-s3-acl-upload-error/</guid><description>深入探討 AWS S3 bucket 在 2023 年後預設禁用 ACL 導致 Strapi 上傳圖片失敗的問題，包含完整的除錯過程與解決方案</description></item><item><title>當授權資料不可信時，我選擇讓系統安靜地退後一步</title><link>https://peter-notes.com/posts/authorization-degraded-mode-design/</link><pubDate>Tue, 20 Jan 2026 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/authorization-degraded-mode-design/</guid><description>當 RBAC（Role-Based Access Control）的 Link Table 資料不正確時，系統該全站拒絕、繼續相信 cache、還是進入 degraded mode？這篇文章分享我的設計決策與實作方式</description></item><item><title>資料庫同步的隱藏陷阱：Link Table 的重要性</title><link>https://peter-notes.com/posts/database-sync-link-table-pitfall/</link><pubDate>Tue, 20 Jan 2026 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/database-sync-link-table-pitfall/</guid><description>從一次 401 Unauthorized 錯誤出發，深入探討資料庫同步時容易遺漏的 Link Table 問題，以及如何預防這個常見的陷阱</description></item><item><title>Flutter CI/CD Debugging: Three Build Failures in One Day</title><link>https://peter-notes.com/posts/flutter-cicd-three-build-failures/</link><pubDate>Sat, 17 Jan 2026 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/flutter-cicd-three-build-failures/</guid><description>深入分析 Flutter 專案在 Jenkins CI/CD 中連續遇到的三個建置失敗：iOS Keychain 解鎖錯誤、file_picker Gradle 相容性問題、以及 Google Play Console 草稿狀態限制，並提供完整的解決方案。</description></item><item><title>Strapi Plugin 覆寫陷阱：為什麼你的 Override 沒有生效？</title><link>https://peter-notes.com/posts/strapi-plugin-factory-wrapper/</link><pubDate>Thu, 15 Jan 2026 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/strapi-plugin-factory-wrapper/</guid><description>深入解析 Strapi v5 plugin 架構中的 factory function 陷阱，以及如何使用 Factory Wrapper 模式正確覆寫 users-permissions plugin 的 service 和 controller</description></item><item><title>AWS 跨區域遷移後的技術債清理：Strapi URL 的隱藏陷阱</title><link>https://peter-notes.com/posts/aws-s3-cleanup-pitfall/</link><pubDate>Sat, 10 Jan 2026 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/aws-s3-cleanup-pitfall/</guid><description>接手專案後發現 AWS 遷移不完整，每月多燒 $90。清理過程中發現 Strapi 的 URL 儲存機制比想像中複雜，記錄完整的排查與修復過程。</description></item><item><title>Kubernetes Staging 環境省錢術：從踩坑到正確實作</title><link>https://peter-notes.com/posts/kubernetes-staging-cost-saving-lesson/</link><pubDate>Tue, 06 Jan 2026 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/kubernetes-staging-cost-saving-lesson/</guid><description>為了節省 Staging 環境費用撰寫開關腳本，卻因共用 nodegroup 導致意外。分享從踩坑到正確實作 nodeSelector 環境隔離的完整過程。</description></item><item><title>同樣的功能，為什麼 Flutter 比 Vue 難 Debug 十倍？從實戰到架構的六層反思</title><link>https://peter-notes.com/posts/flutter-vs-vue-debugging-complexity/</link><pubDate>Sun, 04 Jan 2026 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/flutter-vs-vue-debugging-complexity/</guid><description>同樣是「關於我們」頁面的顯示邏輯，Vue 改了十幾個 commit 都很順利，Flutter 卻卡了很久。本文從 Debug 實戰出發，延伸到 Domain Model 的防禦能力、Clean Architecture 的責任邊界、扁平架構的取捨、BFF 的可靠性價值，最後探討交接代碼的信任陷阱。</description></item><item><title>刪了 52 萬筆資料，為什麼硬碟空間沒變小？</title><link>https://peter-notes.com/posts/postgresql-vacuum-disk-space/</link><pubDate>Wed, 31 Dec 2025 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/postgresql-vacuum-disk-space/</guid><description>實戰經驗：刪除 52 萬筆通知資料後，資料表從 207MB 完全沒縮小。深入理解 PostgreSQL MVCC 機制，比較 SQLite 的差異，以及為什麼 VACUUM 是每個後端工程師必須知道的知識。</description></item><item><title>Flutter App 首頁 Banner 消失之謎：一場無效 API Token 的偵探之旅</title><link>https://peter-notes.com/posts/flutter-banner-401-invalid-token-debugging/</link><pubDate>Tue, 30 Dec 2025 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/flutter-banner-401-invalid-token-debugging/</guid><description>深入剖析 Flutter App 首頁 Banner 無法顯示的問題，從 git commit 追蹤到 GraphQL 認證機制，揭開「帶無效憑證比不帶憑證更糟糕」的技術真相</description></item><item><title>為什麼技術選型 CMS 我要選 Strapi？2024 年中的預算與系統分析決策</title><link>https://peter-notes.com/posts/why-choose-strapi-cms-2024/</link><pubDate>Tue, 23 Dec 2025 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/why-choose-strapi-cms-2024/</guid><description>深入分析 2024 年 6 月為公司進行 CMS 技術選型的決策過程，從 Headless CMS 架構、自動化 API 生成、到實際人力成本節省的完整考量</description></item><item><title>15 次 Build Failed：一場 Jenkins + Flutter CI/CD 的史詩級除錯之旅</title><link>https://peter-notes.com/posts/2025-12-21-jenkins-flutter-cicd-debugging-journey/</link><pubDate>Sun, 21 Dec 2025 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/2025-12-21-jenkins-flutter-cicd-debugging-journey/</guid><description>從 bundle exec 版本不一致、Bundler 權限錯誤、Discord Webhook 實作、CocoaPods 路徑問題、Build Number SSOT 架構、Ruby 版本相容性，到最終的 git describe 隨機行為——完整記錄 15 個 commits 的除錯歷程。</description></item><item><title>Claude Code Token 不夠用？從 $20 升到 $100 還是燒光：我學到的教訓</title><link>https://peter-notes.com/posts/2025-12-20-claude-code-token-optimization-skills/</link><pubDate>Sat, 20 Dec 2025 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/2025-12-20-claude-code-token-optimization-skills/</guid><description>從 Claude Code Pro Plan 升級到 Max Plan 還是 token 不夠用？本文分享如何透過使用正確的 Skill 來大幅降低 token 消耗，讓 AI 輔助開發更有效率。</description></item><item><title>Cursor Browser Visual Editor 深度解析：AI 驅動的視覺化前端開發革命</title><link>https://peter-notes.com/posts/2025-12-19-cursor-browser-visual-editor-intro/</link><pubDate>Fri, 19 Dec 2025 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/2025-12-19-cursor-browser-visual-editor-intro/</guid><description>深入探討 Cursor Browser Visual Editor 的創新功能，了解它如何透過拖拉元素、即時屬性調整和自然語言指令，徹底改變前端開發的工作流程</description></item><item><title>Linux 壓縮工具完全指南：gzip、bzip2、xz、zstd、7z 效能全面比較</title><link>https://peter-notes.com/posts/2025-12-19-compression-tools-comparison/</link><pubDate>Fri, 19 Dec 2025 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/2025-12-19-compression-tools-comparison/</guid><description>深入比較 Linux 常用壓縮工具 gzip、pigz、bzip2、xz、zstd、7z 的壓縮率與速度，並提供實測數據與最佳使用場景建議</description></item><item><title>在 Kubernetes 上部署 OV SSL 證書：完整實戰指南</title><link>https://peter-notes.com/posts/2025-12-10-kubernetes-twca-ssl-deployment/</link><pubDate>Wed, 10 Dec 2025 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/2025-12-10-kubernetes-twca-ssl-deployment/</guid><description>詳細說明如何在 Kubernetes 環境中部署台灣網路認證 (TWCA) 簽發的 OV SSL 證書，包含 SSL 證書分級、DNS 驗證、Route53 配置、TLS Secret 管理、Ingress 設定與 HSTS 安全機制</description></item><item><title>會員資料不見？這不是我沒要求，是外包商沒做完整的 OAuth 2.0</title><link>https://peter-notes.com/posts/oauth-refresh-token-outsourcing-lessons/</link><pubDate>Sat, 06 Dec 2025 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/oauth-refresh-token-outsourcing-lessons/</guid><description>從會員反映資料消失，到發現是 Token 過期問題，再到翻出合約證明外包商沒做完整的 OAuth 2.0。一個技術問題背後，揭露的是外包驗收與合約管理的重要教訓。</description></item><item><title>Subagent-Driven 與 Parallel Session：AI 協作開發的兩種典範</title><link>https://peter-notes.com/posts/2025-11-30-subagent_parallel_session/</link><pubDate>Sun, 30 Nov 2025 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/2025-11-30-subagent_parallel_session/</guid><description>深入探討 Subagent-Driven 和 Parallel Session 兩種 AI 協作開發模式，從核心概念、技術實作到實戰案例，幫助你選擇最適合的開發策略。</description></item><item><title>Google Antigravity：AI 開發的典範轉移，從輔助編碼到自主開發</title><link>https://peter-notes.com/posts/google-antigravity-review/</link><pubDate>Sat, 22 Nov 2025 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/google-antigravity-review/</guid><description>深入探討 Google Antigravity 這個革命性的代理優先開發平台，從核心概念、創新功能到實戰案例，並誠實評估其優勢與當前限制。</description></item><item><title>Vue SPA 預渲染與 OpenGraph 完整指南：從問題到解決方案</title><link>https://peter-notes.com/posts/vue-spa-prerender-guide/</link><pubDate>Sun, 16 Nov 2025 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/vue-spa-prerender-guide/</guid><description>深入探討 Vue SPA 的 SEO 和社交媒體分享挑戰，介紹 Run-time Prerender 和 Build-time Prerender 兩種解決方案的實作經驗</description></item><item><title>一次錯誤部署引發的 PostgreSQL Sequence 災難：為什麼使用者突然無法解鎖動畫？</title><link>https://peter-notes.com/posts/postgresql-sequence-disaster/</link><pubDate>Sun, 09 Nov 2025 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/postgresql-sequence-disaster/</guid><description>記錄一次生產環境中因錯誤部署導致的 PostgreSQL Sequence 不同步問題，包含完整的問題分析、修復過程和預防措施</description></item><item><title>Skills 實用技巧：最佳實踐、疑難排解與 30 個靈感清單</title><link>https://peter-notes.com/posts/claude-skills-best-practices/</link><pubDate>Sun, 02 Nov 2025 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/claude-skills-best-practices/</guid><description>整理所有實用技巧、最佳實踐和疑難排解方法，並提供 30 個立即可用的 Skill 靈感</description></item><item><title>進階應用：企業級 Skills 與官方範例深度解析</title><link>https://peter-notes.com/posts/claude-skills-advanced/</link><pubDate>Sat, 01 Nov 2025 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/claude-skills-advanced/</guid><description>探索企業級 Skills 的設計模式，深度解析官方範例，學習 Skills 組合使用</description></item><item><title>手把手實戰：打造你的第一個 Claude Skill（微服務健康監控儀表板）</title><link>https://peter-notes.com/posts/claude-skills-hands-on/</link><pubDate>Sun, 26 Oct 2025 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/claude-skills-hands-on/</guid><description>從零開始建立一個企業級實用的 Skill，完整的程式碼和詳細步驟教學</description></item><item><title>Claude Code Skills 入門：讓 AI 成為你的專業團隊成員</title><link>https://peter-notes.com/posts/claude-skills-intro/</link><pubDate>Sat, 25 Oct 2025 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/claude-skills-intro/</guid><description>探索 Claude Code Skills 的核心概念，了解它如何改變你與 AI 的協作方式</description></item><item><title>Swift Redux 架構完整指南：從 Reducer 到 Middleware 的狀態管理實踐</title><link>https://peter-notes.com/posts/swift-redux-architecture/</link><pubDate>Thu, 21 Aug 2025 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/swift-redux-architecture/</guid><description>深入解析 Swift Redux 架構設計，包含 Reducer、Store、Middleware 的完整實作，搭配清晰的架構圖與資料流程圖，掌握可預測的狀態管理模式</description></item><item><title>解決 CKEditor 圖片水平排版在前端顯示為垂直排列的問題</title><link>https://peter-notes.com/posts/ckeditor-image-alignment-fix/</link><pubDate>Fri, 01 Aug 2025 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/ckeditor-image-alignment-fix/</guid><description>深入探討 Strapi CKEditor 5 與前端整合時的圖片排版問題，從 CSS 浮動原理到響應式設計，提供完整的問題分析與解決方案</description></item><item><title>Vue.js SPA 社交分享完整指南：解決 Facebook/LINE OpenGraph 爬蟲問題</title><link>https://peter-notes.com/posts/vue-spa-opengraph-facebook-line/</link><pubDate>Thu, 31 Jul 2025 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/vue-spa-opengraph-facebook-line/</guid><description>深入探討 Vue.js SPA 應用在社交媒體分享時遇到的 OpenGraph 問題，從原因分析到 Meta Server 實作，完整解決方案與部署策略</description></item><item><title>前端登入失敗的真兇：深入理解 CORS 問題與實戰解法</title><link>https://peter-notes.com/posts/frontend-login-cors-issues/</link><pubDate>Tue, 01 Jul 2025 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/frontend-login-cors-issues/</guid><description>從同源政策到 CORS 預檢請求，深入理解跨來源資源共用的運作原理，並提供 Strapi、Express、Nginx 等實戰設定範例與完整排查流程</description></item><item><title>深入理解 Kubernetes Pod：從基礎概念到實戰應用</title><link>https://peter-notes.com/posts/what-is-k8s-pod/</link><pubDate>Thu, 12 Jun 2025 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/what-is-k8s-pod/</guid><description>完整解析 Kubernetes Pod 的核心概念、架構設計、生命週期管理、設計模式與實戰應用，從零開始掌握 K8s 最基本的部署單元</description></item><item><title>從 GitLab CI 到 Kubernetes 自動化部署：完整 CI/CD Pipeline 實戰指南</title><link>https://peter-notes.com/posts/gitlab-ci-to-k8s-deployment/</link><pubDate>Thu, 05 Jun 2025 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/gitlab-ci-to-k8s-deployment/</guid><description>深入解析如何建立完整的 CI/CD Pipeline，從 GitLab CI 建置 Docker 映像、推送到 AWS ECR，到自動化部署至 Kubernetes 叢集的完整實戰流程</description></item><item><title>如何使用 psql 連線 AWS RDS PostgreSQL 並在容器與 Pod 中操作</title><link>https://peter-notes.com/posts/psql-connect-aws-rds-k8s/</link><pubDate>Mon, 26 May 2025 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/psql-connect-aws-rds-k8s/</guid><description>深度解析如何透過各種方式連線 AWS RDS PostgreSQL，包含直接連線、SSH 隧道、Bastion Host、Docker 容器、Kubernetes Pod，以及完整的 psql 命令參考與安全最佳實踐</description></item><item><title>整合 Google 登入至 Strapi：在 Kubernetes 上解決「Secure Cookie over Unencrypted Connection」的實戰紀錄</title><link>https://peter-notes.com/posts/strapi-google-auth-k8s-secure-cookie/</link><pubDate>Fri, 16 May 2025 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/strapi-google-auth-k8s-secure-cookie/</guid><description>深度解析如何在 Kubernetes 上整合 Google OAuth 到 Strapi CMS，詳細說明 Secure Cookie 錯誤的根本原因、Ingress 代理設定、以及完整的生產環境部署方案</description></item><item><title>解決 Strapi CMS 正式環境空白頁的踩坑經驗分享</title><link>https://peter-notes.com/posts/strapi-cms-blank-page-production/</link><pubDate>Wed, 07 May 2025 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/strapi-cms-blank-page-production/</guid><description>深入探討 Strapi CMS 部署到正式環境後出現空白頁的問題，從 CSP (Content Security Policy) 原理到實戰解決方案，包含完整的排查流程與安全配置最佳實踐</description></item><item><title>解決 Kubernetes 多餘 Pod 問題與 CrashLoopBackOff 的實戰心得</title><link>https://peter-notes.com/posts/k8s-crashloopbackoff-troubleshooting/</link><pubDate>Tue, 06 May 2025 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/k8s-crashloopbackoff-troubleshooting/</guid><description>深入探討 Kubernetes 部署時出現多餘 Pod 和 CrashLoopBackOff 的原因、排查過程與解決方案，包含 Deployment、ReplicaSet 運作機制和實用的 kubectl 指令技巧</description></item><item><title>Strapi 5</title><link>https://peter-notes.com/posts/strapi-5-intro/</link><pubDate>Wed, 15 Jan 2025 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/strapi-5-intro/</guid><description>Strapi 5 初探：深入研究 Admin Panel 客製化 UI 與 Components 的可能性，分享官方 Design System 資源與樣式覆蓋策略。</description></item><item><title>Strapi 自訂搜尋功能：讓 Admin 面板支援多欄位搜尋</title><link>https://peter-notes.com/posts/strapi-custom-search/</link><pubDate>Sun, 27 Oct 2024 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/strapi-custom-search/</guid><description>在 Strapi v5 中實作自訂搜尋邏輯，讓 Admin 面板支援跨關聯的多欄位搜尋，解決只能搜尋單一欄位的限制</description></item><item><title>EKS Pod 卡在 Pending？從 Too Many Pods 到 ENI / CNI 限制全面解析</title><link>https://peter-notes.com/posts/eks-pod-pending-too-many-pods/</link><pubDate>Sat, 15 Jun 2024 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/eks-pod-pending-too-many-pods/</guid><description>深入解析 AWS EKS Pod 卡在 Pending 狀態的根本原因：從 EC2 ENI 網卡限制到 VPC CNI 的 IP 分配機制，揭露 Too Many Pods 錯誤背後的真相，並提供五種實戰解決方案。</description></item><item><title>全端專案 AWS EKS 雲端架構深度解析</title><link>https://peter-notes.com/posts/aws-eks-healthcare-platform-architecture/</link><pubDate>Wed, 05 Jun 2024 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/aws-eks-healthcare-platform-architecture/</guid><description>深入探討全端專案在 AWS 上的完整雲端架構設計，包括 EKS 叢集配置、微服務部署、Jenkins CI/CD、第三方整合及高可用性設計</description></item><item><title>解決 API 回應中的 BOM (Byte-Order Mark) 字元問題</title><link>https://peter-notes.com/posts/api-related-notes/</link><pubDate>Wed, 15 May 2024 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/api-related-notes/</guid><description>深入探討 API 回應中不可見的 BOM 字元如何導致 JSON 解析失敗，以及如何診斷和解決這個隱藏的問題。完整的 Swift 解決方案與預防措施。</description></item><item><title>關於顏色: Xcode中使用顏色樣本</title><link>https://peter-notes.com/posts/xcode-color-literals/</link><pubDate>Wed, 10 Apr 2024 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/xcode-color-literals/</guid><description>Xcode 開發技巧：如何使用 Color Literal 在程式碼中直接預覽和選取顏色，讓 UI 開發更直覺。</description></item><item><title>在MAC上消除 ^M 字符</title><link>https://peter-notes.com/posts/remove-m-character-mac/</link><pubDate>Fri, 23 Feb 2024 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/remove-m-character-mac/</guid><description>解決 Git 換行符號問題：如何在 Mac 上消除 Windows 檔案帶來的 ^M (CRLF) 字元，統一專案的換行格式。</description></item><item><title>從MAC移除 FortiClient.app</title><link>https://peter-notes.com/posts/remove-forticlient-mac/</link><pubDate>Thu, 15 Feb 2024 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/remove-forticlient-mac/</guid><description>FortiClient 移除教學：解決 Mac 上無法直接刪除 FortiClient 的問題，使用終端機指令解鎖並徹底移除應用程式。</description></item><item><title>contains</title><link>https://peter-notes.com/posts/swift-contains/</link><pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/swift-contains/</guid><description>Swift 開發疑難排解：為什麼 Array 的 .contains() 方法回傳 true 但邏輯卻未執行？深入探討 Equatable 協定與物件判等的實作細節。</description></item><item><title>解決 macOS 上 Rollup rollup.darwin-arm64.node 模組錯誤與 Gatekeeper 阻擋問題</title><link>https://peter-notes.com/posts/fix-rollup-darwin-arm64-error/</link><pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/fix-rollup-darwin-arm64-error/</guid><description>深入解析 macOS Apple Silicon (M1/M2/M3) 上 Rollup 報錯 Cannot find module @rollup/rollup-darwin-arm64 及 Gatekeeper 阻擋問題的完整解決方案。</description></item><item><title>iOS : 記憶體管理</title><link>https://peter-notes.com/posts/ios-memory-management/</link><pubDate>Wed, 20 Dec 2023 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/ios-memory-management/</guid><description>深入淺出 iOS 記憶體管理機制：從 ARC、引用計數到 Strong/Weak/Unowned 引用類型的應用場景，以及如何避免 Retain Cycle (循環引用) 導致的記憶體洩漏。</description></item><item><title>VSCode 顯示隱藏資料夾</title><link>https://peter-notes.com/posts/vscode-show-hidden-folders/</link><pubDate>Tue, 14 Nov 2023 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/vscode-show-hidden-folders/</guid><description>VSCode 設定教學：如何在檔案總管中顯示或隱藏特定資料夾（如 .git, .idea），讓你的開發環境更乾淨或更完整。</description></item><item><title>iOS中的associated type和associated value是不同的概念</title><link>https://peter-notes.com/posts/ios-associated-type-vs-value/</link><pubDate>Fri, 27 Oct 2023 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/ios-associated-type-vs-value/</guid><description>釐清 Swift 中 Associated Type (Protocol 關聯類型) 與 Associated Value (Enum 關聯值) 的區別，透過實例解說兩者的應用場景與語法差異。</description></item><item><title>搜尋目錄下每一個檔案的特定字/檔案名稱</title><link>https://peter-notes.com/posts/search-files-by-name/</link><pubDate>Sat, 23 Sep 2023 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/search-files-by-name/</guid><description>Linux/Mac 終端機技巧：使用 grep 和 find 指令快速搜尋目錄下所有檔案的特定關鍵字或檔名，提升開發效率。</description></item><item><title>iOS如何把專案打包framwork後也讓原本的pod/套件包入framework ?</title><link>https://peter-notes.com/posts/ios-embed-pods-in-framework/</link><pubDate>Fri, 22 Sep 2023 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/ios-embed-pods-in-framework/</guid><description>iOS Framework 打包教學：如何將專案相依的 CocoaPods 套件一併打包進 Framework 中，解決 Umbrella Header 與 Runtime 缺漏問題。</description></item><item><title>面試必考：OSI 7層模型完全指南 - 從記憶口訣到實戰應用</title><link>https://peter-notes.com/posts/osi-7-layers-complete-guide/</link><pubDate>Sun, 20 Aug 2023 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/osi-7-layers-complete-guide/</guid><description>深入解析 OSI 7層模型：記憶口訣、每層功能詳解、常見協定、TCP/IP 對應關係、封包傳輸流程，以及面試常見問題與實戰經驗分享。</description></item><item><title>MacOS[祕技] Dock的隱藏與顯示</title><link>https://peter-notes.com/posts/macos-dock-hide-show/</link><pubDate>Fri, 04 Aug 2023 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/macos-dock-hide-show/</guid><description>分享 macOS 終端機指令，教你如何調整 Dock 的隱藏延遲時間，讓你的 Mac 操作更流暢，不再被慢吞吞的動畫拖慢速度。</description></item><item><title>Xcode Hotkey</title><link>https://peter-notes.com/posts/xcode-hotkeys/</link><pubDate>Wed, 26 Jul 2023 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/xcode-hotkeys/</guid><description>提升 iOS 開發效率的必備 Xcode 快捷鍵整理，包含導航、編輯、除錯等常用指令，讓你的手指在鍵盤上飛舞。</description></item><item><title>RxSwift -bindViewModel</title><link>https://peter-notes.com/posts/rxswift-bind-viewmodel/</link><pubDate>Fri, 21 Jul 2023 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/rxswift-bind-viewmodel/</guid><description>學習如何使用 RxSwift 的 bind(to:) 方法將 ViewModel 的資料綁定到 View，實現響應式 UI 更新，並探討常見的記憶體管理陷阱。</description></item><item><title>Flutter 狀態監聽完全指南：Provider、Bloc、Riverpod、GetX 深度比較</title><link>https://peter-notes.com/posts/flutter-state-listening-complete-guide/</link><pubDate>Thu, 13 Jul 2023 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/flutter-state-listening-complete-guide/</guid><description>深入探討 Flutter 四大狀態管理方案的監聽機制：Provider、Bloc、Riverpod、GetX 的核心原理、實戰應用與最佳實踐，幫助你選擇最適合的狀態管理方案。</description></item></channel></rss>