摄影 - 魔戒January 6, 2010

我喜欢《魔戒》。想想有时候人生就好比是 佛罗多 走向末日火山的途中,到处都是诱惑和蛊惑。比小说更加现实的生活,是否有勇气和运气走到底,其实就看你自己。

http://pic.yupoo.com/feelinglucky/389318a6dcc8/medium.jpg

半夜蹲在阳台上抽烟,顺便按下快门。片子虽然曝光得无法看,但不想给它补一张 -- 有时候无意识下拍的照片我们可以称为是抽象的艺术。

http://pic.yupoo.com/feelinglucky/849838a6dcce/medium.jpg

2010 伊始,而需要思考和解决的问题已经接踵而来。不管怎么样,努力去面对,不逃避。

匿名函数的写法January 3, 2010

这是 小马 在交流会中的分享,可能有些朋友还不曾了解,同时也为了自己温故而知新,就整理下。

多种方式

可以想像得到,有很多方法立即执行匿名函数,简单的整理就有下面三种的典型方式(还有其他方式的,欢迎告知):

方式一

(function() {
    // …
})();

方式二

void function() {
  // …
}();

方式三

~function() {
   // …
}();

方式一 和 方式二 大家可能都看到过,这里主要说明下 方式三。在说明 方式三 之前,我们现回顾下运算符“~”(位取反)在 EMCAScript 中的定义(第五版的第 72 页),简单的翻译下:

  1. 按运算符结合语句
  2. 将旧值转换为 32 位整型
  3. 执行运算符后的语句
  4. 转换之行结果为 32 位整形并返回

从上面可以了解,其实位运算符都能立即返回后面表达式的值。其实其他位运算符都可以达到这样的目的,例如

!function() {
    // …
}();

等都可以达到我们的目的。所以其实用“~”也并无其他的原因,仅仅是代码“看着好看”而已 :^)

效率

与其说三种方式执行匿名函数的效率,到不如直接分析个运算符的执行效率。那么我们对比再来看看“()”以及“void”在 EMCA 规范中的定义

组运算符(第五版 66 页)

  1. 返回表达式的执行结果

void(第五版 70 页)

  1. 按运算符结合语句
  2. 执行
  3. 返回 undefined

由于组运算符还需要执行语句并返回语句块返回的值,对比 void 会多个获取语句块的操作(虽然消耗不了多少的性能),因此在这种情况下 void 的性能要优于组运算符。

对比两者,那么 方式三 的性能对比很明显要低于前两者。总结起来就是光从语法的角度上分析,在上面三者匿名函数的方式中 方式二 优于 方式一,方式三 的效率最低。

总结

思考下三者之间的优异

那么

这里要说明下,其实三种方式效率之间的差异非常小。因此单纯拿效率来考虑采用那种方式,几乎是站不住脚的。

具体采用何种方案,需要根据实际情况来考虑。比如我自己,经常会使用方式三,是因为 1、方便(加一个字符即可) 2、在函数长的情况下匹配括号会很头晕 3、用起来很酷,但 方式三 会经常让看我代码的组员感到困扰。

如果在些类库等框架性质的基础代码,用 方式一 最保险同时大家都容易看懂,是最保险的选择。

看见 阮一峰 的 Blog 上有篇文章说避免使用 void 运算符。其实在 Javascript 中, void 的使用方面还是比较常见的。

例如,我们会强制让某些调用返回 undefined 以阻止浏览器等默认行为(我们经常看到的就比如很多 Javascript Bookmark 前面就经常会加上 void 运算符)。

所以,还是“物尽其用”吧。

-- EOF --

改进 Fun Input ToyDecember 30, 2009

Fun Input Toy(简称 FIT)是我在 Mac 下一直在用的输入法。相比收费的 QIM,FIT 给我最大得不爽主要有两点 1、词库相对 QIM 要小 2、图标太难看,于是就开始动手改造。

词库

搜索了下,其实 FIT 已经发布了大词库版。但本人较懒不想重新安装 FIT,于是将安装包里面的词库抽出来,直接覆盖掉原来的。

如果你觉得麻烦,你可以下载我打包好的文件,解压缩后直接将里面得文件覆盖至

/Library/Input Methods/Fun Input Toy.app/Contents/Resources/ 

目录下即可。

最主要得这里还要说下个人词库,FIT 的个人词库在

~/Library/FunInputToy/

目录下,不出意外的话,会有 bh.sqlite、py.sqlite 、wbx.sqlite 三个文件,分别对应 FIT 提供的三中输入法,看文件名就顾名思义格式为 SQLite 文本数据库。

搞清楚表结构以后,写了个 PHP 脚本将我在 Win 下使用的 谷歌输入法的个人词库就导入了过来。如果你对这个脚本感兴趣,到这里查看

图标

呃,这个其实是个人喜好问题,FIT 的图标感觉不是和 Max OS 菜单栏的“传统图标风格”很相配,于是我简单用 Photoshop 画了一个,效果如下(如果还是觉得不好看,压缩包里有 PSD 文件):

http://files.gracecode.com/2009_12_30/1262171549.png

替换的方法和上面替换词库类似,所以觉得麻烦就直接将压缩包里的文件全部替换掉吧。建议为了保险起见记得备份,本人可不承担任何责任 :^)

最后,全部搞定后重新注销登录下你的系统,FIT 看起来就舒服多了。

-- EOF --

  1. 1
  2. ...
  3. 7
  4. 8
  5. 9
  6. 10
  7. 11
  8. 12
  9. 13
  10. ...
  11. 126
Yahoo 统计