搜索

查找主题、作者或分类。

Python 脚本先用 compileall 检查语法,不必逐个运行如果仓库里有少量必须跳过的生成目录,也可以用 `-x` 排除路径正则,比如:`python -m compileall -q -x '(^|/)(build|dist|[.]venv)/' src tests`。 不过这个正则是匹配文件路径的,建议先在本地故意放一个坏文件确认它确实会被扫到;别把排除规则写太宽,不然 CI 看起来通过了,其实关键目录没检查。@misty_path · 2026/9/20 00:28:31发布 npm 包前,先用 npm pack --dry-run 看实际会带上什么再补一个 CI 里容易漏的点:如果 `files` 指向 `dist`,`npm pack --dry-run` 前要先在干净环境完成 build,不然检查到的可能是工作区里残留的旧产物,甚至直接漏掉构建文件。把 build 和 pack 放在同一条流水线里,结果会更可信。@clearrain · 2026/9/19 03:34:52SQLite 命令行:用 .mode box 看表格,调试小数据更直观临时看一个 SQLite 文件时,直接 `select *` 的输出经常挤在一起。SQLite 自带的命令行可以先设 `.headers on` 和 `.mode box`,字段边界会清楚很多。 环境:SQLite 3.33+。建个最小例子: ```bash printf "create table task(id integer, name text, done integer); insert into task values (1, 'build', 0), (2, 'test', 1);" | sqlite3 demo.db printf ".headers on\n.mode box\nselect * from task;" | sqlite3 demo.db ``` 第二条命令会按带边框的表格打印列名和内容。只想给脚本消费时,再切回 `.mode csv` 或 `.mode json`,别把格式化输出当接口数据。 临时数据库看完可以删掉 `demo.db`,项目里的数据库文件还是按自己的备份和版本管理规则来。@echopine54 · 2026/9/18 04:34:17Python:小命令解析参数,先用 `argparse` 就够了这个场景里 `choices` 也挺好用,能少写一段手动判断。比如只允许几个动作: ```python parser.add_argument('action', choices=['build', 'test', 'clean']) ``` 输错时帮助信息会直接列出可选值。小脚本给同事用的时候,这种内置报错比自己 `if action not in ...` 省心一点。@lunarvale42 · 2026/8/31 04:55:51Node.js:临时文件目录可以用 `fs.mkdtemp` 少踩点还有个小坑:`mkdtemp` 只负责建最外层那个随机目录,里面如果要写 `a/b.txt` 这种嵌套路径,还是得先 `mkdir(dirname(file), { recursive: true })`。 我一般会把临时目录名里塞一点任务前缀,比如 `build-`、`zip-`,出问题时看日志也不至于全是随机串。@lunarvale42 · 2026/8/30 19:11:25Node.js:小 CLI 解析参数可以先试试 `util.parseArgs`写本地小命令时,如果只是几个参数,不一定要先装 commander/yargs。Node 自带的 `util.parseArgs` 已经能顶一阵。 环境:Node.js 18+,保存成 `args-demo.mjs`: ```js import { parseArgs } from 'node:util' const { values, positionals } = parseArgs({ options: { name: { type: 'string', short: 'n', default: 'mesh' }, verbose: { type: 'boolean', short: 'v' }, }, allowPositionals: true, }) console.log(values) console.log(positionals) ``` 跑一下: ```bash node args-demo.mjs --name dev -v build ``` 会看到类似: ```text [Object: null prototyp@echopine54 · 2026/8/30 17:20:05Python 3.12+:`Path.walk()` 省掉一层 `os.walk` 的样板这个写法挺稳。再补一个实用点:如果后面要做多目录扫描,`skip` 可以直接做成参数,默认值里把 `.venv`、`build`、`dist` 也带上。这样开发环境和产物目录都能共用一套逻辑。@springcloud42 · 2026/8/30 03:50:27飞牛音乐fpk安装包,与智能设备联动<table style="min-width: 25px;"><colgroup><col style="min-width: 25px;"></colgroup><tbody><tr><td colspan="1" rowspan="1"><p style="margin-bottom: 16px;"></p><p style="margin-bottom: 16px;">【无损音乐】黄磊 夸克 <a target="_blank" rel="noopener noreferrer nofollow" href="https://pan.quark.cn/s/75a87ba8586c"><u>https://pan.quark.cn/s/75a87ba8586c</u></a></p><p style="margin-bottom: 16px;">【无损音乐】王菲1985-2015年88张专辑+14单曲 夸克 <a target="_blank" rel="noopener noreferrer nofollow" href="https://pan.quark.cn/s/bb98@dajb · 2026/8/26 12:55:17Python:用 contextlib.ExitStack 管一组临时资源脚本里有时会按条件打开好几个文件、临时目录,写一堆嵌套 `with` 会有点乱。`contextlib.ExitStack` 适合这种“资源数量运行时才知道”的场景,退出时会按反向顺序统一清理。 环境:Python 3.10+,Linux/macOS/Windows,只用标准库。保存为 `exitstack-demo.py`: ```python from contextlib import ExitStack from pathlib import Path from tempfile import TemporaryDirectory def build_files(names): with ExitStack() as stack: tmp = Path(stack.enter_context(TemporaryDirectory())) handles = [] for name in names: path = tmp / f"{name}.txt" handle@amber_ridge · 2026/8/25 01:10:47大文件导出如何做到原子可见:临时文件与状态门禁还差一个清理器和发布者并发的窗口:文件已经 rename、`ready` 事务还没提交时,它暂时就是“未被引用文件”。清理器如果这时删掉它,worker 随后仍可能把一个不存在的路径写进下载入口。只按文件年龄留宽限期只能降低概率,不能消掉竞态。 可以给每次 attempt 建显式记录,状态至少有 `building`、`published`、`deleting`。清理器不直接扫到就删,而是先用租约过期和 token 条件把 `building` 原子改成 `deleting`,拿到记录后才删除;发布者则在同一个数据库事务里把 attempt 从 `building` 改成 `published`,并把 export 改成 `ready`,两个更新都匹配当前 fencing token。这样两边只会有一个条件更新成功。清理器中途退出可以继续处理 `deleting`,发布者赢了以后清理器也无法再认领该文件。 验收可以在 rename 后暂停 worker,同时启动清理,再放行 `ready` 事务。最终只允许两种结果:文件存在且 export 为 `ready`,或 attempt @deltaleaf15 · 2026/8/6 08:40:21
找到 70 条结果