Categories

Calendar

September 2017
M T W T F S S
« Jun    
 123
45678910
11121314151617
18192021222324
252627282930  

Tidy your Rakefile

Rake 我就不再介绍了,Ruby 的 Make ,许多方面都比 Make 要更好用一些。和 Makefile 不同的是,Rakefile 本身其实就是一段 Ruby 代码,这样的好处有很多,一方面在 Rake 里面就可以很直接地做任何 Ruby 能做的事了,另一方面由于 Ruby 对 DSL 支持良好,所以 Rakefile 通常看起来也并不那么“代码”。

不过,代码始终是代码,Makefile 尚且可以写得很乱,Rakefile 要写乱就更容易了,幸运地是,Rake 提供了一些功能让我们可以来对 Rakefile 做一些组织工作。

RabbitMQ: high performance messaging solution

RabbitMQ 是一个由 Erlang 写成的 Advanced Message Queuing Protocol (AMQP) 实现,AMQP 的出现其实也是应了广大人民群众的需求,虽然在同步消息通讯的世界里有很多公开标准(如 COBAR 的 IIOP ,或者是 SOAP 等),但是在异步消息处理中却不是这样,只有大企业有一些商业实现(如微软的 MSMQ ,IBM 的 Websphere MQ 等),因此,在 2006 年的 6 月,Cisco 、Redhat、iMatix 等联合制定了 AMQP 的公开标准。反正现在这个世道通常都是小公司拥抱标准,大企业自己搞一套标准,不过公开标准总还是对大众有利的。

_why

昨天晚上心情沮丧无法平静,失眠到很晚,今天早上起来就看到一个非常让人惊讶的消息:_why 突然消失了。而且这件事似乎在社区里造成了轩然大波:

Reddit: Where is _why?
Reddit: This is a sad day: _why disappears.
Hacker News: Eulogy to _why
Hacker News: _why is no more
Ruby Inside: “Why The Lucky Stiff” Is Missing
Ruby Inside: A Cup Full Of Why: 32 Why The Lucky Stiff Links

_why 是 Ruby 社区里神级的人物,很多产,就我自己来说,经常用的他的作品是分析 HTML 的 Hpricot 和那个在线的 Ruby 解释器。他也很会画漫画,写有一本图文并茂的 Ruby 入门书挂在网上,也是非常受欢迎的。另一个神秘的地方是似乎没有谁知道他的真名,最早我在收录文章到 Nextlib 的时候,喜欢把作者的全名找到填上,可是却怎么也找不到 _why 的全名,大概是从这个事情开始对他印象深刻的吧。

for vs. each

虽然这个问题我是在 Python 里遇到的,但是用 Ruby 解释起来比较容易一些。在 Ruby 里,遍历一个数组可以有很多种方法,最常用的两种无非是 for 和 each:

arr = [’a’, ‘b’, ‘c’]
 
arr.each { |e|
puts e
}
 
for e in arr
puts e
end

通常我比较喜欢后者,似乎因为写起来比较好看,不过从效率上来说前者应该会稍微快一点,因为后者实际上是在遍历的过程中对每个元素都调用一个 lambda 函数来做的,虽然一般情况下并不明显,不过设置上下文并调用函数确实是有开销的,特别是在动态语言里面(不考虑 JIT 内联优化的话)。不过这次的问题并不是性能。然而确实跟“ each 对每个元素都会新建一个 scope 而 for 则不是”有关。

你用什么计算器?

我自己的口算能力非常弱,不过我相信就算是口算能力比较强的人偶尔也会需要借用一下工具吧。计算机号称有通用计算能力,像我们这样大部分时间都在电脑前的人通常都会优先考虑电脑上的计算工具吧。其实这样的工具通常都是偶尔拿来用用,甚至是能找到什么就用什么了,并不会去太在意它们,不过昨天我看到了一篇比较有趣的 blog ,觉得果真是大千世界,无奇不有,大家平时用的计算工具也真是千奇百怪。

然后我就开始回想自己都用些什么工具了。最开始自然是 Windows 自带的那个计算器了。不过那个东西的确是比较弱,明明是电脑软件,却非要去模拟计算器的界面和操作方式,不过我觉得它那个进制转换的功能确实不错。后来就乱七八糟地用一些,包括从网上下载的有各种杂七杂八的功能(比如单位转换)功能的所谓“超级计算器”之类的,也有直接在 Google 搜索框里计算的。