要用到高级功能呢,呵呵, 看看百度经验

主要是:
1 连同标题行选择数据区域后, 选择数据-排序与筛选-高级命令. 如按关键字段筛选, 只选择关键字段列就好.
2 对话框中, 列表区域选择单列的话,只会以单列计算, 选择多列的话, 多列之间是"与"的关系.
3 勾选选择不重复的记录, 确定.

var exec = require('child_process').execSync;
var cmd = "echo 'hello world'";

var options = {
  encoding: 'utf8'
};

console.log(exec(cmd, options));

今天装Canon G5800打印机驱动时候忽然给我把我自己的Wifi密码全列出来了, 让我很震撼,哈哈

Windows

  1. 输入 netsh wlan show profile 获取本机已保存的wifi SSID
  2. 3.输入 netsh wlan show profile name=“ ” key=clear 获取密码 name里写入WiFi SSID

Github上有个WIFIpass项目可以用Python一键获取,不过我觉得批处理应该也可以有类似效果. 果然在这个网址找到了bat的方式, 试了下,只适用于英文版Windows,中文的要修改下. 代码如下:

@echo off
::
:: (c) Elias Bachaalany <lallousz-x86@yahoo.com>
:: Batchography: The Art of Batch Files Programming
::
setlocal enabledelayedexpansion
:main
    title WiFiPasswordReveal v1.0 (c) lallouslab.net - The Batchography book

    echo.
    echo Reveal all saved WiFi passwords Batch file script v1.0 (c) lallouslab.net
    echo.
    echo Inspired by the book "Batchography: The Art of Batch Files Programming"
    echo.
    :: Get all the profiles
    call :get-profiles r
    :: For each profile, try to get the password
    :main-next-profile
        for /f "tokens=1* delims=," %%a in ("%r%") do (
            call :get-profile-key "%%a" key
            if "!key!" NEQ "" (
               >>"C:\WiFi-Passwords.txt" echo WiFi: [%%a] Password: [!key!]
            )
            set r=%%b
        )
        if "%r%" NEQ "" goto main-next-profile
    echo.
    pause
    goto :eof
::
:: Get the WiFi key of a given profile
:get-profile-key <1=profile-name> <2=out-profile-key>
    setlocal
    set result=
    FOR /F "usebackq tokens=2 delims=:" %%a in (
        `netsh wlan show profile name^="%~1" key^=clear ^| findstr /C:"Key Content"`) DO (
        set result=%%a
        set result=!result:~1!
    )
    (
        endlocal
        set %2=%result%
    )
    goto :eof
::
:: Get all network profiles (comma separated) into the result result-variable
:get-profiles <1=result-variable>
    setlocal
    set result=

    FOR /F "usebackq tokens=2 delims=:" %%a in (
        `netsh wlan show profiles ^| findstr /C:"All User Profile"`) DO (
        set val=%%a
        set val=!val:~1!
        set result=%!val!,!result!
    )
    (
        endlocal
        set %1=%result:~0,-1%
    )
        goto :eof

在重大事件爆发的质变之前,往往有一个量变酝酿期.在量变开始的时候, 有部分敏锐的人知道了,并且宣传了出来(吹哨人). 然而任何国家和地方政府都是维稳和不专业的,会有意无意的不传播这个事件.这就形成了重大事件必然爆发的预测.
重要的一点是,重大事件的爆发,会引发哪些必然产生的关联事件?就如同蝴蝶效应. 但又和蝴蝶效应不同的是,蝴蝶效应的影响方向是随机的,而重大事件的影响方向有很多是确定和必然的.要如同公式一般预先推导出因果关系,就能形成预测.

我觉得在教西方拉丁语系历史的时候,应该吧人名地名中英文并列, 并且指出相关语源, 原因是:坑爹的翻译....

  1. 英国-英格兰:这个翻译就有大问题, 英国在国际上称呼是UK, 是United Kingdom of Great Britain and Northern Ireland的简称,全文一个"英"字都没有. 而英格兰是England,只是英国的部分区域. 这个翻译会让人误解英国是英格兰国.更广泛的代表英国人的应该是British而不是English.
  2. 英格鲁-盎(音:昂)格鲁. 如果是盎格鲁,你会觉得跟英国毛关系没有, 其实英格鲁盎格鲁都是Anglo, 而Anglo是西班牙语的English. 另有一说是中古英语中英国人被称为Angelcynn, Angles的家庭. 当然越古老,西语/英语的区分越少. Angles是公元5世纪移民到England的一个Germanic(日耳曼,德国)人. Angle和Angel这俩词好像.
  3. Anglo-Saxon(翻译为英格鲁撒克逊)经常并称, 而Saxon(德语Sachsen)实际上是德国东部现在的一个州萨克森自由州, 其州府Dresden德累斯顿是东德仅次于柏林的第二大城市. Angles前面说了是个人,也是个部落,和Saxons部落在公元5世纪左右移民去了英国, 构成了最早的Anglo-saxon人.

dead-tree 纸质书,纸质的. 纸=死掉的树,哈哈

  • 引申为dead-tree format (纸质版), dead-tree-ware (纸件)

网站

merriam webster , 好像会给这些俚语一个正确的解释, 而不是把deadtree翻译成死树. 比如今日(2020-2-26)的流行词就是pandemic

蚝油茄子 五星

上面是微波做法,但主要步骤是对的。
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能否收到某个消息后自动触发一个提醒?