前言: JE吧github曲譜庫2.0版本即將發布,為了更好推動JE吧的發展,我們也將正式更名為自由神社曲譜庫!同時我們的安卓客戶端也將開始使用自由神社這個名字。今后,我們將全力配合自由神社開發組,共同為JE吧做貢獻!
一、 1.0版本本身的設計缺陷
-
1.0版本中為了美觀使用了badge,后來成為了上傳模板的主要門檻。另外,badge中的文字信息無法搜索到,影響了基本的搜索功能,導致許多用戶搜不到想要的譜子,爬蟲無法正確抓取歌曲信息。2.0版本中,我們決定將數據和樣式分離,僅僅將github曲庫定位為一個數據庫,去除badge樣式,另外通過網頁和安卓端添加樣式。這樣不僅改善了搜索,降低了上傳譜子的門檻,同時使得利用爬蟲備份譜子數據成為可能。
1.0版本
2.0版本
app更改樣式
- 1.0版本將一個作品定為一個issue,用issue里的comment來儲存該作品的譜子,隨著譜子數量增加,逐漸暴露出來一些問題。1. 如果同一作品下的譜子太多,那么用戶搜索到該作品后還需要往下滾動很久才能找到需要的譜子,大大降低了用戶體驗。2. 以作品為基本單位的設計,先入為主地將譜子之間的其他方面聯系削弱了。在2.0版本中,我們將每一首譜子單獨作為一個issue,通過在comment中加入各種關鍵字來實現對譜子的分類搜索。比如用戶現在能夠按照作品名,扒譜人,xx年xx月新番,編曲等等進行搜索。極大的提高了搜索的自由度。
按作品搜索
按扒譜人搜索
按新番日期搜索
按編曲人搜索
二、 對于將網站的【曲譜數據庫】與【用戶信息數據庫】分離的一些思考
對于一個網站來說將這兩種數據存在一個數據庫下好還是兩個不同的數據庫更好?
目前主流方案都是將用戶數據和其他數據分開存放,保證用戶敏感信息的安全。
三、 在神社2.0版本中使用GITHUB曲庫2.0版本的可行性分析
-
目前神社2.0的api文檔中關于譜子部分的需求github曲庫都能完美滿足,甚至可以說有過之而無不及。支持拖拽上傳圖片,自帶完善的搜索功能。經過半年實踐,曲庫已經積累一定的經驗。神社要自己建立同等功能的譜子數據庫面臨幾個問題:1. 負責數據庫的同學太忙沒有時間;2. 實現曲庫和譜子搜索功能需要花費一定時間;3. 譜子需要重復搬運。
神社api文檔
- 通過調用github曲庫的api能否實現收藏上傳等功能?經過這段時間的學習和向相關程序猿咨詢,我論證如下解決方案的可行性。通過用戶id和譜子issue序號的唯一對應來實現收藏功能。用戶將譜子上傳至服務器,然后服務器用固定的github賬號實現譜子的上傳,上傳的譜子默認為closed狀態(用戶不可見),待管理員審核后調整為open(用戶可見)
四、 在神社2.0版本中使用GITHUB曲庫2.0版本的優勢
-
目前曲譜庫中已經有300多個譜子,現已有10余人專業搬運團隊
能夠直接使用github強大的elastic search搜索功能,理論上支持各種分類,多字段搜索,避免重復造輪子
-
能夠通過定期爬取數據進行備份
爬蟲抓取
-
有配套的安卓客戶端以及大佬的支持,稍加修改即可使用
五、 如何在神社2.0版本中使用GITHUB曲庫2.0版本?
- 曲譜數據的存儲以及搜索通過調用github的api實現
- 用戶數據庫存儲在神社服務器上,基于OAuth 2.0實現第三方登錄
-
通過用戶id和譜子issue序號的唯一對應來實現收藏功能
- 用戶將譜子上傳至神社服務器,然后服務器用固定的github賬號實現譜子的上傳。上傳的譜子默認為closed狀態(用戶不可見),待管理員審核后調整為open(用戶可見)
- 求譜功能通過填寫表單提交至后臺,在指定頁面以列表形式展現
寫在最后:一月霸權 人類圣經 世界瑰寶 京紫八萬八