苹果cms设置本地播放器 ckplayer(版本:ckplayerx)

概述

之前试过阿里云的 aliplayer、苹果cms自带的 dplayer,跟最新的 ckplayer比,个人体验ckplayer好很多。ckplayer和dplayer相比,不会出现手机浏览器无法横屏的情况,定制性强。

设置方法

  1. 官网下载压缩包 压缩包地址
    windows的话上传里面的ckplayer目录到服务器(当然得压缩一下先),解压到 苹果CMS 的 static/player/
    目录下。

  2. 新建 ckplayer.html

阅读全文 »

苹果cms设置阿里云本地播放器

编辑 aliplayer.html

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="IE=edge" >
<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"/>
<title>Aliplay记忆播放器</title>
<link rel="stylesheet" href="https://g.alicdn.com/de/prismplayer/2.8.7/skins/default/aliplayer-min.css" />
<script type="text/javascript" charset="utf-8" src="https://g.alicdn.com/de/prismplayer/2.8.7/aliplayer-min.js"></script>
<script type="text/javascript" charset="utf-8" src="https://player.alicdn.com/aliplayer/presentation/js/aliplayercomponents.min.js"></script>
<style type="text/css">
body,html{background-color:#000;padding: 0;margin: 0;width:100%;height:100%;}
#liryCN{width:100%;height:100%;padding:0;margin:0;display:block;}
</style>
</head>
<body>
<div id="liryCN" class="prism-player"></div>
<script type="text/javascript">
var player = new Aliplayer({
id: "liryCN",
"source": parent.MacPlayer.PlayUrl,
width: "100%",
height: "100%",
autoplay: true,
preload: true,
rePlay: false,
playsinline: false,
useH5Prism: false,
isLive: false,
autoPlayDelay: 0,
autoPlayDelayDisplayText: 'YY影院,请稍待正在加载...',
components: [{
name: 'MemoryPlayComponent',
type: AliPlayerComponent.MemoryPlayComponent,
args: [true]
}],
},
function (player) {

player.play();
}
);
player.on('ended',function(){
if(parent.MacPlayer.PlayLinkNext!=''){
top.location.href = parent.MacPlayer.PlayLinkNext;
}
});
var _video = document.querySelector('video');
player.on('play', function(e) {
_video.removeEventListener('click', play);
_video.addEventListener('click', pause);
});
player.on('pause', function(e) {
_video.removeEventListener('click', pause);
_video.addEventListener('click', play)
});

function play() {
if (player) player.play();
}

function pause() {
if (player) player.pause();
}
try{
//document.getElementById('liryCN').style.height = parent.MacPlayer.Height + 'px';
}
catch(e){}
</script>
</body>
</html>

编辑好后上传到 网站目录/static/player/ 下

播放器代码填写

阅读全文 »

两种代理原理

jdk动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理。

cglib动态代理是利用asm开源包,对代理对象类的class文件加载进来,通过修改其字节码生成子类来处理。

spring对代理的选择

  1. 如果目标类实现了接口,默认情况下会采用JDK的动态代理实现AOP
  2. 如果目标类实现了接口,可以强制使用CGLIB实现AOP
  3. 如果目标类没有实现了接口,必须采用CGLIB库,spring会自动在JDK动态代理和CGLIB之间转换
阅读全文 »

概述

省去在 index.html一个一个引入 js 和 cs 文件,直接在配置文件引入。

过程

  1. 安装插件 html-webpack-plugin
    1
    npm install --save-dev html-webpack-plugin
  2. 在 package.json 同级目录新建 vue.config.js
  3. 引入插件
    1
    const HtmlWebpackPlugin = require('html-webpack-plugin')
  4. 设置要排除的引入
    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
    26
    27
    28
    29
    const externals = {
    vue: 'Vue',
    'vue-router': 'VueRouter',
    vuex: 'Vuex',
    axios: 'axios'
    }
    const cdn = {
    // 开发环境
    dev: {
    css: [

    ],
    js: [

    ]
    },
    // 生产环境
    build: {
    css: [

    ],
    js: [
    'https://cdn.jsdelivr.net/npm/vue@2.5.17/dist/vue.min.js',
    'https://cdn.bootcss.com/vue-router/3.0.3/vue-router.min.js',
    'https://cdn.bootcss.com/vuex/3.0.1/vuex.min.js',
    'https://cdn.bootcss.com/axios/0.19.0/axios.min.js',
    ]
    }
    }
  5. 两种方式配置
    方式1
    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
    26
    27
    28
    29
    30
    module.exports = {
    configureWebpack: config => {
    const myConfig = {}
    if (process.env.NODE_ENV === 'production') {
    // 为生产环境修改配置...
    //externals里的模块不打包
    // Object.assign(config, {
    // externals: externals
    // })
    myConfig.externals = externals
    } else {
    // 为开发环境修改配置...
    myConfig.devServer = {
    disableHostCheck: true
    }
    }
    return myConfig
    },
    chainWebpack: config => {
    // 对vue-cli内部的 webpack 配置进行更细粒度的修改
    config.plugin('html').tap(args => {
    if (process.env.NODE_ENV === 'production') {
    args[0].cdn = cdn.build
    }
    if (process.env.NODE_ENV === 'development') {
    args[0].cdn = cdn.dev
    }
    return args
    })
    }
    方式2(更简单一些)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    module.exports = {
    configureWebpack: config => {
    if (process.env.NODE_ENV === 'production') {
    // 为生产环境修改配置...
    //externals里的模块不打包
    Object.assign(config, {
    externals: externals
    })
    } else {
    // 为开发环境修改配置...
    }
    },
    chainWebpack: config => {
    // 对vue-cli内部的 webpack 配置进行更细粒度的修改
    config.plugin('html').tap(args => {
    if (process.env.NODE_ENV === 'production') {
    args[0].cdn = cdn.build
    }
    if (process.env.NODE_ENV === 'development') {
    args[0].cdn = cdn.dev
    }
    return args
    })
    }
  6. 在 public/index.html 遍历js,css
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
26
27
28
29
30
31


<!-- 使用CDN加速的CSS文件,配置在vue.config.js下 -->
<% for (var i in
htmlWebpackPlugin.options.cdn&&htmlWebpackPlugin.options.cdn.css) { %>
<link href="<%= htmlWebpackPlugin.options.cdn.css[i] %>" rel="preload" as="style" />
<link href="<%= htmlWebpackPlugin.options.cdn.css[i] %>" rel="stylesheet" />

<% } %>
<!-- <script src="https://cdn.bootcss.com/vue/2.6.11/vue.min.js"></script> -->
<!-- 使用CDN加速的JS文件,配置在vue.config.js下 -->
<% for (var i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.js) { %>
<script src="<%= htmlWebpackPlugin.options.cdn.js[i] %>" rel="preload" ></script>
<% } %>
</head>

<body>
<noscript>
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled.
Please enable it to continue.</strong>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
<!-- 使用CDN加速的JS文件,配置在vue.config.js下 -->
<!-- <% for (var i in
htmlWebpackPlugin.options.cdn&&htmlWebpackPlugin.options.cdn.js) { %>
<script src="<%= htmlWebpackPlugin.options.cdn.js[i] %>"></script>
<% } %> -->
<!-- built files will be auto injected -->

MySQL 几种时间对比

类型字节格式应用场景是否支持设置系统默认值范围
date3YYYY-MM-DD精确到天不支持1000-01-01/9999-12-31
time3HH : MM : SS每天的时间不支持‘-838:59:59’/‘838:59:59’
year1YYYY只要年份不支持1901/2155
datetime8YYYY- MM -DD HH : MM :SS精确到秒MySQL 5.6.5支持1000-01-01 00:00:00/9999-12-31 23:59:59
timestamp4YYYYMMDD HHMMSS精确到秒或毫秒,时间戳,系统用于不同时区支持1970-01-01 00:00:00/2038
结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07

MySQL 插入时间

  1. NOW()函数以『YYYY-MM-DD HH: MM :SS』返回当前的日期时间,可以直接存到 DATETIME 字段中。
  2. CURDATE()以『YYYY- MM -DD』的格式返回今天的日期,可以直接存到 DATE 字段中。
  3. CURTIME()以『HH: MM :SS』的格式返回当前的时间,可以直接存到 TIME 字段中。

设置表字段默认 创建时间、更新时间

阅读全文 »

概述

这篇主要讲如何搭建自己的科学上网服务,现在常见的的搭建方式有:

  • SSR『机场主常用,现在容易被封,不建议』
  • V2Ray 『建议,现在用的比较多』

搭建

一般都是一键的脚本安装,有造好的轮子,直接拿来用就可以了。

阅读全文 »

  • TOC
    {:toc}

rvm安装jekyll安装

githubpages 运行的jekyll响应太慢,于是决定放到主机上,并实现提交到github的文件,主机自动拉取,jekyll自动渲染。

利用 docker-compose 快速安装 nginx,提供https支持,申请证书可以参考这篇,免费证书,自动续签。

流程图

阅读全文 »

jekyll编辑器

费尽千辛万苦搭建好了自己的博客,没有一个好的编辑器肯定说不过去啊,于是从网上搜索一番,嘿嘿。

编辑器名字:Jekyll Editor

插件地址:https://chrome.google.com/webstore/detail/jekyll-editor/dfdkgbhjmllemfblfoohhehdigokocme
https://raw.githubusercontent.com/jw-star/myFigurebed/master/img/20200319154300.png

这款插件简直了,简洁不能再简洁了,特色就是登陆 github,提交到仓库,还可以设置元文件,省去了写头文件,很:ok_hand:

阅读全文 »

  • TOC
    {:toc}

    概述

    这篇文章主要讲如何为你的服务器快速申请 https 证书

    https证书的作用

1 加密客户和服务之间的信息

  • 如果通过http协议访问网站,浏览器和服务器之间是明文传输,账号、密码等机密信息随时可能被泄露 、窃取、篡改。

  • 部署https加密证书后,使用HTTPS加密协议访问网站,可激活客户端浏览器到网站服务器之前的『SSL加密通道』(SSL协议),实现高强度双向加密传输,防止传输数据泄露或篡改。

2 利于网站 SEO 优化,提高网页排名

  • 部署了SSL证书的网站相比没有部署SSL证书的网站更加可信,更加安全,可以有效的保障用户的利益不受侵害。

  • 因此搜索引擎如谷歌,百度在确保用户信息安全的角度,都在大力倡导网站部署SSL证书实现HTTPS加密访问。在搜索、展现、排序方面也给予部署了SSL证书网站的优待。

    利用acme.sh快速申请 https 证书

    在~目录下,没有提示不要切换

    1
    2
    3
    4
    5
    curl https://get.acme.sh | sh
    或者
    wget -O - https://get.acme.sh | sh
    或者
    git clone https://github.com/Neilpang/acme.sh.git

    获取域名绑定商提供的 DNS API ,还有登陆邮箱

阅读全文 »