Google Fans

以前我只承认自己是 “Google 的忠实用户“,不过现在我决定把自己上升为“温和的 Google Fans”。所以呢,博客主阵地也将转移到 Google: http://solrex.blogspot.com ,但 MSN SPACE 仍将保持同步更新。MSN 之所以没有失去我这个用户,应该感谢中国伟大的 GFW。比较易记的: http://blog.solrex.cn 会一直指向我主博客,谢谢。

唉,放弃原来的博客也是有点舍不得,在我的苦力经营下日点击量已经趋近 40,虽然大部分是 google 和 baidu 带来的,不过,这些数字又有什么用呢?后悔当时为博客选择域名不谨慎,其实,每个人都不应该把自己的幸福寄于他人,理智的人应该遵从 Adam Smith 的指导,在不伤害别人的前提下寻求自身利益的最大化。

本人下一个目标是努力争取在研究生阶段进入 Google 中国做实习生,我知道自己现在和 top coder 还相差很远,今后会努力提高在数学和算法领域的知识水平。我将不放过任何一个进入 Google 的机会,朋友们有任何和 Google 实习有关的消息都请 email 我一份,我会非常感谢。

发泄帖

真郁闷,真郁闷,真郁闷啊!!!

NND一个 BFD library 里的函数太变态了,前面 abfd 的地址还保存在 $ebx 中,紧接着一句调用函数的参数中 abfd 地址就变成 $ebi 中的了,这 TNND 是怎么优化的啊,还出现在特定的 target 中,发指发指,要崩溃了。

PS:发泄帖,就想骂两句,莫回,下次删。

祸不单行

看到了不该看到的东西,看来自己还是太天真,该结束了,我会记住今天。

用王冉的话来说,就是结束练剑生涯。:)

有点想哭,不过,好男儿何患无妻,谨以此记。

不愿意再看见这个域名,此博今日起关闭,以后请访问:http://solrex.blogspot.comhttp://solrex.spaces.live.com(http://blog.solrex.cn指向的为主博客),谢谢!

曲终,人也该散了。

落叶归根

又是一部关注小人物的电影,故事讲得应该算比《鸡犬不宁》成功,主线很清晰,就是一个人,没有其它干扰。不像《鸡犬不宁》那样完全忠实于生活,但也正是这一点让它能展现更多东西,中国的现代社会的侧影。片中出现的每一个人都是一个符号,代表着一类人物,讲述的每件事都是一个特征,代表着一种现象。大多都是用来讽刺。

非常喜欢这种片子,能让你笑的时候感到心酸。大概也能看到一些自己的影子吧。
Copyright © 2005-2007 Solrex Yang. All rights reserved.

同学少年

喜闻 Ally 同学拿到 UW-Madison Department of Statistics 的 Offer,很是为她开心。UW-Madison 的统计全美第四,不简单那,也算是得偿所愿了吧。几年后见面,恐怕就要改口叫 Dr. He 了!哈哈,看来中文姓名翻译的确不太方便,有名字叫 you 的,有姓叫 he 的,我将拭目以待人称代词家族的大团圆 :)。

当日还在 MSN 上告诉我正式 offer letter 还没有来,莫要外传,没想到过了两天自己就忍不住发到 Abroad,当然又 Top10 了。呵呵,好事嘛,就应该大家共享,藏着掖着干嘛是吧!

前几天吃饭的时候 Ally 还在忐忑,说申请的学校都比较好,万一什么都没有怎么办?才过几天,没想到幸福来得如此之快,大概是当初晕晕乎乎地把申请信寄给自己这出事儿把坏运气都耗费完了吧 :)。现在应该可以专心学车了,也可以好好过年了,祝发烧早点病愈啦!

这算是南大数学申请的开门红了,除了两个去 EP 的,一个去 HKU 的 ws 男,剩下估计都在等,希望是个好兆头。今年过去,同学们以后才是真的叫做五湖四海了呢!

看着同学们一个一个都快乐地朝 America 奔去,以后是不是也要努力申请一下呢?恩,MIT CS,就是你啦(开个玩笑,别当真)。
Copyright © 2005-2007 Solrex Yang. All rights reserved.

财大气粗

公司牛了就是不一样。前些天在网上申请了 Intel 的几本 manual ,寄到手里才发现人家真实诚,六本书,11磅,沉甸甸的,摞起来半尺。一分钱没要,FedEx 过来,还先给我发了封 eMail,我这两天就 track 着它的路径等过来了。

Jan 26, 2007 10:18 AM Delivered BEIJING CN
8:52 AM At local FedEx facility BEIJING CN
8:44 AM On FedEx vehicle for delivery BEIJING CN
Jan 25, 2007 7:24 PM Int’l shipment release BEIJING CN
Jan 24, 2007 8:51 AM Departed FedEx location ANCHORAGE, AK
8:06 AM Arrived at FedEx location ANCHORAGE, AK
2:37 AM Departed FedEx location MEMPHIS, TN
12:40 AM Arrived at FedEx location MEMPHIS, TN
Jan 23, 2007 8:12 PM Left origin DENVER, CO
6:07 PM Picked up DENVER, CO
12:00 AM Package data transmitted to FedEx
同样是做芯片的,我们公司什么时候能让人免费申请 Manual,免费申请样片,那就牛了。

日子过得重复,也没什么好写的。GDB 的 target dependent 写得差不多了,下面准备把 BFD 的 Elf back-end 完全移植到我们的 CPU 上。原来虽然也有,但只是对 MIPS 做了修改,而没有定义新的 target。然后把 disassembly 功能实现了,再根据 Dwarf2 debug information 把 frame cache 的事情解决了,整个工作也就完成了。其实早就可以做的,但是因为还正在发展中,很多因素不确定,就像现在连 magic number 还没有,只好慢慢来了。反正我又不急,学什么都是学,进度压力小我自己支配的时间就多些,可以多消化一些。

等做完了再写几篇日志记录一下,坚持我的知识共享原则,而且这方面中文的内容也少,台湾做了不少工作。
Copyright © 2005-2007 Solrex Yang. All rights reserved.

什么是歇斯底里

和室友简哥一起看电影,有一个镜头,主人公将整张桌子上的东西一把扫了下去(注:不是那种很特殊的目的 ^_^)。简哥就说:“我一直很不理解这种举动,你说他为什么要把所有的东西都打碎呢?我从来没有过这样的欲望。”

入梦前想了一下,我想我大概知道那是怎样一种状态,因为在记忆中我至少干过两次这样的事情。

五年级下学期时,从同桌孟奇那里借到一个计算器,回家就用那个东西做算术题。被我妈看见了,勃然大怒,训斥不止。我想当时可能是因为唠叨,因为我妈只要开始训我,不唠叨半天那是不可能收场的,把我也气得不行,一怒之下把计算机摔在地上。意思就是我摔碎了,不用了还不行吗?结果当然可以想象,被打了一顿。

