<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>easyfinger</title>
    <description></description>
    <link>http://easyfinger.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>敏捷开发资料收集整理</title>
        <author>easyfinger</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://easyfinger.javaeye.com">easyfinger</a>&nbsp;
          链接：<a href="http://easyfinger.javaeye.com/blog/211315" style="color:red;">http://easyfinger.javaeye.com/blog/211315</a>&nbsp;
          发表时间: 2008年07月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          敏捷开发介绍： <a href="http://www.itisedu.com/phrase/200603291800375.html" target="_blank">http://www.itisedu.com/phrase/200603291800375.html</a><br /><br />极限编程与敏捷开发: <a href="http://www.ad0.cn/netfetch/read.php/459.htm" target="_blank">http://www.ad0.cn/netfetch/read.php/459.htm</a><br /><br />Extreme Programming(极限编程) FAQ：<a href="http://www.ad0.cn/netfetch/read.php/460.htm" target="_blank">http://www.ad0.cn/netfetch/read.php/460.htm</a><br /><br />Scrum Checklists 中文版: <a href="http://www.infoq.com/cn/minibooks/scrum-checklists" target="_blank">http://www.infoq.com/cn/minibooks/scrum-checklists</a><br /><br />Martin Fowler谈Scrum认证、敏捷现状与未来: <a href="http://www.infoq.com/cn/news/2008/06/martin-agile-scrum" target="_blank">http://www.infoq.com/cn/news/2008/06/martin-agile-scrum</a><br /><br />敏捷软件开发模型--SCRUM: <a href="http://www.cnblogs.com/Ring1981/archive/2006/09/07/496591.html" target="_blank">http://www.cnblogs.com/Ring1981/archive/2006/09/07/496591.html</a>
          <br/>
          <span style="color:red;">
            <a href="http://easyfinger.javaeye.com/blog/211315#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 04 Jul 2008 09:00:16 +0800</pubDate>
        <link>http://easyfinger.javaeye.com/blog/211315</link>
        <guid>http://easyfinger.javaeye.com/blog/211315</guid>
      </item>
      <item>
        <title>DOM/JS/框架之间的关系</title>
        <author>easyfinger</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://easyfinger.javaeye.com">easyfinger</a>&nbsp;
          链接：<a href="http://easyfinger.javaeye.com/blog/193710" style="color:red;">http://easyfinger.javaeye.com/blog/193710</a>&nbsp;
          发表时间: 2008年05月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>DOM (Document Object Model)是一个平台和语言中立的接口，它允许程序和脚本动态访问和更新文档的内容、结构以及样式。文档能被进一步的处理，处理的结果能被整体返回到呈现页里面。</p>
<p>&nbsp;</p>
<p><strong>JavaScript</strong>

 是一个被广泛使用于客户端web开发的脚本语言。它是动态的，弱类型的，基于原型和 first-class functions。 JavaScript受很多语言影响，设计的像Java,但是为非程序员使用也很简单。这种语言最知名的就是在网站种的使用（象 客户端javascript），但也可以用来使脚本访问对象嵌入在其他应用程式（例如微软的小工具，在Windows边栏） 。</p>
<p>Javascript关键的设计原则是从Self 程序语言继承的。 (<strong>Self</strong>

 是指基于原型概念的面向对象编程语言)</p>
<p>Javascript的特性：</p>
<ul>
<li>结构化设计</li>
</ul>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JavaScript支持所有c语言结构化设计语法。</p>
<ul>
<li>动态设计</li>
</ul>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 动态输入，作为绝大多数脚本语言，类型被关联到值而非变量。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对象集合作为关联数组</p>
<dl><dt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 解释执行</dt>

</dl>


<ul>
<li>函数级设计<br />

</li>
</ul>
<dl><dt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; first-class functions</dt>

<dt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 函数是first-class；它们是对象自身。同样的，它们像其它对象一样有属性并且能通过周围环境相互影响。<br />

</dt>

<dd><br />

</dd>

<dd>内在函数和闭包</dd>

<dd>内在函数（函数定义在其它函数中）是在每次外部函数被调用时创建的，外部函数的变量只要内在函数仍然存在就继续存在，直到调用结束后（例如，如果内在函数已经被返回，它仍然可以访问外部变量）－这就是javascript的闭包机制。</dd>

