Nickcheng.LOG

在天朝的每天都当最后一天吧!

初试Pycurl

leave a comment

今天调试爬虫的时候在网上找文章, 恰巧找到了Pycurl的介绍文章, 大概看了一下并浏览了项目主页, 发现这个东西真的挺好的, 也挺适合我的. 我应该考虑在爬虫里使用这个东东:)

supporting FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE and LDAP. libcurl supports HTTPS certificates, HTTP POST, HTTP PUT, FTP uploading, kerberos, HTTP form based upload, proxies, cookies, user+password authentication, file transfer resume, http proxy tunneling and more!

再看看人家的功能, 真是一个让人偷懒的东西啊! 这下子连代理服务器的功能都省了. 而且这个东东是用C写的, 效率自然也更高, 使用它? 何乐而不为呢?

顺手从项目主页拉下来一个win32的版本 [2]. 试了几个示例代码 [2], 还不错! 不过要想用好这个东西还是有一点门槛的! 因为Pycurl本身是libcurl的一个封装, 所以在使用pycurl的时候还是需要参考libcurl的文档的, 而那个文档又是针对c的, 这里就有那么一点曲线啦!

对于Pycurl的Curl对象, 那个setopt方法是个重头戏, 需要好好研究参考文档才能玩得转!

Written by nickcheng

April 11th, 2007 at 12:18 am

Posted in 俺的技术

Tagged with , ,

Nickcheng的录音手记

leave a comment

看到标题进来的同学可能会失望哦:) 因为这篇文章不是我现在写的! 这篇文章是我2001年的时候在网易广社吉他版混的时候写的一篇文章, 写的是当时自己的一个录音经历. 今天试用一搜的搜索引擎搜索自己的名字(nickcheng)时, 突然发现了这篇文章, 呵呵, 出处竟然不是网易, 而是另一个小偷网站. 算了, 我大人有大量, 不去计较你偷我的文章, 让我找到我的老作品, 恩…抵消吧:)

下面是文章了!

好不容易自己录了一首歌,当然要写些东西来纪念一下咯!!只写录音过程,原因呀什么的就不写了,以后有必要的时候我再写出来!!

5月30日
早上7点左右醒来想到今天要录音,哦,那就赶快起床吧!不过只自己起床有些不甘心,对了!录音是整个乐队的事情,虽然制作是我,但是也不能他们几个闲着,于是我叫醒了和我同宿舍的鼓手,然后,刷牙,洗脸,没吃早饭!

因为我的敬业精神,一洗完脸我就打开电脑,准备录音,突然,胃里一阵巨响(开是我还以为是我的酷鱼II的声音),哦,对了,我才想起来昨天晚上也没有吃什么,正好这时鼓手也洗漱完毕,那么好吧,我们去吃早饭吧!我们就下楼。突然,一个熟悉的身影在从下向上走来,咦!那不是我们的节奏吉他么!他怎么来了?哦,对了,我们昨天约好的,今天录音,他要过来的。本想叫他一起去吃,可谁知他已经吃过了,算了,我们只好不吃了,回宿舍录音去!

首先,讨论。。。。。。

讨论完毕!按照一般步骤应该先录鼓。可是我们录不了真鼓呀,宿舍小,又没有足够多的mic。那怎么办?没办法,正能用midi作了,我们那个水声卡的音源就不用说了,还好,我们有yamaha y-sxg100的软波表,就用这个吧!!突然,我想到听说过还有一个什么reality的东东做出的音色更正,那就试试那个吧,正好硬盘里有前一段时间down的一个demo版,于是打开reality。。。。。。呵呵,结果是搞不好,放弃了reality!还是用yamaha吧!!先做了一小段鼓,听了听,还成,能用,那就用吧!!

开始做鼓,把昨天做的那一段拿了出来(大概20多个小节,虽然很快能做好,但有现成的就用吧!),这个时候,鼓手突然有事要外出,本来不想让他走的,但又一想,做midi的人是我,他呆在这里也没什么用,还和我们抢氧气,不如走,就放他走了!

