Archive for December 2006

Log0131 Code Continuing   Leave a comment

The program to simulate the solar system is upgraded. Last day I upgraded it to speed it up, and the new version today has a more sensitive 3D point-array Model. The coding pattern has been changed from 8888 to 9995, and this made the sampling rate been improved from 200 to 1 to 100 to 1, and you can see from the 3DPReader that the points are much denser than before. For that I want the 3DPReader could read the both version 3DP file, I added the version information into the file. You could see the string "3DPVxx" in the front of the file, xx is the number for the version. In the new version, the points are so close to each other that it could be think as a line, so the effect won’t cost much of my words, it’s perfect enough. I used to think that I should improve the sampling rate to 25 to 1, but now I think it’s a waste.
What the new version cost is the time to save and show. For the sampling rate is doubled, the points should be shown and saved are thrice doubled. So, the time used now is about as 8 times long as the time used to be used. The same the showing process. That’s what I want to resolve next.
Yesterday, I tried another coding function, the dictionary index by color ID, but it’s failed. To index by color ID, you should waste lots of time or memory, but I don’t want to waste either. So, the dictionary coding are not suit for my program. But, the dictionary coding which index by the X location maybe useful. I’ll try it.

Posted December 31, 2006 by LostAbaddon in 世界叶

日志0130——似乎着迷了   Leave a comment

自从程序突破了以后,最近似乎着迷了。
今天做的最成功的两件事情都是关于那个程序的。一个是成功地使模拟程序的速度突破性地提升了,另一件事就是为3DP中加入了星体位置的信息——这第二个相对第一个基本就可以忽略的。
程序速度突破可以说是到目前为止最重要的突破之一了,和信息编码等差不多同等重要。
VB6在绘图的时候提供了不少通道,其似乎完全不同。比如,在FORM的PICTURE中画图和在IMAGE中画图就不同。IMAGE中画图需要用AUTOREDRAW开关来使得图片不被其它窗体行为冲掉,而PICTURE就不用担心这些。网上有人分析过IMAGE的AUTOREDRAW的底层实现,是双缓冲技术,不知道PICTURE用的是什么,从速度上来看难道是单缓冲?这个是玩笑。
在PICTURE上画图不是想画就能画的,只能从IMAGE导进去,而且非AUTOREDRAW的IMAGE导进去还是空的。理论上应该可以直接在PICTURE上画图,不过目前没找到。
虽然同样需要用IMAGE,但是显示和不显示差异很大。将一个1000*1000的窗体完全用直线填满就是一个不错的测试不同方法速度的手段。用非AUTOREDRAW的LINE方法只需要7.15s,如果打开DOEVENTS开关让程序不至于IDLE,那么就需要15.23s(这和当时系统在干什么有关系)。而用AUTOREDRAW的LINE方法,在不用DOEVENTS的时候是48s,用了DOEVETS则在三分钟内还没有完成直接被我关掉了。
原本程序中用的就是带有DOEVENTS开关的AUTOREDRAW的LINE方法,显然这个速度是相当慢的——在程序中把LINE开关关闭就能很明显地体会到两者的速度差异了。
不过,程序要求了一定要画图,而不开DOEVENTS则程序看上去是IDLE了,不用AUTOREDRAW则辛辛苦苦画上去的轨道图象信息就全浪费了——IMAGE用SAVEPICTURE方法保存的时候必须是AUTOREDRAW期间画上的信息才能保存。因而,显然这里需要寻求更快速的画图方法。
现在,另建一个PICTUREBOX,并且将其设为INVISIBLE。所有的绘图工作都在这个PB上进行,然后在画完以后用PAINTPICTURE方法或者直接用FORM.PICTURE=PICTUREBOX.IMAGE,就能把图片在FORM上显示出来了。它在上述测试中所用的时间为36s,显然,相对三分钟没完成,是一个质的飞跃了。
采用这种我称为“画布缓存”的方法的模拟程序,速度比原来快了不知多少倍。举一个例子就能说明问题了:原本的程序我从早上4点运行到6点,生成了14张图片,而现在的程序在我出去买夜宵的一个小时中生成了34张图——其中还有很多张是多星体稳定图,而稳定需要的时间和星体数量的1.2次方成正比。显然,这个飞跃已经达到了质变,快了至少半个数量级。
然后,在刚才在程序中加入了绘制星球立体形态的功能,作用只是用来区分轨道的先后顺序。不过加入以后的立体星图给我相当的震撼。这应该就是所谓的“画龙点睛”吧。

Posted December 30, 2006 by LostAbaddon in 世界叶

日志0129——断裂中的丝连   5 comments

