欲善事先利器——系統篇

  • 2020 年 3 月 18 日
  • 筆記

工欲善其事,必先利其器,好鞋踢好球是非常合乎邏輯的事情。

——《長江七號》

我們的目標是提高編程技術能力。或是面向興趣編程(FOM, favorite oriented programming),或是面向錢途編程(MOM, money oritented programming),抑或真的是面向」對象「編程(SOM, spouse oriented programming),所有這些,都需要你提高自己的技術能力,才能如火純青,遊刃有餘。

那麼今天,我卻不講如何提高技術能力。

我講什麼?講效率。工欲善其事必先利其器。今天不藏私,將我珍藏多年的百寶箱一一推薦給大家。這裏面都是一些小工具,可以提高我們平時編碼和工作的效率。有其則事半功倍矣。

使孤成大業者,必此人也。 —— 曹操

哈哈

Chocolatey

鏈接:https://chocolatey.org/

如何像 Linux 一樣在 windows 下安裝軟件?

試想一下,每次重裝系統,都要安裝一堆常用的小軟件,不勝其煩。這個win 下的包管理工具,可以幫助到你。你可能聽過 Mac 的 Homebrew,deb 的 apt-get,centos 的 yum。Chocolatey 就是 win 上的 Homebrew。你可以通過一條命令來安裝大部分軟件。也有人調侃,win 上我們也應該像程序員一樣安裝軟件!

下面是我用的一些軟件。喜歡的可以選擇安裝。有些我也會在此文中推薦。

  rem 安裝chocolatey  @"%SystemRoot%System32WindowsPowerShellv1.0powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%chocolateybin"    choco install -y everything  choco install -y listary  choco install -y googlechrome  choco install -y wox  choco install -y autohotkey.portable  choco install -y bandizip    choco install -y jdk8    choco install -y git.install  choco install -y maven    choco install -y intellijidea-community  choco install -y intellijidea-ultimate  choco install -y vscode  choco install -y notepad++  choco install -y vim    choco install -y cmder  choco install -y cmdermini    choco install -y python2  choco install -y vcpython27  choco install -y python3  choco install -y pycharm    choco install -y fiddler  choco install -y jmeter    choco install -y sqlyog  choco install -y postman

Everything

鏈接:https://www.voidtools.com/zh-cn/

在 windows 上快速搜索文件和目錄的軟件。

這款軟件是我常用的,win 自帶的搜索確實不好用。everything 軟件小,搜索速度快,支持通配符查找。我經常需要查找文件,但從不在資源管理器裏面點來點去,只要我對文件名有點印象,都直接在 everything 中搜索;有時候需要打開一個路徑很深的文件(比如:hosts),查找起來也很便捷;有時候看我的 java.exe、git.exe 等在什麼目錄啊,也搜索一下(不要和我說環境變量,我自己配置的我會不知道?只是那樣煩瑣)。

Tip: 設置一個快捷鍵將更效率:選擇 everything 快捷方式 > 鼠標右鍵 > 屬性(菜單) > 快捷方式(tab) > 快捷鍵(輸入框) > 設置自己的快捷鍵(我的:Ctrl + Alt + e) 上面的步驟不需要我截圖吧,需要的自行放棄,我想還是鼠標適合你。

cmder

鏈接:https://cmder.net/

耍 Linux 的大佬略過,用 Mac 的土豪請走開。

這是一個 windows 下增強版的 cmd 命令行工具。美觀而強大。看起來很 sexy(官網說的,不是我說的)。

cmder 分 mini 版和 full 版,軟件大小不一樣,功能也不一樣。我用的 mini 版,常用一些 Linux 的命令行,grep,cat,less,curl 等等,在裏面用 IPython 也覺得更賞心悅目一點。

有人說我應該用 powershell 啊,或 Linux 子系統啊(WSL),我都用啊,不衝突,定位不一樣。

優化配置文章可以參考:

https://zhuanlan.zhihu.com/p/28400466

https://www.jeffjade.com/2016/01/13/2016-01-13-windows-software-cmder/

switcheroo

鏈接:https://github.com/kvakulo/Switcheroo/releases

軟件列表切換,和 win 自帶的 alt+tab 類似。

但我更喜歡這個,它可以在軟件列表輸入關鍵字過濾,可以很方便快捷地在軟件間切換。

Vim

鏈接:https://www.vim.org/download.php

你除了可以享受到一個偉大的編輯器,還可以幫助到烏干達小朋友。

Vim 門檻有點高,如果你只需要一個簡單的替換 notepad 的編輯器,可以移步下一個軟件:Notepad++。

如果你有興趣有毅力學習一個編輯器(打造一下,成為一個 IDE 也是可以的),來提升文本編輯的效率,不妨接觸一下。本人文本編輯,IDEA,Chrome 都通過插件 Vim 化了,上手則離不開(攤手)。

Notepad++

鏈接:https://notepad-plus-plus.org/downloads/

win 自帶文本編輯器增強版。

語法高亮,列編輯,支持插件,行號顯示,隱藏字符顯示,文本查找替換(支持正則),文件編碼修改等。

ScreenToGif

鏈接:https://www.screentogif.com/?l=zh_cn

一個小巧的錄屏軟件。

錄製和編輯 Gif。如果你可以用 Gif 來向別人展示一些操作,是不是更 nice,更易於理解?這款錄屏軟件小巧而實用,值得推薦。

Beyond compare

鏈接:https://www.scootersoftware.com/

文件夾和文件對比工具。專業級的對比,精確到詞語級別的對比。

