<?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"
	>

<channel>
	<title>雪道屋 &#124; Snow on rails blog</title>
	<atom:link href="http://blog.snowonrails.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.snowonrails.com</link>
	<description>life.each{&#124;day&#124; day.live_well!}</description>
	<pubDate>Fri, 07 Nov 2008 16:12:41 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>One month in FreeWheel</title>
		<link>http://blog.snowonrails.com/articles/2008/11/05/one-month-in-freewheel/</link>
		<comments>http://blog.snowonrails.com/articles/2008/11/05/one-month-in-freewheel/#comments</comments>
		<pubDate>Wed, 05 Nov 2008 14:18:48 +0000</pubDate>
		<dc:creator>snow</dc:creator>
		
		<category><![CDATA[freewheel]]></category>

		<guid isPermaLink="false">http://blog.snowonrails.com/?p=86</guid>
		<description><![CDATA[来到freewheel已经整一个月了，进一步总结一下自己的感受。
1. 经过了三周的培训，以及一次验收考核，我们终于出师了。期间由于我和Gavin经过了两位Team Leader的指点，所以应该说对系统的还是有比较好的了解。我和Gavin还分别给晚我们一些进来的丹丹同学做了一次”培训“，把丹丹听得云里雾里的，有点惭愧。在第二个周末下午是我给讲关于advertising方面的知识，从两点开始讲了一下午，讲完了发现嗓子有点肿了，想想一周以来两位Team Leader一直是这样给我们讲课的，所以不由心声敬意，正所谓不当讲师不知道讲课辛苦啊。
2. 为了更好更快的了解系统，从而早日进入dev的角色，我在前期阶段被暂时分配到QA Team做一些介于dev和QA之间的事情，最主要的包括帮助Yingnan和weiwei做我们的自动化测试框架bspec。该框架的核心是rspec和cucumber，包括一些customized的用于统计的formatter，同时于cc集成。这套框架以后将成为QA测试的主要武器。今天中午，ci上边的现有的bvi和api case终于全部通过了，也算是bspec项目的小小里程碑了。
3. 昨天也就是11.4号，终于见到了DianeYu,其实并不是第一次见面，因为在我之前面试的时候就和Diane有过非常短暂的对话，类似 ”你好“ ”您好，我过来面试的“ ”请问是张雪吗“ ”是的，是我“ ”请稍等&#8230;“ 这样子，对话不超过5句，应该说当时没留下很深的印象，之前由于看过两篇程序员的文章，所以有一点印象，知道这个人应该是这里的老大。这次见到Diane应该算是正式的见面吧。早上刚到公司就看到Diane也从门口进来，正好我的座位对着门口，所以Diane径直的就往我这边走过来了，我也凭着印象认出了她，Diane亲切的和我打招呼，感觉她的起色不错，满面红光的，丝毫不像刚从地球的另一半飞回来的。简单的几句话，能发现Diane非常的热情，同时也对于我使用mac电脑表现的些许surprise。其实说实话，我刚来公司的时候真的不能相信居然还有一半多的dev和QA使用windows系统，在我的印象当中ruby/rails开发应该是和windows绝缘的，顶多是用测试一下ie的显示效果，想想自己在使用了近两年mac之后，有几天要在windows下工作，结果那2天是我近两年来开发感觉最不爽的两天，也正是由于此，所以第三天立马出去买了台macbook pro。
4. 今天，我们系统的1.9版本release了。下午的时候，公司准备了好多蛋糕和cookie，都聚集在501的一角，边吃边听Diane给我们讲她这次美国之旅的感受，当前形式对公司战略上的一些调整，融资的状况，客户的状况，等等，所有一切，没有保留，完全讲给大家。这种感觉非常的好，至少对我来说，能感觉到所有的这些都是和我们相关的，尤其是你想到，你在地球的一边作着很多努力，同时在地球的另一边有你的同事和你一起努力并且把这些努力转化成收益，这其实一件很神奇的事情。当然自已以前也经常工作于跨国跨时区的团队，但是Diane今天分享的事情让我，感觉到1)我们在做有意义的事情2)我们在今后会为我们今天做的事情感到骄傲。
基本就是这些了，记得在一个多月前，自己要作出选择是否加入freewheel，那时还有一点忐忑和犹豫。经历了一个月的工作体验，可以说现在我比较庆幸当初自己做出了今天不会后悔的决定。马上就要准备2.0的release了，属于我的战斗才刚刚开始，已经有点跃跃欲试了。
]]></description>
			<content:encoded><![CDATA[<p>来到freewheel已经整一个月了，进一步总结一下自己的感受。<br />
1. 经过了三周的培训，以及一次验收考核，我们终于出师了。期间由于我和Gavin经过了两位Team Leader的指点，所以应该说对系统的还是有比较好的了解。我和Gavin还分别给晚我们一些进来的丹丹同学做了一次”培训“，把丹丹听得云里雾里的，有点惭愧。在第二个周末下午是我给讲关于advertising方面的知识，从两点开始讲了一下午，讲完了发现嗓子有点肿了，想想一周以来两位Team Leader一直是这样给我们讲课的，所以不由心声敬意，正所谓不当讲师不知道讲课辛苦啊。</p>
<p>2. 为了更好更快的了解系统，从而早日进入dev的角色，我在前期阶段被暂时分配到QA Team做一些介于dev和QA之间的事情，最主要的包括帮助Yingnan和<a href="http://b2.broom9.com/">weiwei</a>做我们的自动化测试框架bspec。该框架的核心是rspec和cucumber，包括一些customized的用于统计的formatter，同时于cc集成。这套框架以后将成为QA测试的主要武器。今天中午，ci上边的现有的bvi和api case终于全部通过了，也算是bspec项目的小小里程碑了。</p>
<p>3. 昨天也就是11.4号，终于见到了DianeYu,其实并不是第一次见面，因为在我之前面试的时候就和Diane有过非常短暂的对话，类似 ”你好“ ”您好，我过来面试的“ ”请问是张雪吗“ ”是的，是我“ ”请稍等&#8230;“ 这样子，对话不超过5句，应该说当时没留下很深的印象，之前由于看过两篇程序员的文章，所以有一点印象，知道这个人应该是这里的老大。这次见到Diane应该算是正式的见面吧。早上刚到公司就看到Diane也从门口进来，正好我的座位对着门口，所以Diane径直的就往我这边走过来了，我也凭着印象认出了她，Diane亲切的和我打招呼，感觉她的起色不错，满面红光的，丝毫不像刚从地球的另一半飞回来的。简单的几句话，能发现Diane非常的热情，同时也对于我使用mac电脑表现的些许surprise。其实说实话，我刚来公司的时候真的不能相信居然还有一半多的dev和QA使用windows系统，在我的印象当中ruby/rails开发应该是和windows绝缘的，顶多是用测试一下ie的显示效果，想想自己在使用了近两年mac之后，有几天要在windows下工作，结果那2天是我近两年来开发感觉最不爽的两天，也正是由于此，所以第三天立马出去买了台macbook pro。</p>
<p>4. 今天，我们系统的1.9版本release了。下午的时候，公司准备了好多蛋糕和cookie，都聚集在501的一角，边吃边听Diane给我们讲她这次美国之旅的感受，当前形式对公司战略上的一些调整，融资的状况，客户的状况，等等，所有一切，没有保留，完全讲给大家。这种感觉非常的好，至少对我来说，能感觉到所有的这些都是和我们相关的，尤其是你想到，你在地球的一边作着很多努力，同时在地球的另一边有你的同事和你一起努力并且把这些努力转化成收益，这其实一件很神奇的事情。当然自已以前也经常工作于跨国跨时区的团队，但是Diane今天分享的事情让我，感觉到1)我们在做有意义的事情2)我们在今后会为我们今天做的事情感到骄傲。</p>
<p>基本就是这些了，记得在一个多月前，自己要作出选择是否加入freewheel，那时还有一点忐忑和犹豫。经历了一个月的工作体验，可以说现在我比较庆幸当初自己做出了今天不会后悔的决定。马上就要准备2.0的release了，属于我的战斗才刚刚开始，已经有点跃跃欲试了。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.snowonrails.com/articles/2008/11/05/one-month-in-freewheel/feed/</wfw:commentRss>
		</item>
		<item>
		<title>CS under Mac</title>
		<link>http://blog.snowonrails.com/articles/2008/10/11/cs-under-mac/</link>
		<comments>http://blog.snowonrails.com/articles/2008/10/11/cs-under-mac/#comments</comments>
		<pubDate>Sat, 11 Oct 2008 01:37:51 +0000</pubDate>
		<dc:creator>snow</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.snowonrails.com/?p=85</guid>
		<description><![CDATA[CS水平在大学期间的好长一段时间也是衡量一个学生的标准之一。现在终于也在mac上边找到了类似的游戏AssaultCube，哈哈要重新苦练一下了。
PS:用了mac快2年了，居然从来没玩过游戏，这是安装的第一款。
]]></description>
			<content:encoded><![CDATA[<p>CS水平在大学期间的好长一段时间也是衡量一个学生的标准之一。现在终于也在mac上边找到了类似的游戏<a href="http://assault.cubers.net/">AssaultCube</a>，哈哈要重新苦练一下了。</p>
<p>PS:用了mac快2年了，居然从来没玩过游戏，这是安装的第一款。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.snowonrails.com/articles/2008/10/11/cs-under-mac/feed/</wfw:commentRss>
		</item>
		<item>
		<title>One week in Freewheel</title>
		<link>http://blog.snowonrails.com/articles/2008/10/10/one-week-in-freewheel/</link>
		<comments>http://blog.snowonrails.com/articles/2008/10/10/one-week-in-freewheel/#comments</comments>
		<pubDate>Fri, 10 Oct 2008 15:53:21 +0000</pubDate>
		<dc:creator>snow</dc:creator>
		
		<category><![CDATA[freewheel]]></category>

		<guid isPermaLink="false">http://blog.snowonrails.com/?p=84</guid>
		<description><![CDATA[
来到Freewheel一周，说说感受。
0. 听行政经理说我正好是FW北京office的第四十位员工。
1. 大家似乎有点含蓄，可能都是技术人员出身的缘故，比较内敛。不向原来的1688，整个是天津相声和东北二人转的剧场！不过在午间吃饭的时候还是能看出大家的幽默感，话题相当之诙谐，同时不乏对一些人的调侃。
2. 技术氛围浓郁。北京office这边完全是技术团队，所以公司里边的技术氛围那是相当的浓郁。一会听到对面的两个哥们儿在那里讨论mysql的存储过程的细节已经千万级别数据量要执行的时间，一会又看到风风火火的QA小姑娘跑过来和旁边的哥们儿就jira上的某个ticket进行讨论。偶尔回一下头看到的也都是每个屏幕上几乎都会有的黑底绿字的console或者正飞快的在netbean or emac or Intelj上边敲代码调试的一个个专注的后脑勺(背对着我坐着)。另一个能体现技术氛围的特点就是市面上能够找到的ruby, rails, html, css, linux, ajax等等书籍几乎都可以在这里找到，每个人的桌面上几乎都散落着基本，在旁边的抽屉里边也找到了不少，不过似乎都很新可能大家都是当字典用，遇到问题了才拿来翻翻。我强烈建议公司弄一个书架，将所有的书在书架上归类放好，而且每个人用过之后及时放回原处这样能够更好的管理和利用图书。毕竟经常放在角落里的书是很少有人会想起来去看的。
3. 吃喝无忧。早点，午饭，下午茶，甚至是晚上加班时需要充饥，在FW的“食品加油角”能找到各种食品和饮料，中午大家围在一起吃饭闲聊的感觉更是很好。


4. 产品很好很强大。在经过了两天的培训之后，逐渐对FW的产品和架构有了一定的认识，产品确实是一个能解决billion dollar question的东西。同时后端的系统也相当的复杂，尤其是Ad server，涉及到相当多的东西，对于性能要求很高。感觉即使是UI的系统也是非经过专门培训或者专门的熟悉广告业务的从业人员而不能够轻易使用的。毕竟business决定了这不是一个什么人都能用的系统。给我们培训的哥们儿也是相当的强，第二堂培训干脆就是徒手将整个系统结构图画了出来，同时所有的要素也是一个不落，可见其对业务和整个系统理解之透彻。
总体来说freewheel给我的第一印象非常的不错，人很nice，相当的开放宽松，氛围很好，我一去就赶上了两位同事结婚回了，看着他们分发喜糖的时候洋溢着幸福的笑容，而且全公司的所有人都通过email给他们道喜，就是一家人的感觉。在经过一段时间的培训和熟悉应该就要逐渐的参与到开发和测试中来了，现在的斗志比较足，已经嗅到了为了每月一次的release而和requirement，ticket战斗的味道&#8230;..
]]></description>
			<content:encoded><![CDATA[<p><a href="http://static.flickr.com/3145/2928674537_c0a6e4382e.jpg" rel="lightbox[84]" title="FreeWheel" rel="" class=""><img alt="FreeWheel" src="http://static.flickr.com/3145/2928674537_c0a6e4382e.jpg"></a></p>
<p>来到Freewheel一周，说说感受。<br />
0. 听行政经理说我正好是FW北京office的第四十位员工。<br />
1. 大家似乎有点含蓄，可能都是技术人员出身的缘故，比较内敛。不向原来的1688，整个是天津相声和东北二人转的剧场！不过在午间吃饭的时候还是能看出大家的幽默感，话题相当之诙谐，同时不乏对一些人的调侃。<br />
2. 技术氛围浓郁。北京office这边完全是技术团队，所以公司里边的技术氛围那是相当的浓郁。一会听到对面的两个哥们儿在那里讨论mysql的存储过程的细节已经千万级别数据量要执行的时间，一会又看到风风火火的QA小姑娘跑过来和旁边的哥们儿就jira上的某个ticket进行讨论。偶尔回一下头看到的也都是每个屏幕上几乎都会有的黑底绿字的console或者正飞快的在netbean or emac or Intelj上边敲代码调试的一个个专注的后脑勺(背对着我坐着)。另一个能体现技术氛围的特点就是市面上能够找到的ruby, rails, html, css, linux, ajax等等书籍几乎都可以在这里找到，每个人的桌面上几乎都散落着基本，在旁边的抽屉里边也找到了不少，不过似乎都很新可能大家都是当字典用，遇到问题了才拿来翻翻。我强烈建议公司弄一个书架，将所有的书在书架上归类放好，而且每个人用过之后及时放回原处这样能够更好的管理和利用图书。毕竟经常放在角落里的书是很少有人会想起来去看的。<br />
3. 吃喝无忧。早点，午饭，下午茶，甚至是晚上加班时需要充饥，在FW的“食品加油角”能找到各种食品和饮料，中午大家围在一起吃饭闲聊的感觉更是很好。</p>
<p><a href="http://static.flickr.com/3029/2929534136_cbc0ec068c.jpg" rel="lightbox[84]" title="Lunch time" rel="" class=""><img alt="Lunch time" src="http://static.flickr.com/3029/2929534136_cbc0ec068c_m.jpg" style="float: left; " class="alignleft"></a></p>
<p><a href="http://static.flickr.com/3288/2928667569_2cd37727dd.jpg" rel="lightbox[84]" title="FW的加油角" rel="" class=""><img alt="FW的加油角" src="http://static.flickr.com/3288/2928667569_2cd37727dd_m.jpg"></a></p>
<p>4. 产品很好很强大。在经过了两天的培训之后，逐渐对FW的产品和架构有了一定的认识，产品确实是一个能解决billion dollar question的东西。同时后端的系统也相当的复杂，尤其是Ad server，涉及到相当多的东西，对于性能要求很高。感觉即使是UI的系统也是非经过专门培训或者专门的熟悉广告业务的从业人员而不能够轻易使用的。毕竟business决定了这不是一个什么人都能用的系统。给我们培训的哥们儿也是相当的强，第二堂培训干脆就是徒手将整个系统结构图画了出来，同时所有的要素也是一个不落，可见其对业务和整个系统理解之透彻。</p>
<p>总体来说freewheel给我的第一印象非常的不错，人很nice，相当的开放宽松，氛围很好，我一去就赶上了两位同事结婚回了，看着他们分发喜糖的时候洋溢着幸福的笑容，而且全公司的所有人都通过email给他们道喜，就是一家人的感觉。在经过一段时间的培训和熟悉应该就要逐渐的参与到开发和测试中来了，现在的斗志比较足，已经嗅到了为了每月一次的release而和requirement，ticket战斗的味道&#8230;..</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.snowonrails.com/articles/2008/10/10/one-week-in-freewheel/feed/</wfw:commentRss>
		</item>
		<item>
		<title>应用google map api 找出附近城市</title>
		<link>http://blog.snowonrails.com/articles/2008/09/24/%e5%ba%94%e7%94%a8google-map-api-%e6%89%be%e5%87%ba%e9%99%84%e8%bf%91%e5%9f%8e%e5%b8%82/</link>
		<comments>http://blog.snowonrails.com/articles/2008/09/24/%e5%ba%94%e7%94%a8google-map-api-%e6%89%be%e5%87%ba%e9%99%84%e8%bf%91%e5%9f%8e%e5%b8%82/#comments</comments>
		<pubDate>Wed, 24 Sep 2008 04:00:02 +0000</pubDate>
		<dc:creator>snow</dc:creator>
		
		<category><![CDATA[javascript]]></category>

		<category><![CDATA[google map api]]></category>

		<guid isPermaLink="false">http://blog.snowonrails.com/?p=82</guid>
		<description><![CDATA[最近的一个项目中有这么一个功能需求，在搜索一个城市的某些记录的时候后，要将该城市附近城市的类似数据也现实出来。于是上网google一下，希望有相关api能够提供输入城市名称返回附近城市的列表的功能，找了半天似乎也没有类似api，只找到一个 Urban Mapping 不过是提供neighborhoods 查找功能的（其实neighborhoods应该是更为合理的，不过似乎客户就是想显示临近的city），没办法，只能又回到了google map,既希望于能找出一些可用的api。之前应用google map的场景也不少，但是都没有接触过GDirection这个类，这次又仔细了看了一遍api,发现似乎可以利用这个类来达到我的目的。主要思想就是，首先找出你要用到的所有城市(我们这里是CA Bay Area 附近的所有城市)，然后一次调用gmap的接口,发送类似 “from: ** to: ** ”这样的query 给gdirection, 然后通过在回调方法load中调用getDistance方法来获得两个城市之间的距离，这样我们就可以任意的定义&#8221;nearby&#8221;的距离，然后根据获得的distance来判断一个城市是否是另一个城市的&#8221;nearby city&#8221;.
这个解决方法的关键步骤就在于如何将所有的city两两之间的距离自动发送给gmap api,然后返回结果。一开始我也没多想，就循环呗，于是循环调用api 发送和回调代码，大概是这个样子的：

function initialize&#40;&#41;&#123;
...
	while&#40;cities.length&#38;gt;0&#41;&#123;
		city = cities.shift&#40;&#41;;
		index = 0
		for&#40;c in cities&#41;&#123;
			direction = new GDirections&#40;&#41;;
			query = &#34;from: &#34;+city+&#34; to: &#34;+cities&#91;c&#93;
			direction.load&#40;query&#41;;
			listen&#40;direction,city,cities&#91;c&#93;&#41;;
		&#125;
	 &#125;
...
&#125;
// 回调方法
function listen&#40;&#41;&#123;...&#125;

结果代码出了几个问题：

只运行了几个结果就报错跳出了
browser会提示脚本运行会使browser变慢
由于连续的发放请求，被google认为使spam，会将api key停止是用一会。

经过一番尝试想到从一下几个方面解决此问题：

由于回调代码是异步的而且不能保证执行的顺序所以造成循环调用的时候报错，要解决此问题，必须保证query“一个接一个”的发送，发送一个query-执行回调代码完成－再发送下一个query。因此不能是用简单的循环来做此事，重构上述代码用递归的方式运行
将每一发送的时间间隔提高，防止被google当作spam，配合prototype的periodicalexecuter使用，效果甚佳。

下面给出完整的rhtml页面代码

&#60;html&#62;
	&#60;head&#62;
		&#60;%= javascript_include_tag &#34;prototype&#34;%&#62;
		&#60;script src=&#34;http://www.google.com/jsapi?key=YOUR_API&#34;
		  type=&#34;text/javascript&#34;&#62;&#60;/script&#62;
		&#60;script type=&#34;text/javascript&#34; charset=&#34;utf-8&#34;&#62;
		&#60;!-- =================================== --&#62;
		&#60;!-- = Google map related code begin = --&#62;
		&#60;!-- [...]]]></description>
			<content:encoded><![CDATA[<p>最近的一个项目中有这么一个功能需求，在搜索一个城市的某些记录的时候后，要将该城市附近城市的类似数据也现实出来。于是上网google一下，希望有相关api能够提供输入城市名称返回附近城市的列表的功能，找了半天似乎也没有类似api，只找到一个 <a href="http://developer.urbanmapping.com/demo" target="_blank">Urban Mapping</a> 不过是提供neighborhoods 查找功能的（其实neighborhoods应该是更为合理的，不过似乎客户就是想显示临近的city），没办法，只能又回到了google map,既希望于能找出一些可用的api。之前应用google map的场景也不少，但是都没有接触过GDirection这个类，这次又仔细了看了一遍api,发现似乎可以利用这个类来达到我的目的。主要思想就是，首先找出你要用到的所有城市(我们这里是CA Bay Area 附近的所有城市)，然后一次调用gmap的接口,发送类似 “from: ** to: ** ”这样的query 给gdirection, 然后通过在回调方法load中调用getDistance方法来获得两个城市之间的距离，这样我们就可以任意的定义&#8221;nearby&#8221;的距离，然后根据获得的distance来判断一个城市是否是另一个城市的&#8221;nearby city&#8221;.</p>
<p>这个解决方法的关键步骤就在于如何将所有的city两两之间的距离自动发送给gmap api,然后返回结果。一开始我也没多想，就循环呗，于是循环调用api 发送和回调代码，大概是这个样子的：</p>

<div class="wp_syntax"><div class="code"><pre class="javascript javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> initialize<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
...
	<span style="color: #000066; font-weight: bold;">while</span><span style="color: #009900;">&#40;</span>cities.<span style="color: #660066;">length</span><span style="color: #339933;">&amp;</span>gt;0<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		city <span style="color: #339933;">=</span> cities.<span style="color: #660066;">shift</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>;
		index <span style="color: #339933;">=</span> 0
		<span style="color: #000066; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span>c <span style="color: #000066; font-weight: bold;">in</span> cities<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			direction <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> GDirections<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>;
			query <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;from: &quot;</span><span style="color: #339933;">+</span>city<span style="color: #339933;">+</span><span style="color: #3366CC;">&quot; to: &quot;</span><span style="color: #339933;">+</span>cities<span style="color: #009900;">&#91;</span>c<span style="color: #009900;">&#93;</span>
			direction.<span style="color: #660066;">load</span><span style="color: #009900;">&#40;</span>query<span style="color: #009900;">&#41;</span>;
			listen<span style="color: #009900;">&#40;</span>direction<span style="color: #339933;">,</span>city<span style="color: #339933;">,</span>cities<span style="color: #009900;">&#91;</span>c<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>;
		<span style="color: #009900;">&#125;</span>
	 <span style="color: #009900;">&#125;</span>
...
<span style="color: #009900;">&#125;</span>
<span style="color: #006600; font-style: italic;">// 回调方法</span>
<span style="color: #003366; font-weight: bold;">function</span> listen<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>...<span style="color: #009900;">&#125;</span></pre></div></div>

<p>结果代码出了几个问题：</p>
<ol>
<li>只运行了几个结果就报错跳出了</li>
<li>browser会提示脚本运行会使browser变慢</li>
<li>由于连续的发放请求，被google认为使spam，会将api key停止是用一会。</li>
</ol>
<p>经过一番尝试想到从一下几个方面解决此问题：</p>
<ol>
<li>由于回调代码是异步的而且不能保证执行的顺序所以造成循环调用的时候报错，要解决此问题，必须保证query“一个接一个”的发送，发送一个query-执行回调代码完成－再发送下一个query。因此不能是用简单的循环来做此事，重构上述代码用递归的方式运行</li>
<li>将每一发送的时间间隔提高，防止被google当作spam，配合prototype的periodicalexecuter使用，效果甚佳。</li>
</ol>
<p>下面给出完整的rhtml页面代码</p>

<div class="wp_syntax"><div class="code"><pre class="javascript javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>html<span style="color: #339933;">&gt;</span>
	<span style="color: #339933;">&lt;</span>head<span style="color: #339933;">&gt;</span>
		<span style="color: #339933;">&lt;%=</span> javascript_include_tag <span style="color: #3366CC;">&quot;prototype&quot;</span><span style="color: #339933;">%&gt;</span>
		<span style="color: #339933;">&lt;</span>script src<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;http://www.google.com/jsapi?key=YOUR_API&quot;</span>
		  type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text/javascript&quot;</span><span style="color: #339933;">&gt;&lt;/</span>script<span style="color: #339933;">&gt;</span>
		<span style="color: #339933;">&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text/javascript&quot;</span> charset<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;utf-8&quot;</span><span style="color: #339933;">&gt;</span>
		<span style="color: #339933;">&lt;!--</span> <span style="color: #339933;">===================================</span> <span style="color: #339933;">--&gt;</span>
		<span style="color: #339933;">&lt;!--</span> <span style="color: #339933;">=</span> Google map related code begin <span style="color: #339933;">=</span> <span style="color: #339933;">--&gt;</span>
		<span style="color: #339933;">&lt;!--</span> <span style="color: #339933;">===================================</span> <span style="color: #339933;">--&gt;</span>
		google.<span style="color: #660066;">load</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;maps&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;2.x&quot;</span><span style="color: #009900;">&#41;</span>;
		<span style="color: #003366; font-weight: bold;">var</span> cities <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Array<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>;
		<span style="color: #003366; font-weight: bold;">var</span> results <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Array<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>;
		<span style="color: #003366; font-weight: bold;">var</span> city <span style="color: #339933;">=</span> <span style="color: #3366CC;">''</span>;
		<span style="color: #339933;">&lt;%</span> City.<span style="color: #660066;">find</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">:</span>all<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">each</span> <span style="color: #000066; font-weight: bold;">do</span> |c| <span style="color: #339933;">%&gt;</span>
		cities.<span style="color: #660066;">push</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'&lt;%= c.name %&gt;'</span><span style="color: #009900;">&#41;</span>;
		<span style="color: #339933;">&lt;%</span> end <span style="color: #339933;">%&gt;</span>
		<span style="color: #003366; font-weight: bold;">var</span> map <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">null</span>;
		<span style="color: #003366; font-weight: bold;">function</span> initialize<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		  <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>GBrowserIsCompatible<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		    map <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> google.<span style="color: #660066;">maps</span>.<span style="color: #660066;">Map2</span><span style="color: #009900;">&#40;</span>document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;google_map&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>; 	
			geocoder <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> google.<span style="color: #660066;">maps</span>.<span style="color: #660066;">ClientGeocoder</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>;
			find_distance<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>;	
		  <span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
		<span style="color: #003366; font-weight: bold;">function</span> listen<span style="color: #009900;">&#40;</span>direction<span style="color: #339933;">,</span>from<span style="color: #339933;">,</span>to<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			GEvent.<span style="color: #660066;">addListener</span><span style="color: #009900;">&#40;</span>direction<span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;load&quot;</span><span style="color: #339933;">,</span> 
				<span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
					<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>direction.<span style="color: #660066;">getStatus</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">code</span><span style="color: #339933;">==</span><span style="color: #CC0000;">200</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
					results.<span style="color: #660066;">push</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>from<span style="color: #339933;">:</span> from<span style="color: #339933;">,</span> to<span style="color: #339933;">:</span> to<span style="color: #339933;">,</span> distance<span style="color: #339933;">:</span> direction.<span style="color: #660066;">getDistance</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">meters</span> <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>;
					$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'distance'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">innerHTML</span><span style="color: #339933;">+=</span> <span style="color: #009900;">&#40;</span>from<span style="color: #339933;">+</span><span style="color: #3366CC;">&quot;--&quot;</span><span style="color: #339933;">+</span>to<span style="color: #339933;">+</span><span style="color: #3366CC;">&quot;: &quot;</span><span style="color: #339933;">+</span>direction.<span style="color: #660066;">getDistance</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">meters</span><span style="color: #339933;">+</span><span style="color: #3366CC;">&quot;&lt;br/&gt;&quot;</span><span style="color: #009900;">&#41;</span>;
					<span style="color: #009900;">&#125;</span>
				<span style="color: #009900;">&#125;</span>
			<span style="color: #009900;">&#41;</span>;
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #003366; font-weight: bold;">function</span> find_distance<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			city <span style="color: #339933;">=</span> cities.<span style="color: #660066;">shift</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>;
			<span style="color: #003366; font-weight: bold;">var</span> index <span style="color: #339933;">=</span> 0;
&nbsp;
			<span style="color: #003366; font-weight: bold;">new</span> PeriodicalExecuter<span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>pe<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				direction <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> GDirections<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>;
				query <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;from: &quot;</span><span style="color: #339933;">+</span>city<span style="color: #339933;">+</span><span style="color: #3366CC;">&quot;, CA to: &quot;</span><span style="color: #339933;">+</span>cities<span style="color: #009900;">&#91;</span>index<span style="color: #009900;">&#93;</span><span style="color: #339933;">+</span><span style="color: #3366CC;">&quot;, CA&quot;</span>				
				direction.<span style="color: #660066;">load</span><span style="color: #009900;">&#40;</span>query<span style="color: #009900;">&#41;</span>;										
				listen<span style="color: #009900;">&#40;</span>direction<span style="color: #339933;">,</span>city<span style="color: #339933;">,</span>cities<span style="color: #009900;">&#91;</span>index<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>;
				index<span style="color: #339933;">++</span>
				<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>index<span style="color: #339933;">==</span>cities.<span style="color: #660066;">length</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
					pe.<span style="color: #000066;">stop</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>;
					<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>cities.<span style="color: #660066;">length</span><span style="color: #339933;">&gt;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>find_distance<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>;<span style="color: #009900;">&#125;</span>
				<span style="color: #009900;">&#125;</span>
			<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0.2</span><span style="color: #009900;">&#41;</span>;
		<span style="color: #009900;">&#125;</span>
		google.<span style="color: #660066;">setOnLoadCallback</span><span style="color: #009900;">&#40;</span>initialize<span style="color: #009900;">&#41;</span>;
		<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span>
		<span style="color: #339933;">&lt;</span>title<span style="color: #339933;">&gt;&lt;/</span>title<span style="color: #339933;">&gt;</span>
	<span style="color: #339933;">&lt;/</span>head<span style="color: #339933;">&gt;</span>
	<span style="color: #339933;">&lt;</span>body<span style="color: #339933;">&gt;</span>
		<span style="color: #339933;">&lt;</span>div id<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;google_map&quot;</span> style<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;width:400px;height:400px&quot;</span> <span style="color: #339933;">&gt;&lt;/</span>div<span style="color: #339933;">&gt;</span>
		Distance<span style="color: #339933;">:&lt;</span>div id<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;distance&quot;</span><span style="color: #339933;">&gt;</span>0<span style="color: #339933;">&lt;/</span>div<span style="color: #339933;">&gt;</span>
&nbsp;
		<span style="color: #339933;">&lt;%=</span> link_to_remote <span style="color: #3366CC;">&quot;Load results&quot;</span><span style="color: #339933;">,</span> <span style="color: #339933;">:</span>url<span style="color: #339933;">=&gt;</span><span style="color: #009900;">&#123;</span><span style="color: #339933;">:</span>controller<span style="color: #339933;">=&gt;</span><span style="color: #3366CC;">'home'</span><span style="color: #339933;">,:</span>action<span style="color: #339933;">=&gt;</span><span style="color: #3366CC;">'save_distances'</span><span style="color: #339933;">,:</span>method<span style="color: #339933;">=&gt;</span><span style="color: #3366CC;">&quot;post&quot;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,:</span><span style="color: #000066; font-weight: bold;">with</span><span style="color: #339933;">=&gt;</span><span style="color: #3366CC;">&quot;'results='+results.toJSON()&quot;</span> <span style="color: #339933;">%&gt;</span>
	<span style="color: #339933;">&lt;/</span>body<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;/</span>html<span style="color: #339933;">&gt;</span></pre></div></div>

<p>PS: <a href="http://gigix.thoughtworkers.org/2008/9/23/replace-long-calculation-with-asynch" target="_blank">这篇文章</a>和上述解决方案有神似的地方，基本上讲的一回事.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.snowonrails.com/articles/2008/09/24/%e5%ba%94%e7%94%a8google-map-api-%e6%89%be%e5%87%ba%e9%99%84%e8%bf%91%e5%9f%8e%e5%b8%82/feed/</wfw:commentRss>
		</item>
		<item>
		<title>新的旅程即将开始了</title>
		<link>http://blog.snowonrails.com/articles/2008/09/23/%e6%96%b0%e7%9a%84%e6%97%85%e7%a8%8b%e5%8d%b3%e5%b0%86%e5%bc%80%e5%a7%8b%e4%ba%86/</link>
		<comments>http://blog.snowonrails.com/articles/2008/09/23/%e6%96%b0%e7%9a%84%e6%97%85%e7%a8%8b%e5%8d%b3%e5%b0%86%e5%bc%80%e5%a7%8b%e4%ba%86/#comments</comments>
		<pubDate>Tue, 23 Sep 2008 14:32:11 +0000</pubDate>
		<dc:creator>snow</dc:creator>
		
		<category><![CDATA[随想]]></category>

		<guid isPermaLink="false">http://blog.snowonrails.com/?p=81</guid>
		<description><![CDATA[10.1 以后就要开始新的一段历程了，在家里soho性质的工作了进两年以后又要重新回到职场了。说实在的前一段时间同时面对两个offer还是抉择了一段时间的，一个是丰厚的工资回报，一个是比较看好的前景，当然也非常幸运自己能有这种抉择的烦恼，最终我还是选择了一个前景比较靠谱的机会。
今天和以前的同事一起吃饭聊天，发现原来一起并肩战斗在代码第一线的一个哥们已经开始转向运营的方向了。当初最开始选择做developer的时候并没有想过能做多就，当时的想法很天真，希望做个懂技术的销售，或者市场策划，不过后来逐渐发现，原来开发带来的乐趣要大很多。一点点的开始喜欢上了这个行业，并且想把他做精做好。4年以来，每天始终保持着学习的状态，有着对未知领域探索一下的心态，对于自己的这一点也是比较满意的。有朋友说我运气比较好，呵呵，我觉得还是自己的准备还算充分。
新的一段征途就要开始了，我感觉会遇到很大的挑战，因为从和朋友的谈话众感觉到，这个位置要接触的东西比以前接触的都要复杂，性能要求更高，是一个典型的“大家伙”。既然自己已经做出了选择，那么希望在几年之后回头看的时候，会为今天自己的选择鼓掌。
一点随想，没什么逻辑，想到那里写到那里。
]]></description>
			<content:encoded><![CDATA[<p>10.1 以后就要开始新的一段历程了，在家里soho性质的工作了进两年以后又要重新回到职场了。说实在的前一段时间同时面对两个offer还是抉择了一段时间的，一个是丰厚的工资回报，一个是比较看好的前景，当然也非常幸运自己能有这种抉择的烦恼，最终我还是选择了一个前景比较靠谱的机会。</p>
<p>今天和以前的同事一起吃饭聊天，发现原来一起并肩战斗在代码第一线的一个哥们已经开始转向运营的方向了。当初最开始选择做developer的时候并没有想过能做多就，当时的想法很天真，希望做个懂技术的销售，或者市场策划，不过后来逐渐发现，原来开发带来的乐趣要大很多。一点点的开始喜欢上了这个行业，并且想把他做精做好。4年以来，每天始终保持着学习的状态，有着对未知领域探索一下的心态，对于自己的这一点也是比较满意的。有朋友说我运气比较好，呵呵，我觉得还是自己的准备还算充分。</p>
<p>新的一段征途就要开始了，我感觉会遇到很大的挑战，因为从和朋友的谈话众感觉到，这个位置要接触的东西比以前接触的都要复杂，性能要求更高，是一个典型的“大家伙”。既然自己已经做出了选择，那么希望在几年之后回头看的时候，会为今天自己的选择鼓掌。</p>
<p>一点随想，没什么逻辑，想到那里写到那里。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.snowonrails.com/articles/2008/09/23/%e6%96%b0%e7%9a%84%e6%97%85%e7%a8%8b%e5%8d%b3%e5%b0%86%e5%bc%80%e5%a7%8b%e4%ba%86/feed/</wfw:commentRss>
		</item>
		<item>
		<title>I and you</title>
		<link>http://blog.snowonrails.com/articles/2008/09/17/i-and-you/</link>
		<comments>http://blog.snowonrails.com/articles/2008/09/17/i-and-you/#comments</comments>
		<pubDate>Wed, 17 Sep 2008 09:03:57 +0000</pubDate>
		<dc:creator>snow</dc:creator>
		
		<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://blog.snowonrails.com/?p=80</guid>
		<description><![CDATA[来个符合主旋律的：

]]></description>
			<content:encoded><![CDATA[<p>来个符合主旋律的：</p>
<p><embed width="480" height="370" flashvars="file=/great_wall_features_mid_3.flv&amp;image=/wp-content/uploads/preview.jpg" allowscriptaccess="always" allowfullscreen="true" quality="high" bgcolor="#FFFFFF" name="ply" id="ply" style="" src="/player.swf" type="application/x-shockwave-flash"/></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.snowonrails.com/articles/2008/09/17/i-and-you/feed/</wfw:commentRss>
<enclosure url="http://blog.snowonrails.com/wp-content/uploads/great_wall_features_mid_3.mov" length="25333553" type="video/quicktime" />
		</item>
		<item>
		<title>A short video of great wall features</title>
		<link>http://blog.snowonrails.com/articles/2008/09/17/a-short-video-of-great-wall-features/</link>
		<comments>http://blog.snowonrails.com/articles/2008/09/17/a-short-video-of-great-wall-features/#comments</comments>
		<pubDate>Wed, 17 Sep 2008 05:05:23 +0000</pubDate>
		<dc:creator>snow</dc:creator>
		
		<category><![CDATA[生活]]></category>

		<category><![CDATA[animoto]]></category>

		<guid isPermaLink="false">http://blog.snowonrails.com/?p=78</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p><script type="text/javascript" src="http://widgets.clearspring.com/o/46928cc51133af17/48d08fece9bfedd2/46928cc5788deb29/787a51f/widget.js"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.snowonrails.com/articles/2008/09/17/a-short-video-of-great-wall-features/feed/</wfw:commentRss>
		</item>
		<item>
		<title>9.13长城婚纱照小记</title>
		<link>http://blog.snowonrails.com/articles/2008/09/16/913%e9%95%bf%e5%9f%8e%e5%a9%9a%e7%ba%b1%e7%85%a7%e5%b0%8f%e8%ae%a1/</link>
		<comments>http://blog.snowonrails.com/articles/2008/09/16/913%e9%95%bf%e5%9f%8e%e5%a9%9a%e7%ba%b1%e7%85%a7%e5%b0%8f%e8%ae%a1/#comments</comments>
		<pubDate>Tue, 16 Sep 2008 04:49:32 +0000</pubDate>
		<dc:creator>snow</dc:creator>
		
		<category><![CDATA[生活]]></category>

		<category><![CDATA[婚纱]]></category>

		<guid isPermaLink="false">http://blog.snowonrails.com/?p=77</guid>
		<description><![CDATA[9.13去金山岭长城拍摄了婚纱照，整个拍摄过程已由我老婆整理出来了：大家可以通过这里对此次活动进行更为详细的了解。此次活动的花絮可以通过 http://picasaweb.google.com/snowzhangxue/DSOzvK# 观看，正式样片争取10.1前放出。方便起见在这里贴出老婆写的blog，以宴众fans:
9月14日
长城拍摄婚纱照日记


昨天，我和LG去长城拍摄了婚纱照，虽然我一直都很喜欢长城的大气，但是这却是我来京十载后第一次爬长城。累是最直接的感受。不过貌似在哪拍婚纱照都挺累得，赫赫。
 
通过昨天的拍摄，我深刻的体会到了三件事情：一，真的胖了  ；二，真的要到而立之年了，摄影师都禁止我大笑了，虽然我自己以前就发现了这点，但是当摄影师那么直接的告诉我的时候，心里还是不太舒服，女人啊   ；三，真的不是当演员的料，完全没有表演潜力，长城很美，也的确有我想要的那种很大气的感觉，只是我表现不出来那种感觉，有点遗憾   。
 
看看我们这一天的拍摄细节吧，呵呵 
 

时 间：6:00-7:20
关键词：早餐
细 节：6点起床，洗漱，打包，吃爱心早餐，心情愉悦。
小插曲: 天气没有预期的好，阴天，不过很凉爽。
 

时 间：7:20-7:40
关键词：出发至摄影工作室
细 节：我和LG拖着拉杆箱，背着双肩带，拿着西装，坐出租车前往工作室
小插曲：忘带巧克力了
 

时 间：7:40-10:00
关键词：化妆
细 节：我和LG按照约定的时间赶到了摄影工作室开始化妆，化妆师是一位来自东北的姑娘，叫小关（可能是这个字）。化妆大致持续了1个半小时，流程如下：

1、定妆：影楼定妆用的是安瓶，没研究过是什么成分，不过感觉粘糊糊的。

2、修眉：因为我平日不修眉，所以化妆师拿着刀片修了半天才完工，我不太习惯这种细细的眉毛，看起来更厉害了。

3、粉底：就像我预料的那样，在涂抹粉底的时候，那粘粘的安瓶果然把我已涂好的隔离霜给粘了下来，sign~。化妆师折腾了好久才给抹匀，很有刷墙的感觉。

4、眼 妆：这个是绝对的重点，包括眼影，睫毛和眼线。化妆师帮我选择了咖啡色系的眼影，简单的描绘后，就开始整睫毛了，化妆师除了给我夹翘我自己的睫毛外（由于 要夹睫毛的根部，很疼！我哼哼了好几次），为了拍摄的效果，还用了假睫毛。工作室提供的假睫毛有点硬，也太长，我能感觉的到随着我每次的眨眼，它都能刷到 我上眼睑的肌肤，痒痒的。另外用来固定的胶有点稀，我甚至可以感觉到它的流向，涂完后，需要化妆师用棉棒把多余的胶给擦掉，否则就很可能把上下眼皮粘到一 起。最后是眼线，我最怕花眼线了，可是化妆师偏偏很喜欢化眼线，在多次眨眼流泪之后，我不清楚是画好了还是化妆师放弃了，反正是不再画了。在整个眼部上妆 的过程中，化妆师那长长的指甲都让我很害怕，总想躲开。

5、腮红、唇彩、和卷发：腮红和唇彩都很简单，是粉粉的颜色；而卷发是用卷发器做的，方便外景的时候做造型。

6、给LG化的妆就更简单了，只是修了一下眉毛，打了点粉底。

小插曲：我和老公在拍摄的前一天到亮马桥花卉市场订购了手捧花及花瓣，在我化妆的时候，预定的鲜花送到了，花的效果不是很好，最主要的是材料严重缩水，我预定了18支玫瑰，2束茉莉，5米的丝带，费用110元。预定时就是怕商家偷工减料影响效果，我们甚至没有砍价，但是结果看到的花束却要比图片小了很多，花朵不是很新鲜，底部无花泥，丝带位置不对，长度最多1米，且无花瓣。怒！经电话交涉，最终退货。
 

时 间：10:00-12:00
关键词：出发前往长城
细 节：我和LG、摄影师康老师（来自新疆）、摄影助理海岩（来自廊坊）、以及化妆师小关一行五人带着拍摄用具和服装浩浩荡荡的出发了。在去长城的路上，我们顺路买了花瓣，其实我本来觉得是否买花瓣是无所谓的了，但是在拍摄的时候，我却非常喜欢那场美丽的花瓣雨，多亏LG坚持，谢谢LG的细心。从路牌上公里数推断，从工作室到长城的单程距离大约为150公里。
小插曲：在中途下来休息的时候，LG的鼻梁上被蚊子咬了一个大包，好明显的哦，哈哈哈哈，不过康老师有灵丹妙药，到拍摄的时候基本已经看不出来了。
 

时 间：12:00-13:00
关键词：午餐
细 节：到达长城的第一件事情是买门票和交拍摄管理费（在长城拍婚纱还需要缴纳500元的拍摄费用，原因不明，很无奈啊）。之后才是午餐，午餐还是挺丰富的，有驴肉火烧、面包、午餐肉、卤蛋、果冻、八宝粥。
小插曲：长城的蚂蚁很大，顺着我们带的午餐的肉味就纷纷地爬了过来，我们要一般吃饭一边赶蚂蚁，忙得不亦乐乎。此外还偶遇了北京饭店的一位司机带着外国人来长城野餐，你别说在烽火台上吃西餐，还真tmd有情调，那一瞬间，我还真希望能把婚宴摆到长城上，呵呵。
 
时 间：13:00-19:50
关键词：拍摄
细 节：按照摄影师的规划，我们决定先到左边的长城拍摄情侣装、所有的白纱和那套唐装，之后到右边的长城拍摄礼服。然而在拍摄的后期我发现这个决定是非常之错误的。

1、服装：除了我们身穿得情侣装外，我们还准备了3套白婚纱（分别为大拖尾、抹胸式、吊带式）、1套唐装、4套女礼服、2套深色西装、1套白色男礼服。事实证明服装准备的多了，礼服最后没有时间拍摄了。

2、任务分配：我和LG的 任务就不用说了，呵呵。海岩是最辛苦的了，因为他的任务是各种道具的准备和提供，他需要背着服装和一些辅助拍摄的设备来爬长城，还需要跑来跑去的协助拍 摄。康老师的主要工作是选景拍照，其实我觉得他的任务应该是抓拍。因为我不太会拍照，看到镜头会紧张，除了经常在拍摄的瞬间眨眼之外，最主要的问题是我不 会在镜头前笑，有点像Friends里的Chandler。而LG的镜头感就很好，康老师说他很有模特的感觉，我就知道！

3、情侣装拍摄：情侣装的拍摄是从爬长城就开始了，很随意，感觉不错，LG很快进入了状态，我能感觉的到。我们还带了一个小相机记录花絮，嘻嘻。

4、抹胸式婚纱拍摄：这套婚纱的拍摄每换什么造型，只是带了个小花冠。化妆师没有带镜子让我有些不爽且不适应，因为事先没有沟通造型，我不知道自己换完衣服和发型之后的样子，心里很没有底。后来回家的时候看了花絮，觉得看起来好胖，Sign~ 这组拍摄中LG穿了我们自带的西装，好帅，hoho，我觉得他挺适合穿正装的，只是平日他很少穿。（不得不说，长城真的是一个很好的拍摄外景，很一个角度都有不同的景致，可以拍摄出很多的感觉。）

5、唐装拍摄：随着继续向上爬，我们到达了长城的一个烽火台上（也不知道烽火台是否编号，但是每个烽火台都有人看管），在这个烽火台我们拍摄了唐装，这套唐装是LG特 意为我租来的，很正的红色，非常的漂亮，我很喜欢。但是我不喜欢化妆师给我的造型，发型做的不好，完全没有唐朝的感觉，而且配饰也有些杂乱，虽然为了这套 衣服我事先和化妆师沟通过我的想法，但是我觉得她没有理解或者对于唐朝的发饰不是很了解。这套衣服拍了很多张照片，花费了很多时间，康老师为了拍摄效果还 爬到了长城外墙上拍摄，很辛苦。不过我觉得效果可能一般，因为我当时完全没有感觉，站在8分根的高跟鞋中，我只感觉到了重心不稳以及脚趾的疼痛，完全没有任何妩媚的表情。康老师后来总结说经过他的观察认为我是冷艳型的，生气地样子最生动，我无语！另外为了配合我的唐装，LG也穿了一套唐装，还带了一个金色的帽子，呵呵，只是看完花絮的人都说，那个帽子很奇怪，呵呵，看来LG还是适合西装阿。

6、大拖尾婚纱拍摄：大拖尾婚纱拍摄的照片数量不是很多，拍摄地在长城的一个拐角的平台上，这个平台不知道做什么用的，有很多奇怪的小格子。LG穿的是黑色的礼服，我很喜欢那礼服衣襟上的花纹。但是这件据说是他们的镇店之宝的大拖尾却让我感到非常失望，很一般般儿的衣服，而且我穿的有些大，化妆师也不肯给我别个别针之类的，不知道是不是怕给衣服弄坏了。在这组拍摄中LG策划拍摄了我很喜欢的那场浪漫的花瓣雨，呵呵，让我的心情大好。

7、礼 服的拍摄：礼服的拍摄是在另一段长城上，当时过去的时候天色已晚，虽然达不到伸手不见五指的状态，但是我已经找不到镜头的位置了，其实我当时已经不想拍摄 了，但是因为前一段没有拍摄任何礼服，所以不得不拍摄，我估计当时的工作人员都不想拍摄了，但是没有办法，呵呵。因为天色已经完全的黑下来了。所以我们就 只能在黑暗中，对着可能是镜头的方向微笑或摆pose，挺奇怪的，呵呵。另外在9月的晚上已经可以感受到秋夜的丝丝凉意了，我又累又饿，还有那么多的蚊子在亲吻我，更不会笑了，这也就是为什么在之前我说我们做的拍摄决定是错误的。

小插曲：拍摄的时候康老师有多次要抓怕我的镜头都被各种原因打断了，呵呵。另外，因为我不会摆什么pose，估计康老师拍得也挺费劲的，要不是一般都是新娘拍得比新郎多，我估计康老师早就去给我LG拍了，呵呵。还有就是由于我不肯站到我认为危险的地方，也不认可只有在那种地方才能拍出好的片片的想法，所以可能很多原有的拍摄地或者计划都未能采用，不过也好，我可不希望和别人拍的一样。
 
时 间：19:50-
关键词：返回北京
细 节：无
小插曲：天黑且无路标，因此找不到京承高速的入口了，另外回京的路上，要过2次公安检查，一次要检查所有人员的身份证，另一次要检查车子的证件还有后备箱。

 
真的是很辛苦的一天呢，希望在几天后可以看到美美的小样，hoho~~~~~~~~~~~~~~~~~~~~~~

]]></description>
			<content:encoded><![CDATA[<p>9.13去金山岭长城拍摄了婚纱照，整个拍摄过程已由<a href="http://lilinlin1999.spaces.live.com/" target="_blank">我老婆</a>整理出来了：大家可以通过<a href="http://lilinlin1999.spaces.live.com/blog/cns!B1EF95B1042C3EDD!281.entry" target="_blank">这里</a>对此次活动进行更为详细的了解。此次活动的花絮可以通过 http://picasaweb.google.com/snowzhangxue/DSOzvK# 观看，正式样片争取10.1前放出。方便起见在这里贴出老婆写的blog，以宴众fans:</p>
<div id="LastMDatecns!B1EF95B1042C3EDD!281">9月14日</div>
<h4 id="subjcns!B1EF95B1042C3EDD!281" style="margin-bottom: 0px;">长城拍摄婚纱照日记</h4>
<div id="msgcns!B1EF95B1042C3EDD!281" class="bvMsg">
<p style="margin: 0cm 0cm 0pt;">
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><strong><span style="color: #7030a0;">昨天，我和<span lang="EN-US">LG</span>去长城拍摄了婚纱照，虽然我一直都很喜欢长城的大气，但是这却是我来京十载后第一次爬长城。累是最直接的感受。不过貌似在哪拍婚纱照都挺累得，赫赫。</span></strong></span></p>
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><strong><span style="color: #7030a0;"> </span></strong></span></p>
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><strong><span style="color: #7030a0;">通过昨天的拍摄，我深刻的体会到了三件事情：一，真的胖了 <img style="vertical-align: middle;" title="尴尬" src="http://shared.live.com/HjKMzTS-xzcms40%21CabizA/emoticons/smile_embaressed.gif" alt="尴尬" /> ；二，真的要到而立之年了，摄影师都禁止我大笑了，虽然我自己以前就发现了这点，但是当摄影师那么直接的告诉我的时候，心里还是不太舒服，女人啊  <img style="vertical-align: middle;" title="讽刺" src="http://shared.live.com/HjKMzTS-xzcms40%21CabizA/emoticons/smile_sarcastic.gif" alt="讽刺" /> ；三，真的不是当演员的料，完全没有表演潜力，长城很美，也的确有我想要的那种很大气的感觉，只是我表现不出来那种感觉，有点遗憾  <img style="vertical-align: middle;" title="正在思考" src="http://shared.live.com/HjKMzTS-xzcms40%21CabizA/emoticons/smile_thinking.gif" alt="正在思考" /> 。</span></strong></span></p>
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><strong><span style="color: #7030a0;"> </span></strong></span></p>
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><span style="color: #7030a0;"><strong>看看我们这一天的拍摄细节吧，呵呵</strong> </span></span></p>
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><span style="color: #000000;"> </span></span></p>
<p style="margin: 0cm 0cm 0pt;">
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><strong><span style="color: #ff0000;">时<span lang="EN-US"><span> </span></span>间：<span lang="EN-US">6:00-7:20</span></span></strong></span></p>
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><strong><span style="color: #ff0000;">关键词：早餐</span></strong></span></p>
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><strong><span style="color: #ff0000;">细<span lang="EN-US"><span> </span></span>节：<span lang="EN-US">6</span>点起床，洗漱，打包，吃爱心早餐，心情愉悦。</span></strong></span></p>
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><strong><span style="color: #ff0000;">小插曲: 天气没有预期的好，阴天，不过很凉爽。</span></strong></span></p>
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><span style="color: #000000;"> </span></span></p>
<p style="margin: 0cm 0cm 0pt;">
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><strong><span style="color: #ffc000;">时<span lang="EN-US"><span> </span></span>间：<span lang="EN-US">7:20-7:40</span></span></strong></span></p>
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><strong><span style="color: #ffc000;">关键词：出发至摄影工作室</span></strong></span></p>
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><strong><span style="color: #ffc000;">细<span lang="EN-US"><span> </span></span>节：我和<span lang="EN-US">LG</span>拖着拉杆箱，背着双肩带，拿着西装，坐出租车前往工作室</span></strong></span></p>
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><strong><span style="color: #ffc000;">小插曲：忘带巧克力了</span></strong></span></p>
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><span style="color: #000000;"> </span></span></p>
<p style="margin: 0cm 0cm 0pt;">
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><strong><span style="color: #00b050;">时<span lang="EN-US"><span> </span></span>间：<span lang="EN-US">7:40-10:00</span></span></strong></span></p>
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><strong><span style="color: #00b050;">关键词：化妆</span></strong></span></p>
<p style="margin: 0cm 0cm 0pt 48pt; text-indent: -48pt;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><strong><span style="color: #00b050;">细<span lang="EN-US"><span> </span></span>节：我和<span lang="EN-US">LG</span>按照约定的时间赶到了摄影工作室开始化妆，化妆师是一位来自东北的姑娘，叫小关（可能是这个字）。化妆大致持续了<span lang="EN-US">1</span>个半小时，流程如下：</span></strong></span></p>
<p style="margin: 0cm 0cm 0pt 48pt; text-indent: -48pt;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><strong></strong></span></p>
<p style="margin: 0cm 0cm 0pt 57pt; text-indent: -18pt;"><strong><span style="color: #00b050;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><span>1、</span></span><span style="font-size: 12pt; font-family: 楷体_GB2312;">定妆：影楼定妆用的是安瓶，没研究过是什么成分，不过感觉粘糊糊的。</span></span></strong></p>
<p style="margin: 0cm 0cm 0pt 57pt; text-indent: -18pt;"><strong><span style="color: #00b050;"></span></strong></p>
<p style="margin: 0cm 0cm 0pt 57pt; text-indent: -18pt;"><strong><span style="color: #00b050;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><span>2、</span></span><span style="font-size: 12pt; font-family: 楷体_GB2312;">修眉：因为我平日不修眉，所以化妆师拿着刀片修了半天才完工，我不太习惯这种细细的眉毛，看起来更厉害了。</span></span></strong></p>
<p style="margin: 0cm 0cm 0pt 57pt; text-indent: -18pt;"><strong><span style="color: #00b050;"></span></strong></p>
<p style="margin: 0cm 0cm 0pt 57pt; text-indent: -18pt;"><strong><span style="color: #00b050;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><span>3、</span></span><span style="font-size: 12pt; font-family: 楷体_GB2312;">粉底：就像我预料的那样，在涂抹粉底的时候，那粘粘的安瓶果然把我已涂好的隔离霜给粘了下来，<span lang="EN-US">sign~</span>。化妆师折腾了好久才给抹匀，很有刷墙的感觉。</span></span></strong></p>
<p style="margin: 0cm 0cm 0pt 57pt; text-indent: -18pt;"><strong><span style="color: #00b050;"></span></strong></p>
<p style="margin: 0cm 0cm 0pt 57pt; text-indent: -18pt;"><strong><span style="color: #00b050;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><span>4、</span></span><span style="font-size: 12pt; font-family: 楷体_GB2312;">眼 妆：这个是绝对的重点，包括眼影，睫毛和眼线。化妆师帮我选择了咖啡色系的眼影，简单的描绘后，就开始整睫毛了，化妆师除了给我夹翘我自己的睫毛外（由于 要夹睫毛的根部，很疼！我哼哼了好几次），为了拍摄的效果，还用了假睫毛。工作室提供的假睫毛有点硬，也太长，我能感觉的到随着我每次的眨眼，它都能刷到 我上眼睑的肌肤，痒痒的。另外用来固定的胶有点稀，我甚至可以感觉到它的流向，涂完后，需要化妆师用棉棒把多余的胶给擦掉，否则就很可能把上下眼皮粘到一 起。最后是眼线，我最怕花眼线了，可是化妆师偏偏很喜欢化眼线，在多次眨眼流泪之后，我不清楚是画好了还是化妆师放弃了，反正是不再画了。在整个眼部上妆 的过程中，化妆师那长长的指甲都让我很害怕，总想躲开。</span></span></strong></p>
<p style="margin: 0cm 0cm 0pt 57pt; text-indent: -18pt;"><strong><span style="color: #00b050;"></span></strong></p>
<p style="margin: 0cm 0cm 0pt 57pt; text-indent: -18pt;"><strong><span style="color: #00b050;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><span>5、</span></span><span style="font-size: 12pt; font-family: 楷体_GB2312;">腮红、唇彩、和卷发：腮红和唇彩都很简单，是粉粉的颜色；而卷发是用卷发器做的，方便外景的时候做造型。</span></span></strong></p>
<p style="margin: 0cm 0cm 0pt 57pt; text-indent: -18pt;"><strong><span style="color: #00b050;"></span></strong></p>
<p style="margin: 0cm 0cm 0pt 57pt; text-indent: -18pt;"><strong><span style="color: #00b050;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><span>6、</span></span><span style="font-size: 12pt; font-family: 楷体_GB2312;">给<span lang="EN-US">LG</span>化的妆就更简单了，只是修了一下眉毛，打了点粉底。</span></span></strong></p>
<p style="margin: 0cm 0cm 0pt 57pt; text-indent: -18pt;"><strong><span style="color: #00b050;"></span></strong></p>
<p style="margin: 0cm 0cm 0pt 48pt; text-indent: -48pt;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><strong><span style="color: #00b050;">小插曲：我和老公在拍摄的前一天到亮马桥花卉市场订购了手捧花及花瓣，在我化妆的时候，预定的鲜花送到了，花的效果不是很好，最主要的是材料严重缩水，我预定了<span lang="EN-US">18</span>支玫瑰，<span lang="EN-US">2</span>束茉莉，<span lang="EN-US">5</span>米的丝带，费用<span lang="EN-US">110</span>元。预定时就是怕商家偷工减料影响效果，我们甚至没有砍价，但是结果看到的花束却要比图片小了很多，花朵不是很新鲜，底部无花泥，丝带位置不对，长度最多<span lang="EN-US">1</span>米，且无花瓣。怒！经电话交涉，最终退货。</span></strong></span></p>
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><strong><span style="color: #00b050;"> </span></strong></span></p>
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><strong></strong></span></p>
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><strong><span style="color: #00b0f0;">时<span lang="EN-US"><span> </span></span>间：<span lang="EN-US">10:00-12:00</span></span></strong></span></p>
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><strong><span style="color: #00b0f0;">关键词：出发前往长城</span></strong></span></p>
<p style="margin: 0cm 0cm 0pt 48pt; text-indent: -48pt;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><strong><span style="color: #00b0f0;">细<span lang="EN-US"><span> </span></span>节：我和<span lang="EN-US">LG</span>、摄影师康老师（来自新疆）、摄影助理海岩（来自廊坊）、以及化妆师小关一行五人带着拍摄用具和服装浩浩荡荡的出发了。在去长城的路上，我们顺路买了花瓣，其实我本来觉得是否买花瓣是无所谓的了，但是在拍摄的时候，我却非常喜欢那场美丽的花瓣雨，多亏<span lang="EN-US">LG</span>坚持，谢谢<span lang="EN-US">LG</span>的细心。从路牌上公里数推断，从工作室到长城的单程距离大约为<span lang="EN-US">150</span>公里。</span></strong></span></p>
<p style="margin: 0cm 0cm 0pt 48pt; text-indent: -48pt;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><strong><span style="color: #00b0f0;">小插曲：在中途下来休息的时候，<span lang="EN-US">LG</span>的鼻梁上被蚊子咬了一个大包，好明显的哦，哈哈哈哈，不过康老师有灵丹妙药，到拍摄的时候基本已经看不出来了。</span></strong></span></p>
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><span style="color: #00b0f0;"> </span></span></p>
<p style="margin: 0cm 0cm 0pt;">
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><strong><span style="color: #0070c0;">时<span lang="EN-US"><span> </span></span>间：<span lang="EN-US">12:00-13:00</span></span></strong></span></p>
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><strong><span style="color: #0070c0;">关键词：午餐</span></strong></span></p>
<p style="margin: 0cm 0cm 0pt 48pt; text-indent: -48pt;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><strong><span style="color: #0070c0;">细<span lang="EN-US"><span> </span></span>节：到达长城的第一件事情是买门票和交拍摄管理费（在长城拍婚纱还需要缴纳<span lang="EN-US">500</span>元的拍摄费用，原因不明，很无奈啊）。之后才是午餐，午餐还是挺丰富的，有驴肉火烧、面包、午餐肉、卤蛋、果冻、八宝粥。</span></strong></span></p>
<p style="margin: 0cm 0cm 0pt 48pt; text-indent: -48pt;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><strong><span style="color: #0070c0;">小插曲：长城的蚂蚁很大，顺着我们带的午餐的肉味就纷纷地爬了过来，我们要一般吃饭一边赶蚂蚁，忙得不亦乐乎。此外还偶遇了北京饭店的一位司机带着外国人来长城野餐，你别说在烽火台上吃西餐，还真<span lang="EN-US">tmd</span>有情调，那一瞬间，我还真希望能把婚宴摆到长城上，呵呵。</span></strong></span></p>
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><span style="color: #000000;"> </span></span></p>
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><strong><span style="color: #ff80c0;">时<span lang="EN-US"><span> </span></span>间：<span lang="EN-US">13:00-19:50</span></span></strong></span></p>
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><strong><span style="color: #ff80c0;">关键词：拍摄</span></strong></span></p>
<p style="margin: 0cm 0cm 0pt 48pt; text-indent: -48pt;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><strong><span style="color: #ff80c0;">细<span lang="EN-US"><span> </span></span>节：按照摄影师的规划，我们决定先到左边的长城拍摄情侣装、所有的白纱和那套唐装，之后到右边的长城拍摄礼服。然而在拍摄的后期我发现这个决定是非常之错误的。</span></strong></span></p>
<p style="margin: 0cm 0cm 0pt 48pt; text-indent: -48pt;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><strong></strong></span></p>
<p style="margin: 0cm 0cm 0pt 57pt; text-indent: -18pt;"><strong><span style="color: #ff80c0;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><span>1、</span></span><span style="font-size: 12pt; font-family: 楷体_GB2312;">服装：除了我们身穿得情侣装外，我们还准备了<span lang="EN-US">3</span>套白婚纱（分别为大拖尾、抹胸式、吊带式）、<span lang="EN-US">1</span>套唐装、<span lang="EN-US">4</span>套女礼服、<span lang="EN-US">2</span>套深色西装、<span lang="EN-US">1</span>套白色男礼服。事实证明服装准备的多了，礼服最后没有时间拍摄了。</span></span></strong></p>
<p style="margin: 0cm 0cm 0pt 57pt; text-indent: -18pt;"><strong><span style="color: #ff80c0;"></span></strong></p>
<p style="margin: 0cm 0cm 0pt 57pt; text-indent: -18pt;"><strong><span style="color: #ff80c0;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><span>2、</span></span><span style="font-size: 12pt; font-family: 楷体_GB2312;">任务分配：我和<span lang="EN-US">LG</span>的 任务就不用说了，呵呵。海岩是最辛苦的了，因为他的任务是各种道具的准备和提供，他需要背着服装和一些辅助拍摄的设备来爬长城，还需要跑来跑去的协助拍 摄。康老师的主要工作是选景拍照，其实我觉得他的任务应该是抓拍。因为我不太会拍照，看到镜头会紧张，除了经常在拍摄的瞬间眨眼之外，最主要的问题是我不 会在镜头前笑，有点像<span lang="EN-US">Friends</span>里的<span lang="EN-US">Chandler</span>。而<span lang="EN-US">LG</span>的镜头感就很好，康老师说他很有模特的感觉，我就知道！</span></span></strong></p>
<p style="margin: 0cm 0cm 0pt 57pt; text-indent: -18pt;"><strong><span style="color: #ff80c0;"></span></strong></p>
<p style="margin: 0cm 0cm 0pt 57pt; text-indent: -18pt;"><strong><span style="color: #ff80c0;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><span>3、</span></span><span style="font-size: 12pt; font-family: 楷体_GB2312;">情侣装拍摄：情侣装的拍摄是从爬长城就开始了，很随意，感觉不错，<span lang="EN-US">LG</span>很快进入了状态，我能感觉的到。我们还带了一个小相机记录花絮，嘻嘻。</span></span></strong></p>
<p style="margin: 0cm 0cm 0pt 57pt; text-indent: -18pt;"><strong><span style="color: #ff80c0;"></span></strong></p>
<p style="margin: 0cm 0cm 0pt 57pt; text-indent: -18pt;"><strong><span style="color: #ff80c0;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><span>4、</span></span><span style="font-size: 12pt; font-family: 楷体_GB2312;">抹胸式婚纱拍摄：这套婚纱的拍摄每换什么造型，只是带了个小花冠。化妆师没有带镜子让我有些不爽且不适应，因为事先没有沟通造型，我不知道自己换完衣服和发型之后的样子，心里很没有底。后来回家的时候看了花絮，觉得看起来好胖，<span lang="EN-US">Sign<span style="font-family: 宋体;">~</span><span> </span></span>这组拍摄中<span lang="EN-US">LG</span>穿了我们自带的西装，好帅，<span lang="EN-US">hoho</span>，我觉得他挺适合穿正装的，只是平日他很少穿。（不得不说，长城真的是一个很好的拍摄外景，很一个角度都有不同的景致，可以拍摄出很多的感觉。）</span></span></strong></p>
<p style="margin: 0cm 0cm 0pt 57pt; text-indent: -18pt;"><strong><span style="color: #ff80c0;"></span></strong></p>
<p style="margin: 0cm 0cm 0pt 57pt; text-indent: -18pt;"><strong><span style="color: #ff80c0;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><span>5、</span></span><span style="font-size: 12pt; font-family: 楷体_GB2312;">唐装拍摄：随着继续向上爬，我们到达了长城的一个烽火台上（也不知道烽火台是否编号，但是每个烽火台都有人看管），在这个烽火台我们拍摄了唐装，这套唐装是<span lang="EN-US">LG</span>特 意为我租来的，很正的红色，非常的漂亮，我很喜欢。但是我不喜欢化妆师给我的造型，发型做的不好，完全没有唐朝的感觉，而且配饰也有些杂乱，虽然为了这套 衣服我事先和化妆师沟通过我的想法，但是我觉得她没有理解或者对于唐朝的发饰不是很了解。这套衣服拍了很多张照片，花费了很多时间，康老师为了拍摄效果还 爬到了长城外墙上拍摄，很辛苦。不过我觉得效果可能一般，因为我当时完全没有感觉，站在<span lang="EN-US">8</span>分根的高跟鞋中，我只感觉到了重心不稳以及脚趾的疼痛，完全没有任何妩媚的表情。康老师后来总结说经过他的观察认为我是冷艳型的，生气地样子最生动，我无语！另外为了配合我的唐装，<span lang="EN-US">LG</span>也穿了一套唐装，还带了一个金色的帽子，呵呵，只是看完花絮的人都说，那个帽子很奇怪，呵呵，看来<span lang="EN-US">LG</span>还是适合西装阿。</span></span></strong></p>
<p style="margin: 0cm 0cm 0pt 57pt; text-indent: -18pt;"><strong><span style="color: #ff80c0;"></span></strong></p>
<p style="margin: 0cm 0cm 0pt 57pt; text-indent: -18pt;"><strong><span style="color: #ff80c0;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><span>6、</span></span><span style="font-size: 12pt; font-family: 楷体_GB2312;">大拖尾婚纱拍摄：大拖尾婚纱拍摄的照片数量不是很多，拍摄地在长城的一个拐角的平台上，这个平台不知道做什么用的，有很多奇怪的小格子。<span lang="EN-US">LG</span>穿的是黑色的礼服，我很喜欢那礼服衣襟上的花纹。但是这件据说是他们的镇店之宝的大拖尾却让我感到非常失望，很一般般儿的衣服，而且我穿的有些大，化妆师也不肯给我别个别针之类的，不知道是不是怕给衣服弄坏了。在这组拍摄中<span lang="EN-US">LG</span>策划拍摄了我很喜欢的那场浪漫的花瓣雨，呵呵，让我的心情大好。</span></span></strong></p>
<p style="margin: 0cm 0cm 0pt 57pt; text-indent: -18pt;"><strong><span style="color: #ff80c0;"></span></strong></p>
<p style="margin: 0cm 0cm 0pt 57pt; text-indent: -18pt;"><strong><span style="color: #ff80c0;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><span>7、</span></span><span style="font-size: 12pt; font-family: 楷体_GB2312;">礼 服的拍摄：礼服的拍摄是在另一段长城上，当时过去的时候天色已晚，虽然达不到伸手不见五指的状态，但是我已经找不到镜头的位置了，其实我当时已经不想拍摄 了，但是因为前一段没有拍摄任何礼服，所以不得不拍摄，我估计当时的工作人员都不想拍摄了，但是没有办法，呵呵。因为天色已经完全的黑下来了。所以我们就 只能在黑暗中，对着可能是镜头的方向微笑或摆<span lang="EN-US">pose</span>，挺奇怪的，呵呵。另外在<span lang="EN-US">9</span>月的晚上已经可以感受到秋夜的丝丝凉意了，我又累又饿，还有那么多的蚊子在亲吻我，更不会笑了，这也就是为什么在之前我说我们做的拍摄决定是错误的。</span></span></strong></p>
<p style="margin: 0cm 0cm 0pt 57pt; text-indent: -18pt;"><strong><span style="color: #ff80c0;"></span></strong></p>
<p style="margin: 0cm 0cm 0pt 48pt; text-indent: -48pt;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><strong><span style="color: #ff80c0;">小插曲：拍摄的时候康老师有多次要抓怕我的镜头都被各种原因打断了，呵呵。另外，因为我不会摆什么<span lang="EN-US">pose</span>，估计康老师拍得也挺费劲的，要不是一般都是新娘拍得比新郎多，我估计康老师早就去给我<span lang="EN-US">LG</span>拍了，呵呵。还有就是由于我不肯站到我认为危险的地方，也不认可只有在那种地方才能拍出好的片片的想法，所以可能很多原有的拍摄地或者计划都未能采用，不过也好，我可不希望和别人拍的一样。</span></strong></span></p>
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><span style="color: #ff80ff;"><strong> </strong></span></span></p>
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><strong><span style="color: #c00000;">时<span lang="EN-US"><span> </span></span>间：<span lang="EN-US">19:50-</span></span></strong></span></p>
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><strong><span style="color: #c00000;">关键词：返回北京</span></strong></span></p>
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><strong><span style="color: #c00000;">细<span lang="EN-US"><span> </span></span>节：无</span></strong></span></p>
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><strong><span style="color: #c00000;">小插曲：天黑且无路标，因此找不到京承高速的入口了，另外回京的路上，要过2次公安检查，一次要检查所有人员的身份证，另一次要检查车子的证件还有后备箱。</span></strong></span></p>
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><strong></strong></span></p>
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><span style="color: #0000ff;"> </span></span></p>
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; font-family: 楷体_GB2312;"><strong><span style="color: #7030a0;">真的是很辛苦的一天呢，希望在几天后可以看到美美的小样，<span lang="EN-US">hoho~~~~~~~~~~~~~~~~~~~~~~</span></span></strong></span></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.snowonrails.com/articles/2008/09/16/913%e9%95%bf%e5%9f%8e%e5%a9%9a%e7%ba%b1%e7%85%a7%e5%b0%8f%e8%ae%a1/feed/</wfw:commentRss>
		</item>
		<item>
		<title>nifty tmbundle for rails development</title>
		<link>http://blog.snowonrails.com/articles/2008/09/10/nifty-tmbundle-for-rails-development/</link>
		<comments>http://blog.snowonrails.com/articles/2008/09/10/nifty-tmbundle-for-rails-development/#comments</comments>
		<pubDate>Wed, 10 Sep 2008 06:53:30 +0000</pubDate>
		<dc:creator>snow</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[github]]></category>

		<category><![CDATA[Textmate]]></category>

		<category><![CDATA[tmbundle]]></category>

		<guid isPermaLink="false">http://blog.snowonrails.com/?p=76</guid>
		<description><![CDATA[textmate作为rails开发的利器对开发者来说最有价值的一点即可以自定义bundle然后添加snippet, command等等。今天将我常用的一些自定义的rails相关的bundle放到了github上边，感兴趣的朋友可以去看看 。现在的内容还不是很多，不过这两天抽空会大幅度的更新。
]]></description>
			<content:encoded><![CDATA[<p>textmate作为rails开发的利器对开发者来说最有价值的一点即可以自定义bundle然后添加snippet, command等等。今天将我常用的一些自定义的rails相关的bundle放到了<a href="http://github.com/zhangxue/snow-rails-tmbundle/tree/master" target="_blank">github上边</a>，感兴趣的朋友可以<a href="http://github.com/zhangxue/snow-rails-tmbundle/tree/master" target="_blank">去看看</a> 。现在的内容还不是很多，不过这两天抽空会大幅度的更新。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.snowonrails.com/articles/2008/09/10/nifty-tmbundle-for-rails-development/feed/</wfw:commentRss>
		</item>
		<item>
		<title>spring式的transaction管理</title>
		<link>http://blog.snowonrails.com/articles/2008/09/08/spring%e5%bc%8f%e7%9a%84transaction%e7%ae%a1%e7%90%86/</link>
		<comments>http://blog.snowonrails.com/articles/2008/09/08/spring%e5%bc%8f%e7%9a%84transaction%e7%ae%a1%e7%90%86/#comments</comments>
		<pubDate>Mon, 08 Sep 2008 15:23:27 +0000</pubDate>
		<dc:creator>snow</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[rails]]></category>

		<category><![CDATA[transaction]]></category>

		<guid isPermaLink="false">http://blog.snowonrails.com/?p=74</guid>
		<description><![CDATA[在javaeye上边看到了一个帖子，一个哥们儿(http://liuqiang.javaeye.com/) 提出了：如何同时提交多个model并且“失败全不存，成功全存”，其实就是典型的transaction场景，并且给出了几个解决方案，最后作者给出了其认为最好的一个解决方法，其核心代码就是通过：unless [@user, @city, @order].map(&#38;:valid?).include?(false) 的语句判断三个模型是否都通过验证，没有的话返回。
怎么说呢，这个方法应该说还是不错的，看上去比较简洁。但是看到的第一眼就感觉有点不对劲：为什么不用transaction? 呵呵，跟帖中马上有人有同样的意见，不过他给出的解决方案确实和我所想想的不一样，是更优雅，看到的第一眼就想到了2年前使用spring的transaction方法，同时也让用了快两年rails的我知道了 around_filter原来是这么用的，呵呵，张见识。代码已经记录下来了，在这里。
]]></description>
			<content:encoded><![CDATA[<p>在javaeye上边看到了一个<a href="http://www.javaeye.com/topic/238160" target="_blank">帖子</a>，一个哥们儿(http://liuqiang.javaeye.com/) 提出了：如何同时提交多个model并且“失败全不存，成功全存”，其实就是典型的transaction场景，并且给出了几个解决方案，最后作者给出了其认为最好的一个解决方法，其核心代码就是通过：unless [@user, @city, @order].map(&amp;:valid?).include?(false) 的语句判断三个模型是否都通过验证，没有的话返回。</p>
<p>怎么说呢，这个方法应该说还是不错的，看上去比较简洁。但是看到的第一眼就感觉有点不对劲：为什么不用transaction? 呵呵，跟帖中马上<a href="http://gigix.javaeye.com/">有人</a>有同样的意见，不过他给出的解决方案确实和我所想想的不一样，是更优雅，看到的第一眼就想到了2年前使用spring的transaction方法，同时也让用了快两年rails的我知道了 around_filter原来是这么用的，呵呵，张见识。代码已经记录下来了，<a href="http://pastie.org/268176" target="_blank">在这里</a>。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.snowonrails.com/articles/2008/09/08/spring%e5%bc%8f%e7%9a%84transaction%e7%ae%a1%e7%90%86/feed/</wfw:commentRss>
		</item>
		<item>
		<title>原来是插件在作怪!</title>
		<link>http://blog.snowonrails.com/articles/2008/09/08/%e5%8e%9f%e6%9d%a5%e6%98%af%e6%8f%92%e4%bb%b6%e5%9c%a8%e4%bd%9c%e6%80%aa/</link>
		<comments>http://blog.snowonrails.com/articles/2008/09/08/%e5%8e%9f%e6%9d%a5%e6%98%af%e6%8f%92%e4%bb%b6%e5%9c%a8%e4%bd%9c%e6%80%aa/#comments</comments>
		<pubDate>Mon, 08 Sep 2008 14:19:28 +0000</pubDate>
		<dc:creator>snow</dc:creator>
		
		<category><![CDATA[rails]]></category>

		<category><![CDATA[foreign_key_migrations]]></category>

		<guid isPermaLink="false">http://blog.snowonrails.com/?p=73</guid>
		<description><![CDATA[最近在和朋友共同做一个项目(当然是rails项目)，每个人分别负责几个功能模块。我们使用的是Rails2.1，项目的框架是那个哥们搭的，我加入之前简单看了一下整体的代码，由于还处在很初级的阶段所以代码比较简单，至于plugin，我就是打开vender/plugin简单的扫了一眼。随着项目的进行，发生了一些比较奇怪的事情，所有的**_id字段都被添加成为了foreign_key,我的第一直觉是:&#8221;难道rails新版本中添加了这个功能？但是没看到任何的地方提起啊！&#8221;于是乎又翻看了rails2.1的新功能 feature list,还是没有找到任何相关的信息。这个时候脑子不知怎么就这么死，不知道看看是不是plugin的问题，结果硬是分别测试了1.2.6，2.0.2 和2.1.0的migration，都没有发现自动添加fk的问题，这个时候才恍然大悟，打开了plugin目录，赫然看到了foreign_key_migrations。这个时候一切都明朗了：都是plugin搞得鬼。
]]></description>
			<content:encoded><![CDATA[<p>最近在和朋友共同做一个项目(当然是rails项目)，每个人分别负责几个功能模块。我们使用的是Rails2.1，项目的框架是那个哥们搭的，我加入之前简单看了一下整体的代码，由于还处在很初级的阶段所以代码比较简单，至于plugin，我就是打开vender/plugin简单的扫了一眼。随着项目的进行，发生了一些比较奇怪的事情，所有的**_id字段都被添加成为了foreign_key,我的第一直觉是:&#8221;难道rails新版本中添加了这个功能？但是没看到任何的地方提起啊！&#8221;于是乎又翻看了rails2.1的新功能 feature list,还是没有找到任何相关的信息。这个时候脑子不知怎么就这么死，不知道看看是不是plugin的问题，结果硬是分别测试了1.2.6，2.0.2 和2.1.0的migration，都没有发现自动添加fk的问题，这个时候才恍然大悟，打开了plugin目录，赫然看到了foreign_key_migrations。这个时候一切都明朗了：都是plugin搞得鬼。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.snowonrails.com/articles/2008/09/08/%e5%8e%9f%e6%9d%a5%e6%98%af%e6%8f%92%e4%bb%b6%e5%9c%a8%e4%bd%9c%e6%80%aa/feed/</wfw:commentRss>
		</item>
		<item>
		<title>踏踏实实的&#8230;</title>
		<link>http://blog.snowonrails.com/articles/2008/08/10/%e8%b8%8f%e8%b8%8f%e5%ae%9e%e5%ae%9e%e7%9a%84/</link>
		<comments>http://blog.snowonrails.com/articles/2008/08/10/%e8%b8%8f%e8%b8%8f%e5%ae%9e%e5%ae%9e%e7%9a%84/#comments</comments>
		<pubDate>Sun, 10 Aug 2008 13:55:06 +0000</pubDate>
		<dc:creator>snow</dc:creator>
		
		<category><![CDATA[随想]]></category>

		<guid isPermaLink="false">http://blog.snowonrails.com/?p=71</guid>
		<description><![CDATA[0:2 完败比利时，还有什么可说的呢，就算是不罚下两个人，估计也没戏，比利时后来也够给东道主面子的，挺知趣的倒球。东道主也挺识趣，提前将近十分钟也就默认了输球的结局。可怜了沈阳看球的球迷啊 &#8230;
以我看，中国足球没什么别的，就是不踏实。不踏实的搞联赛，不踏实的迎合好球迷，不踏实的训练&#8230; 不踏实的后果很严重啊！ 由此想到了自己，对照一下自己，是不是也有点不踏实呢？答案是肯定的。写此博，让自己从国奥的失利中得到一些警醒，不枉关注国奥一场 ！
]]></description>
			<content:encoded><![CDATA[<p>0:2 完败比利时，还有什么可说的呢，就算是不罚下两个人，估计也没戏，比利时后来也够给东道主面子的，挺知趣的倒球。东道主也挺识趣，提前将近十分钟也就默认了输球的结局。可怜了沈阳看球的球迷啊 &#8230;</p>
<p>以我看，中国足球没什么别的，就是不踏实。不踏实的搞联赛，不踏实的迎合好球迷，不踏实的训练&#8230; 不踏实的后果很严重啊！ 由此想到了自己，对照一下自己，是不是也有点不踏实呢？答案是肯定的。写此博，让自己从国奥的失利中得到一些警醒，不枉关注国奥一场 ！</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.snowonrails.com/articles/2008/08/10/%e8%b8%8f%e8%b8%8f%e5%ae%9e%e5%ae%9e%e7%9a%84/feed/</wfw:commentRss>
		</item>
		<item>
		<title>颐和园一日游</title>
		<link>http://blog.snowonrails.com/articles/2008/08/05/%e9%a2%90%e5%92%8c%e5%9b%ad%e4%b8%80%e6%97%a5%e6%b8%b8/</link>
		<comments>http://blog.snowonrails.com/articles/2008/08/05/%e9%a2%90%e5%92%8c%e5%9b%ad%e4%b8%80%e6%97%a5%e6%b8%b8/#comments</comments>
		<pubDate>Tue, 05 Aug 2008 01:27:47 +0000</pubDate>
		<dc:creator>snow</dc:creator>
		
		<category><![CDATA[生活]]></category>

		<category><![CDATA[游园 颐和园]]></category>

		<guid isPermaLink="false">http://blog.snowonrails.com/?p=65</guid>
		<description><![CDATA[由于北京市在奥运期间各个中小学校的足球场地都停止对外开放了，所以我也就把周六的时间空了出来。应老婆找地方划船的要求，我和阿廖商量之后决定去颐和园，上次去颐和园还是大二时候的事情了。于是在周日，我们顶着烈日，于上午到达颐和园，奥运前夕的景区就是不一样，人这叫一个多，票30块居然，这叫一个贵。进去之后逛了一下长廊，满足了阿廖对于长廊的怀念，不过由于人太多，气氛有点嘈杂。简单补充了写东西，我们直奔这次的主要目的地: 昆明湖，租了个6人小船，别说水上还就是凉爽，小风阵阵的，很是惬意，看着林霖都有要睡着的意思了。
下午在鼎好味千拉面的uno大战也是一日游的亮点，大家玩的不亦乐乎，我和林霖先后“引爆”了这个游戏。本来今天是刘晴的生日，阿廖要请吃老莫的大餐，可是由于众人玩的兴起，都依依不舍的，所以庆生的仪式也就由老莫改到了味千里边。我们买了个DQ的冰淇淋蛋糕(我靠，真TMD甜)简单的为刘晴庆祝了一下，然后继续uno，哈哈哈。
本次活动的照片在这里，未能亲身体验的可以感受一下。
]]></description>
			<content:encoded><![CDATA[<p>由于北京市在奥运期间各个中小学校的足球场地都停止对外开放了，所以我也就把周六的时间空了出来。应老婆找地方划船的要求，我和阿廖商量之后决定去颐和园，上次去颐和园还是大二时候的事情了。于是在周日，我们顶着烈日，于上午到达颐和园，奥运前夕的景区就是不一样，人这叫一个多，票30块居然，这叫一个贵。进去之后逛了一下长廊，满足了阿廖对于长廊的怀念，不过由于人太多，气氛有点嘈杂。简单补充了写东西，我们直奔这次的主要目的地: 昆明湖，租了个6人小船，别说水上还就是凉爽，小风阵阵的，很是惬意，看着林霖都有要睡着的意思了。</p>
<p>下午在鼎好味千拉面的<a href="http://tjgame.enorth.com.cn/system/2008/06/20/003429527.shtml" target="_blank">uno</a>大战也是一日游的亮点，大家玩的不亦乐乎，我和林霖先后“引爆”了这个游戏。本来今天是刘晴的生日，阿廖要请吃老莫的大餐，可是由于众人玩的兴起，都依依不舍的，所以庆生的仪式也就由老莫改到了味千里边。我们买了个DQ的冰淇淋蛋糕(我靠，真TMD甜)简单的为刘晴庆祝了一下，然后继续uno，哈哈哈。</p>
<p>本次活动的照片<a href="http://picasaweb.google.com/snowzhangxue/BkjWjH" target="_blank">在这里</a>，未能亲身体验的可以感受一下。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.snowonrails.com/articles/2008/08/05/%e9%a2%90%e5%92%8c%e5%9b%ad%e4%b8%80%e6%97%a5%e6%b8%b8/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Solving permission problem of apache+mod_rails on leopard</title>
		<link>http://blog.snowonrails.com/articles/2008/08/02/solving-permission-problem-of-apachemod_rails-on-leopard/</link>
		<comments>http://blog.snowonrails.com/articles/2008/08/02/solving-permission-problem-of-apachemod_rails-on-leopard/#comments</comments>
		<pubDate>Sat, 02 Aug 2008 04:22:58 +0000</pubDate>
		<dc:creator>snow</dc:creator>
		
		<category><![CDATA[mac]]></category>

		<category><![CDATA[apache]]></category>

		<category><![CDATA[leopard]]></category>

		<category><![CDATA[mod_rails]]></category>

		<guid isPermaLink="false">http://blog.snowonrails.com/?p=63</guid>
		<description><![CDATA[OK, this is not about the details of how to install mod_rails on leopard, actually the process is pretty straightforward and there are already some good document on mod_rails&#8217; website . Well, the confusing part of using mod_rails+apache on leopard is that you have to know how the default apache coming with leopard works. 
This is what [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>OK, this is not about the details of how to install mod_rails on leopard, actually the process is pretty straightforward and there are already some good document on <a href="http://www.modrails.com/" target="_blank">mod_rails&#8217; website</a> . Well, the confusing part of using mod_rails+apache on leopard is that you have to know how the default apache coming with leopard works. </p></blockquote>
<p>This is what I did after I installed mod_rails and copied those three lines to the httpd.conf</p>
<ol>
<li>Uncomment line 464: Include /private/etc/apache2/extra/httpd-vhosts.conf to enable the virtual host</li>
<li>add apps.conf under /etc/apache2/other , I will place all local app that I would like to use mod_rails here
<div>
<blockquote>
<div>&lt;VirtualHost *:80&gt;</div>
<div>ServerName test.local</div>
<div>DocumentRoot /Users/snow/Sites/test/public</div>
<div><span> </span>RailsEnv development</div>
<div>&lt;/VirtualHost&gt;</div>
</blockquote>
</div>
</li>
<li>adding virtual host in /etc/hosts : 127.0.0.1<span> </span>localhost test.local</li>
<li>now restart the apache, open the browser and visit redmin.local/images/logo_snap.jpg(some file I copied) and here comes the problem</li>
<blockquote>
<h1>Forbidden</h1>
<p>You don&#8217;t have permission to access /images/logo_snap.jpg on this server.</p></blockquote>
</ol>
<p>After googling for a while and doing some test, I figured out the reason:</p>
<ol>
<li>If you use the default apache coming with leopard, the only places you will place your site folder should be ~/Sites . Virtual hosts whose document root are somewhere other than ~/Sites will not be able to start properly and apache will throw the Forbidden page like above. But for me, I have another place to store my rails project (~/workspace) and I would not like to copy my file to ~/Sites every time so the first choice would be create symbolic links.</li>
<li>By default, the username.conf(in my case, snow.conf) under /etc/apache2/users looks like this by default:</li>
<blockquote>
<div>
<div>&lt;Directory &#8220;/Users/snow/Sites/&#8221;&gt;</div>
<div>    Options Indexes MultiViews</div>
<div>    AllowOverride None</div>
<div>    Order deny,allow</div>
<div>    Allow from all</div>
<div>&lt;/Directory&gt;</div>
</div>
<div>In order to let symbolic links work properly, I changed my snow.conf file to </div>
<div>
<div>&lt;Directory &#8220;/Users/snow/Sites/&#8221;&gt;</div>
<div>    Options Indexes MultiViews FollowSymLinks</div>
<div>    AllowOverride All</div>
<div>    Order allow,deny</div>
<div>    Allow from all</div>
<div>&lt;/Directory&gt;</div>
</div>
<div>If you don&#8217;t add FollowSymLinks in options, you will still get the permission error page.</div>
</blockquote>
<li>Ok, now I see my app working properly in my browser after typing http://test.local</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blog.snowonrails.com/articles/2008/08/02/solving-permission-problem-of-apachemod_rails-on-leopard/feed/</wfw:commentRss>
		</item>
		<item>
		<title>渴望体验结对编程</title>
		<link>http://blog.snowonrails.com/articles/2008/08/01/%e6%b8%b4%e6%9c%9b%e4%bd%93%e9%aa%8c%e7%bb%93%e5%af%b9%e7%bc%96%e7%a8%8b/</link>
		<comments>http://blog.snowonrails.com/articles/2008/08/01/%e6%b8%b4%e6%9c%9b%e4%bd%93%e9%aa%8c%e7%bb%93%e5%af%b9%e7%bc%96%e7%a8%8b/#comments</comments>
		<pubDate>Fri, 01 Aug 2008 13:53:58 +0000</pubDate>
		<dc:creator>snow</dc:creator>
		
		<category><![CDATA[软件开发]]></category>

		<category><![CDATA[结对编程]]></category>

		<guid isPermaLink="false">http://blog.snowonrails.com/?p=62</guid>
		<description><![CDATA[看了这篇文章以后，解决我心中对于结对的一些疑惑。说实在的，作者的那些问题，有相当一部分也是我对于结对的疑惑。当然，有些自己找到了答案，而有些在看了这篇文章之后，感觉豁然开朗。希望尽早有个机会体验一下结对，以及结对带来的思想和习惯的转变。 Anyway,到了做些转变的时候了，一成不变的生活已经持续了一年半多了，是该给生活添加一些新鲜元素了。
其实结对编程对开发者的冲击最大. 把你的工作重点从与机器打交道变成了与人打交道. 把你从虚拟的机器世界拉回到现实世界. 把程序员重新变回成&#8221;人&#8221;,  练习人与人之间的交流.
总体来讲，我的理解，结对带来的并不是两个人坐在一起，一块写代码这么简单，最主要的还是一个如何与团队中的成员交流的问题。借以和团队中的不同成员共同工作，来相互交流思想，强化沟通，让团队中每个成员的技术水平和思想意思达到尽可能的统一，从而最大限度发挥团队集体工作的合力。当然，并非所有的事情都需要pair完成，那些“力气活”和初期的思考可以先独立完成。
]]></description>
			<content:encoded><![CDATA[<p>看了<a href="http://blog.csdn.net/chelsea/archive/2008/07/27/2720933.aspx" target="_blank">这篇文章</a>以后，解决我心中对于结对的一些疑惑。说实在的，作者的那些问题，有相当一部分也是我对于结对的疑惑。当然，有些自己找到了答案，而有些在看了这篇文章之后，感觉豁然开朗。希望尽早有个机会体验一下结对，以及结对带来的思想和习惯的转变。 Anyway,到了做些转变的时候了，一成不变的生活已经持续了一年半多了，是该给生活添加一些新鲜元素了。</p>
<blockquote><p>其实结对编程对开发者的冲击最大. 把你的工作重点从与机器打交道变成了与人打交道. 把你从虚拟的机器世界拉回到现实世界. 把程序员重新变回成&#8221;人&#8221;,  练习人与人之间的交流.</p></blockquote>
<p>总体来讲，我的理解，结对带来的并不是两个人坐在一起，一块写代码这么简单，最主要的还是一个如何与团队中的成员交流的问题。借以和团队中的不同成员共同工作，来相互交流思想，强化沟通，让团队中每个成员的技术水平和思想意思达到尽可能的统一，从而最大限度发挥团队集体工作的合力。当然，并非所有的事情都需要pair完成，那些“力气活”和初期的思考可以先独立完成。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.snowonrails.com/articles/2008/08/01/%e6%b8%b4%e6%9c%9b%e4%bd%93%e9%aa%8c%e7%bb%93%e5%af%b9%e7%bc%96%e7%a8%8b/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
