从菜鸟到架构师(二十五)

版本管理方案确定后,我开始主导方案的实施。这一系列规划都是我的团队自发组织的,没有汇报上级,因为我知道,公司领导不会允许我这么做的。

首先,我将制定好的方案写入文档,传到svn,通知团队成员从svn上down下来,并且告知他们从现在开始按照文档的流程走。经过不断改进和优化,版本管理规范不管在老项目还是新项目都执行的很顺利,哪个版本有问题很轻松的切换到指定版本进行bug的修复。

版本管理流程顺利后,我开始规划项目的持续集成和自动化测试方案。我采用的是jenkins,这个框架是个比较成熟的框架,提供了很多插件。我以前没有用过jenkins,所以我在本地搭了一个jenkins进行研究和测试。我本以为可以在公司大展拳脚,将公司的项目开发真正实现自动化,新的项目需求来了。

以前我开发的PPT自动化工具(一期)的功能已经满足不了公司分析部的需求,他们每个月出的报告种类很多,十分耗费人力资源,他们希望我开发PPT自动化工具(二期)。二期的要求是要希望PPT模板的自定义功能,自动生成描述文本,由分析部的主管周知牵头来完成。

接到任务后,周知和我立即组织团队开会,会上,我们确立了每个人的职责范围,分配了任务。周知负责梳理功能需求和流程,我负责前期的架构设计和数据库表的设计。

大约过了一个礼拜,周知的方案出来了,自定义模板上,我们采用语法定义的形式定义每个控件所包含的数据的含义,文本生成上,前期采用亮点组合的形式自动生成文本,每一页的亮点需要人工手动选择,后期我们收集好用户操作日志后,有了一定的数据量后开始训练机器,达到全自动生成文本的目的。

语法解析引擎由我开发,起初我想到了用javacc快速开发,在开发过程中我发现了一些问题,从而放弃了javacc,完全由我自己开发一套引擎,代码里大量运用了正则表达式来解析。

亮点生成由另外一个同事来开发,他根据分析部提供的一些亮点规则,通过代码从数据库查询出数据来实现。最后文本的生成由我开发,我根据用户选择的亮点列表,根据分析部提供的文本生成规则来实现最终文本的生成。

PPT自动化工具(二期)最难的还是在自定义模板上,从语法分析,词法分析到语义分析,活脱脱的就是一套编译原理。经过一个多礼拜的开发,整个语法解析引擎就开发完整了。本以为这个项目基本最难的部分搞定,后面的东西就很快了。谁知道团队开会的时候,周知要求PPT生成的操作放在web端。但是PPT生成只能用C#客户端做,java是做不了的。

无奈,我想了个办法,用socket的形式进行web端和客户端的通信,用户通过点击web按钮,启动c#客户端。起初我自己开发netty服务端,最后测试发现存在粘包的现象,时间又比较紧,没有时间研究。最后我采用第三方即时通讯平台–融云(这真不是打广告),这个平台我用了很多年,还不错。

几日后,web端和客户端成功通讯。

难题接踵而至,我原计划是将web项目和c#客户端放到同一个windows服务器上,这样用户通过浏览器访问web界面,生成的PPT全部保存到服务器上,这样最大的好处是跨平台。我向公司领导提出申请,要求增加一台windows服务器,一个月成本也就是两百块钱,配置也不需要太高的。公司领导的反应出乎我的意料,不愿意买服务器,要求我做成单机版的,也就是将web页面集成到c#客户端中。公司的阿里云服务器几十台个个配置惊人,连一个两百多块的windows服务器都不愿意提供,我也是大写的服。

既然公司不愿意花钱买服务器,我也只能硬着头皮集成,最开始我用了vs自带的ie浏览器集成网页,但是存在兼容性问题,我又通过谷歌搜索,找到了webkit内核,研究了很久终于将webkit内核集成到客户端了。

每天日常加班,一个多月的苦逼日子,终于顺利将项目交付到用户使用。

你可能感兴趣的:(程序人生,从菜鸟到架构师)