名雅鞋厂2周年厂庆!

20101026027

20101026026 正在建舞台呢!还有抽奖活动,可惜没我的分~~~.

看到样品室那些人在弄抽奖的名字,在嘲笑有的人的名字.那付嘴脸真叫人恶心.

Google App Engine 文件代码备份

Google App Engine 不支持直接下载代码文件,所以我们无法直接将服务器上的代码进行备份。如果本地的代码一旦丢失,就很难找回,这点对GAE的用户来说,是相当麻烦的。

好在有人编写了一个工具,用于将GAE站点的代码打包成zip格式并下载

步骤如下:

1.在根目录下根据manatlan的代码建立zipme.py

2.在app.yaml中加入

- url: /zipme
  script: zipme.py

3.访问youapp.appspot.com/zipme

zipme.py脚本

#!/usr/bin/env python # -*- coding: UTF-8 -*- """ ########################################################################## ZipMe : GAE Content Downloader ########################################################################## Just add this lines in your app.yaml : - url: /zipme script: zipme.py ########################################################################## """ # manatlan from google.appengine.ext import webapp from google.appengine.api import users import wsgiref.handlers import zipfile import os,re,sys,stat from cStringIO import StringIO def createZip(path): def walktree (top = ".", depthfirst = True): names = os.listdir(top) if not depthfirst: yield top, names for name in names: try: st = os.lstat(os.path.join(top, name)) except os.error: continue if stat.S_ISDIR(st.st_mode): for (newtop, children) in walktree (os.path.join(top, name), depthfirst): yield newtop, children if depthfirst: yield top, names list=[] for (basepath, children) in walktree(path,False): for child in children: f=os.path.join(basepath,child) if os.path.isfile(f): f = f.encode(sys.getfilesystemencoding()) list.append( f ) f=StringIO() file = zipfile.ZipFile(f, "w") for fname in list: nfname=os.path.join(os.path.basename(path),fname[len(path)+1:]) file.write(fname, nfname , zipfile.ZIP_DEFLATED) file.close() f.seek(0) return f class ZipMaker(webapp.RequestHandler): def get(self): if users.is_current_user_admin(): folder = os.path.dirname(__file__) self.response.headers['Content-Type'] = 'application/zip' self.response.headers['Content-Disposition'] = \ 'attachment; filename="%s.zip"' % os.path.basename(folder) fid=createZip(folder) while True: buf=fid.read(2048) if buf=="": break self.response.out.write(buf) fid.close() else: self.response.headers['Content-Type'] = 'text/html' self.response.out.write("<a href=\"%s\">You must be admin</a>." % users.create_login_url("/zipme")) def main(): application = webapp.WSGIApplication( [('/zipme', ZipMaker)], debug=False) wsgiref.handlers.CGIHandler().run(application) if __name__ == "__main__": main()

这段代码会通过google的身份认证来判断访问者是否可以下载代码,所以不用担心代码泄漏。不过还是希望Google可以提供代码备份和数据库备份的功能。

广东东莞感觉到寒意了.

看到朋友们都说冷啊冷的,今天终于感觉到了.

我比较胖的说,还是喜欢寒冷天气.热天神马的最讨厌了

稳定免费空间pipni.cz的申请及使用

注册地址:http://new.pipni.cz/overeni.phtml

pipni.cz提供的稳定免费空间,看现在又开始火起来了,pipni.cz是捷克一家老牌的空间虚拟机提供商,创建于2001年,在2004年国内就有介绍它提供的免费PHP空间,可以说非常稳定。提供5G存储空间,月流量有100G,支持FTP和在线文件管理(可在线解压缩),支持MySQL 、PostgreSQL 数据库,可创建支持POP3, IMAP的EMail邮箱账号,不提供二级域名,申请时需要绑定自己的域名,支持绑定免费的TK顶级域名,网站默认支持https传输协议。无广告。

pipni.cz注册教程

网站界面默认为捷克语,可以在右上角选择English英文。

输入你的域名,选择后缀,点“Forwar”进入下一步。

Program

选择订单信息:

Term 中选择 Don’t extenge domain

Program 中选择 FREE – 0 months – 0 CZK (前面添加的域名需要已注册才会看到)

其他默认,点“Forwar”进入下一步。

Owner domain

在上面的表格下面又出现了一个表格:填写个人信息

其中“Phone number”填写的格式一定要“国家区号 电话号码”例如“+86 12345678”

全部填写完后点“Forwar”进入下一步。

Conditions webhosting

在上面的表格下面又出现了一个表格:

Kód pro slevu 资料博客用谷歌翻译了一下是“折扣代码”,随便填就行了

