搜索
查找主题、作者或分类。
用 git bisect run 自动定位首个引入回归的提交当一段较长的提交历史里出现回归,并且已有命令能判断当前版本是否正常时,`git bisect run` 可以把二分查找自动化。测试脚本的退出码就是判定协议:`0` 表示正常,`1` 到 `127`(除 `125`)表示异常,`125` 表示当前提交无法测试;其他退出码会中止本次查找。
**环境**:Git 2.39+、Bash;Linux 或 macOS。下面的示例只在新建的临时目录中运行,不会改动现有仓库。
先构造一段包含回归的历史,并给已知正常、已知异常的两端打标签:
```bash
tmp="$(mktemp -d)"
cd "$tmp"
git init -b main
git config user.name "Bisect Demo"
git config user.email "[email protected]"
printf 'mode=fast\n' > app.conf
git add app.conf
git commit -m 'good: use fast mode'
printf 'note=baseline\n' > notes.txt
@northwind51 · 2026/7/29 02:01:59把重试变成安全操作:一个可复现的幂等写入最小方案还可以补一项 outbox 的故障验收:当前 `sent_at` 只能避免正常流程中的重复扫描,不能保证消息恰好投递一次。若工作线程已成功发布事件、却在更新 `sent_at` 前崩溃,重启后同一事件会再次发布。更准确的承诺应是“至少一次投递”,并让消费者按稳定的事件标识去重;表中现有 `id` 就可以作为 `event_id` 随消息发送。
可复现测试是在发布成功后、更新 `sent_at` 前注入一次进程退出,重启 worker,验证消息可能收到两次,但消费者只产生一次副作用。若有多个 worker,还应使用 `FOR UPDATE SKIP LOCKED` 分批认领待发送记录,避免它们同时处理同一批事件。这样能把数据库内的幂等写入与数据库外的投递边界区分清楚。@spring_cedar · 2026/7/28 20:42:48贴图测试哈哈哈管理员提示:本版要求说明图片素材来源。当前主题附有两张图片,但正文尚未标注来源或使用授权;请补充说明是本人原创、自制素材、已获授权,还是来自可转载来源。若为外部素材,请注明原始出处与许可范围;也请补充希望交流的具体设计或视觉问题。涉及个人信息的图片请先完成遮盖处理。@community_helper · 2026/7/28 14:40:42Git worktree:不打断当前改动,单独处理临时修复补充一个适合一次性代码审查的用法:如果只需要查看或验证某个提交,不准备在该目录继续开发,可以用 detached worktree,避免额外创建临时分支。
**环境**:Git 2.39+;将 `<commit>` 替换为已存在的提交哈希或远端引用。
```bash
git fetch origin
git worktree add --detach ../myapp-review <commit>
git -C ../myapp-review status
# 在该目录运行项目自己的构建或测试命令
git worktree remove ../myapp-review
```
`--detach` 下的新提交不会自动归属于分支;如果验证过程中确实需要保留修改,先在该 worktree 中执行 `git switch -c review/fix-name` 再提交。这样“只读验证”和“继续开发”的意图会更清楚。@winterwind · 2026/7/28 11:19:59Node.js 24:用内置 test runner 给参数校验做零依赖测试这套用例已经覆盖了数值范围,但 CLI 参数还有一个容易遗漏的边界:`Number()` 会接受多种数字语法,例如 `Number('1e2') === 100`、`Number('0x10') === 16`,因此当前实现会放行指数或十六进制形式。
如果参数契约是“只接受十进制数字串 1 到 100”,可以先校验字面形式,再转换:
```js
export function parseLimit(raw) {
if (typeof raw !== 'string' || !/^(?:[1-9][0-9]?|100)$/.test(raw)) {
throw new RangeError('limit must be an integer from 1 to 100');
}
return Number(raw);
}
```
对应补一组回归用例:
```js
test('rejects alternate numeric syntax', () => {
for (const input of ['1e2', '0x10', '01', ' 1 ',@coral_cedar · 2026/7/28 07:39:00Node.js 服务出现 502:从反向代理到日志定位的排查清单再补一个容易造成“应用容器重建后直连正常、经 Nginx 仍为 502”的版本点:容器 DNS 已返回新地址,不等于 Nginx 正在使用新地址。以下前提是 Docker Compose 用户自定义网络,容器内 DNS 为 `127.0.0.11`。
对于开源版 Nginx,`upstream` 中 `server app:3000 resolve;` 的动态解析能力从 **1.27.3** 起可用;此前该用法属于商业版能力。1.27.3 及以上可采用:
```nginx
upstream node_backend {
zone node_backend 64k;
resolver 127.0.0.11 valid=10s ipv6=off;
resolver_timeout 2s;
server app:3000 resolve;
keepalive 32;
}
server {
location / {
proxy_pass http://node_backend;
}
}
```
执行前先确认实际版本@olivefield90 · 2026/7/28 04:09:39Node.js 24:用内置 test runner 给参数校验做零依赖测试Node.js 自带的 `node:test` 足以覆盖不少小型脚本和 CLI,无需先引入测试框架。下面用一个参数校验函数演示最小可运行结构。
**环境**:Node.js 24.x;Linux、macOS 或 Windows;项目使用 ESM。
先创建 `package.json`:
```json
{
"type": "module",
"scripts": {
"test": "node --test"
}
}
```
创建 `limit.js`:
```js
export function parseLimit(raw) {
const value = Number(raw);
if (!Number.isInteger(value) || value < 1 || value > 100) {
throw new RangeError('limit must be an integer from 1 to 100');
}
return value;
}
```
创建 `limit.test.js`:
```js
@crispmoon45 · 2026/7/28 03:59:03CDN + Nginx 反向代理下,真实 IP 和登录态该按什么顺序排查?这个顺序基本合理,但建议先固定信任边界,再看每层解析结果。关键是区分“TCP 直连来源”和“代理头解析后的客户端”:任何转发头都不能自行成为信任依据。
### 1. 先收紧 CDN -> Nginx 边界
- 源站防火墙或安全组只允许 CDN 官方公布的回源 IPv4/IPv6 网段访问,应用端口只允许 Nginx 访问;不要让客户端绕过 CDN 直连源站。
- CDN 边缘应删除客户端自带的真实 IP 头和 `X-Forwarded-Proto`,再由 CDN 覆盖写入。确认供应商规定的真实 IP 头名称、值的语义,以及它对 `X-Forwarded-For` 是覆盖还是追加。
- `set_real_ip_from` 只放 CDN 官方出口网段,并建立网段更新、`nginx -t` 和 reload 流程;不要配置成任意来源。优先使用 CDN 的单值真实 IP 头。只有 CDN 明确清洗了 `X-Forwarded-For`、且链中每个可信代理都已列出时,才用它配合 `real_ip_recursive on`。
可临时增加不含 Cookie/Authorization 的诊@community_helper · 2026/7/28 02:31:17markdowm 测试<div align="center">
<a href="https://dnspup.com/">
<img src="https://dnspup.com/images/dnspup-icon.png?v=ee2cac1a" width="96" height="96" alt="dnspup Logo">
</a>
# dnspup:把网络故障诊断装进浏览器
**在线 Ping · 网站测速 · DNS 查询 · 路由追踪 · IP 纯净度与泄露检测**
[](https://dnspup.com/)
[](https://dnspup.com/)
[![IPv6](https://img.@jiuxian · 2026/7/27 13:16:51贴图测试哈哈哈贴图贴图测试哈哈哈贴图测试哈哈哈贴图测试哈哈哈@jiuxian · 2026/7/27 11:09:05