只有我和节奏在了,两个人在一个小屋里。。。(不要乱想,我们都是文明的学生,而且都是大男人)幸好天不热,我们还可以忍受!鼓的节奏很简单,我们把基本节奏复制了100小节后就主要编fill in和一些局部的处理了。靠着我们两个的感觉,编了好多的fill in,当时我们两个都忽略了一件事情,呵呵。。。鼓手的手的数量。我们为了追求效果,有的地方竟然同时打了n个鼓,后来突然想到,赶快改掉了!

编鼓的时候还挺顺利,但就是一些技术性的问题好麻烦!我们发现,那个yamaha的软波表占用了音频输出,也就是说,midi和audio同时输出时audio没有声音,我们没办法,只好频繁更改midi输出选项。

这还是好的,过了不久又出现了另一个令人不可思议的事情。因为我们不能让midi和audio同时发声,所以,我们只能把做好的midi录成一轨audio,好,我们就开始录。咦?怎么录不上?检查“录音选项”,没问题,检查“声音选项”,也没问题,检查。。。都没发现是怎么回事。我们又开了一个新文件,只把鼓轨放到上面,可是还录不了!!这时,我想起刚开始的时候我们在“光辉岁月”的midi文件里试midi录audio时还可以的!好!!死马当活马医!!我又打开了“光辉岁月”的midi,把鼓轨复制到里面,准备好,开始录音!!什么?也不行?我要疯了!!啪——–?????电脑熄火了!!!???真是祸不单行!!还好,我有随时存盘的好习惯!停电?怎么会!!放假期间他敢停电?冒天下之大不韪!!再说我们学校对面就是热电厂!!让我去调查调查。。。。。。

TMD,原来是有人在楼下修东西,把整楼的闸给拉了,也不先打个招呼,我发了一阵牢骚后,他们和上了闸。上楼继续!!

重新打开电脑,启动蛋糕,继续刚才未完成的事业!!哇!!可以了!!“光辉岁月”能录了!!再转回到原文件里录,还是不行!没办法,只好在“光辉岁月”里录了。录好后再复制到原文件里。我到现在也不知道到底问题出在哪里!!谁能教教我?

鼓搞定了,该bass了!贝斯手前一天因家事已经回去了,只好我来录喽!拿出bass和谱,练了一会儿。。。嗯,前奏可以搞定了!!先录一段吧!!于是,听着鼓把前奏的bass搞定。然后练后面的。。。。。。啪——-??????电脑又熄火了!!!???怎么回事?我要出离愤怒了!!我又一次下楼,TNND,刚才他们装东西拉的闸,现在是拆东西拉的闸。他们一看到我又下来了,就知道我要干什么了,呵呵,算他们有眼色,要不我一定破口大骂!!竟敢干扰我正常录音!!在他们保证不再拉闸后,我上楼去了。

一路录bass无话,就是我练了半天和把最后一段的贝斯节奏变了一下,因为最后的repeat部分我们把鼓的节奏形变了

bass搞定!!!该节奏部分了,由于录鼓和bass有了经验,再加上节奏不难,我们很快就搞定了!!因为没有电箱琴,我们就用我的电琴加上效果器上的箱琴音色。

最后就是主音了!用的是一个原来调好的一个轻失真,有点流行的音色。这可是我的强项!对了,前面的部分用的是分解和弦,用的是和节奏一样的音色。开始没有什么问题,可是录到bridge的时候突然发现和bass照不上,检查了半天,原来是bass谱的问题,又改了改bass,这才和的上,呵呵,刚才录节奏的时候就没有发现!

终于搞定!!看看表,呵呵。。。已经是下午6点了,还有一轨人声没有搞定。我是不能唱歌了,大量的主音要我走,我可没有Paul的神力,能一边疯狂的solo一边唱,那当然是我们的节奏唱喽!!我问他现在能搞定不,呵呵,他指了指自己的胃,我才想起自己从早上到现在都没有吃什么东西,他要唱,当然更不能饿着!!正好,这时鼓手从外面进来,我们让他听了听我们的战果就一同去吃饭了!

