Author: qingbo

  • 在农村见过的小孩怪病疗法

    刚看了 “Predictably Irrational” (不知道为何国内出版的译本叫“怪诞行为学”,而把正名作为副标题),里面提到许多当今美国的外科手术可能只是安慰剂(placebo)。多数人都会承认,心理在疾病的发展和治疗过程中起很大的作用。我从小在农村长大,由此想起一些在城市里早已消失的“古法”治病方法。

    在我老家那块儿,小孩有时候出现发烧、啼哭不止、不想吃饭等症状,很多会找神婆去看,甚至现在在农村生活的年轻人仍然相信这一套。神婆一般都会把发病的缘由归为“被吓着了”,“冒犯了某位过路的神仙”之类的原因。解决办法就是拿一些黄纸、蜡烛之类的到某个特定的地方去求神。各人用的方法倒是有所不同。

    我清楚地记得有一次我弟弟发烧,一个奶奶来我家,找一个小碗装满小米,用红布包起来,倒过来拿着在弟弟脑门上转来转去,嘴里念念有词。过一会,小心地把碗放正,揭开红布,看看小米上显示出了什么图案。那次说是弟弟在河滩里玩被吓着了,于是就去河滩里烧纸求神。我那时年纪也小,不记得弟弟的病是怎么好起来的。不过我记得我在小米上什么也看不出,不知道那位奶奶是怎么看的。现在想想,上面显示什么跟那块红布的褶皱最有关系吧。

    我不知道这个算不算是安慰剂,因为那么小的小孩,还不懂疾病与治疗,不懂自己会冒犯神鬼,神仙可以消除病痛。但是至少这个对小孩的父母是强大的安慰剂。

    我姥姥在这一行里就远近闻名,很多邻村的人遇到小孩得病甚至有时候大人有了怪病都去找她看。我妈对之笃信不疑,说我姥姥跟一个大仙有奇异的关系,看病的时候大仙就上身了。一个故事就是有一次姥姥去我家坐在里屋,大仙上身了,嘴里胡言乱语。正好我奶奶进门,听见里面有人,把手里拿着的东西放门后面才进里屋。我姥姥很不高兴,说我奶奶拿着东西还怕看见。听说我高考的时候,我爸妈还点了香火,求大仙帮我呢。不过是在我知道成绩以后,我妈才告诉我……

    姥姥家院子里有一棵槐树,估计有一百年了。在农村这样的老槐树没有一个不是神的,这棵当然也不例外,我表弟甚至认了这棵槐树作干爹。我也很喜欢这棵槐树,看它枝繁叶茂,夏天的时候整个院子都是阴凉,但是还没有发展到父子之情的程度。大约六七年前的一个春节我和表弟一起去姥姥家,表弟就点了香火去拜干爹,说去年事情不太顺利,希望你保佑我今年事业发达云云。还没拜完呢,一个亲戚匆匆忙忙地跑来找他,说他某地的店铺被贼破门而入……我当时忍住了没笑。这巧合,正如小孩被神婆看了之后病情好转一样。

    小时候每次去姥姥家,有个感冒之类的小病,姥姥就教我们跟大仙求医。在一个桌子上点了蜡烛、香,折一片黄纸,用火柴盒夹着放在前面,拜上几拜,说些求大仙治病的话。等香烧完,把黄纸拿来抖一下,药就在中间了。我从来没见过里面出现药,可能是我心不够诚吧。舅舅说他见过比较明显的一堆粉末,我想那得需要这个纸上抖落多少灰烬啊。

    等到大一点我就完全不信这个了,有一次调皮还偷偷在姥姥供给大仙的鸡蛋上咬了一口。

    我所见过的这些“神婆”,倒都没有以盈利为目的。比如我姥姥,从来不会收钱的,有些人会送点东西给她,大部分都是没用的,最好的也就是一包饼干之类,姥姥家至今还是比较穷的。我不知道为什么他们要信这一套,冒昧猜测一下,也许是故意或者无意的人格分裂、幻想吧。几年前姥姥得了半身不遂,大仙却没有帮她。可是还是有人带着小孩让她给看病。

    十几岁的时候经常想,为什么在城市里就没有人得这么奇怪的病,需要神仙给治呢?其实并不是城市里的孩子不得病,而是得了病不这么解释成“吓着了”、“冒犯神仙了”。应该是现代医术落后的情况下,人们只能寄托希望于神鬼了吧(找我姥姥看病的人都说吃药不管用)。

    农村还有许多其它的传说,比如我爸作为一个老师也曾跟我说有个人“鬼上身”了,说一些他自己根本不可能知道的那个死人生前的事。但是传说很多,我却没有亲眼见过任何一个,只好暂时不信了。也许这是真的吧,没事,总有一天会搞清楚是什么原理的。什么事都有来由,把它归为神鬼只是一个安慰而已。就像我们程序员看到一个 bug 的时候不能说“这是一个奇迹”。

  • quicktime的安装过程没有完成 itunes要求安装quicktime

    用电脑最烦的一件事就是出了问题,软件给的出错信息没有任何信息含量。这个技能,微软是最拿手的了。不过苹果有时候也学得很好,比如最近在一台 Windows 7 系统被折腾得比较乱的电脑上安装 iTunes 时,安装失败就给了这么一条信息:

    quicktime的安装过程没有完成 itunes要求安装quicktime

    这意思明摆着就是让你放弃吧。但我没有放弃,后来发现是因为这个系统里面安装了各式各样的播放器、解码器。打开“添加删除程序”,把所有看着像音频/视频解码器的东西统统删了,再安装就没有问题了。

    本来装 iTunes 是为了同步音乐到 iPod 上,不过后来发现 Ubuntu 里带的 Banshee 就可以同步 iPod 而且还比较好用,于是不再需要到 Windows 里同步了。不得不说,Ubuntu 做桌面已经比较成熟(11.04 里的 unity,个人认为非常垃圾,已切换至传统的 gnome. 不知道 gnome 3 如何)。

  • 两半西瓜

    昨天中午进小区门口的时候,在水果摊买了半块西瓜。老板当下给切开一个西瓜,给我一半。

    老婆晚上下班回来路过小区水果摊,也买了半块西瓜。因为她把手机忘在公司了,所以不知道我也买了。等她把西瓜拿回来,我一看,似曾相识啊。搬出我买的半块,凹凸一致。往上一扣,真是天生的一对:

    西瓜

    看来老板的西瓜卖的不是太好啊 🙂

  • 租车自驾游装备

    [本文有特效无法在 RSS Reader 里展示,请查看原文]

    • GPS摩托罗拉 TN30,当时在京东看了不少,那些国内品牌总给人一种山寨的感觉,集成许多没用的功能。Motorola 也许会做点像样的东西吧,于是选了这个(我的第一件 Motorola 产品)。

      导航绝对不是摩托罗拉的强项,这个产品据说只是做出来试水的。它也并没有脱离山寨的品位,内置了很烂的音乐、电影播放器,超级垃圾的游戏。最早的版本只有摩托罗拉开发的一个导航软件,超级烂且没有后续地图数据更新。现在的版本都带了一张 2G 的 MicroSD,同时带一个 SD Adapter,里面装了灵图,第一次使用的时候需要激活。我换了一张 4G 的 SD 卡,在这里更新了数据,似乎一直免费的吧。这个帖子介绍了如何安装更多程序,有兴趣可以参考。

      灵图程序手写功能偶尔会导致崩溃,导航启动时搜索卫星也比较慢,有时候发现它还会找错地方,硬重启一次即可。彻底关闭的方式是一直按着电源按钮,先响一声,看到屏幕关闭,再过几秒橘色指示灯闪烁,表示已经完全关闭。

      支架看似是硬的,实际上是可以弯曲调节的,用力即可。这个力度正好可以让导航仪在颠簸中不会变位置。触摸屏要用指甲操作才流畅。总体来说,性价比很低的一个东西。

    租车装备

    • 公对公音频线秋叶原墨玉版1.8米。用不着这么长,不过这是质量比较好的里面最短的了。还有更贵的贝尔金的,太不值了。插 iPod, iPhone 的耳机口松紧正合适,另一头插入车的音频输入,按 AUX 键或者有的车是长按音源键即可切换,音量也合适。iPod, iPhone 控制音乐播放非常方便,又能听自己平时听的音乐,当然了也可以接其它的 mp3 player, 只要有3.5 mm 输出。

    • 先在京东上发现有专门给近视人士做的偏光套镜,不过怕不合适。去潘家园眼镜城买了个,品牌不一样,便宜点。这种偏光套镜据说都是一样的尺寸,反正我近视度数比较高加散光,镜架形状是普通的,套上这个正合适,而且很轻,没有感到不舒服。

  • qingbo.net 最近的更新

    首先加了分类的功能,其实一开始设计的时候就有,数据库里相关的表都一直存在,只是当时觉得分类其实没太大作用,搜索可以解决一切问题。现在想想,按分类浏览有时候还是很方便的,于是把它放了出来。不过自从由 WordPress 迁移到自己搭建的平台,文章都没有分类,以后再整理吧。

    可以在文章里画箭头指向图片上的某个区域,画线的部分已放在 GitHub 上,所有代码其实都可以查看源代码得到。详细介绍见上一篇文章 “autoarrow.js“。

    图片上可以标记区域加 note,和 Flickr 基本一样。我是完全用 CSS 实现的鼠标悬浮等效果,没考虑 IE 的兼容性。

    后两个效果不能在 RSS Reader 里展示,所以如果用到了这两个特性,在 RSS 输出里加了提示。具体例子可以看文章“人体工学键盘+笔记本支架

    其它一些小的更新:

    • 写了一个 Python Markdown 的 extension, 如果链接是指向站外的,加上属性 target="_blank"
    • 评论不再支持 Markdown,使用纯文本,不会有链接,不会有任何样式了,只有换行。
    • 后台写文章的界面应用了 pagedown,写 Markdown 稍微方便了一些。这个项目就是 Stack Overflow 的那帮人维护的,基本上是把 SO 用的那个编辑器及预览功能剥了出来。
  • autoarrow.js

    写了个简单的 JavaScript,可以指定 HTML 页面上的一个元素作为 container,从里面的任意元素向里面某个图片的一个区域画箭头。名字就叫 autoarrow.js 吧,放在 github 上,点过去可以看到简介、截图,里面也有一个简单的例子。依赖 jQuery, 不过我不太熟悉怎么做成 jQuery 插件的形式,就这么凑合着吧。

    Showcase

    以下几篇文章可以作为演示 (如果你看不到可能是缓存问题,强制刷新一下)

    大致原理

    创建一个 canvas,位置、大小完全和 container 一致,但是 z-index 是负数,这样它就在 container 显示层的下面,设置 container 背景透明,所以能够看到 canvas 上的东西。如果 canvas 在 container 上面,则会影响 container 里的文字选择等操作。

    因为图片一般是不透明的,所以把区域内的图片都设置 z-index 为更小的负数,但暂未考虑其它不透明元素。

    计算出箭头起点区域和终点区域的坐标,用一种很简单的算法计算起点、终点到底从哪个方向画出来。这样在接口参数中,起点只需指定起点的元素,比如 $('#anchor-1') 这样的,终点只需指定图片和目标区域(一般是图片上的一个物体)。无需考虑排版变化之后需要重新“布线”的问题。

    执行时机

    使用这个脚本的时间问题。最初我选择在 jQuery 的 ready 事件中执行:

    $(function() { ... });
    

    随后发现在 Chrome 里,图片还没有加载就开始画线了,而如果这图片的大小是事先未知的,就不能事先指定其尺寸,图片加载完成会造成重新排版,就全乱了。

    正好 jQuery 还提供了一个 .load 事件,这个可以在所有图像加载结束之后执行,正适合这个场合:

    $(window).load(function() { ... });
    

    如何方便地取得图片区域坐标

    这只是一个小工具,如果想在动态程序中应用它,所需的额外工作还不少。比如怎么选定图片的一个区域,得到它的坐标并且保存起来,好在显示页面的时候使用?这方面的插件有很多,imgAreaSelect 就是很好用的一个。

    如何让编辑器辅助该功能

    如果想在可视化编辑器里加这么个功能还真有点麻烦。我这个 blog 后台一直在使用 textarea 里写 Markdown 的形式,所以就不用可视化了。我写了一个 Python Markdown 的 extension, 使用这样的语法 {链接文字-->1},意思是把“链接文字”这段字作为起点,指向数据库里保存的 id 为1的区域(这个记录保存了图片地址,区域坐标,通过这些信息可以定位)。插件会把这段标记翻译为:

    <span class="pointer" id="pointer-to-1">链接文字</span>
    

    在页面加载完成后的事件处理中,就可以通过 pointer 这个 CSS class 找到所有的链接起点,每个起点又可以通过其 id 分析出指向的区域,就可以应用 autoarrow.js 了。

    应用场景

    说明书或者产品介绍之类的东西吧

    尚存在问题

    • 线条不够美观
    • 没有找到一种办法可以让线条醒目,同时在文字区域又不太影响阅读
    • 没有考虑 container 里有许多复杂的不透明元素的问题
    • 只在 Firefox 6 和 Chrome 13 里测试过
  • 人体工学键盘+笔记本支架

    [本文有特效无法在 RSS Reader 里展示,请查看原文]

    祖宗不知道繁殖了多少代,终于让我们直立行走,进化成人。为了避免退化成程序“猿”,这几天购置了两件新玩意,一个是微软的人体工学键盘 4000,另一个是安尚笔记本电脑健康托架,支架主体被电脑挡住了,可以去 amazon 看。

    my workspace

    两个东西设计都非常好,一个字 – 值得拥有。分别介绍一下:

    微软人体工学键盘 Microsoft Natural Ergonomic Keyboard 4000

    1. 掌托表面的材料不是塑料,柔软,很舒服。
    2. 除了弧形起伏及左右手分离的设计,它与普通键盘最大的区别是有个很厚的底座,位置在靠近身体的一方,所以键盘是越靠近身体越高(反坡度设计)。这样在打字的时候,手腕架在掌托上,手掌有点自然下垂的感觉,非常舒服。使用普通键盘的时候,总感觉需要用点力向上抬手掌。当然这个底座可以拆掉,但掌托还在,还是比普通键盘舒服。前面还有两只脚,可以在拆掉底座的时候打开。如果在有底座的时候打开,键盘无法稳定在桌面上。
    3. 数字6键在左手区!一时半会没法适应,包括打省略号……
    4. Linux 支持 – 在 Ubuntu 11.04 系统中,至少在 Firefox 里实验可以直接支持前进、后退,还有书签 (My Favorites) 三个建,缩放滑块无效。更神的是 Web/Home, Search, Mail, Calculator, 音量竟然都可以用,还有播放/暂停建可以控制 Banshee 和 Totem,即使是程序在后台!不知到是哪个程序在控制。
    5. 光盘上标着里面有 for Mac 的软件。
    6. 不知道为啥京东之类的全都不卖这个了?我从新蛋买的,拿到包装是全英文,不知道是啥渠道的,上面还有撕掉的中文标签,剩下一个字。想买的同学从速吧。

    安尚 (actto) 笔记本电脑健康托架

    1. 颜色很深沉,没有 amazon 图片里那么鲜艳
    2. 设计非常好,简约大方,占地面积小
    3. 灰色的是类似橡胶的材质,防滑。设计巧妙也体现在不管调整到什么角度,后方的两个橡胶脚都是着地的,而靠近身体一方是一对弧形的防滑带(就是灰色的那种材料),角度高低都可以防止滑动。
    4. 前面挡板的高度差不多3.5厘米,也是防滑的橡胶材质。我这笔记本也算厚了,还空余一大截。我感觉即使笔记本前面是弧形也不用担心滑下来。当然,前面如果有接口会被挡住。
    5. 调节角度很简单,固定后放上电脑也很稳定。就是不知道能承受多大重量。
    6. 不带散热器。我不需要这玩意,以前用一个 MacBook Pro 热到烫手好像也没啥事啊
    7. 承重支架有个缝,说明书介绍是辅助走线的
    8. 包装全是韩文,不过是 Made in China
    9. 在 Amazon 买了托架付钱之后,发现其实把笔记本放在音箱上面也挺好的,不过既然买了就用吧,放上面也更稳定一些。这个笔记本除了配置低,没有无线网卡(买了个 USB 无线网卡)之外,还有个缺点是屏幕张开的角度有限,这就是为啥我在支架下面垫了 Wii 的盒子。托架本身可以变换角度把电脑支得很高的,只是那样屏幕就正对键盘了……

    关于人体工学键盘,还有更高级的,比如 Amazon.com 上卖的这个 Kinesis Advantage USB – Keyboard,我去美国的时候看到有个同事在用,不过没想到要 $269,性价比太低。

    新键盘打字非常之舒服,除了个别键位需要重新适应。把屏幕支撑到合适的高度,可以挺胸抬头做人了。为自己健康工作五十年!

  • 911 十周年

    十年前这天还在上中学,911袭击发生的时候在中国已经是晚上了,我们第二天才知道。记得大部分同学都特别兴奋,庆祝美帝国主义被打击了。没错,南斯拉夫大使馆被美国人炸了,我们上街游行,还举着“打倒美帝国主义”的标语。

    去年有机会去美国,在波士顿旁边一个叫 Newton 的小城马路旁边就看见一个911的纪念碑,类似的纪念碑在整个美国肯定有不少。后来到了纽约,世贸中心遗址还在施工,应该是在建纪念碑吧。911给我留下的印象除了狂热的兴奋之外没有更多,即使到了遗址也没有太多感觉,虽然我已意识到当初的兴奋是多么变态。

    回来之后一个晚上我又开始看911的资料,从网上找了各种视频及录音。看到大厦在烈火中倒塌,烟尘将曼哈顿覆盖,开始体会到美国人当时的痛苦。记得在网易公开课上看到 MIT 的 Introduction to Algorithms 课程第三节似乎正好是2001年9月12日,Charles Leiserson 教授在讲课之前讲了好久与恐怖袭击相关的话题,声音哽咽。大致记得他说如果你有亲人或朋友在纽约,今天不来上课可以理解。他还劝大家都去献血,有机会来美国最好的大学读书,现在是回报社会的一个机会。别说“我来读书已经交过钱了”,在这里读书的花费远超你交的学费。可惜这个视频已经被替换掉了,如果谁有原来视频的话请分享一下。

    最后推荐此文——双子塔与清真寺——美国的十年之殇,并盗用图片:

    世贸大厦纪念光柱

  • AVIS国际租车体验 – 八达岭野生动物园

    [本文有特效无法在 RSS Reader 里展示,请查看原文]

    咱不是北京人,连暂住证都没有,严格说这就叫偷渡吧?本来想混个五年,求人给个买车买房的机会,结果发现前两年的个人所得税都交到上海去了。在咱社会主义,一个好处就是除了拿工资都不用缴税,所以我这两年根本就不是北京的纳税人。扯远了,嘿嘿。4月份和老婆同时拿到驾照(没学车的同学们赶紧的,推荐东方时尚,不用费脑筋考虑贿赂教练。别的地方看似便宜,加上隐性的就贵了),一直没怎么开过车。前阵子找了个周末,事先在 AVIS 订了车,又在团购网站买了59元一张的野生动物园门票。

    从来没租过车,加上国内环境恶劣,订车之前还在网上查了好多评价,发现其它的租车公司都有人遇到一些不愉快的情况。也许是有的人真的开车不小心,故意给租车公司恶评。但是我有个朋友亲身经历,倒车不小心碰了一下,收车的人要好几百块钱(停驶费),他给了对方一点钱(当然进个人腰包了),就说没事了。有这个情况发生,肯定也就很容易出现恶意勒索的事情。了解到这些心里比较忐忑,最后选择了虽然比较小但是没有负面评价的 AVIS. 网上关于真实租车体验的文章特别少,大多都是租车公司自己的 PR,也许大家都很忙,只在有牢骚的时候才来发泄吧 🙂 我分享以下自己的经历,也算给别人点参考和帮助。

    我们在 AVIS 建外 SOHO 店(离永安里地铁近,从国贸要走一段)取车,店面很小,店员态度很好很热心。用身份证、驾照、信用卡(预授权5000,还车取消)办完手续,店员把车取来停在门口,比较细心地帮验车并在验车单子上对已有划痕作标记。租金里已经包含了基本保险,他们还提供更多保险,我买了 CDW1, CDW2, WDW,比较放心……GPS 是15一天,我自己在京东买了个带着。没开过自动档,他简单给我介绍了一下。订的是雪佛兰新乐风:

    从AVIS租到的车

    刚上路比较紧张,一出去上了建国路转三环,前面又是国贸那么复杂的路口,我差点就从掉头的道走了,晃晃悠悠拐回转弯道,晃晃悠悠上了三环主路。从三环往京藏拐,比较堵,第一次挤着并线,很费劲很紧张。出了收费站又要挤着并线,差点追尾。离开收费站就好了,过了一会就熟悉了,并线、超车都很简单。一开始我还按新手规矩,不上快车道,后来发现有的车实在太慢,就破戒了……除了自己安全行车外还得注意,乱开的车太多了。有开个破跑车乱窜的,有从应急车道超车的,最危险的是车身很长的公交车或者卡车还没超过我就开始并线。

    终于开到野生动物园,很有成就感。可是一不小心开到自驾的入口,我们原本不想开车进去,怕车被猛兽划一下子麻烦,不过既然到了门口就一狠心,花35块买了个车的票开进去了。这时发现一个很郁闷的事,油量到红线了,没经验不知道能跑多远。硬着头皮走吧,千万别没油困在猛兽区了!

    以下插入野生动物园照片:


    彷徨的白虎,凶悍的黑熊,威猛的狮子

    IMG_5582
    黑熊
    狮子
    狮子

    马来熊很可爱,嘴馋,据说会开车门,吃东西时坐地上双手捧着吃(还是有不少人投喂的)。鼠标放图片上看台词(blog新功能,如果看不见请强制刷新网页)……

    IMG_5600

    动物园里独特的创收方式。小老虎像鸡一样被关在笼子里,游人来拍照就揪一只出来,任由人摆弄姿势。小老虎明显不舒服,有时候腿着不了地乱蹬,游人全然不顾,伸手做一个“二”的手势拍照。它们一天不知道被多少只脏手摸过……起码你给人戴个一次性手套!

    被虐待的小老虎

    离开猛兽区,停车去看了猴子(好玩还得数猴子)。

    猴子


    第一次停车,走了半个广场才想起来忘记锁车了……看完猴子之后匆忙开车下山,路上的温顺动物都没仔细看,怕没油。

    出门之后直奔加油站,说加20升,他们说你凑个整钱,我就问20升大概多少钱,他们算了一下,说170吧,我就加了170. 我下车一看,7.85一升,他们数学学得真好。加好油之后上高速,去小汤山旁边的九华山庄住了一晚上。去八达岭的时候没感觉上坡,但是回来路上好像坐飞机似的,耳鸣,搞得晚饭都没食欲。第二天早上起来出发做了个错误的决定,打算去小汤山吃早餐,结果往那个方向一走就堵住了。过了好久从旁边叉路出去,绕了个大圈,跟着一个跑车在非机动车道上逆行终于逃脱,耽误了不少时间,直接就上高速往 AVIS 门店方向走了。导航让我从国贸桥右转到建国路,然后掉头。可是到了建国路,发现已经禁止掉头了,还站着警察叔叔。又绕了个大圈,最后终于到了 AVIS 门口,第一次自己开车一路无事,心里觉得这真是个奇迹,可是它就是发生了(当然有老婆在旁边做观察员)。

    这次收车的是个 MM,直接让我开到地库,简单看了一下就办了手续。取消那个5000的预授权后又做了500的预授权,作为违章押金。AVIS 的里程限制比较低,只有200公里每天,这次我们控制得真完美——199公里……出门后不久发现 iPod 耳机线丢了,回去后店员 MM 又陪我们到车里找回来。

    正好第二天拍婚纱照,回家才知道也要用车,让工作室帮忙联系的话一天350,这还不如自己租呢,于是我又打电话订了一天。第二天取车,店员(还不是前次收车的那个)还记得我还车的时候油多出来不少,因为租的是和上次同一辆车,还按第一次出车的时候油量,并且算上他们出去洗车之类的,又减掉三个。这样的态度真的让人感到非常舒服!在办手续的时候他们会提醒如果多加油是不退的,但发生了之后还是会站在客户的角度考虑问题。这次还车的时候,是把手机忘在副驾驶位了,收车的帅哥把车开到地库后发现了,回来给的我。

    几点补充……

    1. 虽然学的手动档,在市里新手上路开自动档还是挺好的,操作简单不用费心,可以有精力去观察周围的情况。并线的时候需要加速也简单。要是手动档,手忙脚乱的容易出事。即使自动档我也在动物园门口想刹车的时候踩了油门……

    2. 似乎有个租车公司(好像是1hai)不让新手买这种小额责任免除的保险。AVIS 只限制一年以下驾照的不能租比较贵的车。反正即使买了保险,大家还是要注意爱护车子,一方面是个习惯问题,另一方面如果谁都给撞,长远来看还不是得提高租金以覆盖成本吗。

    3. AVIS 网站用 Firefox 访问有小问题,chrome 问题少点,最好还是 IE。

    4. AVIS 好像在上海做得比较大,还有便宜的 Smart 可以租(体验一下奔驰,哈哈),北京我问了一下好像一共还没有上百辆车,国内覆盖的城市也相对比较少。

    AVIS 做得确实不错,毕竟是从国外直接拿来不少经验。希望国内租车市场越来越成熟吧。

  • Ubuntu Linux 鼠标插上时禁用触摸板

    在目前这个笔记本上装了 Ubuntu 11.04,多次遇见了触摸板干扰鼠标的情况。一般是鼠标按键失效,移动还可以。一开始我还以为鼠标坏了呢,心想正好有机会换个无线的,后来发现是触摸板的问题,只需按一下触摸板左键即可恢复正常。刚才又出现这种情况,让我误以为是 X 出毛病了,切换到另一个 tty,等 kill 掉 Firefox 的时候想明白了,按了一下触摸板。以前都是想禁用的时候输入命令 synclient TouchPadOff=1,不过这次是一定要彻底解决这个问题。

    这里有个脚本 mouseSwitcher.sh,内容如下:

    #!/bin/bash
    #
    # Toggle touchpad on and off
    #
    # Author: Heath Thompson
    # Email:  [email protected]
    #
    # For startup wait for desktop to load first.
    while true
    do
        if ps -A | grep gnome-panel > /dev/null; 
        then
            echo 'X loaded'
            break; 
        else
            echo 'X not loaded, waiting...'
            sleep 5
        fi
    done
    #
    # Check to see if appletouch is running
    # if lsmod | grep appletouch > /dev/null; 
    # then
    #   echo " * Appletouch enabled"; 
    # else
    #   echo " * Appletouch either not working or not installed"
    #   killall mouseSwitcher
    # fi
    
    while true
    do
        # 'xinput list' will list all input devices x detects
        # I could reference my usb mouse by ID but I'm afraid that if I plug
        # another device in before my mouse, it might not have the same ID each
        # time.  So using the device name makes it relatively fail-safe.
        if xinput list 'Microsoft Microsoft? 2.4GHz Transceiver v5.0';
        then
            # Found my usb wireless mouse
            # Disable everything on the Touchpad and turn it off
            synclient TouchpadOff=1 MaxTapTime=0 ClickFinger1=0 ClickFinger2=0 ClickFinger3=0; 
            # Ends all syndaemon capturing which may have been used to monitor the touchpad/keyboard activity
            killall syndaemon
        else
            # My usb wireless mouse isn't present we need the touchpad
            # Reenable Touchpad and configure pad-clicks
            # RTCornerButton is the Right Top Corner on the touchpad
            #   The value 3 maps it as the right click button
            # RBCornerButton is the Right Bottom Corner on the touchpad
            #   The value 2 maps it as the middle click button
            synclient TouchpadOff=0 MaxTapTime=150 ClickFinger1=1 ClickFinger2=2 ClickFinger3=3 RTCornerButton=3 RBCornerButton=2;
            # Forces break of touchpad functions while typing if the touchpad is enabled.
            # Adds a 3 second interval following keyboard use which helps to prevent the
            # mouse from jumping while typing & resting hands on restpad or the touchpad
            syndaemon -i 3 -d;
        fi
    
        # wait 2 seconds and poll the mouse state again
        sleep 2
    done
    
    sleep 15
    

    但是在我系统里,xinput list 用设备名字做参数就是找不出来。以下是 xinput list 的结果:

    ⎡ Virtual core pointer                      id=2    [master pointer  (3)]
    ⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
    ⎜   ↳ PS/2 Mouse                                id=12   [slave  pointer  (2)]
    ⎜   ↳ AlpsPS/2 ALPS GlidePoint                  id=13   [slave  pointer  (2)]
    ⎜   ↳ Microsoft  Microsoft Basic Optical Mouse v2.0     id=10   [slave  pointer  (2)]
    ⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
        ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
        ↳ Power Button                              id=6    [slave  keyboard (3)]
        ↳ Video Bus                                 id=7    [slave  keyboard (3)]
        ↳ Power Button                              id=8    [slave  keyboard (3)]
        ↳ Sleep Button                              id=9    [slave  keyboard (3)]
        ↳ AT Translated Set 2 keyboard              id=11   [slave  keyboard (3)]
        ↳ Ideapad extra buttons                     id=14   [slave  keyboard (3)]
    

    但是 xinput list 'Microsoft Microsoft Basic Optical Mouse v2.0' 就找不到:

    unable to find device Microsoft  Microsoft Basic Optical Mouse v2.0
    

    好像也有别人遇到这样的问题,看这个 bug. 不过换一种思路即可解决,根据我的鼠标的名字,把那一行换成这样:

      if [[ "$(xinput list | grep -F "Optical Mouse")" ]]
    

    还有个问题,如果找不到鼠标,该脚本会不停地创建 syndaemon 进程,过一会机器就几乎死掉。所以在创建之前应该先检查一下是不是已经有这个进程了:

    if [[ -z "$(pidof syndaemon)" ]]
    then
      syndaemon -i 3 -d;
    fi
    

    执行该脚本,把鼠标插拔测试以下,可以用了。于是 chmod +x mouseSwitcher.sh,然后在 System Preferences 的 Startup Applications 里添加上,以后就不用操心了。

    修改后的完整脚本如下:

    #!/bin/bash
    #
    # Toggle touchpad on and off
    #
    # Author: Heath Thompson
    # Email:  [email protected]
    #
    # For startup wait for desktop to load first.
    while true
    do
        if ps -A | grep gnome-panel > /dev/null; 
        then
            echo 'X loaded'
            break; 
        else
            echo 'X not loaded, waiting...'
            sleep 5
        fi
    done
    #
    # Check to see if appletouch is running
    # if lsmod | grep appletouch > /dev/null; 
    # then
    #   echo " * Appletouch enabled"; 
    # else
    #   echo " * Appletouch either not working or not installed"
    #   killall mouseSwitcher
    # fi
    
    while true
    do
        # 'xinput list' will list all input devices x detects
        # I could reference my usb mouse by ID but I'm afraid that if I plug
        # another device in before my mouse, it might not have the same ID each
        # time.  So using the device name makes it relatively fail-safe.
      if [[ "$(xinput list | grep -F "Optical Mouse")" ]]
        then
            # Found my usb wireless mouse
            # Disable everything on the Touchpad and turn it off
            synclient TouchpadOff=1 MaxTapTime=0 ClickFinger1=0 ClickFinger2=0 ClickFinger3=0; 
            # Ends all syndaemon capturing which may have been used to monitor the touchpad/keyboard activity
            killall syndaemon &> /dev/null
        else
            # My usb wireless mouse isn't present we need the touchpad
            # Reenable Touchpad and configure pad-clicks
            # RTCornerButton is the Right Top Corner on the touchpad
            #   The value 3 maps it as the right click button
            # RBCornerButton is the Right Bottom Corner on the touchpad
            #   The value 2 maps it as the middle click button
            synclient TouchpadOff=0 MaxTapTime=150 ClickFinger1=1 ClickFinger2=2 ClickFinger3=3 RTCornerButton=3 RBCornerButton=2;
            # Forces break of touchpad functions while typing if the touchpad is enabled.
            # Adds a 3 second interval following keyboard use which helps to prevent the
            # mouse from jumping while typing & resting hands on restpad or the touchpad
        if [[ -z "$(pidof syndaemon)" ]]
        then
          syndaemon -i 3 -d;
        fi
        fi
    
        # wait 2 seconds and poll the mouse state again
        sleep 2
    done
    
    sleep 15