﻿<?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>语源科技BlogJava-keywen1983</title><link>http://www.blogjava.net/keywen1983/</link><description>混日子，没错，我就是Mzone民工~</description><language>zh-cn</language><lastBuildDate>Sun, 12 Apr 2026 06:09:48 GMT</lastBuildDate><pubDate>Sun, 12 Apr 2026 06:09:48 GMT</pubDate><ttl>60</ttl><item><title>oracle redo日志恢复</title><link>http://www.blogjava.net/keywen1983/archive/2007/12/28/171198.html</link><dc:creator>keywen</dc:creator><author>keywen</author><pubDate>Fri, 28 Dec 2007 07:08:00 GMT</pubDate><guid>http://www.blogjava.net/keywen1983/archive/2007/12/28/171198.html</guid><wfw:comment>http://www.blogjava.net/keywen1983/comments/171198.html</wfw:comment><comments>http://www.blogjava.net/keywen1983/archive/2007/12/28/171198.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keywen1983/comments/commentRss/171198.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keywen1983/services/trackbacks/171198.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: oracle redo日志恢复&nbsp;&nbsp;<a href='http://www.blogjava.net/keywen1983/archive/2007/12/28/171198.html'>阅读全文</a><img src ="http://www.blogjava.net/keywen1983/aggbug/171198.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keywen1983/" target="_blank">keywen</a> 2007-12-28 15:08 <a href="http://www.blogjava.net/keywen1983/archive/2007/12/28/171198.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle SQL 内置函数大全</title><link>http://www.blogjava.net/keywen1983/archive/2007/11/26/163216.html</link><dc:creator>keywen</dc:creator><author>keywen</author><pubDate>Mon, 26 Nov 2007 08:46:00 GMT</pubDate><guid>http://www.blogjava.net/keywen1983/archive/2007/11/26/163216.html</guid><wfw:comment>http://www.blogjava.net/keywen1983/comments/163216.html</wfw:comment><comments>http://www.blogjava.net/keywen1983/archive/2007/11/26/163216.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keywen1983/comments/commentRss/163216.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keywen1983/services/trackbacks/163216.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Oracle SQL 内置函数大全&nbsp;&nbsp;<a href='http://www.blogjava.net/keywen1983/archive/2007/11/26/163216.html'>阅读全文</a><img src ="http://www.blogjava.net/keywen1983/aggbug/163216.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keywen1983/" target="_blank">keywen</a> 2007-11-26 16:46 <a href="http://www.blogjava.net/keywen1983/archive/2007/11/26/163216.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>必须得体验的flex程序</title><link>http://www.blogjava.net/keywen1983/archive/2007/09/29/149521.html</link><dc:creator>keywen</dc:creator><author>keywen</author><pubDate>Sat, 29 Sep 2007 03:50:00 GMT</pubDate><guid>http://www.blogjava.net/keywen1983/archive/2007/09/29/149521.html</guid><wfw:comment>http://www.blogjava.net/keywen1983/comments/149521.html</wfw:comment><comments>http://www.blogjava.net/keywen1983/archive/2007/09/29/149521.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keywen1983/comments/commentRss/149521.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keywen1983/services/trackbacks/149521.html</trackback:ping><description><![CDATA[<span style="font-family: Comic Sans MS"><span style="color: #000000; font-family: 宋体">
<blockquote dir="ltr" style="margin-right: 0px">
<p dir="ltr" style="font-size: 24pt; font-family: Comic Sans MS"><br />
<span style="font-size: 18pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #98ecff"><a href="http://www.thereplicants.net/flex/test/Dashboard.html " target="_blank"><span style="color: red">http://www.thereplicants.net/flex/test/Dashboard.html&nbsp;</span></a><br />
</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这个flex程序是一个spain人做的，javier，36岁了，项目经<br />
<br />
理，人很不错，欧洲人的软件架构思想，就是和国内不一样</span></span></span></p>
</blockquote>
<img src ="http://www.blogjava.net/keywen1983/aggbug/149521.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keywen1983/" target="_blank">keywen</a> 2007-09-29 11:50 <a href="http://www.blogjava.net/keywen1983/archive/2007/09/29/149521.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>警惕：电脑视疲劳综合症</title><link>http://www.blogjava.net/keywen1983/archive/2007/06/22/125874.html</link><dc:creator>keywen</dc:creator><author>keywen</author><pubDate>Fri, 22 Jun 2007 08:34:00 GMT</pubDate><guid>http://www.blogjava.net/keywen1983/archive/2007/06/22/125874.html</guid><wfw:comment>http://www.blogjava.net/keywen1983/comments/125874.html</wfw:comment><comments>http://www.blogjava.net/keywen1983/archive/2007/06/22/125874.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keywen1983/comments/commentRss/125874.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keywen1983/services/trackbacks/125874.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 提醒大家：请爱护自己的眼睛！！！&nbsp;&nbsp;<a href='http://www.blogjava.net/keywen1983/archive/2007/06/22/125874.html'>阅读全文</a><img src ="http://www.blogjava.net/keywen1983/aggbug/125874.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keywen1983/" target="_blank">keywen</a> 2007-06-22 16:34 <a href="http://www.blogjava.net/keywen1983/archive/2007/06/22/125874.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>让人流泪的照片------感动！</title><link>http://www.blogjava.net/keywen1983/archive/2007/06/22/125730.html</link><dc:creator>keywen</dc:creator><author>keywen</author><pubDate>Fri, 22 Jun 2007 01:27:00 GMT</pubDate><guid>http://www.blogjava.net/keywen1983/archive/2007/06/22/125730.html</guid><wfw:comment>http://www.blogjava.net/keywen1983/comments/125730.html</wfw:comment><comments>http://www.blogjava.net/keywen1983/archive/2007/06/22/125730.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/keywen1983/comments/commentRss/125730.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keywen1983/services/trackbacks/125730.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/keywen1983/archive/2007/06/22/125730.html'>阅读全文</a><img src ="http://www.blogjava.net/keywen1983/aggbug/125730.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keywen1983/" target="_blank">keywen</a> 2007-06-22 09:27 <a href="http://www.blogjava.net/keywen1983/archive/2007/06/22/125730.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle、DB2、PostgreSQL之Sequence总结</title><link>http://www.blogjava.net/keywen1983/archive/2007/06/20/125387.html</link><dc:creator>keywen</dc:creator><author>keywen</author><pubDate>Wed, 20 Jun 2007 09:48:00 GMT</pubDate><guid>http://www.blogjava.net/keywen1983/archive/2007/06/20/125387.html</guid><wfw:comment>http://www.blogjava.net/keywen1983/comments/125387.html</wfw:comment><comments>http://www.blogjava.net/keywen1983/archive/2007/06/20/125387.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/keywen1983/comments/commentRss/125387.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keywen1983/services/trackbacks/125387.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/keywen1983/archive/2007/06/20/125387.html'>阅读全文</a><img src ="http://www.blogjava.net/keywen1983/aggbug/125387.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keywen1983/" target="_blank">keywen</a> 2007-06-20 17:48 <a href="http://www.blogjava.net/keywen1983/archive/2007/06/20/125387.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>svchost.exe占CPU 100%的解决方法</title><link>http://www.blogjava.net/keywen1983/archive/2007/05/17/118099.html</link><dc:creator>keywen</dc:creator><author>keywen</author><pubDate>Thu, 17 May 2007 07:17:00 GMT</pubDate><guid>http://www.blogjava.net/keywen1983/archive/2007/05/17/118099.html</guid><wfw:comment>http://www.blogjava.net/keywen1983/comments/118099.html</wfw:comment><comments>http://www.blogjava.net/keywen1983/archive/2007/05/17/118099.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keywen1983/comments/commentRss/118099.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keywen1983/services/trackbacks/118099.html</trackback:ping><description><![CDATA[<blockquote dir=ltr style="MARGIN-RIGHT: 0px; FONT-FAMILY: Comic Sans MS; BACKGROUND-COLOR: #ccffcc">
<p>svchost.exe占CPU 100%的解决方法</p>
<p>--------------------------------------------------------------------------------<br>现象： </p>
<p style="BACKGROUND-COLOR: #ccffcc">机器启动运行几分钟后 svchost.exe就会占系统cpu资源的100% <br><br>拔掉网线就好了，重连上网后一会儿：svchost.exe又占cpu资源的99%； <br><br>解决： </p>
<p style="BACKGROUND-COLOR: #ccffcc">假设你已经使用了免费杀毒软件排除了病毒和已经使用防间谍软件排除了恶意软件的影响：<br><br>想办法清空C:\WINDOWS\SoftwareDistribution 目录下所有的文件重启机器即可。 <br><br>如果机器提示文件正在使用（"Automatic Updates"服务正在运行）无法删除相应目录：</p>
<p style="BACKGROUND-COLOR: #ccffcc">则想办法打开控制面板==&gt;管理工具==&gt;服务，找到"Automatic Updates"，设置成手动启动，<br><br>重启后再删除 C:\WINDOWS\SoftwareDistribution。问题就解决了。<br><br>然后再打开控制面板==&gt;管理工具==&gt;服务，找到"Automatic Updates"，恢复成自动启动重启。 <br><br>注意：重启后最好在上网条件比较好的地方让系统顺利完成一次系统自动更新。 </p>
<p style="BACKGROUND-COLOR: #ccffcc">原因分析： </p>
<p style="BACKGROUND-COLOR: #ccffcc">先说说什么是svchost.exe：<br><br>简单的说没有这个服务机器几乎就上不了网了。很多应用服务都是以来于这个接口RPC的，<br><br>如果发现这个进程占了太多的CPU资源，直接把系统的RPC服务禁用了会是一场灾难：<br><br>因为连恢复这个界面的系统服务设置界面都无法使用了。恢复的方法需要使用注册表编辑器，<br><br>找到 HKEY_LOCAL_MACHINE &gt;&gt; SYSTEM &gt;&gt; CurrentControlSet &gt;&gt; Services &gt;&gt; RpcSs, <br><br>右侧找到Start属性，把它的值改为2再重启即可 </p>
<p style="BACKGROUND-COLOR: #ccffcc">造成svchost占系统CPU 100%的原因并非svchost服务本身：<br><br>以上的情况是由于Windows Update服务下载/安装失败而导致更新服务反复重试造成的。<br><br>而Windows的自动更新也是依赖于svchost服务的一个后台应用，从而表现为svchost.exe负载极高。 <br><br>常发生这类问题的机器一般是上网条件（尤其是去国外网站）不稳定的机器，比如家里的父母的机器，<br><br>往往在安装机器几个月以后不定期发生，每个月的第二个星期是高发期：<br><br>因为最近几年MS很有规律的在每个月的第二个星期发布补丁程序）。</p>
<p style="BACKGROUND-COLOR: #ccffcc">上面的解决方法并不能保证不重发作，但是为了svchost文件而每隔几个月重装一次操作系统<br><br>还是太浪费时间了。 </p>
<p style="BACKGROUND-COLOR: #ccffcc">教训：spoolsv.exe的问题都是应用遇到失败/例外情况后自动重试造成的，<br><br>本想为用户节省时间的设计，但是重试的频度过高反而导致了和病毒一样的效果。<br></p>
</blockquote>
<img src ="http://www.blogjava.net/keywen1983/aggbug/118099.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keywen1983/" target="_blank">keywen</a> 2007-05-17 15:17 <a href="http://www.blogjava.net/keywen1983/archive/2007/05/17/118099.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>好好学习，好好工作，好好生活，好好微笑！</title><link>http://www.blogjava.net/keywen1983/archive/2007/05/17/118097.html</link><dc:creator>keywen</dc:creator><author>keywen</author><pubDate>Thu, 17 May 2007 07:12:00 GMT</pubDate><guid>http://www.blogjava.net/keywen1983/archive/2007/05/17/118097.html</guid><wfw:comment>http://www.blogjava.net/keywen1983/comments/118097.html</wfw:comment><comments>http://www.blogjava.net/keywen1983/archive/2007/05/17/118097.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keywen1983/comments/commentRss/118097.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keywen1983/services/trackbacks/118097.html</trackback:ping><description><![CDATA[<blockquote dir=ltr style="MARGIN-RIGHT: 0px">
<p style="FONT-FAMILY: Comic Sans MS">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;刚从学校出来工作，的确有一些不适应，不过还好了，慢慢应该养成良好的工作习惯，这样工作、生活才轻松些。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 公司五一放假七天，可BLOG比公司放假时间还要长，得改。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;手中现在两个项目，一个.NET项目，一个公司ERP项目，虽然是忙起来挺好，可是ROR没时间学了。以前一直玩的JAVA，现在好好学一下.NET以及<span style="FONT-FAMILY: Comic Sans MS">SAP的标准流程也是不错的啊！</span></p>
</blockquote>
<img src ="http://www.blogjava.net/keywen1983/aggbug/118097.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keywen1983/" target="_blank">keywen</a> 2007-05-17 15:12 <a href="http://www.blogjava.net/keywen1983/archive/2007/05/17/118097.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>2006年优秀Flex大型网站欣赏</title><link>http://www.blogjava.net/keywen1983/archive/2007/04/28/114256.html</link><dc:creator>keywen</dc:creator><author>keywen</author><pubDate>Sat, 28 Apr 2007 01:55:00 GMT</pubDate><guid>http://www.blogjava.net/keywen1983/archive/2007/04/28/114256.html</guid><wfw:comment>http://www.blogjava.net/keywen1983/comments/114256.html</wfw:comment><comments>http://www.blogjava.net/keywen1983/archive/2007/04/28/114256.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keywen1983/comments/commentRss/114256.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keywen1983/services/trackbacks/114256.html</trackback:ping><description><![CDATA[<blockquote dir=ltr style="MARGIN-RIGHT: 0px; FONT-FAMILY: Comic Sans MS">
<p>2006年优秀Flex大型网站欣赏<br><br>2006年Flex大型网站层出不穷，下面是国际上几个优秀的RIA应用。<br><br><a title="AFR Access" href="http://afraccess.com/" target=_blank><font color=#97bf43>AFR Access</font></a><br></p>
<li><a title="The Australian Financial Review" href="http://www.afr.com/" target=_blank><font color=#97bf43>The Australian Financial Review</font></a><br>
<li><a title="Sony Ericsson Phone and Accessories selector" href="http://www.sonyericsson.com/spg.jsp?cc=au&amp;lc=en&amp;ver=4000&amp;template=pp1&amp;zone=pp&amp;view=phones#view=phones&amp;cdl=0&amp;detail=0&amp;cmp=0&amp;acc_cid=0&amp;cid=0&amp;acc_pid=0&amp;pid=0" target=_blank><font color=#97bf43>Sony Ericsson Phone Selector</font></a><br>
<li><a title="Flex Store sample application" href="http://www.adobe.com/devnet/flex/samples/flex_store/" target=_blank><font color=#97bf43>Adobe Flex Store</font></a><br>
<li><a title="Kodak EasyShare Gallery" href="http://www.kodakgallery.com/" target=_blank><font color=#97bf43>Kodak EasyShare Gallery</font></a><br>
<li><a title="NOMOS Online - Noise Monitoring System" href="http://194.229.29.150/nomos/main.mxml" target=_blank><font color=#97bf43>NOMOS Online</font></a><br>
<li><a title="Flex Data Services" href="http://www.adobe.com/products/flex/dataservices/" target=_blank><font color=#97bf43>Flex Data Services</font></a><br>
<li><a title=Pikeo href="http://www.pikeo.com/" target=_blank><font color=#97bf43>Pikeo</font></a><br>
<li><a title="Motionbox videos" href="http://www.motionbox.com/" target=_blank><strong><font color=#97bf43>Motionbox</font></strong></a><br>
<li><a title="Trenitalia - Viaggia Treno" href="http://www.viaggiatreno.it/viaggiatreno/vt.html" target=_blank><font color=#97bf43>Trenitalia - </font></a><br>
<li><a title="Fidelity Labs" href="http://www.fidelitylabs.com/" target=_blank><font color=#97bf43>Fidelity Labs</font></a><br>
<li><a title="Fidelity Labs" href="http://www.fidelitylabs.com/" target=_blank><font color=#97bf43>www.fidelitylabs.com</font></a><br>
<li><a title="Belgacom TV Portal" href="http://www.belgacomtv.be/" target=_blank><strong><font color=#97bf43>Belgacom TV Portal</font></strong></a><br>
<li><a title="ESRI ArcWeb Explorer" href="http://www.arcwebservices.com/awx/index.jsp" target=_blank><strong><font color=#97bf43>ESRI ArcWeb Explorer</font></strong></a><br>
<li><a title="ArcWeb Services" href="http://www.esri.com/software/arcwebservices/" target=_blank><font color=#97bf43>services</font></a><br>
<li><a title="Harley-Davidson Customizer" href="http://www.harley-davidson.com/pr/gm/customizer/launchCustomizer.asp" target=_blank><strong><font color=#97bf43>Harley-Davidson Customizer</font></strong></a><br>
<li><a title="Intelligent Finance" href="http://www.if.com/" target=_blank><strong><font color=#97bf43>Intelligent Finance Mortgage Offset Calculator</font></strong></a><br>
<li><a title="Yahoo! Maps" href="http://maps.yahoo.com/" target=_blank><font color=#97bf43>Yahoo! Maps</font></a><br></li>
<p><font color=#97bf43></font></p>
<p>更多的好网站，可以去<br><a title="Flex Showcase" href="http://www.adobe.com/cfusion/showcase/index.cfm?event=finder&amp;productid=26724&amp;loc=en_us" target=_blank><font color=#97bf43>Adobe Flex Showcase Finder</font></a>看到<br></p>
</blockquote>
<img src ="http://www.blogjava.net/keywen1983/aggbug/114256.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keywen1983/" target="_blank">keywen</a> 2007-04-28 09:55 <a href="http://www.blogjava.net/keywen1983/archive/2007/04/28/114256.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>面向对象脚本语言 Ruby 参考手册</title><link>http://www.blogjava.net/keywen1983/archive/2007/04/27/114138.html</link><dc:creator>keywen</dc:creator><author>keywen</author><pubDate>Fri, 27 Apr 2007 08:59:00 GMT</pubDate><guid>http://www.blogjava.net/keywen1983/archive/2007/04/27/114138.html</guid><wfw:comment>http://www.blogjava.net/keywen1983/comments/114138.html</wfw:comment><comments>http://www.blogjava.net/keywen1983/archive/2007/04/27/114138.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keywen1983/comments/commentRss/114138.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keywen1983/services/trackbacks/114138.html</trackback:ping><description><![CDATA[<blockquote>
<h2><a id=a.a5.aa.a5.d6.a5.b8.a5.a7.a5.af.a5.c8.bb.d8.b8.fe.a5.b9.a5.af.a5.ea.a5.d7.a5.c8.b8.c0.b8.ec.20Ruby.20.a5.ea.a5.d5.a5.a1.a5.ec.a5.f3.a5.b9.a5.de.a5.cb.a5.e5.a5.a2.a5.eb name=a.a5.aa.a5.d6.a5.b8.a5.a7.a5.af.a5.c8.bb.d8.b8.fe.a5.b9.a5.af.a5.ea.a5.d7.a5.c8.b8.c0.b8.ec.20Ruby.20.a5.ea.a5.d5.a5.a1.a5.ec.a5.f3.a5.b9.a5.de.a5.cb.a5.e5.a5.a2.a5.eb><span style="FONT-FAMILY: Comic Sans MS">面向对象脚本语言 Ruby 参考手册</span></a><a id=a.cc.dc.bc.a1 name=a.cc.dc.bc.a1><br><br><span style="FONT-FAMILY: Comic Sans MS">目录</span></a></h2>
<ul>
    <li><span style="FONT-FAMILY: Comic Sans MS">更新记录 </span>
    <li><a class=modified-month title="卷首语 (12d)" href="http://rubycn.ce-lab.net/man/hajimeni.html"><u><span style="FONT-FAMILY: Comic Sans MS">卷首语</span></u></a><span style="FONT-FAMILY: Comic Sans MS"> </span>
    <li><a class=modified-year title="Ruby的启动 (284d)" href="http://rubycn.ce-lab.net/man/kidou.html"><u><span style="FONT-FAMILY: Comic Sans MS">Ruby的启动</span></u></a><span style="FONT-FAMILY: Comic Sans MS"> </span>
    <ul>
        <li><a class=modified-year title="Ruby的启动 (284d)" href="http://rubycn.ce-lab.net/man/kidou.html"><u><span style="FONT-FAMILY: Comic Sans MS">命令行选项</span></u></a><span style="FONT-FAMILY: Comic Sans MS"> </span>
        <li><a class=modified-year title="Ruby的启动 (284d)" href="http://rubycn.ce-lab.net/man/kidou.html"><u><span style="FONT-FAMILY: Comic Sans MS">关于解释器行</span></u></a><span style="FONT-FAMILY: Comic Sans MS"> </span></li>
    </ul>
    <li><a class=modified-year title="环境变量 (292d)" href="http://rubycn.ce-lab.net/man/ev.html"><u><span style="FONT-FAMILY: Comic Sans MS">环境变量</span></u></a><span style="FONT-FAMILY: Comic Sans MS"> </span>
    <li><span style="FONT-FAMILY: Comic Sans MS">Ruby 语言样式 </span>
    <ul>
        <li><a class=modified-year title="对象 (292d)" href="http://rubycn.ce-lab.net/man/lanstyle_object.html"><u><span style="FONT-FAMILY: Comic Sans MS">对象</span></u></a><span style="FONT-FAMILY: Comic Sans MS"> </span>
        <li><a class=modified-year title="类 (292d)" href="http://rubycn.ce-lab.net/man/lanstyle_class.html"><u><span style="FONT-FAMILY: Comic Sans MS">类</span></u></a><span style="FONT-FAMILY: Comic Sans MS"> </span>
        <li><a class=modified-month title="执行 (12d)" href="http://rubycn.ce-lab.net/man/lanstyle_run.html"><u><span style="FONT-FAMILY: Comic Sans MS">执行</span></u></a><span style="FONT-FAMILY: Comic Sans MS"> </span>
        <li><a class=modified-year title="结束时的相关处理 (290d)" href="http://rubycn.ce-lab.net/man/lanstyle_exit.html"><u><span style="FONT-FAMILY: Comic Sans MS">结束时的相关处理</span></u></a><span style="FONT-FAMILY: Comic Sans MS"> </span>
        <li><a class=modified-month title="Ruby 线程 (3d)" href="http://rubycn.ce-lab.net/man/lanstyle_thread.html"><u><span style="FONT-FAMILY: Comic Sans MS">线程</span></u></a><span style="FONT-FAMILY: Comic Sans MS"> </span>
        <li><a class=modified-year title="安全模型 (109d)" href="http://rubycn.ce-lab.net/man/lanstyle_securitymodel.html"><u><span style="FONT-FAMILY: Comic Sans MS">安全模型</span></u></a><span style="FONT-FAMILY: Comic Sans MS"> </span>
        <li><a class=modified-year title="正则表达式 (218d)" href="http://rubycn.ce-lab.net/man/lanstyle_seiki.html"><u><span style="FONT-FAMILY: Comic Sans MS">正则表达式</span></u></a><span style="FONT-FAMILY: Comic Sans MS"> </span></li>
    </ul>
    <li><span style="FONT-FAMILY: Comic Sans MS">Ruby的语法 </span>
    <ul>
        <li><a class=modified-year title="字句构造 (292d)" href="http://rubycn.ce-lab.net/man/syntax_jikukouzou.html"><u><span style="FONT-FAMILY: Comic Sans MS">字句构造</span></u></a><span style="FONT-FAMILY: Comic Sans MS"> </span>
        <li><a class=modified-year title="程序 (292d)" href="http://rubycn.ce-lab.net/man/syntax_program.html"><u><span style="FONT-FAMILY: Comic Sans MS">程序</span></u></a><span style="FONT-FAMILY: Comic Sans MS"> </span>
        <li><a class=modified-year title="变量和常数 (292d)" href="http://rubycn.ce-lab.net/man/syntax_vac.html"><u><span style="FONT-FAMILY: Comic Sans MS">变量和常数</span></u></a><span style="FONT-FAMILY: Comic Sans MS"> </span>
        <li><a class=modified-year title="字面值 (292d)" href="http://rubycn.ce-lab.net/man/syntax_literal.html"><u><span style="FONT-FAMILY: Comic Sans MS">字面值</span></u></a><span style="FONT-FAMILY: Comic Sans MS"> </span>
        <li><a class=modified-year title="操作符表达式 (211d)" href="http://rubycn.ce-lab.net/man/syntax_operatorexpression.html"><u><span style="FONT-FAMILY: Comic Sans MS">操作符表达式</span></u></a><span style="FONT-FAMILY: Comic Sans MS"> </span>
        <li><a class=modified-month title="控制结构 (12d)" href="http://rubycn.ce-lab.net/man/syntax_control.html"><u><span style="FONT-FAMILY: Comic Sans MS">控制结构</span></u></a><span style="FONT-FAMILY: Comic Sans MS">／异常处理 </span>
        <li><a class=modified-month title="方法调用 (12d)" href="http://rubycn.ce-lab.net/man/syntax_callmethod.html"><u><span style="FONT-FAMILY: Comic Sans MS">方法调用</span></u></a><span style="FONT-FAMILY: Comic Sans MS"> </span>
        <li><a class=modified-year title="类／方法的定义 (292d)" href="http://rubycn.ce-lab.net/man/syntax_defcm.html"><u><span style="FONT-FAMILY: Comic Sans MS">类／方法的定义</span></u></a><span style="FONT-FAMILY: Comic Sans MS"> </span></li>
    </ul>
    <li><span style="FONT-FAMILY: Comic Sans MS">标准库 </span>
    <ul>
        <li><a class=modified-month title="内部函数 (18d)" href="http://rubycn.ce-lab.net/man/stdlib_function.html"><u><span style="FONT-FAMILY: Comic Sans MS">内部函数</span></u></a><span style="FONT-FAMILY: Comic Sans MS"> </span>
        <li><a class=modified-month title="内部变量 (18d)" href="http://rubycn.ce-lab.net/man/stdlib_variable.html"><u><span style="FONT-FAMILY: Comic Sans MS">内部变量</span></u></a><span style="FONT-FAMILY: Comic Sans MS"> </span>
        <li><a class=modified-month title="内部常数 (18d)" href="http://rubycn.ce-lab.net/man/stdlib_constant.html"><u><span style="FONT-FAMILY: Comic Sans MS">内部常数</span></u></a><span style="FONT-FAMILY: Comic Sans MS"> </span>
        <li><a class=modified-month title="内部类／模块／异常类 (18d)" href="http://rubycn.ce-lab.net/man/built-in-class/index.html"><u><span style="FONT-FAMILY: Comic Sans MS">内部类／模块／异常类</span></u></a><span style="FONT-FAMILY: Comic Sans MS"> </span></li>
    </ul>
    <li><a class=modified-month title="附加库 (12d)" href="http://rubycn.ce-lab.net/man/addlib/index.html"><u><span style="FONT-FAMILY: Comic Sans MS">附加库</span></u></a><span style="FONT-FAMILY: Comic Sans MS"> </span>
    <li><a class=modified-month href="http://rubycn.ce-lab.net/man/upgrade/index.html"><u><span style="FONT-FAMILY: Comic Sans MS">Ruby变更记录</span></u></a><span style="FONT-FAMILY: Comic Sans MS"> </span>
    <ul>
        <li><a class=modified-month href="http://rubycn.ce-lab.net/man/upgrade/version_1-6.html"><u><span style="FONT-FAMILY: Comic Sans MS">ruby 1.6 特性</span></u></a><span style="FONT-FAMILY: Comic Sans MS"> </span>
        <li><a class=modified-month href="http://rubycn.ce-lab.net/man/upgrade/version_1-7.html"><u><span style="FONT-FAMILY: Comic Sans MS">ruby 1.7 特性</span></u></a><span style="FONT-FAMILY: Comic Sans MS"> </span>
        <li><a class=modified-month><span style="FONT-FAMILY: Comic Sans MS">ruby 1.8 特性</span></a><span style="FONT-FAMILY: Comic Sans MS"> </span>
        <ul>
            <li><a class=modified-month><span style="FONT-FAMILY: Comic Sans MS">1.6.8到1.8.0的变更点(总结)</span></a><span style="FONT-FAMILY: Comic Sans MS"> </span></li>
        </ul>
        <li><a class=modified-month><span style="FONT-FAMILY: Comic Sans MS">ruby 1.9 特性</span></a><span style="FONT-FAMILY: Comic Sans MS"> </span>
        <li><a class=modified-month><span style="FONT-FAMILY: Comic Sans MS">obsolete</span></a><span style="FONT-FAMILY: Comic Sans MS"> </span>
        <li><a class=modified-month><span style="FONT-FAMILY: Comic Sans MS">对应DOSISH</span></a><span style="FONT-FAMILY: Comic Sans MS"> </span></li>
    </ul>
    <li><span style="FONT-FAMILY: Comic Sans MS">附录 </span>
    <ul>
        <li><span style="FONT-FAMILY: Comic Sans MS">疑似BNF的Ruby语法 </span>
        <li><a class=modified-month title="Ruby术语集 (12d)" href="http://rubycn.ce-lab.net/man/appendix_dic.html"><u><span style="FONT-FAMILY: Comic Sans MS">Ruby术语集</span></u></a><span style="FONT-FAMILY: Comic Sans MS"> </span>
        <li><a class=modified-month href="http://rubycn.ce-lab.net/man/platform/index.html"><u><span style="FONT-FAMILY: Comic Sans MS">Ruby的运行平台</span></u></a><span style="FONT-FAMILY: Comic Sans MS"> </span>
        <li><a class=modified-month href="http://rubycn.ce-lab.net/man/pack_template_string.html"><u><span style="FONT-FAMILY: Comic Sans MS">pack模板字符串</span></u></a><span style="FONT-FAMILY: Comic Sans MS"> </span>
        <li><a class=modified-month href="http://rubycn.ce-lab.net/man/sprintf_format.html"><u><span style="FONT-FAMILY: Comic Sans MS">sprintf格式</span></u></a><span style="FONT-FAMILY: Comic Sans MS"> </span>
        <li><a class=modified-month href="http://rubycn.ce-lab.net/man/Marshal_format.html"><u><span style="FONT-FAMILY: Comic Sans MS">Marshal格式</span></u></a><span style="FONT-FAMILY: Comic Sans MS"> </span>
        <li><a class=modified-year title="Ruby FAQ" href="http://rubycn.ce-lab.net/faq/index.html"><u><span style="FONT-FAMILY: Comic Sans MS">Ruby FAQ</span></u></a><span style="FONT-FAMILY: Comic Sans MS"> </span>
        <li><a class=modified-year href="http://rubycn.ce-lab.net/man/trap/index.html"><u><span style="FONT-FAMILY: Comic Sans MS">Ruby的陷阱</span></u></a><span style="FONT-FAMILY: Comic Sans MS"> </span>
        <li><span style="FONT-FAMILY: Comic Sans MS">Ruby/Tk FAQ </span>
        <li><span style="FONT-FAMILY: Comic Sans MS">Ruby的相关书籍 </span>
        <li><span style="FONT-FAMILY: Comic Sans MS">Ruby Documentation Project (RDP) </span>
        <li><span style="FONT-FAMILY: Comic Sans MS">HTML Help版和分立HTML </span>
        <li><span style="FONT-FAMILY: Comic Sans MS">ReFe </span></li>
    </ul>
    <li><span style="FONT-FAMILY: Comic Sans MS">索引 </span>
    <li><span style="FONT-FAMILY: Comic Sans MS">功能分类索引 </span>
    <li><span style="FONT-FAMILY: Comic Sans MS">发布条件 </span></li>
