Read Sean

Read me, read Sean.
posts - 508, comments - 655, trackbacks - 9, articles - 4


有时我们需要动态的确定当前采用的Python运行时环境对应的site-packages目录,在Python代码中,可以这样做:

from distutils.sysconfig import get_python_lib
print get_python_lib()

备忘。

posted @ 2009-01-23 19:25 laogao 阅读(2574) | 评论 (0)编辑 收藏


从某种意义上讲,easyb就是Groovy版的RSpec,是一个基于"BDD: Behavior-Driven Development"思维方式的测试框架。其作者Andrew Glover是《Groovy in Action》一书的合著者之一。项目的主页在:

http://easyb.org/

不多废话了,上代码,一个story大概长成这个样子(为了方便大家理解,举一个无比弱智的例子):
scenario '1+1应该等于2', {
    given 
'a和b分别等于1', {
      a 
= 1
      b 
= 1
    }
    when 
'c是a+b的和', {
      c 
= a + b
    }
    then 
'c应该等于2', {
      c.shouldBe 
2
    }
}

如何在Eclipse环境下跑这段story脚本?请参考官方文档:
http://code.google.com/p/easyb/wiki/ConfiguringEclipseToRunEasyb

最后你的输出应该类似:
Running first easyb story (FirstEasybStory.groovy)
Scenarios run: 
1, Failures: 0, Pending: 0, Time Elapsed: 0.629 sec

1 behavior run with no failures


posted @ 2009-01-04 22:28 laogao 阅读(356) | 评论 (0)编辑 收藏


1年多以前的2007年11月,著名的钢琴家Alfred Brendel对外宣布了告别演出的日期和地点:2008年12月18日,维也纳金色大厅。瞧我这记性,今天才想起来。

brendel-farewell.jpg

有趣的一个细节是,告别演出上,Brendel的选曲是Mozart的9号降E大调钢琴协奏曲,"Jeunehomme" ("Young Man")。

最近听得最多的,是Brendel演绎的Brahms的1号钢琴协奏曲,虽然不是他最最擅长的Beethoven、Schubert和Mozart,但已经相当精湛传神。

4天以后是大师78岁诞辰,按照中国习俗,提前祝贺一声,生日快乐!大师走好,我们会想你的。

posted @ 2009-01-01 17:25 laogao 阅读(374) | 评论 (0)编辑 收藏


老家有个俗语,叫"嗲言",大致的意思接近"矫情的文字和语言",2008年就要过去了,有些按捺不住,要发点"嗲言"。

08年发生了很多大事,不论国内还是整个世界而言,都是"多事"的一年。对我来说,最大的一件事,应该就是Tony的降生:经过大半年的期盼,和最后半个月全家紧绷的神经,小家伙终于呱呱坠地了,我也名正言顺的升级为老爸。

回顾过去一年的学习和工作,几乎想不出有什么亮点,感觉自己的时间被各种事务瓜分的七零八落,原本的学习计划和想要做的"大事",也都很难一一实现。公司原有团队核心人员从07年下半年到08年不断的流失,而从产品的角度,也到了一个平台期,之前冲刺赶工带来的各种深层次问题,都逐渐浮现。团队要建设,产品要腾飞,都是费劲的事儿,更何况还有来自项目现场的压力。很多时候,我不得不退化成SCM专员和搬运工,代码、版本、分支、补丁、发布环境、脚本、新特性……还好我很久以前就学会了细心、耐心和苦中作乐,不然我早该崩溃了。

09年,人生的第30个年头,该做点什么呢?我想,我必须从SCM这样琐碎的事务和需求的海洋中走出来,去做更有意义的事,对团队对个人都更有价值的事,去学习更多新的知识和解决问题的方法,帮助自己和身边的人走向成功。


posted @ 2008-12-31 20:31 laogao 阅读(374) | 评论 (2)编辑 收藏


本篇是上一期《摆脱iTunes》的续篇。

话说通过openSUSE 11.1下的Banshee播放器重建iPod的iTunesDB后,Podcast和Artwork丢失。后来试用中还发现一个问题,那就是Banshee不能很好的支持修改iPod上现有媒体的元信息。不甘心,找来gtkpod,版本0.99.12,发现还真的是Banshee自己的问题:在gtkpod下,可以很完美的对iPod现有媒体文件进行修改,比如更改专辑名称、艺术家信息等,甚至连封面artwork都能编辑了,呵呵,爽。

