2016-05-25
今天在朋友圈刷屏了,不想跟风,干脆在这里写点东西,权当念想。
第一次听说杨绛先生,是在高中,有篇语文中学到的,关于她跟钱钟书先生的故事,记不清了,那时候很奇怪,为啥女的也可以叫先生,后来才知晓,先生是一种很少的女士能有的尊称。
她的那句 『你的问题就在于读书太少而想的太多』,足够受用终生,很多人,尤其是我自己,在几年短短的职业生涯中,感受到,很多问题,不能干...
Read More
2016-05-24
最早接触 kue 是在 0.7 之前的版本,功能很少,很弱,但还是很好用的,那时候找过一些其他的消息队列,如 rabbitmq,kafka 之类的,但是都觉得太重了,跟 nodejs 的融合还是不太合适。
找着找着,就找到了 tj 大神搞的 kue,基于 redis 的 subpub 做的优先级消息队列,适合做一些离线任务,比如统计运算、发邮件消息以及异步业...
Read More
2016-05-22
2016-06-22 更新:MongoID 不能保证连续增长,因此,在这种情况下,不适合此种方案,如果是为了保证速度以及效率的话,可以放缓存,比如 redis 以及 memcached 之类的。
正文说起分页,最容易想起的就是 offset+limit,在 mongodb 里面可以用 skip+limit 实现,应该说这是最容易实现的功能,与前端的交互来说非...
Read More
2016-05-17
今天把做的项目直接做了 docker 化,一个是前端纯静态化的,另一个是后端 Node.js App,对于这两个项目,想用最简单的方式来使用 docker
静态项目最容易,直接用 nginx,将编译好的静态文件直接丢到 volums 里面即可:
123456789version: '2'services: nginx: image...
Read More
2016-05-12
运维了这么些日子的 ELK,解决了些问题,总结如下:
禁止内存换出 memlock在 docker 中运行 elasticsearch 有个很大的问题就是
1bootstrap.mlockall: true
这个选项不起作用,总是会报错,后来查了一下,在普通机器上需要运行这个命令:
1ulimit -l unlimited
但是如果你在 docker 里...
Read More
2016-05-08
很多时候,会发现会有一种求完美的心理:
这个功能实现好差,重构下吧;
新出了个工具或者框架,在项目中试试吧;
试过新工具或者框架之后,恩,好棒,用来改改其他的项目;
哎呀,时间不够了,但是还想做更好,怎么办。。。放着吧。。。;
应该说,大部分时间,完美心理可以促进我们主动去学习新知识,新框架,尤其是最近几年,技术是日新月异,我们能及时跟进潮流。
只是,有...
Read More
2016-05-06
发现 zombie.js 还是太弱了,很多地方不能满足需求,包括 request 的 HTTP 头也不合乎标准,于是硬着头去尝试下 PhantomJS。
这一试,我就后悔了,这么好的东西我居然不先尝试!怎么说呢,它比 zombie 好用太多,加载处理速度方面也是远远超过。唯一比较遗憾的是没有原生的 nodejs 接口,它只是一个环境,像 mocha 这样有自...
Read More
2016-05-05
这几天在做爬虫的东西,腾讯的登录真能把人搞死。。。首先是对 http 头做了校验,一旦顺序或者大小写不对,立马报 403 错误,然后最后密码加密那块 md5 + salt + RSA + 还有自创的 TEA 加密,我完全被搞晕了。
只能说它们的安全措施是做得非常好的,我搞了几天,完全用它的 JS 代码,本来还有希望的,今天再一看,登录相关的逻辑又改了。。。
...
Read More
2016-04-28
这几天为了给系统新做个后台,到处找开源项目,真给我找到了,https://github.com/marmelab/ng-admin
用完只能说,太方便了~~~ 这么好的项目为啥我现在才发现,之前我是使用 angular 一步步搭起来了,自从用了 ng-admin 之后,2 天时间系统已经成形了,结合 rest API,后台的开发很简单,待我这个项目做好之后写...
Read More
2016-04-25
一直都说,webpack 一般只作为前端项目的开发工具使用,非常方便,但是因为它太好用了,而且 react 后端渲染也需要用到,所以纯粹用到后端项目也是可以的。
比如我用在 koa 项目中,为了更好得使用 babel,(babel-node 太慢了。。。项目大了之后挺要命的。。。),用 webpack 的 hot reload,缓存,然后部分编译,不要太爽~...
Read More
2016-04-22
记得上次说到的 #1 中提到,需要搭建 ELK 来实现数据需求,其实还有另一个需求:日志系统。
联系到最近一直在看的 docker,我就直接用它来部署了,申请了台 8 核 16G 机器,CentOS7,其实 ELK 还是得深入看看,毕竟 docker 只是用来部署,而不是帮你解决日志系统的问题。
项目地址在这里:https://github.com/xizh...
Read More
2016-04-21
最近的一直进行的工作包括提升 mongo 的性能,在我接手的这段时间里,在 newrelic 上的平均响应时长是 200-300ms,遇到任务堵塞还会暴涨到 600ms 左右一小段时间。
第一次尝试是升级 mongoose@4.4.9,效果是很明显的,响应时长立马降下来了,平均响应时长 100ms 左右。但,我们观察到 mongo 的连接数直接升了一倍,ap...
Read More
2016-04-20
部署 deploy由于我们线上项目全部部署在高配主机上,使用的是 pm2 部署,于是当我刚接手的时候,十几台主机全部用 pm2 部署的意义不知你是否明白,每台部署至少 1 分钟,然后串行部署,于是开始部署之后,可以很悠闲地去喝杯茶了
解决方案么,可以考虑用 ansible,chef,puppet 之类的工具,我用 ansible 部署之后,1-2 分钟就可以...
Read More
2016-04-15
一般来说,我们的项目都是放在反向代理后面的,比如 nginx,haproxy 之类的,这时候就会有个问题,你获取的 IP 地址可能一直是前面代理的 IP,而不是用户端的 IP,于是这时候 express 就需要设置下 trust proxy 了
默认是 false,也就是不信任任何代理,比如你所在的私有网络是 10.0.0.0/8,那么直接设置:
...
Read More
2016-04-14
话说在我接手公司的项目后花时间去优化 API 性能的时候,在 newrelic 上面看到,大部分都是 mongo 的时间,因此很有必要花大时间去优化。
我们用的是 mongoose@3.8.23,然后修正了其中的复制...
Read More