# 时间戳计算距离当前还剩多少时间格式化(倒计时)

当前时间: 2020-9-24 23:00:15
截止时间为: 2020-10-01 23:00:00

格式化为: 距离截止时间还剩: 7 天 23 时 59 分 45 秒

0

let time = new Date('2020-10-01 23:00:00').getTime() - new Date('2020-9-24 23:00:15').getTime() const day = parseInt(time / 86400000) time = time % 86400000 const hour = parseInt(time / 3600000) time = time % 3600000 const minute = parseInt(time / 60000) time = time % 60000 const second = parseInt(time / 1000) const timeStr = `距离截止时间还剩: ${day}${String(hour).padStart(2, 0)}${String(minute).padStart(2, 0)}${String(second).padStart(2, 0)} 秒`

# 高德地图计算坐标两点之间的角度

0

使用:

getPositionAngle([113.480303, 23.035908], [113.485840, 23.033464]); // 203
function getPositionAngle(position1, position2) { let lon1 = position1[0]; let lat1 = position1[1]; let lon2 = position2[0]; let lat2 = position2[1]; lon2 = lon2.toFixed(6) * 1000000; lat2 = lat2.toFixed(6) * 1000000; lon1 = lon1.toFixed(6) * 1000000; lat1 = lat1.toFixed(6) * 1000000; if (lon2 == lon1 && lat2 == lat1) { return 0; } let x = Math.abs(lon2 - lon1); let y = Math.abs(lat2 - lat1); let z = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)); let cos = y / z; let radina = Math.asin(cos); let angle = Math.floor(180 / (Math.PI / radina)); //将弧度转换成角度 if (lon1 == lon2 && lat1 > lat2) { //鼠标在y轴正半轴 angle = 90; } if (lon1 > lon2 && lat1 > lat2) { //鼠标在第一象限 angle = 180 - angle; } if (lon1 > lon2 && lat1 == lat2) { //鼠标在x轴正方向上 angle = 180; } if (lon1 > lon2 && lat1 < lat2) { //鼠标在第四象限 angle = 180 + angle; } if (lon1 == lon2 && lat1 < lat2) { //鼠标在y轴负方向 angle = 270; } if (lon1 < lon2 && lat1 < lat2) { //鼠标在第三象限 angle = 360 - angle; } if (lon1 == lon2 && lat1 == lat2) { //鼠标在第三象限 angle = 0; } return angle; }

# nginx 反向代理

场景: 我访问http://127.0.0.1:3001这个是我的网站目录,而http://127.0.0.1:3002是我的api接口,访问api的接口都会带有一个前缀"/api",所以我们要把带有"/api"前缀的代理到"http://127.0.0.1:3002"下。

2

