2008-04-13

mod_rails尝鲜

关键字: mod_rails
Passenger(俗称mod_rails)是最近刚刚发布的Apache module项目,刚一出来就得到了诸多好评,JavaEye新闻也有两篇报道: Rails部署也可以简单得像PHP一样 Passenger(mod_rails)新的RoR部署方式 其中性能评测更加令人印象深刻 好像还有人称,未来RoR的主流部署方式将是mod_rails,而且这个项目的作者还貌似一个华人,叫做“赖洪礼”,所有的这一切都让人挺有兴趣,于是我在周末也简单的安装和测试了一把。 如果已经安装好Apache和Ruby on Rails的环境,并且把Apache的bin目录和ruby的bin目录配置到PAT ...
之前写过一篇在Linux平台上安装和配置Ruby on Rails详解,可能是有点高估了Linux的普及和应用程度,无数安装和配置的问题都以各种方式向我涌过来。这里集中的提供一下疑难解答: 一、到底我应该用Lighttpd,还是Nginx/Mongrel? 现在Nginx/Mongrel的部署方式越来越受欢迎了,很多人置疑Lighttpd/FastCGI,并且现在也涌现了一些比Mongrel性能更好的例如Thin,ebb等ruby应用服务器,那Lighttpd/FastCGI真的过时了吗? 大家有兴趣可以看一下我这篇文章:RoR部署方案深度剖析,Lighttpd提供了很多其他Web服务器 ...
2008-01-14

RoR部署方案深度剖析

