第1节:Jenkins的安装与启动

自己的文章:

①、Jenkins(一)初步认识

一、Jenkins的安装

①、直接下载Jenkins安装。

1
2
3
4
brew install jenkins-lts

# Stable:稳定版本。
# LTS(Long Term Support):长期演进版

②、安装成功后,其会自动打开http://localhost:8080

此时如果我们发现打开错误。原因是我们缺少Jenkins的运行环境,所以我们需要安装java的jdk。如果要验证是否是这个原因的话,我们可以通过命令行查看当前的java版本
Java
果然发现没有安装,则我们通过下载jdk来进行安装。
java的jdk下载地址
jenkins_jdk1
jenkins_jdk2
安装完后,我们再运行一下验证命令,发现可以运行了,即我们安装好了。
Java

③、java环境安装成功之后,接下来我们就可以正常访问Jenkins了。Jenkins的访问地址为http://localhost:8080。打开的页面显示如下:
jenkins_3

④、提示我们需要输入其指定文件夹下的密码来访问。则我们访问其指定文件,发现没法访问该文件内容
jenkins_4
jenkins_noPermission1

所以这里我们通过修改权限,让读取该文件内容,如下:
jenkins_noPermission2
⑤、将读取后的密码输入到登录网页上,即可登录,登录后的结果为:
jenkins_start1

⑥、因为此时为首次登陆,所以其会提示我们安装Jenkins建议的插件。则我们按照步骤进行Jenkins默认插件的安装。安装过程如下所示:
jenkins_start2
jenkins_start3

⑦、一路安装过来,输入用户名,密码。
之后继续登录http://localhost:8080/可以看到最终的显示结果为:
jenkins_use1
此时则我们的Jenkins的初始安装完毕(之后我们可能还需要安装一些自己需要的插件)。

二、Jenkins的启动

没有权限问题的Jenkins正确的启动方式如下(按下面方式打开,才不会出现权限问题):

1
2
$ sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist
$ java -jar /Applications/Jenkins/jenkins.war --httpPort=8080

当你执行完这两行命令的时候,你可以在浏览器上输入http://localhost:8080来访问Jenkins了。(如果你只执行了第一行,没执行第二行,会出现无法访问)

三、Jenkins的升级

1、如何查看jenkins 的版本号

jenkins页面的右下角就是jenkins版本号信息

image-20200927143448781

image-20200927143111985

image-20200927233412864

image-20200927234036120

要执行下载好的版本

image-20200928001116531

游戏随笔

有这么一个技能,当怪物血量高于总血量的70%时,你的伤害增加50%。

以血量1000下的不同攻击力分别计算带该技能后,相当于整个攻击过程增加了多少的攻击力?
情况1,攻击力10:未带技能时攻击次数是100次,有带技能时加成与未加成的攻击次数分别是20和70(有带技能且加成时攻击力是15,打20次后降到70%以下的血,剩700要用攻击力10打),相当于攻击力增加10%。附(20+70)/100=0.90
情况2,攻击力100:未带技能时攻击次数是10次,有带技能时加成与未加成的攻击次数分别是2和7(有带技能且加成时攻击力是150,打2次后降到70%以下的血,剩700要用攻击力100打),相当于攻击力增加10%。附(2+7)/10=0.90
情况3,攻击力200:未带技能时攻击次数是5.0次,有带技能时加成与未加成的攻击次数分别是1和3.5(有带技能且加成时攻击力是300,打1次后降到70%以下的血,剩700要用攻击力200打),相当于攻击力增加10%,即(1+3.5)/5.0=0.90
情况4,攻击力300:未带技能时攻击次数是3.3次,有带技能时加成与未加成攻击次数分别是1和1.83(有带技能且加成时攻击力是450,打1次后降到70%以下的血,剩550要用攻击力300打),相当于攻击力增加15%,即(1+1.83)/3.3≈0.85
情况5,攻击力400:未带技能时攻击次数是2.5次,有带技能时加成与未加成的攻击次数分别是1和1.0(有带技能且加成时攻击力是600,打1次后降到70%以下的血,剩400要用攻击力400打),相当于攻击力增加20%,即(1+1.0)/2.5=0.80
情况6,攻击力500:未带技能时攻击次数是2.0次,有带技能时加成与未加成的攻击次数分别是1和0.5(有带技能且加成时攻击力是750,打1次后降到70%以下的血,剩250要用攻击力500打),相当于攻击力增加25%,即(1+0.5)/2.0=0.75

