前言
前文:想做个本地标记应用
啊,上面这篇文章居然是去年四月写的……简单来说,去年这个时候我想写个本地的标记软件,用于记录「读过的书」、「看过的影视」……诸如此类的东西。
与各类在线服务相比,我希望「无需观众也不必审查」。至于备份,将数据拖出来保存一下就行了。而与笔记、Excel 等记录方式相较,我希望数据的内容能够丰富点,数据的展示能更直观点 —— 甚至应该基于数据做点可视化以及激励机制,比如记录数据按时间、类别的折线图,「你今年已经玩过 3 部黄油,快来和我一起成为每年通关 100 部黄油的现充吧」这样的亲切激励提示。
除了这些想要做的,最重要的应当是使用者数据的冷启动。其一是应当提供一个途径,让使用者能够便利地从之前使用的服务迁移过来。其二就是数据的添加方式应该要尽量简洁点。当然,整个软件的操作都应该简洁点。如果操作太复杂,大家根本就没打开使用它的欲望。最后,数据也应该能够便利地导出 —— 甚至可以提供多种格式数据的导出。
这是前言。
与之前的对比
去年做了第一个版本,标记内容的数据仅支持纯文本。数据的添加与编辑使用的是「直接操作 JSON 数据」以及简单的「文本表单」。体验很差,我自己都没打开的欲望。
值得一提的是做了豆瓣数据的导入。
前阵子将这一块抽出来写了个包 hqweay/douban-getter 。
然后又写了个 hexo 的豆瓣数据展示插件:hqweay/hexo-douban-getter
打算把这个玩具做成毕业设计,于是寒假重新改了下。最近将数据的增改操作做得稍微直观了点。但是使用起来始终偶有卡顿,可能是平台的限制以及我自己能力的不足……要是这点不能好好解决一下,这玩意实在没有啥做下去的必要……
与去年相比,我现在有了些新的想法。
数据组织方式
其一是之前数据的组织方式是模板(类别)、条目、标签这三种。模板就是「书籍」、「专辑」、「景点」……这类东西。
模板可以自定义,比如书籍,对于出版读物,模板的属性可能就有作者、出版日期、出版社……而对于网络读物,模板的属性可能就是作者、发表网站……
条目就是模板下的一个具体项。
标签则是组织条目的一个属性。标签可以用来组织所有的条目 —— 包括不同模板下的条目。比如有个「快乐」标签。我读了一本书可能赶到快乐,看了部电影也可能感到快乐……
这些是之前考虑的组织方式。现在则觉得要不要添加一个属性来组织模板。比如「文件夹」这类东西,用于归类某一类模板。比如上面提到的「出版读物」、「网络读物」都可以归类于「书籍」这一个文件夹下。
感觉没有必要。模板似乎不会多到需要再组织。
其次就是要不要做个模板之间的组合与继承?比如模板 A 可以继承模板 B 的属性,模板 C 可以作为模板 D 的一个属性……
感觉没必要,这样会很复杂诶……
模板的属性
之前模板的属性只有一项:文本。
我将属性扩展了一下,现在可以使用:
- LIST_TEXT
- LIST_IMAGE
- LIST_URL
- DATE
- RATE
- ENUM
第一,属性可以用文本、图片,网址、时间、评分、枚举。文本、图片和网址都用的 LIST、也即每个属性对应的这些数据都可以有一个或多个。
比如这里的封面只需要一张图,而截图可以有多张,它们都用的是 LIST_IMAGE
。
第二,除了这些数据,是不是也可以用文件、地理位置等类型的数据呢……
感觉地理位置有必要做一下,给定经纬度,在界面上显示地图 —— 这才能发挥软件(对比文本)的优势嘛……
第三就是这些用户在添加这些数据时的操作应该尽可能简单。
比如 LIST_IMAGE
数据的添加,我写了个本地拖动添加图片。
用户拖动图片至上传栏后,图片会拷贝至 MarkAll 的用户目录保存,然后将图片的索引保存至条目的元数据。
第四,还有模板本身的添加和编辑。
值得提一下的就是这里的 RATE
与 ENUM
,相比文本和图片,都有一个额外的属性。RATE
是评分的最大值,ENUM
是枚举的范围。
数据的展示
数据的展示现在是卡片流,自我感觉稍微好看点。但是感觉应该再做个没有样式的纯数据列表展示……那样的话,同样的窗口下,显示的数据更多,可能会提高一点效率……
基于此,是不是可以做下主题?
TODO OR NOT
搜索
搜索还没做。感觉比较麻烦,还没考虑。但这个必须要做啊……
用户
就上面这些内容,答辩的时候不太好忽悠……考虑做个用户模块,丰富下内容 —— 当然还是单机。
现在有两个思路,一是要不要做成多用户?有必要吗?
二是可以根据用户来做一些激励。比如设置用户名为「小明」,到时候就可以提示「小明,你今天又标记了一部小黄片,太棒了!继续努力!」诸如此类的。
引导页
优先级靠后。
可视化等
这个一直没做是因为自己的数据结构一直在变动,毕竟我设计的时候考虑不到那么周全,经常写着写着才觉得「这个字段要是放这似乎能方便点」……
没关系,慢慢来……
分享
可以和可视化一起做,比如生成一张统计图表的图片,然后使用者可以在社交媒体分享这张图片……
其次,甚至可以生成静态网页……
备份
因为用的 lowDB,把 JSON 数据拖出来备份一下就好了……考虑要不要把备份操作放到软件内。
其它
不一定所有想法都做得出来,尽力吧……
至少做到答辩的时候能稍微吹一吹……