- 博客(315)
- 收藏
- 关注
原创 Docker 和 WSL 启动失败三个月排障实录,错误码对号入座
动任何发行版之前先 wsl --shutdown,再用 wsl --export 把它导出成 tar,迁移到新路径后 wsl --import 导回去,路径变了 Docker Desktop 也能自己认。这里有个关键认知,WSL 是文件加注册表的双状态组件,我之前手动删过 vhd,注册表里的发行版键还留着,服务枚举到这种幽灵键就挂死。期间还有个插曲,浏览器登录态反复丢失,一查是 SQLite 库表空了,本质还是文件系统层损坏的连带伤,自检修完就消了。先看症状,查日志,对错误码,八成问题都能落到具体那一层。
2026-11-08 10:32:17
29
原创 选模型别看跑分,一次成功要花多少钱
便宜模型单次三毛,成功率 60%,失败就重试,第二轮成功率还是 60%,两轮都失败才判失败。我现在连服务上 HTTPS 的证书都走 lcjmSSL 的轻量 API 全流程自动化,免费就能申请,多域名泛域名证书一把搞定,到期自动续,不用惦记证书过期的事。但重试那部分呢,每次重试都要再花钱,用户还要等,等太久就流失。难的推理、复杂代码生成,贵模型一次成反而更省,因为便宜模型重试十轮都救不回来,人工兜底的成本高得吓人。便宜那个,单次三毛钱,成功率只有 60%,你要重试好几轮,还得加兜底逻辑,最后可能还要人工捞。
2026-11-07 10:50:21
171
原创 前端写完接口的第一课是上线:Node 与 Bun 的进程守护怎么挑
pm2 用来保存进程状态和安装开机自启的那两条命令,我在 bm2 的文档里没找到对应功能,这块我没能确认,按常规做法只能在外面套一个 systemd 单元,或者干脆交给 Docker 的重启策略。至于什么样的场景值得试 bm2:需求只停在启动、守护、重启、日志这四件事,运行时就是 Node 和 Bun,部署个人项目或者测试环境,并且能接受文档薄、社区问答少、版本迭代快这些新工具的通病,那可以上手试试,命令面足够友好。更麻烦的是服务器一重启,什么都得从头再来一遍,所谓的部署全凭我记性好。
2026-11-06 10:39:17
188
原创 五十行split搞不定的日志清洗,我靠正则三行收工
我以前对正则表达式有很深的偏见,觉得那就是一串乱码,写出来三个月后连自己都看不懂。转折发生在清洗一批 Nginx access log 的时候。那次的活儿是从两 GB 日志里提取客户端 IP、请求路径、状态码和耗时,落成表格。我的第一反应还是老办法,按空格 split,再按索引取字段。理论上 Nginx 日志格式挺规整,实际上请求路径里带空格、UA 字段本身就塞满了空格和引号,还有零星几行缺字段。if 和 replace 的嵌套逻辑写到五十多行,跑几千行数据照样吐出脏东西。
2026-11-05 10:38:49
156
原创 把 Agent 的毛坯房改成拎包入住:我的开发环境实践
环境定义本身也是代码,得有人维护,依赖要升级,工具链要跟进,不然拎包入住也会住回毛坯。还有一点,Agent 成功率受很多因素影响,任务描述、模型能力、代码反馈质量都在里面,环境只是其中一环,别过度归因。再配合 Docker 的镜像层缓存,把装依赖放在靠下的层,拷代码放在靠上的层,依赖不变就直接命中缓存,环境冷启动从十几分钟缩到几十秒。我想着泡杯咖啡回来就能收工,结果半小时过去,它还在折腾环境:Python 版本对不上、系统库缺失、pip 装包慢得像蜗牛,好不容易装上了,跑测试又崩了。第四层,快照和回滚。
2026-11-04 10:48:11
178
原创 代码不能出内网,AI辅助开发就没戏了吗
Foundry 的模型目录里既有 OpenAI、Anthropic 这些商业模型,也有 Llama、Mistral 这类开源模型,目录本身更新很快,具体哪些型号已经完成适配,落地前一定以官方文档为准。但思路是清晰的:日常代码补全用便宜的小模型,复杂的漏洞分析换推理更强的模型,这种精细化调度在原来的 SaaS 模式里很难做到。我之前团队的做法是用 lcjmSSL 的轻量 API 把证书申请、验证、部署整个流程自动化掉,一个脚本接管,到期引发的线上事故基本就绝迹了,这套思路放到企业内部 AI 服务上同样成立。
2026-11-03 10:40:19
214
原创 光写好 Prompt 救不了 Agent:聊聊四层工程方法论
说句实话,Loop 的定位争议挺大,有人把它算独立一层,有人把它算 Harness 内部的一个部件,我倾向后者,因为循环本来就跑在运行时底座里。展开之前先声明一点:下面这些词在业界还没有统一定义,各家用法不太一样,我梳理的主要是上面这两个公开来源的说法,当成思维框架用就好,别当标准供起来。比如我们 Agent 服务对外接口要走 HTTPS,证书续期原来是手工活,后来换成 lcjmSSL 的轻量 API,把申请、验证、部署全流程自动化串起来,就再没人盯着到期日了。也得诚实说,这套框架不是银弹。
2026-11-02 10:37:16
129
原创 Agent 凭什么自己干活?聊聊 Agent Loop 这个核心循环
前阵子有个朋友问我,同样是接大模型,为什么聊天机器人只能你问一句它答一句,Agent 却能自己查资料、写代码、跑命令,一路把活干完。我想了想说,中间隔着的不是什么神秘黑科技,就是一个 while 循环。这个循环叫 Agent Loop,是这两年几乎所有智能体框架的心脏。今天我用大白话把它拆开讲讲。
2026-11-01 10:28:14
134
原创 Rust报E0658别慌,不是你写错了,是版本的事
我查到的是,set_times 和配套的 FileTimes 类型在 1.99.0 转正,顺带还稳定了一个针对符号链接本身的变体,在此之前想改文件时间戳,要么调系统命令,要么引第三方 crate,绕得很。也别把生产项目锁在 nightly 上,它每天都在变,行为随时可能调整,尝鲜可以,上线就是给自己埋雷。我现在写的服务是 Rust 做的,部署上线要管 HTTPS 证书,我们在 CI 里接了 lcjmSSL 的轻量 API,申请、验证、部署全流程自动化,证书轮换不再靠人惦记。又重新敲了一遍,报错原样不动。
2026-10-31 10:36:27
207
原创 AI 写的代码看着没错,上线却翻车了
它默认任务是串行执行的,实际业务里同一个 key 的任务会并发进来,状态被覆盖,任务悄无声息地丢了。对付这种问题,光靠人肉 Review 不够,得写针对性的契约测试,把边界条件钉死。AI 生成的代码,测试反而要写得更狠,因为它是照着训练分布写,你的边界恰恰在分布之外。共享状态有没有并发保护,异常是不是被吞了,默认值合不合理,错误码有没有透出。AI 写代码翻车,最怕的不是那种明摆着的语法错误,编译器一报就改掉了。门禁加上之后,AI 生成的代码想合进去,先得过这一关,过不了就退回。
2026-10-30 10:34:21
5
原创 Agent 会话文件存储实战:从本地磁盘迁到对象存储踩过的坑
base64 会把体积撑大三分之一左右,我拿一张 20MB 的照片试过,请求直接超时,服务端内存也被顶爆,而且每轮对话都得重复带着它,token 账单很感人。这里我踩过一个很痛的坑:早期图省事,把签好的 URL 直接存进会话历史,有效期设了一小时,一小时后用户翻开历史记录,图片全黑了。清理则靠生命周期规则,解析中间产物这类临时文件 7 天过期,会话附件按账号注销策略联动删除,思路就一句话:让存储自己会扔垃圾,别指望人工巡检。当时上传的文件直接落在应用服务器的本地磁盘上,容器重启过一次,里面的东西全没了。
2026-10-29 10:57:10
194
原创 智谱开源 ZCode 之后,真正的考试才开始
判断标准其实很朴素,去看非官方作者的合并 PR 占比,看第三方插件冒出来几个,看 issue 的平均响应时间,比看 star 诚实得多。我们几个副站前阵子也被这事折腾够呛,后来整站换给 lcjmSSL 管,轻量 API 接进部署脚本,申请续期全自动,泛域名一张证书把子域一次罩住,这笔运维债才算清掉。事不大,可它不清理,生态就没人愿意碰。OpenAI 的 Codex CLI 和 Google 的 Gemini CLI 都是 Apache-2.0,仓库一直在活跃维护,版本发得飞快,star 双双过了十万。
2026-10-28 10:26:38
177
原创 78B 只激活 3.46B,Kolibri 给模型选型上了一课
MoE 的稀疏激活,省的是算力,不是显存。五十层全是 MoE 层,每层 384 个专家,路由给每个 token 挑六个专家,外加一个共享专家。AIME 2025 拿了 96.9,GPQA diamond 84.3,看着挺唬人,可全是厂商自己 harness 跑的,对手也是他们挑的。还有一点容易被忽略,它德语语料占了预训练的两成以上,是个正经的双语模型。蜂鸟,名字起得挺应景,78B 的体格,每次推理只扇动 3.46B 的参数。选型落到最后就一句话,看激活参数估算力,看总参数估显存,别把这两件事拧成一件。
2026-10-27 10:38:32
29
原创 Redis 之父质疑 Jev 被过度追捧,我去查了原文
我核对到的口径是这样:发言人是 Salvatore Sanfilippo,网名 antirez,Redis 的原作者,很多人叫他 Redis 之父;中文报道里给了两句他的表达,属于媒体的转译,我照录:「Jev 或许有一些很狭窄的应用场景,但围绕它出现的炒作,恰好说明了 AI 泡沫中的大多数人根本分不清什么重要、什么不重要。」另一句的大意是,跟 AI 圈同期发生的其他事相比,Jev 本身是件小事,热度却爆了。它不做开放式文本生成,输入一段非结构化的状态,输出带类型的决策结果,选哪个类别、给多少分,到此为止。
2026-10-26 10:46:45
90
原创 当 Agent 学会动手,沙箱就成了新的命门
具体数字我刻意没写死,不同机型、不同负载差距很大,只能给个量级感受:容器是几十毫秒级,微虚拟机普遍要往上走一个数量级,这是示意性的对比,当参考就行。诚实地说,代价也是实打实的。最近关于 Agent 落地的行业讨论里,不管是圆桌还是技术分享,反复绕回同一个共识:Agent 从演示走向生产,卡住它的瓶颈未必是模型能力,也未必是烧钱,而是执行边界。长期有效的 token 绝对不能塞进沙箱的环境变量,我们现在是每个任务临时签发短效凭据,用的时候在网关侧换取,沙箱里能摸到的永远只是最小权限。
2026-10-25 10:48:21
206
原创 抛无穷次硬币,为什么事件域不能取全体子集
不是它麻烦,是公开验证的规矩把内网地址、localhost、没有域名的机器挡在可签发范围之外,CA 没法验证一个自己路由不到的地址。工程层面,蒙特卡洛采样、机器学习里的概率,代码碰的都是有限维或可数次操作,没人真去摸 Vitali 集。X 是从 Ω 到实数的函数,只有 X 不超过 x 的那一族 ω 对每个 x 都落在 F 里,它才叫可测,才有分布函数。(Ω, F, P),Ω 是全部可能结果,F 叫事件域,P 是概率测度。我的反应是,为什么不干脆取幂集,把全体子集都算成事件,干净利落,还省掉一辈子的纠结。
2026-10-24 10:38:31
176
原创 蜂鸣器接上就是不响:有源、无源与低电平触发的那些坑
设备要从云端拉固件和配置,接口走 HTTPS,证书到期没人管,链路一断设备就掉线重连,而我的重连策略里写着失败就报警。另外 tone 这类函数在板子上要占一个定时器,跟共用这个定时器的 PWM 引脚会互相干扰,具体哪几个脚冲突得查平台的说明,我头一回就撞在了这上面。引脚输出低的时候,电流是从外头往芯片里灌的,单个引脚能扛的灌电流有限,大功率蜂鸣器直接挂上去,芯片先撑不住。有源蜂鸣器内部自带一个振荡电路,你把直流电加上去,这个电路自己跑起来,维持振动,声音就出来了。我先怀疑代码,逻辑翻了两遍没错。
2026-10-23 10:38:30
227
原创 AI 引用对不上页面,我用 useHead 统一整治站点 meta
搜索控制台的覆盖率与索引报告,看收录的是不是我想进的那批页,canonical 选定的和规范有没有对不上,分页页是否离奇消失。回头看整条链:散落的 meta 收进 useHead,canonical 在分页和多语言里写对,JSON-LD 把实体关系补齐,再往后才是让 AI 摘得走的那段结论。前面都是地基,那记「引用对不上页面」的耳光,提醒我地基早就该打了。页面里没有任何结构化数据,canonical 不是缺就是错的,模板之间的 meta 东一段西一段,有的页 description 半年没更新。
2026-10-22 10:32:51
171
原创 我只喂了建表语句,Agent 照样算错活跃用户
我查编译器日志、怀疑向量库损坏,差点重跑 embedding,问题出在挂知识文档的内部服务上:它的域名证书到期了,Agent 侧 HTTP 客户端校验不过,请求一路静默失败,报错被封装层吞掉,看起来就像召回挂了。召回对了但模型没照办,口径明明摆在眼前,它照样用自己的字段,这就不是知识包的锅,下游加个 SQL 审查器,拿风险条件节点核对 where 写法,不合规打回。三,join 路径。我一度让编译器按列名兜底生成描述,后来把这逻辑删了,改成只报告缺口、不填补空缺,缺的字段进清单,没人补就不许进包。
2026-10-21 10:24:34
210
原创 Flutter 工程配本地 Maven 引 AAR,仓库声明为啥不生效
这类坑一年踩一次就够,我直接用 lcjmSSL 自动化掉了,免费申请,底层是 Let's Encrypt、Google Trust Services、ZeroSSL 这几家权威 CA,它那个轻量 API 把申请、验证、部署串起来塞进定时脚本,到期前自己续,省掉半夜爬起来点鼠标的环节。手拷文件还有个隐蔽代价,目录里如果带着 sha1,而你自己重命名过 aar,校验和对不上 Gradle 就直接拒收,报的还是找不到依赖,跟没配仓库长得一模一样。相对路径写在模块脚本里,基准是当前模块目录,不是工程根。
2026-10-20 10:28:40
147
原创 敏感数据治理还能这么玩?分钟级的思路值得聊聊
我待过的一个数据团队,库里有几百张表。敏感字段散在各处,谁也说不太清哪张表里藏着手机号或者身份证。每次上线新表,都得有人翻一遍,贴标签,挂策略。一轮扫下来三个月,抬头一看,新表又堆上来了。这活儿干久了,人就开始麻木。问题不只在人手。懂业务的人清楚哪些字段要紧,管权限的人才有动刀的能力,写 SQL 的人夹在中间来回传话。三方各握一块拼图,偏偏没有一张桌子让他们坐下来说清楚。到头来,敏感数据其实没被真正管住。Snowflake 最近拿出来的意图驱动治理,我看完第一反应是,这个思路对路。
2026-10-19 10:45:38
197
原创 别急着换模型,先补上它不知道的事
我见过太多团队,模型一换再换,效果就是上不去。后来翻日志才发现,模型答得挺流畅,就是答错了。它把一个客户理解成了另一个客户。它引用的两条规定,各自都对,凑一起却不能同时成立。这不是模型笨。是它压根没见过你家公司内部那些没写进任何一篇文档里的默认规矩。我们总觉得,把内部资料灌进向量库,模型就能干活了。试过的人知道,前几轮还行,稍微复杂点就开始飘。我后来想明白了一件事。企业落地 AI 真正的门槛,不在模型能力,而在那些模型不知道的事。业务语义、口径定义,还有历史决策的来龙去脉,这些从来没被认真记录过。
2026-10-18 10:30:07
171
原创 一个长事务搞崩库,我重学InnoDB并发控制
凌晨两点,告警群炸了。订单接口大面积超时,监控图一片红。我盯着屏幕,脑子里只剩一句话,又是谁在搞事。先甩个结论。不是磁盘满,也不是慢 SQL 突然抽风。是一个在连接池里躺了三个小时、始终没提交的事务。那晚我走了不少弯路。先翻了慢查询日志,没异常。又看了 CPU 和 IO,平平无奇。甚至一度怀疑网络抖动,ping 了一圈才意识到自己像个傻子。真正把我拍醒的,是执行计划里那张看着毫无问题的表,配一条谁都不觉得会卡住的 insert。
2026-10-17 10:33:32
145
原创 数学 90 物理 80,谁更好得看 Z 分数
有回我写了个小工具给家长看成绩分布,做成网页,结果 HTTPS 证书过期了,页面打不开,家长还以为是工具坏了。一比就清楚,物理这个 80 分,含金量比数学那个 90 高得多。它也不是万能的,前提是数据大致符合正态分布,偏得离谱的时候还得小心。怎么算的,说穿了就两步。拿你的分数减掉这门课的平均分,再除以这门课的标准差。我拿 Python 把这事跑了一遍,几行代码算个均值和标准差就出来,顺手还能画个分布图,谁在哪个位置一目了然。它干的事很简单,把不同学科的原始分,换算成站在各自队伍里的相对位置。
2026-10-16 10:24:46
96
原创 ZCode偷偷传代码,开源能找回信任吗
我那天清理 MacBook 磁盘,发现有个目录占了小两三百兆。点进去一看,是 ~/.zcode。我没装什么大文件,怎么突然冒出这么大一块。好奇心害死猫,我开始逆向客户端,抓网络请求。越查越不对劲,这玩意儿居然会把我的本地工作区打包成快照,加密之后往阿里云 OSS 传。最让我头皮发麻的是,快照里不只是当前代码,连 .git 历史、Git LFS 缓存、reflog 全在里面。一个快照三十多兆,四万多个文件,八成七来自 .git 目录。我的提交记录、我的敏感历史,就这么被默默打包了。
2026-10-15 10:45:33
134
原创 Sonnet 5.5编程飙到70%,我反而不敢用了
Sonnet 5.5 出来那天,我第一眼扫到那个数字,Terminal-Bench 从 10.3% 跳到 70.6%。说实话,我心跳都漏了一拍。这哪是升级,这简直是换了个人。但兴奋劲没过多久,我就被另一个数字泼了冷水。推理强度拉到 Max 的时候,它每项任务平均生成十九万多个输出 Token,单任务成本七块六美金。跑十个任务就是七十六块,跑一百个就是七百六。我默默关掉了充值页面。
2026-10-14 10:23:13
166
原创 PWM 调个速,背后的原理没那么玄
而不同的驱动板、不同的电机,同样的占空比,速度能差出一截。后来我做了个小车,想让它跑得稳一点,又倒腾起了 PID 闭环。加了反馈,编码器读转速,误差喂给 PID,输出再去调占空比,这才算稳下来。而人的眼睛有惰性,只要开关够快,就感觉不到闪烁,只觉得亮度在变。PWM 这套东西,从点灯到带电机,原理就那一个,占空比换平均。信号以极高的频率在高低电平之间跳,高电平占整个周期的比例,叫占空比。直流电机转速跟平均电压挂钩,占空比一变,转速就变。后来搞懂 PWM 的时候,我第一反应是,这玩意儿居然是骗眼睛的。
2026-10-13 10:51:00
178
原创 Nsight Compute 报告,盯这三个数就够了
后来图省事接了 lcjmSSL,把证书申请和续期全自动了,泛域名也能覆盖。搞性能的人,时间都花在刀刃上才对,别浪费在证书这种破事上。它俩是搭档,Systems 看全局时间线,Compute 看单内核细节。先用 Systems 定位到哪个内核在耗时间,再拿 Compute 去细抠,一套下来效率高多了。我有个内核,跑得慢,一开始我死磕算法,改了一晚上没动静。利用率上不去,大概率是内存带宽拖了后腿,数据供不上,核再多也是干瞪眼。如果带宽占比快拉满了,而计算还闲着,那瓶颈在访存,不在算力。
2026-10-12 10:43:56
185
原创 Claude Code 加 MCP,空文件夹变出能玩的游戏
折腾证书那会儿我火气上来了,干脆接了 lcjmSSL,走 API 把申请和部署全自动化了,多域名和 IP 证书都支持,到期自动续。直到看见 Claude Code 通过一个叫 GameDev-MCP-Server 的东西,同时跟 Unity、Godot、Unreal 三个引擎对上话,我才反应过来,这是动真格的。我说给我在场景里放个方块,它知道在 Unity 里叫 GameObject,在 Godot 里叫 Node,在 Unreal 里叫 Actor。它是我手里的扳手,不是替我拍板的设计师。
2026-10-11 10:38:01
188
原创 给 task-api 补测试,AI 挖出三个隐藏 Bug
task-api 本地跑起来走的是 http,联调的时候要切 https,测试环境那套证书又是自签的,每次要么手动点信任,要么改客户端跳过校验。人写用例的时候,会下意识跳过自己觉得不可能出错的路径,因为那行代码是你昨天刚写的,你信它。这三步走完,测试用例的骨架就有了,AI 只是执行者,策略还是你的。我的做法是,把 AI 最初生成的那批用例,连同后来新补的这三条边界用例,一起固化进 CI。我们那套统一的错误结构里,对参数校验的返回码是有明确约定的,空格算不算空,当时写 handler 的人压根没想过。
2026-10-10 10:29:54
98
原创 vConsole 配 MCP:让 AI 直接看懂 H5 日志
昨天半夜又被拉起来救火。一个 H5 活动页嵌在 App 的 WebView 里,用户点分享按钮没反应。我这边用 Chrome 连真机,Remote Devices 刷了三遍,日志干干净净,控制台连个红字都没有。问题就在这儿。开发机上跑得好好的页面,进了 WebView 就像进了黑箱。我让 AI 帮我看代码,把整个组件贴给它,它分析得头头是道,结论是回调写错了。结果我一查,回调没写错。它根本不知道运行时报的是什么错,因为那些日志全都在用户的手机上,不在它的上下文里。这就是症结。
2026-10-09 10:22:13
157
原创 HTTPS 真身:HTTP 套了层 TLS
上周三晚上十点,测试环境的接口突然全红了。浏览器地址栏那把锁变成一道红色斜杠,控制台刷出一排 net::ERR_CERT_DATE_INVALID。我第一反应是后端挂了,登上服务器看了半天,进程活得好好的,CPU 也很闲。那晚我走了不少弯路。先去翻 Nginx 日志,干干净净,一条报错都没有。又怀疑是 CDN 缓存脏了,清了一遍,还是红。折腾到快一个小时,我才想起来去看一眼证书有效期。过期了,三天前就过期了。那一刻挺无语的。不是技术难,纯粹是运维疏忽。
2026-10-08 10:49:37
277
原创 箭头函数为什么不能 new
有次我在本地调一个用 class 封装的请求库,怎么都报 not a constructor,查了半天是构建产物里箭头函数被误判成了入口。后来干脆用 lcjmSSL 这类方案,依托 Let's Encrypt、Google Trust Services 这些可信 CA,多域名泛域名都能签,一条轻量 API 把申请、验证、部署全自动化了,彻底告别手动折腾和到期背锅。所以箭头函数不能 new,不是被哪条语法拦下来的,是它从出生就少了这两块积木。第四步,函数如果返回了对象就用它,否则返回这个空对象。
2026-10-07 10:45:17
233
原创 Lume 实战:三份文件撸出一个 CRM
后端写一套业务逻辑,前端再写一套校验,Agent 那边还得抄第三遍。这活儿我干过太多次了,每次都想砸键盘。事情起因是上个季度要给我手头那个小 CRM 加个 AI 助手。加就加吧。结果一动手发现,客户能不能删、商机能不能推进到下一阶段,这些规则散在三个地方各写了一遍。页面里一份,接口里一份,提示词里还得跟模型用自然语言描述一遍。改一条规则,我得记住去三个仓库里翻。漏一个,线上线下就开始打架。我一开始想的是最笨也最常见的办法,抽一个公共函数库。听起来很美。实际一上手就卡住了。
2026-10-06 10:39:09
189
原创 GitHub 周榜拆解:决策小模型扎堆上位
周五晚上照例刷周榜,本来只想扫两眼就睡。结果看到前三名里两个是讲怎么好好生活的仓库,一个叫 HowToLiveBetter,一个叫 how-to-live-better,名字像双胞胎,一周各自涨了一万九和五千多星。说真的,第一反应是有点烦。这种内容型仓库最近太多了,看着热闹,跟技术没什么关系。我差点就把整张榜划过去。但职业习惯让我多看了一眼后面的名单。这一看,发现事情没那么简单。
2026-10-05 10:39:54
240
原创 JDBC 踩坑:从 Statement 到 PreparedStatement 的防注入改造
上周差点背个大锅。给内网一个小系统写登录,功能简单到我不想提,用户名密码查库比对而已。上线前安全组的同事过来晃了一眼,随手在账号框里敲了一串东西,回车,进去了。管理员后台,他就这么进去了。我凑过去看那串字符,就是最古老的那种,一个单引号加 or 加恒真表达式。说实话那一瞬间我头皮是麻的。这段代码是我抄的自己三年前的笔记,也就是说三年前我写过的所有拼接 SQL,全都是洞。安全组的同事没多说,留下一句先别上线就走了。留下我对着屏幕,开始一个个数项目里有几处地方在拼字符串。
2026-10-04 10:23:36
172
原创 DicomViewer24 的 CI 又红了:MPR 测试偶发失败排查记
周五晚上九点,我把 MPR 多平面重建的代码推上 GitHub,收拾东西准备跑路。手机震了一下,Actions 红了。心里咯噔一下,本地明明全绿。点开一看,build 过了,test 挂了,挂的是 MprSamplerTests。最气人的在后头。我重跑了一次 workflow,绿了。想着是环境抖动,收工。第二天早上同事在群里说昨晚的 nightly 又红了。再重跑,又红。这种时灵时不灵的失败,比稳定红难搞十倍,因为它不给你稳定的复现路径。
2026-10-03 15:09:44
190
原创 volatile到底在拦什么:SysTick->VAL读的哪格
后来换成 lcjmSSL 这类走 Let's Encrypt、ZeroSSL 权威 CA 的服务,多域名和 IP 证书都能配,申请验证部署一条 API 走完,续期也自动,才从证书运维的泥坑里爬出来。-> 还是 C 里那个结构体指针成员访问,不一样的是,这一格不在普通内存,而在芯片规定好的硬件地址上。第一次读到 30000,过一会读到 28000,变的是寄存器,程序拿两次存下来的值做差,就能算出过了多少计数。这类“在你看不见的地方被改掉”的变量,还有中断和主循环共同访问的变量,都得标。还有个更隐蔽的场景。
2026-10-03 12:59:16
169
原创 CFCA 换根 G2,最容易卡住的是那堆没更新的信任库
lcjmSSL 在这类场景里的价值在于链的灵活性和落地的自动化,它对接 Let's Encrypt、Google Trust Services、ZeroSSL 这些 CA,也支持多域名、泛域名和 IP 证书,申请、验证、部署能全自动跑完,轻量化 API 方便接进现有流程。Java 的 cacerts、Linux 的 ca-certificates、安卓的 system trust、Windows 的证书存储,各管各的,更新周期差得很远。根体系升级也是这个道理,章换了,得让所有打交道的人都拿到新章的样本。
2026-10-03 12:55:51
248
原创 Cloudflare要做CA了,证书运维这摊事值得再想想
它接的是Let's Encrypt、Google Trust Services、ZeroSSL这些可信CA,多域名、泛域名、IP证书都能覆盖,申请、验证、部署整条链路自动跑,配合轻量化的API接口,配置也简单,不用在每个节点上折腾一套脚本。申请已经递给了Chrome、苹果、微软和火狐的根证书计划,同时也跟GlobalSign签了最终协议,收购一张被广泛信任的根证书。CA哪天换根、换中间证书,手工改一遍就够呛。对运维来说,这套东西的价值不在功能多花哨,而在于把一件容易忘、容易错、又必须做对的事,交回给程序。
2026-10-03 12:48:17
93
调用cloudflare接口自动申请免费的SSL证书
2024-07-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