dyweb / weekly

DevComm-Shanghai Weekly 上海地区高校技术社团联合周报(欢迎投稿)
https://dyweb-weekly.netlify.com/
66 stars 5 forks source link

Weekly-106 #91

Closed gaocegege-bot closed 5 years ago

gaocegege-bot commented 5 years ago

联合周报第 106 期开始投稿 :tada:

at15 commented 5 years ago

https://github.com/google/graphd The Metaweb graph repository server, backend for Freebase https://developers.google.com/freebase/

at15 commented 5 years ago

https://github.com/golang/tools/tree/master/internal/lsp go 官方已经在做 language server 了 /w\ https://mattn.kaoriya.net/software/lang/go/20181217000056.htm

at15 commented 5 years ago

https://github.com/bradfitz/exp-httpclient Rethinking Go's HTTP client 有一些我在 go.ice 里的 httpclient 里可以解决 增加 type 对 encode/decode 更好的支持 cc @gaocegege (之前在公司已经实现了一个 ....

gaocegege commented 5 years ago

@at15 go.ice 做的不是说是自动生成 client 么

at15 commented 5 years ago

@gaocegege 说是这么说么 ... spec 该怎么弄我都还没想好 ... 虽然用 swagger 也是可以的 ... 但是我更想从go 的代码生成 ... 不过生成下面这种应该是很简单的 ...

func GetDogFoods(dogs []Dog) ([]Food, error) {
     req := json.Marshal(dogs)
     c.do(req)
     foods := json.Umarshal(res)
     return foods, nil
}

k8s 的 client 是生成的么?

gaocegege commented 5 years ago

k8s 是的,不过我觉得更值得参考的是 https://caicloud.github.io/nirvana/zh-hans/guides/client.html

k8s 的实现过于复杂。不知道目前针对 openapi 的研究如何了,能通过它间接支持 client gen 么,可以的话估计还能做到多语言支持

at15 commented 5 years ago

@gaocegege 好像主要逻辑是在 https://github.com/caicloud/nirvana/tree/master/utils 下, 扫代码然后生成 client, 还有一种更简单的方法, 直接要求生成器调用 spec 的代码然后直接用 reflect 连 go/ast 都不需要了 ... 我先写点 prototype 试试, openapi 好像什么都支持 https://github.com/OpenAPITools/openapi-generator 但不知道自定义程度如何 ...

另外我看到 nirvana 也支持生成 swagger 所以也可以生成 swagger 然后让 openapi/swagger 生成其他语言的 .... 我很讨厌把 spec 写在 yaml 里 ... 很容易就 out of sync 了 ...

gaocegege commented 5 years ago

嗯我觉得最 awesome 的方式就是根据代码/spec 定义的 API 产生 swagger,再借由 openapi 等等之类的产生 client/stub server

重复造轮子可能 bug 会不可控

gaocegege commented 5 years ago

https://github.com/go-internals-cn/go-internals

go-internals 本书是关于 Go 程序设计语言内部实现原理的阐释,当前正在进行中。

gaocegege commented 5 years ago

https://blog.golang.org/modules2019

Interested in Go modules? Learn what the Go team has planned for modules in 2019

at15 commented 5 years ago

https://github.com/kubernetes-sigs/kubebuilder and https://github.com/operator-framework difference? And controller runtime? @gaocegege

gaocegege commented 5 years ago

我都没用过,我是硬核手写的老师傅

他们都是简化 operator 开发的 framework 吧,差别大概就像 beego 和 gin 的区别?

at15 commented 5 years ago

https://github.com/gardener/gardener from SAP used to create kubernetes cluter https://kubernetes.io/blog/2018/05/17/gardener/

at15 commented 5 years ago

https://github.com/kyma-project/kyma also from SAP, wrapper on top of knative which is wrapper on top of istio

at15 commented 5 years ago

https://github.com/strapdata/elassandra Elassandra = Elasticsearch + Apache Cassandra ... saw it when looking at a k8s cassandra operator https://github.com/instaclustr/cassandra-operator