Search This Blog

Tuesday, November 07, 2006

vmplayer的bug?

需要一个window$,于是用vmplayer,但是跟上次一样的问题又来了,上次在vmplayer上装gentoo的时候也是无论怎么弄都没办法从iso启动,.vmx改了无数遍还是一样,一启动就dhcp了。突然注意到vmplayer打开以后上面的CD-ROM按钮是一个红叉,点一下以后就突然可以了,而且这是在.vmx里的ide1:0.startConnected = "TRUE"的情况下。不知道这算不算一个bug。还发现了一个sawfish的问题,vmplayer grab当前的输入期间新启动的程序sawfish似乎不能很好地处理,比如我先用win-o启动一个ooo,然后马上在vmplayer里操作,因为ooo启动比较慢,所以等ooo窗口出现的时候vmplayer已经grab输入了,这个时候如果再把ooo聚焦,sawfish的一切快捷键都会失效。

Sunday, November 05, 2006

An Introduction To Functional Programming Through Lambda Calculus

一共十章内容,第9章没看,因为第9章是ML,而第10章才是我感兴趣的common lisp。
这是我第一次接触λ calculus,我只能说,这本书写得非常好。作者展示了怎么样利用一个λ白手起家,先建立逻辑模型,再建立自然数模型,再利用这些东西,建立起其他的作为一门语言所需要的东西,类型,表,字符,字符串,复杂的数据结构等等,让我大开眼界。最精彩的我觉得是自然数的建立,因为之前几乎是空白,只有几个很基本的函数,identity,self_apply,select_first,select_second,由此构造出的and,or,not,true,false,然后,奇迹般地,就突然有了自然数,而且,每个自然数还竟然是一个函数。这是一个函数的世界,后来定义的加减乘除只是作用在函数上的函数,而乘方等运算又可以通过包装这些函数得到。这听起来很疯狂,但是仔细想想看,有什么不可以的呢?如果给我一个金属盒子,告诉我,插上电源,它可以运行一个叫linux的系统,那难道它不就是一台电脑吗?即使事实是盒子里躲了一只黑猩猩在狂按0和1以输出我所需要的东西,那又有什么重要的呢?只要对我来说它完成的是电脑的功能就可以了。再回到自然数,也一样,我何必在乎它是一个数字还是一个函数呢?只要我把1和2相加得到的是3,那就能满足我的需要了。
然后是lazy evaluation,这是我很早就听说过lisp采用的一种技术,书里讲得不多,只有一节,举了几个例子,所以理解并不是很深刻,我猜想,只有有了lazy evaluation,lisp才能成为可能,因为无论是normal order evaluation还是applicative order evaluation,都有其致命弱点,前者的重复计算太多,如果直接应用,估计速度会比蜗牛还慢,后者则很有可能导致计算无法终止,那对于实际应用来说会更致命,但是lazy evaluation很好的结合了两者的长处,只在需要时才计算一个λ expression,并且计算以后会代换每一个该表达式的occurence,所以也被称为call by need。
我只能用神奇来形容λ calculus。

Saturday, November 04, 2006

加了块硬盘

st 7200.7 sata 120G
插上,重新编译内核,加上sata支持,重启,开始一切正常,但是系统服务启动完了以后就kernel panic,怀疑是硬件问题,然后把硬盘拔了,还是一样,再用旧内核启动,还是一样!这下崩溃了,以为是硬件出问题了,然后在启动服务的时候按I,跳过服 务的启动,直接开一个shell,发现是没有任何问题的,所以就怀疑是某个服务出了问题,然后又重启,只加载几个自己认为必要的服务,也没有问题,后来把 vmware一开,又是死机,就最终锁定目标了,把vmware去掉,再正常启动,就没有kernel panic了,但是关机或者重启的时候只说:INIT:no more processes left in this runlevel,然后就没反应了,只能手动关掉电源,最后是reemerge了sys-apps/sysvinit以后才解决的。
哪儿来的问题?似乎都是跟硬盘没关系的,却偏偏在我插上硬盘后一起冒出来。vmware到现在还没搞定,还是一开就死,只能暂时不用了。