<?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>教學 on Tarragon</title><link>https://tarrragon.github.io/blog/tags/%E6%95%99%E5%AD%B8/</link><description>Recent content in 教學 on Tarragon</description><generator>Hugo -- gohugo.io</generator><language>zh-TW</language><copyright>Tarragon (CC BY 4.0)</copyright><lastBuildDate>Fri, 03 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://tarrragon.github.io/blog/tags/%E6%95%99%E5%AD%B8/index.xml" rel="self" type="application/rss+xml"/><item><title>CI/CD 教學</title><link>https://tarrragon.github.io/blog/ci/</link><pubDate>Wed, 06 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/ci/</guid><description>&lt;p>CI/CD 教學的核心目標是把「變更如何被驗證、建置、交付」寫成可重播流程。&lt;a href="https://tarrragon.github.io/blog/ci/knowledge-cards/ci-pipeline/" data-link-title="CI Pipeline" data-link-desc="說明持續整合如何在合併前自動驗證變更品質與相容性">CI Pipeline&lt;/a> 負責驗證變更是否可信，&lt;a href="https://tarrragon.github.io/blog/ci/knowledge-cards/cd-pipeline/" data-link-title="CD Pipeline" data-link-desc="說明持續交付如何把已驗證產物推進到目標環境">CD Pipeline&lt;/a> 負責把可信 &lt;a href="https://tarrragon.github.io/blog/ci/knowledge-cards/artifact/" data-link-title="Artifact" data-link-desc="說明 CI/CD 中可被驗證、保存與發布的交付產物">artifact&lt;/a> 交付到目標環境；兩者共享 gate、artifact、環境與回復路徑，但不同部署場域的細節差異很大。&lt;/p>
&lt;p>CI/CD 的責任是提供一致的判讀入口。當 workflow 顯示失敗時，團隊需要能快速判斷是 lint、test、build、package、&lt;a href="https://tarrragon.github.io/blog/ci/knowledge-cards/artifact-handoff/" data-link-title="Artifact Handoff" data-link-desc="說明測試與部署如何共用同一份可追溯產物">Artifact Handoff&lt;/a>、deploy 還是 &lt;a href="https://tarrragon.github.io/blog/ci/knowledge-cards/rollback-strategy/" data-link-title="Rollback Strategy" data-link-desc="說明發布異常時如何快速回到已知可用狀態">Rollback Strategy&lt;/a> 階段出問題，並知道下一步該回到本機重現、修正、重新提交，還是暫停發布。&lt;/p>
&lt;h3 id="前置知識卡片">&lt;a href="https://tarrragon.github.io/blog/ci/knowledge-cards/" data-link-title="Knowledge Cards" data-link-desc="用原子化卡片整理 CI/CD 章節的核心術語，讓流程文章專注在判讀與決策">前置知識卡片&lt;/a>&lt;/h3>
&lt;p>用原子化卡片整理 &lt;a href="https://tarrragon.github.io/blog/ci/knowledge-cards/artifact/" data-link-title="Artifact" data-link-desc="說明 CI/CD 中可被驗證、保存與發布的交付產物">Artifact&lt;/a>、&lt;a href="https://tarrragon.github.io/blog/ci/knowledge-cards/required-checks/" data-link-title="Required Checks" data-link-desc="說明 pull request 的必要檢查如何作為合併 gate">Required Checks&lt;/a>、&lt;a href="https://tarrragon.github.io/blog/ci/knowledge-cards/artifact-handoff/" data-link-title="Artifact Handoff" data-link-desc="說明測試與部署如何共用同一份可追溯產物">Artifact Handoff&lt;/a>、&lt;a href="https://tarrragon.github.io/blog/ci/knowledge-cards/environment-protection/" data-link-title="Environment Protection" data-link-desc="說明目標環境的審核、權限與放行條件如何保護發布">Environment Protection&lt;/a>、&lt;a href="https://tarrragon.github.io/blog/ci/knowledge-cards/preview-environment/" data-link-title="Preview Environment" data-link-desc="說明 pull request 變更如何在隔離部署環境中被驗證">Preview Environment&lt;/a>、&lt;a href="https://tarrragon.github.io/blog/ci/knowledge-cards/rollout-strategy/" data-link-title="Rollout Strategy" data-link-desc="說明新版本如何以可控節奏推進到全部流量">Rollout Strategy&lt;/a>、&lt;a href="https://tarrragon.github.io/blog/ci/knowledge-cards/rollback-strategy/" data-link-title="Rollback Strategy" data-link-desc="說明發布異常時如何快速回到已知可用狀態">Rollback Strategy&lt;/a>、&lt;a href="https://tarrragon.github.io/blog/ci/knowledge-cards/migration/" data-link-title="Migration" data-link-desc="說明資料或結構變更如何在服務不中斷前提下受控推進">Migration&lt;/a>、&lt;a href="https://tarrragon.github.io/blog/ci/knowledge-cards/backfill/" data-link-title="Backfill" data-link-desc="說明資料處理與 migration 中如何受控補算歷史資料">Backfill&lt;/a>、&lt;a href="https://tarrragon.github.io/blog/ci/knowledge-cards/image-digest/" data-link-title="Image Digest" data-link-desc="說明 container image digest 如何作為不可變產物身分，支撐掃描、推進與 runtime 追溯">Image Digest&lt;/a>、&lt;a href="https://tarrragon.github.io/blog/ci/knowledge-cards/release-channel/" data-link-title="Release Channel" data-link-desc="說明 stable、beta、internal 等發行通道如何控制 artifact 接觸到的使用者範圍">Release Channel&lt;/a>、&lt;a href="https://tarrragon.github.io/blog/ci/knowledge-cards/infrastructure-drift/" data-link-title="Infrastructure Drift" data-link-desc="說明真實基礎設施狀態與 IaC 宣告分叉時的偵測、判讀與修復責任">Infrastructure Drift&lt;/a>、&lt;a href="https://tarrragon.github.io/blog/ci/knowledge-cards/function-alias/" data-link-title="Function Alias" data-link-desc="說明 serverless function alias 如何把穩定入口指向特定版本並支援流量切換與回復">Function Alias&lt;/a> 與 &lt;a href="https://tarrragon.github.io/blog/ci/knowledge-cards/flaky-test/" data-link-title="Flaky Test" data-link-desc="說明非決定性測試如何降低 CI gate 信任度與治理方式">Flaky Test&lt;/a> 等核心術語。流程文章專注情境判讀與決策順序，術語背景交由卡片維持一致。&lt;/p>
&lt;h2 id="學習路線">學習路線&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>章節&lt;/th>
 &lt;th>主題&lt;/th>
 &lt;th>核心責任&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&lt;a href="github-actions-failure-flow/">CI 失敗到修復發布流程&lt;/a>&lt;/td>
 &lt;td>Failure routing&lt;/td>
 &lt;td>從失敗 workflow 判斷下一步路由&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;a href="ci-gate-workflow-boundary/">CI gate 與 workflow 邊界&lt;/a>&lt;/td>
 &lt;td>Workflow boundary&lt;/td>
 &lt;td>說明 required checks、needs 與 artifact handoff&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;a href="frontend-deploy/">前端部署 CI/CD&lt;/a>&lt;/td>
 &lt;td>Frontend deployment&lt;/td>
 &lt;td>靜態站、SPA、CDN 與 preview environment&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;a href="backend-deploy/">後端部署 CI/CD&lt;/a>&lt;/td>
 &lt;td>Backend deployment&lt;/td>
 &lt;td>API / worker 的 migration、rollout 與 rollback&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;a href="app-deploy/">App 部署 CI/CD&lt;/a>&lt;/td>
 &lt;td>App deployment&lt;/td>
 &lt;td>mobile / desktop app 的簽章、審核與版本發布&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;a href="docker-deploy/">Docker / Image 部署 CI/CD&lt;/a>&lt;/td>
 &lt;td>Image deployment&lt;/td>
 &lt;td>image build、scan、tag、registry 與 runtime&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;a href="serverless-deploy/">Serverless 部署 CI/CD&lt;/a>&lt;/td>
 &lt;td>Serverless deployment&lt;/td>
 &lt;td>function 版本、權限、事件觸發與 alias rollback&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;a href="data-pipeline-deploy/">Data Pipeline 部署 CI/CD&lt;/a>&lt;/td>
 &lt;td>Data pipeline deployment&lt;/td>
 &lt;td>schema 相容、backfill、checkpoint 與 rerun&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;a href="iac-platform-deploy/">IaC / Platform 部署 CI/CD&lt;/a>&lt;/td>
 &lt;td>IaC deployment&lt;/td>
 &lt;td>plan/apply、drift、state 與環境治理&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;a href="desktop-client-deploy/">Desktop Client 部署 CI/CD&lt;/a>&lt;/td>
 &lt;td>Desktop client deployment&lt;/td>
 &lt;td>桌面安裝包簽章、公證、更新通道與回退&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;a href="package-library-release/">Package / Library Release CI/CD&lt;/a>&lt;/td>
 &lt;td>Package release deployment&lt;/td>
 &lt;td>SDK / NPM / PyPI 的版本、契約與發版供應鏈治理&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;a href="blog-project-deploy/">本 blog 專案部署&lt;/a>&lt;/td>
 &lt;td>Project case&lt;/td>
 &lt;td>Hugo、Pagefind、GitHub Pages 與本專案 workflow&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;a href="artifact-reproducibility/">Artifact 與可重播性&lt;/a>&lt;/td>
 &lt;td>Artifact reproducibility&lt;/td>
 &lt;td>讓 CI 產物能被測試與發布共用&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;a href="flaky-test-governance/">Flaky test 治理&lt;/a>&lt;/td>
 &lt;td>Flaky governance&lt;/td>
 &lt;td>把不穩定測試從雜訊變成可處理任務&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>學習路線先從失敗處理與 gate 邊界開始，因為 CI/CD 的價值會在紅燈時最清楚。當讀者能判讀失敗位置與下一步路由，再依部署場域進入前端、後端、App、Docker 或本 blog 專案案例。&lt;/p></description><content:encoded><![CDATA[<p>CI/CD 教學的核心目標是把「變更如何被驗證、建置、交付」寫成可重播流程。<a href="/blog/ci/knowledge-cards/ci-pipeline/" data-link-title="CI Pipeline" data-link-desc="說明持續整合如何在合併前自動驗證變更品質與相容性">CI Pipeline</a> 負責驗證變更是否可信，<a href="/blog/ci/knowledge-cards/cd-pipeline/" data-link-title="CD Pipeline" data-link-desc="說明持續交付如何把已驗證產物推進到目標環境">CD Pipeline</a> 負責把可信 <a href="/blog/ci/knowledge-cards/artifact/" data-link-title="Artifact" data-link-desc="說明 CI/CD 中可被驗證、保存與發布的交付產物">artifact</a> 交付到目標環境；兩者共享 gate、artifact、環境與回復路徑，但不同部署場域的細節差異很大。</p>
<p>CI/CD 的責任是提供一致的判讀入口。當 workflow 顯示失敗時，團隊需要能快速判斷是 lint、test、build、package、<a href="/blog/ci/knowledge-cards/artifact-handoff/" data-link-title="Artifact Handoff" data-link-desc="說明測試與部署如何共用同一份可追溯產物">Artifact Handoff</a>、deploy 還是 <a href="/blog/ci/knowledge-cards/rollback-strategy/" data-link-title="Rollback Strategy" data-link-desc="說明發布異常時如何快速回到已知可用狀態">Rollback Strategy</a> 階段出問題，並知道下一步該回到本機重現、修正、重新提交，還是暫停發布。</p>
<h3 id="前置知識卡片"><a href="/blog/ci/knowledge-cards/" data-link-title="Knowledge Cards" data-link-desc="用原子化卡片整理 CI/CD 章節的核心術語，讓流程文章專注在判讀與決策">前置知識卡片</a></h3>
<p>用原子化卡片整理 <a href="/blog/ci/knowledge-cards/artifact/" data-link-title="Artifact" data-link-desc="說明 CI/CD 中可被驗證、保存與發布的交付產物">Artifact</a>、<a href="/blog/ci/knowledge-cards/required-checks/" data-link-title="Required Checks" data-link-desc="說明 pull request 的必要檢查如何作為合併 gate">Required Checks</a>、<a href="/blog/ci/knowledge-cards/artifact-handoff/" data-link-title="Artifact Handoff" data-link-desc="說明測試與部署如何共用同一份可追溯產物">Artifact Handoff</a>、<a href="/blog/ci/knowledge-cards/environment-protection/" data-link-title="Environment Protection" data-link-desc="說明目標環境的審核、權限與放行條件如何保護發布">Environment Protection</a>、<a href="/blog/ci/knowledge-cards/preview-environment/" data-link-title="Preview Environment" data-link-desc="說明 pull request 變更如何在隔離部署環境中被驗證">Preview Environment</a>、<a href="/blog/ci/knowledge-cards/rollout-strategy/" data-link-title="Rollout Strategy" data-link-desc="說明新版本如何以可控節奏推進到全部流量">Rollout Strategy</a>、<a href="/blog/ci/knowledge-cards/rollback-strategy/" data-link-title="Rollback Strategy" data-link-desc="說明發布異常時如何快速回到已知可用狀態">Rollback Strategy</a>、<a href="/blog/ci/knowledge-cards/migration/" data-link-title="Migration" data-link-desc="說明資料或結構變更如何在服務不中斷前提下受控推進">Migration</a>、<a href="/blog/ci/knowledge-cards/backfill/" data-link-title="Backfill" data-link-desc="說明資料處理與 migration 中如何受控補算歷史資料">Backfill</a>、<a href="/blog/ci/knowledge-cards/image-digest/" data-link-title="Image Digest" data-link-desc="說明 container image digest 如何作為不可變產物身分，支撐掃描、推進與 runtime 追溯">Image Digest</a>、<a href="/blog/ci/knowledge-cards/release-channel/" data-link-title="Release Channel" data-link-desc="說明 stable、beta、internal 等發行通道如何控制 artifact 接觸到的使用者範圍">Release Channel</a>、<a href="/blog/ci/knowledge-cards/infrastructure-drift/" data-link-title="Infrastructure Drift" data-link-desc="說明真實基礎設施狀態與 IaC 宣告分叉時的偵測、判讀與修復責任">Infrastructure Drift</a>、<a href="/blog/ci/knowledge-cards/function-alias/" data-link-title="Function Alias" data-link-desc="說明 serverless function alias 如何把穩定入口指向特定版本並支援流量切換與回復">Function Alias</a> 與 <a href="/blog/ci/knowledge-cards/flaky-test/" data-link-title="Flaky Test" data-link-desc="說明非決定性測試如何降低 CI gate 信任度與治理方式">Flaky Test</a> 等核心術語。流程文章專注情境判讀與決策順序，術語背景交由卡片維持一致。</p>
<h2 id="學習路線">學習路線</h2>
<table>
  <thead>
      <tr>
          <th>章節</th>
          <th>主題</th>
          <th>核心責任</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="github-actions-failure-flow/">CI 失敗到修復發布流程</a></td>
          <td>Failure routing</td>
          <td>從失敗 workflow 判斷下一步路由</td>
      </tr>
      <tr>
          <td><a href="ci-gate-workflow-boundary/">CI gate 與 workflow 邊界</a></td>
          <td>Workflow boundary</td>
          <td>說明 required checks、needs 與 artifact handoff</td>
      </tr>
      <tr>
          <td><a href="frontend-deploy/">前端部署 CI/CD</a></td>
          <td>Frontend deployment</td>
          <td>靜態站、SPA、CDN 與 preview environment</td>
      </tr>
      <tr>
          <td><a href="backend-deploy/">後端部署 CI/CD</a></td>
          <td>Backend deployment</td>
          <td>API / worker 的 migration、rollout 與 rollback</td>
      </tr>
      <tr>
          <td><a href="app-deploy/">App 部署 CI/CD</a></td>
          <td>App deployment</td>
          <td>mobile / desktop app 的簽章、審核與版本發布</td>
      </tr>
      <tr>
          <td><a href="docker-deploy/">Docker / Image 部署 CI/CD</a></td>
          <td>Image deployment</td>
          <td>image build、scan、tag、registry 與 runtime</td>
      </tr>
      <tr>
          <td><a href="serverless-deploy/">Serverless 部署 CI/CD</a></td>
          <td>Serverless deployment</td>
          <td>function 版本、權限、事件觸發與 alias rollback</td>
      </tr>
      <tr>
          <td><a href="data-pipeline-deploy/">Data Pipeline 部署 CI/CD</a></td>
          <td>Data pipeline deployment</td>
          <td>schema 相容、backfill、checkpoint 與 rerun</td>
      </tr>
      <tr>
          <td><a href="iac-platform-deploy/">IaC / Platform 部署 CI/CD</a></td>
          <td>IaC deployment</td>
          <td>plan/apply、drift、state 與環境治理</td>
      </tr>
      <tr>
          <td><a href="desktop-client-deploy/">Desktop Client 部署 CI/CD</a></td>
          <td>Desktop client deployment</td>
          <td>桌面安裝包簽章、公證、更新通道與回退</td>
      </tr>
      <tr>
          <td><a href="package-library-release/">Package / Library Release CI/CD</a></td>
          <td>Package release deployment</td>
          <td>SDK / NPM / PyPI 的版本、契約與發版供應鏈治理</td>
      </tr>
      <tr>
          <td><a href="blog-project-deploy/">本 blog 專案部署</a></td>
          <td>Project case</td>
          <td>Hugo、Pagefind、GitHub Pages 與本專案 workflow</td>
      </tr>
      <tr>
          <td><a href="artifact-reproducibility/">Artifact 與可重播性</a></td>
          <td>Artifact reproducibility</td>
          <td>讓 CI 產物能被測試與發布共用</td>
      </tr>
      <tr>
          <td><a href="flaky-test-governance/">Flaky test 治理</a></td>
          <td>Flaky governance</td>
          <td>把不穩定測試從雜訊變成可處理任務</td>
      </tr>
  </tbody>
</table>
<p>學習路線先從失敗處理與 gate 邊界開始，因為 CI/CD 的價值會在紅燈時最清楚。當讀者能判讀失敗位置與下一步路由，再依部署場域進入前端、後端、App、Docker 或本 blog 專案案例。</p>
<h2 id="與其他教學的分工">與其他教學的分工</h2>
<p>CI/CD 教學負責日常工作流程與部署場域差異，Backend 可靠性模組負責系統層可靠性判斷。讀者想知道 workflow 失敗後怎麼修、發布 gate 怎麼切、前端與後端部署流程差在哪裡，讀本系列；想知道 CI 在 release gate、SLO、load test 與可靠性治理中的位置，回到 <a href="/blog/backend/06-reliability/" data-link-title="模組六：可靠性驗證流程" data-link-desc="用 SRE 領域詞彙建問題節點、以服務級案例庫累積驗證脈絡，先建概念與案例庫再進實作交接">模組六：可靠性驗證流程</a>。</p>
<p>Go、Python 或其他語言教材只需要保留測試寫法與本機命令。當內容開始涉及 workflow event、required checks、preview deployment、container registry、mobile signing、artifact、cache 或 branch protection，就應該移到本系列，讓不同語言共用同一套 CI/CD 操作語意。</p>
<h2 id="判讀訊號">判讀訊號</h2>
<ul>
<li>GitHub Actions 紅燈後，不知道該看哪個 job。</li>
<li>本機測試通過，但 CI 失敗。</li>
<li>測試失敗後仍有部署 workflow 啟動。</li>
<li>deploy 失敗時，團隊分不清 build artifact、部署權限與測試 gate 的責任。</li>
<li>前端、後端、App 與 Docker 使用同一套發布說明，導致場域細節混在一起。</li>
<li>workflow 只有命令清單，沒有說明失敗後的處理路由與部署場域邊界。</li>
</ul>
<h2 id="下一步路由">下一步路由</h2>
<ul>
<li>想處理 GitHub Actions 紅燈：讀 <a href="github-actions-failure-flow/">CI 失敗到修復發布流程</a>。</li>
<li>想理解 CI gate 原理：讀 <a href="ci-gate-workflow-boundary/">CI gate 與 workflow 邊界</a>。</li>
<li>想理解前端部署：讀 <a href="frontend-deploy/">前端部署 CI/CD</a>。</li>
<li>想理解後端部署：讀 <a href="backend-deploy/">後端部署 CI/CD</a>。</li>
<li>想理解 App 發布：讀 <a href="app-deploy/">App 部署 CI/CD</a>。</li>
<li>想理解 Docker / image 流程：讀 <a href="docker-deploy/">Docker / Image 部署 CI/CD</a>。</li>
<li>想理解 Serverless 發布：讀 <a href="serverless-deploy/">Serverless 部署 CI/CD</a>。</li>
<li>想理解資料處理任務發布：讀 <a href="data-pipeline-deploy/">Data Pipeline 部署 CI/CD</a>。</li>
<li>想理解 IaC / 平台變更發布：讀 <a href="iac-platform-deploy/">IaC / Platform 部署 CI/CD</a>。</li>
<li>想理解 Flutter/Electron/Tauri 類客戶端發布：讀 <a href="desktop-client-deploy/">Desktop Client 部署 CI/CD</a>。</li>
<li>想理解 SDK / NPM / PyPI 發版：讀 <a href="package-library-release/">Package / Library Release CI/CD</a>。</li>
<li>想維護本 blog 的 workflow：讀 <a href="blog-project-deploy/">本 blog 專案部署</a>。</li>
<li>想讓測試與發布共用同一份產物：讀 <a href="artifact-reproducibility/">Artifact 與可重播性</a>。</li>
<li>想治理不穩定測試：讀 <a href="flaky-test-governance/">Flaky test 治理</a>。</li>
<li>想理解可靠性層的 CI 分層：讀 <a href="/blog/backend/06-reliability/ci-pipeline/" data-link-title="6.1 CI pipeline" data-link-desc="CI pipeline 的分層策略、artifact 管理、flaky 治理與 release gate 輸入">6.1 CI pipeline</a>。</li>
<li>想理解發布 gate：讀 <a href="/blog/backend/06-reliability/release-gate/" data-link-title="6.8 Release Gate 與變更節奏" data-link-desc="把驗證、migration、相容性納入放行判準">6.8 Release Gate 與變更節奏</a>。</li>
<li>想理解 infra 變更的 plan / apply 流程怎麼走 CI：讀 <a href="/blog/infra/07-infra-as-pr/" data-link-title="模組七：infra 走 PR 流程與自動化護欄" data-link-desc="infra 變更走 PR → plan → review diff → 合併 → apply，配 fmt / validate / tflint / checkov / tfsec 與 Atlantis 自動化，讓基礎設施可審查、可回溯、可交接">Infra 走 PR 流程與自動化護欄</a>。</li>
</ul>
]]></content:encoded></item><item><title>首頁</title><link>https://tarrragon.github.io/blog/</link><pubDate>Fri, 03 Jul 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/</guid><description>&lt;p>龍蒿又稱龍艾，具有類似大茴香的香甜芳香，帶有胡椒的辛辣感。
適合用於烹調肉類、魚類、雞肉、蛋類，以及製作醬料、沙拉醬等。
芳香也能用於製作茵蒿醋，增添食物風味，全聯有進。&lt;/p>
&lt;p>目前工作上開發flutter，前端後端也都有寫過。&lt;/p>
&lt;ul>
&lt;li>&lt;strong>blogroll&lt;/strong>：我追的部落格&lt;/li>
&lt;li>&lt;a href="https://tarrragon.github.io/blog/record/" data-link-title="開發記錄" data-link-desc="方法論記錄 — 中性 frame 的工作模式 / 流程 / 原則說明。涵蓋自察與認知方法論、設計判斷與選型、敏捷與工程流程、寫作與溝通標準、文件與 API 設計、AI 協作工具評估等議題。">開發心得&lt;/a>：目前開發中的sideproject&lt;/li>
&lt;li>&lt;a href="https://tarrragon.github.io/blog/work-log/" data-link-title="工作筆記" data-link-desc="工作場景觸發的技術紀錄 — git 操作、build 工具、框架行為、環境設定與架構觀念">工作筆記&lt;/a>：開發遇到的狀況&lt;/li>
&lt;li>&lt;a href="https://tarrragon.github.io/blog/report/" data-link-title="Report — 開發過程的事後檢討" data-link-desc="blog 開發過程中、把實際遇到的版型 / 整合 / 框架共處等情境、整理成『應該怎麼做、沒這樣做會有什麼麻煩』的事後檢討。每篇皆為正向指引、幫助下一輪同類任務跳過反覆試錯。">事後檢討&lt;/a>：開發過程的事後檢討、應該怎麼做、沒這樣做的麻煩&lt;/li>
&lt;li>&lt;a href="https://tarrragon.github.io/blog/skills/" data-link-title="Skills — Claude skill 的文章版本" data-link-desc="收錄 .claude/skills/ 底下的 Claude runtime skill 轉為 blog 文章的版本，以及把 skill 搬進來的標準流程。">Skills&lt;/a>：寫作方法論與其他可重用的方法 skill&lt;/li>
&lt;li>&lt;strong>資訊分享&lt;/strong>：撿到的文章或者資訊&lt;/li>
&lt;li>&lt;a href="https://tarrragon.github.io/blog/til/" data-link-title="TIL 學習筆記" data-link-desc="工程之外學到的小知識：單字字源、概念由來、冷知識，一篇一個知識點">TIL 學習筆記&lt;/a>：工程之外學到的小知識 — 單字字源、概念由來、冷知識&lt;/li>
&lt;li>&lt;a href="https://tarrragon.github.io/blog/other/" data-link-title="雜項資訊" data-link-desc="不適合放進其他資料夾的雜項技術筆記，多半是 OS / 工具的小技巧">其他&lt;/a>：沒想到分類的東西&lt;/li>
&lt;/ul>
&lt;h2 id="教學系列">教學系列&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://tarrragon.github.io/blog/python/" data-link-title="Python 維護工程師實戰指南" data-link-desc="以 Hook 系統為範例的 Python 開發教學">Python 維護指南&lt;/a>：入門教學，以 Hook 系統為範例&lt;/li>
&lt;li>&lt;a href="https://tarrragon.github.io/blog/python-advanced/" data-link-title="Python 進階指南" data-link-desc="深入 Python 內部機制與擴展開發">Python 進階指南&lt;/a>：深入內部機制與擴展開發&lt;/li>
&lt;li>&lt;a href="https://tarrragon.github.io/blog/go/" data-link-title="Go 入門實戰指南" data-link-desc="理解 Go 語言精神與核心開發能力">Go 維護指南&lt;/a>：理解 Go 語言精神與核心開發能力&lt;/li>
&lt;li>&lt;a href="https://tarrragon.github.io/blog/go-advanced/" data-link-title="Go 進階指南" data-link-desc="深入 Go 並發、WebSocket、runtime 與服務架構">Go 進階指南&lt;/a>：深入 Go 並發、WebSocket、runtime 與服務架構&lt;/li>
&lt;li>&lt;a href="https://tarrragon.github.io/blog/backend/" data-link-title="Backend 服務實務指南" data-link-desc="用跨語言教學路線整理資料庫、快取、訊息佇列、觀測、部署、可靠性、資安、事故與容量等後端服務能力">Backend 服務實務指南&lt;/a>：整理資料庫、快取、訊息佇列、觀測、部署與可靠性驗證等跨語言後端能力&lt;/li>
&lt;li>&lt;a href="https://tarrragon.github.io/blog/ci/" data-link-title="CI/CD 教學" data-link-desc="整理 CI/CD 的驗證、建置、發布 gate 與不同部署場域的流程差異，讓每次變更都能被穩定驗證與交付">CI/CD 教學&lt;/a>：整理驗證、建置、發布 gate 與不同部署場域的流程差異&lt;/li>
&lt;li>&lt;a href="https://tarrragon.github.io/blog/llm/" data-link-title="LLM 寫 code 工程實務指南：從心智模型到應用架構" data-link-desc="以寫 code 場景為主、涵蓋本地推論（Mac / PC）、雲端混用、LLM 數學與理論基礎、應用層架構（RAG / tool use / agent / VLM / 靜態 deployment）、reasoning model 與 speculative decoding、本地 dev 安全、跨工具世代不變的原理">本地 LLM 寫 code 實務指南&lt;/a>：在 Apple Silicon Mac 上跑本地 LLM、整合 VS Code 寫 code 的最短可行路徑&lt;/li>
&lt;li>&lt;a href="https://tarrragon.github.io/blog/business/" data-link-title="商業概念與策略分析" data-link-desc="整理商業模式、單位經濟、進入市場、競爭護城河、市場動態、資本估值與執行知識，並提供閱讀商業分析的框架">商業概念與策略分析&lt;/a>：整理商業模式、單位經濟、競爭護城河等術語卡片，並用 WRAP 框架拆解具體市場案例&lt;/li>
&lt;li>&lt;a href="https://tarrragon.github.io/blog/testing/" data-link-title="開發測試實務指南" data-link-desc="整理測試策略分層、協議整合驗證、客戶端可觀測性、錯誤收集與自動化驗證 — 從「測試全過但實機全壞」的結構性盲區出發，建立可操作的品質驗證體系">Testing 測試策略&lt;/a>：三層測試分層、mock 遮蔽機制、protocol integration test、客戶端可觀測性，從 app_tunnel 實機測試教訓出發&lt;/li>
&lt;li>&lt;a href="https://tarrragon.github.io/blog/ux-design/" data-link-title="UX 設計實務指南" data-link-desc="整理畫面狀態機、導航設計、Gate fallback、輸入機制與使用者行為驗證 — 從「使用者被困在畫面裡出不去」的結構性遺漏出發，建立系統性的 UX 設計方法">UX Design 畫面設計&lt;/a>：畫面狀態矩陣、gate fallback、輸入機制、錯誤回復、導航模式，mobile app 的 UX 設計判斷&lt;/li>
&lt;li>&lt;a href="https://tarrragon.github.io/blog/monitoring/" data-link-title="監控實務指南" data-link-desc="整理非伺服器端運行時的監控體系 — 行為蒐集、錯誤回報、效能指標、生命週期追蹤，從自架方案到商業方案的完整知識路線">Monitoring 監控體系&lt;/a>：四類事件分類、SDK 設計、collector 架構、商業方案比較、資安與隱私、行為資料商業利用&lt;/li>
&lt;li>&lt;a href="https://tarrragon.github.io/blog/devops/" data-link-title="DevOps 實務指南" data-link-desc="負載平衡、水平擴展、流量管控、服務探活、容量規劃、高可用、突發流量、成本管理 — 服務營運的工程基礎">DevOps 實務指南&lt;/a>：負載平衡、水平擴展、流量管控、服務探活、容量規劃、高可用、突發流量應對、成本管理&lt;/li>
&lt;li>&lt;a href="https://tarrragon.github.io/blog/infra/" data-link-title="Infra 基礎設施建置指南" data-link-desc="從零循序漸進把雲端基礎設施做起來 — IaC、身分憑證、網路地基、環境分離、核心服務、可觀測性、自動化 review 與治理習慣，含怎麼在組織內推動">Infra 基礎設施建置指南&lt;/a>：從零循序漸進把雲端基礎設施做起來 — IaC、身分憑證、網路地基、環境分離、核心服務、可觀測性、自動化 review、治理習慣與組織推動&lt;/li>
&lt;li>&lt;a href="https://tarrragon.github.io/blog/linux/" data-link-title="Linux" data-link-desc="從零把 Linux 裝起來、出問題時怎麼除錯、各情境該用哪些工具、以及怎麼用 dotfile 管理整個工作環境——Linux 相關內容的總入口">Linux 完整指南&lt;/a>：從零安裝 Linux、出問題怎麼除錯、各情境的工具選擇（CLI / 圖形桌面 / 遠端），以及用 dotfile 管理整個工作環境 — 安裝、除錯、工具選單與 dotfile 管理四大子分類&lt;/li>
&lt;/ul>
&lt;hr></description><content:encoded><![CDATA[<p>龍蒿又稱龍艾，具有類似大茴香的香甜芳香，帶有胡椒的辛辣感。
適合用於烹調肉類、魚類、雞肉、蛋類，以及製作醬料、沙拉醬等。
芳香也能用於製作茵蒿醋，增添食物風味，全聯有進。</p>
<p>目前工作上開發flutter，前端後端也都有寫過。</p>
<ul>
<li><strong>blogroll</strong>：我追的部落格</li>
<li><a href="/blog/record/" data-link-title="開發記錄" data-link-desc="方法論記錄 — 中性 frame 的工作模式 / 流程 / 原則說明。涵蓋自察與認知方法論、設計判斷與選型、敏捷與工程流程、寫作與溝通標準、文件與 API 設計、AI 協作工具評估等議題。">開發心得</a>：目前開發中的sideproject</li>
<li><a href="/blog/work-log/" data-link-title="工作筆記" data-link-desc="工作場景觸發的技術紀錄 — git 操作、build 工具、框架行為、環境設定與架構觀念">工作筆記</a>：開發遇到的狀況</li>
<li><a href="/blog/report/" data-link-title="Report — 開發過程的事後檢討" data-link-desc="blog 開發過程中、把實際遇到的版型 / 整合 / 框架共處等情境、整理成『應該怎麼做、沒這樣做會有什麼麻煩』的事後檢討。每篇皆為正向指引、幫助下一輪同類任務跳過反覆試錯。">事後檢討</a>：開發過程的事後檢討、應該怎麼做、沒這樣做的麻煩</li>
<li><a href="/blog/skills/" data-link-title="Skills — Claude skill 的文章版本" data-link-desc="收錄 .claude/skills/ 底下的 Claude runtime skill 轉為 blog 文章的版本，以及把 skill 搬進來的標準流程。">Skills</a>：寫作方法論與其他可重用的方法 skill</li>
<li><strong>資訊分享</strong>：撿到的文章或者資訊</li>
<li><a href="/blog/til/" data-link-title="TIL 學習筆記" data-link-desc="工程之外學到的小知識：單字字源、概念由來、冷知識，一篇一個知識點">TIL 學習筆記</a>：工程之外學到的小知識 — 單字字源、概念由來、冷知識</li>
<li><a href="/blog/other/" data-link-title="雜項資訊" data-link-desc="不適合放進其他資料夾的雜項技術筆記，多半是 OS / 工具的小技巧">其他</a>：沒想到分類的東西</li>
</ul>
<h2 id="教學系列">教學系列</h2>
<ul>
<li><a href="/blog/python/" data-link-title="Python 維護工程師實戰指南" data-link-desc="以 Hook 系統為範例的 Python 開發教學">Python 維護指南</a>：入門教學，以 Hook 系統為範例</li>
<li><a href="/blog/python-advanced/" data-link-title="Python 進階指南" data-link-desc="深入 Python 內部機制與擴展開發">Python 進階指南</a>：深入內部機制與擴展開發</li>
<li><a href="/blog/go/" data-link-title="Go 入門實戰指南" data-link-desc="理解 Go 語言精神與核心開發能力">Go 維護指南</a>：理解 Go 語言精神與核心開發能力</li>
<li><a href="/blog/go-advanced/" data-link-title="Go 進階指南" data-link-desc="深入 Go 並發、WebSocket、runtime 與服務架構">Go 進階指南</a>：深入 Go 並發、WebSocket、runtime 與服務架構</li>
<li><a href="/blog/backend/" data-link-title="Backend 服務實務指南" data-link-desc="用跨語言教學路線整理資料庫、快取、訊息佇列、觀測、部署、可靠性、資安、事故與容量等後端服務能力">Backend 服務實務指南</a>：整理資料庫、快取、訊息佇列、觀測、部署與可靠性驗證等跨語言後端能力</li>
<li><a href="/blog/ci/" data-link-title="CI/CD 教學" data-link-desc="整理 CI/CD 的驗證、建置、發布 gate 與不同部署場域的流程差異，讓每次變更都能被穩定驗證與交付">CI/CD 教學</a>：整理驗證、建置、發布 gate 與不同部署場域的流程差異</li>
<li><a href="/blog/llm/" data-link-title="LLM 寫 code 工程實務指南：從心智模型到應用架構" data-link-desc="以寫 code 場景為主、涵蓋本地推論（Mac / PC）、雲端混用、LLM 數學與理論基礎、應用層架構（RAG / tool use / agent / VLM / 靜態 deployment）、reasoning model 與 speculative decoding、本地 dev 安全、跨工具世代不變的原理">本地 LLM 寫 code 實務指南</a>：在 Apple Silicon Mac 上跑本地 LLM、整合 VS Code 寫 code 的最短可行路徑</li>
<li><a href="/blog/business/" data-link-title="商業概念與策略分析" data-link-desc="整理商業模式、單位經濟、進入市場、競爭護城河、市場動態、資本估值與執行知識，並提供閱讀商業分析的框架">商業概念與策略分析</a>：整理商業模式、單位經濟、競爭護城河等術語卡片，並用 WRAP 框架拆解具體市場案例</li>
<li><a href="/blog/testing/" data-link-title="開發測試實務指南" data-link-desc="整理測試策略分層、協議整合驗證、客戶端可觀測性、錯誤收集與自動化驗證 — 從「測試全過但實機全壞」的結構性盲區出發，建立可操作的品質驗證體系">Testing 測試策略</a>：三層測試分層、mock 遮蔽機制、protocol integration test、客戶端可觀測性，從 app_tunnel 實機測試教訓出發</li>
<li><a href="/blog/ux-design/" data-link-title="UX 設計實務指南" data-link-desc="整理畫面狀態機、導航設計、Gate fallback、輸入機制與使用者行為驗證 — 從「使用者被困在畫面裡出不去」的結構性遺漏出發，建立系統性的 UX 設計方法">UX Design 畫面設計</a>：畫面狀態矩陣、gate fallback、輸入機制、錯誤回復、導航模式，mobile app 的 UX 設計判斷</li>
<li><a href="/blog/monitoring/" data-link-title="監控實務指南" data-link-desc="整理非伺服器端運行時的監控體系 — 行為蒐集、錯誤回報、效能指標、生命週期追蹤，從自架方案到商業方案的完整知識路線">Monitoring 監控體系</a>：四類事件分類、SDK 設計、collector 架構、商業方案比較、資安與隱私、行為資料商業利用</li>
<li><a href="/blog/devops/" data-link-title="DevOps 實務指南" data-link-desc="負載平衡、水平擴展、流量管控、服務探活、容量規劃、高可用、突發流量、成本管理 — 服務營運的工程基礎">DevOps 實務指南</a>：負載平衡、水平擴展、流量管控、服務探活、容量規劃、高可用、突發流量應對、成本管理</li>
<li><a href="/blog/infra/" data-link-title="Infra 基礎設施建置指南" data-link-desc="從零循序漸進把雲端基礎設施做起來 — IaC、身分憑證、網路地基、環境分離、核心服務、可觀測性、自動化 review 與治理習慣，含怎麼在組織內推動">Infra 基礎設施建置指南</a>：從零循序漸進把雲端基礎設施做起來 — IaC、身分憑證、網路地基、環境分離、核心服務、可觀測性、自動化 review、治理習慣與組織推動</li>
<li><a href="/blog/linux/" data-link-title="Linux" data-link-desc="從零把 Linux 裝起來、出問題時怎麼除錯、各情境該用哪些工具、以及怎麼用 dotfile 管理整個工作環境——Linux 相關內容的總入口">Linux 完整指南</a>：從零安裝 Linux、出問題怎麼除錯、各情境的工具選擇（CLI / 圖形桌面 / 遠端），以及用 dotfile 管理整個工作環境 — 安裝、除錯、工具選單與 dotfile 管理四大子分類</li>
</ul>
<hr>
]]></content:encoded></item></channel></rss>