笔记

博客

关于前端工程、SEO、AI、分析以及真实产品开发的记录。

42 篇文章

2026年8月31日7 分钟阅读

AVA Hosting 宣称“资源保证、不共享”,但我的 VPS 平均 CPU Steal 达到 32.73%

在正常生产流量下,我的 AVA Hosting KVM VPS 平均 CPU steal 为 32.73%,CPU idle 为 0%,CPU pressure 接近 99%。这不是一篇负面评价,而是一次基于实际 Linux 指标的 VPS 故障排查记录。

AVA HostingVPSLinuxCPU stealVPS 性能
2026年8月31日8 分钟阅读

我的 FDCServers VPS 在传输超过 3 TB 流量后一直正常,后来磁盘读取却开始需要 18 秒

我的 FDCServers VPS 起初可以正常处理真实流量,并已传输了超过 3 TB 的数据。随后,普通 workload 开始触发严重的虚拟磁盘 stall:CPU iowait 达到 100%,Linux I/O pressure 接近 100%,读取延迟最高 18.7 秒,flush latency 超过 53 秒。

FDCServersVPSLinux磁盘 I/ODevOps
2026年8月31日7 分钟阅读

即使没有流量,我的 REGXA VPS 仍出现了 94% 的 CPU Steal

在排查 REGXA KVM VPS 的严重性能问题时,我测到 92–94% 的 CPU steal、耗时数秒的 localhost 请求、不断增长的连接队列,以及超过两分钟才返回的 HTTP 504。移除全部生产流量后,CPU steal 反而升到 94.17%,REGXA 随后将其归因于共享基础设施上的资源争用。

REGXAVPSLinuxCPU steal虚拟化
2026年8月28日11 分钟阅读

在 Nginx 后面使用 Bunny Storage 两个月后,我为什么把图片、视频和音频迁到独立媒体服务器

两个月里,我没有使用 Bunny CDN,而是把 Bunny Storage 当作自建 Nginx 缓存后的私有 origin。Production log 暴露了 cold media 请求中的长尾连接超时,以及 MP4 上 Nginx Slice 与 ETag 不一致的另一类问题;最终我迁移到了一个更简单的私有 media origin。

Bunny StorageNginx视频缓存Cache miss媒体服务器
2026年8月20日8 分钟阅读

WebP 转 AVIF 时如何使用 SSIMULACRA2:为什么原始来源用 60,已损压缩派生文件用 65

当 AVIF 来自已经经过有损压缩的 WebP 时,SSIMULACRA2 只会衡量第二代压缩带来的损失。因此我对干净来源使用 60/58,对已知的有损派生文件使用 65/63。

AVIFWebPSSIMULACRA2图像压缩Web 性能
2026年8月17日10 分钟阅读

DeepSeek 涨价后,我找到了比旧价还便宜的同款 V4 Flash

8 月 17 日早上,我发现 DeepSeek API 的实际支出突然变成平时的大约五倍。随后我找到并实测了另一家提供同一 DeepSeek-V4-Flash-0731 checkpoint 的服务商,其当前价格甚至比 DeepSeek 的旧价格低约 45%。

DeepSeekRunwareLLM APIAI 基础设施开放权重模型
2026年8月13日13 分钟阅读

如何把动画 WebP、GIF 和 APNG 转成 H.264 MP4,同时不破坏帧与时间

我的生产流程会重建用户真正看到的完整帧,保留源时间,为每个最终 MP4 选择一个 CFR,在不放大的前提下使用最小公共画布,编码相互兼容的 H.264 片段,并在不进行第二次有损编码的情况下拼接;随后同时验证文件本身和 HTTP 交付。一次实测中,217 个动画 WebP、总计 1.49 GB,最终变成一个 78.49 MB 的 H.264 MP4。

H.264FFmpegMP4动画 WebPGIFAPNG视频压缩媒体处理
2026年8月13日17 分钟阅读

我曾经对所有浏览器错误都报警:如何把错误噪声变成真正有用的生产监控

最初的前端上报器把广告拦截、GTM 故障、AbortError、信息不透明的 Script error 和真正的 Next.js 分块加载故障都当成同一级别。我后来改用归属、用户影响、证据质量、事件关联和恢复情况来判断是否需要告警。

