10 年 bloger 告訴你要不要寫博客,又該如何優雅地寫博客?


關於作者:程序猿石頭(ID: tangleithu),現任阿里巴巴技術專家,清華學渣,前大疆后端 Leader。公眾號后台回復關鍵字 “1024” 獲取程序員大廠面試指南。

圖片

圖:Drone promotions from SkyPixel

背景


石頭大約在 2010 年左右有了自己的第一個域名,也是從那個時候開始寫博客的。至今確實有 10 年時間了。

最初玩 blog,其實更多的還是抱着學習的態度。比如剛學習完了 DNS 解析,HTML 語法,不 “實戰”一把么?然后后續又陸陸續續把讀書筆記、課程總結都往博客上放。

為什么要寫 blog,石頭覺得有如下幾個好處:

  • 可以把它作為整理學習筆記的地方,方便沉淀學習,就跟當初我開始玩一樣。更多的是寫給自己看,玩玩“建站”流程(獨立博客),也算一個小技能。(要不要寫博客看個人興趣,但學會總結沉淀是必須的)

  • “成就自己、幫助他人”。在日常工作中,你肯定也有通過別人的博客解決了你的某個問題,這個時候“反哺”一下開放的互聯網也何嘗不是一件快事。當有人通過搜索引擎檢索到你的內容並留言說感謝幫助他解決一個類似問題的時候,還是有一絲絲成就感的。

  • 鍛煉寫作能力。一個問題自己懂和把它講給別人懂,是兩個完全不一樣的概念。

  • 打造個人 IP。例如著名的 coolshell,ruanyifeng 等,大部分人應該都知道吧?

  • 賺錢。這個就不用多說了。說出來,你可能不信,就連我 10 年前沒啥內容的 blog,當初也有是有“外快”賺的:記得當初是給“友鏈”的方式導流,1 個月 5~10 塊,剛好能覆蓋域名、虛擬主機的費用,不過后來各種博客搬家,也懶得折騰了。

  • ...

通過這 10 年的摸索,石頭也嘗試過多種寫 blog 的方法。不過說來慚愧,貌似也沒什么說得出的成績。

目前也積累了有 400+篇文章,不過感覺真正有質量的文章也就幾十來篇。折騰過很多 blog 程序,陸陸續續遷移了好幾個版本,歷史文章也”舍不得”丟棄,也一直保留。其實好多文章在我現在看來好像價值不大,但仍然舍不得拋棄,畢竟當初辛辛苦苦 po 出來的。感興趣的同學可以通過 “www.tanglei.name” 這個網址進行訪問。

圖片

下面以我的博客演進之路為例,給大家介紹下常見的博客玩法,供大家參考。

博客演進之路

純 wordpress

wordpress 不做多介紹,是一套用 php 開發的 CMS,很多人的博客都用這個。

下圖是我博客最初級的版本,在相當長一段時間內也一直用這個主題。

圖片

Wordpress 博客

“時光荏苒、歲月如梭”,上面的截圖也很有意思——

  • 右上角的動態“騰訊微博”,不知道你有沒有用過?

  • 左上角的 Rss 訂閱,現在不知道是否還有人用,用的人多嗎?反正我好久沒打開我的訂閱文章了。

用 Wordpress 寫博客,有一個缺點就是,每次寫需要登錄后台,排版、配圖等比較麻煩。並且還得掏錢買虛擬主機、自己運營維護wordpress 程序、MySQL 等。

再后來接觸到 markdown 這門標記語言,才發現這玩意太好用了,就一發不可收拾。一直用 markdown 寫作沿用至今。

wordpress + markdown 插件

博客主題想保留就一直還是用 wordpress,但有希望寫作用 markdown。

