第一根白头发
用JavaScript读取本地文件内容
随着JavaScript应用面的逐渐广泛。我们的js的要求也愈来愈高,现在我们可以用js做后端服务器(Node.js),做前端游戏模拟器(JS GameBoy Color Game Center),甚至有人用他模拟了一台pc,并且装上了linux(jslinux)在浏览器里跑。js总是给我们带来一个又一个惊喜。
随着HTML5的流行和逐渐普及,无数的好的接口也一个个的向我们走来,惊喜不断,以前一直被视为无法实现的js读取本地文件内容在现在也已经不再是什么难事了。你唯一需要关注的可能就是浏览器兼容性问题了。
今天要介绍的是使用js读取本地文件内容:
我们完全依赖FileReader类完成读取工作,你可以到w3c的网站查看相关的说明http://www.w3.org/TR/FileAPI/
然后我们需要使用到html的input标签的file类型元素
multiple=””用于设置控件为多选
下面是读取文件的代码
Continue reading
简单的JS同步调用函数实现-初探
最近自己试验性的写了一个可以实现同步调用的JS函数。
使用的递归的原理。
var syncExe = function(){ var fLen = arguments.length; var exe = function(funcs,count,sum,retval){ if(!!retval){ if(!('return' in exe)){ exe['return'] = []; } exe['return'].push(retval); } if(count == sum){ return; }else{ funcs[count](function(str){ count++; exe(funcs,count,sum,str); }); } } exe(arguments,0,fLen); return exe['return']; };
linux socket系统调用的错误码及含义
linux socket系统调用socket,accept,bind,listen,connect,send,recv等函数出错时,errno的值及其含义对应如下:
EAGAIN: Resource temporarily unavailable EWOULDBLOCK: Resource temporarily unavailable EBADF: Bad file descriptor ECONNREFUSED: Connection refused EFAULT: Bad address EINTR: Interrupted system call EINVAL: Invalid argument ENOMEM: Cannot allocate memory ENOTCONN: Transport endpoint is not connected ENOTSOCK: Socket operation on non-socket EACCES: Permission denied ECONNRESET: Connection reset by peer EDESTADDRREQ: Destination address required EMSGSIZE: Message too long ENOBUFS: No buffer space available EOPNOTSUPP: Operation not supported EPIPE: Broken pipe EPERM: Operation not permitted EADDRINUSE: Address already in use EAFNOSUPPORT: Address family not supported by protocol EALREADY: Operation already in progress EINPROGRESS: Operation now in progress EISCONN: Transport endpoint is already connected ENETUNREACH: Network is unreachable ETIMEDOUT: Connection timed out EMFILE: Too many open files ENFILE: Too many open files in system EPROTO: Protocol error EADDRINUSE: Address already in use EADDRNOTAVAIL: Cannot assign requested address ELOOP: Too many levels of symbolic links ENAMETOOLONG: File name too long ENOENT: No such file or directory ENOTDIR: Not a directory EROFS: Read-only file system EPROTONOSUPPORT: Protocol not supported
为Node.js的express框架加入session的memcache存储支持
需要的依赖:connect-memcached
var express = require('express'); var app = express.createServer(); var mcStore = require('connect-memcached')(express); app.use(express.cookieParser());//必须,用于解析cookie var mc = new mcStore({hosts: "localhost:11211"}); app.use( express.session( { key: "zensessid", //这里必须为全小写,否则每次都会构造一个新的session id和session给用户。这可能是express的一个bug,原理可能是express根据该key转小写后的字符串去查找客户端cookie里的该键值对。 secret: "zensess", //加密字符串 store:mc } ) ); app.get('/',function(req,res){ req.session.web = 'http://z-en.com'; });
新的起点,新的开始。
新的起点,新的开始。种花
Node.js连接Buffer对象的正确方法
万能的适应各种编码而且正确的拼接Buffer对象的方法是什么呢?我们从Node.js在github上的源码中找出这样一段正确读取文件,并连接buffer对象的方法:
var buffers = []; var nread = 0; readStream.on('data', function (chunk) { buffers.push(chunk); nread += chunk.length; }); readStream.on('end', function () { var buffer = null; switch(buffers.length) { case 0: buffer = new Buffer(0); break; case 1: buffer = buffers[0]; break; default: buffer = new Buffer(nread); for (var i = 0, pos = 0, l = buffers.length; i < l; i++) { var chunk = buffers[i]; chunk.copy(buffer, pos); pos += chunk.length; } break; } });
Windows的信号(Signals)
// Signal types
#define SIGINT 2 // interrupt(Ctrl+C中断)
#define SIGILL 4 // illegal instruction – invalid function image(非法指令)
#define SIGFPE 8 // floating point exception(浮点异常)
#define SIGSEGV 11 // segment violation(段错误)
#define SIGTERM 5 // Software termination signal from kill(Kill发出的软件终止)
#define SIGBREAK 21 //Ctrl-Break sequence(Ctrl+Break中断)
#define SIGABRT 22 // abnormal termination triggered by abort call(Abort)
解决64位Windows7下无法安装Python setuptools的方法
这里只针对安装时报错:“Python Version 2.7 required which was not found in the registry”的情况。
下载,解压,并运行:python27patch