吹哨人与预测
在重大事件爆发的质变之前,往往有一个量变酝酿期.在量变开始的时候, 有部分敏锐的人知道了,并且宣传了出来(吹哨人). 然而任何国家和地方政府都是维稳和不专业的,会有意无意的不传播这个事件.这就形成了重大事件必然爆发的预测.
重要的一点是,重大事件的爆发,会引发哪些必然产生的关联事件?就如同蝴蝶效应. 但又和蝴蝶效应不同的是,蝴蝶效应的影响方向是随机的,而重大事件的影响方向有很多是确定和必然的.要如同公式一般预先推导出因果关系,就能形成预测.
在重大事件爆发的质变之前,往往有一个量变酝酿期.在量变开始的时候, 有部分敏锐的人知道了,并且宣传了出来(吹哨人). 然而任何国家和地方政府都是维稳和不专业的,会有意无意的不传播这个事件.这就形成了重大事件必然爆发的预测.
重要的一点是,重大事件的爆发,会引发哪些必然产生的关联事件?就如同蝴蝶效应. 但又和蝴蝶效应不同的是,蝴蝶效应的影响方向是随机的,而重大事件的影响方向有很多是确定和必然的.要如同公式一般预先推导出因果关系,就能形成预测.
我觉得在教西方拉丁语系历史的时候,应该吧人名地名中英文并列, 并且指出相关语源, 原因是:坑爹的翻译....
dead-tree 纸质书,纸质的. 纸=死掉的树,哈哈
merriam webster , 好像会给这些俚语一个正确的解释, 而不是把deadtree翻译成死树. 比如今日(2020-2-26)的流行词就是pandemic
这两个之间关系的历史似乎非常古老了.
这儿有一篇文章讲述两者间的不同,两者都是js后缀, 似乎主要的不同是JScript对ActiveX通过IE进行控制.
MDN上的说明
JScript 手册
发现const和let有个特别的用法,可以将Object里面的元素展开, 使用花括号包住Object中的key即可:
x={a:1,b:2}
const {a,b} = x //a=1,b=2
y={c:1,d:2}
const {c,d} = y //c=1,d=2
这样在require中可以将下一级的元素直接用于上一级
const {readFile, writeFile} = require('fs') //readFile和writeFile可以直接使用
原来,这个叫做解构赋值
除了能使用Object解构赋值, Array也可以.
使用Array解构赋值,某种程度上实现了函数多返回值
function f() {
return [1, 2];
}
var a, b;
[a, b] = f();
console.log(a); // 1
console.log(b); // 2
这里面用于正则表达式提取匹配值也是很有意思的用法, 正则表达式需要用括号组合出不同的匹配组
function parseProtocol(url) {
var parsedURL = /^(\w+)\:\/\/([^\/]+)\/(.*)$/.exec(url);
if (!parsedURL) {
return false;
}
console.log(parsedURL); // ["https://developer.mozilla.org/en-US/Web/JavaScript", "https", "developer.mozilla.org", "en-US/Web/JavaScript"]
var [, protocol, fullhost, fullpath] = parsedURL;
return protocol;
}
console.log(parseProtocol('https://developer.mozilla.org/en-US/Web/JavaScript')); // "https"
对于Object的结构,除了基本的:
var o = {p: 42, q: true};
var {p, q} = o;
console.log(p); // 42
console.log(q); // true
还可以对其值进行解构,相当于重命名了变量
var o = {p: 42, q: true};
var {p: foo, q: bar} = o;
console.log(foo); // 42
console.log(bar); // true
Array和Object的结构还都有默认值
var {a = 10, b = 5} = {a: 3};
console.log(a); // 3
console.log(b); // 5
最后是看起来很晕的用于函数参数的解构, 相当于默认值
function drawES2015Chart({size = 'big', cords = { x: 0, y: 0 }, radius = 25} = {})
{
console.log(size, cords, radius);
// do some chart drawing
}
drawES2015Chart({
cords: { x: 18, y: 30 },
radius: 30
});
还TMD可以结构嵌套的Array和Object!!!,并且还能用在For循环里面!!
Excel日期值是使用一个浮点数表示的, 整数部分表示日期,小数部分表示时间.
整数日期部分,从1900-1-1算做1,每过1天+1.
小数部分/1 = 这一天过了百分之多少, 一天606024=86400秒, 所以换算成秒数是: 小数部分/(1/86400).
Javascript日期值是一个整数, 是从1970-1-1 08:00:00开始计0, 每过1毫秒+1. new Date('1970-1-1 08:00:00').valueOf()等于0, new Date('1970-1-1 08:00:01').valueOf()等于1000.
所以从JavaScript的日期值换算成Excel日期值, 用Excel公式表示:
=JsDateValue/86400+date(1970,1,1)+time(8,0,0) 直接在手机的设置-应用-正在运行的应用中看. 获得App的包名和启动页Activity
fiddler似乎是一个比我想象中强大的工具啊,以前没有深入研究,现在发现不止能解码HTTPS,还能通过FiddlerScript做一些更NB的操作, 嗯,凡有script的都很高级.
fiddler2和fiddler4以前没搞明白区别,现在知道fiddler2是基于.net 2.0架构的,fiddler 4是基于.net 4.0架构的. 根据腾讯软件管家, fiddler2在2016年停更了, 最后版本是2.6.2.3,fiddler4今天最新版本是5.0.20194.41348.
fiddler官网
官方入门文档
本地就是https://127.0.0.1:8888,http://127.0.0.1:8888, 代理是保证流量转向Fiddler.
除了在被抓机子上设置代理外,还要下载并安装证书为信任证书,安装地址: http://127.0.0.1:8888. windows ios android都有不同的安装方式. 证书用于解密HTTPS流量.
可以对比两个Session的不同.同时选中两个Session就可以看到Compare菜单. 不过点击会发现找不到WinDiff, 原来这个是要安装的. 下载地址.
下载后解压缩到Fiddler根目录, 在tools->options->tools中配置File Diff tool即可.
官网介绍是这儿, 除了在右侧能看到FiddlerScript以外,还可以通过Rules->Customize rules...打开Fiddler Script Editor编辑查看.
文件虽然是js,然而使用的是微软的JScript.net, 这是手册
Fiddler能否收到某个消息后自动触发一个提醒?
自己写UTF-8格式的csv文件用excel打开时乱码,通过notepad打开看了下与excel保存的csv的编码区别:是UTF-8和带有BOM的UTF-8的区别.
JAVA输出带BOM的UTF-8编码的文件这个文章讲了原因.
通过HEX EDITER NEO打开两个文件后,发现带BOM的UTF-8前面有EF BB BF这样的一段.
在JS中可以这样写:
fs.writeFile('test.txt', '\ufeff举个例子','utf8', function (err) {})
参考
你可能奇怪为什么是\ufeff,因为\u后面只能跟4个16进制数字,然后这个\ufeff是微软推荐的
关于转义字符
Object.prototype.toString.call(SomeObj)
Type-C最强科普,建议收藏这个文章写得很全面详细,下面做个简单版本。
首先Type-C接口只是个接口,这个接口一般能承载什么呢?