wpe7.jpg (11495 bytes)

我的征尘是星辰大海。。。

The dirt and dust from my pilgrimage forms oceans of stars...

-------当记忆的篇章变得零碎,当追忆的图片变得模糊,我们只能求助于数字存储的永恒的回忆

作者:黄教授

二〇〇七


一月二日 阳光灿烂,但是挺冷的

萨达姆在《凤凰资讯》资深评论员的评述下让人们深刻地领会了金正日为什么拼着和中国撕破脸皮都要搞原子弹,难道北朝鲜脑袋进水了?错,金正日是这个地球离头脑非常清醒的政治家,就如当年老毛拼死都要搞原子弹一样,在这个星球上只要被美国看着不顺眼你就没有好日子,或者你够强够大,或者你像伊拉克一样被告掉,没有其他出路。所以,我们应该完全理解小金同志下决心搞原子弹的心情。不搞不行啊!


一月三日 阳光灿烂吗?不知道,但是挺冷的

所谓的科学的世界观与方法论的至关重要性就在于它可以帮助你再不理解具体细节的时候就能够得出正确的结论,这中间的威力使很多人难以想象的,尤其对于那些不具备科学的世界观和方法论的人来说。在新的一年刚刚来临的时候我想做一个大胆的预言:人工智能的诞生地不在别的地方,而是在internet。原因在哪里?人工智能的经典理论在上个世纪的走入困境是当初那些乐观者意识到,所谓的智能绝对不可能依靠一个所谓完美的算法来实现,因为只能是这样一个复杂的体系,甚至于当今的所有关于AI的教科书都无法对其作出一个准确的定义,甚至无法找出一个检验的算法,这种尴尬不亚于那些猜测NP-complete问题的尴尬,一个看似触手可得的科学问题居然经历了全世界无数人的努力还不能找到一个有希望的途径。比如,NP-complete问题时说一个non-polynomial的算法可以用polynomial的算法来检验,那么对于一个看似非常困难的课题,即AI,我们是否有一个简单易行的算法或方法来检验?TuringTest看来似乎是一个这样的算法或者说方法,可是他的检验依靠的是一个人,或者说一个无法定义的方法,这实在是一个尴尬的算法,一个问题的定义居然要用这个问题本身来定义或者检验,这和循环定义有什么本质区别吗?这种科学上的尴尬可以让你对于这个问题的复杂性有所了解。对于如此复杂的问题的出路在哪里?我自从开始学习计算机就保持着这样的看法,只有一个方案不依赖于预设的定义,这个方案才可以称得上智能。所谓,道可道,非常道;名可名,非常名。他的实质就是触及机器学习的问题,怎样才算是机器学习,从直觉来说所有人都明白是程序依靠对周围环境的探索来调整自己的看法,方法,方案等等。那么什么是预设的,什么是可变得,这个问题说得简单似乎编程序的人都明白都可以做得到,比如《battle for wesnoth》这个game的按照创始人的访谈里说得就是“随后修改code越来越少,增加configure越来越多”,以至于这个所谓的战略游戏有很多人创造出了类似rpg的玩法。核心代码大约50k应该也不是很多,他的威力在于一个类似于xml的解释器,随后使用者都可以依靠这个解释器来编设自己的脚本,从理论上说,这是无止境的。

也许核心就在于如何增加一个全新的定义,如果能够解决这个问题,那么这个系统的潜力是无穷的。可是这正是最最困难的地方。以前在TAV的时候学到的一句格言时,一个数学家再往墙上钉钉子的时候总是找看有没有旧的洞,这道出了问题的核心,我们人类这种看似无穷的学习能力实际上来源于原本学习到的东西,也就是说我们从来无法学习真正全新的东西,我们的学习不过是“比教与认识”,即comparison&recognition。我常常觉得这就是AI的核心,其余全是浮云。一个系统具有了recognition也就自动具有了memorize&comparison,所以核心的核心还是recognition。只不过为了帮助人类理解我们创造出了这么一对概念。recognition不是简单的也不是人们想象的那么复杂,因为这种最基本的能力如果非常复杂,人类可能永远不可能拥有智慧,毕竟从黑暗中摸索出来的自然智能的门槛不可能太高了。核心的核心的核心问题在于从简单的一对一的比较怎样上升到模糊认知?这本来似乎是一个非常复杂的学术问题,行而上学的信奉者也许会提出一大堆的heuristic的算法,可是在意识的萌芽期哪有什么算法?非常简单的解决方法就是人类这种生物性智能系统的特点:遗忘。在计算机里的对应的解决方法也许就是人为地创造噪音来模糊记忆,即以如果没有模糊,简单的认知也就没有所谓的抽象。我常常为我年轻时候的很强的记忆里而苦恼,因为当你准确地记忆了所有的细节之后,有时候反而导致我很难迅速地识别常人所能迅速做到的认知,毕竟你要处理的数据更加的多了,当然过多的细节记忆导致加速识别的例子也是有的,可是结果也许更多的是“串味”记忆,典型的例子就是“联想”,即依靠局部的识别而形成错误或者模糊认知,(ambiguous recognition)文学上有时候称之为通感,我觉得英文里叫做deja vu。也许通讯上的error-correction可以提供一种反向的解决办法,原本用来除错的算法可以被用来产生“错误”,目的使用自然的方法来提炼数据,lossy compression在多媒体里广泛应用反映了只要正确地抓住数据的特性并保留它,就可以让智慧提再次进行还原,这种容错性是计算机所追求的,想不到确实生物智慧体与生俱来的特性,因为他们本来就不能避免错误与遗漏,只是正确地利用它来服务。error&omission is used for abstraction,so, fault-tolerance is not a problem for human. 

所以,核心就在于后天的训练,就如同一个人如果没有适当的训练其智能看上去也超不过猿猴一样,那么大量的数据与实践的环境是很容易创造的吗?我想不是,人类器官的模拟也许还是一个遥远的将来,因为很多核心部分和智能紧密相关的,甚至于我常常认为只能产生于人类的视觉识别体系,所谓的vision是AI的一部分。因此到哪里去寻找一个人造的环境,一个拥有大量数据,大量不可预知的环境一边检验培养人造的智能呢?互联网也许是的,随之大量的数据,甚至于视频音频数据也被放在网络上,这个环境变得更加象一个原始的丛林适合人造智能去探索了。唯一的问题是我们人类是否有足够的耐心去重新来创造一次生物的进化?或者说需要多少时间原始的“生物汤”才能第一次产生出有机分子?甚至于我们是否能够注意得到?我们相信生物的进化是一种随机的偶然性吗?

对于萨达姆的死,《凤凰资讯》的态度我还是同意的,即便是一个罪无可恕的罪犯在他临死之前是否应该给他一个人的尊严,或者说我们剥夺一个同类的生存权的同时是否还要再千刀万剐似的加以报复?除死无大事,一个人假如连死也无法得到宽恕那就是世界的悲剧,我常常在电影里看到基督教在一个死囚被处死前允许他忏悔,虽然从唯物主义的角度看这些不过是做给活人看的,但是如果能够依靠这种临死前的忏悔达到基督教的所谓forgive&forget不是很好的吗?从这点来看,我内心深处有时候很懊悔没有接受那两个“耶稣见证会”的传道,也许我只是心里觉得有歉意如果她们将来发现在我这个没有希望的矿山上的投资感到后悔,或许这也是虔诚的基督教传教士的典型形态,他们从来不求这种回报。从这点来看,我感觉我在加拿大呆了这几年对于宗教的态度有了显著的变化。宗教更多的只是一种信仰,一个faith,而绝非中国本土释道佛那种受人香火与人消灾的物质精神交换活动,说的不好听就是“精神产品小卖部”!这种恶俗常常让我感到非常bs。如果基督教能够在一个精神文明,科学高度发到的西方生存,他一定有其生存的价值,在这一点上,你可以感受到以布什为代表的美国传统势力的价值观,说到底宗教代表了一种共同的价值观,依靠基督教欧美社会把社会各个阶层团结在一个相对和谐的社会里,这种共同的价值观是中国当前提倡所谓“和谐社会”所缺少的,试问一个没有共同价值观的社会里穷人和富人怎么和谐?这不是一句空话吗?中国的老百姓难道都不明白吗?即使渔夫渔妇不明白或者没有时间明白,难道所谓中国社会的精英阶层也不明白吗?无神论打破了人类内心的精神枷锁,但是也使得人类无所顾忌,除死无大事,还有什么可怕的呢?一个无畏的民族也就是一个亡命徒层出不穷的民族,对付亡命徒死刑也许是无用的如果他们根本就是无神论者。宗教是精神鸦片,可是如果没有鸦片的控制,不知道单单靠死刑是否能够控制得了。何来和谐?

从render的角度来看显示是不需要的,你根本就不需要那个glut,只要把glutmainloop换乘displaycallback的while-loop就行了。今天开学了,我是否可以进入状态呢?我的厨艺现在可以说是我这一年来最大的进步了,对了,忘记些年中总结了,今天我用靠想来烤三文鱼,这真是一个创举,谁说我缺乏创造性?


一月四日 阳光灿烂? 非常灿烂,气温非常高,庆祝蒙城气温超过巴黎。

凤凰卫视实况转播美国新一届参众两院开幕式,让我们了解到了美国民主制度的一些细节。长久以来独裁者为了巩固自己的独裁统治对于美国的民主制度总是语焉不详不让广大劳动人民知道美国的先进之处,反而是用一些民主制度的下次来彻底否定美国的制度的先进。在美国,相当政治家实在是一件枯燥无聊的事,完全不是儒家制度下的所谓学而优则仕的理念,究竟政治家需要的品质是优秀的专业知识还是一片热情服务社会的情操,这就是中西方的差别。比如对于美国的众议员完全就是一个小选区的代表,根本就不需要知道什么国际关系,外交国防之类的大政方针,他所要代表的就是他所在的选区的人民的声音,于是我们就看到了美国纽约市议员的第一位华裔女议员是一个做了22年义工的社会服务角色,这在美国是很难的,除非这个人确实是非常地愿意帮助社会或者非常富有贤得无聊,注意是“贤”不仅仅是“闲”。在中国富有的人不少,闲人也不少,但是愿意无偿服务社会的不多。所以,这样的政治家你会怀疑他的操守吗?在台湾你不会怀疑政治家从政的原因吗?反观中国的所谓人民代表大会,选出的都是所谓各个行业的名人,你以为你是得到了代表还是你认为那只是一个政治橱窗?因为只有橱窗才会陈列光鲜发亮的商品,居家过日子的老百姓需要的是关心他们身边的衣食住行的小议员。这就是中西方民主的差异,也是一个社会发展的两个阶段的代表,从这一点来看中国还是处在封建社会向资本主义社会过渡的初级阶段,没错,就是“初级阶段”。

简单地实现了一个convex-hull的算法,不复杂仅仅是证明我还活着。


一月六日 阳光灿烂?不知道啊,可能没有吧。

折腾了一个早上才又把一个反反复复都要犯的错误又一次地纠正了一遍。在windows里面的vc6的编译器很讨厌地自作聪明地从你的sourcecode的文件的后缀名来选择编译类型,当然这是很好的,可是对于我司空见惯的时候反而不注意了。这个差别在一般情况下没有问题,可是当我写dll的时候,如果用runtime的loadlibrary,getprocaddress来调函数的时候就有差别了,因为c和c++的函数名字的decoration是不一样的,静态链接因为有头文件的帮助编译器可以帮你选择正确的,可是动态链接纯粹是靠名字比对的,所以就出错了。因此,在dll的函数声明中要加上extern "C" {...//function declaration here };这样强制c编译。同时calling convention也是最容易犯的错误,__decl(cdecl)是默认的,比如:extern "C" { __declspec( dllexport) void helloWorld();};

但是对于一般跨语言,跨平台应该用_stdcall,那么getprocaddress是否可以正常使用呢?这简直就是一个所谓的msdn上的oldnewstory。我像先前无数的人重复翻过同样的错误,然后我再来一次。如果你想要别的语言也可以使用你的dll,那么你需要用__stdcall,但是函数的名字不再是他的默认的函数名字,而是变成了"_函数名@#",也就是前面加一个下滑线,后面加上一个@最后的#是一个数字,取决于你的函数的参数个数,这个数字是你的参数个数的四倍,比如你的函数是这样的: void helloWorld(char*, char); 完整的函数名称就是"_helloWorld@8"。这实在是有点麻烦,所以我像还有另一个掉用方法就是用函数的位置来调用,这样可以省却这种古怪的函数名字的写法,在调用getProcAddress时候,你的第二个参数不再是一个指向函数名字的指针,而是一个数字,就是index,比如

typedef void (__stdcall *HelloWorld)(char* , char ch);

HMODULE h;
char* ptr=(char*)0x00000002;
HelloWorld helloWorld;
h=LoadLibrary("myHelloWorld.dll");
helloWorld=(HelloWorld)GetProcAddress(h, ptr);

(helloWorld)("nick", 'c');

在dll的定义是这样的:extern "C" {
__declspec( dllexport) void
helloWorld();
__declspec( dllexport) void __stdcall
helloWorld1(char* why, char ch);
};

注意,函数的index是从1开始的。

晚上无聊之余作了一个简单的改动把前天的convex-hull做一个显示,这简直是非常幼稚的东西,可是我发现我因为每次写openGL的程序都是拷贝粘贴,所以很多固定的套路实际上总是忘记,并且一个人如果不去亲自做一样事情不论他又多么简单都有可能闹笑话,比如,glut这个library其实也是很讨厌的,我一直以为他的很多函数只不过是参数设置没有什么先后顺序之分,比如glutDisplayFunc之类的回调函数设定,glutInitWindowPosition之类的window的属性设定等等,可是其实有一样是不同的,glutCreateWindow一定要在显示模式设定glutInitDisplayMode之后才行,否则window不会自动刷新,这个简单的问题困扰了我一个小时!实在是贻笑大方。想想看很多这类被行家里手所不齿的东西如果一个人从头钻研起来不知道需要多少时间,尤其像这种library完全就是一个黑箱子的东西,知其然而不知其所以然的编程很可能是一个noob级别的白吃在google上拷贝一段然后在两分钟之内写完一个helloworld的东东然后声称他是一个openGL的专家,而你就算把glut的源代码都看一遍偶然之间还是可能发生一个百思不得其解的低级错误,就像上一次我对于glutInitDisplayMode里面GLUT_ALPHA不甚了了,就没有使用结果后来去读colorbuffer的时候总是出一些莫名的错误,后来如果不是sushil的一句点醒我可能要迷惑好多天呢!


一月七日 阳光灿烂?是的,中午决定出行,步行到了河边

再模模糊糊的记忆里我写下了我所能想到的过去的一年

最适合中国国情的民主形式是什么呢?卢卡尔先生认为是开明专制,这可能是当前很多人的想法,专制与民主仿佛计算机算法里面的各种排序算法的优劣一样,专制仿佛是quicksort,在一个英明君主的统治下效率超过了大多数民主制度,可是一旦遇到一个坏君主对于社会的破坏也是惊人的,而民主制度可能是一个比较stable的算法,不论worst case或者best case都和average case差不多,因此总体上来看效率超过了专制制度。


一月八日 阳光灿烂?是的

我自己犯的愚蠢的小错误让我白白浪费了两个小时debugging,因为我自己都忘了我当初的代码的意思了。现在的程序越来越乱了,我自己都记不清楚流程了,再加上以前写的费解的macro更是一个恶梦。


一月九日 阳光灿烂?你以为我能做天气预报吗?

日本的防卫厅升格为防卫省了,小狼犬长大了是否就该unleashed了?其实日本只不过是美丽坚的走狗,人家主人都不担心,你作邻居的要担心吗?

[qingz_hu@n285 ~/mpitest] % mpirun -srun --nodelist=n81,n86,n83 ./mympitest.exe
node 0 say Hello World
node 1 say Hello World
node 2 say Hello World
[qingz_hu@n285 ~/mpitest] % mpirun -srun --nodelist=n78,n81,n86,n83 ./mympitest.exe
srun: error: Unable to allocate resources: Requested nodes not in this partition



一月十一日 阳光灿烂?不是的,因为昨天下雪了

sweep line algorithm费了我两天时间才看懂,改造BST又花了大半天,结果昨天听lecture,发现如果要handle special case还要改造,就是说不应该依赖于key来寻找,而是要依赖于比较的方法,所以就是说传入callback的比较的方法指针要比传入寻找key的方法指针来的灵活,否则你怎么解决一个交叉点有多个segment交叉的问题,你怎么解决一个segment的结束电视另一个segment的开始点的顺序问题,因为这可以说非常的普遍,就是polygon,如果你不是先加入一个segment然后取出另一个segment你就会遗漏这个intersection。这样的顺序你只能依靠传入比较的方法指针来控制BST的结点顺序因为key可能是一样的。就算你没有考虑numeric error同样是错的。(最后一句话是无里头)布什宣布增兵伊拉克,很多人批评不看好,我看了凤凰的评论,觉得主持人说的对,这是没有办法的办法,这正是布什作为一个领导人的品质,虽千万人反对,我亦往矣。美国人的话就是leadership,因为“军有退心则不可战”,要撤军必须先增兵,伊拉克布什越南,因为它背后的大国不是中国苏联这样的大国,一个小小的伊朗成不了什么大气。看到布什在阵亡美军家属的慰问会上流泪,我也很感动,因为布什其实是一个真正的战士,一个对抗穆斯林极端主义的基督战士。

一月十三日 阳光灿烂?是的

sweepline algorithm费了好几天的努力最后暂时放弃了,因为我遇到了一个技术问题,算法中有一个平衡二叉树,当sweepline跨越交叉点的时候交叉的线段要交换位置,可是我要怎样改变二叉树呢?我总不能改变key吧?(刚写到这里我就意识到我有做了一回白痴,实际上大多数时候我几乎就是白痴一样,一个问题如果我能够准确地写下他,就意识到了那是一个极度简单的问题,我完全可以设计一个动态的比较方法,也就是说比较方法指针是带一个参数y,或者就用全局变量好了,实在是一个no big deal的问题,我还写信去问教授真是白痴!)相对来说我的mpi程序的问题实在是令人困惑,我居然无法收到一个message,或者是tag的问题,或者是我的指针乱写了什么东西?后者就是非常困难的问题了,毫无迹象?应该没有那么的lucky吧?又花了半个多小时改以前的不足,在并行处理之前,我的通讯是synchronized,blocking的,但是并行开始的那一个message要用non-blocking的,接受者是收到后才知道开始的,message本身含有数据表明并行开始,那么收到后就检查,所以一定要synchronized,MPI_Issend,(不是MPI_Isend)可是有必要使用non-blocking的synchronized的吗?我忘了我以前为什么这么做。另一个糊涂的地方是不同的source使用同样的tag是没有问题的,我自己糊涂了。

在去年的年终总结里有一点我没有好意思提出来,这过去的一年里我觉得我的天分不在计算机上,也不是游戏,而是在烹饪上,在这方面我总是在创新,哈哈,比如今天我决定把PA的小鱼放在烤箱里烤一下,味道鲜美和油炸的一样香。(借用一句陈凯歌批判胡戈恶搞它的“无聊”大片的话:一个人不能无耻到这种地步!)


一月十四日 阳光灿烂?是的

听说中南海以前的政治学习内容就是关于从十五世纪开始的地理大发现以来崛起的强国之路,于是我也把《大国崛起》下载来学习,紧跟形势嘛。新的有几点。1。大国崛起往往是依靠封建时代的中央集权的加强达成的,在冷兵器时代尤其是人口地域的多寡决定了国家的强盛,所以很多的大国崛起都是伴随着国家的统一,比如西班牙,比如德国。这是不是间接说明老邓老江当初说台湾回归问题是国策的原因,抑或是现在找原因来证明?2。大国的崛起往往是海洋文明的胜利。葡萄牙西班牙荷兰英格兰等等自然是证据,当时的地理大发现可以说是生产力的大促进,在同一个时期中国的地主老财含辛茹苦以至于起五更睡半夜才能提高一点点的劳动生产率来赚一点点简直就是长工的残羹冷饭一样的剩余价值,不信?半夜鸡叫的周扒皮同志起的比长工还早,这样的农业资本家就是长工都不愿意干哪!可是在欧洲你可以直接去美洲检黄金,当地的印第安人对待黄金的态度就是装饰品,要就拿去,这其间的差别当然是天差地别。真是让人感觉要做地主也应该去欧洲作,一个政府的职责不是开疆拓土还交税给他干什么?搞的中国的地主这么辛苦地以至于要运用“大斗进小斗出”这样不得已的办法来增加财富真是悲哀啊。3。间接的另一个潜台词就是大国的崛起肯定要有机遇,马无夜草不肥,人无横财不富!葡萄西班两颗牙是靠咬新大陆和东方贸易这两颗果子富起来的,英格兰,荷兰这两个兰是靠揽上前面两颗牙的生意来暴富的,其他的大国也都是有各种各样的野草,无非就是这些野草的吃法不同而已,有的抢有的夺,有的骗有的拿,中国今天什么草都没有,连槽里的草都不够吃哪里来的夜草?崛起?就是尥蹶子也没用啊!4。重农抑商的儒家治国之道害人哪!从汉朝开始中国的最大的历史糟粕哲学儒学救教导汉文帝汉景帝要重农抑商,结果有了所谓文景之治,于是中国历朝历代都奉若神明。在《文明2》里面初期一定是要重视农业的,商业都是奢侈品,赚的钱还不够买粮食的,就算你要买也没有人会卖给你呀。可是当文明发展到一定阶段,当农业劳动生产率水平达到一个农民可以养活好几个人口的时候,你还不发展商业,你就死定了因为没有钱什么高级的技术科技都不能研发,什么高级的军队装备都不能买,这些浅显的治国道理凡是玩过《文明2》哪怕是小学生都明白可是我们的高级的党和国家的领导人却不一定名白白浪费的几十年,什么摸着石头过河,什么有中国特色的社会主义,买台电脑玩两天游戏不是都明白了吗?什么?以前没有电脑?哦,那么就看几本欧洲文明史就行了。5。和亚洲这些周边国家玩没有前途,只有像日本那样脱亚入欧才能跳跃式发展,中国现在和欧美的差距远远超过当年日本和欧美的差距,现在就算是有日本的勤奋运气能力也是没有可能的,能够养活得了这十几亿人口不挨饿就好了,什么大国崛起就算了吧,那不过是党的宣传机器忽悠劳动人民的精神鸦片,你们都作大国梦,咱们干部抓紧时间争取腐败超越欧美,这方面赶英超美还是很有希望的。

一月十七日 阳光灿烂?忘了,现在天黑了

自从学校的新的健身房开张以来我感觉我的生活终于走上了正轨,一个人如果实在没有什么事情可以做就去健身房去吧。实际上我并非无事可做,而是由时候做不了或者坐不下去,比如读paper实在是痛苦的事情,就算是我研究的领域甚至于是我曾经尝试过的方法还是非常晦涩难懂。看不下去于是就开始对与烹饪发生兴趣,总算领会到了大多数女人为什么愿意去生孩子,因为当她们发现在这个社会上没有立足之地的时候唯一不需要技能的工作那就是专职家庭主妇生孩子了,而作为我呢,唯一不需要既能就能做的就是吃,然后稍微磨练一下就使捣鼓出访德锅碗瓢盆,古人云,君子远庖厨应该是因为君子都是由吃饭做饭以外的技能所以可以不用从事厨艺研究,我看来已经算不上君子了。早上发现昨晚上可把书丢了,赶紧去教室看了一下发现教授捡到了,在黑板上写了字条。放心之余就把丢书的时候法是好好读书的誓言忘记了,下午一觉睡醒决定把fedora6再刻一遍,重新安装系统。

一月十九日 阳光灿烂?忘了,现在天黑了

关于comp444的作业我说了一句大话,trivial,结果我为此付出了整整一天的代价,不过说心里话那都怪我得到了错误的资讯,你知道当别人给你一些错误的信息比不给你信息还要糟糕,当一个人对一个领域几乎一无所知的时候还要去当教授教书那就是对学生的犯罪,我很同情那些无知的羔羊,因为老鸟都不会来的。作为资料保存在这里

老调重弹就是在linux上mount usb的问题,可以先用system tool->hardware browser来看一看harddrive里面有没有发现usb设备,然后就可以在fstab里面去设定mount points,其中的选项可以是auto__defaults,users,noauto_0 0,不过我想vfat也是可以的,至于说要把windows的partition映射过来基本上是类似的,只是不能选择“extended”或者"ntfs"的文件体系,当然你可以设定成auto,以便开机就映射。现在感觉我对与linux的感觉要比以前好很多了,也需时日久生情的原因吧,当你还不了解它的优点的时候总是有很大的敌意,现在虽然还是不熟悉但是因为毕竟是开放源码得咚咚还是有一线希望可以找到原因的,当然现在叫我去看源码还是太早了,不过总有一天我会的。


一月二十日 阳光灿烂?是吧,今天我想记录我看到关于阳光的纪录片

关于全球暖化的理论几乎每个人都听说过,但是大多数人都不以为然,包括我自己也是如此,因为看起来很遥远,今天看到的一个短片却是非常震撼,因为在全球暖化的同时我们还有一个所谓的全球冷化(global dimming),这个翻译不准确,原意是“全球模糊化”,就是说人类产生的灰尘在天空形成了一个类似镜面的效果遮蔽阳光导致全球变冷,这似乎是和全球暖化相矛盾,因此大多数人更加的不相信,包括大多数的科学家,的确我们看到的事global warming的某些征兆,而且至今还不能十分确定,但是绝对没有看到什么变冷的征兆,于是大多数有头脑的人都可以自诩为由科学常识,有唯物主义头脑可以斥之为杞人忧天,捕风捉影。的确,事实上看起来如此。抛开一切遥不可及的气象统计数字不谈,单单扪心自问我们今天的天空是否比我们的祖先更加的混浊了呢?我想大概每个人都不敢否定吧,那么这么多的尘埃在天空中会有什么效果呢?肯定有,阳光是否就暗淡了呢?肯定,不过有多少呢?这才是症结!单单空气尘埃并不能阻挡多少阳光,毕竟很小,可是据说雨滴的形成是需要这些尘埃的,并且有烟尘的云层中雨滴更多更小,这些更多更小雨滴形成了一面镜子反射了大量的阳光形成了全球冷化的效果。可是事实上我们感觉其后在变冷,对不对呢?对,可是这就是更加的可怕,因为如果那些科学家的研究是正确的,准确的,那么我们当今的全球暖化的危险是更大了,因为这几十年来加上了全球暖化的效果我们的地球居然还在变热,那么那个温室效应可能比我们想象计算的还要大得多!也许我们的预测太过保守的了,也学《The Day After Tomorrow》就是tomorrow。

一月二十一日 阳光灿烂?是,先生。

关于我得算法我一直想画一个DFA,可是我这么懒怎么办?在健身房里我想有些事情不是人人都能做到的,一种原因是能力,一种原因是意愿,就比如我现在很多事情做不来可能两个原因都有或者至少有其中之一,看来一个人一生能做一点点事都是很难的。(我这么想应该是给自己找台阶下台吧。)

|家| <---->|健身房|<---->|实验室|<---->|超市|

这个当然是搞笑的,实际上也不算DFA,反正今天找到了长久以来的一个小bug,居然是把赋值等号写成了逻辑等号,晕倒!这种低级错误自从学c/c++以来就只有在初学的时候犯过,没想到现在。。。看到Becky的blog里面自称“煮妇”,我想我辈自己做饭之流就只好称自己做“饭夫煮子”了。


一月二十三日 阳光灿烂?不知道啊,这里要八点以后才天亮

看到英国首相府的高官被苏格兰场逮捕实在是令人吃惊,同时对于民主国家更加敬畏,苏格兰场甚至可以利用黑客进入唐宁街十号的电脑来获得证据,相形之下台湾居然还在为所谓的机密非机密争来争去,司法尊严扫地到家如此谈什么民主政治?没有独立的司法体系所谓的三权分立都是空话,因为议会的立法必须要有一个独立的执行机构才能实施。中国人过去往往认为好的制度仿佛是从天而降不需要深入讨论设计,这也是我所深恶痛绝的,制度的设定培训不是一个孤立的事件,这仿佛是一个game的规则设计,我粗略回想了一下,现在体育中有中国人设计的体育比赛制度好像完全没有,这难道不能说明什么?难道中国古代就没有任何体育比赛吗?体育比赛最讲究的是一个公平与平衡,而很多比赛的精彩之初就在于比赛规则体现了某种平衡的思想,战术技术的相生相克,可是中国古代人没有体育比赛更没有什么体育比赛的制度规则的创立实践,这一点似乎说明了中国人对于一个平衡制度的设定毫无意愿与能力,因为这非常的不容易。《星际争霸》始终是我认为最为平衡的一个游戏,因为三个种族几乎没有相似之初却缔造了这样一个动态平衡是非常非常的困难的一件事情,这完全是超过了艺术的技术。大概中国人对于平衡的概念还停留在《红色警报》阶段,也就是说“所谓公平就是双方拥有完全一样的资源与能力”,这实在是一个乌托邦式的幼稚的理想主义的想法,这的确是最理想的公平,而事实上是最不可能的公平,因为这个世界上达到这样的“克隆”公平是一件几乎不可能的事,而反过来说,如果达到了还要制度设计者做什么呢?岂不是太容易了?所以公平制度的设定是一门很深奥的科学实践,决不是三两个高官拍脑瓜就能实现的轻而易举的小事,这件大事不应该是在酒足饭饱之后的闲谈中,也不应该完全丢给见仁见智的缺乏专业技术知识的普通大众来讨论,这也许是我们这个社会唯一需要精英发挥天才的地方,因为一个社会如果设定了完善的制度(包括制度自我约束,自我更新,自我修正,自我完善等等),我们就可以放心的不社会的运行交给一帮白吃去运作,社会精英可以去享受自己去了。在日本明治维新时代日本现代企业制度的奠基人就是这样一个传奇的做法,他本来是政府主管经济的高官,后来弃官从商实践引入了西方的股份制公司制度,会计制度等等,把日本带入了现代资本主义时代,这种制度的建立至关重要,因为制度的建立不但要理论还要亲自实践并树立榜样与模式。在中国几乎找不到这样的人才,所以虽然人口众多可是可堪大用的人才几乎没有,难怪有人会呼吁天公不拘一格降人才。昨天看到美国的顶尖的企业家自发组织要求政府改变现有的制度来防止气候变化,这样的实践在中国几乎难以想象,因为这样的行动完全是社会责任感的体现,想想看,这种行动很可能使这些大公司每年增加天文数字的开支,中国的民企避之而唯不及怎么会主动呼吁政府采取行动?难道西方人脑子都进水了?饱暖之后不思淫欲反而思公益?同样的地球,不同的天空不同的人中差距是我们难以想象的大。其实,深入向来应该是制度使然,西方的遗产继承税足以让为富不仁的富人发现投资社会公益使他们唯一回报最高的选择,这就是制度的威力。

一月二十四日 阳光灿烂?好像是,今天据说有零下20几度

每当我写中国字超过代码的时候就说明我的头脑空空的,学不下去了。所谓人类的独立思考,性向各异的教育成果在很多人扬中仿佛是一种优势,可是从纯粹的劳动力培养的角度来看却是产品质量不稳定次品率高的托词。

一月二十六日 阳光灿烂?好像是,今天据说有零下20几度

一觉醒来窗外虽然是迟暮的阳光却分外的灿烂,实际上现在才下午三点钟而已,可是你知道加拿大的冬天下午四点钟天就黑了吗?为什么阳光看上去分外的灿烂,因为在零下二十几度的严寒里看到灿烂的阳光会让你从心底里涌出一篇暖意,自然隔着双层玻璃窗看严冬的阳光是有一种格外的亲切。实际上这样的气温在往年来看并不算很冷,可是今年一个冬天就没有冷过,直到现在才让所有的人松了一口气,原来全球变暖还是一个遥远的神话。

睡梦中隐隐约约听着凤凰资讯里赵少康的谈话节目在谈阿扁要求大法官释宪为自己开脱的笑话,想想看这的确是一个笑话,一个堂堂所谓总统之身竟然用小律师打官司的手段来无所不用其极,这可能是制度的漏洞,但更可能是人性道德准绳的意外,也许当初制定法律的人杰考虑说能够当领导人职位的人选应该是道德上不成问题的了,所以对于国家的最高领导不应该再有道德的约束,于是有以色列的总统会去强奸,于是美国的总统会撒谎骗议会,和白宫实习生偷情,凡此种种都忘了所谓的领导人很多时候风云际会黄袍加身屁股就坐在了那里,不要求他一定不是流氓出身,不要求他一定是品行端正,反正全民投票总要选一个,说不定将来脱衣舞女竞选也可以当美国的议员。所以制度的设定者是否要设定一个对领导人的监督体制是历朝历代古今各国的最难的事情,制度的制定者为什么要设定制度约束自己?中国古代大约只有几个开朝皇帝会主动限制自己的权利,其后代子孙大都废弃了。这似乎是一个无解的难题,由此我想到了我和同实验室的印度同学的激烈的辩论。我坚定的信仰质量守恒和能量守恒是宇宙间两大不可变更的基本定律的,而所谓的爱因斯坦的质能转换公式仅仅是表明了能量与质量是宇宙间所有物质的两大基本属性,并且这两个基本属性优质固定的数量关系,就是说一定的质量总是联系着固定的数量的能量,所谓质量是质量,能量归能量,只有联系没有转换一说,原子弹爆炸残骸减少的质量就说明有多少质量的高能粒子被释放到外界,他们所联系的能量就是原子弹的爆炸当量,能量不是质量殁灭生成的而是原子核固有的高能量的释放,能量与质量的载体只能是有形的物质,不论他是基本粒子还是原子分子,能量的传递不可能是超时空的。我想我的这一套理论大概都是我初中高中时候建立起来的所谓的经典理论。可是我的那位印度同学说根据爱因斯坦的狭义相对论这一切都是不对的,而所有的google的资料都显示他是对的,质能的确是可以转换,反物质与正物质的湮灭产生了能量消灭的质量。我所能做的就是坚持说不相信,反正不论你怎么说我都不信,因为这一切本来都是超越我们饭夫煮子的所能观察的事情,你不可能有什么现场的试验,我自然可以否定一切,所谓信者恒信不信者恒不信,看你有什么办法。就像我大学时候从来都不相信微积分一样,我反正不信难道我会死吗?的确,不相信微积分的正确我活了几十年都没有什么问题,还算健康。可是在遥远的时代,在达尔文进化论所描述的进化历程里凡是不相信近亲通婚导致种族退化的物种都湮灭了,凡是愚蠢到认为抗争自然规律的物种都被自然在这个星球上抹去了。这就是信与不信的区别,所谓的台南渔民自然可以选择信与不信,但是世界全球化的分工的规律却不屑于你争辩,他只是指示资本,这双看不见的手去鉴别潮流顺应者与抗争者,几十年后或许后人贤得无聊来研究这一段历史又要发思古之幽情了。这就是古代化石给人的启迪,大多数化石物种可能都是一些执著的斗士,相信自己的直觉胜过客观事实,相信自己原始的感觉胜过科学的计算分析,于是在历史的长河里他们成为化石。我又一次感受到了所谓belief的传递可能是这个世界上最困难的事,这再一次证明了当初穆斯林的祖师一手拿剑,一手拿古兰经传教的传说,在传教者看来对于愚顽不可理喻的异教徒不能精神转化就只有肉体消灭了,只是不知道这里有没有类似爱因斯坦的质能转化公式一样的精神肉体转化公式?如果有的话,宝剑可能要比古兰经好用的多。

实在是无聊了,那么就去健身房吧?闲着就是贤哲。


一月二十九日 阳光灿烂?好像是,今天据说有零下20几度

明月几时有,把酒问青天。没有酒也没有什么月亮,加拿大的冬天只有白雪。很多时候人的灵魂是空虚的,很多时候我觉得我的情绪是低沉的,大概我只有在埋头绞尽脑汁殚精竭虑的写程序的时候才使头脑正常的,可是渐渐地一个人变得懒得动脑子,于是我大部分时间就是这样idle着。偶然地回想起多年以前的理想仿佛越来越远,一个人的信念是否能够支持十年?我不知道,也很表示怀疑,反正我知道我的计划不可能超过两年。我觉得我的算法应该是没有问题了,也许是wmpi的问题,我是否应该先迁移到linux上做测试呢?

《计算几何学》一次作业有九道大题,每个问题又有若干小问题,我花了快一天还没有写完两道题,写了五页纸,还不算写废掉的。大部分的问题其实也不算难,可是并不像看上去的简单,比如没有写过算法的仅仅会纸上谈兵的计算机学生有时候会想当然地认为简单,实际上不是那么回事,其中一个算法是让你旋转一条线记录下所碰到的第一个点,第一眼看过去如果是些伪代码可能就一句话:“旋转”。可是怎么旋转?怎么检测第一个碰到的点?要写好多的,如果不明白的话也就不明白他的计算复杂度了。想当然是不行的。

在电视上看到穆斯林的所谓节日用皮鞭鞭打自己的背,血肉模糊令人发指,实在是对于这种宗教不能苟同,也稍微明白了一点为什么有那么多的自杀炸弹,从本质上看,世界上大多数国家可以把本国内的让别人自杀的宗教称之为邪教,却没有哪个国家敢这样对待伊斯兰教,连小布什这样的斗士都要服软。

《凤凰资讯》的实施辩论会常常辩论一些转制与民主的议题,卢卡尔博士似乎是一个坚定的保皇派,当然我们明白这也是节目的需要。


二月一日 阳光灿烂?好像是

在youtube上浏览南京大屠杀的纪录片,有连带着看了很多评论,和很多在美的日本裔的所“附送”你的日本国内过于这个问题的电视辩论节目,感觉心情非常的沉重。我想人这种动物是最难以对付的动物,最困难的地方无非就是belief的传递,比如一个非常博学睿智的智者如爱因斯坦牛顿之流死了,然后他所想的,所相信的没有任何办法保存传递给别人,靠书本?可是你看看有多少人读同样的一本书的除了完全不同的结论?有多少人接受同样的教育成长为不同的人?人这种动物是hopeless的就在于知识信仰的传递的困难。同样民族内,不同民族种族间,就算背景相似,资质相似依旧无法保证准确地接受相同的信息,或者说即便他们接受相同的信息却进行不同的解读。从这一点来看机械智慧取代人类这种动物是必然的自然规律,如果人类相信进化论就应该相信自己这个种群被机器人取代只是迟早的事情。当然到那个时候我们自然也不用再烦心怎样在不同的个体间传递信仰的问题了。

假如每个人都允许去开创一门学科,我愿意去创立一门compuphylosophy(计算机哲学),所有的学生都讲究顿悟,天天不读书整天空想空谈,主课有三门:观天学(就是如我现在这样天天躲在带天窗的小阁楼里摆一个坐井观天状冥思苦想一些半痴半疯的议题比如machine-learning和automated-proof哪一个更优先?其实我自己都不知道这两者的准确定义。第二门课叫做扪心学,就是天天学孟子一般每日三省吾身,检讨自己的思维逻辑产生过程,扪心自问整理自己的思绪六座资料以便后世的compuarchaeology(计算机考古学)作为历史考据研究二十一世纪的世界。第三门课叫做...

今天是一个值得纪念的日子因为我的天窗可以在中午的时候洒下一绺谈谈的阳光仿佛《绞刑架下的报告》里的主人公所在的牢房在夏天最炎热的日子里能够看的那片短暂的阳光一样可爱,同样中午的土豆牛肉汤虽然已经反复热了n多天了仍然像小说中所说的世界上最美味的土豆牛肉汤。

计算几何学的算法题目我每天只能做那么一两道题,因为描述一个算法的时候往往发现自己的想法太粗了,这种情况我再写程序的时候经常遇到,也就是只有实际到算法的数据结构的设计阶段你会发现你的想法的漏洞,所谓不思则无惑,不行动则无挫折,从来不写程序的人几乎永远无法意识到思维的漏洞,当然这既仅仅限于常人,对预算法大师和数学大师来说,他们的首要任务不是去实现一个大体设计好的算法,因为这可以被一般的庸才如我辈来完成,他们所关注的时能否设计出一个更好的算法,这其中的差别不可以道里计。算法设计这门课我基本上是听个意思,明白了粗浅道里,比如strassen当局真乘法是颠覆历史的革命因为几百年来从来没有人想到过一个算法还可以这样玩,也就是常人认为是不可能的地方玩出了火花。惊叹之余感觉自己真的好好渺小啊。好久没有用笔来写作业了,每天写一两张纸扔进抽屉,然后把写废的反过来当草稿,估计要写个二十几张吧?其实凭良心来说,几何算法属于算法课里比较容易的,因为大多数时候画图就能找出方向,不想那种变态的NP问题的算法折磨头脑,只不过为了表述清楚就不大容易了,尤其是用笔来写。

晚上无聊之际写了一个极其简单的产生simple-polygon的小小算法,只不过证明我还活着,(其实我的确是这个意思,因为我思故我在,而我只有写程序的时候才思考的多一些,所以写程序证明我思考故而证明我存在。)不过意外地发现了一个奇怪的openGL的现象,就是GL_LINE_LOOP的最右边的点总是不清楚,奇怪真奇怪。


二月五日 阳光灿烂?好像是,不过零下二十几度的寒风吹的人想流泪

一个人无所事事的时候干什么呢?这个问题本身就是一个假命题,既然是无所事事又怎么可能干什么?事实上来说根据帕金森定律一个无所事事的人实际上是最忙得人,而一个整天号称很忙得人实际上是很闲的人。那么看英文的肥皂剧是否比看中午的无聊节目更好一点呢?也许吧,至少入乡随俗,不过好象听说现在《friends》之类的东西是国内小资看的。看那些字幕其实有些意思因为我还是不能完全不一来字幕,比如一些特别古怪的笑话你首先不一定能够意识到那是一个笑话,就像《The Thin Blue Line》里的那些英国人的笑话,当然美国的东西要比那些容易不知道几百倍,可是还是忍不住条两个小毛病,翻译字母的人要么是完全不接触英美文学的要么这个字幕是好几年前做的,居然会把<The Lord of Rings〉翻译成拳击比赛之王;当他们将笑话说舔人脸的不是狗而是海豹(seals)的时候,也居然翻译成了印章(seals),因为他们一词多意,所以在看英文笑话的时候也为中文笑话幽了一默。

二月八日 阳光灿烂?好像是,不过零下二十几度的寒风吹的人想流泪

看到我那个同学公务员有滋有味的博客突然让我想起来刚来这里的时候老师听不少人羡慕这里的公务员生活有多好,反正无非就是钱多事少离家近那一套,后来又听他们说羡慕地铁开火车头的,在后来听他们说羡慕收垃圾的因为那也是个好几万的工作,听得多了也就烦了,我很想说我很羡慕蒙特里尔大街上无家可归的人,天天没事干可以晒太阳还可以随地大小便,也不愁吃穿!其实,你如果羡慕公务员,你用不着来加拿大,世界上那里的公务员都是很多人羡慕的职位,当然这中间最值得羡慕的就是咱们伟大祖国的中国的公务员。基本上一个普通中国人的最理想的生活就是这么三句话:“入了他那个党,干了他那个部,为人民那个币服了务。”来这里混得人大概都是在中国没有实现这三大理想的吧?姑妄言之,姑妄听之。

本来为了制作一个定时关机的小程序竟然折腾了一个晚上,确实win32api实在是有点烦人,一大队的函数的名字很难让人想到。不过转念一想,这实在是不得已,因为WINDOWS的东西要比LINUX复杂的多,有一个东西费了我很长时间没有想明白,就是我传入参数用HANDLE*竟然不行,一定要用&HANDLE,这实在是有些想不到。


二月十日 阳光灿烂?好像是,今天零下多少度呢?

尼泊尔的毛派游击队正在成长中,也许有一天这个在野的毛泽东思想战斗队会夺取政权呢。相反的,他的邻居,一个当年走过类似历程的组织在一天天的蜕变成当初他们所反对的敌人,或迟或早地,他们会失去今天的统治。我在被逼迫写出算法的定义与证明过程中深深体会到了这句我创造的名言:Well defined, well designed.

太阳一天天地在长高,现在在中午时分已经可以依稀透过天窗看到杨光了,总有一天我又可以过上我最向往的生活:躺在床上晒太阳了。


二月十一日 阳光灿烂?好像是,今天零下多少度呢?

为什么人是hopeless呢?因为这个世界上的大多数人完全就是不再能够学习,我看到我那个xxxx写来的算法就知道我始终没有办法让他明白问题在哪里,从头到尾来说一个人不去实践就永远不会知道问题在哪里,或者意识到那是一个问题,这当然不过使我第n次重复毛主席的实简论而已,但是难道不对吗?从进化论来看人作为物种来说并没有被要求去适应自然环境,这有一点点耸人听闻实际非常浅显,就是批判用进废退论而已,比如长颈鹿并不是看到树上有树叶想去吃而强迫自己总是伸长脖子的,这完全是很多没有科学常识的贫民老百姓的想当然,进化论里的物竞天择,适者生存是依靠基因变异来实现的,也就是说在当前这一代并不能实现物种的进步,所以说物种适应环境完全是一个被动的行为,基本上不是物种自己主动调整自己来更好地适应环境,而是被动地被环境淘汰掉而已,所以,人也不会主动去学习,因为这不是人这个物种的特性,食色才是人性,怎样多吃多造人才是流传物种的正宗,多思考多学习?对不起如果那不能养活你自己,你还是被淘汰了,所以人这个物种最容易存留下的基因是多吃能睡能多造人的那种,你听说过爱因斯坦或者牛顿的后代很多吗?人种的改造其实人类历史上最积极的一次时间应该是希特勒统治的时期,可惜这种淘汰制被所谓文明人认为不人道,这也是没有办法的事情,毕竟我们现在这个社会比起原始部落时期有了很大的进步了,我们现在已经一致认为我们是文明人在战胜对手之后不应该把他或者她的尸体当食物来吃掉,这一点可以说是文明社会与野蛮部落最大的本质的区别,也许也是唯一的区别,这就是人类社会几千年来进化的最大的成就。

二月十四日 阳光灿烂?好像不是,今天又下雪了

实际上,occlusion-test-extension使用的事监测z-buffer是否产生变化,所以决不是我们想象的区监测颜色的那种,我不知道为什么会想到这个问题,但是这一定是有一个重大的前提就是从前往后的rendering,否则就是没有意义了。

二月二十一日 阳光灿烂?是啊,这是最暖和的冬天

GPU programming有些变态。1。用那个glsldemo可以作为一个平台,不用每次都去编译,除非你要新加入一个uniform,所谓uniform实际上是openGL与GPU通信的一种方式,具体是在runtime调用GLSL的编译器编译成汇编代码还是在openGLprogram编译时候一起编译,我已开始概念很模糊,现在看来应该是前者。 2。vertex processor 和fragment processor之间可以通过varying的变量来传递数据,但是他一定不能是boolean或者integer,这一点我花了好半天才搞明白,语法书上好像没有说啊。3。GLSL已经傻瓜到了纯粹C语言了,不过GPU的内置函数效率其实并不会很高,比如noise函数已经调用就非常的慢了,当然这是我在每一个vertex里面都调用一次自然很慢了。4。意外地发现了用vc2003可以编译的用vc6无法编译,这实在是折磨人,只好升级到vc2003。5。在强调一次,openGL里面的matrix都是column matrix,matrix和vector相乘的嗜好要看作是linear transformation,transformer在左手边。6。并不是所有的lib都是空壳文件,如果是静态库那么确实的binary代码都已经包含了,当然不需要动态库了,同时vc6好像不去检查是否静态库由多个main入口,实在是混乱。

二月二十三日 阳光灿烂?是啊,这是最暖和的冬天

Sushil的解释应该更加的浅显,我会错的Dr.M的意思,实际上应该是一个vertex完成后紧接着就是fragment因为rasterization是一个必然的过程,就是一个动作还没有完,所以对于每一个vertex来说,fragment大都是在作interpolation,不同的interpolation完成了不同的细节,这就是GPU的精义。GLSL的文档里的东西很多都不支持,mat3(mat4)这一类的constructor不行,>=或者<=这也不行,最让我震惊的事我以前居然不知道的最最幼稚的一个细节,在transform时候vertex是由gl_ObjectViewMatrix而normal是有他的transpose of inverse来transform的,这实在是太有些尴尬了,不知道这个简直就是说一个学习c语言不知道指针一样的令人难以想象。所以shading language里专门有一个gl_NormalMatrix,不然你以为这些人吃饱了撑得?当然我还没有想明白为什么,线性代数又要有一队的证明才能明白。而且GLSL的specification上说得很多都compromise了,比如里面强调gl_pointSize必须要写入否则undefined,可是事实上OpenGL总是有default值得,程序员用得着花时间总是写同样的代码吗?编译器不能代劳吗?既然说一定要写的话,既肯定有default的,不然。。。困死了,早上就犯困。GLSL里面定义的light是一个结构体有一队的field,而知道这个什么咚咚编译器直接用LightPosition。

二月二十六日 阳光灿烂?是啊,这是最暖和的冬天

一不小心过了好几天,其间唯一明白的一件大事就是我看书不求甚解,就是说我只能读的东我原来就懂得东西。不过话说回来了,有谁不是这样的呢?以前在TAV的数学老师说的好,数学家钉钉子会首先在墙上找旧的洞,也就是说基本上我们人类的知识体系都是一种在前人基础上堆积的体系,所以我如果不是用我就的知识来解读我读到的东西那才叫做奇怪呢,或者说我就是天才了,哈哈自己给自己找台阶了。说了一通包袱还没有都出来,这就是学习GPU programming的第一步,我想着一步跨出来之后基本上就进到门里面了,夸张一点来说。其实,最大的问题就是对于工具的依赖,我对于那些所谓的软件包装非常的难以理解,因为对于我来说openGL API是我最容易理解的,而且平常用惯了glut,回到win32的framework变得很陌生了,总之,motion-blur是可以实现的,关键我认为应该要能够正确理解什么数据可以做参数传递给shader和怎样传递,也就是uniform的glUnitform*,我还没有办法测试,下午吧。

顺便看到国内所谓的web2.0的网站要完蛋了,我感到很高兴,活该,什么叫做2.0?按照盖茨先生的说法根本就是炒作,完全不是什么技术名词,只是使用模式。为什么这些人的经营模式和古代的老鸨(老板)养妓女(子女)一个样呢?整天给她们的摇钱树(要钱术)梳妆打扮,花钱培训,全部都是投入根本没有打算马上经营,全部的希望就是既希望于给将来有钱的主一次性买断(号称收购),这样的技院(技术学院)不倒闭才怪。


二月二十七日 阳光灿烂?是啊,夏天就要来了,冬天还会远吗?

计算几何学的第一个作业要写二三十页纸的算法和证明,虽然说每一个小问题都不是什么非常非常难得问题,可是几乎没有什么容易的,因为我这样写也都不是什么很clean的proof。我问教授这样的作业数量会不会太多了一些,教授面露笑容说第二次作业会比较少一些因为你没有还有一个很大的project要进行。我听了信以为真心花怒放了一个星期的spring break都没看书,昨天突然看想起来是不是作业已经公布了,看了一下差点晕倒,第一次作业有九个大题,每个大体有几个小问题,第二次延续了这种风格,减少了一道大题,果然是少了一些,我心里只叫苦啊,连问题都看得很吃力就不要说涉及算法了,这真是一个艰难时刻。

三月七日 阳光灿烂?不知道啊。天已经黑了。

人的生命就是这样度过的,在不知不觉中尼突然发现过去了十天之多,这段无记忆的日子其实对于一个人来说有和没有有什么区别?所以,我常觉得生命对于普通人来说就是记忆与回忆,如果你不记得你又做过什么,那么就当作是你没有存在也没有什么不对的。也许这一段没有记忆的日子的原因是因为WOW,这实在是一个害人的东西,我自己只好自己设置parental-control,一个人活到这份上实在是无可奈何。GPU编程说到底还是小儿科的玩意,因为不懂算法,基本上就是瞎玩瞎试,当然这也常常有惊人之作就好像那些云啊,雾啊之类的。

从现在开始我要振作起来写我的project了,不然就太晚了。不过下个星期就要交作业怎么办?


三月九日 阳光灿烂?好像是的。

computational geometry的算法题目很不容易,我花了一天多时间才刚刚想出来一个简单的题目,这个问题让我想起了graphic里面的古老问题,温故而知新,基本就是怎么判断一个point在polygon内部,原本有一个非常nice的O(n)的算法,计算这个point的射线相交polygon的次数,现在题目怎加了一个条件要求达到O(logn)这就让我想了很久,终于在每天头脑最清醒的20分钟里想明白了,一般这个最清醒地时刻是在我早上蹲马桶的时刻,我常常用这样宝贵的时间想一些有关全球变暖,世界和平之类的大事。总

三月十一日 阳光灿烂?好像是的。

有时候真是觉得生不如死,我最后没有办法只好把parentalcontrol的密码发给朋友请他改掉。今天头脑略微清醒了一点开始做computational geometry的作业,感觉还是痛苦不已,关于furthest voronoi diagram的问题始终没有头绪,高阶的range search tree就更是费脑筋了,nested recursion把人的脑子转了几个圈还是有些不清楚,这还不算是多么难的问题。相比较而言,academic的问题大多数情况下难度是很高的。

CreateFileMapping简直就是惊人的快,我做了一个非常简单的试验,用这个api和普通的readFile作比较都去读一个700M的大文件,结果简直就是可怕,普通的ReadFile读了13到15秒,而这个mapping根本就不需要一个tick,为了验证确实是读到了内存,我还特别拷贝了两段数据作比较来验证。实在是威力无穷。


三月十二日 阳光灿烂?好像是的。

折腾了一个晚上我简直就是一直在诅咒,完全是白吃级的问题!第一个简直是搞笑得问题,我下载了那个著名的发电厂的3D数据模型,它明明是标记的给windows和unix不同的两组文件,可是给windows的和给unix的都是用的big-endian的,我对于此总是很模糊,即便google了pc机用的时little-endian还是将信将疑,始终不认为这会是问题,结果我读到的数据就始终是似是而非,有些正确有些离谱,最后我只好用ultraedit去读ascii码,然后和程序度的数据进行比较,借助calculator的十六进制转换,果然这是TNND的big-endian惹得祸,真是够混蛋的,为什么给windows的还要用big-endian呢?难道他不知道只有mainframe采用big-endian吗?这个著名的发电厂的模型不知道有几千几万人在下载了使用,不知道我时不时唯一的白吃犯这种低级错误。要转成little-endian他倒是有一个现成的工具给出了ply文件的转换器的原码,看来我可能是没有看到原来的说明,真是活该。结果是用这个小小的c的程序的时候又花了一个一个多小时解决另外一个更加白吃的问题,这个绝对是超级的白吃问题,我记得我以前就遇到过这个类似的问题但是绕了过去,在vc6里面编译器是根据文件后追名来选择c还是c++的语法的,我因为讨厌使用iostream带来的一大堆的头文件定义,喜欢用纯c的定义,结果语法有随意地使用c++的格式,比如变量可以在函数之后声明,结果编译器始终报错,我明明就知道这一定是c与c++语法的不同带来的却怎么也找不到原因,甚至期望用using namespace std;来强制编译器使用c++语法但是却不明白我应该不出现错误的文件的后缀名改为cpp,最后还是google到了这个变量必须声明在汉书之前的c的严格语法才解决问题,真是白吃级的问题

三月十三日 阳光灿烂?好像还不是的。

问:教授身体安康?08年台湾大选结果如何预测?大选结果对厦门楼市?

答:你小子不会是在炒楼花吧?
但愿不是,因为我的预言十有八九不准,当然所谓占卜问卦之类信则有不信则无,多半是给自己找理由,所以我就不妨大胆预测。

1。台湾大选依旧是民进党主政,因为我觉得民进党代表了台湾大多数的人民的利益,什么是台湾的大多数人民?不是工商界人士,不是所谓中产的白领阶层,因为台湾远没有美国的富裕,中产不时大多数,台湾的大多数是台湾的农民和小商贩等等的lower
class,虽然不是农业社会但是农民在绝对数量上来说应该是多数,这些人需要民进党,因为国民党是什么?谢长亭说的好:权贵的第二代!

2。厦门的楼市,肯定还是涨啊,为什么?
a)供不应求啊,不是要什么农村城镇化,城市大发展吗?农民进城是必然的社会趋势,当然我这里不是单单再说农民工进城就业的问题,我说的是农村新兴资产阶级进入城市发展的问题,你想想看中国的经济发展一定水平产业资本和金融资本融合就成为一个主流,当初的福建乡下的工商业发展的一个方向就是进入大众城市。当然同样的大中城市资本乡下城镇发展也是一个趋势,这里就不谈了。
b)大中城市的房地产热决不是中央几个行政命令能够改变的,你想想看,政府卖地是越卖越贵,官员只知道用卖地的钱解决眼前的财政问题,绝没有去用这笔钱来发展廉租房,欠下的这个天大的债务要多少年来还?现在的很多房地产商都是在“捂地”,巴不得不要立刻建房,因为房地产的涨势还要维持很多年呢。问题仅仅是投资股票与投资房地产哪一个的回报率更高一些?这个问题我觉得我要做一个研究才敢说,我的研究方法很简单就是我们大家再一次一起玩一遍《大富翁2》看看投资股市和房地产哪一个更加的赚钱。哈哈哈。。。
c)中国的投资环境并不见得越来越好,因为政府的行政成本太高了,比加拿大都高,简单的加工工业肯定越来越没有市场。金融环境也不见得好,银行的呆帐太多了,庞大的现有资本要流向哪里?我估计除了古董艺术品就是房地产与股票市场了。


三月十四日 阳光灿烂?好像还不是的。

: > 哎呀,就是想炒楼呀。
> 教授的答案如果综合考虑在2008年台湾大选之前你说楼市的结果会如何?
>
> 民进主政搞台独 * 土老板进城 * 国内投资环境的衰退 = ??

答: 台湾对大陆的影响日益减小,大陆对台湾的影响日益增大,所以,区区一个台湾省不足为虑,重要的是中国国内自己的环境,总的来说,五年内中国的经济还是会继续快速发展,因为: 1)早几年的所谓政府投资拉动基础建设的惯性还在持续。 2)人民币的升值不会一步到位,外资与热钱还会涌入。 3)国内的剩余资本还是无法找到合适的投资渠道,现在中国到海外投资十之八九是迫不得已与交学费。 4)投机之风日盛,工业资本向金融资本转变是一个资本主义发展阶段性的趋势。 5)老百姓的小康需求还远远未满足,购买力在提高,居者有其屋对很多人来说还是梦想,买房子成为最大的消费。 6)普通老百姓除了这个还有什么可以投资的?

花了一个早上时间在画furthest voronoi diagram,画的很高兴,因为这种工作是计算几何题里面最简单的活了,和写算法与证明来比这种工作要求的智商不超过70,最后五颜六色的很好看还以为自己很有成就的样子,就如同大多数报告写的很漂亮有很多花花绿绿的图表,内容却乏善所呈一样,是一种表面文章。第一问的证明farthest voronoi diagram是convex polygon还是毫无头绪。看看买菜回来以后是否有结果。

临走之前还是先把昨天玩createfilemapping的新的记下来。首先这个咚咚非常的快,使用的时候以一定的限制就是你程序自身的内存上限,和系统的内存限制。当然首先是系统的内存了,基本上我还只有很少的机会会用那些内存4G以上的系统吧,cluster里面是这样,现在还太早了。首先,create的时候那个size是指的从文件开始算起的,以后mapping都不能超过这个上限,哪怕你的偏移量很小也不行,其次,create的时候你有可能就破坏了文件,因为你的mapping如果超过文件大小,文件大小就grow了,我把我无数的下载来从来不看得avi文件就这样一个一个给干掉了。对于同一个mapping的handle你可以反复多次的mapping,因为,不这样unmapping,你的内存迟早会耗光的,另外一个不确定的就是会不会你的mapping不会自动释放,我对于这一点不确定,反正我在debug过程中犯了不少错误,为了防止程序debug中没有释放就写了一个atexit的handle去释放,但是还有另一个办法就是给mapping handle起个名字,这样可以用名字来openMapping,甚至别的进程也可以调用,类似于systemV的interprocess communication的key一样,当然会有冲突的可能。在linux里面的对应的函数叫做mmap。同时在mapping的时候有很多参数可以选择,相当的复杂,以后再慢慢地玩吧。


三月十五日 阳光灿烂?好像还不是的。

看王朔的video确实很有嬉笑怒骂的感觉,虽然话糙可是理不糙,总之,王朔还是我的一个偶像级的人物。

三月十八日 阳光灿烂?好像下雪了。

总算完成了预处理部分,还是有些难度的,尤其debug追踪错误对于一个几百兆的输入文件来说是很困难的,尤其其中错误是一个罕见的动态分配数组的问题。

我时常会想起大学里看的一部科幻片《Hybrid》,大意无非是以危言耸听的方式来说教:我们要警惕我们伟大的科学家不负责任地创造了我们所不了解的噩梦,比如基因工程。骗子里面大概是一群学生和老师过暑假,来得宾客里面有不少是老师的试验成果,比如用各种动物的基因和人合成的人也就是hybrid,由章鱼还有其他鱼之类的,所以,你可以看到一个真正意义上的美人鱼叫做Melisa,也就是美杜沙的姐妹,当最后县原型的时候她的腋下市长着腮的。电影里面这个Melisa总说感到painful,其中原因当然有心理上的异类的原因,生理上的合成人的后遗症,据说她是被教授控制着,不定期服药就要现原型,而那重要毫无疑问的是非常得painful的,还有一个有意思的原因是她也如同鱼一样的睡不着觉,所以,她的台词总是I feel painful.于是我也常常想到这个角色。


三月二十三日 阳光灿烂?怎么可能?

世界上有两种人喜欢说写程序很容易,一种人从来都很少写,另一种人一直都不停地写,大多数人都不会觉得容易,因为,计算机是这个世界上唯一不撒谎骗人的东西,小到一只狗有时候说不定也要逗你一下,我讨厌一切宠物所以我只是猜测,大概如此吧。同时我也更讨厌那些为了掩饰尔说写程序很容易的人,基本上些程序不是敲键盘比赛,也不是完全比赛记忆力,有的人重复些同样的东西然后得意洋洋地说我敲键盘很快,为什么不可以把同样的东西重用呢?除非你是有意为了方便编译器优化才故意把程序写成那个样子,比如把循环拆卸方便寄存器的优化,这实在是高级。

白痴级的问题在计算机里比比皆是,我经常犯这样的错,1-1是否等于1?哈哈,在计算机里应该等于1,因为这是我的白痴问题,我计算一块内存占用几个page,居然犯下如此的错误,特别提出来以警候效,page的offset等于0但是占用的page当然还是1,我以前就老是犯类似的低级错误,不过这种错误和其他的错误混在一起非常得难以发现,比如我发现library的文件读写和系统api的文件读写混用的时候会出现莫名其妙的错误,当然前提是我的CreateFile的handle后来又被用来进行fileMapping了,MSDN上对于mapping后的文件读写有些语焉不详,总之以后使用createFile就不要再用fopen来打开文件了。另一个令人生气的是我今天才知道executable的image是不能超过256M的,还有fileMapping好像也有一个上限,大概是2G吧,这还是可以理解的因为2G是user program的limit,另外一半是系统用的,这一点我早就知道,只是测试的时候发现似乎还有什么别的限制,(不确定),已开始始终认为mapping的次数由限制,现在看来是总的size的限制。特别要小心不要超出createFileMapping的设定的上限,我总是犯这样的低级错误,mapping的时候,起始位置必须是64k的整数倍,但是mapping的size却不是的,所以接下来我的数据结构应该是从page起始位置开始,这样内部我就不用再给每一个octree node计算offset了,就是0了。但是哪个我认为“几乎”不可解决的问题还是在那里,就是vertex和triangle不再临近所造成的一些triangle跨越octree node的问题,这实在是头疼,我想了一天才有一个办法,就是不再仅仅是triangle复制在多个node,包括vertex也要负知道多个node,但是这样一来我等于是vertex排序完时候还要再看triangle的分布情况在复制这样triangle的index又要改变,也就是说我原来的vertex的一一对应的所谓hashtable要变成一个linklist,因为一个vertex可能对应多个index在多个octree node,这样还能不能two-pass处理完实在是难说,现在预处理一次就要一个多小时,这样岂不是要更久了?要么就晚上运行吧。还有一个小问题说出来简直就是编译器relative addressing和absolute addressing的问题,我的数据写在一个个page里,当我load一个个独立的page时候,triangle的index只能是本节点的vertex的index,或者说要写他们的相对的index,因为绝对的index没有用了。还有就是初始化,一定要记住。

现存一个临时版本,准备写一个多线程的loader,同时要模仿某些PLP的算法。

青菜萝卜真的各有所好吗?


三月二十六日 阳光灿烂?怎么可能?

中国人的盲目自大就在于盲目,按照当时唯一一个睁眼看世界的大清国民的说法这应该是一种国民的本性,所谓要么妄自尊大,要么妄自菲薄,不断地从一个自信的巅峰跌到谷底又不断地从谷底找到借以爬到巅峰的所谓证据。在一个皇权至高无上的社会离普通黎民百姓生活就算再怎么苦不堪言还要为皇帝要修建一所气派的王宫而感到自豪,仿佛我们的皇帝在接见外国世界面前几分钟的面子能够定得上自己一年的吃糠咽菜。Carlos发来一片据说是小学生的模仿《新闻联播》似的作文,看上去很cute实际上很悲凉,这仿佛是一个伦理学的问题:皇帝的新装究竟说明骗子高明还是皇帝愚蠢或者还是全体国民的愚蠢?我记得我小时候听这个故事的时候总是在前面两个选择上徘徊,等到今天感到自己已经开始不惑的时候才意识到最后一个选择的可怕,不知道是不是一个人只有看得太多想得太多的时候才开始意识到最可悲的事实,也就是一个种族,一个民族,一种国民的劣根性。

以上的空论也不是没有原因,看凤凰资讯的时事辩论会就明白了,在一个国家连温饱都没有解决的时候雄心勃勃要挑战大飞机的制造,难道中国的崛起就是说要在所有的领域都取代美国?这简直就是头脑发热的幻想,难道发达国家把自己不要的低级制造业转移到中国是亲率之举吗?难道一个连手机芯片都涉及不出来的国家能够造得出大飞机?不是说早不出,而是说能否成功商业化,那种早两弹一星的不计成本的国家投入不适合商业模型的。有时候看这种一体的讨论仿佛一个程序员看牙牙学语的小朋友写了一个helloworld就以为编程序不过如此的感觉,实在是懒得议论了。

ppstream上在播放《斯巴达三百勇士》仿佛是在某种程度上给国际时事作背书,究竟布什的伊拉克战争是不是一场新的圣战,究竟美国国会里有没有议员接受伊朗的铜币,究竟布什处心积虑不择手段地发动战争是不是要救世界于水火之中,这些仿佛都是一些没有答案的问题。不过但从CG的角度来看还是很值得一观的,仿佛是advanced rendering and animation课程里的NPR,就是non-photorealistic-rendering,很多的颜色和光影效果很明显的不真实,完全是刻意地模仿漫画效果,在这一点上很成功的,很多的theme让人联想起《gladiator》的场景,这不能不说是一点点地不足,不是说不刻意模仿,而且个人还是很喜欢很多麦田里的镜头,但是让人觉得导演的想象力的不足,但是从总体上来说,东方文化沉积太重的人大都不懂得欣赏,仿佛有人评论说《极品飞车》里的西方性感女郎不如东方娇小女孩来的可爱一样让我受不了,这应该完全是所谓“习惯称为标准”的误区,这一类缺乏逻辑支持的结论就和Dr.M评论NPR类似:缺乏坚实的理论基础越来越沦为artist的玩物。究竟邪恶的波斯蒂国是否应该被消灭应该不只是布什一个人应该考虑的,作为一个被宗教狂人所支配的危险国家如果没有美国这样的正义捍卫者,世界不知道要沦为怎样地混乱,所谓中国的崛起就仿佛是说一头山羊有一天学会了用羊角战胜豺狼一样令人难以置信,世界不需要一极,但是不能没有支配的一极,除了美国还没有一个国家能够担当这个职责。不论从哪个角度来看这都是以不知的收藏的电影,我决定2009年的时候当它的DVD价格降到10块钱左右的时候购买,哈哈这两年的娱乐开支都已经透支了。据我所知,我周围的人都不大懂得欣赏,对于国内的所谓垃圾《黄金甲》津津乐道,简直让我笑破肚皮,那种充满红黄庸俗色调的主体仿佛国内山西煤矿住暴发户刚刚争到第一桶金不知道该玩什么一般。再者说从CG的角度来看也是非常的初级,所以我只是迅速地看了几个镜头就准备删除,事后才想起来是给别人下载的。


三月二十七日 阳光灿烂?怎么可能?

VC++6的template的毛病实在是比较的多,比如在switch-case之间是不能声明变量的,尤其要小心的时使用template函数的时候便一起好像忘记了你的template type variable,报出来的错误比较的莫名其妙,仿佛已经instantiate了回过头来问你:喂,你给我的类型参数是什么?我忘了。比较的搞笑,当然我的代价就是有将近半个小时不知所云。

看到网络上的少林寺烧香要6000元,我觉得一点都不奇怪,只有在发展中国家宗教才会被这么多的老百姓所笃信,因为别无可求,也正因为如此人民才会如此地被宗教蒙蔽。大多数发达国家并非劳动人民完全排斥宗教,而是说大多数人都把它当作一种个人爱好一样宽容,不去那么执著,同样宗教也不敢过分地如同开黑店一样。我去云南旅游的时候这种事情就遇到过,导游啦你去一个什么狗屁庙里面,然后清楚一个所谓的“高僧”,这小子也会察言观色,看来可是布什拖家带属,年龄气质是不是有中年事业小成的样子,然后斟酌着给你开列“购买清单”,比如又让你买香的,又让你开光的,价格不一,随机应变,当然这之前都是要发给你一张小纸贴,但凡在中国社会混过得都应该知道这和导游带你去购物商店里的回扣标志是一回事,我很多年前第一次去香港的时候被那些本地导游带到珠宝店还以为真的就是他们说的安全标志呢。小我这种无产无业的穷人小和尚们也奈何不了我,最多就是想讹诈我几个香钱,我转身就把那些个条子撕掉,我想这种无名的小庙还不太敢欺负人,碰上少林寺这种地方一个愿打一个愿挨,不宰白不宰,反正愿意去的都是准备扔钱的,不多要点我都觉得冤,问题是这样的所谓宗教还是照样有人相信。我给“耶和华见证会”的老太太们谈我对宗教的看法,我讨厌伊斯兰教,因为这真的是一个暴力的宗教,一手拿古兰经一手拿剑逼着你相信,不相信就一剑刺过来;我也讨厌佛教,不仅仅是这个组织的功利色彩,更主要的他仿佛是保险经纪,连哄带片就是要让你交钱,给了钱就说你不用下地狱,否则不出钱出了事情都是你自己的错,什么叫做破财消灾?这仿佛是我经常举例的那个经典的概率笑话,一个人认为同是有两个人不约而同地劫持飞机的可能性几乎为零,于是他坐飞机的时候就总是自己在手提箱里放一个炸弹做准备劫持飞机状,以为这样可以把被劫持的几率降为零,天知道很多受过所谓高等教育的人和无知的文盲没有什么两样。

我几乎可以肯定发现了一个编译器的bug,比如deque<int>::iterator it=myqueue.begin; 这个错误应该在任何地方都发现的,可是在for循环的初始化部分居然不做检查,不知道是怎么通过的,身不知鬼不觉地我的程序走向无穷。花了一个上午多的时间把我的旧的convex hull改造成使用STL,不知道我这么做是否值得,有时候我觉得我现在变得非常的执著,容不得一点点地不同。

一个人不可能两次踏进同一条河流,我却屡屡掉进同样的错误泥塘,我是不是就不算人了?简直是白吃的问题,文件的大小当然可以超过4G但并不等于文件的专用type:__off_t就应该是64位的。事实上windows的long和int是一样的32bit,和linux的long long对应的时__int64,这个我去年在学组和算法的时候已经犯过一次这样的错误了,现在有时这样,记住了LARGE_INTEGER是一个union专门用来算32位高位和32位低位的64位整数,自己用shift毕竟有些罗嗦。Linux device driver编程的时候环境设置其实很简单,因为uname -r会给你当前用的source的版本名字,用这个在/lib/modules/路径下有时现存在那里的source和这个一致的,然后在这里有一个symbolic link叫做build就是指向真正的source file路径的,所以在那里你当然可以用/linux/init.h and module.h这连个文件里的定义基本上就明白怎么做了。只是那个小孩提到linux2.4版本要求module的函数必须定义为static的这一点我表示怀疑。不过进入这一步之后kernelprogramming不会有太复杂的地方,只不过有时候copy到用户的时候居然要用copy_to_user之类的,还有就是多线程重进入函数的问题,不过我想不会比在win98下写汇编程序复杂多少,总之没时间去玩了,就当作自己和白吃教授一样武断地说很容易吧。比较好笑的是我本来居然还怕出错一个链表的查询与添加居然用了两次,算是比较的白吃问题。


三月二十九日 阳光灿烂?当然了。

还是白吃级的问题,两个32位的整数相乘是不可能等于64位的整数的,这是连一年级的小学生都知道的,我居然会很模糊,LARGE_INTEGER应该是可以的,但是前提是你赋值的是一个64位的正确的数,其使用union和你自己做chop&shift有什么区别呢?另一个白吃级的问题使用openGL我把glOrtho2d的-x,x参数为之搞反了,结果坐标变得非常离奇古怪,简直把我给逼疯了,我向世界上很少有我这样的错误吧,最难得的时我做的convexhull,结果还的的确确是convexhull,只不过是类似于镜像,当然我不去对坐标是感觉不出来的。

还有一个白吃级的问题是我居然完全忘记了课堂上教的Minkwaski sum结果把它当成了symmetric difference写信去问教授,这实在是让我无地自容,我不知道班机上有没有另外一个会犯这样的愚蠢的错误。


三月三十日 阳光灿烂?当然了。

凤凰资讯转播《讨论到天亮》是有关中日之间的一次大碰撞,这样难道不好吗?实际上,很少有中国人这样认真地看待两个国家之间的关系的。

我现在看到ICE居然会处变不惊,checkin source safe,从容自若地去实验室改正我的out-of-core-rendering的最后一个bug,然后买了十个肉包子回来吃,睡了一会儿,心情镇定,举重若轻地在google的搜索栏里敲下了"Internal Compiler Error",然后轻描淡写地把一个三级嵌套的static data member的初始化取出掉后,轻而易举地化简了那个穷凶极恶的ICE,我是不是已经快要出神入化了?什么你还不知道ICE?那么你肯定没有玩c++超过三年到五年的经历,或者你太滥了,说错了,是太懒了,像我一样。

我真的饿了,快半夜了我都已经忘记吃饭了,阿伟大来电话我才想起了肚子很饿。我这中间做出了一个痛苦的决定,放弃DCEL,因为他真的对我没有多大帮助,而且实现起来有些问题,不是说指针编程有多么困难,主要是我对预算法不很清楚,我的应用和书本上的算法有出入,同时,使用STL对我来说更容易,并且程序的效率不是主要的因素,复制数据要远比复制指针来的简单,安全。更主要的因素还是时间,Unfortunately time is always against me。吃个pizza,喝杯红酒,不知道今晚能不能完成一个大框架,时间实在是不多了!!!

困死了,总算成功了一部分,明早再改bug吧。


四月二日 阳光灿烂?哈哈,下大雨了。

令人激动地日子过去了生活又变得索然无味,这让我才深深体会到柯南道尔笔下的福尔莫斯的痛苦,在伦敦这个犯罪之都出现偶尔难得的平静的时候,这位犯罪学专家难以忍耐的无所事事的平永生货币的他不得不用吗啡来麻醉自己的神经,当然我只不过是继续我的愚蠢的WOW。有时候我也觉得把computational geometry的算法说给对此无概念的人有一点点跑媚眼给瞎子看的感觉,包括我自己以前看到这些三角形之类的东西会觉得这个有什么特别吗?这个世界上的绝大多数人对于不了解的事物或者把它想象的无比复杂又所谓的高不可攀的感觉,或者不以为然认为很简单,正是所谓的数学上证明两个集合相等的绝妙写真。所谓数学上的证明x=3时这样的,对于x这个未知数我们首先证明x>=3也就是说这个东西绝对比我们目前已知的一个冬冬,比如说数字3来的复杂,来的大;然后我们在证明x<=3也就是说这个未知数x并不比我们所熟悉的数字3来得更加的复杂,更加的大。然后我们去伪存真是地判断说既然这个未知数并不比3来的大也不比3来的小,那么它当然就是3了,难道不是吗?这个世界上所谓的常人所说的误解与错误认识无非是对于一个概念的外延与内涵的不统一,或者把一个概念的外延不适当的扩大了,或者缩小了,只有整整好的一致才算真正的认识。

实际上,我还有一个比project更令人头疼的作业没有完成,computational geometry的作业绝对是我所难以完成的,一个算法题想了一两天也没有头绪,一个证明有一点点地眉目以为有结果了,可是一些下来发现其实不对,所谓Q.E.D.并非那么容易写。突然又想到了我的octree想到了一个问题就是我预处理的leaf-node的邻居实际上并非都是leaf-node,本来想改掉后来又发现不行因为我设定了最多的邻居只有26个,只能在运行期再去搜寻了,当然这会慢那么一点点,可是没有办法呀。糟糕的事我现在看我一个星期前的代码已经全然忘记了,发现了一些全局变量非常的危险,因为如果我一旦命名上有些模糊我自己都会搞错的,这就是软件工程的困局,人的记忆力是那么的有限,对于程序代码的记忆就更加的困难了。当然没有人主张记忆代码可是你能保证你每次看到同样的代码会做同样的判断吗?


四月三日 阳光灿烂?哈哈,阴天。

Linux下的编译device driver的make文件时这样的,你会在/lib/modules/下找到一个源代码的目录,好像也是一个symbol link,但是有可能这里有不同的源代码,比如smp和。。。所以,用系统的shell uname -r可以获得当前的源码的名字,也就是这个目录的名字,然后在源代码的目录里面的/linux/下可以找到真正用于编译module的Makefile,所以你的makefile就是要去call这个真正的makefile当然你的module源码可能还是在你的pwd,所以,在pwd会生成一个wrapper的"源码文件名.mod.c",这个都不重要,重要的事最后的module的可执行码的文件名是“源码.ko”,你然后可以用系统的shell命令insmod xx.ko来install你的module。但是,在Xwindow下你看不到输出结果,所以你要用ctl+alt+F6来开一个console来执行,察看module的命令是lsmod,remove module的命令是rmmod name,但是这并不代表module已经注册为driver了,你要去自己注册,据说是register_chrdev这个返回一个major number,然后你可以向使用普通文件一样在/dev/下创建你自己的device,使用mknod /dev/name -c major minor,不过疑问是minor number起什么作用,没有自己玩过还是不知道,不过实在是没有精力来玩这些有意思的东西了。中午项增加一个“数目数”的函数,不过发现不适几分钟就能解决的问题就放弃了,也没有时间来检查“打劫”和“提劫”的问题了,这些超过了算法几何的范畴了。晚上要考试了,心里实在是没有底,听天由命吧。

四月四日 阳光灿烂?哈哈,阴天。

一个人有了什么期盼,自然就有了失落,仿佛冥冥之中早有决定,我甚至早就为自己找好了台阶,反正不会成功,索性连尝试都省略了。一个人的想法其实是非常的不准确的,set的查找不适合于range-search,至少查询point在triangle内不适合,最多能有一个上界而已,而我本来还把这个作为我的选择的理由,O(logn)是不对的,没有去试验实在是不能下结论。就此为止吧,TrianGO gogogo!

四月五日 阳光灿烂?昨晚下起了鹅毛大雪。

我觉得我现在还太沉不住气了,有些小事情还会睡不着,仿佛80年代的小孩子,有些幼稚可笑,无端端的幻想,心跳得太快浪费了很多能量,缩短很多小时的生命,太不值得了。

真是没用!仿佛九方皋相马把马的公母搞错一半,我想一般人都不会犯的错误。。。我想我需要的是睡眠,为什么总是在这个时候想起那个叫Melisa的美人鱼。


四月六日 阳光灿烂?昨晚下起了鹅毛大雪。

狐狸看着葡萄架上的葡萄说,葡萄太酸了,我的牙受不了。linux-device-driver如果需要让多个用户使用应该每一个进程或者open都有自己的file-pointer。

四月七日 阳光灿烂?昨晚下起了鹅毛大雪吗?

形势不适很好,我的预处理文件可能有很大的bug,需要在测试,这实在是有些像灾难,奋战!!!看到Becky的Edinburg的照片有一点点感触,因为在大英帝国全盛的时候装备的大炮其实和我在厦门海边看到的大清帝国部署的大炮完全没有两样,这说明什么?说明洋务运动可能比现在的共产党引进工作还要好一些,因为当时的确是引进了最先进的武器装备,比如北洋舰队的铁甲船是当时全亚洲最先进的,厦门以及清帝国全部的海防要地的岸防炮也是当时最先进的,可是结果呢?武器的确不是战争胜利的唯一保障,我很难想象今天的PLA不是如同当年的八旗兵一样的腐败,因为腐败并不分文武,正如《说岳全传》里面所谓的“文官爱财,武将怕死”,听说现在解放军所谓的高级干部下基层都不大敢坐直升机,因为不安全,如果一个带兵的人把自己降级到还不如平民阶层这个军队的确是岌岌可危,我敢说中日一旦开战结局可能比甲午海战还要惨烈。所以及早和日本讲和也是迫不得已的,中日之间的冲突的可能性远远大于中美之间,至于台湾只不过是一只会狂吠的哈巴狗而已,不大可能有什么真的作为。所以中日之间如果不在东海油气田有什么实际的让步未来很可能会有一场海上冲突,然后日本右翼借此机会重新武装自卫队争取成为所谓“正常国家”,如果任何一个有头脑的政治家看不到这张路线图那才叫“迂腐”。所谓冲突有时候并非可以避免,相反战争倒是有可能避免,因为国家之间的较量不需要你死我活一般的战争,比如英国和阿根廷之间的马岛战争,点到即止,中日之间的战争冲突应该是这样一种模式。

没有地方存文件了,就把TrianGO的slides放在这里吧

锐气挫钝是否要修整再战?只要我能够在两天之内拿下这个战役的胜利,就可以奠定全局的胜利!决定以牺牲两百万个脑细胞的代价争取在两天之内解决战斗,在第三天的白天写demo的slides。今天晚上发起外围战斗用bunny来做测试,明天发起总攻。在斯巴达的法律中士兵是不允许撤退和投降的!


四月八日 阳光灿烂?好像不是吧,依稀记得天上飘着很细小的雪粒子。

提前完成任务,连我自己也不相信我居然现在可以一次fix bug,这个bug有些教训在里面,我做了一个extensible hashtable,因为一个vertex的index可能会对应于多个index在多个octree node里面,因为1。一个vertex必须要复制到不同的octree node如果他所在的三角形跨越多个octree node的话,因为我的loader不会load所有的octree node的vertex到内存里,所以如果要显示那些三角形只能复制冗余数据;2。为什么index会不同,我已经强调过了,只有相对偏移的index才有意义如果独立的octree node的数据被load的话,因为数据是以单个octreenode为单位的,好像编译器里面的相对地址一样。所以,一个vertex对应于多个不同的index时候,我需要快速转换查找,所以做了一个简单的hashtable,每个hashtable的元素是一个链表,(当然这个hashtable仅仅是proprocessing的时候用的),一个教训就是不要急着把你的index转换,在中间过程尽量使用最原始的数据,因为我们有了hashtable可以随时转换,我就是在转的过程不一致导致了index混乱了,哈哈比较的难以查找,我已开始都有一点点不敢相信能够被我一次性的搞定,毕竟程序的逻辑有些复杂,尤其我比较记忆犹新的是文件的偏移超过signed int的范围的bug让我照得好辛苦,另外一个白痴级的问题是openGL里面所有的东西都有default,比如frustum volume也是一样。也许明天还可以把场景扩大一倍,但是现在保存一个版本还是比较好的,毕竟source-safe用的不是很熟练。out-of-core-rendering。

从故纸堆里挖掘出了我的GPUprogramming的作业,不保存一个版本以后说不定就永远忘了放在哪里了。


四月九日 阳光灿烂?没有大太阳。

挖呀挖,挖出了我一个快要被遗忘的project这是图形课的,当时由于种种原因没有把它贴出来,最近作outofcore-rendering的时候需要一个飞行控制才把它想起来,其实这是一个非常成功的作品,只是我不占主导地位就被打入了冷宫,这是不是太自私了?我对于我负责的飞行控制与射击,碰撞检测部分还是很自豪的。但是数据文件太大了,报告里面也是很多的图片,所以要看到完整的部分就只能去这里下载了

四月十一日 阳光灿烂!为什么我知道?因为下午的阳光从窗玻璃反射到我的脸上。

下午一觉醒来觉得很幸福因为阳光照得室内通明,我可爱的音箱里放着梁咏祺带着磁性的歌声。生活仿佛很美好,我甚至觉得这就是天堂里的又一天,为什么不是呢?一个人整天除了为柴米油盐发愁,为世界气候变暖担心,为中日再战担忧,为世界局势的变迁而困扰之外再没有什么烦恼难道不是很幸福的人吗?《追捕》里面很经典的台词就是一个白痴就是在幸福地生活着,(这是我杜撰)总之,我也不知道为什么有那么多的人为了吃饭而发愁,他们为什么不吃肉糜呢?这些人真笨。

四月十二日 阳光灿烂?下雨了。

真是白痴级的问题!一个简单的view-frustum-culling的算法我用得着用那些RG从网上download的代码呢?那些误人子弟的垃圾代码真是够混蛋的,当然谁让我偷懒呢!其实这个问题是无比的简单!第一,openGL的modelview,projection matrix和起来就是对每一个vertex的linear-transformation,最后这个点必须落在一个-1,1的空间,所以,很简单地你就去算是否这个点的最终位置是否在[-1,1]区间内。所以,优化的算法就是用那些vector去计算。今天又解决了另一个白痴级的问题,任何学过graphic的都知道BSP,可是当初我就没有搞懂究竟要怎样去按照painter's algorithm来画,现在明白了其实很简单,BSP并不是包打天下的实现定下顺序,因为这和眼睛的位置有关你怎么可能预测呢?所以每一次都要用当前的线段和眼睛的位置作比较,所谓线段的front,back根本就是为了数据结构来用的,和顺序无关。

春天来了,窗外淅淅沥沥地下着小雨,日记里也刚刚把雨写了下来,突然之间天窗上滴滴答答的雨声停了,天空飘起了鹅毛大雪,海鸥在浓密的大雪片里艰难地翱翔,气温很高,让人怀疑是不是夏天已经到了。是啊,春天来了,冬天还会远吗?

当Dr.M问我octree的leafnode太大的话有什么问题时候我并没有意识到它的用意,现在才明白他也许故意不像点醒我或者当时没有时间向我解释,总之我花了快一天时间才发现了这个不算是非常白痴的问题,首先我认为我是不太可能第一时间意识到的,所谓view-frustum-culling只有当你的box比view-volume要小很多的时候才行,否则你的box都可以包含view-volume会怎么样呢?其次网上那些所谓game-tutorial的范例code都有毛病,就是没有考虑floating-point-error,这是程序员的通病,包括我到现在也很难养成习惯考虑大整数的问题,现在的数量大约是12M的triangle,将来要用int64又要改,啊,饿死了,不管了。

最近觉得我的视野又有所提高吧,经常有种玩得就是心跳的感觉,那是因为不时的游走在系统的边缘的缘故,这常常需要完全不同的考虑。哈哈。。。自夸自擂一下。


四月十三日 阳光灿烂?做梦呢。

这个问题实在是有些不值一提,我观察到我的depth-func好像不起作用,怎么跳时都不对,后来在我每天最清醒地二十分钟的沉思中想到了使我试验的时候把far-plane,near-plane调到非常大和非常小由此产生了浮点数的错误。DR.M题是我使用Cohen-Sutherland的3D算法来解决boundingBox太大的问题,现在看来似乎不是那么急迫了因为那个原始的view-frustum-culling之所以当初不起作用是因为浮点数计算错误的问题,现在的error-rate似乎不是非常大吧。

四月十五日 阳光灿烂?做梦呢。

肚子饿了,总算完成了

四月十六日 阳光灿烂?好像又下雪了,是昨晚下的吧。

The configure file name is: server-config.wsdd and just add a parameter called: "scope" value "application".

改作业实在是很烦人的事情,尤其是读那些document,我感觉读code有时候还省些事情,至少容易懂一些。当然抱着学习的态度还是会有很多收获的,比如你可以学到很多关于webservice的冬冬,尽管我对于这个毫无兴趣。

我一直以来都认为欧洲人不大会拍电影,似乎除了好莱坞别的国家都没有电影特技,不过<Pan's Labyrnith>也许有一些值得注意的地方。电影的语言我至今不清楚,好像是西班牙语吧,是有一些超现实主义,大概是一个政府军上尉的可爱的女儿的故事,这是一个钟情神话的小精灵,现实实在是太残酷了,他的父亲是一个对待反抗组织毫不留情的残忍的军官,Too much blood has been spilled so easily. 而他的女儿在幻想与现实间的徘徊,当然那个所谓的天国国王的小女儿的砖石投胎只不过是为了让过于血腥的线是有些美好的幻想而已,也当然是为了最后悲剧的结局有一个幻想的圆满而已。小女孩一步步地找回返回天国的道路和他的父亲一步步地追杀革命党人士故事的两个平行的线索,有很多镜头实在是让人非常地震撼,比如树精的造型,帕金充满甲虫的树洞和大蟾蜍的交谈,最后大蟾蜍突出一个硕大的粘粘的液体球上面粘着钥匙,找好像是小公主的第一个拯救枯死树木的任务并取回打开密柜的钥匙,实际上当然是隐喻自然界的生物并不像人类一样彼此杀戮。第二个任务是从恶魔的盛筵旁的小鬼子里面取回神圣匕首,需要用到第一个任务里的金钥匙,那个无眼恶魔专吃婴儿,两个眼珠平常好像假牙一样收藏在盘子里,要用的时候再装在手掌心里,也许这是说战争中最大的受害者是儿童吧,听上去像是大赦国际的口吻。最后一个任务是Innocent Blood,要用第二个任务里拿到的金色匕首来祭祀小精灵的弟弟的,她弟弟的血就是InnocentBlood最后她不忍心用弟弟的血结果被随后赶来的她的父亲开枪打死,于是InnocentBlood就成了她自己的血,任务完成了小公主重新回到了天国功德圆满,其实有谁会信这一套鬼话呢?事实上整个电影中现实中她的父亲亲手杀死的革命党人不计其数,很多镜头要比怪诞的鬼怪造型更加让人可怖,比如她的母亲为了保护小公主把她的父亲嘴角割裂,他的父亲对着镜子自己用针线来缝伤口,以前看<Terminator>使机器人自己把眼珠子抠出来因为是机器人不觉得什么,现在看真人这样做实在是很难忍受。导演的主题是反对战争反对杀戮采用这样超现实的怪诞手法表现自己的感受吧当然主题很简单,大概就两三句话而已,This is a cruel world. There is no magic in this world for you or me or anybody else.

I still don't understand why mutex and thread behaves like this.


四月十七日 人间四月芳菲尽,蒙特利尔雪正急。

Now I see...

这个问题应该不算是非常白吃的问题吧,应该是理解力的问题,人这种动物常常以为自己看到的就是自己明白的,自己读过的就是自己了解的,至少我是这样的,如果我还没有被开除人籍的话,反正中国籍是被开除了,使我自己开除的,应为那个封建专制家买办官僚资本主义社会给我的全部印象就是人压迫人,人剥削人,人吃人。。。回到线程与mutex的议题,一个线程,(不论是主线程还是什么线程)在创建“匿名”mutex的时候可以声明所有权,这句话我读了n多边仿佛跟没有读一样,这就是一个人白吃的地方,什么叫做所有权?无非就是你已经免费不需要再用WaitForSingleObject的一样,同时MS善解人意的地方就是所有者可以连续再次wait这个本来设计的目的是线程自己不会自己死锁,因为你已经有了还想要,要了还想要,要了还想要,要了。。。够了!你有了就不可能有第二个,这就是mutex,如果你还想要,如果没有特别机制就会死(锁),其实,如果MS没有这个可人的设计我会第一时间发现我白吃的地方,但是为什么MS要这样用对待白吃的方法对待准白吃的程序员呢?结果准白吃的人还是犯了和白吃一样的错误,其结果和白吃一样,所以。。。总之这个问题实在是太初级了,我都不好意思用英文解释,否则丢人就丢了我现在祖国的人了,还是丢以前祖国的人比较好。总之要么创建者没有所有权大家一样在同一起跑线,要么你这个拥有者先得了,就是mutex已经non-signal了,这时候你不先release还要再去wait等于wait-counter有多加了一个别人当然永远都得不到,wait之后的release仿佛大贪官说我要还政于民一样无耻的欺骗。

读MSDN才明白我以前化了很多时间做的都是标准的东西,比如RunLengthEncoding应该使用现成的库来做,不是说自己做不好,因为也不是特别复杂,BC的地方时不在本机调试测试却跑到cluster上浪费精力,这就是BC。

在这个世界上只有两种人,一种人玩程序,另一种人被程序玩。如果你喜欢比较粗俗的说法可以向王朔对待文学的态度一样把这个“玩”字换成你喜欢的动词,比如“操”,“程序”换成文学。

很惊险的一幕!我用partitionMagic7区增加一个partition,不小心让他改正了所谓的磁盘文件,因为他说的信誓旦旦我就相信了,结果可能是把Fedora的双操作系统的启动文件破坏了,结果我一个操作系统也进不了了,先尝试恢复Fedora,它比较笨,不答应,后来尝试windowsXP,结果说是找到了旧的windows目录要覆盖,吓得我赶紧退出,正不知所措之际,居然重新启动就回来了,大概是把那个原本的最早的windows的loadstrap恢复了吧。总之那种古老的磁盘工具是千万不要再用了,太可怕了。


四月十八日 人间四月芳菲尽,蒙特利尔花不开。

美国这个社会就是世界的橱窗,VT的枪击案当然是一个惨案,不过仅仅是因为发生在美国的大学里就吸引了全世界的眼光,可是整个星球上无时无刻不在发生着笔者还要多得多,严重得多的惨案,比如据说巴格达今天又死了大约三四百人。以前看到国内网络上说德国人,日本人在丢弃罐头盒之前要清洗,对此国人非常的惊诧于羡慕,其实我现在也是这样,原因很简单说穿了一点不奇怪,这里每个星期只有一天才是回收recycle的,你要自己把这些瓶瓶罐罐纸盒子之类的方在一个大的回收袋里面,如果你不洗干净方一个星期在家里你再看看。这件是很难吗?关键是很多的配套制度,关键是一个社会已经富裕到了每个人天天发愁吃什么的时候,我并不是说我有多富,恰恰相反我是赤贫,可是基本的生活保障已经让我有每天吃什么的烦恼了,当然那些说美国人天天吃垃圾食品的国人也是误会了,因为只有穷人和上班族没时间才没办法吃那些东西,真正有时间有钱的人才不会向国内那样崇拜洋快餐呢。我有时间可是没有钱所以也不吃那些东西。

搞了一个上午才参照着同学们的作业做了一个最简单的mutex,可使用signal做测试的时候发现那个sigaction用的还是不对,还不是safe-signal因为semop会被signal打断,因该在那里屏蔽呢?吃完午饭我就什么都不想干了,这就是human,就凭这一点我就配被称作一个人。

VC6在头文件里面定义的类的成员函数的实现在class的prototype里面时不承认的,这个可能和原来的模板类的问题是一样的。

一般的腐儒又会跳出来倡导在美国社会禁枪,这简直就是天方夜谭,完全是天真幼稚可笑,两亿支枪怎么禁?禁来禁去只会让善良的人更加得没有安全感,伊拉克是不是比美国更应该禁枪?可能吗?


四月十九日 人间四月芳菲尽,蒙特利尔花不开。

我原本认为IPC的key不能冲突,现在看来同样的key对于shm或者sem等不同的对象是可以的,也许就是说不同的IPC类别是不同的队列或者数组吧,因为所谓的id都是类似于file-descriptor之类的index。另一个有意思的发现就是我原来对于semop的操作认识错误,对于正数值,semop总是通过,对于0除非是0否则不通过,对于负数除非相减的结果大于0否则不通过。dreamworks出品必属精品,《硫磺岛家书》还是一部非常不错的电影的,美国人似乎从来就不像中国人一样担心什么人本军国主义死灰复燃,当然这句话是不对的,因为美国人驻扎着军队在日本,应该说美国人比谁都担心吧,不过美国人并不怕因为他们有能力打败日本,只是不希望这么做,中国人的步子心才导致对于日本的恐惧,实际上现在的中国仇恨日本只是内心的恐惧,因为自愧弗如的感觉,一个领土这么小完全无资源得到过能够这么的强大是世界上所有国民都为之敬畏的。

你知道为什么这样的code不对呢?对于semop传入一个sembuf的数组,对于同一个semaphore采用两个动作,一个是0,另一个是-1,这样的code在做什么?是一个pass-and-setback就是说这个是没有用的,因为你不应该把两个动作同时作,你要分别做才能有critical-section,而且,这连个动作的先后顺序决定了是否通过,比如0在前,-1在后就死锁,-1在前0在后总是可以在"release"的一刹那通过。这个问题实在是太不好解释了。总之那些小孩从网上下在这样的code是自欺欺人的。


四月二十日 人间四月芳菲尽,蒙特利尔花不开。

花了好几天时间重新安装Linux目的只有一个就是mount一个fat32的分区以便windows-linux共享,/etc/fstat的配置如下:/dev/hda6\t\t/mnt/exchange\t\tumask=000\t0 0如果你要立即就看到那么就mount /mnt/exchange,当然我assume你已经用windows下工具创建了hda6的fat32partition。找到一片古老的论文关于大meshdata的问题的,觉得我的方法不见得没有可取之处,也许我可以试着写一篇论文什么的?

关于VT惨案我看到很多评论觉得很可笑,因为很多人听到说枪手是韩国人不是当初报道的中国留学生顿时松了一口气,这有必要吗?难道说美国主流社会会这样是非不分地把这件事和一个国家联系起来吗?这是不是以小人之心度君子之腹?难道大家不明白这只不过是一个个例,他个人的问题?难道中国没有精神分裂,没有妄想狂?难道大家不知道中国的残障人口世界第一吗?难道留美学生人人都是心理正常的吗?


四月二十二日 人间四月芳菲尽,蒙特利尔花不开。

乾坤一跃,蒙特利尔一下子从冬天跳进了夏天。现在就是这里的黄金季节。昨天终于把积压了两个月的衣服送到洗衣房了,因为我最后一双干净袜子就在我的脚上了,凭长廊像普通人一样浪费了无数的时间从来没有心疼过,结果在洗衣房的一个小时却要装模作样带一本书去看,带什么书呢?这是一个颇费思量的问题,最后选了一本这个学期几乎没有怎么看的教材《realtime rendering》仿佛是对于一个行将入土地人的最后的追忆,因为我几乎很少再翻我的课本除非遇到了问题,结果我的一个重大发现就是,图形里的任何算法对于我的催眠效果都要好过任何牌子的法国红葡萄酒以及任何无聊的游戏或者电影,以后如果我想睡觉的话就翻一翻我的课本吧。今天为了夏天的到来决定去买一双新跑鞋来鼓励运动,挑了一双最便宜的Nike,原因是NIKE至少可以穿上三年以上,所以80刀还是划算的,再者说了这个价钱和国内是一样的。顺便又买了一袋子日本大米,中国产的大米就是不如日本的好吃。

Ignorance is power! 无知者无畏!你懂得越多你就越不知所措,Knowledge is power!有时候也是对的,可是那都是对于那些真正懂得运用知识的人,也就是真正理解知识的人而言的,所以从概率上讲绝大多数情况还是无知的多,一星半点的知识反而害了你。所以无知者无畏。终于下载了一个paragon-partition-management把我那台电脑分区成功了,现在linux与window共享一个fat32的分区,接下来要用nfs来共享linux文件系统,同时试验是否那个licence可以在linux下使用,但愿成功,否则我也不知道怎么办了。


四月二十三日 人间四月芳菲尽,蒙特利尔花不开。

勤奋是一个人成功的最大保证,我最缺乏的就是这个,从高中毕业以后我就怕辛苦,总是偷懒直到今天也是一样,不论下了多大的决心去读paper,最后总是不了了之。《古钿任三郎》里最漂亮的女杀手是那个牙科医生,也可以说是最有日本女人优雅气质的了,最令人称赞的应该是那个插花学校校长了,长的不算很漂亮但是最有味道,使头脑与意志的完美结合,据说也是观众评选的最佳杀手。

想要自己编译一个现成的jpeg的苦却折腾了快一天实在是白吃级的错误,其中的macro屏蔽了一部分函数我却总以为是自己什么地方搞错了。


四月二十五日 人间四月芳菲尽,蒙特利尔花不开。

花了两三天时间作了一大堆无用功,因为我想玩一下jpeg,所以满世界地找带源码的库,很是出乎我的意料,很难找到,现在才明白jpeg是由专利的,大体上只有这么几种可用的。1。IJG也就是一个类似开源的组织,有源码,但是很不好用因为只能转为文件,我后来想原因是这样的,这个东西很早就出来了,那个时候内存太小只有文件到文件。2。据说intel有一些库可以下载,好不容易才找到,看了一下应该也是从IJG改过来的,所以以前下载没限制,现在改进的就有可能要收钱了,至少给你的原文件总是丢三落四的。3。windows的oleloadpicture可以以流的形式load然后依靠句柄在windows的client-area来画,这个方式我不是特别感兴趣,应为你要用到太多的windows机制。4。CxImage是一个意大利人写的库,实际上我猜想就是把IJG改造成C++用泪来包装,当然这个工作并不容易,因为如果要写的通用是非常不简单的,我在编译dll的时候总是遇到这样那样的macro的问题,现在学了一招,如果要看某个macro是否被define了,就在那里故意声明一个#error。总的来说这个库是你能找到的有源码的最好用的了,但是我觉得还是不方便,IJG虽然也可以编译但是只能是简单的文件到文件。不过我却找不到bmp的数据指针,看来有时被包起来了,折腾了一天最后竟然又回到了bmp,最后发现还是只有glaux这个库可以用,因为从bit转为byte-RGB也是一件啰嗦的事情。所以简论就是白白浪费时间,对了drawpixels的时候要急得先lgPixelStore我也不知道为什么要把unpack的alignment设定为1,反正work。

四月二十六日 人间四月芳菲尽,蒙特利尔花不开。

下载了Carpenter的经典专辑来听,很是怀念从前读大学的岁月虽然那时一生中最痛苦的经历,我可以想象年轻人在那个时候的内心的矛盾,很多人其实都是忍受不了那种青春岁月的煎熬的,一方面内心有很多幻想一方面总是惴惴不安。那个韩国小孩子开枪杀人其实不过是有些极端罢了。那个时候其实我很讨厌的同屋其实应该是我很嫉妒有很无奈,我这种人原本不是学语言的料,却让我学英语,想想看我在厦门待了二十年也没有学会当地的土话,那个小孩其实口语很好,英文歌唱的字正腔圆,我始终很努力大量阅读听音,结果完全不得法,实在是很沮丧,原本也许我去学一些比如电子工程之类的很笨的课程也许更好,最好是去写汇编,那种东西对我来说更合适吧。哈哈,想想看是事实上我总是用常人所谓没做过的总是最好的,实际上我写过的汇编不超过两千行,却始终觉得自己很合适。今天有些无所事事,早上改project,直前躺在床上想我的新的计划,还是写下来吧,不然会忘记的。1。不要在整合为一个大文件作输入,那太傻了,简直是overkill,根本不一定会用到external-sorting,因为现在的输入文件都可以变成一个个的小文件,就算是raw-unindexed的mesh也可以先于处理微笑文件,这样所有的index都可以使相对地址,所以不再有64位整数的要求。2。octree可以不设定中心点为root,为什么一定要呢?这又不是binary-tree为什么要balanced呢?所以我的octree要支持至少split,是否要支持merge要看我是否支持remove,如果从来都不去除对象,只需要添加,那么也不一定要支持merge,这样可以不断地添加新的object到octree里面,唯一麻烦的地方是那些span-across-leaf-node的triangle,他们的vertex如果被拷贝的话,在split的时候应该始终放在所谓repeated vertex部分或者说最后,这样按照那片paper的term可以成为external-vertex,其他的vertex可以成为internal-vertex表示他们的坐标实在leafnode的boundingbox的。3。split的时候,分为octreenode存在于不存在两种情况,不存在的时候好像一个原来简化的external-sorting,(这一点我还在犹豫,是否可以避免)如果octreenode存在的时候我必须用两者的vertex数量之何来决定是否需要split。这里的细节还有待考虑。总之这样octree的数量限制基本上不存在了,用32位局部相对地址的page-system可以表示几乎无限的mesh表达mesh。(我睡着了。)

四月二十八日 人间四月芳菲尽,蒙特利尔花不开。

多线程的错误还是解决不了,动态自增长的octree-array是解决了,这个本来就很简单,一个object如果在调用的同时object自身会relocate的话,你就不能使用它的memberdata,那么这个牵涉到的函数必须是static的,这是一个基本常识,因为c++与c唯一主要的区别就在于那个this指针。看阮次山评论台湾不接受奥运圣火进入台湾的事情很痛快淋漓,who cares?有时候觉得阿拉伯是些憨伯伯,实际上台把子更土得掉渣,真是不知自己有多少斤两,的确吃老本吃不了十年的,迟早有一天人民会清醒地回忆当初是不是比大陆文革还要愚昧,所谓的物极必反,矫枉过正都是有代价的。不过呢,民进党代表了台湾的大多数人口,所以2008还是会继续执政,这就是少数服从多数,代表大多数人利益,代表台湾普遍价值观,代表台湾社会生活的主流,即所谓“三个代表”。

四月三十日 乍暖还寒

又被无理头的问题折磨了一天,最后我快疯了,拿出我的最后的杀手锏--剃头,因为这可以让我剔出头发长见识短的嫌疑,可是这短短一百行不到的code的问题还是解决不了,最后我只有放弃改用整片内存拷贝,实在是不可思议。晚上又第n+1次把一锅牛肉烧成了黑炭,看上去实在可惜,只好在黑炭堆里跳出一些还不是完全碳化的牛肉来吃。chkdsk如果爆出错误说是另一个程序在使用,你或者用dismount的选项/v,或者就是设定下一次执行,然后关机重起。

五月一日 乍暖还寒, 突然变得很冷

给办公室里的印度小毛孩子除了几道智力测验题,其中就有著名的zebra-puzzle,我不是说这个小孩子幼稚,只是很天真很naive,年轻人嘛,不知天高地厚离开了internet就什么都不会了。小孩子居然敢说在连三个小时内解决这个问题,实在是有些夸张,我知道有人能够很快地解决但是运气的成分不少,反正我是离开电脑就不会借这类问题的,花了一个下午写程序“又一次”找出了答案。

五月三日 乍暖还寒, 突然变得很冷

我的project写不大的原因就在于我是典型的中国式建设的风格,边设计边施工边改造。我现在决定采用“相对地址”方式来存储于是原来很多的设想统统作废,比如我最早曾经希望数据能够尽量“连成片”也就是说线性alignment,同时希望render的时候能够尽量把data在内存里面也象文件里面一样alignmnet,但是这已经被否定了,因为和globalindex的道理一样不适合插入。有paper用globalindex但是他们呢必须预留出很多的index-hole,而且用64位整数实在是一个太大的浪费。另一个计划是vertex与face同步分拆进子节点,这个好处或者说不得已的原因是有可能要把原本的子节点包括进去,所以hashtable应该变成每个“分拆函数”内部使用?(这个对吗?我想不清楚才决定写下来。嗯,我想是这样的,hashtable的作用已经变成了一次性的仅仅把face-index作修整然后把修正的faceindex作参数传入。听凤凰卫视结果忘了我要写什么了,好像有个重要问题忘了,是什么呢?好像是我担心递归函数的临时变量声明太多我担心堆栈溢出的问题,这似乎有一点杞人忧天,我想STL内部都是动态分配内存应该不会有什么大问题吧,倒是我现在完全忽略在preprocess过程中的内存考虑了。)>>>>Idiot, check your code and see what you are doing before. Such a simple question!

听“阮次山”评论马英九觉得非常的贴切,一个绣花枕头中看不中用,扭扭捏捏不堪大用,经济是外行最多就是一个只能四平八稳坐办公室的庸吏而已,这一点在台湾除了不通世事的阿公阿妈和少男少女以及头发比较长的一类都明白,所以民进党虽然看上去不好实际上要比国民党好的多,至少台还是代表了台湾的下层阶级的利益,最起码选举的时候还可以给老百姓发少酒肉粽之类的总比国民党空谈什么亚太营运中心的口号强得多,的确这个口号和共产党的三个代表一样是TMD的睁眼说瞎话,什么叫做资金可以开放技术不能开放简直是自欺欺人一样,实际上现在的技术人工成本的差距远大于蓝领工人的工资差距。可见马英九完全是一个庸才,全无主见,更主要的是他的确如同李登辉一针见血的所指出的那样心里总是记挂着权力。当然我更加的讨厌这个老杂毛,不过老辣还是让人不得不佩服,所以不以人废言。

看李小龙的《梦龙过江》甚是好看,而且香港片里的女主角从来没有一个长得这么漂亮的,哈哈。查了一下google原来女演员叫做苗可秀。


五月四日 乍暖还寒, 突然变得很冷

中国换了外交部长不知是不是想要收敛锋芒?我有一个漂亮的钥匙串,这是一个有加拿大的标志和名字的椭圆形牌子,每次看到都会想到他的来历,那是一个冬天的早上我经过Atwater的mall的门口被一个街头漫步老头叫住问我有没有零钱,照理我一般是来者不拒,当然我还做不到满脸堆笑热情洋溢,致使无可奈何的问要多少钱,他说一个quater,我就给了一个,然后她给了我这个钥匙串我当时喜出望外连声道谢,老头则很诚恳地说不要谢,于是我系怀感激地回到家对这个意外的收获抚玩不已。哈哈不知道这是不是人们常说的心存感念的意思。

如果算法确定了编码的确可以做到机械,可是这个前提是你要搞清楚算法。


五月七日 春寒料峭

“惶恐滩前说惶恐,零丁洋里叹零丁。”不知道为什么这两句诗从睡梦里醒来总在我的脑子里萦绕不去,不知道为什么惶恐,也不知道为什么今天感叹零丁?前天买了一个吧台桌子又接着买了一个面包机,不知道是买桌子是为了放面包机,还是买完了桌子才发现没有东西可放再去买面包机,抑或这两件事完全无关,总值在国内着称之为“面子工程”,面子的面和面粉的面是一字。昨天去Mr.W家里吃肉夹馍,天气非常的好,不是lovely就是beautiful,总之走在sherbrook大街上就是如沐春风,其实就是春风不用“如”字了。路上路过一个小书店忍不住又买了一本《达尔文和贝戈尔号》这个题目是我一直想要了解的,电影电视找不到只好买了一本看图识字将来度假的时候看,15个dollar还是蛮合算的。

遇到一个有意思的问题。下载到了寻找多时的千百惠的一张专辑《每一次想你的时候》,不过我记得从前买的CD的标题不是这样,不过anyway,的确很喜欢这张专辑上的很多歌,很难找到的。晚饭前碰到从前同学地太太,被邀请参加家宴,哈哈蹭了一顿饭。

记得昨天在回家的路上常常萦绕的一个问题就是“自由的代价”。年轻的时候并没有多少体会,依稀记得当时买正版游戏做收藏,不少游戏其实不会玩也不太喜欢玩,其中有一部游戏仅仅是喜欢她的名字就买了好像还是一百多块呢,就是《自由的代价》,他的答案叫做:The price of freedom is to keep at alert forever.如今已经再也没有少年不识愁滋味为赋新词强说愁的资本了,只能无奈地对自己说我知道自由的代价,不过我不想告诉你,因为我知道你不会愿意付出这种代价的。


五月九日 天气渐渐地变得暖和了

好累好饿啊。一个无比简单的错误让我费了将近五个小时来追踪,vector如果你越界访问,他居然不报错,我被我的白吃错误折磨得身心疲惫,现在才算正式开始追踪预料中的index错误,之前简直是浪费时间。头晕。。。

温家宝我个人认为原本就是一个看守内阁的角色,这么说是因为这个人全无个性,除了没有明显的优点以外再也想不出来他有什么值得称道的。遇到今天中国金融危机毫无作为,也无任何办法,犹豫不决,胆战心惊,迟早这场股市的灾难要导致中国社会经济的总危机的导火索。难道中国的经济崩溃会在2008奥运会结束之前就到来了?想想看13亿人有一亿股民者还不算是泡沫哪还有什么是泡沫?只不过共产党内忧外患宁可希望撑死也不想饿死,可是两种死法结果有好坏之分吗?

马英九也是一个绣花枕头,明明知道王金平不是好的搭档,那么就明说,难道这点破例都没有还想什么当什么政治领导人?就凭着一点任何一个有头脑的选民都不会投票给这个good-for-nothing。清廉有什么了不起的?除了不贪不渎难道就是一个合格的领袖?真是笑话?在西方制度健全前提下,领导人更像一个守金库看门狗,人民不需要他有什么大的作为,可是在东亚发展中地区领导的作用远远不是这样。


五月十日 天气渐渐地变得暖和了

终于看到了期盼已久的《Mr.Bean's Holiday》,真是funny,看来又要项预算委员会申请一笔funding来购买DVD了,影片中的法国女演员同样的漂亮,好像苏菲玛索一样(我知道这个名字还要感谢Mr.Z的大力推荐,在我唯一看过她的片子中我了解到法国的女演员的魅力在裙子内外是一致的,同样她们对于衣服的遮掩功能有着客观唯物的见解)。不过大多数人知道的Mr.Bean的影片并不包括“Dr.Bean”, 如果你看过《豆豆博士》的话你会知道这是相似的主题,艺术家不过是白吃在及其偶然的情况下的无心之作,这就是艺术的真谛。再借用加拿大著名的Uncle Red的名言,如果艺术是如你我知被所能制作的话那就不是艺术,所谓《围城》里说的精辟,江湖术士,求神卜卦,往往在梦呓之间常常能一语道破天机,所以就请相信我只不过是痴人说梦而已。基本上在这个杂七杂八的博客上想要表达的意思就是这个,如果你buy了我这个theory我就在大度一下免费总送一句江湖警句:天机不可泄漏,日后必有应验。

我始终认为debug的过程和detective办案的过程非常地相似,首先如古钿任三郎一样从极细小的不同寻常处认定可能存在bug,然后从蛛丝马迹中推理拍出一个个的可能,当所有的可能都被排除了,那么要么你遗漏了什么可能,要么你的排除过程出现了错误,以上两种可能至少有一个成立。比较蹩脚的真谈会同时发生两个可能,这也许会让你感到及其的困惑,所以尽量保证唯一性实在computer-science领域生存的首要任务。我可能已经快要发现了我的错误,没有做任何的index变换都会出错这就是我的问题之所在,明天早上解决好吗?我很饿了。


五月十二日 天气渐渐地变得暖和了

OpenGL里面的一些迷惑人的事情实在是让我头疼,我画了两个三角形,一个显示一个不显示,这是怎么回事呢?而且第一遍看不到,只有第二遍才看到。我说给Dr.M听,他一定在心里暗自发笑,这是一定的,你想他说的多明确,OpenGL是一个自动机,你怎么可以看到市井小人的所谓“鬼魅”,凡事都是由原因的,中国人表面上都这么说实际都不这样认为。

春光明媚,我决定爬山去,顺便在一次尝试做面包,这一次看清楚了tablespoon是大的,teaspoon是小的,盐少加1/3,糖业少加1/3,再试验一次。突然想到我可以上皇家上看那本刚买的达尔文的书,然后回来吃自己做的面包。临出门前突然从一个很久没有打开的储藏箱里面找到了久违的凉鞋,又从一个很久没有用的书包里面找到了久违的潜水镜,简直就像RPG游戏里面寻宝的过程。


五月十四日 天气渐渐地变得暖和了

你以为你看到了,实际上你看到的并不是你想象中的。人的视觉系统的复杂远远超过简单的显示系统,因为没有“翻译”的“看”和死人的目光没有多少区别,所以“看”和“看到”之间的差别何止千里?而“看到”与“真的看到”的差别也并非道里可计也。我以为我的问题处在那个相对简单的没有index变换的地方,实际上这种问题是很容易解决的,我拖了两三天时间花了半小时写了一个简单的测试就看到了我的愚蠢,一个人重复犯同样的错误这就是愚蠢,在glDrawElement里面的index-array是以多少个integer来计数的我却屡屡第一多少组来计数,也许是因为前面的indexpointer,colorpointer,normalpointer函数统统是以组来计数的延续吧,这就是思维的惯性,不过聊以安慰的是我的思维有一点点的可靠性,也就是说同样的情况我基本上都会采取同样的对策,甚至变量命名都可能一样,这不好吗?犯的错误当然也是一样。另一个我怀疑的问题是光影的问题,也许那些黑斑是由于光源在极其远的缘故?如果是这样就好了。吃完午饭再追踪index的错误吧,这是一个hardcase。

在魁北克城的停车场里读一读达尔文的简介也是一种享受,作者开宗明义地指出这个伟人的伟大业绩来源于一系列的偶然,这种坚韧和一根链条都处在断与不断的边缘,仿佛《蝴蝶效应》里面任何一个微小的变化都回全盘改变人生的旅途,可是这一切的偶然之间似乎又有着某种必然,仿佛《时间机器》里任何的干涉改变了当事人的某个人生事件却难以令人想象地在另一个相应产生的新事件里的依旧实现,让你不禁与时间穿梭人发出同样的惊叹:难道冥冥之间真有宿命?

看到一个神奇的东西,可以在xp里面强行改变密码,用net user administrator **。这里的**是“shift8”。


五月十六日 天气渐渐地变得暖和了,可是突然下雨了,又变得很冷

花了半个多小时卸载驱动,安装驱动结果才发现我的scanner仅仅是连接线松了,类似的问题以前也有过我还当时以为坏了呢,想想看这就是电脑的问题,或者说人脑的问题,当我绝对执著地反反复复对着那不超过一百行代码进行了将近一天的debug,就是从来也没有想到是显示部分的问题,盲点,实际上是认识的误区。

五月十九日 今天是个好天气

Anthony组织去tremblant的活动还是很成功的,天气非常好,露天烧烤东西仿佛也变成天然的。回来很累但是挺好,不过脚底板居然磨出血泡了,看来缺乏训练,以后要经常徒步旅行。看《李敖有话说》他说他有很多偏见,我同意,图书馆学是一门学问,师范逻辑当然更是学问,他是学文科的有偏见是可以理解的。晚上要想一想计划书了。

五月二十二日 今天是个好天气

面包居然做成了酒酿这简直是天方夜谭,这个面包机的程序真是离谱得很!有人向我索求2-3tree的代码,我有些无言以对,照理说只要我有时间我应该会欣欣然的去写,只是我的Priority现在不允许。下定决心在这个星期内完成所有准备工作,今天完成double-precision的测试工作,不能再拖延了。昨天讨论了一些算法比较有意思,就是在系统内存极少的情况下的极端算法,这是有点另类的问题,就是以时间来换空间,慢不要紧关键是减少内存的分配需求,比如用排序来代替某些hash的算法。

每次去实验室或者图书馆我就会睡着,回到家里我又睡不着。

蒙特利尔的樱花开了,开得那么灿烂以至于我这个对于花草一向不感兴趣的人也为之有些倾倒,樱花是这样一种花,灿烂的日子是那么的短暂,而盛开之时又是那么的全身心投入,枝叶的每一寸都是花簇,仿佛用尽了心力来表达自己的激情,走在低垂的花枝中你的眼前鼻端都是绚烂的花瓣,也不知道是我在花海中徜徉还是花朵在我的心海中荡漾。配合着娓娓动听的西班牙古典吉他你的心弦都会被飘飘洒洒坠落的花瓣轻轻拨动,漂浮的脚步不知道是怕踩着了落英满地还是我的心房被暗暗袭来的花气熏陶成酥酥然,和弦的激越颤动下几片落花的缤纷让你稍嫌惋惜,转瞬间流水般的音律让脚步轻飘着滑过花海。。。


五月二十四日 今天是个好天气

关于VFC的算法我总是忘记,反反复复看啦好几遍都是当时明白了,或者自以为明白了事后又忘记了,的确我现在都甚至忘记了我是否有实现过简化的cohen-sutherland的算法。平面方程是这样的,n(dot)(x-p)=0,这里n是normal,即和平面垂直的向量,p是平面上的一点,则对于人以不同于p的点x如果满足方程就属于平面。变形后n(dot)x - n(dot)p=0就是说n(dot)p是一个常数如果n是Normalized的他就是平面到原点的距离,为什么呢?你把点p当作是从原点出发的向量就明白了。关于transformed view frustum可以这样记忆,首先要获得matrix,然后判断输入的点p是否在frustum内就是判断matrix*v是否在边界在(-1,1)之间的cube,当然这是OpenGL的规定,也就是left: -w'<x' ==>  -v*row4<v*row1 ==> 0< v*(row1+row4) 当然这里的*要理解为dot,这里的row1,row4就是matrix的row。同时因为openGL里面使用的是column matrix所以,这里的row变成了column。(很绕是不是?反正我对于这些问题是想了好久才明白,后来不久又忘记了。比如为什么openGL要使用column,查我以前的笔记吧。)

五月二十五日 今天是个好天气,我的带天窗的小屋和烤箱一样热

混乱了快一天才有了一点点地眉目,其实我已开始就有95%的理由认为这是一个内存不足的问题,但是真正找到证据却不容易,现在我发现了一个线索也就是一个常识,STL对于内存无法分配的错误不做检查,就如同对于越界不检查一样。另一个明天要做的事情就是在和W争论后的想法,exception在c++里面是有人throw才可以捕捉,但是纯粹的c使用另外的机制,微软有__try,这个应该可以捕捉错误吧。

五月二十六日 今天是个好天气,我的带天窗的小屋和烤箱一样热

日本有两棵树,一棵是田中芳树,一棵是春上村树,我都没有看过。

我觉得W的花很有道理,看水平比你高的人的代码你很可能看不太懂,或者不明白其为什么好,看水品比你低的人的代码很可能你大多数时候是以批判的态度来看未必会认同,所以,基本上不用看别人的代码,哈哈。。。你会发现我漏掉了水平相同这一条,在STL里面标准的“相等”使用!<>来实现的。


五月二十七日 今天突然变冷了,提醒你这里不是热带

基本上我对于exception的理解是错误的,SEH的确不同于C++的exception,但并不等于C++的exception不能捕捉exception,比如我想windows的机制就是一个类似于"raise"的抛出错误方法,try-catch(...)可以捕捉任何类型的exception但是怎样获得错误代码就还是要利用SEH做一个wrapper,MSDN里面有这样的例子,不过对我来说用途不大,移植性的问题以后再考虑吧。买了一辆超级的自行车,从此开始进行系统训练。

五月二十八日 今天突然变冷了,提醒你这里不是热带

vector可以使用内部的指针来输出数据,比如begin当作数组头地址,这个不算hacking因为代码就是这样的,和平台无关。不过set之类的还不知道,应该是不可以因为是一个tree的实现代码太复杂了。为什么要关心这些?使用网络传输需要啊。早上再次骑自行车,今天只上山一次,还好回来的时候一锅牛肉还没有变成焦炭。

所谓《TLS》就是三个女人和两个男人的恋爱故事,最后两个女人得到了他们心仪的男人,而另一个女人出走海外不知所终。

所谓日剧就是给资本主义赤裸裸的金钱关系披上一层温情脉脉的外衣。


五月三十日 今天突然变冷了,提醒你这里不是热带

昨天经委员会决定在七月中举行骑车环魁北克行动,因此从现在开始进行系统训练,本周日要进行环蒙特利尔活动。

五月三十一日 今天突然变冷了,提醒你这里不是热带

看到厦门要建设一个所谓的px项目我就感到义愤填膺,这些地方官员肯定又拿了不少的好处答应“陈由豪”这个家伙,我不想说台湾当局通缉的就一定是百分之一百的恶棍,可是商人唯利是图的天性让人相信他绝不什么好东西,至少是一个不择手段的投机家。

问:你彻底成了加拿大人民了? 这是一次国人的绝地反击!

是啊,我在我来到这里的三年后的第一天就义无反顾地递交了公民申请全心全意地把加拿大当作我的祖国了,基本上我对于共产政权是深恶痛绝的,可以说公有制是一切腐败的源头,想想看把大家的财富交给少数人支配不产生腐败天理不容啊。当然私有制也是犯罪的根源,但是犯罪可以让法律去制裁,而公有制的贪腐确实收到制度保护的,这就是作为中国人的悲哀,所以,我坚决地在第一时间就放弃了中国国籍。我常说所谓的“流氓国家”的人民并非流氓,但是流氓政府里面的官员却个个都是流氓,所谓“人民代表大会制度”是一个全世界的民主笑话,把一些所谓的社会名流请来每年装点门面开一个星期的会,这些人都不是职业的政治家,都是一些业余的代表,在不到一个星期内去审议什么议案这不是天大的笑话吗?这不是所谓的民主橱窗是什么?资本主义是金钱政治,所谓的“社会主义民主”则根本就没有,还是封建帝王制度。

美国的民主也不是一蹴而就的也是人民自发起来争取的,人民的权力只能人民自己起来维护,正如“共产国际”所说的“从来没有什么救世主,只有自己起来革命斗争”(杜撰的),现在的所谓共产党根本就是一个挂羊头卖狗肉的封建王朝,当初找了一个注意号召人民起来造反,成为他们改朝换代的工具,然后就继续骑在人民头上作威作福。(这些都是这个政党掌握争取以前形容自己的政敌的术语,今天用在他们自己身上感觉特别贴切。)所谓人权运动在六十年代开始的时候也是从反战环保这些人民最基本的切身利益话题开始的,我相信我们正处在一个变革的门槛,一个革命的大时代,一个风起云涌的年代的开始,请继续奋勇向前。

我继续在这里遥祝革命同志胜利成功,我则继续坚持敌后斗争,加拿大也是一个对敌斗争最前沿,鄙人决定从现在开始努力锻炼身体位长期打游击作物质与身体上的准备。

谨再次祝各位六一儿童节快乐!

加拿大马克思列宁党蒙特利尔支部党外成员(长期拒绝交党费一次也没有参加组织生活,一次也没有参加投票。哈哈。)
MARXIST-LENINIST
PARTY OF CANADA
(请注意不是加拿大共产党http://www.communist-party.ca/ 很有意思地,我看到这个政党的2007的演说只提到世界上仅有古巴,玻利维亚还在继续共产理想。)

http://www.cpcml.ca/

《时效警察》的女主角很可爱,属于那种故意将美丽掩盖的女人。

一个人缺少什么就向往什么,一个社会也是这样吧。日本人喜欢拍侦探片是因为缺少犯罪吗?比如看过英国人拍的《热血神探》把英国的警察挖苦得一塌糊涂是因为英国的警察廉洁高效的让公众都受不了了以至于希望他们能够向中国的警察一样稍微的腐败一些,类似的中国人根本不肯去看这类片子,我们当然是要看什么清官,明君之类的东西,因为我们缺的就是这个。我经常喜欢看《糊涂侦探》《憨豆博士》之类无比傻的东西因为我也缺这个。(哈哈。。。饶了一大圈还是这个自夸的主题。)


六月一日 今天下雨了

meeting中感觉Dr.M的分析真是一针见血入木三分,哎,实际上很多时候我真是滥到家了,研究课题的基本概念总是没有仔细地阅读过。一觉醒来不觉红日西沉,能否尽快完成coding呢?!

看到六一节厦门游行抗议重污染化工投资项目的视频,感觉人民在觉醒,迟早有一天会认识到这个所谓的人民的政党实际上是世界上仅存的几个独裁封建统治而已。


六月二日 今天天气很好,早上去爬山,晚上准备参加环城自行车

晚上骑车回来一路上走过st.Laurant,只见美女如云,蒙特利尔真是一个不夜城。听有一点累得,毕竟早上跑步,晚上骑车20km还是有一点点锻炼效果的。明天还要骑车50km环城呢。睡觉吧。

六月三日 今天天气很好,早上去参加万人环城自行车活动了

骑车50公里还是有一点点累得,至少我的手臂被晒红了,以后一定要擦防晒霜了,虽然我以前一直认为这是女人的专用品,不过将来骑车半个月的话是一定的,索性先买了再说。其中的感受原本是很多的,后来想了想其实反而懒得写了,因为一件事情太好了由时候反而觉得写下了可惜,这实在是一种奇怪的感觉。想想看感觉这个东西就是无形的,当初每个人初恋的时候的感觉一定都是好的不得了,好的以至于心里都是幸福感却说不出对方的好,只是觉得一个模模糊糊地影子,真的要形容却说不出。其实世界上好的东西都是这样一旦被披上了有形的外衣将来一定会被挑出毛病,如果你要永远保持一个事物的好的形象最好从来不去想也不去说他到底好在哪里。可是这样一来这个东西就只属于你个人了,这未免太自私了,尤其对于环城自行车来说。1。全民参与:至少有万人,很可能还不止,我们下午回家的时候还有大批的人才到达。2。全民热爱:魁北克人向往法国文化,自行车运动深入人心,骑车的人都是爱好者,各个功底不凡,否则骑车50公里单单屁股就坐疼了,平常肯定要经常骑的。3。全民支持:沿途每个路口几乎都有志愿的工作人员负责把守路口,不仅如此每个人手里拿着小拨浪鼓呐喊鼓劲,那个热情比骑车的人还高很多,不是真心喜欢绝对做不到,要知道这不是一两个小时的工作是七八个小时啊。每个休息点都有志愿的乐队表演很好看的。4。全民组织:组织工作无懈可击,细致周到,考虑周详,从路线设计,休息点的安排,地铁上自行车的乘坐安排等等。5。全民娱乐:这种活动才真正是健康积极向上,和谐社会的典范,自行车五花八门,突出个性,很多我是见所未见,全家一起出动老少皆有。很多老人骑车完全没有丝毫衰老的样子。6。华人绝少参加:我几乎没有看到一个华人或者亚裔,原因也许很多,吃不了那个苦?觉得报名费太贵?(17块,我是没有报名反正骑车难道有人会阻止你吗?这里的中国人大多数只要听说是免费的都去,只要是要钱的一律不去,我也是差不多,稍微好一点,就是免费的也懒得去。)感觉吃饱了撑得?(我常常觉得自己吃得太多了。)总之,我总是觉得大多数中国人缺乏尚武精神,以至于汉民族是帝国时代里最弱懦的民族,每每被其他游牧民族征服,然后据说这个原因也会变成帝国时代被禁止发行的理由,往往自卑的人和民族对自己的弱点最敏感。

看了田中正和的《Farewell Mr. Primier》感觉是振聋发聩,虽然我一直没有机会欣赏《Yes,Prime Minister》,对于《West Wing》也没有怎么看,可是我敢肯定日本能有这样的政制讽刺时事剧说明日本的民主政治已经完全是欧美的水平了,过去我所看到的听到的都是什么日本政治的丑闻,什么议院在议会打架,贿选,与黑道勾结,自民党把持朝野,总理大臣连轴更换,可是现在反过来想一想,一个政府的总理如果不得不面对民意而被迫辞职的话正说明了政治的民主与清廉,不是吗?只有暴君才会不顾民意,或者漠视民意,一个内阁成员被描述成只会与媒体周旋也未必说明是坏事,因为为民喉舌的媒体就是民意的媒介,可以将民意表达也可以将事实传达给民意接受民意的反馈,难道还有什么更有效的反映民意的媒介了吗?人民代表大会?(不要再开这种玩笑了吧?我觉得一点都不好笑。)把日本的总理大臣描述成一个白字连篇的无能之辈,巴内阁成员描述成宫廷小丑,把总理夫人描述成俗不可耐的贵妇人,把总理女儿描述成考不上大学的普通女孩子,把副总理描述成尸位素餐整天打瞌睡的老头子。。。这一切并不会让国民对于政府失去信心,因为发达国家的人民不是白痴,他们知道总理大臣也是人,谁在这个位置上都不比谁强多少,只要他是一个老师可靠的正常人不把国家拖进不可理喻的选我就行了,反正政府本来就应该是人民金库的看门狗,需要的忠诚胜过智慧。

OpenGL: gluLookAt的使用每次要清零,因为我的做法是移动camera。另外,所有config里面的常数都要使用unsigned省得遇到0xFFFFFFFF变成-1的笑话。(常数怎么会变呢?因为我用常数去计算常数,这就会有问题的。)终于找到了一个当初百思不解的问题的办法,这也是我当初怀疑肯定有的,因为这是一个非常普遍的问题。colorBuffer里面读取小方块然后要发送在networkbuffer里面很讨厌不是线性的,所以当初就应当把跳跃的row读成线性的,这个是在pixelStorage里面定义的。


六月四日 今天天气很阴沉好像还下了雨

I need passion and I need goal.

很多年前的这一天我从徐家汇步行二十几公里到公平路码头乘船回厦门,因为那个时候公共汽车已经没有了,看到youtube当年的一些片断可以想象当时很多人在另一个城市死掉了,正如同中国几千年的封建统治中不断死去的人一样很快就被大多数生存的人忘记了,如果鲁迅还活着或许会写一篇《为了忘却的回忆》作为埋葬一些记忆的悼词。这个世界上的生物按照进化论的规则活着,唯一的目的就是为了生存,这是自然规律,其他都不重要,only this matters。所以,其他一切影响你的这个唯一目的的任何想法都应该抛弃掉,因为这不符合自然规律,除非你并不打算理性地活着。


六月六日 今天天气很阴沉好像还下了雨

很多年前学习c++的第一课教过继承有三种方式,现在都快忘光了,因为我从来就没有使用过public以外的方式。java里面的final方式可以这样实现,把constructor声明在private里面,这好像又成为了经典的面试题目,让我有点哭笑不得。

六月八日 今天天气很好,剃头明志,骑车上山

  我觉得像你这样能有耐心看我那些垃圾的人才了不起呢,实际上很多时候这种东西都是一种个人情绪思想的宣泄,并不一定是考虑读者的感受的,就好像国人喜欢唱卡拉OK,实际上对于听众来说大多是一种折磨,我是最讨厌这种娱乐了,当然大多数男人不一定是主要为了去唱歌的,哈哈。。。

很难想象国内有这么多人都是学计算机却没有从事这种相关的工作,也许是在中国计算机的应用被廉价的劳动力所阻碍了,但是总有一天资本家会发现雇用工人是一件很麻烦的事。比如我常常和朋友说起一个古老的故事,在美国二三十年代,煤矿工人不比今天的中国的煤矿工人好多少,每年死的人也是上千的,工人不断地争取自己的权利,那时候美国煤矿主很强大,象洛柯菲勒之类的美国大家族都是开煤矿的,他们甚至雇用打手扛着机关枪镇压工人,死了不少人,最后联邦政府不得不派军队镇压。后来石油成了主要能源,资本家发现采油比采煤方便,雇用工人也少,同时采煤尽量采用机械化减少工人,当然就减少伤亡事故了。所以西方的资本家也是一样当他们发现雇用工人不合算他们一定就会多花钱使用机器,中国的工人权益完全没有保障,很多打工妹仅仅是糊口,老了根本不可能攒下一分钱,这个局面老百姓是肯定不会长久接受的,所以,在不久的将来中国的人工成本会大幅度上升。   人民币升值带来了通货膨胀的副产品,这本来应该是中国经济学家应该考虑的问题,结果这些人因为没有吃饱饭都去炒股票做顾问赚钱去了,最终这些关系国计民生的大事落到了发改委的几个工农兵大学毕业的领导头上,领导吃饱了喝足了拍了一下肚子,旁边的三个刚从人民大学经济管理专业毕业的所谓硕士研究生听出了肚子里面的回音不同寻常,于是定出了一个头疼医头脚疼医脚的行政法规,第二天,老百姓听出了昨晚唱卡拉OK时候长官走调里的玄机,即时地抛售自己的股票,晚上家宝听到凤凰卫视的时事辩论会的话题打电话给证监会,结果长官的指示在一次地演变成一轮新的行政法规的矫枉过正。这就是中国式的经济模式,难怪美国的经济学家看不大懂。   星期六跑步皇家山,星期天骑车去西岛。

有的时候一个人的脑筋就像是浆糊,因为我一次性把整个colorbuffer都读出来了结果分块读写变得很困难,可是如果我当初就是分块读写的话,还会有这个问题吗?rasterPos只是对于写buffer有用,对于读buffer毫无用处,因为使用的是windows坐标,这个是从左下角开始的,小于零的话是不可知的,而openGL标准的原点经过transfer是在screen中心。如果你用glOrtho的话就可以像读写2D一样,(这是废话,因为ortho本来就是2D),写的时候openGL会检查rasterPos如果超出范围自动取消所有的写,可是读的时候并不报错,但是你可能会读到垃圾。奇怪的现象是不可预测的。所谓的perspective,orthogal并不神秘我以前脑子就是一团浆糊是中不明白这只不过是一个projection的matrix的不同而已,如果ortho的参数区的事screen的宽度当然你就可以用实际坐标来定义rasterPos,否则就是一个ratio。


六月九日 今天天气很好,剃头明志,骑车上山

  我觉得我绝不应该低估自己,别人认为做不到的事情并非我就做不到,因为有些事情并非很难只是聪明人都不去做,因为他们认为不值得做,这不是能力问题这是价值观的不同。比如愚公要移山,智叟认为不智或者不值,编程序常常被人说是手熟而已,无他。相反很多根本就不明白软件工程真谛的人却在夸夸其谈什么pattern什么framework,连走路都不大熟练的人去谈什么空中体操,真有一点点痴人说梦。我一定要在这个星期内完成coding,实际上这不是什么困难的事情,困难的是什么质量的完成。

铃木保奈美饰演一个超级庸俗的总理夫人,一个饱食终日,低俗无聊,朝三暮四,耐不住寂寞的贵妇人,对于她所代表的这一类型刻画的淋漓尽致,一个typical的女人。


六月十日 今天天气很好,骑自行车去西岛

  一不小心骑到了Cavendish结果一看地图中间隔着机场去不了西岛,只好折回来,一路上走走停停花了四个小时才骑到了长征家。晚上回来的时候幸亏按照长征的指点沿着河岸的自行车专用车道走否则恐怕后半夜也会不到家了,结果又是一不小心骑到了修女岛,看看广告牌上的电话都是450开头的只好掉头回去,终于经过近三个小时的征途回到了家,感觉好像有一点点地累了,哈哈可能有来回50公里吧。

街道厦门来信,国内对于新闻媒体的封锁可以说是变本加厉,让人义愤填膺,特此破例在鄙人的这块自留地转贴出来,咱们且看看中国的网络警察什么时候会把我的这个自留地过滤掉。那个时候本人算不算持不同政见者了(dissident)?


六月十一日 今天天气很好

加拿大的冬天有多冷我的小阁楼夏天就有多热,哈哈,矛盾?

带着无限的怅惘与恋恋不舍和田中正和饰演的“总理大臣”说声再见,实在是太棒了,这么结束实在是太可惜了。


六月十四日 今天天气很好

实在受不了酷热就去买了一台空调,从此意志开始被消磨,其实我并不怕热,因为最多就是睡得晚一点罢了,已经不能再晚了,主要是担心电脑会被热坏了,三十几度连鼠标左右健都回颠倒的。忘了说明一下什么是memory-hole,我查了一下这是因为电脑外设如网卡等作统一寻址时候所设定的虚拟地址,当然这个所谓“虚拟”是说他们被系统设定为如同内存一样的地址,这样访问硬件可以用统一的地址访问汇编指令,因此可以减少汇编的指令集大小,隐藏硬件编程的复杂性。但是这些地址被映射到32位地址空间就会和实际内存地址重叠,因此一般都是放到4G开始的高位地址,在远古时代内存只有几百M当然没有人担心什么,可是一旦实际内存较大接近4G就会丢失一部分内存,于是称作“memory-hole”。

今天,待到下午筋疲力尽,读color-buffer总是不太对,当然再次强调一下little-endian是把integer的低位映射到开始,就是从低到高,记住了!windows里面dos里面就有ftp的命令,mput,mget什么时候玩一下。


六月十五日 今天天气很好

陈由豪的简介。

常常看《凤凰资讯》的有关台湾的消息,总的感觉是有些不可理喻,比如选举中每个人的选票都是自己决定的为什么要看民调,别人怎么选是别人的选择跟自己有什么关系,为什么会有影响?除了所谓“桩脚”绑票卖选票没有什么其他理由,总之一个感觉就是愚蠢。然而,经常看大陆的新闻唯一的一个感觉就是可怜,有的省整个省都是奴隶制的黑砖窑,你如果相信当地的共产党官员没有参与那就改姓白吧,就是白痴的白字,如果你还向水浒传里的宋江的所谓官员腐败皇帝还是清明的傻话你干脆不要再改姓了,因为你hopeless了,难道当时的宋神宗仅仅是喜欢业余时间嫖一嫖李师师这样吗?老江也许是真的喜欢宋祖英,但是小宝和小涛是真的不明白地方官员的作为吗?政治永远比老百姓想象得更加黑暗,这是一个定律。厦门的游行是一个和平的请愿行为,当地的小老百姓无非是为了最基本的生存权提出自己的疑问,当地的地方官员居然出动这样大批的军警,士兵警察比示威者还多,这有必要吗?是市政府的办公在节假日被干扰了吗?星期天示威一下有什么关系?连这个都要限制是不是太过于惧怕民意的反映?

说了很多其实只是想跑出一个长久以来的经典的黑色笑话。一个老头老得连路都走不动的孤独的老头经常在阳光灿烂的日子里拿着一把雨伞散步,毫无疑问总是被一些好心人提醒老人家要多看天气预报,最起码出门的时候看看天别做傻事。你认为老人会怎么回答?他会说我宁可被人误解为愚蠢也不愿意被人来可怜,因为我的雨伞是我的拐杖。在愚蠢与可怜之间,我们都回毫不犹豫地选择前者。

实验室的印度小孩居然拿这个小孩子的玩意来考察我的IQ,哈哈,难道我不能在十分钟内解答这个小孩子的玩意吗?要知道在这个世界上只有最顶尖的人才能去研究AI因为那是研究智慧的智慧研究,我虽然没有资格去做但是难道会比普通人还笨吗?绝对不会的,Bill Gates能做到的大多数人也都可以做到的,只要你有能力在拥有全世界最大的个人财富的时候把他们全都捐出来,你能做得到吗?如果不行,就不要说你比他强了,因为这一点才是世界上绝大多数所谓聪明人做不到的,对于多数人来说如果把享受财富抛开了追求财富还有什么意义呢?

昨天动用今年度假的预算购买《是的,大臣》,现在的小孩子大都没有听说过这些,他们只知道NBA和prison-break之类的,实在是没有什么共同语言,拿到了再作评论吧。


六月十七日 今天天气很好吗?明明下了一场大雨。

有时候拨开云雾就看到太阳,昨天的谜团在今天看起来就是那么的清晰,我几乎可以肯定文提出在WMPI的资源限制上。你怎样读出来的,你就怎样写回去,读的时候是条块,写的时候当然也要是条块,这就是readPixel和drawPixel的关系,那么drawPixel的z坐标应当怎样呢?比如你用glOrtho的2D来定义projection,z的near一定要是0才行,否则就看不到了。我要把键盘事件写成一个类似事件queue的模式,因为网络中的每一个电脑都要达到exact-once的键盘事件。

我喜欢《围城》的说法,套用到现实社会就是这样子的,政治原本就是一棵树,政治家都是一个个争先恐后爬树的猴子,当他们还没有开始往上爬的时候和我们普通人平起平坐,你是看不到他的红屁股的,当他爬到一定高度的时候为别人所关注的时候,普通人都会看到他的红屁股,其实人人都有红屁股,并非我们没有,只不过自己看不到自己的以及和自己面对面平等的人的红屁股我们通常也难以看到罢了。可是对于这些爬树的猴子的红屁股,西方民主政治是观众也理解,仿佛看戏一样剧情大体都猜得出来的,大家都知道这是演戏不会过于挑剔,当然也是会对于不同的红屁股的红的程度挑三拣四而已,可是同样的事情到了中国,爬树的猴子们却非要让观众闭上眼睛想象那些高高在上的猴子们并没有如普通人一样的红屁股,还要如皇帝的新装一样建立一个社会共识就是谁敢说出来谁就是傻瓜。这就是政治和政治家的故事。


六月十八日 今天天气很好

我在昨天给春明的电话里自夸我还没有让deadline打破过,当然这对于我的不长的coding的念头来说还是容易做到的,难就难在你能否一辈子都这样做。1。谁来定deadline?2。有多少非个人可控制的因素?大多数情况我都是独立作业,自己一个人单打独斗这相对teamworking来说容易得多,自己定的deadline大多是针对自己的能力与时间充裕程度因此是比较准确的,很少有mission-impossible的情况。(那都是小孩子不知天高地厚的年代多。)所用的工具或者软件包对于开发有多大的影响呢?因此对于个人所能做的project,这些因素小的多,说到底一个人干上一个月的project能有多复杂,会用多少library,所以,我能这么说也不是吹牛,只不过有些为行家所不齿。

其实写blog有很多时候不知道是给谁看的,给自己的成分多一些,回过头来看自己的脚步大多数时候都是一种欣慰,因为一般来说一个人的各项能力都是在衰退的,只有经验是在积累的。如果你从前做到了的现在做不到的,你可以自我安慰自己说毕竟我以前做过这些。如果有些依靠经验你今天做得比以前更好了,你可以更加自豪地感觉自己在成长。总之,不论怎样你看自己的blog都是感到高兴的,不用考虑别人的感受。(这一点就好像有个朋友总是给我发“芙蓉姐姐”的照片,有时候我感觉这是一种对于男同胞很不尊重的态度。开玩笑了,我不是认真的,其实我挺喜欢芙蓉姐姐的,真的,她是那么的质朴,仿佛和打工妹一样纯洁。什么?原来就是,啊,那么它就是质朴,质朴难道有什么错吗?)

再一个写blog千万不要担心写的都是垃圾,反正你不是什么名人,别人看了吹胡子瞪眼也不管你的事,经常发现没有什么可写的时候你就写垃圾,千万不要为了读者考虑去转贴,你不要以为你找了一些自以为很好的文章可以给读者知识和营养他们就会感激你并继续读你的blog,读者想看的是你的思想裸体才不管什么知识性趣味性呢。(赫赫,个人观点不代表普遍情况。)总之,不管什么都往上写,这样就可以坚持下去,因为当你连那样的垃圾都写过了,当你偶然的下到什么佳词妙语就更会迫不及待地向与人分享了,这道理就是所谓的“抛砖引玉”,这也就是所谓的活学活用。

写blog一定要有闲情逸致,天天无所事事,既没有拖家带口的负担也没有一个横眉冷对天天催你为去挣钱而早点睡觉的老婆在背后狂吼,同时你这个人既要胸无大志有时候又要志大才疏,一方面从来没有想着去多挣钱,成为社会主流精英,并且要冷脸面对世人的耻笑,同时你又有一颗不甘寂寞的雄心保持着铁肩担道义妙手著文章的豪情,如果你同时做到这两样你就成为一个社会的边缘人士,广大人民群众对你采取敬而远之的态度,你也常常横眉冷对峙,说到底这个世界谁怕谁,离开谁地球都照样转。

写blog一定还要有一个原因,或者说动力,否则你很难坚持下来。比如我现在这样啰里啰唆的写垃圾那也是有原因的,因为我再等UPS的delivery,上个星期来的时候我在实验室就错过了,今天只好在家里死等,不能去实验室,没有别的事好做只好写这些东西消磨时间,这就是一个充分的写blog的理由,不够吗?说曹操,曹操到,门铃响了。收到了在tiger-direct上订购的千兆网卡去实验室了。


六月十九日 今天天气很好

NFS折腾了半天还是有问题:1。server:/etc/exports里面设置共享/mnt/exchange  host(rw)。2。client: /etc/fstab里面设置host:/directory  /mounted-directory  nfs   rw  0 0   或者直接命令行mount -t nfs  host:/dir  /dir  不过我还是没有成功。

郁闷,Clueless! Insane! 很多时候仿佛是鬼魅一般无法令人理解,一个简单得不能简单的knapsack似的greedy的partition函数居然会引发异常,当然这之前我是第一次意识到integer-alignment的问题,比如char array[100]; int*ptr=(int*)(array+1);这样危险不危险?如果硬件架构是把integer总是取sizeof(int)的整数倍的地址这样会不会有问题?所以,我最后就在我的structure里面夹了一些垃圾byte以便struct的size是4的整数倍,这些乱七八糟的解决办法到了64位机器又会是一场大灾难。不过一切的一切,我好像忘记记录下来昨天我已经胜利地完成了windows版本的程序,除了WMPI对于request的数量上的bug以外一切工作正常,就是说只要是小数量的屏幕分割都是一切ok的,接下来实际上更加的困难,因为windows下不管千难万难我总还有信心解决,因为微软的文档很多很好查找,linux这些geek各个都是不肯像微软对待傻瓜一样地对待程序元,他们当然都期待着你是一个中级linux的programmer.讨论的问题都是不再是低级的howto。

晚上回来懒得做饭就着面包吃午餐肉,一杯牛奶和着凤凰资讯下肚。看着大学同学的email实在是有趣,因为你很难想象当初的这些人是怎样选择自己的人生轨迹的,想想看,22171,22172居然有这么多人都在北美,很多人在讲述他们在美国这个巨大国度里偶然遇到某个人,这实在是概率论所难以解释的,两三亿分之60吧?可能发生吗?小概率事件不应该发生,但是如果小概率事件经常发生就应该回过头来重新审视这个所谓的小概率事件了,也就是说未必是小概率事件,不是让现实来fit理论,而是应该修正理论来体现现实。什么是现实?顺应时事聪明人的选择大概都是相似的,所以他们相遇,所以他们的轨迹交叉。看来我偏居一隅说明是不识时务说明我的无可救药的愚不可及,鉴于此确实是没有什么可交流的,就偶尔看看得了。

不过话说回来了,我即使和MR.Zh相比还有两到三年的差距,至少在87工贸这些人中算是最好的程序员了,哈哈这个实在没有可比性,因为他们都是一些businessman。

Alterac Valey成了联盟的伤心峡谷,对部落的胜率可能连20%都没有。作为一个小兵我几乎总是冲锋在前死而后已,无奈人微言轻于大局无补。半夜看到朋友发来的中国各级政府的豪华办公楼也只能跟着一声叹息而已,这种穷奢极欲已经超过了封建时代的挥霍无度,你能想象在封建时代地方官最多就是盘剥百姓巧取豪夺还不大敢把国库的钱借出来透支吧,可是现在的县长市长敢于超支好几年的财政收入盖世界级的豪华办公楼,我在蒙特利尔的繁华的downtown也找不出几栋这样外装修如此奢华的大楼,看来朱镕基当初所谓的内需拉动等于是给地方官挥霍开出了绿灯。总之国富则民穷,国穷泽民富,(是江泽民富。哈哈)

动用特别度假基金买了一套《yes,prime minister》,非常的经典,但是英国腔的晦涩难懂也是登峰造极了,原本政治讽刺剧就不是一般小老百姓能够欣赏的来的,对于第二语言来说就更困难了,催眠的效果一流。


六月二十日 今天天气很好吗?好像是阴天哦。

《是的,总理》实在是令人称快叫绝,在那个使用莎士比亚创造的语言的国度里代表着文明的最高境界,和那种高雅高尚连珠妙语比起来美国人简直就是乡巴佬在学说城里话,尤其对于现代最高境界的政治权术的淋漓尽致的刨析让人在大笑之余回味无穷。可以说能够欣赏这一类的政治喜剧的人少只有少,首先要对于国际国内政治有足够的背景与兴趣,其次对于英国英语的要求高很多,(注意使英国英语不是美国英语,这是两种不同的语言,仿佛北京话和上海话的区别一样。)在此这个人要是大闲人,就是肯花几十块钱去买一些没人看得东西孤芳自赏。一句话,而且完全不可能翻译成中文。当然要全不听懂那时几乎不可能的,但是有的时候可能比《The Thin Blue Line》的绕口令要好懂一点点,毕竟这个政治剧是有现实意义的剧情的。最后mention一点就是每一集都是以Yes,prime minister.结束的。

关于virtual fuctnion的争议可以用朋友的这样一句来结束:If compiler during compiling time can decide which function to call, then it will call that function instead of using virtual function table. 这完全合情合理polymorphism只是存在于函数指针,对于对象变量从来就不存在这个可能性。

昨天在跟踪时候遇到的无理头应该是VC6的tracer不能正确再多线程下正常工作的缘故,尤其是F11步进函数救出异常。今天改进了两个问题,一个就是为了防止将来big-endian与small-endian在整数读取的差别,如果我的rgb换乘rgba成为4个byte那么读于写只要是在同样的平台就不会有什么问题了,不然3个byte你总是有问题,要改代码用macro重定义。另一个想法是减少预处理时候内存占用,比如递归函数是大量的数组或者vector时候,仅仅用new防止stack溢出还是不够的,改用文件的handle来传递减少内存占用。不过现在还有bug,争取今明天解决。

国内的黑帮居然已经开始装备军用装甲车了,牛!


六月二十一日 今天天气很好吗?好像是阴天哦。

很多无理头的事情都是有原因的,我当初百思不得其解的runtime-debugger的问题居然是我自己输出的一行注释,简直是让我哑口无言,就是说_try_except机制是可以捕捉任何异常,这是毫无疑问的,只是在_except(arg)里面的arg要提示怎样处理,-1,0,1。另一个百思不得其解的问题实际上是数据文件里面的三角形的两个定点非常非常地靠近,以至于我一分为二就变成重合了。c++里面不支持virual-constructor并不等于OOP的其他语言也不支持,比如delphi,java,另外java的人和函数都是默认为virtual的,除非是final。讨论static的全局变量怎样编译,结论是这样的,猜想编译起就在生成obj的时候不把它放在simbol-table,或者作特别标记,防止在linking的时候报重定义的错。一个变量在声明的时候初始化为一个字串应该就把它转变为const指针了吧。char*a="const";

六月二十二日 今天天气很好吗?好像是阴天哦。

我不惧怕编程因为但凡有一点点逻辑的人都可以胜任,但是系统环境的设置就并非是我能解决的,这仿佛是所谓的“知识”,有时候,“智慧”并不能替代“知识”,仿佛“算法”再先进也不能替代“数据”一般。要想把学校的user-managed的linux的root的passwd照会,可以在启动时候按"e"进入grub的编辑状态,在“kernel”那一列继续编辑,在末尾加一个single这样可以passwd输入新的passwd,但是这个是因为grubconf设置的,我不知道还有什么其他设置,那个参数我也不明白。

六月二十三日 今天天气很好吗?好像是阴天哦。

windows的GetTempFileName非常的ridiculous的,因为它不仅仅创建一个unique的临时文件名,同时还帮你生成文件了再把它关闭掉,所以,你要打开他的时候必须用open_existing,仔细一想,其实这也是没有办法的办法,因为,多个进程都要创建unique的文件名除非你访问的是同一个函数的同一个buffer,我想linux的tempfilnam大概是这样吧,用一下就知道了。要把windows和linux的API统一起来真的不太容易,单单文件一级实际上就很困难,就不要说别的了,根本就是风马牛不相及的。

现在在网上下载免费软件都是疑神疑鬼的,一定要现在我的“副机”上试验一下才敢安装。什么时候把服务器架起来呢?


六月二十四日 今天天气很好吗?是的。

今天骑车何处?杨柳岸和风烈日。出atwater,过运河,跨champlain大桥,骑到了修女岛,这才知道什么是真正的资产阶级生活方式,国内的所谓高尚住宅充其量就是这里平民的townhouse,或者都市劳动人民的condo,修女岛这里才真的是人间的理想居住环境(至少这里住的都是有钱人吧,反正想找麦当劳之类的快餐是找不到)。沿着一条专用的自行车公路骑啊骑,真是累啊,很宽阔纯粹的骑车人的理想的环境,不用考虑交叉路口不用考虑一切,以你的最大能力最大潜力相前骑,这才是真正考验你的体力与力量的地方,没有任何可以投机取巧的地方,最公平的竞争地,我和王林森的差距在半公里以上,毕竟我的力量太差了,虽然后来我并不觉得累还可以再骑几十公里但是我没有速度与力量。这对于超长距离履行应该没有太大的影响吧,希望如此。

互联网真是一个好东西,早上无意中想看看大学的同学现在在干什么,一搜索果然找到了22171的那头猪现在在ctrip,哈哈看照片倒是没有什么变化,因为它原本就是那么胖的,难得就是他的体型能够几十年如一日的保持不变。


六月二十五日 今天天气很好吗?可能吧。

说道Linux你如果google一下大多数得到的都是些shell一级应用的信息,对于syscall级的讨论就比较少,这也许是有利有的,总共的api就是不到两百个难道有什么掌握上的困难吗?不过话说回来了,如果简单为什么还要用shell呢?方便自然是一个主要原因,我想还不是那么想象的简单吧。比如Alex说lseek支持64bit的off_t的大文件,我当时就信以为真了,今天又怀疑了,是否linux支持呢?难道我看错了lseek64是unix不是linux?今明天一定要去看header-file,linux里面我想有一个很讨厌的问题就是使用文件的时候都使用file-descriptor,但是当你要删除文件的时候,你却不能使用这个file-descriptor,因为唯一可用的api是unlink需要的参数是文件名,我长久以来的问题就是你能够从file-descriptor获得文件名吗?我印象中我一直有这个疑惑,难道没有人又和我一样的困惑吗?难道这是一个别人没有遇到的问题吗?unlink也很麻烦,一个inode可以对应无数个文件名,对吧?你如果建立和很多的hardlink,你删除的时候你要把所有的文件名都unlink吗?你能不能直接对inode操作删除文件?(想象看是不行的,因为inode里面有引用计数,只有linkcount为零才可以删除,这是正确的操作系统的设计,所以我这么一想就理解了从file-descriptor来删除文件的思路是错误的,应当把文件名一个都删除或者说unlink然后操作系统自动进行磁盘资源回收的动作。)所以,这是一个没办法解决的问题,在windows下删除文件只需要用handle,linux下必须要用文件名,我的api统一的工作就没办法做到那样的无缝统一,尤其linux下面的临时文件的获得是依靠一个string的library的static buffer,在library级你很难保证多线程同步吧,当然我相信一个合格的library肯定是经过同步了,但是windows的临时文件生成机制应该是api级得比切保证文件的创建而不是仅仅返回一个文件名,这当然是好的解决方案,但有一点点越俎代庖的意思,想象看如果什么都是OS帮你做你能保证只有190个syscall吗?总之这个地方的统一很讨厌。对于mmap和mapviewoffile的统一就更烦人了,windows很无聊地摇你专门为map产生一个handle而不是如linux的同样的file-descriptor,我要包装这个是有点麻烦。对于page-size的问题就更烦人了,听说linux可以不一定是64k这不是又让我去读系统信息吗?烦死人了。大文件的支持就是更加混乱了,究竟fat32支持不支持大于2g的文件呢?linux呢?

这个世界上,大多数人生活在无知无识的幸福中。无知就是力量!Ignorance is power!

看《凤凰资讯》你知道我最烦的是什么节目,不是那些肤浅的广告,不是那些付钱的企业家介绍,不是那些俗不可耐的古董市场介绍,而是有关奥运会的节目。每次看到那些所谓的运动员为国争光的节目我就觉得浑身起鸡皮疙瘩,什么是体育精神?什么是奥运精神?什么是体育的初衷?什么样的体育才是人民需要的体育?对于一个很多人一辈子都无法亲眼看到更不用说参与的体育在国际上大把洒钱有什么实质的意义?金牌体育是谁的需要?用一块金牌好几亿的代价值得吗?多建一座体育馆不好吗?这种政治橱窗除了给当权者粉饰太平以外还有什么实质的好处,对于运动员本身也未必是什么好事,金牌的金字塔顶上只能容纳一个人,大多数金字塔底的运动员未必有什么好的出路。远的不说就说前东欧的那些国家体育金牌注意的牺牲品就可以知道这都是communist dictatorship的玩具而已,如果人民有权决定财政预算我想就不会有这么多的金牌体育了。看看蒙特利尔的四通八达的自行车道,究竟谁受益?olympic gold medal?who cares?

看国内的新闻让我最感到可笑可悲的就是一个根本的共产主义理论框架的错误,这个主义的基石完全建立在人性的自觉自愿,比如劳动者自觉自愿地参加劳动,自觉自愿地只领取自己应得到的报酬,自觉自愿地不去欺压或者take advantage自己的同胞,领导者自觉自愿地履行自己的职责为被领导者服务而不是依靠手中的权力危机谋私,并且这个主义的核心认为人性本善,人性本自觉。对于这个人本善的论断这个主义既不去做实践来证明也不阐明怎样保证,所以所有的方针实践都是以此为基础。难道不是吗?什么叫做“各级领导应当自觉抵制腐败”?这简直是与虎谋皮!什么是人性?食色性也,难道所谓的腐败不是人性?不是人类的本性?怎么抵制?纯粹是开玩笑,简直是弥天大谎,仿佛是皇帝的新装只以为别人都不长眼睛,不长脑子。

今朝骑车何处?圣劳伦斯河岸水清风漫。惜泰晤士河畔略输风采,塞纳河滨稍逊生机,黄浦江口,一片混浊,怎可白帆水上漂?Jean Drapeau岛上风景秀,F1赛道坦而阔,古堡要塞锁大河,炮台风笛惹人连,两座铁桥肩并肩,一条通途四里多,跨江转赴修女岛,杨柳依依曲径肠,十一公里公路赛,一去一回长又长,江上游艇随处见,划艇冲浪更悠闲,日暮天光仍灿烂,一身疲惫把家还,人生快意莫如此,荣华富贵都不求。


六月二十七日 今天天气很好吗?好像是的。

我在实验室里大声地诅咒glut。这实在是无理头的事,你如果编译的时候仅仅用-lglut那么ld报出莫名其妙的错误lglut找不到,你在ldconfig -p|grep glut看到libglut.so.3-->libglut.so.3.8xxx等等,就是说library安装是正确的,折磨了我一个小时之后我才想到应该要-lGL -lGLU因为也许library里面也有什么dependency,这实在是没有道理的事情。

听惯了网络上骂微软的就很少有人骂Linux的,至少程序员不敢骂吧,怕被别人笑话外行,反正我是不怕,linux照样骂,居然一个文件系统的设计在根本上不支持大文件,linux是什么时候开始的,会有windows16位操错系统兼容的负担吗?为什么lseek不直接支持64位文件偏移却另搞一个lseek64,同样mmap也是一样的不彻底,当然你可以argue说32位操作系统的理论内存上限怎么可以map到超过4g或者2g以上呢?可是文件毕竟和内存不一样的,你并不需要把所有的文件部分都同时映射到内存吧?这有点扯远了,但毕竟说明了设计者的前瞻性不够吧,一个linux毫无兼容性的负担,而且新内核的撰写也不过是近几年以内的事情却还是这样的不彻底?这一点让我怎么也不能接受!至少win32这一点上要好一些。从图书馆借的一本gnu开发指南之类的书看了之后就独自不舒服,在国内看惯了滥竽充数到了这里偶然看到类似的很是气愤,当然跟人水平不一见解不同很难强求,只是不说不快,反正我看到把一大堆的syscall和librarycall并列混合使用实在是由误人子弟之嫌,当然这种挑选变成代码最少化的做法对于计算机专业以外的用户如物理化学生物数学商课等等是有速成的好处,但对于真正开发者来说有误导的弊端。甚至本人私下揣测作者原本可能就是这么干的,所以当作新的写下来,致使冠以GNU开发恐怕是玷污了这个金字招牌。当然说句公道话并不是一味地使用syscall就是最高效率,比如我至今还记得那个字串操作的经典例子,在编译器重scanner逐个字符处理这时候难道你每次都去call-read(linux)或者ReadFile(windows)?这简直是就是迂腐了,这个时候要么自己内部设缓存,一次读入,要么还是用library的fgetc因为它内部就是做了缓存的。但这个例子并不时要反正应该混合使用syscall和library,一般来说在最紧要的部位应该完全使用syscall。这样说我觉得是由理由的因为很多人根本不重视这个问题,比如今天随便google就发现有人出的cheap点子,什么GetTickCount对应的linux为times,请注意这个是有带s的time而不是那个syscall的time,总之我觉得很多人对于这两者的区别并不以为然。关于g++我也是早有微词的,借用Dr.Grogono的话说就是很多时候实在是nuisance!比如我应为效率的关系作了一点点地hacking,就是把vector的begin当作数组的头指针来用,这样当然是危险的因为vector的设计着从来没有保证这样可以,可是我看了源码应该是可以的,而且stl从来就使用源码的也就是说公开的不存在说实现可以遮掩的问题,所以移植也不成问题,在vc6编译器不喜欢但是也不干预我的强制转换,可是g++就非常的鸡婆直接报错,连申诉的机会都不给,我想设个什么开关能够放宽语法检查的尺度,可是g++的manpage是在是如天书一般难懂。另一个无法解决的问题就是std namespace总是有很多的冲突,我居然连string都不能正确编译,实在是太夸张了,明天最好把using namespace std;曲调全部使用std::xx这样应该可以屏蔽掉一些nuisance吧?晚上步行去春明家吃饭,饭后闲谈说道中国的未来,我很赞同一点就是中国不可能走日本成功的道路,因为13亿人不可能达到人均GDP3万美元的水平,在过两百年也不可能,所以从这点来看中国的所谓经济学家说的也对,所谓共同富裕那时蒙人的,中国只能用大多数人的贫困早就少数人的富裕,所谓“让一小部分人先富裕起来”。中国的穷苦百姓应该自觉意识到自己的贫困受剥削是对社会的巨大贡献,鞠躬尽瘁死而后已,饿死千万家才能幸福某一个。酒足饭饱之后步行一个半小时几乎绕行downtown半周才回到家,路上不小心发现蒙特利尔的国际焰火节正在如火如荼的进行中,火树银花不夜天,万家欢庆也平常,所谓幸福和谐本来就是平淡得如同一汪死水一般少有波澜,否则又怎么说得上和谐稳定,难道说天天惊心动魄的提心吊胆使人人所追求的幸福?晚上再读自己前年夏天回国写的随感,感慨颇多,时过境迁再也难以有同样的文字与激情,所谓人生就如希腊先哲的那句话一般,一个人永远不可能两次踏进同一条河,可是一个人却可能在两条不同的河里翻下同样的错误,不是吗?所谓人生就是一系列的偶然与必然的交织。转眼间我来到蒙特利尔已经快要整整五年了,这五年的经历我想使我一生最充实的日子,就算一生结束的时候也可以安慰自己我的一生并没有全部虚度。屋顶的天窗凑趣地响起了密集的雨滴声,家事国事天下事,风声雨声键盘声。


六月二十八日 今天天气很好吗?好像是阴天的。

昨天无意中谈到编译器改变stack的大小,我argue说用bineit都可以这不是编译器的特权,为什么stack大小可以在可执行文件级进行修改?问题很简单想一下就知道,声称代码的时候几乎不会用到stack的大小,所有的函数代码都是相对于stackbottom的相对偏移,也就是相对地址,而一般的系统都是把stack放在高位内存,总之编译器99%的情况不会用到stack的大小,stackoverflow的错误99%试运行期的错误,在编译期能够遇到的几乎为零,当然尼古意在函数里面声明一个超大数组让编译器抓到除外,基本上我猜想stacksize就是可执行码里面的一个初始化寄存器的变量而已,所以当然可以是对可执行码修改而不需重编译,所谓stackoverflow都是间接寻址时候把相对地址变为绝对地址的时候让OS发现异常的pagefault的。

什么叫做乌龙?在linux下使用STL的string,你的头文件是什么?我以前很模糊,vc6帮你做了很多工作,结果你就变成了sheep,在linux下你也重新恢复野性才行!要#include<string>注意没有.h也不是cstring。另外要休整一下昨天的妄言,linux的确支持大文件,你只要定义一个macro,__USING_LARGEFILE就可以了。

今天在实验室里干了多少个小时呢?我想有十二个吧?总算有些成果,linux算是胜利成功了,唯一现在不清楚地就是64位机器是否有问题以及大文件处理是否还会有问题,明后天解决MPI部分和远程图形部分,应该问题不大吧。

伟大的Mokhov极其迅速地解决了我的难题,实在是佩服的不行!!!


六月二十九日 今天天气很好吗?好像是。

创建文件的时候居然忘记给自己读写的权利,结果我自己创建的文件我自己不允许打开,实在是可笑,但是我却可以删除,mv的时候报出的错误是我不能打开?记住open的第三个参数射程类似660之类的,当然就是S_IRUSR|S_IWUSR|S_IROTH|S_IWOTH. 此外都是老调重弹,libxxx.so.xxx必须要建立一个soft-link比如libxxxx.so否则你就只有-lxxxx.so.xxx之类的吧,(没试过应该是这样。)先用module load mpi才能正确进行编译,我猜想是设置了什么临时的环境变量,mpiCC否则找不到mpi.h吧。运行srun你可以自己指定运行的节点,比如mpiexec -srun -N4 --nodelist=n81,n82,n83,n84 ./renderBox.exe不过我现在居然不能正常地运行graphic程序,找以前的mail出来看也找不到了,看来一定要记录下来。

六月三十日 今天天气很好吗?好像是。

一个人对于承诺的态度是什么反映了人生的态度,我想我应该算是完成了当初的计划吧,现在一切的一切都不在我的掌控范围了。任何一个job你都可以用srun来进行分配,典型的是指定多少个node和多少个process(-N#),加上--nodelist=n34,n32是指定运行的节点。而你运行的时mpirun,而不要运行mpiexec,这个mpirun所带的参数本身就是-srun。squeue,scancel可以让你停止背后运行的任务。登陆到cirrus之后运行sva_remote.sh这是在opt/xx下的HP的一个脚本,这时候如果你是在学校的linux上你可以直接访问那个安装在/encs/bin/rgreceiver.sh,他会启动remote-graphic-client,注意不是在登陆cirrus后。不过我总是连接不上好想有什么安全验证的问题。此外你编译之前module load mpi,退出module unload mpi。我想我已经重复这些破烂玩意几十遍了,说到底都是AITS那帮人设定的迷宫,完全无意义,不过话说回来这种复杂的网络管理也只能这样,否则软件冲突实在是个大问题。

每天每顿都只吃盒装虾是在是乏味了,今天决定蒸鸡蛋吃,结果变成了海绵状,真是烦人。

精彩绝伦的评论!这是<Yes,Prime Minister>里面关于英国新闻报纸的概述。


七月一日 今天天气很好吗?好像不是。

看到网络上的中央电视台的《东方时空》新闻报道里面的山西黑窑工,其实文字的报道要更加的耸人听闻一些,耳听是虚眼见为实其实也不然,实际上使用童工有罪吗?窑主犯罪了吗?我看未必,因为这些基本上都是当地政府努力发展乡镇经济的一项政策,要在激烈的市场竞争中脱颖而出不靠奇招狠招能行吗?都说中国的劳动力价值低廉,可是再低廉也还要付工资呀,和越南比起来还是太贵了,所以在全球化的今天我们应该鼓励农民工不要工资全心全意为建设社会主义作奉献,老一辈的工人阶级都已经奉献一辈子了任劳任怨,为什么年轻人不可以继承老一辈的无产阶级光荣传统继续发扬一不怕苦二不怕死的精神舍生忘死为建设小康社会和谐社会奉献青春苦了我一个幸福千万家让一部分窑主先富起来逐步走共同富裕的道路?为什么现在的年轻一代觉悟这么低应该向他们的父辈们学习时刻准备着为共产主义献身(女孩子)出力(男孩子)!应该理解当地各级政府为早日改变农村的落后面貌而做出的努力方法上也许粗糙了一点但是出发点还是好的当地的主要领导还是好的广大基层公安干警还是尽职尽责的各级检察机关法院劳动用工部门还是恪尽职守的奴隶制在社会主义中国还是一个并不普遍的现象是某些人对社会主义初级阶段的错误认识,应该看主流应该看到全体共产党员并不是100%都赞成奴隶制的,比如中央政治局就从来没有说过工人应当不给工资我们的宪法法律有那一条说农民应当被奴役?当然如果那些农民工他们自觉自愿不领工资不远千里从河南来到山西热情支持山西当地的经济建设当地的各级政府自然不能打击这种社会主义大家庭里人与人之间互相帮助互相支持的阶级情谊,不但不能打击还要给于那些主动热情介绍这些响应当年上山下乡从城市里面来帮助农村脱贫致富的河南籍同胞一些精神和物质上的鼓励希望他们能够介绍更多的有志青年来到广阔天地实现大有作为的理想,各级政府特别是劳动用工单位一定要尽最大努力保护和支持广大社会青年积极参与建设社会主义新农村的伟大实践尤其要贯彻多快好省的方针树立一切以经济建设为中心的原则为发展有中国特色的社会主义市场经济保驾护航齐抓共管大力整顿少数扰乱市场原则哄抬农民工工资水平打击农民工无私奉献的热情的现象坚决铲除少数破坏当地市场经济秩序的害群之马坚决刹住农民工工资乱涨价的歪风大力营造良好的投资环境牢固树立只有发展才是硬道理的观念坚定不移地走以经济建设为中心的道路走有中国特色的发展道路走自己的路让媒体他们自己去说吧。

七月二日 今天天气很好吗?好像是。

看到网络上一片所谓嫁给日本人的校花的悲惨生活的文章觉得很好笑也很幼稚,非常疑惑是否这种类似于刚解放的时候“新旧社会对比式的控诉会模式”的教育方式会有国人相信,转念一想岂止会有人相信可能还大有人相信的,比如我来加拿大看到的最平常最朴素的道理在国内天天看《新闻联播》之类的节目是一辈子也想不明白的,这就是“教育”。在古代是用剥夺教育权的方式来愚民,近代是用八股取仕之类的仕途教育来愚民,现代就是用媒体过滤信息轰炸的方式来愚民的。什么是媒体过滤,就是孔夫子并不骗人但是孔夫子“笔删春秋”却可以把自己的观点强加给读者,也就是我只挑选特定的新闻信息来给你。这样的例子还少吗?中学学历史的时候我敢说课本里面基本上说的都是事实,以至于中国古代文明的伟大深深烙印在每个人的心底里,教材骗你了吗?教材里面说假话了吗?不一定,也不用,因为它不会告诉你同时期甚至更早的时候其他文明的发展情况,或者就是告诉你也是一笔带过轻描淡写,这就是笔删春秋你看到的是我希望你看到的,我没有说谎但是我也没有告诉你我所知道的全部。在英语里面这个叫做Omission and Commission一个是有意识编造的另一个是有意识隐瞒,平常人大都在意的是一个人是否说谎,对于不说谎但是并不主动告诉你全部信息却是宽容的,所以没有人说孔夫子道德沦丧欺世盗名,可是从信息的角度来看这两中心为本质上都是相似的欺骗。所谓信息轰炸最典型的就是希特勒手下的宣传部长葛佩尔的名言“谎言说过一千遍就成为真理”,在中国古代最典型的例子就是“三人成虎”的成语来由,一个人也许原本有着自己的观点看法与判断,但是在一个众志成城的社会是不可能生存下来的,比如文革刚结束的时候有一部《苦恼人的笑》的电影讲的是一个记者每天在四人帮的爪牙威逼下在报纸上瞎编很苦恼总想能说真话,后来被洗脑,作为普通人则很可能被无休止的《新闻联播》轰炸的思想麻痹,渐渐的你会有一种定势有一种习惯把新闻当作现实把谎言称作真理。我和W讲述西方对社会主义制度认识最深刻的两本小说《动物庄园》和《1984》,这是乔治奥维尔的著作,基本上对于中国的读者来说是一本禁书或者从来不敢宣扬的恐怖的作品,因为揭露的是那样的深刻以至于统治者甚至不敢称之为禁书而招致国人趋之若鹜,反而采取不闻不问的低调以便只让最少的人群发现。《1984》对于媒体轰炸的描写是深刻的,一个人的思想是很容易受外界所左右的,尤其在由国家及其配合下的媒体洗脑食无往而不胜的。小说中的“思想警察”头子有一个经典的说法就是,单单从肉体上消灭持不同政见者是简单的也不是这个政党所愿意做的,从思想上改造使之从内心深处由衷地抒发对老大哥的爱戴之情那才是教育的最高目的,为达到这个境界思想警察的手段是非常犀利的,首先从人格上摧毁你的信仰,男主人公最害怕的是黑暗中的老鼠,当思想警察威胁他的时候他不自觉地要求把自己的恋人也就是一另一个女性持不同政见者替代自己进黑暗中的老鼠笼子,这个摧毁了主人公对自己人格的自信从此再无什么信仰得以依赖,乖乖地顺从然后是内心由衷地感激思想警察对自己的灵魂的拯救,在小说的结尾男女主人公都从“教育部”的特别教育室里放出来在路边咖啡馆里如行尸走肉般耗费生命,彼此完全没有任何的超过路人的感觉,在这一刻主人公面对电视画面上庄严神圣的党的领袖“老大哥”同志的画面在内心心底里自发地发出了比鲁迅的《呐喊》还要高亢的呼唤“我是真心爱戴老大哥的”(I love big brother)。这就是“教育”的威力。西方政治著作里常常引用的经典的名言“Big brother is watching you!”就是来自于这本小说。

七月三日 今天天气很好吗?好像是。

问:你是已经参加工作了还是现在还在读书呢?
  是啊现在还在读书,在中国这是不可思议的事情,反正在加拿大这个无所谓,你爱干什么事你自己的事,政府给的助学金加上贷款刚好够我生活,偶尔的还可以去些便宜的地方度假,总之加拿大穷人的生活就是你并不知道你确实有多少钱,但是你一定知道你没有多少钱。haha

问:七一有没有看香港回归啊,是否应该发表一下回归感想啊,十年,对香港来说应该只是一个开始,希望香港的未来更加的好。   七一香港回归?哈哈。我觉得比较funny而已,中央为了证明自己所谓的一国两制是一个好的方案在香港投下了不少的血本,金融中心繁荣有多少不是中资公司的钱堆起来的?所谓的中资公司有多少又不是各个国营单位小金库,贪污腐败的需要?我在国营外贸公司待过知道大陆的公司在国外开办事处子公司是什么名堂,无非是当官的转钱方便,在国外华钱方便,反正那里一般财务处那很多都是一个人兼职的,先期头的钱花光了就回国吧。这就是香港当初繁荣的一个原因。 什么叫做领导者的亲民作风?有什么理由不应该是亲民的?那个现代社会的领袖会高高在上摆官架子?只有中国一个当官的近了一点本分被说成是廉洁,对普通人的起码的尊重被说成平易近人,这些都是渔民政策教育下的良民的反应,只能让鲁迅之类的人感到悲伤,因为国民的素质就是如此。 香港回归十年有什么可值得夸耀的地方呢?香港的繁荣是那些香港人拼命工作的努力,是大陆十几亿的人的辛勤劳动成果在不平等的社会制度下不公平的倾斜,是中国政府官员腐败的副产品,是一个殖民地社会当初遗留下来的良好制度的基础,除此之外有什么呢? 香港的未来?一个五六百万人的城市当一个有十几亿人口的大国政府不合理的倾斜政策的时候怎么着都会繁荣的,花钱推也推得出来,作为中国政府所谓一国两制橱窗的香港相邀他繁荣自然就繁荣,问题是谁来买单?加拿大议会里议员们每年争来争去的就是联邦政府因该返还给各个省的税金应该多少,每个省的议员代表向着的就是本省的纳税人的利益,联邦是大家养着的,总理也不过就是协调关系的一个行政首脑而已,这才是所谓的人民代表。不然什么是人民?不要跟我说什么抽象的名词,人民就是你我,就是这些普通人,没有所谓的全体人民利益,因为它是由各个分子所组成的,没有你我的利益拿来的人民的利益。那种到谁家里做客就带一台大彩电然后听人说好话的工作让谁敢都感的一样好,用得着什么主席总理来干嘛?花钱买漂亮话会不会啊?

在加拿大生活最满意的地方就是你有沿街乞讨的权利,因为这是你的生活方式,你觉得饿了就去救济站领吃的,然后你可以在太阳地李白探讨一些烟酒的钱,过往的人要给你钱的话还要摆出一幅尊重的样子弯腰小心地把钱放在你的盒子里以便不伤害你的自尊心。其次你可以开怀痛快地骂政府,我对加拿大政府除了感激没有什么可以表达的就只好骂远在天边的GCD,注意不是(greatest common divisor)。


七月四日 今天天气很好吗?好像是。

诚如你所说这就是核心: 我始终认为大陆之所以用钱来堆砌香港之是为了做给台湾看而已,所制造的繁荣景象也是做给全世界的人看。   这也就是我讨厌的共产党的作风,当初骗农民加入人民公社,片资本家公私合营,骗人民支持他们那套封建统治,统统是卸磨杀驴的伎俩。

wmpi要下载后24小时才把license_key发过来。今天看能不能把NFS设置好,这实在是一个大笑话,这么多天这个简单的东西没有解决。linux下所谓的library的设置大约和windows类似,不同的是系统目录一般是/lib或者/usr/lib,/usr/local/lib,不存在lib和dll的区别,因为没有所谓的stub链接就是头文件+可执行码,静态库一般命名为libxxx.so,动态库命名为libxxx.sa,这样链接时候可以不写全名只写-lxxx,哈哈,这是超级基本的常识,如果你要解决lib版本的冲突,就用symbolic-link,如果你的library不放在默认目录,要自己设置环境变量LD_LIBRARY_PATH,bash下这么写LD_LIBRARY_PATH=....;export LD_LIBRARY_PATH。我想这些超级简单的东西还是去记一下,使用任何的工具都不如这个来的直接,那个什么ldconfig之类的也不过就是一个小工具去读ld的一个类似cache的文件,这个工具本身都不一定有安装,而且我经常被unix和linux的不同命令所混淆。

/opt/hp下面有我所需要的所有hp的文件,包括mpi,remote-graphic,一下是那个穷鬼slurm的命令:

scontrol show partition显示了当前的partition。sinfo显示了当前的up的partition猜想如此。

scontrol show configure显示所有配置。

squeue -u qingz_hu -t all显示我的任务的状况。

srun hostname我在哪?man slurm.conf帮助文件

PA买的sunkist橙子有问题,怀疑不是美国加州生产的,看来又要重新吃苹果了。
在网络上向找一找王朔的个人博客,看看这可我认为当代中国最伟大的文学家的活思想,可惜找到的并不太像,好像一个小孩子伪造的博取小女孩欢心的淫巧。

我总想反复地告诫国内的无知的小孩子一个简单的道理,对于如何处置俘虏是胜利者的特权,期望战胜者的宽容是很幼稚的,所以对于南京大屠杀之类的事情要客观地看,并不是什么日本侵略者特别地残忍,而是这是战胜者的选择,换作其他国家也有可能做出类似的行为,作为胜利者以任何方式惩办失败者是你的权利,中国放弃自己所谓的胜利者的审判权本身就是一个问题,有可能是信心不足的表现,换言之中国是否是二次大战中的真正的战胜者?这种事情在第一次世界大战结束的时候就发生过,当时北洋政府押宝押对了,一战结束本是所谓的战胜国,结果对于所谓的战败国德国在中国的殖民地居然没有权利去索回反而被另一个真正的战胜国日本接管了山东,二战结束和一战结束何其相似,不是自己真切感受到的胜利不懂得战胜国的心态,仿佛一辈子当奴仆别人把你放在主人的位子上也摆不起主人的架子,所谓扶不起的阿斗而已。所以,放弃战胜国对于战败国的惩办就不要再回过头来说什么,这点骨气都没有只会让真正的胜利者看扁,所以不要总是喋喋不休地谈什么反省战争之类的妇道之见,真正的日本人根本就看不起这种幼稚的想法,只有战胜国的声音会留在历史的记忆中。 每次看到国内一帮人津津乐道地跟人本人争辩南京事件中究竟日本人杀了多少中国人,强奸了多少妇女,究竟你证明了不是三万而是三十万又能怎样?为了什么?so what?仿佛再说一句潜台词:作为一个正常的侵略中国的国家拟在一个城市可以屠杀的额度应该是三万,结果你超过了十倍,这样不对,你应该反省,如果你不反省就有可能下一次侵略的时候再次犯超过配额的错误,如果你认真反省承认你超过杀人配额的话我们就既往不咎同意你有可能在将来的侵略战争中不至于在犯超过配额的错误。


七月五日 今天天气很好吗?好像是。

今天实在是一个混乱的一天。早上出门命名就在向是否应该把牛肉墩上,结果一走神就忘了,在实验室突然有同学来说你家着火了这才想起来往机关炉子了,跑到家一看连救火车都来了,屋子里面还好无大碍,不过有些狼藉。

1。有的成需要运行时候必须在我的home-directory执行,所以RGS不能正确显示的原因是我的directory没有chmod o+x。

2。sftp可以直接作文件的读取,暂时把nfs设置放一放,注意防火墙的设置,在system-setting/security-level里面把ssh加入。

3。在ssh窗口里面不能正常运行图形程序的原因可能是x-window的问题,比如你用ssh -X登陆就可以解决这个问题了,joel给了一个hack的办法就是先用srun -N1 --nodelist=n81 cat运行一个程序让我们随后的ssh可以自由登陆n81部需要密码验证,这个时候ssh n81.cirrus.private -X就可以正确运行OpenGL的程序了。

4。现在在RGS里面我运行mpi程序还是不行,程序就PD(pending)等待资源分派。比如mpirun -srun -N4 --nodelist=n81,n82,n83,n84 myProgram.exe;如果我当前的RGS登陆的是n81程序pending,如果登陆的node不再nodelist内则立刻出错和x-window的错误类似。

头疼啊,头疼了。


七月六日 今天天气很好吗?好像是。

RGS是可以允许多个连接的吗?试验一下吧。目前发现的问题是mpirun设定的nodelist如果包含了RGS正在访问的节点系统就会pending等待resource分配。现在还未触及图形的问题,如果能够在每个节点运行x-server也许就可以解决吧,太复杂了。

NFS有防火墙的问题,如果iptables没有允许nfs:tcp的话爆出unable to route的错误。但是service iptables stop依然有permission denied的问题。正常在system-setting/service里面可以开启nfs服务,但是手动起动也可以吧,portmap,rpc.mountd,rpc.nfsd,rpc.statd,rpc.lockd,rpc.rquotad,但是我看到一个问题就是这样其懂得daemon的用户名是rpcuser,不知道这是不是问题的症结。设定完/etc/exports之后可以用exportfs -ra刷新,如果用dirname   ip1/ip2(rw)格式说明ip1到ip2之间。

这个问题讨论了很久依然没有结论:两台linux,A,B,我在A上用ssh -X登陆B运行一个B上的图形程序,比如openGL的程序,在A上会有图形窗口,那么用ps看到的这个图形进程确实是在B上运行的,但是它是否是使用了B的显卡,还是说简单把B的pixel发送给A的window?我认为是使用A的显卡,因为B的window根本看不见操作系统压根就不会把它发送到显存,应该是X-window的client端发送给在A的X-window的server端(正好和ssh的client-server颠倒了),但是具体是怎样的呢?

看泰国的《拳霸》感觉中国武术花架子太多,作为健身的成分大于攻击的成分,比如用脚来共计有攻击距离长的有点但是力度肯定小于膝盖,泰拳里面膝盖的大量使用非常的凶狠经常可以是致命的。

<Yes, Prime Minister>可以是我最有价值的收藏,物超所值,amazon明码标价要一百多,我从amazon的网上商店买的,一个laval的小零售商差不多只有一半多一点的价格。


七月七日 今天天气很好吗?好像是。

从小到大都接受的一个教育让我丧失了真正认识一个事实的机会,比如我从出生就被灌输的人民军队鱼水情的观念,仿佛这是人民军队的特权,仿佛一切反动派的军队都是鱼肉乡里的土匪流氓,平常没有人去怀疑因为在中国的历史上历朝历代的军队从来就是像土匪一样。但是有多少人会认真向想一想这种所谓的军民鱼水情真的就是所谓“人民军队”所独有的吗?任何正常国家的军队不都是来自于人民吗?有雇佣军吗?对于国防军来说几乎没有。那么单单所谓的“人民”军队的人民二字就是一个幌子,美国日本欧洲发洪水,火灾等等重大自然灾害的时候哪个国家的军队不是身先士卒救民于水火之中?因为这些士兵是纳税人的钱养着的,当然有义务就老板,这个很难做到吗?在厦门看到的兵痞子不应该仅仅是PLA的个别现象,部队的腐败决不是什么一朝一夕的事情,清帝国的腐朽与灭亡决不是仅仅是慈禧一个妇道人家的责任,帝国的军队是最先体现王国迹象的地方。看《凤凰资讯》里PLA参加亚太军事论坛实在是一个让人哭笑不得的时刻,参加这样一个高规格的国际论坛相信PLA肯定是精英尽出在国际橱窗上展示一下,可是我看到的依然是一个三四十年前的停滞不前的样子,仅仅从一些浮光掠影里看到的,(原本就只有这么几个镜头)从一个细节就看到一个高级的现场传译简直还不如一个外语学院毕业生的水平,我可以猜想这其中的原因,这个军队的体制决定了他不可能吸引选拔最优秀的人才,军事院校历来是高考落榜生的汇集地,参军是农村青年和城市失业者无奈的选择,部队里面假大空形式主义政治挂帅帮派林立是一个彻头彻尾的大染缸,难怪复转军人常常会觉得脸中国军队这种地方都带过了没有什么困难不能克服的,美国日本的军队虽然不是绝对的精英荟萃的地方,但是绝对是吸引到不少的优秀人才,日本自卫队是十几个大学生竞争一个,美国西点军校不是随便都能报考的,需要本州的国会议员写信推荐,环顾世界哪个国家不使用最优秀的人才打造军队?和世界上最优秀的精英对抗八旗子弟掉这三个代表的大烟枪能和谁对抗?一个翻译的英语水平原本不能代表什么,但是如果两一个像样的翻译在军队系统都找不到你就制导这个系统的问题有多严重了,我们可以大胆的断言很多所谓的高科技的武器在中国根本就不会用,当官的怕咏怀也不敢担责任,这就是中国空军飞行时数远远小于美日的一个重要原因,战场上没有什么可以向在中国官场上投机取巧的地方,可以蒙共产党的干部可是你蒙不过美国飞行员的导弹,迟早有一天中美或者中日要有一场较量,那个时候共产党政权垮掉没什么只是如果中国没有尽早建立第二种政治力量那就是老百姓的灾难了,所谓为天下苍生计不得不为也。

读HP的HPC的文档实在是有些头疼。

看马英九的宣传实在是觉得这是一个小官吏竞选的架子,所谓的政治家引导民意,政客操弄民意,只有像马英九这样脑子缺乏主见的官吏会被民意所左右,比如布什就算是一个介于政治家与政客间的人物可以冒天下之大不韪坚持自己的理念,人民不需要一个彻底的政治家,如果普通群众觉得你跟他们没什么两样干吗还要选你做?自己就当总统好了!你要用自己的信念震撼普通的渔夫渔妇,所谓《围城》里所说的政治家与医生一样都是要以谎言来对待平民的,这不叫欺骗这是手腕,人类社会里超过80%的人都是在多数方面无知无识的需要专业人员的“引导”,换言之“欺骗”。政治也是一样,有些东西怎么可以明说?怎么可以明做?一个连自己的主张都不确定的人能当领袖?天天摇摆不定希望左右都能逢圆?稍有主见的人都不会将国家的领导权交给这样不可靠的人,马英九的落败是必然的。

我发现了一个办法,用RGS连接到所有我想要运行程序的节点,然后不要再用“srun”而是直接用mpirun -hostlist "n81 n82 n83" ./mympiprog.exe这是因为运行sva_remote.sh以后应该就是用srun分配了资源,只不过它只分配一个节点而已,不过这个做法太笨了,同时我还是无法运行图行程序,远程的图形还是失败,相信是x-server的问题,还要读HP的文档才行。此外在hp的sva目录下有每一个进程的设置文档,这应该是关键,可是我就是找不到sva_remote.sh在哪里?一时火起花了几分钟自己写一个小小的find,可是linux有点白痴,命令行参数不能带*这让我很郁闷。


七月九日 今天天气很好吗?好像不是 ,下雨了。

很久很久以前,就是大约半年多前,我曾经追踪过glut发现了从远程窗口创建新窗口不能立刻获得显示(准确地说是从icon变成窗口)的问题,改了一个参数然后号称自己hack了glut,现在我已经找不到我在那里做得因为没有加注解,花了半天才从source-safe里面找到,是这样的:
the file I hacked in glut is "glut_win.c" and what I did is like this:

//////////////////////////////////////////////////////////////////
  //here is what is hacked by nick//
  //The original WS_XXX doesn't include WS_VISIBLE and I added so that child window
  //by default is visible.
  window->win = CreateWindow("GLUT", "GLUT",
    //WS_CLIPSIBLINGS | WS_CLIPCHILDREN | style,//modified by nick
WS_CLIPSIBLINGS | WS_CLIPCHILDREN |WS_VISIBLE | style,
//////////////////////////////////////////////////////////////////
//end of hack by nick//
    x, y, width, height, parent ? parent->win : __glutRoot,
    NULL, GetModuleHandle(NULL), 0);

教训就是要登记留念否则就化为乌有了。花了将近两个星期断断续续地没有解决的NFS问题终于获得了解决,原来都是防火墙在作怪,(我想还有别的干扰因素吧,才会有时可以又是不可移,有的可以有的不可以。)那么启动nfs服务最稳妥地还是用shell的service nfs start不然那些daemon谁知道有没有顺序,并且要把service iptables stop先执行来关闭防火墙。/etc/exports下面最好用ip地址,改变后用exportfs -ra来刷新,但是不同linux版本又会有不同的参数设置,什么sync,async,我没时间考虑这些了,ignore warning。

我自己写的那个小小的find有不少问题,哈哈贻笑大方了,第一,linux有一个独一无二的目录参数就是根目录“/”这个很讨厌,你不要在他的后面加"/"了,因为所有其他目录都可以约定说目录候补根"/"而是由程序自己加"/",唯独linux的这个不行,这恐怕也是windows必须要加drive名的一个小原因吧,最严重的是我opendir却忘记了closedir,压根没有一个意识,结果系统因为你开的文件太多就报错了,我想编程序以来很少会意识到实际上opendir就是用open来做了一些复杂烦人的事情,今年做comp444的TA明白了opendir是怎么回事。那个读取的过程很烦的。

我都快饿晕了。搏斗了一天,终于完成了wmpi的linux下的配置与 程序运行。 期间真有如西天取经一般的困难,发现了不少的稀奇古怪的东西,比如我的linux mount 一个fat32的windows partition作为平台间的交换区,同时网络里每一台linux都把所有其他linux的文件mount到本地,结果那些在nfs下mount的远程电脑的文件系统中的fat32的mount是看不到的,就是失败了。文件拷贝的时候有一个错误就是拷贝到远程文件中的文件的owner成为乱码,只能在本地拷贝远程文件到本地才行。wmpi的配置文件有两类,一个是所谓的license配置文件,这个linux的配置文件是和windows不同的,在/etc/wmpi2/wmpi2ls.conf指明了license服务器的名字或者ip,所有的workstation都要的,其次,在可执行文件的wmpi2.conf实际上是告诉运行期的workstation的名称,对于program.pg2则是包含更多运行信息,如程序路径,运行的process个数,运行机器名,同样的master名字可以而且必须省略。linux的graphic driver现在看来是个大问题,据说要重编译内核,这是在有些恐惧。另一个令人不安的是我原本认为后台运行的daemon不能正确产生在前端运行的window程序,因为我认为子进程是依靠父进程进行消息循环的,如果父进程根本不可见有怎么能够行呢?可是现在wmpi的linux版本否定了这个想法。一定要和hp的技术支持直接联系才方便。

此外把那个贻笑大方的simpleFind的正确的linux版本贴出来。(TNNDemail发错了,明天吧。)


七月十日 今天天气很好吗?好像不是 ,阴天了。

正确的simple-find贴出来,很简单但是everyone can contribute a word.花了一个早上安装linux的显卡驱动,Nvidia稍微麻烦一点但是很有效,可是ATI的安装程序很简单却没有效果。安装显卡的时候Nvidia需要关闭x-server,用telinit 3并不太行,最好是该/etc/inittab里面的默认runlevel为3重新启动安装sh driver。

copy or reference?

在洗衣房等待的时间是我唯一能够静下心来读书的两个时间,另一个当然是每天早上起来后进行得新陈代谢的活动时候。唯一得到的一点知识就是x-server靠的事网络通讯协议来交互的,比如TCP的异步传输,所以他的所谓的display就是一个hostname:displayIndex:screennumber,所以,前两天的那个疑团得到了一个最终的答案,实际的显示设备是由这个所谓的display指定的,当然这个前提就是你要在这个host上运行有一个X-server,这就是Dr.M所谓的client-sever正好相反的意思。因此显示设备和render的运行时可以逻辑上分开的,完美的设计完全给予网络化的设计。

Linux设置局域网连接实际上很简单,使用Internet connection wizard或者直接改system-setting/network里面的设置,可能主要是我的router设定成只接受一个固定ip地址范围,所以还是不要用dhcp,局域网连接设定完毕之后一定要设定dns server,最好查isp的现在值,这个总是在变的,没有什么好办法,时时更新吧。

连一个简单的tar的参数都需要记忆真是麻烦,因为看manpage根本就不明白什么叫做过滤,tar -pzxvf file.tar.gz,有些说明根本不是对于一个完全没有压缩常识的我来写的,这就是烦人的地方。看到一个什么"equivalence"的设置就是在/home下的.rhosts里面列出不需要密码登陆的host。但是我现在连linux的hostname都设不对,openGL压根没有安装居然没发现确去安装glut难怪有错。


七月十一日 今天天气很好吗?好像不是 ,阴天了。

linux下运行的mpi的daemon是无法写文件的,因为是daemon,只有用syslog,像lam-mpi那样可以把节点的输出导入master节点绝非自然而然的,是一个extra-effort的实现。记住,syslog存在/var/log/messages内,一般以文件名为entry,我想如果能够调用opensyslog就可以创建一个文件名了吧。试一试喽。cat file1 file2 > grep "key1 key2" > result.txt

七月十二日 今天天气很好吗?好像是 。

大概一个人开始接受linux需要在使用计算机大约五年以后,至少这是我的case,当你希望不花钱就安装所有的网络应用的时候,当你想要diy所有的事情的时候就知道GNU的伟大。设定ftp是这样的,在/etc/init.d/vsftpd start,你如果想要改变配置文件,/etc/vsftp.conf,如果想让什么用户访问的话,改动vsftp.ftpuser和vsftp.user_list,因为里面默认是deny的,所以要comment掉。今天印度小孩又在网上面试作题,看到一个很好的东西,就是#ifndef  xxx #define DEBUG(X) 这个是非常危险的,因为如果那种懒惰的程序元写的代码就会有问题,比如if (!a) DEBUG("GOGO")因为这个if会爬到下一行的。另一个很有意思的是汇编伪代码,比如一个架构的机器有两个register A,B; two memory location 0,1;two instruction: store reg mem: stores contents of reg to mem in memory. sub mem reg; subtract contents of reg in register from contents of mem in memory. Now question is to design a instrctution to copy reg to anther reg. Is it trivial? I don't think so. Think about it and can you optimize it?

今天去kayak,忘了怎么拼了,反正是独木舟,很好玩,这就是加拿大人最喜欢的运动之一。


七月十五日 今天天气很好吗?好像是 。

不知道改动了什么linux的eth0又无法连接来,mii-tool显示no link这是什么原因呢?会不会使我删除过nic之后的问题呢?今天又尝试了另一个办法,就是sva_remote.sh脚本里面有分配render,compute的参数,道理可能和srun之类的一样,但是问题是否是x-server的问题嫩,好像脚本里面有启动所有的node的x-server,(不很确定,因为对于脚本参数判断语句不甚了了。)尝试sva_launch_x_server结果本地结束,远程由hold在那了。但是不管怎么说sva_remote.sh -r n -c m -I给了一个途径,现在需要看glut_init的linux源码到底是否是x-init的错误。

下午去chinatown给手表换电池,顺便测试帐篷,晚上和王林森研究camping的路线,yahoo的map比google-earth好多了,加拿大的信息化程度非常的高,基本上什么都可以在网上找到。


七月十七日 今天天气很好吗?好像是 。

我曾经发誓拒绝学习脚本语言,可是今天不得不学因为要读懂HP的脚本。$n代表命令行参数变量,$#参数个数,$*或者$@全体参数,$?代表执行结果0或者非零,>重定向输出到文件创建新文件,>>添加到旧文件结尾,-n str  mean not NULL and exsit; -z str means is NULL and exist.
-s file    Non empty file
-f file    Is File exist or normal file and not a directory 
-d dir     Is Directory exist and not a file
-w file   Is writeable file
-r file    Is read-only file
-x file    Is file is executable
string1 = string2 string1 is equal to string2
string1 != string2 string1 is NOT equal to string2
string1 string1 is NOT NULL or not defined 
-n string1 string1 is NOT NULL and does exist
-z string1 string1 is NULL and does exist

花了快一个小时才找到一个合适的地方放照片,yahoo相片倒闭了,163从来就是故意做成有bug让你知难而退,而且慢得一塌糊涂。微软看样子几年内不会倒闭,放在这比较保险吧

实际上sva_remote.sh是一个综合的任务部署器,它可以直接部署执行远程的图形任务,首先初始化显示节点,并且运行render和diaplay节点的x-server,然后执行后面命令行的任务,如果是interactive模式则等待用户输入。比如sva_remote.sh -r 2 mpirun -np 3 -hostlist "n81 n82 n83" ./myMPItest.exe问题是我在执行mpi程序前必须先设置mpi运行环境module load mpi,但是在远程运行则无法这样,是不是呢?再去实验室试验一下吧。

一切都是在疑惑中,

sva_remote.sh mpirun -srun --nodelist=n81 /sfs/backup/all/qingz_hu/mytest/myMPIGraphic.exe是可以的但是这个等同于单机运行,如果加入一个render node比如-r1就不行了,现在不是资源分配或者X-server的问题,因为他们是正确了,甚至我的display节点都成功进行了glut的初始化等等,但是没有窗口的产生。运行例子paraview的时候需要正确设置env,我的shell可能是c-shell,用bash的export不行,所以我就只好/bin/bash直接运行bash,export PATH=$PATH:/opt/paraview/bin,或者就是永久性的改我的~/.cshrc文件里的setenv了,要source ~/.cshrc

空间不够了,能删的都删光了,想升级一下,可是一年多花几十块钱买到的不过是多了10M而已,不划算,决定不从前引以为豪的一个project的可执行文件及其数据放在这里


七月十八日 今天天气很好吗?好像是 。

的确csh用的是setenv。对于shell我总是抱有抵触态度,因为我的记忆力不好对于浩大的命令及参数有点力不从心,不过说到底这不过是别人写好的工具你拿过来用,no big deal。

早晨醒来觉得无事可做,第一眼看到北京奥运的消息非常令我鄙视,因此我决定个人抵制这个政治橱窗展示会,当然这个地球多我一个不多少我一个不少,但是抵制奥运从我做起。

一个人早晨刚起床没有刷牙(我从来晚上刷牙的),没有洗脸,突然开始思考一个严肃的问题是非常让人措手不及的,我为什么活着?说得清楚一点我凭什么生活着?很多人出卖自己的劳动时间,甚至出卖自身某些器官的使用权,我有什么器官可以出卖呢?出卖头脑?我天性疏懒不到万不得已决不愿做这种事,怎么办?怎么继续生存呢?一个人早晨刚起床没有刷牙(我从来晚上刷牙的),没有洗脸,突然开始思考这样一个严肃的人生问题是非常让人措手不及的。

凤凰资讯讨论是否应该由大陆出钱收购台湾农民的香蕉,这是典型的伪命题,孔老二的以德报怨被人误解了,这是我最近听到的,什么以德报怨?那么拿什么报德呢?


七月十九日 今天天气很好吗?才怪,下大雨了 。

意志消沉情绪低落仿佛女人一般地多愁善感,一个简单的refine-3D-mesh我不知道是不是我的头脑在不多的退化,无非就是把递归改为循环用一个队列来做的,这种东西为什么我总是搞错呢?我仅仅为了一个数学上的特例牺牲了代码的可读性,比如任何输得0次幂为1这纯粹是数学家的投机取巧究竟有无客观世界的意义呢?碰巧我要使用这个数列,1,4,16,64,256。。

星期天要出发了,昨天在自行车后袋子里放了两个小哑铃来模拟重量,结果迷路了在运河边骑来骑去,实际上我是严格按照算法里面的原则作的,首先想做走距离n,如果无结果回到原处向右走距离2n,如果无结果再向左走距离3n,如此循环不已。有另一种argument就是左右随便挑一边一条路走到底,其实这些都是没有学过计算机科学的人的愚见,计算科学一般不考虑best-case连average-case都不一定考虑,我们考虑得是在worst-case下的问题的解决方案,想想看当luck is not a factor你应该怎样做?哪种做法是最正确的。(不过这些都是文过饰非的说辞,实际情况是我总是在决定之后摇摆不定在四周昏黑的运河边我只是想没头的苍蝇东冲西撞而已。最后不小心看到了downtown的灯塔才找到了回家的方向。)


七月二十日 今天天气很好吗?才怪,下大雨了 。

HP的Glenn给我了一个解决办法,其实很简单,就是照样先用sva_remote.sh -r 5 -I县分配好显示节点,用RGS连如以后原本srun重新分配资源pending的问题是这样解决的,就是定义SLURM_JOBID为当前的jobid,他搬来用一个脚本获得,squeue -h -n $HOSTNAME -o %i但是看起来在c-sh里面用setenv不行,bash的export可以在脚本里面执行脚本。这样在执行module load mpi, mpirun -srun ./myprogram.exe,也还可以决定需要多少节点,比如-N 3。结果一切正常但是fps并不高,这能怪谁呢?显示10m的triangle只有5fps左右,而单机运行也有2fps,不过我只有8个节点,真正rendering的节点不过3,4个,线性是不可能的。从早上6点半到中午12点半整整六个小时仿佛像梦境一样,怎么说呢?你做一件事是你一直想做但又不知道的,可是当你突然可以做的时候发现你要做的其实是另一件更重要的是,这不过是你的一个前奏而已。

七月二十一日 今天天气很好吗?才怪,下大雨了 。

明天一大早我就要出发骑自行车去魁北克了,一路上必定有着风风雨雨,好像人生的浓缩版。

七月二十九日 今天天气很好吗?才怪,下大雨了 。

其实前天下午就回来了但是到今天才提起精神来,怎么说呢?感觉是有一点点地身心疲惫,简单地记录一下吧photo1, photo2, clip1, clip2.

google实在是太强大了,有时候把你心里所想的赎金去搜索一下,看到意想不到的结果一颗心仿佛突然都不想跳了。


七月三十一日 今天天气很好吗?是的 。

我不知道这样的错误是怎么来的,linux的临时文件名长度只有20,我却用windows的max_path来等同,真是无理头,导致buffer-overwrite错误实在低级。整个代码都忘光了,我的master时不再读octreeLoader的东东了,因为是分布式嘛。

八月五日 今天天气很好吗?是的 。

什么叫无聊?就是没有什么可聊的。为什么我最近总是穿短袖衬衣呢?因为旅行回来没有洗衣服没有的换了。昨天终于洗衣服去了,像往常一样这时我平常仅有的两个读书的时间之一,看了没有一分钟就睡着了,为什么平常睡不着一看算法书就立刻睡着呢?这就是我总在床头摆上基本算法书的原因,备而不用也好。只明白了一个道理,在KMP之类的基于prefix的搜索方法中prefix里面的suffix可能是其他的prefix,找到了这样的边界就是pattern预处理的要做的事。比如,pattern=atatatt;那么目标字串atatat.....就包含了三个prefix。

八月七日 今天天气很好吗?是的 。

生命的长短是依靠记忆的多寡来衡量,记忆的单位就是信息的单位,namely bytes。在无所回忆的日子里我觉得我只是行尸走肉,因为我并不记得我做了什么也不敢承认那些名义的岁月是我生命的一部分,似乎我的人生必须要用有意义的byte来表达,不是吗?在三河镇的河边宿营的那个傍晚我们看到了生命中可能是最美丽的黄昏,天空是粉红的,河水也是粉红的,那梦幻般的天空仿佛WOW里的outland的Honour Hold的天空一样。记忆全都变得支离破碎全部都是一些场景的片断,在那个巨大的Sancruary戴皇冠的圣母玛丽亚也是在那夕阳下显得格外高贵神圣。

GB2312和unicode毫无关系,所以非unicode的语言当然是gb2312了。我发现在sva-node里面一个slurm的job往往产生若干个slurm.xxxx的demaen,这里的xxx好像就是x-server的log里错误信息的client-xxx。前两天翻了一个傻,我想扩展模型但是不愿意重新处理数据就拷贝数据但是这样按照octree的原则我必须把尺寸扩展一倍,这样效果不是太好,模型太远了,不过看不见的东西未必就不去render,所以我觉得这仅仅是使觉得问题。


八月八日 今天天气很好吗?是的 。

痛苦的一天!1。我发现了我以前的问题,路径名hardcoding的问题提前反击了,我每次一处理都是对同一个文件操作,当然文件就corrrupted了。2。在sva_remote分配的slurm-job内在进行任何的srun都是一个任务,相当于srun带jobid的参数,所以我一旦关闭RGS自然观比我的任务,这大概就是支前任务不能继续的原因之一吧?3。srun -O是允许多个process运行在一个node上,但是问题很多,首先显卡的读写好像没有同步.4。我注意到RGS的显示丢桢很严重,联想x-window非即时的特性更要小心。5。readPixels,drawPixels,如果类型是float也一样要rgb各自对应一个float,我怎么总是忘记呢?6。运行mpi在rgs里面要记住用-srun --nodelist=n86,n87来吧displaynode放到当前,不然又要像一两个小时不明白为什么window没有创建。7。drawpixels的rasterpos还是讨厌的恨,最好还是用ortho先把偏移作掉,省得-1.0,-1.0的讨厌坐标。(这个问题我至少已经反反复复五六次以上了还是不明白怎么回事,实在是够笨得了。8。终于证实了wmpi实在是太滥了,HPMPI即使是上万个request朝阳没有问题,当然曼的几乎停滞了,可是至少没有错误。

八月九日 今天天气很好吗?是的 。

完全是无理头,或者说超级白吃,我想读写显存,结果却在clearcolor里面完全刷新,这当然是白吃,正确的做法或者是在clearcolor之后作就是在displaycallback里面,或者是在keyboard里关闭clearcolor再读写。至此我才回过头来看我究竟要干什么或者说这一切的一切是为了什么?一开始时想证明HPMPI的现存读写不同步,结果跑到了这个地方。

八月十二日 今天天气很好吗?是的 。

中午郁闷不已,决定骑车出去散心,蒙特利尔的美丽在皇家山,在运河,在圣劳伦斯河。回来后才发现也许事情并没有那么糟糕,因为任务继续在运行,没有看到临时文件是因为还没有生成呢。读了一篇关于甲午海战的分析文章非常的详尽,很有见地,所谓战败非战之罪,乃是那个政权的腐朽,不论多好的武备都是注定要失败,所谓覆巢之下焉有完卵?今天的PLA估计和当时的北洋舰队差不多,一样是注定失败的,因为就算比清军腐败少一点,要知道当年的敌人却是一个还没有发育健全的日本,一个仅仅经过三十年维新而已,根本没有什么家底,所以今天的PLA恐怕败得更惨。兵者,国之大事也,死生之地,存亡之道,其有不查之理?可惜GCD抱残守缺仅仅想维持政权而已,哪有什么心思理会这些。

八月十五日 今天天气很好吗?是的 。

我的小实验还是有很多发现的。1。bitmap的格式其实挺复杂的,16bit一下都使用palette,就是子代的colortable。2。我的机器上的opengl已经是2.0的了,但是我的头文件gl.h还是1.1就是wind95时代的,所以我居然不能使用GL_BGRA,为什么要呢?你读bitmap的时候colortable的格式就是这样的,网络上的小孩子们写的粒子都是要再读文件的时候翻转,但是在1.2以后有了这个就不用该文件数据了,可是我找遍internet也找不到下在gl.h的地方,真是郁闷。3。opengl可以有至少四种不同的实现,就是根据superbible的说法,有所谓generic,mini-client等等,opengl32.dll就算是generic不讲效率的。4。extension还是一个老问题,ATI根本就不支持多少extension,所以colortable根本就没办法试验,那么opengl是怎样用colorindex的呢?我始终不明吧,好像OpenGL不支持palette的创见,你要自己做。5。glGetString一定要在初始化之后才行,我图省事就用glut来做,最基本的就是创建了window,设定了displaycallback。

八月十六日 今天天气很好吗?是的 。

白吃级的问题就是word是连个byte的,dword才是4个byte,gl_byte=signed char,24bit的bmp朝阳市在每一行都align,同时bitimage长度可能设为0,所以要自己去算,算得时候要考虑行尾补齐的问题。别忘了还是bgr,wglGetProcAddress其实就是getPocAddress的wrapper,但是我在dumpbin里面看不到,为什么?我想原因很简单,因为extension原本就不是generic的实现,所以肯定不在opengl32.dll,要到显卡的驱动力去找。今天去找Dr.G又一次佩服的五体投地,就是说我如果能够看一公里远,他早已看到了上百公里,我今天想到的东西他可能早就想过了。我一直担心displaywall扩大解析度导致scalability不足的问题,在他看来这是完全无关的一个问题,甚至于可以采用sort-first来结合解决。这是我所没有想到的。glColorTable似乎不起作用,不过我想可能是我用了glut来初始化为rgb的原因,而我也认为可能glut在color-index上有bug因为我没有办法初始化为color-index模式,trace的结果是读到glut的注释说如果buffer-bit超过24以上就不行,这是很难理解的,不过总之glut有源代码至少还是可以追踪的,实在不行就用windows的PDF(pixel-format-descriptor)。不过这实在是有些insane,为了一个简单的目的转了非常大的一大圈,以至于块忘记了当初的原因了。不过至少玩过了bitmap以后可以至少不胆怯了。

很多时候我都翻一些最基本的错误,比如函数指针这个说法就有欠考虑,首先函数本身是不是指针呢?当然是,那么你声明的函数指针和普通函数类型有什么不一样呢?我就犯了这样的错误,openGL extension里面的函数类型在glext.h里面都声明称了函数指针类型,那么你用wglGetProcAddress之后的得到就是函数指针,不要把glext.h里面声明的类型再声名成指针了,我为此付出了几个小时的时间,白痴。typedef void (*FuncType)(int param1, float param2);extern void myFunc(int int1, float float2);FuncType myFuncPtr=myFunc;

myFuncPtr(123, 12.5);


八月十七日 今天天气很好吗?是的 。

windows下长文件名的限制可以用加前缀“\\?\”来解决,但是好像还是会有些问题,比如文件名里面出现特殊字符之类的,可能我需要使用widechar的类型函数吧。16bit的颜色有些不可理解,color-table里面三个dword型mask究竟要移位多少呢?是555还是565呢?还是自定义?这简直不可能,我想我应该使用BITMAPV5HEADER而不是普通的BITMAPINFOHEADER,不过我找不到shift数,并且不明白sRGB是什么,再找找吧。 我想所谓的sRGB无非是一种特别的gamma增强机制,比如人眼对亮度的敏感超过对于颜色的敏感,这是人所皆知的常识,但是亮度的变化不是线性的,所以。。。

《凤凰卫视》的“军情观察室”是我觉得最有价值的节目。如果日本采购一百架的F22那么它就继续保持它的世界第三大军事大国的地位。


八月二十日 今天天气很好吗?是的 。

一晚上喝了好几种的酒精,当然我现在根本就不能抵御酒精折磨自然是浅尝而已,可是遮还是一个致命的问题,在酒精的作用下你的思想总是有着非同寻常的运行,这共证明了我的所谓思想是一种普通生物化学反应的理论。年轻的时候我常常说酒精无非是麻木一些兴奋的神经,兴奋一些麻木的神经,可如今我却完全没有多少神经去麻木,也没有多少神经去兴奋。昨天于今天都在做一个小小的工具,算了,明天再说吧。实在觉得没有什么可以说的。完善了一下我的小工具。

八月二十二日 今天天气很好吗? 不是,阴天。

如果我能够坚持去健身房,我想到圣诞节的时候我就可以在肚皮上刻一个王字或者田字了(纯属想象)

GlobalAlloc分配的内存对象(memory object)很可能是一个结构,就是说不能直接当作指针使用,要用GlobalLock返回的指针。 再重复一遍,如果你的source-code文件用cpp后缀,vc6会把它当作c++来编译,直接的后果就是dll里面的函数名会变成c++的decoration,比如又连个@@,所以,要用extern "C"来裹起来,cdecl函数名字不变,stdcall应该会加上_,这个问题我已经说过了可是我是忘记,当初使用ordinal来避免调用函数名字的问题,现在又忘了。注册windowhook的时候的handle我始终吃不准,使用GetModuleHandle得到的不知道是否正确,更重要的问题是在hookfunc里面我能做什么?我试图输出文件,甚至postmessage都不成功,实在是不明白。


八月二十四日 今天天气很好吗? 不是,阴天。

大概是明白了,hook实际上依赖于消息循环,如果我的loader程序本身不是一个带有消息循环的win32程序可能就有问题了,所以用console做的loader有问题,此外lowlevelkeyboard只能在win2k才行这也是比较郁闷的,xp之类的使得你的hook只能看不能抹。在vc6里面创建多个project在一个workspace里面很好,但是要注意默认的debug信息文件都是写在墨人的debug目录下,vc6.p**这个文件是重名的所以互相覆盖,如果要跟踪就要改道不同的目录下。看到一个高手写的injectdll的方法,钦佩了半天还不能十分理解,我怀疑像是kernel32.dll里面是否会有消息循环机制,inject到哪里是否有用,好像loadlibrary和filemapping似乎是等价的,还是我理解上的错误?#pragma data_seg("SharedBlock") ...#pragma data_seg()是否也可以用globalalloc来等同呢?当然我觉得好像风马牛不相及,一个是静态数据一个是globalheap,问题是dllmain并不代表时第一次运行,(难道不是吗?应该是。为什么不是呢?所以应该可以吧?无非都是非相对地址吧?不确定。)感觉中级程序员的全部工夫都集中在dll的相关的东西上,不过话说回来了,难道有什么不可以做成dll呢?win32的WM_COMMAND就是菜单之类的事件,我一直没有玩过win32app实在是一个丢人的事情,原因是我懒,难道一个人懒有错吗?难道没有吗?你要原谅我说废话,因为一个人晚上三点睡觉七点半起床难免脑子有短路的嫌疑。
更正:以上说法大部分都有问题,windows里面任何的窗口都是有消息循环的,这是少有头脑的人都可以想得到的,如果没有那么window怎么管理这个窗口,怎么重画窗口?所以刚才的想法就是白吃级的想法!唯一应该的原因就是console也许把某些i/o阻断了,所以才没有办法显示结果,这也包括文件和messagebox。实际上什么类型的loader都是无关的,你call的是一个dll里面的函数有什么区别了?不同的事如果使用win32的入口函数winmain如果你不画窗口,在console里面执行仿佛createprocess声明no-window一样的效果。dll不能独立运行,他只是一个函数库而已,这个基本概念在这里重复都是多余,但是我当初却总有错误的想法,以为loadlibrary就算运行,实际上map一个file到内存里和运行一个process是天差地别的。所以才会有人要把dll注射inject到别的进程中去。

八月二十五日 今天天气很好吗?是,不是,阴晴不定。

It is a sunny day. No, it is a rainy day. Yeah, it is a windy day. I am not sure.中午被王林森这小子给诳了出来,刚到运河边就说车子坏了,我只好自己一个人沿着运河向西岛进发。风光旖旎,风和日丽,风雨交加,风风火火,风马牛不相及的我就骑到了西岛的尽头,为什么说是尽头因为我已经骑到了出岛的大桥上了。打道回府吧,顺风下坡别提有多爽,几乎使用的全速在前进,回来查了一下地图大概来回有七八十公里吧,还是有一点点累的。沿途的风景有多美丽呢?实在是语言难以表达的,每次这么写我总是在检讨,这种说法有点像共产党领导作报告的套话,比如形势一片大好,究竟怎么好就是说不出来,那么让我来分析一下为什么语言无法形容圣劳伦斯河边的旖旎风光吧,首先,语言文字的信息量在多媒体历史最少的,图像多于声音,声音多于文字,我要把每个细节的感受都描述下来几千字都不够,用计算机的话来说就是一幅图画的信息量就是几千个字节,何况几个小时的电影不知道有几十万幅图画,连嗅觉的描述可能都比文字的描述来得多,那么这么大的信息怎么组织怎么阅读?所以当然语言难以描述。然则文字往往又是最有效的信息压缩形式,往往我画龙点睛的一个字就能引发读者无穷的想象,比几十幅图画都要传神,不是吗?那么就让我厂是画龙点睛,蜻蜓点水地给你一些想象的空间里抛几块板砖吧。

河边婀娜多姿的柳树在阵风里摇曳着长发,平坦蜿蜒的自行车道就穿行在这绿色的长发里,有时候我都不自禁地伸手撩一撩绿美人的清汤挂面似的秀发,理由是她要碰到我的脸了。

运河边的小桥并不如江南水乡的多,但是运河的水绝对不是那苏杭小镇里主妇淘米刷马桶的水可比,圣劳伦斯河水有多清澈呢?打个比方,就好像加拿大的自来水一样的清澈,不要笑,加拿大的自来水都是饮用水,还有什么水笔饮用水更清澈呢?河边处处是漂亮的草坪,精心设计的雕塑,因相比较深的有这么几个,一个是阿基米德的杠杆雕塑,造得仿佛是一个灯塔,朴实无华,伟大的自然科学发现也许都是向这些设计平实简单的雕塑一样经得起时间的考验,而不必担心如北京奥运会某些贴近时装展览似的繁复弄巧,一时高潮之后就被人弃置如蔽履。Lashine河边的雕塑尤其多,但我只记得教会我一个法文词的那个,flour是河水的意思,在铁板上镂空的文字也如何水般荡漾,非常的传神,工业时代的材料透着现代艺术的气息远比中国式的总是挖掘故纸堆的沉闷来得让人舒心畅快。

河里停满了私人游艇,只有这个时候你才知道蒙特利尔的富裕人口有多少,河边的餐馆咖啡厅都很有情趣很让你有一种进去坐一坐的感觉。天边的白云阳光配合着荡漾的水面那是一种难以名状的闲暇,在这个夏天从来不会有酷热感觉的城市里,你可以尽情地享受阳光。

但是美丽仅仅是风景吗?不,美丽是如花般风景里的健康的人,流汗的女人最美丽,这是我从健身房的语录里看来的,对此我也深表同意,每次我看到加拿大妇女矫健的骑车慢跑溜旱冰的样子就有着无限的赞赏,圣劳伦斯河边运动的人们是比风景还美丽的图画。


八月二十七日 今天天气很好吗?是 。

HPMPI本身就有很好的profile,完全不用自己加那些非常笨拙的计时小函数,我以前在那个土法上马的wmpi里工作实在是很土的事情,回过头来感觉那个完全就是大学计算机本科二年级的学生写的tcp/ip分布式程序,我想给我几个月时间应该也能实现得了,当然写成完全win/linux都有效率的可能要一点点技术,但是对于一个稍有网络通讯开发经验的人来说不是什么很难的事情,我对于他们的通讯效率始终不是非常的信服,去年我曾经做过测试他的mpi_send远比我用普通socket快,但是问题在于mpi没有规定同步传输返回时在接受方接收完毕还是在接受方开始接收,这个差别可是不小的。profile很简单,mpirun -i profileFilePrefix[:off] -srun ./mpiprog.exe,其中的:off是一个hp的开关,你可以在代码里插入一个非标准的HPMPI_Trace_on(),HPMPI_Trace_off()一边定向profile某一段代码。不过问题是怎么翻译分析profile文件的含义。

我的价值35元的DVD机在我的残酷折磨下终于含恨而终了,怎么残酷?又一次我大概有将近一个月往机关机了,平常彻夜播放更是家常便饭,总之到了这里就知道点七是最便宜的家居生活品。今天去买了一个新的,贵了一点,39块,有29的胆识没有写MP3播放就没有买,结果回来就看到粗制滥造的一面,DVD托盘打开就轰隆隆地响,有时候还关不了,换!还好新的没有噪音了,我想制造业在中国并不完全是什么工艺与技术的落后,而是质量检验的问题,这种明显的毛病为什么检验不出来?因为工厂连这个成本都承担不起,因为是极低的买断价格根本没有检验的成本。这样的工厂很难有什么积累,所以说中国要是来一场经济危机就是倾家荡产的,大多数工厂企业根本没有这方面的准备金,大部分的穷人也没有这方面的积累,国库也没有这方面的积累,就像当初国营外贸公司做生意后来连基本的风险金都不计算,赚的每一分钱都是今天用的钱。经济危机迟早要来的,这是经济规律,问题是什么时候?问题是有多大规模?问题是有多少人要跳楼跳海?


八月二十八日 今天天气很好吗?是 。

感觉windgi实在是比较复杂的,断断续续地学习恐怕要一两年,就算是intensive也要几个月时间才行,不过呢现在回过头来看比几年前要清楚多了,也许就是所谓武功里的内功有了底子再学各门各派的武功就会比较容易了。中日必有一战,起因不是政治是经济,所谓生存空间,当然战中都是危机的产物,所谓危机可能是政治经济等等,大概有了经济危机就会有战争的可能,内需拉不动经济,就用外需吧。

阮次山建议在联合国提案明确台湾属于中国,我始终觉得现在的政治局成员没有什么人敢做敢当,遇大事总是迟疑不决,为求平安度日,这有一点点摊派的意味,美国不愿意,大陆不敢干,阿扁看准了这一把,赌下去有可能翻身成英雄,马英九嘛,一介庸吏不足挂齿。


九月一日 今天天气很好吗?是 。

昨天还是比较郁闷的,问题在于说我始终不愿意使用,甚至不愿意查询怎样使用mpi的跟踪器,当然这实在是太困难了,已开始在mpi里面建立一个线程然后调用opengl就出错,我想不出问题在那里,也许pthread本身在smp上就不安全,也许opengl本来就是线程不安全,也许更加可能的就是在mpi里面必须用mpi的方法创建线程,抑或是我程序初始化的低级错误,总之,混乱。HPMPI的profile也许也有bug,或者是profile的翻译程序的小bug,总之,混乱。我之前一直坚信我没有犯低级的错误,因为linux的syscall里面是没有精确的毫秒级或者微秒级的函数,反而使library去实现了,难道是nanosleep之类的实现的?因为我似乎看到过系统不提供的,当然看manpage是一团混乱,clock_gettime之类的实际上却不能用,似乎linux的系统改过很多,混乱。其实这些都不是什么烦恼的源头,因为他们都是可以解决的问题,最要命的是某些问题是没有解决办法的,比如我现在又回到了一年前的同样境地,开始在几个节点之间的bottleneck问题上打转转。

人们常说中国学生的英语很差,有的时候是有着别的原因的,每个单词都听懂了却不见得明白说的是什么,比如politic science,从大陆来的学生就听得不知其所以然,难道政治也算科学?在我们的教育体系里,我们得到一个深深的印象就是每个人,尤其每个中国人天生都是政治家,尔虞我诈,两面三刀,黑脸红脸,计谋手段等等我们从小就是必修课,根本就没把政治当作是一门自然科学来对待,GCD的所谓政治学说白了变成了政策学,politics!=policy,社会发展史也不是政治的全部,有些问题实际上是历史学家关心的,政治学其实应该更加的贴近政府运作的机制研究。中国当今的很多问题就是因为现今的civil servant也就是公务员大都是很多不相干的专业学生,比如中文,比如历史,比如工程,比如法律,恰恰缺少的是研习政治的人才。究竟有什么是政治应该研习的呢?比如政府机构的设置,比如权利责任的划分,比如政策研拟的流程,比如事后监督的机制,你可以说这些都是实践出真知,不需要学习,长官拍脑门秘书拟草稿,饭桌酒席私下商议,密室里面讨价还价确定的,可是这些真正是要研究的,世界各国古今中外大家都有各自的方式方法,优劣得失,不研究比较你能完全foresee其中的利弊得失吗?这些正是一个科学学科的研究课题,当然采不采用哪是另一回事,但如果你连研究都不做就算民主社会人民有权决定政府的架构的时候却发现并不知道应该采用什么,这才是尴尬的事情。在中国现今的社会大多数人迷信工程师治国,我觉得这才是一个糟糕的事情,仿佛把优秀的战士当作优秀的厨师来使用一样的糟糕,学工程的人如果最后都不务正业回归仕途谁还愿意老老实实地造桥铺路?怪不得中国的桥梁三天两头坍塌,结果专家鉴定居然斩钉截铁地说设计超越国家标准,难道是天灾不是人祸?


九月四日 今天天气很好吗?是 。

昨天,不,是前天,骑车到西岛同事家蹭了一顿饭,好辛苦,今天打腿都酸得不得了,蒙特利尔的朋友越来越少了,可以蹭饭的地方越来越少了。昨天还是头疼,我用了一个简单的run-length,数据是小了很多,可是速度没有什么体现,这真是头疼。看到HP说明文当上说怎样用debug,还真是复杂。每次在这样难眠的夜晚总是想起那只腋下长满腮的美人鱼melisa,的确是painful。

看陈文茜的节目就是让人听得难受的时间,她的那口哑嗓子仿佛咽喉里面一口痰吐不出来一样的难听,当然此女孩是有些才情的,否则也不会被讥讽为“北港香炉人人插”了。赵少康呢?有些太过偏激,不过他和李傲是同一代的人物是很有才华的人物。最近台湾铺天盖地的就是要公投入联合国,想想看这是很聪明的一招,是很聪明的自保的招数,所谓北京对台湾动武有一个基本的因素要考虑,就是台湾的民意,比如诸葛武侯南征三分军事,七分政治,必须以争取民心为要,这个问题是显而易见的,比如打完了仗怎么统治,如果民心不服等于是接下了一个烫手的热山芋,这样的例子屡见不鲜,比如俄罗斯的车臣,英国的北爱尔兰,所以北京最乐意的情况是所谓台湾内部大多数民意主动邀请北京,所谓“吊民伐罪”,现在阿扁等于要堵死这条路,向北京宣示台湾的主流民意就是反对北京,你北京来台湾就是强奸民意,你看着办吧。不过这一招也是所谓的进攻性防御,就是打着进攻的名义实际上仅仅是自保,如果坐过火了就成了让本来进攻的北京变成彻底的防御,现在效果已经达到了,如果还要继续痛打落水狗就是不给北京台阶下,是否逼得过紧了反而成就了北京的策略。不过,台湾的策略就是吃定北京的决策者没胆打破坛坛罐罐,仿佛街头泼皮流氓比狠看谁比谁更狠,头脑越正常的人越早退出。那么我们就看看谁的头脑不正常吧。


九月七日 今天天气很好吗? 现在还不知道。

学到一句法语:fait accompli。相信很多学英语的人还不懂。calling convention是放在括号内的,比如typedef void(__stdcall *FuncType)(int,float);另一个有趣的问题时,为什么c语言不支持overloading,从函数名称来看,函数的参数类型是被忽略的,在dll里面只有参数个数,比如stdcall里面的@后的数字,这样单单用类型是无法区分的,当然如果你在VC++里面用.cpp文件来编译编译器根本就忽略了所谓的stdcall之类而是直接用c++的thiscall来编译,这个name-decoration是不公开的,比如是以?开头,函数名字后跟两个@@一大队字母代表类型,再跟一个@随后可能跟的是类的标记吧,后面这个不确定,不过是可以以GetProcAddress来调用的,所以,一定要用所谓的extern"C"来强制采用C编译。

九月九日 今天天气很好吗?稍微有点冷。

Alex给我的一些启发和建议,1。Tester模块里面应该要采用类似于binary-tree的交换方式,我现在这个方法还是类似于naive的集中方式。2。不应该惧怕Tester数目的地增加,因为如果cluster是纯粹的点到点通讯那么增加的工作实际上可以被增加的Tester分担,(是不是呢?)比如Renderer数目增加一倍,通讯量就增加一倍,但是如果Tester数目也增加一倍的话,增加的通讯量工作实际上被增加的Tester分担了,因为每个Renderer实际上接受的bytemap是一样的。

tar并不是压缩文件而是创建一个目录一样的东西,gzip才是压缩,tar -cf target source. gzip tar-file如果想要知道文件夹的大小,du。这些linux的命令其失去哪里都查得到,不过写一遍加深记忆吧,我现在总是忘记很多事情。比如tester模块内的压缩实际上不可能提高很多的,因为bytemap总共只有五分之一的大小,depthbuffer才是大头。

犯了一个愚蠢的错误,用tar -cjf --recursion targetfile sourcefile结果创建了一个文件名叫作--recursion,主要是manpage像田鼠一样费解,然后你就没办法删除这个文件了,Alex告诉我rm -- --recursion这实在是有点诡异。


九月十日 今天天气很好吗?稍微有点冷。

内存的错误还是容易发现的,至少有几可循吧。DAMAGE: after normal block(#???)其中???为一个数字,google了一下明白了原来VC的debug在做debug_free之前作这么一件事检查你的程序是否曾经越界写heap内存,当你分配内存时候,new给你n+8bytes,其中4个放在最前端,4个放在最后,这8个字节写成0xFD而你的内存初始化为0xCD,在delete的时候dbg检查看有无改写来断定是否越界写内存。1。这办法是没有办法的办法,你在自己分配的heap里面错误读写原本就是没有办法检查的事情,debug这么帮你做是迫不得已,不敢说100%准确,但是绝大多数情况都可以,除非你正好写0xFD在前后端,那就是你人品的问题了。2。运行起你如果敢月初你自己的heap自然有操作系统捕捉别想有什么机会。3。如果你希望尽早发现问题而不是等到delete的时候才又,那么请使用_ASSERTE( _CrtCheckMemory( ) );因为这个_CrtCheckMemory你都可以想象得到他在干什么,用它在你的函数前后监视。4。这个问题和内存泄漏无关,你使用_CrtDumpMemoryLeaks未必有什么发现,比如你new了几个数组,其实他们应该都会在OS分配的一个heap里面,也许都是前后相接的,数组越界和内存泄漏完全是无关的事情。(我不知道为什么我会把两个无关的事情想到一起,也许在我当初的印象里所有的内存错误就是内存泄漏比较严重,实际上现在看来,内存泄漏只不过是高级程序员念在心里初级程序员挂在嘴边中级程序员不停地改在手边的时髦名次。这个问题很难完全避免,因为像java那样让系统管理内存基本上是效率的坟墓了,我想但凡是人做的工作总是会出错的。)这里面还有一个小插曲,我google了一下找到了一个小孩子写的使用intel jpg library的例子,基本上我就拷贝了一下,当时看到他写得code里面没有考虑paddedbyte的计算觉得很奇怪就姑且相信他了,结果看上去挺好,其实现在看来是因为大多数jpg照片都是标准尺寸,比如4的整数倍,你的paddedbyte当然是0了,所以程序常常是正确运行的,可是当我改变图片大小存储的时候有时候再读图片的时候就出错了,(写的时候是因为我自己写得code因为从opengl的colorbuffer里面读出来的当然bgr是padded0了,因为我定义pixelStore的pack_alianment为0,所以不会出错)(不过jpg与bmp一样是沿用以前的习惯就是每一行和整数长度对齐,(align with size of integer,depending on the size of integer of current OS)这是格式没法改变,在DIB里面要给出正确的paddedbytes,和所谓“channel”应该是component个数,(这个是ijl注解里面写的)其中DIBHeight可以是负数代表上下颠倒,这个曾经困扰我又一两天之久,因为我尝试了在glOrtho定义上下颠倒,可是因为我用writePixel直接写colorbuffer完全无用,用什么transformation都不解决问题,因为这完全是数据的格式问题,后来改为负数就行了。当那种奇怪内存错误出现的时候我曾经自以为是地认为opengl也许对于数据使用是某种“独占”方式,比如你送一个buffer数据进去,opengl直接在数据上操作,使用某种内存防毒些机制,这当然是无稽之谈,可是当时我信以为真居然费了不少力气去做了一个类似于double-buffer的冬冬,就是用两个buffer来读写,不对当前显示的buffer操作直到它变成back-buffer,结果当错误已就出现的时候我才开始意识到问题不在opengl上,尽管opengl不支持多线乘客也不至于有直接该用户数举止无稽之谈吧,当时实在是无理头,我好像大多数时候完全是无理性的思维,这是多么可怕的事情!

有些问题现在回过头来用脚趾头思考也明白不可能的事情,我却在当时想不明白,也许人就是在碰到一些违背自己基本信念的现象的时候的一种panic的寻找救命稻草的盲目吧。不过呢,为自己美言一句就是引用一下那本讲述破译密码的《battle of wit》的前言,decoding不需要你疯狂,但是如果你是的话总是有帮助的。debug十有八九是在反复检验自己对自己的基本信念的相信程度,如果你对一个事实或者定律坚信不移,你也许不会犯一些不该凡的错误,但是你也许失去了检验其他相关的信念的机会,而往往bug寄生在你认为不应该发生错误的地方。说到底,你是否真地掌握了所谓的真理呢?世界上愚蠢的错误大多是在你坚信你是正确的时候犯下的,有多少人是明知故犯呢?

补充一句,图形里面困难的一个地方就是如果仅仅是很小的数据出错,你还真的很难看出来。

那么就把这个小东西贴上去吧,原本想用win32作一个漂亮点的界面,后来就懒得动了,我对于界面设计从来就不太热心,这些东西费时费力并且我也做不好。至于Intel的jpg-library我存在了这里,和这里


九月十二日 今天天气很好吗?天气已经变得很冷了。

蒙特利尔仿佛嬗变的女人一过八月立刻变得冷若冰霜了,听上去酸酸的,可是实际上就是这样,从上个星期开始就突然从穿体恤山还热的夏天进入了穿夹克还觉得冷风嗖嗖的秋天了,这个秋天的生命比短命的夏天还要短,因为加拿大的红叶仿佛就是道路上的红灯一样预告冬天的来临。冬天就要来了,夏天已经变成了回忆,秋天正在变成回忆,冬天即将让你的生活充满了对明年夏天的渴望。 冰箱里桌子上没有任何可以当作早餐的东西了,正好可以尝一尝美军标准ration-pack的麦片早餐,tea,coffee,ketchup,salt,sugar,pepper,match,tooth-picker,应有尽有,感觉美军和加拿大军队的后勤采购系统效率还是很高的,任何国家的军事采购都是肥差,但是在商业运作下完全符合市场竞争机制的效率还是远远高于黑盒子的操作,我常常想PLA的腐败也许只能透过一场战争来显示,中国历史上的封建帝国的军队无一不是这样。

安倍近三辞职了,其间的所有风云仿佛就是《Farewell Mr. Primier》的现实版,其间的讽刺成分要低于《Yes,Primier Minister》,有更多的期许与鼓励,甚至有不少的同情,也许英国人普遍对于政治家没有什么不放心的,因为政治家仅仅是舆论指挥棒的指挥下起舞,实质起作用的是公务员系统,而日本的民主政治是在美国大兵的枪口下扶植起来的,有着太多的封建宪政的痕迹,政治家主导国家的作用太大了。所谓民主,按照yes primier minister的说法就是,首相并不是管事的人,只不过是领导有共识的参与者而已。


九月十四日 今天天气很好吗?天气已经变得很冷了。

在AITS作了两天的volunteer,在轰轰作响的cluster机房里面做了一些最最简单的工作,update一些firmware&bios,据说HP的XC并不是纯粹的linux,应该在bios里面做了一些手脚比如一些identity之类的,也许吧,应该是有一些硬件的certify机制吧?cluster上附着的kvm看上去好像laptop一样,哈哈,显卡,鼠标键盘三位一体通过一条rj45线实在是方便,但但这个咚咚应该就是有些小玩意在里面,比如怎样把并口线串口线信号转成eithernet的信号,应该是用芯片做的,应该是有现成的,不过我没有见过,少见多怪,不奇怪。mpi的broadcast我一直都没有仔细看过,突然发现必须接受方事先知道buffersize,看来这个要求implies其中可能又是有什么快速的protocol。

不妨作一些大胆的想象,也许安倍进医院检查肠胃是因为安眠药吃多了,此公有点官宦子弟的骄气,一旦受挫很有可能承受不起。也许台湾问题会用一种手术刀似的解决方法,斩首不太可能,因为那时大打,所谓不伤筋动骨的手术刀式方案就是空战,所谓“机不可失”的“机”就是飞机,失去了空中屏障的台湾就是待宰的羔羊,而空战结束就是战争的结束,登陆战巷战?免了吧,而空战决胜既不会拖的很久,也不会对经济政治甚至对于大多数民众生活也没有多少影响,这也是典型的美国式的解决方法,不过好虽好,PLA现在还学不来,但是不能够变通一下吗?原则上就是这样。


九月十五日 今天天气很好吗?天气已经变得很冷了 ,刚刚骑车出门就下大雨。

在小雨中骑车也许在别的国家是一种享受,在秋天的蒙特利尔却有些刺骨的寒冷,生活在高纬度地区的人才能真正体会阳光的重要,离开了太阳这里会变得冰窖一样寒冷。我的头脑的麻木并不是冷风冷遇造成的,因为它原本就麻木了,我居然没有想到过我要做的工作其实有六件事,从文件到内存的压缩,从内存到内存的压缩,从内存到文件的压缩,反过来,从文件到内存的解压缩,从内存到内存的解压缩,从内存到文件的解压缩。这就是我不敢破坏ijg的结构的结果,我想我想做的无非就是ijl的类似的东西,只是我有必要这样做吗?ijg可爱的地方就是大量的回调函数,烦人的也正是这些回调函数,改造起来至少要好几天,首先我刚刚发现了自己的一个无知之处,jpeg的压缩是one-pass,因为用的是所谓DCT(Discrete Cosine Transform)据说和傅里叶变换(DFT)差不多,sigh,computer science的学生没有学过这些还能叫做信息学的学生吗?我真希望我能够多学一些数学,否则总是想井底之蛙一样伴着脚趾头靠直觉思考问题。说出来真是丢人的恨,我当初以为jpeg是huffman-code加上run-length压缩,这简直是白吃都能想到的朴素,说得不好听就是对人类信息科学的污辱,以后一定要小心谨慎!也正是因为此我才一直以为jpeg需要至少two-pass来建立字典,因为心理上我始终认为所有的压缩都是建立在字典的基础上的,quantization是lossy的源泉这一点很好理解,就算我不知道有DCT我也没有错,只不过我实在不理解DCT,高等数学绝非任何有着正常智力的没有接受过正规教育的人所能够无师自通的,这就是真理。

所谓民主国家就是国家领导仅仅是一个杂货铺打工的收银员一样,主人没空管的事情交给你去做而已,虽然财务经营都放给你表示对你信任,其实你只能操作收银机一切都有记录不怕你搞鬼,随时都可以叫你走人。民主国家的领导人仿佛娱乐圈的明星表面上光鲜照人出入镜头焦点之间,实际上时时刻刻一举一动都在幕后经纪人的指导安排下,时时刻刻留意自己的收视率。


九月十七日 今天天气很好吗?天气已经变得很冷了

加拿大的冬天就要来了,好日子到头了。作为美国现在做的最正确的事情就是平衡台海两岸的军事力量,所谓增大PLA动武的地成本,不鼓励北京进行任何的军事冒险,昨天看凤凰的军情观察时才了解到一个基本的军事常识,一次军演如果动员的部队达到十万以上那就是非常的超级的事件了,对于向我满这样毫无军事常识的人确实没有这样的敏感度,想想看中国有几百万的军队,可是历史上的最大的演习不过就是动员了十几万人的所谓“华北大演习”,正好是十六年前的今天,当时的化肥据说是全军全年军费的十六分之一,所以,你应该知道演习的代价,军演的成本。回过头来再看看所谓的八月份的台湾“汉光”军演,一开始据说动员了二十几万人,后来军方出来辟谣说是只有一半,可是现在的军演是海陆空导弹信息战,这期间的成本要比当初的以陆军为主的传统军演成本要高的多,现在我开始有了一个更加清晰的概念,战争是政治家手中的指挥棒,决定开战的因素有时候仅仅取决于北京是否觉得口袋里的钱够打一场战争,比如美国是否愿意和伊朗开战?按照布什的想法当然是的,所谓扬汤止沸不如釜底抽薪,只不过国会掣肘让他施展不开手脚,十几万的美国大兵在伊拉克当巡逻兵实在是浪费,既做不好也不划算。打不打伊朗并不是一个简单的问题但是恫吓一下是有好处的,所谓以战止战。
今天居然花了将近三百块买了一大堆的衣服杂物,感觉现在越来越没有勤俭解决的概念了,也许是钱太多了话不完?哈哈才怪。程序基本上处于停顿阶段,理由是cluster在升级,可实际上是我没有想清楚,到底是一个主线程加上两个子线程还是两个平等的线程?Dr.M的想法不能说完全没有可能,可是我总是有些将信将疑,总觉得有违背常识的地方,又是Dr.G的异想天开,就如同他上一次跟我辩论hierarchical的算法一样,除了天真我没有什么别的此可以来形容。买了一个高级的“热水袋”就是微波炉里面可以加热的那个袋子,因为膝盖疼得厉害,还有就是我从来都不相信吃药的,今天破例买了一瓶试试看。也许冬天真的来了。

youtube上有日本NHK的纪录片《激流中国》非常的入木三分,欧美加拿大之类的电视台播放的有关中国的东西大都不着边际因为他们根本不了解中国也根本没有什么兴趣关心这个国家,倒是日本人看中国的问题非常的犀利,中国还是一个农民为主的国家,刚刚经过两天的工业化资本的原始积累刚刚完成第一步,很多人的奢侈超过了大多数欧美普通人的想象,更多的人的穷困也超过了大多数欧美普通人的想象。

一个人的思想的堕落是从物质生活的堕落开始的。

windows很离谱的,用createFileMapping打开的handle也是一个类似于CreateFile打开的handle,意思就是说当我准备改变文件大小,用setFilePointer移动文件指针,在调用SetEndOfFile的时候如果不把这个mapping的handle也关掉就会失败。实在是麻烦因为linux应该没有这个吧,到时候也要小心。我终于想了一个比较好的办法就是我只负责实现内存到内存的方法,写文件让用户去使用fileMapping好了。这不是很好吗?


九月十九日 今天天气很好吗?天气已经变得很冷了

Karen给我上了一堂极精彩的电子工程如门课,就是discrete signal processing,总结一下有几个基本的概念,首先我们针对的是所谓的连续信号,理论上连续信号是无法进行处理的,因为无限多,所以,必须进行AD转换,但这不是全部,因为所谓的AD转换仅仅是amplitude的转换,作为时间domain里面的无限时间电视需要理论的指导来做sampling的,比如要怎样sampling呢?比如实际上我们只能在有限的频度进行短暂的peek,那么这样可否得到全貌呢?Nyquist的定理告诉我们了理论的频度下限,但是究竟傅里叶变换的本质是什么?从结果来看是把时间domain的数据转换为频率domain的数据,这里面的数学本质非常的深奥,比如用级数来表达函数,(这个说法太土了,我看了看wiki的Eula Formula,泰勒级数就感觉力不从心了。)总之,各种各样的DCT实质上是FT的一种变种,据说图形多媒体等等的压缩都是基于此。

大陆的主流媒体实际上都在绕开台湾入联公投的真实目的,回忆一下香港当年的7.1五十万人大游行的后果,北京非常震惊因为当时的信息渠道从来没有真实地反映香港的主体民意以至于北京并无法预计到这个结果,同样北京看到高雄并没有预计的五十万人大游行也算是送了一口气,假如台湾的主流民意都是主张加入联合国的画北京恐怕连动武都不敢想了,因为就算打下来了怎么管?所以陈水扁这样做的目的就是给台湾加上一层比爱国者还要有效的保护罩,因为台海两岸的军力是不平衡的,只有靠所谓的肉盾,这正是北京最不愿看到最不愿意大多数民众意识到的,所以媒体绝对不会提醒这一点,至少不应该让大多数大陆同胞意识到,否则将来的武力解决的正当性又会是一个问题。


九月二十日 今天天气很好吗? 是的,很好,早上骑车去皇家山遛了一圈

其实冬天还没有来只是我的心理上已经感觉到了冬天的来临,绝对的气温还是很高的,我甚至可以半赤裸地坐在电脑前打字,哈哈,天气好得不得了。差不多一个星期时间都在一点点地剥离ijg,其实说出来实在不值一提无非是把原来的缓存部分去除,原本这是他最耀眼的部分也是最麻烦的,说起来简单可要是看动源码我还是感觉吃力,主要是原来的程序好像一部自动状态机定义了很多的状态,我的改动不敢涉及我不明白的地方。这就是programming最困难的地方,对于源程序的原理不清楚的时候是否能够进行再开发?仿佛很多人对于所谓的破解源代码津津乐道,拼命要微软开源,实际上有多少程序员能够读懂源代码呢?我想只能是方便了一部分专业公司和少数黑客吧?枉自猜测,恐为天下英雄齿冷,甚为惶恐。那么留一个半成品因为接下来我想摒弃一部分源码结构了。(备份一个在这里。)

九月二十一日 今天天气很好吗?是的,很好,早上骑车去 圣劳伦斯河遛了一圈

其是并不是所有的白吃都是一样的,我犯了一个高级的错误。怎样在没有c++的年代生存?struct common{...}; struct compress{ struct common comm; int comID}; struct decompress{struct common comm; int decomID};这样的两个结构我想把它们合并,这真是一个奇怪的应用,我想再还没有想明白我为什么要这样做!struct super{struct comm;int comID; int decomID};然后我宣称我的super和compress和decompress兼容,这就犯了一个致命的错误,虽然super具有compress和decompress里面都有的field名字,可是他们的意义完全不同了。比如aCompress.comID和aSuper.comID恰好是符合的,可是aDecompress.decomID和aSuper.decomID就是驴唇不对马嘴了,因为decompress的decomID就是在comm之后的,而super的decomID却是在comm和comID的。这个奇怪的应用引发的奇怪的错误是一个教训,首先为什么我像这样做,而原作者为什么不这样做?这个问题没有想明白之前还是先吃饭吧。更深层次的是我实际上心理上总认为这是一个继承的问题,实际上和继承有关系吗?用多重继承也不解决问题呀,我实际上为了使用原来的代码全部把他们cast回了他们的老祖宗,这样继承来的东西在父亲或者叔叔那里根本就不能用,(想不清楚。)

九月二十二日 今天天气很好吗?是的,很好 。

终于完成了这么一个“伟大”的可笑的“小”project,我一直都羞于张贴出来,说到底我做了什么?把一些回调函数改成空?再合适的地方加上合适的代码?这个好像听上去很难听的样子,不过要看懂别人的代码本来就是一个程序员功底的体现,这个能力我还很差,不过假以时间终究会提高的,这个急不得。下午骑车去王林森夹蹭了一小顿饭,味道很好吃,使她妈妈做的豆腐鱼汤,我不喜欢吃鱼只喜欢吃豆腐。大米饭很好吃,看来长粒的大米更好吃,为什么我当初盲从支脉圆粒的呢?下一次买长的来吃。

九月二十三日 今天天气很好吗?是的,很好 ,下午去皇家山溜了三圈。

绕了三圈因为mr.W夫妇及朋友花了n个小时才到达,where n>=2。本来爬山从concordia这一遍只需要大约三十分钟,当然从公墓那边要久一点,下次我走走看吧。花了将近一个早上作了一个小小的测试比较ijg和ijl的效率,有些想不到的结果,比如ijg的压缩玉洁压缩大约需要50-60ms,而intel的ijl15大概要快三倍,我重复左侧是就是说从jpeg到bitmap然后再从bitmap回到jpeg,结果ijl过了几次之后就失真了,已开始还以为自己发现了什么bug,后来和mr.W讨论了一下才想起来这就是lossy的压缩的特性呀,很奇怪吗?真是好笑简直就是白吃的问题。奇怪的是问题的来源是因为ijg因为同样的实验几百次也不失真,难道jpeg不是一个lossy的压缩?我看到过一个简单的介绍说jpeg仅仅在quantization部分会失真否则也是可以lossless的,难道ijg是这样的?或者我的实验有什么问题?在山上,人山人海因为天气好的出奇,我居然感觉肚子有些饿,花了两块钱买了一个热狗很好吃,这种东西就是在野外才好吃。

晚上闲了没事干,喝了一小杯红酒,把以前最晦涩难懂的电视剧翻出来看《black adder》,这是mr.Bean演过的不多的几部喜剧,(听上去很别扭,难道他演过悲剧吗?)非常非常难懂,因为讲的是英语,这又是有语病的说法,难道我听不懂英语吗?当然是的,当然不是,depends是什么英语,比如莎士比亚的戏剧也讲英语难道你听得懂吗?仿佛中国的电视剧如果三国演义西游记统统讲原文估计有不少的“中国人”听不大懂,外国人当然就更不懂了。我发现这两者的组合“红酒+blackadder”又神奇的催眠效果,比《yes,prime minister》好太多了,相比之下后者的英文还是浅显易懂的,当然我想对于大多数以英语为第二语言的人能够听得懂其中的幽默是非常不容易的,很多小孩子以为看懂流行电视剧比如《friends》之类的就表示她英语可以了,其实那是给普通labour阶层或者家庭妇女设计的,基本上用的词语不超过日常范围,所谓情景剧,这些鄙人一般是没兴趣的。我宁可去看《redgreen show》,uncle red要比那个有趣的多。最后,偶尔地扫了一下“amazon.ca”上的评论你可以想象与我同好的人多了去了,当然肯定是极少数,在这个社会,哈哈。看得懂书评的人就很不简单了,当然你要先看过DVD了。


九月二十四日 今天天气很好吗?是的。

color-space实际上就是vector-space,实际上RGB是所谓长波段R,中波段G,短波段B的线性叠加,其实Nyquist的定理里面原本就是这样一个sampling的公式,难道不是吗?所以所有的一切都很清楚了,所谓常人所说的红绿黄实际上是艺术家所喜欢的方式,把“加法”变成了“减法”。jpeg的压缩是一种朔本还原的算法,因为原本这种长中短波段的分法就是一种习惯,或者近似,真正的原因是Nyquist那个数列里面的基本波元素。所以回过头来看color-space一定是三维的吗?也许就是一种习惯而已,只要你能够找到一个space足够大来mapping这些可见光的组成。Shannon的information entropy实在是一个惊人的概念,直译过来就是随机变量的倒数的对数的数学期望,这个只是一个measurement来衡量信息“规整度”的,这个词是我自己发明的,比较好理解,比如越是所谓无规律就是随机度越高的信息越没有办法来表达,比如中国的渔夫渔妇热衷于炒股票,究竟这个行为原本需要不需要人的干预,在成熟的市场经济里面这是没有意义的,因为有规律可寻不需要人的干预,就好像股票价格可以预测那么还要人来投机干什么?可是假如无规律可循,比如这个社会上占人口大约50%的那种性别的人群的思想,这个entropy是最大化了,因为没有规律,我常常直觉上认为encoding与encryption与compression有着深刻的内在联系,encryption希望通常的encoding被map到某种特殊的encoding之后他的entropy最大化,而compression期望利用某种encoding里的entropy

九月二十五日 今天天气很好吗?是的。

看《yes,prime minister》你简直就是佩服的五体投地,世界上怎么会有这样的天才,不愧是莎士比亚创造的语言,不愧是女王统治的国度,你会由衷地希望中国当初不是被日本侵路而是被英国统治,加入中国直接就是被英国变成了殖民地,日本和英国的碰撞就不会等到太平洋战争的爆发,不要以为这是什么匪夷所思,这在当时是中国很多人能够看得到的唯一的出路。至于最近出现的新西兰的那个杀妻弃女中的小女孩子的事情这在其中的花费几十万英镑拯救一条牧羊犬的剧情比较相似,我个人是否同情事件是一个无关的话题,问题的核心是民选政治人物和非民选的公务员在很多方面有着不同的利益,作为一个政治人物它可以大把的纳纳税人的钱去购买一个cheap popularity.

今天据说是中秋节,王辉和我打赌如果我晚上能够把outlook express的邮件读出一封来他就把我家的键盘或者显示器蘸酱油吃下去,这个事情我一定要公布出来防止他赖账,当然他的另一个选项是请我吃十天的烤羊或者烤鸭,上一次他已经为了一个什么东西打赌要吃我家的键盘后来被我宽宏大量绕过,这次绝不放过,一定要让全世界人民都知道!对于他的问题我也在今天晚上找到了一个可能的解决办法,那就是不用做什么逆向工程去分析OE的文件存储结构而使用改换文件名的办法来读写,因为原本MAPI就是不管本地读写的,这一点微软没有错,MAPIReadMail原本就是读写incoming mailbox。

再说一遍,记住了,否则就真实和大多数人一样变成白吃了:typedef ReturnType (CallingConvention * FunctionType)(ParamType ParamName...);

现在我开始玩platformSDK感觉自己进入了又一个境界。


九月二十六日 今天天气很好吗?是的。

Big brother is watching you!感觉GCD的统治已经完完全全渗入到互联网了,而原本internet的精神就是自由无政府的特征被彻底颠倒了,你在国内任何一个网站搜索“盘古乐队”直接就导致错误,因为不是搜索引擎找不到,而是不能也不敢显示,只好给你一个错误,大不了就是几个街头愤怒青年唱两首抒发情绪的摇滚,至于吗?要搞到这个地步?就算说了什么唱了什么难道世界上那个统治者能够阻止得了?就算在封建王朝统治着禁止人民的言论却也无法禁止所谓的民歌童谣,可是今天的统治者可以借助现代科技完全地做到这一点,而这也就是所谓的matrix里面那种反抗组织的诞生的原因,有人反对就有人赞成,世界上永远不可能只有一种声音。我现在实际上经常用wiki在学习,而这个网络百科全书将会改变世界,如果连这个东西也予以禁止的话,这个政府基本上就是在组织历史的发展了,也该检讨一下自己的生存的基础了,因为从来没有什么组织或者政府能够长期阻碍压抑科学文明与生产力的发展要求,最终的结果和恐龙的结局没有两样。

微软不愧是苦口婆心,同样的mapi函数照样做了一份给VB用,前面全部加上一个"B",其实原本vb应该去调用com接口的,可是微软体贴哪一类开发者的辛苦给他们开了后门。 如果你在mount之前在那个directory存了什么文件,那么你把它mount成一个设备以后当然是看不到那个文件了,但并不等于丢失,umount之后那个文件还在,linux的设计你不得不佩服。pthread_cond_wait的含义其实挺复杂的,就在于这个东西防止了busy-waiting,但是为什么一定要在mutex_unlock之前去signal呢?在我的原来的想法里面是你先unlock_mutex然后再signal_cond_variable这样那个wait condition variable的线成也就不用再去获得mutex了的竞争了不是更好吗?看来一定是实现上的困难才有这个要求,否则用一个mutex就可以了何必要condition variable?

果然我的直觉是对的,实际上关键不在于signal而是在于cond_wait,一般的系统mutex都是一个binary-mutex,就是非counting-semaphore的东西,(只懂java的人不太会明白他们有多么幸福,当然也就不知道自己有多么的不幸,counting这个东西要远比binary复杂。)这个东西会有问题就是说如果两个thread都是去减少计数,最后谁也醒不来了。(大概就是这个感觉吧,具体的我也懒得想了,以前做个不少的例子。)也就是说signal多少次都无所谓,甚至于不相关的thread去signal也可以的,这是合乎常理的,但是cond_wait必须要保证只有一个thread。。。(hmmm...就是说。。。头疼。。。我感觉这个cond_variable的使命并不是为了保护predictive的atomic access的,而是为了保护那个计数器的)效果就是每时每刻只能有一个thread去evaluate那个predictive,当然程序员要保证这个判断条件互斥...

我做了一个简单的比较试验来比较conditionalwait与普通的mutex,结果简直是惊人的


九月二十七日 今天天气很好吗? 下雨了。

花巨资购买的《black adder》终于到了,当然有不少我已经下载看过了,不过那感受是不同的,一个是整版的一个是盗版的。今天模拟我的程序作了一个多线程的两组类似producer-consumer的东西,明天调试吧。学到了一句台词,比如写程序挑战自己的头脑是我生命的一部分,Life without it is like a broken pencil, pointless!

完成了一个模拟,就在心满意足之际突然开始怀疑整个测试的基础,究竟在什么前提下我们需要多线程?大多数kids总以为使用多线程会自动增加效率,可是假如原本的工作就是顺序执行的,难道我们需要多线程吗?核心的问题是io与compute是否并行而不是什么其他。


九月二十八日 今天天气很好吗? 下雨了。

One of the dirty joke of "Black Adder" is that the flying corps officer gave training lesson for new pilots. He asked them to treat planes the way they treat women. That is to say, get into them at least five time a day and bring them to heaven within ten minutes.

九月三十日 今天天气很好吗? 很好。

昨天起自行车去同学家帮助搬家,感觉需要加强力量训练。我的想法其实很简单,当初使用non-blocking的mpi函数的好处就是应该为多线程服务的,昨天的实验证实了一个东西,就是cond_wait并不能保证至少有一个线程运行,我的意思是说假如进程里面所有的线程都被block了是否有可能至少有一个线程在当前进程运行时被唤醒?不过我的实验不充分,结论暂时使cond_wait的条件一定要保证任何情况下至少有一个为false,也就是说至少有一个线程可以运行,否则deadlock。回到刚才的问题,假如mpi的thread在post了Isend或者Irecv之后我把它的cond_wait条建设为true让他block,然后当其他线成空闲时候在唤醒他并检查testall或者testany之类是否这样可以提高效率?刚才我突然怀疑这样做是否有效,因为归根结底socket通讯这一层不是晚全部依赖于cpu的io,比如磁盘就有可能晚全部依赖于cpu,或者dma之类的也部依赖于cpu所以是可以做并行的,可是多半socket通讯还是在os的driver一层实现的,缺了cpu根本就不行,所以我把它block了等于不接收不发送了,完全无意义。看来这条路也走不通,对于filemapping是否做成多线程我始终不敢确定,因为看起来它的机制和普通的文件读写不太一样,也许在os一层已经作了某种优化了吧?(不敢说,不清楚。)所以现在回过头来看所谓的使用non-blocking的好处仅仅在于从多个源头接受可以并发,当然发送也是一样,但是现在又强调使用broadcast的优化好处就没有必要non-blocking了,不过还是有些情况不可能使用broadcast的,只有使用non-blocking的发送接收。

照着com的一步步实现非常的繁琐,不过这本书很好,从最原始的用dll来模仿com做起,一步步来说明,只不过让我感到在某些情况下addRef和release的使用比delete来的更加头疼,因为自己的代码来控制delete毕竟是一个个人的事情,相对来说容易得多,让别人遵守release实在是太难了。classfactory也是一个头疼的事情,包裹了好几层我头都晕了,的确,com至少需要五年以上c++的开发经验以上,这里不包括那种纯粹使用wizard写应用界面的所谓“开发”,那种纯逻辑的东西大概不需要计算机专业毕业的学生去做吧。c++的interface不支持多重继承?当然对于实现的class是可以继承与多个接口的,就是多重继承纯虚类。

以上说法也对也不对,c++支持多重继承,只是在默认的继承时候如果两个父类都有某个函数的时候子类默认继承时会让编译器不知所措,但是如果你override那个virtual的方法也没有关系了,不过如果不是virtual呢?也是一样。至于是接口那就更加无所谓了,因为连代码都没有产生有什么关系呢?

我单身,我碍着谁了?碍着我妈了,因为我成了她社交生活的面子,我成了她晚年不幸福生活的罪魁祸首,我在地球表面上离中国最远的地方还是妨碍了这么多人的生活!


十月二日 今天天气很好吗?很好。

main-thread:opengl;thread1:mpi;all mpi call is in thread1;all opengl call is in main-thread;main-thread has events buffer;(This is very important because HPMPI doesn't support other than "single-threaded" mode and OpenGL is not thread-safe!) thread1 has communication buffer;thread1 uses condition-wait;main-thread lock mutex in "keyboard-callback", but doesn't call cond_wait, instead calls cond_signal. main-thread in display-callback only updates with newest communication buffer to output framebuffer;Both producer and consumer should be responsible to check buffer availability before writing. As main-thread, OpenGL will call thread_join and MPI-thread must guarantee "quit" message is sent before it exits thread_proc.  

The expected improvement:OpenGL doesn't get lock-step with MPI thread. It will have better refreshing rate. MPI_thread becomes smarter because it won't send useless data for rendering when there is no change of rendering context.

这就是plan,花一天时间应该差不多,唯一要小心的是deadlock&livelock.main-thread cond: (graphicIndex+1)%MaxBufferNumber==mpiIndex; mpi-thread cond:mpiIndex==graphicIndex;初始化条件是mpiIndex==graphicIndex.


十月三日 今天天气很好吗?很好。

我决定在做成多线程之前先做一个过渡的版本。 当年粟裕向毛泽东立下军令状不过长江而是在将被消灭新五军,老毛同意了但是把陈毅调到了中原局让粟裕度掌大权,看上去是提拔实际上也是大大的压力,如果仗打不好了不用让陈毅来顶缸,粟裕可能就直接要受处分了。

我想解释一下什么叫做“国富民强”,很多人实际上不明白这个成语。说白了就是国家富裕了人民身体就强壮了,但是为什么呢?因为国家收人民的税太多自然就富了,钱多了却又不用在老百姓的医疗教育上当然就国富了,可是人民的钱包却瘪下去了,没钱看病就只好猛练身体,于是就民强了,身体不强不行啊!因为生不起病了。


十月四日 今天天气很好吗?很好。

google desktop是非常地强大,不经意之间从电脑里搜索出一段尘封的记忆,那是一份搞笑似的合作协议,当事人现在并不知道在天涯还是海角,这就是最典型的不可计算的问题,你想一台计算机或者一个通讯器输入一个东西,机器仿佛是一直在运行,但是始终没有出结果,或者你向一个通讯器喊了一句“你听到了吗?听到了请回答yes。”结果你一直没有等到任何回答,究竟是通讯器坏了还是通讯线路坏了?这是不可计算的。比较搞笑的是假如你接受到了一个回答是"no!"那么你要做何解释?

#import "path\\com_server_file_name" no_namespace实际上就是去读取typelibrary并生成c/c++头文件,当然一要先运行编译一下,可是visual也会锁定那个com,很麻烦,如果你的com是dll,用regsvr32.exe进行注册,当然visual在编译过程就帮你注册了。(exe怎么注册还没有学到。)从client端来看,你最好用oleview这个工具来看typelibrary,当然大多数时候并不知其所以然。创建com可以用smart pointer,但是一定要小心,import已经帮你声明了smart-pointer的模板类,就是interfacePtr的变量类型,他有很多的constructor,比如createInstance,但是我被他fool了好久浪费了快一个小时才意识到操作符“->”被重载了使用的都是被代表的接口指针的方法,而真正的smart pointer的方法却使用操作符".",哈哈。。。你fool了我,I服了you!如果不用smartpointer也许更容易但是引用计数实在是一个恶梦,一定要很小心。大体上你可以调用CoCreateInstance或者Ex版本,记住第一个是classID这里的意义就是说一个方法可能有很多coclass支持,你要告诉com你要拿一个地实现,返回类型是你的接口指针的,当然你要传入接口指针的guid,我这一点又犯了低级错误,我把Iclassfactor的接口guid传了进去,这是典型的把CoGetClassObject和他的wrapper函数cocreateinstance弄混了,实际上iclassfactory不是所有的接口都需要支持,相反所有的com都需要另外做一个实现这个接口的com所以创建instance实际上包含了两步,第一先创建那个com的classfactory并获得指针,然后调用IClassFactory的createInstance方法,这样做是有很深的原因的,在学习CORBA及其其他分布式的时候就会制导系统对于创建实例是不负责的是要com的提供者来实现的,在CoCreateInstance方法要传入接口的uuid是因为一个coclass支持很多接口,大体上创建了com事例后首先返回的是一个与最原始接口IUnknown兼容的接口指针,在调用queryInterface方法来获取用户需要的接口指针。所以,你就应该明白如果获得的是IDespatch接口,你可以放心地把它cast成dual接口中的另一个接口。(这一点我还是不很确认,但是应该是对的,至少我的例子是这样。)使用com最好用exception机制来处理错误,因为也许引用计数是比较容易控制吧,_com_issue_error(hr),catch(_com_error e)。BSTR本身就是双字节指针。CoCreateInstanceEx的最后一个参数是一个MULTI_QI的数组,哈哈。。。


十月九日 今天天气很好吗? 不知道。

一个简单的不能再简单的试验,一个普通的不能再普通的理念,有谁会做这种无聊的验证?比如1+1是否等于2?

1。文件I/O是blocking的,正如期待的,ReadFile这样的API会导致线程调度。2。文件handle不可以在不同线程之间共享。3。如果在CreateThread里面输出threadID,我不知道怎样防止程序结束之前的异常,是不是因为我的变量没有初始化?或者是因为stack variable的缘故?3。白吃一样的问题:TCP之类的网络传输是否算是I/O一样的,或者说一个伪命题:TCP是在那里实现的?是network adaptor吗?我不相信,也无法证实,不过我觉得肯定不是,所以大部分的工作是CPU的工作,但是真正的底层传输工作在network adaptor层里的工作要慢的多,所以,socket通讯实际上和文件一样会引发线程调度,(这听上去是废话,那一个学计算机的一年级学生会不知道?)4。问题是pthread仅仅是一个Linux的library为什么是真线程?Linux的syscall里面并没有相关的API为什么你可以操纵调度?同样的问题是syscall里面没有精确时钟,为什么gettimeofday之类的library可以有微秒级的时钟?Alex的解释也许有道理,就是128syscall不够用,所以有些功能是靠读取参数实现的,linux核心有一个不开放的时钟数,我忘了名字很古怪的,很多kernel编程的人都在用。5。socket编程我几乎没有在linux上试验过,发现了一个和我一样的noob做什么linux socket tutorial结果一个基本的概念都没有搞清楚,UDP是不能够listen的,那是对connected的,这个白吃引得我犯了白吃级的错误,想了好久才明白过来,网络上的kids有几个是可靠的?讲老实话,我觉得我并不是唯一一个看不懂manpage的人。(这样安慰自己了。)

中国政府才是一辈子的凯子外交,援助一个国家被一个国家耍一通,每年节衣缩食(当然是老百姓了,官僚的钱一分都不会少)援助接济朝鲜,付出几十万人的生命,今天人家谈停战协定连让你参加都不让,一个国家做到这份上实在失败,看到这一点我也不再感到自卑了。想想看吧,早年援助阿尔巴尼亚,后来是什么赞比亚刚果修什么铁路死的人又是无数,结果呢?那些非洲土著连维护都不愿意维护,铁路现在好像都不大能用了,在后来是越南,还不得不都刀枪来保卫边境,现在连这么一个自古就是附属国的朝鲜一方面拿着你的钱粮一方面却想甩开你和美国人眉来眼去,这一切都是为什么?因为那个混账主义,看看美国就知道什么是聪明人的主张,一切的一切以美国国家利益为最高追求,什么国际主义什么人权什么白吃主义都是放那个什么的,问题是这句话每个国家都会说都会做为什么我们做得这么差?因为我们的这个政府不是一个真正的民选政府当家的都还是封建时代的老爷,看看真正民选政府的官员,因为那谁认识国家的老爷这些官员好像打工仔一样整天提心吊胆如履薄冰一样地小心翼翼伺候人民老爷,只要是媒体上反映出来的民意不高兴官员立刻就要辞职下台,想想看整天喊着人民当家作主的口号实际上是最大的谎言,在他们眼里人民就是牛羊一样的。


十月十日 今天天气很好吗? 不知道。

在c/c++程序里面如何显示中文?1。你的main最好用_tmain(int argc, _TCHAR **argv, _TCHAR **envp)因为_TCHAR是一个兼容ansi和wchar_t的宏,会根据系统来定义,当然你确定无疑地用wmain也好了。2。字串必须使用wchar_t,他的literal比如字串要加一个L这个应该会把unsigned char*变成unsigned short*,配合使用wprintf,wcnstr等等。3。然而最重要的是要设置正确的locale,要include<locale.h>然后是setlocale(LC_CTYPE, ".936");在网络上搜到一个不错的小孩子,不过在不少方面我看来是有些望尘莫及的,唉。。。我一直想不明白的就是他给的一个例子里怎样把某些核心加密代码“反汇编再加密”?用masm32吗?

十月十一日 今天天气很好吗不知道。

想找一下去年的试验,结果breca也当机了,那么就重写一下,凭印象来说是比那时候好很多了,当时对于index总是混乱。 其实我最喜欢的是“黑豹”的《无是无非》,激越仓劲又充满柔情,荡气回肠非常的富于想象力,尤其是长长的电子乐器的过门非常好听。

十月十三日 今天天气很好吗? 天好冷啊。

所谓自由就是根本不需要对除了自己以外的任何人负责,有些人称之为自私,甚至斥责为怯懦,但是不管怎样我就是只愿意享受这种自由。基本上什么时间睡觉什么时间吃饭做什么干什么想什么都是你自己的决定,有的时候你的行为在“正常人”看来是属于脑子进水的行为,比如作为一个比街头乞丐强不到哪里去的赤贫阶层,贪图“享受”几年来大约花了两千多块钱买正版的DVD和教科书,很多所谓的正版DVD实际上我都有盗版了可是作为兴趣爱好还是决定买正版来看,也许很多时候仅仅是因为不能忍受盗版品质上的小小的瑕疵。平常省吃俭用,除了基本的温饱以外没有什么开销,但是却一心想要去出国旅游住几天四星五星宾馆享受一下,我想这种远虑近忧都没有的生活状态全部来自于这种“自由”,但凡舍得一身剐连皇帝老儿也能拉下马。MapiReadMail里面有一两个问题,第一文件的类型似乎是取决于邮件客户端和操作系统的策略,总之我发祥总是NULL,第二临时文件我好像没有看到真正的拷贝,是不是说mapi仅仅给你一个输出的文件名实际上还没有真正拷贝?

看到新闻里说中国当代艺术品拍卖屡屡创新高,实在是莫名其妙,那些个垃圾玩意居然有人画上几百万上千万实在是不可思议。以前我认为那是一种新型的洗钱工具,就比如MR.W介绍早年为什么香港的电影会繁荣,就是因为香港的黑钱太多。所以根据大胆假设小心求证的原则,我也可以大胆的断定,中国的所谓艺术品拍卖市场繁荣是因为洗钱的需要,比如你现在要给某个贪官行贿,如果拿大笔的现金有时候非常的不方便,第一国内公司 现金的管理越来越严格,放都没地方放,你总不能还像当年我老家那些农民拿麻袋背人民币吧?可是如果给你一幅画让你的在海外留学的孩子到美国拍卖行去拍卖一下,不是省去了过关带现金的麻烦吗?很多时候如果你给咱们敬爱的领导送一幅名画,谁会说你是送礼行贿? 世界上根本没有什么真正的艺术品,至少在现代艺术领域,所谓艺术品在买家眼里只是投机的代名词,或者是一个象征性的标地物。在西方国家艺术品是减税的法宝,因为那些国家为了标榜对艺术的支持大都有所谓艺术品投资免税的政策,所以,我认为这些垃圾也许也是一些所谓外资进入中国的合法桥梁而已。早年外资进入中国投资的时候大都通过贸易渠道,因为当时中国有所谓出口退税政策鼓励出口,因此,通过贸易渠道一块美元换成人民币比正常的汇率1:8.3要高出将近十个百分点,中国每年都有大笔的外资要进入来投资,在鼓励外资的政策越来越消退的今天,投资形式是美元还是人民币可能都无关紧要了,外资据说进入中国井喷的股票房地产市场有限制,可是我想透过其他渠道比如这些艺术品可能是没有限制的吧? 姑妄言之,姑妄听之,大胆假设,小心求证。

天冷了,床头的法国葡萄酒喝光了,收集一下桌下墙角的易拉罐竟有两大袋子,去provigo卖了换酒喝吧。(听上去很别扭,可能是看《武林外传》看多了,语不惊人死不休。)

晚上认真阅读1944年盟军发动的开辟第二战场的诺曼底登陆作战及其详细地介绍,实在是令人无比的佩服,当时的盟军的工作实在是细致周到,巨大的工业能力超凡的想象力无比的人力物力资源,作为对手的德军也是让人肃然起敬的可怕的敌人,我其实现在明白德军不在滩头阵地配置过多的兵力而在纵深集结实施防守反击其实是一种更加积极有效的防御,在法国前线并不一定要配备太多的兵力,因为欧洲大陆发达的交通线即便是在波兰境内的德国精锐东县与被部队也可以在三天之内增援,所谓大陆登陆战与美军在太平洋的岛屿登陆战完全不同,因为广阔的纵深以及强大的后援可以在登陆的两个星期内都形成3比1的巨大优势,主要原因是登陆一方在没有占领大港口之前无法将超过10个师的部队送上大陆并保证两弹燃油等等的补给,而且最多只能有一到两个装甲师,因此,隆德施泰德与隆美尔相比实际上是一个战略家与战术家的区别,如果按照前者的判断而没有隆美尔的干扰也许盟军就不可能在1944年登陆成功了。当时盟军的空中力量和德军的对比是30比1,海军是绝对的优势,陆军也是占据很大的优势,在这种前提下依然坐了大量的充分的准备,甚至煞费苦心地进行战略级的欺骗,注意不是战术级的,全英国整个国家的战略情报封锁,上下齐心,即便如此在诺曼底登陆依然遭遇了相当大的损失,甚至可以说成功失败也在一线之间。反观PLA与现役的台军在实力对比上远远达不到压倒优势,甚至可以说在很多方面还处于劣势,根本没有做任何的具体的战略准备,甚至连战术级的准备部队的基本训练都没有,怎么可能进行军一级的作战?集团军级作战根本就免谈,空军海军多兵种协同完全是天方夜谭,所以说最多就是若干特种大队的突击行动,这样大规模的作战在和平年代没有周密完备的准备一年以上根本就不可能。所以,台湾现在就算独立了,PLA绝不可能在3年内做出任何的应对,唯一可行的方案就是潜艇封锁海港,但是这是绞杀绝对不能长久,而且是会双方都受损失。总而言之,台湾并不是不能独立,实际上问题是独立了以后怎么办的问题,而且本来就是独立的,何必要再提什么独立呢?


十月十六日 今天天气很好吗?天好冷啊。

天真的冷了,可是公寓的管理层可能是轻信了世界气候变暖的谣言居然认为加拿大的冬天可能已经不是那么冷了到现在也不开暖气,我只好把我自己的电暖风扇24小时开着,反正电钱不用我出。高速网的合约到期了,像换一家带有线电视的,结果可能要等上一个多星期吧,因为我这个屋子以前没有人接cable,于是现在开始体验一种没有internet的日子,其实也差不多。到底德军把有生力量配备在海岸还是纵深这的确是一个难以决策的问题。不过看过《硫磺岛家书》就明白隆德施泰因是对的,当防守力量与进攻方旗鼓相当的时候当然是靠前配属有便宜可占,在海滩上给敌人一重大杀伤,并等待援兵把登陆者赶下海甚至全歼,这在1942年对付英国当时一支师级突击部队还是很有效的,当时丘吉尔因为斯大林的强烈要求不得不试探性地向法国派出了一支突击队结果全军覆没,以至于英美联军后来转而在北非登陆,或者去意大利小打小闹,第二战场的开辟一支推迟到了1944年,因为当时苏联红军已经取得了压倒性的优势如果再不开辟第二战场整个欧洲大陆就要沦为共产党的天下了,所以,大的背景是1944年和1942年是大大的不同,这个时候德军已经捉襟见肘不要说北非,欧洲大陆的防守都感到兵力不足,因此,在登陆一方占据绝对优势的情况下在海滩与敌人硬碰硬未必是一个好的对策,隆美尔是一个优秀的统帅但是他的眼光有时候却不准,就在于它对形势的判断尤其是大环境的判断还欠缺。机动防御对于防守北自挪威瑞带,南到西班牙意大利的广阔的欧洲海岸线也许是一个更好的选择,处处防御等于处处不设防,(当然这样浅显的道理德军统帅不会不懂,因为在没有海空优势的情况下一旦让盟军上陆德军根本没有办法抵抗,所以隆美尔才坚决主张在海滩防御。)问题是单单靠海滩上的单薄的兵力在盟军海空配合的活力杀伤下能否有效阻止盟军登陆?答案是否定的,一定需要纵深的装甲部队实施反击,因为登陆场没有码头设备不可能迅速运送重装甲部队上岸,所以初期的盟军一定是轻步兵为主,反击不是以消灭盟军为目标,因为这不太可能,而是为了给援军争取时间以便从东线抽调兵力回防,因此反击的目标很值得商讨,也许可以选择一些能够给与重大杀伤的目标以便延缓盟军的推进速度。当然这一切都是建立在德军认为自己已经没有可能赢得战争胜利的前提下,可是当时的德国还有很多的可能性与希望,战场上的秘密武器的威力非常的惊人,德军的一辆虎式坦克就是在这里曾经单枪匹马消灭了几十辆的盟军坦克装甲车,如果V1导弹,me-260喷气飞机在诺曼底登陆前研制成功,那么战场的形势有很难说了。

qsort如果输入的数组是长度为一的话会出错,设立条件debug就是ctrl-b。

我最后终于耐着性子把我的project贴出来,一则因为原本就像做成开源(当然是前提有人有兴趣,不过很多paper发表之后实际上没有附带源码让想验证的人没有头绪。)二则因为要改动不少我已经有些糊涂了,又很懒不想用什么版本控制的工具(主要是学不会,除了source-safe用了几天,其他的都太复杂了。)加上简单的说明文件大小大概不到400k,其中很多东西很可能是过时的,或者不一致的,现在让我自己重新想一下很多时候我常常突然想起什么然后发现我原来早已经作了,只是我忘记了。基本上作为个人纪念而已,代表着一年多来我也不是完完全全的无所事事。


十月十七日 今天天气很好吗?天好冷啊。

忘性太大了,全忘了怎么解压缩了,实际上我是混合了tar和gzip,如果单个文件可能直接用gzip -d filename就行了。

matching, matching, matching...


十月十九日 今天天气很好吗?天,突然变得好暖和。

No strategy is the best strategy!如果你伴着脚趾头想问题你一定可以明白这个简单的道,linux怎样解决版本向下兼容的,使用softlink从下指向上,比如1指向2,2指向3。。。这样加入软件提供商充分保证向下兼容的话,早期的lib在linking的时候link libxxx.1就实际上link libxxx.n这里n就是当前版本,这在windows下兼治没办法,通常大家只好用名字的不同来代表文件的版本,但是对于早期版本的运行就没办法,除非你覆盖原文件,这一点我想在com里面是用version来解决的,但是这个对于sysadmin来说太复杂麻烦了,相比之下linux的办法好得多,当然这些对于linux稍有常识的人都是在普通不过的道理,只不过我想把他写下来。今天就是这样一个问题,fedora5的一个library被RGS调用,libXft.so.1但是学校的linux全部升级为fedora6了,只有libXft.so.2但是有没有设softlink就出现了这样的问题。我今天在lonin cirrus的时候ssh提示说密码不对,建议我删除.ssh/known_hosts文件里面的东西,我就这么做了,结果他不再要求密码了,这实在是好笑,肯定是AITS弄错了。

我比较喜欢《武林外传》里郭芙蓉的一句经典台词:我也是无意中走上文学这条不归路的。


十月二十日 今天天气很好吗?天,不冷但是很阴沉,还下雨了。

University Tennessee的一位教授的slides对于这个问题有非常好的说明:为什么需要多线成?这样MPI的app开发者可以简单地使用blocking call,而不需要non-blocking再去polling,同时,这个多线程有两层的含义,实现层和应用层,比如non-blocking的实现就可以简单地使用多线程,甚至这样的实现不支持应用层的多线程,(这当然比较silly,不过你只要看看很多的石先是把多线程lib和但线程的lib分开就知道这里面有很大的performance的因素。),总之让app开发者自己在单线城里是用mutex之类的同步工具来避免deadlock绝对不是和大多数的开发者,一般来说app的开发者都是比较弱的。MPI_Init和MPI_Finalize必须都是main-thread来call,并且只能是main-thread!!!这就是说只能调用exactly once。MPI实际上对用户隐藏了signal,比如用一个单独的线程去cache所有的signal,在用户MPIthread初始化阶段sigmask掉所有signal,这就是一个简单的解决方案。老教授的例子非常的好,看得出来他是一个身经百战的老手,我也突然明白了一些道理,比如我非要创立多个receiving吗?比如一个MPI_Recv带一个any_source的参数,事后查询request的source和tag不就行了吗?这样coding不是简单一些吗?(当然效率是否高就是实现层的细节了。)总之,给人耳目一新的感觉,虽然看起来都是很初级的东西,应当这样说,我还是太初级了。读他的讲义给人很多启发,我一定要认真学习!这一次I really mean it.

十月二十一日 今天天气很好吗?很好,阳光灿烂。

一个问题是否存在并行的算法可以看作是一个“类似”NPC的问题,我说类似只是说形式类似,好像一个猜想,为了读懂这个问题,还是先复习一下NPC吧。《Introduction To Algorithms》实在是计算机学生的葵花宝典,只不过我觉得在不同时期的体会见解是不一样的,现在再来读的话就容易很多了,本科的时候能够了解各大概就很不错了。“optimization”应该是比“decision”困难得多,比如Dijakstra问题我影响很深刻,教授反复强调算法原本并不告诉你路径,只是长度,你必须改进一下才能获得路径,虽然不会很难但是反映了你需要更多的计算与存储。P,NP,NPC都是以“decision problem”的形式出现的,所以你要把一些optimization换换形式。P<=NP是显而易见的,因为从NP的定义就知道这个,既然我直接就能找到polynomial的解决方案,验证自然也就完成了,难道不是吗?但是反过来呢?这就是问题了。这些浅显的问题其实在第一次学算法的时候就应该牢牢记住,可实际上我是过了一年以后才明白的,所谓人的聪明才智是有差别的。

让我们记录下这个经典的并行算法例子,这是《Limits To Parallel Computation》开头的一个入门的例子,假如你有一个并行系统,比如cluster,你能够设计一个时间复杂度为O(logn)的排序算法呢?Recall排序的理论下限是O(nlogn)。Given n*(n-1)台电脑组成一个所谓计算矩阵M分别计算这样的结果,假设要排序的鼠族元素分别为n1,n2,...nn。M[1,1]计算n1和n2的差值,如果n1<n2则结果为0,否则为1,M[1,2]计算n1和n3,M[1,3]计算n1和n4。。。这样我们就有了关于n1的一个n-1的0或者1结果,他们的和就是n1的rank,就是最终排序的位置。同理n2,n3...nn都有这样的结果,所以排序变成把这些结果加总的过程因为我们的计算矩阵是独立的电脑这些计算是并行的,又因为比较大小是一个常数时间,所以核心变成加总的时间了,(在早期的并行计算很多讨论时关于数据怎样部署到各个电脑,现在几乎没有人关心这个问题,在sort-first,sort-middle,sort-last你都可以看到这些concern的阴影,这在十几年前是不能回避的问题,现在nfs之类的共享文件系统让人们几乎可以忽略这些问题。)对于n-1个结果的加总可以用经典的类似binary-tree的方式来并行处理,两两加总,最后归一,所以时间复杂度是O(logn),对于n个元素,每个都是可以同时进行的,所以总的还是O(logn)。当然这里我们忽略了最后的数组排序的结果部分,这可以简单地在O(1)时间内完成,因为rank就是元素的最后的index。这个例子得惊人之处在于他给出了一个并行处理的基本结果:(best of sequential time)/(number of processor)<=(parallel time),看上去好像没有什么仿佛你伴着脚趾头都想得出来,可是反过来想象它的意义,翻译作者的论述就是假如你想让你的并行系统有着“高效并行”效率(这里可以理解为O(logn)),你可能至少要投资数量为问题大小n的指数大小的处理器(polynomial number of processors)。这个结论让你很兴奋吗?我觉得是很沮丧的,这也正是作者想要引出的问题核心所在,是否冥冥之中有某种更加深奥的limits?


十月二十三日 今天天气很好吗?下雨了。

英国的《太阳报》据说是一个专登下流新闻的小报,《notting hill》是这么说的。花费巨资申请了一个cableTV, BBC新闻的伦敦播音员小姐的伦敦土音实在是太土了。

物质不灭定律好像在我家失效了,我的DVD《四个婚礼与一个葬礼》找不到了,我的壁橱的挂钩掉在地上就找不到了。只好把《Notting Hill》找出来看了看。


十月二十四日 今天天气很好吗?下雨了。

如果你在一个函数里面声明数组(即便是main)那么如果越界写操作很可能把栈里的返回地址覆盖,当然如果这个数组声明在data区(全局)你很可能以为你的程序很正常因为没有异常,可是错误隐藏的也越深。

看到PLA第124机械化旅的训练照片觉得太做作,因为作为一个普通全训连队按照美军特种训练的样子做给美军参观团看实在是有些虚张声势,现代的士兵你不可能要求他们像继十年前一样的不折不扣执行长官的命令,今天的当兵的不可能不把从军当作是一种职业的选择,如果是职业就应该是有所求。


十月二十五日 今天天气很好吗? 太好了,背了几十公斤的背包去爬山。

今天据说是某人的生日。cluster总算升级完成,测试结果还好了,31个节点speedup大概是4倍,当然还有很多改进的余地。sva_remote.sh -d SVA_DS_1_3 -r 30 -I因为我必须让n120作为display surface,这个原因实在是很无聊,因为我用mpirun -srun --nodelist=n89,...n98的时候slurm并不按照我的list分配,也许是n[89-96]的weight是1,n[97-120]的weight是2的缘故吧,总之我没有办法用list来指定节点,唯一就是让display来自最后一个节点。那么我是怎么知道display-surface的呢?在/opt/sva/hpremote/bin下面有一个svadisplaysurface.pl的从那里可以找到。

十月二十六日 今天天气很好吗?太好了 。

计算机科学是一个关于所有科学的科学,他研究的对象是所有的人类的知识的获得,处理,分析的过程,这样的科学只有超越普通人的人才适合研究。关于美国的司法制度的优越性可以用一个计算机科学的理论来解释,有一个所谓的NP问题,这一类的问题说的是这样一类问题,问题本身的求解过程非常的复杂,但是假如你得到了答案想要验证它的正确性却有很容易的办法。比如拼图游戏品的过程很不容易但是拼好了,随便一看就知道对部队。司法公正的一个重要保证是陪审员制度,陪审员都不是什么司法制度的专业人士,然而如果一个审判是公正和充分的话即便是街头的普通人应该也能认识到,这就是说组织证据证明有罪是一个非常困难需要专业知识的工作,并且非常的复杂困难,但是审判却是一个可以显而易见的工作,正因为有了陪审员制度法官的至高无上的“青天大老爷”假面具被撤掉了,人民可以运用自己的常识道德观来决定司法的实践,这就是民主的精神,妥协的精神,独立的精神,可以说没有司法的民主就没有行政制度的民主,没有司法的独立就没有行政的独立,民主的司法制度是民主制度的基石,空谈什么政治民主完全没有意义,一个国家应该从司法独立民主作起,这是唯一的民主道路。再比如议会制度,在很大程度上议会是行政的监督机制,不管行政过程比如预算的制定法令的产生有多么复杂,衡量他的利弊往往并没有那么复杂,这也正是想出一个办法由时候很难,但是验证它是否可行有时候并不需要那么多的创造性反而是一个普通人都能够做的工作,根据这个原则,议会检讨行政专业人士的专业性很强的工作是一个合理的办法。所有的这一切都是遵循着NP这类问题的特征,也许NP问题是人类最重要的研究课题,因为他们往往都很重要也很困难。

Yes, I am a bit wrong with iterator. list<int>::iterator it2=lst.begin();

(*it2+=3)=100;//what is *it2 now?


十月二十七日 今天天气很好吗? 下雨了 。

冒雨骑自行车去同学家吃螃蟹。看到一则新闻说台湾的农产品太贵了大陆根本吃不起,这简直就是观念的错误,放眼世界发达国家的农业那一个不是享受政府大量的补贴,农业是产业中最难有竞争力的不靠政府欧洲的农民怎么生活下去,虽然台湾不富裕但是他的农业劳动力成本已经太高了,政府不补贴一定很难生存,所以抱怨本身就反映出一个政府的观念的错误,就是说这个农业必须政府扶持,产品太贵缺乏竞争力不是农业本身的错是政府的错。或早或晚中国的农民劳动力会被证明缺乏竞争力而需要政府的补贴,不过那都是50年以后的事情了。

Joel昨天给我的的建议我觉得我比较能够接受,相比G的提法其实是一样的,只不过Joel给我看了SMP中四个cpu的占用率非常的有震撼力,如果我能够纯粹地把计算限制在CPU而不是GPU那么这就可以让cluster overcommitted去运行多个process,如果MPI又能够充分利用本地进程间通信绕过network这是一个很好的方案,也许需要使用OpenMPI而不是HPMPI.


十月二十七日 今天天气很好吗? 天气很好,但是还是有些冷 。

去皇家山跑步,现在已经没有办法跑上山顶了,唉。如果你想连接实验室的电脑,现在还有唯一的一个途径,用ssh客户端连接login.encs.concordia.ca然后从那里用ssh paush.encs.concordia.ca这个事我发现唯一的server允许我用ssh的了,Alex说的对,学校封掉了几乎所有的server访问局域网的漏洞。当然前提是我的实验室的机器运行sshd,如果是windows我觉得最好是下载一个freeSSHd,当然最好是去他的网站去下载了,注意要把windows的防火墙设置exception允许它运行,至于linux则要简单得多,sshd可能是默认运行的,至于防火墙的设置嘛,我忘了。运行sftp的时候我的localpath还是NFS的path,所以用lls,get,put等。

十月三十日 今天天气很好吗? 还是有些冷 。

花了一晚上时间总算明白哪些最基本的message的作用

十月三十一日 今天天气很好吗? 还是有些冷 。

花了1.5刀增加了一个military channel,现在电视好看多了,增加一个频道很方便的,只要一个电话就行了。 美英的特种兵训练要严格贴近实战的多,不像PLA都是些作秀的东动作给上级领导看的,这是一个退休的SAS的模拟逃生训练,他在当年的海湾战争期间空降到伊拉克后方结果他的同事都被俘了,只有他在上千名士兵的追击下没有食物很少的水灾伊拉克的沙漠走了8天280多公里逃了回来,这成为SAS历史上最长的逃生纪录。这次演习进行在非洲博茨瓦纳的沼泽地里,四个追踪这都是英美的退休特种兵,有SAS,seal,他们又所有的资源,四驱车,汽艇,卫星,地面部队,当地老百姓的协助等等。而我们的主角chris只有一点点地水完全没有食物,已开始在沼泽地跋涉,在泥水里挣扎,纳税都是有毒的,所以在非洲的烈日下是非常的渴的。演习的真实在于很多时候chris都会有可能有生命危险,比如非洲的大象曾经把他的一个战友撞死,有好几次实际上追击者就在离他机密的地方,当然它也有反击的办法,一路上他做了好几个陷阱,如果追击这不是经验丰富小心翼翼也早就伤亡了。在夜晚chris要生火取暖因为蚊子很多,还有很多的猛兽在丛林徘徊,当然他要在太阳落山以后不能让烟暴露行踪,他要把周围20米的遮蔽火光。甚至为了完成任务他还偷了当地人的一匹马,这实际上也是很危险的赌博,而他的mission不仅仅是逃生而且要去拯救一个受伤的飞行员和他一起驾驶滑翔机逃跑。但是在空降地附近追击者凭借卫星先找到了受伤的飞行员的藏身地点,但是他们并不急于抓飞行员反而用它作为诱饵来等待chris营救的时候一网打尽,chris躲在山洞里洞察了陷阱最后冷静地决定放弃任务独自逃生,这让人很难过但是这是没有办法的办法。在整个过程中,chris不断地用自带的小摄像机拍摄逃生过程,从他的自述可以知道英国特种部队在训练中经常在世界各地的常人难以忍受的环境逃生,还免不了有些伤亡,从这一点让我觉得现在的PLA过于注重表面,很多时候军官还怕出事故,训练成了表演,最大的目标成了追求无训练事故,对比美军要贴近实战的多。

下一段的逃生训练在西伯利亚的冻土带,温度是零下32度,加上wind effect实际你会感到零下46度,这种严寒完全不可能忍受,我是非常清楚这种温度意味着什么。chris在晚上出现了幻觉,指挥部决定中止演习派出搜索队寻找它,chris太冷了手脚不能正常行动无法接通救生无线电,这场逃生训练很可能要了他得命。 终于搜索队找到了他,他已经在雪地里呆了九个小时,他身体产生的热量还不足以补充失去的热量,令人惊奇的是当他在急救室里呆了一晚上后居然在第二天又继续演习,事实上搜索队甚至在晚上都放弃了巡逻准备回城了,他们视作装甲车,chris却是完全徒步靠着一个雪橇可是雪深到膝盖,每走一步都是多么艰难。chris要严图到达一个个的联络点,每一个地点存有下一个联络点的路线,所以他不到达联络点就不知道下一个点,有一个联络点在河对岸,搜索队在河边布防用夜视仪监视结冰的河面,你根本不可能躲过监视,幸好有很多人车过河,chris的机会就是混在人里面躲过监视,他做到了。下一站是在城里面躲过监视,chris伪装成本地人,后来发现时间上chris和搜索队就只有几步路经过了监视队的卡车。chris找到了本地的联络人获得了一辆雪地车向目的地出发,同时搜索队得到了指挥中心透露的情报,又一场追击开始了。最后时刻直升机来接chris,搜索队只差几秒钟就抓住了chris。

着一个演习发生在洪都拉斯的蚊子海岸,你可以想象有多么热的热带丛林,chris在丛林河流间穿梭设下一个个假象迷惑追踪者,他涉过河然后制造假象进入丛林,实际上又涉过河。这给他一些时间但是代价是他的脚完全被浸泡的水泡软了,他也失去大量的水,开始脱水,他在藏宝地点埋下了一个手榴弹一边当搜索队发现他的故意留下的假宝物时候爆炸,后来果然搜索队掉到了陷阱里。虽然搜索队有直升机还有总部的情报支援,结果一个队员还是中暑脱水了。chris的日子也不好过,原本计划4天的逃生计划有了变化直升机不来了,chris要多呆一天半赶到海边去和接应的船会合。

《Looking for Comedian in India》实在是非常的funny,这是一个搞笑的电影,美国政府向修补和穆斯林世界的关系于是派出一个comedian去印度和巴基斯坦寻找当地的comedian并且了解怎样才能让穆斯林发笑,并提交一分五百页的报告。在印度你看到了很多滑稽的东西当然这个mel gibson的那些笑话根本不能让印度人发笑,在巴基斯坦他的运气好多了,因为他秘密地和塔利班战士见面并表演了同样的笑话给恐怖分子让他们哈哈大笑尽管他们完全不懂英文,可是却比说英文的印度人更能欣赏他的笑话。不过说老实话我是一点都不觉的那些笑话好笑。因为他的到来巴基斯坦和印度中断了好几年的和平又开始武装冲突了。


十一月一日 今天天气很好吗?还是有些冷 。

sympatico为了拉拢我居然真得给我寄来了一个四口modem,非常的漂亮软件也做得非常的好,让人觉得产品是台湾造的二步向大陆厂商做得那么粗糙。仔细一看是马来西亚制造的,牌子叫做2wire质量不错,我差不多会因为这个router-modem继续和sympatico签internet的接入合同。花了半个早上之证明了一个问题,我的snapshot算法应该没有问题,那么问题会在哪里呢?应该是binary-tree-like的数据交换吧?只能说是like因为实际上和binary-tree毫无关系,晚上想要在测试结果发现joel可能把一些设置改了问题一大堆,很郁闷。HP的技术支持很糟糕反正没有人理会我,也许都转移到了印度去了,反正outsourcing基本就意味着质量下降。rgsender的ip地址完全没有意义,hp-remote应该使用域名来访问的,比如n120.cirrus.private,那么除非你在学校局域网内这个域名的解析没有办法在校园网以外做到,这实在是离谱,应该使有办法的。郁闷。

瓜岛之战日本还是占上风的,至少当时地面部队人数占优,海空占优,号称“东京快车”的日本驱逐舰对每天晚上准时向美军发动进攻同时卸下陆战队,但是问题是海岛有时候会成为坟墓如果没有充分的补给的情况下,单单疟疾就让8000名美军失去战斗力,而日本方面要糟的多,日均甚至连起码的食物都保障不了就不要说药品了,整个战役大约损失了两万多人。


十一月二日 今天天气很好吗?还是有些冷 。

看到了一份真正中肯的技术评价才明白了一些主战坦克的实战优劣对比,比如很多时候一直以为99式是一种技术非常领先的第三代主战坦克,比如炮管口径125mm加上炮射导弹这些看上去很显眼的东西,可实际上因为瞄准系统的不足实际发现目标距离大大小与西方主战坦克使得这个意义不大,这让我联想到了当年的震源舰号称把岸防炮搬到了铁甲舰上以追求大口径,可是为什么当时的海上霸主英国人自己不这样使用呢?肯定是有原因的,结果甲午海战吃了亏这也是一个因素,从细节上看99式在传动系统上,比如原地转向倒车等等都还有很大的差距,很多时候这种小的机动的细节会要了命,所以好大喜功实在是致命的危险。

十一月三日 今天天气很好吗?还是有些冷 。

重看了一遍《I, Robot》有些场景还是非常的funny,比如当机器人开始宣布宵禁拍着整齐的方阵要求手持棍棒刀枪的“和平”市民回家时候,这个时候其实你会问当地谁是暴徒,机器人都是赤手空拳并且尽一切力量减少人员的伤亡,但是普通市民则是全副武装起来大开杀戒。

十一月四日 今天天气很好吗? 很有些冷 。

在国内被查禁的《盘古乐队》有一句歌词叫做“奥了TMD运”,虽然比较粗鄙但是未必完全错误,所谓奥运与卫星上天嫦娥奔月一样和普通人没有多少直接的关系,有时候至多是心理上有些安慰作用。花了快一天时间也没有完成《东归》,这个据说是取自蒙古的一个什么汗摆脱沙俄女皇的统治起义成功的地图,首先要打下保加利亚建立一个大后方在反攻莫斯科,彼得堡,然后渡河进入中亚,最后和大清的左宗棠决战,进入中亚的大陆很曲折,第一次是试探性的开地图时的摸索因为主英雄不能逃跑,结果发现对方的主力英雄都是思想基本属性四十多的,我的那个什么汗只有二十几,赶紧逃,在渡口上船,造船厂只有我这一侧的河边有,还专门派了好几个人不断招船毁船封锁河道,打了一个下午才攻下中亚,结果那个传送们有点机巧,船不能靠岸,必须要用水上漂得法术才能打开封印,我打开地图编辑器看到再过封印之后地图作者留下的“哈哈终于还是让你想到了祝贺过关”才确认地图没有错,着实费了我半个多小时。接下去就容易不少了,我的主力英雄思想属性居然有七八十,比最后的左宗棠都高,不过他的部队质量就比我强多了,我的主力是大天使,泰坦,比蒙,以及二级兵种比如骑兵,独眼,蛇妖等,左宗棠居然有大量的圣龙,硫磺龙之类的,哈哈。。。不过我在进入地下地图不久就获得了入城术,在将近二十几个城堡间穿梭调兵遣将还有赠送的五千游牧骑兵加上一千多的mana和复活术在大战之后还有两百大天使和两百的泰坦生存了下来,惨烈啊。作者在一个关口留下一个message让玩家发mail告诉他到达那里花了多少时间,嗬嗬,那时好几年前的地图恐怕早就物是人非了,如果哪一天作者能看到这里他就知道我花了快整整一天才达到大清帝国的边疆。没有作弊只是不断存盘取盘。

美国海军水兵中居然有15%为女兵,这的确让人比较吃惊,不过仔细一想也不奇怪,因为海军多位技术兵种,雷达通讯电子技术等等男女比例差别当然没有陆军那么大,不过我一直认为美军应该会在二十年内实现无人化,遥控化,到那个时候战争真的要成为电子游戏了,这样美国民众比较会接受这种地伤亡率的战争形式。看到国内拍的一个什么《井冈山》的电视剧,实在是比较搞笑,毛泽东别演绎成类似诸葛亮一样的角色,居然会多在城楼里叼了根香烟冲着国民党的骑马的师长说“杨汝渲你还不下马受降更待何时?”这实在是夸张的离谱。

与此同时,我在military channel上看到了美军一直在推崇的新世纪数字化步兵系统,"land warrior",主要包括的还是更好的资讯,士兵的头盔基本上是一个信息平台,指挥官的命令其他士兵的视频都集成在里面,而且士兵的步枪瞄准系统也集成进来当你把枪伸到头顶你也可以瞄准射击,而且指挥官也可以看到你的影像。此外耳机系统也可以成为你的电子耳因为它不仅仅是耳机还可以成为拾音器放大机让你成为耳聪目明的猎手。这个系统结合另一个美军的杀手锏--stryker步兵战车系统,这款步兵战车在2002年展示给美国国防部后大为好评,当即订购了2000套。时速65英里,有指挥车,火力支援车配备155毫米自走跑,普通型也可配备大口径迫击炮,还有医护型,整车可以空运非常时候在伊拉克的轻步兵使用。我想依靠这些新型装备美军在伊拉克的局势最终会得到改善,现在需要的仅仅是时间。相形之下,PLA大概现在刚刚达到美军二战后期的水平。另一种令人惊异的武器是mk19手榴弹发射机的改进型xm307,它可以发射航空爆弹达到400发/分,更令人惊异的是他对付snapper的手段,瞄准后榴弹会自动定制引信延迟时间正好在你射到目标的时候爆炸这样多在建筑物的枪眼里的狙击手就被炸死了而不用摧毁整个建筑物。

据说美军的M777是世界上最好的自走炮系统,德国的panzerhaubitzer2000也可能是当前最好的,他的自动装弹系统使得它相当于旧系统的三倍。他最强的地方还是机动性,发射完之后三十秒内炮管归位然后开动,这点时间有时炮弹还没有落地呢!据说他还可以发射不同的弹道射击同一个目标这样五个炮弹分别发射同时击中目标让你跑都没有得跑。德国人就是墙。

肩扛式标枪反坦克导弹非常的impressive,重约50磅,红外线自导,打了就跑,从上而下攻击坦克最薄弱的顶装甲,对付反应装甲也有办法,它可以有两次爆炸让坦克内温度达到8000度,为了掩护发射者使用一种所谓"soft-launch",就是发射的时候使用较小功率的发射器只是把导弹射到三十码以外,然后导弹上的主发动机点火向上飞行从上方攻击坦克,这样防止了很多肩扛式导弹的毛病就是坦克进入凹地消失在地平线一下导弹就失去目标,真是无处可逃啊。


十一月五日 今天天气很好吗?很有些冷 。

某人给我发了一个消息说google要推出手机操作系统,我给他回了一篇毫不相关的23岁博士请美女吃饭不付钱的消息,此人说我hopeless,的确,我也觉得是,不过我也觉得google有些这种味道。当时Z回国前我们聊天时,他说到google是一个危机四伏的公司,我深以为然,仿佛一个被世人赞誉为未来的武林接班人的莫小贝居然连剑法都没有练过,(武林外传)比喻不当不过意思大概就是,除了搜索引擎之外google还有什么生存的手段?Z当时讲了另外一个东西我也深以为然,你google出来几百万的结果有谁会一一去验证?使用这只看前面几个,这里面有着潜在的软件的错误问题,另外所谓的相关性本身就是一个未准确定义的标准,这就和当初人们根本没有关于“人工智能”的准确定义的情况下期望在一二十年内实现一样,这也就是为什么像baidu这样的公司可以用人力去调整,这也就是为什么有人推出来ask.com靠人来去为人服务,wikipedia这样一个人人都是编辑的百科全书,严格的说来很多新事物并不是计算机科学的进步只不过是现有internet的一种新应用而已。那么google如果在可预见的将来被yahoo超过了怎么办?是不是要关门了?微软如果windows被linux取代了还可以卖office,server,最不及卖一下xbox也还能维持一个软件公司的架子,可是google呢?如果我因为昨天晚上四点钟睡觉头脑比较混乱而作了一个大胆的假设的话,那么互联万的又一次低谷很可能来自于google的崩溃,不是搜索引擎技术的过时而是搜索引擎的普及,就是说众多的引擎并存,众多的搜索方式的并存,然后google仅仅是一个领先者而并非垄断者,这个时候nasdaq高估的股价的回落导致连锁的反应。 google正如张凯林说得那样有些饥不择食,危机四伏,从来没有一家软件公司赢得了那么多投资人的青睐但又是那么的不确定,我说不确定是指的google真正赚钱的产品就只有一个搜索引擎但是这个东西直接的客户并不是主要收入来源,很多是靠连带的广告收入,一个公司拼命招人一方面是生产扩大,另一方面是情势所迫,和微软相比起来google的危机感非常之大,比如微软的windows垮了,但至少还有office,server,xbox支撑着成为一个大软件公司,可是如果google的搜索引擎被yahoo超过了就什么都没有了。 很多it公司和很多普通人一样认为自己有了优秀的人才和足够的资源就可以开发出任何软件,实际上却不一定,因为这也取决于决策者的决心和毅力。比如你现在认为手机操作系统会成为下一代的个人资讯中心于是就不遗余力地投入,发誓作出最好的平台,但是这里面有很多因素在起作用而不仅仅是研发团队,比如硬件厂商的支持,市场推广的支持,用户体验的支持,甚至取决于公司决策者要花多少资源多长时间来投入,以及公司股东对于回报的期待。   google作为一个纯软件公司而且在这方面毫无基础能否比别的公司做得更好基本是一个大大的问号,就算软件设计的好也未必被硬件厂商接受,就算被硬件厂商接受也未必被市场接受,就算被市场接受也未必被股东接受,就算被股东接受也未必被公司决策方接受,到头来还是会通专心作搜索。Intel有一段时间号称要成为软件加硬件公司,后来不了了之了因为穷于应付amd的追赶都不及拿来的闲钱玩噱头?公司如此,人也是如此。

我喜欢看网络上愤青的火爆言论,有时候觉得自己也是牢骚满腹郁郁不得志的样子,其实不过是这两天偷懒没有去健身房的后遗症而已,一个人运动消耗掉过剩的心理能量就不会抱怨了。不过有一句话我觉得那个愤青说得很道地,国内现在很多人是咬紧牙关在硬撑着买房因为现在不买将来就更买不起,而且还有涨价的增益,问题是虚报收入最后的风险还是自己,从全国范围来看所谓的放贷严格控制来抑制购买投机而不从房地产建造的源头来解决无异于扬汤止沸于釜底抽薪的差别,需求从来不可能被抑制如果那是必需的,比如牛奶的价格上涨了是否就不喝了?加拿大肯定是不行的,在中国大米上涨了难道就不买了吗?


十一月七日 今天天气很好吗?很冷 。

改动了一下bell的modem的设置网速突然就快了很多,还是使用DHCP,但是在router有直接给每台电脑指定IP地址,另一种设置是让电脑允许所有的app成为DMZ,似乎这样可以使用emule的一些功能提高速度。

看《亮剑》看得高兴得忘了时间,可惜啊,可惜,没有造看这部片子。日本当时的两线作战的确是兵家大忌,这一点那个日本特战大队大队长说得没有错,可是凡是看过《虎,虎,虎》就知道日美太平洋战争的爆发是不可避免的,日美贸易协定里面日本向美国进口废钢材和石油,罗斯福有意抑制轴心国的势力拒绝续签协定,日本占领中国可以获得煤和铁但是橡胶和石油却没有,所以日美开战是有些不得已,


十一月八日 今天天气很好吗?很冷 。

《亮剑》有这么几个地方值得关注。1。日本在战前作了大量的准备工作,民国部队师团级军官的资料全部都收集,据说当年日本情报部门在中国实地绘制过地图,军用级的。2。日本在当时重视特种战和英美德如出一辙,这一点应该是实情,当时德军突击英法联军的马奇诺防线时候就是伞兵突击队乘滑翔机抢占运河要塞,日本组建特种部队专门突击八路军总部应该是真实的。3。片子中彭德怀的暴躁与陈赓的急躁应该是实情,对于百团大战的看法也比较客观,所谓暴露实力引来日军报复的结果也是实情,在当时八路军主要方针是发展实力而不是与日军正面决战。4。要求每一个被俘人员都宁死不屈是不现实的,英美军队一般不限制被俘人员坦白自己的部队番号及职务,因为这无多大意义。在一点就是当时中国军队和日本的巨大差距。

对于特种部队的使用上,那个日本大佐说得没有错,是战略级得高价值目标,本身特种作战就是不得已的对策,是在资源有限的情况下的集中有限资源期待更高回报的策略。北朝鲜号称全军特种兵化,这简直是荒谬,首先如果全军都是特种军那么还有什么特种?其次这也不可能,本身特种兵在很多人眼里成了擒拿格斗的代名词,可是看看英美的特种兵就知道了里面的种类很多,比如英国有一个pathfinding的旅专门进行搜索跟踪,其中有一项基本功就是追踪对手的足迹,美军特种兵里面有很多的所谓weapon specialist专门精通各种武器,特种作战也不可能是真正的十项全能训练,人的素质特点都不一样能成为十项全能的冠军的人很多方面并不是非常突出,我以前看过一个报道说径赛项目要提高成绩体重要降低,田赛项目要提高体重要增加,这两个是很矛盾的,你怎么能够希望一个人两样都占全呢?所以,特种战士并不是仅仅拳脚功夫加上射击飞车等等表演性很强的项目,而是根据作战目的特点又针对的训练,长期不打仗的部队最大的毛病就是训练无针对性,假大空中看不中用。朝鲜战争期间PLA之所以在某些方面能和美军在距不打成平局有一个重要原因就是当时的部队特别是中下级军官都是打了几年十几年的仗磨练出来的,所谓实战中大浪淘沙那些凡是做事假大空的早就被淘汰了不知道多少遍了,和平时期没有战争的检验仿佛学生只听课不考试,听懂没听懂根本看不出来。

《亮剑》和国内以前的共产党宣传片一个显著的不同在于强调军人的勇敢精神,这在以前被说成是愚蠢的,有时候对于田横五百壮士的忠诚被看作是无畏的牺牲,实际上有信仰的人在大多数时候都是看上去愚蠢的,执著的贬义词就是顽固,当时的日军如果没有武士道精神绝对不可能依靠十万派遣军扫荡整个中原,也不敢挑战当时国力雄厚的美国。以前关于日本轻武器的缺陷有不少人笑话日本军队缺乏火力强大的自动武器,这在二战后期和美军作战时候明显的吃亏,这实际上不了解美日的差别,日本的给养保障根本不能和美国相提并论,尤其是在中国大陆作战的日军,交通不便就算有给养也补充不上,所以每次作战都是所谓的清乡扫荡不能持久,自动火器子弹消耗根本不是日本步兵所能携带的了得,所以三八式是最好的选择,日本士兵一向重视射击精准,拚刺刀也是因为子弹消耗无法补充的一个手段,当然对于士兵的勇敢精神是更加的有效。不过问题是射击技术的训练过程很漫长,日军后期补充的兵员质量远远不如早期的派遣军,后来的关东军在苏联红军的进攻小摧枯拉朽固然是苏军的火力强大,也是由于士兵素质很差兵无斗志。虽然日本军部认为哪怕失去本土固守满洲依然可以支撑,但实际上人人都知道失去本土军火兵员补给的满洲仅仅是苟延残喘而已。

新买了一瓶法国红葡萄的确味道和放了一个月的不一样,虽然一直封着盖子,但是葡萄酒的烈性去了一大半,看来《笑傲江湖》里面讨论葡萄酒的年份也不完全是夸张。

实际上战争的结果有时候是99%的运气加上1%的勇气与能力,这似乎有些耸人听闻,可是只要想想看从士兵冲锋陷阵来看你就是在有本事也只能祈求运气。但是话说回来了战争的胜利者大都是善于谋略的结果。这里说一个反例,《亮剑》里面伏击服部直臣率领的华北占地观摩团是做了戏剧化的处理,我看完后向了半天才明白前因后果。历史的巧合是与此同时阎锡山也派出了一批高级军官来八路军总部交流,李云龙为了给来观摩的国军将官露一手设计了一个小把戏,就是故意派一个班的小部队到一个小村庄向当地的维持会长要白面,其实这是一个简单的钓鱼把戏是为了诱出附近据点的鬼子来伏击,当然他是想打一个反伏击,当地据点的鬼子也不傻害怕其中有诈,就上报了日军第一军军部,日军的山本特种作战分队的指挥官敏锐地判断出了其中的端倪,在这么近的地区要玩这么一个钓鱼的把戏作秀的成分要大于实际的意义,从日军在阎锡山的内线报来的一批军官去八路军参观的情报来看这后有可能是为了做给这批观摩军官看的,那么能够接待这么一批高级军官的八路军机关不是八路军总部又是什么?于是山本又设计了一个将计就计,假装上当来咬鱼钩,实际却率领特战队千伏接近八路军总部。好大喜功的日军第一军军长又想加上戏剧效果让战地观摩团靠前观战,没想到李云龙的小把戏引起的日军调动又让八路军总部怀疑日军的企图命令他取消伏击行动,赶回去护卫总部,没想到李云龙这种而冷子偏不信邪又让自己的一个应改变伏击地点在另一个地方伏击潜伏一整天终于等到了战地观摩团的卡车,结果服部直臣亲身观摩了华北战争战死了。历史上是他切腹自尽,电视剧为了增加戏剧效果改为最后决斗而死。不管怎么说这倒是有八分真实地改编,山本特战队偷袭总部原本就是要作秀给关展团看的,如今没有了观众也无心恋战,因为偷袭改为强攻不符合精锐突击部队的作战原则,既然对方有了防备就该撤退了。《亮剑》里面李云龙的原形是王近山我google了一下看到了一些它的生平,比较有特点的就是他后来爱上了他老婆的小姨子,是个女大学生,并且为此丢了党籍军籍下放到农场当场长,这个事情非常符合他的外号“王疯子”,因为当时他原配老婆给毛泽东写信喊冤,他的部下纷纷劝他认错,但是他死活不肯直到老毛发话让刘少奇去处理一下也不低头。

看到了一篇评论说李云龙像土匪不像所谓革命宣传片里反映的高大全形象,是什么诋毁革命军队等等。我看了直想笑,这是典型的腐乳,想想看毛泽东在井冈山上就是山大王,当年的所谓革命武装能够生存就不错了还管得了那么许多?往往是那些迂腐不懂军事的政治委员严格把关严格执行纪律最后长征过草地的时候害的士兵饿死吃皮带,难道你就不敢抢粮食?只要给钱了就不算抢,对不对?没有钱咱就打张白条,难道你没有看到过老解放区的那些百姓攒下来的白条吗?你以为共产党的军队就不抢粮食吗?打白条不算抢,对吗?当年在东北发展东北民主联军的时候部队大都是伪军和土匪,难道这些人就不抢吗?只能说共产党的部队纪律比国民党的好一些,本质上军队的补给都来自当地农民,那么你怎么能够不去抢呢?那种相信从前电影里的高大全形象的认识不动脑筋,只要想想每天部队要吃掉的米粮有多少你就知道事实了。

不过我看过一个凤凰卫视拍的尼泊尔毛派武装的纪录片,其中的部队倒真的是吃糠咽菜,因为所有的米粮都是从总部分来的,勉强能吃饱。


十一月十日 今天天气很好吗?现在还不知道。

午夜之后的电影频道的一个主题就是sex&horror,这当然原本也是加拿大电影的一大特征。《graveyard alive:zombie nurse》的一个主题思想当然是医生和护士的奸情,当然作为医生护士这种所谓的职业杀手经常在业余的时候把病人的死尸当午餐吃掉,这当然是当护士成为zombie之后的事情,zombie的传染方式和vampire类似,这当然是比较搞笑的,医院里最后所有的医生护士都成为了食人魔。不过这一切都是从一个被送进疯人院的护士眼里看到的,所以你也知道到底谁疯了,这种风格我总觉得是法国人的特长,因为主题歌好像是法语。

十一月十一日 今天天气很好吗?还好。

今日无语。

十一月十二日 今天天气很好吗?还好。

看《亮剑》里面的丁伟在五十年代就能预见到中苏的战略冲突实在是不错!所谓国无外患常亡。

十一月十四日 今天天气很好吗? 阴天。

n89,n98,n109有问题,n104,n106,n117根本连不上,所以我用单个连接堵住后者,运行mpirun的时候除去前者。SVA可以给每个node设置state=drained这样系统不会再分配了,我想我的问题很可能是哪个account的问题,此外,sva_remote.sh死掉后哪个进程很可能无法轻易kill,要用kill -9 pid。重启系统用的是一个pdsh的脚本。在sva/sva.conf里面有设置,可以用nokvm去掉kvm降低resolution的毛病。

十一月十五日 今天天气很好吗? 下雨了。

n89和其他的有问题的nodes上有一个zombie我却无法kill他,alex说应该用SIGCHLD发给他的parent,可是成为zombie就是因为他早年丧父,我又怎么能够发给他的父亲呢?init成了他的继父,可是我发给1的时候却犯了权限的错误,然后我只好把0到63的signal都发了一遍给那个僵尸,没有任何错误但是僵尸就是不死,我想这是不是HP的hpremote制造的呢?因为我的后续连接总是遭遇问题,sva_wait_for_X总是在等待,真是奇怪。

和普通人谈并行渲染基本是浪费时间,因为明白并行运算的人本来就不多,并行渲染就更少了,nvidia的所谓的sli技术说到底大概可以算作sort-first的变形吧,但是这个方案有很大的问题就是load-balancing的问题,两个显卡分别负责奇数偶数扫描线也许要比另一种块分割来的好一些,但是并不能彻底解决load-balance。


十一月十七日 今天天气很好吗? 很好。

看《凤凰卫视》阮次山专访以色列的新任女外交部长丽芙尼,感觉相当的有气魄,应该是将来的总理吧。今天试验了一下,所谓uid就是一个integer,那么你怎么获得别人的uid呢?比如你要setuid,这个是单向的,就是高等级可以set成低等级,不过对于effective uid还是不太明白,看manpage大概的意思是posix和早期的setuid不一样只能seteuid,就是说non-previliage的user只能set effective uid,只有root之类的用户才能改变real uid,而且只有在很少的情况下才需要真正改变uid,大多数时候仅仅是运行一个程序需要临时改变一下effective uid,这样虽然可以运行但是遇到权限的问题还是要检查。总之我是似懂非懂,这些东西在学习os的时候都学过,让我说概念也大概明白,可是是否者的理解那就是两回事了,世界上最困难的事情是真正理解一些道理,如果你没有机会去时间的话很可能你一辈子都不会真的明白。我现在再想为什么我的那个zombie的父亲是root,可能的情况很简单,比如一个root的demeon在每个node运行,接到了ssh的请求login成功后就load了一个process然后再把那个process改称我的uid,这样仿佛我自己在远程创建了进程,可是我的这个进程的父亲并不会结束,照理说他应该wait我才对,不过更可能是root的demeon创建了我的process1 under my uid,然后process1有创建了process2,系统的demaon当然不会白痴肯定会wait process1,但是process1可能有缺陷没有wait process2,结果process1死得早,丢下了process2,init在process1死得时候把它的遗孤转到了demaon名下,当然托孤不是demaon原来应该做的,自然不会去wait了。

十一月二十日 今天天气很好吗? 昨天还是阳光灿烂醒来一看大地白茫茫一片。

冬天的脚步从来没有这样温柔过,仿佛一个冷酷无情的杀手突然蒙上了神秘的面纱让你难以捉摸他下一个狙击的对象,在他无声地无影无踪的前行中突然在大地洒上了一层白雪,今年冬天的第一场雪就是这样来的,没有疾风冷雨的前奏,也没有雨雪交加的缠绵,更没有转向鹅毛大雪的热烈,一场悄无声息的淡淡的雪悄悄地来了,挥挥手又默默地走了。并行计算里最困难的是机器之间的有效的通讯,所谓有效很难定义,首先是尽量避免通讯,但实际上并行计算原本就是因为需要通讯才应运而生的,这本来就是一个矛盾。同样地,人和人之间最困难的也莫过于通讯,将近两年中我写的memo和计划大概有好几兆,这还不算电子邮件,可是G大概从来没有花超过一分钟去浏览,我始终以为我是世界上少有的惫懒之人毫无耐心之人,但是总体看来这位老兄绝对超过我很多倍,不愧是superior excuse-maker,不过我几乎不想去抱怨因为在concordia这样的三流大学我经历过笔者更糟糕的,我想这大概是老天爷对我当初惫懒的惩罚,总而言之I deserve it。话虽然是这么说,但是假如一个人要花超过半年或者一年以上也不能理解他所从事的研究活动中最基本的问题,那根本谈不上解决了,一个如此没有耐心的人而又偏偏很天真地以为很多东西很容易这就不能不让人思索其中的道理了。一个人认为一件事很容易大概屋外乎有两种情况,首先,这个人确实有能力因为在大多数人眼中很困难的事在他看来轻而易举,其次,这个人是一个白痴因为它对于问题没有最起码的了解如果他还不是一个真正的白痴的话。这样的人其实在我们身边比比皆是,因为每个人都可以在别人眼里看作白痴,有趣的是在白痴眼里几乎所有人都是白痴。

我觉得我基本上是一个悲观主义者,对于那个binary-swap得近乎完美的constant的并行时间复杂度始终表示审慎的悲观态度,很多理论上很完美的算法在实时并行计算中被众多噪音所掩盖最终并不一定能够表现出应有的预期的结果,因为系统过于复杂了,就好像天气预报中影响天气的因子太多了你无法用一个单一简单的公式直接得出结果一样,但这并不等于理论的算法就没有实际意义,只是你需要正确的评价,分析,我觉得在这一点上很难达成一致,因为M说的很明白,所谓的学术圈时被一些少数凶残无比的mafia所把持着,他们对于所有外来的企图进入那个圈子的请求都作出最严厉的最挑剔的并且是降低到少到不能再少的关注,如果你的理论或者表达中有一丝一毫的漏洞或者模糊那么你很有可能就被枪毙了,所以,他们不愿意冒险因为思想是很容易被人偷窃的,当我们同时又谈到思想的交流是多么困难的时候。也许窃贼更容易接受别人的新想法因为他们是专业的搜寻者。几乎两年了,G的唯一的一个想法就是大概称作interlace的东西,我当时那种嗤之以鼻的态度一定被M感到不太高兴,因为这是他唯一首肯G的一件事,当然称作interlace是错的,真正的interlace是Nvidia的双显卡的sli之类的技术,G的想法我大概一年以前头脑发昏提出来的时候就被他们笑话了一遍,现在又提出来类似的确实出乎我的想象所以我当时才抑制不住地笑,这样非常的不礼貌,我想人们对于时间概念的理解困难导致了对于并行同步异步等等概念的理解困难,基本上pipeline的概念是号称学过计算机的人都不敢说不知道的概念,可是那伟人胸从来就不真正理解pipeline。


十一月二十三日 今天天气很好吗? 昨天下的是雪和雨的混合物。

冬天的第二场雪来得很匆忙走的也急促,什么叫做屋漏偏逢连阴雨,屋子真的漏了,害得我用储藏盒接了一晚上的雪水,真是一种传奇的经历,晚上电影台在放我的我的一个favourite的007《The Living Daylight》,所有的007里面提摩西达尔顿是我喜欢的一个,虽然没有皮尔斯南来的年轻英俊但是却却刚毅果敢,当然更主要的是当时大学时代看这部片子喜欢上了女主角marria Da'bao,当时隔壁班级有一个女生气质有些相似,结果爱屋及乌就暗恋上了,当然是完全的单相思,嗬嗬,恐怕现在没有说出来永远没有机会说了。总的来说,当时苏联入侵阿富汗时遭到全世界的谴责,邦德帮助阿富汗反苏联盟让人觉得大英帝国的间谍起码作了些有益的工作。早晨出门去实验室的路上在想我现在写这些blog为什么,从前有一段时间是由一些showoff的意思,现在更多的是一种习惯,基本上生活的内容没有被记录下来仿佛生命就是在无意义的空转,或者更糟糕的事情是你觉得你的生命被缩短了,因为空白的人生和被缩减的生命并没有什么区别。所以,延续生命的一种手段就是记录下来你的人生,不为别人,只为了我自己。

MPIHP_Trace_on()这个名字我记错了害得我找了很久,我发现了zombie实际上是xclient的化身,我决定以后先关闭RGS client的连接,然后再scancel,基本上我这两天都在做一些地基重复的工作。


十一月二十四日 今天天气很好吗? 昨天下的是雪和雨的混合物。

终于明白了一个以前困惑我的问题,在使用mmap的时候,如果超过文件的size会爆出来一个bus-error我以前还以为是系统的文件io超过什么限制了哪,当然后来我也意识到应该是mmap的问题,只不过今天看到manpage上这么说的才确定无疑了,对于windows的setfilepointer来说实在是太别扭了,因为我当初考虑太多的兼容性,对于offset仿照lseek定义成为signed,可是现在才意识到如果windows的low,high都是signed的话,我对于2g-4g的文件偏移就没办法了,哈哈真是奇怪的想法。我的错误几乎全部是unsigned的integer和32,64整数的问题,在文件大小没有超过2g的时候,一般的小程序都无所谓,但是2g是一个门槛,很多问题都出在随手定义的整数类型。 还有一个搞笑的就是我想用try-catch去拦截memcpy的错误,这个是os的底层错误,直接用signal返回,只能用signal来handle,try-catch撒了一张网什么也没有扑到也返回了一个错。 总之,这个expand的bug耗费了我整整一个上午的时间,连午饭都没吃,因为大文件的错误是在很难定位,trace也很难基本上我也不用,幸好我觉得我的算法没有问题,否则还不知道怎么找,最后的一个定位还是比较幸运的,就是在文件刚刚超过2g的时候的错误,哈哈。之前出了很多debug自己犯的错误,真是错上加错。

十一月二十五日 今天天气很好吗? 天看上去不错。

Uma Thurman的<prime〉实在是比较的难以形容,一个37岁刚刚离婚的事业型白领女性“意外地”和一个23岁的学艺术的小男孩约会,Uma只能给她母亲说她和27岁的男孩子约会,小男孩出身犹太家庭非常传统,第一首先是父母要她和犹太女孩结婚,更不要提和一个超过14岁的离婚女人了,所以他也只能说女孩是27岁,这真正是不约而同,双方都很自然地选取了一个magic number, 27这仿佛是一个分水岭,真算是心灵相通了。在中国人们选取的数字式82和28。

昨天晚上看电视的《planet of apes》看到两三点,还是第一次看得那样感慨,人类的进化是一种偶然的随机事件还是某种超越自然的法则的约束的结果,这听上去缺乏科学精神,但是我想很多人并不能否认他们对于进化论的疑虑。我们的堂兄猿猴无论在身体力量与敏捷上都超越当时的类人猿很多,但是结果猿猴始终没有进化成智能生物的事实说明了什么?难道说明了一个简单的事实,someone never learns a lesson。

<jarhead>这部战争片的震撼力可能不亚于<deerhunter>(猎鹿人)<modern revelation>(现代启示录),这两部片子我基本上都没有看过全部,主要这类题材不适合那个二十岁在大学读书的我, 大概一个人只有到一定年龄才会开始明白生命的价值与意义。所谓jarhead大概是那些在美军海军陆战队里当过兵的人自己称呼自己的头衔,你第一天到营房报道如果你看到你的队友正在欺负新兵,然后把你捆绑起来用烙铁给你烫上marine的印记,在伊拉克海湾战争期间你天天在沙漠训练,在烈日下穿着防化服打橄榄球,我想你流的汗绝对超过橄榄球的重量,掌管用喝水来作为一种惩罚,想想看这是合法的,因为你每天必须和定量的水谁敢说这不是对的,CNN记者来采访,士兵被事先警告什么可以说什么不可以说,这是全世界军队都会做的,但是你被逼签生死状就不同了,因为萨达姆释放生化武器可能让你终生残废,所以你要吃药,所以这一切会逼得你发疯,这些marine在CNN女记者采访的时候会所谓的field-fuck,哈哈女记者赶紧背长官送走,然后士兵就通宵地在大雨中把沙袋堆成金字塔在拆掉再堆再拆。。。当然基本上后方的妻子和女朋友出墙变心的比比皆是,有一次士兵们看新到的A片发现床上的女人是一个人的妻子,这当然是一种奇特的经历。海湾战争基本上没有多少地面战争,一个经过了长期艰苦训练的狙击手被剥夺了唯一一次开枪的机会就发疯了,七十二小时的战争接着是遮天蔽日的油田的大火,如果全世界的民众多想一想萨达姆的疯狂也就会对美国人在伊拉克的战争又一个更加可观的评价。如同几十年前几十万美国青年投入到东南业的热带雨林进行丛林作战一样,美国人在全世界实现着他们认为最正确的主义与价值,毫无疑问地这触及到了当地统治者的统治利益,于是美国人的战争被贴上了侵略殖民霸权的标签,可是美国人在哪里建立了殖民地?有这样把人民从独裁暴政下解放出来的征服者吗?是解放还是征服?


十一月二十六日 今天天气很好吗? 下雪了

《Borat:culture learning》你从来就不会看到这么白吃的人和事,这部喜剧对哈萨克斯坦进行了惨无人道的讽刺,这个白吃国家没有抽水马桶,电梯,汽车用驴来拉,满街都是强奸犯和弱智人群,犹太人被丑化成了恐怖分子,这个国家突然异想天开派了两个人来到美国学习文化,洙九点没见过电梯以为到了房间,把抽水马桶当作洗脸盆,不会用电视遥控器,他们国家的电视大概没有女人所以看了一部电影就爱上女主角要去加利福尼亚和女主角结婚,这个国家的男人互相亲吻但是却不亲吻女人,不知道怎样使用厕所于是在餐桌上去了一趟厕所就把大便包在袋子里回来问女主人要放在哪里,看到美国的同性恋游行很新奇就把两个对他很友善的人领回旅馆,如同他们国家一样男人一起上厕所互相看对方的隐私处,费尽千辛万苦从纽约来到了洛杉矶找到了准备签名售书的女主角于是就用哈萨克斯坦的传统方式要和她结婚,什么叫做传统,就是抢新娘了,用一个袋子把女人一装扛走。啊,对了,忘记说了这位老兄来纽约的时候行李没有什么东西大概就是一条内裤,所以到了旅馆就只好光屁股拿着内裤到河边洗内裤,在马路边大小便,行李袋子里还有他们家里养的一只公鸡,大概是怕出国的时候被人偷走或者是把它当作最好的朋友形影不离,或者平常靠这只母鸡下蛋吃?见面就给人吃家酿的奶酪,当然不忘了告诉对方这是他老婆的奶做的。。。简直酷憋了。这个国家的国歌就更加神奇了,我简直都要笑破肚皮了。

十一月二十七日 今天天气很好吗? 下雪了

偶然看到牛津的美女出的编程题,哈哈,还是有长进的,检验是否一个数为2的幂我始终就是差了一点,另一个找单个数的我觉得我的方法还是对的,不过还想听听有没有更好的。怎样寻找链表中的环

十一月二十八日 今天天气很好吗? 干冷干冷的

大概我的感觉总是对的,《007》在皮尔斯南之后差不多就算是结束了,《royale house》可以说是一种狗尾续貂,完全不对版的拙劣,首先,演员形象就没有,气质根本不想一个受过高等教育的贵族,倒好像是一个干苦力的出身,所以说那句“shake,not stirred”根本就是个笑话,看上去个头还没有女主角高,刚出道的脸就比辛康纳里还苍老,康纳利其实是老而弥坚更加得有城府并不让人觉得老态龙钟,可是这位新007简直是一无是处,随便去健身房都能找到这样一身肌肉和必要找他?首先,一个间谍从来不应该在女人身上动真情,原本007并不一定是playboy但是他明白对待女人的态度应该是医生对待病人,要有一种专业精神,怎么能够这样容易陷入圈套?而且,007除了为朋友要两肋插刀以辞职为手段公报私仇从来不会为了追求所谓个人生活而辞职,这实在不想一个以间谍为职业的专业人士的做派,女主角长得很漂亮也有气质是不假,可是不能那样单纯的傻瓜以为要对强盗守约,或者为了拯救一个男朋友而去为另一个男朋友献出生命,实在是太女人化的无逻辑,显得英国MI6都是一帮白痴。总而言之,寿终正寝吧,double O seven。

十一月三十日 今天天气很好吗? 又下雪了

大概当年日本敢和美国开战的一个重要原因是对美利坚合众国的不了解,山本五十六等少数海军派虽然比陆军派了解美国明白日本绝对不可能取胜,但是因为是少数派无法改变日本军部的决定,作为军人只能执行政治的决策而不能干预决策,也正因为如此当山本意识到美日对抗不可避免的时候才一再强调必须采用偷袭以便确定日本海空军暂时的优势,在美国这个巨人觉醒之前争取和谈的条件,所谓和平是依靠战争来实现的。我并不是为日本的战争罪犯翻案,仅仅是从战略角度来分析一下,现在很糟糕的就是某些PLA的实权人物也许在某一天也许也会犯和日本军部相似的错误,美军的训练可以是全球最全面最实用的,因为美军随时随地都在作战,50年代朝鲜战争,60-70年代越战,80年代的海湾战争,90年代也许只有小打但从来没有停止过,世界上最强大的军队不一定是装备最强的,但一定是长年累月在实战中学习的军队。military-channel里面美国军事学院的学生训练让人非常的震惊,军队的作战实力很大程度在于下级军官的素质,抛开武器不谈很重要的是连排级指挥官的心理素质,因为士兵的战斗能力在于第一线指挥官的督导,我最感兴趣的不是他们在暑假期间操作M1A1坦克,或者在导弹驱逐舰上当实习指挥,或者是各类部战术训练等等,最吸引人的是心理素质的训练,让学员从缆索滑下,或者走那种会摇晃的十米高的独木桥,据说这个是最让人害怕的高度,团队训练比如一个小组要依靠一些简单的工具把一个重物抬上山,这里面有一些圈套,因为有些看似可行的方法并不一定有用,如果在无效的争论中浪费时间很可能会分裂一个团队,又比如大家一起抬弹药箱上山,如果有的人体力不支弹药箱落地一起爆炸剩下的人还要把伤员抬上山,这是一个不折不扣地集体行动,你不但要自己完成任务还要保证你的组员尽量一起完成,否则他们反倒成为你的负担,同样抬那个几百公斤的重物实在是要求协调一致,团队精神和彼此的心人非常重要。这些心理素质非常的宝贵,并非单单的莽撞与不怕死就够当连长的,这是全世界任何军队都必须有的要素,美军强就强在把普通人训练出这些素质。

十二月二日 今天天气很好吗?又下雪了

古德里安的装甲集团的组成部分包括两到三个重型坦克师,至少一个轻型坦克师(侦查),一个轰炸机师,一个战斗机师,一个机械化步兵师,一到两个炮兵师,一个防空兵师

大概地看了一下志愿军在朝鲜的伤亡情况,一次战役东线九兵团和陆战一师的战斗阵亡为1.5万,另外有将近一万人冻死,冻伤大约四万,美军阵亡失踪大约2500人。四次战役邸平里战斗阵亡至少五千人,铁原战役63军进幸存1500人,估计伤亡不下两万。上甘岭战役15军伤亡两万多人。这还是比较主要的战役,所以总共朝鲜战争伤亡百万是一个不争的事实,大概阵亡人数应该是38万左右。美军全部阵亡加上失踪病死事故死亡等等为五万多一点,在纽约的一个广场上有一个纪念碑上面都刻着名字。二战,朝鲜战争,甚至越战都不过是比赛钢铁和弹药,美军很强也不过是和别国军队由线性的差别,也就是一个比较大的常数,海湾战争代表美军和其他国家的军队有了指数级的差别,C3I的数字化让传统的战术根本没有腾挪的地方,原本你还可以依靠军事部署来欺骗,现在美国人看你是明棋,你却是在下暗棋,哪里还有取胜的机会?美国共和党候选人辩论会上反复说美军并没有输掉越战,的确美军没有输过一个战役,但是最后却承认输了,因为输在不能完胜,海湾战争就代表了一种美国人认定的赢得战争的标准,完胜,胜利并且没有代价。


十二月三日 今天天气很好吗?又下雪了 ,是暴风雪

谁说全球气候在变暖?下了半尺多厚的雪,仿佛这才是真正的蒙特利尔,一个冰天雪地的世界,之前那都是假象。头发长了,见识短了,原来我不能使用bsub之类是我的.cshrc文件有问题,改名之后又系统自动创建我就可以使用vis和lsf了,可是我却找不到了.cshrc,我到底用的是什么shell?Joel说是大家共享同一个.cshrc可是在哪里呢?用我自己的myFind找一下吧。setenv HOST `hostname`那个标点符号是波浪号~下面的那个,(有时候我觉得我太土了,被任何一个稍懂linux的人都要笑破肚皮了,可是没有办法,linux的shell实在是太烦人了任何一个简单的不能简单的东西如果窗户纸没捅破就是没有一点办法。)学了一点点地vi感觉比nano强大多了,超级白吃的comment,不过我的要求很简单,nano大概都够用了。 在.cshrc文件里设定路径set path=( path1 path2 path3 ...)用空格隔开。我的.cshrc路径必须包含hp的那些东西。

《武林外传》经典台词:本判官有些口渴想上趟厕所。我确定一定以及肯定。

bsub -n 3 -ext "SLURM[nodes=3;nodelist=n[39-41]]" -I mpirun -srun ./hello.exe


十二月四日 今天天气很好吗?又下雪了?废话。

我简直要发疯了,到底是我的理解力有问题还是怎样?IEEE754说的是exponent-127就是mantisa,可是费了快一个上午我才明白exponent必须是126(7E)比如,一个float number 1是0x3F7FFFFF,所以我的理解就是一个浮点数载0至1之间应该是exponent=0,fraction部分为23bit的整数(实际上是24位,因为任何一个二进制书都是从1开始的,那么第一个1根本不用表示了,所以省掉了一位,用23位表达24位。)哈哈到这里我才明白我的错误,exponent应该是-1,因为2^0=1,所以应该是2^-1=0所以,126-127=-1就是exponent的值,这里我始终被困扰的事情就是我对于little endian,big endian只是一知半解,在高级语言如c/c++这一层根本看不见,只有用ultra-editor之类的才能看到,因为编译器已经把这层的区别掩盖了,真是ignorance is power,知识越多越反动,如果我根本没有这方面的一点点概念反而不会遐想,所以,半桶水不如没有水,要么全知道,要么牙根不知道,最糟糕的就是似懂非懂。所以,opengl里面的depthvalue真正只会用到3bytes,这就是0-1的好处。

以上是不全对的,exponent如果等于0就相当于2^(-127),所以如果要1就是exponent=127,fraction=0。当exponent=126的时候,相当于2^(-1)=0.5,这个地方是我不明白的地方,因为fraction=0,这个数就是0.5?为什么?我猜想应该是exponent+fraction,而不是相乘。我感到疑惑的是这种组合有可能多种相同的数字,比如0。(???)

闪击战的精义在于:1)已达成战役目标为座高优先,不惜付出重大牺牲。2)坦克为闪击战种装甲部队的灵魂但是绝对不可以单独行动,必须和诸兵种配合,比如炮兵,机械化步兵,防空兵,反坦克兵,侦察兵,空军等等,这就要求机动力不如坦克的部队如炮兵步兵跟上坦克的行进速度。3)必须高度重视空中支援与防空,如果没有制空权至少也要有足够的防空力量,同时应该尽量利用战斗机的空中侦察能力,与地面的侦查坦克共同做好侦查。情报是制胜的关键。4)进攻时尤其是进攻有步兵设防的城市必须要有炮兵和航空兵的火力支援,绝对不应该用坦克强攻坚固防守的步兵。5)对于伞兵的运用有时候可以达到扭转乾坤的作用,伞兵应该作为一个杀手锏留在最关键的时刻和关键的地点,比如在装甲部队进攻刀锋顿挫的时刻。6)步兵在近战时候有时候可以成为坦克杀手,防御的时候依靠战壕的帮助可以到达固守战略要点的目的。7)反坦克部队最大的优势在于隐蔽埋伏伏击高速前进的地方坦克部队,二战中突击炮在很大程度上是德军的无奈之举,比如当坦克底盘和坦克炮的产量不配套的时候为了前线救急只好拼凑出来,把自行火炮当作坦克来进攻中使用是对资源的一种巨大的浪费,往往会被隐蔽的苏军反坦克武器击毁。8)火炮在防御中的火力支援和进攻同样重要,如果有两支炮兵分别部署在前后纵深在配合一支防空兵几乎可以达成一个完美的防御体系,两支炮兵互相支援,火炮同时支援其他的防御部队,防空兵防止敌军航空兵攻击纵深的炮兵。


十二月四日 今天天气很好吗?又下雪了?雪停了。

bsub -g queueName ...此外,lshosts,如果bstop不能消除job,可以用bkill来删除。

/bin/tcsh myscript.bat

mpirun -prot -T ...gives you protocol and running time.

setenv SLURM_JOBID `squeue -h -n $HOSTNAME -o %i`

证实了一件事情,mr.bean在《never say never》里面出演那个滑稽的英国外交官。

在我的home目录里的.cshrc里面加上/etc/profile.d就是为什么我不能再tcsh里面设定module load mpi的原因,那个modules.sh应该是负责module文件的,#!/bin/tcsh会重新开一个session所以一定要在我自己的profile文件里加上目录。mpirun的HPMPI版本在/opt/hpmpi/bin目录下,但是还是应该把这个目录加到path里,不过我还是不知道为什么setenv PATH $PATH:/mypath为什么不行。如果是processes在同一个node上,protocol是SHM应该是sharememory.这个就是我当初问HP,结果那些人胡说什么HPMPI没有做任何的优化,这些technique support的话几乎不能相信。那个印度家伙一直强调zombie是由于gnome造成的,一定要我用KDE,我对此还是半信半疑的,现在也没有下文了。今天写了一个超级无敌的脚本生成程序,结果我所有的profiling都是自动进行了,我终于可以早点回家吃饭了。


十二月七日 今天天气很好吗?又下雪了?雪停了。

几十年前的今天日本联合舰队偷袭珍珠港,太平洋战争爆发,所谓统一台湾的三个条件之一是台湾内部发生重大突发事件,这是否包括戒严?狼来了的喊话只有郎没有来的时候才有用,狼真的来了喊话有什么用?The price of freedom is eternal vigilance.--Tomas Jefferson

A bad peace is even worse than war.--Tacitus第一句是一个游戏的slogan,第二居室我从quotedb.com抄来的,现在发现互联网的好处,什么都能够找得到。这一句也很有意思,There are two things which a democratic people will always find very difficult--to begin a war and to end it.这一句仿佛是说给美国人听的,二次大战美国人民并不愿参战,是被日本拖入战争的,但是一旦开战美国全国上下没有一个在动摇的,就是按照罗斯福的说法要获得和平不仅仅要彻底打败日本还要包括德国。伊拉克战争似乎在应验很难结束这一条,什么时候才能有和平?


十二月八日 今天天气很好吗?又下雪了?雪停了 ,天晴了。

我觉得PLA非常的不重视步兵战车,这也许是一支军队到了一定的装备程度时候才会被列上议事日程,基本上机械化之后才有全面的装甲化,美军在伊拉克的遭遇就说明了步兵只有机动在现在战争中的上网是任何军队和政府都不能接受的,即便入中国这样的人口大国也不行。一直不洗衣服总不能总买新的吧?什么时候洗衣服呢?

一枚硬币总有两面,一起事件总有两种理解,问题在于你自己是否有正确的判断,或者说你的判断基于什么可以检验和证实的基础,这就是人类的正确认识,在古代这种能力仅仅需要少数统治者掌握,今天大多数社会成员都应该具备才能配的上人这个称号。很多人相信只为了相信,很多人相信只为了不相信,还有很多人不相信只因为相信,还有很多人不相信只因为不相信。(为了凑字数,一下删除一百二十万字。。。)military channel的说法是1996年共军在台湾是射导弹的时候美军拍了两艘航母示威,最后共军知难而退主动降低了导弹试射的等级偃旗息鼓。这和网上很多粪青的意淫说法有很大出入,国内盛传的谣言是美国航母因为共军的潜艇的威胁而主动撤退,不过我更加倾向于美军的说法,因为实力是最好的宣言,敢于展示自己的人是因为有自信的人,一个国家敢于向国民显示自己的军事技术的是因为他们相信即便敌人知道了也没办法,根本无法对抗知道了又怎样。只有弱国才需要保密来稍稍地改善自己不利的地位。60,70年代仿佛西方领导人很重视中共领导人的讲话一样,其实不是因为中国那个时候强大,而是因为如古代君王一样的高的神秘,看看金正日就知道了整天穷兵黩武国立已经衰微到了几点,可是世界反而很怕这个比南韩国力小很多的北韩,为什么?只不过神秘保密制造出了不确定,你根本不能何疯子或者白吃决斗,因为他们不可预测,打赢了是应当的,打输了实在不服气(不是真的输,赢得不彻底就算数。)

今天中国成了石油消费大国,看到Militarychannel回忆海湾战争,我的问题时如果是今天伊拉克侵略了科威特,中国会不会派部队参加多国部队?应该回吧。

美国人参加一次大战可能更多的是心理上的意义,参战的时机正是欧洲大陆交战的焦灼时刻,德国两线作战筋疲力尽,英法也是强弩之末,美国在天平的一侧是literally last straw。不过年轻的marine还停留在独立战争时候的队列前进,第一次参加进攻总共费了六次损失一万人才攻占了一片小树林,当然这对于当时的德军心理上是致命的,因为德军认识到他们赢不了战争。


十二月九日 今天天气很好吗?又下雪了?雪停了 ,天晴了。

<Cleopatra〉居然有这么多的故事,可惜的是这样一部史诗巨作居然被活生生地从六个小时剪辑到了三个小时,有一点大家是认同的,那就是这是一部谁也不会重拍的史诗。这个仿佛是那句老话,男人征服世界,女人靠征服男人来统治世界,不过连神勇智谋如凯撒也逃不了一个悲剧结局,正应证了另一句老话,红彦祸水。起初和凯撒的利益交换是王位因为当时她和她的兄弟正在争夺埃及的统治权,为了巩固自己的王位她需要凯撒整个政治纽带,凯撒需要的是一个征战一生的政治继承人,他自己的儿子。然后她鼓动凯撒谋取罗马皇帝的地位以便建立一个大帝国而自己成为实际的统治者,当凯撒被谋杀之后,她的政治盟友就是被他的眉毛所迷惑的安色尼,这是一个不堪大用的一勇之夫,在海战失利之后失去了利用价值的原本应该被抛弃,但是,Cleopatra毕竟是个女流,完全不懂得战争,却被女人的野心驱使,他会操弄男人但是并不懂得战士,作为战士的antony离开了军队就是nothing,没有死在战场上他就成了行尸走肉再也不能号令军队了。这就是一个追求权利与生存的女人的故事,埃及艳后。

我看的这个版本是一开始的那个四小时零三分的长版本,看完之后我突然想起来大学的时候学新概念的时候好像就学过这个伊丽莎白泰勒,好像嫁过六七个男人吧,让人想起罗马人对他的称呼,quote, egyptian whore,end quote.


十二月十一日 今天天气很好吗?天晴了。

1967年的《casino royale》要比现在这一个好看多了,从头到尾都是exotic的美女,实际上这个搞笑版的007还没有现在这个来的搞笑,我的意思是现在这个007实在是太可笑了。这个1967年版的007是我看到的最好的间谍片,very amusing.

一个小小的改进效果就是非常的显著,现在移动视点的时候画面不再会因为file-mapping新的节点而jerky,因为我在初始化之后每次都优先把原有的节点分配给原来的render。


十二月十二日 今天天气很好吗? 阳光灿烂。

很经典的问题是这样的,问:Do you speak English? 答:No.

忽然间仿佛翻到了书的末尾略一凝思发现这本书的章节竟然没有一点印象,这就是生活。我平常不做homework的后果就是犯了严重的路线错误,大方向错了,这个教训太大了。M曾经对我说过,If you worry, then I won't worry.现实是I should have worried more than he could.所有的一切都是基于一些错误的假说的基础上,所以,所有的结论都是错误的,有一些基本的概念和认识的缺乏导致了大的方向的错误,是否pixel-merge是系统的瓶颈?在pc-cluster上的确是,可是在peer2peer的cluster上是可以做到近似常数的,在另一方面我们总是认为加了光影效果的rendering是很慢的,但是前提是复杂的光影效果,flat-shading,smooth-shading说到底都是很快的。


十二月十四日 今天天气很好吗? 有下雪了。

明天要去旅行了,订票的过程十分的仓促,就像我一生中很多的重大决定一样,匆匆忙忙漫不经心,等到除了结果才发现我想要去14天却订成了11天,唉,就这样吧,就这样吧。第一件事情是把我几个月的衣服洗一下,实在是没有衣服穿了。然后。。。打了个电话确定了我的免费保险确实存在。

亚历山大的战术非常的有效,他的长矛兵几乎所向披靡,这是他的砧板,他的骑兵绕到波斯步兵的侧后冲击,这就是他的铁锤。


十二月十六日 今天天气很好吗?蒙特利尔是否还在下雪?古巴今天下雨了。 (第一天)

凌晨2:30到达古巴,四点钟我还在看CNN关于穆斯林的新闻综述,这是一个很难解的问题,人和人的像法师这样的不同你实在很难理解那些穆斯林极端主义分子的想法,同样回到我很久以前的感慨,子非鱼焉知鱼之乐?这同样的话也可以理解为子非鱼焉知鱼之哀?

《windows核心编程》实在是一本武林秘籍,任何一个号称中级程序员的人如果没有明白熟悉其中80%的issue那就是吹牛了,我觉得我大概只接触过50%到60%的议题,真正感到没有问题的大概只有30%左右,很多都是一鳞半爪知之不详,可惜我看得是中文版总要打个折扣。VC6里面可以设一个@err,hrz这样就省的我每次都去查错误代码,实在是很方便一定要用呀。以前总是听说win2k使用unicode编码的但是这意味着什么我并不明白,现在才意识到其中的API的A版本和W版本并不等同,实际上只有W版本,A版本不过是把ansi参数转为wchar的参数再去call那个W版本,这当然是慢了。而且我还是第一次意识到字串处理的library除了你用CRT的那个还有操作系统和信用的另一套,这当然是一个我一直忽略的问题,是否所有的客户电脑都一定有CRT的dll,我问过W的意见,他总是坚定不移的肯定,这让我心底里怀疑,不过如果用kernel的那一套就根本不用操心这个细小的问题了,当然我还没有去试验到底需要那个头文件,那个lib。对于handle我想任何在windows上编程的人都不会陌生,但是实质意义是什么我想不会人人都知道,至少我不甚了了,以前也仅仅是靠linux的file-descriptor来理解,就是系统创建的数据结构的array的index,反正是个不透明的东西让你看得见摸不着而且系统怎么扩展都不会影响你,但是window应该是有更加多的内涵,因为所有的系统对象都可以有一个handle,这当然好象linux所有的东西都是文件一样的道理,但是访问权限结合起来window和linux的差别就比较大了,我现在能够理解的就是系统对象的意真实地只得在映射表里面另一栏是一个flag里面定义了访问权限可否继承等(不准确),实际上真正有使用价值的是windows里面父子进程的权限共享的模式,linux经过fork自然就clone了所有的资源句柄,但是windows只有exec没办法这样,而exec虽然有父子关系但却没有父子进程的实质管理意义这一点比linux差多了,当然windows也不会有linux的zombie的问题,有利有弊吧。但问题是怎样传递句柄?命令行?环境变量?消息?消息当然是万能的而且没有时刻的限制,不象另外两样有通知的问题,比如只能在开始的时候做,如果子进程开始运行了你就难办了。再接着看吧,看有没有类似IPC的进程间通讯工具。

看美国总统竞选我总有很多感受,比如最简单一个党派竞选人的提名机制问题,和台湾今天的模式比较一下你就看出一些问题了,比如民主党有一大堆的竞选人怎么决定呢?台湾的民进党要什么党主席协调等等这些稀奇古怪的黑盒子办法,美国民主党怎样做呢?民调是不足信的比如台湾连电视的收视率的民调都是作弊的,美国我想肯定也经历过类似的困扰,最简单有效的办法就是让选民掏钱出来,什么口头表示都不如让普通选民掏钱包出来支持他们的候选人,所以希拉里,奥巴马才要拼命的筹款,这才是铁杆的选票,用钱去买票?在台湾是这么做的,但是前提是钱从哪里出?小国可以向美国这样的大国谁买的起呀?总而言之所有的美好多东西都要有实质有效的制度来支撑否则都是空谈,很多中国历史上的改革都是因为缺乏一些有效的具体办法而失败的,所谓有效的一个标准就是操作性,另一个就是钱的支持。美国竞选是很花钱的工作,钱从哪里出是个大问题,现在美国总统竞选越来越像一个风险投资了,谁来承担竞选失败的后果?换言之,谁来买单?消费者,就是选民,这才是良性体制。

如果所有的问题可以描述给计算机,那么问题最终就是一个计算问题,计算问题的最终解决方案就是并行计算。所以不管怎么说我都是得益非浅的。

早晨跑步,吃完早饭看看书看看电视睡一觉,在起来游泳在沙滩跑步,回来幸福地躺在床上听海风,这就是度假的生活。

大师举了一个例子是关于多线程执行dll的问题,这个领域可以说是我的空白,我所能理解的就是DllMain这个入口函数是一个特殊的东西,如果用createThread来创建线程如果县城用到什么dll,那么createThread应该会创建一个mutex,(或者这个东西原本就是进程创建的)目的是保证dllmain的执行是synchronized,因为在DllMain里面有很多初始化的东西,(还有可能是嵌套的比如dll用到其他的dll)总之这个应该和java的那个synchronized很像,我原来有写过一个非常简单的例子说明这种死锁问题,就是在这种synchronized的function中不能去做同步的等待。大师的例子是在dllmain里面创建线程并等待它运行结束,结果创建线程的线呈霸占了dllmain创建的线程当然连初始化都不幸更别说结束了。原理并不复杂,而且是大师的现身说法更加得令人印象深刻,不过呢,我花了一小会时间去体会最后还是要用自己的方式来理解,我想有一个原因是因为中文译文的关系,总觉得隔了一层很别扭。(这是借口,我现在的英文远没有到中文的程度,但是因为所有的概念都是从英文学来的看中文翻译的总有些吃不准,比如什么叫做“作业”?也许英文的term我也没有接触过吧?win2k的很多东西还是比较陌生的。

在海滩上散步实在是一种享受,相比之下厦门的海滩简直就是垃圾堆。加勒比海真是海上的明珠啊。

CNN有很多很出色的新闻报道,今天晚上的新闻报道是一个在阿富汗的记者报道阿富汗妇女的生活在塔利班被美军打垮前后的变化,之所以CNN能被大多数政权接受比如连古巴都允许就是因为它的客观真实,说句良心话,伊斯兰的教义实际上就是让占人口一半的妇女三是劳动技能这样可以解决一部分就业问题,当然也可以建立一种稳定的家庭因为妇女离开丈夫根本无法生存,所以从这一点来看很多国家的男人也许都向往这种宗教制度,尤其是一夫四妻制。节目中很多阿富汗妇女无法生存只好自焚,有时被婆婆虐待,有的是七岁就被卖做童养媳。在这之前还有一个阿富汗农民种植鸦片的报道,当地农民也是走投无路只有毒贩子和塔利班能够帮助他们,贷款种鸦片。另一个在当地成功的女性,一个即便在塔利班统治时代秘密组织妇女研究文学,进而成为一个popular的女诗人被他的极度的丈夫谋杀了,原因看起来仅仅是因为当地的男权社会让他丈夫感到无法做人。几乎伊斯兰极端主义大都是在最贫穷落后的地区兴旺的,巴勒斯坦的女性人肉炸弹很多也是因为生活所迫,求生不能求死还可以让家人获得所谓的荣誉和一笔安家费,那么为什么不去做呢?我觉得我对于伊斯兰这种宗教的感觉越来越接近基督教国家的主流了,事实上宗教的冲突是这个世纪的最重要的议题之一了。阿富汗的老师还要冒生命危险如果他们教女学生的话,即便是受过教育的阿富汗青年也不能把他们的妻子让他们的朋友看到,连照片都不行,这的确是防止通奸的最好的办法,哈哈。。。伊斯兰教的通俗说法就是男人家里如果有四个老婆肯定不可能有什么精力去通奸嫖妓了,这也不能说完全没有道理。不管怎么说阿富汗还是有改善的女孩子至少有法律上上学受教育的权利了,这一切没有美军的入侵是不可能发生的,这个地球上除了美军能推翻塔利班还有谁能去做会去做?苏联?中国?英国?法国?欧盟?只有美国!我们的地球不能没有美国来当地球警察。

《God's Warriors》开始播放第二集,基督徒版。美国的基督教教义派至少比伊斯兰极端主义来得好的地方是他们尊重生命,当然这并不表示我支持他们反对堕胎的主张,自杀炸弹,反对堕胎这实在是两个极端,这个星球上最不需要的动物就是人了,跺就剁吧,多一个少一个。这个极端教义派还有一个大学“liberty university”,什么现代科学进化论等等都受到抵制,他们应该还有研究生院吧,law school,居然有一万多的学生,在80年代里根对卡特时候发动了上百万的选民,搬倒了一大堆的民主党参议员。这些law school的毕业生要做的就是成为律师维护上帝的主张,甚至还要把《十戒》写到美国的宪法里,还有美国宪法的五条个人基本权利也要和圣经联系起来,总之现在的美国最高法院对于美国传统基督教义派有很多的同情票,最忌一次大法官投票表决时4:5,差一点就通过了这些God's warriors的主张,如果2008共和党当政估计大法官的任命可以起到至关重要的影响,很可能通过堕胎非法的裁决。吉米卡特连任失败的一个原因是因为他反对“southern baptism convention”的一个更加极端教义的主张,其中有很多限制妇女角色的条例。1976年那些支持他上台的基本教义派在1980年转向支持里根,原来卡特是一个标准的基督徒,父亲就是牧师,现在他又成为家乡的Sunday school的牧师了。美国的基督徒的力量相当的大。居然还有God's foreign policy statement。上帝在圣经里就眷顾犹太人,所以美国的对外政策应该保护以色列。这些听上去如同天方夜谭,不过这是我在CNN看到的。另一个基督教激进教义派的牧师走遍全美国讲演,他说美国有五千万基督徒只要有30%投票就能赢得选举,他在interview里介绍这一切的起源来自于他旁听他女儿中学课堂的一堂性教育课,他说学校教导孩子只要使用避孕套口交等等都挺好的,他主张自由派害了美国应该由conservative来改正这个错。据说美国有超过50%不相信进化论,1/3美国人主张学校应该停止教授进化论改为教授所谓“创造论”。这是令人吃惊的数字,那个教授说得好,genesis《创世纪》实际上就是一个指标,如果这个不对那么所有都不对,所以基督徒必须维护这个基础性的章节。旧金山举行了一个“战歌”集会,这是一个所谓“上帝军”的组织这是一个中学生的基本教义派,当然他们有他们的理由,最小的学生才十一岁因为她说和她年龄相仿的女孩堕胎吸毒,而他们是purified。


十二月十七日 今天天气很好吗? 天终于放晴了。(第二天)

昨晚下雨我的房间居然漏水,哈哈这是今年第二次我遇到这种事情了。终于完全明白volatile的意义了,毕竟是大师,写了一小段汇编我立刻就明白了,比很多似是而非的解说不知道明确几百倍。这完全是编译器的优化问题,普通程序的顺序执行时可以进行优化的,比如你检查一个变量,变量的值必须读到寄存器,如果你是单线程程序,编译器就座优化始终用寄存器的值来做一个while比较,(这种while(x=0);)是非常的常见,可是如果是多线程你是期待x被另一个线程修改的,我因为从来不用优化选项所以对此感受不深,今天也算是上了一课。以前朱春明讲的嵌入式的例子却是其它设备修改,归根结底都是编译器优化的问题,否则绝对不应该去怀疑这是什么操作系统的缺陷,绝对不应该认为这是什么cache与main memory的不一致,这一层完全是操作系统设计的问题,根本不是应用程序元看得见的层面。我以前强调过一次,现在再重复一遍。windows里面的InterLockedIncrement等等一大堆的InterLockedXXX函数应该是最快的同步工具,有可能用的都是硬件实现,比如早期CPU甚至有相对应的指令,现代的CPU应该为了SMP而设计了总线或者标志寄存器等等总之非常得快。不过这一类的函数和EnterCriticalSection相比到底哪个快呢?这种比较完全无意义,两者使用不同,后者是一个同步工具可以用前者来实现,后者应该是比较高级的东西因为前者包含了具体的操作比如改动了一个值。

我这几天始终感叹地是,这本武林秘籍对我来说获益匪浅,很多百思不得其解或者始终似懂非懂的东西听大师系统的解说犹如拨云见日,仿佛开辟了一片新天地,还有更多的是我从来没有接触过的仿佛醍醐灌顶,又仿佛脱胎换骨的感觉让我如痴如醉,只想说为什么没有早一天看这一本武功秘籍?可是仔细一想这实在是一厢情愿,如果是哪怕一两年前看这本书我肯定很多完全不明其所以然,正所谓功力不到高级武功学之有害无益。这实在是有一个鸡生蛋蛋生鸡的难题,究竟你早看早受益少收很多弯路折磨还是从一开始就看缺陷如不懂装懂胡思乱想的歧途呢?对于这种两难问题我的回答是最近才形成的,不要去争论,去做吧,鸡也先,蛋也先,实践也先,理论指导也要先,应该是一个不断的循环,所谓圣贤之书常温常习才对,不可能一次就能读懂的。

对于cache-alignment的问题以前理解不深,现在听大师解说才意识到在SMP这个问题更加的至关重要,有一个编译器开关很有用的__declspec(align(32))。刚刚读到大师的解说,entercriticalsection是相当高级的,可以把阻断线程至于等待状态,同时要记住他不防止同一个线程两次进入,这一点非常重要,这让我想起了linux下的系统semaphore,不是那个IPC的semaphore,是系统级的那个,很裸很丑陋的,好像会有这种问题吧?忘了,也许没有,总之有的同步工具有这种问题,你两次获得是不行的,(我在哪里读到的?还是早期的问题?)不过这的确曾经困扰过我,当时我不明白mutex属于创建者,没有释放两次结果别的线程总是拿不到。InitializeCriticalSectionAndSpinCount可以让你看到是否创建Critical_Section成功与否,大师说微软当初也没有考虑到创建时内存不足会失败的问题,所以除了SEH你还真没有办法知道,用上面这个超长名字的函数要可靠,我想起我看的另一本windows-system-programming的书里好像提过SMP要用这个spincount才行。大师的另一个tip是关于一些insight的,这一类东西其实很占资源,所以在第一次运行使用之前系统并不创建相关联的资源,可是如果运行期遇到内存不足在创建又会失败,所以spincount参数的高位置1可以强制立刻飞配资源,这些真正是非常高级的经验之谈,没有经历过这些极端境地的程序员是难以体会的,我想我还没有到这一层,唯一的经历是创建octree的预处理用光内存导致vector的push_back出错的问题,我找这个问题非了好几天,因为怎么也想不到vector会出问题,而且是push_back,所以有这种意识比有必要的具体解决有时还重要,因为你可以想得到问题可能出在哪里,不然向我始终怀疑自己的代码问题想破了头也想不出来。

我讨厌中文书的一个主要原因是中国人的懒散与含糊其辞,这表现在很多书都不见index栏目,一个名词的定义对理解的至关重要的,那么一个名词在哪里定义的是一个重要的问题,而且很多参考书不能指望读者从头到尾一章不差地读,跳过很多章节突然看到一大堆名词不知道在哪里定义的真实一个头疼的事情,为什么中文书不加一个index呢?这就是中文丑陋的东西人人都可以定义一个名词而且好像每个人都可以望文生义,曾经有人拿这个说事说这是中文的优势,一个普通人掌握两千个常用词就可以看懂科技文章,不像英文没有几万单词而且是相关领域的专有名词你根本就看不下去,问题是看懂的定义,“火箭”真的是带“火”的“箭”吗?“流星”是从哪里“流”过来的“星”?中国人的读中文的望文生义导致了很多的恶果。

谁说CNN没有政治倾向?那个女播音员评论布什总统的讲话就用了一个stuffed with etc.我不明白为什么她这么说,不是当年宣布减税政策并没有什么不对,是市长面对克林顿政府遗留下来的这么大一笔财政盈余布减税的政府除了中国共产党之外很难找到,发动伊拉克战争阿富汗战争难道有什么错吗?换了不是任何一个美国总统不可能做出什么别的选择,比如珍珠港偷袭之后美国人民还会拒绝参加二战吗?如果一旦参战不彻底消灭德意日轴心国同盟能罢休吗?美国的问题是布什的政策造成的吗?美国从伊拉克一走了之就行了吗?日过在发生一次911是否美军要再打一次伊拉克吗?美国以后历届政府能够每一节都来一次战争行吗?很多自以为是的民主党的中产精英阶级总喜欢那布什取乐实际上这些人都是误国误民的三国时代吴国的张昭之流,说起来一套一套真正需要他们出主意的时候连大方向都弄错,妄故了孙坚托孤的所谓内事不决问张昭,实际上这种人只会沽名钓誉实属无用之腐儒。布什讲话时候明显的苍老了很多。早上跑步大概四五公里吧,然后去无比简陋的健身房活动了半个多小时。结论是我这一次度假的选择有问题,古巴的酒店一定要挑选,这个酒店一定有它的黄金时代,不过那应该是很久以前的了,不过就当作闭关修炼吧。

CNN谈论的另一个话题就是法国总统萨克奇的花边新闻,oh lala,刚离婚的总统和超级名模约会了。可是我在想这个基本上没有什么稀奇,既然老婆跟他离婚了为什么不能呢?可是问题在于以一个刚当选的总统他的妻子居然要放弃第一夫人的位置离婚却让所有东方价值观的人难以想象,其一,这个第一夫人位置一定没有多少吸引力,没有多少特权没有多少利益否则为什么不再竞选前就放弃呢?其二,作为总统敢于做出这种决定国民并不把它看作始乱终弃的坏榜样说明政治在普通公民的成熟,其三,作为总统的花边新闻并不奇怪全体国民都知道,要知道就算是前苏联总书记有几个情妇普通老百姓也是知道的,比如江核心和祖英的关系全国人民不知道吗?我是比较倾向于相信政治“谣言”的,在新闻管制体制下“谣言”要比人民日报和新闻联播可信的多,因为这一类话题绝对不会空穴来风,也不会是纯粹的小人物能够想象出来的,这种东西不是身边的亲信不可能透露出来,问题是这种让普通人侧目的领导人的秘密让现在这个社会生活的人保守秘密也比几十年前困难多了,所以没有不透风的墙。但是话说回来了,就算有又有什么关系?克林顿执政有什么问题吗?领导人的私生活从来都不是国家的问题,国家的问题恰恰是连领导人的私生活都成为问题的问题,核心的那个拿不出台面的原配全国人民都看不过去,那就离了吧,不行吗?全国人民不答应吗?可能唯一不答应的是原配本人。我有例可证,当初刚到延安的时候老毛抛弃贺子珍了吗?不是,是贺子珍要离开老毛,老猫当然无所谓延安那个时候有的是从蒋管区来得找机会的青年女学生,仿佛那个时代有理想的女人的好莱坞,充满了机会,哈哈。所以只要原配愿意离婚,我们的领导人不用 背喜新厌旧的罪名绝对不会犹豫的,可是恰恰是因为东方的政治制度的第一夫人的红利让这么多原配死活就是不离不弃,成为国母风范。 所以,说句笑话,什么时候中国领导人的私生活可以被普通市民当作花边新闻评头论足的时候中国共产党就实现了自己为人民服务的诺言了,因为你不从神坛上走下来怎么可能为被你顶礼膜拜的人服务?喝了两杯红葡萄酒吃了两块牛排我感觉飘飘然的,海边散散步,风大浪急,白浪层层,有人在wind-surfing,就是身上绑一个降落伞脚上绑着冲浪板。

一觉醒来本想去其自行车结果发现没有人车子都锁起来了,肚子又感到饿了向起来昨天吃的cheesebuger很好吃就又去snackbar点了一个,好吃,我觉得我现在越来越能够接受西式饮食了,游泳池边音乐大作正在教授当地舞蹈,大概是恰恰和伦巴之类的吧,反正不懂,想起昨天晚上看的表演我不由得惊叹加勒比海人的舞蹈天赋,他们的音乐和舞蹈有着天然的融合充满韵律和感染力,而且这些舞蹈者在表演的时候充满了创造力,仿佛jazz一样的即兴创作,经常仿佛有神来之笔,结合音乐与节奏用身体写作了一首首美妙的诗篇。CNN的另一个新闻是关于沙特的,当地一个女人被轮奸但是伊斯兰法律却要追究她和无关男人接触的错,所谓无关男人我想大概就是除了她的丈夫家人之外的人吧,基本上这种伊斯兰法律和奴隶制没有两样,很难想象在二十一世纪这种制度还有这么大的市场,沙特在国际舆论的压力下免除了这个女人监禁6个月和鞭刑200下的惩罚。CNN的评论是这只是一个特例很难说沙特的法律就会因此改变,只不过现在每个国家都是在全世界的“显微镜”下运作,这是原话,作为地球村的成员你不得不考虑你的邻居对你的看法,这影响到整个国家的形象。确实如此,大概这就是全球化的另一重意义,基本上我想在中国这样的人多地少的国家发生什么革命是不太可能的事,相反因为全球化的缘故世界去通道是一个不可阻挡的趋势,所谓顺之者昌,逆之者亡。因为全球化的一个基本结果是资讯的全球化,这个世界最大的力量就是“比较”,来自不同背景的人民在比较,不同的制度的效率的比较,来自不同来源的资源在比较,这个资源当然包括人力资源,劳动力技能成本效率的比较,这就是生存竞争,人类社会的进化也遵循生物界的普遍原则。

waitformultiobject有64个上限,这使得我想起当时wmpi那个技术支持和弄我的时候也是拿这个说理由,当然我并不认为他完全在骗我,我只是觉得他可能根本接触不到源代码,这只是猜测没有多少理由,总之这透露了一个信息,在windows里面你可以同时操作的线程的一个上线,超过64同步很可能就不容易做了,尤其是类似于waitforall这一类的操作。


十二月十八日 今天天气很好吗? 阳光非常灿烂,不过风浪较大不能游泳。(第三天)

差不多已早上都被资源文件所困扰,最后放弃了寻找VC6现成的资源编辑器,只有用文本编辑照抄代码,1。资源文件可以有include 2。资源实际上最大的一个问题是定义一些资源索引,比如你在代码里面refer什么资源,实际上都是传递一个常数,windows的很多dialog函数依靠这个常数来load资源,所谓资源大概就是一个config参数,比如resource_id  DIALOG l,t,r,b STYLE DS_MODALFRAME|WS_SYSMENU|WS_CAPTION CAPTION "CAPTION NAME"

BEGIN

   EDITTEXT ITEM_ID l,t,r,b

   DEFPUSHBUTTON "OK",ID_OK, l,t,r,b

END

我被两件小事折磨了好久,资源编译器很傻的,如果另其一行就会让她迷惑,第二就是ID_OK是资源ID,和MessageBox返回值无关的,(这本来不是问题,不过我因为参考了一下MFC的做法,看到很多与定义的stringtable的常数反而糊涂了。)3。一个dialog的创建大部分都使用一些所谓的macro做的,你需要给它一个消息处理程序,那个宏就把当前windows的消息处理函数转到这个dialog了,结束的时候你在call enddialog,所有的所谓dialog函数归根结底都是call dialogBoxparam,并且把那个lparam参数用0传递,当然像所有的api一样这个有ansi和unicode版本,你不需要操心这个了。也就是因为macro这个参数类型比较讨厌,DLGPROC得定义是BOOL (CALLBACK*DLGPROC)(HWND,UINT,WPARAM,LPARAM);CALLBACK是一个宏,基本上就是__stdcall。4。WM_INITDIALOG这个消息应该是windows的一个流程,你应该捕捉这个消息进行初始化。enddialog是结束dialog的唯一途径。

居然断电两三次,一怒之下我就跑步去了。烈日下挥汗如雨,(夸张)就跑了两公里左右吧?反正是因为没有路了。菜单算是明白了一点,以前找着MFC的tutorial根本不能真正理解怎么回事,现在知道了菜单(包括系统菜单,不对,系统菜单应该是发送wm_destroy)都只不过在WM_COMMAND项下的wparam的一个常数,静态的建立菜单的办法是在resource脚本里面设定menuname MENU

BEGIN   POPUP "&Animal", IDM_ANIMALS   BEGIN MENUITEM "&MAMMAL", IDM_MAMMALS END END...

一句话,就是VC6那个给你做成了可视化。并且一个工程只能有一个资源脚本。动态创建的menu一大堆函数我现在还不想看过多细节。

看CNN的那些时事评论感触良多,一方面新闻目光非常的尖锐可以说明察秋毫,克林顿的每一句话都要被他们抓小辫子,比如他暗示奥巴马泰年轻不如他老婆经验丰富,立刻奥巴马就以其人之道还制其身用克林顿当年竞选参议员的原话来说明有志不在年高,后来克林顿要在辩白,反而因出更多的议论,真是唇枪舌剑,思想和思想的交锋甚是好看。另一方面,采访者评论者反应很快精力充沛,这样的国家节奏非常的快,这反映了国家的竞争力与效率,实在是让人羡慕不已。 其实我也不是不明白什么民主自由都是太空泛的口号,但是有一点是毋庸置疑的,那就是社会生活的进步,什么是进步?更公正,更平等,更有效率,更合理,更加考虑更广泛的社会成员的利益和感受,如果这个是各种社会都想追求的目标那么美国社会是一个最好的典范之一,世界上有很多做得更好的国家可是他们都太小了有一定的特殊性,大国里面只有美国是唯一一个合格的解决方案。美国的事情很有意思,一个十岁的小女孩上学的时候带了一把牛排 刀中午在餐厅切自己带的牛排,结果她的老师打911叫警察把她逮捕送到了少年犯管教所。这是反应过度还是超级白吃?美国德州一个叫Horne的拿枪杀了两个没有武器的入室窃贼,有人称他为英雄,有人不以为然认为那两个人没有武器而且是在逃跑的时候从背后被开枪打死的,CNN的主持人问一个官员,他的话有些让人无法反驳但是总有一点点冷酷,他的意思是既然那两个要做入室行窃的工作自然知道这是很危险的工作,这是他们要付出的代价,如果他们找一个正当的工作做就不会有这种事发生了,说的是没有错,只是这么说总让人感到有些怪怪的味道。另一个美国监狱的骚乱,狱警对闹事的囚徒使用我认为过分的暴力,当然那是个刺头领头闹事挑衅警察,可是就如同那个坏小子的妈妈在访谈中说的,她生活的辛辛那提县就算是杀一只 狗你都不能开枪折磨它如果它已经被绑的牢牢的话,但是他儿子却被绑着然后用三万伏高压枪在胸前折磨。墨西哥的农民的生活很穷困但是贫穷的标准也不过是每个星期19美元,原因是美国农民得到美国政府的补贴于是墨西哥农民的玉米再也不能竞争了,这是北美自由贸易协定NAFTA的问题吗?美国今天最主要的一个议题就是所谓的invasion of aliens,这里的异型不是那种以浓酸作血吃人不眨眼的外太空怪兽,而是来自于墨西哥的大量非法移民,这个问题究竟有多严重我没去美国不知道但是我知道美国人现在在讨论的事是是否应该把英语当作国语这一点写进法律,你明白问题有多严重吗?美国建国两百多年从来没有人怀疑过英语是美国人的语言,You are American. Speak English!可是现在开始有人质问,有人开始担心,于是为了预防万一这一条要写进法律以防将来变天。西班牙语现在是美国的第二大语言,这就是美国人的问题。美国总统选举很有意思的,全国支持率并没有什么用,因为要看你赢多少个州,虽然有些州很小可是他们的票并不少多少。(这一点我不确定,选举人票是按人口计算的吗?还是按行政区算?)卡斯特罗是否会退位?应该不会,像同时代的毛泽东一样到死也不能丧失权利,连太上皇都不行,CNN的评论员的评论是cosmetic humbleness as usual。所谓的不应该cling to office, not to obstacle to growth of younger people之类的都是骗人的。 美国国会也有糊弄人的,民主共和两党互斗预算案,结果一方提出了一份三千多页的预算案,你读得完吗?据说就算不是总统死了你也不一定读得完,我相信,因为几百页的教科书我没有一本读完过。


十二月十九日 今天天气很好吗? 阳光非常灿烂,早上游泳去了。(第四天)

不仅游泳我还玩了一会儿kayak,就是那种独木舟了,在montreal的时候滑过一次很好玩的,在海里面不太容易保持平衡,哈哈。CNN比较funny的广告是这样的,在踐蔃有力的西班牙古典吉他的节奏中一个身形健壮的妇女走进厨房顺手摘下一个苹果抛向空中,一个箭步跳上案板一个倒立用脚接住空中的苹果,然后苹果在她两只脚之间玩味良久,然后他一只手撑着倒立另一只手捧着苹果送到嘴边。你猜这是什么广告?同样产品的另一个广告是这样的,在一段悲伤欲绝的音乐声中一个满面愁容的妇女走进房间,宽衣解带,在凄厉的音乐中她把自己用天花板垂下的红绸子绑起来,然后开始做一系列高难度的空中杂技,两只腿绑着倒掉空中荡秋千。同样的产品,同样的问题,这是什么产品的广告?CNN的一则新闻是大量的外国投资在拯救美国破产的银行,这意味着什么?评论员回答说,他们钱太多了没地方用了,的确你手中的美元部投资到美国能干什么?中午饭吃得太饱了,我总是这样,每顿都吃得走不动路,My eyes are bigger than my stomach. 撑得走不动路也要走,就索性走到城里去,这个地区明显要比我去年去的caya coco来的富裕,路上的车子虽然还有不少旧的lada但是还有一些新车,还有不少摩托车,路边的住宅当然也比我以前看到的好一些,不过不要忘了caya coco是一个农业省,我看到的是农村,而城市总是要比农村好得多。不管怎样旅游业改善了当地人的生活是毋庸置疑的。 晚上吃饭的时候忽然有些感伤,因为我觉得我一个人度假有些过份的引人注目了,吃晚饭望着天上的新月心情在两杯红葡萄酒的催情下更加的有些凄凉,我总有一千个理由思念我的故乡我却总有一千零一个理由不能回去,想起来又一个年头的终了这一年来的总结又要临近了,这一年来有多少来不及叹息的叹息呢?这个酒店的表演的确要好很多,别出心裁的东西还真不少,比如一种现代的类似皮影戏的表演,说皮影戏实在是太不准确了,因为这是一个真人的表演运用灯光服装和新材料,类似迪斯科舞厅里很多女孩子穿的发光的衣服那种,表演情趣多变很有意思很可惜我有没有带相机,不过这种不可传神的独享的记忆更有吸引力,就如这些表演一样,一旦完全曝光在灯光与眼光下就失去了神秘的魅力。是不是windows的逻辑画板只有十六个呢?我说的是LOGPALETTE我觉得有些不能理解,明天再看吧,我觉得酒精是一个人正常思考的天敌,可是我怎么也想不通国内的人天天都浸泡在酒精里究竟在想什么?


十二月二十日 今天天气很好吗?阳光非常灿烂 。(第五天)

迷题解决了,原来palette和其他的GDI不一样不能用selectobject,而是要用selectPalette,微软搞得这一套真复杂,当初是怎么设计的,除非说palette是因为客户端的物件才需要另一个API否则干嘛要用不同的函数?这似乎是唯一的解释。但是我还是有疑问就是在同一个wm_paint消息下的beginpaint是否互相覆盖?是第一个吗?果不其然,beginPaint不能多个!VC6的资源编辑器不知道加了些什么东西,也许是什么discardable吧,总之我用resourceID去loadicon,loadcursor都失败了,我重新编辑.rc去掉所有微软生成的东西,只保留CURSOR_NAME CURSOR CURSOR_FILENAME.CUR就可以了,注意这里的resourceid和以前消息循环里面菜单的那些id有所不同,因为这只是refer资源文件里的资源名字,所以用字串就可以了,不需要单独用头文件定义常数,而在前一次我用的时候用的是资源id,是数字id,(我觉得比较的混乱,上一次的菜单也应该可以用字串的资源名字来传参数,不过问题是GetDlgItemText需要传递的是一个对象的id,这个必须先定义让资源文件编辑器进行编译,然后sourcecode再去引用,所以在资源文件里面存的不是字串而是id,明白了吗?我自己都快糊涂了。)总之,在.rc里面到底要存字串还是常数是由你决定的,但是有的api只能用id不能用字串,也许是为了效率吧?

TNND古巴这个鬼地方一晚上要停电好几次,我曾经丢失好几次文件。实际上这是一个伪命题,什么叫做字串什么资源id这都是我自己想出来的,实际上很简单,对比dll里面输出的函数名和hint number,我想所谓的资源id就是所谓的hint那个应该是一种高效的查找方法大概在文件头部分放了一个表查找速度比字串比对当然快很多了。(难道字串不也是放在哪里吗?仅仅是int比对比字串来得快而 已。)MAKEINTRESOURCE解释了半天The return value is the specified value in the low-order word and zero in the high-order word,实际上你看辕马更简单明了:#define MAKEINTRESOURCEA(i) (LPSTR)((DWORD)((WORD)(i)))就是假造了一个字串指针,我猜想i是微软事先计算的相对偏移量,而且从这里可以看出来资源文件是有一定的长度限制的,35536是上限。(这一点我仅仅是猜测。)肚子好饿啊,去吃早饭了。居然这个电视机有机巧,我没有找到所有的频道,居然看到了中央电视台的频道。中国和印度进行联合军事训练说明什么呢?中国开始在印度和巴基斯坦之间搞新的战略了。《百家论坛》在讨论《祝福》里面是否有阶级斗争,鲁四老爷究竟是否是害死祥林嫂的元凶,评论者说祥林嫂到地主家干活在他们家好多了,白胖了。的确,鲁迅自己明白自己不是解救人民的救世主。那个画笔程序聪明的地方在于鼠标左键按下以后鼠标移动画下的临时线要怎样擦掉,这个问题其实不简单,如果你的背景是复杂的图画,你除非重画背景这个可是非常的大的工作量因为鼠标移动事件wm_mousemove会非常的频繁,而且定一个重画的rect实在是很傻,说不定你只好把所有都画一遍。如果不知道作者的办法我还真是想不出来,不过我想学过计算机的尤其学过基本图形的人很可能都知道这个约定成俗的很酷的办法(除我以外?),你的临时线是screen的inverse,多么的聪明的办法,你只要再画一遍就抹掉了,等到lbuttonup的时候再用pen的颜色画最后的线段。我对于createcompatibleDC还是不太理解,为什么bitmap的操作都要用我自己创建的dc呢?

天天看新闻联播的话你会和大多数被韩劳动人民一样认为北朝鲜是全世界的天堂。


十二月二十一日 今天天气很好吗?阳光非常灿烂 。(第六天)

你绘画五角星吗?我当时非常的镇静为什么能够用5个顶点画出总共有10个顶点的五角星呢?看了半天才明白哈哈,真是计算几何学的威力,你的五边形的顶点是alternative的顶点,这就是复杂的多边形,但是GDI进行“scanline algorithm”的时候,你可以有两个选择,winding,alternate,前者全填,后者只填奇数与偶数边之间的区域,这是MSDN的原话,可是你还真需要一些时间去理解呢。还有一些我不太明白,那个magic code0x00960169L究竟定义在哪里?作者说的微软的表可能是很早以前的东西,这个code据说是postfix,我不知道这个是否有什么规律呢?DPSxx是怎么encode呢? 什么是度假?就是坐在棕榈树下的酒吧桌前看着眼前碧蓝的游泳池边比基尼美女晒太阳,在热带微风吹拂下吃着香喷喷的芝士汉堡,并且要不时地提防落在对面椅子上的小鸟的窥探。


十二月二十二日 今天天气很好吗?阳光非常灿烂 。(第七天)

终于在msdn里面找到了Ternary-Raster-Operation的code,可是我却不明白为什么结果不太对。看了半天才找到原因,是我自己的错误,bitblt的destDC当然不是memoryDC了,我应该把destDC的brush设定,这才是我的pattern,顺便说一下,那些ternary的operation只是一些自定义的index,五花八门,大都没有名字。其实brush也可以用bitmap来做,这增加了更多的灵活性,当我们的s,d,p都是bitmap的时候这真是好多好多的可能性。二十年代的上海一个出租汽车公司居然会花一万块美金买一个电话号码?那个时候的美金有多大啊! 调整window大小的函数是setwindowpos,连带把位置也调整了。 证实了一点,一万美金买一个电话号码是吹牛皮,那个时代中国的民族资本家还远未达到那个水平,连三百辆出租车加上其它配套设施加在一起也不过就是五六万美元而已。我肯定是什么GDI的资源未释放现在电脑变得很慢了。 看大陆报道的台湾新闻评论里面有嘉宾说美国人实际上很担心阿扁到时候搞一些意外出来,比如美国驻台代表问连战说如果到时候台湾攻击大陆渔船怎么办?我有两个感想,1。美国人确实很担心,因为现在经济联系这么紧密谁都离不开谁,美国一个次按风暴就让很多人担心明年经济陷入衰退,如果像中国这样的新兴市场再波动那不是雪上加霜?更不要说中国现在有很多美国的投资又是世界的工厂。所以美国人吃不透到底会有什么意外,所以提前来文国民党当然也是提醒。2。美国人对于中国的事情还是外行,你天天看CNN的话就知道美国人根本没时间关心像中国台湾这类事情。国内问题是大事,安全伊拉克非法移民等等全排玩乐也轮不到中国议题,另一方面美国人很天真地认为如果中国大陆的渔民被绑架杀害的话就会陷中国政府与危机,殊不知这类事情在中国人眼里就像死了几个蚂蚁一样不值一提,我小时候大概每个月都有福建渔民被台湾打死的消息,再往前每个月都有广西农民被越南人打死的事情,再往前每个月都有农民被苏联人印度人打死的事情,中国政府什么时候生气了?对越自卫还击也不是为了农民报仇,主要是为了柬埔寨的西哈努克的要求,那个时代只要有一两个小国轨道在中国领导人面前称臣让他们享受一下万邦来朝的虚荣就什么都答应了,包括向西哈努克这类乞丐要在中国嫖妓周恩来都只好找招待所的女服务员来服务。所以,美国人不懂中国,中国不像世界上的大多数政府要替它的臣民考虑,不是的,这种杀渔民的办法不能激怒大陆。阿扁要另想办法。

不过回过头来看台湾的问题很严重,很多人其实并没有意识到危机是注定要发生的,我们不妨仔细看看蓝绿两党在明年的大选中是谁也输不起的,第一国民党输不起。凡事不过三,如果国民党连输三次整个人心就散了,这个当可能就散了,机会主义分子会倒向民进党,党的内部会再次分裂出走,支持者会彻底丧失信心与耐心,总之,国民党会彻底垮掉,所以他们输不起。第二民进党输不起。民进党虽然是执政党但是始终处于很不稳固的地位,最大的问题是掌权的人一旦失去权力就如同失去生命,民进党的财源不如国民党一旦下台可能连维持的钱都没有了,另一方面这些人都害怕国民党重新掌权后会秋后算帐,阿扁就是代表,他们绝对输不起。原本的民主政治是一种平衡的权力,朝野两党不会有这种你死我活的绝对的执政党优势,可是台湾的宪政体制有先天不足导致现在这个情形就是谁都不能输,但是一定会有一个输家的话,很有可能会有极端事件发生导致政局混乱,这个时候才是最大的可能性事件发生:对台湾动武的三个条件中唯一一个可能发生的条件就是岛内发生重大事件比如混乱,大陆绝对要介入否则被联合国或者日美派维和部队的话台湾就国际化了。所以,这就是美国人最担心的因为这个剧本太复杂超出任何人的控制。


十二月二十三日 今天天气很好吗?阳光非常灿烂 。(第八天)

有几件事情要明确一下:1。做bitblt的三个东西,R=memory DC一般就是你创建的一个bitmap,他和一个memory的dc相联系,就是要selectobject,D=实际的screen的dc相联系的,往往可以有bgbrush,与pen之类的画出来的,总之是和实际的dc相联系的,P=和实际dc相联系的brush,不一定是bgbrush,而只不过是目的地的dc的brush。2。如果要抓取屏幕要创建一个和display相联系的dc,这个display-surface用名字"DISPLAY"来获得,CreateDC的其他参数为NULL,同时还要创建一个memory的dc来存储bitmap,屏幕的大小可以有GetDeviceCaps获得,bitmap和memorydc相联系,最好先把你的程序ShowWindow(hwnd, SW_HIDE);然后坐bitblt,memorydc是目的地的dc。3。存储bmp文件比较麻烦,我玩过一段时间感觉还是有些麻烦,主要是要考虑所有的格式的话不太好写的好,如果是单单面向某一种格式当然容易的多,从HBITMAP获得信息是GetObject,获得data是GetDIBits,bitmapinfoheader的定义还是很罗嗦的,我懒得再做一遍就copy微软的例子玩了一次。对于bottomup与topdown的格式我还是不太明白,以前发现有的人反映我的程序有这样的问题,实在是罗嗦的很。4。alphablend功能只能支持32bpp,这当然是合理的,可是rgb居然是pre-multiply with alpha,这就使让人难以接受了,我就懒得玩了。对于localalloc我还不太明白,是否已经没有必要使用了?也许使用heapalloc更好吧?究竟和new,malloc有什么区别呢?是操作系统级的具体实现吗?看伏明霞和郭晶晶的故事感觉很有意思,背后还有这么多呢。

天上的云彩仿佛半透明的羽毛飘来飘去不时地想遮住那轮明月的脸庞,地上徐徐抚面而来的微风不停地拉拽着婀娜多姿的棕榈树。


十二月二十四日 今天天气很好吗?阳光非常灿烂 。(第九天)

犯了一个比较低级的错误,因为我有一种错误的观念,如果你想创建一个singleton的对象,是否应该把它声明成static在“头文件”呢?我的观察是应该用extern声明,好像每一个引用这个头文件的cpp都会有一个自己的实例,所以你会有多个实例,这是非常的subtle,我在写并行程序的时候并没有这种体会因为mpi的程序在不同的node上执行不同的cpp所以每个Node还是只有一个实例。其实二战是一个险胜,因为直到德国投降的最后时刻他们都有翻盘的机会,当时不论是德国还是日本都有很大的机会研制成功原子弹,而且德国的喷气飞机有很大机会得到空中优势,我今天还知道了一个我不知道的历史事件,当时日本和美国一样成功研制了离心机,但是他们缺乏u-235,在德国投降前夜德国决定用潜艇输送500kg的u-235和一批专家到日本,天知道如果日本得到了这批武器战争是否会成为一场原子战争?

据说鲁迅和他弟弟周树人的绝交是因为家庭开销上的纠纷,以前胡一刀说鲁迅日记大概都是什么今日收到某人送来十块银元之类的琐事,后来我就开始学习这种写作风格,可惜始终没有收到某人某日送来的十块银元之类的,实在是一大憾事。如果要登记backgroundbrush应该用SetClassLong,在16位系统用的是SetClassWord,我猜想这个函数实际上就是用的结构的偏移量来设定的,猜测而已其实无关紧要。 让我感到困惑的是隐藏window之后,比如showwindow,我再也不能恢复window,好像消息循环被转移了再也创不到那里了,当然这是我的猜测。我试验了WM_SHOWWINDOW可是还是不行。

我想你一定会被气死的,vc6的资源编辑器居然要求每一行必须用回车结束,我最后一行忘了这个结果一直报错,我还以为是语法错误,文件结尾的判断有这么白痴的吗?真把人气死了。

圣诞大餐吃了些什么?我不知道,我只是知道我喝了好几杯的红酒,然后心里很惆怅,想起了很多,十年前,二十年前的陈年旧事想从胃里不时涌上来的饱嗝一样五味俱全,只不过事件里的人物都成了一个个的符号,一个个没有面孔的符号,我费尽心机的敲打着斑麻木的额头尽力会向那些面孔,可是除了一个个的指令破碎的片断没有任何一张清晰的面孔,一切都是一些模糊的支离破碎的片断。我想我要么是超级白吃要么就是超级天真,你想windows就算再烂也不会有这么低级的想法,我自己创建的wndclass是用来向系统传递参数的,系统内部怎样存储window-class是一个不透明的东西,或者按照操作系统的行话来说是一个不愿意暴露给用户的内部结构,一方面是安全的考虑,一方面是将来升级换代的考虑,总而言之最基本的是在系统内存的东西,我怎么能够天真到以为setclasslong是改变这个参数的属性呢?我一定是没有喝酒的缘故,否则怎么这么白吃?现在我的头疼得厉害。 首先,使用setclasslong改变bgBrush完全没有问题,但是正如我以上所说的wndclass是没有被改变,其次要改变menuname我失败了,并且正如以上所说的,wndclass是不会改变的,而且就算我手动改变也没有用,所以你明白我所说的了,你是只能操作hwnd之类的opaque东西,间接地依靠一些列函数,不可能直接改变数据结构的,这个基本观念我还没有建立实在是可耻。我的结论是也许静态的依靠资源文件建立的菜单不能简单地依靠改变资源文件名,也许可以但是我也许没有找到合适的时机点或者事件,不过我以为wm_nccreate是第一个事件,所以我认为只能用动态创建菜单的办法来改变


十二月二十五日 今天天气很好吗?阳光非常灿烂 。(第十天)

我想原因也许很简单就使setclasslong没有问题,我的确设定了新的menu-string系统也知道,但是我并没有说怎样处理已经load进来的menu,所以我只能硬性删除,getmenu,destroymenu,loadmenu,setmenu,这样一系列动作可以设定预定义的资源文件里的menu,动态创建实在是太麻烦了,我懒得看了。TNND的菜单是WM_COMMAND的wParam。我有一种错误的幻觉,这实在是糟糕,你能否仅仅依靠DSP的ternary-raster-operation来画一个bitmap在一个bitmap上?我的意思是一个cartoon人物画在黑色背景上,然后我想把人物的形象“扣”出来画在复杂背景上,比如一个bitmap上,这个只能使用alpha-blend做,可是我有一种幻想想用naox这几种操作的组合来画出“透明色”,这是不可能的,因为我们的透明这里意味着rgb都是0,而我的bit操作根本不管是不是什么黑色或者无色,这个可以做到的只是SDo但是这个并不是我想要的,因为source的颜色要改变。我浪费了块半个下午把256种可能都试了一遍,当然不是因为我白吃只懂得用这种笨办法来试验,我只是想再证实一下,而且把这个256的表作一下将来是很有用的,vc6例有一点好的地方就是按住alt+shft的鼠标选择,拷贝,简直是天才的设计。在提醒一句,DSP里面的P是hdc的brush,不是bgBrush!这简直是不可原谅的,不能再错了。还有一个白吃的问题,你要抹掉上一次的东西,如果是简单的2D的东西,最简单的就是用bgbrush来patcopy,当然要把bgbrush设定为brush,不过应该可以用invalidateRect,不过我还没有试验。试验了一下,我想我的概念是错的,那个使用beginpaint,endpaint的做法,是要你重新画一下。算了吃饭吧,今天是最后一晚了。叫到这里吧,度假结束了。我觉得就算用底色作P也是不行的,试验过了不行。看battle for wesnoth,它里面的头像都很小,这是否??等回家看看代码如何?

这里的表演其实相当不错,我始终怀疑是否他们是真的在唱,因为如果是的话那么他们的确太好了,仿佛百老汇的歌舞剧,当然我没有去看过不过sound of music,东边西边之类的还是看过几眼的,正好电视里再放,我觉得我还是很喜欢美国的歌舞剧的,我个人以为这是美国文化的精髓之一,相比之下国内似乎很有偏见对于外国的文化很排斥,颇有天朝大国对于其它一切都嗤之以鼻的情节,我现在看国内的所谓文艺界仅有一种迎合大众情趣的倾向,虽然我也觉得赵本山的小品有趣但是正如一位仁兄的评论,有些粗鄙,这不是他的错,错的是现在的文艺界的取向,你不引进介绍大众怎么有机会去品尝?我记得我小时候即便是刚粉碎四人帮文化极度贫乏,电视就只有一个台每天只有几小时的节目还经常可以看到如《胡桃夹子》之类的芭蕾舞之类的,可是现在你在几十个电视台里也找不到一个小时的所谓艺术,我也不是主张什么所谓高雅艺术,那个什么男高音我一点都不感兴趣,美国歌舞剧就是美国的大众文化。


十二月二十七日 今天天气很好吗?蒙特利尔哪里有什么阳光啊?

哈哈,终于回家了。我在阅读maskblt的时候才领悟到了ternary-raster-operation的code的high-order-word仅仅用作index,low-order-word才是op-code,难怪maskblt可以把fore-back的code结合成一个dword,当然了maskblt的foreground或者background的raster-operation都是binary的所以各自用一个byte就够了,而ternary-raster-operation确实是要一个word的,因为复杂嘛。(以上是胡说八道,maskblt明明就是ternary-reaster-op所以我的结论不对,ternary-raster-op需要一个word,那么。。。???除非我们只用operation的Index,因为只有256个,所以两个ternary-raster-op之需要两个byte。终于证明了我的想法!的确是用index的!!!#define MAKEROP4(fore,back) (DWORD)((((back) << 8) & 0xFF000000) | (fore)) )取决于你的sprite是白底还是黑底,你的mask-bitmap的op也要相对应地调整。读了一早上,又看了一个网上的例子才开始明白一点,很关键的一个常识我本来不理解就是关于monochrome的foreground,background的概念,原来从color-bitmap转为monochrome-bitmap的时候你只要设定一个bkcolor就行了,现在想一下很简单,但当初我却没有转过弯来,还打算自己去对pixel操作过滤写一遍,哈哈省了很多事情,所以,所谓的foreground就是“非”background呀!什么是background?你制定一个background-color不就行了?这么简单的道理我却理解了半天。这的确是一个学习gdi的必经过程人人都会问这个问题,我如果现在不问以后就被人笑话了,真是又一个old new story。另一个小小的笑话是CreateBitmap的最后bit指针给NULL的时候我看到的是content undefined,这没有什么错啊!没初始化不行吗?我怎么一开始理解成“结果”undefined!真是莫名其妙!

0=FOREGROUND,1=BACKGROUND这个是monochrome的定义。我对于maskblt的理解完全不对,这个foreground,background完全是一个逻辑的定义,根本没有什么foreground,background,所以可以理解为两组ternary-raster-op定义在一起,执行时候依照monochrome-bitmap的指示来行使!这里碰巧0定义为background-op,1定义为foreground-op这和以上的monochrome毫无关系,但是非常的confusing&misleading。

GetDIBits比较智能返回的bitmapinfo能填充colorinuse,我一开始不明白怎么回事呢。不过我花了很多时间也没有成功制作monochrome的bitmap可能是哪里出了错吧?我感觉肚子还是先填饱了再说吧,因为这很可能不是简单的错误。

出去转了一下明白了一个道理,我的一个工程里面的“参数自动补全”的功能不能用,但是普通自定义函数却可以,因为这是从我的笔记本拷贝过来的,project的include路径和我的台式机不一样,所以我感大胆的断言vc6的这些神奇功能就是简单的函数名字比对而已,当然这是尽人皆知的事实今天又被我当作old-new-story说了一遍。(试验了一下心里有些恐慌,因为include路径之类的是按照系统的,不过我还是怀疑project文件或者opt之类的有问题,就删除了重做就好了,枉费我半天功夫怀疑杀毒软件的问题,当然sympatico的杀毒软件是中安装不成功我也没有办法。)早晨bell的技术员来了解决了大问题,昨天晚上我回来的时候发现internet还是不行,结果打电话给技术支持,我突然试验了一下把电话和电脑的电话现在一个splitter上对换就好了,打电话给那个印度的技术支持她胡说八道什么splitter有类似分频的功能我对于那个小得不能再小的splitter表示深切的怀疑怎么看都不享有芯片在里面就算线圈作分频也不像,但是也不能反驳,因为internet不通电话通实在无法解释。今天早上这个小伙子才揭开了谜团,加拿大的技术支持就是训练有素,原来是电话接入的fusebox的fuse有损伤导致带宽减少,他还特地给我画了一张图来示意,电话占用一小半,internet信号占用一大半,但是除此之外还有很大一块用作同步信号,很可能使我的线路正好同步信号损失了,所以电话没事,internet时通时不通,而且就算给我再多的带宽都没有用。

去古巴差不多就是十天,正好可以凑一个《十日谈》。

晚上吃晚饭我亲自走路回家,结果又一次迷路了,从前我告诉某人我经常在城里转的迷路,别人总是不太相信因为我自己也觉得难以置信,可是左后看到我歧视和正常的行走路线只有一步之遥,而就是这一步之遥是的平常走半个小时却让我走了两三个小时。雪不停地下,大地很温暖,走在松软的雪地上很舒服,在这样的夜晚散布实在是一种享受,古巴的夜晚是热带风情的撩拨,蒙特利尔确实雪夜的温情脉脉。雪不停地下,我不停地走,丝毫没有迷路带来的沮丧,仿佛这是一种有意的安排。人的一生的道路经常在迷失与寻找,所谓的正确与错误往往都是一步之遥,但是这一步之遥又往往有着难以想象的巨大差别。再看一边《the last samurai》照样充满了激情,作为真正的武士从来都不恐惧死亡甚至有时候期待着死亡,因为爱森豪威尔说只有不惧怕死亡的士兵才有资格活下去。小时候我很喜欢三国里的计谋,但是中国古代过多的所谓谋略现在却让我越来越反思,战争归根结底是实力的较量,谋略大多数时候是在不对称的实力较量中的弱者最需要的,如果能够依靠实力对比有时候谋略都是多余的,而过分地追求谋略智慧让人放弃实力的追求,这是我的看法。中国和日本何其的相像,同样的明治维新同样的戊戌变法,同样有日本的武士阶层维护皇权义和团保皇帝,为什么结局是这么的不同?为什么这么多人都没有说出一个原因呢?know your enemy!孙吴子说的却从来不为很多人所真正理解,因为只有首先尊重你的敌人你才有可能了解你的敌人,中国是否真正尊重过作为对手的日本?玛克辛机关枪是一个时代的终结,冷兵器时代的终结,这在第一次世界大战中得到了最充分的阐述。女演员叫做koyuki,可能叫做小雪是个女模特。


十二月二十八日 今天天气很好吗?蒙特利尔哪里有什么阳光啊?

差不多浪费了我一个上午!第一个混蛋不知道是我自己的错还是网络上的那些所谓的demo的老问题,基本上你看别人的例子如果你对于那个topic一无所知你就等着吃苦头吧,从color位图生成monochrome位图本来很简单就是把color-bitmap作为源的dc的bitmap,把monochrome-bitmap作为目的dc的bitmap,但是你要设定一个background-color,你认为这个设定是给源的还是给目的的?99%的人应该选择源,可我偏偏认为是目的dc,(不过我非常相信是我看到那个混蛋的例子是这么写的。难道我的记忆里这么差了?)当然如果只有这一个小问题我大概最多画上一个小时就能找到原因,可是还有另一个问题是关于getDIBits的问题,我想把这个单色位图存成文件看看对不对,结果让我百思不得其解的就是怎么存都是黑漆漆一片,而这个存储bitmap的程序是我从msdn拷贝下来的,我也仔细看过觉得没有什么问题,然后我有仔仔细细跟踪发现内存中的位图数据从getDibits读出来的也没有错,bitmap文件的各项都对但是为什么文件不能正确显示呢?后来找了许久才发现所谓文件的单色位图是必须要两个color的,就是rgbquad必须有,但是GetDibits却把它填充为零了,这一点昨天我就注意到了,但是当时我因为相信微软就像当然得认为monochrome的位图应该都是黑白两色所以当然color-table是有些多余了,这在制作透明色的位图来说是对的,可是对于文件位图就不对了,我猜想这个应该算是一个小小的bug,或者至少是一个设计上的问题,我能够理解从color-bitmap转成monochrome-bitmap时候仅仅由backgroundcolor,foregroundcolor是所有其他color,这个时候设定两个RGBQUAD表达两个颜色很无意义,但是作为GetDiBits这么做是有些画蛇添足地修改color-used,总之这实在是一个非常龌龊的问题,我为此耗费了整整一个早上了!本来我应该花大部分时间检验那个monochrome的与或非的操作(我看到仿佛有好几个不同的组合。)可是。。。还有一个我一直在心里骂娘的就是微软的那个bitmapinfo的超级傻逼结构,bmiColors被定义成了RGBQUAD[1]你到底想要怎样?在内存里我自己怎么动态分配内存?村成文件时候你要我用你这个size来村再把colortable-1个RGBQUAD来存?我知道这种不定长度结构很麻烦,可是你要么就只定义BITMAPINFOHEADER就好了何必多此一举?这个结构究竟有什么存在的必要?到底谁要用它?除非是很早以前有了大的改变这个实在是让人难以理解的东西。

pattern-brush不是一个非常好的选择,因为类似于texture-mapping一样如果你的bitmap太小就会复制,所以我没有用ternary,只是用了两次bitblt,mask->dc(srcand);bitmap->dc(srcpaint=sdo)这是因为我的bitmap已经用黑色作底色,制作的mask是sprite为黑色,周围为白色,bitmap->mask(srccopy),这是因为我选择“黑色”作背景色,那么monochrome的背景色是1,结果看到的颜色就是白色了,是不是非常的confusing?我是这么干觉得,要想一下才知道。美军的空地配合几乎到了完美的地步,在半个世纪前的朝鲜战争离空中支援就敢于在地面部队不足百米的地方投弹,现在我看到的一个战例更加的疯狂,这一次是特种部队空降到伊拉克后防备伊拉克的大量地面部队进攻,空军的f16结果用专门对付坦克的集束炸弹来支援,这是迫不得已,但是在地面的引导下一次次地接近阵地前投弹最后一次大概是在阵地前三十米左右,这是非常的可怕得因为这种集束炸弹不是精确制导简直是天女散花而且是设计穿透坦克定装甲的步兵多在战壕里也没有用,完全是dangerous close。这样的部队训练水平是非常得高的,我看到的这些我猜想都是在美军国内训练营里真实地模拟前方实战的,非常的真实,有些无线电对话则是当时的录音。还有大量的巷战非常的真实!这样地部队绝对绝对不是世界上人和其他国家的部队可以相提并论的!我想美国人其实也是很怕中国军队的少壮派的,怕的是什么?怕的是中国军队固步自封,夜郎自大不了解美军的强大贸然开战,这样的例子不计其数,二战中日军其实从国立来看是绝对不应该和美军开战,但是因为日本陆军大都是狂热的土包子积极主张开战,海军占少数不得已只好同意,实际上美军最需要的是不战而胜,可惜世界上很多不自量力的并不真正了解美军的强大。军队的强大不仅仅是武器装备,更重要的是训练,尤其是实战的训练,很多国内的军事专家并不真正了解这一点,美国人相比之下更加深刻的体会到毛泽东的名言,决定战争的最重要因素不是武器而是人,这里说的就是军队的训练与实战的洗礼,用士兵的话来说就是打起仗来基本上都是靠本能了因为那样紧张混乱的情况下士兵根本就没有可能冷静思考,平常的训练完全就体现出来了。相比之下,我想说PLA的训练是一个什么样子我不是很清楚,但是我知道中国军队里的假大空是出了名的,基本上参军的都是农村山区里没出路的,上军校的人基本上不像当兵,合肥炮兵学院的暴乱就是最好的证明,下级军官是统御士兵的关键,而全世界任何正规的军队都知道节制下级军官有多么重要,可是一个堂堂军事学院却闹到学校当局无法控制局面这样的军官素质是可想而知的,这样的军队比八旗兵能强到哪里去就是一个大问号,PLA长期没有意识到部队经商的损害有多大,现在就可以知道打起仗来伤亡就不只是对越自卫还击的每天平均四千人的水平了。我衷心地希望PLA能够真正了解美军的实力不要贸然和美军冲突。


十二月二十九日 今天天气很好吗?蒙特利尔哪里有什么阳光啊?

这一件事情让我百思不得其解,dc的brush我在创建的时候用selectobject设定了,结果好像完全没有用,每次timer事件或者说所有情况下都要再次selectobject系统总是用一个默认的0x1900010的我猜想是white-brush的替代。实在是不懂。

恐怖与色情永远是加拿大电影的主题。看一部电影是否是加拿大出品有以下几个特征可以依据:1。是否是恐怖片比如妖怪吸血鬼等等。2。是否是有若干脱衣女星当然这一点不太准因为没全世界的片子都可能。3。电视里是否有冰球比赛。4。是否有强烈的环保意识比如在湖里面扔个石头就有人跑过来说你有没有执照是否意识到干扰“inhabitant”,这里指的是鱼。5。是否有着强烈的保护少数族裔原住民情绪,比如有一大堆的印第安人的所谓文化的崇拜。6。电影的主体是否是女人和孩子的直觉超过科学家的逻辑思考,或者印第安人的巫术比计算机程序处理的电子设备更可靠。

每次看《kingkong》我都觉得非常得ridiculous,究竟导演想要说明什么?为什么一个二十几英尺高的怪物会对一个女人着迷?不同的物种之间的吸引力最多就是宠物的感觉,那么这个大猩猩为什么会为了一个宠物牺牲自己的生命?母猩猩对他的吸引力会超过一个比她小很多倍的白色洋娃娃吗?


十二月三十一日 今天天气很好吗?下雪了

在创建monochrome-bitmap的时候设定settextcolor是毫无用途的,只有setbkcolor有用,取决于你的bitmap的背景颜色,一般大家不习惯用黑色作背景,大都是用白色,所以你还要把它变成黑色背景的,这个使用sdx就是SRCINVERT,我已开始还想着用SDna,这里的S是我的monochrome-bitmap就是sprite为0,背景为1的,对于这个结果我还是不能正确的解读,因为它变黑色了。glReadPixel里面如果要读bgr顺序的话,那个常数是GL_BGR_EXT,我以前不知道从哪里得出的结论是这个不需要extension的支持,这是错的。创建bitmap并不代表你已经可以用bitmap结构的bits给他赋予位图,而仅仅是分配内存之类的,所以与其用createbitmapindirect不如用createcompatiblebitmap因为是用dc省掉了很多难以想象的错误,我反正用后者就成功调用setdibits而前者就不行,可能是bitmapinfo这个白吃结构有什么问题吧?

Smiley face