I am LAZY bones? AN ancient AND boring SITE

由gmbox发现了一个python文档的bug

今天lerosua还是说gmbox在他电脑上运行不了,我终于觉得不对劲了,因为在我机器上,已经是没有问题的了.
稍微分析了一下,发现错误是这样的:

  File "/home/leros/work/gmbox/src/lib/parser.py", line 49, in handle_starttag
    if v[n.index('title')]==u'下载':
AttributeError: 'tuple' object has no attribute 'index'

这附近的代码是这样的:

                (n,v)=zip(*attrs)
                if v[n.index('title')]==u'下载':

所以,首先想到的自然是zip这个自建函数,它返回的n和v到底是什么呢?tuple还是list?
于是去查了下官方文档,就发现不对劲了,文档中的例子:

>>> x = [1, 2, 3]
>>> y = [4, 5, 6]
>>> zipped = zip(x, y)
>>> zipped
[(1, 4), (2, 5), (3, 6)]
>>> x2, y2 = zip(*zipped)
>>> x == x2, y == y2
True

按这样的描述,返回的x2和x应该都是list,但是实践了一下,发现返回的却是tuple…这不乱了吗?于是又跑了一下这个例子,最后一行却不是True,而是(False, False)…就这样发现了文档的一个小错误.
可怜我之前一直非常崇拜python的文档,认为它简直就是文档的典范,详细,可读性也好.现在,突然发现一点瑕疵,不免有些失望呢,TX说也有相同的感觉,哈哈.不过,想想自己能给最喜欢的文档提个bug倒也蛮有成就感的.
python开发也很是活跃,这个bug提交上去以后,仅仅用了15分钟,Georg Brandl就已经把它给干掉了~哈哈,新的文档,最后那里改成了:

>>> x == list(x2) and y == list(y2)
True

于是我也学者这个样子,给我的gmbox加了一行:

                n,v=list(n),list(v)

问题就解决了.
最后,还有一个疑问,为什么之前那样,在python2.5下不行,但是在python2.6下却又不报错呢?
呵呵,答案就是:python2.6给tuple也加了个类似list的index方法…于是歪打正着,在py2.6下,就正确了.

秀婚纱照,求祝福

09年春暖花开的时候,我和MM一起去拍了婚纱照,现在终于拿到了未PS的电子版.相册相框等实物还要继续等…
相片是在龙摄影拍的,总得来说,感觉一般,工作人员的态度还不错,但是拍出来的效果不是很满意,主要是MM的脸显得很圆,真人应该更苗条些,可能是没PS的原因?毕竟最终效果还不知道呢.呵呵~
开始帖照片:
首先是这套藏风系列,风格比较诡异,当初为了避免照片都比较俗套,特意选的这套有特色的主题.
藏风主题
然后是几个内景:
内景一内景二内景三内景四内景五
还有外景和古装:
外景古装
觉得怎么样?全部照片请移步我的Picasa网络相册.
现在,祝福我们吧~~哈哈~~~

关于分区和引导也许你不知道的杂七杂八

1.用gparted把一个110G的ext3分区,缩小到78G(实际使用的空间只有20G左右),需要用2个多小时.可能和已使用的空间无关?空白区域也复制了一遍?
2.用gparted把ext3分区缩小以后,其uuid是不会变的.
3.备份主引导扇区的方法:

dd if=/dev/sda of=mbr_512_ubuntu bs=512 count=1

注意:这512字节的东西里,不仅备份了MBR(前446字节)也备份了分区表,所以如果你备份完了以后,又改变过分区,再用老的512字节来恢复的话,后果可能比较严重.
4.所以,恢复MBR(比如重装过windows的时候要用到)的方法是:

dd if=mbr_512_ubuntu of=/dev/sda bs=446 count=1

这里的ba=应该是446字节,而不应该是512字节,除非你确认和备份的时候的分区完全一致.
5.但是用如上命令恢复完了以后,分区激活标志(也就是gparted里面看到的boot标志),是不会变的(因为这属于分区信息,是位于446~512字节的),所以也许grub菜单还出不来,需要用gparted重设一下标志位.如果第4步中的bs=改成512应该不会有此麻烦,当然如果你理解了上面的文字,就会明白我还是推荐用446的.
6.grub2的配置文件是 /boot/grub/grub.cfg (相当于grub时代的menu.lst),这个文件是 /usr/sbin/update-grub 根据 /etc/grub.d 里面的脚本自动生成的,所以不推荐直接修改 /boot/grub/grub.cfg ,而是修改 /etc/grub.d 里的相应文件,要禁用某个文件,只需要 chmod -x nn-xxx 就可以了.改完后执行 update-grub 即可看到grub.cfg被更新了.
以上东西是bones7456根据实际操作经验总结得出的,水平有限,并不能保证正确性和适用性,而且还有比较危险的dd命令.因此操作时请务必小心,万一丢失数据可别来找我,哇卡卡…

