TJ Holowaychuk将Express维护权移交给StrongLoop 我们非常高兴和荣幸地宣布,今天上午,TJ Holowaychuk已转让Express 项目和Expressjs.com 域名的维护权到StrongLoop。
从去年StrongLoop成立开始,我们一直在支持类似Express这样的基础项目。LoopBack一个我们支持的开源框架,像许多其他node框架一样,是建立在Express的基础上。所以,跟你们一样,我们对Express非常依赖。我们很高兴能有机会扩大我们的贡献,并帮助保持Express的稳定和强大。
TJ一直是StrongLoop的朋友,StrongLoop里的每个人都非常感谢这一切,及他对node社区做的贡献。我们从他那学到了很多,谢谢!
在node.js响应流中设置多个Set-Cookie header属性 有时你可能想在response响应中设置两次相同的header属性,比如设置两个cookie(Set-Cookie),但writeHead或setHead出现两个相同的属性时会被覆盖并合并成一个。但如何才能实现这一目标呢? HTTP response 有一个 writeHead对象? 其实可以通过一个数组来实现。
res.setHeader('Set-Cookie', [ 'mycookie1=value1', 'mycookie2=value2']); Google官方支持的NodeJS访问API,提供后台登录授权 Google官方支持的NodeJS集成客户端,用以访问Google APIs, 支持OAuth 2.0授信及登录认证。登录以后即可在后台访问例如 Google Drive(云存储), Google Analytics, Gmail等服务。此库通过npm发布。通过以下命令安装googleapis及其依赖
$ npm install googleapis
Amazon云增长过快,吓坏股东 Amazon在过去十年推出了很多惊人的业务。她发明并建立了将近50亿美元的云计算业务,很好地迎合了善变的软件开发人员。大企业软件公司,如IBM和惠普,甚至谷歌都在追赶Amazon,不管他们承不承认,云计算是科技行业的未来。
但是这将会是什么样的未来?亚马逊昨天表示,虽然其云计算业务去年达到90%增长,但利润还是显著较少。亚马逊的AWS云业务弥补了大部分其它业务(连同其信用卡及广告收入)的资产负债表。上个季度,该业务的利润增长了38%,营收同比增长了60%。换句话说,亚马逊的利润率正在下滑。
OneBody:开源的社交网络,邮件列表,词典和内容管理系统 OneBody是一个基于Web的,开源的社交网络,邮件列表,在线词典和轻量级内容管理系统。
它像Facebook,Google Groups和SharePoint的混合体,但它是完全免费和开源的。
OneBody基于Ruby on Rails和MySQL,在churches社区已经使用7年了!
树树莓派推出新版本Model B+ 两年前我们推出了现在Raspberry Pi的B型号。我们经常被很多帮助改善我们产品的人询问,是否会推出新的型号。这个不是“Raspberry Pi 2”,而是原来树莓派版本的最终演变。现在我非常高兴地宣布,这个型号已经做出来了,35美元 - 它跟之前的价格一样,我们称之为 Raspberry Pi Model B+.
在nginx中使用lua脚本 在之前的一篇文章中我们介绍过, 在高并发情况下,应该使用异步模式。
Lua是一种跟JavaScript很像的语言,Ngix_Lua同样使用异步单线程,语法甚至比JS更加简单,之前的评测指出,Ngix_lua的性能几乎是Node.JS的一倍。
通过lua-nginx-module即可在nginx上启动lua脚本。
Python成为美国大学第一流行的教学编程语言 具体的讲,在计算机科学专业中,前10所中的8所(80%)和前39中的27所(90%)高校,将Python作为CS0或CS1课程。
文章指出,三年前 Mark Guzdial 的博客指出Python将在教育部门掘起,现在这一观点已经成为现实。
Java的痛 在2014年,如果一个程序员在命令行中运行一段简单的程序变得非常困难,那么这就是不正常的。
我写了些代码去连接 Keybase 和 OpenKeychain, 本计划写更多。因为这是一个Android App,而且代码是用Java写的,我相信也有很多人使用Java,那些人有能力使用它,所以我也用了。但是这个东西写起来不应该这么困难。
JavaScript最大堆栈的数量 你对JavaScript引擎能进行多少次递归调用好奇吗?下面的函数可以让你找到答案:
function computeMaxCallStackSize() {
try {
return 1 + computeMaxCallStackSize();
} catch (e) {
return 1;
}
}