JS开发工具函数

JS开发工具函数 转自github /** * @param { string } value */ export const isNoWord = value => /^[^A-Za-z]*$/g.test(value); 验证中文和数字 /** * @param { string } value */ export const isCHNAndEN = value => /^((?:[\u3400-\u4DB5\u4E00-\u9FEA\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA1F\uFA21\uFA23\uFA24\uFA27-\uFA29]|[\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0])|(\d))+$/g.test(value); 验证邮政编码(中国) /** * @param { string } value */ export const isPostcode = value => /^(0[1-7]|1[0-356]|2[0-7]|3[0-6]|4[0-7]|5[1-7]|6[1-7]|7[0-5]|8[013-6])\d{4}$/g.test(value); 验证微信号,6至20位,以字母开头,字母,数字,减号,下划线 /** * @param { string } value */ export const isWeChatNum = value => /^[a-zA-Z][-_a-zA-Z0-9]{5,19}$/g.test(value); 验证16进制颜色 /** * @param { string } value */ export const isColor16 = value => /^#?

阅读全文

Docker Nginx Supervisord

Ling的同事对于go服务的部署使用了k8s+安装supervisor的方案 所以我也要搞,只不过是阿里云 + docker 安装supervisor apt update && apt install supervisor * 要注意的是,docker直接pull的golang镜像启动后,没有vi、vim、nano,apt更新也超级慢(阿里云ECS) * 所以要熟练手动换源,但是因为不能编辑(没试过gedit),所以需要在容器-v的宿主机路径下添加换源后的sources.list 换源步骤 1.备份原来的源 sudo cp /etc/apt/sources.list /etc/apt/sources_init.list 将以前的源备份一下,以防以后可以用的。 2.更换源 sudo gedit /etc/apt/sources.list 使用gedit打开文档,将里面的内容清空,再将下边的阿里源复制进去,然后点击保存关闭。 阿里源(或者其他源) deb http://mirrors.aliyun.com/ubuntu/ xenial main deb-src http://mirrors.aliyun.com/ubuntu/ xenial main deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main deb http://mirrors.aliyun.com/ubuntu/ xenial universe deb-src http://mirrors.aliyun.com/ubuntu/ xenial universe deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates universe deb http://mirrors.aliyun.com/ubuntu/ xenial-security main deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main deb http://mirrors.

阅读全文

Docker Flask Redis

flask与redis各一个container 但是flask无法通过宿主机ip:[redis port]的方式连接 基础环境情况 vue-nginx 80 odin-flask 8888 redis-server 6379 8888端口的服务会调用redis: class UvView(MethodView): @staticmethod def post(): """ http://101.160.182.183:8888/uv :param: :return: """ body = request.json redis_key = body["uname"] rp = RedisPy(host="101.160.182.183", port="6379") rp.uv_redis("uv", redis_key) uv_dict = { "code": 20000, "data": rp.h_get() } return jsonify(uv_dict) 但是前端报500,8888端口的flask日志记录如下: During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/local/lib/python3.7/site-packages/flask/app.py", line 2446, in wsgi_app response = self.

阅读全文

Vue Iframe Jenkins

