手記· Notes

記錄技術探索、開發心得與生活碎片。每一篇都是當下最真誠的思考。

文章 23標籤 101閱讀 3599
2026年8月
68月
2026年8月6日位元築夢

Trakt 刪了我的 API app:把「在看什麼」整條管線遷到 Simkl

7 月 31 日晚上,我發現「在看什麼」那頁停在 7 月 25 日。 沒有錯誤訊息。伺服器沒掛、頁面正常渲染、動畫那半邊還在更新——只有電影和影集那半邊,停住了。 去 Trakt 官網想手動重登,結果更怪:明明登入成功,每次跳轉都被踢回首頁。 而 <Annot...

#Trakt#scrobbler#觀影頁#瀏覽器擴充
26
位元築夢

為什麼我開始使用 Zed 編輯器:從 VS Code 搬家,23 個擴充最後剩 8 個

Zed 團隊的上一個作品是 Atom。 Atom 當年是 Chromium 的 fork,而開發它的過程順手生出了 Electron——也就是後來 VS Code 的地基。講難聽一點,VS Code 站的那塊地是這群人自己挖的,而他們現在在旁邊蓋了一棟不用那塊地基的房子。 Zed 的 1.0 是 2026 年 4 月 29 日...

#VS Code#Zed#開發環境#遠端開發
143
48月
2026年8月4日位元築夢

VS Code Remote-SSH 把我的伺服器燒到 96°C:rust-analyzer 無限重跑 cargo check

我那台家用伺服器上跑著三十幾個容器:部落格、NAS 面板、監控、幾個自架服務。除此之外我平常也直接用 VS Code Remote-SSH 連進去寫程式,工作區 36 GB、四十萬個檔案。 七月中某個下午,它被燒到失去回應。 查了三天,兇手是編輯器,不是那三十幾個容器裡的任何一個。 症狀:溫度釘在 90°C 撐了四十分鐘 我在追一個更早的斷電問題時,順手加了一支每分鐘記一次 CPU 溫度和 load 的腳本。那支腳本記到了這個: con...

#自架伺服器#故障排除#VS Code#rust-analyzer
16
位元築夢

UPS 加 NUT 讓伺服器斷電自動關機:設定全紀錄,和一條被貓咬過的電源線

搬完家的第一週,伺服器開始每天半夜自己關機。 不是當機、不是重開,是斷電式的死亡:回來開機一定跑 ext4 recovery,uptime 歸零,前一秒還在跑的東西沒留下任何遺言。而且它挑時間,幾乎都在清晨。 我第一時間想的是「線鬆了」,去壓緊,隔天照死。想到搬家後冷氣和熱水器可能跟它共用迴路,關掉試,照死。量溫度,50~60°C,正常。最後懷疑是搬家把 PSU 震壞了——那是一顆買不到一年的振華白金牌,我不太想相信。 問題是這些都是猜...

#Linux#自架伺服器#NUT#UPS
15
2026年7月
317月
2026年7月31日位元築夢

跟另一個站長互相監控:Uptime Kuma 交叉託管,和 Trust Proxy 開了反而更危險

自架服務久了會遇到一個尷尬問題:監控自己的那台機器,自己掛了誰告訴你? 我跑 Uptime Kuma 監控自己的所有服務,但它就跑在被監控的那台機器上。停電、斷網、整台當掉,監控跟著一起死,通知一封都發不出來。 要解決這個,監控就得放在別的地方。方法其實不少: | 做法 | 成本 | 適合誰 | |---|---|---| | 一台便宜 VPS 跑自己的 Kuma | 每月幾美金 | 想完全自己掌控、不想欠人情 | | 用現成的第三方監...

#資安#Let's Encrypt#自架#Uptime Kuma
55
297月
2026年7月29日位元築夢

幫朋友架一台幻獸帕魯專用伺服器:Docker 自架,和最容易卡關的 UDP 連線

