标签: nodejs

Sequelize With SQLite

BMCD由于不想再附加一个MongoDB的依赖,于是选用了SQLite作为数据库。不过手写SQL语句实在是太烦了,于是我又选用了Sequelilze作为SQLite的ORM模型处理。

折腾了一天之后稍微总结一下它的用法

var Sequelize = require('sequelize');
var sequelize = new Sequelize('bmcd', null, null,
...

fibjs vs nodejs(3)

响马回复了

@孢子响马:同时你这个测试中大家的 mongodb 都是一个连接,因此其实在请求 mongodb 时是串行的,所以你这个其实是在测试 mongodb 的 qps

于是改了一下代码,创建了一个500连接的连接池

fibjs

var db = require('db');
var http = require('http');

var connectPool = [];
...

fibjs vs nodejs(4)

突然想到Node.JS中有种很常用的优化方法,是利用异步的特性不管执行是否成功,先返回HTTP响应,于是按照这种方法我又改了一下代码

var http = require('http');
var mongodb = require('mongodb').MongoClient;
mongodb.connect('mongodb://localhost/fibvsnode?maxPoolSiz
...

nodejs的https坑

最近同学在写学校的一个公共API,用的是nodejs的restify框架。完成基础之后开始压测,QPS只有20……

20……对于一个公共API来说不是调用一下就死的事情么。第一怀疑对象自然是数据库了,抽出业务逻辑然后压数据库,QPS终于上升了,达到了30,后端是oracle的数据库,node的oracle这个包不支持连接池。换成另外的支持连接池的包也无济于事。

后来突然想起来为了省事,node...


for of和forEach的效率比较

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

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

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
...

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

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

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


fibjs vs nodejs

网上见过的对比都是只有一个Hello, world!的输出。其实这毫无意义啊。于是打算自己敲一个对比

大致思路是收到http请求后去mongodb插一条数据,插完返回一段json,用来简单模拟一个创建的请求,以求更贴近业务

先说一下运行环境
CentOS 6.5 X86_64
双路Xeon X5470
16G内存

然后贴代码


先贴fibjs的

var db = require('d
...

解决win8下使用微软账户登录后留下中文用户文件夹导致node-gyp无法编译

在win8下使用需要编译的npm包时,如果用户文件夹是中文的,可能会遇到“error MSB4025: 未能加载项目文件,给定编码中的字符无效”错误。网上看了一圈有两种方案,

其一是修改node-gyp的代码,转换文件编码

http://my.oschina.net/tearlight/blog/279797

另一种就是修改注册表,然后修改用户文件夹改到一个英文目录中。

但是修改用户文件夹...


nodejs CorkedRequest导致内存泄露

0x00 状态

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

0x01 堆内存分析

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


杭JS Day1

今天是杭JS第一天,感觉得至少象征性写点什么

杭JS

见到了好多菊苣,也听说了好多以前从没听说过的方法和类库。感觉信息量有点大,让我处理一阵子,还在等处理完成的callback呢。写着这篇文章帮助整理一下思路吧

DSC_0135.JPG

简单说说第一天的议程吧。Node.JS初学,希望各位Speaker如果有机会读到这篇文章不要打我

介绍啥的我就不说了(:з」∠)


Then.js的链式写法挺吸引我的,而且也提供...


fibjs vs node(2)

后来想起来fibjs社区里响马提到用keep-alive测试一发,于是又跑了一遍测试

源码见上篇文章

fibjs

[bangbang93@10-4-14-175 ~]$ ab -n 100000 -c 500 -k http://server.bangbang93.com:12345/
This is ApacheBench, Version 2.3 <$Revision: 65565
...

2014年总结-开源仓库

前面那篇年终总结笼统的按照时间总结了一下博客里的文章。今天来说说开源。

今年自己的开源项目又增添了几个新坑。在这里简单介绍&&总结一发。如果有兴趣的话可以通过pr、issue或者评论留言的方式深♂入♂交♂流。

nicoloop

一个洗脑向的niconiconi无限循环。第一次也是唯一一次使用meteor框架,所以不会做防注入】

QQ截图20141231021002


flappy-nico

只是简单替换...


修复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
...

ucloud 的 ufile js sdk 真菜……

因为有上传大文件的需求,所以准备使用ufile做存储,可以有效利用服务器内网带宽

于是开始看起ufile的sdk和文档,结果发现

稍微再往下翻翻

你用utf8读二进制文件……能不丢字节才有鬼哦

tab和空格混写又是几个意思

最终一怒之下放弃了nodejs的sdk,自己实现的签名算法,结果看前端的jssdk的时候

初始化分片的xhr请求有个ajax.send(file),直接把文件发上去了,那

...

blog又搬家了

这次又放弃了wordpress,因为wordpress的二次开发实在是挺难受的……一直想给编辑器加一个粘贴上传的功能,还有其他一些速度上的优化,或者玩玩service worker,但是尤其是service worker,想了想还不如干脆重写一个,正好还能得到一个前端试验场地,于是就有了

https://github.com/bangbang93/freyja

这个项目的第一个实例就是现在跑着的这

...