作為一名死coder,每天最常見的動作就是檢視各種API文件,你一定也有過同時開啟N個視窗(HTML、PDF、CHM),不停的在編輯器與文件之間切換的感受吧?怎麼說呢,其實我很討厭這種枯燥無味的動作,那麼如何才能提高效率,減少無用功呢?下面就給大家介紹一款非常好用的Mac小工具:Dash。
官方用一句話就概括了它的用途:Dash是一個API文件瀏覽器( API Documentation Browser),以及程式碼片段管理工具(Code Snippet Manager)。你沒看錯,它就只有這兩個功能,但確實是程式設計師(至少對於我來說)最為關心的特性,自己之前也用過了不少類似的工具,可以毫不誇張地說,Dash是它們之中做的最好的一個!
-
下載 關於下載我還是推介官網下載吧(kapeli.com/dash)
-
強悍的API文件瀏覽、搜尋功能 想必這個功能是大家最常用的了吧,每天要反覆檢視、搜尋那麼多的API細節,沒有一個好工具,單靠自己的雙手如何應付得來?視窗不停的切來切去,很煩啊!Dash採用整合單一視窗的方式,很好的解決了這個問題。看下面的截圖:
上圖便是Dash的API瀏覽器主介面:左側邊欄是各種程式語言以及框架(取決於你下載安裝了多少文件集合)的導航大綱,點選某個節點,右邊的內容區域就是文件的詳細資訊啦,非常直觀。也可以在左上方的搜尋框內通過輸入關鍵字,查詢相關的API文件,非常類似全文檢索的實現方式,Dash的響應速度非常快!關鍵是可以同時查詢不同的語言、框架內容,實在是太方便了。看到這裡你也許要問了,這跟我們平常切換到特定的文件視窗(比如一個PDF或者一個CHM檔案),再ctrl + f查詢有什麼區別,不是多此一舉嗎?其實你錯了,Dash可以通過快捷鍵來顯示、隱藏文件視窗,它提供了配置介面以便使用者自行設定(我比較習慣alt+space,因為其他軟體很少用到這個組合鍵):
Dash自帶了豐富的API文件,涉及各種主流的程式語言和框架,全列出來很嚇人的: ActionScript, Android, C++, Cappuccino, Cocos2D, Cocos3D, Corona, CSS, Django, Groovy, HTML, Java, JavaFX, JavaScript, jQuery, Kobold2D, Lua, MySQL, Node.js, Man Pages, Perl, PHP, Python, Ruby, Ruby on Rails, Scala, Sparrow, SQLite, Unity 3D, WordPress, XSLT, XUL
而且它的文件庫採用了docset格式,高階使用者基於網站提供的教程,很容易就能自行新增其他的擴充文件,其實Dash在最初發布的時候,只支援很少的幾個文件瀏覽,好像只有Java、HTML、CSS這些,是後來通過使用者不斷貢獻,以及作者及時的反饋,逐步壯大,才具備瞭如此廣泛的語言、框架支援。要新增API文件,開啟軟體配置介面,切換到Docset選項卡即可看到所有內建的文件列表,按需要自行下載即可(如果是自己製作的docset,雙擊即可匯入Dash):
筆者剛接觸php沒多久,在dash中下載了一個php的文件,只有英文版的,php作為比較流行的指令碼語言,文件官網提供了多種語言版本,本來自己想在網上下載別人製作好的php中文文件for dash,可下載下來的幾個,看了一下都不太滿意,本人有點完美主義,於是萌發了自己動手製作一個雙語版的。
剛開始,參考了dash的官網關於製作docset的教程,還是找不著思路。後來在網上繼續搜尋教程,找到了一個日本網友的方法。
docset檔案本質上就是一個資料夾,選中下載好的英文PHP.docset,右鍵顯示包內容,開啟資料夾
繼續解壓tarix.tgz,又得到一個PHP.docset,這難道是俄羅斯套娃嗎,繼續顯示包內容,上圖看一下目錄層次的結構
目錄的層次還真夠深的,dash本質上說就是一個離線的api文件瀏覽器,內部就是一個safari瀏覽器,文件本質上就是html,下圖是一個php的函式abs的頁面,右鍵可以 inspect element(審查元素),
也可以在瀏覽器中開啟頁面:http://127.0.0.1:50154/Dash/atuxkowm/php.net/manual/en/function.abs.html
dash的原理就是給離線的html檔案建立索引
我們能不能保持原有的索引不變,僅僅只是替換目錄中的英文html為中文html呢,經過測試是可行的。
思路可行,但工作量著實不小,最新版的英文文件下有14888個html檔案,怎麼樣才能弄到對應的中文html檔案呢,其實php文件官網已經提供了,
上圖中左邊的紅框是不包含使用者筆記版的多html檔案,右邊紅框是包含使用者筆記的chm檔案(可以解壓成多個html檔案)。細想一下都不太符合我的要求,我要的中文版必須要有使用者筆記,排版也要和英文版的一致,chm檔案中的排版缺了麵包屑導航,而且解壓chm檔案也很麻煩。無意間檢視了一下英文版的html原始碼檔案,發現了每個html都有下面的註釋
<!-- Mirrored from php.net/manual/en/about.formats.php by HTTrack Website Copier/3.x [XR&CO'2014], Tue, 02 Oct 2018 07:42:58 GMT -->
搜尋 HTTrack Website Copier 之後,才知道這是一個專門下載網頁離線到本地的一個工具,原來官方的php dash文件是這麼搞出來的,我又興沖沖的研究這個離線下載的玩意,最後搞了很久,還是放棄了,我原本只想下載中文的文件,也許是我沒配置好,下載的中文目錄中居然還下載了別的語言的版本,下載的時間遙遙無期,等不及。
後來自己琢磨了一下,根據html的檔名稱很容易推匯出中文文件的線上名稱,比如:function.abs.html的 地址就是:php.net/manual/zh/f…
我想到了一個idea,那就是遍歷英文文件的目錄,得到檔案的名稱,然後根據推導的名稱下載文件。 具體的下載方法就是寫一個php的指令碼,用curl下載網頁。
經歷了一番除錯、再除錯的折騰後,也花了很長的時間,終於把中文文件下載下來了。又遇到了新的問題,中文文件裡面的連結很多都是指向php的,離線之後的是html檔案,不匹配,還有樣式的連結還是指向線上的,於是又花了一番功夫對中文文件做了一些正則的匹配替換,改寫離線的樣式檔案,最後對中英文的文件都加上了相互的連結,製作成了雙語版的php dash文件。
追求完美的我,其實最後還是被打敗了,因為有極少數的英文文件沒有對應的中文文件,那這個其實是php官方的事情了,我也沒轍,那就這樣唄。
最後附上,我製作的 最新php7.1的雙語版dash 文件的下載地址