光缆又断了。至少在我的记忆中,这已经不知道是第几次了——包括我家自己的CABLE断了在内。
晚上还能上MSN,估计是中国晚上连外的用户比较少,所以网络能够忍受——这让我想起了今天看中的两个课题之一:COMPLEX NETWORK。
今天下午是下学期毕业论文的开题会议,是关于今年毕业论文的一个新举措:分组报题。以往都是大家自己选老师和老师所开的课题,今年变了,我们要先分组,然后有组中老师来决定谁跟谁做什么课题。直研的和要考本系研的都是内定的,不出意是不能换的。我是在基础物理组。下学期薛老要去西部支教(所以最近脾气比本来更古怪更火暴了),因而这次的领课题老师中没有他。马老有两个课题,一个是关于二次哈密顿量的一个是关于量子力学课堂问题回答的,我都不是太有兴趣。倒是一个没听过的(我没听过的老师多了)老师的两个课题我很有兴趣:1, Chaotic Dynamics and Stock Market; 2, Complex Network。这两个课题我都很有兴趣,如果真要说出一个更来,那就是第二个。很多领域都涉及到复杂网络,比如电网、电信网、通讯网等。复杂网络的弹性和传播都很有意思,著名的“六度分国”也是复杂网络连通度的一个重要概念,而病毒的传播就是该理论最活灵活现的体现。网络弹性则直接关系到维修、维护和升级的调配。插播一下:其实弹性和连通应该是密不可分的,而这又和复杂网络的小网络结构息息相关。想想都感觉这个课题实在是太有意思了。混沌力学也很吸引我。自己做过的不少程序最后都得到了混沌解,此外最近自己在想的一个问题也需要用混沌去解释。而用混沌解释股票市场也很有意思。
别的比较吸引我的课题有电子在强激光场中的相对论力学效应和辐射作用,还有非阿贝量子Hall效应等。
其实,我比较希望老师能让我们自由发挥。最近刚完成的3D版多体运动模拟程序给了我许多很有趣的IDEA,正打算下学期有没有机会把它都描述和分析出来。如果不能自由做的话,那正常情况下我会两个一起做——同时做老师给的课题和自己的课题。甚至,我正在考虑能不能把复杂网络和混沌力学与股票市场两个课题同时做。似乎有点狂了。
说到3D的多体模拟程序,昨天刚完成(无论是哪个意义上,都是“昨天”)。
采用了不少比较有意思的“技术”——应该说是某些技巧才对。
最伤脑筋的其实是信息的编码结构。现在对颜色信息用了字典技术,而空间点信息则浓缩在4个byte中——前三个描述了空间坐标而最后一个是色彩编码。这中编码方式在速度上比较占优,占用空间也不算太大——这里可以做一个比较:完全的信息记录一个轨道图需要82MB的空间,而采用了这种编码以后只需要8KB。当然了,它也有缺点:位置信息一个坐标只有一个1BYTE中的8个BIT,对于总坐标宽度100000来说,就是采样率为200:1。用自己写的3D模型读取器能看出:太粗糙了。因而,打算增加一个BYTE,采用5bytes的编码结构:每个坐标用12bits,而色彩编码用4bits——这样颜色只能记录16种,但已经完全足够了。原本4bytes编码的情况下,只能以200:1的采样率记录整个屏幕的一半空间——体积的话就是八分之一,而采用5bytes的编码以后则可以记录整个屏幕空间的信息,采样率为25:1——比原来提高了64倍。不过,这个方案还没有最后付诸实施。现在还有一些问题需要处理,最关键的就是以这个采样率来采样的时候我很怀疑内存会溢出——需要记录的区域太大了,大过BYTE()数组的存储大小了。不过今天晚些时候这个问题则突然被我想通了:化整为零。可以把屏幕分为8个区域,然后没个区域对应一个记录区。这样EXPLOIT的问题就解决了。之前考虑问题的时候一直在考虑如何把数组划分开,而忽略了其实可以把空间区域划分开的。昨天在写程序的时候则把初始化时间问题解决了——用BYTE数组比INTEGER数组快多了也小多了。我很诧异之前我一直都没想到。显然,写这种大容量程序的时候什么事情都需要精打细算——不然CPU和MEMORY就给你颜色看。做图象处理和文字输出的时候也对缓存有了全新的认识——果然可以提高不少速度啊。此外,还打算在下一个版本中采用对空间信息的字典记录法,这样文件大小也能缩小不少:按照更高的采样率和显示大小,文件会大出64倍——现在10KB信息会变成640KB。采用字典法以后,差不多能节约一般大小——视轨道信息量而定,越多信息量则省略的空间越大。还打算采用分色记录的方式,每种颜色一个记录区,这样颜色信息就只需要记录一次而不是几百万次——全空间的点有十万的三次方个这么多。这也能节约不少空间。因而,事实上对颜色和X轴采用双字典法以后,每个点的不重复信息点只需要3bytes,而公用信息是2bytes——包含了X轴信息和色彩信息,而且两者还能进一步分离。不考虑索引用的重复部分,容量就小了一半。如果继续采用分块法,那么还能更小——分块法是一种只适用这种特殊情况的字典法。当然了,无论如何,最后的文件大小都要突破100KB的,这个已经有觉悟了。然后就是用RAR等方法来压缩了,不过这个不是我现在想做的:兴许以后会做,用来让文件更小。
今天还对重现用的3DPReader做了一点修改,比如做了显示时对伪线程的锁定,从而避免STACK EXPLOIT。感觉整个过程是对多线程编程的一个很好的锻炼——虽然是在伪多线程环境下。同时也对一些基础概念是一个比较好的磨练——比如今天就发现了STATIC是多么地可爱。然后,今天的另一个最大的感受就是真的很佩服那些DIRECTX和OPENGL的开发人员(不是用它们开发的人,而是开发它们的人)。当然咯,大家接触到的东西不同,它们是在最底层进行操作,而我是在高层操作,所以速度当然会有显著差异,但是能做得这么快速,我现在还真是想不出来。
其实,想想我对编程更喜欢的是研究一些技巧和挑战自我,如果真的进某家公司开发那些商用软件,应该会感到很枯燥的。
今天出去自修的六个小时中,程序生成了不少很精美的图片——3D生成稳定图片所需要的时间比2D多很多,因为我设置了一个长检测时间,理由是3D要稳定很困难。如果我的理论正确,那么首先要花海量的时间让行星系稳定入星盘结构,然后才是星盘内行星运动的稳定问题。
关于星盘的形成,今天有了两个想法。一个想法比较传统:行星轨道有趋向星盘的趋势,这个可以从程序中看出;另一个想法则不同:行星轨道很容易被扰动从而脱离星盘。两个行星在近日点的一个略射就可以很大幅度地改变轨道盘面和星盘的夹角——而且往往是偏离得更大。发生这种现象的条件还不是很清晰,不过就和2D模拟程序中星体碰撞一样,越是接近稳定星盘结构,这种现象发生的概率越大。但是,可以肯定的是如果各轨道不发生交叉,那么星盘的诞生是很必然的一件事情。因而基本可以肯定如果发现某恒星系中行星轨道中某一轨道明显脱离星盘,那么它很可能是在星盘形成以后或者即将形成的时候才被恒星捕获到的,或者就是发生行星级碰撞而诞生的。
这个模型其实用在天文上还不是很实际,因而实际上的恒星系或者更甚至是星系中的行星或者恒星是被延迟引力波的广义相对论所统治而不是超距的牛顿引力论,因而显然结论会大不相同。程序上,要实现广义相对论的模拟也不是不可以,不过要等到我构思完如何记录动画以后——具有延迟性质的引力作用可是建立在时间轴上的引力论啊。
今天还查了下我的学分,发现上次的成绩单上果然是出问题的:C免修的成绩没有记录上去,从而让我少了不少学分。最后的总学分是142而不是上次说的138。因而下学期不用去补课了,只要专心做课题就可以了。
想想下学期一定很忙:两个课题(至少)加一个RPG游戏,哇,能完成我就是超人了。