朋友看到幻獸帕魯(Palworld)出了 1.0,揪我一起玩。他們兩年前就破過一輪,想趁這次大改版重破一次,而我那陣子剛好有空。 老實說我原本對這遊戲印象不太好,當年那個「抄寶可夢」的爭議擺在那裡。但後來它的官司打贏了,加上 1.0 的更新幅度是真的大,我想或許沒想像中嚴重,就跟著入手了。 朋友一開始是用 Radmin VPN 把大家串起來連的。這方法不能說不行,但它總讓我有點資安上的疙瘩。Radmin 這類虛擬區網走的是 P2P:兩端...

#Docker#伺服器#Palworld#自架
123
287月
2026年7月28日位元築夢

Linux 伺服器被植入挖礦程式:從 load average 10.65 揪出整條攻擊鏈

那天我只是想順手幫自己的家用伺服器做個健檢,結果第一個指標就不對勁:load average 10.65。這是一台 16 執行緒的機器,平常閒著沒事,load 卻卡在 10.65,等於三分之二的 CPU 被某個東西持續吃著。 有東西在偷用我的機器。這篇是我把它揪出來、清掉、堵住入口的全程,而且我盡...

#Docker#資安#Linux#伺服器
23
267月
2026年7月26日歲月留痕

暫借半年的呼嚕聲: 一隻不屬於我的貓,和牠留在被窩裡的味道

那半年,我每天放學回到家,牠一定在門口等我。 門一開,牠就抬頭「喵」一聲——短促的一聲,像在確認今天回來的是不是我。我沒有訓練過牠,也沒有給過牠什麼特別的獎勵,牠就是每天都在那裡。 牠叫牛奶,一隻賓士貓,而牠從來就不是我的貓。 一隻在大雨的夜裡被撿到的貓 我是在課堂上知道牠的存在的。同學轉過頭來跟我說,他撿到一隻小貓——某個下大雨的晚上,在大馬路邊。他把牠帶回家,照顧了幾天,還帶去看了醫生。然後家裡發現了,要他把貓送走。 我幾乎沒有猶豫...

#一期一會##回憶#部落格串聯
317
位元築夢

部落格文章渲染策略: 從 CSR 空殼、SSG/ISR,到會 eval 的 MDX 與首幀不再閃

