0%

前言

Cloudflare 是一家国外的 CDN 加速服务商,还是很有名气的。提供免费和付费的加速和网站保护服务。百度云加速的国外节点就是和 Cloudflare 合作使用的 Cloudflare 的节点。Cloudflare 提供了不同类型的套餐,即使是免费用户,Cloudflare 提供的功能也是很全面的。对于访客来自于国外的网站很不错;对于访客来自于国内的网站加速效果有限,有些甚至会变慢,不过其安全防护功能也很不错。

为什么需要使用Cloudflare?

  • 保护VPS的真实IP,避免IP被封,或者提高IP查询的难度。使用Cloudflare后,ping域名,返回的是Cloudflare的CDN服务器IP,真实的IP会被保护起来。
  • 加速国外网站的访问速度。

如何配置?

官网: www.cloudflare.com
使用邮箱注册,注册完后自动进入添加网站界面。添加网站分为四步:添加网站域名、选择方案、添加DNS记录、更新域名服务器。

添加网站域名

进入后台首页,点击“Add a site”,输入要解析的域名

选择方案

一般来说我们选择免费方案即可(Free),如果觉得不差钱也可以选择付费,但是付费方案和免费方案的 DNS 解析功能是一样的,可用的 CDN 节点也是一样的。

添加DNS记录

  • 1.选择记录类型,一般默认 A 记录即可,如图所示。
  • 2.输入要解析的域名,比如 example.com(此时只需要输入 @ 即可),或者 www.example.com(此时只需要输入 www 即可)。
  • 3.填写 IP 地址,也就是你 VPS 的 IP 地址。
  • 4.TTL 默认即可,不用改。
  • 5.黄色云朵表示该解析通过 CDN 访问,灰色云朵表示不通过 CDN 访问,点击云朵可以切换状态。这里如果选择不走 CDN 的话,相当于只使用 Cloudflare 的 DNS 功能。这里建议全部调为黄色云朵走 CDN 访问,隐藏网站真实 IP 地址。全站通过 CDN 访问可以有效防止网站真实IP泄漏,保护原站安全。
  • 6.点击 Add Record 添加记录。
  • 7.所有要添加的记录都添加完之后,点击 Continue 进入下一个页面。

更新域名服务器

域名解析添加完成后,此时会显示你分配到的 Cloudflare 的 DNS 服务器,每个人都不一样,大家看一下自己的,然后去域名注册商处修改 Name Server,即可完成解析。

登录域名注册商后台,然后进入对应的域名管理,找到“DNS 服务器”、“Name Server” 或者类似的字眼,然后把默认的 DNS 服务器修改成 Cloudflare 提供的 DNS 服务器即可。

等待大概1个多小时,ping一下域名,发现DNS解析返回的是Cloudflare的IP,这样就成功配置完成了。

参考链接

使用 Cloudflare 免费 DNS 服务器解析域名到搬瓦工 VPS 主机建站教程
CloudFlare免费CDN加速使用方法

问题1:The safe area layout guide is the space available to our view, excluding rounded corners and notches.
答案:All important content should lie inside the safe area, or you risk it being obscured.

问题2:layoutMarginsGuide and safeAreaLayoutGuide are the same thing.
答案:Not quite: layoutMarginsGuide is inside the safeAreaLayoutGuide, so it will be slightly smaller.

问题3: Activating multiple constraints at once is faster than modifying isActive for each one.
答案:Apple explicitly recommends using activate() for this purpose.

问题4: Content hugging priority controls how likely Auto Layout is to make a view smaller than its intrinsic content size.
答案:Content hugging priority controls how likely Auto Layout is to make a view larger than its intrinsic content size.

查看服务器剩余磁盘空间

1
# df -h

查看结果:

1
2
3
4
5
6
7
文件系统        容量  已用  可用 已用% 挂载点
devtmpfs 234M 0 234M 0% /dev
tmpfs 244M 0 244M 0% /dev/shm
tmpfs 244M 29M 216M 12% /run
tmpfs 244M 0 244M 0% /sys/fs/cgroup
/dev/vda1 9.3G 2.7G 6.1G 31% /
tmpfs 49M 0 49M 0% /run/user/0

