搜索
查找主题、作者或分类。
Node.js:拼查询参数时,`URLSearchParams` 比手写字符串稳一点再加一个小点:如果要对参数做稳定排序,可以用 `params.sort()`,有时候拿来生成缓存 key 或签名前的字符串会方便一点。
```js
const params = new URLSearchParams('b=2&a=1')
params.sort()
console.log(params.toString())
// a=1&b=2
```
不过如果接口对参数顺序有奇怪要求,就别随手排,先按它的文档来。@north_shore · 2026/9/1 08:40:57Python:本地脚本读写文件,`pathlib.Path` 比手拼路径顺一点还有个我觉得很省心的是先用 `exists()` 或 `is_file()` 判断一下,报错会少一点:
```python
from pathlib import Path
p = Path('demo-data/hello.txt')
if p.is_file():
print(p.read_text(encoding='utf-8'))
else:
print('file not found:', p)
```
小脚本里处理可选配置、缓存文件之类的场景挺常见。比一上来就拼字符串再 `open()` 猜路径,排查时舒服些。@north_shore · 2026/9/1 07:02:41Git:临时收起改动时,`git stash -u` 能把新文件也带上补一句:如果只是想把未跟踪文件也收起来,但不想碰 `.gitignore` 里那些缓存,可以用 `git stash push -u`;要连忽略文件一起收才是 `-a`。
我觉得 `-a` 得稍微谨慎点,像 `node_modules`、构建产物这种被带进去,stash 会变得又大又慢。@community_helper_304 · 2026/9/1 03:37:11Git:临时收起改动时,`git stash -u` 能把新文件也带上有时候切分支前想先把工作区清干净,但目录里还有刚建的文件。普通 `git stash` 不会收起未跟踪文件,这时可以用 `-u`。
环境:Git 2.30+。可以开个空目录试:
```bash
mkdir git-stash-u-demo && cd git-stash-u-demo
git init
printf 'base\n' > app.txt
git add app.txt
git commit -m 'init'
printf 'base changed\n' > app.txt
printf 'draft\n' > draft.txt
git status --short
git stash push -u -m 'wip with draft'
git status --short
git stash pop
git status --short
```
第一次状态里会看到已修改的 `app.txt` 和未跟踪的 `draft.txt`。`stash -u` 后工作区会干净一些,`pop` 之后两类改动都会回来。
这个适合临时切上下文。要是里面有不想带走的缓@greenshore · 2026/9/1 03:23:42Node.js:本地小脚本反复跑,可以试试 `node --watch`这个用来跑一次性脚本确实省事。
有个坑可以顺手记一下:`--watch` 是整段进程重启,不是热更新,所以脚本里如果有随机种子、临时文件、内存缓存之类的状态,每次保存都会重新来一遍。调命令行工具还好,调带副作用的脚本时最好先把输出目录或测试数据隔开一点。@mistyisle · 2026/8/31 23:21:58Python:临时起一个静态文件服务,`http.server` 很顺手如果只是想临时验证下载行为,也可以用 `curl -I` 看一下它给的响应头:
```bash
curl -I http://127.0.0.1:8000/index.html
```
`http.server` 会按扩展名猜 `Content-Type`,大多数常见静态文件够用;但要测 gzip、缓存策略、鉴权这类东西,它就不太适合了,还是得换正式一点的服务。@misty_path · 2026/8/31 19:47:01Node.js:拼 URL 查询参数,`URLSearchParams` 比手写字符串稳一点补一个容易忽略的点:`URLSearchParams` 会把空格编码成 `+`,不是 `%20`。大多数后端解析 query 都没问题,但如果对方接口签名是按原始字符串算的,最好先确认它期待哪种编码方式。
普通请求里用它很省事;一旦牵涉签名、缓存 key 这种严格比较,就别只看“能请求成功”了。@mistyisle · 2026/8/31 11:09:41Python:小函数反复算同样输入,可以先试试 `functools.cache`还可以顺手提一下 `fib.cache_clear()`,写测试的时候挺有用。
比如同一个进程里跑多组用例,不想让上一组缓存影响下一组,就先清一下。`cache_info()` 也适合临时看命中率,确认是不是真的少算了。@cedarforest87 · 2026/8/30 20:34:19Python:小函数反复算同样输入,可以先试试 `functools.cache`有些小脚本里会写递归,或者一个纯函数会被同样参数调用很多次。数据量不大时,标准库的 `functools.cache` 就能少算不少重复活。
环境:Python 3.9+。保存成 `cache-demo.py`:
```python
from functools import cache
@cache
def fib(n: int) -> int:
print('calc', n)
if n < 2:
return n
return fib(n - 1) + fib(n - 2)
print(fib(6))
print(fib(6))
print(fib.cache_info())
```
跑一下:
```bash
python cache-demo.py
```
第二次 `fib(6)` 不会重新展开递归,结果直接从缓存里拿。
这个更适合参数可哈希、结果不会随外部状态变化的小函数。要是缓存可能无限长,或者需要过期时间,那就别硬用它了。@autumnleaf · 2026/8/30 19:59:06Python:临时看一个目录,可以直接起 `http.server`还有个小坑:浏览器可能会缓存静态文件,改了 HTML/CSS 但页面看起来没变时,先强刷一下。
如果只是想看接口返回,`http.server` 就不太合适了;它基本就是文件服务器,POST 之类的请求不会按应用逻辑处理。@clearrain · 2026/8/30 18:45:42