视图模式: 标准 | 列表
py2exe打包多线程脚本出错的解决方法
今天用urllib2写了一个多线程爬虫程序,在python环境下解释运行没有问题,但用py2exe打包后执行却出现错误。返回

Exception in thread Thread-1 (most likely raised during interpreter shutdown):
Traceback (most recent call last):
File "threading.pyo", line 486, in __bootstrap_inner
Unhandled exception in thread started by
Error in sys.excepthook:

Original exception was:

由于急用,所以当时没有和py2exe纠缠,用cx_Freeze打包发布了,并且运行正常。晚上研究了一下这个问题,总算找到了原因。

原来在解释器下,主程序会在各个线程执行完退出。而py2exe打包后,主程序在启动线程后(不等线程执行完)就退出了,代码里又没有指定主程序必须在线程执行完后退出,所以会出现错误。

举个例子:
......
【阅读全文】
截图存照
全国人民代表大会
GTA4 PC版试玩,画面比想象的好
最近一直在玩GTA4,感觉不错。比上一代的GTA:SA多了很多细节。画面也上了一个层次。不过对电脑的要求高了许多,特别是对CPU的要求,单核基本上没戏,双核勉强可以中特效流畅,要想全特效,估计得高端四核CPU才行。

本人的电脑配置为E7300+4G+HD4850 512M,开不了全特效。在1680*1050,中等特效,车流33下,室内60FPS,室外20-30FPS,感觉还好,起码大部分时间不卡,呵呵。以下图片用Fraps截图:

这两车看起来不错,抢来的^^:
GTA4
......
【阅读全文】
用CONNECT方法突破HTTP代理服务器的扩展名封锁(python)
公司里的电脑是通过一台内部代理服务器上网的,为了节省带宽,对下载进行了限制。方法是过滤URL中的扩展名,如'exe','rar','tar.gz'等,并且限制了连接时间,当连接时间超过2分钟就主动断开。这样平常就只能看看网页了,要下载就要申请,非常麻烦。虽说可以通过“问号大法”来解决URL过滤,wget来解决断点续传,但这样还是不好,下大一点的文件或网速慢一点时,要断线好几十次。一次偶然的机会发现公司的代理服务器没有限制CONNECT命令,哈哈,终于可以解决下载问题了。

通过向代理服务器发送CONNECT命令,可以让代理服务器和目标主机的目标端口建立一个连接,这样本机和目标主机就有了一个通道。从此以后向代理服务器发送命令就等于向目标主机发送命令。这和一般的GET方式不同,完全不受过滤机制的影响。先来看看两种方式的不同之处,

GET方式:

socket.connect('HTTP代理服务器IP',HTTP代理服务器端口)
socket.send('GET http://XXX.XXX.XXX/XXX.EXE HTTP/1.1\r\n
HOST: XXX.XXX.XXX\r\n\r\n')

CONNECT方式:

socket.connect('HTTP代理服务器IP',HTTP代理服务器端口)
socket.send('CONNECT XXX.XXX.XXX:80 HTTP/1.1\r\n\r\n')
socket.recv(1024)
socket.send('GET /XXX.EXE HTTP/1.1\r\n
HOST: XXX.XXX.XXX\r\n\r\n')

就是这么简单,下面就用python来完成编码。python有很多对http协议的封装库,如urllib2,httplib等。但我不知urllib2如何设置connect方式的代理,懒得去研究了。所以直接用socket来实现。相对于C++,用python来操作socket是如此的简单优雅。
pget.py:......
【阅读全文】
sourceforge.net又被封了
要下载wxPython,连到sourceforge.net被弹回,打开代理能连上,顿时怒火涌上心头!打开photoshop作图一张来发泄。

操你妈的GFW
用 python + pygtk + glade3 实现Yahoo翻译桌面版
每次翻译都去yahoo的网站不是很方便,所以自己写了一个Yahoo翻译桌面版:)

整个程序用 python 做为编码语言, pygtk 库实现 gui。为了方便,用glade3画了界面。先来看看最终的程序界面吧:

yahooTrans

(由于我用不到别的外语,所以功能上只有英汉互译。)

首先,在开始编码之前,分析一下yahoo翻译的网页(http://fanyi.cn.yahoo.com/)来确定程序的核心逻辑。Yahoo翻译的网页源码很简单,一目了然,不像google翻译的网页有这么多花哨的ajax,每次翻译都是向"http://fanyi.cn.yahoo.com/translate_txt"POST数据,格式为

“ei=UTF-8&fr=&lp=en_zh&trtext=”

英译中对应的lp值为"en_zh",中译英对应的lp值为"zh_en",trtext就是原文的内容。

分析好了就可以开始编码了:) 贴出程序的完整源码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
......
【阅读全文】
中宏保险网站被黑竟全然不知
zh一次偶然的机会打开中宏保险的网站(http://www.manulife-sinochem.com/)看见首页底部有个难看的滚动框。原来以为是滚动新闻之类的,突然眼前一亮,似乎看见“美女”二字。心想保险公司网站不会出现这个词吧~仔细一看,果然如此,打开源代码,看见一段文字

“公司是一种企业组织形式。从严格意义上讲,公司是指即依照法律规定,由股东出资设立的以营利为目的的社团法人。换句话说,公司是按照一定组织形式形成的经济实体,一般以赢利为目的,从事商业经营活动或某些目的而成立的组织.以实现投资人利益最大化为使命,通过提供产品或服务换取收入。它是社会发展的产物,因社会分工的发展而发展。精品网站往往来源于不起眼的站点,就像这个美女站http://www.wyk**.com/我要看美女网一样,提供各类的美女图片,内容结构分的很好,名字我要看美女还很好记忆,回头率很高,而且代码完全通过W3C认证...公司一般具备独立承担民事责任,统称为法人。”

原来是被黑了-_-!

最让人惊奇的是我在星期五(10号)就发现了(见《保险公司不保险-中宏保险网站被黑,全然不知:)》),由于博客服务器挂了,所以没有写下来。今天服务器好了就去看了一下,发现还没改过来。原来在IE下是显示正常的,在Firefox下才能看见露出马脚,哈哈。难道中宏的IT是不用Firefox的?

zh

zh
服务器终于恢复了
10月6号,由于服务器挂了,导致本博客无法访问。今天终于恢复了。

运营商在发给我的信中说是由于大规模CC攻击,导致服务器系统损坏~,10号就能恢复。后来一会儿说换硬盘,一会儿又说换掉整个服务器,直到今天下午才能访问。但愿以后不会再出问题了~
加入了分页显示
随着日志越来越多,首页已经很长了,所以在前台加了个分页显示,每页显示10条记录。采用最传统,最简单的分页算法。界面参考了galeki的样式,简单又干净。

其实原先对分页显示有些思考,希望做一个对搜索引擎友好的分页。即,添加的新文章显示在最后一页,进入博客后默认是最后一页,要看旧的日志就向前翻页。这样,每个页面地址对应的内容就不会随着日志的添加而改变。

不过,仔细想想那样也不好,因为那样会导致首页显示不满~有可能只显示一篇日志。所以,只好放弃,还是用传统分页法吧。
在 ubuntu 8.04 下使用 ibus 输入法
ibus是一个新的基于python的输入法框架。具体介绍见《ibus输入法0.1.1.20080830试用》这篇文章。

如果自己编译ibus的话,需要最新的dbus-python,而8.04的dbus-python是低版本的。还要先编译最新版的dbus-python,比较麻烦。

好在不久前ibus在 ubuntu 8.04下可以直接通过cn99的源安装了。注意,源里面要有“deb http://ubuntu.cn99.com/ubuntu-cn/ hardy main restricted universe multiverse“,要不然会提示找不到ibus包。如果只用拼音的话,直接 sudo apt-get install ibus-pinyin 就可以了。这条命令会安装ibus和ibus-pinyin两个包。如果要用其他输入法,可以再安装 ibus-tables这个包,其中包含了五笔86、五笔98、二笔、郑码、仓颉5代。

ibus

安装完毕后,还需要配置ibus为系统输入法。比较简单且不容易出错的方法是通过im-switch来设置,im-switch应该在系统中自带了,没有的话就apt一个。因为ibus在安装的过程中已经在/etc/X11/xinit/xinput.d下面建了一个配置文件,所以直接打“im-switch -s ibus“选定这个配置。接着重新启动就可以使用ibus了。这种方法保留了scim,以后可以im-switch切换回来。......
【阅读全文】