nodejs 部署方式 -pm2(一)

目前Nodejs开发中有很多痛点,其中有一个是修改完代码以后需要我们重启服务才能看到效果。这样一次次的杀进程、重启,杀进程、重启很让人头大。程序员是最痛恨重复工作的物种,之前有了解过的同学可能知道forever。forever可以帮我们解决上面的问题,通过对资源变化的检测做到变化后自动重启。开发阶段我们使用node file.js来启动另外由于Nodejs的单线程,任何异常都会导致整个服务中断,这对于生产上长时间提供服务的程序来讲是不可以的,forever可以帮我们在异常后重启,保证服务一直在线,我想这也就是它名字的由来吧。但我想说的是forever不够“高!大!上!”。接下来我要介绍一个足够高大上的神器–pm2。 简介pm2=P(rocess) M(anager)2,是可以用于生产环境的Nodejs的进程管理工具,并且它内置一个负载均衡。它不仅可以保证服务不会中断一直在线,并且提供0秒reload功能,还有其他一系列进程管理、监控功能。并且使用起来非常简单。下面我将把我的使用过程分享出来,Nodejs应用是一个基于Express 4.x的应用,名称是Wolverine。     阅读全文
Pang Jian's avatar
Pang Jian 12月 02, 2016

使用 CNPM 搭建私有 NPM 仓库

我们在使用Nodejs的时候,使用npm仓库来发布和管理模块,我们可以从npm上下载别人发布的模块使用,也可以自己发布模块,有点类似于Maven,这是非常流行的开源社区模式。但是在企业内部,我们不希望我们的生产代码可以随意引用任何未经企业审核的代码;我们也不希望企业内部自己的模块发布给任意人员使用;还有一个重要的原因是很多企业内部无法连接互联网cnpm就是来解决这些问题的。官方的解释是cnpm=Company npm 环境配置 OS:Red Hat Enterprise Linux Server release 6.4 (Santiago) node:v4.4.5 npm:2.15.5 cnpm:2.10.0(截止到本文发布)     阅读全文
Pang Jian's avatar
Pang Jian 6月 01, 2016

使用 travis-ci 持续集成 Hexo 静态博客

Hexo是一个基于Nodejs的轻量级静态博客生成框架。静态博客生成程序会将我们所写的博客生成为一套HTML+CSS+JavaScript代码,我们将这个代码部署到诸如Github Page这样的地方就可以在世界任何一个地方访问我们的博客了。这种方案有一个非常有利的优点–免费。但是,hexo环境不是处处都有,换个地方写作变成了一件麻烦事。而且写完文章以后需要hexo g,hexo d等一系列操作,着实很麻烦。本篇文章利用Travis CI解决以上痛点。     阅读全文
Pang Jian's avatar
Pang Jian 5月 25, 2016

浏览器缓存知识归纳

写在开头:这篇文章是打算分享到单位内部的材料。归纳浏览器缓存也是对一个生产问题的分析总结出来的。这片文章经过脱敏以后发表到个人博客上面吧。 浏览器缓存(Browser Catching)是为了节约网络的资源加速浏览,浏览器在用户磁盘上对最近请求过的文档进行存储,当访问者再次请求这个页面时,浏览器就可以从本地磁盘显示文档,这样就可以加速页面的阅览。 —-摘自《百度百科》 浏览器缓存是提升网页性能的一大利器,但是,也是一把双刃剑。利用的好网页的性能会有大幅度提升,服务器的压力也会减小。利用的不好,也会遇到很多的问题。本文结合浏览器缓存的知识,结合真实案例进行分析,希望对读者有所帮助。     阅读全文
Pang Jian's avatar
Pang Jian 3月 05, 2016

我遇到一个 Bug,金额大于一千万就报错

这是一个在测试环境发现的一个BUG,感觉很有趣,便写出来分享一下。本文的灵感以及标题都来自于《我遇到一个BUG,每逢周三就崩溃》。我在银行做系统开发,“金额”基本上是最常见的字段,也是最不能出错的字段了。每一个错误都代表着实打实的资金损失,无论是客户的还是银行的。所以,作为开发人员,对这个字段也相对敏感一些。金额这个字段的规则也相对其他字段更复杂一些。举个例子来说,金额是一个数字,可以是这样12;当然也有小数点的情况,比如这样12.34;人们还有这样的习惯,每隔3位有一个逗号分隔符,比如这样1,000.23。可是一千万是个什么特殊情况,为什么会有问题呢?     阅读全文
Pang Jian's avatar
Pang Jian 1月 13, 2016

使用 Pjax 优化你的网站

Ajax(Asynchronous Javascript and XML)的魅力在于它的每一个成员都不是新技术,经过奇妙的结合却掀起了WEB2.0的革命。Pjax是pushState和ajax的封装,同样每一个都算不上新技术,结合起来却有着神奇的效果。     阅读全文
Pang Jian's avatar
Pang Jian 12月 03, 2015

javascript 前后端代码复用 -browserify

Nodejs将javascript带上了一个新的高度,让之运行于浏览器端的javascript可以运行在服务器端。但是Nodejs遵循Commonjs规范,不能直接运行在浏览器端。虽然是同一种语言,但是前后端有着自己的库,不能复用真是一种浪费。这时候一个神器出现了,Browserify。通过预编译,可以将Commonjs规范的后端Nodejs代码直接可以运行在浏览器端。打通了端后端代码复用的壁垒,为nodejs程序开辟了一片新天地。     阅读全文
Pang Jian's avatar
Pang Jian 11月 18, 2015

Jackson 中的那些坑

不符合驼峰规范的变量“驼峰命名法”请自行百度。简单的来说就是变量的第一个单词以小写字母开始其他单词首字母大写,或者全部单词首字母都大写,分别称为“小驼峰”和“大驼峰”     阅读全文
Pang Jian's avatar
Pang Jian 10月 30, 2015

JSON 与 Java 对象的事

很久没有写了,来清理一下杂草。这片文字是团队内其他小伙伴经常混淆的一个知识点,最初的目的是写个东西好让大家用到的时候可查,由于原文涉及公司的一个框架,不便写出来。该框架其实引用的开源框架Jackson,所以本文直接介绍Jackson部分。其实说不上介绍,约等于一个学习笔记。     阅读全文
Pang Jian's avatar
Pang Jian 9月 12, 2015

升级 Hexo2.X 到 3.0

我一般不想转或者写别人写过的一些东西,但是今天这篇文章算是转的,完全记录了我升级hexo的过程。为什么呢?实在是觊觎了很久了,一直没敢动手,3.0版本可是个大手术,据说好多主题和插件都挂了,现在这个主题我修改了不少,怕万一出个什么问题很麻烦。仅以此文来记录这次没什么意外地升级。 Hexo3.0新特性 新的命令行工具:hexo-cli 更轻量级的核心模块:generators,deployers和server都从主模块中分离出来了 新的generator Api 支持时区 更多     阅读全文
Pang Jian's avatar
Pang Jian 4月 11, 2015