攻击力 未带技能时
攻击次数
有带技能且生效时
攻击力、可打次数和输出伤害
有带技能但失效时
剩余血量和还需攻击次数
攻击次数比 增长
1 10 1000/10 = 100次 15功 * 20次 = 300血 700血 / 10功 = 70次 (20+70)/100 = 0.90 10%
2 100 10次 150功 * 2次 = 300血 700血 / 100功 = 7.0次 (2+7.0)/10 = 0.90 10%
3 200 5.0次 300功 * 1次 = 300血(剩<700) 700血 / 200功 = 3.5次 (1+3.5)/5.0 = 0.90 10%
4 300 3.3次 450功 * 1次 = 450血 550血 / 300功 ≈ 1.83次 (1+1.83)/3.3≈0.85 15%
5 400 2.5次 600功 * 1次 = 600血 400血 / 400功 = 1.0次 (1+1.0)/2.5 = 0.80 20%
6 500 2.0次 750功 * 1次 = 750血 250血 / 500功 = 0.5次 (1+0.5)/2.0 = 0.75 25%
7 600 1000/600≈1.66次 900功 * 1次 = 900血 100血 / 600功 ≈ 0.16次 (1+0.16)/1.66≈0.70 30%
8 666 1000/666.6=1.5次 1000功 * 1次 = 1000血 0血 / 666.66功 = 0.0次 (1+0.0)/1.5 ≈ 0.66 33%
9 700 1000/700 ≈1.42次 1050功 * 1次 = 1050血 0血 / 700功 = 0.0次 (1+0.0)/1.42 ≈ 0.70 30%
10 800 1000/800 =1.25次 1200功 * 1次 = 1200血 0血 / 800功 = 0.0次 (1+0.0)/1.25 = 0.80 20%
11 900 1000/900 ≈1.11次 1350功 * 1次 = 1350血 0血 / 900功 = 0.0次 (1+0.0)/1.11 ≈ 0.90 10%
12 1000 1000/1000 =1.0次 1500功 * 1次 = 1500血 0血 / 1000功 = 0.0次 (1+0.0)/1.0 = 1.0 0%

最大增长率是33% 。发生在带技能后技能生效一枪爆头,把技能的增效才充分利用了。即最大增长率发生在 (1+50%)*1枪=处决即未加攻时1.5枪,加功时1枪。(1+0.0)/1.5 ≈ 0.66,增长了33%,差不多略小于 50%*70% = 35%

如果技能是当怪物血量高于总血量的70%时,伤害可以增加60%(而不是50%)呢?

