存档

文章标签 ‘Google App Engine’

micolog添加回复功能

2009年8月19日 24 条评论

本文是基于 houkai 为micolog所添加的回复功能做的一点小小的修改,原版提供了添加回复和引用功能的方法,我个人感觉引用功能通过完善回复功能可以取代,所以在微博中就没有添加引用功能,修改后的回复功能效果是在 @评论者 中加入评论者的评论链接,这样在浏览的时候就可以很方便的查看所回复的内容。具体效果可见:http://kay.at-blog.com

步骤:

1.打开主题下comments.html文件参照以下代码修改三处

1
<a href="#comment-{{comment.key.id}}" title="">{{comment.date|datetz:"Y-m-d"}} at {{comment.date|datetz:"H:i"}}</a><!--添加 start--><a onclick="return backcomment('<a href=#comment-{{comment.key.id}}>{{comment.author}}</a>');" href="#commentarea"><font color="blue">Reply</font></a><!--添加 end--></div>
1
2
<a name="commentarea"></a> <!--添加回复使用的锚--> 
<h1 class="comments-title">我要留言</h1>
1
2
3
4
5
6
7
8
9
10
11
12
13
function showinfo(msg)
{
alert(msg);
}
//回复自动输入姓名函数开始
function backcomment(msg){
backdb=document.getElementById('comment');
backdb.focus();
backdb.value="@"+msg+'\n';
return false;
//return true; 原来用锚来定位
}
//结束

然后至 model.py 中屏蔽部分代码,将原代码:

1
2
3
@property
def shortcontent(self,len=20):
return self.content[:len]

替换成:

1
2
3
4
@property
def shortcontent(self,len=20):
scontent=self.content.replace('<br />','&nbsp;').replace('<a href="#comment-','Reply CMID-').replace('">',' ').replace('</a>','')[:len]
return scontent

OK!

关于micolog上传时的400错误

2009年7月18日 没有评论

自从出现了GAE,好多人开始使用它建立自己的个人博客,基于GAE的博客程序我们已经知道了好多,比较来看,我个人比较喜欢的是micolog程序,功能与WP十分相像,最值得一提的是支持XML备份数据的输出与导入。

0.5版本的micolog基本的功能已经很完美了,只是在上传的时候会遇到400的错误提示,类似这样:

Error 400: --- begin server output ---
Creating a composite index failed: This index:
entity_type: "Archive"
ancestor: false
Property {
  name: "date"
  direction: 2
}

is not necessary, since single-property indices are built in. Please remove it from your index file and upgrade to the latest version of the SDK, if you haven't already.
--- end server output ---

错误原因:开发阶段使用过一些对单属性的排序读取数据,由本地app server记下了查询历史,自动生成了这些索引。每次在本地运行该app时都会自动生成这个索引。新的SDK出来后不支持这些单属性的索引,上传出错。希望新版本的app engine SDK会解决这个问题。

解决方法:直接把index.yaml中自动产生的些单属性索引信息删除,就能上传正确。如果在本地运行调试过了,下次上传app时都要这么做。

那什么是单属性索引呢?举例,下面这一段有entry_parent、entrytype、published、menu_order等多个属性,是多属性索引。

# Used 6 times in query history.
- kind: Entry
  properties:
  - name: entry_parent
  - name: entrytype
  - name: published
  - name: menu_order

而以下这段就只有date一个属性,是单属性索引。

# Used 6 times in query history.
- kind: Comment
  properties:
  - name: date
    direction: desc

注意:不能把那些用到的两个以上属性的索引删除了,可能会出现上传成功,但浏览站点时得到的是500错误信息。

分类: Python 标签: , ,

收到Google App Engine for Java激活邮件

2009年5月5日 没有评论

机缘巧合,开始使用了GAE的Python主机服务,速度一流,稳定性嘛,我想Google的主机服务没人会怀疑吧!

在使用测试的过程中,深深的被Python的简洁的代码和兼容性所吸引。

作为Google的程序代码,Python的确非常优秀,要不是因为这次的GAE服务,恐怕我也不会走近Python的世界。开源、兼容、简洁......在使用的过程中,Python让我真正体会到了 — CODE IS POETRY!