有时候测试同学提供的release包的崩溃日志过来,直接提供的是ips文件,如何将ips文件解析成带符号的崩溃日志呢?
1.在桌面新建test1文件夹,将ips文件拷贝进去,重命名为xxx.crash文件。
2.找到对应版本的dSYM文件,拷贝至test1目录下。
3.前往路径/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash,将文件symbolicatecrash拷贝至test1目录。
4.执行命令./symbolicatecrash ./xxx-2021-07-14-204056.crash ./xxx.dSYM > log.crash,如果没报错,在test1目录下就会生成一个log.crash文件,里面是符号化过的,可以看见部分具体的函数和库名。
5.如果出现报错Error: "DEVELOPER_DIR" is not defined at ./symbolicatecrash line 69.,请执行一下命令export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer",然后再执行第4步的命令即可。

最终的文件目录为:

未符号转化的ips文件截图:

符号化后的文件截图为:

同一个crash文件可以多次解析:

1
2
3
4
5
./symbolicatecrash ./0.ips ./app.dSYM > log.crash

./symbolicatecrash ./log.crash ./aaa.framework.dSYM > log2.crash

./symbolicatecrash ./log2.crash ./bbb.framework.dSYM > log3.crash

自建v2Ray教程,总共分为5步

第一步:购买VPS服务器
第二步:购买免费域名并绑定VPS服务器
第三步:一键部署v2ray脚本
第四步:一键加速VPS服务器(五合一的TCP网络加速脚本)
第五步:修改服务器时区

购买VPS服务器

本篇采用的VPS是一家加拿大VPS服务提供商。这家提供商共有3个机房位置,拉斯维加斯、纽约、卢森堡。这次使用的服务器位于拉斯维加斯,延时在200ms左右。购买地址:https://my.frantech.ca/cart.php

购买免费域名并绑定VPS服务器

freenom 提供了tk、ml、ga、cf、gq 这几类后缀的免费域名。tk域名,意为 Talker(说话的人)。.tk域名是南太平洋岛国托克劳的顶级域名, .ml 是非洲国家马里的后缀, .ga 域名为加蓬国家顶级域名后缀, .cf 是中非共和国的后缀, .gq域名是赤道几内亚国家地区顶级域名。

申请freenom免费域名

访问 freenom 官方网站然后直接在搜索框里面输入你想申请的域名类型,比如:freedo.ga,不是所有上面介绍的几个类型的域名后缀都是免费的,系统会自动检查域名是否免费,比如:

上面显示申请 freedo.ga 这个域名是免费的,那么你就可以直接选择完成进入下一步。进入下一步后,在域名选项的最右侧有个 period 选项,你可以在它的列表里选择你想申请免费的时间,比如,我想免费申请一年,那么我选择 12 months free 这个选项:

你也可以在这一步直接设置域名解析,把你的域名直接指向你的 ip,也可以跳过,在后面进行解析。 如:

freenom域名解析

首先登录自己的账号,然后选择Services->My Domains,如下截图:

选择最右侧的Manage Domains(域名管理选项),点击该选项,就可以进入域名管理界面:

Management Tools选项下选择namesservers,系统默认使用的是freenom自己默认的dns服务器。你可以设定其他的dns服务器。这里我使用默认的dns服务器,先不做修改。然后点击右侧的Manage Freenom DNS选项,给自己的域名绑定ip 比如:

在 target 选项输入你域名要绑定的 ip ,在 Name 选项输入 www 或其它子域名,type 你可以根据需要进行选择。当保存成功后,你就可以直接输入域名访问你的站点了。 由于 freenom 的 dns 解析对国内可能会比较不友好,你可以修改域名默认的 dns 解析服务,把 dns解析服务修改为国内的 dns 服务,比如 CloudXNS 或者 DNSPod 。

一键部署v2ray脚本

当封锁特别厉害的时候,常规的v2ray配置可能已经无法满足需求,这个时候我们可以搭建VLESS+TCP+TLS/VLESS+TCP+XTLS/VLESS+WS+TLS/VMess+TCP+TLS/VMess+WS+TLS,搭建脚本需要购买域名。(免费域名)
(VLESS+TCP+TLS/VLESS+TCP+XTLS/VLESS+WS+TLS/VMess+TCP+TLS/VMess+WS+TLS/Trojan/Trojan-Go WS)+伪装站点、七合一共存脚本,支持多内核安装,支持系统Debian 8+ / Ubuntu 16.04+ / Centos7

脚本安装命令:

1
wget -N --no-check-certificate "https://raw.githubusercontent.com/mack-a/v2ray-agent/master/install.sh" && chmod 700 install.sh && ./install.sh