</dl>


<ul>
<li>
<span class="mw-headline">基于原型</span>

</li>
</ul>
<dl><dt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 原型：js使用原型而非类定义对象属性，包括方法和继承。<br />

</dt>

</dl>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 函数作为对象构造器：Functions double as object constructors along with their typical role. Prefixing a function call with <code>new</code>

 creates a new object and calls that function with its local <code>this</code>

 keyword bound to that object for that invocation. The function's <code>prototype</code>

 property determines the new object's prototype.</p>
<dl><dd>函数作为方法<br />

</dd>

<dd><br />

</dd>

<dd>Unlike many object-oriented languages, there is no distinction between a function definition and a method
definition. Rather, the distinction occurs during function calling; a
function can be called as a method. When a function is invoked as a
method of an object, the function's local <code>this</code>

 keyword is bound to that object for that invocation.</dd>

</dl>


<ul>
<li>
 其它</li>
</ul>
<dl><dt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; run-time environment</dt>

<dd>JavaScript typically relies on a run-time environment (e.g. in a
web browser) to provide objects and methods by which scripts can
interact with &quot;the outside world&quot;. (This is not a language feature per
se, but it is common in most JavaScript implementations.)</dd>

<dt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; variadic functions</dt>

<dd>An indefinite number of parameters can be passed to a function. The function can both access them through <a href="http://en.wikipedia.org/wiki/Formal_parameter" title="Formal parameter" class="mw-redirect">formal parameters</a>

 and the local <code>arguments</code>

 object.</dd>

<dt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; regular expressions</dt>

<dd>JavaScript also supports <a href="http://en.wikipedia.org/wiki/Regular_expression" title="Regular expression">regular expressions</a>

 in a manner similar to <a href="http://en.wikipedia.org/wiki/Perl" title="Perl">Perl</a>

,
which provide a concise and powerful syntax for text manipulation that
is more sophisticated than the built-in string functions.</dd>

<dd><br />

</dd>

<dd><br />
</dd>
<dd><strong>JS框架</strong>
</dd>
</dl>
<dl><dd>目前大多数的js框架对js所做的工作主要有这样几个方面：</dd>
</dl>
<ul>
<li>对JS进行类封装，使JS更像我们所熟悉的语言，例如Ruby,Java等</li>
<li>扩展了对DOM的访问,使对DOM树的访问更简单快捷</li>
<li>统一因不同浏览器标准不同而导致的差异，降低使用成本</li>
<li>增加了一些效果<br />
</li>
</ul>
<dl><dd><br />
</dd>

</dl>
          <br/>
          <span style="color:red;">
            <a href="http://easyfinger.javaeye.com/blog/193710#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 16 May 2008 16:06:55 +0800</pubDate>
        <link>http://easyfinger.javaeye.com/blog/193710</link>
        <guid>http://easyfinger.javaeye.com/blog/193710</guid>
      </item>
      <item>
        <title>Ruby设计模式摘录</title>
        <author>easyfinger</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://easyfinger.javaeye.com">easyfinger</a>&nbsp;
          链接：<a href="http://easyfinger.javaeye.com/blog/193154" style="color:red;">http://easyfinger.javaeye.com/blog/193154</a>&nbsp;
          发表时间: 2008年05月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <ul>