希望能给有类似困惑的朋友一个参考。


posted @ 2008-12-30 23:57 laogao 阅读(256) | 评论 (0)编辑 收藏


总算逃出iTunes的魔掌了,叹口气,感慨一下。

自从去年(07年)购进一台iPod Classic开始,iTunes就成了我生命中无法割舍的一部分,不是因为它好,而是没办法,离开iTunes,我无法给我的iPod添加和删除媒体文件。用过iTunes你就知道,很多东西虽然看上去比较眩,但操作起来,蹩脚的让人难以忍受,视频播放性能也很差,兼容度不够不说,自己的格式经常也是卡卡的。

如果说上面的这些问题都还能够克服,让我最不能接受的是,iTunes没有for Linux的版本。这一年多以来,辗转于Ubuntu、Arch Linux、openSUSE,一直都被Apple/iTunes歧视。看到这里你也许会问,既然是Linux的fans,为什么要买Apple的东西?其实这个问题也不难回答,因为iPod是当时市面上能够买到的综合质量最好的便携式mp3播放器。

非iTunes同步iPod最大的障碍,在于iTunes对iPod存储文件的目录结构的处理,除了把文件名称改的面目全非,然后在一个很晦涩的文件(iTunesDB)中定义出最终的专辑、艺术家、曲目到具体文件的"链接",而且(较新版本的iPod)会根据设备ID对这些数据进行hash,以至于非iTunes工具一不小心就容易把iTunesDB破坏,从而造成iPod无法正确读取具体的媒体文件,如果操作无法恢复,那么你的整个iPod资源库能否找回,就要看运气了。当然,高级用户可能知道,其实媒体文件是存放在iPod_Control文件夹下的,虽然目录和文件名称被改掉了,但从文件属性元数据中,还是能够恢复出类似专辑名称等,但如何重建iTunesDB,可能唯一可靠的方式,就是重新从iTunes导入了。

经过一番折腾,终于在Linux环境搞定了iPod的媒体同步,当然,也是冒了些风险。首先需要安装libgpod和gtkpod,虽然它们的最新版发布也有挺长时间,但与之配合的"前端",如Banshee,Rythmbox当时还没能很好的处理设备ID读取和使用,而gtkpod本身document也还不是非常完善,于是相对新的iPod Classic还是无法正常处理媒体库读取和重建。前不久装上了openSUSE 11.1,自带的Banshee 1.4.1号称是支持iPod Classic的同步的。而我又不想太过激进去装Rockbox固件,软件方式的媒体同步就成了最合理的方式。打开Banshee,连上iPod,果然无法正确识别现有的媒体内容(全部划到"其他"),要想看到,只能"重建"。豁出去了,做好必要的备份后,开始探险之旅... 经过十几分钟的等待,wohoo! 成功了!除了Podcast和Artwork,所有媒体都完整的出现在Banshee界面中,断开以后,iPod自身也能够识别这些媒体列表,总算功德圆满,可以和iTunes说拜拜了。


posted @ 2008-12-27 23:28 laogao 阅读(953) | 评论 (2)编辑 收藏


周末花时间看了Rick Evans在London Spring User Group (LSUG)关于Spring 3.0介绍的视频,地址在这里:
http://java.dzone.com/videos/a-look-forward-spring-30

根据Rick的介绍,Spring 3.0将于明年2月中旬正式发布,其中比较重要的两个亮点是:

1- JDK 5将成为Spring 3.0的最低要求,因此很多遗留代码得以重构,更加清晰;
2- 引入了新的Spring Expression Language (SPEL)用于描述XML和Annotation中的配置信息。
(Rick还用了大量篇幅介绍Spring 3.0如何在API和配置层面支持REST,不过这不在我兴趣范围内)

除了上述两大亮点,还有如下一些值得一提的变化:

1- 去掉了Commons Attributes,减少了很多相关依赖;
2- 不再支持Struts 1.x;
3- 全面转向Listener-style的context加载方式;
4- 源码组织更加模块化,每个子模块都是独立项目;
5- 构建环境抛弃Maven,转为使用ANT+Ivy; (笔者非常赞成的一个变化)
6- 源码库由CVS全面转向Subversion。("逃离"CVS是大势所趋?)


