← 文章 / 编程开发
Hacker News 7小时前 · 2026-09-17 02:12:16 · 5 阅读

那些不起眼的编程小技巧

在日常工作中,工程师的生产力很大程度上来自一些零碎的小知识:知道某个语言特性存在;知道莫名的 tcp 延迟多半和 TCP_NO_DELAY 设置以及 Nagle 算法有关;知道该念哪句 git “咒语”才能摆脱困境;或者会用 sed 的某个技巧来改写文件。

从某种角度看,这是显而易见的:任何你懂的东西都是由更小的知识点组成的,这些小知识当然重要。

但我认为有些知识点特别有价值,而且不需要太多前置知识作支撑。比如你完全不需要会 Python,就能用 python3 -m http.server 在某个目录下启动一个简单的服务器,但它依然能让你的工作轻松一点。下面分享几个例子:

  • 你可能知道 ctrl + r 可以搜索终端的命令历史,但装上 fzf 之后,可以让 ctrl + r 做模糊搜索。想要更强大的功能,可以用 atuin 把 shell 历史替换成一个可搜索的 SQLite 数据库。per-directory-history 则可以让你在“搜索某个目录下执行过的命令”和“搜索全部历史命令”之间自由切换。另外,历史记录的保存条数也是可以配置的,参考这个 stackoverflow 问题
  • SELECT 可以不带 FROM 使用。这在测试数据库里某个函数的实际行为时很有用,或者帮你回忆 SELECT TRUE <> NULL 是怎么回事。1
  • PostgreSQL 和 MySQL 都支持 explain analyze,它会真正执行你要优化的查询,并给出远比普通 explain 丰富的性能信息。
  • 正则表达式里的 \b,即单词边界断言(word boundary assertion),可以轻松匹配单词的开头或结尾。
  • 你可以对指标使用对数,来感受你感兴趣的某个字段中数值的分布情况:
    const bucket = Math.floor(Math.log10(userInGroupCount))
    metrics.increment("my_metric", { bucket });
    
  • 现代 JS 已支持 Array.flatMapObject.entriesPromise.withResolvers
  • 在 NodeJS 中,你可以通过创建 https.Agent 并将其提供给 HTTP 请求来保持与外部资源的连接打开:fetch(url, {method, agent})。这对延迟会有显著影响。
  • git log -S pattern"git pickaxe")可以列出所有在代码库中添加或移除了某个字符串的提交。它在处理较旧的代码库时尤其有用!(git log -G pattern 功能类似,但还会显示该行被移动的情况)
  • 类似于 cd -,你可以使用 git checkout - 检出上一次的 HEAD。
  • 你很可能不需要 find。许多 find 命令可以替换为像 **/*.md 这样的通配符。大多数 shell 默认支持此功能,但在使用 bash 时,你需要通过 shopt -s globstar 开启它。
  • 沿此思路,大多数人可能更希望使用 rg(ripgrep)而不是 grepackag
  • zsh 的高级自动补全功能默认未开启:
    if type brew &>/dev/null; then
        FPATH="$(brew --prefix)/share/zsh/site-functions:${FPATH}"
    fi
    autoload -Uz compinit
    compinit
    

你可能已经知道所有这些内容!或者你所在的领域让这些小技巧完全派不上用场。即使这一组技巧对你没用,我敢打赌,你经过多年积累,也有一堆让自己工作更轻松的独门秘籍。

在职场中,我更倾向于认为高杠杆的知识点往往也是这种小巧灵活的“碎片”:

  • 调试 $PROBLEM 问题时,使用 $DATA_SOURCE。
  • $PERSON 对 $AREA 领域了解甚深,遇到困难时很乐意提供帮助。
  • 关于 $HARD_THING,这里有份很棒的文档:$OVER_HERE。
  • 一旦 $THING 发生,意味着我们需要手动扩容。
  • 执行服务滚动重启时,运行 $THIS_COMMAND。
  • 使用 $UTIL 可以轻松通过脚本解决 $THAT_PROBLEM。

在上一家公司,我每天都会向工程团队在 Slack 上分享一个技巧,既有技术类的,也有公司内部特有的。大家觉得这些技巧非常实用。即使你已经知道了其中九条,那剩下的第十条文档或技巧也可能为你节省宝贵的时间!每天分享一个技巧恰好能避免信息过载,偶尔还能引发有价值的讨论。如果你在公司属于资深工程师,不妨考虑尝试类似的做法。


  1. 我认为我最早在 Julia Evan’s blog 上看到这种技巧,我觉得她的文字往往能完美地概括本文的核心思想:“微小的知识很有力量!也很有趣!而且很容易入门!!” ↩︎

原始来源: Hacker News

评论 (0)