阅读更多

18顶
0踩

编程语言
这是一个Oreilly的记者对于DHH的采访,谈论了一些Ruby on Rails的技术和趋势
原文在:http://news.oreilly.com/2008/08/interview-with-david-heinemeie.html
下面是翻译:
====================

上周,在芝加哥我采访了David Heinemeier Hansson,谈论了一些Ruby on Rails的技术和趋势。一开始我询问他对芝加哥的看法,而后就询问了他一些有关Rails的文化和社会不断变化的问题。我们讨论到敏捷和许多技术在追赶他们。观看以下视频,或阅读下面的对话。



你也可以[url= http://cachefly.oreilly.com/news/2008/08/david-hansson-chicago.m4v]下载[/url]该文件。

[开始采访]
DHH:您好,我是David Heinemeier Hansson,Ruby on Rails 的原创,[url= http://www.37signals.com/]37signals[/url]的合作伙伴,我将会出席12月的柏林 RailsConf Europe。

Tim O'Brien:我们正在芝加哥的Wicker公园,居民区也叫Wicker,这是递归?

DHH:这是一种递归。我认为居民区的名字本身是根据公园的名字而来。因此我认为这就是它如何开始的。不管它是所谓的bucktown或是所谓的Wicker,甚至大多数人使用更长的版本:“我住在bucktown/Wicker公园”。

TOB:谈到芝加哥,是什么原因是您迁往芝加哥?为什么要从丹麦搬来?

DHH:几乎我所有的生活都是在丹麦度过的,提出搬到芝加哥来是在三年前,因为37signals。公司在芝加哥成立,有一半以上的雇员都居住在芝加哥。我的伙伴Jason Fried也居住在这里。我的女朋友要就读于这里的一所大学,所以我有机会来这,一切都是这么的顺理成章。

TOB:你是如何发现芝加哥的技术和创新?是否有丰富的文化和技术呢?跟旧金山比较呢?

DHH:我认为它非常不同于旧金山,它的伟大也在于它不同于旧金山。对我来说,并不是看中了它的科技,我不认为一个城市科技的强大是一件好事,这就是为什么我觉得它好。
芝加哥更多地是处在一个中立区。没有太多的高科技,但我可以在饭后跟您一起散步,这都是它的好处。芝加哥给人的感觉更“真实”,少了虚假,少了喧嚣……

TOB:你最近为Y-Combinator开办了start-up学校。

DHH:Paul Graham ,我不知道他是不是自称VC,可能不会。在每年春季和秋季的时候,他们运用早期阶段的天使基金。start-up学校开始用Y Combinator的钱来运营新的公司。
我被邀请在那发言。对我来说,这是一个伟大的机会。当然我也参加了其他类似的会议,在我心目中的想法是“let's get to VC, let's get eye-balls, let's get big, let's get bought”。所以我提供了一个候补的想法,如何建立一个公司,如何让公司成长,如何能不出售您的公司,如何使它变为更实际的东西。在这个基础的前提上我们要考虑的是如何获得更多的在线人数-这里有三个因数:有一个理想的产品,为产品制定一个合理的价格,无需从所有对立的路线赚取利润。你也可以采用VC的钱,靠广告或其他任何的方法,只向最终用户收取费用。

TOB:我们来谈谈Twitter。您觉得人们将Twiteer作为Rails scaling的例子这样公平吗?您能不能讲一讲为什么有人会说:Rails不可扩展因为Twitter不能扩展,它们之间有什么间接的联系?证明或反驳。

DHH:任何应用程序,不管是否能够扩展,通常都不会有一个整体的大量的工作要做,导致它与框架或编程语言或其他任何的高新技术陷入孤立的地步。有些人认为Twitter不可扩展,这是不正确的,它显然是可以扩展,并且每天都在成长。我每天都要使用到它,有很多人每天也同样要使用到它。它存在缺陷是肯定的,但是却不是不可扩展。Twitter从来就没有如今天这般强大,也从来没有如今天这般发展如此之快。
关于这些问题是否涉及到Rails的网络框架或其他,它始终只是一个不相干的问题。对于我来说,它只是作为一个过滤器。如果人们固执的认为是Twitter导致Rails不能扩展,我也无话可说。我不会深入的去解释,我只想说,他们根本就没有真正的了解这门技术。

TOB:我们做了一个关于消极和积极情绪的民意调查。Rails是笨重的企业系统的反面。你怎么面对不愿使用Rails的人,他们会说,看Twitter吧?

DHH:总体来说,Twitter的性能问题只是给了长期以来对Rails有恶意的人一个攻击的工具而已。而另外有很多人很喜欢Rails,不管反对者怎么说,Rails正在迅速普及,所有我们做的都是非常有趣的事情。

如果有人憎恨这些,那么就是他们害怕做有趣的事情,或者不敢面对反对常规的事情。宇宙有一种平衡机制,我们有大量的热情开发者每天开发Rails的工具和插件,因此有几个反对者不奇怪,这是一种平衡。

TOB:什么是Rails的文化?从外部来看,它显示出一种波西米亚式的随意,打败偶像崇拜的冲动。Rails在意识文化方面的引导和挑战是非常成功的。现在Rails开始进入稳定期,说一说现在它的文化和它如何改变的?你看到它的改变了吗?它面对的意识文化方面的挑战少了,革新减少,是否进入传统的波西米亚文化的套路,以及如何在文化上的团结?

DHH:我认为你非常正确。Rails一开始象一群叛乱份子,它拒绝教条,拒绝其他语言的僵化思路,因此出现了很多观念上的冲突和争论。现在Rails已经获得它的地位,在很多方面被证明是正确的,被更多的人接受,也就意味着Rails开始不那么边缘化了。但是我认为事情都是在发展的,总会有新的争论出来,Rails能够始终保持反传统的挑战地位。

现在,就有一个关于Web Services的,业界一直使用极其庞大繁重的SOAP和WS-Deathster方案,而Rails会寻找更加轻便简单的道路。

TOB:我不得不打断你,是否能够通过Soap4R在Rails中使用SOAP?这是一个惊人的实践。

DHH:是的,我不希望把这种方式当作我最大的敌人。我们做的很多工作,让人们来选择,我不会鄙视那些使用SOAP或者其他繁重框架的人,因为这也是他们的工作。虽然选择新系统的人们或者使用其他技术方案的人们,他们选择的技术很多时候我不能理解。

Rails会继续采纳意见和继续成为争论焦点。同时,我认为Rails的内心就如同从外部看到的一样,因为这是很个在很短时间建立的新技术。

同时有很多很多的开发者使用C#, Java, PHP等等,比使用Rails的开发者多的多。虽然,在Rails发布的5年来,我们积累了大量的用户。通过各种方式来为已经确立的Rails技术添砖加瓦是必要的,还有很多事情需要做。

如果我们和身边的接触的人都使用同一个博客,同一个聊天室,参加同一个技术会议等,你会趋向认为:每个人和我都很象,每个人都使用Rails,这是确定的。但是这是错误的,我们所处的环境只是整个大环境的一个小部分。我们必须接受很多其他的人和观点。

TOB:你能谈谈Iron Ruby或者J-Ruby是否是Ruby的替代技术?

DHH:这个很有趣,因为在很多情况,在实践和工具以及推送技术给用户的方式,Sun公司象一个邪恶的帝国。

TOB:很多方面称Sun公司为邪恶帝国?

DHH:我认为他们是。但是我意识到技术领域不止一个帝国,而且帝国也不是铁板一块。Sun的内部有很多部门,他们的工作非常棒。我认为Charles Nutter 和整个 JRuby团队就是。我和他们在一起不短时间,经常在不同的技术会议遇到,他们是令人敬畏的开发者,做了很多有趣而优秀的工作,他们的工作可以形容为:“Ruby 和 Java的对抗”。

而且,我认为他们在做很实用的工作,很多开发者使用Java环境,Java是成名已久应用广泛的技术,拥有巨大的应用基础,他们不得不在Java环境下工作,有时候技术领域不是看起来的那样有很多种选择。

TOB:在你的起始营地谈话中,你特别提到技术公司雇佣开发者来设计框架和APIs——这是一个巨大的错误?

DHH:我认为是的。我认为这个事情和一般认为的不一样。例如:在Java中重新应用Ruby不是一个设计实践,不是和设计一个API库的设计方式一样。我认为当你做这类的事情,不要重新应用,不要重新修改技术规格,也就是说,重新设计架构不是一个好方法。我不喜欢这样。但是在J-Ruby中重新应用Ruby我认为相当好。当你没有在真正开始做一件事情的时候,我认为视野决定了你不得不选择最难的方式来做。

这是一个抽象的差异,但是我肯定的相信类似Ruby和Rails的框架不能被那些全职工作的人所创立。(译者注:DHH反对全职工作啊,呵呵。) 你不能设计这类事务如果你并没有真正开始工作,同时面对真正的系统环境。同时成为客户和开发者这种感觉非常棒。你能够做更好的决定,并同时拥有更多乐趣。

TOB:Robert Lefkowitz 三周前在开源大会(OSCON)上做了演讲,他阐述了关于技术和惯例的区别,实际工作和领导工作的区别,工程技术和艺术以及科学之间的不同。Rails和其他成功的技术被归类于工程技术,有实际的需求和真实的产品来支持。那么设计一个API库或者设计一个抽象框架,是不是科学范畴的?

DHH:我肯定的说,在我的内心,我在科学中成长,技术也是如此。我认为他们举了错误的例子,类似Rails和API开发,我认为这两个更像艺术和技巧……我不认为我是工程师,我更愿意用工匠(Craftsman)来形容自己。

TOB:下一步你打算做什么?有什么技术抓住你的眼球,有没有虽然和你现在做的工作无关,但是你愿意仔细看看的技术,看能不能带来关于Rails的灵感?

DHH:现在出现了很多新的技术很吸引我。最近我对CouchDB和BigTable很感兴趣,另外一个就是Memcached,特别是整个使用键值过期和生成键值的方式。

TOB:BaseCamp和Write Board,你都是水平扩展,对不对?

DHH:是的,我们使用同一方式,在应用方向和web方向,我们水平扩展。如果我们需要更多容量,我们添加更多的应用服务器,更多mongrels,更多web服务器等等。在数据库方面,我们也在扩展。我们刚购买了一个更大的服务器群集来容纳BaseCamp的数据库。

TOB:你们在两个中间做了二级制复制?

DHH:是的,只是用来备份。所有读写操作都在单一的"big ass"机器上,而且我们这样做只是因为这样容易,而且经济。现在仍然是。这是一个有128GB RAM的机器,如果需要我们会扩展到256GB,并继续扩展。如果不是在一个机器上扩展会很痛苦。

18
0
评论 共 1 条 请登录后发表评论
1 楼 yangzx554 2008-08-25 14:54
这是一个有128GB RAM的机器,如果需要我们会扩展到256GB,并继续扩展。如果不是在一个机器上扩展会很痛苦。  这个配置有些恐怖

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • WIN32模态对话框按钮消息处理

    本文根据网络课程学习笔记整理,内容为建立了一个win32模态对话框,并拖入两个按钮后对按钮消息进行处理,程序在VS2019上运行通过。对代码做了详细注释。

  • MFC 对话框Dialog响应键盘事件

    在对话框程序中有时需要响应键盘和鼠标事件,MFC的对话框继承于CWnd窗口类,总结了如下几种可能的处理方式: 1,最直观的想法是重写类中的虚拟响应函数,这些响应函数有: 键盘相关:ON_WM_CHAR、ON_WM_KWEYDOWN、ON_WM_KEYUP等,对应的消息处理函数为:OnChar、OnKeyDown、OnKeyUp等 鼠标相关:ON_WM_MOUSEHWHEEL()、ON_WM_

  • 【MFC】基于对话框的键盘响应

    VC中键盘事件处理主要是通过对相应的消息的响应,这些事件有如:WM_CHAR、   WM_KEYDOWN、WM_KEYUP等他们分别对应OnChar、OnKeyDown、OnKeyUp消息处   理函数;当然在有些时候我们也可能需要用到对PreTranslateMessage函数的重载。   从这些事件的名称我们可以看出WM_CHAR表示字符事件,WM_KEYDOWN表示键   盘

  • 模态对话框响应对话框外的鼠标点击事件

    模态对话框响应对话框外的鼠标点击事件 在模态对话框中设鼠标全局钩子,并在回调函数 static LRESULT CALLBACK MouseHook(int n_code, WPARAM w_param, LPARAM l_param);中做响应处理。 在模态对话框中下好全局钩子后,当在模态对话框中点击鼠标时,w_param的值为WM_LBUTTONUP、 WM_LBUTTONDBLCLK、W

  • VC++6.0 CEdit 响应键盘输入事件

      摘自:http://blog.csdn.net/howard_liu1314/article/details/8222357 项目中要对对话框的键盘按键做出相应,实现逻辑如下: VS2005开发MFC的wince项目;在对话框中‘重写’ PreTranslateMessage方法; 1.头文件中添加:virtual BOOL PreTranslateMessage(MSG* pMsg...

  • 键盘消息处理(按下某个键,响应一个函数)

    可以利用PreTranslateMessage(MSG* pMsg) 函数来对键盘消息进行处理 例如:

  • MFC 对话框Dialog响应键盘事件(组合键Ctrl+A)

    在上一篇文章的基础上,这里描述如何捕获组合键,这里以Ctrl+A为例 做法就是按下Ctrl的时候用一个静态成员变量保存Ctrl是否被按下,当Ctrl按下的时候设置为true;当Ctrl键抬起的时候设置为false头文件声明 BOOL PreTranslateMessage(MSG* pMsg);源文件定义BOOL CmfcDlg::PreTranslateMessage(MSG* pMsg)

  • 对话框程序中处理ALT+F4(ESC)按键

        一般的WINDOWS窗口程序,可以使用ALT+F4来进行关闭,如果用模态对话框作为主窗口的程序也可以有同样的功能(下面会介绍怎么处理)。 如果要在一般窗口程序中要屏蔽ALT+F4键,就要处理WM_CLOSE消息,或是WM_SYSKEYDOWN等消息。当然我指的是一般的WIN32程序,对于MFC程序可能处理有些不同。    而对于以模态对话框作为主窗口的程序,如果没有在窗口过程中处理AL

  • pygame事件里按键松开事件响应慢

    最近学Python,根据Eric Matthes的《Python编程从入门到实践》,实现了书中的项目1-外星人入侵,并生成了Windows10下的可执行exe文件。此处提一下,虽然书中的代码逻辑没有任何问题,但由于某种原因,飞船移动的速度会是一次右键,移动多个像素点的情况(本来只应该移动一个像素点),经过一番分析,觉得是由于运行程序时响应按键按下没问题,但响应按键松开会略有延迟,结合各处资料并不停...

  • 模态对话框设置和虚拟键盘

    模态和非模态 模态对话框:在没有被关闭之前,用户不能与同一个应用程序的其他窗口进行交互,直到该对话框关闭。 非模态对话框:当被打开时,用户既可选择和该对话框进行交互,也可以选择同应用程序的其他窗口交互。 Qt中,显示一个对话框一般有两种方式,一种是使用exec()方法,它总是以模态来显示对话框,当运行的时候,你会发现当关闭这个对话框时,另一个对话框才显示;另一种是使用show()方法,它使得对话框既可以模态显示,也可以非模态显示,决定它是模态还是非模态的是对话框的modal属性。而model有独特的属性。

  • 响应键盘按键

     1.通常情况,百度之。 2.有些键,比如F1-F9,ESC等的消息,会被MFC内部截获,通常的方法可能会接收不到,这时候就需要在系统截获之前响应。方法是继承虚函数PreTranslateMessage。参考代码BOOL CGIS_PRO10View::PreTranslateMessage(MSG* pMsg){ // TODO: Add your special

  • C++按键响应

    <br />#include <iostream> #include <conio.h> using namespace std; #define ESC 0x1b // scan code for ESC character int main() { float f1 = 0.1f; float f2 = 0.1f; float f3 = 0.1f; int keypress = 0; do { cout<<"按键:"<<endl; keypress =

Global site tag (gtag.js) - Google Analytics