重构日记

一个老项目,大家往上面堆代码,堆到现在有100+个模块,就是上次减肥的那个项目。 最近几个跑来写后端的同事问我,刚clone下来的项目里面一些模块是用来做什么的,为什么叫这些名字。我对项目的小模块不是很喜欢,但是为了让这几位同事对现在要接手的工作有点信心,想了个听起来很合理的理由跟他解释了一下,他们似懂非懂,说出一个“哦”字都能听出勉强,心里很难受。回过头,另一个老员工问我,这个项目里的某个模块为什么叫这个名字,有什么深意。当时的感觉:〃ωo啲吢ぬ痛ぐ 直到最近有同事升级了Gradle版本到4.0.1,也就是昨天,出现了build break,一个同事说是Gradle的Bug,瞅了一眼当时就喷了,之前写Gradle文件的同事到StackOverflow上找了个通用解决办法,为了代码看上去不是复制粘贴,手打了一份不等于抄,搞了一个配置用到现在。Gradle开发团队总是堆feature往前赶不做向前兼容,搞得Gradle plugin社区怨声载道,这次升级我也天天被同事粘着缠着,非要我讲Gradle的故事。面对这次危机,我决定站出来~~成为偶像~~做点升级的事情。 后来看项目100+模块真是昏古七了,想重构,于是今早跑去跟项目负责人撒娇软磨硬泡了一上午,可以动手做,但是要把过程记录下来,于是就写个重构日记吧。…

工作,满5年

5年前的今天,我在上海张江签下自己第一份工作合同。 那天早上下着小雨,我穿着新买的衬衫、西裤和皮鞋,从一家老旧的照相馆里拿到自己的照片,没有伞,站在马路边发呆,心境和现在一样,没有现实感。 写点东西吧。 工作责任 从刚工作到现在,职称一直是软件开发工程师,负责软件开发,偶尔负责数据库、运维、网站稳定性方面一些工作,有点辛苦有点忙。 工作第2年,从业务开发转为基础架构,职责和工作量多了很多,需要每天不断学习来应付工作中的难题。负责大量的开发工作同时,也负责少量的运维工作,那时国内还没兴起DevOps和MicroService这些概念,在国内流行开来之后,才悟到当时做的很多都是这领域里的东西。这段经历很宝贵,第一次被迫去见证某个领域的实践变成理论落地,各类工具的高速发展。 工作第4年,转去做了DevOps,工作范围正好和之前的基础架构重合,只是视野转为鸟瞰了。目前的工作岗位需要负责人比其他人更加稳重和成熟,思考问题也要更全面。在这方面上下了很多功夫,运气很好,没捅过娄子,出现紧急情况或快完蛋的时候总有奇迹出现,有惊无险又过一天。 职业目标 在校的时候看过一篇文章,大意是说毕业5年之内不要和别人比较,只和自己比。那时临近毕业,拿着这篇文章给同学看,说自己也打算这样。后来发现这个想法很危险。…

Spring Boot应用优化与升级

前言 厂里有个21W行Java代码的项目,通过Gradle管理,子项目有104个,编译之后产生3个可启动的应用,初次编译时间要95秒,产生的关键应用的大小在90M左右。上传到生产服务器运行,启动完成需要137秒。整个过程比较漫长,一次Hotfix会耗掉Ops近10分钟时间。 上周三一同事回家试验升级Spring Boot 1.4.0和Gradle 3.0,说好像还不错,这个项目还在使用1.2.7版本,可以找时间的时候升级上去。 周四下午有了点时间,就着手开始动手做,三个目标,有优先级地开始进行: 加速应用的编译和启动速度 将Spring Boot升级到1.4.0版本 将Spring Boot相关依赖升级到合适的版本 加速应用的编译和启动速度 Spring Boot应用是一个fat jar,启动的时候会将fat jar中的jar(jar in jar)一个个扫描,将里面的jar扫描之后通过链接方式重新链入classpath中。应用越大,这个工作就越繁重,耗时越长。…

折腾Hackintosh

最近安装了很多台Hackintosh机器,觉得有必要写点东西 缘由 家里用的NUC是Brix BXi5-4570R,于2015年4月初在Amazon上以200美元购入,CPU是以R为后缀的i5 Haswell系处理器,让机器在非常小巧的同时,性能极为彪悍,装上一张mSATA SSD和16G的内存之后,这个小机器就一直运行到了现在;但年初购入了个Dell P2715Q Display,分辨率上来显卡性能一下就吃紧了,后来把系统从Windows 10换到了Ubuntu Gnome,发现Linux下的驱动好像不是很好,在浏览网页页面稍微多一点(200个Tab左右)的时候,Firefox经常假死 等新款的Mac,无论是Mac Mini也好,是MacBook Pro也好,性能想稍微过得去一些,但是今年年初做了点小升级,推了个玫瑰金的MacBook,想想两年前越来越难更换硬盘、使用后缀带U的CPU的Mac Mini,扫了一眼现在的Mac机器,比Brix的CPU还要强的机器也就只有高配的iMac和全系Mac Pro,还是装OSX系统比较实在一些 这台机器出了也有好长时间,在tonymacx86上是比较流行的机器,同梯的还有一台Brix BXi7-4770R,安装OSX的成功例子很多,从Mavericks到Yosemite到El Capitan都有相当多人踩过坑、积攒过经验,而有个完美的安装帖子出来了:[Guide]…

