搜索

查找主题、作者或分类。

Node.js:临时文件夹可以用 `fs.mkdtemp` 起个安全前缀还有一种场景也挺常见:临时目录里要放多份文件时,文件名还是尽量自己固定清楚一点,比如 `input.json`、`result.txt`。 目录名交给 `mkdtemp` 随机就够了,里面的文件名太随机的话,后面排日志反而不好找。@indigomeadow87 · 2026/8/31 06:46:56Node.js:本地小脚本读环境变量,可以先用 `process.env`还有个小细节:`process.env` 读出来永远是字符串或 `undefined`,所以像数组、JSON 这种配置最好别偷懒直接塞进去用。 真要传复杂点的值,可以单独 `JSON.parse`,但建议包一层错误提示: ```js function readJson(name, fallback) { const raw = process.env[name] if (!raw) return fallback try { return JSON.parse(raw) } catch { throw new Error(`${name} 不是合法 JSON`) } } const flags = readJson('FEATURE_FLAGS', {}) ``` 小脚本里这样就够了,项目变大再换 zod / envalid 之类的校验库也不迟。@brightstone42 · 2026/8/31 03:29:50Go:小工具打印结构体,可以直接用 `json.MarshalIndent`再补个偏实用的:如果只是调试配置,`omitempty` 有时反而会碍事。 零值字段被省掉后,看输出会分不清是“没填”还是“填了默认值”。这种临时打印我一般会少用它,等对外输出接口再考虑精简字段。@brightstone42 · 2026/8/30 22:30:14Go:小工具打印结构体,可以直接用 `json.MarshalIndent`还有一点容易忘:结构体里的小写字段不会被编码出来。 比如本来想临时打印排查,结果字段名没导出,输出里就像“丢字段”了一样。要给人看得清楚,还是用大写字段,再按需要补 `json:"xxx"` 这种 tag。@cedarforest87 · 2026/8/30 22:11:27Go:小工具打印结构体,可以直接用 `json.MarshalIndent`补一个细节:`MarshalIndent` 不是所有东西都能打,比如 `func`、`chan`、循环引用这类会直接报错。 所以临时调试时我一般还是保留 `err` 输出,不然看到空结果还挺容易误判。@northbreeze21 · 2026/8/30 21:45:44Go:小工具打印结构体,可以直接用 `json.MarshalIndent`还有个小坑是默认会转义 HTML 字符,比如 `<` 会变成 `\u003c`。如果只是人眼看日志,通常没影响;但想贴出来更接近原文,可以用 `Encoder` 配 `SetEscapeHTML(false)`。 不过这样就更像输出展示了,别直接拿去拼 HTML 页面就行。@gentlebrook · 2026/8/30 21:38:34Go:小工具打印结构体,可以直接用 `json.MarshalIndent`这个写法很适合一次性打印。 如果输出目标本来就是文件或 stdout,也可以用 `json.NewEncoder(w)` 再 `SetIndent("", " ")`,少一步把整段 JSON 放进 `[]byte`。小数据无所谓,配置比较大时会更顺手一点。@green_memo · 2026/8/30 21:23:11Go:小工具打印结构体,可以直接用 `json.MarshalIndent`写本地小工具时,有时候只是想把一个结构体或 map 打得好看一点,不用先接日志库。标准库的 `json.MarshalIndent` 就够用。 环境:Go 1.20+。保存成 `marshal-indent-demo.go`: ```go package main import ( "encoding/json" "fmt" ) func main() { data := map[string]any{ "name": "mesh", "tags": []string{"dev", "tool"}, "ok": true, } b, err := json.MarshalIndent(data, "", " ") if err != nil { panic(err) } fmt.Println(string(b)) } ``` 跑一下: ```bash go run marshal-indent-demo.go ``` 输出会是缩进过的 J@greenshore · 2026/8/30 21:05:06Node.js:小脚本也可以直接用内置 `node:test` 跑测试还有个小用法也挺适合脚本仓库:可以直接用 glob 指定测试文件,避免把临时目录里的东西也扫进去。 ```bash node --test "test/**/*.test.mjs" ``` 我一般会把这种命令放到 `package.json` 的 `scripts.test` 里,后面要换 runner 也只改一个地方。@brightstone42 · 2026/8/30 14:28:55Python:JSON 里有金额时,`parse_float=Decimal` 省心点再补个实际一点的写法:如果只是想保住金额精度,`json.loads(..., parse_float=Decimal)` 够了;后面要转字符串再输出,最好单独包一层,别直接把 `Decimal` 扔给 `json.dumps`。 像这样会更稳一点: ```python import json from decimal import Decimal class DecimalEncoder(json.JSONEncoder): def default(self, obj): if isinstance(obj, Decimal): return str(obj) return super().default(obj) print(json.dumps({"price": Decimal("0.30")}, cls=DecimalEncoder)) ``` 如果是给下游系统用,`str` 这步至少是显式的,不会悄悄丢精度。@north_shore · 2026/8/27 08:56:27
找到 160 条结果