关键字: deployment
RoR的部署方案可谓五花八门,有Apache/Fastcgi方式的,有Nginx/Mongrel方式的,还有lighttpd/Fastcgi方式,也有人使用HAProxy/Mongrel,各种部署方式都是众说纷纭,让人搞不清楚哪种方式更好一些。我的这篇文章就是希望结合我们运营JavaEye网站一年多以来的经验(通过统计Rails的production.log,JavaEye网站目前每天处理超过70万200 OK状态的Ruby动态请求,应该是国内目前负载量最大的RoR应用了),为大家剖析RoR部署方案的优劣,帮助大家选择适合自己生产环境的RoR部署方式。 在讨论部署方案之前,先让我们看一下Ro ...
传统的Web服务器在处理文件下载的时候,总是先读入文件内容到应用程序内存,然后再把内存当中的内容发送给客户端浏览器。这种方式在应付当今大负载网站,音频视频网站力不从心。sendfile是现代操作系统支持的一种高性能网络IO方式,操作系统内核的sendfile调用可以将文件内容直接推送到网卡的buffer当中,从而避免了Web服务器读写文件的开销,实现了“零拷贝”模式。 作为最流行的轻量级Web服务器的翘楚,lighttpd提供了良好的sendfile支持,JavaEye网站服务器使用的就是lighttpd。在Linux操作系统上面,只需要在lighttpd.conf配置文件如下配置,ligh ...
孟岩最近写了一篇博客: Ruby 1.9不会杀死Python 这篇文章很有点标题党的意思,所以在JavaEye论坛很快被水掉了,只好锁贴: http://www.javaeye.com/topic/153651 但我个人对于孟岩的观点是不敢苟同的。首先我并不同意所谓魔幻语言和简约语言的分类。其实Martin Flower论述过这个问题,他是用“人性化接口”和“最小接口”来区分编程语言的风格化差异的,请看这篇文章: http://martinfowler.com/bliki/HumaneInterface.html 其实不用我多说,Martin论述的挺充分了。强把Ruby和C++归 ...
万众瞩目的Ruby on Rails 2.0已经发布了,Rails框架在2004年诞生以来,一直保持着相当快的版本升级速度:2005年发布了Rails1.0版本,2006年初发布Rails1.1版本,2007年初发布Rails1.2版本,而还没有等到2008年,在2007年圣诞前夕的12月6日,Rails2.0已经发布。 Rails框架每个大的版本升级都给我们带来了相当多的新功能,新惊喜。Rails1.0带给我们完善的单元测试和集成测试;Rails1.1带给我们DataBase Migration和RJS;Rails1.2让我们看到了REST的光明前景,那么Rails2.0又将带给我们什么呢 ...
Web开发敏捷之道(第二版) 《Web开发敏捷之道(第二版)-应用Rails进行敏捷Web开发》这本书的中文版已经上市,关于这本书在RoR书籍市场的地位就不用赘述了。有意思的是,这本经典的Ruby on rails教科书和我们JavaEye网站非常有缘分: 去年8月份,这本书第一版中文版上市的时候,正值我们使用Ruby on rails开发JavaEye2.0的关键时期,所以我毫不犹豫购买了三本,开发团队人手一册,那个时候,我们开发团队也是刚刚开始学习Ruby on rails,所以的确帮了不少忙。今年8月份,这本书第二版中文版也上市了,刚巧我们开发团队正在开发JavaEye3.0,这次是 ...
RoR的部署方式从架构上来说分为前端和后端: 一、前端 前端的作用就是处理静态资源,将动态请求分发到后端,有时候也带有一些额外的功能,例如对特定URL进行rewrite和redirect,对HTTP输出进行gzip压缩等等。 前端目前已知的可以选择apache, lighttpd, litespeed, nginx, haproxy 1、apache2.2 apache是全球市场占有率最高的web server,超过全球互联网网站50%的网站都用apache。apache2.2 + mod_proxy_balancer是一个非常流行,非常稳定的方案。 使用apache2.2唯一的问 ...
统计网站的访问量有很多专业的第三方工具,例如Google Analytics,提供强大,而且详细的统计功能。当然,也许不是每个人都需要这么复杂而且操作麻烦的工具,如果你只是需要大概了解一下网站的访问量和访问URL的比例,那么让我们看看最简单最容易的统计工具:Unix Shell。 一个RoR网站的访问纪录,Web Server(Apache or lighttpd)会记录所有的访问请求,包括动态请求和静态请求,但大量图片,JS,CSS的请求对我们没有太大的统计价值,因此web server的日志参考价值就不大。 RoR会记录所有动态请求日志到log/production.log里面,我们要 ...
5月17日在美国波特兰举行了railsconf2007大会,在本次ruby on rails盛会,一众ruby社区大佬自然纷纷亮相,RoR作者DHH,Dave Thomas,David A Black, Chad Folwer等等,连Robert C Martin也献身演讲。大会的演讲内容基本上集中在REST,RoR的部署,单元测试等几个主题上来。大家可以下载大会演讲稿参考: http://conferences.oreillynet.com/pub/w/51/presentations.html 大会照片: http://www.flickr.com/photos/x180/sets/72 ...
在rails里面,我们可以用很方便的声明方式来定义model之间的关联关系,例如: class Topic < ActiveRecord::Base has_many :posts belongs_to :user end 那has_many和belongs_to究竟是什么东西呢?其实他们是Topic类的class method,标准写法是: class Topic < ActiveRecord::Base Topic.has_many(:posts) Topic.belongs_to(:user) end 那么has_many可 ...
ruby的method作用域和Java一样,修饰词都有private,protected和public。其中public的含义都是一样的,但是private和protected却完全不一样。这一点在《Programming ruby》当中语焉不详。今天看了《ruby for rails》第7章才搞明白了。 一、Java当中的含义: private方法在Java当中的含义是只在当前类范围之内可以调用,当前类的子类也无法访问,但能被同一类别的其他对象实例调用,例如: package com.javaeye; public class C { private String ...
先看CSDN上面Robert C. Martin博客中文版: http://blog.csdn.net/rmartin/archive/2006/08/14/1064049.aspx 引用从我目前看来,Rails是一个高产的敏捷环境,任何人都应该认真关注它。在我看来,因为Rails具有比Java或是.Net快达五倍甚至更多的开发效率,一个Rails团队可以远远将Java和.Net团队抛之于后。我知道辩驳方会担心"E"这个词(译注7)。我的回应是:“如果你不及时跟进,我觉得没什么问题,只要你不妨碍我们把事情搞定。” 作者简介:Robert C. Martin是Object Mentor公司 ...
yawl,dreamhead他们搞XRuby项目,我除了敬佩他们的精神之外,一直对XRuby走的编译路子颇不以为然,总想,把动态的ruby代码编译成了静态的class以后,就丧失了RoR快速修改代码的优势了。但今天突然想明白了,这绝对是一个爆有前途的项目! 现在RoR要进入企业应用,面临的最大障碍是什么?我认为不外乎两点: 1、企业对于非Java平台解决方案的排斥 现在大多数企业应用都是构建在Java平台上的,你让他采用dotnet都不干,更别说ruby了。但大家想阿,我用RoR开发的一个项目,然后我编译成Java class,给他部署到JVM上面去跑,他不就是一个100%纯粹的Java ...
现在学习RoR的人越来越多了,ruby方面的图书也越来越多了,如何挑选合适的书籍,节省必要的学习时间就显得很重要了。可以这样说,学习RoR编程只看这三本书就足够了,其他别的书统统不要去看了,省得浪费时间。 一、rails编程要看的第一本书《Agile Web Development with Rails第二版》 最经典的rails学习书籍,作者是ruby和rails社区的领导者之一。第二版中文版译者已经翻译好交出版社了,出版社什么时候上市还不清楚。等不急的自己看英文版也不错,原作者的英文写的很易读。我自己在春节期间就把第二版英文版从头到尾读过了一遍。 二、rails进阶要看的第二本书《 ...
2007-03-05

Windows平台的ruby IDE 点评

关键字: IDE
在MacOS平台几乎没有什么争议性,大家都用TextMate。但是Windows平台可供选择和使用的IDE很多,却各有各的长处和短处。基于我用过的所有ruby IDE点评一下。windows平台的RoR IDE主要分为两类:一类是重量级的全功能IDE,例如Eclipse,Netbeans,IDEA和jedit,运行起来很耗资源,功能比较齐全;另一类是轻量级的IDE,例如Komodo,RoRed,vim,emacs,E,下面一一点评之: 一、重量级的IDE 1、radrails - 当前最值得推荐的IDE radrails是基于Eclipse的插件,当前版本0.7.2。radrails继承 ...
今天在Ruby Inside网站看到了对E编辑器的推荐,于是下载E编辑器,惊讶的发现,E编辑器完全是照抄TextMate的方方面面,bundle方面可以直接使用TextMate的,快捷键也基本一致,操作方式当然也是八九不离十。请看E的主页上面有相应的screenshot: http://www.e-texteditor.com/index.html E编辑器目前售价34.95美元,低于TextMate的39欧元的价格。下载的版本免费试用30天。 经过我的试用,可以确认,这次绝对不是狼来了,E编辑器基本上就是TextMate的Windows版本克隆。但是E编辑器现在还在beta版本,bug ...
2007-02-15

用block简化编程一例

关键字: block
block在ruby中被广泛的使用,即使是Java,spring也大量使用类似的概念来应用于template,但远远没有ruby好用。来看一个简单的应用实例: 在ruby中自己调用memcache-client对费时的查询进行缓存,也就是自己实现的简单的查询缓存: if RAILS_ENV == 'test' @top_topic = TopTopic.get_topic elsif @top_topic = Cache.get("TopTopic.get_topic") Cache.put("TopTopic.get_topic",@top_topic, 60*30) if ...
2007-02-12

ActionController::TestSession的bug?

关键字: rails test
我在看《Agile Web Development with rails》这本书第二版的单元测试这一章,其中在functional test这一部分,rails提供了一些模拟浏览器请求的get,post等方法,其支持参数格式例如: get :action, {params}, {session}, {flash} 然后这本书第202页给出一个指定Session的例子为: def test_index_with_user get :index, {}, {:user_id => users(:dave).id} assert_equal(users(:dave).i ...
引用Java程序你可以生成UML来读,可以很方便地navigate,这些便利在Ruby中享受不到。这是Ruby程序不好维护的一方面。 Java生成UML来读,但凡大一点的框架软件,UML图又大又复杂,根本看不出来头绪,这是不切实际的做法。 引用另外一方面,由于语言本身的动态性,Ruby没有强大的IDE。这对接手维护的人来说确实是很头疼的一件事。 TextMate,Radrails,VIM对于编程的导航都很不错。但这不是最重要的。最重要的是rails项目的结构非常固定,每个文件也不大,该写什么不该写什么,框架都框死了。维护的人其实很容易的,他只要熟悉rails,根本不看代码就知道哪部分代码应该 ...
2007-02-01

ruby on rails应用性能优化之道

关键字: rails performance
这是一篇我们运营JavaEye网站将近半年时间所得到经验的总结。目前在整个rails社区,都极少有运营rails大访问量网站经验的人详细的谈这个话题。至于国内,rails应用都停留在学习和尝试阶段,真正投入商业运营的基本找不到,所以谈这个话题为时太早,颇有对牛弹琴的感觉。所以权当是个人的总结性文章吧,也不会很详细的展开谈论,能对大家有所启发就好。 一、硬件 1、CPU ruby解析器相对于JVM,PHP解析器来说,比较低效,可能会导致比较多的context switch,因此提高CPU和内存之间的总线带宽和传输速度会对ruby应用有比较大的性能提升。在目前主流的x86_64 CPU当中,A ...
在Windows平台使用Apache2.2和Mongrel运行Ruby on Rails     一、安装Ruby、rails、mongrel和Apache2.2   从rubyforge网站下载One-Click Ruby Install,运行安装程序,就安装好了ruby和rubygems。   运行命令: gem install rails –y gem install mongrel –y gem install mongrel_service -y 安装好了rails和mongrel   ...
在Linux平台上安装和配置Ruby on Rails详解   ruby on rails推荐的生产运行环境是Linux/FreeBSD/Unix,即Unix系列的操作系统,采用lighttpd+FCGI的解决方案。以下我将以Linux操作系统,lighttpd+FCGI,MySQL数据库为例,从源代码编译安装开始讲解。   在安装之前,应该确认Linux操作系统已经安装好gcc编译器,否则请用Linux安装光盘先行安装gcc编译器: gcc –v 如能返回gcc版本号,则gcc正确安装。   一、安装Ruby解析器   ...
2006-12-27

rails作者DHH谈及REST

关键字: REST
http://www.loudthinking.com/arc/000602.html CSDN上面有中文的翻译: http://blog.csdn.net/dhansson/archive/2006/11/26/1415180.aspx 标题是“死星不可避免的灭亡 ”,引用星球大战的典故,含义是说对于那些庞大商业公司和机构搞出来的貌似威力无比的SOAP和Web Services就好像星球大战中帝国军队建造的终极武器-死星。 引用 现在感觉起来我们已经到了星球大战-新希望这部电影的最后20分钟。...... 而对甲板上的帝国指挥官来说,我敢肯定他们没有什么需要担心的事情标准化过程正 ...
毫无疑问,ruby on rails这个号称开发速度10倍于Java的快速web开发框架是2005年2006年连续两年web应用开发领域最大的奇迹。自从2004年7月ruby on rails第一个版本发布以来,ruby on rails以令人惊讶的速度迅速征服了web应用开发领域,在2006年3月毫无悬念的获得了第16届Jolt大奖的web开发工具奖项;rails的作者DHH(David Heinemeier Hansson)也因此得到了巨大的荣誉,2006年8月荣获OSCON(全球开源大会)年度最佳黑客;而依靠ruby on rails起家,开发web2.0互联网应用的37signals公 ...
是的,使用RoR肯定需要新的软件开发方法论来指导,但是这一点尚且需要更多实践项目的探索才能有更进一步的想法。这不像单纯钻研技术,看看文档,写写code观点就可以出来的。 不过从更加宏观的角度来说,RoR需要你采用一种完全不同的开发软件的思路和方式,也就是ozzzzzz说的方法论吧。例如在我们开发JavaEye2.0网站之前就确定了一些原则,这些思路和传统软件思路完全不同,例如: 1、传统软件要求明确需求之后再开发,而我们只有一个大致的想法就开始把原型做出来 2、传统软件要做出来之后,内部测试,才会正式发布,用户才会接触到,而我们还没有开始之前,就开始放风说一个月后新网站上线,把用户参与 ...
ozzzzzz 写道本来这个星期我该开始讨论软件危机的问题了。但是这几天我忽然发现,ROR这个烫手的东西带给我们不可思议的效率,这个提高的来源究竟是来自何处,是一个目前很少有人讨论过的问题。而如果我们可以搞明白这个原因,我们对于今后技术和方法学发展的方向将有莫大的好处。 而由于我对于这个问题的结论还没有足够的实际例子做证据,因此我就不着急发言了。 我在2005年4月就听说RoR了,还看了他那个scaffold的例子,本来我对RoR也是持否定态度的,但是2006年在JavaEye有几个讨论打消了一些我的置疑,后来就开始用RoR了,这些讨论是: http://www.javaeye.com/t ...
2006-10-09

通过JavaEye2.0网站看ruby on rails性能

关键字: rails performance
ruby on rails作为web开发框架,通常被认为性能很差,并因此被置疑其前景。JavaEye2.0网站使用ruby on rails开发,已经上线运行一个月了,通过这一个月的运行,我们可以对ruby on rails的性能有一个初步的认识。 JavaEye2.0运行的服务器硬件配置: 引用HP DL145 G1,两路AMD Operton 2GHz CPU, 4G DDR RAM, 73G SCSI 15k Disk 这是一个标准的低端1U机架式服务器,大概能够以15k价格购买到,可以说是相当便宜的硬件配置了。 JavaEye2.0的软件运行环境: 引用Linux Kernel- ...
今天上午和庄表伟在msn上交流了一些看法,下午和JavaEye2.0的主力开发人员jerry讨论了关于ruby on rails在企业应用开发和团队协作的问题。通过讨论,有了一些初步的想法和观点,虽然还不是很清晰,但是现在总结和记录下来,留待今后的实践来验证。 ozzzzzz在Java将死?中提出了一个衡量未来主流工业语言的标准,其中有一条很有意思: ozzzzzz 写道 1. 应该能规范书写,而不是像c那样可以造就多种不同的风格。 Java明显是一个编程风格非常容易统一起来的语言,而ruby则很明显是一个难以统一编程风格的语言。JavaEye论坛里面有人曾经说过: 引用 Java ...
2006-09-16

玩了一下YARV

关键字: YARV
今天下载了YARV,在Linux上面编译安装好了,跑了一下,感觉很不错呀。非常期待包含YARV的Ruby2.0早日发布。 引用 robbin@javaeye:~> ruby -v ruby 1.8.4 (2005-12-24) [x86_64-linux] robbin@javaeye:~> /usr/local/yarv/bin/ruby -v ruby 2.0.0 (Base: Ruby 1.9.0 2006-04-08) [x86_64-linux] YARVCore 0.4.1 Rev: 519 (2006-07-12) [opts: [direct threaded code] ...
robbin
搜索本博客
我的相册
213cbb75-7dae-37b2-b9ce-9e7b49f784d3-thumb
游乌镇
共 33 张
其他分类
存档
最新评论