我的配置和你的一樣啊,為什麼在我這裡不行?來先把你配置文件發我看看,我一對比,你個憨批,這裡多個字符啊。 這只是文件對比的一個場景而已,在我的桌面上有兩個文件(diff1.txt,diff2.txt),就是我經常用來對比文件用的,這樣就不用每次都新建文件,又懶了一次。

(澄清一下,我的電腦桌面是很乾凈的,絕對不是爬滿文件的那種;diff1,diff2(對比用的),臨時.txt(記錄臨時的東西的),日誌.md(每天工作日誌),workspace(按項目或需求分的文檔目錄),桌面就這樣,再加一張大氣上檔次的背景圖,僅此而已矣。)

Postman(Postwoman)

鏈接:https://www.postman.com/

一款 HTTP 圖形化客戶端。

做 Web 開發的肯定離不開它。測試接口必用。

基礎功能我就不介紹,大家都用,我講一些我常用的功能:

  1. cookies 同步(可以在 chrome 上先登錄,在 postman 上就可以同步 cookies,這樣就可以訪問需要登陸的接口)。

  2. environment 和 variables 配置(我會為不同的項目和環境配置不同的 environment 並配置一些參數,如 host,這樣同一個接口我不需要為不同的環境創建多個)。

  3. Pre-script request(Postman 支持在發送請求前先運行一段 javascript 腳本),這裡舉例一個我常用的:

    var appId = 'xxx'  var appKey = 'xxx'  var timestamp = new Date().getTime();  var nonce = Math.random().toString(36).substring(2, 10)    pm.environment.unset("appId");  pm.environment.set("appId", appId);    pm.environment.unset("timestamp");  pm.environment.set("timestamp", timestamp);    pm.environment.unset("nonce");  pm.environment.set("nonce", nonce);    //MD5加密簽名規格,並賦值給環境變量`sign`  var context = appId + timestamp + nonce + appKey  pm.environment.unset("sign");  pm.environment.set("sign", CryptoJS.MD5(context).toString());

    看出來沒有,在測試一些有 clientSecret 校驗的接口,每次手動生成 sign 實在是反人類。有了這段腳本,你就可以忘記這個事了。(關於 pre-script 大家有興趣可以去找點資料,可以的話我之後出一篇博客詳細講講,並分享一些我常用的腳本)。

Surfingkeys(或 vimium)

鏈接:surfingKeys(https://github.com/brookhong/Surfingkeys)

鏈接:vimium(https://github.com/philc/vimium)

The hacker’s browser.

兼具效率與裝逼,像極客一樣上網。這是一款 chrome 插件(Surfingkeys 是國人開發的一個增強版),讓你可以使用 vim 常用快捷方式操作 chrome 瀏覽器。體驗不用鼠標的上網方式。

打開網頁,切換標籤,網頁後退前進,mark,搜索打開書籤,網頁滾動翻頁,快速複製當前 URL,快速搜索粘貼板內容。如此這些都可以在 partner 們瞠目結舌的表情下敲擊幾下鍵盤完成。

我在乎的關鍵還是效率,是的效率。沒有別的。

PlantUML

鏈接:https://plantuml.com/zh/

像寫代碼一樣畫圖。

UML 對於技術文檔來說,真的很重要。無論是為了加深自己的理解還是更友好的展示交流。

UML 工具很多,rose,startUML,visio。我常用的是在線版的draw.io。PlantUML 可以畫幾乎所有的 UML 圖,不過我用它一般畫的最多的是時序圖流程圖。最近發現其又增加了思維導圖的特性,還兼容 Markdown 語法。看了一遍,做一些簡單的思維導圖是沒問題的。

如果讀者感興趣。可以單拎出來細講一下。

draw.io

鏈接:https://app.diagrams.net/

我常用的一個 UML 在線畫圖工具。具體不詳講。有興趣可以體驗一下。支持本地,google drive,onedrive 存儲。

Typora

Markdown 編輯器。

一個程序員必須要會寫文檔,有時候文檔比代碼重要。而寫文檔最推薦 Markdown 語法,首先語法簡單,聰明的你們半小時入門,一天就可以六六六了。其次很多博客和文檔平台都支持 Markdown 語法,一招降龍十八掌打遍天下。

懂了 Markdown 語法,你還需要什麼?沒錯,一款好用的 md 編輯器。

Typora 支持各種主題,支持即寫即渲染,支持導出各種文件(我很多接口文檔都是通過它導出的 pdf 給第三方)。

其他不多說,本文就是在 Typora 中完成的。

XMind

鏈接:https://www.xmind.cn/

記錄你的想法。

思維導圖是東尼·博贊提出的一種記錄筆記、思維、想法的方法。以此而催生了一批思維導圖軟件。各款都有自己的優點和缺點,在此我不向大家推薦軟件。加上這條,其實是推薦思維導圖這種記錄方式,無論你用什麼軟件,記下了,拓展了思維才是正確的。

最後

我的開發系統是 win,Mac 用戶和 Linux 用戶沒幫助到,抱歉(我是軟粉,巨硬最強)。

另外,沒錯,我是 Vim 黨,Emacs 黨走開。

本文每款軟件只是推薦,所以只有簡單的說明。詳細的安裝和使用說明請看下面。

如果對以上一兩款有興趣,可以自行找資料了解(推薦官網),也可以留言,有時間可以詳細分享一下我的使用經驗。如果你有其他上面沒提到的小工具,不妨在評論區一起分享。請關注我的公眾號。

MageByte