<?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>Til on Tarragon</title><link>https://tarrragon.github.io/blog/tags/til/</link><description>Recent content in Til on Tarragon</description><generator>Hugo -- gohugo.io</generator><language>zh-TW</language><copyright>Tarragon (CC BY 4.0)</copyright><lastBuildDate>Thu, 18 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://tarrragon.github.io/blog/tags/til/index.xml" rel="self" type="application/rss+xml"/><item><title>alert fatigue：告警疲勞</title><link>https://tarrragon.github.io/blog/til/terms/alert-fatigue/</link><pubDate>Thu, 18 Jun 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/til/terms/alert-fatigue/</guid><description>&lt;blockquote>
&lt;p>這個詞出現在「&lt;a href="../alert-overload/">告警太多，反而沒人看&lt;/a>」這個問題裡——它是這條因果鏈的終點。&lt;/p>&lt;/blockquote>
&lt;p>alert fatigue（告警疲勞）指&lt;strong>誤報與告警太多，人對告警逐漸麻木，連真正重要的也一起忽略&lt;/strong>。&lt;/p>
&lt;p>要注意它和「誤報」本身不是同一件事：alert fatigue 不是 &lt;a href="../false-positive/">false positive&lt;/a> 的另一個叫法，而是 false positive &lt;strong>持續累積造成的人因後果&lt;/strong>。源頭常見於醫療（病房監視器整天響）與資安維運。&lt;/p>
&lt;h2 id="怎麼形成">怎麼形成&lt;/h2>
&lt;p>&lt;a href="../false-alarm/">false alarm&lt;/a> 與 &lt;a href="../noise/">noise&lt;/a> 累積 → 每個告警的可信度下降 → 人開始預設「大概又是誤報」→ 真事件來時也被當誤報略過。測試領域的對應是把 &lt;a href="../flaky/">flaky&lt;/a> 紅燈一律重跑、不再查。&lt;/p>
&lt;h2 id="解法方向">解法方向&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>降噪&lt;/strong>：提高告警 &lt;a href="../precision/">precision&lt;/a>，少報無關的。&lt;/li>
&lt;li>&lt;strong>分級&lt;/strong>：可行動的才叫醒人，其餘進儀表板。&lt;/li>
&lt;li>&lt;strong>可行動性&lt;/strong>：每個告警都附「該做什麼」，否則它只是 noise。&lt;/li>
&lt;/ul>
&lt;h2 id="相關概念">相關概念&lt;/h2>
&lt;ul>
&lt;li>累積成它的來源：&lt;a href="../false-positive/">false positive&lt;/a>、&lt;a href="../false-alarm/">false alarm&lt;/a>、&lt;a href="../noise/">noise&lt;/a>。&lt;/li>
&lt;li>測試領域的類比：&lt;a href="../flaky/">flaky&lt;/a> 被一律重跑。&lt;/li>
&lt;/ul></description><content:encoded><![CDATA[<blockquote>
<p>這個詞出現在「<a href="../alert-overload/">告警太多，反而沒人看</a>」這個問題裡——它是這條因果鏈的終點。</p></blockquote>
<p>alert fatigue（告警疲勞）指<strong>誤報與告警太多，人對告警逐漸麻木，連真正重要的也一起忽略</strong>。</p>
<p>要注意它和「誤報」本身不是同一件事：alert fatigue 不是 <a href="../false-positive/">false positive</a> 的另一個叫法，而是 false positive <strong>持續累積造成的人因後果</strong>。源頭常見於醫療（病房監視器整天響）與資安維運。</p>
<h2 id="怎麼形成">怎麼形成</h2>
<p><a href="../false-alarm/">false alarm</a> 與 <a href="../noise/">noise</a> 累積 → 每個告警的可信度下降 → 人開始預設「大概又是誤報」→ 真事件來時也被當誤報略過。測試領域的對應是把 <a href="../flaky/">flaky</a> 紅燈一律重跑、不再查。</p>
<h2 id="解法方向">解法方向</h2>
<ul>
<li><strong>降噪</strong>：提高告警 <a href="../precision/">precision</a>，少報無關的。</li>
<li><strong>分級</strong>：可行動的才叫醒人，其餘進儀表板。</li>
<li><strong>可行動性</strong>：每個告警都附「該做什麼」，否則它只是 noise。</li>
</ul>
<h2 id="相關概念">相關概念</h2>
<ul>
<li>累積成它的來源：<a href="../false-positive/">false positive</a>、<a href="../false-alarm/">false alarm</a>、<a href="../noise/">noise</a>。</li>
<li>測試領域的類比：<a href="../flaky/">flaky</a> 被一律重跑。</li>
</ul>
]]></content:encoded></item><item><title>false alarm：監控的偽警報</title><link>https://tarrragon.github.io/blog/til/terms/false-alarm/</link><pubDate>Thu, 18 Jun 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/til/terms/false-alarm/</guid><description>&lt;blockquote>
&lt;p>這個詞出現在「&lt;a href="../alert-overload/">告警太多，反而沒人看&lt;/a>」這個問題裡。&lt;/p>&lt;/blockquote>
&lt;p>false alarm（偽警報）指&lt;strong>監控、告警或入侵偵測（IDS）系統觸發了，但實際上沒事&lt;/strong>——是 monitoring / 資安領域的 &lt;a href="../false-positive/">false positive&lt;/a>。&lt;/p>
&lt;p>「alarm」這個字面比 false positive 更口語、更早，消防與保全領域早就在用「假警報」。放到偵測語境，它就是 false positive 的一種。&lt;/p>
&lt;h2 id="為何要在意">為何要在意&lt;/h2>
&lt;p>單一 false alarm 只是虛驚，但&lt;strong>累積&lt;/strong>會出兩個問題：&lt;/p>
&lt;ul>
&lt;li>量大形成 &lt;a href="../noise/">noise&lt;/a>，真警報被埋沒。&lt;/li>
&lt;li>人對告警麻木，演變成 &lt;a href="../alert-fatigue/">alert fatigue&lt;/a>——連真的也不再認真看。&lt;/li>
&lt;/ul>
&lt;p>所以告警系統的設計重點之一，就是壓低 false alarm 率（提高 &lt;a href="../precision/">precision&lt;/a>），同時別漏掉真事件。&lt;/p>
&lt;h2 id="相關概念">相關概念&lt;/h2>
&lt;ul>
&lt;li>上位概念：&lt;a href="../false-positive/">false positive&lt;/a>。&lt;/li>
&lt;li>量多後的狀態與後果：&lt;a href="../noise/">noise&lt;/a>、&lt;a href="../alert-fatigue/">alert fatigue&lt;/a>。&lt;/li>
&lt;/ul></description><content:encoded><![CDATA[<blockquote>
<p>這個詞出現在「<a href="../alert-overload/">告警太多，反而沒人看</a>」這個問題裡。</p></blockquote>
<p>false alarm（偽警報）指<strong>監控、告警或入侵偵測（IDS）系統觸發了，但實際上沒事</strong>——是 monitoring / 資安領域的 <a href="../false-positive/">false positive</a>。</p>
<p>「alarm」這個字面比 false positive 更口語、更早，消防與保全領域早就在用「假警報」。放到偵測語境，它就是 false positive 的一種。</p>
<h2 id="為何要在意">為何要在意</h2>
<p>單一 false alarm 只是虛驚，但<strong>累積</strong>會出兩個問題：</p>
<ul>
<li>量大形成 <a href="../noise/">noise</a>，真警報被埋沒。</li>
<li>人對告警麻木，演變成 <a href="../alert-fatigue/">alert fatigue</a>——連真的也不再認真看。</li>
</ul>
<p>所以告警系統的設計重點之一，就是壓低 false alarm 率（提高 <a href="../precision/">precision</a>），同時別漏掉真事件。</p>
<h2 id="相關概念">相關概念</h2>
<ul>
<li>上位概念：<a href="../false-positive/">false positive</a>。</li>
<li>量多後的狀態與後果：<a href="../noise/">noise</a>、<a href="../alert-fatigue/">alert fatigue</a>。</li>
</ul>
]]></content:encoded></item><item><title>false negative：假陰性是 false positive 的另一半</title><link>https://tarrragon.github.io/blog/til/terms/false-negative/</link><pubDate>Thu, 18 Jun 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/til/terms/false-negative/</guid><description>&lt;blockquote>
&lt;p>這個詞出現在「&lt;a href="../detection-errors/">你的自動判斷會犯兩種錯：誤報與漏接&lt;/a>」這個問題裡——它是另一種錯。&lt;/p>&lt;/blockquote>
&lt;p>false negative（假陰性）指&lt;strong>偵測器漏掉了真實存在的東西&lt;/strong>——說「沒有」，真實卻是「有」。它是 &lt;a href="../false-positive/">false positive&lt;/a> 的另一半：兩者同屬&lt;a href="../false-positive/">混淆矩陣&lt;/a>四格裡的兩個錯誤格。&lt;/p>
&lt;ul>
&lt;li>&lt;strong>false positive（誤報）&lt;/strong>：說有、實無。&lt;/li>
&lt;li>&lt;strong>false negative（漏接）&lt;/strong>：說無、實有。&lt;/li>
&lt;/ul>
&lt;h2 id="各領域怎麼稱呼">各領域怎麼稱呼&lt;/h2>
&lt;p>和 false positive 一樣，false negative 換領域有不同叫法：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>統計&lt;/strong>：&lt;a href="../type-ii-error/">Type II error&lt;/a>（沒拒絕為假的虛無假設，漏掉真實效果）。&lt;/li>
&lt;li>&lt;strong>訊號偵測理論&lt;/strong>：miss（漏失），對應雷達「該偵測到敵機卻沒報」。&lt;/li>
&lt;li>&lt;strong>醫學&lt;/strong>：偽陰性（有病卻驗成陰性）。&lt;/li>
&lt;/ul>
&lt;h2 id="和-false-positive-的取捨">和 false positive 的取捨&lt;/h2>
&lt;p>FP 與 FN 通常此消彼長：把偵測門檻調鬆、少漏接（FN 降），就容易多誤報（FP 升）；調嚴反之。要犧牲哪一個，取決於&lt;strong>哪種錯誤代價更高&lt;/strong>：&lt;/p>
&lt;ul>
&lt;li>癌症篩檢怕&lt;strong>漏接&lt;/strong>（FN 致命），寧可多一些 FP 再複檢。&lt;/li>
&lt;li>自動封鎖、垃圾郵件怕&lt;strong>誤殺&lt;/strong>（FP 擾民），寧可放過一些再人工補。&lt;/li>
&lt;/ul>
&lt;p>這個取捨在統計裡就是 α 與 &lt;a href="../type-ii-error/">Type II error&lt;/a> 的拉扯（見 &lt;a href="../type-i-error/">Type I error&lt;/a>），量化的尺則是 &lt;a href="../precision/">precision&lt;/a> 與 &lt;a href="../recall/">recall&lt;/a>——false negative 拉低的是 recall。&lt;/p></description><content:encoded><![CDATA[<blockquote>
<p>這個詞出現在「<a href="../detection-errors/">你的自動判斷會犯兩種錯：誤報與漏接</a>」這個問題裡——它是另一種錯。</p></blockquote>
<p>false negative（假陰性）指<strong>偵測器漏掉了真實存在的東西</strong>——說「沒有」，真實卻是「有」。它是 <a href="../false-positive/">false positive</a> 的另一半：兩者同屬<a href="../false-positive/">混淆矩陣</a>四格裡的兩個錯誤格。</p>
<ul>
<li><strong>false positive（誤報）</strong>：說有、實無。</li>
<li><strong>false negative（漏接）</strong>：說無、實有。</li>
</ul>
<h2 id="各領域怎麼稱呼">各領域怎麼稱呼</h2>
<p>和 false positive 一樣，false negative 換領域有不同叫法：</p>
<ul>
<li><strong>統計</strong>：<a href="../type-ii-error/">Type II error</a>（沒拒絕為假的虛無假設，漏掉真實效果）。</li>
<li><strong>訊號偵測理論</strong>：miss（漏失），對應雷達「該偵測到敵機卻沒報」。</li>
<li><strong>醫學</strong>：偽陰性（有病卻驗成陰性）。</li>
</ul>
<h2 id="和-false-positive-的取捨">和 false positive 的取捨</h2>
<p>FP 與 FN 通常此消彼長：把偵測門檻調鬆、少漏接（FN 降），就容易多誤報（FP 升）；調嚴反之。要犧牲哪一個，取決於<strong>哪種錯誤代價更高</strong>：</p>
<ul>
<li>癌症篩檢怕<strong>漏接</strong>（FN 致命），寧可多一些 FP 再複檢。</li>
<li>自動封鎖、垃圾郵件怕<strong>誤殺</strong>（FP 擾民），寧可放過一些再人工補。</li>
</ul>
<p>這個取捨在統計裡就是 α 與 <a href="../type-ii-error/">Type II error</a> 的拉扯（見 <a href="../type-i-error/">Type I error</a>），量化的尺則是 <a href="../precision/">precision</a> 與 <a href="../recall/">recall</a>——false negative 拉低的是 recall。</p>
]]></content:encoded></item><item><title>false positive：訊號偵測理論借給全世界的詞</title><link>https://tarrragon.github.io/blog/til/terms/false-positive/</link><pubDate>Thu, 18 Jun 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/til/terms/false-positive/</guid><description>&lt;blockquote>
&lt;p>這個詞出現在「&lt;a href="../detection-errors/">你的自動判斷會犯兩種錯：誤報與漏接&lt;/a>」這個問題裡——它就是其中一種錯。&lt;/p>&lt;/blockquote>
&lt;p>false positive（假陽性）指&lt;strong>偵測器報了一個並不存在的東西&lt;/strong>——說「有」，真實卻是「沒有」。&lt;/p>
&lt;p>這個詞最常見的接觸點是醫學檢驗（驗出陽性、其實沒病），因此常被當成醫學詞。它的源頭更早、也更通用。&lt;/p>
&lt;h2 id="源頭訊號偵測理論">源頭：訊號偵測理論&lt;/h2>
&lt;p>這組詞來自&lt;strong>訊號偵測理論（Signal Detection Theory）&lt;/strong>，問題情境源於二戰雷達操作員的研究：雷達螢幕上一個光點，是真的敵機，還是雜訊？「判定為敵機 × 實際是雜訊」就是一次 false positive。（正式理論在 1950 年代由心理物理學者整理成形，根源可追到這段二戰雷達研究。）&lt;/p>
&lt;p>醫學診斷只是這套框架最有名的應用場，不是發源地。任何「&lt;strong>偵測器給出判斷 × 真實狀態為何&lt;/strong>」的情境都套得上，所以它能跨領域通用。&lt;/p>
&lt;h2 id="為何各領域都用二乘二的四格">為何各領域都用：二乘二的四格&lt;/h2>
&lt;p>偵測器的判斷（陽性/陰性）對上真實狀態（有/無），剛好四格——這就是 confusion matrix：&lt;/p>
&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;/td>
 &lt;td>true positive（命中）&lt;/td>
 &lt;td>&lt;strong>false positive（假陽性）&lt;/strong>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>判定無（陰性）&lt;/td>
 &lt;td>&lt;strong>false negative（假陰性）&lt;/strong>&lt;/td>
 &lt;td>true negative（正確排除）&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>只要一個領域有「自動判斷 + 可驗證的真實狀態」，就需要這四格的詞彙。統計、程式、醫學、資安都是如此，所以共用同一組詞，而非各自另造。&lt;/p>
