八月 29, 2006

Playlist

虽然很少听歌,但还是收集了几十首mp3。投靠Linux阵营之后,一般使用xmms播放,偶尔也用mplayer,效果都还不错,唯一的遗憾是播放列表不能正常显示。

上个周末闲来无事,浏览CPAN,发现了几个操作mp3标签的module,顺手装上玩了一下,写了两个小程序,分别把id3v1和id2v2两种标签内容的编码从GBK转到UTF-8。第一个变化是在nautilus里面鼠标右键=>属性=>音频tab页上能够正确显示标签内容,其次,在totem和bmp里面也能正确显示,xmms还是没搞定。由于totem退出时总是报异常出来,我就选择bmp了。

奇怪的是,在公司的电脑上只有bmp能正常显示,其它的都不行了。所以,如果您要尝试这两个脚本,最好先备份您的mp3,本人不对任何运行结果负责!:-(

由于前面有使用Encode的经验,这次主要是学习mp3标签的知识以及相应module的使用方法。两个脚本的功能如下:

getmp3info
显示id3v1格式的标签,并(可选的)能够将其内容的编码从GBK转为UTF-8。使用MP3::Info
mp3tagconvert
显示id3v2格式的标签,以及编码转换。使用MP3::Tag

两个程序的选项是一样的,用法如下:(仅以getmp3info为例)

# 查看id3v1格式标签,如能正常显示,说明编码为UTF-8。
$ getmp3info 1.mp3
# 查看id3v1格式标签,如能正常显示,说明编码为GBK
$ getmp3info --gbk 1.mp3
# 遇到混合编码,可以使用x选项禁止对某个或某些内容做编码转换。
$ getmp3info --gbk --x TITLE --x ARTIST 1.mp3
# 编码转换
$ getmp3info --convert --x TITLE --x ARTIST 1.mp3

其实,播放列表对我这种不常听歌(而且很少更新)的人作用不大,就那几首老歌,熟门熟路的。对于歌迷来说,作用也有限,新歌混熟了之后谁还需要这玩意?!可在某些情况下,它却成了像我这样的End User选择播放软件的重要标准!bmp就这样胜出了,至少是在我的机器上。然而,这样的选择标准是不是不够专业呢?作为一名程序员,我也会觉得用户有时的需求很怪异,为什么要把注意力放在一些无关紧要的事情上呢?处在不同的位置,会有不同的想法,典型的屁股决定脑袋!:-)

八月 24, 2006

Building block

随手写个小程序还是容易的,毕竟有那么多开源的程序、库和语言。可是,要在我们开发的产品上实现一个哪怕是简单的想法,都不容易,因为什么都要从头写起,甚至是解析命令行参数这样的基本功能。

八月 11, 2006

Embrace new programming model

从超线程到双核再到多核,个人电脑正处在一个由量变到质变的过程。Quad Core Desktops and Diminishing Returns评测了一些软件在不同CPU上的性能,并对这种CPU的发展模式提出了质疑。

然而,更应该得到质疑的是当前的主流编程模式。多线程、多进程等各种并行程序设计模式必将在不久的将来代替现在的单进程单线程的模式,而如何降低编写各种并行程序的门槛,便成了迫在眉睫的任务。也许,Erlang Style Concurrency是一个很好的例子。

"Erlang Style Concurrency"里面谈了一点“创新”,正好前两天看了篇美文:The Most Important Software Innovations,可以对比着欣赏。

八月 03, 2006

Secure your job

今天的英特尔处于转折期,动荡的时候难免流言四起,人心惶惶。其实,又何止英特尔,甚至有人提出“全球IT正在变冷”。

与其它公司相比,英特尔的行动显得不够雷厉风行,重组提出有几个月了,可还是在“研究、研究、再研究”。开始的时候大家还有些兴奋,留意着是否变化中蕴藏着机会或利益,而各种版本的流言也应运而生,人们搜索着、转发着、讨论着,颇似粉丝追逐偶像,毕竟,单调乏味的日常工作让人们经受不住一点点流言蜚语的侵袭。然而,真正的行动姗姗来迟,中高层的变动对我们这些小混混来说像蜻蜓点水,掀不起丁点波澜。挥向底层的屠刀何时到来,还是一个问题。“不是在此时,不知在何时,我想大约会是在冬季……”。至少也得比Windows Vista的发布之日要早吧,我这样想。性急的同事问Paul Otellini:“什么时候我可以告诉家人和朋友,工作保住了?”大老板回答的大意是,铁饭碗早就不存在了,即使是他自己,也不敢说自己的职位是安全的。

当然也有不同意见,“出来混,迟早是要还的”。职位不保,可能是能力有限,或者跟错了人、选错了道;公司业绩下滑,就该检查一下,是不是忽略了市场,远离了客户。然而,未必所有人在此时此刻都会遭遇困境,一个人的“冬天”,很可能是另一个人的“春天”。

有长辈问我:“有没有想过被裁了之后怎么办?”我答到:“没想过。”

说没想过是假的,我的思绪也随着流言飞舞过,然而面对各种各样的可能性,我所能做的也只能是等待。说穿了,不就是一份工作嘛,大不了换个地方,照样是一张椅子、一台电脑。最完美的结局(白日梦?)是在相当长的一段时间之后,拿一份丰厚的遣散费,回家做open source去了。不过,长辈想问的并不是这个,他想知道我是否想过,如果做不成程序员会去做什么。做不成程序员?这个我还真没想过。

从“公司不是家”开始,每逢有公司裁员,网上便充斥着泪水和愤怒。然而我的同事们,却更愿意就遣散费一事相互调侃着;也许有很多人觉得被裁掉的1000名经理很可怜,可同样有很多人望着他们的背影,口水流了一地。不知道英特尔是该为自己的“人性化”感到骄傲,还是为员工的“无情”而伤心。但是我想,这至少揭示了很多人对英特尔并没有归属感,甚至仅仅是为了钱。这里面有个人的原因,但公司越来越官僚更加难辞其咎。

留下,或者离开,是由很多因素决定的。有同事问Paul Otellini,裁掉1000名经理的标准是什么。Paul答曰:“有些是因为能力不够,也有些是因为职位冗余,很多人被裁掉并不是他们的错,这是英特尔的错,是我的错。”很多人不明白这个道理,留下的得意洋洋,离开的意冷心灰。pay attention to my dreams是43things上的一个条目,如果说在某个公司工作一辈子也算是梦想的话,现在是时候换个梦想了。追逐理想、坚持信念,要远远比保住一份工作重要得多;放弃理想,背弃信念,也远远比失去一份工作更让人伤心。