Open LED signage

如何为任何开源项目做贡献?

在《如何成为Golang贡献者》中,我介绍了, 我对于 Golang 的第一个贡献是修复了一处 Typo ,这是整个开源贡献中可以说是最简单的一部分。

那如果你现在是一个新人,希望参与到项目中,或希望走通整个贡献的流程,那么修复 typo 是一个不错的选择。但对于新人来说,通过阅读代码来查找 typo ,显然不是一个很好的选择。

在这种情况下,自然会产生一个问题:“有没有一种方式,可以让我快速找到 typo 呢?”

答案是肯定的,我们可以借助一些拼写检查工具,来检查具体哪些代码文件中存在 typo。

流程

这里我使用的是 Client9 的 Misspell ,一个基于 Golang 写就的拼写检查工具(用 golang 的拼写检查工具来检查 golang 源码,很合理)。

这个工具的下载安装十分简单,执行如下代码即可安装:

curl -L -o ./install-misspell.sh https://git.io/misspell
sh ./install-misspell.sh

Code language: JavaScript (javascript)

安装完成后,即可使用 misspell 命令来进行拼写的检查。以 django 项目为例,具体的执行命令如下:

git clone git@github.com:django/django.git
cd django
misspell ./*
Code language: PHP (php)

可以看到打印出了 misspell 认为可能是 typo 的地方,

202108252149852
结果

接下来你要做的就很简单了,根据 misspell 的结果,查找具体的文字,确保是否真的是 typo,如果是真的 typo,就按照项目的贡献规范进行贡献即可。

总结

借助 misspell,你可以很轻松的给一个项目快速的开始贡献代码,但如果真的是希望参与到开源社区当中,一定不能只是做 typo 的修复。typo 修复一般来说都是开源前辈留给后辈学习用的,对于实际的贡献者而言,除了熟悉流程,并没有太多的价值,因此,你还是需要将开源项目应用在自己的工作生活中,并解决一些实际的问题,才会更有价值。

5e54199359bbafe0ef692365a9bcffb6

如何成为 Golang 贡献者

是的,我成为了 Golang contributor

bzii6
我的第一个 contribution

在听完了 Go 夜聊的第 2 期播客后,我突然觉得,嗯,我是应该加入一个社区,而不是总是以一个创建者的身份去创建开源项目。可以有一个新的视角。

于是,我选择了加入我最常写的三种语言其一的 Golang。

然后接下来的问题就是,应该如何做贡献?

我查阅了一些资料,完成了此次贡献。并将其记录在此,希望可以帮到你。

贡献流程

0. 系统依赖

给 Golang 做贡献需要一些基本配置,这里不再赘述,只写明要求:

  • 安装了 Golang
  • 安装了 Git

1. 找到你要贡献的问题

实际上,既然要贡献,首先你要解决的问题是,你想贡献什么问题?绝大多数的贡献都是基于某一个特定的问题进行的。

2. 签署 Golang CLA,配置基本信息

golang 的贡献是基于 Git 进行的,因此,你在贡献前,需要确保你的各项基本信息是复合要求的。比如,你要在网站上签署 CLA(Contributor License Agreement);你的 Git Username 和 Git Email 应该符合和你签署 CLA 的信息是符合的。

签署完成后,可以使用你的 Google 账号登陆 https://go-review.googlesource.com/login/,注册一个账号。后续的 Code Review 也会在这里进行。

3. 配置 Password 、Git 等信息

需要注意的是,目前 Golang 无法从中国大陆提交贡献,所以你应该在一台海外服务器上进行贡献。以确保可以提交。想了解具体情况,可以查看附录中的 GitHub issue #20065

Golang 在提交时,是通过 Git 提交的,不过和一般我们常用的 HTTP 账号密码鉴权 or Key 鉴权不同,Golang 采用的是 GitCookies 进行提交的。因此,你需要配置 Git Cookies。

访问 go Git repositories – Git at Google (googlesource.com),登陆后,点击右上角的 Generate Password

wrtzn
点击这里

在新的页面中,复制下方蓝色框体中的 bash 代码,并粘贴在你的 Shell 中粘贴并执行,即可配置好 Git Cookies

vzgh3
蓝框里本来是 Shell 命令,被我 F12 给改了

4. 安装 Code Review 工具

在服务器上执行如下命令,安装代码提交工具

go get -u golang.org/x/review/git-codereview
Code language: JavaScript (javascript)

安装完成后,执行如下命令验证

git-codereview help

5. Clone 代码并提交贡献

接下来的就很简单了,和我们日常贡献代码很接近了

5.1 clone 代码并执行测试

首先你需要 clone 代码,并执行测试,确保你 clone 的代码本身是没问题的(不然可能会出现你改了一大堆,发现问题不是你自己的)

git clone https://go.googlesource.com/go
cd go/src
<meta charset="utf-8">./all.bash # 执行测试,如果看到 ALL TESTS PASSED 则说明代码没问题。
Code language: PHP (php)

5.2 修改代码

修改代码按照我们一般的分支协作的方式来进行即可

git checkout -b feat/xxxx
# 修改文件...
git add [files...]
git codereview change # 为你的贡献创建一个 commit
Code language: PHP (php)

5.3 提交代码

完成代码贡献后,你就可以准备提交你的代码了。不过,你还是要跑一次测试,确保你的修改没有导致某些地方坏掉。

./all.bash # 执行测试,如果看到 ALL TESTS PASSED 则说明代码没问题。
 git codereview mail  #提交你的代码
Code language: PHP (php)

6. 进行 Code Review

提交完成后,你就会在 https://go-review.googlesource.com/ 上有一个新的 Change 的记录,然后系统会自动帮你分配 Maintainer 进行 Review,这个阶段如果 Reviewer 没有给你提出需要修改的话,你只需要等待你的代码被合并即可。

yl90z

需要注意的是,Golang 对于代码的合并有要求,需要 2 个 +2 才能合并到代码库中。因此,你的代码可能会很快被某个 Maintainer Review,但很久才被另外一个 Maintainer Review (其实也没多久,只是相比于第一个)

当两个都合并完成后,左上角的标识就会变成 Merged ,此时就说明你的代码贡献成功啦!

v573a

一些注意的点

1. 关于中国区无法提交的问题

如果你使用自己的本地电脑进行提交,你会发现,你会收到一个报错

Access Denied (not available from your location)

这是因为 Golang 官方禁止了中国区的提交,将 golang 源码对于中国区进行了只读状态的设置。

这并不是 Golang 不欢迎中国开发者贡献,只是对于 GFW 封禁 golang.org 的一种抵抗。

iebps
Maintainer 的解释

你只需要将贡献环境从你的本地电脑,换成任何一个海外的服务器,就可以正常提交。

来源:access to Gerrit denied because of location · Issue #20065 · golang/go (github.com)

2. Commit Message 格式

golang 的 commet message 有自己的格式,你在提交的时候可以以这个格式进行提交,这样后续就不需要 Reviewer 帮你改了。

[模块] 修改内容
详细信息
Github link
Code language: CSS (css)

给大家举个例子,大家就知道是什么样的了。首先,下面这个是我自己的 commit message

typo: fix reponse to response in src/net/http/header.go
Change-Id: I238bc90c4f273c352ef924989a44c6e927839128
Code language: HTTP (http)

Reviewer 帮我调整后的格式

net/http: fix typo in header.go
Change-Id: Ia6df881badf9a704c7f56967404d37e230b88a09
Reviewed-on: https://go-review.googlesource.com/c/go/+/343969
Reviewed-by: Damien Neil <dneil@google.com>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Trust: Damien Neil <dneil@google.com>
Code language: HTTP (http)

更加简单明了。

Change ID、Reviewed on、Reviewed by 是系统自动添加的,你不需要关注。

来源:Contribution Guide – The Go Programming Language (google.cn)

相关链接

human

人需要意义

Freelancer 久了,很容易陷入一个迷茫的时间点:

我需要做什么?我到底是谁?

在这种状态下,你会难免遇见失意、无所事事、看不到下一步计划的情况。在这个时候,一个好的办法是,让自己忙起来。

忙起来,通过工作找到属于自己的意义。

当然,实际上在今天,你可以有很多种方式来找寻自己的意义,成为一个 UP 主、成为一个创作者,让自己产生价值。

human

生来是苦?还是生来是乐?

我在收听的《调试者说》中的最新一期提到了一个广为流传的说法:

「人生来就是痛苦的」

期间主播提到自己其实并不是特别认可这个说法。

我也想谈谈我对这个问题的看法。

「人生来就是痛苦的」和「人生来就是快乐的」其实是一个镜像观点。二者区别是立足于乐观和立足于悲观的问题。

人生来就是痛苦的是上一代人广泛的观点,这样的观点让他们可以苦中作乐。当他们认为这世界上的所有的事情都是痛苦的时候,那所有不痛苦的事情,都会变成一种恩赐。

反之的则是认为任何事情都是快乐的,会让你更美好的对待每一件事。但可能会在出现问题时,让你的整个认知体系崩塌。

不过,在我看来,二者都不是一个好的选择。

我们应当抽离出来看,事情就是事情。人生就是人生。事情没有喜乐悲哀。人生也没有喜乐悲哀,这样才能更好的生活。

white and brown city buildings during daytime

从疫情封城谈共产主义与资本主义

今天在听播客的时候,主播提到了,在法国,封城如果出门是需要自己按照政府的给出的模板,自行打印或手写,然后出城的。对比同样在处理封城的国内,采用的是统一发放的出门卡,每次出门 N 次的模式。

主播感受到:“我第一次感受到自己被当成一个成年人在对待,政府相信我会为我自己的每一个行为负责”

对比这个,让我想起了共产主义和资本主义。

我国很多时候为什么不会选择「相信民众」的方式?我觉得主要是两个原因:

  1. 人均素质:据第七次人口普查结果显示,中国大学生(大专及以上)的人数为 2.18 亿人,占总人口的 15.5%。你身边每 6 个人就有一个不具备大专及以上的文凭。对于这些人来说,他们可能并不能很好的理解自己所做的事情产生的问题。而同样的问题我们放在法国去看,法国约 6000 万人口;大学入学率 64%,毕业率 47%(中国同期为 25.71),法国每2个人有一个人无法很好的理解自己所做的事情所产生的问题。从人口素质上而言,法国人确实比我们的素质更高,具备执行这样政策的可能。
  2. 体制限制:在谈及这个问题时,我突然在想。资本主义政府想的是,我相信民众,那共产主义政府想的是什么?想了一下,共产主义政府想的是「如何尽可能的保证社会的底线不要太低」。共产主义和资本主义所追求的目的并不相同,资本主义追求的是资本的最大化。而共产主意追求的是全体人民的福祉。从这个角度出发,使得共产主义政府无法选择只满足一小部分人的利益。

我们作为人群中的「优秀者」、「有价值者」,我们当然可以追求政府只为我们服务,但也需要考虑,这个社会还有很多远不如我们的人,他们依然还在辛苦的生存。在这个时候,我们除了考虑自身的福祉以外,也需要考虑他人的感受。

如果我们希望体制是「保护优秀者」的体制, 那就可以去追寻资本主义体制。但也需要明白的是,世事无常,我们能保证自己当下是强者,但我们可能无法保证自己终生是强者。如果恰逢我们成为弱者之时,需要我们牺牲,我们可能就成为那个无法被保护的人。

summary

2021 年 7 月月度总结

TLDR

本月又开始读书了!开心。

定性分析

学习成长

本月重新恢复看书的习惯了,是个好兆头,加油。

恋爱家庭

没太大变化

职业发展

没太大变化

理财投资

开始定投指数基金了。

休闲放松

本月出行前往上海,其他地方没怎么出去。

本月开始看 Netflix 了,算是一个新的娱乐方式吧

社交人际

本月去上海,见了吴鸣远,还认识了一堆基金的人,挺好的,开阔了视野。

自我实现

本月没有太多的自我实现的部分,倒是积压的事项开始处理了。

定量分析

本月内容输出总结

本月没怎么写文章、出视频、出播客,看看下个月能不能有变化。

本月收支总结

本月收入:90971;

本月支出:59918;

本月有结余,是个好开始。

本月读书总结

本月读书 8 本,书评如下:

  • 《工薪族财务自由说明书》:还行,博主自己的经历的介绍。可以看看。
  • 《写作如此简单》:提供了一个可以简单开始做事的方案。
  • 《百万富翁快车道》:逻辑和基本观点还是可以的。总体来说,你要做可以影响更多的人的事情。
  • 《不上班也能月领万元》:这本书看起来好像和前面的差不多。然而只是一个美国的社保说明书,看的意义不大。
  • 《我们终将变富》:这本书其实和工薪族财务自由说明书类似,不过提供了一些买房方面的参考,还是值得一看的。
  • 《紫牛》:还行,标新立异,更多是理念方面的介绍和对「紫牛」概念的强化。读起来很快。
  • 《巴比伦富翁的理财课》:故事讲的很好,很适合小朋友读。
  • 《不上班的理想生活》:文不对题,更适合叫《17幸福8的创业心得》

本月学习总结

本月学习了 0 门课程;

本月娱乐总结

本月 Netflix 的时长暴增,因为我本月在看 Rick and Morty ,已经追到了第三季,快看完了~

年度回顾

  • Linux 中国的改造计划:0/2
  • 海外收入计划进度:0/$1000
  • 减肥计划:210/170
  • 优质文章产出:2/50
  • 1W stars 项目:1500/10000
  • 年入 5000 的项目:0/5000
  • 收入结余:25K

white and brown city buildings during daytime

抖音和快手的区别

前几天和一个做投资的朋友聊到了抖音和快手,谈及二者的不同,我是这样评价的。

关于抖音

谈及抖音,需要看字节跳动的企业文化和张一鸣在做的事,字节跳动的使命叫「Inspire Creativity, Enrich Life」,中文「激发创造 丰富生活」。

这句话没啥问题。不过,如果你和张一鸣做今日头条的逻辑一起来看的话,就能明白抖音提供的价值。

张一鸣认为,现有的推送机制,按时间推送的机制(如微信公众号),信息触达目标用户的效率太低,所以做出了今日头条,希望通过机器算法的机制,来优化信息触达目标用户。

而抖音,从产品形态上来看,就是视频版的今日头条。依然依靠强算法推荐,让「引擎觉得对你有用」的产品,出现在你的面前。

至于说,激发创造,丰富生活,其中是没有「人」的存在的。当然,是激发每一个人创造,丰富每一个人的生活,但本质上是推荐引擎将数据推荐给每一个人。引擎不在乎内容是谁做的,他只在乎内容对目标受众有价值。

这也解释了,抖音上为什么往往是一个网红需要不断的跟进潮流,出新的内容,产出新的价值,才能持续产生收益。

快手

同样是短视频平台,快手讲究的是「快手是记录和分享大家生活的平台,每天产生上千万条原创新鲜视频」。

快手虽然也有推荐引擎,但在快手当中,首先核心概念是每一个快手主播,数据和信息以主播为核心进行推动。

在快手的世界,以「人」为本,不太在乎算法。如果你关注了某一个主播,他产出的内容会强推荐给你,让你可以持续看到。

从这个角度来看,快手其实在做的事情「很互联网」,和我们曾经使用的 Feed 流非常接近。

我的评价

二者我都不抗拒,我用抖音搜索我想要的信息,它可以产出我最需要的信息,很好的承载了一个「视频版搜索引擎」的角色。而快手则会成为我的工具,因为他以我为中心,展现我的价值,是一个创作者的助手。

white biplane

中国机场排行榜

我去过很多机场,北京的大兴首都、上海的浦东虹桥、深圳宝安、广州白云、海口美兰等等一系列的机场,我都去过。

在我心中,中国机场分为两类:

  1. 需要把电脑拿出来的;
  2. 不需要把电脑拿出来的。

而这里,我简单的区分的话,就是

不需要拿电脑的

深圳宝安机场是做的最好的,他通过对飞机乘机情况进行分析,得出乘机风险较低的人群。并对这些人群进行分流安检。如果你属于这个人群,就可以在微信上搜索「易安检」,申请易安检通道通行,从而直接快速安检。深圳易安检通道只需要拿出充电宝即可,确认容量。剩下的无需取出。

北京大兴机场则是,如果你带较少的电子设备,是可以不用取电脑。只需要取出充电宝。但对于你拿较多的设备(比如我常背两台电脑 + 一台 iPad),就无法通过,需要将电子设备取出重新安检。但对于绝大多数的人来说,几乎等同于无需取电脑。

需要拿电脑的

其他所有机场

为什么是「是否需要取电脑」?

取电脑是一个非常大概率发生的事情。如果可以简化这个流程,可以优化安检的进程,提升安检效率,降低安检通过时间。对于乘机人而言,体验极好。

而这个事情仔细想想,其实是存在实现可能的。北京大兴和深圳宝安采取了不同的方式来实现。北京大兴选择的是默认让你通过,出现问题重新扫描,简单易行。而深圳宝安则是选择对于高频出行的人进行简易安检。

二者实现思路不同,本质是想要面对的人不同。大兴希望普渡众生,而宝安机场则希望为高频出行的人节省时间和空间。

对于我这种高频出行的人来说,宝安更好。但对于绝大多数人来说,大兴更好。

总的来说,不取电脑就好。