分类目录归档:Internet

读ThinkPHP的Example有感

前几天下载了ThinkPHP的代码来看,给我的印象没有CodeIgniter(CI)的那么好。或许是因为我下载的是最新的RC版本吧!里面的Examples不全,打开几个提示404,因为比较关心数据库操作方面的代码。另外,跑了一下里面的Blog的Example,功能都挺完善的。不过花了十几分钟看了一下代码,就害怕了。不大喜欢的原因有下:
继续阅读

用CodeIgniter写了第一个企业网站

某个晚上,发现使用PHP Web Framework来开发一些功能比较一般的商业网站效率挺高的。因此,有兴趣接触一下这方面的东西,免得我每次给自己的应用编写站点都Copy一大堆重复使用过的代码。搞Web的人太多了,同时涌现出来的Web框架也太多了,不知道选择哪一个好,怕选到一个不适合自己的,就浪费了不少时间了(虽说也能从中学到一些东西)。

上网搜索了一下,国外很多人推CakePHP,Zend Framework,Yii,Symfony,CodeIgniter等。在某论坛上看到有很多人推ThinkPHP(TP)的,好像人气挺高的。之前有个同学跟我推荐过ThinkPHP,我当时对基于别人的基础上开发站点还不怎么依赖,没多大兴趣。这次上官网看了一下,没找到在线的Example代码,所以没有理会。

后面看到有人推荐CodeIgniter(CI),听起来也挺不错的,于是上官网看了一个20分钟建博客的视频教程。从此就感觉到用它的框架的确比我之前自己写的那个框架方便多了!虽然要遵循一些规矩比较多,但是功能很强大,很全!点这里可以观看视频“Create a Blog in 20 Minutes”。
继续阅读

手动创建ICMP Tunnel实现VPN上网(附Python实现代码)

其实这是一篇讲解利用中国移动CMWAP的一些特性来实现免费上网的博文,但是没有以这个为标题,因为

1、用的是2G的EDGE网络,跟2G手机上网一样,速度有限.

2、各地区的移动设备有差别,例如在广州,这种方法行不通。但是广州的移动Wifi是可以通过UDP建立VPN来免费使用的。

3、不想吸引太多人的注意。

我见过很多公共网络都对UDP和TCP有不少限制,以致于我们不能自由地访问互联网。为了摆脱这种束缚,很多人都为此付出了很多努力,例如各种代理软件,各种隧道,各种VPN等。本文介绍的是一种比较罕见的ICMP隧道方式建立VPN。

背景

一年前,因为在县城里没有网络使用,又不想晚上跑到外面上,所以经常使用笔记本连接手机的GPRS网络来上网。打开一些网页或者聊天工具之类的,网速的快慢并不是很重要。但是流量有限,当时开通了300MB的套餐也很快被消耗尽了。有一次,在Ubuntu下创建了一个cmwap网络,cmwap是需要设置代理IP为10.0.0.172才能上网的。但是奇怪的是,我竟然可以ping通我自己博客服务器的IP。所以我想cmwap对外网IP的访问只是限制了TCP和UDP类型的数据包进出而已。
继续阅读

用alarm信号处理阻塞socket的超时

以前在使用阻塞(blocked)socket的connect,send,recv函数的时候,通常都使用settimeout来设置超时。
如下,

#!/usr/bin/env python

import socket
import time

fd = socket.socket()

try:
    print "connect", time.ctime()
    fd.settimeout(5)
    fd.connect(("twitter.com", 22))
except:
    print "timeout", time.ctime()
finally:
    fd.settimeout(0)

继续阅读

如何让多个进程监听同一个TCP端口

通常我的服务器上都会启用多个php-cgi程序,有时候这样做是很必要的

1. 可以同时让多个进程处理请求,负载均衡。
2. 避免一个进程崩溃时,在重新启动前,无法及时提供服务。

启用多个相同服务进程必然需要考虑共用一个socket。对于php-cgi程序来说,是通过stdin文件描述符来传递这个socket。

工作原理如下:
继续阅读

写了一个Web Gateway做Proxy

因为EMSVPS的服务器实在有太多的问题,故现在改回比较稳定的burst.net机器。现在Paypal支持Unionpay的卡,5.95USD/mo大概人民币38元。burst.net的机器提供512M内存和2个IP地址,内存充足的时候跑起Wordpress的确轻松很多了。现在一个IP用作博客服务,另外一个IP用作提供一些Web服务。

因为不同的Web服务都需要监听一个服务端口,为了能让他们共用一个IP上的80端口,需要一个代理分发请求的程序。例如
访问http://lab.xiaoxia.org/server/*的请求分发到localhost:10000的服务,
访问http://lab.xiaoxia.org/whois/*的请求分发到localhost:10001的服务,
而访问http://lab.xiaoxia.org/*的请求,直接获取www目录下的资源文件,例如index.html。

因为使用的都是同一个域名,不同的只是路径,要根据不同的路径选择不同的服务端口,我使用了正则表达式来解决这个问题。

效果见 http://lab.xiaoxia.org/
继续阅读

这几天都在写Submission System

之前研究了一段时间ExtJS,在写一个FTP后台管理系统,可惜没有完成。最近写Submission System因为不是开源项目,所以前端开发没有使用支持GPL的ExtJS,使用了支持MIT的jQuery,以及下面这些东西:

一个小巧又美观的编辑器 cleditor
用来弹出modal window的jQuery DOMWindow
一个不错的表格插件 flexigrid

第一个编写的页面,有点丑,自己设置的样式,没有太花心机在这个上面。


继续阅读