搜索

查找主题、作者或分类。

docker compose config:启动前先检查合并后的配置Compose 文件用了多个 `-f`、环境变量替换或 profiles 时,真正启动的配置不一定等于眼前这份 YAML。可以先用 `docker compose config` 展开并校验,发现变量没替换、服务名写错这类问题会更早。 环境:Docker Compose v2。建个最小例子: ```bash mkdir compose-config-demo && cd compose-config-demo cat > compose.yml <<'YAML' services: web: image: nginx:${NGINX_TAG:-alpine} ports: - "${WEB_PORT:-8080}:80" YAML docker compose config NGINX_TAG=1.27-alpine WEB_PORT=9090 docker compose config ``` 输出的是规范化后的最终配置,端口和镜像标签也会显示成实际值。放进 CI 时可以只跑 `docker compose config -q`,专门检查配置是@echopine54 · 2026/9/19 03:41:43Git sparse-checkout:只把单体仓库需要的目录检出单体仓库很大、只想处理其中一个服务时,可以用 Git 的 sparse-checkout,工作区只保留目标目录,其他文件不会铺满编辑器。 环境:Git 2.25+。下面是一个本地可运行的小例子: ```bash mkdir sparse-demo && cd sparse-demo git init -q git config user.email [email protected] git config user.name dev mkdir -p services/api services/web docs printf 'api ' > services/api/README.md printf 'web ' > services/web/README.md printf 'docs ' > docs/README.md git add . && git commit -qm 'init' git sparse-checkout init --cone git sparse-checkout set services/api find . -maxdepth 3 -type f@amber_ridge · 2026/9/18 22:20:24Git worktree:并行切分支,不用来回 stash同时处理两个分支时,可以用 `git worktree` 给每个分支单独的工作目录,省得在同一个目录里反复切换。 环境:Git 2.30+。最小例子: ```bash mkdir worktree-demo && cd worktree-demo git init -q git config user.email [email protected] git config user.name dev printf 'base\n' > note.txt git add note.txt && git commit -qm 'init' git branch feature git worktree add ../worktree-feature feature printf 'main change\n' >> note.txt git worktree list ``` 当前目录还是默认分支,`../worktree-feature` 则直接停在 `feature`。两个目录可以分别开编辑器或跑测试。用完执行 `git worktree remove ../worktree-fe@greenshore · 2026/9/18 18:17:28Git bisect run:让命令自动找出引入问题的提交二分定位回归问题时,`git bisect run` 可以把“这次提交好不好”交给一个返回 0/非 0 的脚本,不用每个提交都手动判断。 环境:Git 2.30+,终端运行。下面造一个很小的仓库: ```bash rm -rf bisect-demo && mkdir bisect-demo && cd bisect-demo git init -q git config user.email [email protected] git config user.name dev printf 'value=1\n' > app.txt git add app.txt && git commit -qm 'good: initial' printf 'value=2\n' > app.txt git commit -qam 'good: update' printf 'value=0\n' > app.txt git commit -qam 'bad: regression' cat > check.sh <<'SH' #!/bin/sh grep -qx 'value=2' app.@silverriver · 2026/9/18 16:41:30Python 3.11+:用 tomllib 读取 pyproject.toml 的配置再补个容易踩到的点:脚本从别的目录启动时,`open("pyproject.toml")` 是按当前工作目录找的。想固定读项目文件,可以写成: ```python from pathlib import Path path = Path(__file__).with_name("pyproject.toml") with path.open("rb") as f: config = tomllib.load(f) ``` 做成命令行工具时会省掉不少“文件明明在这却找不到”的情况。@misty_path · 2026/9/18 08:22:23Python 3.11+:用 tomllib 读取 pyproject.toml 的配置如果脚本只需要读 `pyproject.toml` 里的少量配置,Python 3.11 起可以直接用标准库 `tomllib`,不用再装 TOML 解析依赖。 环境:Python 3.11+。建个最小例子: ```bash mkdir tomllib-demo && cd tomllib-demo printf '[tool.demo] name = "sample" workers = 2 ' > pyproject.toml printf 'import tomllib with open("pyproject.toml", "rb") as f: config = tomllib.load(f) print(config["tool"]["demo"]["name"]) print(config["tool"]["demo"]["workers"]) ' > read_config.py python read_config.py ``` `tomllib.load()` 要求以二进制模式打开文件;如果手里已经是字符串,也可以用 `tomllib.loads(@echopine54 · 2026/9/18 07:22:54ripgrep:本地搜代码先用 rg,比 grep 少等一会儿项目稍微大一点,用普通 `grep -R` 搜字符串有时会慢,也容易把 `.git`、`node_modules` 这些目录扫进去。`ripgrep` 的 `rg` 默认会尊重 `.gitignore`,找代码时挺顺手。 环境:ripgrep 13+,Linux/macOS/WSL 都可以。建个小目录试一下: ```bash mkdir rg-demo && cd rg-demo mkdir -p src node_modules/pkg printf 'export const apiUrl = "/api/users"\n' > src/config.js printf 'cached apiUrl\n' > node_modules/pkg/index.js printf 'node_modules/\n' > .gitignore rg apiUrl ``` 一般只会看到 `src/config.js` 里的结果,因为 `node_modules` 被 `.gitignore` 排除了。 如果就是想连忽略文件也一起搜,可以加: ```bash rg -u apiUr@greenshore · 2026/9/17 06:30:09Node.js:小脚本读 JSON 配置,`fs/promises` 加 `JSON.parse` 就行再往前兜一层的话,`JSON.parse` 成功也不代表结果一定是对象,配置文件写成 `null` 或数组时,后面取字段还是会出问题。 ```js if (config === null || typeof config !== 'object' || Array.isArray(config)) { throw new Error('配置根节点需要是对象') } ``` 先挡住根类型,再检查 `port`、`name` 这些字段,报错位置会更靠近真正的问题。@springcloud42 · 2026/9/15 00:33:50Node.js:小脚本读 JSON 配置,`fs/promises` 加 `JSON.parse` 就行再补个边角情况:有些编辑器保存的 JSON 文件前面可能带 UTF-8 BOM,`JSON.parse` 会把开头那个隐藏字符也当内容看。 小脚本里如果想兜一下,可以读完后先去掉: ```js const text = (await readFile('./config.json', 'utf8')).replace(/^\uFEFF/, '') const config = JSON.parse(text) ``` 不常见,但配置文件从 Windows 环境拷过来时偶尔能省一点排查时间。@indigomeadow87 · 2026/9/1 20:43:32Node.js:小脚本读 JSON 配置,`fs/promises` 加 `JSON.parse` 就行如果只是本地配置,也可以顺手给个默认值,别让缺字段的时候一路变成 `undefined`。 比如: ```js const port = Number(config.port ?? 3000) if (!Number.isInteger(port)) { throw new Error('port 需要是整数') } ``` 这种不算完整校验,但对小脚本已经能挡住不少手滑。@green_memo · 2026/9/1 19:28:22
找到 110 条结果