Steps to install mirrorrr and birdnest to GAE

  1. Create a GAE application named ‘<xxx>-proxy’;
    @ https://appengine.google.com
  2. Download the GAE SDK and then unzip it;
    @ https://code.google.com/appengine/downloads.html
  3. svn checkout http://mirrorrr.googlecode.com/svn/trunk/ <xxx>-proxy
  4. Change application name to ‘<xxx>-proxy’ and version to ‘1’ in app.yaml file
  5. Delete index.yaml file
  6. appcfg.py update xxx-proxy

自己建一个是好习惯,表老抢别人的流量用,霍霍~~~

Updated: Steps to install Birdnest to GAE

  1. Create a GAE application named ‘<xxx>-twitter’;
    @ https://appengine.google.com
  2. Download the GAE SDK and then unzip it;
    @ https://code.google.com/appengine/downloads.html
  3. svn checkout http://birdnest.googlecode.com/svn/branches/gae/
    DO NOT USE TRUNK
  4. Change application name to ‘<xxx>-twitter ‘ in app.yaml file
  5. Remove the following codes from code.py file.

    import socket
    import re
    ua = web.ctx.environ.get(“HTTP_USER_AGENT”, ‘None’)
    if ua.find(‘jibjib) >= 0:
    socket.setdefaulttimeout(60)
    elif ua.find(‘zh-CN’) >= 0:
    #raise Exception(‘unknown error’)
    socket.setdefaulttimeout(2)
    else:
    socket.setdefaulttimeout(2)

  6. appcfg.py update xxx-twitter

Oh…Twitter

云南真是避暑胜地,闭关一周安安静静看看书,其实也挺不错的。

言归正传,一直以来因为公司提供了很多VPN,所以也没有特别关注翻墙的问题。但今天突然发现博客首页的flash twitter插件没法用了。所以干脆就直接换成javascript的,然后开始翻墙。

翻墙基本原理是拿我这台博客服务器做代理,php不太熟,其间还google了一下“php if statement”:

http://blog.axqd.net/wp-content/themes/emplode/axqd.php?callback=TWTR.Widget.receiveCallback&count=50&since_id=2769255170&clientsource=TWITTERINC_WIDGET

<?php
if( $_GET[ ‘since_id’ ] && preg_match( ‘/^[0-9]+$/’, $_GET[ ‘since_id’ ] ) )
  echo file_get_contents("http://twitter.com/statuses/user_timeline/axqd.json?callback=TWTR.Widget.receiveCallback&count=50&clientsource=TWITTERINC_WIDGET&since_id=".$_GET[ ‘since_id’ ]);
else
  echo file_get_contents("http://twitter.com/statuses/user_timeline/axqd.json?callback=TWTR.Widget.receiveCallback&count=50&clientsource=TWITTERINC_WIDGET");
?>

搞定之后,可以选择自己处理这个json对象。不过既然已经有现成的,为什么不用呢?于是比照博客皮肤,在twitter官方配色了一个JS版本的client。

接下来转换资源地址有点麻烦:

先啃容易的骨头,VPN出去,下载相应的静态资源,比如style sheet,js file,还有几个png、gif啥的,然后修改其中一些资源里面的引用地址,再通通一股脑传到服务器上。

接下来改js文件,可惜的是,这个js文件是混淆过的,也不太知道怎么还原。好在混淆器大多像下面这样,在后面搞得像是符号表似的:

‘||||this|function|return||if|var||||||||||||||||||||||||||||||||||||||twtr|false|div|id|else|true|tweet||user|class|net|http|call|results…’

我试着替换其中某些字符串,在本地多尝试几遍,居然找到一个可用的替换。

当然这种方式也有不太爽的地方,细心的你会发现到twitter.com的链接全都被换成了blog.axqd.net。:P

不过反正放这个插件的目的在于展示,而不在于收集reply,所以也就懒得处理这个问题了,呵呵。