posted in ClickHouse 

基本操作语句

导入文件数据到数据库

clickhouse-client --port=9002 --query "INSERT INTO tutorial.visits_v1 FORMAT TSV" --max_insert_block_size=100000 < ./visits_v1.tsv

--port:指定端口
--query:查询语句

posted in Sublime 

简介

ctags插件用于实现代码跳转跟踪,用来调试代码。

安装

第一步:
mac下安装:brew install ctags

第二步:
打开菜单在Preferences菜单中打开Package settings->ctags->settings-user和settings-default把default中的配置全部复制到user中,然后改一下command配置项,为ctags的可执行文件路径,即ctags路径

第三步:
配置快捷键:配置在sublime中使用Ctrl+左键单击函数跳转、Ctrl+右键单击跳回函数调用位置 复制以下代码到 Preferences->Package Settings->Ctags->Mouse Bindings-User

[
    {
        "button": "button1",
        "count": 1,
        "press_command": "drag_select",
        "modifiers": ["ctrl"],
        "command": "navigate_to_definition"
    },
    {
        "button": "button2",
        "count": 1,
        "modifiers": ["ctrl"],
        "command": "jump_prev"
    }
]
posted in Postman 

后端接口

public function store(Request $request){
    return Formater::ajaxReturn(0, 'success',['csrf_token'=>csrf_token()]);
}

预处理脚本

var host = pm.environment.get("URL");

pm.sendRequest(host+"/activity/zhenxing/store/41/z359Md3q", function (err, response) {
    if (response.code === 200) {
        console.log(response.json());
        var res = response.json();
        var csrf_token = res.data.csrf_token;

        pm.environment.set("csrf_token", csrf_token);
    }
});
posted in 每日总结 

今天在调试企业微信授权的时候,在授权后获取用户信息的时候,报错:Failed to get user openid:redirect_uri unauthorized

官方显示该错误是因为回调地址域名,没有添加到可信域名当中。但是已经检查多次,已经添加了,又折腾了半天,在官网问答页面看到了相似的问题,官方回复说是获取access_token的secret不是获取用户信息的应用的,但是检查数据库内的secret,发现是正确的。

后来猜测可能是缓存的数据没有变,改代码,临时关闭缓存,测试通过。

posted in Postman 

pm.environment.set("timestamps", Math.floor(new Date().getTime() / 1000));
var token = "lBZXpB5uRw5M";
var timestamps = pm.environment.get("timestamps");

var data = request.data; //获取请求参数,转为json
console.log("data:", data)
var newdata = [];
newdata.push({
            name: 'timestamp',
            value: timestamps
        })
for (var a in data) {
    if (a !== 'sign' && a !== 'timestamp') { //过滤掉sign参数,生成键值对象{name,value}
        newdata.push({
            name: a,
            value: data[a]
        })
    }
}
//排序
newdata.sort(function (a, b) {
    return a.name === b.name ? 0 : a.name > b.name ? 1 : -1
});
//拼接字符串
for (var ar = [], i = 0; newdata.length > i; i++) {
    var key = newdata[i].name;
    var val = newdata[i].value;
    if(key == 'name'){
        val = encodeURIComponent(newdata[i].value);
    }
    
    key && val && ar.push(key + "=" + val)
}

str = ar.join("&"); //拼接字符串
str = str+token
// str = encodeURIComponent(str);
console.log(str);

str = CryptoJS.MD5(str).toString().toLowerCase(); //md5加密后转大写
pm.environment.set("sign", str);  //把sign设置为环境变量
console.log(str);