再结合Java,相信GAE平台会带给互联网新的活力和能量!

Java的支持听说Google只会对前10000个申请者开放,但是也尝试申请了Google App Engine for Java,没想到早上打开邮箱竟然收到了Google App Engine for Java的开通激活邮件。

Java是目前流行的开发语言,在企业软件中应用广泛,Google App Engine支持Java后,将会吸引大批Java应用程序迁移到Google App Engine平台,使得Google App Engine的应用更为广泛。

Google App Engine支持标准的Java应用,开发者也可以安装Google Plugin for Eclipse,可以提供App Engine API和其他相关类包,如Java Servlet API, JDO and JPA, javax.cache等。

对GAE for Java感兴趣的朋友可以去尝试申请一下,申请地址为:http://appengine.google.com/promo/java_runtime

分类: 随 笔 标签: , ,

另类方法实现GAE主机读取html文件

2009年4月30日 1 条评论

首先新建app.yaml文件,其中的handlers写上:

- url: / photos (photos为你指向的文件夹)
  static_files: photos/index.html
  upload: photos/index.html

- url: /photos/Liyang.jpg
  static_files: photos/Liyang.jpg
  upload: photos/Liyang.jpg

然后在本地photos文件夹下新建index.html文件和放置Liyang.jpg图片。

注意这几个文件的结构:

upload ——
               app.yaml
               photos ——
                               index.html
                               Liyang.jpg

然后把upload文件使用appcfg.py  update到你的GAE。

刷新一下你的页面看一下效果吧。

演示:http://weblog.crazyenglish.info/photos

Google App Engine 如何使用静态文件

2009年4月30日 没有评论

(本文译自:Google App Engine Getting Started)

和其他的web发布环境不同,Google App Engine 不支持直接将应用目录下的文件直接输出的功能。也就是说,如果我们将模板文件取名为 index.html, 我们并不能直接通过URL /index.html来访问这个文件。但是现在有非常多的应用需要我们提供文件直接输出的功能,例如图片,CSS,JavaScript等等,这些类型的文件都需要直接输出到客户端。GAE提供了这样的功能,你不需要编写自己的处理模块来进行额外的处理。

使用静态文件

编辑helloworld/app.yaml 修改内容为:

application: helloworld
version: 1
runtime: python
api_version: 1

handlers:
- url: /stylesheets
static_dir: stylesheets

- url: /.*
script: helloworld.py

新加的handlers 部分定义了两个URL处理模块,其中 /stylesheets开头的所有URL都定义并转向了静态文件夹stylesheets ,如果在这个文件夹中发现了请求的文件,就会直接把这个文件的内容返回给客户端;而其他请求都会由helloworld.py 脚本进行处理.

默认情况下,App Engine 按照文件名后缀处理静态文件,如 .css 结尾的文件就会使用MIME类型text/css.

GAE按照在 app.yaml定义的顺序对URL进行处理。在这个例子里 /stylesheets 将先于 /.* 对路径进行处理。

想要了解更多在 app.yaml中的选项,请查看 the app.yaml reference.

下面,我们创建 helloworld/stylesheets目录,并且在这个目录下创建一个新文件 main.css :

body {
font-family: Verdana, Helvetica, sans-serif;
background-color: #DDDDDD;
}

最后,编辑 helloworld/index.html 插入如下几行:

<head>
<link type="text/css" rel="stylesheet" href="/stylesheets/main.css" />
</head>

刷新并查看效果

接下来...

我们的程序已经基本完备了,现在把它发布到Google的服务器上去吧......

Google App Engine 添加 Favicon 和 robots.txt 的方法

2009年4月30日 没有评论

1. 添加 Favicon 的方法

一般情况下,Google App Engine 上传的是应用程序文件(如:Python 的 .py 文件),如果你要上传静态文件(如图片、Javascript、css),就得把它们放到一个静态目录里,并在 app.yaml 配置文件(详细的解说)里做类似下面的定义:

handlers:
- url: /images
  static_dir: images
- url: /css
  static_dir: css

