三月 11

CouchFoo: 像ActiveRecord, 但用于CouchDB

关键词 Thu, 12 Mar 2009 00:48:00 GMT

来源: CouchFoo: Like ActiveRecord, but for CouchDB

翻译: Andy Lu

Apache CouchDB是一个"分布式、容错、无模式、面向文档、可通过RESTful的HTTP或JSON API使用的数据库", 去年,它在开发者圈中得到了相当多的宣传。它是用Erlang写的, 所以具有Erlang环境带来的所有可扩展性和灵活性, 但作为一个RESTful的服务, 你可以从几乎任何地方使用它。

George Palmer, 一位英国Rails开发人员, 想要使用CouchDB, 但发现现存的类库(比如RelaxDB, CouchREST, ActiveCouchCouchPotato)虽然本身不缺少什么功能, 但还是没法满足George的需求。George需要的是尽可能像ActiveRecord的东西, 所以他开发了CouchFoo(又名couch_foo), 一个ActiveRecord风格的CouchDB接口。

基本的操作(创建记录, 查找, 甚至动态查找器)是与ActiveRecord大致相同的, 但为了应对CouchDB中的差异也做了一些补充(比如定义属性以实现类型或视图定义)。表间关联(has_many等)也可以如期运作。

这是George本人的聪明之处, 并且我知道基于他得到的强大反馈, 他已经决定向RailsConf递交一份关于CouchFoo的提案。看过那份提案后, 我只希望他的演讲被接受, 我也乐于从熟悉内幕的人士那得到更多消息。

三月 06

Heist: 一个用Ruby写的Scheme解释器

关键词 , Fri, 06 Mar 2009 10:32:00 GMT

来源: Heist: A Scheme Interpreter Written in Ruby

翻译: Andy Lu

Heist是由James Coglan用Ruby写成的Scheme解释器。Scheme是一种程序设计语言, 是Lisp的一种方言, Ruby的设计也受到了它的影响, 它仍然是学习函数式编程的流行之选(比如那本经典的《计算机程序的构造和解释》)。

Heist不但可以作为独立的Scheme解释器, 它还能以Ruby类库的方式在Ruby应用程序内部被用来执行Scheme/Lisp代码。

Heist除了是程序语言和Lisp狂热者感兴趣的东西外, 也是一个极佳的例子, 它不但是一个完整的, 写得好的Ruby程序, 同时也是一个结构良好的语言解释器。它包含了用Scheme写的测试(因而为该解释器提供了一个有效的检定)并且大多组织得非常好。即使你不想下载它, 去Github上的代码库看看也是值得的, 因为那有一些相当不错的编程。

这不是第一个用Ruby写的Scheme解释器。早在2008年, Phil Hagelberg就在开发Bus Scheme了, 但Github上的代码库从去年夏天以来就再没更新过。

二月 28

TinyRB: 给大家一个年轻、微型的Ruby虚拟机玩

关键词 , Sat, 28 Feb 2009 12:19:00 GMT

来源: TinyRB: A Young, Tiny Ruby VM for Us to Play With

翻译: Andy Lu

Marc-André Cournoyer证明了几乎任何事都是有可能的, 因为他竟开发出了一个名为TinyRB的微型、实用且惊人"不慢"的Ruby虚拟机。一些基本的测试表明, 它在斐波那契基准(benchmark)上要快于1.8, 但稍慢于JRuby, Rubinius和YARV(Ruby 1.9)。

到目前为止, TinyRB仅用了1541行代码, 它近期内将不会取代您常用的Ruby解释器。虽然它支持大多数关键字和一些基础类, 包括Class、Object、Fixnum、Symbol和String, 但不支持Array, Module, Float等一大堆必不可少的东西。

你可以把当前的TinyRB当个游乐场, 进去玩玩。Dave Thomas上次在RubyConf 2008的演讲中建议我们用不同的方式"创建Ruby分叉", TinyRB正好可以让你小试一下。所以, 菜鸟们.., 继续前进吧——如果你可以为了尝试和玩玩一个Ruby虚拟机的想法而支付成年红牛和比萨饼订单的话.., 进来吧

在其他附加实现的消息中, Brian Ford谈到一些新的调整是如何将Rubinius的性能提高2倍的。

二月 25

以行为驱动开发的方式从零开始构建一个Ruby Gem

关键词 , Thu, 26 Feb 2009 04:12:00 GMT

来源: 以行为驱动开发的方式从零开始构建一个Ruby Gem

翻译: Andy Lu

