我如何在一週開發出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,帶過團隊,上海求職,有意者發郵件。

相關文章
相關標籤/搜索