Posted December 29, 2006 by LostAbaddon in 世界叶

日志0128——先预留着   Leave a comment

今天大部分时间都处于MSN无法连接上的状态,所以我们这一帮人非常郁闷。
今天最重要的事情是去本校拿了奖学金的证书,而昨天最重要的事情就是拿到了那1000元的奖学金。
其实,从两个星期以前就已经决定要了这笔钱应该怎么用:请客100+,移动硬盘400+,剩余的400左右则没有什么明确的目的,不过今天电脑出问题已经用掉了120买了个新电源。余下的280估计就上交了。本来有打算再配个内存的,但显然现在已经不行了。今天一同去的人中已经有人把钱花差不多了,相比之下我还是好很多的。说到去本校,由于小龙会晕车,所以走了轻轨+地铁的线路,迟到半个小时。而走另一条路线的两位兄弟没有赶上校车导致比我们还晚到十五分钟。到那里没多久,老师就说完话了。才进门几分钟的我们拿着红色的奖状莫名其妙地被告知可以走了。
然后就开始缅怀本校的生活,发觉果然好到一个境界了。吃了串冰糖葫芦,然后突然就发现天空开始漂雨下来了。
回来以后吃了顿白食,然后就开始看EVA。本来仅仅是为了打发一点时间,后来竟然发觉时间不是一般地多。
在看到一半的时候电脑突然就不能动了,经SAGE检验是电源问题。幸好之前谢大爷由于失误买了个电源但没用上,现在就便宜我了——不用跑去徐家汇买新的了。于是,120就这么没了。
看完EVA以后就开始写程序。上次的3D模拟程序生成的3D文件为82MB!这次经过第一轮优化以后是800KB,用RAR以后是3KB。这让我非常受刺激。RAR用的是标准化通用压缩算法,但是我的文件有我的文件自己的特点,所以理论上应该比RAR的压缩比更大才对。
此有,上网查了下RAR算法的介绍——结果竟然是没找到…………不过看到了LZ77算法和LZ78、LZW算法的历史介绍,发现和我以前想的一种方法比较类似——DICTIONARY ENCODE。当然了,RAR用的DEFLATE算法则又不同——虽然没看到到底是如何实现的。
然后休息片刻采用了第二优化算法,把大小从300KB缩到了7KB,不过还没有采用什么标准化的压缩手段。按照分析,可以用BIO-DICTIONARY ENCODE进行数据压缩,这样要压缩到3KB也不是不可能。
生成的图像追求大小和压缩速度都要好,这方面一直在试验,花了不少功夫。
下一个要处理的问题就是提高分辨率。这个对程序初始化速度有很大关系。最近在研究大数据存储的时候还发现了一种方法可以用来保存海量的数据。C++里面的话直接就联表或者指针就能搞定了,不过C#和VB系列中就不能这么做了。而替代方法则需要消耗许多额外的不必需的内存空间。
无论如何,今天在3D的多体模拟程序上还是有所突破的。
然后再说一下昨天的情况。昨天拿了奖金以后就是元帅请客吃饭,结果把他一直珍藏的五粮液开了喝了。我喝得最多,而且还额外喝了一瓶多的啤酒。好酒就是好酒,我竟然都没有醉的感觉。回来以后被SJF拉住,借给她三个拖线板以后一同去了天文观测。请了一个佘山天文台的人来,观测的情况则一般,毕竟周围光学背景噪音太大了。
下面,明天就是我请客吃饭了。
此外,今天SLOW找我帮忙被我断然拒绝了。早就想好要收山了,到现在才收山也真是迫不得已:又无偿帮了不少人忙。
不是我不想帮忙,但是帮忙也要有个限度,不然无论什么人什么事都要我帮忙,我不忙死了啊。

Posted December 27, 2006 by LostAbaddon in 世界叶