浏览器错误监控前端可观测性JavaScript 错误生产监控Next.jsWeb 性能
2026年8月13日21 分钟阅读

为什么旧的 Next.js 标签页会在部署后失效:过期 HTML、缺失的分块文件与版本错位

一次部署后,我的生产监控记录到一个属于 Next.js 应用自身的分块文件加载失败。日志只证明失败发生了,并不能证明原因。本文以这次事件为出发点,说明长期打开的标签页、过期 HTML、缺失的 /_next/static 资源、版本错位、旧资源保留、deploymentId、发布顺序、监控以及受控恢复之间的关系。

Next.js部署版本错位网页缓存前端可靠性静态资源
2026年8月13日14 分钟阅读

一个 tick 就把我的 CFR 弄坏了:为什么 5580 不是 5625,3751 也不是 3750

我的校验器反复拒绝一个 16 fps MP4,因为某个数据包的时长是 5580 tick,而不是 5625。后来它又在 24 fps 输出中抓到 3751,而正确值本应精确等于 3750。这两次故障迫使我把源时序、CFR 量化、MP4 时间基、PTS/DTS、多路复用和数据包级校验彻底分开理解。

FFmpegH.264CFR视频时间戳PTS与DTSMP4校验
2026年8月13日13 分钟阅读

我如何用 H.264 把实际运行中的一个视频从约 280 MB 压到约 50 MB

实际运行环境中的一个视频,在我围绕 CRF 28、x264 veryslow、720p 级分辨率上限、真正有用的帧率以及适度的解码要求重新设计 H.264 配置后,从约 280 MB 降到了约 50 MB。更早的阶段里,同一个例子已经从约 350 MB 降到 238 MB;对旧媒体库的检查还表明,每秒数兆比特的 H.264 文件并不少见。

H.264FFmpegx264视频压缩网页性能媒体优化
2026年4月16日6 分钟阅读

我做了 Gitae:不只判断网站“在线/离线”,而是继续定位 DNS、TLS、路由和端口问题

我做 Gitae 是为了回答一个实际问题:网站是真的不可用,还是只在本地环境出问题?它从莫斯科和赫尔辛基的外部 VDS 进行检查,并结合 DNS、HTTPS/TLS、端口、路由、IP、主机和 CMS 信号。每个结果都只是诊断证据,而不是最终结论。

Gitae网站诊断网站监控DNSSSLPingTraceroute端口检查主机SEO
2026年4月14日6 分钟阅读

为什么 TypeScript 在生产级开发中与 Codex 配合得特别好

在生产环境里,TypeScript 能给 Codex 提供优秀 prompt 无法替代的东西:机器可验证的契约、快速的编译器反馈,以及更安全的大规模重构路径。

TypeScriptCodexAI 编码软件交付JavaScript开发工作流
2026年4月6日5 分钟阅读

我做了 Jurfi.com:一个用于结构化法律文档草稿的浏览器工作室

我做 Jurfi.com,是为了把表单和模板变成浏览器里的结构化法律工作草稿,让草稿可以保存在本地,并把审阅明确留在流程中,而不是声称软件能够取代律师。

JurfiJurfi.com法律文档法律科技SaaS文档起草浏览器工具
2026年4月5日4 分钟阅读

我的第一笔 SaaS 收入:一次付款究竟证明了什么

我自己开发的 SaaS 产品收到的第一笔付款金额很小,但它改变了我手里证据的质量。本文讨论一次交易究竟能验证什么、不能证明什么,以及为什么可重复性比这个里程碑本身更重要。

SaaS第一笔收入独立开发产品验证产品构建创业历程开发者经验
2026年4月3日9 分钟阅读

我如何用 Codex 审查 15 个项目,同时保留最终人工控制

过去同时审查 15 个软件项目,意味着被大量重复检查淹没。现在 Codex 能帮助我更快地检查 Bug、测试、SEO、翻译、本地化和一致性,但我始终把 AI 的发现当作线索而不是结论,把每一次修改都当作必须由我自己验证的内容。

