0%

随手记

todo

  • [ ] 使用 unpkg 创建你的代码包( 简单, 高效, 可使用 unpkg 快速引用)
  • [ ] el-card 使用起来和 div 有些区别, 如 div 可以设置 max-height: 100%来限制高度, 但是元素放到 el-box 中就不可以使用了
  • [ ] 用于方便快捷生成 vue 代码的网页
  • [ ] 使用 docker 作为开发环境

js 写法中 .toString 和 + '' 的区别

  • 一些项目中会使用 + '' 来代替 .toString() 方法, 该写法在部分情况下会失效, 究其原因是因为 + '' 本质上是运算符, 调用的 valueOf 方法, 又因为大部分对象的 valueOf 和 toString 运算结果一致, 所以没有问题, 但是使用复杂的值类型对象, 如 moment 的时候, 就会出现问题

  • 现象: 一些项目中会使用 + '' 来代替 .toString, 因为第一种写法更简单

  • 隐患: + '' 中的 + 是运算符, 调用的是 valueOf, 而非 toString, 当一个对象的 valueOftoString 运行结果不一致的时候, 会出现错误

  • 举例:

vue 常用配置

1
2
Vue.prototype.$console = console
Vue.prototype.$moment = moment

moment

安装 moment

  • moment 分为 moment, moment-timezone 两个包, 据我习惯, 一般将两个包全部安装
  • npm 安装: npm install moment moment-timezone --save -y # npm
  • cdn 引用:
1
2
3
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.30.1/moment-with-locales.min.js"
integrity="sha512-4F1cxYdMiAW98oomSLaygEwmCnIP38pb4Kx70yQYqRwLVCs3DbRumfBq82T08g/4LJ/smbFGFpmeFlQgoDccgg=="
crossorigin="anonymous" referrerpolicy="no-referrer"></script>

初始化

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
moment.locale('zh-CN')
moment.defaultFormat = 'YYYY-MM-DD HH:mm:ss'
moment.fn.toJSON = function () {
return this.format()
}

/**
* 格式化为字符串
* @returns 序列化后的字符串, 如 1.2:3:4:55, 表示 1天 2小时 3分 4秒 550 毫秒
*/
moment.duration.fn.format = function () {
let result = [
Math.floor(this.asDays())
+ '.' + Math.floor(this.hours()).toString().padStart(2, 0),
Math.floor(this.minutes()).toString().padStart(2, 0),
Math.floor(this.seconds()).toString().padStart(2, 0)
+ '.' + Math.floor(this.milliseconds())
].join(':').replace(/0+$/, '').replace(/\.0*$/, '').replace(/^0\./, '').replace(/^00:/, '').replace(/^00:/, '').replace(/^0+/, '')

return result
}
moment.duration.fn.toString = moment.duration.fn.format

// vue 中使用
// Vue.prototype.$moment = moment

备份数据到sql

安装

  • apt install my-client -y

备份

  • mysqldump --host=1.1.1.1 --user=test --password=test db tb1 tb2 > db.sql

    将 1.1.1.1 服务器的 db 数据库 的 tb1, tb2 备份到 db.sql 文件, 账号密码分别为 test, test

mycli

mycli 是一个命令, 用于在 linux 中连接mysql数据库并进行操作

基础命令

  1. 使用参数连接: mycli -h 11.11.11.11 -P 3306 -u root -p password db_1
  2. 使用连接字符串连接: mycli mysql://root:password@11.11.11.11:3306/db_1
  3. 执行指定文件: mycli mysql://root:password@11.11.11.11:3306/db_1 < path/to/script.sql
  4. 执行指定文件并将日志记录到指定文件: mycli mysql://root:password@11.11.11.11:3306/db_1 -o output.txt < path/to/script.sql

    该命令并未测试是否有效

常用sql

该标题下所有sql都需要使用基础命令 连接之后使用

  1. 列出数据库: show databases
  2. 列出表: show tables
  3. 查看帮助: help

linux-运行当前目录下命令不加./

  • 将 ~/.zshrc 中增加 export PATH=$PATH:`pwd`

hexo 中增加快速创建博客命令

  1. 创建 new 文件并填入如下内容
    1
    2
    3
    #!/bin/zsh
    home=$(echo $HOME | sed 's/\//\\\//')
    code $(hexo new post "$1" | grep "Created" | cut -d' ' -f4- | sed 's/~/'"$home"'/')
  2. 运行 chmod +x new 赋予 new 执行权限
  3. 参照 linux-运行当前目录下命令不加.md 配置运行当前目录命令不加 ./
  4. 在博客目录中可直接运行 new 测试博客 新建文章

git同步状态检测

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/zsh

# 检测本地git状态
local_git_status=$(git status --porcelain)

# 检测本地git是否与远端git一致
remote_git_status=$(git ls-remote --exit-code origin HEAD)

if [ $? -ne 0 ]; then
echo "本地git与远端git不一致,无法继续执行脚本"
exit 1
fi

# 如果本地git状态不为空
if [ -n "$local_git_status" ]; then
echo "本地git状态不为空,无法继续执行脚本"
exit 1
fi

# 如果所有检查都通过,可以继续执行脚本
echo "所有检查通过,脚本可以继续执行"

git 中文乱码

git config --global core.quotepath false