2008年10月26日星期日

虬江路淘宝

自从我的磐正8RDA3G主板抽风之后,我的老电脑一直处于待业状态。我一直没有考虑好给它一个什么名份。上次为同事拍了结婚照之后,我觉得该有一台专门处理照片的机器了,我原先的配置基本不用动,只要换块主板,加个特丽珑的显示器就行了。我的CPU是Athlon XP1800+,搭配的主板可以用KT400,KT600和NF2芯片组。但我不想在上面投资太多,因此从一开始就打定主意要买二手的,花最小的代价,获得最大的利益。

原先想在pchome和pconline,taobao上面买的,但是每次都被人抢走了。于是只能瞄准上海滩最大的二手市场--虬江路。

买二手最重要是心态,就跟炒股一样。同时要做功课,认准自己要买的东西,任凭JS怎么忽悠你,都不能跟着他们走。

我在虬江路花了大概2个小时不到的时间,逛完了几乎所有的店,终于买到了一块成色非常新的工包微星K7N2主板,价格95块。可以说是非常超值。据老板说,这块板是全新的,工包批量出货拿的,我特意看了电容,散热片,PCI和AGP插槽,的确是没有用过。简直太超值了。


事实上整个虬江路NF2的主板也寥寥无几,我所有的店都兜了一下,加起来也不会超过30片。而且很多都是硕泰克,映泰之类的垃圾板子。我的原则是,二手的主板绝对不能买二流厂家的主板,要买只能买一线大厂的。为什么,因为那些二线厂家的主板寿命也就是2,3年。我的磐正主板就是活生生的例子。因此场子里面还有人推荐我磐正的,我说什么都不要。场子里面还有一块非常棒的ASUS的A7NX,可惜要150,从性价比来说不及我这块。

我这块板子是在赛格快关门前5分钟才掏到的,说来也算运气了。我之前几乎绝望了,因为场子里面基本都是754的板子了,462的板子在二手市场基本上也淘汰了。而我要的还是一线大场的NF2芯片的462主板,更是难上加难。不过我来买二手就是想买以前一手买不起的好东西的,比如可以算AGP的王者的1950PRO蓝宝石,当年2000多块的显卡,现在就布满灰尘躺在橱柜里面,罗技的蓝牙耳机之类的,这些东西看得我心痒啊。不过正事要紧,下次再来。

总的来说,在虬江路淘宝是很有意思的事情,我今年来已经很少关注硬件了,这次过去兜了一下,感觉自己还蛮喜欢这种事情的。与JS斗,其乐无穷啊。同时还能看到很多平时不知道的东西。比如我一直想买个激光打印机,全新的起码2K,而这里一个HP2015D才600;还有一套DIY的工具,包括网络工具,电工工具,都是进口的,质地看上去就不一样,开价80,感觉还行。另外就是我关注的特丽珑和钻石珑,居然让我看到一个EIZO的原膜T962,要知道这是EIZO旗舰机型,特丽珑超强色彩还原,比SONY的G520还高出一筹的极品啊。本来跟老板讲好了,可惜买好主板已经天黑,只能作罢。

2008年10月22日星期三

游戏不是这么玩的

我一向对时事很迟钝,特别是对于有微软,盗版,反黑等关键词的新闻,我从来都是略过的。但是现在我的同事已经开始用“今天你黑屏了没有?”来打招呼了,我再后知后觉也感觉到了一些不同。吗啡写了篇《整个民族心理有毛病》,仍旧秉承他一向的风格,语言尖锐,但是仔细想来的确是有道理。吗啡用的是一个IT行业从业者,受过高等教育,站在时代前端的身份来看待这件事的。而我,接触了很多不懂电脑的人,我想试着站在他们的立场上看看这件事的因果。