实时磁盘使用情况分析──iotop

你是否有这样的经历: 电脑用着用着,硬盘灯开始狂闪,硬盘也发出咯咯的读盘声,但是你又不知道到底是那个进程出了问题?
这时候你也许就要用到 iotop 了,这个小小的命令行工具的功能,只要看名字就可以明白,不就是 IO 的 top 嘛!而且,用法也和top很像哦,直接执行iotop会每秒汇报各进程的磁盘读速度和磁盘写速度,排序好以后输出.甚至 -b -n 之类的选项都是和top命令一样的: 执行 iotop -bn1 会输出当前各进程的磁盘IO信息,并退出~
另外,值得自己编译内核的用户注意的是,iotop需要打开 CONFIG_TASKSTATS 和 CONFIG_TASK_IO_ACCOUNTING 这两个内核选项才能正常工作.

今天你70码了吗?

本文的标题来自于http://70km.org/,也许会成为一个新的网络流行语也说不定哦.比如:草泥马以70km/s的速度奔跑了
看到这个标题,经常在网上混的朋友肯定也知道是关于最近杭州发送的一起不寻常的交通事故的.
据说,5月9日,杭州的所有媒体都接到上级有关部门(有关部门可是很强的哦)通知,不准对此事进行进一步的报道,顿时网上的声讨声更加激烈了,尤其是浙大的受害者校友,这不禁让人想起20年前…话说在这敏感的节骨眼上,别说是市长省长,连老胡也会害怕浙大校友出来游行什么的啊.他们肯定不愿意看到,若干年后的教科书上写着:XXX大游行的根本原因是纪念20年前的XX事件,而XX交通事故成了这次大游行的导火索….这次游行代表了XX力量正式登上历史舞台….哈哈..
鉴于舆论的压力,目前咱们又可以在报纸上看到后续报道了,杭州市长也出来批示要彻查此事了.这在某种意义上来说,网民已经成功了一半了.再一次证明了大众舆论的力量.
我本人对汽车什么的不是很懂,也就不多擅自评价什么了,转载一下和人渣车手有过一面之缘的专业人士的文章吧,以下转自韩寒的blog:

最近杭州发生了一起影响很大的交通事故。朋友说,你对汽车那么了解,有没有什么要说说的。
我想起了前几天上海车展的时候,某视频网站给我做了一个小的访问,我当时说,开车最重要的就是要注意安全,真正的交通规则的宗旨其实就是安全驾驶和不妨碍到别人,每个人都会有超速开快车的时候,还有一些地方有为了征收罚款而设置的不合理限速,一个驾驶员一辈子没有超速过没有开过快车不大可能,这太窝囊了,但最关键是一定要注意安全。
我一段话说了三次安全驾驶,结果视频出来以后,标题是“韩寒,表示没开过快车的人很窝囊”。这说明现在的视频网站的竞争真的很激烈,不惜以下次再也采访不到嘉宾为代价,也要眼前的点击率。
我承认我有时超速,一些路况和视线极好的四车道国道,突然间会出现一个40的限速,我相信如果大家不刹那一脚车,百分之九十九的人都是超速的,但是,在城区,市区,社区等人多的地方一定要遵守限速。一些路况好的地方的低限速往往是为了相关部门创收。在这个事故中,我们不能矫枉过正,要求全国都限速40,交通有两个重点,第一是安全,第二是效率。
在杭州这起事故里,很明显的,肇事者超速了,这条道路的限速是50,我认为这个地段这个限速是合理的,交警部门说,他当时的速度是70,我个人不是很认可这个速度的认定。当然,街上目测者的叙述只有参考价值,不能完全取信,但是,如果是70的速度,在这样的马路,视觉上是不会让人产生“快”的感觉的。这台车原厂的刹车配备非常的顶级,是准赛用的级别,100公里的速度刹车到0大概需要35米,车辆撞到人以后过了50多米才停住,我们假设他当时全力刹车,那速度应该是在每小时120公里左右的。
但是,客观的说,目击者所说的150公里我认为可能是偏快的,因为街道参照物的关系,120公里每小时的速度会让人感觉更快,而且150公里以上的速度撞到人很可能不能保持肢体的完整。不过,从比较专业的角度,我是不认同交警给出的70公里每小时的说法的,我有一个朋友在类似的速度不小心撞到过人,对方只是轻伤。我个人的判断是100到130公里以内的一个速度。

