2个程序员1周拿下4万块小程序项目的技术要点

本文给大家分享一个真实的商业项目,和其中的技术要点。这其中也体现了菜鸟程序员和有经验程序员所思考问题的区别。请认真看到底,应该可以学到很多书本和培训教程里学不到的东西。

这个项目规模不大,2个程序员,兼职1个星期完成,费用是4万块,但是其中涉及到多个要点。

1. 搞清楚痛点和需求

这是一个服装厂,年产值在1亿左右。

车间是一个非自动流水线,一框框货物,每个工人做一道工序,再传给下一个工人。

这里的重点是工人在传给下一个工人之前,要拿着框子里的一个条码,去电脑上录入产量。这样才能反映到生产进度上,这样才能给工人算工资。

公司面临的问题是,工人要站起来走到电脑上刷卡,这很麻烦,影响生产效率,工人也抱怨比较多。

工厂里基本都是夜以继日的赶订单,提高每天的产量是老板很看重的事情,所以老板也很想解决这个问题。

认清痛点,不忘初心,方得始终。搞不清楚需求是软件失败的最重要原因。

在这里插入图片描述

2. 技术选型

他们原本打算上一套硬件系统,包括磁卡,刷卡机,控制器。给每个工位安装刷卡机,工人可以在座位上直接刷卡。这一套预算估计在15万以上,要上很多硬件。

在这里插入图片描述

老程序员建议他们不要上这套,因为:

  • 硬件维护成本比较高,设备经常出故障,需要维修。
  • 可扩展性不好,多一个工人就要多安装一个刷卡器。

后来考虑要不开发一个App,但是App的问题是:

  • 要同时支持iPhone和安卓。虽然这个问题可以用React Native等技术来解决,一套代码,两个平台上运行,但下面的问题很难解决。
  • 厂里的人用的手机品牌,型号差异太大,App的兼容问题会很大。
  • 要不断的随着手机操作系统的更新而更新App版本。
  • 需要先安装才能使用。厂里很多老人,需要找人帮他们安装,实施成本很高。

老程序建议开发一个小程序,上面所有的问题都由微信来解决,技术团队只要做功能就行了。

大家也担心是不是所有人都安装了微信,于是做了一个调查:厂里三百多工人,只有3个年纪大的,手机没有安装微信。于是就决定做小程序了。

团队成员就两个人,一个做小程序开发,一个基于原有系统开发后台的接口,一个星期搞定了功能,进入了用户测试阶段。

做技术选型,只选对的,不选贵的。不能只考虑开发,还得考虑:

1.软件后续维护支持成本

2.软件的实施是否容易

软件最后是否能成功,这两点也许比开发本身更重要。

3. 功能设计

这个小程序真的非常简单,就是给员工刷条码,输入产量。

界面最上面一个巨大的“点击扫码”按钮,点击就可以刷卡:

在这里插入图片描述

大致流程是这样的:

在这里插入图片描述

  • 小程序打开自动启动扫码界面,不需要思考,只需要扫码。

  • 先扫工牌,识别你是谁;再扫工位,知道你在做什么;

    这个过程只要做一次,小程序就记住了。以后只需要反复扫产量码。

    如果扫码顺序不对,小程序会提示错误,让你继续扫。

  • 扫产量码录入产量

    支持连续扫,扫一下给一个提示音,并继续停留在扫码界面。团队做了测试,一分钟可以扫码50次以上,也就是说一个工人一天的工作量,扫码时间一分钟就够了。这个消耗可以说是极低了。

扫码的结果有3种情况:

  • 扫码成功,继续扫码;
  • 扫码失败,原因可能是重复扫码,后台故障等。
  • 进一步选择,一个工位可能有多个工序,出现这种情况要求工人选择工序。

除了这个核心功能,还有一个功能对小程序的成功很重要,就是:产量查询功能。有了这个功能,工人有更大动力使用小程序,所以软件推行非常顺利。

工人非常关心他的产量是否成功输入到系统,因为这关系到他的工资。有了小程序,他们可以方便的查询产量,心里很踏实。

另外还有一个给车间主任查询一筐货的生产情况的界面。

以后可以考虑添加的功能:

1.查询工资

2.产量图表:通过自身每天产量对比,和同事产量对比,制造气氛,激励工人加油干,提高产量。

4. 技术栈

在这里插入图片描述

项目的技术栈比较简单:

  • 最上面是微信小程序,使用小程序的技术