转载——武林情圣成名指南   Leave a comment

  先旨申明,本文适用范围是三十五岁以下的男性同胞。如果各位女侠希望成为武林中闻名千古的女情圣,此文的参考意义相当有限。
  此外,我个人认为古代女情圣多从青楼出身,比如霍小玉杜十娘等等,而且必走壮烈路线,不是沉江就得准备染上不治之症,伤身伤心,得不偿失,所以不推荐各位效仿。女士们研读本文,只需要抓住男情圣的活动路线并加以劫杀就可以了。

 

  好,闲话少说,大家要想成为武林情圣,第一点是要有一个好名字。
  极力推荐双姓,所以投胎的时候挑爹娘必须谨慎,如果你已经选错了,建议赶快找一个双姓的干爹。西门(吹雪)、欧阳(克)、令狐(冲)、慕容(复),以上种种都是值得竭力推荐的姓氏,一旦拥有,第一次见面就足以让你的名字在女主角的心目中熠熠生辉,当真是别无所求。
  当然,也有不受欢迎的双姓,比如公羊这个姓,如果你不幸姓了它,就准备去蹲在某深山里当个高人吧,我们的情圣打不过大魔头的时候也许会正好跌落在你的怀里,你要记得把毕生武功传授给他甚至搭上自己一甲子的修为和一条老命。看看,这就是姓得不好的下场。
  单姓中也有不错的,比如楚(留香)、白(玉京)、江(南)等等,以选字有古意、带水气、意思比较朦胧为上。有些姓氏则是情圣的大敌,比如你如果姓牛,那你还是老老实实的充当一个种庄稼的侠隐好了。还有姓彭的,一般注定是五虎断门刀彭家的好手,这个家族在武林史上就未曾出过一个情圣,而且包揽了很大部分的串场小角色。再比如姓金的,注定是铜臭太浓不够飘逸的,比如金庸、金何在,唯一一个有前途的金世遗,他还是个叫花子。
  名字同样以双名为胜,比如张丹枫,乃是王国维先生说的词中“无我之境”,飒得没边了。再比如戚少商,古雅风流啊,尤其那个“少”字占尽春光,永远年轻。《林海雪原》里的少剑波同志就是生错了时代,否则他绝对是可以流传五百年的武林情圣。慕容复为什么失败了?就是因为他虽然得了好姓,却是个单名。他要是改名叫做“慕容覆水”,那么从出场开始,他武林大帅哥的前途已经注定了,而且必然有着无限伤心的爱情往事。
  所以我把下列名字推荐给大家:西门吟雪、司马秋愁、欧阳遗恨、小泽征而……

  下面就是注意一些身世的背景。
  如果你不能生在武林的第一大家,比如什么南宫世家,你就最好家破人亡先。所谓梅花香自苦寒来,为了你将来有漂亮的侠女可泡,还是建议你爹妈先去澳洲或者美国移民吧,然后你就可以无家可归了。其实大家设想一下,那个情圣有爹妈的?你不要跟我说韦小宝。
  没有爹妈有无数的优点,一是你可以从小就在名山大川修炼武艺,比如令狐冲那样,二是你不用帮家里干活补贴家用,你见过杨过种地么?三是没有人会帮你订一堆娃娃亲,通常我们知道,仙子都是不会生在那种庸俗家庭里的。而且你订了亲又不娶就会背上不忠不孝不仁不义的大罪,郭靖已经在上面功亏一篑了,大家不可蹈他的覆辙。
  除了少数天赋异禀的朋友可以生在塞外同时做情圣,比如罗小虎,一般情圣还是得生活在中原地区之内,江南地区水气充足,人文气息浓郁,最是滋养,我个人以为是情圣最佳产地。如果太南到了岭南地区,也是麻烦,那边倒是出很多柔情似水,在你身上下了蛊强逼你和她成亲的如花苗女,不过这一类苗男就不符合中土地区的情圣标准了。大家切记不可从倭国来,事实上倭国的情圣多半都是以凄厉的下场了解一生的,比如妙僧无花的老爹,再比如美少年剑客冲田总司。
  慎之,慎之。

  武器的选择上,剑是第一选择。
  剑这个东西有很多好处,一是轻巧便携,二是优美文雅,三是有公子贵族气。最忌讳的兵刃我草拟了一个列表:
  九环金背大砍刀,这类武器山贼专用,主要也是为了烘托气势用,一般会在第一招结束前被一把宝剑削断。
  宣化斧,程咬金李逵等特型土匪专用,如果谁觉得他们象情圣,请不必再读这篇文章了,我们的审美趣味好象来自完全不同的两个星球。
  娥眉刺。请注意“娥眉”两个字,这类兵器和东方不败的绣花针一样,实在秀巧过头,在自我挥刀之前不宜使用,而在挥刀之后你也没有成为情圣的必要了。天生取向特别的人士可以使用,但是如何用它成为特别情圣我就不知道了。
  铁尺铁链等等,捕快专用,而且稍微有点名气的捕快还不屑于此,比如冷血还是用剑,无情用暗器。
  九齿钉耙,大唐年间有一位情圣用过,可惜招数后来都失传了。
  其他可以推荐的武器包括折扇、款式独特的刀(如傅红雪的黑刀)、长枪、棋子、空手。注意,空手的时候一定要练习指掌类的功夫,大力鹰爪,少林长拳都不推荐。你可以想象陆小凤一指点出说“灵犀一指”,你能想象他马步冲拳,大喝“黑虎掏心”么?(猴子偷桃?太下乘了吧?)
  如果不相信我说的,你扛一狼牙棒,带两镏金锤,骑匹毛驴,走你的另类情圣道路去吧,我不管你了。

  好,那么你现在叫做西门吟雪,你爹妈都移民美国了,你用一把宝剑,没有娃娃亲,长到二十岁,现在要出门找美貌少女当情圣。关键是,路怎么走?
  “我家的妹妹特别多,没有危险不登门。”
  记住上面的话,传世的真理。所有美若天仙的妹妹,必然在你生死瞬间才会登场。否则你想,她要是随便都会被男人遇见,那么早在十八岁以前就有无数的爱情经历,曾经倒在无数兄弟们的怀抱里了,焉能适合武林情圣的择偶标准?
  所以,一定要往危险的地方去,塞外、雪山、幽深的山谷洞穴、邪道瓢把子的家,哪里危险你往哪里钻。而且一定要趁武功还不好的时候去,否则你和西门吹雪一样天下无敌,就少了很多躺在姑娘怀里养伤的机会了。这就是杨过和郭襄终于失败的原因。
  看见前面那个黑道法王了么?对,上去灭了他!但是注意,不可以招惹那些一击必杀的第一名剑。设想你胆敢和拔刀斋那种刽子手单挑,他居合剑斩下根本没有活人,你焉有机会醒来后躺在一张粉红色的锦塌上,吐着血对某个天仙说:“这……是哪里?”
  那么你现在已经被某个妹妹从死神的手上救回来了,并且被悄悄安置在她自己的床上(这一点不敢保证,很可能比较暴躁的姑娘会把你养在她家的马棚里)。不过别高兴得太早了,没那么简单,别龇牙咧嘴垂着口水一脸阴谋成就的样子。
  早期的情圣运气往往好得邪门,中了某种黑道的阴毒内力,偏生又一时半会没法翘脚,只好天天和姑娘培养感情之余吐血给她看。这时候往往有一个精通房中术等邪方的道士登门(可以肯定他是情圣的托儿),传达了一个真理,就是姑娘只有以身相许才能治好你的伤。然后……然后……你只要继续吐血就可以了。不过其中一个必要条件是仙女是独居的,否则她如果有一个外形奇特的使女,她可能会设想培养你和这个使女的感情,那……
  后来的情圣们多半倒霉一点,存在着如下障碍:
  第一,她的老爹是你的杀父仇人,是黑道的大瓢把子。几乎九成的黑道瓢把子都有一个很漂亮很漂亮的女儿,而且都很憎恶黑暗。这其实也有原因的,因为黑道人物一定会不择手段去抢一个漂亮老婆,所以他的女儿就会比较好看。不必那么义愤填膺,你未来的老岳父也是为了你啊,兄弟。
  第二,她性格冷漠,小龙女……这是可以理解的,如果仙女性格不冷漠天天喜欢往你胸口上帖说娶我吧娶我吧,那么就有点贴近左道的青楼路线了。
  第三,她和你属于不同的帮派,最好是不同的种族,比如你是乾隆皇帝被高鼻子大眼睛的维族仙女香香给救了。有人说,那我把她抢回宫里不就完了么?注意,这里是情圣课5910,帝王课9817在隔壁上呢。
  很严重吧?不要怕,没什么大不了的。这是为了给你充分的时间称雄江湖。现在准备和妹妹很凄惨的分手吧,她会悄悄回头看你一眼的,如果热烈点如赵敏那样会咬你的嘴唇,那么你就预先收到利息了。
  还记得前面那个姓公羊的山谷大侠么?去找他,让他把一生内力传给你,然后油尽灯枯而死。你也许会认识一两个武林朋友,要么他们是有老婆的,要么就是长得实在特别,再不然是和尚,反正又会帮你又不会和你抢仙女的那种。你就天天在江湖上晃,一边积累内力一边积累势力,其中会有若干次和仙女相逢的机会,不过可以肯定你是没法一下子把她娶到手的。这个阶段你多半会认识其他三到五个妙龄女子,都有将身待嫁的意思。不过记住,和她们聊天打发寂寞可以,答应成亲就失去成为真正情圣的机会了。不要狗熊掰棒子一样,一定要盯紧最好看的一个。
  时机差不多的时候可以准备和你最大的仇家开战,可能是邪教老妖,也可能是你未来的黑道老岳父。这时候,哇呀呀,你忽然发现大事不好了,原来仙女竟然落进了危险中。
  你以前认识的势力都可以派上用场了,设想一下吧,只见天南风云涌动,江上千舟竞发,你引着万千英雄站在船头去救佳人。那时候微风吹起你的长发,你抱剑大吼:“敢动老子的女人,我和你拼了!”
  知道令狐冲去救任大小姐什么结局吧?
  如果你比较性格比较另类,特别欣赏孤独的气质,那么这个时候你会发现你忽然被那帮无良的朋友都抛弃了。不要怪他们,他们是为了成全你的英雄伟业。此时天高雪寒,他黑衣长剑走在茫茫大地上,悄悄对远方的妹妹说:“我来了……”
  此后是一对一千的大恶战,虽然理论是你只有1%的胜算,不过那只是表面数字,最后你必然会浑身浴血的杀到妹妹面前。此时你持剑苍凉却温柔的吻一下她的面颊,此生的大事基本搞定了,你就可以顺势晕过去了。(不晕过去可能会有一个大嘴巴过来……)
  喂,少侠。要吻以后有的是机会,你都亲了一个小时了,烦不烦啊?

  如此,西门吟雪少侠,你已经找到了意中的仙女。你此前认识的其他姑娘都会有点忧伤却又无限真诚的祝愿你们幸福,邪道的老魔头也会顺理成章的完蛋,如果他是你的老岳父,他还会乖乖的把女儿托付给你,你也算明媒正取了。
  去终南山或者江南水乡买片小田,带老婆过小日子吧,一般鉴于你已经结婚,你不会有演出续集的机会了。乐开花的时候,不要忘记把你移民美国的爹娘接回来哦。