上初中时,大概是在初二,原因不是太清楚了,好象是因为踢球回家太晚,过程应该和前面差不多。手里拿着一个老爸发的太空杯(当时那玩意儿很流行),里面还有点水,被我往地下一掼,现在还记得那瓶壁被摔得都变成不透明白花花模样了。但是这次结果却反了,因为自从上了初中以后就没再挨过打,变成了我妈在那边哭边数落生了个不孝的儿子,我过一会歉疚了赶紧追着老妈赔不是。

看来我小时候臭脾气还不小,别人都没做过的事情我做了两次,还都是对我妈。罪过啊罪过!

不过也是快十年的事情了,由是而观之我性格方面的社会主义改造不可谓不大啊。现在已经很少有人能让我如此失控了,就算和我妈吵架也从来是见好就收,一看不行了赶紧皮着脸道歉。用句不敬的话说,满打满算我的直系亲属也就剩我妈一个了,再把她给气得不理我了我就真应了那句成语了:无怙无恃。这可是赔本的生意,不能做,不能做,坚决不能做!

唉,其实每次和我妈吵架我都很后悔。我家的平均收入,大概和北京的最低生活保障金持平,可想而知要供养两个大学生是多么的不易。虽然我不是个花钱没谱的人,但和一些同学比起来也算不上节省,如果不是姑姑的接济和我妈的节约,我不申请助学贷款吃饭都成问题。我妈为我们兄妹俩付出多少我心里都明白,可就是不能像古书里写的那样事母至孝。我很奇怪地发现自己心很硬,不是一个感情充分的人。我爸去世我也很伤心,但是也就一阵子,后来办丧事的时候就哭不出来了。因为要哭的时候我老在想,我为什么要哭?为什么非得拣人来的时候哭?我难受不难受和别人又有什么关系?还没有发生过什么长时间影响我情绪的事情,在别人看来不得了的,对我来说相对而言并没有那么大。可能跟见惯了生离死别有关,从7岁到17岁,10年间5个至亲去世,还有什么能比死更惨,我觉得活在世上已经很开心了。别人都够糟践自己的了,自己再糟践自己,何苦呢?

所以说呢,现在在北京的生活我已经觉得很幸福了。又能赚钱又能学东西,还没多大压力,哪儿有这么好的事儿?虽然说像获鼎兄在博客里说的一样:“上海的生活其实挺苦的...在这样的城市里面,如果不精打细算,真的很难体面地生活下去。”看看周围动辄上万的房价,想想自己那点可怜的工资,就算月薪上万又怎样,还不依旧是穷人,也难免有感慨。不过小时候我爸经常给我说,人比人,气死人。跟我妈工作了那么多年工资才刚过千比,我这乳臭未干的小孩玩一样居然拿她的三倍,要不是自己的孩子我妈心里该有多不平衡啊!所以我现在,房子-不想,结婚-不想,女人-想也白想,这日子就过得舒坦多了。怎么着这半年的实习下来,买个笔记本不成问题吧?一个穷挨踢人对一台高性能笔记本的渴望绝对不亚于女人想着商场里的名牌服装,是我自己赚钱买的当然就更开心了。

还有些开心的事儿,现在我都咧嘴了:NND感冒总算好了,明天是周末,再加上是我有幸逃过的研究生入学考试(为这事高兴心理有点变态啊,阿弥陀佛,罪过罪过!不过~~~~,··我··实··在··是·· 很开心 (~_~)。)

PS:

顺便推荐两篇看得很痛快的文章,易凯投资咨询公司CEO王冉:《世界是“贱”的》,王朔:《王朔谈潜规则》。

我总算明白了虽然 MSN 和 QQ 登陆时候的弹出窗口那么讨厌而它们还一直硬挺着、锲而不舍地、无可奈何地、不弹出来誓不罢休地、不被关闭决不放弃地往外弹。就拿我现在来说,几乎不上门户网站,每天获得资讯的渠道只有两个:LilyBBS 和 Google Reader。上班到公司登陆 MSN 弹出的那个窗口,还真是有点意思了。今天看了王朔的屁话连篇,觉得这个人虽然名声不算很好吧,还能说点人话,决定了,明天去第三极找几本他的书看。嘿嘿,想到这又能乐了,孔乙己如果能生到现在,还用得着“窃书不能算偷……窃书!……读书人的事,能算偷么?”我是不是该开心呢?
Copyright © 2005-2007 Solrex Yang. All rights reserved.

使用自由软件构建交叉编译、汇编和连接工具, Cross-build gcc for mips.

唉,好郁闷,做的东西自己都不懂多少。我 GDB 用的都不熟,还要给 GDB 添加新的 target。自定义 elf 文件的 BFD support, target dependent, disassembly function, 好几千行的代码啊,弄不好得上万行,GDB 那么多文件,看得我头都晕了。

因为我们的芯片和 MIPS 关系比较密切,就先编了个 MIPS 的交叉编译和调试环境玩玩。

Concepts:

交叉编译,就是在一个平台上生成另一个平台上的可执行代码。这里的平台包含两个概念:Architecture 和 OS,x86 Linux平台是Intel x86 arch 和Linux for x86 OS 的统称,Sparc SunOS 4.x 就是 Sparc arch 和 SunOS 4.x(or Solaris 1.x) 的统称。生成交叉编译器后就可以在主机上生成目标机的代码,就比如说显然低端手机上不可能装一个操作系统,更不用说编译器了,但手机上仍然需要安装软件才能提供服务。就需要使用交叉编译器,在 PC 上编译好程序以后将二进制文件装载到手机的内存中去(有可能直接烧进去,或者使用 bootloader 加载)。这个时候,PC 就是主机,手机就是目标机。这个程序在主机上是不可能直接运行的,因为它的代码指令是目标机的指令,很可能和主机的指令集完全不兼容(不然要交叉编译器干吗?)。

调试环境,程序编译成可执行文件之后肯定需要调试,但是代码在主机上无法运行,如何调试?常用的有几种办法:1.把二进制文件加载到目标机上,打印出调试变量。2.把二进制文件加载到目标机上,通过串口或者网口向管理程序交流,实现在线调试。3.把二进制文件放到主机的模拟器软件上运行,进行调试。其实还有一些其它的方法,比如 ICE(in-circuit emulator),但是代价比较高。这几种方法一般都是混合使用的,很难一种就完全满足要求,就连 Nokia 出的手机模拟器也是漏洞百出的,必须得在板子上运行之后才知道代码有没有错误。

