<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Go on 施星宇</title><link>https://www.hugoshih.com/zh-tw/tags/go/</link><description>Recent content in Go on 施星宇</description><generator>Hugo -- gohugo.io</generator><language>zh-Hant-TW</language><lastBuildDate>Sun, 16 Aug 2026 23:04:50 +0800</lastBuildDate><atom:link href="https://www.hugoshih.com/zh-tw/tags/go/index.xml" rel="self" type="application/rss+xml"/><item><title>CineTTY 讓終端機看起來像電影駭客的小玩具</title><link>https://www.hugoshih.com/zh-tw/p/cinetty/</link><pubDate>Sun, 16 Aug 2026 23:04:50 +0800</pubDate><guid>https://www.hugoshih.com/zh-tw/p/cinetty/</guid><description>&lt;img src="https://www.hugoshih.com/p/cinetty/cover.jpg" alt="Featured image of post CineTTY 讓終端機看起來像電影駭客的小玩具" /&gt;&lt;p&gt;最近做了一個沒有什麼實際用途的小玩具：&lt;a class="link" href="https://github.com/h920032/cinetty" target="_blank" rel="noopener"&#10; &gt;CineTTY&lt;/a&gt;，啟動後，它會在終端機自動寫 C 程式、更新系統監控數字，並快速捲動 Kernel Event，呈現電影裡常見的駭客工作站效果&lt;/p&gt;&#10;&lt;p&gt;所有內容都是視覺模擬，不會真的編譯程式、掃描網路或操作系統&lt;/p&gt;&#10;&lt;h2 id="起源"&gt;起源&#10;&lt;/h2&gt;&lt;p&gt;這個專案起源於我和朋友拍攝宣傳影片的經驗，當時有幾幕想模擬工程師或駭客工作，希望螢幕上同時有程式碼、系統資訊和快速捲動的文字&lt;/p&gt;&#10;&lt;p&gt;我們試過一些網路工具，包括經典的 &lt;a class="link" href="https://github.com/abishekvashok/cmatrix" target="_blank" rel="noopener"&#10; &gt;cmatrix&lt;/a&gt;。它的綠色字元雨很有代表性，但畫面較單純，和電影裡資訊量很大的工程師工作站仍有差距，macOS 上雖然也有更複雜的工具，有些卻需要額外安裝 Runtime、套件或 Terminal Library，跨平台使用也不方便&lt;/p&gt;&#10;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;因此我想做一個安裝簡單、輸入一個指令就能啟動，而且能在 Linux、macOS 和 Windows 呈現一致效果的版本&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;p&gt;CineTTY 不是真的用 tmux 切割終端機，而是在同一個畫面裡繪製三個面板：&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;左側是一個會自動寫 C 的文字編輯器&lt;/li&gt;&#10;&lt;li&gt;右上方是一個類似 htop 的系統監控畫面&lt;/li&gt;&#10;&lt;li&gt;右下方則是不斷捲動的 Kernel Event Stream&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;早期版本也有 Matrix Rain 和互動式 Console，後來我把兩者拿掉，改成全自動演出，使用者只要執行 &lt;code&gt;cinetty&lt;/code&gt;，畫面就會像正在編譯、除錯或維護系統的工作站一樣持續運作&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="CineTTY 實際執行效果" class="gallery-image" data-flex-basis="426px" data-flex-grow="177" height="405" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://www.hugoshih.com/p/cinetty/output.gif" width="720"&gt;&lt;/p&gt;&#10;&lt;h2 id="功能"&gt;功能&#10;&lt;/h2&gt;&lt;h3 id="自動寫code的-c-編輯器"&gt;自動寫code的 C 編輯器&#10;&lt;/h3&gt;&lt;p&gt;左側模擬一個 Linux Kernel C 編輯器，包含行號、語法顏色、游標、Revision 和進度，程式碼都是固定產生好的，使用 scheduler、memory、IRQ、DMA 和 network 等 Linux 常見概念，但不會被編譯或執行，為了避免短時間內重播，我把虛構 C Source 擴充到原本的 100 倍；在預設速度下，可以持續捲動超過一個小時&lt;/p&gt;&#10;&lt;h3 id="填滿畫面的-htop-風格監控器"&gt;填滿畫面的 htop 風格監控器&#10;&lt;/h3&gt;&lt;p&gt;右上方模擬一個資訊密度很高的 htop 畫面，包括：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;多核心 CPU 使用率&lt;/li&gt;&#10;&lt;li&gt;Memory 與 Swap&lt;/li&gt;&#10;&lt;li&gt;Tasks、Threads、Load Average 與 Uptime&lt;/li&gt;&#10;&lt;li&gt;Network、Disk I/O 與溫度&lt;/li&gt;&#10;&lt;li&gt;不斷變化的 Process List&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;畫面會依照終端機大小調整排列，並盡量填滿面板。最低尺寸為 &lt;code&gt;70 × 22&lt;/code&gt;，再縮小就會顯示調整視窗的提示&lt;/p&gt;&#10;&lt;h3 id="快速捲動的-kernel-event-stream"&gt;快速捲動的 Kernel Event Stream&#10;&lt;/h3&gt;&lt;p&gt;右下方會產生不同長度與類型的虛構 Kernel Log，涵蓋 IRQ、排程器、網路封包、NVMe、檔案系統、DMA 和 Systemd 等事件。CineTTY 不會執行 &lt;code&gt;dmesg&lt;/code&gt; 或讀取真實 Log&lt;/p&gt;&#10;&lt;h2 id="安裝"&gt;安裝&#10;&lt;/h2&gt;&lt;p&gt;最簡單的方式是透過 Homebrew 安裝，接著執行 &lt;code&gt;cinetty&lt;/code&gt;：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;brew install h920032/cinetty/cinetty&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cinetty&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;Homebrew Formula 同時支援 macOS 和 Linux。也可以使用安裝腳本，自動下載適合的版本、驗證 SHA-256 Checksum，再放到 &lt;code&gt;~/.local/bin&lt;/code&gt;：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -fsSL https://raw.githubusercontent.com/h920032/cinetty/main/install.sh &lt;span class="p"&gt;|&lt;/span&gt; sh&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;若已安裝 Go 1.22 以上版本，也可以從原始碼安裝：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;go install github.com/h920032/cinetty@latest&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;Windows 使用者可以到 &lt;a class="link" href="https://github.com/h920032/cinetty/releases/latest" target="_blank" rel="noopener"&#10; &gt;最新的 GitHub Release&lt;/a&gt; 下載 &lt;code&gt;cinetty_windows_amd64.zip&lt;/code&gt;。&lt;/p&gt;&#10;&lt;h2 id="操作"&gt;操作&#10;&lt;/h2&gt;&lt;p&gt;CineTTY 全自動執行，只保留幾個必要按鍵：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;Space&lt;/code&gt;：暫停或繼續畫面&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;Q&lt;/code&gt;、&lt;code&gt;Esc&lt;/code&gt; 或 &lt;code&gt;Ctrl-C&lt;/code&gt;：結束 CineTTY&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;也可以切換 Green、Cyan 或 Amber 主題，並調整打字速度與幀率：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;span class="lnt"&gt;3&#10;&lt;/span&gt;&lt;span class="lnt"&gt;4&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cinetty -theme cyan -speed 1.5&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cinetty -theme amber -fps &lt;span class="m"&gt;60&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cinetty -no-color&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cinetty -version&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;&lt;code&gt;-speed&lt;/code&gt; 支援 &lt;code&gt;0.2&lt;/code&gt; 到 &lt;code&gt;5.0&lt;/code&gt;，&lt;code&gt;-fps&lt;/code&gt; 支援 10 到 60。&lt;/p&gt;&#10;&lt;h2 id="why-go"&gt;Why Go?&#10;&lt;/h2&gt;&lt;p&gt;最早的 Prototype 是用 Python 寫的，但我希望使用者下載一個檔案就能執行，不必先準備 Runtime 或額外套件。因此後來改用 Go，並且只使用 Standard Library，編譯完成後是單一 Native Executable，執行時不需要 Go，也沒有第三方 Go Module；畫面與輸入則透過 ANSI Escape Sequence 和各平台的 Terminal API 處理&lt;/p&gt;&#10;&lt;p&gt;目前 Release 會自動建立以下版本：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Linux x86-64 與 ARM64&lt;/li&gt;&#10;&lt;li&gt;macOS Intel 與 Apple Silicon&lt;/li&gt;&#10;&lt;li&gt;Windows x86-64&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="結語"&gt;結語&#10;&lt;/h2&gt;&lt;p&gt;CineTTY 不是系統監控器或程式編輯器，但它仍然具備完整工具該有的細節：一行指令安裝、跨平台執行、依終端機大小調整，並在離開時恢復原本畫面。它適合用在影片拍攝、Demo 背景，或者單純讓終端機暫時變得很有電影感。&lt;/p&gt;&#10;&lt;p&gt;原始碼以 MIT License 開放在 GitHub，歡迎試玩、回報問題或一起增加更多浮誇的畫面：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a class="link" href="https://github.com/h920032/cinetty" target="_blank" rel="noopener"&#10; &gt;CineTTY GitHub Repository&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a class="link" href="https://github.com/h920032/cinetty/releases/latest" target="_blank" rel="noopener"&#10; &gt;下載最新版本&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;</description></item></channel></rss>