<?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>后院&#124;kevin’s backyard &#187; appengine</title>
	<atom:link href="http://kevin.9511.net/archives/tag/appengine/feed" rel="self" type="application/rss+xml" />
	<link>http://kevin.9511.net</link>
	<description>立志做一个混事业型男人</description>
	<lastBuildDate>Fri, 30 Apr 2010 16:55:05 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>通过GoogleReader备份博客并恢复到Wordpress中</title>
		<link>http://kevin.9511.net/archives/454.html</link>
		<comments>http://kevin.9511.net/archives/454.html#comments</comments>
		<pubDate>Wed, 13 Jan 2010 20:24:15 +0000</pubDate>
		<dc:creator>kevin</dc:creator>
				<category><![CDATA[互联网]]></category>
		<category><![CDATA[技术备案]]></category>
		<category><![CDATA[appengine]]></category>
		<category><![CDATA[atom2rss]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[reader]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://kevin.9511.net/?p=454</guid>
		<description><![CDATA[备份的方法很简单，当然就是通过feed订阅喽。下面是导出的方法。
在google reader中将要导出的博客归入一个新建的类别（label），最好为英文，并在“设置”中将此类别设为“公开”。
通过以下URL即可查看该博客的atom格式的种子（feed）输出：
http://www.google.com/reader/public/atom/user/{userid}/label/{labelname}?n=1000
其中{userid}，可以在 这个页面 的“在新窗口中预览共享条目页”连接中找到。{labelname}是刚刚那个新建的类别名称。n=1000代表一次性输出1000条。
google reader只提供了atom格式的feed输出(后来知道blogger也是如此)，但wordpress却只接受rss格式的输入。他俩不会有仇吧？
为了将atom转换成rss，于是在GAE上做了个atom2rss的工具：http://atom2rss.appspot.com。如果不知道修改hosts文件直接访问appspot的方法，访问可能需要翻墙。
简单介绍下atom2rss这个小工具吧。
1，只支持Atom1.0到RSS2.0的转换并需要提供atom1.0格式种子的URL
2，使用jython+modjy编写，运行于Google AppEngine
3，使用了 http://atom.geekhood.net/ 提供的XSLT转换模板。
4，代码在这里：http://code.google.com/p/atom2rss-jython/
]]></description>
			<content:encoded><![CDATA[<p>备份的方法很简单，当然就是通过feed订阅喽。下面是导出的方法。</p>
<p>在google reader中将要导出的博客归入一个新建的类别（label），最好为英文，并在“设置”中将此类别设为“公开”。</p>
<p>通过以下URL即可查看该博客的atom格式的种子（feed）输出：</p>
<blockquote><p>http://www.google.com/reader/public/atom/user/{userid}/label/{labelname}?n=1000</p></blockquote>
<p>其中{userid}，可以在 <a href="http://www.google.com/reader/view/user/-/state/com.google/broadcast#friends-manager-page" target="_blank">这个页面</a> 的“在新窗口中预览共享条目页”连接中找到。{labelname}是刚刚那个新建的类别名称。n=1000代表一次性输出1000条。<span id="more-454"></span></p>
<p>google reader只提供了atom格式的feed输出(后来知道blogger也是如此)，但wordpress却只接受rss格式的输入。他俩不会有仇吧？</p>
<p>为了将atom转换成rss，于是在GAE上做了个atom2rss的工具：<a href="http://atom2rss.appspot.com" target="_blank">http://atom2rss.appspot.com</a>。如果不知道修改hosts文件直接访问appspot的方法，访问可能需要翻墙。</p>
<p>简单介绍下atom2rss这个小工具吧。</p>
<p>1，只支持Atom1.0到RSS2.0的转换并需要提供atom1.0格式种子的URL</p>
<p>2，使用jython+modjy编写，运行于Google AppEngine</p>
<p>3，使用了 http://atom.geekhood.net/ 提供的XSLT转换模板。</p>
<p>4，代码在这里：<a href="http://code.google.com/p/atom2rss-jython/" target="_blank">http://code.google.com/p/atom2rss-jython/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://kevin.9511.net/archives/454.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>jython+modjy在GoogleAppEngine上开发的几个小问题</title>
		<link>http://kevin.9511.net/archives/451.html</link>
		<comments>http://kevin.9511.net/archives/451.html#comments</comments>
		<pubDate>Wed, 13 Jan 2010 19:38:51 +0000</pubDate>
		<dc:creator>kevin</dc:creator>
				<category><![CDATA[七零八碎]]></category>
		<category><![CDATA[appengine]]></category>
		<category><![CDATA[jython]]></category>
		<category><![CDATA[modjy]]></category>

		<guid isPermaLink="false">http://kevin.9511.net/?p=451</guid>
		<description><![CDATA[也许是因为比较新或者应用范围有限，网上关于jython+modjy的资料实在少的很。再加上google appengine这个比较特殊的平台，甭说例子了，连点有用的文章都没有。我最近在GAE上用jython+modjy做了个小玩意，折腾了好几天，写这篇文章总结一下开发过程中遇到了几个小问题
1，在每个程序的第一行声明源文件的编码格式
不管是Jython还是Python，如果不做这个声明，不管你是否将文件存为了UTF-8格式或者其他什么格式，源文件将以默认的ASCII编码格式进行处理。这也是一些中文乱码出现的原因，所以，指定编码格式是个好习惯！以下这两种种方式都是正确的：

# coding=utf-8
# -*- coding: latin-1 -*-

更多格式可参考：http://www.python.org/dev/peps/pep-0263/
2，Unicode对象
与Python一样，在Jython内部是用Unicode来处理字符串的。经Jython做过处理的字符串，最终显示时均需要用unicode对象的encode()方法转换成相应编码方式进行显示，未进行操作过的硬编码除外。代码片段如下：
bs=&#8221;红梅&#8221;+&#8221;红河&#8221;    &#60;==此时经过“+”操作，bs为unicode对象。
bs.encode(&#8217;utf-8&#8242;) &#60;==解码后可以utf-8编码方式显示。
3，获得get/post数据的方式
除了在jython内调用JAVA类的方式之外，可以用以下方法获得：
post = environ['j2ee.request']
bs = post.getParameterValues(&#8217;atom&#8217;)[0]
其中环境变量environ['j2ee.request']，其实是一个 org.mortbay.jetty.Request 对象
应该还有其他更简单的方式，不过我没找到。
]]></description>
			<content:encoded><![CDATA[<p>也许是因为比较新或者应用范围有限，网上关于jython+modjy的资料实在少的很。再加上google appengine这个比较特殊的平台，甭说例子了，连点有用的文章都没有。我最近在GAE上用jython+modjy做了个小玩意，折腾了好几天，写这篇文章总结一下开发过程中遇到了几个小问题</p>
<p>1，在每个程序的第一行声明源文件的编码格式</p>
<p>不管是Jython还是Python，如果不做这个声明，不管你是否将文件存为了UTF-8格式或者其他什么格式，源文件将以默认的ASCII编码格式进行处理。这也是一些中文乱码出现的原因，所以，指定编码格式是个好习惯！以下这两种种方式都是正确的：</p>
<blockquote>
<pre># coding=utf-8
# -*- coding: latin-1 -*-</pre>
</blockquote>
<p>更多格式可参考：http://www.python.org/dev/peps/pep-0263/<span id="more-451"></span></p>
<p>2，Unicode对象</p>
<p>与Python一样，在Jython内部是用Unicode来处理字符串的。经Jython做过处理的字符串，最终显示时均需要用unicode对象的encode()方法转换成相应编码方式进行显示，未进行操作过的硬编码除外。代码片段如下：</p>
<blockquote><p>bs=&#8221;红梅&#8221;+&#8221;红河&#8221;    &lt;==此时经过“+”操作，bs为unicode对象。<br />
bs.encode(&#8217;utf-8&#8242;) &lt;==解码后可以utf-8编码方式显示。</p></blockquote>
<p>3，获得get/post数据的方式</p>
<p>除了在jython内调用JAVA类的方式之外，可以用以下方法获得：</p>
<blockquote><p>post = environ['j2ee.request']<br />
bs = post.getParameterValues(&#8217;atom&#8217;)[0]</p></blockquote>
<p>其中环境变量environ['j2ee.request']，其实是一个 org.mortbay.jetty.Request 对象</p>
<p>应该还有其他更简单的方式，不过我没找到。</p>
]]></content:encoded>
			<wfw:commentRss>http://kevin.9511.net/archives/451.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jython+Modjy+GoogleAppEngine</title>
		<link>http://kevin.9511.net/archives/442.html</link>
		<comments>http://kevin.9511.net/archives/442.html#comments</comments>
		<pubDate>Wed, 13 Jan 2010 18:44:01 +0000</pubDate>
		<dc:creator>kevin</dc:creator>
				<category><![CDATA[七零八碎]]></category>
		<category><![CDATA[appengine]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jython]]></category>
		<category><![CDATA[modjy]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://kevin.9511.net/?p=442</guid>
		<description><![CDATA[Modjy是一个让Jython应用可以在Java Servlet容器内运行的桥梁，是一个标准的WSGI实现。并且该项目已经被正式纳入到了Jython项目中。
现在Jython和modjy也可以在目前世界上最大的Servlet容器——Google AppEngine上运行了。
之前要使Jython运行在Google AppEngine上，是需要使用Google发布的的一个补丁，但最新的Jython2.5版已经不需要了。
Google AppEngine服务限制每个应用程序所包含的文件不能大于1000个。但是Jython的Lib目录下文件很多，显然已经超过了这个限制。最简单的解决方法是把所有的库文件都放在一个ZIP文件内。然后，还需要建立一个.pth文件应来指向这个zip文件。这个.pth文件的主文件名是什么无所谓，可以随便起。文件内容只需一句话“lib.zip”。把all.pth和lib.zip一起放在你的GoogleAppEngine项目WEB-INF/lib-python目录下。
这个过程看起来比较复杂，不过没关系，modjy官方提供了一个制作好的包，你只需要下载Jython2.5，并把jython.jar文件复制到WEB-INF/lib目录下就好了。
下面的链接是这个包的地址：
http://code.google.com/p/rui7905/downloads/detail?name=modjy_webapp.zip
OR
http://downloads.xhaus.com/modjy_webapp_google_appengine/
里面还包含一个完整的使用modjy开发的demo程序，可以直接不经修改的在GoogleAppEngine上运行。样子看这里：http://jywsgi.appspot.com/ 。整个压缩包的结构如下：

以上文字大部分翻译自modjy官方的一个说明，原文在这里。
参考文档
http://code.google.com/appengine/docs/java/overview.html
http://opensource.xhaus.com/projects/modjy/wiki
]]></description>
			<content:encoded><![CDATA[<p><a href="http://modjy.xhaus.com/" target="_blank">Modjy</a>是一个让<a href="http://www.jython.org/" target="_blank">Jython</a>应用可以在Java Servlet容器内运行的桥梁，是一个标准的<a href="http://zh.wikipedia.org/wiki/WSGI" target="_blank">WSGI</a>实现。并且该项目已经被正式纳入到了Jython项目中。</p>
<p>现在Jython和modjy也可以在目前世界上最大的Servlet容器——Google AppEngine上运行了。</p>
<p>之前要使Jython运行在Google AppEngine上，是需要使用Google发布的的一个补丁，但最新的Jython2.5版已经不需要了。<span id="more-442"></span></p>
<p>Google AppEngine服务限制每个应用程序所包含的文件不能大于1000个。但是Jython的Lib目录下文件很多，显然已经超过了这个限制。最简单的解决方法是把所有的库文件都放在一个ZIP文件内。然后，还需要建立一个.pth文件应来指向这个zip文件。这个.pth文件的主文件名是什么无所谓，可以随便起。文件内容只需一句话“lib.zip”。把all.pth和lib.zip一起放在你的GoogleAppEngine项目WEB-INF/lib-python目录下。</p>
<p>这个过程看起来比较复杂，不过没关系，modjy官方提供了一个制作好的包，你只需要下载Jython2.5，并把jython.jar文件复制到WEB-INF/lib目录下就好了。</p>
<p>下面的链接是这个包的地址：<br />
<a href="http://code.google.com/p/rui7905/downloads/detail?name=modjy_webapp.zip" target="_blank">http://code.google.com/p/rui7905/downloads/detail?name=modjy_webapp.zip</a><br />
OR<br />
<a href="http://downloads.xhaus.com/modjy_webapp_google_appengine/" target="_blank">http://downloads.xhaus.com/modjy_webapp_google_appengine/</a></p>
<p>里面还包含一个完整的使用modjy开发的demo程序，可以直接不经修改的在GoogleAppEngine上运行。样子看这里：<a href="http://jywsgi.appspot.com/" target="_blank">http://jywsgi.appspot.com/</a> 。整个压缩包的结构如下：</p>
<p><img class="alignnone size-full wp-image-449" title="modjy_webapp" src="http://kevin.9511.net/wp-content/uploads/2010/01/modjy_webapp.png" alt="modjy_webapp" width="435" height="208" /></p>
<p>以上文字大部分翻译自modjy官方的一个说明，<a href="http://opensource.xhaus.com/projects/modjy/wiki/ModjyGoogleAppEngine">原文在这里</a>。<br />
参考文档<br />
<a href="http://code.google.com/appengine/docs/java/overview.html" target="_blank">http://code.google.com/appengine/docs/java/overview.html</a><br />
<a href="http://opensource.xhaus.com/projects/modjy/wiki" target="_blank">http://opensource.xhaus.com/projects/modjy/wiki</a></p>
]]></content:encoded>
			<wfw:commentRss>http://kevin.9511.net/archives/442.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