喂饱了自己的胃,又开始“工作”!!这次我们都轻松了,就是节奏累点喽!!说累一点也不夸张,一整天的精神和肉体摧残,我们都苍老了好多,在下来就是节奏的声带要受摧残了!!呵呵,大家没有一个学过唱歌,都是自己瞎唱,唱到高的地方也不会用唱功,就拼嗓子!!整个人声,solo以前的部分还好,唱了几遍就搞定了,solo以后的就惨了,光练习(直接录了几遍,不行)就十多遍,录的时候又录了十多遍。真把他累得够呛。其实也不能怪我们的节奏,我们录音用的那个mic(pc mic)的线奇短无比,我们节奏只能弯着腰唱,怎么会不累!!后来就蹲着唱,还不行,干脆坐在地上唱。他的姿势换了好多好多,能不累么?

最后,“夜”的最终版本完工,就是大家听到的这个版本,其中蕴含着我们每个人的血汗呀!!搞定以后再看看表,呵呵,晚上9点半多了,录人声用了大概3个小时,可怜了我们的节奏呀!!!

录音器材:

硬件:赛扬II566,64M,20G,夜莺声卡,Starsun Bass,Ibanez RG470(Alice的e弦),Digitech Rp6,Daphon G121(25W,监听),水水的PC Mic,杂牌线若干

软件:Cakewalk Pro Audio 9.0,YAMAHA SoftSynthesizer S-YXG100plus,C-Media Mixer,Windows Media Encoder

Written by nickcheng

April 6th, 2007 at 10:22 pm

Posted in 享受生活

Tagged with ,

在Python2.5下安装Trac 0.11dev

leave a comment

搞定了Apache和Subversion以后, 准备搞定Trac.

照例是到网上搜了一大圈, 找了一堆的参考资料. 不过一篇一篇的看过以后发现所有的文章都是在讲基于Python 2.4的Trac安装, 我心里一悬, 也不知道这Python 2.5上安装会不会有问题! 先不管三七二十一, 比葫芦画瓢先!

于是开始准备一些必须的软件, 果不其然, 这一步就遇到了问题! 我找不到对应Python 2.5的ClearSilver. TNND, 真是出师未捷身先死啊! 不甘心……

继续在Trac官方网站翻阅资料……哈哈…功夫不负有心人, 被我找到了一篇”Trac with Python 2.5“. 这应该是Python 2.5下的东东了吧! 用劲看完了这份文档, 发现这讲的是更新潮的事情–安装正在开发的Trac 0.11dev版本.

想了一下, 自己也不是用Trac管理太重要的东西, 而且实在不行还可以一直跟着svn的trunk升级嘛! 于是乎, 下定了决心跟着dev版本走!

这0.11dev版本的一大好处是不再使用ClearSilver, 而是使用Genshi来取而代之, 这Genshi是有Python 2.5版本滴!!赞!

看到这里可别以为以后的道路都是平坦的. 这过程和人生是一样的, 一个坎坷接着一个坎坷……

按照官方文档, 我下载了对应版本的Genshi和Trac. 在安装Trac的时候又出问题了. 我最新Checkout出来的Trac说我下载的Genshi的版本低……ft…这还官方文档呢~~~~~

不怕, 咱再自己去Checkout最新的Genshi. 你要是以为这就好了的话, 那你就又错了! 这回Trac改口说我的Genshi版本太高了……我再次摔倒了…

那怎么办? 还好安装Trac的时候给的提示信息比较全. 看到Trac提示的信息说需要的Genshi版本不能高于Genshi 0.4dev-r510. 那好我就去Checkout 509版本的Genshi……这次终于好了…前面几个坎差点儿把我摔背过气去……

后面的康庄大道就好走多了. 安装了svn-python的绑定后就可以自己用trac-admin来建个工程, 再用tracd发布玩玩了.

最后配置一下apache, 用apache统一发布, 哈哈, 起活!

=======

安装步骤

  • 下载必须软件
    • Genshi 0.4 r509: svn co http://svn.edgewall.org/repos/genshi/trunk@509
    • Trac 0.11dev: svn co http://svn.edgewall.org/repos/trac/trunk
    • SVN的Python绑定: http://subversion.tigris.org/downloads/svn-python-1.4.3.win32-py2.5.exe
  • 安装
    • 安装Genshi
    • 安装SVN的Python绑定
    • 安装Trac
  • 配置Apache
    • 在conf中增加如下代码



SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnvParentDir “d:/trac”
PythonOption TracUriRoot /trac

Written by nickcheng

March 29th, 2007 at 11:25 pm

Posted in 俺的技术

Tagged with , ,

在Apache2.2.4下安装配置Subversion1.4.3

2 comments

中午吃完饭, 回来配置自己的Droupnir. 对于Droupnir, 计划在上面安装支持Subversion的Trac. 作为自己的项目管理平台和配置管理平台.

一篇先写安装配置Subversion

去Subversion的网站下载最新的Subversion, 我下载的是这个版本:

http://subversion.tigris.org/files/documents/15/36797/svn-1.4.3-setup.exe

因为Droupnir上已经安装好了Apache 2.2.4, 所以我就直接安装Subversion. 我以为一切都会很顺利, 可是…我错了…安装过程中出现了一个错误, 然后Apache就不能启动了! 查了半天Google, 终于知道了原因–最新的Subversion 1.4.3 不支持Apache 2.2.4. 除非自己去Build Apache所需的module.

是又在网上找到了别人build好的module, 虽然有一些已知的问题, 但是应该还好! 这里需要注意, 这个编译好的module是用VC2005sp1编译的, 所以要求使用的Apache也是用VC2005sp1编译, VC2005sp1编译的Apache在这里, 使用这个版本的Apache还需要Visual C++ 2005 Redistributable Package. 安装的时候别忘了看readme哦!

装Subversion后, 他会自动修改Apache的conf. 不过你要是使用上面说的自己编译的Apache的话, 那就要自己去看看是不是在conf中加入了该加入的内容.

后就是把自己的SVN版本库用Apache发布了, 这一步就是配置Apache的conf了, 没有什么特别的, SVNBook里写的很清楚.

果需要权限配置的话, 可以参考这篇帖子, 里面写的很详细!

下面附上我整理的步骤

安装步骤
. 下载
. http://www.apachelounge.com/download/binaries/httpd-2.2.4-win32-x86-ssl.zip
. http://www.apachelounge.com/download/vcredist_x86-sp1.exe
. http://subversion.tigris.org/files/documents/15/36797/svn-1.4.3-setup.exe
. http://www.tomdonovan.net/download/mod_svn_143_apache_224.zip
. 安装Apache
. 安装Visual C++ 2005 Redistributable Package
. vcredist_x86-sp1.exe
. 安装Apache
. httpd-2.2.4-win32-x86-ssl.zip
. 安装Subversion
. 安装官方SVN
. svn-1.4.3-setup.exe
. 安装为Apache 2.2.4编译的Subversion module
. 用mod_svn_143_apache_224.zip中module目录里的文件替换Subversion/bin目录中的
. 修改Apache的conf. 路径要正确
. LoadModule dav_module modules/mod_dav.so
. LoadModule dav_svn_module modules/mod_dav_svn.so
. LoadModule authz_svn_module modules/mod_authz_svn.so
. 配置Apache的conf, 来映射svn repository
. 在上一项配置后面写如下配置语法
<Location /repos>
DAV svn
SVNPath /absolute/path/to/repository
</Location>
. 如果想支持多个有相同父目录的Subversion版本库, 则使用如下配置语法
<Location /svn>
DAV svn
SVNParentPath /usr/local/svn
</Location>
. 配置Apache对Subversion版本库目录的访问权限
. 建立密码文件
. 在Apache的bin目录中运行”htpasswd -c passwd <username>”(<username>换成你自己的用户名), 按照提示输入两次密码, 会在当前目录下建立passwd文件, 将这个文件复制到根目录
. 修改Apache的conf
<Location /svn>
DAV svn
SVNListParentPath on
SVNParentPath d:/svn
AuthType Basic
AuthName “Subversion repositories”
AuthUserFile d:/passwd
Require valid-user
</Location>

Written by nickcheng

March 29th, 2007 at 9:22 pm

