魏长东

weichangdong

phantomjs casperjs 太牛逼了(没有之一)

//var server = require('webserver').create();
var casper = require('casper').create({
    verbose: true,
    logLevel: 'debug'
});
 
var system = require('system');
//casper.echo(system.args[4]);
//phantom.exit();
var  pass = system.args[4];

var verify = '';
casper.echo("==========");
 
 
casper.start('http://weichangdong.com/index.php/admin');

casper.then(function(){
	this.fill('form',{
		'name': 'admin',
		'password': pass
	},false);
});

// casper.thenClick('#name');
//casper.thenClick('#password');
casper.thenClick('form button');

casper.run(function(){
	var self = this;
	casper.echo("============="+self.getCurrentUrl()+'=======');

	if(self.exists('#typecho-message')){
		this.echo('get content ... ','ERROR');
		self.captureSelector('verify.png', '#typecho-message');
	}else{
		self.capture('renren.png');
	}
	self.exit();
});

casperjs login189.js pass

直接部分截图成功!!!!!!

有时间好好研究下

超线程 多核 多处理器区别

1 超线程技术

每个单位时间内,CPU只能处理一个线程(Thread)。除非有两个核心处理单元,否则要想在单位时间内处理超过一个的线程是不可能的。

超线程HT(Hyper-Threading)技术是在单个核心处理单元中集成两个逻辑处理单元,也就是一个实体内核(共享的运算单元),两个逻辑内核(有各自独立的处理器状态),在一颗CPU同时执行多个程序而共同分享一颗CPU内的资源,理论上要像两颗CPU一样在同一时间执行两个线程,P4处理器需要多加入一个Logical CPU Pointer(逻辑处理单元)。因此新一代的P4 的面积比以往的P4增大了5%。而其余部分如ALU(整数运算单元)、FPU(浮点运算单元)、L2 Cache(二级缓存)则保持不变,这些部分是被分享的。

虽然采用超线程技术能同时执行两个线程,但它并不象两个真正的CPU那样,每各CPU都具有独立的资源。当两个线程都同时需要某一个资源时,其中一个要暂时停止,并让出资源,直到这些资源闲置后才能继续。因此超线程的性能并不等于两颗CPU的性能。

2 多处理器

多处理器(Multiprocessor)系统由不同芯片上的多个处理器组成。多处理器系统因IT服务器的应用在上世纪九十年代得以普及。在当时,它们是可以插入机架服务器的处理器主板。现在,多处理器系统可以构建在同一块电路板上,处理器之间通过一个高速通信接口连接。

»»阅读全文

域名解析

CNAME	*	默认	wcd.xxx.com
A		www	默认	123.456.789.222
A		@	默认	123.456.789.222

lua lua

1、ngx.get_phase

Syntaxstr=ngx.get_phase()

Context init_by_lua*, init_worker_by_lua*, ssl_certificate_by_lua*, set_by_lua*, rewrite_by_lua*, access_by_lua*, content_by_lua*, header_filter_by_lua*, body_filter_by_lua*, log_by_lua*, ngx.timer.*, balancer_by_lua*

指令功能:返回当前运行的阶段名字。

init上下文为init_by_luainit_by_lua_file

init_worker上下文为init_worker_by_luainit_worker_by_lua_file

ssl_cert上下文为ssl_certificate_by_lua_block  ssl_certificate_by_lua_file

set上下文为 set_by_lua set_by_lua_file

rewrite上下文为rewrite_by_lua  rewrite_by_lua_file

balancer上下文为balancer_by_lua_block balancer_by_lua_file

access上下文为access_by_lua  access_by_lua_file

content上下文为content_by_lua content_by_lua_file

header_filter上下文为body_filter_by_lua body_filter_by_lua_file

body_filter上下文为log_by_lualog_by_lua_file

log上下文为log_by_lua log_by_lua_file

timer上下文为使用ngx.timer的回调函数;

 

2、lua_package_path

syntaxlua_package_path app/lib/?.lua;app/etc/?.lua;

default:编译时的lua_path

contexthttp

examplelua_package_path "$prefix/app/lib/?.lua;$prefix/app/etc/?.lua;$prefix/app/src/?.lua;;";