如果你阅读许多博客的话, 你或许会发现人们好像将测试(或者与它等价的行为驱动)看做圣杯来谈论, 然而大多数的Ruby书籍和在线教程并没有涵盖关于测试的诸多细节。去年, Jamie Van Dykes在The Rubyist杂志上发表了一篇名为《以行为驱动开发的方式构建Gem》的文章以缓解这种状况(此前该文被唯一许可给该杂志)。

这篇文章中, Jamie以测试驱动开发(BDD)的方式(具体地, 使用RSpec)从零开始构建了一个Ruby库(最终以Gem形式分发)。如果你不是一个测试老手并且RSpec对你来说仅仅就像一个花哨口号的话, 那么读Jamie的教程是尝试这一概念的极佳方式, 因为它是由代码驱动的, 所以你很快就能玩起来。

二月 24

Sprockets: Ruby驱动的JavaScript依赖库, 来自37signals

关键词 , , , Tue, 24 Feb 2009 13:43:00 GMT

来源: Sprockets: A Ruby-powered JavaScript dependency library from 37signals

翻译: Andy Lu

管理和组织Rails应用程序中的多个JavaScript文件或许真的很痛苦, 尤其痛苦的是, 在你部署程序的同时要为了更好的程序性能而最小化那些JavaScript文件。

让我们走进Sprockets, 来自37signals(或者更确切地, Sam Stephenson)的新的依赖管理和连接库。一旦安装Sprockets, 你就可以将应用程序中的JavaScript文件组织成更小的和更好管理的组块, 这些组块可以分布于若干目录和文件。

根据JavaScript文件开头的指示代码, Sprockets可以确定当前JavaScript文件所依赖的文件。当部署程序的时候, Sprockets就会利用这些指示代码将你的多个JavaScript文件合并成一个单独的文件, 以获得更好的性能。

利用一个YAML文件, Sprockets允许你将资产文件(样式表, 图片等)与JavaScript捆绑, 也允许你向JavaScript文件中插入字符等串常量。

Sprockets可以通过Ruby gem或Rails plugin的方式使用, 你可以在GitHub上得到它的源代码。

二月 24

Passenger-Stack: 快速完全安装Ruby和Passenger堆栈

关键词 , , Tue, 24 Feb 2009 13:00:00 GMT

来源: Passenger-Stack: Quickly Install a full Ruby and Passenger Stack

翻译: Andy Lu

Passenger-Stack是为配置工具Sprinkle编写的一套脚本, 它使得安装一个基于Ruby, Apache和Passenger的完全堆栈几乎成为一个一行代码就能完成的任务。它可以将一个Ubuntu或Debian服务器从基本安装变成可以部署基于Rack的程序(包括用Rails, Merb, Sinatra和Ramaze编写的)的状态。

Passenger-Stack背后的Sprinkle脚本是由Ben Schwarz开发的, 对于Sprinkle, 最好的入门教程当属Ben Schwarz的5分钟屏幕录影, 这段录影展示了Sprinkle是如何在Slicehost上的Ubuntu 8.10版服务器上工作的。Ben很希望其他人创建他在Github上的脚本分支, 并进一步定制它。

顺便提一下, 你可能不熟悉Sprinkle, 它是一个软件配置工具, 你可以用它来执行安装和远程构建。本质上, Sprinkle允许你用一种基于Ruby的领域特定语言写安装脚本。

二月 23

Ruby助你开始信用卡处理

关键词 , Mon, 23 Feb 2009 05:09:00 GMT

来源: Get A Jump Start On Credit Card Processing from Ruby

翻译: Andy Lu

时间追踪网站freckle背后的开发团队刚刚发布了一份PDF版的指南, 它详细介绍了用Ruby处理信用卡的相关术语和详细过程。

这份信用卡处理起步指南很像Amy Hoy之前关于Rails的指南, 它非常生动, 由三部分组成, 很容易理解。它不但给出了信用卡支付处理相关过程和动作的概览, 也阐释了可以用来验证信用卡的不同方法。其中一个利用Active Merchant的6步Ruby样例脚本向你展示了处理支付的基本步骤。

该指南还给出了一个搭建核对清单, 并讲解了你需要拥有的不同类型的银行帐户。对了, 这还有一个指向由freckle成员Thomas Fuchs用Javascript写的信用卡识别和验证库的链接。

对于想向项目中加入支付处理的开发者来说, 这是一个绝佳的起点。仅仅15页的简短指南却以生动的插图向你演示了实现信用卡支付处理的所有必需基本步骤。另外, 这仅是该指南的第一版内容, 与此同时, freckle团队已经开始了该指南下一版本的写作。

二月 13

Github热门——2009年1月

关键词 , , Fri, 13 Feb 2009 12:51:00 GMT

