Nginx或Apache通过反向代理配置wss服务

为不影响网站正常业务,使用 xx.com/wss 作为代理入口,即客户端连接地址为:wss://xx.com/wss

nginx配置:

server {
  listen 443;
 
  ssl on;
  ssl_certificate /etc/ssl/server.pem;
  ssl_certificate_key /etc/ssl/server.key;
  ssl_session_timeout 5m;
  ssl_session_cache shared:SSL:50m;
  ssl_protocols SSLv3 SSLv2 TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
 
  location /wss
  {
    proxy_pass http://127.0.0.1:2345;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "Upgrade";
    proxy_set_header X-Real-IP $remote_addr;
  }
  
  # location / {} 站点的其它配置...
}

apache配置:
需开启proxy_wstunnel_module模块
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so

#extra/httpd-ssl.conf
DocumentRoot "/网站/目录"
ServerName 域名
 
# Proxy Config
SSLProxyEngine on
 
ProxyRequests Off
ProxyPass /wss ws://127.0.0.1:2345
ProxyPassReverse /wss ws://127.0.0.1:2345
 
# 添加 SSL 协议支持协议,去掉不安全的协议
SSLProtocol all -SSLv2 -SSLv3
# 修改加密套件如下
SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
SSLHonorCipherOrder on
# 证书公钥配置
SSLCertificateFile /server/httpd/cert/your.pem
# 证书私钥配置
SSLCertificateKeyFile /server/httpd/cert/your.key
# 证书链配置,
SSLCertificateChainFile /server/httpd/cert/chain.pem

trim汉字导致乱码解决

汉字trim时可能导致乱码,如:
trim("张三、李言、", "、");
解决:

/**
 * 中文trim 解决中文trim乱码
 * @param $string
 * @param string $trim_chars
 * @return string|string[]|null
 */
function mb_trim($string, $trim_chars = '\s'){
    return preg_replace('/^['.$trim_chars.']*(?U)(.*)['.$trim_chars.']*$/u', '\\1',$string);
}

layui table指定行变色 改变样式

done: function(res, curr, count){
    //进行表头样式设置
    $('th').css({'font-weight': 'bold', 'font-size': '15','color': 'orange','background':'linear-gradient(#f2f2f2,#cfcfcf)'});
    //遍历各行 处理样式等
    for(var i in res.data){
        //获取当前行数据
        var item = res.data[i];
        //如:ID等于1则复选框禁止选择
        if(item.id==1){
            $('tr[data-index=' + i + '] input[type="checkbox"]').prop('disabled', true); //禁用当前
            $('tr[data-index=' + i + '] input[type="checkbox"]').parent('div').css('display', 'none'); //隐藏这个复选框
            table.render('checkbox'); // 重新渲染一下checkbox
        }
        // 02.如果已结算则整行变灰色
        if(item.ck23=='ok'){
            $("tr[data-index='" + i + "']").attr({"style":"background:#cccccc"});
        }
        // …… 其他功能
    }
}

Excel中将时间格式转化成时间戳格式

时间戳转成正常日期的公式:
C1=(A1+8*3600)/86400+70*365+19
其中A1表示当时的1249488000时间戳数值,C1就是所需的日期格式,C1单元格属性改成日期格式就可以了。

正常日期转为时间戳格式公式:
A1=(C1-70*365-19)*86400-8*3600
其中C1表示正常日期时间格式,A1就是所需的时间戳格式,A1单元格属性日期格式转成常规格式就可以了。

vue+ueditor 双向绑定

来源:https://github.com/HaoChuan9421/vue-ueditor-wrap

安装:
npm i vue-ueditor-wrap

或者

yarn add vue-ueditor-wrap

下载:
https://github.com/HaoChuan9421/vue-ueditor-wrap/tree/master/assets/downloads

解压并命名为UEditor放到项目static目录下(vue-cli 3.x,可以把 UEditor 放入项目的public/static

引入:
import VueUeditorWrap from 'vue-ueditor-wrap'

注册:
components: {
VueUeditorWrap
}

使用:

<vue-ueditor-wrap v-model="msg" :config="myConfig"></vue-ueditor-wrap>
data () {
  return {
    msg: '<h2><img src="http://img.baidu.com/hi/jx2/j_0003.gif"/>Vue + UEditor + v-model双向绑定</h2>',
    myConfig: {
      // 编辑器不自动被内容撑高
      autoHeightEnabled: false,
      // 初始容器高度
      initialFrameHeight: 240,
      // 初始容器宽度
      initialFrameWidth: '100%',
      // 上传文件接口(这个地址是我为了方便各位体验文件上传功能搭建的临时接口,请勿在生产环境使用!!!)
      serverUrl: 'http://35.201.165.105:8000/controller.php',
      // UEditor 资源文件的存放路径,如果你使用的是 vue-cli 生成的项目,通常不需要设置该选项,vue-ueditor-wrap 会自动处理常见的情况,如果需要特殊配置,参考下方的常见问题2
      UEDITOR_HOME_URL: '/static/UEditor/'
    }
  }
}

localStorage 存储对象

存:
var obj = {"name":"hello","age":"16"}
localStorage.setItem("userInfo",JSON.stringify(obj));

取:
var user = JSON.parse(localStorage.getItem("userInfo"));

删:
localStorage.removeItem("userInfo");

清:
localStorage.clear();

批量更改文件名大写改为小写

@echo off
title 更改文件名大写为小写
::本代码原思路由yyykkkyyyy提供,依梦琴瑶修改并添加子目录的文件处理
::https://zhidao.baidu.com/question/368123497755817644.html
::再次感谢yyykkkyyyy,我这里就借花献佛了。
set dir=%~dp0&call:cdto
for /f "delims=" %%i in ('dir/s/b/ad') do set dir=%%i&call:cdto
pause
exit/b
:cdto
cd /d %dir%
for /f "delims=" %%i in ('dir/b/a-d/l') do ren "%%i" "%%i"