又一次,你好,世界

之前在孱弱的机器上面跑Blog,512MB内存跑个Ghost内存爆炸连Swap都吃满了;正好最近搞Docker、Azure、AWS,手头上有两台机器,想把博客从孱弱的机器上搬过来,于是就开搞了 HTTPS/SSL 搞了COMODO证书,网站终于有了HTTPS/SSL支持,所有走80端口的全部强制rewrite走443 有了SSL,又想开HTTP2。检查了Nginx的版本,nginx -V详细看了一下,确保支持HTTP2,但是打开HTTP2之后Chrome、Firefox都无法访问,Android机器上的Chrome也无法访问,奇怪的是iPhone、iPad、Edge一点问题都没…想想HTTP1.1现在也暂时够用,有时间再折腾 感谢Nginx,让整个世界支持HTTP2的网站开始多了起来 Ghost 博客用的Ghost,装Docker里面以Production模式跑 刚开始访问管理界面的时候总跳到 https://my-ghost-blog/ghost 这个网站,不知道为啥;后来发现在配置中的url不能加https,只能设置为http,改回来了就正常了 设置Blog域名的时候,发现证书只能在Domain下使用,不能应用到Subdomain,只能往下开Subfolder。目前暂时没有其他的路径,索性也将域名直接rewrite过来到/blog下…

要什么

中午12点的飞机,现在是凌晨0点。要带的东西都列清楚了,早上起来再收拾。到阳台摸了摸晾着的衣物,还没完全干,楼下停着的车顶上积了一层雪。回到床上睡不着,起来写点东西好了。 转职 半年前,一个前端的小伙跟我说,我可以负责现在的部署,现在缺运维,我正好可以做这份工作。当时我支支吾吾,在技术上比较虚,没有直接答应下来。后来不知道为啥就成了运维…当时想法是“必须要有个人做这件事,但是大家都好忙,只好我来吧”,就转职运维了,到今天正好一个月。 转职运维,意味着之前很多擅长的技能都无法派上用场,新领域需要学习和积累,一些短期目标和任务无法完成的时候,我就会感受到巨大的压力。后来定好路线图,按部就班,稳扎稳打,压力减轻多了。 不过想了想,还是自己这个月开了小差,工作时间之外的大量时间用来准备其他的事情了,这个后文再谈。 总之,现在的工作还算能应付得来,没到得心应手的程度。 高低 和朋友聊天的时候,聊到我转职做运维这件事,他们都送来了惊讶的神情,还反复跟我确认是不是真的。我当时说,做运维没有什么不好哇,可以有持续的学习和积累,见到不断增加的业务规模,…

2015年年终总结

很长时间没写啥东西了,很快就是2016了,目前在做的项目已经顺利上线,抽空写个年终总结吧。 上一份工作 上一份工作刚开始十分有趣,和挺多有趣的人一起工作,虽然技术和工具都比较老旧。我上级的上级问我,你喜欢做啥,我说我不挑,你让我做啥我做啥,只要能写代码,开心工作,就可以了。于是我被分配去做一个牛人的小弟,写SQL,搞Pentaho,当时觉得也挺好玩的,自己心态能放低一点,慢慢进步,细水长流。 过了一段时间我也不知道为啥就变成自己一个人负责一堆东西了,去做对接其他组的接口,也开始和产品经理一起负责一些处理业务方面的东西,忙碌了一段时间,加了15多天的班。这段时间和产品经理也有点默契了,产品经理眨巴眨巴眼睛,我就知道页面上那些地方做得不对。 忙了一阵子,后期越来越清闲,每天没事做,觉得无聊就骚扰上级,说要离职,上级每次都把我绕几个圈哄开心让我回去安心上班。后来一些朋友了解我的状况,说这样的状态持续太长时间会给人带来非常大的影响,性格和做事方式会无法再转回来。我心里记着,拿这些话回去继续骚扰上级。上级应该非常头疼,我那时候应该果断一点,那样他只会心疼不会头疼了。 换工作 不久之后,我因为上班时间逛黄色网站,在QQ群发黄色图片,拉拢上级一起拿摇杆玩游戏,被开除了。…