指令功能:指明lua库的位置,一般是.lua,在nginx配置里可以直接调用,而不用指定目录。


3、lua_package_cpath

syntaxlua_package_path app/lib/?.so;app/etc/?.so;

default:编译时的lua_cpath

contexthttp

examplelua_package_cpath "$prefix/app/lib/?.so;$prefix/../luajit/lib/lua/5.1/?.so;;";

指令功能:指明lua C库的位置,一般是.so,在nginx配置里可以直接调用,而不用指定目录。


4、lua_max_running_timers

Syntaxlua_max_running_timers <count>

Defaultlua_max_running_timers 256

Contexthttp

Examplelua_max_running_timers 512;

指令功能:设置running timers(回调函数还在运行的timer)的最大值。


5、lua_max_pending_timers

Syntaxlua_max_pending_timers <count>

Defaultlua_max_pending_timers 1024

Contexthttp

Examplelua_max_running_timers 512;

指令功能:设置pending timers(还未过期的timer)的最大值。


6、lua_check_client_abort

syntaxlua_check_client_abort on|off;

default:  off

contexthttp/server/location/location-if

examplelua_check_client_abort on

指令功能:控制是否检查premature client connection abortion,如果打开该选项,当client过早关闭连接时,会清除所有的lualight threads”。


7、lua_socket_log_errors

Syntaxlua_socket_log_errors on|off

Defaultlua_socket_log_errors on

Contexthttp/server/location

Examplelua_socket_log_errors off;

指令功能:在发生TCPUDP cosocket错误时,该指令可以切换错误的日志记录方式,如果已经有合适的处理方式,该指令相当于off,否则就会记录到error log(比较消耗性能)。


8、lua_http10_buffering

Syntaxlua_http10_buffering on|off

Defaultlua_http10_buffering on

Contexthttp/server/location/location-if

Examplelua_http10_buffering off;

指令功能:当请求是HTTP1.0或更老版本时,该指令用于enable/disable 自动的响应缓冲,当响应body特别大时,建议调成off,以免内存消耗过多。


9、lua_shared_dict

syntaxlua_shared_dict <name> <size>

defaultno

contexthttp

examplelua_shared_dict dogs 10m;

指令功能:定义共享内存及大小。

很好用的软件(chrome插件)

chrome 浏览器上可以玩转好多好玩意。

markdown相关,可以装换成pdf

 Markdown  Editer

 Markdown Preview Plus

模拟请求的 帅的很 

 RestEasy HttpRequester PostMan

域名出手

现以下域名均可出手,有意联系qq 545825965。

www.0huaqian.com 零花钱

www.mobimagic.cn 摩比神器

www.360batteryplus.com 360电池

www.baidudianqi.com 百度电器

www.70shuo.com 麒麟说

www.70say.com 麒麟说

yii1扑捉php错误

因为php环境可能配置的不是很完善,php的500错误,只是表现在nginx的access日志,一直以为是redis处理不过来(每秒请求1300)。

最后发现是代码迁移过程中,php版本变化了,有带吗报错,但是没有显现出来。通过下面这个方法,直到了是有php报错,然后很快就修复了,问题解决了。

public function actionError()
{
    if($error=Yii::app()->errorHandler->error)
        $this->render('error', $error);
}

nginx-push-stream-module 使用

安装完成之后,实现了我一直以来想实现的效果。浏览器上显示了推送的消息。不是浏览器主动请求触发的。

大体流程这样的,现在浏览器上访问一个地址,然后这个请求应该是一直没断。然后我在服务器发送一条消息,浏览器就显示了这条消息。好神奇啊,有木有~~~~

web-push.png

下面给出安装的过程

»»阅读全文

php 科学计数法还原

有时候需要用php的microtime做唯一的id,但是生成之后,显示出来就成科学记数法了,用下面代码可以还原。
function NumToStr($num){ 
    if (stripos($num,'e')===false) return $num; 
   // $num = trim(preg_replace('/[=\'"]/','',$num,1),'"');//出现科学计数法,还原成字符串 
    $result = ""; 
    while ($num > 0){ 
        $v = $num - floor($num / 10)*10; 
        $num = floor($num / 10); 
        $result   =   $v . $result; 
    }//开源代码phpfensi.com 
    return $result; 
}