攻击力 未带技能时
攻击次数
有带技能且生效时
攻击力、可打次数和输出伤害
有带技能但失效时
剩余血量和还需攻击次数
攻击次数比 增长
1 10 1000/10 = 100次 16功 * 19次 = 304血 696血 / 10功 = 70次 (19+70)/100 = 0.89 11%
2 100 10次 160功 * 2次 = 320血 680血 / 100功 = 6.8次 (2+6.8)/10 = 0.88 12%
3 200 5.0次 320功 * 1次 = 320血(剩<700) 680血 / 200功 = 3.4次 (1+3.4)/5.0 = 0.88 12%
4 300 3.3次 480功 * 1次 = 480血 520血 / 300功 ≈ 1.73次 (1+1.73)/3.3≈0.82 18%
5 400 2.5次 640功 * 1次 = 640血 360血 / 400功 = 0.9次 (1+0.9)/2.5 = 0.76 24%
6 500 2.0次 800功 * 1次 = 800血 200血 / 500功 = 0.4次 (1+0.4)/2.0 = 0.70 30%
7 600 1000/600≈1.66次 960功 * 1次 = 960血 40血 / 600功 ≈ 0.06次 (1+0.06)/1.66≈0.64 36%
8 625 1000/625 =1.6次 1000功 * 1次 = 1000血 0血 / 625功 = 0.0次 (1+0.0)/1.6 = 0.625 37.5%
9 700 1000/700 ≈1.42次 1120功 * 1次 = 1120血 0血 / 700功 = 0.0次 (1+0.0)/1.42 ≈ 0.70 30%
10 800 1000/800 =1.25次 1280功 * 1次 = 1280血 0血 / 800功 = 0.0次 (1+0.0)/1.25 = 0.80 20%
11 900 1000/900 ≈1.11次 1440功 * 1次 = 1440血 0血 / 900功 = 0.0次 (1+0.0)/1.11 ≈ 0.90 10%
12 1000 1000/1000 =1.0次 1600功 * 1次 = 1600血 0血 / 1000功 = 0.0次 (1+0.0)/1.0 = 1.0 0%

最大增长率是37.5% 。发生在带技能后技能生效一枪爆头,把技能的增效才充分利用了。即最大增长率发生在 (1+60%)*1枪=处决即未加攻时1.6枪,加功时1枪。(1+0.0)/1.6 = 0.625,增长了37.5%,差不多略小于 60%*70% = 42%

如果技能是当怪物血量高于总血量的50%(不用到70%)就可以生效伤害增加50%的效果呢?

攻击力 未带技能时
攻击次数
有带技能且生效时
攻击力、可打次数和输出伤害
有带技能但失效时
剩余血量和还需攻击次数
攻击次数比 增长
1 10 1000/10 = 100次 15功 * 34次 = 510血 490血 / 10功 = 49次 (34+49)/100 = 0.73 27%
2 100 10次 150功 * 4次 = 600血 400血 / 100功 = 4.0次 (4+4.0)/10 = 0.80 20%
3 200 5.0次 300功 * 2次 = 600血 400血 / 200功 = 2.0次 (2+2.0)/5.0 = 0.80 10%
4 300 3.3次 450功 * 2次 = 900血 100血 / 300功 ≈ 0.33次 (2+0.33)/3.3≈0.70 30%
333.33 1000/333.33=3.0次 500功 * 1次 = 500血(剩<500) 500血 / 333.33功=1.5次 (1+1.5)/3.0≈0.83 17%
5 400 2.5次 600功 * 1次 = 600血(剩<500) 400血 / 400功 = 1.0次 (1+1.0)/2.5 = 0.80 20%
6 500 2.0次 750功 * 1次 = 750血 250血 / 500功 = 0.5次 (1+0.5)/2.0 = 0.75 25%
7 600 1000/600≈1.66次 900功 * 1次 = 900血 100血 / 600功 ≈ 0.16次 (1+0.16)/1.66≈0.70 30%
8 666 1000/666.6=1.5次 1000功 * 1次 = 1000血 0血 / 666.66功 = 0.0次 (1+0.0)/1.5 ≈ 0.66 33%
9 700 1000/700 ≈1.42次 1050功 * 1次 = 1050血 0血 / 700功 = 0.0次 (1+0.0)/1.42 ≈ 0.70 30%
10 800 1000/800 =1.25次 1200功 * 1次 = 1200血 0血 / 800功 = 0.0次 (1+0.0)/1.25 = 0.80 20%
11 900 1000/900 ≈1.11次 1350功 * 1次 = 1350血 0血 / 900功 = 0.0次 (1+0.0)/1.11 ≈ 0.90 10%
12 1000 1000/1000 =1.0次 1500功 * 1次 = 1500血 0血 / 1000功 = 0.0次 (1+0.0)/1.0 = 1.0 0%

CocoaPods库部署

如果你在终端执行pod search xxx,未得到上面的结果,是因为cocoaPods的本地search_index.json文件有问题,
方法①:请前往~/Library/Caches/CocoaPods/search_index.json将该文件删除,
方法②:或者直接在终端输入:rm ~/Library/Caches/CocoaPods/search_index.json
删除后,再重新执行命令即可。

