I can believe fly.

Wednesday, July 3, 2019

mac下用户用户组命令行操作

使用mac的时候需要像linux一样对用户和群组进行操作,但是linux使用的gpasswd和usermod在mac上都不可以使用,mac使用dscl来对group和user操作。
查看用户组:
1
dscl . list /groups
 查看用户:
1
dscl . list /users
 添加用户组:
1
sudo dscl . -create /Groups/test
 删除用户组:
1
sudo dscl . -delete /Groups/test
 添加用户:
1
sudo dscl .  -create /Users/redis
 删除用户:
1
sudo dscl . -delete /Users/redis
 显示所有users对应的group:
1
sudo dscl . -list /groups GroupMembership
 添加user到group:
1
sudo dscl . -append /Groups/groupname GroupMembership username
从group中删除user:
1
sudo dscl . -delete /Groups/groupname GroupMembership username
 other:
1
2
3
dscl . -create /Groups/GROUP
dscl . -create /Groups/GROUP PrimaryGroupID GID
dscl . -create /Groups/GROUP Password \*

1
2
3
4
5
6
7
dscl . -create /Users/USER
dscl . -create /Users/USER UniqueID UID
dscl . -create /Users/USER UserShell /usr/bin/false
dscl . -create /Users/USER RealName 'DESCRIPTION'
dscl . -create /Users/USER NFSHomeDirectory DIRECTORY
dscl . -create /Users/USER PrimaryGroupID GID
dscl . -create /Users/USER Password \*
 显示所有用户组的ID
1
dscl . -list /Groups PrimaryGroupID
 读取用户组的信息:
1
2
3
4
5
6
7
8
9
10
11
12
13
dscl . read /groups/wheel
结果:
AppleMetaNodeLocation: /Local/Default
GeneratedUID: ABCDEFAB-CDEF-ABCD-EFAB-CDEF00000000
GroupMembers: FFFFEEEE-DDDD-CCCC-BBBB-AAAA00000000
GroupMembership: root
Password: *
PrimaryGroupID: 0
RealName:
 System Group
RecordName: wheel
RecordType: dsRecTypeStandard:Groups
 读取用户组下的成员:
1
2
3
4
dscl . read /groups/wheel GroupMembership
结果:
GroupMembership: root

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/binffmpeg-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下,管道|需要使用^来进行转义