Fiddler捕捉不到https请求的解决

 

最近几天发现我电脑上的fiddler捕捉不到https请求了,今天实在无奈google之,最终找到了解决方法:

https://groups.google.com/forum/#!searchin/httpfiddler/crypto$20rsa/httpfiddler/TIAHpFLMx-U/j_99RRCFLGUJ

具体就是打开文件夹

C:\Users\yournamehere\appdata\Roaming\Microsoft\Crypto\RSA\S-some-random-string-here

然后使用一个可以搜索文件内容的工具搜索Fiddler。例如我使用的是nodepad++,会搜索到一个文件,将该文件删除,重新打开fiddler即可

Posted in Uncategorized.

Excel中如何使用多选框

 

详见附件

Posted in Uncategorized.

WOPI中对docx”抱歉 无法打开此文档进行编辑”

 

WOPI server及host都配置安装完成后,发现pptx\xlsx均可正常查看编辑,但docx只能查看不能编辑,最终发现这个解释:

 

http://stackoverflow.com/questions/17065029/can-i-just-use-office-web-apps-server

You can write your own server that implements WOPI protocol, this will support PPTX/XSLX in view/edit mode, DOCX/PDF in view mode only. WOPI server is pretty simple to implement.

To edit word docs you need to implement Cobalt or FSSHTTP/FSSHTTPB protocol.

 

实际上,我们从discovery文件中也能看到这个要求:

image

找到原因就好说了,以.net为例,你可以引用官方的cobalt dll或者使用这个实现

https://github.com/marx-yu/WopiHost

 

一个好消息是新版的不需要cobalt了   

https://blogs.office.com/2016/05/04/office-online-server-now-available/

Posted in Uncategorized.

使用数据来挑选空气净化器

市场上的空气净化器种类繁多, 怎样挑选一个性价比最高的呢?  

由于空气净化器的CADR值较为重要, 那我们完全可以通过价格与CADR值的比较来进行评价, 因此根据这个思路我们只要爬上一些数据就可以了。

最终我写了个小爬虫从京东爬到了约200件商品, 结果如下:

image

 

完整数据下载

从数据上看, 小米还是值得买的, 所以最终我选择了小米pro

Posted in Uncategorized.

停电后自动发送通知

 

      由于一旦公司停电需要采取一些措施, 故需要在停电后可以及时通知到相关人员, 开始还想着服务器是不是可以自带UPS供电的检测, 结果发现木有这种功能。 忽然想到停电时机房由于UPS所以可以继续工作几个小时, 而机房外的设备则都会关机, 那是不是可以通过在机房不断检测机房外的设备是否存活来指示是否停电了呢?

      既然有了方案,接下来就是实现了,因为有一些简单逻辑判断, 所以就不直接写脚本了, 而使用了node.js, 源码如下:

/************使用submail发送短信,请提前在submail申请短信服务,相关配置项Start*********************/
var projectIdPowercut = "11"; //templateId
var projectIdPoweron = "11"; //templateId
var appId = "11";
var appKey = "11";
/************使用submail发送短信,请提前在submail申请短信服务,相关配置项End**********************/
//需要定期ping的服务器,通过ping结果来判断是否已经停电
var serverAddresses = ['172.16.227.1'];
//通知短信接收人
var smsReceiver = ["131111111","181111111"];
//每10分钟检测一次
var detectPeriod = 1000 * 60 * 10;
//var detectPeriod = 1000 * 5;
var ping = require('ping');
var request = require('request');
//通过该变量保证每次停电只发送一次短信
var isAliveInlast = true;
function doPing() {
    serverAddresses.forEach(function (host) {
        ping.sys.probe(host, function (isAlive) {
            var msg = isAlive ? 'host ' + host + ' is alive' : 'host ' + host + ' is dead';
            console.log(msg);
            if (!isAlive) {
                if (isAliveInlast) {
                    sendPowerCut(msg);
                }
                isAliveInlast = false;
            } else {
                if (!isAliveInlast) {
                    sendPowerOn(msg);
                }
                isAliveInlast = true;
            }
            setTimeout(doPing, detectPeriod)
        });
    });
}
function sendPowerCut(msg) {
    sendSMS(msg,projectIdPowercut);
}
function sendPowerOn(msg) {
    sendSMS(msg,projectIdPoweron);
}
function sendSMS(msg,pjId) {
    console.log("send msg:" + msg);
    var sendSmsOptions = {
        strictSSL:false,
        url: "https://api.submail.cn/message/multixsend",
        method: "post",
        json: true,
        body: {
            appid: appId,
            signature: appKey,
            project: pjId,
            multi: buildMultipleNums(),
        }
    };
    request(sendSmsOptions, function (err, response, body) {
        if (err) {
            console.log("SMS send failuer:" + err);
        } else {
            console.log("Send sunccess, response:" + body);
        }
    });
}
function buildMultipleNums() {
    return smsReceiver.map(x => {
        return {
            "to": x
        };
    });
}
doPing();

      你需要将这段脚本运行在一台有UPS供电的机器上(当然,建议使用pm2运行,做到开机自动后台启动),同时配置一台机房外的设备地址,例如可以使用一台路由器的Ip。

       发送短信使用的是submail, 直接将相关参数修改即可。

Posted in Uncategorized.