Posted December 25, 2006 by LostAbaddon in 思维测地线

Blog0127 Continue The Miracle of Christmas Eve   3 comments

Miracle will happen in Christmas Eve. It’s a truth that we’ve validated this yesterday the Christmas Eve, though it seemed not so noble-minded.
The miracle’s continue today for me.
After a research during the night, I’ve found a way to solve the question that how to save the GDI+ image to files. .Net offer a way which is totally different from the way I was used to in the pre.Net period.
In .Net, the sealed class, notinheritable class in VB.Net, graphics could be thought as a paintboard. It has lots of properties with the prefix "from" which is used to identify which canvas is using. This important information is absolutely ignored in MSDN. The following is what writen in MSDN:
FromHdc                   已重载。从设备上下文的指定句柄创建新的 Graphics 对象。
FromHdcInternal         内部方法。不要使用。
FromHwnd                 从窗口的指定句柄创建新的 Graphics 对象。
FromHwndInternal       内部方法。不要使用。
FromImage                从指定的 Image 对象创建新 Graphics 对象。
It’s totally absolutely bullshit. Why can’t you add the lemma that "并在其上绘制图形"? I’m not sure whether it’s a translation mistake or the original mistake. Perhaps MSDN is only wrote for OODers, but in lots of the forums, no body can answer the question and crowds of guys told me that he’ve no idea about it, and they are all OODers. So, I don’t know what are the developers of MSDN thinking about. About how to make MSDN more "professional"? Jesus.
Perhaps it’s just because all us are not American, so we’ve no idea about American-style help and joke.
Due to efriend jy’s help in the forum of ProgramFan, and the help of lots of information got from the Google, I found how to draw in .Net Framework. And now, I start to think that it’s easy to draw and modify pictures in .Net.
We’ve to instantiate a Bitmap class. If you want to modify an existent picture, then the Bitmap instance can use the constructor which instantiate the instance by the picture, make it point to the picture file. If you want to create a picture which perhaps is not existent, then you can use the constructor which instantiate by some parameters describe the properties of the picture you want to create.
After the upwards, now declare a graphics variant constructed by the method "FromImage" with the param as the Bitmap variant you declared before. For example, in VB.Net:
Dim BT as Bitmap = New Bitmap("a.bmp", Imaging.PixelFormat.Format64bppPARGB)
Dim GG as Graphics = Graphics.FromImage(BT)
Now, the Bitmap variant the canvas has been installed on the Graphics variant the paintboard. You can draw on the Bitmap by graphics, just like the following:
GG.FillRectangle(New SolidBrush(Color.Green), 100, 200, 100, 100)
This function can fill a rectangle area with the green color, from the point (100,200) to the point (200,300).
In .Net, you can’t just fill an area but must declare a Brush class variant. It works as a brush. For newers, especially who was so used to VB6, this .Net-style property will puzzle you for a long time, but you’ll think it’s very great after you’ve been used to it, especially for the ones who was so used to OOD. To me, it’s a kind of overelaborated royal games. In the classes I wrote, I’ll offer a simple constructor with the common parameters for brush but a parameter of brush. Even, in some classes I wrote, I’ll offer a static, shared in VB.Net, parameter group to record the common use and almost never changed properties. It’s very convenient for the users and developers. So, I always think that the developers in MS are spending almost all their time to make their toy tool more and more "LUXURIANT" or "PROFESSIONAL" but "HUMANIZATIONAL". You can see this in almost every product created by MS, for example IE7. Mass abandoned ACDSee 6 and picked up ACDSee 3 just because 3 is more humanizational though the function isn’t as powerful as 6(the part included in 6 but 3 is not as useful as the part included in both). The same to Windows Media Player and StormCodec.
Whatever, I’ve broken through the bottleneck.
The next step, is more challenging. It’s about the mass memory space. I’ve to save magnanimous datas in memory. I can use the compress tech to reduce the roome to save these datas, but I can’t do this to memory or I’ll lose horrible mananimous speed and make the program as slowly as a snail.
Maybe I should take a good look at the books of the data structure and arithmetic first.
Anyway, I’m sure I can finish all the traps on my way.

