用Google App Engine做个人代理服务器(Linux版)

摘自:http://groups.google.com/group/gappproxy/browse_thread/thread/3d0ad3dd6331311

博文的链接地址是:http://hi.baidu.com/bdhoffmann/blog/item/
db383603b37756703812bbc8.html
~~~~~
身处教育网,找代理上网总是一件烦人甚至恼人的事情。某次和同学闲聊,他推荐了Gappproxy给我使用,我用了一下,感觉还可以。现将
自己使用的一些心得记录如下,希望能让广大Linuxer受益。(windows下使用的详细教程请参看http://skydao.com/
post/google- app-engine-to-do-with-personal-proxy-server-second-
edition/)

使用的过程主要分为两个部分。第一部分是上传一个文件到google appengine(GAE),第二部分是建立本地和GAE的连
接。

1:上传
1.1 创建一个google appengine帐号
点击链接 (http://appengine.google.com/)申请注册一个google appengine帐号,注册需要一个
gmail邮箱,另外在注册的过程中需要填入手机号码进行验证。

1.2 安装python
我的系统是Ubuntu8.04,所以只要apt-get install python就可以了

1.3 下载并安装google appengine软件包
点击链接(http://code.google.com/appengine/downloads.html),下载Linux平台的
Google App Engine SDK,并进行解压。我的解压路径是桌面上的GAE目录。

1.4 下载并解压fetchserver源码包。
点击链接(http://code.google.com/p/gappproxy/downloads/list),下载里面的
fetchserver- 1.0.0beta.tar.gz。这个是GAppProxy服务端源码包,用于架设自己的fetchServer。要将这
个包进行解压。然后将解压后的文件(fetchServer)夹放入Google App Engine SDK的安装目录。

1.5 编辑fetchServer目录下的app.yaml文件。
用nano或者其他方式编辑这个文件,主要编辑的参数是第一行application.
~~~~~~~~~~~~~~~~~~~~
application: aaaaaa(比如我的比如你的AppEngine地址是aaaaaaaaa.appspot.com,那就是
application帐号就是aaaaaa))
~~~~~~~~~~~~~~~~~~~~
编辑结束后,保存并关闭这个文件。

1.6 上传
进入Google App Engine SDK目录。然后运行命令:appcfg.py update fetchserver。程序会要求
你填入你的gmail和gmail的密码。
~~~~~~
hoffmann@ubuntu:~/Desktop/GAE$ python appcfg.py update fetchServer/
Scanning files on local disk.
Initiating update.
Email: aaa…@gmail.com
Password for aaa…@gmail.com:
Cloning 1 application file.
Deploying new version.
Checking if new version is ready to serve.
Closing update: new version is ready to start serving.
~~~~~~
OK ,上传部分完毕。

2:连接
2.1:下载客户端
点击链接(http://code.google.com/p/gappproxy/downloads/list),下载
gappproxy- 1.0.0beta.tar.gz ,这个是GAppProxy源码包,内含客户端所有源码,并将这个文件进行解压。我还是解压
在桌面上,文件夹的名字是gappproxy。

2.2 更改配置文件
进入gappproxy目录,用nano或者其他的文件编辑器编辑proxy.conf文件。在fetchserver一栏里面填写自己的
apengine地址。并去掉一行开头的井号(这个是注释用的)
~~~~~~~~~~~~~~~~~
GAppProxy configuration

# local_proxy
#local_proxy = host:port
#
# If local proxy needs authentication:
#local_proxy = user:passwd@host:port

fetch server
#fetch_server = http://127.0.0.1:8080/fetch.py
fetch_server = http://aaaaaa.appspot.com/fetch.py ###填写自己注册的appengine地
址。
#fetch_server = http://fetchserver-nolog.appspot.com/fetch.py
~~~~~~~~~~~~~~~~~~~~
然后保存并关闭。

2.3 运行代理服务
直接在终端里面运行 python proxy.py.如果看到HTTP Enabled : YES的字样,恭喜你,代理已经成功开启了。你
所要做的就是将这个终端一直开着,就可以上网了。代理的地址是127.0.0.1:8000.这个可以在浏览器里面设置的。
~~~~~~~~~~~~~~~
hoffmann@ubuntu:~/Desktop/gappproxy$ python proxy.py
——————————————–
HTTP Enabled : YES
HTTPS Enabled: NO
Local Proxy :
Fetch Server : http://aaaaaa.appspot.com/fetch.py
——————————————–
~~~~~~~~~~~~~~~~~~

注:
1:感谢博客天空岛里面的文章(http://skydao.com/post/google-app-engine-to-do-with-
personal-proxy-server-second-edition/)以及group上面WCM的指点。

2:虽然在主页上提到gappproxy仅支持标准80端口的HTTP协议和443端口的HTTPS协议,其他端口均不支持.但是我在实际应用的过程
中,上微软的live.com,总是上不去。=。=

3:现在google appengine开始收费了,标准为:每额外一小时CPU处理时间收费10美分;输入应用的数据每1GB收费10美分,输出的
数据收费12美分;每一 GB数据存储一个月收费15美分。所以强烈推荐大家自己在google appenging上自己搭建服务器。因为,免费的流
量对于个人来说是够用的,但是如果大家都用软件作者的服务器(客户端conf文件里面默认的那个),那么作者估计会花费大笔的银子的。

Posted in Uncategorized | Tagged , | Leave a comment

Say Hi to GNOME World

Hi everybody,

I’m new here, I will start my new blog from today, and I’d like to write my posts about GNOME,  and of course I’ll try to write in English. see you then. 🙂

Posted in Uncategorized | 2 Comments

i18n 和 l10n 区别

  • Internationalization = I18n
    Changing a program to support for multiple languages and cultural habits.

    • Character handling (unicode…)
    • Locale awareness (date formats, currencies, numbers, time zones, etc.)
      • Localizability
      • Isolate localizable items (messages, pictures, etc.)
      • Implement infrastructure necessary for localizing above items.
  • The programmer’s work.

  • Localization = L10n
    • Translate localizable items (messages, pictures, etc.) for one language.
  • Providing an internationalized package the necessary bits to support one’s native language and cultural habits.

    The translator’s work.

Gettext = complete toolset for translating messages output by programs.

Posted in Uncategorized | Tagged , | 2 Comments

Linux System Programming 学习笔记

the sector is the smallest addressable unit on a block deviice.
the block is the smallest addressable unit on a file system.
the page size is the smallest unit addressable by the memory management unit.


sector = 512 bytes
block = sector * 2(power 0, 1, 4) = 512 bytes, 1 KB, 4 KB
sector <= block <= page size

process

|------ data
|------ resources
|------ state
|------ virtualized computer

ELF section

text section: executable code, readonly data
data section: C variables with values, readable and writable
bss section: uninitialized global data


real uid is always that of the user who started the process.
effective uid may change under various rules to allow a process to execute with the rights of different users.
saved uid stores the original effective uid, its value is used in deciding what effective uid values the user may switch to.
filesystem uid which is usually equal to the effective uid, is used for verifying file system access.


real gid
effective gid
save gid
filesystem gid

IPC mechanism supported by Linux:

pipes
named pipes
semaphores
message queues
shared memory
futexes

Posted in GNU/Linux | Tagged | Leave a comment

srandom 与 random

今天看了看这两个函数的manpage,srandom 的作用是为random 做个种子,默认random生成的数是以srandom(1)为种子的。所以,虽然random 生成的数好像没什么规律,但每次生成的数都是一样的。如果想要改变这个所谓的“随机数”,就要再说srandom生成一个新的种子,比如srandom(2),不过这样做太麻烦了,先拿srandom(time(0))充个数吧。

#include <stdlib.h>
#include <stdio.h>

int main()
{
srandom(time(NULL));
printf(“the number is %ld\n”, random());
}

Posted in Programming | Tagged , | Leave a comment