Posted in 俺的技术

Tagged with , , ,

分析修正msnp.py小问题的全过程

4 comments

最近自己准备用python实现一个msn的机器人, google了一下, 找到了msnp.py这个项目. 项目的地址在

http://msnp.sourceforge.net

看了一下最后更新日期, 也已经是2004年1月的事情. 不知道现在还是不是好使! 那就试试吧! 于是按照教程写了一个简单的例子, 于是问题也出现了:P

自己先用帐号A登了一个msn, 然后用另外一个帐号B试例子(两个帐号互为好友). 运行例子. 过了4,5秒后, 从A帐号上看到B帐号登录了, 但就在这同时, 例子程序出现了异常!

从异常信息来看, 是在msnp项目的command.py文件中出现了异常. 异常发生在一个类型转换语句上. 于是开始跟踪, 调试……结果被我发现了问题的所在!

首先从程序的表征上来看. 程序的异常是紧接着登录发生的, 而从msn上的帐号A来看, B是有成功登录的(当然, 异常发生后帐号B就掉线了). 所以可以大致断定异常发生在登录操作之后, 而且离的比较近. 这个推断可以缩短我们的调试时间:)

然后是通用的跟踪调试了! 根据异常信息, 在报错的语句前加print来打印中间结果. 令人惊讶的时候print出来的结果竟然没有一点异常, 但是异常还是在那个地方发生了! 这是个费解的情况, 看来print中间结果这条路是不好走了. 于是我又祭起了Winpdb这个家伙, 开始单步执行我的程序, 并跟踪到command.py中. 终于, 在其中的一步中, 我从cmd窗口中看到了print的异常结果–一个XML格式的Notification消息. 问题就是这里了!

一般来说, msn登录时候的往返协议消息都是有一定格式的, msnp就是按照这个格式来解析往返的消息. 而根据推断, 这个XML格式的Notification消息应该是在登录过程中没有按照这个格式来发的消息. 从Notification消息的内容来看, 这个消息应该是用来显示msn登录后弹出的那个含有邮件信息和新闻的窗口的. 这个窗口在msn登录后会自动弹出, 而且也在登录过程中.

有了上面的推断, 我就改动了command.py的内容. 我在Command类的parse方法中最前面加入了如下1行:


if str[0] == ‘<': return

修改之后再次运行我的例子……哈哈, 这次成功登录后没有异常发生了! 看来我的推断是正确的!

继续玩我的msn机器人……

Written by nickcheng

March 28th, 2007 at 11:36 pm

Posted in 俺的技术

布拉格之梦

one comment

你要问我出国最想去哪儿, 我会告诉你是北欧! 那第二想去的呢? 那就应该是布拉格了!

我也不知道为什么自己会想去布拉格, 但第一次听到这个名字就喜欢上了! 今天刚好又看到一篇写布拉格的文章, 又勾起了我的向往, 哎……我要贴文章了!

今天的布拉格

作者:英国《金融时报》撰稿人 琳达·依偌基(Linda Inoki)
2007年3月23日 星期五

神秘的城市

虽然反对纵火,但我同意,布拉格抓得我心里发痒。它还在想象中蔓延,使人想知道,在一次访问之后这么久,为什么人们会设法结束自己最好的工作。

一个人如何记录一个表面奢华、内里神秘的城市?走在鹅卵石街道上,一连串的宫殿、教堂、塔楼和尖顶,将你的眼睛指向天堂般的建筑风格。你的脚步声,在被世纪埋葬的房间中发出回响,那里停留着狂热的盲目恐惧,像是一层朦胧而又令人不安的薄雾。挥舞斧头的刽子手、复仇的幻影,以及希伯来神化中类似人类的假人,布拉格有足够的民间传说,多年来,它们让孩子们在睡梦中发抖。

然而,在这座城市的第一个夜晚,大量的异国情调使一个敏感的成年人颤抖。一个下雨的春夜:丁香花盛开,河水很静,漆黑的街道上偶尔闪烁微光,然后是来自音乐厅、咖啡馆,以及波希米亚人为之高兴了数百年、无以计数的装饰细节中镀金窗饰的光亮。

