文章分类
AI 67 篇
- AI 生成的知识库,到底怎么保证质量
- 年过不惑之年的老程序员,在 AI 时代怎么重新校准
- JEV:一个不会说话的 AI 模型,专门给软件当"可靠零件"
- 逆流而上:AI 时代程序员的深度学习法
- AI 时代怎么读代码:把 AI 当导游,别当替身
- AI 时代知识到底怎么存、怎么找:一个后端工程师的知识库工作流
- LLM 的 KV Cache:一个时间戳,能让你的账单比不开缓存还贵
- 大一新生 AI 编程快速上手指南:用 OpenCode 和 Cursor + Cline 写出第一个程序
- 上下文管理之渐进式披露:别把整座图书馆搬进模型的脑子
- AI 时代的 Contact Center,正在从接电话变成解决问题
- deepseek-harness 有什么不一样:一个"没有核心"的 Agent 框架
- AI 是运维的手,人是运维的脑
- AI 让人更聪明还是更笨:分水岭在“生成的那一步”
- 为什么 AI 写的文档废话那么多
- 别让 AI 只会说“你是对的”:我们需要诤友,不需要“好好先生”
- 如何管理 AI Agent 的记忆之三:让 mem0 给 AI Agent 装一层"通用记忆"
- 如何管理 AI Agent 的记忆之二:让 Claude Code、Codex、OpenCode 共享同一份记忆
- 如何管理 AI Agent 的记忆之一:既记得牢、想得起,又不烧钱
- 用 AI 做好计划之三:配个不睡觉的监工
- 用 AI 做好计划之二:趁手的工具与 Skill
- 用 AI 做好计划之一:把 PDCA 环转起来
- 比起让 AI 写代码,我更想让它替我干些脏活杂活
- 重读《Building Effective Agents》:怎么才算构建了一个"高效"的 AI Agent
- MCP 大改版:从"打电话"变成"发快递",附一个高德天气 MCP Server
- AI 的“操作系统”:Harness 工程如何让模型自我改进
- AI Agent 孵化器:用一个父 Agent,批量造出贴身服务的子 Agent
- 验收用例,才是驾驭 AI 编码的那根缰绳
- 重读软件设计的哲学:AI 能替我们把复杂性消灭掉吗
- LightRAG 精读:既然有了 GraphRAG,为什么还要"轻"一下
- MCP 还是 CLI:AI Agent 到底怎么跟已有服务打通
- 完全由 AI 生成的代码,我越看越心惊
- 别让 AI 替你编简历:用 DDD 把求职材料建模
- AI 内容洪水来了,人怎样不被淹死
- 给全栈程序员的 Codex 实战手册:别再只会写 Prompt 了
- 让 AI 如你如愿:从 Harness Engineering 说起
- AI 不只是 LLM 和 NLP
- 程序员如何看待 AI 取代焦虑
- AI Agent 会越来越像人吗?从 Tool、Skill、Memory 到 Soul 和 Rules
- 蒸馏:AI 世界里的"吸星大法"
- AI Agent 为什么会越用越懂你?从 OpenClaw 的“养龙虾”聊起
- 再聊 nanobot 的记忆机制:从消息计数到 Token 预算
- AI 编程时代,Scrum 该怎么变?
- nanobot 的记忆机制:它为什么能记住你的习惯和喜好?
- 用 pgvector 做 RAG:别急着上 Pinecone,你的 PostgreSQL 就够了
- Claude 提示工程最佳实践:从"能用"到"好用"的距离,可能就差一个系统提示词
- 职场工具箱:用 AI Agent 学职场英语——早上学,晚上测,第二天复习
- 如何让 AI 真正“懂”你的项目?一套可落地的项目知识包
- AI 时代,我为什么还要写作
- AI 时代的软件工程正在发生什么?
- 从手搓 Workflow 到 LangGraph:AI 流程编排的两种路径
- 用 AI Agent 处理复杂流程:先写 Workflow,再写 Prompt
- 如何打造个人与项目知识库:从全文搜索到 RAG,再到 Claude Skill
- Agent Skills:给 AI 助手装上"技能包"
- AI 辅助编程的三大护法:可验证性、可观测性、可理解性
- Claude Code 使用技巧与成本控制指南
- Prompt-as-Code:当 Prompt 不只是"话",而是可执行的"程序"
- Prompt 工程已死,上下文工程当立
- 从 PDCA 到 PAOE:AI Agent 大脑里的循环
- RAG 进阶指南:别只盯着向量数据库,Elasticsearch 才是扫地僧
- 用 Eino 构建 AI Agent:Go 开发者的 LangChain 终于来了
- 2026 年一人公司最值得投入的开源项目
- Cursor 的三板斧:Rules, Commands 与 Agent Skills
- Tips for Vibe Coding with Cursor: 别让 AI 猜你的心思
- Vibe 编程的新范式:在 AI 时代重新定义软件开发
- 用敏捷开发的思维构建 AI 增强的循环系统
- AI 把字幕组的活都干了
- 程序员会不会被 AI 取代
audio 1 篇
Career 1 篇
English 1 篇
Journal 305 篇
- Start small, stay curious
- 别让经验把你坑了:老程序员的"去芜存菁"
- 人到中年,最可贵的领悟是克制
- 焦虑与沉没成本:写给夜里睡不着的自己
- 人格的力量:知识不再稀缺之后,靠什么立得住
- 为什么要走出舒适区:换的是术,守的是道
- 卷不动又躺不平:AI 时代,普通技术人的破局姿势
- 中台怎么做才不会没落
- 情绪稳定有多难
- 职场工具箱之事上炼:最难搞的人和事,是你最贵的一台压力测试机
- 职场工具箱之抬轿子与撤梯子:捧你的人和坑你的人,常常是同一个
- 为什么职场年龄歧视愈演愈烈
- 一个时代的背影:写在朱镕基总理逝世之际
- 永远不要失去好奇心
- 用奖惩治拖延:给自己列一张愿望清单和一张惩罚清单
- 流程与人,到底谁更重要?先分清护栏、记忆和仪式
- 开会的艺术之一:在开会时实时分享 Agenda 和会议记录
- 承认平凡,但不要默认平庸
- 人不可有傲气,但不可无傲骨
- 选择困难症怎么解
- 关于密码学,我们到底该知道些什么
- 用穷举法吃透问题:把碎片经验炼成体系能力
- 拖延症又犯了,怎么办
- AI 写的代码:华丽袍子下面,也可能都是虱子
- 临床八年制女生,接下来七年怎么学习和科研
- 在你懈怠时,如何让别人推你一把?
- 狭路相逢勇者胜
- 打翻的牛奶,别再喝第二遍:给悔恨的行动手册
- 老程序员的护城河:思想与方法,比技巧更耐用
- 别用别人的错误来惩罚自己
- 谁能无悔:别让悔恨把你拖进深渊
- AI 写得太快,肉眼看不过来:当 Code Review 成为新瓶颈
- 知之非艰,行之惟艰:重读"知行合一"
- 2026 下半年非技术书单:先把葛文德读完
- 给予比接受更幸福
- 步履不停:人生总是慢那么一拍
- 一本作文书的来路
- 心智的五个台阶:别让年龄长到四十,心还停在巨婴
- 读人生的智慧:叔本华的话能信几分
- AI 时代,学习不是少了,而是重心变了
- 文化也会腐化:从阿里到 Zoom,伟大公司怎么让价值观活下来
- 远离 AI 一天又怎么样
- 影响圈和关注圈:一个被我反复忽略、又反复救我的坐标系
- 在 AI 时代慢下来:从《思考,快与慢》说起,怎么把脑子用回来
- PARA 方法:给数字生活一个四格柜子
- AI 时代的事务管理:从"催我自己"到"指挥助理"
- LLM API 越来越贵,别让 token 像自来水一样哗哗流
- RAG 知识库优化:别让 AI 一本正经地胡说八道
- AI 编程时代,品味比经验更重要
- SPIRE 系列之四:实战 Lab — 用零信任身份替代数据库密码分发
- SPIRE 系列之三:安全性分析与加固清单
- SPIRE 系列之二:架构深度解析
- SPIRE 系列之一:从 Workload Identity 到 Zero Trust
- 一次 HTTPS 证书报错排查:为什么会出现 `unable to get local issuer certificate`
- 从 AWS KMS 到用户私钥托管:把加密这条链路一次讲清楚
- 把文章一键变成播客:我的 side project `lazy-podcast-mate`
- 驾驭 AI 工程的一些最佳实践:从 Meta-Harness 论文到可落地的工程手册
- CGM 论文讲了什么,咱们又该怎么落地
- 什么是 Louvain 算法——graphology-communities-louvain 背后的那点事
- 给 Cursor、Codex、Claude Code 用的 AI Skill,到底该怎么测
- RRF 倒数排名融合:RAG 里那个看起来土、却一直没被换掉的小公式
- 给代码仓库造一个 DeepWiki:Tree-sitter + Embedding + 图谱 + LLM 的方法论
- 用 Promptfoo 给 AI skill 做体检:评估、测试、质量与安全把关
- 在 Kubernetes 里用 cert-manager + Venafi 自动签发和轮换证书
- Obsidian 加 LLM,个人知识库的正确打开方式
- Gevent 是什么,和 asyncio 一起用有什么坑
- 证书这活儿:PEM/JKS/P12 怎么选、免费证书哪家强、自动轮换怎么搞
- AI Agent Loop 讲透:以一个会自己写博客的 Python Demo 为例
- 演讲的认知科学:别再浪费彼此的时间了
- Workload Identity:别再把云上身份塞进 Secret 里了
- 职场工具箱之 Radical Candor:怎样既不当老好人,也不当刺头?
- 职场工具箱之利益-立场拆分:为什么"我不同意"背后可能是同一目标?
- 职场工具箱之 RICE / ICE:如何把优先级从"拍脑袋"变成"可讨论"?
- 职场工具箱之 OKR:为什么"很努力"≠"有产出"?
- 服务稳定性之 LMAT 和 USED:别等着报警, 先学会"看病历"
- 职场工具箱之向上管理:不是拍马屁,而是帮领导做决策更容易
- Operator + Terraform 对传统运维的改变
- 职场中那些“活得最久”的方法论缩写
- 最通用的 6 大演讲框架
- 编程的未来
- 别了, 2025
- AI Agent 设计与落地
- 漫漫人生路
- Java 老矣, 尚能饭否
- 银弹来了吗?
- 生产服务器安全挂载指南之 mount 选项
- 程序员的未来在哪里
- 用 AI 实现你的 OpenAPI
- 让 Java 程序告别繁文缛节
- TOCTTOU - 时间差中的漏洞
- 如何高效地使用 Cursor 来编写代码
- 不要让快餐与短视频改变了我们
- 寒冬来临之时要苟住
- 痛苦+反思=进步
- 知识工作者如何构建自己的知识库
- 数学之美-沙米尔密钥分享法
- AI 编程时代,更加需要 BDD
- Go 应用程序的代码组织
- Context in Go
- About separation of concern
- SoC code structure in golang
- MDD for SRE
- Ending TLS Client Authentication Certificate
- how to learn rust in 7 days
- chatgpt都知道, 我们还要读书写书吗
- 程序员爸爸写给女儿的七封信
- 如何应对一团乱码
- 我和你 - 我与大模型
- 安全需要隔离, 隔离才能安全
- 记不得那么多就压缩一下吧
- Deal with the Impact of Vibe Coding
- Software 3.0 编程范式的革命来了
- Make your PPT by Marp
- 待办清单那么长, 时间那么少
- 焦躁的世界中需要一点轻松与幽默
- 再谈 SPIFFE - 最底下的乌龟
- 微服务之数据建模
- 手撸 Text2SQL 应用
- 环境会改变人, 所能先经营好你的小环境
- Easy JWT implementation by Casbin library
- 什么是 PKCE
- open source community maturity
- 用第一性原理做好自己
- 搞懂 OAuth 还得用代码说话
- ChatGPT 可以做的 50 件事
- 用 LangChain 为你写总结画思维导图
- 先填表单还是先聊会儿天
- Nacos and its C++ SDK
- Use Sops to manager your accounts
- Poetry 又一个 Python 依赖管理工具
- Improve efficiency by Vaadin
- 打造最适合自己的即时贴和笔记系统
- 别了2024,你好2025
- 我在创业公司这一年
- 伸缩的艺术
- 编程江湖中的道与术
- pydantic 对象的陷阱
- 编程语言的边界
- 天下文章一大抄, 编程语言也是
- 医疗器械的网络安全怎么办?
- Good prompt for AI-assisted programming
- 软件开发三剑客 DDD, TDD and MDD
- What AI-assisted programming can do for programmers
- 如何将 Jetson Nano 加入 Kubernetes 集群
- 可观测性工程
- 我的 R-CAR 提示框架
- GStreamer 的插件黑名单
- cypher vs. sql
- asyncio summary
- 利用 langchain 和 LLM 来给 PDF 做总结
- 用 logfire 提高应用的可观测性
- 挖矿病毒来势汹汹
- 改进你的提示工程
- How to ask a good question
- 使用 SymPy 解代数方程
- 图数据库memgraph 与其查询语言 cypher
- 为初等数学建立知识库
- 如何计算二叉树所有路径上的数字和
- 你的软件系统安全吗
- 密码到底怎么存放才安全?
- Deep Stream Inference
- 独立开发从哪里开始
- AI 写程序靠谱吗
- 神经网络的 Hello World - 手写数字识别
- 旧开发板之废物利用
- DeepStream 入门一
- 换车记一
- Celery - Distributed Task Queue
- 正则表达式助手
- Ansible Role
- 编码转换助手
- 长恨此身非我有
- 问自己的问题
- C++ lambda 的那些坑
- 用 docker compose 重构我的个人网站
- 归来半生, 仍是少年
- NVIDIA DeepStream 简介
- 如何快速验证 GStreamer Pipeline?
- 医疗影像 AI 带来的变革
- 物联网的世界里 MQTT 独领风骚
- 造轮子的快乐 - gst-pipeline-verifier
- 什么是好代码
- 造轮子的快乐 - 我的番茄钟
- 大龄程序员尚能饭否
- GStreamer 基础教程三: 动态管道
- GStreamer 基础教程二: 核心概念
- GStreamer 基础教程一: Hello World
- Cpp 语言中用什么回调方法最佳
- GStreamer Probe 探针的妙用一
- 透过现象看本质
- 媒体能力协商
- 接受不完美,把握平衡之道
- 互联网没有记忆
- 双赢思维
- 篮球之道与团队建设
- 用 GStreamer 使用 HLS 快速搭建直播系统
- 我家大门常打开
- 一直在路上
- Delivering Happiness
- 敏捷开发方法回顾
- gstreamer with webrtc
- 到了要说再见的时候
- Not the one I want to be
- 移动平均和趋势预测
- 带宽估计需要带宽侦测
- Chaos engineering
- Visit and Overload Pattern
- chatgpt 会改变世界吗?
- father-in-law passed away
- 弱网条件的模拟
- enable_shared_from_this 的坑
- How to analyze Network Packets by Python
- 别了, 2022; 你好, 2023
- OCR 竟然还要收费
- 天下没有不散的筵席
- 我与母亲隔离在一起
- OKR and English Learning
- 活文档
- 一百多行 Python 代码手写蕃茄钟
- How to take smart notes
- 逝去的微博
- 自动生成流程图
- How to do code review
- Automate as more as possible
- 关于 C++ 面试
- 我的设计模板
- GraphQL 来了,REST 尚能饭否
- Journal on 2022-08-08
- Docker container as build server
- 如何提高代码质量
- WebRTC RTX 笔记
- Curiously recurring template pattern
- Strands: Use Threads Without Explicit Locking
- The rule of three, five and zero
- 道路是曲折的,未来是光明的
- 事件驱动编程与协程的
- 如何快速上手新项目
- 封装很重要,英语也是
- 心情低落时常读的诗
- 在家工作没有想象得那么美
- 对自由的向往
- RTP 通道的多路复用
- Using the Tracing System
- 网络模拟器 ns-3
- 回顾 2021, 展望 2022
- 我给大二新生开的计算机科学书单
- H.264 视频流的解析
- 实时多媒体应用中对拥塞控制的需求
- 此心安处是吾乡
- WebRTC Insertable Stream 的介绍及其端到端加密案例
- 用 AudioWorklet 来做白噪声
- AudioWorklet
- Journal on 2021-08-25
- 视频流的度量指标
- YUV Image format
- The difficult situation and people
- How to read RFC effectively
- 视频编码框架
- About ICE
- 服务器开发检查清单
- 稳定性模式
- Clean Architecture
- Journal on 2021-05-25
- Journal on 2021-05-24
- 未来客户端编程的王者
- 最大的浪费是经验的浪费
- 现代软件神话
- 计算书籍中的经典
- 好莱坞原则和 epoll
- Journal on 2021-05-07
- Journal on 2021-05-06
- 革命人永远是年轻
- Journal on 2021-05-03
- A good SFU - Janus gateway
- 劳动最光荣
- Journal on 2021-04-24
- 用你的浏览器拍照,录音和录像
- Journal on 2021-02-16
- 别了, 2020。 你好,2021
- 丑陋的 JS
- 现代 C++ 改变了什么
- 为什么需要发送和接收缓存
- 应用程序十二要点解读
- Java 程序的参数调优
- 小确幸
- YAML and Mindmap
- 读修改软件的艺术
- 想到哪说到哪
- Virtual memory and malloc info
- 用 Mezzanine 打造你的个人博客
- 一键构建 Redis Cluster
- 写书的乐趣
- 未来可期,还可以想象
- 见贤思齐,见不贤而自省
- 此中有真意,欲辨已忘言
- Journal on 2020-02-21
- Journal on 2020-02-20
- Journal on 2020-02-17
- Journal on 2020-02-16
- How to setup moinmoin as your personal wiki
- Journal on 2020-02-11
- 2020 开弓没有回头箭
- Journal on 2020-01-17
- Journal on 2020-01-04
- 难舍 2019
Life 34 篇
- 职场工具箱之设计评审:它是一场决策会,不是一场汇报会
- 职场工具箱之第一性原理——做事回归本质,做人回归自己
- 职场工具箱之金字塔原理
- 职场工具箱之沟通四要素 CARE 模型
- 职场工具箱之5个Why:别再"查查看"了,学会追问才能找到真相
- 职场工具箱之解决问题五步法:为什么你很忙,但成长很慢?
- 职场工具箱之领导力:没有 Title 也能有影响力
- 职场工具箱之逻辑树:遇到问题先别急着修,先把问题拆干净
- 艾森豪威尔矩阵:为什么你每天忙到飞起,年底却没什么可写的
- 职场工具箱之 5W1H + 8C1D:不会问问题,是新人最大的短板
- 同事不配合,真的是他们的问题吗?
- 人生到底为了什么:一个程序员的健康觉醒
- 职场工具箱之 STAR 面试法
- 用 FAB 法则,让你的方案不再石沉大海
- 职场工具箱之 TNB 表达模型
- 职场工具箱之黄金圈法则: 不是你不行,是你汇报方式错了
- 职场工具箱之 4D 总结法
- 数学之美:四种心形线方程汇总
- 复利的威力
- 图难于其易,为大于其细
- 程序员的学习方法
- 我们需要方法论吗
- 人生需要做减法
- 消除琐事
- MoP 与清单革命
- 当知识的获取变得廉价时
- 泡在水里才能学会游泳 - 前端开发学习之路
- 保持简单没那么容易
- 完成比完美更好
- How to learn new things effectively
- 每天给自己 15 分钟
- 以你自己的生活方式度过你的一生
- Self-conquest is the greatest of victories
- Happy everyday
Memo 2 篇
Method 27 篇
- 产线故障应对:Runbook、时间线、决策树、检查表怎么用才不慌
- 职场工具箱之 BATNA:谈判不是嘴硬,是你有没有"退路"?
- 职场工具箱之困难对话:为什么越怕冲突越容易爆雷?
- 职场工具箱之 MOP/SOP:AI 时代更需要"清单革命"
- 职场工具箱之 SBI 反馈法:为什么你说"你态度有问题"对方只会更防御?
- 职场工具箱之项目铁三角:范围、时间、成本——你最多只能锁住两个
- 职场工具箱之验收标准(Definition of Done):为什么交付后争议才开始?
- 职场工具箱之里程碑计划:为什么你计划写得很细,还是会延期?
- 职场工具箱之 MoSCoW:为什么你永远在做"都很重要"的事?
- 职场工具箱之 OODA 循环:高手为什么总能比你更快做出靠谱判断?
- 职场工具箱之 ABC 情绪理论:用它把 KPI 从“审判书”改成“导航图”
- 职场工具箱之 MVP 思维:完美主义是最大的陷阱,先小步起跑再说
- 职场工具箱之 SCAMPER:用 7 个动作,把"没想法"变成"有方案"
- 职场工具箱之非暴力沟通:如何把指责换成推进?
- 职场工具箱之 RACI:为什么“谁负责”说了三遍还是会翻车?
- 职场工具箱之 AARRR 漏斗:为什么有的人做得不多,却成长很快?
- SWOT 职场自我定位:选对战场,别用别人的优势折磨自己
- 职场工具箱之5S问题处理法:把问题处理得像个"成年人"
- 职场工具箱之 RAPID:把红线和拍板权拆开,跨部门少扯皮
- 职场工具箱之 DACI:谁推动、谁拍板,会议自然短
- 职场工具箱之四线复盘法:从"干过"到"学会",中间只差一张表
- 职场工具箱之三点法:别只给一个方案,那是在逼领导做选择
- 职场工具箱之 SMART 原则:为什么你的努力,总是在"无效内卷"
- Vibe Coding from 0 to 1
- Identity as a Service
- 边车模式:主程序的最佳拍档
- Spring Security 中设计模式的运用
minute 2 篇
Programming 8 篇
Tech 207 篇
- 抖动缓冲:同一条网络轨迹下,三种策略谁更好?
- 如何避免代码里的霰弹式修改
- OpenResty 能做什么:把 Nginx 变成可编程服务器
- Lua 编程三十个常见错误:初级、中级、高级,逐个拆解
- PHP2Shell 漏洞:PHP 紧急发布两个高危 RCE 补丁,今天就要动手
- 把知识库建成一座图书馆:DDD 的思想、AI 的建法,和 RAG 到 GraphRAG 的省钱之路
- 一个 Slot 挂了,为什么整个 Redis Cluster 都不可用?讲透 cluster-require-full-coverage
- 不用碰撞:读懂一段 Lua,O(1) 造出落在指定 Slot 的 Redis Key
- 从 SDD、TDD、MDD 到 HDD:AI 编程的质量不靠 prompt,靠护具
- 让 Codex 和 Cursor 读写你的知识库:用 FastMCP 搓一个本地 MCP Server
- Web Proxy 这道关:应用怎么知道自己该走代理
- 给 FreeSWITCH 这种大服务生成 ASan 报告:内存踩坑的照妖镜
- 集群状态为什么该交给 etcd:用 Raft 从根上消除脑裂
- 从容灾到异地双活:数据层怎么选,以 Redis 为例细讲
- 再论 CAP:会议和实时通信为什么要选 AP,以及最终一致性怎么落地
- 用 FreeSWITCH + MySQL 构建异地双活的音视频服务
- 2025 DORA 报告解读:AI 不是团队的替代品,而是组织系统的放大器
- 领域知识库:用 DDD 的思路,让人和各种 AI 工具都能读写
- 把 C/C++ 服务装进集装箱:用 Docker 构建、运行、分发
- DNS,有多少问题因你而起
- 引擎归 C++,玩法归 Lua:一个打砖块游戏的分层写法
- 让 Lua 插上翅膀:C 与 Lua 是怎么绑在一起的
- 用 AI 跑通软件研发全流程:PDCA 里的体力活外包指南
- AI 语音客服的两道生死坎:延迟和可信度
- Understand Anything:给陌生代码库画一张能走的地图
- 用 Lua 写 Dialplan 接 LLM:从零搓一个 AI 智能客服
- 给电话装个"会聊天的大脑":FreeSWITCH + UniMRCP + LLM 的语音智能体
- MRCP 协议入门:让 SIP 呼叫用上语音识别与合成的那根控制通道
- 与其硬啃老代码,不如用 Jupyter 造一个看得见的简化版
- 给 FreeSWITCH 集群配两个搭档:OpenSIPS 管信令,rtpengine 管媒体
- FreeSWITCH 的 session:一次呼叫的生老病死,都装在一个容器里
- FreeSWITCH 架构设计之快与脆
- 用 AI 写临床医学论文:一套能投 BJSM 的实战工具链
- 重拾 Lua:从月亮语言到 FreeSWITCH 里的胶水
- 拨号计划 101:FreeSWITCH 里那台可编程状态机
- OpenSIPS 入门:一台 SIP 服务器,一个可编程的呼叫路由引擎
- webrtc-to-freeswitch:一个浏览器软电话的架构、流程与协议全解
- 用 SIP.js 从浏览器打电话到 FreeSWITCH
- 给 FreeSWITCH 写测试:从单元测试到集成测试,用一个真 bug 串起来
- C 插件系统实战指南:dlopen 没告诉你的四件事
- C 语言的动态加载、依赖注入与服务注册:把 FreeSWITCH 的模块机制拆到底
- LLM API 的变迁:OpenAI-compatible 为什么不等于兼容
- APR 入门:一个 30 年前的答案,为什么还在你的代码库里
- C++ 悬垂引用与 lambda 捕获:语法上最省事,出事时最难查
- C/C++ 内存管理方法的变迁:把纪律写进类型系统
- 一个网关一把钥匙,三个客户端三种格式:用 cc-switch 收拢 AI 编码配置
- 别让 agent 再 grep 了:用 graphify 给代码库先画一张图
- 用 SDD 写代码之后,我每天读的 Markdown 比代码多——于是写了 markpad
- 我写过 git cheatsheet,还是记不住——于是写了 gitman
- SIP 协议回顾:从一通电话到呼叫中心
- AI Agent 需要一个 box
- Deno 有什么过人之处
- 边缘节点的妙用:把服务搬到离用户最近的地方
- Pi 背后的设计哲学:克制不是忍住不加,而是让功能有地方去
- TypeScript 凭什么成了 AI 时代的新宠:一个不写 TS 的老程序员的读码笔记
- nslookup 与 dig 的区别,以及一次代理引起的证书校验失败
- 如何解决角色爆炸问题:从 RBAC 到 ABAC
- AI 助手拆机:OpenHuman 怎么做到"记得你、自己干、还不出网"
- 免费聊天室拆机:一个 WebRTC 项目如何在三次换栈后彻底"不养服务器"
- WIMSE 实战:用 WIT + WPT 让每个服务都知道“在跟谁说话”——工作负载身份入门(下)
- 证书还是 JWT?服务间认证的 L4 与 L7 之争——工作负载身份入门(中)
- 服务凭什么证明“我是我”——工作负载身份入门(上)
- 边车和服务之间怎么说话最快:HTTP、gRPC、UDS 的一场同机较量
- DPoP 详解:给浏览器里的令牌也上一把“偷不走”的锁
- 令牌被偷了也白搭:说清楚 PoP 与证书绑定令牌
- 给微服务造一个 STS:像 AWS 一样发放临时凭证
- 传统的软件教程,在 AI 时代该与时俱进了
- 深入 MySQL 的锁:从行锁、间隙锁到度量驱动的排障
- 后端工程师的 AI Infra 学习路线
- K8s 是怎么被攻破的:威胁模型与攻击树入门
- Zanzibar 精读:Google 如何在十毫秒内回答“你能看这份文档吗”
- 用 Quarto + Notebook 写一本"能跑起来"的技术书
- 如何为你的服务创建统一的授权中心
- 大厂 MySQL 建表军规:那些评审会上被打回来的坑
- 调光旋钮为什么输给了单向门:Sigmoid 是怎样被 ReLU 取代的
- 怎么给自己搭一个第二大脑
- 别只让 AI 替你写代码:用Vibe Learning来激活你的大脑
- 风起于青萍之末(下):从 XOR 到神经网络与 LLM
- 风起于青萍之末(上):感知机如何学会画一条线
- 详解 AEAD 与 AES-GCM:不只加密,还要防篡改
- 服务治理是工程问题,不是纪律问题
- struct 到底实现了哪些接口?让 Go 的隐式接口更友好一点
- Channel 还是锁?聊聊 Go 里那些好用的并发模式
- 脑裂:脑子裂成两半,谁也不认谁
- 一个字符串引发的血案:从 C 到 Go 的 rune,字符串是怎么一步步进化的
- 限流这件事,从来不是"每秒放几个"这么简单
- Streamlit 深入浅出:用写脚本的方式做数据应用
- 给你的服务养一个"数字替身":AI 时代为什么要写 Sample App
- Headroom 和 Ponytail:给 AI 编程的 Token 账单拧上两个阀门
- 什么样的技术书籍才值得一读再读
- 超级个体真有那么神吗
- 生锈的知识,还能不能重新上场?
- 人脸识别入门其实不玄:从一张脸到一个名字
- 为什么需要 KMS 和信封加密
- Markpad:我给 Markdown 装了一个本地驾驶舱
- AI 时代高级程序员的门槛在哪里?以 WebRTC 为例
- IT 中间件三岔路:买、用开源,还是自研
- 用 Codex 怎么省 Token:账单别让上下文偷偷烧掉
- 一通视频会议骗走 2500 万:当 CFO 的脸也能伪造
- 用苏格拉底提问法给设计方案做体检
- 给 AI Agent 上把锁:LLM 应用的安全清单
- AI 编程新范式:80% 在想,10% 在写,10% 在验
- 用 DDD 的眼光重看 Kubernetes:一堆 YAML 背后其实是一套领域模型
- 授权的领域模型:从 RBAC、ABAC 到 Keycloak、Vault 的一张全景图
- 酒香也怕巷子深:用 AI Skill 给内容和产品装上运营循环
- Loop Engineering:别再手摇 AI 了,去设计那台摇柄
- 拷问、共创、固化:把三个 AI Skill 串成一条设计流水线
- Go 服务用 AI 写代码:工具链白送了半套 harness,你只是没拧紧
- 一个 11 行 Skill,为什么能把方案拷问得更靠谱
- 传统 Java 项目用 AI 写代码总翻车?先把 harness 修好
- AI 时代的信息资源管理:让八面来风变成知识流水线
- ArchUnit:用一个单元测试库,把架构纪律变成 AI 也绕不过的红绿灯
- Python 动态语言里的安全带:Pydantic 用法与最佳实践
- PERM 模型与 Casbin:把云端授权从代码里抠出去
- 给 AI Agent 装个行车记录仪:用 Claude Code 和 Codex 的 Hook 追踪 Skill 调用
- FDE:新瓶旧酒,还是 AI 时代的新工程师?
- 从传统 Wiki 到 AI 增强知识库
- gstack 拆机报告:AI 编程脚手架做对了什么,又栽在哪里
- Harness Pipeline:给 AI 编程套一条带护栏的跑道
- 从 PDF Skill 学到什么:把 AI 能力做成可执行流程
- 从纯文本生成 docx/pdf:难点从来不在“转换”两个字
- Vibe Coding 时代:起码要知道 AI 在做什么
- 如何做一个接近零停机的 HTTP 服务
- 从 1:1 Chat 到群聊:让人和多个 AI Agent 一起开会
- 用开源组件搭一个 AWS IAM 风格的授权系统
- Agent Box 初探:从 OpenClaw 小龙虾安全问题谈 Agent Sandbox
- 用 Podman 替代 Docker:从迁移到跑通 docker-compose
- 给 secrets 表加 history 表:这是不是一个靠谱的审计方案?
- ChaosBlade:把混沌工程从口号变成可回滚的实验
- Hermes Agent 初探:一个会长记性的个人 Agent,以及它和 OpenClaw 的比较
- 如何把你的论文发布到 arXiv
- 安全混沌工程:把安全事故演练成消防演习
- 从 Cursor 迁到 Codex:别急着抄配置,先把脑回路迁过去
- AI 时代,别只囤笔记:我是怎么把知识库做成一部活的 Wiki
- Axios 被投毒:一场教科书级的供应链攻击复盘
- 从 Prompt Engineering 到 Harness Engineering:AI 编程的四次进化
- 从 LiteLLM 供应链投毒事件聊聊密钥安全
- 从 RAG 到 GraphRAG:当检索增强生成遇上知识图谱
- 用 Playwright 自动发帖到知乎和小红书:一个程序员的偷懒指南
- 如何写好一个 AI Skill:让 AI Agent 从"什么都会"变成"真的能干活"
- AI Friendly:为什么你的架构、API 和 UI 也该为 AI 设计?
- 从零构建一个迷你 Zoom:Lazy Rabbit Meeting 架构全解析
- 网络安全指北之 Broken Auth and Session Management:登录与会话管理翻车指南
- MySQL 高可用:从主从复制到 InnoDB Cluster,你需要知道的一切
- 服务稳定性之 LMAT 和 USED
- 从 RBAC 到 OpenFGA:细粒度授权的架构、落地与取舍
- 网络安全指北之 CSRF:Cross-Site Request Forgery (跨站请求伪造)
- 网络安全指北之 IDOR: Insecure Direct Object Reference (对象引用越权)
- 网络安全指北之Sensitive Data Exposure:敏感数据暴露
- 网络安全指北之防止 XSS 的典型套路
- AI 时代的软件工程
- 网络安全指北: 为什么 BAC 访问控制失效总能霸榜
- 微服务之外:被忽视的 "SDK 治理"
- claude code 平替: opencode + deepseek/qwen
- Go crypto/tls Config.Clone session resumption pitfalls (CVE-2025-68121)
- 设计一个学习职场英语的 AI Agent(LLM Agent 架构 + 日常闭环 + 打分)
- 什么是时序攻击(Timing Attack)?
- 微服务的三大安全威胁
- 为什么要尽量少用 Go 里的 unsafe
- Vue.js 应用的"白屏死机":原因排查与解决方案全攻略
- Debug Build 的两种哲学:C++ 宏 vs Go 链接器注入
- 职场工具箱之 PDCA:高手做事,都有一个"闭环"
- 悲观锁、乐观锁、无锁:Go 并发控制的三种姿势
- Python 编程的常见陷阱与奇巧淫技
- 从过程式、命令式到声明式:编程与运维的一次“权力转移”
- 在 EKS 上给 Pod 绑 IAM Role:IRSA(ServiceAccount + OIDC)到底怎么回事
- 在树莓派上玩 K3s:从安装到实战,打造你的私人 Kubernetes 集群
- Go 程序崩溃分析实战:从 Coredump 到根因定位
- C 与 C++:一对父子的渐行渐远
- 写给即将读研的你:一个老程序员的入行指南
- 使用第一性原理做架构设计
- 警惕!你的 Go 程序正在偷偷"泄漏" —— 详解 Goroutine Leak
- Spec Driven Development
- 数据丢失的灾难现场
- 密码存储的艺术
- Go 微服务访问控制之 Casbin 实践指南
- Common Identity Service
- 从依赖注入谈起
- 可观测性之饱和度
- 通过通信来共享内存, 而不是通过共享内存来通信
- go 语言的常见陷阱
- 边车模式的协议设计
- 用 WebRTC 和 Pion 打造一款网络录音机
- 长连接一定比短连接好吗?
- 从 RBAC 到 ABAC, 权限管理的艺术
- 如何证明你是你 - SPIFEE
- JMPP 让 XMPP 协议老树开新花
- 树莓派上的语音识别一
- WebRTC 安全之一
- 从 TDD, DDD 到 MDD
- OWASP Top Ten Issues
- WebRTC 的音视频如何同步
- Software 2.0
- DTLS 握手为什么常失败
- WebRTC internal dump 文件的分析
- Google Meet SDP 长这样
- 可以用 pandas dataframe 这样写 SQL
- Rate limiting algorithm
- 拥塞控制技术的笔记三: TWCC 在 libwebrtc 中的实现
- 拥塞控制技术的笔记二: TWCC
- 拥塞控制技术的笔记一: 理论篇
- Web 的王者 Javascript 愈战愈勇
- 回顾 Reactor 模式
- Phi Accrual Failure Detector
- 管道模式的妙用
- Journal on 2020-01-16
- Learn RFC 3515 for SIP Refer method