感觉已经好久没写程序了,最近这段时间,一方面是学习了python,然后折腾了scrapy
框架,用python写了下守护进程程序监听任务以及用redis做队列任务通信,并开进程来处理爬虫任务。以上这些其实没啥好说的,就是顺带提一下。另外就是最近编写segmentfault的讲堂小程序,算起来,自小程序开始编写到现在算是正式的上线,大大小小的也除了些问题,所幸都能及时发现并解决。
整套小程序开发过程中大概涉及到了几方面的内容:
- 后端基础业务逻辑服务部分;
- 小程序用户与segmentfault原本用户同步部分,也就是用户绑定模块;
- 定时任务处理小程序太阳码;
- 小程序界面布局踩坑;
- 小程序接口使用踩坑;
- 小程序本身的各种配置踩坑;
后端基础业务逻辑部分基本上不用做多说,同步本身讲堂的程序基本就可以了,主要就是在用户模块,这一块一方面主要涉及到微信登录判断是否曾经绑定过微信,另外就是判断是否是新用户。用户绑定的逻辑主要复杂在既需要考虑微信本身的接口在不同情况下提供的数据不同,另外一方面就是考虑本身用户模块的业务逻辑问题。当然还有新用户注册解决用户名重复等细节问题,大大小小的问题加起来在这个看似的简单功能上面解决了好几次bug。
针对每一节课以及每一节系列课程生成小程序太阳码主要涉及到几个细节问题。首先小程序本身没有提供一个用来生成太阳码的测试接口,必须要小程序上线才行,所以这一步的开发很不方便,虽然是按照文档一步一步的进行编写,而且也看似没问题,但是其实心里是一点底都没有的,如果生成的太阳码访问不了,特别是如果携带的参数不对,压根就不知道到底错在哪里,而如果要用小程序调试模式看参数有何问题,那么需要重新提交小程序审核上线,一耽搁可能又是一天两天时间,相当不方便。
另外就是太阳码生成的话这里其实有一个并发的问题,我原本的考虑是如果当前讲座没有太阳码那就即刻生成,如果有则直接返回太阳码。看似毫无任何问题,还是老大 @joyqi 问了我一句:“如果一次性访问这个页面有多个人咋办?”,当时的那种感觉就是,似乎突然脑袋里一道光一闪,卧槽,这种操作怎么没想过?特别是图片生成本身就会消耗一定的时间,如果在这个地方有多个用户同时操作必定会浪费大量的资源,内存,CPU,以及磁盘存储,云服务存储等。最后当然就是乖乖的改成了定时任务处理了(当然也考虑过队列任务处理,此处不做多说了)。
说到小程序本身,那就是切记要看清楚小程序开发文档后面的Bug & Tips
,而且特么的这一部分千万要反复看,看了第一遍通常觉得懂了,但是还是会出bug,然后就是小程序开发工具所表现出来的东西与真机表现出来的效果可能完全不一样,另外真机表现效果在android和iOS所表现出来的结果依旧可能会完全不一样。然后对于本身小程序所用的JavaScript语言本身,在使用一些我们通常在浏览器中使用的原生函数或原生对象或原生方法的时候,也必须要注意可能小程序不支持造成小程序报错并停止运行,且小程序也在不断的升级版本,会加入或淘汰一部分其他内容。
经历了这次小程序开发后,要说感悟的话,估计就是对segmentfault本身的业务逻辑是更熟悉了,另外最大的感触就是感觉做小程序既不像是做前端,也不像是在写APP,这种感觉...无话可说。
最后非常感谢公司各位伙伴给予的支持和帮助。
原文地址:https://segmentfault.com/a/1190000016011830