最近二三事

最近结婚的同事、同学很多,两个月包了5个红包,囊中原本就局促,于是变得愈发羞涩。在有足够能力之前,过着超出承受范围的日子,自然会觉得累。房贷+车子带来的消耗,确实让我有些吃不消了。或者可以换个说法:匹夫!自己孬就孬,把麻烦推给周遭作甚!钱不够?去赚不就是了!

这或者就是天秤座的性格,一边埋怨时间不够,一遍仍不管不顾想要尽善尽美。生活如此,工作也不外如是。新近有个项目,MED 规范库的升级版,原本一直预订着就是我来做,但是因为我的主打项目东西太多,已经牵扯进来两位同事一起开发了。就在这当口,我还是希望东西可以更完美一些,选择放弃已有项目中一些可行但令我觉得十分不爽的做法。

例如,老项目中有个文章历史记录的功能,实现方式是每次都在数据库里头保存新一份数据;而趁着新版开发,想要做的事情是,通过 Grit,直接把后端换成 git,避免重复造轮子(并且肯定不会有 git 好)。然而这样做很难。

这周一,是我高中两位同学订婚,一位同学结婚的日子。订婚的童鞋,一个是同桌两年的姑娘,一个是室友;印象中他们高中就在一起,现在说起来,起码也有七八年了吧。看到各位童鞋们纷纷找到人生伴侣,开始过白天举案齐眉,晚上埋头造人的日子,令我十分唏嘘。我一直贪着比大部分童鞋都小一岁,任由着自己拖沓的性格。

所以上周日我便赶回去,从古荡等出租车,到从南站出发,花了4个小时;从南站出发,到抵达瑞安,也花了四个小时。杭州的交通你还敢再屎一点不?回到家,晚上十点多,小姨还在跳绳,妈妈还在等我。给我煮了碗面。跟我聊七七八八的事情。我说囊中羞涩,她说,童鞋们都结婚了,你看着没感触啊?你跟你女朋友认识也蛮久了摸,有些事情要是想提,得让你自己起头的。她开了这个头,自然不会见好就收,又说,要是年底就像打金给她,我现在就把钱给你吧。

想着这紧赶慢赶的日子,我可不由得有些慌,这要是订了婚,下一步指定又催我结,再下一步就催着生娃。所以我得为订婚赚钱,为结婚赚钱,为娃赚钱。我tm自己也想花点钱的啊⋯⋯

我埋头吃面,在心里咀嚼上边这些话,只好说,是挺久了,我也没有耍流氓的意思,就希望你别催我,再等等好不好?

这是关于结婚的事情。然后还是交代其他吧。有了相机之后,参加婚宴变得有趣了,别人交流房、车、工作,我只管把众生拍成二进制,然后等着回到家,导入电脑,丢到 http://yicai-cyj.yupoo.com/,让诸位能够看看别人眼中的自己。当然,希望是绝无任何褒贬。不过每到拍姑娘我都会落力一点,个人好恶,很难脱离开去吧。

画小画一直在持续,成了我工作之余的调剂,开会的时候、想问题的时候,画几张脸。晚上落班回家之前,找出女朋友的照片,画个几张,也颇有成就感,能够给我工作上可能缺乏的正反馈,让心态平和一点。然而成果良莠不齐,很少会贴到又拍去。

吉他是真的很久没碰了,在淘宝养成了8、9点才回家的烂习惯,回到家自然啥也不相干,要么看小说要么上网要么玩游戏,我要忏悔。或者直接写到来年的 KPI 里头去吧!

接着说婚礼。上上周末,是我本科室友结婚的日子。他是湖州德清人,在杭州的我们仨室友,便相约着开车去湖州,还应邀带上面具,陪他做开场舞。这是我第一次全程参与一场婚礼,从新郎家出发,去接亲,闯关,会新郎家,又去宴会厅,彩排,到最后开场,表演,再看着两位新人款款走到舞台正中。这让我觉得,缺了牧师,关系也不大嘛。

去的时候走的国道,还迟到罚单一张,第一次超速被拍,啊不是,超速第一次被拍。

