TAOBAO 晋升述职 - 开发类 前端开发工程师——栋寒
年度参与的项目简介 时时彩前端开发(协作) 入职后第一个项目, demo 开发由拔赤完成,我负责后端联调和 bugfixed ,通过这个项目,迅速掌握公司前端开发规范和数字彩前端架构,为以 后做各数字彩重构和新彩种开发打下坚实基础。 排列五开发 排列三的玩法变种,算法设计不是太难,玩法也比较单一,不过是一个全 新的彩种,有完整的 PRD 文档,在应用彩票公用框架基础上,只需完成排 列五的业务逻辑(玩法设计)和一些框架中不具备的功能组件,即可满足 产品需求。
数字彩重构 重构彩种 : 排列三、 3D 、七星彩、七乐彩、十一运夺金 项目背景 : 我的职责 :主导项目进度,完成 demo 开发后,积极主动的寻找后端工 程师和 QA 资源,推进项目进行。 项目收获 : 重构之后各彩种页面性能稳定,获得用户和运营方肯定 通过性能测试,发掘导致出现性能提升瓶颈的环节,找到可行的解决方案 为彩票前端基础框架扩展更多通用的功能组件,增加框架的通用性 统一前端架构,更快响应产品需求变更,降低维护成本 统一 UI 设计,打造更加专业的彩票社区 优化前端性能、提升用户体验
彩票资讯 项目背景: 打造专业的彩票资讯平台,更好的粘合彩友 由于项目紧急,需要快速学习陌生 TBCMS 系统,面对没有文档的尴尬,北京同事也没人使用过 TBCMS 系统,一方面自己积极摸索,另外一方面通过各种渠道向杭州相关负责人取经讨教,这种跨地域、跨部门的合作,在沟通上会有一定的时间成本。 我的职责: 开发 demo ,利用 TBCMS 系统提供的数据接口搭建后台模板,协助运   营同学完成数据的接入。 遇到的困难: 项目收获: 学会使用 TBCMS 系统,分享给团队其他同学 学到如何更好的和不同类型的同事合作,利用团队的力量解决问题 树立足够的自信心很重要,方法总比困难多
晋升的主要理由陈述 - 从彩票业务交接到北京团队后,在拔赤重构的彩票(数字彩)前端框架基础上,已完全熟悉彩票前端的开发流程,并且通过一些重构项目和新开发彩种的性能测试,发掘一些导致出现性能提升瓶颈的环节,能积极提出建设性意见或可行的解决方案。 针对目前数字彩个别彩种 html 文档和外部资源文件(如 JavaScript 文件)体积偏大的问题,已经有了比较成熟的改善方法,就是使用异步的方式,按照用户切换玩法的行为,逐步加载此玩法所需要的 html 文档片段和 JavaScript 模块文件。 除此之外,对于体彩也有一定的了解,经常和体彩开发人员一起探讨业务逻辑,解决相关问题。 通过做彩票资讯这个项目,知道了如何更快的去寻找相关资源去解决问题,在日常工作中,乐于分享开发经验和专业知识,帮助更多的新人快速成长。
晋升的主要理由陈述 - 个人认为,彩票不同于其他项目,对算法设计和流程控制要求更高,因为一个普通的算法,有可能在用户的一个操作之后,执行数万乃至数十万次,在这种情况下,要控制页面的整体性能是件十分有挑战的事情,面对彩票够复杂的前端交互,能胜任这样的工作本身不是一件特别轻松的事情。 附上彩票前端架构图:(见下页)
晋升的主要理由陈述 -
技术贡献的亮点展示 /**  *  数组前向去重(若有重复,去除前面的重复项)  * @param (array)  需要执行去重操作的数组 * @return (array)  返回去重后的数组 */  var distinct1 = function(arr){  var newArray = [],    obj = {};  // 倒序循环(效率更高) for(var i = arr.length; i--;){ if(!obj[arr[i]]){  newArray.push(arr[i]);  obj[arr[i]] = true;  }  } // 得到的数组取反 return newArray.reverse();  };
技术贡献的亮点展示 较之典型的数组去重操作,此算法复杂度优雅降级,执行效率更高,在彩票项目中体现相当明显,因为在组选和值玩法中,用户每选中一个号码,会实时提示给用户已经产生多少注,随着选中选号球的增加,此方法在用户点击选号球之后会被调用数万次,所以些许效率的提升就可以让用户进行选号盘操作更加通畅。 对于算法中的缺陷,比如对数组 [5,1,“1”,true,[1],5,6,5] 使用此方法进行前向去重操作,结果是 [true, [1], 6, 5] ,在彩票项目中不会出现这样的数组去重应用,因为我们玩的只是数字,如果一定要操作类似的数组,同时提供典型的算法: var distinct2 = function(arr){ var newArray = []; for(var i=arr.length;i--;){ if(!inArray(newArray,arr[i])){ newArray.push(arr[i]); } } return newArray.reverse(); }; 保证万无一失,也算是一种渐进增强的设计。
技术贡献的亮点展示 更多彩票底层算法: http://a.tbcdn.cn/apps/lottery/00015/common/js/cubee/base/t-base.source.js http://a.tbcdn.cn/apps/lottery/00015/common/js/c-tools.source.js
个人技术发展的展望 技术改进: 十一运夺金投注页,由于玩法较多( 20 种),每种玩法都需要自己的选号盘和相应的 JavaScript 模块,导致 html 文档和外部资源文件( JS 、 CSS 等)体积偏大,见下图:
PS : 按需异步加载并非新的技术,不过对于彩票投注页面,唯一的问题在于需要解决各个模快之间的依赖关系,即在现有框架基础上进行逻辑解耦。 页面首次加载, DOM 渲染迅速,响应交互事件稍有延迟 使用按需异步加载方式,用户切换玩法,加载相对应 html 文档片段和 JavaScript 模板文件 项目开发中的缺陷: 在十一运夺金开发过程中,由于前端架构设计的缺陷,一次性加载所有选号盘和 js 模块,投注页面有些臃肿,导致页面加载时,交互事件响应缓慢,这些在 demo 开发和 QA 测试过程中,是不会出现的,因为不是在真实的网络环境。也就是说,缺少对真实网络环境中,开发项目中可能出现性能问题的预见性。 在即将到来的一年,需要在项目开发之初,对各种环境下可能出现的问题有一定的认知,从来规避这些潜在有损用户体验的因素。
 

2010年总结