2021年23周:
不要浪费
每半年一次,客户都要拿出来 3 天时间让我们自己做点东西,我所在的团队已经获得过了该活动的所有奖项。问题是,我们做的很绚丽,概念很新颖,但都止步于活动。活动后再也没有人使用过,或者再次开发过。
正好这次活动的主题是“不要浪费”,所以这次我们以实用为准,做了个日常工作中真正需要的工具。现在活动结束一周,我们组的人都用了起来,非常开心。当然,这次是没有得奖的。
3 天时间想把一个 feature 做到产品级别也是不可能的,还有很多 bug。所以不要低估了产品的工作量。
2021年22周:
Github Project Board 统计
践行过敏捷实践的团队都用过白板吧,使用最多的有 Trello,Jira,最近 Github 也出了个 Project,由于和 Github 的血亲关系,很多团队开始转向 Github Project。
Github Project 基本还原了 Trello 的主要功能,但是缺乏丰富的插件,目前还没有看到 Github 开放接口来支持插件。没有插件的 Board 没有统计功能,甚至一个迭代做了多少张卡都需要自己数一数。
苦于此,第一时间能想到的是 Github API,尝试了一番,能很容易拿到 MovedColumnsInProjectEvent。当卡片移动时,移动的信息将记录在卡中。但是看不出来是从那个 column 移动到那个 column。最终在文档发现,projectColumnName 信息在 preview API 中才会出现。preview API 需要在 headers 里面添加
Accept: application/vnd.github.starfox-preview+json
注:Preview API 不稳定,可能随时被删除。
GraphQL Client 中的文档并不全,可见在使用 API 时,还是要以官方文档为主。GraphQL 查询脚本如下所示:
{
repository(owner: "zddhub", name: "gpkit") {
milestones(first: 20) {
nodes {
title
issues(last: 100, states: CLOSED) {
nodes {
title
url
timelineItems(itemTypes: [MOVED_COLUMNS_IN_PROJECT_EVENT, ADDED_TO_PROJECT_EVENT], first: 100) {
nodes {
__typename
... on MovedColumnsInProjectEvent {
createdAt
projectColumnName
}
... on AddedToProjectEvent {
createdAt
projectColumnName
}
}
}
}
}
}
}
}
}
注意这里使用 Milestone 来跟踪项目的进度,对没有使用 Milestone 的项目,也可以直接查 issues 获得类似结果。
搞清楚了 API,剩下的就简单了,顺便学习了一下 deno, 一个小的统计功能就生成了,目前支持两个指标:
- Cycle Time:卡从开始做(Doing)到完成(Done)所用的时间。
- Lead Time: 代码提交到部署上生产所用的时间。
统计的准确性需要卡片正确的拖动来配合,源码在这里,欢迎参考使用。
2021年21周:
小孩发烧
疫情影响,凡是发烧的病人,都得做核算检测,只能看急症科。
很感叹,我小时候发烧,乡村大夫开两块钱的药,吃上几顿就痊愈了,现在动辄好几百,还不见好。
真是有什么别有病,没什么别没钱!
2021年20周:
卸载 Sophos
当新系统 macOS Big Sir version 11.3.1 (20E241) + Sophos version 10.0.4, 遇上 Charles (v4.6.1), 不出两分钟,操作系统直接关闭,连黑屏的机会都没有。
在没关机的两分钟内,iOS Simulator 模拟器 Wifi 连不上网。而且稳定复现。
如何来修这个问题呢?
一番折腾后发现,卸载 Sophos 后 Charles 和模拟器正常工作,此时再安装 Sophos 发现安装不上,直接 Failed,也没有多余的 log。再次探索一番发现,Sophos 有两个进程 com.sophos.endpoint.networkextension 和 com.sophos.endpoint.scanextension 仍然在运行,重启或者强杀都无济于事。要论流氓,杀毒软件绝对首当其冲,卸载是卸不干净的。
原来这两个程序被放在 /Library/SystemExtensions 下,强删失败。一番查询后发现,原来是 SIP(System Integrity Protection )阻止了删除操作。
重启系统,按住 Command + R 进入恢复模式后,Utilities -> Terminal 后,
csrutil disable
重启后,顺利删除了 /Library/SystemExtensions 目录下的执行文件,Sophos 的两个流氓进程也消失不见。再次安装 Sophos 成功,Charles 重新工作。
最后不要忘记了 enable SIP。
2021年19周:
是谁关了灯
天这么黑, 是谁, 关了灯