以上,便是我的近况。nothing fancy, nothing special. just happened to be so.

Posted in Life | Comments closed

项目发布、Ruby Gems、Bundler 与伟大的墙

敝人在做的一个小项目,有一些些小改进,经过一番测试,于昨日开始上线。项目用的 Ruby on Rails,并依赖一系列 Ruby Gems,为了方便后续的 1.8 -> 1.9 转换,并保证两边不耽误,1.8 的紧急除虫之类的工作能够照常进行,又加了 RVM(Ruby Version Manager?)。在自己的机器、测试环境里头看看,一切正常,今天 cap production deploy 的时候,挂了无数次,回滚了无数次,到刚刚,可算是成了,现记录血泪史如下。

前几次失败,是自己 naive 了,忘了给产品环境安装 RVM,又忘了在 RVM 里头装需要的 Ruby 版本,以及它的 gemset,1.8.7@my-awesome-project。这导致项目里的 .rvmrc 执行出错了。贪图方便,我在项目里配置了 .rvmrc。生成它的方法很简单:

$ rvm --rvmrc --create 1.8.7@my-gemset

就可以了。不过这里有个 git 带来的问题。我全局开启了 cr 自动转成 crlf,结果 .rvmrc 在转掉之后,bash 执行出错了,不认得 ^M 字符。因为 bash 脚本实在不熟,只好含泪先把 crlf 关关掉,凑合用一下先。

再说回到产品环境的解决,自然就是安装 RVM,然后安装 bundler。在这个原以为柳暗花明的时候,伟大的墙出现了,gem install bundler -v 1.0.21 一直超时,等了半个早上都装不好。无奈之下,只好在本机翻墙出去,搞到了 bundler-1.0.21.gem,sftp 登到产品机器,放上去,再安装:

$ curl http://rubygems.org/downloads/bundler-1.0.21.gem
$ sftp foo@hawlscastle.com
$ > put Downloads/bundler-1.0.21.gem
$ ssh foo@hawlscastle.com
$ bundle install --local

原本呢,直接从 rubygems.org bundle install 肯定也是不行的;幸好之前做了 bundle package,把所有依赖的 gem 都写到了项目的 vender/cache 目录,如此,总算是在墙内完成了这些事情。

Posted in Bug, Computer | Comments closed

近期遇到的一些 Bug 汇总

项目里头,用户保存一份设计的时候,会合并多份 JavaScript 文件。这些文件都是 seajs 模块,过程中,会根据模块中声明的依赖关系,自动添加相应的文件到合并的文件中去。依赖声明的形式是数组,类似:

define('foo', ['a','b','c'], function(require, export){});

代码实现得很容易,之前也一直没有问题。然而最近一个模块因为依赖太多,出了麻烦。那个模块被 Closure Compiler 压缩之后,成了这个样子:

define("foo","a,b,c".split(","), function(require, export){});

之前根据 [] 寻找依赖数组的,就挂掉了。Closure Compiler 这里的压缩策略是,如果用 “,”.split(“,”) 这种,能够比之前的语句压缩后要短,就改成这种。算是一个 gotcha,记在这里。

另一个问题,是略有些粗苯的,代码如下:

define('a', ['b'], function(require,exports){});
seajs.use(['a'], function(a) {
    document.write('
'); a.foo(); });

结果 document.write 锁住了 DOM 树,seajs 在尝试解决 a 模块的依赖,在 head 中加入 的时候卡住了。比较奇怪的是,即使调用了 document.close(); 也不行。下次 debugger 看一下⋯⋯

Posted in Bug, Computer | Comments closed

卡内基·梅隆大学(CMU)的脸部识别实验

CMU 的脸部识别实验,看了 FAQ 的小结部分,我已经后脊背发凉了 >_<

利用 SNS、网络相册等可采集的数据,进行脸部识别、数据挖掘,找出每个人在网络上的各个脚印,又做一个手机应用,拍拍TA的脸,就能找到TA的人人网、豆瓣、又拍、微博,手机号神马的,就手到擒来了

实验一:从红娘网站(用户多用的假名)找图片,到 facebook 找公开的用户(不用登陆到 Facebook 就能访问的)照片,彼此比对,卓有成效(木有说具体成功率)

实验二:线下到线上的识别,拍学生的照片,线上找相应的 Facebook 资料,成功率 1/3

实验三:(概念验证)增强现实,根据之前采集的数据与脸部识别结果,预测实验对象的社保号、兴趣、爱好、婚恋状况

到时候,真的就是龙珠里头那种眼镜的感觉,看见一个美女,一按按钮,哇,36D、刚分手诶,有机会。

当然,目下脸部识别技术还没有牛逼到那种程度,只是应用到社交网站,或者应用程序。Google 收购了 Neven Vision、Riya 和 PittPatt,在 Picasa 里加入了脸部识别;Apple 也收购了 Polar Rose,对 iPhoto 做了相同增强;Facebook.com 则授权了 Face.com 采集、识别它的用户数据。给定足够的时间、资源,相信不久将来,会出现这种增强现实的应用的。

Posted in Computer | Comments closed

Amazon 与它新发布的 Kindle 们

Amazon 真是家有趣的公司哇。在线卖书起家,因为感觉错过互联网淘金热和急火火加入,一路上扩张、收购,不好好做电子商务这份有前途的工作,还非得搞出些七七八八的云服务,什么存储服务(S3)啦,云计算(EC2)啦,最近又搞了亚马逊·擎天柱(Amazon Prime)搞影音流媒体服务。与之搭配的,就是今天要说的这些 Kindle 们

我在去年入了一个,6″ 的 Kindle 第三版,无 wifi 版本。拿到手第一感觉是,这货真轻啊,跟地摊货似的,点亮屏幕就马上被 hold 住了,真真确确的在看书的感觉。后来就去下各种 pdf、epub,用 calibre 转了发到 kindle 上去看;也用一些服务例如 read later 啦,readability 啦之类的,将网文发到这台 kindle 上看;也会去 Amazon 上买些版权过期的、免费的书来看。

有“商务人士”指出,买个 Kindle 却不高兴买正版书看的人,都活该被鄙视。唔,确实 not fashion。

然而等不及我悔悟,Amazon 又重磅出击,把产品线更新、扩大了。昨日发布,一下多了好些个版本:去掉主键盘、只保留按键的 Kindle;增加了触屏、也去掉了所有按键的 Kindle Touch,当然,分有无 3G 的版本;老款成了最贵的,改名叫 Kindle Keyboard,这货的主键盘我从来没用过,真心不好用啊,屏幕反馈太慢,打字的乐趣分文没有了;然后就是当当当!Kindle Fire,一个彩屏的 Kindle 诶!

等等,说了这些个,价格多少?把他们都加起来(总共六个 Kindle),唔,差不多比最贵的 iPad(64GB+3G)还要便宜个几十刀的样子。这个公司的思路可真够清晰的,公司创始人 Jeff Bezos 曾说过这么一句话:

There are two types of companies: those that work hard to charge customers more, and those that work hard to charge customers less. Both approaches can work. We are firmly in the second camp.

有两种公司:努力让顾客多付钱的其一,努力让顾客少付的其二。两种公司都可以成功。我们坚决待在第二种阵营。

内容为王呃。它是如此不遗余力,不惜给产品加入广告以使成本更低。加入广告的版本换做 Special Edition,特别版。好么,人家的特别版都是限量、高价,它这特别版是特别便宜的版本的意思。广告在锁屏的时候出现,什么团购之类的,居然反馈还不错,也绝不影响阅读。而这次新品发布,直接把这特别版当成主推的,想要没广告的呀,可以呀,加钱⋯⋯ 真心想让设备烂大街,人手一只才好吧。另一种烂大街的,就是努力让顾客多掏钱的 Apple,同学几个出去聚会,摸出来的 5/6 是 iPhone,4k 多的手机哇。

而这种竞争,首先搞挂的估计是国内的这些个汉王、盛大 Bambook 这些定位不清楚的吧。要卖设备,做得不如 iPad,要卖内容,又扛不住国内的盗版环境。都只能抱团在那边喊喊国情不一样的咯。

不过,这只是我猜。不管如何,年底,或者明年年初,打算入一个 Kindle Touch。

Posted in Computer | Comments closed

HTML id、class 属性值

还是草稿的 HTML5 规范里头,id 和 class 属性的值的约束似乎没怎么说明,只说 id 不能包含空格。我们这里讨论,还是以 HTML4 为准吧。

HTML4 规范中,id 与 class 的属性规范分别是 NAMECDATA-LIST。NAME 的格式,用正则表达就是,/[a-zA-Z][a-zA-Z0-9.:\-_]*/;而 CDATA 则更加自由

<div class="1blah/bläh">

这都行?严格说来,这可不怎么行,在 CSS 里想用作选择器时,还需要转义;.\31 blah\2F bläh { ... },不过,那真的很麻烦。据 SO 的回答,所有 A 级浏览器都支持这么搞,不过,还是不要这么搞了吧?

然后是长度,这里有人做了测试,称 IE7、Firefox 等,都支持 1M 的长度。但我不是很信服,有必要的话得自己整一下。

Posted in Computer | Comments closed

小长假·南浔·乌镇

所谓小长假,只怕这世上再没比这玩意更名不副实的了。明明只放了一天,每次都拼死拼活跟亲爱的周末凑到一起,腆着脸当个小三,然后就堂而皇之宣称自己是小长假,虽然略短,但也是个长假了。这种假日,宅家里太罪恶,出门又嫌仓促,总让我在纠结中以西湖/影院/百货大楼/太子湾一日游仓促结束。而今番中秋,则大有不同。

今次算是蓄谋已久,像《指环王》里树人的会议一般,花了大把大把的时间确定了一个重要议题:这个小长假,一定要出去玩。至于去哪儿玩,路线怎么样,坐车还是自驾,酒店定不定,全不在计划之内。于是在这小长假的第一日,就囧了。去哪儿?绍兴、宁波、西塘、嘉兴、乌镇?乌镇吧;那订酒店先。神马?只能定豪华大床房?1000+ 一晚?

肿么办?

于是决定降级去冷门一些的,啊,游遍江南九十九,不如南浔走一走,南浔洒家来也。酒店也不定了,决定自驾,当天去当天回,不尽兴就另说。计划必,晌午已过,与姑娘相顾,还是明天再出发吧⋯⋯ 次日出发,已近中午,开着车走在 S13 杭申嘉湖高速,十分空旷,心说,总算是出来了。

南浔古镇不大,挺小的一块,而且挨着城区,不像乌镇,房子没有被政府收购走,当地人依然拥有自住的房子的话事权。于是当地人自由出入景区,于是各种逃票。街区一里长最多,沿河两岸,加上两个古宅(我们逃票进的景区,因为宅邸另外检票,没能进去),就是整个南浔了。所以游了一个下午,逛了各种店,买了几把牛角梳,一件长裙,就略有些兴致索然,只好觅晚餐了。来到杭州就听说,湖州的名产是千张包,而南浔的饭店打的招牌三样,除千张包,还有手札肉,和形状十分硕大的猪腿(忘了名头了,只记得其形之硕)。千张包其实都差不多,因为肉馅往往只有自家做的才新鲜好吃,不推荐点;手札肉如果新做,十分滑嫩,肥而不腻,可以尝尝的。那猪腿因为很有些大,我们木有点。至于河鱼,刺少的贵,刺多的又不想吃。姑娘还不想吃清蒸的,要铁板或红烧,但我们吃的那家,似乎不做铁板,后来也就没点。

饭毕,时值晚六时余,不尽兴,决定赶赴乌镇,此时小长假三分之二已过,人该少些了吧。南浔与乌镇离得很近,直线距离不超过20公里,花了40分钟开到,直接到了西栅外的停车场,买了夜场票80元每人入内。因为在景区投宿,可省却次日日场门票120大洋每人,后来逛到10点多些,便找了家客栈,问老板借宿。

一问才知,这客栈,是个连锁店的分号,整条西栅大街遍布,名曰乌镇·民宿。都是镇上的古宅,被政府统一收购之后,改了作了客栈,里头住的,大多也还都是当地人,拿工资。

西栅与南浔相形之下,要成熟许多。乌镇发展很早,湖州人沈晨以前就告诉我,他们那儿也颇多老屋老巷,但在乌镇的发展过程中,十之七八拆了卖了,搬到了乌镇。不过,在眼拙者如我看来,这古镇从头到脚都古色古香,早分不清哪儿是翻新,哪儿是存旧了。西栅大街很长,一路老屋、青石板,但不能一路沿河走;于是我们兜兜转转,又到了河对岸,遇到桥就过,8点左右进的场,玩到10点多,走了个三分之一。累了,就投店。在11点之后出门,需要问客栈掌柜的要钥匙,因为他要锁门的。我们在去南浔的路上还买了俩西瓜,入住之后,到厨房偷用了菜刀剖开,又拿了两把调羹,坐在沿河的桌边,挖着吃,好生惬意。

次日接着转悠,去了月老庙求签,这签够牛的,解签的条子从人生到理想,从财运到姻缘,一网打尽。说我和妹纸的姻缘,还亏得有媒人相助,相处几年,也就自然成了。子嗣有,失物不可避免,总之一切都要淡定。不过,对月老庙也无需期许,是间小庙,只有个工作人员,也不是道士,做的事情就是根据摇出来的签,给你相应的解签的条子。

此庙与龙形田很近。田里种了颇大一片向日葵,田边还有水车两架,似乎闲置得有些时日了。西栅可供逗留的地方颇多,水上戏台、三寸金莲馆、乌镇邮局、益大丝号、乌锦等等,当然,也有兜售各地旅游景点可见的火柴天堂、帆布鞋、娃娃等义乌小商品的小店。

因为民宿的自助早餐太过给力,我们又吃得晚,午饭就省却了,在大街小巷各种晃悠;后来天色将晚,相机也宣告弹尽粮绝,便坐到河边,一家叫做步步莲花的店,叫了份炒饭、奶茶,蹭了份赠送的月饼,静静看这暮色降临。

然后就踏上返程,一路120码回家,向这两个可爱的小镇说再见了。

Posted in Life | Comments closed

Google Chrome 的扩展很危险哇

最近有人爆料说,在一些常规的 Google 搜索中,Amazon 的结果会列在前头:

为什么 Google 会觉得 Amazon 的结果如此重要?仔细一看,原因居然是 Google Chrome 的一款扩展,名唤 Awesome Screenshot,搞的鬼。

Posted in Computer | Comments closed

PPK 的募捐之旅

今天要查一下 js 里头 mousemove 事件是否有些 gotcha,google 出来的结果自然有 PPK(Peter Paul Koch) 童鞋的 QuirksMode.org

结果打开 Dom Events 的兼容性表格页面的时候,看到他在做一次募捐,结果点进去一看,大大出乎意料,从起因到结果都令我印象深刻。

PPK 是个超级理性的人,因为以下几个原因,他不想维护桌面、笔记本电脑的浏览器兼容性表格了。各大浏览器对标准支持越来越好,兼容性的问题自然愈发少了,各种 gotcha 十之八九只在 IE6、7 里遇到,往往一个星期的测试只能发现一两个新的小 bug,还不一定能遇到,其一;他一个星期的薪酬是 5k 欧(荷兰人民真富裕,连王小波都以他们为例说聪明人的生活该是这样),花一个星期事件免费做这么一件事情意义不大,其二;Chrome 和 Firefox 的版本机制太奔放了,他完全不晓得测完一个版本之后,这结果能够正确多久。

所以为什么还要做下去呢?他说,唯一的理由就只剩下钱了。所以,根据 5k 的周薪,加上因为是做喜欢做的事情打个半折,他决定,如果能够在 2011 年底之前募到 2.5k 欧,他就接着维护。

而事情的结果出人意料,在文章发布之后 5 个小时时间内,他的目标就达到了:

30分钟之后:还差 € 2,357.52

1小时之后:尚余 € 2,115.74

3个小时多些之后:仍需 € 1,179.49

4个半小时之后:募捐成功。

Wow

Posted in Life | Comments closed

即将5k公里

2月份的时候提的车,灰色的克鲁兹 1.8 SE,去年年底看车的时候,看了外观令我钦慕已久的福克斯,和基友99推荐的高尔夫6,最后就是老鸭已经在开的克鲁兹了。结果福克斯的内饰和高6的所谓销售策略令我望而却步,最终选择了一辆灰科,听了老鸭的意见,选了 1.8 排量的。

在开这辆车之前,家里亲戚的车我也开过一些,无一例外都是自动档。拿到驾照后摸的第一辆现在看来十足老旧的进口尼桑,和表哥开车去海边。后来又开了阵三菱的一款 SUV,高头大马,视野开阔,确实很舒服,市区与市郊都能胜任。那时候还不小心钻进老瑞中所在的仓前街,可算是钻出来了。再后来是去年寒假,开了凌志 ES 240,应该算是个相对朴素款?开着的感受是各种轻松,加上一些小加分(一键启动,锁车自动合拢后视镜神马的),令我真心喜欢这车。中间还开车上山,终于去了温州最高的山,金鸡山。也算是温州最高人之一了,木哈哈。

后来还摸了摸福克斯,三厢的,开着它去了趟仙岩,疑似被拍,后证实木有,大慰。

春节结束,返杭工作,车子可算到了。拿车的时候一通手续,保险原本想电话车险,销售经理不耐烦,送了次保养。而验车的时候发现一处小细纹,没能赖到一次保养,让维修工抛光跑掉了。后来知道抛光的坏处之后,各种后悔。原本可以强硬些的。当天,开着它去车管所,踩油门那一刻不是激动而是各种困惑,这脚感不太对呀⋯⋯ 选号、上牌回来之后,差不多算是习惯了。

然后就变成了开车上班,发现并没能快多少,而且公司所在的写字楼停车费是坑爹的25/天。而数月后的现在,已经是 35/天了。我的线路是留下往古荡,感触最深的是西溪路的各种堵。至于文[123]路与天目山路的各种堵,很荣幸未曾领教。

很快到了五一,准备开车回家。之前的清明晃点了一次妹妹,心下十分愧疚。而这次五一,她就不高兴跟我回去了。当然,时间上也有原因。一大早起来,到了古荡准备接搭车的同学,还顺便去了学校吃了碗葱油拌面。接着就雄赳赳气昂昂开往绕城留下入口,天气很合适,没太阳,没下雨,不算阴。这是我第一次上高速,而且要开400公里,我都要起鸡皮疙瘩了。然后我终于拿了卡,开入绕城高速,激动地加到80多公里每小时,然后发现前方堵车了。

当时我就震惊了。

幸好不算太久,之后还算通畅。靠着安吉星导航和古西风童鞋的陪唠嗑,一路顺利开到瑞安。一开始有些放不开,上了诸永高速我开始奔放,中间一路避测速。放下他们,开会家,结果在小区楼下发现一个十分惊悚的事情,我的距离感变了,钻进车位的时候,一路往前顶,居然直接车顶到墙了踩晓得,哎呀没空间了。幸好,车速不快。

开回来是一个人的,诸永还是那么奔放。在那些个山洞里头穿行,痛快之余,略微也会有些惧怕。按彼时的车速,万一前方有个坑没见着没避开,都是十分危险的。但好彩这条高速新建不就,车少路空,我自然“速来”。

到了杭州左近一如既往开始堵车,一路堵到绕城下,这次自驾终归结束。当时里程将近3k公里。

然后的日子,依然是学校、家,西溪路、天目山路,路况都还能接受,而且爬起来早点,确实车子也少些。行车电脑显示的油耗降到了 9.2,至今未变。

车子已非完璧,刚开不久的时候,一次开门太粗暴,磕到了,凹了一个小坑;另一次新远观影结束,从市区回来,转弯的时候没注意,被一辆电瓶车碰上,车头左下角划了两道,加上当时有点疲劳驾驶了,他碰我,我心下反而愧疚,赔了点钱,当破财免灾。

以上,差不多就是我这5k公里的故事。

Posted in Life | Comments closed