安固途径

知识来源于感觉和经验

利用 qshell 来删除七牛云上指定前缀的文件

2024-07-10, 星期三|
修复平台

本文是写给我们自己的,用于维护七牛云存储中的临时文件,降低存储费用。

总体的思路

先查询,后利用查询到的结果批量删除对应的文件。

如何查询

查询条件:以某个前缀为路径的文件,晚于某个时间上传的文件

本例中 删除以 generation/tmp/pdf/zhihu- 开头的,扩展名为 .pdf 的文件。

qshell 查询 prefix 文档为 获取空间中指定前缀的文件列表

qshell listbucket [--prefix <Prefix>] <Bucket> -o <ListBucketResultFile>

那么拼接命令为:

qshell listbucket2 xyz --prefix 'generation/tmp/pdf/zhihu-' --suffixes .pdf --start 2024-02-01-08-30-00 -o /tmp/generation-zhihu.list.txt

xyz 是 bucket 名。

执行后,查询生成的文件列表的结果

cat /tmp/generation-zhihu.list.txt | wc
...
阅读全文

使用 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。

...
阅读全文