feng 发布的文章

基于高德的闪烁点效果

前段时间项目需求要做闪烁点,感觉做的效果挺好看,就把这块代码独立出来了
github地址 https://github.com/aoobao/amap-flicker-marker

自己测了一下,同时1000个闪烁点性能还可以.
简单封装了一下vue组件方便vue调用,后面有时间可以试试用shader做渲染看性能,但是地图只要一移动,所有的顶点都得重新计算重新写入GPU,性能未必会快多少.

virtualBox创建虚拟机提示主板不支持虚拟化

之前安装了virtualBox想装虚拟机学习一下shell,发现一直提示我主板不支持虚拟化,但是明显按照网上教程,已经在bios中设置开启虚拟化,并且在任务管理器性能选项卡中已经看到虚拟化已启用.
一直没有找到具体失败原因,后来没办法安装了VMware试试,发现VMware提示Device/Credential Guard 不兼容,需要禁用.
搜索了一下有很多办法,下面记录一下命令:
关闭 Credential Guard

bcdedit /set hypervisorlaunchtype off

开启

bcdedit /set hypervisorlaunchtype auto

关闭后再次打开virtualBox,发现问题果然解决了.软件的提示太不友好了...

记录一次复活之路

6月1日儿童节当天,不知道什么原因我google搜索不了,有什么办法拯救呢...

1.走ipv6,但是现在路由器固件好多不支持,用手机流量可以,或者刷自己的路由器固件

2.走CDN代理:通过cdn代理网站,通过CDN中间服务器,可以代理自己网站,就可以正常访问了.

详细写一下2的步骤,以便将来查阅

首先把所有用到的网址记录一下

webssh : https://tools.bartlweb.net/webssh/ 网页版的ssh,可以连自己的服务器
cdn服务器: https://www.cloudflare.com/ 一个国外的CDN服务器提供商,重点是可以免费申请一个域名
域名供应商: https://www.freenom.com/ 如果你没有自己的域名,可以通过这个供应商注册免费的域名
一键脚本:https://github.com/wulabing/V2Ray_ws-tls_bash_onekey 恩,是用来一键装nginx的.

下面记录一下步骤:
首先需要有一个自己的域名,没有的话去freenom域名供应商免费注册一个,这步不细说了.
通过webssh连上被墙服务器,输入命令安装nginx:

bash <(curl -L -s https://raw.githubusercontent.com/wulabing/V2Ray_ws-tls_bash_onekey/master/install.sh) | tee v2ray_ins.log

注意域名填自己的域名
根据提示一步一步往下走,然后启动服务:

systemctl start v2ray
systemctl start nginx

然后登录cloudflare添加域名(可以免费添加一个域名)
添加完域名后,会显示2个nameserver 域名解析服务器,把他放到自己的域名下即可

http://image.fengyitong.name/Blog%2F20190618%2Fnameservers

然后点击域名,选中DNS,添加域名,IP地址当然是自己的服务器.

然后过一段时间,打开自己的电脑浏览器,敲自己的域名,发现可以访问,说明服务器已经能够成功走CDN代理访问到里,
访问界面应该是:

Welcome to nginx!

如果有问题访问不了看下服务器的防火墙有没开,还有本地ping一下域名,看有没解析到一个IP
或者再等一会,CDN生效可能没那么快.

本地连接设置:

类型 ws 端口是 443 (tls默认443) 注意不是配置文件里面的那个端口!
传输设置: 额外路径在 /etc/v2ray/config.json里面找. HTTP头部: {"Host":"域名"}, tls里面全部打勾,域名也一样.

正则断言理解

以白话文的方式记录一下关于正则断言的几个用法

方便后面使用时查看

(?:pattern) , (?=pattern) , (?<=pattern)

(?<=pattern) 一般放在开头做匹配

匹配开头:匹配结果是以pattern开头的(取值时不想要pattern)

(?<=5)\d 匹配前1位为5的单个数字: 0123456789 => 6

匹配末尾: 匹配结果是以pattern结尾(结果会包含pattern)

\d(?<=5) 匹配以5结尾的单个数字: 0123456789 => 5

(?=pattern) 一般放在末尾做匹配

匹配末尾:结尾带有pattern的结果(取值时不想要pattern)

\d(?=5) 匹配所有后面跟5的单个数字: 0123456789 => 4

匹配开头:以pattern开头的结果(结果会包含pattern)

(?=5)\d 匹配以5开头的单个数字: 0123456789 => 5

(?:pattern) 返回结果会包含断言部分

匹配开头: 匹配结果是以pattern开头的结果(取值想要pattern并且结果不包含pattern)

(?:5)\d 0123456789 => 56

匹配结尾: 匹配结果后面跟pattern的内容(取值想要pattern并且结果不包含pattern)

\d(?:5) 0123456789 => 45

(?!pattern) , (?<!pattern)

(?!pattern) 一般放末尾匹配

匹配末尾: 结尾不带有pattern的结果(取值时不想要pattern)

\w(?!\d) 01234a6789 => [4,9] (数字后面不带有数字)

匹配开头: 结果不是以pattern开头的(结果会包含pattern)

(?!\d)\w 01234a6789 => a

(?<!pattern) 一般放开头匹配

匹配开头: 结果不是以pattern开头的(不想要pattern部分)

(?<!\d)\w 01234a6789 => [0,6]

匹配结尾: 结果不是以pattern结尾的(结果会包含pattern)

\w(?<!\d) 01234a6789 => a

最后记录下经典的断言正则使用

对数字进行没三位加",":

(\d)(?=(?:\d{3})+($|\.)) (小数点后只有2位的情况,超过2位小数的话就对整数用然后加小数吧)

可以包含数字、字母、下划线,并且要同时含有数字和字母,且长度要在8-16位之间。

^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z_]{8,16}$

egg 设置cors跨域问题

下载 egg-cors 包

npm i egg-cors --save

在plugin.js中设置开启cors

exports.cors = {
  enable: true,
  package: 'egg-cors',
};

在config.{env}.js中配置,注意配置覆盖的问题

config.security = {
  csrf: {
    enable: false,
    ignoreJSON: true // 默认为 false,当设置为 true 时,将会放过所有 content-type 为 `application/json` 的请求
  },
  domainWhiteList: ['*']
};

config.cors = {
  origin:'*',
  allowMethods: 'GET,HEAD,PUT,POST,DELETE,PATCH,OPTIONS'
};