聚合文章

汇集全部已收录博客的最新文章,点击标题前往原文阅读。

排序方式:最新发布

路灯下的路人

路灯下的路人………他坐在马路牙子上,熄灭了手里的烟,随手丢进了路边路灯灯光照不到的窨井。“你知道吗,你让我想起我两年前的样子。”他说“看你这样,一个人在一个城市,野心大又迷茫。”他掏出了皱巴巴的烟盒,熟练的掏出一根。“你要吗?”他问道。“不了,我不抽烟。”我说。他又笑了:“真巧,我两年前也不抽烟。和你一样酒吧,网吧都没去过,我连酒都不敢喝。你看我现在呢?去酒吧,一晚消费几万,找个女的,再过一晚上。”说完。他深深的吸了一口不知什么时候点上的烟。“嘿呀,我在上学的时候还喜欢过那么一个…”他话匣子聊到感情便关不上了,我只能在昏黄的路灯光下听他叙旧。他染黄的头发已经开始掉色,在路灯光下闲的十分不自然。…

Hello world: 关于新博客

新博客的故事不知道有没有人记得,我第一次说要自写博客系统已经是三年前的事情了。但是因为学业等等问题,总是没有时间。有时间开头,没时间善终。其中各种用Phalcon, la框架写的半成品比比皆是。高二自己还写了一个简单的MVC实现但是根本不可能用来做博客。如今花了一个多月,开坑一个大坑写了一个Ugly-blog。然而它善终了。使用了自写的框架UGPF(UGly Php Framework )。中途踩了很多坑,也顺便学了Vue.js 。谈谈特性吧: Markdown文章编辑。支持评论,分类,浏览量统计。sqlite,轻量博客系统。垃圾服务器也带的动。一定的LaTeX支持 但是缺点更多: 糟糕的框架…

new-api 数据同步实践:全量拷贝与增量同步

两个 new-api 实例之间做数据同步,前前后后踩了不少坑:先是把整库从主实例拷贝到备实例,跑通后又把需求收敛成"只同步渠道"的增量方案。这篇文章把两套做法、取舍依据和踩坑记录一次写清,所有主机信息已脱敏,核心方法可直接复用。 1. 场景与数据模型 先交代背景。我有两个 new-api 实例:一个部署在公网,作为日常配置和使用的主实例;一个部署在内网,作为备实例。需求分两个阶段:一开始要的是"整库替换"——把主实例的所有数据整体搬到备实例;跑通之后,日常只需要"渠道单向同步"——主实例改了渠道配置,备实例跟着变,其他数据各管各的。 同步前先看清数据分布。new-api 的状态基本都在 Pos…

new-api 分流与重试降级实战:三个免费渠道如何做到逐级兜底

