<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
	xmlns:media="http://search.yahoo.com/mrss/"
>

<channel>
	<title>Yinghai.Org</title>
	<atom:link href="http://www.yinghai.org/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.yinghai.org</link>
	<description>泛舟沧海 立马昆仑</description>
	<lastBuildDate>Sun, 09 May 2010 06:47:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
	<!-- podcast_generator="podPress/8.8" - maintenance_release="8.8.4" -->
		<copyright>Copyright &#xA9; Yinghai.Org 2010 </copyright>
		<managingEditor>zyinghai@gmail.com (Yinghai.Org)</managingEditor>
		<webMaster>zyinghai@gmail.com (Yinghai.Org)</webMaster>
		<category>posts</category>
		<itunes:keywords></itunes:keywords>
		<itunes:subtitle></itunes:subtitle>
		<itunes:summary>泛舟沧海 立马昆仑</itunes:summary>
		<itunes:author>Yinghai.Org</itunes:author>
		<itunes:category text="Society &amp; Culture"/>
		<itunes:owner>
			<itunes:name>Yinghai.Org</itunes:name>
			<itunes:email>zyinghai@gmail.com</itunes:email>
		</itunes:owner>
		<itunes:block>No</itunes:block>
		<itunes:explicit>no</itunes:explicit>
		<itunes:image href="http://www.yinghai.org/wp-content/plugins/podpress/images/powered_by_podpress_large.jpg" />
		<image>
			<url>http://www.yinghai.org/wp-content/plugins/podpress/images/powered_by_podpress.jpg</url>
			<title>Yinghai.Org</title>
			<link>http://www.yinghai.org</link>
			<width>144</width>
			<height>144</height>
		</image>
		<item>
		<title>[原创]Rails中用AASM实现工作流与多步骤向导</title>
		<link>http://www.yinghai.org/?p=483</link>
		<comments>http://www.yinghai.org/?p=483#comments</comments>
		<pubDate>Sun, 09 May 2010 06:47:56 +0000</pubDate>
		<dc:creator>yinghai</dc:creator>
				<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://www.yinghai.org/?p=483</guid>
		<description><![CDATA[ruby有一个act as state machine的插件，可以实现工作流或者多步骤向导的功能。 state machine,是计算机科学里面一种模型，这个插件主要实现的是finite state machine,既有限状态自动机。 首先，AASM的安装： config.gem &#34;rubyist-aasm&#34;, :source =&#62; &#34;http://gems.github.com&#34;, :lib =&#62; 'aasm' 安装好之后需要在你的Model里面加入 include AASM 下面是一个简单的例子。来介绍AASM的使用。 加入我们有一个person的model，一个person可以处于三种状态，sleeping, working 还有eating. 初始状态是sleeping, 从sleeping只可以通过eat事件，转到eating,不可以转到working.（吃了饭才能工作）。 从working只可以通过eat事件，转到eating,不可以转到sleeping. （不能空肚子睡觉）。 然后从eating可以通过work事件转到working,或者sleep转到sleeping. 这些可以转化成下面的代码 class Person &#60; ActiveRecord::Base &#160; include AASM &#160; &#160; aasm_column :current_state #定义那个字段来储存当前状态 &#160; aasm_initial_state :sleeping #定义初始状态 &#160; &#160; #定义三个不同的状态 &#160; aasm_state :sleeping &#160; aasm_state :eating [...]]]></description>
			<content:encoded><![CDATA[<p>ruby有一个<a href="http://github.com/rubyist/aasm">act as state machine</a>的插件，可以实现工作流或者多步骤向导的功能。<br />
state machine,是计算机科学里面一种模型，这个插件主要实现的是finite state machine,既有限状态自动机。</p>
<p>首先，AASM的安装：</p>
<div class="codecolorer-container ruby default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">config.<span style="color:#9900CC;">gem</span> <span style="color:#996600;">&quot;rubyist-aasm&quot;</span>, <span style="color:#ff3333; font-weight:bold;">:source</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;http://gems.github.com&quot;</span>, <span style="color:#ff3333; font-weight:bold;">:lib</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'aasm'</span></div></div>
<p>安装好之后需要在你的Model里面加入</p>
<div class="codecolorer-container ruby default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color:#9966CC; font-weight:bold;">include</span> AASM</div></div>
<p>下面是一个简单的例子。来介绍AASM的使用。<br />
加入我们有一个person的model，一个person可以处于三种状态，sleeping, working 还有eating.<br />
初始状态是sleeping,<br />
从sleeping只可以通过eat事件，转到eating,不可以转到working.（吃了饭才能工作）。<br />
从working只可以通过eat事件，转到eating,不可以转到sleeping. （不能空肚子睡觉）。<br />
然后从eating可以通过work事件转到working,或者sleep转到sleeping.</p>
<p>这些可以转化成下面的代码</p>
<div class="codecolorer-container ruby default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;height:300px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color:#9966CC; font-weight:bold;">class</span> Person <span style="color:#006600; font-weight:bold;">&lt;</span> <span style="color:#6666ff; font-weight:bold;">ActiveRecord::Base</span><br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">include</span> AASM<br />
&nbsp; <br />
&nbsp; aasm_column <span style="color:#ff3333; font-weight:bold;">:current_state</span> <span style="color:#008000; font-style:italic;">#定义那个字段来储存当前状态</span><br />
&nbsp; aasm_initial_state <span style="color:#ff3333; font-weight:bold;">:sleeping</span> <span style="color:#008000; font-style:italic;">#定义初始状态</span><br />
&nbsp; <br />
&nbsp; <span style="color:#008000; font-style:italic;">#定义三个不同的状态</span><br />
&nbsp; aasm_state <span style="color:#ff3333; font-weight:bold;">:sleeping</span><br />
&nbsp; aasm_state <span style="color:#ff3333; font-weight:bold;">:eating</span><br />
&nbsp; aasm_state <span style="color:#ff3333; font-weight:bold;">:working</span><br />
<br />
&nbsp; <span style="color:#008000; font-style:italic;">#定义每个event及event发生时引发的状态转换</span><br />
&nbsp; aasm_event <span style="color:#ff3333; font-weight:bold;">:eat</span> <span style="color:#9966CC; font-weight:bold;">do</span><br />
&nbsp; &nbsp; transitions <span style="color:#ff3333; font-weight:bold;">:from</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:sleeping</span>,:working<span style="color:#006600; font-weight:bold;">&#93;</span>, <span style="color:#ff3333; font-weight:bold;">:to</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff3333; font-weight:bold;">:eating</span><br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />
&nbsp; <br />
&nbsp; aasm_event <span style="color:#ff3333; font-weight:bold;">:work</span> <span style="color:#9966CC; font-weight:bold;">do</span><br />
&nbsp; &nbsp; transitions <span style="color:#ff3333; font-weight:bold;">:from</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff3333; font-weight:bold;">:eating</span>, <span style="color:#ff3333; font-weight:bold;">:to</span> <span style="color:#006600; font-weight:bold;">=&gt;</span>:working<br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />
&nbsp; <br />
&nbsp; aasm_event :<span style="color:#CC0066; font-weight:bold;">sleep</span> <span style="color:#9966CC; font-weight:bold;">do</span><br />
&nbsp; &nbsp; transitions <span style="color:#ff3333; font-weight:bold;">:from</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff3333; font-weight:bold;">:eating</span>, <span style="color:#ff3333; font-weight:bold;">:to</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff3333; font-weight:bold;">:sleeping</span><br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />
<span style="color:#9966CC; font-weight:bold;">end</span></div></div>
<p>这样基本上就已经建好了state machine了。可以在console里面实验一下：</p>
<div class="codecolorer-container ruby default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">ruby<span style="color:#006600; font-weight:bold;">-</span>1.8.7<span style="color:#006600; font-weight:bold;">-</span>p249 <span style="color:#006600; font-weight:bold;">&gt;</span> <span style="color:#CC0066; font-weight:bold;">p</span>=Person.<span style="color:#9900CC;">create</span><br />
&nbsp;<span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#008000; font-style:italic;">#&lt;Person id: 10, name: nil, current_state: &quot;sleeping&quot;, created_at: &quot;2010-05-09 06:32:41&quot;, updated_at: &quot;2010-05-09 06:32:41&quot;&gt; </span><br />
ruby<span style="color:#006600; font-weight:bold;">-</span>1.8.7<span style="color:#006600; font-weight:bold;">-</span>p249 <span style="color:#006600; font-weight:bold;">&gt;</span> <span style="color:#CC0066; font-weight:bold;">p</span>.<span style="color:#9900CC;">aasm_events_for_current_state</span><br />
&nbsp;<span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:eat</span><span style="color:#006600; font-weight:bold;">&#93;</span> <br />
ruby<span style="color:#006600; font-weight:bold;">-</span>1.8.7<span style="color:#006600; font-weight:bold;">-</span>p249 <span style="color:#006600; font-weight:bold;">&gt;</span> <span style="color:#CC0066; font-weight:bold;">p</span>.<span style="color:#9900CC;">eat</span><br />
&nbsp;<span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#0000FF; font-weight:bold;">true</span> <br />
ruby<span style="color:#006600; font-weight:bold;">-</span>1.8.7<span style="color:#006600; font-weight:bold;">-</span>p249 <span style="color:#006600; font-weight:bold;">&gt;</span> <span style="color:#CC0066; font-weight:bold;">p</span><br />
&nbsp;<span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#008000; font-style:italic;">#&lt;Person id: 10, name: nil, current_state: &quot;eating&quot;, created_at: &quot;2010-05-09 06:32:41&quot;, updated_at: &quot;2010-05-09 06:32:41&quot;&gt; </span><br />
ruby<span style="color:#006600; font-weight:bold;">-</span>1.8.7<span style="color:#006600; font-weight:bold;">-</span>p249 <span style="color:#006600; font-weight:bold;">&gt;</span> <span style="color:#CC0066; font-weight:bold;">p</span>.<span style="color:#9900CC;">aasm_events_for_current_state</span><br />
&nbsp;<span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">&#91;</span>:<span style="color:#CC0066; font-weight:bold;">sleep</span>, <span style="color:#ff3333; font-weight:bold;">:work</span><span style="color:#006600; font-weight:bold;">&#93;</span> <br />
ruby<span style="color:#006600; font-weight:bold;">-</span>1.8.7<span style="color:#006600; font-weight:bold;">-</span>p249 <span style="color:#006600; font-weight:bold;">&gt;</span> <span style="color:#CC0066; font-weight:bold;">p</span>.<span style="color:#9900CC;">work</span><br />
&nbsp;<span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#0000FF; font-weight:bold;">true</span> <br />
ruby<span style="color:#006600; font-weight:bold;">-</span>1.8.7<span style="color:#006600; font-weight:bold;">-</span>p249 <span style="color:#006600; font-weight:bold;">&gt;</span> <span style="color:#CC0066; font-weight:bold;">p</span><br />
&nbsp;<span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#008000; font-style:italic;">#&lt;Person id: 10, name: nil, current_state: &quot;working&quot;, created_at: &quot;2010-05-09 06:32:41&quot;, updated_at: &quot;2010-05-09 06:32:41&quot;&gt; </span><br />
ruby<span style="color:#006600; font-weight:bold;">-</span>1.8.7<span style="color:#006600; font-weight:bold;">-</span>p249 <span style="color:#006600; font-weight:bold;">&gt;</span> <span style="color:#CC0066; font-weight:bold;">p</span>.<span style="color:#9900CC;">aasm_current_state</span><br />
&nbsp;<span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff3333; font-weight:bold;">:working</span></div></div>
<p>可以看到，可以直接用 p.event的形式，来触发事件。<br />
aasm_current_state来获得当前状态，aasm_events_for_current_state 来获得当前状态可用的event.</p>
<p>结合到view的时候也很简单。把aasm_events_for_current_state获得的集合交给用户选择。<br />
返回到server之后的param经过验证之后。可以用p.send(param[:event])的形式触发。</p>
<p>这里的例子是一个工作流的例子。多步骤向导也很类似，这里不再赘述。</p>
<p>除此之外，AASM还提供了很多有用的callback, 感兴趣的朋友可以深入研究一下。<br />
github列出了下面几个：<br />
  oldstate:exit*<br />
  event:before<br />
  __find transition, if possible__<br />
  transition:on_transition*<br />
  oldstate:before_exit<br />
  newstate:before_enter<br />
  newstate:enter*<br />
  __update state__<br />
  event:success*<br />
  oldstate:after_exit<br />
  newstate:after_enter<br />
  event:after<br />
  obj:aasm_event_fired*</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yinghai.org/?feed=rss2&amp;p=483</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MacPorts迁移到homebrew</title>
		<link>http://www.yinghai.org/?p=481</link>
		<comments>http://www.yinghai.org/?p=481#comments</comments>
		<pubDate>Sun, 02 May 2010 21:47:15 +0000</pubDate>
		<dc:creator>yinghai</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.yinghai.org/?p=481</guid>
		<description><![CDATA[一直用MacPorts但是不喜欢，像不喜欢cygwin一样不喜欢macports，因为他们喜欢在你的系统内倔强的自成一体，不看环境就装很多额外的依赖库。 看了很多人介绍homebrew之后决定试一下。 准备工作，安装好了Xcode, 没有MacPorts的可以跳过第一步。 第一步，删除MacPorts sudo port -f uninstall installed sudo rm -rf \ /opt/local \ /Applications/DarwinPorts \ /Applications/MacPorts \ /Library/LaunchDaemons/org.macports.* \ /Library/Receipts/DarwinPorts*.pkg \ /Library/Receipts/MacPorts*.pkg \ /Library/StartupItems/DarwinPortsStartup \ /Library/Tcl/darwinports1.0 \ /Library/Tcl/macports1.0 \ ~/.macports 第二步： 无git安装 homebrew curl -L http://github.com/mxcl/homebrew/tarball/master &#124; tar xz &#8211;strip 1 -C /usr/local 第三步： 装好了，第三步就是用了 brew install wget brew install git 需要升级的话，就 [...]]]></description>
			<content:encoded><![CDATA[<p>一直用MacPorts但是不喜欢，像不喜欢cygwin一样不喜欢macports，因为他们喜欢在你的系统内倔强的自成一体，不看环境就装很多额外的依赖库。<br />
看了很多人介绍homebrew之后决定试一下。</p>
<p>准备工作，安装好了Xcode, 没有MacPorts的可以跳过第一步。</p>
<p>第一步，删除MacPorts<br />
sudo port -f uninstall installed</p>
<p>sudo rm -rf \<br />
    /opt/local \<br />
    /Applications/DarwinPorts \<br />
    /Applications/MacPorts \<br />
    /Library/LaunchDaemons/org.macports.* \<br />
    /Library/Receipts/DarwinPorts*.pkg \<br />
    /Library/Receipts/MacPorts*.pkg \<br />
    /Library/StartupItems/DarwinPortsStartup \<br />
    /Library/Tcl/darwinports1.0 \<br />
    /Library/Tcl/macports1.0 \<br />
    ~/.macports</p>
<p>第二步：<br />
无git安装 homebrew<br />
curl -L http://github.com/mxcl/homebrew/tarball/master | tar xz &#8211;strip 1 -C /usr/local</p>
<p>第三步：<br />
装好了，第三步就是用了<br />
brew install wget<br />
brew install git<br />
需要升级的话，就<br />
brew update</p>
<p>参考文章：http://www.engineyard.com/blog/2010/homebrew-os-xs-missing-package-manager/</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yinghai.org/?feed=rss2&amp;p=481</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Ruby 1.8.7 和1.9.1 Windows手动安装</title>
		<link>http://www.yinghai.org/?p=475</link>
		<comments>http://www.yinghai.org/?p=475#comments</comments>
		<pubDate>Tue, 27 Apr 2010 17:02:04 +0000</pubDate>
		<dc:creator>yinghai</dc:creator>
				<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://www.yinghai.org/?p=475</guid>
		<description><![CDATA[Windows的ruby installer给出各种各样的怪异错误,实在是受不了了,于是手动装了,其实很简单,就是解压一个文件夹,但是很多库需要装一下. 第一步:安装所需的lib 包都是ruby主页推荐的，我不用tk装，列表可以在此找到：http://jarp.does.notwork.org/win32/ zlib 里面的dll openssl -找到“libeay32.dll”, 复制到 ruby\bin. . -找到 “libssl32.dll”, 复制到 ruby\bin 然后改名为ssleay32.dll readline 复制readline.dll iconv 里面的dll pdcurses 里面的dll gdbm 里面的dll 不想这么麻烦,可以下载我已经单独取出来的dll文件，全部放倒ruby/bin 文件：rubylib 第二步：将ruby/bin加入PATH 第三步：安装gem - 下载rubygem - 解压缩 - 到里面的目录,运行ruby setup.rb 完成]]></description>
			<content:encoded><![CDATA[<p>Windows的ruby installer给出各种各样的怪异错误,实在是受不了了,于是手动装了,其实很简单,就是解压一个文件夹,但是很多库需要装一下.</p>
<p><strong><br />
第一步:安装所需的lib</strong><br />
包都是ruby主页推荐的，我不用tk装，列表可以在此找到：http://jarp.does.notwork.org/win32/<br />
zlib<br />
里面的dll<br />
openssl<br />
-找到“libeay32.dll”, 复制到 ruby\bin. .<br />
-找到 “libssl32.dll”, 复制到 ruby\bin 然后改名为ssleay32.dll<br />
readline<br />
复制readline.dll<br />
iconv<br />
里面的dll<br />
pdcurses<br />
里面的dll<br />
gdbm<br />
里面的dll</p>
<p>不想这么麻烦,可以下载我已经单独取出来的dll文件，全部放倒ruby/bin<br />
文件：<a href='http://www.yinghai.org/wp-content/uploads/2010/04/rubylib.zip'>rubylib</a></p>
<p><strong>第二步：将ruby/bin加入PATH</strong><br />
<strong>第三步：安装gem</strong><br />
- 下载rubygem<br />
- 解压缩<br />
- 到里面的目录,运行ruby setup.rb</p>
<p>完成</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yinghai.org/?feed=rss2&amp;p=475</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Zoom Zoom</title>
		<link>http://www.yinghai.org/?p=462</link>
		<comments>http://www.yinghai.org/?p=462#comments</comments>
		<pubDate>Mon, 29 Mar 2010 18:05:02 +0000</pubDate>
		<dc:creator>yinghai</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.yinghai.org/?p=462</guid>
		<description><![CDATA[Zoom Zoom是Mazda的理念. 翻开Mazda用户手册，扉页上写着： Zoom Zoom 秋千，自行车，还记得小时候的快乐么. 孩子们本能上就能体验到的快乐. 成长,更多的责任,让许多成人渐渐遗忘了Zoom Zoom. 一个独特的汽车公司,帮你找回童年的乐趣. 用大人的话说,这种乐趣就是速度与动感带来的愉悦和自由. 用孩子的话说,就是Zoom Zoom. 刚来加拿大的时候，主在Homestay, 也没有那么多钱装宽带。 闲下来的时间，上网少，看电视多，看各种广告，练习听力。 让我印象最深刻的就是马自达的广告，Zoom~ Zoom~ Zoom~的音乐伴随着每一款车的广告。 转眼9年，要挑选自己第一辆全新的车(之前的都是旧车)。 虽然思考过很多车型，网上查看了各种技术参数。 但其实心中回响的，还是Zoom Zoom的音乐。 而且我一直认为，汽车外观设计上，Mazda都走在其他品牌前面。 2010 新款Mazda 3外观更是超前于时代。 终于,趁我的心还年轻，我也有了自己的Zoom Zoom,等着以后沉稳了，可能就要选Venza了。]]></description>
			<content:encoded><![CDATA[<p>Zoom Zoom是Mazda的理念.<br />
翻开Mazda用户手册，扉页上写着：</p>
<blockquote><p>Zoom Zoom<br />
秋千，自行车，还记得小时候的快乐么.<br />
孩子们本能上就能体验到的快乐.<br />
成长,更多的责任,让许多成人渐渐遗忘了Zoom Zoom.<br />
一个独特的汽车公司,帮你找回童年的乐趣.<br />
用大人的话说,这种乐趣就是速度与动感带来的愉悦和自由.<br />
用孩子的话说,就是Zoom Zoom.</p></blockquote>
<p>刚来加拿大的时候，主在Homestay, 也没有那么多钱装宽带。<br />
闲下来的时间，上网少，看电视多，看各种广告，练习听力。<br />
让我印象最深刻的就是马自达的广告，Zoom~ Zoom~ Zoom~的音乐伴随着每一款车的广告。</p>
<p>转眼9年，要挑选自己第一辆全新的车(之前的都是旧车)。<br />
虽然思考过很多车型，网上查看了各种技术参数。<br />
但其实心中回响的，还是Zoom Zoom的音乐。<br />
而且我一直认为，汽车外观设计上，Mazda都走在其他品牌前面。<br />
2010 新款Mazda 3外观更是超前于时代。</p>
<p>终于,趁我的心还年轻，我也有了自己的Zoom Zoom,等着以后沉稳了，可能就要选Venza了。<br />
<a href="http://www.yinghai.org/wp-content/uploads/2010/03/IMG_0161.jpg"><img src="http://www.yinghai.org/wp-content/uploads/2010/03/IMG_0161-1024x768.jpg" alt="" title="IMG_0161" width="1024" height="768" class="alignnone size-large wp-image-464" /></a><br />
<a href="http://www.yinghai.org/wp-content/uploads/2010/03/IMG_0159.jpg"><img src="http://www.yinghai.org/wp-content/uploads/2010/03/IMG_0159-1024x768.jpg" alt="" title="IMG_0159" width="1024" height="768" class="alignnone size-large wp-image-463" /></a><br />
<a href="http://www.yinghai.org/wp-content/uploads/2010/03/IMG_0165.jpg"><img src="http://www.yinghai.org/wp-content/uploads/2010/03/IMG_0165-1024x768.jpg" alt="" title="IMG_0165" width="1024" height="768" class="alignnone size-large wp-image-465" /></a><br />
<a href="http://www.yinghai.org/wp-content/uploads/2010/03/IMG_0157.jpg"><img src="http://www.yinghai.org/wp-content/uploads/2010/03/IMG_0157-1024x768.jpg" alt="" title="IMG_0157" width="1024" height="768" class="alignnone size-large wp-image-465" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yinghai.org/?feed=rss2&amp;p=462</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>203 Routing in Rails 3</title>
		<link>http://www.yinghai.org/?p=411</link>
		<comments>http://www.yinghai.org/?p=411#comments</comments>
		<pubDate>Sat, 06 Mar 2010 05:20:03 +0000</pubDate>
		<dc:creator>yinghai</dc:creator>
				<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://www.yinghai.org/?p=411</guid>
		<description><![CDATA[203: Routing in Rails 3 (From asciicasts.com and Railscast ) Translated by Yinghai. Please contact zyinghai at gmail.com regarding this translation. 翻译的比较急，如有问题，请联系zyinghai at gmail.com 这一集我们继续研究Rails的新特性, 这次我们看一下Rails 3的路由. Rails 3提供了一些新的API和新的功能来定义路由. 为了更好的演示，我们先建立一个detour应用。 rails detour 建立好应用之后，我们可以打开config/routes.rb文件看一下. 默认的文件包含了一些演示新API的文档和例子，当你有空的时候，这些都值得一看。 我们先删掉自带的文档，换上老的格式，再来对比一下Rails 3新的用法。 /config/routes.rb Detour::Application.routes.draw do &#124;map&#124; &#160; map.resources :products, :member =&#62; &#123; :detailed =&#62; :get &#125; &#160; map.resources :forums, :collection =&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>203: Routing in Rails 3<br />
 (From <a href="http://asciicasts.com/episodes/203-routing-in-rails-3">asciicasts.com</a> and <a href="http://railscasts.com/episodes/203-routing-in-rails-3">Railscast</a> )<br />
<em>Translated by <a href="http://yinghai.org">Yinghai</a>. Please contact zyinghai at gmail.com regarding this translation.</em><br />
<em>翻译的比较急，如有问题，请联系zyinghai at gmail.com</em></p>
<p>这一集我们继续研究Rails的新特性, 这次我们看一下Rails 3的路由. Rails 3提供了一些新的API和新的功能来定义路由. 为了更好的演示，我们先建立一个detour应用。</p>
<div class="codecolorer-container ruby default" style="border: 1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">rails detour</div></div>
<p>建立好应用之后，我们可以打开config/routes.rb文件看一下. 默认的文件包含了一些演示新API的文档和例子，当你有空的时候，这些都值得一看。 我们先删掉自带的文档，换上老的格式，再来对比一下Rails 3新的用法。</p>
<p>/config/routes.rb</p>
<div class="codecolorer-container ruby default" style="border: 1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color:#6666ff; font-weight:bold;">Detour::Application</span>.<span style="color:#9900CC;">routes</span>.<span style="color:#9900CC;">draw</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>map<span style="color:#006600; font-weight:bold;">|</span><br />
&nbsp; map.<span style="color:#9900CC;">resources</span> <span style="color:#ff3333; font-weight:bold;">:products</span>, <span style="color:#ff3333; font-weight:bold;">:member</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#ff3333; font-weight:bold;">:detailed</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff3333; font-weight:bold;">:get</span> <span style="color:#006600; font-weight:bold;">&#125;</span><br />
&nbsp; map.<span style="color:#9900CC;">resources</span> <span style="color:#ff3333; font-weight:bold;">:forums</span>, <span style="color:#ff3333; font-weight:bold;">:collection</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#ff3333; font-weight:bold;">:sortable</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff3333; font-weight:bold;">:get</span>, <span style="color:#ff3333; font-weight:bold;">:sort</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff3333; font-weight:bold;">:put</span> <span style="color:#006600; font-weight:bold;">&#125;</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>forums<span style="color:#006600; font-weight:bold;">|</span><br />
&nbsp; &nbsp; &nbsp;forums.<span style="color:#9900CC;">resources</span> <span style="color:#ff3333; font-weight:bold;">:topics</span><br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />
<br />
&nbsp; map.<span style="color:#9900CC;">root</span> <span style="color:#ff3333; font-weight:bold;">:controller</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;home&quot;</span>, <span style="color:#ff3333; font-weight:bold;">:action</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;index&quot;</span><br />
<br />
&nbsp; map.<span style="color:#9900CC;">about</span> <span style="color:#996600;">&quot;/about&quot;</span>, <span style="color:#ff3333; font-weight:bold;">:controller</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;info&quot;</span>, <span style="color:#ff3333; font-weight:bold;">:action</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;about&quot;</span><br />
<span style="color:#9966CC; font-weight:bold;">end</span></div></div>
<p>以上是需要转化的老格式。</p>
<p>我们先从这一个开始：</p>
<div class="codecolorer-container ruby default" style="border: 1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">map.<span style="color:#9900CC;">resources</span> <span style="color:#ff3333; font-weight:bold;">:products</span>, <span style="color:#ff3333; font-weight:bold;">:member</span> = <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#ff3333; font-weight:bold;">:detailed</span> <span style="color:#006600; font-weight:bold;">=&gt;</span>:get <span style="color:#006600; font-weight:bold;">&#125;</span></div></div>
<p>这个路由有一个product资源，和一个叫做detailed的附加action,可以通过Get方法请求。</p>
<p>Rails 3第一个值得注意的改变，就是我们不再使用map对象，取而代之的是在routes.draw块里面直接调用resources。resources包括的:member和:collection 动作，可以通过一个块来定义， 上述的路由可以新格式是这样:</p>
<div class="codecolorer-container ruby default" style="border: 1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">resources <span style="color:#ff3333; font-weight:bold;">:products</span> <span style="color:#9966CC; font-weight:bold;">do</span><br />
&nbsp; get <span style="color:#ff3333; font-weight:bold;">:detailed</span>, <span style="color:#ff3333; font-weight:bold;">:on</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff3333; font-weight:bold;">:member</span><br />
<span style="color:#9966CC; font-weight:bold;">end</span></div></div>
<p>下面，我们来看以下更复杂的路由：</p>
<div class="codecolorer-container ruby default" style="border: 1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">map.<span style="color:#9900CC;">resources</span> <span style="color:#ff3333; font-weight:bold;">:forums</span>, <span style="color:#ff3333; font-weight:bold;">:collection</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#ff3333; font-weight:bold;">:sortable</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff3333; font-weight:bold;">:get</span>, <span style="color:#ff3333; font-weight:bold;">:sort</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff3333; font-weight:bold;">:put</span> <span style="color:#006600; font-weight:bold;">&#125;</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>forums<span style="color:#006600; font-weight:bold;">|</span><br />
&nbsp; forums.<span style="color:#9900CC;">resources</span> <span style="color:#ff3333; font-weight:bold;">:topics</span><br />
<span style="color:#9966CC; font-weight:bold;">end</span></div></div>
<p>这个路由，在forum资源里面，我们有两个额外的:collection动作，还有一个嵌套的Topic资源。新的API中，可以写成这样：</p>
<div class="codecolorer-container ruby default" style="border: 1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">resources <span style="color:#ff3333; font-weight:bold;">:forums</span> <span style="color:#9966CC; font-weight:bold;">do</span><br />
&nbsp; collection <span style="color:#9966CC; font-weight:bold;">do</span><br />
&nbsp; &nbsp; get <span style="color:#ff3333; font-weight:bold;">:sortable</span><br />
&nbsp; &nbsp; put <span style="color:#ff3333; font-weight:bold;">:sort</span><br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />
&nbsp; resources <span style="color:#ff3333; font-weight:bold;">:topics</span><br />
<span style="color:#9966CC; font-weight:bold;">end</span></div></div>
<p>以上代码在一次展示了取消map.resources,直接用resources块。我们有两个collection动作，尽管我们可以像第一个例子中detailed动作一样使用:on，但我们这里用collection块达到了同样的效果 (member动作也可以使用member块)。任何在这个块里面定义的路由，都会作用在forums的集合上。在我们的例子中，我们定义了两个，一个是GET方法的sortable和PUT方法的sort。</p>
<p>至于嵌套的topics资源，我们可以在forums的块里再次调用resources，起到嵌套的效果。</p>
<p>下一个路由，我们看一下怎么定义root的控制器和动作。</p>
<div class="codecolorer-container ruby default" style="border: 1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">map.<span style="color:#9900CC;">root</span> <span style="color:#ff3333; font-weight:bold;">:controller</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;home&quot;</span>, <span style="color:#ff3333; font-weight:bold;">:action</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;index&quot;</span></div></div>
<p>这里，我们可以直接调用root，用:to来定义要转到的动作，控制器跟动作之间，可以用#来区隔。</p>
<div class="codecolorer-container ruby default" style="border: 1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">root <span style="color:#ff3333; font-weight:bold;">:to</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;home#index&quot;</span></div></div>
<p>用一个#分隔的字符串来定义控制器跟动作，是Rails 3的新特性之一。我们可以用类似的格式来定义named路由。</p>
<div class="codecolorer-container ruby default" style="border: 1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">map.<span style="color:#9900CC;">about</span> <span style="color:#996600;">&quot;/about&quot;</span>, <span style="color:#ff3333; font-weight:bold;">:controller</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;info&quot;</span>, <span style="color:#ff3333; font-weight:bold;">:action</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;about&quot;</span></div></div>
<p>Rails 3中改写成这样：</p>
<div class="codecolorer-container ruby default" style="border: 1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">match <span style="color:#996600;">&quot;/about&quot;</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;info#about&quot;</span>, <span style="color:#ff3333; font-weight:bold;">:as</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff3333; font-weight:bold;">:about</span></div></div>
<p>没有:as参数，这个路由就是单纯的转向&#8221;/about&#8221;, 加了:as 之后，在我们的应用里面可以使用about_path或者about_url。</p>
<p>新功能</p>
<p>从上面的例子可以看出，只需要微小的改动，就可以从老的API转化到新的API，但是真正吸引人的是新API提供的一些新功能，下面我们来看其中的一部分。</p>
<p>可选参数</p>
<p>前一个版本就已经有对可选参数的支持，但是用法比较麻烦，下面我们来看一下Rails 3中怎么使用。</p>
<p>我们建立一个info控制器和about动作来展示可选参数。Rails 3支持用rails g来作为rails generate的快捷方式。</p>
<div class="codecolorer-container ruby default" style="border: 1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">rails g controller info about</div></div>
<p>我们可以用rails s快捷方式来启动服务器</p>
<div class="codecolorer-container ruby default" style="border: 1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">rails s</div></div>
<p>现在我们打开http://localhost:3000/about, 我们会转到之前已经在路由配制文件里面定义的info#about动作。<br />
<img src="http://asciicasts.com/system/photos/332/original/E203I01.png" alt="" /></p>
<p>假设我们下一步想要添加对pdf格式的支持，可是现在打开http://localhost:3000/about.pdf的话，我们会看到一个路由错误，提示没有定义路由。<br />
在路由文件里，我们可以添加一个format参数。</p>
<div class="codecolorer-container ruby default" style="border: 1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">match <span style="color:#996600;">&quot;/about.:format&quot;</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;info#about&quot;</span>, <span style="color:#ff3333; font-weight:bold;">:as</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff3333; font-weight:bold;">:about</span></div></div>
<p>如果我们刷新页面，这次会得到应用找不到template错误。<br />
<img src="http://asciicasts.com/system/photos/333/original/E203I02.png" alt="" /></p>
<p>我们已经解决了之前的问题，但是format参数不是可选参数，如果我们返回之前没有.pdf后缀的页面，我们会遇到路由错误，我们可以做简单的改动，只需用括号括起来，就可以让format变为可选参数。</p>
<div class="codecolorer-container ruby default" style="border: 1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">match <span style="color:#996600;">&quot;/about(.:format)&quot;</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;info#about&quot;</span>, <span style="color:#ff3333; font-weight:bold;">:as</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff3333; font-weight:bold;">:about</span></div></div>
<p>然后我们可以正常的打开http://localhost:3000/about 或者 http://localhost:3000/about.pdf。</p>
<p>下面，我们来看一下怎么使用更为复杂的可选参数，例如，我们现在有一个博客应用，我们想要在网址中，用可选的年月日来过滤一段特定时间的贴子。<br />
我们可以用下面的路由达到这个效果，主义括号可以嵌套起来定义多个可选参数。</p>
<div class="codecolorer-container ruby default" style="border: 1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">match <span style="color:#996600;">&quot;/:year(/:month(/:day))&quot;</span> =<span style="color:#006600; font-weight:bold;">&amp;</span>gt; <span style="color:#996600;">&quot;info#about&quot;</span></div></div>
<p>在view中，我们添加一些调试信息，来检查传入的参数：</p>
<p>/app/views/info/about.html.erb</p>
<div class="codecolorer-container html4strict default" style="border: 1px solid #9F9F9F;width:435px;"><div class="html4strict codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/h1.html"><span style="color: #000000; font-weight: bold;">h1</span></a>&gt;</span>Info#about<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/h1.html"><span style="color: #000000; font-weight: bold;">h1</span></a>&gt;</span><br />
Find me in app/views/info/about.html.erb<br />
<span style="color: #009900;">&lt;%<span style="color: #66cc66;">=</span> debug params %&gt;</span></div></div>
<p>下面，如果我们传入year参数，about动作会收到我们传入的值，month和day参数也是如此。<br />
<img src="http://asciicasts.com/system/photos/334/original/E203I03.png" alt="" /></p>
<p>这个路由是比较宽泛的，如果我们传入，例如http://localhost:3000/foo/bar，这样的参数也会被传到控制器，很显然，想要符合日期规范的参数，我们可以用constrains来达到这样的目的。</p>
<p>Constraints<br />
Constraints 就是Rails 2中的requirements.  :constraints可以传入一个hash来限定匹配。以下的例子用四个数字来限定年，两个数字来限定月和日。</p>
<div class="codecolorer-container ruby default" style="border: 1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">match <span style="color:#996600;">&quot;/:year(/:month(/:day))&quot;</span> =<span style="color:#006600; font-weight:bold;">&amp;</span>gt; <span style="color:#996600;">&quot;info#about&quot;</span>, <span style="color:#ff3333; font-weight:bold;">:constraints</span> =<span style="color:#006600; font-weight:bold;">&amp;</span>gt; <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#ff3333; font-weight:bold;">:year</span> =<span style="color:#006600; font-weight:bold;">&amp;</span>gt; <span style="color:#006600; font-weight:bold;">/</span>\d<span style="color:#006600; font-weight:bold;">&#123;</span>4<span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">/</span>, <span style="color:#ff3333; font-weight:bold;">:month</span> =<span style="color:#006600; font-weight:bold;">&amp;</span>gt; <span style="color:#006600; font-weight:bold;">/</span>\d<span style="color:#006600; font-weight:bold;">&#123;</span>2<span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">/</span>, <span style="color:#ff3333; font-weight:bold;">:day</span> =<span style="color:#006600; font-weight:bold;">&amp;</span>gt; <span style="color:#006600; font-weight:bold;">/</span>\d<span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006666;">2</span><span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">/</span> <span style="color:#006600; font-weight:bold;">&#125;</span></div></div>
<p>添加了这个constraint之后，我们再看一下/foo/bar路径，这次我们得到了一个无法匹配的错误。<br />
<img src="http://asciicasts.com/system/photos/335/original/E203I04.png" alt="" /></p>
<p>我们现在做的，Rails 2的requirements都可以做到。但是Rails 3的Constraint更加强大。<br />
例如，我们可以用user_agent参数来限制一些浏览器的访问，以Firefox为例。</p>
<div class="codecolorer-container ruby default" style="border: 1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">match <span style="color:#996600;">&quot;/secret&quot;</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;info#about&quot;</span>, <span style="color:#ff3333; font-weight:bold;">:constraints</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#ff3333; font-weight:bold;">:user_agent</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">/</span>Firefox<span style="color:#006600; font-weight:bold;">/</span> <span style="color:#006600; font-weight:bold;">&#125;</span></div></div>
<p>如果我们用Safari, Chrome或者Opera访问页面，我们会看到一个匹配错误。但是Firefox可以正常浏览。<br />
<img src="http://asciicasts.com/system/photos/336/original/E203I05.png" alt="" /></p>
<p>我们也可以添加一些更有用处的constraint比如主机名。</p>
<div class="codecolorer-container ruby default" style="border: 1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">match <span style="color:#996600;">&quot;/secret&quot;</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;info#about&quot;</span>, <span style="color:#ff3333; font-weight:bold;">:constraints</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#ff3333; font-weight:bold;">:host</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">/</span>localhost<span style="color:#006600; font-weight:bold;">/</span> <span style="color:#006600; font-weight:bold;">&#125;</span></div></div>
<p>使用这个constraint，我们可以通过http://localhost:3000/secret来浏览网页，但是用ip地址将会返回错误( http://127.0.0.1/secret )，其实两个地址本质上都是一样的。这个功能可以用来限制某些二级域名的访问，目前这一部分还在开发中，在以后的版本中，constraint可以传入:subdomain参数。</p>
<p>如果我们有多个路由同时使用一个constraint，会造成很多代码的重复。我们可以用constraints方法把这些路由放到一个块中来降低代码重复。</p>
<div class="codecolorer-container ruby default" style="border: 1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">constraints <span style="color:#ff3333; font-weight:bold;">:host</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">/</span>localhost<span style="color:#006600; font-weight:bold;">/</span> <span style="color:#9966CC; font-weight:bold;">do</span><br />
&nbsp; match <span style="color:#996600;">&quot;/secret&quot;</span> <span style="color:#006600; font-weight:bold;">=&gt;</span>; <span style="color:#996600;">&quot;info#about&quot;</span><br />
&nbsp; match <span style="color:#996600;">&quot;/topsecret&quot;</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;info#about&quot;</span><br />
<span style="color:#9966CC; font-weight:bold;">end</span></div></div>
<p>还有很多constraint的高级功能，就不在这里一一赘述了。</p>
<p>Rack路由</p>
<p>因为时间的关系，我们没办法涵盖所有Rails3的路由改进，我们会在未来的视频里慢慢接触。 我今天想介绍的最后一个功能，是Rails 3路由与Rack的集成。<br />
通常我们将地址匹配到一个控制器和动作，但是我们也可以匹配给一个Rack应用，这是一个非常强大的功能，我用一个简单的Rack应用来展示这个功能。</p>
<div class="codecolorer-container ruby default" style="border: 1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">match <span style="color:#996600;">&quot;/hello&quot;</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#CC0066; font-weight:bold;">proc</span> <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#006600; font-weight:bold;">|</span>env<span style="color:#006600; font-weight:bold;">|</span> <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">200</span>, <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">&#125;</span>, <span style="color:#996600;">&quot;Hello Rack!&quot;</span><span style="color:#006600; font-weight:bold;">&#93;</span> <span style="color:#006600; font-weight:bold;">&#125;</span></div></div>
<p>如果你不是很熟悉Rack，可以看一下第151集视频，我们上面代码就是返回HTTP成功代码，和很简单的内容。</p>
<p>我们访问 /hello 就可以看到“Hello Rack!，以此我们可以看出Rack工作正常并响应请求.你可以用这个强大的功能将路由转到不同的应用。比如可以将路由匹配到Sinatra应用。<br />
<img src="http://asciicasts.com/system/photos/337/original/E203I06.png" alt="" /></p>
<p>Rails 3的路由功能带来了很多令人振奋的可能性，尽管今天我们只是大体地介绍了一下，以后我们会详细的介绍一些具体用法。</p>
<p>如果你需要更多Rails 3的路由信息，可以参考Yehuda Katz的博客和RailsGuides.</p>
<p>Please contact zyinghai at gmail.com regarding this translation.<br />
<em>翻译的比较急，如有问题，请联系zyinghai at gmail.com</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yinghai.org/?feed=rss2&amp;p=411</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Dreamhost部署 Ruby on Rails</title>
		<link>http://www.yinghai.org/?p=407</link>
		<comments>http://www.yinghai.org/?p=407#comments</comments>
		<pubDate>Sun, 24 Jan 2010 07:52:59 +0000</pubDate>
		<dc:creator>yinghai</dc:creator>
				<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://www.yinghai.org/?p=407</guid>
		<description><![CDATA[建好数据库，用git在dreamhost账号里面clone一个项目目录。 然后添加域名，目录指向public子目录。 钩上ROR选项后，点fully host domain。 不幸的是，启动总有问题。 于是我做了下面几件事情。 1 把rails 2.3.5 冷冻进项目目录 rake rails:freeze:gems 2 设置数据库 database.yml production: adapter: mysql encoding: utf8 database: waimai_hailizi host: mysql.*******.net username: ******** password: ************ 3 建立数据库表 rake &#8211;trace db:migrate RAILS_ENV=production 4 配制环境 config/environment.rb RAILS_GEM_VERSION = &#8217;2.3.5&#8242; unless defined? RAILS_GEM_VERSION ENV['RAILS_ENV']=&#8217;production&#8217; if ENV['RAILS_ENV'] == &#8216;production&#8217; # don&#8217;t bother on dev ENV['GEM_PATH'] [...]]]></description>
			<content:encoded><![CDATA[<p>建好数据库，用git在dreamhost账号里面clone一个项目目录。<br />
然后添加域名，目录指向public子目录。<br />
钩上ROR选项后，点fully host domain。</p>
<p>不幸的是，启动总有问题。<br />
于是我做了下面几件事情。</p>
<p>1 把rails 2.3.5 冷冻进项目目录<br />
rake rails:freeze:gems</p>
<p>2 设置数据库<br />
database.yml<br />
    production:<br />
    adapter: mysql<br />
    encoding: utf8<br />
    database: waimai_hailizi<br />
    host: mysql.*******.net<br />
    username: ********<br />
    password: ************</p>
<p>3 建立数据库表<br />
rake &#8211;trace db:migrate RAILS_ENV=production</p>
<p>4 配制环境  config/environment.rb<br />
RAILS_GEM_VERSION = &#8217;2.3.5&#8242; unless defined? RAILS_GEM_VERSION<br />
ENV['RAILS_ENV']=&#8217;production&#8217;</p>
<p>if ENV['RAILS_ENV'] == &#8216;production&#8217;  # don&#8217;t bother on dev<br />
  ENV['GEM_PATH'] = &#8216;/home/$HOME/.gems&#8217; + &#8216;:/usr/lib/ruby/gems/1.8&#8242;<br />
end</p>
<p>5 设置gem的安装目录，以及<br />
export PATH=&#8221;$HOME/.packages/bin:$HOME/.gems/bin:${PATH}&#8221;<br />
export GEM_HOME=$HOME/.gems<br />
export GEM_PATH=&#8221;$GEM_HOME:/usr/lib/ruby/gems/1.8&#8243; </p>
<p>参考<a href="http://www.nateclark.com/articles/2006/10/20/dreamhost-your-own-packages-and-gems">这里</a></p>
<p>6 安装所需要的gem<br />
gem install formtastic</p>
<p>7将gem也冷冻到项目目录里<br />
rake gems:unpack</p>
<p>8 重启服务<br />
touch tmp/restart.txt</p>
<p>然后竟然神奇可以用了。。YAY~~</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yinghai.org/?feed=rss2&amp;p=407</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu 9.10</title>
		<link>http://www.yinghai.org/?p=399</link>
		<comments>http://www.yinghai.org/?p=399#comments</comments>
		<pubDate>Fri, 20 Nov 2009 03:26:14 +0000</pubDate>
		<dc:creator>yinghai</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.yinghai.org/?p=399</guid>
		<description><![CDATA[D-Link DWA 140: Add blacklist rt2800usb to /etc/modprobe.d/blacklist.conf Compiz: apt-get install compizconfig-settings-manager Terminus: apt-get install xfonts-terminus Extras: sudo apt-get install ubuntu-restricted-extras 英文环境中文配置： cd /etc/fonts/conf.d/ sudo ln -s /etc/fonts/conf.avail/69-language-selector-zh-cn.conf sudo ln -s /etc/fonts/conf.avail/99-language-selector-zh.conf]]></description>
			<content:encoded><![CDATA[<p>D-Link DWA 140:<br />
Add blacklist rt2800usb to /etc/modprobe.d/blacklist.conf</p>
<p>Compiz:<br />
apt-get install compizconfig-settings-manager</p>
<p>Terminus:<br />
apt-get install xfonts-terminus</p>
<p>Extras:<br />
sudo apt-get install ubuntu-restricted-extras</p>
<p>英文环境中文配置：<br />
cd /etc/fonts/conf.d/<br />
sudo ln -s /etc/fonts/conf.avail/69-language-selector-zh-cn.conf<br />
sudo ln -s /etc/fonts/conf.avail/99-language-selector-zh.conf</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yinghai.org/?feed=rss2&amp;p=399</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>两年多</title>
		<link>http://www.yinghai.org/?p=390</link>
		<comments>http://www.yinghai.org/?p=390#comments</comments>
		<pubDate>Tue, 11 Aug 2009 20:06:12 +0000</pubDate>
		<dc:creator>yinghai</dc:creator>
				<category><![CDATA[随便写写]]></category>

		<guid isPermaLink="false">http://www.yinghai.org/?p=390</guid>
		<description><![CDATA[自从07年不写东西到现在，已经过了两年多了： 两年前，我可以四舍到20来岁的，两年后，我只能五入到30来岁。 两年前，我还是无忧无虑的大学生，两年后，我成了终日碌碌的工薪族。 两年前，我有加拿大的暂住证，两年后，我拿了加拿大的户口本。 两年前，是独行，两年后，是人夫。]]></description>
			<content:encoded><![CDATA[<p>自从07年不写东西到现在，已经过了两年多了：<br />
两年前，我可以四舍到20来岁的，两年后，我只能五入到30来岁。<br />
两年前，我还是无忧无虑的大学生，两年后，我成了终日碌碌的工薪族。<br />
两年前，我有加拿大的暂住证，两年后，我拿了加拿大的户口本。</p>
<p>两年前，是独行，两年后，是人夫。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yinghai.org/?feed=rss2&amp;p=390</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>我开的不是Yinghai.Org, 是寂寞</title>
		<link>http://www.yinghai.org/?p=7</link>
		<comments>http://www.yinghai.org/?p=7#comments</comments>
		<pubDate>Thu, 06 Aug 2009 18:06:29 +0000</pubDate>
		<dc:creator>yinghai</dc:creator>
				<category><![CDATA[随便写写]]></category>
		<category><![CDATA[yinghai.org]]></category>

		<guid isPermaLink="false">http://www.yinghai.org/?p=7</guid>
		<description><![CDATA[&#8220;哥们,你抽得不是烟,是寂寞&#8221; 不知道从什么时候,网络开始流行这句话.山寨版应声而起, &#8220;你X的不是XX，你X的是寂寞&#8221; 我也山寨一下流行的话吧。 Yinghai.Org其实4，5年前就被我买了，用WordPress, 断断续续的码字，也写了不少东西。 那个时候想写一个自己的blog程序，于是关了网站，自己闷头闭门造车。 东拉西扯的学了不少新东西，各种语言，技巧，构架，库。。。 从头开始做了一个，觉得不好，有用Liferay构建了一个，又觉得受制于平台。 两年过去了，自己还没用上自己写的blog。 原因很简单，就算我是诸葛亮，也比不过WordPress得千千万万个臭屁匠。 何况我自己本身是臭屁匠，开源社区人人都是诸葛亮。 虽然在这个过程中，学到了不少东西， 可是回头一看，WP已经长足发展。 于是长叹，我写得不是程序，是寂寞。。。 Yinghai.Org重新开了，转了一大圈，还是用的WP. 希望新朋友老朋友还能常来看看。 注：当然，我不寂寞，老婆一直闹着让我写她，一点都不寂寞。]]></description>
			<content:encoded><![CDATA[<p>&#8220;哥们,你抽得不是烟,是寂寞&#8221;</p>
<p>不知道从什么时候,网络开始流行这句话.山寨版应声而起, &#8220;你X的不是XX，你X的是寂寞&#8221;</p>
<p>我也山寨一下流行的话吧。</p>
<p>Yinghai.Org其实4，5年前就被我买了，用WordPress, 断断续续的码字，也写了不少东西。</p>
<p>那个时候想写一个自己的blog程序，于是关了网站，自己闷头闭门造车。</p>
<p>东拉西扯的学了不少新东西，各种语言，技巧，构架，库。。。</p>
<p>从头开始做了一个，觉得不好，有用Liferay构建了一个，又觉得受制于平台。</p>
<p>两年过去了，自己还没用上自己写的blog。</p>
<p>原因很简单，就算我是诸葛亮，也比不过WordPress得千千万万个臭屁匠。</p>
<p>何况我自己本身是臭屁匠，开源社区人人都是诸葛亮。</p>
<p>虽然在这个过程中，学到了不少东西，</p>
<p>可是回头一看，WP已经长足发展。</p>
<p>于是长叹，我写得不是程序，是寂寞。。。</p>
<p><a href="http://Yinghai.Org">Yinghai.Org</a>重新开了，转了一大圈，还是用的WP.</p>
<p>希望新朋友老朋友还能常来看看。</p>
<p>注：当然，我不寂寞，老婆一直闹着让我写她，一点都不寂寞。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yinghai.org/?feed=rss2&amp;p=7</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>20年最强对话</title>
		<link>http://www.yinghai.org/?p=245</link>
		<comments>http://www.yinghai.org/?p=245#comments</comments>
		<pubDate>Tue, 05 Jun 2007 05:24:00 +0000</pubDate>
		<dc:creator>yinghai</dc:creator>
				<category><![CDATA[随便写写]]></category>

		<guid isPermaLink="false">http://www.yinghai.org/index.php?load=read&amp;id=341</guid>
		<description><![CDATA[2007，史蒂夫乔布斯和比尔盖茨的对话。]]></description>
			<content:encoded><![CDATA[<p>2007，史蒂夫乔布斯和比尔盖茨的对话。<br /><span id="more-245"></span><embed src="http://services.brightcove.com/services/viewer/federated_f8/452319854" bgcolor="#FFFFFF" flashVars="videoId=932485430&#038;playerId=452319854&#038;viewerSecureGatewayURL=https://services.brightcove.com/services/amfgateway&#038;servicesURL=http://services.brightcove.com/services&#038;cdnURL=http://admin.brightcove.com&#038;domain=embed&#038;autoStart=false&#038;" base="http://admin.brightcove.com" name="flashObj" width="486" height="412" seamlesstabbing="false" type="application/x-shockwave-flash" swLiveConnect="true" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed><embed src="http://services.brightcove.com/services/viewer/federated_f8/452319854" bgcolor="#FFFFFF" flashVars="videoId=958475626&#038;playerId=452319854&#038;viewerSecureGatewayURL=https://services.brightcove.com/services/amfgateway&#038;servicesURL=http://services.brightcove.com/services&#038;cdnURL=http://admin.brightcove.com&#038;domain=embed&#038;autoStart=false&#038;" base="http://admin.brightcove.com" name="flashObj" width="486" height="412" seamlesstabbing="false" type="application/x-shockwave-flash" swLiveConnect="true" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed><embed src="http://services.brightcove.com/services/viewer/federated_f8/452319854" bgcolor="#FFFFFF" flashVars="videoId=958764703&#038;playerId=452319854&#038;viewerSecureGatewayURL=https://services.brightcove.com/services/amfgateway&#038;servicesURL=http://services.brightcove.com/services&#038;cdnURL=http://admin.brightcove.com&#038;domain=embed&#038;autoStart=false&#038;" base="http://admin.brightcove.com" name="flashObj" width="486" height="412" seamlesstabbing="false" type="application/x-shockwave-flash" swLiveConnect="true" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed><embed src="http://services.brightcove.com/services/viewer/federated_f8/452319854" bgcolor="#FFFFFF" flashVars="videoId=958571821&#038;playerId=452319854&#038;viewerSecureGatewayURL=https://services.brightcove.com/services/amfgateway&#038;servicesURL=http://services.brightcove.com/services&#038;cdnURL=http://admin.brightcove.com&#038;domain=embed&#038;autoStart=false&#038;" base="http://admin.brightcove.com" name="flashObj" width="486" height="412" seamlesstabbing="false" type="application/x-shockwave-flash" swLiveConnect="true" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed><embed src="http://services.brightcove.com/services/viewer/federated_f8/452319854" bgcolor="#FFFFFF" flashVars="videoId=958522224&#038;playerId=452319854&#038;viewerSecureGatewayURL=https://services.brightcove.com/services/amfgateway&#038;servicesURL=http://services.brightcove.com/services&#038;cdnURL=http://admin.brightcove.com&#038;domain=embed&#038;autoStart=false&#038;" base="http://admin.brightcove.com" name="flashObj" width="486" height="412" seamlesstabbing="false" type="application/x-shockwave-flash" swLiveConnect="true" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed><embed src="http://services.brightcove.com/services/viewer/federated_f8/452319854" bgcolor="#FFFFFF" flashVars="videoId=958522225&#038;playerId=452319854&#038;viewerSecureGatewayURL=https://services.brightcove.com/services/amfgateway&#038;servicesURL=http://services.brightcove.com/services&#038;cdnURL=http://admin.brightcove.com&#038;domain=embed&#038;autoStart=false&#038;" base="http://admin.brightcove.com" name="flashObj" width="486" height="412" seamlesstabbing="false" type="application/x-shockwave-flash" swLiveConnect="true" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed><embed src="http://services.brightcove.com/services/viewer/federated_f8/452319854" bgcolor="#FFFFFF" flashVars="videoId=958673023&#038;playerId=452319854&#038;viewerSecureGatewayURL=https://services.brightcove.com/services/amfgateway&#038;servicesURL=http://services.brightcove.com/services&#038;cdnURL=http://admin.brightcove.com&#038;domain=embed&#038;autoStart=false&#038;" base="http://admin.brightcove.com" name="flashObj" width="486" height="412" seamlesstabbing="false" type="application/x-shockwave-flash" swLiveConnect="true" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed><embed src="http://services.brightcove.com/services/viewer/federated_f8/452319854" bgcolor="#FFFFFF" flashVars="videoId=958541762&#038;playerId=452319854&#038;viewerSecureGatewayURL=https://services.brightcove.com/services/amfgateway&#038;servicesURL=http://services.brightcove.com/services&#038;cdnURL=http://admin.brightcove.com&#038;domain=embed&#038;autoStart=false&#038;" base="http://admin.brightcove.com" name="flashObj" width="486" height="412" seamlesstabbing="false" type="application/x-shockwave-flash" swLiveConnect="true" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed><embed src="http://services.brightcove.com/services/viewer/federated_f8/452319854" bgcolor="#FFFFFF" flashVars="videoId=958634947&#038;playerId=452319854&#038;viewerSecureGatewayURL=https://services.brightcove.com/services/amfgateway&#038;servicesURL=http://services.brightcove.com/services&#038;cdnURL=http://admin.brightcove.com&#038;domain=embed&#038;autoStart=false&#038;" base="http://admin.brightcove.com" name="flashObj" width="486" height="412" seamlesstabbing="false" type="application/x-shockwave-flash" swLiveConnect="true" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed><!--more--><!--more--></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yinghai.org/?feed=rss2&amp;p=245</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu下播放rmvb等</title>
		<link>http://www.yinghai.org/?p=246</link>
		<comments>http://www.yinghai.org/?p=246#comments</comments>
		<pubDate>Sun, 03 Jun 2007 08:15:00 +0000</pubDate>
		<dc:creator>yinghai</dc:creator>
				<category><![CDATA[随便写写]]></category>

		<guid isPermaLink="false">http://www.yinghai.org/index.php?load=read&amp;id=340</guid>
		<description><![CDATA[这里 关于Resitricted Format还有这里&#160; 关于Medibuntu的 然后卸掉原装的Totem,安装Totem-xine就可以了]]></description>
			<content:encoded><![CDATA[<p><a href="https://help.ubuntu.com/community/RestrictedFormats">这里 关于Resitricted Format</a><br />还有<br /><a href="https://help.ubuntu.com/community/Medibuntu">这里&nbsp; 关于Medibuntu的</a></p>
<p>然后卸掉原装的Totem,安装Totem-xine<br />就可以了</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yinghai.org/?feed=rss2&amp;p=246</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>昨天梦的题目</title>
		<link>http://www.yinghai.org/?p=249</link>
		<comments>http://www.yinghai.org/?p=249#comments</comments>
		<pubDate>Wed, 09 May 2007 16:49:00 +0000</pubDate>
		<dc:creator>yinghai</dc:creator>
				<category><![CDATA[随便写写]]></category>

		<guid isPermaLink="false">http://www.yinghai.org/index.php?load=read&amp;id=337</guid>
		<description><![CDATA[昨天梦的题目是。陈XX适合当高中老师嘛？陈XX是初中老师，初中我有两个陈老师，这里说的是教语文的陈XX老师她教语文有自己独特的一套办法，我到现在的初中语文书被别人看到都会惊叹。因为每一页都满满的字，课文每一行与每一行之间都写满了字。可后问答题的答案，什么本文反映了什么中心思想啥的。他都念给我们，然后一屋子80多个人齐刷刷的抄在空白的地方。古文就更严重了，每个字都解释的清清楚楚。优点就是，考试的时候一本书，背去吧。前两天，一人问我，岸芷汀兰里的芷什么意思，我不假思索就说出自初中学过的岳阳楼记，然后芷是一种香草。除了感叹自己记忆里超群之外，想得跟更多的是当时陈老师惩罚记学生的名言，或者口头禅谁抄下来的东西记不住，就会被勒令：写检查，家长签署50字意见。。当时难为了多少无语的家长阿。。 昨天梦到了陈老师跟初中同学，一起被搬到高中去了。运行状况不良，于是觉得陈老师不适合教高中。当然了，陈老师恐怕早已退休了。]]></description>
			<content:encoded><![CDATA[<p>昨天梦的题目是。<br />陈XX适合当高中老师嘛？<br />陈XX是初中老师，初中我有两个陈老师，这里说的是教语文的陈XX老师<br />她教语文有自己独特的一套办法，我到现在的初中语文书被别人看到都会惊叹。<br />因为每一页都满满的字，课文每一行与每一行之间都写满了字。<br />可后问答题的答案，什么本文反映了什么中心思想啥的。<br />他都念给我们，然后一屋子80多个人齐刷刷的抄在空白的地方。<br />古文就更严重了，每个字都解释的清清楚楚。<br />优点就是，考试的时候一本书，背去吧。<br />前两天，一人问我，岸芷汀兰里的芷什么意思，<br />我不假思索就说出自初中学过的岳阳楼记，然后芷是一种香草。<br />除了感叹自己记忆里超群之外，<br />想得跟更多的是当时陈老师惩罚记学生的名言，或者口头禅<br />谁抄下来的东西记不住，就会被勒令：<br />写检查，家长签署50字意见。。<br />当时难为了多少无语的家长阿。。</p>
<p>昨天梦到了陈老师跟初中同学，一起被搬到高中去了。<br />运行状况不良，于是觉得陈老师不适合教高中。<br />当然了，陈老师恐怕早已退休了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yinghai.org/?feed=rss2&amp;p=249</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>郑园结和我[2]</title>
		<link>http://www.yinghai.org/?p=251</link>
		<comments>http://www.yinghai.org/?p=251#comments</comments>
		<pubDate>Sat, 05 May 2007 07:02:00 +0000</pubDate>
		<dc:creator>yinghai</dc:creator>
				<category><![CDATA[随便写写]]></category>

		<guid isPermaLink="false">http://www.yinghai.org/index.php?load=read&amp;id=335</guid>
		<description><![CDATA[小的时候无论家长还是老师还是读物，都鼓励孩子多问问为什么，我也因此拥有过一套10万个为什么，但是小孩子的问题，无外乎水开了为什么能把盖子顶开，苹果为什么落在地上之类。再严重点就是问问我是从哪里来的阿，为什么要去垃圾箱捡我阿之类的。人长大了，明白了水蒸气，万有引力，明白了人是怎么来的，问为什么反而相对少了。我觉得，人思想成熟了，能独立思考了，才是最需要问为什么的时候，不然活着就有了惯性思维，思维的定式让人有时候不能一下子接受某些东西。除非全世界80%的人都认同某种观点了，他也能接受了，不过与其说接受，不如说新的思维定式又形成了。 我妈有的时候对待某些问题就有这样的定式，当然她大部分时候都很好，不然也不能当斑竹这么新潮的东西。说她有定式，是因为我以前受到郑渊洁跟比尔盖茨影响说我不想上学的时候，她的每次反应都一样，先是眉头一皱，然后像得知混世魔王降临般的啊一声，然后开始愁眉苦脸的念叨，不上学怎么行啊，不上学以后怎么办啊，不上学干吗去阿，云云。。后来我我上大学了，也听过她类似的语气说别人，不上大学以后怎么办啊，不工作以后怎么办啊。。之类我承认每个父母都是疼爱自己的孩子，希望自己孩子好的，我妈妈也跟大多数妈妈一样。虽然有某种定式，但始终都是那个善意的出发点。 郑渊洁跟一般父母不一样，他自己没上完小学，后来也没有他儿子上。他自己不上，是因为他调皮捣蛋，老师让写早起的鸟儿有虫吃的作文，多么正常的作文题目阿，教育孩子要勤劳早起，这样才能有吃的，多么朴素的观点阿。可郑渊洁非要多此一举的想一想自己是虫还是鸟，很不幸他选择做虫，于是写作文呼吁，早起的虫子有危险。受了老师批评也就算了，他偏不服，又没有能力反抗，于是在课桌洞里放了个鞭炮，被开了。他爸陪他拿着检查找了不知道多少次老师校长，就是不要他，于是他爸爸只好开始自己教他了。 他儿子不上，也是因为他。他觉得作业跟考试成绩是着世界上最不重要的事情，所以经常帮他儿子做作业，有一天，他发现以他童话大王的想象力写的作文，竟被老师打个红叉退回来重写。他想为什么他代写的作文会被退回来，为什么要每个孩子都写一样的老三段，为什么孩子要这么教呢，万一他儿子要是有点想象力，长期受这样的限制，慢慢不也就没了吗，不也就跟别人一样，有思维定式了吗。为了寻求这些为什么的答案，他买了初中到高中所有的课本跟教参，从头到尾的看了两边，发现的确有方法和内容上的各种不当和缺失。于是自己以童话的方式，重写了这些教科书，作文课是舒克给你一枝神来笔，有五角飞碟折腾数理化世界，还有性知识课本，你从哪里来我的朋友。给我感触最深的是他写了皮皮鲁和419宗罪，把中国刑法419条刑事犯罪用儿童可以接受的语言写出来，还写上给儿子的寄语，儿子：老爸希望你在人生的道路上远离这419宗罪。现在的孩子多么缺少这方面的知识阿，我上小学上初中的时候，校园简直就是江湖，一个家里有钱的同学有天下午是被人脱走李宁只穿裤衩来学校的，法律的意识，可以让坏学生收敛，让好学生知道怎么保护自己。更是构建法制社会和谐社会的起点。可惜就是硬硬的缺失了。。 当然了，不是所有的人都能有郑渊洁这样的能力跟精力教育自己的孩子。鲁豫也说他的教育方法不适合所有的人，我妈也能列举不让孩子接触别的孩子的一大堆缺点。我觉得，是重点放错了，研讨郑渊洁对不对，孩子该不该上学，不上学好不好，意义都不大。试想假如学校教的让郑渊洁满意了，他还会自己教儿子吗。我身体中作为愤青的那部分细胞觉得，我要是处于郑渊洁的位置，一定要上蹿下跳的求索，改变这个世界，把孩子解脱出来。虽然郑渊洁比愤青的我自私，只照顾自己的孩子了，但是愤青的我比郑渊洁愚蠢，求索有结果了，孩子都老了。 以后我自己的孩子，我还是会把他送去学校吧，毕竟早恋阿什么的这种机会转瞬即逝的。不过我的孩子要给我说不想上学了的时候，我一定天上地下问一圈为什么。然后再像得知混世魔王降临般的啊一声。 全文完]]></description>
			<content:encoded><![CDATA[<p>小的时候无论家长还是老师还是读物，都鼓励孩子多问问为什么，我也因此拥有过一套10万个为什么，<br />但是小孩子的问题，无外乎水开了为什么能把盖子顶开，苹果为什么落在地上之类。<br />再严重点就是问问我是从哪里来的阿，为什么要去垃圾箱捡我阿之类的。<br />人长大了，明白了水蒸气，万有引力，明白了人是怎么来的，问为什么反而相对少了。<br />我觉得，人思想成熟了，能独立思考了，才是最需要问为什么的时候，<br />不然活着就有了惯性思维，思维的定式让人有时候不能一下子接受某些东西。<br />除非全世界80%的人都认同某种观点了，他也能接受了，不过与其说接受，不如说新的思维定式又形成了。</p>
<p>我妈有的时候对待某些问题就有这样的定式，当然她大部分时候都很好，不然也不能当斑竹这么新潮的东西。<br />说她有定式，是因为我以前受到郑渊洁跟比尔盖茨影响说我不想上学的时候，<br />她的每次反应都一样，先是眉头一皱，然后像得知混世魔王降临般的啊一声，<br />然后开始愁眉苦脸的念叨，不上学怎么行啊，不上学以后怎么办啊，不上学干吗去阿，云云。。<br />后来我我上大学了，也听过她类似的语气说别人，不上大学以后怎么办啊，不工作以后怎么办啊。。之类<br />我承认每个父母都是疼爱自己的孩子，希望自己孩子好的，我妈妈也跟大多数妈妈一样。<br />虽然有某种定式，但始终都是那个善意的出发点。</p>
<p>郑渊洁跟一般父母不一样，他自己没上完小学，后来也没有他儿子上。<br />他自己不上，是因为他调皮捣蛋，老师让写早起的鸟儿有虫吃的作文，<br />多么正常的作文题目阿，教育孩子要勤劳早起，这样才能有吃的，多么朴素的观点阿。<br />可郑渊洁非要多此一举的想一想自己是虫还是鸟，很不幸他选择做虫，于是写作文呼吁，早起的虫子有危险。<br />受了老师批评也就算了，他偏不服，又没有能力反抗，于是在课桌洞里放了个鞭炮，被开了。<br />他爸陪他拿着检查找了不知道多少次老师校长，就是不要他，于是他爸爸只好开始自己教他了。</p>
<p>他儿子不上，也是因为他。他觉得作业跟考试成绩是着世界上最不重要的事情，<br />所以经常帮他儿子做作业，有一天，他发现以他童话大王的想象力写的作文，竟被老师打个红叉退回来重写。<br />他想为什么他代写的作文会被退回来，为什么要每个孩子都写一样的老三段，为什么孩子要这么教呢，<br />万一他儿子要是有点想象力，长期受这样的限制，慢慢不也就没了吗，不也就跟别人一样，有思维定式了吗。<br />为了寻求这些为什么的答案，他买了初中到高中所有的课本跟教参，从头到尾的看了两边，发现的确有方法和内容上的各种不当和缺失。<br />于是自己以童话的方式，重写了这些教科书，作文课是舒克给你一枝神来笔，有五角飞碟折腾数理化世界，还有性知识课本，你从哪里来我的朋友。<br />给我感触最深的是他写了皮皮鲁和419宗罪，把中国刑法419条刑事犯罪用儿童可以接受的语言写出来，<br />还写上给儿子的寄语，儿子：老爸希望你在人生的道路上远离这419宗罪。<br />现在的孩子多么缺少这方面的知识阿，我上小学上初中的时候，校园简直就是江湖，<br />一个家里有钱的同学有天下午是被人脱走李宁只穿裤衩来学校的，法律的意识，可以让坏学生收敛，让好学生知道怎么保护自己。<br />更是构建法制社会和谐社会的起点。可惜就是硬硬的缺失了。。</p>
<p>当然了，不是所有的人都能有郑渊洁这样的能力跟精力教育自己的孩子。<br />鲁豫也说他的教育方法不适合所有的人，我妈也能列举不让孩子接触别的孩子的一大堆缺点。<br />我觉得，是重点放错了，研讨郑渊洁对不对，孩子该不该上学，不上学好不好，意义都不大。<br />试想假如学校教的让郑渊洁满意了，他还会自己教儿子吗。<br />我身体中作为愤青的那部分细胞觉得，我要是处于郑渊洁的位置，一定要上蹿下跳的求索，改变这个世界，把孩子解脱出来。<br />虽然郑渊洁比愤青的我自私，只照顾自己的孩子了，但是愤青的我比郑渊洁愚蠢，求索有结果了，孩子都老了。</p>
<p>以后我自己的孩子，我还是会把他送去学校吧，毕竟早恋阿什么的这种机会转瞬即逝的。<br />不过我的孩子要给我说不想上学了的时候，我一定天上地下问一圈为什么。<br />然后再像得知混世魔王降临般的啊一声。</p>
<p>全文完</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yinghai.org/?feed=rss2&amp;p=251</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>郑渊洁和我[1]</title>
		<link>http://www.yinghai.org/?p=252</link>
		<comments>http://www.yinghai.org/?p=252#comments</comments>
		<pubDate>Thu, 03 May 2007 23:02:00 +0000</pubDate>
		<dc:creator>yinghai</dc:creator>
				<category><![CDATA[随便写写]]></category>

		<guid isPermaLink="false">http://www.yinghai.org/index.php?load=read&amp;id=333</guid>
		<description><![CDATA[其实我们没有任何的直接联系,我是他的一个读者而已.名字起得暧昧,用来突出郑渊洁对我的影响很大这个重点.很早就看童话大王了,好像大概小学的时候.小时候,爸妈很开明,鼓励我读各种各样的书.很小我就有一书架子的课外书了.订阅的杂志有童话大王,故事大王,还有少年科学可以看.再小的时候还有笑话大王跟幽默大师,去姥姥家,偶尔可以看到故事会,这么多杂志里面,觉得童话大王是最好看得,因为故事大王好像情结也不怎么连贯,短篇比较多,而且好像我心理成长的比较快,看故事大王觉得里面的东西稍显幼稚了.少年科学我比较喜欢,里面邮购篇有好多好玩新奇的东西,比如天文望远镜.垂涎以久却不能得到,于是就会觉得是一本看了会遗憾的杂志. 童话大王不一样,语言亲近少年,故事稍有深度,比较接近社会.连载篇又能吸引我的注意力,坚持不懈地一期一期看下去.妈妈还去北京还买了童话合订本,郑渊洁跟皮皮鲁鲁西西对话录,等等杂志上看不到东西,还有郑渊洁品牌的笔袋,更是被我当作至宝.后来一直被我带到了加拿大来. 不过郑渊洁到我初二的那段时间,宣传上学不好论.于是他的作品被当作了我们家的禁书. 好像我们家不准我看的书很少. 初一初二才多大阿,我就可以去姥爷家看红楼梦西厢记故事会等等那些隐隐约约描写些男女的书了. 那些没有被禁.郑渊洁的不让看了,跟郑渊洁一起的还有一本比尔盖茨的回忆录.因为他也宣扬了上学不好的思想,以至于我经常理直气壮的到处说我不想上学了. 现在想想,可能因为他儿子跟我同年,他儿子6年级后不上学了.他刚刚接触不让孩子上学这个领域,可能各方面压力也比较大.借助自己的书宣传一下自己的主张. 不过,这一宣传,让我从此再也没有看到过郑渊洁纸媒的文字. 知道最近才又更全面的了解他。小时候只是看他的作品，对他一无所知。因为一直觉得他不让孩子上学，肯定很叛逆，锋芒毕露，针砭时弊那种类型。结果发现他本人性格很温和，不知为什么我一直都对性格温和的人抱有强烈的好感。于是就多了解了一下他。]]></description>
			<content:encoded><![CDATA[<p>其实我们没有任何的直接联系,我是他的一个读者而已.<br />名字起得暧昧,用来突出郑渊洁对我的影响很大这个重点.<br />很早就看童话大王了,好像大概小学的时候.<br />小时候,爸妈很开明,鼓励我读各种各样的书.<br />很小我就有一书架子的课外书了.<br />订阅的杂志有童话大王,故事大王,还有少年科学可以看.<br />再小的时候还有笑话大王跟幽默大师,<br />去姥姥家,偶尔可以看到故事会,<br />这么多杂志里面,觉得童话大王是最好看得,<br />因为故事大王好像情结也不怎么连贯,短篇比较多,<br />而且好像我心理成长的比较快,看故事大王觉得里面的东西稍显幼稚了.<br />少年科学我比较喜欢,里面邮购篇有好多好玩新奇的东西,比如天文望远镜.<br />垂涎以久却不能得到,于是就会觉得是一本看了会遗憾的杂志.</p>
<p>童话大王不一样,语言亲近少年,故事稍有深度,比较接近社会.<br />连载篇又能吸引我的注意力,坚持不懈地一期一期看下去.<br />妈妈还去北京还买了童话合订本,郑渊洁跟皮皮鲁鲁西西对话录,<br />等等杂志上看不到东西,还有郑渊洁品牌的笔袋,更是被我当作至宝.<br />后来一直被我带到了加拿大来.</p>
<p>不过郑渊洁到我初二的那段时间,宣传上学不好论.<br />于是他的作品被当作了我们家的禁书. <br />好像我们家不准我看的书很少. 初一初二才多大阿,我就可以去姥爷家看红楼梦西厢记故事会等等<br />那些隐隐约约描写些男女的书了. 那些没有被禁.<br />郑渊洁的不让看了,跟郑渊洁一起的还有一本比尔盖茨的回忆录.<br />因为他也宣扬了上学不好的思想,以至于我经常理直气壮的到处说我不想上学了.</p>
<p>现在想想,可能因为他儿子跟我同年,他儿子6年级后不上学了.<br />他刚刚接触不让孩子上学这个领域,可能各方面压力也比较大.<br />借助自己的书宣传一下自己的主张. 不过,这一宣传,<br />让我从此再也没有看到过郑渊洁纸媒的文字.</p>
<p>知道最近才又更全面的了解他。<br />小时候只是看他的作品，对他一无所知。<br />因为一直觉得他不让孩子上学，肯定很叛逆，锋芒毕露，针砭时弊那种类型。<br />结果发现他本人性格很温和，不知为什么我一直都对性格温和的人抱有强烈的好感。<br />于是就多了解了一下他。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yinghai.org/?feed=rss2&amp;p=252</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>很强的软件公司招聘广告</title>
		<link>http://www.yinghai.org/?p=254</link>
		<comments>http://www.yinghai.org/?p=254#comments</comments>
		<pubDate>Thu, 26 Apr 2007 22:36:00 +0000</pubDate>
		<dc:creator>yinghai</dc:creator>
				<category><![CDATA[随便写写]]></category>

		<guid isPermaLink="false">http://www.yinghai.org/index.php?load=read&amp;id=330</guid>
		<description><![CDATA[http://www.hbsc.cn/members/zw_30262.html 喜欢编程，有意识，自学能力强，准备储备外包软件人员，培养项目经理.能够正确认识软件行业的现状和未来，需要应届毕业生，不吸烟，不酗酒。 关于招聘的几点说明 听朋友说，我的招聘上了csdn论坛，并且成了众多程序员的攻击谩骂对象，csdn是我经常来的地方，我也非常敬仰这里的高手，可是看到无理的谩骂，觉得与&#8220;程序员&#34;不符。我对我的招聘解释如下： 1、农村出身，三年内不谈女朋友，舍得吃苦。我出身农村，目前农村的父亲和兄弟姐妹还靠我金钱上的接济，目前许多学生，大学毕业，尤其是大专的，出来找不 到工作，找不到能够以后可以翻身，可以养家糊口的工作，许多学编程的，去了网通电信去做adsl的安装人员，去电子城装机器，去卖保险，今年挣800，明 年还是800，可能以后还是800。买房照顾家里都不能实现。有的连这样的工作找不到。所以我想给穷苦子弟，热爱编程的，提供一个提高的平台。不搞对象， 我想招聘那些先立业，后成家的人。穷苦子弟，四年大学，家庭欠债累累，出了校门，不长本事，光图享受，我觉得是对父母不孝，对社会不仁。 2、不吸烟喝酒。我觉得吸烟对自己身体，对社会都不利，完全是追求的个人享受。并且吸烟费钱，一个月烟钱，能够买一本好的书，能够订一年的软件报。 3、不善交际，能吃苦，坐的住，能够约束自己，没有其他生存途径，愿意长期从事编程的员工。我们找的是写程序的，不是跑销售的，天天电话不断，应酬不断， 怎么能够做这么烦燥的程序员工作。如果有其他的本事和能力，比如能够当老板，我劝你不要写程序，如果有营销能力，还是去跑市场。没有其它能力，喜欢编程的 人是我们寻找的对象。 4、公司管吃住，轮流做饭，24小时在公司，没有节假日，加班的概念，工作休息自主决定。吃饭自己不做行吗，让父母来做吗，天天吃饭店吗。因为吃住全在公司，所以基本整天在，当然有事可以请假。除了吃饭，睡觉，锻炼，就是在公司研究代码。你晚上工作了，白天可以大睡。 5、实行年工资，应届学生，第一年最少拿5000元回家过年； 我想问一下，现在的应届生，5月份到公司，年底能够拿多少钱回家给父母，我1年发一次工资，就是怕让你把钱花了，因为平常穿衣吃饭住宿理发看病公司全管， 你要钱何用。我不知道各位英雄们，第一年春节拿了多少钱给父母。实际上我们要给的多，去年给了8000，第二年的程序员，我们给了18000元钱。 6、大学期间，自己有微机，有c#或c++基础，机器带到公司。学专业，大学期间没有计算机，我怕不熟练，机器带到公司，因为卖掉没有多少钱，公司收购了，两下合适。实际上就有一个带了年脑来。 河北卓越科技信息公司是一家以做软件、网站开发为主的小公司，吃住办公都在一套四居室的居民房里，不喜欢软件编程，在这里没有丝毫乐趣。公司的目标是用软 件解决企业重复的劳动，提高其工作效率。公司需要的是快乐工作，工作快乐的员工。公司认为，只有喜欢，才有精品，才有回报。公司欲求把企业当家，把公司当 成自己终生归宿的员工，公司本身就是家庭，只有我为人人，才能人人为我，员工、老板是一家人。不怕没技术，怕你不爱好。不怕你没水平，怕你没人品，坚信人 品第一，技术第二。公司愿意提供一个生存、发展的平台，愿意提供一个钻研技术，忘我工作的平台。斤斤计较，自私自利的人请不要投递简历。公司认为想当元帅 的士兵不是我们招募的员工，我们需要能够正确认识自身价值，具有准确人生定位的朋友，共同发展。你有多大，公司有多大，公司有多大，你有多大!海阔凭鱼 跃，天高任鸟飞！ 真正的的把公司当家的人，不会在意这些]]></description>
			<content:encoded><![CDATA[<p>http://www.hbsc.cn/members/zw_30262.html
<p><font color="#333333">喜欢编程，有意识，自学能力强，准备储备外包软件人员，培养项目经理.能够正确认识软件行业的现状和未来，需要应届毕业生，不吸烟，不酗酒。<br /> 关于招聘的几点说明<br /> 听朋友说，我的招聘上了csdn论坛，并且成了众多程序员的攻击谩骂对象，csdn是我经常来的地方，我也非常敬仰这里的高手，可是看到无理的谩骂，觉得与&ldquo;程序员&quot;不符。我对我的招聘解释如下：<br /> 1、农村出身，三年内不谈女朋友，舍得吃苦。我出身农村，目前农村的父亲和兄弟姐妹还靠我金钱上的接济，目前许多学生，大学毕业，尤其是大专的，出来找不 到工作，找不到能够以后可以翻身，可以养家糊口的工作，许多学编程的，去了网通电信去做adsl的安装人员，去电子城装机器，去卖保险，今年挣800，明 年还是800，可能以后还是800。买房照顾家里都不能实现。有的连这样的工作找不到。所以我想给穷苦子弟，热爱编程的，提供一个提高的平台。不搞对象， 我想招聘那些先立业，后成家的人。穷苦子弟，四年大学，家庭欠债累累，出了校门，不长本事，光图享受，我觉得是对父母不孝，对社会不仁。<br /> 2、不吸烟喝酒。我觉得吸烟对自己身体，对社会都不利，完全是追求的个人享受。并且吸烟费钱，一个月烟钱，能够买一本好的书，能够订一年的软件报。<br /> 3、不善交际，能吃苦，坐的住，能够约束自己，没有其他生存途径，愿意长期从事编程的员工。我们找的是写程序的，不是跑销售的，天天电话不断，应酬不断， 怎么能够做这么烦燥的程序员工作。如果有其他的本事和能力，比如能够当老板，我劝你不要写程序，如果有营销能力，还是去跑市场。没有其它能力，喜欢编程的 人是我们寻找的对象。<br /> 4、公司管吃住，轮流做饭，24小时在公司，没有节假日，加班的概念，工作休息自主决定。吃饭自己不做行吗，让父母来做吗，天天吃饭店吗。因为吃住全在公司，所以基本整天在，当然有事可以请假。除了吃饭，睡觉，锻炼，就是在公司研究代码。你晚上工作了，白天可以大睡。<br /> 5、实行年工资，应届学生，第一年最少拿5000元回家过年； 我想问一下，现在的应届生，5月份到公司，年底能够拿多少钱回家给父母，我1年发一次工资，就是怕让你把钱花了，因为平常穿衣吃饭住宿理发看病公司全管， 你要钱何用。我不知道各位英雄们，第一年春节拿了多少钱给父母。实际上我们要给的多，去年给了8000，第二年的程序员，我们给了18000元钱。<br /> 6、大学期间，自己有微机，有c#或c++基础，机器带到公司。学专业，大学期间没有计算机，我怕不熟练，机器带到公司，因为卖掉没有多少钱，公司收购了，两下合适。实际上就有一个带了年脑来。<br /> 河北卓越科技信息公司是一家以做软件、网站开发为主的小公司，吃住办公都在一套四居室的居民房里，不喜欢软件编程，在这里没有丝毫乐趣。公司的目标是用软 件解决企业重复的劳动，提高其工作效率。公司需要的是快乐工作，工作快乐的员工。公司认为，只有喜欢，才有精品，才有回报。公司欲求把企业当家，把公司当 成自己终生归宿的员工，公司本身就是家庭，只有我为人人，才能人人为我，员工、老板是一家人。不怕没技术，怕你不爱好。不怕你没水平，怕你没人品，坚信人 品第一，技术第二。公司愿意提供一个生存、发展的平台，愿意提供一个钻研技术，忘我工作的平台。斤斤计较，自私自利的人请不要投递简历。公司认为想当元帅 的士兵不是我们招募的员工，我们需要能够正确认识自身价值，具有准确人生定位的朋友，共同发展。你有多大，公司有多大，公司有多大，你有多大!海阔凭鱼 跃，天高任鸟飞！</p>
<p> 真正的的把公司当家的人，不会在意这些  </font></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yinghai.org/?feed=rss2&amp;p=254</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>新的Blog软件</title>
		<link>http://www.yinghai.org/?p=321</link>
		<comments>http://www.yinghai.org/?p=321#comments</comments>
		<pubDate>Wed, 25 Apr 2007 22:26:00 +0000</pubDate>
		<dc:creator>yinghai</dc:creator>
				<category><![CDATA[随便写写]]></category>

		<guid isPermaLink="false">http://www.yinghai.org/index.php?load=read&amp;id=328</guid>
		<description><![CDATA[新换了一个。 不用WordPress了，原因是代码让我改的惨不忍睹了， 而且因为我的改动速度也慢的不行。 外加数据库23M了。 本想清理一下，但偶尔看到了F2Blog。 想支持一下国人开源团队吧。 于是就换过来了。。 数据转换稍微有点小波折。。 看上去还不错啦。。&#160;]]></description>
			<content:encoded><![CDATA[<p>新换了一个。</p>
<p>不用WordPress了，原因是代码让我改的惨不忍睹了，</p>
<p>而且因为我的改动速度也慢的不行。</p>
<p>外加数据库23M了。</p>
<p>本想清理一下，但偶尔看到了F2Blog。</p>
<p>想支持一下国人开源团队吧。</p>
<p>于是就换过来了。。</p>
<p>数据转换稍微有点小波折。。</p>
<p>看上去还不错啦。。&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yinghai.org/?feed=rss2&amp;p=321</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>春天来了</title>
		<link>http://www.yinghai.org/?p=255</link>
		<comments>http://www.yinghai.org/?p=255#comments</comments>
		<pubDate>Tue, 24 Apr 2007 05:33:00 +0000</pubDate>
		<dc:creator>yinghai</dc:creator>
				<category><![CDATA[随便写写]]></category>

		<guid isPermaLink="false">http://www.yinghai.org/index.php?load=read&amp;id=327</guid>
		<description><![CDATA[春天来了到处都臭臭的..大片的草地都在施肥,像是动物园的味道..慢慢习惯了以后感觉还不错,暖暖的风,阳光,粪肥的味道..田园的很.. 年暖了,候鸟北归,有这么一家子在公司门口上面搭起了窝,下了蛋..平时人来人往就怒了雁爸爸,追着同事乱跑,今天回家更是了得,一个人站在路中间,颇有横刀立鸟的架势..我开车慢慢接近,一般松树之类小动物看到车来了,大多会以迅雷不及掩耳盗铃之势窜到路边.今天这位竟然快碰到他了还怒目圆睁挺着脖子不走. 惹不起,我绕过去,经过车窗外的时候我回头看他,竟然大圆眼睛瞪我..果然是位了得的鸟人..]]></description>
			<content:encoded><![CDATA[<p>春天来了到处都臭臭的..<br />大片的草地都在施肥,像是动物园的味道..<br />慢慢习惯了以后感觉还不错,暖暖的风,阳光,粪肥的味道..田园的很..</p>
<p>年暖了,候鸟北归,有这么一家子在公司门口上面搭起了窝,下了蛋..<br />平时人来人往就怒了雁爸爸,追着同事乱跑,<br />今天回家更是了得,一个人站在路中间,颇有横刀立鸟的架势..<br />我开车慢慢接近,一般松树之类小动物看到车来了,大多会以迅雷不及掩耳盗铃之势窜到路边.<br />今天这位竟然快碰到他了还怒目圆睁挺着脖子不走.</p>
<p>惹不起,我绕过去,<br />经过车窗外的时候我回头看他,<br />竟然大圆眼睛瞪我..<br />果然是位了得的鸟人..</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yinghai.org/?feed=rss2&amp;p=255</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Shane&#039;s Wish]如果生命只有有一个愿望</title>
		<link>http://www.yinghai.org/?p=256</link>
		<comments>http://www.yinghai.org/?p=256#comments</comments>
		<pubDate>Thu, 19 Apr 2007 22:59:00 +0000</pubDate>
		<dc:creator>yinghai</dc:creator>
				<category><![CDATA[随便写写]]></category>

		<guid isPermaLink="false">http://www.yinghai.org/index.php?load=read&amp;id=325</guid>
		<description><![CDATA[加拿大安大略省的兰卡斯特，有一个得了绝症的7岁小孩，名叫Shane Bernier，病痛中的他没有在过生日的时候给父母要钱买玩具，他唯一愿望就是在5月30号他所剩不多的生日之际，可以收到大家对他的祝福贺卡，希望可以打破收到生日卡片最多的人的吉尼斯世界纪录。从而使自己幼小的生命，能在这个世界上留下点点痕迹。如果你愿意满足这个远方小朋友的愿望，请寄一份贺卡到：Shane BernierPO Box 484Lancaster, OntarioK0C 1N0Canada]]></description>
			<content:encoded><![CDATA[<p>加拿大安大略省的兰卡斯特，有一个得了绝症的7岁小孩，<br />名叫<a href="http://www.shaneswish.com">Shane Bernier</a>，病痛中的他没有在过生日的时候给父母要钱买玩具，<br />他唯一愿望就是在5月30号他所剩不多的生日之际，可以收到大家对他的祝福贺卡，<br />希望可以打破收到生日卡片最多的人的吉尼斯世界纪录。<br />从而使自己幼小的生命，能在这个世界上留下点点痕迹。<br />如果你愿意满足这个远方小朋友的愿望，请寄一份贺卡到：<br />Shane Bernier<br />PO Box 484<br />Lancaster, Ontario<br />K0C 1N0<br />Canada</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yinghai.org/?feed=rss2&amp;p=256</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>燃烧把,我的小土豆..</title>
		<link>http://www.yinghai.org/?p=257</link>
		<comments>http://www.yinghai.org/?p=257#comments</comments>
		<pubDate>Fri, 13 Apr 2007 21:07:00 +0000</pubDate>
		<dc:creator>yinghai</dc:creator>
				<category><![CDATA[随便写写]]></category>

		<guid isPermaLink="false">http://www.yinghai.org/index.php?load=read&amp;id=324</guid>
		<description><![CDATA[昨天晚上看了点圣斗士..想起了小时候满街狂奔狂吼 庐山升龙霸,你妈打你爸 的日子. 哎，就要考试了，燃烧吧，我的小土豆。。]]></description>
			<content:encoded><![CDATA[<p>昨天晚上看了点圣斗士..<br />想起了小时候满街狂奔狂吼 庐山升龙霸,你妈打你爸 的日子.</p>
<p>哎，就要考试了，燃烧吧，我的小土豆。。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yinghai.org/?feed=rss2&amp;p=257</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>深夜降落</title>
		<link>http://www.yinghai.org/?p=258</link>
		<comments>http://www.yinghai.org/?p=258#comments</comments>
		<pubDate>Wed, 11 Apr 2007 00:55:00 +0000</pubDate>
		<dc:creator>yinghai</dc:creator>
				<category><![CDATA[随便写写]]></category>

		<guid isPermaLink="false">http://www.yinghai.org/index.php?load=read&amp;id=323</guid>
		<description><![CDATA[昨晚在飞机上,自从飞出了伊利湖就在往下看.灯光点点,往来交通，流光异彩。原来伦敦也很大,很繁华，原来铁卢也很大，很繁华，原来汉密尔顿也很大，很繁华，原来多伦多更大，更繁华。。 8号公路有灯的，比较好找。。401西面一路是没有灯的，只有黑黑的一条带子，上面有点点光慢慢移动。要不是剑桥附近巨大的麦当劳，还真不容易发现。多伦多电视塔从夜空中上就像个玩具。。 加州，除了甲骨文总部的楼我认出来了。其他的都没认出来。]]></description>
			<content:encoded><![CDATA[<p>昨晚在飞机上,自从飞出了伊利湖就在往下看.<br />灯光点点,往来交通，流光异彩。<br />原来伦敦也很大,很繁华，<br />原来铁卢也很大，很繁华，<br />原来汉密尔顿也很大，很繁华，<br />原来多伦多更大，更繁华。。</p>
<p>8号公路有灯的，比较好找。。<br />401西面一路是没有灯的，只有黑黑的一条带子，上面有点点光慢慢移动。<br />要不是剑桥附近巨大的麦当劳，还真不容易发现。<br />多伦多电视塔从夜空中上就像个玩具。。</p>
<p>加州，除了甲骨文总部的楼我认出来了。其他的都没认出来。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yinghai.org/?feed=rss2&amp;p=258</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
