安固途径

知识来源于感觉和经验

使用 gtm 代理来配置事件

2024-07-10, 星期三|
开发平台

这篇文章是写给我们自己的,用于配置 ga 代理的设置教程。

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 的脚本不能在某些地区被正常访问,且存在被某些广告或防追踪插件屏蔽的可能。

GTM 的配置

自定义事件

事件名在 ga 中由 gtm 的 Tag 来定义。

Tag_temp_login

定义 trigger

自定义事件,类型是 Custom Event。

gtm 的 trigger 定义了前端代码中的事件 l

...
阅读全文

为什么使用 RegExp 构造函数转义点字符时需要使用双反斜杠

2024-07-03, 星期三|
开发

在 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
...
阅读全文

基于 gitlab CI 的自动化镜像构建及部署

2024-07-02, 星期二|
linux开发

随着容器化技术的普及,越来越多的服务使用了 docker 来部署,更新的过程往往直接在生产环境服务器上执行 docker build 指令,而这又会带来影响生产环境性能的问题,如何简化这个过程称为课题。本文试着探讨如何利用 gitlab CI 和两台服务器,并结合镜像仓库来自动化构建和部署 docker 镜像,对两个过程一探究竟。

前置假设探讨

1. 为什么有两台服务器?

部署服务器用于生产环境,需要保持稳定。而构建镜像涉及到 build 阶段,需要消耗服务器的内存和 CPU 资源,这会降低服务器的性能,所以不能直接在生产环境的服务器上执行。而需要一台专门用于构建的构建服务器,这样即便构建过程特别消耗服务器资源,也不会把生产环境的服务器搞挂。

2. 为什么不直接用 runner 指定镜像构建,而需要用 ssh 指令在另外的构建服务器中构建,增加一台构建服务器不是需要更多的资源吗?

目前 runner 的运行内容是通过在 gitlabci 中指定运行的 docker 镜像,如果在该镜像的运行的容器中构建 docker 镜像,则需要用到 docker 客户端和服务端,这种在容器中使用 do

...
阅读全文

macOS 如何快速压缩 iPhone 拍摄的相册图片

2024-07-02, 星期二|
macOS软件

可以通过 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。

...
阅读全文

修复 gitlab ci gitlab runner auth.docker.io 连接失败

2024-06-12, 星期三|
linux修复

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
...
阅读全文