独特的布拉格建筑

像飞蛾一样,我焦急地来到市政大厅(Obecni dum)明亮的窗前,人们正在闪光的、分离论者的大厅里用餐。树枝形的装饰灯造型像埃及珠宝,光芒射向绿松石和珍珠垂幕。侍者们端上各种菜肴,大概是肉和布丁、浓咖啡,以及甜香槟。在外面,在被宝石装饰得像蜻蜓一样的走廊下,一些人影在用沙哑的语言交谈,然后回去参加音乐会。

这一幕适合马奈(Manet)或穆夏(Mucha),并解释了为什么在1989年天鹅绒革命(Velvet Revolution)之后,有数千年轻的美国人蜂拥来到布拉格。回到亨利•詹姆斯(Henry James)的时代,这些新世界中涉世未深的人,被带到中欧文化朦胧的诱惑中,那里有退色的荣耀,和新诞生的自由。

布拉格展示了一个个广场、一个个时代,这里充满了好奇。在河的左岸,城堡和哥特式圣维特大教堂(St. Vitus’s Cathedral)旋转跃入天空。在下面,小城区(Mala Strana)冲击着巴洛克建筑的陡峭的街道,与宽阔的伏尔塔瓦(Vltava)河和查理士桥(Charles Bridge)相遇。河的右岸,是中世纪老城区(Stare Mesto)的中心。向北是过去的犹太人地区(Josefov),那里长满青苔,仍然留存着零星的犹太区。向南和向东是新城区(Nove Mesto)。“新”,是从查理十四(Charles IV)在14世纪设计温塞斯拉斯广场(Wenceslas Square)开始。温塞斯拉斯广场是欧洲最大的马匹交易市场。

一眼望去,布拉格的地平线当然会很从容。但是要当心:除非你领会中世纪的历史、被革新释放的虔诚的复仇女神,以及奥匈帝国(Austro-Hungarian empire)的政治圆舞曲,否则,这个城市或许会淹没你和你的无知。

然而,少量的阅读、舒适的鞋子以及一位当地的专家,可以重建你的自尊。多数旅行者从老城区开始他们的行程,从那里一直走到城堡,因此,我们的导游露西•奥利沃瓦(Lucie Olivova)博士领我们轻快地走着相反的方向。我们静静地从城堡以上、充满艺术气息的哈拉卡尼(Hradcany)区出发,几乎没有游客敢这样冒险。

这里是建立于1140年的Strahov修道院,它的白墙伫立在那里,像下面宫殿丛上方正义的峭壁。一座纯粹的巴洛克教堂;古老的庭院;装饰华丽的图书馆,以及能够看到城市美景的咖啡露台:可以连续数小时愉快地享受这个平静的地区。

朝臣自然将住宅建立在距离皇家城堡更近的地方,修道院下面座落着巨大的Cernin Palace。这座空虚的纪念碑由一位富有的公爵建造,但在这座雄心勃勃的建筑物竣工之前,他就死了,这座建筑物提示了与建筑师争论的荒唐事。多年来,没有人喜爱并使用它,但在二战期间,当纳粹看到它时,承认它有一点儿空洞的庄严,并将其作为他们的总部。脑海里很容易浮现出曾经飘扬在这幢建筑物正面的纳粹十字标志。正当我们转身离去时,优雅的洛雷托(Loreto)教堂里传出如民歌般动听的阵阵乐声,而导游告诉我们,这是教堂里传统的赞美诗。

波希米亚文化

为何波希米亚人会拥有这样的才能,让金属和玻璃那些最冰冷的物体唱出如此美妙的音乐呢?在圣维特大教堂入口高处,有一扇金丝边框装饰的窗户,无论在任何时候透过它向里张望,都会看到一个吹着银色号角的天使出现。我们前行的步伐非常缓慢,因为我会不时地跓足欣赏那些镶嵌精致金属工艺的门,各种稀奇古怪的符号,以及镀金花穗花束的栏杆。

