0%

写在前面

SOAR(SQL Optimizer And Rewriter)是一个对SQL进行优化和改写的自动化工具。 由小米人工智能与云平台的数据库团队开发与维护。

本来之前使用过一段时间美团的SQLAdvisor,但是依然有诸多问题无法解决,所以改用SOAR试试。

安装

下载二进制安装包

1
2
wget https://github.com/XiaoMi/soar/releases/download/0.10.0/soar.linux-amd64 -O soar
chmod a+x soar

验证安装

1
echo 'select * from film' | ./soar

配置

配置参考

写在前面

首先终端已经换为zsh了,至于怎样安装和更换默认终端,这里我就不赘述,可以参考下面网友做法

Homebrew install zsh & oh-my-zsh

安装

1
brew install nvm

设置

.bash_profile加入以下这行,让你可以直接在shell使用nvm指令

1
source $(brew --prefix nvm)/nvm.sh

重新source .bash_profile来让设定生效

1
source .bash_profile

问题

以上操作看似没有任何问题,安装node后也能使用。但是,当你第二次重新打开终端时node将不能使用,提示错误Run nvm use --delete-prefix v8.14.0 to unset it.

后面在nvm文档看到这段话Homebrew installation is not supported. If you have issues with homebrew-installed nvm, please brew uninstall it, and install it using the instructions below, before filing an issue.,额…看来没事还是要多看看文档啊,同时也有网友对此提有Issues

正确安装

推荐使用官方script安装

1
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash

最后在安装好node之后不要忘记设置alias default

1
nvm alias default 8.14.0

对数组中的对象进行排序

函数:

1
2
3
4
5
function keysort (key, desc) {
return function (a, b) {
return desc ? (a[key] < b[key]) : (a[key] > b[key]);
};
}

示例:

1
2
const arr = [{"id":2,"name":"2"},{"id":1,"name":"1"}]
arr.sort(keysort('name', 'desc'));

判断是否是Float浮点

1
2
3
function isFloat (num) {
return num !== parseInt(num);
}

保留两位小数,同时不四舍五入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// number
// num 保留位数
function toFixedNum (number, num) {
const type = typeof (number);
let number_arr = [];
if (type === 'number') {
const str = number.toString();
number_arr = str.split('.');
} else if (type === 'string') {
number_arr = number.split('.');
}
if (number_arr.length > 1) {
number = number_arr[0] + '.' + number_arr[1].substr(0, num);
}
return parseFloat(number);
}

给出开始时间和结束时间,算出中间所有的日期

1
2
3
4
5
6
7
8
9
10
11
12
13
// start : 2018-01-01
// end : 2018-01-03
// return : ["2018-01-01","2018-01-02","2018-01-03"]
function getDate (start, end) {
start = new Date(start).getTime();
end = new Date(end).getTime();
const date = [];
for (; start <= end; start += 86400000) {
const tmp = new Date(start);
date.push(tmp.getFullYear() + '-' + (tmp.getMonth() + 1) + '-' + tmp.getDate());
}
return date;
}

从数组中随机取出N个元素

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function getRandomArrayElements (arr, count) {
const shuffled = arr.slice(0);
let i = arr.length;
const min = i - count;
let temp,
index;
while (i-- > min) {
index = Math.floor((i + 1) * Math.random());
temp = shuffled[index];
shuffled[index] = shuffled[i];
shuffled[i] = temp;
}
return shuffled.slice(min);
}

简介

CleanMyMac X是一款强大的Mac系统垃圾清理工具,可以清除Mac系统多余的语言包、系统缓存、应用程序、PowerPc软件运行库等,是硬盘瘦身的好工具

官网

国际版官网

中文官网

下载地址

因为CleanMyMac对不同的版本有不同的授权信息。

下面地址均为官网下载地址https://dl.devmate.com开头。

国际版 CleanMyMac 3

国际版 CleanMyMac X

中文版 CleanMyMac 3

中文版 CleanMyMac X

MacPaw支持

可在支持中心查询许可证,或者当换机不成功时可以通过支持中心进行许可证重置。

支持中心

说在前面

压缩页面无非就是减小页面大小加快博客访问时间

实现

安装依赖

1
npm i gulp gulp-htmlclean gulp-htmlmin gulp-minify-css gulp-uglify -s

gulp配置

在根目录下创建gulpfile.js文件

gulpfile.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
var gulp = require('gulp');
var minifycss = require('gulp-minify-css');
var uglify = require('gulp-uglify');
var htmlmin = require('gulp-htmlmin');
var htmlclean = require('gulp-htmlclean');
// 压缩 public 目录 css
gulp.task('minify-css', function () {
return gulp.src('./public/**/*.css')
.pipe(minifycss())
.pipe(gulp.dest('./public'));
});
// 压缩 public 目录 html
gulp.task('minify-html', function () {
return gulp.src('./public/**/*.html')
.pipe(htmlclean())
.pipe(htmlmin({
removeComments: true,
minifyJS: true,
minifyCSS: true,
minifyURLs: true,
}))
.pipe(gulp.dest('./public'))
});
// 压缩 public/js 目录 js
gulp.task('minify-js', function () {
return gulp.src('./public/**/*.js')
.pipe(uglify())
.pipe(gulp.dest('./public'));
});
// 执行 gulp 命令时执行的任务
gulp.task('default', [
'minify-html', 'minify-css', 'minify-js'
]);

一键部署

package.json中加入如下script

1
2
3
"scripts": {
"push": "hexo cl && hexo g && gulp && hexo d"
}

然后在部署的时候只需要运行

1
npm run push