最新研究:在手机上,Data-url和CSS Sprites哪一个更快? 大约一个月前,我做了一些研究,以了解为什么我所看到使用Data URI的表现不佳。我的结果发布后,从更广泛的网络性能界更深入的问题是:
“好吧,你怎么看Data-URI技术,仅仅是减少页面上的HTTP请求数吗?”
...
有趣的是,要在数据未缓存的条件下几乎所有的所有浏览器的中CSS Sprites都比Data-URI快几百毫秒左右 。这是CSS Sprites的事实,尽管它需要一个额外的连接,包括TCP重启动招致所有相关的连接开销!
...
基于这项研究,我建议限制使用小Data-URI,15 - 20KB的数据,不超过3 - 5个实例,在移动端这似乎是一个很好的经验法则!
Node.js 编程的未来 近日Node.js的项目负责人在Google Group讨论区发了一个贴子,来表述Node.js的未来走向。
他表示自v0.12版本后Node.js不会再增加新的特性,而会关注性能的提升。
回调依然是实现异步的默认方式;Generators 和 Promises 的模式非常有意义,但不会设成默认;
Streams流会更持久,更快,和完全向下兼容。兼容模式(或老模式)的API更干净,你可以“暂停”流,然后再次安全地读取;我们会不断公布对流扩展的细节;
Domains会被重构以便支持更通用的持续追踪系统,或者由用户启动可选的错误处理机制;虽然他可以由用户来定制,但会一直放在Node的默认安装包里;
一句命令快速合并 JS、CSS 在项目开发环境下,我们会把 JS 代码尽可能模块化,方便管理和修改,这就避免不了会出现一个项目自身 JS 文件数量达到 10 个或者更多。
而项目上线后,会要求将所有 JS 文件合并为 1 个或者几个,手动的操作虽然也不是问题,但每次修改更新都要手动操作合并一遍,这就肯定是个噩梦了。
这种情况下,一些工具也就随之产生,比如在线合并,一些网站提供js文件上传,然后合并,但这还是很麻烦,如果开发环境没有网络呢?
这会我就想到了 windows 系统下的 cmd 里的 copy 命令,它虽然是个复制的功能,但实则也是可以实现合并文件的需求,下面就看下这句代码:
copy a.js+b.js+c.js abc.js /b
PaaS乱局:Container的新机遇 从技术上看,Container并非近几年的创新,OpenVZ、FreeBSD jails、Solaris Zones等都是Container技术(轻量级虚拟化技术,OS层虚拟化技术)的实现,而Fedora和Mozilla中国的区代表Gerard Braad在接受CSDN采访时进一步扩展了Container的概念:
浏览器的沙箱从资源隔离的角度,以及Java的J2EE Container从标准抽象化的角度,其实跟Container的概念是一致的。
当下,PaaS越来越多的和Container联系在一起,Container的高资源利用率等特性恰恰是PaaS需要的。
Container的优势
程显峰将Container的优势总结为以下四点:
移动网站性能优化:网页加载技术概览 性能一直是网站成功的关键。越来越多的研究已经证明,不管是小型电商,还是像沃尔玛那样的连锁店,即使是页面加载时间方面的细微改善,都可以带来更多的业务,更多的广告收入,更多的用户粘性和更多的客户满意度。
在过去几年,Web开发者都是基于改善硬件或者提高带宽速度来优化用户体验。但是最近几年,爆炸式的移动Web浏览器的使用打破了这个途径。低带宽,高延迟,小内存,低处理器性能的移动设备环境,迫使开发者不得不想办法通过优化前端页面的性能来满足用户的性能预期。
在强调如何解决移动端性能问题上,这篇文章总结了一些前端优化的案例,并且概括了一些加速页面的方法和策略。
Tessel:用JavaScript做嵌入式开发 Tessel是一个针对软件开发者的可连接网络的微控制器。
嵌入式开发就像写一个网络应用或手机应用一样简单。只不过是建立一个真实产品的原型,改善遥感技术的体验以及通过WiFi来更新罢了。它创造了一种新与屏幕之外的生活互联的新方式。
$ npm install hardware -g
$ tessel shell
> var tessel = require('tessel')
> tessel.led(1).blink()
> tessel.led(2).blink()
详见官方主页:
technical.io 在ES5中实现MapReduce 简单说来,映射就是创建了一个新的列表来保存新的答案。而化简操作指的是对一个列表的元素进行适当的合并;
这项功能已经被大量使用在NoSQL数据库中,其实在ES5中已经默认加入了这种支持;如Array中的filter, map, reduce:
[1,2,3,4,5].filter(function(obj){
return obj < 3
});
[9,8,5,2,3,4,5].map(function(obj){
return obj + 2;
});
[9,8,5,2,3,4,5].reduce(function(sum, val){
return sum += val;
}, 0);
这里有个老外详解了它们的用法;
为什么JavaScript有能力成为未来企业级编程语言? 毫无疑问,自从上世纪90年代中期发行以来,JavaScript就已经成为最流行的Web开发语言之一了。在2012年9月份,行业分析公司RedMonk就公布了JavaScript在开发语言里已经处于遥遥领先的地位。这主要归功于JavaScript提供丰富的、动态的网页内容的能力,以及JavaScript的轻便性和高易用性。
尽管JavaScript最初只是一个浏览器脚本语言,但是近几年,我们已经能够明显看到它在不断地演变:在桌面端、移动设备和服务端Web App领域都有所发展。在不久的将来,JavaScript有望成为IT企业里占据主导地位的开发语言——最终取代现在普遍使用的C,C++和Java开发语言。
图解C++、CoffeeScript、Ruby复杂度 这里拿来比较的概念既包括类和操作这样大的范畴,也包括if-else状态和while循环这样的较细节的地方。从不同的角度比较语言的复杂度肯定会大不相同,所以这些数字只能粗略地反映语言复杂度。但无论如何,我觉得还是得到了一些有趣的数据。
同样,我对其它静态语言,比如F#和Scala一起做比较也很感兴趣,可惜我并不熟悉它们,所以很难做出正确的比较。
Web App框架发展趋势及现状分析 摩尔定律作为指引PC发展最重要的定律,同样也在移动设备的发展上起着重要的作用。国内某款按照互联网思路开发手机的大佬曾宣称:手机CPU的发展速度可能会超过PC的发展速度。按照这个思路可以预见,手机的处理能力将会达到甚至超过PC的处理能力。与此同时,手机浏览器的处理能力将会和PC浏览器能力不相上下。在硬件飞速发展的同时,操作系统和软件的更新也在快速演进。继iOS超强的硬件加速能力之后,在Android 4.0中,为系统默认引入硬件加速功能成为了最大卖点。这将会为Android系统带来更加流畅的界面体验,同时也会为浏览器带来更好的Canvas绘制性能以及CSS Animation的效果。不仅如此,在2012年2月,Chrome for Android的发布也进一步推动了手机浏览器的发展。Chrome for Android直接移植了桌面版Chrome 16.0的代码,同样延续了Chrome在启动速度、渲染速度、网页加载速度以及基于V8引擎的JavaScript执行速度这些可以秒杀同行的能力。