说到波希米亚玻璃,许多商店都有出售这种传统的玻璃制品,但做工最为精细的却陈列在19世纪装饰艺术博物馆(Museum of Decorative Arts)里。尽管这家博物馆的外表平淡无奇,但其入口却是一条通往艺术与工艺殿堂的台阶。

在16世纪的欧洲,水晶制造被视为一门“艺术、技艺和秘密”,而雕刻有精美狩猎情景的波希米亚高脚杯,仍然会引起人们无限的憧憬。这些易碎的财富同样是那么的不可思议,在经历了500年人们可怕的贪欲之后,它们得以幸存下来。

几个世纪以来,布拉格的文化生活一直由它与哈布斯堡王朝(Hapsburg)统治者的关系来决定。在这些形形色色的统治者中,有才华横溢的文艺复兴时期人物鲁道夫二世(Rudolph II),他带来艺术家、炼金术士和豹子,使城堡充满了生机,还有不幸的费迪南一世(Ferdinand the Gracious),他让世人记住的是,他在废纸篓里打滚,并高声宣称,“我是皇帝,我想要布丁。”

波希米亚的民族主义者憎恨外来势力,他们大多信奉新教,但在经历数世纪的血腥战争之后,天主教和神圣罗马帝国最终消灭了这种抵抗。捷克语被禁止使用,新教叛乱者的头颅被悬挂在查理士桥上,任由它们腐烂,这暗示着异教徒危险的处境。进入耶稣会(Jesuits):它们那些历史可追溯至17世纪50年代的高大的巴洛克式教堂、神学院和科学天文台,深深地表明了建筑物所具有的镇压和诱惑力量。

但民族主义者的梦想终于实现,奥匈帝国在19世纪步入终结,波希米亚的布拉格再次挺起胸膛说话了。只要聆听斯美塔那(Smetana)的抒情音乐,你就会听出那种希望正在汹涌地苏醒。

最终在1918年,在刚刚竣工的布拉格市政厅里,在那些气势磅礴、表达着爱国热情的壁画之间,捷克斯洛伐克共和国宣布成立。其余就是新闻影片里人们熟悉的情节了。就在20年后,希特勒(Hitler)的坦克轰隆隆地驶入捷克斯洛伐克,此后一个支离破碎、战后的布拉格脱离了共产党的统治数十年。

自1989 年以来,许多长期被忽视的建筑物得以重建,但如潮水般涌来的大量游客却使当地人离开了城市心脏地区。屠夫、面包师和蜡烛工匠相继离去,咖啡吧台服务员、侍者和旅游针织品小贩比比皆是。尽管很难找到普通人,但皇帝、圣人、艺术家、骑士、少女、音乐家和愉快的农夫并不少见。在每一座建筑物的基石与山墙上,骄傲且具有象征意义的平民坚守在那里。

当然,小贩们少找零钱、与游客人群挤在一堆,有些令人生厌,但我还是非常乐观。这位厉害的小妈妈肯定会把自己的孩子们抓回来:布拉格的时机尚未到来。

Written by nickcheng

March 23rd, 2007 at 9:39 pm

Posted in 享受生活

python的robotparser模块

leave a comment

读一个Python的爬虫代码的时候看到一个名字叫做”robotparser”的模块, 查了一下, 是用来解析网站的”robots.txt”文件的. 用法很简单, 举个例子