脚本执行结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
==============================================================
作者:mack-a
当前版本:v2.5.12
Github:https://github.com/mack-a/v2ray-agent
描述:八合一共存脚本
==============================================================
1.安装
2.任意组合安装
-------------------------工具管理-----------------------------
3.账号管理
4.更换伪装站
5.更新证书
6.更换CDN节点
7.IPv6分流
8.WARP分流
9.流媒体工具
10.添加新端口
-------------------------版本管理-----------------------------
11.core管理
12.更新脚本
13.安装BBR、DD脚本
-------------------------脚本管理-----------------------------
14.查看日志
15.卸载脚本
==============================================================
请选择:1

功能 1/1 : 选择核心安装

==============================================================
1.Xray-core
2.v2ray-core
==============================================================
请选择:2
安装工具

进度 2/17 : 安装工具
---> 检查、安装更新【新机器会很慢,如长时间无反应,请手动停止后重新执行】
---> 安装socat
---> 安装crontabs
---> 安装jq
---> 安装binutils
---> 安装qrencode
---> 安装lsb-release
---> 安装nginx
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
---> 安装semanage
---> 安装acme.sh

进度 3/17 : 初始化Nginx申请证书配置

请输入要配置的域名 例:www.v2ray-agent.com --->
域名:www.xxxx.tk

---> 配置Nginx

检查IP是否设置为当前VPS
---> 检查ipv4中

当前域名的IP为 [209.xx.xx.xx],是否正确[y/n]?y

---> IP确认完成

检查Nginx是否正常访问

---> Nginx配置成功

进度 4/17 : 申请TLS证书

---> 安装TLS证书
---> TLS生成成功

进度 5/17 : 配置Nginx

进度 6/17 : 生成随机路径
请输入自定义路径[例: alone],不需要斜杠,[回车]随机路径
路径:
path:bqri

----------------------------

进度 7/17 : 安装V2Ray
---> v2ray-core版本:v4.41.0

进度 8/17 : 配置V2Ray开机自启
Created symlink from /etc/systemd/system/multi-user.target.wants/v2ray.service to /etc/systemd/system/v2ray.service.
---> 配置V2Ray开机自启成功

进度 11/17 : 添加DNS智能解析

如对Cloudflare自选ip不了解,请选择[n]

移动:104.16.123.96
联通:hostmonit.com
电信:www.digitalocean.com
----------------------------
是否使用?[y/n]:n

进度 12/17 : 初始化V2Ray配置

是否自定义UUID ?[y/n]:n


进度 14/17 : 添加定时维护证书

---> 添加定时维护证书成功

进度 15/17 : 添加伪装站点
---> 添加伪装站点成功
---> V2Ray关闭成功
---> V2Ray启动成功

进度 16/17 : 验证服务启动状态
---> 服务启动成功

进度 17/17 : 账号

一键加速VPS服务器(五合一的TCP网络加速脚本)

五合一的TCP网络加速脚本,包括了BBR原版、BBR魔改版、暴力BBR魔改版、BBR plus(首选)、Lotsever(锐速)安装脚本。可用于KVMXen架构,不兼容OpenVZ(OVZ)。支持Centos 6+ / Debian 7+ / Ubuntu 14+,BBR魔改版不支持Debian 8。

1
2
3
4
5
wget -N --no-check-certificate "https://raw.githubusercontent.com/chiakge/Linux-NetSpeed/master/tcp.sh"

chmod +x tcp.sh

./tcp.sh

如果提示 wget: command not found 的错误,这是你的系统精简的太干净了,wget都没有安装,所以需要安装wget。
CentOS系统安装wget命令: yum install -y wget
Debian/Ubuntu系统安装wget命令:apt-get install -y wget

安装完成后,脚本管理命令为:./tcp.sh

操作方法:先安装内核,重启vps让内核生效,再启动对应的加速即可。数字1的BBR/BBR魔改内核对应数字4、5、6的BBR加速、BBR魔改加速和暴力BBR魔改版加速。数字2的BBRplus内核对应数字7的BBRplus加速。数字3的锐速加速内核对应数字8的锐速加速。

以安装暴力BBR魔改版加速为例,我们先安装对应的内核,输入数字1,内核安装完成后,输入y进行重启,重启才能让内核生效:

重启完成后,输入数字6来启动暴力BBR魔改版加速

输入./tcp.sh查看最终是否启动成功。


