[ Content | Sidebar ]

Python简介

四月 15th, 2011

给同事做了一个小分享,主要是简单介绍一下python这门语言,ppt贴上,期待python能够成为主流!!!

一个vpn越墙用的路由表修改工具

四月 14th, 2011

刚换到mac,昨天搞定翻墙这事,自己有个vpn,但是几乎没用,因为开了vpn所有连接就都走vpn了,与内网测试机无缘。不过直到昨天发现,路由表可以搞定这事。。
原理是:默认网关不选vpn,把需要访问网站的ip添加到路由表,路由到vpn网关即可~
工具:autovpnconf
下载之后用文本编辑器修改一下里面需要使用vpn的网站列表,我只加了几个

前提:连接vpn,并且vpn不是默认网关
mac下只要不选“通过vpn连接发送所有通信”即可
ubuntu下,连接vpn之后就成默认网关了,可以手动改回来

sudo route del default
#xx.xx.xx.xx是网关ip eth0是有线网卡设备名,如果用无线就是 wlan0
sudo route add default gw xx.xx.xx.xx dev eth0
Copy Code 

之后执行:

sudo ./autovpnconf
Copy Code 

OK了,这样以来只有指定的网站才会走vpn。
!!!每次连接vpn都需要执行一下~~!

一段指定附件下载名的apache配置

三月 21st, 2011

继续优化

SetEnvIf Request_URI "\/SAVE\/(.*)$" save_file_name="$1"
SetEnvIf Request_URI "\.(jpg|jpeg|png|gif|bmp)$" is_image_file
#除了图片,其他文件直接访问均提示下载,防止上传了js,css,html等不应该被浏览器加载的文件
Header set Content-Disposition attachment env=!is_image_file
Header set Content-Disposition "attachment; filename=%{save_file_name}e" env=save_file_name
RewriteEngine On
RewriteRule ^/(.*)\/SAVE\/.*$ /$1 [L]
Copy Code 

——————————————————-
优化一下~

SetEnvIf Request_URI "\/SAVE\/(.*)$" save_file_name="$1"
Header set Content-Disposition "attachment; filename=%{save_file_name}e" env=save_file_name
RewriteEngine On
RewriteRule ^/(.*)\/SAVE\/.*$ /$1 [L]
Copy Code 

只需要访问 : ….5_1300238850.jpg/SAVE/我的图片.jpg 就可以了,ie下文件名后面竟然也不会出现“[1]”了~
—————————————-

SetEnvIf Request_URI "_DOWN_NAME_(.*)_DOWN_EXT_(.*)$" save_file_name="$1.$2"
#下面这种ie下有问题
#SetEnvIf Request_URI "_DOWN_NAME_(.*)$" save_file_name="$1"
Header set Content-Disposition "attachment; filename=%{save_file_name}e" env=save_file_name
RewriteEngine On
RewriteRule ^/(.*)\._DOWN_NAME_.*$ /$1 [L]
Copy Code 

实现的效果:
假设一个附件上传后的地址是:

http://foo.com/03/21/1bc5b77f3e50b7fbe12c792ee438da45_1300688708.jpg

如果想要指定下载名,则访问:

http://foo.com/03/21/1bc5b77f3e50b7fbe12c792ee438da45_1300688708.jpg._DOWN_NAME_我的图片_DOWN_EXT_jpg

ie下的效果:
screenshot_127.png

chrome下的效果:
screenshot_128.png

FF下的效果,很杯具:
screenshot_129.png

———–
vim->email->wordpress

升级了一下wordpress,貌似出bug了

二月 28th, 2011

WordPress升级到3.1发现用来排除某些目录feed输出的代码不好用了,bug?,有空再整。。

function blue_feed_cat_exclude($query) {
    if ($query->is_feed) {
        $query->set('cat','-48,-179');
    }
    return $query;
}
 
add_filter('pre_get_posts','blue_feed_cat_exclude');
Copy Code 

———–
vim->email->wordpress

twisted保持http长连

二月 15th, 2011

twisted实在是太方便了~

#下面是示例代码,未经测试。。
from twisted.internet import reactor
from twisted.web import server, resource
 
clients = []
 
class Simple(resource.Resource):
    isLeaf = True
    def render_GET(self, req):
        #保存request
        clients.append(req)
        #客户端主动终止时删除
        req.notifyFinish().addErrback(lambda _:clients.remove(req))
        #保持长连
        return server.NOT_DONE_YET
 
#之后可以异步的用类似下面的方法回写数据,关闭连接
#for req in clients:
#    req.write('xxx')
#    req.finish()
#clients = []
 
site = server.Site(Simple())
reactor.listenTCP(8888, site)
reactor.run()
Copy Code 

中间调试的时候有个问题,就是用FF同时发起两个长连请求同一个URL,第一请求返回前第二个请求会被阻塞,一开始还以为是twisted的问题,但后来试了下同时开FF和chrome没有问题。

———–
vim->email->wordpress