Posted December 25, 2006 by LostAbaddon in 世界叶

New Research could Lead to “Invisible” Electronics   3 comments

Imagine a car windshield that displays a map to your destination, military goggles with targets and instructions displayed right before a soldier’s eyes or a billboard that doubles as a window.

Only in science fiction you say? Northwestern University researchers report that by combining organic and inorganic materials they have produced transparent, high-performance transistors that can be assembled inexpensively on both glass and plastics.
The results of this breakthrough, which brings such futuristic high-quality displays closer to reality, were published in the November 2006 issue of the journal Nature Materials.
Researchers have long worked on developing new types of displays powered by electronics without visible wires. But, until now, no one was able to develop materials for transistors that could be "invisible" while still maintaining a high level of performance.
"Our development provides new strategies for creating transparent electronics," said Tobin J. Marks, the Vladimir N. Ipatieff Research Professor in Chemistry in the Weinberg College of Arts and Sciences at Northwestern and professor of materials science and engineering, who led the research. "You can imagine a variety of applications for new electronics that haven’t been possible previously — imagine displays of text or images that would seem to be floating in space."
Transistors are used for all the switching and computing necessary in electronics, and, in displays, they are used to power and switch the light sources.
High-performance, transparent transistors could be combined with existing kinds of light display technologies, such as organic light-emitting diodes, liquid crystal displays (LCDs) and electroluminescent displays, which are already used in televisions, desktop and laptop computers and cell phones.
To create their thin-film transistors, Marks’ group combined films of the inorganic semiconductor indium oxide with a multilayer of self-assembling organic molecules that provides superior insulating properties.
The indium oxide films can be fabricated at room temperature, allowing the transistors to be produced at a low cost. And, in addition to being transparent, the transistors outperform the silicon transistors currently used in LCD screens and perform nearly as well as high-end polysilicon transistors.
Prototype displays using the transistors developed at Northwestern could be available in 12 to 18 months, said Marks. He has formed a start-up company, Polyera, to bring this and related technologies to market.
Source: Northwestern University

Posted December 24, 2006 by LostAbaddon in Physics News

日志0126——创造奇迹的平安夜   Leave a comment

今年的这个平安夜相当的神奇,可以说充满了魔幻元素,直接就让我想到了DISNEY的现代童话。
 
本来认为今天这个圣诞前节会非常平淡——再次在电影中度过。
下午的时候曹大哥问我晚上有没有活动,约好一起出去吃饭。本来以为是我们寝室的聚会——一个惯例——但是今年人很难找齐,大家都不知道在哪里了,所以就只能是我们这个楼面的人一起出去吃饭。一些人由于有事情没有来,所以第一批出去的人为5个。
走的时候我想到了大三上最后一天在本校吃的所谓的“本校最后一餐”。那天一个寝室除了四班的FK和在德国的DD没有到,别的人都到了。那天也很快乐的。
来到了闵行镇以后就出去四处找吃饭的地方,这里就开始戏剧化了。
我们来到一排都是饭店的地方,一开始没有看到左面的饭店,直接就去了马路对面,然后在那里看了几家,范都说不喜欢他们的菜从而没有进去。走不多远看到了原来我们前面所过来的地方也有一家看起来不错的饭店。曹大哥提议到对面去,因为我们当时所在的一面看上去已经没有什么比较好的饭店了。当时我看了看前面,感觉前面说不定会有适合我们的饭店,便提议大家继续往前看看,大家也都同意了。走没几步,就发觉很是失望,打算回去过马路。就在这个时候,江江看到了我脚下有一张很熟悉的纸头。天色已经有点暗了,我捡起来一看,是一张100元的人民币,而且还鉴定是真钞。左右环顾,竟然都是我们这帮人,没有其他人。显然要等所谓的失主出现是不大可能的了——等他回到家数数钱包发现没了钱就不知道是什么时候的事情了。要很道德得去给警察叔叔也不可能,一来这里周围根本没有警察,二来我们不是那么高尚的人——如果是一万的话就要考虑是不是打110了。然后想想交给周围的人吧,就算不是肉包子打狗也是羊入虎口,然后我们估计没有得到圣人的光环反而拿到了白痴的标签。
其实,如果我们足够高尚的话,大可在那里搬张凳子过来一边喝西北风一边等失主,但是考虑下来这基本是找麻烦。
这里周围是居住区,但是这个地方本身前不着店后不搭铺,在这里的钱很可能是被风吹过来的——很难想象一个人在马路中间拿出钱包来摆阔。当然咯,较真的话可以说他是在这里掏手机出来打电话来着。随后考虑他发现少钱的时间,那就真的不知道是什么时候。而发现少钱以后出来找的可能性呢?不大。当时是晚饭时间,等发现了至少也是晚饭以后,天色已暗,显然出来找也无济于事——除非是一万。找的话要找到这里就更有难度了。一天活动无数,就算下班的时候或者买菜的时候数过钱,那么从最近的菜场或者工作地点到这里中途可能的购买地点或者掏手机的地点不计其数——今天是平安夜,掏手机会很频繁的。钱上也没有特殊标记,显然不可能存有找回这笔钱的希望的,这点失主也应该明白。如果是整个钱包都掉了,反而容易找到——相对来说的。
上面这段看似推理的东西其实完全就是在为我们贪小便宜找的借口而已。
总之,我们就拿了这笔前去对面消费了。
这里有许多偶然因素,比如如果我们事先看到了这家饭店,或者我们在那里的时候听从曹大哥的意思直接过来了,又或者江江没有注意到我脚下的异常(他视力很不好的,也没带眼镜),那么我们就不可能这么幸运。
在饭店点完菜的时候,小龙他们打电话来询问情况,最后也过来了。
他们点的菜是在我们之后加上去的。
我们叫了6份他们叫了3份,然后一共喝了6瓶酒。算下来,最便宜的菜也是12的,他们后叫的菜则都是20+的,而老板在算帐的时候居然说是126,元帅还把6块钱零钱给要了回来,一共120。出门以后我就立刻对大家说:我们得便宜了。
显然,服务员没有把两次分开点的菜算到一起,因而第二次点的3样菜等于是送我们的。
不过,这家饭店上菜速度非常慢,也算是一个惩罚吧。
元帅觉得很惋惜:早知道就多叫点菜了。同时另一个他感到惋惜的是:他特地找了一个漂亮的服务员来结帐,现在这个漂亮服务员要倒霉了。
这顿饭最后合下来是每人3块钱。绝对爽。
出来以后发现闵行这里一点娱乐设施都没有。想去K歌的,但是子阳大哥说一帮男人出去唱歌没情调。想去打保龄球的,但是球场关了。最后分两路走,一路去溜冰一路回来。我其实很想去溜冰的,但是小龙和元帅要回来,而他们没有钱。想想最近一次溜冰是三年还是四年以前(最近一次滑冰是两年前),真的很有冲动去的。
回来的途中在交大门口停留买东西吃,然后回来以后又去超市买夜宵食物,结果发现营业员少打了钱。一出超市我就对小龙说我们又赚到便宜了。橙汁5.7,花生2.8买了两袋,总共应该是11.3的,但是她却打出来成了10.1。
今天一天大便宜中便宜和小便宜都占到了,也真算是一个很平安夜的平安夜了。
最后,祝福一下无私捐献给我们100的好人,那位和蔼的服务员和亲切的营业员。