如果想换一个加速,输入数字9进行卸载加速,然后进行同样的操作,安装内核再安装对应内核的加速即可。
注意:如果在安装内核环节出现这样一张图,注意选择NO

修改服务器时区

a.一般国外的VPS的镜像都是默认的国外时区,使用起来不是很方便。可以把它修改成北京时间,就会方便很多。 修改中国时区代码如下:

1
\cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

b.利用NTP同步时间协议

CentOS系统先安装NTP:yum install ntp ntpdate -y

如果是Ubuntu/Debian系统执行下面2条命令来安装NTP

1
2
apt-get update
apt-get install ntp ntpdate -y

安装NTP后,按照顺序依次执行以下3条命令,分别是停止NTP服务、同步NTP时间、启动NTP服务:

1
2
3
4
5
service ntpd stop

ntpdate us.pool.ntp.org

service ntpd start

执行完成后,VPS上就是相对精确的时间设置了。很多依赖于系统时间的应用程序也就能正常工作了。注意:当vps重启后输入date来检查下时间,如果时间不是最新的,再执行以上3条命令即可。

服务器查看回程

  • 先查明自己本地IP,使用命令行:

    1
    2
    ➜  ~ curl -s http://myip.ipip.net
    当前 IP:27.115.6.196 来自于:中国 上海 上海 联通
  • 远程登录VPS,下载查看回程的脚本

    1
    2
    3
    4
    # wget https://cdn.ipip.net/17mon/besttrace4linux.zip
    # unzip besttrace*
    # chmod +x besttrace
    # ./besttrace 27.115.6.196

客户端查看去程

  • MAC电脑去AppStore下载“BestTrace”软件
  • 输入VPS的IP地址,回车即可在地图上展示网络去程路线

注意

  • 免费ssl证书只能使用3个月,到期后需要手动更换证书

V2rayU彻底卸载方法

1
2
3
4
5
6
7
8
9
cd ~/Library/LaunchAgents/
/bin/launchctl remove yanue.v2rayu.v2ray-core
/bin/launchctl remove yanue.v2rayu.http

rm -f ~/Library/LaunchAgents/yanue.v2rayu.v2ray-core.plist
rm -f ~/Library/Preferences/net.yanue.V2rayU.plist
rm -f ~/Library/Logs/V2rayU.log

rm -fr ~/.V2rayU/

SSH免密登录

SSH免密登录主要是将本地电脑的~/.ssh/id_rsa.pub加入到远端服务器的~/.ssh/authorized_keys中即可实现本地电脑SSH免密登录服务器

1
cat ~/.ssh/id_rsa.pub | ssh remote_username@server_ip_address "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

参考链接

VPS官网
免费域名
免费域名解析
自建V2Ray教程
V2Ray客户端下载地址
低价域名
查看本地IP地址
搬瓦工教程:使用BestTrace查看VPS的去程和回程
彻底卸载V2rayU

security相关命令

证书导入命令

1
2
3
$ security import /Users/kris/Desktop/test/distribution.p12 -k ~/Library/Keychains/login.keychain -P 证书安装密码 -T /usr/bin/codesign -T /usr/bin/security

$ security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k 电脑密码 ~/Library/Keychains/login.keychain

使用上述两条命令导入证书后,可以避免打包的时候弹出系统的鉴权弹框,在一些完全命令行自动化的场景下,这些鉴权的输入框无法展示,所以建议使用以上两条命令来导入证书。

删除证书命令

1
$ security delete-identity -c "iPhone Distribution: XXXXX Management Co., Ltd."

解锁钥匙串

1
$ security unlock-keychain -p 电脑密码 ~/Library/Keychains/login.keychain

查看默认钥匙串

1
$ security default-keychain

列出机器上所有的钥匙串

1
$ security list-keychains

查看security命令手册

1
$ man security

查看security delete-identity命令用法

1
$ security delete-identity help

附上man命令的快捷操作

按键 实现功能
空格键 向下翻一页
Pg Dn 向下翻一页
Pg Up 向上翻一页
Home 去到第一页
End 去到最后一页
/string 向下搜索string这个字符串
?string 向上搜索string这个字符串
q 结束这次的手册页

Jenkins执行Shell脚本,控制台出现中文乱码怎么办?

使用Jenkins执行Shell脚本,默认的情况下,Jenkins的控制台展示的中文会出现部分乱码,如下图所示:

解决办法:

  • 1.在系统管理->系统配置->全局属性添加一个键值对,键的名称LANG,值的名称zh.CH.UTF-8,然后划到网页的底部保存并应用。
  • 2.并且在Shell脚本的最开始添加#!/bin/bash来指定使用系统的Shell命令来执行。
    截图1: 截图2: 解决完乱码之后的截图:

Jenkins提示invalid byte sequence in US-ASCII怎么办?

使用Jenkins执行Shell脚本的时候,出现了这个提示,截图如下:

解决办法:
系统管理->系统配置->全局属性添加一个键值对,键的名称LC_ALL,值的名称en_US.UTF-8,然后划到网页的底部保存并应用。

解决完乱码之后的截图:

如果Jenkins控制台提示无权限访问文件或路径怎么办?

解决办法:
需要找到Jenkins的配置文件,我的Jenkins是使用Homebrew安装的,配置文件路径是/Library/LaunchDaemons/org.jenkins-ci.plist
找到这个文件之后,修改GroupNameUserName,让这两个值和电脑登录的组名和用户名保持一致。

参考链接

Jenkins执行脚本提示没有权限的解决办法
Jenkins上,xcpretty编译报错:invalid byte sequence in US-ASCII

什么问题?

最近打开Cydia就闪退,我就重新去下载了uncOver,打算重新越狱一下,但是在重签名的时候一直失败,提示”No codesigning certificates found”的错误。

什么原因导致?

由于我之前使用iOS App Signer这个MAC软件一直没有问题,今天遇到这个问题,我就想去github把源码克隆到本地,然后调试一下,看看具体是什么原因导致。
打开源码直接搜索No codesigning发现,这个错误是一个Alert弹框,和我们遇到的弹框信息一致。

最终调试发现,在程序调用/usr/bin/security find-identity -v -p codesigning命令时由于返回值为空,才触发错误弹框。

我把命令拷贝到终端执行,发现返回有效的identity的数量是0:

1
2
$ /usr/bin/security find-identity -v -p codesigning
0 valid identities found

此处的命令的意思是:

1
2
3
4
5
6
7
8
9
10
11
12
/usr/bin/security:
A simple command line interface which lets you administer keychains,
manipulate keys and certificates, and do just about anything the
Security framework is capable of from the command line.
(是一个管理钥匙串、keys和证书的命令行接口)

find-identify:
查找证书和私钥key的命令

-v: 只显示有效的证书,默认显示所有的证书

-p: 指定策略

具体的命令行的文档查看一下:

1
2
3
4
5
6
7
8
9
10
11
$ /usr/bin/security find-identity --help
find-identity: illegal option -- -
Usage: find-identity [-p policy] [-s string] [-v] [keychain...]
-p Specify policy to evaluate (multiple -p options are allowed)
Supported policies: basic, ssl-client, ssl-server, smime, eap,
ipsec, ichat, codesigning, sys-default, sys-kerberos-kdc, macappstore, appleID
-s Specify optional policy-specific string (e.g. DNS hostname for SSL,
or RFC822 email address for S/MIME)
-v Show valid identities only (default is to show all identities)
If no keychains are specified to search, the default search list is used.
Find an identity (certificate + private key).

怎么解决?

由于使用/usr/bin/security find-identity -v -p codesigning命令无法查询本地有效的重签名证书,我首先想到的就是更换查询策略,根据命令行文档可以看出,策略有很多种,包括basic, ssl-client ssl-server, smime, eap,ipsec, ichat, codesigning, sys-default, sys-kerberos-kdc, macappstore, appleID。经过尝试,发现策略改成appleID的时候是可以查询到有效证书的。但是这两个命令是有区别的。具体的区别如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
poet@poetdeMacBook-Pro ~ % /usr/bin/security find-identity -v -p codesigning
1) C766972EC48052D14E3A2D715F03960E10B4XXXX "Apple Development: Zhang San (MGRQJNV411)"
2) 8EA5E415105CEE96F75EAFA443B6AC992FC9CCCC "Apple Development: Li Si (SB6BFS5U22)"
3) AEF5450BA48F61EE1B5A718B7563D855E306DDDD "iPhone Developer: Zhang San (MGRQJNV433)"
3 valid identities found
poet@poetdeMacBook-Pro ~ % /usr/bin/security find-identity -v -p appleID
1.2.840.113635.78.1.30
1) F87912EA9F939D6F044F1B86A165C5D8AC8CAAAA "com.apple.idms.appleid.prd.5675685073322f516b6a565a55775471374c72424b671234" (CSSMERR_TP_CERT_EXPIRED)
2) 8751799A43C85FEF3914DE664E2A05251F40BBBB "Mac Developer: Lao Wang (H2C8DTYK00)" (CSSMERR_TP_CERT_EXPIRED)
3) C766972EC48052D14E3A2D715F03960E10B4CCCC "Apple Development: Zhang San (MGRQJNV411)" (Missing required extension)
4) 8EA5E415105CEE96F75EAFA443B6AC992FC9DDDD "Apple Development: Li Si (SB6BFS5U22)" (Missing required extension)
5) AEF5450BA48F61EE1B5A718B7563D855E306EEEE "iPhone Developer: Zhang San (MGRQJNV433)" (Missing required extension)
5 valid identities found