我在想,这件事是否是微软自食其果呢?或者是中国人自食其果呢?
在微软刚进入中国市场的时候,为了迅速扩大市场份额,他们默认了盗版的存在。反正你要用我的就成,只要不去用别人的,随你盗版还是正版。他打得好算盘,慢慢地用office 挤掉了WPS,IE挤掉了netscape,他或许想着,等到他一家独大的时候,还不是想怎么样就怎么样。他制定了这个游戏的规则。人们顺着他的规则玩了这么多年,突然,他改变规则了,那些玩游戏的还不跳起来!

当人们买电脑的时候,店里面的伙计帮他们装好了Windows,进去能看到五颜六色的界面。然后他们付钱走人。在他们付钱的时候,他们下意识的认为,这一堆铁疙瘩和里面五颜六色的界面都已经包括在他付的那点钱里面了。或许,很多人还不知道什么叫正版,什么叫盗版,版权对他们来说还是一个陌生而抽象的词语。只知道,要装软件,就去买盘。对他们来说,去街边买盘就和去菜场买菜一样。This is the way. 甚至很多人,连软件这个术语都不知道,他们可以叫出Word,IE,QQ,但是不知道这些就是软件,但这并不妨碍他们用电脑。其实美国人也这样,但是他们一开始就规定了一个正常秩序的游戏环境。

这就是这么多年来孕育出来的一种环境。这种环境的形成,政府和微软一样的领军软件企业难辞其咎。试想如果一开始,软件就是放在商店的橱窗里面出售,买电脑的时候装机店会明确告诉你价格不包含软件价格。久而久之,人们自然会习惯这样的模式。这种模式下,民众还是不用了解什么是盗版,什么是正版。有时候,你只要告诉别人,什么是对的,不用说什么是错的。这就是秩序,政府和大型软件企业在这时候就是强有力的秩序维护者。

别跟我说Windows太贵,买不起,三、四百的东西有时候还不及你一次拍拖花的钱呢。实在没钱,可以,用免费的操作系统,Linux, FreeBSD等。或许有人会说Linux,FreeBSD难用。我想说的是,这是因为在这样一个畸形的市场下面没法得到发展造成的。更何况,现在的Linux在可用性上面跟Windows相差也不多了。

或许,在这样一个环境中,不同的操作系统都能够发展起来,Windows, Linux大家各取所需,造成双赢的局面。为了构造一个独裁,垄断的环境,微软通过这种默认盗版的方式来打压其他对手,结果搬起石头砸自己的脚。政府默认这种畸形的市场不断扩大,最后不知道扼杀了多少创新成果。

有人说,就是因为盗版,中国的软件行业才能发展的这么快,我不敢苟同。我觉得正是因为盗版,中国的软件行业才发展的这么低层次,永远用别人的东西,为别人打工,我们促进了微软的发展,却限制了自己的发展。如同温水中的青蛙一样。

没必要指责那些骂微软的人,我们要骂就骂那些制定这个游戏规则的人吧。或者,像我一样,尽量离这个游戏远些。

PS: 吗啡骂那些不要脸的JS,我120%赞同。因为刚才看到有名人博客上写着“有理由相信,中国用户是全世界最热爱微软的用户”, 这句话就和“中国没有妓女”,“陈良宇没有贪污”一样可笑。

2008年10月16日星期四

Placement New的用法

在《C++中控制对象的创建》一文中,我曾经提到Placement New的一些用法。最近一段时间很碰巧用到了这个技术,因此有了更深刻的一些理解。

Placement New的原型很简单:


inline void* operator new (size_t t, void* p) {
return p;
}


可以看出,它仅仅就是返回传给他的那个指针地址,大小t不使用。
因此,我们一般先申请一块内存,然后用placement new在初始化一个对象。这里的初始化的意思就是先把那块内存映射成对象地址空间,然后再起始地址调用对象的构造函数。例如:


class Window
{
int width_, height_;
public:
....
Window(){}; // default ctor
Window(int w, int h){...}; // ctor with predefined height and width
}

void* p = (Window*)malloc(sizeof(Window));
Window* pWin = new(p) Window();
.... //use pWin
pWin->~Window();
free(p);