posted @ 2008-12-27 17:55 laogao 阅读(2762) | 评论 (2)编辑 收藏


今年发生了太多的事,圣诞节是年底前最后一个重要节日了,公司置办了一棵圣诞树,下班的时候,路过教堂,看见里面很多的人,心想,真的是过节了,是不是应该开心些才对。最近也不知道怎么回事,总是有些郁郁寡欢,身心疲惫,没有所谓的节目,也没有所谓的心情,只有不断的学习和工作。有时候想想,一个人如果要求太高,其实也挺累的,自己累,别人也累,不是么?问题是,多高才是"太"高呢?

如果你和我一样,这个时候还对着电脑,试试对自己说:停下来,喘口气,收拾一下疲惫的心灵,要准备迎接明年的挑战喽!


posted @ 2008-12-24 22:22 laogao 阅读(296) | 评论 (0)编辑 收藏


和11.0一样的问题,当你在openSUSE 11.1中配置好Packman资源库后,就能直接通过YaST2安装w32codec-all和MPlayer,不过这样并不能正常播放常见的rmvb格式视频,MPlayer报告找不到匹配的video解码包,声音能听到,但图像出不来。

解决方法是:

去Real的官方网站(选US站、免费播放器下载、Unix版)下载最新的RealPlayer 11安装包,文件名RealPlayer11GOLD.bin,到本地后chmod u+x,执行该文件进行安装,按照提示,安装路径指定为/usr/lib/RealPlayer10 (注意这里是MPlayer提示的路径,不是笔误)。完成安装后再次使用MPlayer即可正常播放。


posted @ 2008-12-20 08:11 laogao 阅读(1885) | 评论 (1)编辑 收藏


就在数分钟之前,openSUSE 11.1正式release了,主要的新特性包括:

Linux Kernel 2.6.27.8rc1
GCC 4.3.2
glibc 2.9
X.Org 7.4
Virtual Box 2.0.6
PostgreSQL 8.3.5
MySQL 5.0.67
Eclipse 3.4
gtk+ 2.14.4
Python 2.6.0
Ruby 1.8.7
Perl 5.10.0
Mono 2.0.1
Qt 4.4.3
PHP 5.2.6
openJDK 1,2b11
KDE 4.1.3 + 3.5.10
Firefox 3.0.4
OpenOffice 3.0
KOffice 1.6.3
Mono 2.0.1
GIMP 2.6.2
...

更多内容
openSUSE主页: http://www.opensuse.org/en/
11.1功能清单: http://en.opensuse.org/Featurelist_11.1
下载页: http://software.opensuse.org/


posted @ 2008-12-18 22:23 laogao 阅读(510) | 评论 (0)编辑 收藏


初学PostgreSQL的朋友可能会有这样的疑惑:如何重命名已经建好的数据库?因为PostgreSQL默认的客户端pgAdmin III并没有地方可以让我们去修改某个现有的数据库的名称。遇到这个情况,可能不少人选择了backup -> drop -> create -> restore的方法,其实大可不必。

首先,确保没有用户连接到需要改名的数据库,包括你自己。你可能会问,我不连上去,怎么执行更名的命令呢?其实连到其他数据库,比如默认的postgres维护数据库即可。
然后,执行下面的语句,假定你要更名的数据库现在的名称为abc,希望更改成cba:

ALTER DATABASE abc RENAME TO cba;

That's it.


posted @ 2008-12-17 18:33 laogao 阅读(4253) | 评论 (0)编辑 收藏


提示: 流水账+非技术贴,赶时间的朋友请跳过。

最近一段时间以来,家里的PC(平时也就是给老爸老妈玩玩游戏看看股票什么的)开机状态下声音狂响,运行一些高CPU消耗的程序时有死机(直接跳掉关机)。实在不胜其扰,今天终于下定决心给它来个体检。

根据鄙人并不丰富的经验,噪音肯定是来自风扇,而时有发生的自动关机现象,怀疑是风扇问题引发的散热不足导致CPU或者其他核心组件过热。观察下来CPU温度并不是很离谱,更加重了疑虑,准备开箱检查。简单的用螺丝刀把手压停风扇的办法,很快找到了问题风扇:确实不是CPU,也不是显卡,而是北桥芯片上的那个!关机后,手工尝试拨动叶片,也能感觉到引起噪音阻力,看来确定是它无疑了。