Posted December 24, 2006 by LostAbaddon in 世界叶

一天的小插曲   3 comments

这基本不能算是日志——真要算的话就是工作日志吧。
今天晚上从小龙那电影回来以后,基本是沉浸在了对美好电影的无限向往中。当然,这仅仅是一小段时间,不然也不能说是工作日志了。
晚些时候在进行3D的多体模拟程序的调试——这工作放在现在这个时候做真可以说是不合时宜到了极点了。
发现了一个非常严肃的问题,这个问题在2D的时候还不是很严重,但是进入3D以后就突然很严重了起来——其根源到现在我也不能完全解释清楚。
问题的发生是这样的:我用我的程序模拟10颗以上星球的时候发现程序卡在那里不动了。中断检查发现一切正常,然后(由于不可能达到每一毫秒中断一次这种高频率工作)写了一段调试的CODE来检查程序的运行路径——这段CODE写得我郁闷死了——结果发现程序在显示星球位置的代码段中卡死掉了。
这应该是不可能发生的。我给显示部分分配的时间间隔是计算部分的三倍——这个后来分析发现并不成立,因为两者的运行机制不同——因而应该不可能在显示部分中卡死才对。然后只能很郁闷地进行无谓的调试。发现在5个星球的时候模拟程序很正常,但是10个以上就卡死。理由应该是3D显示的坐标转换用掉的时间正好使得时间间隔被弥补,从而在多线程的“竞争机制”的作用下发生了卡死。
这里面的深层原因比较复杂,和触发机制有关。显示部分的触发机制是TIMEINTERVAL而另一个是DOEVENTS的句柄释放(这个是VB6不好的地方,也是用VB6来实现伪多线程的一个必然弊端)。显然TIMEINTERVAL的执行优先级高与DOEVENT的重获句柄——这也涉及到了一些比较基本的多线程的执行原理。这个问题原本是打算写一个模拟线程池的SUPERVISION模块的,但是后来用另外一个方法轻松实现了——看来也不需要完全模拟多线程的运行环境。方法就是在每次TIMER触发的时候将其触发开关关闭,在计算的部分中即将用DOEVENTS释放执行权的时候再打开。这样的话就保证了计算模块的优先级别高与显示。
这个实现方法是程序的特点决定的:本来就是设计着每运行好几步计算才执行一次显示的,因为显示部分使用的是延迟读取显示机制,所以没必要给予很高的执行优先级。这个问题在2D中不显著的原因之一是2D的显示模块相当快速,另一个原因就是运算速度也快。在触发机制的限制下,运算需要时间越长对运算模块越不利。
这个问题相当直观地展示了多线程的“竞争机制”的可怕。
把同样的技术运用到2D程序中,让程序的执行速度又一次提高了——本来就说了,时间都是浪费在显示上的——虽然提高的幅度不是非常明显。在3D显示上,这个技术带来的效果则相当明显——差不多就好比在中午看天上的太阳一样明显。
 