在上面的代码中,最后第二行很重要。一般来说,析构函数是当自动变量离开作用域时自动调用或者使用delete时调用。但是使用placement new时,不能在该对象上面使用delete操作,因此析构函数不会被自动调用。我们必须使用一种比较少见的方式——手动调用析构函数来释放在构造函数中获取的资源。

Placement new还常常用于对象数组的创建上。一般使用new[](读作array new)来创建对象数组的时候有一个缺点,就是只能调用其默认构造函数。这有时候非常不方便。

Window* pArrayWin = new Window[20]; //default ctor is called

但是使用placement new就可以让我们获得调用其他构造函数的能力。代码如下:

Window* pArrayWin = (Window*)(operator new(sizeof(Window)*20)); //
i = -1;
while( i <20){
Window* pTemp = new(&pArrayWin[i++])Window(i*i,i*i*i);
}


这里就可以使用Window类的另外一个构造函数了。在每一个Window类构造的时候就可以给其设置长和宽。
这里的Window类只有两个整型成员,这种情况下,可以不用调用其析构函数,直接delete分配的内存。因此用placement new来处理这种小型连续数据在某种程度上可以提高效率。

2008年10月11日星期六

The Big Bang Theory不太敬业

最近一直在看《The big bang theory》,因为风趣幽默,所以我反反复复的看了快第三遍了。但是今天看到一个场景,让我感觉有点失望,看看图中的包包。有没有看出来什么问题?

是的,太假了。连商标都在,宝宝里面这种鼓起来的样子一看就知道是放在商店里面展示用的,因此里面塞满了泡漠塑料,废报纸等。我估计是剧组资金不够,所以问旁边的商场借的吧,等演出结束就立刻送回去。看来美国经济大萧条已经影响很深了,连这样一个平常的包剧组都买不起了。但是我要说,这还是不太敬业,买不起就不要背包,拿演员自己的包也可以么,反正是生活喜剧。真不知道他们怎么想的。。。

2008年10月8日星期三

My VS2005 Color Scheme

我今天花了点时间改了改VS2005的配色和字体方案,把原来整体白色的效果改成了现在的灰暗的效果。主要原因是保护眼睛。白色虽然明快,对比度高,但是会反射所有的光线,而黑色则相反,可以保护程序员的视力,至少不会看着很吃力。不相信可以自己试一下,把液晶显示器的亮度调高,盯着看一段时间,然后再调暗,眼睛是不是轻松很多。

然后字体从原来的Courier New改成了现在Monaco,这个字体非常好看。也是网上很多人推荐的编程用字体。效果图如下:


我个人不太喜欢花里胡哨的配色,所以颜色看起来不是很鲜艳。这样的好处就是让眼睛少受刺激。颜色太多,眼睛受到的刺激也会增加,长时间盯着看反而会吃力。

我的配色方案如下:
Font: Monaco (size 10)
Background : RGB(25, 25, 25) Not completely black

Plain Text : White
Line Number: RGB(43, 145,175 )
Comment : RGB(135,206,235 ) bold
Identifier: RGB(207, 207, 207 ) bold
Keyword: RGB( 68, 68, 255 ) bold
Number: RGB( 0, 128, 128 ) bold
Preprocessor Keyword: RGB ( 175, 96, 255)
String: RGB(252, 71, 39) bold



在《Monospace/Fixed Width Programmer's Fonts》一文中,作者列出了他认为写程序用的字体,应该具备哪些条件:

  • Crisp clear characters.
  • Extended characterset.
  • Good use of whitespace.
  • 'l', '1' and 'i' are easily distinguished
  • '0', 'o' and 'O' are easily distinguished
  • forward quotes from back quotes are easily distinguished -prefer mirrored appearance
  • Clear punctuation characters, especially braces, parenthesis and brackets

简单的说,首先要清晰,然后才是美观。总的来说,我觉得还是有道理的。我以前一直使用Courier New就是因为这个字体很清晰,在VS2005中如果更改字体,那些加粗的都是等宽字体,也是写代码首选的字体。网上讨论的比较多的是三款字体,分别是Bitstream,Monaco,Consolas,分别是Linux,Mac,Windows三个平台上的代表字体。我选择了Monaco,这块字体乍看之下不怎么样,但是仔细看看还是很有味道的。有兴趣的朋友可以试试。

