python twisted 程序hello world


import traceback

def hello():
    print 'Hello from the reactor loop!'
    print 'Lately I feel like I\'m stuck in a rut.'
    s_data = traceback.format_stack()
    print s_data

from twisted.internet import reactor

reactor.callWhenRunning(hello)

print 'Starting the reactor.'
reactor.run()

启动以后将执行hello 函数,其中reactor 为单例模式,可以在任何地方引用,均获得同一个实例对象。
错误出现的时候,可以用 traceback.format_stack() 获取出错的栈信息.

ELK中kibana3 php授权方案的设计

kibana3 本身就是纯html,基于require.js 然后 结合 angular.js 实现的一个单页面应用。
所以,修改起来相对简单。

1. 部署本地的php环境,
2. 把index.html 修改成 index.php 在开头直接嵌入相关权限判断的php代码
3. 接口权限的判断,修改权限的本质是对公网屏蔽ES存储的细节。考虑到kibana的前端代码有一个url集中配置,直接修改config.js

32 elasticsearch: “http://”+window.location.hostname+”/proxy.php?q=”,

4. 编写proxy.php

<?php

define('TIMEOUT',10);
define('CONNECTTIMEOUT',5);

function _http($url, $data,$method) {
    $ch = curl_init($url);
    $options = array(
        CURLOPT_CONNECTTIMEOUT => CONNECTTIMEOUT, 
        CURLOPT_TIMEOUT => TIMEOUT, 
        CURLOPT_RETURNTRANSFER => 1,
        CURLOPT_FRESH_CONNECT => true,
        CURLOPT_CUSTOMREQUEST => $method,
    );  

	if('POST' == $method || 'PUT' == $method) {
		$options[CURLOPT_POST] = true;
		$options[CURLOPT_POSTFIELDS] = $data;
	}
    curl_setopt_array($ch, $options);
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}


function post($url, $data) {
	return _http($url,$data,'POST');
}

function put($url, $data) {
	return _http($url,$data,'PUT');
}

function del($url) {
	return _http($url,'','DELETE');
}

$url = $_GET['q'];
$method = $_SERVER['REQUEST_METHOD'];
$host = 'http://localhost:9200/';
$get_url = $host . $url ;

if("GET" == $method) {
	$content = file_get_contents($get_url);
	echo $content;
} else if("POST" == $method){
	$data = $GLOBALS['HTTP_RAW_POST_DATA'];
	$content = post($get_url,$data);
	echo $content;
} else if("PUT" == $method) {
	$data = file_get_contents('php://input');
	$content = put($get_url,$data);
	echo $content;
} else if("DELETE" == $method) {
	$content = del($get_url);
	echo $content;
}

python pdb 简单使用

启动pdb:

python -m pdb

定义断点:

b lineno
b filename:lineno

查看断点列表: b

删除断点:
cl 断点编号

运行程序: r

c : 断点运行

查看变量的值:
print 变量名

查看代码: l

n 下一步
s 下一步 会进入到函数内部

bt 函数调用栈