街道飙车是非常危险的,但随着汽车行业的发达,富二代的增多,年轻富翁的产生,汽车改装和街道飙车一定不可避免会出现,任何国家都是这样的。但是所谓盗亦有道,一般来说,我认为最大的尺度就是在封闭的环线上偶然玩那么一下,以安全和可控为前提,以出了事承担所有责任为条件,要完全杜绝是不可能的,不光光是改装车,公交车,出租车,私家车都有互相斗气时候,很多特权车也特别喜欢趁领导不在飙车,但是,在闹市飞街的确是非常危险和极其错误的一件事情。一般来说,开快车分五种,一个是赛道,一个是空地,一个是山路,一个是环线,一个是闹市街道,除了第一二个是比较健康的以外,后三者的受鄙视程度和业余程度是递增的。尤其是最后一个,山路往往是单车事故,环线往往是多车事故,但街上就是人车事故了,但往往我们国内的汽车爱好者比较喜欢在街上开快车,因为街上人多,人多看的人就更多。这是最该谴责的。
我认为,这起事故的关键并不是所谓的富家子弟和老百姓等阶级对立面的问题,虽然这个对立面的话题性和煽动性都比较强。这件事情重要的是肇事者和其朋友表现出来的个人素质以及交警部门的奇怪认定,而更重要的是,大部分的年轻人,男孩,都是喜欢速度的,我身边很多同学,平时很斯文,但买了车以后很多都来问我怎么样才能开快车,怎么样才能漂移,我给的答案只有一个,上赛道,练。让壮年男子踏实开慢车是不可能的,要把他们引导向安全的地方发泄荷尔蒙,比如赛道,如果你在赛道上开的越好,在街上开快车的欲望也越小,对车辆的控制也更好,对于在街道上处理紧急情况也更有帮助,而且,赛道上快是真的快,街上快是小儿科,有很多号称街道高手的人,到我们车队试训,慢的就像路边的石头,所以,我希望喜欢开快车的人都上赛道来,租用赛道不贵的,比洗桑拿便宜多了。
逝者谭卓在最美好的时光里被交通事故夺取生命,他正准备结婚,我最了解享受爱情是多么美好的事情,可惜好风光似幻似虚,我们只能愿死者安息。
关于肇事者,我到今天才知道,我原来和他还有一面之交,半年前在杭州的一个卡丁车场里,我一个朋友举行过一个十几人的业余友谊赛,当时他代表杭州开卡丁车比较好的本地的选手参加了这个友谊赛,排位赛的时候我是第一,正赛一起步就直接被他撞出去了,但后来我也没有计较,一来这又不是正经比赛,是业余的娱乐,二来因为他很年轻,总会冲动和犯错。这件事情,千错万错一定是肇事者的错,因为他的错,一个优秀的年轻人已经失去了生命,这个错无可弥补,但人生还有很多好事他出来以后可以去做,希望他可以明白。

最后,我想以浙江卫视新闻报导里的一句话来结束本文,这也是我衷心的希望:

千万别让钱权交易玷污了生命的尊严!

巨鲸音乐widget

当你看到这篇文章的时候,你是不是同时也听到了动听的歌曲呢?什么,你是RSS订阅的?那打开页面试试喽。。。不要告诉我你还静音了哦。
其实你也许已经注意到了,li2z的右边侧栏里,多出了一个音乐播放器,这就是本文要介绍的巨鲸音乐widget。巨鲸也许大家还不是很熟,它其实就是谷歌music的独家合作者,也就是说谷歌music的音乐,其实都是来自于巨鲸的。
为了避免我的文章成为巨鲸的广告,其他废话我就不说了,如果你的blog也想搞一个播放器,那你可以猛击这个页面,免费注册一个账号就可以创建widget了。
也许是因为现在这个widget还是刚刚起步,所以很多东西还不是很成熟。比如可选的样式就比较少;再比如,建好widget以后,更换音乐也比较的不方便(基本上需要从头创建了);还有,好像也不能控制一开始是播放还是停止。但是有谷歌的支持,相信以后会更好的。

郁闷的杭州公用自行车系统

