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


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

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

    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”,如果平时工作中遇到重复性劳动,那么不妨稍微思考一二,看看有没有更好的技术轮子可以引进,说不定会提高工作效率,那么就可以抽出更多时间去喝咖啡、抽出更多时间去忙点自己的事情。

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

  • 相关阅读:
    THUSC2019游记
    2019-8-2-WPF-从文件加载字体
    2019-8-2-WPF-从文件加载字体
    2018-8-10-VisualStudio-合并代码文件
    2018-8-10-VisualStudio-合并代码文件
    2018-8-10-UWP-分享用那个图标
    2018-8-10-UWP-分享用那个图标
    2018-8-10-WPF-可获得焦点属性
    2018-8-10-WPF-可获得焦点属性
    2018-8-10-WPF-好看的矢量图标
  • 原文地址:https://www.cnblogs.com/socoool/p/12629800.html
Copyright © 2020-2023  润新知