蚝油茄子 五星

上面是微波做法,但主要步骤是对的。
1 茄子切蓑衣刀3分钟蒸熟装盘
2 洋葱,蒜末,辣椒粉,油混合好,炒熟
3 蚝油,生抽,糖,醋,混合拌入炒匀
4 淋在茄子上
5 点缀品:小葱花小米辣。

照烧鸡块

我改良的做法
1 鸡块切小用盐腌制十分钟
2 配制所谓照烧汁。有卖的买不到就配。生抽,醋,糖,姜蒜末,果酒(清酒、味琳)
3 中油温煎鸡块双面金黄
4 加入配好的汁水文火烧十分钟。大火收汁。
5 点缀品:大葱花熟芝麻。

发现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)

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.

抓HTTPS

除了在被抓机子上设置代理外,还要下载并安装证书为信任证书,安装地址: http://127.0.0.1:8888. windows ios android都有不同的安装方式. 证书用于解密HTTPS流量.

WinDiff

可以对比两个Session的不同.同时选中两个Session就可以看到Compare菜单. 不过点击会发现找不到WinDiff, 原来这个是要安装的. 下载地址.
下载后解压缩到Fiddler根目录, 在tools->options->tools中配置File Diff tool即可.

FiddlerScript

官网介绍是这儿, 除了在右侧能看到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是微软推荐的
关于转义字符

Type-C最强科普,建议收藏这个文章写得很全面详细,下面做个简单版本。
首先Type-C接口只是个接口,这个接口一般能承载什么呢?

  • USB2.0,480mbps
  • USB3.0(=3.1Gen1)5Gbps
  • 真USB3.1(=3.1Gen2)10Gbps
  • DP显示,DisplayPort, DP1.2/1.4,支持4K@60Hz
  • PD供电,Power Delivery,最高100W
  • 半速雷电3.0(PCIex2, 20Gbps),可以通过PCIe接外置显卡、硬盘等
  • 全速雷电3.0(PCIe x4, 40Gbps),可以通过PCIe接外置显卡、硬盘等
    另外:
  • CDLA全程数字无损音频,乐视的Type-C转音频3.5标准,不是实际USB标准

用小米笔记本Pro(15.6寸)Win10系统测试:
|笔记本端口|显示器端口|结果|
|--|
|Type-C充电口|MHL-HDMI|OK|
|Type-C充电口|普通HDMI|OK|
|第二个Type-C口|MHL-HDMI|Fail|
|第二个Type-C口|普通HDMI|Fail|

感觉真是神器:
这有一篇介绍的文章。
示例程序(嗯一定要及其简单):

a = [1,2,3]
console.log(a)

使用node --inspect-brk filename.js,可以打开一个inspect协议的端口(--inspect-brk不能放在文件名后面),端口在命令行界面中显示出来。

D:\r\puppetter\study>node --inspect-brk t2.js
Debugger listening on ws://127.0.0.1:9229/563951c4-1a03-4ca5-b17b-ffd8e8cd9d7a
For help, see: https://nodejs.org/en/docs/inspector
``
然后使用chrome进入`chrome://inspect`页面,点击`configure...`可以连接。如果是Localhost的,应该已经被自动侦测显示出来了。
确定后,可以看到下面Remote Target显示出Node的版本号、对应调试的文件名filename.js、`inpect`连接,点击后进去就能调试了。
进去后,会自动停在第一行。
单步运行第一句后,在console中就可以访问变量a,可以对a修改。
如果程序中加入语句debugger,相当于直接打断点在此处。
```javascript
a = [1,2,3]
debugger
console.log(a)

这时候直接运行的话会一直运行到debugger处。
目前来看似乎不能在devtool中直接修改代码,运行结束后也不能在devtool中重新运行。

超预测

superforecast
wiki superforecast
豆瓣
中文版 超预测
我有85%的信心说:看了这篇笔记,可以不用读原书了。

比尔盖茨说:重要的评估手段对改善人类状况的意义让我震惊,如果你树立清晰的目标,制定有助于实现目标的评估方法,你就可以获得难以置信的进步,这似乎是基本的道理,但令人吃惊的是,人们经常做不到这一点,或者很难正确执行。

“我们让员工知道我们希望他们能够实现的目标,但是——这个但是非常重要,我们不告诉他们如何实现这些目标。”

信号与噪声

多看 信号与噪声
iamtxt
豆瓣

贝叶斯方法

百度百科

思考

历史和未来都充满不确定性,有很多小概率事件实际上会发生,就像这次NCP新冠病毒一样,可能只是病毒在中间宿主上的一个基因位点突变,造成了这次的全球疫情事件。
预测都有其置信区间(概率),并且概率随着事情的不断进展变化。

对NCP的回顾

按照03年SARS、09年H1N1、13年禽流感、19年NCP,平均每5.3年有一次病毒流行。则在19年11月估计12月发生疫情的概率是1/63.6=1.6%。但出现不明原因肺炎后,这一概率应该提升到更高50%,然后考虑当地政府应对和所谓谣言,概率变成确定,考虑武汉市的流动性以及从12月8号首例、到12月31号出现27例和所谓谣言,应该得出估算,在23天、从1传播到27,背后隐匿的应该有多少?8号首例病人感染时间应该是什么时候,按平均一周潜伏期,应该是1号感染。如果按SARS来计算,其传染性可以说不强。如果按流感计算,那可能会有很多人隐匿。假如来的都是老年人,估计老人占人数的15%,那么当日所有感染者应该是27/0.15=180人。…………嗯,好像还是很难估计。

PS : 奇门遁甲,看起来都像是骗子

预测之心理公式

  1. 人们倾向于不变,不变者常常是沉默的;(比例待定)
  2. 反之,要求变革者往往声音更大,使其看起来更像是主流声音;
  3. 如果要求变革的声音有悖于人们日常听到的道德伦理、显得太叛逆而不敢让人支持时,其声音会比实际支持人数显得小,实际支持人数可能更多(比如投票分掉银行的现金,少有人会大声支持,但实际投票的话支持的人会很多);
  4. 28原则并不总是适用。评估人们智力水平及其决策时,应该知道智商平均值是100,其后需要评估决策参与者群体的平均智商往往超过100(金融时报猜数字,平均值的2/3获胜问题,以及杀人游戏的投票问题);

EMBA和企业管理专业与预测相关的课程

EMBA: 数据、模型与决策, 财务报表分析与经营决策, 项目投资与融资决策, 风险管理
企业管理: 运筹学