2015年5月26日
2015年5月11日
去年10月份,在我们被产品节奏逼到墙角无路可走的时候,我们在几乎没有准备的情况下,在团队中引入了Git。目前时间已经过去半年,回顾这半年的时间,基本还是运作得比较顺利。当然过程中也少不了踩坑,因此记录一些心得。
如果用一句话来说的话,我们是冲“分支”而来的。背景如下:
团队的固定版本节奏为两周一个版本,一周半的时间开发,半周时间测试发布。如果使用软件工程中的概念来说的话,这是一个比较典型的瀑布式流程,即“需求->设计->开发->测试->发布”,然后周而复始,过程中几乎没有重叠。
伴随着瀑布式的流程,代码也只有一份,“开发->改bug->发布”,周而复始。
直到去年10月,公司做了一场声势浩大的营销活动,灾难开始了:一方面需要以并不确定的研发周期支持各种运营活动(运营时间不等人,必须快速写快速发),一方面是运营活动带来大量客户,与客户相关的流程也陷入频繁修改发布的过程。此外支持各种终端需求也集中爆发,需要web侧快速跟进上线。当然,还有一个东西,就是上面瀑布流程中两周发布一次的“主版本”。当这么多版本交叠在一起时,我们发现必须要引入分支来管理研发过程。于是果断切Git。
2015年3月11日
2014年11月19日
按照官方介绍,PM2是一款用于生产环境Node.js应用进程管理的工具。按照民间介绍,它主要有这样几个功能:保证Node.js应用永远在线(挂掉自动重启)、自动负载均衡、零中断重启应用等。
鉴于它是如此优秀,这里还是简要介绍一下前两个功能。
首先,它是一个Node.js写的工具,使用npm即可安装使用:
npm install -g pm2
如果不使用pm2,运行Node.js程序是这样:
node xxx.js
使用pm2,是这样:
pm2 start xxx.js
如果你正在开发Node.js应用,需要在代码变更后自动重启应用,只需要在pm2的参数中加上--watch
即可:
pm2 start xxx.js --watch
2014年7月25日
2014年6月29日
2014年5月14日
2014年3月19日
2014年1月1日
2013年12月29日
这几天,TJ大神的koa框架突然在国内火起来了,随之而来的,则是其使用的ES6生成器(Generator)引起了广大码农的强烈兴趣,各种文章也如雨后春笋般拔地而起,比如这篇、这篇、还有这篇。这个神奇的生成器被视为解决JS“回调恶魔金字塔”的利器。在动手实践之后,发现介绍ES6生成器的文章仍然有些疏漏,因此有了这篇文章,权当是对各位大大们的补充好了。
在JS的使用场景中,异步操作的处理是一个不可回避的问题,如果不做任何抽象、组织,只是“跟着感觉走”,那么面对“按顺序发起3个ajax请求”的需求,很容易就能写出如下代码(假设已引入jQuery):
// 第1个ajax请求
$.ajax({
url:'http://echo.113.im',
dateType:'json',
type:'get',
data:{
data:JSON.stringify({status:1,data:'hello world'}),
type:'json',
timeout:1000
},
success:function(data){
if(data.status === 1){
// 第2个ajax请求
$.ajax({
......此处省略500字
success:function(data){
if(data.status === 1){
// 第3个ajax请求
$.ajax({
......此处省略500字
success:function(data){
if(data.status === 1){
}
}
});
}
}
});
}
}
});
// 第1个ajax请求
$.ajax({
url:'http://echo.113.im',
dateType:'json',
type:'get',
data:{
data:JSON.stringify({status:1,data:'hello world'}),
type:'json',
timeout:1000
},
success:function(data){
if(data.status === 1){
// 第2个ajax请求
$.ajax({
......此处省略500字
success:function(data){
if(data.status === 1){
// 第3个ajax请求
$.ajax({
......此处省略500字
success:function(data){
if(data.status === 1){
}
}
});
}
}
});
}
}
});
当顺序执行的异步操作越来越多的时候,回调层级也就越多,这也就是传说中的“回调恶魔金字塔”。
2013年12月2日
2013年11月26日