&lt;h2 id="各領域怎麼稱呼">各領域怎麼稱呼&lt;/h2>
&lt;p>同一個 false positive，換了領域有不同的本土叫法：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>統計&lt;/strong>：叫 &lt;a href="../type-i-error/">Type I error&lt;/a>（假設檢定裡拒絕了為真的虛無假設），對應的還有顯著水準 α。&lt;/li>
&lt;li>&lt;strong>程式&lt;/strong>：false positive 本身就是第一線詞，描述不同切面還有更精準的本土詞（見下方相關概念）。&lt;/li>
&lt;li>&lt;strong>醫學&lt;/strong>：診斷檢驗的 false positive（偽陽性），是大眾最熟悉的用法。&lt;/li>
&lt;/ul>
&lt;h2 id="相關概念">相關概念&lt;/h2>
&lt;ul>
&lt;li>從哪個問題進來：&lt;a href="../detection-errors/">你的自動判斷會犯兩種錯&lt;/a>。&lt;/li>
&lt;li>對偶錯誤：&lt;a href="../false-negative/">false negative&lt;/a>（漏接，說無實有）。兩者是上方混淆矩陣的兩個錯誤格。&lt;/li>
&lt;li>統計裡的編號：&lt;a href="../type-i-error/">Type I error&lt;/a>（= false positive）。&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>想看這個詞在測試、告警、規則誤觸等各情境的衍生說法，從 &lt;a href="../">TIL／跨領域術語&lt;/a> 的議題入口進入。&lt;/p>&lt;/blockquote>
&lt;h2 id="繁體中文的對應">繁體中文的對應&lt;/h2>
&lt;p>中文圈通常用三個詞，語感略有差別：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>誤報&lt;/strong>：偏「報出了不存在的東西」，最貼近 false positive 的偵測語境。&lt;/li>
&lt;li>&lt;strong>誤判&lt;/strong>：偏「判斷錯誤」，涵蓋假陽性與假陰性兩者。&lt;/li>
&lt;li>&lt;strong>假陽性&lt;/strong>：直譯，最精確但較學術。&lt;/li>
&lt;/ul>
&lt;p>所以「false positive 是不是借自醫學」這個問題，答案是：它是訊號偵測理論的通用詞，醫學只是借用者之一，程式與統計也各自借用並長出本土同義詞。&lt;/p></description><content:encoded><![CDATA[<blockquote>
<p>這個詞出現在「<a href="../detection-errors/">你的自動判斷會犯兩種錯：誤報與漏接</a>」這個問題裡——它就是其中一種錯。</p></blockquote>
<p>false positive（假陽性）指<strong>偵測器報了一個並不存在的東西</strong>——說「有」，真實卻是「沒有」。</p>
<p>這個詞最常見的接觸點是醫學檢驗（驗出陽性、其實沒病），因此常被當成醫學詞。它的源頭更早、也更通用。</p>
<h2 id="源頭訊號偵測理論">源頭：訊號偵測理論</h2>
<p>這組詞來自<strong>訊號偵測理論（Signal Detection Theory）</strong>，問題情境源於二戰雷達操作員的研究：雷達螢幕上一個光點，是真的敵機，還是雜訊？「判定為敵機 × 實際是雜訊」就是一次 false positive。（正式理論在 1950 年代由心理物理學者整理成形，根源可追到這段二戰雷達研究。）</p>
<p>醫學診斷只是這套框架最有名的應用場，不是發源地。任何「<strong>偵測器給出判斷 × 真實狀態為何</strong>」的情境都套得上，所以它能跨領域通用。</p>
<h2 id="為何各領域都用二乘二的四格">為何各領域都用：二乘二的四格</h2>
<p>偵測器的判斷（陽性/陰性）對上真實狀態（有/無），剛好四格——這就是 confusion matrix：</p>
<table>
  <thead>
      <tr>
          <th></th>
          <th>真實有</th>
          <th>真實無</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>判定有（陽性）</td>
          <td>true positive（命中）</td>
          <td><strong>false positive（假陽性）</strong></td>
      </tr>
      <tr>
          <td>判定無（陰性）</td>
          <td><strong>false negative（假陰性）</strong></td>
          <td>true negative（正確排除）</td>
      </tr>
  </tbody>
</table>
<p>只要一個領域有「自動判斷 + 可驗證的真實狀態」，就需要這四格的詞彙。統計、程式、醫學、資安都是如此，所以共用同一組詞，而非各自另造。</p>
<h2 id="各領域怎麼稱呼">各領域怎麼稱呼</h2>
<p>同一個 false positive，換了領域有不同的本土叫法：</p>
<ul>
<li><strong>統計</strong>：叫 <a href="../type-i-error/">Type I error</a>（假設檢定裡拒絕了為真的虛無假設），對應的還有顯著水準 α。</li>
<li><strong>程式</strong>：false positive 本身就是第一線詞，描述不同切面還有更精準的本土詞（見下方相關概念）。</li>
<li><strong>醫學</strong>：診斷檢驗的 false positive（偽陽性），是大眾最熟悉的用法。</li>
</ul>
<h2 id="相關概念">相關概念</h2>
<ul>
<li>從哪個問題進來：<a href="../detection-errors/">你的自動判斷會犯兩種錯</a>。</li>
<li>對偶錯誤：<a href="../false-negative/">false negative</a>（漏接，說無實有）。兩者是上方混淆矩陣的兩個錯誤格。</li>
<li>統計裡的編號：<a href="../type-i-error/">Type I error</a>（= false positive）。</li>
</ul>
<blockquote>
<p>想看這個詞在測試、告警、規則誤觸等各情境的衍生說法，從 <a href="../">TIL／跨領域術語</a> 的議題入口進入。</p></blockquote>
<h2 id="繁體中文的對應">繁體中文的對應</h2>
<p>中文圈通常用三個詞，語感略有差別：</p>
<ul>
<li><strong>誤報</strong>：偏「報出了不存在的東西」，最貼近 false positive 的偵測語境。</li>
<li><strong>誤判</strong>：偏「判斷錯誤」，涵蓋假陽性與假陰性兩者。</li>
<li><strong>假陽性</strong>：直譯，最精確但較學術。</li>
</ul>
<p>所以「false positive 是不是借自醫學」這個問題，答案是：它是訊號偵測理論的通用詞，醫學只是借用者之一，程式與統計也各自借用並長出本土同義詞。</p>
]]></content:encoded></item><item><title>false trigger / 誤觸：守衛被不該觸發的東西觸發</title><link>https://tarrragon.github.io/blog/til/terms/false-trigger/</link><pubDate>Thu, 18 Jun 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/til/terms/false-trigger/</guid><description>&lt;blockquote>
&lt;p>這個詞出現在「&lt;a href="../guard-misfires/">守衛和規則為什麼會誤觸&lt;/a>」這個問題裡——它是結果視角。&lt;/p>&lt;/blockquote>
&lt;p>false trigger（誤觸）指&lt;strong>守衛或偵測器被「形似但其實不是真意圖」的輸入觸發&lt;/strong>——是 hook / guard 場景的 &lt;a href="../false-positive/">false positive&lt;/a>。&lt;/p>
&lt;h2 id="與-over-match-的角度差">與 over-match 的角度差&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="../over-match/">over-match&lt;/a>&lt;/strong> 是機制視角：規則涵蓋太寬。&lt;/li>
&lt;li>&lt;strong>false trigger&lt;/strong> 是結果視角：守衛因此被觸發了。&lt;/li>
&lt;/ul>
&lt;p>同一件事的因與果——規則 over-match，於是守衛 false trigger。&lt;/p>
&lt;h2 id="一個典型例子">一個典型例子&lt;/h2>
&lt;p>關鍵字守衛用「跳過審查」這組字偵測使用者的意圖。結果一則只是&lt;strong>引用或討論&lt;/strong>「跳過審查」字樣的訊息也觸發了——命中了字面、但沒有真正要跳過的意圖。&lt;/p>
&lt;p>這種「命中字面、無真實意圖」的 false positive 有個精準說法：&lt;strong>lexical false positive&lt;/strong>（字面層假陽性）。修法是讓守衛在「明確是引用或討論」時抑制，但方向要保守——寧可偶爾誤觸（false positive），也別漏放真正的意圖（那會變成更危險的 &lt;a href="../false-negative/">false negative&lt;/a>）。這個取捨方向，和 &lt;a href="../precision/">precision&lt;/a> / &lt;a href="../recall/">recall&lt;/a> 的選擇是同一回事。&lt;/p>
&lt;h2 id="相關概念">相關概念&lt;/h2>
&lt;ul>
&lt;li>上位概念：&lt;a href="../false-positive/">false positive&lt;/a>。&lt;/li>
&lt;li>機制成因：&lt;a href="../over-match/">over-match&lt;/a>。&lt;/li>
&lt;li>取捨的另一端：&lt;a href="../false-negative/">false negative&lt;/a>。&lt;/li>
&lt;/ul></description><content:encoded><![CDATA[<blockquote>
<p>這個詞出現在「<a href="../guard-misfires/">守衛和規則為什麼會誤觸</a>」這個問題裡——它是結果視角。</p></blockquote>
<p>false trigger（誤觸）指<strong>守衛或偵測器被「形似但其實不是真意圖」的輸入觸發</strong>——是 hook / guard 場景的 <a href="../false-positive/">false positive</a>。</p>
<h2 id="與-over-match-的角度差">與 over-match 的角度差</h2>
<ul>
<li><strong><a href="../over-match/">over-match</a></strong> 是機制視角：規則涵蓋太寬。</li>
<li><strong>false trigger</strong> 是結果視角：守衛因此被觸發了。</li>
</ul>
<p>同一件事的因與果——規則 over-match，於是守衛 false trigger。</p>
<h2 id="一個典型例子">一個典型例子</h2>
<p>關鍵字守衛用「跳過審查」這組字偵測使用者的意圖。結果一則只是<strong>引用或討論</strong>「跳過審查」字樣的訊息也觸發了——命中了字面、但沒有真正要跳過的意圖。</p>
<p>這種「命中字面、無真實意圖」的 false positive 有個精準說法：<strong>lexical false positive</strong>（字面層假陽性）。修法是讓守衛在「明確是引用或討論」時抑制，但方向要保守——寧可偶爾誤觸（false positive），也別漏放真正的意圖（那會變成更危險的 <a href="../false-negative/">false negative</a>）。這個取捨方向，和 <a href="../precision/">precision</a> / <a href="../recall/">recall</a> 的選擇是同一回事。</p>
<h2 id="相關概念">相關概念</h2>
<ul>
<li>上位概念：<a href="../false-positive/">false positive</a>。</li>
<li>機制成因：<a href="../over-match/">over-match</a>。</li>
<li>取捨的另一端：<a href="../false-negative/">false negative</a>。</li>
</ul>
]]></content:encoded></item><item><title>flaky：時綠時紅的測試</title><link>https://tarrragon.github.io/blog/til/terms/flaky/</link><pubDate>Thu, 18 Jun 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/til/terms/flaky/</guid><description>&lt;blockquote>
&lt;p>這個詞出現在「&lt;a href="../unreliable-tests/">測試紅燈不一定是真的壞&lt;/a>」這個問題裡。&lt;/p>&lt;/blockquote>
&lt;p>flaky test（不穩定測試）指&lt;strong>同一份程式碼、同一個測試，什麼都沒改，卻有時過有時不過&lt;/strong>。&lt;/p>
&lt;p>它是測試領域的 &lt;a href="../false-positive/">false positive&lt;/a>——測試報紅、但被測的程式碼其實沒問題——而 flaky 特指其中「&lt;strong>間歇、非確定性&lt;/strong>」的那種。&lt;/p>
&lt;h2 id="常見成因">常見成因&lt;/h2>
&lt;ul>
&lt;li>競態（race condition）、依賴執行順序。&lt;/li>
&lt;li>時間依賴：sleep、timeout、時鐘、時區。&lt;/li>
&lt;li>共用狀態沒清乾淨：測試之間互相污染。&lt;/li>
&lt;li>外部依賴：網路、第三方服務的暫態抖動。&lt;/li>
&lt;/ul>
&lt;h2 id="為何危險">為何危險&lt;/h2>
&lt;p>flaky 會侵蝕對測試套件的信任：紅了第一反應是點重跑而不是查 bug，久了連真的失敗也被當 flaky 忽略——這是測試版的 &lt;a href="../alert-fatigue/">alert fatigue&lt;/a>。&lt;/p>
&lt;h2 id="與-spurious-failure-的區別">與 spurious failure 的區別&lt;/h2>
&lt;p>flaky 強調「&lt;strong>間歇重現&lt;/strong>」（重跑可能就過）；&lt;a href="../spurious-failure/">spurious failure&lt;/a> 強調「這次失敗的原因不是被測對象」，不一定間歇。兩者都是測試的 false positive，角度不同。&lt;/p>
&lt;h2 id="相關概念">相關概念&lt;/h2>
&lt;ul>
&lt;li>上位概念：&lt;a href="../false-positive/">false positive&lt;/a>。&lt;/li>
&lt;li>近鄰：&lt;a href="../spurious-failure/">spurious failure&lt;/a>、後果 &lt;a href="../alert-fatigue/">alert fatigue&lt;/a>。&lt;/li>
&lt;/ul></description><content:encoded><![CDATA[<blockquote>
<p>這個詞出現在「<a href="../unreliable-tests/">測試紅燈不一定是真的壞</a>」這個問題裡。</p></blockquote>
<p>flaky test（不穩定測試）指<strong>同一份程式碼、同一個測試，什麼都沒改，卻有時過有時不過</strong>。</p>
<p>它是測試領域的 <a href="../false-positive/">false positive</a>——測試報紅、但被測的程式碼其實沒問題——而 flaky 特指其中「<strong>間歇、非確定性</strong>」的那種。</p>
<h2 id="常見成因">常見成因</h2>
<ul>
<li>競態（race condition）、依賴執行順序。</li>
<li>時間依賴：sleep、timeout、時鐘、時區。</li>
<li>共用狀態沒清乾淨：測試之間互相污染。</li>
<li>外部依賴：網路、第三方服務的暫態抖動。</li>
</ul>
<h2 id="為何危險">為何危險</h2>
<p>flaky 會侵蝕對測試套件的信任：紅了第一反應是點重跑而不是查 bug，久了連真的失敗也被當 flaky 忽略——這是測試版的 <a href="../alert-fatigue/">alert fatigue</a>。</p>
<h2 id="與-spurious-failure-的區別">與 spurious failure 的區別</h2>
<p>flaky 強調「<strong>間歇重現</strong>」（重跑可能就過）；<a href="../spurious-failure/">spurious failure</a> 強調「這次失敗的原因不是被測對象」，不一定間歇。兩者都是測試的 false positive，角度不同。</p>
<h2 id="相關概念">相關概念</h2>
<ul>
<li>上位概念：<a href="../false-positive/">false positive</a>。</li>
<li>近鄰：<a href="../spurious-failure/">spurious failure</a>、後果 <a href="../alert-fatigue/">alert fatigue</a>。</li>
</ul>
]]></content:encoded></item><item><title>noise：淹沒真訊號的誤報</title><link>https://tarrragon.github.io/blog/til/terms/noise/</link><pubDate>Thu, 18 Jun 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/til/terms/noise/</guid><description>&lt;blockquote>
&lt;p>這個詞出現在「&lt;a href="../alert-overload/">告警太多，反而沒人看&lt;/a>」這個問題裡。&lt;/p>&lt;/blockquote>
&lt;p>noise（噪音）指&lt;strong>大量 &lt;a href="../false-positive/">false positive&lt;/a> 累積，淹沒了真正重要的訊號&lt;/strong>。&lt;/p>
&lt;p>這個詞借自訊號處理的&lt;strong>訊噪比（signal-to-noise ratio）&lt;/strong>：誤報越多，真訊號越難被看見。一個 linter 報出幾百條多半無關緊要的警告、一個監控系統整天閃 &lt;a href="../false-alarm/">false alarm&lt;/a>，都會被說成「noise 太多」。&lt;/p>
&lt;h2 id="為何是問題">為何是問題&lt;/h2>
&lt;p>noise 本身的每一條可能無害，但&lt;strong>總量&lt;/strong>會壓垮注意力：真正該處理的混在裡面被略過。降噪（提高規則精度、過濾、分級）是讓真訊號重新浮現的前提。&lt;/p>
&lt;h2 id="後果">後果&lt;/h2>
&lt;p>noise 持續累積會導致 &lt;a href="../alert-fatigue/">alert fatigue&lt;/a>——人對告警麻木。所以「降噪」不只是美觀問題，是維持偵測系統可用性的關鍵。&lt;/p>
&lt;h2 id="相關概念">相關概念&lt;/h2>
&lt;ul>
&lt;li>組成 noise 的單位：&lt;a href="../false-positive/">false positive&lt;/a>、&lt;a href="../false-alarm/">false alarm&lt;/a>、&lt;a href="../spurious-warning/">spurious warning&lt;/a>。&lt;/li>
&lt;li>人因後果：&lt;a href="../alert-fatigue/">alert fatigue&lt;/a>。&lt;/li>
&lt;/ul></description><content:encoded><![CDATA[<blockquote>
<p>這個詞出現在「<a href="../alert-overload/">告警太多，反而沒人看</a>」這個問題裡。</p></blockquote>
<p>noise（噪音）指<strong>大量 <a href="../false-positive/">false positive</a> 累積，淹沒了真正重要的訊號</strong>。</p>
<p>這個詞借自訊號處理的<strong>訊噪比（signal-to-noise ratio）</strong>：誤報越多，真訊號越難被看見。一個 linter 報出幾百條多半無關緊要的警告、一個監控系統整天閃 <a href="../false-alarm/">false alarm</a>，都會被說成「noise 太多」。</p>
<h2 id="為何是問題">為何是問題</h2>
<p>noise 本身的每一條可能無害，但<strong>總量</strong>會壓垮注意力：真正該處理的混在裡面被略過。降噪（提高規則精度、過濾、分級）是讓真訊號重新浮現的前提。</p>
<h2 id="後果">後果</h2>
<p>noise 持續累積會導致 <a href="../alert-fatigue/">alert fatigue</a>——人對告警麻木。所以「降噪」不只是美觀問題，是維持偵測系統可用性的關鍵。</p>
<h2 id="相關概念">相關概念</h2>
<ul>
<li>組成 noise 的單位：<a href="../false-positive/">false positive</a>、<a href="../false-alarm/">false alarm</a>、<a href="../spurious-warning/">spurious warning</a>。</li>
<li>人因後果：<a href="../alert-fatigue/">alert fatigue</a>。</li>
</ul>
]]></content:encoded></item><item><title>over-match：規則比對過寬而誤命中</title><link>https://tarrragon.github.io/blog/til/terms/over-match/</link><pubDate>Thu, 18 Jun 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/til/terms/over-match/</guid><description>&lt;blockquote>
&lt;p>這個詞出現在「&lt;a href="../guard-misfires/">守衛和規則為什麼會誤觸&lt;/a>」這個問題裡——它是機制成因。&lt;/p>&lt;/blockquote>
&lt;p>over-match（過寬匹配，又稱 over-broad match、spurious match）指&lt;strong>規則或樣式寫得太寬，命中了不該命中的東西&lt;/strong>。&lt;/p>
&lt;p>如果說 &lt;a href="../false-positive/">false positive&lt;/a> 是「偵測器誤報」這個現象，over-match 就是它在規則比對層常見的&lt;strong>機制成因&lt;/strong>：不是偵測器壞了，是規則的涵蓋範圍超出了意圖。&lt;/p>
&lt;h2 id="常見場景">常見場景&lt;/h2>
&lt;ul>
&lt;li>regex 少了邊界或錨點：&lt;code>cat&lt;/code> 命中 &lt;code>category&lt;/code>、&lt;code>scatter&lt;/code>。&lt;/li>
&lt;li>glob 太寬：&lt;code>*.test.*&lt;/code> 連不想要的也掃進來。&lt;/li>
&lt;li>關鍵字比對沒看上下文：命中了字面、卻不管語境。&lt;/li>
&lt;/ul>
&lt;h2 id="怎麼收斂">怎麼收斂&lt;/h2>
&lt;p>把規則收窄到「恰好涵蓋意圖」：加邊界（&lt;code>\b&lt;/code>）、加錨點、加上下文條件。收窄要拿捏——太寬會 over-match（false positive），太窄會漏掉真的（false negative）。這個拉扯就是 &lt;a href="../precision/">precision&lt;/a> 與 &lt;a href="../recall/">recall&lt;/a> 的取捨。&lt;/p>
&lt;h2 id="相關概念">相關概念&lt;/h2>
&lt;ul>
&lt;li>它造成的現象：&lt;a href="../false-positive/">false positive&lt;/a>、&lt;a href="../spurious-warning/">spurious warning&lt;/a>。&lt;/li>
&lt;li>結果視角：當守衛因 over-match 被觸發，就是 &lt;a href="../false-trigger/">false trigger&lt;/a>。&lt;/li>
&lt;/ul></description><content:encoded><![CDATA[<blockquote>
<p>這個詞出現在「<a href="../guard-misfires/">守衛和規則為什麼會誤觸</a>」這個問題裡——它是機制成因。</p></blockquote>
<p>over-match（過寬匹配，又稱 over-broad match、spurious match）指<strong>規則或樣式寫得太寬，命中了不該命中的東西</strong>。</p>
<p>如果說 <a href="../false-positive/">false positive</a> 是「偵測器誤報」這個現象，over-match 就是它在規則比對層常見的<strong>機制成因</strong>：不是偵測器壞了，是規則的涵蓋範圍超出了意圖。</p>
<h2 id="常見場景">常見場景</h2>
<ul>
<li>regex 少了邊界或錨點：<code>cat</code> 命中 <code>category</code>、<code>scatter</code>。</li>
<li>glob 太寬：<code>*.test.*</code> 連不想要的也掃進來。</li>
<li>關鍵字比對沒看上下文：命中了字面、卻不管語境。</li>
</ul>
<h2 id="怎麼收斂">怎麼收斂</h2>
<p>把規則收窄到「恰好涵蓋意圖」：加邊界（<code>\b</code>）、加錨點、加上下文條件。收窄要拿捏——太寬會 over-match（false positive），太窄會漏掉真的（false negative）。這個拉扯就是 <a href="../precision/">precision</a> 與 <a href="../recall/">recall</a> 的取捨。</p>
<h2 id="相關概念">相關概念</h2>
<ul>
<li>它造成的現象：<a href="../false-positive/">false positive</a>、<a href="../spurious-warning/">spurious warning</a>。</li>
<li>結果視角：當守衛因 over-match 被觸發，就是 <a href="../false-trigger/">false trigger</a>。</li>
</ul>
]]></content:encoded></item><item><title>precision：報出來的有多少是真的</title><link>https://tarrragon.github.io/blog/til/terms/precision/</link><pubDate>Thu, 18 Jun 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/til/terms/precision/</guid><description>&lt;blockquote>
&lt;p>這個詞出現在「&lt;a href="../measuring-detectors/">怎麼量一個偵測器準不準&lt;/a>」這個問題裡——它是其中一把尺。&lt;/p>&lt;/blockquote>
&lt;p>precision（精確率）回答一個問題：&lt;strong>偵測器說「有」的那些，有多少是真的？&lt;/strong>&lt;/p>
&lt;p>公式是 &lt;code>precision = TP / (TP + FP)&lt;/code>（TP = 真陽性、FP = 假陽性）：分母是「所有被判為陽性的」，分子是其中真的陽性。所以 &lt;a href="../false-positive/">false positive&lt;/a> 越多，precision 越低——誤報直接稀釋了「報出來的可信度」。&lt;/p>
&lt;h2 id="與-recall-成對">與 recall 成對&lt;/h2>
&lt;p>precision 只看「報出來的準不準」，不管「漏了多少」。漏接由 &lt;a href="../recall/">recall&lt;/a> 衡量。兩者構成評估分類器的兩端，且通常此消彼長：把門檻調嚴、只報最有把握的 → precision 升、recall 降。&lt;/p>
&lt;p>調和兩者的單一指標是 &lt;strong>F1 score&lt;/strong>（precision 與 recall 的調和平均）。&lt;/p>
&lt;h2 id="什麼時候優先看-precision">什麼時候優先看 precision&lt;/h2>
&lt;p>當 false positive 的代價高、要求「報出來就盡量別錯」時：自動封鎖、自動下架、垃圾郵件丟棄——寧可漏一些（犧牲 recall），也別誤殺。&lt;/p>
&lt;h2 id="相關概念">相關概念&lt;/h2>
&lt;ul>
&lt;li>被它懲罰的錯誤：&lt;a href="../false-positive/">false positive&lt;/a>。&lt;/li>
&lt;li>統計裡的對應：&lt;a href="../type-i-error/">Type I error&lt;/a>（誤報多則 precision 低）。&lt;/li>
&lt;li>成對指標：&lt;a href="../recall/">recall&lt;/a>。&lt;/li>
&lt;/ul></description><content:encoded><![CDATA[<blockquote>
<p>這個詞出現在「<a href="../measuring-detectors/">怎麼量一個偵測器準不準</a>」這個問題裡——它是其中一把尺。</p></blockquote>
<p>precision（精確率）回答一個問題：<strong>偵測器說「有」的那些，有多少是真的？</strong></p>
<p>公式是 <code>precision = TP / (TP + FP)</code>（TP = 真陽性、FP = 假陽性）：分母是「所有被判為陽性的」，分子是其中真的陽性。所以 <a href="../false-positive/">false positive</a> 越多，precision 越低——誤報直接稀釋了「報出來的可信度」。</p>
<h2 id="與-recall-成對">與 recall 成對</h2>
<p>precision 只看「報出來的準不準」，不管「漏了多少」。漏接由 <a href="../recall/">recall</a> 衡量。兩者構成評估分類器的兩端，且通常此消彼長：把門檻調嚴、只報最有把握的 → precision 升、recall 降。</p>
<p>調和兩者的單一指標是 <strong>F1 score</strong>（precision 與 recall 的調和平均）。</p>
<h2 id="什麼時候優先看-precision">什麼時候優先看 precision</h2>
<p>當 false positive 的代價高、要求「報出來就盡量別錯」時：自動封鎖、自動下架、垃圾郵件丟棄——寧可漏一些（犧牲 recall），也別誤殺。</p>
<h2 id="相關概念">相關概念</h2>
<ul>
<li>被它懲罰的錯誤：<a href="../false-positive/">false positive</a>。</li>
<li>統計裡的對應：<a href="../type-i-error/">Type I error</a>（誤報多則 precision 低）。</li>
<li>成對指標：<a href="../recall/">recall</a>。</li>
</ul>
]]></content:encoded></item><item><title>recall：真的之中抓到多少</title><link>https://tarrragon.github.io/blog/til/terms/recall/</link><pubDate>Thu, 18 Jun 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/til/terms/recall/</guid><description>&lt;blockquote>
&lt;p>這個詞出現在「&lt;a href="../measuring-detectors/">怎麼量一個偵測器準不準&lt;/a>」這個問題裡——它是另一把尺。&lt;/p>&lt;/blockquote>
&lt;p>recall（召回率，又稱敏感度 sensitivity）回答另一個問題：&lt;strong>真實存在的那些，偵測器抓到了多少？&lt;/strong>&lt;/p>
&lt;p>公式是 &lt;code>recall = TP / (TP + FN)&lt;/code>（TP = 真陽性、FN = 假陰性）：分母是「所有真的陽性」，分子是其中被抓到的。所以 &lt;a href="../false-negative/">false negative&lt;/a> 越多，recall 越低——漏接直接拉低「抓全的能力」。&lt;/p>
&lt;h2 id="與-precision-成對">與 precision 成對&lt;/h2>
&lt;p>recall 只看「漏了沒」，不管「報出來的準不準」（那是 &lt;a href="../precision/">precision&lt;/a>）。兩者通常此消彼長：把門檻調鬆、寧可多報 → recall 升、precision 降。調和兩者的單一指標是 F1 score。&lt;/p>
&lt;h2 id="什麼時候優先看-recall">什麼時候優先看 recall&lt;/h2>
&lt;p>當 &lt;a href="../false-negative/">false negative&lt;/a> 的代價高、不能漏時：疾病篩檢、詐欺偵測、安全掃描——寧可多一些誤報（犧牲 precision）再人工複查，也別放走真的。&lt;/p>
&lt;h2 id="相關概念">相關概念&lt;/h2>
&lt;ul>
&lt;li>被它懲罰的錯誤：&lt;a href="../false-negative/">false negative&lt;/a>。&lt;/li>
&lt;li>統計裡的對應：&lt;a href="../type-ii-error/">Type II error&lt;/a>（recall 高對應檢定力高，兩者是同概念的不同 framing）。&lt;/li>
&lt;li>成對指標：&lt;a href="../precision/">precision&lt;/a>。&lt;/li>
&lt;/ul></description><content:encoded><![CDATA[<blockquote>
<p>這個詞出現在「<a href="../measuring-detectors/">怎麼量一個偵測器準不準</a>」這個問題裡——它是另一把尺。</p></blockquote>
<p>recall（召回率，又稱敏感度 sensitivity）回答另一個問題：<strong>真實存在的那些，偵測器抓到了多少？</strong></p>
<p>公式是 <code>recall = TP / (TP + FN)</code>（TP = 真陽性、FN = 假陰性）：分母是「所有真的陽性」，分子是其中被抓到的。所以 <a href="../false-negative/">false negative</a> 越多，recall 越低——漏接直接拉低「抓全的能力」。</p>
<h2 id="與-precision-成對">與 precision 成對</h2>
<p>recall 只看「漏了沒」，不管「報出來的準不準」（那是 <a href="../precision/">precision</a>）。兩者通常此消彼長：把門檻調鬆、寧可多報 → recall 升、precision 降。調和兩者的單一指標是 F1 score。</p>
<h2 id="什麼時候優先看-recall">什麼時候優先看 recall</h2>
<p>當 <a href="../false-negative/">false negative</a> 的代價高、不能漏時：疾病篩檢、詐欺偵測、安全掃描——寧可多一些誤報（犧牲 precision）再人工複查，也別放走真的。</p>
<h2 id="相關概念">相關概念</h2>
<ul>
<li>被它懲罰的錯誤：<a href="../false-negative/">false negative</a>。</li>
<li>統計裡的對應：<a href="../type-ii-error/">Type II error</a>（recall 高對應檢定力高，兩者是同概念的不同 framing）。</li>
<li>成對指標：<a href="../precision/">precision</a>。</li>
</ul>
]]></content:encoded></item><item><title>spurious failure：偽失敗</title><link>https://tarrragon.github.io/blog/til/terms/spurious-failure/</link><pubDate>Thu, 18 Jun 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/til/terms/spurious-failure/</guid><description>&lt;blockquote>
&lt;p>這個詞出現在「&lt;a href="../unreliable-tests/">測試紅燈不一定是真的壞&lt;/a>」這個問題裡。&lt;/p>&lt;/blockquote>
&lt;p>spurious failure（偽失敗）指&lt;strong>測試或建置確實失敗了，但失敗的原因是環境、網路、暫態干擾、基礎設施問題&lt;/strong>——被測對象本身沒有問題。&lt;/p>
&lt;p>它是測試的 &lt;a href="../false-positive/">false positive&lt;/a>：報了失敗、但程式碼其實沒問題。&lt;/p>
&lt;h2 id="與-flaky-的區別">與 flaky 的區別&lt;/h2>
&lt;p>兩者都是測試的 false positive，重點不同：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>spurious failure&lt;/strong> 強調「&lt;strong>這次失敗的原因不是真因&lt;/strong>」——例如 CI 機器磁碟滿了、套件源連不上。&lt;/li>
&lt;li>&lt;strong>&lt;a href="../flaky/">flaky&lt;/a>&lt;/strong> 強調「&lt;strong>間歇、不穩定&lt;/strong>」——重跑可能就過，成因常是競態或時序。&lt;/li>
&lt;/ul>
&lt;p>一次 spurious failure 不一定 flaky（環境修好就穩定失敗或穩定通過）；flaky 的每次紅則多半是 spurious——除非不穩定源自被測碼自身的非確定性（那時紅燈反映的是真缺陷，不是偽失敗）。&lt;/p>
&lt;h2 id="處理">處理&lt;/h2>
&lt;p>確認是偽失敗後，修的是&lt;strong>環境或基礎設施&lt;/strong>，不是被測程式碼。把它和真失敗區分開，避免污染對測試的信任（見 &lt;a href="../alert-fatigue/">alert fatigue&lt;/a>）。&lt;/p>
&lt;h2 id="相關概念">相關概念&lt;/h2>
&lt;ul>
&lt;li>上位概念：&lt;a href="../false-positive/">false positive&lt;/a>。&lt;/li>
&lt;li>近鄰：&lt;a href="../flaky/">flaky&lt;/a>。&lt;/li>
&lt;/ul></description><content:encoded><![CDATA[<blockquote>
<p>這個詞出現在「<a href="../unreliable-tests/">測試紅燈不一定是真的壞</a>」這個問題裡。</p></blockquote>
<p>spurious failure（偽失敗）指<strong>測試或建置確實失敗了，但失敗的原因是環境、網路、暫態干擾、基礎設施問題</strong>——被測對象本身沒有問題。</p>
<p>它是測試的 <a href="../false-positive/">false positive</a>：報了失敗、但程式碼其實沒問題。</p>
<h2 id="與-flaky-的區別">與 flaky 的區別</h2>
<p>兩者都是測試的 false positive，重點不同：</p>
<ul>
<li><strong>spurious failure</strong> 強調「<strong>這次失敗的原因不是真因</strong>」——例如 CI 機器磁碟滿了、套件源連不上。</li>
<li><strong><a href="../flaky/">flaky</a></strong> 強調「<strong>間歇、不穩定</strong>」——重跑可能就過，成因常是競態或時序。</li>
</ul>
<p>一次 spurious failure 不一定 flaky（環境修好就穩定失敗或穩定通過）；flaky 的每次紅則多半是 spurious——除非不穩定源自被測碼自身的非確定性（那時紅燈反映的是真缺陷，不是偽失敗）。</p>
<h2 id="處理">處理</h2>
<p>確認是偽失敗後，修的是<strong>環境或基礎設施</strong>，不是被測程式碼。把它和真失敗區分開，避免污染對測試的信任（見 <a href="../alert-fatigue/">alert fatigue</a>）。</p>
<h2 id="相關概念">相關概念</h2>
<ul>
<li>上位概念：<a href="../false-positive/">false positive</a>。</li>
<li>近鄰：<a href="../flaky/">flaky</a>。</li>
</ul>
]]></content:encoded></item><item><title>spurious warning：linter 的偽警告</title><link>https://tarrragon.github.io/blog/til/terms/spurious-warning/</link><pubDate>Thu, 18 Jun 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/til/terms/spurious-warning/</guid><description>&lt;blockquote>
&lt;p>這個詞出現在「&lt;a href="../guard-misfires/">守衛和規則為什麼會誤觸&lt;/a>」這個問題裡——它是 linter 切面。&lt;/p>&lt;/blockquote>
&lt;p>spurious warning（偽警告）指&lt;strong>靜態分析、linter 或編譯器報了一條警告，但其實沒有問題&lt;/strong>——是 linting / 編譯領域的 &lt;a href="../false-positive/">false positive&lt;/a>。&lt;/p>
&lt;h2 id="常見成因">常見成因&lt;/h2>
&lt;ul>
&lt;li>規則訂得過嚴，把合法寫法也圈進去。&lt;/li>
&lt;li>分析器無法&lt;strong>證明&lt;/strong>某段安全，於是保守地報警（寧可誤報也不漏報）。&lt;/li>
&lt;li>規則的比對範圍太寬，見 &lt;a href="../over-match/">over-match&lt;/a>。&lt;/li>
&lt;/ul>
&lt;h2 id="處理">處理&lt;/h2>
&lt;p>確認是偽警告後，可用 inline 抑制（如 &lt;code>// nolint&lt;/code>、&lt;code># noqa&lt;/code>）關掉那一處——但要&lt;strong>保守&lt;/strong>：抑制範圍越窄越好，否則容易把真問題一起關掉。抑制過頭、警告太多沒人理，就變成 &lt;a href="../noise/">noise&lt;/a>。&lt;/p>
&lt;h2 id="相關概念">相關概念&lt;/h2>
&lt;ul>
&lt;li>上位概念：&lt;a href="../false-positive/">false positive&lt;/a>。&lt;/li>
&lt;li>機制成因：&lt;a href="../over-match/">over-match&lt;/a>。&lt;/li>
&lt;li>量多後的狀態：&lt;a href="../noise/">noise&lt;/a>。&lt;/li>
&lt;li>測試領域的同類偽訊號：&lt;a href="../spurious-failure/">spurious failure&lt;/a>。&lt;/li>
&lt;/ul></description><content:encoded><![CDATA[<blockquote>
<p>這個詞出現在「<a href="../guard-misfires/">守衛和規則為什麼會誤觸</a>」這個問題裡——它是 linter 切面。</p></blockquote>
<p>spurious warning（偽警告）指<strong>靜態分析、linter 或編譯器報了一條警告，但其實沒有問題</strong>——是 linting / 編譯領域的 <a href="../false-positive/">false positive</a>。</p>
<h2 id="常見成因">常見成因</h2>
<ul>
<li>規則訂得過嚴，把合法寫法也圈進去。</li>
<li>分析器無法<strong>證明</strong>某段安全，於是保守地報警（寧可誤報也不漏報）。</li>
<li>規則的比對範圍太寬，見 <a href="../over-match/">over-match</a>。</li>
</ul>
<h2 id="處理">處理</h2>
<p>確認是偽警告後，可用 inline 抑制（如 <code>// nolint</code>、<code># noqa</code>）關掉那一處——但要<strong>保守</strong>：抑制範圍越窄越好，否則容易把真問題一起關掉。抑制過頭、警告太多沒人理，就變成 <a href="../noise/">noise</a>。</p>
<h2 id="相關概念">相關概念</h2>
<ul>
<li>上位概念：<a href="../false-positive/">false positive</a>。</li>
<li>機制成因：<a href="../over-match/">over-match</a>。</li>
<li>量多後的狀態：<a href="../noise/">noise</a>。</li>
<li>測試領域的同類偽訊號：<a href="../spurious-failure/">spurious failure</a>。</li>
</ul>
]]></content:encoded></item><item><title>TIL 學習筆記</title><link>https://tarrragon.github.io/blog/til/</link><pubDate>Thu, 18 Jun 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/til/</guid><description>&lt;p>這個資料夾收錄&lt;strong>工程之外學到的小知識&lt;/strong>（TIL、Today I Learned）— 單字字源、概念由來、歷史冷知識、科學概念都算。一篇只說一個知識點、寫下「當初是怎麼理解的」、之後忘了可以回來查。&lt;/p>
&lt;p>子分類：&lt;/p>
&lt;ul>
&lt;li>&lt;a href="vocab/">單字&lt;/a>：學到的英文單字 — 字源拆解、由來故事、同字根家族&lt;/li>
&lt;li>&lt;a href="terms/">跨領域術語&lt;/a>：同一個概念在不同領域的稱呼 — 一個領域 framing 一篇、互連成「概念↔領域語」地圖&lt;/li>
&lt;/ul>
&lt;p>還沒成氣候的知識點直接放本資料夾根層、同主題累積三篇以上再開子分類。&lt;/p>
&lt;hr>
&lt;h2 id="跟其他資料夾的邊界">跟其他資料夾的邊界&lt;/h2>
&lt;p>寫作前先依序評估：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>是 blog 本身設定 / Hugo / Markdown 議題？&lt;/strong> → &lt;code>posts/&lt;/code>&lt;/li>
&lt;li>&lt;strong>是工作中用某工具遇到的事件？&lt;/strong> → &lt;code>work-log/&lt;/code>&lt;/li>
&lt;li>&lt;strong>是中性 frame 的工作方法論？&lt;/strong> → &lt;code>record/&lt;/code>&lt;/li>
&lt;li>&lt;strong>是從 case 抽出的工程原則？&lt;/strong> → &lt;code>report/&lt;/code>&lt;/li>
&lt;li>&lt;strong>是 OS / 工具小技巧？&lt;/strong> → &lt;code>other/&lt;/code>&lt;/li>
&lt;li>&lt;strong>跟工程無關、純粹是學到的知識點&lt;/strong> → &lt;strong>本資料夾&lt;/strong>&lt;/li>
&lt;/ol>
&lt;p>判斷軸是「跟工程工作的距離」：前五個資料夾都服務工程脈絡、本資料夾收工程之外的學習。一個知識點若同時有工程應用（例如某演算法的歷史），以工程價值為主就放對應教材區、以故事本身為主就放這。&lt;/p>
&lt;hr>
&lt;p>底下自動列出本資料夾的所有文章、依日期排序。&lt;/p></description><content:encoded><![CDATA[<p>這個資料夾收錄<strong>工程之外學到的小知識</strong>（TIL、Today I Learned）— 單字字源、概念由來、歷史冷知識、科學概念都算。一篇只說一個知識點、寫下「當初是怎麼理解的」、之後忘了可以回來查。</p>
<p>子分類：</p>
<ul>
<li><a href="vocab/">單字</a>：學到的英文單字 — 字源拆解、由來故事、同字根家族</li>
<li><a href="terms/">跨領域術語</a>：同一個概念在不同領域的稱呼 — 一個領域 framing 一篇、互連成「概念↔領域語」地圖</li>
</ul>
<p>還沒成氣候的知識點直接放本資料夾根層、同主題累積三篇以上再開子分類。</p>
<hr>
<h2 id="跟其他資料夾的邊界">跟其他資料夾的邊界</h2>
<p>寫作前先依序評估：</p>
<ol>
<li><strong>是 blog 本身設定 / Hugo / Markdown 議題？</strong> → <code>posts/</code></li>
<li><strong>是工作中用某工具遇到的事件？</strong> → <code>work-log/</code></li>
<li><strong>是中性 frame 的工作方法論？</strong> → <code>record/</code></li>
<li><strong>是從 case 抽出的工程原則？</strong> → <code>report/</code></li>
<li><strong>是 OS / 工具小技巧？</strong> → <code>other/</code></li>
<li><strong>跟工程無關、純粹是學到的知識點</strong> → <strong>本資料夾</strong></li>
</ol>
<p>判斷軸是「跟工程工作的距離」：前五個資料夾都服務工程脈絡、本資料夾收工程之外的學習。一個知識點若同時有工程應用（例如某演算法的歷史），以工程價值為主就放對應教材區、以故事本身為主就放這。</p>
<hr>
<p>底下自動列出本資料夾的所有文章、依日期排序。</p>
]]></content:encoded></item><item><title>Type I error：統計學給假陽性的編號</title><link>https://tarrragon.github.io/blog/til/terms/type-i-error/</link><pubDate>Thu, 18 Jun 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/til/terms/type-i-error/</guid><description>&lt;blockquote>
&lt;p>這個詞出現在「&lt;a href="../detection-errors/">你的自動判斷會犯兩種錯：誤報與漏接&lt;/a>」這個問題裡——它是統計學給「誤報」的編號。&lt;/p>&lt;/blockquote>
&lt;p>統計學的假設檢定，把 &lt;a href="../false-positive/">false positive&lt;/a> 編號叫 &lt;strong>Type I error&lt;/strong>、把 false negative 叫 &lt;strong>Type II error&lt;/strong>。&lt;/p>
&lt;h2 id="兩個編號的意思">兩個編號的意思&lt;/h2>
&lt;p>假設檢定先立一個虛無假設（H₀，預設「沒有效果 / 沒有差異」），再用資料決定要不要拒絕它：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Type I error（型一錯誤）&lt;/strong>：H₀ 其實為真，卻拒絕了它——宣稱「有效果」，實際沒有。這就是 false positive。&lt;/li>
&lt;li>&lt;strong>Type II error（型二錯誤）&lt;/strong>：H₀ 其實為假，卻沒拒絕——漏掉了真實存在的效果。這就是 false negative。&lt;/li>
&lt;/ul>
&lt;h2 id="與顯著水準-α-的關係">與顯著水準 α 的關係&lt;/h2>
&lt;p>設計檢定時會先訂一個 &lt;strong>顯著水準 α&lt;/strong>（常見 0.05），它就是&lt;strong>容許的 Type I error 機率上限&lt;/strong>。在樣本數固定的前提下，把 α 設得越小，越不容易誤報（Type I 降低），但相對更容易漏掉真實效果（Type II 升高）——兩者此消彼長，這是檢定設計的核心取捨。（加大樣本數則可同時壓低兩者。）&lt;/p>
&lt;h2 id="一個好記的順序">一個好記的順序&lt;/h2>
&lt;p>哪個是 Type I、哪個是 Type II 容易記混。一個記法：&lt;strong>Type I 是「太急著宣稱有」（過度反應、誤報），Type II 是「太保守而漏掉」&lt;/strong>。可把編號順序記成「先有過度反應，才談漏接」——這純為助記，不是 Neyman-Pearson 當初編號的歷史定義。&lt;/p>
&lt;h2 id="相關概念">相關概念&lt;/h2>
&lt;ul>
&lt;li>概念本身與源頭：&lt;a href="../false-positive/">false positive&lt;/a>。&lt;/li>
&lt;li>對偶錯誤：&lt;a href="../type-ii-error/">Type II error&lt;/a>（= false negative）。&lt;/li>
&lt;li>量化的尺：&lt;a href="../precision/">precision&lt;/a>（誤報多則 precision 低）。&lt;/li>
&lt;li>程式領域描述同一件事的本土詞：&lt;a href="../over-match/">over-match&lt;/a>、&lt;a href="../false-trigger/">false trigger&lt;/a>、&lt;a href="../spurious-warning/">spurious warning&lt;/a> 等。&lt;/li>
&lt;/ul></description><content:encoded><![CDATA[<blockquote>
<p>這個詞出現在「<a href="../detection-errors/">你的自動判斷會犯兩種錯：誤報與漏接</a>」這個問題裡——它是統計學給「誤報」的編號。</p></blockquote>
<p>統計學的假設檢定，把 <a href="../false-positive/">false positive</a> 編號叫 <strong>Type I error</strong>、把 false negative 叫 <strong>Type II error</strong>。</p>
<h2 id="兩個編號的意思">兩個編號的意思</h2>
<p>假設檢定先立一個虛無假設（H₀，預設「沒有效果 / 沒有差異」），再用資料決定要不要拒絕它：</p>
<ul>
<li><strong>Type I error（型一錯誤）</strong>：H₀ 其實為真，卻拒絕了它——宣稱「有效果」，實際沒有。這就是 false positive。</li>
<li><strong>Type II error（型二錯誤）</strong>：H₀ 其實為假，卻沒拒絕——漏掉了真實存在的效果。這就是 false negative。</li>
</ul>
<h2 id="與顯著水準-α-的關係">與顯著水準 α 的關係</h2>
<p>設計檢定時會先訂一個 <strong>顯著水準 α</strong>（常見 0.05），它就是<strong>容許的 Type I error 機率上限</strong>。在樣本數固定的前提下，把 α 設得越小，越不容易誤報（Type I 降低），但相對更容易漏掉真實效果（Type II 升高）——兩者此消彼長，這是檢定設計的核心取捨。（加大樣本數則可同時壓低兩者。）</p>
<h2 id="一個好記的順序">一個好記的順序</h2>
<p>哪個是 Type I、哪個是 Type II 容易記混。一個記法：<strong>Type I 是「太急著宣稱有」（過度反應、誤報），Type II 是「太保守而漏掉」</strong>。可把編號順序記成「先有過度反應，才談漏接」——這純為助記，不是 Neyman-Pearson 當初編號的歷史定義。</p>
<h2 id="相關概念">相關概念</h2>
<ul>
<li>概念本身與源頭：<a href="../false-positive/">false positive</a>。</li>
<li>對偶錯誤：<a href="../type-ii-error/">Type II error</a>（= false negative）。</li>
<li>量化的尺：<a href="../precision/">precision</a>（誤報多則 precision 低）。</li>
<li>程式領域描述同一件事的本土詞：<a href="../over-match/">over-match</a>、<a href="../false-trigger/">false trigger</a>、<a href="../spurious-warning/">spurious warning</a> 等。</li>
</ul>
]]></content:encoded></item><item><title>Type II error：統計學給假陰性的編號</title><link>https://tarrragon.github.io/blog/til/terms/type-ii-error/</link><pubDate>Thu, 18 Jun 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/til/terms/type-ii-error/</guid><description>&lt;blockquote>
&lt;p>這個詞出現在「&lt;a href="../detection-errors/">你的自動判斷會犯兩種錯：誤報與漏接&lt;/a>」這個問題裡——它是統計學給「漏接」的編號。&lt;/p>&lt;/blockquote>
&lt;p>Type II error（型二錯誤）是 &lt;a href="../false-negative/">false negative&lt;/a> 在統計假設檢定裡的編號：&lt;strong>虛無假設（H₀，預設「沒有效果 / 沒有差異」）其實為假，卻沒拒絕它&lt;/strong>——漏掉了真實存在的效果。&lt;/p>
&lt;p>它和 &lt;a href="../type-i-error/">Type I error&lt;/a>（誤報、宣稱有實無）成對：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Type I&lt;/strong>：H₀ 為真卻拒絕 → false positive（誤報）。&lt;/li>
&lt;li>&lt;strong>Type II&lt;/strong>：H₀ 為假卻沒拒絕 → false negative（漏接）。&lt;/li>
&lt;/ul>
&lt;h2 id="β-與檢定力">β 與檢定力&lt;/h2>
&lt;p>Type II error 的機率記為 &lt;strong>β&lt;/strong>。與它互補的是&lt;strong>檢定力（statistical power）= 1 − β&lt;/strong>，也就是「H₀ 確實為假時，正確抓到的機率」。提高檢定力（少漏接）通常靠加大樣本數或放大效果量。&lt;/p>
&lt;p>把 β 對應到偵測語境，「少漏接」就是提高 &lt;a href="../recall/">recall&lt;/a>——兩者衡量的是同一件事的不同領域 framing。&lt;/p>
&lt;h2 id="相關概念">相關概念&lt;/h2>
&lt;ul>
&lt;li>對偶錯誤：&lt;a href="../false-positive/">false positive&lt;/a> / &lt;a href="../type-i-error/">Type I error&lt;/a>。&lt;/li>
&lt;li>同概念的偵測語境：&lt;a href="../false-negative/">false negative&lt;/a>。&lt;/li>
&lt;li>量化的尺：&lt;a href="../recall/">recall&lt;/a>（被 false negative 拉低）。&lt;/li>
&lt;/ul></description><content:encoded><![CDATA[<blockquote>
<p>這個詞出現在「<a href="../detection-errors/">你的自動判斷會犯兩種錯：誤報與漏接</a>」這個問題裡——它是統計學給「漏接」的編號。</p></blockquote>
<p>Type II error（型二錯誤）是 <a href="../false-negative/">false negative</a> 在統計假設檢定裡的編號：<strong>虛無假設（H₀，預設「沒有效果 / 沒有差異」）其實為假，卻沒拒絕它</strong>——漏掉了真實存在的效果。</p>
<p>它和 <a href="../type-i-error/">Type I error</a>（誤報、宣稱有實無）成對：</p>
<ul>
<li><strong>Type I</strong>：H₀ 為真卻拒絕 → false positive（誤報）。</li>
<li><strong>Type II</strong>：H₀ 為假卻沒拒絕 → false negative（漏接）。</li>
</ul>
<h2 id="β-與檢定力">β 與檢定力</h2>
<p>Type II error 的機率記為 <strong>β</strong>。與它互補的是<strong>檢定力（statistical power）= 1 − β</strong>，也就是「H₀ 確實為假時，正確抓到的機率」。提高檢定力（少漏接）通常靠加大樣本數或放大效果量。</p>
<p>把 β 對應到偵測語境，「少漏接」就是提高 <a href="../recall/">recall</a>——兩者衡量的是同一件事的不同領域 framing。</p>
<h2 id="相關概念">相關概念</h2>
<ul>
<li>對偶錯誤：<a href="../false-positive/">false positive</a> / <a href="../type-i-error/">Type I error</a>。</li>
<li>同概念的偵測語境：<a href="../false-negative/">false negative</a>。</li>
<li>量化的尺：<a href="../recall/">recall</a>（被 false negative 拉低）。</li>
</ul>
]]></content:encoded></item><item><title>守衛和規則為什麼會誤觸</title><link>https://tarrragon.github.io/blog/til/terms/guard-misfires/</link><pubDate>Thu, 18 Jun 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/til/terms/guard-misfires/</guid><description>&lt;p>你寫了一個守衛或規則（hook、linter、regex），它邏輯看起來沒錯，卻&lt;strong>命中了不該命中的東西&lt;/strong>——這是規則層的&lt;a href="../false-positive/">誤報&lt;/a>。多半的根因是同一個：規則寫得比意圖寬。&lt;/p>
&lt;h2 id="因果與一個切面">因、果、與一個切面&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>機制（因）&lt;/strong>：規則涵蓋範圍超出意圖，叫 &lt;strong>&lt;a href="../over-match/">over-match&lt;/a>&lt;/strong>（過寬匹配）。&lt;/li>
&lt;li>&lt;strong>結果（果）&lt;/strong>：守衛因此被形似但非真意圖的輸入觸發，叫 &lt;strong>&lt;a href="../false-trigger/">false trigger&lt;/a>&lt;/strong>（誤觸）。&lt;/li>
&lt;li>&lt;strong>linter 切面&lt;/strong>：靜態分析報的偽警告，叫 &lt;strong>&lt;a href="../spurious-warning/">spurious warning&lt;/a>&lt;/strong>。&lt;/li>
&lt;/ul>
&lt;h2 id="怎麼想這件事">怎麼想這件事&lt;/h2>
&lt;p>誤觸不是「偵測器壞了」，是規則的範圍沒收好。收窄規則時要拿捏：太寬會誤觸（&lt;a href="../false-positive/">誤報&lt;/a>），太窄會漏掉真的（&lt;a href="../false-negative/">漏接&lt;/a>）。這個拉扯就是&lt;a href="../measuring-detectors/">怎麼量偵測器&lt;/a>裡 precision 與 recall 的取捨。&lt;/p>
&lt;h2 id="從這裡往下讀">從這裡往下讀&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="../over-match/">over-match&lt;/a>：規則過寬而誤命中。&lt;/li>
&lt;li>&lt;a href="../false-trigger/">false trigger&lt;/a>：守衛被誤觸。&lt;/li>
&lt;li>&lt;a href="../spurious-warning/">spurious warning&lt;/a>：linter 的偽警告。&lt;/li>
&lt;/ul></description><content:encoded><![CDATA[<p>你寫了一個守衛或規則（hook、linter、regex），它邏輯看起來沒錯，卻<strong>命中了不該命中的東西</strong>——這是規則層的<a href="../false-positive/">誤報</a>。多半的根因是同一個：規則寫得比意圖寬。</p>
<h2 id="因果與一個切面">因、果、與一個切面</h2>
<ul>
<li><strong>機制（因）</strong>：規則涵蓋範圍超出意圖，叫 <strong><a href="../over-match/">over-match</a></strong>（過寬匹配）。</li>
<li><strong>結果（果）</strong>：守衛因此被形似但非真意圖的輸入觸發，叫 <strong><a href="../false-trigger/">false trigger</a></strong>（誤觸）。</li>
<li><strong>linter 切面</strong>：靜態分析報的偽警告，叫 <strong><a href="../spurious-warning/">spurious warning</a></strong>。</li>
</ul>
<h2 id="怎麼想這件事">怎麼想這件事</h2>
<p>誤觸不是「偵測器壞了」，是規則的範圍沒收好。收窄規則時要拿捏：太寬會誤觸（<a href="../false-positive/">誤報</a>），太窄會漏掉真的（<a href="../false-negative/">漏接</a>）。這個拉扯就是<a href="../measuring-detectors/">怎麼量偵測器</a>裡 precision 與 recall 的取捨。</p>
<h2 id="從這裡往下讀">從這裡往下讀</h2>
<ul>
<li><a href="../over-match/">over-match</a>：規則過寬而誤命中。</li>
<li><a href="../false-trigger/">false trigger</a>：守衛被誤觸。</li>
<li><a href="../spurious-warning/">spurious warning</a>：linter 的偽警告。</li>
</ul>
]]></content:encoded></item><item><title>你的自動判斷會犯兩種錯：誤報與漏接</title><link>https://tarrragon.github.io/blog/til/terms/detection-errors/</link><pubDate>Thu, 18 Jun 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/til/terms/detection-errors/</guid><description>&lt;p>只要你做了一個&lt;strong>會自動判斷「有沒有」的東西&lt;/strong>——測試判斷程式碼有沒有壞、掃描判斷有沒有漏洞、分類器判斷是不是垃圾郵件、守衛判斷要不要攔——它就不會永遠對。而且它錯的方式只有兩種。&lt;/p>
&lt;h2 id="兩種錯">兩種錯&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>說「有」但其實沒有 → 誤報&lt;/strong>（&lt;a href="../false-positive/">false positive&lt;/a>）。&lt;/li>
&lt;li>&lt;strong>說「沒有」但其實有 → 漏接&lt;/strong>（&lt;a href="../false-negative/">false negative&lt;/a>）。&lt;/li>
&lt;/ul>
&lt;p>把判斷（有/無）對上真實（有/無），剛好四格——這張判斷×真實的對照表叫混淆矩陣，&lt;a href="../false-positive/">false positive&lt;/a> 那篇有完整版。&lt;/p>
&lt;h2 id="為什麼值得分清楚">為什麼值得分清楚&lt;/h2>
&lt;p>因為兩種錯的&lt;strong>代價往往不對稱&lt;/strong>，而且通常此消彼長：壓低一種會抬高另一種。癌症篩檢寧可誤報也不能漏接；自動封鎖寧可漏放也別誤殺。先想清楚「哪種錯更貴」，才知道偵測器該往哪邊偏。&lt;/p>
&lt;h2 id="從這裡往下讀">從這裡往下讀&lt;/h2>
&lt;ul>
&lt;li>想徹底搞懂這兩種錯：&lt;a href="../false-positive/">false positive&lt;/a>、&lt;a href="../false-negative/">false negative&lt;/a>。&lt;/li>
&lt;li>統計課對這兩種錯的編號：&lt;a href="../type-i-error/">Type I error&lt;/a>（= 誤報）、&lt;a href="../type-ii-error/">Type II error&lt;/a>（= 漏接）。&lt;/li>
&lt;li>想用數字衡量這兩種錯有多少：見&lt;a href="../measuring-detectors/">怎麼量一個偵測器準不準&lt;/a>。&lt;/li>
&lt;/ul></description><content:encoded><![CDATA[<p>只要你做了一個<strong>會自動判斷「有沒有」的東西</strong>——測試判斷程式碼有沒有壞、掃描判斷有沒有漏洞、分類器判斷是不是垃圾郵件、守衛判斷要不要攔——它就不會永遠對。而且它錯的方式只有兩種。</p>
<h2 id="兩種錯">兩種錯</h2>
<ul>
<li><strong>說「有」但其實沒有 → 誤報</strong>（<a href="../false-positive/">false positive</a>）。</li>
<li><strong>說「沒有」但其實有 → 漏接</strong>（<a href="../false-negative/">false negative</a>）。</li>
</ul>
<p>把判斷（有/無）對上真實（有/無），剛好四格——這張判斷×真實的對照表叫混淆矩陣，<a href="../false-positive/">false positive</a> 那篇有完整版。</p>
<h2 id="為什麼值得分清楚">為什麼值得分清楚</h2>
<p>因為兩種錯的<strong>代價往往不對稱</strong>，而且通常此消彼長：壓低一種會抬高另一種。癌症篩檢寧可誤報也不能漏接；自動封鎖寧可漏放也別誤殺。先想清楚「哪種錯更貴」，才知道偵測器該往哪邊偏。</p>
<h2 id="從這裡往下讀">從這裡往下讀</h2>
<ul>
<li>想徹底搞懂這兩種錯：<a href="../false-positive/">false positive</a>、<a href="../false-negative/">false negative</a>。</li>
<li>統計課對這兩種錯的編號：<a href="../type-i-error/">Type I error</a>（= 誤報）、<a href="../type-ii-error/">Type II error</a>（= 漏接）。</li>
<li>想用數字衡量這兩種錯有多少：見<a href="../measuring-detectors/">怎麼量一個偵測器準不準</a>。</li>
</ul>
]]></content:encoded></item><item><title>告警太多，反而沒人看</title><link>https://tarrragon.github.io/blog/til/terms/alert-overload/</link><pubDate>Thu, 18 Jun 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/til/terms/alert-overload/</guid><description>&lt;p>當你的監控、掃描或 linter 整天在響，而其中大半是&lt;a href="../false-positive/">誤報&lt;/a>，你會遇到一個比「單一誤報」更麻煩的問題：&lt;strong>真正重要的被淹沒，而且人開始不看了&lt;/strong>。&lt;/p>
&lt;h2 id="從一條誤報到沒人看">從一條誤報到沒人看&lt;/h2>
&lt;p>這是一條因果鏈：&lt;/p>
&lt;ul>
&lt;li>一條監控的誤報叫 &lt;strong>&lt;a href="../false-alarm/">false alarm&lt;/a>&lt;/strong>（偽警報）。&lt;/li>
&lt;li>大量誤報累積、淹沒真訊號，這個狀態叫 &lt;strong>&lt;a href="../noise/">noise&lt;/a>&lt;/strong>（噪音）。&lt;/li>
&lt;li>人因此對告警麻木、連真的也忽略，這個後果叫 &lt;strong>&lt;a href="../alert-fatigue/">alert fatigue&lt;/a>&lt;/strong>（告警疲勞）。&lt;/li>
&lt;/ul>
&lt;h2 id="為什麼是設計問題">為什麼是設計問題&lt;/h2>
&lt;p>因為每一條告警單看都「沒錯」，問題出在&lt;strong>總量&lt;/strong>。所以解法是系統性降噪：提高告警的 &lt;a href="../precision/">precision&lt;/a>、分級、讓每條告警都可行動。降噪不是美觀問題，是讓偵測系統還有人看的前提。&lt;/p>
&lt;h2 id="從這裡往下讀">從這裡往下讀&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="../false-alarm/">false alarm&lt;/a>：監控的偽警報。&lt;/li>
&lt;li>&lt;a href="../noise/">noise&lt;/a>：淹沒真訊號的誤報。&lt;/li>
&lt;li>&lt;a href="../alert-fatigue/">alert fatigue&lt;/a>：告警疲勞。&lt;/li>
&lt;/ul></description><content:encoded><![CDATA[<p>當你的監控、掃描或 linter 整天在響，而其中大半是<a href="../false-positive/">誤報</a>，你會遇到一個比「單一誤報」更麻煩的問題：<strong>真正重要的被淹沒，而且人開始不看了</strong>。</p>
<h2 id="從一條誤報到沒人看">從一條誤報到沒人看</h2>
<p>這是一條因果鏈：</p>
<ul>
<li>一條監控的誤報叫 <strong><a href="../false-alarm/">false alarm</a></strong>（偽警報）。</li>
<li>大量誤報累積、淹沒真訊號，這個狀態叫 <strong><a href="../noise/">noise</a></strong>（噪音）。</li>
<li>人因此對告警麻木、連真的也忽略，這個後果叫 <strong><a href="../alert-fatigue/">alert fatigue</a></strong>（告警疲勞）。</li>
</ul>
<h2 id="為什麼是設計問題">為什麼是設計問題</h2>
<p>因為每一條告警單看都「沒錯」，問題出在<strong>總量</strong>。所以解法是系統性降噪：提高告警的 <a href="../precision/">precision</a>、分級、讓每條告警都可行動。降噪不是美觀問題，是讓偵測系統還有人看的前提。</p>
<h2 id="從這裡往下讀">從這裡往下讀</h2>
<ul>
<li><a href="../false-alarm/">false alarm</a>：監控的偽警報。</li>
<li><a href="../noise/">noise</a>：淹沒真訊號的誤報。</li>
<li><a href="../alert-fatigue/">alert fatigue</a>：告警疲勞。</li>
</ul>
]]></content:encoded></item><item><title>怎麼量一個偵測器準不準</title><link>https://tarrragon.github.io/blog/til/terms/measuring-detectors/</link><pubDate>Thu, 18 Jun 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/til/terms/measuring-detectors/</guid><description>&lt;p>當你想評估「這個偵測器到底好不好」，會發現只說一個「準確率」不夠——因為&lt;a href="../detection-errors/">誤報與漏接&lt;/a>是兩種不同的錯，要用兩把尺分開量。&lt;/p>
&lt;h2 id="兩把尺">兩把尺&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="../precision/">precision&lt;/a>（精確率）&lt;/strong>：報出來的之中，有多少是真的？被&lt;a href="../false-positive/">誤報&lt;/a>拉低。&lt;/li>
&lt;li>&lt;strong>&lt;a href="../recall/">recall&lt;/a>（召回率）&lt;/strong>：真的之中，抓到了多少？被&lt;a href="../false-negative/">漏接&lt;/a>拉低。&lt;/li>
&lt;/ul>
&lt;h2 id="為什麼要兩把">為什麼要兩把&lt;/h2>
&lt;p>因為只看一把會被騙。一個偵測器只要「什麼都不報」，就永遠不誤報、precision 看起來無敵——但 recall 是零，全漏了。反過來「全部都報」recall 滿分、precision 慘不忍睹。兩把一起看，才知道它是真準還是在作弊。&lt;/p>
&lt;p>兩者通常此消彼長，調和成單一數字是 F1 score。要偏哪一把，回到&lt;a href="../detection-errors/">誤報與漏接哪個更貴&lt;/a>的判斷。&lt;/p>
&lt;h2 id="從這裡往下讀">從這裡往下讀&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="../precision/">precision&lt;/a>：報出來的有多少是真的。&lt;/li>
&lt;li>&lt;a href="../recall/">recall&lt;/a>：真的之中抓到多少。&lt;/li>
&lt;/ul></description><content:encoded><![CDATA[<p>當你想評估「這個偵測器到底好不好」，會發現只說一個「準確率」不夠——因為<a href="../detection-errors/">誤報與漏接</a>是兩種不同的錯，要用兩把尺分開量。</p>
<h2 id="兩把尺">兩把尺</h2>
<ul>
<li><strong><a href="../precision/">precision</a>（精確率）</strong>：報出來的之中，有多少是真的？被<a href="../false-positive/">誤報</a>拉低。</li>
<li><strong><a href="../recall/">recall</a>（召回率）</strong>：真的之中，抓到了多少？被<a href="../false-negative/">漏接</a>拉低。</li>
</ul>
<h2 id="為什麼要兩把">為什麼要兩把</h2>
<p>因為只看一把會被騙。一個偵測器只要「什麼都不報」，就永遠不誤報、precision 看起來無敵——但 recall 是零，全漏了。反過來「全部都報」recall 滿分、precision 慘不忍睹。兩把一起看，才知道它是真準還是在作弊。</p>
<p>兩者通常此消彼長，調和成單一數字是 F1 score。要偏哪一把，回到<a href="../detection-errors/">誤報與漏接哪個更貴</a>的判斷。</p>
<h2 id="從這裡往下讀">從這裡往下讀</h2>
<ul>
<li><a href="../precision/">precision</a>：報出來的有多少是真的。</li>
<li><a href="../recall/">recall</a>：真的之中抓到多少。</li>
</ul>
]]></content:encoded></item><item><title>測試紅燈不一定是真的壞</title><link>https://tarrragon.github.io/blog/til/terms/unreliable-tests/</link><pubDate>Thu, 18 Jun 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/til/terms/unreliable-tests/</guid><description>&lt;p>CI 紅了，你的第一個問題應該是：&lt;strong>這是真的壞，還是測試在騙我？&lt;/strong> 測試報紅卻不是被測程式碼的錯，就是測試領域的&lt;a href="../false-positive/">誤報&lt;/a>——而它有兩種典型樣態。&lt;/p>
&lt;h2 id="兩種假紅燈">兩種「假紅燈」&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="../flaky/">flaky&lt;/a>&lt;/strong>：同一份程式碼、什麼都沒改，卻時過時不過。問題在測試的&lt;strong>不穩定&lt;/strong>（競態、時序、共用狀態）。&lt;/li>
&lt;li>&lt;strong>&lt;a href="../spurious-failure/">spurious failure&lt;/a>&lt;/strong>：這次失敗的&lt;strong>原因不是被測對象&lt;/strong>——是環境、網路、CI 機器的暫態。&lt;/li>
&lt;/ul>
&lt;h2 id="為什麼要分清楚">為什麼要分清楚&lt;/h2>
&lt;p>因為修的地方不同：flaky 要修測試本身的不穩定，spurious failure 要修環境或基礎設施。更重要的是，把假紅燈和真失敗混在一起，會讓人養成「紅了先重跑」的反射，久了連真 bug 都被當假紅燈忽略——這就是測試版的&lt;a href="../alert-overload/">告警疲勞&lt;/a>。&lt;/p>
&lt;h2 id="從這裡往下讀">從這裡往下讀&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="../flaky/">flaky&lt;/a>：時綠時紅的測試。&lt;/li>
&lt;li>&lt;a href="../spurious-failure/">spurious failure&lt;/a>：偽失敗。&lt;/li>
&lt;/ul></description><content:encoded><![CDATA[<p>CI 紅了，你的第一個問題應該是：<strong>這是真的壞，還是測試在騙我？</strong> 測試報紅卻不是被測程式碼的錯，就是測試領域的<a href="../false-positive/">誤報</a>——而它有兩種典型樣態。</p>
<h2 id="兩種假紅燈">兩種「假紅燈」</h2>
<ul>
<li><strong><a href="../flaky/">flaky</a></strong>：同一份程式碼、什麼都沒改，卻時過時不過。問題在測試的<strong>不穩定</strong>（競態、時序、共用狀態）。</li>
<li><strong><a href="../spurious-failure/">spurious failure</a></strong>：這次失敗的<strong>原因不是被測對象</strong>——是環境、網路、CI 機器的暫態。</li>
</ul>
<h2 id="為什麼要分清楚">為什麼要分清楚</h2>
<p>因為修的地方不同：flaky 要修測試本身的不穩定，spurious failure 要修環境或基礎設施。更重要的是，把假紅燈和真失敗混在一起，會讓人養成「紅了先重跑」的反射，久了連真 bug 都被當假紅燈忽略——這就是測試版的<a href="../alert-overload/">告警疲勞</a>。</p>
<h2 id="從這裡往下讀">從這裡往下讀</h2>
<ul>
<li><a href="../flaky/">flaky</a>：時綠時紅的測試。</li>
<li><a href="../spurious-failure/">spurious failure</a>：偽失敗。</li>
</ul>
]]></content:encoded></item><item><title>跨領域術語</title><link>https://tarrragon.github.io/blog/til/terms/</link><pubDate>Thu, 18 Jun 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/til/terms/</guid><description>&lt;p>這個子分類收錄&lt;strong>一個概念與它牽起的一組詞&lt;/strong>。和 &lt;a href="../vocab/">單字&lt;/a> 收英文字源不同，這裡關心的是：一個概念在不同領域被叫成什麼、它的互補概念與衍生指標。&lt;/p>
&lt;p>第一組詞圍繞「false positive（誤報）」展開。&lt;strong>建議從你遇到的問題進入&lt;/strong>——下面每個議題頁會把你導向該讀的術語卡，而不是劈頭背定義：&lt;/p>
&lt;h2 id="從問題進入">從問題進入&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="detection-errors/">你的自動判斷會犯兩種錯&lt;/a>：誤報與漏接 —— false positive、false negative、Type I／II error&lt;/li>
&lt;li>&lt;a href="measuring-detectors/">怎麼量一個偵測器準不準&lt;/a>：—— precision、recall&lt;/li>
&lt;li>&lt;a href="unreliable-tests/">測試紅燈不一定是真的壞&lt;/a>：—— flaky、spurious failure&lt;/li>
&lt;li>&lt;a href="alert-overload/">告警太多，反而沒人看&lt;/a>：—— noise、false alarm、alert fatigue&lt;/li>
&lt;li>&lt;a href="guard-misfires/">守衛和規則為什麼會誤觸&lt;/a>：—— over-match、false trigger、spurious warning&lt;/li>
&lt;/ul>
&lt;p>每張術語卡頂部都會標明它出自哪個問題，所以從搜尋直接落在單張卡也找得到回路。&lt;/p>
&lt;hr>
&lt;p>底下自動列出本分類的所有篇章、依日期排序。&lt;/p></description><content:encoded><![CDATA[<p>這個子分類收錄<strong>一個概念與它牽起的一組詞</strong>。和 <a href="../vocab/">單字</a> 收英文字源不同，這裡關心的是：一個概念在不同領域被叫成什麼、它的互補概念與衍生指標。</p>
<p>第一組詞圍繞「false positive（誤報）」展開。<strong>建議從你遇到的問題進入</strong>——下面每個議題頁會把你導向該讀的術語卡，而不是劈頭背定義：</p>
<h2 id="從問題進入">從問題進入</h2>
<ul>
<li><a href="detection-errors/">你的自動判斷會犯兩種錯</a>：誤報與漏接 —— false positive、false negative、Type I／II error</li>
<li><a href="measuring-detectors/">怎麼量一個偵測器準不準</a>：—— precision、recall</li>
<li><a href="unreliable-tests/">測試紅燈不一定是真的壞</a>：—— flaky、spurious failure</li>
<li><a href="alert-overload/">告警太多，反而沒人看</a>：—— noise、false alarm、alert fatigue</li>
<li><a href="guard-misfires/">守衛和規則為什麼會誤觸</a>：—— over-match、false trigger、spurious warning</li>
</ul>
<p>每張術語卡頂部都會標明它出自哪個問題，所以從搜尋直接落在單張卡也找得到回路。</p>
<hr>
<p>底下自動列出本分類的所有篇章、依日期排序。</p>
]]></content:encoded></item><item><title>candidate 的字源：穿白袍的人</title><link>https://tarrragon.github.io/blog/til/vocab/candidate/</link><pubDate>Fri, 12 Jun 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/til/vocab/candidate/</guid><description>&lt;p>candidate（候選人）字面意思是「穿白袍的人」，源自拉丁文 candidātus。&lt;/p>
&lt;h2 id="字根拆解">字根拆解&lt;/h2>
&lt;ul>
&lt;li>&lt;code>cand-&lt;/code>：發光、白色、閃耀（拉丁文 candēre「發白光、發亮」）&lt;/li>
&lt;li>&lt;code>-id-&lt;/code>：形容詞性的連接成分&lt;/li>
&lt;li>&lt;code>-ate / -ātus&lt;/code>：過去分詞語尾，表「具有⋯性質的人」&lt;/li>
&lt;/ul>
&lt;h2 id="由來">由來&lt;/h2>
&lt;p>古羅馬競選公職的人會穿著用白堊漂白的純白托加長袍（toga candida），象徵純潔與清白，以爭取選民信任。「穿白袍的人」因此引申為「（求職、競選的）候選人」。&lt;/p>
&lt;h2 id="同字根家族">同字根家族&lt;/h2>
&lt;p>&lt;code>cand-&lt;/code>（白、發光）這個字根串起一整組單字：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>candid&lt;/strong>（坦白的、率真的）：源自「白、純淨」的意象&lt;/li>
&lt;li>&lt;strong>candle&lt;/strong>（蠟燭）：發光之物&lt;/li>
&lt;li>&lt;strong>candor / candour&lt;/strong>（坦誠）：candid 的名詞形&lt;/li>
&lt;li>&lt;strong>incandescent&lt;/strong>（白熾的）：in-（加強）+ candēre，燒到發白光&lt;/li>
&lt;li>&lt;strong>candela&lt;/strong>（燭光）：光度的 SI 單位、直接借自拉丁文「蠟燭」&lt;/li>
&lt;/ul>
&lt;p>記住 candēre = 發白光，這五個字加上 candidate 就全部串起來了。&lt;/p></description><content:encoded><![CDATA[<p>candidate（候選人）字面意思是「穿白袍的人」，源自拉丁文 candidātus。</p>
<h2 id="字根拆解">字根拆解</h2>
<ul>
<li><code>cand-</code>：發光、白色、閃耀（拉丁文 candēre「發白光、發亮」）</li>
<li><code>-id-</code>：形容詞性的連接成分</li>
<li><code>-ate / -ātus</code>：過去分詞語尾，表「具有⋯性質的人」</li>
</ul>
<h2 id="由來">由來</h2>
<p>古羅馬競選公職的人會穿著用白堊漂白的純白托加長袍（toga candida），象徵純潔與清白，以爭取選民信任。「穿白袍的人」因此引申為「（求職、競選的）候選人」。</p>
<h2 id="同字根家族">同字根家族</h2>
<p><code>cand-</code>（白、發光）這個字根串起一整組單字：</p>
<ul>
<li><strong>candid</strong>（坦白的、率真的）：源自「白、純淨」的意象</li>
<li><strong>candle</strong>（蠟燭）：發光之物</li>
<li><strong>candor / candour</strong>（坦誠）：candid 的名詞形</li>
<li><strong>incandescent</strong>（白熾的）：in-（加強）+ candēre，燒到發白光</li>
<li><strong>candela</strong>（燭光）：光度的 SI 單位、直接借自拉丁文「蠟燭」</li>
</ul>
<p>記住 candēre = 發白光，這五個字加上 candidate 就全部串起來了。</p>
]]></content:encoded></item><item><title>單字</title><link>https://tarrragon.github.io/blog/til/vocab/</link><pubDate>Fri, 12 Jun 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/til/vocab/</guid><description>&lt;p>這個子分類收錄&lt;strong>學到的單字&lt;/strong> — 一個單字一篇、寫字源拆解、由來故事跟同字根家族。同字根的單字之間互連、累積起來就是一張字根地圖。&lt;/p>
&lt;p>典型內容：&lt;/p>
&lt;ul>
&lt;li>&lt;a href="candidate/">candidate 的字源&lt;/a>：穿白袍的人&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>底下自動列出本分類的所有單字、依日期排序。&lt;/p></description><content:encoded><![CDATA[<p>這個子分類收錄<strong>學到的單字</strong> — 一個單字一篇、寫字源拆解、由來故事跟同字根家族。同字根的單字之間互連、累積起來就是一張字根地圖。</p>
<p>典型內容：</p>
<ul>
<li><a href="candidate/">candidate 的字源</a>：穿白袍的人</li>
</ul>
<hr>
<p>底下自動列出本分類的所有單字、依日期排序。</p>
]]></content:encoded></item><item><title>Snippet、Template、Skeleton 的差別</title><link>https://tarrragon.github.io/blog/til/snippet_template_skeleton/</link><pubDate>Wed, 22 Apr 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/til/snippet_template_skeleton/</guid><description>&lt;p>這三個字都和「可重用的內容結構」有關，但重點不同。&lt;/p>
&lt;h2 id="一般英文中的意思">一般英文中的意思&lt;/h2>
&lt;p>&lt;code>snippet&lt;/code> 原本是「片段」或「摘錄」。&lt;/p>
&lt;ul>
&lt;li>可以是一小段文字&lt;/li>
&lt;li>也可以是程式碼、對話、影像或聲音的片段&lt;/li>
&lt;li>重點是它是從整體中切出來的一小部分&lt;/li>
&lt;/ul>
&lt;p>&lt;code>template&lt;/code> 是「模板」或「範本」。&lt;/p>
&lt;ul>
&lt;li>表示一個可以反覆套用的格式&lt;/li>
&lt;li>通常會保留一些空位，等人填入內容&lt;/li>
&lt;li>重點是「先有結構，再填資料」&lt;/li>
&lt;/ul>
&lt;p>&lt;code>skeleton&lt;/code> 是「骨架」。&lt;/p>
&lt;ul>
&lt;li>表示最基本、最少的框架&lt;/li>
&lt;li>還沒有完整細節&lt;/li>
&lt;li>重點是「先把架構立起來」&lt;/li>
&lt;/ul>
&lt;h2 id="技術寫作中的意思">技術寫作中的意思&lt;/h2>
&lt;p>在技術文件、程式開發、教學內容裡，這三個詞常常各自負責不同層級的重用。&lt;/p>
&lt;h3 id="snippet">&lt;code>snippet&lt;/code>&lt;/h3>
&lt;p>通常指短小、可直接插入的內容片段。&lt;/p>
&lt;ul>
&lt;li>一小段程式碼&lt;/li>
&lt;li>一小段設定&lt;/li>
&lt;li>一小段說明文字&lt;/li>
&lt;li>一小段固定格式的提醒&lt;/li>
&lt;/ul>
&lt;p>它的特徵是短、穩、可重複使用。&lt;/p>
&lt;h3 id="template">&lt;code>template&lt;/code>&lt;/h3>
&lt;p>通常指帶欄位的完整格式。&lt;/p>
&lt;ul>
&lt;li>有固定順序&lt;/li>
&lt;li>有需要填寫的位置&lt;/li>
&lt;li>適合反覆產生同類內容&lt;/li>
&lt;/ul>
&lt;p>它的特徵是完整、可套用、可替換變數。&lt;/p>
&lt;h3 id="skeleton">&lt;code>skeleton&lt;/code>&lt;/h3>
&lt;p>通常指最小可用的結構輪廓。&lt;/p>
&lt;ul>
&lt;li>先定大標題與章節&lt;/li>
&lt;li>細節之後再補&lt;/li>
&lt;li>常用在草稿、設計、規劃階段&lt;/li>
&lt;/ul>
&lt;p>它的特徵是先搭架構，再補內容。&lt;/p>
&lt;h2 id="情境式範例">情境式範例&lt;/h2>
&lt;h3 id="1-snippet-的例子">1. &lt;code>snippet&lt;/code> 的例子&lt;/h3>
&lt;p>你在寫信時，常常會重複用到一句固定話術，例如：&lt;/p>
&lt;blockquote>
&lt;p>請在方便時回覆。&lt;/p>&lt;/blockquote>
&lt;p>這句話就是一個 &lt;code>snippet&lt;/code>。它短、固定、可以直接貼上。&lt;/p>
&lt;p>如果你每次都要通知對方資料格式，也可以保留一小段固定內容，例如：&lt;/p>
&lt;blockquote>
&lt;p>姓名：___&lt;/p>
&lt;p>日期：___&lt;/p>&lt;/blockquote>
&lt;p>這種短段落也屬於 &lt;code>snippet&lt;/code> 的概念。&lt;/p>
&lt;h3 id="2-template-的例子">2. &lt;code>template&lt;/code> 的例子&lt;/h3>
&lt;p>如果你要寫一封活動通知，可以先準備一個模板：&lt;/p>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-markdown" data-lang="markdown">&lt;span class="line">&lt;span class="ln">1&lt;/span>&lt;span class="cl">標題：{活動名稱}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">2&lt;/span>&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">3&lt;/span>&lt;span class="cl">時間：{日期}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">4&lt;/span>&lt;span class="cl">地點：{地點}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">5&lt;/span>&lt;span class="cl">對象：{受邀者}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">6&lt;/span>&lt;span class="cl">說明：{補充內容}&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>這就是 &lt;code>template&lt;/code>。&lt;/p>
&lt;ul>
&lt;li>結構先固定&lt;/li>
&lt;li>需要的資料留空&lt;/li>
&lt;li>每次只要填入不同內容就能使用&lt;/li>
&lt;/ul>
&lt;h3 id="3-skeleton-的例子">3. &lt;code>skeleton&lt;/code> 的例子&lt;/h3>
&lt;p>如果你要先寫一篇文章，但還沒想好內容，可以先畫出骨架：&lt;/p>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-markdown" data-lang="markdown">&lt;span class="line">&lt;span class="ln">1&lt;/span>&lt;span class="cl">&lt;span class="gh"># 主題
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">2&lt;/span>&lt;span class="cl">&lt;span class="gh">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">3&lt;/span>&lt;span class="cl">&lt;span class="gu">## 背景
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">4&lt;/span>&lt;span class="cl">&lt;span class="gu">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">5&lt;/span>&lt;span class="cl">&lt;span class="gu">## 問題
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">6&lt;/span>&lt;span class="cl">&lt;span class="gu">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">7&lt;/span>&lt;span class="cl">&lt;span class="gu">## 方法
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">8&lt;/span>&lt;span class="cl">&lt;span class="gu">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">9&lt;/span>&lt;span class="cl">## 結論&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>這就是 &lt;code>skeleton&lt;/code>。&lt;/p>
&lt;ul>
&lt;li>只有章節&lt;/li>
&lt;li>沒有細節&lt;/li>
&lt;li>目的是先把文章的基本輪廓立起來&lt;/li>
&lt;/ul>
&lt;h2 id="三者比較">三者比較&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>詞&lt;/th>
 &lt;th>核心意思&lt;/th>
 &lt;th>常見用途&lt;/th>
 &lt;th>完整度&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&lt;code>snippet&lt;/code>&lt;/td>
 &lt;td>片段&lt;/td>
 &lt;td>重用短句、固定段落、常用設定&lt;/td>
 &lt;td>最短&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>template&lt;/code>&lt;/td>
 &lt;td>模板&lt;/td>
 &lt;td>固定格式、帶欄位的可套用結構&lt;/td>
 &lt;td>中等&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>skeleton&lt;/code>&lt;/td>
 &lt;td>骨架&lt;/td>
 &lt;td>先建立框架，之後再補內容&lt;/td>
 &lt;td>最初步&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="直覺分辨法">直覺分辨法&lt;/h2>