每個部落格都要回答同一個問題:一篇文章,怎麼從資料庫走到讀者的螢幕上?我這台站,前兩年用的是最偷懶的答案:純 CSR。這篇是把那個答案重寫三次的故事:先搬去 SSG、再被自己的 prerender 打臉改走 ISR、最後為了「進文章不要閃一下」跟渲染時序纏鬥了一整晚。 先講清楚幾個名詞,整篇都繞著它們轉: SSR(<Annot note="Se...

#TanStack Start#SSG#ISR#MDX
119
位元築夢

3D 星空背景效能長征:OffscreenCanvas Worker → WebGPU/TSL 重寫

背景是整個網站裡最先被看到、也最不該被在意的東西。它只是裝飾——一片會慢慢轉的星空、一顆掛在右邊的土星。可就是這片裝飾,從一個天真的小玩具,一路長成差點把整個首頁搞到白屏的怪物;前前後後花了我三個階段、二十幾個 commit。 這篇想完整記錄 koimsurai.com 那片星空的三段變形記。因為 WebGL 大家...

#WebGPU#Three.js#TSL#效能優化
76
位元築夢

幫巴哈動畫瘋寫一個沒人寫過的 SDK: 逆向 API、自我掏空的 cookie,與讀不到的 HttpOnly

之前寫「在看什麼」那頁時,我留了一個伏筆:頁面上那些動畫的資料,是我自己逆向了一個動畫瘋 SDK 撈來的。那篇只一句帶過,說這塊夠寫一整篇。這就是那一篇。 起點很小——我想要頁面上能放我真實的動畫觀看史。電影劇集有 Trakt 可以接,但動畫瘋沒有任何現成整合(台灣限定服務,那些追蹤器都不碰),只能自己動手。真正開始做才發現一件更有趣的事:連 npm 上都沒有人做過動畫瘋的 user-data SDK。 一個沒人做的坑:讀「我看了什麼」...

#Rust#動畫瘋#逆向工程#TypeScript
57
位元築夢

打造一頁會自己更新的「在看什麼」:動畫瘋 × Trakt × TMDb 的觀影紀錄整合

起點其實跟「觀影」沒什麼關係。我想要的,是一頁像 Innei 那樣的碎念微網誌——看完一部什麼,隨手丟個連結、更新一句。但我跟他有個關鍵的岔路:他是手動維護、我懶。他那種「看完再去碎念一下、只放連結」的節奏,我學不來也不想學——我要的是它自己更新上去。 於是「手動碎念」慢慢長成了另一個東西:一頁會自動去問「我最近在看什麼」的頁面。我把它叫做「在看什麼」。 聽起來只是串接。結果整條路上真正把我絆倒的是兩件事:一,動畫的資料源根本得自己造;...

#動畫瘋#Trakt#TMDb#scrobbler
91
位元築夢

把 NLLB 翻譯接進 Rust,在 Windows 上撞穿整條工具鏈:ct2rs × CTranslate2 的 protobuf 撞名、CRT 之爭、關閉死鎖與 NVIDIA 崩潰

我要把一個純離線的 NLLB 翻譯功能,從 Python 搬進 Rust。模型是 int8 量化的 NLLB-200 600M,透過 ct2rs(ctranslate2-rs)這套 binding 接 CTranslate2。Linux 上一切乾淨俐落。 但一搬到 Windows,我在同一條路上,接連撞了三種牆:它連不起來、它關不掉、它在沒有 GPU 的機器上崩潰。 這篇把三面牆一個個拆開。前兩面是 Windo...

#CTranslate2#Rust#Windows#死鎖
131
2026年6月
位元築夢

替散落的資料庫,開一扇上了鎖的窗:Outerbase × Mongoku × Authelia,自架 2FA 唯讀資料庫後台

我的伺服器上,「自己的資料庫」散落了一地:部落格、n8n、Uptime Kuma、3x-ui、Jarvis、NAS 各一份 SQLite,另一個專案那邊還有一個 MongoDB。每次要看點資料,不是 ssh 進容器敲 sqlite3,就是臨時開個 web,或在筆電再裝一次 Compass。 真正的痛,其實不是 SQLite 不好,而是它就是一個藏在伺服器裡的檔案,很難即時看、更難順手改。 目標很單純:一個網頁後台,從任何地方都能看、能改...

#SQLite#2FA#Authelia#MongoDB
54
位元築夢

想做一個 tool-calling 修復 proxy,結果 benchmark 親手殺死了這個點子

打完跟 xl-ai + 地端 Gemma 的那場硬仗之後,我心裡留下一個結論:地端模型根本不會 tool-calling。Gemma 3 27B 連穩定吐個 JSON 都做不到,xl-ai 那種「期待模型乖乖講 tool-call 格式」的套件一接就炸,最後是靠後端 adapter 手工翻譯才救回來的。 https://koimsurai.com/blog/33 然後我就靈光一閃:既然每個做地端 AI 的人都會撞這面牆,那做...

#地端模型#修復層#模型選擇#Qwen3.5
525
2026年5月
65月
2026年5月6日歲月留痕

在失重邊緣的建構與日常的留白

四月的記憶,像是蒙上了一層失焦的濾鏡。如果真要用一個詞來形容這三十天,大概是「失重」。大腦與身體在各種死線、底層重構與跨部門的荒謬決策之間瘋狂運轉,彷彿被抽乾了周圍的空氣,找不到一個可以安穩落地的支點。 回過頭看,這一個月過得極度漫長,但好像又比三月過得更快,一轉眼就五月了。但我好像在短短三十天內,把別人實習大半年的進度給快轉按完了。雖然單調的辦公室日常依舊,但在這堆滿 Bug 與會議的日子裡,有些東西確實在我心底悄悄發生了質變。...

#實習經驗#遊戲#個人成長#生活平衡
231
2026年4月
44月
2026年4月4日歲月留痕

失控裡的秩序

又是過去一個月了吧。三月份的生活,其實說不上有多新鮮,大部分時間依然是在焦慮與程式碼之間反覆橫跳。不過如果靜下心來回想,單調的日子裡還是有那麼幾道值得記錄的褶皺。 說來好笑,我的作息一直都挺亂的,但不知道為什麼,整個三月竟然奇蹟似地非常規律。每天按部就班地醒來、睡去,身體像是一個終於被校準好的系統。但在這看似平靜的表面下,生活卻時不時給我來點荒謬的突發狀況。 學分的迴力鏢與早晨的二十分鐘 三月初,我的生活先是被一件看似微不足...

#生活記錄#AI 工具#遊戲體驗#IT 基礎設施
145
2026年2月
位元築夢

PostHog Data Pipeline 本地部署踩坑記: 在 DinD 加上 Caddy 環境的資料同步挑戰

最近在公司遇到一個資料同步的需求。起因是前端在處理用戶登入時,一直沒有正確取得到用戶的部門(dept)名稱資料。於是 DBA 提出了一個解法:希望能直接從底層出手,透過資料管道把資料庫裡現有的 member 資料撈出來 sync,順便把這段缺失的 dept 資訊給補上。為了解決這個需求,我們決定在本地端架設一套 PostHog Data Pipeline。 不過,這套系統跑在一個有點神奇的工作環境裡。我們的基礎服務全都是架設在 <Ann...

#PostHog#微服務#資料同步#ODBC
230
聲律拾遺

脫下沉重的鞋帶,化作純粹的風:ヨルシカ《老人と海》帶給我的無盡航程

你有沒有一首歌,能夠在你快要溺水的時候,將你從窒息的深淵中拉出來,瞬間帶到無邊際的大海上大口呼吸? 對我來說,這首歌就是 ヨルシカ (Yorushika) 的 《老人と海》。 這是我聽日文歌十年以來,始終佔據我心中最柔軟也最堅強位置的樂團。每當我在深夜裡盯著螢幕,面對著彷彿永遠解不完的難題、或是當生活與工作中的各種繁雜架構將我逼到...

#ヨルシカ#情感療癒#日文歌#音樂解析
307
202月
2026年2月20日位元築夢

打造一個會自己管理圖片的 Markdown 編輯器: 從 Monaco Editor、背景上傳,到 NAS 圖庫與圖片牆

最近我開始用 Monaco Editor 當作部落格的後台編輯器。這是 VS Code 的核心、一個為寫程式而生的編輯器,卻被我拿來寫部落格,想想有點硬核。但這篇的主角不是 Monaco 本身,而是「在它裡面塞一張圖」這件看似無聊的小事——結果從一個簡單需求,一路牽出 Base64、背景上傳、NAS 掛載、到圖片牆重寫的一整條坑。 Monaco 不吃圖,只吃連結 Monaco 和一般所見即所得的編輯器完全是兩個世界...

#Monaco Editor#圖片上傳#Markdown#NAS
320
192月
2026年2月19日歲月留痕

二月的片段:生日、團聚與技術探索

今年的生日,我給了自己一份特別的禮物——完全沒有計畫的一天。這或許聽起來很普通,但對於一個平日被行程、專案和待辦事項填滿生活的人來說,這是一種奢侈。2 月 3 日那天,我請了假,關掉鬧鐘,也不設任何提醒,只想讓身體去決定該如何運作。結果,一覺睡到傍晚,醒來時已經將近五、六點了。 窗外的光線雖然逐漸暗下,但內心卻莫名輕快。沒有時間表要趕,也不需要刻意安排什麼儀式感。我拿起手機聯絡從小五熟識的老朋友,很快地就達成共識:燒肉是今晚最好的選擇。...

#monthly#2026-02
310