记一次小程序开发

锲子

本来以为参加不了已经凉了的比赛,后面被学长拉进了坑然后四个人连着开发了十天,设计方案改了又改最后重新定了方向最后三天通宵两天才弄完。

一开始接触这个比赛是在10月份的时候被拉去跟着搞腾讯的云开发讲座,然后当时也想组队参加但是没有点子也就没怎么想了。

正式开始开发的时候才发现比赛所给的API还有一系列操作过于睿智,甚至图片切割的API都是用自己服务器实现。

得到了些什么

  • 对JS的异步处理熟悉了一些
  • 了解了一个应用程序大概的设计模式
  • 明白了在团队中交流的重要性
  • 了解了微信小程序的开发流程
  • 明白了自己所学过少
  • 接触到了一点python网络编程
  • 知道了在多人项目中使用git进行版本控制的重要性
  • 大概可以开始django + vue的博客项目了
  • 明白了互联网公司的996是怎么来的

小记

在一开始学长想的方案是做一个基于腾讯云人脸识别API的寻人平台,但是在开发了5天的时候发现这个项目对于找到人的一方用户是没有驱动力上传图片的

于是后面换成开发一个寻宠平台,但是这个规划后面也凉了,因为在一次讨论分工过后突然发现我们的核心功能离AI越来越远

在思考了半天(真的是半天)之后,另外一个学长想到可以做一个拍照签到小程序(这难道不是在害自己吗),虽然一开始作为一个备用方案,但是我们没有别的想法也就只能这样做了

前面的一个工程被推翻了,但留下了一个可以继续使用的组件,然而后面也需要修改组件内部的内容

留下可以用的瀑布流组件没有考虑通用性,对于不同的数据要有不同的显示方案,在时间不太多的情况下还是选择了通过条件判断显示不同样式

在开发过程中最主要的是小程序中js的异步问题,特别是遇到服务器请求的时候,在服务器请求还没有回来的情况下就已经执行了下面的语句,导致出现bug

分到的任务

  • 实现课程列表的展示页面和功能
  • 实现图片处理和人脸调用接口的结合
  • 实现课程详情页面和功能

一个花了较多时间修复的bug

在写调用云函数进行人脸识别返回刷新页面的过程中遇到了这样一个bug,一开始是回刷新4次是因为刷新的语句嵌套在了一个for循环里面

修改了这个地方之后,人脸识别第一次成功了,但是没有刷新页面,在第二次进行识别的时候才会刷新签到情况

当时查bug的时候一直以为是传入到组件里数据的问题,调了两个小时从5:30调到7:30一直没调出来

后面才发现是因为在执行刷新之前有一个调用云函数的过程,但是云函数还没有返回就执行了刷新,所以每次刷新都是传入了上一次接收到的数据

(还得再看看Promise相关的东西,但也是后话了

图片切割问题

签到功能想要做到的是想要实现拍一张照片识别20人以上,这里有一个问题是腾讯云API一次只能返回识别十个人的信息

然后聪明机智的两个学长就想到了一个办法,对于一张图片,首先识别原图,然后识别左边一半和右边一半,为了保证中间切割的地方人脸能被识别到,中间的一半也需要识别

这里又是一个问题了,找不到可以用的nodejs库和api可以实现图片的切割,微信平台提供的智能裁剪api仅仅是把主体裁剪出来,达不到目的

最后查找了一堆资料之后还是决定自己写一个裁剪程序放在服务器上进行调用(这里吹一句py的强大

使用python先实现能接收GET和POST请求,这里只用到了POST请求,然后把接收到的base64图片编码转换为opencv mat进行裁剪,再转换为base64传回,自己实现了图片裁剪

虽然轮子好用但是有时候还是得自己造轮子

详细见:Crab

总结

第一次经历了一个开发过程,虽然时间周期不长但是也能大概感受到开发需要做什么。

这次下来也算有了一个项目经历,希望后面还有机会经历更多的开发过程。