来源: What’s Hot on Github - January 2009

翻译: Andy Lu

Github热门每月发布一次, 主要记录本月更新的项目或新出现的有趣项目, 但仅限于Github上的Ruby项目。对Ruby和Rails开发者来说, Github去年已经成为非常受欢迎的聚集地, 所以我想列举一些我自己觉得有趣的新的或更新了的项目。

本月精选:

二月 11

Steve Pugh写的《非常酷的Ruby脚本》

关键词 , Thu, 12 Feb 2009 02:44:00 GMT

来源: Wicked Cool Ruby Scripts by Steve Pugh

翻译: Andy Lu

《非常酷的Ruby脚本》(Amazon.com链接——目前是19.77美元)是一本关于Ruby的新书, 作者是Steve Pugh, 这本书只有一个目标: 与读者分享一些“很棒的、非常酷的”各种类型的Ruby脚本。出版商是No Starch, 他们给我发了一份副本让我评论。

首先, No Starch出版社是一家独立的技术类图书出版公司(这是当今少有的), 从这本书可以看出他们有真正的激情去出版乐于被人们拥有的图书。印制精良的书很少见, 但这本书的纸质优良(获得可持续林业倡议组织的认证)。本书采用一种叫做"RepKover"的装订方式, 它可以使书籍更灵活, 更容易展开平躺而书页不弹回合拢。总体来看非常棒——设计精美的封面, 漂亮的排版, 还有非常好的纸张。成品的质量之高, 使我几乎都想写本新书, 这样我就可以与他们合作了。

内容: 好的方面

说了那么多关于纸张和排版等……那么内容怎么样呢?嗯, 这可让我有点左右为难。就先从好的方面说吧。

我很喜欢Steve的风格。前言和序言简洁, 重点突出。他的风格和语气很容易理解, 这本书从头到尾内容翔实。本书的结构性很强。有9个章节涵盖了一般的脚本开发领域, 比如"网站开发", "Linux系统管理", "图片工具"和"游戏与学习工具"——之后, 一个单独的章节专门介绍Metasploit 3.1模块的编写……

单独的脚本介绍也非常好。首先概括任务——比如"检查改变的文件"——然后直接深入到代码。代码被标有行号, 然后解释部分根据行号进行参考, 深入研究代码是怎样运行的。从教学层面上看, 这是很好的做法, 这让我很容易了解Steve正在试图展示什么。如果你想亲眼看看, 可以下载第一章"通用工具"的PDF版。

内容: 不好的部分

第十章为Metasploit 10写了一个模块, 除了这章位置的安排难以理解外, 脚本的选择也有点不妥。随机的从全世界抽取58个脚本, 让人有点摸不着头脑。例如, 通用脚本组由7个文件处理脚本, 一个抵押计算器和一个Windows进程查看器组成。

这本书总体感觉有点短促(不足200页)随意。它就像900页的Ruby Cookbook的更短小、非正式的版本。如此的短, 它不能涵盖很多观点, 而是快速的从一点跳到另一点。

这本书适合谁读呢?

如果单看这本书的高质量装订, 排版等, 而不看内容的话, 这本书对几乎所有的Ruby开发者来说都是一个好礼物。也就是说, 尽管本书的内容很随机, 但是非常适合新手和中级开发者, 如果你刚刚学了这门语言且想要看一些印出来的实例的话,《非常酷的Ruby脚本》将会是一本不错的书。

以我看来这本书的问题是编辑的问题。Steve写得非常好, No Starch的产品质量(就实际产品而言)非常棒。我认为某人(这通常会是编辑)没有考虑这本书的存在的理由。这本书的市场是不明确的。Steve的风格将表现出来, 赢得许多读者, 但如果推荐这本书, 我很难知道谁会喜欢它, 或者谁会觉得读这本书是在浪费时间。如果你的买书预算还有20美元的闲钱, 我建议你买一本, 这样你就能随时阅读。

至少, 我已经被No Starch制造书的方式给征服了, 所以当然要建议你看看他们的产品目录。他们的书包含的范围从Java, Python到GIMP, SCSI, 甚至还有《漫画微积分》(即将出版)!

想了解更多吗? 直接到出版商的页面或者查看Amazon.com页面

二月 11

Wikipedia需要Ruby人才来充实他们的移动版本

关键词 , , Wed, 11 Feb 2009 15:07:00 GMT

来源:Wikipedia Needs Rubyists to Flesh Out Mobile Vision

翻译:Harish Tan

