<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-19097686</id><updated>2009-10-16T02:31:21.471+08:00</updated><title type='text'>看天空飘着云就有希望</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://yaogood.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default'/><link rel='alternate' type='text/html' href='http://yaogood.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default?start-index=26&amp;max-results=25'/><author><name>老姚</name><uri>http://www.blogger.com/profile/05031235887207798753</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>41</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-19097686.post-116062177876244815</id><published>2006-10-12T10:56:00.000+08:00</published><updated>2006-10-12T10:56:19.023+08:00</updated><title type='text'>别了，cstobacco!</title><content type='html'>今天上班提交了人生第一份辞职申请。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19097686-116062177876244815?l=yaogood.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yaogood.blogspot.com/feeds/116062177876244815/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19097686&amp;postID=116062177876244815' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/116062177876244815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/116062177876244815'/><link rel='alternate' type='text/html' href='http://yaogood.blogspot.com/2006/10/cstobacco.html' title='别了，cstobacco!'/><author><name>老姚</name><uri>http://www.blogger.com/profile/05031235887207798753</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16471258562869864241'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19097686.post-116047226182942902</id><published>2006-10-10T17:24:00.000+08:00</published><updated>2006-10-10T17:29:31.350+08:00</updated><title type='text'>试用wallop</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/97/1884/1600/%3F%3F%3F%3F%3F%3F%3F%3F%3F.0.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/97/1884/320/%3F%3F%3F%3F%3F%3F%3F%3F%3F.0.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;前天从&lt;a href="http://www.liqun.net"&gt;利群&lt;/a&gt;那里获得一个wallop的邀请，注册后简单的试了一下，不愧为ms的作品，就是大气。界面全flash制作，还有右键操作。手头上有7个邀请，需要的朋友可留下mail.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19097686-116047226182942902?l=yaogood.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yaogood.blogspot.com/feeds/116047226182942902/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19097686&amp;postID=116047226182942902' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/116047226182942902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/116047226182942902'/><link rel='alternate' type='text/html' href='http://yaogood.blogspot.com/2006/10/wallop.html' title='试用wallop'/><author><name>老姚</name><uri>http://www.blogger.com/profile/05031235887207798753</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16471258562869864241'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19097686.post-116032483573344785</id><published>2006-10-09T00:27:00.000+08:00</published><updated>2006-10-09T00:27:16.460+08:00</updated><title type='text'>唐僧的管理哲学</title><content type='html'>本人从中收获不小，所以帖上分享。。    &lt;br /&gt;     唐僧西天取得真经100年之后的一天，唐僧到如来家里做客。如来为了检验他这100年来修炼程度，席间谈话如下：&lt;br /&gt;　 　众所周知，你当年的成功，离不开你的三个得力徒弟，悟空，八戒，沙僧。那么你本人最喜欢哪个徒弟呢？唐僧给的答案多少有些出乎如来的意料，那就是：八 戒。“八戒最大的优点就是可爱。”唐僧满面笑容的说道，“有他就少不了笑声。有很多人误以为他懒惰，其实他并不懒惰。每次他打扫马厩或者收拾包裹，都是一 丝不苟，挑不出什么错儿来。但是他很小气，总是要暗地比较，自己比别人多干了多少，他吃不得一点亏。而且他又喜欢睡懒觉，所以大家才会以为他很懒。”&lt;br /&gt;　　“作为一个领导者，必须要知人善用。手下队伍要精简，属下个人能力要强。”唐僧如是说。&lt;br /&gt;　　“那么八戒的个人能力是你三个徒弟里面最差的，又有不负责任等对工作不利的缺点。你为什么不换一个精明能干的人选呢？”如来佛不解的问。“的确，八戒在队伍里面确实是个人素质最差的一个。但是，并不是由最好的人员组合起来的队伍就可以最大限度的发挥队伍的整体功效。一个强大的完整的队 伍，成员必须要有不同的特点和分工。你仔细观察一下就会发现，通风报信的往往是八戒。而打不过就跑这个特点也只有八戒有。我记得以前有个将军，他就是要用 怕死的兵放峭。别人不解。他说假如用勇猛的士兵放悄站岗，遇到敌人一定会战死，而胆怯的士兵则会跑回营中报信。这就是说明人员搭配问题的很好的一个例 子。”唐僧神采奕奕的说。&lt;br /&gt;　　“而且，八戒这个人脸皮很厚，不怕指责。一件事情作不好，大家都可以把责任推到他头上。这样就节省了内部处理问题的时间。而由于他的存在，其余的人员自然而然就会对自己有一种信心，因为他的能力一定是比八戒强的。”&lt;br /&gt;　 　“对于我个人来讲，”唐僧点起一支烟，兴致勃勃的说，“我之所以喜欢他，是因为他比较喜欢溜须拍马。一个领导者，不可避免的就会对一个总是夸赞他的 手下产生好感甚至依赖感。你看几乎每个领导者身边都会有八戒这样的人物存在。因为你不能要求领导者在一个至高无上的地位上，还要放低身份和自尊，去听取下 属的批评和接受下属的顶撞。你必须要有一个会说好话的人在身边，否则你早就被气死了。”　唐僧的话把如来逗笑了。&lt;br /&gt;　　如来问到：“你觉的悟空这个徒弟怎么样？一路上他多次救你性命！”&lt;br /&gt;　　“是呀，上次我西天取经还有一个主角人物，他就是齐天大圣孙悟空。而他由于紧箍咒问题的存在，和我的关系非常微妙，就如同台湾问题对中美关系的影响一样。“其实我们之间最终是敌人的关系。”唐僧缓缓的说。&lt;br /&gt;　　“每次危难时刻，他都能出来救我，很多次我都非常感动。但是只要一风平浪静，我就会恢复对他的敌视态度。”唐僧说，“因为我是一个忌妒心很强的人。每个希望自己建功立业的男人都有忌妒心。”&lt;br /&gt;　 　如来站起来给唐僧沏了杯茶，唐僧呷了一口继续说到：西游记不是无间道，“唐僧说，”我必须作男一号。别人不可能和我抢戏分，比风头。因为我是整个组 织的领导者，也是这次西天取经的唯一执行者，他们都是我的助手，助手的功劳怎么能大过执行者的功劳呢？可是悟空没有重视自己的身份，总是擅自行事，关键的 时候英雄当头。我知道他的人气和知名度高过我，实际上这是不正常的现象。毕竟经是我拿回来的。”&lt;br /&gt;　　　“那么你们在个性上和感情上有什么冲突呢？”如来问。&lt;br /&gt;　 　“首先我先说我们的共同点，其一，我们都是很执着的人，其二，我们都是禁欲者。在这两点上我们可以相互激励对方。但是，孙悟空其实是一个无知的农 村土猴。他的文化素质是很差的，而且脾气太倔强，因为没有受过良好家庭教育的关系。作为一个被领导者，过于倔强的性格一定会跟领导者有矛盾。一山不容二 虎，当一件事情，我们有了分歧，那么到底该听谁的呢？当然是听领导者的。因为领导者是一个指挥者，他负的是全局成败的责任。不管是他指挥失当，还是用人失 当，只要最后结果是失败的，他就要全部负责。象中国足球队的教练输球了怪队员就是一种低素质指挥者的表现，因为队员是他选拔和训练的。坦白的讲，我是一个 完美的指挥者，最后取经成功的结果说明了一切。而如果指挥者下了命令手下不听从，那么最后就是要手下负责。作为一个真正意义上的属下，即使领导者让他跳崖 他也一定要执行，只要彻底执行了他就没有责任。而悟空就不懂这个常识，所以我说他是乡村土猴子。说实话他的处事方法真的让人讨厌，很多次我都想让他卷铺盖 回家。”&lt;br /&gt;　　唐僧自信深沉的谈吐让如来欣慰的笑了笑。“你们矛盾爆发程度最激烈的一次是不是白骨精事件的那次？”如来继续问道。唐僧孩嗽了几 声，“唉。那是我最丢脸的事情了。”唐僧吐了个烟圈，“那次我是直接的输给了他。至今我都耿耿于怀。人都是有感情的，虽然是敌对情况严重了点，毕竟我们还 是同志，是战友，是上下级。相处久了一定是有感情的。那次我让他走，实在是因为他让我太生气了。看他一次次给我下跪认错，我忍不住心软。但是我告诉自己， 这是赶走他最好的时机，如果这次他走了，他永远都是个农村土猴。而我自己会独享取经归来的光环。所以我咬牙赶他走了。后来发现不能没有他。你看哪一个君王 不是等稳定之后才除掉自己眼中钉的。所以我想请他回来，等取经成功以后向如来揭发他的一些丑行斗倒他也不迟。请他回来的时候我有多丢面子，好在大家都是自 己人，家丑不可怕。”&lt;br /&gt;　　总是会在恰当的时机让他见识我的厉害。看他痛苦的样子其实我很有满足感，但是我还装出很心痛的样子。而且一一一，正是 因为有紧箍咒的存在，我认为他一定把我当仇人看。等到了取经成功以后会找我报复，遗憾的是他没有抓住那个机会，因为他的谋略比我差很远。反而是我向你推荐 他作佛。作佛了就不能好打不平了。他的性格我清楚，他忍不住火气的。所以他常常被你教训。这你也清楚的。”&lt;br /&gt;　　最后，唐僧说了这样的话：“英雄从来都是被利用的。他是个英雄，可是我却是个赢家。”&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19097686-116032483573344785?l=yaogood.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yaogood.blogspot.com/feeds/116032483573344785/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19097686&amp;postID=116032483573344785' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/116032483573344785'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/116032483573344785'/><link rel='alternate' type='text/html' href='http://yaogood.blogspot.com/2006/10/blog-post.html' title='唐僧的管理哲学'/><author><name>老姚</name><uri>http://www.blogger.com/profile/05031235887207798753</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16471258562869864241'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19097686.post-115953835591757506</id><published>2006-09-29T21:59:00.000+08:00</published><updated>2006-09-29T22:02:46.036+08:00</updated><title type='text'>重游5460</title><content type='html'>&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.iohle.com/imaqq/p1%28192%29.gif"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 282px; height: 223px;" src="http://www.iohle.com/imaqq/p1%28192%29.gif" alt="" border="0" /&gt;&lt;/a&gt; 今天在qq上遇到了大学时的室友，批评俺不上5460。细想起来确实好久没到过5460呢，心存一丝的歉意。在上面逛了一个多小时，感觉同学们变化很大，发现一部分婚纱照，给人不小惊喜。室友说快“升级”呢。小崽的名字都起好呢，在这里祝小宝宝健健康康！ &lt;/p&gt; &lt;p&gt;　　以前有人说，毕业后5年就会产生差距。现在回过头来想确实自己还要&lt;strong&gt;努力&lt;/strong&gt;。。 &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19097686-115953835591757506?l=yaogood.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yaogood.blogspot.com/feeds/115953835591757506/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19097686&amp;postID=115953835591757506' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/115953835591757506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/115953835591757506'/><link rel='alternate' type='text/html' href='http://yaogood.blogspot.com/2006/09/5460.html' title='重游5460'/><author><name>老姚</name><uri>http://www.blogger.com/profile/05031235887207798753</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16471258562869864241'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19097686.post-115943524285057019</id><published>2006-09-28T17:20:00.000+08:00</published><updated>2006-09-30T23:14:15.500+08:00</updated><title type='text'>平时收集的rails资料</title><content type='html'>&lt;span style="font-size:100%;"&gt;/*不断更新中。。。&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;一、views&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://www.blogjava.net/cap/articles/rails_view.html" xmlns="http://www.w3.org/1999/xhtml"&gt;view 笔记&lt;/a&gt;　（对view的常用组件进行了介绍)&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p style="font-weight: bold;"&gt;&lt;span style="font-size:100%;"&gt;二、models&lt;/span&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://xlp223.yculblog.com/archive.70763.html"&gt;Active Record 基础(1-14)&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;三、controllers&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://www.blogjava.net/cap/articles/rails_controller.html"&gt;active controller (比较全面）&lt;br /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://afy.itpub.net/post/9983/85944" xmlns="http://www.w3.org/1999/xhtml"&gt;How　to　Pagination&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p style="font-weight: bold;"&gt;&lt;span style="font-size:100%;"&gt;四、实例文档&lt;/span&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://blog.rorcn.com/articles/category/agile-web-development-with-rails"&gt;agile-web-development-with-rails(中文版)&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://www.bizwiki.cn/nigel/?p=38"&gt;Depot项目文档列表&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19097686-115943524285057019?l=yaogood.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yaogood.blogspot.com/feeds/115943524285057019/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19097686&amp;postID=115943524285057019' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/115943524285057019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/115943524285057019'/><link rel='alternate' type='text/html' href='http://yaogood.blogspot.com/2006/09/rails_28.html' title='平时收集的rails资料'/><author><name>老姚</name><uri>http://www.blogger.com/profile/05031235887207798753</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16471258562869864241'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19097686.post-115918804491547448</id><published>2006-09-25T20:38:00.000+08:00</published><updated>2006-09-25T20:45:08.333+08:00</updated><title type='text'>hamster 启动之layout</title><content type='html'>&lt;span style="color: rgb(51, 51, 51);"&gt;1、hamster 启动过程&lt;/span&gt;")&lt;span style="color: rgb(51, 51, 51);"&gt;首先是找到public\index.html ("&lt;/span&gt;method="post"action="/permission/login")&lt;span style="color: rgb(51, 51, 51);"&gt; 登录的request　被router 解析以后，找到相关的consroller，rails 会缺省在&lt;br /&gt;app/views/layouts 目录下面找constroller_name.rhtm(.rxml)的文件（实际上是个layouts template)&lt;br /&gt;if 存在 controller 对应的layouts 它将和action 对应的template 组合输出，如查没有ation 对应的template,layout也不会单独输出(如：采用render_text 输出就不会与layout结合)。有个特殊的layout--applicaton (所有controller的layout)&lt;br /&gt;exp:&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(51, 51, 51);"&gt;class PermissionController &lt;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 51);"&gt;  layout  'framework',:except=&gt;[:login]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 51);"&gt;#表示除login action 外都使用 framework.rhtml 做为layout.实际上在&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 51);"&gt; view\permission\login.rhtml的存在。（与public\index.html类似），action logout&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 51);"&gt;所现示的效查为 framework+logout.rhtml 的效果总给。&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 51);"&gt;def login&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 51);"&gt;    case @request.method&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 51);"&gt;      when :post&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 51);"&gt;      if @session[:account] = Account.authenticate(@params[:account_login], @params[:account_password])&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 51);"&gt;        flash['notice']  = "登录成功"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 51);"&gt;        redirect_to '/welcome'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 51);"&gt;下面是login.rhtml对 flash['notice']的引用。&lt;/span&gt;&lt;br /&gt;   &lt;div style="color: rgb(51, 51, 51);" id="message"&gt;&lt;%= @flash['notice'] %&gt;&lt;/div&gt;&lt;span style="color: rgb(51, 51, 51);"&gt;，实际上login.rhtml的&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 51);"&gt;值还是融合在layout-applicaton 里。（也就是默认的）&lt;/span&gt;&lt;br /&gt;&lt;div style="color: rgb(51, 51, 51);" id="main"&gt;&lt;%= @content_for_layout %&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 51);"&gt;instance variable:@content_for_layout，它是一个String object，包含的是controller所递交的内容，controller在request被解析以后，进行rendering（递交），递交的内容来源于 template，也有可能来源于action本身，但总的说来，controller进行的递交操作会把数据传递到 @content_for_layout，这个instance variable里面，并且以String object形式存在，实际上它就是具体的html代码（template中的html），或者经过render（action中render_text 方法的返回值）的任何字符串。&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19097686-115918804491547448?l=yaogood.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yaogood.blogspot.com/feeds/115918804491547448/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19097686&amp;postID=115918804491547448' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/115918804491547448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/115918804491547448'/><link rel='alternate' type='text/html' href='http://yaogood.blogspot.com/2006/09/hamster-layout.html' title='hamster 启动之layout'/><author><name>老姚</name><uri>http://www.blogger.com/profile/05031235887207798753</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16471258562869864241'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19097686.post-115910193751528123</id><published>2006-09-24T20:23:00.000+08:00</published><updated>2006-09-29T15:21:06.446+08:00</updated><title type='text'>Rails 笔记之Rails and Request URLs</title><content type='html'>&lt;ol&gt;&lt;li&gt;&lt;span style="FONT-WEIGHT: bold"&gt;Rails and Request URLs&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/97/1884/1600/1.jpg"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: pointer; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger/97/1884/320/1.jpg" border="0" /&gt;&lt;/a&gt;say:对应的是controller.&lt;br /&gt;hello:只是say controller 里的一个action。&lt;br /&gt;流程如下：&lt;br /&gt;&lt;div align="center"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/97/1884/1600/2.jpg"&gt;&lt;img style="WIDTH: 311px; CURSOR: pointer; HEIGHT: 201px" alt="" src="http://photos1.blogger.com/blogger/97/1884/320/2.jpg" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/97/1884/1600/2.jpg"&gt;&lt;/a&gt;&lt;br /&gt;对应的目录结构&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/97/1884/1600/3.jpg"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: pointer; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger/97/1884/320/3.jpg" border="0" /&gt;&lt;/a&gt;&lt;span style="FONT-WEIGHT: bold"&gt;2、view&lt;/span&gt;&lt;br /&gt;.rhtml 后缀告诉 Rails，需要借助ERb 系统对文件的内容进行扩展??ERb 就是用于将 Ruby 代码嵌入模板文件的。 (也就类似jsp或php之类）&lt;br /&gt;　 action 里的实例变量可以在.rhtml里直接使用。&lt;br /&gt;　链接页面可作用 link_to 把各action 进行关联起来，如：&lt;br /&gt;　&lt;%=link_to "GoodBye!",:action=&gt;"goodbay"%&gt;&lt;br /&gt;h()方法，把动态内容转换成html 里保证里的内容不会乱。&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19097686-115910193751528123?l=yaogood.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yaogood.blogspot.com/feeds/115910193751528123/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19097686&amp;postID=115910193751528123' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/115910193751528123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/115910193751528123'/><link rel='alternate' type='text/html' href='http://yaogood.blogspot.com/2006/09/rails-rails-and-request-urls.html' title='Rails 笔记之Rails and Request URLs'/><author><name>老姚</name><uri>http://www.blogger.com/profile/05031235887207798753</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16471258562869864241'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19097686.post-115884437004407909</id><published>2006-09-21T20:47:00.000+08:00</published><updated>2006-09-21T21:12:50.880+08:00</updated><title type='text'>爱上rails　的原因</title><content type='html'>&lt;span style="font-weight: bold;"&gt;rails与j2ee&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/97/1884/1600/ror-j2ee.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/97/1884/320/ror-j2ee.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;rails  的架构图&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/97/1884/1600/rails2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/97/1884/320/rails2.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;rails小抄&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/97/1884/1600/ruby_on_rails_cheat_sheet.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/97/1884/320/ruby_on_rails_cheat_sheet.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19097686-115884437004407909?l=yaogood.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yaogood.blogspot.com/feeds/115884437004407909/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19097686&amp;postID=115884437004407909' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/115884437004407909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/115884437004407909'/><link rel='alternate' type='text/html' href='http://yaogood.blogspot.com/2006/09/rails.html' title='爱上rails　的原因'/><author><name>老姚</name><uri>http://www.blogger.com/profile/05031235887207798753</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16471258562869864241'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19097686.post-115876839616160737</id><published>2006-09-21T00:06:00.000+08:00</published><updated>2006-09-21T00:54:28.233+08:00</updated><title type='text'>Symbol 的解读</title><content type='html'>之前对 Symbol 一直不是很理解，ruby手册上也讲的一不多，今天在&lt;br /&gt;&lt;a style="color: rgb(0, 153, 0);" href="http://anw.stikipad.com/ocean/show/Symbol"&gt;stikipad&lt;/a&gt;看到比较详细的说明，下面是根据它的做的总结：&lt;br /&gt;1、产生Symbol的原因&lt;br /&gt;　　全归因于“一切皆对象",如在参数 keyword,enumerated values它可能需要的只是字符串而已，跟本不需要它具有string类的功能。从而也能节省大量的内存.&lt;br /&gt;     &lt;a name="Symbol.2eall_symbols" id="Symbol.2eall_symbols"&gt;&lt;code&gt;puts Symbol.all_symbols #返回系统中定义的Symbol&lt;br /&gt;2、Symbol 意义&lt;br /&gt;　　一个不可以改变字符串，而非字符串对象（也不具有String 的相关方法)&lt;br /&gt;  exp:&lt;br /&gt;      (:action).length&lt;br /&gt; 　　　提示：NoMethodError:undefined   method'length'for:action:Symbol&lt;br /&gt;  可用to_s把Symbol 转换成String 对象&lt;br /&gt;      puts :action.to_s.length  #=&gt;6&lt;br /&gt;3、Symbol的用途&lt;br /&gt;　　只需要个字符串，且没有改变值的需求，且用不到String的相关方法，则可以用Symbol取代 String object.如：&lt;br /&gt;　　参数的keyword&lt;br /&gt;  &lt;/code&gt;enumerated values&lt;br /&gt;     map/hash table 的key&lt;br /&gt;请理解下面的代码&lt;br /&gt;&lt;/a&gt;&lt;pre style="border: 1px solid rgb(204, 204, 204); padding: 2px; background: rgb(238, 238, 238) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;code&gt;//in C&lt;br /&gt;enum Color { Red, Blue, Green };&lt;br /&gt;&lt;br /&gt;Color fgclr =  Color.Red;&lt;br /&gt;&lt;br /&gt;//in Ruby&lt;br /&gt;fgclr = :red&lt;br /&gt;puts fgclr&lt;br /&gt;puts fgclr.to_s&lt;br /&gt;&lt;br /&gt;bgclr1 = "blue".to_sym&lt;br /&gt;bgclr2 = :blue&lt;br /&gt;puts bgclr1 == bgclr2&lt;/code&gt;&lt;/pre&gt;&lt;a name="Symbol.2eall_symbols" id="Symbol.2eall_symbols"&gt;&lt;br /&gt;&lt;code&gt;  &lt;span style="color: rgb(204, 0, 0);"&gt;好像在新版中情况又不一样呢，见&lt;/span&gt;&lt;/code&gt;&lt;/a&gt;&lt;a href="http://redhanded.hobix.com/inspect/SymbolIs_aString.html" name="Symbol.2eall_symbols" id="Symbol.2eall_symbols"&gt;&lt;code&gt;http://redhanded.hobix.com&lt;/code&gt;&lt;/a&gt;&lt;a name="Symbol.2eall_symbols" id="Symbol.2eall_symbols"&gt;&lt;code&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19097686-115876839616160737?l=yaogood.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yaogood.blogspot.com/feeds/115876839616160737/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19097686&amp;postID=115876839616160737' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/115876839616160737'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/115876839616160737'/><link rel='alternate' type='text/html' href='http://yaogood.blogspot.com/2006/09/symbol.html' title='Symbol 的解读'/><author><name>老姚</name><uri>http://www.blogger.com/profile/05031235887207798753</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16471258562869864241'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19097686.post-115876638234376319</id><published>2006-09-20T23:33:00.000+08:00</published><updated>2006-09-20T23:33:04.790+08:00</updated><title type='text'>require load and include 的区别</title><content type='html'>　require 、load的功能相同，都是用来载入新的程序库区别在于：&lt;br /&gt;　1、require 可以省略".rb",且只是在第一次时载入后。后继的忽略。&lt;br /&gt;　2、load 要求全名，且每一次都重新载入（理解为实时更新吧）。&lt;br /&gt;&lt;br /&gt;　ruby 把载入的信息存在$:系统全局全变上，可用ruby -I来加载。  是不是想起了 java class path&lt;br /&gt;  &lt;br /&gt;　谈到include就不得不说起模块，模块是方法与常量的集合，主要是扩展ruby的程序，（也就是为了实现有限制的多重继承吧，Matz称它为"带实现共享的单继承"）另外使用模块是对类的mixin(混合插入)特征，也做到了名字空间的管理，减少书写的长度&lt;br /&gt;　例：&lt;br /&gt;　　puts  Math::PI&lt;br /&gt; 或&lt;br /&gt;　　include Math&lt;br /&gt;    puts PI&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19097686-115876638234376319?l=yaogood.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yaogood.blogspot.com/feeds/115876638234376319/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19097686&amp;postID=115876638234376319' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/115876638234376319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/115876638234376319'/><link rel='alternate' type='text/html' href='http://yaogood.blogspot.com/2006/09/require-load-and-include.html' title='require load and include 的区别'/><author><name>老姚</name><uri>http://www.blogger.com/profile/05031235887207798753</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16471258562869864241'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19097686.post-115865500868900293</id><published>2006-09-19T16:35:00.001+08:00</published><updated>2006-09-19T16:36:49.056+08:00</updated><title type='text'>ruby 笔记之初级教程</title><content type='html'>&lt;div&gt;&lt;span &gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;一、&lt;/strong&gt;&lt;span style="color:#000000;"&gt;&lt;strong&gt;单态方法　&lt;br /&gt;　　&lt;/strong&gt;对象a、b同属于一个类，但是对象表可以重载类的一些方法，因而他们有不同的行为。即一个仅属于某个对象的方法叫单态方法。&lt;br /&gt;　　:)本人也没太明的&lt;span style="font-size:85%;"&gt;单态方法的意义。&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt; &lt;/div&gt; &lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;二、模块&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt; &lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;模块不可以有实体，&lt;/span&gt;&lt;span style="font-size:85%;"&gt;模块不可以有子类，模块由module..end定义&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;将相近的方法和实体放在一个相对集中的域里，如Math&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Courier New;font-size:85%;color:#ffffff;"&gt;&lt;span style="color:#006600;"&gt;Math.sqrt(2)&lt;br /&gt;Math::PI　　＃::告诉ruby到那里去找PI&lt;br /&gt;如果想省掉::,直接调用常数&lt;br /&gt;include   Math   #感觉有点C&lt;br /&gt;sqrt(2)&lt;br /&gt;PI  &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#000000;"&gt;&lt;span &gt;&lt;em&gt;糅和&lt;/em&gt;(mixin)，获得多重继承的基本功能却可通过简单的树结构表述类关系。&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt; &lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;三、过程方法&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size:85%;"&gt; &lt;ol&gt;&lt;li&gt;一个对象可以等于一段代码&lt;br /&gt;&lt;span style="color:#009900;"&gt;quux=proc{&lt;br /&gt;      print  "test\n"&lt;br /&gt;}&lt;br /&gt;quux.call =&gt;"test"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;可以当做参数调用。&lt;br /&gt;&lt;span style="color:#33cc00;"&gt;def  run (p)&lt;br /&gt;print "About  to call a  procedure..\n"&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;p.call&lt;/span&gt;&lt;br /&gt;end&lt;br /&gt;run &lt;/span&gt;&lt;span style="color:#ff0000;"&gt;quux&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="color:#ff0000;"&gt; &lt;/span&gt;&lt;p&gt;&lt;span style="color:#ff0000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt; &lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19097686-115865500868900293?l=yaogood.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yaogood.blogspot.com/feeds/115865500868900293/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19097686&amp;postID=115865500868900293' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/115865500868900293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/115865500868900293'/><link rel='alternate' type='text/html' href='http://yaogood.blogspot.com/2006/09/ruby_115865500868900293.html' title='ruby 笔记之初级教程'/><author><name>老姚</name><uri>http://www.blogger.com/profile/05031235887207798753</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16471258562869864241'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19097686.post-115863719387053302</id><published>2006-09-19T11:39:00.000+08:00</published><updated>2006-09-19T11:52:07.716+08:00</updated><title type='text'>ruby笔记之标准类型</title><content type='html'>&lt;div&gt;&lt;strong&gt;一、数字&lt;/strong&gt;&lt;br /&gt; &lt;/div&gt; &lt;ol&gt; &lt;li&gt; Ruby支持整数和浮点数，整数可以是任意长度&lt;/li&gt; &lt;li&gt;一定范围内的整数以二进制存放，它们属于fixnum类型，当超出这个范围时则自动转换为bignum类型&lt;/li&gt; &lt;li&gt;表达方式：符号＋一串字符，&lt;span style="color: rgb(0, 153, 0);"&gt;数字串中的下划线会被忽略，&lt;/span&gt;（前缀包括：0表示八进制, 0x表示十六进制, 0b表示二进制）123_456_789_123_345_789   # Bignum&lt;br /&gt;0xaabb                    # 十六进制&lt;/li&gt; &lt;li&gt; 也可以通过在前面加上问号来得到ASCII码字符对应的整数值和转义序列的值&lt;br /&gt;?a                        # 普通字符&lt;br /&gt;?\n                       # 换行符 (0x0a)&lt;br /&gt;?\C-a                     # CTRL+a (0x01)&lt;br /&gt;?\M-a                     # ALT+a&lt;br /&gt;?\M-\C-a                  # CTRL+ALT+a&lt;br /&gt;?\C-?                     # 删除键&lt;/li&gt; &lt;li&gt;一个带小数点的数字字面值被转换成Float对象&lt;/li&gt; &lt;li&gt;所有的数字都是对象,不存在相应的函数而是方法&lt;br /&gt;exp:&lt;br /&gt;数字的绝对值是aNumber.abs而不是abs(aNumber)&lt;/li&gt; &lt;li&gt;整数有用的迭代器&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;3.times        { print "X " }  =&amp;gt; X X X &lt;/span&gt; &lt;span style="color: rgb(0, 102, 0);"&gt;1.upto(5)      { |i| print i, " " }  =&amp;gt;1 2 3 4 5 &lt;/span&gt; &lt;span style="color: rgb(0, 102, 0);"&gt;99.downto(95)  { |i| print i, " " }=&amp;gt;99 98 97 96 95&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0);"&gt;50.step(80, 5) { |i| print i, " " }=&amp;gt;50 55 60 65 70 75 80 &lt;/span&gt;&lt;/li&gt;&lt;/ol&gt; &lt;div style="text-align: left;"&gt;&lt;span style="font-weight: bold;"&gt;二、字符串&lt;/span&gt;&lt;br /&gt; &lt;/div&gt; &lt;ol&gt; &lt;li&gt;Ruby的字符串是8位字节的简单序列，字符串是String类的对象&lt;/li&gt; &lt;li&gt;注意转换机制(&lt;span style="color:#cc0000;"&gt;注意单引号与双引号的区别&lt;/span&gt;），如：&lt;br /&gt;单引号中两个相连的反斜线被替换成一个反斜线，，一个反斜线后跟一个单引号被替换成一个单引号&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;'escape using "\\"'      &amp;gt;&amp;gt;      转义为"\"  &lt;/span&gt;  &lt;span style="color: rgb(0, 102, 0);"&gt;'That\'s right'      &amp;gt;&amp;gt;      That's right&lt;br /&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;双引号支持多义的转义&lt;br /&gt;"\n"&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;#{expr}序列来替代任何的Ruby表达式的值&lt;span style="font-style: italic;"&gt; ,&lt;span style="color: rgb(255, 102, 0);"&gt;(全局变量、类变量或者实例变量，那么可以省略大括号)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;     "Seconds/day: #{24*60*60}"      &amp;gt;&amp;gt;      Seconds/day: 86400  &lt;/span&gt; &lt;span style="color: rgb(0, 102, 0);"&gt;     "#{'Ho! '*3}Merry Christmas"      &amp;gt;&amp;gt;      Ho! Ho! Ho! Merry Christmas   &lt;/span&gt; &lt;span style="color: rgb(0, 102, 0);"&gt;     "This is line #$."      &amp;gt;&amp;gt;      This is line 3  &lt;/span&gt;&lt;/li&gt; &lt;li&gt;here document来创建一个字符串,end_of_string 为结束符号&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;aString = &amp;lt;&amp;lt;&lt;span style="color: rgb(255, 0, 0);"&gt;END_OF_STRING&lt;/span&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0);"&gt;     The body of the string&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0);"&gt;    is the input lines up to&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0);"&gt;    one ending with the same &lt;/span&gt; &lt;span style="color: rgb(0, 102, 0);"&gt;    text that followed the '&amp;lt;&amp;lt;'&lt;/span&gt; &lt;span style="color: rgb(255, 102, 0);"&gt;END_OF_STRING&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="color: rgb(255, 102, 0);"&gt; &lt;span style="color:#000000;"&gt;%q和%Q分别把字符串分隔成单引号和双引号字符串(即%q与%Q后面的符号具有',"的功能）&lt;/span&gt;&lt;br /&gt;%q/general single-quoted string/      &amp;gt;&amp;gt;      general single-quoted string  &lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="color: rgb(255, 102, 0);"&gt;&lt;span style="color:#000000;"&gt;String 常用功能&lt;br /&gt;String#split：把行分解成字段&lt;br /&gt;String#chomp:去掉换行符&lt;br /&gt;String#squeeze：剪除被重复输入的字符&lt;br /&gt;String#scan:以指定想让块匹配的模式&lt;br /&gt;exp:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 102, 0);"&gt; &lt;span style="color:#000000;"&gt;/jazz/j00132.mp3  | 3:45 | Fats     Waller     | Ain't Misbehavin'&lt;br /&gt;/jazz/j00319.mp3  | 2:58 | Louis    Armstrong  | Wonderful World&lt;br /&gt;#文件格式如上，要进行分解&lt;br /&gt;&lt;/span&gt;songs = SongList.new&lt;br /&gt;songFile.each do |line|&lt;br /&gt;  file, length, name, title = line.chomp.split(/\s*\|\s*/)＃先chomp,后再分解，/\s*表示任字符&lt;br /&gt;  name.squeeze!(" ")＃替换空格&lt;br /&gt;  mins, secs = length.scan(/\d+/)＃这里用scan匹配模式&lt;br /&gt;  songs.append Song.new(title, name, mins.to_i*60+secs.to_i)&lt;br /&gt;end&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;span style="color: rgb(255, 102, 0);"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/ol&gt; &lt;div&gt;&lt;strong&gt;三、&lt;span style="color:#000000;"&gt;区间&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt; &lt;ol&gt; &lt;li&gt;&lt;span style="color:#000000;"&gt;区间存在于任何地方，如：1到12月。ruby用区间实现了3个不同的特性：序列，条件，间隔。&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#000000;"&gt;".."：两个点号创建一个闭区间，"..."：而三个点号创建一个右开区间(即右边界不取值）&lt;br /&gt;exp:0..anArray.length-1 等同于 0...anArray.length &lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#000000;"&gt;to_a 把区间转换成列表&lt;br /&gt;exp: ('bar'..'bat').to_a      &amp;gt;&amp;gt;      ["bar", "bas", "bat"]&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#006600;"&gt;&lt;span style="color:#000000;"&gt;区间的共它的用法&lt;/span&gt;&lt;br /&gt;digits = 0..9 &lt;br /&gt;digits.include?(5)      &amp;gt;&amp;gt;      true &lt;br /&gt;digits.min      &amp;gt;&amp;gt;      0 &lt;br /&gt;digits.max      &amp;gt;&amp;gt;      9 &lt;br /&gt;digits.reject  {|i| i &amp;lt; 5 }      &amp;gt;&amp;gt;      [5, 6, 7, 8, 9] &lt;br /&gt;digits.each do |digit| &lt;br /&gt;  dial(digit) &lt;br /&gt;end  &lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#000000;"&gt;ruby能把基于自己定义的对象的区间，要求：这个对象必须能够响应succ方法来返回序列中的下一个对象，并且这个对象必须能够使用&amp;lt;=&amp;gt;运算符来被比较，即常规的比较运算符，&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#006600;"&gt;&lt;span style="color:#000000;"&gt;间隔测试&lt;/span&gt;&lt;br /&gt;puts (1..10).include?(3.14)＝＞   ture&lt;br /&gt;  puts (1..10)    === 3.14　＝＞   ture&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt; &lt;div&gt;&lt;strong&gt;&lt;span style="color:#006600;"&gt;四、正则表达式&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt; &lt;ol&gt; &lt;li&gt;&lt;span style="color:#006600;"&gt; &lt;/span&gt;&lt;span style="color:#000000;"&gt;正则表达式是Regexp类型的对象，可以使用构造器显式地创建一个正则表达式，也可以使用字面值形式/pattern/和%r\pattern\来创建&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#006600;"&gt;&lt;span style="color:#000000;"&gt;用Regxp#match(aString)的形式或者匹配运算符=~（正匹配）和!~（负匹配）来匹配字符串了。匹配运算符在String和Regexp中都有定义，如果两个操作数都是字符串，则右边的那个要被转换成正则表达式&lt;/span&gt;&lt;br /&gt;exp:&lt;br /&gt;      a = "Fats Waller" &lt;br /&gt;       a =~ /a/      &amp;gt;&amp;gt;      1  &lt;br /&gt;        a =~ /z/      &amp;gt;&amp;gt;      nil &lt;br /&gt;        a =~ "ll"      &amp;gt;&amp;gt;      7  &lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#006600;"&gt;&lt;span style="color:#000000;"&gt;上面返回的是匹配字符的位置，其它&lt;br /&gt;$&amp;接受被模式匹配到的字符串部分&lt;br /&gt;$`接受匹配之前的字符串部分&lt;br /&gt;$'接受之后的字符串。&lt;br /&gt;exp:下面的方法后继都会用到&lt;/span&gt;&lt;br /&gt;def showRE(a,re) &lt;br /&gt;  if a =~ re &lt;br /&gt;    "#{$`}&amp;lt;&amp;lt;#{$&amp;}&amp;gt;&amp;gt;#{$'}"  ＃返回前、中、后&lt;br /&gt;  else &lt;br /&gt;    "no match" &lt;br /&gt;  end &lt;br /&gt;end &lt;br /&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#006600;"&gt;&lt;span style="color:#333333;"&gt;模式，任何一个表达式都包含一个模式，它用来把正则表达式和字任串匹配&lt;br /&gt;模式中除了., |, (, ), [, {, +, \, ^, $, *,和？以外的字任都匹配它自己&lt;br /&gt;如果要匹配这些特殊的字符就需要加上反斜线做前缀，分析上面例字&lt;br /&gt;/\s*\|\s*/,在\s与|之前都加了/做前缀。&lt;br /&gt;&lt;/span&gt;showRE('kangaroo', /angar/)      &amp;gt;&amp;gt;      k&amp;lt;&amp;lt;angar&amp;gt;&amp;gt;oo  &lt;br /&gt;showRE('!@%&amp;-_=+', /%&amp;/)      &amp;gt;&amp;gt;      &lt;a href="mailto:%21@&amp;%7E%7ESPECIAL_REMOVE%21#%7E%7Elt;&amp;%7E%7ESPECIAL_REMOVE%21#%7E%7Elt;%"&gt;!@&amp;lt;&amp;lt;%&lt;/a&gt;&amp;&amp;gt;&amp;gt;-_=+ &lt;br /&gt;showRE('yes | no', /\|/)      &amp;gt;&amp;gt;      yes &amp;lt;&amp;lt;|&amp;gt;&amp;gt; no &lt;br /&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#000000;"&gt;&lt;span style="color:#006600;"&gt;\后跟一个字母或数字表示一个特定的结构如\s表示字符等。&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#000000;"&gt;&lt;span style="color:#006600;"&gt;&lt;/span&gt;锚点　一个正则表达式总是返回找到模式的第一个匹配，如何改变？&lt;br /&gt; 模式^和$分别用来匹配行首和行尾&lt;br /&gt;序列\A匹配字符串开始的位置，\z和\Z匹配字符串结尾的位置&lt;br /&gt;\b和\B分别匹配字边界和非字边界&lt;br /&gt;&lt;span style="color:#000066;"&gt;showRE("this is\nthe time", /^the/)      &amp;gt;&amp;gt;      this is\n&amp;lt;&amp;lt;the&amp;gt;&amp;gt; time  &lt;br /&gt;showRE("this is\nthe time", /is$/)      &amp;gt;&amp;gt;      this &amp;lt;&amp;lt;is&amp;gt;&amp;gt;\nthe time &lt;br /&gt;showRE("this is\nthe time", /\Athis/)      &amp;gt;&amp;gt;      &amp;lt;&amp;lt;this&amp;gt;&amp;gt; is\nthe time&lt;/span&gt;  &lt;/span&gt; &lt;/li&gt;&lt;/ol&gt;&lt;span style="color:#000000;"&gt; &lt;div&gt;&lt;strong&gt;五、字符类&lt;/strong&gt;&lt;/div&gt; &lt;ol&gt; &lt;li&gt;这里的字符类不是面向对象的类，只表示这些这字符属于一个特殊的种类&lt;/li&gt; &lt;li&gt; 字符类是用方括号扩起来的字符的集合：[characters]匹配方括号中的所有单字符。[aeiou]匹配元音，[,.:'!?]匹配标点符号等等&lt;br /&gt;showRE('It costs $12.', /[aeiou]/)      &amp;gt;&amp;gt;      It c&amp;lt;&amp;lt;o&amp;gt;&amp;gt;sts $12.  &lt;/li&gt; &lt;li&gt; 在方括号中的序列c1-c2表示在c1-c2之间也包括c1和c2的所有字符&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;a = 'Gamma [Design Patterns-page 123]' &lt;br /&gt;showRE(a, /[]]/)      &amp;gt;&amp;gt;      Gamma [Design Patterns-page 123&amp;lt;&amp;lt;]&amp;gt;&amp;gt; &lt;br /&gt;showRE(a, /[B-F]/)      &amp;gt;&amp;gt;      Gamma [&amp;lt;&amp;lt;D&amp;gt;&amp;gt;esign Patterns-page 123]  &lt;br /&gt;showRE(a, /[-]/)      &amp;gt;&amp;gt;      Gamma [Design Patterns&amp;lt;&amp;lt;-&amp;gt;&amp;gt;page 123] &lt;br /&gt;showRE(a, /[0-9]/)      &amp;gt;&amp;gt;      Gamma [Design Patterns-page &amp;lt;&amp;lt;1&amp;gt;&amp;gt;23]&lt;/span&gt; &lt;/li&gt; &lt;li&gt;紧跟在开括号([)后的是字符^，这表示这个字符类的否定：[^a-z]匹配任何不是小写字母的字符。&lt;/li&gt; &lt;li&gt;字符类缩写&lt;br /&gt; 序列      形如 [ ... ]         含义&lt;br /&gt;&lt;span style="color:#000066;"&gt;\d        [0-9]                Digit character&lt;br /&gt;\D        [^0-9]               Nondigit&lt;br /&gt;\s        [\s\t\r\n\f]         Whitespace character 匹配一个单空白符&lt;br /&gt;\S        [^\s\t\r\n\f]        Nonwhitespace character&lt;br /&gt;\w        [A-Za-z0-9_]         Word character&lt;br /&gt;\W        [^A-Za-z0-9_]        Nonword character&lt;/span&gt;&lt;/li&gt; &lt;li&gt;重复&lt;br /&gt;r *  匹配0个或多个r的出现&lt;br /&gt;r +  匹配一个或多个r的出现&lt;br /&gt;r ?  匹配0个或1个r的出现&lt;br /&gt;r {m,n}  匹配最少m最多n个r的出现&lt;br /&gt;r {m,}  匹配最少m个r的出现&lt;br /&gt;&lt;br /&gt;重复结构有高优先权：即它们仅和模式中的直接正则表达式前驱捆绑&lt;br /&gt;/ab+/匹配一个"a"后跟一个活着多个"b"，而不是"ab"的序列&lt;br /&gt;/a*/会匹配任何字符串：0个或者多个"a"的任意字符串。　&lt;br /&gt;exp:&lt;br /&gt;&lt;span style="color:#000099;"&gt;a = "The moon is made of cheese" &lt;br /&gt;showRE(a, /\w+/)      &amp;gt;&amp;gt;      &amp;lt;&amp;lt;The&amp;gt;&amp;gt; moon is made of cheese &lt;br /&gt;showRE(a, /\s.*\s/)      &amp;gt;&amp;gt;      The&amp;lt;&amp;lt; moon is made of &amp;gt;&amp;gt;cheese  &lt;br /&gt;showRE(a, /\s.*?\s/)      &amp;gt;&amp;gt;      The&amp;lt;&amp;lt; moon &amp;gt;&amp;gt;is made of cheese &lt;br /&gt;showRE(a, /[aeiou]{2,99}/)      &amp;gt;&amp;gt;      The m&amp;lt;&amp;lt;oo&amp;gt;&amp;gt;n is made of cheese &lt;br /&gt;showRE(a, /mo?o/)      &amp;gt;&amp;gt;      The &amp;lt;&amp;lt;moo&amp;gt;&amp;gt;n is made of cheese   &lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#333333;"&gt;替换&lt;br /&gt;"|"既匹配它前面的正则表达式或者匹配后面的&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#000099;"&gt;a = "red ball blue sky" &lt;br /&gt;showRE(a, /d|e/)      &amp;gt;&amp;gt;      r&amp;lt;&amp;lt;e&amp;gt;&amp;gt;d ball blue sky &lt;br /&gt;showRE(a, /al|lu/)      &amp;gt;&amp;gt;      red b&amp;lt;&amp;lt;al&amp;gt;&amp;gt;l blue sky  &lt;br /&gt;showRE(a, /red ball|angry sky/)      &amp;gt;&amp;gt;      &amp;lt;&amp;lt;red ball&amp;gt;&amp;gt; blue sky  &lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#000099;"&gt;&lt;span style="color:#333333;"&gt;分组&lt;br /&gt;圆括号把正则表达式分组，组中的内容被当作一个单独的正则表达式&lt;/span&gt;&lt;br /&gt; showRE('banana', /(an)+/)      &amp;gt;&amp;gt;      b&amp;lt;&amp;lt;anan&amp;gt;&amp;gt;a &lt;br /&gt;# 匹配重复的字母 &lt;br /&gt;showRE('He said "Hello"', /(\w)\1/)      &amp;gt;&amp;gt;      He said "He&amp;lt;&amp;lt;ll&amp;gt;&amp;gt;o"  &lt;br /&gt;# 匹配重复的子字符串&lt;br /&gt;showRE('Mississippi', /(\w+)\1/)      &amp;gt;&amp;gt;      M&amp;lt;&amp;lt;ississ&amp;gt;&amp;gt;ippi  &lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#000099;"&gt;&lt;span style="color:#333333;"&gt;基于模式的替换&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;你是否想过，大小写替换。&lt;br /&gt;方法String#sub和String#gsub都在字符串中搜索匹配第一个参数的部分，然后用第二个参数来替换它们。String#sub只替换一次，而String#gsub替换所有找到的匹配。都返回一个包含了替换的新的字符串的拷贝。进化版本是String#sub!和 String#gsub!&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#000099;"&gt;a = "the quick brown fox" &lt;br /&gt;a.sub(/[aeiou]/,  '*')      &amp;gt;&amp;gt;      "th* quick brown fox" &lt;br /&gt;a.gsub(/[aeiou]/, '*')      &amp;gt;&amp;gt;      "th* q**ck br*wn f*x"  &lt;br /&gt;a.sub(/\s\S+/,  '')      &amp;gt;&amp;gt;      "the brown fox" &lt;br /&gt;a.gsub(/\s\S+/, '')      &amp;gt;&amp;gt;      "the"&lt;br /&gt;&lt;span style="color:#333333;"&gt;第二个参数可以是代码块&lt;br /&gt;&lt;/span&gt;a = "the quick brown fox" &lt;br /&gt;a.sub (/^./) { $&amp;.upcase }      &amp;gt;&amp;gt;      "The quick brown fox" &lt;br /&gt;a.gsub(/[aeiou]/) { $&amp;.upcase }      &amp;gt;&amp;gt;      "thE qUIck brOwn fOx"  &lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#000099;"&gt;&lt;span style="color:#000099;"&gt;&lt;span style="color:#000000;"&gt;反斜线序列用在替换中&lt;br /&gt;&lt;/span&gt; \&amp;   后面的匹配&lt;br /&gt;\+   后面的匹配组&lt;br /&gt;\`   匹配前面的字符串&lt;br /&gt;\'   匹配后面的字符串&lt;br /&gt;\\   反斜线的字面值&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#000099;"&gt;&lt;span style="color:#000000;"&gt;面向对象的正则表达式&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#333333;"&gt;正则表达式的字面值创建Regexp类&lt;/span&gt;&lt;br /&gt;re = /cat/ &lt;br /&gt;re.type      &amp;gt;&amp;gt;      Regexp&lt;br /&gt; &lt;/span&gt;&lt;span style="color:#000000;"&gt;方法Regexp#match从字符串中匹配一个正则表达式，如果不成功，方法返回nil，如果成功，返回MatchData类的一个实例&lt;br /&gt;exp:&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#000099;"&gt;e = /(\d+):(\d+)/     # match a time hh:mm &lt;br /&gt;md = re.match("Time: 12:34am") &lt;br /&gt;md.type      &amp;gt;&amp;gt;      MatchData &lt;br /&gt;md[0]         # == $&amp;      &amp;gt;&amp;gt;      "12:34"  &lt;br /&gt;md[1]         # == $1      &amp;gt;&amp;gt;      "12" &lt;br /&gt;md[2]         # == $2      &amp;gt;&amp;gt;      "34" &lt;br /&gt;md.pre_match  # == $`      &amp;gt;&amp;gt;      "Time: " &lt;br /&gt;md.post_match # == $'      &amp;gt;&amp;gt;      "am"  &lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="color:#000099;"&gt; &lt;p&gt;原电子文档：&lt;a href="http://www.moer.net/ruby/doc/ReadQuestion.asp?QuestionID=123"&gt;http://www.moer.net&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19097686-115863719387053302?l=yaogood.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yaogood.blogspot.com/feeds/115863719387053302/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19097686&amp;postID=115863719387053302' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/115863719387053302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/115863719387053302'/><link rel='alternate' type='text/html' href='http://yaogood.blogspot.com/2006/09/ruby_19.html' title='ruby笔记之标准类型'/><author><name>老姚</name><uri>http://www.blogger.com/profile/05031235887207798753</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16471258562869864241'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19097686.post-115856330942439211</id><published>2006-09-18T13:53:00.000+08:00</published><updated>2006-09-18T21:25:18.866+08:00</updated><title type='text'>ruby笔记之容器，代码块，迭代器</title><content type='html'>&lt;span style="font-weight: bold;"&gt;一、容器&lt;/span&gt;&lt;br /&gt;　　1、回忆一下array 与hash 的区别&lt;br /&gt;     把操作符右边的值赋给该位置的元素。中间所产生的空隙用nil来填补。&lt;br /&gt;　　2、array 的用法（好像这都是ruby所特有的，不知是否有眼前一亮的感觉）&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;a = [ 1, 3, 5, 7, 9 ]&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;a[1, 3]          &gt;&gt;      [3, 5, 7]  &lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;br /&gt;a[1..3]         &gt;&gt;      [3, 5, 7]  　＃这间的对象&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;br /&gt;a[1...3]        &gt;&gt;      [3, 5]　　＃3个点，不包括结束点&lt;/span&gt;　&lt;/span&gt;&lt;br /&gt;　　[]=操作符&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;a = [ 1, 3, 5, 7, 9 ]           &gt;&gt;      [1, 3, 5, 7, 9] &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;br /&gt;a[1] = 'bat'                    &gt;&gt;      [1, "bat", 5, 7, 9] &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;br /&gt;a[-3] = 'cat'                   &gt;&gt;      [1, "bat", "cat", 7, 9]&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;a[3] = [ 9, 8 ]                 &gt;&gt;      [1, "bat", "cat", [9, 8], 9] &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;br /&gt;a[6] = 99                       &gt;&gt;      [1, "bat", "cat", [9, 8], 9, nil, 99]&lt;br /&gt;&lt;/span&gt;　　把操作符右边的值赋给该位置的元素。中间所产生的空隙用nil来填补。&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;　　　　另外：&lt;br /&gt;                               &lt;/span&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;            a = [ 1, 3, 5, 7, 9 ]         &gt;&gt;      [1, 3, 5, 7, 9] &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;            a[2, 2] = 'cat'               &gt;&gt;      [1, 3, "cat", 9] &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;            a[2, 0] = 'dog'               &gt;&gt;      [1, 3, "dog", "cat", 9] &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;            a[1, 1] = [ 9, 8, 7 ]         &gt;&gt;      [1, 9, 8, 7, "dog", "cat", 9] &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;            a[0..3] = []                  &gt;&gt;      ["dog", "cat", 9] &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;            a[5] = 99                     &gt;&gt;      ["dog", "cat", 9, nil, nil, 99] &lt;/span&gt;  &lt;br /&gt;      []=的索引有两个数（开始和长度）或者是一个区间（&lt;span style="color: rgb(255, 0, 0);"&gt;如何区分是长度还是区间&lt;/span&gt;？），那么在原始数组中的对应元素就会被操作符右边的值代替；如果索引的长度为0，那么右边的值就插入到开 始位置前面，不删除元素；如果右边也是一个数组，它的元素代替原始数组的元素；如果索引所选择的元素数目和右边的不一样，那么就自动调整数组的大小来适 应。&lt;br /&gt;二　迭代器&lt;br /&gt;　　迭代器和代码块是Ruby最有趣的特性中的两个&lt;br /&gt;　　&lt;span style="font-weight: bold;"&gt;find&lt;/span&gt;&lt;br /&gt;   代码块：&lt;br /&gt;　&lt;span style="color: rgb(0, 102, 0);"&gt;def threeTimes&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;&lt;br /&gt;　　yield　＃等同于 puts "Hello"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;　　yield&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;　　yield&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;　end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;      threeTimes &lt;span style="color: rgb(255, 0, 0);"&gt;{ puts "Hello" }&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-style: italic; color: rgb(51, 102, 102);"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(51, 102, 102);"&gt;　　这里 的代码块是puts "Hello"这条语句，而方法是threeTimes，当语句执行到threeTimes { puts "Hello"}这行 时，puts "Hello"不是马上被执行，而是由Ruby先保存puts "Hello"这条语句和threeTimes的关系，然后进入到 threeTimes中，遇到第一条yield语句的时候调用并执行puts "Hello"语句，执行完毕后返回到第一条yield语句的后面也就是第 二条yield语句，直到三条yield语句都被执行了，才返回到threeTimes{puts "Hello"}这条语句后）&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;　　&lt;span style="color: rgb(0, 0, 0);"&gt;1、代码块出现在方法调用的代码附近，与方法的最后一个参数处在同一行(见上）&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;　　2、代码块中的代码并不被执行，而是ruby save 代码块出现的上下文关系&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;（局部变量、当前　　　　对象等等），然后进入到方法中。&lt;br /&gt;　　3、方法中通过yield语句来调用，感觉代码块就是一个方法一样，能具有特定的功能。&lt;br /&gt;　　4、最络的功能是代码块能传递参数，还可以取的返回值　&lt;br /&gt;   exp:&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;    def fibUpTo(max)&lt;/span&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;&lt;br /&gt;         i1, i2 = 1, 1        # 并行赋值&lt;/span&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;&lt;br /&gt;          while i1 &lt;= max&lt;/span&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;&lt;br /&gt;           yield &lt;span style="color: rgb(255, 0, 0);"&gt;i1&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;&lt;br /&gt;           i1, i2 = i2, i1+i2&lt;/span&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;&lt;br /&gt;         end&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;    end&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 204, 0);"&gt; fibUpTo(1000) { |&lt;span style="color: rgb(204, 0, 0);"&gt;f&lt;/span&gt;| print f, " " }&lt;br /&gt;      5&lt;/span&gt;、如果代码块只有一个参数那么yield传递来的多个参数会转换成一个数组&lt;br /&gt;      6、再回过头来想想&lt;br /&gt;　　　&lt;span style="color: rgb(0, 102, 0);"&gt;　result=@song.find{|aSong|key==aSong.name}&lt;br /&gt;附上find 的实现是不是好懂了点&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;class Array  &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;  def find  &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;    for i in 0...size  &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;      value = self[i]  &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;      return value if yield(value)  &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;    end  &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;    return nil  &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;  end  &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;end&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;　　　&lt;/span&gt;&lt;br /&gt;　　&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;each&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;　&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(51, 102, 102);"&gt;&lt;/span&gt;&lt;br /&gt;      它所做的就是连续返回集合中的元素&lt;br /&gt;　　[ 1, 3, 5 ].each { |i| puts i }　　&lt;br /&gt;     &lt;span style="font-weight: bold;"&gt; collect&lt;/span&gt;&lt;br /&gt;    它从集合中取得每一个元素然后传递给代码块。代码块返回的结果用来生成一个新的数组&lt;br /&gt;    ["H", "A", "L"].collect { |x| x.succ }      &gt;&gt;      ["I", "B", "M"]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19097686-115856330942439211?l=yaogood.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yaogood.blogspot.com/feeds/115856330942439211/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19097686&amp;postID=115856330942439211' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/115856330942439211'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/115856330942439211'/><link rel='alternate' type='text/html' href='http://yaogood.blogspot.com/2006/09/ruby_115856330942439211.html' title='ruby笔记之容器，代码块，迭代器'/><author><name>老姚</name><uri>http://www.blogger.com/profile/05031235887207798753</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16471258562869864241'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19097686.post-115855749142391495</id><published>2006-09-18T13:26:00.000+08:00</published><updated>2006-09-18T21:30:18.613+08:00</updated><title type='text'>ruby笔记之类、对象、变量</title><content type='html'>&lt;span style="font-weight: bold;"&gt;1、class initialize 方法&lt;/span&gt;，在创建实例时new方法中的所有参数传递过来。&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2、命名规则&lt;/span&gt;&lt;br /&gt;　 类：首字母大小 exp: class Song&lt;br /&gt;方法：全小写， exp:def initialize(name,artist,duration)&lt;br /&gt;类变量：＠＠开头&lt;br /&gt;类方法：方法名前加上类名和一个点号(".")&lt;br /&gt;常量：大写字母开头&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3、object class 的方法&lt;/span&gt;（约35个）&lt;br /&gt;　 a1Song.inspect # 返回对象的id和其所有实例变量&lt;br /&gt;  a1Song.to_s #转换为字符,返回对象id,当然可以在类中重载to_s&lt;br /&gt;　　　　　　　　&lt;span style="color: rgb(0, 153, 0);"&gt;def to_s&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;　　　　　　　　"Song:#{@name}--#{@artist}(#{@duration}) "&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;　　　　　　　  end&lt;/span&gt;&lt;br /&gt;　 a1Song.to_i&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4、继承和消息&lt;/span&gt;&lt;br /&gt;　 &lt;song&gt;&lt;span style="font-weight: bold;"&gt;      继承和混合 &lt;/span&gt;　　&lt;br /&gt;      c++：支持多重继承 　　&lt;br /&gt;      java:单继承 　　&lt;br /&gt;      ruby:拥有单继承的简练与多多重继承的强在。 　　　　　&lt;br /&gt;      只允许有一个直接的父类 ,可以包含任意多个混合的功能　（不是太明白）&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;5、对象与属性&lt;/span&gt; 　　　&lt;br /&gt;      类的所有对象（属性）default 是私有的。即：其它对象不可以访问本对象的实例变量。 　只能通过方法来访问。java中常用get**与set**在ruby 中可以得到简)&lt;br /&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;        attr_reader:name,:artist,:duration #类似java get 之类&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;        attr_writer:name,:artist,:duration #类同于java set 之类 &lt;/span&gt;　　&lt;br /&gt;　&lt;span style="font-weight: bold;"&gt;可写属性 &lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;        def duration=(new Duration)　　＃注意方法名为 duration=&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;            @duration=new Duration&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;        end&lt;/span&gt;&lt;br /&gt;　上面与att_writer:duration 实现的功能一样。&lt;br /&gt;　&lt;span style="font-weight: bold;"&gt;虚拟属性&lt;/span&gt;&lt;br /&gt;　    &lt;span style="color: rgb(0, 153, 0);"&gt;def durationlnMinutes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;            @duration/60.0 #转换成 分钟&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;        end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;        def durationlnMinutes=(value) # attr_writer 实际上的实现方式与此相同&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;            @duration=(value*60).to_i #转换intger&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;        end&lt;/span&gt;&lt;br /&gt;　上面实际上是对duration 与　durationlnMinutes　之间进行的一个换算，对外部而言，它们之间没有什么区别，但是并没有和它对应的实例变量。&lt;br /&gt;　上述为统一访问原则(uniform acces principle)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;7 、类变量和类方法&lt;/span&gt;&lt;br /&gt;　　 类变量在类的所有对象中是共享的(java static),并且可能被类方法访问到。与全局变量和实例变量不同的是在使用前必须要初始化。&lt;br /&gt;　　　exp:&lt;br /&gt;             class Song&lt;br /&gt;             @@plays = 0&lt;br /&gt;     对于一个类和它的实例来说，类变量是私有的，如果想在外部访问它，就需要写一个访问方法。（类方法与实例方法都可以）&lt;br /&gt;　　类方法：不依赖于任何实例对象的方法.&lt;br /&gt;         exp: aSong = Song.new(....)&lt;br /&gt;　　单例模式&lt;br /&gt;　　　　&lt;span style="color: rgb(0, 102, 0);"&gt;class Logger&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;                    private_class_method :new　　＃防止其它人调用default构造器&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;                    @@logger = nil&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;                    def Logger.create&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;                        @@logger = new unless @@logger 　# unlee 没太明白&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;                        @@logger&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;                    end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;                end&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;8、访问控制&lt;/span&gt;&lt;br /&gt;　　 公有方法pubic methods　（方法的defualt,除initialize外）&lt;br /&gt;　　保护方法protected methods 可以被定义它的类和其子类的对象访问，访问只限于家族内&lt;br /&gt;　　私有方法private methods 不能被外界调用，因为调用私有方法时无法指定对象，所以只能 在定义它的类和类直接派生的对象中使用　&lt;br /&gt;     注： "protected"和"private"两者的区别非常微妙，在ruby中两者间的区别甚至要超出其它大多数面向对象语言。如果一个方法是保护的，它可以在定义它的类或者子类的实例中调用。如果一个方法是私有的，则只能在调用它的对象的上下文处调用，不可能直接调用另一个对象的私有方法，即便这个对象和该对象都是同一个类的实例。&lt;br /&gt;　　　ruby和其它oo语言不同在于，访问控制是动态的，只有你的代码执行受限的方法时才会得到访问违例。&lt;br /&gt;　　　设定方法：&lt;br /&gt;　　　　　1、在定义方法前说明&lt;br /&gt;                   &lt;span style="color: rgb(0, 102, 0);"&gt;  private # 随后的方法是 'private'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;                        def method3 # 这里是 'private'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;                                #...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;                        end&lt;/span&gt;&lt;br /&gt;2、作为参数列在访问控制后面&lt;br /&gt;　　　　　　 public :method1, :method4&lt;br /&gt;　　　　　　　　　　　　　　　　　&lt;br /&gt;　　&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;/span&gt;&lt;/song&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19097686-115855749142391495?l=yaogood.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yaogood.blogspot.com/feeds/115855749142391495/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19097686&amp;postID=115855749142391495' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/115855749142391495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/115855749142391495'/><link rel='alternate' type='text/html' href='http://yaogood.blogspot.com/2006/09/ruby_18.html' title='ruby笔记之类、对象、变量'/><author><name>老姚</name><uri>http://www.blogger.com/profile/05031235887207798753</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16471258562869864241'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19097686.post-115846359374709923</id><published>2006-09-17T11:26:00.000+08:00</published><updated>2006-09-17T12:03:02.366+08:00</updated><title type='text'>ruby 笔记之Ruby的新特性</title><content type='html'>一、相关定义&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;def saygoodnight (name)&lt;br /&gt;#result="good night\n"+name&lt;br /&gt;#result="good night\n #{name}"&lt;br /&gt;#return result&lt;br /&gt;"good night\n #{name}"&lt;br /&gt;end&lt;br /&gt;# puts syagoodnight&lt;br /&gt;puts saygoodnight("yao")&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;/span&gt;&lt;br /&gt;分析：&lt;br /&gt;　　1、定义方法　def ..end ，出没有出现其它语言中的"{｝"，更加简洁&lt;br /&gt;　　2、变量result 没有定义类型，系统自动处理&lt;br /&gt;　　3、Ruby注释开始于#号，结束在行尾。&lt;br /&gt;　　4、在""下，它与C类似要做更多的处理如：替换以"\"开头的，如："\n","#"符号。&lt;br /&gt;　　5、ruby 使用一约定的方法来规定变量的命名，主要体显在名称的第一个字符上。&lt;br /&gt;　　　&lt;span style="color: rgb(255, 102, 102);"&gt;局部变量、方法参数和方法名称应该用一个小写字母开头或者一个下划线；&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 102);"&gt;　　　全局变量用美元符作为前缀($)，&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 102);"&gt;　　　而实例变量用@开头，&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 102);"&gt;　　　类变量用两个@开头；最后，类名、模块名和常量应该大写字母开头。&lt;/span&gt;&lt;br /&gt;二、数组与哈希&lt;br /&gt; 　　都是有序集合，都是保存对象的集合，可以通键来访问无素，数组的键是个整数（从0开始），而哈希　支持任何对象做为键，对访问元素来说，数组的效率高，但哈希却更灵活。数组和哈希都可以容纳不同类型的对象。&lt;br /&gt;&lt;br /&gt;三、控制结构&lt;br /&gt;　　在ruby中，所有的控制结构都没有大括号，用end表示一段主体的结束。&lt;br /&gt;   如：&lt;br /&gt;&lt;div style="text-align: justify;"&gt;       &lt;span style="color: rgb(51, 102, 255);"&gt; if radiation&gt;3000&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;        puts "Danger,Will Robinson"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;        end&lt;/span&gt;&lt;br /&gt;   可以表示为更简洁的&lt;br /&gt;　&lt;span style="color: rgb(51, 102, 255);"&gt;puts "Danger,Will Robinson" if radiation&gt;3000&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-weight: bold;"&gt;四、正则表达式&lt;/span&gt;&lt;br /&gt;　　一个正则表达式就是在一个字符串中用来匹配的特定的模式字符。在Ruby中，用两个斜线括住的模式来显式地创建一正则表达式(/pattern/)，而且，由于Ruby之所以为Ruby的原因，正则表达式当然的也是对象，并且能被处理。&lt;br /&gt;常见如下：&lt;br /&gt;　　/&lt;span style="color: rgb(255, 0, 0);"&gt;\d&lt;/span&gt;\d:\d\d:\d\d/    #  类似12:34:56这样的时间&lt;br /&gt;        /Perl.*Python/            #  Perl,0或者更多的字符,然后是Python&lt;br /&gt;        /Perl\s+Python/           #  Perl,1个或者更多空格,然后是Python&lt;br /&gt;        /Ruby (Perl|Python)/      #  Ruby,1个空格,然后是Perl或者Python&lt;br /&gt;"\d"　匹配所有的数字&lt;br /&gt;"\s"    匹配空白字符（空格、Tab、换行符等&lt;br /&gt;"."（一个点号）匹配任意字符。&lt;br /&gt;另外：=~, 回它开始的位置，否则返回nil&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;if line =~ /Perl|Python/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;   puts "Scripting language mentioned: #{line}"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt; end&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;五、代码块和迭代器&lt;/span&gt;&lt;br /&gt;　　&lt;span style="color: rgb(51, 102, 255);"&gt;def callBlock&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;     　　yield&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  　　　yield&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;　　end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;　　callBlock { puts "In the block" }&lt;/span&gt;&lt;br /&gt;　　上面代码可以理解为：blocks(puts..)在方法cellblock 被yield 调用。代码块和方法当成是协同工作的关系，在它们之间控制在来回交换。当然yield 也可以与blocks进行交互（参数传递）见下：&lt;br /&gt;       &lt;span style="color: rgb(51, 51, 255);"&gt;a = %w( ant bee cat dog elk )    # 创建一个数组&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        a.each { |animal| puts animal }  # 迭代所有的内容&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;       &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        # 在Array类中　 each　的实现大致如下：&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        def each&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;            for each element&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;                yield(element)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;            end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        end&lt;/span&gt;&lt;br /&gt;其它类似的实现&lt;br /&gt;      &lt;span style="color: rgb(51, 102, 255);"&gt; 5.times {  print "*" }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;        3.upto(6) {|i|  print i }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;        ('a'..'e').each {|char| print char }&lt;/span&gt;&lt;br /&gt;六、读写&lt;br /&gt;　    输出：&lt;br /&gt;　    puts：自动换行&lt;br /&gt;　    print:在同一行输出&lt;br /&gt;　    printf:按格式输出，与c相似　&lt;br /&gt;　　如：&lt;span style="color: rgb(51, 102, 255);"&gt;printf "Number: %5.2f, String: %s", 1.23, "hello"&lt;/span&gt;&lt;br /&gt;　录入：&lt;br /&gt;　  &lt;span style="color: rgb(51, 51, 255);"&gt;  line=gets&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    print  line &lt;/span&gt;&lt;br /&gt; 注：gets例程有一个附带效果，它除了返回读取的行，还把它储存到全局变量$_中，这个变量很特殊，在很多环境中它作为默认变量使。如果你调用print而没 有带参数，它显示$_的内容；如果你写一个if或者while语句时仅仅使用一个正则表达式作为条件，那么这个表达式匹配的对象是$_。尽管一些纯粹主义 者把这看作是令人讨厌的野蛮行径，但是这些简写确实又能帮助我们写出简洁的程序来。如下：&lt;br /&gt;while gets           # assigns line to $_&lt;br /&gt;  if   /\d./  # matches against $_   &lt;span style="color: rgb(255, 0, 0);"&gt; 以数字开头的&lt;/span&gt;&lt;br /&gt;    print            # prints $_&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;原电子文档：&lt;a href="http://www.moer.net/ruby/doc/ReadQuestion.asp?QuestionID=88"&gt;http://www.moer.net&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19097686-115846359374709923?l=yaogood.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yaogood.blogspot.com/feeds/115846359374709923/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19097686&amp;postID=115846359374709923' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/115846359374709923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/115846359374709923'/><link rel='alternate' type='text/html' href='http://yaogood.blogspot.com/2006/09/ruby-ruby.html' title='ruby 笔记之Ruby的新特性'/><author><name>老姚</name><uri>http://www.blogger.com/profile/05031235887207798753</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16471258562869864241'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19097686.post-115798824349531906</id><published>2006-09-11T23:24:00.000+08:00</published><updated>2006-09-11T23:28:53.326+08:00</updated><title type='text'>重温历史－&lt;&lt;东京审判&gt;&gt;</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://image2.sina.com.cn/ent/d/2006-08-23/U1171P28T3D1213377F326DT20060823223707.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px;" src="http://image2.sina.com.cn/ent/d/2006-08-23/U1171P28T3D1213377F326DT20060823223707.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;       今天晚上在家里安表的看完呢&lt;&lt;东京审判&gt;&gt;，我认为它是一部想每个中国人都值得一看的历史片。我一直对日本人没有什么好感，感觉他们是那么的傲慢，死不认错，在法庭上不停的狡辩。松井石根所冒出的“哥弟论”更是愤怒！节选一段对白:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;         “南京没有发生大屠杀！季南检察官所说的、日本皇军对中国俘虏、平民、妇女实施了所谓的有组织且残忍的屠杀奸淫的这些指控，全部都是诬蔑！而且超过军事上需要破坏房屋财产等指控也都是谎言！”&lt;/span&gt;&lt;span style="font-style: italic;"&gt;“…我始终坚信，日中之间的战争是所谓的‘亚洲大家庭’中兄弟之间的争吵，日本不可避免的要使用……一点点……强硬手段。”&lt;/span&gt;&lt;span style="font-style: italic;"&gt;“这同哥哥经过长期忍耐后赶走不听话的弟弟没有什么两样。采取这一行动的的目的在于促使中国回心转意。哥哥对弟弟态度可能有点粗暴，但哥哥的出发点是好的，是为弟弟好，哥哥是爱弟弟的！”远东国际军事法庭首席检察官季南冷笑了道：“那我倒要请问，‘弟弟’对‘哥哥’的爱反应如何？”松井石根有些尴尬：“这个、‘弟弟’没有理解这一点，对、对‘哥哥’的爱一点儿也不感到高兴。&lt;/span&gt;&lt;br /&gt;        最后东条英机的嚣张更是让人气愤，而做为一个甲战犯供在靖国神社真是国人的耻辱！&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        季南：“你认为作为首相发动战争，在道德和法律上都没有错吗？”东条英机左手撑在桌子上，挺起胸膛，对着季南强硬地：“完全没有任何过错！以前、现在还有将来，我都认为那都是正当的！”&lt;/span&gt;&lt;br /&gt;       最后我很欣赏”梅“的风格，特别是在开始为坐座顺序与最后投票他都是在力争，正如他所说的“我己尽力呢”&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19097686-115798824349531906?l=yaogood.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yaogood.blogspot.com/feeds/115798824349531906/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19097686&amp;postID=115798824349531906' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/115798824349531906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/115798824349531906'/><link rel='alternate' type='text/html' href='http://yaogood.blogspot.com/2006/09/blog-post_115798824349531906.html' title='重温历史－&lt;&lt;东京审判&gt;&gt;'/><author><name>老姚</name><uri>http://www.blogger.com/profile/05031235887207798753</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16471258562869864241'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19097686.post-115795016174359864</id><published>2006-09-11T12:49:00.000+08:00</published><updated>2006-09-11T13:05:58.380+08:00</updated><title type='text'>十张叫做幸福的照片</title><content type='html'>转摘：&lt;a href="http://forum.techweb.com.cn/viewthread.php?tid=33758"&gt;TechWeb 论坛&lt;/a&gt;，觉得很经典所以收藏起来，慢慢品尝！&lt;br /&gt;&lt;br /&gt;我们总是抱怨生活的压力太大,&lt;br /&gt;工作,家庭,金钱,甚至爱情,&lt;br /&gt;本来该是生活的快乐所在,&lt;br /&gt;却变成了背上的枷锁.&lt;br /&gt;习惯面无表情的生活,习惯让自己的心很硬很硬.&lt;br /&gt;甚至忘记了这个世界上还有一种东西叫幸福.&lt;br /&gt;其实,幸福很简单,&lt;br /&gt;如果你不那么匆匆,&lt;br /&gt;如果你用爱的目光,&lt;br /&gt;如果你有足够的宽容,&lt;br /&gt;幸福真的离我们很近.&lt;br /&gt;那么，什么才是幸福呢：幸福就是可以把握住现在的拥有&lt;br /&gt;看了下面的图，你是否也能感受到幸福的所在.&lt;br /&gt;&lt;br /&gt;&lt;span style="line-height: 160%;font-size:14;" &gt;&lt;b&gt;第一张 爱情&lt;/b&gt;&lt;br /&gt;沉醉于爱情中的人是幸福的.&lt;br /&gt;长长的人生之路,有你的陪伴,扶持,足够了&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://cimg2.163.com/education/2006/4/3/20060403140440d960c.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://cimg2.163.com/education/2006/4/3/20060403140440d960c.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;第二张,依旧是爱情&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;有人说爱情是一杯茶,时间一久就淡了.&lt;br /&gt;我说爱情更像是一个煲,时间越长越有滋味&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://cimg2.163.com/education/2006/4/3/200604031409167eacc.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://cimg2.163.com/education/2006/4/3/200604031409167eacc.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;第三张 母爱&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;如果整个世界都抛弃了你,&lt;br /&gt;至少还有母亲不会放弃你.&lt;br /&gt;还记得儿时母亲的怀抱就是我最美的天堂&lt;br /&gt;&lt;font&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://cimg2.163.com/education/2006/4/3/20060403140853f3ef7.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://cimg2.163.com/education/2006/4/3/20060403140853f3ef7.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;font&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;第四张 纯真&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;这样的笑,这样的幸福,只有孩子才有&lt;br /&gt;&lt;font&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://cimg2.163.com/education/2006/4/3/2006040314155449572.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://cimg2.163.com/education/2006/4/3/2006040314155449572.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;font&gt;&lt;br /&gt;&lt;b&gt;第五张 希望&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;如果你有希望，也是幸福&lt;br /&gt;等待中的幸福最美好&lt;br /&gt;&lt;br /&gt;&lt;font&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://cimg2.163.com/education/2006/4/3/200604031416251a685.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://cimg2.163.com/education/2006/4/3/200604031416251a685.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;font&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;第六张 分享&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;和别人分享欢乐的同时，你拥有的也是幸福&lt;br /&gt;&lt;font&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://cimg2.163.com/education/2006/4/3/20060403141653fd4f4.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://cimg2.163.com/education/2006/4/3/20060403141653fd4f4.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;font&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;第七张 自然&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;看到这张照片,我有一种莫名的感动,&lt;br /&gt;想起小的时候淋雨的情景,&lt;br /&gt;和大自然如此的接近,烦恼不见了.&lt;br /&gt;窗外正飘洒的细雨,有出去淋雨的冲动&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://cimg2.163.com/education/2006/4/3/200604031417240c07e.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://cimg2.163.com/education/2006/4/3/200604031417240c07e.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;第八张 野花&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;是的,幸福就是一朵野花,&lt;br /&gt;用自己的生命展示美丽,这就是幸福&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://cimg2.163.com/education/2006/4/3/20060403141745ad263.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://cimg2.163.com/education/2006/4/3/20060403141745ad263.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;第九张 求知&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;这是一张老照片,初看的时候感觉心酸,&lt;br /&gt;逐渐的,发现了求知的力量,&lt;br /&gt;破旧的教室,打满补丁的衣裳,&lt;br /&gt;却掩盖不了心中对知识的渴望,&lt;br /&gt;比起那些一坐进教室就头疼的城里 孩子来讲,&lt;br /&gt;他们就是幸福的&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://cimg2.163.com/education/2006/4/3/200604031418134777a.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://cimg2.163.com/education/2006/4/3/200604031418134777a.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;第十张 孩子&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;他们是落入凡间的精灵,那是可以让人忘记烦恼的笑&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://cimg2.163.com/education/2006/4/3/20060403141833cee9b.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://cimg2.163.com/education/2006/4/3/20060403141833cee9b.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;font&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19097686-115795016174359864?l=yaogood.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yaogood.blogspot.com/feeds/115795016174359864/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19097686&amp;postID=115795016174359864' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/115795016174359864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/115795016174359864'/><link rel='alternate' type='text/html' href='http://yaogood.blogspot.com/2006/09/blog-post_115795016174359864.html' title='十张叫做幸福的照片'/><author><name>老姚</name><uri>http://www.blogger.com/profile/05031235887207798753</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16471258562869864241'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19097686.post-115789563794004907</id><published>2006-09-10T21:40:00.000+08:00</published><updated>2006-09-10T21:44:21.773+08:00</updated><title type='text'>感谢恩师</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/97/1884/1600/da0ab73eccb95efa838b133b.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/97/1884/320/da0ab73eccb95efa838b133b.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;今天给大学的杨博发了个祝福的短信。很过意不去，虽在同一个城市之下也没有去看望一下（自己在不停的找n个不去的理由，惭愧!），非常感谢杨博给我在外做项目的机会，当然还有其它的关照，现在还忘不了您带我们到餐馆改善火食的情形。我还要感以下老师。&lt;br /&gt;高中时的李老师、樊老师、余老师，三位非常有才气的专业老师，虽然你们现在都离开了教育战线，感谢你们对我专业上的帮助。感谢周老师（高三的班主任）没有您，我可能就入不了大学，感谢您对我语文上的帮助与鼓舞（不知您身体好些没？）。&lt;br /&gt;感谢初中的陈老师，感谢您在寒冷的冬天把我打"醒"(当时犯了一个很大的错误），后面是您把我叫到家里，亲自给我理头，给我莫大的鼓舞（那是当学生以来的最高待遇），是您教我“是金子在那里都会发光”，这句话我将永记于心！&lt;br /&gt;我一直在安慰自己，等在外面混出点明堂的时候，再回去拜访各位恩师。也是一种虚荣心在做怪。&lt;br /&gt;　各位恩师，祝你们节日愉快！&lt;br /&gt;　　　　　　　　　身体健康！&lt;br /&gt;　&lt;br /&gt;　　　　　　　　　　　　　　　　　　　　　　　　　　　&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19097686-115789563794004907?l=yaogood.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yaogood.blogspot.com/feeds/115789563794004907/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19097686&amp;postID=115789563794004907' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/115789563794004907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/115789563794004907'/><link rel='alternate' type='text/html' href='http://yaogood.blogspot.com/2006/09/blog-post_10.html' title='感谢恩师'/><author><name>老姚</name><uri>http://www.blogger.com/profile/05031235887207798753</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16471258562869864241'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19097686.post-115770348966574625</id><published>2006-09-08T16:18:00.000+08:00</published><updated>2006-09-10T23:50:44.916+08:00</updated><title type='text'>如何通过blog 来学习</title><content type='html'>今天观看了&lt;a href="http://live.csdn.net/Issue27/LivePlay.aspx"&gt;CSDN Blog 学习之"道"&lt;/a&gt;，谈话嘉宾为csdn blog 的产品经理&lt;a href="http://blog.csdn.net/rjchen/" target="_blank"&gt;陈瑞江&lt;/a&gt;，其中主要谈了对E-learning的展望与如何能过以blog为中心进行学习，受其启发，（从中得知，也行本人学习计划一只不能很好的执行，是没有引入过程管理的原因吧 :)）关于如何通过blog学习陈讲了以下几点：&lt;br /&gt;1、制定学习目标，制定学习目标要按的smart原则&lt;br /&gt;　　目标是具体的(Specific)，目标是可以度量的(Measurable)、目标是可以达到的(Attainable)、目标是相关的(Relevant)有结果导向，有时间限制的(Time-based)。&lt;br /&gt;2、在实现学习目标时，引用学习过程管理（与项目管理类似）&lt;br /&gt;　　制定好的计划－&gt;按计划去执行－&gt;检查与调整学习计划－＞分析与总结学习计划　&lt;br /&gt;　　（就是项目管理中的进度管理）&lt;br /&gt;根据以上分析个人情况得出。&lt;br /&gt;　1、没有按smart原则来制定学习计划。（大太，不可度量等，没细化）&lt;br /&gt;　2、制定学习计划后，没有根据自己实际情况做相关的调整，也有事后的总结与分析。&lt;br /&gt;　&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19097686-115770348966574625?l=yaogood.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yaogood.blogspot.com/feeds/115770348966574625/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19097686&amp;postID=115770348966574625' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/115770348966574625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/115770348966574625'/><link rel='alternate' type='text/html' href='http://yaogood.blogspot.com/2006/09/blog_08.html' title='如何通过blog 来学习'/><author><name>老姚</name><uri>http://www.blogger.com/profile/05031235887207798753</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16471258562869864241'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19097686.post-115760115765694802</id><published>2006-09-07T11:52:00.000+08:00</published><updated>2006-09-07T11:52:37.700+08:00</updated><title type='text'>你是否考虑要换个工作？</title><content type='html'>&lt;a href="http://www.lifebang.com/archives/148"&gt;你什么时候该考虑换个工作了 ?&lt;/a&gt; "&lt;br /&gt;如果符合下面的条件，你该考虑换工作了：&lt;br /&gt;&lt;br /&gt;    * 你发现自己没有成长的空间了。&lt;br /&gt;    * 你发现这种状况以后不太可能得到好转。&lt;br /&gt;    * 你的工作不再具有挑战性。&lt;br /&gt;    * 你的兴趣不在你现在的工作上。&lt;br /&gt;    * 你希望你的事业有所突破。&lt;br /&gt;&lt;br /&gt;如果符合下面的因素，换工作可能解决不了你的问题：&lt;br /&gt;&lt;br /&gt;    * 你离开不过是在另一个公司找一个相同的职位。&lt;br /&gt;    * 你经常抱怨或者感到沮丧，无论在哪个公司或者哪个职位。&lt;br /&gt;    * 你理想化另一个公司，选择跳?"&lt;br /&gt;----------&lt;br /&gt;   我也是在痛苦中的挣扎，选择离开还是继续？离我做决定的时间越来越短呢。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19097686-115760115765694802?l=yaogood.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yaogood.blogspot.com/feeds/115760115765694802/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19097686&amp;postID=115760115765694802' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/115760115765694802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/115760115765694802'/><link rel='alternate' type='text/html' href='http://yaogood.blogspot.com/2006/09/blog-post_07.html' title='你是否考虑要换个工作？'/><author><name>老姚</name><uri>http://www.blogger.com/profile/05031235887207798753</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16471258562869864241'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19097686.post-115742145161301390</id><published>2006-09-05T09:57:00.000+08:00</published><updated>2006-09-05T09:57:31.666+08:00</updated><title type='text'>秋意浓浓</title><content type='html'>今天长沙天气一下降到19度，早晨起来也感觉到几丝的凉意，小禹也物别的多加了衣服！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19097686-115742145161301390?l=yaogood.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yaogood.blogspot.com/feeds/115742145161301390/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19097686&amp;postID=115742145161301390' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/115742145161301390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/115742145161301390'/><link rel='alternate' type='text/html' href='http://yaogood.blogspot.com/2006/09/blog-post_05.html' title='秋意浓浓'/><author><name>老姚</name><uri>http://www.blogger.com/profile/05031235887207798753</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16471258562869864241'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19097686.post-115733594125724221</id><published>2006-09-04T10:12:00.000+08:00</published><updated>2006-09-04T10:12:21.313+08:00</updated><title type='text'>一个很精彩的比喻</title><content type='html'>&lt;a href="http://51cmm.csai.cn/SoftQuality/No107.htm"&gt;一个SQA的工作日记??希赛网软件工程频道软件质量栏目&lt;/a&gt;: "项目组就像是一家餐馆，项目经理是当班经理，他决定做什么，有多少人多少资源来做多大，有多大的风险；系统架构设计师就是主厨，他设计具体做法；程序员就是厨师，配置管理员、系统集成人员、数据库管理员等角色是厨房里面的服务人员。而 SQA 和测试工程师更像是第三方的检查人员， SQA 检查的是制作流程是否正确，材料是否使用正确，卫生是否做好了，他检查所有人的工作，包括项目经理。 SQA 虽然没有决定权，但是他?"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19097686-115733594125724221?l=yaogood.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yaogood.blogspot.com/feeds/115733594125724221/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19097686&amp;postID=115733594125724221' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/115733594125724221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/115733594125724221'/><link rel='alternate' type='text/html' href='http://yaogood.blogspot.com/2006/09/blog-post.html' title='一个很精彩的比喻'/><author><name>老姚</name><uri>http://www.blogger.com/profile/05031235887207798753</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16471258562869864241'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19097686.post-115704622810856312</id><published>2006-09-01T01:43:00.000+08:00</published><updated>2006-09-01T01:50:10.650+08:00</updated><title type='text'>设置blog地图的几中方法。</title><content type='html'>国内：&lt;br /&gt;　　&lt;a style="font-weight: bold;" href="http://blog.mapbar.com/blogmap/"&gt;blog map&lt;/a&gt;&lt;br /&gt;　　具体的操作方法见&lt;a style="font-weight: bold;" href="http://www.litianlun.com/post/72.html"&gt;天伦之乐&lt;/a&gt;上的介绍。测试几次在firefox下不能正常的显示地图。&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;　　&lt;/span&gt;&lt;a style="font-weight: bold;" href="http://my.51ditu.com/my/single/sel_city.html?type=3"&gt;51ditu&lt;/a&gt;　&lt;br /&gt;       具体操作：选择城市、标注位置、制制代码&lt;br /&gt;　　国内两个相比，我个人比较反推荐51ditu。它操作简单不需注册，对firefox支持很好，另外它本身就是地图的提供商所以速度还可以。&lt;br /&gt;国外：&lt;br /&gt;　　&lt;a style="font-weight: bold;" href="http://wikimapia.org/#y=25000000&amp;x=10000000&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;z=2&amp;l=6&amp;amp;m=a"&gt;wikimapia&lt;/a&gt;&lt;br /&gt;　引用的是google 地图。对ie/firefox都支持。&lt;br /&gt;　　　操作方法：&lt;br /&gt;　　　　右上角，选择language－&gt;chinese.&lt;br /&gt;　　　　选择 wikimapia -&gt;search city ,搜索你所在的城市，放大至，你所在的地方。&lt;br /&gt;　　　　选择 wikimapia -&gt;map on you page ，可以调整大小。然后把之间的一段代码放到你的blog中就可以呢。具体效果&lt;a style="font-weight: bold;" href="http://yaogood.blogspot.com/2006/08/blog-post_24.html"&gt;在我blog中有&lt;/a&gt;。&lt;br /&gt;　　　&lt;span style="font-weight: bold;"&gt;google map&lt;/span&gt;&lt;br /&gt;操作略显专业点，需要注册后得到key,然后用js来调用。具体实现方式不在详述。下面例几个链接。&lt;br /&gt;&lt;a style="font-weight: bold;" href="http://www.step1.cn/GoogleApi/map2/documentation.htm"&gt;google maps api 第2版文档（中文）&lt;/a&gt;&lt;br /&gt;&lt;div class="title"&gt;&lt;a style="font-weight: bold;" href="http://www.step1.cn/"&gt;K_Reverter的网页开发空间&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;有兴趣的朋友可以试试。有什么问题可以留言给我&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19097686-115704622810856312?l=yaogood.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yaogood.blogspot.com/feeds/115704622810856312/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19097686&amp;postID=115704622810856312' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/115704622810856312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/115704622810856312'/><link rel='alternate' type='text/html' href='http://yaogood.blogspot.com/2006/09/blog.html' title='设置blog地图的几中方法。'/><author><name>老姚</name><uri>http://www.blogger.com/profile/05031235887207798753</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16471258562869864241'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19097686.post-115703023856785818</id><published>2006-08-31T21:09:00.000+08:00</published><updated>2006-08-31T21:17:18.620+08:00</updated><title type='text'>给google软件安装建议</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/97/1884/1600/%3F%3F%3F%3F%3F%3F%3F%3F%3F.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/97/1884/320/%3F%3F%3F%3F%3F%3F%3F%3F%3F.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;　　今天在keso读到&lt;a href="http://blog.donews.com/keso/archive/2006/08/31/1024968.aspx"&gt;"Google软件六大原则"&lt;/a&gt;,给google 在软件的安装上提个小小的建议，google 发布软件时可否统一安装到一个名为“google”菜单下。详见上图！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19097686-115703023856785818?l=yaogood.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yaogood.blogspot.com/feeds/115703023856785818/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19097686&amp;postID=115703023856785818' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/115703023856785818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/115703023856785818'/><link rel='alternate' type='text/html' href='http://yaogood.blogspot.com/2006/08/google.html' title='给google软件安装建议'/><author><name>老姚</name><uri>http://www.blogger.com/profile/05031235887207798753</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16471258562869864241'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19097686.post-115700807387962336</id><published>2006-08-31T15:07:00.000+08:00</published><updated>2006-08-31T15:07:53.886+08:00</updated><title type='text'>每天“听”Keso</title><content type='html'>中文Blogosphere顶级blog“Keso - 对牛乱弹琴”的音频版。现在你不光可以看Keso写字，更可以轻松的聆听Keso“乱弹琴”。放一广告词&lt;br /&gt;   "每天听Keso，时时有收获"!&lt;br /&gt;地址：http://www.podlook.com/channel/124514&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19097686-115700807387962336?l=yaogood.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yaogood.blogspot.com/feeds/115700807387962336/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19097686&amp;postID=115700807387962336' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/115700807387962336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19097686/posts/default/115700807387962336'/><link rel='alternate' type='text/html' href='http://yaogood.blogspot.com/2006/08/keso.html' title='每天“听”Keso'/><author><name>老姚</name><uri>http://www.blogger.com/profile/05031235887207798753</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16471258562869864241'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>