经过上面的对比,发现策略是codesigning的时候查询出来的是所有有效的重签名的证书,不包含其他的证书(比如:苹果的idms官方证书、MAC电脑的证书等),但是策略是appleID的时候查询出来的证书一定包含策略codesigning查询出来的证书。所以,当使用策略codesigning无法查询出证书情况的时候,可以考虑把策略换成appleID来查询。所以解决办法就是将codesigning策略换成appleID的策略。

提交Pull Request

解决这个问题之后,我去github仓库的issue里面看,发现很多人也有类似的问题,我就自己尝试提交了一个Pull Request到作者的仓库,虽然作者很久没有更新了,但是如果后续还有人碰到此问题可以通过类似的办法解决。如何提交Pull Request,我是参考github上的一个帖子,具体步骤如下:

如何在别人的开源项目中提交自己的Pull Request ?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1.先在本地创建一个空文件夹,里面准备放克隆过来的代码. --> 我在本地Downloads文件夹下创建了一个名为 gitMessagekit 的文件夹.
2.在"终端"中通过cd命令进入到gitMessagekit文件夹下(将"自己电脑的用户名"换成你自己的电脑的用户名). --> cd /Users/自己电脑的用户名/3.Downloads/gitMessagekit
3.在"终端"输入克隆命令 git clone 开源项目源代码的url. --> git clone https://github.com/MessageKit/MessageKit.git
4.进入到克隆所在的文件夹. --> cd /Users/自己电脑的用户名/Downloads/gitMessagekit/MessageKit
5.用查看命令查看一下开源项目都有多少个分支. --> git branch -a
6.找到自己要切换的分支,准备切换分支,在这里我要切换到3.0.0-beta分支. --> git checkout remotes/origin/3.0.0-beta
7.基于远程分支新建本地分支(3.0.0-beta),2条命令. --> git branch 3.0.0-beta git checkout 3.0.0-beta
8.打开/Users/自己电脑的用户名/Downloads/gitMessagekit/MessageKit该路径下的代码,对代码进行修改.
9.添加修改. --> git add 你修改的文件
10.提交修改. --> git commit -m "fix 某某问题"
11.去自己的git仓库,准备fork一下开源项目MessageKit到自己的仓库(repository)中.
12.即将关联自己fork过的项目. --> git remote add upstream git@github.com:xxjldh/MessageKit.git
13.推送本地的分支(3.0.0-beta)到自己fork过的仓库中,2条命令. --> git fetch origin git merge origin/3.0.0-beta
14.在即将提交时出现这样一个错误,git@github.com: Permission denied (publickey).解决办法(https://www.jianshu.com/p/f22d02c7d943)
15.最后push自己的分支到自己fork过的仓库中. --> git push upstream 3.0.0-beta
16.在开源项目https://github.com/MessageKit/MessageKit.git的pull request中添加自己刚修改过的文件, 点"comment pull request"即可.

下载链接

下载App重签名工具

参考链接

Mac Security工具使用总结
security命令
如何给开源项目贡献代码

准备工作

  • 1.一台iPhone6 Plus设备,系统版本:iOS 12.4.8。
  • 2.一台MAC电脑,并且已经安装Xcode或者iTools。

越狱步骤

第一步,下载uncOver最新版本ipa文件,前往官网下载。uncOver是一个越狱工具,首先在手机上安装这个App,然后打开App,进行越狱。

第二步,下载App重签名工具,前往Github下载

第三步,根据uncOver官网提示,对第一步下载的ipa文件进行重签名,目的是重签名过后可以直接安装到我们自己的手机里。

第四步,将重签名过后的ipa文件安装到手机上,官网建议通过Xcode安装,我使用电脑上的iTools Pro安装,最终安装完成截图如下。

第五步,打开uncOver App,点击Jailbreak按钮,开始越狱。在越狱过程中,可能会提示越狱失败,请重新打开App再次尝试越狱。如果一直重启手机无法继续越狱,请尝试在飞行模式下点击Jailbreak按钮。如果中途弹框提示购买手机壳,请不要理会,越狱程序会一直在操作,不会因为你不购买手机壳就停止越狱哦。如果一直越狱失败,请多多尝试几次。

第六步,越狱完成,会弹出重启手机的Alert。在越狱过程中也可能会多次重启手机。最终破解完成后,手机桌面会出现CydiaApp。再次打开uncOver App,原本显示Jailbreak的按钮现在显示Re-Jailbreak

参考链接

unc0ver官网
iOS App Signer官网
越獄教學
unc0ver闪退解决方法

问题产生

元旦放假期间升级了一下macOS系统,升级到最新的macOS Big Sur 版本11.1之后发现在终端敲hexo clean报错,具体的错误信息如下:

1
2
poet@poetdeMacBook-Pro ~ % hexo clean
zsh: command not found: hexo

网上搜索一下,发现大家也有类似问题,但是具体的情况和我还不太一样。我的电脑上安装了nvm,升级之后发现我电脑上node默认升级到了v11.15.0

1
2
poet@poetdeMacBook-Pro ~ % node -v
v11.15.0

原因分析

而每一个node版本都会维护一套自己的bin目录,我发现我自己的电脑上安装了3个不同的node版本,只有v8.11.1这个版本的bin目录下才有hexo的可执行文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
poet@poetdeMacBook-Pro ~ % cd /Users/poet/.nvm/versions/node/
poet@poetdeMacBook-Pro node % ls
v11.15.0 v7.10.0 v8.11.1

# 在v8.11.1目录下面的bin目录查看到 hexo
poet@poetdeMacBook-Pro node % cd v8.11.1
poet@poetdeMacBook-Pro v8.11.1 % ls
CHANGELOG.md README.md etc lib
LICENSE bin include share
poet@poetdeMacBook-Pro v8.11.1 % cd bin
poet@poetdeMacBook-Pro bin % ls
express hexo n node npm npx nrm

# 在v7.10.0目录下面的bin目录下没有查看到hexo相关的文件
poet@poetdeMacBook-Pro node % cd v7.10.0
poet@poetdeMacBook-Pro v7.10.0 % ls
CHANGELOG.md README.md etc lib
LICENSE bin include share
poet@poetdeMacBook-Pro v7.10.0 % cd bin
poet@poetdeMacBook-Pro bin % ls
node npm

# 在v11.15.0目录下面的bin目录下没有查看到hexo相关的文件
poet@poetdeMacBook-Pro node % cd v11.15.0
poet@poetdeMacBook-Pro v11.15.0 % ls
bin include lib share
poet@poetdeMacBook-Pro v11.15.0 % cd bin
poet@poetdeMacBook-Pro bin % ls
node npm npx

解决办法

最终我的解决办法是,将v8.11.1/bin/hexo文件连接到/usr/local/bin目录下,在终端输入hexo clean命令时,系统会去/usr/local/bin目录中查找对应的可执行文件,找到hexo后,会连接到v8.11.1/bin/hexo目录下调用hexo可执行文件,最终执行命令。

1
poet@poetdeMacBook-Pro % ln -s /Users/poet/.nvm/versions/node/v8.11.1/bin/hexo /usr/local/bin/

执行完成之后,验证一下最终的命令是否有效果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
poet@poetdeMacBook-Pro ~ % hexo
Usage: hexo <command>

Commands:
help Get help on a command.
init Create a new Hexo folder.
version Display version information.

Global Options:
--config Specify config file instead of using _config.yml
--cwd Specify the CWD
--debug Display all verbose messages in the terminal
--draft Display draft posts
--safe Disable all plugins and scripts
--silent Hide output on console

For more help, you can use 'hexo help [command]' for the detailed information
or you can check the docs: http://hexo.io/docs/

ln -s 源文件 目标文件 这个语法是给源文件建立一个软连接,软连接是一个特殊的文件,它包含源文件的具体位置。类似于Windows系统的快捷方式。

参考链接

Hexo:command not found的问题解决
linux 创建连接命令 ln -s 软链接