写了个监视酷讯火车票的 Python 程序
受不了了,买火车票买不到,只好盯上黄牛票了,可是没法不停地刷页面啊,刚刚就错过了一个发布了 20 分钟的黄牛票,打电话回去时已经打不通了。。。-_-#
就写了个程序来解决这个问题,粘了一堆代码(参考太多,头一次写这种东西,原作者勿怪),总算成了,可能有 bug,欢迎提交 patch 或者更好的解决办法。
可以通过修改下面的参数来修改程序执行:
url = "http://piao.kuxun.cn/beijing-jinggangshan/" # 把火车票的搜索地址粘在这里,这里假设是北京到井冈山的 key = "2张" # 搜索关键字,我得俩人啊。。。 sequence = 60#60 * 5 # 搜索间隔,给服务器压力别太大,每分钟一次就行了。
#!/usr/bin/python
# encoding: utf-8
import urllib2
import mailbox
import time
import os
import re
from sgmllib import SGMLParser
class URLListName(SGMLParser):
is_a=""
name=[]
def start_a(self, attrs):
self.is_a=1
def end_a(self):
self.is_a=""
def handle_data(self, text):
if self.is_a:
self.name.append(text)
url = "http://piao.kuxun.cn/beijing-jinggangshan/"
key = "2张"
sequence = 60#60 * 5
request = urllib2.Request(url)
request.add_header('User-Agent', 'Mozilla/5.0')
opener = urllib2.build_opener()
data = opener.open(request).read()
ticket_name = URLListName()
ticket_name.feed(data)
cache=[]
while 1:
try:
print "beign retrive"
data = opener.open(request).read()
ticket_name.feed(data)
print "beign scan"
for result in ticket_name.name:
if result and result.find(key) >= 0:
if result in cache:
pass
else:
print "found:" + result
cache.append(result)
print "scan finished, begin sleep " + str(sequence) + " seconds."
time.sleep(sequence)
except:
raise
[转] 我们都是海盗党
很好的博客,希望能传播开,大家都能看见,希望封网的上级领导也能看见。
原文在:http://www.mindmeters.com/showlog.asp?log_id=9481
上上周末,我没有到电影院排队去看《三枪》,而是蜗居在家,抱着电脑看《海盗电台》(The Boat That Rocked)。顺便坦白一下,这是未经许可,用电驴非法下载观看的。因为我确定地知道,这种“非主流”的文艺片,是几乎不可能通过广电总局的审查而正规上映的。
Google Wave 使用体验
Google Wave 拿到有些日子了,写写这两天对它的感觉。
这东西到底是什么?团队协作平台?Email 接替者?Wiki?BBS?它给我的感觉什么都不是,而是展示 Google 网页开发实力,和最新 Web 开发技术的一个测试产品,也有可能是因为它目前的不完善导致定位不明确吧。
打开 Wave 之后,就会看到浏览器的加载小滚轮一刻不停地滚动着,因为它需要时刻不断地连接到服务器上,获取好友以及消息的信息,在 Wave 的演示视频上我们可以看到,当 Contacts 在某个”波“里打的字,会即时显示在页面上。这是 Google 强大云计算的佐证。
奇异的滚动条,有点像 Aperture 里的风格,颠覆了传统滚动条的概念,点击直接贴伏在 Bar 上地向上按钮的时候,页面会轻轻地向上地滚动一点点,但是将 Bar 直接向下拖到底,页面不是跟着滚动着到底,而是会像开了”平滑滚动“似地划过浏览器。加上所有可以随意伸缩、最小化的面板。这是最新 Web 开发技术的佐证,而这其中有 Google 很大的功劳。
不过我依然觉得它定位不明确,缺乏 BBS 的公开,Wiki 的开放,Email 的便于查询,团队协作平台的目标性
一个 Wave 就是一个话题,用空格键在所有未读的回复间切换,对于不感兴趣的 Wave 可以 Archive 掉。用户可以很轻易地上传各种文档到自己的 Wave 中(拖拽上传对 Safari 似乎无效)。超酷的操作方式似乎才是 Wave 的全部。
我倒希望它能在未来的版本中进一步完善。
有账号的可以加我 Wave - xuqingkuang # googlewave.com
十月总结
到月末了,对这两个月做一下总结。
首先是 VirtLAB,这个从三月开始的自动化测试项目,该项目用于在 QE 团队内部替代 RHTS,由于是重新设计的 Database schema,所以我可以充分发挥 Django 自身的优势,也是因为通过 VirtLAB,使我的 Django 水平得到了极大提高,同时由于 UI 前端是自己编写的,所以对 Javascript 也远远胜过之前。现在无论是 Django 本身的 ORM,Template,Form 都很难难到我了,自定义 ORM model field、Form 的 RequestContext Processor,Field 和 Template 的 Tag、Filter 也都得心应手。
在这两个月里,VirtLAB 发展到了 2.0,主要是增加了 Queue,用于在一台机器上建立一个 Job 队列,可以同时在一台机器上排上多个 Job,一个一个重启电脑,重装系统后执行测试脚本的特性;另一个就是晚上趁着没人的时候,自动根据数据库覆盖率(在哪些机器上运行过),跑测试的功能,所以界面也换成了夜间的风格。
新版本极大地提高了自动化功能,由测试人员编写好测试脚本,白天可以由测试人员自己提交 Job 在不同的机器上执行并实时观测运行过程,晚上下班后程序也会将那些在一些机器上没有跑过的测试执行一遍,最终做到每一个测试脚本在所有的机器上都执行一遍,以检查系统是否能够在不同类型的机器上稳定运行。
另一个是用于手动测试的 TCMS(与 Testopia database schema 完全兼容的 Test Case Management System),半年前将它撂下,现在又重新捡起来了,经过 VirtLAB 的磨砺,而且新版本里可以加表,所以我对这个代码进行了重构,使用了大量 Django 自身的特性,比如 ACL 和自带的 Admin Page。和 VirtLAB 一样,使用了 python-kerberos 做了个 Kerberos 的用户名密码验证。因为 Testopia 的数据表结构比较复杂,所以对整个 Models 进行了重构,用 ForeignKey 和 ManyToManyField 重新进行了组织,自行编写了 TimeAsTimeDeltaField 来处理 Test Case 的 Estimated Time。
UI 也经过丹青的重新设计,变得更加的方便、易用。
总之,是个脱胎换骨的版本。
明天,30 号就是正式内部使用的日子,svn 的版本号也相当吉利 2046。我们将正式用它来代替服役了很长时间的 Test Runner 和根本不成熟且有版权问题的 Testopia。
下一步计划 - 更加地自动化:
VirtLAB 将对每台机器加上 Tag,以后选机器不用去看主机名了,只要选好自己需要的配制,比如要 Intel 的处理器啊,要超过 4G 内存啊,就可以自动根据所选条件,自动选择空闲的机器,最快速地完成需要完成的 Job。
TCMS 将进一步对代码进行重构,进一步 Django app 化,同时完成 Report,以及和外部程序沟通的功能,目前只能将 Failed 的 Case 用 File a bug 链接直接提交到 Bugzilla 上,下一步将和 VirtLAB 和 ATP 整合,直接在 TCMS 里操作 VirtLAB 里的测试脚本。
BTW: 前一端时间公司内部开始使用 Redmine 进行内部项目管理,这个用 Rails 编写的工具确实有很多独到的特性,可以看看。
搞定梦幻手机 - Palm Pre
Palm Pre 是继 iPhone 之后唯一一个让我心动的手机,Android 虽然也让我感到很兴奋,但是因为它缺乏中心设计,也没有什么特别的创意,对它始终缺乏购买的欲望。
但是 Palm Pre 基于 Linux,全新的卡片式操作系统,实体键盘,手势操作,对云(主要是 Google)的全面支持,以及对苹果 iTunes 的支持,非常方便而且跨平台的 SDK,让我实在不能不趁着现在低价(2000+)赶紧入手一台。
大概就是这样了,办下天翼手机卡,找人去电信机房查号,刷 1.0.3 激活手机并写入 MEID/ESN,升级 1.1 写入 AKEY/HOME SID/NID 搞定童话,写入 AN/AAA 搞定 EVDO。
现在有 qinray 的 1.1 ROM,刷机写号更方便了,而且不用担心激活的问题了,但是写入 MEID/ESN 这步最好还是在 1.0.x 里做,因为 1.1 里的地址有所变化,反正我是写入后无效,重启后会自动复原。
Treo8 是个很好的 Palm 论坛,如果有兴趣可以去看一下:http://www.treo8.com/bbs/forum-33-1.html
现在还缺好用的中文输入法,无法发中文短信,但这都不是问题,因为"LInux 无限可能"。
root@castle: /var/home/root # uname -a Linux castle 2.6.24-palm-joplin-3430 #1 175.1.23 armv71 unknown
机器终于 Crash 了。。。
用苹果本子五年,头一次看见四国,兴奋ing。。。
我的主要工作是给公司内部写自动化测试工具,当然是使用 Django,这个 Web framework 越用越好用是我和我的设计师的共识。
工作配置主要是浏览器 Safari + Firefox,不过感觉还是 Webkit 比 Firefox 某种程度对开发者更加易用一些,比如 Firefox 的 form 是不能嵌在表格内部的,Safari 则可以。其它还有很多,比如 Safari 对 HTML/CSS 扩展比 Firefox 更加实用和简易,Javascript 执行速度也更快。
编辑器是 TextMate + MacVIM,TextMate 主要负责多文件的编辑,用起来还是很舒服的,MacVIM 主要是不想用鼠标的时候,全心写代码的时候用,主要用了 http://code.google.com/p/yy-vimscript/ VIM plugin 和 snippets,用 SynergyKM 共享了台式机的键盘鼠标用。
操作系统是 Snow Leopard 10.6 10A421a,我已经将它用于生产系统,系统平时还是非常稳定的,平时开一个礼拜也没问题(只待机),这次崩得很没头脑。-_-#
最新的苹果系统性能的确有极大提高,从前一篇 nbench 测试贴也能看出来,全部自带的应用程序都是 64bits,完全抛弃了 ppc 代码,体积也更小。完全重写的 Finder 打开和预览文件的性能也比之前版本高出很多,尤其是 Quake 3(32bits) 在我的本子上标准画质从 227fps 猛增到 540fps。现在就等着其它软件厂商推出64bits 的应用软件了,我目前只有 Tweetie 和 Perian 是 64 位的,其它的还是 32 位的。试着去编译过一些自由软件,但是编译始终在变量类型上会出问题,或者更加难缠的链接错误。这一版本承诺的功能也基本都已完成,不过 ZFS 去哪儿了?!-_-#
OS X 在界面上始终保持一致性和继承性,新的系统多是在细节上进行优化,而极少去颠覆之前的设计,我在设计思想上是非常赞同这一观点的。
跑题,打住。。。
又加了三台电脑的 nbench 测试成绩
这次把自己的笔记本和台式机,还有一台虚拟机服务器都跑了一下,得到了以下结果。
其中我的笔记本,Macbook Pro (2008 Early),内置了 Intel Core 2 Duo T8300 的处理器,得到测试冠军,工作站 HP XW4600 虽然使用的处理器是 2.5Ghz E7200 的,但是比起 2.4GHz 的 T8300,性能还是有一定差距的。所以不要迷信 Intel 处理器的主频,真的有差别。
跑自己的服务器纯粹是因为我的 Web server 在上面反应真的比较慢,所以跑了一下,那个 Xen 的版本比较老了,还是 3.0.x 的,新版本能够支持 Intel VT 和 AMD-V 技术,相信性能会好不少,因为是处理器直接支持虚拟化的,只是我手头暂时没有机器测试,RHEL 5.4 里将要内置的 KVM 也很值得期待。
| Macbook Pro(T8300) | Mac OS X 10.6.0 Beta1 | 20.190 | 37.898 | 22.963 |
| HP XW4600(E7200) | Fedora 11 | 17.013 | 36.669 | 16.797 |
| RHEL in Xen(AMD 8356) | RHEL 5.3 Running in Xen | 11.694 | 14.412 | 9.201 |
详情请到 http://xuqingkuang.is-programmer.com/2006/10/10/nbench.6107.html 查看,测试的详细日志那里都有。
Rate My Life Quiz!
| This Is My Life, Rated | |
| Life: | |
| Mind: | |
| Body: | |
| Spirit: | |
| Friends/Family: | |
| Love: | |
| Finance: | |
| Take the Rate My Life Quiz | |
刚看到 TualatriX 上 Rate My Life Quiz 的链接,顺道也给自己做了下测试,结果还行,除了 Friends/Family 以外都还可以。
很奇怪我的 Body 指数居然是最高的,难道是因为没什么不良嗜好而且保持了良好睡眠?!不过北京的气候真的让人感觉很不舒服,在“你是否生活在一个有污染的环境中”的选项上,我毫不犹豫地打了一个勾,要没它估计就 10 分满分了。。。
Friends/Family 和 Love 虽然是最低,可能因为我已经有了稳定关系了,而且比较恋家,所以还是相对地高的~(^_^)
Finance 项现在在开源节流,还是颇有成效的,每个月还能有少许赢余,要点是买东西之前好好想想那个东西是否真的对你的生活有促进作用,而不仅仅是一时冲动或者 Hobby,家里有个财务顾问还是很不错的。 ^o^
别的人的测试地址在下面,请允许我把你们的地址贴出来:
Contrast: http://contrast.yo2.cn/archives/41840
TualatriX: http://imtx.cn/archives/1282.html
在 Fedora 上安装并使用 Chromium
Chromium 官方只提供了 for 乌班兔的 deb 包,好在从 Solidot 上看到已经有好心人在 Fedora 上也编译了一份,经过试验运行起来没有问题,功能也已经比较完备了,可以满足最基本使用需求,速度却比 Firefox 要快了很多,基于对 Webkit 的好感,以后它就是我的主力浏览器了(这话前两天好像刚说过 :-p)。
我也写了个的 repo 文件,以便于用 yum 升级,内容很简单,把下面内容以文件名 chromium.repo 存放到 /etc/yum.repos.d 里就好了:
name=Chromium build for Fedora $releasever - $basearch
baseurl=http://spot.fedorapeople.org/chromium/F$releasever/
enabled=1
gpgcheck=0
如果想偷一把小懒的话,也可以去 http://www.box.net/shared/rbyeny0bge 里下载,并放到 /etc/yum.repos.d,不过 box.net 好像被墙了,可能需要翻墙。。。
然后在终端里运行 # yum install chromium,就可以了





