﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-Steven.L-随笔分类-ruby on rails</title><link>http://www.cnitblog.com/stevenluan/category/1662.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 29 Sep 2011 07:59:19 GMT</lastBuildDate><pubDate>Thu, 29 Sep 2011 07:59:19 GMT</pubDate><ttl>60</ttl><item><title>《转载》选Ruby还是选Python？</title><link>http://www.cnitblog.com/stevenluan/archive/2007/03/07/23692.html</link><dc:creator>Steven.L</dc:creator><author>Steven.L</author><pubDate>Wed, 07 Mar 2007 01:48:00 GMT</pubDate><guid>http://www.cnitblog.com/stevenluan/archive/2007/03/07/23692.html</guid><wfw:comment>http://www.cnitblog.com/stevenluan/comments/23692.html</wfw:comment><comments>http://www.cnitblog.com/stevenluan/archive/2007/03/07/23692.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/stevenluan/comments/commentRss/23692.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/stevenluan/services/trackbacks/23692.html</trackback:ping><description><![CDATA[
		<div class="left_1">
				<script language="javascript" src="http://www.51cto.com/php/ajax_art_2.js">
				</script>
作者: 出处:<a href="http://www.csdn.net/" target="_blank">csdn</a>　<font color="#cc0000"> ( <span id="count0_3">0</span> ) 砖  ( <span id="count0_1">0</span> ) 好  <a title="查看所有评论" style="COLOR: #cc0000" href="http://developer.51cto.com/php/feedbackt.php?id=33088" target="_blank">评论 ( <span id="feedback">0 </span>) 条</a></font>　<a title="技术论坛" href="http://bbs.51cto.com/" target="_blank">进入论坛</a></div>
		<div class="left_2">
				<span class="font_3">更新时间：</span>
				<a title="滚动新闻" href="http://developer.51cto.com/oldnews" target="_blank">2006-10-17 18:05</a>
				<br />
				<span class="font_3">关 键 词：</span>
				<a href="http://developer.51cto.com/php/search.php?keyword=Ruby" target="_blank">Ruby</a>  <a href="http://developer.51cto.com/php/search.php?keyword=Python" target="_blank">Python</a>  <a href="http://developer.51cto.com/php/search.php?keyword=%B1%C8%BD%CF" target="_blank">比较</a><br /><span class="font_3">阅读提示：</span><span class="shortmsg">本文作者对属于快速开发语言的Ruby和Python做了一些简单的比较。作者认为，如果是非专业人员初尝开发，Ruby是合适的。对于专业的程序员，还是建议选择Python。 </span></div>
		<div class="left_3">
				<p>
				</p>
				<p>最近，我需要一种快速开发语言，目前炙手可热的快速开发语言就是Python和Ruby了。Ruby和Python都是非常优秀的脚本语言，虽然他们的设计哲学几乎完全不同，但他们效率差不多，应用领域也差距不大，似乎天生就是竞争对手。到底选那个呢？我做了一些简单的比较。</p>
				<p>我们比较两种语言的时候，抛开性能问题不说，一般最在意的大概就是资源和学习曲线。</p>
				<p>总体的印象，用一个不大恰当的比喻：如果Python是Java，那么Ruby就是.net。我们知道，Java世界非常复杂，非常多样性，任何一个需求，都会有很多开源项目，他们用不同的思想来实现，性能特点迥异，到底选那个，总是令人犯难。现在Python也是如此，而由于Python开发难度远远低于Java，导致Python的相关项目比Java还要多得多。</p>
				<p>资源上，两者社区都很强，有趣的是，现在Java社区存在被Ruby同化的危险，至少我订阅的几个Java blog聚合中谈Ruby比Java还多。Ruby的社区较为集中，Python则比较分散。我总怀疑Ruby的日本用户较多，但因为不懂日文，很难确认这个想法。对于一个母语非英语的创始人，我总是有点恐惧，怕很难理解他，怕很难得到最新消息等等，虽然这个担心目前看来并无必要，不过，谁知道会怎么样呢！</p>
				<p>Ruby之所以现在突然变得热门，和rails这套架构是分不开的。考虑Ruby,就要考虑到Ruby on rails。rails提供了一套非常好的web开发框架，开发效率非常高。Python虽然有很多类似的架构实现，但并没有出现一个能够一统江湖的架构。Python的zend虽然完整，但更偏向于web服务器，不能用来和rails比较。</p>
				<p>Ruby比pyton更容易上手。从语言特征看，Ruby有很多有意思的创造，比如说block，但大规模的应用这些好玩的东西让程序变得混乱。Python语法强调简单，但是由于太灵活，简单得太过分，于是传统程序员经常会看到一些令人大吃一惊的表达方式。我不知道这应该算优点还是缺点，至少我认为语法过于灵活，容易导致不同程序员的代码风格差异过大，增加了学习成本。</p>
				<p>初期入门，Ruby更容易，但一旦达到一定复杂度，那么Ruby的难度骤然加大。Python入门不容易，复杂的时候也不会太痛苦。rails有入门简单，深入难的问题。rails生成的目录是做什么用途？o/r mapping如何实现的？如何把数据从web中传递到数据库的。这些都是Ruby程序员早晚要面对的问题。Python则不会这样，如果搞不清楚这些，大概根本没办法开始。集成度太高的快速开发工具都有这个特点，无论是VB、Delphi，还是.net，有多少使用了半年以内的开发人员可以说清楚工程目录下面所有的文件的用途、每个文件中的语法？我相信很多很有经验的用户也未必说的清楚。</p>
				<p>从架构上看，二者虽然实际上相差甚远，但最后表现出来的结果反而很相似。Ruby是纯粹的OO语言，而Python是函数和OO混合型。虽然Ruby也能用函数风格的编码方式，但实际上是模拟出来的。他们的这个差距对于普通的程序员影响并不大，毕竟看起来差不多。</p>
				<p>总体来说，如果是非专业人员初尝开发，Ruby是合适的。对于专业的程序员，我还是建议选择Python。</p>
				<p>对于未来发展，我认为Python的发展可预见，会较为平稳。Python已经属于一个社区，而非一个人，但Ruby由于种种原因，Ruby的作者maze的意志仍然会对Ruby的发展造成较大影响。Sun控制着Java，但由于sun的资源强大，且组织了jcp进行统筹，所以Java发展很不错，但Ruby能不能作到这一点，还需要时间来证明。</p>
		</div>