GDB 是支持远程调试的,可以通过 serial port, tcp, udp 和 pipe 与目标机进行交流,使用的语言叫做 RSP(Remote Serial Protocol),同样这需要目标机使用同样的语言和它交流,这样就需要一个翻译。这个目标机上的翻译程序就是 stub(裸机和简单操作系统) 或者 gdbserver(可以运行gdb的操作系统)。但是光有这些还不行,因为 GDB 必须知道目标机的结构(寄存器,字长等等),二进制文件的格式(elf,pe,寄存器代号),操作指令才可以实现远程调试,不然它怎么知道寄存器名对应的是哪个?怎么加载函数的符号表来设置断点?怎么反汇编地址内容?唉,我现在要做的就是把这些添加到 GDB 中去,然后把 GDB 和模拟器用 RSP 连接起来。其实我们的模拟器就支持直接调试的,但是客户不一定喜欢字符界面啊,要做 IDE 的话,而且以后还要支持在线调试,还是用 GDB 方便,毕竟 GDB 可以和很多 IDE 集成。

Practice:

我们的编译器是改的 openCC,我也不懂。这里编的是GCC,它已经支持了很多平台,arm, mips, sparc, powerpc...,通用性更强些。

编译工具需要好几个部分,这就有个编译顺序问题,应该先编什么?显然应该从最底层编起,顺序大致应该是:

binutils, gcc-cross, library, gdb.

其实 GDB 无所谓了,放在什么时候编都一样。但 binutils 必须放在 gcc-cross 前面编(如果不能使用主机上的as, ar, ld, nm 这些二进制工具的话),而 lib 也得看需要不需要 gcc-cross,如果直接使用主机上的编译器编译的话,就放在前面编,如果不能使用,就放后面编。glibc 太大了,很多时候会使用其它的 lib 代替,比如 uclibc, newlib 等等,特别是目标机操作系统有要求时。

编译过程都不难,无非是 wget,tar,configure,make,make install。但是有很多情况下过程不会那么顺利,尤其当不了解整个工具链的要求时,碰到编译不过最好找个懂的人问问,是缺少 lib 啊,还是配置问题。

我用的版本都比较新,binutils-2.17,gcc-core-4.1.0,newlib-1.15.0,gdb-6.6,最重要的就是 configure 啦,随便写一下,编译最好在新建目录里。

/src/binutils-2.17/configure --prefix=/program --target=mips-elf
/src/gcc-core-4.1.0/configure --prefix=/program --target=mips-elf --with-newlib --enable-languages=c
/src/newlib-1.15.0/configure --prefix=/program --target=mips-elf
/src/gdb-6.6/configure --prefix=/program --target=mips-elf

要注意的是,如果编译 gcc-cross 时候加 --with-newlib 的话,要到主机编译器能找到的地方,比如对应的 lib 目录下建两个软连接,分别指向解压后的 newlib 根目录下的 newlib 和 libgloss,而且必须先编译出 gcc for mips-elf 后再编译 newlib for mips-elf。编译成功的 gcc 安装到 prefix/bin 目录后,会加上 mips-elf- 前缀。最好不要使用 --program-prefix 选项,这样会造成后续编译自动寻找工具的麻烦。最好将 prefix/bin export 到 PATH 里去。

其它还好,最头痛的是 gcc,时间很长,用 core 也得编10多分钟,还是在服务器上,配置也繁,比如 target 选 mips-linux-gnu 就是死活编不过去,选 xtensa-elf 也是编不过去,肯定是少什么或者设置不对,但就是不知道少的是什么,还是没有经验啊。要是再加上操作系统的东西,编译 gcc 前面还要先编 kernel headers, glibc headers,gcc 可能需要编两遍,还有 glibc, kernel,更麻烦。反正我现在至少不用费那个劲,现成的编译器已经有了,只是需要 map 一些东西到 gdb 而已。

GDB 自带 mips, arm 这些程序的模拟器,不知道功能怎么样,但至少可以用。但是编译时候的参数还有程序中函数入口等等实在是太烦了,写和调试嵌入式系统的代码那叫一痛苦。

Copyright © 2005-2007 Solrex Yang. All rights reserved.

发薪日,加薪日

我应该高兴才是,人生第一次缴纳个人所得税:20元,下个月工资调整到3k。虽然也不算多,但对我一个本科还没毕业,基本上没有工作经验,也没有和公司签订长期合同的小实习生来说,非常非常满足了。公司的 team leader 很看重我,让我负责一个独立模块的开发,也是应他的要求老板给加的工资。

我很喜欢这里的工作,公司氛围很好,像南大一样,根本不限制你做什么,只要你能把工作做完。不要求点卯,不要求加班,没有上班时间不准做什么,典型的程序员开的公司。几个合伙人都是美籍华人,SGI, Intel, Motorola, NVIDIA 这些公司出来的,都带领大型团队做过项目,所以貌似我们公司对产品和进度的把握很有自信。其实现在做的东西他们都做过类似的或者说就是重写一遍,再优化一下。同事的年龄都比较大,大部分是九十年代初毕业的,所以把我当成小孩一样,很照顾,我也学到了很多东西。不知道我读研时候还能不能在这干,我是想能做长些时间的,伴随着一个产品和公司从无做到有做到强的工作经历是很珍贵的,而且自己参与其中的感觉应该比 IBM, Microsoft 这样的大公司要强烈。

自从来到北京,心理变化很大,有了很强的独立感,我觉得我现在可以去做任何事,以前的那种对前途对未来的担忧荡然无存。

但是,仿佛对我这种好运气的报应,女朋友不愿意见我,还要再次休学。我们两个,如果开玩笑的话,写下来,电视剧也是能演几集的。我觉得两个人,就算是只是朋友,当一个处于困难中时,另一个也不能抛下不管,但是她偏偏根本不愿意我陪她。或许也因为我太坚持自己的原则了,也太死板,不会耍一些哄女孩的小把戏,得不到她的欢心,我觉得她对我的信任也在逐渐流失。我真的是很怕慢慢增加的距离感,很怕很怕。为了弥补这种距离感我来到北京,可是她却要回家,我不知道怎么办才好。我真的不懂,为什么专业的问题就能对人产生那么大的影响?或许我慢慢会理解我们系那些原来在我眼里属于不思进取的同学的感受,世界在我们眼里是不一样的。

该新年了,不说这些丧气话。无论如何,我会等一个结果的,既然已经几年了,那再多几年也无妨。

今天头好痛,鼻塞的厉害,大概是前几天晚上风吹的。等一会儿给老妈打个电话告诉她加薪的好消息就回去。

过些天该研究生入学考试了,虽然参加考试的兄弟姐妹们不会看到,我仍然趁新年在这里写下祝福,祝愿每个人都有好运气,最后找到好归宿。最好多几个来北京 ^_^

不写了,各位明年见!
Copyright © 2005-2006 Solrex Yang. All rights reserved.