在这里插入图片描述

  • 后台部署在阿里云上

  • 使用Nginx做Web服务器

  • 使用SpringBoot技术,其中包括Restful API,业务层等

  • 数据库使用MySQL,使用MyBatis做数据库访问

  • API接口使用HTTPS,数字证书在阿里云免费申请

  • 使用Postman测试API接口,用Swagger记录接口格式

下面进入重点部分,这个项目要成功有几个重点:

  • 好用,好用,还是好用!
  • 安全,安全,还是安全!

5. 用户体验

软件是给厂里的工人使用的,其中包括很多中老年人,所以好用是必须的。

在这个方面,项目考虑以下几个点:

1.不用登录,打开就能用。如果打开再登陆,估计一半的人会在这里遇到困难。

2.极简的界面:就几个大的按钮,核心操作就1个扫码。

3.打开小程序,马上就开始扫码,无脑操作。

4.语音提示:成功和失败有不同的提示音,不识字也没关系。

5.具体错误信息提示清晰直白。

除了扫码以外,还有2个功能激励用户:

  • 产量查询功能,激励工人使用。
  • 货物查询功能,激励车间主任。

这样,一个简单易用,又能给使用者带来额外好处的小程序就诞生了。

6. 安全问题

方便和安全基本上是对立的,你要方便就会牺牲安全,你要安全就没那么方便。

在这里插入图片描述

请记住,企业级的软件,安全比方便更重要。如果客户数据被盗取,或者有漏洞,工人可以多输入产量,这些损失都不是十万二十万能解决的。

为了安全,这个项目做了几件事情:

6.1 HTTPS和数字证书

使用HTTPS已经成为现在网站开发的标配,它可以确保客户端和服务器端的通信不会被中间人串改。

在这里插入图片描述

阿里云上可以购买数字证书,也可以申请免费的:

在这里插入图片描述

6.2 保证接口的幂等性,确保并发情况下同一张卡只能刷一次

数据库事务是必须的,除此之外,还有两个要点:

在这里插入图片描述

  • 在写入产量前检查数据状态,已经刷过的卡不能被刷,也就是图中的步骤B。

  • 在步骤C使用悲观锁,防止在极短的时间内,出现脏写和脏读的情况。

    如果两个请求同时在步骤B检查了状态没问题,然后同时进入步骤C,就会造成一个请求覆盖了另外一个请求的问题,造成多次记录产量。使用悲观锁会让第二个请求失败,避免脏写。

6.3 使用加密的二维码替换条码。

他们原本有一套条码系统在用:

在这里插入图片描述

这个条码背后就是一串数字,表示某一框货物:

18000000372199

员工号也是一个类似的条码。

这样的条码很容易被伪造,被猜测。比如某个人的工牌条码是:0100428 他可以很容猜测出其他人的条码为429,430等,然后自己生成一个条码就可以假冒那个人刷卡,同样也可以猜测和伪造产量条码,自己本来只干了一筐货,结果刷了10框货物进去,自己给自己加工资。

解决方法就是使用一个加密的二维码:

首先使用二维码替换上面的条码,可以承载更大的信息量。

然后给二维码用256位的AES加密算法加密,这样二维码扫出来是这样一串:

uRTRJ9DL5kpvoQK/bGDEOQw8Nt79tgrIoILtHm6scEc=--wm3sFbUizqeRbH69g8PFFw==

如果没有秘钥,基本上打死也猜不出,有量子计算机的土豪除外。

本来这个小程序三天就能开发完,但是在这个加密上多花了一些时间,主要是后台Java加密和前台JS的加密对不上。

6.4 前台做验证,假冒的二维码到不了后台

小程序有密钥,直接在前台做加解密工作,无效的二维码小程序直接拒掉。

另外,二维码里有一定编码规则,不符合编码规则的,前台也直接拒掉。

刷卡顺序,数据完整性等也都是在前台做。这样既减轻了后台的压力,也把一些风险在早期排除掉。

7. 性能和压力测试

还有一个重要的点,就是要快,刷卡必须在毫秒级完成。

总时间 = 小程序处理时间  + 网络时间 + API处理时间。

最开始API的自己处理时间就超过了1秒,这肯定不行。

所以API在后台进行了一定的优化,主要包括:

  • 在关键的查询列上添加索引。
  • 适当做了数据冗余,减少多表查询。

这样后台API基本保持在100-500毫秒之间。整个刷卡稳稳的在1秒之内。

一次请求快,100个请求同时来了呢?

做成一个商业系统,必须估计用户的并发数量,并做一定的压力测试。

项目使用JMeter模拟100个线程,连续压测1个小时。测试过程平均的响应时间保持在1秒之内,没有出现失败请求的情况。

在这里插入图片描述

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

五、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。


这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

  • 14
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值