<li>变化的和不变的事物分离</li>
<li>程序是接口而非实现</li>
<li>使用组合而非继承</li>
<li>委派、委派、委派</li>
</ul>
<p><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; You Ain't Gonna Need It (YAGNI).</p>
          <br/>
          <span style="color:red;">
            <a href="http://easyfinger.javaeye.com/blog/193154#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 15 May 2008 08:45:52 +0800</pubDate>
        <link>http://easyfinger.javaeye.com/blog/193154</link>
        <guid>http://easyfinger.javaeye.com/blog/193154</guid>
      </item>
      <item>
        <title>RubyOnRails插件 : AutoTags</title>
        <author>easyfinger</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://easyfinger.javaeye.com">easyfinger</a>&nbsp;
          链接：<a href="http://easyfinger.javaeye.com/blog/189996" style="color:red;">http://easyfinger.javaeye.com/blog/189996</a>&nbsp;
          发表时间: 2008年05月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          AutoTags是一个开源的plugin项目，它能为提供的内容自动生成相关的标签。使用相当简单并且提供与ActiveRecord的简单整合。这个plugin对于社交应用、社区站点和所有需要对用户产生内容打标签的网络应用都是非常有用的。<br /><br />安装和使用： http://expressica.com/auto_tags
          <br/>
          <span style="color:red;">
            <a href="http://easyfinger.javaeye.com/blog/189996#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 06 May 2008 09:12:36 +0800</pubDate>
        <link>http://easyfinger.javaeye.com/blog/189996</link>
        <guid>http://easyfinger.javaeye.com/blog/189996</guid>
      </item>
      <item>
        <title>形式追随功能 </title>
        <author>easyfinger</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://easyfinger.javaeye.com">easyfinger</a>&nbsp;
          链接：<a href="http://easyfinger.javaeye.com/blog/177236" style="color:red;">http://easyfinger.javaeye.com/blog/177236</a>&nbsp;
          发表时间: 2008年03月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          从渊源上讲，机器美学乃至"新建筑"的预兆和先驱，可以追溯到19世纪美国的芝加哥学派，路易斯·沙利文（Louis H．Sullivan，1856-1924）是芝加哥学派的中坚人物。沙利文早年就学于麻省理工学院和巴黎美术学院，当过绘图员，合开事务所，设计了100多幢摩天大楼。但是在这里，我并不想讲述他在建筑上的成就，我更愿意阐述他的理论观点。<br /><br />　　在设计史上，沙利文第一个提出了著名的"形式追随功能"的思想，这一简明扼要的短语，几乎成为在美国所听到、看到的设计哲学的唯一陈述，也成为日后德国包豪思索信赖的教义。沙利文说："自然界中的一切东西都具有一种形状，也就是说由一种形式，一种外观造型，于是就告诉我们，这是些什么以及如何和别的东西区分开来"，"哪里功能不变，形式就不变"。<br /><br />　　他认为"装饰是精神上的奢侈品，而不是必需品"，恰恰是为了美学利益，他要完全避免壮实的使用，一是人们高度集中于体态裸露、完美的建筑，就想那些强劲有力的体育健儿般的简单形式给我们带来梦寐以求的自然从容感。对沙利文来说，大自然通过结构和装饰而不需要人为添加就能显示出自己的艺术美来。这些观点，后来由他的学生莱特进一步发挥，成为20世纪前半叶工业设计的主流--功能主义的主要依据。<br /><br />　　战后到60年代是功能主义时期，一些设计师开始用功能决定性时，并导�"自然美"的注释来寻求指导方针，推测产品究竟有哪些方面决定其外表，得出的结论是使用对形态影响很大，如水壶需要把手、壶嘴和容器来盛水，电吹风需要排热，许多基本工具由它们必须操作的狭隘功能决定其形式。但主张功能影响意见产品的形态与形式，与主张功能决定最终设计不是一回事。功能主义是这样一种观念："有用物品的美是由其材料和结构的是实效和率真来界定的"。<br /><br />　　用当前的观点来看，形式追随功能的概念还需要加以限定。它起初似乎是一种正确的警告：设计师最好首先留意一种产品是如何工作的，然后再注意它的形态和外观。但是，形式追随功能转化到另外一种意思：如果一种产品功能制作得很好，它就理所当然地在外观伤痕贴切束缚，折旧毫无事实根据了。反过来讲，在我们注意到功能不能保证成功的设计的同时，忽视功能绝对是一个失败的设计（尽管不一定丑陋，这也是一个显而易见的事实）。<br /><br />　　其实形式追随功能，仅仅是一种顺序上的表述，而不是一条通往成功的捷径。形式跟随在功能后面，功能所支配的不是形式，而是一组有限度的条件，在受这些强制条件的约束中，一个设计可以采用形形色色舒服形式中的任何一种，形式上的最后定夺，有赖于所拥有的技术和材料，而最重要的一条取决于设计师的才能。<br /><br />　　形式追随功能仍然是一个记述关心次序的行之有效的方法--这个次序在将来理想社会可能不足为道，但在我们的这个社会里，却需要不断叮嘱。
          <br/>
          <span style="color:red;">
            <a href="http://easyfinger.javaeye.com/blog/177236#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 28 Mar 2008 13:47:53 +0800</pubDate>
        <link>http://easyfinger.javaeye.com/blog/177236</link>
        <guid>http://easyfinger.javaeye.com/blog/177236</guid>
      </item>
      <item>
        <title>转贴：Facebook的真实价值</title>
        <author>easyfinger</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://easyfinger.javaeye.com">easyfinger</a>&nbsp;
          链接：<a href="http://easyfinger.javaeye.com/blog/165192" style="color:red;">http://easyfinger.javaeye.com/blog/165192</a>&nbsp;
          发表时间: 2008年02月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Facebook的真实价值<br />重新理解这个让你联系熟人的网络平台价值150亿美元的理由<br /><br />作者：王兴 出处：《环球企业家》2008年1月5号刊<br /><br />Facebook最近很红，媒体报道很多。但我估计国内大多数人还没有亲身体会到它好在哪里，只知道它很贵。<br /><br />贵是显而易见的。10月底，微软花2.4亿美元买了Facebook1.6%的股份，这意味着Facebook的估值达到了惊人的150亿美元。紧随其后，李嘉诚旗下的基金会也按相近的估值向Facebook投资了6000万美元。相比之下，2006年秋天Google收购YouTube的价格是 16.5亿美元；再早一些，2005年秋天新闻集团收购MySpace的价格是5.8亿美元。单就估值来说，Facebook已远远超出了同在 Web2.0领域的几个大哥哥。<br /><br />同时，它的影响力也是巨大的。现在Facebook在美国已经给很多行业带来了威胁，比如说做婚恋交友的match.com流量呈现下降趋势，同样的，受到威胁的还有照片分享网站，甚至包括即时通讯和邮箱服务——这些应用在它的平台上都可以实现。<br /><br />但Facebook的好处不是一下子能体会到的。初看，它的首页没有任何吸引人的内容，只是几句话的文字介绍。注册之后，整个网站朴素到有点寒碜，基本功能也和其它社交网络并无区别，不外乎有个人空间、日志、相册、群组等等。就算你很有诚意想要认真体验一下，如果没有一帮真的认识的朋友在 Facebook上，恐怕也很难找到感觉。<br /><br />这正是Facebook的特点，它不是一个让你认识陌生人的交友网站，而是一个联系你和身边朋友的网络交流平台。这就像电话一样：如果只有你一个人有电话，那么它并没有用处；只有当你需要联系的人也装了电话之后，电话的用处才体现出来；而且，有电话的人越多，电话的用处越大。这就是“网络效应”。 Facebook也是如此，用的人越多，它的用处越大。<br /><br />简单说来，Facebook最大的魅力和威力正是提供了一个平台——以个人为中心在网上真实全面的展开生活的平台。它先从“真实”入手，然后通过提供开放接口来实现“全面”。真实很重要。比如大型网络游戏也是一个虚拟社区。一个上网的人可以同时用多个虚拟社区，可以相对容易地从一个虚拟社区迁移到另一个虚拟社区，但是多数人可能只会用一个“真实”的社区。<br /><br />事实上，我对Facebook的理解也是一步一步来的。<br /><br />2003年冬天，我在网上闲逛时看到了friendster.com，开始接触SNS。整个2004年和2005年，我对国内国外SNS的动向始终保持着关注，因此我在2004年就听说了Facebook，当时我以为这只是又一个SNS，和其他并无二致。2005年上半年时，我利用我当时还没过期的美国大学邮箱udel.edu注册了Facebook帐号。进去逛了一圈之后，我依然不觉得它有什么过人之处。事后想来，正是因为那时我在美国的同学要么已经毕业了，要么就还没用这个，所以没有任何感觉。毕竟在Facebook上，如果只是看，而没有参与其中，确实很难找到感觉。<br /><br />2005年下半年，Facebook虽然势头没能超过MySpace，但是已经算是发展得很不错了。我们那时候回过头来开始仔细端详 Facebook，觉得它有两大优势，第一是它是一个真实的人际网络，第二是它有一个高质量的人群，用户都是大学生，非常纯粹，所以算是看出了一点它的价值。不过它当时的功能确实是非常简单，连相册都没有。它都是跟随着学期的更迭来做一些升级和改版，比如在2005年9月的那个新版本才做了相册。<br /><br />从本质上而言，Facebook就是一个通讯平台，可以高效传播信息。在美国，年纪大一些的人都用电子邮件进行沟通，年轻一些的用即时通讯比较多，更年轻的就喜欢泡社交网络了。因为最常见的即时通讯是闭合的联络，仅仅是一对一，其他人看不到，而社交网络有着更大的开放性。<br /><br />对于美国学生，Facebook也是一个很熟悉的名字。它最初指的是大学里面的一本小册子，相当于新生必读那样的，上面都是新生的照片、介绍等信息。这就使得这个网站一出来，不用太多去强调其真实性，大家很容易就理解了，就把真实的资料填上去了。而它可以说也不需要传统的营销和推广方式。在哈佛， Facebook开始就是往每个宿舍楼群发邮件，大家一上去能看到认识的人，还可以把一个链接群发给一些即时通讯上的好友，这样用户的人际网络其实就移到 Facebook上来了。<br /><br />而校内的发展虽然和Facebook大方向一致，但回过头来总结，发展方式却有很大区别的，我们很大程度上是打着Facebook的旗号在做 MySpace。为什么这么说呢，最重要的区别是：到底是把之前就存在的关系迁移到这个平台上来，还是在这个平台上建立新关系。事实证明，前者是更稳定也是更具长远发展性的。<br /><br />当时做校内时，为了提高用户活跃度，我们做了很多Facebook没有的功能，比如你可以看到其他学校学生的名字和资料、能看到谁看了你的页面及校园人气之星等等<br /><br />这能让你认识很多在现实生活中不认识的人，使你快速添加很多好友，短期内对提高用户使用的热度很有效。但是这种新鲜感持续的时间不会太长，因为在这上面认识的人，关系还是不牢，时间长了热度过了也就觉得没意思了。就像QQ一样，大家开始都在上面加很多不认识的人、随意聊天，但是时间一久就发现没意思，但是上面所加的人已经很乱了。这种情况下，有些人愿意认真去清理好友名单，有些人可能就直接选择迁移到其他即时通讯上了。<br /><br />相比之下，Facebook更注重隐私。就是说，除了你所认识的好友以及和你同校的人，你看不到其他人的列表和信息。同时，它也不推任何明星，哪怕是草根明星。<br /><br />因此，校内那时的做法更像是MySpace而不是Facebook。这也能解释为什么MySpace的崛起速度比Facebook要快得多——它比 Facebook成立只不过早半年，但是2005年的时候它已经非常火了，被新闻集团5.8亿美元买下来。但是长远来看，这种仅仅依靠网络交友的热度是容易产生疲劳感的，这也是它今年以来发展逐渐减缓的原因。<br /><br />这些东西其实也是我在2007年的时候才逐渐想明白的。所以现在做海内，一方面是采用好友邀请制，这样可以保证每个用户一上来就已经有认识的朋友了；另一方面用户可以通过导入MSN和gtalk的联系人列表来查找已经在海内上的好友。其实人际关系网是已经存在的，关键在于如何将它转移到网站上。<br /><br />再回过头来说Facebook，它的运营者很有耐心，每一步都不紧不慢但是很有突破性。比如，2006年的时候，我们校内网的团队和顾问谢文也讨论过，Facebook会以什么样的方式向学校外扩张，但当时我们没有想到它后来所用的这种方式，也就是提出一个新的更大的概念“社交网络”，把原来的“大学”变成四类“社交网络”中的一类，其余三类则是“高中”、“公司”和“同地区”。这样既能扩大用户范围，又能继续维持社区的秩序。<br /><br />再比如，它后来添加了“news feed”的功能。这很重要，能大大提高朋友之间通讯的效率。如果用户上一个社交网站看不到新内容的话，他/她很可能下次登录的时间间隔会更长，但是 “news feed”能让这种新的信息尽可能多。用户能一目了然的看到好友们在发生什么新的动作。<br /><br />开放平台就更是大动作了，我看到的时候也很惊讶。在那之前，大多数人认为Facebook只是一个社交网站，和MySpace、Orkut、 Friendster一样。在这个平台发布之后，人们才发现Facebook有着超出其他社交网站的愿景——以一个更底层的网络操作系统的姿态出现。<br /><br />如何来理解这种底层的概念？我觉得真实的社区网络相当于一个城市，在它基础上建立起来各种功能才更有价值。比如说照片分享，有两种情况，第一种需要一流的照片，能吸引各种各样的人。第二种是那是你认识的朋友，你才会对他/她的照片有兴趣。这个差别很重要。<br /><br />不过，美国和中国的差异还是很大。比如在Facebook上“活动”这个功能用得非常多，大家常常通过Facebook联络开party，而这种线下的party又让新的用户加入进来，使得用户的雪球越滚越大。而在校内上，“活动”的作用很小，这可能和中美两国大学生不同的生活方式有关。再比如，在中国，QQ群对于社交网络来说是一个很大的威胁。因为在群里，A和B说话，C也可以看到，这就比原来一对一的即时通讯更有开放性。而且，一个用户认识一个朋友，就能被邀请进入一个群、认识这个群里其他的人。<br /><br />总的来说，在国内，这种真实的社交网络氛围可能还需要几年时间才能培养起来，这是一件需要耐心的事。<br /><br />（作者为社区网站校内、饭否、海内的创始人）
          <br/>
          <span style="color:red;">
            <a href="http://easyfinger.javaeye.com/blog/165192#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 26 Feb 2008 16:09:29 +0800</pubDate>
        <link>http://easyfinger.javaeye.com/blog/165192</link>
        <guid>http://easyfinger.javaeye.com/blog/165192</guid>
      </item>
      <item>
        <title>使用acts_as_ferret时碰到的问题</title>
        <author>easyfinger</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://easyfinger.javaeye.com">easyfinger</a>&nbsp;
          链接：<a href="http://easyfinger.javaeye.com/blog/157933" style="color:red;">http://easyfinger.javaeye.com/blog/157933</a>&nbsp;
          发表时间: 2008年01月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          安装acts_as_ferret时，gem没有自动安装ferret 插件,调用时会报:no such file to load -- ferret 错误， 必须要安装ferret gem .<br />在windows中必须安装ferret的windows版本，如果安装非windows版本会报no such file to load -- ferret_ext 错误，这个错误是因为扩展部分的C代码没有被编译导致的。
          <br/>
          <span style="color:red;">
            <a href="http://easyfinger.javaeye.com/blog/157933#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 21 Jan 2008 10:07:38 +0800</pubDate>
        <link>http://easyfinger.javaeye.com/blog/157933</link>
        <guid>http://easyfinger.javaeye.com/blog/157933</guid>
      </item>
      <item>
        <title>ROR多版本控制的问题</title>
        <author>easyfinger</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://easyfinger.javaeye.com">easyfinger</a>&nbsp;
          链接：<a href="http://easyfinger.javaeye.com/blog/152196" style="color:red;">http://easyfinger.javaeye.com/blog/152196</a>&nbsp;
          发表时间: 2008年01月01日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在ROR中如何实现多版本控制,在ROR的wiki中提供了一个acts_as_versioned的插件,大家一起来谈谈还有哪些插件(包括wiki的插件),它们的优劣.
          <br/>
          <span style="color:red;">
            <a href="http://easyfinger.javaeye.com/blog/152196#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 01 Jan 2008 21:46:27 +0800</pubDate>
        <link>http://easyfinger.javaeye.com/blog/152196</link>
        <guid>http://easyfinger.javaeye.com/blog/152196</guid>
      </item>
      <item>
        <title>关于ROR代码的一点思考</title>
        <author>easyfinger</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://easyfinger.javaeye.com">easyfinger</a>&nbsp;
          链接：<a href="http://easyfinger.javaeye.com/blog/151979" style="color:red;">http://easyfinger.javaeye.com/blog/151979</a>&nbsp;
          发表时间: 2007年12月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          1.不做重复的事：   一件事如果前面已经做过了，就不要重复它。<br />2. 不做无效的事： 如果所做的工作对本身想实现的事没有帮助就不要做。<br />3. 应该保证任何路都是畅通的： 明确的知道每条通路，如果有断头路就出问题了。
          <br/>
          <span style="color:red;">
            <a href="http://easyfinger.javaeye.com/blog/151979#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 30 Dec 2007 17:35:28 +0800</pubDate>
        <link>http://easyfinger.javaeye.com/blog/151979</link>
        <guid>http://easyfinger.javaeye.com/blog/151979</guid>
      </item>
      <item>
        <title>关于自定义错误处理</title>
        <author>easyfinger</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://easyfinger.javaeye.com">easyfinger</a>&nbsp;
          链接：<a href="http://easyfinger.javaeye.com/blog/151221" style="color:red;">http://easyfinger.javaeye.com/blog/151221</a>&nbsp;
          发表时间: 2007年12月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在项目中很多情况希望能自定义处理某些异常情况，通常采用重写rescue_action方法。一般网上能看到的代码都是以下的形式：<br /><br /><pre name="code" class="java">
  def rescue_action(exception)
    rescue_action_in_public(exception)
  end

  def rescue_action_in_public(exception)
    logger.error("rescue_action_in_public executed")
    case exception
      when ActiveRecord::RecordNotFound, ActionController::RoutingError,  
      ActionController::UnknownAction,ActionController::UnknownAction
      logger.error("404 displayed")
      render(:file  => "#{RAILS_ROOT}/public/404.rhtml",:layout=>'error',
      :status => "404 Not Found")
    else
      logger.error("500 displayed")
      render(:file  => "#{RAILS_ROOT}/public/500.rhtml",:layout=>'error',
      :status => "500 Error")
    end
  end  