你可能知道大名鼎鼎的Hampton Catlin,他发明了被广泛应用于Ruby网络程序的Haml标注语言,Sassmake_resourceful。不过你所不知道的是,Hampton开发了一个成功的iPhone上的Wikipedia应用(iPedia née iWik)。现在他已经受雇于Wikipedia, 带领一个团队开发Wikipedia的移动网站(基于Ruby技术!)。

Hampton已经大规模的把Ruby技术引入了Wikipedia,现在他需要更多的Ruby人才的帮助,以推动这一进程的发展。本文作者邀请Hampton做了一次访谈,他介绍了他在Wikipedia的主要工作,Wikipedia所需要的技术以及Ruby人才所能参与的开发活动:

你在Wikipedia主要的职责是什么?

Hampton Catlin:我的头衔是“移动开发部主任”,基本上我负责保证使用移动设备的用户能够访问Wikimedia项目所提供的服务。在起步阶段我们着重点放在Wikipedia,但因为所有的Wikimedia项目都在使用同样的基础代码,我们的负责范围未来将会覆盖所有的项目。

我主要的职责是为不同的移动项目建立相应的开源社区。Wikipedia是世界上第四大网站,同时它大部分的编程工作都是由开源社区完成的。在目前的起步阶段,我本人进行大量的基本编程工作,负责维护代码的质量。但将来我们会更多的寻求志愿者的帮助,让他们负责不同模块的开发工作。

你们在Wikipedia的工作中是如何使用Ruby的?

 我们目前主要使用Merb(Rails 3?)平台,另外一系列的Ruby类库被用于后台的格式化服务。实际上,我们刚刚在上个星期启动了这些服务,尽管它们还很粗糙,但基本框架都已经搭建好了。基本上,我们使用Ruby程序来为不同的移动应用程序提供可定制的格式化的文章页面。这个服务的网址是:http://en.m.wikipedia.org

Ruby程序员应该如何为Wikipedia的项目作贡献呢?

首先你们可以从 http://github.com/hcatlin/wikimedia-mobile/tree/master签出源代码,然后运行rake todo:list来查看等待处理的任务列表。我们的项目很快就会拥有一个完善的缺陷跟踪系统,但目前来说,由于项目还处于很早期的阶段,我们还用不上bugzilla。

我想对于Ruby程序员来说,只是一个很好的机会。因为Wikipedia是一个很受欢迎的网站,你所作的贡献将会被千千万万的人所看到。另一方面,他还是一个很容易加入的简单项目。我已经花费了大量的时间来保证代码尽可能的简单和具有逻辑性。同时我也花费了大量的时间来撰写文档,保证人们在刚加入这个项目时不会感到疑惑。如果你还处于学习阶段的话,这个项目也可以作为你的入门项目。

除了那些通常的代码贡献外,我还在寻找热心人来帮助我们添加新的移动格式。目前我们主要集中注意力于“XHTML"和"WebKit"这两个主要的平台。其它的流行平台,如iPhone和Android,也在考虑的范围之内。然而,如果你有一台Blackberry,同时你希望用这台Blackberry能够很好的浏览Wikipedia页面的话,你所需要做的事情也很简单!你仅需要添加一台设备到我们的列表中,指出它的User Agent,然后创建相应的页面就可以了,简单极了。在这之后,你就可以在宴会上得意的炫耀:”啊哈,你也有一台Blackberry,过来看看我上个周末所做的东西吧“。

最后一件我们需要帮助的工作是推广。我们需要把我们的网站推广给普通用户使用。如果你认识朋友在举行一个移动方面的研讨会或在出版媒体工作的话,不妨尝试接触他们,以协助推广我们的网站。第一代的Wikipedia移动网站失败的主要原因是没人知道它。我的工作的一部分也是确保普通用户知道我们的新网站。

你预期明年你的团队会为Wikipedia推出什么新的技术或服务呢?

除了移动服务外,就没有太多的东西了!我们所要做的就是不断的完善我们的移动网站并进行推广,处理缺陷报告,处理新的移动格式。同时,如果你们有兴趣学习iPhone的开发的话,请看一下我们针对iPhone应用的最新的版本:http://github.com/hcatlin/wikipedia-iphone/tree/master

目前,这个版本还很粗糙,它是我这个星期工作的成果。同时我们还需要懂得Java开发的程序员协助我们开发一个本地的Android应用程序。好,回到Ruby这个话题上,目前我正在考虑构建一个Mediawiki Ruby类库。但由于构建Ruby类库不是我的强项,因此目前这个项目仍未启动。如果任何人对这个类库项目有兴趣的话,不妨给我发一个email(hcatlin -at- wikimedia.org),这样我们可以正式的启动这个类库项目。

更早的: 1 2 3 ... 5