為什麼我偏愛用GitHub來寫書?
為什麼我偏愛用GitHub來寫書?
GayHub作為一個全球著名的社交網站,它的用途可不僅僅只有約基那麼簡單。
今天,讓我們來說說為什麼我越來越喜歡用Git來寫書——只是電子書,並且將它釋出到GitHub上。
GitHub上的第一本書
我在GitHub上寫的第一本書是《一步步搭建物聯網系統》,它是我的畢業論文與部落格的合集。
在這本電子書裡,我和我的同學小兵一起協作來編寫內容。在今天看來,這仍是一本不錯的物聯網指南。只是物聯網這個領域一直都不溫不火,並且在GitHub上比較流行的都是Web開發的專案。
隨後只是因為這個專案,一個PACKT出版社的編輯在GitHub上找到了我,幫他們審閱《Learning Internet of Things》這本書——英文版的。
從這個過程中,我學到了兩件事:
- 協作寫作是可能的
- 在GitHub上寫作意味著機會
接著,我就開始嘗試去寫一本物聯網的書,並且我使用Git來管理。
使用Git管理內容
在開始之前,希望你對於Pandoc這個軟體及LaTeX有一點點概念:
Pandoc是由John MacFarlane開發的標記語言轉換工具,可實現不同標記語言間的格式轉換,堪稱該領域中的“瑞士軍刀”。如我們可以將Markdown轉化為Word,然後統計字數——這是我最常用的功能。
LaTeX 是 Leslie Lamport 在 TeX 基礎上按內容/格式分離和模組化等思想建立的一集 TeX 上的格式。TeX是誕生於20世紀70年代末到80年代初的一款計算機排版軟體,用來排版高質量的書籍論文,特別是包含有數學公式的文章書籍。
結合上面的兩種工具,我們可以用Pandoc結合LaTex來將md檔案轉化成PDF格式,又或者用Pandoc結合kindlegen將其轉化為Kindle能閱讀的mobi格式。
(PS: 我的畢業論文的初稿就是拿Pandoc + LaTeX完成的。)
版本控制
關於使用Git來作為資料庫已經不是一個新的概念了。在那篇《編輯-釋出-開發分離》中我們還提到了,拿Git作為一個NoSQL資料庫。它是一個很好的資料儲存器,我們可以將其PUSH到我們所能建立的私有倉庫裡。並且這個過程中是持續遞增的,你不再需要不斷地複製你的檔案了——以免丟失造成的影響。
但是這: 少了一個脫稿的理由了
Diff Change
Git讓人最爽的莫過於可以Diff修改了。如果你遇到下面的一些情況:
- 需要對比兩個不同的JSON檔案的欄位差異
- 檢視一個檔案的修改歷史
請擁抱Git,並新增一次提交來完成這個工作。
如果我們的寫作專案與不同的人一起完成的話,那麼這可能會變成一場惡夢。在我之前的翻譯專案裡,我們使用Git來完成這個工作。通過Git,我們可以發現:誰做了一些修改,如新增內容、刪除某些內容。並且我們都很熟悉Git的話,那麼我們只會在一次提交裡修改儘量少的檔案,並提交程式碼。這樣做會避免我們破壞其他人正在修改的檔案。
GitHub上的第二本書
我在GitHub上寫的第二本電子書是《GitHub漫遊指南》,這本電子書完全沒有任何寫作計劃——它就是一個部落格全集(PS: 誰讓我寫過的部落格多呢!)。
而這本書裡,我最大的感受是增量性新增——我可以不斷地往這個Repo裡新增內容,而不需要擔心影響人們的閱讀。這也是紙質書不能比擬的,當一本書出版後,只能等下一次修訂。只是修訂只是少數書的命運,而另外一個明顯的感受是,我們只需要寫一點內容就可以判斷是不是使用者想要的內容:
在早期做出一個最小化可行產品,然後投向市場,來觀察使用者的反饋。而在這本書裡,很好的驗證了我的想法是對的,因此就被新增到Growth中去了。
GitHub協作
使用GitHub來寫書的最大理由就是協作。對於熟悉GitHub的使用者來說,他們看到錯誤就很樂意幫你提一下,或者是幫你來一個Pull Request來幫你修復錯誤。這樣做也可以增加自己的Contributions,同時也可以幫助到別人。
- 持續部署。GitHub有一個很大的優勢,即GitHub Page,使用GitHub Page可以讓我們實現持續性部署。即我們只能一PUSH我們的修改,我們就可以將我們的最新版本呈現給使用者。
- 支援CNAME。這樣我們就可以使用一個簡單的域名就可以完成一個高逼格的整合。
- 支援評論功能。如果你在某個修改裡說了,JavaScript是這個世界最流行的語言,那麼有人就會在評論裡說了吧。
GitHub上的第三本書
在那本《一步步搭建物聯網系統》有一個很大的問題是,內容並不是受到GitHub上的使用者歡迎的,受眾在網上也比較少——需要依賴於線下渠道。
而《GitHub漫遊指南》有一個天生的不足是:在一開始的時候並沒有好好策劃,雖然主題很受歡迎。
因此Growth就結合了上述兩者的優勢,即在一開始的時候做了一個MVP,發現還不錯。然後還好好地編寫了內容。
單單隻有努力看上去是不夠的,還要有一點點小技巧。
最後一個偏愛的理由是:人們並不缺乏學習的意願,只是不知道學習什麼。
在GitHub上一個流行的庫可以幫助你完成工作,但是仍然需要有有文章來幫助你成長,幫助你變得更好。
更多精彩內容歡迎關注我的微信公眾號:Phodal
相關文章
- [譯] 為什麼我用 JavaScript 來編寫 CSSJavaScriptCSS
- GitHub:我們為什麼會棄用jQuery?GithubjQuery
- KPI過時了?為什麼科技公司更偏愛OKR?KPIOKR
- 網際網路巨頭們為什麼偏愛小程式業務
- 我們為什麼熱愛種田遊戲遊戲
- 為什麼我不贊成開發來寫檢視
- 為什麼我要用C寫遊戲遊戲
- 我為什麼寫《致IT同仁》薦
- 為什麼我拒絕用Kotlin編寫安卓應用?Kotlin安卓
- 為什麼要寫《機器學習實踐應用》這本書機器學習
- 我為什麼冒險寫QuarkAdmin!
- 為什麼我要寫自己的框架?框架
- 大學生手寫情書走紅網路:我為什麼不吃飯
- The Next Web:為何越來越多亞洲開發者偏愛AndroidWebAndroid
- 我看《App 為什麼不是未來?》APP
- React Hooks 可以為我們帶來什麼,及為什麼我覺得React才是前端的未來ReactHook前端
- 為什麼我們越來越不喜歡用網站?網站
- Koala Framework是什麼?我為什麼要寫這個框架?Framework框架
- 我們為什麼要技術寫作
- Tobias Koppers:我當初為什麼寫webpackWeb
- 為什麼我要編寫自己的UIKitUI
- 為什麼 SQLite 用 C 編寫?SQLite
- 為什麼我的mysql配不起來MySql
- 為什麼我要用 C 來開發遊戲?開發遊戲
- GitHub的革命:為什麼我們現在都在開源Github
- 為什麼使用Scrapy框架來寫爬蟲?框架爬蟲
- 實體商家為什麼都偏愛這款短視訊同城拓客營銷工具?
- 為什麼我希望用C而不是C++來實現ZeroMQC++MQ
- [譯]我們為什麼要寫 super(props)?
- 為什麼我們鍾愛動作類遊戲,它究竟有什麼樣的魅力遊戲
- 為什麼我認為Flutter是移動應用程式開發的未來Flutter
- 我為什麼認為Flutter是移動應用程式開發的未來?Flutter
- 《空洞騎士》:我們為什麼深愛這款玩起來看著像是自虐的遊戲遊戲
- 為什麼前端工程越來越愛使用 Monorepo 架構?前端Mono架構
- 為什麼我越來越喜歡用DDD — DDD架構篇(1)架構
- 為什麼越來越少的人用jQueryjQuery
- 我為什麼開始寫技術公眾號
- 我為什麼鼓勵工程師寫部落格工程師