&lt;p>如果要用最簡單的方式分辨：&lt;/p>
&lt;ul>
&lt;li>&lt;code>snippet&lt;/code> 是「拿來貼的短段」&lt;/li>
&lt;li>&lt;code>template&lt;/code> 是「拿來填的格式」&lt;/li>
&lt;li>&lt;code>skeleton&lt;/code> 是「拿來搭的骨架」&lt;/li>
&lt;/ul>
&lt;p>也可以這樣記：&lt;/p>
&lt;ul>
&lt;li>&lt;code>snippet&lt;/code> 解決「每次都要重寫同一句」&lt;/li>
&lt;li>&lt;code>template&lt;/code> 解決「每次都要重建同一種格式」&lt;/li>
&lt;li>&lt;code>skeleton&lt;/code> 解決「先把架構搭起來，再慢慢補細節」&lt;/li>
&lt;/ul>
&lt;h2 id="什麼時候用哪一個">什麼時候用哪一個&lt;/h2>
&lt;ul>
&lt;li>想重用短句或固定提醒時，用 &lt;code>snippet&lt;/code>&lt;/li>
&lt;li>想重複產生同類文件或表單時，用 &lt;code>template&lt;/code>&lt;/li>
&lt;li>想先把內容架構起來、還沒準備好細節時，用 &lt;code>skeleton&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="結論">結論&lt;/h2>
&lt;p>這三個詞都可以翻成「片段」或「範本」的近義概念，但在技術寫作裡，它們的分工很清楚：&lt;/p>
&lt;ul>
&lt;li>&lt;code>snippet&lt;/code> 偏短，重點是可直接重用&lt;/li>
&lt;li>&lt;code>template&lt;/code> 偏完整，重點是可套用的格式&lt;/li>
&lt;li>&lt;code>skeleton&lt;/code> 偏框架，重點是先有架構再補細節&lt;/li>
&lt;/ul></description><content:encoded><![CDATA[<p>這三個字都和「可重用的內容結構」有關，但重點不同。</p>
<h2 id="一般英文中的意思">一般英文中的意思</h2>
<p><code>snippet</code> 原本是「片段」或「摘錄」。</p>
<ul>
<li>可以是一小段文字</li>
<li>也可以是程式碼、對話、影像或聲音的片段</li>
<li>重點是它是從整體中切出來的一小部分</li>
</ul>
<p><code>template</code> 是「模板」或「範本」。</p>
<ul>
<li>表示一個可以反覆套用的格式</li>
<li>通常會保留一些空位，等人填入內容</li>
<li>重點是「先有結構，再填資料」</li>
</ul>
<p><code>skeleton</code> 是「骨架」。</p>
<ul>
<li>表示最基本、最少的框架</li>
<li>還沒有完整細節</li>
<li>重點是「先把架構立起來」</li>
</ul>
<h2 id="技術寫作中的意思">技術寫作中的意思</h2>
<p>在技術文件、程式開發、教學內容裡，這三個詞常常各自負責不同層級的重用。</p>
<h3 id="snippet"><code>snippet</code></h3>
<p>通常指短小、可直接插入的內容片段。</p>
<ul>
<li>一小段程式碼</li>
<li>一小段設定</li>
<li>一小段說明文字</li>
<li>一小段固定格式的提醒</li>
</ul>
<p>它的特徵是短、穩、可重複使用。</p>
<h3 id="template"><code>template</code></h3>
<p>通常指帶欄位的完整格式。</p>
<ul>
<li>有固定順序</li>
<li>有需要填寫的位置</li>
<li>適合反覆產生同類內容</li>
</ul>
<p>它的特徵是完整、可套用、可替換變數。</p>
<h3 id="skeleton"><code>skeleton</code></h3>
<p>通常指最小可用的結構輪廓。</p>
<ul>
<li>先定大標題與章節</li>
<li>細節之後再補</li>
<li>常用在草稿、設計、規劃階段</li>
</ul>
<p>它的特徵是先搭架構，再補內容。</p>
<h2 id="情境式範例">情境式範例</h2>
<h3 id="1-snippet-的例子">1. <code>snippet</code> 的例子</h3>
<p>你在寫信時，常常會重複用到一句固定話術，例如：</p>
<blockquote>
<p>請在方便時回覆。</p></blockquote>
<p>這句話就是一個 <code>snippet</code>。它短、固定、可以直接貼上。</p>
<p>如果你每次都要通知對方資料格式，也可以保留一小段固定內容，例如：</p>
<blockquote>
<p>姓名：___</p>
<p>日期：___</p></blockquote>
<p>這種短段落也屬於 <code>snippet</code> 的概念。</p>
<h3 id="2-template-的例子">2. <code>template</code> 的例子</h3>
<p>如果你要寫一封活動通知，可以先準備一個模板：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-markdown" data-lang="markdown"><span class="line"><span class="ln">1</span><span class="cl">標題：{活動名稱}
</span></span><span class="line"><span class="ln">2</span><span class="cl">
</span></span><span class="line"><span class="ln">3</span><span class="cl">時間：{日期}
</span></span><span class="line"><span class="ln">4</span><span class="cl">地點：{地點}
</span></span><span class="line"><span class="ln">5</span><span class="cl">對象：{受邀者}
</span></span><span class="line"><span class="ln">6</span><span class="cl">說明：{補充內容}</span></span></code></pre></div><p>這就是 <code>template</code>。</p>
<ul>
<li>結構先固定</li>
<li>需要的資料留空</li>
<li>每次只要填入不同內容就能使用</li>
</ul>
<h3 id="3-skeleton-的例子">3. <code>skeleton</code> 的例子</h3>
<p>如果你要先寫一篇文章，但還沒想好內容，可以先畫出骨架：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-markdown" data-lang="markdown"><span class="line"><span class="ln">1</span><span class="cl"><span class="gh"># 主題
</span></span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="gh"></span>
</span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="gu">## 背景
</span></span></span><span class="line"><span class="ln">4</span><span class="cl"><span class="gu"></span>
</span></span><span class="line"><span class="ln">5</span><span class="cl"><span class="gu">## 問題
</span></span></span><span class="line"><span class="ln">6</span><span class="cl"><span class="gu"></span>
</span></span><span class="line"><span class="ln">7</span><span class="cl"><span class="gu">## 方法
</span></span></span><span class="line"><span class="ln">8</span><span class="cl"><span class="gu"></span>
</span></span><span class="line"><span class="ln">9</span><span class="cl">## 結論</span></span></code></pre></div><p>這就是 <code>skeleton</code>。</p>
<ul>
<li>只有章節</li>
<li>沒有細節</li>
<li>目的是先把文章的基本輪廓立起來</li>
</ul>
<h2 id="三者比較">三者比較</h2>
<table>
  <thead>
      <tr>
          <th>詞</th>
          <th>核心意思</th>
          <th>常見用途</th>
          <th>完整度</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><code>snippet</code></td>
          <td>片段</td>
          <td>重用短句、固定段落、常用設定</td>
          <td>最短</td>
      </tr>
      <tr>
          <td><code>template</code></td>
          <td>模板</td>
          <td>固定格式、帶欄位的可套用結構</td>
          <td>中等</td>
      </tr>
      <tr>
          <td><code>skeleton</code></td>
          <td>骨架</td>
          <td>先建立框架，之後再補內容</td>
          <td>最初步</td>
      </tr>
  </tbody>
</table>
<h2 id="直覺分辨法">直覺分辨法</h2>
<p>如果要用最簡單的方式分辨：</p>
<ul>
<li><code>snippet</code> 是「拿來貼的短段」</li>
<li><code>template</code> 是「拿來填的格式」</li>
<li><code>skeleton</code> 是「拿來搭的骨架」</li>
</ul>
<p>也可以這樣記：</p>
<ul>
<li><code>snippet</code> 解決「每次都要重寫同一句」</li>
<li><code>template</code> 解決「每次都要重建同一種格式」</li>
<li><code>skeleton</code> 解決「先把架構搭起來，再慢慢補細節」</li>
</ul>
<h2 id="什麼時候用哪一個">什麼時候用哪一個</h2>
<ul>
<li>想重用短句或固定提醒時，用 <code>snippet</code></li>
<li>想重複產生同類文件或表單時，用 <code>template</code></li>
<li>想先把內容架構起來、還沒準備好細節時，用 <code>skeleton</code></li>
</ul>
<h2 id="結論">結論</h2>
<p>這三個詞都可以翻成「片段」或「範本」的近義概念，但在技術寫作裡，它們的分工很清楚：</p>
<ul>
<li><code>snippet</code> 偏短，重點是可直接重用</li>
<li><code>template</code> 偏完整，重點是可套用的格式</li>
<li><code>skeleton</code> 偏框架，重點是先有架構再補細節</li>
</ul>
]]></content:encoded></item></channel></rss>