念头。遇见不同想法 NIANTOU.NET

在别人的文字里,遇见自己的念头。

独立书写 · 自由阅读

Manjusaka

按发表时间排列
20 篇

优化日志:给自建图床 PicImpact 做一次大范围性能优化

和 Debug 日志、SRE 日志一个系列,优化日志用来复盘一些可以公开的折腾经历。 这一篇的主角是 PicImpact——我自己在用的那个开源图床,跑在 photos.manjusaka.me 上,托管着我这几年拍的猫猫狗狗。去年年终总结里我写过一句「把自建图床项目的代码拾掇了很多」,这篇就算是那句话的注脚。前后断断续续修了一轮,修复点其实都不大,但中间冒出来的几个回归是真的有意思,尤其是最后那个 WebGL 的坑,我愿称之为本年度最佳。

Pydantic 不是免费的——聊聊数据校验的边界

最近给一个后端服务做 perf,跑了一发 py-spy 出来火焰图,盯着看了一会儿,发现 pydantic.main.__init__ 这一条在主热路径上占了一个让人挺难绷的比例。做了几轮调整之后顺手把这件事记一下——核心想说的是: 对一个 web 服务来说,数据校验从来不是免费的,pydantic 也一样。它有它的边界,越界使用就要付出对应的代价。

当我们在维护模型 API 服务时我们在维护什么

过去这一年我们团队陆陆续续做了几个 AI Service——大多是拿 FastAPI 包一个模型,再对外出 API。做到第三四个的时候我意识到一个尴尬的事实:每个项目长得都差不多,但每次起新项目还是在从零开始复制粘贴,而且不同的人写出来的目录结构、配置方式、metrics 命名都不太一样。一个新人接手第二个服务的时候,几乎要把第一个服务的认知全部重学一遍。 这篇文章想聊的不是某个具体框架,而是把这几个项目踩过的坑、迭代下来的设计、留下来的规范集中讲一遍——也算是给”维护一个模型 API 服务”这件事做一次复盘。

怎么样 tracing 你的 SQL?

过年是个好时候,可以猛猛干活或者看论文。不过上了几天磨,看了几天论文后觉得还是需要整点活 所以这篇文章来聊聊一个经典话题,How to trace your SQL?

笑ってほしくて

每年都会选一句话作为年终总结的标题,去年是“本当の僕らをありがとう”,今年我选择“笑ってほしくて”。 这句话出自 《葬送的芙莉莲》的片尾曲《Anytime anywhere》。 愿你露出笑容 可能是我想对逝去之人,逝去的猫说的,可能也是他们想对我说的 也是我想对所有看到这篇文章的人说的

成为榜样,但不要成为偶像

最近刚把空轨 1st 打通关。差不多国庆假期也要结束了,要开始准备接下来的学习和工作了。趁着这个机会,写点东西,当个迟到的 PyCon China 2025 的总结吧

Python 3.14 的进一步性能进化: Tail Call Interpreter

最近做安全做的我头晕脑胀,来点轻松的换换脑子,让自己放松下 Python 3.14 正式引入了一个新的机制叫作 Tail Call Interpreter(Made by Ken Jin),这无疑又是一个奠定未来基础的重大工作

Python 3.14: Python 世界的一大步

Python 3.14 目前主要的一些主要的特性其实已经固定了,在我看来,Python 3.14 是一个未来很多年的一个核心版本。因为其确定了是时代的 Python 调试生态的基准,这篇文章将会来聊聊这个 Python 世界中的史诗级改进

简单聊聊常见的负载均衡算法

这篇文章鸽了很久,最终决定还是老老实实写完,来介绍一下常见的一些负载均衡算法实现。本文的代码最终都会放在 load-balancer-algorithm 1 这个 repo 中 我从来没有觉得写博客快乐过

Saka 馬鹿

这篇博客是我在刷题群内的 2025 年的第一次分享整理的演讲稿。主要是完整复盘了过去几年里我犯下的两个比较典型的低级错误。 希望大家能看的开心

本当の僕らをありがとう

每年都会选择一句话来总结自己这一年,前年是“但行好事,莫问前程”,去年是 “Per aspera, Ad astra”。那么今年我选择是 “本当の僕らをありがとう”。 这句出自 《Angel Beats!》的片尾曲《My Song》。含义为“向最真实的我们致谢”

好了,现在你的知识也是我的了.jpg

最近给朋友介绍了一下我对于一些外部资料的吸收的经验。我想了想整理了下聊天记录,将我整个思路以博客的形式展现出来。希望能帮到看这篇博客的人。

Debug 日志:eCapture GH-604

Debug 日志系列第二篇,eCapture 的 GH-604, 一个和 Go, Glibc,静态编译相关的问题 太长不看版:在 eCapture 中,由于在静态链接时 glibc 版本的差异,导致在 Ubuntu 下编译的二进制会在特定发行版上 Segment fault

读到这里,留一点时间给自己的念头。