收藏!这些提高程序员生产力的工具你用过吗?
随着文件、数据集和配置的增长,搜寻数据变得越来越困难。然而,有许多工具可以帮助我们在处理大型 JSON 和 YAML 文件、复杂的正则表达式、SQL 数据库关系、复杂的开发环境等场景时提高工作效率。
JSON
JSON 是一种对计算机友好但对开发人员不利的格式。即使是相对较小的 JSON 对象也很难读取和遍历,但有一个工具可以提供帮助!
JSON Visio 是一个从 JSON 对象生成图表的工具。这些图表比文本格式更容易导航,并且更方便,该工具还允许您搜索节点。此外,生成的图表也可以作为图像下载。
您可以在jsonvisio网站使用 Web 版本,也可以将其作为 Docker 容器在本地运行。
正则表达式
正则表达式 (RegEx) 因极难阅读而闻名。本文推荐 2 种工具来帮助理解复杂的 RegEx:
第一个是 https://regex101.com/
它可以帮助您构建和测试正则表达式,以及将它们分解并识别其各个部分。
第二个是 https://regex-vis.com
它从 RegEx 生成一个图表,这对于理解表达式的实际作用非常有帮助。
YAML
YAML 是一种可读的语言,但它通常不是可读的。众所周知,具有多级缩进的长 YAML 文档可能很难导航和排除故障。
为了避免花费不合理的时间来寻找错误的缩进,我建议您使用模式验证并让您的 IDE 完成所有工作。您可以使用来自 https://schemastore.org/json
的验证模式或自定义模式(例如 Kubernetes 的这些模式)来验证您的文件。这些将适用于 JetBrains 产品(例如 Pycharm、IntelliJ)以及 VSCode。
如果您更喜欢使用 vim 作为编辑器,我建议您使用可以帮助您发现错误的自定义格式。我的首选配置如下所示:
# Add this line to "~/.vimrc"
autocmd FileType yaml setlocal ai et cuc sw=2 ts=2
生成的格式将如下所示:
除了上述工具之外,使用 YAML linter 也是一个好主意,它将验证和清理您的文档。
最后,如果您正在使用 OpenAPI/Swagger YAML 规范,那么您可以使用 https://editor.swagger.io/ 来查看/验证/编辑您的架构。
SQL
有很多用于处理关系数据库的软件,但是其中大多数都专注于连接到数据库实例和运行 SQL 查询。这些功能非常方便,但对使用有数百个表的数据库进行导航可能非常困难。一个可以解决这个问题的工具是 Jailer:
Jailer 是一种工具,它可以通过跟随外键在数据库中导航。
Git
Git - 一个我们每天都在使用的具有绝对糟糕用户体验的软件 - 也可以使用一些工具来导航历史记录(日志)、暂存/提交文件、查看差异或重新定位分支。
对于上述所有问题,我选择的工具是 IntelliJ/PyCharm git 集成——在我看来,真的没有比这更好的工具来处理与 git 相关的东西了。
如果您不是 IntelliJ/PyCharm 用户,或者您更喜欢留在终端中,那么以下命令可以让您更轻松一些:
git log --graph --abbrev-commit --decorate --all \
--format=format:"%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(dim white) \
- %an%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n %C(white)%s%C(reset)"
上面的命令将打印一个直观可读的提交历史图表,看起来像:
如果您还希望改进 diffing 功能,可以使用 git diff...--word-diff--color-words
:
从上面的 2 个示例中可以看出,通过足够的技巧,您也许可以使命令行git体验在某种程度上可以忍受。
如果您想完全避免使用简单的 git CLI,可以尝试使用 forgit - 一个用于交互式使用 git 的 TUI:
上面的屏幕截图显示了交互式且漂亮的 git 日志。该工具支持几乎所有的 git 子命令,最重要的是rebase、cherry-pick、diff 和 commit。有关功能的完整列表和更多屏幕截图,请参阅项目的存储库。
除了使用 git 或您的 IDE 功能之外,您还可以获取其他有助于复杂文件差异化的工具。一个非常强大的工具是 Difftastic。支持多种语言的 Difftastic 语言感知差异工具。
如果您想要一个专门用于区分 JSON、XML、HTML、YAML 等结构化语言的工具,那么 Graphtage 是一个不错的选择。在语义上来说,即使您更改Graphtage元素的顺序,也能正确发现差异。
最后,如果您更喜欢可视化工具,那么您可能会发现 Meld 很有用,因为它提供了与 JetBrains 产品类似的体验。
Docker
在 DevOps 方面,使用 Docker 时,用 docker-compose
命令启动一堆容器并最终导致难以解决的混乱情况并不少见。
Lazydocker
是同时处理多个 Docker 容器的绝佳工具。如果您不相信我,请查看项目存储库中的 “elevator pitch”
。
如果您更喜欢基于浏览器的工具,您可能想尝试 Portainer,它提供了用于导航/检查 Docker 容器、卷、图像等的仪表板。
Kubernetes
考虑到每个 API 资源都可以使用可视化工具,涉及到 Kubernetes 需要涵盖很多内容。然而,有几个值得注意的领域(确实是痛点),通常需要可视化工具来有效地设置/管理。
第一个是 NetworkPolicy
,可以使用 https://editor.cilium.io/
进行可视化和配置。即使您更喜欢手工制定策略,我仍然建议您使用此工具直观地验证它们。
另一个类似的工具是 NetworkPolicyViewer
,它只专注于策略的可视化,并且具有更简单、更易读的图表。
我建议使用此网络策略配方集合来测试这 2 个工具,看看它们如何对您的工作流程有所帮助。
配置 Kubernetes 的另一个痛点是 RBAC,更具体地说是Roles、RoleBindings 及其集群范围的替代方案。有几个工具可以帮助解决这些问题:
Krane
是一种工具,可以生成显示所有角色和主题之间关系的图表。Krane
还具有更多功能,包括 RBAC 风险评估、报告和警报,以及使用 CypherQL 查询/询问 RBAC 规则。
Krane
的一个更简单的替代方案是 rbac-tool
,它可以作为 kubectl
插件安装。它还可以分析、审计、询问 RBAC 规则,但最重要的是,可以将它们可视化:
最后,如果您更关心轻松配置 RBAC 而不是查看漂亮的图表,那么 Permissionmanager
权限管理器是适合您的工具。
除了用于网络策略或 RBAC 之类的专用工具之外,您还可以使用通用仪表板,例如:
Lens
- Kubernetes IDE,它为管理集群带来了一些理性,特别是与 Lens Resource Map 结合使用时,它将 Kubernetes 资源及其关系显示为实时力导向图。
像往常一样,还有基于 CLI 的工具,它提供了比 kubectl 更多的功能。它被称为 k9s,它确实让 Kubernetes 中的导航、观察和管理部署应用程序变得更加容易:
小结
本文重点介绍开发人员/DevOps 工具,但还有 2 个工具值得一提。首先是 Mermaid.js
,用于创建漂亮的图表(作为代码),现在与 GitHub markdown 集成。另一个是 MathJax
- 用于可视化数学表达式,最近也受到 GitHub markdown 的支持。