rp = robotparser.RobotFileParser()
rp.set_url(“http://www.musi-cal.com/robots.txt”)
rp.read()
rp.can_fetch(“*”, “http://www.musi-cal.com/cgi-bin/search?city=San+Francisco”)  # return False
rp.can_fetch(“*”, “http://www.musi-cal.com/”)  # return True

程序很简单. 首先将类实例化, 然后用”set_url”方法设置”robots.txt”文件的路径, 这个文件一般都在网站的根目录. 接着调用”read”方法来解析这个文件. 最后就是用”can_fetch”方法来判断这个网站是否让你的程序(爬虫)访问某个网站内的链接了!

如果这个网站没有”robots.txt”文件的话, 在”read”方法后查看”rp.errcode”属性, 会看到404的返回值, 如果有这个文件就是200的返回值了!

相关链接

官方文档: http://docs.python.org/lib/module-robotparser.html

一个家伙不满意自带的这个东东, 自己又写了一个: http://nikitathespider.com/python/rerp/

robots.txt规范: http://www.robotstxt.org/wc/norobots.html

Written by nickcheng

March 19th, 2007 at 10:10 pm

Posted in 俺的技术

PSP升级实况文字转播-3.10 OE-A’(A2)

leave a comment

–19:32
准备给老婆的PSP再升一下级

今天在单位看到同事的PSP已经升级到3.10 OEa的系统了, 想想老婆的PSP似乎也该升级一下了, 于是下班回家吃完饭就开始准备升级, 顺便把过程都写下来:)

好, 开始了! 不过因为好几天没有把PSP拿出来玩了, 所以要先充电, 刚才看了一下电量, 才2%, 也不知道会不会影响一会的升级, 不管了, 先把充电器插着在说吧!

先上网搜一下最新的系统!

–20:07
接了老婆一个电话, 闲聊了几句:)

在网上查到目前最新的自制系统(可以玩破解游戏)应该是3.10 OE-A’(A2)系统了. 具体怎样还还不太清楚, 网上有一些评价, 也不好说是好是坏, 大家可以自己看看. 这个帖子有些评价:

http://bbs.tgbus.com/viewthread.php?tid=2290969

我在”电玩巴士”找到了一些升级资料. 首先需要升级到3.10 OE-A, 然后才能升级到A2系统. 3.10 OE-A的升级方法(里面有相关下载):

http://psp.tgbus.com/pspdg/jc/200702/20070205093638.shtml

–20:17
哈哈, 3.10 OE-A已经升级完毕了! 虽然升级过程中需要保持电量在75%以上, 但是我是插着电源, 所以在启动升级程序后, 我就一直按着”三角”键和”L”键, 跳过了检测电量的步骤:)

接下来要准备升3.10 OE-A’(A2)了. 升级方法以及下载在下面的地址中:

http://psp.tgbus.com/pspdg/jc/200702/20070207090725.shtml

–20:24
搞定, A2版本的升级连电量都不检查的! 升级完成!

Written by nickcheng

March 19th, 2007 at 8:32 pm

Posted in 俺的技术

用Google找免费电子书的下载

leave a comment

我是在找一本电子书的时候发现的这个方法的, 其实不只是电子书, 找其他的资源也都适用!

网上的免费资源是很多的, 有的是本身就免费, 有的是自己一不小心放到网上的, 嘿嘿, 不管怎么说, 只要咱们能免费得到的, 就都叫免费资源:)

知道网上有大量的免费资源, 但是怎么能找到并且下载下来自己用呢? 哈哈, 就要求助Google大神啦!

Google的搜索中有两个简单的语法: inurl和filetype. 先拿我的搜索为例

inurl:http filetype:chm

inurl表示在搜索到的链接中要有”http”这个关键字; filetype表示只搜索扩展名为”chm”的文件

哈哈, 搜索结果中有我要的东东啦!

HTTP: The Definitive Guide 这本书我找了好久了, 买不到书就拿电子书来看吧!

如果你要找其他的电子书, 只需要把inurl后面的关键字换一下就可以了, 比如换成”java”, “dotnet”等等; 如果你要找其他的资源, 只需要把filetype后面的扩展名换了就可以了, 比如换成”pdf”

Enjoy yourself:)

Written by nickcheng

March 14th, 2007 at 10:25 am

Posted in 享受生活

郭德纲如是说

leave a comment

昨天晚上看读库0601上写郭德纲的一篇文章, 里面有一段写的挺好的! 所谓好并不是写的文笔多好, 也不是刻画人物多到位, 而是这段话适合说给我听!

……一个月挣这么一千块钱, 八百块钱, 娶个媳妇生个孩子, 等到我八十了, 打开电视, 我只能跟孩子说, 瞧见没有, 上边这孙子当初还不如我呢, 我要去比他强. 那时候, 我孙子得问我: 你早干嘛去了? ……

Written by nickcheng

March 7th, 2007 at 8:38 pm

Posted in 享受生活

Switch to our mobile site