一、远程库

1、添加库的版本

1.1、添加公有库的版本

1.2、添加私有库的版本

1
2
3
4
5
6
 #验证方法1:
pod lib lint CQBaseUIKit.podspec --sources='https://github.com/CocoaPods/Specs.git,https://gitee.com/dvlproad/dvlproadSpecs' --allow-warnings --use-libraries --verbose
#验证方法2:
pod lib lint CQBaseUIKit.podspec --sources=master,dvlproad --allow-warnings --use-libraries --verbose
#提交方法:
pod repo push dvlproad CQBaseUIKit.podspec --sources=master,dvlproad --allow-warnings --use-libraries --verbose

不需要过多验证的话,简洁版:

1
pod repo push dvlproad CQThemeUIKit.podspec --allow-warnings

2、删除库的某个版本

2.1、删除公有库的某个版本

2.2、删除私有库的某个版本

CocoaPods创建公有Pod库后删除特定版本来纠正意外推送

可以删除一个POD的特定版本来纠正意外推送。

1
pod trunk delete PODNAME VERSION

3、放弃整个库

你也可以放弃整个POD和所有版本。

1
pod trunk deprecate PODNAME

确认时,请回复一个”y”(小写字母 y)

二、本地库

1、库的本地位置

1
2
# 库目录
~/.cocoapods/repos/dvlproad

podspec写法

Podspec编辑方法:
首先确认编辑环境,podspec的引号”是否正确

如果Podspec有依赖的系统库,则添加方法如下:

1
s.libraries = "sqlite3"

如果Podspec有依赖的第三方库,则添加方法如下:

1
s.dependency 'FMDB', '~> 2.5'

如果Podspec有依赖的资源,则添加方法如下:

1
s.resources = "CJSliderViewController/**/*.png"

podspec常见错误

SVN配置代码库1

解答:参考Cocoapod compilation fails when loading .xib file
即错误原因为:把非.h.m的文件都放到resouces中,而不要放到soucres中

Git Feature

Git Feature

使用Git Flow工作流:

image-20220301145230642 image-20220301145504810

输入对应的生产环境分支名和开发分支名,如果输入的分支不存在,则会弹出如下提示:

image-20220301152403882

git 项目默认自动创建 master 主分支;
点击仓库–> git flow 或 hg fow –>初始化仓库,初始化仓库并创建develop开发分支;

在这里插入图片描述

创建 feature 功能分支:

双击 Sourcetree 左侧的 develop 开发分支,切换到 develop 开发分支;
点击仓库–> git flow 或 hg fow –>建立新的功能,输入功能名称,点击确定即可;

1.
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

完成 feature 功能分支:

当 feature 功能分支开发完成后,即可将 feature 中的代码合并到 develop 分支中。

提交 feature 功能分支的代码到远程;
在 feature 分支上,点击仓库–> git flow 或 hg fow –>完成功能;

在这里插入图片描述

feature 功能分支中的代码合并到了develop 开发分支,feature 分支被删除;

创建 release 发布分支:

双击 Sourcetree 左侧的 develop 开发分支,切换到 develop 开发分支;
点击仓库–> git flow 或 hg fow –>建立新的发布版本,输入发布版本号,点击确定即可;
完成 release 发布分支:

在 release 分支上,点击仓库–> git flow 或 hg fow –>完成发布版本,发布完成后 release 分支的代码同时合并到了 master 分支和 develop 分支。

创建 hotfix 补丁分支:

在 master 分支上,点击仓库–> git flow 或 hg fow –>建立新的修复补丁。

完成 hotfix 补丁分支:

在 hotfix 分支上,点击仓库–> git flow 或 hg fow –>完成修复补丁,合并完成后 hotfix 的代码同时合并到了 master 分支和 develop 分支。

Git Log

Git log

1
2
3
4
git log --merges --after="2022-10-13" --oneline --decorate
git log --after="2022-10-13" --oneline --decorate

