謝作如 邱奕盛
隨著安卓智能手機的普及,“開源”這一名詞逐漸被大眾接受。教育部發(fā)布的《普通高中信息技術(shù)課程標(biāo)準(zhǔn)(2017年版)》,要求重點普及“開源”思想,引導(dǎo)學(xué)生理解并自覺踐行開源的理念與知識分享的精神。
如何與更多的人一起分享自己的學(xué)習(xí)心得?除了在公共平臺發(fā)表文章外,做一個網(wǎng)站也是一個重要的途徑。但對很多人來說,做網(wǎng)站似乎是一個專業(yè)的技能,會涉及域名購買、解析等,其實做一個網(wǎng)站并沒有那么難,只要會用GitHub就可以了。
用GitHub建站的可行性分析
GitHub是全球最大的代碼共享平臺,準(zhǔn)確地說,GitHub是一個面向開源及私有軟件項目的托管平臺。除了支持Git(一個開源的分布式版本控制系統(tǒng))外,GitHub還提供了很多有趣的功能,如GitHub Pages。選擇GitHub Pages來建網(wǎng)站,理由有如下三個:
①使用方便。GitHub Pages集成在GitHub中,直接和代碼管理綁定在一起。采用代碼更新命令進行自動部署,使用起來非常方便。維護方面同時支持在線管理和客戶端管理兩種方式。②免費。GitHub免費提供了“username.github.io”的域名,還支持自定義域名,幾乎等同于一個免費的靜態(tài)網(wǎng)站服務(wù)器。③無數(shù)量限制。GitHub Pages沒有數(shù)量使用限制,每一個Repository(倉庫)都可以部署為一個靜態(tài)網(wǎng)站。
當(dāng)然,如果僅僅是發(fā)布靜態(tài)網(wǎng)站,那么更新網(wǎng)站就會變得很無趣。最近,GitHub的程序員發(fā)布了FastPages的工具,能夠?qū)⑽臋n直接轉(zhuǎn)換為網(wǎng)頁。支持的文檔類型很多,如Word、MarkDown和Jupyter等。也就是說只要按照規(guī)范上傳文檔,主頁會自動進行更新。
建立GitHub Pages的步驟介紹
首先需要注冊GitHub用戶。有了用戶后,再建一個名稱為“username.github.io”的Repository(倉庫),一個靜態(tài)網(wǎng)站就建好了。例如,筆者的用戶名是“xiezuoru”,這個庫的名稱就是“xiezuoru.github.io”。然后,在這個Repository的根目錄下建一個名稱為“index.html”的文件,輸入HTML代碼,主頁就產(chǎn)生了。訪問“xiezuoru.github.io”,即可看到主頁的效果。
如何設(shè)計一個精美的網(wǎng)站?如果對HTML語言不熟悉,就需要用一些專業(yè)的網(wǎng)頁設(shè)計工具,如DreamWeaver、Avocode。如果對頁面的要求不高,最簡單的辦法就是用Word。上傳文件則推薦用GitHub客戶端工具,它會自動比較本地目錄和云端倉庫的更新狀態(tài),類似云盤。
利用FastPages實現(xiàn)自動轉(zhuǎn)換文檔
要實現(xiàn)自動轉(zhuǎn)換文檔為網(wǎng)頁,需要建一個具備“FastPages”功能的倉庫。這個倉庫不能自己建立,也不能用“fork”功能來產(chǎn)生,而是要通過一個特定的倉庫“generate”(生成)。
具備FastPages功能的原始倉庫是“fastai/fastpages”,訪問地址為https://github.com/fastai/fastpages??紤]到“fastai/fastpages”是英文版,筆者漢化了一個倉庫,名稱為“EasonQYS/fastpagesJupyter”,訪問地址為:https://github.com/EasonQYS/fastpagesJupyter/。在這個地址的后面加上“generate”,即https://github.com/EasonQYS/fastpagesJupyter/generate。或者在readme頁面中點擊生成網(wǎng)站的鏈接,然后在跳出的頁面中,給這個倉庫起一個名稱。倉庫名稱沒有規(guī)定,只要不使用“username.github.io”就可以。
倉庫建立成功后,等待大約30秒左右的時間,注冊GitHub的郵箱會收到一封英文郵件。按照郵件的要求,生成一對SSH密鑰,分別填寫在指定的網(wǎng)頁中,這里不再贅述。
訪問“username.github.io/repository”就能看到這個新主頁了。例如,筆者的FastPages地址就是https://xiezuoru.github.io/blog/。需要注意的是,無論是否填寫密鑰,這個頁面都能看到,對應(yīng)的文件就是“index.html”。只不過沒有填寫密鑰,這個網(wǎng)頁文件將不能自動更新。
修改倉庫根目錄下的“index.html”文件,即可修改主頁的效果。其中自動更新的文件列表會出現(xiàn)在“最新博文”的下方。而“關(guān)于我”“查找”“標(biāo)簽”這幾個網(wǎng)頁,要在“_pages”文件中修改。關(guān)于這個網(wǎng)站的基本信息,需修改“_config.yml”文件。
那么,如何上傳文檔自動更新主頁呢?只要將文件按“年-月-日-標(biāo)題”的格式命名,上傳到相應(yīng)的文件夾下即可,如“2020-04-01-虛谷計劃簡介.docx”。其中,Word文件要上傳到“_word”文件夾,MarkDown格式和網(wǎng)頁格式的文檔,要上傳到“_posts”文件夾中,jupyter文件則要上傳到“_notebooks”文件夾。
建站實踐——虛谷計劃網(wǎng)站
按照上述的方式,筆者給“虛谷計劃”建立了一個網(wǎng)站。先建立一個名為“vvplan”的organizations(組織),然后建一個名為“vvplan.github.io”的倉庫。為了訪問方便,筆者設(shè)置了cname(別名),將域名www.vvplan.cn指向到這里。
虛谷計劃下面有四個項目,筆者對應(yīng)分別建立了四個具備FastPages功能的倉庫,逐一填寫密鑰。然后,邀請?zhí)摴扔媱澖M委會的成員加入這個組織?,F(xiàn)在,更新網(wǎng)站也可以像GitHub中的其他項目開發(fā)一樣,采用協(xié)同工作的形式,權(quán)限設(shè)置非常靈活。
結(jié)語
GitHub Pages是“開源”的,如果有人喜歡你的網(wǎng)站結(jié)構(gòu)或者內(nèi)容,只要按下“fork”,就能將你的網(wǎng)站clone(克?。┮环?。這樣一來,就有越來越多的人從這樣的分享過程中受益。
除此之外,你還能從這個建站的過程中深刻理解文檔格式,體會到標(biāo)記語言(HTML、MarkDown、XML、JSON和YAML等)在信息交流中的重要意義。這些文檔的轉(zhuǎn)換,都是用Python腳本代碼來完成的,還可以研究轉(zhuǎn)換腳本,感受Python的強大功能。當(dāng)然,最重要的收獲是協(xié)同共建的機制,GitHub能夠記錄所有用戶的操作,分布式的開發(fā)和集中式的管理,讓協(xié)同開發(fā)變得有序而靈活。