</pre><br />这样经常会报：<br />uninitialized constant ActionWebService::Dispatcher::ActionController::RoutingError错误，解决的办法是在ActionController前加::， 正确的格式应该如下：<br /><br /><pre name="code" class="java">
    case exception
      when ActiveRecord::RecordNotFound, ::ActionController::RoutingError,  
      ::ActionController::UnknownAction,::ActionController::UnknownAction
      logger.error("404 displayed")
      render(:file  => "#{RAILS_ROOT}/public/404.rhtml",:layout=>'error',
      :status => "404 Not Found")
    else
      logger.error("500 displayed")
      render(:file  => "#{RAILS_ROOT}/public/500.rhtml",:layout=>'error',
      :status => "500 Error")
    end
</pre>
          <br/>
          <span style="color:red;">
            <a href="http://easyfinger.javaeye.com/blog/151221#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 27 Dec 2007 14:01:46 +0800</pubDate>
        <link>http://easyfinger.javaeye.com/blog/151221</link>
        <guid>http://easyfinger.javaeye.com/blog/151221</guid>
      </item>
      <item>
        <title>解决使用RSpec测试flash.now</title>
        <author>easyfinger</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://easyfinger.javaeye.com">easyfinger</a>&nbsp;
          链接：<a href="http://easyfinger.javaeye.com/blog/151106" style="color:red;">http://easyfinger.javaeye.com/blog/151106</a>&nbsp;
          发表时间: 2007年12月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          flash.now在正常情况下当 action结束时会被清理，所以在测试中无法获取它，如何在RSpec中获取flash.now，我们需要通过重写flash来得到，在spec_helper .rb文件中加入一下代码就可以在测试中测试flash.now：<br /><pre name="code" class="java">
module ActionController
  module Flash
    class FlashHash
      def initialize
        @hash = {}
        @now_hash = {}
      end
      
      def [](key)
        @hash[key]
      end
      
      def []=(key, obj)
        @hash[key] = obj
      end
      
      def discard(k = nil)
        initialize
      end
      
      def now
        @now_hash
      end
      
      def update(hash)
        @hash.update(hash)
      end
      
      def sweep
        # do nothing
      end
    end
  end
end
</pre>
          <br/>
          <span style="color:red;">
            <a href="http://easyfinger.javaeye.com/blog/151106#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 27 Dec 2007 08:56:59 +0800</pubDate>
        <link>http://easyfinger.javaeye.com/blog/151106</link>
        <guid>http://easyfinger.javaeye.com/blog/151106</guid>
      </item>
  </channel>
</rss>