<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>ivan note</title><description>個人資訊部落格：我寫過的 script、用過的工具，以及 GitHub 上的專案筆記。</description><link>https://script-docs.pages.dev/</link><language>zh-TW</language><item><title>這個站在放什麼</title><link>https://script-docs.pages.dev/posts/hello-ivan-note/</link><guid isPermaLink="true">https://script-docs.pages.dev/posts/hello-ivan-note/</guid><description>ivan note 是我的個人資訊部落格：寫過的 script、用過的工具、GitHub 上的專案，以及中間踩過的坑。</description><pubDate>Fri, 02 Oct 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;這是 ivan note 的第一篇文章，順便把這個站的規則寫下來。&lt;/p&gt;
&lt;h2 id=&quot;三種內容&quot;&gt;三種內容&lt;/h2&gt;
&lt;p&gt;站上的內容分成三種，各自有固定的位置：&lt;/p&gt;

























&lt;div class=&quot;tablewrap&quot;&gt;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;種類&lt;/th&gt;&lt;th&gt;放在哪&lt;/th&gt;&lt;th&gt;寫給誰看&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;文章&lt;/td&gt;&lt;td&gt;&lt;code&gt;posts/&lt;/code&gt;&lt;/td&gt;&lt;td&gt;想知道我怎麼想、為什麼這樣做的人&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;工具&lt;/td&gt;&lt;td&gt;&lt;code&gt;tools/&lt;/code&gt;&lt;/td&gt;&lt;td&gt;想知道我用過什麼、現在還用不用的人&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;腳本&lt;/td&gt;&lt;td&gt;&lt;code&gt;AI/&lt;/code&gt;、&lt;code&gt;container/&lt;/code&gt;、&lt;code&gt;script/&lt;/code&gt;&lt;/td&gt;&lt;td&gt;想直接把指令貼到機器上跑的人&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;腳本是特別的一種：它的頁面不是我另外寫的，而是它自己資料夾裡的 &lt;code&gt;README.md&lt;/code&gt;，一個位元組都不改。文章和工具則是專門為這個站寫的，開頭有一段 frontmatter 記錄標題、日期和標籤。&lt;/p&gt;
&lt;h2 id=&quot;它們怎麼連在一起&quot;&gt;它們怎麼連在一起&lt;/h2&gt;
&lt;p&gt;一篇文章可以標明它在講哪些工具、哪些腳本，那些頁面就會反過來列出「提到它的文章」。標籤則跨三種內容通用，點開 &lt;code&gt;kubernetes&lt;/code&gt; 會同時看到相關的文章、工具和腳本。&lt;/p&gt;
&lt;h2 id=&quot;新增一篇&quot;&gt;新增一篇&lt;/h2&gt;
&lt;p&gt;在 &lt;code&gt;posts/&lt;/code&gt; 放一個 markdown 檔，開頭寫：&lt;/p&gt;
&lt;div class=&quot;win&quot;&gt;&lt;div class=&quot;win__head&quot;&gt;&lt;span class=&quot;win__lang&quot;&gt;yaml&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;win__copy&quot; data-copy=&quot;&quot;&gt;Copy&lt;/button&gt;&lt;/div&gt;&lt;pre class=&quot;win__pre&quot;&gt;&lt;code&gt;&lt;span class=&quot;token punctuation&quot;&gt;---&lt;/span&gt;
&lt;span class=&quot;token key atrule&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 標題
&lt;span class=&quot;token key atrule&quot;&gt;date&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token datetime number&quot;&gt;2026-10-02&lt;/span&gt;
&lt;span class=&quot;token key atrule&quot;&gt;summary&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 一兩句話，會出現在列表與搜尋結果裡。
&lt;span class=&quot;token key atrule&quot;&gt;tags&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;kubernetes&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; linux&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;---&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;push 之後網站會自動重新產生。&lt;/p&gt;</content:encoded><category>meta</category></item><item><title>文件與腳本為什麼會各自漂移</title><link>https://script-docs.pages.dev/posts/script-docs-drift/</link><guid isPermaLink="true">https://script-docs.pages.dev/posts/script-docs-drift/</guid><description>README 與腳本各走各的，是自動化腳本最常見的死法。我用單一來源、可預演、CI 守門三個約束擋住它。</description><pubDate>Fri, 02 Oct 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;自動化腳本最常見的死法不是寫錯邏輯，而是&lt;strong&gt;文件與腳本各自漂移&lt;/strong&gt;：README 上的參數腳本早就改掉了，複製貼上的指令指向已經改名的 repo。&lt;/p&gt;
&lt;p&gt;我的做法是用三個約束把漂移擋住。&lt;/p&gt;
&lt;h2 id=&quot;單一來源&quot;&gt;單一來源&lt;/h2&gt;
&lt;p&gt;網站上每一個腳本頁，都是對應資料夾 &lt;code&gt;README.md&lt;/code&gt; 的逐位元組渲染，不另外維護一份文案。文件與腳本永遠出自同一個 commit，不可能有「文件寫的是舊版」這種事。&lt;/p&gt;
&lt;h2 id=&quot;可預演&quot;&gt;可預演&lt;/h2&gt;
&lt;p&gt;會動到主機狀態的腳本一律支援 &lt;code&gt;--help&lt;/code&gt; 與 &lt;code&gt;--dry-run&lt;/code&gt;。先看它要做什麼，再決定要不要真的做。&lt;/p&gt;
&lt;p&gt;例如 &lt;a href=&quot;https://script-docs.pages.dev/scripts/pve-link-iso/&quot;&gt;Proxmox VE ISO 軟連結同步&lt;/a&gt;，第一次跑之前先預演：&lt;/p&gt;
&lt;div class=&quot;win&quot;&gt;&lt;div class=&quot;win__head&quot;&gt;&lt;span class=&quot;win__lang&quot;&gt;bash&lt;/span&gt;&lt;span class=&quot;win__flag win__sudo&quot;&gt;sudo&lt;/span&gt;&lt;span class=&quot;win__flag win__dry&quot;&gt;dry-run&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;win__copy&quot; data-copy=&quot;&quot;&gt;Copy&lt;/button&gt;&lt;/div&gt;&lt;pre class=&quot;win__pre&quot;&gt;&lt;code&gt;&lt;span class=&quot;token function&quot;&gt;curl&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/CTJ425/script-docs/main/script/pve_link_iso/pve_link_iso.sh &lt;span class=&quot;token operator&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;bash&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-s&lt;/span&gt; -- --dry-run&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id=&quot;ci-守門&quot;&gt;CI 守門&lt;/h2&gt;
&lt;p&gt;shell 語法與 ShellCheck、Docker Compose 設定、以及文件裡每一條 &lt;code&gt;raw.githubusercontent.com&lt;/code&gt; 指令是否仍能解析，都在 CI 逐條驗證。貼出去的指令壞掉時，是我先知道，而不是複製它的人。&lt;/p&gt;
&lt;div class=&quot;alert&quot; data-level=&quot;plain&quot;&gt;&lt;span class=&quot;alert__label&quot;&gt;NOTE&lt;/span&gt;
&lt;p&gt;這三件事保證的是「指令存在、語法正確、設定能解析」，不保證它在你的機器上一定能跑通。所以才有 &lt;code&gt;--dry-run&lt;/code&gt;。&lt;/p&gt;
&lt;/div&gt;</content:encoded><category>ci</category><category>shell</category><category>docs</category></item></channel></rss>