收藏!這些提高程序員生產(chǎn)力的工具你用過(guò)嗎?
隨著文件、數(shù)據(jù)集和配置的增長(zhǎng),搜尋數(shù)據(jù)變得越來(lái)越困難。然而,有許多工具可以幫助我們?cè)谔幚泶笮?JSON 和 YAML 文件、復(fù)雜的正則表達(dá)式、SQL 數(shù)據(jù)庫(kù)關(guān)系、復(fù)雜的開(kāi)發(fā)環(huán)境等場(chǎng)景時(shí)提高工作效率。
JSON
JSON 是一種對(duì)計(jì)算機(jī)友好但對(duì)開(kāi)發(fā)人員不利的格式。即使是相對(duì)較小的 JSON 對(duì)象也很難讀取和遍歷,但有一個(gè)工具可以提供幫助!

JSON Visio 是一個(gè)從 JSON 對(duì)象生成圖表的工具。這些圖表比文本格式更容易導(dǎo)航,并且更方便,該工具還允許您搜索節(jié)點(diǎn)。此外,生成的圖表也可以作為圖像下載。
您可以在jsonvisio網(wǎng)站使用 Web 版本,也可以將其作為 Docker 容器在本地運(yùn)行。
正則表達(dá)式
正則表達(dá)式 (RegEx) 因極難閱讀而聞名。本文推薦 2 種工具來(lái)幫助理解復(fù)雜的 RegEx:
第一個(gè)是 https://regex101.com/

它可以幫助您構(gòu)建和測(cè)試正則表達(dá)式,以及將它們分解并識(shí)別其各個(gè)部分。
第二個(gè)是 https://regex-vis.com

它從 RegEx 生成一個(gè)圖表,這對(duì)于理解表達(dá)式的實(shí)際作用非常有幫助。
YAML
YAML 是一種可讀的語(yǔ)言,但它通常不是可讀的。眾所周知,具有多級(jí)縮進(jìn)的長(zhǎng) YAML 文檔可能很難導(dǎo)航和排除故障。
為了避免花費(fèi)不合理的時(shí)間來(lái)尋找錯(cuò)誤的縮進(jìn),我建議您使用模式驗(yàn)證并讓您的 IDE 完成所有工作。您可以使用來(lái)自 https://schemastore.org/json 的驗(yàn)證模式或自定義模式(例如 Kubernetes 的這些模式)來(lái)驗(yàn)證您的文件。這些將適用于 JetBrains 產(chǎn)品(例如 Pycharm、IntelliJ)以及 VSCode。
如果您更喜歡使用 vim 作為編輯器,我建議您使用可以幫助您發(fā)現(xiàn)錯(cuò)誤的自定義格式。我的首選配置如下所示:
# Add this line to "~/.vimrc"
autocmd FileType yaml setlocal ai et cuc sw=2 ts=2
生成的格式將如下所示:

除了上述工具之外,使用 YAML linter 也是一個(gè)好主意,它將驗(yàn)證和清理您的文檔。
最后,如果您正在使用 OpenAPI/Swagger YAML 規(guī)范,那么您可以使用 https://editor.swagger.io/ 來(lái)查看/驗(yàn)證/編輯您的架構(gòu)。
SQL
有很多用于處理關(guān)系數(shù)據(jù)庫(kù)的軟件,但是其中大多數(shù)都專(zhuān)注于連接到數(shù)據(jù)庫(kù)實(shí)例和運(yùn)行 SQL 查詢(xún)。這些功能非常方便,但對(duì)使用有數(shù)百個(gè)表的數(shù)據(jù)庫(kù)進(jìn)行導(dǎo)航可能非常困難。一個(gè)可以解決這個(gè)問(wèn)題的工具是 Jailer:

Jailer 是一種工具,它可以通過(guò)跟隨外鍵在數(shù)據(jù)庫(kù)中導(dǎo)航。
Git
Git - 一個(gè)我們每天都在使用的具有絕對(duì)糟糕用戶(hù)體驗(yàn)的軟件 - 也可以使用一些工具來(lái)導(dǎo)航歷史記錄(日志)、暫存/提交文件、查看差異或重新定位分支。
對(duì)于上述所有問(wèn)題,我選擇的工具是 IntelliJ/PyCharm git 集成——在我看來(lái),真的沒(méi)有比這更好的工具來(lái)處理與 git 相關(guān)的東西了。
如果您不是 IntelliJ/PyCharm 用戶(hù),或者您更喜歡留在終端中,那么以下命令可以讓您更輕松一些:
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)"
上面的命令將打印一個(gè)直觀可讀的提交歷史圖表,看起來(lái)像:

如果您還希望改進(jìn) diffing 功能,可以使用 git diff...--word-diff--color-words:

從上面的 2 個(gè)示例中可以看出,通過(guò)足夠的技巧,您也許可以使命令行g(shù)it體驗(yàn)在某種程度上可以忍受。
如果您想完全避免使用簡(jiǎn)單的 git CLI,可以嘗試使用 forgit - 一個(gè)用于交互式使用 git 的 TUI:

上面的屏幕截圖顯示了交互式且漂亮的 git 日志。該工具支持幾乎所有的 git 子命令,最重要的是rebase、cherry-pick、diff 和 commit。有關(guān)功能的完整列表和更多屏幕截圖,請(qǐng)參閱項(xiàng)目的存儲(chǔ)庫(kù)。
除了使用 git 或您的 IDE 功能之外,您還可以獲取其他有助于復(fù)雜文件差異化的工具。一個(gè)非常強(qiáng)大的工具是 Difftastic。支持多種語(yǔ)言的 Difftastic 語(yǔ)言感知差異工具。
如果您想要一個(gè)專(zhuān)門(mén)用于區(qū)分 JSON、XML、HTML、YAML 等結(jié)構(gòu)化語(yǔ)言的工具,那么 Graphtage 是一個(gè)不錯(cuò)的選擇。在語(yǔ)義上來(lái)說(shuō),即使您更改Graphtage元素的順序,也能正確發(fā)現(xiàn)差異。
最后,如果您更喜歡可視化工具,那么您可能會(huì)發(fā)現(xiàn) Meld 很有用,因?yàn)樗峁┝伺c JetBrains 產(chǎn)品類(lèi)似的體驗(yàn)。
Docker
在 DevOps 方面,使用 Docker 時(shí),用 docker-compose命令啟動(dòng)一堆容器并最終導(dǎo)致難以解決的混亂情況并不少見(jiàn)。
Lazydocker 是同時(shí)處理多個(gè) Docker 容器的絕佳工具。如果您不相信我,請(qǐng)查看項(xiàng)目存儲(chǔ)庫(kù)中的 “elevator pitch”。

如果您更喜歡基于瀏覽器的工具,您可能想嘗試 Portainer,它提供了用于導(dǎo)航/檢查 Docker 容器、卷、圖像等的儀表板。

Kubernetes
考慮到每個(gè) API 資源都可以使用可視化工具,涉及到 Kubernetes 需要涵蓋很多內(nèi)容。然而,有幾個(gè)值得注意的領(lǐng)域(確實(shí)是痛點(diǎn)),通常需要可視化工具來(lái)有效地設(shè)置/管理。
第一個(gè)是 NetworkPolicy,可以使用 https://editor.cilium.io/ 進(jìn)行可視化和配置。即使您更喜歡手工制定策略,我仍然建議您使用此工具直觀地驗(yàn)證它們。

另一個(gè)類(lèi)似的工具是 NetworkPolicyViewer,它只專(zhuān)注于策略的可視化,并且具有更簡(jiǎn)單、更易讀的圖表。
我建議使用此網(wǎng)絡(luò)策略配方集合來(lái)測(cè)試這 2 個(gè)工具,看看它們?nèi)绾螌?duì)您的工作流程有所幫助。
配置 Kubernetes 的另一個(gè)痛點(diǎn)是 RBAC,更具體地說(shuō)是Roles、RoleBindings 及其集群范圍的替代方案。有幾個(gè)工具可以幫助解決這些問(wèn)題:
Krane 是一種工具,可以生成顯示所有角色和主題之間關(guān)系的圖表。Krane 還具有更多功能,包括 RBAC 風(fēng)險(xiǎn)評(píng)估、報(bào)告和警報(bào),以及使用 CypherQL 查詢(xún)/詢(xún)問(wèn) RBAC 規(guī)則。
Krane 的一個(gè)更簡(jiǎn)單的替代方案是 rbac-tool,它可以作為 kubectl 插件安裝。它還可以分析、審計(jì)、詢(xún)問(wèn) RBAC 規(guī)則,但最重要的是,可以將它們可視化:

最后,如果您更關(guān)心輕松配置 RBAC 而不是查看漂亮的圖表,那么 Permissionmanager權(quán)限管理器是適合您的工具。
除了用于網(wǎng)絡(luò)策略或 RBAC 之類(lèi)的專(zhuān)用工具之外,您還可以使用通用儀表板,例如:
Lens- Kubernetes IDE,它為管理集群帶來(lái)了一些理性,特別是與 Lens Resource Map 結(jié)合使用時(shí),它將 Kubernetes 資源及其關(guān)系顯示為實(shí)時(shí)力導(dǎo)向圖。


像往常一樣,還有基于 CLI 的工具,它提供了比 kubectl 更多的功能。它被稱(chēng)為 k9s,它確實(shí)讓 Kubernetes 中的導(dǎo)航、觀察和管理部署應(yīng)用程序變得更加容易:

小結(jié)
本文重點(diǎn)介紹開(kāi)發(fā)人員/DevOps 工具,但還有 2 個(gè)工具值得一提。首先是 Mermaid.js,用于創(chuàng)建漂亮的圖表(作為代碼),現(xiàn)在與 GitHub markdown 集成。另一個(gè)是 MathJax - 用于可視化數(shù)學(xué)表達(dá)式,最近也受到 GitHub markdown 的支持。
