<?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>Oasis Feng</title>
	<atom:link href="http://blog.oasisfeng.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.oasisfeng.com</link>
	<description>Challenge your imagination!</description>
	<lastBuildDate>Tue, 17 Apr 2012 16:02:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/>		<item>
		<title>Dropbox使用技巧拾零</title>
		<link>http://blog.oasisfeng.com/2012/04/18/dropbox-tips/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=dropbox-tips</link>
		<comments>http://blog.oasisfeng.com/2012/04/18/dropbox-tips/#comments</comments>
		<pubDate>Tue, 17 Apr 2012 16:02:53 +0000</pubDate>
		<dc:creator>oasisfeng</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Dropbox]]></category>
		<category><![CDATA[Git]]></category>

		<guid isPermaLink="false">http://blog.oasisfeng.com/?p=1062</guid>
		<description><![CDATA[Dropbox可以算是文件云同步领域的鼻祖了，即使不是最早出现的，也是第一个推动云同步向普通互联网用户普及的。Dropbox的成功并非偶然，其强大而且独一无二的功能和技术是支撑其用户忠诚度的基石。作为一个Dropbox的早期用户，使用至今，有些小经验小技巧，在这里与大家分享一下，希望能帮助大家把Dropbox的作用发挥到最大。 值得信赖的差量同步 『差量同步』是Dropbox相比其它同类云同步工具的核心技术优势。其效果可以简单理解为，文件的变更只需同步变化的部分，为用户节省流量和时间。差量同步所带来的好处其实还不仅仅是文件的变化同步更快，你还可以随心所欲的将文件或整个文件夹从Dropbox下的一个位置移至另一个位置、更名，甚至拿掉一段时间之后再放回来，它们都不必重新被上传到服务器。而其它云同步工具就未必能这么省心了。 Dropbox的其它一些特性，也是建立在这个机制之上的。就拿『文件历史』功能来说，别担心Dropbox会消耗数倍的空间来保存文件的历史版本，其实它只是保存了多个版本的差异，这样消耗的空间通常是非常少的。 得益于强大的差量同步，你甚至可以在Dropbox之上构建其它存储技术，并保持高效率的同步。比如在Dropbox中使用TrueCrypt，由于后者对加密数据的变更作用到卷文件上体现为局部的变化，所以可被Dropbox高效的同步，而完全不必担心一点变化而导致整个庞大的卷文件需要重新上传，这是其它一些云同步工具所无法比拟的。不过，在这类场景下需要非常小心『变更冲突』可能带来的不良后果（产生两份不和谐的副本），尽可能不要同时在多处对数据进行修改。 善用选择性同步（Selective Sync） 选择性同步是Dropbox早期呼声最高的期望特性，没有之一。不过这个特性足足让大家等了一年多，才最终被开发团队满足。背后故事的曲折就不赘述了，好在现在的这套实现方式应该还算是比较让人满意的。选择性同步的使用场景非常广泛，下面简单列举几个，大家也可以根据自己的需要自由发挥： 避免在非主用电脑上同步包含备用资料、音乐、视频的大文件夹。 避免在笔记本电脑上同步敏感私人数据。 避免同步.svn文件夹，最好配合支持归一svn文件夹的新版SVN客户端。 避免同步系统或应用程序频繁自动生成的文件，比如某些临时文件夹、Java开发工程的target/bin/gen文件夹。 避免同步与本地电脑环境（如绝对路径）相关的数据，比如引用了绝对路径的Java工程中的.project文件、某些应用程序的配置文件。 …… 更简单实用的分享功能 Dropbox发展到今天，共享功能几经优化，已渐趋完善。现在你不仅可以在网络上开放的分享Dropbox中的某个文件或文件夹，而且还能有选择的在几个朋友或同事之间私密的共享一个文件夹，并保持它在多人之间的实时同步。多人共享功能需要其它人也有Dropbox账号，但不必一定使用客户端。现在我就经常利用多人共享功能和朋友共享一些技术书籍电子版、合作收集一些素材、交换最近出行的照片，甚至替代SCM工具直接作为简单开发工程的多人同步方式。因为简单，所以方便！ Git over Dropbox 这里特地把Git拿出来单独讲，是因为我在这个使用场景下摸索了一段时间才找到最佳的使用方式，与大家交流一下。通过Git分布式的管理代码是现在主流的SCM解决方案，但在多人之间协作时，往往还是绕不开一个中心服务器。Git Hub或者Bit Bucket是不错的选择，但繁琐的配置和网络的等待让这个方案变得有点难受。其实Git over Dropbox就是一个简单易行的入门级解决方案，不仅适合小团队，还可以用作个人的代码管理。 如果是个人使用，我倾向于直接将整个工程，连同.git子文件夹一并放在Dropbox上。表面上看起来是有些冗余，不过好处是，不仅git中的数据在云端自动备份，尚未commit的代码也保证了同步，方便有时即使有尚未写完的代码，也不必为了保持同步而commit进去污染仓库，回到家里还可以继续调试完善。 倘若需要多人协作，则建议将工程与git分离，只在Dropbox上创建bare repo (git init &#8211;bare)，大家将各自Dropbox中同步的bare repo作为remote进行push/pull或clone。不过，这种方案其实是以让渡一致性换取异步同步的便捷性，所以不适合大量开发人员的频繁git操作，那样容易引入让人头疼的同步冲突。 正确使用『内网优先同步』 这是Dropbox从很早版本就支持的一个特性，但却鲜有人知晓和使用。这个按照简单原则所设计的产品功能，在现实情况下，往往并不如其所设想的那么奏效。『内网优先同步』要求同步的多点在同一个子网（广播域）下，所以如果电脑之间的连接跨越了路由器，则在物理上阻断了这个特性的正常工作。 另外，防火墙也必须允许Dropbox的端口侦听。需要注意的一点是，当Dropbox检测到防火墙阻断其端口侦听时，会自动关闭这个功能，所以在正确设置了防火墙之后，还应检查Dropbox的配置中是否激活了『Lan sync』。 值得一提的是，『内网优先同步』除了可在同一账号的多台电脑间快速同步文件外，还支持多人的共享文件夹同步。所以小团队在局域网内使用这个功能是一个非常简单而高效的文件共享解决方案。 奖励空间的最大化 Dropbox依仗其技术优势和行业地位，在空间的给予上明显有些吝啬了。普通注册用户只有2G空间，通过邀请注册勉强能得到2.5G的初始容量，不过只是杯水车薪了。其实，Dropbox提供的一些空间奖励计划能帮你快速增加不小的空间，而且操作难度并不大，比如邀请一个好友可以得到500G空间（本来还想写如何认证学生账号获得双倍奖励，可惜最近也给扯平了）。 其实，有一个隐藏颇深的奖励任务入口，可能大部分Dropbox用户都未必发现并完成了其中的任务。完成诸如链接Twitter/Facebook账号、follow @Dropbox、发表感言等小任务，就可以得到640M的额外空间，虽然不算多，倒也不拿白不拿。 如果你还不是Dropbox的用户，觉得我写的这篇内容还算有用，让你有了一试Dropbox的冲动，那么不妨用我的推荐链接注册，咱俩各获得500M的奖励空间，何乐而不为呢？ (:]]></description>
			<content:encoded><![CDATA[<p>Dropbox可以算是文件云同步领域的鼻祖了，即使不是最早出现的，也是第一个推动云同步向普通互联网用户普及的。Dropbox的成功并非偶然，其强大而且独一无二的功能和技术是支撑其用户忠诚度的基石。作为一个Dropbox的早期用户，使用至今，有些小经验小技巧，在这里与大家分享一下，希望能帮助大家把Dropbox的作用发挥到最大。</p>
<h3>值得信赖的差量同步</h3>
<p>『差量同步』是Dropbox相比其它同类云同步工具的核心技术优势。其效果可以简单理解为，文件的变更只需同步变化的部分，为用户节省流量和时间。差量同步所带来的好处其实还不仅仅是文件的变化同步更快，你还可以随心所欲的将文件或整个文件夹从Dropbox下的一个位置移至另一个位置、更名，甚至拿掉一段时间之后再放回来，它们都不必重新被上传到服务器。而其它云同步工具就未必能这么省心了。</p>
<p>Dropbox的其它一些特性，也是建立在这个机制之上的。就拿『文件历史』功能来说，别担心Dropbox会消耗数倍的空间来保存文件的历史版本，其实它只是保存了多个版本的差异，这样消耗的空间通常是非常少的。</p>
<p>得益于强大的差量同步，你甚至可以在Dropbox之上构建其它存储技术，并保持高效率的同步。比如在Dropbox中使用TrueCrypt，由于后者对加密数据的变更作用到卷文件上体现为局部的变化，所以可被Dropbox高效的同步，而完全不必担心一点变化而导致整个庞大的卷文件需要重新上传，这是其它一些云同步工具所无法比拟的。不过，在这类场景下需要非常小心『变更冲突』可能带来的不良后果（产生两份不和谐的副本），尽可能不要同时在多处对数据进行修改。</p>
<h3>善用选择性同步（Selective Sync）</h3>
<p>选择性同步是Dropbox早期呼声最高的期望特性，没有之一。不过这个特性足足让大家等了一年多，才最终被开发团队满足。背后故事的曲折就不赘述了，好在现在的这套实现方式应该还算是比较让人满意的。选择性同步的使用场景非常广泛，下面简单列举几个，大家也可以根据自己的需要自由发挥：</p>
<ul>
<li>避免在非主用电脑上同步包含备用资料、音乐、视频的大文件夹。</li>
<li>避免在笔记本电脑上同步敏感私人数据。</li>
<li>避免同步.svn文件夹，最好配合支持归一svn文件夹的新版SVN客户端。</li>
<li>避免同步系统或应用程序频繁自动生成的文件，比如某些临时文件夹、Java开发工程的target/bin/gen文件夹。</li>
<li>避免同步与本地电脑环境（如绝对路径）相关的数据，比如引用了绝对路径的Java工程中的.project文件、某些应用程序的配置文件。</li>
<li>……</li>
</ul>
<h3>更简单实用的分享功能</h3>
<p>Dropbox发展到今天，共享功能几经优化，已渐趋完善。现在你不仅可以在网络上开放的分享Dropbox中的某个文件或文件夹，而且还能有选择的在几个朋友或同事之间私密的共享一个文件夹，并保持它在多人之间的实时同步。多人共享功能需要其它人也有Dropbox账号，但不必一定使用客户端。现在我就经常利用多人共享功能和朋友共享一些技术书籍电子版、合作收集一些素材、交换最近出行的照片，甚至替代SCM工具直接作为简单开发工程的多人同步方式。因为简单，所以方便！</p>
<h3>Git over Dropbox</h3>
<p>这里特地把Git拿出来单独讲，是因为我在这个使用场景下摸索了一段时间才找到最佳的使用方式，与大家交流一下。通过Git分布式的管理代码是现在主流的SCM解决方案，但在多人之间协作时，往往还是绕不开一个中心服务器。Git Hub或者Bit Bucket是不错的选择，但繁琐的配置和网络的等待让这个方案变得有点难受。其实Git over Dropbox就是一个简单易行的入门级解决方案，不仅适合小团队，还可以用作个人的代码管理。</p>
<p>如果是个人使用，我倾向于直接将整个工程，连同.git子文件夹一并放在Dropbox上。表面上看起来是有些冗余，不过好处是，不仅git中的数据在云端自动备份，尚未commit的代码也保证了同步，方便有时即使有尚未写完的代码，也不必为了保持同步而commit进去污染仓库，回到家里还可以继续调试完善。</p>
<p>倘若需要多人协作，则建议将工程与git分离，只在Dropbox上创建bare repo (git init &#8211;bare)，大家将各自Dropbox中同步的bare repo作为remote进行push/pull或clone。不过，这种方案其实是以让渡一致性换取异步同步的便捷性，所以不适合大量开发人员的频繁git操作，那样容易引入让人头疼的同步冲突。</p>
<h3>正确使用『内网优先同步』</h3>
<p>这是Dropbox从很早版本就支持的一个特性，但却鲜有人知晓和使用。这个按照简单原则所设计的产品功能，在现实情况下，往往并不如其所设想的那么奏效。『内网优先同步』要求同步的多点在同一个子网（广播域）下，所以如果电脑之间的连接跨越了路由器，则在物理上阻断了这个特性的正常工作。</p>
<p>另外，防火墙也必须允许Dropbox的端口侦听。需要注意的一点是，当Dropbox检测到防火墙阻断其端口侦听时，会自动关闭这个功能，所以在正确设置了防火墙之后，还应检查Dropbox的配置中是否激活了『Lan sync』。</p>
<p>值得一提的是，『内网优先同步』除了可在同一账号的多台电脑间快速同步文件外，还支持多人的共享文件夹同步。所以小团队在局域网内使用这个功能是一个非常简单而高效的文件共享解决方案。</p>
<h3>奖励空间的最大化</h3>
<p>Dropbox依仗其技术优势和行业地位，在空间的给予上明显有些吝啬了。普通注册用户只有2G空间，通过<a title="Affiliate link" href="http://db.tt/weEV0ID" target="_blank">邀请注册</a>勉强能得到2.5G的初始容量，不过只是杯水车薪了。其实，Dropbox提供的一些空间奖励计划能帮你快速增加不小的空间，而且操作难度并不大，比如邀请一个好友可以得到500G空间（本来还想写如何认证学生账号获得双倍奖励，可惜最近也给扯平了）。</p>
<p>其实，有一个隐藏颇深的<a href="https://www.dropbox.com/free" target="_blank">奖励任务入口</a>，可能大部分Dropbox用户都未必发现并完成了其中的任务。完成诸如链接Twitter/Facebook账号、follow @Dropbox、发表感言等小任务，就可以得到640M的额外空间，虽然不算多，倒也不拿白不拿。</p>
<hr />
<p>如果你还不是Dropbox的用户，觉得我写的这篇内容还算有用，让你有了一试Dropbox的冲动，那么不妨<a title="Affiliate link" href="http://db.tt/weEV0ID" target="_blank">用我的推荐链接注册</a>，咱俩各获得500M的奖励空间，何乐而不为呢？ (:</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.oasisfeng.com/2012/04/18/dropbox-tips/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>时代的弥思（2）——角斗士的悲怆</title>
		<link>http://blog.oasisfeng.com/2012/01/06/pathetique-of-gladiator/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=pathetique-of-gladiator</link>
		<comments>http://blog.oasisfeng.com/2012/01/06/pathetique-of-gladiator/#comments</comments>
		<pubDate>Fri, 06 Jan 2012 08:38:58 +0000</pubDate>
		<dc:creator>oasisfeng</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Thinking]]></category>

		<guid isPermaLink="false">http://blog.oasisfeng.com/?p=1026</guid>
		<description><![CDATA[把刀用力刺进另一个人的身体里，观众会为此向你喝采、崇拜你。 而你，也会开始为了喝采声，而爱上他们…… 最终，我们都会化为一堆枯骨。 可悲的是我们无权选择命运，但有权决定如何面对死亡。 唯有如此，才能像个人一般的。被人们追忆。 ——电影《角斗士》 &#160; 对角斗士而言，荣耀之外，就只剩下深深的悲怆。他们无法为命运抗争，因为在那个时代，他们仍旧是奴隶，只是比其它的奴隶活的更体面一些。 奴隶社会脱胎于那个崇尚『各尽所能、按需分配』的原始共产主义，看似是一种倒退，但却有其内秉的必然性。生产力的大幅提升，尤其是手工业的出现，推动了财产公有制向私有制的转变。人性中的私欲第一次在部落内部被显著的激发，催生了背叛、对立、压迫和剥削。战俘和刑律只是蓄奴开始的幌子，对财产的占有和对资源的控制成为了奴隶社会的阶级基础。而正是这种不平等的阶级基础，为奴隶主阶层集中了强大的势力，在那个弱肉强食的时代，历史发展的车轮本能的选择了强者。强者愈强，弱者愈弱，阶级社会从此诞生。 可是，在我们感叹于教科书上对那个久远年代略带嘲弄的描绘时，有多少人真正意识到，我们正在又一遍重演这个无法阻挡的历史进程？或许看起来并非那么的雷同和明显，但背后左右社会演进的冰冷规律却是惊人的一致。互联网正在你、我、及每个人眼前，迅速的从那个曾经自由、无私的原始共产主义社会大步踏上走向奴隶社会的不归路…… 这并不是危言耸听，请试着回答以下两个问题，然后再回头审视上面的结论： 互联网的『自由』和『免费』精神，是否正在被Facebook、Apple，甚至曾经高举这面大旗的Google所边缘化？ Web所倡导的『开放』与『互联』的精神，是否正在被社会化网络所筑起的一道道高墙所摒弃和切断？ 或许这些问题你早已察觉，也有所思考，但也丝毫不觉得这妨碍你拥抱Facebook和微博。这种心理状态是完全可以理解的，因为几千年的奴隶们也是这样想的。他们明知自己是被压迫和奴役的，但却极少主动抗争，甚至安于现状。 毕竟做牛做马总归有了归属、有口饭吃，好过虽然自由但却食不果腹的流浪生活，就像SNS的藩篱虽然限制了诸多自由，却能让你走出一个人的孤单，融入朋友圈子的氛围。 而如果能替一个显赫的贵族干活，可能还会在卑微的内心中有那么一点小小的优越感，就像是在微博上看到自己突然被一个名人关注而小小的激动一下。 进而，如果你比别人更强健敏捷，甚至还有机会被训练为专业的角斗士，叱咤于古罗马雄伟的斗兽场，让数不清的贵族为你呐喊喝彩。这就好比当你成为微博上的意见领袖，弹指之间就能『通电全国』，引来众粉丝的摇旗呐喊、疯狂转发。 其实，当我们深深沉醉在这种被奴隶的快感之中时，那些高高在上的奴隶主已经在微笑的数着自己手中的钞票和股权了。Facebook 500亿美元的估值是谁创造出来的？新浪微博新近获得DST 2亿美元投资的背后是谁的汗马功劳？他们会把这万亿用户共同创造的商业价值拿出来分给他们的用户么？ 不会，因为他们是奴隶主。你可曾见过奴隶主把自己的财产分给手下的奴隶？他只会以恩赐的姿态把吃剩的饭菜分给众奴仆，还会刻意控制这种赏赐，让下人感到弥足珍贵，从而知足感恩。 无论是《Facebook效应》，还是华尔街的商业杂志，都会将Facebook的巨大成功渲染为扎克伯格传奇的创业经历，让更多的美国草根民众憧憬和向往一个虚无缥缈的创业梦。就像在那个年代里人们都会用崇敬的目光仰视骑在马背上那些光鲜的贵族，而鲜有人会去质疑他们的剥削和压迫，因为一个社会的价值观总是其中的成功者所塑造的。在我们嘲笑那些没有尊严、甘为牛马的奴隶时，可曾想过我们或许也一样会被后世以同样的方式所嘲笑？即便是微博里数万粉丝的意见领袖，在后人看来，可能也不过像是我们眼中的角斗士…… 只是，不知道他们可曾有发出过似本文开篇那样悲怆的自嘲？]]></description>
			<content:encoded><![CDATA[<blockquote><p>把刀用力刺进另一个人的身体里，观众会为此向你喝采、崇拜你。<br />
而你，也会开始为了喝采声，而爱上他们……</p>
<p>最终，我们都会化为一堆枯骨。<br />
可悲的是我们无权选择命运，但有权决定如何面对死亡。<br />
唯有如此，才能像个人一般的。被人们追忆。</p></blockquote>
<div style="text-align: right;">——电影《角斗士》</div>
<p>&nbsp;</p>
<p>对角斗士而言，荣耀之外，就只剩下深深的悲怆。他们无法为命运抗争，因为在那个时代，他们仍旧是奴隶，只是比其它的奴隶活的更体面一些。</p>
<p>奴隶社会脱胎于那个崇尚『各尽所能、按需分配』的原始共产主义，看似是一种倒退，但却有其内秉的必然性。生产力的大幅提升，尤其是手工业的出现，推动了财产公有制向私有制的转变。人性中的私欲第一次在部落内部被显著的激发，催生了背叛、对立、压迫和剥削。战俘和刑律只是蓄奴开始的幌子，对财产的占有和对资源的控制成为了奴隶社会的阶级基础。而正是这种不平等的阶级基础，为奴隶主阶层集中了强大的势力，在那个弱肉强食的时代，历史发展的车轮本能的选择了强者。强者愈强，弱者愈弱，阶级社会从此诞生。</p>
<p>可是，在我们感叹于教科书上对那个久远年代略带嘲弄的描绘时，有多少人真正意识到，我们正在又一遍重演这个无法阻挡的历史进程？或许看起来并非那么的雷同和明显，但背后左右社会演进的冰冷规律却是惊人的一致。互联网正在你、我、及每个人眼前，迅速的从那个曾经自由、无私的原始共产主义社会大步踏上走向奴隶社会的不归路……</p>
<p>这并不是危言耸听，请试着回答以下两个问题，然后再回头审视上面的结论：</p>
<ol>
<li>互联网的『自由』和『免费』精神，是否正在被Facebook、Apple，甚至曾经高举这面大旗的Google所边缘化？</li>
<li>Web所倡导的『开放』与『互联』的精神，是否正在被社会化网络所筑起的一道道高墙所摒弃和切断？</li>
</ol>
<p>或许这些问题你早已察觉，也有所思考，但也丝毫不觉得这妨碍你拥抱Facebook和微博。这种心理状态是完全可以理解的，因为几千年的奴隶们也是这样想的。他们明知自己是被压迫和奴役的，但却极少主动抗争，甚至安于现状。</p>
<p>毕竟做牛做马总归有了归属、有口饭吃，好过虽然自由但却食不果腹的流浪生活，就像SNS的藩篱虽然限制了诸多自由，却能让你走出一个人的孤单，融入朋友圈子的氛围。</p>
<p>而如果能替一个显赫的贵族干活，可能还会在卑微的内心中有那么一点小小的优越感，就像是在微博上看到自己突然被一个名人关注而小小的激动一下。</p>
<p>进而，如果你比别人更强健敏捷，甚至还有机会被训练为专业的角斗士，叱咤于古罗马雄伟的斗兽场，让数不清的贵族为你呐喊喝彩。这就好比当你成为微博上的意见领袖，弹指之间就能『通电全国』，引来众粉丝的摇旗呐喊、疯狂转发。</p>
<p>其实，当我们深深沉醉在这种被奴隶的快感之中时，那些高高在上的奴隶主已经在微笑的数着自己手中的钞票和股权了。Facebook 500亿美元的估值是谁创造出来的？新浪微博新近获得DST 2亿美元投资的背后是谁的汗马功劳？他们会把这万亿用户共同创造的商业价值拿出来分给他们的用户么？</p>
<p>不会，因为他们是奴隶主。你可曾见过奴隶主把自己的财产分给手下的奴隶？他只会以恩赐的姿态把吃剩的饭菜分给众奴仆，还会刻意控制这种赏赐，让下人感到弥足珍贵，从而知足感恩。</p>
<p>无论是《Facebook效应》，还是华尔街的商业杂志，都会将Facebook的巨大成功渲染为扎克伯格传奇的创业经历，让更多的美国草根民众憧憬和向往一个虚无缥缈的创业梦。就像在那个年代里人们都会用崇敬的目光仰视骑在马背上那些光鲜的贵族，而鲜有人会去质疑他们的剥削和压迫，因为一个社会的价值观总是其中的成功者所塑造的。在我们嘲笑那些没有尊严、甘为牛马的奴隶时，可曾想过我们或许也一样会被后世以同样的方式所嘲笑？即便是微博里数万粉丝的意见领袖，在后人看来，可能也不过像是我们眼中的角斗士……</p>
<p>只是，不知道他们可曾有发出过似本文开篇那样悲怆的自嘲？</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.oasisfeng.com/2012/01/06/pathetique-of-gladiator/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>时代的弥思（1）——这是一个什么社会？</title>
		<link>http://blog.oasisfeng.com/2012/01/01/what-sociaty-is-it-now/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=what-sociaty-is-it-now</link>
		<comments>http://blog.oasisfeng.com/2012/01/01/what-sociaty-is-it-now/#comments</comments>
		<pubDate>Sun, 01 Jan 2012 09:29:30 +0000</pubDate>
		<dc:creator>oasisfeng</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Thinking]]></category>

		<guid isPermaLink="false">http://blog.oasisfeng.com/?p=1009</guid>
		<description><![CDATA[『这是最好的时代，也是最坏的时代』，周围的人常常这么感叹，但对这个时代的理解，却是仁者见仁智者见智。既然谁也说不清楚这到底是一个怎样的时代，反正离世界末日说不定也剩不到一年了，那我也就不惮来发表一下自己对这个互联网时代的拙见，算是为这个博客扫扫门前积雪吧。 2011年，读了两本有意思的书，一本是上半年老陆赠予的《Facebook效应》，另一本是年底前在亚马逊上购买的《认知盈余》。两本书我都是抱着批判的心态来读的，对前者的批判是启发我思考的线索，每当我的思路陷入停滞的时候，我只要翻开《Facebook效应》来读一读，并顺着书中理论的反方向走下去，就豁然开朗了；对后者的批判并不是我的目的，但每当我的模型遇到挑战时，就翻开《认知盈余》相关的章节，试图从中发掘破绽，这些破绽往往能指引我化解模型中的矛盾和冲突，让它重归优雅。所以，我非常感激这两本书，它们让我在2011年末经历了一次有生以来最为激烈的头脑激荡，并为我的2012年指明了方向。 这是一个什么社会？（上） 受《Facebook效应》的影响，我接触并了解到『馈赠型经济』。它描述了支撑互联网高速发展到今天的一股原动力，并将其阐述为一种经济模型。馈赠型经济的巅峰代表并非Facebook，而是大家熟知的『维基百科』。其实，所谓的『馈赠型经济』对于在新中国接受马克思主义思想教育的大陆同胞而言可能有一个更易理解的概念——『共产主义』。它宣称要『消灭私有产权，并建立一个各尽所能、按需分配的、生产资料公有制，而且没有阶级制度、国家和政府的社会』。是不是很符合维基精神？以至于我曾经一度认为互联网的未来就是共产主义。 要检验这种观点，必须深入剖析互联网的经济模型。互联网本身既不是一个孤立的经济体又有其独特的封闭经济形态，它显著的依附于线下的这个实体世界，但由于互联网与数字内容的特有联系，又在某种程度上与线下经济行为存在一些泾渭分明的边界。因此当我们认为互联网的某些显著经济行为有着共产主义的影子时，那是我们放大了它与实体世界的关系，认为人们在实体世界的物质和精神文明获得了相当程度的富足后（『认知盈余』的产生），自然而然的从内心拥抱了『高度的集体主义』，这正是马克思认为共产主义诞生所必需的思想前提。 然而，当我们把注意力集中在互联网经济形态本身较为封闭的那一面时，就会发现一些更为本质的特征：互联网的生产力和生产关系其实更接近于那个尚处于原始社会阶段的人类文明。因为生产力的极度匮乏，人们自然而然的采取了一种原始社会更通行的经济形态——『部族经济』，部落成员各尽所能，按需分配，财产公有，以全力支撑整个部落的生存和发展。『原始共产主义』也是马克思所阐述的一种人类社会早期的共产主义形态，同时也是达尔文进化论在社会学中的体现。反观互联网的发展，恰恰正是倡导这种生产关系的『Web 2.0』在发展浪潮中脱颖而出，主导了最近5年的互联网革命。 这样看来，互联网似乎是一个在精神上有着共产主义根基，而在生产关系上却仍旧停留在原始部族经济形态的社会。看似很讽刺的结论，却是互联网的一个真实写照，而且有史以来第一次达成了科学共产主义与原始共产主义的高度统一。相信如果马克思的在天之灵能看到今天的互联网发展，一定会对共产主义理论产生更多新的思考。 但故事并没有在这里结束，互联网的今天应何去何从，是继续发扬『馈赠型经济』，向着那个理想的共产主义社会昂首挺进？还是掀起一场腥风血雨，走入人类历史上那段灰暗但却注定要经历的阶级社会？ 『这是一个什么社会』的下篇将继续这个问题的探讨。]]></description>
			<content:encoded><![CDATA[<p>『这是最好的时代，也是最坏的时代』，周围的人常常这么感叹，但对这个时代的理解，却是仁者见仁智者见智。既然谁也说不清楚这到底是一个怎样的时代，反正离世界末日说不定也剩不到一年了，那我也就不惮来发表一下自己对这个互联网时代的拙见，算是为这个博客扫扫门前积雪吧。</p>
<p>2011年，读了两本有意思的书，一本是上半年老陆赠予的《Facebook效应》，另一本是年底前在亚马逊上购买的《认知盈余》。两本书我都是抱着批判的心态来读的，对前者的批判是启发我思考的线索，每当我的思路陷入停滞的时候，我只要翻开《Facebook效应》来读一读，并顺着书中理论的反方向走下去，就豁然开朗了；对后者的批判并不是我的目的，但每当我的模型遇到挑战时，就翻开《认知盈余》相关的章节，试图从中发掘破绽，这些破绽往往能指引我化解模型中的矛盾和冲突，让它重归优雅。所以，我非常感激这两本书，它们让我在2011年末经历了一次有生以来最为激烈的头脑激荡，并为我的2012年指明了方向。</p>
<p><span id="more-1009"></span></p>
<hr />
<h2>这是一个什么社会？（上）</h2>
<p>受《Facebook效应》的影响，我接触并了解到『馈赠型经济』。它描述了支撑互联网高速发展到今天的一股原动力，并将其阐述为一种经济模型。馈赠型经济的巅峰代表并非Facebook，而是大家熟知的『维基百科』。其实，所谓的『馈赠型经济』对于在新中国接受马克思主义思想教育的大陆同胞而言可能有一个更易理解的概念——『共产主义』。它宣称要『消灭私有产权，并建立一个各尽所能、按需分配的、生产资料公有制，而且没有阶级制度、国家和政府的社会』。是不是很符合维基精神？以至于我曾经一度认为互联网的未来就是共产主义。</p>
<p>要检验这种观点，必须深入剖析互联网的经济模型。互联网本身既不是一个孤立的经济体又有其独特的封闭经济形态，它显著的依附于线下的这个实体世界，但由于互联网与数字内容的特有联系，又在某种程度上与线下经济行为存在一些泾渭分明的边界。因此当我们认为互联网的某些显著经济行为有着共产主义的影子时，那是我们放大了它与实体世界的关系，认为人们在实体世界的物质和精神文明获得了相当程度的富足后（『认知盈余』的产生），自然而然的从内心拥抱了『高度的集体主义』，这正是马克思认为共产主义诞生所必需的思想前提。</p>
<p>然而，当我们把注意力集中在互联网经济形态本身较为封闭的那一面时，就会发现一些更为本质的特征：互联网的生产力和生产关系其实更接近于那个尚处于原始社会阶段的人类文明。因为生产力的极度匮乏，人们自然而然的采取了一种原始社会更通行的经济形态——『部族经济』，部落成员各尽所能，按需分配，财产公有，以全力支撑整个部落的生存和发展。『原始共产主义』也是马克思所阐述的一种人类社会早期的共产主义形态，同时也是达尔文进化论在社会学中的体现。反观互联网的发展，恰恰正是倡导这种生产关系的『Web 2.0』在发展浪潮中脱颖而出，主导了最近5年的互联网革命。</p>
<p>这样看来，互联网似乎是一个在精神上有着共产主义根基，而在生产关系上却仍旧停留在原始部族经济形态的社会。看似很讽刺的结论，却是互联网的一个真实写照，而且有史以来第一次达成了科学共产主义与原始共产主义的高度统一。相信如果马克思的在天之灵能看到今天的互联网发展，一定会对共产主义理论产生更多新的思考。</p>
<p>但故事并没有在这里结束，互联网的今天应何去何从，是继续发扬『馈赠型经济』，向着那个理想的共产主义社会昂首挺进？还是掀起一场腥风血雨，走入人类历史上那段灰暗但却注定要经历的阶级社会？</p>
<p>『这是一个什么社会』的下篇将继续这个问题的探讨。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.oasisfeng.com/2012/01/01/what-sociaty-is-it-now/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>从单硬盘向Intel Matrix RAID的无损迁移</title>
		<link>http://blog.oasisfeng.com/2011/02/26/migration-to-matrix-raid/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=migration-to-matrix-raid</link>
		<comments>http://blog.oasisfeng.com/2011/02/26/migration-to-matrix-raid/#comments</comments>
		<pubDate>Sat, 26 Feb 2011 13:32:10 +0000</pubDate>
		<dc:creator>oasisfeng</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[ASUS]]></category>
		<category><![CDATA[Intel]]></category>
		<category><![CDATA[Matrix RAID]]></category>
		<category><![CDATA[RAID]]></category>
		<category><![CDATA[RST]]></category>

		<guid isPermaLink="false">http://blog.oasisfeng.com/?p=995</guid>
		<description><![CDATA[趁这次为女友升级电脑，顺便给自己的PC作了一次廉价的升级：将E8400 CPU超频了40%，再添置了一块硬盘组建Matrix-RAID（其中少量空间部署RAID-1，用于保存照片、文档等重要文件；其余空间全部部署RAID-0，以提升电脑性能。），总共只花费了不到￥300。 当初在购置这台主机时，曾经深入考察了Intel Matrix RAID技术（现改名为Rapid Storage Technology），其“无损迁移RAID”机制成了吸引我购买ICH10R主板的关键动力之一。两年半后，终于有机会开始利用这个技术升级现有的电脑时，我却发现这其中所深藏的玄关，远没有当初想象的那么简单…… 　　首先，Intel在手册中声明，使用“RAID无损迁移”的前提是现有系统满足“RAID-Ready 条件”： System with a supported Intel chipset One Serial ATA (SATA) hard drive RAID controller enabled in the BIOS Motherboard BIOS that includes the Intel® Rapid Storage Technology option ROM Intel® Rapid Storage Technology software A partition that does not take up all of the space on [...]]]></description>
			<content:encoded><![CDATA[<p>趁这次为女友升级电脑，顺便给自己的PC作了一次廉价的升级：将E8400 CPU超频了40%，再添置了一块硬盘组建Matrix-RAID（其中少量空间部署RAID-1，用于保存照片、文档等重要文件；其余空间全部部署RAID-0，以提升电脑性能。），总共只花费了不到￥300。</p>
<p>当初在购置这台主机时，曾经深入考察了Intel Matrix RAID技术（现改名为Rapid Storage Technology），其“无损迁移RAID”机制成了吸引我购买ICH10R主板的关键动力之一。两年半后，终于有机会开始利用这个技术升级现有的电脑时，我却发现这其中所深藏的玄关，远没有当初想象的那么简单……</p>
<p><span id="more-995"></span>　　首先，Intel在手册中声明，使用“RAID无损迁移”的前提是现有系统满足“RAID-Ready 条件”：</p>
<ul>
<li>System with a supported Intel chipset</li>
<li>One Serial ATA (SATA) hard drive</li>
<li>RAID controller enabled in the BIOS</li>
<li>Motherboard BIOS that includes the Intel® Rapid Storage Technology option ROM</li>
<li>Intel® Rapid Storage Technology software</li>
<li>A partition that does not take up all of the space on the hard drive (4-5MB of free space should be sufficient)</li>
</ul>
<p>这个条件倘若不细看，倒不会觉得有啥门槛。但其实大部分用户（包括我）都会在安装Windows时忽视其中的第三条，因为主板的BIOS配置中一般都默认关闭了RAID控制器，而我们通常不会无端的为没有RAID配置的系统开启RAID控制器。所以，当你后来买了一块新硬盘，打算升级到RAID时，才会发现这是一件多么悲剧的事情……</p>
<p>我首先做的是，想当然的在BIOS中激活RAID控制器。但马上你就会发现，Windows无法启动了。在网上查了一下资料，原来Windows必须在启动的早期环节加载RAID控制器的驱动程序，才能在RAID环境下正常启动。可是如何才能为一个最初安装时并没有激活RAID的Windows系统安装RAID控制器驱动呢？安装驱动程序的前提是硬件存在且没有在BIOS配置中禁用，而激活RAID控制器却又会导致Windows本身无法启动，这似乎构成了一个无解的矛盾……</p>
<p>在被这个问题困扰了许久之后，我无意中在翻看主板说明书时，发现了华硕P5Q主板上一个已经被完全遗忘的功能：附加的Marvel SATA控制器。华硕P5Q通过这个额外的SATA控制器提供多达8个SATA设备（显然对于家用电脑来说，绝对是一个噱头……），而宣传的“Drive Xpert”功能对于一个高级用户来说又显得毫无意义，所以这个SATA控制器一直被我打入冷宫，长期禁用掉了。但这一次，它却带给我一闪的灵光，终于让我想到了一个化解上述矛盾的办法：</p>
<ol>
<li>先将硬盘数据线从Intel南桥的SATA口上取下来，插入Marvel控制器的SATA口。</li>
<li>然后打开电脑，进入BIOS配置，启用Marvel SATA控制器（如果此前禁用了）及南桥的的RAID控制器。</li>
<li>接下来进入Windows（因为硬盘接在Marvel的SATA口上，仍然工作在非RAID模式下，所以Windows得以正常启动），会自动识别到激活的RAID控制器。</li>
<li>安装Intel的Rapid Storage Technology驱动程序和管理工具，在提示重启时选择“稍后重启”。</li>
<li>关闭电脑，将硬盘数据线接回南桥的SATA口。</li>
<li>再次启动电脑，进入Windows（因为刚才已经为Intel RAID控制器安装了驱动程序，所以现在Windows不会无法启动了）。</li>
</ol>
<p>自此，你的系统就从“非RAID”变为Matrix RAID迁移所要求的“RAID-Ready”状态了。现在可以接上新硬盘，开始用RST管理程序开始向Matrix RAID无损迁移了~</p>
<hr />
<p>总结：让Windows从“非RAID配置”成功转变为RAID-Ready的关键在于既能让Windows正常启动，又可以识别到Intel的RAID控制器。在我的案例里，借助华硕P5Q主板所额外集成的Marvel SATA控制器做到了这一点。而对于大部分普通主板用户而言，或许有以下几种办法：</p>
<ul>
<li>激活RAID控制器，用安全模式启动，安装Intel RST驱动。（抱歉，我本应试验一下这个方法的可行性，可惜是在后来才想到的）</li>
<li>去淘或者借一个廉价的二手SATA接口卡，临时用来起到我前面所说Marvel SATA控制器的作用</li>
<li>取下原硬盘，接上新硬盘，激活RAID控制器，然后新安装一个Windows（安装过程中可能会提示你插入带RAID驱动程序的软盘或U盘）。安装完成后再接上原硬盘，复制数据到新硬盘后，清除原硬盘的分区并作为RTS无损迁移时的“新硬盘”。这个办法相当费时，但至少除了重装Windows之外实现了数据的无损。</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.oasisfeng.com/2011/02/26/migration-to-matrix-raid/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>让旧软件也用上Win7任务栏的Jump List</title>
		<link>http://blog.oasisfeng.com/2010/11/27/win7-jump-list-for-old-apps/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=win7-jump-list-for-old-apps</link>
		<comments>http://blog.oasisfeng.com/2010/11/27/win7-jump-list-for-old-apps/#comments</comments>
		<pubDate>Sat, 27 Nov 2010 11:56:09 +0000</pubDate>
		<dc:creator>oasisfeng</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Jump List]]></category>
		<category><![CDATA[putty]]></category>
		<category><![CDATA[taskbar]]></category>
		<category><![CDATA[Windows 7]]></category>

		<guid isPermaLink="false">http://blog.oasisfeng.com/?p=982</guid>
		<description><![CDATA[Windows 7 强大的 Jump List （跳转清单）特性大大提升了我们日常应用的便捷性，随着越来越多的应用程序对它的支持，Jump List 已经成为了大家 Windows 操作习惯中的重要部分。 可惜一些旧时的应用软件，或者软件开发者没有引入对 Jump List 的支持，就难以从中获益了。不过，Windows 7 本身还是给我们预留了一定的定制空间，只要稍加利用，也可以为这些旧软件整合 Jump List 的新体验。根据软件控制方式的不同，一般有两种整合方式： （1）文件关联型的应用 主要指文件查看、编辑、处理类的应用软件，其共同特点是都会关联特定的文件扩展名，他们整合 Jump List 相对比较简单。 首先，你需要将其锁定到任务栏：启动一次该应用软件，然后在其任务栏标签（图标）上点右键，选择 “将此程序锁定到任务栏”。 其次，需要确保他们正确的关联到了相应的文件扩展名。如果尚未关联，可以找一个该扩展名的文件，在右键菜单中选择 “打开方式” &#8211; “选择默认程序&#8230;”。 然后，通过双击打开上述扩展名的文件，这个文件就会出现在该应用软件的 Jump List 中（“最近” 分组下）。 如果想要将某个文件固定在 Jump List 中，除了可以在 “最近” 分组下点击文件名右侧的图钉图标，还可以将文件直接拖拽到这个应用的任务栏图标（标签）上。 （2）支持命令行参数的应用 如果某个应用不具备文件关联性，那么集成到 Jump List 中的过程则相对复杂一些，不过基本思路仍然是基于以上方式（1）的延伸。下面就以 Putty（一款支持命令行参数的SSH客户端） 为例，说明如何操作。 首先，我们需要为其杜撰一个特殊的文件扩展名作为与 Jump List 衔接的桥梁，比如 “.ssh”。建立一个名为 session-name.ssh（将 “session-name” [...]]]></description>
			<content:encoded><![CDATA[<p>Windows 7 强大的 Jump List （跳转清单）特性大大提升了我们日常应用的便捷性，随着越来越多的应用程序对它的支持，Jump List 已经成为了大家 Windows 操作习惯中的重要部分。</p>
<p>可惜一些旧时的应用软件，或者软件开发者没有引入对 Jump List 的支持，就难以从中获益了。不过，Windows 7 本身还是给我们预留了一定的定制空间，只要稍加利用，也可以为这些旧软件整合 Jump List 的新体验。根据软件控制方式的不同，一般有两种整合方式：</p>
<p><span id="more-982"></span><strong>（1）文件关联型的应用</strong></p>
<p>主要指文件查看、编辑、处理类的应用软件，其共同特点是都会关联特定的文件扩展名，他们整合 Jump List 相对比较简单。</p>
<p>首先，你需要将其锁定到任务栏：启动一次该应用软件，然后在其任务栏标签（图标）上点右键，选择 “将此程序锁定到任务栏”。<br />
其次，需要确保他们正确的关联到了相应的文件扩展名。如果尚未关联，可以找一个该扩展名的文件，在右键菜单中选择 “打开方式” &#8211; “选择默认程序&#8230;”。<br />
然后，通过双击打开上述扩展名的文件，这个文件就会出现在该应用软件的 Jump List 中（“最近” 分组下）。<br />
如果想要将某个文件固定在 Jump List 中，除了可以在 “最近” 分组下点击文件名右侧的图钉图标，还可以将文件直接拖拽到这个应用的任务栏图标（标签）上。</p>
<p><strong>（2）支持命令行参数的应用</strong></p>
<p>如果某个应用不具备文件关联性，那么集成到 Jump List 中的过程则相对复杂一些，不过基本思路仍然是基于以上方式（1）的延伸。下面就以 Putty（一款支持命令行参数的SSH客户端） 为例，说明如何操作。</p>
<p>首先，我们需要为其杜撰一个特殊的文件扩展名作为与 Jump List 衔接的桥梁，比如 “.ssh”。建立一个名为 session-name.ssh（将 “session-name” 换成 Putty 中保存的 session 名称） 的空文件，然后双击该文件，通过 “从已安装程序列表中选择程序” 将其关联到 “Putty.exe”。这时你会看到一个 Putty 的错误信息，告诉你无法打开，请忽略它。那是因为 Putty 并不支持文件关联的方式。</p>
<p>然后，我们进入注册表编辑器，找到 “HKEY_CLASSES_ROOT\ssh_auto_file\Putty.exe”，展开其下的 “shell\open\command”，将默认键值中的 “Putty.exe” 部分改为 “Putty.cmd” （前后的文字保持不变）。</p>
<p>接下来，我们在 Putty.exe 的文件夹下创建一个 Putty.cmd 文件，编辑其内容为：</p>
<blockquote><p>@start %~dp0putty.exe -load &#8220;%~n1&#8243;</p></blockquote>
<p>现在，再从任务栏图标上点右键，选择其中列出的 .ssh 文件，是不是成功从 Putty 中打开了相应的 session ~</p>
<p>需要注意的是，经过上述修改以后，双击 .ssh 文件不会再自动添加到 Jump List 中，你必须通过拖拽 .ssh 文件到任务栏图标上的方式固定它。然后修改注册表中的 “HKEY_CLASSES_ROOT\Applications\Putty.exe\shell\open\command” 默认键值，和上面一样将其中的 “Putty.exe” 部分改为 “Putty.cmd” 。</p>
<p>由于 Windows 7 本身的固有行为，将来再固定更多的 .ssh 文件到 Jump List 中后，上述注册表键值会自动还原，所以还必须重复修改一次。（这个暂时没找到一个好的解决办法……）</p>
<hr />
<p><strong>UPDATE: terryice 介绍了一款第三方工具 <a href="http://code.google.com/p/jumplist-extender/">Jumplist Extender</a>，可以完全随心所以的定义 Jump List，适合不需要通过脚本复杂控制的大部分应用场景~ 强烈推荐~</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.oasisfeng.com/2010/11/27/win7-jump-list-for-old-apps/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>对方正无视开源协议盗用FontRouter源码行为的严正声明</title>
		<link>http://blog.oasisfeng.com/2010/11/15/declaim-the-violation-of-open-source-license-on-founder-co/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=declaim-the-violation-of-open-source-license-on-founder-co</link>
		<comments>http://blog.oasisfeng.com/2010/11/15/declaim-the-violation-of-open-source-license-on-founder-co/#comments</comments>
		<pubDate>Mon, 15 Nov 2010 11:33:47 +0000</pubDate>
		<dc:creator>oasisfeng</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Symbian]]></category>
		<category><![CDATA[FontRouter]]></category>
		<category><![CDATA[Founder]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[开源]]></category>
		<category><![CDATA[方正]]></category>

		<guid isPermaLink="false">http://blog.oasisfeng.com/?p=976</guid>
		<description><![CDATA[作为一款内置收费服务的商业软件，目前已经掌握的充分证据显示“方正字酷”大量使用了FontRouter开源项目的源码，却未履行“Apache License 2.0”的要求在软件本身的发布包及网站中附带任何对源码使用的声明和协议文本，已经构成了对开源协议的恣意践踏。 在此提出严正声明，要求“北京北大方正电子有限公司”立即停止上述侵权行为，并就已经造成的不良影响在媒体上公开道歉！如果对方拒不承担上述违反协议的责任，我将把这一事件永久性的写入FontRouter开源项目的“侵权榜（Shame List）”，作为对恣意践踏开源协议的抗议。 （本文将以电子邮件形式递交“北京北大方正电子有限公司”） 注：FontRouter是Symbian OS上广受欢迎的一款免费的字体替换工具软件，并在 2009.2 以 Apache License 2.0 协议开源。]]></description>
			<content:encoded><![CDATA[<p>作为一款内置收费服务的商业软件，目前已经掌握的充分证据显示<a href="http://diy.foundertype.com/efont/FontShowForMobile.aspx">“方正字酷”</a>大量使用了<a href="http://code.google.com/p/fontrouter/">FontRouter开源项目</a>的源码，却未履行“Apache License 2.0”的要求在软件本身的发布包及网站中附带任何对源码使用的声明和协议文本，已经构成了对开源协议的恣意践踏。</p>
<p>在此提出严正声明，要求“北京北大方正电子有限公司”立即停止上述侵权行为，并就已经造成的不良影响在媒体上公开道歉！如果对方拒不承担上述违反协议的责任，我将把这一事件永久性的写入FontRouter开源项目的“侵权榜（Shame List）”，作为对恣意践踏开源协议的抗议。</p>
<p>（本文将以电子邮件形式递交“北京北大方正电子有限公司”）</p>
<p>注：FontRouter是Symbian OS上广受欢迎的一款免费的字体替换工具软件，并<a href="http://blog.oasisfeng.com/2009/02/15/source-code-of-fontrouter-is-released-under-apache-license/">在 2009.2 以 Apache License 2.0 协议开源</a>。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.oasisfeng.com/2010/11/15/declaim-the-violation-of-open-source-license-on-founder-co/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>淘宝如何留住羽翼渐丰的大卖家</title>
		<link>http://blog.oasisfeng.com/2010/08/23/how-could-taobao-retain-big-merchants/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=how-could-taobao-retain-big-merchants</link>
		<comments>http://blog.oasisfeng.com/2010/08/23/how-could-taobao-retain-big-merchants/#comments</comments>
		<pubDate>Sun, 22 Aug 2010 17:51:14 +0000</pubDate>
		<dc:creator>oasisfeng</dc:creator>
				<category><![CDATA[Thinking]]></category>
		<category><![CDATA[B2C]]></category>
		<category><![CDATA[评价]]></category>
		<category><![CDATA[Taobao]]></category>
		<category><![CDATA[商户平台]]></category>
		<category><![CDATA[回头率]]></category>
		<category><![CDATA[信用]]></category>

		<guid isPermaLink="false">http://blog.oasisfeng.com/?p=964</guid>
		<description><![CDATA[在大淘宝这个生态圈中，卖家的成长是非常重要的一环。淘宝让众多有着商业敏锐和发展思维的卖家从白手起家到日进斗金，这条致富和成长的道路已经被无数卖家走过，也经过了淘宝的大肆渲染。但是，淘宝只解决了让卖家成长壮大的问题，却一直没有很好的解决如何留住羽翼渐丰的大卖家。 1. 从卖家出逃说起…… 众所周知，在过去的一两年中，淘宝经历了一个大卖家集体出逃的时期。当时，淘宝长期以来所表现出的善变和趋利，让众多大卖家心里始终是十五个吊桶打水——七上八下，不知道哪天自己就成了某个政策调整的牺牲品。在大卖家看来，必须得要多筑几个窟，才能避免随时可能发生的倾覆之灾。于是，以“柠檬绿茶”为首的一批大卖家，都开始自建B2C门户之路。后话就不在这里说了，且回到正题上来。 这些问题的起因，是卖家对淘宝信任感的丧失。在这一点上，淘宝过去的善变无常和诸多潜规则，确实有失一个大平台的风度。因此，为了挽回卖家的信任，淘宝开始效仿华为，制定企业自己的宪法，这就是后来的“刘庄项目”。从制度上给卖家一个清晰可期的保障和承诺，无疑对重塑卖家信任有着非常重要的意义。 然而，博得了卖家的信任，就能长久的留住大卖家了么？不然！ 2. 谁主沉浮？ 卖家成长到了一定阶段后，必然希望能自己掌控更多的因素。淘宝作为一个平台，必须兼顾各方的利益，尤其是确保中小卖家的成长通道，这就势必会对大卖家产生一个不可避免和制约。虽然平台有着这样一些无法摆脱的根本原则，但同时也有着一些独立B2C网站难以具备的价值。商家通常都是以利益为最高原则的，所以，只要我们合理的控制前者，充分的强化后者，那么在去与留的岔路口，相信大卖家自己也会作出明智的选择。 在很多人看来，商户平台的建设是淘宝留住大卖家的核心手段。但事实上，商户平台所做的东西，却并非前面所说的平台价值所在。当然，这并非否定商户平台在大淘宝中的价值，恰恰相反，他们所做的东西，都是淘宝服务卖家的根基，是吸引卖家，尤其是大卖家加入淘宝所不可或缺的必要工作。这些工作，从卖家的角度来看，其实都并非“无法取代”的。独立网店的页面设计可以远超“店铺装修”的所能达到的效果；大商家长期使用的进销存系统，也远比淘宝提供的后台更易用；企业自己的数据分析团队，远比淘宝现阶段的数据报表更专业…… 3. 平台之“网” 真正无法被取代的，必然是一个平台所独有的，无法被复制的核心价值。就像腾讯之所以能独霸中国互联网的半壁江山，正是依靠QQ无法被复制的核心价值——用户的好友圈子。对大淘宝而言，这个核心价值就体现在“买家关系”上。说的具体一点，包括信用、口碑、回头率等一系列衔接买卖家关系的要素。可以想象，离开了淘宝，卖家所积累的信用将从零开始；离开了淘宝，卖家所打造的口碑只能在常客眼中得到一点点保留；离开了淘宝，买家回头率只能重新依靠促销和服务一步步培养…… 但今天的淘宝，其实还远无法达到上面所希望的效果。因为我们的信用体系，正在渐渐丧失他的公信力和价值；我们还没有一个可以帮助卖家打造百年老店的口碑机制；我们也缺乏一个为卖家体现类似线下店铺回头率的游戏规则。只有我们下大力气去强化和运营这些维系买卖家关系的核心要素，才能真正引导卖家群体参与其中，一起编织这个比蛛丝更坚固和更富韧性的买家关系之网，最终实现像Apple那样，让用户（卖家）甘愿在这个平台上“作茧自缚”。 后续，我将陆续撰文详解“买家关系”中各个要素的强化与运营之路……]]></description>
			<content:encoded><![CDATA[<p>在大淘宝这个生态圈中，卖家的成长是非常重要的一环。淘宝让众多有着商业敏锐和发展思维的卖家从白手起家到日进斗金，这条致富和成长的道路已经被无数卖家走过，也经过了淘宝的大肆渲染。但是，淘宝只解决了让卖家成长壮大的问题，却一直没有很好的解决如何留住羽翼渐丰的大卖家。</p>
<p><big><big><b>1. 从卖家出逃说起……</b></big></big></p>
<p>众所周知，在过去的一两年中，淘宝经历了一个大卖家集体出逃的时期。当时，淘宝长期以来所表现出的善变和趋利，让众多大卖家心里始终是十五个吊桶打水——七上八下，不知道哪天自己就成了某个政策调整的牺牲品。在大卖家看来，必须得要多筑几个窟，才能避免随时可能发生的倾覆之灾。于是，以“柠檬绿茶”为首的一批大卖家，都开始自建B2C门户之路。后话就不在这里说了，且回到正题上来。</p>
<p>这些问题的起因，是卖家对淘宝信任感的丧失。在这一点上，淘宝过去的善变无常和诸多潜规则，确实有失一个大平台的风度。因此，为了挽回卖家的信任，淘宝开始效仿华为，制定企业自己的宪法，这就是后来的“刘庄项目”。从制度上给卖家一个清晰可期的保障和承诺，无疑对重塑卖家信任有着非常重要的意义。</p>
<p>然而，博得了卖家的信任，就能长久的留住大卖家了么？不然！</p>
<p><big><big><b>2. 谁主沉浮？</b></big></big></p>
<p>卖家成长到了一定阶段后，必然希望能自己掌控更多的因素。淘宝作为一个平台，必须兼顾各方的利益，尤其是确保中小卖家的成长通道，这就势必会对大卖家产生一个不可避免和制约。虽然平台有着这样一些无法摆脱的根本原则，但同时也有着一些独立B2C网站难以具备的价值。商家通常都是以利益为最高原则的，所以，只要我们合理的控制前者，充分的强化后者，那么在去与留的岔路口，相信大卖家自己也会作出明智的选择。</p>
<p>在很多人看来，商户平台的建设是淘宝留住大卖家的核心手段。但事实上，商户平台所做的东西，却并非前面所说的平台价值所在。当然，这并非否定商户平台在大淘宝中的价值，恰恰相反，他们所做的东西，都是淘宝服务卖家的根基，是吸引卖家，尤其是大卖家加入淘宝所不可或缺的必要工作。这些工作，从卖家的角度来看，其实都并非“无法取代”的。独立网店的页面设计可以远超“店铺装修”的所能达到的效果；大商家长期使用的进销存系统，也远比淘宝提供的后台更易用；企业自己的数据分析团队，远比淘宝现阶段的数据报表更专业……</p>
<p><big><big><b>3. 平台之“网”</b></big></big></p>
<p>真正无法被取代的，必然是一个平台所独有的，无法被复制的核心价值。就像腾讯之所以能独霸中国互联网的半壁江山，正是依靠QQ无法被复制的核心价值——用户的好友圈子。对大淘宝而言，这个核心价值就体现在<strong>“买家关系”</strong>上。说的具体一点，包括信用、口碑、回头率等一系列衔接买卖家关系的要素。可以想象，离开了淘宝，卖家所积累的信用将从零开始；离开了淘宝，卖家所打造的口碑只能在常客眼中得到一点点保留；离开了淘宝，买家回头率只能重新依靠促销和服务一步步培养……</p>
<p>但今天的淘宝，其实还远无法达到上面所希望的效果。因为我们的信用体系，正在渐渐丧失他的公信力和价值；我们还没有一个可以帮助卖家打造百年老店的口碑机制；我们也缺乏一个为卖家体现类似线下店铺回头率的游戏规则。只有我们下大力气去强化和运营这些维系买卖家关系的核心要素，才能真正引导卖家群体参与其中，一起编织这个比蛛丝更坚固和更富韧性的买家关系之网，最终实现像Apple那样，让用户（卖家）甘愿在这个平台上“作茧自缚”。</p>
<hr />
<b>后续，我将陆续撰文详解“买家关系”中各个要素的强化与运营之路……</b></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.oasisfeng.com/2010/08/23/how-could-taobao-retain-big-merchants/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>评价机制在C2C网购发展历程中的浮沉变迁</title>
		<link>http://blog.oasisfeng.com/2010/08/08/the-responsibility-of-rating-as-c2c-evolves/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-responsibility-of-rating-as-c2c-evolves</link>
		<comments>http://blog.oasisfeng.com/2010/08/08/the-responsibility-of-rating-as-c2c-evolves/#comments</comments>
		<pubDate>Sun, 08 Aug 2010 15:17:56 +0000</pubDate>
		<dc:creator>oasisfeng</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Thinking]]></category>
		<category><![CDATA[B2C]]></category>
		<category><![CDATA[C2C]]></category>
		<category><![CDATA[网购]]></category>
		<category><![CDATA[DSR]]></category>
		<category><![CDATA[评价]]></category>
		<category><![CDATA[产品]]></category>
		<category><![CDATA[信用]]></category>

		<guid isPermaLink="false">http://blog.oasisfeng.com/?p=944</guid>
		<description><![CDATA[和不少人聊过关于网购的评价机制，尤其是C2C模式下的评价，大部分人都会抱怨淘宝或是拍拍现有的评价体系中存在着这样那样的问题。但实际上，评价机制也是随着C2C市场环境本身的变化，而在发生着相应的改变。只不过有时候市场的变化很快，走在了前头，而评价却有些跟不上脚步…… 第一阶段：网购市场的圈地时期 在网购诞生的初期，C2C市场可以说是一个冒险者的乐园。大部分在这个时期接触并开始网购的人，都能回想起那种“提心吊胆”的网购感受。那个时候，市场其实还很单纯，并没有多少投机的商家，尤其是在淘宝推出“担保交易”的背景下。 初期的C2C市场，需要的是高速的、爆发性的增长，网购相关的机制设计都围绕着这个中心展开，评价也不例外。“好中差评”机制虽然从现在的眼光来看，有着种种内在的缺陷，但在当时的历史条件下，它所强调的“量”的积累价值和对“好评率”的追求，承载了拉动和助推网购高速发展的关键作用。 第二阶段：爆发式增长后的巩固时期 当C2C网购经历了初期的爆发式增长后，市场规模已变得日渐庞大。这个时候，必然会出现各种各样的市场秩序搅局者。“好中差评”的方式，也开始逐渐暴露出其负面的问题： 首先，其过度的透明性，加上中差评有机会被改为好评，导致买家评价基本是“被劫持”，很难体现其客观性。最终也造成了大部分情况下，好评率的参考意义基本丧失。 其次，它所强调的“量”，直接引发了卖家成长的马太效应，这就是为什么不少新入的卖家甘冒被封店的风险，也不惜血本去刷信用。因为买信用就像买官一样，都是一次破费就可以长期坐收渔利的买卖。 最后，被严重扭曲的“好评率”，成了一个套在卖家脖子上，永远无法摆脱的枷锁，尤其是当淘宝在中期开放“中差评改好评”的规则后。“恶评攻击”、“职业差评师”，这些在卖家如履薄冰般维系“100%好评率”的心态下催生出的毒瘤，成了中小卖家成长之路上挥之不去的阴影。 在这个时期，我们需要一个相对更为理性与务实的评价机制，既能兼顾市场中大小卖家的公平竞争，又能有效评估卖家的服务质量和商品情况。在这样的历史背景下，百度有啊加入C2C网购的战场后，首先效仿了eBay的“Detailed Seller Rating（DSR）”机制。它让买家针对几个预设的维度打分，然后汇总所有买家的单次评分进行统计平均，得出商品及店铺在这些维度下的得分。这个机制后来也被淘宝、拍拍等其它C2C平台吸纳。它相对于“好中差评”的主要进步在于：不对双方绝对透明的评价过程、可上可下的浮动分值、适度隐藏的算法细节。它和核心在于将好中差评的累积式分数转变为浮动的百分制分数，从而使中小卖家的信用比拼门槛大幅度降低，并鼓励卖家提升商品质量和服务水平。 第三阶段：网购开始逐渐打入主流人群的购物渠道 当网购已经成为主流人群欣然接受并乐于使用的购物方式后，C2C相对于B2C，承受了更大的压力和考验。B2C凭借标准化的商品、承诺化的服务 和 完善的售后体系，开始显现出比C2C更明显的优势。这个时期，C2C想要生存下来，除了依靠B2C尚难涉足的非标准化商品外，必须花大力气整顿市场秩序。只有规范了市场，才能缩小在消费者心目中与B2C的品质差距。因此，评价在此时必须承担起真正依靠消费者的力量约束卖家并鞭策其提升服务和产品质量的重任。 DSR所带来的改变是显而易见的，它在一定程度上削弱了好中差评的影响力，并在一段时期内起到了很好的市场自发规范的效果。不过实施不久后，其隐含的问题也渐渐开始显现。 首先是它的百分制（或淘宝的5分制），对于广大消费者来说，存在着不确定的尺度理解差异。按照淘宝官方的引导文字，4分代表一个满意的交易，而5分则意味着“超出期望”。但实际上，受过去好中差评思维的惯性影响，绝大部分买家在作出DSR评价时，只要没有明显的不满，都习惯性的直接打5分。这就是为什么大家看到的DSR得分几乎都集中在4.7-4.9之间，虚高的分值基本起不到区分卖家的作用。 其次，这种纯粹数值化的评分，虽然也区分了一定的维度，但却仍旧没有很好的发挥出评价作为买家对卖家交易行为和商品状况的反馈作用。拿很多卖家的话来说，“我看到自己店铺DSR中服务的分值比别人低，但我已经很尽力了，不知道他们到底哪里比我做的好”。虽然耐心的卖家可以去细致的翻阅对比买家作出的文字评论，但面对动辄一个月数千单的竞争对手，恐怕要聘请一个专业的分析团队才能胜任了…… 最后，数值化的评分，加上笼统的维度，让用户在表达评价意图时觉得很乏力，感觉自己的评价可能很难真正影响那些大卖家，在一定程度上打击了买家的评价主动性。你说写点文字评论吧，又太容易沉下去了，很难唤起其他买家的注意。 由此看来，DSR并没有很好的胜任它在C2C目前发展阶段作为评价机制所应起到的制约作用，我们迫切需要一个能解决上述问题的评价机制。在这里，且容我暂且跳过现阶段的解决方案，让我们先来展望一下C2C发展的下一阶段，需要什么样的评价机制。 第四阶段：成熟的网购市场，已成为人们主要购物方式 假定在一个已经相对成熟的C2C网购市场，我们可以期望95%以上的卖家都能很好的遵守这个市场的正常秩序，普通消费者在网购时通常都能得到满意的商品和服务。那么在这样一个背景下，评价机制的主要意义已经不再是规范和约束市场秩序了。那么它的价值应该如何得以更好的体现呢？让我们先来看看消费者的诉求。 就像人类社会的发展一样，在温饱问题尚未得到根本解决的时候，大家只想着吃上一顿饱饭，睡上一晚暖觉；当吃饱了，穿暖了，人们就会开始追求各种物质和精神上的享受，于是诞生了多元化的第三产业。网购也是一个道理，当市场秩序还在塑造和规范的过程中时，大部分消费者都担心的是会不会上当受骗，会不会在快递过程中损坏，会不会享受不到售后服务；而当这些担忧基本都已不复存在时，他们就会开始追求更高层次、更丰富的需求了。比如买护肤品希望得到“针对性推荐”、小件商品的“同城当日达”、特殊网络服务的“全程指导”…… 这就对卖家的多样化、定制化经营创造了土壤。从这个时期开始，C2C顶住了来自B2C持续的强力竞争后，其最大的核心竞争力终于开始崭露头角——那就是“个性化服务”。 因此，评价机制在这个时期的核心价值，就体现在帮助买卖双方就个性化服务的需求和提供牵线搭桥。一方面，引导有个性化经营思路的卖家打出自己的店铺特色，积累起独特的口碑；另一方面，帮助有个性化服务诉求的消费者准确的找到能满足其需求的店铺，提升客户满意度；最后，通过交易与评价，使双方就服务质量进行交流反馈，从而推动卖家进一步提升服务质量，打造更坚实的口碑。 纵观当前的C2C环境，我们尚处在第三阶段的早期。此时，作为C2C领头羊的淘宝，确实受到了来自京东、凡客等大型B2C商城强有力的正面竞争。如果我们继续放任陈旧的好中差评机制主导C2C的信用体系，坐视处于尴尬境地的DSR机制不作改良，那么网购的市场只会在B2C的步步紧逼下继续被蚕食，甚至可能面临彻底沦为低端小商品市场的结局。]]></description>
			<content:encoded><![CDATA[<p>和不少人聊过关于网购的评价机制，尤其是C2C模式下的评价，大部分人都会抱怨淘宝或是拍拍现有的评价体系中存在着这样那样的问题。但实际上，评价机制也是随着C2C市场环境本身的变化，而在发生着相应的改变。只不过有时候市场的变化很快，走在了前头，而评价却有些跟不上脚步……</p>
<p><big><big><b>第一阶段：网购市场的圈地时期</b></big></big></p>
<p>在网购诞生的初期，C2C市场可以说是一个冒险者的乐园。大部分在这个时期接触并开始网购的人，都能回想起那种“提心吊胆”的网购感受。那个时候，市场其实还很单纯，并没有多少投机的商家，尤其是在淘宝推出“担保交易”的背景下。</p>
<p>初期的C2C市场，需要的是高速的、爆发性的增长，网购相关的机制设计都围绕着这个中心展开，评价也不例外。“好中差评”机制虽然从现在的眼光来看，有着种种内在的缺陷，但在当时的历史条件下，它所强调的“量”的积累价值和对“好评率”的追求，承载了拉动和助推网购高速发展的关键作用。</p>
<p><big><big><b>第二阶段：爆发式增长后的巩固时期</b></big></big></p>
<p>当C2C网购经历了初期的爆发式增长后，市场规模已变得日渐庞大。这个时候，必然会出现各种各样的市场秩序搅局者。“好中差评”的方式，也开始逐渐暴露出其负面的问题：</p>
<p><span id="more-944"></span>
<ul>
<li>首先，其过度的透明性，加上中差评有机会被改为好评，导致买家评价基本是“被劫持”，很难体现其客观性。最终也造成了大部分情况下，好评率的参考意义基本丧失。</li>
<li>其次，它所强调的“量”，直接引发了卖家成长的马太效应，这就是为什么不少新入的卖家甘冒被封店的风险，也不惜血本去刷信用。因为买信用就像买官一样，都是一次破费就可以长期坐收渔利的买卖。</li>
<li>最后，被严重扭曲的“好评率”，成了一个套在卖家脖子上，永远无法摆脱的枷锁，尤其是当淘宝在中期开放“中差评改好评”的规则后。“恶评攻击”、“职业差评师”，这些在卖家如履薄冰般维系“100%好评率”的心态下催生出的毒瘤，成了中小卖家成长之路上挥之不去的阴影。</li>
</ul>
<p>在这个时期，我们需要一个相对更为理性与务实的评价机制，既能兼顾市场中大小卖家的公平竞争，又能有效评估卖家的服务质量和商品情况。在这样的历史背景下，百度有啊加入C2C网购的战场后，首先效仿了eBay的“<strong>Detailed Seller Rating（DSR）</strong>”机制。它让买家针对几个预设的维度打分，然后汇总所有买家的单次评分进行统计平均，得出商品及店铺在这些维度下的得分。这个机制后来也被淘宝、拍拍等其它C2C平台吸纳。它相对于“好中差评”的主要进步在于：不对双方绝对透明的评价过程、可上可下的浮动分值、适度隐藏的算法细节。它和核心在于将好中差评的累积式分数转变为浮动的百分制分数，从而使中小卖家的信用比拼门槛大幅度降低，并鼓励卖家提升商品质量和服务水平。</p>
<p><big><big><b>第三阶段：网购开始逐渐打入主流人群的购物渠道</b></big></big></p>
<p>当网购已经成为主流人群欣然接受并乐于使用的购物方式后，C2C相对于B2C，承受了更大的压力和考验。B2C凭借标准化的商品、承诺化的服务 和 完善的售后体系，开始显现出比C2C更明显的优势。这个时期，C2C想要生存下来，除了依靠B2C尚难涉足的非标准化商品外，必须花大力气整顿市场秩序。只有规范了市场，才能缩小在消费者心目中与B2C的品质差距。因此，评价在此时必须承担起真正依靠消费者的力量约束卖家并鞭策其提升服务和产品质量的重任。</p>
<p>DSR所带来的改变是显而易见的，它在一定程度上削弱了好中差评的影响力，并在一段时期内起到了很好的市场自发规范的效果。不过实施不久后，其隐含的问题也渐渐开始显现。</p>
<ul>
<li>首先是它的百分制（或淘宝的5分制），对于广大消费者来说，存在着不确定的尺度理解差异。</strong>按照淘宝官方的引导文字，4分代表一个满意的交易，而5分则意味着“超出期望”。但实际上，受过去好中差评思维的惯性影响，绝大部分买家在作出DSR评价时，只要没有明显的不满，都习惯性的直接打5分。这就是为什么大家看到的DSR得分几乎都集中在4.7-4.9之间，虚高的分值基本起不到区分卖家的作用。</li>
<li>其次，这种纯粹数值化的评分，虽然也区分了一定的维度，但却仍旧没有很好的发挥出评价作为买家对卖家交易行为和商品状况的反馈作用。拿很多卖家的话来说，“我看到自己店铺DSR中服务的分值比别人低，但我已经很尽力了，不知道他们到底哪里比我做的好”。虽然耐心的卖家可以去细致的翻阅对比买家作出的文字评论，但面对动辄一个月数千单的竞争对手，恐怕要聘请一个专业的分析团队才能胜任了……</li>
<li>最后，数值化的评分，加上笼统的维度，让用户在表达评价意图时觉得很乏力，感觉自己的评价可能很难真正影响那些大卖家，在一定程度上打击了买家的评价主动性。你说写点文字评论吧，又太容易沉下去了，很难唤起其他买家的注意。</li>
</ul>
<p>由此看来，DSR并没有很好的胜任它在C2C目前发展阶段作为评价机制所应起到的制约作用，我们迫切需要一个能解决上述问题的评价机制。在这里，且容我暂且跳过现阶段的解决方案，让我们先来展望一下C2C发展的下一阶段，需要什么样的评价机制。</p>
<p><big><big><b>第四阶段：成熟的网购市场，已成为人们主要购物方式</b></big></big></p>
<p>假定在一个已经相对成熟的C2C网购市场，我们可以期望95%以上的卖家都能很好的遵守这个市场的正常秩序，普通消费者在网购时通常都能得到满意的商品和服务。那么在这样一个背景下，评价机制的主要意义已经不再是规范和约束市场秩序了。那么它的价值应该如何得以更好的体现呢？让我们先来看看消费者的诉求。</p>
<p>就像人类社会的发展一样，在温饱问题尚未得到根本解决的时候，大家只想着吃上一顿饱饭，睡上一晚暖觉；当吃饱了，穿暖了，人们就会开始追求各种物质和精神上的享受，于是诞生了多元化的第三产业。网购也是一个道理，当市场秩序还在塑造和规范的过程中时，大部分消费者都担心的是会不会上当受骗，会不会在快递过程中损坏，会不会享受不到售后服务；而当这些担忧基本都已不复存在时，他们就会开始追求更高层次、更丰富的需求了。比如买护肤品希望得到“针对性推荐”、小件商品的“同城当日达”、特殊网络服务的“全程指导”…… 这就对卖家的多样化、定制化经营创造了土壤。从这个时期开始，C2C顶住了来自B2C持续的强力竞争后，其最大的核心竞争力终于开始崭露头角——那就是“个性化服务”。</p>
<p>因此，评价机制在这个时期的核心价值，就体现在帮助买卖双方就个性化服务的需求和提供牵线搭桥。一方面，引导有个性化经营思路的卖家打出自己的店铺特色，积累起独特的口碑；另一方面，帮助有个性化服务诉求的消费者准确的找到能满足其需求的店铺，提升客户满意度；最后，通过交易与评价，使双方就服务质量进行交流反馈，从而推动卖家进一步提升服务质量，打造更坚实的口碑。</p>
<hr />
纵观当前的C2C环境，我们尚处在第三阶段的早期。此时，作为C2C领头羊的淘宝，确实受到了来自京东、凡客等大型B2C商城强有力的正面竞争。如果我们继续放任陈旧的好中差评机制主导C2C的信用体系，坐视处于尴尬境地的DSR机制不作改良，那么网购的市场只会在B2C的步步紧逼下继续被蚕食，甚至可能面临彻底沦为低端小商品市场的结局。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.oasisfeng.com/2010/08/08/the-responsibility-of-rating-as-c2c-evolves/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>用Guice+Peaberry实现OSGi环境下的JIT注入</title>
		<link>http://blog.oasisfeng.com/2010/07/14/jit-injection-in-osgi-with-guice-and-peaberry/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=jit-injection-in-osgi-with-guice-and-peaberry</link>
		<comments>http://blog.oasisfeng.com/2010/07/14/jit-injection-in-osgi-with-guice-and-peaberry/#comments</comments>
		<pubDate>Tue, 13 Jul 2010 16:53:03 +0000</pubDate>
		<dc:creator>oasisfeng</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[DI]]></category>
		<category><![CDATA[Guice]]></category>
		<category><![CDATA[JIT]]></category>
		<category><![CDATA[OSGi]]></category>
		<category><![CDATA[Peaberry]]></category>

		<guid isPermaLink="false">http://blog.oasisfeng.com/?p=882</guid>
		<description><![CDATA[Guice是一个Java下非常强大的依赖注入框架，相比其它同类框架，我更喜欢Guice这种“配置亦代码”的风格。除了开发友好性之外，Guice的过人之处还体现在它灵活的JIT(Just-in-time)注入上。利用@ProvidedBy()注解可以方便的为接口绑定定制的Provider，从而实现结合了动态逻辑的Lazy注入。 当Guice和OSGi框架碰撞到一起时，就会遇到一些观念上的矛盾：OSGi的动态生命周期在Guice本身的静态绑定下无法发挥其应有的作用，而Dynamic Service也无法方便的与Guice对接。好在开源社区已经有人意识到这些问题，并为两者搭起了一座鹊桥，这个项目就是“Peaberry”。 这两天在捣腾Peaberry时，发现它的设计主要是针对静态绑定，在与Guice的JIT注入一起用时，却还差那么一两块砖，于是自己把它给砌上了，顺便分享出来与大家交流一下。 按照Peaberry的用户手册，静态绑定一个DS服务的写法是在Module.configure()中使用：（以LogService接口为例） bind&#40;LogService.class&#41;.toProvider&#40;Peaberry.service&#40;LogService.class&#41;.single&#40;&#41;&#41;; 如果转为JIT注入，则必须提供一个相应的Provider类。虽然Peaberry.service(&#8230;).single()返回的正是一个Provider，但鉴于Java注解只能用字面类（Literal Class），所以这里需要包装一下。我的办法是定义一个抽象的公共Provider，用反射去识别派生类的具体泛型类型： public abstract class JitProvider&#60;T&#62; implements Provider&#60;T&#62; &#123; &#160; &#160;protected JitProvider&#40;&#41; &#123; &#160; @SuppressWarnings&#40;&#34;unchecked&#34;&#41; &#160; final Class&#60;T&#62; clazz = &#40;Class&#60;T&#62;&#41; &#40;&#40;ParameterizedType&#41; getClass&#40;&#41;.getGenericSuperclass&#40;&#41;&#41;.getActualTypeArguments&#40;&#41;&#91;0&#93;; &#160; provider = Peaberry.service&#40;clazz&#41;.single&#40;&#41;.direct&#40;&#41;; &#160;&#125; &#160; &#160;@Override &#160;public T get&#40;&#41; &#123; &#160; return provider.get&#40;&#41;; &#160;&#125; &#160; &#160;@Inject &#160;protected void setInjector&#40;final Injector injector&#41; &#123; &#160; injector.injectMembers&#40;provider&#41;; &#160;&#125; [...]]]></description>
			<content:encoded><![CDATA[<p>Guice是一个Java下非常强大的依赖注入框架，相比其它同类框架，我更喜欢Guice这种“配置亦代码”的风格。除了开发友好性之外，Guice的过人之处还体现在它灵活的JIT(Just-in-time)注入上。利用@ProvidedBy()注解可以方便的为接口绑定定制的Provider，从而实现结合了动态逻辑的Lazy注入。</p>
<p>当Guice和OSGi框架碰撞到一起时，就会遇到一些观念上的矛盾：OSGi的动态生命周期在Guice本身的静态绑定下无法发挥其应有的作用，而Dynamic Service也无法方便的与Guice对接。好在开源社区已经有人意识到这些问题，并为两者搭起了一座鹊桥，这个项目就是“<a href="http://peaberry.googlecode.com/">Peaberry</a>”。</p>
<p>这两天在捣腾Peaberry时，发现它的设计主要是针对静态绑定，在与Guice的JIT注入一起用时，却还差那么一两块砖，于是自己把它给砌上了，顺便分享出来与大家交流一下。</p>
<p>按照Peaberry的用户手册，静态绑定一个DS服务的写法是在Module.configure()中使用：（以LogService接口为例）</p>
<div class="geshi no java5">
<ol>
<li class="li1">
<div class="de1">bind<span class="br0">&#40;</span>LogService.<span class="kw2">class</span><span class="br0">&#41;</span>.<span class="me1">toProvider</span><span class="br0">&#40;</span>Peaberry.<span class="me1">service</span><span class="br0">&#40;</span>LogService.<span class="kw2">class</span><span class="br0">&#41;</span>.<span class="me1">single</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<p>如果转为JIT注入，则必须提供一个相应的Provider类。虽然Peaberry.service(&#8230;).single()返回的正是一个Provider，但鉴于Java注解只能用字面类（Literal Class），所以这里需要包装一下。我的办法是定义一个抽象的公共Provider，用反射去识别派生类的具体泛型类型：</p>
<div class="geshi no java5">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">public</span> <span class="kw2">abstract</span> <span class="kw2">class</span> JitProvider<span class="sy0">&lt;</span>T<span class="sy0">&gt;</span> <span class="kw2">implements</span> Provider<span class="sy0">&lt;</span>T<span class="sy0">&gt;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">protected</span> JitProvider<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; @<span class="kw21">SuppressWarnings</span><span class="br0">&#40;</span><span class="st0">&quot;unchecked&quot;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">final</span> Class<span class="sy0">&lt;</span>T<span class="sy0">&gt;</span> clazz = <span class="br0">&#40;</span>Class<span class="sy0">&lt;</span>T<span class="sy0">&gt;</span><span class="br0">&#41;</span> <span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw26">ParameterizedType</span><span class="br0">&#41;</span> getClass<span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">getGenericSuperclass</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.<span class="me1">getActualTypeArguments</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; provider = Peaberry.<span class="me1">service</span><span class="br0">&#40;</span>clazz<span class="br0">&#41;</span>.<span class="me1">single</span><span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">direct</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;@<span class="kw21">Override</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">public</span> T get<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">return</span> provider.<span class="me1">get</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;@Inject</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">protected</span> <span class="kw3">void</span> setInjector<span class="br0">&#40;</span><span class="kw2">final</span> Injector injector<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; injector.<span class="me1">injectMembers</span><span class="br0">&#40;</span>provider<span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">private</span> <span class="kw2">final</span> Provider<span class="sy0">&lt;</span>T<span class="sy0">&gt;</span> provider<span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>具体使用JitProvider的接口以如下形式声明：</p>
<div class="geshi no java5">
<ol>
<li class="li1">
<div class="de1">@ProvidedBy<span class="br0">&#40;</span>Foo.<span class="kw39">Provider</span>.<span class="kw2">class</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">public</span> <span class="kw2">interface</span> Foo <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;&#8230;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">static</span> <span class="kw2">class</span> <span class="kw39">Provider</span> <span class="kw2">extends</span> JitProvider<span class="sy0">&lt;</span>Foo<span class="sy0">&gt;</span> <span class="br0">&#123;</span><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>这样，所有使用Foo服务的Bundle都完全实现了即需即用，不必再像过去那样在每一个用到该服务的Bundle的Activator中事先进行一遍Peaberry繁琐的bind配置。经此精简优化，Peaberry的易用性得到了明显的提升，使用起来也更加直觉化了。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.oasisfeng.com/2010/07/14/jit-injection-in-osgi-with-guice-and-peaberry/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>解决Cisco AnyConnect VPN客户端的DNS优先级问题</title>
		<link>http://blog.oasisfeng.com/2010/05/25/solve-the-dns-priority-issue-in-cisco-anyconnect-vpn-client/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=solve-the-dns-priority-issue-in-cisco-anyconnect-vpn-client</link>
		<comments>http://blog.oasisfeng.com/2010/05/25/solve-the-dns-priority-issue-in-cisco-anyconnect-vpn-client/#comments</comments>
		<pubDate>Mon, 24 May 2010 16:35:59 +0000</pubDate>
		<dc:creator>oasisfeng</dc:creator>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[AnyConnect]]></category>
		<category><![CDATA[BAT]]></category>
		<category><![CDATA[Cisco]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[VPN]]></category>

		<guid isPermaLink="false">http://blog.oasisfeng.com/?p=900</guid>
		<description><![CDATA[Cisco AnyConnect VPN的客户端是一个工作于并行隧道（Split Tunnel）模式下的VPN软件，它可以方便的同时使用内外网两不误。它通过连接VPN后动态激活平时禁用的VPN虚拟网络适配器，并根据远端网关的配置应用相应的DNS和路由配置，实现了与默认网络环境无缝并行。但正是在其上述设计中的一个理想假设，为“中国特色”的互联网环境下使用它埋下了一个隐藏很深的问题。 如果你所连接的VPN网络本身是与Internet连通的，而且DNS也可解析外网的网址，由于AnyConnect会将VPN网络适配器的优先级提升到最高，因此远端的DNS配置会取代本地网络（例如家里的宽带网络）。如果你的本地网络和远程网络是同一接入线路，倒还感觉不到这之中的差别。但如果其中一个是电信线路，另一个是联通（网通）线路，你就会遇到一个很悲惨的状况：本地网络访问国内主要网站的速度会显著降低，因为DNS对大型网站CDN的解析结果是和你现有路由完全不同的线路，想象一下在你的联通（网通）宽带下访问电信线路的网站，那种感觉…… 为了解决这个问题，我先后尝试了在注册表里静态调整适配器优先级、修改VPN适配器DNS配置等多种办法，但AnyConnect在每次连接时强制重置适配器配置和优先级的极端手段让我的大部分努力都付之东流。要不是公司网络只支持它家的VPN客户端，我真不想再看到这样一个流氓软件…… 不得己，只好祭出最后的杀手锏，用批处理写了一个动态监视和修正DNS配置的脚本，放到任务计划中去自动执行。（眼看我的任务计划中已经塞了越来越多这类fix脚本，也只能留下一声叹息了……）废话不多说，直接上脚本： anyconnect_vpn_dns_fix.bat @echo off set dns=127.0.0.1 :loop netsh interface ip show dnsservers name="Cisco AnyConnect VPN Client Connection" &#124; find "Cisco" &#62; nul if errorlevel 1 goto sleep netsh interface ip show dnsservers name="Cisco AnyConnect VPN Client Connection" &#124; find "%dns%" &#62; nul if errorlevel 1 goto fix goto sleep [...]]]></description>
			<content:encoded><![CDATA[<p>Cisco AnyConnect VPN的客户端是一个工作于并行隧道（Split Tunnel）模式下的VPN软件，它可以方便的同时使用内外网两不误。它通过连接VPN后动态激活平时禁用的VPN虚拟网络适配器，并根据远端网关的配置应用相应的DNS和路由配置，实现了与默认网络环境无缝并行。但正是在其上述设计中的一个理想假设，为“中国特色”的互联网环境下使用它埋下了一个隐藏很深的问题。</p>
<p>如果你所连接的VPN网络本身是与Internet连通的，而且DNS也可解析外网的网址，由于AnyConnect会将VPN网络适配器的优先级提升到最高，因此远端的DNS配置会取代本地网络（例如家里的宽带网络）。如果你的本地网络和远程网络是同一接入线路，倒还感觉不到这之中的差别。但如果其中一个是电信线路，另一个是联通（网通）线路，你就会遇到一个很悲惨的状况：本地网络访问国内主要网站的速度会显著降低，因为DNS对大型网站CDN的解析结果是和你现有路由完全不同的线路，想象一下在你的联通（网通）宽带下访问电信线路的网站，那种感觉……</p>
<p><span id="more-900"></span>为了解决这个问题，我先后尝试了在注册表里静态调整适配器优先级、修改VPN适配器DNS配置等多种办法，但AnyConnect在每次连接时强制重置适配器配置和优先级的极端手段让我的大部分努力都付之东流。要不是公司网络只支持它家的VPN客户端，我真不想再看到这样一个流氓软件……</p>
<p>不得己，只好祭出最后的杀手锏，用批处理写了一个动态监视和修正DNS配置的脚本，放到任务计划中去自动执行。（眼看我的任务计划中已经塞了越来越多这类fix脚本，也只能留下一声叹息了……）废话不多说，直接上脚本：</p>
<p>anyconnect_vpn_dns_fix.bat</p>
<pre>@echo off
set dns=127.0.0.1
:loop
netsh interface ip show dnsservers name="Cisco AnyConnect VPN Client Connection" | find "Cisco" &gt; nul
if errorlevel 1 goto sleep

netsh interface ip show dnsservers name="Cisco AnyConnect VPN Client Connection" | find "%dns%" &gt; nul
if errorlevel 1 goto fix

goto sleep

:fix
echo New Cisco AnyConnect VPN connection detected, apply the DNS fix...
netsh interface ip add dnsservers name="Cisco AnyConnect VPN Client Connection" address=%dns% index=1 validate=yes
goto sleep

:sleep
rem Sleep 10 seconds
ping -n 10 127.0.0.1 &gt; nul
goto loop</pre>
<p>在将这个脚本丢进任务计划之前，还有几点需要补充说明：</p>
<ul>
<li>请将第二行的“127.0.0.1”改为你实际的宽带DNS服务器地址，比如路由器地址。</li>
<li>这个脚本需要提升的UAC权限，因此务必在计划任务中设置“使用最高权限运行”</li>
<li>为了消除丑陋的命令提示符窗口，建议使用<a href="http://www.ntwind.com/software/utilities/hstart.html">hstart.exe</a>来启动它，用“/wait /noconsole”参数</li>
</ul>
<p>用了这个脚本后，你可能会面临一个新的问题——VPN所连网域的内部域名无法正常解析了，而是跳到ISP的“网址智能纠错”页面中去了。这其实并不是上述脚本本身的问题，因为主DNS（即宽带DNS）无法解析的域名，本应传递给次DNS（VPN DNS），但却不幸遭遇了又一个典型“中国特色”互联网的变态产物——DNS劫持。对于这个问题的解决之道，请关注我的下一篇Blog：《中国特色互联网的生存法则——DNS免疫篇》</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.oasisfeng.com/2010/05/25/solve-the-dns-priority-issue-in-cisco-anyconnect-vpn-client/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 1.163 seconds -->

