小型编程技巧

Lobsters Hottest 工具

摘要

文章分享了一系列小型编程技巧和工具,例如命令行快捷键、数据库查询和JavaScript特性,这些可以提升日常工程生产力。

<p><a href="https://lobste.rs/s/f65fy3/small_programming_tricks">评论</a></p>
查看原文
查看缓存全文

缓存时间: 2026/09/15 23:18

# 实用的编程小技巧 原文链接:https://will-keleher.com/posts/small-programming-tricks-matter/ 在日常工作中,我认为工程生产力很大程度上源于那些零散的小知识:知道某个语言特性存在;明白莫名的TCP延迟可能与TCP_NO_DELAY设置和Nagle算法相关;掌握解除git困境的正确命令;或是了解用`sed`重写文件的技巧。 从某种意义上说,这显而易见:任何知识体系都由更小的知识碎片组成。这些小知识碎片*当然*重要。 但我认为有些小知识特别有价值,且不需要太多前置知识储备。即使不懂Python,也可以用`python3 -m http.server`在目录中快速启动简易服务器,这或许能让你的工作更顺畅些。下面分享一些实例: - 你可能知道`ctrl + r`可以搜索终端命令历史记录,但若安装fzf(https://github.com/junegunn/fzf),可设置让`ctrl + r`实现模糊搜索。想要更强大的功能,atuin(https://github.com/ellie/atuin)可用可搜索的SQLite数据库替代shell历史记录。per-directory-history(https://github.com/jimhester/per-directory-history)则支持在特定目录命令搜索与全局命令搜索之间切换。最后还可以配置历史记录存储量:相关StackOverflow问答(https://unix.stackexchange.com/questions/273861/unlimited-history-in-zsh)。 - SQL查询可以`SELECT`而不必指定`FROM`子句。这对测试数据库函数功能或回忆`SELECT TRUE <> NULL`的运作方式很有帮助。1(https://will-keleher.com/posts/small-programming-tricks-matter/#fn:1) - PostgreSQL和MySQL都支持`EXPLAIN ANALYZE`,它会实际执行查询并返回大量性能分析信息。 - 正则表达式中的`\b`是词边界断言(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Word_boundary_assertion),能轻松定位单词开头或结尾。 - 使用对数分析指标可了解目标字段值的分布情况:`` const bucket = Math.floor(Math.log10(userInGroupCount)) metrics.increment("my_metric", { bucket }); `` - 现代JS已支持Array.flatMap(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flatMap)、Object.entries(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries)和Promise.withResolvers(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/withResolvers)。 - 在NodeJS中,可通过创建https.Agent(https://nodejs.org/api/https.html#class-httpsagent)并将其传递给HTTP请求来保持与外部资源的连接:`fetch(url, {method, agent})`。这对降低延迟有显著效果。 - `git log -S pattern`("git pickaxe"功能 https://git-scm.com/book/en/v2/Git-Tools-Searching)能找出所有*添加或删除*过指定字符串的提交。在维护旧代码库时尤其有用!(`git log -G pattern`功能类似,但会同时显示字符串被移动的情况) - 类似`cd -`,可使用`git checkout -`切换至上一个HEAD指针位置。 - 你可能不需要`find`命令(https://will-keleher.com/posts/you-probably-dont-need-find/)。许多`find`命令可用glob模式如`**/*.md`替代。多数shell原生支持此功能,但bash需要通过`shopt -s globstar`启用。 - 同理,多数开发者会更倾向使用`rg`(ripgrep)而非`grep`、`ack`或`ag`。 - zsh的高级补全功能默认未启用:`` if type brew &>/dev/null; then FPATH="$(brew --prefix)/share/zsh/site-functions:${FPATH}" fi autoload -Uz compinit compinit `` 也许你早已知晓这些技巧!或者你的工作领域让这些技巧毫无用武之地。即使这套技巧不适合你,我相信你这些年积累的独门秘籍必定让你的工作更高效。 在企业环境中,我认为更多知识属于这类高价值的小技巧: - 调试$问题时,请使用$数据源 - $某同事精通$领域,遇到困难可随时求助 - 关于$技术难点的优质文档在此处 - 当$现象发生时,意味着需要手动扩容 - 执行服务滚动重启的命令是:$此命令 - 使用$工具可轻松实现$问题的脚本化 在前公司,我曾每天在工程团队的Slack频道分享一个小技巧(涵盖技术与业务),大家反馈很有帮助。即使你知道其中9个技巧,那第10个文档或方法或许能节省你的时间!每日一技巧的数量既不会让人不堪重负,偶尔还能激发有益讨论。如果你在公司是资深工程师,或许可以尝试类似做法。

相似文章

值得记忆的原生网页技巧

Hacker News Top

HTMLcat 是一个提供针对 HTML、CSS 和 JavaScript 的小型原生网页技巧的资源,包括示例以及浏览器支持和无障碍访问的说明。

改变我世界的十行代码

Lobsters Hottest

作者回顾了十行代码,这些代码对他意义非凡,从编程入门到怀旧的编程技巧,突显了编程中的情感纽带。