經過兩週的開發,新博客終於上線了!
訪問方式
目前,本博客同時提供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。
更歡迎大家參與到本項目的開發中!