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

缘起

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

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

jrepssdemo

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

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

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

能够看到用到了不少企业级开发的技术,搜索引擎、权限管理、居然还有 hibernate。。git

显然这不是我想要的,部署起来的成本过高了。程序员


定位和思考

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

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


技术选型

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

后台编辑器选择了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,带过团队,上海求职,有意者发邮件。

相关文章
相关标签/搜索