Tag: 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…)

  • 【翻译】Godoc:文档化 Go 代码

    各位童鞋,愚人节好!由于鄙人愚钝,过不了这种高端节日,所以就不过节了。
    所以今天即不会有鄙人要改名叫 mikeghost 的消息,也不会有诸如在 Android 上跑 iOS 应用的消息出现,当然,大家更不需要穿越的有木有来阅读本文。
    生活还要继续……
    原文《Godoc: documenting Go code》在此:http://blog.golang.org/2011/03/godoc-documenting-go-code.html
    —————-翻译分割线—————-

    Go 项目对待文档的态度是严肃的。文档是让软件易于处理和维护的重要的组成部分。当然,它必须编写良好并且准确,而且必须容易编写和维护。理想情况,它应当同代码在一起,这样文档就可以伴随代码一起更新。程序员建立良好文档越简单,对所有人好处越多。

    最终,我们开发出了godoc文档工具。这个文章说明了用 godoc 生成文档的方法,以及解释了在你自己的项目中如何使用我们的约定和工具编写良好的文档。
    (more…)

  • 【翻译】Gob 的数据

    原文在此:http://blog.golang.org/2011/03/gobs-of-data.html,来自 Golang 官方博客。

    Gob 是 Golang 的包中带的一个数据结构序列化的编/解码工具。在实际应用中,已经有不少的编解码工具/包/库了,为什么 Golang 还要新开发一个 Gob?又是一个重复的轮子?Gob 做了哪些工作?Gob 的优势是什么?本文做了一个较为全面的解释。

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

    Gob 的数据

    为了让某个数据结构能够在网络上传输或能够保存至文件,它必须被编码然后再解码。当然,已经有许多可用的编码方式了:JSON,XML,Google 的 protocol buffers,等等。而现在,又多了一种,由 Go 的 gob 包提供的方式。
    (more…)