Golang 在 POSIX 系统下使用 PID 判断进程是否存在的方法

这是存在于 golib 库中一个长达两年的 bug。之前虽然有遇到,但也不是什么十分大的问题,所以没有留意。今天再次遇到,突然有点不爽,强迫症发作。

golib 的 pid 子包设计用于帮助服务进程生成 POSIX 系统下的 PID 文件。首先程序会判断指定的 PID 文件是否存在,以及该文件中标识的进程是否存在。如果进程存在则返回 ErrProcessExists 的错误;反之,如果进程不存在,则用新的 PID 覆盖文件内容。之前的代码使用了 os.FindProcess,但是这个函数的行为,与其文档描述实际在 POSIX 系统上是存在差异的。可以参考 go-nut 上的讨论,或者 Issue 7392048
继续阅读

A repo to mourn the github users who passed away

Jim Weirich passed away two days ago. When I viewed his last commit, I saw a mourning message on the page. Github’s great jobs should be appreciated.

All of us will be gone someday. People behind us will read our codes. They maybe think about them and get to know what kind of person we are (As Roman brick stamps surprised us). They could fork and commit to the projects. Our soul will be continued in the repos.

So I created a repo to mourn the github users who passed away.

Fork RIP on Github.

Could you please help me to supplement this list?

My mother tongue isn’t English. Apologize for my terrible expressions.

[翻译]你的程序员在勤奋工作,还是在偷懒?

关于南极动物公司的 H 总半夜回复邮件,凌晨上线生产环境这个段子,总是有一些人拉出来说事。弄得好像判断他人是否勤奋,只能是通过这个人凌晨三点是否还在工作来识别一样。先不说 H 总当时是不是在国外,有没有时差这个问题。有几个公司真得把开发、测试、上线这个流程跑通了?没跑通,有几个人敢这么冒冒然上线?冒冒然上线了,有几个人敢白天蒙头睡觉?敢白天蒙头睡觉,有几个公司允许不考勤的……扯远了,拉回来。这篇文章是我去年12月初看到的,当时就想翻译,结果一拖就成了跨年度项目了(我得承认,我偷懒了)。当了很多年的程序员,也做了几年技术管理工作,感觉原文作者的经历还是很有代表性的。至少如果现在还天天忙着用代码行数来判断程序员贡献的领导,可能得评估一下公司的技术、开发工具相关选型是不是还在原始社会了。原文在这里,请翻墙阅读。 ————翻译分隔线————

你的程序员在勤奋工作,还是在偷懒?

Mike Hadlow 撰写 当人们进行体力劳动时,很容易判断他们是否在努力工作。你可以看到汗流浃背的劳动过程。还可以看到他们工作的结果:砖墙越来越高;地上的洞越来越大。认可并且嘉奖辛勤的劳动绝对是人类最基本的本能,这也是体育运动如此经久不衰的让人着迷的原因之一。但用这种本能的赞赏来面对技术研发的员工时,就成为了一个问题。高效的知识型劳动者经常让人觉得他没有在努力工作。 继续阅读

[翻译] Go 1.3 链接器大修

Go team 总是能带来一些惊喜的,关于 Go 的链接器,看来在 1.3 版本中要大修了
————翻译分隔线————

Go 1.3 链接器大修

Russ Cox

2013 年 11 月

摘要

在构建和运行一个标准的 Go 程序时,链接器是最慢的一部分。为了解决这个问题,我们计划将链接器拆分到两部分。其中的一部分可能会用 Go 来编写。

背景

链接器总是 Plan 9 工具链中最慢的部分之一,而现在它是 Go 工具链中最慢的部分了。Ken Thompson 在关于工具链的概述中进行了总结:

继续阅读

[翻译]Go 数据结构

关于 Go 的内存结构在 Go 内存模型 中已经有介绍,但是内容相对简单,许多细节也一带而过。Ross Cox 的这篇文章 Go Data Structure 讲解得比较系统也很全面的一篇。翻译至此,希望能对大家有帮助。

2009 年的旧文,发现自己当时没有翻译完。所以再次做了增补和修改。如果我没记错,应该已经有人在 OSC 上发表过同一篇文章的翻译了。大家对照参考阅读吧。

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

Go 数据结构

每当给新手介绍 Go 的时候,我发现为了建立起关于哪个操作成本更加高昂的正确观念,将 Go 如何为其值分配内存说明清楚会很有帮助。本文介绍了基础类型、结构体、数组和切片(slice)。
继续阅读

[翻译] Nginx 备战-优化指南

对于上线优化这个事情,个人来说更加倾向于使用一些快速的调优模式首先来解决 80% 的问题。感觉上这篇“Battle ready Nginx – an optimization guide”讲得还是很到位了。所以随手翻译了,分享给大家。

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

Nginx 备战-优化指南

作者:Zachary Orr

大多数关于 Nginx 的指南只告诉你那最基本的部分:apt-get 一个包,修改这里和那里的某些行,然后就得到了一个 web 服务器!而在大多数情况下,一个常见的 nginx 安装也能为你的网站提供良好的服务。然而如果你的确想进一步压榨 nginx 的性能,那么就必须走得更远一些。在这个指南中,我将会解释通过调整 nginx 中的哪些设置可以得到更好的性能,来应对大量客户端请求。同时要注意,这不是完整的调优指南。只是对一些可以调整来改进性能的设置的简单概述。请务必具体情况具体对待。

继续阅读

[翻译] Lua 做对了什么?

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

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

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

Emeka 写到:

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

PPA source for PHP-YAF

PHP-YAF is a PHP framework extension likes Zend Framework, but much more lighter, more faster and better extendability. It is developed by laruence. PHP-YAF could work with PEAR, Zend Framework and many others libraries.

YAF supported PECL good. It is convenient using PECL to install YAF on Ubuntu box. There is a saying that “When in Rome, do as the Romans do”. Thus why we are here: a PPA source for PHP-YAF.

I have put all dependences on the github.

继续阅读

PHP-YAF 的 PPA 源

PHP-YAFlaruence 开发的类似 Zend Freamwork 的 PHP 扩展框架。轻巧、快速,扩展性良好。并且可以与 PEAR、Zend Freamwork 这些库协调工作,兼容良好。因此,这一年多,我基本上已经放弃 ZF 为主体的集成框架(还记得 Ninny Project 吗?),并将其移植到了 YAF 上。

虽然,作为 PHP 开发者,laruence 一早就对 YAF 进行了 PECL 的支持,使用 PECL 安装 YAF 也很方便。但是作为一个重度 apt 依赖患者,还是希望能够使用源方式维护安装包。

因此,这个 PHP-YAF 的 PPA 源诞生了!

由于完全不会用 bzr,因此没有用 launchpad 的服务,我将打包程序和相关配置放在了 github 上。

继续阅读

As Golang beyond PHP