new-api 网关里,「优先级」和「权重」是控制渠道使用顺序的两个参数,但实际跑起来才发现:官方 FAQ 的一句话背后,藏着不少和直觉相反的行为。这篇文章从一个真实的 429 限流事故出发,讲清分流、重试降级的官方规则,以及我们最终用「拆档」解决同档渠道互不兜底问题的全过程。 1. 起因:一个限流全员陪跑 内网自建的 new-api(v1.0.0-rc.34)上,同一个模型挂了三个免费渠道(priority 10 同档)、两个中转渠道和一条付费兜底渠道。平时用得挺好,直到每次大请求触发上游 tpm/rpm 限流: channel error (channel A, status code: …

new-api 网关改写实战:param_override 与 header_override 的两个坑

网关层统一改写请求,是 new-api 这类 API 网关最实用的能力之一:客户端不兼容上游的地方,在渠道上配一次覆盖所有客户端。但这里藏着一个容易被忽略的联动坑——param_override 的执行会悄悄污染请求级的 header 状态,让另一个渠道配得好好的 header_override 全部失效。这篇文章记录两个真实故障的定位过程与配置层修复,第二个尤其值得收藏。 1. 背景与渠道拓扑 我们的 new-api 是双机部署:一台公网实例作为唯一配置源,一台内网实例通过脚本单向镜像渠道配置。渠道按「免费优先、付费兜底」的原则排档位: 免费渠道 ×4(priority 110/100/90…

new-api 重试配置最佳实践:RetryTimes 与状态码范围

重试次数和状态码范围,是 new-api 网关里最容易被误解的一对配置:RetryTimes 不是简单的"失败重试几次",它决定的是渠道档位能下探多深;而状态码范围决定哪些错误值得降级。搞清这两者的关系,才能配出"免费档逐级兜底、付费档最后接盘"的稳定链路,避免多配一个数字就多一次无效等待。 1. 重试的本质:次数是档位索引 先看一个反直觉的事实:new-api 的重试不是"同一个渠道再来一次",而是按优先级档位逐级换渠道。源码里 retry 序号直接当作档位索引(priorities[retry]),每次失败就跳到下一个 priority 档。 因此,一次性请求的实际尝试次数 = Retry…

NPM 续期证书不自动 reload?renew_hook 让它续期即生效

NPM(Nginx Proxy Manager)的 Let's Encrypt 证书有内置的自动续期机制,但很多人在续期后发现:面板里明明显示新证书,浏览器里却还是旧的那张。这篇文章记录了我对 NPM 2.12.6 的排查过程——问题根源、官方设计逻辑,以及我用 renew_hook 实现"续期即 reload"的完整方案和验证。 1. 问题:续期成功但没生效 某天我手动触发了一张证书的续期,流程返回 200,数据库里的 expires_on 也更新了。但用 openssl s_client 去测线上 443 端口,返回的证书还是旧的到期时间。 # 容器内:符号链接已指向新证书 $ ls -l…

AI Agent 实战手记 03:让技能越用越好用

技能不是写完就完事的说明书。它在交付那天最贴合实际,之后每用一次,都会积累一点点不贴合,直到某天你发现它给出的判断已经不能用。 这是「AI Agent 实战手记」的第三篇。01 讲工作区规划,02 讲会话交接,管的都是 Agent 身外的环境;这篇讲 Agent 自己身上最容易烂掉的那块——技能。 1. 痛点:交付即巅峰 技能写出来那天是对的,之后开始漂移。三种典型症状,早晚都会遇到: 判断规则误报漏报。规则只覆盖了当时见过的样本,遇到没见过的就乱报。我曾经一条规则报了 171 条"违规",其中绝大多数是 README.md、__init__.py 这种本来就该长这样的文件。 文档与实现脱节。…

AI Agent 实战手记 04:给 Agent 选对 Loop 工作方式

同一个 Agent,为什么你只是聊聊天,别人却能让它通宵改完 40 个测试?差别通常在它的"工作方式"——专业点叫 Loop(循环)。上篇我们聊过权限模式(能动什么),这篇讲另一条线:循环方式(跑多远、怎么跑)。它决定 Agent 是回一句话就停,还是一轮一轮干到任务完成。 1. 什么是 Loop 工作方式(What) 1.1 一次循环是什么 Agent 最小的工作单位是"思考 → 调用工具 → 拿到结果",这算一次迭代(loop iteration)。普通对话里,Agent 回你一句就停;Loop 工作方式决定四件事: 跑几轮:一次就停,还是持续到完成。 怎么跑:单个 Agent 自己循环,…

用 kkFileView 搭一个文件在线预览服务

内网里堆着各种文档,docx、xlsx、pptx、pdf 混在一起。每次想快速看一眼内容,都要先下载、再装 Office 或 WPS,看完再删掉,纯属浪费时间。更别说分享给别人时,对方还得先问一句"你装 Office 了吗"。 kkFileView 解决的就是这个场景:一个容器跑起来,浏览器里直接预览文件。它内部靠 LibreOffice 把 Office 文档转成 PDF 或图片,前端再渲染出来,业务系统只要拼一个 URL 就能接入。 1. 选它的两个理由 1.1 格式覆盖广 这一点是最省事的地方——主流格式基本都在支持列表里: Office 全家桶:doc、docx、xls、xlsx、pp…

给 AI 派活:四份文档与一套验收标准

最近我把一整套开发活交给了一个 AI agent 干:9 个阶段、28 条验收标准、130 个自动化测试,前后几十次提交。整个过程里没有一句"你去写个 X 吧"式的口头指令,所有约定都躺在磁盘上的四份文档里。 这篇把这套方法和里面的术语讲清楚。它不需要什么高级工具,你手上有任何一个能执行命令、能写文件的 agent 就能用。 1. 为什么需要一套文档 1.1 它不记得你 跟 agent 协作,第一个要接受的事实是:它不记得你。 每次会话它都是重新醒来,上一次聊过什么、你定过什么规矩,只要没落进磁盘,就等于没发生。你昨晚花了二十分钟跟它讲清楚的接口命名规范,第二天开新会话,它一无所知。 这跟带新…

把浏览器扩展的数据同步到 GitHub:用代码仓库当云端存储

浏览器扩展的数据默认只躺在 chrome.storage.local 里,清理一次缓存、换一台电脑,就全没了。想做云备份,通常意味着自己运维一个服务,或者去注册某个第三方 BaaS。这篇拆一个更省事的做法:把 GitHub 私有仓库当云端存储,一份 JSON 快照对应仓库里的一个文件,每次上传就是一个 commit。而这个仓库不只是"某个项目的备份盘"——它是一个统一的数据存放位置,多个项目各写各的文件即可。 1. 为什么选 GitHub 先说结论:GitHub 不是"最适合"存业务数据的地方,但它是综合成本最低的地方。下面几个理由都是白拿的。 它是一个统一的数据存放位置。 仓库不是"某个项目…

Traditional vs Roth IRA under fixed amount of investment

I’ve read a lot of articles on Traditional vs Roth IRA. One can do a serious mathematical analysis of which one is better, given that you want to invest a total of x income into the account for a particular year. Money in excess of x will be put in a normal investment account. There is a widely held…

Word break with cost

Problem1 Given a set of strings W, a cost function c:W\to \R and a string s. Find elements w_1,\ldots,w_k\in W such that s=w_1\ldots w_k, and \sum_{i=1}^k c(w_i) is minimized. This problem is a generalization of the word break problem on leetcode. Many algorithms you see online assumes that each str…

Bounds on number of cuts

Consider we have an undirected graph G=(V,E) of n vertices, and there are positive cost c:E\to \R^+ on the edges. We define c(F)=\sum_{e\in F}c(e), to be the cost (value) of F\subset E. Let \mathcal{P} be a partition of V where each partition class is non-empty. We define E(\mathcal{P}) to be the se…

Maximize Cash Back

Credit cards often offers rewards for purchases. For example, a card that gives 5% cash back for grocery stores. Also, credit cards often can be used to buy gift cards for specific stores. For example, one can use Chase Ink Cash (CIC) and go to Staples and buy gift card for Amazon for effectively 7.…