本集简介
双语字幕
仅展示文本字幕,不包含中文音频;想边听边看,请使用 Bayt 播客 App。
我是Corey Lanoue,这里是《Go Time》节目。
I'm Corey Lanoue, and this is Go Time.
欢迎收听《Go Time》—— 一档每周探讨Go编程语言及其生态相关话题的播客节目。
It's Go Time, a weekly podcast where we discuss interesting topics around the Go programming language, the community, and everything in between.
无论你是正在使用Go语言还是有意学习,这档节目都适合你。
If you currently write Go or aspire to, this is the show for you.
现在是第二期节目。
This is episode two.
今天我们有幸邀请到Brian参与节目。
And with us on the show today, we have Brian.
Brian,来打个招呼吧。
Say hello, Brian.
你好,Brian。
Hello, Brian.
同时参与连线的还有Carlicia。
We also have Carlicia on the call.
大家好。
Hello, everybody.
今天我们有一位特别嘉宾,Corey Lanou,他是InfluxDB的开发者,同时在开源社区非常活跃,还主办了数不清的开源交流会。
And we have a special guest today, Corey Lanou, who is a developer for InfluxDB and also highly active in the open source community and runs don't even know how many open source meetups anymore.
Corey,不如你来跟大家打个招呼?
Corey, why don't you tell everybody hello?
嘿。
Hey.
嘿。
Hey.
最近怎么样?
How's it going?
要不你先简单介绍一下自己的背景,然后我们就正式开始这期节目?
So you wanna give everybody maybe a short high level background on yourself, and then we'll kick this show off?
没问题。
Sure.
是的。
Yeah.
我在Influx Data工作,是InfluxDB核心团队的成员。
I work at Influx Data, working on the core team for InfluxDB.
这就是我白天的工作内容。
So that's what I do during the day.
如你们许多人所知,我花大量时间与社区互动。
I spend a lot of time with the community, as many of you know.
至于我组织的meetup数量,正在逐步退出丹佛meetup的管理,这很棒。
And so as far as the amount of meetups I run, slowly removing myself from the Denver meetup, which is great.
但我还在协助芝加哥和明尼阿波利斯的meetup活动。
But I have a Chicago meetup that I am helping out with and a Minneapolis meetup that I'm helping out with.
当然,我们还会为GopherCon做些事情,比如开幕派对和一些培训之类的活动。
And then, obviously, we do some stuff for GopherCon with kickoff party and some training and those kind of things.
同时我也和Bill Kennedy合作开展大量Go语言培训,负责终极Go系列课程。
I'm also doing a lot of, go training, with Bill Kennedy for the ultimate go series as well.
所以这些事情让我相当忙碌。
So between all those, that keeps me pretty busy.
是啊。
Yeah.
这简直是忙过头了。
That's, beyond busy.
就这些?
That's all?
你周末都做些什么?
What do you do on the weekends?
嗯,其实我和家人住在320英亩的庄园里,我妻子养马。
Well, no, I I live on a, 320 acre estate up here with my, my family, and, my wife has horses.
这意味着我所有的空闲时间都在修理围栏、追马之类的事情上。
So that means any free time whatsoever that I have, I'm out fixing fence or chasing horses and all that kind of good stuff.
那你哪有时间放烟花呢?
So where's the time for the fireworks?
幸运的是,那是季节性的。
Luckily, that's seasonal.
对吧?
Right?
而且一旦那个季节开始,这基本上就占据了我每天醒着的每一刻。
And that pretty much just dictates every single waking moment of my day once that season starts.
季节性的。
Seasonal.
放烟花的时间总是有的。
There's always time for fireworks.
我希望大家都这么想。
I wish everybody believed that.
你有没有用Go语言写过什么程序来发射你的烟花?
Have you have you written anything to to launch your fireworks in Go yet?
没有。
No.
我真的很想这么做。
I I would really like to.
我觉得现有的点火系统都太贵了,而且效果不怎么样。
I think all the firing systems out there are really expensive and don't work so great.
而且我觉得用ARM设备来实现这类功能应该不会太难。
And, I don't think it'd be that hard to use, like, a a arm device to go ahead and start doing that kind of stuff.
所以我可能得研究一下这个。
So I might have to look into that.
不。
No.
我加入。
I'm in.
我来帮忙。
I'll help.
一个Arduino加上一点电力,我觉得就够了。
An Arduino and and a little bit of power, I think you're good.
只要它能点燃火柴,我们就
As long as it can ignite the, the match, we're
没问题。
good.
对。
Yeah.
好的。
Alright.
通常我们这档节目的流程是,先以一些新闻开场。
So, typically, the way the way we do this show is, we'll start out with some, news.
我们会进行圆桌讨论,看看大家有什么有趣的话题可以聊,然后我们就此展开讨论。
We'll kinda round table it and see what everybody has that that might be interesting to to talk about, and we'll chat about that.
接着我们会进入布莱恩在GitHub上发现的那些有趣项目环节,因为他每晚都会把所有Go项目下载到脑子里。
And then we'll kinda move into Brian's fun projects that he discovers on GitHub because he downloads all Go projects every night into his brain.
最后我们会多聊聊你,科里,关于你的社区贡献和开源工作,以及给那些想进入这两个领域的人一些建议。
And then we'll kinda move into talking to you a bit more, Corey, about your community efforts and open source contributions and, you know, any advice you have for people aspiring to get into either of those things.
既然如此,Brian,你有什么有趣的新闻要分享吗?
With that said, Brian, you got any, interesting news for us?
嗯,我认为最近最大的新闻就是go1.6.2的更新,不过据我所知这只是个很小的更新。
Well, I think the biggest news recently is the go1.6.2 update, although it's it's tiny little update from what I can tell.
其中唯一真正引起我注意的是net HTTP客户端默认支持HTTP/2了。
The only thing that really caught my eye in there is the net HTTP client getting HTTP two by default.
这很重要,我知道很多人一直非常期待这个功能。
That's big, and I know a lot of people were really looking forward to that.
其余的修复内容似乎大多是些编译器小错误之类的问题。
The rest of the fixes in there seem to be mostly little compiler bug sort of things.
是啊。
Yeah.
我也这么觉得,人们最感兴趣的主要是HTTP/2现在被设为默认选项了,我认为这是个错误。
It seemed that way to me too, that that the main thing that people would be most interested in is the fact that HTTPtwo is defaulted now, which I believe was a mistake.
它本应从一开始就是默认选项。
It was meant to be default first.
我认为这是正确的。
I think that's correct.
我认为这次更新解决了这个问题。
I think this fixes that.
我特别想聊的是GopherCon——或者说非GopherCon的话题。
One thing that I'm particularly interested in chatting about is GopherCon or not GopherCon.
Gopher China刚结束是在什么时候来着?
Gopher China just completed what was it?
两天前?
Two days ago?
一天前?
A day ago?
对。
Yeah.
我也这么认为。
I think so.
是的。
Yeah.
关于Gopher China的内容,那里似乎有一些有趣的演讲,但有一个特别吸引我注意,就是Dave Cheney关于性能的演讲。
So the Gopher China stuff, there seemed like there were some interesting talks there, but one particularly caught my eye, which was Dave Cheney's talk on performance.
我刚好看到了那些幻灯片。
And I happened to see the slides for that.
视频显然还没发布,但幻灯片看起来不错。
The videos obviously aren't released yet, but the slides look good.
有很多内容我深表赞同。
There's a lot of stuff that I I really agree with.
我认为他提供了很多关于如何在基准测试中进行性能分析的建议,同时也包括如何着手进行基准测试。
I think he has a lot of advice for how to profile in benchmarks at apps, but also how to approach benchmarking.
我想和大家简单聊聊这个,听听大家的意见。
And I just wanted to chat about that for a second to get everybody's opinion.
当你开发代码时,你对性能的处理方式是什么?
When you develop code, what's your approach for performance?
你会从一开始就考虑性能问题吗?
Do you think about performance from the beginning?
你从不考虑性能问题吗?
Do you never think about performance?
你是在出现具体瓶颈时才考虑性能问题吗?
Do you think about performance when specific bottlenecks come up?
对我来说,我从一开始就不会考虑这个问题。
For me, I never think about it from the beginning.
通常是在出现瓶颈时,才会去查看并看看我们能做些什么。
It's usually when a bottleneck happens, then, yeah, let's take a look and see what we can do here.
我认为这并不是理想的做法。
I think it is not the ideal.
我觉得应该在这方面找到一个折中方案。
I think a middle ground should be reached there.
我认为在开发过程中应该稍微考虑一下性能问题,这样就不会在后期陷入困境。
I think we should think about it a little bit as you develop things so you don't find yourself against the walls someplace down the line.
确实很棘手。
It's it's rough.
我觉得当我们没时间做基准测试时,我们会自责。
I I think we wanna beat ourself up when we don't have time to benchmark.
但归根结底,我们终究还是要交付产品的。
But at the end of the day, we're we're also expected to deliver products.
对吧?
Right?
所以如果性能目前对产品不是问题,我们能否证明投入时间是值得的?
So if performance isn't an issue for the product at the moment, can we justify the time to do it?
尽管我们希望能让所有东西都尽可能高效,但如果某个应用——比如说一个内部应用根本没人会使用,让它快一倍又有什么价值呢?
So as much as we would like to make everything as performant as humanly possible, if a particular application, say it's an internal application that's not going be used by anybody, what's the value in making it twice as fast?
是的。
Yeah.
对我来说,我发现自己不会立即优化或在写代码时考虑性能问题,主要有两个原因。
For for me, I find that I don't optimize, right away or think about performance when I write the code for two reasons.
第一,因为我通常没有时间;第二,因为每次我真正有时间去分析性能时,几乎总是发现自己的判断是错误的。
One, because I don't typically have the time, and two, because I'm almost certainly wrong every single time when I do get the time to actually profile it.
是啊。
Yeah.
这不就是Dave在他幻灯片里说的吗?
Isn't that really what Dave said in in his slides?
你知道的,如果性能已经够好,就停手。
You know, if your performance is good, stop.
别去优化它。
Don't optimize it.
只有在出问题时才去优化。
Only only optimize when there's a problem.
对我来说,从比Go慢得多的语言转过来,我几乎从不做性能分析,除非发现具体问题。
For me, coming from languages that have been much slower than Go, I I almost never profile anything unless I find a specific problem.
我已经比用Ruby或Python时快30倍了。
I'm already 30 times faster than it was in Ruby or Python or whatever.
你需要多快的速度?
How much faster do you need?
我只是个知足的人。
I'm just not a greedy person.
我觉得我倾向于快速浏览一下我的代码。
I think I tend to look at my code just kind of quick eyeing it.
如果我能消除一个内存分配或类似明显的问题,比如我知道某个切片会超过某个大小。
If I can remove an allocation or things along that line that are are really obvious at the time, I know that a slice is going to grow beyond some amount.
我会从一开始就设置好基础容量,至少防止每次扩容时的复制操作。
I'll I'll set it set it from the beginning, at least a base level to prevent the copying every time it needs to grow.
除此之外,我会做些基础基准测试,以便后期有对比依据,确保算法不会变慢之类的情况。
But aside from that, I'll do some baseline benchmarks just so that I have something to compare to later to make sure that given algorithms aren't getting slower, and things of that nature.
但通常都是事后出现性能问题,通过端到端测试等方式来缩小需要优化的热点区域。
But usually, it's some performance problem after the fact, end to end testing, things like that that start narrowing down hotspot areas that need to be addressed.
我也记得,大多数遇到性能问题时,都与数据库查询有关。
My recollection too is that anytime or most of the time that I did have performance issues, they were related to database queries.
我甚至想不起有哪次是因为性能问题而需要回头重写某些逻辑的情况。
I don't even think of a time when I had to go back and rewrite some logic because of performance issues.
但数据库查询问题绝对是常见的,我通常都是在那里发现问题。
But database database queries, definitely, that's usually where I find problems.
是啊。
Yeah.
查询问题。
Queries.
有趣的是,我发现有些问题也出在goroutine无限制增长上——它们没有正确关闭,导致内存持续增长。
And interestingly, I think some of the issues that I found too are bugs with goroutines kind of growing unbounded where they don't properly close out and memory continues to grow because of it.
这些年来我们遇到过好几次这种情况。
We've had a few of those over the years.
我们在InfluxCore上确实多次遇到过这种情况。
We've definitely seen that, several times on the InfluxCore.
收到错误报告后我们一查,几乎每次都是这样——发现某个goroutine根本没有限制。
We've gotten bug reports, and it's almost always been one of those things where we get a bug report and we look and, oh, there's a go routine that was just unbounded.
我们从未真正考虑过要关闭它。
We never thought about actually shutting it down.
有趣的是,最近发现的一个案例是:一个HTTP处理器会启动一个goroutine,如果用户取消了请求我们会关闭这个goroutine,但如果请求正常完成却不会关闭。
It should have been one of them, interestingly enough, that was just caught was, an HTTP handler would launch a go routine, and we would close the go routine if somebody canceled the actual request, but not if the request finished.
这确实有点离谱。
So that was kinda crazy.
哦,不。
Oh, no.
哦,成功的代价啊。
Oh, the penalty for success.
确实如此。
Absolutely.
那么在你使用Go语言的这些年里,有没有遇到过HTTP路由器的问题?
So in your in your years of experience in Go, have you ever found a problem with HTTP routers?
我很好奇为什么Go语言里有这么多关于HTTP路由器性能测试的案例。
I'm curious as to why there is such a a preponderance of evidence on on HTTP router benchmarks in Go.
为什么人们要在意计算那个路径需要多少纳秒?
Why do people care how many nanoseconds it takes to to compute that path?
我得说
I've gotta put it
归根结底是炫耀的资本。
down to bragging rights.
这是我唯一能想到的原因。
That's the only thing I can think of.
我觉得这太疯狂了。
I think it's insanity.
那纳秒也很重要啊,老兄。
That nanosecond counts, man.
我认为开发者天生就是一群乐观主义者。
I think developers are by default an optimistic bunch.
我们总喜欢想当然,觉得这个端点会有超高访问量,或者我必须为此做好准备。
We always like to think, oh, we're going to get so many hits on this endpoint or I just need to prepare for that.
我知道这一定会发生。
I know it's gonna happen.
我认为不仅仅是开发者这样。
I don't think it's just developers.
我觉得这是人类的天性。
I think it's humans.
对吧?
Right?
就像堵车时非要超你车的那个人,就为了离目的地近一个车位的距离。
It's that guy in traffic who has to pass you so he's one car length closer to wherever he's going.
我是说,这本质上是一样的微观优化,对吧?
I mean, it's it's the same micro optimization, right?
你看着就觉得,哦,不过是一个车位的距离。
You look at it and you're like, oh, it's one car length.
好吧。
Alright.
所以有趣的Go项目。
So interesting Go projects.
布莱恩,你每晚都会下载一些Go项目。
Brian, you you kinda do your nightly download of Go projects.
我真不知道你哪来的时间做这些。
I have no clue how you have time for that.
但每天他都会发给我——我都数不清有多少。
But every day, he's sending me I don't even know how many.
我甚至整理不出他发给我的精选列表。
I can't even come come up with the curated list that he's, sent me.
他到底怎么筛选的,我完全搞不懂。
So how he how he curates it is beyond me.
不过你有什么有趣的项目要聊聊吗?
But do you have any, interesting projects to talk about?
让我想想看。
So let's see.
这周的有趣项目。
Interesting projects this week.
我认为最近频繁出现且最有趣的项目之一是GoMicro框架,网址是micro.mu。
I think one of the most interesting that's been surfacing quite a bit for me is the GoMicro framework, micro dot m u on the web.
我非常喜欢它的发展方向。
I really like the the direction that's going.
我喜欢这个框架的理念:微服务不是孤立构建的。
I like the idea that the whole framework is built with the idea that microservices aren't built in a vacuum.
所有重要工具都内置在平台中,然后可以根据你的具体选择进行插件式扩展。
It and all of the important tools are are built into the platform and then pluggable for your specific choices.
比如它在服务发现方面有自己的主张,同时提供选项可以接入不同的服务发现提供商。
So it's got opinions on service discovery and the options to plug into, different service discovery providers, for example.
所以我认为这是一个发展很快的平台。
So I think that's a platform that's that's going somewhere quickly.
那它与GoKit相比有什么不同?
Now how does that contrast to GoKit?
在我看来,GoKit是由许多独立有用且能协同工作的包组成的,适用于微服务领域。
The way I see GoKit is, GoKit being a lot of packages that are useful on their own and useful together for the microservices world.
我认为Micro作为单个包可能用处不大,但作为一组包则功能更强大。
I think micro is probably less useful as individual packages and more powerful as a a group of packages.
我可能对此理解有误,但这就是我的看法。
I could be wrong about that, but that's that's kind of the way I see it.
我不认为Micro的许多组件能独立使用。
I don't see using many of the components of Micro on their own standalone.
而使用GoKit时,可以非常轻松地只挑选其中一两个功能强大的组件,在特定项目中按需使用它们作为独立模块。
Whereas with GoKit, it's really easy to just pick out one or two pieces of GoKit that are strong and that you might need in a particular project and use them standalone.
嗯。
Yeah.
我简单看过micro框架,但还没机会上手实践。
I had briefly looked at micro, but I haven't had a chance to play with it yet.
所以沿着这个思路,微服务架构总体来说...
So kind of along those lines, microservices in general.
Corey,你们在Influx公司使用微服务架构吗?
Corey, are you guys using microservices at Influx?
还是你们通常保持更单一化的应用结构?
Or do you typically keep more monolithic applications?
是的。
Yeah.
这是个好问题。
That's a good question.
我们尽量保持单一化的代码仓库。
So we we try to keep monolithic repos.
可以这么说吧。
I guess that's one way to say it.
当然我们确实也有不少微服务,有很多不同的服务来处理数据的元信息层面和TSM引擎。
And then we do definitely do the microservices that we have a lot of different services that handle, the meta side of of the data, the TSM engines.
所以从微服务的角度来看,所有东西都运行得相当独立,这让测试变得非常容易,你可以想象。
So everything does run pretty pretty much from a microservice standpoint, makes it really easy for testing, as you can imagine.
我们确实通过接口将所有组件松散耦合。
Know, we do we bind everything loosely couple via interfaces.
因此测试所有功能简直轻而易举。
So testing everything is is a is a dream.
你们这些服务之间用什么进行通信?
What do you use for communication between those services?
是用RPC协议,还是标准的HTTP和JSON?
Are using RPC, or is this just standard HTTP, and JSON?
或者你们用
Or We use
多种方式的组合。
a combination of things.
实际上Protocol Buffers最近成了我们的首选方案,效果非常好。
ProtoBuff has actually been kind of our go to lately, and that's been working really, really well.
从编码角度看需要多做些工作,每次都要额外操作——把所有类型添加到proto定义文件里,再用GoGenerate编译成Go代码。
It's a little bit extra work from coding standpoints, of a little extra dance that you have to do every time to to add all the types to the the proto buff definitions and then compile it to go via GoGenerate.
但它的速度确实很快,而且最终处理完的基本上都是原生的Go代码。
But it's it's really fast, and it's all basically native Go code at the end of the day when you're done working with it.
JSON的话...我的意思是,在我们需要的工作速度下,它跟XML也没什么区别了。
JSON is just I mean, it might as well be XML at that point with the speed that we have to work at.
所以我们除非数据量非常非常小,否则根本不会使用JSON。
So we we just we just don't use JSON for anything unless it's really, really tiny.
你们是用gRPC还是单独使用ProtoBuff?
Are you using gRPC or are you using ProtoBuff separately?
其实我不太清楚。
I actually don't know.
我得去查一下。
I'd have to look.
ProtoBuff那部分不是我实现的。
I I didn't implement the ProtoBuff stuff.
我只是整天都在用它,所以不清楚他们最终选择了哪种方案。
I just get to use it all day long, so I don't know what they ended up on that side of the world.
不过我可以去查查看。
I could look, though, and find out.
这里往往存在争议。
There there's tends to be the argument.
对吧?
Right?
就像微服务也变成了一个流行词,每个人都想跟风,但其中也存在一些争论。
Like, microservices has become like a buzzword too, right, where everybody wants to to jump on it, and there's been kind of some debate there.
所以听听有多少人采用微服务架构,以及如何划分服务边界这类问题总是很有趣的。
So it's always interesting to hear how many people are taking the microservices approach and, you know, what's the delineation where where do you divide services and things like that.
所以我总是喜欢听听大家对服务拆分方式的见解。
So I always I always like to hear people's opinions on kinda how they they split things up.
我认为关键是要明白第一次(甚至第二第三次)很可能会做错。
I think the important part is to understand that you're gonna get it wrong the first time and probably the second time and maybe even the third time.
但最终总会找到正确的方式。
But eventually, you'll get it right.
这其实并不简单。
It's it's very it's not as simple.
人们总说微服务能解决所有问题。
People say, oh, microservices, and this is just gonna solve all your problems.
但实际上它仍然是一个非常复杂的生态系统。
But it's still, you know, quite a complicated ecosystem when it comes down to it.
而且需要很长时间才能真正理清所有组件如何协同工作。
And, it it takes a while to really sort it out how everything's gonna come together.
是啊。
Yeah.
这里存在很大的认知负担。
There's a lot of cognitive load there.
对吧?
Right?
哪些服务会被调用?然后你就要考虑分布式追踪——现在要怎么跟踪一个请求并找出其中发生的错误呢?
Which services get touched, and then you get into distributed tracing because now how do you how do you follow a given request and find errors that happened with it?
如果它调用了15个服务,那么每个服务的响应对于调试该请求都具有意义。
And if it reaches out to 15 services, the responses from each of those services have meaning in the debugging of of that request.
这永远是一种权衡。
And it's it's always a trade off.
对吧?
Right?
这有点像性能优化。
It's kind of like performance.
大多数情况下,如果你为了性能而优化代码,就会牺牲可读性。
Most of the time, if you're optimizing the code for performance, you're you're taking away readability.
总是很难决定在哪里做出这些取舍。
It's always hard to decide where where to make those decisions.
而且我认为根据你问的人不同,也会引发很多争论。
And I think you get a lot of arguments about it too based on who you ask.
回到GoKits和微服务框架这个话题,GoKits或者这个微框架是不是也提供了一种中间件方案,包含跨服务的日志记录和处理功能?
And going back to the GoKits and microservices framework in general, isn't it GoKits and maybe micro this microframe framework may also have a middle way a middleware that has logging, handling across services.
难道不是这样吗?
Isn't that correct?
是的。
Yeah.
GoKit有一个类似Dapp或Zipkin的层级,可以让你追踪跨服务不同层级的调用和请求。
GoKit has a, Dapp or Zipkin like layer that allows you to trace your calls, requests across the different layers of your services.
所有这些都非常重要。
All of that stuff is very important.
我听到有人说,如果你在单体应用中有复杂的逻辑,把它拆分成服务并不会让你的逻辑变得更好。
I hear people saying, well, if you have a convoluted logic in a monolithic, you breaking it up into services is not going to help you help your logic be better.
但我对此提出质疑。
But I challenge that.
我认为这会迫使你思考如何划分事物,而且你可能第一次也做不对。
I think it will force you to think about how you would divide things up, and you might not even get it right the first time.
但这会迫使你朝着那个方向前进,因为你必须这样做。
But it will force you in that direction because you have to.
但正如你们所说,拥有能帮助管理错误处理及微服务所需所有粘合工具是极其重要的。
And but it's super important, like you guys are saying, to have the tools that will help that you allow you to manage your error handling and all of the the glue that needs to come together with microservices.
我认为拆分为微服务也是一种过早优化的形式。
Well, I think that splitting up into microservices also is a form of premature optimization.
对吧?
Right?
这是有代价的。
There's penalties.
服务间存在网络延迟。
There's network latency between things.
在服务通信过程中会出现更多可能出错的环节。
There's more places where things can fail between the communication of things.
而且网络环境很不可靠。
And the network is weird.
对吧?
Right?
比如,我都数不清调试过多少次RPC类问题了,数据传过来时包序错乱之类的情况时有发生,你还得修复因此导致的系统卡死问题。
Like, I can't tell you how many times we've debugged RPC type issues where, just the data that came through, you get packets in reverse order and things like that, and you have to fix something that gets locked up because of it.
所以现在虽然有很多更成熟的工具来处理这类问题,但只要你没有真正需要解耦的理由,强行拆分仍然存在各种风险。
So there's there's a lot of there's a lot of tools that you can use nowadays that are a lot more solidified for doing these types of things, but there's still risk in everything like that and kind of having things bundled together, if you don't really have a need to pull it out.
我认为这个观点很有道理。
I think there's a lot of validity validity.
我都说不利索了。
I can't even talk.
微服务既是一种编码概念,同样也是一种社会和组织结构概念,这个观点很有道理。
There's a lot of validity to the idea that microservices are just as much of a social and structural concept as they are, coding concept.
围绕团队结构来设计微服务,可能比围绕人为设定的代码边界更重要。
And structuring your microservices around the teams might be more important than structuring them around specific code barriers that might be artificial.
确实如此。
Definitely.
好吧。
Alright.
看来我们已经深入讨论了不少关于微服务的话题。
So I think we chatted about microservices quite a bit here.
我们还有其他有趣的项目要分享吗?
Do we have, any interest other interesting projects?
Carlicia,我记得你提到过一款让你很兴奋的新文档工具,对吧?
I think, Carlicia, you were talking about a new doc tool that you were excited about, right?
是的。
Yeah.
这让我想起几周前我折腾编辑器的那段经历。
This is reminiscent of my editor hacking that happened a couple weeks ago.
我发现了一款新工具。
I found out about this new tool.
我觉得它应该是新出的。
I think it's new.
它只支持Go 1.6版本。
It's it only works with Go 1.6.
它叫GetDoc。
It's called GetDoc.
这是个CLI工具,不算特别令人兴奋。
It's a CLI tool, which is not super exciting.
我不想阅读大量文档。
I don't wanna be reading tons of documentation.
我的意思是,如果我在编辑器里工作,脱离上下文对我来说很困难。
I mean, it's just out of context for me if I'm working on my editor.
但它最棒的地方在于它集成了Atom和VimGO,而且我认为它们也为使用Emacs的用户集成到了Emacs里。
But the neat thing about it is that it's integrated into Atom and VimGO, and I think they are also integrated into Emacs for people who use that.
基本上,它允许你跳转到Word文档,并通过你设置的快捷键组合键来操作。
Basically, it allows you to just hop over to Word and press a combination of key that you can control via key by your key key binding.
然后文档会弹出显示诸如导入列表中的包、常量等信息。
And the documentation will pop up for things like package in the import list, a constant.
所以当你调用某个方法或字段时,它会显示该工具集成的文档。。
So it will give you the value of a constant, method calls, and struct fields.
所以文档就直接弹出来,就在那里,你按一下ESC键,它就消失了。
So the documentation just pops up, like, right there, and you press press escape, and it goes away.
对吧?
Right?
这真是太酷了。
That was super cool.
哦,那确实很酷。
Oh, that is cool.
好的。
Alright.
在我们继续和Corey讨论开源与社区话题之前,还有什么其他有趣的项目想聊聊吗?
We have any other interesting projects we wanna talk about before we move on to discussing all things open source and community with Corey here?
我还能列举30个,但我觉得在GoMicro里已经涵盖所有了。
I could give you 30 more, but I think we covered it all in GoMicro.
那我们继续吧?
So why don't we move on?
那好吧。
Alright then.
科里,现在轮到你来发言了。
Corey, you get you get a chance to talk here.
希望你喜欢发言。
I hope you like talking.
众所周知,我确实挺能说的。
I've been known to talk.
我想我们大家都看过你二月份在GopherCon印度大会上的演讲。
So I think all of us have happened to see your talk from GopherCon India in February.
对吧?
Right?
没错。
Yeah.
二月份。
February.
那场演讲太精彩了。
It was an amazing talk.
充满了激情。
It was so passionate.
我非常喜欢。
I loved it.
是啊。
Yeah.
所以我有几件事想和你聊聊。
So and there's a couple of things I kinda wanna talk to you about there.
但首先,我得问问关于骆驼的事。
But first, I have to ask you about the camels.
说真的,我有点嫉妒。
Like, seriously, I'm jealous.
你居然骑了骆驼。
You got to ride camels.
是的。
It was.
很棒。
It was great.
马克·贝茨是我的同事,他正好要去印度那边。
Mark Bates, who's one of my coworkers, he happened to be going to go for kind of India.
实际上,他加入了我们团队。
Actually, he joined the team.
我们之前都不知道对方要去。
We didn't know, like, we were both going.
所以这还挺酷的。
So that was pretty cool.
所以我们基本上全程都在那边到处跑。
So we were kind of running around the whole time out there.
骆驼真的就在沙漠正中央。
And the camels are literally in the middle of the desert.
他们会带你深入沙漠约三十分钟,你骑上骆驼后,绕行约二十英尺的圈子,然后下来。
They take you about thirty minutes out into the desert, And you basically get on, and you do about a twenty foot circle, then you get back off.
但你能拍到照片,这很重要。
But you get your picture, so that's important.
哦,那有点像中央公园的马车游览。
Oh, so that's kinda like the Central Park tour in the carriage.
对吧?
Right?
你付50美元,他们就带你绕街区转一圈。
They just kinda you pay your $50, and they take you around the block.
是啊。
Yeah.
但有趣的是,如果你从未骑过骆驼,上下骆驼的过程相当刺激。
But what's interesting, if you've never ridden a camel, getting up and getting down is is pretty crazy.
它们站起来其实挺轻松的,但你必须抓紧。
They basically they get up pretty easy, and you have to hang on.
但当它们跪下时,基本上就是直接跪倒在地。
But when they get down, they basically just drop completely down to their knees.
而且它们跪下的动作非常猛。
And when they drop, they drop hard.
所以如果你没抓紧,真的会被甩到骆驼前面去。
So if you're not hanging on, you're going to literally fly over the camel.
哦。
Oh.
我以前骑过单峰驼,但没骑过双峰驼。
I've ridden a dromedary before, but not a camel.
这两者是有区别的。
And there is a difference.
一个有两个驼峰,另一个只有一个。
One has two humps and the other one has one.
单峰驼比双峰驼更常见。
And the derma dairies are more common than camels.
我认为在中东或撒哈拉沙漠之外你很难看到很多骆驼。
I don't think you'll a lot of camels outside of the The Middle East or Saharan Deserts.
在《Go Time》节目里每天都能学到新东西。
You learn something every day on go time.
没错。
Right.
说得对。
That's right.
对吧?
Right?
我绝对不是动物专家。
I'm definitely not an animal expert.
所以在你的演讲中——我不确定是演讲还是访谈——但真正引起我注意的是,你说你已经有17年开发经验,但真正从事开源工作只有4年。
So so in in your talk, one of the things that actually caught my I I can't remember whether it was the talk or your interview, but one of the things that caught my my attention was that you had said that you had been developing for seventeen years, and it had only been four years that you've really done open source work.
我想听听你对这个问题的看法,因为我觉得这对很多人来说都是个重大转变,对吧?
And I kinda wanted get your your take on that because I think that's a big step for a lot of people, right?
总是会有那种把自己的代码公开的恐惧感。
There's always that fear of putting your code in the open.
我做开源开发已经不知道多少年了,但至今仍对公开自己的代码感到挣扎。
I've been doing open source development for I don't even know how many years now, and I still struggle with putting my code out in the open.
是的,一开始确实挺吓人的。
Yeah, it's pretty scary at first.
我甚至还为此写了一篇博客文章,我们之后可以附上链接。
And I even wrote a blog post on it that we can link at some point.
但是,基本上来说,开源代码在公开时确实很让人忐忑。
But, basically, open source code is really scary when you put it out there.
我的第一次经历是遇到一个我无法解决的bug。
And my first experience was I had a bug that I couldn't figure out what was going on.
当然,我去查了一下,发现是Go语言的一个问题,而且已经被关闭了。
And, of course, I look it up, and it's an issue with the Go language, and it was closed.
当然,是Dave Chaney关闭的。
Of course, it was closed by Dave Chaney.
展开剩余字幕(还有 479 条)
因为我和Dave Chaney认识,我就联系他说,嘿,Dave。
So me knowing Dave Chaney, I reached out and said, hey, Dave.
你知道的,我了解到你关闭了这个bug。
You know, I understand you closed this bug.
我现在遇到了这个问题。
I'm running into it.
我真的不知道解决方案是什么。
I really don't know what the solution is.
你能帮帮我吗?
Can you help me out?
他回答说,嗯,你能给我些背景信息吗?
And he's like, well, can you give me some context?
于是,我当然就把我在InfluxDB上的拉取请求链接发给了他。
So, of course, I give him the link to the pull request that I've got on InfluxDB.
那时候我才刚到InfluxDB大概两三个星期。
Now I've only been at InfluxDB for maybe two or three weeks at this point.
而且这是我第一次参与开源项目。
And it's my first experience in open source.
当然,按照开源项目的惯例,戴夫开始全面审查整个PR,而不是我实际关注的那个问题。
And of course, in good open source fashion, Dave just begins to review the entire PR, not the issue that I'm actually looking at.
这就像摇滚明星要求你当着他们的面唱他们最火的歌。
So it's kind of like a rock star asking you to sing like their biggest song in front of them.
那真是让人神经紧绷。
It was it was very nerve racking.
我当时非常害怕,但这经历很棒。
I was very scared, but it was great.
这是一次真正的学习经历。
It was a real learning experience.
然后你很快就会发现,根本没人关心你是不是编程界的摇滚明星。
And then you find out very quickly that nobody really cares if you're a rock star programmer or not.
大家只是想把你的代码推出去,而你会做些很蠢的事,有时人们也会说些很蠢的话——因为这就是开源。
Everybody's just trying to get your code out there And you're gonna do really dumb things, and people are gonna call you really dumb things sometimes because it's open source.
但你从中吸取教训。
But you just learn from it.
要知道,从开源中获得的每一条反馈都应以积极态度对待。
Everything's know, take a positive note from everything you learn in open source when everybody gives you feedback.
你做的这个类比很有意思。
So it's interesting you make that analogy.
对吧?
Right?
因为你也想到了卡拉OK。
Because you think about it like karaoke too.
对吧?
Right?
尽管上台唱就是了。
Just get out there and sing.
无论如何都很有趣。
It's fun no matter what.
对吧?
Right?
没错。
Exactly.
确实如此。
Exactly.
玩得开心。
Have a good time.
这没关系。
And it's okay.
你肯定会搞砸的。
You're gonna screw up.
相信我,你会做些非常蠢的事,会遇到报错的bug,然后你会看着它们想,哇。
And believe me, you're gonna do some really dumb things, and you're gonna get bugs logged, and you're gonna look and you're like, wow.
那真是太蠢了。
That was really stupid.
我真不敢相信我做了那种事。
I cannot believe I did that.
你知道吗?
You know?
比如,破坏集群并发布它,却没人知道实际上已经失去共识了。
Like, break the cluster and release it, and nobody knows that you actually don't have consensus anymore.
我是说,我可从没干过这种事。
I mean, I've never done that.
我也没有。
Neither have I.
对。
Right.
对。
Right.
我...是啊。
I yeah.
我从来没有因为犯蠢而提交过导致系统崩溃的愚蠢bug。
I've I've never committed a stupid bug that brought down any systems because of something dumb.
从来没有。
Never.
完全正确。
Totally right.
从不需要去RPR。
Never had to go to RPR.
从来没有。
Never.
我桌上有个巨大的回滚按钮。
There's a giant rollback button on my desk.
你知道,其他人都有轻松按钮。
You know, everybody else has the easy button.
而我有个回滚按钮。
I've got the rollback button.
我觉得,GitHub现在有个功能可以让你轻松回滚。
I think, GitHub now has a feature for you to rollback easily.
我认为他们以前没有这个功能。
I don't think they had it before.
以前你得手动回滚,反正我都是这么做的。
You had to roll back things manually, which is what I would do anyway.
嗯,用git的话,有git revert命令,可以创建一个提交来反转你想回滚的任何提交。
Well, with git, there's the git revert, which allows you to create a commit that basically inverts your whatever commit that you're trying to revert.
但我觉得GitHub放了个按钮在那里自动完成这个操作,如果我没记错的话。
But I think GitHub put a button there that does that automagically, if I'm not mistaken.
我更喜欢用命令行。
I'm more of a command line junkie.
不过确实,能直接上网站然后...嗯...
But yeah, can see how the just being able to go to the website and Yeah.
点个按钮就搞定确实超级、超级方便。
Click the button becomes super, super useful.
是啊。
Yeah.
就Git而言,我不信任任何UI工具。
I don't as far as Git goes, I don't trust any any UI tool.
我要亲自动手操作。
I wanna do it.
我要在命令行里亲眼看到。
I wanna see it on the command line.
如果命令行里没显示,我就不知道是否真的执行了。
If it didn't happen there, I don't know if it happened.
所以我必须亲眼确认。
So I wanna see it.
对我来说Git就像一把多功能瑞士军刀,上面全是按钮。
Git for me is a Swiss army knife that has all these buttons on it.
每次按下按钮,我都会把自己捅伤。
And when you press it, I stab myself every single time.
所以我经常告诉人们的是,如果你学会使用引用日志(reflog),你会对Git感到安全得多。
So the thing I tell people all the time is if you learn to use the the ref log, the reference log, you you feel much safer with Git.
因为你会觉得,哦,这没关系。
Because you're like, oh, it doesn't matter.
只要我提交过,就完全能修复。
If I committed it, I can totally fix it.
但你说到了关键——前提是你提交过。
But you said the magic words, if you committed it.
如果没提交,那就真的没救了。
If you don't, it doesn't really matter.
但令人惊讶的是,居然有这么多人不知道这个功能存在,它真的能改变人生。
But it is amazing how many people don't even know that that exists, and it's a life changing thing.
是啊。
Yeah.
如果你还没玩过引用日志(reflog),你真该试试。
If you have not played with the ref blog, you should.
对我来说非常简单。
Gets really simple for me.
你只需要删除目录然后重新克隆。
You just delete the directory and clone again.
不行。
No.
别那么做。
Don't do that.
这就是你需要做的全部。
That's all you need to do.
rm -rf 我的仓库,git clone 我的仓库。
R m dash r f my repo, git clone my repo.
搞定。
Fixed.
我们会把这段剪掉的。
We'll we'll edit that out.
是啊。
Yeah.
没错。
Yeah.
千万别那么做
Do do not
别听布莱恩的建议。
take Brian's advice there.
各位,不是这个。
Not this one, people.
那么回到开源贡献的话题上来。
So back kinda to the, open source contributions too.
我还想指出另一个事实,我认为人们不仅应该参与贡献,更应该深入代码中探索。因为你会发现,对于任何知名项目,你想象中的代码与现实相去甚远。当你开始钻研时,会找到自己能理解的部分。
I I wanted to kinda point out another fact too is I I think that people not only should contribute, but go in and dig around the code because I think people will find that the their vision of the code for any, you know, big name project is far from the reality, that they're gonna start digging around and they're gonna find their own words.
无论他们的技能水平如何,他们都会发现一些甚至自己都觉得糟糕的代码。
Regardless of their skill level, they're going to find code that they even think is bad.
我认为归根结底,就像我们这期节目前面讨论过的,有时候问题就在于交付。
And I think at the end of the day, kind of how we talked about earlier in the episode, is sometimes it comes down to delivering.
你必须修复一个漏洞,但可能没时间实现最佳解决方案。
You you have to fix a bug, and you may not have time to implement the best solution.
特别是科里提到的观点,有时候项目上的人手也很有限。
And especially to your point, Corey, there's there's a limited number of people working on the project sometimes too.
对吧?
Right?
所以在你演讲中,你提倡的是‘能帮就帮’这种理念。
So in in in your talk, you kind of advocate that, like help wherever you can.
也许你对某个问题没有最佳解决方案,但这个问题正在被解决,而核心团队成员可能根本没时间处理它。
And maybe you don't have the best solution for a problem, but it's a problem that's getting solved that maybe won't get solved because the core members of the team just don't have time to work on it.
是的。
Yeah.
我非常支持‘求帮助’这种做法。
I'm a big fan of, of help wanted.
我前几天刚建了一个仓库,专门收集那些在Go开源项目中标记有'需要帮助'的实际问题。
I just started a repo the other day, on Go open source projects that have, the actual issues labeled with help wanted.
这样你就可以快速找到这些问题,并明确知道他们需要哪些帮助。
And so you can go in and find these issues and very quickly and figure out where they need help.
对我来说更重要的是,这么做并不是因为我想帮助所有这些开源项目。
And the more important thing for me on that one wasn't because I wanted to help all these open source projects.
这实际上并非我的初衷。
That actually wasn't my intention.
因为人们总是问我,我该如何开始参与?
It was because people are always asking me, how can I get started and go?
我就说,其实有很多项目都在寻求帮助。
And I'm like, well, there's all these projects out there that need help wanted.
我们只需要整理出一份这样的项目清单。
Like, we just need to get a list of them going.
所以我认为现在能看到这种现象真的很棒,希望人们能开始传播这个概念并推广出去。
And so I think that that's a really cool thing to see out there now and hoping that people will start spreading the word on that and getting that out.
但我认为这很棒。
But I think that's great.
是啊。
Yeah.
我看到你开始整理一个代码库了。
I saw you started putting together a repo.
就是那个吗?
Was that it?
我忘了。
I forgot.
是的。
Yes.
是一个代码库。
It was a repo.
一定要把链接放在节目笔记里。
A link to that on the show notes for sure.
详细说说这个吧。
So tell us more about that.
是的。
Yeah.
简单来说,这源于我在芝加哥组织的一个聚会,当时我没能到场。
I mean, basically, it spawned off of a meetup that I was doing in Chicago, and I couldn't make it down there.
主办方那边,我们错过了一个月,需要重新安排,但没时间找演讲嘉宾了。
And the host, we kind of just we were we missed a month and we had to get back on track and we didn't have time to really get speakers lined up.
当时距离活动只剩一周。
And so it was like a week before we were going to have it.
他有点紧张。
And he was kind of a little nervous.
他说:'我们一个演讲者都没有。'
And he was like, hey, we don't have any speakers.
我就说:'好吧,那我们就办个编程之夜吧。'
I'm like, well, okay, we should have a hack night.
但是,要知道,仅仅举办一个普通的编程之夜并不能给你太多方向性指导。
But, know, just having a general hack night, it doesn't really give you much direction.
所以我想,嗯,外面有很多需要帮助的项目,现场会有很多Go语言开发者,也会有一些Go语言新手。
And so I thought, well, there's a lot of projects out there that need help wanted, and there's gonna be a lot of go people there, and there's gonna be some people new to Go.
我们不妨列个清单让大家自由选择。
Let's just get a list of things to pick and choose from.
这个想法大概就是这么来的。
And that's kind of where this idea came from.
这确实与我参与的许多社区活动密切相关,比如我负责的Go语言入门教程之类的工作。
And it really goes hand in hand with a lot of the community stuff I go where I'm doing the intro to Go and stuff like that.
人们真的很想知道如何参与贡献,因为'Hello World'程序、完成教程这些虽然不错,但'我真的学到东西了吗?'
And people really wanna know how how can I contribute because, you know, the Hello World programs, taking the tour, these are all fine and dandy, but I'm not learning anything?
我不知道如何解决现实世界中的问题。
I don't know how to solve a real world problem.
我不清楚一个真实的代码库应该是什么样子,也不知道该如何着手。
I don't know what a code base is really going to look like and how I should do it.
参与这些开源项目,即便是非常小的需求帮助,也能让初学者逐渐领悟:哦,原来大型项目是这样组织的。
And contributing to these open source projects, even on the really small help wanted, really start to give you a sense as a beginner and go like, Oh, this is how a bigger project is going to be organized.
大型项目会以这样的方式期待我的贡献。
This is how a bigger project is gonna expect me to contribute.
到那时,你应该学习的内容已经远不止Go语言本身了。
And you should learn things beyond even just Go at that point.
你会学到整个流程,比如提交拉取请求、参与代码评审这类事情。
You'll learn just the process of, like, doing the the pull request and doing a a review process and and that kind of stuff.
这确实是段非常棒的经历。
So it's it's just a great experience.
我认为这个想法非常好,因为当你被迫解决问题时,必须深入钻研、学习代码库,这意味着你也会更深入理解Go语言。
I think it's actually a really good idea because when you're when you're forced to solve a problem, you have to dig around and you have to learn the code base, which means you have to understand more Go too.
对吧?
Right?
更重要的是,当你提交拉取请求时,会有其他人审查你的新Go代码,这样大家就能帮你完善代码。
So and then on top of that, when you submit your pull request, you have other people reviewing your new Go code so you can have people help shape you.
因为我发现Go语言的一个特点是,掌握这门语言本身是相对容易的部分。
Because one of the things that I find with Go is picking up the language is the easy part.
但学会写出地道的Go代码则是另一回事了。
Learning to write idiomatic Go is a totally different story.
所以如果你提交拉取请求,就会有人自动帮你检查这些方面。
So if you're submitting pull requests, then you have people automatically looking at those things.
而且我认为需要说明的是,技能水平并不重要。
And I think that it should be said too that skill level doesn't matter.
对吧?
Right?
只要参与进去,即使你的补丁没被采纳,在这个过程中你也能学到很多。
Just getting in there, and even if your patch doesn't get accepted, you're going to learn a lot along the way.
现在让我向你们提个问题,因为你们都用Go语言很久了。
Now let me throw something at you guys, because you've been doing Go forever, all of you.
而我完全是个新手。
And I'm a newcomer totally.
于是我会去下载InfluxDB的源代码到我的电脑上。
So I would go to InfluxDB source code, download it to my computer.
说实话,我要为你们所有人点赞,因为我居然能成功安装它,在我的机器上运行起来,还能读懂这么庞大项目的文档。
And actually, kudos to all of you because I was able to install it, get it running on my machine, reading the documentation for such a big project.
我觉得这简直太棒了。
I thought that was amazing.
我对此印象非常深刻。
I was very impressed.
不过话说回来。
But anyway.
我会四处阅读代码,但完全看不懂。
So I would go around and read the code and not understand it.
我的意思是,我编程也有段时间了,但这种情况真的让我很崩溃——完全搞不懂这段代码在做什么。
I mean, I've been programming for a while and it would just kill me that, okay, don't know what this is doing.
然后我就会想,好吧,还是找个更简单的代码库开始吧。
And then I'll go to, Okay, let me go to a simpler codebase.
于是我转向更简单的代码库,却依然没能真正理解。
And so I'll go to simpler codebase and still not really get it.
可能我就是比较笨吧。
And maybe I'm just dumb.
但过了一段时间,当我真正开始编码后,我终于明白了。
But after a while, I did get it, after I actually started coding.
但我想说的是,很多时候人们会说'直接看代码就能懂'。
But my point is, a lot of times you say, Just read the code and you understand it.
而我当时看了代码却完全不明白。
And I was reading the code and I was not understanding it.
我甚至查阅了标注为'初学者'的问题,还是无法理解。
And I was looking up issues that had the label beginner and I was not understanding it.
我当时就想,天啊,也许这确实很难。
And I was like, Oh my gosh, maybe this is hard.
为什么我不能立刻掌握呢?
Why am I not just immediately getting it?
因为当你说'读代码就能懂'时,我的理解是我必须立刻就能懂。
Because when you say read the code and you're going to get it, my impression is I need to get it immediately.
如果做不到,要么是我太笨,要么是这代码太难。
If not, either I'm dumb or this code is hard.
这并不像人们说的那么容易。
It's not as easy as people are saying.
所以我
So I
认为有些人天生就更擅长理解代码。
think that peep some people will be more natural at figuring it out.
我觉得这更多是领域知识的问题。
And I think it's just more a matter of domain knowledge.
对吧?
Right?
所以你需要从技术角度理解事物,同时也需要掌握领域知识。
So you have understanding something from a technical perspective, and you also have the understanding of domain knowledge.
如果你对InfluxDB知之甚少,理解代码会困难得多,因为你得同时掌握代码结构、编程语言以及整个系统的领域知识。
If if you know very little about, say, InfluxDB, it's gonna be a lot harder to follow the code because you're trying to pick up the code and the organization of it, the language, as well as the domain knowledge of the system as a whole all at one time.
所以我认为,没必要因为理解速度慢就自责。
So I think it's not worth beating yourself up over that it it's not quick to discover.
而且我记得我尝试过一些看似初级的Go语言任务,结果发现并不简单,最后我也放弃了。
And I think I've I've attacked some some beginner Go tasks that didn't turn out to be so beginner, and I I abandoned as well.
我...我从来没有过这样的经历,比如直接去看像GoRaF库这样的源代码。
I I don't think there's ever been a time that I've gone into source code, like, you know, the GoRaF library.
对吧?
Right?
那可是HashCorp写的一套相当复杂的代码。
Like, that's a pretty sophisticated piece of code that HashCorp wrote.
我第一次看的时候还想,哦这是用Go写的。
And I first time I went in there, I'm like, oh, it's written in Go.
我应该能看懂才对。
I should be able to understand this.
我进去一看,哇,可能我对Go语言根本一无所知。
And I pretty much got in there like, wow, maybe I don't know anything about Go at all.
所以这是很常见的情况。
So this is a common thing.
因此我认为在告诉别人'去读源代码'时,我们确实应该提醒他们。
So I think we definitely should caveat when we tell people, hey, go read the source code.
代码就在那里,你会理解的。
It's out there and you'll understand it.
这绝对和领域知识有关。
It is is definitely about the domain knowledge.
只是需要一点时间。
It just takes a little while.
当然,我理解所有语法对我来说都很清晰,也明白它的功能。
Sure, I understand all the syntax that makes sense to me, but I understand what it does.
而这只需要在那里多花些时间。
And that's just a matter of spending time in there.
我通常的做法是,不再一开始就直接看源代码。
And what I typically try to do is I stopped going to the source code first.
我开始先查阅Go文档,因为这能让我对该库的API架构有个整体了解。
I started going to the Go docs first because that gives me the the kind of the overview of the API that that library is going to have.
这样我就能逐渐理解代码是如何组织起来的。
And that starts to give me a sense of how it's going to be stitched together.
之后当我再阅读代码时,理解起来就会顺畅很多。
And then from there, once I read the code, it tends to make more sense.
不过重申一下,这需要领域知识积累——Go文档能让你快速掌握,而直接读代码则见效很慢。
But again, that's getting that domain knowledge, but you get it really fast from the go docs, but you don't get that very fast when you're reading the code.
也可以和项目成员交个朋友。
Become buddies with a project member too.
让他们兴奋起来。
Get them all excited.
请他们喝杯啤酒。
Buy them a beer.
来,跟我说说
Say, talk to me.
整天在Slack上和他们见面
Meet them on Slack all the time, all day long.
经常有很多人随机在Slack上联系我讨论Influx
I get a ton of people that reach out to me on Slack for influx randomly.
比如,我完全不知道这些人是谁,他们就说'嗨'
Like, I have no idea who these people are, and they're like, hey.
我正在帮你解决这个bug
I'm working on this bug for you.
你能帮帮我吗?
Like, can you help me?
当然可以
Like, sure.
你需要什么?
What do you need?
说到这个,我最近刚发现Gopher Slack上有个代码审查频道。
Speaking of which, which there is a reviews channel on on the gopher Slack, which I just discovered recently.
不知道你们是否都知情。
I don't know if all of you are aware.
我是说,那里面的讨论相当活跃。
I wonder I mean, there is a lot of action in there.
我在想大家是否知道这个频道。
I wonder if know that.
这是个
It's a it's
非常繁忙的频道。
very busy channel.
是啊。
Yeah.
我在想人们是否善加利用这个频道,是否能获得有价值的反馈。
I wonder if people make good use of it, if people get good feedback.
所以我开始关注它了。
So I started keeping track of it.
所以这只是有人开的一个频道,让大家可以提交拉取请求之类的,然后让有空闲时间的人帮忙审核?
So this is just a channel somebody opened up for people to post pull requests and things and just get anybody who has has some spare cycles to review for them?
对。
Yeah.
甚至不一定是拉取请求。
Not even necessarily pull requests.
任何代码都可以。
Just any codes.
就是审核这些代码。
Just review these codes.
这太棒了。
That's awesome.
是啊。
Yeah.
我还没看到那个呢。
I haven't even seen that yet.
嗯,Gopher总是充满惊喜。
Well, Gopher's lack full of surprises.
所以,Corey,你说你还有大把空闲时间对吧?
So so, Corey, you said you have a whole bunch of free time still.
对吗?
Right?
是的。
Yes.
绝对有。
Absolutely.
所有东西都审一遍。
Review all the things.
我会每晚午夜开始做这件事。
I'll I'll start doing that midnight every night.
我们会期待你很快出现在代码审查频道里。
We'll we'll expect you to expect to see you in the reviews channel shortly.
我刚加入。
I just joined.
正在修复所有代码。
Fixing all the code.
不。
No.
实际上这是个很棒的频道,我已经在那里花了不少时间,因为我总想确保自己的操作是正确的。
Actually, it's a great channel, and I've I've spent quite a bit of time in there because I always wanna make sure I'm doing things the right way.
所以这是个值得待的好地方。
So it's it's a good place to be.
顺便提醒不了解情况的人,我们说的是Gophers Slack平台,网址是gophers.slack.com。
And for anybody who's not in not aware, we're referring to the Gophers Slack, which is gophers.slack.com.
可以通过Roku应用发送邀请。
There's a Roku app for doing the invite.
我们会在节目备注里附上链接。
We'll link to in the show notes.
这就是我们所指的内容。
So that's what we're referring to.
我想我们假设因为那里有大约6000人,所以大家都知道这个Slack频道,但这个假设可能有误。
I think we assume because there's, like, 6,000 people in there that everybody knows about the Slack channel, but that's probably a flawed assumption.
你提到这个假设很有意思,因为我在大多数城市都会做一件事——维护一份针对该城市的文档,里面列出了所有在线资源,比如Slack、Go论坛等等。
So it's interesting you make the the comment about assuming it's something I've been doing in most of the cities I'm in as I maintain a document specific to the city, which provides all of the online resources like Slack and Go Forums and all that kind of stuff.
这份文档还包含所有本地信息,比如本地聚会、发布的Go相关职位,基本上就是针对该地区人群的所有本地资源。
And it also provides information on everything local, all your local meetups, all your local jobs that are being posted for Go, basically anything local to that demographic.
因为我经常发现,甚至在聚会上,比如在芝加哥聚会时,人们会说'哦,芝加哥有个Go的Slack'。
And because I find all the time, even at the meetup, I'll be at a Chicago meetup and they'll be like, oh, there's a Slack for, you know, Chicago go.
我就会说'是啊,有个大型Slack,还有个大型芝加哥技术Slack'之类的。
And I'm like, yeah, there's a big Slack and there's a big Chicago technology Slack and and all these things.
所以我现在不再假设人们知道所有存在的资源了。
So I I don't assume any more that anybody knows everything that exists.
所以我发现为聚会保留那份文档帮助很大。
So keeping that document I I found for the meetups helps a lot.
布莱恩和我在2015年GopherCon结束一个月后,基本上是一家大公司发邮件联系我们,想赞助会议。
Brian and I, after it was, what, a month after GopherCon two thousand fifteen, it was basically a big name company, emailed us about the conference and wanting to sponsor.
我们当时就想,会议都结束了。
And we're like, it's over.
他们甚至根本不知道有这回事。
Like, they they didn't even know.
我们原本假设Go圈子里的人都知道这个会议。
We we had made the assumption that everybody kind of in the go world knew about the conference.
是啊,我们感觉彼此联系紧密,但要知道世界比我们看到的广阔得多。
And, yeah, it's we feel connected, but, you know, the the world is much bigger than we see.
是啊。
Yeah.
你怎么可能不知道这个会议呢?
How could you not know about the conference?
我们在推特上整天都在讨论这个。
It's all we talked about on Twitter.
拜托。
Come on.
你只需要在推特上关注我们中的任何一个人。
All you had to do was follow one of us on Twitter.
没错。
Right.
并不是所有人都会那样做。
Everybody doesn't do that.
而且还得刚好在线。
And happen to be online.
你懂吗?
You know?
当我们发推的时候。
When we're tweeting.
没错。
Exactly.
所以说到社区努力和你的演讲,Corey,你演讲的主要焦点就是关于社区和让人们参与进来,倡导人们在力所能及的地方提供帮助,而且他们不需要成为专家。
So kinda speaking of the community efforts and your talk, Corey, that was kind of the primary focus of your talk was community and getting people engaged and, advocating that people help where they can and that they don't need to be an expert.
而且,你知道,我们也很想和你聊聊这个话题。
And, you know, and we'd love to chat with you a bit about that as well.
我能打断一下吗,Eric?
Can I interrupt, Eric?
我想指出,Cory在'说到做到'方面做得很好,尤其是在力所能及的地方提供帮助这方面。
I'd like to point out that Cory walks the walk when it comes to helping out where you can.
当我们决定要办GopherCon的时候,你知道,他并没有要求提交投票请求。
When we decided that we were gonna do GopherCon, you know, he didn't ask to contribute poll requests.
他问我们是否可以由他来托管一些东西。
He asked if he could host things for us.
他问我们是否可以把所有的Gopher玩偶提前寄到他那里。
He asked if it would be okay if we shipped all of our Gophers there early.
要知道,社区建设不仅仅关乎软件。
You know, a lot of of community building isn't just software.
即使是软件社区,也涉及组织聚会、准备披萨、寻找聚会场地这些事。
Even if it's a software community, it's it's about organizing those meetups, getting pizza, finding a place to hold the the meetup.
还包括协助会议组织者筹备活动,比如组织预热派对,召集一群人帮忙在活动前装袋。
It's about, you know, helping the conference organizers do the things, you know, organizing the pre party, getting together a group of people to help stuff the bags before the show.
我是说,作为个人志愿者,你能为活动或项目做很多不涉及编写代码的事情。
I mean, there's there's so much that you can do as a person to volunteer for an event or help a project that isn't really writing code.
你可以编写文档。
You can write documentation.
你可以帮忙宣传有趣的项目。
You can help spread the word about an interesting project.
而科里在我看来,在践行支持项目和社区这方面,你绝对是互联网上最顶尖的那批人之一。
And and Corey, in my mind, you don't gotta be one of the top guys on the whole Internet in terms of walking the walk in in helping out projects and communities like that.
我都不知道该说什么好了。
I'm not even sure what to say to that.
对我来说,这纯粹是一种荣幸。
For me, it was just it was a privilege.
真的,这就是我的真实感受。
I mean, that's really what it was for me.
我看着所有这些事情。
I look at all that kind of stuff.
任何时候能帮上忙,我认为都是一种荣幸。
Anytime you can help out, I think that's a privilege.
所以能参与其中是我的荣幸。
And so I was it was my honor to do it.
看到这样的活动成功举办超级令人兴奋,你知道,这需要付出巨大努力。
And it was super exciting to see an event like that come off, and, you know, it takes a ton of effort.
能参与其中真的很神奇,我再次强调,这绝对是种荣幸。
And so being part of that was magical, and I was, you know, again, definitely a privilege.
那你建议人们如何参与进来呢?
So how would you recommend people get involved?
正如我常对人们说的那样——我在印度和迪拜的演讲中也重点强调过这一点——很多人首先想到的是要参与本地社区。
So what I always tell people and and, again, I I covered this, I hope, really heavily in my presentation, in India and Dubai is a lot of people think of one, they wanna get involved in a local community.
但主要问题是目前很多地区还没有本地社区。
The big problem is there's not a local community for a lot of areas yet.
Go语言仍属于一种新兴语言。
Go is still kind of an up and coming language.
在我展示的一张图表中可以看到,全球范围内我们的线下聚会规模大约只有Java或Rails社区的八分之一。
And in one of the charts I show, we're we're about an eighth of the size of, like, the Java or the Rails community in terms of meetups, right, worldwide.
所以我们真正需要的是更多线下聚会。
So what we really need is we need we need more meetups.
这才是我们最需要的。
That's really what we need.
但大家总是第一时间认为:'哦,我们需要组织者'。
And everybody always immediately thinks, oh, we need an organizer.
觉得这才是关键。
That's what we need.
好的。
Okay.
这很棒。
And that's great.
别误会我的意思。
Don't get me wrong.
我们需要组织者。
We need the organizer.
但和组织者同样重要的是,我们需要场地提供方。
But really, as importantly as the organizers is we need that host.
我们需要赞助方。
We need that sponsor.
对吧?
Right?
因此让这些人站出来非常非常重要,因为通常如果你能找到场地提供方,就能找到赞助方,然后就能找到组织者。
And so that's really, really important to get those people to step up because typically, if you can find somebody to host it, then you can find somebody to sponsor it, then you can find somebody to organize it.
正是所有这些环节共同作用。
And it's all these pieces that come together.
我想在这里强调一件非常重要的事情。
And I want to stress one really important thing here.
当你组建一个聚会时,你不需要对所有那些负责。
You don't have to be responsible when you form a meetup for all of those.
那不是你的工作。
That's not your job.
你的工作是找到能帮助你的人。
Your job is to find people to help you.
这是一个社区,对吧?
It's a community, right?
所以确保你尽可能早地获得所有能得到的帮助。
So make sure you enlist all the help you can as soon as you can get help.
人们是愿意帮助你的。
People want to help you.
如果他们只认为自己负责其中一部分,他们就会去做。
And if they just think they're doing one piece, they do it.
但如果你把所有这些责任都压在一个人的身上,让他们觉得自己既要当组织者,又要找赞助商和场地,那会非常令人望而却步。
But if you if you put all that onus on one person, if they think that they've got to be the organizer, find the sponsor, find the host, it's very daunting.
所以我认为这就是为什么很多人不会立即参与进来的原因。
And so that I think that's why a lot of people don't get involved right away.
你指出这点很有意思,举个例子,我们创办GoTampa就是因为当地没有聚会小组。
So interesting that you point that out, just kind of as an example, we started GoTampa, because we didn't have a local meetup group.
我们最初只组织了一两次活动,后来就忙不过来了——就像你科里一样,我们总爱揽下超出能力范围的事。
And we put together it was either one or two, and then we got slammed because just like you, Corey, we we love to put more on our plate than we can handle.
所以后来我们实际上就没再组织聚会了。
So, we hadn't really been doing meetups anymore.
不过那时候,本地已经有些人表现出兴趣。
But by that time, there was some interest locally.
于是当时在本地的亚伦·格林利就主动接手了这个事情。
So Aaron Greenlee, who was here locally in the market, kinda just took that on.
现在,我的意思是,他就是GoTampa存在的原因,因为他负责组织所有聚会,寻找场地等等。
And now, I mean, he's the reason there's a GoTampa now because he organizes all the meetups, he finds the locations and stuff.
所以有时候,只要有人带头行动,事情就会自然而然地发展起来。
So sometimes just being the person to start the action, it kind of grows on its own.
寻求帮助非常重要。
Reaching out for help is very important.
我向所有人提出一个挑战:如果你有兴趣或有这个想法,就大胆寻求帮助,如果这正是阻碍你的原因。
And I put out a challenge to everybody if you are interested or have this thought, just reach out and ask for help if that's what's keeping you.
因为科里肯定有很多时间,他会帮你的。
Because Corey, for sure, he has ton of time and he will help you.
我也会帮忙。
And I'll help.
我会帮忙的。
I'll help.
他绝对会
He will definitely And
我想举个例子。
I wanted to cite an example.
我在圣地亚哥北郡创办了Gopher技术交流会,当时市中心已经有一个了。
I started the Gopher San Diego meetup in the North County Of San Diego, and there was one in downtown.
后来很自然地,我们聚成了一个小组,而且我的公司很支持,所以我得到了这种支持。
And what happened just organically was that we came together as a group and my company is supportive, so I get that support.
于是我们聚在一起互相帮助。
So we came together as a group and we help each other out.
他们原本是每月举办一次活动。
So they were doing it every month.
当我加入并开始组织自己的活动时,有几个人提议:'你觉得你主办一个月,我们下个月主办怎么样?'
And when I came in and started doing mine, I had a couple, they were like, Hey, what do you think of you hosting one month and we hosted the next month?
这样就减轻了很多压力,因为我觉得他们当时可能觉得'这对我们来说负担太重了'。
So that took a lot of the pressure because I think they were feeling, Okay, this has been too much for us.
所以我们现在就是这样运作的,因为这对团队最有利。
So that's how we're doing it right now because it's best for the group.
所以我们本质上是一个团体。
So we are basically one group.
我们分摊工作。
We spread the work.
我们把聚会间隔两个月举办,这样我就不用每次都主持。
We spread the meetups over two months so I don't have to host one.
我只需要每两个月组织一次。
I only do it every two months.
所以大家聚在一起就能想出办法。
So people come together and you figure things out.
但如果你不开始行动,就永远不知道会得到什么帮助。
But you if you don't get started, you're not gonna find out what kind of help you're gonna get.
我们已经讨论了聚会,但还有你演讲中的战斗口号——需要更多博客文章。
So we've covered meetups, but we also have your battle cry from your talk, which was more blog posts.
我想我们还可以再补充两点。
And I think that we we have two more that we can add to that.
更多播客和更多会议
More podcasts and more conferences.
我认为这也是个方向,当Brian和我在Changelog上发言时——这里要厚脸皮地插一句,这档节目其实是他们制作的
And I think that that's somewhere too, when Brian and I spoke on the changelog, which shameful plug here, they actually produced this show.
所以要感谢他们让我们有机会上节目
So kudos to them for for letting us get on
a
a
麦克风
mic.
但我们在那里发言时,也一直在倡导举办更多会议
But when we when we spoke on there, we were advocating too for more conferences.
我们至今仍没看到太多区域性会议出现
There's we still haven't seen a lot of regionals pop up.
我们看到一些国际性会议开始兴起,但区域性会议还是寥寥无几
We've we've seen some internationals kind of pop up, and we have a couple of regionals.
我们有Gotham Go大会,还有旧金山的Gopher Fest大会。
We've got the, Gotham Go, and then we have the, Gopher Fest in San Francisco.
但除此之外,我们还没看到太多区域性会议涌现,我真的很期待能有更多区域性活动出现。
But aside from that, we haven't seen a lot of regionals pop up, and I'd I'd love to see more regionals come.
我个人非常想在中西部办一场会议。
Well, I, for one, would love to do a Midwest conference.
我很想在芝加哥或明尼阿波利斯举办活动。
I would love to do something either in Chicago or Minneapolis.
实际上我最近在明尼阿波利斯参与了不少工作。
I've actually gotten pretty involved in Minneapolis recently.
你知道,芝加哥是个很棒的城市。
And, you know, Chicago is a great city.
它规模很大。
It's huge.
所以显然我们很容易就能找到主办场地。
And so, obviously, we'd an easy host.
但我必须说,明尼阿波利斯的科技圈非常出色。
But I gotta say, Minneapolis has an amazing tech scene up there.
我对那里的发展印象深刻。
And I'm very impressed with what's going up there.
我很想在明尼阿波利斯筹办一场GopherCon大会。
And I would love to put together a GopherCon in Minneapolis.
所以如果有谁希望促成这件事,请告诉我,我们会尽力推动。
So anybody who wants that to happen, let me know, and we'll see what we can do.
是啊。
Yeah.
布莱恩和我很乐意为想创办会议的人提供我们一路积累的经验建议。
Brian and I are happy to offer advice that we've learned along the way too for anybody who wants to start a conference.
这其中确实存在更多风险,因为通常涉及财务责任和大额合同之类的事情。
There's a little bit more, risk involved there just because there tends to be some financial obligations and some big contracts and stuff.
但希望我们能分享些经验,减轻那些有兴趣创办会议的人们的负担。
But hopefully, we can share some knowledge to lessen that burden on people who are interested in in getting those things started as well.
是啊。
Yeah.
完全同意。
Absolutely.
我们大概已经和世界各地的人进行了四、五次关于在他们地区创办会议的讨论。
We've we've probably done, what, four or five calls with people across the world about starting a conference in their area.
别害怕寻求帮助。
And don't be afraid to reach out and ask for help.
我们最热衷的事情莫过于传播Go语言的热爱,推动更多会议举办。
There's nothing we love better than to, spread go love and get more conferences going.
所以请务必开口询问。
So do ask, absolutely.
我刚查了一下,想看看有没有一个会议频道或者Go语言的Slack群。
I just looked up to see if there was a conference channel and go for Slack.
结果发现并没有。
There is none.
现在有了。
There is now.
那么科里,在我们结束之前,你还有什么想倡导的事情吗?
So is there anything else that you would like to kind of, advocate, Corey, before we, we wrap this thing?
我唯一还没解决的关于推动社区发展的问题是,社区起步确实很难,需要时间积累人气。
The only thing that I haven't solved yet for for getting communities going more is it's they're they're hard to set up, right, it takes time to get traction.
但我很希望看到Go社区里的知名人士能走出自己的舒适圈。
But I would love to see more of the who's who in the go community get out beyond their demographic.
即使要花一两个小时路程,也主动去参加那些稍远地区的聚会,做场演讲,真正帮助他们起步。
And even if it's an hour away or two hours away, you know, go ahead and volunteer to go to that meetup that is a little bit further out than your demographic and do a do a talk and really help them get started.
如果我们能看到更多社区成员主动辐射周边两到四小时车程范围——甚至不需要坐飞机,开车就能到——我认为这会很有帮助。
And I think if we can see more of that in the community reaching out, you know, two to four hours away from you, not even a flight, just to drive, I think that would really help a lot.
我们很多人都处在距离另一个Go聚会地点两到四小时车程的位置,这种互助能真正推动社区发展,形成良性循环。
And I think a lot of us are in a situation where we are two to four hours away from another go meetup that's trying to take place, and that can really help out and and really start to get, you know, more more of that, momentum going.
这不就是政治里说的基层动员吗?
Isn't that what they call the ground game in politics?
当我挨家挨户敲门时?
When I knock on doors?
但今年我尽量不参与政治。
But this year, I'm trying to stay out of politics.
即便只是初期阶段,暂时充当新手们的训练轮,直到他们能独立运作,对吧?
And even if it's just for the beginning, just be the trainee wheels for people just for a little while until they get going, right?
然后如果你有能力,就去别处继续当训练轮。
And then you go be the trainee wheels somewhere else if you can.
但哪怕你只能做一两次,也很棒。
But even if you can do it once or twice, it's great.
比尔·肯尼迪已经从迈阿密开车到坦帕两次了,那可是四小时车程。
Bill Kennedy has driven from Miami over to Tampa, I think twice now, and that's like a four hour drive.
既然他能开四小时车程两次,你开两小时肯定没问题。
So if he can do a four hour drive twice, you can do a two hour drive.
确实如此。
Exactly.
我是说,我开车去芝加哥。
I mean, I drive to Chicago.
那可是五个半小时的车程。
That's five and a half hours.
我很乐意这么做。
I do it gladly.
太棒了。
That's awesome.
这就是真正的奉献精神,各位。
That's commitment right there, folks.
通常在我们结束节目之前,我们喜欢回顾一下Brian之前发起的这个Twitter上的#自由软件星期五话题,我想我们都挺喜欢这个创意。
So typically, way before we close out the show, we like to kinda go through Brian kinda triggered off this Free Software Friday hashtag on Twitter a while back, and I think we all kind of fell in love with the idea of that.
对人们来说并不总是金钱上的回报。
It's not always financial for people.
光是听到受益于他们项目的人说声谢谢就很棒了。
Just hearing thank you from people who benefit from their projects is nice.
既然如此,布莱恩,你想先来一个吗?
So with that said, Brian, you wanna kick one off?
这周我绝对有个重磅推荐,Gopher JS。
I absolutely have a big one this week, Gopher JS.
要是有谁在推特上关注我,就知道我对前端开发又爱又恨,而Gopher JS过去一两周让我大开眼界。
If anybody follows me on Twitter, you know I have this this hate hate relationship with front end development, and Gopher JS has been eye opening for me over this last week or two.
我都没意识到,前端不一定非得用JavaScript。
I didn't realize that, it didn't have to be JavaScript on the front end.
实际上可以用Go语言编写然后转译成JavaScript,这真的改变了一切。
It could actually be something that is Go and transpiles down to JavaScript, and it's it's just really changed everything.
所以我对Go for JS非常兴奋,它帮我克服了对前端代码的巨大恐惧。
So I'm really excited about Go for JS, and it's it's helped me get over my big ugly fear of front end code.
你们太棒了。
So you guys rock.
谢谢你们。
Thank you.
Gopher JS团队。
Gopher JS team.
谢谢。
Thank you.
谢谢。
Thank you.
谢谢。
Thank you.
那么,Carlicia,你呢?
And, Carlicia, how about you?
我发现了一个很酷的小工具叫Hacker News。
I came across this neat little tool called Hacker News.
这是一个命令行工具,可以用来访问Hacker News。
It's a command line tool that you can use to access Hacker News.
我觉得它真的很棒,首先,我从来不上Hacker News,不是因为我不喜欢它,而是每次上去都会迷失方向,从一个链接跳到另一个链接,最后发现自己完全跑偏了。
And I think it's really cool because, first of all, I don't ever go to Hacker News, not because I don't like it, but because every time I go, I just get lost because I go from one thing to another to another and then find myself somewhere else.
所以用这个工具时,我只需输入'HN some back top'之类的命令,就能获取头条新闻。
So with this too, I just type HN some back top, for example, and I get the top news.
这样我就不太会想去深挖那些内容了。
And I'm not so inclined to go chase that out.
真的只是想看看标题而已。
Really just wanna see the headlines.
而且我特别喜欢输入'HN onion'这个命令。
And I'm loving typing HN, onion.
当我需要轻松一笑时,就在命令行输入这个,效果立竿见影,从没让我失望过。
If I need a chuckle, I type that on the comment line and boom, never fails.
这功能太棒了。
It's awesome.
快去试试。
Do it.
一定要试试看。
Try it.
相信我。
Trust me.
我想现在正在下载。
I think downloading it now.
是啊。
Yeah.
这太棒了。
It's so awesome.
这个颜色有很多色彩,采用颜色编码,你可以按数字键深入查看特定条目。
And this color it's got a lot of colors, color coded, and you can press a number and go and see that particular item more in-depth.
简直太棒了。
It's so awesome.
所以我通常避免使用浏览器,这样才能保持高效。
So I tend to stay out of the browser so that I can be productive.
你现在要把这种低效的东西带到我的命令行里了。
So you're you're bringing this unproductive thing to my command line now.
我认为浏览器并非阻碍内容获取的问题所在
I submit that the browser is not what's keeping the content is not the problem.
问题在于浏览器本身
It's the browser.
正是浏览器会引导你陷入无底洞般的分心
The browser that leads you leads you down the rabbit hole.
但如果只是纯粹的内容
But if is just a pure content.
没有可点击的按钮,没有可追踪的链接,只有内容本身
No buttons to click, no links to follow, just the content.
它会忽略评论区的内容吗?
Does it does it ignore the comments?
没错,正是如此
Yeah, exactly.
我还没看到评论区
I haven't gotten to see comments.
我甚至不知道他们有没有评论功能。
I don't even know if they have comments.
我本来应该...
I was I was supposed to.
但是
But
科里,我知道我们这样突然问你有点冒昧,但在开源社区里,有没有你想感谢的项目或人?
So and I know we're kind of blindsiding you with it, Corey, but is there any projects you would or people that you would like to thank in the open source community?
对我来说,是每天都在用的VimGo。
For me, it's the one I use every single day, it's VimGo.
没有它我简直活不下去。
I could not live without it.
如果你用Vim写Go语言,那你必须用VimGo。
So VimGo is just if you use Vim and you do Go, you you have to use it.
它太棒了。
It's amazing.
他最近添加的一些功能简直令人难以置信。
And some of the stuff that he's put in there lately, it's just been unbelievable.
对我来说,我简直无法形容我对这个项目投入的工作量有多满意。
So for me, it's just I can't tell you how happy I am with the amount of work that goes into that project.
是啊。
Yeah.
我想给Fatima送一箱啤酒。
I wanna send Fatima you like a case of beer.
哦,比如
Oh, like
一卡车那么多。
a semi load.
我是说,这确实值得
I mean, it kinda deserves
他是个咖啡重度爱好者,所以给他送咖啡吧。
huge coffee drinker, so send him coffee.
他们刚有了个宝宝。
And they just had a baby.
他说,我正想说这个呢。
So he's like, I was gonna say that.
所以恭喜啊。
So congrats.
我们能筹点款,直接给他买个啤酒厂吗?
Can we get some donations, and we'll just buy him a brewery?
我是说,
I mean,
我觉得他现在就配得上这待遇。
I think that's that's the level he's at right now.
是啊。
Yeah.
别忘了,所有VimGo用户注意,他在patreon.com/fatih有个Patreon账号,这是感谢他开发VimGo的最好方式。
And don't forget, all you VimGo users out there, he has a Patreon at, patreon.com/fatih, and, it's a great way to thank him for his VimGo development.
肯定在节目笔记里提到了。
Think it's in the show notes for sure.
是啊。
Yeah.
这真是太棒了。
It's pretty awesome.
对我来说就是Kubernetes。
And for me, it's Kubernetes.
我迷上了Kubernetes。
I'm in love with Kubernetes.
所以我最近主要在玩这个。
So that's what I've been playing with more recently.
还没尝试过用Kubernetes做容器编排的人都应该试试。
And anybody who has not played with Kubernetes for, container orchestration should.
简直太有意思了。
Just way too much fun.
这真是颠覆性的改变。
It's a game changer.
绝对如此。
Absolutely.
那是个
That's a
不错的选择。
good one.
说到这里,我想我们该为这期节目画上句号了,虽然很遗憾。
And with that being said, I think that we are ready to, close the doors on this episode, unfortunately.
真希望能聊上一整天,但现实不允许。
I wish we could talk all day, but we cannot.
在此,我要感谢所有参与节目的嘉宾。
With that, I'd like to thank everybody for coming on the show.
还要感谢所有收听节目的观众,以及未来会收听的听众——因为你们都会推荐朋友访问gotime.fm进行注册。
I want to thank everybody who is listening to the show and everybody who will listen to the show because all of you are going to refer friends to go to gotime.fm and register.
我们还会提供每周邮件订阅服务。
We will also have a weekly email there that you can subscribe to.
如果还没关注,请在Twitter上关注我们@gotime.fm。
If you are not already, follow us on Twitter gotime.fm.
如果您有希望我们讨论的话题或对即将到来的嘉宾有问题(我们将开始公布日程安排),可以在github.com/gotimefm/ping找到我们,我们会在节目笔记中附上所有相关链接。
If you have ideas for things you'd like for us to discuss or questions for upcoming guests, and we'll start publishing a schedule for that, you can find us on github.com, gotimefm/ping, and we will link to all of this in our show notes.
说到这里,大家再见。
And with that said, goodbye, everybody.
再见。
Bye.
再见。
Bye.
再见。
Bye.
关于 Bayt 播客
Bayt 提供中文+原文双语音频和字幕,帮助你打破语言障碍,轻松听懂全球优质播客。