存档

2008年11月6日 的存档

 
Google App Engine是Google推出的免费虚拟主机空间,其实这比一般虚拟主机强悍的多,你可以利用Google App Engine工具来开发网站或制作网络应用程序,Google会在自己的庞大服务器集群上为你提供空间、带宽、资源等。目前Google App Engine为每个用户提供10个Application(简称App),每个App有500M免费空间,每个App限制1000个文件,单个文件1M以内,每天流量20G。每个App提供免费二级域名1个,同时也可绑米。目前还仅支持Python一种语言脚本,不支持PHP、Perl、ASP等。
注意:这是Google面向程序开发人员提供的一项免费服务,如果你对Python不了解也不感兴趣建议不要申请,虽然很强悍但使用起来比任何一个免费空间都麻烦。
5G Python免费空间,Google免费提供
网址:http://appengine.google.com
如果你使用Google Apps,可以用“http://appengine.google.com/a/你的域名/”这个地址来申请,如果你要绑定域名,仅能绑定申请了Google Apps服务的域名。另外,申请的时候需要填写手机号码,会给你发送确认码来确认申请,目前Google在中国仅支持中国联通,所以要用联通手机申请才能收到确认码,如果你用的不是联通手机,那就无缘Google App Engine了,且一个手机只能申请一个帐户。
官方入门指南:http://code.google.com/appengine/docs/gettingstarted
Google提供主机空间的服务:Google App Engine

目前官方仅有英文版入门指南,所以在网上找了个网友翻译的中文版给大家做参考,有兴趣仔细看看吧。

配额限制:http://code.google.com/appengine/articles/quotas.html
Google App Engine详细配额限制,很全面。你的程序上传运行后,在Google App Engine的管理面板中可以看到配额使用情况。
Python运行限制:http://code.google.com/appengine/docs/python
Google提供5G免费主机空间
Google App Engine中的Python是运行在一个受限的环境中,例如:对操作系统的底层调用、网络操作以及一些文件系统操作都是不允许的,尝试这些操作时会引起错误。
用Python语言进行Google Web API 编程相当简洁,这一点从下面的脚本与交互式实例演示中可以看出来。
使用Python 进行Google Web API编程就像品尝点心,幸亏Mark Pilgrim提供了PyGoogle封装模块(http://pygoogle.sourceforge.net/)——现在由Brian Landers维护。PyGoogle抽象了底层的SOAP、XML与请求/响应层,节省了大量处理数据的时间。
Google提供提供5G Python免费空间
PyGoogle的安装
下载一个PyGoogle拷贝(http://sourceforge.net/project/showfiles.php?group_ id=99616),然后按照安装指令(http://diveintomark.org/projects/pygoogle/ readme.txt)进行安装。假设一切顺利,安装过程就会像下面一样简单:
% python setup.py install
如果你想试试不安装PyGoogle的情况,或者你没有获取在系统上安装软件的权限,这里会为你提供一个替换方案:直接将SOAP.py、google.py与脚本googly.py放在同一目录下。
代码实现
下面的代码保存到文本文件中,命名为googly.py。记得在使用之前,将代码中的insert key here替换成用户自己的Google 开发者密钥。

运行这个hack
像下面一样在命令行调用脚本[见前言“如何运行hack”]:

如下为一运行搜索python的示例:

活学活用
Python有一个神奇的接口,通过这个接口,可与解析器进行交互。这对于PyGoogle这样的模块来说,是再好不过的实验场,你可以通过这个接口快捷地查询Google API,研究它返回的数据结构。
下面是一个示例性的交互式PyGoogle会话过程,演示了doGoogleSearch、doGetCachedPage与doSpellingSuggestion等函数的用法。

十一 6th, 2008 | Filed under Share(分享)
标签:

 

<FORM ACTION=”<% = Request.ServerVariables(“PATH_INFO”) %>” METHOD=”POST”>

  同样的效果可以用HTTP的“SCRIPT_NAME”值获得:

<FORM ACTION=”<% = Request.ServerVariables(“SCRIPT_NAME”) %>” METHOD=”POST”>

  使用<A>元素打开一个不同页,可以使用:


<%
strFullPath = Request.ServerVariables(“PATH_INFO”)
‘Strip off the file name
strPathOnly = Left(strFullPath, InStrRev(strFullPath, “/”))
strNextPage = strPathOnly & “pages/next_page.asp”
%>

<A HREF=”<% = strNextPage %>”>Next Page</A>

  即使原始页面的名称或位置发生变化,这些实例都能正常工作,因为使用了当前页面的路径信息(当然,第二个例子在分离的目标页的名称发生变化时运行会失败)。
  换句话说,如果为搜索引擎的子会话自动建立URL,可以收集ServerVariable的一些值:

strFullURL = http:// & Request.ServerVariables(“LOCAL_ADDR”) _
& “:” & Request.ServerVariables(“SERVER_PORT”) _
& Request.ServerVariables(“PATH_INFO”)

  这将创建一个完整的URL包括端口号(这种情况下,不是标准值80)。例如,结果可能是:

http://194.74.60.254:1768/thispath/thispage.asp

  检测浏览器的版本
  ServerVariables集合中,另外一个有用的值是用户浏览器的用户代理字符串。在“Detecting the Browser Type”页面(browsertype.asp),使用ServerVariables集合中的“HTTP_USER_AGENT”值来获得用户代理字符串,一些脚本用来解析该信息并寻找生产厂家名称和浏览器版本。

<%
strUA = Request.ServerVariables(“HTTP_USER_AGENT”)
Response.Write “The User Agent string is <B>” & strUA & “</B>

If [...]

十一 6th, 2008 | Filed under Life(生活)