首先要还是要赞一下杭州的公用自行车系统,这确实是一项很好的便民工程,尤其是一小时内免费,这点尤其赞。确实给了普通老百姓蛮多的实惠和方便。
那么我为什么还要郁闷呢?事情是这样的:
昨晚去同学家玩,回来的时候迟了点,大概晚上近10:00的样子吧,心想反正借个自行车骑回来也挺方便的。于是就真的借了车,往回骑,到了住处附近,还车的时候确遇到了麻烦,附近的几个点都还不了。。。这时候才想起同学之前说的我当时却没在意的一句话:“你家附近有24小时营业的自行车点吧?”之所以没在意,是心想,反正自行车点都是全自动的无人职守的,难道还不是24小时营业的不成?但是在试了几个点之后,我不得不无奈地承认一个事实:全自动的公用自行车服务点确实不是24小时营业的。。。害得我又骑大老远的,到一个有人值班的点换车,距离几乎和起点差不多了,也就是说这大半个小时我都白骑了,还了车,又郁闷地拖着疲惫的身躯坐公交回家。。。
后来我就给这个事情想原因,难道是因为安全问题,怕被偷?这也太牵强了吧?技术上实现不了?我想想也没多复杂啊。但是除此之外我实在想不出,为什么21:00之后就不能借还了呢?大家说说看?

音频处理领域的瑞士军刀──SoX

SoX 是命令行下的一套音频处理组件,由于其功能强大,号称”音频处理领域的瑞士军刀”.
那么SoX到底有什么功能呢?它可以播放/转换/录制多种音频格式文件,包括但不限于mp3/wav/ogg/flac/avi/wmv/pcm/gsm等,要了解完整的支持格式,可以参见官网的介绍.
其中,播放/转换/录制 分别对应 paly/sox/rec 几个命令,没错,大名鼎鼎的play命令正是SoX的组件之一,哈哈,现在感觉到它的强大了吧?
下面用几个例子来进一步说明,由于工作关系,经常接触到PCM和GSM的音频,幸好有SoX.就以这些文件为例,mp3之类的常用文件格式就更轻松了:

播放wav文件:

play -t wav hello-world.wav

播放pcm文件,由于格式的不确定性,需要指定编码方式和码率,如果给的值不对,就会听到变调的声音了,哈哈:

play -t raw -r 8k -e a-law hello-world.pcm

播放gsm文件:

play -t gsm hello-world.gsm

把gsm文件转换成wav格式:

sox -t gsm hello-world.gsm hello-world.wav

把gsm文件转换成8k采样率A率的pcm格式:

sox -t gsm hello-world.gsm -t raw -r 8k -e a-law hello-world.pcm

把wav文件转换成8k采样率A率的pcm格式:

sox -t wav hello-world.wav -t raw -r 8k -e a-law hello-world.pcm

把声卡的声音录制成wav格式,默认应该是48k采样率16bit量化的双声道Signed PCM编码.这些参数都可以指定:

rec -t wav rec.wav

厉害吧~

另外,值得一提的是,由于libmagic包的故障,gentoo下的sox有时候不能根据扩展名来识别声音格式了,会报 no handler for detected file type `application/octet-stream; charset=binary’ 的错误,所以上述命令都加了-t参数直接指定格式,就没问题了.

ubuntu 9.04 里的默认徽标又变了

有点郁闷,从8.04升级成8.10的时候,就已经变过一回了.
今天才发现,不久前升级的9.04,居然又变了,而且这会默认的徽标少得可怜了,导致之前我给一些目录加的徽标都显示不出来了…
好在我用到的徽标也不是很多,还有个gentoo系统当参考,缺啥补啥也就可以了.
但是gnome-icon-theme这个包,这样子变来变去是不是不太合理呢?在此发发牢骚,呵呵~~

发现猪笼草?

感叹一下,又是5天多没上网了,这回索性都没带电脑回去.没有网络,觉得电脑也没啥意思了,呵呵.
不过这回倒是有点新发现:猪笼草?
中学时代的生物书里描述的猪笼草大家都还有印象吧?不过这玩意以前一直都没见过,也一直觉得只会在亚马逊之类的热带才会有,至少也得在海南岛之类的地方吧.没想到,内地也是有的,不知道是不是正宗的猪笼草(和维基里的描述有点出入),但至少是个小型的食肉植物.看来大自然的神奇远非我辈能够揣摩啊~
先放两张我拍的图吧:
猪笼草1猪笼草2
可以看到,外部有根舌头一样的东西伸出来,猜想应该是用来吸引小昆虫的吧.内部大致分为两部分,上半部分的根部,就是那”舌头”的根部,有分泌出类似花粉之类的东西,估计也是小虫子喜欢吃的,这些白色粉末有部分通过一个狭小的通道漏到了下半部分,虫子估计也会被这些吸引到下面,而进来以后要出去就比较困难了,下半部分有很多类似牙齿的东西,估计是消化器官吧,看着蛮猛的样子.
呵呵,上面的都只是我的猜测而已,其实我连它到底是什么都还不确定呢,有同学帮忙鉴定下不?