写在公司成立30周年之际,记录我与中创的故事。
我,IT女一枚。2008年入职中创,入职后做过研发工程师、技术经理、MA、兼职QA、项目经理、EPG(MA、RISK、PP、OPP、OPM等)。2014年的时候,我主要做应用服务器中间件产品的项目经理,兼职EPG。
坦诚来讲,做中间件是件非常枯燥且辛苦的事情,它涉及整个Java EE规范和很多Java EE规范之外的东西,比如OSGi规范、微服务、云计算、容器技术等等。每天都要面临新问题,学习新技术,永远感觉技能不足。
除了技术上需要持续学习以外,我也常常面临角色的突然转变。比如一周前公司要求我要作为CMMI ML5级过程域(OPP、OPM)的EPG进行访谈,那么我就要在一周内要搞懂CMMI模型,理清基线、模型,熟悉公司所有的项目情况,且上场接受老外的访谈,而且要保证良好的访谈效果。
为了在工作中保持愉悦心情,我也保持着我的个人爱好。我的个人爱好是读书(IT书籍、小说、周易等),写作(小说、软文、java程序等),卜卦看相(曾拿着64卦追着给同事卜卦,信其者还是少有人在的,不是纯忽悠,多少有点真材实料),婚介(热心给项目组单身同事介绍对象,已有成功案例2个)。
总之,在南方电网项目之前,我就是一颗快乐成长的小螺丝钉,在中创安居乐业。
那是很平凡的一天,我忙于解决某保密项目的现场问题,突然被高总叫到了总经理会议室。
高总有一种不怒自威的气场,在他十米之内都能觉得寒气逼人。之前跟高总打过几次交道,每次都被骂得魂飞魄散。这次被叫进去,我心里难免忐忑,谁知道又是什么暴风雨呢。“这次叫你来,是要写个材料,把咱们应用服务器与其他同类产品进行技术指标对比,明早提交。”“好的。”我长舒一口气,写东西对我来说,小case。用大学英语老师的话说我有vivid imagination。想要多少字,我能出多少字。虽然偶尔像婆娘的裹脚布,又臭又长。
产品对比材料第二天提交给高总,他整体还是比较满意的,有点小意见,稍作修改就好了。
原以为此事过去就结束了,哪里会想到这才是一个大事件的开始。后来才知道要投一个大标,而且是和国际一流应用服务器做竞争。拿到标书后,发现标书都是按竞争对手的指标写的,基本都是来自于它的手册,还有一些直译的错误。
高总亲自带队写标书,可见此标的重要性。这份标书每天一稿,反复评审,反复修改,研发的、实施的、测试的每天十点下班是正常节奏。不得不承认在巨大的劳动强度下,女人的支撑能力是比男人弱的。首先我撑不住了,某天晚上九点多,高总让再出一稿的时候,我终于战胜了对高总无尽的恐惧,委婉地问明天吧,头晕得很了,实在没有效率了。集中精神审标书的高总,闻言,怒火:“我也很累,不都坚持着么!”。女人的承受能力弱一些,但是韧性方面却是较有优势的。初稿完成后,高总率先感冒了,其次是赵宏,然后一片男士都感冒了,唯我幸存。
投标日期临近,我们对标书进行最后一轮讨论,连夜修改。那个场景至今记忆犹新,赵宏感冒得实在厉害,鼻涕不停地流,把宾馆里两卷纸都用光了,还不够。熬到三点,才写完。刚入睡,就被楼道里高总巨大的喷嚏声吵醒了。
投标当天,我不需要去,本想睡到自然醒,哪想到五点多,有人敲门,我痛苦地爬起来,穿戴整齐,开门。原来是高总和刘总回来了。高总说了一句:“标书做好了,给你说一声,接着睡吧。”我的同事们真是善解人意啊!
投完标,离开住处的时候,高总已经疲惫得一脸茫然了,离开宾馆都不记得开发票了。飞机到济南的时候,大雾,超大的雾,我们的飞机“哐”一声落地后,后面的飞机全都不能着陆了。整个机场都被超大的雾笼罩着,能见度不足一米。接机师傅,真是艺高人胆大,冲出机场的重雾就直奔高速路口,大家都讨论高速入口应该封了,结果是我们进了高速,入口就封了。在能见度不足三米的高速上飞驰,真是件令人心惊胆战的事情,所有的人都坐得极其端正,伸长脖子,瞪大眼睛,盯着前方的路。终于一切安好,顺利到达。
司机师傅意味深长地说你们这次可能真能中标。
果然被司机师傅言中,我们成功中标了。但是对于国产中间件,客户有怀疑,集成商有质疑。
客户那边从各大集成商那边收集了各种问题,要进行问题解答和现场技术交流。提出的问题很多,都很专业和深入,很多都需要写例子来证明。现场技术交流,刘民总、高总和韩总都会去,我觉得真是没什么好担心的了。
交流前一天,关于交流的PPT,大家没能统一意见。刘总想让我去讲PPT,讲PPT实在不是我擅长的事情,而且到傍晚的时候PPT内容,各个领导都没有达成一致意见。每个人都有自己的思路,既然想让我讲,我就想按照自己的思路写PPT,但是我的思路没说完就被高总否了,我顿时就崩溃了。讲PPT男性和女性的语言思路都不一样,打动听众的切入点完全不同。女性就喜欢用生动一点的语言,形象一点的故事,与听众靠拢,触动听众引起共鸣,可是这个PPT完全不是在这个路线上啊。崩溃,就崩溃吧,我想反正我也讲不好,尤其是心理素质不行。我鸵鸟了,高总讲吧,反正他擅长此项。其实每一次退缩都是很懊恼、痛苦的,就像是一块玻璃埋在了心里,时不时扎得心痛。
刘民总让大家将问题交流答案打印成册,并进行了仔细的装订。高总大气磅礴,PPT自然讲得无可挑剔。每个集成商都问了很多问题,问题都很专业,韩总都云淡风轻地化解了,对于一个真正的技术大拿来讲,这些都是小case。
某个集成商一直在围绕应用监控的问题在纠缠,刘总马上高大上地纠正了他的思路,说应用广泛的监控目前不在应用服务器的范畴之内,国外主流的应用服务器也不包含这些功能,如果想深入沟通可以了解我们的另外一款产品UTMP。女超人两句三句就将整体交流的思路拉回正途了,让他们聚焦我们的应用服务器产品。
某个集成商反反复复在纠缠Java EE 7的问题,本着面向用户提升产品的角度,我抱着学习的态度问“请问您用了Java EE7的哪些新技术?”。 “EJB 3.1。”“那是Java EE 6规范的。”据说这个集成商当时刷的脸红了,他再也没跟我们纠缠Java EE规范的事情。
一场成功的售前交流需要精心的策划、丰厚技术的支撑、现场的精确应答、对于交流方向的把握以及对挑衅者不着痕迹地提醒。
成功的售前交流后,我们获得了很好的机遇去测试,去应用。但是当时公司也面临的前所未有的人才流失,我在之前从未做过实施,从未做过性能测试,但是公司却指定让我去。
当时的场景是这样的,领导们在几个人里做选择,他们你一言我一语,说A是女的,不适合去。B家里孩子小,C老公出差,最后指定了我去,女的、家里孩子小、老公出差三者全占的。这个场景多年后依然记忆犹新,它教会我规则只是适用于部分人。
最后安排刘XX和我一起去。他有丰富的实施经验。我们先去珠海远光做第一个应用迁移。应用一部署,后台呼呼报错,一看,37页的错误。错误多得我都茫然了。
来了两天,刘XX跟我说他要回家一趟,下周回来。然后至今我再也没见过他。那真是一次异常坎坷的应用迁移。
电脑坏了,南方温度高,开机二十分钟电脑就死机,严重影响工作,每天晚上十二点写日报的场景是打开空调,裹着被子,为的都是给电脑降温。无线上网卡坏了,最郁闷的是行李箱密码打不开了,衣服全在里面,我从000开到999,开到半夜,硬是打不开。
深夜里我孤身在珠海的小宾馆里,反复开行李箱的时候,想到跟远在美国的翟鲁超沟通OSGi应用迁移的问题。微信的另一端他悠闲地腌制着牛肉,反复跟我讲“美国的牛肉含水量确实低。”我只关注“如何实现两个OSGi容器的隔离。”不过最终还是得到了他的启迪,找到了容器隔离的办法。
远光是一个充满温暖的公司,我们加班的时候,他们给我们送零食,还送咖啡。只是谢总送完咖啡说:“这个牌子的咖啡是同事从海南带回来的,我每次喝完都拉肚子。”让我纠结是否尝试这个咖啡。后来通过跟谢总反复交流,我们很快解决了大量类加载的问题。用不到两周的时间完成了第一个应用的迁移。
应用迁移完,我们又做了大量的性能测试工作,有2000的集群性能测试,有3000的性能测试,都是weblogic的性能对比测试,性能必须跟weblogic不相上下才能继续下去。测试是埃森哲组织的,赛宝测试的,除了LoadRunner的压测外,还有人工模仿性能测试。监理拿着秒表进行三次点击响应计时,取平均值。有一个T05的脚本性能测试我们调了一夜,达标的响应时间是3s,我们最终调到2.97,weblogic是2.95。有过调优经验的人都知道大幅的调优好调,越是细小的差异越难调。
期间我们遇到很多问题,比如起初的时候他们配合度不好,总是给错我们测试包。比如压崩溃了人家的Oracle的数据库,担心要赔偿修理费。不过在大家的帮助下,终于都成功测试过了。也慢慢获得了集成商、监理和测试机构的认可,也交了不少朋友。
很多次深夜,我们(有于海伟、李鹏、杜健颖、刘俊强等,因为测试了80多天,期间人员流动几次)走在回宾馆路上,没有公交车,只有蛙叫,还有骑摩托的小混混冲我们吹口哨,当时没有觉得疲惫,而是觉得感恩,感恩能有他们的陪伴。
2015年11月份,我和刘俊强去海口进行海南电网的财务系统上线。因为之前做过大量的测试,上线前只做上线Beta测试即可,所以预想的压力不是太大。但是去了就发现形势比预估的差距较大。
我遇到了三个比较明显的问题。一、现场的集成商不是太欢迎我们。我当时和集成商的负责人坐在一起,恰巧我们用一模一样的杯子,他不小心拿了我的杯子喝了一口水,我马上表示那是我的杯子,他立马去垃圾桶吐出来,就差自己抠着喉咙催吐了。二、客户脾气超差,还完全不懂技术。因为负载均衡器的问题,影响我们上线,客户把我们叫过去就吼,怀疑我们和负载均衡器不兼容。三、那里的运维人员都是男的,那一层没有女厕所。
人们对于未知的事务总是充满抗拒,但也逐渐适应。一周后我们和集成商的关系就变得非常融洽,他们给我们推荐去三亚的路线,讲家里搞笑的私事给我们听。基于之前测试的信任,监理和测试机构也非常帮助我们,三周后通过各种测试顺利上线。
上线不是终点,是一个新的起点,我们又遇到很多新的问题。上线后我就离开了海口,这是一个错误,因为把俊强一个人留在那里,给他造成了很大的心理压力。如果时光倒流,我会在上线后观察一下问题再离开。
在这个项目中我第一次转型做售后,做实施。当然,项目中还有很多其他的系统,很多同事都奋战在项目各个现场的一线,他们和我一样在不停地成长。
在这里我们需要的是面对、成长,完成任务且努力保持一颗快乐的心。
如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby
我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘
我已经像这样安装了一个新的Rails项目:$railsnewsite它执行并到达:bundleinstall但是当它似乎尝试安装依赖项时我得到了这个错误Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcheckingforlibkern/OSAtomic.h...yescreatingMakefilemake"DESTDIR="cleanmake"DESTDIR="
假设我有这个范围:("aaaaa".."zzzzz")如何在不事先/每次生成整个项目的情况下从范围中获取第N个项目? 最佳答案 一种快速简便的方法:("aaaaa".."zzzzz").first(42).last#==>"aaabp"如果出于某种原因你不得不一遍又一遍地这样做,或者如果你需要避免为前N个元素构建中间数组,你可以这样写:moduleEnumerabledefskip(n)returnto_enum:skip,nunlessblock_given?each_with_indexdo|item,index|yieldit
我正在尝试创建一个带有项目符号字符的Ruby1.9.3字符串。str="•"+"helloworld"但是,当我输入它时,我收到有关非ASCII字符的语法错误。我该怎么做? 最佳答案 你可以把Unicode字符放在那里。str="\u2022"+"helloworld" 关于ruby-如何在Ruby字符串中插入项目符号字符?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1195
我的Rails站点使用了一个确实不是很好的gem。每次我需要做一些新的事情时,我最终不得不花费与向实际Rails项目添加代码一样多的时间来为gem添加功能。但我不介意,我将我的Gemfile设置为指向我的gem的GitHub分支(我尝试提交PR,但维护者似乎已经下台)。问题是我真的没有找到一种合理的方法来测试我添加到gem的新东西。在railsc中测试它会特别好,但我能想到的唯一方法是a)更改~/.rvm/gems/.../foo。rb,这看起来不对或者b)升级版本,推送到Github,然后运行bundleup,这除了耗时之外显然是一场灾难,因为我不确定我所做的promise是否正
我一直在尝试使用nanoc用于生成静态网站。我需要组织一个复杂的排列页面,我想让我的内容保持干燥。包含或合并的概念在nanoc系统中如何运作?我已阅读文档,但似乎找不到我想要的内容。例如:我如何获取两个部分内容项并将它们合并到一个新的内容项中。在staticmatic您可以在您的页面中执行以下操作。=partial('partials/shared/navigation')类似的约定在nanoc中如何运作? 最佳答案 这里是nanoc的作者。在nanoc中,部分是布局。因此,您可以拥有layouts/partials/shared/
我安装了ruby、yeoman,当我运行我的项目时,出现了这个错误:Warning:Running"compass:dist"(compass)taskWarning:YouneedtohaveRubyandCompassinstalledthistasktowork.Moreinfo:https://github.com/gruUse--forcetocontinue.Use--forcetocontinue.我有进入可变session目标的路径,但它不起作用。谁能帮帮我? 最佳答案 我必须运行这个:geminstallcom
我有一个包含多个组件的存储库,其中大部分是用JavaScript(Node.js)编写的,一个是用Ruby(RubyonRails)编写的。我想要一个.travis.yml文件来触发一个运行每个组件的所有测试的构建。根据thisTravisCIGoogleGroupthread,目前还没有官方支持。我的目录结构是这样的:.├──构建服务器├──核心├──扩展├──网络应用├──流浪文件├──package.json├──.travis.yml└──生成文件我希望能够运行特定版本的Ruby(2.2.2)和Node.js(0.12.2)。我已经有了一个make目标,所以maketest在每
前面一篇关于智能合约翻译文讲到了,是一种计算机程序,既然是程序,那就可以使用程序语言去编写智能合约了。而若想玩区块链上的项目,大部分区块链项目都是开源的,能看得懂智能合约代码,或找出其中的漏洞,那么,学习Solidity这门高级的智能合约语言是有必要的,当然,这都得在公链``````以太坊上,毕竟国内的联盟链有些是不兼容Solidity。Solidity是一种面向对象的高级语言,用于实现智能合约。智能合约是管理以太坊状态下的账户行为的程序。Solidity是运行在以太坊(Ethereum)虚拟机(EVM)上,其语法受到了c++、python、javascript影响。Solidity是静态类型