Latest

GitLab 集成 Telegram

GitLab 官方支持集成 Telegram,在项目的 Settings → Integrations 里就能找到。除了 Telegram 外,GitLab 还支持对 Slack、Discord 等软件的集成。 之前我做过通过 GitLab 的 webhook,在飞书群里发送 GitLab 通知的项目。那个项目需要先让 GitLab 把 webhook 数据发到自己服务器上,然后再格式化为飞书机器人支持的消息卡片数据,最后通过飞书机器人的 webhook 把消息发到指定的群里。 不过 GitLab 对 Telegram 的集成不需要咱们先把数据发到自己服务器上,它是可以直接发送对应软件支持的消息数据的。咱们只需要提供一下相关的配置信息即可。 根据我的尝试,目前可以在 GitLab 中配置发送通知的对象为 Telegram 的 Group、Channel 或者单个用户(比如自己)。 Telegram 的

By Gray

iOS 调用栈回溯

前言 在做「大内存分配监控系统」时,我深入学习了一下堆栈回溯相关的底层原理,以及符号化相关的知识。这篇文章是当时记下的学习笔记。 调用栈回溯的目的是追踪某个函数的调用链。比如函数 A 调用了函数 B,函数 B 又调用了函数 C,调用链就是 A → B → C。调用栈回溯拿到的一般是函数的内存地址信息,无法看到函数名,需要再做一次符号化操作。 本文参考: App LibcArm DeveloperProcessor_registerDive into System CPU 寄存器 CPU 寄存器是 CPU 芯片上数据存储的小型区域,位于内存结构的顶部,具有最快的数据访问速度,用来暂时存放参与运算的数据和运算结果。 ARM64 指令集提供了下列用于调用栈的寄存器: x0~x30 通用寄存器负责的功能如下: * x0~x7: 参数寄存器,用于把参数传递给函数并返回结果。可以用作临时寄存器或调用者保存的寄存器变量,可以在调用其他函数之间的函数内保存中间值。

By Gray

Python 零食铺

终端相关 输入输出 清理终端用户输入缓冲区的数据 如果希望在调用 input 前清理输入缓存区的数据,可以使用如下代码: import termios termios.tcflush(sys.stdin, termios.TCIFLUSH) input('your input prompt') 函数功能描述如下: termios.tcflush(fd, queue): 丢弃文件描述符fd中的数据队列。变量queue表示具体待处理的队列,如TCIFLUSH表示输入队列,TCOFLUSH表示输出队列,TCIOFLUSH同时表示输入输出队列。 参考:https://blog.csdn.net/u010158659/article/details/50829950 命名规范 类别 规范 示例 模块名 小写字母,单词之间用下划线_分割 my_script.

By Gray

Swift Concurrency 异步感染问题

Swift Concurrency 异步感染问题 当我们在一个非 async 的方法 A 里面调用 async 的方法 B 时,Xcode 会提示我们无法这么做: 'async' call in a function that does not support concurrency,并且引导我们给 A 加上 async 标识。 ⬆️ 这就是异步感染问题,async 方法的调用方在不知不觉中也变成了 async 方法。 为了避免 async 向上一直感染,可以使用 Task 方式调用 async 方法: func A() { Task { await B() } } func

By Gray