<?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>你膨胀了！</title>
	<atom:link href="http://lizheng.me/feed/" rel="self" type="application/rss+xml" />
	<link>http://lizheng.me</link>
	<description>@zhengli</description>
	<lastBuildDate>Tue, 22 Nov 2011 23:39:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>QUnit, 一款JavaScript单元测试框架</title>
		<link>http://lizheng.me/2011/10/qunit-introduction/</link>
		<comments>http://lizheng.me/2011/10/qunit-introduction/#comments</comments>
		<pubDate>Wed, 12 Oct 2011 03:30:39 +0000</pubDate>
		<dc:creator>nocoo</dc:creator>
				<category><![CDATA[开发心得]]></category>

		<guid isPermaLink="false">http://lizheng.me/?p=4306</guid>
		<description><![CDATA[QUnit是jQuery支持的一款JavaScript单页测试框架。简单易用。可以从QUnit的Github页面获取其代码。QUnit的使用与JUnit类似，相信有JUnit经验的开发者和测试人员可以很快上手。 开始写测试用例 test( name, expected, test ) 一个常规的测试用例。test里是测试用例的具体内容。 asyncTest( name, expected, test ) 一个异步测试用例。默认的test都是同步的。内容中必须显示地调用start()，测试才会开始。 expect( amount ) 用于测试代码中，表示在本测试里期待会执行amount个断言，大于或少于这个数量，测试都将失败。 module( name, lifecycle ) 定义一个名为name的模块。在可选参数lifecycle中，可以定义模块开始和结束的测试内容。具体见文档。 QUnit.init( ) 启动QUnit测试。如果测试在进行中，则会重新启动。基本不用。 QUnit支持的断言 ok( state, message ) 真假断言，state为true则通过。类似于JUnit的assertTrue。 equal( actual, expected, message ) 相等断言，actual和expected相等（==）则通过。类似于JUnit的assertEquals。 notEqual( actual, expected, message ) 不等断言，actual和expected不相等（!=）则通过。类似于JUnit的assertNotEquals。 deepEqual( actual, expected, message ) 递归相等断言，actual和expected全相等（包括其子元素都相等，适用于基本类型，数组和对象）则通过。对于基本类型，相当于strictEqual。 notDeepEqual( actual, expected, message ) [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://docs.jquery.com/QUnit">QUnit</a>是jQuery支持的一款JavaScript单页测试框架。简单易用。可以从<a href="https://github.com/jquery/qunit">QUnit的Github页面</a>获取其代码。QUnit的使用与JUnit类似，相信有JUnit经验的开发者和测试人员可以很快上手。</p>
<h3>开始写测试用例</h3>
<ul>
<li>
<strong>test( name, expected, test )</strong><br />
一个常规的测试用例。test里是测试用例的具体内容。
</li>
<li>
<strong>asyncTest( name, expected, test )</strong><br />
一个异步测试用例。默认的test都是同步的。内容中必须显示地调用start()，测试才会开始。
</li>
<li>
<strong>expect( amount )</strong><br />
用于测试代码中，表示在本测试里期待会执行amount个断言，大于或少于这个数量，测试都将失败。
</li>
<li>
<strong>module( name, lifecycle )</strong><br />
定义一个名为name的模块。在可选参数lifecycle中，可以定义模块开始和结束的测试内容。具体见文档。
</li>
<li>
<strong>QUnit.init( )</strong><br />
启动QUnit测试。如果测试在进行中，则会重新启动。基本不用。
</li>
</ul>
<h3>QUnit支持的断言</h3>
<ol>
<li>
<strong>ok( state, message )</strong><br />
真假断言，state为true则通过。类似于JUnit的assertTrue。
</li>
<li>
<strong>equal( actual, expected, message )</strong><br />
相等断言，actual和expected相等（==）则通过。类似于JUnit的assertEquals。
</li>
<li>
<strong>notEqual( actual, expected, message )</strong><br />
不等断言，actual和expected不相等（!=）则通过。类似于JUnit的assertNotEquals。
</li>
<li>
<strong>deepEqual( actual, expected, message )</strong><br />
递归相等断言，actual和expected全相等（包括其子元素都相等，适用于基本类型，数组和对象）则通过。对于基本类型，相当于strictEqual。
</li>
<li>
<strong>notDeepEqual( actual, expected, message )</strong><br />
递归不相等断言，actual和expected不全相等（包括其子元素都相等，适用于基本类型，数组和对象）则通过。对于基本类型，相当于notStrictEqual。
</li>
<li>
<strong>strictEqual( actual, expected, message )</strong><br />
全相等断言，actual和expected全相等（===）则通过。
</li>
<li>
<strong>notStrictEqual( actual, expected, message )</strong><br />
不全相等断言，actual和expected不全相等（===）则通过。
</li>
<li>
<strong>raises( block, expected, message )</strong><br />
异常断言，block中抛出异常则通过，expected为可选参数，是所期待抛出异常名的正则表达式。
</li>
</ol>
<h3>把QUnit集成到现有工具</h3>
<p>QUnit在执行的过程中会调用一系列函数，告知外界运行状况，大家可以覆盖这些函数，达到集成的目的。</p>
<ul>
<li><strong>QUnit.log({ result, actual, expected, message })</strong><br />
每当断言执行结束后会调用此函数。
</li>
<li><strong>QUnit.testStart({ name })</strong><br />
每当一个测试执行开始时会调用此函数。
</li>
<li><strong>QUnit.testDone({ name, failed, passed, total })</strong><br />
每当一个测试执行结束后会调用此函数。
</li>
<li><strong>QUnit.moduleStart({ name })</strong><br />
每当一个模块执行开始时会调用此函数。
</li>
<li><strong>QUnit.moduleDone({ name, failed, passed, total })</strong><br />
每当一个模块执行结束后会调用此函数。
</li>
<li><strong>QUnit.begin()</strong><br />
当QUnit开始时会调用此函数。
</li>
<li><strong>QUnit.done()</strong><br />
当QUnit结束后会调用此函数。
</li>
</ul>
<p>在后面的实例中，我写了一些覆盖，打印了执行过程。相信有了这些回调函数的帮助，写一个进度条出来也不是难事。</p>
<h3>QUnit的过滤器</h3>
<ul>
<li><strong>noglobals</strong><br />
如果勾选，那么如果一个测试中引入了全局变量，则测试会失败。JavaScript中引入全局变量（window的属性）是不推荐的行为。
</li>
<li><strong>notrycatch</strong><br />
如果勾选，代码中的try-catch将不会生效，一旦程序中有异常发生，测试即刻终止。
</li>
</ul>
<h3>QUnit的一个实例</h3>
<p>页面输出如下：</p>
<p><a href="http://lizheng.me/wp-content/uploads/2011/10/Screen-Shot-2011-10-12-at-10.47.06-AM.png"><img src="http://lizheng.me/wp-content/uploads/2011/10/Screen-Shot-2011-10-12-at-10.47.06-AM-610x514.png" alt="" title="Screen Shot 2011-10-12 at 10.47.06 AM" width="610" height="514" class="alignnone size-large wp-image-4311" /></a></p>
<p>页面全部代码如下：</p>
<pre>
&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot; &quot;http://www.w3.org/TR/html4/loose.dtd&quot;&gt;
&lt;html&gt;
	&lt;head&gt;
		&lt;script src=&quot;http://code.jquery.com/jquery-latest.js&quot;&gt;&lt;/script&gt;
		&lt;link rel=&quot;stylesheet&quot; href=&quot;http://code.jquery.com/qunit/git/qunit.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot; /&gt;
		&lt;style type=&quot;text/css&quot;&gt;
			#qunit-logs li {
				font-size: small;
				color: #366097;
			}
		&lt;/style&gt;

		&lt;script type=&quot;text/javascript&quot; src=&quot;http://code.jquery.com/qunit/git/qunit.js&quot;&gt;&lt;/script&gt;

		&lt;script&gt;
			$(document).ready(function() {
				var log = function(message) {
					$(&#039;#qunit-logs&#039;).append(&#039;&lt;li&gt;[&#039; + (new Date()).toLocaleTimeString() + &#039; &#039; +  (new Date()).getMilliseconds() + &#039;]&#039; + message + &#039;&lt;/li&gt;&#039;);
				}

				QUnit.begin = function() {
					log(&#039;[begin]&#039;);
				}

				QUnit.done = function() {
					log(&#039;[done]&#039;);
				}

				QUnit.reset = function() {
					log(&#039;[reset]&#039;);
				}

				QUnit.testStart = function(o) {
					log(&#039;[testStart]: &#039; + o.name);
				}

				QUnit.testDone = function(o) {
					log(&#039;[testDone]: &#039; + o.name + &#039;, total=&#039; + o.total + &#039;, passed=&#039; + o.passed + &#039;, failed=&#039; + o.failed);
				}

				QUnit.moduleStart = function(o) {
					log(&#039;[moduleStart]: &#039; + o.name);
				}

				QUnit.moduleDone = function(o) {
					log(&#039;[moduleDone]: &#039; + o.name + &#039;, total=&#039; + o.total + &#039;, passed=&#039; + o.passed + &#039;, failed=&#039; + o.failed);
				}

				test(&quot;a basic test example&quot;, function() {
					ok( true, &quot;this test is fine&quot; );
					var value = &quot;hello&quot;;
					equal( value, &quot;hello&quot;, &quot;We expect value to be hello&quot; );
				});

				module(&quot;Module A&quot;);

				test(&quot;first test within module&quot;, function() {
  					ok( true, &quot;all pass&quot; );
				});

				module(&quot;Module C&quot;);

				test(&quot;second test within module&quot;, function() {
					ok( true, &quot;all pass&quot; );
				});

				module(&quot;Module B&quot;);

				test(&quot;some other test&quot;, function() {
					//expect(1);
					equal( true, false, &quot;failing test&quot; );
					equal( true, true, &quot;passing test&quot; );
				});

				module(&quot;Module A&quot;);

				test(&quot;second test within module&quot;, function() {
					ok( true, &quot;all pass&quot; );
				});
			});
		&lt;/script&gt;
	&lt;/head&gt;
	&lt;body&gt;
		&lt;h1 id=&quot;qunit-header&quot;&gt;QUnit example&lt;/h1&gt;
		&lt;h2 id=&quot;qunit-banner&quot;&gt;&lt;/h2&gt;
		&lt;div id=&quot;qunit-testrunner-toolbar&quot;&gt;&lt;/div&gt;
		&lt;h2 id=&quot;qunit-userAgent&quot;&gt;&lt;/h2&gt;
		&lt;ol id=&quot;qunit-tests&quot;&gt;&lt;/ol&gt;
		&lt;div id=&quot;qunit-fixture&quot;&gt;test markup, will be hidden&lt;/div&gt;
		&lt;ul id=&quot;qunit-logs&quot;&gt;&lt;/ul&gt;
	&lt;/body&gt;
&lt;/html&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://lizheng.me/2011/10/qunit-introduction/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fancybox</title>
		<link>http://lizheng.me/2011/09/fancybox/</link>
		<comments>http://lizheng.me/2011/09/fancybox/#comments</comments>
		<pubDate>Wed, 28 Sep 2011 09:17:20 +0000</pubDate>
		<dc:creator>nocoo</dc:creator>
				<category><![CDATA[Web标准化研究]]></category>

		<guid isPermaLink="false">http://lizheng.me/?p=4297</guid>
		<description><![CDATA[jQuery插件fancybox。 Can display images, HTML elements, SWF movies, Iframes and also Ajax requests Customizable through settings and CSS Groups related items and adds navigation. If the mouse wheel plugin is included in the page then FancyBox will respond to mouse wheel events as well Support fancy transitions by using easing plugin Adds a nice drop [...]]]></description>
			<content:encoded><![CDATA[<p>jQuery插件<a href="http://fancybox.net/home">fancybox</a>。</p>
<blockquote><ul>
<li>Can display images, HTML elements, SWF movies, Iframes and also Ajax requests</li>
<li>Customizable through settings and CSS</li>
<li>Groups related items and adds navigation.</li>
<li>If the mouse wheel plugin is included in the page then FancyBox will respond to mouse wheel events as well</li>
<li>Support fancy transitions by using easing plugin</li>
<li>Adds a nice drop shadow under the zoomed item</li>
</ul>
</blockquote>
<p>Note.</p>
<p><a href="http://lizheng.me/wp-content/uploads/2011/09/fancybox-1.png"><img src="http://lizheng.me/wp-content/uploads/2011/09/fancybox-1-610x494.png" alt="" title="fancybox-1" width="610" height="494" class="alignnone size-large wp-image-4298" /></a></p>
<p><a href="http://lizheng.me/wp-content/uploads/2011/09/fancybox-2.png"><img src="http://lizheng.me/wp-content/uploads/2011/09/fancybox-2-610x498.png" alt="" title="fancybox-2" width="610" height="498" class="alignnone size-large wp-image-4299" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://lizheng.me/2011/09/fancybox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>折腾：Macbook Pro装SSD及光驱位改装硬盘盒</title>
		<link>http://lizheng.me/2011/08/macbook-ssd-optibay/</link>
		<comments>http://lizheng.me/2011/08/macbook-ssd-optibay/#comments</comments>
		<pubDate>Mon, 29 Aug 2011 02:54:44 +0000</pubDate>
		<dc:creator>nocoo</dc:creator>
				<category><![CDATA[开发心得]]></category>
		<category><![CDATA[服务器和集群技术]]></category>
		<category><![CDATA[苹果技术]]></category>

		<guid isPermaLink="false">http://lizheng.me/?p=4267</guid>
		<description><![CDATA[今天订的货终于到齐了。折腾一下，很顺利，记录如下： 我的目标：给Macbook装SSD，同时把原来的硬盘装在Macbook光驱位置，原来的光驱装在外置光盘盒里。 1. 拆后盖： (1) 准备合适的家伙，后盖的螺丝虽然是十字的，但是比较细小，换内存换硬盘你会频繁打开它们，要保护好。 (2) 经常用的Macbook，环境状况不好的话，里面会有超级多的灰，打开前要有心理准备。 (3) 我把螺丝按拆下来位置摆成这样了。 2. 拆光驱： (1) 到底把SSD盘装在原来的硬盘位，还是Optibay光驱位呢？建议装在Optibay位，因为Macbook硬盘位是有跌落保护的，因此在这里装机械硬盘能起到保护的效果。我这里是因为之前已经把SSD装在硬盘位，加上对这块Optibay硬盘改装盒并不太信任的缘故。 (2) 你可能会发现大量的灰，建议好好清理干净。不建议用卫生纸直接擦，导致大量静电产生。最好用吹的。 (3) 为了顺利拆下光驱，首先你要把盖在光驱上的那个条线连接在主板的一边向上拉起，并把右下黑色的无线模块两颗螺丝松开，向下掀起。不需要完全拆下。 (4) 光驱一共由3个螺丝固定，左，右上，右下。 3. 转移光驱的固定架： (1) 所谓光驱固定架，就是上面光驱边上突出来的那块金属，由两颗螺丝固定在光驱上。这里要拆下，转移到Optibay硬盘改装盒的相同位置上。 (2) 建议购买Macbook专用的Optibay硬盘改装盒，不然有可能改装盒上没有这两个开孔。 4. 把Optibay硬盘改装盒装到光驱位置 (1) 顺序和拆的顺序相反，很简单了。 5. 盖上后盖完成 (1) 这里我没急着把螺丝拧回去。但还是盖上后盖再开机，这样可以不破坏电磁屏蔽。 (2) 开机按Option有五个分区，我们成功了。 6. 外置光驱 (1) 我买的是一个套装，带一个USB 2.0的外置光驱盒，可以把拆出来的光驱装进去。 全部完成之后，下图是SSD的固态盘速度测试： 下图是装在OptiBay上的HDD硬盘速度测试： 下图是接在外置盒里的光驱： 找了张Mac安装盘，这是张D9双层盘，顺利读取：]]></description>
			<content:encoded><![CDATA[<p>今天订的货终于到齐了。折腾一下，很顺利，记录如下：<br />
我的目标：给Macbook装SSD，同时把原来的硬盘装在Macbook光驱位置，原来的光驱装在外置光盘盒里。</p>
<p>1. 拆后盖：</p>
<p><a href="http://lizheng.me/wp-content/uploads/2011/08/IMG_0290.jpg"><img src="http://lizheng.me/wp-content/uploads/2011/08/IMG_0290-610x455.jpg" alt="" title="IMG_0290" width="610" height="455" class="alignnone size-large wp-image-4274" /></a></p>
<p>(1) 准备合适的家伙，后盖的螺丝虽然是十字的，但是比较细小，换内存换硬盘你会频繁打开它们，要保护好。<br />
(2) 经常用的Macbook，环境状况不好的话，里面会有超级多的灰，打开前要有心理准备。<br />
(3) 我把螺丝按拆下来位置摆成这样了。</p>
<p>2. 拆光驱：</p>
<p><a href="http://lizheng.me/wp-content/uploads/2011/08/IMG_0291.jpg"><img src="http://lizheng.me/wp-content/uploads/2011/08/IMG_0291-610x455.jpg" alt="" title="IMG_0291" width="610" height="455" class="alignnone size-large wp-image-4276" /></a></p>
<p><a href="http://lizheng.me/wp-content/uploads/2011/08/IMG_0292.jpg"><img src="http://lizheng.me/wp-content/uploads/2011/08/IMG_0292-610x455.jpg" alt="" title="IMG_0292" width="610" height="455" class="alignnone size-large wp-image-4277" /></a></p>
<p>(1) 到底把SSD盘装在原来的硬盘位，还是Optibay光驱位呢？建议装在Optibay位，因为Macbook硬盘位是有跌落保护的，因此在这里装机械硬盘能起到保护的效果。我这里是因为之前已经把SSD装在硬盘位，加上对这块Optibay硬盘改装盒并不太信任的缘故。<br />
(2) 你可能会发现大量的灰，建议好好清理干净。不建议用卫生纸直接擦，导致大量静电产生。最好用吹的。<br />
(3) 为了顺利拆下光驱，首先你要把盖在光驱上的那个条线连接在主板的一边向上拉起，并把右下黑色的无线模块两颗螺丝松开，向下掀起。不需要完全拆下。<br />
(4) 光驱一共由3个螺丝固定，左，右上，右下。</p>
<p>3. 转移光驱的固定架：</p>
<p><a href="http://lizheng.me/wp-content/uploads/2011/08/IMG_0293.jpg"><img src="http://lizheng.me/wp-content/uploads/2011/08/IMG_0293-610x455.jpg" alt="" title="IMG_0293" width="610" height="455" class="alignnone size-large wp-image-4278" /></a></p>
<p><a href="http://lizheng.me/wp-content/uploads/2011/08/IMG_0294.jpg"><img src="http://lizheng.me/wp-content/uploads/2011/08/IMG_0294-610x455.jpg" alt="" title="IMG_0294" width="610" height="455" class="alignnone size-large wp-image-4279" /></a></p>
<p><a href="http://lizheng.me/wp-content/uploads/2011/08/IMG_0295.jpg"><img src="http://lizheng.me/wp-content/uploads/2011/08/IMG_0295-610x455.jpg" alt="" title="IMG_0295" width="610" height="455" class="alignnone size-large wp-image-4280" /></a></p>
<p>(1) 所谓光驱固定架，就是上面光驱边上突出来的那块金属，由两颗螺丝固定在光驱上。这里要拆下，转移到Optibay硬盘改装盒的相同位置上。<br />
(2) 建议购买Macbook专用的Optibay硬盘改装盒，不然有可能改装盒上没有这两个开孔。</p>
<p>4. 把Optibay硬盘改装盒装到光驱位置</p>
<p><a href="http://lizheng.me/wp-content/uploads/2011/08/IMG_0296.jpg"><img src="http://lizheng.me/wp-content/uploads/2011/08/IMG_0296-610x455.jpg" alt="" title="IMG_0296" width="610" height="455" class="alignnone size-large wp-image-4281" /></a></p>
<p>(1) 顺序和拆的顺序相反，很简单了。</p>
<p>5. 盖上后盖完成</p>
<p><a href="http://lizheng.me/wp-content/uploads/2011/08/IMG_0297.jpg"><img src="http://lizheng.me/wp-content/uploads/2011/08/IMG_0297-610x455.jpg" alt="" title="IMG_0297" width="610" height="455" class="alignnone size-large wp-image-4282" /></a></p>
<p><a href="http://lizheng.me/wp-content/uploads/2011/08/IMG_0298.jpg"><img src="http://lizheng.me/wp-content/uploads/2011/08/IMG_0298-610x455.jpg" alt="" title="IMG_0298" width="610" height="455" class="alignnone size-large wp-image-4283" /></a></p>
<p>(1) 这里我没急着把螺丝拧回去。但还是盖上后盖再开机，这样可以不破坏电磁屏蔽。<br />
(2) 开机按Option有五个分区，我们成功了。</p>
<p>6. 外置光驱</p>
<p><a href="http://lizheng.me/wp-content/uploads/2011/08/IMG_0299.jpg"><img src="http://lizheng.me/wp-content/uploads/2011/08/IMG_0299-610x455.jpg" alt="" title="IMG_0299" width="610" height="455" class="alignnone size-large wp-image-4284" /></a></p>
<p>(1) 我买的是一个套装，带一个USB 2.0的外置光驱盒，可以把拆出来的光驱装进去。</p>
<p>全部完成之后，下图是SSD的固态盘速度测试：</p>
<p><a href="http://lizheng.me/wp-content/uploads/2011/08/Screen-Shot-2011-08-26-at-10.27.34-AM1.png"><img src="http://lizheng.me/wp-content/uploads/2011/08/Screen-Shot-2011-08-26-at-10.27.34-AM1-610x627.png" alt="" title="Screen Shot 2011-08-26 at 10.27.34 AM" width="610" height="627" class="alignnone size-large wp-image-4269" /></a></p>
<p>下图是装在OptiBay上的HDD硬盘速度测试：</p>
<p><a href="http://lizheng.me/wp-content/uploads/2011/08/Screen-Shot-2011-08-26-at-4.13.34-PM.png"><img src="http://lizheng.me/wp-content/uploads/2011/08/Screen-Shot-2011-08-26-at-4.13.34-PM-610x627.png" alt="" title="Screen Shot 2011-08-26 at 4.13.34 PM" width="610" height="627" class="alignnone size-large wp-image-4268" /></a></p>
<p>下图是接在外置盒里的光驱：</p>
<p><a href="http://lizheng.me/wp-content/uploads/2011/08/Screen-Shot-2011-08-26-at-4.24.13-PM.png"><img src="http://lizheng.me/wp-content/uploads/2011/08/Screen-Shot-2011-08-26-at-4.24.13-PM-610x567.png" alt="" title="Screen Shot 2011-08-26 at 4.24.13 PM" width="610" height="567" class="alignnone size-large wp-image-4270" /></a></p>
<p>找了张Mac安装盘，这是张D9双层盘，顺利读取：</p>
<p><a href="http://lizheng.me/wp-content/uploads/2011/08/Screen-Shot-2011-08-26-at-4.24.47-PM.png"><img src="http://lizheng.me/wp-content/uploads/2011/08/Screen-Shot-2011-08-26-at-4.24.47-PM-610x540.png" alt="" title="Screen Shot 2011-08-26 at 4.24.47 PM" width="610" height="540" class="alignnone size-large wp-image-4271" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://lizheng.me/2011/08/macbook-ssd-optibay/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>如何使Mac OS X Lion 10.7.1支持SSD的TRIM技术</title>
		<link>http://lizheng.me/2011/08/mac-os-lion-10-7-1-support-ssd-trim/</link>
		<comments>http://lizheng.me/2011/08/mac-os-lion-10-7-1-support-ssd-trim/#comments</comments>
		<pubDate>Fri, 26 Aug 2011 07:14:38 +0000</pubDate>
		<dc:creator>nocoo</dc:creator>
				<category><![CDATA[开发心得]]></category>
		<category><![CDATA[服务器和集群技术]]></category>
		<category><![CDATA[苹果技术]]></category>

		<guid isPermaLink="false">http://lizheng.me/?p=4257</guid>
		<description><![CDATA[在默认情况下，10.6.4以后的Mac OS X只对苹果自家或者预置在Air等产品里的SSD硬盘开启TRIM技术。 TRIM技术的基本原理是，当有文件被删除时，操作系统会发给SSD一个指令，使得SSD在空闲的时候清除被删除文件所占用的存储单元。如果TRIM没有开启，那么SSD会在存储单元再次被使用时，先清除内容，再执行写入。这个区别在于传统硬盘和SSD硬盘的实现方式上。对于传统硬盘来说，写一个数据块的时候，数据块是否有内容是无所谓的，既不会减慢写入速度也不会影响其寿命，而SSD则不然，从底层实现来看，写一个新块，比写一个包含内容的块要慢，而且长期会导致SSD存储单元寿命下降。因此在SSD硬盘上使用TRIM，会提升其写操作速度，及延长SSD硬盘寿命。 具体的开启方法可见这篇博客。 我翻译之后把步骤写在这里，如何打开SSD的TRIM支持： 1. 备份原来的IOAHCIBlockStorage： 打开终端（Terminal），输入以下指令（可能需要输入密码）： sudo cp /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage /IOAHCIBlockStorage.original 这一步把系统原来的IOAHCIBlockStorage备份到了磁盘根目录/处。 2. 开启TRIM sudo perl -pi -e &#8216;s&#124;(\x52\x6F\x74\x61\x74\x69\x6F\x6E\x61\x6C\x00).{9}(\x00\x51)&#124;$1\x00\x00\x00\x00\x00\x00\x00\x00\x00$2&#124;sg&#8217; /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage 这一步更改了IOAHCIBlockStorage内容，打开TRIM。 3. 重启系统 如果一切正常，重启之后TRIM就已经被打开。 以下是恢复步骤： 如果你想关闭TRIM，执行以下命令： sudo perl -pi -e &#8216;s&#124;(\x52\x6F\x74\x61\x74\x69\x6F\x6E\x61\x6C\x00).{9}(\x00\x51)&#124;$1\x41\x50\x50\x4C\x45\x20\x53\x53\x44$2&#124;sg&#8217; /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage 实在不行，你可以恢复到之前备份的IOAHCIBlockStorage： sudo cp /IOAHCIBlockStorage.original /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage 开启TRIM之后，系统信息显示为： 注意下面的“TRIM Support”已经显示为“YES”，说明TRIM已经成功开启了。 机器的其他信息如下： 开启前后速度对比，虽然不明显&#8230; 开启前： 开启后：]]></description>
			<content:encoded><![CDATA[<p>在默认情况下，10.6.4以后的Mac OS X只对苹果自家或者预置在Air等产品里的SSD硬盘开启TRIM技术。<br />
TRIM技术的基本原理是，当有文件被删除时，操作系统会发给SSD一个指令，使得SSD在空闲的时候清除被删除文件所占用的存储单元。如果TRIM没有开启，那么SSD会在存储单元再次被使用时，先清除内容，再执行写入。这个区别在于传统硬盘和SSD硬盘的实现方式上。对于传统硬盘来说，写一个数据块的时候，数据块是否有内容是无所谓的，既不会减慢写入速度也不会影响其寿命，而SSD则不然，从底层实现来看，写一个新块，比写一个包含内容的块要慢，而且长期会导致SSD存储单元寿命下降。因此在SSD硬盘上使用TRIM，会提升其写操作速度，及延长SSD硬盘寿命。</p>
<p>具体的开启方法可见<a href="http://www.mactrast.com/2011/07/how-to-enable-trim-support-for-all-ssds-in-os-x-lion/" target="_blank">这篇博客</a>。<br />
我翻译之后把步骤写在这里，如何打开SSD的TRIM支持：</p>
<p><strong>1. 备份原来的IOAHCIBlockStorage：</strong></p>
<p>打开终端（Terminal），输入以下指令（可能需要输入密码）：</p>
<blockquote><p>
sudo cp /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage /IOAHCIBlockStorage.original
</p></blockquote>
<p>这一步把系统原来的IOAHCIBlockStorage备份到了磁盘根目录/处。</p>
<p><strong>2. 开启TRIM</strong></p>
<blockquote><p>
sudo perl -pi -e &#8216;s|(\x52\x6F\x74\x61\x74\x69\x6F\x6E\x61\x6C\x00).{9}(\x00\x51)|$1\x00\x00\x00\x00\x00\x00\x00\x00\x00$2|sg&#8217; /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage
</p></blockquote>
<p>这一步更改了IOAHCIBlockStorage内容，打开TRIM。</p>
<p><strong>3. 重启系统</strong></p>
<p>如果一切正常，重启之后TRIM就已经被打开。</p>
<p>以下是恢复步骤：<br />
如果你想关闭TRIM，执行以下命令：</p>
<blockquote><p>
sudo perl -pi -e &#8216;s|(\x52\x6F\x74\x61\x74\x69\x6F\x6E\x61\x6C\x00).{9}(\x00\x51)|$1\x41\x50\x50\x4C\x45\x20\x53\x53\x44$2|sg&#8217; /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage
</p></blockquote>
<p>实在不行，你可以恢复到之前备份的IOAHCIBlockStorage：</p>
<blockquote><p>
sudo cp /IOAHCIBlockStorage.original /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage
</p></blockquote>
<p>开启TRIM之后，系统信息显示为：</p>
<p><a href="http://lizheng.me/wp-content/uploads/2011/08/Screen-Shot-2011-08-26-at-2.45.06-PM.png"><img src="http://lizheng.me/wp-content/uploads/2011/08/Screen-Shot-2011-08-26-at-2.45.06-PM-610x447.png" alt="" title="Screen Shot 2011-08-26 at 2.45.06 PM" width="610" height="447" class="alignnone size-large wp-image-4258" /></a></p>
<p>注意下面的“TRIM Support”已经显示为“YES”，说明TRIM已经成功开启了。</p>
<p>机器的其他信息如下：</p>
<p><a href="http://lizheng.me/wp-content/uploads/2011/08/Screen-Shot-2011-08-26-at-1.42.34-PM.png"><img src="http://lizheng.me/wp-content/uploads/2011/08/Screen-Shot-2011-08-26-at-1.42.34-PM-610x389.png" alt="" title="Screen Shot 2011-08-26 at 1.42.34 PM" width="610" height="389" class="alignnone size-large wp-image-4260" /></a></p>
<p><a href="http://lizheng.me/wp-content/uploads/2011/08/Screen-Shot-2011-08-26-at-1.42.41-PM.png"><img src="http://lizheng.me/wp-content/uploads/2011/08/Screen-Shot-2011-08-26-at-1.42.41-PM-610x567.png" alt="" title="Screen Shot 2011-08-26 at 1.42.41 PM" width="610" height="567" class="alignnone size-large wp-image-4261" /></a></p>
<p>开启前后速度对比，虽然不明显&#8230;</p>
<p><strong>开启前：</strong></p>
<p><a href="http://lizheng.me/wp-content/uploads/2011/08/Screen-Shot-2011-08-26-at-10.27.34-AM.png"><img src="http://lizheng.me/wp-content/uploads/2011/08/Screen-Shot-2011-08-26-at-10.27.34-AM-610x627.png" alt="" title="Screen Shot 2011-08-26 at 10.27.34 AM" width="610" height="627" class="alignnone size-large wp-image-4262" /></a></p>
<p><strong>开启后：</strong></p>
<p><a href="http://lizheng.me/wp-content/uploads/2011/08/Screen-Shot-2011-08-26-at-2.46.23-PM.png"><img src="http://lizheng.me/wp-content/uploads/2011/08/Screen-Shot-2011-08-26-at-2.46.23-PM-610x627.png" alt="" title="Screen Shot 2011-08-26 at 2.46.23 PM" width="610" height="627" class="alignnone size-large wp-image-4263" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://lizheng.me/2011/08/mac-os-lion-10-7-1-support-ssd-trim/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Modernizr: 一款HTML5浏览器功能支持检测工具</title>
		<link>http://lizheng.me/2011/08/modernizr/</link>
		<comments>http://lizheng.me/2011/08/modernizr/#comments</comments>
		<pubDate>Wed, 17 Aug 2011 09:49:56 +0000</pubDate>
		<dc:creator>nocoo</dc:creator>
				<category><![CDATA[Web标准化研究]]></category>

		<guid isPermaLink="false">http://lizheng.me/?p=4252</guid>
		<description><![CDATA[Modernizr is a small JavaScript library that detects the availability of native implementations for next-generation web technologies, i.e. features that stem from the HTML5 and CSS3 specifications. Many of these features are already implemented in at least one major browser (most of them in two or more), and what Modernizr does is, very simply, tell [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://lizheng.me/wp-content/uploads/2011/08/Modernizr.png"><img src="http://lizheng.me/wp-content/uploads/2011/08/Modernizr-610x486.png" alt="" title="Modernizr" width="610" height="486" class="alignnone size-large wp-image-4253" /></a></p>
<blockquote><p>Modernizr is a small JavaScript library that detects the availability of native implementations for next-generation web technologies, i.e. features that stem from the HTML5 and CSS3 specifications. Many of these features are already implemented in at least one major browser (most of them in two or more), and what Modernizr does is, very simply, tell you whether the current browser has this feature natively implemented or not.</p></blockquote>
<p><a href="http://www.modernizr.com/" target="_blank">Modernizr</a>可以帮你检测当前用户的浏览器是否支持特定的HTML5或CSS3特性。这可以帮助你的HTML5应用节省大量的时间和复杂的编码，提供一处标准的使用方法来检测HTML5特性是否可用。</p>
<p>Modernizr提供一个js脚本文件，你只需要引用这个文件，就可以得到一个全局变量Modernizr，读取Modernizr的属性就可以得知特定的HTML5或CSS3是否支持。</p>
<p>最后，Modernizr是MIT-licensed，所以你可以放心地用在各种类型的项目中。</p>
]]></content:encoded>
			<wfw:commentRss>http://lizheng.me/2011/08/modernizr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>凤凰网扑天盖地的广告啊</title>
		<link>http://lizheng.me/2011/06/ifeng-ads/</link>
		<comments>http://lizheng.me/2011/06/ifeng-ads/#comments</comments>
		<pubDate>Fri, 24 Jun 2011 03:35:12 +0000</pubDate>
		<dc:creator>nocoo</dc:creator>
				<category><![CDATA[心情日记]]></category>

		<guid isPermaLink="false">http://lizheng.me/?p=4229</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><a href="http://lizheng.me/wp-content/uploads/2011/06/Screen-Shot-2011-06-24-at-11.33.27-AM.png"><img class="alignnone size-large wp-image-4230" title="Screen Shot 2011-06-24 at 11.33.27 AM" src="http://lizheng.me/wp-content/uploads/2011/06/Screen-Shot-2011-06-24-at-11.33.27-AM-610x562.png" alt="" width="610" height="562" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://lizheng.me/2011/06/ifeng-ads/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>推荐服务：Hello Bar</title>
		<link>http://lizheng.me/2011/06/hello-bar/</link>
		<comments>http://lizheng.me/2011/06/hello-bar/#comments</comments>
		<pubDate>Thu, 23 Jun 2011 12:31:21 +0000</pubDate>
		<dc:creator>nocoo</dc:creator>
				<category><![CDATA[Web标准化研究]]></category>

		<guid isPermaLink="false">http://lizheng.me/?p=4222</guid>
		<description><![CDATA[推荐给大家一个国外服务，Hello Bar。可以维护一个通知条在你的网站顶端。]]></description>
			<content:encoded><![CDATA[<p>推荐给大家一个国外服务，Hello Bar。可以维护一个通知条在你的网站顶端。</p>
<p><a href="http://lizheng.me/wp-content/uploads/2011/06/hellobar.png"><img class="alignnone size-large wp-image-4223" title="hellobar" src="http://lizheng.me/wp-content/uploads/2011/06/hellobar-515x1024.png" alt="" width="515" height="1024" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://lizheng.me/2011/06/hello-bar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>推荐新软Reeder 1.0</title>
		<link>http://lizheng.me/2011/06/reeder-1-0/</link>
		<comments>http://lizheng.me/2011/06/reeder-1-0/#comments</comments>
		<pubDate>Thu, 23 Jun 2011 07:49:48 +0000</pubDate>
		<dc:creator>nocoo</dc:creator>
				<category><![CDATA[苹果技术]]></category>

		<guid isPermaLink="false">http://lizheng.me/?p=4216</guid>
		<description><![CDATA[在微博媒体泛滥的今天，一个优雅的Google Reader阅读器还是会给我们带来惊喜。]]></description>
			<content:encoded><![CDATA[<p><a href="http://lizheng.me/wp-content/uploads/2011/06/Reeder.png"><img class="alignnone size-large wp-image-4217" title="Reeder" src="http://lizheng.me/wp-content/uploads/2011/06/Reeder-610x405.png" alt="" width="610" height="405" /></a></p>
<p>在微博媒体泛滥的今天，一个优雅的Google Reader阅读器还是会给我们带来惊喜。</p>
]]></content:encoded>
			<wfw:commentRss>http://lizheng.me/2011/06/reeder-1-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>讽刺吗？</title>
		<link>http://lizheng.me/2010/06/ironic/</link>
		<comments>http://lizheng.me/2010/06/ironic/#comments</comments>
		<pubDate>Thu, 03 Jun 2010 14:40:11 +0000</pubDate>
		<dc:creator>nocoo</dc:creator>
				<category><![CDATA[苹果技术]]></category>

		<guid isPermaLink="false">http://lizheng.me/?p=4186</guid>
		<description><![CDATA[熊猫空间挂了，看到的是什么？]]></description>
			<content:encoded><![CDATA[<p><img src="http://lizheng.me/wp-content/uploads/2010/06/IMG_0033.png" alt="" title="IMG_0033" width="320" height="480" class="alignnone size-full wp-image-4187" /></p>
<p>熊猫空间挂了，看到的是什么？</p>
]]></content:encoded>
			<wfw:commentRss>http://lizheng.me/2010/06/ironic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IOGraph</title>
		<link>http://lizheng.me/2010/06/iograph/</link>
		<comments>http://lizheng.me/2010/06/iograph/#comments</comments>
		<pubDate>Wed, 02 Jun 2010 09:37:28 +0000</pubDate>
		<dc:creator>nocoo</dc:creator>
				<category><![CDATA[心情日记]]></category>

		<guid isPermaLink="false">http://lizheng.me/?p=4182</guid>
		<description><![CDATA[http://iographica.com/ Formerly known as MousePath it was made by Moscow designer Anatoly Zenkov to brighten up the routine work. Posting it at Flickr caused informal interest and afterward Anatoly Zenkov and his colleague Andrey Shipilov decided to evolve the app. IOGraph — is an application that turns mouse movements into a modern art. The idea is that you just run it and do your usual day stuff at the computer. Go back to IOGraph after a while [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://iographica.com/">http://iographica.com/</a></p>
<p><img class="alignnone size-large wp-image-4183" title="IOGraphca" src="http://lizheng.me/wp-content/uploads/2010/06/IOGraphca-610x213.png" alt="" width="610" height="213" /></p>
<p>Formerly known as MousePath it was made by Moscow designer <a href="http://anatolyzenkov.com/">Anatoly Zenkov</a> to brighten up the routine work. Posting it <a href="http://flickr.com/photos/anatoliy_zenkov/4271592658/">at Flickr</a> caused informal interest and afterward Anatoly Zenkov and his colleague <a href="http://whitespace.ru/">Andrey Shipilov</a> decided to evolve the app.</p>
<p>IOGraph — is an application that turns mouse movements into a modern art. The idea is that you just run it and do your usual day stuff at the computer. Go back to IOGraph after a while and grab a nice picture of what you’ve done!</p>
<p>附图：<br />
我的工作日八小时，今天大概三分之一时间在另一台Mac上，所以记录的不是全部。<br />
<img src="http://lizheng.me/wp-content/uploads/2010/06/IOGraphica-8-hours-from-9-22-to-17-24-610x171.png" alt="" title="IOGraphica - 8 hours (from 9-22 to 17-24)" width="610" height="171" class="alignnone size-large wp-image-4184" /><br />
但是已经很酷了！</p>
]]></content:encoded>
			<wfw:commentRss>http://lizheng.me/2010/06/iograph/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>阿里巴巴云计算用户体验组招聘实习生</title>
		<link>http://lizheng.me/2010/05/alibaba-cloud-ued-intern/</link>
		<comments>http://lizheng.me/2010/05/alibaba-cloud-ued-intern/#comments</comments>
		<pubDate>Fri, 07 May 2010 14:58:16 +0000</pubDate>
		<dc:creator>nocoo</dc:creator>
				<category><![CDATA[阿里巴巴]]></category>

		<guid isPermaLink="false">http://lizheng.me/?p=4178</guid>
		<description><![CDATA[阿里巴巴云计算用户体验组负责新一代交互界面的研究及开发工作。我们以提出并呈现最新的设计理念为工作的核心，并密切配合开发工程师共同实现产品级别的程 序开发。阿里巴巴云计算为设计师创造了一个广阔的发展平台，我们在寻找真正具有创新设计理念，并拥有坚实基础的优秀设计师的加盟，用你的设计来影响互联网的下一个时代。 交互设计师 Interaction Designer（北京/杭州） 出色的创新思想和优秀的分析判断能力，关注互联网最先趋势与技术，对互联网产业具有浓厚的兴趣和独特的见解； 有多年软件界面设计（包括手机界面设计与在线应用软件设计优先），网页设计的工作经验，对交互设计有较深的理解和大量的实践案例； 参与产品前期的规划构思，完善产品概念, 归纳产品界面的人机交互需求； 对产品研发交互流程设计有深入了解，可独立完成整个项目过程, 如产品的信息框架，交互流程，线框图，高低保真原型制作等； 进行可用性测试，持续改进产品； 了解产品的研发流程，了解用户研究，评估测试，前端开发，管理设计规范等相关环节； 有一定视觉设计和XHTML/CSS等相关技术优先。 视觉设计师 Visual Designer（北京/杭州） 出色的创新思想和优秀的分析判断能力，关注互联网最先趋势与技术，对互联网产业具有浓厚的兴趣和独特的见解； 热爱设计，热爱并执着于界面设计，平面设计、网页设计、艺术设计。有着宽广的设计观和国际化的设计眼光； 精通2D精通2D或3D等设计软件，如：Photoshop, Illustrator, Flash, 3dMax等； 熟悉界面设计的流程方法，出色的设计语言表达能力，优秀的创新与沟通协调能力； 了解产品开发流程，有一定交互设和XHTML/CSS等相关技术者优先； 有手机界面相关经验者优先。 实习学生(设计师方向) Design Intern（北京/杭州） 关注互联网最先趋势与技术，对互联网产业具有浓厚的兴趣和独特的见解； 热爱思考，有强烈的好奇心与创新精神； 交互设计，工业设计，艺术设计，视觉传达，数码媒体，计算机等专业在校学生； 优秀的视觉表达能力，可体现在平面设计，工业设计，交互设计等众多领域； 精通2D或3D等设计软件，如：Photoshop, Illustrator, Flash, 3dmax等，有后期视频编辑或3D相关软件经验者优先； 有大型互联网企业实习经验者优先。 移动设备用户界面开发工程师 Mobile UI Developer（北京/杭州） 关注移动互联网最先趋势与技术，对移动互联网产业具有浓厚的兴趣和独特的见解； 热爱思考，有强烈的好奇心与创新精神，个性乐观开朗，逻辑性强，善于和各种背景的人合作； 精通Android开发与调试，包括Native C++，Java等，至少能够熟练使用一种到两种3D/2D图形引擎； 熟悉SQL Lite和OpenGL ES，有过Android或iPhone项目开发经验者优先； 熟悉2D或3D等设计软件，如：Photoshop, Fireworks, Flash/Flex, 3dmax等； 计算机，数学，自动化，物理，美术等专业本科以上学历者优先。 图形开发工程师 [...]]]></description>
			<content:encoded><![CDATA[<p>阿里巴巴云计算用户体验组负责新一代交互界面的研究及开发工作。我们以提出并呈现最新的设计理念为工作的核心，并密切配合开发工程师共同实现产品级别的程 序开发。阿里巴巴云计算为设计师创造了一个广阔的发展平台，我们在寻找真正具有创新设计理念，并拥有坚实基础的优秀设计师的加盟，用你的设计来影响互联网的下一个时代。</p>
<p><strong>交互设计师 Interaction Designer</strong>（北京/杭州）</p>
<ol>
<li> 出色的创新思想和优秀的分析判断能力，关注互联网最先趋势与技术，对互联网产业具有浓厚的兴趣和独特的见解；</li>
<li> 有多年软件界面设计（包括手机界面设计与在线应用软件设计优先），网页设计的工作经验，对交互设计有较深的理解和大量的实践案例；</li>
<li> 参与产品前期的规划构思，完善产品概念, 归纳产品界面的人机交互需求；</li>
<li> 对产品研发交互流程设计有深入了解，可独立完成整个项目过程, 如产品的信息框架，交互流程，线框图，高低保真原型制作等；</li>
<li> 进行可用性测试，持续改进产品；</li>
<li> 了解产品的研发流程，了解用户研究，评估测试，前端开发，管理设计规范等相关环节；</li>
<li> 有一定视觉设计和XHTML/CSS等相关技术优先。</li>
</ol>
<p><strong>视觉设计师 Visual Designer</strong>（北京/杭州）</p>
<ol>
<li> 出色的创新思想和优秀的分析判断能力，关注互联网最先趋势与技术，对互联网产业具有浓厚的兴趣和独特的见解；</li>
<li> 热爱设计，热爱并执着于界面设计，平面设计、网页设计、艺术设计。有着宽广的设计观和国际化的设计眼光；</li>
<li> 精通2D精通2D或3D等设计软件，如：Photoshop, Illustrator, Flash, 3dMax等；</li>
<li> 熟悉界面设计的流程方法，出色的设计语言表达能力，优秀的创新与沟通协调能力；</li>
<li> 了解产品开发流程，有一定交互设和XHTML/CSS等相关技术者优先；</li>
<li> 有手机界面相关经验者优先。</li>
</ol>
<p><strong>实习学生(设计师方向) Design Intern</strong>（北京/杭州）</p>
<ol>
<li> 关注互联网最先趋势与技术，对互联网产业具有浓厚的兴趣和独特的见解；</li>
<li> 热爱思考，有强烈的好奇心与创新精神；</li>
<li> 交互设计，工业设计，艺术设计，视觉传达，数码媒体，计算机等专业在校学生；</li>
<li> 优秀的视觉表达能力，可体现在平面设计，工业设计，交互设计等众多领域；</li>
<li> 精通2D或3D等设计软件，如：Photoshop, Illustrator, Flash,  3dmax等，有后期视频编辑或3D相关软件经验者优先；</li>
<li> 有大型互联网企业实习经验者优先。</li>
</ol>
<p><strong>移动设备用户界面开发工程师 Mobile UI Developer</strong>（北京/杭州）</p>
<ol>
<li> 关注移动互联网最先趋势与技术，对移动互联网产业具有浓厚的兴趣和独特的见解；</li>
<li> 热爱思考，有强烈的好奇心与创新精神，个性乐观开朗，逻辑性强，善于和各种背景的人合作；</li>
<li> 精通Android开发与调试，包括Native C++，Java等，至少能够熟练使用一种到两种3D/2D图形引擎；</li>
<li> 熟悉SQL Lite和OpenGL ES，有过Android或iPhone项目开发经验者优先；</li>
<li> 熟悉2D或3D等设计软件，如：Photoshop, Fireworks, Flash/Flex, 3dmax等；</li>
<li> 计算机，数学，自动化，物理，美术等专业本科以上学历者优先。</li>
</ol>
<p><strong>图形开发工程师 Graphic Developer</strong>（北京/杭州）</p>
<ol>
<li> 关注计算机图形学最先趋势与技术，对计算机图形学产业具有浓厚的兴趣和独特的见解；</li>
<li> 热爱思考，有强烈的好奇心与创新精神，个性乐观开朗，逻辑性强，善于和各种背景的人合作；</li>
<li> 精通OpenGL开发与调试、GPU运算处理，并能够熟练使用OpenGL进行建模与动画特效编程开发；</li>
<li> 熟悉2D或3D等设计软件，如：Photoshop, Flash/Flex, 3dmax, Maya等；</li>
<li> 有过Android OpenGL ES移动项目开发者优先；</li>
<li> 计算机，数学，自动化，物理，美术等专业本科以上学历者优先。</li>
</ol>
<p><strong>前端工程师实习生 Front End Develop Intern</strong>（北京/杭州）</p>
<ol>
<li> 关注计算机图形学最先趋势与技术，对计算机图形学产业具有浓厚的兴趣和独特的见解；</li>
<li> 热爱思考，有强烈的好奇心与创新精神，个性乐观开朗，逻辑性强，善于和各种背景的人合作；</li>
<li> 深刻理解Web标准，对HTML语义化、网站的可用性、可访问性、网站性能优化等相关知识有实际的了解和实践经验；</li>
<li> 精通各种Web前端技术开发及调试，包括XHTML/XML/CSS/JavaScript/ActionScript等（JS和AS之一即可）；</li>
<li> 至少熟悉一门非脚本语言（如Java/PHP/C++），至少熟悉一门数据库及中间件数据序列化技术（如：MySQL, SQL Server,  JSON, Web Service, XML等）；</li>
<li> 熟悉2D或3D等设计软件，如：Photoshop, Fireworks, Flash, 3dmax等；</li>
<li> 计算机，数学，自动化，物理，美术等专业在校学生。</li>
</ol>
<p>注：设计师方向应聘材料要求：</p>
<ol>
<li>个人简历。</li>
<li> 个人作品：必须有软件界面设计作品，有平面设计、2D/3D设计作品或Design Spec类的文档更好。</li>
</ol>
<p>简历发送地址：john.liz (#) alibaba-inc.com，请自行将 (#)替换为@</p>
]]></content:encoded>
			<wfw:commentRss>http://lizheng.me/2010/05/alibaba-cloud-ued-intern/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>开始新生活</title>
		<link>http://lizheng.me/2010/04/new-life/</link>
		<comments>http://lizheng.me/2010/04/new-life/#comments</comments>
		<pubDate>Tue, 27 Apr 2010 00:19:31 +0000</pubDate>
		<dc:creator>nocoo</dc:creator>
				<category><![CDATA[心情日记]]></category>
		<category><![CDATA[阿里巴巴]]></category>

		<guid isPermaLink="false">http://lizheng.me/?p=4175</guid>
		<description><![CDATA[这一周，在一个淡忘的城市，一个耳生的新公司，身处一种奇怪的颜色当中，以及一群熟悉的面孔当中，开始我的新生活。 在杭州可能会留2-3周时间吧，然后就去北京了。 住在离公司4站地的地方，每天走来走去上下班的时候总能路过行知小学，看到站在门口迎接上学的值日生，听到他们喊出的同学好，老师好的时候，简直就是一种心灵的净化啊。旁边，身高和我差不多的是年轻的老师，一脸的稚嫩让我错觉她只是个高年级的学生，于是才发现，小学竟然已经过去那么久，被他们叫做叔叔已经成了一个不容争辩的事实。 C&#8217;est la vie.]]></description>
			<content:encoded><![CDATA[<p>这一周，在一个淡忘的城市，一个耳生的新公司，身处一种奇怪的颜色当中，以及一群熟悉的面孔当中，开始我的新生活。<br />
在杭州可能会留2-3周时间吧，然后就去北京了。<br />
住在离公司4站地的地方，每天走来走去上下班的时候总能路过行知小学，看到站在门口迎接上学的值日生，听到他们喊出的同学好，老师好的时候，简直就是一种心灵的净化啊。旁边，身高和我差不多的是年轻的老师，一脸的稚嫩让我错觉她只是个高年级的学生，于是才发现，小学竟然已经过去那么久，被他们叫做叔叔已经成了一个不容争辩的事实。<br />
C&#8217;est la vie.</p>
]]></content:encoded>
			<wfw:commentRss>http://lizheng.me/2010/04/new-life/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Boot Camp 3.1升级，支持Windows 7</title>
		<link>http://lizheng.me/2010/01/boot-camp-3-1-windows-7/</link>
		<comments>http://lizheng.me/2010/01/boot-camp-3-1-windows-7/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 03:00:38 +0000</pubDate>
		<dc:creator>nocoo</dc:creator>
				<category><![CDATA[苹果技术]]></category>
		<category><![CDATA[Apple]]></category>

		<guid isPermaLink="false">http://lizheng.me/?p=4144</guid>
		<description><![CDATA[今天早晨看到的新闻，说苹果终于发布了Boot Camp 3.1驱动升级，全面支持了Windows 7。作为MBP用户，自然很是关注这条消息，之前Apple放出的话说是去年（2009年）年底之前放出更新，后来跳票到2010年初，果然，今天放出最新版Boot Camp 3.1，赶紧下载。 经过一番研究（2小时）和反复尝试（N次重启），发现必须先安装好Boot Camp 3.0（来自Mac OS X Snow Leopard安装光盘）才能成功安装好这次的升级包，否则只会发现这个升级包在安装NVidia显卡驱动后再无音讯。偷懒我之前在Windows 7上安装的还是之前的2.1版本Boot Camp，因为没有Mac OS X Snow Leopard安装光盘，所以也得不到3.0驱动呢（同一张光盘在Mac下合Windows下是不一样的内容）。 找到这么一个方法： 使用Toast的Mount Disk Image功能把雪豹的DMG虚拟成光驱，发现会出现两个光盘，“Mac OS X Install DVD&#8221;和&#8221;WindowsSupport&#8221;，直接把WindowsSupport虚拟光盘里面的东西拷贝出来，刻录成DVD，就可以在Bootcamp安装的Windows中使用了。等下装一个Windows 7试一下看看光盘可以用否。 试过确实可以，把WindowsSupport下的内容拷贝到NTFS的外置硬盘上，重启回到Windows，安装顺利成功。再升级3.1，很顺利，风扇狂转一会儿，重启后安静多了终于。 那么3.0及3.1的好处让我感动，因为&#8230;. Windows下直接读取Mac下的磁盘格式HFS（包括移动硬盘），够强大，可惜不能写，稍微遗憾，不过已经够用了。]]></description>
			<content:encoded><![CDATA[<p>今天早晨看到的<a href="http://www.cnbeta.com/articles/102497.htm">新闻</a>，说苹果终于发布了Boot Camp 3.1驱动升级，全面支持了Windows 7。作为MBP用户，自然很是关注这条消息，之前Apple放出的话说是去年（2009年）年底之前放出更新，后来跳票到2010年初，果然，今天放出最新版Boot Camp 3.1，赶紧<a href="http://www.apple.com/support/bootcamp/">下载</a>。<br />
经过一番研究（2小时）和反复尝试（N次重启），发现必须先安装好Boot Camp 3.0（来自Mac OS X Snow Leopard安装光盘）才能成功安装好这次的升级包，否则只会发现这个升级包在安装NVidia显卡驱动后再无音讯。偷懒我之前在Windows 7上安装的还是之前的2.1版本Boot Camp，因为没有Mac OS X Snow Leopard安装光盘，所以也得不到3.0驱动呢（同一张光盘在Mac下合Windows下是不一样的内容）。<br />
找到这么一个方法：</p>
<blockquote><p>使用Toast的Mount Disk Image功能把雪豹的DMG虚拟成光驱，发现会出现两个光盘，“Mac OS X Install DVD&#8221;和&#8221;WindowsSupport&#8221;，直接把WindowsSupport虚拟光盘里面的东西拷贝出来，刻录成DVD，就可以在Bootcamp安装的Windows中使用了。等下装一个Windows 7试一下看看光盘可以用否。</p></blockquote>
<p>试过确实可以，把WindowsSupport下的内容拷贝到NTFS的外置硬盘上，重启回到Windows，安装顺利成功。再升级3.1，很顺利，风扇狂转一会儿，重启后安静多了终于。<br />
那么3.0及3.1的好处让我感动，因为&#8230;.</p>
<p><img src="http://lizheng.me/wp-content/uploads/2010/01/bootcamp3.1.png" alt="" title="bootcamp3.1" width="602" height="628" class="alignnone size-full wp-image-4145" /></p>
<p>Windows下直接读取Mac下的磁盘格式HFS（包括移动硬盘），够强大，可惜不能写，稍微遗憾，不过已经够用了。</p>
]]></content:encoded>
			<wfw:commentRss>http://lizheng.me/2010/01/boot-camp-3-1-windows-7/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Just in Case</title>
		<link>http://lizheng.me/2010/01/just-in-case/</link>
		<comments>http://lizheng.me/2010/01/just-in-case/#comments</comments>
		<pubDate>Thu, 14 Jan 2010 04:09:07 +0000</pubDate>
		<dc:creator>nocoo</dc:creator>
				<category><![CDATA[Web标准化研究]]></category>
		<category><![CDATA[心情日记]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[腾讯]]></category>

		<guid isPermaLink="false">http://lizheng.me/?p=4140</guid>
		<description><![CDATA[难到我们真的要拿这种破玩意当作备份吗？]]></description>
			<content:encoded><![CDATA[<p><img src="http://lizheng.me/wp-content/uploads/2010/01/qqmail.png" alt="" title="qqmail" width="610" height="400" class="alignnone size-full wp-image-4141" /></p>
<p>难到我们真的要拿这种破玩意当作备份吗？</p>
]]></content:encoded>
			<wfw:commentRss>http://lizheng.me/2010/01/just-in-case/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Macbook Pro花屏故障</title>
		<link>http://lizheng.me/2009/12/macbook-pro-image-interrupt/</link>
		<comments>http://lizheng.me/2009/12/macbook-pro-image-interrupt/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 02:03:36 +0000</pubDate>
		<dc:creator>nocoo</dc:creator>
				<category><![CDATA[心情日记]]></category>
		<category><![CDATA[苹果技术]]></category>

		<guid isPermaLink="false">http://lizheng.me/?p=4135</guid>
		<description><![CDATA[看来苹果的东西也不都是那么完美的。昨晚睡前合上盖子，自动休眠，今天早晨起来打开盖子发现屏幕花屏，症状是出现很多竖向的条纹，在白色屏幕区域都是红白相间的那种细条纹。莫非是太冷了&#8230; 各种恢复方式都无效，Option+Command+P+R我用了多次依旧无效，偶尔通过BootCamp进入Windows测试下，打开Google，输入“macbook 竖条纹”，没什么东西，输入“macbook 显卡 竖条纹”，哗的一下屏幕正常了&#8230; 我寒。 原因猜测，估计是太冷的缘故，Windows 7里面显卡会变热，可能到了一定程度就好了？]]></description>
			<content:encoded><![CDATA[<p>看来苹果的东西也不都是那么完美的。昨晚睡前合上盖子，自动休眠，今天早晨起来打开盖子发现屏幕花屏，症状是出现很多竖向的条纹，在白色屏幕区域都是红白相间的那种细条纹。莫非是太冷了&#8230;<br />
各种恢复方式都无效，Option+Command+P+R我用了多次依旧无效，偶尔通过BootCamp进入Windows测试下，打开Google，输入“macbook 竖条纹”，没什么东西，输入“macbook 显卡 竖条纹”，哗的一下屏幕正常了&#8230;<br />
我寒。<br />
原因猜测，估计是太冷的缘故，Windows 7里面显卡会变热，可能到了一定程度就好了？</p>
]]></content:encoded>
			<wfw:commentRss>http://lizheng.me/2009/12/macbook-pro-image-interrupt/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>最近一些事情</title>
		<link>http://lizheng.me/2009/12/whats-new-2/</link>
		<comments>http://lizheng.me/2009/12/whats-new-2/#comments</comments>
		<pubDate>Tue, 29 Dec 2009 03:10:34 +0000</pubDate>
		<dc:creator>nocoo</dc:creator>
				<category><![CDATA[心情日记]]></category>
		<category><![CDATA[Microsoft Research Asia]]></category>

		<guid isPermaLink="false">http://lizheng.me/?p=4127</guid>
		<description><![CDATA[博客很久很久没像样地更新过了，主要原因是前面几个月在微软实习，前前后后延期好几次，五个月吧，感谢Zhitao和MSRA HR&#8230;挣了一小笔钱，买不起一平房子，所以全花了&#8230;入手个iPhone 3GS，完全改变了若干生活方式，举例来说iPhone让我上厕所的过程发生革命性改变，以及其他。 最近找工作这个重头戏好像已经结束了，目前的去向是创新工场呢。最近收到若干猎头以及各种公司要求面试的电话，听说我的去向已经确定，并且听到这四个字的时候相信都睁大了眼睛，套用某人的话，开复还是有点忽悠吧，怎么还会有人真的去呢？我的回答从来就是这样子的，机会难得，如果它成功了，当然更好，如果不幸失败了，明年就没有这样的机会了，而我这个年纪，还能承受住那么一两次失败。虽然我也很想去某MS每月拿个一万三千八过舒适安逸的日子，可是在还有梦想的时候，不去创业就好像不去参军一样会是终生的遗憾。 微软面试让我很郁闷，也许是我们这种方向的人几年都不出一个？我所擅长的东西只有淘宝好好问了下，其他公司谈都不谈，遇到的对白无非是这样子。 面试官：你擅长什么？ 我：服务器，网站，前端，交互设计。 面试官：这些我都不熟悉呢，不如我们来做个智力题？ 我：&#8230; 都说考察这些是希望应聘者有扎实的基础，以及NB的智商，不过这些东西都有的人缺乏一颗奋进实干的心又有何用？拿着工资天天维护Linux Kernel去？ 这次回到学校，觉得实验室的政策开始改变是个好事情，我们实验室老板现在招学生的政策不像以前只招天才，而是要求学生为人老实，耐心好商量以及踏实肯干。确实，比我们聪明的学生不会到这里来，那就不要要求学生有什么NB的思想，我告诉你思想，你老老实实在规定时间之后最晚一个月内给我完成就行，别再拖个一年半载的最后项目申请书都要改。 多少让我也发发牢骚。 Anyway，Microsoft今年招聘很奇怪，开始没有HC后面听说STC有了几十个接近100新的HC，自己的实习生严格筛选却跑外面大肆开宣讲会组织笔试面试，虽然我们都倾向于认为作秀的成分大于实际需求，但是曾经的努力变成这样确实觉得心里不好受。听说孙进同学还在继续面试进程，我估计应该问题不大，bless，终究不要让我们全军覆没。不止三个人跑过来对我说，“哥们啊，我们这么玩命工作，MS这样对我们，我觉得很不值啊”，最终这些人去了另外几家简称MS的公司，以及百度。顺便说下百度今年赚大了，招到的都是Google，Microsoft级别的人才。无奈，人才年年都有，Google和Microsoft并不是年年招聘&#8230; 说个笑话结束吧，铭晨讲的，说微软想搞定ms.com这个域名，派人去和所有者联系，嘱咐，不差钱，务必搞定。结果发现所有者是另一个简称MS的公司，但是比这个MS更不差钱&#8230;]]></description>
			<content:encoded><![CDATA[<p>博客很久很久没像样地更新过了，主要原因是前面几个月在微软实习，前前后后延期好几次，五个月吧，感谢Zhitao和MSRA HR&#8230;挣了一小笔钱，买不起一平房子，所以全花了&#8230;入手个iPhone 3GS，完全改变了若干生活方式，举例来说iPhone让我上厕所的过程发生革命性改变，以及其他。<br />
最近找工作这个重头戏好像已经结束了，目前的去向是创新工场呢。最近收到若干猎头以及各种公司要求面试的电话，听说我的去向已经确定，并且听到这四个字的时候相信都睁大了眼睛，套用某人的话，开复还是有点忽悠吧，怎么还会有人真的去呢？我的回答从来就是这样子的，机会难得，如果它成功了，当然更好，如果不幸失败了，明年就没有这样的机会了，而我这个年纪，还能承受住那么一两次失败。虽然我也很想去某MS每月拿个一万三千八过舒适安逸的日子，可是在还有梦想的时候，不去创业就好像不去参军一样会是终生的遗憾。<br />
微软面试让我很郁闷，也许是我们这种方向的人几年都不出一个？我所擅长的东西只有淘宝好好问了下，其他公司谈都不谈，遇到的对白无非是这样子。</p>
<blockquote><p>面试官：你擅长什么？<br />
我：服务器，网站，前端，交互设计。<br />
面试官：这些我都不熟悉呢，不如我们来做个智力题？<br />
我：&#8230;</p></blockquote>
<p>都说考察这些是希望应聘者有扎实的基础，以及NB的智商，不过这些东西都有的人缺乏一颗奋进实干的心又有何用？拿着工资天天维护Linux Kernel去？<br />
这次回到学校，觉得实验室的政策开始改变是个好事情，我们实验室老板现在招学生的政策不像以前只招天才，而是要求学生为人老实，耐心好商量以及踏实肯干。确实，比我们聪明的学生不会到这里来，那就不要要求学生有什么NB的思想，我告诉你思想，你老老实实在规定时间之后最晚一个月内给我完成就行，别再拖个一年半载的最后项目申请书都要改。<br />
多少让我也发发牢骚。<br />
Anyway，Microsoft今年招聘很奇怪，开始没有HC后面听说STC有了几十个接近100新的HC，自己的实习生严格筛选却跑外面大肆开宣讲会组织笔试面试，虽然我们都倾向于认为作秀的成分大于实际需求，但是曾经的努力变成这样确实觉得心里不好受。听说孙进同学还在继续面试进程，我估计应该问题不大，bless，终究不要让我们全军覆没。不止三个人跑过来对我说，“哥们啊，我们这么玩命工作，MS这样对我们，我觉得很不值啊”，最终这些人去了另外几家简称MS的公司，以及百度。顺便说下百度今年赚大了，招到的都是Google，Microsoft级别的人才。无奈，人才年年都有，Google和Microsoft并不是年年招聘&#8230;</p>
<p>说个笑话结束吧，铭晨讲的，说微软想搞定ms.com这个域名，派人去和所有者联系，嘱咐，不差钱，务必搞定。结果发现所有者是另一个简称MS的公司，但是比这个MS更不差钱&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://lizheng.me/2009/12/whats-new-2/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Farewell From Zheng Li (20091210 at Microsoft Research Asia)</title>
		<link>http://lizheng.me/2009/12/farewell-2009-12-10/</link>
		<comments>http://lizheng.me/2009/12/farewell-2009-12-10/#comments</comments>
		<pubDate>Thu, 10 Dec 2009 02:30:24 +0000</pubDate>
		<dc:creator>nocoo</dc:creator>
				<category><![CDATA[心情日记]]></category>
		<category><![CDATA[Microsoft Research Asia]]></category>

		<guid isPermaLink="false">http://lizheng.me/?p=4109</guid>
		<description><![CDATA[It&#8217;s hard to say goodbye to a company like Microsoft &#8212; Guang Yang. Dear all, It’s time to say goodbye. Today is the last day of my internship, and I just want to thank everybody for this amazing 5 months here. This is my second period of internship here in MSRA, the last time is [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>It&#8217;s hard to say goodbye to a company like Microsoft &#8212; Guang Yang.</p></blockquote>
<p>Dear all,</p>
<p>It’s time to say goodbye.</p>
<p>Today is the last day of my internship, and I just want to thank everybody for this amazing 5 months here. This is my second period of internship here in MSRA, the last time is back to 2007. I was more than happy to see familiar faces when I came back, but now it’s hard to say goodbye.</p>
<p>I want to take this special opportunity to thank my mentor, Zhitao Hou, it was he who introduced me a great place called MSRA two years ago, it was he who helped me to spend the last internship before graduate. Zhitao always trust me in work and allow me to make mistakes. He is so patient and helping me on every aspect of my internship, always be there when I need help. Because of the job hunting, sometimes I have to go out for interviews, Zhitao provides lots of help. Once he even offered to do my job instead to meet the deadline… A mentor offers to do his intern’s job, I never heard this elsewhere in MSRA.</p>
<p>I also to thank my another mentor Haidong Zhang. Haidong treats his students as friend, always think though before assign a job to interns, thus he knows the hard parts of this job, and always provides encourage, which had helped me a lot. Since I was looking for my first full time job during the last two months, he also gives lots of advices on how to decide my career path. It was Haidong who sent me the URL address of Innovation Works for the first time.</p>
<p>Thanks everyone for giving me this amazing experience that I’ll never forget. Thanks for the help, support and guidance. Thanks for letting me know work could be so inspiring and exciting. Thanks for the ever-lasting happy mood and easy-going environment filled with laughter…</p>
<p>There’s always so many people I want to thank, but there’s always a time to end. For no reason, I feel that my destiny with Microsoft is not over yet. I think I will come back in the future. Maybe not in the near future, but there will be.</p>
<p>Tomorrow I’ll go back home in Jinan, and back to Tongji University to finish my graduation thesis a few days later. Next March, I’ll come back to Beijing and join Innovation Works. Again, I want to thank everybody for an amazing experience, and keep in touch!</p>
<p><span style="text-decoration: underline;">Contact information:</span></p>
<p>&#8230;&#8230;</p>
<p>Sincerely,</p>
<p>Zheng Li</p>
]]></content:encoded>
			<wfw:commentRss>http://lizheng.me/2009/12/farewell-2009-12-10/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>再别微软</title>
		<link>http://lizheng.me/2009/12/farewell-microsoft/</link>
		<comments>http://lizheng.me/2009/12/farewell-microsoft/#comments</comments>
		<pubDate>Wed, 09 Dec 2009 12:30:29 +0000</pubDate>
		<dc:creator>nocoo</dc:creator>
				<category><![CDATA[心情日记]]></category>
		<category><![CDATA[Microsoft Research Asia]]></category>

		<guid isPermaLink="false">http://lizheng.me/?p=4113</guid>
		<description><![CDATA[五个月的时间说长也长，说短也短。明天就要离开了，吃完饭到5楼大水房再逛一圈，发现的是一群熟悉的面孔照例围在了台球桌周围。对着鑫莹我说，明天我就要走了，你又把我熬走一次。他苦笑，我则一脸无奈。 昨天在杨光的提示之下才想起来应该写上一篇farewell了。告别微软真的不是一件容易的事。这件事情我到处也说了好几遍了，我是一个从一而终的人，让我到了一个地方，这里能够满足我的基本要求我是不会去别的地方的。无奈有些地方也不是想留就能留下的。 面试生涯结束好久了，要不这里顺便也总结一下。国内企业，腾讯直接就没给我笔试的机会。听说很多兄弟去霸笔最后拿到offer，然后拒掉，我当时还有点尊严，不让我去我是不会去的。网易笔试没过，也许我HTML5的题目没答好。盛大给了offer，给的很早，运维的职位，其实我挺喜欢的。阿里巴巴集团淘宝最先给了offer。其他部门听说淘宝给了offer主动就不再继续了。百度，学姐帮忙在9月1日内推的，后续不想提了&#8230;不过多少去百度新大厦看了看，期间还正好在那么大的楼里面碰到找会议室的学姐，很是Happy啊。另，很多好兄弟姐妹去了百度，坏话我就不怎么说了，再另，百度面试我的面试官非常好，我想给挖走&#8230;哈哈 外面的企业，Yahoo是微软同事推荐的，只是面试安排的太早，那时候还什么都没准备，实在不好意思了。Adobe去笔试了一下，C++我是不会的，Java会一点。摩根去笔试了，答得其实还不错。还有什么，想不起来了。 印象最深的还是创新工场。我就没见过这么nice的面试官。王晔面试我的时候，有道题我不会做，他亲自在纸上写出代码来，一行一行指着给我讲，让我感动得唏嘘不已。 回到微软的话题&#8230;这几天实习生走得比较勤，员工们最后都会请大家吃顿饭，今天中午已经吃过我的告别餐了，智涛阻止了我把希格玛B1的饭卡里面全部钱刷掉的要求，说，等你回到北京，还可以来吃饭嘛。在本科同学开的桌游店买了一副全套扩展加武将塑封三国杀留给了员工们，对他们来说也算是Team Building吧。 嗯，还有什么，我想，明年10月以后，随着微软搬进新大楼，我在微软留下的各种印记，终究会慢慢消失了。]]></description>
			<content:encoded><![CDATA[<p>五个月的时间说长也长，说短也短。明天就要离开了，吃完饭到5楼大水房再逛一圈，发现的是一群熟悉的面孔照例围在了台球桌周围。对着鑫莹我说，明天我就要走了，你又把我熬走一次。他苦笑，我则一脸无奈。<br />
昨天在杨光的提示之下才想起来应该写上一篇farewell了。告别微软真的不是一件容易的事。这件事情我到处也说了好几遍了，我是一个从一而终的人，让我到了一个地方，这里能够满足我的基本要求我是不会去别的地方的。无奈有些地方也不是想留就能留下的。<br />
面试生涯结束好久了，要不这里顺便也总结一下。国内企业，腾讯直接就没给我笔试的机会。听说很多兄弟去霸笔最后拿到offer，然后拒掉，我当时还有点尊严，不让我去我是不会去的。网易笔试没过，也许我HTML5的题目没答好。盛大给了offer，给的很早，运维的职位，其实我挺喜欢的。阿里巴巴集团淘宝最先给了offer。其他部门听说淘宝给了offer主动就不再继续了。百度，学姐帮忙在9月1日内推的，后续不想提了&#8230;不过多少去百度新大厦看了看，期间还正好在那么大的楼里面碰到找会议室的学姐，很是Happy啊。另，很多好兄弟姐妹去了百度，坏话我就不怎么说了，再另，百度面试我的面试官非常好，我想给挖走&#8230;哈哈<br />
外面的企业，Yahoo是微软同事推荐的，只是面试安排的太早，那时候还什么都没准备，实在不好意思了。Adobe去笔试了一下，C++我是不会的，Java会一点。摩根去笔试了，答得其实还不错。还有什么，想不起来了。<br />
印象最深的还是创新工场。我就没见过这么nice的面试官。王晔面试我的时候，有道题我不会做，他亲自在纸上写出代码来，一行一行指着给我讲，让我感动得唏嘘不已。<br />
回到微软的话题&#8230;这几天实习生走得比较勤，员工们最后都会请大家吃顿饭，今天中午已经吃过我的告别餐了，智涛阻止了我把希格玛B1的饭卡里面全部钱刷掉的要求，说，等你回到北京，还可以来吃饭嘛。在本科同学开的桌游店买了一副全套扩展加武将塑封三国杀留给了员工们，对他们来说也算是Team Building吧。<br />
嗯，还有什么，我想，明年10月以后，随着微软搬进新大楼，我在微软留下的各种印记，终究会慢慢消失了。</p>
]]></content:encoded>
			<wfw:commentRss>http://lizheng.me/2009/12/farewell-microsoft/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Google实时搜索</title>
		<link>http://lizheng.me/2009/12/google-realtime-search/</link>
		<comments>http://lizheng.me/2009/12/google-realtime-search/#comments</comments>
		<pubDate>Tue, 08 Dec 2009 12:45:49 +0000</pubDate>
		<dc:creator>nocoo</dc:creator>
				<category><![CDATA[Web标准化研究]]></category>
		<category><![CDATA[开发心得]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://lizheng.me/?p=4115</guid>
		<description><![CDATA[早就听说Google要整合实时信息比如Twitter到搜索结果中，这次真的见识到了，而且信息是不断更新到搜索结果页面中的&#8230;]]></description>
			<content:encoded><![CDATA[<p><a href="http://lizheng.me/wp-content/uploads/2009/12/google-realtime.png"><img src="http://lizheng.me/wp-content/uploads/2009/12/google-realtime-610x419.png" alt="google-realtime" title="google-realtime" width="610" height="419" class="alignnone size-large wp-image-4116" /></a></p>
<p>早就听说Google要整合实时信息比如Twitter到搜索结果中，这次真的见识到了，而且信息是不断更新到搜索结果页面中的&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://lizheng.me/2009/12/google-realtime-search/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>如何关联Silverlight和ASP.NET项目</title>
		<link>http://lizheng.me/2009/11/silverlight-asp-net-build-link/</link>
		<comments>http://lizheng.me/2009/11/silverlight-asp-net-build-link/#comments</comments>
		<pubDate>Sat, 07 Nov 2009 03:29:37 +0000</pubDate>
		<dc:creator>nocoo</dc:creator>
				<category><![CDATA[开发心得]]></category>
		<category><![CDATA[微软技术]]></category>
		<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://lizheng.me/?p=4097</guid>
		<description><![CDATA[用过Silverlight的兄弟都清楚，当在Visual Studio 2008中建立一个Silverlight Application Project时，首先会弹出一个提示框如上图，询问是否自动生成一个ASP.NET网站来托管这个Silverlight应用。默认会建立。一般情况下我们都会选择不建立，这样会在解决方案里少生成一个项目。 自动生成一个ASP.NET网站来托管这个Silverlight应用的好处是，在每次Debug整个解决方案的时候，Visual Studio 2008会自动首先编译Silverlight项目，然后把编译结果，一个xap文件，自动拷贝到ASP.NET网站项目的ClientBin下，然后启动ASP.NET网站项目的默认页面，显示了最新版本的Silverlight应用。如下图所示。 问题是，如果你一开始没有让Visual Studio 2008建立那个网站项目，如果哪天你需要一个网站了，可能是各种原因，比如需要一个本地的Web Service等等，自己新建一个ASP.NET网站，就不能实现上面的自动拷贝xap文件了。 解决方法比较绕。这是一个MSBuild问题，你需要Unload各个项目，然后用写字板打开ASP.NET的项目文件（csproj文件），然后在PropertyGroup中加一个SilverlightApplicationList项，如图： 注意相对路径，项目名称以及项目的GUID。这些东西都可以在解决方案文件（sln文件）里找到。就不详细解释了。 Reload项目之后Build，就会发现你的项目可以自动把xap文件拷贝到ClientBin下了。 后记：作为一个使用Silverlight开发了无数年的工程师，这似乎是我第一次写关于Silverlight的博文。现在想想，大概是公司政策使然？我应该是个很守规矩的人。]]></description>
			<content:encoded><![CDATA[<p><img src="http://lizheng.me/wp-content/uploads/2009/11/silverlight-host.png" alt="silverlight-host" title="silverlight-host" width="447" height="265" class="alignnone size-full wp-image-4098" /></p>
<p>用过Silverlight的兄弟都清楚，当在Visual Studio 2008中建立一个Silverlight Application Project时，首先会弹出一个提示框如上图，询问是否自动生成一个ASP.NET网站来托管这个Silverlight应用。默认会建立。一般情况下我们都会选择不建立，这样会在解决方案里少生成一个项目。<br />
自动生成一个ASP.NET网站来托管这个Silverlight应用的好处是，在每次Debug整个解决方案的时候，Visual Studio 2008会自动首先编译Silverlight项目，然后把编译结果，一个xap文件，自动拷贝到ASP.NET网站项目的ClientBin下，然后启动ASP.NET网站项目的默认页面，显示了最新版本的Silverlight应用。如下图所示。</p>
<p><img src="http://lizheng.me/wp-content/uploads/2009/11/silverlight-host2.png" alt="silverlight-host2" title="silverlight-host2" width="293" height="372" class="alignnone size-full wp-image-4099" /></p>
<p>问题是，如果你一开始没有让Visual Studio 2008建立那个网站项目，如果哪天你需要一个网站了，可能是各种原因，比如需要一个本地的Web Service等等，自己新建一个ASP.NET网站，就不能实现上面的自动拷贝xap文件了。</p>
<p>解决方法比较绕。这是一个MSBuild问题，你需要Unload各个项目，然后用写字板打开ASP.NET的项目文件（csproj文件），然后在PropertyGroup中加一个SilverlightApplicationList项，如图：</p>
<p><a href="http://lizheng.me/wp-content/uploads/2009/11/silverlight-host3.png"><img src="http://lizheng.me/wp-content/uploads/2009/11/silverlight-host3-610x282.png" alt="silverlight-host3" title="silverlight-host3" width="610" height="282" class="alignnone size-large wp-image-4100" /></a></p>
<p>注意相对路径，项目名称以及项目的GUID。这些东西都可以在解决方案文件（sln文件）里找到。就不详细解释了。</p>
<p><img src="http://lizheng.me/wp-content/uploads/2009/11/silverlight-host4.png" alt="silverlight-host4" title="silverlight-host4" width="288" height="335" class="alignnone size-full wp-image-4101" /></p>
<p>Reload项目之后Build，就会发现你的项目可以自动把xap文件拷贝到ClientBin下了。</p>
<p><strong>后记：</strong>作为一个使用Silverlight开发了无数年的工程师，这似乎是我第一次写关于Silverlight的博文。现在想想，大概是公司政策使然？我应该是个很守规矩的人。</p>
]]></content:encoded>
			<wfw:commentRss>http://lizheng.me/2009/11/silverlight-asp-net-build-link/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