勾选协议,全部填写完后点“Forwar”进入下一步。

Finish

点“Forwar”进入下一步。

它自动会跳到注册的首页,过一会就会受到网站开通的邮件,里面有网站账号的信息。

后台登录地址:https://admin.pipni.cz

用户名:serb.tk

密码:随机

pipni.cz的FTP信息:

FTP服务器地址:ftp.serb.tk

或者在后台“Domain administration”——“FTP”中的Server显示的www20.pipni.cz

FTP用户名:serb.tk

FTP密码:随机

在线FTP文件管理地址:http://webftp.pipni.cz

网站根目录/www

FTP有时比较难连上,有时速度飞快,可能是和服务器有关。

pipni.cz的MySQL数据库信息:

数据库的连接

以EMLOG安装为例

// 数据库服务器:mysql

// 数据库用户名:emlog.serb.tk

// 数据库密码:你的密码

// 数据库名:emlog_serb_tk

注意,尤其是数据库服务器一项,和我们平时所用的空间所填写的localhost不一样。还有dbuser及dbname,不要搞错了。

数据库管理地址:http://mysql.pipni.cz

pipni.cz绑定域名:

只能把域名的DNS修改为ns.pipni.cz和ns2.pipni.cz

在测试过程中发现最终解析成功域名的IP是随机的,如果被分配到93.185.104.27的话,在国内将无法访问。

Blog又活了

ghs 38被墙了,32还幸存唉..找了半天,本来以为32早就被墙了的说


Google App Engine建立自己的blog,并且绑定免费的.TK域名.

1.注册.tk域名并解析到免费的dns服务器.

首先到http://www.zoneedit.com/signup.html注册一个帐号,当然也可以别家.

再到www.dot.tk申请一个帐号,全中文应该很简单.再看看你要注册的域名有没有被注册,如果没有,那么到zoneedit

点add zones,添加你要注册的域名.如:我注册的WENDEY.TK,这时zoneedit会有提示要你把域名的ns指向他的ns

服务器,我的是ns13和ns8.这时回到dot.tk选择如图image

输入验证码点击下一步成功.

2.注册google app engine 帐号

一步:当然是注册Google帐户,如果已注册,只要登陆即可,Google帐户只要注册一个,Google的所有应用都可使用。

第二步:创建一个应用,GAE总共可以创建10个应用,每个应用空间500M。

创建一个Google App Engine应用

创建一个Google App Engine应用

第三步:输入申请人的手机号码,Google App Engine会向申请人手机发送一串数字组成的号码短信,以便验证申请人的有效性,网上有人说是发Mail,当前Google似乎使用了SMS,形式为国家代码+手机号码,即+86TelephoneNum,然后就耐心等待吧,很长时间哦,嘿嘿

填入手机号码,等待GAE发送申请码

填入手机号码,等待GAE发送申请码

第四步:填写GAE应用的详细信息,应用标示符注册完毕后是无法更改的,填写时注意。

填写GAE应用的详细信息

填写GAE应用的详细信息

第五步:填写完毕后,GAE的应用就算申请注册成功了,你可以查看控制面板或者用appcfg.py上传你的开发程序或者邀请开发者和你一起来开发,注册其他应用依此类推。

GAE应用注册成功了

GAE应用注册成功了

 

3.将.tk域名添加到google企业应用套件.

打开https://www.google.com/a/cpanel/education/new?hl=zh-cn,填入wendey.tk下一步,之后的表格要注意的地方是电话号码,我填的是213-2572135,国家选的美国,因为google不支持中国地区的申请.还要选择使用标准版的内容,因为直接申请标准版会被google看成自动机器人不通过.

  • 下一步之后填用户名和密码则开通成功.会收到几封邮件,是关于升级到教育版的,无视就好了.之后会自动进入管理后台.点击  添加更多服务
Google App Engine里填入你刚才申请的应用id比如 soryusama.appspot.com,就填soryusama就行了.这样就把你的gae和域名绑定了.

gae不支持裸域名,必须加上如www,blog等二级域名.将www.wendey.tk作个cname别名到ghs.google.com.由于ghs.google.com大家可以网上搜索一下可用的ip,做a记录到上面就行,也能直接做cname到blog.soryu.pp.ru上一劳永逸.(这个是我的域名,如ip被墙会第一时间换ip).

 

4.上传Micolog到gae.

下载Micolog 0.7 Release,下载gaehttp://code.google.com/intl/zh-CN/appengine/downloads.html#Download_the_Google_App_Engine_SDK

看教程

.这样你的blog就建立了.之后用你的google帐号登录后台管理和导入xml吧

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

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