在构思程序的时候盯着运行着的程序发呆的时候突然想到:也许恒星系中的行星结构都是在差不多的平面上是一个演化的必然。
在看2D模拟程序的时候我就过了,可以把行星和轨道综合起来看成一个整体,那么基本就是多个椭圆之间的相互作用问题了。虽然这么看问题不能带来很精确的结果,不过定性的说明问题还是可以的。放到现在3D中也一样。把行星轨道角度差的演化看成轨道盘的“引力”相互作用,那么显然就是这种引力使得两个轨道盘相互吸引并且靠拢,那么最后一个恒星系中的行星轨道盘自然应该差不多都在一个平面上的——小角度差异是因为角度足够小的时候那种引力基本就可以忽略了:角度带来的距离差异相对行星间的平均距离已经可以忽略了。这从一个侧面反映了轨道盘之间的引力消散的速度远大与实际引力。如果能在天文上观测到某个恒星系中的行星轨道盘和其恒星系的平均轨道平面之间的夹角在做一个小幅振动,那么就更能证明我的理论了。不过,想想也知道这种观测的难度有多大——恒星附带的行星系的观测本来就是极其困难的,还要看这种长周期的效应,基本没可能靠一代人完成的工作要我一个完成就更是没可能了。
这里插播一下:想想人类很悲哀的,寿命如此的短,以至于许多宇宙方面的知识基本没可能享受到。然后再想想要在如此短的寿命中摆脱一帮子SB的束缚来获取所需的知识,用《K星异客》中的话说就是:真难相信人类能活到现在。最近在构思的一个小说(构思得很多但是写的很少)中就有这么一个主题:智慧只是进化树上某根不起眼的树叉的方向而已,进化的根本目的不是为了智慧。从这个角度想的话,人其实很悲哀的。自以为是进化的顶端,其实说不定只是进化中的一个失败的变异所导致的完全预料外的处理品——就像《宇宙骑士》中的D-BOY新野(貌似有可能是他弟弟,不过也一样)一样。其实,完全没理由认为进化一定会出现智慧,甚至于我们根本没理由说我们的肉体就是进化着那个存在——就像那多在《返祖》中说的那样,可能真正的进化者真正的“生物”真正的生命是DNA,而不是我们所认为的这具躯体。
 
在前面完成程序的更正的同时,构思了一下记录的部分应该怎么做。但是突然想到其实可能没必要记录或者说记录了也没用:显示要消耗的速度可能太大了,以至于记录和重新生成之间没有分别了。不过,如果是为了研究初始状态小扰动所导致的后果的话,记录还是有其存在的意义和价值的。
然后,还打算开发一个压缩程序出来。不打算用别人的。其实主要还是因为想自己构思算法,看看能达到多少压缩比。这也算是一种自我挑战吧——我一直都在做这种事情。
其实压缩这个部分我一直都没弄明白其原理。尤其是对于连文件的数据流所包含的特点都不知道的情况就实现数据的大规模压缩,在我现在看来很不可思议——如果已经知道了数据流的结构特点,要实现压缩倒不难。以前自己想过一些压缩的方法,后来听说都是早期人们所采用的压缩方法,也算欣慰了。对于现代的高级压缩算法我还一点概念都没有。据说用的是分形,但是从一个分形公式得到一个非常庞大包含无限细节的文件可以,从一个文件来找其分形公式我就感觉很不可思议了。
世界果然是奇妙啊,还有太多我想知道而现在不知道的东西等着我去知道了。

Posted December 23, 2006 by LostAbaddon in 世界叶

日志0125——CET6之旅   Leave a comment

十几分钟以前,CET6结束了。
其实没什么好说的, 不过为了配合一下昨天的TITLE,今天就写点吧。不然一直不更新我的SPACE的话会生锈的——早知道昨天就不起这个名字了。
 
今天的整体状态不是很好。昨天打乒乓刚完结的时候还没什么感觉,但是今天一觉起来以后就感觉不对了。连眼睛都感到了空前的疲劳,考试前的时候竟然都打起了瞌睡。听力的时候发挥不佳,几个短的倒还可以(和看定影的时候拼命听里面说了什么相比,考试的话绝对属于标准的广播剧),长的的时候突然就开始想睡觉了。然后模模糊糊的时候脑子里面竟然还在想之前听到的一个怀疑是错的的东西到底应该选什么——这可是做英语听力的大忌啊。长的三个前两个受到了影响,没有做好,第三个倒还可以。完了以后脑子里面一直想的是SHIT我电影看得还不够。
阅读部分基本没什么太大的障碍,前三篇都很快就PASS掉了,第四个话了点时间和脑子,因为又开始想睡觉了……ASSHOLE!
然后是词汇部分,很郁闷地发现依然有一半的题目是没把握的。不过要往好的方面想:上次CET的时候可基本是全部都没把握啊。
改错一直是我的弱项,每次都感觉仿佛都错或者仿佛都对,郁闷到了一个境界了。就点类似上次去面试的时候小龙说的:真想把它全改了。
作文就不说啥了,写啊写啊就激动了,然后回头一看,发觉基本没有按照规定的格式来……郁闷无比。CET作文现在已经上升为英语版的八股文了,也算是有中国特色的——我们国家别的不行,口号和形式主义绝对是宇宙第一的。能给个及格分就很HIGH了。
整体说来,比上次的感觉好。听力方面可能比上次弱一点,但是词汇和阅读应该比上次好不少,作文肯定是维持一般水平——我曾经连续语文考8次拿作文42,之后的第九次考试作文直接就没及格(显然我和这种八股文是一点缘分都没有的),因而整体成绩应该有望突破400(上次397),是否能达到425就没底了。
本来比较担心的时间问题没有出现。主要原因是阅读做起来很快。除了作文,别的东西在卷一收上去以前五分钟就OVER了,而作文在收上去以后十分钟做完。
 
昨天晚些时候把多体运动模拟程序从2D升级为3D了,不过在这个BETA中发现了不少问题——最严重的就是如果没有引入近大远小的机制的话根本无法区分2D和3D——这个想在想想是必然的但是在当初竟然一直没感觉到一刚,失败的。引入近大远小以后的效果也不理想。如果做成有恒星辐射然后给每个星球加一个抛光的话,3D效果会体现出来,但是现在则一点感觉都没有。所以在考虑是否在其下面做一个其在XZ平面上的投影,或者干脆就在最下面放上三视图。
计算速度方面,编程的时候有许多是需要注意的。基本感觉就是宁可放弃内存也要争取CPU。现在哪怕只使用一次的中间运算结果我也用一个变量来保存,整体速度算是提高了不少。从模拟结果来看,似乎不如2D的那么刺激精彩。想想也对,2D环境下星体碰撞的概率大了很多——在严格点环境下,其和3D下的碰撞概率比差不多是1比阿列夫1——一阶无穷小,微扰直接忽略的。想用这个程序来看看是否恒星系中行星盘都是在一个差不多的平面内的,但是现在看来有点困难。程序3D化的时候一个开关的参数调整现在存在问题——太小的话就在系统稳定以前结束了,太大的话直接告诉我溢出……

Posted December 23, 2006 by LostAbaddon in 世界叶