<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:blogChannel="http://backend.userland.com/blogChannelModule" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:betag="https://blogengine.io/schemas/tags">
  <channel>
    <title>The Will Will Web</title>
    <description>記載著 Will 在網路世界的學習心得與技術分享</description>
    <link>https://blog.miniasp.com/</link>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>BlogEngine.NET 3.3.7.0</generator>
    <language>zh-TW</language>
    <blogChannel:blogRoll>https://blog.miniasp.com/opml.axd</blogChannel:blogRoll>
    <blogChannel:blink>https://blog.miniasp.com/syndication.axd</blogChannel:blink>
    <dc:creator>Will Huang</dc:creator>
    <dc:title>The Will Will Web</dc:title>
    <geo:lat>24.567110</geo:lat>
    <geo:long>120.970500</geo:long>
    
    <item>
      <title>用 zsh 寫一個 TUI 小工具 gwt：在命令列快速切換 Git Worktree 資料夾</title>
      <description>
&lt;p&gt;最近我的 &lt;a href="https://git-scm.com/docs/git-worktree"&gt;Git Worktree&lt;/a&gt; 越開越多，同一個儲存庫底下常常同時掛著好幾個工作目錄，每個目錄各自對應一個分支。Worktree 本身很好用，但資料夾一多，要在命令列切換過去就變成一件很煩的事：先 &lt;code&gt;git worktree list&lt;/code&gt; 看一下清單，再用滑鼠把路徑複製起來，最後貼到 &lt;code&gt;cd&lt;/code&gt; 後面。路徑又通常很長，偶爾還會貼錯。&lt;/p&gt;&lt;p&gt;... &lt;a class="more" href="https://blog.miniasp.com/post/2026/10/31/gwt-zsh-tui-switch-git-worktree#continue"&gt;繼續閱讀&lt;/a&gt; ...&lt;/p&gt;</description>
      <link>https://blog.miniasp.com/post/2026/10/31/gwt-zsh-tui-switch-git-worktree</link>
      <author><a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="d780bebbbbf99fa2b6b9b097babeb9beb6a4a7f9b4b8ba">[email&#160;protected]</a></author>
      <comments>https://blog.miniasp.com/post/2026/10/31/gwt-zsh-tui-switch-git-worktree#comment</comments>
      <guid>https://blog.miniasp.com/post.aspx?id=eed625fe-bac5-44fe-b78e-ae6a9ed8e2f5</guid>
      <pubDate>週六, 31 十月 2026 08:22:27 +0000</pubDate>
      <category>Git</category>
      <category>工具軟體</category>
      <betag:tag>Git</betag:tag>
      <betag:tag>git worktree</betag:tag>
      <betag:tag>zsh</betag:tag>
      <betag:tag>TUI</betag:tag>
      <betag:tag>CLI</betag:tag>
      <betag:tag>shell</betag:tag>
      <dc:publisher>will</dc:publisher>
      <pingback:server>https://blog.miniasp.com/pingback.axd</pingback:server>
      <pingback:target>https://blog.miniasp.com/post.aspx?id=eed625fe-bac5-44fe-b78e-ae6a9ed8e2f5</pingback:target>
      <trackback:ping>https://blog.miniasp.com/trackback.axd?id=eed625fe-bac5-44fe-b78e-ae6a9ed8e2f5</trackback:ping>
      <wfw:comment>https://blog.miniasp.com/post/2026/10/31/gwt-zsh-tui-switch-git-worktree#comment</wfw:comment>
      <wfw:commentRss>https://blog.miniasp.com/syndication.axd?post=eed625fe-bac5-44fe-b78e-ae6a9ed8e2f5</wfw:commentRss>
    </item>
    <item>
      <title>介紹好用工具：duti (用命令列設定 macOS 檔案的預設開啟程式)</title>
      <description>
&lt;p&gt;最近我想把 Mac 上 &lt;code&gt;.md&lt;/code&gt; 檔案的預設開啟程式改成 VS Code。一般的做法是在 Finder 對檔案按「取得資訊」，在「打開檔案的應用程式」選好之後再按「全部更改⋯」。偶爾改一次還好，但這種設定如果能用一行指令完成，就能寫進指令稿，想換到其他不同應用程式時，就可以一鍵切換。&lt;/p&gt;&lt;p&gt;... &lt;a class="more" href="https://blog.miniasp.com/post/2026/10/29/duti-set-default-apps-on-macos#continue"&gt;繼續閱讀&lt;/a&gt; ...&lt;/p&gt;</description>
      <link>https://blog.miniasp.com/post/2026/10/29/duti-set-default-apps-on-macos</link>
      <author><a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="95c2fcf9f9bbdde0f4fbf2d5f8fcfbfcf4e6e5bbf6faf8">[email&#160;protected]</a></author>
      <comments>https://blog.miniasp.com/post/2026/10/29/duti-set-default-apps-on-macos#comment</comments>
      <guid>https://blog.miniasp.com/post.aspx?id=bf179578-479f-49fa-ae26-7ef493f66679</guid>
      <pubDate>週四, 29 十月 2026 05:30:57 +0000</pubDate>
      <category>macOS</category>
      <category>工具軟體</category>
      <betag:tag>duti</betag:tag>
      <betag:tag>Homebrew</betag:tag>
      <betag:tag>Launch Services</betag:tag>
      <betag:tag>UTI</betag:tag>
      <betag:tag>AppleScript</betag:tag>
      <betag:tag>CLI</betag:tag>
      <dc:publisher>will</dc:publisher>
      <pingback:server>https://blog.miniasp.com/pingback.axd</pingback:server>
      <pingback:target>https://blog.miniasp.com/post.aspx?id=bf179578-479f-49fa-ae26-7ef493f66679</pingback:target>
      <trackback:ping>https://blog.miniasp.com/trackback.axd?id=bf179578-479f-49fa-ae26-7ef493f66679</trackback:ping>
      <wfw:comment>https://blog.miniasp.com/post/2026/10/29/duti-set-default-apps-on-macos#comment</wfw:comment>
      <wfw:commentRss>https://blog.miniasp.com/syndication.axd?post=bf179578-479f-49fa-ae26-7ef493f66679</wfw:commentRss>
    </item>
    <item>
      <title>從 TWNIC 資安通知信看 DMARC 網域對齊問題</title>
      <description>
&lt;p&gt;10 月 23 日下午，我收到一封標題為「【TWNIC資安提醒】PHP 出現嚴重漏洞，請儘快更新 / Security Alert: Critical PHP Vulnerabilities, Please Update Now」的通知信。內容談的是 PHP 剛發布的兩個高風險漏洞，時機點很合理，但 Outlook 網頁版在寄件者旁邊跳出警示，說無法驗證這封信是否真的來自該寄件者。&lt;/p&gt;&lt;p&gt;... &lt;a class="more" href="https://blog.miniasp.com/post/2026/10/24/outlook-unverified-sender-spf-dmarc-alignment#continue"&gt;繼續閱讀&lt;/a&gt; ...&lt;/p&gt;</description>
      <link>https://blog.miniasp.com/post/2026/10/24/outlook-unverified-sender-spf-dmarc-alignment</link>
      <author><a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="f4a39d9898dabc81959a93b4999d9a9d958784da979b99">[email&#160;protected]</a></author>
      <comments>https://blog.miniasp.com/post/2026/10/24/outlook-unverified-sender-spf-dmarc-alignment#comment</comments>
      <guid>https://blog.miniasp.com/post.aspx?id=3ced9141-23c4-4d46-9da4-382088a0e718</guid>
      <pubDate>週六, 24 十月 2026 00:35:00 +0000</pubDate>
      <category>Security</category>
      <category>Office 365</category>
      <betag:tag>SPF</betag:tag>
      <betag:tag>DKIM</betag:tag>
      <betag:tag>DMARC</betag:tag>
      <betag:tag>Outlook</betag:tag>
      <betag:tag>Microsoft 365</betag:tag>
      <betag:tag>Email</betag:tag>
      <dc:publisher>will</dc:publisher>
      <pingback:server>https://blog.miniasp.com/pingback.axd</pingback:server>
      <pingback:target>https://blog.miniasp.com/post.aspx?id=3ced9141-23c4-4d46-9da4-382088a0e718</pingback:target>
      <trackback:ping>https://blog.miniasp.com/trackback.axd?id=3ced9141-23c4-4d46-9da4-382088a0e718</trackback:ping>
      <wfw:comment>https://blog.miniasp.com/post/2026/10/24/outlook-unverified-sender-spf-dmarc-alignment#comment</wfw:comment>
      <wfw:commentRss>https://blog.miniasp.com/syndication.axd?post=3ced9141-23c4-4d46-9da4-382088a0e718</wfw:commentRss>
    </item>
    <item>
      <title>替既有網站加入 MCP：從 Entra 登入踩坑到 OAuth 動態註冊的完整實戰紀錄</title>
      <description>
&lt;p&gt;最近我替公司內部的會議錄音與轉錄網站加入 MCP，讓 Claude Code、Codex 這類 AI 工具可以查詢我自己的會議、逐字稿、摘要與筆記。網站已經有 Microsoft Entra ID 登入與使用者白名單，我希望沿用現有認證，不要為了 MCP 再建立一套帳號，也不要新增 Entra ID 的 App registration。&lt;/p&gt;&lt;p&gt;... &lt;a class="more" href="https://blog.miniasp.com/post/2026/10/23/mcp-entra-oauth-dynamic-registration#continue"&gt;繼續閱讀&lt;/a&gt; ...&lt;/p&gt;</description>
      <link>https://blog.miniasp.com/post/2026/10/23/mcp-entra-oauth-dynamic-registration</link>
      <author><a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="683f01040446201d09060f2805010601091b18460b0705">[email&#160;protected]</a></author>
      <comments>https://blog.miniasp.com/post/2026/10/23/mcp-entra-oauth-dynamic-registration#comment</comments>
      <guid>https://blog.miniasp.com/post.aspx?id=7c38a352-9f40-4376-902d-e7f5fd8eb92f</guid>
      <pubDate>週五, 23 十月 2026 12:46:52 +0000</pubDate>
      <category>AI</category>
      <category>Microsoft Azure</category>
      <category>Security</category>
      <betag:tag>MCP</betag:tag>
      <betag:tag>OAuth</betag:tag>
      <betag:tag>Microsoft Entra ID</betag:tag>
      <betag:tag>Azure Functions</betag:tag>
      <betag:tag>Codex</betag:tag>
      <betag:tag>Claude Code</betag:tag>
      <betag:tag>PKCE</betag:tag>
      <dc:publisher>will</dc:publisher>
      <pingback:server>https://blog.miniasp.com/pingback.axd</pingback:server>
      <pingback:target>https://blog.miniasp.com/post.aspx?id=7c38a352-9f40-4376-902d-e7f5fd8eb92f</pingback:target>
      <trackback:ping>https://blog.miniasp.com/trackback.axd?id=7c38a352-9f40-4376-902d-e7f5fd8eb92f</trackback:ping>
      <wfw:comment>https://blog.miniasp.com/post/2026/10/23/mcp-entra-oauth-dynamic-registration#comment</wfw:comment>
      <wfw:commentRss>https://blog.miniasp.com/syndication.axd?post=7c38a352-9f40-4376-902d-e7f5fd8eb92f</wfw:commentRss>
    </item>
    <item>
      <title>Agentic 實戰：讓 AI Agent 完成 CLI 開發與 npm Trusted Publishing 發佈</title>
      <description>&lt;p&gt;最近我陸續上架了好幾個&lt;strong&gt;專門給 Agent 用的 CLI 工具&lt;/strong&gt;，讓 Agent 可以直接透過終端機呼叫功能、傳入參數，再讀取結構化的結果。工具做好之後，接下來就是把它們發佈到 npm，讓其他人和 Agent 也能直接安裝使用。我原本想，這件事以前就做過了，而且一月還寫過&lt;a href="https://blog.miniasp.com/post/2026/01/06/How-to-publish-npm-packages-using-the-new-Trusted-publishing-method"&gt;如何利用全新的 Trusted publishing 方法發佈 npm 套件&lt;/a&gt;，這次應該可以把整個流程交給 Agent 處理。&lt;/p&gt;&lt;p&gt;... &lt;a class="more" href="https://blog.miniasp.com/post/2026/10/22/agentic-npm-cli-trusted-publishing#continue"&gt;繼續閱讀&lt;/a&gt; ...&lt;/p&gt;</description>
      <link>https://blog.miniasp.com/post/2026/10/22/agentic-npm-cli-trusted-publishing</link>
      <author><a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="f8af919494d6b08d99969fb895919691998b88d69b9795">[email&#160;protected]</a></author>
      <comments>https://blog.miniasp.com/post/2026/10/22/agentic-npm-cli-trusted-publishing#comment</comments>
      <guid>https://blog.miniasp.com/post.aspx?id=214d9493-22ba-41b9-9dd2-b845820bd36b</guid>
      <pubDate>週四, 22 十月 2026 12:32:21 +0000</pubDate>
      <category>AI</category>
      <category>DevOps</category>
      <betag:tag>AI Agent</betag:tag>
      <betag:tag>npm</betag:tag>
      <betag:tag>Trusted publishing</betag:tag>
      <betag:tag>GitHub Actions</betag:tag>
      <betag:tag>CLI</betag:tag>
      <dc:publisher>will</dc:publisher>
      <pingback:server>https://blog.miniasp.com/pingback.axd</pingback:server>
      <pingback:target>https://blog.miniasp.com/post.aspx?id=214d9493-22ba-41b9-9dd2-b845820bd36b</pingback:target>
      <trackback:ping>https://blog.miniasp.com/trackback.axd?id=214d9493-22ba-41b9-9dd2-b845820bd36b</trackback:ping>
      <wfw:comment>https://blog.miniasp.com/post/2026/10/22/agentic-npm-cli-trusted-publishing#comment</wfw:comment>
      <wfw:commentRss>https://blog.miniasp.com/syndication.axd?post=214d9493-22ba-41b9-9dd2-b845820bd36b</wfw:commentRss>
    </item>
    <item>
      <title>使用 Ollama Cloud 取得 Token 用量：釐清 Chat Completions 與 Responses API 的串流差異</title>
      <description>&lt;p&gt;最近我在整理「頁問」串接 Ollama Cloud 的 Token 用量資訊，先釐清了一個容易混淆的問題：使用 &lt;code&gt;deepseek-v4.1-flash:1017&lt;/code&gt; 時，是不是一定要傳入 &lt;code&gt;stream_options.include_usage: true&lt;/code&gt;，才拿得到輸入與輸出的 Token 數？&lt;/p&gt;&lt;p&gt;... &lt;a class="more" href="https://blog.miniasp.com/post/2026/10/21/ollama-cloud-streaming-token-usage#continue"&gt;繼續閱讀&lt;/a&gt; ...&lt;/p&gt;</description>
      <link>https://blog.miniasp.com/post/2026/10/21/ollama-cloud-streaming-token-usage</link>
      <author><a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="9ec9f7f2f2b0d6ebfff0f9def3f7f0f7ffedeeb0fdf1f3">[email&#160;protected]</a></author>
      <comments>https://blog.miniasp.com/post/2026/10/21/ollama-cloud-streaming-token-usage#comment</comments>
      <guid>https://blog.miniasp.com/post.aspx?id=a8e39125-a5d1-4694-b5e4-a6bfef8bfd15</guid>
      <pubDate>週三, 21 十月 2026 12:42:45 +0000</pubDate>
      <category>AI</category>
      <category>Web</category>
      <betag:tag>Ollama</betag:tag>
      <betag:tag>Token</betag:tag>
      <betag:tag>Chat Completions</betag:tag>
      <betag:tag>Responses API</betag:tag>
      <betag:tag>SSE</betag:tag>
      <dc:publisher>will</dc:publisher>
      <pingback:server>https://blog.miniasp.com/pingback.axd</pingback:server>
      <pingback:target>https://blog.miniasp.com/post.aspx?id=a8e39125-a5d1-4694-b5e4-a6bfef8bfd15</pingback:target>
      <trackback:ping>https://blog.miniasp.com/trackback.axd?id=a8e39125-a5d1-4694-b5e4-a6bfef8bfd15</trackback:ping>
      <wfw:comment>https://blog.miniasp.com/post/2026/10/21/ollama-cloud-streaming-token-usage#comment</wfw:comment>
      <wfw:commentRss>https://blog.miniasp.com/syndication.axd?post=a8e39125-a5d1-4694-b5e4-a6bfef8bfd15</wfw:commentRss>
    </item>
    <item>
      <title>深入理解 bpmfvs 讀音選擇工具：用 JavaScript、詞庫與 IVS 保存多音字讀音</title>
      <description>
&lt;p&gt;最近我在研究如何替中文文章標註注音，找到 &lt;a href="https://github.com/ButTaiwan/bpmfvs"&gt;bpmfvs 注音 IVS 字型規格&lt;/a&gt;提供的讀音選擇工具。對這類工具來說，顯示注音只是其中一件事，更麻煩的是同一個字有不同讀音，而且選完之後，還要能複製到其他軟體，甚至更換字型。&lt;/p&gt;&lt;p&gt;... &lt;a class="more" href="https://blog.miniasp.com/post/2026/10/20/bpmfvs-reading-selector-javascript-ivs#continue"&gt;繼續閱讀&lt;/a&gt; ...&lt;/p&gt;</description>
      <link>https://blog.miniasp.com/post/2026/10/20/bpmfvs-reading-selector-javascript-ivs</link>
      <author><a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="2c7b4540400264594d424b6c414542454d5f5c024f4341">[email&#160;protected]</a></author>
      <comments>https://blog.miniasp.com/post/2026/10/20/bpmfvs-reading-selector-javascript-ivs#comment</comments>
      <guid>https://blog.miniasp.com/post.aspx?id=9cee4e70-e11e-4b1a-9a54-a521d141498b</guid>
      <pubDate>週一, 19 十月 2026 23:38:24 +0000</pubDate>
      <category>介紹好用工具</category>
      <category>JavaScript</category>
      <betag:tag>bpmfvs</betag:tag>
      <betag:tag>注音字型</betag:tag>
      <betag:tag>Unicode</betag:tag>
      <betag:tag>IVS</betag:tag>
      <betag:tag>JavaScript</betag:tag>
      <betag:tag>Ruby</betag:tag>
      <dc:publisher>will</dc:publisher>
      <pingback:server>https://blog.miniasp.com/pingback.axd</pingback:server>
      <pingback:target>https://blog.miniasp.com/post.aspx?id=9cee4e70-e11e-4b1a-9a54-a521d141498b</pingback:target>
      <trackback:ping>https://blog.miniasp.com/trackback.axd?id=9cee4e70-e11e-4b1a-9a54-a521d141498b</trackback:ping>
      <wfw:comment>https://blog.miniasp.com/post/2026/10/20/bpmfvs-reading-selector-javascript-ivs#comment</wfw:comment>
      <wfw:commentRss>https://blog.miniasp.com/syndication.axd?post=9cee4e70-e11e-4b1a-9a54-a521d141498b</wfw:commentRss>
    </item>
    <item>
      <title>介紹好用工具：apfel (透過 Apple FoundationModels 提供 LLM 服務)</title>
      <description>&lt;p&gt;最近我在看 &lt;a href="https://github.com/Arthur-Ficial/apfel"&gt;apfel&lt;/a&gt; 這個工具。對我來說，它最有意思的地方，是可以把 Mac 裡面的 Apple Intelligence 模型變成一個本機 HTTP API。原本需要在 Swift 程式裡呼叫的 FoundationModels，現在用 cURL 就能送出提示詞，拿回模型的回答，不需要另外申請雲端模型的 API Key。&lt;/p&gt;&lt;p&gt;... &lt;a class="more" href="https://blog.miniasp.com/post/2026/10/19/apfel-apple-foundationmodels-local-llm#continue"&gt;繼續閱讀&lt;/a&gt; ...&lt;/p&gt;</description>
      <link>https://blog.miniasp.com/post/2026/10/19/apfel-apple-foundationmodels-local-llm</link>
      <author><a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="b8efd1d4d496f0cdd9d6dff8d5d1d6d1d9cbc896dbd7d5">[email&#160;protected]</a></author>
      <comments>https://blog.miniasp.com/post/2026/10/19/apfel-apple-foundationmodels-local-llm#comment</comments>
      <guid>https://blog.miniasp.com/post.aspx?id=b2d40d1a-5580-40be-a952-d4ad82794e0b</guid>
      <pubDate>週日, 18 十月 2026 16:29:00 +0000</pubDate>
      <category>AI</category>
      <category>macOS</category>
      <betag:tag>apfel</betag:tag>
      <betag:tag>Apple Intelligence</betag:tag>
      <betag:tag>FoundationModels</betag:tag>
      <betag:tag>cURL</betag:tag>
      <betag:tag>Ollama</betag:tag>
      <dc:publisher>will</dc:publisher>
      <pingback:server>https://blog.miniasp.com/pingback.axd</pingback:server>
      <pingback:target>https://blog.miniasp.com/post.aspx?id=b2d40d1a-5580-40be-a952-d4ad82794e0b</pingback:target>
      <trackback:ping>https://blog.miniasp.com/trackback.axd?id=b2d40d1a-5580-40be-a952-d4ad82794e0b</trackback:ping>
      <wfw:comment>https://blog.miniasp.com/post/2026/10/19/apfel-apple-foundationmodels-local-llm#comment</wfw:comment>
      <wfw:commentRss>https://blog.miniasp.com/syndication.axd?post=b2d40d1a-5580-40be-a952-d4ad82794e0b</wfw:commentRss>
    </item>
    <item>
      <title>介紹好用工具：pdf-encrypt (針對 PDF 加解密與讀寫文件屬性)</title>
      <description>&lt;p&gt;我經常有一個需求，就是需要把我上課所需要的簡報轉成 PDF，還要加入防寫保護的密碼(限制編輯、防止篡改內容)。但是這個需求以前我在 Windows 的時候，有一個好用的 PDF-XChange 軟體，可以很方便地幫我修改文件屬性，還可以很快地設定密碼。但是到了 macOS 之後，我發現沒有好用的工具可以用。因此，我最近就自己寫了一套全新的 CLI 工具來做這件事。&lt;/p&gt;&lt;p&gt;... &lt;a class="more" href="https://blog.miniasp.com/post/2026/10/17/generate-write-protected-pdf-using-cli#continue"&gt;繼續閱讀&lt;/a&gt; ...&lt;/p&gt;</description>
      <link>https://blog.miniasp.com/post/2026/10/17/generate-write-protected-pdf-using-cli</link>
      <author><a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="6f3806030341271a0e01082f020601060e1c1f410c0002">[email&#160;protected]</a></author>
      <comments>https://blog.miniasp.com/post/2026/10/17/generate-write-protected-pdf-using-cli#comment</comments>
      <guid>https://blog.miniasp.com/post.aspx?id=b6112ada-54b0-47da-a2d3-f7544d0b7fb8</guid>
      <pubDate>週五, 16 十月 2026 16:33:00 +0000</pubDate>
      <category>Tips</category>
      <category>Security</category>
      <betag:tag>PDF</betag:tag>
      <betag:tag>CLI</betag:tag>
      <betag:tag>pdf-encrypt</betag:tag>
      <betag:tag>Security</betag:tag>
      <betag:tag>Rust</betag:tag>
      <dc:publisher>will</dc:publisher>
      <pingback:server>https://blog.miniasp.com/pingback.axd</pingback:server>
      <pingback:target>https://blog.miniasp.com/post.aspx?id=b6112ada-54b0-47da-a2d3-f7544d0b7fb8</pingback:target>
      <trackback:ping>https://blog.miniasp.com/trackback.axd?id=b6112ada-54b0-47da-a2d3-f7544d0b7fb8</trackback:ping>
      <wfw:comment>https://blog.miniasp.com/post/2026/10/17/generate-write-protected-pdf-using-cli#comment</wfw:comment>
      <wfw:commentRss>https://blog.miniasp.com/syndication.axd?post=b6112ada-54b0-47da-a2d3-f7544d0b7fb8</wfw:commentRss>
    </item>
    <item>
      <title>Stylebot CLI 運作機制剖析：如何用 Native Messaging 驅動瀏覽器擴充功能</title>
      <description>&lt;p&gt;在網頁客製化與前端樣式調整的工作流中，&lt;a href="https://github.com/ankit/stylebot"&gt;Stylebot&lt;/a&gt; 是一款廣受歡迎的瀏覽器擴充功能，能讓使用者針對特定網站自訂並套用 CSS 樣式。隨著自動化需求與 AI 輔助開發工具（如 Claude Code 等 Coding Agent）的普及，Stylebot 在 v4 架構中推出了官方命令列工具 &lt;code&gt;@stylebot/cli&lt;/code&gt;，讓開發者與自動化代理程式能夠直接自終端機檢視網頁結構、動態調整 CSS 樣式並擷取畫面驗證結果，無須手動開啟擴充功能的視覺化編輯器。&lt;/p&gt;&lt;p&gt;... &lt;a class="more" href="https://blog.miniasp.com/post/2026/10/13/stylebot-cli-architecture-chromium-native-messaging#continue"&gt;繼續閱讀&lt;/a&gt; ...&lt;/p&gt;</description>
      <link>https://blog.miniasp.com/post/2026/10/13/stylebot-cli-architecture-chromium-native-messaging</link>
      <author><a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="cb9ca2a7a7e583beaaa5ac8ba6a2a5a2aab8bbe5a8a4a6">[email&#160;protected]</a></author>
      <comments>https://blog.miniasp.com/post/2026/10/13/stylebot-cli-architecture-chromium-native-messaging#comment</comments>
      <guid>https://blog.miniasp.com/post.aspx?id=1e7702ab-ae19-40a8-8249-856566877f99</guid>
      <pubDate>週二, 13 十月 2026 05:43:00 +0000</pubDate>
      <category>前端工程研究</category>
      <category>Web</category>
      <category>AI</category>
      <betag:tag>Stylebot</betag:tag>
      <betag:tag>CLI</betag:tag>
      <betag:tag>Chrome Extension</betag:tag>
      <betag:tag>Native Messaging</betag:tag>
      <betag:tag>Chromium</betag:tag>
      <betag:tag>IPC</betag:tag>
      <betag:tag>Claude Code</betag:tag>
      <betag:tag>CSS</betag:tag>
      <dc:publisher>will</dc:publisher>
      <pingback:server>https://blog.miniasp.com/pingback.axd</pingback:server>
      <pingback:target>https://blog.miniasp.com/post.aspx?id=1e7702ab-ae19-40a8-8249-856566877f99</pingback:target>
      <trackback:ping>https://blog.miniasp.com/trackback.axd?id=1e7702ab-ae19-40a8-8249-856566877f99</trackback:ping>
      <wfw:comment>https://blog.miniasp.com/post/2026/10/13/stylebot-cli-architecture-chromium-native-messaging#comment</wfw:comment>
      <wfw:commentRss>https://blog.miniasp.com/syndication.axd?post=1e7702ab-ae19-40a8-8249-856566877f99</wfw:commentRss>
    </item>
    <item>
      <title>為什麼 Inno Setup 安裝程式的附加工作頁面一片空白？深入追查 Windows Global Atom Table 耗盡問題</title>
      <description>&lt;p&gt;最近我發佈了 &lt;a href="https://github.com/doggy8088/carnac/releases/tag/v2.6.0"&gt;Carnac v2.6.0&lt;/a&gt;，下載安裝檔 &lt;code&gt;Carnac-2.6.0-Setup.exe&lt;/code&gt; 準備將本機的 Carnac 2.5.0 升級上去。沒想到執行安裝程式之後，畫面直接跳到「Select Additional Tasks」頁面，中間原本應該顯示「建立桌面捷徑」與「開機自動啟動」核取方塊的區域卻&lt;strong&gt;一片空白&lt;/strong&gt;，左上角只留下一個細小的虛線焦點框。&lt;/p&gt;&lt;p&gt;... &lt;a class="more" href="https://blog.miniasp.com/post/2026/10/11/troubleshooting-inno-setup-blank-tasks-windows-global-atom-table-exhaustion#continue"&gt;繼續閱讀&lt;/a&gt; ...&lt;/p&gt;</description>
      <link>https://blog.miniasp.com/post/2026/10/11/troubleshooting-inno-setup-blank-tasks-windows-global-atom-table-exhaustion</link>
      <author><a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="1d4a7471713355687c737a5d707473747c6e6d337e7270">[email&#160;protected]</a></author>
      <comments>https://blog.miniasp.com/post/2026/10/11/troubleshooting-inno-setup-blank-tasks-windows-global-atom-table-exhaustion#comment</comments>
      <guid>https://blog.miniasp.com/post.aspx?id=526a98cd-90f2-4c1e-844e-5fa6dfbb8fe7</guid>
      <pubDate>週日, 11 十月 2026 14:35:00 +0000</pubDate>
      <category>Windows</category>
      <category>系統管理</category>
      <category>心得分享</category>
      <betag:tag>Windows</betag:tag>
      <betag:tag>Inno Setup</betag:tag>
      <betag:tag>Delphi</betag:tag>
      <betag:tag>Win32 API</betag:tag>
      <betag:tag>Global Atom Table</betag:tag>
      <betag:tag>PowerShell</betag:tag>
      <betag:tag>Carnac</betag:tag>
      <betag:tag>debug</betag:tag>
      <dc:publisher>will</dc:publisher>
      <pingback:server>https://blog.miniasp.com/pingback.axd</pingback:server>
      <pingback:target>https://blog.miniasp.com/post.aspx?id=526a98cd-90f2-4c1e-844e-5fa6dfbb8fe7</pingback:target>
      <trackback:ping>https://blog.miniasp.com/trackback.axd?id=526a98cd-90f2-4c1e-844e-5fa6dfbb8fe7</trackback:ping>
      <wfw:comment>https://blog.miniasp.com/post/2026/10/11/troubleshooting-inno-setup-blank-tasks-windows-global-atom-table-exhaustion#comment</wfw:comment>
      <wfw:commentRss>https://blog.miniasp.com/syndication.axd?post=526a98cd-90f2-4c1e-844e-5fa6dfbb8fe7</wfw:commentRss>
    </item>
    <item>
      <title>如何使用 Entra ID 應用程式與憑證存取 SharePoint 與 Teams 的指定資料夾</title>
      <description>&lt;p&gt;最近有個需求，要讓一台電腦上的排程程式，每天自動把產出的檔案上傳到公司 Teams 頻道的「檔案」裡面，讓團隊成員可以直接在 Teams 取用。這種每天定時執行的工作，當然不能靠人工登入，也不適合把某個人的帳號密碼寫進設定檔。&lt;/p&gt;&lt;p&gt;... &lt;a class="more" href="https://blog.miniasp.com/post/2026/10/06/entra-app-certificate-sharepoint-teams-folder-access#continue"&gt;繼續閱讀&lt;/a&gt; ...&lt;/p&gt;</description>
      <link>https://blog.miniasp.com/post/2026/10/06/entra-app-certificate-sharepoint-teams-folder-access</link>
      <author><a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="bfe8d6d3d391f7caded1d8ffd2d6d1d6decccf91dcd0d2">[email&#160;protected]</a></author>
      <comments>https://blog.miniasp.com/post/2026/10/06/entra-app-certificate-sharepoint-teams-folder-access#comment</comments>
      <guid>https://blog.miniasp.com/post.aspx?id=46b7d020-34a0-4c29-9fbc-41d3d9535adc</guid>
      <pubDate>週二, 6 十月 2026 17:36:46 +0000</pubDate>
      <category>Microsoft Azure</category>
      <category>Office 365</category>
      <category>Security</category>
      <betag:tag>Microsoft Entra ID</betag:tag>
      <betag:tag>Microsoft Graph</betag:tag>
      <betag:tag>SharePoint</betag:tag>
      <betag:tag>Teams</betag:tag>
      <betag:tag>OpenSSL</betag:tag>
      <betag:tag>PowerShell</betag:tag>
      <betag:tag>certificate</betag:tag>
      <dc:publisher>will</dc:publisher>
      <pingback:server>https://blog.miniasp.com/pingback.axd</pingback:server>
      <pingback:target>https://blog.miniasp.com/post.aspx?id=46b7d020-34a0-4c29-9fbc-41d3d9535adc</pingback:target>
      <trackback:ping>https://blog.miniasp.com/trackback.axd?id=46b7d020-34a0-4c29-9fbc-41d3d9535adc</trackback:ping>
      <wfw:comment>https://blog.miniasp.com/post/2026/10/06/entra-app-certificate-sharepoint-teams-folder-access#comment</wfw:comment>
      <wfw:commentRss>https://blog.miniasp.com/syndication.axd?post=46b7d020-34a0-4c29-9fbc-41d3d9535adc</wfw:commentRss>
    </item>
    <item>
      <title>如何在 macOS 使用 Windows App CLI 自動化遠端桌面連線</title>
      <description>&lt;p&gt;最近我在整理 macOS 上的 VPN 與遠端桌面連線流程，希望把每天都會重複操作的步驟，整合成幾個簡單的 &lt;code&gt;make&lt;/code&gt; 命令。VPN 可以透過命令列連線，那麼平常用來連接 Windows 主機的 &lt;strong&gt;Windows App&lt;/strong&gt;，是不是也有 CLI 可以用？能不能順便帶入帳號密碼，讓我不用每次都重新輸入？&lt;/p&gt;&lt;p&gt;... &lt;a class="more" href="https://blog.miniasp.com/post/2026/10/03/windows-app-cli-remote-desktop-automation-on-macos#continue"&gt;繼續閱讀&lt;/a&gt; ...&lt;/p&gt;</description>
      <link>https://blog.miniasp.com/post/2026/10/03/windows-app-cli-remote-desktop-automation-on-macos</link>
      <author><a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="d285bbbebefc9aa7b3bcb592bfbbbcbbb3a1a2fcb1bdbf">[email&#160;protected]</a></author>
      <comments>https://blog.miniasp.com/post/2026/10/03/windows-app-cli-remote-desktop-automation-on-macos#comment</comments>
      <guid>https://blog.miniasp.com/post.aspx?id=dbd317bf-5086-4297-8fd9-cd61d4ffc4f9</guid>
      <pubDate>週六, 3 十月 2026 15:23:24 +0000</pubDate>
      <category>macOS</category>
      <category>Windows</category>
      <betag:tag>Windows App</betag:tag>
      <betag:tag>RDP</betag:tag>
      <betag:tag>CLI</betag:tag>
      <betag:tag>JXA</betag:tag>
      <betag:tag>Makefile</betag:tag>
      <dc:publisher>will</dc:publisher>
      <pingback:server>https://blog.miniasp.com/pingback.axd</pingback:server>
      <pingback:target>https://blog.miniasp.com/post.aspx?id=dbd317bf-5086-4297-8fd9-cd61d4ffc4f9</pingback:target>
      <trackback:ping>https://blog.miniasp.com/trackback.axd?id=dbd317bf-5086-4297-8fd9-cd61d4ffc4f9</trackback:ping>
      <wfw:comment>https://blog.miniasp.com/post/2026/10/03/windows-app-cli-remote-desktop-automation-on-macos#comment</wfw:comment>
      <wfw:commentRss>https://blog.miniasp.com/syndication.axd?post=dbd317bf-5086-4297-8fd9-cd61d4ffc4f9</wfw:commentRss>
    </item>
    <item>
      <title>最佳化 Zsh 的 NVM Lazy Load 載入機制：維持 100ms 極速啟動的技巧</title>
      <description>&lt;p&gt;最近我為了極致追求 macOS 上 &lt;a href="https://zsh.sourceforge.io/"&gt;Zsh&lt;/a&gt; 終端機（搭配 Ghostty 與 Powerlevel10k）的啟動速度，針對 &lt;code&gt;~/.zshrc&lt;/code&gt; 做了一番體檢與效能重構。大家都知道，如果直接在 &lt;code&gt;~/.zshrc&lt;/code&gt; 中完整 &lt;code&gt;source "$NVM_DIR/nvm.sh"&lt;/code&gt;，每次開啟新的終端機視窗或分頁，光是這行就要耗費 200ms ~ 500ms 不等，嚴重拖慢 Shell 啟動體驗。&lt;/p&gt;&lt;p&gt;... &lt;a class="more" href="https://blog.miniasp.com/post/2026/09/01/Optimizing-NVM-Lazy-Load-Mechanism-for-Zsh#continue"&gt;繼續閱讀&lt;/a&gt; ...&lt;/p&gt;</description>
      <link>https://blog.miniasp.com/post/2026/09/01/Optimizing-NVM-Lazy-Load-Mechanism-for-Zsh</link>
      <author><a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="52053b3e3e7c1a27333c35123f3b3c3b3321227c313d3f">[email&#160;protected]</a></author>
      <comments>https://blog.miniasp.com/post/2026/09/01/Optimizing-NVM-Lazy-Load-Mechanism-for-Zsh#comment</comments>
      <guid>https://blog.miniasp.com/post.aspx?id=8c187688-abae-4762-bbb8-d1fe89d6396f</guid>
      <pubDate>週二, 1 九月 2026 12:53:00 +0000</pubDate>
      <category>Linux</category>
      <category>macOS</category>
      <betag:tag>zsh</betag:tag>
      <dc:publisher>will</dc:publisher>
      <pingback:server>https://blog.miniasp.com/pingback.axd</pingback:server>
      <pingback:target>https://blog.miniasp.com/post.aspx?id=8c187688-abae-4762-bbb8-d1fe89d6396f</pingback:target>
      <trackback:ping>https://blog.miniasp.com/trackback.axd?id=8c187688-abae-4762-bbb8-d1fe89d6396f</trackback:ping>
      <wfw:comment>https://blog.miniasp.com/post/2026/09/01/Optimizing-NVM-Lazy-Load-Mechanism-for-Zsh#comment</wfw:comment>
      <wfw:commentRss>https://blog.miniasp.com/syndication.axd?post=8c187688-abae-4762-bbb8-d1fe89d6396f</wfw:commentRss>
    </item>
    <item>
      <title>搞懂 Chrome Remote Debugging：--autoConnect、9222 與 CDP 的差異</title>
      <description>&lt;p&gt;最近我在研究 Chrome DevTools MCP 時，遇到一個讓我困惑的問題：明明在 &lt;strong&gt;chrome://inspect/#remote-debugging&lt;/strong&gt; 啟用了 Remote Debugging，也看到 &lt;strong&gt;Server running at: 127.0.0.1:9222&lt;/strong&gt;，但 &lt;strong&gt;curl http://127.0.0.1:9222/json/version&lt;/strong&gt; 卻回傳 &lt;strong&gt;HTTP 404 Not Found&lt;/strong&gt;。深入研究後才發現，這其實是兩種不同的「連線建立方式」&amp;mdash;&amp;mdash;以下就是完整的來龍去脈。&lt;/p&gt;&lt;p&gt;... &lt;a class="more" href="https://blog.miniasp.com/post/2026/08/16/chrome-remote-debugging-autoconnect-9222-cdp#continue"&gt;繼續閱讀&lt;/a&gt; ...&lt;/p&gt;</description>
      <link>https://blog.miniasp.com/post/2026/08/16/chrome-remote-debugging-autoconnect-9222-cdp</link>
      <author><a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="2f7846434301675a4e41486f424641464e5c5f014c4042">[email&#160;protected]</a></author>
      <comments>https://blog.miniasp.com/post/2026/08/16/chrome-remote-debugging-autoconnect-9222-cdp#comment</comments>
      <guid>https://blog.miniasp.com/post.aspx?id=fb82f437-8fb6-4edf-8b08-b0e66f2a5582</guid>
      <pubDate>週日, 16 八月 2026 00:13:00 +0000</pubDate>
      <category>AI</category>
      <category>Web</category>
      <betag:tag>chrome</betag:tag>
      <betag:tag>cdp</betag:tag>
      <betag:tag>autoConnect</betag:tag>
      <betag:tag>9222</betag:tag>
      <dc:publisher>will</dc:publisher>
      <pingback:server>https://blog.miniasp.com/pingback.axd</pingback:server>
      <pingback:target>https://blog.miniasp.com/post.aspx?id=fb82f437-8fb6-4edf-8b08-b0e66f2a5582</pingback:target>
      <trackback:ping>https://blog.miniasp.com/trackback.axd?id=fb82f437-8fb6-4edf-8b08-b0e66f2a5582</trackback:ping>
      <wfw:comment>https://blog.miniasp.com/post/2026/08/16/chrome-remote-debugging-autoconnect-9222-cdp#comment</wfw:comment>
      <wfw:commentRss>https://blog.miniasp.com/syndication.axd?post=fb82f437-8fb6-4edf-8b08-b0e66f2a5582</wfw:commentRss>
    </item>
  </channel>
</rss><script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>