这篇文章是写给我们自己的,用于配置 ga 代理的设置教程。
这里的 ga 指代 google analytics, 统计服务。
大家知道 google gtm container 在配置好了以后,需要在网站中安装该服务的脚本。
<!-- Google Tag Manager -->
其脚本源地址形如
'https://www.googletagmanager.com/gtm.js?id='+i+dl;
而我们建立了自己的域名到 googletagmanager 的映射。因此域名替换为
'https://ga.stats.ijklh.com/t/gtm.js?id='+i+dl;
替换后,解决了 gtm 跟踪脚本有时会被屏蔽的问题。
恐 gtm 和 ga 的脚本不能在某些地区被正常访问,且存在被某些广告或防追踪插件屏蔽的可能。
事件名在 ga 中由 gtm 的 Tag 来定义。
自定义事件,类型是 Custom Event。
gtm 的 trigger 定义了前端代码中的事件 l
...在 JavaScript 中使用 RegExp 构造函数时,需要注意正确转义字符。特别是对像点 . 这样的特殊字符,必须使用双重反斜杠进行转义。这是因为在字符串中,反斜杠本身是一个特殊字符,因此需要双重反斜杠来表示正则表达式中的单个反斜杠。
这是因为在字符串中,单个反斜杠被用作转义字符,所以在构造正则表达式的字符串中,你需要两个反斜杠来表示正则表达式中的一个反斜杠。
以下是一些示例代码,展示如何在 RegExp 构造函数中正确转义点字符 .:
// 字面量方式
const regexLiteral = /\./;
console.log(regexLiteral.test("a.b")); // true
console.log(regexLiteral.test("abc")); // false
// RegExp 构造函数方式
const regexConstructor = new RegExp("\\."); // 注意这里需要双反斜杠
console.log(regexCons
...随着容器化技术的普及,越来越多的服务使用了 docker 来部署,更新的过程往往直接在生产环境服务器上执行 docker build 指令,而这又会带来影响生产环境性能的问题,如何简化这个过程称为课题。本文试着探讨如何利用 gitlab CI 和两台服务器,并结合镜像仓库来自动化构建和部署 docker 镜像,对两个过程一探究竟。
1. 为什么有两台服务器?
部署服务器用于生产环境,需要保持稳定。而构建镜像涉及到 build 阶段,需要消耗服务器的内存和 CPU 资源,这会降低服务器的性能,所以不能直接在生产环境的服务器上执行。而需要一台专门用于构建的构建服务器,这样即便构建过程特别消耗服务器资源,也不会把生产环境的服务器搞挂。
2. 为什么不直接用 runner 指定镜像构建,而需要用 ssh 指令在另外的构建服务器中构建,增加一台构建服务器不是需要更多的资源吗?
目前 runner 的运行内容是通过在 gitlabci 中指定运行的 docker 镜像,如果在该镜像的运行的容器中构建 docker 镜像,则需要用到 docker 客户端和服务端,这种在容器中使用 do
...可以通过 sips 软件命令。
sips 是可以脚本化的图像处理系统。
sips – scriptable image processing system.
假设 iPhone 拍摄的图片的名称为 test.JPG
,则可以利用下面的命令将该图片限定采样宽度 800px。
sips --setProperty formatOptions 80 --resampleWidth 800 test.JPG
formatOptions 表示格式化选项即图像质量,参数为字符串,可选范围为 [low|normal|high|best|<percent>]
。
formatOptions string default | [low|normal|high|best|<percent>] | [lzw|packbits]
通过 man sips
就可以查看该脚本软件的说明手册了。
当然,macOS 无法直接压缩 iPhone 内的内容,需要将手机相册中的内容通过隔空投送或者 iCloud 同步下载到电脑中。确保脚本运行时,根据路径找得到 test.JPG。
...CI 脚本刚开始会拉取运行脚本所需的 docker 镜像,但是连接的是官方的 registry.docker.io 等类型的远程仓库,连接不上。一般会说报错到哪哪的连接拨号超时。
如果 gitlab runner 是采用 docker 挂载宿主机的 docker sock 的话,那么就说明不是采用 docker in docker 的方式使用 runner。这个时候如果宿主机中的配置文件使用不到,那么 runner 容器中的 docker 也是用不到宿主机中的网络配置的。
采用的办法是先进入容器创建相应的文件夹,假设容器名为 gitlab-runner:
进入容器
docker exec -it gitlab-runner bash
然后在容器中创建 docker 网络配置 文件夹
# mkdir /etc/systemd/system/docker.service.d/
最后将宿主机中的 docker 网络配置 文件拷贝进 gitlab-runner 容器中的对应位置。
sudo docker cp /etc/systemd/system/docker.service.d/htt
...