Trakt 删了我的 API app:把「在看什么」整条管线迁到 Simkl
7 月 31 日晚上,我发现「在看什么」那页停在 7 月 25 日。 没有错误讯息。伺服器没挂、页面正常渲染、动画那半边还在更新——只有电影和影集那半边,停住了。 去 Trakt 官网想手动重登,结果更怪:明明登入成功,每次跳转都被踢回首页。 而 <Annot...
記錄技術探索、開發心得與生活碎片。每一篇都是當下最真誠的思考。
7 月 31 日晚上,我发现「在看什么」那页停在 7 月 25 日。 没有错误讯息。伺服器没挂、页面正常渲染、动画那半边还在更新——只有电影和影集那半边,停住了。 去 Trakt 官网想手动重登,结果更怪:明明登入成功,每次跳转都被踢回首页。 而 <Annot...
Zed 团队的上一个作品是 Atom。 Atom 当年是 Chromium 的 fork,而开发它的过程顺手生出了 Electron——也就是后来 VS Code 的地基。讲难听一点,VS Code 站的那块地是这群人自己挖的,而他们现在在旁边盖了一栋不用那块地基的房子。 Zed 的 1.0 是 2026 年 4 月 29 日...
我那台家用伺服器上跑着三十几个容器:部落格、NAS 面板、监控、几个自架服务。除此之外我平常也直接用 VS Code Remote-SSH 连进去写程式,工作区 36 GB、四十万个档案。 七月中某个下午,它被烧到失去回应。 查了三天,凶手是编辑器,不是那三十几个容器里的任何一个。 症状:温度钉在 90°C 撑了四十分钟 我在追一个更早的断电问题时,顺手加了一支每分钟记一次 CPU 温度和 load 的脚本。那支脚本记到了这个: con...
搬完家的第一周,伺服器开始每天半夜自己关机。 不是当机、不是重开,是断电式的死亡:回来开机一定跑 ext4 recovery,uptime 归零,前一秒还在跑的东西没留下任何遗言。而且它挑时间,几乎都在清晨。 我第一时间想的是「线松了」,去压紧,隔天照死。想到搬家后冷气和热水器可能跟它共用回路,关掉试,照死。量温度,50~60°C,正常。最后怀疑是搬家把 PSU 震坏了——那是一颗买不到一年的振华白金牌,我不太想相信。 问题是这些都是猜...
起因不是被入侵,是吵。 我的 nginx 接了 netdata,异常会发 Discord。它长这样,连当下的 Top IP 和 Top Path 都一起贴给你: ![netdata 发到 Discord 的告警卡片,显示...
自架服务久了会遇到一个尴尬问题:监控自己的那台机器,自己挂了谁告诉你? 我跑 Uptime Kuma 监控自己的所有服务,但它就跑在被监控的那台机器上。停电、断网、整台当掉,监控跟着一起死,通知一封都发不出来。 要解决这个,监控就得放在别的地方。方法其实不少: | 做法 | 成本 | 适合谁 | |---|---|---| | 一台便宜 VPS 跑自己的 Kuma | 每月几美金 | 想完全自己掌控、不想欠人情 | | 用现成的第三方监...
朋友看到幻兽帕鲁(Palworld)出了 1.0,揪我一起玩。他们两年前就破过一轮,想趁这次大改版重破一次,而我那阵子刚好有空。 老实说我原本对这游戏印象不太好,当年那个「抄宝可梦」的争议摆在那里。但后来它的官司打赢了,加上 1.0 的更新幅度是真的大,我想或许没想像中严重,就跟着入手了。 朋友一开始是用 Radmin VPN 把大家串起来连的。这方法不能说不行,但它总让我有点资安上的疙瘩。Radmin 这类虚拟区网走的是 P2P:两端...
那天我只是想顺手帮自己的家用伺服器做个健检,结果第一个指标就不对劲:load average 10.65。这是一台 16 执行绪的机器,平常闲着没事,load 却卡在 10.65,等于三分之二的 CPU 被某个东西持续吃着。 有东西在偷用我的机器。这篇是我把它揪出来、清掉、堵住入口的全程,而且我尽...
每个部落格都要回答同一个问题:一篇文章,怎么从资料库走到读者的萤幕上?我这台站,前两年用的是最偷懒的答案:纯 CSR。这篇是把那个答案重写三次的故事:先搬去 SSG、再被自己的 prerender 打脸改走 ISR、最后为了「进文章不要闪一下」跟渲染时序缠斗了一整晚。 先讲清楚几个名词,整篇都绕着它们转: SSR(<Annot note="Se...
背景是整个网站里最先被看到、也最不该被在意的东西。它只是装饰——一片会慢慢转的星空、一颗挂在右边的土星。可就是这片装饰,从一个天真的小玩具,一路长成差点把整个首页搞到白屏的怪物;前前后后花了我三个阶段、二十几个 commit。 这篇想完整记录 koimsurai.com 那片星空的三段变形记。因为 WebGL 大家...
之前写「在看什么」那页时,我留了一个伏笔:页面上那些动画的资料,是我自己逆向了一个动画疯 SDK 捞来的。那篇只一句带过,说这块够写一整篇。这就是那一篇。 起点很小——我想要页面上能放我真实的动画观看史。电影剧集有 Trakt 可以接,但动画疯没有任何现成整合(台湾限定服务,那些追踪器都不碰),只能自己动手。真正开始做才发现一件更有趣的事:连 npm 上都没有人做过动画疯的 user-data SDK。 一个没人做的坑:读「我看了什么」...
起点其实跟「观影」没什么关系。我想要的,是一页像 Innei 那样的碎念微网志——看完一部什么,随手丢个连结、更新一句。但我跟他有个关键的岔路:他是手动维护、我懒。他那种「看完再去碎念一下、只放连结」的节奏,我学不来也不想学——我要的是它自己更新上去。 于是「手动碎念」慢慢长成了另一个东西:一页会自动去问「我最近在看什么」的页面。我把它叫做「在看什么」。 听起来只是串接。结果整条路上真正把我绊倒的是两件事:一,动画的资料源根本得自己造;...
我要把一个纯离线的 NLLB 翻译功能,从 Python 搬进 Rust。模型是 int8 量化的 NLLB-200 600M,透过 ct2rs(ctranslate2-rs)这套 binding 接 CTranslate2。Linux 上一切干净俐落。 但一搬到 Windows,我在同一条路上,接连撞了三种墙:它连不起来、它关不掉、它在没有 GPU 的机器上崩溃。 这篇把三面墙一个个拆开。前两面是 Windo...
我的伺服器上,「自己的资料库」散落了一地:部落格、n8n、Uptime Kuma、3x-ui、Jarvis、NAS 各一份 SQLite,另一个专案那边还有一个 MongoDB。每次要看点资料,不是 ssh 进容器敲 sqlite3,就是临时开个 web,或在笔电再装一次 Compass。 真正的痛,其实不是 SQLite 不好,而是它就是一个藏在伺服器里的档案,很难即时看、更难顺手改。 目标很单纯:一个网页后台,从任何地方都能看、能改...
打完跟 xl-ai + 本地 Gemma 的那场硬仗之后,我心里留下一个结论:本地模型根本不会 tool-calling。Gemma 3 27B 连稳定吐个 JSON 都做不到,xl-ai 那种「期待模型乖乖讲 tool-call 格式」的库一接就炸,最后是靠后端 adapter 手工翻译才救回来的。 https://koimsurai.com/blog/33 然后我就灵光一闪:既然每个做本地 AI 的人都会撞这面墙,那做一...
最近在做一个纯离线的桌面笔记 App,用 BlockNote 当编辑器核心。BlockNote 有一个官方 AI 套件 @blocknote/xl-ai,可以做「改善写作 / 简化 / 修正拼写 / 翻译 / 续写」这类选文 AI,还附带很漂亮的 inline diff(删除线+highlight...
四月的记忆,像是蒙上了一层失焦的滤镜。如果真要用一个词来形容这三十天,大概是「失重」。大脑与身体在各种死线、底层重构与跨部门的荒谬决策之间疯狂运转,仿佛被抽干了周围的空气,找不到一个可以安稳落地的支点。 回过头看,这一个月过得极度漫长,但好像又比三月过得更快,一转眼就五月了。但我好像在短短三十天内,把别人实习大半年的进度给快转按完了。虽然单调的办公室日常依旧,但在这堆满 Bug 与会议的日子里,有些东西确实在我心底悄悄发生了质变。...
又是过去一个月了吧。三月份的生活,其实说不上有多新鲜,大部分时间依然是在焦虑与程式码之间反复横跳。不过如果静下心来回想,单调的日子里还是有那么几道值得记录的褶皱。 说来好笑,我的作息一直都挺乱的,但不知道为什么,整个三月竟然奇迹似地非常规律。每天按部就班地醒来、睡去,身体像是一个终于被校准好的系统。但在这看似平静的表面下,生活却时不时给我来点荒谬的突发状况。 学分的回力镖与早晨的二十分钟 三月初,我的生活先是被一件看似微不足...
最近在公司遇到一个资料同步的需求。起因是前端在处理用户登入时,一直没有正确取得到用户的部门(dept)名称资料。于是 DBA 提出了一个解法:希望能直接从底层出手,透过资料管道把资料库里现有的 member 资料捞出来 sync,顺便把这段缺失的 dept 资讯给补上。为了解决这个需求,我们决定在本地端架设一套 PostHog Data Pipeline。 不过,这套系统跑在一个有点神奇的工作环境里。我们的基础服务全都是架设在 <Ann...
你有没有一首歌,能够在你快要溺水的时候,将你从窒息的深渊中拉出来,瞬间带到无边际的大海上大口呼吸? 对我来说,这首歌就是 ヨルシカ (Yorushika) 的 《老人と海》。 这是我听日文歌十年以来,始终占据我心中最柔软也最坚强位置的乐团。每当我在深夜里盯着萤幕,面对着仿佛永远解不完的难题、或是当生活与工作中的各种繁杂架构将我逼到...
最近我开始用 Monaco Editor 当作部落格的后台编辑器。这是 VS Code 的核心、一个为写程式而生的编辑器,却被我拿来写部落格,想想有点硬核。但这篇的主角不是 Monaco 本身,而是「在它里面塞一张图」这件看似无聊的小事——结果从一个简单需求,一路牵出 Base64、背景上传、NAS 挂载、到图片墙重写的一整条坑。 Monaco 不吃图,只吃连结 Monaco 和一般所见即所得的编辑器完全是两个世界...