经过两周的开发,新博客终于上线了!
访问方式
目前,本博客同时提供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。
更欢迎大家参与到本项目的开发中!