server { listen 3001; server_name 127.0.0.1; root "D:\dist"; location / { index index.html index.htm index.php; #autoindex on; } #重点 location /api/ { proxy_pass http://127.0.0.1:3002; } }

# Promise catch的坑

function getApi() { return new Promise ((resolve, reject) => { reject({a: 1}) setTimeout(() => { resolve({a: 2}) }, 1000) }) } getApi().catch(res => { console.log(res, 'error') }).then(res => { console.log(res, 'success') })

预期结果

// { a: 1 } 'error'

事实上…

// { a: 1 } 'error' // undefined 'success'

黑人问号脸?

1

然后找到了这个ES6 Promise——then与catch的返回值实践

catchthen的语法糖,它是then(null, rejection)的别名。
也就是说,catch也是then,它用于捕获错误,它的参数也就是then的第二个参数。
所以,假设catch中如果return 值的话,新的Promise对象也会是接受状态。
这就解释了为啥会输出两次了。

# Visual Studio Code 自动格式化 eslint standard风格

作者:HuaRongSAO
链接:https://www.jianshu.com/p/69bfcb95b8d7
來源:简书

2

$ npm i -S eslint-plugin-vue

创建项目跟路径下的文件:.eslintrc | .eslint.js

"plugins": [
    "vue"
]

1、在vscode添加 eslint 插件
2、在vscode添加 vetur 插件
3、修改你的setting.json

"eslint.autoFixOnSave": true,
"eslint.validate": [
    "javascript",{
        "language": "vue",
        "autoFix": true
    },"html",
    "vue"
]

# 国内安装node-sass

3

$ npm i node-sass --sass_binary_site=https://npm.taobao.org/mirrors/node-sass/

# window安装redis

1

  1. 下载地址:https://github.com/MSOpenTech/redis/releases 直接下载可执行文件.msi

  2. 安装完成之后,运行进入到redis的安装目录运行redis-server.exe redis.windows.conf也可以直接运行redis-server.exe 如果出现下面的错误的话

    [6644] 02 Apr 23:11:58.976 # Creating Server TCP listening socket *:6379: bind: No such file or directory

    运行下面的3个命令:

    $ redis-cli.exe
    $ shutdown
    $ exit
    $ redis-server.exe redis.windows.conf 
    
  3. 把redis添加到系统环境变量中,在PATH后面添加把redis安装目录的路径添加上去,然后打开一个cmd窗口,运行echo PATH=C之后关闭窗口,在重新打开一个cmd窗口,这样子就不用重启电脑就可以刷新环境变量了。运行redis-server.exe redis.windows.conf 这个时候会报一个错:Invalid argument during startup: Failed to open the .conf file: redis.windows.conf CWD=C:\Users\Administrator不管他,直接运行这个命令redis-server.exe最后就ojbk了。

  4. 把redis添加到服务中,直接运行这个命令redis-server --service-install redis.windows-service.conf --loglevel verbose完事


# npm、nvm 换成淘宝镜像源

2

npm

淘宝:

$ npm config set registry http://registry.npm.taobao.org/

原来:

$ npm config set registry https://registry.npmjs.org/

nvm
进入到nvm根目录设置settings.txt文件,没有这个就创建
在文件后面追加下面内容:

arch: 64 
proxy: none 
node_mirror: http://npm.taobao.org/mirrors/node/ 
npm_mirror: https://npm.taobao.org/mirrors/npm/

# Git骚操作请看图

0

git工作流程图:

git工作流程图

git功能脑图:

git功能脑图

git常用指令:

git常用指令

注意图片不知道是哪位大佬做的,非原创,如有侵权,请告知!!


# Ubuntu 安装lnmp环境

0

请点击跳转到 https://lnmp.org/install.html 嘿嘿~~~


# Ubuntu lnmp环境安装Composer

这个问题的前提是你已经装好了lnmp环境,没有安装的请点击这里 http://yjgeek.com/faq#6

2

3条命令:

$ curl -sS https://getcomposer.org/installer | php //执行在线安装脚本 $ mv composer.phar /usr/local/bin/composer //移动到path目录 $ composer -v //出现composer图案就表示成功了 $ composer config -g repo.packagist composer https://packagist.laravel-china.org //国内好像就这个了 $ composer config -g repo.packagist composer https://packagist.org //原来的源

# Ubuntu lnmp新增php扩展

这个问题的前提是你已经装好了lnmp环境,没有安装的请点击这里 http://yjgeek.com/faq#6

0

这里已安装fileinfo扩展为例:

1、进入lnmp安装目录的src目录下:

$ cd ~/lnmp1.4/src/ //我的默认安装目录是在这下面,

2、解压php源码文件因为安装lnmp的时候为了节省时间,默认是没有解压的:

$ tar -xvf php-7.1.7.tar.bz2

3、解压完进入相应扩展目录(我是fileinfo),注意:一定要进入你想要的扩展目录才行:

$ cd php-7.1.7/ext/fileinfo

4、然后开始安装模块,使用phpize来安装:

$ /usr/local/php/bin/phpize

执行成功会返回几行数据:
Configuring for:
PHP Api Version: 20041225
Zend Module Api No: 20060613
Zend Extension Api No: 220060519

在执行下面的代码(编译扩展库):

$ ./configure --with-php-config=/usr/local/php/bin/php-config $ make && make install

5、最后在修改下php.ini:

$ vim /usr/local/php/etc/php.ini //行号大概在900左右,找个位置把下面的添加进去 $ extension = fileinfo.so $ lnmp restart //重启下lnmp

# git记住用户名和密码

0

Linux

永久:

$ git config --global credential.helper cache

限时:

$ git config --global credential.helper "cache --timeout=3600"

Windows

$ git config --global credential.helper winstore

# 去除input Chrome下的自动填充的黄色背景

0

利用阴影来搞:

input:-webkit-autofill{ box-shadow: 0 0 0px 1000px #fff inset; }

# HTTP状态码大全

2

  • 100 继续
  • 101 切换协议
  • 102 处理
  • 200 ok
  • 201 创造
  • 202 接受
  • 203 非权威信息
  • 204 没有内容
  • 205 重置内容
  • 206 部分内容
  • 207 多重身份
  • 208 已经报道
  • 226 im used
  • 300 多种选择
  • 301 永久移动
  • 302 发现
  • 303 看到其他
  • 304 未修改
  • 305 使用代理
  • 307 临时重定向
  • 308 永久重定向
  • 400 坏请求
  • 401 未经授权
  • 402 需要付款
  • 403 被禁止
  • 404 未找到
  • 405 方法不允许
  • 406 不接受
  • 407 需要代理身份验证
  • 408 请求超时
  • 409 冲突
  • 410 走了
  • 411 长度认证
  • 412 先决条件失败
  • 413 有效载荷太大
  • 414 uri太长
  • 415 不支持的媒体类型
  • 416 范围不满意
  • 417 期望失败
  • 418 我是一个茶壶
  • 422 无法处理的实体
  • 423 锁定
  • 424 失败的依赖
  • 426 需要升级
  • 428 需要先决条件
  • 429 请求太多
  • 431 请求标头字段太大
  • 500 内部服务器错误
  • 501 未实施
  • 502 错误的网关
  • 503 服务不可用
  • 504 网关超时
  • 505 不支持http版
  • 506 变体也谈判
  • 507 储存不足
  • 508 检测到循环
  • 510 没有延长
  • 511 需要网络认证