正则表达式和 shell 通配符展开 问题背景 遇到这样一个语句: -E参数表示为grep启用扩展的正则表达式ere,但*是一个限定符,表示重复前面一个字符任意次,而语句中*前面没有任何字符,因此这是一个错误的表达式。 问题在于:这样的表达式能够正确被grep解析: 背景知识 shell 通配符展开 借通配符展开问题描述 shell 的整个执行流程_shell 通配 展开-CSDN博客 shell 中使用通配符,如*,?,它 2024-09-14 #正则表达式 #shell #通配符
Remote Execution API (go version) 解析 基于编译出的的go文件进行说明 远程执行的目的是通过两个独立但相关的概念:远程缓存和远程执行来加快构建过程。远程缓存允许用户共享构建输出,而远程执行则允许在远程机器集群上运行操作,这些机器集群可能比用户本地使用的机器集群功能更强大(或配置不同)。 远程执行应用程序接口(REAPI)描述了一个 gRPC + 协议缓冲区接口,为远程缓存和执行提供了三种主要服务: 内容可寻址存储(ContentA 2024-08-15 #buildfarm #remote execution api #grpc #构建系统
Java 代码编译为环境无关的可执行文件 问题背景 在分布式构建系统项目的研究过程中,为了实现任务能够在用户指定的自定义镜像中运行的目的,采用 sidecar 模式,用户自定义镜像作为 sidecar 容器,运行一个执行器程序,与 buildfarm worker 通过某种机制通信,执行发来的指令。 由于 buildfarm 是 java 程序,因此 sidecar 中的执行器采用 Java RMI 机制进行通信。 从易用性出发,用户需 2024-08-15 #编译 #java
Logstream API (go version) 解析 结构体 日志流 12345678910111213141516171819202122232425262728293031// 一个日志的句柄(有序的字节序列)。type LogStream struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownF 2024-08-15 #remote execution api #grpc #构建系统
ByteStream API (proto version) 解析 ByteStream不由Remote APIs所定义,而是归于Google APIs的范畴。 ByteStream API允许客户端从资源中读写字节流。资源有名称,这些名称在下面的API调用中提供,以标识正在读取或写入的资源。 ByteStream API的所有实现导出这里定义的接口: Read() :读取资源的内容。 Write() :写入资源的内容。客户端可以使用相同的资源多次调用 Writ 2024-08-15 #grpc #构建系统 #bytestream api
Buildfarm 任务队列简要分析 Buildfarm中,Server 与 Worker之间通过redis传递消息,进行协作 任务实体 Server向redis写入形如下面的json字符串,以发布任务。 12345678910111213141516{ "operationName": "shard/operations/b5f16f00-edbf-4ac4-b4b8-5aabca68de 2024-08-15 #buildfarm #构建系统 #消息队列 #redis
BuildFarm Worker 配置自定义镜像 官方文档: https://bazelbuild.github.io/bazel-buildfarm/docs/configuration/configuration/#all-configurations (不全) 步骤总结 配置文件中开启flag 123worker: publicName: "localhost:8981" allowBringYourOwnCo 2024-08-15 #buildfarm #构建系统 #docker
BuildFarm Worker 简要分析 仅关注任务队列和具体执行 worker 官方文档:https://bazelbuild.github.io/bazel-buildfarm/docs/architecture/workers/ 启动 启动流程 1234567main() -> SpringApplication.run(Worker.class, args) -> @PostConstruct init() 2024-08-15 #buildfarm #构建系统
BuildFarm Server 简要分析 框架 BuildaFarm Server使用Spring Boot框架,实现了构建系统的调度等功能。 service/xxxxxService.java: 一系列的gRPC服务 controller/WebController.java: 基于http服务提供了一些管理界面、健康检查、监控等内容服务。 利用 HTTP 服务的简单性来提供管理和监控接口,而使用 gRPC 来提供高性能和强类型 2024-08-15 #buildfarm #remote execution api #grpc #构建系统
vim 粘贴后开头字符丢失 描述 https://stackoverflow.com/questions/19544680/losing-text-while-pasting-into-vi 向 vim 中粘贴文本(尤其是长文本)时,有时会出现开头部分字符丢失的问题。有时候,还会发现最前面的部分字符还会移动到文本的最后。 经过验证,排除了终端、用户、远程机器的问题。 解决办法 在进入了 paste 模式后 1:set p 2024-08-12 #linux #vim