I can believe fly.

Sunday, June 16, 2019

FFmpeg-3.3.1 MSYS2(32bit)编译环境搭建

FFmpeg-3.3.1 MSYS2(32bit)编译环境搭建

1.   安装软件
·       下载MSYS2


安装后会有三个环境如下图:


·       更新软件包
打开MSYS2 MSYS,输入以下命令更新软件包
pacman –Syu
pacman -Su

·       安装编译工具
pacman -S automake autoconf make gcc pkg-config libtool yasm mingw-w64-i686-gcc git diffutils

2.   编译
·       打开MSYS2 MinGW 32-bit

·       调用ffmpeg-3.3.1/build/make.sh,等待编译完成

命令行:%MSYS32_HOME%\20161025\msys2_shell.cmd -mingw32 %buildDir%make.sh
3.   打包

-->
拷贝输出文件(ffmpeg-3.3.1/bin,ffmpeg-3.3.1/include, ffmpeg-3.3.1/lib)

Thursday, June 13, 2019

statsvn统计分析报告


介绍

statsvn工具是针对SVN日志信息进行代码统计,它将以一组表格与图表的静态html显示代码行数、开发者的代码行数、开发者活跃程度、开发者提交日志信息、文件(目录)大小等数据。本文主要针对利用它统计指定单版本或指定版本范围获取开发者代码行数出现的差异进行分析。

逻辑

  1. SVN操作动作:A(add) , R(replacing) , D(delete) , M(modified)
  2. 统计结果状态:new, del, changed
  • new:一种是取本地文件的行数;一种是diff的结果。
  • changed:行数则是diff的结果。
  • del:不算行数。一种是当前版本的删除文件。另外,如果当前版本删除之后,某版本删除了其文件夹,则其删除的文件算在后版本。
  1. 两者关系:
  • A->new:Add操作的文件,则状态会被置于new。
  • R-> new:单独指定一个SVN修订版时,文件如果为Replacing操作,则状态会被置于new。
  • R-> changed:指定多个修订版本范围,如果当前版本的文件为R,前一个修订版的文件状态为M,M,M,...R,R ,则统计结果的状态会置于changed。
  • D->del:所有删除操作都会被置于del。
  • M->new:如果M操作的文件被置于new,且行数为0,则说明本地代码所对应的文件不存在,中间有删除操作。
  • M->changed:modified操作的文件,则状态会被置于changed。

现象

以下几中现象,会对数据统计产生影响:
  1. 指定单版本统计:文件被新增,则有计算行数; 指定版本范围统计:当前版本被新增的文件,下一个版本被删除,则行数不在统计范围内。
  2. 指定单版本统计: 当前版本文件被修改,置于change,无变化行数; 指定版本范围统计:当前版本文件被修改,下个版本被删除。当前版本有计算行数。(缓存)
  3. 日志显示文件状态为R,则单版本(NEW +N),版本范围(changed)无行数。比如:1-100,修改状态为(M,M,M,...R,R ) ,统计单版本99时为new(有数字),整个版本范围时为changed。解释:R在单个版本的时候会被认为是new……版本范围中(非第一个版本)的时候被认为是changed……

Wednesday, March 27, 2019

GIT学习-修改本地和远程的commit的作者信息

如果第一条记录,执行:
  1. 修改本地记录git commit --amend --author "ysl<ysl@qq.com>" -m"update info"
  2. 获取远程信息 git fetch
  3. 推送修改 git push --force-with-lease
如果不是第一条(第N条),则

  1. git rebase -i commit_id(第N+1条记录的commitId)
  2. git commit --amend --author "ysl<ysl@qq.com>" -m"update info" (修改信息,则 git commit --amend, 然后Enter 保存)
  3. git rebase --continue
  4. git fetch
  5. git push --force-with-lease

Wednesday, February 13, 2019

自动获取Jenkins agent secret值

背景:从Jenkins 2.0开始,slave的启动需要有个SECRET值
问题:如何自动获取SECRET值
【linux下版本】
JENKINS_AGENT_SECRET=$(curl --user $JENINS_CREDENTIALS --connect-timeout 60 -m 120 -L $JENKINS_AGENT_PAGE_URL 2> /dev/null \
                            | grep ' \-secret ' | grep -Eo '\-secret .+? ' | cut -d' ' -f2 | tr -d ' \t\n\r')

【window下版本】

FOR /F "usebackq" %%t IN (`curl -L -s -u %JENINS_CREDENTIALS% -X GET %JENKINS_AGENT_JNLP_URL% ^| sed "s/.*\([a-z0-9]*\).*/\1/"`) DO set JENKINS_AGENT_SECRET=%%t

注意:在batch下,管道|需要使用^来进行转义

Sunday, November 18, 2018

execl函数使用记20181119


源数据:B1=projectname-android   或者projectname-ios

连接字符串
CONCATENATE(“https://cibuild.ysl.com/jenkins/job/“,B1)      # https://cibuild.ysl.com/jenkins/job/projectname-android

从某个字符截取
=MID(B1,FIND("-",B1),LEN(B1))     #输出:-android

连接字符串
=CONCATENATE("git", MID(B1,FIND("-",B1),LEN(B1)))     #输出:git-android

 替换字符
=SUBSTITUTE(B1, MID(B1,FIND("-",B1),LEN(B1)), CONCATENATE("git", MID(B1,FIND("-",B1),LEN(B1))) )      #输出:projectnamegit-android

继续拼接字符串
CONCATENATE(“https://cibuild.ysl.com/jenkins/job“, SUBSTITUTE(B1, MID(B1,FIND("-",B1),LEN(B1)), CONCATENATE("git", MID(B1,FIND("-",B1),LEN(B1))) ))

#输出: https://cibuild.ysl.com/jenkins/job/projectnamegit-android

Thursday, August 23, 2018

sonar + ldap 配置

参考资料:

https://www.linuxhub.org/doc/install.sonarqube.ldap.html

配置内容:
LDAP configuration
# General Configuration
sonar.security.realm=LDAP
ldap.url=ldap://ip地址:389

# User Configuration
ldap.user.baseDn=dc=yusulian,dc=com
ldap.user.request=(&(objectClass=inetOrgPerson)(cn={login}))
ldap.user.emailAttribute=mail
ldap.user.realNameAttribute=displayname
# Group Configuration

#ldap.group.baseDn=cn={0} 

注意:LDAP创建用户组的时候使用objectClass的属性 
用户使用的是inetOrgPerson 
用户组使用的是posixGroup 
这个创建用户与使用用户的应用程序需要一致。


Saturday, July 21, 2018

ant 实现字符串小写转大写

ant 实现字符串小写转大写
project.setProperty( attributes.get( "to" ),
attributes.get( "string" ).toUpperCase() );
 
 参考资料