git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative --all --after '10-13-2022' --merges

查看历史版本记录–指定显示条数

同时,与git log相同的是,git reflog也提供了控制显示条数的选项:

命令:git reflog -n

1、获取本分支合入指定分支的commitId

有些时候需要解析分支,tag,或者其他对于提交的间接引用。对于这种情况,你可以使用git rev-parse命令。下面的命令返回指向development分支的提交哈希串。

1
git rev-parse development

这对于编写只接受提交ID作为参数的自定义脚本非常有用。你可以使用git rev-parse命令来标准化脚本的输入,进而进入对于提交的统一处理。这就避免了脚本用户需要手动解析提交的引用。

二、获取commitId的信息

1、获取commitId的提交信息

想要将此哈希串作为参数传递给其他Git命令,只需要提供足够长度的字符串就可以了。比如说,你可以通过下面的命令来传入上面的哈希串,以便使用git show命令查看那次提交的具体内容。

1
2
3
git show 0c708f

git show -s --oneline 3d21461a7ef205ed0cee0baf45e95e782f4e84af

2、获取commitId的根源远程分支

①、获取有哪些远程分支里已经合入了commitId

1
git branch --contains eb0633b76925041f84b592a2e261e0b8537953f7 -r # -r标识远程分支

②、第一个合入commitId的远程分支,即为commitId的根源分支

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
branchResultForFisrtCommit=$(git branch --contains "${firstCommitId}" -r)
echo "${branchResultForFisrtCommit}"

branchArrayForFisrtCommit=(${branchResultForFisrtCommit})
branchCountForFisrtCommit=${#branchArrayForFisrtCommit[@]}
#echo "branchCountForFisrtCommit=$branchCountForFisrtCommit"
#for ((i=0;i<branchCountForFisrtCommit;i+=1))
#{
# branchName=${branchArrayForFisrtCommit[i]}
# echo "branchName=${branchName}"
#}

echo "\n------下面开始获取firstCommitId:${firstCommitId}的提交所属的根源远程功能分支名------"
sourceBranchForFisrtCommit=${branchArrayForFisrtCommit[${branchCountForFisrtCommit}-1]}
echo "sourceBranchForFisrtCommit=${sourceBranchForFisrtCommit}"

Git Search

Git查看分支从哪个分支创建的

查看分支创建时间

1
git reflog show --date=iso <branch name>

举例如图:

查看Git分支从哪创建

最老的那条记录即可以看出是从哪创建出来的。

但有时候记录太多,滑动太长,可以直接使用如下命令,直接查看

1
git reflog dev_environment | grep "Created from"

如果是feature分支

1
git reflog show --date=iso feature/设备小程序

image-20220301145230642

Git项目管理

一、Git统计提交代码量

1
2
3
git log --author="_your_name_" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }'

git log --author=xxxxx --since=‘2023-01-18 00:00:00’ --until=‘2023-01-18 23:00:00’ --pretty=tformat: --numstat | awk ‘{ add += $1; subs += $2; loc += $1 - $2 } END { printf “added lines: %s, removed lines: %s,total lines: %s\n”, add, subs, loc }’

git log 查询git的提交记录

–author=xxx 查询某一个用户的提交记录

–pretty=tformat: 控制显示的记录格式

–numstat 对增加和删除的行数进行统计 第一列显示的是增加的行数 第二列显示的是删除的行数

–since 需要统计的开始时间

–until 需要统计的结束时间

实操:

1
2
3
4
5
6
7
8
9
10
11
# 常量形式
git log --author="qian" --since='2023-02-18 00:00:00' --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }'

# 变量形式
authorName=qian
sincedate='2023-02-18 00:00:00'
git log --author="$authorName" --since="$sincedate" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }'

# 增加统计多少个文件
git log --author="$authorName" --since="$sincedate" --pretty=tformat: --numstat | awk '/./ { add += $1; subs += $2; loc += $1 - $2 } END { printf "modified files: %s, added lines: %s, removed lines: %s, total lines: %s\n", NR, add, subs, loc }'