vue页面内嵌iframe vue代码 <template> <div> <iframe id="tpd" src="https://Jenkins.com/" frameborder="0" width="100%" height="100%" style="position:absolute;" /> </div> </template> <script> export default { data() { return { } }, mounted() { /** * iframe-宽高自适应显示 */ function changeMobsfIframe() { const tpd = document.getElementById('tpd') const deviceWidth = document.body.clientWidth const deviceHeight = document.body.clientHeight tpd.style.width = (Number(deviceWidth) - 100) + 'px' // 数字是页面布局宽度差值 tpd.style.height = (Number(deviceHeight) - 100) + 'px' // 数字是页面布局高度差 } changeMobsfIframe() window.onresize = function() { changeMobsfIframe() } } } </script> <style> </style> jenkins需要设置一下 jenkins:XFrame Filter Plugin 进入http://10.

阅读全文

Redis Docker Config

Redis-Docker-Ubuntu启动容器命令 docker run -d --name redis1 -p 16379:6379 -v /Users/${yourname}/xcredis/docker_data:/data 44d36d2c2374 --appendonly yes --appendfsync everysec 注意挂载目录,冒号前面是宿主机,后面是docker内部 设置密码 --requirepass "mypassword" 挂载外部配置和数据安装 1.创建目录和配置文件redis.conf mkdir /docker mkdir /docker/redis mkdir /docker/redis/conf mkdir /docker/redis/data 创建redis.conf配置文件 touch /docker/redis/conf/redis.conf redis.conf文件内容自行添加: 切记注释掉:#daemonize yes 否则无法启动容器 重要话说三遍:注释掉#daemonize yes,注释掉#daemonize yes,注释掉#daemonize yes 2.创建启动容器,加载配置文件并持久化数据 docker run -d --privileged=true -p 6379:6379 -v /docker/redis/conf/redis.conf:/etc/redis/redis.conf -v /docker/redis/data:/data --name redistest2 redis:4.0 redis-server /etc/redis/redis.conf --appendonly yes 参数说明: --privileged=true:容器内的root拥有真正root权限,否则容器内root只是外部普通用户权限 -v /docker/redis/conf/redis.conf:/etc/redis/redis.conf:映射配置文件 -v /docker/redis/data:/data:映射数据目录 redis-server /etc/redis/redis.conf:指定配置文件启动redis-server进程 --appendonly yes:开启数据持久化

阅读全文

Vue Global Reload

vue-admin-element的全局按钮添加 有天业务测试来找我,说希望在列表页加一个刷新按钮-。- 其实这个页面的各个生命周期钩子里都加了刷新操作的回调函数,除此之外,table-row中的全部button也绑定了相同的方法—为的就是希望实时刷新结果(恨不能挂个websocket上去) 所以我很诧异,为啥还要单独添加一个独立于各种区块的按钮呢?她说就觉得方便··· 众所周知,我是一个爱惜页面整洁性的人,所以我准备加一个全局刷新按钮,就在odin后台的顶部! 同时也因为这个项目的侧边栏渲染是基于比如oom模块: src/router/modules/oom.js中的 import Layout from '@/layout' const oomRouter = { path: '/oom', component: Layout, redirect: '/oom/index', name: 'oom自动化分析', // hidden: true, meta: { title: 'oom自动化分析', icon: 'tree-table', roles: ['admin'] // affix: true }, children: [ { path: 'index', component: () => import('@/views/oom/index'), name: 'oom-index', // hidden: true, meta: { title: '管理首页', icon: 'guide', noCache: true } }, { path: 'list', component: () => import('@/views/oom/list'), name: 'oom-list', // hidden: true, meta: { title: '任务列表', icon: 'nested', noCache: true } } ] } export default oomRouter 所以我明显需要在Layout中添加元素和方法,而进去发现它是以组件的方式使用Navbar的,所以在Navbar.

阅读全文

Vue Eltable Edit

要命的table行内回填 我们的业务场景之一,是在一个结果列表页的结果列表中,点击任意一行row中的button,弹出抽屉或者嵌套了form表单的dialog,显然,通过<template slot-scope="scope">可以拿到行内数据,button代码: <el-button size="small" type="primary" icon="el-icon-edit" @click="handleEdit(scope.$index, scope.row)" /> 这里click的方法如下: handleEdit(index, row) { console.log(row) if (row.cron === '0 4 * * *' || row.cron === '0 4 * * 0' || row.cron === '0 4 1 * *') { this.cron_radio = row.cron } else { this.cron_radio = '' } this.post_data = row this.dialog = true }, 这里的this.post_data,就是vue实例上的双向绑定的form表单数据,这段代码的作用是:经过一些业务层面的判断(if-else)后,把行内数据赋值给表单,这样就达到了编辑回填的效果,用户可以直接编辑或者重新提交,能大大节省重复操作数据的时间! 可是我想得太天真了 当我this.post_data = row如此赋值的时候,我发现后续在form中编辑数据,table中当前行的数据也在变!!我隐约感觉到是对象引用的问题,可是,如何解除引用? 经过一番波折,大概有三种方法可以解决: 将row中的每个字段分别赋值给this.post_data row对象转字符串再解析出来this.post_data = JSON.

阅读全文

作者的图片

CooperHsu

苦逼热力测绘院

测试经理*全栈测开*打杂

望京甘道夫