怎么办呢?不知道是nForce芯片组的特点,还是GIGABYTE这个系列的特点(手头这块主板型号是GA-M55SLI-S4),北桥芯片上除了散热片,还在散热片上集成了一个风扇,看来这个芯片组发热蛮厉害的,要命的是这块散热片+风扇(也就是北桥芯片)的位置正好在PCI-E插槽的末端,也就是说正好被显卡挡在下面,空间十分狭小,如果要更换散热片/风扇,也只能是找最薄最小的那种,还不能保证插孔间距是标准的。

GA-M55SLI-S4.jpg

不过既然都到这份儿上了,索性做到底,试试换一个吧。从一个废弃的老显卡上拆下来一块散热片带风扇,目测和主板上的那块长方形散热片卡口间距一致。由于这个散热片的特殊位置,害得我只有把主板卸下来才得以拆除,不过新的问题又来了,间距并不标准!至少和我之前卸下来的显卡风扇间距不一致,要宽那么一点点。我无语了,只好闷着头回去看看出问题的散热风扇还有没有什么补救的措施。经过一番敲敲弄弄,"手测"风扇叶片,感觉比先前顺了很多,赶紧接上电源,居然就这样奇迹般的不响了。

Google了一下,网友对这块主板的噪音(貌似都是北桥芯片上这块风扇的事儿)也多有抱怨,看来偶遇到的不是个案啊。不管怎么说,撞大运也好,对症下药也好,问题总算是解决了,功夫没白费:"整个世界安静了"。


posted @ 2008-12-17 00:51 laogao 阅读(1375) | 评论 (0)编辑 收藏


Python 2.6发布两个月后,Python 3.0正式release了。

Download: http://www.python.org/download/releases/3.0/
What's New:http://docs.python.org/whatsnew/2.6.html#python-3-0


posted @ 2008-12-04 19:30 laogao 阅读(276) | 评论 (0)编辑 收藏


算下来,今天已经是我家宝宝出生第20天了,可能由于是比预计的日期有所提前,至今我仍在寻找当爹的感觉,至少这种感觉还没有他还在妈妈肚子里的时候那么强烈:仿佛突然之间,就有一个小生命被塞到了你的怀里,奇妙的让人不可思议。

宝宝的名字倒是很早就想好了:海桐,英文名Tony(似乎预感就是男孩儿,女孩儿英文名压根就没想过)。

海桐(Pittosporum tobira)是一种植物,为亚热带树种,喜温暖湿润的海洋性气候,喜光,亦较耐荫。对土壤要求不严,粘土、沙土、偏碱性土及中性土均能适应,萌芽力强,耐修剪。取这个名字,一方面宝宝出生在上海,另外也借此寓意希望他健康成长,拥有旺盛、顽强的生命力。


posted @ 2008-11-25 12:45 laogao 阅读(265) | 评论 (1)编辑 收藏


实在受不了在中文Windows下Java(Swing)程序默认的字体,那叫一个难看。如果你和我一样,那么希望下面的小贴士可以帮到你(以JDK 1.5.0为例):

1- 找到JRE目录,如果你安装的是JDK,那么在JDK的目录下可以找到jre子目录,就是它了;如果你安装的JRE,那么默认应该在Program Files\Java\jre1.5.0_...。
2- 进入JRE目录下的lib文件夹,你应该可以看到很多fontconfig开头的文件,找到fontconfig.properties.src,拷贝一份,重命名为fontconfig.properties。
3- 打开fontconfig.properties,你会看到一大堆字体相关的配置,找到allfonts.chinese-ms936这一条(通常在最前面),可以看到默认设置为SimSun,修改这个配置,选填你需要的字体名称即可,如"Courier New"、"Consolas"等。

更详细的配置,参考:
http://java.sun.com/j2se/1.5.0/docs/guide/intl/fontconfig.html


posted @ 2008-10-24 11:36 laogao 阅读(3503) | 评论 (0)编辑 收藏

仅列出标题
共34页: 上一页 1 2 3 4 5 6 7 8 9 下一页 Last