无论如何,id还是比class快

http://jsperf.com/queryselector-id-vs-class

虽然这种结论用小脚趾头想也能得出来,还是jsperf了一下,92%的slower还是挺出乎意料的,基本上就跟sql有索引和没索引的差距一样大了(其实应该原理也类似才对)

END

不作死就不会死——重装OS X记

不作死就不会死,简直真理。

一个新的MBA,被我折腾了一天时间,直接就变成砖头了……

read more

Backbone.js初探

运气不错,有时间可以研究一些新玩意,就抓起了原来一直没好好看看的Backbone(严格来说,Backbone是现在流行的MV* javascript大军里资历最老的几个了,只是对我来说是新而已)

一边code一边看posts一边就开始写文章好了,前戏都省了,直接就是Pros/Cons:

read more

This is the new sheet

其实应该算是2013年的流水账总结文的,在< new Date("2014-1-10")的时候写下来应该还不算晚。

read more

Promise&&最具体原则&&sth-else

又是年底了,又到了各种有感而发的时候,每到这个时候,思绪都会乱到想写个文都只有起个“Promise&&最具体原则&&sth-else”这种奇葩名字了。

心态好一点,少点吐槽多点思考,才是,真的。

read more

回调猛于多线程

写的js库提供了三个API——A、B、C,单独运行的时候好好的,但是当

API.A();
API.B();
API.C();

的时候,灾难就降临了。我对这个library的设计的本意是所有接口都是声明式(Declarative programming)的,但现在任意调换上面三句代码的顺序,行为竟然不一样了。更扯的是,就算是用同样是顺序调用,产生的行为也会不一样。听起来很像是多线程是吧?

read more

同步的ajax&&jquery源代码里高大上的一段

###sync-ajax

遇到的公共框架的bug(异步操作返回之前不该执行的操作执行了)想要hack一下解决,想到jquery里有这样的用法:$.ajax(url, { async: false }),就跑去看jquery.ajax的源代码,看看jq是怎么block掉js执行的。ctrl+f了半天木有找到while,觉weird,觉厉。开始仔细的一点一点的看源代码,还是没看到什么地方有奇怪的trick可以block js执行。

read more

The hardest bug i've debugged

事出有因

全部都是看这个帖子有感What’s the hardest bug you’ve debugged?

read more

JQuery Sucks (Live版) —— 记一次20min的优化

这篇黑的有点丧心病狂了,其实问题基本上都在我自己。但光看结果的话,确实可以总结为:因为替换了一个jquery的方法调用,一下子把1.8s的执行时间优化到了18ms。

read more

JQuery Sucks (3) —— 失败的promise

崇拜这种高端黑:http://domenic.me/2012/10/14/youre-missing-the-point-of-promises/

原本以为promise是jquery中为数不多的亮点,结果发现还是可以黑。有空了想写点demo来验证下上面那个文里的scenarios2-4是如何不成立的(或许1.10/2.0版本已经进化到可用了)

BTW:咱就说1.8之前的promise用起来别扭,原来本来就是个坑啊。看来我最近的“认坑”能力有提高啊

BTW2:又发现了jquery之所以有这么多槽点的一大原因——没有“Do one thing”。如果jquery专注于dom manipulation,可能不会有现在这么多槽点。不过真只专注于这一点的话,jq那不就变成了sizzle加强版了么?没有现在“Do every thing”的功能,可能jquery也就没那么火了。还真矛盾。

END

JQuery Sucks (2) —— 一图胜千言

胜过千言以后再多说几句:其实这篇应该才是part1,起到提纲挈领之用。

read more

(function(){})()

黑JQuery的系列文章一直都还没写出来,今天读JQuery代码,反倒是多了点体会。(话说回来,JQuery的源代码可能是让我收益最多的JS代码了)

read more

在windows上用jekyll太难了(续)

这个问题前前后后折磨了我两个星期——jekyll不能正确的build出ol(md to html),作为一个强迫症患者,我当然无法容忍在markdown的文档中手写<ol></ol>

于是,到jekyll的github respository去提了个issue,热心的程序猿朋友礼貌地指出:这不是jekyll的issue,应该是markdown引擎的问题。

jekyll的默认markdown引擎是maruku,今天终于有时间了,开始一步一步的debug maruku。前前后后可能搞了40min,发现所有问题都出在这一句:

	return :olist    if l =~ /^[ ]{0,1}\d+\..*\w+/

那个神奇的正则表达式,不能match1. 中文…………

算了,碰到正则表达式,果断的绕道了。

在jekyll的config中把markdown引擎改为redcarpet,问题解决!

END

CPU Cache

看文 7个示例科普CPU Cache 有感:

  1. 当有循环存在时,循环的次数才是关键的而不是循环里的操作(如果操作已经足够简单)
  2. 循环体内的代码肯定还是越简单越好,这次是多了理性的认识
  3. 只要你想,总是有优化空间的
END

JQuery Sucks (1) —— 无节操接口升级

var url = '/service/double';
$.getJSON(url, { num: 1 })
.then(function (data) {
	return $.getJSON(url, { num: data });
})
.then(function (data) {
	return $.getJSON(url, { num: data });
})
.done(function (data) {
	console.log(data);
});

你以为上面那段代码会输出8是吗?我也这样以为,遗憾的是,只有JQuery1.8以后的版本才会满足你的期待。而1.8以前的版本,只会输出2

read more