Google I/O 2011 的官方视频大部分都已经放出了。昨天 Golang 团队也发布了 Google I/O 2011 上关于 Go 的相关视频。
由于众所周知的原因,大家不能拜访“油吐伯”。所以视频我放到土豆上了。
大家看到的这个蓝色毛绒公仔叫“Gopher”,很有爱的 Golang 吉祥物,这次也出现在 Google I/O 2011 的现场。
不知道能不能搞到一个正版的。其实我严重怀疑这个来自悉尼的公仔是东莞产的……你们懂……
最近看到许多朋友都在问类似的问题:Go 能做什么?Go 有实际应用吗?敢不敢在实际项目中使用 Go 呢……
正好,golang 的博客刊登了 Heroku 的两个系统工程师关于 Go 语言在他们的分布式系统中的应用的文章。
大家还记得 Doozer 吗?对,我之前有过翻译高速数据同步服务器——Doozer。貌似就是这群优秀的工程师搞出来的杰作。他们作为 go 语言应用的先行者,的确值得我们关注他们的工作,学习他们的经验,并向这群优秀的工程师致敬!
原文在此:http://blog.golang.org/2011/04/go-at-heroku.html
——————————-用于致敬的翻译分割线——————————-
本周的博客内容是由 Heroku 的系统工程师 Keith Rarick 和 Blake Mizerany 撰写的。用他们自己的话说,他们“吃、喝、睡在分布式系统上”。这里讨论了一些他们应用 Go 的经验。
构建分布式系统的一个巨大的问题是物理服务器之间的协作。每个服务器需要知道关于系统整体上的各种情况。这些关键数据包括锁、配置数据等等,而即便是在数据存储异常的情况下,这些也必须是一致并且可用的。因此,需要一个有着绝对一致保障的数据存储。对于这个问题的解决方案是 Doozer,一个用 Go 编写的、新的、一致性的、高可用的数据存储。
(more…)
对于一个不稳定的语言,删删改改什么的都是常事。即便是稳定的语言,也逃不过隔三差五整修一下的命运。于是 Golang 大修是个麻烦。
用 Golang 的好处是你正在使用世界上最聪明的一群科学家和工程师的杰作。于是,升级这些麻烦事变得不那么麻烦了,因为有了 gofix。
原文在此:http://blog.golang.org/2011/04/introducing-gofix.html
——————————-翻译分割线——————————-
下一个 Go 的发布版将会包含多个官方 Go 包 API 的重大变化。实现 HTTP 服务器处理、调用 net.Dial、调用 os.Open,或者使用反射的代码如果不使用新的 API 升级,将无法编译。现在的发布已经相当稳定并且不那么频繁了,这将会成为一个常态。每次的 API 变化发生在每周的快照版本之间,并且可控;总之,无论如何,这带来了大量需要手工更新的已有代码。
(more…)
由于众所周知的原因,强大的 GFW 会引起 Go 语言编译时在对DNS相关进行测试时失败。当然如果人品不错,没有公网连接,不受GFW的影响……还是会在网络相关的那部分包的测试中失败。导致无法正常安装 Golang。
错误信息类似如下形式:
... test math test mime test mime/multipart test net TEST FAIL net make[1]: Entering directory `/home/mikespook/bin/go/src/pkg/net' gotest -test.short -test.timeout=120 rm -f _test/net.a 8g -o _gotest_.8 cgo_stub.go dial.go dnsmsg.go fd_linux.go hosts.go ip.go ipsock.go iprawsock.go lookup.go net.go parse.go pipe.go sock.go tcpsock.go udpsock.go unixsock.go newpollserver.go fd.go file.go dnsconfig.go dnsclient.go port.go dialgoogle_test.go dnsname_test.go file_test.go hosts_test.go ip_test.go ipraw_test.go multicast_test.go net_test.go parse_test.go pipe_test.go port_test.go server_test.go srv_test.go timeout_test.go rm -f _test/net.a gopack grc _test/net.a _gotest_.8 --- FAIL: net.TestLookupCNAME (0.02 seconds) LookupCNAME("www.google.com.") = "www-g-com-chn.l.google.com.", <nil>, want "www.l.google.com.", nil FAIL gotest: "./8.out -test.short=true -test.timeout=120" failed: exit status 1 make[1]: *** [testshort] Error 2 make[1]: Leaving directory `/home/mikespook/bin/go/src/pkg/net' make: *** [net.testshort] 错误 1
解决这个问题的办法很简单,之前在推上我也有发过。但是自己安装 Golang 的时候遇到网络异常,却经常忘记这个设置,接二连三的要动手查 Makefile 。随记录于此,方便备查。
(more…)
昨天在讨论平台新架构的时候,还在说要搞个配置管理的服务出来,方便接口的管理。然后今天就看到了这个……人品爆发了吗?
好吧,不扯淡,直接翻译 Doozer 的 README 吧。Doozer 我还没实测,不过感觉,如果真得像 README 上面说得那样,还是很有用,很有用的。
关键——这个玩意提供了 go 的接口。(补充一点,忘了说了,这个是用 go 开发的)
项目代码托管于此:Doozer。
———————-翻译分割线———————-
Doozer 是高可用的,完整一致性的用于小量、极端重要的数据的存储。当数据变化时,它立刻通知接入的客户端(不缓存),对于那些很少更新,但是希望更新发生时实时性高的客户端来说是非常理想的。Doozer 对于名字服务、主数据库选取和多个设备之间的配置数据同步很适合。了解什么时候应该使用它?下面,有详细的信息。
(more…)
各位童鞋,愚人节好!由于鄙人愚钝,过不了这种高端节日,所以就不过节了。
所以今天即不会有鄙人要改名叫 mikeghost 的消息,也不会有诸如在 Android 上跑 iOS 应用的消息出现,当然,大家更不需要穿越的有木有来阅读本文。
生活还要继续……
原文《Godoc: documenting Go code》在此:http://blog.golang.org/2011/03/godoc-documenting-go-code.html
—————-翻译分割线—————-
Go 项目对待文档的态度是严肃的。文档是让软件易于处理和维护的重要的组成部分。当然,它必须编写良好并且准确,而且必须容易编写和维护。理想情况,它应当同代码在一起,这样文档就可以伴随代码一起更新。程序员建立良好文档越简单,对所有人好处越多。
最终,我们开发出了godoc文档工具。这个文章说明了用 godoc 生成文档的方法,以及解释了在你自己的项目中如何使用我们的约定和工具编写良好的文档。
(more…)
原文在此:http://blog.golang.org/2011/03/gobs-of-data.html,来自 Golang 官方博客。
Gob 是 Golang 的包中带的一个数据结构序列化的编/解码工具。在实际应用中,已经有不少的编解码工具/包/库了,为什么 Golang 还要新开发一个 Gob?又是一个重复的轮子?Gob 做了哪些工作?Gob 的优势是什么?本文做了一个较为全面的解释。
—————-翻译分割线—————-
为了让某个数据结构能够在网络上传输或能够保存至文件,它必须被编码然后再解码。当然,已经有许多可用的编码方式了:JSON,XML,Google 的 protocol buffers,等等。而现在,又多了一种,由 Go 的 gob 包提供的方式。
(more…)