另外,这几个配色方案也是我比较推荐的:
Dark Visual Studio
Scott Hanselman's color scheme
Slimcode
Jeff Atwood

相关文章:
Programmer 最佳用字型 Monaco font
Best font for programming is...?

2008年10月5日星期日

《星球大战》中的Jedi职业级别

参考了很多RPG的规则,比如D&D,星球大战中也有职业的升级。当然这些在Wiki中都有,我当时是在看了片子之后慢慢推测出来的,后来看了Wiki之后才有了一个完整的了解。(Wiki中的条目为Jedi Rank)。这里仅限于Jedi,Sith过于神秘,影片中提到的也较少,我还没有看出明显的区别,可能游戏中有提及吧。

Youngling
拥有Force潜力的孩子,在被任何一个Jedi knight收为徒弟之前,在Jedi temple接受统一的训练(学龄前训练)。在EP2中有一段就是Yoda在训练一群孩子,Obi-Wan过去请教那颗消失的行星。在Revenge of the Sith中,Anakin残忍的杀害了所有的Youngling,另Obi悲痛不已。

Padawan
Jedi Knight或者Master的学徒,Jedi们喜欢用Padawan称呼自己的学徒,Sith则用Apprentise。在这方面,Jedi的叫法显得更加亲切。Padawan称呼自己的老师为Master。Jedi采用的是一对一的授业方式,只有Padawan通过试炼,成为了Jedi Knight之后Master才能再次申请一个Padawan。

Jedi的训练和武术、内功等一样,最好从小学起。相信大家还记得在《魅影危机》中Qui-Gon Jinn提出训练Anakin的时候,Obi-Wan说:“The boy will not pass the council's test, Master. He's too old”。那时Anakin才9岁,这说明一般的Jedi开始他们的训练要早得多。最后Qui-Gon Jinn临死前要Obi-Wan答应训练Anakin。于是在Obi-Wan的强硬要求下,Master Yoda才同意让Anakin成为Obi-Wan的学徒。

有一个细节很重要,Padawan会在脑后留一簇头发下来,就像一根小辫子。当被正式授予Jedi Knight称号之后,这个小辫子会被剪下,标志着自己的成长(当然,限于有头发的物种)。
看看下面两张图的对比,Obi-Wan在EP1:The Phantom Menance中的学徒打扮和EP2,EP3中的Master打扮。注意到第一张图中的小辫子没?


我第一次看时就有疑惑,为什么会有这个小辫子,难道是流行?那时候上海的确流行给小孩子留个小辫子,因为看起来好看。但是之后我看了The Clone War Animation之后,我才知道,这个小辫子是Padawan的标志。

用Star War Clone War中Anakin成为Jedi Knight的场景来说明一下。

经过一番激烈争论,Jedi Council终于同意Anakin Skywalker成为Jedi Knight。Kenobi对Anakin说,It's time we became BROTHERS.


进入Council,出现了激动人心的一幕。是不是特别像某些游戏中的转职的场景啊。


Yoda: Step forward, Padawan.
Anakin Skywalker,
By the right of council.
By the will of the Force.
Dub thee I do, Jedi ... Knight of the Public.

天行者阿纳金,
以议会之权,
以原力之志,
授予汝--共和国绝地武士称号!


小辫子被剪掉,Padawan正式升级成Jedi Knight。

Jedi Knight
Padawan通过一些考验,就能正式宣誓成为Jedi Knight。考验多种多样,有的是关于智力的,有的是关于技术的,有的则是心智上的。心智上的最难,一般称为“Facing the mirror”。例如Master Yoda让Luke Skywalker去面对他的父亲Darth Vader。第一次Luke失败了,第二次成功之后,Luke成为了真正的Jedi Knight。另外像Obi-Wan在EP1中击败了杀死他老师的Darth Maul而成为了Jedi Knight。总之这是一个最普遍的级别。在对外的时候,Padawan也可以自称Jedi,为了避免在称呼上的麻烦。