流水

睡到自然醒,近11点钟。爬出已有些凉意的被窝,冲个暖暖的热水澡,换上干净的衬衫和内衣,无比的熨帖舒适。刷一个牙,刮一下脸,清清爽爽地拥抱休息日的到来。

裹上厚厚的冬装,武装到手指,出门去约会北京城灰蒙蒙的太阳。周末的沃尔玛也不见许多人,迅速找到售套餐的柜台,拎着盒饭出去结帐。坐在休息桌椅上处理完毕,折身回去,再出来时,手中又多了袋曼可顿和大桶酸奶。

徒步四十分钟,穿越过熙熙攘攘,总算望见“第三极”那三个无比自恋的招牌大字。与几个电子城门前的车水马龙相比,中关村广场背后有点像浦口,街道上鲜有行人和车辆,不过,一点也不违背“北京是个大工地”这个结论。

旋转门进入,上6楼。抱起萨缪尔森的《经济学》,开始寻找地盘。居然看到被坐弯的铁折椅,莞尔。往来两番仍无空座,无奈转身间见三箱书成L状,大喜。自此坐定直到打烊。凡两日,阅过百七十页。

看过萨氏经典,才知道南大商院那套教材实应标为:考试专用。从切入之深浅,或是讲解之简详,差之千里。萨氏书中引阿尔弗雷德·马歇尔的一席话:我最大的野心就是增加剑桥大学输送给世界冷静而热情的人才,他们愿意把自己最充沛的精力贡献给社会,设法解决身边的社会困苦;直到了解高雅而高尚的生活的全部实质内容,他们才会满足。倘若中国大学能以此为训,国之幸甚。

我应感谢学到的半拉子金融专业,虽未得真才实学,却把那数学人对经济的狂妄除的一干二净。经济学内容于数学未见艰深,但其规律的掌握却不知难多少倍。数学家眼里的是抽象世界,经济学家目及的却是现实生活。人和人类,不是几个数字能简单表达的。

阅读观念也随之改变,已然不是那个拿起什么都读得下去的孩子了。翻开报纸,只会去读财经、政文版,所谓的经济学家们拿着一串串数字支撑起某种观点砸来砸去要比几个男人争几个女人好看的多。隐藏在政经行为背后的逻辑也会告诉你表面和本质相差其实很远,经济学家和政治家最精通的就是把毫不相干的事情放在一起,创造出某种关系,然后让你接受他的结论。最好笑的是,同一件事情同一组数据经常得出不同结论。经济学是个美人,需要用智慧去揭开她的面纱。

回家的路上,九点钟,北京城依然沸腾。中国的圣诞夜,是属于情侣的,我仍无福消受。想起书中所说实证经济学与规范经济学的区别,大概爱情是 normative 的吧,可我总是用 positive 的眼光去看,注定是看不透的。
Copyright © 2005-2006 Solrex Yang. All rights reserved.

今年对我影响最大的几个人

各位师兄师姐流行起了写总结,让人顿生感慨之念。想我这今年过得乱七八糟,写篇总结也不容易。至于流水帐,已经在生日那回记过了。生日过后这段时间,我不想写多少,尤其是个人感情方面,我实在想不明白我哪个地方有问题,写多了反而将自己陷入麻烦。也引用一下师兄引用的一句话:Can chasing girls change the world? I want to change the world.

既然不愿写总结,前几天看到报纸上问了一个问题:今年对你影响最大的人是谁?我就写写今年我认为对自己影响最大的人吧。

第一个当数 Xu You 师兄,这里可以看 Eric 对自己的回顾(请注意里面谦虚了很多)。在大三升大四这段时间,每个人都会面临着很多选择,所以也会看看别人是怎么走过这段历程的。在我的眼里,Eric 曾经所做到的,都是我很佩服的事情。而且我们两个有着相近的人生观,可以说都是有野心的人,包括对科学研究的态度,对人生价值的观点,都很相似。去年大概是12月份,Alex 和 Eric 到南平教室做交流才第一次认识他,其实 Alex 经常提起柚子,只是无缘早相见罢了。听了那个讲座之后我相当的惭愧,虽然自认为不是一个堕落的人,但相比而言我利用时间产生的价值和 Eric 相差太远了,心中好生佩服。后来几次相见熟识起来,经常会在 Gtalk 上聊天,还有互相浏览博客,获益匪浅。一个那么优秀的人放在你面前,总会激励起自己学习的动力,虽然有时候获得一点小成绩,但抬头看看,和师兄比相差那么远,哪儿敢骄傲。可以说,我的远期榜样是 Kaifu Lee,近期榜样就是 Eric。

第二个是获鼎兄,我得感谢他。不是他,我不一定会走上 IT 这条路,或者说,至少不会那么早感受到自己的兴趣并付诸实践。Alex 的激情一直非常能打动人,老实说,从技术上,他并没有教我很多,也就是一点点关于 HTML 语言和服务器的知识。但是每个人做每件事都会有一个引路人,我的引路人是 Alex,是他告诉我:嘿,你能行,这些东西没什么大不了的,非常 easy 。是他的言行给了我信心。而且我更佩服的是他的硬朗和执着,我们都不是有背景有身世的人,但相比起来,山里出来的 Alex 比我们更有理由抱怨社会的不公,他在大学的经历比我们的生活要浓重也可以说是精彩许多。我经常看见他穿着迷彩服,问之他直言说没有衣服穿,问他为何不考虑再读书深造,他说我家里负担不起,妹妹还要上学,我能尽早工作就能减轻许多家里负担。从他身上我学到了要坦然去面对出身和背景的不公平,努力去争取自己能做到的一切,而我以前对家庭的贫穷是有那么一丝不好意思的。也正是因为执着,Alex 最终进了 IBM 公司,在博客里,有一句话我印象非常深刻:我做到了一个小本能达到的极限了。我希望自己也能做到人生的极限。

第三个是吴朝阳老师,他的计算技术基础课,我如果不是缺课最少的,至少是听课最认真的,大概也是学到最多的。我现在仍然怀念那只有七八个人的教室,以及和老师像聊天一样上课的气氛。这门课使我受益良多,不管是在学习上还是在生活上。这门课上学到的东西,使我软件设计师考试顺利通过,几乎没有困难。我找实习的时候,前辈电话面试开始就问:你简历上写懂 STL ?至于吴老师对生活的态度,我很佩服他的洒脱,也看到他不得志的一面和一些弱点。他的人生着实有我羡慕的地方,我知道那并不是我想要的,最重要的是吴老师对我们来讲没有面具,他对人生经历的坦言给我人生观的成熟带来很大启发。

