1. 程式人生 > >欲善事先利器——系統篇

欲善事先利器——系統篇

> 工欲善其事,必先利其器,好鞋踢好球是非常合乎邏輯的事情。 > > ——《長江七號》 我們的目標是提高程式設計技術能力。或是面向興趣程式設計(FOM, favorite oriented programming),或是面向錢途程式設計(MOM, money oritented programming),抑或真的是面向”物件“程式設計(SOM, spouse oriented programming),所有這些,都需要你提高自己的技術能力,才能如火純青,遊刃有餘。 那麼今天,我卻不講如何提高技術能力。 我講什麼?講效率。工欲善其事必先利其器。今天不藏私,將我珍藏多年的百寶箱一一推薦給大家。這裡面都是一些小工具,可以提高我們平時編碼和工作的效率。有其則事半功倍矣。 > 使孤成大業者,必此人也。 —— 曹操 ![哈哈](https://magebyte.oss-cn-shenzhen.aliyuncs.com/common/caocao.png) ## Chocolatey 連結:https://chocolatey.org/ 如何像 Linux 一樣在 windows 下安裝軟體? 試想一下,每次重灌系統,都要安裝一堆常用的小軟體,不勝其煩。這個**win 下的包管理工具**,可以幫助到你。你可能聽過 Mac 的 Homebrew,deb 的 apt-get,centos 的 yum。Chocolatey 就是 win 上的 Homebrew。你可以通過一條命令來安裝大部分軟體。也有人調侃,win 上我們也應該像程式設計師一樣安裝軟體! 下面是我用的一些軟體。喜歡的可以選擇安裝。有些我也會在此文中推薦。 ```bash rem 安裝chocolatey @"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin" 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 指令碼),這裡舉例一個我常用的: ```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](https://app.diagrams.net/)。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](https://magebyte.oss-cn-shenzhen.aliyuncs.com/wechat/Snip20200314