摘要:
刚才看到一篇文章《21 nested callbacks》,作者吐槽了一下当时他学编程时的一个趣事:为了写一个HTML的动画,他写了有21层嵌套的函数。由于作者主要是抒情,所以这样的英文很不好阅读。我就把他最重要的思想提取出来。1,最初的实现,朴素的实现其实这个小哥就是想把20个div依次展现在用户的眼前。他用了JQuery库的animate函数,这个函数接受一个回调,当动画完成时这个回调函数被执行。小哥最初的想法很朴素,那就是,当第一个div被显示出来的时候,传入回调函数来显示第二个div,代码类似于:$(".disappear").click(function(){ $ 阅读全文
摘要:
公司最近要将架构迁到云上,存储用S3,服务器用EC2。为了将我们的架构变的具有横向的伸缩性,我们使用AWS的Load balancing来做负载均衡。简单来说负载均衡就是讲大量的客户端访问分发到不同的后端amazon ec2 instances中。 Amazon的Load balancing配置起来也非常简单,就是将已存在的ec2 instance添加到load balancing中。之后你可以... 阅读全文
摘要:
工作到第8年,有时会错觉地以为那些能学会的东西都已经学会了,这些年一年2门语言左右从C,C++,C#, Lisp, Ruby, Python, JavaScript一路跑来觉得没有啥可以再学的了。但是我错了,最近在看NodeJS的东西,这让我又一次地知道了业界前沿的技术,也知道其实还有许多可以学的。 编辑器也是相似的,开始Notepad++,后来Vim,后来Emacs,后来回到Vim,以为以后再... 阅读全文
摘要:
当我订阅在MouseMove事件的时候得到的点并不是等坐标距离的,也不是按像素的,为了让动画更加自然,需要用到两点间的线性插值。 private List<Point> LinearInterpolated(List<Point> trackPoints){ List<Point> result = new List<Point>(); Point start = trackPoin... 阅读全文
摘要:
微软系的工具以集成化著称,自动化构建一般也是基于Visual Studio或者它的插件。除此之外可能就是NAnt——Java中Ant的.NET版,很多开源的项目就是用NAnt来实现自动化构建的。我个人最不喜欢Ant的是他是基于XML的,我现在对XML有着本能的反感,他不符合DRY。XML中重复又没有意义的标签太多了,前几年对XML的替代可能是YAML,但是近几年随着Web开发的普及,JSON成了替代XML的不二选择,很多语言的标准库都有JSON的parser,这进一步推动了JSON这种数据交换格式的普及。Albacore是基于Ruby Rake的自动化构建工具,它语法和Rake保存一致,直接使 阅读全文
摘要:
2012过去了,真的没有什么好总结的,跟以前一样看书,学习,提高专业技能。世界末日也没有来,何必这么拼。2013了我想给今年列个计划,而这个计划可以归结为一个字:“混”。 做程序员辛苦,这个大家都知道的,做一个不断学习的程序员更是辛苦,项目的进度,知识的压力让我睡不好觉。你学的越多,分配给你的工作越多,工作越多你越是知道自己的不足。然后呢,只有拼命的继续学习,然后呢,重复这个循环。年初的时候我生... 阅读全文
摘要:
《Structure and Interpreter of Computer Program》中第1章习题1.3说到:练习1.3 请定义一个过程,它以三个数为参数,返回其中较大两个数之和。其实这一段的中文版翻译错了,其实原版是说求最大两个数的平方和。但是意思是一样的。为了这个简单的问题我也思考了挺长时间,就是得不到让我满意的解。三个数如何知道其中的两个较大的?其中的一个办法就是两两比较。但是这样做比较啰嗦,至少要比较三次。特别是用Scheme的写法。而且你最好还要定义变量,去保存中间判断结果。洗碗时我想到一个解法:先求出最小的那个,然后用(x y z)之和去减去最小的那个值。代码:(defin 阅读全文
摘要:
1,特点 1,强制Model和View的分离,也就是View负责呈现,不能修改Model。同时View中不用来包括任何业务逻辑,详见作者的论文(中文,英文)。 2,Lazy-Evaluation,所有的Attribute直到st.ToString()调用时才evaluate.这样的好处是setAttribute是Order Independent。 3,Recursive enable。 ... 阅读全文
摘要:
JQuery中的Deferred Object其实就是实现了一种异步编程模式,这个模式在CommonJS中有介绍。这种模式改变的代码的书写方式,他采用的异步模式还是回调式异步(async callback)。通常我们的异步代码都是non-blocking的,我们开一个异步操作,我们不知道什么时候完成,我们需要知道的就是这个异步操作在完成的时候通过我们传入的callback来通知我们。 具体Def... 阅读全文
摘要:
1,Base64 场景:你想把一组二进制数据表示为一组可见字符,这样在某些场合更加利于传输,比如在邮件中传输。 算法:http://zh.wikipedia.org/wiki/Base64 2,DES和RSA 场景:你想对一组二进制数据进行加密。比如你想保护你的数据不被别人窃取,即使别人有你加密后的二进制数据,但如果没有密码,他仍旧不能解开。 算法: DES:http://zh.wik... 阅读全文