不作死就不会死——重装OS X记
不作死就不会死,简直真理。
一个新的MBA,被我折腾了一天时间,直接就变成砖头了……
不作死就不会死,简直真理。
一个新的MBA,被我折腾了一天时间,直接就变成砖头了……
运气不错,有时间可以研究一些新玩意,就抓起了原来一直没好好看看的Backbone(严格来说,Backbone是现在流行的MV* javascript大军里资历最老的几个了,只是对我来说是新而已)
一边code一边看posts一边就开始写文章好了,前戏都省了,直接就是Pros/Cons:
其实应该算是2013年的流水账总结文的,在< new Date("2014-1-10")
的时候写下来应该还不算晚。
又是年底了,又到了各种有感而发的时候,每到这个时候,思绪都会乱到想写个文都只有起个“Promise&&最具体原则&&sth-else”这种奇葩名字了。
心态好一点,少点吐槽多点思考,才是,真的。
写的js库提供了三个API——A、B、C,单独运行的时候好好的,但是当
API.A();
API.B();
API.C();
的时候,灾难就降临了。我对这个library的设计的本意是所有接口都是声明式(Declarative programming)的,但现在任意调换上面三句代码的顺序,行为竟然不一样了。更扯的是,就算是用同样是顺序调用,产生的行为也会不一样。听起来很像是多线程是吧?
###sync-ajax
遇到的公共框架的bug(异步操作返回之前不该执行的操作执行了)想要hack一下解决,想到jquery里有这样的用法:$.ajax(url, { async: false })
,就跑去看jquery.ajax的源代码,看看jq是怎么block掉js执行的。ctrl+f了半天木有找到while
,觉weird,觉厉。开始仔细的一点一点的看源代码,还是没看到什么地方有奇怪的trick可以block js执行。
全部都是看这个帖子有感What’s the hardest bug you’ve debugged?
这篇黑的有点丧心病狂了,其实问题基本上都在我自己。但光看结果的话,确实可以总结为:因为替换了一个jquery的方法调用,一下子把1.8s的执行时间优化到了18ms。
崇拜这种高端黑: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也就没那么火了。还真矛盾。
胜过千言以后再多说几句:其实这篇应该才是part1,起到提纲挈领之用。
黑JQuery的系列文章一直都还没写出来,今天读JQuery代码,反倒是多了点体会。(话说回来,JQuery的源代码可能是让我收益最多的JS代码了)
这个问题前前后后折磨了我两个星期——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
,问题解决!
看文 7个示例科普CPU Cache 有感:
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
。
用jekyll-import
把文章都import过来了,结果基本满意
想写个脚本一次刷好这两个issue,考虑了1分钟,决定还是手动修改,可以顺便复习下以前写过的东西还感觉挺好的。 周末有空慢慢改吧。
PS:原来两年才写了不到70篇文,我太弱了