[翻译] Go(#golang) 实现的状态机

春节前,粗略研究了一下微信的公共帐号。用 Golang 实现了一个简单的 package wechat,用于接入微信公共帐号。当时就在思考,微信的文字交互过程如果要实现有一定逻辑的复杂过程,可能需要使用到状态机。然后,就看到了这篇文章:《State machines in Go (#golang)》。非常合时宜啊!翻译于此,以飨读者! ——–翻译分隔线——– Go(#golang) 实现的状态机 我已经用 Go 代替 Python 重写了一个关键的服务组件。由于 Python 的解释器不是线程安...阅读全文

mikespook 的博客 2013/02/19 mikespook

[翻译]Go 和汇编

使用 cgo 让 Go 跟 C 一起工作已经不是啥稀奇的了。有大量的第三方包直接对 C 的库做了封装,提供给 Go 使用。从 Go 项目本身的代码中可以看到,不但有 C 代码,还有汇编代码存在。那么在自己的项目中是否能跟汇编结合呢?这篇文章完整并清晰的解说了如何让 Go 和汇编协同工作。真得性能敏感?上汇编吧!! ————翻译分隔线———— Go 和汇编 关于 Go,我最喜欢的部分之一就是它那坚定不移的实用主义线路。有时我们过于强调语言的设计,而忘记了编程所包含的其他内容。例如: Go 的编译器...阅读全文

mikespook 的博客 2013/02/20 mikespook

[翻译] Go 1.1 介绍

由于年后工作实在太忙,一直也没写点什么。不过这篇我觉得值得,所以…… 原文:https://tip.golang.org/hg/doc/go1.1.html 原文链接我进行了替换,现在指向 tip 大多数应该正确吧。不过如果是 Go 1.1 正式发布半年后,我可不保证了。 ————翻译分隔线———— Go 1.1 介绍 Go 第一版(简称 Go 1 或 Go 1.0)发布于 2012 年三月,这个版本提供了稳定的 Go 语言和库。其稳定性让全世界 Go 用户社区和相关系统茁壮成长。从那时起,就发...阅读全文

mikespook 的博客 2013/03/28 mikespook

[翻译]绝妙的 channel

在编写 golang 程序的过程中,channel 会经常使用。本文对 channel 的使用的确很特别,同时也非常实用。 原文在此:http://dave.cheney.net/2013/04/30/curious-channels ————翻译分隔线———— 绝妙的 channel 在 Go 编程语言中,channel 是一个闪耀的特性。它提供了一种强大的、在不使用锁或临界区的情况下,从某个 goroutine 向其他 goroutine 发送数据流的方法。 今天我想讨论关于 channel...阅读全文

mikespook 的博客 2013/05/06 mikespook

[翻译]用 Go 实现零停机升级 TCP 服务

零停机升级几乎是现代网络服务的标配,其实现原理并不复杂……blablabla……( 从文件描述符讲起,省略一万字)。现在有人确认 Go 也可实现零停机升级 TCP 服务或者更加简短的叫法——热更新。 原文在此:Zero Downtime upgrades of TCP servers in Go —————-翻译分隔线—————- 用 Go 实现零停机升级 TCP 服务 最近在 golang-nuts 邮件列表上有篇帖子提到 Nginx 可以保持服务的时候进行升级,而无需停止它正在监听的 soc...阅读全文

mikespook 的博客 2012/05/31 mikespook

Golang:有趣的 channel 应用

严格意义上说,本文是我另外一片文章《Golang Funny: Play with Channel》的中文版本。不过,毕竟是用中文当母语的,所以就不翻译了,重新按照那个内容写过吧。 channel 是 golang 里相当有趣的一个功能,在我使用 golang 编码的经验里,大部分事件都会是在享受 channel 和 goroutine 配合的乐趣。所以本文主要介绍 channel 的一些有趣的用法。 这里有 Oling Cat 翻译的Go编程语言规范里关于 channel(信道)的描述: 信道...阅读全文

mikespook 的博客 2012/06/09 mikespook

[翻译]大道至简(原标题:少是指数级的多)

原文 Less is exponentially more 是 Rob Pike 自己整理的他在六月22日,旧金山的 Golang 会议上的演讲稿。清晰的介绍了 Go 的前世今生,来龙去脉。为了让更多的人能够更加清楚的认识到 Go 的优雅并喜爱上 Go,特翻译成中文,以飧读者。 —————-翻译分隔线—————- 大道至简 这是我(Rob Pike)在 2012 年六月,旧金山 Go 会议上的演讲内容。 这是一个私人演讲。我并未代表 Go 项目团队的任何人在此演讲,但我首先要感谢团队为 Go 的...阅读全文

mikespook 的博客 2012/06/28 mikespook

在 Golang 中用名字调用函数

上个星期,我写了篇《Function call by name in Golang》。由于是英文的,所以被人诟病(说谁,谁知道!)。好吧,现在用中文重新写一遍。 Golang 中的函数跟 C 的一样,是个代码块,不过它可以像其他类型那样赋值给一个变量。 如果你对函数不熟悉,《Codewalk: First-Class Functions in Go》应该是个不错的起点。已经有所了解?那么继续吧! 首先,来看看这段 PHP 代码: function foobar() { echo "Hello G...阅读全文

mikespook 的博客 2012/07/12 mikespook

[翻译]无聊的 Golang

这篇文章虽然不长,但是很有趣。看到好几天了,一直都没空翻译。抽空翻译出来,这应当算是英文“标题党”和“高级黑”吧。 原文不好读,也没什么特别的;不过如果是为了强化学习 Golang 的信心,值得看看。 原文在此:http://aeronotix.pl/blog/go-is-boring —————-翻译分隔线—————- 无聊的 Golang Go 没什么新鲜的,也没什么特别的。你在看到 Go 之前都遇到过了。是的,我也是这么认为的。不过你所没见过的是所有这些都集中在一个语言中,产生了一个 TM...阅读全文

mikespook 的博客 2012/07/31 mikespook

为什么 PHPer 应当学习 Golang

熟悉我的朋友应当知道,近些年的大部分时间我的工作都会多少和 PHP 相关。随着 PHP 有着越来越深入的了解,以及遇到越来越多的不同业务时,使用 PHP 总会让我有一种莫名的无力感。当然,并不是我一个人在使用 PHP 的时候遇到了问题。事实上,每个略微有一些经验,接触过一些需求的人都会有同样的困惑。各种配合 LAMP(或者LNMP?)架构的后端技术也因此被发明或被发现,进而整合到 PHP 的开发的技术体系中。从简单的 Memcached作为数据中转,cron 后端定时处理;到 Gearman、R...阅读全文

mikespook 的博客 2012/08/23 mikespook

beego介绍

####[beego] http://beego.me/ go get github.com/astaxie/beego ###bee工具 #####1. 安装 go get github.com/beego/bee #####2. 新建工程 在$GOPATH目录下,用命令行输入bee new [PROJECT_NAME],就会在$GOPATH/src目录下新建一个工程。 #####3. 运行工程 进入创建好的工程根目录下,使用bee run [PROJECT_NAME],项目便会启动,此命令支...阅读全文

Cyeam 21 January 2014 Bryce

[翻译]在 Go 应用中使用简明架构(2)

原文在此,续前…… ——–翻译分隔线——– 在 Go 应用中使用简明架构(2) 架构实现 首先来实现领域层。之前已经说过,应用和其用例将完全可用,但是这不是一个完整的商城。因此,定义领域的代码应当足够短小,这样正好可以放在一个文件中: package domain import ( "errors" ) type CustomerRepository interface { Store(customer Customer) error FindById(id int) Customer } ty...阅读全文

mikespook 的博客 2012/09/28 mikespook

一个设置 golang 的 vim 开发环境的脚本

golang 本身在代码的 misc/vim 中提供了相应脚本,用来集成 golang 的 vim 环境。而第三方项目 gocode 则更是一个强大的工具。我在《gocode——VIM 和 Emacs 的 golang 代码自动补全》中已经介绍过了。 这两个项目都很活跃,而社区活跃带来的最大麻烦就是频繁更新。为了能方便的升级 vim 环境的 golang 脚本,所以写了这个 shell。 可以 step by step 的协助集成 golang 相关脚本到 vim 中。 下载地址:https:/...阅读全文

mikespook 的博客 2011/09/22 mikespook

When in Golang, do as the Gophers do.

前两天在某 golang 的 QQ 群里,有人对 channel 批判了一番。当时我就很想送他一副图,两句话。 When in Rome, do as the Romans do. When in Golang, do as the Gophers do. 这本是为了参加 ECUG 2011 Con. 的幻灯片里制作的一副图。 自己感觉很满意。能体现使用 golang 的方法的核心思想。 分享出来,大家开心一下吧。阅读全文

mikespook 的博客 2011/10/22 mikespook

[翻译]Go 指南

英文版本是《A Tour of Go》。我看过之后觉得这种学习体验非常棒,随即按照规则翻译了中文版本: 《Go 指南》 这个中文版本是部署在 GAE 上的,由于受到功夫网的影响,国内用户无法正常访问。所以,大家八仙过海吧。 (人还在这里,心已经出去了……) 由于许多原因,可能有的朋友无法一窥墙外之物。也可以通过源码将指南安装到本地使用。指南中有详细的说明,转发到这里,诸位自便吧。代码我托管在了 http://bitbucket.org/mikespook/go-tour-zh。 离线 Go 指南...阅读全文

mikespook 的博客 2011/11/16 mikespook

[翻译]Goroutine性能测试

原文在此:http://en.munknex.net/2011/12/golang-goroutines-performance.html ————————–翻译分割线————————– 概述 在这篇文章里,我将尝试评估 goroutine 的性能。goroutine 是类似轻量级线程的东西。为了提供原生的多任务,它(协同 channel 一起)被内建于Go中。 文档告诉我们: 它实际上是在同一个地址空间里创建成百上千个 goroutine。 因此,这个文章的重点就是测试并明确在如此巨大的并发运...阅读全文

mikespook 的博客 2012/01/06 mikespook