</ul>
<p><span style="FONT-FAMILY: Comic Sans MS">链接：<a href="http://rubycn.ce-lab.net/man/index.html">http://rubycn.ce-lab.net/man/index.html</a></span></p>
</blockquote>
<img src ="http://www.blogjava.net/keywen1983/aggbug/114138.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keywen1983/" target="_blank">keywen</a> 2007-04-27 16:59 <a href="http://www.blogjava.net/keywen1983/archive/2007/04/27/114138.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我爱Ruby的37个理由 </title><link>http://www.blogjava.net/keywen1983/archive/2007/04/27/114136.html</link><dc:creator>keywen</dc:creator><author>keywen</author><pubDate>Fri, 27 Apr 2007 08:55:00 GMT</pubDate><guid>http://www.blogjava.net/keywen1983/archive/2007/04/27/114136.html</guid><wfw:comment>http://www.blogjava.net/keywen1983/comments/114136.html</wfw:comment><comments>http://www.blogjava.net/keywen1983/archive/2007/04/27/114136.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keywen1983/comments/commentRss/114136.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keywen1983/services/trackbacks/114136.html</trackback:ping><description><![CDATA[<p align=center>原著：&nbsp;&nbsp;&nbsp; <a href="http://hypermetrics.com/ruby.html"><u><font color=#0000ff>http://hypermetrics.com/ruby.html</font></u></a>
<p align=center>翻译：<a href="http://www.ruby-cn.org/"><u><font color=#810081>http://www.ruby-cn.org/</font></u></a>
<p align=center>一切权利归原作者所有，转载请保留。
<p align=center>&nbsp;
<p>　
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 没有必要浪费时间来谈论Ruby的历史，如果你没有听说过它，你可以去它的主页看看<a href="http://www.ruby-lang.org/">www.ruby-lang.org</a>，或者去它的新闻组comp.lang.ruby。如果你知道Ruby，我将讲述我为什么会喜爱它。
<p>&#160;</p>
<ol>
    <li>
    <p><strong><font color=red>它是面向对象的</font></strong><strong><font color=red>。</font></strong> 这表示什么意义呢？ 如果问10个程序员，你也许会得到12种结果，你有你的看法，我不会试图去改变你的看法。但是有一点，Ruby提供了对数据和方法的封装，允许类的继承，对象的多态。不像其它语言（C++,Perl等），Ruby从设计的时候开始就是一种面向对象的语言。</p>
    <li>
    <p><strong><font color=red>它是纯面向对象的语言。</font></strong>难道是我多余？不是这样的，之所以这么说，因为Ruby中一切都是对象，包括原始数据类型（primitive data types），比如字符串，整型，都表示的是一个对象，而不需要Java那样提供包装类（wrapper classes）。另外，甚至是常量，也会被当作对象来处理，所以一个方法的接收者，可以是一个数字常量。</p>
    <li>
    <p><strong><font color=red>它是动态语言。</font> </strong>对于只熟悉像C++，Java这样静态语言的人来说，这是一个重大的概念上的差别。动态意味着方法和变量可以在运行时候添加和重定义。它减少了像C语言那样的条件编译（<strong>#ifdef</strong>），而且容易实现反射API（reflection API）。动态性使得程序能自我感知（self-aware），比如运行时类型信息，检测丢失的方法，用来检测增加方法的钩子等。在这些方面Ruby和Lisp和Smalltalk都有一些关系。</p>
    <li>
    <p><strong><font color=red>它是一种解释执行的语言。</font></strong>这是一个负杂的问题，值得重点解释一下，也许这个特点会因为性能的原因而引起从优点变为缺点的争论。对于此，我有几点见解：1.第一：快速开发循环是一个巨大的好处，这要得意于Ruby的解释执行。2.多慢才叫慢呢？在说它慢之前先定一个慢的基准。3.也许有人要批评我了，但我还要说：处理器每年都在变得原来越快。4.如果你真的很在意你的速度，你可以用C开发一部分你的代码。5.最后，从某种意义上说，这是一个还在争论中的问题，没有一个语言天生就是解释型的，世界上没有哪个法律进制开发一个Ruby编译器出来。 </p>
    <li>
    <p><strong><font color=red>它理解正则表达式。</font> </strong>很多年之前，正则表达式只是用在UNIX的工具如grep或者sed中，或者在vi中进行一些一定的查找－替换等。Perl的出现解决了这些问题，而现在，Ruby同样也能做到这些。越来越多得人认识到了这种字符串和文本处理技术的难以置信的能力，如果你对此表示怀疑，那么请去看一下 Jeffrey Friedl的书<em>Mastering Regular Expressions</em>，然后，你就应该不会有什么怀疑了。</p>
    <li>
    <p><strong><font color=red>它是多平台的。</font> </strong>Ruby可以运行在Linux，UNIX，Windows，BeOS，甚至MS-DOS。如果我没记错，甚至还有一个Amiga 版本的</p>
    <li>
    <p><strong><font color=red>它是派生来的。</font> </strong>这是一件好事情吗？抛去书本上的知识，它是有用的。牛顿曾说过&#8220;我如果看得比别人远，那是因为我站在巨人的肩膀上&#8221;。Ruby同样也是站在巨人的肩膀上，它借鉴了Smalltalk, CLU, Lisp, C, C++, Perl, Kornshell等的优点。在我看来它的原则包括：1.不要重复制造轮子。2.不要修补没有损坏的东西。3.最后一个也是比较特别的，它能平衡（Leverage ）你已有的知识。你了解UNIX的文件和管道，没关系，你可以在Ruby中继续用，你用了两年的时间学习了<strong>printf </strong>指示符，不必担心，Ruby中你也可以使用<strong>printf</strong>。你知道Perl的正则表达式处理，那么你也就学会了Ruby中的正则表达式。</p>
    <li>
    <p><strong><font color=red>它是创新的。</font> </strong>是不是觉得这个和第七条矛盾了？也许是有一部分矛盾，每个硬币都有两面。一些Ruby的特点都是创新的东西，比如非常有用的Mix-in，也许这个特点会被后来的语言借鉴。（注：一位读者指出Lisp早在1979年就有mix-in了，这是我的疏忽；我应该找个更好的例子，并且能确信它。）</p>
    <li>
    <p><strong><font color=red>它是非常高层次的语言。（Very High-Level Language ：VHLL)</font> </strong>这是一个容易引起争论的话题，因为这个术语还没有广泛使用。而且它的意思比起OOP来说还是有讨论余地的。我这么说，指的是Ruby能支持复杂的结构和这些结构的负杂的操作，而需要的指令非常少，这与最小努力原则（Principle of Least Effort）一致。</p>
    <li>
    <p><strong><font color=red>它有一个灵巧的垃圾收集器。</font> </strong>像<strong>malloc</strong>和<strong>free </strong>这样的例程已经是昨天的恶梦了，你不需要什么回收内存的操作，甚至是调用垃圾收集器。 </p>
    <li>
    <p><strong><font color=red>它是脚本语言</font></strong><strong><font color=red>。</font> </strong>不要因为此就认为它不够强大，它不是一个玩具。它是完全成熟的语言，用它能轻松的完成传统的脚本操作，比如运行外部程序，检查系统资源，使用管道，捕获输出等等。</p>
    <li>
    <p><strong><font color=red>它是通用的。</font> </strong>Kornshell做的东西它也可以做，C语言做的东西它也可以做的很好。你可以用它写一个只运行一次的只有10行的程序，或者对一些遗留程序进行包装，你想写个web server，或者一个CGI，都可以用Ruby来写。</p>
    <li>
    <p><strong><font color=red>它是多线程的。</font> </strong>Y你可以用一些简单的API来写多线程程序，甚至在MS-DOS上都可以。</p>
    <li>
    <p><strong><font color=red>它是open source的。</font> </strong>你想看它的源代码吗？可以，你也可以提交补丁，参加广泛的社区，包括它的创造者。</p>
    <li>
    <p><strong><font color=red>它是直觉得。</font> </strong>Ruby的学习曲线比较低，而如果你翻过了一个坎，你开始&#8220;猜测&#8221;事情是怎么工作的，而且你的猜测很多时候都是正确的。Ruby坚持最小惊讶（ Least Astonishment）的原则。</p>
    <li>
    <p><strong><font color=red>它有异常机制。</font> </strong>像Java和 C++一样， Ruby 中也有异常机制，这意味着你不必因为返回值而将代码弄得凌乱不堪，很少的嵌套if语句，很少的意大利面条似的逻辑，更好的错误处理。</p>
    <li>
    <p><strong><font color=red>它有一个高级的数组类：Array。</font> </strong>Ruby中数组都是动态的，你不必像pascal那样在声明它的大小，也不必像C，C++那样为它分配内存。它们是对象，所以你不必关心它们的长度，实际上你不能"走到末尾（walk off the end）"。这个类提供了各种方法，使得你能够根据索引，根据元素来访问数组内容，也可以反向处理数组。你也可以用数作作为set，队列，堆栈等。如果你想用查找表，可以用哈希结构。</p>
    <li>
    <p><strong><font color=red>它是可以扩展的。</font> </strong>你可以用C或者Ruby来编写外部库（external libraries），同样，你也可以修改已有的类和对象。</p>
    <li>
    <p><strong><font color=red>鼓励文档编程（literate programming）。</font> </strong>你可以在Ruby程序中嵌入注释或者文档，这些文档可以用Ruby的文档工具提取和处理。（真正的文档编程者可能认为这是必须的基本东西吧）</p>
    <li>
    <p><strong><font color=red>创造性的使用标点符号和大写字母。</font> </strong>比如一个方法返回一个boolean型（Ruby中并没有这种说法），那么一般这个方法最后都以问号结尾，如果一个方法要修改接收者本身，或者具有破坏性，则用一个感叹号结尾，简单，直觉。所有常量，包括类名，都以大写字母开头，所有对象属性以@符号开头。这有匈牙利命名法的实用性，但是没有视觉上的丑陋性。</p>
    <li>
    <p><strong><font color=red>Reserved words aren't.</font></strong>It's perfectly allowable to use an identifier that is a so-called "reserved word" as long as the parser doesn't perceive an amibiguity. This is a breath of fresh air.（能用保留字作为变量吗？没看太懂。）</p>
    <li>
    <p><strong><font color=red>支持迭代器。</font> </strong>这使得你可以给一个数组，list，tree等对象传递一个块，然后对它们的每个元素进行block调用。这个技术值得深入学习。</p>
    <li>
    <p><strong><font color=red>它的安全性。 </font></strong>Ruby借鉴了Perl中基于$SAFE变量的分层控制机制 。这对于CGI程序来说非常有用，可以防止人们攻击web服务器。</p>
    <li>
    <p><strong><font color=red>Ruby中没有指针。</font> </strong>像 Java一样，和C++不同，Ruby中没有指针的概念，所以免除了关于指针语法和调试的头疼。当然，这也意味着最底层的程序开发将会很困难，比如访问一个设备的控制状态寄存器；但是，我们可以用一个C库来调用。（像C语言程序员有时候要使用汇编语言一样，Ruby程序员有时候也要使用C语言来完成一定的任务）</p>
    <li>
    <p><strong><font color=red>它使得人们专注于细节。</font> </strong>Ruby中有很多同义词和别名，你也许不记得字符串或数组的长度是<strong>size</strong>还是<strong>length</strong>，没关系，它们任何一个都可以工作。对于Range来说，你可以使用<strong>begin </strong>和<strong>end</strong><strong> </strong>或者使用 <strong>first </strong>和 <strong>last</strong>，它们也都工作。你想拼写<strong>indices</strong>，结果写成了<strong>indexes</strong>，没关系，这两个都一样。</p>
    <li>
    <p><strong><font color=red>非常灵活的语法。</font> </strong>方法调用时候括号可以省略，参数之间只需用逗号分割。类似Perl风格的数组定义可以让你不用全部使用引号和逗号定义一个字符串的数组。关键字<strong>return</strong>可以生路。</p>
    <li>
    <p><strong><font color=red>丰富的库函数。</font> </strong>Ruby提供了线程，socket，有限对象持久化，CGI，服务器端可执行的，数据库等其它库函数，还有对Tk的支持等。还有很多其它的库函数。</p>
    <li>
    <p><strong><font color=red>本身自带调试器（debugger）。</font> </strong>在完美的世界中，我们才不需要调试器，但是这个世界不是完美的。</p>
    <li>
    <p><strong><font color=red>交互式执行。</font> </strong>可以用Ruby像Kornshell那样执行。 (这可能是本页最具争论的一点，我不得不承认，Ruby真的不是一个很好的shell。但我仍然坚持，基于Ruby的shell是一个不错的主意。） </p>
    <li>
    <p><strong><font color=red>它是简明的。</font> </strong>不像Pascal那样要求<strong>if</strong>后面跟着<strong>then</strong>，<strong>while</strong>后面跟着<strong>do </strong>。变量不需要声明，它们不需要类型。返回类型不必指定，关键字<strong>return</strong> 可以省略，它将返回最后一个表达式的值。另一方面，它也不像Perl或者C那样复杂难懂。 </p>
    <li>
    <p><strong><font color=red>它是面向表达式的（expression-oriented）。</font> </strong>你可以轻易的使用 <strong>x = if a&lt;0 then b else c</strong>&nbsp; 这样的表达式。</p>
    <li>
    <p><strong><font color=red>语法砂糖（syntax sugar）。</font> </strong>(像Mary Poppins解释：一勺语法的糖能使语义被接受) 。如果你想对数组x进行迭代，可以用<strong>for a in x</strong>。你也可以用a+=b代替a=a+b，这都行。很多操作符其实在Ruby中都是方法，这些方法的名字比较直观，短小，有着便利的语法。</p>
    <li>
    <p><strong><font color=red>它支持操作符重载。</font> </strong>如果我没有记错的话，早在很久之前的SNOBOL就提供了这个功能，但是直到C++它才变得流行。虽然它可能乱用而出错，但是这仍是一个非常不错的优点。另外Ruby自动定义操作符的赋值版本，比如，如果你重定义了+，那么，你同时得到了一个+=操作符。</p>
    <li>
    <p><strong><font color=red>支持无限精度的数字。</font></strong><strong> </strong>有人会关心 <strong>short</strong>, <strong>int</strong>, <strong>long</strong>吗，只需要使用 <strong>Bignum</strong>就行了，你可以轻松的实现365的阶乘。</p>
    <li>
    <p><strong><font color=red>有幂操作符。</font> </strong>在很久以前，我们在BASIC和FORTRAN中使用它，然而当我们学习Pascal和C之后，我们才认识到这个操作符有多差劲。（我们被告知自己连它是怎么工作的都不知道－它使用了对数，迭代了吗，效率如何？），但是，我们真的关系这些吗？如果是，我们可以重写这个方法，否则，Ruby有非常好的**操作符可以用。</p>
    <li>
    <p><strong><font color=red>强大的字符串处理。</font> </strong>If如果你想查找，判断，格式化，trim，定界（delimit），interpose，tokenize，你可以自己选择随便用哪一个来得到你想要的结果。 </p>
    <li>
    <p style="FONT-FAMILY: Comic Sans MS"><strong><font color=red>规则很少引起异常。</font> </strong>Ruby的语法和语义比其它语言有条理，每种语言都有独特的一面，每条规则都会有异常发生，但是Ruby规则引起的异常就少的多了。</p>
    <hr color=red>
    <hr color=red>
    </li>
</ol>
<img src ="http://www.blogjava.net/keywen1983/aggbug/114136.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keywen1983/" target="_blank">keywen</a> 2007-04-27 16:55 <a href="http://www.blogjava.net/keywen1983/archive/2007/04/27/114136.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ruby程序快速入门之数据结构</title><link>http://www.blogjava.net/keywen1983/archive/2007/04/27/114134.html</link><dc:creator>keywen</dc:creator><author>keywen</author><pubDate>Fri, 27 Apr 2007 08:51:00 GMT</pubDate><guid>http://www.blogjava.net/keywen1983/archive/2007/04/27/114134.html</guid><wfw:comment>http://www.blogjava.net/keywen1983/comments/114134.html</wfw:comment><comments>http://www.blogjava.net/keywen1983/archive/2007/04/27/114134.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keywen1983/comments/commentRss/114134.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keywen1983/services/trackbacks/114134.html</trackback:ping><description><![CDATA[<blockquote dir=ltr style="MARGIN-RIGHT: 0px">
<h1><span style="FONT-FAMILY: Comic Sans MS">Ruby程序快速入门之数据结构</span></h1>
</blockquote>
<blockquote>
<p><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="FONT-FAMILY: Comic Sans MS">就象许多程序语言一样，Ruby也提供了完整的数据结构来存储和管理数据与对象。数组是使用方括号和用逗号隔开的单个对象参考列表创建的。<br></span><br></p>
<table borderColor=#cccccc width="90%" align=center bgColor=#e3e3e3 border=1>
    <tbody>
        <tr>
            <td style="FONT-FAMILY: Comic Sans MS">presidents=["John"，"Richard"，"Gerald"，"Ronald"，"George"，"William"];</td>
        </tr>
    </tbody>
</table>
<br>　<span style="FONT-FAMILY: Comic Sans MS">　为了更为容易地创建一个充满单词的数组，Ruby提供了一个特殊的标志来消除双引号和逗号，见下面例子：<br></span><br>
<table borderColor=#cccccc width="90%" align=center bgColor=#e3e3e3 border=1>
    <tbody>
        <tr>
            <td style="FONT-FAMILY: Comic Sans MS">presidents= %w[ John Richard Gerald Ronald George William];</td>
        </tr>
    </tbody>
</table>
<br>　<span style="FONT-FAMILY: Comic Sans MS">　在其它编程语言中，"数组"一词经常意味着一组相同性质的对象的集合。但在Ruby中，不是这样。在Ruby中，一个"数组"可以是由不同性质的对象参考组成的集合。因此，下面是有效的数组表达形式：</span> <br><br>
<table borderColor=#cccccc width="90%" align=center bgColor=#e3e3e3 border=1>
    <tbody>
        <tr>
            <td style="FONT-FAMILY: Comic Sans MS">order_date=Date.today()<br>shirt_information=[14.5，"Long"，32，order_date]</td>
        </tr>
    </tbody>
</table>
<br>　　<span style="FONT-FAMILY: Comic Sans MS">在这个数组中，对象参考按顺序存储并索引。象Java一样，索引从0开始，索引可用来从数组中检索对象参考。下面的示例中请求的是，上面创建的shirt_information数组中的第3个元素（索引为2）。注意，你可以使用方括号标志或at方法来检索数组中的对象参考。</span><br><br>
<table borderColor=#cccccc width="90%" align=center bgColor=#e3e3e3 border=1>
    <tbody>
        <tr>
            <td style="FONT-FAMILY: Comic Sans MS">irb(main):003:0＞ shirt_information[2]<br>=＞ 32<br>irb(main):004:0＞ shirt_information.at(2)<br>=＞ 32</td>
        </tr>
    </tbody>
</table>
<br>　<span style="FONT-FAMILY: Comic Sans MS">　有趣的是，你还可以使用一个负数索引来引用数组中的元素。一个负数索引是从数组尾部开始计数的。 <br></span><br>
<table borderColor=#cccccc width="90%" align=center bgColor=#e3e3e3 border=1>
    <tbody>
        <tr>
            <td style="FONT-FAMILY: Comic Sans MS">irb(main):005:0＞ shirt_information[-3]<br>=＞ "Long"</td>
        </tr>
    </tbody>
</table>
<br>　　<span style="FONT-FAMILY: Comic Sans MS">数组是动态的，意味着数组的大小可以根据你的操作而动态地改变。你可以使用[index]=操作符来添加或替换一个数组中的元素。</span><br><br>
<table borderColor=#cccccc width="90%" align=center bgColor=#e3e3e3 border=1>
    <tbody>
        <tr>
            <td style="FONT-FAMILY: Comic Sans MS">irb(main):013:0＞ shirt_information<br>=＞ [14.5， "Long"， 32， #&lt;Date: 4907585/2，0，2299161＞]<br>irb(main):014:0＞ shirt_information[1]="Medium" #change shirt length<br>=＞ "Medium"<br>irb(main):015:0＞ shirt_information[4]=49.99 #add shirt cost<br>=＞ 49.99<br>irb(main):016:0＞ shirt_information<br>=＞ [14.5， "Medium"， 32， #&lt;Date: 4907585/2，0，2299161＞， 49.99]</td>
        </tr>
    </tbody>
</table>
<br>　<span style="FONT-FAMILY: Comic Sans MS">　你也可以使用数字对和范围来由数组的一部分创建一个新数组，通过使用一个[开始索引，元素数目]标志或[开始索引...结束索引]标志。<br></span><br>
<table borderColor=#cccccc width="90%" align=center bgColor=#e3e3e3 border=1>
    <tbody>
        <tr>
            <td style="FONT-FAMILY: Comic Sans MS">irb(main):019:0＞ shirt_information<br>=＞ [14.5， "Long"， 32， #&lt;Date: 4907585/2，0，2299161＞， 49.99]<br>irb(main):020:0＞ shirt_dimensions = shirt_information[0，3]<br>=＞ [14.5， "Long"， 32]<br>irb(main):021:0＞ shirt_order = shirt_information[2..5]<br>=＞ [32， #&lt;Date: 4907585/2，0，2299161＞， 49.99]<br>irb(main):030:0＞ shirt_information[-3，2]<br>=＞ [32， #&lt;Date: 4907585/2，0，2299161＞]</td>
        </tr>
    </tbody>
</table>
<br>　　<span style="FONT-FAMILY: Comic Sans MS">这个结合了赋值运算符([]=)的标志将产生一个很复杂的元素插入或代替操作。一个开始/结束索引或范围可以用在赋值操作符中。具体使用请参考下面的示例：</span><br><br>
<table borderColor=#cccccc width="90%" align=center bgColor=#e3e3e3 border=1>
    <tbody>
        <tr>
            <td style="FONT-FAMILY: Comic Sans MS">irb(main):001:0＞ test_array=["zero"， "one"， "two"， "three"， "four"]<br>=＞ ["zero"， "one"， "two"， "three"， "four"]<br>irb(main):002:0＞ #starting at the second element， replace the next <br>two elements with a single element<br>irb(main):003:0* test_array[1，2]=1<br>=＞ 1<br>irb(main):004:0＞ test_array<br>=＞ ["zero"， 1， "three"， "four"]<br>irb(main):005:0＞ #insert a new element after the second one<br>(zero as a second parameter indicates "insert")<br>irb(main):006:0* test_array[2，0]=2<br>=＞ 2<br>irb(main):007:0＞ test_array<br>=＞ ["zero"， 1， 2， "three"， "four"]<br>irb(main):008:0＞ #add an array of elements after element 5<br>irb(main):009:0* test_array[5，0]=[5，6，7]<br>=＞ [5， 6， 7]<br>irb(main):010:0＞ test_array<br>=＞ ["zero"， 1， 2， "three"， "four"， 5， 6， 7]<br>irb(main):011:0＞ #replace elements in the index range of 3..4 with the array assigned<br>irb(main):012:0* test_array[3..4]=[3，4]<br>=＞ [3， 4]<br>irb(main):013:0＞ test_array<br>=＞ ["zero"， 1， 2， 3， 4， 5， 6， 7]</td>
        </tr>
    </tbody>
</table>
<br>　　<span style="FONT-FAMILY: Comic Sans MS">最后，也许Ruby数组中最有力量的运算可以从数学操作符中找到答案-它们能够从现在数组创建新的数组。例如，+操作符允许你由两个数组的连接创建一个新数组，而*操作符允许你复制或连接一个数组自身若干次。</span><br><br>
<table borderColor=#cccccc width="90%" align=center bgColor=#e3e3e3 border=1>
    <tbody>
        <tr>
            <td style="FONT-FAMILY: Comic Sans MS">irb(main):033:0＞ shirt_information<br>=＞ [14.5， "Long"， 32， #&lt;Date: 4907585/2，0，2299161＞， 49.99]<br>irb(main):034:0＞ pant_information=[34，32，59.99，order_date]<br>=＞ [34， 32， 59.99， #&lt;Date: 4907585/2，0，2299161＞]<br>irb(main):035:0＞ shirt_information + pant_information<br>=＞ [14.5， "Long"， 32， #&lt;Date: 4907585/2，0，2299161＞， 49.99， 34， 32， 59.99， <br>#&lt;Date: 4907585/2，0，2299161＞]<br>irb(main):036:0＞ shirt_information * 2<br>=＞ [14.5， "Long"， 32， #&lt;Date: 4907585/2，0，2299161＞， 49.99， 14.5， "Long"， 32， <br>#&lt;Date: 4907585/2，0，2299161＞， 49.99]<br>irb(main):037:0＞ array1 = [2，4，6，8，10]<br>=＞ [2， 4， 6， 8， 10]<br>irb(main):038:0＞ array2=[3，6，9]<br>=＞ [3， 6， 9]<br>irb(main):039:0＞ array1 - array2<br>=＞ [2， 4， 8， 10]</td>
        </tr>
    </tbody>
</table>
<br>　　<span style="FONT-FAMILY: Comic Sans MS">在Ruby中，与数组联系最密切的就是哈希表。在一个数组中，索引是一个整数。在Ruby中Hash类行为上与Array非常相似，但是它允许在集合中出现到参考对象的任何类型的对象"索引"（或键）。在另外的程序语言中，这可能被称为一个字典或地图或哈希地图。一般地，当使用哈希表时，你应该为集合中的每个元素提供两个对象参考。其中，一个对象参考用作键，另一个用作该键所指对象（即"值"）。用于指示一个键对象所指内容的标志是=＞符号。当创建哈希表时，键/值对可以在两个大括号之间被收集。作为一个哈希表的例子，你可以在哈希表中使用简单的字符串对象作为键来引用Date对象（值）。<br></span><br>
<table borderColor=#cccccc width="90%" align=center bgColor=#e3e3e3 border=1>
    <tbody>
        <tr>
            <td style="FONT-FAMILY: Comic Sans MS">holidays={"New Year"=＞Date.parse("2006-01-02")， "MLB Birthday"=＞ Date.parse("2006-01-16")， <br>"Washington Birthday"=＞Date.parse("2006-02-20")， "Memorial Day"=＞Date.parse("2006-05-29")， "July<br>4th"=＞Date.parse("2006-07-05")}</td>
        </tr>
    </tbody>
</table>
<br>　　<span style="FONT-FAMILY: Comic Sans MS">为了检索纪念日的Date对象，你可以使用"Memorial Day"字符串键。<br></span><br>
<table borderColor=#cccccc width="90%" align=center bgColor=#e3e3e3 border=1>
    <tbody>
        <tr>
            <td style="FONT-FAMILY: Comic Sans MS">irb(main):004:0＞ holidays["Memorial Day"]<br>=＞ #<br>irb(main):005:0＞ holidays["Memorial Day"].to_s<br>=＞ "2006-05-29"</td>
        </tr>
    </tbody>
</table>
<br><span style="FONT-FAMILY: Comic Sans MS">　　如你所想，在数组和哈希表中还有另外许多方法来允许你存取和修改集合中的单个元素或改变全部集合本身。因此，在Ruby中，数组和哈希表都是功能极强的动态的数据结构。</span><br><br><span style="FONT-FAMILY: Comic Sans MS">　　一旦你有一个对象参考的集合，那么在编程中最常用的一项任务就是遍历该集合中的每一个元素并执行某些操作。Ruby当然也提供了数组和哈希表中的类似机制。Ruby提供的实现遍历集合的机制是该集合对象上的一组方法。Array中的方法（如each，each_index，delete_if）和Hash中的方法（如each，each_key，each_value，each_pair）允许你的编码进行集合遍历并执行特定的任务。事实上，Ruby中的许多类都包含迭代子（iterator）方法。例如，String就提供了一个iterator方法来执行字符串的以字符或字节为单位的遍历任务。然而，在你理解iterator方法前，你首先需要理解Ruby中代码块的概念。因为当遍历集合中的元素时，对于每一个iterator方法，都是通过传递一个代码块来执行的。</span> </blockquote>
<img src ="http://www.blogjava.net/keywen1983/aggbug/114134.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keywen1983/" target="_blank">keywen</a> 2007-04-27 16:51 <a href="http://www.blogjava.net/keywen1983/archive/2007/04/27/114134.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>下载ruby辅导资料(Downloadable Ruby Tutorials)</title><link>http://www.blogjava.net/keywen1983/archive/2007/04/26/113870.html</link><dc:creator>keywen</dc:creator><author>keywen</author><pubDate>Thu, 26 Apr 2007 09:57:00 GMT</pubDate><guid>http://www.blogjava.net/keywen1983/archive/2007/04/26/113870.html</guid><wfw:comment>http://www.blogjava.net/keywen1983/comments/113870.html</wfw:comment><comments>http://www.blogjava.net/keywen1983/archive/2007/04/26/113870.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keywen1983/comments/commentRss/113870.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keywen1983/services/trackbacks/113870.html</trackback:ping><description><![CDATA[<blockquote dir=ltr style="MARGIN-RIGHT: 0px">
<p><strong style="FONT-FAMILY: Comic Sans MS">Downloadable Ruby Tutorials<br><br></p>
<p>You will find many sites on the net from where you can download Ruby tutorials. You can download the entire course material and programs presented on this site too, here:</p>
<ul>
    <li><span><a href="http://rubylearning.com/data/Ruby.zip"><u><font color=#ec981f>Ruby Study Notes</font></u></a></span>: Updated 22nd Apr. 2007
    <li><span><a href="http://rubylearning.com/data/rubyprograms.zip"><u><font color=#ec981f>Ruby Course programs</font></u></a></span>: Updated 22nd Apr. 2007 </li>
</ul>
<p><br><br>&nbsp;</p>
<p>全文链接：<a href="http://rubylearning.com/download/downloads.html">http://rubylearning.com/download/downloads.html</a></p>
</strong></blockquote>
<img src ="http://www.blogjava.net/keywen1983/aggbug/113870.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keywen1983/" target="_blank">keywen</a> 2007-04-26 17:57 <a href="http://www.blogjava.net/keywen1983/archive/2007/04/26/113870.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>进行ruby学习的例子</title><link>http://www.blogjava.net/keywen1983/archive/2007/04/26/113866.html</link><dc:creator>keywen</dc:creator><author>keywen</author><pubDate>Thu, 26 Apr 2007 09:46:00 GMT</pubDate><guid>http://www.blogjava.net/keywen1983/archive/2007/04/26/113866.html</guid><wfw:comment>http://www.blogjava.net/keywen1983/comments/113866.html</wfw:comment><comments>http://www.blogjava.net/keywen1983/archive/2007/04/26/113866.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keywen1983/comments/commentRss/113866.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keywen1983/services/trackbacks/113866.html</trackback:ping><description><![CDATA[<blockquote style="FONT-FAMILY: Comic Sans MS">
<h1>Table of Contents</h1>
<ul>
    <li><a href="http://rubylearning.com/satishtalim/introduction.html"><strong><u><font color=#ec981f>Introduction</font></u></strong></a>
    <li><a href="http://rubylearning.com/satishtalim/ruby_installation.html"><strong><u><font color=#ec981f>Installation</font></u></strong></a>
    <li><a href="http://sitekreator.com/satishtalim/first_program.html"><strong><u><font color=#ec981f>First Program</font></u></strong></a>
    <li><a href="http://rubylearning.com/satishtalim/features.html"><strong><u><font color=#ec981f>Features</font></u></strong></a>
    <li><a href="http://sitekreator.com/satishtalim/numbers.html"><strong><u><font color=#ec981f>Numbers</font></u></strong></a>
    <li><a href="http://sitekreator.com/satishtalim/fun_with_strings.html"><strong><u><font color=#ec981f>Fun with Strings</font></u></strong></a>
    <li><a href="http://rubylearning.com/satishtalim/variables_and_assignment.html"><strong><u><font color=#ec981f>Variables and Assignment</font></u></strong></a>
    <li><a href="http://sitekreator.com/satishtalim/scope.html"><strong><u><font color=#ec981f>Scope</font></u></strong></a>
    <li><a href="http://rubylearning.com/satishtalim/getting_input.html"><strong><u><font color=#ec981f>Getting Input</font></u></strong></a>
    <li><a href="http://sitekreator.com/satishtalim/names.html"><strong><u><font color=#ec981f>Names</font></u></strong></a>
    <li><a href="http://rubylearning.com/satishtalim/more_on_ruby_methods.html"><strong><u><font color=#ec981f>More on Ruby Methods</font></u></strong></a>
    <li><a href="http://sitekreator.com/satishtalim/writing_own_methods.html"><strong><u><font color=#ec981f>Writing own Ruby Methods</font></u></strong></a>
    <li><a href="http://rubylearning.com/satishtalim/ruby_method_missing.html"><strong><u><font color=#ec981f>Method Missing</font></u></strong></a>
    <li><a href="http://sitekreator.com/satishtalim/more_on_strings.html"><strong><u><font color=#ec981f>More on Strings</font></u></strong></a>
    <li><a href="http://sitekreator.com/satishtalim/simple_constructs.html"><strong><u><font color=#ec981f>Simple Constructs</font></u></strong></a>
    <li><a href="http://sitekreator.com/satishtalim/arrays.html"><strong><u><font color=#ec981f>Arrays</font></u></strong></a>
    <li><a href="http://sitekreator.com/satishtalim/ranges.html"><strong><u><font color=#ec981f>Ranges</font></u></strong></a>
    <li><a href="http://sitekreator.com/satishtalim/blocks_and_procs.html"><strong><u><font color=#ec981f>Blocks and Procs</font></u></strong></a>
    <li><a href="http://sitekreator.com/satishtalim/random_numbers.html"><strong><u><font color=#ec981f>Random Numbers</font></u></strong></a>
    <li><a href="http://sitekreator.com/satishtalim/read_write_text_files.html"><strong><u><font color=#ec981f>Read/Write files</font></u></strong></a>
    <li><a href="http://rubylearning.com/satishtalim/writing_our_own_class_in_ruby.html"><strong><u><font color=#ec981f>Writing our own Class</font></u></strong></a>
    <li><a href="http://sitekreator.com/satishtalim/including_other_files.html"><strong><u><font color=#ec981f>Including Other Files</font></u></strong></a>
    <li><a href="http://rubylearning.com/satishtalim/ruby_open_classes.html"><strong><u><font color=#ec981f>Ruby Open Classes</font></u></strong></a>
    <li><a href="http://sitekreator.com/satishtalim/inheritance.html"><strong><u><font color=#ec981f>Inheritance</font></u></strong></a>
    <li><a href="http://rubylearning.com/satishtalim/duck_typing.html"><strong><u><font color=#ec981f>Duck Typing</font></u></strong></a>
    <li><a href="http://sitekreator.com/satishtalim/overloading_methods.html"><strong><u><font color=#ec981f>Overloading Methods</font></u></strong></a>
    <li><a href="http://sitekreator.com/satishtalim/overriding_methods.html"><strong><u><font color=#ec981f>Overriding Methods</font></u></strong></a>
    <li><a href="http://sitekreator.com/satishtalim/symbols.html"><strong><u><font color=#ec981f>Symbols</font></u></strong></a>
    <li><a href="http://sitekreator.com/satishtalim/hashes.html"><strong><u><font color=#ec981f>Hashes</font></u></strong></a>
    <li><a href="http://sitekreator.com/satishtalim/exploring_time_class.html"><strong><u><font color=#ec981f>Exploring Time class</font></u></strong></a>
    <li><a href="http://sitekreator.com/satishtalim/exceptions.html"><strong><u><font color=#ec981f>Exceptions</font></u></strong></a>
    <li><a href="http://sitekreator.com/satishtalim/access_control.html"><strong><u><font color=#ec981f>Access Control</font></u></strong></a>
    <li><a href="http://sitekreator.com/satishtalim/syntactic_sugar.html"><strong><u><font color=#ec981f>Syntactic Sugar</font></u></strong></a>
    <li><a href="http://rubylearning.com/satishtalim/mutable_and_immutable_objects.html"><strong><u><font color=#ec981f>Mutable and Immutable Objects</font></u></strong></a>
    <li><a href="http://sitekreator.com/satishtalim/object_serialization.html"><strong><u><font color=#ec981f>Object Serialization</font></u></strong></a>
    <li><a href="http://sitekreator.com/satishtalim/constants.html"><strong><u><font color=#ec981f>Constants</font></u></strong></a>
    <li><a href="http://sitekreator.com/satishtalim/modules.html"><strong><u><font color=#ec981f>Modules/Mixins</font></u></strong></a>
    <li><a href="http://sitekreator.com/satishtalim/self.html"><strong><u><font color=#ec981f>Self</font></u></strong></a>
    <li><a href="http://sitekreator.com/satishtalim/regular_expressions.html"><strong><u><font color=#ec981f>Regular Expressions</font></u></strong></a>
    <li><a href="http://sitekreator.com/satishtalim/unit_testing.html"><strong><u><font color=#ec981f>Unit Testing</font></u></strong></a>
    <li><a href="http://sitekreator.com/satishtalim/socket_programming.html"><strong><u><font color=#ec981f>Socket Programming</font></u></strong></a>
    <li><a href="http://sitekreator.com/satishtalim/smtp_class.html"><strong><u><font color=#ec981f>SMTP class</font></u></strong></a>
    <li><a href="http://sitekreator.com/satishtalim/web_services.html"><strong><u><font color=#ec981f>Web services</font></u></strong></a>
    <li><a href="http://rubylearning.com/satishtalim/ruby_tk_tutorial.html"><strong><u><font color=#ec981f>Ruby/Tk</font></u></strong></a>
    <li><a href="http://sitekreator.com/satishtalim/using_ruby_mysql.html"><strong><u><font color=#ec981f>Using Ruby/MySQL</font></u></strong></a>
    <li><a href="http://sitekreator.com/satishtalim/ruby_tools.html"><strong><u><font color=#ec981f>Ruby Tools</font></u></strong></a>
    <li><a href="http://sitekreator.com/satishtalim/java_to_ruby.html"><strong><u><font color=#ec981f>Java to Ruby</font></u></strong></a>
    <li><a href="http://sitekreator.com/satishtalim/ruby_on_rails.html"><strong><u><font color=#ec981f>Ruby on Rails</font></u></strong></a>
    <li><a href="http://sitekreator.com/satishtalim/solutions.html"><strong><u><font color=#ec981f>Solutions</font></u></strong></a>
    <li><a href="http://rubylearning.com/satishtalim/ruby_quirks.html"><strong><u><font color=#ec981f>Ruby Quirks</font></u></strong></a> </li>
</ul>
<p>都是英文版的，耐心看吧！</p>
</blockquote>
<img src ="http://www.blogjava.net/keywen1983/aggbug/113866.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keywen1983/" target="_blank">keywen</a> 2007-04-26 17:46 <a href="http://www.blogjava.net/keywen1983/archive/2007/04/26/113866.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>最快学习ruby的方法(The Fastest Way to Learn Ruby)</title><link>http://www.blogjava.net/keywen1983/archive/2007/04/26/113864.html</link><dc:creator>keywen</dc:creator><author>keywen</author><pubDate>Thu, 26 Apr 2007 09:45:00 GMT</pubDate><guid>http://www.blogjava.net/keywen1983/archive/2007/04/26/113864.html</guid><wfw:comment>http://www.blogjava.net/keywen1983/comments/113864.html</wfw:comment><comments>http://www.blogjava.net/keywen1983/archive/2007/04/26/113864.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keywen1983/comments/commentRss/113864.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keywen1983/services/trackbacks/113864.html</trackback:ping><description><![CDATA[<blockquote dir=ltr style="MARGIN-RIGHT: 0px">
<p style="FONT-FAMILY: Comic Sans MS">The Fastest Way to Learn Ruby<br><br></p>
<h2><span style="FONT-FAMILY: Comic Sans MS">Wise Words</span></h2>
<blockquote>
<p><span style="FONT-FAMILY: Comic Sans MS">rubylearning.com is a thorough collection of Ruby study notes for those who are new to the language and in search of a solid introduction to Ruby's concepts and constructs - ruby-lang.org</span></p>
</blockquote>
<p><br>&nbsp;</p>
<h3><span style="FONT-FAMILY: Comic Sans MS">Dive in to </span><a title="Start learning Ruby immediately..." href="http://rubylearning.com/satishtalim/tutorial.html"><span style="FONT-FAMILY: Comic Sans MS">Learn Ruby</span></a><span style="FONT-FAMILY: Comic Sans MS">.</span></h3>
<p><br><a title="Copyright @2006, Yukihiro Matsumoto" href="http://rubylearning.com/images/ruby.png"><img height=120 alt="Ruby Logo" src="http://rubylearning.com/images/ruby.png" width=100></a><span style="FONT-FAMILY: Comic Sans MS"> My interest in Ruby was aroused after I read an article Ruby the Rival in November 2005. I started learning Ruby myself and made my own Ruby study notes. What's presented here is a result of that.</span></p>
<p><span style="FONT-FAMILY: Comic Sans MS">I'd like to thank everyone on the ruby-talk mailing list for their thoughts and encouragement; all of my wonderful PuneRuby RUG members, for their help in making these study notes far better than I could have done alone. I would like to specially thank </span><a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#116;&#105;&#122;&#64;&#116;&#105;&#122;&#46;&#115;&#116;"><span style="FONT-FAMILY: Comic Sans MS">Andy Tyrrell</span></a><span style="FONT-FAMILY: Comic Sans MS"> from UK, for his help in tweaking the Syntax Highlighter css.</span></p>
<p><span style="FONT-FAMILY: Comic Sans MS">Since these are my study notes, I have made extensive references to the blogs and articles of various </span><a href="http://sitekreator.com/satishtalim/ruby_gurus.html"><span style="FONT-FAMILY: Comic Sans MS">Ruby Gurus</span></a><span style="FONT-FAMILY: Comic Sans MS"> and to the Ruby books from Apress, Manning, O'Reilly and Pragmatic Programmers; my acknowledgment and thanks to all of them.</span></p>
<p><span style="FONT-FAMILY: Comic Sans MS">If you notice any errors or typos, or have any comments or suggestions or good exercises I could include, or have any queries on any of the topics here, please let me know by filling out the </span><a href="http://rubylearning.com/contact/contact.html"><span style="FONT-FAMILY: Comic Sans MS">contact form</span></a><span style="FONT-FAMILY: Comic Sans MS"> on this site. Good luck and I hope you find this site useful!</span><br></p>
<br><span style="FONT-FAMILY: Comic Sans MS">强力推荐：</span><a href="http://rubylearning.com/"><span style="FONT-FAMILY: Comic Sans MS">http://rubylearning.com/</span></a></blockquote>
<img src ="http://www.blogjava.net/keywen1983/aggbug/113864.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keywen1983/" target="_blank">keywen</a> 2007-04-26 17:45 <a href="http://www.blogjava.net/keywen1983/archive/2007/04/26/113864.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>其他主流编程语言和ruby的异同之处(Ruby From Other Languages) </title><link>http://www.blogjava.net/keywen1983/archive/2007/04/26/113861.html</link><dc:creator>keywen</dc:creator><author>keywen</author><pubDate>Thu, 26 Apr 2007 09:38:00 GMT</pubDate><guid>http://www.blogjava.net/keywen1983/archive/2007/04/26/113861.html</guid><wfw:comment>http://www.blogjava.net/keywen1983/comments/113861.html</wfw:comment><comments>http://www.blogjava.net/keywen1983/archive/2007/04/26/113861.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keywen1983/comments/commentRss/113861.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keywen1983/services/trackbacks/113861.html</trackback:ping><description><![CDATA[<blockquote>
<p><strong style="FONT-FAMILY: Comic Sans MS">Ruby From Other Languages <br></strong><br><br><span style="FONT-FAMILY: Comic Sans MS">When you first look at some Ruby code, it will likely remind you of other programming languages you&#8217;ve used. This is on purpose. Much of the syntax is familiar to users of Perl, Python, and Java (among other languages), so if you&#8217;ve used those, learning Ruby will be a piece of cake.</span></p>
<p><span style="FONT-FAMILY: Comic Sans MS">This document contains two major sections. The first attempts to be a rapid-fire summary of what you can expect to see when going from language X to Ruby. The second section tackles the major language features and how they might compare to what you&#8217;re already familiar with.</span></p>
<h2><span style="FONT-FAMILY: Comic Sans MS">What to Expect: Language X to Ruby</span></h2>
<ul>
    <li><a href="http://www.ruby-lang.org/en/documentation/ruby-from-other-languages/to-ruby-from-c-and-c-/"><span style="FONT-FAMILY: Comic Sans MS">To Ruby From C and C++</span></a><span style="FONT-FAMILY: Comic Sans MS"> </span>
    <li><a href="http://www.ruby-lang.org/en/documentation/ruby-from-other-languages/to-ruby-from-java/"><span style="FONT-FAMILY: Comic Sans MS">To Ruby From Java</span></a><span style="FONT-FAMILY: Comic Sans MS"> </span>
    <li><a href="http://www.ruby-lang.org/en/documentation/ruby-from-other-languages/to-ruby-from-perl/"><span style="FONT-FAMILY: Comic Sans MS">To Ruby From Perl</span></a><span style="FONT-FAMILY: Comic Sans MS"> </span>
    <li><a href="http://www.ruby-lang.org/en/documentation/ruby-from-other-languages/to-ruby-from-php/"><span style="FONT-FAMILY: Comic Sans MS">To Ruby From PHP</span></a><span style="FONT-FAMILY: Comic Sans MS"> </span>
    <li><a href="http://www.ruby-lang.org/en/documentation/ruby-from-other-languages/to-ruby-from-python/"><span style="FONT-FAMILY: Comic Sans MS">To Ruby From Python</span></a> </li>
</ul>
</blockquote>
<blockquote dir=ltr style="MARGIN-RIGHT: 0px">
<p><span style="FONT-FAMILY: Comic Sans MS">Ruby From Other Languages</span></p>
<p style="FONT-FAMILY: Comic Sans MS">是ruby官方网站写的，比较了其他主流编程语言和ruby的异同之处，给出了ruby比较有特点的功能介绍。<br><br><a style="FONT-FAMILY: Comic Sans MS" href="http://www.ruby-lang.org/en/documentation/ruby-from-other-languages/" target=blank>http://www.ruby-lang.org/en/documentation/ruby-from-other-languages/</a></p>
</blockquote>
<img src ="http://www.blogjava.net/keywen1983/aggbug/113861.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keywen1983/" target="_blank">keywen</a> 2007-04-26 17:38 <a href="http://www.blogjava.net/keywen1983/archive/2007/04/26/113861.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>加班学习RoR</title><link>http://www.blogjava.net/keywen1983/archive/2007/04/18/111744.html</link><dc:creator>keywen</dc:creator><author>keywen</author><pubDate>Wed, 18 Apr 2007 13:04:00 GMT</pubDate><guid>http://www.blogjava.net/keywen1983/archive/2007/04/18/111744.html</guid><wfw:comment>http://www.blogjava.net/keywen1983/comments/111744.html</wfw:comment><comments>http://www.blogjava.net/keywen1983/archive/2007/04/18/111744.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/keywen1983/comments/commentRss/111744.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keywen1983/services/trackbacks/111744.html</trackback:ping><description><![CDATA[<ul>
    <li><span style="FONT-FAMILY: Comic Sans MS"><img height=600 alt="" src="http://www.blogjava.net/images/blogjava_net/keywen1983/time.jpg" width=600 border=0></span>
    <li><span style="FONT-FAMILY: Comic Sans MS"></span>
    <li><span style="FONT-FAMILY: Comic Sans MS">明天公司一个项目开始，忙里偷闲学了两天的RoR，以后只能抽空加班学习了，大家继续努力吧，我可能写的时间少了！</span><span style="FONT-FAMILY: Comic Sans MS">好东西就应该大家分享，哪位朋友多学了新东西，也给我分享一下把。</span>
    <li><span style="FONT-FAMILY: Comic Sans MS">
    <li><br><img height=438 alt="" src="http://www.blogjava.net/images/blogjava_net/keywen1983/busy.jpg" width=600 border=0></span>
    <li><embed style="WIDTH: 200px; HEIGHT: 45px" name=MediaPlayer1 pluginspage=http://www.microsoft.com/Windows/MediaPlayer src=/Files/keywen1983/2006090831127573.mp3 width=200 height=45 type=application/x-mplayer2 autostart="1" showcontrols="1"></embed>&nbsp;</li>
</ul>
<img src ="http://www.blogjava.net/keywen1983/aggbug/111744.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keywen1983/" target="_blank">keywen</a> 2007-04-18 21:04 <a href="http://www.blogjava.net/keywen1983/archive/2007/04/18/111744.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>进行Rails 开发经典的Hello World程序！</title><link>http://www.blogjava.net/keywen1983/archive/2007/04/18/111702.html</link><dc:creator>keywen</dc:creator><author>keywen</author><pubDate>Wed, 18 Apr 2007 10:25:00 GMT</pubDate><guid>http://www.blogjava.net/keywen1983/archive/2007/04/18/111702.html</guid><wfw:comment>http://www.blogjava.net/keywen1983/comments/111702.html</wfw:comment><comments>http://www.blogjava.net/keywen1983/archive/2007/04/18/111702.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keywen1983/comments/commentRss/111702.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keywen1983/services/trackbacks/111702.html</trackback:ping><description><![CDATA[<ul>
    <li><br><span style="FONT-FAMILY: Comic Sans MS">Rails 开发工作的大部分集中在创建和编辑 apps 目录下的文件。</span>
    <li><span style="FONT-FAMILY: Comic Sans MS"></span>
    <li><span style="FONT-FAMILY: Comic Sans MS"><br>先来了解一下这个目录下的结构。<br>Apps 目录下包含四个主要目录，它们分别是 Controllers, models, views, helpers<br><br>１：Controllers 目录存放 rails 应用中相应的 controller 类，controller 类处理来自用户的 web 请求。<br>２：views 目录存放相应的模板文件，模板文件填充数据后，转换为 html 格式传递给用户的浏览器。<br>３：models目录存放数据模型类，模型类封装了数据库中的数据。很多框架在数据模型层都做的比较复杂，用过 rails 后，你会发现它非常容易使用。<br>４：helpers 目录存放了简化 Controllers, models, views 使用的帮助类。<br><br>编辑 controller 类<br>开始使用 Rails 之前，我们需要了解一下 rails 是如何将 controller 类中的方法和 url 映射到一起的，这对于理解 rails 工作原理很重要。<br>rails 在生成的 skeleton 框架中包含了一个 scripts 目录，这个目录中包含了很多脚本程序，它们可以帮助我们来简化很多工作，我们已经使用过了 script\server 这个脚本，它是用来启动 webrick 服务器的。现在我们看看如何生成默认的 controller 文件<br>打开新的 DOS 命令行，在C:\student目录下运行 ruby script\generate controller MyTest<br><br>C:\student\app\controllers 目录中将生成一个包含 MyTestController 类定义骨架的名为 my_test_controller.rb 的文件<br>鼠标右键点击此文件，选择&#8221;edit&#8221; 打开编辑此文件。</span><br><br><img style="WIDTH: 490px; HEIGHT: 183px" height=183 alt="" src="http://www.blogjava.net/images/blogjava_net/keywen1983/class.gif" width=490 border=0><br><br><span style="FONT-FAMILY: Comic Sans MS">在浏览器中访问 </span><a href="http://127.0.0.1:3000/My_Test/"><span style="FONT-FAMILY: Comic Sans MS">http://127.0.0.1:3000/My_Test/</span></a><br><br><span style="FONT-FAMILY: Comic Sans MS">浏览器响应没有找到对应的 index 方法，不要担心，这不是什么大问题，因为默认生成的控制器类，不包含任何方法。不过这里我们了解到，如果不输入任和 url 连接的话，默认rails 需要在控制器类中找一个 index 的方法。这很容易理解，类似于 apache 服务器中目录下面的 index.html 文件一样。<br>我们现在编辑这个 MyTestController 类。<br>如图：<br></span><br><img height=318 alt="" src="http://www.blogjava.net/images/blogjava_net/keywen1983/hi.JPG" width=576 border=0><br><br><span style="FONT-FAMILY: Comic Sans MS">重新刷新刚才的页面 </span><a href="http://127.0.0.1:3000/My_Test/"><span style="FONT-FAMILY: Comic Sans MS">http://127.0.0.1:3000/My_Test/</span></a><span style="FONT-FAMILY: Comic Sans MS"> ，你会看到如下结果</span><br><br><img height=443 alt="" src="http://www.blogjava.net/images/blogjava_net/keywen1983/hworld.jpg" width=449 border=0><br><br><span style="FONT-FAMILY: Comic Sans MS">在浏览器中运行 </span><a href="http://127.0.0.1:3000/My_Test/keywen"><span style="FONT-FAMILY: Comic Sans MS">http://127.0.0.1:3000/My_Test/keywen</span><br></a><br><img height=443 alt="" src="http://www.blogjava.net/images/blogjava_net/keywen1983/hkeywen.jpg" width=449 border=0><br><br><span style="FONT-FAMILY: Comic Sans MS">了解到 rails 是如何将 url 和控制器中的函数做简单映射的。<br><br>需要做一些解释，在运行 ruby script\generate controller MyTest 的时候， rails 做了一些默认的假设。 MyTest 对应的 controller 文件是 my_test_controller.rb, 文件中控制器类名是 MyTestController，而 url 映射是 /My_Test/ .<br>这些默认规定的好处是：我不需要编辑复杂的配置文件，只要对相应的文件做编辑就可以了。只需要关注程序逻辑，而不是其它什么，这就是 rails 设计原则中的&#8220;约定优于配置&#8221;。<br><br>另外我们也感觉到 ruby 动态语言的好处，这点是 java 所无法办到的。我们在编辑完 controller 后，重新刷新页面，就可以使程序生效。对于编译型的 java 语言来说，不重新编译，重新启动服务器是无法做到这点的。Rails 开发的易用性可见一斑了，要知道启动和编译都是非常耗费时间的，尤其对于那些 ＥＪＢ 服务器来说更是如此。</span> </li>
</ul>
<p><embed style="WIDTH: 200px; HEIGHT: 45px" name=MediaPlayer1 pluginspage=http://www.microsoft.com/Windows/MediaPlayer src=/Files/keywen1983/2006090831127573.mp3 width=200 height=45 type=application/x-mplayer2 autostart="1" showcontrols="1"></embed>&nbsp;</p>
<img src ="http://www.blogjava.net/keywen1983/aggbug/111702.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keywen1983/" target="_blank">keywen</a> 2007-04-18 18:25 <a href="http://www.blogjava.net/keywen1983/archive/2007/04/18/111702.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>创建空的 rails 网页应用程序骨架、运行webrick http 服务器</title><link>http://www.blogjava.net/keywen1983/archive/2007/04/18/111687.html</link><dc:creator>keywen</dc:creator><author>keywen</author><pubDate>Wed, 18 Apr 2007 09:20:00 GMT</pubDate><guid>http://www.blogjava.net/keywen1983/archive/2007/04/18/111687.html</guid><wfw:comment>http://www.blogjava.net/keywen1983/comments/111687.html</wfw:comment><comments>http://www.blogjava.net/keywen1983/archive/2007/04/18/111687.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keywen1983/comments/commentRss/111687.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keywen1983/services/trackbacks/111687.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<ul>
    <li><span style="FONT-FAMILY: Comic Sans MS">在 DOS 命令行窗口运行 rails student（本程序的工作目录是 C:\&nbsp; ）<br><br>C:\&gt;rails student<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; app/controllers<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; app/helpers<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; app/models<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; app/views/layouts<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; config/environments<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; components<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; db<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; doc<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; lib<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; lib/tasks<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; log<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; public/images<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; public/javascripts<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; public/stylesheets<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; script/performance<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; script/process<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; test/fixtures<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; test/functional<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; test/integration<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; test/mocks/development<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; test/mocks/test<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; test/unit<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; vendor<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; vendor/plugins<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; tmp/sessions<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; tmp/sockets<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; tmp/cache<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; tmp/pids<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; Rakefile<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; README<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; app/controllers/application.rb<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; app/helpers/application_helper.rb<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; test/test_helper.rb<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; config/database.yml<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; config/routes.rb<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; public/.htaccess<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; config/boot.rb<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; config/environment.rb<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; config/environments/production.rb<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; config/environments/development.rb<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; config/environments/test.rb<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; script/about<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; script/breakpointer<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; script/console<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; script/destroy<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; script/generate<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; script/performance/benchmarker<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; script/performance/profiler<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; script/process/reaper<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; script/process/spawner<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; script/process/inspector<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; script/runner<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; script/server<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; script/plugin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; public/dispatch.rb<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; public/dispatch.cgi<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; public/dispatch.fcgi<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; public/404.html<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; public/500.html<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; public/index.html<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; public/favicon.ico<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; public/robots.txt<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; public/images/rails.png<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; public/javascripts/prototype.js<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; public/javascripts/effects.js<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; public/javascripts/dragdrop.js<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; public/javascripts/controls.js<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; public/javascripts/application.js<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; doc/README_FOR_APP<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; log/server.log<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; log/production.log<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; log/development.log<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create&nbsp; log/test.log<br><br>C:\&gt;<br><br>你可以看到，rails 已经为你生成了&nbsp;student 应用程序的完整目录结构。<br>Rails 不仅仅是一个运行时网络应用框架，它本身包含了丰富的脚本来帮你完成程序基本骨架的工作。<br>运行 rails&nbsp;student 后， rails 将生成&nbsp;student 应用程序的默认目录结构和初始化文件。<br><br>Rails 开发的方式是： 由 rails 来生成默认的应用程序骨架，你所做的工作就是在默认目录结构中编辑文件增加应用程序逻辑就可以了。<br><br>紧接着测试一下空的应用程序，看看 rails 默认给我们完成了什么工作。<br>本程序的工作目录是 D:\railsdoc&gt;, 上面 rails 已经给我们生成了student目录，进入&nbsp;student 目录。<br><br>运行 ruby script\server 。 这条命令是运行 script 目录下的 server 命令来启动 webrick 服务器。<br><br>启动 webrick 服务器如下：<br><br>C:\student&gt;ruby script\server<br>=&gt; Booting WEBrick...<br>=&gt; Rails application started on </span><a href="http://0.0.0.0:3000/"><span style="FONT-FAMILY: Comic Sans MS">http://0.0.0.0:3000</span></a><br><span style="FONT-FAMILY: Comic Sans MS">=&gt; Ctrl-C to shutdown server; call with --help for options<br>[2007-04-18 17:02:32] INFO&nbsp; WEBrick 1.3.1<br>[2007-04-18 17:02:32] INFO&nbsp; ruby 1.8.6 (2007-03-13) [i386-mswin32]<br>[2007-04-18 17:02:32] INFO&nbsp; WEBrick::HTTPServer#start: pid=3692 port=3000<br><br>打开浏览器 ，输入网址</span><a href="http://127.0.0.1:3000/"><span style="FONT-FAMILY: Comic Sans MS">http://127.0.0.1:3000/</span></a><span style="FONT-FAMILY: Comic Sans MS"> 你会看到类似的网页。</span><br><br><img height=465 alt="" src="http://www.blogjava.net/images/blogjava_net/keywen1983/3000.jpg" width=554 border=0><br><br><br><span style="FONT-FAMILY: Comic Sans MS">暂时不要关闭这个窗口。<br><br>Webrick 简介：<br><br>Ruby 默认已经包含了丰富的软件，其中 webrick http 服务器就是其中之一。 这个程序包被用作 rubygem 的默认文档服务器。这是一个非常简单的纯 ruby 编写的服务器。如果你掌握了 webrick 你可以用几行代码来运行一个 web 服务器。<br><br>打开编辑器，编写以下脚本<br>require "webrick"<br>httpd = WEBrick::HTTPServer.new(<br>:DocumentRoot =&gt;Dir::pwd + "/ruby",<br>:Port =&gt; 80<br>)<br>trap(:INT){ httpd.shutdown }<br>httpd.start<br>然后保存到 c:\server.rb 下，双击 server.rb , 一个最简单的 http server 就运行了，它将 c:\ruby 目录作为服务器文档根目录。<br><br>C:\student&gt;ruby script\server<br>=&gt; Booting WEBrick...<br>=&gt; Rails application started on </span><a href="http://0.0.0.0:3000/"><span style="FONT-FAMILY: Comic Sans MS">http://0.0.0.0:3000</span></a><br><span style="FONT-FAMILY: Comic Sans MS">=&gt; Ctrl-C to shutdown server; call with --help for options<br>[2007-04-18 17:02:32] INFO&nbsp; WEBrick 1.3.1<br>[2007-04-18 17:02:32] INFO&nbsp; ruby 1.8.6 (2007-03-13) [i386-mswin32]<br>[2007-04-18 17:02:32] INFO&nbsp; WEBrick::HTTPServer#start: pid=3692 port=3000<br>127.0.0.1 - - [18/Apr/2007:17:09:18 中国标准时间] "GET / HTTP/1.1" 200 7552<br>- -&gt; /<br>127.0.0.1 - - [18/Apr/2007:17:09:19 中国标准时间] "GET /javascripts/prototype.js HTTP/1.1" 200 71260</span>
    <li><span style="FONT-FAMILY: Comic Sans MS"></span><a href="http://127.0.0.1:3000/"><span style="FONT-FAMILY: Comic Sans MS">http://127.0.0.1:3000/</span></a><span style="FONT-FAMILY: Comic Sans MS"> -&gt; /javascripts/prototype.js<br>127.0.0.1 - - [18/Apr/2007:17:09:19 中国标准时间] "GET /javascripts/effects.js HTTP/1.1" 200 38200<br></span><a href="http://127.0.0.1:3000/"><span style="FONT-FAMILY: Comic Sans MS">http://127.0.0.1:3000/</span></a><span style="FONT-FAMILY: Comic Sans MS"> -&gt; /javascripts/effects.js<br>127.0.0.1 - - [18/Apr/2007:17:09:19 中国标准时间] "GET /images/rails.png HTTP/1.1" 200 1787<br></span><a href="http://127.0.0.1:3000/"><span style="FONT-FAMILY: Comic Sans MS">http://127.0.0.1:3000/</span></a><span style="FONT-FAMILY: Comic Sans MS"> -&gt; /images/rails.png<br></li>
</ul>
<blockquote dir=ltr style="MARGIN-RIGHT: 0px"></span><span style="FONT-FAMILY: Comic Sans MS">
<p><br>在浏览器窗口打开 </span><a href="http://127.0.0.1/"><span style="FONT-FAMILY: Comic Sans MS">http://127.0.0.1/</span></a><br></p>
</blockquote>
<ul>
    <li><img style="WIDTH: 599px; HEIGHT: 503px" height=503 alt="" src="http://www.blogjava.net/images/blogjava_net/keywen1983/80.jpg" width=599 border=0><br><br><span style="FONT-FAMILY: Comic Sans MS">你将会看到 c:/ruby 目录的内容，我们的 ８ 行 ruby 代码就生成了一个简单 http 服务器。你不光可以定制文档根目录，你还可以象编写 java servlet 那样，为 webrick 编写 ruby servlet 代码。具体详细信息参看 </span><a href="http://www.webrick.org/"><span style="FONT-FAMILY: Comic Sans MS">www.webrick.org</span></a>
    <li></li>
</ul>
<p><embed style="WIDTH: 200px; HEIGHT: 44px" name=MediaPlayer1 pluginspage=http://www.microsoft.com/Windows/MediaPlayer src=/Files/keywen1983/2006090831127573.mp3 width=200 height=44 type=application/x-mplayer2 autostart="1" showcontrols="1"></embed>&nbsp;<br></p>
<img src ="http://www.blogjava.net/keywen1983/aggbug/111687.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keywen1983/" target="_blank">keywen</a> 2007-04-18 17:20 <a href="http://www.blogjava.net/keywen1983/archive/2007/04/18/111687.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>快速入门Ruby</title><link>http://www.blogjava.net/keywen1983/archive/2007/04/18/111620.html</link><dc:creator>keywen</dc:creator><author>keywen</author><pubDate>Wed, 18 Apr 2007 06:16:00 GMT</pubDate><guid>http://www.blogjava.net/keywen1983/archive/2007/04/18/111620.html</guid><wfw:comment>http://www.blogjava.net/keywen1983/comments/111620.html</wfw:comment><comments>http://www.blogjava.net/keywen1983/archive/2007/04/18/111620.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keywen1983/comments/commentRss/111620.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keywen1983/services/trackbacks/111620.html</trackback:ping><description><![CDATA[<p>&nbsp; </p>
<p style="FONT-FAMILY: Comic Sans MS" align=left>从"Hello,World"开始 快速入门Ruby</p>
<p style="FONT-FAMILY: Comic Sans MS" align=left>&nbsp;</p>
<p style="FONT-FAMILY: Comic Sans MS" align=left>　　最简单的"Hello,World"程序开始逐步深入了解Ruby的类、block、迭代器等特征</p>
<p align=left>　　这是一个短小的Ruby入门。这里假设读者已经安装了Ruby，如果你没有安装的话，请在阅读文前访问<a href="http://www.ruby-lang.org/" target=_blank>Ruby官方网站</a>进行<a href="http://www.ruby-lang.org/en/downloads/" target=_blank>下载</a>并安装。<br></p>
<blockquote dir=ltr>
<p align=left><br><img height=266 alt="" src="http://www.blogjava.net/images/blogjava_net/keywen1983/rails.JPG" width=398 border=0><br><br>　　交互式的Ruby</p>
<p align=left>　　打开IRB(交互式Ruby外壳)：</p>
<p align=left>&#183;&nbsp;&nbsp;&nbsp;&nbsp;如果你使用Mac OS X，那么请打开终端窗口输入irb; </p>
<p align=left>&#183;&nbsp;&nbsp;&nbsp;&nbsp;如果你使用Linux，那么请打开shell输入irb; </p>
<p align=left>&#183;&nbsp;&nbsp;&nbsp;&nbsp;如果你使用windows，那么请在开始菜单中找到Ruby-&gt;fxri，并执行它。<br></p>
<br><img height=51 alt="" src="http://www.blogjava.net/images/blogjava_net/keywen1983/1.jpg" width=464 border=0><br><br>　　Ok，在打开IRB之后，在其中输入"Hello World"。<br><br><img height=69 alt="" src="http://www.blogjava.net/images/blogjava_net/keywen1983/2.jpg" width=465 border=0><br><br>&nbsp;
<p align=left>Ruby听从你的安排!</p>
<p align=left>　　发生了什么?我们刚才编写了世界上最短小的&#8220;Hello World&#8221;程序吗?这么说不太确切。第二行输出是IRB告诉我们：上一个表达式的评估结果。如果我们希望打印出&#8220;Hello World&#8221;，那么就还需要一点努力：<br><br><br><img height=89 alt="" src="http://www.blogjava.net/images/blogjava_net/keywen1983/3.jpg" width=464 border=0><br><br><br></p>
<p align=left>　　puts在Ruby中是一个简单的打印输出命令。后面的&#8220;=&gt; nil&#8221;表示什么?——那是表达式的结果。Puts总是返回nil，这是Ruby中表示&#8220;绝对无值&#8221;(absolutely-positively-nothing value)的方式，看上去有些类似Java中的null。</p>
<p>你的免费计算器在这里!</p>
<p>　　无需做什么，我们就能把IRB作为一个简单的计算器使用：<br><br><img height=71 alt="" src="http://www.blogjava.net/images/blogjava_net/keywen1983/4.jpg" width=465 border=0><br><br></p>
<p>　　这样就能计算3+2。够简单的!那么3乘以2如何?你可以在下面继续输入3*2，也可以回到上面(3+2处)重新修改你刚刚输入的计算公式。使用键盘上的向上键，使光标到达3+2那一行，再用左键移动光标到加号上，然后使用空格键进行修改。<br></p>
<p><br><img height=71 alt="" src="http://www.blogjava.net/images/blogjava_net/keywen1983/5.jpg" width=463 border=0><br></p>
<p align=left></p>
<p>　　下面，让我们尝试计算3的平方：<br><br><br></p>
<img height=67 alt="" src="http://www.blogjava.net/images/blogjava_net/keywen1983/6.jpg" width=464 border=0><br><br>
<p>　　在Ruby语言中，**表示幂运算。那么如何计算平方根呢?<br><br></p>
<img height=69 alt="" src="http://www.blogjava.net/images/blogjava_net/keywen1983/7.jpg" width=464 border=0><br><br>
<p>　　Ok，等一下，表达式中的sqrt(9)表示什么?你一定能猜到这是计算9的平方根。而Math表示什么?不要着急，下面就让我们进一步了解像Math这样的模块。</p>
<p>　　模块——按照主题分组的代码</p>
<p>　　Math是Ruby内建的数学模块。在Ruby中，模块提供了两种角色：一种角色是将类似的方法聚集在同一个&#8220;家族&#8221;名下。因此，Math也包括sin、tan这样的方法。第二种角色是一个圆点(dot)，它标记了消息的接收者。什么是消息?在上面的例子中，sqrt(9)便是消息，它意味着调用sqrt方法取出9的平方根。</p>
<p>　　Sqrt方法调用的结果是3.0。你可能注意到它并不是3。这是因为多数情况下，数字的平方根并不是整数，所以这里返回了一个浮点数。</p>
<p>　　那么我们如何记住这些计算结果呢?——将结果赋值给变量。<br></p>
<br><img height=148 alt="" src="http://www.blogjava.net/images/blogjava_net/keywen1983/8.jpg" width=464 border=0><br><br>
<p>如何定义方法?</p>
<p>　　如何才能方便省事地随意输出字符串，而无需过多地劳烦我们的手指呢?——我们需要定义一个方法!<br><br><br></p>
<img height=110 alt="" src="http://www.blogjava.net/images/blogjava_net/keywen1983/9.jpg" width=463 border=0><br><br>
<p>　　上面的代码中第一行&#8220;def h&#8221;标志着方法定义的开始。它告诉Ruby我们正在定义一个名为h的方法。下面一行是方法体：puts "Hello World"。最后，也就是第三行&#8220;end&#8221;通知Ruby我们完成了方法定义。Ruby的回应&#8220;=&gt; nil&#8221;告诉我们它已经知道我们定义了此方法。</p>
<p>　　简短、重复地调用方法</p>
<p>　　现在，让我们尝试多次执行这个方法：<br><br></p>
<img height=147 alt="" src="http://www.blogjava.net/images/blogjava_net/keywen1983/10.jpg" width=463 border=0><br><br>
<p>　　哈，这太容易了。在Ruby中调用某个方法只需将方法名提交给Ruby。当然，这是在方法没有参数的情况下。如果你愿意也可以添加一个空白的括号，但是这没有必要。</p>
<p>　　如果我们想对某个人说hello而不是整个&#8220;世界&#8221;(world)，那该怎么做?——重定义h方法使它接收name参数。<br><br><img height=166 alt="" src="http://www.blogjava.net/images/blogjava_net/keywen1983/11.jpg" width=463 border=0><br><br></p>
<p>字符串中的奥秘</p>
<p>　　&#8220;#{name}&#8221;是什么意思?这是Ruby在某个字符串中插入其它字符的方式。在大括号之间放入的字符串(这里是指name)将被外部的字符串代替。你也可以使用字符串类内建的capitalize方法来确保某人名字的首字母大写：<br><br><br><img height=226 alt="" src="http://www.blogjava.net/images/blogjava_net/keywen1983/12.jpg" width=463 border=0><br><br></p>
<p>　　上面的代码有两个地方需要说明：</p>
<p>　　第一，我们通过无括号的方式调用方法，因为括号是可选的;</p>
<p>　　第二，这里的默认参数值为&#8220;World&#8221;。也就是说在调用方法时如果没有提供name参数，则使用默认值&#8220;World&#8221;。</p>
<p>　　进化为Greeter!</p>
<p>　　我们是否需要一个真正的问候者(greeter)，他能记住你的名字、问候你、总是尊重地向你示好?那么这就最好建立一个&#8220;Greeter&#8221;类：<br><br></p>
<p><img height=233 alt="" src="http://www.blogjava.net/images/blogjava_net/keywen1983/13.jpg" width=462 border=0><br><br></p>
<p>在上面的类代码中定义了一个称为Greeter的类和一些类方法，其中出现了一些新的&#8220;关键词&#8221;:请注意&#8220;@name&#8221;，它是类的实例变量，并对类中的所有方法(say_hi和say_bye方法)都有效。</p>
<p>　　如何让Greeter类发挥作用?现在让我们来建立一个Greeter对象并使用它!<br><br><img height=185 alt="" src="http://www.blogjava.net/images/blogjava_net/keywen1983/14.jpg" width=461 border=0><br><br><br></p>
<p>　　Greeter类的实例对象g被建立后，它便接受了name参数(值为Pat)。那么我们能直接访问name吗?<br><br></p>
<img height=107 alt="" src="http://www.blogjava.net/images/blogjava_net/keywen1983/15.jpg" width=462 border=0><br><br>
<p>　　看看上面的编译错误来看，这样直接访问name是行不通的。</p>
<p>　　窥视对象的内部</p>
<p>　　对象中的实例变量总是隐藏于其中，但也并非毫无踪迹可寻，通过审查(inspect)对象便会见到它们。当然还有其它的访问方法，但是Ruby采用了良好的面向对象的方式来保持数据的隐藏性。<br><br></p>
<img height=244 alt="" src="http://www.blogjava.net/images/blogjava_net/keywen1983/16.jpg" width=461 border=0><br><br>喔!这么多方法，可是我们只定义了两个方法呀?其它的方法又出自何处?不要担心，instance_methods方法列出了Greeter对象的所有方法，其中包括父类中定义的方法。如果我们只想对Greeter类的方法进行列表的话，那么把false作为参数调用instance_methods方法即可。false意味着我们不需要父类定义的方法。<br><br><img height=68 alt="" src="http://www.blogjava.net/images/blogjava_net/keywen1983/17.jpg" width=462 border=0><br><br>&nbsp;
<p align=left>　　哈哈，这才是我们想要的。下面让我们看看Greeter对象能回应哪些方法：<br><br><img height=144 alt="" src="http://www.blogjava.net/images/blogjava_net/keywen1983/18.jpg" width=462 border=0></p>
&nbsp;
<p align=left>　　它知道say_hi、to_s(此方法将对象转换为字符串，是任何对象都必备的默认方法，很想Java中的toString方法)，但它不知道name。</p>
<p align=left>　　随时修改类定义</p>
<p align=left>　　如何才能查看或者修改name呢?Ruby提供了访问对象变量的简单方法：<br><br></p>
<img height=105 alt="" src="http://www.blogjava.net/images/blogjava_net/keywen1983/19.jpg" width=463 border=0><br><br>
<p align=left>　　在Ruby语言中，你能够多次打开某个类并修改它。而修改所带来的变化将应用在此后建立的任何新对象中、甚至现存的此类对象中。下面让我们建立一个新对象并访问它的@name属性。<br><br></p>
<img height=382 alt="" src="http://www.blogjava.net/images/blogjava_net/keywen1983/20.jpg" width=463 border=0><br><br>&nbsp;
<p align=left>　　我们通过使用attr_accessor定义了两个方法：</p>
<p align=left>&#183;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 　　&#8220;.name&#8221;用来获取name属性值; </p>
<p align=left>&#183;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 　　&#8220;.name=&#8221;用来设置namee属性值。</p>
<p align=left>　　这很类似在Java类中访问被Public修饰的成员变量。</p>
<p>向每个人问候，MegaGreeter不会漏掉一个人</p>
<p>　　Greeter并不完美，因为它只能一次服务一个人。所以我们在这里设计一个能够一次向全世界、世界上每个人或者在名单中的人发送问候的MegaGreeter类。在这里，我们将放弃从前的IRB交互模式，转而改为编写Ruby程序文件。</p>
<p>　　退出IRB的方法：输入&#8220;quit&#8221;、&#8220;exit&#8221;或者按下Control+D的组合键。<br><br><img height=1323 alt="" src="http://www.blogjava.net/images/blogjava_net/keywen1983/21.jpg" width=522 border=0><br><br></p>
<p>保存上面的代码到名为&#8220;ri20min.rb&#8221;的文件中，并使用&#8220;ruby ri20min.rb&#8221;的命令执行它。程序输出如下：<br><br><br></p>
<p><img height=285 alt="" src="http://www.blogjava.net/images/blogjava_net/keywen1983/22.jpg" width=462 border=0><br><br><br></p>
<p>　　下面我们将深入了解一下上面的代码。</p>
<p>　　请注意上面代码中的起始行，它以#开头。在Ruby语言中，任何以#开头的行都被视为注释，并被解释程序忽略。</p>
<p>　　我们的say_hi方法已经发生了变化：<br><br></p>
<p><img height=284 alt="" src="http://www.blogjava.net/images/blogjava_net/keywen1983/23.jpg" width=464 border=0><br><br><br></p>
<p>　　它查找@names参数并按照其参数值作出决定：</p>
<p>　　如果参数值为nil，它将打印三个圆点。</p>
<p>　　那么@names.respond_to?("each")表示什么?</p>
<p>循环——也叫迭代</p>
<p>　　如果@names对象具有each方法，那么它是可以被迭代的，进而可以对其进行迭代，从而问候列表中每个人。如果@names不具备each方法，则将它自动转换为字符串，并执行默认的问候。</p>
<p><br><img height=88 alt="" src="http://www.blogjava.net/images/blogjava_net/keywen1983/24.jpg" width=460 border=0></p>
<br>
<p>　　each是一种方法，它接受一个代码块(block of code)，然后针对列表中的每个成员执行这个代码块，而在do和end之间的部分便是这个非常类似匿名函数的代码块。在管道符之间的变量是代码块的参数name，它作为代码块参数被绑定为列表成员，而代码块puts "Hello #{name}!"将使用这个参数进行输出。</p>
<p>　　大多数其它的编程语言使用循环遍历列表，下面是C语言的循环示例：</p>
<br><img height=107 alt="" src="http://www.blogjava.net/images/blogjava_net/keywen1983/25.jpg" width=461 border=0><br><br>
<p>　　上面的代码显然可以工作，但它不够&#8220;优雅&#8221;!你不得不用i这个多余的循环变量，还需要指出列表的长度，然后再解释如何遍历列表。</p>
<p>　　Ruby的迭代方式则更加优雅，所有的内部管理细节都隐藏在each方法中，你所需做的就是告诉它如何处理其中的每个成员。</p>
<p>　　块(block)，Ruby边缘的高亮点!</p>
<p>　　块(block)的真正优势在于：能够处理比列表更加复杂的对象。除了在方法中可以处理简单的内部管理细节外，你还能处理setup、teardown和所有错误，而不让用户有所察觉。<br><br></p>
<img height=230 alt="" src="http://www.blogjava.net/images/blogjava_net/keywen1983/26.jpg" width=465 border=0><br><br><br>
<p>　　say_bye方法没有使用each，而是检查@names是否具有join方法，如果具有join方法，则调用join方法。否则它将直接打印@names变量。</p>
<p>　　此方法并不关心变量的实际类型，这依赖于它所支持的那些被称为&#8220;Duck Typing&#8221;的方法：duck typing是动态类型的一种形式：变量的值自身隐含地决定了了变量的行为。这暗示了某个对象与其它实现了相同接口的对象之间是可交换的，不管对象之间是否具有继承关系。鸭子测试(duck test)是对duck typing的一种形象比喻——&#8220;如果它走路像鸭子，那么也一定像鸭子一样呷呷地叫，那么它必定是一只鸭子&#8221;。duck typing是某些编程语言的特性：如Smalltalk, Python, Ruby, ColdFusion。</p>
<p>　　Duck Typing的益处是无需对变量的类型进行严格地限制，如果某人使用一种新类型的列表类，只要它实现了与其它列表相同语义的join方法，便可以拿来使用。</p>
<p>启动脚本</p>
<p>　　文件上半部分是MegaGreeter类的代码，而后面剩下的部分则是对这些类方法的调用。而这是我们最后值得注意的一点：<br><br></p>
<img height=49 alt="" src="http://www.blogjava.net/images/blogjava_net/keywen1983/27.jpg" width=463 border=0><br><br><br>
<p>　　__FILE__是一个&#8220;具有魔力&#8221;的变量，它代表了当前文件名。$0是用于启动程序的文件名。那么代码&#8220;if __FILE__ == $<st1:chmetcnv w:st="on" TCSC="0" NumberType="1" Negative="False" HasSpace="False" SourceValue="0" UnitName="&#8221;">0&#8221;</st1:chmetcnv>便意味着检查此文件是否为将被使用的主程序文件。这样做可以使程序文件作为代码库使用，而不是可执行代码;但当此文件被用作执行文件时，也可被执行。</p>
<p>　　如何进一步学习Ruby</p>
<p>　　到此便是本入门的尾声了。当然还有许多值得浏览的：Ruby提供的各种不同的控制结构;块和yield的使用;模块作为mixins使用等。希望这次Ruby初体验能使你对Ruby更感兴趣。</p>
<p>　　注：mixin在面向对象编程语言中是一种提供某些功能给子类继承的类，但mixin并不能实例化。从某个mixin继承并不是什么特殊的形式，而它更适于收集功能。某个子类甚至可以通过继承一个或者多个mixin选择继承它的全部或者多数功能。一个mixin能延期定义和绑定方法直到运行时，而属性和实例参数也将在编译时才被定义。这不同于多数常见的方式：定义所有的属性、方法，并在编译时进行初始化。</p>
<p>　　如果这样的话，请埋头翻阅我们的文档，那里有免费、丰富的在线手册和入门资源。或者如果你喜欢在啃书本的话，可以到图书列表中选择一些你所需要的。</p>
<p>版权声明：需Matrix授权发布,如需转载请联系Matrix<br><br><br>调试过的代码：<br><br><span style="FONT-FAMILY: Comic Sans MS">irb(main):001:0&gt; "Hello World"</span></p>
<p style="FONT-FAMILY: Comic Sans MS">=&gt; "Hello World"</p>
<p style="FONT-FAMILY: Comic Sans MS">irb(main):002:0&gt; puts "hello world"</p>
<p style="FONT-FAMILY: Comic Sans MS">hello world</p>
<p style="FONT-FAMILY: Comic Sans MS">=&gt; nil</p>
<p style="FONT-FAMILY: Comic Sans MS">irb(main):003:0&gt; 3+2</p>
<p style="FONT-FAMILY: Comic Sans MS">=&gt; 5</p>
<p style="FONT-FAMILY: Comic Sans MS">irb(main):004:0&gt; def h</p>
<p style="FONT-FAMILY: Comic Sans MS">irb(main):005:1&gt;&nbsp;&nbsp; puts "hello world"</p>
<p style="FONT-FAMILY: Comic Sans MS">irb(main):006:1&gt;&nbsp;&nbsp; end</p>
<p style="FONT-FAMILY: Comic Sans MS">=&gt; nil</p>
<p style="FONT-FAMILY: Comic Sans MS">irb(main):007:0&gt; h</p>
<p style="FONT-FAMILY: Comic Sans MS">hello world</p>
<p style="FONT-FAMILY: Comic Sans MS">=&gt; nil</p>
<p style="FONT-FAMILY: Comic Sans MS">irb(main):008:0&gt; h()</p>
<p style="FONT-FAMILY: Comic Sans MS">hello world</p>
<p style="FONT-FAMILY: Comic Sans MS">=&gt; nil</p>
<p style="FONT-FAMILY: Comic Sans MS">irb(main):009:0&gt; def h(name)</p>
<p style="FONT-FAMILY: Comic Sans MS">irb(main):010:1&gt;&nbsp;&nbsp; puts "hello #{name}!"</p>
<p style="FONT-FAMILY: Comic Sans MS">irb(main):011:1&gt;&nbsp;&nbsp; end</p>
<p style="FONT-FAMILY: Comic Sans MS">=&gt; nil</p>
<p style="FONT-FAMILY: Comic Sans MS">irb(main):012:0&gt; h("keywen")</p>
<p style="FONT-FAMILY: Comic Sans MS">hello keywen!</p>
<p style="FONT-FAMILY: Comic Sans MS">=&gt; nil</p>
<p style="FONT-FAMILY: Comic Sans MS">irb(main):013:0&gt; def h(name = "keywen")</p>
<p style="FONT-FAMILY: Comic Sans MS">irb(main):014:1&gt;&nbsp;&nbsp; puts "hello #{name.capitalize}"</p>
<p style="FONT-FAMILY: Comic Sans MS">irb(main):015:1&gt;&nbsp;&nbsp; end</p>
<p style="FONT-FAMILY: Comic Sans MS">=&gt; nil</p>
<p style="FONT-FAMILY: Comic Sans MS">irb(main):016:0&gt; h"wen"</p>
<p style="FONT-FAMILY: Comic Sans MS">hello Wen</p>
<p style="FONT-FAMILY: Comic Sans MS">=&gt; nil</p>
<p style="FONT-FAMILY: Comic Sans MS">irb(main):017:0&gt; h</p>
<p style="FONT-FAMILY: Comic Sans MS">hello Keywen</p>
<p style="FONT-FAMILY: Comic Sans MS">=&gt; nil</p>
<p style="FONT-FAMILY: Comic Sans MS">irb(main):018:0&gt; class Greeter</p>
<p style="FONT-FAMILY: Comic Sans MS">irb(main):019:1&gt;&nbsp;&nbsp; def initialize (name ="keywen")</p>
<p style="FONT-FAMILY: Comic Sans MS">irb(main):020:2&gt;&nbsp;&nbsp;&nbsp;&nbsp; @name = name</p>
<p style="FONT-FAMILY: Comic Sans MS">irb(main):021:2&gt;&nbsp;&nbsp;&nbsp;&nbsp; end</p>
<p style="FONT-FAMILY: Comic Sans MS">irb(main):022:1&gt;&nbsp;&nbsp; def say_hi</p>
<p style="FONT-FAMILY: Comic Sans MS">irb(main):023:2&gt;&nbsp;&nbsp;&nbsp;&nbsp; puts "Hi #{@name}!"</p>
<p style="FONT-FAMILY: Comic Sans MS">irb(main):024:2&gt;&nbsp;&nbsp;&nbsp;&nbsp; end</p>
<p style="FONT-FAMILY: Comic Sans MS">irb(main):025:1&gt;&nbsp;&nbsp; def say_bye</p>
<p style="FONT-FAMILY: Comic Sans MS">irb(main):026:2&gt;&nbsp;&nbsp;&nbsp;&nbsp; puts "Bye #{@name},come back soon."</p>
<p style="FONT-FAMILY: Comic Sans MS">irb(main):027:2&gt;&nbsp;&nbsp;&nbsp;&nbsp; end</p>
<p style="FONT-FAMILY: Comic Sans MS">irb(main):028:1&gt;&nbsp;&nbsp; end</p>
<p style="FONT-FAMILY: Comic Sans MS">=&gt; nil</p>
<p style="FONT-FAMILY: Comic Sans MS">irb(main):029:0&gt; g = Greeter.new("Pat")</p>
<p style="FONT-FAMILY: Comic Sans MS">=&gt; #&lt;Greeter:0x7237aec @name="Pat"&gt;</p>
<p style="FONT-FAMILY: Comic Sans MS">irb(main):031:0&gt; g.say_hi</p>
<p style="FONT-FAMILY: Comic Sans MS">Hi Pat!</p>
<p style="FONT-FAMILY: Comic Sans MS">=&gt; nil</p>
<p style="FONT-FAMILY: Comic Sans MS">irb(main):032:0&gt; g.say_bye</p>
<p style="FONT-FAMILY: Comic Sans MS">Bye Pat,come back soon.</p>
<p style="FONT-FAMILY: Comic Sans MS">=&gt; nil</p>
<p style="FONT-FAMILY: Comic Sans MS">irb(main):034:0&gt; Greeter.instance_methods</p>
<p style="FONT-FAMILY: Comic Sans MS">=&gt; ["inspect", "clone", "public_methods", "display", "instance_variable_defined?", "equal?", "freeze", "methods", "respond_to?", "dup", "to_yaml_style", "instance_variables", "__id__", "eql?", "method", "pretty_print_inspect", "say_hi", "id", "send", "singleton_methods", "taint", "to_yaml_properties", "instance_variable_get", "frozen?", "instance_of?", "__send__", "to_a", "say_bye", "to_yaml", "type", "require_gem", "object_id", "instance_eval", "protected_methods", "require", "==", "h", "===", "taguri", "pretty_print_instance_variables", "instance_variable_set", "extend", "kind_of?", "pretty_print_cycle", "to_s", "gem", "taguri=", "class", "hash", "private_methods", "=~", "tainted?", "untaint", "nil?", "pretty_inspect", "is_a?", "pretty_print"]</p>
<p style="FONT-FAMILY: Comic Sans MS">irb(main):035:0&gt; Greeter.instance_methods(false)</p>
<p style="FONT-FAMILY: Comic Sans MS">=&gt; ["say_bye", "say_hi"]</p>
<p style="FONT-FAMILY: Comic Sans MS">irb(main):038:0&gt; g.respond_to?("name")</p>
<p style="FONT-FAMILY: Comic Sans MS">=&gt; false</p>
<p style="FONT-FAMILY: Comic Sans MS">irb(main):039:0&gt; g.respond_to?("say_bye")</p>
<p style="FONT-FAMILY: Comic Sans MS">=&gt; true</p>
<p style="FONT-FAMILY: Comic Sans MS">irb(main):040:0&gt; g</p>
<p style="FONT-FAMILY: Comic Sans MS">=&gt; #&lt;Greeter:0x7237aec @name="Pat"&gt;</p>
<p style="FONT-FAMILY: Comic Sans MS">irb(main):041:0&gt; class Greeter</p>
<p style="FONT-FAMILY: Comic Sans MS">irb(main):042:1&gt;&nbsp;&nbsp; attr_accessor:name</p>
<p style="FONT-FAMILY: Comic Sans MS">irb(main):043:1&gt;&nbsp;&nbsp; end</p>
<p style="FONT-FAMILY: Comic Sans MS">=&gt; nil</p>
<p style="FONT-FAMILY: Comic Sans MS">irb(main):047:0&gt; g = Greeter.new("keywen")</p>
<p style="FONT-FAMILY: Comic Sans MS">=&gt; #&lt;Greeter:0x71cef74 @name="keywen"&gt;</p>
<p style="FONT-FAMILY: Comic Sans MS">irb(main):048:0&gt; g.respond_to?("name")</p>
<p style="FONT-FAMILY: Comic Sans MS">=&gt; true</p>
<p style="FONT-FAMILY: Comic Sans MS">irb(main):049:0&gt; g.respond_to?("name=")</p>
<p style="FONT-FAMILY: Comic Sans MS">=&gt; true</p>
<p style="FONT-FAMILY: Comic Sans MS">irb(main):050:0&gt; g.say_hi</p>
<p style="FONT-FAMILY: Comic Sans MS">Hi keywen!</p>
<p style="FONT-FAMILY: Comic Sans MS">=&gt; nil</p>
<p style="FONT-FAMILY: Comic Sans MS">irb(main):051:0&gt; g.name="wen"</p>
<p style="FONT-FAMILY: Comic Sans MS">=&gt; "wen"</p>
<p style="FONT-FAMILY: Comic Sans MS">irb(main):052:0&gt; g.say_hi</p>
<p style="FONT-FAMILY: Comic Sans MS">Hi wen!</p>
<p style="FONT-FAMILY: Comic Sans MS">=&gt; nil</p>
<p><span style="FONT-FAMILY: Comic Sans MS">irb(main):053:0&gt;</span></p>
</blockquote>
<p><br><br><img height=115 alt="" src="http://www.blogjava.net/images/blogjava_net/keywen1983/mstrixiac.JPG" width=175 border=0><br><embed style="WIDTH: 200px; HEIGHT: 46px" name=MediaPlayer1 pluginspage=http://www.microsoft.com/Windows/MediaPlayer src=/Files/keywen1983/2006090831127573.mp3 width=200 height=46 type=application/x-mplayer2 autostart="1" showcontrols="1"></embed>&nbsp;</p>
<img src ="http://www.blogjava.net/keywen1983/aggbug/111620.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keywen1983/" target="_blank">keywen</a> 2007-04-18 14:16 <a href="http://www.blogjava.net/keywen1983/archive/2007/04/18/111620.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Integrating RadRails with Aptana</title><link>http://www.blogjava.net/keywen1983/archive/2007/04/18/111511.html</link><dc:creator>keywen</dc:creator><author>keywen</author><pubDate>Wed, 18 Apr 2007 02:06:00 GMT</pubDate><guid>http://www.blogjava.net/keywen1983/archive/2007/04/18/111511.html</guid><wfw:comment>http://www.blogjava.net/keywen1983/comments/111511.html</wfw:comment><comments>http://www.blogjava.net/keywen1983/archive/2007/04/18/111511.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keywen1983/comments/commentRss/111511.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keywen1983/services/trackbacks/111511.html</trackback:ping><description><![CDATA[&nbsp;
<h1><span>Integrating RadRails with Aptana</span></h1>
<h3><span>From Aptana</span></h3>
<p><span>This page describes how to integrate RadRails into your installed version of Aptana. </span></p>
<h2><a name=Introduction></a><span>Introduction</span></h2>
<p><span>Add RadRails as a plugin to Eclipse v3.2 with Aptana to create a well-integrated IDE for JavaScript and Ruby. Make sure that you have Ruby and Rails installed before installing RadRails. See <a title="Installing Ruby on Rails" href="http://www.aptana.com/docs/index.php/Installing_Ruby_on_Rails">Installing Ruby on Rails</a> for instructions. </span></p>
<h2><a name=Instructions></a><span>Instructions</span></h2>
<p><span>To add RadRails to Eclipse: </span></p>
<p align=left><span><span>1.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>From the <strong>Help</strong> menu, select <strong>Find and Install...</strong> to open the <strong>Install/Update</strong> wizard. </span></p>
<p align=left><span><span>2.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>On the <strong>Install/Update</strong> window, choose the <strong>Search for new features to install</strong> option. </span></p>
<p align=left><span><span>3.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>Add the two RadRails remote sites to Aptana. </span></p>
<p align=left><span><span>a.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>Click the <strong>New Remote Site...</strong> button to open a <strong>New Update Site</strong> pop-up window. </span></p>
<p align=left><span><span>b.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>In the <strong>New Update Site</strong> pop-up window, type "RadRails Release" in the <strong>Name</strong> field, and copy and paste the URL "<a title=http://updatesite.rubypeople.org/release href="http://updatesite.rubypeople.org/release">http://updatesite.rubypeople.org/release</a>" into the <strong>URL</strong> field. </span></p>
<p align=left><span><span>c.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>Click <strong>OK</strong>. </span></p>
<p align=left><span><span>d.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>Click the <strong>New Remote Site...</strong> button to add the second remote site for RadRails. </span></p>
<p align=left><span><span>e.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>In the <strong>New Update Site</strong> pop-up window, type "RadRails Update" in the <strong>Name</strong> field, and copy and paste the URL "<a title=http://radrails.sourceforge.net/update href="http://radrails.sourceforge.net/update">http://radrails.sourceforge.net/update</a>" into the <strong>URL</strong> field. </span></p>
<p align=left><span><span>f.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>Click <strong>OK</strong>.</span></p>
<p align=left><span><span>4.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>Choose the RadRails plugin(s) that you will be installing. </span></p>
<p align=left><span><span>a.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>On the <strong>Update sites to visit screen</strong>, check the boxes next to the two RadRails plugins. </span></p>
<p align=left><span><span>b.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>Click the <strong>Finish</strong> button. </span></p>
<p><span>Aptana displays a <strong>Search Results</strong> screen for the plugin that you selected.</span></p>
<p align=left><span><span>5.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>Install the plugin </span></p>
<p align=left><span><span>a.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>On the <strong>Search Results</strong> screen, check the boxes next to the RadRails plugins that you are installing and check the <strong>Show the latest version of a feature only</strong> box. </span></p>
<p align=left><span><span>b.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>Click the <strong>Next</strong> button to go to the <strong>Feature License</strong> screen. </span></p>
<p align=left><span><span>c.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>On the <strong>Feature License</strong> screen, choose the option for <strong>I accept the terms of the license agreement</strong>. </span></p>
<p align=left><span><span>d.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>Click the <strong>Next</strong> button to go to the <strong>Installation</strong> screen. </span></p>
<p align=left><span><span>e.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>Click the <strong>Finish</strong> button. </span></p>
<p><span>After a few seconds, a <strong>Verification</strong> pop-up window opens.</span></p>
<p align=left><span><span>f.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>On the <strong>Verification</strong> pop-up window, click the <strong>Install All</strong> button. </span></p>
<p><span>Aptana installs the plugin and prompts you to restart your workbench.</span></p>
<p align=left><span><span>6.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>On the prompt to restart your workbench prompt, click the <strong>Yes</strong> button to restart your workbench. If you click the <strong>No</strong> button, your changes will not take effect until you restart. </span></p>
<span>Aptana completes the update installation process. After installing the updates, Aptana will automatically close and re-start. You should now be able to use RadRails as a plugin for Aptana. <br><br><embed style="WIDTH: 200px; HEIGHT: 45px" name=MediaPlayer1 pluginspage=http://www.microsoft.com/Windows/MediaPlayer src=/Files/keywen1983/2006090831127573.mp3 width=200 height=45 type=application/x-mplayer2 autostart="1" showcontrols="1"></embed>&nbsp;</span>
<img src ="http://www.blogjava.net/keywen1983/aggbug/111511.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keywen1983/" target="_blank">keywen</a> 2007-04-18 10:06 <a href="http://www.blogjava.net/keywen1983/archive/2007/04/18/111511.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在eclipse中安装 Rad Rails</title><link>http://www.blogjava.net/keywen1983/archive/2007/04/18/111505.html</link><dc:creator>keywen</dc:creator><author>keywen</author><pubDate>Wed, 18 Apr 2007 01:56:00 GMT</pubDate><guid>http://www.blogjava.net/keywen1983/archive/2007/04/18/111505.html</guid><wfw:comment>http://www.blogjava.net/keywen1983/comments/111505.html</wfw:comment><comments>http://www.blogjava.net/keywen1983/archive/2007/04/18/111505.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/keywen1983/comments/commentRss/111505.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keywen1983/services/trackbacks/111505.html</trackback:ping><description><![CDATA[<p><span lang=EN-US style="FONT-SIZE: 19pt; COLOR: #333333; FONT-FAMILY: Georgia; mso-fareast-font-family: 宋体; mso-font-kerning: 18.0pt; mso-bidi-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"><strong>Install Rad Rails<br><br></strong><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: #333333; FONT-FAMILY: Verdana; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">As described in the article <a href="http://www-128.ibm.com/developerworks/java/library/os-rubyeclipse/index.html"><span style="COLOR: black"><u>Using the Ruby Development Tools plug-in for Eclipse</u></span></a> , the first thing to do is install <a href="http://rubyeclipse.sourceforge.net/"><span style="COLOR: black"><u>Ruby Development Tools</u></span></a>. It&#8217;s best to do that from directly within Eclipse. From the main menu select Help/Software Updates/Find and Install, and select the &#8220;Search for new features to install option&#8221;. Press &#8220;New Remote Site&#8221; and create a Ruby Development Tools entry at URL <a href="http://updatesite.rubypeople.org/release."><span style="COLOR: black"><u>http://updatesite.rubypeople.org/release.</u></span></a><br><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: #333333; FONT-FAMILY: Verdana; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"><v:shapetype id=_x0000_t75 coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f">&nbsp;<br><br><br><img height=457 alt="" src="http://www.blogjava.net/images/blogjava_net/keywen1983/clip_image001.jpg" width=576 border=0><br><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path><o:lock v:ext="edit" aspectratio="t"></o:lock></v:shapetype><br><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: #333333; FONT-FAMILY: Verdana; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Go ahead and install it, and check out its features. We will be using it as the foundation and necessary pre-requisite for using <a href="http://wiki.awebfactory.com.ar/awebfactory/published/RadRails"><span style="COLOR: black"><u>Rad Rails</u></span></a>, however, so we won&#8217;t go into details here on this wonderful Eclipse IDE plugin.<br><br><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: #333333; FONT-FAMILY: Verdana; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Now set up another &#8220;New Remote Site&#8221; for <a href="http://www.radrails.org/"><span style="COLOR: black"><u>RadRails</u></span></a> itself, as shown below:<br><br><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: #333333; FONT-FAMILY: Verdana; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"><v:shapetype id=_x0000_t75 coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f">&nbsp;<v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path><o:lock v:ext="edit" aspectratio="t"></o:lock></v:shapetype><br><img height=383 alt="" src="http://www.blogjava.net/images/blogjava_net/keywen1983/clip_image002.jpg" width=540 border=0><br>&nbsp; </p>
<p align=left><span>Go ahead and press &#8220;Finish&#8221; and proceed to installation.</span></p>
<p><span>Just a couple of setup config items; in Window/Preferences, go to Ruby/Installed Interpreters and specifiy path to ruby in your system.<br><br><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: #333333; FONT-FAMILY: Verdana; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"><br><img height=457 alt="" src="http://www.blogjava.net/images/blogjava_net/keywen1983/clip_image003.jpg" width=460 border=0><br>&nbsp; </p>
<p align=left><span>Idem with Ri/rdoc for documentation (and mouse-over doc) support.</span></p>
<p><span>All done!</span></span></span></span></span></span></span></span></p>
<embed style="WIDTH: 200px; HEIGHT: 45px" name=MediaPlayer1 pluginspage=http://www.microsoft.com/Windows/MediaPlayer src=/Files/keywen1983/2006090831127573.mp3 width=200 height=45 type=application/x-mplayer2 autostart="1" showcontrols="1"></embed> <br></span>
<img src ="http://www.blogjava.net/keywen1983/aggbug/111505.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keywen1983/" target="_blank">keywen</a> 2007-04-18 09:56 <a href="http://www.blogjava.net/keywen1983/archive/2007/04/18/111505.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>开始学习Ruby on Rails</title><link>http://www.blogjava.net/keywen1983/archive/2007/04/17/111214.html</link><dc:creator>keywen</dc:creator><author>keywen</author><pubDate>Tue, 17 Apr 2007 03:20:00 GMT</pubDate><guid>http://www.blogjava.net/keywen1983/archive/2007/04/17/111214.html</guid><wfw:comment>http://www.blogjava.net/keywen1983/comments/111214.html</wfw:comment><comments>http://www.blogjava.net/keywen1983/archive/2007/04/17/111214.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keywen1983/comments/commentRss/111214.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keywen1983/services/trackbacks/111214.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
&nbsp;
<p align=center><span style="FONT-FAMILY: Comic Sans MS">Ruby on Rails在windows下开发环境的搭建<br><br>&nbsp;Ruby On Rails是在Ruby语言基础上的完成的web应用开发框架。下面介绍了本地安装ruby on&nbsp;rails的过程。</span></p>
<ul dir=ltr>
    <ul>
        <li>
        <div align=left><br>安装方法1<br><br>注意：这是一种很麻烦的安装过程，建议下面的使用方法2<br><br></div>
        </li>
    </ul>
</ul>
<ol>
    <li><span style="FONT-FAMILY: Comic Sans MS">下载ruby: 可以下载windows安装版，是一个可执行的安装文件。下载地址：<br><br></span><a href="http://rubyforge.org/frs/?group_id=167"><span style="FONT-FAMILY: Comic Sans MS">http://rubyforge.org/frs/?group_id=167</span></a><span style="FONT-FAMILY: Comic Sans MS"> 该网站也有其他平台下的安装程序，然后安装即可。</span>
    <li>
    <div style="FONT-FAMILY: Comic Sans MS" align=left>下载rails 及其插件: 其对应的地址如下：<br><br>
    <p style="FONT-FAMILY: Comic Sans MS" align=left>rails &nbsp;<a href="http://rubyforge.org/frs/?group_id=307">http://rubyforge.org/frs/?group_id=307</a> </p>
    <p style="FONT-FAMILY: Comic Sans MS" align=left>activesupport &nbsp;<a href="http://rubyforge.org/frs/?group_id=570&amp;release_id=4814">http://rubyforge.org/frs/?group_id=570&amp;release_id=4814</a> </p>
    <p style="FONT-FAMILY: Comic Sans MS" align=left>rake &nbsp;<a href="http://rubyforge.org/frs/?group_id=50&amp;release_id=4770">http://rubyforge.org/frs/?group_id=50&amp;release_id=4770</a> </p>
    <p style="FONT-FAMILY: Comic Sans MS" align=left>activerecord &nbsp;<a href="http://rubyforge.org/frs/?group_id=182&amp;release_id=5776">http://rubyforge.org/frs/?group_id=182&amp;release_id=5776</a> </p>
    <p style="FONT-FAMILY: Comic Sans MS" align=left>actionmailer &nbsp;<a href="http://rubyforge.org/frs/?group_id=361&amp;release_id=5827">http://rubyforge.org/frs/?group_id=361&amp;release_id=5827</a> </p>
    <p style="FONT-FAMILY: Comic Sans MS" align=left>actionpack &nbsp;<a href="http://rubyforge.org/frs/?group_id=249&amp;release_id=4816">http://rubyforge.org/frs/?group_id=249&amp;release_id=4816</a> </p>
    <p style="FONT-FAMILY: Comic Sans MS" align=left>actionwebservice: <a href="http://rubyforge.org/frs/?group_id=567&amp;release_id=5830">http://rubyforge.org/frs/?group_id=567&amp;release_id=5830</a> </p>
    <p style="FONT-FAMILY: Comic Sans MS" align=left>下载后为了安装方便，可以放在同一目录下比如D:\RoR\</p>
    <br></div>
    <li>
    <div style="FONT-FAMILY: Comic Sans MS" align=left>安装rails : 依次安装插件，最后安装rails，插件之间有次序关系，但如果次序错误，系统会自动提示，安装语法如下：gem instll actionpack ，gen instll actionmailer 等等。<br></div>
    <li>
    <div align=left>在命令行下输入命令: ruby &#8211;v 查看ruby版本信息<br><br>Rails blog 建立rails的一个工作目录，如果都运行正确的话，说明安装成功。<br>
    <p style="FONT-FAMILY: Comic Sans MS" align=left>运行Rails Blog后，系统会在当前目录下建立一个blog目录，这一目录下还包含许多子目录和文件，包括app目录，我们程序的主要部分；config目录：存储诸如数据库联接信息等配制;doc目录：生成对程序的文档；public目录：包括程序使用的资源文件，比如images，javascript等；log目录：程序运行时的log；vender目录：存放第三方的开发程序包。</p>
    <p align=left>进入blog目录下输入命令： ruby script/server，然后打开浏览器，输入：<a href="http://localhost:3000/">http://localhost:3000</a>则看到缺省的网页画面，实际上这一命令执行了rails自带的一个叫做webrick的小型web服务器，端口为3000。开发的时候用它来测试时比较方便的。<br><br><br></p>
    </div>
    </li>
</ol>
<ul dir=ltr>
    <ul>
        <li>
        <div align=left><span style="FONT-FAMILY: Comic Sans MS">安装方法2<br><br>建议：开始之时我用的以上的方法，这种其实很是麻烦，因为在下载文件时会下载不同版本的文件，最后在安装的时候可能产生文件没有对应上的问题，如果你的网络条件好的话，建议你可以选择远程自动安装&nbsp;，在console中D:\RoR的目录下执行gem install rails --include -independencices命令，然后就等着出现下面的信息</span><br><br><span style="FONT-FAMILY: Comic Sans MS">D:\RoR&gt;gem install rails --include -independencices<br>Bulk updating Gem source index for: </span><a href="http://gems.rubyforge.or/"><span style="FONT-FAMILY: Comic Sans MS">http://gems.rubyforge.or</span></a><br><span style="FONT-FAMILY: Comic Sans MS">Successfully installed rails-<st1:chsdate w:st="on" Year="1899" Month="12" Day="30" IsLunarDate="False" IsROCDate="False">1.2.3</st1:chsdate><br>Successfully installed activesupport-1.4.2<br>Successfully installed activerecord-1.15.3<br>Successfully installed actionpack-1.13.3<br>Successfully installed actionmailer-1.3.3<br>Successfully installed actionwebservice-1.2.3<br>Installing ri documentation for activesupport-1.4.2...<br>Installing ri documentation for activerecord-1.15.3...<br>Installing ri documentation for actionpack-1.13.3...<br>Installing ri documentation for actionmailer-1.3.3...<br>Installing ri documentation for actionwebservice-1.2.3...<br>Installing RDoc documentation for activesupport-1.4.2...<br>Installing RDoc documentation for activerecord-1.15.3...<br>Installing RDoc documentation for actionpack-1.13.3...<br>Installing RDoc documentation for actionmailer-1.3.3...<br>Installing RDoc documentation for actionwebservice-1.2.3...<br><br><br><span style="FONT-FAMILY: Comic Sans MS">或者C:\的目录下执行gem install rails --remote命令<br><br>C:\&gt;gem install rails --remote<br>Need to update 20 gems from </span><a href="http://gems.rubyforge.org/"><span style="FONT-FAMILY: Comic Sans MS">http://gems.rubyforge.org</span></a><br><span style="FONT-FAMILY: Comic Sans MS">....................<br>complete<br>Install required dependency activesupport? [Yn]&nbsp; y<br>Install required dependency activerecord? [Yn]&nbsp; y<br>Install required dependency actionpack? [Yn]&nbsp; y<br>Install required dependency actionmailer? [Yn]&nbsp; y<br>Install required dependency actionwebservice? [Yn]&nbsp; y<br>Successfully installed rails-1.2.3<br>Successfully installed activesupport-1.4.2<br>Successfully installed activerecord-1.15.3<br>Successfully installed actionpack-1.13.3<br>Successfully installed actionmailer-1.3.3<br>Successfully installed actionwebservice-1.2.3<br>Installing ri documentation for activesupport-1.4.2...<br>Installing ri documentation for activerecord-1.15.3...<br>Installing ri documentation for actionpack-1.13.3...<br>Installing ri documentation for actionmailer-1.3.3...<br>Installing ri documentation for actionwebservice-1.2.3...<br>Installing RDoc documentation for activesupport-1.4.2...<br>Installing RDoc documentation for activerecord-1.15.3...<br>Installing RDoc documentation for actionpack-1.13.3...<br>Installing RDoc documentation for actionmailer-1.3.3...<br>Installing RDoc documentation for actionwebservice-1.2.3...<br><br></span><br>这样就安装ok了，而且好的是安装的都是最新版本的文件，只是网络经常出问题，看运气了。</span></div>
        </li>
    </ul>
</ul>
<p align=left>&nbsp;<embed style="WIDTH: 200px; HEIGHT: 45px" name=MediaPlayer1 pluginspage=http://www.microsoft.com/Windows/MediaPlayer src=/Files/keywen1983/2006090831127573.mp3 width=200 height=45 type=application/x-mplayer2 autostart="1" showcontrols="1"></embed> </p>
<p>&nbsp;</p>
<img src ="http://www.blogjava.net/keywen1983/aggbug/111214.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keywen1983/" target="_blank">keywen</a> 2007-04-17 11:20 <a href="http://www.blogjava.net/keywen1983/archive/2007/04/17/111214.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ruby on Rails在windows下开发环境的搭建</title><link>http://www.blogjava.net/keywen1983/archive/2007/04/17/111209.html</link><dc:creator>keywen</dc:creator><author>keywen</author><pubDate>Tue, 17 Apr 2007 03:15:00 GMT</pubDate><guid>http://www.blogjava.net/keywen1983/archive/2007/04/17/111209.html</guid><wfw:comment>http://www.blogjava.net/keywen1983/comments/111209.html</wfw:comment><comments>http://www.blogjava.net/keywen1983/archive/2007/04/17/111209.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keywen1983/comments/commentRss/111209.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keywen1983/services/trackbacks/111209.html</trackback:ping><description><![CDATA[<blockquote>
<p style="FONT-FAMILY: Comic Sans MS" align=left><br>Ruby On Rails是一个在Ruby语言基础上的完成的web应用开发框架。下面介绍了本地安装ruby on&nbsp;rails的过程。<br></p>
<p style="FONT-FAMILY: Comic Sans MS" align=left><br>安装方法1<br>注意：这是一种很麻烦的安装过程，建议下面的使用方法2<br><br>1、下载ruby:：可以下载windows安装版，是一个可执行的安装文件。下载地址：<br><a href="http://rubyforge.org/frs/?group_id=167">http://rubyforge.org/frs/?group_id=167</a> 该网站也有其他平台下的安装程序，然后安装即可</p>
<p style="FONT-FAMILY: Comic Sans MS" align=left>2、下载rails 及其插件:：其对应的地址如下：</p>
<p style="FONT-FAMILY: Comic Sans MS" align=left>rails &nbsp;<a href="http://rubyforge.org/frs/?group_id=307">http://rubyforge.org/frs/?group_id=307</a> </p>
<p style="FONT-FAMILY: Comic Sans MS" align=left>activesupport &nbsp;<a href="http://rubyforge.org/frs/?group_id=570&amp;release_id=4814">http://rubyforge.org/frs/?group_id=570&amp;release_id=4814</a> </p>
<p style="FONT-FAMILY: Comic Sans MS" align=left>rake &nbsp;<a href="http://rubyforge.org/frs/?group_id=50&amp;release_id=4770">http://rubyforge.org/frs/?group_id=50&amp;release_id=4770</a> </p>
<p style="FONT-FAMILY: Comic Sans MS" align=left>activerecord &nbsp;<a href="http://rubyforge.org/frs/?group_id=182&amp;release_id=5776">http://rubyforge.org/frs/?group_id=182&amp;release_id=5776</a> </p>
<p style="FONT-FAMILY: Comic Sans MS" align=left>actionmailer &nbsp;<a href="http://rubyforge.org/frs/?group_id=361&amp;release_id=5827">http://rubyforge.org/frs/?group_id=361&amp;release_id=5827</a> </p>
<p style="FONT-FAMILY: Comic Sans MS" align=left>actionpack &nbsp;<a href="http://rubyforge.org/frs/?group_id=249&amp;release_id=4816">http://rubyforge.org/frs/?group_id=249&amp;release_id=4816</a> </p>
<p style="FONT-FAMILY: Comic Sans MS" align=left>actionwebservice: <a href="http://rubyforge.org/frs/?group_id=567&amp;release_id=5830">http://rubyforge.org/frs/?group_id=567&amp;release_id=5830</a> </p>
<p style="FONT-FAMILY: Comic Sans MS" align=left>下载后为了安装方便，可以放在同一目录下比如D:\RoR\</p>
<p style="FONT-FAMILY: Comic Sans MS" align=left>3、安装rails :：依次安装插件，最后安装rails，插件之间有次序关系，但如果次序错误，系统会自动提示，安装语法如下：gem instll actionpack ，gen instll actionmailer 等等。<br>4、在命令行下输入命令:：ruby &#8211;v 查看ruby版本信息</p>
<p style="FONT-FAMILY: Comic Sans MS" align=left>Rails blog 建立rails的一个工作目录，如果都运行正确的话，说明安装成功。</p>
<p style="FONT-FAMILY: Comic Sans MS" align=left>运行Rails Blog后，系统会在当前目录下建立一个blog目录，这一目录下还包含许多子目录和文件，包括app目录，我们程序的主要部分；config目录：存储诸如数据库联接信息等配制;doc目录：生成对程序的文档；public目录：包括程序使用的资源文件，比如images，javascript等；log目录：程序运行时的log；vender目录：存放第三方的开发程序包。</p>
<span style="FONT-FAMILY: Comic Sans MS">&nbsp;&nbsp;&nbsp; 进入blog目录下输入命令： ruby script/server，然后打开浏览器，输入：</span><a href="http://localhost:3000/"><span style="FONT-FAMILY: Comic Sans MS">http://localhost:3000</span></a><span style="FONT-FAMILY: Comic Sans MS">则看到缺省的网页画面，实际上这一命令执行了rails自带的一个叫做webrick的小型web服务器，端口为3000。开发的时候用它来测试时比较方便的。<br><br>安装方法2<br><br>建议：开始之时我用的以上的方法，这种其实很是麻烦，因为在下载文件时会下载不同版本的文件，最后在安装的时候可能产生文件没有对应上的问题，如果你的网络条件好的话，建议你可以选择远程自动安装&nbsp;，在console中D:\RoR的目录下执行gem install rails --include -independencices命令，然后就等着出现下面的信息<br><br>D:\RoR&gt;gem install rails --include -independencices<br>Bulk updating Gem source index for: </span><a href="http://gems.rubyforge.or/"><span style="FONT-FAMILY: Comic Sans MS">http://gems.rubyforge.or</span></a><br><span style="FONT-FAMILY: Comic Sans MS">Successfully installed rails-1.2.3<br>Successfully installed activesupport-1.4.2<br>Successfully installed activerecord-1.15.3<br>Successfully installed actionpack-1.13.3<br>Successfully installed actionmailer-1.3.3<br>Successfully installed actionwebservice-1.2.3<br>Installing ri documentation for activesupport-1.4.2...<br>Installing ri documentation for activerecord-1.15.3...<br>Installing ri documentation for actionpack-1.13.3...<br>Installing ri documentation for actionmailer-1.3.3...<br>Installing ri documentation for actionwebservice-1.2.3...<br>Installing RDoc documentation for activesupport-1.4.2...<br>Installing RDoc documentation for activerecord-1.15.3...<br>Installing RDoc documentation for actionpack-1.13.3...<br>Installing RDoc documentation for actionmailer-1.3.3...<br>Installing RDoc documentation for actionwebservice-1.2.3...<br><br>或者C:\的目录下执行gem install rails --remote命令<br><br>C:\&gt;gem install rails --remote<br>Need to update 20 gems from </span><a href="http://gems.rubyforge.org/"><span style="FONT-FAMILY: Comic Sans MS">http://gems.rubyforge.org</span></a><br><span style="FONT-FAMILY: Comic Sans MS">....................<br>complete<br>Install required dependency activesupport? [Yn]&nbsp; y<br>Install required dependency activerecord? [Yn]&nbsp; y<br>Install required dependency actionpack? [Yn]&nbsp; y<br>Install required dependency actionmailer? [Yn]&nbsp; y<br>Install required dependency actionwebservice? [Yn]&nbsp; y<br>Successfully installed rails-1.2.3<br>Successfully installed activesupport-1.4.2<br>Successfully installed activerecord-1.15.3<br>Successfully installed actionpack-1.13.3<br>Successfully installed actionmailer-1.3.3<br>Successfully installed actionwebservice-1.2.3<br>Installing ri documentation for activesupport-1.4.2...<br>Installing ri documentation for activerecord-1.15.3...<br>Installing ri documentation for actionpack-1.13.3...<br>Installing ri documentation for actionmailer-1.3.3...<br>Installing ri documentation for actionwebservice-1.2.3...<br>Installing RDoc documentation for activesupport-1.4.2...<br>Installing RDoc documentation for activerecord-1.15.3...<br>Installing RDoc documentation for actionpack-1.13.3...<br>Installing RDoc documentation for actionmailer-1.3.3...<br>Installing RDoc documentation for actionwebservice-1.2.3...<br><br>这样就安装ok了，而且好的是安装的都是最新版本的文件，会有网络问题，再试一遍。<br><br><embed style="WIDTH: 200px; HEIGHT: 45px" name=MediaPlayer1 pluginspage=http://www.microsoft.com/Windows/MediaPlayer src=/Files/keywen1983/2006090831127573.mp3 width=200 height=45 type=application/x-mplayer2 autostart="1" showcontrols="1"></embed>&nbsp;<br></span></blockquote>
<img src ="http://www.blogjava.net/keywen1983/aggbug/111209.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keywen1983/" target="_blank">keywen</a> 2007-04-17 11:15 <a href="http://www.blogjava.net/keywen1983/archive/2007/04/17/111209.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>