起源
基于对 AI 的爱好与兴趣,我走上了独自钻研机器学习的道路。和所有热爱 AI 的人们一样,在一段孤独的摸索旅程中,我勉强完成了几次深度学习模型的训练。
其中令我印象较深的成果就是情感分类模型。他能够根据你的文字生成其背后作者的喜怒哀乐,这让人感到非常有意思,原来深度学习模型也是可以很 "人性化的"。
于是某天一个大胆的想法出现在了我的脑海中:
基于这个情感模型建立一个上层应用,让他的能力在人类社会中增添不一样的烟火。
基于多方面的考量,我最终选择开发一款 微信 "情感" 小程序。
设计
在经过一段时间的头脑风暴后,一个初步的想法出现在了我的脑海:
- 开发一款日记应用,利用情感模型可生成出日记内容的情感值......
应用包含分为 3 个 模块,写日记,排行榜,我的:
- 写日记:保存日记 + 生成情绪值
- 排行榜:根据情绪值平稳程度进行排名(ps:鼓励大家以平稳的情绪面对生活带来的喜怒哀乐)
- 我的:查看写过的日记
然而大概花费 1~2 个小时完成页面样式初步设计后,我再一次陷入了沉思:
虽然现在想法与设计是有了,但残酷的现实数据告诉我们,大部分的想法都会 "胎死腹中"。
但正巧这段时间我处于放假状态,手头上并没有什么紧急的事情,并且本人坚定好了被小程序坑到找妈妈的准备,于是我抱着必死的决心踏上了小程序开发之不归路......
开发
虽然我有一定的前端开发基础,但是从来没有开发过小程序。所以自然是需要去 "进修" 一下小程序开发,好在微信小程序的官方文档以及小程序社区建立的比我想象中的要完善的多。
跟着官方文档下载好小程序开发工具并搭建好云开发环境后, 我很快的进入到了 "开发状态"(开发状态,除了吃饭、喝水、睡觉,其余时间都在进行程序开发。)。
开发过程中品尝到的辛酸滋味不足为外人道也,然而每每回忆起来却是那样甘甜。下面来分享一下开发过程中的 "高光" 时刻:
- 官方文档异常复杂的登录授权教程让人崩溃,最后我设计出了最简授权流程;
- Node.js 云函数调用模型预测时一直返回空值,于是用早有耳闻的 Promise 技术解决了问题;
- 基于深度学习情感预测的 "佛系值" 算法开发;
- 给小程序设计了大量隐藏的细节......
整个开发过程大概历经三天两夜,整段经历大概与 "编程马拉松" 类似。
编程马拉松,又称黑客日、黑客节或编程节,是一个流传于黑客当中的新词汇。编程马拉松是一种活动。在该活动当中,计算机程序员以及其他与软件发展相关的人员,如图形设计师、界面设计师与项目经理,相聚在一起,以紧密合作的形式去进行某项软件项目。编程马拉松的灵魂是合作地编写程序和应用。编程马拉松的时长一般在几天到一周不等
--维基百科
于是乎,在经过 "疯狂" 开发后,一个小程序的雏形就诞生了......
测试
雏形诞生后,小程序进入到了非常重要的测试环节。一个项目的好坏一定程度上由产品的质量好坏决定,只有质量有保障的项目才能越走越远,越飞越高。
也凑巧我本身就是测试出身,测试人员独有的 "Bug免疫" 与谨慎的开发习惯让这个项目的测试阶段并没有出现太多的意外,每一个函数在设计开发阶段就已经经过了大量的测试。
可以说这个项目的测试一直在跟着开发节奏一起走,听过许多 测试左移 的思想,那这款小程序的开发历程大概可以说是 设计与开发与测试并驾齐驱 。
总的来说,测试阶段的顺利给这个项目增添了很大的信心。
体验
测试完毕后则进入体验环节,官方规定每个小程序可以设置 15 名体验人员,这一环节相当于 传统开发流程中的预发布阶段(项目发布 / 上线前的最后阶段)。
于是我将亲朋好友一个一个拉进了体验名单,然后微信 "骚扰" 了他们。在这里对所有用心体验的朋友说一声感谢。
然而到这一阶段确发生了一些 "意外",一位体验者爆料说日记保存后无法生成情绪值。多亏云开发完善的实时日志系统,让我能在短时间内成功定位报错信息并修复缺陷。
事实证明,再严密的测试也会有漏洞,这个 "小意外" 再次印证了 世界上不存在没有 Bug 的系统 这一残酷的事实。
经过了大概半天左右的体验、缺陷修复与细节优化后,终于到了激动人心的时刻,小程序上线。
上线
与我之前了解到的不同,小程序上线过程竟然异常顺利。
每一个小程序一年有一次加急审核的机会,普通审核可能需要 1~3 天,但也没想到小程序加急审核上线的效率如此之高,8 分钟就成功上线了。
总结与收获
"情绪小日记" 的开发过程可以说是非常梦幻了,从几天前对小程序开发一无所知,到几天后小程序成功上线。
当然不是说提倡大家经常做 "编程马拉松" 式的努力。但我害怕再过一段时间我就没有时间,没有勇气,而只有一大堆连自己都厌恶的借口去放弃开始、放弃坚持了。
从小到大有一句话一直影响着我,虽然已经不记得出自何处:
- 如果你觉得错,为什么还要去做。如果你觉得对,为什么不去坚持。
最后,我在年前收获了一个小程序。
你呢,准备好接受新的挑战了吗?