再次遷移新博客

基於Virblog構建的博客

Posted on May 15, 2015 -

經過兩週的開發,新博客終於上線了!

訪問方式

目前,本博客同時提供IPv4和IPv6的訪問:

  • dangfan.me和www.dangfan.me兩個域名同時支持IPv4、IPv6的解析
  • 4.dangfan.me只解析IPv4
  • 6.dangfan.me只解析IPv6

爲什麼要做一個新的?

原來的博客使用一個叫做ground-control的開源項目構建,該項目使用Meteor(一個統一前後端的Web框架)完成。早前,我對ground-control根據自己的需求做了一些定製開發,替換了內置的markdown引擎、增加了多語言的支持、加入了disqus等模塊。

雖然舊版博客很好地工作了將近兩年,但它仍有以下不足:

  • 不支持分頁
  • 頁面不是響應式的
  • 沒有一個好用的後臺
  • 中文排版不夠理想
  • 單頁結構對搜索引擎不夠友好

以上的這些不足,雖然可以通過擴展ground-control來實現,但因爲該項目已經不再有人維護,所以我決定放棄它,自己動手寫一個新的。

新博客用什麼做的?

在過去的一年裏,我寫的最多的後端代碼是Python,然後是Java和go。對比這幾種語言,Python素來是我的最愛,但諸多實踐表明,對我來說,想寫高性能的Python後端程序,實在是太困難。寫過一點go語言,卻對它也沒什麼感覺。而本人雖然是個Java黑,卻不得不承認,JVM的性能實在是一流。朋友的代碼遇到了性能問題,我都會推薦他遷移到JVM上。

正好前不久,Spark變得無比火熱,我也稍稍瞭解了一下Scala。一直關注caoyuan老師的微博,看他總是推崇Akka;加上caoyuan老師在貴莢用Scala解決了蠻多問題,我便決定借這個機會學習一下Scala。

新博客的後端是用JVM上的NIO WEB框架——Play實現的,管理後臺的前端主要是用AngularJs來實現的。

以下是用到的詳細工具列表:

  • Play Framework 2.4:運行在JVM上的基於NIO的Web框架,同時提供Java和Scala兩套API
  • Slick 3.0:它管自己叫做Functional Relational Mapping,和ORM不同的是,Slick並不要求用戶在數據庫和對象之間建立映射,而是提供了一套API可以很流暢地直接做數據庫的各種操作
  • Slick-pg:擴展了Slick,提供了對PostgreSQL更好的支持
  • pegdown:一個Markdown的Java實現,提供了對包括GitHub Flavored Markdown在內的一些擴展語法的支持
  • OpenCC:簡體中文到繁體中文的轉換

新博客提供哪些功能?

本項目取名爲Virblog,目前已經開源了。該項目尚處於非常早期的階段,實現瞭如下功能:

  • Markdown(包括GFM等擴展語法)
  • 較爲完整的多語言支持,用戶可以很容易地添加語言,修改頁面中任意元素在不同語言下的顯示內容
  • 根據用戶瀏覽器的Accept-Language和用戶的IP地址自動識別語言
  • 標籤
  • 基於Disqus的評論
  • 一鍵簡繁轉換
  • 特別針對中文的排版優化
  • 後臺管理
  • 友情鏈接

以下是一些截圖:

正在開發的功能包括:

  • 友情鏈接
  • 中文的Web Font

歡迎大家使用Virblog搭建自己的博客,如果遇到任何問題,請提交Issue

更歡迎大家參與到本項目的開發中!


題圖:Felt Pen Rainbow

作者:Christoph Schansky