再次迁移新博客

基于Virblog构建的博客

发布于2015年5月15日 -

经过两周的开发,新博客终于上线了!

访问方式

目前,本博客同时提供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