<img src ="http://www.cnitblog.com/stevenluan/aggbug/23692.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/stevenluan/" target="_blank">Steven.L</a> 2007-03-07 09:48 <a href="http://www.cnitblog.com/stevenluan/archive/2007/03/07/23692.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用户认证java+ntlm</title><link>http://www.cnitblog.com/stevenluan/archive/2007/03/06/23678.html</link><dc:creator>Steven.L</dc:creator><author>Steven.L</author><pubDate>Tue, 06 Mar 2007 09:14:00 GMT</pubDate><guid>http://www.cnitblog.com/stevenluan/archive/2007/03/06/23678.html</guid><wfw:comment>http://www.cnitblog.com/stevenluan/comments/23678.html</wfw:comment><comments>http://www.cnitblog.com/stevenluan/archive/2007/03/06/23678.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/stevenluan/comments/commentRss/23678.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/stevenluan/services/trackbacks/23678.html</trackback:ping><description><![CDATA[ 公司内部的应用有一个很重要的功能就是用户管理，看起来不是很复杂，但真正在做一个系统时，又是一个不得不考虑的问题，因为用户管理不仅涉及到用户的认证，还包括用户的权限维护、授权功能，真是个说大不大，说小还有点麻烦的事情。<br /><br />我在考虑我们的系统时就遇到了这个问题：选择太多了。公司里现在用的标准认证方式就有两个，自开发的一套用户管理系统和AD，他们背后又各自有自己的ldap接口，还可以调用OID，此外我们自己还有其他软件中也用到自己的认证系统，我们也可以用。这样我们的java＋spring＋ibetis＋tomcat就遇到了至少5个选择。集中方法各有优劣。<br />1。自开发的用户管理系统虽然是公司推荐标准方式，但只适用于weblogic和jboss，没有做tomcat版本。<br />2。AD认证虽然方便，但java系统使用AD确实又不方便。<br />3。直接调用ldap和oid虽然可用，但公司不推荐，而且比较繁琐<br />4。用我们自己软件的认证管理又缺乏扩展不易维护，无法和人事系统挂钩。<br />真真是花了一点脑筋。最后还是觉得AD的认证最方便，毕竟大家用的都是Windows和IE，如果能将密码存在系统里也算是SSO了一把。但在网上查来查去，只找到了Apache+tomcat+jk+mod_auth_sspi和mod_ntlm的方式，花了大半天的时间搭建环境尝试应用，最后sspi+apache调得通，tomcat＋apache＋jk调得通，但登录用户怎么也传不到tomcat上的应用中。<br /><br />回到最初的状态，到tomcat的主页上终于发现tomcat上的应用可以通过使用jcifs库使用ntlm认证，真是豁然开朗。赶紧下载，按照jcifs的文档一步一步设置，非常简单，一个jar，一个filter设置，轻松搞定。不过还不知道这个模块的稳定性如何，不过对我们的小应用来说应该足够了。手里没有jboss和weblogic的环境，不知道jcifs是否可以用在这两个环境。<br /><br />不知道有没有其他人使用这个工具，为什么在网上很少找得到呢？<img src ="http://www.cnitblog.com/stevenluan/aggbug/23678.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/stevenluan/" target="_blank">Steven.L</a> 2007-03-06 17:14 <a href="http://www.cnitblog.com/stevenluan/archive/2007/03/06/23678.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>install rails with apache on windows with ntlm (2)</title><link>http://www.cnitblog.com/stevenluan/archive/2007/03/04/23566.html</link><dc:creator>Steven.L</dc:creator><author>Steven.L</author><pubDate>Sun, 04 Mar 2007 14:14:00 GMT</pubDate><guid>http://www.cnitblog.com/stevenluan/archive/2007/03/04/23566.html</guid><wfw:comment>http://www.cnitblog.com/stevenluan/comments/23566.html</wfw:comment><comments>http://www.cnitblog.com/stevenluan/archive/2007/03/04/23566.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/stevenluan/comments/commentRss/23566.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/stevenluan/services/trackbacks/23566.html</trackback:ping><description><![CDATA[
		<p> </p>
		<p>在实现了apache上可以运行rails以及apache可以取得windows 域认证两项功能之后,就剩下一个问题,如何在rails程序中得到登陆的用户名.其实非常简单,单因为对rails和ruby的不了解,还是花了我至少4个小时来从网上和文档中查找.甚至在javaeye论坛中发贴询问,结果导致被设为隐藏贴,禁止发贴30天!搞得我莫名其妙,难道这个问题真的简单到被禁贴的程度?<br />幸运的是最终我在rails的参考文档中找到了答案.<br />在rails app中,可以在controller中使用<br />request.env["REMOTE_USER"]得到登陆的用户名,如果要得到需要加上域名的用户名,则在httpd.conf的配置文件中,就需把,SSPIOmitDomain 参数设为off,或者省略.我用作测试的controller如下:<br />class TestController &lt;&lt; ApplicationController<br />  def index<br />    render :text=&amp;gt; request.env["REMOTE_USER"]<br />  end<br />end.</p>
		<p>
				<br />到此为止,我发现我可以用ruby on rails做这么几件事了:<br />1.快速开发简单的应用,可以利用rails中相当不错的特性,比如mvc,ajax,rhtml等等(我认为taglib功能又弱又繁琐,学习它和学习ruby差不多了)<br />2.和公司内部的认证机制联系上了,用户在使用我的应用的时候,不需要再记住一个密码.在此基础上,权限管理就可以实现了.<br />3.试用了几个ide环境后,发现netbeans 6.0对ruby on rails的支持最好.因此我也有了一个ide环境.</p>
		<p>我觉得基本上,在企业内部开发一个简单的,只需要几个页面和权限管理的小web应用上面的东西已经足够了. 问题就来了,我花了两个礼拜的时间学习ruby on rails,搭建环境尝试可行性,那么这套东西,是不是真的能为企业所用?和JAVA相比毕竟ruby<br /> 太年轻了, 在企业内部充斥着java,偶尔点缀一些.net和perl的环境中,ruby能用么?</p>
		<p>看了网上若干篇有关ruby的未来或者j2ee末日的文章,中文的,英文的.再加上我自己的感觉,想先谈谈我自己的看法.首先谈ruby的优点:<br />1.ruby on rails对开发者来讲,真的是方便.在J2ee中复杂的让人发狂的接口调用,类型转换,在这里都没有.我觉得应该归功于它的无类型特性吧。spring＋ibatis中复杂的xml终于不见了，在一个简单的应用中增加一个表字段，spring＋ibatis中要修改至少10个地方，比如pojo，xmls，form类，dao类，controller，jsp等等，而且每一处要修改的地方都很复杂，类型的匹配转换让人发疯。rails<br /> 约定&amp;gt;配置的结构让我也非常高兴，我们不用再花时间讨论如何建立project的文件夹，确定文件夹的名称，发布等等。还有其他很多的特性，都让开发人员很愉快（相对于java和j2ee来说）甚至他们依赖的环境也不是复杂而缓慢的weblogic，而是简单而有效的apache(指我最后确定的架构而言）。<br />   <br /> 而对开发人员的种种便利，对用户和需求方也同时是一种便利，他们可以快速的看到开发的成果，及时调整他们的需求。这对于我现在面对的应用——需求简单、多样、规模小——非常的有意义。<br />2。比java低的多的学习曲线。我的开发人员，包括我在内都是经验不太丰富，因为我的本职是系统管理员，面对java世界中的概念，我不止一次有过绝望的心态从J2EE,EJB,JMS，ajax到各种各样的架构（我最终选择了spring＋ibatis学习和应用），什么反射、注入机制、多线程技术、ORM，太多概念要理解，尽管有eclipse这样优秀的ide可以省下一些时间，但对我们这样需要一定的开发，又不是专业程序员的人来讲，作为第二专业太过庞大了。我试过python、perl，但他们缺少框架和ide的问题使我放弃。ruby不同，语言简单、框架简单，连使用ajax也那么简单，学习曲<br />线大大降低。我甚至认为这是不是一套专门给业余人员发明的东西。</p>
		<p>
				<br />但和一下的问题比起来，ruby on rails<br /> 众多的优点仍然不能让我下决心正式使用它，尽管我已经花了2个礼拜的时间考察它。<br />最决定性的因素是就业，我需要为我的组员负责。现在java相关的职位浩如烟海，可是ruby的我现在还没看到几个。尤其是大公司的招聘中，没有几个提到ruby相关的。如果我让我的组员开始使用ruby去做应用，将java放在一边，一旦跳槽的时候他们怎么办？难道让他们一出去就当架构师和项目经理（不需要编程的那种），ruby毕竟是一门语言，我相信如果要做得好，一定也要花相当多的时间和经历。而且语言本身并不是学习的难点，相关的体系、架构、API、程序库的使用，这些才是程序员最花时间的地方。而在这些地方，ROR和java阵营除了部分理念相通，其他的能借鉴的地方实在不多。</p>
		<p>其次，ruby毕竟太新，没有众多的厂商支持和开源资源可以用，尤其是<br />国内的。而java在这方面优势巨大，尽管java开源的东西大多数都是中看不中用，但毕竟比没有强。比如图表软件？ruby上除了一个可免费使用的chartdirector，谁能再找到类似javareport，jfreechart的东西？还有一个问题：ruby有未来么？除了时间，谁也无法回答。</p>
		<p>企业内部现在都是java和。net的天下，一个新开发的程序，及时再小也难免和现有系统进行交互，比如认证系统，比如相关的信息共享，不可能都是用数据库的表操作，或者期望缥缈的SOA。而跨语言的rjs毕竟效率上和功能上都不能和已有的java应用相媲美。当然，我看到他们使用。net开发的应用和java交互时也一样是一筹莫展，但毕竟他们自成体系。而且及时我们采用了ror，我们还是有一堆的现有应用需要维护，需要更新。让我们的程序员们通晓java和ruby？不，这只能让他们什么也不精通?</p>
		<p>所以说，不论从公司角度，还是从员工角度，使用ror的风险都太大。让我实在难以下定决心来使用它。</p>
		<p>上面的这些，已经和install rails with apache没什么关系了。因为这两天一直在思考这个问题，所以写出一点心得，也算把思路理理清楚。</p>
		<p> </p>
<img src ="http://www.cnitblog.com/stevenluan/aggbug/23566.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/stevenluan/" target="_blank">Steven.L</a> 2007-03-04 22:14 <a href="http://www.cnitblog.com/stevenluan/archive/2007/03/04/23566.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>install rails with apache on windows with ntlm (1)</title><link>http://www.cnitblog.com/stevenluan/archive/2007/03/02/23477.html</link><dc:creator>Steven.L</dc:creator><author>Steven.L</author><pubDate>Fri, 02 Mar 2007 07:07:00 GMT</pubDate><guid>http://www.cnitblog.com/stevenluan/archive/2007/03/02/23477.html</guid><wfw:comment>http://www.cnitblog.com/stevenluan/comments/23477.html</wfw:comment><comments>http://www.cnitblog.com/stevenluan/archive/2007/03/02/23477.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/stevenluan/comments/commentRss/23477.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/stevenluan/services/trackbacks/23477.html</trackback:ping><description><![CDATA[
		<p>Although there is too much articals in webwork to subscribe the process intall the rails and apache, but I feel difficult to find a usefull and full instructions which can lead me step by step to reach the end.So here is the artical.<br /> <br />1.install rails<br />   1)download instantrails from rails web <a href="http://www.rubyonrails.org/">http://www.rubyonrails.org/</a><br />   2)unzip it into a folder which has no blank  in the path.<br />   It is so easy, isn't it?<br />2.install apache2<br />   1.)If you want to use the fastcgi with rails, as far as I know , my recommandation is 2.0.* apache, because I found that rubyforapache is not available for 2.2*. so you can download it  from apache.org.<br />   2)install apache2, just follow the next button.<br />3.install rubyforapache<br />   Install this to use rails on the Apache.<br />   1)download rubyforapache in windows from rubyforge <a href="https://rubyforge.org/projects/rubyforapache/">https://rubyforge.org/projects/rubyforapache/</a>. You can choose the appropriate version  .May be the newer the better.<br />   2)Install it, carefully fill the path for ruby and apache. And you should have the adiministration privilege , or have the privilege to put the libfcgi.dll into the folder c:\windows\system32.The install program will put the *.so into apache/modules folder.<br />   3)config fcgi in apache, add the line below into httpd.conf<br />   LoadModule fastcgi_module modules/mod_fastcgi.so</p>
		<p>&lt;IfModule mod_fastcgi.c&gt; <br />  AddHandler fastcgi-script .fcgi<br />&lt;/IfModule&gt;</p>
		<p>FastCgiConfig -restart-delay 120 -idle-timeout 150 -appConnTimeout 100 -init-start-delay 100 -startDelay 100<br /></p>
		<p>4.install mod_auth_sspi.so<br />   1)Download it from sourceforge. <br />   2)unzip the zip file. Copy bin/mod_auth_sspi.so to apache/modules/<br />   3)modify httpd.conf .remember , change the the path into your own path.</p>
		<p>LoadModule sspi_auth_module modules/mod_auth_sspi.so   #add<br /></p>
		<p>DocumentRoot "D:\tool\InstantRails\rails_apps"   #modify <br />AliasMatch ^/([^/]*)(.*) "D:\tool\InstantRails\rails_apps/$1/public$2" #add<br /><br />#add </p>
		<p>&lt;Directory "D:\tool\InstantRails\rails_apps"&gt;<br /> AddHandler fastcgi-script .fcgi  <br />  Options ExecCGI FollowSymLinks<br />  AllowOverride all<br />  Allow from all<br />  Order allow,deny<br />  <br />  AuthName "My Intranet"<br />  AuthType SSPI<br />  SSPIAuth On<br />  SSPIAuthoritative On<br />  require valid-user<br />&lt;/Directory&gt;<br /><br />Ok, now all needed have been ready, so you can generate a new rails app in the folder "D:\tool\InstantRails\rails_apps". and modify the app's public/.htaccess and dispatch.fcgi. <br /><br />.htaccess should be like this <br />AddHandler fastcgi-script .fcgi<br />AddHandler cgi-script .cgi<br />Options +FollowSymLinks +ExecCGI</p>
		<p>RewriteEngine On</p>
		<p>RewriteRule ^$ index.html [QSA]<br />RewriteRule ^([^.]+)$ $1.html [QSA]<br />RewriteCond %{REQUEST_FILENAME} !-f<br />#RewriteRule ^(.*)$ dispatch.cgi [QSA,L]<br />RewriteRule ^(.*)$ <font color="#ff0000">dispatch.fcgi</font> [QSA,L] #be carefull of this fcgi<br />RewriteBase /cookbook</p>
		<p>ErrorDocument 500 "&lt;h2&gt;Application error&lt;/h2&gt;Rails application failed to start properly"<br /> <br />and the dispatch.fcgi should have a head like <br />#!D:/tool/InstantRails/ruby/bin/ruby <br />#it's should be your own ruby path.<br /><br />Now, start the Apache ,   open the IE, try it. <br /><br /></p>
<img src ="http://www.cnitblog.com/stevenluan/aggbug/23477.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/stevenluan/" target="_blank">Steven.L</a> 2007-03-02 15:07 <a href="http://www.cnitblog.com/stevenluan/archive/2007/03/02/23477.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>