第四个是顾佶老师,我们的辅导员。自从大二当上年级长以来,就一直和顾老师合作到今日。坦率的说,刚开始我对她的工作方式颇有微辞,但随着时间的变化慢慢地能理解到她的难处。顾老师对我的工作和学习帮助都非常大,为我们年级也费心许多。而且在今年的保研这件事上,我更得感谢她的督促使我没有放掉这个机会。在当年级长的这段时间里,我一直叫她顾老师,也一直用敬称,刻意地维持一种距离感,因为我不想和上级搞得太近,这是我做人的原则。但我想大学毕业以后,我们应该能成为朋友。

我不是一个容易被人左右的人,对自己的人生道路也有相当清醒的认识,但这几个人确实深深地影响了我。在一年即将结束之际,谨以此文向他们表示最真挚的感谢,并祝福他们能平安幸福。

Copyright © 2005-2006 Solrex Yang. All rights reserved.

又得到支持啦,耶

Ben Elliston (Maintainer of DejaGnu) 这个老顽固,我好说歹说就是不愿意采纳我的建议。最后没辄了给我发了封邮件(注意:没有 cc 到 mailing list):
DejaGnu already has too many knobs that can be turned. I am reluctant to add more when the environment already provides ways for users to customise its behaviour (and, after ~15 years of DejaGnu development, you’re the first peron to request this feature).

嘿嘿,人家都 reluctant 了,我就别难为人家了。谁知道今天又有一支持者,是我们亲爱的 IBM 德国公司的一位先生,开心死啦,看着倍儿亲,这下 3:1 了,看你怎么办,Mr Hard! 哼哼!

==============小样,我分割你们(this line copyright (c) You Xu)===============

哈哈,发现一个有意思的网站,有道,它的博客搜索狂有意思,在博客搜索结果里可以找到博客档案,评论相当搞笑啊!^_^

比如我的评论是:

伟大的企业家杰克•韦尔奇在书中提到,要注意工作与生活的平衡,只有这样员工才能发挥更高的效率。如果你是博主的领导,请不要因此苛责他(她)。如果你是博主的同事或者朋友,请不要转给他(她)的领导看——毕竟,杰克•韦尔奇只有一个。一句话,博主很能写!现在就把博主的博客文章全部集结起来,联系出版社准备发行《祥林嫂后传》吧。人称每周一歌的就是博主了,其实适当的距离反而更有新鲜感。

还有更多的,习惯发文时刻,习惯发文星期,发表文章长度统计,可以点这里查看。感兴趣的就过去看看吧。

PS:

郁闷,用一下博客搜索,居然发现有人抄我文章的,连里面出现的 solrex 都没改,也没标明出处,敢情我 copyright 白写啦!! 算了算了,也没心思计较那么多,提醒一下得了。
Copyright © 2005-2006 Solrex Yang. All rights reserved.

宝贵的周末

又该周末了,非常开心。做学生不知道,周末和平日里差不多,现在才真切地感觉到周末对上班族来说是何等的幸福。看着坐办公室很舒服,坐一天不动弹没什么,但连着坐五天就知道有多痛苦了。真是感谢那些为我们争来8*5工作制的伟大的工人先驱们。

最近又买了几本书,"Introduction to Algorithms", "Internetworking with TCP/IP", "Exploring Expect",花了160多块。前两本在中关村书城买的,影印,8折。最后一本是在淘宝上找到,然后跑到北京中医药大学一美女那买的,第一次买翻印的原版书(就是DB啦)。写 expect 这个人太吝啬,documentation 没啥实质内容,满篇告诉你 exploring expect 有多好,然后推荐你去买,最可恨的是居然连电子版都找不到。要么你去买他的书,要么你忍受简陋的 man page,faint。而且因为太老,95年的,中国没有出版社引进,还好有人做好事。中国啥都缺,就是不缺盗版。

本来以为看原版书很痛苦,速度也慢。但在看文档时发现,工作压力逼着速度就快很多,该跳就跳,该扫就扫。阅读计划一大堆,Thinking in C++, More Effective C++ 电子版都在看,才读了十分之一,不知道何时能完成。反正这些书以后总会用到,就算看不完也当作工具书吧。

这个星期学到不少东西,还第一次用 mailing list 和别人交流,挺有意思的,也算是我开始为 GNU 的开源事业做贡献啦。估计下个星期就要开始实质的开发工作了,导师让我试着完成一个 command completion 的东东,就是用 tab 键补全命令,我们的 simulator 现在还不支持这个功能。开始 C&C++ 之旅了...........

发现最近日志数量明显增多,按我的规律这意味着最近日子过的很无聊,心情很郁闷。啥会儿我能戒掉写日志啊?

唉,该写完了发现用 vim 习惯到在 UltraEdit 里保存文件都开始令人发指的用 Esc :w 了,难道我要成为一个彻头彻尾的 Linuxer?

Copyright © 2005-2006 Solrex Yang. All rights reserved.

First Mails to GNU project(DejaGnu) Maillist

A suggestion on DejaGnu testing framework. Today’s Topics:

1. Why not add tests order control to Dejagnu, I find a way.
(wenbo.yang@simplnano.com)
2. Re: Why not add tests order control to Dejagnu, I find a way.
(Stefan Reinauer)
3. Re: Why not add tests order control to Dejagnu, I find a way.
(wenbo.yang@simplnano.com)

----------------------------------------------------------------------

Message: 1
Date: Thu, 14 Dec 2006 12:28:18 +0800
From: <wenbo.yang@simplnano.com>
Subject: Why not add tests order control to Dejagnu, I find a way.
To: <dejagnu@gnu.org>
Cc: bje@gnu.org, rob@welcomehome.org
Message-ID: <002201c71f38$4ade22d0$7e01a8c0@parttime01pc>
Content-Type: text/plain; charset="gb2312"

My work needs to test some cases before others, but I found Dejagnu didn’t support it. It tests cases according to their directory order only. So I modified runtest.exp to achieve my tests order control. My code is not very mature, but it is a way. So I think this feature is valueable to some people of special requests, why not add it to Dejagnu framework?

Explanation of my method:

If there exists file "priority.seq" in test source directory, test cases specified in that file will be done first and orderly. After done them, others should be done. Here is an example content of "priority.seq":

third/third.exp
./second/second.exp
./first/first.exp

Bellow are changes in "runtest.exp", my version is 1.4.99:

diff runtest.exp original_src/runtest.exp

