前言
大家好,我叫孙叫兽,本期内容给大家分享一群在内网操作的程序员远程办公经验。为啥说是内网呢,因为从事的开发项目比较保密,比如某银行总行的新一代智能柜台项目。这些平时开发的内容不能直接和互联网进行连接。只能通过行方的一些固定办公地点或者授权的远程云桌面授权登录才可以,下面就步入正题,分享一下我远程办公做的一些事情吧。
如何在行方工作?
首先,我们公司主要服务于全国的一些各大银行外包工作,主要负责如下内容:
而我主要负责某银行总行的新一代智能柜台项目,目前已经进入到三期阶段,这期合同金额在千万级别,我们项目组的小伙伴接近 30 人,这里不统计甲方的协调人员,因为是协同工作,我们主要把自己分内的事情做好,额外辅助行方做好日常的规范性符合要求的工作。
想要进入银行需要本公司的项目负责人提前一周申请,可以在一周内入场,如果想要使用云桌面或者内网及刷脸差不多需要领导审核接近一个月。在这个时间段你可以从老员工哪里获取项目原始的代码包及插件,然后在自己电脑上进行开发一个类似与原始业务的一个功能,比如明细查询打印业务。作为新人,如果没有一个月或者半年的时间,一般行方不会让你去开发对应的业务,因为很多专有金融行方名字你压根不知道啥意思,比如什么是暂停非柜面?什么是账户降级?什么是外币账户开立?数字钱包是干嘛用的?账户绑定是什么意思?等等这些专业术语很多,我说的这些还只是业务,没有涉及到现金,硬件,中间件,各个设备关联的系统,操作系统及异常处理。
所以,在银行开发的基础是有云桌面,对金融银行业务比较熟悉,软硬件前后端都要熟悉一点,这样一个月之后就能上手开发。
如何远程协作高效率开发?
由于疫情原因,我目前已经两个月没有去公司了,基本办公都在自己家里,银行上班的时间基本是 8:30-5:30 这个时间段,说是这个时间段,但是实际上如果是现场办公我需要 7 点起床,刷洗洗漱 10 分钟,不吃早餐然后在北京做一小时地铁 8:20 到公司,然后打开钉钉打卡,进入银行需要刷脸打卡,然后到公司的工位使用 ilist 签到(这个软件支持远程或者现场打卡,也可以请假、加班等审批),可以理解为一个类似钉钉的行方打卡软件,这个只是签到,签退也是同样的道理(ilist 签退,刷脸,钉钉打下班卡这个顺序)。
我们现在的领导是个空降兵,也是从其他公司的几十年金融工作经验转到这里的,不是技术工种,管理人有一套自己的方法论,很有目标导向,虽然有时候我感觉他啥也不懂,但是他有一个特点就是能催结果,不知道问题的原因也能扯皮讲的那种。也算能办成事吧,这人的缺点就是不太懂技术,学习业务知识比较快,能催结果,也许这就是管理者的特色吧,一有问题就摇人打电话帮忙解决问题,搞得别人不爽,自己能完成项目目标的卷劲不是一般的强,在我印象里,这家伙是第一个来公司,最后一个离开公司,不是在开会就是在打电话,堪称卷王。现在我也是对他这种行为逆来顺受,渐渐的理解他,能帮他处理一些技术问题就及时处理。
我们远程办公每天第一件事就是使用钉钉打卡,因为公司人力靠打卡记录发工资,然后还需要登录云桌面打卡,这个是给行方统计的,主要是行方给公司发工资。然后就是每天填写疫情防疫情况。
这个只是每天必备的基础操作,每天 8:30 项目经理使用腾讯会议给开发和测试进行开会,总结一下今天的目标,上周应该完成的事情,昨天应该完成的事情,遇到了什么问题,需要什么人协助等等,项目经理的要求是今日事今日毕,但是作为研发,很多事情并不能当日完成,多多少少会遇到一些突发状况或者当日搞不定的事情,你懂的那种感觉?
我们公司遍布在全国各地的同事主要通过这个 easy connect 进行连接公司的内网,然后连接 OA 系统、SVN 或者禅道报工(每周报一次,每周六有专人统计便于月底催收项目款项使各季度营业额高于去年同期水平,数据好看便于 IPO 上市)。
使用行方的云桌面的话需使用深信服的 VDI,这个需要授权的动态口令,然后进入之后可以从虚拟机进入连接对应的服务器就能进入,不过这个云桌面内存有限,一般最大 8G+80G,所以这个资源还是很珍贵的,如果全行都远程,这个服务器的压力估计是顶不住。这个是我们每天远程办公必备的登录渠道,这个渠道废了就别想远程办公了,哈哈!(有信息科技部老师支持,一般云桌面有问题都能及时的得到解决,这里给支持的老师点个赞,毕竟我也打电话好了很多次,都得到了很好很快的解决,nice!)
远程办公一个很实时的社交软件就是微信了,目前行方的很多微信群都有我,不仅需要生产验证支持,测试群各个需求支持,还有日常通知都是通过微信完成,这个微信在国内还是很实用,然后就是我们公司的一些安排或者生产问题记录,上版计划,上版清单都是通过腾讯文档小程序记录,这个保证大家的目标计划信息同步,不用一一通知,有个别小问题可以腾讯文档或者微信沟通。
如果大家有报工统计或者疫苗是否接种等需求还可以通过微信接龙,这个算是一个比较实用的小功能吧。
我在云桌面中使用的一些工具及心得
在行方工作我会集开发与处理各种测试问题于一身,白天时间很多人找我,基本都在处理问题发版或者分析日志,只有在开发阶段或者晚上我才有时间耐心的搞开发,可能现在每个人都有点浮躁吧,很着急要结果,这种情况导致的结果就是一次没有彻底解决,可能还需要来回摩擦几次才能搞定,比如在本地测试没问题,一上机就出现了问题。
我是做 C 端开发的,以前也搞 JAVA,在我们公司 C 端的主要职能就是做前端开发及机具调试还有一些中间件相关的东西,首先银行柜台类的项目会经历开发,SIT,UAT,准生产,生产等环境阶段,测试环境还有小版本,联调等环境,这里不一 一列举了。如果是 C 端开发的话,我们这边一般使用的技术栈主要是 VUE,然后把饿了么框架在封装一遍进行使用,包含平台、组件及二次开发。一般的业务主要在二次开发进行改动即可,如果是公共的功能、方法或者工具类一般封装到组件里,便于代码的复用及改造。工具一般使用 VScode,安装一些常用的插件,主要有代码格式化、代码高亮、代码语法校验、debugger 工具及代码扫描等常用的几种。
这种项目一般来说比较耗时,智能柜台项目是采用敏捷式开发的,一般一个月一个迭代,不像瀑布式有个总的时间,一般开发加自测两周,sit 测试一周,uat 测试一周就基本完事了,自己在云桌面开发使用 mock 模拟数据。测试得去设备上测试,设备包含很多种,有分体式,便携式,立体式等,厂商也比较多,有长城,恒银,广电等,操作系统有 windows,银河麒麟等,每次上版也保证都兼容,像密码键盘,读卡器,打印机等模块要自检。自从开发这些银行卡信息查询,爱心捐款,转账撤销,转账撤销,理财购买,理财风险评估,数字货币,我的理财等功能,我也是没有好好休息过,有 400 多家分行,有问题就在群里疯狂艾特你,还都得解决,需要一个狗屁不通的领导(出了问题日志都不会看,起码看看响应码,入参返回值,sp 等)直接就艾特你,日志还不发你,让你自己去提取日志或者问分行要,我都 TM 服了,心态爆炸!所以外包弊端很大,还是自研项目好一点。打好基础,才能走的更远!加油,兄弟,看好你,搬砖人!!!!
2022 年也许会好一点,因为二期五个迭代基本复杂的东西搞完了(理财,外币,综合签约,转账,数字货币等),三期相对轻松一点,一个迭代开发有 3 周时间,1 周 sit,4 周 uat,意思就是一个迭代两个月,保证质量交付即可!
一般一些中间件常见的异常吗或者常见的问题需要自己总结到 word 里面,比如出现问题的时候能及时响应。
简单说一下常见智柜问题的分析及解决办法。
1. Q:硬件相关的问题?
A:如果是和硬件(密码键盘、读卡器、打印机等模块)相关的,可以分析一下日志,看一下 API 返回的错误码,API 返回值方面,执行成功同一返回 0;执行失败,返回的错误码会根据模块类别进行区分,如摄像头类别的错误码为 -1000 开始,依次延续为-1002……等;读卡器类别的错误码为 -200 开始,依次延续为-201……等;能够明确归为类别错误码的情况返回相应的类别错误码;不能明确归类的返回通用错误码。通用错误码为各模块接口均可能报出的错误,其错误的原因是各模块的公共软件环境出现错误,具体的可以查看错误码表。(有对应的说明及简单的措施建议)
2. Q:C 端出现的问题?
A:首先向问题提出人索要出现问题设备对应时间出现问题的日志或者自己在对应环境的 V 端提取(设备有网络的情况下),可以先查看 flow 日志,根据用户出现问题的时间点和流水号去 page.all 日志中查找具体的报文(入参和返回值)看是否符合客观逻辑。不好定位的问题可以通过查看 C 端具体的报错的.VUE 文件分析具体原因找对应的开发处理。
3. Q:生产上的问题?
A:我们可以去生产间查看日志,或者去 7 层设备旁的电脑提取对应设备的日志,或者问对应分行的人要日志,分析日志。(生产问题处理一般流程如下:业务给你的信息通常是设备号,业务类型(实时发群的问题),提单的一般会有业务流水号,客户基本信息,实时提的根据设备,大致时间,业务类型,去 v 端看电子流水,然后根据电子流水中的日志确认问题类型,比如设备故障,c 处理问题,p 端返回数据问题。如果是后端问题,可以根据 c 端流水号或业务跟踪码去查 p 端日志。如果是 c 端或者设备问题才有可能要 c 端日志)
开发人员要记每个接口的日志,在每个页面的进入、退出、判断及缓存的值可以多记日志。这个是查找生产问题的主要依据。
4. Q:UAT 灰度发布?
A:先把对应分支的代码合到 UAT 或者单独关联对应分支的源码,提交表更单,CI(创建任务单),CD 改版本号(部署),v 端发灰度(推送对应设备),添加对应设备的策略管理。
5. Q:应用进入公共流程风险提示显示空白?
A:一般是应用获取不到 token 没有权限阅读,需要关闭桌面 python 服务,开启 python 服务再次进入应用就可以了。
6.Q:根据日志中后端返回响应码查询后端对应接口的报错信息或者联系对应的开发人员查看对应的代码进行具体问题具体分析。
A:查看常见后端返回的响应码表查看对应接口常见的报错信息,看看是哪个系统返回的,需不需要其他系统支持,属于业务报错还是代码报错,需不需要修改等。
比如:客户信息查询证件号码不存在,这种属于正常现象。
7. Q:应用起不来?
A:先在 V 端查看对应设备的设备号配置信息,一般来说 V 端要和设备的环境保持一致(特殊情况除外),查看设备号对应的配置信息,数据库连接信息,V 端加密方式,ip,审核柜员等关键信息。
8. Q:启动服务失败,本机暂停服务?
A: 排查新监控端是否配置了该机具的相关信息. 在该系统添加相关终端信息.
9. Q:应用日志路径在什么位置?
A:Linux 应用日志:/usr/KIOSK/Log/日期/APPLOG
Windows 应用日志:D:/KIOSK/Log/日期/APPLOG
在此路径下打开 front.flow_日期.log
银行开发的前端需要掌握哪些必备技能?
1.前端开发的基础知识要扎实,熟练使用一种框架 VUE 或者 react。
2.熟练的使用 vscode,插件及 git(代码管理一般在这里),SVN(需求文档及 UAT 设计图及历史整理文档一般在这里)。
3.业务及专有名词要尽快熟悉,一些金额及工具类的方法要熟悉,一般银行属于金融领域,在这里面主要靠理财或者放贷赚取收益,对于金额的处理及日志要求比较高,出了问题一般公司要承担损失。
4.一些常用的工具要熟练使用,比如 linux 常用的命令,连接数据库,操作一些文件夹,发版,dist 包在哪个文件夹下,每个环境的 ip 地址及端口号要熟练掌握,每个操作系统生成的凭证地址,各个配置文件访问设备的文件夹位置要熟悉,要能自己装系统,装应用,配置应用,在不同的环境发版(不管是手动放到服务器指定位置还是 CI/CD 发版)。常见关键模块的错误码(密码键盘、凭条打印机、人脸识别、设备启动失败等)要知道。
5.一般正规的发版流程要熟练掌握,很常用,我每天一般都发 5 个版本左右,比较耗时,一般先修改代码提交代码合并到对应的分支,然后在代码配置库创建 PR 关联 CR&IR,发版创建测试变更单,编译平台及组件,然后在 CD 系统修改版本号、使用 CI 系统编译,然后推灰度进行指定设备更新版本号。
6.要和产品经理、业务、及前后端同事还有测试搞好关系,这样工作起来比较顺畅、这种项目一般不会可以问、项目比较大、关联的外围系统很多,所以热爱解决问题你就会很快乐!
7.一些常用的 notepad++、记事本、还有代码比对工具 BComare、接口调试工具 postman 要用起来,因为应用出现问题,我们首先就是拿日志、分析日志去定位问题(确认一下是前端问题还是接口问题还是硬件问题),这个 notepad++一些检索功能比较好用。代码比对工具 BComare 就是每次上版会有代码评审,这个比对很强大,如果远程可以使用腾讯会议投屏,主要是因为代码配置库每次比对只能比对少量的改动(处于性能考虑),代码比对工具 BComare 直接可以比对所以改动的差异,我很喜欢用这个比对评审,大大提升了比对的效率。、接口调试工具 postman 主要测试后端的接口是否能正常的使用以及获取报文接口及模拟数据,直接放到 mock 里面调试程序,因为一些判断条件都是基于返回值做限制或者判断,这个还是很常用的。
8.经过时间的沉淀,你就是这个领域的专家了,比如我,哈哈!
好啦,本期内容就分享到这里,如有任何问题,欢迎给我留言!谢谢大家!