修复cnpm install命令回退npm而不是使用npminstall进行快速安装

终于受不了npm的安装速度了,每次发布的耗时都能吃顿饭,让运维配合更换cnpm后查看输出日志却还是npm的格式,而不是npminstall的格式。

运维给出了服务器上的执行脚本

LD_LIBRARY_PATH="/opt/gcc/lib64:/opt/gcc/lib:$LD_LIBRARY_PATH"
export LD_LIBRARY_PATH
NPM="/opt/node/bin/cnpm
...

nodejs CorkedRequest导致内存泄露

0x00 状态

有一个websocket长连接服务原先是用php的workerman框架跑的,但是近期出现了一些莫名其妙的bug,用Nodejs重写后接替了原先的全部流量。
最初还没什么问题。
跑了一段时间后发现内存泄露问题比较严重,服务器有8G内存,用cluster方式跑了8个进程,几乎24小时内就会吃满8g内存,导致进程被系统kill。

0x01 堆内存分析

遇到内存泄露,第一时间想到的...


CentOS 7 下MariaDB修改datadir后无法启动

前阵子想把服务器的CentOS 6.8升级上CentOS7。但是失败了,重装了系统

重装以后挂载好数据盘后发现MariaDB起不来了,查journal log,只有一行warning

can't create test file /var/lib/mysql/core.lower-test

google了一下,有两种方案

第一是说selinux导致的,但是ucloud的镜像默认就是关闭se...


记一次nodejs的长连接websocket服务故障

故障最初表现是这样的,在客户端正常连接一段时间之后,无任何征兆的服务端会突然触发close事件从而进行连接断开的清理工作,将Redis和Mysql内的在线数据都清理掉了,导致推送时找不到该设备,但是客户端直接请求服务端的数据,服务端均能够正确响应。

最初以为是node的ws模块有bug,在触发close事件的时候并没有真正关闭连接,所以在close事件触发的时候直接调用了socket._sock...


nginx+php-fpm无法使用PUT和DELETE等方法

群里讨论nginx+fastcgi和apache+mod_php时,有人提到了nginx+fcgi不支持PUT和DELETE,会报405,所以只好通过劫持405状态码的方法来处理这些方法

无标题

但是这种方法过于蛋疼,再加上我以前在写php的时候是正常使用过这些方法的,于是提出了异议并且实现了PUT方法的demo。

对比双方的fastcgi配置后,并没有发现什么区别,唯一的区别是我使用的是Teng...


Space Engineers 可编程方块从入门到放弃

好好的一个游戏,玩着玩着就写起了代码

游戏里的编辑器没有代码提示没有代码高亮,甚至连括号对齐都没有,于是我们首先需要搭一个VS下的开发环境,用于写代码

并不是所有C#的内置类或者游戏类均可用,文章的最后会说明

首先需要把游戏源码clone下来https://github.com/KeenSoftwareHouse/SpaceEngineers/

为了不要一不小心修改了游戏代码,可以在解决方...


WordPress升级PHP7后白屏

把bmclapi安顿到其他服务器上后,这台服务器终于有内存跑第二个fpm了,所以决定安装一下php7,让dz跑在5.5的fpm上,单独给wp上7

安装完成后发现首页白屏,但是error_log里没有输出,即使打开WP_DEBUG,也只有几个Notice和Deprecated,按理来说不应该会导致白屏。

直接输入url进入文章页面终于有报错了,报错信息是called undefined func...


carrotmq中文文档

CarrotMQ是一个给NodeJS使用的RabbitMQ客户端,基于官方的amqplib,能够简化amqplib的复杂的操作

Version npm
NPM Downloads
Dependencies
NPM

使用姿势

var carrotmq = require('carrotmq');
//var rabbitmqSchema = require('rabbitmq-schema'); 
var rabbitmqSchema = carrotmq.schema
...

for of和forEach的效率比较

因为最近开始用generator处理异步逻辑了,所以遇到需要循环的地方如果使用数组,数组里再有异步逻辑的话使用forEach再带一个函数进去是无法当成异步逻辑处理的,所以就想用for of循环做枚举遍历,顺手写了个小测试当做性能对比

'use strict';
let arr = [];
for(let i =0;i<10000000;i++){
    arr.push(i);
}
le
...

nodejs计算md5时未指定编码导致中文md5值错误

当使用如下代码计算md5时

crypto.createHash('md5').update('hello').digest('hex');

如果update传入的是中文字符串

crypto.createHash('md5').update('辣条').digest('hex');

计算出来的md5是
b48404099575c247af9872cd89a591fb

实际上应该是
c3ad...


自定义JSON.stringify返回的Date格式

默认情况下JS的JSON.stringify会将对象内的Date类型的属性按照ISO时间格式解析,得到的内容类似于

{"d":"2015-12-10T10:40:50.835Z"}

但是这种时间的格式在非JS运行环境下解析起来是非常费劲的,关于这件事情,Android和iOS的开发跟我抱怨了很久

后来,在stackoverflow上看到了
http://stackoverflow.com/q...


nodejs集成支付宝所遇到的坑

首先,使用express框架,能够接收到支付宝发来的POST notify请求,但是解析出来的body一直为空对象,然后将整个请求log出来查看,发现支付宝发来的Content-Type是一个奇葩的

application/x-www-form-urlencoded; text/html; charset=utf-8

这TM什么鬼玩意,到底是form还是html,于是bodyParser就扑街...


CentOS6上正常使用node 4.0.0以上的node-gyp

node4.0.0开始升级了V8引擎,所以编译安装时要求gcc 4.8以上的版本。但是CentOS6内置的GCC版本只有4.4.7,并不支持编译所需的C++11标准,二进制安装可以正常使用node,但是在安装需要编译的modules时就会报

../node_modules/nan/nan.h:41:3: error: #error This version of node/NAN/v8 requ
...

minecraft shop插件backport

原帖地址

我将其1.2.0的插件backport到1.7.10的版本,支持KCalundron。官方发布的支持Cauldron1.7.10的只有1.1.3,很多新功能和特性都没有。目前在炉心工艺三周目运行正常

backport版...


一个简单的代码行数统计工具

npm

tnpm

安装

npm install source-count -g

使用

jscount
统计当前目录


jscount ../foo
统计 ../foo


jscount -m 0
只显示总计行数,不显示文件夹和文件详情


jscount -i libs
忽略libs目录


jscount -i libs -i public/libs
忽略 libs 和 public/l...


如何正确使用hostker的git方式部署代码

git方式部署的代码,没有每天20贝壳的最低消费限制,就是没有下限【x

推广链接→https://i.zhujike.com/flag/2098

首先,说一点很重要的,创建一个新项目之后,hostker服务器上得到的并不是一个空项目,直接push会报non-fast- forward。
此时万万不可使用--force来进行push,否则只能上ftp手动处理冲突或者砍了重练。

...


使用BMCLAPI加速forge的gradlew构建速度

forge的国内速度一直差强人意,尤其是部署forge开发环境的时候,如果运气不好折腾好几天都是有可能的。自从bmclapi解决大部分人的minecraft客户端安装问题之后,我就在计划加速forge开发环境了,最近终于完工。

使用方法很简单,解压好forge的zip后,找到build.gradle,修改

http://files.minecraftforge.net/maven

h
...

CP16D1

话不多说,放图