这些解决思路,让程序员不再重复劳动。

今天这篇分享主要聊一聊,工作中那些需要自动化的事情,稍微做个抛砖引玉,看看是否能够引起你的思考共鸣。

另外无论你是处于猿门外,还是久居猿门内,今天的分享你不得不了解一下,说不定能解决你的燃眉之急。

01. 重复性的劳动(小白)

 

Q: 日常研发过程中,你是否已经沉迷于以下几个操作步骤呢?

步骤一:同步更新本地项目 (SVN or Git)

步骤二:本地项目编译打包  demo-web.war

步骤三:上传到服务器指定目录,例如:XShell、SecureCRT(显着牛掰的用rz)

步骤四:重启 Web 应用服务器,例如:Tomcat、Resin。

那沉迷于以上操作之余,有没有寻找过一款轮子,提升一下自己的开发效率,腾出更多时间去冲咖啡呢?

640?wx_fmt=png

02. 腾出更多时间冲咖啡(久居猿门)

 

凡是有人的地方都有江湖,凡是重复出力的地方,我们都可以抽象出一款轮子,说白了也就是可以偷点懒。

从百宝箱里拿出开发过程中,平时常用的自动化部署脚本 auto_deploy.sh 稍作分享,话不多说,直奔代码。

# 第 0 步:程序猿的世界都是从 0 开始,准备工作。

#!/bin/sh

projectName=demo_app

tomcatName=tomcat-7.0.90

tomcatPath=/app/tomcat/${tomcatName}

svnPath=/app/deploy/demo_app

targetProject=/target/demo_app-1.0/

# 第一步:进入 svn 目录,并进行更新,然后进行 maven 编译打包

# 其中 -P 后跟的是环境信息,如果项目区分开发、测试、生产配置不同,则很有必要。其中 maven 相关命令本次就不做深入剖析啦。

cd ${svnPath} && svn update && mvn clean install -P dev -Dmaven.test.skip=true

# 第二步:进入 tomcat 目录,并停止 tomcat 服务

cd ${tomcatPath}/bin && ./shutdown.sh

kill -9 `ps -ef | grep ${tomcatName} | grep -v 'grep' | awk '{print $2}'`

 

# 第三步:进入 tomcat 应用部署目录,删除原有项目;

# 采用 rsync 进行同步除了.svn文件夹以外的所有文件,到 tomcat 应用部署目录

cd ${tomcatPath}/webapps && rm -rf ./*

rsync --exclude=.svn -r ${svnPath}${targetProject} ${tomcatPath}/webapps/${projectName}

  

# 第四步:启动 tomcat 应用服务器。

cd ${tomcatPath}/bin && ./startup.sh

  

到此,集 SVN + Maven + Tomcat 于一体的自动化发布脚本就完成了,其它编译、部署环境思想也雷同,照猫画虎分分钟 Copy 一套。

打造的一切技术轮子都是纸老虎。有时,发现打破纸老虎的最佳方法,莫过于亲身实践,你们不妨拿去试用一下,说不定会让你事半功倍,抽出更多时间冲咖啡。

03. 数据报告自动化(猿门顿悟)

 

明天要开产品技术大会,小王你统计一下每天接口访问量以及并发峰值。大家都懂就是拿出真实数据出来吹吹牛。

一般面试的时候,我也会经常问求职者这个问题,看看有没有相关解决思路。

条条思路通罗马,而你只需学会一招,因为一招在手,今后无忧。下面说一下分享一下我的解决思路。

从格式良好的简要日志说起。顾名思义,简要日志突出的是"简要"。一般只需包含:全局唯一的请求流水号,请求时间,接口名称,请求处理时间,返回码,返回描述信息。

举个栗子,深入剖析。

 

简要日志的格式为:

reqId,yyyyMMdd,hhmmss,功能,请求处理耗时,返回码,返回信息描述

  

简要日志内容示栗:

R2019061029823,20190610,102737,UserQuery,10ms,0000,操作成功

  

简要日志栗子剖析:

全局请求ID为:R2019061029823

请求日期为:20190610

请求时间为:102737

请求接口为:UserQuery

请求耗时为:10ms

请求返回码为:0000

请求返回描述为:操作成功

分割符为:逗号(,)

  

简要日志搞定数据来源,那么接下来就是解析数据。稍微码过两天代码,解决这个问题都不是难题。

喜欢用 Linux 命令的,一行搞定所有(cat + cut + sort + uniq + head);喜欢用 Java 的,随便找一文件 IO 工具类,然后按行读取,再按照分割符分割,点到为止,so easy;喜欢用 python 的,请来熊猫 pandas 烧柱香,分分钟也能解决问题。

搞定简要日志拆分,那么把拆分后的数据稍作统计,再配上一杯定时任务的美酒,那就可以乐呵呵的每天看应用运行的指标结果啦。

到此,应用数据报告自动化难题就迎刃而解啦。

04. 带你装牛X,带你飞(猿门升华)

 

谈及自动化部署,除了本文中提到的简单的 auto_deploy.sh,那么不得不说一下基于 Java 开发的一种持续集成工具 Jenkins,它是一个集代码编译、打包、部署的 web 界面的平台,如果条件允许的情况下,不妨尝试使用一下。

谈及应用数据自动化,那么不得不再升华一下。搞定了简要日志数据来源、简要日志数据分析,那么如果再配上一个漂亮的页面,那不就包装成产品啦(哈哈),如果稍加推广,那岂不是可以赚钱啦(低调低调)。

 

05. 寄语写在最后

 

还是那句话“拒绝温水煮青蛙,拒绝一味的 CRUD”,如果平时工作中遇到重复性劳动,那么不妨稍微思考一二,看看有没有更好的技术轮子可以引进,说不定会提高工作效率,那么就可以抽出更多时间去喝咖啡、抽出更多时间去忙点自己的事情。

码字不易,码出能让你一看就懂的文章更不易。如果感觉稍微有点意思,多多关注「一猿小讲」了解更多精彩。

猜你喜欢

转载自www.cnblogs.com/socoool/p/12629800.html