Category: Golang

  • Go 在 Google I/O 2011 的视频


    Google I/O 2011 的官方视频大部分都已经放出了。昨天 Golang 团队也发布了 Google I/O 2011 上关于 Go 的相关视频。

    由于众所周知的原因,大家不能拜访“油吐伯”。所以视频我放到土豆上了。

    大家看到的这个蓝色毛绒公仔叫“Gopher”,很有爱的 Golang 吉祥物,这次也出现在 Google I/O 2011 的现场。

    不知道能不能搞到一个正版的。其实我严重怀疑这个来自悉尼的公仔是东莞产的……你们懂……

    (more…)

  • Go 语言的 Gearman API

    学习 Go 已经有一段时间了,关于《学习Go语言》的翻译进度一如既往的像之前一样缓慢。每当翻译到一处,看到 Go 语言那精妙的设计的时候,就会忍不住想写点什么。好吧,其实我之前的计划是写一个自己用的proxy,不过还是算了吧,原因大家都懂。轮子造太多,没意思。

    在整理一些之前的技术架构和思考新的架构的过程中,一次又一次提高了 Gearman 在系统中的重要性。虽然基于“新项目用老技术,老项目用新技术”的原则,并不打算在新的项目中使用 Golang。不过,总会有一天新项目要变成老项目吧?总会有一天,老项目需要做一些调整吧?理由牵强了点,但总是给自己找到了一个做的理由。

    于是就有了这个:http://bitbucket.org/mikespook/gearman-go
    (more…)

  • 【翻译】App Engine Go 概述

    就在我还寻思什么时候 Google 会在 NDK 里加入 Go 支持的时候,冷不丁的,Google 发力了。App Engine 支持 Go 了。下面是来自官方文档的概述。

    ————————翻译分割线————————

    App Engine Go 概述

    欢迎来到用于 Go 的 Google App Engine!实验性质

    利用 App Engine,可以使用 Go 编程语言构建 Web 应用。Go 应用运行在 Google 的可伸缩的基础平台上,并使用大规模的持久化存储和服务。
    (more…)

  • 【翻译】Go 在 Heroku

    最近看到许多朋友都在问类似的问题:Go 能做什么?Go 有实际应用吗?敢不敢在实际项目中使用 Go 呢……

    正好,golang 的博客刊登了 Heroku 的两个系统工程师关于 Go 语言在他们的分布式系统中的应用的文章。

    大家还记得 Doozer 吗?对,我之前有过翻译高速数据同步服务器——Doozer。貌似就是这群优秀的工程师搞出来的杰作。他们作为 go 语言应用的先行者,的确值得我们关注他们的工作,学习他们的经验,并向这群优秀的工程师致敬!

    原文在此:http://blog.golang.org/2011/04/go-at-heroku.html
    ——————————-用于致敬的翻译分割线——————————-
    本周的博客内容是由 Heroku 的系统工程师 Keith RarickBlake Mizerany 撰写的。用他们自己的话说,他们“吃、喝、睡在分布式系统上”。这里讨论了一些他们应用 Go 的经验。

    构建分布式系统的一个巨大的问题是物理服务器之间的协作。每个服务器需要知道关于系统整体上的各种情况。这些关键数据包括锁、配置数据等等,而即便是在数据存储异常的情况下,这些也必须是一致并且可用的。因此,需要一个有着绝对一致保障的数据存储。对于这个问题的解决方案是 Doozer,一个用 Go 编写的、新的、一致性的、高可用的数据存储。
    (more…)

  • 【翻译】gofix 介绍

    对于一个不稳定的语言,删删改改什么的都是常事。即便是稳定的语言,也逃不过隔三差五整修一下的命运。于是 Golang 大修是个麻烦。
    用 Golang 的好处是你正在使用世界上最聪明的一群科学家和工程师的杰作。于是,升级这些麻烦事变得不那么麻烦了,因为有了 gofix。

    原文在此:http://blog.golang.org/2011/04/introducing-gofix.html
    ——————————-翻译分割线——————————-

    gofix介绍

    下一个 Go 的发布版将会包含多个官方 Go 包 API 的重大变化。实现 HTTP 服务器处理调用 net.Dial调用 os.Open,或者使用反射的代码如果不使用新的 API 升级,将无法编译。现在的发布已经相当稳定并且不那么频繁了,这将会成为一个常态。每次的 API 变化发生在每周的快照版本之间,并且可控;总之,无论如何,这带来了大量需要手工更新的已有代码。
    (more…)

  • 网络原因引起的 Golang 编译错误

    由于众所周知的原因,强大的 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

    昨天在讨论平台新架构的时候,还在说要搞个配置管理的服务出来,方便接口的管理。然后今天就看到了这个……人品爆发了吗?
    好吧,不扯淡,直接翻译 Doozer 的 README 吧。Doozer 我还没实测,不过感觉,如果真得像 README 上面说得那样,还是很有用,很有用的。

    关键——这个玩意提供了 go 的接口。(补充一点,忘了说了,这个是用 go 开发的)
    项目代码托管于此:Doozer
    ———————-翻译分割线———————-

    Doozer

    这是什么?

    Doozer 是高可用的,完整一致性的用于小量、极端重要的数据的存储。当数据变化时,它立刻通知接入的客户端(不缓存),对于那些很少更新,但是希望更新发生时实时性高的客户端来说是非常理想的。Doozer 对于名字服务、主数据库选取和多个设备之间的配置数据同步很适合。了解什么时候应该使用它?下面,有详细的信息。
    (more…)

  • Learning Go 中文版本《学习Go语言》

    是的,你没看错,这就是 Learning Go 的中文版本。在我踌躇许久之后,终于决定将这个坑挖下去了。

    项目页面在这里:《学习Go 语言》

    现在的翻译进度大约10%,也就是完成了第一章和部分第二章内容。
    我对 LaTeX 知之甚少,所以排版还没时间去调整。

    第一阶段目标是同步翻译英文版本,并跟进英文版本的后续修改。
    第二阶段目标待 Go 语言相对稳定后,根据中文表达习惯重新调整内容和表达方式。
    大体如此吧……

    (more…)