Monthly Archives: 十一月 2011

Hello World

初识node.js—-异步分段读取文件

以前只是在ajax的时候使用异步编程,这次通过node.js异步读文件,和以往的同步编程确实很不一样啊!

//File System
var fs = require('fs');
//fd is the file descriptor used by the WriteStream.
var logFd;
//日志文件
var log = 'i_access.log';
//读取过程需要的
var buf,
	logSize,
	start = 0,
	length,
	offse = 0,
	logArr = '',
	LENGHT = 1024 * 1024;//每次读取的长度,1M
 
//读取文件信息,获取文件长度
fs.stat(log, function(err, stats){
	if(err) throw err;
//	console.log(JSON.stringify(stats));
	logSize = stats.size;
	//打开文件
	fs.open(log, 'r', 0666, function(err, fd){
		if(err) throw err;
		logFd = fd;
		length = LENGHT < (logSize - offse) ? LENGHT : (logSize - offse);
		buf = new Buffer(length);
		//日志读取
		readLog();
	});
});
//日志读取
function readLog(){
	//读取
	fs.read(logFd, buf, start, length, offse, function(err){
		if(err) throw err;
		//按行切分
		logArr = buf.toString('utf8').split('\n');
		var last = false;
		//判断是否是最后一次调用
		if(offse + length < logSize){
			//最后一行不完整,抛掉,下次在取
			last = logArr.pop();
		}
		//调用日志分析模块,对logArr做处理
		logAnalysis();
		//处理参数,准备下次调用
		if(last !== false){
			offse += length - last.length;
			length = LENGHT < (logSize - offse) ? LENGHT : (logSize - offse);
			buf = new Buffer(length);
			//递归读取
			if(!lastRead){
				readLog();
			}
		}
	});
}
//日志分析模块
function logAnalysis(){
	//TODO:日志分析与读取......
	console.log(logArr.length);
	console.log(logArr[0]);
	console.log(logArr[logArr.length - 1]);
	console.log('------');
}

Hello World

js触发链接

如果只是触发一个链接之前绑定的click事件,使用jquery,只要掉“$(a).click()”就可以了,但是,这种做法并不能触发链接的点击效果。
如果用js做页面的跳转,可以使用“window.location”,但如果只是想触发一个锚点,使用“window.location”在一些浏览器里仍然会带来页面刷新,这时,可以使用下面的方法:

function doClick(aId/* 链接的id */){
	if(document.all){ 
		document.getElementById(aId).click(); 
	}else{ 
		var evt = document.createEvent("MouseEvents"); 
		evt.initEvent("click", true, true); 
		document.getElementById(aId).dispatchEvent(evt); 
	}
}

日志

mac vm内使用迅雷导致风扇狂转

前天晚上用小白在VMware Fusion的xp里,使用迅雷开BT下东西,早晨发现迅雷的速度已经变成了0,东西也只下了一点点,迅雷给的提示是,“网络提供商”限制p2p,便以为真的时小区宽带限制BT,只骂了两句小区宽带,没有往别处想。
从那之后,小白的风扇开始不停狂转,后面出风口热的有些烫手,好像以前用win一样。开始还以为是浏览器flash播放器的问题,也没当回事。

刚才,可能是夜深人静的关系,风扇声音实在太大,有些受不了了,便把浏览器都关了,到活动监视器里去看,flash已经没了,但是风扇声音还是很大,再仔细看活动监视器,发现一个占cpu 99%+ 的进程,vmnet-natd。将其强制关掉,不足十秒,小白就安静下来了。。。。再打开VM、xp、迅雷,下载也正常了
搜了一下这个进程:

这个问题好像老早以前就有了.是VMware Fusion的问题.一般的解决方案好像只是重新启动mac

有人说虚拟机网络使用桥接模式就行.因为桥接模式没有用到vmnet-natd,也是一个解决方案

日志

换域名

用了半年的域名突然不行了,从昨天开始一直访问不上,貌似已被墙,不知是哪个狗娘养的干的,一个纯技术博客也不放过

无奈,临时又整了一个两美刀的info域名,先用着。另,wp里换域名的的方法:

首先手动修改options表里的两处域名,在用下面的两条sql,更新posts表:

UPDATE wp_posts SET post_content = replace(post_content,'www.jiangkl.com','www.jiangkl.com');
UPDATE wp_posts SET guid = replace(guid,'www.jiangkl.com','www.jiangkl.com');