1791,1834d1790
<
< # If exist priority.seq, read it to priorities list orderly.
< if { [file exists $srcdir/priority.seq] } {
< set sequence_file [open $srcdir/priority.seq RDONLY]
< foreach line [split [read $sequence_file]
] {
< if { [file exists $srcdir/$line ] } {
< lappend priorities $line
< } else {
< warning "$srcdir/$line does not exist. Please check $srcdir/priority.seq for error entries."
< }
< }
< close $sequence_file
< }
<
< # Run these *.exp files in priorities list first.
< if { $priorities != "" } {
< foreach test_name $priorities {
< if { ${ignoretests} != "" } {
< if { 0 <= [lsearch ${ignoretests} [file tail ${test_name}]]} {
< continue
< }
< }
<
< # set subdir to the tail of the dirname after $srcdir,
< # for the driver files that want it. XXX this is silly.
< # drivers should get a single var, not "$srcdir/$subdir"
< set subdir [file dirname $test_name]
< set p [expr {[string length $srcdir] - 1}]
< while {0 < $p && [string index $srcdir $p] == "/"} {
< incr p -1
< }
< if {[string range $subdir 0 $p] == $srcdir} {
< set subdir [string range $subdir [expr {$p + 1}] end]
< regsub "^/" $subdir "" subdir
< }
<
< # XXX not the right thing to do.
< set runtests [list [file tail $test_name] ""]
<
< runtest $test_name
< lappend ignoretests [file tail $test_name]
< }
< }
<

Wenbo Yang
2006-12-14
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.gnu.org/pipermail/dejagnu/attachments/20061214/420181aa/attachment.html

------------------------------

Message: 2
Date: Thu, 14 Dec 2006 10:36:07 +0100
From: Stefan Reinauer <stepan@coresystems.de>
Subject: Re: Why not add tests order control to Dejagnu, I find a way.
To: wenbo.yang@simplnano.com
Cc: dejagnu@gnu.org, bje@gnu.org, rob@welcomehome.org
Message-ID: <20061214093607.GA21407@coresystems.de>
Content-Type: text/plain; charset=utf-8

* wenbo.yang@simplnano.com <wenbo.yang@simplnano.com> [061214 05:28]:
> My work needs to test some cases before others, but I found Dejagnu didn’t
> support it. It tests cases according to their directory order only. So
> I modified runtest.exp to achieve my tests order control. My code is not very
> mature, but it is a way. So I think this feature is valueable to some people of
>

This sounds interesting! To work around this "shortcoming" I was writing
all tests that require sequential execution into a single file. Another
method might be to call files and directories 01_*, 02_* ...

--
coresystems GmbH â?¢ Brahmsstr. 16 â?¢ D-79104 Freiburg i. Br.
Tel.: +49 761 7668825 â?¢ Fax: +49 761 7664613
Email: info@coresystems.de â?¢ http://www.coresystems.de/

------------------------------

Message: 3
Date: Thu, 14 Dec 2006 18:31:15 +0800
From: <wenbo.yang@simplnano.com>
Subject: Re: Why not add tests order control to Dejagnu, I find a way.
To: "Stefan Reinauer" <stepan@coresystems.de>
Cc: dejagnu@gnu.org, bje@gnu.org, rob@welcomehome.org
Message-ID: <005201c71f6b$0c5aafa0$7e01a8c0@parttime01pc>
Content-Type: text/plain; charset="utf-8"

But even if you call files and directories by sequential numbers, you can not test it crossingly( I do not know if this word is proper.)
I mean, take a case for example. You have a directory tree like that:

01_xx/01_yy/01.exp
01_xx/02_zz/02.exp
02_aa/01_bb/03.exp
02_aa/02_cc/04.exp

You now have a sequence: 01.exp,02.exp,03.exp,04.exp. But mybe at one point you have follow another order 03.exp,01.exp,04.exp,02.exp. You must change the whole directory tree, at most times, it is not really you want.

So if you have a file specified the priority with no dependence on directory, you can do what you wish just by changing some entries. It is why I said this feature is valueable for some people like you and me. A lot of no sense working should be avoided.

Wenbo Yang

SimpLight Nanoelectronics, LTD.
Email: wenbo.yang@simplnano.com
------------------------------

_______________________________________________
DejaGnu mailing list
DejaGnu@gnu.org
http://lists.gnu.org/mailman/listinfo/dejagnu

End of DejaGnu Digest, Vol 43, Issue 2
**************************************

Copyright © 2005-2006 Solrex Yang. Under GFDL.

慎用const_cast

最近心情很 low,从愤青态度和在百合上和别人讨论问题的情绪化就可以看出来。再加上因为某些原因休息不好,居然在导师给我讲 simulator architecture 的时候感到一阵头晕目眩,差点晕倒,只好请求他坐下给我讲。又该调整自己了。

CPP版上老在讨论错误的程序奇怪输出,而且在公司也做编译器的测试,我也找一些例子小研究一下,这个例子是错误的去掉const属性带来的后果。

Program:
#include <iostream>

using namespace std;

int main()
{
const int a = 1;
int *p = const_cast<int*>(&a);
*p = 2;
cout << "value a=" << a << endl;
cout << "value *p=" << *p << endl;
cout << "address a=" << &a << endl;
cout << "address p=" << p << endl;
return 0;
}

这个程序,从语法上看,没有任何问题(当然,这种用法不提倡 deprecated )。但是输出结果却是这样的:

value a=1
value *p=2
address a=0xbfe9efb4
address p=0xbfe9efb4(depends on machine)

奇怪了,a和p既然指向同一块地址,为什么输出的内容却不一样呢?

在调试的时候发现,在运行完*p=2时,调试器打出的a的地址和p是一样的,而且a和*p的内容都是2。但为什么输出时候会a=1呢?

还是看汇编代码吧,相关部分:
subl $8, %esp
pushl $_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_
subl $12, %esp
//将直接数1压栈
pushl $1
//栈顶指针减12
subl $12, %esp
pushl $.LC0
pushl $_ZSt4cout
.LCFI7:
//这句是"value a="这个字符串的输出函数,char
call _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc
//栈顶指针增加20
addl $20, %esp
pushl %eax
//这句是a的值输出,int
call _ZNSolsEi
addl $20, %esp
pushl %eax
.LCFI8:
//这句是输出的endl
call _ZNSolsEPFRSoS_E
addl $16, %esp

看完之后,有人会问了:怎么没看到a在哪里输出的啊,那么请你注意上面“栈顶指针增加20”这个注释,增加20之后它到哪里了?注意上面就会发现,前面有两次压栈,指针减4*2=8,一次指针减12,然后再加上20,这时候栈顶指针就到了“将直接数1压栈”下面了,显然进入输出函数后,它会从栈中找输出某个值,这里显然是数字1。

这就是为什么会输出a=1了,因为编译器根本没去找a的值,因为a是const int型,编译器认为它的内容不会变,所以干吗非得去内存中找啊,多麻烦,直接把值放到code里输出不就行了!

从某种意义上来说,const 相当于宏定义,但是程序为变量分配了存储空间,这样就可以进行类型检查。所以说很多 C++ 书籍作者提倡用 const 来代替 define,而且反对对 const 做 cast。就算要做 cast,也请尽量使用 C++ 的 cast 而不是 C 的类型转换。

