<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>石锅拌饭</title>
	
	<link>http://www.robinlu.com/blog</link>
	<description>Robin Lu's weblog</description>
	<pubDate>Sat, 27 Jun 2009 15:27:55 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<geo:lat>39.974226</geo:lat><geo:long>116.341009</geo:long><creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/2.0/</creativeCommons:license><image><link>http://creativecommons.org/licenses/by-nc-nd/2.0/</link><url>http://creativecommons.org/images/public/somerights20.gif</url><title>Some Rights Reserved</title></image><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/robinlu" type="application/rss+xml" /><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site, subject to copyright and fair use.</feedburner:browserFriendly><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>从 dreamhost 到 linode</title>
		<link>http://feedproxy.google.com/~r/robinlu/~3/dwznkIX2bPQ/475</link>
		<comments>http://www.robinlu.com/blog/archives/475#comments</comments>
		<pubDate>Sat, 27 Jun 2009 15:23:40 +0000</pubDate>
		<dc:creator>Robin Lu</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[dreamhost]]></category>

		<category><![CDATA[linode]]></category>

		<category><![CDATA[linux]]></category>

		<category><![CDATA[server]]></category>

		<guid isPermaLink="false">http://www.robinlu.com/blog/archives/475</guid>
		<description><![CDATA[2005年五月份，拿着七周年的折扣码在dreamhost上安家， 转眼就四年了。中间有过一些不愉快的经历，比如说可靠性，有一个9都很勉强了，偶尔“肥手指”还会在不通知你的情况下多扣你一年的费用。我要求也不高，多数时候就忍了，但上个月一次寻求dreamhost support的经历让我最终下决心离开它。
上个月有几天我在dreamhost上的几个网站频繁500，有一个彻底连不上了。发了support ticket，倒是很快得到答复，说我的网站占用CPU和内存太高，脚本进程就被监控程序杀掉了，然后热切的向我推荐他们的Dreamhost PS。我给他们看了看所有access.log的统计，一天也就三万多条记录，可error.log里却有一万八千多条记录，你们想推销VPS也不能靠这样的手段啊。他们看我不愿意升级，又说不出问题，就开始乱找原因，建议我封google和yahoo的robot，摘抄其中非常经典的一段：

  I checked the logs above and found that these sites are being accessed by
  search engine bots. For &#8216;xxx.com&#8217; I found the following:
  66 66.249.67.219
  40 74.125.44.136
  For &#8216;yyy.com&#8217;:
  99 66.249.70.134
  88 74.6.8.107
  Keep in mind the numbers you see above and [...]]]></description>
			<content:encoded><![CDATA[<p>2005年五月份，拿着七周年的折扣码在dreamhost上安家， 转眼就四年了。中间有过一些不愉快的经历，比如说可靠性，有一个9都很勉强了，偶尔“肥手指”还会在不通知你的情况下多扣你一年的费用。我要求也不高，多数时候就忍了，但上个月一次寻求dreamhost support的经历让我最终下决心离开它。</p>
<p>上个月有几天我在dreamhost上的几个网站频繁500，有一个彻底连不上了。发了support ticket，倒是很快得到答复，说我的网站占用CPU和内存太高，脚本进程就被监控程序杀掉了，然后热切的向我推荐他们的Dreamhost PS。我给他们看了看所有access.log的统计，一天也就三万多条记录，可error.log里却有一万八千多条记录，你们想推销VPS也不能靠这样的手段啊。他们看我不愿意升级，又说不出问题，就开始乱找原因，建议我封google和yahoo的robot，摘抄其中非常经典的一段：</p>
<blockquote><p>
  I checked the logs above and found that these sites are being accessed by<br />
  search engine bots. For &#8216;xxx.com&#8217; I found the following:</p>
<p>  66 66.249.67.219<br />
  40 74.125.44.136</p>
<p>  For &#8216;yyy.com&#8217;:</p>
<p>  99 66.249.70.134<br />
  88 74.6.8.107</p>
<p>  Keep in mind the numbers you see above and the count you produced is the<br />
  number of accesses to the sites in the last 6 hours. So, those totals<br />
  are pretty high for just 6 hours.
</p></blockquote>
<p>六小时，总计不超过300次访问，他们认为pretty high。我直接回信告诉他们，别说六小时，就是一分钟有300次访问，我也不认为是pretty high。他们只好承认他们也没办法，然后继续推销PS，!@#$。</p>
<p>我在dreamhost的硬盘限量是438GB，用了不到4G，带宽限量是每月8T，用不到2G，我就host了几个pv全加起来不超过4000/天的wordpress，在dreamhost上就已经是除了PS无路可选了。我想了下，也许是该找个VPS了，但绝对不会再是Dreamhost!</p>
<p>几经挑选，选中了很多朋友都推荐的 <a href="http://www.linode.com/?r=d029471030a552370553ffeb9ea65385ef6ce3fa" title="linode">linode</a> , 买了Linode 360, 独立IP, 支持众多linux发行版，root权限，想怎么折腾怎么折腾。虽然比我在dreamhost上的share host贵了一倍，但比同等内存的dreamhost PS便宜1/3以上，连接速度也比我所在的dreamhost的服务器连接速度快很多。</p>
<p>装了ubuntu，用nginx带FastCGI跑PHP5，把我的wordpress一点点都挪过来了。一个月下来，运转良好。下个月就可以不再给dreamhost续费，彻底拜拜，做个happy linoder了。</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robinlu?a=dwznkIX2bPQ:C6CNl0qAtYQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/robinlu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robinlu?a=dwznkIX2bPQ:C6CNl0qAtYQ:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robinlu?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robinlu?a=dwznkIX2bPQ:C6CNl0qAtYQ:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/robinlu?i=dwznkIX2bPQ:C6CNl0qAtYQ:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.robinlu.com/blog/archives/475/feed</wfw:commentRss>
		<feedburner:origLink>http://www.robinlu.com/blog/archives/475</feedburner:origLink></item>
		<item>
		<title>Too Bad</title>
		<link>http://feedproxy.google.com/~r/robinlu/~3/B-ejAMGZPBk/473</link>
		<comments>http://www.robinlu.com/blog/archives/473#comments</comments>
		<pubDate>Fri, 26 Jun 2009 09:00:51 +0000</pubDate>
		<dc:creator>Robin Lu</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[life]]></category>

		<category><![CDATA[music]]></category>

		<guid isPermaLink="false">http://www.robinlu.com/blog/?p=473</guid>
		<description><![CDATA[听着双卡录音机里发出奇怪的声音, 我的第一反应是, 男的女的? 因为即使从磁带的封面, 我也分辨不出来. 同学告诉我这是全世界最红的歌星, 声音&#8220;宛若童子&#8220;, 男的. 虽然刚学过两年多英语, Bad还是认识的, 怎么翻译成&#8220;真棒&#8220;? 同学又告诉我, 这是美国最新的说法, 越是bad, 越是真棒. 
二十年前, 在初中同学的家里, 听着Michael Jackson的Bad, 我的感觉除了颠覆就是颠覆.
就在那个最好的年代, 我们有着数不清的记忆和MJ相关. 我现在还能记得同学模仿 Liberian Girl 开头女声的腔调, 丝毫没有心神不宁的感觉. 我们在街机厅奋战Moonwalker, 就为了每次按完保险后看MJ的一段舞蹈. 还有一天晚上, 一个哥们跑到我家, 他从一个很有好感的女生那里借了一盘磁带, 是那种双面超长磁带, 一面是Bad, 一面是Thriller, 带基很薄, 不小心听断了, 帮他连夜接好, 翻录了一份还回去.
大学时期, 听的东西越来越多, 唱风难有突破的MJ已经让人审美疲劳, 不再是我的偶像, 甚至很长时间都不太愿意承认自己还曾经痴迷过他, 连他的磁带也一并送人. 直到2001年, 在美国出差, 有天晚上打开电视, 刚好是MJ 30周年演唱会, 百无聊赖坐下来看, 一看就动不了了. 就是这样, 无论我多么不愿意承认, MJ永远会触动我的一部分神经.
今天早上, 一起来就听说MJ走了. 我不知道该说什么, [...]]]></description>
			<content:encoded><![CDATA[<p>听着双卡录音机里发出奇怪的声音<span>, </span>我的第一反应是<span>, </span>男的女的<span>? </span>因为即使从磁带的封面<span>, </span>我也分辨不出来<span>. </span>同学告诉我这是全世界最红的歌星<span>, </span>声音<span>&#8220;</span>宛若童子<span>&#8220;, </span>男的<span>. </span>虽然刚学过两年多英语<span>, Bad</span>还是认识的<span>, </span>怎么翻译成<span>&#8220;</span>真棒<span>&#8220;? </span>同学又告诉我<span>, </span>这是美国最新的说法<span>, </span>越是<span>bad, </span>越是真棒<span>. </span></p>
<p>二十年前<span>, </span>在初中同学的家里<span>, </span>听着<span>Michael Jackson</span>的<span>Bad, </span>我的感觉除了颠覆就是颠覆<span>.</span></p>
<p>就在那个最好的年代<span>, </span>我们有着数不清的记忆和<span>MJ</span>相关<span>. </span>我现在还能记得同学模仿<span> Liberian Girl </span>开头女声的腔调<span>, </span>丝毫没有心神不宁的感觉<span>. </span>我们在街机厅奋战<span>Moonwalker, </span>就为了每次按完保险后看<span>MJ</span>的一段舞蹈<span>. </span>还有一天晚上<span>, </span>一个哥们跑到我家<span>, </span>他从一个很有好感的女生那里借了一盘磁带<span>, </span>是那种双面超长磁带<span>, </span>一面是<span>Bad, </span>一面是<span>Thriller, </span>带基很薄<span>, </span>不小心听断了<span>, </span>帮他连夜接好<span>, </span>翻录了一份还回去<span>.</span></p>
<p>大学时期<span>, </span>听的东西越来越多<span>, </span>唱风难有突破的<span>MJ</span>已经让人审美疲劳<span>, </span>不再是我的偶像<span>, </span>甚至很长时间都不太愿意承认自己还曾经痴迷过他<span>, </span>连他的磁带也一并送人<span>. </span>直到<span>2001</span>年<span>, </span>在美国出差<span>, </span>有天晚上打开电视<span>, </span>刚好是<span>MJ 30</span>周年演唱会<span>, </span>百无聊赖坐下来看<span>, </span>一看就动不了了<span>. </span>就是这样<span>, </span>无论我多么不愿意承认<span>, MJ</span>永远会触动我的一部分神经<span>.</span></p>
<p>今天早上<span>, </span>一起来就听说<span>MJ</span>走了<span>. </span>我不知道该说什么<span>, </span>这几年我们不断的在送走我们曾经爱过的人<span>, </span>七零后到了这样的时候了吧<span>. 但是</span>我真<span>TM</span>讨厌这样的时刻<span>.</span></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robinlu?a=B-ejAMGZPBk:snPKUAqPDoo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/robinlu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robinlu?a=B-ejAMGZPBk:snPKUAqPDoo:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robinlu?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robinlu?a=B-ejAMGZPBk:snPKUAqPDoo:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/robinlu?i=B-ejAMGZPBk:snPKUAqPDoo:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.robinlu.com/blog/archives/473/feed</wfw:commentRss>
		<feedburner:origLink>http://www.robinlu.com/blog/archives/473</feedburner:origLink></item>
		<item>
		<title>忙碌的一周</title>
		<link>http://feedproxy.google.com/~r/robinlu/~3/c9rK9zEfHuM/470</link>
		<comments>http://www.robinlu.com/blog/archives/470#comments</comments>
		<pubDate>Sun, 24 May 2009 14:06:21 +0000</pubDate>
		<dc:creator>Robin Lu</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[iphone]]></category>

		<category><![CDATA[ruby]]></category>

		<category><![CDATA[rubyconfchina]]></category>

		<category><![CDATA[rubyonrails]]></category>

		<guid isPermaLink="false">http://www.robinlu.com/blog/archives/470</guid>
		<description><![CDATA[预告过了, 这周主要参加了两个活动.
周四在上海的Ruby Conference China 2009, 可以说相当成功. 
Matz 绝对是现场最耀眼的明星, 他的演讲非常有趣, 充满了程序员的智慧. 他提到编程语言应该有common sense, 程序员即使是在为生计编程, 也不应该放弃对fun的追求. 每个ruby程序员都知道这不是泛泛的说道, 因为我们都能确切的体验到这种common sense,以及ruby编程给我们带来的快乐. 以前听过Bjarne Stroustrup和James Goslin的演讲, 和这些编程语言之父面对面的交流总是让人有颇多的收获.
javaeye的Robbin Fan的演讲也非常精彩, 分享的内容是国内ruby/rails社区极为宝贵的经验. 有一个小插曲, Robbin演讲当中, 接到了一个网警要求删贴的电话, 不得不马上处理. 老大哥的无处不在让人啼笑皆非. 另外, 这次上海之行, 看到这样一个没有做太多宣传的活动, 一下就聚集了全国各地四百多人, 会上会下都以javaeye会员相称, 着实见识了一下javaeye的号召力.
借这次活动, 看到了ThoughtWorks的郑烨, 图灵的刘江老师, 杭州的ashchan, Kernel1983, 吕国宁等等很多神交已久的朋友, 也结识了象薄荷网的谢文威等等的新朋友, 可谓不虚此行.
今天下午在奇遇花园的技术沙龙也不错, 来了不少人, 对iPhone感兴趣的人还不少. 因为Tinyfool告诉我最好不要超过二十分钟, 所以没有准备太多内容, 做开发的可能会觉得没啥意思, 不做开发的可能又觉得太偏技术,不过最后回答了一些大家的问题,也算有点补偿了. 其实技术沙龙就应该是这样, 上面讲的人只是抛砖引玉, 大家的交流才最关键. 我自己的体会也是这样, 每次奇遇花园的活动, 讲座不过是热个身, 后面的闲聊才是黄金时段. 这是今天演讲的文档, [...]]]></description>
			<content:encoded><![CDATA[<p>预告过了, 这周主要参加了两个活动.</p>
<p>周四在上海的Ruby Conference China 2009, 可以说相当成功. </p>
<p>Matz 绝对是现场最耀眼的明星, 他的演讲非常有趣, 充满了程序员的智慧. 他提到编程语言应该有common sense, 程序员即使是在为生计编程, 也不应该放弃对fun的追求. 每个ruby程序员都知道这不是泛泛的说道, 因为我们都能确切的体验到这种common sense,以及ruby编程给我们带来的快乐. 以前听过Bjarne Stroustrup和James Goslin的演讲, 和这些编程语言之父面对面的交流总是让人有颇多的收获.</p>
<p>javaeye的Robbin Fan的演讲也非常精彩, 分享的内容是国内ruby/rails社区极为宝贵的经验. 有一个小插曲, Robbin演讲当中, 接到了一个网警要求删贴的电话, 不得不马上处理. 老大哥的无处不在让人啼笑皆非. 另外, 这次上海之行, 看到这样一个没有做太多宣传的活动, 一下就聚集了全国各地四百多人, 会上会下都以javaeye会员相称, 着实见识了一下javaeye的号召力.</p>
<p>借这次活动, 看到了ThoughtWorks的<a href="http://dreamhead.blogbus.com/">郑烨</a>, 图灵的<a href="http://twitter.com/turingbook">刘江老师</a>, 杭州的<a href="http://ashchan.com/">ashchan</a>, <a href="http://twitter.com/kernel1983">Kernel1983</a>, 吕国宁等等很多神交已久的朋友, 也结识了象薄荷网的谢文威等等的新朋友, 可谓不虚此行.</p>
<p>今天下午在<a href="http://storygarden.me">奇遇花园</a>的<a href="http://club.blogbeta.com/" title="beta技术沙龙">技术沙龙</a>也不错, 来了不少人, 对iPhone感兴趣的人还不少. 因为Tinyfool告诉我最好不要超过二十分钟, 所以没有准备太多内容, 做开发的可能会觉得没啥意思, 不做开发的可能又觉得太偏技术,不过最后回答了一些大家的问题,也算有点补偿了. 其实技术沙龙就应该是这样, 上面讲的人只是抛砖引玉, 大家的交流才最关键. 我自己的体会也是这样, 每次奇遇花园的活动, 讲座不过是热个身, 后面的闲聊才是黄金时段. 这是今天演讲的文档, 内容不多, 有兴趣的可以下载来看看:<br />
<a href="http://www.robinlu.com/blog/wp-content/uploads/2009/05/iphone-dev.pdf" title="iphone-dev.pdf">iPhone开发经验谈</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robinlu?a=c9rK9zEfHuM:sGV5VTvE5EU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/robinlu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robinlu?a=c9rK9zEfHuM:sGV5VTvE5EU:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robinlu?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robinlu?a=c9rK9zEfHuM:sGV5VTvE5EU:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/robinlu?i=c9rK9zEfHuM:sGV5VTvE5EU:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.robinlu.com/blog/archives/470/feed</wfw:commentRss>
		<feedburner:origLink>http://www.robinlu.com/blog/archives/470</feedburner:origLink></item>
		<item>
		<title>Ruby On Rails Pitfall</title>
		<link>http://feedproxy.google.com/~r/robinlu/~3/fMm4hLkjElM/468</link>
		<comments>http://www.robinlu.com/blog/archives/468#comments</comments>
		<pubDate>Fri, 22 May 2009 01:31:00 +0000</pubDate>
		<dc:creator>Robin Lu</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[rubyconfchina]]></category>

		<category><![CDATA[rubyonrails]]></category>

		<guid isPermaLink="false">http://www.robinlu.com/blog/archives/468</guid>
		<description><![CDATA[昨天在Ruby Conference China 2009上的演讲, 主要选择了几个我们在Ruby On Rails开发中遇到的问题. 有的是我们自己犯的错误, 有的可能是大家在开发中都需要小心的陷阱.
Ruby on Rails Pitfall 
    Publish at Scribd or explore others:            Internet &#038; Technolog              Research      [...]]]></description>
			<content:encoded><![CDATA[<p>昨天在Ruby Conference China 2009上的演讲, 主要选择了几个我们在Ruby On Rails开发中遇到的问题. 有的是我们自己犯的错误, 有的可能是大家在开发中都需要小心的陷阱.</p>
<p><a title="View Ruby on Rails Pitfall on Scribd" href="http://www.scribd.com/doc/15705678/Ruby-on-Rails-Pitfall" style="margin: 12px auto 6px auto; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; display: block; text-decoration: underline;">Ruby on Rails Pitfall</a> <object codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" id="doc_792592394744917" name="doc_792592394744917" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" align="middle"	height="500" width="100%" ><param name="movie"	value="http://d.scribd.com/ScribdViewer.swf?document_id=15705678&#038;access_key=key-1zzmej3wfljsw3jraf6u&#038;page=1&#038;version=1&#038;viewMode="><param name="quality" value="high"><param name="play" value="true"><param name="loop" value="true"><param name="scale" value="showall"><param name="wmode" value="opaque"><param name="devicefont" value="false"><param name="bgcolor" value="#ffffff"><param name="menu" value="true"><param name="allowFullScreen" value="true"><param name="allowScriptAccess" value="always"><param name="salign" value=""><embed src="http://d.scribd.com/ScribdViewer.swf?document_id=15705678&#038;access_key=key-1zzmej3wfljsw3jraf6u&#038;page=1&#038;version=1&#038;viewMode=" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" play="true" loop="true" scale="showall" wmode="opaque" devicefont="false" bgcolor="#ffffff" name="doc_792592394744917_object" menu="true" allowfullscreen="true" allowscriptaccess="always" salign="" type="application/x-shockwave-flash" align="middle"  height="500" width="100%"></embed></object>
<div style="margin: 6px auto 3px auto; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; display: block;">    <a href="http://www.scribd.com/upload" style="text-decoration: underline;">Publish at Scribd</a> or <a href="http://www.scribd.com/browse" style="text-decoration: underline;">explore</a> others:            <a href="http://www.scribd.com/explore/Research/Internet-Technology" style="text-decoration: underline;">Internet &#038; Technolog</a>              <a href="http://www.scribd.com/explore/Research/" style="text-decoration: underline;">Research</a>                  <a href="http://www.scribd.com/tag/ruby" style="text-decoration: underline;">ruby</a>              <a href="http://www.scribd.com/tag/rubyonrails" style="text-decoration: underline;">rubyonrails</a>      	</div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robinlu?a=fMm4hLkjElM:ddRlcQC_BWY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/robinlu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robinlu?a=fMm4hLkjElM:ddRlcQC_BWY:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robinlu?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robinlu?a=fMm4hLkjElM:ddRlcQC_BWY:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/robinlu?i=fMm4hLkjElM:ddRlcQC_BWY:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.robinlu.com/blog/archives/468/feed</wfw:commentRss>
		<feedburner:origLink>http://www.robinlu.com/blog/archives/468</feedburner:origLink></item>
		<item>
		<title>MacWorld reviews BuddyFeed!</title>
		<link>http://feedproxy.google.com/~r/robinlu/~3/yZmdn51aCGc/464</link>
		<comments>http://www.robinlu.com/blog/archives/464#comments</comments>
		<pubDate>Fri, 15 May 2009 05:40:45 +0000</pubDate>
		<dc:creator>Robin Lu</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[friendfeed]]></category>

		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://www.robinlu.com/blog/archives/464</guid>
		<description><![CDATA[一直以来，都把在mac和iphone做cocoa编程当成业余爱好，是自己的20% projects。要做什么，首先肯定是自己要用的，能做到自己满意也就差不多了。
做BuddyFeed也是这样。觉得在iPod Touch上看完twitter，看完google reader，好像还想读点东西，FriendFeed刚好是个不错的选择，但是一直都不太喜欢FriendFeed以前的界面，就干脆自己为iphone/ipod touch做了这个客户端程序。界面设计上我也没有太多想法，第一版借鉴Twitterrific和Twittelator多一些，后来老用Tweetie，觉得它的界面更合理，第二版就更多借鉴了Tweeite的设计。
上周末新版通过审核发布了。昨天晚上，突然看到MacWorld的iPhone Central频道review了BuddyFeed 2.0，虽然以前在Marshable和其它一些blog也有过，但从来不会想到MacWorld，所以还是惊喜了一下。基本上一个业余cocoa coder的虚荣心已经完全得到满足了。
]]></description>
			<content:encoded><![CDATA[<p>一直以来，都把在mac和iphone做cocoa编程当成业余爱好，是自己的20% projects。要做什么，首先肯定是自己要用的，能做到自己满意也就差不多了。</p>
<p>做BuddyFeed也是这样。觉得在iPod Touch上看完twitter，看完google reader，好像还想读点东西，FriendFeed刚好是个不错的选择，但是一直都<a href="http://www.robinlu.com/blog/archives/190">不太喜欢FriendFeed以前的界面</a>，就干脆自己为iphone/ipod touch做了这个客户端程序。界面设计上我也没有太多想法，第一版借鉴Twitterrific和Twittelator多一些，后来老用Tweetie，觉得它的界面更合理，第二版就更多借鉴了Tweeite的设计。</p>
<p>上周末新版通过审核发布了。昨天晚上，突然看到<a href="http://www.macworld.com/article/140610/buddyfeed_20_polishes_friendfeed_experience_for_iphone.html">MacWorld的iPhone Central频道review了BuddyFeed 2.0</a>，虽然以前在Marshable和其它一些blog也有过，但从来不会想到MacWorld，所以还是惊喜了一下。基本上一个业余cocoa coder的虚荣心已经完全得到满足了。</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robinlu?a=yZmdn51aCGc:YO2TU72qJoE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/robinlu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robinlu?a=yZmdn51aCGc:YO2TU72qJoE:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robinlu?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robinlu?a=yZmdn51aCGc:YO2TU72qJoE:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/robinlu?i=yZmdn51aCGc:YO2TU72qJoE:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.robinlu.com/blog/archives/464/feed</wfw:commentRss>
		<feedburner:origLink>http://www.robinlu.com/blog/archives/464</feedburner:origLink></item>
		<item>
		<title>下周的两个活动</title>
		<link>http://feedproxy.google.com/~r/robinlu/~3/FbY1bh53M30/462</link>
		<comments>http://www.robinlu.com/blog/archives/462#comments</comments>
		<pubDate>Thu, 14 May 2009 13:26:34 +0000</pubDate>
		<dc:creator>Robin Lu</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[event]]></category>

		<category><![CDATA[iphone]]></category>

		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.robinlu.com/blog/?p=462</guid>
		<description><![CDATA[下周准备参加两个活动.
一个是五月二十一号在上海的Ruby Conference China 2009. 终于有人走出这第一步了. 很佩服javaeye和Shanghai Rails Group的勇气. 虽然我们并没有什么在技术性会议上做宣传的需求, 也没有太多的钱, 但还是希望能和大会组织者一起, 为国内Ruby社区尽一点点力. Louie和我会在二十号到达上海, 二十二号返回. 其实比起Matz, 更想见见南方ruby圈子里的朋友. 希望到时候可以见到大家.
第二个活动是beta技术沙龙第四期[iPhone开发入门]. beta技术沙龙是一个在奇遇花园每月一次的聚会,每次会有一个主题,几个主讲,但更主要的是大家互相之间的交流. 这次的主题是iPhone开发, 银杏的Tinyfool和我主持这次活动, 我们各作一个二十分钟左右的演讲, 然后大家可以一起聊一聊, 有什么感兴趣或者疑惑的问题可以现场切磋.
]]></description>
			<content:encoded><![CDATA[<p>下周准备参加两个活动.</p>
<p>一个是五月二十一号在上海的<a href="http://www.rubyconfchina.com/" rel="nofollow">Ruby Conference China 2009</a>. 终于有人走出这第一步了. 很佩服javaeye和Shanghai Rails Group的勇气. 虽然我们并没有什么在技术性会议上做宣传的需求, 也没有太多的钱, 但还是希望能和大会组织者一起, 为国内Ruby社区尽一点点力. Louie和我会在二十号到达上海, 二十二号返回. 其实比起Matz, 更想见见南方ruby圈子里的朋友. 希望到时候可以见到大家.</p>
<p>第二个活动是<a href="http://www.tinydust.net/prog/diary/2009/05/betaiphone.html">beta技术沙龙第四期[iPhone开发入门]</a>. <a href="http://club.blogbeta.com/">beta技术沙龙</a>是一个在<a href="http://storygarden.me/">奇遇花园</a>每月一次的聚会,每次会有一个主题,几个主讲,但更主要的是大家互相之间的交流. 这次的主题是iPhone开发, 银杏的<a href="http://www.tinydust.net">Tinyfool</a>和我主持这次活动, 我们各作一个二十分钟左右的演讲, 然后大家可以一起聊一聊, 有什么感兴趣或者疑惑的问题可以现场切磋.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robinlu?a=FbY1bh53M30:tLUKHwRKIw0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/robinlu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robinlu?a=FbY1bh53M30:tLUKHwRKIw0:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robinlu?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robinlu?a=FbY1bh53M30:tLUKHwRKIw0:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/robinlu?i=FbY1bh53M30:tLUKHwRKIw0:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.robinlu.com/blog/archives/462/feed</wfw:commentRss>
		<feedburner:origLink>http://www.robinlu.com/blog/archives/462</feedburner:origLink></item>
		<item>
		<title>Coding is elsewhere</title>
		<link>http://feedproxy.google.com/~r/robinlu/~3/Aqtz4H4C4aI/431</link>
		<comments>http://www.robinlu.com/blog/archives/431#comments</comments>
		<pubDate>Sat, 25 Apr 2009 16:32:12 +0000</pubDate>
		<dc:creator>Robin Lu</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[life]]></category>

		<guid isPermaLink="false">http://www.robinlu.com/blog/?p=431</guid>
		<description><![CDATA[宅男，宅在哪都是宅。前些日子，和一干兄弟去厦门鼓浪屿宅了一周。
本来是想住在厦门的21howtel的，还托Suave要了个董事长折扣，可惜订的时候被告知房间安排不过来。结果又查点评又搜攻略，最后几经周折订在了鼓浪屿的琴海庄园。
15号一早出发，到厦门后我们专门选择做公交车，在城里转了一大圈最后到码头，感觉厦门和一般城市区别不大。乘轮渡到鼓浪屿，有琴海庄园的人接我们，很容易就到了旅馆。
琴海庄园在一个小山坡上，是岛上众多的家庭式旅馆之一。

上山是有点累，但环境很好，很安静，从窗口一看出去就是大海。

安顿好后，第一件事就是吃饭。先去点评网兵器谱第一名的马拉桑喝了果汁，以亲身实践再次证明大众点评是一个很不靠谱的事情。随后尝试了本地特色鱼丸，说实话我还是比较喜欢农展馆南路上的潮汕鱼丸店，更劲道一些。最后在一家小吃店里，胡乱点了一堆东西。

随后，会驻地开始办公。

琴海庄园有一个很不错的大厅，是我们主要的活动场所。白天工作。

晚上下棋。

当然，我们也没少在岛上转悠。每天下山觅食，都会找一条不同的路绕一大圈再回来。
鼓浪屿和厦门区别很明显。岛上基本上都是两三层的小楼，很多是当年华侨盖的别墅。

街道狭小，全岛禁车，包括自行车，只能偶尔看到旅游电瓶车拉着客人走过。

岛上众多的别墅小楼，大多年代久远，有的变成大杂院，

有的只有很少的人住在里面。

有很多似乎根本没有人住，甚至已经成了危楼。

还有的改成了家庭式旅馆。

每次吃完晚饭，我们也会到处转一圈，晚上的鼓浪屿，也相当有感觉。



岛上还有不少小动物。
有猫猫。


同事拍到的蚊子。

还有满地打滚的海鲜。

周末的时候，去了趟厦门，主要的感觉是饮食质量远好于鼓浪屿。首推乌糖沙茶面。

小眼镜大排档也相当实惠。

只是景色就没那么好了。
在鼓浪屿的最后一个下午，去爬了一趟旅馆对面的日光岩，眺望了一下，那块岩石和一朵特别绿的树之间，就是我们住的地方。

21号，全团人马返回北京。
]]></description>
			<content:encoded><![CDATA[<p>宅男，宅在哪都是宅。前些日子，和一干兄弟去厦门鼓浪屿宅了一周。</p>
<p>本来是想住在厦门的21howtel的，还托<a href="http://surui.net" title="" rel="nofollow">Suave</a>要了个董事长折扣，可惜订的时候被告知房间安排不过来。结果又查点评又搜攻略，最后几经周折订在了鼓浪屿的<a href="http://www.piasea.com/" title="" rel="nofollow">琴海庄园</a>。</p>
<p>15号一早出发，到厦门后我们专门选择做公交车，在城里转了一大圈最后到码头，感觉厦门和一般城市区别不大。乘轮渡到鼓浪屿，有琴海庄园的人接我们，很容易就到了旅馆。</p>
<p>琴海庄园在一个小山坡上，是岛上众多的家庭式旅馆之一。</p>
<p><img src="http://www.robinlu.com/blog/wp-content/uploads/2009/04/p1000455.jpg" height="334" width="500" alt="P1000455" /></p>
<p>上山是有点累，但环境很好，很安静，从窗口一看出去就是大海。</p>
<p><img src="http://www.robinlu.com/blog/wp-content/uploads/2009/04/p1000314-3.jpg" height="334" width="500" alt="P1000314-3" /></p>
<p>安顿好后，第一件事就是吃饭。先去点评网兵器谱第一名的马拉桑喝了果汁，以亲身实践再次证明大众点评是一个很不靠谱的事情。随后尝试了本地特色鱼丸，说实话我还是比较喜欢农展馆南路上的潮汕鱼丸店，更劲道一些。最后在一家小吃店里，胡乱点了一堆东西。</p>
<p><img src="http://www.robinlu.com/blog/wp-content/uploads/2009/04/p1000319.jpg" height="334" width="500" alt="P1000319" /></p>
<p>随后，会驻地开始办公。</p>
<p><img src="http://www.robinlu.com/blog/wp-content/uploads/2009/04/p1000332.jpg" height="334" width="500" alt="P1000332" /></p>
<p>琴海庄园有一个很不错的大厅，是我们主要的活动场所。白天工作。</p>
<p><img src="http://www.robinlu.com/blog/wp-content/uploads/2009/04/p1000349.jpg" height="334" width="500" alt="P1000349" /></p>
<p>晚上下棋。</p>
<p><img src="http://www.robinlu.com/blog/wp-content/uploads/2009/04/p1000348.jpg" height="334" width="500" alt="P1000348" /></p>
<p>当然，我们也没少在岛上转悠。每天下山觅食，都会找一条不同的路绕一大圈再回来。</p>
<p>鼓浪屿和厦门区别很明显。岛上基本上都是两三层的小楼，很多是当年华侨盖的别墅。</p>
<p><img src="http://www.robinlu.com/blog/wp-content/uploads/2009/04/p1000480.jpg" height="375" width="500" alt="P1000480" /></p>
<p>街道狭小，全岛禁车，包括自行车，只能偶尔看到旅游电瓶车拉着客人走过。</p>
<p><img src="http://www.robinlu.com/blog/wp-content/uploads/2009/04/p1000318.jpg" height="750" width="500" alt="P1000318" /></p>
<p>岛上众多的别墅小楼，大多年代久远，有的变成大杂院，</p>
<p><img src="http://www.robinlu.com/blog/wp-content/uploads/2009/04/p1000374.jpg" height="334" width="500" alt="P1000374" /></p>
<p>有的只有很少的人住在里面。</p>
<p><img src="http://www.robinlu.com/blog/wp-content/uploads/2009/04/p1000306.jpg" height="334" width="500" alt="P1000306" /></p>
<p>有很多似乎根本没有人住，甚至已经成了危楼。</p>
<p><img src="http://www.robinlu.com/blog/wp-content/uploads/2009/04/p1000364.jpg" height="334" width="500" alt="P1000364" /></p>
<p>还有的改成了家庭式旅馆。</p>
<p><img src="http://www.robinlu.com/blog/wp-content/uploads/2009/04/p1000378.jpg" height="334" width="500" alt="P1000378" /></p>
<p>每次吃完晚饭，我们也会到处转一圈，晚上的鼓浪屿，也相当有感觉。</p>
<p><img src="http://www.robinlu.com/blog/wp-content/uploads/2009/04/p1000416.jpg" height="334" width="500" alt="P1000416" /></p>
<p><img src="http://www.robinlu.com/blog/wp-content/uploads/2009/04/p1000414.jpg" height="334" width="500" alt="P1000414" /></p>
<p><img src="http://www.robinlu.com/blog/wp-content/uploads/2009/04/p1000343.jpg" height="750" width="500" alt="P1000343" /></p>
<p>岛上还有不少小动物。<br />
有猫猫。</p>
<p><img src="http://www.robinlu.com/blog/wp-content/uploads/2009/04/p1000466.jpg" height="316" width="500" alt="P1000466" /></p>
<p><img src="http://www.robinlu.com/blog/wp-content/uploads/2009/04/p1000376.jpg" height="320" width="500" alt="P1000376" /></p>
<p>同事拍到的蚊子。</p>
<p><img src="http://www.robinlu.com/blog/wp-content/uploads/2009/04/dsc-0645jpg-1.jpeg" height="321" width="500" alt="Dsc 0645.Jpg-1" /></p>
<p>还有满地打滚的海鲜。</p>
<p><img src="http://www.robinlu.com/blog/wp-content/uploads/2009/04/p1000358.jpg" height="325" width="500" alt="P1000358" /></p>
<p>周末的时候，去了趟厦门，主要的感觉是饮食质量远好于鼓浪屿。首推乌糖沙茶面。</p>
<p><img src="http://www.robinlu.com/blog/wp-content/uploads/2009/04/p1000437.jpg" height="372" width="500" alt="P1000437" /></p>
<p>小眼镜大排档也相当实惠。</p>
<p><img src="http://www.robinlu.com/blog/wp-content/uploads/2009/04/p1000526.jpg" height="334" width="500" alt="P1000526" /></p>
<p>只是景色就没那么好了。</p>
<p>在鼓浪屿的最后一个下午，去爬了一趟旅馆对面的日光岩，眺望了一下，那块岩石和一朵特别绿的树之间，就是我们住的地方。</p>
<p><img src="http://www.robinlu.com/blog/wp-content/uploads/2009/04/p1000475-1.jpg" height="375" width="500" alt="P1000475-1" /></p>
<p>21号，全团人马返回北京。</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robinlu?a=Aqtz4H4C4aI:vARW0MbKLoo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/robinlu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robinlu?a=Aqtz4H4C4aI:vARW0MbKLoo:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robinlu?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robinlu?a=Aqtz4H4C4aI:vARW0MbKLoo:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/robinlu?i=Aqtz4H4C4aI:vARW0MbKLoo:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.robinlu.com/blog/archives/431/feed</wfw:commentRss>
		<feedburner:origLink>http://www.robinlu.com/blog/archives/431</feedburner:origLink></item>
		<item>
		<title>动态组合named_scope</title>
		<link>http://feedproxy.google.com/~r/robinlu/~3/zLdDr8bM5D4/402</link>
		<comments>http://www.robinlu.com/blog/archives/402#comments</comments>
		<pubDate>Wed, 22 Apr 2009 15:20:39 +0000</pubDate>
		<dc:creator>Robin Lu</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[plugin]]></category>

		<category><![CDATA[rubyonrails]]></category>

		<guid isPermaLink="false">http://www.robinlu.com/blog/?p=402</guid>
		<description><![CDATA[named_scope是Ruby On Rails 2.x后一个非常好用的功能，介绍的地方已经很多，在这里不再多说。
named_scope有一个很好的地方，是数个scope和scope可以组合，本来很难看的代码可以变成这样优美可读的形式：

Post.published.by_author&#40;user&#41;.within_a_week.in_forum&#40;forum&#41;

但有时候，到底需要将哪些scopes组合在一起，在运行时才能决定，没法在程序中写死。找了一下，似乎没有现成的解决方案，就写了一个叫ScopeGroup的plugin。
使用这个plugin，可以在运行时动态组合named scope，然后可以针对这个组合来调用find, count, average等等函数。
比如，如下代码：

# 为model Post创建一个ScopeGroup
scope_group = ScopeGroup.new&#40;Post&#41;
# 将scope分别加入组合
scope_group.published
scope_group.by_author&#40;user&#41;
scope_group.within_a_week

再调用

scope_group.find&#40;:all&#41;

就等同于：

Post.published.by_author&#40;user&#41;.within_a_week

我们碰到的一个用户场景是需要根据地区、类别、状态等各种条件分层次组合生成报表，使用了动态组合named scope的方式，大大简化了代码。
我把这个插件放在了github: ScopeGroup项目主页链接。
安装方式：

script/plugin install git://github.com/robin/scopegroup.git

]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.google.com/search?hl=en&#038;client=safari&#038;rls=en-us&#038;q=named_scope&#038;btnG=Search" title="" rel="nofollow">named_scope</a>是Ruby On Rails 2.x后一个非常好用的功能，介绍的地方已经很多，在这里不再多说。</p>
<p>named_scope有一个很好的地方，是数个scope和scope可以组合，本来很难看的代码可以变成这样优美可读的形式：</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">Post.<span style="color:#9900CC;">published</span>.<span style="color:#9900CC;">by_author</span><span style="color:#006600; font-weight:bold;">&#40;</span>user<span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">within_a_week</span>.<span style="color:#9900CC;">in_forum</span><span style="color:#006600; font-weight:bold;">&#40;</span>forum<span style="color:#006600; font-weight:bold;">&#41;</span></pre></div></div>

<p>但有时候，到底需要将哪些scopes组合在一起，在运行时才能决定，没法在程序中写死。找了一下，似乎没有现成的解决方案，就写了一个叫ScopeGroup的plugin。</p>
<p>使用这个plugin，可以在运行时动态组合named scope，然后可以针对这个组合来调用find, count, average等等函数。<br />
比如，如下代码：</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;"># 为model Post创建一个ScopeGroup</span>
scope_group = ScopeGroup.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span>Post<span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#008000; font-style:italic;"># 将scope分别加入组合</span>
scope_group.<span style="color:#9900CC;">published</span>
scope_group.<span style="color:#9900CC;">by_author</span><span style="color:#006600; font-weight:bold;">&#40;</span>user<span style="color:#006600; font-weight:bold;">&#41;</span>
scope_group.<span style="color:#9900CC;">within_a_week</span></pre></div></div>

<p>再调用</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">scope_group.<span style="color:#9900CC;">find</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:all</span><span style="color:#006600; font-weight:bold;">&#41;</span></pre></div></div>

<p>就等同于：</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">Post.<span style="color:#9900CC;">published</span>.<span style="color:#9900CC;">by_author</span><span style="color:#006600; font-weight:bold;">&#40;</span>user<span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">within_a_week</span></pre></div></div>

<p>我们碰到的一个用户场景是需要根据地区、类别、状态等各种条件分层次组合生成报表，使用了动态组合named scope的方式，大大简化了代码。</p>
<p>我把这个插件放在了github: <a href="http://github.com/robin/scopegroup/tree/master" title="ScopeGroup">ScopeGroup项目主页链接</a>。</p>
<p>安装方式：</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">script<span style="color: #000000; font-weight: bold;">/</span>plugin <span style="color: #c20cb9; font-weight: bold;">install</span> git:<span style="color: #000000; font-weight: bold;">//</span>github.com<span style="color: #000000; font-weight: bold;">/</span>robin<span style="color: #000000; font-weight: bold;">/</span>scopegroup.git</pre></div></div>

<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robinlu?a=zLdDr8bM5D4:DAiAtwS3y8g:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/robinlu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robinlu?a=zLdDr8bM5D4:DAiAtwS3y8g:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robinlu?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robinlu?a=zLdDr8bM5D4:DAiAtwS3y8g:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/robinlu?i=zLdDr8bM5D4:DAiAtwS3y8g:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.robinlu.com/blog/archives/402/feed</wfw:commentRss>
		<feedburner:origLink>http://www.robinlu.com/blog/archives/402</feedburner:origLink></item>
		<item>
		<title>小议iPhone OS 3.0</title>
		<link>http://feedproxy.google.com/~r/robinlu/~3/pjI1NdQi6Po/400</link>
		<comments>http://www.robinlu.com/blog/archives/400#comments</comments>
		<pubDate>Wed, 18 Mar 2009 13:21:37 +0000</pubDate>
		<dc:creator>Robin Lu</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://www.robinlu.com/blog/?p=400</guid>
		<description><![CDATA[今天凌晨，苹果宣布了iPhone OS 3.0 。上午起来看了视频，又翻了翻文档。从开发者的角度，说说我比较感兴趣的几个更新。
Apple Push Notification Service
一直被当作后台运行程序的替代品。仍然不能有后台运行程序，解释的也很清楚了，是耗电量和待机时间不允许。但可以通过Push来唤醒应用程序。这种方式的特点是无触发不执行，执行是被动的。虽然不可能100%解决所有后台运行程序的需求，但也算提供了一种比较通用的模式。
基本原理如下图所示：

先将消息推送给Apple的APNS，由它转发到相应的iPhone上，再由iPhone OS通知到相应的程序。
可以看到，所有的消息都不是通过网络直接发送到iPhone，而是通过苹果的APNS服务转发的。这将对APNS服务有很高的要求。这也是苹果一再推迟这一功能的原因。以往年苹果网络服务的经验来看，这个服务在推出以后也许要经过一段时间才会稳定。希望苹果这次是有备而来吧。
Accessory Support
我个人认为这个功能是这次升级的一个亮点，有极大的想像空间。附属外设可以通过30-pin连接头或者蓝牙接入。我大概看了下文档，和我想像的有些出入的地方是，附属设备必须预先支持iPhone，即使用蓝牙接入方式也一样。iPhone OS 3并没有象Mac OS X 10那样，提供一个完全的蓝牙API，而是做了更高层次的封装，只有符合协议（技术层协议）的设备才能接入。想通过iPhone OS 3直接读取Wii Balance Board 中的数据目前还不可行。
In App Purchase Support
商业模式上的扩展。SDK中新加入了Store Kit 。苹果还是挺狡猾的。这个事情，它不做，总有人会做，与其让别人做，不如自己先做了，还能再收个30%。对于最终用户，直接使用iTunes帐号付款也比再引入一个付款方式要简便，也许不少应用不得不因此屈尊交这笔苹果税了。
Peer to Peer Support
这一功能是以Game Kit的方式加入的，不过苹果一再声明完全可以用在非游戏的应用上。这一功能建立在蓝牙之上的，但同样做了封装，应用仍然无法直接和蓝牙接口打交道。连接服务以session的方式维护，一个应用可以这个P2P网络中扮演三种角色，server, client, 或者peer(server+client)。两个设备之间只能有一条蓝牙连接，但是在这一个连接上可以支持多个sessions的服务。传输内容并不受限制，可以自己定义。
Core Data
其实我们早就可以在iPhone中使用SQLite，不过到iPhone OS 3，才有了类似Mac OS X中的Core Data 。这意味着，对开发者来说，使用SQLite的门槛降低了。其他好像也没什么了。
]]></description>
			<content:encoded><![CDATA[<p>今天凌晨，苹果宣布了iPhone OS 3.0 。上午起来看了视频，又翻了翻文档。从开发者的角度，说说我比较感兴趣的几个更新。</p>
<h3>Apple Push Notification Service</h3>
<p>一直被当作后台运行程序的替代品。仍然不能有后台运行程序，解释的也很清楚了，是耗电量和待机时间不允许。但可以通过Push来唤醒应用程序。这种方式的特点是无触发不执行，执行是被动的。虽然不可能100%解决所有后台运行程序的需求，但也算提供了一种比较通用的模式。</p>
<p>基本原理如下图所示：<br />
<img src="http://www.robinlu.com/blog/wp-content/uploads/2009/03/remote-notif-simplejpg.jpeg" height="90" width="652" border="1" hspace="4" vspace="4" alt="Remote Notif Simple.Jpg" /><br />
先将消息推送给Apple的APNS，由它转发到相应的iPhone上，再由iPhone OS通知到相应的程序。</p>
<p>可以看到，所有的消息都不是通过网络直接发送到iPhone，而是通过苹果的APNS服务转发的。这将对APNS服务有很高的要求。这也是苹果一再推迟这一功能的原因。以往年苹果网络服务的经验来看，这个服务在推出以后也许要经过一段时间才会稳定。希望苹果这次是有备而来吧。</p>
<h3>Accessory Support</h3>
<p>我个人认为这个功能是这次升级的一个亮点，有极大的想像空间。附属外设可以通过30-pin连接头或者蓝牙接入。我大概看了下文档，和我想像的有些出入的地方是，附属设备必须预先支持iPhone，即使用蓝牙接入方式也一样。iPhone OS 3并没有象Mac OS X 10那样，提供一个完全的蓝牙API，而是做了更高层次的封装，只有符合协议（技术层协议）的设备才能接入。想通过iPhone OS 3直接读取Wii Balance Board 中的数据目前还不可行。</p>
<h3>In App Purchase Support</h3>
<p>商业模式上的扩展。SDK中新加入了Store Kit 。苹果还是挺狡猾的。这个事情，它不做，总有人会做，与其让别人做，不如自己先做了，还能再收个30%。对于最终用户，直接使用iTunes帐号付款也比再引入一个付款方式要简便，也许不少应用不得不因此屈尊交这笔苹果税了。</p>
<h3>Peer to Peer Support</h3>
<p>这一功能是以Game Kit的方式加入的，不过苹果一再声明完全可以用在非游戏的应用上。这一功能建立在蓝牙之上的，但同样做了封装，应用仍然无法直接和蓝牙接口打交道。连接服务以session的方式维护，一个应用可以这个P2P网络中扮演三种角色，server, client, 或者peer(server+client)。两个设备之间只能有一条蓝牙连接，但是在这一个连接上可以支持多个sessions的服务。传输内容并不受限制，可以自己定义。</p>
<h3>Core Data</h3>
<p>其实我们早就可以在iPhone中使用SQLite，不过到iPhone OS 3，才有了类似Mac OS X中的Core Data 。这意味着，对开发者来说，使用SQLite的门槛降低了。其他好像也没什么了。</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robinlu?a=pjI1NdQi6Po:mAcyEi-k6IY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/robinlu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robinlu?a=pjI1NdQi6Po:mAcyEi-k6IY:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robinlu?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robinlu?a=pjI1NdQi6Po:mAcyEi-k6IY:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/robinlu?i=pjI1NdQi6Po:mAcyEi-k6IY:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.robinlu.com/blog/archives/400/feed</wfw:commentRss>
		<feedburner:origLink>http://www.robinlu.com/blog/archives/400</feedburner:origLink></item>
		<item>
		<title>我的妈妈</title>
		<link>http://feedproxy.google.com/~r/robinlu/~3/EXwDBb5CCQc/397</link>
		<comments>http://www.robinlu.com/blog/archives/397#comments</comments>
		<pubDate>Sun, 08 Mar 2009 19:13:10 +0000</pubDate>
		<dc:creator>Robin Lu</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[life]]></category>

		<guid isPermaLink="false">http://www.robinlu.com/blog/?p=397</guid>
		<description><![CDATA[
我的妈妈，吴维备，生于1932年10月16日。姥姥袁季兰怀着她七个月的时候，去苏州开会，下台阶不小心跌了一跤，引起早产，在苏州博习医院生下妈妈。
幼年和少年，刚好是抗日战争，随家人辗转于松江、浙江东阳和苏州等地。影响最深刻的是松江，住在乐恩堂附近。高中就读于苏州景海女中，因为喜欢画画，希望读建筑专业，但在老师影响下，毕业后考入东吴大学物理系。经人介绍，认识了当时在东吴附中读书的父亲。
东吴大学当时仍属私立大学，收费较高，刚好北方的大学来南方招收插班生，妈妈分别考取了一所东北的大学的建筑系和燕京大学物理系。当时东北仍被认为是“关外”，又因为我的姥爷和三舅一家在北京，最终在东吴大学上了一年后，转入燕京大学物理系。后来合并到北京大学物理系。
1953年，妈妈毕业后被分配到中央人民政府地质部，在北京化验室做光谱分析。1955年9月，接到人事部门通知，要调动到在乌鲁木齐的第13地质大队，一个中苏混合队，急需光谱分析人员。最初选定的是另一个男生，但那个男生推说健康问题不愿意去，才找到她。妈妈认为是工作需要，又符合她去野外工作的心愿，欣然答应。告别家人，两天后出发。乘火车只能到甘肃武威，又倒了两次卡车才到乌鲁木齐，全程花了17天。据妈妈说，一路是唱着歌去的。
1957年左右，让知识分子给组织提意见，妈妈从不会圆滑处事，又缺乏政治斗争经验，直抒己见，马上被打为右派。降薪，遭批斗，蹲牛棚，接受劳动改造。父亲也遭受株连，被下放。不明真相的邻居把屎拉在家门口。哥哥生日吹蜡烛被人看见，也被写成大字报，说是在家里搞资产阶级仪式。1976年文化大革命结束，妈妈直到1980年才平反。1984年才有人敢做她的入党介绍人。
妈妈一直从事光谱分析工作。我很小就熟悉光谱分析的流程，认识镭的谱线，对元素周期表有特殊感情。妈妈平反后被评为高级工程师，后来又任新疆地矿局实验室总工程师，本可以工作到60岁，但妈妈执意认为应该让给更年轻的人，55岁就开始申请退休，被再三挽留，最终在1989年获得批准。退休后作为有特殊贡献的科技人员享受国务院津贴。
妈妈最喜欢做三件事，读书、音乐和孩子。在读书上，妈妈有自己的理解，她不喜欢《围城》，认为太过刻薄，但我拿回家的村上春树的书却全都看过，同意村上是个很地道的人。妈妈出身于教会家庭，虽然成年后不再信教，仍会唱赞美诗，受少年时期教育影响，喜欢美国民歌，但对各种曲调优美的新歌也不拒绝，常常跟着年轻人学唱新歌，在她的外孙女考上大学的庆祝聚会上，七十多岁的妈妈以一曲周杰伦的《蜗牛》惊倒四座。妈妈喜欢小孩子，会讲故事，会唱儿歌，会做手工，会带着孩子做各种她编出来的游戏。无论是我们，还是她的孙子辈，都很喜欢和她在一起。
妈妈对于教育，除了要求我们做一个正直的人，没有太多的要求。对我们的功课或者考试能得第几名并不太在乎。从来不要求我们做没有兴趣做的事情，遇到问题也总是尊重我们的想法。我高三的时候，妈妈看到电视里演成龙的《醉拳》，知道我喜欢，会专门叫我去看。也是高三，有段时间我的几个朋友常常晚上找我出去玩，妈妈有些担心，和我谈过后，在门上贴了个纸条，上面写&#8221;boys, you are welcome on the weekend&#8221;，让我影响深刻。
妈妈最厌恶的事情是不讲真话。诚实是妈妈最简单的处事原则，她为此做了二十多年的右派，也没有改变过一点。妈妈最害怕的事情是麻烦别人，从来不会和别人争什么东西，而如果别人帮助了她，那怕理所当然，也会感谢对方。
2009年3月4日，妈妈被折磨了她一年多的肺癌带走了。临走前，妈妈一直在谢谢周围每个人，下呼吸机的时候，还在谢谢帮她拿下面罩的护士，然后就慢慢闭上了眼睛。妈妈就是这样，无论这个世界是不是真得值得留恋，心怀感激的走了。
]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.robinlu.com/blog/wp-content/uploads/2009/03/mama.png" height="179" width="127" border="1" hspace="4" vspace="4" alt="Mama" /></p>
<p>我的妈妈，吴维备，生于1932年10月16日。姥姥<a href="http://zh.wikipedia.org/wiki/袁昶#.E8.BA.AB.E5.90.8E.E4.BA.8B" title="" rel="nofollow">袁季兰</a>怀着她七个月的时候，去苏州开会，下台阶不小心跌了一跤，引起早产，在苏州博习医院生下妈妈。</p>
<p>幼年和少年，刚好是抗日战争，随家人辗转于松江、浙江东阳和苏州等地。影响最深刻的是松江，住在乐恩堂附近。高中就读于苏州景海女中，因为喜欢画画，希望读建筑专业，但在老师影响下，毕业后考入东吴大学物理系。经人介绍，认识了当时在东吴附中读书的父亲。</p>
<p>东吴大学当时仍属私立大学，收费较高，刚好北方的大学来南方招收插班生，妈妈分别考取了一所东北的大学的建筑系和燕京大学物理系。当时东北仍被认为是“关外”，又因为我的姥爷和三舅一家在北京，最终在东吴大学上了一年后，转入燕京大学物理系。后来合并到北京大学物理系。</p>
<p>1953年，妈妈毕业后被分配到中央人民政府地质部，在北京化验室做光谱分析。1955年9月，接到人事部门通知，要调动到在乌鲁木齐的第13地质大队，一个中苏混合队，急需光谱分析人员。最初选定的是另一个男生，但那个男生推说健康问题不愿意去，才找到她。妈妈认为是工作需要，又符合她去野外工作的心愿，欣然答应。告别家人，两天后出发。乘火车只能到甘肃武威，又倒了两次卡车才到乌鲁木齐，全程花了17天。据妈妈说，一路是唱着歌去的。</p>
<p>1957年左右，让知识分子给组织提意见，妈妈从不会圆滑处事，又缺乏政治斗争经验，直抒己见，马上被打为右派。降薪，遭批斗，蹲牛棚，接受劳动改造。父亲也遭受株连，被下放。不明真相的邻居把屎拉在家门口。哥哥生日吹蜡烛被人看见，也被写成大字报，说是在家里搞资产阶级仪式。1976年文化大革命结束，妈妈直到1980年才平反。1984年才有人敢做她的入党介绍人。</p>
<p>妈妈一直从事光谱分析工作。我很小就熟悉光谱分析的流程，认识镭的谱线，对元素周期表有特殊感情。妈妈平反后被评为高级工程师，后来又任新疆地矿局实验室总工程师，本可以工作到60岁，但妈妈执意认为应该让给更年轻的人，55岁就开始申请退休，被再三挽留，最终在1989年获得批准。退休后作为有特殊贡献的科技人员享受国务院津贴。</p>
<p>妈妈最喜欢做三件事，读书、音乐和孩子。在读书上，妈妈有自己的理解，她不喜欢《围城》，认为太过刻薄，但我拿回家的村上春树的书却全都看过，同意村上是个很地道的人。妈妈出身于教会家庭，虽然成年后不再信教，仍会唱赞美诗，受少年时期教育影响，喜欢美国民歌，但对各种曲调优美的新歌也不拒绝，常常跟着年轻人学唱新歌，在她的外孙女考上大学的庆祝聚会上，七十多岁的妈妈以一曲周杰伦的《蜗牛》惊倒四座。妈妈喜欢小孩子，会讲故事，会唱儿歌，会做手工，会带着孩子做各种她编出来的游戏。无论是我们，还是她的孙子辈，都很喜欢和她在一起。</p>
<p>妈妈对于教育，除了要求我们做一个正直的人，没有太多的要求。对我们的功课或者考试能得第几名并不太在乎。从来不要求我们做没有兴趣做的事情，遇到问题也总是尊重我们的想法。我高三的时候，妈妈看到电视里演成龙的《醉拳》，知道我喜欢，会专门叫我去看。也是高三，有段时间我的几个朋友常常晚上找我出去玩，妈妈有些担心，和我谈过后，在门上贴了个纸条，上面写&#8221;boys, you are welcome on the weekend&#8221;，让我影响深刻。</p>
<p>妈妈最厌恶的事情是不讲真话。诚实是妈妈最简单的处事原则，她为此做了二十多年的右派，也没有改变过一点。妈妈最害怕的事情是麻烦别人，从来不会和别人争什么东西，而如果别人帮助了她，那怕理所当然，也会感谢对方。</p>
<p>2009年3月4日，妈妈被折磨了她一年多的肺癌带走了。临走前，妈妈一直在谢谢周围每个人，下呼吸机的时候，还在谢谢帮她拿下面罩的护士，然后就慢慢闭上了眼睛。妈妈就是这样，无论这个世界是不是真得值得留恋，心怀感激的走了。</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robinlu?a=EXwDBb5CCQc:WGCl0vGpfQQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/robinlu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robinlu?a=EXwDBb5CCQc:WGCl0vGpfQQ:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robinlu?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robinlu?a=EXwDBb5CCQc:WGCl0vGpfQQ:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/robinlu?i=EXwDBb5CCQc:WGCl0vGpfQQ:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.robinlu.com/blog/archives/397/feed</wfw:commentRss>
		<feedburner:origLink>http://www.robinlu.com/blog/archives/397</feedburner:origLink></item>
	</channel>
</rss>
