周一在 AWS 上弄了一台新的服务器,用了官方的
Amazon Linux 2 LTS Candidate AMI 2017.12.0 (HVM), SSD Volume Type
镜像。然后上去直接用 yum 安装了 mysql 命令行客户端。

1
yum install mysql -y

完全没注意它用的是 mariadb 5.6.x 的版本……而我们的数据库用的是 AWS RDS MySQL 5.7.14。

结果今天上去一看,AWS S3 上的 binlog 备份全都只有一两 KB……

吓得赶紧排查,原来是 mysqlbinlog 版本太旧了,才发现这特么用的是 mariadb 5.6 的包。

MySQL 官网 下载 yum 源的 rpm 包

1
2
3
4
wget https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm
rpm -ivh mysql57-community-release-el7-11.noarch.rpm
yum update
yum install mysql

终于搞定。

参考:

https://dev.mysql.com/doc/refman/5.7/en/linux-installation.html

本文介绍 OpenSSL 命令行进行 RSA 加密、解密、签名、验证的操作,但不涉及 RSA 算法原理解析,如有兴趣,可以阅读阮一峰的《RSA算法原理》。如果你只想知道 RSA 是什么,那么你只要记住:RSA 是一种加密算法,使用两个密钥,一个叫公钥,一个叫私钥,使用公钥加密的密文只有使用私钥才可以解密,反之亦然。

Read More

TypeScript 是 JavaScript 的超集,相比 JavaScript,其最关键的功能是静态类型检查 (Type Guard)。然而 JavaScript 本身是没有静态类型检查功能的,TypeScript 编译器也仅提供了 ECMAScript 标准里的标准库类型声明,只能识别 TypeScript 代码里的类型。

那么 TypeScript 中如何引用一个 JavaScript 文件呢?例如使用 lodash,async 等著名的 JavaScript 第三方库。答案是通过声明文件(Declaration Files)

Read More

我们知道 NPM 包可以有内建的 TS 声明文件,从而免去使用 typings 工具安装 TS 声明文件的操作。那既然可以有内建的声明文件,为何还需要额外安装呢?因为不是所有人都在使用 TypeScript,很多 NPM 模块都是纯 JavaScript 编写的,其作者没有太大的可能性为之编写模块声明文件。而且内建的声明文件有一定约束。

TypeScript 的 DefinitelyTyped 声明文件有两种写法,一种叫做全局类型声明(Global Type Definition),另一个则是叫做模块导出声明(External Module Definition)

Read More