恶劣的编程风格会带来不可预测的后果。类型转换之类的C留下来的习惯在编写高效率的程序时候是很有用的,但一定要确保知道采用这种方式会产生什么结果再去使用。对于那些 undefined 和 deprecated 的东西可以去利用,但是脑子中一定要有 idea。
Copyright © 2005-2006 Solrex Yang. All rights reserved.

strcpy 的 overlap 之迷

在进入正文之前先说几句题外话:最近有个新闻很火,是21岁才女被聘为跨国公司副总裁的事情。且不说新闻内容的真实程度有多少,其实我看到新闻时候就对里面的东西产生怀疑了,但是有几点是无法否认的:人家确实被聘为副总裁了,这点在Topcoder的网站上可以得到证实,至于这个副总裁手下有几个人,和事实没关系;人家确实有过三项发明专利,至于专利内容,和事实也没关系;人家确实是ACM主席成员,至于这个ACM和ACM/ICPC的缩略语的区别,和事实也没有关系;还有人家获得过29届ACM 国际大学生程序设计竞赛亚洲总决赛银牌,至于这个奖牌含金量有多高,和事实也没关系。

这几点已经让我崇拜有加了,Topcoder不是什么太牛的公司,但是起码也不烂;发明专利可能不是很高科技,但是我没有一个;ACM/ICPC主席团没有ACM主席高级,那不是废话吗?谁不知道啊,ACM/ICPC和ACM奖差远了,但是交通大学获奖后不也经常缩写吗?我连校ACM队都进不了,就别歧视人家奖牌了。对于新闻的炒做大家心里都有底,没有必要非得整出来《神话通常是由于低素质产生的》这种无耻文章来做所谓“揭露”,你可以写事实,但不要用这种口吻。还有一些别有用心的人拿所谓高考中考成绩说事,有意思吗?人家不容易。

读心理学专业能把计算机学那么好,还兼职干过那么多事情,能力啊,相比而言真让我受打击!更打击我的是今天在小百合上看到有认识的人说吴莹莹的男朋友是Stanford的王颖(2006 google 全球编程挑战赛亚军)............我只能 keep 无语了。

好了,下面进入正题,今天在小百合上和别人争了一番,争论是争论,总得留下点东西不,不然白费口舌了。