Jedi Master

当一个Jedi Knight成功训练了一个Padawan成为Knight,他就可以成为Master。但是如果Jedi Council觉得一个Jedi Knight已经积累了足够的经验,知识和力量,也可以提出一个考验,一旦通过此考验,就可以成为Master。

Jedi Council Member
实际上我认为这不是一个级别,而是一个职位。加入Jedi议会当然会有更多的权利,但相伴的也是更多的义务。当Council中一旦有位置空出,Council就会着手挑选合适的人进入,来填补空缺。

Jedi Grand Master
更正式的叫法是“Grand Master of the Jedi Force”。在影片中并没有提及。只出现在小说和游戏中。
只有最智慧的Master才能被推举为Grand Master。在新的Jedi Order时,Luke Skywalker也被推举为Grand Master,因为他是旧议会时代最后两个Jedi,Obi-Wan和Yoda的学生,同时创建了新的Jedi Order,以及新的议会。在整个历史上,也只有三个Jedi获此殊荣Nomi Sunrider,Yoda 和Luke Skywalker。

《The Big Bang Theory》

自从《远古入侵》结束(夭折)之后,我一直在找有意思的美剧/英剧。《老爸老妈的浪漫史》只能做开胃的小菜,但是正餐一直没有着落。

不过今天无意中看到了一个片子《The Big Bang Theory》(生活大爆炸),讲述的是四个高智商的年轻小伙子遇到了一个美女房客的故事。显然,这种故事中的美女基本上是胸大无脑,但是太过愚蠢也不招人喜欢。高智商的小伙子们也不可能情商<0。下了几集看了下,还真是有意思,尤其是美女是我喜欢的邻家女孩的类型,挺温柔的,绝对不是乱来来的那种。想想也只有这种女孩才能打动才子的心。后来看到编剧是Bill Prady我才放心,他是Gilmore Girl的编剧,擅长生活中的小幽默加上一些会心一笑,再加上一些小小的温馨,感觉不咸不淡,口味正合适。

P.S. 我终于看到比Ross更搞笑的书呆子了,而且还是4个!!!

以下摘自verycd
--------------------------------------------------------------
(译自CBS官方新闻发布稿)这是一部以 "科学天才" 为背景的情景喜剧,这倒非常罕见。主人公Leonard (Johnny Galecki, "Roseanne") 和 Sheldon (Jim Parsons "Judging Amy") 是一对好朋友,他们的智商绝对高人一等,因为他们对量子物理学理论可以倒背如流,无论你问他们什么问题,都难不倒他们。但是说到日常生活,这两个不修边幅 的男孩就彻底没了脾气--生活中柴米油盐这些看似简单的事情,却让他们有迷失在太空里一样的感觉,他们所掌握的那些科学原理在这里根本没有用武之地。
直到 有一天……隔壁搬来一位美貌性感的女孩Penny (Kaley Cuoco, "8 Simple Rules..."),顿时吸引了两人的目光。Penny是个剧作家,平时还在饭店打工,她个性开朗,待人友善,最重要的是--她最近刚刚变成单身。
但 令Leonard和Sheldon失望的是,美女对两人都没有意思,反而对花花公子Howard Wolowitz(Simon Helberg, "Studio 60 on the Sunset Strip")产生了好感。Howard绝对是那种可以俘获女人芳心的帅男,他甚至称自己是加州理工学院的"卡萨诺瓦"(1725-1798,意大利冒险 家,以所写的包括他的许多风流韵事的《自传》而著称,后来该词被引申为"风流浪子,好色之徒")。喜欢有事没事围着别人转悠,大谈特谈相对论的 Rajesh Koothrappali (Kunal Nayyar, "NCIS")也引起了Penny的兴趣。

一个美女和四个科学怪才的故事就这样在笑声中悄然开始上演……