为 GitHub 提供 Owner 维度的文件过滤 本文介绍一个通过 Chrome 插件在 GitHub 上实现 Owner 维度的文件过滤功能。 背景 我们的代码库托管在 GitHub 企业版上,内部有一套明确的 Code Review 制度,按模块、目录、文件等不同的粒度划分具体的负责人或团队,保证所有代码的修改、变更是被允许的。 而由于 GitHub 只能以文件类型为维度过滤列表,如下图: 当 PR 文件过多时很难让对应的 ...
ARTS #80 Algorithm 本周选择的算法题是:Day 1: Report Repair 规则 Part1 … Specifically, they need you to find the two entries that sum to 2020 and then multiply those two numbers together. For example, supp...
CI 物理架构 这一篇介绍稿定客户端持续集成的物理架构。 目前整体的设计是这样的: 在我们引入容器、虚拟化之前的很长一段时间,我们的 CI 基础设施都处于雪花服务器的状态: 手动管理一堆服务器 手动登陆每台服务器 手动安装众多软件 手动修改各种配置文件 导致每台服务器如同雪花一样独特,各服务器配置千差万别难以复制。 为了减少这些机器带来的维护成本,我们做了一些调研。 虽然...
ARTS #79 Algorithm 本周选择的算法题是:Swap Nodes in Pairs 规则如下: Given a linked list, swap every two adjacent nodes and return its head. You may not modify the values in the list’s nodes. Only nodes itself may be...
Symlinks on CocoaPods CocoaPods 是一个管理 Xcode 工程依赖的工具,其因为简单易用、功能覆盖广、拓展性强,成为了这个领域最常用的工具之一。不过想让工具完美适配各种 workflow 是不现实的,总归会有一些需要二次开发的东西,这一篇就是我们在实现环境切换时,如何利用它的特性达到最终目的的记录。 背景 Flutter 支持三种编译模式: debug - 开发时使用,支持 hot reloa...
ARTS #78 | 设计模式的背后 Algorithm 本周选择的算法题是:Generate Parentheses 规则如下: Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses. Example 1: Input: n = 3 Output: ["((()))"...
ARTS #77 | Start with Why Algorithm 本周选择的算法题是:Remove Nth Node From End of List 规则如下: Given the head of a linked list, remove the nth node from the end of the list and return its head. Follow up: Could you do this in one...
ARTS #76 | 关于生财日历 Algorithm 本周选择的算法题是:Sort Colors 规则如下: Given an array nums with n objects colored red, white, or blue, sort them in-place so that objects of the same color are adjacent, with the colors in the or...
ARTS #75 | 回顾 monorepo Algorithm 本周选择的算法题是:Spiral Matrix II 规则如下: Given a positive integer n, generate a square matrix filled with elements from 1 to n2 in spiral order. Example: Input: 3 Output: [ [ 1, 2, 3 ], [ ...
ARTS #74 | 终于可以轻松管理 macOS 构建机了 Algorithm 本周选择的算法题是:Insert Interval 规则如下: Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessary). You may assume that the intervals were initial...
