<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>教學 on Justmaker's KB</title><link>https://justmaker.github.io/tags/%E6%95%99%E5%AD%B8/</link><description>Recent content in 教學 on Justmaker's KB</description><generator>Hugo -- gohugo.io</generator><language>zh-tw</language><lastBuildDate>Fri, 04 Apr 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://justmaker.github.io/tags/%E6%95%99%E5%AD%B8/index.xml" rel="self" type="application/rss+xml"/><item><title>用 OpenClaw 打造 AI 助理：從零開始</title><link>https://justmaker.github.io/post/ai-tools/openclaw-getting-started/</link><pubDate>Fri, 04 Apr 2025 00:00:00 +0000</pubDate><guid>https://justmaker.github.io/post/ai-tools/openclaw-getting-started/</guid><description>&lt;h2 id="什麼是-openclaw">什麼是 OpenClaw？
&lt;/h2>&lt;p>&lt;a class="link" href="https://github.com/openclaw/openclaw" target="_blank" rel="noopener"
>OpenClaw&lt;/a> 是一個開源的 AI agent 框架，可以讓 LLM（如 Claude、GPT）不只是聊天，還能實際操作你的電腦：讀寫檔案、執行指令、管理 Git、呼叫 API。&lt;/p>
&lt;p>它不是另一個 ChatGPT 包裝，而是一個&lt;strong>能幹活的 AI 助理&lt;/strong>。&lt;/p>
&lt;h2 id="核心概念">核心概念
&lt;/h2>&lt;h3 id="agent--chatbot">Agent ≠ Chatbot
&lt;/h3>&lt;p>一般 chatbot 只能接收文字、回覆文字。OpenClaw 的 agent 可以：&lt;/p>
&lt;ul>
&lt;li>📁 讀寫你的檔案系統&lt;/li>
&lt;li>🖥️ 執行 shell 指令&lt;/li>
&lt;li>🔧 操作 Git（commit、push、建 MR）&lt;/li>
&lt;li>🌐 瀏覽網頁、呼叫 API&lt;/li>
&lt;li>📱 連接 Discord / Telegram 接收訊息&lt;/li>
&lt;li>🧠 記住對話脈絡（透過 MEMORY.md）&lt;/li>
&lt;/ul>
&lt;h3 id="workspace-結構">Workspace 結構
&lt;/h3>&lt;pre tabindex="0">&lt;code>~/.openclaw/workspace/
├── AGENTS.md # Agent 行為規範
├── SOUL.md # Agent 的個性設定
├── USER.md # 關於你的資訊
├── TOOLS.md # 可用工具說明
├── IDENTITY.md # Agent 的身份
├── TODO.md # 待辦事項
└── MEMORY.md # Agent 的記憶
&lt;/code>&lt;/pre>&lt;p>這些 &lt;code>.md&lt;/code> 檔案就是 agent 的「大腦」——每次啟動時讀取，形成行為模式。&lt;/p>
&lt;h2 id="能做什麼">能做什麼？
&lt;/h2>&lt;p>以我日常使用為例：&lt;/p>
&lt;h3 id="自動化開發">自動化開發
&lt;/h3>&lt;blockquote>
&lt;p>「幫我寫一個 KVM 效能監控腳本，放到 ~/scripts/ 裡」&lt;/p>&lt;/blockquote>
&lt;p>Agent 會直接寫好腳本、設定執行權限、甚至幫你加到 crontab。&lt;/p>
&lt;h3 id="知識管理">知識管理
&lt;/h3>&lt;blockquote>
&lt;p>「把今天 Discord #ai-tools 頻道的討論整理成一篇部落格文章」&lt;/p>&lt;/blockquote>
&lt;p>Agent 讀取 Discord 訊息、整理成結構化文章、push 到 Hugo 部落格。&lt;/p>
&lt;h3 id="程式碼審查">程式碼審查
&lt;/h3>&lt;blockquote>
&lt;p>「Review 一下最新的 MR」&lt;/p>&lt;/blockquote>
&lt;p>Agent 會讀 MR diff、分析問題、留下 review comment。&lt;/p>
&lt;h2 id="適合誰">適合誰？
&lt;/h2>&lt;ul>
&lt;li>工程師、開發者（最大受益者）&lt;/li>
&lt;li>需要自動化重複工作的人&lt;/li>
&lt;li>願意花時間調教 AI 行為的人&lt;/li>
&lt;/ul>
&lt;h2 id="下一步">下一步
&lt;/h2>&lt;p>如果你對 OpenClaw 感興趣，可以到 &lt;a class="link" href="https://github.com/openclaw/openclaw" target="_blank" rel="noopener"
>GitHub repo&lt;/a> 看看文件和範例。&lt;/p>
&lt;p>後續文章會深入介紹進階功能：MCP server 串接、多 agent 協作、自動化工作流。&lt;/p></description></item><item><title>KVM 虛擬機效能調校指南</title><link>https://justmaker.github.io/post/virtualization/kvm-performance-tuning/</link><pubDate>Thu, 03 Apr 2025 00:00:00 +0000</pubDate><guid>https://justmaker.github.io/post/virtualization/kvm-performance-tuning/</guid><description>&lt;h2 id="前言">前言
&lt;/h2>&lt;p>KVM 虛擬機的預設設定通常不是最佳效能。透過一些調校，可以讓 VM 跑得更快、更穩。&lt;/p>
&lt;p>這篇整理我實際工作中用過的效能調校技巧。&lt;/p>
&lt;h2 id="1-cpu-優化">1. CPU 優化
&lt;/h2>&lt;h3 id="cpu-pinning">CPU Pinning
&lt;/h3>&lt;p>預設情況下，vCPU 可以在任何 pCPU 上執行，這會導致 cache miss 和 NUMA 問題。&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-xml" data-lang="xml">&lt;span class="line">&lt;span class="cl">&lt;span class="c">&amp;lt;!-- libvirt XML 設定 --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;vcpu&lt;/span> &lt;span class="na">placement=&lt;/span>&lt;span class="s">&amp;#39;static&amp;#39;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>4&lt;span class="nt">&amp;lt;/vcpu&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;cputune&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;vcpupin&lt;/span> &lt;span class="na">vcpu=&lt;/span>&lt;span class="s">&amp;#39;0&amp;#39;&lt;/span> &lt;span class="na">cpuset=&lt;/span>&lt;span class="s">&amp;#39;2&amp;#39;&lt;/span>&lt;span class="nt">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;vcpupin&lt;/span> &lt;span class="na">vcpu=&lt;/span>&lt;span class="s">&amp;#39;1&amp;#39;&lt;/span> &lt;span class="na">cpuset=&lt;/span>&lt;span class="s">&amp;#39;3&amp;#39;&lt;/span>&lt;span class="nt">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;vcpupin&lt;/span> &lt;span class="na">vcpu=&lt;/span>&lt;span class="s">&amp;#39;2&amp;#39;&lt;/span> &lt;span class="na">cpuset=&lt;/span>&lt;span class="s">&amp;#39;4&amp;#39;&lt;/span>&lt;span class="nt">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;vcpupin&lt;/span> &lt;span class="na">vcpu=&lt;/span>&lt;span class="s">&amp;#39;3&amp;#39;&lt;/span> &lt;span class="na">cpuset=&lt;/span>&lt;span class="s">&amp;#39;5&amp;#39;&lt;/span>&lt;span class="nt">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;/cputune&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>原則：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>避免使用 CPU 0&lt;/strong>（留給 host）&lt;/li>
&lt;li>&lt;strong>同一 NUMA node&lt;/strong> 的 CPU 分配給同一 VM&lt;/li>
&lt;li>查看 NUMA topology：&lt;code>lscpu | grep NUMA&lt;/code> 或 &lt;code>numactl --hardware&lt;/code>&lt;/li>
&lt;/ul>
&lt;h3 id="cpu-模式">CPU 模式
&lt;/h3>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-xml" data-lang="xml">&lt;span class="line">&lt;span class="cl">&lt;span class="c">&amp;lt;!-- 使用 host-passthrough 取得最佳 CPU 指令集支援 --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;cpu&lt;/span> &lt;span class="na">mode=&lt;/span>&lt;span class="s">&amp;#39;host-passthrough&amp;#39;&lt;/span> &lt;span class="na">check=&lt;/span>&lt;span class="s">&amp;#39;none&amp;#39;&lt;/span> &lt;span class="na">migratable=&lt;/span>&lt;span class="s">&amp;#39;on&amp;#39;&lt;/span>&lt;span class="nt">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;code>host-passthrough&lt;/code> 直接暴露 host CPU 特性給 VM，效能最好但會影響 live migration 相容性。&lt;/p>
&lt;h2 id="2-記憶體優化">2. 記憶體優化
&lt;/h2>&lt;h3 id="hugepages">Hugepages
&lt;/h3>&lt;p>預設 4KB page 在大量記憶體時 TLB miss 嚴重。用 2MB hugepage 可以大幅改善：&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Host 設定 hugepages（例如分配 4GB = 2048 個 2MB pages）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">echo&lt;/span> &lt;span class="m">2048&lt;/span> &amp;gt; /proc/sys/vm/nr_hugepages
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 永久設定&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">echo&lt;/span> &lt;span class="s2">&amp;#34;vm.nr_hugepages=2048&amp;#34;&lt;/span> &amp;gt;&amp;gt; /etc/sysctl.conf
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-xml" data-lang="xml">&lt;span class="line">&lt;span class="cl">&lt;span class="c">&amp;lt;!-- libvirt XML --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;memoryBacking&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;hugepages/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;/memoryBacking&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="numa-aware-memory">NUMA Aware Memory
&lt;/h3>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-xml" data-lang="xml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;numatune&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;memory&lt;/span> &lt;span class="na">mode=&lt;/span>&lt;span class="s">&amp;#39;strict&amp;#39;&lt;/span> &lt;span class="na">nodeset=&lt;/span>&lt;span class="s">&amp;#39;0&amp;#39;&lt;/span>&lt;span class="nt">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;/numatune&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>確保 VM 記憶體分配在對應的 NUMA node 上。&lt;/p>
&lt;h2 id="3-儲存-io-優化">3. 儲存 I/O 優化
&lt;/h2>&lt;h3 id="virtio-blk-vs-virtio-scsi">virtio-blk vs virtio-scsi
&lt;/h3>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>特性&lt;/th>
&lt;th>virtio-blk&lt;/th>
&lt;th>virtio-scsi&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>效能&lt;/td>
&lt;td>略快&lt;/td>
&lt;td>接近&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>功能&lt;/td>
&lt;td>基本&lt;/td>
&lt;td>SCSI 命令、multi-queue&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Discard/TRIM&lt;/td>
&lt;td>支援&lt;/td>
&lt;td>支援&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>熱插拔&lt;/td>
&lt;td>有限&lt;/td>
&lt;td>完整&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>一般用途用 &lt;code>virtio-blk&lt;/code>，需要進階 SCSI 功能用 &lt;code>virtio-scsi&lt;/code>。&lt;/p>
&lt;h3 id="io-thread">I/O Thread
&lt;/h3>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;span class="lnt">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-xml" data-lang="xml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;iothreads&amp;gt;&lt;/span>2&lt;span class="nt">&amp;lt;/iothreads&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;disk&lt;/span> &lt;span class="na">type=&lt;/span>&lt;span class="s">&amp;#39;file&amp;#39;&lt;/span> &lt;span class="na">device=&lt;/span>&lt;span class="s">&amp;#39;disk&amp;#39;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;driver&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#39;qemu&amp;#39;&lt;/span> &lt;span class="na">type=&lt;/span>&lt;span class="s">&amp;#39;qcow2&amp;#39;&lt;/span> &lt;span class="na">cache=&lt;/span>&lt;span class="s">&amp;#39;none&amp;#39;&lt;/span> &lt;span class="na">io=&lt;/span>&lt;span class="s">&amp;#39;native&amp;#39;&lt;/span> &lt;span class="na">ioeventfd=&lt;/span>&lt;span class="s">&amp;#39;on&amp;#39;&lt;/span>&lt;span class="nt">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;source&lt;/span> &lt;span class="na">file=&lt;/span>&lt;span class="s">&amp;#39;/path/to/disk.qcow2&amp;#39;&lt;/span>&lt;span class="nt">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;target&lt;/span> &lt;span class="na">dev=&lt;/span>&lt;span class="s">&amp;#39;vda&amp;#39;&lt;/span> &lt;span class="na">bus=&lt;/span>&lt;span class="s">&amp;#39;virtio&amp;#39;&lt;/span>&lt;span class="nt">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;iotune&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;iothread&amp;gt;&lt;/span>1&lt;span class="nt">&amp;lt;/iothread&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;/iotune&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;/disk&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="cache-模式">Cache 模式
&lt;/h3>&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>none&lt;/code>&lt;/td>
&lt;td>✅ 高&lt;/td>
&lt;td>✅ 好&lt;/td>
&lt;td>&lt;strong>推薦&lt;/strong> — Host cache bypass&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>writethrough&lt;/code>&lt;/td>
&lt;td>✅ 高&lt;/td>
&lt;td>❌ 慢&lt;/td>
&lt;td>資料安全優先&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>writeback&lt;/code>&lt;/td>
&lt;td>❌ 低&lt;/td>
&lt;td>✅ 快&lt;/td>
&lt;td>測試環境&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>directsync&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="4-網路優化">4. 網路優化
&lt;/h2>&lt;h3 id="virtio-net--vhost-net">virtio-net + vhost-net
&lt;/h3>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-xml" data-lang="xml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;interface&lt;/span> &lt;span class="na">type=&lt;/span>&lt;span class="s">&amp;#39;bridge&amp;#39;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;source&lt;/span> &lt;span class="na">bridge=&lt;/span>&lt;span class="s">&amp;#39;br0&amp;#39;&lt;/span>&lt;span class="nt">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;model&lt;/span> &lt;span class="na">type=&lt;/span>&lt;span class="s">&amp;#39;virtio&amp;#39;&lt;/span>&lt;span class="nt">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;driver&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#39;vhost&amp;#39;&lt;/span> &lt;span class="na">queues=&lt;/span>&lt;span class="s">&amp;#39;4&amp;#39;&lt;/span>&lt;span class="nt">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;/interface&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;code>vhost-net&lt;/code> 把部分網路處理移到 kernel space，減少 context switch。&lt;/p>
&lt;h3 id="multi-queue">Multi-queue
&lt;/h3>&lt;p>多 queue 可以利用多核心平行處理網路封包：&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-xml" data-lang="xml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;driver&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#39;vhost&amp;#39;&lt;/span> &lt;span class="na">queues=&lt;/span>&lt;span class="s">&amp;#39;4&amp;#39;&lt;/span>&lt;span class="nt">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>VM 內部也要啟用：&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">ethtool -L eth0 combined &lt;span class="m">4&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="5-實測參考數據">5. 實測參考數據
&lt;/h2>&lt;p>以下是典型 KVM 調校前後的效能差異（僅供參考）：&lt;/p>
&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>sysbench CPU&lt;/td>
&lt;td>1200 events/s&lt;/td>
&lt;td>1450 events/s&lt;/td>
&lt;td>+21%&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>fio 隨機讀 IOPS&lt;/td>
&lt;td>45K&lt;/td>
&lt;td>62K&lt;/td>
&lt;td>+38%&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>iperf3 網路&lt;/td>
&lt;td>8.2 Gbps&lt;/td>
&lt;td>9.4 Gbps&lt;/td>
&lt;td>+15%&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="總結">總結
&lt;/h2>&lt;p>KVM 效能調校的核心原則：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>減少共享&lt;/strong>：CPU pinning、NUMA 對齊&lt;/li>
&lt;li>&lt;strong>減少開銷&lt;/strong>：hugepages、vhost-net、io=native&lt;/li>
&lt;li>&lt;strong>用 virtio&lt;/strong>：不要模擬傳統硬體&lt;/li>
&lt;li>&lt;strong>量測為王&lt;/strong>：每個調校都要實測驗證&lt;/li>
&lt;/ol>
&lt;p>下一篇會講 GPU Passthrough 的設定。&lt;/p></description></item><item><title>鋼琴學習路線圖：從入門到進階</title><link>https://justmaker.github.io/post/piano/learning-roadmap/</link><pubDate>Sat, 01 Mar 2025 00:00:00 +0000</pubDate><guid>https://justmaker.github.io/post/piano/learning-roadmap/</guid><description>&lt;h2 id="我的設備">我的設備
&lt;/h2>&lt;p>目前使用 YAMAHA P85 電鋼琴，陪我走過好幾年：&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>2022&lt;/td>
&lt;td>換了控制板&lt;/td>
&lt;td>$3,000&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2024/04&lt;/td>
&lt;td>換了琴鍵板&lt;/td>
&lt;td>$4,000&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2025/07&lt;/td>
&lt;td>換了控制板&lt;/td>
&lt;td>$3,500&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>2025/05/19 發現故障，上次維修是 2024/04/22，A3→E3 有異音。&lt;/p>
&lt;h2 id="即興教學影片推薦">即興教學影片推薦
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://youtu.be/VZ0rW5mKWto?si=31T4XgR9eBvIVo_s" target="_blank" rel="noopener"
>即興 1&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://youtu.be/oImAgNCUskg?si=cWgcWujjTbPahfAu" target="_blank" rel="noopener"
>即興 2&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://youtu.be/nUilDgcW9e0?si=OeZFhqvMOZEElJzP" target="_blank" rel="noopener"
>即興 3&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="學習流程與技術點">學習流程與技術點
&lt;/h2>&lt;p>我認為學鋼琴的流程和技術點如下：&lt;/p>
&lt;h3 id="1-手型指法手順手腕手臂身形">1. 手型、指法、手順、手腕、手臂、身形
&lt;/h3>&lt;p>這是一切的基礎：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>和弦&lt;/strong>&lt;/li>
&lt;li>&lt;strong>音階&lt;/strong>：級進&lt;/li>
&lt;li>&lt;strong>琶音&lt;/strong>：跳進&lt;/li>
&lt;li>&lt;strong>輪指&lt;/strong>&lt;/li>
&lt;li>&lt;strong>重點&lt;/strong>：放鬆、避免受傷、獨立性、訓練強度&lt;/li>
&lt;li>&lt;strong>好看&lt;/strong>：起手、收手、移動、跳躍&lt;/li>
&lt;/ul>
&lt;h3 id="2-踏板">2. 踏板
&lt;/h3>&lt;p>踏板的使用時機和深淺控制。&lt;/p>
&lt;h3 id="3-視譜分析">3. 視譜分析
&lt;/h3>&lt;p>看懂樂譜的結構、和弦、走向。&lt;/p>
&lt;h3 id="4-視奏">4. 視奏
&lt;/h3>&lt;p>邊看譜邊彈的即時反應能力。&lt;/p>
&lt;h2 id="輪指技巧">輪指技巧
&lt;/h2>&lt;ol>
&lt;li>指尖觸鍵&lt;/li>
&lt;li>按一半深度&lt;/li>
&lt;li>向掌心方向收&lt;/li>
&lt;li>手腕微抬&lt;/li>
&lt;/ol>
&lt;h2 id="技術核心八要點">技術核心八要點
&lt;/h2>&lt;ol>
&lt;li>&lt;strong>手臂放鬆&lt;/strong> — 一切的前提&lt;/li>
&lt;li>&lt;strong>手型支撐&lt;/strong> — 穩定的拱形結構&lt;/li>
&lt;li>&lt;strong>手指獨立&lt;/strong> — 每根手指單獨控制&lt;/li>
&lt;li>&lt;strong>雙手配合&lt;/strong> — 左右手的協調&lt;/li>
&lt;li>&lt;strong>激活三關節&lt;/strong> — 指尖、指根、手腕&lt;/li>
&lt;li>&lt;strong>基本觸鍵&lt;/strong> — 力度與音色控制&lt;/li>
&lt;li>&lt;strong>前臂的運用&lt;/strong> — 大跳和力度變化&lt;/li>
&lt;li>&lt;strong>指尖的運用&lt;/strong> — 精細的音色表現&lt;/li>
&lt;/ol>
&lt;h2 id="彈奏範圍建議">彈奏範圍建議
&lt;/h2>&lt;ul>
&lt;li>&lt;strong>Bass / Chord / Melody 範圍&lt;/strong>：倍低音 A 到最高音 C&lt;/li>
&lt;li>&lt;strong>伴奏範圍&lt;/strong>：最佳為低音 F 到中音 E；次佳為低音 C 到中音 G&lt;/li>
&lt;li>&lt;strong>主奏範圍&lt;/strong>：最佳為中音 G 到倍高音 E
&lt;ul>
&lt;li>男聲：低音 C 到中音 E&lt;/li>
&lt;li>女聲：低音 G 到高音 C&lt;/li>
&lt;li>主旋律會和伴奏打架，因此最好移高八度&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>高音盡量加和弦&lt;/strong>&lt;/li>
&lt;/ul>
&lt;h2 id="初級歌曲建議">初級歌曲建議
&lt;/h2>&lt;ol>
&lt;li>月亮代表我的心&lt;/li>
&lt;li>成都&lt;/li>
&lt;li>給愛麗絲（分三階段練：右手 → 左手 → 踏板）&lt;/li>
&lt;/ol></description></item><item><title>圍棋學習路線圖：從入門到升段</title><link>https://justmaker.github.io/post/baduk/learning-roadmap/</link><pubDate>Sat, 01 Feb 2025 00:00:00 +0000</pubDate><guid>https://justmaker.github.io/post/baduk/learning-roadmap/</guid><description>&lt;h2 id="圍棋三大要素">圍棋三大要素
&lt;/h2>&lt;ol>
&lt;li>&lt;strong>棋感&lt;/strong> — 直覺判斷，第一感&lt;/li>
&lt;li>&lt;strong>判斷&lt;/strong> — 形勢分析，大小判斷&lt;/li>
&lt;li>&lt;strong>計算&lt;/strong> — 死活、對殺、變化圖&lt;/li>
&lt;/ol>
&lt;h2 id="圍棋十訣">圍棋十訣
&lt;/h2>&lt;ol>
&lt;li>不得貪勝&lt;/li>
&lt;li>入界宜緩&lt;/li>
&lt;li>攻彼顧我&lt;/li>
&lt;li>棄子爭先&lt;/li>
&lt;li>捨小就大&lt;/li>
&lt;li>逢危須棄&lt;/li>
&lt;li>慎勿輕速&lt;/li>
&lt;li>動須相應&lt;/li>
&lt;li>彼強自保&lt;/li>
&lt;li>勢孤取和&lt;/li>
&lt;/ol>
&lt;h2 id="自創跟隨-ai-學習步驟">自創：跟隨 AI 學習步驟
&lt;/h2>&lt;h3 id="step-1學定式">Step 1：學定式
&lt;/h3>&lt;ul>
&lt;li>星位、小目、高目各記住至少一個可用的掛角或點三三方式&lt;/li>
&lt;li>掛角遞角點入被夾後續定型&lt;/li>
&lt;/ul>
&lt;h3 id="step-2學布局">Step 2：學布局
&lt;/h3>&lt;p>推薦工具：電腦 &lt;a class="link" href="https://github.com/sanderland/katrain" target="_blank" rel="noopener"
>KataTrain&lt;/a>、安卓 BadukAI&lt;/p>
&lt;ul>
&lt;li>上述有一邊、兩邊、邊上配合的選擇
&lt;ul>
&lt;li>進階：分遠配合、近配合&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>對角、對角+一邊、對角+兩邊配合的選擇&lt;/li>
&lt;li>遇到不會對付的布局，先去看影片學習
&lt;ul>
&lt;li>例如：二連星、三連星、中國流（含高、迷你）、小林流、向小目、錯小目、星無憂角、對角星&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h3 id="step-3學中盤">Step 3：學中盤
&lt;/h3>&lt;ul>
&lt;li>和 AI 下棋，先從自己剛好打不過的難度開始（推薦 OGS 不限時）&lt;/li>
&lt;li>下完一種策略後，從布局再出發嘗試另一種策略（OGS 分支對局功能）
&lt;ul>
&lt;li>例如：策略一 先撈實空、策略二 先建模樣、策略三 打入對方模樣&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>收官可以自己下省時間，初期可用實體棋盤輔助後續變化圖&lt;/li>
&lt;li>成果檢驗成功後往下一個等級或下一個帳號挑戰&lt;/li>
&lt;/ul>
&lt;h2 id="等級成果檢驗">等級成果檢驗
&lt;/h2>&lt;ul>
&lt;li>&lt;strong>不開狗連續戰勝該等級三盤為通過標準&lt;/strong>
&lt;ul>
&lt;li>持黑持白至少各一以上&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>可以採用不限時（建議段位以上慢慢嘗試使用預設時長）&lt;/li>
&lt;li>可以用實體棋盤輔助變化（建議段位以上慢慢嘗試不用）&lt;/li>
&lt;/ul>
&lt;h2 id="新的學習方式讓-ai-手把手教學">新的學習方式：讓 AI 手把手教學
&lt;/h2>&lt;p>建立符合自己風格的好棋觀：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>先想自己的想像落點&lt;/strong>（第一感 + 推測可能落點，只開 Next Moves）&lt;/li>
&lt;li>&lt;strong>和 AI 對答案&lt;/strong>（開 Top Moves）&lt;/li>
&lt;li>&lt;strong>釐清自己的想像落點為什麼不好，記錄下來&lt;/strong>
&lt;ul>
&lt;li>尤其第一感必須仔細檢視自己的感覺和邏輯&lt;/li>
&lt;li>必須弄清楚後續幾手雙方應對，和 AI 確認想像是否有誤&lt;/li>
&lt;li>無法釐清就標上問號，待以後回頭再釐清&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>把所有可能選點都想過&lt;/strong>（利用 Policy Moves）&lt;/li>
&lt;li>&lt;strong>選一個勝率降不多（&amp;lt;5%）且自己可以理解的解法，嘗試吸收&lt;/strong>&lt;/li>
&lt;li>&lt;strong>吸收後才去落子&lt;/strong>
&lt;ul>
&lt;li>整盤和局部的形勢（當下狀況）及方向（後續重點）都要思考&lt;/li>
&lt;li>最好能把後續幾步變化也吸收&lt;/li>
&lt;li>每一步都去對答案效果比較差&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>著重檢討自己的想像落點&lt;/strong>
&lt;ul>
&lt;li>不要學習對手落點（低段 AI 俗手連發很常見）&lt;/li>
&lt;li>學習重點在己方如何應對敵方落子（待 AI 調高段後再學對手應對）&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;h3 id="優缺點">優缺點
&lt;/h3>&lt;p>&lt;strong>優點：&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>對手穩定且省時間&lt;/li>
&lt;li>一盤棋可以學到大量知識&lt;/li>
&lt;li>在實戰中學到好的棋、好的方向&lt;/li>
&lt;li>避免初期一直輸棋不知從何檢討&lt;/li>
&lt;li>以一步或幾步為單位學習，而非整盤&lt;/li>
&lt;li>提早學會覆盤&lt;/li>
&lt;li>同樣的招式不會中第二次&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>缺點：&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>一盤棋花很長時間（數小時到數天）&lt;/li>
&lt;li>需要大量耐心、自我檢討和積極學習&lt;/li>
&lt;li>自制力不好不適用&lt;/li>
&lt;li>沒有老師帶，要自己悟&lt;/li>
&lt;/ul>
&lt;h3 id="須注意">須注意
&lt;/h3>&lt;ul>
&lt;li>不能取代詰棋，做題練細算很重要&lt;/li>
&lt;li>成果檢驗需嚴謹，過不了就繼續留在該等級&lt;/li>
&lt;li>不可躁進，沒有吸收就去走棋沒有意義&lt;/li>
&lt;li>開狗只適用和電腦下，和人下開狗沒有意義&lt;/li>
&lt;/ul>
&lt;h2 id="學棋重點">學棋重點
&lt;/h2>&lt;ol>
&lt;li>初期不了解定式無妨，先記住基本掛角和點三三方式&lt;/li>
&lt;li>&lt;strong>棋感優先&lt;/strong> — 如果預想落點大都是紅黃，自己下棋只會俗惡手連發&lt;/li>
&lt;/ol>
&lt;h2 id="升段重點">升段重點
&lt;/h2>&lt;ul>
&lt;li>中盤戰鬥、攻殺&lt;/li>
&lt;/ul>
&lt;h2 id="圍棋五階段">圍棋五階段
&lt;/h2>&lt;p>布局 → 序戰 → 中盤 → 終局戰 → 官子&lt;/p></description></item></channel></rss>