GayHub作為一個(gè)全球著名的社交網(wǎng)站,它的用途可不僅僅只有約基那么簡(jiǎn)單茁彭。
今天总寒,讓我們來(lái)說(shuō)說(shuō)為什么我越來(lái)越喜歡用Git來(lái)寫書——只是電子書,并且將它發(fā)布到GitHub上理肺。
GitHub上的第一本書
我在GitHub上寫的第一本書是《一步步搭建物聯(lián)網(wǎng)系統(tǒng)》摄闸,它是我的畢業(yè)論文與博客的合集善镰。
在這本電子書里,我和我的同學(xué)小兵一起協(xié)作來(lái)編寫內(nèi)容年枕。在今天看來(lái)炫欺,這仍是一本不錯(cuò)的物聯(lián)網(wǎng)指南。只是物聯(lián)網(wǎng)這個(gè)領(lǐng)域一直都不溫不火熏兄,并且在GitHub上比較流行的都是Web開發(fā)的項(xiàng)目品洛。
隨后只是因?yàn)檫@個(gè)項(xiàng)目,一個(gè)PACKT出版社的編輯在GitHub上找到了我摩桶,幫他們審閱《Learning Internet of Things》這本書——英文版的桥状。
從這個(gè)過程中,我學(xué)到了兩件事:
- 協(xié)作寫作是可能的
- 在GitHub上寫作意味著機(jī)會(huì)
接著硝清,我就開始嘗試去寫一本物聯(lián)網(wǎng)的書辅斟,并且我使用Git來(lái)管理。
使用Git管理內(nèi)容
在開始之前芦拿,希望你對(duì)于Pandoc這個(gè)軟件及LaTeX有一點(diǎn)點(diǎn)概念:
- Pandoc是由John MacFarlane開發(fā)的標(biāo)記語(yǔ)言轉(zhuǎn)換工具士飒,可實(shí)現(xiàn)不同標(biāo)記語(yǔ)言間的格式轉(zhuǎn)換,堪稱該領(lǐng)域中的“瑞士軍刀”蔗崎。如我們可以將Markdown轉(zhuǎn)化為Word酵幕,然后統(tǒng)計(jì)字?jǐn)?shù)——這是我最常用的功能。
LaTeX 是 Leslie Lamport 在 TeX 基礎(chǔ)上按內(nèi)容/格式分離和模塊化等思想建立的一集 TeX 上的格式缓苛。TeX是誕生于20世紀(jì)70年代末到80年代初的一款計(jì)算機(jī)排版軟件芳撒,用來(lái)排版高質(zhì)量的書籍論文,特別是包含有數(shù)學(xué)公式的文章書籍他嫡。
結(jié)合上面的兩種工具番官,我們可以用Pandoc結(jié)合LaTex來(lái)將md文件轉(zhuǎn)化成PDF格式庐完,又或者用Pandoc結(jié)合kindlegen將其轉(zhuǎn)化為Kindle能閱讀的mobi格式钢属。
(PS: 我的畢業(yè)論文的初稿就是拿Pandoc + LaTeX完成的。)
版本控制
關(guān)于使用Git來(lái)作為數(shù)據(jù)庫(kù)已經(jīng)不是一個(gè)新的概念了门躯。在那篇《編輯-發(fā)布-開發(fā)分離》中我們還提到了淆党,拿Git作為一個(gè)NoSQL數(shù)據(jù)庫(kù)。它是一個(gè)很好的數(shù)據(jù)存儲(chǔ)器讶凉,我們可以將其PUSH到我們所能創(chuàng)建的私有倉(cāng)庫(kù)里染乌。并且這個(gè)過程中是持續(xù)遞增的,你不再需要不斷地復(fù)制你的文件了——以免丟失造成的影響懂讯。
但是這: 少了一個(gè)脫稿的理由了
Diff Change
Git讓人最爽的莫過于可以Diff修改了荷憋。如果你遇到下面的一些情況:
- 需要對(duì)比兩個(gè)不同的JSON文件的字段差異
- 查看一個(gè)文件的修改歷史
請(qǐng)擁抱Git,并添加一次提交來(lái)完成這個(gè)工作褐望。
如果我們的寫作項(xiàng)目與不同的人一起完成的話勒庄,那么這可能會(huì)變成一場(chǎng)惡夢(mèng)串前。在我之前的翻譯項(xiàng)目里,我們使用Git來(lái)完成這個(gè)工作实蔽。通過Git荡碾,我們可以發(fā)現(xiàn):誰(shuí)做了一些修改,如添加內(nèi)容局装、刪除某些內(nèi)容坛吁。并且我們都很熟悉Git的話,那么我們只會(huì)在一次提交里修改盡量少的文件铐尚,并提交代碼拨脉。這樣做會(huì)避免我們破壞其他人正在修改的文件。
GitHub上的第二本書
我在GitHub上寫的第二本電子書是《GitHub漫游指南》宣增,這本電子書完全沒有任何寫作計(jì)劃——它就是一個(gè)博客全集(PS: 誰(shuí)讓我寫過的博客多呢E印)。
而這本書里统舀,我最大的感受是增量性添加——我可以不斷地往這個(gè)Repo里添加內(nèi)容匆骗,而不需要擔(dān)心影響人們的閱讀。這也是紙質(zhì)書不能比擬的誉简,當(dāng)一本書出版后碉就,只能等下一次修訂。只是修訂只是少數(shù)書的命運(yùn)闷串,而另外一個(gè)明顯的感受是瓮钥,我們只需要寫一點(diǎn)內(nèi)容就可以判斷是不是用戶想要的內(nèi)容:
在早期做出一個(gè)最小化可行產(chǎn)品,然后投向市場(chǎng)烹吵,來(lái)觀察用戶的反饋碉熄。而在這本書里,很好的驗(yàn)證了我的想法是對(duì)的肋拔,因此就被添加到Growth中去了锈津。
GitHub協(xié)作
使用GitHub來(lái)寫書的最大理由就是協(xié)作。對(duì)于熟悉GitHub的用戶來(lái)說(shuō)凉蜂,他們看到錯(cuò)誤就很樂意幫你提一下琼梆,或者是幫你來(lái)一個(gè)Pull Request來(lái)幫你修復(fù)錯(cuò)誤。這樣做也可以增加自己的Contributions窿吩,同時(shí)也可以幫助到別人茎杂。
- 持續(xù)部署。GitHub有一個(gè)很大的優(yōu)勢(shì)纫雁,即GitHub Page煌往,使用GitHub Page可以讓我們實(shí)現(xiàn)持續(xù)性部署。即我們只能一PUSH我們的修改轧邪,我們就可以將我們的最新版本呈現(xiàn)給用戶刽脖。
- 支持CNAME悼粮。這樣我們就可以使用一個(gè)簡(jiǎn)單的域名就可以完成一個(gè)高逼格的整合。
- 支持評(píng)論功能曾棕。如果你在某個(gè)修改里說(shuō)了扣猫,JavaScript是這個(gè)世界最流行的語(yǔ)言,那么有人就會(huì)在評(píng)論里說(shuō)了吧翘地。
GitHub上的第三本書
在那本《一步步搭建物聯(lián)網(wǎng)系統(tǒng)》有一個(gè)很大的問題是申尤,內(nèi)容并不是受到GitHub上的用戶歡迎的,受眾在網(wǎng)上也比較少——需要依賴于線下渠道衙耕。
而《GitHub漫游指南》有一個(gè)天生的不足是:在一開始的時(shí)候并沒有好好策劃昧穿,雖然主題很受歡迎。
因此Growth就結(jié)合了上述兩者的優(yōu)勢(shì)橙喘,即在一開始的時(shí)候做了一個(gè)MVP时鸵,發(fā)現(xiàn)還不錯(cuò)。然后還好好地編寫了內(nèi)容厅瞎。
單單只有努力看上去是不夠的饰潜,還要有一點(diǎn)點(diǎn)小技巧。
最后一個(gè)偏愛的理由是:人們并不缺乏學(xué)習(xí)的意愿和簸,只是不知道學(xué)習(xí)什么彭雾。
在GitHub上一個(gè)流行的庫(kù)可以幫助你完成工作,但是仍然需要有有文章來(lái)幫助你成長(zhǎng)锁保,幫助你變得更好薯酝。