162013
 

I’m happy to announce the system operations cluster: Z-Node here.

https://github.com/mikespook/z-node

Intro

Z-Node is a cluster for helping system operations. It works with Doozer and ZooKeeper cluster.

Every Z-Node watches at least two files:

  • /z-node/node/$HOST/$PID – for one-node tasks;
  • /z-node/$REGION/wire – for cluster tasks (Every Z-Node instance can watch multi-regions).

Z-Node will register itself as file /z-node/info/$HOST/$PID with running informations. It watches the file /z-node/node/$HOST/$PID for one-node tasks. When the file was changed, Z-Node will be notified.

All of Z-Nodes watch the file /z-node/$REGION/wire for cluster tasks. When the file is changed, all of Z-Nodes will be notified.

Special Thanks

The skynet project enlightened me on the developing with Z-Node. Also, I’m a user with skynet. :)

So, express my thanks to the skynet’s founder – Brian Ketelsen.

Thank you for your great job!

062013
 

在编写 golang 程序的过程中,channel 会经常使用。本文对 channel 的使用的确很特别,同时也非常实用。

原文在此:http://dave.cheney.net/2013/04/30/curious-channels

————翻译分隔线————

绝妙的 channel

Go 编程语言中,channel 是一个闪耀的特性。它提供了一种强大的、在不使用锁或临界区的情况下,从某个 goroutine 向其他 goroutine 发送数据流的方法。

今天我想讨论关于 channel 的两个重要的特性,这些特性不但使其在控制数据流方面极为有用,而且用在流程控制方面也十分有效。

Continue reading »

282013
 

由于年后工作实在太忙,一直也没写点什么。不过这篇我觉得值得,所以……
原文: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 用户社区和相关系统茁壮成长。从那时起,就发布了若干个“关键点”——1.0.1、1.0.2 和 1.0.3。这些点的发布修复了若干已知 bug,但是对于实现本身并没有进行修改。

这个新的发布版,Go 1.1,在保持兼容性的前提下添加了若干重要的(当然,向后兼容)语言变化,而库变化的清单也很长(也向后兼容),还有在编译器、库和运行时环境实现的主要工作。焦点是性能。测试并不是十分精确,但是对于许多测试程序来说都有着重要的、有时是戏剧性的性能改善。我们相信,通过升级 Go 的安装包,并且重新编译,许多用户的程序也能让人体会到这一改进。
Continue reading »

222013
 

Life is short. Use Python.zq-python

早上某 Golang 群里有同学对 Python 社区的荐言给予了高度评价:

人生苦短,我用 Python。
Lift is short, use Python.

对此,地鼠大神托我转告大家:

Death is coming. Let’s Go!

God of Gophers

 

202013
 

使用 cgo 让 Go 跟 C 一起工作已经不是啥稀奇的了。有大量的第三方包直接对 C 的库做了封装,提供给 Go 使用。从 Go 项目本身的代码中可以看到,不但有 C 代码,还有汇编代码存在。那么在自己的项目中是否能跟汇编结合呢?这篇文章完整并清晰的解说了如何让 Go 和汇编协同工作。真得性能敏感?上汇编吧!!

————翻译分隔线————

Go 和汇编

关于 Go,我最喜欢的部分之一就是它那坚定不移的实用主义线路。有时我们过于强调语言的设计,而忘记了编程所包含的其他内容。例如:
Continue reading »

192013
 

春节前,粗略研究了一下微信的公共帐号。用 Golang 实现了一个简单的 package wechat,用于接入微信公共帐号。当时就在思考,微信的文字交互过程如果要实现有一定逻辑的复杂过程,可能需要使用到状态机。然后,就看到了这篇文章:《State machines in Go (#golang)》。非常合时宜啊!翻译于此,以飨读者!

——–翻译分隔线——–

Go(#golang) 实现的状态机

我已经用 Go 代替 Python 重写了一个关键的服务组件。由于 Python 的解释器不是线程安全的,所以在解析的时候使用了全局锁。Go 与 Python 不同,它内建了并发支持,并且是静态编译的。
Continue reading »

172013
 

原文在此,续……

——–翻译分隔线——–

在 Go 应用中使用简明架构(5)

基础层

就像上面提到的,我们的存储认为“数据库”是一个可以用 SQL 请求发送或接收数据行的抽象。它们不关心基础构建的问题,例如链接到数据库,或使用哪个数据库。这是在 src/infrastructure/sqlitehandler.go 中完成的,高层次的 DbHandler 接口是通过调用低层次的功能来实现的:
Continue reading »

十二 252012
 

原文在此,续……

——–翻译分隔线——–

在 Go 应用中使用简明架构(4)

接口层

关于这点,必须说,所有东西都得有编码智慧,不论是真实的商业还是我们的应用用例。让我们看看对于接口层的代码这意味着什么。不像在各个内部层次中,所有代码都属于一个逻辑,接口层是由若干独立的部分构建而成。因此,我们将这个层次的代码拆分为若干个文件。

由于我们的商店要通过 Web 访问,就从 Web 服务开始吧:

Continue reading »

282012
 

原文在此,续……

——–翻译分隔线——–

在 Go 应用中使用简明架构(2)

架构实现

首先来实现领域层。之前已经说过,应用和其用例将完全可用,但是这不是一个完整的商城。因此,定义领域的代码应当足够短小,这样正好可以放在一个文件中:

Continue reading »