Frossky 发布的文章
JS DOM选择器 selectors
带BOM的UTF-8
自己写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是微软推荐的
关于转义字符
Node显示对象的类名
Object.prototype.toString.call(SomeObj)
免费图床
为什么有的Type-C能支持显示器有的不能?type-C之谜
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标准
绿联type-c转HDMI测试
用小米笔记本Pro(15.6寸)Win10系统测试:
|笔记本端口|显示器端口|结果|
|--|
|Type-C充电口|MHL-HDMI|OK|
|Type-C充电口|普通HDMI|OK|
|第二个Type-C口|MHL-HDMI|Fail|
|第二个Type-C口|普通HDMI|Fail|
使用chrome单步调试node应用:node --inspect-brk
感觉真是神器:
这有一篇介绍的文章。
示例程序(嗯一定要及其简单):
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中重新运行。
计算复合增长率公式
经过验证,是对的。
公式为
复合增长率 = exp(ln(终值/初值)/年期)-1
预测学?
超预测
superforecast
wiki superforecast
豆瓣
中文版 超预测
我有85%的信心说:看了这篇笔记,可以不用读原书了。
比尔盖茨说:重要的评估手段对改善人类状况的意义让我震惊,如果你树立清晰的目标,制定有助于实现目标的评估方法,你就可以获得难以置信的进步,这似乎是基本的道理,但令人吃惊的是,人们经常做不到这一点,或者很难正确执行。
“我们让员工知道我们希望他们能够实现的目标,但是——这个但是非常重要,我们不告诉他们如何实现这些目标。”
信号与噪声
贝叶斯方法
思考
历史和未来都充满不确定性,有很多小概率事件实际上会发生,就像这次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 : 奇门遁甲,看起来都像是骗子
预测之心理公式
- 人们倾向于不变,不变者常常是沉默的;(比例待定)
- 反之,要求变革者往往声音更大,使其看起来更像是主流声音;
- 如果要求变革的声音有悖于人们日常听到的道德伦理、显得太叛逆而不敢让人支持时,其声音会比实际支持人数显得小,实际支持人数可能更多(比如投票分掉银行的现金,少有人会大声支持,但实际投票的话支持的人会很多);
- 28原则并不总是适用。评估人们智力水平及其决策时,应该知道智商平均值是100,其后需要评估决策参与者群体的平均智商往往超过100(金融时报猜数字,平均值的2/3获胜问题,以及杀人游戏的投票问题);
EMBA和企业管理专业与预测相关的课程
EMBA: 数据、模型与决策, 财务报表分析与经营决策, 项目投资与融资决策, 风险管理
企业管理: 运筹学
Javascript反编译
因为Webpack、browserify等等进行了资源打包,要将网上的代码解析出来需要反编译:
debundle
玩puppeteer
官网
github puppetter
puppetter API
中文版puppetter API
免登录
先找到登录后的Cookies,用这个下载:edit this cookie
(Puppeteer cookie 使用,免登录 )[https://guozh.net/puppeteer-cookie-login/]
how-to-save-cookies-and-load-it-in-another-puppeteer-session
save cookies
const fs = require('fs').promises;
// ... puppeteer code
const cookies = await page.cookies();
await fs.writeFile('./cookies.json', JSON.stringify(cookies, null, 2));
load cookies
const fs = require('fs').promises;
// ... puppeteer code
const cookiesString = await fs.readFile('./cookies.json');
const cookies = JSON.parse(cookiesString);
await page.setCookie(...cookies);
puppeteer-extra
Github 主页
puppeteer-extra是一个monorepo项目,这个框架里面还能再放其他各种插件。
puppeteer-extra-plugin-repl
debug
Google的Puppeteer Debugging
how to debug puppeteer
Youtube:Web Scraping with Node.js & Puppeteer ( rants included, no extra charge)
视频推荐:brilliant
拦截request
Puppeteer拦截某条url并返回其响应内容(场景和方法) API RequestInterception拦截器的使用
await page.setRequestInterception(true);
page.on('request', request => {
request.respond({
status: 404,
contentType: 'text/plain',
body: 'Not Found!'
});
});
S6换钥匙电池
主钥匙是用CR1632电池,这是汽车之家论坛上的教程。
主钥匙没有螺丝,全卡扣结构。取下机械钥匙后,在圆角缺口内侧有个豁口,用一字起子撬开即可。
开启python3.x
字符串新功能
在python 3.6增加了f-string,对比js:
//js
var a = "x"
`this is ${a}` //this is x
#python
a = "x"
f"this is {a}" #this is x
"this is %s" % a #this is x