Limbo: 混沌位面 ———— 这里既空虚又充实,没有规则,没有约束,创造来自思考,生存依赖想像,现实源自梦想。
首页 给我发Email! 订阅 跟踪我的twitter信息

2008年11月的存档

用synergy在Mac和双屏幕PC之间共享鼠标键盘

picture-3.png其实去年5月的时候我就在ibook和公司的PC上装过synergy,后来完全抛弃了windows环境,那台PC长期闲置,有没有键盘鼠标都无所谓,所以就没再装过这个工具。未想到风水轮流转——

先是在封闭开发黑豆的时候,我只把macbook pro和宽屏显示器带进了小黑屋,完全不用PC测试,自以为凭借经验和美学智慧已经足以预判和规避一切浏览器兼容问题……结果测试阶段被ie里relative定位的一系列渲染问题折腾得很囧。

然后是testing team抛弃了Bugzilla,开始“严肃的”使用Mercury QC,虽然它繁复的操作和用activex开发的客户端都让我很不屑,但是这玩意的可怕之处在于严谨的(或者说死板的)权限和缺陷状态管理,没有哪个testing team的姐姐能帮我绕过流程,由于我长期不接受也不关闭任何bug,每周五邮件里的统计结果就很不好看。

再加上最近又开始大萧条,为了遵从开源节流现金为王的教诲,我也只好腆着脸登陆公司里那个界面更烂的OA系统申请报销手机费。

这些事情都让我越来越离不开IE,对了,windows上的软件也越来越有吸引力,比如httpwatch和chrome,相反mac上有吸引力的软件却恰好不能在我的工作环境中使用,比如textmate和coda,eclipse 3.4也经常假死或者弹一些莫名其妙的报错窗口。 阅读全文 »

递归和递推:javascript求斐波那契数列的尾递归方法

刚才在IBM DW上看到这篇《JavaScript 技巧与高级特性》,其中关于arguments.callee的部分有一个用递归来求斐波那契数列的例子,简化一下是这样的:

  1. //经典递归
  2. function fibonacci(n) { 
  3.     return (function(n) { 
  4.         if (n == 1 || n == 2) 
  5.             return 1;
  6.         return arguments.callee(n - 1) + arguments.callee(n - 2);
  7.     })(n);
  8. } 
  9.  
  10. fibonacci(4); //result: 3
  11. fibonacci(5); //result: 5
  12. fibonacci(10); //result: 55

这种教科书式的写法出镜率很高,在很多文章里都可以看到,但是速度也特别慢,曾经看到过有些人就拿这种例子来说明“递归的效率低”或者“用javascript做函数式编程效率低”,然后给出迭代的写法……

更新:我今天老老实实的读了SICP的第一章之后发现书中对这个问题其实有很严谨的解释,为了防止自己被骂成民科,赶紧修正了一些说法,加了删除线的文字都是有错误的,新增加的文字用粗体。 阅读全文 »

GOSPEL OF YY

    我之所以要杀你,只是因为你胆敢向我的骄傲挑战。

    -- 朽木白哉
    Bleach Vol.34