Category: Study & Research

  • [翻译] Lua 做对了什么?

    来自邮件列表的旧文一篇,不过很有料。加上最近正好大量用到 Lua,所以翻译出来。说实话,跟 Go 配合的 Lua 的封装,比已有的 Python 封装要好用很多。

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

    主题:回复:Lua 做对了什么?
    发信人:Miles Bader
    日期:2012-04-09 星期一 17:03:27 +0900

    Emeka 写到:

    > 大家好,
    >
    > 我是一名南森大学的学生,我选择了 Lua 语言作为业余爱好。
    > 我想知道到底是什么让这个语言与众不同?
    > 它为编程语言带来了什么?还有特别的特性。
    >
    > 此致,\Emeka
    > —
    > *Satajanus Nig. Ltd
    >
    > *
    (more…)

  • Z-Node: a cluster for sys-ops based on doozer & zookeeper

    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!

  • [翻译]我其实没办法学 Erlang,因为它不存在,所以我发明了它

    这是 Joe Armstrong,Erlang 之父在昨天(2013-01-24)发表在 Erlang 邮件列表里的内容。详细解说了他自己从开始学习编码到发明 Erlang 的整个历史。并且,对如何学习编程;如何成为大牛等一系列热门问题提出了自己的看法。当然,文中槽点无数(包括坚定不移的黑我大PHP)。这也是我觉得有必要翻译出来的原因之一。

    由于是发在邮件列表的,所以原文是没有正式的标题的。我从 HN 上抄了这个标题回来。

    整体上,虽然是和 Erlang 相关的话题。但是读过之后,会突然领会到 Golang Team 一直以来坚持的一些东西的更深层次的含义。

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

    回到过去……

    当我开始学习编程的时候(1967),我可以在 FORTRAN 和(传说中的)Algol 之间选择,不过没有任何人了解 Algol,所以我选择了 FORTRAN。

    编程的一个周期是三个星期

        第一周 在纸上的表格里编写代码,然后送到计算机中心将其转换为打孔卡
        第二周 复查打孔卡,如果没问题就放到设备上执行
        第三周 得到结果

    编译器遇到第一个语法错误的时候会终止运行,这会将你带回第一周——因此,如果在你的程序中有十个错误,它会需要花费 30 周的时间让它运行起来。

    这种氛围是非常好的——教会大家不要犯错,并且首先思考。

    (more…)

  • [翻译]1K 玫瑰花

    这篇文章介绍了使用 canvas 的绘图功能绘制一个 3D 玫瑰。很有特色,随翻译于此。
    在 Valentine’s Day 即将来临之际,希望能给诸位死 coder 一点点好运气……

    原文在此:http://www.romancortes.com/blog/1k-rose/

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

    我参加了 js1k 组织的关于“爱”的第四次主题活动。提交了一个静态图片,由程序生成的 3D 玫瑰花。你可以在这里找到它

    它是用蒙特卡洛方法显式分段采样生成 3D 曲面。我将在这个文章中逐步解释所有的要点。
    (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…)

  • 【翻译】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…)

  • 用Go实现异步的Web开发

    不知道大家还记得不记得大约一年前,我的一个白日梦《关于Web编程异步模型的白日梦》,然后这个白日梦我又连续做了好几天《Web编程异步模型的PHP原生实现》、《Web编程异步模型的 Gearman 实现(残)》。

    当时怎么也没相通,还死皮白赖的粘在PHP的异步实现上不肯放手。好吧,实现是繁琐的,应用是成功的,代码是容易写的,环境是要搭建的……

    昨晚睡觉前突然觉得自己应该真正用Go实现一下异步的Web,哪怕是个例子也好啊。于是,边吃饭,边敲了一票代码搞了一个很简单的demo,分享给大家吧。在这里下载完整的代码:webdemo
    (more…)

  • gocode——VIM 和 Emacs 的 golang 代码自动补全

    虽然 golang 自身提供了 VIM 的语法高亮之类的脚本,但 autocompletion 并没有官方解决方案。无意之中发现 gocode 这个支持 VIM 和 Emacs 的 autocompletion daemon。

    这里有个Flash 动画演示,展示了 gocode 的强大。我得说,用过之后,感觉速度确实够快。

    下面是来自官方的部分介绍:

    (more…)

  • go在stack上干了神马?

    1. 对这个话题已经有深入理解的童鞋请绕道;
    2. 对这个话题感兴趣,且有极强学习能力的同学请阅读这里,并且不用回来了。
    3. 其他和我一样愚笨的IT民工们,继续向前冲吧……
    4. 【2013年3月21日】以下关于 stackless 的描述有致命的脑残错误,请忽略。感谢 @minux 指出。

    首先,来看一段神奇的 golang 代码:

    package main
    var (
        i = 1
    )
    func main() {
        i = i + 1
        print(i, "\n")
        main()
    }
    

    (more…)