Sep 14

自从Google减少了GAE的资源配额后,比较早的一些Micolog会在很短的时间内将免费的资源消耗殆尽。在大家的强烈要求,作者发布了”rebuild”版本,将Django升级到1.2版本,达到了基本上能用的程度。其实还需要自己做一些比较的修改,依靠GAE提供的免费配额就可以支持一整天了,看到很多人都开始从Micolog逃离了,到目前为止GAE的稳定性和安全性还算是最好的,而且你不用担心GAE某天突然不能用了。前段时间的Dotcloud就删除了免费的版本,我架设在GAE上的站点就被删除了。GAE上另外一个基于Java的博客系统B3log Solo目前也很流行,作者对系统进行了很好的优化,而且更新很频繁,bug的提交修改也很及时。

下面说一些我自己的设置:
1.选择使用“High Replication”,使用最新的代码,两个版本”rebuild”和”master”都可以试一下。代码地址为:https://github.com/xuming/micolog。

2.修改模板中的一些参数,对诸如”entry.content_excerpt”的后面添加”safe”参数,需要修改的几个列在下面:

{{entry.content_excerpt|safe}}
{{comment.content|safe}}
{{self.m_list_pages|safe}}
{{blog.blognotice|safe}}
{{entry.content|safe}}
{{entry.edit_url|safe}}

3.在GAE管理后台,将”Max Idle Instances”滑动到最左边,将”Min Pending Latency”滑动到最右边,最大限度的节约系统资源。

4.评论系统好像有点问题,如果有必要可以关闭评论,另外需要定期删除垃圾评论,大量的垃圾评论会消耗大量的系统资源。我曾经遇到过1400条垃圾评论,系统资源在刷新两次之后就消耗完了。

5.关闭模板中的文章计数器和评论计数器。

Sep 07

1.如果你使用“自定义RSS”,所有的通过RSS订阅的内容会生成一本电子书,格式如FAQ中所示的那样,如果单独的RSS的内容本身就很多,建议按照模板自己写一个Book的模板。

2.如果网站本身提供RSS订阅,不论是摘要还是全文都很好办,复制一下南方周末的py文件,修改py文件文件中的几处内容可以了。当然追求完美的话,你可以为这本书设计一个封面和页眉,但是封面和页眉在一本书中只会出现一次。

3.订阅的内容较多的话建议新建一个帐号,分时段推送,这样可以错开推送的高峰期。

4.对于某些网站,如Nature、BBC等比较友好,生成的书籍比较工整,基本上不需要修改。但是对某些网站,可以通过remove_classes、remove_id等方式删除其中的广告内容,还可以顶点删除某些不需要的内容和调整格式,当然这需要你多次尝试和查看网页的源代码。

5.RSS过多导致内存占用过大,可以在”Application Settings”的”Performance”小节将”Frontend Instance Class”选择为”F2(1200MHz,256MB),这是FAQ中的内容。当然为了节约资源,你还可以将”Max Idle Instances”滑动到最左边,将”Min Pending Latency”滑动到最右边,这样可以保证24H内系统资源仍然不被消耗完。

6.编写Book的py文件时,可以查看GAE后台的Log文件,便于找出编写不规范的地方,py的格式很重要,任何一个小小的格式问题都可能导致运行失败。

7.最后一点,生成的电子书可以使用系统的“自动朗读”功能。

Jun 29

为了刷存在感,我一直通过Twitter2Blogger将Twitter上的留言每天整理一份发到Blogger上,记记流水账,刷刷Timeline,也算不错。

但是一年前在GAE上搭建的Twitter2Blogger目前已知提示错误,错误代码为”tweepy,auth.get_username()”,估计是Twitter起用了API 1.1,导致了tweepy的不兼容。现在tweepy中的API版本也跟着升级到了1.1,所以我也重新上传了一下代码。为了防止忘记搭建的过程,我就将搭建的过程。