CodexAI coding代码审查软件测试开发工作流本地化技术 SEO开发者效率
2026年4月2日7 分钟阅读

为什么我把 ChatGPT Plus 的 Codex 最后 3–5% 额度用在大型工程任务上 — 更新:到2026年夏天,这个方法已经失效

更新:到2026年夏天,这套 workflow 对我来说已经不再可靠。我的账户里 5 小时用量计数器消失了,只剩周限额可见,而且长任务在周限额耗尽时可能直接停止。

CodexChatGPT PlusAI 编码工具开发者工作流软件工程TypeScript 迁移ESLint 清理重构Codex使用限制2026更新
2026年4月1日11 分钟阅读

我用 AI 发布了 10,000 篇 SEO 文章,最后整个网站在 Google 索引中变成了 0 页面

大规模 AI 发布一开始像一条捷径:Google 抓取了全部 10,000 个生成文章 URL,但真正进入索引、出现在 Search 中并带来实际流量的只有约 1,000 个页面。之后连这些页面也逐渐消失,最终整个网站降到 0 个索引页面。这次失败彻底改变了我对 AI、SEO、翻译和编辑责任的理解。

AI SEO生成式 AIGoogle 搜索规模化内容索引AI 辅助写作多语言 SEO
2026年3月31日6 分钟阅读

8GB/256GB 的 M1 MacBook 用了五年:为什么我至今还没换掉它

我花大约 1000 美元买了基础款 M1 MacBook,配置是 8GB 内存和 256GB SSD,并长期每天使用约 15 小时,用于软件开发、视频与音频处理、图像处理、写作、学习和个人项目。五年后,我已经能清楚看到它的局限,但我考虑升级,是因为自己的工作负载变大了,而不是因为这台机器已经失去实用价值。

MacBookAppleM1Apple Silicon软件开发长期评测硬件寿命
2026年3月30日5 分钟阅读

我用 ChatGPT 把博客翻译成 20 种语言后,开始获得来自世界各地的搜索流量

AI 彻底改变了我做多语言内容的成本结构。我从单语言博客扩展到每篇文章最多 20 种语言,让不同语言的页面成为新的自然搜索入口。

AI 本地化多语言 SEOChatGPTNext.js国际 SEO博客
2026年3月27日5 分钟阅读

我把 QRViz 做成了免费的静态二维码生成器,并把获客押在 SEO 上

QRViz 是一个基于浏览器的静态二维码生成器,而不是营销活动平台。 我把 qrviz.com 做成了一个免费的二维码生成器,没有广告预算、付费获客计划,也没有盈利漏斗。项目的发现渠道完全依赖 SEO,因此最大的未知并不是能不能做出来,而是有没有人能找到它。

二维码生成器Qrviz产品上线SEO副业项目网页开发产品开发
2026年2月18日4 分钟阅读

为什么我觉得获取客户比做出一个 SaaS 更难

这是我亲自做 SaaS 后得到的一个教训:工程开发给我的反馈清晰而且可验证,而分发、定位、表达和留存需要另一套更难预测的反馈循环。

SaaS增长客户获取产品营销自举创业公开构建分发
2026年2月17日4 分钟阅读

我独自做了一个 SaaS 产品。开启付费后,工作的性质变了

我用晚上、周末和不少假期独自做出了这个产品。支付上线后,bug、onboarding、内容管理、留存和信任不再是“以后再处理”的问题,而是运营真实产品的一部分。

SaaSSolo 开发产品上线PaymentsReliability产品运营
2026年1月22日4 分钟阅读

I Got 550 Views from One Image, Voiceover, and Subtitles: What Three Shorts Tests Actually Taught Me

A simple YouTube Short built from one static image, a voiceover, and subtitles reached 550 views. After three early tests, the useful lesson was not a proven formula, but a repeatable way to experiment without confusing a promising signal with proof.

YouTube ShortsContent ExperimentsShort-form VideoVideo EditingCapCutCreator Workflow
2026年1月20日5 分钟阅读

我在莫斯科一个 Frontend 职位上看到了近 6,000 份申请。这能说明什么,又不能说明什么?

