我如何在一周开发出Tale应用获得1k star

缘起

我是一个java开发者,几乎使用了所有主流的博客系统,包括静态博客和php系列,我在看java中有没有同样优秀的博客平台,我找到了 jpressmblog

打开 jpress 的演示站点是这样的:

jrepssdemo

于是我分别打开了它官网的文档和视频教程,发现文档好像一直没有写,教程下面讲到《精通JFinal》,omg的。不过看起来功能确实还不错,但是我没有打算使用的心情了。

之前在某qq群有别人推荐mblog,我看了一下它的介绍是这样的:

JDK8
数据库MySQL
SSH (Spring、SpringMVC、Hibernate)
安全权限 Shiro
搜索工具 Lucene
缓存 Ehcache
视图模板 Velocity
其它 Jsoup、fastjson、GraphicsMagick
jQuery、Seajs
Bootstrap 前端框架
UEditor/Markdown编辑器
font-wesome 字体/图标

可以看到用到了很多企业级开发的技术,搜索引擎、权限管理、竟然还有 hibernate。。

显然这不是我想要的,部署起来的成本太高了。


定位和思考

于是我也自己开发一个博客系统,我认为每个坚持写博客的人都是有故事有分享精神的,项目起名简单易记住最好,于是找到 tale 这个单词,英文翻译是 故事,发音为 [teɪl],用中文读 塌了 也蛮有趣的,就选它了。

我对个人博客的想法是这样的,目前来看它应该是单用户的,我见过写博客文章最多的也就 1000 篇左右,于是 mysql 的 like 完全可以做到查询搜索,不用搜索引擎(当然分词搜索另当别论,可以以插件方式出现);它应该发布简单,体积小;它的设计简洁,易维护;它的UI美观,颜值高;它的速度很快,高性能。


技术选型

根据我上面所说的开发这样一个博客系统,如果还想在短期内完成它,选择 SSM, SSH 这种企业级框架肯定是有些臃肿了,不是说它做不了,你要用生成器什么的也可以,但它就是企业级架构,Spring3x 和 Spring4x 都够一些人折腾了。是 JFinal 吗?这看起来是个不错的选择,社区支持度也很高,但部署的方式不太优雅,还是要用tomcat的方式,我想像 SpringBoot 那样发布一个 jar 包运行一行 java -jar tale-1.0.jar 就可以跑起来的,我决定用自己在15年发起的 blade 作为web框架,具体的可以看 这里 总之它能解决我遇到的那些问题,又是我熟悉的,也因为是自己研发的,想让它走的更远些。

后台编辑器选择了github上修改自 typecho 的后台编辑器,也许并不是最酷的,我非专业前端,目前来看够用,我们可以以后再优化它,数据库选择了mysql,tale 是带后台的博客系统,当然我也考虑过用java的一款本地数据库 mapdb,这样开发者就不用创建数据库了,但数据备份是个问题,以后再深究这个。

  • mvc框架:blade
  • 数据库:mysql
  • 后台模板:bootstrap
  • 默认主题模板:pingshu
  • 模板引擎:jetbrick template

其实技术也就是我们日常开发的那些技术,只不过看你如何用好它了。


开发细节

markdown如何存储和解析的?

我将markdown的源码存储在数据库中,使用了 commonmark 这个库进行解析,在前台展示的时候将markdown解析为html即可。

你是如何支持emoji表情的?

有些开发者处理过应该知道 mysqlutf8 编码的一个字符最多3个字节,但是一个emoji表情为4个字节,所以utf8不支持存储emoji表情。但是utf8的超集utf8mb4一个字符最多能有4字节,所以能支持emoji表情的存储。但是我认为让使用者去修改这个配置太繁琐了,容易出错,我们直接用程序处理吧,于是乎找到一个库 emoji-java,它可以在emoji表情输入进来的时候被解析为形如 :smile: 这样的格式,我们在使用的时候再将它转换回去就好了。

更多细节

开发中往往有无数的细节和代码片段,其实都是日常用的,这里无法一一概述,如果你有疑问可以加入开发者讨论群 1013565 讨论,当然QQ群并非最好的交流方式,你乐意写邮件也可以联系我 biezhi.me[AT]gmail.com


编写文档

一个好的项目不一定实力多么强,但是至少要有一个有力的 README 文档和简单易懂的快速入门说明,这会让你的项目在短时间内更受关注。我认为一个好的 README 文档可以是这样:

标题

一句话描述,简单易懂,说明用意

fbi-warning.jpg

最好来一张高清无码有逼格的大图

特性

  • 史上最强瑞文
  • 打不死的小强
  • balabala

使用/预览图

这里可以根据你的项目类型来安排

开源协议

标注你的开源协议

Apache2

联系方式

  • 论坛:如果有的话
  • 邮件:biezhi.me[AT]gmail.com
  • QQ群:1013565

推广项目

虽然花了点时间做出了这个东西,但是不知道反响如何于是我在如下几个平台发布了这则消息:

  • v2ex:创意工作者的社区
  • v2mm:看起来也是个不错的交流社区
  • 掘金:一个只有高手分享的社区
  • 开发者头条:程序员分享平台

刚开始的时候应该是因为界面还算美观,也收到不少开发者的青睐,v2ex和掘金,开发者头条为它带来了不少的流量,在发布后的第二,第三天登上了github的 Trending 榜单,这时候收集到 500 左右的star;于是开始收到有人使用和反馈了,发现活跃度蛮高的,根据大家提出的意见出了简单的视频教程,修复了自己没发现的一些bug。不过在这一周里也是我打满鸡血的一周,今天项目在github收到了 1k star。

star

也让我对后面的开发更有动力,如果你觉得这个项目还不错也可以 捐赠 我,该博客系统面向所有用户,开源免费。 也有些开发者想听我谈谈如何开发这个系统的,于是写下了本文,还望各位看官轻喷。

反馈

tale在短时间内已经有很多的反馈,我们使用github的issues进行记录

ar3.png

联合开发者一起贡献,有不少开发者向 tale 发起了 PR

ar4.png

有意思的

ar5.png

make.jpg

感谢

非常感谢最近帮助我的小伙伴,感谢大家的反馈和 Pull Request 没有你们也就没有更好更优秀的博客平台。

我的信息

顺便附带小尾巴,4年Java,带过团队,上海求职,有意者发邮件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值