Got a HHKB Pro2

Aug 01, 2012

本文写在HHKB入手3个月后,觉着要使用一段时间之后才能写出比较客观的感受。这个键盘是在4月11日老婆偷偷买了送给我的。

这是刚买来时的样子

My Keyboard

HHKB

HHKB是Happy Hacking Keyboard的缩写,PFU出品,HHKB系列只有三种型号,HHKB Pro2 Type-S,HHKB Pro2和HHKB Lite2。其中Type-S的价格要比普通的Pro2再贵个1K左右。

值得一提的是HHKB Pro2是静电电容键盘,而HHKB Lite2是薄膜键盘,都并非是机械键盘。

外形

这个是个白色无刻的键盘,我理想中的HHKB只有白色无刻和黑色同刻这两款,就觉得这两款感觉上非常Cool,一让人看到就有种装X的感觉。在连接方面,键盘带了一根可以拆卸的USB连接线。

键位布局

由于HHKB的键位布局和一般的键盘有比较大的差异,再加上无刻,刚使用那段时间有点不适应。

一开始最不适应的有两个地方,数字键上的符号,和~移到键盘最右上角。~|很快能习惯。以前一直是看着符号来按的,用了这个无刻的键盘经常会按错。但经过一段时间的使用,手指的肌肉已经记住了每个数字键和符号的位置。

而很早之前我就是把Cap lock设置为Control,HHKB上原生的这种Unix的键位设置对我来说更是如鱼得水。Control加上Esc的位置让我这个Vim的重度用户用起来非常的舒服。

这么几个月使用下来,由于完全不用低头看键盘(无刻看了也没用),所以输入效率着实提高了不少。

手感

手感很软,估计相当于红轴的机械键盘(试过同事的红轴键盘),所以手指不需要怎么发力。另外是键程比较长,按键的回弹力量刚刚好,所以打字的段落感和节奏感非常好。长时间使用下来,对比以前的打字经验,在速度快的时候敲击的错误率降低。这里的错误是输入的键在一般键盘上顺序就串了,比如rails很容易输错为rials,但HHKB上没有这样的情况,这让我感觉很神奇,也许这就是这个键盘的价值所在吧。

其他

HHKB对Mac的支持很好,支持跳线设置为Mac模式,以支持几个常用的功能键,Volume Up/Down和Mute。

这两天还败了个HHKB的专用包,理由是每天都背着这个键盘上下班,有时听到键盘在包里撞来撞去的声音有些心寒。这个包没现货需要订货,估计下星期能到手。

推荐大家在有经济能力的情况下可以败一个,毕竟真的能提高一些效率。当然这也就是个普通的键盘,对你基本的能力并没有提升,提高的只是输入的体验,让你把精力都focus在hacking上,达到这个键盘所称的境界,Happy Hacking。再次感谢我老婆,我自己是狠不下心买的。

最后附上网上的一篇比较好的HHKB的评测

Instance Property of CoffeeScript

May 02, 2012

用Class语法定义的Instance Property是直接append到prototype上,当 你把一个property定义为某个对象(非立即值)时,那所有的 Instance都会指向同一个内存地址上。

class Foo
  favSites: ["Google"]

会编译得到:

var Foo;

Foo = (function() {
  function Foo() {}
  Foo.prototype.favSites = ["Google"];
  return Foo;
})();

这里容易犯错的地方就是当有实例去修改上面提到的共享 内存地址的内容,这样就会得到一个奇怪的结果。

foo1 = new Foo
foo2 = new Foo

foo1.favSites.push "Github"
alert foo2.favSites # => ["Google", "Github"]

当不想出现这种情况时最好避免直接把Instance Property定义在 Class Contructor的prototype上。

class Foo
  constructor: (@options = {}) ->
    @favSites = ["Google"]

foo1 = new Foo
foo2 = new Foo

foo1.favSites.push "Github"
alert foo2.favSites # => ["Google"]

在Backbonejs里也是这么处理的,比如在Model中,每个实例的所 有属性值(attributes):

var Model = Backbone.Model = function(attributes, options) {
    var defaults;
    attributes || (attributes = {});
    #...
    this.attributes = {};
    this._escapedAttributes = {};
    this.cid = _.uniqueId('c');
    this.changed = {};
    this._silent = {};
    this._pending = {};
    #...
}

Web Resources Help You Fight with Older IEs

Apr 06, 2012

Recently I have to fight with older version IE, that's really a nightmare.

And then search some resources to fight with it.

  • http://www.sitepoint.com/10-fixes-for-ie6-problems/
  • http://stylisticweb.com/design-tutorials/15-ie6-bugs-and-simple-solutions
  • http://css-tricks.com/ie-css-bugs-thatll-get-you-every-time/
  • http://www.virtuosimedia.com/dev/css/ultimate-ie6-cheatsheet-how-to-fix-25-internet-explorer-6-bugs#understanding-hasLayout
See more posts...