Skip to content

Commit 8bbcc0e

Browse files
committed
重新上传文章
1 parent e4f4817 commit 8bbcc0e

File tree

34 files changed

+1212
-376
lines changed

34 files changed

+1212
-376
lines changed
1.83 MB
Loading
Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
---
2+
title: Gitlab Devops
3+
published: 2019-11-19
4+
category: 技术人生
5+
tags: ["Devops"]
6+
image: gitlab.jpg
7+
---
8+
9+
## 概念
10+
11+
在这一篇文章中我主要把工作中碰到的 devops 的问题记录下来,公司现有采用的是用 git 来管理代码,所以顺理成章的使用了 gitlab 来做公司的仓库管理。所以对于放代码的流程,我这里使用了 gitlab 自带的 ci cd 工具来做,但是大体上使用任何其他工具都是差不多的,思维上都是相通的。
12+
13+
### 什么是 ci cd?
14+
15+
对于这个话题,网上有很多的讨论,这里我仅仅是根据我工作中碰到的问题做一个简单的总结。
16+
Ci 全称是持续集成,因为每个项目可能是由很多的小的模块组成的,而我们做的开发任务是把大的任务给分解掉来做小的任务开发。对于这一个理念在 git_flow 上面具体的体现就是使用分支来管理,每一次有一个新的需求过来的时候,我们都会从 dev 分支上面来开一个新的特性分支。当新的特性分支我们做好之后就会对这个分支进行测试,就需要把分支上的改动和现有系统集成起来,这个操作就可以交给自动化集成来做了。
17+
18+
至于 cd 的话全称是 持续交付,简单理解就是我们做的东西需要放在服务器上或者是交付给用户使用,这个过程往往涉及到编译打包部署这些过程,这些重复性的工作就可以交给 cd 来做。
19+
20+
### gitlab 的 ci cd
21+
22+
Gitlab 提供了 ci 和 cd 的服务。具体的步骤可以大概分为以下几个步骤。
23+
24+
1. 服务器中注册 runner
25+
2. Runner 中添加指定项目,每个项目都有个 token
26+
3. 在工程目录下建立.gitlab.yml 文件,按照语法编写自动化流程
27+
4. 推送这个文件,runner 会自动读取这个文件,执行自动化。
28+
5. 每一次推送代码都会触发自动化流程。
29+
30+
#### 基本的 ci cd 流程
31+
32+
![gitlab 定义的自动化流程](https://tva1.sinaimg.cn/large/006y8mN6ly1g9dux2owfjj31i60u0dhg.jpg)
33+
34+
1. 本地开发建立新的功能分支
35+
2. 推送代码变更
36+
3. 自动构建和测试
37+
4. 修复问题推送代码
38+
5. 自动构建和自动测试
39+
6. 部署测试环境
40+
7. review 和 提交 mr
41+
8. 同意合并
42+
9. 自动构建,测试, 部署到生产环境
43+
44+
#### 深层次的 ci cd 流程
45+
46+
![深层次的流程](https://tva1.sinaimg.cn/large/006y8mN6ly1g9duxsr9j5j31b00tojt8.jpg)
47+
48+
### Caching
49+
50+
缓存,在做 gitlab 中有几个概念提前了解一下,对于后面编写自动化流程上还是很有好处的。
51+
52+
#### cache
53+
54+
在自动化集成过程中,每次都要重新安装第三方库依赖,可以通过使用 cache 将安装的依赖库文件缓存起来,避免了每次下载。
55+
56+
#### artifacts
57+
58+
Artifacts 也是一种 cache,不同的是它是构建之后的产物的缓存,不是依赖的。比如我们每次要将前端工程打包之后产生 dist 文件。可以将 dist 文件缓存起来,方便之后去还原。设置了 artifacts 之后 web gui 里就会显示下载 artifacts 的选项。
59+
60+
### stage vs job vs pipelines
61+
62+
总的来说 pipelines 就是流水线的意思,每个流水线中都是按照 stage 的顺序来执行的,stage 中可以定义多个 job,每个 job 之间都是并行的,而 stage 之间是串行的。只有当前的 stage 执行完毕才会执行下一个 stage。
63+
64+
下面是一个最基础的 yaml 文件模版。
65+
66+
```yaml
67+
image: node:<版本号>
68+
69+
services:
70+
- mongo:<版本>
71+
- redis:<版本号>
72+
73+
cache:
74+
key: <KEY>
75+
paths:
76+
- <需要缓存的路径>
77+
- node_modules
78+
79+
before_script:
80+
- <执行job之前的命令>
81+
82+
after_script:
83+
- <build完之后运行的命令>
84+
85+
stages:
86+
- test
87+
- build
88+
- deploy
89+
90+
<job_name>:
91+
script:
92+
- <job执行的指令或脚本>
93+
tags:
94+
- ssr
95+
only:
96+
- <只应用在某个分支>
97+
except:
98+
- <不应用到某个分支>
99+
variables:
100+
101+
```
102+
103+
上面例子中还有几个东西值得说下:
104+
105+
- tag 指的是你在 gitlabrunner 上面所注册的 tag 名,也就是这个自动化是使用那台机器去执行。
106+
- before_script 指的是在每个 job 执行前所执行的命令
107+
- after_script 指的是每个 job 执行后所执行的命令
108+
109+
## 完整的流程
110+
111+
![完整的流程](https://tva1.sinaimg.cn/large/006y8mN6ly1g9dy6oiatsj30pv0493ye.jpg)
112+
上图算是一个完整的流程了,包含 build,测试,预生产,生产。
113+
按照现在项目的复杂程度只是用到了上述将的,还有些东西会在后面继续补充。
114+
115+
说到最后,最好自己能动手操作一下,真正部署一遍,这样更好能理解到每个配置的作用。
116+
117+
# 引用
118+
119+
[gitlab 文档](https://docs.gitlab.com/runner/)
1.15 MB
Loading
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
---
2+
title: Macbook 外接显示器开启HiDPI
3+
published: 2018-11-08
4+
category: Apple
5+
tags: ["Apple"]
6+
image: MacBook.jpg
7+
draft: false
8+
---
9+
10+
## 历史
11+
12+
2010 年乔老爷子发布 iPhone4 的时候带来一个新的名词."Retina 屏".
13+
中文名称为视网膜屏.自此以后苹果产品线的多数产品都使用了这项显示技术. 很多人从浅意识上认为分辨率越高,显示的越清晰,很多手机厂商将手机屏幕分辨率做到了 2k,4k,观感上还没有苹果 1k 的显示清楚,准确来说 Retina 是一种显示技术,它让更多的像素点压缩到一块显示屏幕,从而达到更细腻的效果.
14+
15+
苹果今年的新品 iPhone Xr 的分辨率只有 720p 但是通过看真机其实没有网上云测评那么糟糕,得益于苹果的 Retina 技术,iPhone Xr 上面的显示效果令人满意.
16+
17+
## HiDPI
18+
19+
那么 HiDPI 是什么呢?
20+
21+
HiDPI 本质上是用软件的方式实现单位面积内的高密度像素。很多用过高分屏的朋友可能清楚越高分辨率的显示器显示的文字和图标越小,其实不然,可以通过 HiDPI 的方式在保证分辨率不变的情况下,使得字体和图标变大.达到平滑细腻的视网膜屏的显示效果.
22+
![](https://ws4.sinaimg.cn/large/006tNbRwly1fx1159w6gij31kw1a8b2a.jpg)
23+
24+
## 外接显示器开启 HiDPI
25+
26+
打开系统自带终端,按照以下步骤操作.
27+
28+
### 开启 HiDPI
29+
30+
```
31+
sudo defaults write /Library/Preferences/com.apple.windowserver.plist DisplayResolutionEnabled -bool true
32+
```
33+
34+
回车后,输入当前管理员密码.
35+
36+
### 获取 ID
37+
38+
分别输入以下两个命令
39+
40+
```
41+
ioreg -l | grep "DisplayVendorID"
42+
ioreg -l | grep "DisplayProductID"
43+
44+
```
45+
46+
这两个命令会输出两个 10 进制的数字,一个是 DisplayVendorID,一个是 D isplayProductID.拿一个记事本记录下来.
47+
![](https://ws1.sinaimg.cn/large/006tNbRwly1fx11cg8ywqj311w0vcaj7.jpg)
48+
如果说你和我一样现在是两个显示器的话,那么记住第二个,第一个为 MacBook Pro 的内置显示器.对应的截图中的内容为 **4724** **9984** .
49+
50+
### 将得到的 ID 从 10 进制转为 16 进制
51+
52+
![](https://ws1.sinaimg.cn/large/006tNbRwly1fx11k4yftwj317o0hk0ut.jpg)
53+
![](https://ws2.sinaimg.cn/large/006tNbRwly1fx11gxy9k5j315k0hsgno.jpg)
54+
55+
如图所示笔者的两个 id 转为 16 进制得到的是 aa4,2700.
56+
转换工具,大家可以自行搜索.
57+
58+
### 建立文件夹
59+
60+
在任意地方建立一个文件夹,文件夹命名格式:DisplayVendorID-XXXX,其中 XXXX 即为你的 DisplayVendorID 的 16 进制值小写。对应的笔者的文件夹名为: **DisplayVendorID-1274**.
61+
62+
文件夹建好以后,在文件夹里面新建一个名称为:DisplayProductID-YYYY 的空文件**(没有扩展名)**。YYYY 即为你的 DisplayProductID 的 16 进制值小写。对应的笔者的文件名为: **DisplayProductID-2700**.
63+
64+
### 生成文件内容
65+
66+
[在线生成文件配置](https://comsysto.github.io/Display-Override-PropertyList-File-Parser-and-Generator-with-HiDPI-Support-For-Scaled-Resolutions/)
67+
![](https://ws2.sinaimg.cn/large/006tNbRwly1fx11ylyzokj315y132q86.jpg)
68+
69+
如图,将上述步骤得到的 ProductID 还有 VendorID 的十六进制填入到网页中,将需要开启的 HiDPI 的分辨率填入其中(最好和你外接显示器的分辨一致或者缩放大小)
70+
71+
将配置好的内容从网页上粘贴到上一步骤建立的空文件中即可.
72+
![](https://ws4.sinaimg.cn/large/006tNbRwly1fx11xbcg75j30um12aq9z.jpg)
73+
74+
### 移动文件夹
75+
76+
将 DisplayVendorID 的文件夹拷贝到/System/Library/Displays/Contents/Resources/Overrides/
77+
(注:Mac OS 10.10 及以下是 /System/Library/Displays/Overrides/ )中
78+
![](https://ws1.sinaimg.cn/large/006tNbRwly1fx11v7t3hoj311w0vcn5y.jpg)
79+
可使用图片中的命令快速打开文件夹.
80+
81+
### 下载 RDM 切换分辨率
82+
83+
[RDM](http://avi.alkalay.net/software/RDM/)是一个用来切换分辨率的软件.
84+
85+
### 重启,切换分辨率
86+
87+
用 RDM 来切换分辨率
88+
![](https://ws2.sinaimg.cn/large/006tNbRwly1fx11teqrayj30iu0makcd.jpg)
89+
注意:带 ⚡️ 标志的才是开启了 HiDPI
90+
91+
### Enjoy yourself

src/content/posts/draft.md

Lines changed: 0 additions & 22 deletions
This file was deleted.

src/content/posts/first.md

Lines changed: 0 additions & 16 deletions
This file was deleted.

src/content/posts/guide/cover.jpeg

-218 KB
Binary file not shown.

src/content/posts/guide/index.md

Lines changed: 0 additions & 51 deletions
This file was deleted.
378 KB
Loading
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
title: Hello World
3+
published: 2018-10-30
4+
category: 生活随想
5+
tags: ["生活随想"]
6+
image: hello-world.jpg
7+
---
8+
9+
按照程序员惯例,所以这第一篇文章就叫做 hello world! 欢迎大家来访问我的个人小窝.

0 commit comments

Comments
 (0)