2023 年底,招聘人员告诉我,一个职位有 300–500 份申请就已经很多了。到 2026 年 1 月 20 日,我看到莫斯科一个中级 Frontend 职位在几小时内接近 6,000 份申请。本文区分这个数字真正传递的信号、它无法证明的结论,以及我现在会如何从候选人的角度解读它。

职业发展IT 就业市场Frontend俄罗斯莫斯科招聘求职
2026年1月1日4 分钟阅读

DeepSeek 如何改变了我的 Node.js 开发流程:半年 4,000+ 次 commit

我的 2025 GitHub 图表从上半年几乎空白,变成下半年超过 4,000 次 commit。本文讨论 AI coding 如何改变我的 Node.js 个人项目 workflow、它在哪些地方节省时间、在哪些地方会犯错,以及为什么验证仍然比生成速度更重要。

Node.jsDeepSeekAI CodingDeveloper ProductivitySide ProjectsSoftware Engineering
2025年12月30日6 分钟阅读

My First TikTok at 28: What a Vertical Product Demo Taught Me About Traffic

At 28, I posted my first TikTok and cross-posted the same product demo to Reels and Shorts. The useful lesson was not the view count: it was how much a 9:16 frame changes a desktop interface, and how to measure short-form traffic without confusing reach with acquisition.

TikTokProduct MarketingProduct DemosAnalyticsIndie Dev
2025年11月16日5 分钟阅读

我买了一个 25 年历史的域名:死链每天收到 1,000+ 次请求

在一个最早注册于 2000 年的域名上上线新站后,我看到旧 URL 每天收到 1,000 多次请求,Yandex Webmaster 还在一夜之间出现 900 多个错误。本文区分我真正能确认的事实和无法证明的因果关系,并解释为什么我用了定向 410,以及现在会如何审计老域名。

SEOHTTPDevOps域名网页抓取
2025年11月14日6 分钟阅读

Yandex 已收录 12,500 个页面,但俄罗斯流量几乎为零:我忽略的 Cloudflare 问题

Yandex 已收录 12,500 个页面,但俄罗斯流量几乎为零。我把问题定位到网络路径,关闭 Cloudflare 代理,把缓存、压缩和基础防护迁到自己 VDS 上的 Nginx,并恢复了可访问性。最重要的教训是:索引、可访问性和流量必须分开看。

DevOpsSEONginxCloudflare网络基础设施
2025年10月27日5 分钟阅读

我的静态 Next.js 站点每天收到数千次漏洞扫描,但 Nginx 几乎没什么感觉

日志里充满了寻找 WordPress、PHP 后门、.env 和 .git/config 的探测请求。在我的静态 Next.js + Nginx 架构中,它们大多只会变成低成本的 miss 和 404,观察期间 CPU 负载也没有变化。这里真正值得讨论的是:这说明了静态架构的什么优势,又不能证明什么。

安全Next.jsNginxDevOps静态ホスティング攻击面
2025年10月27日4 分钟阅读

Yandex 开始给我的新网站带来流量,而 Google 几乎没有动静

在同一个新项目上,Google 在很长一段时间里只有大约 300 次点击,而 Yandex Webmaster 显示出明显增长,甚至一度显示点击数 +500%。真正值得讨论的是:这些数字能证明什么,又不能证明什么。

SEOGoogle SearchYandexGoogle Search ConsoleYandex Webmaster技术 SEO
2025年10月17日6 分钟阅读

Yandex 一夜之间收录了我的 4,278 个 Next.js 页面:这件事真正证明了什么

Yandex 几乎一次性收录了我用 Next.js 静态生成的 4,278 个页面。这是一个真实的技术里程碑,但并不能证明排名或流量已经成功。下面是这个结果对 SSG 和程序化 SEO 真正说明了什么,以及它不能说明什么。

SEONext.jsSSGYandex程序化 SEO索引
2025年10月16日6 分钟阅读

我的第一个 SEO 实验月:632 位自然访客,以及一次可疑的机器人流量检查

为了给工作中的大型 SEO 项目做准备,我把个人 side project 当成实验环境。一个月后有了 632 位自然访客,但某天 83 位访客的峰值让我意识到:可疑流量和分析工具的重放偏差,很容易被误读成真实增长。

