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

<channel>
	<title>2ndboy@释放 3.0</title>
	<atom:link href="http://blog.2ndboy.net/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://blog.2ndboy.net</link>
	<description>你无法改变生命的长度，但你可以改变她的宽度</description>
	<lastBuildDate>Mon, 23 Aug 2010 14:39:08 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>武义牛头山、寿仙谷漂流</title>
		<link>http://blog.2ndboy.net/?p=470</link>
		<comments>http://blog.2ndboy.net/?p=470#comments</comments>
		<pubDate>Mon, 23 Aug 2010 14:39:08 +0000</pubDate>
		<dc:creator>2ndboy</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://blog.2ndboy.net/?p=470</guid>
		<description><![CDATA[　　最近工作比较忙，生活比较无趣，前天和昨天利用周末时间和 LP 姐姐一家一起去武义放松了一下。周六下午出发，据说去的时候绕了路，我们到牛头山景区门口的时候已经大概 4、5 点的样子，山上已经住满（只有 90 个房间），不过山上一晚 300 多的价格也确实是贵了点！于是又往回开，到第一个有村落的地方落脚，这里的房间价格倒是还行，100 一晚，但是饭菜实在是孙二娘价，而且超咸！！！
　　一分价钱一分货，继被半夜一点多投宿的一家吵醒后，天刚亮（或许还没亮）又被变态公鸡持续打鸣骚扰，早上 6 点起床明显休息不足。早饭吃的是店主亲自烧的鸡蛋面，又是超咸！！！而且店主说这面是天越热越咸，当时没当回事，后来也没明白这句话是什么意思，就是感觉&#8221;越热越咸&#8221;怎么听都有那么点点恶心:)
　　大概 7 点的样子来到景区门口（门口附近看到一个架在奔驰 SUV 车顶的帐篷，还有梯子上下，让我等土包子开了眼），门票￥65 还算合理。到停车场停好车，进了检票口以后感觉还真的有点“江南九寨沟”的感觉。路上景致很美自然不用多说，感触最深的就是两点：水实在是太清澈了！随手乱扔水瓶和其它垃圾的人实在是太多了！景区垃圾桶绝对不算少，而且垃圾袋也能看出来是刚换的，但是不自觉的人还是大有人在，这个责任不在景区，看来提高国民素质任重道远！！！
　　爬过山路若干不表，走过一座 100 多米的悬索桥很快就到了天师峰顶，说实话开始爬山的时候还以为爬的就是牛头山，等快上去的时候跟人打听才知道不是，据说牛头山距天师峰还有段距离，而且比天师峰高将近 600 米（天师峰高 998.6 米）。天师峰上风景相当不错，但是煞风景的是上面的“道士”和“道姑”（加引号是估计他们只是穿了那身皮在工作而已，而且极其铜臭。不过话又说回来，现在神州处处哪里不铜臭呢？！），俺“有幸”近距离的目击一个道姑打扮的村姑在呵斥大殿下方五、六米处正在敲钟的游客曰：“不许敲！敲了又不给功德钱！”，狂晕，巨恶！
　　下山过程中又见清潭澈水无数，一边感叹现在还未曾被污染的山山水水真是少，一边又能不断的看到各色矿泉水瓶，有些甚至喝了不到一小半！路上有看到景区专门负责捡拾游客随手乱丢垃圾的工作人员，但是很多扔有垃圾的地方是很难到达的山涧，水潭和石缝，工作人员也奈何不了……
　　下山后仍然只能到昨晚投宿的地方吃饭，还是超咸！！！
　　饭后驱车赶往寿仙谷漂流，票价￥108，对于它所提供的单纯漂流服务来讲，太贵了！排队的时候比较靠前，不过没想到我跟 LP 坐的小充气阀是第一个被放下去的，正是水流最大的时候！LP 一向对这类比较刺激的项目有点小担心，不过一般在有落差的时候都是我背朝前先下去的，所以她也很没良心的没什么负担:)一路顺利。每次冲过一个小落差后我们赶紧脱下安全帽往外舀水，然后赶在下一个落差到来前再把帽子戴回去，这也算个技术活儿，至少得眼疾手快。中途跟姐姐一家和其它游客打水仗若干，漂完以后感觉漂流本身刺激程度其实一般，但是打水仗真是好玩（出发前打水仗就没啥意思了，一大池子人，太挤）。
　　玩后感:) 二线城市人民的生活品质好过一线城市；武义牛头山风光真不错，水也真不错，但是配套还不够成熟，住宿餐饮有待增强；寿仙谷漂流刺激度虽然一般，但有优惠价的话还是比较推荐，就是上船前等待时间太长；靠山吃山靠水吃水，风景区周围的山民集体下海经商，这是地利；不管到哪儿玩，一定得自由行，而且最好自己开车；环境污染、拜金是常态，其它美好现象是不是成变态啦？
]]></description>
			<content:encoded><![CDATA[<p>　　最近工作比较忙，生活比较无趣，前天和昨天利用周末时间和 LP 姐姐一家一起去武义放松了一下。周六下午出发，据说去的时候绕了路，我们到牛头山景区门口的时候已经大概 4、5 点的样子，山上已经住满（只有 90 个房间），不过山上一晚 300 多的价格也确实是贵了点！于是又往回开，到第一个有村落的地方落脚，这里的房间价格倒是还行，100 一晚，但是饭菜实在是孙二娘价，而且超咸！！！</p>
<p>　　一分价钱一分货，继被半夜一点多投宿的一家吵醒后，天刚亮（或许还没亮）又被变态公鸡持续打鸣骚扰，早上 6 点起床明显休息不足。早饭吃的是店主亲自烧的鸡蛋面，又是超咸！！！而且店主说这面是天越热越咸，当时没当回事，后来也没明白这句话是什么意思，就是感觉&#8221;越热越咸&#8221;怎么听都有那么点点恶心:)</p>
<p>　　大概 7 点的样子来到景区门口（门口附近看到一个架在奔驰 SUV 车顶的帐篷，还有梯子上下，让我等土包子开了眼），门票￥65 还算合理。到停车场停好车，进了检票口以后感觉还真的有点“江南九寨沟”的感觉。路上景致很美自然不用多说，感触最深的就是两点：水实在是太清澈了！随手乱扔水瓶和其它垃圾的人实在是太多了！景区垃圾桶绝对不算少，而且垃圾袋也能看出来是刚换的，但是不自觉的人还是大有人在，这个责任不在景区，看来提高国民素质任重道远！！！</p>
<p>　　爬过山路若干不表，走过一座 100 多米的悬索桥很快就到了天师峰顶，说实话开始爬山的时候还以为爬的就是牛头山，等快上去的时候跟人打听才知道不是，据说牛头山距天师峰还有段距离，而且比天师峰高将近 600 米（天师峰高 998.6 米）。天师峰上风景相当不错，但是煞风景的是上面的“道士”和“道姑”（加引号是估计他们只是穿了那身皮在工作而已，而且极其铜臭。不过话又说回来，现在神州处处哪里不铜臭呢？！），俺“有幸”近距离的目击一个道姑打扮的村姑在呵斥大殿下方五、六米处正在敲钟的游客曰：“不许敲！敲了又不给功德钱！”，狂晕，巨恶！</p>
<p>　　下山过程中又见清潭澈水无数，一边感叹现在还未曾被污染的山山水水真是少，一边又能不断的看到各色矿泉水瓶，有些甚至喝了不到一小半！路上有看到景区专门负责捡拾游客随手乱丢垃圾的工作人员，但是很多扔有垃圾的地方是很难到达的山涧，水潭和石缝，工作人员也奈何不了……</p>
<p>　　下山后仍然只能到昨晚投宿的地方吃饭，还是超咸！！！</p>
<p>　　饭后驱车赶往寿仙谷漂流，票价￥108，对于它所提供的单纯漂流服务来讲，太贵了！排队的时候比较靠前，不过没想到我跟 LP 坐的小充气阀是第一个被放下去的，正是水流最大的时候！LP 一向对这类比较刺激的项目有点小担心，不过一般在有落差的时候都是我背朝前先下去的，所以她也很没良心的没什么负担:)一路顺利。每次冲过一个小落差后我们赶紧脱下安全帽往外舀水，然后赶在下一个落差到来前再把帽子戴回去，这也算个技术活儿，至少得眼疾手快。中途跟姐姐一家和其它游客打水仗若干，漂完以后感觉漂流本身刺激程度其实一般，但是打水仗真是好玩（出发前打水仗就没啥意思了，一大池子人，太挤）。</p>
<p>　　玩后感:) 二线城市人民的生活品质好过一线城市；武义牛头山风光真不错，水也真不错，但是配套还不够成熟，住宿餐饮有待增强；寿仙谷漂流刺激度虽然一般，但有优惠价的话还是比较推荐，就是上船前等待时间太长；靠山吃山靠水吃水，风景区周围的山民集体下海经商，这是地利；不管到哪儿玩，一定得自由行，而且最好自己开车；环境污染、拜金是常态，其它美好现象是不是成变态啦？</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.2ndboy.net/?feed=rss2&amp;p=470</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>批处理的“函数调用”</title>
		<link>http://blog.2ndboy.net/?p=465</link>
		<comments>http://blog.2ndboy.net/?p=465#comments</comments>
		<pubDate>Sat, 17 Jul 2010 16:39:39 +0000</pubDate>
		<dc:creator>2ndboy</dc:creator>
				<category><![CDATA[三句话不离本行]]></category>

		<guid isPermaLink="false">http://blog.2ndboy.net/?p=465</guid>
		<description><![CDATA[　　今天看 Visual Studio 2008 里环境设置批处理的时候学到一招，就是在批处理里面可以模拟出函数调用的效果，可以传参数也可以从“函数”里返回值，示例如下：
@echo off
call :foo 2ndboy
call :foo World
&#160;
goto :EOF
&#160;
:foo
echo Hello %1 !
exit /b
说白了就是 call 现在直接支持调用本批处理里面的一个标签，而不是我们以前熟知的调用另外一个批处理。但是其实内部的原理还是把批处理自身当作另外一个批处理来调用（创建新的上下文），只不过是直接调用到了标签这个级别罢了。所以在被调用标签的最后的 exit /b 就相当于是函数调用里面的 return，跟 return 一样，exit 也可以把特定的值返回给调用方，比如用 exit /b 0 返回 0。这样一来调用方还可以根据返回值做不同的处理（if %ERRORLEVEL%==0 echo ok）。
exit /b 还可以用 goto :EOF 来代替，两者都可以从被调用标签内部返回到 call 命令的下一行继续执行，区别是 goto :EOF 不带返回值。
最近在断续实战 Hudson 的时候补了不少批处理命令的课，发现 Windows 命令行已经增强了很多，远非 DOS 时代我熟悉的那些有限功能。当然，离 *nix shell 或者 PowerShell 还是有差距的，不过它对环境的依赖也最少，有时候信手拈来用用还是不错滴。
]]></description>
			<content:encoded><![CDATA[<p>　　今天看 Visual Studio 2008 里环境设置批处理的时候学到一招，就是在批处理里面可以模拟出函数调用的效果，可以传参数也可以从“函数”里返回值，示例如下：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">@echo off</li>
<li>call :foo 2ndboy</li>
<li>call :foo World</li>
<li>&nbsp;</li>
<li>goto :EOF</li>
<li>&nbsp;</li>
<li>:foo</li>
<li>echo Hello %1 !</li>
<li>exit /b</li></ol></div>
<p>说白了就是 call 现在直接支持调用本批处理里面的一个标签，而不是我们以前熟知的调用另外一个批处理。但是其实内部的原理还是把批处理自身当作另外一个批处理来调用（创建新的上下文），只不过是直接调用到了标签这个级别罢了。所以在被调用标签的最后的 exit /b 就相当于是函数调用里面的 return，跟 return 一样，exit 也可以把特定的值返回给调用方，比如用 exit /b 0 返回 0。这样一来调用方还可以根据返回值做不同的处理（if %ERRORLEVEL%==0 echo ok）。</p>
<p>exit /b 还可以用 goto :EOF 来代替，两者都可以从被调用标签内部返回到 call 命令的下一行继续执行，区别是 goto :EOF 不带返回值。</p>
<p>最近在断续实战 Hudson 的时候补了不少批处理命令的课，发现 Windows 命令行已经增强了很多，远非 DOS 时代我熟悉的那些有限功能。当然，离 *nix shell 或者 PowerShell 还是有差距的，不过它对环境的依赖也最少，有时候信手拈来用用还是不错滴。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.2ndboy.net/?feed=rss2&amp;p=465</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>大约两年前</title>
		<link>http://blog.2ndboy.net/?p=454</link>
		<comments>http://blog.2ndboy.net/?p=454#comments</comments>
		<pubDate>Mon, 21 Jun 2010 14:40:44 +0000</pubDate>
		<dc:creator>2ndboy</dc:creator>
				<category><![CDATA[随便说说]]></category>

		<guid isPermaLink="false">http://blog.2ndboy.net/?p=454</guid>
		<description><![CDATA[晚上翻看以前照片的时候偶然发现两张无意中拍得很巧的照片，于是 PS 了一下，有点意思 :D

]]></description>
			<content:encoded><![CDATA[<p>晚上翻看以前照片的时候偶然发现两张无意中拍得很巧的照片，于是 PS 了一下，有点意思 :D</p>
<p><img src="wp-content/uploads/20080809.jpg" alt="2008/08/09" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.2ndboy.net/?feed=rss2&amp;p=454</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>关于 W 公司的议论文</title>
		<link>http://blog.2ndboy.net/?p=451</link>
		<comments>http://blog.2ndboy.net/?p=451#comments</comments>
		<pubDate>Fri, 11 Jun 2010 13:09:48 +0000</pubDate>
		<dc:creator>2ndboy</dc:creator>
				<category><![CDATA[随便说说]]></category>

		<guid isPermaLink="false">http://blog.2ndboy.net/?p=451</guid>
		<description><![CDATA[　　W 公司的最高层多年来不重视研发投入，古人云人无远虑，必有近忧。近年来在产品开发上屡屡陷入被动，比如某大客户急着要某个 feature，那么就一声令下，大家听好了，x 个月内一定要把 O 产品的支持给我做出来。O 产品本是 M 公司的主打赢利产品，每隔 2、3 年就有新版升级，而且 M 公司投入在上面的人力动辄以千人计。W 公司对 O 产品的支持虽然不是 full feature 的支持，但工作量、复杂度仍相当可观！但投入的开发力量以个位数计，测试力量常以一二人计。问题是个位数的开发力量还常被各种 release 的小 enhancement 牵制，还有众多 bug 和 customer ticket 需要 fix（看了刚才的开发力量对比，众看客觉得没 bug 正常吗？），在高层多年不重视前瞻性研发投入的前提下，试问在 x 月内做出个甲乙丙来可能吗？如果程序员们真的傻到天真应允了此任务，那么也只能在此期间拼了老命，放下老婆孩子不管，没日没夜加班加点了（话又说回来，这样也未必可行）。W 公司最高层话说好像也是很关心民间疾苦的，每次莅临指导总要叫大家注意身体，多陪陪家人，但是貌似对多个大项目中集体出现的加班情况又似乎无视，这样的多核能力还是叫人 PF 滴！但是拜托去想想原因先？！
　　近日惊闻 M 公司的 O 产品又有新版计划推出，要在 W 公司的传统领域内进一步增强，继续挤压 W 公司，当然从今时今日来看 W 公司貌似还是该领域的老大，但是多年来不重视研发的积累效应必定在将来持续放大。有句话叫一流公司定标准，M 公司的 O 产品在占领市场多年后已经成为了事实上的标准且在不断增强，而 W 公司还躺在 y 年前的架构和所谓成绩里慢慢蠕动，继续着小作坊式的折腾。员工看在眼里，无奈在心头，对成就感和事业认同感的打击着实不小，有心杀敌无力回天的感觉油然而生:)。与其在作坊里浪费青春挥洒精力，还不如早做打算，投入到更有意义的事情当中。每个有上进心的人都有着对稳定生活的追求，但是却不能任由自己烂在去往 F 地的某条路上！
　　好吧我承认我在发牢骚。
]]></description>
			<content:encoded><![CDATA[<p>　　W 公司的最高层多年来不重视研发投入，古人云人无远虑，必有近忧。近年来在产品开发上屡屡陷入被动，比如某大客户急着要某个 feature，那么就一声令下，大家听好了，x 个月内一定要把 O 产品的支持给我做出来。O 产品本是 M 公司的主打赢利产品，每隔 2、3 年就有新版升级，而且 M 公司投入在上面的人力动辄以千人计。W 公司对 O 产品的支持虽然不是 full feature 的支持，但工作量、复杂度仍相当可观！但投入的开发力量以个位数计，测试力量常以一二人计。问题是个位数的开发力量还常被各种 release 的小 enhancement 牵制，还有众多 bug 和 customer ticket 需要 fix（看了刚才的开发力量对比，众看客觉得没 bug 正常吗？），在高层多年不重视前瞻性研发投入的前提下，试问在 x 月内做出个甲乙丙来可能吗？如果程序员们真的傻到天真应允了此任务，那么也只能在此期间拼了老命，放下老婆孩子不管，没日没夜加班加点了（话又说回来，这样也未必可行）。W 公司最高层话说好像也是很关心民间疾苦的，每次莅临指导总要叫大家注意身体，多陪陪家人，但是貌似对多个大项目中集体出现的加班情况又似乎无视，这样的多核能力还是叫人 PF 滴！但是拜托去想想原因先？！</p>
<p>　　近日惊闻 M 公司的 O 产品又有新版计划推出，要在 W 公司的传统领域内进一步增强，继续挤压 W 公司，当然从今时今日来看 W 公司貌似还是该领域的老大，但是多年来不重视研发的积累效应必定在将来持续放大。有句话叫一流公司定标准，M 公司的 O 产品在占领市场多年后已经成为了事实上的标准且在不断增强，而 W 公司还躺在 y 年前的架构和所谓成绩里慢慢蠕动，继续着小作坊式的折腾。员工看在眼里，无奈在心头，对成就感和事业认同感的打击着实不小，有心杀敌无力回天的感觉油然而生:)。与其在作坊里浪费青春挥洒精力，还不如早做打算，投入到更有意义的事情当中。每个有上进心的人都有着对稳定生活的追求，但是却不能任由自己烂在去往 F 地的某条路上！</p>
<p>　　好吧我承认我在发牢骚。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.2ndboy.net/?feed=rss2&amp;p=451</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>学车手记之——九选四</title>
		<link>http://blog.2ndboy.net/?p=448</link>
		<comments>http://blog.2ndboy.net/?p=448#comments</comments>
		<pubDate>Sun, 06 Jun 2010 04:43:23 +0000</pubDate>
		<dc:creator>2ndboy</dc:creator>
				<category><![CDATA[随便说说]]></category>

		<guid isPermaLink="false">http://blog.2ndboy.net/?p=448</guid>
		<description><![CDATA[　　本周四（6/3）上午终于开始学九选四了（其实上周五就可以学了，但是每周五上午都有周例会，所以延后一周），上周日还小小复习过一下全套桩考，可悲的发现反库有反复，不如开始那么顺了，有时间要强化一下！
　　练九选四是四个学员一起上阵，到另外一个场地转着圈的练，依次是侧方停车，S 路，圆饼，坡道定点停车，单边桥，直角转向。S 路比想象中容易得多，圆饼跟想象中的难度差不多，目前最怕的就是圆饼了。据教练讲，自从百米加减挡开考以后，这个科目的通过率只有 30% 左右，所以很容易栽在这上面。不过看样子教练是不打算给我们实际练习的机会啦，貌似只是原地练习加减挡而已。
-=-=-=-
跟了 4 年的《Lost》终于迎来大结局，虽然结局并没有解决所有疑问，但总算给众多 fans 一个交代，一直猜测白衣黑衣是上帝跟魔鬼，最后发现他们原来也是人。《Lost》陪着俺渡过了不少日子，是时候找另外一部剧看看了:)
]]></description>
			<content:encoded><![CDATA[<p>　　本周四（6/3）上午终于开始学九选四了（其实上周五就可以学了，但是每周五上午都有周例会，所以延后一周），上周日还小小复习过一下全套桩考，可悲的发现反库有反复，不如开始那么顺了，有时间要强化一下！</p>
<p>　　练九选四是四个学员一起上阵，到另外一个场地转着圈的练，依次是侧方停车，S 路，圆饼，坡道定点停车，单边桥，直角转向。S 路比想象中容易得多，圆饼跟想象中的难度差不多，目前最怕的就是圆饼了。据教练讲，自从百米加减挡开考以后，这个科目的通过率只有 30% 左右，所以很容易栽在这上面。不过看样子教练是不打算给我们实际练习的机会啦，貌似只是原地练习加减挡而已。</p>
<p>-=-=-=-</p>
<p>跟了 4 年的《Lost》终于迎来大结局，虽然结局并没有解决所有疑问，但总算给众多 fans 一个交代，一直猜测白衣黑衣是上帝跟魔鬼，最后发现他们原来也是人。《Lost》陪着俺渡过了不少日子，是时候找另外一部剧看看了:)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.2ndboy.net/?feed=rss2&amp;p=448</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Skip changelog computation on Hudson</title>
		<link>http://blog.2ndboy.net/?p=438</link>
		<comments>http://blog.2ndboy.net/?p=438#comments</comments>
		<pubDate>Thu, 27 May 2010 12:52:49 +0000</pubDate>
		<dc:creator>2ndboy</dc:creator>
				<category><![CDATA[Continuous Integration]]></category>

		<guid isPermaLink="false">http://blog.2ndboy.net/?p=438</guid>
		<description><![CDATA[　　Hudson 的 changelog computation 功能其实是个很有用的功能，但是如果你的项目是用 CVS 做 SCM 的，而且项目又特别大，那么这个 changelog computation 做起来那可是耗时巨大！就拿工作上的项目来说，CVS update + changelog computation + clean build 耗时 3 个多小时，其中居然有 2 个多小时是在做 changelog computation！！！所以即便是 local daily build 出了错，留给开发的反应时间太短。关于如何禁用这个 feature，在 Hudson 的 Wiki 上找到一篇文档。按照文档所述如法炮制，修改 Hudson home 目录下的 hudson.xml（这是 Hudson service 的配置文件），在  节点下加一句：
&#60;env&#160;name=&#34;hudson.scm.CVSSCM.skipChangeLog&#34; value=&#34;true&#34;/&#62;
　　但是试过以后发现根本没效果，所以看来文档上说的“In general, these switches are often experimental in nature, and subject [...]]]></description>
			<content:encoded><![CDATA[<p>　　Hudson 的 changelog computation 功能其实是个很有用的功能，但是如果你的项目是用 CVS 做 SCM 的，而且项目又特别大，那么这个 changelog computation 做起来那可是耗时巨大！就拿工作上的项目来说，CVS update + changelog computation + clean build 耗时 3 个多小时，其中居然有 2 个多小时是在做 changelog computation！！！所以即便是 local daily build 出了错，留给开发的反应时间太短。关于如何禁用这个 feature，在 Hudson 的 Wiki 上找到<a target="_blank" href="http://wiki.hudson-ci.org/display/HUDSON/Features+controlled+by+system+properties">一篇文档</a>。按照文档所述如法炮制，修改 Hudson home 目录下的 hudson.xml（这是 Hudson service 的配置文件），在 <service> 节点下加一句：</p>
<div class="hl-surround"><div class="hl-main"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li><span style="color: Olive;">&lt;</span><span style="color: Green;">env</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">hudson.scm.CVSSCM.skipChangeLog</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">true</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li></ol></div></div>
<p>　　但是试过以后发现根本没效果，所以看来文档上说的“In general, these switches are often experimental in nature, and subject to change without notice.”不是在忽悠:) 这么看来，不存在 disable changelog computation 一说，顶多也只能 skip。</p>
<p>　　<strike>今天尝试的一个方法可以达到绕过 changelog computation 的目的——建个新 job，workspace 设定成跟真正需要 build 的 job 一样。这个新 job 只做 SCM 部分的工作，然后早于需要 build 的 job 运行，这样等真正需要 build 的 job 运行起来的时候，changelog computation 的时间会大大缩短，现在用了这招后，我们的项目全程 build 时间减少到了正常的 1 小时左右。</strike></p>
<p>[Update: 2010/7/8]<br />
实践中发现上面这一招还是有玩儿不转的时候，比如在第一次和第二次 update 之间有过大量 code commit 的情况下，这个更新过程还是会长的让人崩溃。所以今天又换了个思路，干脆绕过 Hudson 的 SCM update 机制，用命令行自己来 update code。</p>
<p>方法是在所有的 build step 之前再加一个 Execute Windows batch command，示例内容如下：<br />
@echo off<br />
echo Updating src &#8230;<br />
cd %WORKSPACE%\src<br />
cvs -d :pserver:username:password@cvs_server_address:module update -P -d</p>
<p>由于 Hudson 在每次执行批处理的时候都会把 current path 设置在 workspace 下，所以命令序列里不用加切换盘符的内容，只需要按照实际需要切换路径就可以了。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.2ndboy.net/?feed=rss2&amp;p=438</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>shell in Hudson</title>
		<link>http://blog.2ndboy.net/?p=433</link>
		<comments>http://blog.2ndboy.net/?p=433#comments</comments>
		<pubDate>Wed, 26 May 2010 14:34:36 +0000</pubDate>
		<dc:creator>2ndboy</dc:creator>
				<category><![CDATA[Continuous Integration]]></category>

		<guid isPermaLink="false">http://blog.2ndboy.net/?p=433</guid>
		<description><![CDATA[　　以下内容说的是 Windows 平台，在 *nix 下用 shell 没什么好说的:)
　　在 Hudson 的系统设置里可以设置“Shell executable”，在 Windows 下，最好的选择是 Cygwin。不改 Cygwin 的默认安装路径的话，这里可以设置成“C:\cygwin\bin\sh.exe”，然后就可以在 job 设置里 add 一个“Execute shell”的 build step 了。这种情况下取 Hudson 预设环境变量的话可以在变量名前加“$”，比如 job 的 workspace 路径——$WORKSPACE。
　　如果不想装 Cygwin，或者觉得 shell 脚本太弱的话，Hudson 还支持用 Python 做 shell。这种情况下不用在系统设置里对“Shell executable”做什么设置，而是用 *nix 下 shell 脚本惯用的首行注释来指明 Python 解释器的位置。在 job 设置里用“Add build step”加一个“Execute shell”，然后在“Command”里直接写 Python 代码，比如第一行写：
#!E:\Python26\python.exe
就可以用 Windows 风格的路径来指示 Python 解释器所在的位置。这这种情况下，取 Hudson [...]]]></description>
			<content:encoded><![CDATA[<p>　　以下内容说的是 Windows 平台，在 *nix 下用 shell 没什么好说的:)</p>
<p>　　在 Hudson 的系统设置里可以设置“Shell executable”，在 Windows 下，最好的选择是 <a target="_blank" href="http://www.cygwin.com/">Cygwin</a>。不改 Cygwin 的默认安装路径的话，这里可以设置成“C:\cygwin\bin\sh.exe”，然后就可以在 job 设置里 add 一个“Execute shell”的 build step 了。这种情况下取 Hudson 预设环境变量的话可以在变量名前加“$”，比如 job 的 workspace 路径——$WORKSPACE。</p>
<p>　　如果不想装 Cygwin，或者觉得 shell 脚本太弱的话，Hudson 还<a target="_blank" href="http://wiki.hudson-ci.org/display/HUDSON/Shells">支持用 Python 做 shell</a>。这种情况下不用在系统设置里对“Shell executable”做什么设置，而是用 *nix 下 shell 脚本惯用的首行注释来指明 Python 解释器的位置。在 job 设置里用“Add build step”加一个“Execute shell”，然后在“Command”里直接写 Python 代码，比如第一行写：</p>
<div class="hl-surround"><div class="hl-main"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li><span style="color: #ffa500;">#!E:\Python26\python.exe</span></li></ol></div></div>
<p>就可以用 Windows 风格的路径来指示 Python 解释器所在的位置。这这种情况下，取 Hudson 预定义的环境变量要用库函数：</p>
<div class="hl-surround"><div class="hl-main"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li><span style="color: Green;">import</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">os</span></li>
<li><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">print</span><span style="color: Olive;">(</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">os</span><span style="color: Gray;">.</span><span style="color: Blue;">getenv</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">WORKSPACE</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">)</span></li></ol></div></div>
<p>　　还有一种情况是你的 Windows 系统里没装 Python，而是把 Python 装在了 Cygwin 里，这种情况下要配置系统设置里的“Shell executable”，然后 Python 脚本可以放在磁盘文件里。Command 里可以写成形如：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">/bin/python /cygdrive/E/foo/2ndboy.py</li></ol></div>
<p>或者：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">/bin/python E:/foo/2ndboy.py</li></ol></div>
<p>但不能写成：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">/bin/python E:\foo\2ndboy.py</li></ol></div>
<p>第一种“/cygdrive/E/foo/2ndboy.py”的形式是 Cygwin 里用于访问其它分区的语法形式，因为“/”只能访问到 Cygwin 的安装路径而已。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.2ndboy.net/?feed=rss2&amp;p=433</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>学车手记之——倒反库、移库、侧方停车</title>
		<link>http://blog.2ndboy.net/?p=424</link>
		<comments>http://blog.2ndboy.net/?p=424#comments</comments>
		<pubDate>Sun, 23 May 2010 07:26:32 +0000</pubDate>
		<dc:creator>2ndboy</dc:creator>
				<category><![CDATA[随便说说]]></category>

		<guid isPermaLink="false">http://blog.2ndboy.net/?p=424</guid>
		<description><![CDATA[　　教练曰：开弓没有回头箭，所以倒桩一学起来就连续教一串。5/13 倒正库，5/18 倒反库，5/21 移库，5/23（今天）侧方停车。今天是头一回在周末去学车，人没有我想象中的那么多。在场地里发现高尔夫球若干，居然有人在场地边上运动场的草坪上打高尔夫O_O
倒反库：
1. 左前窗门销跟(3)(6)号杆快成一条直线时左一圈半（到底）
2. (2)号杆在左后窗小三角中间时右回半圈
3. (2)号杆与左后窗立柱重合时再左打半圈（到底）
4. 注意右反光镜，(1)(6)号杆都能看到时回正（右转一圈半）
移库：
1. 一进：原地右打一圈，一档先前，左径对准(2)号杆时左打两圈，在(2)号杆前停下
2. 一倒：原地右打两圈，后退，左径对准(3)号杆时左打两圈，停在停车线
3. 二进：原地右打一圈半，一档向前，车左角过(2)号杆右侧一圈时左打一圈半（回正），在(2)号杆前停下
4. 二倒：原地右打两圈，后退，左后门把过中线时左打两圈，左前轮完全过中线后马上停车（否则容易出线）
倒正库、倒反库和移库全学完后就是一套完整的倒桩移库，全套动作的顺序是：
1. 从库的右前方倒正库倒入乙库（这时方向盘是回正状态）
2. 从乙库移库到甲库（结束时方向盘是向左一圈的状态，出库时不动方向，前进到车头在(2)(3)号杆中间时回正，从两根杆中间穿过，车左角到达黄底线时左打一圈半来到倒反库的位置）
3. 倒反库进入甲库，车完全进库后就可以开出的初始位置了
侧方停车：
1. 开左转向灯，倒档，车动起来后关左转向灯
2. (1)号杆与右后窗粗立柱重合时右打一圈半（到底）
3. 注意左后视镜，刚刚能看到(4)号杆时左打一圈半（回正）
4. (1)号杆刚刚出现在前挡风玻璃右边时左打一圈半（到底）
5. 继续倒车至车前左角对到(1)号杆时马上刹车（这时方向盘还是左打一圈半的位置），拉手刹
出停车位：
1. 开左转向灯，一档，放手刹，鸣笛，车动起来后关左转向灯
2. 车前左角挡住左边黄线时右打一圈半（回正）
3. 右后视镜完全过(1)号杆时右打一圈（打早了车右侧容易擦(1)号杆）
4. 车身摆正时左回一圈（回正）

发现没上手之前背动作没什么效果，还不如实地操作两把记得快。教练说现在九选四改成了九选三，如果必考项跟以前一样还是侧方停车和定点停车的话，随机抽取项就只有一项了。
]]></description>
			<content:encoded><![CDATA[<p>　　教练曰：开弓没有回头箭，所以倒桩一学起来就连续教一串。5/13 倒正库，5/18 倒反库，5/21 移库，5/23（今天）侧方停车。今天是头一回在周末去学车，人没有我想象中的那么多。在场地里发现高尔夫球若干，居然有人在场地边上运动场的草坪上打高尔夫O_O</p>
<p>倒反库：<br />
1. 左前窗门销跟(3)(6)号杆快成一条直线时左一圈半（到底）<br />
2. (2)号杆在左后窗小三角中间时右回半圈<br />
3. (2)号杆与左后窗立柱重合时再左打半圈（到底）<br />
4. 注意右反光镜，(1)(6)号杆都能看到时回正（右转一圈半）</p>
<p>移库：<br />
1. 一进：原地右打一圈，一档先前，左径对准(2)号杆时左打两圈，在(2)号杆前停下<br />
2. 一倒：原地右打两圈，后退，左径对准(3)号杆时左打两圈，停在停车线<br />
3. 二进：原地右打一圈半，一档向前，车左角过(2)号杆右侧一圈时左打一圈半（回正），在(2)号杆前停下<br />
4. 二倒：原地右打两圈，后退，左后门把过中线时左打两圈，左前轮完全过中线后马上停车（否则容易出线）</p>
<p>倒正库、倒反库和移库全学完后就是一套完整的倒桩移库，全套动作的顺序是：<br />
1. 从库的右前方倒正库倒入乙库（这时方向盘是回正状态）<br />
2. 从乙库移库到甲库（结束时方向盘是向左一圈的状态，出库时不动方向，前进到车头在(2)(3)号杆中间时回正，从两根杆中间穿过，车左角到达黄底线时左打一圈半来到倒反库的位置）<br />
3. 倒反库进入甲库，车完全进库后就可以开出的初始位置了</p>
<p>侧方停车：<br />
1. 开左转向灯，倒档，车动起来后关左转向灯<br />
2. (1)号杆与右后窗粗立柱重合时右打一圈半（到底）<br />
3. 注意左后视镜，刚刚能看到(4)号杆时左打一圈半（回正）<br />
4. (1)号杆刚刚出现在前挡风玻璃右边时左打一圈半（到底）<br />
5. 继续倒车至车前左角对到(1)号杆时马上刹车（这时方向盘还是左打一圈半的位置），拉手刹<br />
出停车位：<br />
1. 开左转向灯，一档，放手刹，鸣笛，车动起来后关左转向灯<br />
2. 车前左角挡住左边黄线时右打一圈半（回正）<br />
3. 右后视镜完全过(1)号杆时右打一圈（打早了车右侧容易擦(1)号杆）<br />
4. 车身摆正时左回一圈（回正）<br />
<img src="wp-content/uploads/car-02.gif" alt="侧方停车" /></p>
<p>发现没上手之前背动作没什么效果，还不如实地操作两把记得快。教练说现在九选四改成了九选三，如果必考项跟以前一样还是侧方停车和定点停车的话，随机抽取项就只有一项了。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.2ndboy.net/?feed=rss2&amp;p=424</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>学车手记之——倒正库</title>
		<link>http://blog.2ndboy.net/?p=421</link>
		<comments>http://blog.2ndboy.net/?p=421#comments</comments>
		<pubDate>Sun, 16 May 2010 13:23:37 +0000</pubDate>
		<dc:creator>2ndboy</dc:creator>
				<category><![CDATA[随便说说]]></category>

		<guid isPermaLink="false">http://blog.2ndboy.net/?p=421</guid>
		<description><![CDATA[　　周四学了倒正库，貌似网上也有人叫倒桩。说实话看其他人练的时候感觉动作挺复杂的，但是自己上去练了两把也就会了。虽然第一次转弯时离合器放得太快熄火，不过后来的几把就特别顺。教练说我们练的车跟几个月前的人不一样，他们那时候是两圈打死，我们现在用的车是一圈半就打死。今天网上查了一下，貌似是今年一月份以后教练车的方向盘改了助力方向盘，所以就不一样了。
　　回来之后根据教练教的方法做了个能放在 iPT 看的图，方便万一忘了的时候看看:)

]]></description>
			<content:encoded><![CDATA[<p>　　周四学了倒正库，貌似网上也有人叫倒桩。说实话看其他人练的时候感觉动作挺复杂的，但是自己上去练了两把也就会了。虽然第一次转弯时离合器放得太快熄火，不过后来的几把就特别顺。教练说我们练的车跟几个月前的人不一样，他们那时候是两圈打死，我们现在用的车是一圈半就打死。今天网上查了一下，貌似是今年一月份以后教练车的方向盘改了助力方向盘，所以就不一样了。</p>
<p>　　回来之后根据教练教的方法做了个能放在 iPT 看的图，方便万一忘了的时候看看:)<br />
<img src="wp-content/uploads/car-01.gif" alt="倒正库" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.2ndboy.net/?feed=rss2&amp;p=421</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>自己动手转 AAC</title>
		<link>http://blog.2ndboy.net/?p=418</link>
		<comments>http://blog.2ndboy.net/?p=418#comments</comments>
		<pubDate>Sun, 25 Apr 2010 15:20:07 +0000</pubDate>
		<dc:creator>2ndboy</dc:creator>
				<category><![CDATA[iPod]]></category>
		<category><![CDATA[天籁之音]]></category>

		<guid isPermaLink="false">http://blog.2ndboy.net/?p=418</guid>
		<description><![CDATA[　　自从败了 iPod Touch 以后，我就专找 AAC 的专辑下（穷人，没办法），不过 VeryCD 上的很多专辑都没有 AAC 格式，比如这张 Bryan Adams 的《So far so good》。iPT 不支持 APE，所以晚上研究了一把 APE 转 AAC。
　　网上找到了从 foobar2000 里用自带的 convert 功能做转换的方法，原理是调用第三方的 encoder，对 foobar2000 解出来的 PCM raw data 做编码，所以只要是 foobar 支持的音频格式都可以转成你想要的格式[1]。
　　至于编码器，我还是青睐开源的方案，所以就选了 faac(Freeware Advanced Audio Coder)。SourceForge 上下载的都是源代码，不想自己编译的话，可以在这里直接下载编译好的 binary。
　　打开 foobar 的设置，在 Tools 下找到 Converter，点 Add New，然后在 Encoder 里选 Custom。下面是三个最主要设置的填法：
Encoder：填 faac.exe 的绝对路径
Extension：按照 Apple 的惯例，填 m4a
Parameters：-w [...]]]></description>
			<content:encoded><![CDATA[<p>　　自从败了 iPod Touch 以后，我就专找 AAC 的专辑下（穷人，没办法），不过 VeryCD 上的很多专辑都没有 AAC 格式，比如这张 Bryan Adams 的<a href="http://www.verycd.com/topics/70362/">《So far so good》</a>。iPT 不支持 APE，所以晚上研究了一把 APE 转 AAC。</p>
<p>　　网上找到了从 foobar2000 里用自带的 convert 功能做转换的方法，原理是调用第三方的 encoder，对 foobar2000 解出来的 PCM raw data 做编码，所以只要是 foobar 支持的音频格式都可以转成你想要的格式<strong>[1]</strong>。</p>
<p>　　至于编码器，我还是青睐开源的方案，所以就选了 <a href="http://sourceforge.net/projects/faac/">faac(Freeware Advanced Audio Coder)</a>。SourceForge 上下载的都是源代码，不想自己编译的话，可以在<a href="http://www.rarewares.org/aac-encoders.php">这里</a>直接下载编译好的 binary。</p>
<p>　　打开 foobar 的设置，在 Tools 下找到 Converter，点 Add New，然后在 Encoder 里选 Custom。下面是三个最主要设置的填法：<br />
<strong>Encoder</strong>：填 faac.exe 的绝对路径<br />
<strong>Extension</strong>：按照 Apple 的惯例，填 m4a<br />
<strong>Parameters</strong>：-w -q 500 -c 22050 &#8211; -o %d<br />
注意上面参数中，22050的后面是“- -o”，不是“&#8211;o”，两个减号中间有个空格。这个参数是网友推荐的 VBR 最优设置，我用 faac &#8211;long-help 查了一下，解读如下：<br />
<strong>-w</strong>：把编码后的 AAC 数据放到 MP4 容器格式中，这样 iPT 才能识别。<br />
<strong>-q 5000</strong>：VBR 方式的最高质量，VBR 就不用解释啦。<br />
<strong>-c 22050</strong>：设置频带宽为 22050 Hz。无损的原始 CD 音频是 44100Hz 的，按照采样定律，采样率要是频带宽的 2 倍，所以这里把频带宽设置为 22050。<br />
<strong>-</strong>：这个单独的减号是让 faac 从 stdio/管道中读取原始音频数据，否则的话 foobar 要先把 PCM 数据写到一个临时文件里，再让 faac 去编码那个 WAVE 临时文件，多了个步骤。<br />
<strong>-o %d</strong>：告诉 faac 输出文件的文件名，这个 %d 是 foobar 设定的变量，转换时会被替换成用户指定的文件名。</p>
<p>　　设定好以后在 foobar 里右击要进行转换的 APE，Convert->&#8230;。在 Converter Setup 对话框的 Output format 里选中刚才创建的新 converter，转换进度条走完以后就可以去听一下转出来的 AAC 文件啦，绝对跟原始 APE 一模一样（反正不用专业仪器估计是听不出差别来地:)）。</p>
<p><strong>注 1</strong>：尽量不要用有损格式转到 AAC，比如 MP3->AAC，这样转出来的效果绝对比用无损的 APE 转到 AAC 要差很多！！！<br />
<strong>注 2</strong>：关于 AAC 的更多介绍，可以移步到<a href="http://www.verycd.com/groups/@g2381491/757876.topic">这里</a>围观。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.2ndboy.net/?feed=rss2&amp;p=418</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