Favicon.ico 文件同样可以放到 images 目录下,上传后就可以通过地址 http://application-id.appspot.com/images/favicon.ico 访问了。

然后在 HTML 文件的 Head 里头添加 <link href="/images/favicon.ico" rel="shortcut icon" type="image/x-icon"> 就可以让别人浏览你的网站时,看到你的 Favicon 了。(考虑到兼容问题,我没有用 type="image/vnd.microsoft.icon" )

但是,人家 favicon 默认都是放在网站的根目录下的,在 Google App Engine 里怎么实现呢?

方法是在 app.yaml 配置文件内添加如下语句:(紧跟 handlers: 下面就好了)

- url: /favicon.ico
  static_files: images/favicon.ico
  upload: images/favicon.ico
  mime_type: image/x-icon

意思就是,当别人访问 http://application-id.appspot.com/favicon.ico 时,我就用 images/favicon.ico 来代替输出。又因为 Google App Engine 不能根据 .ico 的后缀正确判断这个图标文件的 mime 类型,所以我们可以在这里明确指定了它的 mime_type 是 image/x-icon 。一方面,可以避免上传应用程序时出现“错误”提示;另一方面,可以直接在浏览器中打开这个文件,而不至于提示下载这个文件。(原来我是用  mime_type: image/vnd.microsoft.icon 的,但发现在 IE 下面,直接打开 icon 的地址,图标不能正常显示,所以还是用 x-icon 算了。)

当把 favicon.ico 文件“放”到根目录之后,那句 <link href="/images/favicon.ico" rel="shortcut icon" type="image/x-icon"> 就可以省略不用了。因为现在的浏览器都知道默认从网站根目录找 favicon.ico 文件。  

2. 添加 robots.txt 的方法

有了上面的经验,添加 robots.txt 就易如反掌了。我们同样可以把 robots.txt 放在 images 目录下,跟其它图片一起上传。只要在 app.yaml 配置文件中加上下面几句就好了:

- url: /robots.txt
  static_files: images/robots.txt
  upload: images/robots.txt  

OK. 祝大家玩 Google App Engine 玩得开心!我的GAE:http://weblog.crazyenglish.info

如何删除GAE中已上传的文件

2009年4月30日 2 条评论

GAE使用过程中,因为上传方式和后台并不能很直观的显示出相关数据,再加上免费用户官方给出的1000个文件的使用限制,还有的朋友测试时会残留大量无用文件,所以后期可能需要将其删除。

其实只需要将你使用的Project中的app.yaml中的version改成另外一个整数,比如:2。

然后update你的项目,之后到你app engine中的Dashboard下的Administration-Versions中选择将某个Version设置成Default。

最后再将以前的Version Delete掉就可以了。

强大的GAE

2009年4月30日 1 条评论

试用了Google的AppEngine,果然厉害......

从一开始的上传就完全被它征服!Google果然强大。其实Python也没有网友说的那么可怕。

免费用户可以建10个应用,支持非裸域名的绑定。

听说有一强人已经将自己的整站转移到了Google的服务器上!建的是国外的站还可以,但是如果自己的访问用户群体在国内......可经不起“强大”的G#F&W的折腾。

给个演示吧:http://weblog.crazyenglish.info

构建在Google App Engine上的几个程序

2009年4月28日 没有评论

搜集的几个构建在Google App Engine上的开源Blog程序,和一些gae的常用软件,建个gae站应该足够拉。

GAE的第三方上传工具SDUpload:http://quke.cn/log-150.html
GAE图片外链相册:
代码下载:http://code.google.com/p/diabloimage/downloads/list

以下是BLOG项目和示例
Plog http://code.google.com/p/pyweblog/          示例: http://plog.appspot.com
n23 http://code.google.com/p/n23/                       示例: http://n23.appspot.com/blog
xian-min http://code.google.com/p/xian-min/  示例: http://xian-min.appspot.com
tublog http://code.google.com/p/tublog/             示例: http://ether.appspot.com
NiuBi http://code.google.com/p/niubi/                  示例: http://niubi.appspot.com
onlypy http://code.google.com/p/onlypy/           示例: http://onlypython.appspot.com