由於沒有找到合適的 wordpress 的 markdown 插件,於是就自己寫了一個 markdown2wordpress(https://github.com/tl3shi/markdown2wordpress)。后端框架等仍然用 wordpress,繁瑣的排版等問題就直接交給 markdown,也不用登陸 wordpress 后台進行調整等操作。

這個工具依賴於 python-wordpress-xmlrpc,一個 python 實現的 wordpress 的客戶端,可以方便調用 wordpress 提供的接口,markdown 的渲染依賴於 pandoc,代碼高亮用的是 highlight.js 圖片用圖床的形式,或者直接以 github 外鏈的形式。

用這個工具又堅持了一段時間。

但石頭當初買的虛擬主機(共享型)還是多個人公用的形式,性能較差,網站就經常掛,一會虛擬機掛了,一會MySQL又掛了,然后還中過木馬。實在是忍受不了了。

github page 服務

github page 服務 https://pages.github.com/,按照官網說的那樣,直接將源文件托管在 Github 上,僅僅需要編輯、push即可,然后變化馬上就能體現了。

圖片

這樣不但省去了虛擬主機、MySQL 等費用,同時 github page 還支持自定義域名、git 版本管理,markdown 自動渲染簡直就是專門給程序員量身定做的(好像確實也是的)。

程序猿只用專注於寫 markdown 文件即可,渲染 html 等都交給 gitub。

下圖是我搭建好后的一個截圖。

圖片

github和octopress配置

詳細過程可以參考下我的這幾篇 Blog:

在搭建過程中,還會涉及到歷史文章的遷移等,感興趣的可以參考_最終還是放棄了 Wordpress_(https://www.tanglei.name/blog/give-up-wordpress-to-jekyll.html)。

github pages 服務的好處在於,博主們真正關注的只需要寫 markdown 就可以了(類似寫論文用 latex 一樣),根本不用去關注比如在 wordpress 后台排版,傳圖片等等操作。

github pages + travis-ci

github pages 服務本身支持的博客引擎比較少,比如希望一些定制化的插件等,github pages 默認服務就不夠了。

但本質上講,github pages 服務就是提供了一個自定義域名解析到靜態 html 的 repo。markdown 轉 html 的這個過程, github 支持得不夠,可以通過其他的方式。

比如本地寫 markdown,然后本地安裝 hexo 等博客引擎,渲染成 html 后直接 push 到 github page 的遠程倉庫即可。

我曾經也使用過多個博客引擎,如下圖:

圖片

▲ jekyll博客主題

▼hexo主題

圖片

這里推薦一個工具 —— travis,它是一款免費的 CI 工具,能幫你做的事情是啥?就是上面你本地的流程可以交給它來做。現在我寫 blog 的流程是:

  1. 本地寫 blog,md 格式的。工具可以直接用之前推薦的 程序員利器 中的 markdown 寫作工具 Macdown 或者Typora。

  2. git commit && git push 即可。

  3. travis 開始工作,安裝 blog 程序,然后 build 靜態 html,最后 push 到指定的 github pages 倉庫。

貼一下我的 travis 配置,大家就知道是怎么玩的了。

branches:
  only:
  - master
language: node_js

# v14/stable(2020-05) produces empty html https://github.com/hexojs/hexo/issues/4257
node_js:
    - 'v13.8.0'

cache: npm

before_install:
- git config --global user.name "tangleithu"
- git config --global user.email travis@tanglei.name

install:
- npm install hexo-cli -g
- npm install

script:
- hexo clean
- hexo g
- git log | head -n 6
- export COMMIT=`git log | head -n 1`
- mv public .deploy && cd .deploy && du -sh
- git init && git add -A . && git commit -m "commit from travis, origin $COMMIT" 
- git push --force "https://tl3shi:$GITHUB_TOKEN@github.com/tl3shi/hexo.tanglei.name.git" master:gh-pages 

通過上面的配置可以看出,其實做的事情就是安裝博客程序 hexo,然后生成靜態 html,最后將本地生成的靜態 html 整體打包作為一個倉庫 push 到github pages 對應的倉庫。

下圖是 travis-ci 的配置頁面,可以配置比如只要有新的 commit push 即可觸發 CI 流程,進而更新博客內容。

圖片

Travis 配置

別看整個過程看起來比較復雜,其實安裝等過程是可以 cache 的,一般而言,走完整個流程所耗費的時間也就 1-2 分鍾(如后圖所示),因為我的博客內容“歷史包袱重”,可能耗費時間會更久,這時間大部分取決於博客程序的處理流程以及最后 git 上傳過程。

下圖是構建歷史,構建成功與否會郵件方式通知到你,很方便。

圖片

Travis 構建歷史

借助 travis 可玩的東西就多了,上面的 scripts 有足夠的靈活性,可以自己隨意定制。

比如,是不是可以同一文章多個平台發。舉例,現在大家普遍玩法是各大博客平台同步發表。是否可以直接在 CI 流程里面加 juejin、博客園等 post 流程呢?

感興趣的朋友試試?(石頭好久都有這個想法了,但卻一直沒有付出行動)

解決 github 慢的問題

用 github 確實很方便,各種免費的服務白piao,但缺點也比較明顯,就是國內訪問比好慢。gitee 也提供類似的服務,但前面看了一眼,自定義域名好像要收費?

一個比較簡單的方法是用 CDN 來解決這個問題。blog 本身全是靜態資源,html、圖片等,很適合用 CDN 來加速。

在這篇 雲服務器,域名備案及 CDN 服務體驗https://www.tanglei.name/blog/try-qcloud-vm-cdn.html) 文章中,我記錄了之前具體的流程。

CDN 的工作流程就是你添加一個域名的 CNAME,指向 CDN 廠商的域名,所以用戶發起請求的時候實際是解析到雲廠商的 CDN 服務器的,CDN 后台配置一個源站點,例如 www.tanglei.name,用戶請求到 CDN 服務器時,如果沒有命中,則就去源站點請求並將內容緩存至 CDN 服務器。

以下是我之前測試 CDN 的一個效果截圖。

圖片

CDN配置效果圖

下圖是訪問一個 含有一些圖片的頁面的測試結果,其中:

  • 請求 www.tanglei.name 會直接路由到 github pages 的文件;

  • 通過 www.tanglei.me 會走雲廠商的 CDN;

圖片

CDN測試結果tanglei.name

訪問一個大小為 10KB 的頁面,基本在半秒就加載完畢了,對於個人博客來講,已經很夠用了。上圖的結果中還有一些如 USA 的節點拉低了平均值,國外的一些節點還是走 github 更快。如果有需求做全球加速的話,還可以用比如敝司的全球加速服務哦(CDN包括海外眾多節點)。

最后

本文只是石頭在探索過程發現覺得合適自己的方法,每個人喜歡的姿勢可能不一樣,本文內容僅供參考,希望你能找到適合你的姿勢。

覺得本號分享的文章有價值,記得添加星標哦。別白 piao,需要來點正反饋,安排個 “一鍵三連”(點贊、在看、分享)如何?😝 這將是我持續輸出優質文章的最強動力。

圖片

關於作者:程序猿石頭(ID: tangleithu),現任阿里巴巴技術專家,清華學渣,前大疆后端 Leader。用不同的視角分享高質量技術文章,以每篇文章都讓人有收獲為目的,歡迎關注,交流和指導!公眾號后台回復關鍵字 “1024” 獲取程序員大廠面試指南。

推 薦 閱 讀

圖片

快快加入我們——“阿里雲-ECS/神龍計算平台” 招人啦
面試官:會玩牌吧?給我講講洗牌算法和它的應用場景吧!

面了 7 輪 Google,最終還是逃不脫被掛的命運

有了這份程序員面試指南,你離大廠Offer還遠嗎?| 附推薦書籍

同學,這里有份程序員校招總結等你來取 | 面試10+公司,8 Offer的校招經歷分享

- 掃碼加入互聯網大廠內推群 & 技術交流群 -

圖片

后台回復關鍵字 “1024” 獲取程序員大廠面試指南


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM