<?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>静养心智-动抒豪情™ - 王聪明的日志 &#187; twitter</title>
	<atom:link href="http://wangcongming.info/tag/twitter/feed/" rel="self" type="application/rss+xml" />
	<link>http://wangcongming.info</link>
	<description>灵 动 生 活　　点 滴 感 悟</description>
	<lastBuildDate>Tue, 27 Dec 2011 06:23:47 +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>“SNS”和“微博”——理念相克，试图揉合可能适得其反</title>
		<link>http://wangcongming.info/2010/11/sns%e5%92%8c%e5%be%ae%e5%8d%9a%e2%80%94%e7%90%86%e5%bf%b5%e7%9b%b8%e5%85%8b%ef%bc%8c%e8%af%95%e5%9b%be%e6%8f%89%e5%90%88%e5%8f%af%e8%83%bd%e9%80%82%e5%be%97%e5%85%b6%e5%8f%8d/</link>
		<comments>http://wangcongming.info/2010/11/sns%e5%92%8c%e5%be%ae%e5%8d%9a%e2%80%94%e7%90%86%e5%bf%b5%e7%9b%b8%e5%85%8b%ef%bc%8c%e8%af%95%e5%9b%be%e6%8f%89%e5%90%88%e5%8f%af%e8%83%bd%e9%80%82%e5%be%97%e5%85%b6%e5%8f%8d/#comments</comments>
		<pubDate>Mon, 29 Nov 2010 17:40:58 +0000</pubDate>
		<dc:creator>Wang Congming</dc:creator>
				<category><![CDATA[胡言乱语]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[移动互联网]]></category>
		<category><![CDATA[豆瓣]]></category>

		<guid isPermaLink="false">http://wangcongming.info/?p=642</guid>
		<description><![CDATA[SNS 和 Microblog 都已不是新鲜话题了，但有一个势头，SNS 想整合微博、微博想整合 SNS，我认为这不是好主意，可能会适得其反。 &#160; SNS 是什么？是关系，是加好友。七大姑八大姨、同学发小、客户伙伴……总之，你认识的人都得加上。毕竟，亲戚朋友多了总是好事，朋友多了路好走，生意人的话说，构建关系网。 Microblog 是什么？是获取信息的途径。用来关注那些可能并不认识，但他们说的话使你感兴趣，能给你带来信息、思考或知识的人。 于是，冲突产生了： SNS 应该鼓励实名化，微博随便匿名； SNS 双向确认好友关系，微博应该单向关注； SNS 鼓励多加好友、只要是认识的人；微博推荐物以类聚，不介意事先是否认识； …… &#160; 拿 Twitter 这个显而易见的例子，如果我的某个发小在上面，我可能不会 fo 他。原因很简单，经过多年的各自发展，也许我们感情仍然很好，但隔行如隔山，我们可能很难有共同话题了。他发的他们那个行业很有意思的段子，可能我会觉得索然无味。上推是为了看一些有意思、对口味的信息，所以我不 fo 他。 那么，另外一个例子——豆瓣。它的社区应该是 Facebook 型的还是 Twitter 型的？设想一下，因为你在豆瓣把你的姑姑姨姨们加为了好友，某天你想买本 IT 书籍的时候，豆瓣会向你推荐某某菜谱；某天你想欣赏科幻电影的时候，它向你推荐xx韩剧；……是何感触？所以豆瓣的社区也应该是 Twitter 型的（大概一两年前，豆瓣有一个改版，似乎没经受住 Facebook 的诱惑，在原有的“关注”基础上，又增加了个加好友的功能。当时我相当讨厌，就离它远了点，后来的某个时刻，发现这个功能又被砍掉了，幸甚！）。 &#160; 总结起来，凡是你想从所关注的人中获取有效信息的；或者系统根据所关注的人，通过算法自动向用户推荐有价值信息的，都应该是微博型的社区。 &#160; 这是我不喜欢 Facebook 的原因之一（07 年还专门 写了篇 blog 表达对 Facebook 的各种无爱），一堆跟兴趣无关的人全加为好友，用来干嘛？没有目的、没有用处，为了加好友而加好友？ 国内的 SNS 如开心网等已经出现颓势，原因我想，它们没有核心的应用，是靠娱乐与游戏撑起来的。但用户的新鲜感是会很快退潮的，要持续不断地开发满足用户新鲜感的新游戏需要极大的创新与研发成本（即使玩游戏，也不应该在 SNS 中玩，因为大家虽然加了好友，但兴趣不一致，不如专门的爱好者社区）。 [...]]]></description>
			<content:encoded><![CDATA[<p>SNS 和 Microblog 都已不是新鲜话题了，但有一个势头，SNS 想整合微博、微博想整合 SNS，我认为这不是好主意，可能会适得其反。
<p>&nbsp;</p>
<p>SNS 是什么？是关系，是加好友。七大姑八大姨、同学发小、客户伙伴……总之，你认识的人都得加上。毕竟，亲戚朋友多了总是好事，朋友多了路好走，生意人的话说，构建关系网。</p>
<p>Microblog 是什么？是获取信息的途径。用来关注那些可能并不认识，但他们说的话使你感兴趣，能给你带来信息、思考或知识的人。 </p>
<p>于是，冲突产生了：</p>
<ul>
<li>SNS 应该鼓励实名化，微博随便匿名；</li>
<li>SNS 双向确认好友关系，微博应该单向关注；</li>
<li>SNS 鼓励多加好友、只要是认识的人；微博推荐物以类聚，不介意事先是否认识；</li>
<li>……</li>
</ul>
<p>&nbsp;</p>
<p>拿 Twitter 这个显而易见的例子，如果我的某个发小在上面，我可能不会 fo 他。原因很简单，经过多年的各自发展，也许我们感情仍然很好，但隔行如隔山，我们可能很难有共同话题了。他发的他们那个行业很有意思的段子，可能我会觉得索然无味。上推是为了看一些有意思、对口味的信息，所以我不 fo 他。</p>
<p>那么，另外一个例子——豆瓣。它的社区应该是 Facebook 型的还是 Twitter 型的？设想一下，因为你在豆瓣把你的姑姑姨姨们加为了好友，某天你想买本 IT 书籍的时候，豆瓣会向你推荐某某菜谱；某天你想欣赏科幻电影的时候，它向你推荐xx韩剧；……是何感触？所以豆瓣的社区也应该是 Twitter 型的（大概一两年前，豆瓣有一个改版，似乎没经受住 Facebook 的诱惑，在原有的“关注”基础上，又增加了个加好友的功能。当时我相当讨厌，就离它远了点，后来的某个时刻，发现这个功能又被砍掉了，幸甚！）。</p>
<p>&nbsp;</p>
<p>总结起来，凡是你想从所关注的人中获取有效信息的；或者系统根据所关注的人，通过算法自动向用户推荐有价值信息的，都应该是微博型的社区。
<p>&nbsp;</p>
<p>这是我不喜欢 Facebook 的原因之一（07 年还专门 <a href="http://wangcongming.info/2007/12/19/%E5%87%91%E5%87%91-sns-%E7%9A%84%E7%83%AD%E9%97%B9%EF%BC%8D%EF%BC%8D%E8%AE%BAfacebook%E7%9A%84%E5%BF%85%E7%84%B6%E6%B2%A1%E8%90%BD/">写了篇 blog 表达对 Facebook 的各种无爱</a>），一堆跟兴趣无关的人全加为好友，用来干嘛？没有目的、没有用处，为了加好友而加好友？</p>
<p>国内的 SNS 如开心网等已经出现颓势，原因我想，它们没有核心的应用，是靠娱乐与游戏撑起来的。但用户的新鲜感是会很快退潮的，要持续不断地开发满足用户新鲜感的新游戏需要极大的创新与研发成本（即使玩游戏，也不应该在 SNS 中玩，因为大家虽然加了好友，但兴趣不一致，不如专门的爱好者社区）。</p>
<p>Facebook 至今还挺坚挺，我想一是世界范围内的闲人比较多；二是它的开放平台的功劳。国内的 SNS 是自己主刀开发游戏，所以过了一段时间，创新和研发能力跑不过用户的新鲜感；Facebook 是世界范围内的开发商帮它开发，一批开发商抗不住了，会有另一批开发商顶上来。不管最终如何，我始终不太喜欢这种模式。
<p>&nbsp;</p>
<p>当然，我并非觉得 SNS 完全没有搞头。回想一下，其实手机的通讯录就是一个 SNS 应用的雏形。手机通讯录没必要存在吗？当然 非 常 有 必 要！它实现了用户的初衷——SNS 是为了联系。联系自然是手机最方便，难道要跑网站上去发站内？所以我觉得 SNS 的价值应该体现在移动互联网上，而现在的 SNS 都比较无聊。
<p>&nbsp;</p>
<p>后记：刚发过一条推：</p>
<blockquote><p>前几年，我订阅了很多互联网大佬的博客，带着崇敬的心情探头阅读这个行业。最近，我了解了一下大佬们的动向，发现他们主导的产品都关门鸟～。互联网跟体育一样，评论员当不好运动员。我还当不了评论员，努力成为一名运动员ing，嗯～！<br />
<a href="http://twitter.com/wcm/status/8904614644551680">http://twitter.com/wcm/status/8904614644551680</a>
</p></blockquote>
<p>唔，敲自己脑袋，不要评论，要运动！ @_@</p>
]]></content:encoded>
			<wfw:commentRss>http://wangcongming.info/2010/11/sns%e5%92%8c%e5%be%ae%e5%8d%9a%e2%80%94%e7%90%86%e5%bf%b5%e7%9b%b8%e5%85%8b%ef%bc%8c%e8%af%95%e5%9b%be%e6%8f%89%e5%90%88%e5%8f%af%e8%83%bd%e9%80%82%e5%be%97%e5%85%b6%e5%8f%8d/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Twitter API 应用</title>
		<link>http://wangcongming.info/2007/04/twitter-api-%e5%ba%94%e7%94%a8/</link>
		<comments>http://wangcongming.info/2007/04/twitter-api-%e5%ba%94%e7%94%a8/#comments</comments>
		<pubDate>Sat, 28 Apr 2007 11:12:00 +0000</pubDate>
		<dc:creator>Wang Congming</dc:creator>
				<category><![CDATA[Geek Tweak]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://wangcongming.info/2007/04/28/twitter-api-%e5%ba%94%e7%94%a8/</guid>
		<description><![CDATA[题外话： &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; 我的需求很简单，就是将最近的几条twitter信息显示在blog上。 首先想到的办法就是，直接用blogger提供的feed功能。可是，输出的每条信息前都有个“Wang Congming:”长长的前缀，不喜欢。而且，blogger每抓取一次feed好像要缓存挺长时间，而twitter应该是实效性比较强的，恩～。 然后，就想到用twitter官方提供的Badges。However，他们给的不是我想要的。所以，只好去看看API说明，自己动手。 小小原理： &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; twitter支持四种格式的数据输出：xml, RSS, ATOM, JSON，以及 GET 和 POST 两种方法。当然，只是查询一下不需要授权的数据，自然用不上POST。所以，只需要GET一个JSON就行，通过URL传递适当的参数，得到我们需要的数据。 传递过来的 json 是一个函数，而我们需要的数据作为函数的参数。唯一要做的，就是事先定义这样一个函数，告诉它该怎么执行，怎么显示其中的数据。至于函数名，GET 时由自己用 callback 参数指定。 Click the expand button to read full text&#8230; 数据结构 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; 返回的数据类似以下结构： twitterCallback([ { "created_at":"Sat Apr 28 15:45:24 +0000 2007", "text":"信息的内容～", "id":43160262/*该条信息的数字编号*/, "user":{ "name":"Wang Congming", "profile_image_url":"http:...", "description":"自我介绍", "location":"BeiJing", "screen_name":"WCM/*用户名*/", "url":"http:...", "id":5002701/*用户的数字编号*/, "protected":false } }, [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-weight: bold;">题外话：</span><br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
我的需求很简单，就是将最近的几条twitter信息显示在blog上。</p>
<p>首先想到的办法就是，直接用blogger提供的feed功能。可是，输出的每条信息前都有个“Wang Congming:”长长的前缀，不喜欢。而且，blogger每抓取一次feed好像要缓存挺长时间，而twitter应该是实效性比较强的，恩～。</p>
<p>然后，就想到用twitter官方提供的Badges。However，他们给的不是我想要的。所以，只好去看看API说明，自己动手。</p>
<p><span style="font-weight: bold;">小小原理：</span><br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
twitter支持四种格式的数据输出：xml, RSS, ATOM, JSON，以及 GET 和 POST 两种方法。当然，只是查询一下不需要授权的数据，自然用不上POST。所以，只需要GET一个JSON就行，通过URL传递适当的参数，得到我们需要的数据。</p>
<p>传递过来的 json 是一个函数，而我们需要的数据作为函数的参数。唯一要做的，就是事先定义这样一个函数，告诉它该怎么执行，怎么显示其中的数据。至于函数名，GET 时由自己用 callback 参数指定。</p>
<p><span class="note_text">Click the expand button to read full text&#8230;</span></p>
<p><span style="font-weight: bold;">数据结构</span><br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
返回的数据类似以下结构：</p>
<pre>twitterCallback([   {      "created_at":"Sat Apr 28 15:45:24 +0000 2007",      "text":"信息的内容～",      "id":43160262/*该条信息的数字编号*/,      "user":{         "name":"Wang Congming",         "profile_image_url":"http:...",         "description":"自我介绍",         "location":"BeiJing",         "screen_name":"WCM/*用户名*/",         "url":"http:...",         "id":5002701/*用户的数字编号*/,         "protected":false      }   },   {      /* 第2/3/4...条信息，重复以上形式 */   }]);</pre>
<p><span style="font-weight: bold;">完成</span><br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
根据以上数据，得代码如下：</p>
<pre>&lt;ul id="my_twitter"&gt;&lt;li&gt;Loading...&lt;/li&gt;&lt;/ul&gt;

&lt;script type="text/javascript"&gt;function relative_time(time_value) {   var time_correct = time_value.split('+0000');   var parsed_date = Date.parse(time_correct[0]+'GMT+0000'+time_correct[1]);   var relative_to = new Date();   var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);   if(delta &lt; 60) return 'less than a minute ago';   else if(delta &lt; 120) return 'about a minute ago';   else if(delta &lt; (45*60)) return (parseInt(delta / 60)).toString() + ' minutes    ago';   else if(delta &lt; (90*60)) return 'about an hour ago';   else if(delta &lt; (24*60*60)) return 'about ' + (parseInt(delta / 3600)).toString() + ' hours ago';   else if(delta &lt; (48*60*60)) return '1 day ago';   else return (parseInt(delta / 86400)).toString() + ' days ago';}function twitterCallback(obj){   var twitterHTML = '';   for(var i=0; i&lt;(obj.length); i++){      twitterHTML += '&lt;li&gt;&lt;span class="item-title"&gt;&lt;a href="http://twitter.com/wcm/statuses/'+obj[i].id+'"&gt;' + obj[i].text + '&lt;/a&gt;&lt;/span&gt;&lt;span class="item-date"&gt; - ' + relative_time(obj[i].created_at) + '&lt;/span&gt;&lt;/li&gt;';   }   document.getElementById('my_twitter').innerHTML = twitterHTML;}&lt;/script&gt;

&lt;script src="http://twitter.com/statuses/user_timeline/5002701.json?callback=twitterCallback&amp;count=5" type="text/javascript"&gt;&lt;/script&gt;</pre>
<p>效果如右侧～</p>
<p><span style="font-weight: bold;">总结一下</span><br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
1、以上代码，如果去掉ul间的“&lt;li&gt;Loading&#8230;&lt;/li&gt;”，然后存为一个单独的文件，将无法正常显示，加上后又变为正常。当然，并不限于Loading&#8230;，也并不限于ul之间。也就是说，只要在任何可以的地方，加上任何字符，就OK了，不加就不行，IE和ff均如此，不理解……。</p>
<p>2、twitter输出的”+0000&#8243;时区没有指名是哪个标准时间（虽然没多大差别），这将导致IE的Date.parse语法分析出错，所以先在”+0000&#8243;前加上GMT再分析。</p>
<p>3、”&#8230;/5002701.json?callback=twitterCallback&amp;count=5&#8243;。这里的5002701要换成自己的编号；twitterCallback即是指定的返回函数名，可自由命名；除了count外，还有其他筛选条件，如指定起始日期的since等。</p>
<p>4、<a href="http://groups.google.com/group/twitter-development-talk/web/api-documentation">Twitter API官方文档</a></p>
<p>关于JSON (JavaScript Object Notation): <a href="http://www.json.org/json-zh.html">http://www.json.org/json-zh.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://wangcongming.info/2007/04/twitter-api-%e5%ba%94%e7%94%a8/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

