<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://ghostsinthelab.org/feed.xml" rel="self" type="application/atom+xml" /><link href="https://ghostsinthelab.org/" rel="alternate" type="text/html" /><updated>2026-06-06T07:57:47+00:00</updated><id>https://ghostsinthelab.org/feed.xml</id><title type="html">hiroshi yui</title><subtitle>個人雜記</subtitle><entry><title type="html">新產品上線：新修輕鬆輸入法</title><link href="https://ghostsinthelab.org/general/2026/05/20/e6-96-b0-e7-94-a2-e5-93-81-e4-b8-8a-e7-b7-9a-ef-bc-9a-e6-96-b0-e4-bf-ae-e8-bc-95-e9-ac-86-e8-bc-b8-e5-85-a5-e6-b3-95.html" rel="alternate" type="text/html" title="新產品上線：新修輕鬆輸入法" /><published>2026-05-20T23:33:25+00:00</published><updated>2026-05-20T23:33:25+00:00</updated><id>https://ghostsinthelab.org/general/2026/05/20/%E6%96%B0%E7%94%A2%E5%93%81%E4%B8%8A%E7%B7%9A%EF%BC%9A%E6%96%B0%E4%BF%AE%E8%BC%95%E9%AC%86%E8%BC%B8%E5%85%A5%E6%B3%95</id><content type="html" xml:base="https://ghostsinthelab.org/general/2026/05/20/e6-96-b0-e7-94-a2-e5-93-81-e4-b8-8a-e7-b7-9a-ef-bc-9a-e6-96-b0-e4-bf-ae-e8-bc-95-e9-ac-86-e8-bc-b8-e5-85-a5-e6-b3-95.html"><![CDATA[<p><!-- wp:paragraph --></p>
<p><a href="https://github.com/hiroshiyui/RakuRakuIME">RakuRaku IME 新修輕鬆輸入法</a>，這也算是我離開這行前，想要還願的專案之一，最近已經上線，已上架至 <a href="https://f-droid.org/zh_Hant/packages/org.ghostsinthelab.app.rakurakuime/">F-Droid</a>。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>輕鬆輸入法原始發明人是高衡緒，後來編碼表開放原始碼之後，由蕭易玄維護「<a href="https://web.archive.org/web/20241105104906/https://eshensh.net/ez/index.html">輕鬆輸入法之家</a>」（連結自 Internet Archive Wayback Machine 備份）。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>其實我在 DOS + Windows 3.1 跨 Windows 95 那段期間，曾經把輕鬆輸入法當成主要的漢字輸入法。它的設計可以說是「基於倉頡輸入法取頭尾字根的<a href="https://zh.wikipedia.org/wiki/%E7%B0%A1%E6%98%93%E8%BC%B8%E5%85%A5%E6%B3%95">簡易輸入法</a>的再延伸」一樣是取頭尾兩碼，但是藉由增加更多字根鍵，讓記憶、背誦倉頡變化字根這件極為痛苦的事情，變得輕鬆、無痛許多。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":5015,"sizeSlug":"large","linkDestination":"media"} --></p>
<figure class="wp-block-image size-large"><a href="https://ghostsinthelab.org/wp-content/uploads/2026/05/02_ez_keyboard.png"><img src="https://ghostsinthelab.org/wp-content/uploads/2026/05/02_ez_keyboard-450x1024.png" alt="" class="wp-image-5015"/></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>當然簡易輸入法重碼字多的問題，輕鬆輸入法一樣也有，只是輕鬆輸入法用了詞庫的設計來補救，譬如我只需要輸入「,wrd 撇田口木」就可以直接輸入「貓咪」。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>如果善用詞庫，那麼輕鬆輸入法的輸入效率是比簡易輸入法高的，只是多用了這麼多按鍵，對於重複性勞損 (RSI) 就相對比較不利。所以我就決定讓「新修輕鬆輸入法」單純以觸控螢幕的軟鍵盤形式存在，不像樸實注音鍵盤另外對應了實體鍵盤。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>希望這個輸入法編輯器，對於熟悉漢字書寫、但不見得熟悉ㄅㄆㄇㄈ的人，提供一個方便輸入漢字的途徑。</p>
<p><!-- /wp:paragraph --></p>]]></content><author><name>{&quot;display_name&quot; =&gt; &quot;Hui-Hong YOU&quot;, &quot;login&quot; =&gt; &quot;hiroshiyui&quot;, &quot;email&quot; =&gt; &quot;hiroshiyui@gmail.com&quot;, &quot;url&quot; =&gt; &quot;https://ghostsinthelab.org&quot;}</name><email>hiroshiyui@gmail.com</email></author><category term="General" /><summary type="html"><![CDATA[RakuRaku IME 新修輕鬆輸入法，這也算是我離開這行前，想要還願的專案之一，最近已經上線，已上架至 F-Droid。 輕鬆輸入法原始發明人是高衡緒，後來編碼表開放原始碼之後，由蕭易玄維護「輕鬆輸入法之家」（連結自 Internet Archive Wayback Machine 備份）。 其實我在 DOS + Windows 3.1 跨 Windows 95 那段期間，曾經把輕鬆輸入法當成主要的漢字輸入法。它的設計可以說是「基於倉頡輸入法取頭尾字根的簡易輸入法的再延伸」一樣是取頭尾兩碼，但是藉由增加更多字根鍵，讓記憶、背誦倉頡變化字根這件極為痛苦的事情，變得輕鬆、無痛許多。 當然簡易輸入法重碼字多的問題，輕鬆輸入法一樣也有，只是輕鬆輸入法用了詞庫的設計來補救，譬如我只需要輸入「,wrd 撇田口木」就可以直接輸入「貓咪」。 如果善用詞庫，那麼輕鬆輸入法的輸入效率是比簡易輸入法高的，只是多用了這麼多按鍵，對於重複性勞損 (RSI) 就相對比較不利。所以我就決定讓「新修輕鬆輸入法」單純以觸控螢幕的軟鍵盤形式存在，不像樸實注音鍵盤另外對應了實體鍵盤。 希望這個輸入法編輯器，對於熟悉漢字書寫、但不見得熟悉ㄅㄆㄇㄈ的人，提供一個方便輸入漢字的途徑。]]></summary></entry><entry><title type="html">新產品上線：rrcad - 出一張嘴，讓 AI 幫我產生 CAD 模型程式碼</title><link href="https://ghostsinthelab.org/general/2026/03/24/e6-96-b0-e7-94-a2-e5-93-81-e4-b8-8a-e7-b7-9a-ef-bc-9arrcad-e5-87-ba-e4-b8-80-e5-bc-b5-e5-98-b4-ef-bc-8c-e8-ae-93-ai-e5-b9-ab-e6-88-91-e7-94-a2-e7-94-9f-cad-e6-a8-a1-e5-9e-8b-e7-a8-8b-e5-bc-8f.html" rel="alternate" type="text/html" title="新產品上線：rrcad - 出一張嘴，讓 AI 幫我產生 CAD 模型程式碼" /><published>2026-03-24T03:45:15+00:00</published><updated>2026-03-24T03:45:15+00:00</updated><id>https://ghostsinthelab.org/general/2026/03/24/%E6%96%B0%E7%94%A2%E5%93%81%E4%B8%8A%E7%B7%9A%EF%BC%9Arrcad-%E5%87%BA%E4%B8%80%E5%BC%B5%E5%98%B4%EF%BC%8C%E8%AE%93-ai-%E5%B9%AB%E6%88%91%E7%94%A2%E7%94%9F-cad-%E6%A8%A1%E5%9E%8B%E7%A8%8B%E5%BC%8F</id><content type="html" xml:base="https://ghostsinthelab.org/general/2026/03/24/e6-96-b0-e7-94-a2-e5-93-81-e4-b8-8a-e7-b7-9a-ef-bc-9arrcad-e5-87-ba-e4-b8-80-e5-bc-b5-e5-98-b4-ef-bc-8c-e8-ae-93-ai-e5-b9-ab-e6-88-91-e7-94-a2-e7-94-9f-cad-e6-a8-a1-e5-9e-8b-e7-a8-8b-e5-bc-8f.html"><![CDATA[<p><!-- wp:paragraph --></p>
<p><a href="https://rust-lang.org/">Rust</a> 加 <a href="https://mruby.org/">mRuby</a> 加 <a href="https://github.com/Open-Cascade-SAS/OCCT">OCCT</a> 加 <a href="https://threejs.org/">three.js</a> 加 <a href="https://modelcontextprotocol.io/">MCP</a>，就成了一套讓我以自然語言下達指示，就產出 CAD as Code 模型程式碼的工具：</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><a href="https://github.com/hiroshiyui/rrcad">rrcad</a> - A 3D CAD language expressed in Ruby. Write .rb scripts to describe solid geometry; the engine evaluates them through an embedded mRuby VM, builds exact BRep models with OpenCASCADE (OCCT), and exports to STEP, STL, or glTF.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":4980,"sizeSlug":"large","linkDestination":"media"} --></p>
<figure class="wp-block-image size-large"><a href="https://ghostsinthelab.org/wp-content/uploads/2026/03/Screenshot-2026-03-24-at-11-18-52-rrcad-preview.png"><img src="https://ghostsinthelab.org/wp-content/uploads/2026/03/Screenshot-2026-03-24-at-11-18-52-rrcad-preview-1024x509.png" alt="" class="wp-image-4980"/></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:image {"id":4981,"sizeSlug":"large","linkDestination":"media"} --></p>
<figure class="wp-block-image size-large"><a href="https://ghostsinthelab.org/wp-content/uploads/2026/03/スクリーンショット_20260324_112003.png"><img src="https://ghostsinthelab.org/wp-content/uploads/2026/03/スクリーンショット_20260324_112003-1024x584.png" alt="" class="wp-image-4981"/></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>這是我前幾天晚上，看著我那台 3D 列印機，感嘆：「你也變得跟我一樣沒用了啊&hellip;」隨後立即轉念：「不是它沒用，是我沒用！」、「如果我能幫它製作快速產出模型的工具，它就不至於這樣一天捕魚、一季曬網」而立即著手製作的產物。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>類似的產品已經有了，比如 <a href="https://openscad.org/">OpenSCAD</a> 與 <a href="https://github.com/CadQuery/cadquery">CadQuery</a>。但是一來我是眾所皆知的 Ruby 語言愛好者，我想做個「Ruby 版的同質產品」，能夠寫 Ruby 會讓我感覺更快樂；二來，我的身體狀態，確實就承受不了在電腦前高密度勞動，所以我想透過 MCP 可以讓我善用 LLM &amp; Agents 省下很多力氣。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>成效還不錯，現在我下達指令：「幫我產生一組適用於 Schmidt 規格筆芯的鋼珠筆組件，筆頭與筆身請設計用卡榫結構連接。」就看著 Claude Code 幫我生出一組我即可送印的模型。</p>
<p><!-- /wp:paragraph --></p>]]></content><author><name>{&quot;display_name&quot; =&gt; &quot;Hui-Hong YOU&quot;, &quot;login&quot; =&gt; &quot;hiroshiyui&quot;, &quot;email&quot; =&gt; &quot;hiroshiyui@gmail.com&quot;, &quot;url&quot; =&gt; &quot;https://ghostsinthelab.org&quot;}</name><email>hiroshiyui@gmail.com</email></author><category term="General" /><summary type="html"><![CDATA[Rust 加 mRuby 加 OCCT 加 three.js 加 MCP，就成了一套讓我以自然語言下達指示，就產出 CAD as Code 模型程式碼的工具： rrcad - A 3D CAD language expressed in Ruby. Write .rb scripts to describe solid geometry; the engine evaluates them through an embedded mRuby VM, builds exact BRep models with OpenCASCADE (OCCT), and exports to STEP, STL, or glTF. 這是我前幾天晚上，看著我那台 3D 列印機，感嘆：「你也變得跟我一樣沒用了啊&hellip;」隨後立即轉念：「不是它沒用，是我沒用！」、「如果我能幫它製作快速產出模型的工具，它就不至於這樣一天捕魚、一季曬網」而立即著手製作的產物。 類似的產品已經有了，比如 OpenSCAD 與 CadQuery。但是一來我是眾所皆知的 Ruby 語言愛好者，我想做個「Ruby 版的同質產品」，能夠寫 Ruby 會讓我感覺更快樂；二來，我的身體狀態，確實就承受不了在電腦前高密度勞動，所以我想透過 MCP 可以讓我善用 LLM &amp; Agents 省下很多力氣。 成效還不錯，現在我下達指令：「幫我產生一組適用於 Schmidt 規格筆芯的鋼珠筆組件，筆頭與筆身請設計用卡榫結構連接。」就看著 Claude Code 幫我生出一組我即可送印的模型。]]></summary></entry><entry><title type="html">新產品上線：Baudrate.tw</title><link href="https://ghostsinthelab.org/general/2026/03/05/e6-96-b0-e7-94-a2-e5-93-81-e4-b8-8a-e7-b7-9a-ef-bc-9abaudrate-tw.html" rel="alternate" type="text/html" title="新產品上線：Baudrate.tw" /><published>2026-03-05T06:26:43+00:00</published><updated>2026-03-05T06:26:43+00:00</updated><id>https://ghostsinthelab.org/general/2026/03/05/%E6%96%B0%E7%94%A2%E5%93%81%E4%B8%8A%E7%B7%9A%EF%BC%9Abaudrate-tw</id><content type="html" xml:base="https://ghostsinthelab.org/general/2026/03/05/e6-96-b0-e7-94-a2-e5-93-81-e4-b8-8a-e7-b7-9a-ef-bc-9abaudrate-tw.html"><![CDATA[<p><!-- wp:paragraph --></p>
<p><a href="https://baudrate.tw/">Baudrate</a>，支援 ActivityPub 協議的新世代 BBS，今日正式上線，<a href="https://github.com/hiroshiyui/baudrate">專案原始碼</a>亦公開釋出。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>雖然再過幾天，我就要<a href="https://miyabi-hiroshi.com/blog/closure-announcement/">把自己的不賺錢的一人公司收掉了</a>，不過，就這樣吧。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>至少，在 Internet、在 Web 上面，我總算有了自己的一個平台。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>以下是複製、貼上宣傳文案：</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><a href="https://github.com/hiroshiyui/baudrate">Baudrate</a> 是一套以 <a href="https://elixir-lang.org/">Elixir</a> 與 <a href="https://www.phoenixframework.org/">Phoenix</a> 框架打造的開源電子佈告欄系統（BBS），原生支援 <a href="https://www.w3.org/TR/activitypub/">ActivityPub</a> 聯邦協議，能與 Mastodon、Lemmy 等 Fediverse 實例互通互聯。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong>即時互動體驗：</strong>Baudrate 採用 Phoenix LiveView 技術，提供即時更新的使用者介面，無需手動重新整理頁面即可獲取最新內容。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong>靈活的看板架構：</strong>支援階層式看板結構，包含子看板導覽、麵包屑路徑指引，以及每個看板獨立的角色權限控制（瀏覽權限與發文權限）。管理員可指派看板版主，版主擁有置頂、鎖定討論串及刪除文章與留言的權力。文章還能跨看板發佈，作者可自由控制轉發選項。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong>完整的聯邦功能：</strong>透過 ActivityPub 協議，Baudrate 支援 WebFinger 與 NodeInfo 探索、接收追蹤、留言、按讚、轉發等互動，並能向遠端實例發送文章與活動。系統內建基於資料庫的投遞佇列，具備指數退避重試機制、HTTP 簽章驗證、HTML 消毒處理及 SSRF 安全防護。管理員可設定網域封鎖/允許清單，也能全站或個別看板切換聯邦功能。同時相容 Mastodon 與 Lemmy 的特定格式。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong>嚴密的安全防護：</strong>Baudrate 實作 TOTP 雙因素認證（管理員與版主強制啟用）、加密存儲的金鑰與 TOTP 密鑰、HSTS 與 CSP 安全標頭、簽章加密 Cookie，以及登入、註冊、聯邦端點等多層速率限制。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong>彈性的使用者管理：</strong>支援開放註冊、需審核、僅限邀請三種註冊模式。管理員後台提供站台設定、註冊模式切換、待審核用戶管理、聯邦儀表板、檢舉佇列、稽核日誌及邀請碼管理等完整功能。使用者可上傳頭像（自動轉換為 WebP 格式），並擁有公開個人檔案頁面。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong>國際化支援：</strong>透過 Gettext 實現多語系介面，支援自動偵測瀏覽器語言偏好。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong>訪客友善：</strong>設定為訪客可見的看板與文章無需登入即可瀏覽，讓 Baudrate 成為真正的公共資訊平台。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Baudrate 以 AGPL-3.0 授權釋出，歡迎社群參與貢獻。</p>
<p><!-- /wp:paragraph --></p>]]></content><author><name>{&quot;display_name&quot; =&gt; &quot;Hui-Hong YOU&quot;, &quot;login&quot; =&gt; &quot;hiroshiyui&quot;, &quot;email&quot; =&gt; &quot;hiroshiyui@gmail.com&quot;, &quot;url&quot; =&gt; &quot;https://ghostsinthelab.org&quot;}</name><email>hiroshiyui@gmail.com</email></author><category term="General" /><summary type="html"><![CDATA[Baudrate，支援 ActivityPub 協議的新世代 BBS，今日正式上線，專案原始碼亦公開釋出。 雖然再過幾天，我就要把自己的不賺錢的一人公司收掉了，不過，就這樣吧。 至少，在 Internet、在 Web 上面，我總算有了自己的一個平台。 以下是複製、貼上宣傳文案： Baudrate 是一套以 Elixir 與 Phoenix 框架打造的開源電子佈告欄系統（BBS），原生支援 ActivityPub 聯邦協議，能與 Mastodon、Lemmy 等 Fediverse 實例互通互聯。 即時互動體驗：Baudrate 採用 Phoenix LiveView 技術，提供即時更新的使用者介面，無需手動重新整理頁面即可獲取最新內容。 靈活的看板架構：支援階層式看板結構，包含子看板導覽、麵包屑路徑指引，以及每個看板獨立的角色權限控制（瀏覽權限與發文權限）。管理員可指派看板版主，版主擁有置頂、鎖定討論串及刪除文章與留言的權力。文章還能跨看板發佈，作者可自由控制轉發選項。 完整的聯邦功能：透過 ActivityPub 協議，Baudrate 支援 WebFinger 與 NodeInfo 探索、接收追蹤、留言、按讚、轉發等互動，並能向遠端實例發送文章與活動。系統內建基於資料庫的投遞佇列，具備指數退避重試機制、HTTP 簽章驗證、HTML 消毒處理及 SSRF 安全防護。管理員可設定網域封鎖/允許清單，也能全站或個別看板切換聯邦功能。同時相容 Mastodon 與 Lemmy 的特定格式。 嚴密的安全防護：Baudrate 實作 TOTP 雙因素認證（管理員與版主強制啟用）、加密存儲的金鑰與 TOTP 密鑰、HSTS 與 CSP 安全標頭、簽章加密 Cookie，以及登入、註冊、聯邦端點等多層速率限制。 彈性的使用者管理：支援開放註冊、需審核、僅限邀請三種註冊模式。管理員後台提供站台設定、註冊模式切換、待審核用戶管理、聯邦儀表板、檢舉佇列、稽核日誌及邀請碼管理等完整功能。使用者可上傳頭像（自動轉換為 WebP 格式），並擁有公開個人檔案頁面。 國際化支援：透過 Gettext 實現多語系介面，支援自動偵測瀏覽器語言偏好。 訪客友善：設定為訪客可見的看板與文章無需登入即可瀏覽，讓 Baudrate 成為真正的公共資訊平台。 Baudrate 以 AGPL-3.0 授權釋出，歡迎社群參與貢獻。]]></summary></entry><entry><title type="html">經過 12 年多，EPGrab 再度更新</title><link href="https://ghostsinthelab.org/general/2026/02/12/e7-b6-93-e9-81-8e-12-e5-b9-b4-e5-a4-9a-ef-bc-8cepgrab-e5-86-8d-e5-ba-a6-e6-9b-b4-e6-96-b0.html" rel="alternate" type="text/html" title="經過 12 年多，EPGrab 再度更新" /><published>2026-02-12T13:16:25+00:00</published><updated>2026-02-12T13:16:25+00:00</updated><id>https://ghostsinthelab.org/general/2026/02/12/%E7%B6%93%E9%81%8E-12-%E5%B9%B4%E5%A4%9A%EF%BC%8Cepgrab-%E5%86%8D%E5%BA%A6%E6%9B%B4%E6%96%B0</id><content type="html" xml:base="https://ghostsinthelab.org/general/2026/02/12/e7-b6-93-e9-81-8e-12-e5-b9-b4-e5-a4-9a-ef-bc-8cepgrab-e5-86-8d-e5-ba-a6-e6-9b-b4-e6-96-b0.html"><![CDATA[<p><!-- wp:paragraph --></p>
<p>前情提要：〈<a href="https://ghostsinthelab.org/2013/07/03/epgrab%ef%bc%8c%e6%8a%8a-dvb-%e6%95%b8%e4%bd%8d%e9%9b%bb%e8%a6%96%e7%9a%84-epg-%e9%9b%bb%e5%ad%90%e7%af%80%e7%9b%ae%e8%a1%a8%e8%bc%b8%e5%87%ba%e6%88%90-xmltv-%e6%a0%bc%e5%bc%8f/">EPGrab，把 DVB 數位電視的 EPG 電子節目表輸出成 XMLTV 格式</a>〉</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>因為經濟上的困境，自己開個小公司，做什麼都不成，最近還蠻常陷入重鬱狀態的。為了緩解，就把一些過去累積的，想做而未做、做到一半只求驗證概念可行的專案與想法，拿出來整理。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><a href="https://github.com/hiroshiyui/epgrab">EPGrab</a> 是其中之一。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>這次改版，以 Rust 重寫，借助 Rust 語言本身的語彙與表現力，把整套程式翻新過：</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item --></p>
<li>內建 <a href="https://www.linuxtv.org/wiki/index.php/Zap">Zap 格式的頻道設定檔</a>掃描機能（<code>`scan-channels`</code>）。能夠獲取其他類似程式所無法正常處理的頻道名稱文字編碼 (character encoding) 的 channels.conf。</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>修掉了控制字元沒妥善濾掉的老問題。</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>內建一個微型的 HTTP server，可以把擷取到的 EPG 資料檔直接上網，並用 XSLT 轉換為 HTML，便利直接瀏覽。順道一提，行文當下，<a href="https://developer.chrome.com/docs/web-platform/deprecating-xslt">Google Chrome 正策劃要因噎廢食地移除 XSLT 支援</a>，看了只想說：「這就是市場一家獨大後的樣子，大家高興了吧？」</li>
<p><!-- /wp:list-item --></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:image {"id":4875,"sizeSlug":"large","linkDestination":"media"} --></p>
<figure class="wp-block-image size-large"><a href="https://ghostsinthelab.org/wp-content/uploads/2026/02/スクリーンショット_20260212_103252.png"><img src="https://ghostsinthelab.org/wp-content/uploads/2026/02/スクリーンショット_20260212_103252-1024x555.png" alt="" class="wp-image-4875"/></a><br />
<figcaption class="wp-element-caption">我是一份看起來像 HTML 的 XML 文件呦！是 XSLT，我用了 XSLT。</figcaption>
</figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>雖然在 12 年多之前，認識的人就已經很少人在收視無線數位電視了，然而這段時間以來，無線數位電視網也變了不少，除了廣為眾人所知的中視被旺旺買了，台視被非凡傳播買了這些已知的民營化；公視多了台語台、兒少台「小公視」；原住民族電視台在無線數位電視播送；然後多了兩台國會頻道，還有主要以英語製播節目的 TaiwanPlus 頻道。整體來說，有量變，有質變，算是很兼顧多元聲音的組成。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>與此同時，有線電視隨著頻道商經營不易，一個個搞消失，轉向自有的網路串流服務，也變得愈來愈難找到好節目收看了。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>身為一個電視兒童、電視少年、電視青年、電視阿伯，小時候的我，讀世新時的我，從沒想過電視這種媒體會變得 doesn't matter。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>那為什麼還要在意這個程式專案呢？因為我還是相信，無線數位電視裡仍有不少好節目值得「更早」被發現，而不是到了每年金鐘獎，看了入圍與得獎名單，才知道原來有一個這麼好的節目。且因為傳媒生態的變化，廣告預算下給電視的比例，呈現一路在變少的趨勢，進而造成節目製作預算與成本回收狀況愈來愈窘迫，有些節目就算得了獎，也只此一季，難以為繼。於是故，我覺得好的節目在首播當下，愈多人收看，總的來說，是件好事。</p>
<p><!-- /wp:paragraph --></p>]]></content><author><name>{&quot;display_name&quot; =&gt; &quot;Hui-Hong YOU&quot;, &quot;login&quot; =&gt; &quot;hiroshiyui&quot;, &quot;email&quot; =&gt; &quot;hiroshiyui@gmail.com&quot;, &quot;url&quot; =&gt; &quot;https://ghostsinthelab.org&quot;}</name><email>hiroshiyui@gmail.com</email></author><category term="General" /><summary type="html"><![CDATA[前情提要：〈EPGrab，把 DVB 數位電視的 EPG 電子節目表輸出成 XMLTV 格式〉 因為經濟上的困境，自己開個小公司，做什麼都不成，最近還蠻常陷入重鬱狀態的。為了緩解，就把一些過去累積的，想做而未做、做到一半只求驗證概念可行的專案與想法，拿出來整理。 EPGrab 是其中之一。 這次改版，以 Rust 重寫，借助 Rust 語言本身的語彙與表現力，把整套程式翻新過： 內建 Zap 格式的頻道設定檔掃描機能（`scan-channels`）。能夠獲取其他類似程式所無法正常處理的頻道名稱文字編碼 (character encoding) 的 channels.conf。 修掉了控制字元沒妥善濾掉的老問題。 內建一個微型的 HTTP server，可以把擷取到的 EPG 資料檔直接上網，並用 XSLT 轉換為 HTML，便利直接瀏覽。順道一提，行文當下，Google Chrome 正策劃要因噎廢食地移除 XSLT 支援，看了只想說：「這就是市場一家獨大後的樣子，大家高興了吧？」 我是一份看起來像 HTML 的 XML 文件呦！是 XSLT，我用了 XSLT。 雖然在 12 年多之前，認識的人就已經很少人在收視無線數位電視了，然而這段時間以來，無線數位電視網也變了不少，除了廣為眾人所知的中視被旺旺買了，台視被非凡傳播買了這些已知的民營化；公視多了台語台、兒少台「小公視」；原住民族電視台在無線數位電視播送；然後多了兩台國會頻道，還有主要以英語製播節目的 TaiwanPlus 頻道。整體來說，有量變，有質變，算是很兼顧多元聲音的組成。 與此同時，有線電視隨著頻道商經營不易，一個個搞消失，轉向自有的網路串流服務，也變得愈來愈難找到好節目收看了。 身為一個電視兒童、電視少年、電視青年、電視阿伯，小時候的我，讀世新時的我，從沒想過電視這種媒體會變得 doesn't matter。 那為什麼還要在意這個程式專案呢？因為我還是相信，無線數位電視裡仍有不少好節目值得「更早」被發現，而不是到了每年金鐘獎，看了入圍與得獎名單，才知道原來有一個這麼好的節目。且因為傳媒生態的變化，廣告預算下給電視的比例，呈現一路在變少的趨勢，進而造成節目製作預算與成本回收狀況愈來愈窘迫，有些節目就算得了獎，也只此一季，難以為繼。於是故，我覺得好的節目在首播當下，愈多人收看，總的來說，是件好事。]]></summary></entry><entry><title type="html">樸實注音鍵盤 3.6.9 版釋出</title><link href="https://ghostsinthelab.org/general/2025/12/30/e6-a8-b8-e5-af-a6-e6-b3-a8-e9-9f-b3-e9-8d-b5-e7-9b-a4-3-6-9-e7-89-88-e9-87-8b-e5-87-ba.html" rel="alternate" type="text/html" title="樸實注音鍵盤 3.6.9 版釋出" /><published>2025-12-30T02:56:30+00:00</published><updated>2025-12-30T02:56:30+00:00</updated><id>https://ghostsinthelab.org/general/2025/12/30/%E6%A8%B8%E5%AF%A6%E6%B3%A8%E9%9F%B3%E9%8D%B5%E7%9B%A4-3-6-9-%E7%89%88%E9%87%8B%E5%87%BA</id><content type="html" xml:base="https://ghostsinthelab.org/general/2025/12/30/e6-a8-b8-e5-af-a6-e6-b3-a8-e9-9f-b3-e9-8d-b5-e7-9b-a4-3-6-9-e7-89-88-e9-87-8b-e5-87-ba.html"><![CDATA[<p><!-- wp:paragraph --></p>
<p>自從 <a href="https://ghostsinthelab.org/2025/07/18/%e6%a8%b8%e5%af%a6%e6%b3%a8%e9%9f%b3%e9%8d%b5%e7%9b%a4-3-4-5-%e7%89%88%e9%87%8b%e5%87%ba/">3.4.5</a> 版後，改了一些地方：</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item --></p>
<li>讓 <a href="https://rustup.rs/">rustup</a> 去讀 <code>rust-toolchain.toml</code> 自動安裝所需的 Rust toolchains。</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>精簡模式（使用硬體鍵盤模式）會顯示目前的全形、半形狀態。</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>更改切換至其他輸入法編輯器的組合鍵，從長按 Alt 改為 Alt+I。</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>把使用硬體鍵盤模式的選項整個幹掉，改成自動偵測。</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>從 Google Play 下架。</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>修正〈<a href="https://vocus.cc/article/68b46f2afd89780001b016a1">deGoogle - 替換鍵盤</a>〉一文作者指出的逗號鍵功能失效問題。</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>把「Dvorak 許氏」軟鍵盤整個拔掉，只保留支援硬體鍵盤，連帶將新酷音函式庫支援的各式鍵盤，都順便實作到硬體鍵盤支援列表裡。軟鍵盤現在只支援傳統大千、(QWERTY) 許氏、倚天 26 鍵、倚天 41 鍵。</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>支援 Unihertz Titan 2 這款內建硬體鍵盤，但是又不是那麼完整的排列的機種。讓 QWERTYUIOP 列入候選字詞選擇鍵組，並讓音量增減鍵用於切換候選字詞前後頁。</li>
<p><!-- /wp:list-item --></ul>
<p><!-- /wp:list --></p>]]></content><author><name>{&quot;display_name&quot; =&gt; &quot;Hui-Hong YOU&quot;, &quot;login&quot; =&gt; &quot;hiroshiyui&quot;, &quot;email&quot; =&gt; &quot;hiroshiyui@gmail.com&quot;, &quot;url&quot; =&gt; &quot;https://ghostsinthelab.org&quot;}</name><email>hiroshiyui@gmail.com</email></author><category term="General" /><category term="樸實注音鍵盤" /><category term="輸入法" /><summary type="html"><![CDATA[自從 3.4.5 版後，改了一些地方： 讓 rustup 去讀 rust-toolchain.toml 自動安裝所需的 Rust toolchains。 精簡模式（使用硬體鍵盤模式）會顯示目前的全形、半形狀態。 更改切換至其他輸入法編輯器的組合鍵，從長按 Alt 改為 Alt+I。 把使用硬體鍵盤模式的選項整個幹掉，改成自動偵測。 從 Google Play 下架。 修正〈deGoogle - 替換鍵盤〉一文作者指出的逗號鍵功能失效問題。 把「Dvorak 許氏」軟鍵盤整個拔掉，只保留支援硬體鍵盤，連帶將新酷音函式庫支援的各式鍵盤，都順便實作到硬體鍵盤支援列表裡。軟鍵盤現在只支援傳統大千、(QWERTY) 許氏、倚天 26 鍵、倚天 41 鍵。 支援 Unihertz Titan 2 這款內建硬體鍵盤，但是又不是那麼完整的排列的機種。讓 QWERTYUIOP 列入候選字詞選擇鍵組，並讓音量增減鍵用於切換候選字詞前後頁。]]></summary></entry><entry><title type="html">解決 rtkit-daemon 一直吐 “Supervising m threads of n processes of o users.” 的 logs</title><link href="https://ghostsinthelab.org/%E9%9B%BB%E8%85%A6%E6%87%89%E7%94%A8%E5%AF%A6%E5%8B%99/2025/12/30/e8-a7-a3-e6-b1-ba-rtkit-daemon-e4-b8-80-e7-9b-b4-e5-90-90-supervising-m-threads-of-n-processes-of-o-users-e7-9a-84-logs.html" rel="alternate" type="text/html" title="解決 rtkit-daemon 一直吐 “Supervising m threads of n processes of o users.” 的 logs" /><published>2025-12-30T02:30:39+00:00</published><updated>2025-12-30T02:30:39+00:00</updated><id>https://ghostsinthelab.org/%E9%9B%BB%E8%85%A6%E6%87%89%E7%94%A8%E5%AF%A6%E5%8B%99/2025/12/30/%E8%A7%A3%E6%B1%BA-rtkit-daemon-%E4%B8%80%E7%9B%B4%E5%90%90-supervising-m-threads-of-n-processes-of-o-users-%E7%9A%84-logs</id><content type="html" xml:base="https://ghostsinthelab.org/%E9%9B%BB%E8%85%A6%E6%87%89%E7%94%A8%E5%AF%A6%E5%8B%99/2025/12/30/e8-a7-a3-e6-b1-ba-rtkit-daemon-e4-b8-80-e7-9b-b4-e5-90-90-supervising-m-threads-of-n-processes-of-o-users-e7-9a-84-logs.html"><![CDATA[<p><!-- wp:paragraph --></p>
<p>剛剛把 <code>journalctl -f</code> 掛著觀察系統有沒有什麼地方需要維護的，發現 <code>rtkit-daemon</code> 一直吐 <em>Supervising m threads of n processes of o users.</em> 的 logs 洗版面，有點惱人，找了一下解法：</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list {"ordered":true} --></p>
<ol class="wp-block-list"><!-- wp:list-item --></p>
<li><code>sudo systemctl edit rtkit-daemon.service</code></li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>覆寫 <code>[Service]</code> 段，新增一條設定 <code>LogLevelMax=2</code>。記得要寫在 <code>### Edits below this comment will be discarded</code> 這行的上方，不然是不會存入變更的，我犯了這個蠢。</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><code>sudo systemctl daemon-reload</code></li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><code>sudo systemctl restart rtkit-daemon.service</code></li>
<p><!-- /wp:list-item --></ol>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p>這樣 log level 小於 2 (critical) 的就不會輸出。</p>
<p><!-- /wp:paragraph --></p>]]></content><author><name>{&quot;display_name&quot; =&gt; &quot;Hui-Hong YOU&quot;, &quot;login&quot; =&gt; &quot;hiroshiyui&quot;, &quot;email&quot; =&gt; &quot;hiroshiyui@gmail.com&quot;, &quot;url&quot; =&gt; &quot;https://ghostsinthelab.org&quot;}</name><email>hiroshiyui@gmail.com</email></author><category term="電腦應用實務" /><summary type="html"><![CDATA[剛剛把 journalctl -f 掛著觀察系統有沒有什麼地方需要維護的，發現 rtkit-daemon 一直吐 Supervising m threads of n processes of o users. 的 logs 洗版面，有點惱人，找了一下解法： sudo systemctl edit rtkit-daemon.service 覆寫 [Service] 段，新增一條設定 LogLevelMax=2。記得要寫在 ### Edits below this comment will be discarded 這行的上方，不然是不會存入變更的，我犯了這個蠢。 sudo systemctl daemon-reload sudo systemctl restart rtkit-daemon.service 這樣 log level 小於 2 (critical) 的就不會輸出。]]></summary></entry><entry><title type="html">接上 Sony Xperia Z3 Compact (D5833) 的 Serial Console</title><link href="https://ghostsinthelab.org/general/2025/12/05/e6-8e-a5-e4-b8-8a-sony-xperia-z3-compact-d5833-e7-9a-84-serial-console.html" rel="alternate" type="text/html" title="接上 Sony Xperia Z3 Compact (D5833) 的 Serial Console" /><published>2025-12-05T14:50:53+00:00</published><updated>2025-12-05T14:50:53+00:00</updated><id>https://ghostsinthelab.org/general/2025/12/05/%E6%8E%A5%E4%B8%8A-sony-xperia-z3-compact-d5833-%E7%9A%84-serial-console</id><content type="html" xml:base="https://ghostsinthelab.org/general/2025/12/05/e6-8e-a5-e4-b8-8a-sony-xperia-z3-compact-d5833-e7-9a-84-serial-console.html"><![CDATA[<p><!-- wp:image {"id":4839,"sizeSlug":"large","linkDestination":"media"} --></p>
<figure class="wp-block-image size-large"><a href="https://ghostsinthelab.org/wp-content/uploads/2025/12/Collage_2025-12-05_22_20_39-scaled.jpg"><img src="https://ghostsinthelab.org/wp-content/uploads/2025/12/Collage_2025-12-05_22_20_39-819x1024.jpg" alt="" class="wp-image-4839"/></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>之前試著將這台 Xperia Z3 Compact (D5833) 刷寫 <a href="https://wiki.postmarketos.org/wiki/Sony_Xperia_Z3C_(sony-aries)">postmarketOS</a>，刷機過程雖然順利，然而當 postmarketOS 開機畫面閃過之後，便是無消無息的黑色螢幕。我大概可以猜到這是很典型的卡在 initrd 或 kernel 某個地方，但是確切是什麼地方，還是得想辦法查得，不然我原本想要有一台 postmarketOS 的實機以方便開發上面的應用，就無法如願了。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>還好某段時期的 Sony Xperia 對開發者很友善，該提供的技術文件、bootloader 解鎖服務、UART 接點都公開給開發者利用（撰文當下的 2025 年，Sony Xperia 似乎已經不再這麼積極推動這項 Open Devices 專案了），我的 Xperia Z3 Compact 就在這段時期的產品線裡，可以輕易獲知如何透過 UART 接上 serial console，取得非常早期的開機時資料。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":4842,"sizeSlug":"large","linkDestination":"media"} --></p>
<figure class="wp-block-image size-large"><a href="https://ghostsinthelab.org/wp-content/uploads/2025/12/Open-source_210223_Xperia-Z3-Compact-1-1.png"><img src="https://ghostsinthelab.org/wp-content/uploads/2025/12/Open-source_210223_Xperia-Z3-Compact-1-1-685x1024.png" alt="" class="wp-image-4842"/></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:image {"id":4843,"sizeSlug":"large","linkDestination":"media"} --></p>
<figure class="wp-block-image size-large"><a href="https://ghostsinthelab.org/wp-content/uploads/2025/12/Debug_connector_z3_compact_23_03_2023-1.png"><img src="https://ghostsinthelab.org/wp-content/uploads/2025/12/Debug_connector_z3_compact_23_03_2023-1-687x1024.png" alt="" class="wp-image-4843"/></a><br />
<figcaption class="wp-element-caption">Xperia Z3 Compact 的 UART 接點，取自 https://developer.sony.com/open-source/aosp-on-xperia-open-devices/guides/access-uart-ports</figcaption>
</figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>GND 是還好，但是 Rx 與 Tx 的焊點真的很小，不使用 OK 線的話很難焊上去。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>此外，板子提供的 UART 邏輯電源電壓是 1.8V，所以還要找支援 1.8V 的 USB-UART 轉接介面。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>現在已經確定能夠在原裝的 Android 系統、從 serial console 獲取非常早期（從 S1 BOOT 開始）的開機時資料，接著要再度刷成 postmarketOS 看看當初是卡死在什麼地方。</p>
<p><!-- /wp:paragraph --></p>]]></content><author><name>{&quot;display_name&quot; =&gt; &quot;Hui-Hong YOU&quot;, &quot;login&quot; =&gt; &quot;hiroshiyui&quot;, &quot;email&quot; =&gt; &quot;hiroshiyui@gmail.com&quot;, &quot;url&quot; =&gt; &quot;https://ghostsinthelab.org&quot;}</name><email>hiroshiyui@gmail.com</email></author><category term="General" /><summary type="html"><![CDATA[之前試著將這台 Xperia Z3 Compact (D5833) 刷寫 postmarketOS，刷機過程雖然順利，然而當 postmarketOS 開機畫面閃過之後，便是無消無息的黑色螢幕。我大概可以猜到這是很典型的卡在 initrd 或 kernel 某個地方，但是確切是什麼地方，還是得想辦法查得，不然我原本想要有一台 postmarketOS 的實機以方便開發上面的應用，就無法如願了。 還好某段時期的 Sony Xperia 對開發者很友善，該提供的技術文件、bootloader 解鎖服務、UART 接點都公開給開發者利用（撰文當下的 2025 年，Sony Xperia 似乎已經不再這麼積極推動這項 Open Devices 專案了），我的 Xperia Z3 Compact 就在這段時期的產品線裡，可以輕易獲知如何透過 UART 接上 serial console，取得非常早期的開機時資料。 Xperia Z3 Compact 的 UART 接點，取自 https://developer.sony.com/open-source/aosp-on-xperia-open-devices/guides/access-uart-ports GND 是還好，但是 Rx 與 Tx 的焊點真的很小，不使用 OK 線的話很難焊上去。 此外，板子提供的 UART 邏輯電源電壓是 1.8V，所以還要找支援 1.8V 的 USB-UART 轉接介面。 現在已經確定能夠在原裝的 Android 系統、從 serial console 獲取非常早期（從 S1 BOOT 開始）的開機時資料，接著要再度刷成 postmarketOS 看看當初是卡死在什麼地方。]]></summary></entry><entry><title type="html">裝了一張 RTX3060 GPU</title><link href="https://ghostsinthelab.org/general/2025/11/17/e8-a3-9d-e4-ba-86-e4-b8-80-e5-bc-b5-rtx3060-gpu.html" rel="alternate" type="text/html" title="裝了一張 RTX3060 GPU" /><published>2025-11-17T07:39:44+00:00</published><updated>2025-11-17T07:39:44+00:00</updated><id>https://ghostsinthelab.org/general/2025/11/17/%E8%A3%9D%E4%BA%86%E4%B8%80%E5%BC%B5-rtx3060-gpu</id><content type="html" xml:base="https://ghostsinthelab.org/general/2025/11/17/e8-a3-9d-e4-ba-86-e4-b8-80-e5-bc-b5-rtx3060-gpu.html"><![CDATA[<p><!-- wp:paragraph --></p>
<p>雖然已經是隔了兩代的舊產品，但是我因此勉強能負擔（除了 GPU 我還得連帶買一顆足瓦的 PSU）；且 12GB VRAM 雖然比上不足，比下仍多了些餘裕。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>原本我覺得租用 Google Colab 比較省事，但是以我的資料量，Google Colab 不但 GPU/TPU 額度消耗的快，那種在遠距操作下不夠順暢的體驗也不甚好，於是我還是想要回到自己的機器上設置一套機器學習的環境。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>硬體裝好後，開機卻沒辦法進 display manager（我使用 SDDM），原本以為 nouveau 應該是至少基本能用。無奈只好重開機進 single user mode (aka recovery mode)，然後參考 <a href="https://wiki.debian.org/NvidiaGraphicsDrivers">Debian Wiki</a> 安裝 Nvidia 釋出、但由 Debian 打包 dpkg 的驅動程式。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>裝好之後 SDDM 終於能正常顯示了，然而進 KDE Plasma Wayland session 會有嚴重的遲頓現象，唉，只好再退一步，捨 Wayland 回去使用 X11。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>接著又發現 TensorFlow 與 PyTorch 找不到 GPU/CUDA 裝置，原本以為是 CUDA 版本過舊，但是折騰了一個晚上後，才發現是 nvidia_uvm kernel module 沒有載入的關係。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>執行 nvidia-smi 查看 NVIDIA System Management Interface&nbsp;資料後，會發現 nvidia_uvm 被載入了，TensorFlow 與 PyTorch 也因此能找到 GPU/CUDA 裝置。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>但是每次都要手動執行 nvidia-smi 也太惱人，於是新增 /etc/modules-load.d/nvidia-uvm.conf 把 nvidia_uvm 列入，讓它能自動於開機時載入。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong>2025.11.23 更新：</strong>因為執行 apt upgrade 時更新了 kermel 版本 6.17.8+deb14-amd64，結果 linux-headers-amd64 與 nvidia-open-kernel-dkms 不知怎麼地爛了，DKMS 無法編出給這個版本的 kernel modules，乾脆改用 NVIDIA installer 安裝驅動程式 580.105.08。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>]]></content><author><name>{&quot;display_name&quot; =&gt; &quot;Hui-Hong YOU&quot;, &quot;login&quot; =&gt; &quot;hiroshiyui&quot;, &quot;email&quot; =&gt; &quot;hiroshiyui@gmail.com&quot;, &quot;url&quot; =&gt; &quot;https://ghostsinthelab.org&quot;}</name><email>hiroshiyui@gmail.com</email></author><category term="General" /><summary type="html"><![CDATA[雖然已經是隔了兩代的舊產品，但是我因此勉強能負擔（除了 GPU 我還得連帶買一顆足瓦的 PSU）；且 12GB VRAM 雖然比上不足，比下仍多了些餘裕。 原本我覺得租用 Google Colab 比較省事，但是以我的資料量，Google Colab 不但 GPU/TPU 額度消耗的快，那種在遠距操作下不夠順暢的體驗也不甚好，於是我還是想要回到自己的機器上設置一套機器學習的環境。 硬體裝好後，開機卻沒辦法進 display manager（我使用 SDDM），原本以為 nouveau 應該是至少基本能用。無奈只好重開機進 single user mode (aka recovery mode)，然後參考 Debian Wiki 安裝 Nvidia 釋出、但由 Debian 打包 dpkg 的驅動程式。 裝好之後 SDDM 終於能正常顯示了，然而進 KDE Plasma Wayland session 會有嚴重的遲頓現象，唉，只好再退一步，捨 Wayland 回去使用 X11。 接著又發現 TensorFlow 與 PyTorch 找不到 GPU/CUDA 裝置，原本以為是 CUDA 版本過舊，但是折騰了一個晚上後，才發現是 nvidia_uvm kernel module 沒有載入的關係。 執行 nvidia-smi 查看 NVIDIA System Management Interface&nbsp;資料後，會發現 nvidia_uvm 被載入了，TensorFlow 與 PyTorch 也因此能找到 GPU/CUDA 裝置。 但是每次都要手動執行 nvidia-smi 也太惱人，於是新增 /etc/modules-load.d/nvidia-uvm.conf 把 nvidia_uvm 列入，讓它能自動於開機時載入。 2025.11.23 更新：因為執行 apt upgrade 時更新了 kermel 版本 6.17.8+deb14-amd64，結果 linux-headers-amd64 與 nvidia-open-kernel-dkms 不知怎麼地爛了，DKMS 無法編出給這個版本的 kernel modules，乾脆改用 NVIDIA installer 安裝驅動程式 580.105.08。]]></summary></entry><entry><title type="html">說說我對 Google 此次處理 Android App 要求「全境實名驗證開發者身分」政策的不滿</title><link href="https://ghostsinthelab.org/general/2025/11/11/e8-aa-aa-e8-aa-aa-e6-88-91-e5-b0-8d-google-e6-ad-a4-e6-ac-a1-e8-99-95-e7-90-86-android-app-e8-a6-81-e6-b1-82-e3-80-8c-e5-85-a8-e5-a2-83-e5-af-a6-e5-90-8d-e9-a9-97-e8-ad-89-e9-96-8b-e7-99-bc.html" rel="alternate" type="text/html" title="說說我對 Google 此次處理 Android App 要求「全境實名驗證開發者身分」政策的不滿" /><published>2025-11-11T00:17:04+00:00</published><updated>2025-11-11T00:17:04+00:00</updated><id>https://ghostsinthelab.org/general/2025/11/11/%E8%AA%AA%E8%AA%AA%E6%88%91%E5%B0%8D-google-%E6%AD%A4%E6%AC%A1%E8%99%95%E7%90%86-android-app-%E8%A6%81%E6%B1%82%E3%80%8C%E5%85%A8%E5%A2%83%E5%AF%A6%E5%90%8D%E9%A9%97%E8%AD%89%E9%96%8B%E7%99%BC</id><content type="html" xml:base="https://ghostsinthelab.org/general/2025/11/11/e8-aa-aa-e8-aa-aa-e6-88-91-e5-b0-8d-google-e6-ad-a4-e6-ac-a1-e8-99-95-e7-90-86-android-app-e8-a6-81-e6-b1-82-e3-80-8c-e5-85-a8-e5-a2-83-e5-af-a6-e5-90-8d-e9-a9-97-e8-ad-89-e9-96-8b-e7-99-bc.html"><![CDATA[<p><!-- wp:image {"id":4783,"sizeSlug":"large","linkDestination":"media"} --></p>
<figure class="wp-block-image size-large"><a href="https://ghostsinthelab.org/wp-content/uploads/2025/11/1000000930.png"><img src="https://ghostsinthelab.org/wp-content/uploads/2025/11/1000000930-461x1024.png" alt="Google Play Protect" class="wp-image-4783"/></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>在這個 AI 大瘋潮時代，Google 大可使用更好的威脅偵測模型去處理惡意程式的問題，去加強他們現有的 Google Play Protect 防禦能力。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>這在古早古早 DOS 時代的防毒軟體像是 ZLock, Tracer+ 就已經採行「偵測異常行為，而不只是單純掃描病毒程式 pattern」了。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>當時礙於硬體能力，這些軟體大概也只能正面表列一些有限的異常行為態樣，但是表現就已不俗；如今即使一台入門級的手機，CPU 運算能力也遠遠超過那些老 PC，還加上可以透過網路協助處理。但是 Google 他們在此處不用人工智慧，而用工人智慧，企圖把技術責任轉移為法律責任。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>這難道不諷刺嗎？</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>要上架 Google Play，你原本就要註冊、繳費、驗證開發者帳戶，這像是進駐市集、百貨公司做生意，合理。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>但是現在這個「全境實名驗證開發者身分」卻要求你即使不在 Google Play 上架，你還是要註冊、繳費、驗證開發者帳戶（把你的官方身分證明、法定地址證明都交出來，視情況還會公開揭露），然後你 build 出來的 APK 還得要用 Google 發出的憑證簽署，不然就無法在用戶的手機上安裝。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Google 聲稱這樣以身分驗證要求可以減少惡意程式散布、危害使用者；但是誰來跟我說明一下，我身為開發者，誰來保護我不被瘋狂用戶騷擾、威脅？</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>且你相信赫赫有名的大公司（姑且想成更注重商譽），就不會在其 App 產品裡作惡？</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>或是你覺得在 App 裡不慎用了一隻懷有惡意的第三方套件，出了包，是 App 作者存心如此？</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>再說一次，把技術責任轉移為法律責任，這樣真的很荒謬。</p>
<p><!-- /wp:paragraph --></p>]]></content><author><name>{&quot;display_name&quot; =&gt; &quot;Hui-Hong YOU&quot;, &quot;login&quot; =&gt; &quot;hiroshiyui&quot;, &quot;email&quot; =&gt; &quot;hiroshiyui@gmail.com&quot;, &quot;url&quot; =&gt; &quot;https://ghostsinthelab.org&quot;}</name><email>hiroshiyui@gmail.com</email></author><category term="General" /><summary type="html"><![CDATA[在這個 AI 大瘋潮時代，Google 大可使用更好的威脅偵測模型去處理惡意程式的問題，去加強他們現有的 Google Play Protect 防禦能力。 這在古早古早 DOS 時代的防毒軟體像是 ZLock, Tracer+ 就已經採行「偵測異常行為，而不只是單純掃描病毒程式 pattern」了。 當時礙於硬體能力，這些軟體大概也只能正面表列一些有限的異常行為態樣，但是表現就已不俗；如今即使一台入門級的手機，CPU 運算能力也遠遠超過那些老 PC，還加上可以透過網路協助處理。但是 Google 他們在此處不用人工智慧，而用工人智慧，企圖把技術責任轉移為法律責任。 這難道不諷刺嗎？ 要上架 Google Play，你原本就要註冊、繳費、驗證開發者帳戶，這像是進駐市集、百貨公司做生意，合理。 但是現在這個「全境實名驗證開發者身分」卻要求你即使不在 Google Play 上架，你還是要註冊、繳費、驗證開發者帳戶（把你的官方身分證明、法定地址證明都交出來，視情況還會公開揭露），然後你 build 出來的 APK 還得要用 Google 發出的憑證簽署，不然就無法在用戶的手機上安裝。 Google 聲稱這樣以身分驗證要求可以減少惡意程式散布、危害使用者；但是誰來跟我說明一下，我身為開發者，誰來保護我不被瘋狂用戶騷擾、威脅？ 且你相信赫赫有名的大公司（姑且想成更注重商譽），就不會在其 App 產品裡作惡？ 或是你覺得在 App 裡不慎用了一隻懷有惡意的第三方套件，出了包，是 App 作者存心如此？ 再說一次，把技術責任轉移為法律責任，這樣真的很荒謬。]]></summary></entry><entry><title type="html">BEAMS RECORDS Clear Portable CD Player</title><link href="https://ghostsinthelab.org/general/2025/10/16/beams-records-clear-portable-cd-player.html" rel="alternate" type="text/html" title="BEAMS RECORDS Clear Portable CD Player" /><published>2025-10-16T14:13:38+00:00</published><updated>2025-10-16T14:13:38+00:00</updated><id>https://ghostsinthelab.org/general/2025/10/16/beams-records-clear-portable-cd-player</id><content type="html" xml:base="https://ghostsinthelab.org/general/2025/10/16/beams-records-clear-portable-cd-player.html"><![CDATA[<p><!-- wp:image {"id":4766,"sizeSlug":"large","linkDestination":"media"} --></p>
<figure class="wp-block-image size-large"><a href="https://ghostsinthelab.org/wp-content/uploads/2025/10/1000000784-scaled.jpg"><img src="https://ghostsinthelab.org/wp-content/uploads/2025/10/1000000784-1024x576.jpg" alt="" class="wp-image-4766"/></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p><a href="https://www.beams.co.jp/item/beamsrecords/interior/29740083492/">BEAMS RECORDS Clear Portable CD Player</a></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>透過<a href="https://japanselects.com/">日本好物調查局</a>訂購，前天收到商品了，外觀確實有 Y2K 的風味，致敬當年還是窮大學生時買不起的<a href="https://en.wikipedia.org/wiki/IMac_G3">初代 Apple iMac</a>。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>音質&hellip;まぁ&hellip;直接接耳機會聽到惱人的低頻雜訊 (buzz/hum)，感覺是音訊輸出電路的推力太強，預設 20 的音量也大到快毀掉我耳機（與耳膜）了，調降到 04 才終於算是能好好聆聽 CD，然而低頻雜訊仍然在。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>自己的解決之道是製作一條<a href="https://diyaudioheaven.wordpress.com/headphones/headphone-attenuation-adapter/">衰減器</a>，這樣不但雜訊被濾除，預設音量 20 也不會太過猛烈。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>除去雜訊之後，感覺音質中規中矩，當然不比高級音響，但是符合這個價位的表現，且防震能力不錯。</p>
<p><!-- /wp:paragraph --></p>]]></content><author><name>{&quot;display_name&quot; =&gt; &quot;Hui-Hong YOU&quot;, &quot;login&quot; =&gt; &quot;hiroshiyui&quot;, &quot;email&quot; =&gt; &quot;hiroshiyui@gmail.com&quot;, &quot;url&quot; =&gt; &quot;https://ghostsinthelab.org&quot;}</name><email>hiroshiyui@gmail.com</email></author><category term="General" /><summary type="html"><![CDATA[BEAMS RECORDS Clear Portable CD Player 透過日本好物調查局訂購，前天收到商品了，外觀確實有 Y2K 的風味，致敬當年還是窮大學生時買不起的初代 Apple iMac。 音質&hellip;まぁ&hellip;直接接耳機會聽到惱人的低頻雜訊 (buzz/hum)，感覺是音訊輸出電路的推力太強，預設 20 的音量也大到快毀掉我耳機（與耳膜）了，調降到 04 才終於算是能好好聆聽 CD，然而低頻雜訊仍然在。 自己的解決之道是製作一條衰減器，這樣不但雜訊被濾除，預設音量 20 也不會太過猛烈。 除去雜訊之後，感覺音質中規中矩，當然不比高級音響，但是符合這個價位的表現，且防震能力不錯。]]></summary></entry></feed>