<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0">

<channel>
	<title>康爷的博客</title>
	
	<link>http://kangye.org</link>
	<description>专注于App Engine</description>
	<lastBuildDate>Wed, 28 Apr 2010 14:56:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/areyoulookon" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="areyoulookon" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://superfeedr.com/hubbub" /><item>
		<title>用App Engine开发博客系统(前言)</title>
		<link>http://kangye.org/app-engine-blog-system</link>
		<comments>http://kangye.org/app-engine-blog-system#comments</comments>
		<pubDate>Wed, 28 Apr 2010 14:55:09 +0000</pubDate>
		<dc:creator>康爷</dc:creator>
				<category><![CDATA[网站开发]]></category>
		<category><![CDATA[App Engine]]></category>

		<guid isPermaLink="false">http://kangye.org/?p=41520</guid>
		<description><![CDATA[要想让大家学习如何使用App Engine开发，其实总结里的文章完全可以入门了，不过如果能有实际的例子，大家学起来肯定更带劲。所以，根据Google大牛Nick和Facebook大牛Bret的文章和代码，准备就如何使用Google App Engine开发博客系统做一个专题。在学完本专题之后，你就可以自己在Google App Engine上面搭建博客，并根据自己的需求修改代码了。]]></description>
			<content:encoded><![CDATA[<p>前天总结了我写过的<a href="http://kangye.org/past-app-engine-articles">关于Google App Engine的博客</a>，和forrest ye闲聊时，说可以做App Engine的咨询工作了呵呵，<span style="color: #ff0000;">如果你想用App Engine或者想了解情况</span>，欢迎向我咨询，毕竟我也是陪着App Engine的发展，一路关注下来的～</p>
<p>要想让大家学习如何使用App Engine开发，其实总结里的文章完全可以入门了，不过如果能有实际的例子，大家学起来肯定更带劲。所以，根据Google大牛Nick和Facebook大牛Bret的文章和代码，准备就如何使用Google App Engine开发博客系统做一个专题。在学完本专题之后，你就可以自己在Google App Engine上面搭建博客，并根据自己的需求修改代码了。</p>
<p>下面说一下这个专题的几个特点:</p>
<ul>
<li><strong>使用Google App Engine开发</strong></li>
<li><strong>使用Facebook的开源框架Tornado</strong></li>
<li><strong>使用HTML5与CSS3</strong></li>
<li><strong>加入最新的WEB 2.0功能</strong></li>
</ul>
<p>好了，大家期待吧～</p>
]]></content:encoded>
			<wfw:commentRss>http://kangye.org/app-engine-blog-system/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>已往关于GAE的文章合集</title>
		<link>http://kangye.org/past-app-engine-articles</link>
		<comments>http://kangye.org/past-app-engine-articles#comments</comments>
		<pubDate>Mon, 26 Apr 2010 15:56:10 +0000</pubDate>
		<dc:creator>康爷</dc:creator>
				<category><![CDATA[日积月累]]></category>
		<category><![CDATA[App Engine]]></category>

		<guid isPermaLink="false">http://kangye.org/?p=41515</guid>
		<description><![CDATA[嗯，今天整理一下已往写过的关于App Engine的文章，没看过的可以看看。]]></description>
			<content:encoded><![CDATA[<p>嗯，今天整理一下已往写过的关于App Engine的文章，没看过的可以看看。</p>
<p>App Engine应用·</p>
<h2><a rel="bookmark" href="http://kangye.org/chinese-app-engine-twitter">国人开发的几个基于Google App Engine的Twitter应用</a></h2>
<h2><a rel="bookmark" href="http://kangye.org/google-app-engine-case-study">[视频]Google App Engine成功案例分析-Giftag</a></h2>
<h2><a rel="bookmark" href="http://kangye.org/google-app-engine-good-site">Google App Engine网站推荐</a></h2>
<h2><a rel="bookmark" href="http://kangye.org/spy-app-engine">Google App Engine优秀网站介绍：spy</a></h2>
<p><span id="more-41515"></span><br />
App Engine经验</p>
<h2><a rel="bookmark" href="http://kangye.org/3p%e6%9c%ba%e5%99%a8%e4%ba%ba%e5%88%b6%e4%bd%9c%e5%b0%8f%e7%bb%93">3P机器人制作小结</a></h2>
<p>App Engine教程</p>
<h2><a rel="bookmark" href="http://kangye.org/show-visitors-greeting">[跟康爷学GAE]显示最新访客留言</a></h2>
<h2><a rel="bookmark" href="http://kangye.org/store-user-greeting">[跟康爷学GAE]存储用户的留言（附GAE数据结构的介绍）</a></h2>
<h2><a rel="bookmark" href="http://kangye.org/form-and-how-to-get-data">[跟康爷学GAE]访客留言的Form和表单获取</a></h2>
<h2><a rel="bookmark" href="http://kangye.org/gae-show-login-user">[跟康爷学GAE]显示当前访问的登录用户</a></h2>
<h2><a rel="bookmark" href="http://kangye.org/gae-hello-world-3">[跟康爷学GAE]GAE的Hello World程序(3)</a></h2>
<h2><a rel="bookmark" href="http://kangye.org/gae-hello-world-2">[跟康爷学GAE]GAE的Hello World程序(2)</a></h2>
<h2><a rel="bookmark" href="http://kangye.org/gae-hello-world-1">[跟康爷学GAE]GAE的Hello World程序(1)</a></h2>
<h2><a rel="bookmark" href="http://kangye.org/table-of-content-of-tortial">[跟康爷学GAE]GAE教程计划的目录</a></h2>
<h2><a rel="bookmark" href="http://kangye.org/gae-some-prepration">[跟康爷学GAE]一些准备工作</a></h2>
<h2><a rel="bookmark" href="http://kangye.org/reg-gae-update">[跟康爷学GAE]如何注册Google App Engine(修改)</a></h2>
<h2><a rel="bookmark" href="http://kangye.org/how-to-reg-gae">[跟康爷学GAE]如何注册Google App Engine</a></h2>
<h2><a rel="bookmark" href="http://kangye.org/app-engine-book-project">Google App Engine教程计划</a></h2>
<h2><a rel="bookmark" href="http://kangye.org/full-google-app-engine-guide">中文版Google App Engine入门指南(教程完整版）</a></h2>
<h2><a rel="bookmark" href="http://kangye.org/google-app-engine-guide">中文版Google App Engine入门指南</a></h2>
<h2><a rel="bookmark" href="http://kangye.org/%e5%85%b3%e4%ba%8egoogle-app-engine%e7%9a%84http-header%e9%95%bf%e5%ba%a6%e9%97%ae%e9%a2%98">关于Google App Engine的HTTP header长度问题</a></h2>
<h2><a rel="bookmark" href="http://kangye.org/google-app-engine-the-3rd-day">Google App Engine第三天资料及笔记</a></h2>
<h2><a rel="bookmark" href="http://kangye.org/google-app-engine-study-2nd-day">Google App Engine第二天资料及笔记</a></h2>
<h2><a rel="bookmark" href="http://kangye.org/google-app-engine-1st-day">Google App Engine第一天资料</a></h2>
<p>App Engine新闻</p>
<h2><a rel="bookmark" href="http://kangye.org/google-app-engine-for-java-sdk-122%e5%8f%91%e5%b8%83">Google App Engine for Java SDK 1.2.2发布</a></h2>
<h2><a rel="bookmark" href="http://kangye.org/gae-java">App Engine正式支持JAVA</a></h2>
<h2><a rel="bookmark" href="http://kangye.org/app-engine-limit-update">Google App Engine重大更新：缩小限制</a></h2>
<h2><a rel="bookmark" href="http://kangye.org/gae-sdk-119">Google App Engine的最新更新（090212）</a></h2>
<h2><a rel="bookmark" href="http://kangye.org/app-engine-sdk-118">Google App Engine SDK Version 1.1.8发布</a></h2>
<h2><a rel="bookmark" href="http://kangye.org/gae-support-https">Google App Engine支持HTTPS</a></h2>
<h2><a rel="bookmark" href="http://kangye.org/google-app-engine-updates">Google App Engine更新：可创建10个应用</a></h2>
<p>App Engine图书</p>
<h2><a rel="bookmark" href="http://kangye.org/app-engine-in-action">《Google App Engine in Action》下载和介绍</a></h2>
<h2><a rel="bookmark" href="http://kangye.org/%e3%80%8adeveloping-with-google-app-engine%e3%80%8b">《Developing with Google App Engine》</a></h2>
]]></content:encoded>
			<wfw:commentRss>http://kangye.org/past-app-engine-articles/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>终于又回来写博客了，主要关于App Engine</title>
		<link>http://kangye.org/return-to-my-blog</link>
		<comments>http://kangye.org/return-to-my-blog#comments</comments>
		<pubDate>Sun, 25 Apr 2010 14:46:00 +0000</pubDate>
		<dc:creator>康爷</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[公告]]></category>

		<guid isPermaLink="false">http://kangye.org/?p=41510</guid>
		<description><![CDATA[博客主要将是介绍Google App Engine的最新功能，App Engine的教程以及一些我的思考，如果你感兴趣的话，可以在Twitter上Follow @lookon，或者订阅我的博客: http://feeds.feedburner.com/areyoulookon]]></description>
			<content:encoded><![CDATA[<p>在经历了Yo2的绑定域名的博客风波之后，又没有posterous的支持，所以博客的写作停滞了很久。主要问题是，博客的配置什么的都要重新恢复，而我没有那么多的时间（其实是我没有花时间）在这个上面，所以也不高兴重开博客。不过，既然gaobo同学热情地支持了博客空间，我还是准备开始博客的写作，希望大家支持。</p>
<p>博客主要将是介绍Google App Engine的最新功能，App Engine的教程，App Engine与android，iPhone应用，HTML5以及一些我的思考，如果你感兴趣的话，可以在Twitter上Follow @lookon，或者订阅我的博客: <a href="http://feeds.feedburner.com/areyoulookon" target="_blank">http://feeds.feedburner.com/areyoulookon</a></p>
]]></content:encoded>
			<wfw:commentRss>http://kangye.org/return-to-my-blog/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[教程]Google Wave中文入门指南</title>
		<link>http://kangye.org/google-wave-tuterial</link>
		<comments>http://kangye.org/google-wave-tuterial#comments</comments>
		<pubDate>Wed, 30 Sep 2009 07:26:08 +0000</pubDate>
		<dc:creator>康爷</dc:creator>
				<category><![CDATA[教程]]></category>
		<category><![CDATA[Google Wave]]></category>

		<guid isPermaLink="false">http://www.kangye.org/google-wave-tuterial/</guid>
		<description><![CDATA[本文为Google Wave中文入门文档，会持续更新的，希望大家多多宣传~Google Wave马上又要发放100000个邀请了，具体的邀请政策可以看ReadWriteWeb的文章。如果你想第一时间收到我的邀请或者提名，欢迎留下你的EMail或者在Twitter上回复我。]]></description>
			<content:encoded><![CDATA[<p><strong><span style="font-family: mceinline;"><span style="font-family: mceinline;">求Google Wave的邀请的请去这个网站，参加邀请接力活动：</span></span></strong><a href="http://googlewave.luck.appspot.com/" target="_blank"><strong><span style="font-family: mceinline;"><span style="font-family: mceinline;">中文Google  Wave邀请接力</span></span></strong></a></p>
<p><strong><span style="font-family: mceinline;"><span style="font-family: mceinline;">请大家多关注接力网站上面的通知，或者在Twitter上面follow lookon。不会上Twitter的去 <a href="http://twitese.appspot.com/" target="_blank">http://twitese.appspot.com/</a></span></span></strong></p>
<p><span style="font-family: mceinline;"><a href="http://googlewave.luck.appspot.com/" target="_blank"></a> </span><img style="display: inline; margin-left: 0px; margin-right: 0px" src="http://thenextweb.com/wp-content/uploads/2009/07/google_wave_logo.jpg" alt="" width="120" height="96" align="right" /><span style="background-color: #ffffff;">Google Wave马上又要发放100000个邀请了，具体的邀请政策可以看<a href="http://www.readwriteweb.com/archives/everything_you_need_to_know_about_the_google_wave.php" target="_blank">ReadWriteWeb的文章</a>。如果你想第一时间收到我的邀请或者提名，<span style="color: #ff0000;"><strong>欢迎留下你的EMail或者在Twitter上回复我</strong></span>。（我的Twitter:@<a href="https://twitter.com/lookon" target="_blank">lookon</a>)</span></p>
<p>本文为Google Wave中文入门文档，会持续更新的，希望大家多多宣传~</p>
<p><span id="more-41389"></span></p>
<h2 style="background-color: #99cc00">一、Google Wave界面介绍</h2>
<h3><span style="color: #0080ff;"><strong>1.主界面</strong></span></h3>
<p>下面是主界面的截图，基本上Google Wave里面的所有内容都在这个界面上了：（<span style="color: #ff0000;"><strong>所有面板都是可以最小化的</strong></span>）</p>
<p><img src="http://farm4.static.flickr.com/3441/3967535151_2b6876ab74.jpg" alt="Google Wave页面布局 by you." /></p>
<h3><strong><span style="color: #0080ff;">2.导航面板</span></strong></h3>
<p>在主界面的左上方，有一个导航面板(Navigation Panel)，和GMail里的导航类似，包括Inbox，Active（活跃的wave），All，By Me，History，Spam，Settings，Trash以及保存的搜索结果和文件夹。注意，Google Wave文档说，这里的<span style="color: #ff0000;"><strong>所有导航链接都是搜索结果页其实</strong></span>。</p>
<p><a href="http://www.kangye.org/wp-content/uploads/247/24735/2009/09/tmp5.png"><img style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" title="tmp" src="http://www.kangye.org/wp-content/uploads/247/24735/2009/09/tmp-thumb5.png" border="0" alt="tmp" width="131" height="244" /></a></p>
<h3><span style="color: #0080ff;"><strong>3.联系人面板</strong></span></h3>
<p>在导航面板下面，是联系人面板（Contacts Panel），在这个面板里，将会显示你的Google Wave联系人（据悉，这次公开的测试中，<span style="color: #ff0000;"><strong>联系人将直接是你的Google Contact里的联系人</strong></span>）</p>
<p><a href="http://www.kangye.org/wp-content/uploads/247/24735/2009/09/tmp6.png"><img style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" title="tmp" src="http://www.kangye.org/wp-content/uploads/247/24735/2009/09/tmp-thumb6.png" border="0" alt="tmp" width="129" height="244" /></a></p>
<p>a.点击自己的头像，然后点击<strong>Change Photo</strong>，就可以改头像了（这个头像就是你在GMail里的头像）</p>
<p>b.联系人可以在搜索（见截图）</p>
<p>c.点击好友的头像，可以查看他的信息，也可以直接ping他（ping就是发起私聊）</p>
<p>d.你可以修改你的状态，<span style="color: #ff0000;"><strong>和GMail里的状态不同步</strong></span></p>
<h3><span style="color: #0080ff;"><strong>3.搜索面板</strong></span></h3>
<p><a href="http://www.kangye.org/wp-content/uploads/247/24735/2009/09/tmp7.png"><img style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" title="tmp" src="http://www.kangye.org/wp-content/uploads/247/24735/2009/09/tmp-thumb7.png" border="0" alt="tmp" width="504" height="108" /></a></p>
<p>搜索面板很简单，就是完成各种搜索的。</p>
<p>I 搜索命令大致有下面几个：</p>
<p>a.tag，比如搜索tag:中文</p>
<p>b.by，比如搜索by:me</p>
<p>c.with，比如搜索with:public，with:areyoulookon@wavesandbox.com</p>
<p>d.in，比如搜索in:Google（就是搜索Google这个文件夹里的所有wave）</p>
<p>这些命令可以联合起来一起使用，比如搜索</p>
<p>google wave tag:中文 by:me with:public in:Google</p>
<p>II 在搜索结果中点击wave就是打开，ctrl+点击就是在新面板中打开（于是两个wave可以共存）。可以使用<span style="color: #ff0000;"><strong>Move to</strong></span>将wave移到某个文件夹下。</p>
<p><a href="http://www.kangye.org/wp-content/uploads/247/24735/2009/09/tmp8.png"><img style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" title="tmp" src="http://www.kangye.org/wp-content/uploads/247/24735/2009/09/tmp-thumb8.png" border="0" alt="tmp" width="294" height="484" /></a></p>
<p>III 按住shift，可以选择多个wave进行操作</p>
<p><a href="http://www.kangye.org/wp-content/uploads/247/24735/2009/09/tmp9.png"><img style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" title="tmp" src="http://www.kangye.org/wp-content/uploads/247/24735/2009/09/tmp-thumb9.png" border="0" alt="tmp" width="294" height="484" /></a></p>
<h3><span style="color: #0080ff;"><strong>4.Wave面板</strong></span></h3>
<p>Wave面板里面有很多操作，可以回复，重放Wave的对话（Playback），归档（Achieve）等等。Wave面板可以最大化，那样就可以获得几乎全屏的视野了。</p>
<p><a href="http://www.kangye.org/wp-content/uploads/247/24735/2009/09/tmp10.png"><img style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" title="tmp" src="http://www.kangye.org/wp-content/uploads/247/24735/2009/09/tmp-thumb10.png" border="0" alt="tmp" width="294" height="484" /></a></p>
<h2 style="background-color: #99cc00">二、Google Wave快捷键</h2>
<p>下面是一些主要的快捷键，具体内容如果你有了wave账号后，在里面我建了帮助文档了。</p>
<table border="1" cellspacing="0" cellpadding="2" width="514">
<tbody>
<tr>
<td width="200" valign="top">快捷键</td>
<td width="312" valign="top">作用</td>
</tr>
<tr>
<td width="200" valign="top">上下箭头</td>
<td width="312" valign="top">在单个wave中的各条message中移动</td>
</tr>
<tr>
<td width="200" valign="top">tab/shift+tab</td>
<td width="312" valign="top">同上下箭头</td>
</tr>
<tr>
<td width="200" valign="top">Home/End</td>
<td width="312" valign="top">回到单个Wave中第一/最后一个message</td>
</tr>
<tr>
<td width="200" valign="top">空格键</td>
<td width="312" valign="top">到下一个未读的message</td>
</tr>
<tr>
<td width="200" valign="top">左右箭头</td>
<td width="312" valign="top">在wave面板和导航面板间切换</td>
</tr>
<tr>
<td width="200" valign="top">ctrl+空格</td>
<td width="312" valign="top">标记所有message已读</td>
</tr>
<tr>
<td width="200" valign="top">回车</td>
<td width="312" valign="top">回复所在的message</td>
</tr>
<tr>
<td width="200" valign="top">shift+回车</td>
<td width="312" valign="top">在wave末尾进行回复（回复整个wave）</td>
</tr>
<tr>
<td width="200" valign="top">ctrl+E</td>
<td width="312" valign="top">编辑</td>
</tr>
<tr>
<td width="200" valign="top">ctrl+回车</td>
<td width="312" valign="top">编辑的时候插入inline回复</td>
</tr>
<tr>
<td width="200" valign="top">ctrl+l</td>
<td width="312" valign="top">插入超链接</td>
</tr>
</tbody>
</table>
<h2 style="background-color: #99cc00">三、Google Wave常见问题</h2>
<p><strong><span style="color: #ff0080;">哪里有Google Wave的文档？</span></strong></p>
<p>这篇博客就算是中文的入门文档了吧。。Google Wave的开发人员说，他们也不晓得什么算文档，不过这里有Google Wave协议的文档：<a title="http://www.waveprotocol.org/whitepapers" href="http://www.waveprotocol.org/whitepapers">http://www.waveprotocol.org/whitepapers</a></p>
<p><span style="color: #ff0080;"><strong>哪里有Google Wave示例代码？</strong></span></p>
<p><a href="http://wave-samples-gallery.appspot.com/">http://wave-samples-gallery.appspot.com/</a> （其实是几乎所有机器人和小工具的app gallery）</p>
<p><span style="color: #ff0080;"><strong>如何公开我的Wave？</strong></span></p>
<p>先将public<em>@</em>a.gwave.com添加为好友，然后在<strong>Wave</strong>中将<a href="mailto:public@a.gwave.com">public<em>@</em>a.gwave.com</a>添加为参与者，那么你的<strong>Wave</strong>就公开了。</p>
<p><span style="color: #ff0080;"><strong>如何和其他人分享一个wave？</strong></span></p>
<p>三个方法。1.直接将这个<strong>wave</strong>拖到其他<strong>wave</strong>中，会自动生成一个链接；2.使用ctrl+l，粘帖这个<strong>wave</strong>的id，也可以创建一个链接（这种方法可以改链接的名字）；3.直接将你的<strong>wave</strong>公开</p>
<p><span style="color: #ff0080;"><strong>如何看所有公开的Wave？</strong></span></p>
<p>Inbox中不能看到你没参与的公开<strong>Wave</strong>，想要看其他的公开<strong>Wave</strong>，可以搜索with:public，这就是看所有公开<strong>Wave</strong>的方法。</p>
<p><strong><span style="color: #ff0080;">Google Wave支持的浏览器？</span></strong></p>
<p>Chrome 3.0 Chromium 4.0.212.0，Firefox 3.0 ，IE + Google Chrome Frame ，Safari（以及Gears 0.5.21.0）</p>
<p><span style="color: #ff0080;"><strong>Google Wave申请的地址？</strong></span></p>
<p>开发人员 <a href="http://ow.ly/rLNj">http://ow.ly/rLNj</a> 非开发人员 <a href="http://ow.ly/rLNo">http://ow.ly/rLNo</a> （<span style="color: #ff0000;"><strong>建议都去填开发人员的那个</strong></span>）</p>
<p><span style="color: #ff0080;"><strong>如何在Google Wave中添加超链接？</strong></span></p>
<p>三种方法：1.使用G+插件，将Google搜索中的链接添加到<strong>wave</strong>；2.使用ctrl+L添加链接（也可以点击link按钮）3.拖拽<strong>wave</strong>到另一个<strong>wave</strong>中</p>
<p><span style="color: #ff0080;"><strong>如何给一个wave添加tag?</strong></span></p>
<p>只要点一下在wave左下角的tag旁边的+，然后输入tag，回车即可</p>
<p><span style="color: #ff0080;"><strong>如何汇报bug?</strong></span></p>
<p>汇报bug的地址：<a title="http://code.google.com/p/google-wave-resources/issues/list" href="http://code.google.com/p/google-wave-resources/issues/list">http://code.google.com/p/google-wave-resources/issues/list</a></p>
<div style="display:none;">Google Wave 邀请 Google Wave Google Wave 邀请码 Google Wave 注册 Google Wave 申请 Google Wave 使用 Google Wave 教程 Google Wave 中文</div>
]]></content:encoded>
			<wfw:commentRss>http://kangye.org/google-wave-tuterial/feed</wfw:commentRss>
		<slash:comments>130</slash:comments>
		</item>
		<item>
		<title>[教程]如果使用Flickr Authentication API进行开发</title>
		<link>http://kangye.org/get-started-with-flickr-api</link>
		<comments>http://kangye.org/get-started-with-flickr-api#comments</comments>
		<pubDate>Sat, 26 Sep 2009 14:02:47 +0000</pubDate>
		<dc:creator>康爷</dc:creator>
				<category><![CDATA[教程]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Flickr]]></category>
		<category><![CDATA[开发]]></category>

		<guid isPermaLink="false">http://www.kangye.org/get-started-with-flickr-api/</guid>
		<description><![CDATA[前一篇日志讲到如何使用开源的PubSubHubbub协议实时接收订阅的Feed的更新，收到了不错的反响，于是今天再写一篇教程，是关于如何使用著名的图片存储服务商Flickr的API，主要介绍需要验证的API的运用（包括获得用户信息，上传图片，发布到Twitter等）。]]></description>
			<content:encoded><![CDATA[<p><img style="display: inline; margin-left: 0px; margin-right: 0px" height="20" src="http://l.yimg.com/g/images/en-us/flickr-yahoo-logo.png" width="120" align="right" />前一篇日志讲到<a href="http://www.kangye.org/getting-started-with-pubsubhubbub/" target="_blank">如何使用开源的PubSubHubbub协议</a>实时接收订阅的Feed的更新，收到了不错的反响，于是今天再写一篇教程，是关于如何使用著名的图片存储服务商<a href="http://www.flickr.com/" target="_blank">Flickr</a>的API，主要介绍需要验证的API的运用（包括获得用户信息，上传图片，发布到<a href="http://www.kangye.org/tag/twitter/" target="_blank">Twitter</a>等）。</p>
<p>广告时间：如果你喜欢看美女图片，并且使用Twitter，那么<font color="#ff0000"><strong>欢迎你在twitter上follow </strong></font><a href="https://twitter.com/ppperson" target="_blank"><font color="#ff0000"><strong>@ppperson</strong></font></a> （之所以会研究Flickr的API，也是因为这两天另一个著名的图片存储服务商<a href="http://twitpic.com" target="_blank">Twitpic</a>挂了）。当然也欢迎大家在twitter上跟随@<a href="https://twitter.com/lookon" target="_blank">lookon</a> <img src='http://kangye.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p> <span id="more-41346"></span><br />
<h2 style="background-color: rgb(153,204,0)">一、申请API key</h2>
<p>出于安全性的考虑，Flickr需要<strong><font color="#ff0000">每个使用API的用户申请API key</font></strong>，凭着这个API key和相应的secret，你才能使用Flickr的API服务。</p>
<p>申请地址：<a href="http://www.flickr.com/services/api/keys/apply/">http://www.flickr.com/services/api/keys/apply/</a></p>
<p>点击Apply for a Non-Commerical key，填写完信息后（你必须有一个yahoo邮箱，然后需要登录），就能获得一个API key和相应的Secret了。</p>
<h2 style="background-color: rgb(153,204,0)">二、配置API key信息</h2>
<p>申请完之后，我们点击Edit key details，有一个东西是必需要填的，就是我们的Authentication Type。由于我使用的是Google App Engine进行编程，所以就勾选了Web Application，你也可以根据需要进行勾选，还有两个选择是Desktop Application和Mobile Application。</p>
<p>选了Web Application之后，我就必须再填写一个Callback URL，这个就是用户授权后，需要返回到我们的web应用的地址，用来获取用户的auth_token以及做更多的事情。</p>
<h2 style="background-color: rgb(153,204,0)">三、使用Flickr Authentication API的主要流程</h2>
<p>下面我们来看看如何获得API授权以及如何使用API服务的大致过程：</p>
<ol>
<li>跳转页面到Flickr的用户授权页 </li>
<li>（用户登录Flickr）用户在Flickr上同意授权 </li>
<li>Flickr将页面跳转到你预先设定好的Callback URL </li>
<li>你在Callback URL页面中，<strong><font color="#ff0000">获得用户的auth_token，存储或缓存这个auth_token</font></strong> </li>
<li>使用用户的auth_token调用Flickr的API服务 </li>
</ol>
<h2 style="background-color: rgb(153,204,0)">四、一些具体实现的细节</h2>
<h3><font color="#3366ff">1.用户授权页的地址格式</font></h3>
<p>用户需要访问一个你的应用一一确定的授权地址来授权你的应用，这个地址格式是：</p>
<blockquote><pre>http://flickr.com/services/auth/?api_key=[api_key]&amp;perms=[perms]&amp;api_sig=[api_sig]</pre>
</blockquote>
<p>其中[api_key]就是你申请来的API key，[perms]是授权的权限，可以是write，read或者delate，一般都选write。api_sig是一个比较复杂的东西，将在后面具体叙述。</p>
<h3><font color="#3366ff">2.用户授权后跳转到Callback URL后的操作</font></h3>
<p>用户在授权页面授权了之后，Flickr会将页面跳转到你预先设定好的Callback URL，并且带上一个frob参数。比如，你的Callback URL是http://viewr.com/auth.php，那么Flickr将会发来一个HTTP GET请求，地址为<a href="http://viewr.com/auth.php?frob=abcxyz">http://viewr.com/auth.php?<b>frob</b>=abcxyz</a>，frob的值是随机的，你需要在程序端获取这个frob参数值。</p>
<p>接下来的事情就是，你向Flickr发送一个HTTP GET请求，用来获得用户的auth_token，这个请求中必须有frob值，而且必须是在Callback URL收到请求后立刻发送，frob有时间限制的，过期的frob将失效。</p>
<p>下面是获取用户auth_token的请求地址：</p>
<blockquote>
<p>http://flickr.com/services/rest/?<b>method</b>=flickr.auth.getToken&amp;<b>api_key</b>=1234567890&amp;<b>frob</b>=abcxzy&amp;<b>api_sig</b>=3f3870be274f6c49b3e31a0c6728957f</p>
</blockquote>
<p>api_token和前面一样，frob就是在Callback URL中获得的那个frob，api_sig还是后面讲解。</p>
<p>发送请求后，Flickr将会返回用户的auth_token值，没有其他内容，你只要保存即可。</p>
<h3><font color="#3366ff">3.使用用户的auth_token调用API</font></h3>
<p>有了用户的授权后，便能获得用户的auth_token，然后调用Flickr Authentication API。注意，<font color="#ff0000"><strong>这个auth_token必须和你的API key结合才能使用</strong></font>，这样就保证了API不会被盗用和滥用。</p>
<p>根据Flickr API的文档，选择适当的方法，便可以进行不同的操作了，下面举个例子，用来获取用户信息：</p>
<p>发送HTTP Post请求到</p>
<blockquote>
<p>http://flickr.com/services/rest/?<b>method</b>=flickr.people.getInfo&amp;<b>api_key</b>=1234567890&amp;<b>auth_token</b>=334455&amp;<b>api_sig</b>=4f3870be274f6c49b3e31a0c6728957f</p>
</blockquote>
<p>就能得到Flickr用户的信息了，其中method的值可以参见Flickr的API文档，api_key如前，auth_token就是你保存的用户的auth_token。</p>
<h4><font color="#3366ff">4.如何进行签名</font></h4>
<p>前面说到api_sig是个负责的东西，这里就讲解下如何生成这个签名（api_sig）：</p>
<p><font color="#008000">a.将参数按字典顺序进行排序</font></p>
<p>比如，前面用户授权页的地址中有api_key和perms两个参数，那么经过排序后的结果是</p>
<p>api_key=[api_key]，perms=write</p>
<p><font color="#008000">b.将Secret和这些参数合起来</font></p>
<p>这里的Secret是你申请API key的时候一起得到的那个Secret，然后再和排过序的参数合起来，变成</p>
<p>Secretapi_key[api_key]permswrite</p>
<p><font color="#008000">c.计算这个字符串的md5() hash值，并转为16进制</font></p>
<p>于是就得到了api_sig的值，也就是说，api_sig是由你的Secret以及所需参数一起生成的一个签名，缺一不可。</p>
<p><font color="#008000">d.Python实现</font></p>
<p>下面是一个Python语言的生成签名的实现</p>
<blockquote>
<p>def sign(dictionary):<br />
    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &quot;&quot;&quot;Calculate the flickr signature for a set of params.</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; data</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; a hash of all the params and values to be hashed, e.g.</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#8220;{&quot;api_key&quot;:&quot;AAAA&quot;, &quot;auth_token&quot;:&quot;TTTT&quot;, &quot;key&quot;:</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; u&quot;value&quot;.encode(&#8216;utf-8&#8242;)}&#8220; </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; &quot;&quot;&quot; </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; data = [secret] #你的Secret值</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; #dictonary就是参数的字典表示，如{&quot;api_key&quot;:&quot;aaa&quot;,&quot;auth_token&quot;:&quot;bbb&quot;}<br />
    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; for key in sorted(dictionary.keys()):</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; data.append(key)</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; datum = dictionary[key]</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if isinstance(datum, unicode):</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; raise IllegalArgumentException(&quot;No Unicode allowed, &quot;</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &quot;argument %s (%r) should have been UTF-8 by now&quot;</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; % (key, datum))</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; data.append(datum)</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; md5_hash = md5.new()</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; md5_hash.update(&#8221;.join(data))</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; return md5_hash.hexdigest()</p>
</blockquote>
<p>&#160;</p>
<h2 style="background-color: rgb(153,204,0)">五、有用的资源链接</h2>
<p>照例给出一些很哟用的资源链接：</p>
<p>1.Flickr API官方文档：<a title="http://www.flickr.com/services/api/" href="http://www.flickr.com/services/api/">http://www.flickr.com/services/api/</a></p>
<p>2.申请Flickr API key的地址：<a title="http://www.flickr.com/services/api/keys/apply/" href="http://www.flickr.com/services/api/keys/apply/">http://www.flickr.com/services/api/keys/apply/</a></p>
<p>3.Flickr Authentication API使用的官方介绍：<a title="http://www.flickr.com/services/api/auth.spec.html" href="http://www.flickr.com/services/api/auth.spec.html">http://www.flickr.com/services/api/auth.spec.html</a></p>
<p>4.Flickr API的Python类库：<a title="http://www.stuvel.eu/projects/flickrapi" href="http://www.stuvel.eu/projects/flickrapi">http://www.stuvel.eu/projects/flickrapi</a></p>
<p><strong><font color="#ff0000">注意事项，Flickr API调用过程中，必须全部使用utf-8编码。</font></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://kangye.org/get-started-with-flickr-api/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[教程]如何使用PubSubHubbub协议</title>
		<link>http://kangye.org/getting-started-with-pubsubhubbub</link>
		<comments>http://kangye.org/getting-started-with-pubsubhubbub#comments</comments>
		<pubDate>Thu, 24 Sep 2009 07:21:45 +0000</pubDate>
		<dc:creator>康爷</dc:creator>
				<category><![CDATA[教程]]></category>
		<category><![CDATA[PubSubHubbub]]></category>
		<category><![CDATA[开发]]></category>

		<guid isPermaLink="false">http://www.kangye.org/getting-started-with-pubsubhubbub/</guid>
		<description><![CDATA[前一篇日志PubSubHubbub工作原理及使用入门大致介绍了PubSubHubbub的工作原理和流程，这次将结合实例，介绍如何使用PubSubHubbub协议进行开发，并给出实例代码。]]></description>
			<content:encoded><![CDATA[<p><img style="display: inline; margin-left: 0px; margin-right: 0px" height="112" src="http://www.techshout.com/images/google-reader-pubsubhubbub.jpg" width="120" align="right" />前一篇日志<a href="http://www.kangye.org/pubsubhubbub-tutorial/" target="_blank">PubSubHubbub工作原理及使用入门</a>大致介绍了PubSubHubbub的工作原理和流程，这次将结合实例，<strong>介绍如何使用PubSubHubbub协议进行开发，并给出实例代码。</strong></p>
<p>&#160;</p>
<p> <span id="more-41327"></span><br />
<h2 style="background-color: rgb(153,204,0)">1.订阅Feed</h2>
<p>如果一个Feed支持PubSubHubbub协议，那么在feed中将会告诉你，托管这个feed的hub的地址。比如，在<font color="#99cc00">http://www.google.com/reader/shared/areyoulookon</font>的feed中，有<font color="#0f6600">&lt;link rel=&quot;hub&quot; href=&quot;</font><a href="http://pubsubhubbub.appspot.com/&quot;/"><font color="#ff8040">http://pubsubhubbub.appspot.com/&quot;/</font></a><font color="#ff8040">&gt;</font>，这就表示，这个feed由pubsubhubbub.appspot.com这个hub进行托管，也就是说，<strong><font color="#ff0000">你需要向pubsubhubbub.appspot.com请求获得这个feed的实时更新情况</font></strong>。</p>
<p>下面详细讲讲如何订阅（还是以那个greader share的feed做例子）：</p>
<h3><font color="#3366ff">1.发送订阅请求</font></h3>
<p>pubsubhubbub.appspot.com是pubsubhubbub始作俑者，两位Google工程师之一的某人完成，由于他是Google App Engine团队的，所以利用GAE开发了一个hub，为大家也为Google提供了方便。订阅更新的地址是：</p>
<p><strong><font color="#ff8040">http://pubsubhubbub.appspot.com/subscribe</font></strong></p>
<p>那么，要订阅上面那个feed，需要向这个地址Post哪些参数呢？主要是下面四个参数（以及应该填的值）：</p>
<p>– <em>hub.mode</em> = subscribe|unsubscribe （是订阅还是取消订阅）</p>
<p>– <em>hub.verify</em> = sync</p>
<p>– <em>hub.callback</em> = http://domain.tld/your/callback （<font color="#ff0000"><font color="#000000">callback就是说，你用来接收这个hub传来的信息的网址，</font><strong>这个很重要，就是你处理更新的应用的地址</strong></font>）</p>
<p>– <em>hub.topic</em> = http://www.google.com/reader/public/atom/user/16797483721654978846/state/com.google/broadcast（这个就是我们要订阅的feed源，取名为topic，大家要适应）</p>
<p>好了，下面不管使用何种程序语言，你只要向<strong><font color="#ff8040">http://pubsubhubbub.appspot.com/subscribe </font></strong>发送含有上面四个参数和值的Post请求，就完成了订阅Feed的70%的工作了。你也可以到<a href="http://pubsubhubbub.appspot.com/subscribe"><font color="#000000">http://pubsubhubbub.appspot.com/subscribe</font></a><font color="#ff0000"><font color="#000000"> 去试玩一下，</font><strong>无需编程。</strong></font></p>
<h3><font color="#3366ff">2.验证你的订阅</font></h3>
<p>pubsubhubbub协议规定，并不是所有发往hub的订阅请求都能通过，<font color="#ff0000"><font color="#000000">当你订阅了一个topic后，hub服务器会给你的callback网址发来一个HTTP GET请求，</font><strong>获得正确的响应后，才能订阅成功。</strong></font>（这是为了防止你用错误的callback地址，让hub服务器进行DDoS攻击）。</p>
<p>当我们按照1里面的步骤，发送了订阅请求（HTTP POST）后，hub服务器会给callback网站发来一个HTTP GET请求，参数如下：</p>
<p>– <em>hub.mode</em> = subscribe|unsubscribe     <br />– <em>hub.topic</em> = http://www.google.com/reader/public/atom/user/16797483721654978846/state/com.google/broadcast     <br />– <em>hub.challenge</em> = a-random-string （这个很重要，就是验证的字符串，你的callback网址需要记录它）</p>
<p>如果你的callback网址接到这个请求后，能返回输出hub.challenge的值的话，并且是一个成功的响应（status code是200），那么订阅就成功了！</p>
<p>&#160;</p>
<h2 style="background-color: rgb(153,204,0)">2.处理更新内容</h2>
<p>订阅成功以后，如果订阅源发生了更新，按照我们上次<a href="http://www.kangye.org/pubsubhubbub-tutorial/" target="_blank">PubSubHubbub工作原理及使用入门</a>介绍的，hub服务器将会获得通知，然后立刻发送HTTP POST请求到我们订阅的callback网址，请求的内容是xml格式的（<strong><font color="#ff0000">基本类似于标准的atom格式</font></strong>），里面包含了更新的内容，下面就是你使用各种方式，处理这段xml字符串，为你所用了。</p>
<p>&#160;</p>
<h2 style="background-color: rgb(153,204,0)">3.有用的链接和代码</h2>
<p>那篇让我看懂如何使用<a href="http://pubsubhubbub.googlecode.com/" target="_blank">PubSubHubbub</a>的文章：<a href="http://blog.superfeedr.com/API/pubsubhubbub/getting-started-with-pubsubhubbub/" target="_blank">Getting Started with PubSubHubbub</a></p>
<p>订阅Feed的WEB接口：<a href="http://pubsubhubbub.appspot.com/subscribe">http://pubsubhubbub.appspot.com/subscribe</a></p>
<p>PubSubHubbub主页：<a title="http://pubsubhubbub.googlecode.com/" href="http://pubsubhubbub.googlecode.com/">http://pubsubhubbub.googlecode.com/</a></p>
<p>如何更好地开发PubSubHubub：<a title="http://code.google.com/p/pubsubhubbub/wiki/BestPractices" href="http://code.google.com/p/pubsubhubbub/wiki/BestPractices">http://code.google.com/p/pubsubhubbub/wiki/BestPractices</a></p>
<p>Google App Engine的示例代码：<a href="http://code.google.com/p/pubsubhubbub/source/browse/#svn/trunk/subscriber">http://code.google.com/p/pubsubhubbub/source/browse/#svn/trunk/subscriber</a> （<strong><font color="#ff0000">重要！这个基本是1/3的reader2twitter代码了</font></strong>）</p>
]]></content:encoded>
			<wfw:commentRss>http://kangye.org/getting-started-with-pubsubhubbub/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>国人开发的几个基于Google App Engine的Twitter应用</title>
		<link>http://kangye.org/chinese-app-engine-twitter</link>
		<comments>http://kangye.org/chinese-app-engine-twitter#comments</comments>
		<pubDate>Wed, 23 Sep 2009 07:38:10 +0000</pubDate>
		<dc:creator>康爷</dc:creator>
				<category><![CDATA[web 2.0]]></category>
		<category><![CDATA[App Engine]]></category>

		<guid isPermaLink="false">http://www.kangye.org/chinese-app-engine-twitter/</guid>
		<description><![CDATA[之前有一段时间，Google App Engine使用Twitter API的过程中，遇到Twitter拒绝来自App Engine的请求的尴尬情况，所以基于App Engine的Twitter应用很少有。但是，Twitter最终还是解决了问题，于是Twitter应用便开始繁荣起来。]]></description>
			<content:encoded><![CDATA[<p><img style="display: inline; margin-left: 0px; margin-right: 0px" src="http://humairahmed.com/blog/wp-content/uploads/2008/11/google_app_engine.jpeg" alt="" width="120" height="118" align="right" />写这个内容，略有风险，希望Google App Engine永葆青春。。。</p>
<p>之前有一段时间，Google App Engine使用Twitter API的过程中，遇到Twitter拒绝来自App Engine的请求的尴尬情况，所以基于App Engine的Twitter应用很少有。但是，Twitter最终还是解决了问题，于是Twitter应用便开始繁荣起来。</p>
<p><span id="more-41318"></span></p>
<p>1.<a href="http://twittergadget.appspot.com/" target="_blank">Twitgether</a></p>
<p>这是一个很好的服务，由<a href="https://twitter.com/c9" target="_blank">@c9</a>开发，主要功能是，GMail中的Twitter Gadget。GMail Labs提供添加gadget的功能，加上Twitgether的不错的界面，使得GMail里面看推，发推都比较方便了。强烈推荐GMail爱好者使用。</p>
<p><a href="http://www.kangye.org/wp-content/uploads/247/24735/2009/09/tmp.png"><img style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" title="tmp" src="http://www.kangye.org/wp-content/uploads/247/24735/2009/09/tmp-thumb.png" border="0" alt="tmp" width="640" height="329" /></a></p>
<p>2<a href="http://reader2twitter.appspot.com/cn" target="_blank">.Reader2Twitter</a></p>
<p>这是由我开发的一个Twitter应用，主要功能是，实时同步你的Google Reader分享到Twitter，支持Basic和OAuth两种认证方式，并且可以自定义同步方式和同步格式。推荐Google Reader爱好者使用。</p>
<p><a href="http://www.kangye.org/wp-content/uploads/247/24735/2009/09/tmp1.png"><img style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" title="tmp" src="http://www.kangye.org/wp-content/uploads/247/24735/2009/09/tmp-thumb1.png" border="0" alt="tmp" width="640" height="381" /></a></p>
<p>3.<a href="http://sms4twitter.appspot.com/" target="_blank">sms4twitter</a></p>
<p>飞信用户有好东西用了，这是由<a href="https://twitter.com/rockcody" target="_blank">@rockcody</a>开发的GAE应用，主要功能是利用飞信来更新你的Twitter，以后将会有更多功能。</p>
<p><a href="http://www.kangye.org/wp-content/uploads/247/24735/2009/09/tmp2.png"><img style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" title="tmp" src="http://www.kangye.org/wp-content/uploads/247/24735/2009/09/tmp-thumb2.png" border="0" alt="tmp" width="640" height="408" /></a></p>
<p>4.<a href="http://twitter2renren.appspot.com/" target="_blank">twitter2renren</a></p>
<p>这是一款同步Twitter到人人网的App Engine程序，如果你是校内网的忠实用户，那么可以尝试一下这个服务。</p>
<p>5.<a href="http://twitese.appspot.com" target="_blank">推特中文圈</a></p>
<p>强力推荐！国人制作的饭否界面Twitter网页程序，实现了基本所有Twitter的必须功能，并对Twitter中文用户进行了分类，如果你没有好的使用Twitter的方法的话，请使用推特中文圈。</p>
<p><a href="http://www.kangye.org/wp-content/uploads/247/24735/2009/09/tmp3.png"><img style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" title="tmp" src="http://www.kangye.org/wp-content/uploads/247/24735/2009/09/tmp-thumb3.png" border="0" alt="tmp" width="640" height="451" /></a></p>
<p>6.<a href="http://twitalker.appspot.com/" target="_blank">Twitalker</a></p>
<p>如果你是Gtalk重度用户，那么这款服务很适合你。Twitalker是一款Twitter第三方应用，提供推特Gtalk机器人服务，通过添加TwiTalker在Gtalk上的帐号您可以方便地在Gtalk上更新自己的推特和接收好友消息。也是基于Google App Engine的。</p>
<p><a href="http://www.kangye.org/wp-content/uploads/247/24735/2009/09/tmp4.png"><img style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" title="tmp" src="http://www.kangye.org/wp-content/uploads/247/24735/2009/09/tmp-thumb4.png" border="0" alt="tmp" width="640" height="401" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://kangye.org/chinese-app-engine-twitter/feed</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>Brizzly – 让Twitter拥有FriendFeed一样的体验</title>
		<link>http://kangye.org/brizzly-make-twitter-like-friendfeed</link>
		<comments>http://kangye.org/brizzly-make-twitter-like-friendfeed#comments</comments>
		<pubDate>Wed, 09 Sep 2009 13:32:09 +0000</pubDate>
		<dc:creator>康爷</dc:creator>
				<category><![CDATA[web 2.0]]></category>
		<category><![CDATA[FriendFeed]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[视频]]></category>

		<guid isPermaLink="false">http://www.kangye.org/brizzly-%e8%ae%a9twitter%e6%8b%a5%e6%9c%89friendfeed%e4%b8%80%e6%a0%b7%e7%9a%84%e4%bd%93%e9%aa%8c/</guid>
		<description><![CDATA[今天美国IT那边传来很多关于Brizzly的声音，完全压过了即将发布的客户端tweetdeck，我刚才试用了一下，真的非常不错！]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.kangye.org/brizzly-%e8%ae%a9twitter%e6%8b%a5%e6%9c%89friendfeed%e4%b8%80%e6%a0%b7%e7%9a%84%e4%bd%93%e9%aa%8c/"><img style="display: inline; margin-left: 0px; margin-right: 0px" src="http://cache0.techcrunch.com/wp-content/uploads/2009/07/brizzly-birdier.png" alt="" width="120" height="140" align="right" /></a><span style="background-color: #ffffff;">今天美国IT那边传来很多关于Brizzly的声音，完全压过了即将发布的客户端tweetdeck，我刚才试用了一下，真的非常不错！</span></p>
<p>非常好的地方：</p>
<p>1.自动显示图片和视频</p>
<p>跟FriendFeed一样，可以看图片，也可以预览Youtube视频</p>
<p><span id="more-41004"></span></p>
<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://louisgray.com/graphics/brizzly_500c.jpg" border="0" alt="" /></p>
<p>2.添加组</p>
<p>可以添加小组，而且在小组中添加成员很简单，输入用户名的开头字母，会出现一堆提示用户</p>
<p>3.你可以mute一个用户，而不是follow，只是看不到他的更新</p>
<p>4.贴心的dm</p>
<p>收到私信后，将会在右上方出现对话框，可以进行回复。</p>
<p><img src="http://louisgray.com/graphics/brizzly_200.jpg" alt="" hspace="5" vspace="5" align="left" /></p>
<p>5.自动不用fan qiang</p>
<p>最后，目前需要邀请码，先到先得，留下你的email，低调传播@@</p>
<p>也可以在twitter上回复我你的邮箱，我的twitter:lookon</p>
<p>注：你可以尝试这个邀请码：<strong>daringbaking</strong></p>
<p>如果这个邀请码无法使用的话，目前已经本博客已经没有邀请码了，不好意思:)</p>
]]></content:encoded>
			<wfw:commentRss>http://kangye.org/brizzly-make-twitter-like-friendfeed/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reader2Twitter新功能介绍</title>
		<link>http://kangye.org/reader2twitter-new-features</link>
		<comments>http://kangye.org/reader2twitter-new-features#comments</comments>
		<pubDate>Tue, 08 Sep 2009 07:51:05 +0000</pubDate>
		<dc:creator>康爷</dc:creator>
				<category><![CDATA[网站开发]]></category>
		<category><![CDATA[开发]]></category>

		<guid isPermaLink="false">http://www.kangye.org/reader2twitter%e6%96%b0%e5%8a%9f%e8%83%bd%e4%bb%8b%e7%bb%8d/</guid>
		<description><![CDATA[昨天发布了reader2twitter，一个使用pubsubhubbub协议，实时共享Google Reader Shared Item到Twitter的应用，地址：http://reader2twitter.appspot.com/cn 。今天对reader2twitter进行了更新，下面说说新功能。]]></description>
			<content:encoded><![CDATA[<p><img style="display: inline; margin-left: 0px; margin-right: 0px" height="120" src="http://lightbiker.files.wordpress.com/2008/08/google-reader128.png" width="120" align="right" />昨天发布了reader2twitter，一个使用pubsubhubbub协议，实时共享Google Reader Shared Item到Twitter的应用，地址：<a href="http://reader2twitter.appspot.com/cn">http://reader2twitter.appspot.com/cn</a> 。今天对reader2twitter进行了更新，下面说说新功能： </p>
<p> <span id="more-40986"></span><br />
<h1><font color="#0000ff">1.支持OAuth认证</font></h1>
<p>&#160;</p>
<p>如果你能翻墙的话，那么就使用这种方式认证吧，因为这样可以在下次登录后，获得你的reader2twitter配置信息。而且更安全，也能在twitter中显示来源。</p>
<h1><font color="#0000ff"></font></h1>
<h1><font color="#0000ff">2.支持自定义发推</font></h1>
<p>&#160;</p>
<p>你可以使用三个参数进行自定义你的同步到Twitter的推，{title}，{url} 和 {comment}。分别指的是标题，链接和你的评论。比如你可以使用下面的格式进行自定义：</p>
<p>【GR分享】{title} {url} </p>
<p>{title} {url} || {comment}</p>
<p>&#160;</p>
<h1><font color="#0000ff">3.支持三种同步方式</font></h1>
<p>&#160;</p>
<p>目前支持了三种不同的同步方式</p>
<p>a.同步所有的共享</p>
<p>b.只同步有评论的共享</p>
<p>c.只同步Note（将不会显示链接）</p>
<p><b><font size="4"><font color="#ff0000">c的<b>这个<b>同步方式就意味着，你可以在Google Reader里面发推，这是多么high的一件事，无需任何插件！</b></b></font></font></b></p>
]]></content:encoded>
			<wfw:commentRss>http://kangye.org/reader2twitter-new-features/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>PubSubHubbub工作原理及使用入门</title>
		<link>http://kangye.org/pubsubhubbub-tutorial</link>
		<comments>http://kangye.org/pubsubhubbub-tutorial#comments</comments>
		<pubDate>Mon, 07 Sep 2009 11:59:03 +0000</pubDate>
		<dc:creator>康爷</dc:creator>
				<category><![CDATA[暂无分类]]></category>
		<category><![CDATA[App Engine]]></category>
		<category><![CDATA[bl]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Google Reader]]></category>
		<category><![CDATA[RSS]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.kangye.org/pubsubhubbub%e5%b7%a5%e4%bd%9c%e5%8e%9f%e7%90%86%e5%8f%8a%e4%bd%bf%e7%94%a8%e5%85%a5%e9%97%a8/</guid>
		<description><![CDATA[现在来说说看PubSubHubbub是什么东西，如何使用。前面说写了个将Google Reader的分享实时同步到Twitter的应用：reader2twitter.appspot.com，就是使用了PubSubHubbub协议，那么到底什么是PubSubHubbub协议呢？]]></description>
			<content:encoded><![CDATA[<div><img style="display: inline; margin-left: 0px; margin-right: 0px" height="112" src="http://www.techshout.com/images/google-reader-pubsubhubbub.jpg" width="120" align="right" />现在来说说看<a href="http://code.google.com/p/pubsubhubbub/">PubSubHubbub</a>是什么东西，如何使用。</div>
<div>&#160;</div>
<div>前面说写了个将Google Reader的分享实时同步到Twitter的应用：<a href="http://reader2twitter.appspot.com">reader2twitter.appspot.com</a>，就是使用了PubSubHubbub协议，那么到底什么是PubSubHubbub协议呢？</div>
<div>&#160;</div>
<div>官方说法是，A simple, open, server-to-server web-hook-based pubsub (publish/subscribe) protocol as an extension to Atom (and RSS)。其实就是一个RSS和Atom扩展协议，有了这个协议，就可以几乎实时地获取更新。</div>
</p>
<div>下面说说它的工作原理，分以下几步：</div>
<p> <span id="more-40964"></span>
</p>
<div>1.Subscriber(订阅者)向Publisher(发布者)请求获取更新的内容（很普通的request）</div>
</p>
<div>2.Publisher告诉Subscriber，我将更新托管到了某个hub上面</div>
</p>
<div>3.于是，Subscriber转而请求那个hub，告诉这个hub，如果Publisher一有更新的内容，就通知Subscriber的某个url</div>
</p>
<div>4.hub返回给Subscriber一个字符串，用以验证Subscriber不是攻击的肉机</div>
</p>
<div>5.订阅工作结束</div>
</p>
<div>6.hub不断向Publisher请求获取新内容，Publisher一有新内容也及时通知hub</div>
</p>
<div>7.hub获取更新的内容后，立刻通知所有在这个hub订阅Publisher的Subscriber</div>
</p>
<div>8.Subscriber根据通知的内容，进行处理，完成自己需要做的事情</div>
</p>
<div>理想状态是，有很多的hub，很多Publisher和Subscriber，相互交互。</div>
</p>
<div>&#160;</div>
</p>
<div>下次将会说如何使用PubSubHubbub，使用的是Google App Engine做例子。</div>
]]></content:encoded>
			<wfw:commentRss>http://kangye.org/pubsubhubbub-tutorial/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
