Monthly Archives: 九月 2006

给VMWare的虚拟机启用3D加速

虚拟机选择Windows 2000或者XP guest操作系统。注意:不要对已经启动或者被挂起的虚拟机启用Direct3D。 给配置文件(.vmx)添加一下内容: mks.enable3d = TRUE 这一行将启用宿主的3D加速。不仅对于寄宿机支持3D加速是必要的,同时也可以让宿主对寄宿机的显示区域启用2D加速。 你可能还需要加入以下几行: svga.vramSize = 67108864 这一行将虚拟显卡的VRAM量增加到64MB。增加VRAM有助于减少寄宿机的延时。最大值为128MB。 vmmouse.present = FALSE 这一行将禁用寄宿机中的绝对定位设备。需要用到DirectInput相对模式的应用需要将寄宿机的绝对定位设备关闭。实际操作中,这只针对一些全屏的3D应用(例如,像第一人称射击之类的实时游戏)。注意:如果你设置了vmmouse.present选项,你还需要关闭Preference设置对话框中的Input标签页中的motion ungrabbing(移动时释放鼠标捕获)设置。 若要为vmmouse.present关闭释放捕获,请按以下步骤: a. 选择 Edit > Preferences. b. 点击 Input. c. 取消 Ungrab when cursor leaves window.

The Vision

看了Nicholas的这篇梦的记录,我也想写一下,这是好几天前做的梦了,但是还是要写一下。那简直就是好莱坞大型科幻片。大致的内容是: 某种 未知的力量——可能是外星人,也可能是神——将美国的太平洋舰队传送到了俄罗斯的军事港口,而把俄罗斯的舰队传送到了美国的军事港口,我当时站在俄罗斯的 港口(也可能是中国某港口)附近的大楼上,看着成群的舰队莫名地凭空出现,巨型的航母、舰队在眼前慕为壮观,而当了解了那是美国的舰队之后,感到了无名的 恐惧,然后可想而知,不知是哪一方先开火,整个港口乱成一团,双方猛烈的攻击着,甚至一些舰船直接冲到了岸上。而我便和大家一起,沿着一个圆形的楼梯一直 往下一直往下走,逃往一个地下的区域——似乎,这已经是世界末日了………… 这是一个,还有另一个则很有生活情调,我走在马路上,应该是类似西方电 影中常出现的那种小路,路两旁是很高的白色栅栏,人行道上或有一些小树。我走到了一个商店门口,商店前有较长的台阶——目测门离马路约20米,高2米,商 店门面类似于肯德基,左边是门,右边整块都是玻璃,我可以透过玻璃看到里面有一些小资妇女在吃着一些甜点,她们应该是坐在沙发上——也是类似于肯德基那种 和墙壁合在一起的沙发。于是我也走进去,问服务生要东西吃,她说,这些点心都是免费的,随意吃,于是乎,我就坐在那边的沙发上吃了起来,而后,有人(一男 一女,男的很瘦,很高,女的则约是中年)请我去这个店内庭去吃东西,里面起初十分狭小,而后我们吃了点东西,进入了一个十分旷阔的类似于体育馆的地方,而 我觉得,更像是没人的火车站,而这里面却有一些小孩玩的那种小型游乐场(肯德基、麦当劳那种)。 我并不清楚这些意味着什么,不过,记录自己的梦境,却是一件很有意思的事情。

Squid 2.6配置的注意事项

前一阶段Squid推出了2.6版,在缓存机制上有了更好的统一,将反向代理和正向代理统一在了一起,但是也有一些问题。 第一是反向代理配置方式改变了,去掉了httpd_accel_*这些配置,而改用http_port和cache_peer等配置来完成,例如: http_port <ip>:<port> defaultsite=<hostname> [vhost] [vport] cache_peer 127.0.0.1 parent 80 0 no-query originserver 有了这两条,就可以实现反向代理了 第二如果Apache有身份验证的话,Squid 2.6可能并不会将Authorization的HTTP头发送给Apache,所以我在Squid 2.6后配置Apache + Subversion就无法使用身份验证——这个目前还没办法解决。 第三是Squid 2.6的基于IP的反向代理服务器的配置改变,也就是Squid 2.5中的httpd_accel_host virtual,在Squid 2.6的方法是命名多个parent、originserver的cache_peer,然后配合cache_peer_domain来指定对不同域名发送到不同的上游服务器; cache_peer 192.168.0.3 parent 80 0 no-query originserver name=a cache_peer 192.168.0.4 parent 80 0 no-query originserver name=b cache_peer_domain a .example.com cache_peer_domain b .test.com 需要注意的是,每个cache_peer都必须至少有一个cache_peer_domain分配到其上,才能真正实现类似virtual的配置。

Cache_Lite的检测缓存失效

PEAR组件Cache_Lite是一个很实用的文件缓存组件,我在PHP编程中常常用到,现在我常需要检测某个id的缓存是否已经失效了,而Cache_Lite本身并未提供这样的功能,因此我写了这样一个函数: function isExpired(&$cache, $id, $group = ‘default’){ $cache->_setFileName($id, $group); return !file_exists($cache->_file) || filemtime($cache->_file) < (time() - $cache->_lifeTime)); } 使用也很简单,应该一眼就能看明白。当然也可以通过继承Cache_Lite,并添加一个方法来完成。

Currying的翻译

函数Currying,是我所一直不能确定的英文翻译之一 ,另外还有一个Web的翻译。 函数Currying的意思就是将参数和函数关联起来,变成一个新的函数。比如一个二元参数f a b 当给出f 1的时候,应该返回什么呢?一般的语言中,要么是将b设为一个默认值,要么就是直接出错,而当有了Currying,那么f 1其实返回一个函数g x = f 1 x。 当然这个描述也不够好。 其实其命名是为了纪念一个逻辑学家 Haskell Curry 的――函数式语言Haskell也是为纪念这个人,当然这个东西并不是他第一个发现。 既然作为姓名,数学中可能不会进行翻译,就叫做Curry化,或者柯里化,不知道还有什么更好的翻译方法,能较为直接地体现其真正的含义。

JavaScript高级程序设计

基本信息 【英文名】Professional JavaScript for Web Developers 【作者】Nicholas C. Zakas 【译者】曹力 张欣 【ISBN】7115152098 【出版时间】2006-9-15 【页码】670 【原出版社】Wrox 【简介】本书从最早期Netscape浏览器中的Javascript开始讲起,直到当前它对XML和Web服务的具体支持,展示了如何充分利用这种功能强大的语言开发自己的应用程序,以解决当今Web开发者面对的商业问题。 活动主页 译者序