(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

WP文章导入完成

jekyll-import把文章都import过来了,结果基本满意

  • wordpress里用的geshi那个插件,现在代码的显示都不正常了
  • categories导入的有问题,多个分类的都不能build出正确的链接
  • 图片的问题还没解决(这个写个脚本刷链接应该就可以了)

想写个脚本一次刷好这两个issue,考虑了1分钟,决定还是手动修改,可以顺便复习下以前写过的东西还感觉挺好的。 周末有空慢慢改吧。

PS:原来两年才写了不到70篇文,我太弱了

END

两个CSS的坑

突然又觉得说是坑有点太过了,定位为trick应该比较合适

read more

在windows上用jekyll太难了

研究了一下午,结果发现跟所有linux产品的windows移植(or阉割)版一样:想要用jekyll,就免不了——折腾

整个折腾过程如下:

  1. 安装jekyll(废话)
  2. 一来就遇到个编码的问题,google了半天还是stackoverflow靠谱,环境变量里改一下就可以解决了:
set LC_ALL=en_US.UTF-8
	set LANG=en_US.UTF-8
	
  1. 为了格式化上面那段代码又产生了另一个蛋疼的问题:jekyll依赖于python
  2. 然后就是最新的pygments竟然有BUG
  3. 终于折腾完毕,终于可以在我大windows上调试了
END

hello new blog

一是因为国内的VPS都挺坑的,二是觉得还是要写点东西(总不能用QQ空间吧……) 下定决心还是不再继续租VPS了,把所有博文转过来(一是原来的blog本来就没流量,也不在乎评论。二是用github装逼犯儿更足)

deadline:7月26

开始研究jekyll

END

坑爹的ASP.Net MVC3 RedirectResult

他代码是这样写的:

[SuppressMessage("Microsoft.Design", "CA1054:UriParametersShouldNotBeStrings", MessageId = "0#", 
Justification = "Response.Redirect() takes its URI as a string parameter.")]
public RedirectResult(string url, bool permanent) {
    if (String.IsNullOrEmpty(url)) {
        throw new ArgumentException(MvcResources.Common_NullOrEmpty, "url");
    }

    Permanent = permanent;
    Url = url;
}

然后metadata里的注释写的是:

// Summary:

//     Initializes a new instance of the System.Web.Mvc.RedirectResult class.

//

// Parameters:

//   url:

//     The target URL.

//

// Exceptions:

//   System.ArgumentNullException:

//     The url parameter is null.

public RedirectResult(string url);

我就呵呵了,不是说好的只有在url是null的时候抛ArgumentNullException么,为啥连string.Empty也抛?

END

.Net中DateTime的大坑

Long story in short:当使用JavaScriptSerializer去序列化一个DateTime值的时候,如果这个值的Kindunspecified,则会根据Timezone去序列化DateTime

这就包含了一个隐含的BUG:如果DateTime做了持久化操作在还原时,比如从String “2013-3-1 12:00:00”中初始化DateTime的时候,不会有Kind。此时如果在用JavaScriptSerializer去序列化,则有可能得到的result是“2013-3-1 12:00:00” +- N

顺手吐槽:有源代码就是好,开始就误解Asp.Net MVC3了,原以为Json Response有啥特别的处理,结果发现只是一句简单的

if (Data != null) {
    JavaScriptSerializer serializer = new JavaScriptSerializer();
    response.Write(serializer.Serialize(Data));
}
END

七周七语言读后感

###Gains[0]###

得Jolt奖的书都很NB,毋庸置疑。只算是比较认真的读了一遍,书中的自习题都没做过(估计做了就真要用七周了),周末断断续续在读,被喷了好几次zhuangbility了(去满记甜品也在看、starbucks也在看),用了N周总算是看完了。

作者也很NB,不但能玩转这么多种语言,而且还能直接找到好几种语言的作者直接交流,段位略高。书中对每种语言的介绍也很厉害,从语法基础到核心竞争力再到drawback一气呵成,所以基本上每种语言都可以流畅的在两个小时左右读完。

写书厉害的大牛才是真大牛,反过来,如果你不能很好的表达你对技术的理解,那么你一定不是真大牛

read more

Browser Cache

###先说结论:###

  1. Google最牛逼。
  2. 利用浏览器缓存的最佳实践是: 让response header里的Cache-Control:max-age=天长地久 给每个静态资源打上fingerprint(有proxy挡在前面就用改文件名,没proxy改querystring就够了)

再来开始扯

read more

同步的Jsonp == shit

http://stackoverflow.com/questions/631609/ajax-synchronous-callbacks

上面的那个SO的帖子里解释的很清楚了,反思一下,有时候真心有点异想天开了,jsonp本来就是一个script tag的hack,哪有可能像真的ajax请求一样做到很多事情

BTW:jquery中的async:false还木有怎么看懂,都怪1.5以后的$.ajax改了很多还和deferred关联到一起了——

// if we're in sync mode or it's in cache

// and has been retrieved directly (IE6 &amp; IE7)

// we need to manually fire the callback

if (!s.async || xhr.readyState === 4) {
	callback();
} else {
	handle = ++xhrId;
	if (xhrOnUnloadAbort) {
		// Create the active xhrs callbacks list if needed

		// and attach the unload handler

		if (!xhrCallbacks) {
			xhrCallbacks = {};
			jQuery(window).unload(xhrOnUnloadAbort);
		}
	// Add to list of active xhrs callbacks

		xhrCallbacks[handle] = callback;
	}
	xhr.onreadystatechange = callback;
}

本来想吐槽一下jquery的,明明$.ajax({jsonp:"callback",async:false}); 就是个错误的调用方式(伪命题),为何还要允许这种方式存在?

不过一想到jquery本来就是个javascript的库,心下也就释然了。

END

通用设计原则:除非已经完备,不要提交数据。

难得能在周一早上来这么早的。

难得在周一早上能看到这么有营养的东西:http://news.cnblogs.com/n/162954/

END

速记_From121015_To121107

先写标题

再编辑的时候已经过了两个星期了。。

###透明### 跟其他部门打交道时的体会——A调用B,B再去调用C帮A完成某些操作,如果A反而感觉不到B(或者是忽略了B)的存在,其实也是一种挺厉害的设计的。好像说的有点抽象,说白了就是如果可以让customer忽略掉了中间过程的存在,可能会使问题更加清晰和简单。再白一点:化简中间过程,隐藏非主要逻辑。上升到哲学的高度就是——程序就是输入变输出。

###弱类型的致命伤### 不可靠什么都是坑爹的,用的好的话,javascript这种渣语言都能写操作系统呢!虽然可能是偏激了些,但就我感觉弱类型最致命的还是intellicense不好做啊(比方说function的参数就没法出东西来),编程体验有些差劲(其实也可以理解为不可靠好像)。

###好记性不如烂笔头### 真理啊,我还想到个啥来着,直接就忘了。。。 看来还是至少要记个标题啊

END