Program 1:
#include <stdlib.h>
int main(void)
{
char a[] = "abcd";
char b[] = "efg";
strcpy(b, "efghi");
printf("a=%s
", a);
printf("b=%s
", b);
return 0;
}
gcc build and run:
a=i
b=efghi

Program 2:
#include <stdlib.h>
int main(void)
{
char a[] = "abcd";
char b[] = "efgh";
strcpy(b, "efghij");
printf("a=%s
", a);
printf("b=%s
", b);
return 0;
}
gcc build and run:
a=abcd
b=efghij

ANSI C/ISO-IEC-9899-1999 在 7.21.2.3 The strcpy function 章节中指出

7.21.2.3 The strcpy function
Synopsis
1 #include <string.h>
char *strcpy(char * restrict s1,
const char * restrict s2);
Description
2 The strcpy function copies the string pointed to by s2 (including the terminating null
character) into the array pointed to by s1. If copying takes place between objects that
overlap, the behavior is undefined.
Returns
3 The strcpy function returns the value of s1.

所以上面的两个程序都有错误,但是我们这里只分析为什么会导致奇怪的输出。

第一个例子,运行时内存的内容是这样的(请注意方括号中的内存单元内容,冒号前是内存地址):
a,b赋完值:
0xbffd7778: 0xbffd7798 [0x00676665] [0x64636261] 0x006dff00

执行完strcpy:
0xbffd7778: 0xbffd7798 [0x68676665] [0x64630069] 0x006dff00

第二个例子:
a,b赋完值:
0xbfef6ca8: 0xbfef6cb8 0x080482b5 [0x68676665] 0x00000000
0xbfef6cb8: 0xbfef6cd8 0x0804843a [0x64636261] 0x006dff00

执行完stycpy:
0xbfef6ca8: 0xbfef6cb8 0x080482b5 [0x68676665 0x00006a69]
0xbfef6cb8: 0xbfef6cd8 0x0804843a [0x64636261] 0x006dff00

奇怪输出的原因找到了,是因为第一个程序把a,b放到连续的空间里导致了覆盖。那么为什么第二个程序中a,b不放到连续空间中呢?

再看看汇编代码,只关注相关部分:

第一个例子:
.LC1:
.string "efg"
...
movl .LC1, %eax
movl %eax, -28(%ebp)
...

第二个例子:
.LC1:
.string "efgh"
...
movl .LC1, %eax
movl %eax, -40(%ebp)
movb .LC1+4, %al
movb %al, -36(%ebp)
...
哦,这时候我们可以看到,由于efg只有三个byte,没有超过计算机的字长,所以eax容纳了它结尾的�,而且可以把b放到一个内存单元(word)中去,所以编译器就把a,b挨着放了。

而efgh有四个byte,一个内存单元(word)不能容纳全部字符串(放不下结尾的�),所以编译器就多为它预留了一段空间,既然留了,就留大点,就是4个word了。程序输出就变成正确的了。

所以就可以看到为什么没有放到连续空间中了。至于这个预留空间的策略,就不得而知了,那得看编译器的逻辑了。
Copyright © 2005-2006 Solrex Yang. All rights reserved.

这天儿是越来越冷了

Google Desktop 说今儿温度是-3~3℃,在办公室感觉都不一样,脱了外套开始有些冷了。不过还是很喜欢北京滴,起码屋里还足够暖和。这天气甭管放在商丘还是放在南京,在房子里也要受不了了。到这个时节还没穿上毛裤,对我来说也是第一次,:),我妈要是看见了准该骂我。

公司的活是真不重,不然我不能经常有空写博客了。我做的是回归测试,基本上任务就是把别人写好的测试用例运行一下,然后 report。量是比较大,但反正都是脚本,也很 easy 。shell, tcl, expect 和 makefile 脚本编写渐入佳境。小脚本做大事情,真是体现了命令行功能的强大,在这点上 Windows 的 shell 和 *nix 的 shell 是没法比的。当然,我不是说 Windows shell 的不强大,只是相比而言。基本上我花在每个脚本上的时间不超过三四个小时,一天撑死两个,相当闲。呵呵,看来当初学 Linux 的工夫没白费。也真是,花了四年时间学的一钱不值,到头来挣工资用的却是四个月就能学到的东西。

公司里的人年龄都比较大,大部分比我大七八岁以上,二十五六的就没几个,只有我一个实习生。那天吃饭时我的“导师”还问我是不是少年班的,所以他们似乎觉得我还嫩,干不了什么活,也不给我分任务。而且也确实,做芯片底层开发不是那么容易的事,编译器、模拟器、信号处理什么乱七八糟的东西都要写。就是把测试脚本编写这块扔给我,但也没有全给。嘿嘿,我倒乐得清闲,没事时候就做做自己的事情,看看技术文章之类的,也挺滋润。比我暑假实习那家环境好多了,连个隔间都没有,还加班。这里只要完成你的任务,你想干吗干吗没人管你。

在北京也呆了十几天了,有几个让我对伟大祖国首都北京感到很不爽的地方:

1.进银行先“挂号”。

呵呵,请允许我老土一下,不过真是第一次见到。我拿到那号一看:您前面有41位顾客,请耐心等候。心刷的就凉了,这41个人我得等到猴年马月啊?当时就想走,后来想既然来了,怎么地也得见识一下不!坐下以后才发现,哦,这41的意思是不管什么业务,总共41个人在等。再看看有5个窗口呢,运用小学学的数学(大学老师教的至今没怎么用到过)计算一下,恩,不错不错,在平均状况下每个五分钟我也不用等到一个小时。安心许多,心里就开始感叹起来:首都就是好啊,排队都能坐着!

2.红绿灯摸不准

请再允许我老土一下,我还真没见过一条路上相反的两个方向,一个亮红灯,一个亮绿灯;我还搞不懂为什么同一个灯杆上,自行车亮绿灯而行人亮红灯;我还弄不明白的是为什么明明你面前横着的这条路上都是红灯而你对面的行人灯还是红滴。在南京,我在概率的意义上还算一个遵守交通规则的人,但是到北京我发现就算我很想遵守交通规则但是红绿灯搞的我忍无可忍,行人绿灯亮的时间仅足以你用最快的步速跨到对面,而且明显同一个方向上的机动车享受的绿灯时间比行人长得多。对此我很无语,我只能在珍爱我自己生命的前提下选择什么时候闯红灯。

3.公交系统极不人性化

为什么公交车的侧身不写多少路和经过的站点啊?白天还好点,凌晨和傍晚时候像我这种近视根本看不见车头的多少路,嗖一下就停我跟前了,我非得跑到车头看看是多少路再决定上不上车。为什么报站不报下站到哪儿啊?自动报站的公交,包括公交车和轨道交通,就没有报过下一站是哪里,相比而言有售票员报站的还好些。为什么地铁站没有售票机呀?上班高峰期得排老长的队。为什么地铁没有自动扶梯啊?上下太不方便了,尤其是带着东西时。

4.人行道上贴广告

在南京我从来没注意过人行道是什么样的,但在北京只要你稍微低低头,就会发现那种类似于名片大小的办假证之类的广告贴满了人行道和天桥,至少在我上班那条路上是这样。这里想给那些什么分众、聚众、分时传媒提个醒,千万别忽略了这N平方米的广告牌,N的数量级应该在千万以上。市政也可以小赚一笔呀!

不爽的地方还有,比如暂住证,我到现在还没办,不过打算办一个,主要是好奇。我将坚持一个月不办表明反对暂住证的立场,然后办一个满足我自己的好奇心 :)。这一个月不是确指,因为我实在不知道什么时候愿意把时间花在这上面。

现在有个小计划想研究一下怎么写 Google Desktop 的 Gadget,想做一个但又没好的想法,回去再想想吧。

以后要按时下班,按时吃饭,不在办公室熬夜了。反正都是玩,回去虽然连书都很少,无聊些,但对身体好一点,这两天在看《可怕的对称——现代物理学中美的探索》,要锻炼自己思维的能力,我们要勇于去探索自己未知的领域 :) 。周末打算去国家图书馆办张卡。
Copyright © 2005-2006 Solrex Yang. All rights reserved.

798工厂感觉

周日无事,心情烦躁,就起了找个地儿转转的想法。北京的所谓著名景点,也懒得过去,反正以后有同学找我总会有机会转悠的,就像在南京一样,待到当导游时候再过去罢。以前总在报纸杂志上看到说798是北京的艺术社区,又是不用花钱的地方,就过去看了看。

车过去是挺方便的(这个“方便”仅针对北京的交通而言),基本上策略都是先坐到三元桥再转某趟车,朝阳区的可能有直达车。站名和街道都很有特色,街道叫酒仙桥路,两个站叫大山子和王爷坟。

从酒仙桥二号门进去,门口附近只有寥寥几家画廊,越往里走越多些。门口对的那条路叫做797路吧好象,798艺术区主要的模块在797路南面一侧,像一个粗箭头一样往东南方向发展的,797路以北的地方都是尾巴了。

其实像我这本就没有艺术欣赏能力的人,不敢说去妄评那些前卫艺术家们的作品了,只是一个感觉,这玩意儿我不懂,而且,也不喜欢。

园区内的指示牌标示比较乱,而且不易读,尤其是厕所的指向标识太少。进到每个画廊里都是一样,地方收拾的挺干净,但挂的东西画的是乱七八糟。房间都有股酸了吧唧的化学物质味道,估计肯定没用环保材料。

给我印象最深的就是两种画,一种画的色(Shaier)就像是把画布从泥水里捞出来一样,名字叫做《黄土地》,还一系列,我瞅了半天楞没看出来这几张画什么区别;还有一种就是把画弄的云里雾里的然后再描出来半拉人影,也是一系列,叫什么《梦境》还是《梦幻》好象,这家伙真是,看起来费劲那,瞄了半天才发现那不全是云彩。

最牛的是一个叫唐人艺术的,人家把一只带毛的鹰(不知道是死的还是刻出来的)放到一个烟囱顶上,让你用天文望远镜看,有意思吧。在某个画廊还有一个妓女拍的系列照片,照片不咋地,那说明看着挺有意思的。旁边李宁在开什么创意设计大赛的颁奖典礼,我一看美女不少,进去瞅瞅吧,人家楞说没有请柬是不能进的,站旁边签到处看了会儿,唉,真羡慕那些进进出出搭架子的民工啊!

反正转了一圈儿觉得没什么东西是想要的,只看中了一个雕塑,一个男人背着个龟壳坐在地上,好有意境啊!

不知道是不是因为周末的缘故,园区里人很少,画廊里基本都是只有一两拨人,转来转去碰到的都是那几拨,学生多一些。真正感兴趣的可能还是那些老外,中国话说的也挺地道,人家估计是真去挑画的。现在投资中国现代艺术可是和投资房地产差不多,那价码嗖嗖的往上涨。

总之,没甚意思,走的挺累,算是到此一游了,下次要是没啥特殊目的,肯定不会再去。
Copyright © 2005-2006 Solrex Yang. All rights reserved.