1.准备工作
1.1注册GAE帐户,新建APPID。
1.2下载并安装Google App Engine SDK for Python。
1.3注册Twitter Application,填写Callback URL地址为 http://APPID.appspot.com/twitter2blogger/oauth_callback的形式,设置Default Access type 设置成Read only或者Read and Write,记录得到的得到Consumer key 和 Consumer secret。
1.4下载Twitter2blogger,地址为https://code.google.com/p/twitter2blogger/
1.5下载Tweepy,地址为http://github.com/downloads/joshthecoder/tweepy/

2.修改上传代码
2.1解压Twitter2Blogger,将Tweepy文件夹解压到与app.yaml文件同一个目录。
2.2修改app.yaml中的application为自己的APPID(即前面1.1新建的APPID)。
2.3修改main.py中26-32行的相关项目,包括Consumer key、Consumer secret、domain、time_local_offset、replies、blogger_mail和gae_mail。这一步骤要注意blogger_mail和gae_mail的邮箱地址,如果不能正常发布到Blogger的话很有可能就是这里的问题。
2.4使用Google App Engine Launcher工具或者appcfg.py update命令将Twitter2Blogger发布到GAE上,我一般喜欢使用命令行,简单方便干脆。

3.验证和配置阶段
3.1在浏览器中输入 http://APPID.appspot.com/twitter2blogger/oauth ,按提示操作,Allow之前设定的GAE应用XXX访问Twitter。
3.2修改cron.ymal中的schedule和timezone,重新发布;

4.其他设置
4.1修改第60行的内容,将Blogger上的日文标题修改为英文或者英文。
4.2修改cron.ymal里的时区为Asia/Shanghai,默认是Asia/Tokyo。

参考地址:http://sns.juziyue.com/home.php?mod=space&uid=162&do=blog&id=36687

Mar 02

无意中看到一个运行在GAE上的CMS程序–GAE Cupboard,作者是意大利的一个程序员,网址为http://www.gaecupboard.com/,大家可以去看看是什么样子的。GAE上的博客程序是很多的,但是CMS程序就没有几款,我个人觉得最好的一款就是Vosao CMS,这是用Java语言写的,但是我一直搞不定模板的问题,稍稍修改就会出问题,一旦出问题后还不好解决,所以就不是很喜欢用。

GAE Cupboard是用Python语言写的,语言简洁,还支持Markdown,是GAE上很好用的一款,而且对系统的消耗也很小,GAE免费的配额基本上够用。

我上传时出现过问题,一直得不到解决,曾给作者发过邮件询问,作者很认真的回复了,说需将下载的markdown和web放在项目所在的根目录,我就是将这两个文件夹放错了位置所以一直没有成功。

布置过程如下:
(1).下载GAE Cupboard的源程序,地址为:
https://github.com/systempuntoout/buckethandle

(2).下载Markdown和web.py的源程序,地址分别为:
https://github.com/waylan/Python-Markdown
https://github.com/webpy/webpy

(3).将解压后的markdown和web文件夹放到GAE Cupboard的根目录下面,解压后的其他文件夹可以不放入。

(4).修改app.yaml中的application ID,修改cron.yaml中的邮件地址,修改/app/config/settings.py文件中的相关设置,主要是application ID与绑定的域名以及其他细节设置。

(5).命令行上传。

最后放上作者网站的截图:

GAE_Cupboard.png

Feb 07

GAE上的博客经常受到垃圾评论的骚扰,可以将留言的IP添加到GAE的DoS里面,具体步骤很简单,新建一个dos.yaml文件,代码如下:

blacklist:
- subnet: 1.2.3.4
  description: a single IP address
- subnet: 1.2.3.4/24
  description: an IPv4 subnet
- subnet: abcd::123:4567
  description: an IPv6 address
- subnet: abcd::123:4567/48
  description: an IPv6 subnet

GAE官方的解释如下:

A dos.yaml file in the root directory of your application (alongside app.yaml) configures DoS Protection Service blacklists for your application. The following is an example dos.yaml file:

The syntax of dos.yaml is the YAML format. For more information about this syntax, see the YAML website.

A dos.yaml file consists of a number of blacklist entries. A blacklist entry has a subnet, and can optionally specify a description. The description will be visible in the Admin Console. The subnet is any valid IPv4 or IPv6 subnet in CIDR notation.