SEO网站分析机器人流量Yandex MetricaSEO 实验
2025年10月6日4 分钟阅读

我差点忽略 Yandex Webmaster。两周后,它带来的流量却超过了 Google

为了给一个 SEO 至关重要的工作项目做准备,我先用 Next.js 做了一个 side project。前两周我记录到 Google 带来 58 位访客、Yandex 带来 200 位,也因此真正理解了流量、索引和诊断必须分开看。

SEONext.jsGoogle SearchYandexSearch Console索引
2025年10月5日5 分钟阅读

Yandex Metrica vs Google Analytics:并行使用一周后,我为什么更偏向 Metrica

我在一个新项目上同时运行 Google Analytics 和 Yandex Metrica 一周。让我更频繁打开 Metrica 的关键是 Webvisor 的会话回放。不过,这反映的是我的工作流偏好,并不能证明某个平台对所有人都更好。

网站分析UXSession ReplayYandex MetricaGoogle AnalyticsGA4
2025年10月3日4 分钟阅读

Yandex 抓取了没有 /en 的博客路径,308 重定向避免了大量 404

在 sitemap 中加入约 3,000 个 /en/blog/... 页面后,我发现 Yandex 开始尝试对应的 /blog/... 路径。提前配置好的 308 重定向让这些请求没有以 404 结束。真正值得总结的并不是“Yandex 把 sitemap 解析坏了”,而是可靠的重定向层能给 URL 架构增加多少容错能力。

SEOYandexSitemap308 重定向技术 SEO抓取
2025年10月2日5 分钟阅读

两个新站在 Google 上突然起量,几天后流量又下降了约 10 倍

连续两次上线,我都看到 Google 展示量迅速上升,而几天后流量降到最初的大约十分之一。这个模式是真实观察到的,但我无法证明原因就是所谓的“Google 蜜月期”。

SEOGoogle SearchSearch Console自然搜索流量技术 SEO
2025年10月1日5 分钟阅读

Yandex 搜索一夜之间少了 2,000 个页面:这件事真正能说明什么

我在 Yandex Webmaster 里看到,约 8,000 个页面中有 2,000 个不再参与搜索。25% 的跌幅很醒目,但更重要的教训是:观察到的搜索状态变化,不等于已经证明了原因。

SEOYandex Webmaster索引搜索可见性技术 SEO
2025年7月11日2 分钟阅读

我在 MoscowJS 66 提了 10 多个问题,还赢得了两份奖品

在 MoscowJS 66,我围绕 Telegram 机器人、LangChain.js、网站构建器架构和 TypeScript 类型测试等分享提出了 10 多个问题。其中两个被评为最佳问题,我也因此拿到了两份奖品。

活动JavaScriptTypeScriptAILangChain.js社区MoscowJS
2025年6月23日5 分钟阅读

我从 PiterJS #79 带走了什么:遗留单体、FrontOps、Web 性能,以及更好的问题

圣彼得堡的 PiterJS #79 讨论的不是追逐新技术,而是如何维护已经存在的系统:遗留单体、FrontOps 和 Web 性能指标。我带走了实用笔记、Q&A 环节的两个奖品,也再次确认了线下 meetup 真正的价值来自参与。

PiterJSJavaScriptFrontOpsDockerWeb 性能开发者社区
2025年6月17日6 分钟阅读

I Launched a Next.js Blog in 21 Languages. Here’s What 439 Google Impressions Actually Told Me

In its first week, my 21-language Next.js blog recorded 439 Google impressions and 5 clicks. Later, 436 of 471 pages were indexed. The useful lesson was learning to separate visibility, indexing, and actual search performance.

Next.jsSEOI18nMultilingual SEOGoogle SearchWeb Development
2025年6月7日3 分钟阅读

使用 JavaScript 六年后参加 MoscowJS 65:我为什么仍然会去本地技术聚会

2025 年 6 月 5 日,我参加了在 T Bank 举办的 MoscowJS 65。四场分享从不同角度讨论 AI,但我最大的感受反而更简单:本地 meetup 仍然能提供一些文档和录像无法完全替代的东西。

JavaScriptMoscowJS技术聚会开发者社区AI