From e92ac0d60b171eac936c9e4261ac5d2bf436d986 Mon Sep 17 00:00:00 2001 From: qinglong Date: Sat, 22 Oct 2022 14:13:07 +0800 Subject: [PATCH] Site updated: 2022-10-22 14:13:06 --- 2022/09/14/Hexo安装摸索/index.html | 4 ++-- .../09/16/极空间chevereto图床docker版安装/index.html | 2 +- .../17/Hexo-Theme-Shoka-algolia搜索踩坑/index.html | 4 ++-- .../index.html | 2 +- 2022/09/22/protobuf生成js文件/index.html | 2 +- .../解决域名ip变动后需要重启nginx的问题/index.html | 4 ++-- .../解决Hexo-Shoka背景音乐无法播放的问题/index.html | 2 +- 2022/09/27/nginx负载均衡配置/index.html | 4 ++-- 2022/09/28/深深的挫败和无助感/index.html | 2 +- 2022/10/06/Nginx配置iframe访问/index.html | 2 +- 2022/10/11/svn库转git库/index.html | 2 +- 2022/10/12/使用picgo上传图片到chevereto/index.html | 2 +- 2022/10/14/nginx允许跨域获取cookies方法/index.html | 4 ++-- 2022/10/17/redis主从基础配置记录/index.html | 4 ++-- 2022/10/18/搭建nagios监控/index.html | 4 ++-- 2022/10/19/长了一岁/index.html | 2 +- .../20/极空间Docker版Wordpress安装与配置/index.html | 4 ++-- .../10/21/Hexo-Theme-Shoka-Valine评论配置/index.html | 4 ++-- .../10/21/极空间Docker版mariadb安装与配置/index.html | 4 ++-- .../22/极空间Docker版青龙面板安装与配置/index.html | 4 ++-- 404.html | 2 +- about/me.html | 2 +- archives/2022/09/index.html | 2 +- archives/2022/10/index.html | 2 +- archives/2022/10/page/2/index.html | 2 +- archives/2022/index.html | 2 +- archives/2022/page/2/index.html | 2 +- archives/index.html | 2 +- atom.xml | 6 +++--- categories/Linux/index.html | 2 +- categories/Linux/服务/index.html | 2 +- categories/Linux/服务/技术分享/index.html | 2 +- categories/Linux/服务/经验分享/index.html | 2 +- categories/Windows/index.html | 2 +- categories/Windows/工具/index.html | 2 +- categories/Windows/工具/经验分享/index.html | 2 +- categories/index.html | 2 +- categories/工具/index.html | 2 +- categories/工具/经验分享/index.html | 2 +- categories/极空间/Docker/index.html | 2 +- categories/极空间/Docker/技术分享/index.html | 2 +- categories/极空间/Docker/经验分享/index.html | 2 +- categories/极空间/index.html | 2 +- categories/生活/index.html | 2 +- categories/生活/心得体会/index.html | 2 +- categories/生活/心情/index.html | 2 +- feed.json | 12 ++++++------ index.html | 2 +- js/app.js | 2 +- page/2/index.html | 2 +- rss.xml | 6 +++--- tags/Hexo-admin/index.html | 2 +- tags/Hexo/index.html | 2 +- tags/PicGo/index.html | 2 +- tags/Shoka/index.html | 2 +- tags/Valine/index.html | 2 +- tags/Wordpress/index.html | 2 +- tags/algolia/index.html | 2 +- tags/chevereto/index.html | 2 +- tags/cookie/index.html | 2 +- tags/docker/index.html | 2 +- tags/git/index.html | 2 +- tags/iframe/index.html | 2 +- tags/index.html | 2 +- tags/js/index.html | 2 +- tags/mariadb/index.html | 2 +- tags/mysql/index.html | 2 +- tags/nagios/index.html | 2 +- tags/netty/index.html | 2 +- tags/nginx/index.html | 2 +- tags/protobuf/index.html | 2 +- tags/redis/index.html | 2 +- tags/socketIO/index.html | 2 +- tags/svn/index.html | 2 +- tags/博客/index.html | 2 +- tags/图床/index.html | 2 +- tags/图片上传/index.html | 2 +- tags/定时任务/index.html | 2 +- tags/心情/index.html | 2 +- tags/搜索/index.html | 2 +- tags/服务监控/index.html | 2 +- tags/极空间/index.html | 2 +- tags/背景音乐/index.html | 2 +- tags/评论/index.html | 2 +- tags/负载均衡/index.html | 2 +- tags/踩坑/index.html | 2 +- tags/郁闷/index.html | 2 +- tags/青龙面板/index.html | 2 +- 88 files changed, 108 insertions(+), 108 deletions(-) diff --git a/2022/09/14/Hexo安装摸索/index.html b/2022/09/14/Hexo安装摸索/index.html index b5fada31a..fdb509679 100644 --- a/2022/09/14/Hexo安装摸索/index.html +++ b/2022/09/14/Hexo安装摸索/index.html @@ -1,4 +1,4 @@ -Hexo 安装摸索 - 经验分享 - 服务 - Linux | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣

# hexo 博客安装

  1. 安装 nodejs

  2. 安装 git

  3. 安装 hexo(windows 需进入 git bash)

    npm install -g hexo-cli

  4. 初始化博客目录

    hexo init blog

  5. 进入博客目录

    cd blog

  6. 初始化 hexo 到博客目录

    npm install

# shoka 主题安装

  1. 下载主题

    git clone https://github.com/amehime/hexo-theme-shoka.git ./themes/shoka

  2. 卸载 hexo-renderer-marked 以及别的 markdown 文件渲染器

    npm un hexo-renderer-marked --save

  3. 安装(md 文件渲染器,压缩 css/js/html)

    npm i hexo-renderer-multi-markdown-it --save

  4. 安装(给生成的 css 文件们添加浏览器前缀)

    npm i hexo-autoprefixer --save

  5. 安装(站内搜索功能)

    npm i hexo-algoliasearch --save

  6. 安装(文章或站点字数及阅读时间统计)

    npm i hexo-symbols-count-time --save

  7. 安装(生成 Feed 文件)

    npm i hexo-feed --save

# Hexo 部分常用命令

  • 清除静态文件

    hexo clean

  • 生成静态文件

    hexo g

  • 安装 git 推送插件

    npm install hexo-deployer-git --save

  • 推送静态文件到 git

    hexo d

# 安装 hexo-admin(编写博客插件)

admin:
+Hexo 安装摸索 - 经验分享 - 服务 - Linux | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣

# hexo 博客安装

  1. 安装 nodejs

  2. 安装 git

  3. 安装 hexo(windows 需进入 git bash)

    npm install -g hexo-cli

  4. 初始化博客目录

    hexo init blog

  5. 进入博客目录

    cd blog

  6. 初始化 hexo 到博客目录

    npm install

# shoka 主题安装

  1. 下载主题

    git clone https://github.com/amehime/hexo-theme-shoka.git ./themes/shoka

  2. 卸载 hexo-renderer-marked 以及别的 markdown 文件渲染器

    npm un hexo-renderer-marked --save

  3. 安装(md 文件渲染器,压缩 css/js/html)

    npm i hexo-renderer-multi-markdown-it --save

  4. 安装(给生成的 css 文件们添加浏览器前缀)

    npm i hexo-autoprefixer --save

  5. 安装(站内搜索功能)

    npm i hexo-algoliasearch --save

  6. 安装(文章或站点字数及阅读时间统计)

    npm i hexo-symbols-count-time --save

  7. 安装(生成 Feed 文件)

    npm i hexo-feed --save

# Hexo 部分常用命令

  • 清除静态文件

    hexo clean

  • 生成静态文件

    hexo g

  • 安装 git 推送插件

    npm install hexo-deployer-git --save

  • 推送静态文件到 git

    hexo d

# 安装 hexo-admin(编写博客插件)

admin:
 username: username
 password_hash: xxxxxx
 secret: 'my super secret phrase' #用单引号包裹
@@ -12,4 +12,4 @@ hexo d
 cd D:\blog
 d:
 @cmd /c "hexo clean&& hexo g&&hexo d&&echo success"
-
更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

Hito li 微信支付

微信支付

Hito li 支付宝

支付宝

\ No newline at end of file +
更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

Hito li 微信支付

微信支付

Hito li 支付宝

支付宝

\ No newline at end of file diff --git a/2022/09/16/极空间chevereto图床docker版安装/index.html b/2022/09/16/极空间chevereto图床docker版安装/index.html index d7193fa24..69f77d7e1 100644 --- a/2022/09/16/极空间chevereto图床docker版安装/index.html +++ b/2022/09/16/极空间chevereto图床docker版安装/index.html @@ -1 +1 @@ -极空间 chevereto 图床 docker 版安装 - 技术分享 - Docker - 极空间 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣

# 安装准备

  1. 需要先安装好 mysql 数据库

  2. 选择版本,1.5 版以前支持中文,之后被维护的团队删除只支持英文

  3. 本文介绍使用的是 linuxserver_chevereto 的镜像

  4. 需要预先创建好给 chevereto 使用的库、账户、密码

  • 经过测试,使用 surenkid_chevereto 的镜像可以完美支持多国语言,配置同 linuxserver_chevereto 一样


# 容器配置

  1. 映射路径(不要放在高速盘,否则会有权限问题)
    6150d69d9a170d96e66ca69420f8c4e8.png

  2. 端口
    08eafb3b30a7eb9b0c0be26ea7a1502a.png

  3. 环境(puid 和 pgid 使用 1000,不要使用 0,否则会报错)
    01567ca9f31f87f832276be35cc4554b.png

# 初始化配置

  1. 使用 http:// 极空间 ip:81 (端口号使用上面配置的,我配置的是 81) 进行 web 访问(数据库配置)
    0.png

  2. 管理员配置(注意 website 配置选择个人,除非需要提供给其它人注册)
    1.png
    2.png

  3. 默认上传大小是 2M,可通过修改 php.ini 配置提升(路径 /etc/php7/php.ini 查找 upload_max_filesize 和 post_max_size 进行修改)。之后用管理员登录通过页面 http://xxx/dashboard/settings/image-upload 修改。
    upload_max_filesize=200M
    post_max_size=200M
    max_execution_time=300
    memory_limit=1024M

# 安装完成

  1. 作为图片管理和链接分享服务完全够用。图片链接 url 支持的也很全面。
    2022-09-16-14-52-29.png
    2022-09-16-14-54-58.png
    2022-09-16-14-56-13.png
\ No newline at end of file +极空间 chevereto 图床 docker 版安装 - 技术分享 - Docker - 极空间 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣

# 安装准备

  1. 需要先安装好 mysql 数据库

  2. 选择版本,1.5 版以前支持中文,之后被维护的团队删除只支持英文

  3. 本文介绍使用的是 linuxserver_chevereto 的镜像

  4. 需要预先创建好给 chevereto 使用的库、账户、密码

  • 经过测试,使用 surenkid_chevereto 的镜像可以完美支持多国语言,配置同 linuxserver_chevereto 一样


# 容器配置

  1. 映射路径(不要放在高速盘,否则会有权限问题)
    6150d69d9a170d96e66ca69420f8c4e8.png

  2. 端口
    08eafb3b30a7eb9b0c0be26ea7a1502a.png

  3. 环境(puid 和 pgid 使用 1000,不要使用 0,否则会报错)
    01567ca9f31f87f832276be35cc4554b.png

# 初始化配置

  1. 使用 http:// 极空间 ip:81 (端口号使用上面配置的,我配置的是 81) 进行 web 访问(数据库配置)
    0.png

  2. 管理员配置(注意 website 配置选择个人,除非需要提供给其它人注册)
    1.png
    2.png

  3. 默认上传大小是 2M,可通过修改 php.ini 配置提升(路径 /etc/php7/php.ini 查找 upload_max_filesize 和 post_max_size 进行修改)。之后用管理员登录通过页面 http://xxx/dashboard/settings/image-upload 修改。
    upload_max_filesize=200M
    post_max_size=200M
    max_execution_time=300
    memory_limit=1024M

# 安装完成

  1. 作为图片管理和链接分享服务完全够用。图片链接 url 支持的也很全面。
    2022-09-16-14-52-29.png
    2022-09-16-14-54-58.png
    2022-09-16-14-56-13.png
\ No newline at end of file diff --git a/2022/09/17/Hexo-Theme-Shoka-algolia搜索踩坑/index.html b/2022/09/17/Hexo-Theme-Shoka-algolia搜索踩坑/index.html index 0bd3e47e4..e9b8e4b0c 100644 --- a/2022/09/17/Hexo-Theme-Shoka-algolia搜索踩坑/index.html +++ b/2022/09/17/Hexo-Theme-Shoka-algolia搜索踩坑/index.html @@ -1,4 +1,4 @@ -Hexo + Theme.Shoka + algolia 搜索踩坑 - 经验分享 - 服务 - Linux | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣

# Hexo + Theme.Shoka 安装

安装介绍

# algolia 注册

  1. algolia 不支持国内邮箱注册,而 google 和 github 由于国内被墙也没法使用。所以只能先注册 netlify 然后通过 netlify 注册 algolia。

  2. 登录 algolia 后创建一个 index,名字随意记住既可。

    2022-09-17-23-32-20.png

  3. 点击右上角红点,弹出窗口点 settings 按钮。

    2022-09-17-23-35-04.png

  4. 点击 API KEYS,获取 appId 和 adminApiKey 填入 hexo 的_config.yml 中 apiKey 暂时不填。

algolia:
+Hexo + Theme.Shoka + algolia 搜索踩坑 - 经验分享 - 服务 - Linux | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣

# Hexo + Theme.Shoka 安装

安装介绍

# algolia 注册

  1. algolia 不支持国内邮箱注册,而 google 和 github 由于国内被墙也没法使用。所以只能先注册 netlify 然后通过 netlify 注册 algolia。

  2. 登录 algolia 后创建一个 index,名字随意记住既可。

    2022-09-17-23-32-20.png

  3. 点击右上角红点,弹出窗口点 settings 按钮。

    2022-09-17-23-35-04.png

  4. 点击 API KEYS,获取 appId 和 adminApiKey 填入 hexo 的_config.yml 中 apiKey 暂时不填。

algolia:
   appId: #Your appId
   apiKey: #Your apiKey
   adminApiKey: #Your adminApiKey
@@ -12,4 +12,4 @@
     - gallery
     - photos
     - tags
-
  1. 点击 All Api Keys - New Api key 创建一个 api key,Indices 选先前让记住的 index,ACL 选下面图片中的选项。

    2022-09-17-23-47-50.png

  2. 把第 5 步中新建的 api key 填入到第 4 步中的配置中,到此已经完成了百分之九十,只需要重新编译发布即可。不过编译步骤多了一步,在 hexo g 后需要再执行 hexo algolia,至此搜索功能就大功告成了。

\ No newline at end of file +
  1. 点击 All Api Keys - New Api key 创建一个 api key,Indices 选先前让记住的 index,ACL 选下面图片中的选项。

    2022-09-17-23-47-50.png

  2. 把第 5 步中新建的 api key 填入到第 4 步中的配置中,到此已经完成了百分之九十,只需要重新编译发布即可。不过编译步骤多了一步,在 hexo g 后需要再执行 hexo algolia,至此搜索功能就大功告成了。

\ No newline at end of file diff --git a/2022/09/21/记一次netty-socket-io服务端连接不上的问题/index.html b/2022/09/21/记一次netty-socket-io服务端连接不上的问题/index.html index 50b36160a..0e7e00c88 100644 --- a/2022/09/21/记一次netty-socket-io服务端连接不上的问题/index.html +++ b/2022/09/21/记一次netty-socket-io服务端连接不上的问题/index.html @@ -1 +1 @@ -记一次 netty-socketio 服务端连接不上的问题 - 心得体会 - 生活 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣

今天前端开发跟我反馈用 vue 的 socketio 连接不上后台服务,连接无反应无任何报错。所以不清楚是前端代码问题还是后台服务的问题。由于框架为另一同事搭建,我只负责处理后端业务逻辑部分,所以第一时间我也不清楚具体的原因。于是我找了个第三方的 socket 工具尝试连接,果然有问题。但是只是提示连接不上,无明显错误原因。到后台查看发现有提示 Unknown transport for request 错误,最后通过调试发现 netty-socketio 的库中 AuthorizeHandler 类有段处理 transport 的代码只能接受大写的 WEBSOCKET 或者 POLLING,于是我在工具中按要求填上结果还是不行。然后我在网上搜索也未发现有相关问题,只发现有网友提示需要用 socketio 的库,不要自己写 socket 连接。于是我找了 socket.io.js 来连接,结果还是一样。经过大量调试改代码,最后突发奇想,有没有可能跟 netty-socketio 的版本有关系,于是我把版本从 1.7.20 升级到 1.7.21,结果就奇迹般的好了。

# 总结:就好像大力出奇迹,实在找不到原因的时候不妨升级一下版本,说不定问题就解决了呢!O (∩_∩) O
\ No newline at end of file +记一次 netty-socketio 服务端连接不上的问题 - 心得体会 - 生活 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣

今天前端开发跟我反馈用 vue 的 socketio 连接不上后台服务,连接无反应无任何报错。所以不清楚是前端代码问题还是后台服务的问题。由于框架为另一同事搭建,我只负责处理后端业务逻辑部分,所以第一时间我也不清楚具体的原因。于是我找了个第三方的 socket 工具尝试连接,果然有问题。但是只是提示连接不上,无明显错误原因。到后台查看发现有提示 Unknown transport for request 错误,最后通过调试发现 netty-socketio 的库中 AuthorizeHandler 类有段处理 transport 的代码只能接受大写的 WEBSOCKET 或者 POLLING,于是我在工具中按要求填上结果还是不行。然后我在网上搜索也未发现有相关问题,只发现有网友提示需要用 socketio 的库,不要自己写 socket 连接。于是我找了 socket.io.js 来连接,结果还是一样。经过大量调试改代码,最后突发奇想,有没有可能跟 netty-socketio 的版本有关系,于是我把版本从 1.7.20 升级到 1.7.21,结果就奇迹般的好了。

# 总结:就好像大力出奇迹,实在找不到原因的时候不妨升级一下版本,说不定问题就解决了呢!O (∩_∩) O
\ No newline at end of file diff --git a/2022/09/22/protobuf生成js文件/index.html b/2022/09/22/protobuf生成js文件/index.html index 62835cb5f..0ba2cd9d6 100644 --- a/2022/09/22/protobuf生成js文件/index.html +++ b/2022/09/22/protobuf生成js文件/index.html @@ -1 +1 @@ -protobuf 生成 js 文件 - 经验分享 - 工具 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣

# 下载工具

protoc-3.19.5-win64.zip

# 生成 js 文件

  1. 把 xxx.proto 文件拷贝到解压的 protoc-3.19.5-win64\bin 目录下

  2. cmd 到相同的 bin 目录下

  3. 执行 protoc.exe --js_out=import_style=commonjs,binary:. ./xxx.proto 命令,就会在 bin 目录下生成 xxx_pb.js 文件

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

Hito li 微信支付

微信支付

Hito li 支付宝

支付宝

\ No newline at end of file +protobuf 生成 js 文件 - 经验分享 - 工具 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣

# 下载工具

protoc-3.19.5-win64.zip

# 生成 js 文件

  1. 把 xxx.proto 文件拷贝到解压的 protoc-3.19.5-win64\bin 目录下

  2. cmd 到相同的 bin 目录下

  3. 执行 protoc.exe --js_out=import_style=commonjs,binary:. ./xxx.proto 命令,就会在 bin 目录下生成 xxx_pb.js 文件

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

Hito li 微信支付

微信支付

Hito li 支付宝

支付宝

\ No newline at end of file diff --git a/2022/09/23/解决域名ip变动后需要重启nginx的问题/index.html b/2022/09/23/解决域名ip变动后需要重启nginx的问题/index.html index b784b21cc..db67b88cd 100644 --- a/2022/09/23/解决域名ip变动后需要重启nginx的问题/index.html +++ b/2022/09/23/解决域名ip变动后需要重启nginx的问题/index.html @@ -1,8 +1,8 @@ -解决域名 ip 变动后需要重启 nginx 的问题 - 经验分享 - 服务 - Linux | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣

今天突然发现自己的网站不能访问了。经过一顿排查,发现是家里的外网 ip 变动后 nginx 解析的域名 ip 还是旧 ip 导致的。手动重启 nginx 后恢复正常。但这不是长久之计,如果每次 ip 变动都需要重启一次 nginx,想想都头大。于是查询资料后获得了解决办法,方法如下:

location / {	
+解决域名 ip 变动后需要重启 nginx 的问题 - 经验分享 - 服务 - Linux | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣

今天突然发现自己的网站不能访问了。经过一顿排查,发现是家里的外网 ip 变动后 nginx 解析的域名 ip 还是旧 ip 导致的。手动重启 nginx 后恢复正常。但这不是长久之计,如果每次 ip 变动都需要重启一次 nginx,想想都头大。于是查询资料后获得了解决办法,方法如下:

location / {	
 	resolver 114.114.114.114 valid=60s; #自定义缓存有效时间间隔对变量中的域名进行解析
 
 	set $my_server "https://ip:port";
 
 	proxy_pass $my_server;
 }
-
\ No newline at end of file +
\ No newline at end of file diff --git a/2022/09/26/解决Hexo-Shoka背景音乐无法播放的问题/index.html b/2022/09/26/解决Hexo-Shoka背景音乐无法播放的问题/index.html index 50bf5522d..e74494b0f 100644 --- a/2022/09/26/解决Hexo-Shoka背景音乐无法播放的问题/index.html +++ b/2022/09/26/解决Hexo-Shoka背景音乐无法播放的问题/index.html @@ -1 +1 @@ -解决 Hexo+Shoka 背景音乐无法播放的问题 - 技术分享 - 服务 - Linux | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣

今天突然发现博客的音乐无法播放了。经过一顿查找,发现是因为 https://api.i-meto.com/meting/api 调用出错了。shoka 主题应该是通过这个网站提取音乐地址、图片等信息。通过断点发现网易播放列表还是能正常获取的,只是列表中的具体音乐、图片无法获取了。于是自己用获取的列表信息组装出正确的 url 问题基本解决。只针对网易播放列表,图片只能使用一张固定的。

解决方法如下:

到 themes\shoka\source\js_app 目录下打开 player.js 文件,在最底部 init (config) 下加入 vendorJs ('fancybox');,然后找到 56 行用下面的代码替换即可。

fetch: function(source) {
      var list = []
      return new Promise(function(resolve, reject) {
        source.forEach(function(raw) {
          var meta = utils.parse(raw)
          if(meta[0]) {
            var skey = JSON.stringify(meta)
            var playlist = store.get(skey)
            if(playlist) {
			  // 自己修改 - start
			  var audioInfos = JSON.parse(playlist);
			  var neteaseStartUrl = "https://music.163.com/song/media/outer/url?id=";
			  if (meta[0] == "netease" && audioInfos && audioInfos.length>0 && !audioInfos[0].url.startsWith(neteaseStartUrl)) {// 如果是网易音乐就自己构建 url
				  jQuery.ajax({
					  url: audioInfos[0].url,
					  type: 'get',
					  async: false,
					  timeout: 5000,
					  complete : function(XMLHttpRequest, status){
						  if (XMLHttpRequest.status != 200) {
							  audioInfos.forEach(function(audioInfo) {
								  var id = audioInfo.url.substring(audioInfo.url.indexOf("id=")+3, audioInfo.url.indexOf("&auth="));
								  audioInfo.url = neteaseStartUrl + id;
								  audioInfo.pic = "https://p3.music.126.net/Vji3PQJAZ2C7gS_6X51NFQ==/109951164723650033.jpg?param=200y200";
							  })
						  }
						  list.push.apply(list, audioInfos);
						  resolve(list);
					  }
				  });
			  } else {
				  list.push.apply(list, audioInfos);
				  resolve(list);
			  }
			  // 自己修改 - end
            } else {
              fetch('https://api.i-meto.com/meting/api?server='+meta[0]+'&type='+meta[1]+'&id='+meta[2]+'&r='+ Math.random())
                .then(function(response) {
                  return response.json()
                }).then(function(json) {
                  store.set(skey, JSON.stringify(json))
                  list.push.apply(list, json);
                  resolve(list);
                }).catch(function(ex) {})
            }
          } else {
            list.push(raw);
            resolve(list);
          }
        })
      })
    }
\ No newline at end of file +解决 Hexo+Shoka 背景音乐无法播放的问题 - 技术分享 - 服务 - Linux | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣

今天突然发现博客的音乐无法播放了。经过一顿查找,发现是因为 https://api.i-meto.com/meting/api 调用出错了。shoka 主题应该是通过这个网站提取音乐地址、图片等信息。通过断点发现网易播放列表还是能正常获取的,只是列表中的具体音乐、图片无法获取了。于是自己用获取的列表信息组装出正确的 url 问题基本解决。只针对网易播放列表,图片只能使用一张固定的。

解决方法如下:

到 themes\shoka\source\js_app 目录下打开 player.js 文件,在最底部 init (config) 下加入 vendorJs ('fancybox');,然后找到 56 行用下面的代码替换即可。

fetch: function(source) {
      var list = []
      return new Promise(function(resolve, reject) {
        source.forEach(function(raw) {
          var meta = utils.parse(raw)
          if(meta[0]) {
            var skey = JSON.stringify(meta)
            var playlist = store.get(skey)
            if(playlist) {
			  // 自己修改 - start
			  var audioInfos = JSON.parse(playlist);
			  var neteaseStartUrl = "https://music.163.com/song/media/outer/url?id=";
			  if (meta[0] == "netease" && audioInfos && audioInfos.length>0 && !audioInfos[0].url.startsWith(neteaseStartUrl)) {// 如果是网易音乐就自己构建 url
				  jQuery.ajax({
					  url: audioInfos[0].url,
					  type: 'get',
					  async: false,
					  timeout: 5000,
					  complete : function(XMLHttpRequest, status){
						  if (XMLHttpRequest.status != 200) {
							  audioInfos.forEach(function(audioInfo) {
								  var id = audioInfo.url.substring(audioInfo.url.indexOf("id=")+3, audioInfo.url.indexOf("&auth="));
								  audioInfo.url = neteaseStartUrl + id;
								  audioInfo.pic = "https://p3.music.126.net/Vji3PQJAZ2C7gS_6X51NFQ==/109951164723650033.jpg?param=200y200";
							  })
						  }
						  list.push.apply(list, audioInfos);
						  resolve(list);
					  }
				  });
			  } else {
				  list.push.apply(list, audioInfos);
				  resolve(list);
			  }
			  // 自己修改 - end
            } else {
              fetch('https://api.i-meto.com/meting/api?server='+meta[0]+'&type='+meta[1]+'&id='+meta[2]+'&r='+ Math.random())
                .then(function(response) {
                  return response.json()
                }).then(function(json) {
                  store.set(skey, JSON.stringify(json))
                  list.push.apply(list, json);
                  resolve(list);
                }).catch(function(ex) {})
            }
          } else {
            list.push(raw);
            resolve(list);
          }
        })
      })
    }
\ No newline at end of file diff --git a/2022/09/27/nginx负载均衡配置/index.html b/2022/09/27/nginx负载均衡配置/index.html index dd1a9422c..238146d20 100644 --- a/2022/09/27/nginx负载均衡配置/index.html +++ b/2022/09/27/nginx负载均衡配置/index.html @@ -1,4 +1,4 @@ -nginx 负载均衡配置 - 经验分享 - 服务 - Linux | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣

# nginx 负载均衡配置

  1. 轮询(默认)

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。

upstream my_server {
+nginx 负载均衡配置 - 经验分享 - 服务 - Linux | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣

# nginx 负载均衡配置

  1. 轮询(默认)

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。

upstream my_server {
 	server 192.168.0.2:8080;
 	server 192.168.0.3:8080;
 }
@@ -60,4 +60,4 @@ server {
 	}
 	
 }
-
  1. 动静分离

把静态的资源,比如图片,css,js 等先加载到 Nginx 的服务器里。

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

Hito li 微信支付

微信支付

Hito li 支付宝

支付宝

\ No newline at end of file +
  1. 动静分离

把静态的资源,比如图片,css,js 等先加载到 Nginx 的服务器里。

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

Hito li 微信支付

微信支付

Hito li 支付宝

支付宝

\ No newline at end of file diff --git a/2022/09/28/深深的挫败和无助感/index.html b/2022/09/28/深深的挫败和无助感/index.html index 9da10b708..61be8dcfa 100644 --- a/2022/09/28/深深的挫败和无助感/index.html +++ b/2022/09/28/深深的挫败和无助感/index.html @@ -1 +1 @@ -深深的挫败和无助感 - 心情 - 生活 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
\ No newline at end of file +深深的挫败和无助感 - 心情 - 生活 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
\ No newline at end of file diff --git a/2022/10/06/Nginx配置iframe访问/index.html b/2022/10/06/Nginx配置iframe访问/index.html index 507d29160..46d2ba738 100644 --- a/2022/10/06/Nginx配置iframe访问/index.html +++ b/2022/10/06/Nginx配置iframe访问/index.html @@ -1 +1 @@ -Nginx 配置 iframe 访问 - 经验分享 - 服务 - Linux | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣

# X-Frame-Options 响应头配置详解

X-Frame-Options HTTP 响应头是用来给浏览器指示允许一个页面可否在,或者 中展现的标记。网站可以使用此功能,来确保自己网站的内容没有被嵌套到别人的网站中去,也从而避免了点击劫持 (clickjacking) 的攻击。
X-Frame-Options 三个参数:

1、 DENY

表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许。

2、SAMEORIGIN

表示该页面可以在相同域名页面的 frame 中展示。

3、ALLOW-FROM uri

表示该页面可以在指定来源的 frame 中展示。

4、ALLOWALL

表示该页面可以在任何来源的 frame 中展示。

换一句话说,如果设置为 DENY,不光在别人的网站 frame 嵌入时会无法加载,在同域名页面中同样会无法加载。另一方面,如果设置为 SAMEORIGIN,那么页面就可以在同域名页面的 frame 中嵌套。正常情况下我们通常使用 SAMEORIGIN 参数。

# Apache 配置

需要把下面这行添加到'site' 的配置中

Header always append X-Frame-Options SAMEORIGIN

# Nginx 配置

需要添加到 ‘http’, ‘server’ 或者 ‘location’ 的配置项中,个人来讲喜欢配置在‘server’ 中

正常情况下都是使用 SAMEORIGIN 参数,允许同域嵌套
add_header X-Frame-Options SAMEORIGIN;

允许单个域名 iframe 嵌套
add_header X-Frame-Options ALLOW-FROM http://xxx.com/;

允许多个域名 iframe 嵌套,注意这里是用逗号分隔
add_header X-Frame-Options "ALLOW-FROM http://xxx.com/,https://xxx.com/";

允许任何域名 iframe 嵌套
add_header X-Frame-Options ALLOWALL;

# Tomcat 配置

在‘conf/web.xml’填加以下配置

<filter>
        <filter-name>httpHeaderSecurity</filter-name>
        <filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>
        <init-param>
            <param-name>antiClickJackingOption</param-name>
            <param-value>SAMEORIGIN</param-value>
        </init-param>
        <async-supported>true</async-supported>
    </filter>
<filter-mapping>
        <filter-name>httpHeaderSecurity</filter-name>
        <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>

# IIS 配置

添加下面的配置到 ‘Web.config’文件中

<system.webServer>
  <httpProtocol>
    <customHeaders>
      <add name="X-Frame-Options" value="SAMEORIGIN" />
    </customHeaders>
  </httpProtocol>
</system.webServer>
更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

Hito li 微信支付

微信支付

Hito li 支付宝

支付宝

\ No newline at end of file +Nginx 配置 iframe 访问 - 经验分享 - 服务 - Linux | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣

# X-Frame-Options 响应头配置详解

X-Frame-Options HTTP 响应头是用来给浏览器指示允许一个页面可否在,或者 中展现的标记。网站可以使用此功能,来确保自己网站的内容没有被嵌套到别人的网站中去,也从而避免了点击劫持 (clickjacking) 的攻击。
X-Frame-Options 三个参数:

1、 DENY

表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许。

2、SAMEORIGIN

表示该页面可以在相同域名页面的 frame 中展示。

3、ALLOW-FROM uri

表示该页面可以在指定来源的 frame 中展示。

4、ALLOWALL

表示该页面可以在任何来源的 frame 中展示。

换一句话说,如果设置为 DENY,不光在别人的网站 frame 嵌入时会无法加载,在同域名页面中同样会无法加载。另一方面,如果设置为 SAMEORIGIN,那么页面就可以在同域名页面的 frame 中嵌套。正常情况下我们通常使用 SAMEORIGIN 参数。

# Apache 配置

需要把下面这行添加到'site' 的配置中

Header always append X-Frame-Options SAMEORIGIN

# Nginx 配置

需要添加到 ‘http’, ‘server’ 或者 ‘location’ 的配置项中,个人来讲喜欢配置在‘server’ 中

正常情况下都是使用 SAMEORIGIN 参数,允许同域嵌套
add_header X-Frame-Options SAMEORIGIN;

允许单个域名 iframe 嵌套
add_header X-Frame-Options ALLOW-FROM http://xxx.com/;

允许多个域名 iframe 嵌套,注意这里是用逗号分隔
add_header X-Frame-Options "ALLOW-FROM http://xxx.com/,https://xxx.com/";

允许任何域名 iframe 嵌套
add_header X-Frame-Options ALLOWALL;

# Tomcat 配置

在‘conf/web.xml’填加以下配置

<filter>
        <filter-name>httpHeaderSecurity</filter-name>
        <filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>
        <init-param>
            <param-name>antiClickJackingOption</param-name>
            <param-value>SAMEORIGIN</param-value>
        </init-param>
        <async-supported>true</async-supported>
    </filter>
<filter-mapping>
        <filter-name>httpHeaderSecurity</filter-name>
        <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>

# IIS 配置

添加下面的配置到 ‘Web.config’文件中

<system.webServer>
  <httpProtocol>
    <customHeaders>
      <add name="X-Frame-Options" value="SAMEORIGIN" />
    </customHeaders>
  </httpProtocol>
</system.webServer>
更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

Hito li 微信支付

微信支付

Hito li 支付宝

支付宝

\ No newline at end of file diff --git a/2022/10/11/svn库转git库/index.html b/2022/10/11/svn库转git库/index.html index 7c3e8b957..fc9017dbf 100644 --- a/2022/10/11/svn库转git库/index.html +++ b/2022/10/11/svn库转git库/index.html @@ -1 +1 @@ -svn 库转 git 库 - 经验分享 - 工具 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣

# 前期准备

首先安装好 svn 和 git 工具。

# svn 转 git

1、 到 svn 项目目录右键选中 gitbash 打开窗口,执行获取用户并映射成 git 样式账号命令如下:
svn log -q | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2" = "$2" <"$2">"}' | sort -u > users.txt

然后会在目录下生成文件 users.txt 样式如:zhansan = 张三 zhansan@xxx.com

2、新建个文件夹,将生成的 users.txt 放入新建的文件夹,然后在新建的文件夹中右键选中 gitbash 弹出窗口后执行下面命令(https://svn_project_url/ 为 svn 库的 url),拉取 svn 代码到本地新建文件夹中。
git svn clone https://svn_project_url/ --no-metadata --no-minimize-url --authors-file=users.txt

  • 期间可能会弹出 svn 的账户密码验证窗口,正确输入即可。

# 推送项目到 git 库

1、在 gitbash 窗口 cd 到 git 项目文件夹中执行以下命令把 git 仓库地址加入到 remote 中(https://git_project_url/ 为 git 库的 url)。
git remote add origin https://git_project_url/

2、push 项目到 git 库中。
git push origin master

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

Hito li 微信支付

微信支付

Hito li 支付宝

支付宝

\ No newline at end of file +svn 库转 git 库 - 经验分享 - 工具 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣

# 前期准备

首先安装好 svn 和 git 工具。

# svn 转 git

1、 到 svn 项目目录右键选中 gitbash 打开窗口,执行获取用户并映射成 git 样式账号命令如下:
svn log -q | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2" = "$2" <"$2">"}' | sort -u > users.txt

然后会在目录下生成文件 users.txt 样式如:zhansan = 张三 zhansan@xxx.com

2、新建个文件夹,将生成的 users.txt 放入新建的文件夹,然后在新建的文件夹中右键选中 gitbash 弹出窗口后执行下面命令(https://svn_project_url/ 为 svn 库的 url),拉取 svn 代码到本地新建文件夹中。
git svn clone https://svn_project_url/ --no-metadata --no-minimize-url --authors-file=users.txt

  • 期间可能会弹出 svn 的账户密码验证窗口,正确输入即可。

# 推送项目到 git 库

1、在 gitbash 窗口 cd 到 git 项目文件夹中执行以下命令把 git 仓库地址加入到 remote 中(https://git_project_url/ 为 git 库的 url)。
git remote add origin https://git_project_url/

2、push 项目到 git 库中。
git push origin master

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

Hito li 微信支付

微信支付

Hito li 支付宝

支付宝

\ No newline at end of file diff --git a/2022/10/12/使用picgo上传图片到chevereto/index.html b/2022/10/12/使用picgo上传图片到chevereto/index.html index bb3e2fc46..5cec2299a 100644 --- a/2022/10/12/使用picgo上传图片到chevereto/index.html +++ b/2022/10/12/使用picgo上传图片到chevereto/index.html @@ -1 +1 @@ -使用 PicGo 上传图片到 chevereto - 经验分享 - 工具 - Windows | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣

# 简介

PicGo 是一款开源的图床管理工具,十分流行。

PicGo 官方指南:PicGo | PicGo

# 配置

  1. 安装插件(需要先安装 NodeJS)

  2. 图床配置
    url 后缀必须用红线圈中的部分,key 在 chevereto 登陆后 api 配置中查找

\ No newline at end of file +使用 PicGo 上传图片到 chevereto - 经验分享 - 工具 - Windows | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣

# 简介

PicGo 是一款开源的图床管理工具,十分流行。

PicGo 官方指南:PicGo | PicGo

# 配置

  1. 安装插件(需要先安装 NodeJS)

  2. 图床配置
    url 后缀必须用红线圈中的部分,key 在 chevereto 登陆后 api 配置中查找

\ No newline at end of file diff --git a/2022/10/14/nginx允许跨域获取cookies方法/index.html b/2022/10/14/nginx允许跨域获取cookies方法/index.html index 8a2156c29..596b7e172 100644 --- a/2022/10/14/nginx允许跨域获取cookies方法/index.html +++ b/2022/10/14/nginx允许跨域获取cookies方法/index.html @@ -1,4 +1,4 @@ -nginx 允许跨域获取 cookie 的方法 - 经验分享 - 服务 - Linux | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣

# 使用场景

在 A 域名的页面向 B 域名提交数据时需要代入 B 域名的 cookie,否则 B 域名会跳转到登陆页面。解决方式需要使用到 nginx 反向代理,配置如下:

server {
+nginx 允许跨域获取 cookie 的方法 - 经验分享 - 服务 - Linux | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣

# 使用场景

在 A 域名的页面向 B 域名提交数据时需要代入 B 域名的 cookie,否则 B 域名会跳转到登陆页面。解决方式需要使用到 nginx 反向代理,配置如下:

server {
 	listen port ssl http2;
 	server_name xxx.com;
 	ssl_certificate_key /xxx.key;
@@ -11,4 +11,4 @@
 		proxy_pass http://xxx;
 	}
 }
-
\ No newline at end of file +
\ No newline at end of file diff --git a/2022/10/17/redis主从基础配置记录/index.html b/2022/10/17/redis主从基础配置记录/index.html index 92a4261a4..be4ae0b00 100644 --- a/2022/10/17/redis主从基础配置记录/index.html +++ b/2022/10/17/redis主从基础配置记录/index.html @@ -1,4 +1,4 @@ -redis 主从基础配置 - 经验分享 - 服务 - Linux | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣

# 主服务

  1. 基础配置
port 6379
+redis 主从基础配置 - 经验分享 - 服务 - Linux | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣

# 主服务

  1. 基础配置
port 6379
 requirepass 123456(密码,建议不设置)
 vm-enabled no (虚拟内存,内存够的情况下可以不使用)
 maxmemory 1GB(告诉Redis当使用了多少物理内存后就开始拒绝后续的写入)
@@ -74,4 +74,4 @@ redis-cli config set stop-writes-on-bgsave-error no
 sudo vim /etc/redis/redis.conf把stop-writes-on-bgsave-error改为no
 修改系统 sudo vim /etc/sysctl.conf加入vm.overcommit_memory=1
 sudo sysctl vm.overcommit_memory=1
-
\ No newline at end of file +
\ No newline at end of file diff --git a/2022/10/18/搭建nagios监控/index.html b/2022/10/18/搭建nagios监控/index.html index 6cde471d2..e87f5746e 100644 --- a/2022/10/18/搭建nagios监控/index.html +++ b/2022/10/18/搭建nagios监控/index.html @@ -1,4 +1,4 @@ -搭建 nagios 监控 - 经验分享 - 服务 - Linux | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣

# 监控端服务安装与配置

  1. nagios 需要安装主程序和 nrpe(nagios 和各被监控主机都必须安装)。如需使用自研前端可通过安装 ndoutils (用于把 nagios 监控信息写入数据库) 和 mysql 实现。具体安装见官网
  2. nagios 默认监控命令脚本放置在 libexec 中,自定义脚本也放到此处
  3. etc/objects/commands.cfg 用于保存 nagios 默认监控命令
  4. etc/nrpe.cfg 文件中需要添加用于被监控执行命令项(各被监控主机中都需要添加)
  5. etc/objects/hosts 目录下配置需要被监控的主机信息
  6. etc/objects/servers 目录下配置需要在被监控主机上执行的监控命令(第 4 项中的命令)

# 被监控端服务安装与配置

  1. 被监控端需要安装 nrpe
  2. 被监控端需要把监控端的命令写入到 nrpe 的配置文件中
  3. 被监控端需要把命令执行脚本放入 libexec 目录中
  4. 被监控端自动安装脚本(可借鉴)
1、请先修改脚本中的服务端IP。
+搭建 nagios 监控 - 经验分享 - 服务 - Linux | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣

# 监控端服务安装与配置

  1. nagios 需要安装主程序和 nrpe(nagios 和各被监控主机都必须安装)。如需使用自研前端可通过安装 ndoutils (用于把 nagios 监控信息写入数据库) 和 mysql 实现。具体安装见官网
  2. nagios 默认监控命令脚本放置在 libexec 中,自定义脚本也放到此处
  3. etc/objects/commands.cfg 用于保存 nagios 默认监控命令
  4. etc/nrpe.cfg 文件中需要添加用于被监控执行命令项(各被监控主机中都需要添加)
  5. etc/objects/hosts 目录下配置需要被监控的主机信息
  6. etc/objects/servers 目录下配置需要在被监控主机上执行的监控命令(第 4 项中的命令)

# 被监控端服务安装与配置

  1. 被监控端需要安装 nrpe
  2. 被监控端需要把监控端的命令写入到 nrpe 的配置文件中
  3. 被监控端需要把命令执行脚本放入 libexec 目录中
  4. 被监控端自动安装脚本(可借鉴)
1、请先修改脚本中的服务端IP。
 2、如被监控端不支持let计算命令请执行sudo dpkg-reconfigure dash命令,弹出选择窗口后选择no。
 3、需要在脚本同目录下创建CentOS、Ubuntu、sh和conf目录,目录下分别放置nrpe的tar安装包、监控脚本和nrpe配置文件。
 
@@ -216,4 +216,4 @@ sudo rm -f /usr/local/nagios/var/ndo2db.pid
 sudo rm -f /usr/local/nagios/var/ndo.sock
 sudo systemctl restart ndo2db.service
 sudo systemctl status ndo2db.service
-
更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

Hito li 微信支付

微信支付

Hito li 支付宝

支付宝

\ No newline at end of file +
更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

Hito li 微信支付

微信支付

Hito li 支付宝

支付宝

\ No newline at end of file diff --git a/2022/10/19/长了一岁/index.html b/2022/10/19/长了一岁/index.html index 63032925a..e641cf4bc 100644 --- a/2022/10/19/长了一岁/index.html +++ b/2022/10/19/长了一岁/index.html @@ -1 +1 @@ -又长了一岁 - 心情 - 生活 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣

一年一次的总结时间又到了,这一年前半年平平无奇,后半年惊涛骇浪。中年危机如期而遇,人身的低谷终究还是来了。很沮丧也很无助,但还是要坚强面对。人生起起伏伏,时好时坏,终归还是会好起来的。加油!加油!加油

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

Hito li 微信支付

微信支付

Hito li 支付宝

支付宝

\ No newline at end of file +又长了一岁 - 心情 - 生活 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣

一年一次的总结时间又到了,这一年前半年平平无奇,后半年惊涛骇浪。中年危机如期而遇,人身的低谷终究还是来了。很沮丧也很无助,但还是要坚强面对。人生起起伏伏,时好时坏,终归还是会好起来的。加油!加油!加油

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

Hito li 微信支付

微信支付

Hito li 支付宝

支付宝

\ No newline at end of file diff --git a/2022/10/20/极空间Docker版Wordpress安装与配置/index.html b/2022/10/20/极空间Docker版Wordpress安装与配置/index.html index 1490aa3f3..4dfb39124 100644 --- a/2022/10/20/极空间Docker版Wordpress安装与配置/index.html +++ b/2022/10/20/极空间Docker版Wordpress安装与配置/index.html @@ -1,4 +1,4 @@ -极空间 Docker 版 Wordpress 安装与配置 - 技术分享 - Docker - 极空间 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣

# 安装

  • 下载最新版 wordpress 镜像,如极空间无法下载,可到 passerma 网站下载。
  • 需要先在 mysql 中创建给 wordpress 使用的库。
  • 文件路径映射(目前极空间不能映射到高速盘,否则无法启动)。
  • 端口映射。
  • 通过映射的端口访问安装界面(一定要通过最终访问的页面进行安装,否则修改配置比较麻烦。如最终是域名访问,就先把域名解析代理等先配置好,再通过域名访问安装)。

# 配置

  • 如需使用 https 访问,需要在 wp-config.php 中加入以下代码,否则资源文件无法访问。
if((!empty( $_SERVER['HTTP_X_FORWARDED_HOST'])) || (!empty( $_SERVER['HTTP_X_FORWARDED_FOR'])) ) {
+极空间 Docker 版 Wordpress 安装与配置 - 技术分享 - Docker - 极空间 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣

# 安装

  • 下载最新版 wordpress 镜像,如极空间无法下载,可到 passerma 网站下载。
  • 需要先在 mysql 中创建给 wordpress 使用的库。
  • 文件路径映射(目前极空间不能映射到高速盘,否则无法启动)。
  • 端口映射。
  • 通过映射的端口访问安装界面(一定要通过最终访问的页面进行安装,否则修改配置比较麻烦。如最终是域名访问,就先把域名解析代理等先配置好,再通过域名访问安装)。

# 配置

  • 如需使用 https 访问,需要在 wp-config.php 中加入以下代码,否则资源文件无法访问。
if((!empty( $_SERVER['HTTP_X_FORWARDED_HOST'])) || (!empty( $_SERVER['HTTP_X_FORWARDED_FOR'])) ) {
     $_SERVER['HTTP_HOST'] = $_SERVER['HTTP_X_FORWARDED_HOST'];
     $_SERVER['HTTPS'] = 'on';
 }
@@ -14,4 +14,4 @@ chmod('/var/www/html/wp-content/tmp', 0777);
 
  • 隐藏后台访问需要在 wp-login.php 中加入以下代码,key、value 和 https://www.xxx.com/ 需要修改为自己的。修改后只能通过 https://www.xxx.com/wp-login.php?key=value 访问,其它访问需要登录的页面都会跳转到配置的 https://www.xxx.com/ 地址。
if($_GET['key'] != 'value') {
 	header('Location: https://www.xxx.com/');
 }
-
\ No newline at end of file +
\ No newline at end of file diff --git a/2022/10/21/Hexo-Theme-Shoka-Valine评论配置/index.html b/2022/10/21/Hexo-Theme-Shoka-Valine评论配置/index.html index 55d5ec07c..86f09b549 100644 --- a/2022/10/21/Hexo-Theme-Shoka-Valine评论配置/index.html +++ b/2022/10/21/Hexo-Theme-Shoka-Valine评论配置/index.html @@ -1,4 +1,4 @@ -Hexo + Theme.Shoka + Valine 评论配置 - 经验分享 - Docker - 极空间 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
  • valine 评论需要 LeanCloud 支持

# LeanCloud 注册

  1. LeanCloud 网站完成注册。
  2. 创建应用。
  3. 名称随便取,方案看自己选择。开发版免费但是有限制,商业版收费无限制。
  4. 点击配置按钮进行配置。
  5. 点击设置 - 应用凭证可获取 App ID 和 App Key
  6. 点击设置 - 安全中心根据自己的需求配置

# 修改 Theme.Shoka 配置

valine:
+Hexo + Theme.Shoka + Valine 评论配置 - 经验分享 - Docker - 极空间 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
  • valine 评论需要 LeanCloud 支持

# LeanCloud 注册

  1. LeanCloud 网站完成注册。
  2. 创建应用。
  3. 名称随便取,方案看自己选择。开发版免费但是有限制,商业版收费无限制。
  4. 点击配置按钮进行配置。
  5. 点击设置 - 应用凭证可获取 App ID 和 App Key
  6. 点击设置 - 安全中心根据自己的需求配置

# 修改 Theme.Shoka 配置

valine:
   appId: 粘贴5中获取的App ID #Your_appId
   appKey: 粘贴5中获取的App Key #Your_appkey
   placeholder: ヽ(○´∀`)ノ♪欢迎畅所欲言 # Comment box placeholder
@@ -27,4 +27,4 @@
       # - hash of friend2@email.com
     investor:
       # - hash of investor1@email.com
-
\ No newline at end of file +
\ No newline at end of file diff --git a/2022/10/21/极空间Docker版mariadb安装与配置/index.html b/2022/10/21/极空间Docker版mariadb安装与配置/index.html index 430e6d623..862231714 100644 --- a/2022/10/21/极空间Docker版mariadb安装与配置/index.html +++ b/2022/10/21/极空间Docker版mariadb安装与配置/index.html @@ -1,4 +1,4 @@ -极空间 Docker 版 mariadb 安装与配置 - 技术分享 - Docker - 极空间 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣

# 介绍

  • mariadb 属于 mysql 的一个分支,完全兼容 mysql,使用方式和 mysql 无区别。

# 安装

  • 本文介绍安装的镜像为 linuxserver_mariadb 的 10.5.13-r0-ls45,原则上使用最新版即可
  • 配置文件映射
  • 端口
  • 环境(MYSQL_ROOT_PASSWORD 为数据库 root 用户密码)
  • 到此已经可以在内网使用了,连接方法同 mysql 一致

# 配置

  • 此处配置为 nginx 反向代理,配置完成后可在外网连接访问
stream {
+极空间 Docker 版 mariadb 安装与配置 - 技术分享 - Docker - 极空间 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣

# 介绍

  • mariadb 属于 mysql 的一个分支,完全兼容 mysql,使用方式和 mysql 无区别。

# 安装

  • 本文介绍安装的镜像为 linuxserver_mariadb 的 10.5.13-r0-ls45,原则上使用最新版即可
  • 配置文件映射
  • 端口
  • 环境(MYSQL_ROOT_PASSWORD 为数据库 root 用户密码)
  • 到此已经可以在内网使用了,连接方法同 mysql 一致

# 配置

  • 此处配置为 nginx 反向代理,配置完成后可在外网连接访问
stream {
 	
 	#极空间-docker-mariadb
 	upstream mariadb {
@@ -15,4 +15,4 @@
 	}
     
 }
-
\ No newline at end of file +
\ No newline at end of file diff --git a/2022/10/22/极空间Docker版青龙面板安装与配置/index.html b/2022/10/22/极空间Docker版青龙面板安装与配置/index.html index 0e3b75505..f4cbe8f7b 100644 --- a/2022/10/22/极空间Docker版青龙面板安装与配置/index.html +++ b/2022/10/22/极空间Docker版青龙面板安装与配置/index.html @@ -1,4 +1,4 @@ -极空间 Docker 版青龙面板安装与配置 - 技术分享 - Docker - 极空间 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣

# 介绍

  • 青龙面板是一个支持 python3、javascript、shell、typescript 的定时任务管理面板。它支持在线管理脚本、环境变量、配置文件,支持在线查看日志及支持多种方式的消息通知。

# 安装

  • 本文使用的是 whyour/qinglong 的镜像。
  • 路径映射(由于青龙面板有 nodejs 环境,所以我把 hexo 博客的编译也放置在上面,再把 nginx 的 html 映射过来,这样就可以直接编译发布了。)
#青龙面板装载路径
+极空间 Docker 版青龙面板安装与配置 - 技术分享 - Docker - 极空间 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣

# 介绍

  • 青龙面板是一个支持 python3、javascript、shell、typescript 的定时任务管理面板。它支持在线管理脚本、环境变量、配置文件,支持在线查看日志及支持多种方式的消息通知。

# 安装

  • 本文使用的是 whyour/qinglong 的镜像。
  • 路径映射(由于青龙面板有 nodejs 环境,所以我把 hexo 博客的编译也放置在上面,再把 nginx 的 html 映射过来,这样就可以直接编译发布了。)
#青龙面板装载路径
 /ql/data/ninja
 /ql/data/db
 /ql/data/deps
@@ -102,4 +102,4 @@ Error: Cannot find module './xx'
 
 #Python3依赖安装失败修复(基于Faker一键脚本安装的青龙)
 curl -sS https://bootstrap.pypa.io/get-pip.py | python3
-
\ No newline at end of file +
\ No newline at end of file diff --git a/404.html b/404.html index 6a7ead049..35be54011 100644 --- a/404.html +++ b/404.html @@ -1 +1 @@ -Σ( ° △ °|||)︴404!何も見えない | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
Σ( ° △ °|||)︴404!何も見えない
\ No newline at end of file +Σ( ° △ °|||)︴404!何も見えない | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
Σ( ° △ °|||)︴404!何も見えない
\ No newline at end of file diff --git a/about/me.html b/about/me.html index a7cc5a097..2d513a20e 100644 --- a/about/me.html +++ b/about/me.html @@ -1 +1 @@ -| Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣

# 个人信息

  • 姓名:李海涛
  • 性别:男
  • 学历:本科
  • 生肖:鼠
  • 星座:天秤
  • 邮箱:lht518@vip.qq.com

# 个人爱好

  • 跑步
  • 篮球
  • 听歌
  • 电影

# 编程语言

  • java
  • python
  • php

# 项目经历 - 近期

  1. 智能量化决策交易系统

    该项目主要用于对期货、股票等进行智能化交易,会根据用户事先设置的规则决策是否买卖,并给出信号、收益、最大回撤等详细的统计报告及分析报表。 该项目采用Spring Cloud微服务解决方案,主要功能模块分为行情采集、策略计算、交易信号处理、账户交易服务、ctp网关、策略统计、消息推送等 该项目使用IntellIJ做为主要开发工具,前端使用vue框架,图表采用tradingview、highchart等。后端使用mybatis、mysql对部分用户、策略、配置信息进行存储,kafka做为行情数据、交易信号等消息中间件。使用redis存储当日分时行情等临时数据,mongodb用于存储分析结果、信号历史,hbase存储期货行情等详细数据。使用netty框架实现实时消息推送。
  2. IWB-EX 交易平台

    该项目主要依托流行的区块链技术进行白酒的销售。以虚拟币为货币,白酒为等价商品进行交易。当虚拟币价格过低时用户可以选择实物白酒进行提货。使用IntellIJ做为开发工具,采用的技术有springMVC、mysql、thymeleaf等。
  3. 废品回收管理平台

    该项目主要为废品回收公司提供废品的进出库管理和统计,并打印详细价格单据等。该项目分为两个平台,给用户使用的入库填表平台和给企业管理人员使用的审核、管理后台。使用IntellIJ做为开发工具,采用的技术有springMVC、mysql、freemarker等。
更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

Hito li 微信支付

微信支付

Hito li 支付宝

支付宝

\ No newline at end of file +| Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣

# 个人信息

  • 姓名:李海涛
  • 性别:男
  • 学历:本科
  • 生肖:鼠
  • 星座:天秤
  • 邮箱:lht518@vip.qq.com

# 个人爱好

  • 跑步
  • 篮球
  • 听歌
  • 电影

# 编程语言

  • java
  • python
  • php

# 项目经历 - 近期

  1. 智能量化决策交易系统

    该项目主要用于对期货、股票等进行智能化交易,会根据用户事先设置的规则决策是否买卖,并给出信号、收益、最大回撤等详细的统计报告及分析报表。 该项目采用Spring Cloud微服务解决方案,主要功能模块分为行情采集、策略计算、交易信号处理、账户交易服务、ctp网关、策略统计、消息推送等 该项目使用IntellIJ做为主要开发工具,前端使用vue框架,图表采用tradingview、highchart等。后端使用mybatis、mysql对部分用户、策略、配置信息进行存储,kafka做为行情数据、交易信号等消息中间件。使用redis存储当日分时行情等临时数据,mongodb用于存储分析结果、信号历史,hbase存储期货行情等详细数据。使用netty框架实现实时消息推送。
  2. IWB-EX 交易平台

    该项目主要依托流行的区块链技术进行白酒的销售。以虚拟币为货币,白酒为等价商品进行交易。当虚拟币价格过低时用户可以选择实物白酒进行提货。使用IntellIJ做为开发工具,采用的技术有springMVC、mysql、thymeleaf等。
  3. 废品回收管理平台

    该项目主要为废品回收公司提供废品的进出库管理和统计,并打印详细价格单据等。该项目分为两个平台,给用户使用的入库填表平台和给企业管理人员使用的审核、管理后台。使用IntellIJ做为开发工具,采用的技术有springMVC、mysql、freemarker等。
更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

Hito li 微信支付

微信支付

Hito li 支付宝

支付宝

\ No newline at end of file diff --git a/archives/2022/09/index.html b/archives/2022/09/index.html index 637581f2d..64170dcf2 100644 --- a/archives/2022/09/index.html +++ b/archives/2022/09/index.html @@ -1 +1 @@ -2022 年 / 09 月 - 归档 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
\ No newline at end of file +2022 年 / 09 月 - 归档 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
\ No newline at end of file diff --git a/archives/2022/10/index.html b/archives/2022/10/index.html index 7ede4222a..37f4238d3 100644 --- a/archives/2022/10/index.html +++ b/archives/2022/10/index.html @@ -1 +1 @@ -2022 年 / 10 月 - 归档 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
\ No newline at end of file +2022 年 / 10 月 - 归档 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
\ No newline at end of file diff --git a/archives/2022/10/page/2/index.html b/archives/2022/10/page/2/index.html index 6a54b5bd7..5dd4cb753 100644 --- a/archives/2022/10/page/2/index.html +++ b/archives/2022/10/page/2/index.html @@ -1 +1 @@ -2022 年 / 10 月 - 归档 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
\ No newline at end of file +2022 年 / 10 月 - 归档 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
\ No newline at end of file diff --git a/archives/2022/index.html b/archives/2022/index.html index cd2b24c80..982c63a77 100644 --- a/archives/2022/index.html +++ b/archives/2022/index.html @@ -1 +1 @@ -2022 年 - 归档 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
\ No newline at end of file +2022 年 - 归档 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
\ No newline at end of file diff --git a/archives/2022/page/2/index.html b/archives/2022/page/2/index.html index a98704950..67b5ae698 100644 --- a/archives/2022/page/2/index.html +++ b/archives/2022/page/2/index.html @@ -1 +1 @@ -2022 年 - 归档 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
\ No newline at end of file +2022 年 - 归档 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
\ No newline at end of file diff --git a/archives/index.html b/archives/index.html index a39e45437..33fe4acf7 100644 --- a/archives/index.html +++ b/archives/index.html @@ -1 +1 @@ -归档 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣

首页 / 目前共计 20 篇文章。 嗯.. 继续努力。

2022 年/10 月 ( 11 )

2022 年/09 月 ( 9 )

\ No newline at end of file +归档 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣

首页 / 目前共计 20 篇文章。 嗯.. 继续努力。

2022 年/10 月 ( 11 )

2022 年/09 月 ( 9 )

\ No newline at end of file diff --git a/atom.xml b/atom.xml index ac7cb665a..8e400a409 100644 --- a/atom.xml +++ b/atom.xml @@ -775,8 +775,8 @@ url 后缀必须用红线圈中的部分,key 在 chevereto 登陆后 api 配 - + 2022-10-12T06:40:00.000Z @@ -855,8 +855,8 @@ X-Frame-Options 三个参数:</p> - + 2022-09-28T08:02:00.000Z @@ -1163,11 +1163,11 @@ server &#123; + - 2022-09-16T00:04:00.000Z diff --git a/categories/Linux/index.html b/categories/Linux/index.html index 776e2cf95..a6976be85 100644 --- a/categories/Linux/index.html +++ b/categories/Linux/index.html @@ -1 +1 @@ -分类:Linux | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
\ No newline at end of file +分类:Linux | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
\ No newline at end of file diff --git a/categories/Linux/服务/index.html b/categories/Linux/服务/index.html index fd8954f60..15f1801f4 100644 --- a/categories/Linux/服务/index.html +++ b/categories/Linux/服务/index.html @@ -1 +1 @@ -分类:服务 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
\ No newline at end of file +分类:服务 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
\ No newline at end of file diff --git a/categories/Linux/服务/技术分享/index.html b/categories/Linux/服务/技术分享/index.html index 016b2c9e6..6cc4f6f73 100644 --- a/categories/Linux/服务/技术分享/index.html +++ b/categories/Linux/服务/技术分享/index.html @@ -1 +1 @@ -分类:技术分享 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
\ No newline at end of file +分类:技术分享 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
\ No newline at end of file diff --git a/categories/Linux/服务/经验分享/index.html b/categories/Linux/服务/经验分享/index.html index d85841e58..e3bbce1d1 100644 --- a/categories/Linux/服务/经验分享/index.html +++ b/categories/Linux/服务/经验分享/index.html @@ -1 +1 @@ -分类:经验分享 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
\ No newline at end of file +分类:经验分享 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
\ No newline at end of file diff --git a/categories/Windows/index.html b/categories/Windows/index.html index 8db085f93..f96dede40 100644 --- a/categories/Windows/index.html +++ b/categories/Windows/index.html @@ -1 +1 @@ -分类:Windows | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
\ No newline at end of file +分类:Windows | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
\ No newline at end of file diff --git a/categories/Windows/工具/index.html b/categories/Windows/工具/index.html index 19e75a7b6..e44bcbb30 100644 --- a/categories/Windows/工具/index.html +++ b/categories/Windows/工具/index.html @@ -1 +1 @@ -分类:工具 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
\ No newline at end of file +分类:工具 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
\ No newline at end of file diff --git a/categories/Windows/工具/经验分享/index.html b/categories/Windows/工具/经验分享/index.html index 021ddf987..5e3036797 100644 --- a/categories/Windows/工具/经验分享/index.html +++ b/categories/Windows/工具/经验分享/index.html @@ -1 +1 @@ -分类:经验分享 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
\ No newline at end of file +分类:经验分享 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
\ No newline at end of file diff --git a/categories/index.html b/categories/index.html index 28e6945d6..abb363348 100644 --- a/categories/index.html +++ b/categories/index.html @@ -1 +1 @@ -全部分类 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
\ No newline at end of file +全部分类 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
\ No newline at end of file diff --git a/categories/工具/index.html b/categories/工具/index.html index 67b804749..11e72b12b 100644 --- a/categories/工具/index.html +++ b/categories/工具/index.html @@ -1 +1 @@ -分类:工具 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
\ No newline at end of file +分类:工具 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
\ No newline at end of file diff --git a/categories/工具/经验分享/index.html b/categories/工具/经验分享/index.html index abb0c6bf1..cb2006e27 100644 --- a/categories/工具/经验分享/index.html +++ b/categories/工具/经验分享/index.html @@ -1 +1 @@ -分类:经验分享 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
\ No newline at end of file +分类:经验分享 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
\ No newline at end of file diff --git a/categories/极空间/Docker/index.html b/categories/极空间/Docker/index.html index eeb35a8ed..601afa8f9 100644 --- a/categories/极空间/Docker/index.html +++ b/categories/极空间/Docker/index.html @@ -1 +1 @@ -分类:Docker | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
\ No newline at end of file +分类:Docker | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
\ No newline at end of file diff --git a/categories/极空间/Docker/技术分享/index.html b/categories/极空间/Docker/技术分享/index.html index e68fa7af2..8d0958c80 100644 --- a/categories/极空间/Docker/技术分享/index.html +++ b/categories/极空间/Docker/技术分享/index.html @@ -1 +1 @@ -分类:技术分享 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
\ No newline at end of file +分类:技术分享 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
\ No newline at end of file diff --git a/categories/极空间/Docker/经验分享/index.html b/categories/极空间/Docker/经验分享/index.html index abd14aae5..b82a65244 100644 --- a/categories/极空间/Docker/经验分享/index.html +++ b/categories/极空间/Docker/经验分享/index.html @@ -1 +1 @@ -分类:经验分享 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
\ No newline at end of file +分类:经验分享 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
\ No newline at end of file diff --git a/categories/极空间/index.html b/categories/极空间/index.html index f57003a32..4651cba89 100644 --- a/categories/极空间/index.html +++ b/categories/极空间/index.html @@ -1 +1 @@ -分类:极空间 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
\ No newline at end of file +分类:极空间 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
\ No newline at end of file diff --git a/categories/生活/index.html b/categories/生活/index.html index 3b090d4ed..2ba3f5fe2 100644 --- a/categories/生活/index.html +++ b/categories/生活/index.html @@ -1 +1 @@ -分类:生活 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
\ No newline at end of file +分类:生活 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
\ No newline at end of file diff --git a/categories/生活/心得体会/index.html b/categories/生活/心得体会/index.html index 07ed0bebe..1f6022ef4 100644 --- a/categories/生活/心得体会/index.html +++ b/categories/生活/心得体会/index.html @@ -1 +1 @@ -分类:心得体会 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
\ No newline at end of file +分类:心得体会 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
\ No newline at end of file diff --git a/categories/生活/心情/index.html b/categories/生活/心情/index.html index 8d65fe8ca..9049e995d 100644 --- a/categories/生活/心情/index.html +++ b/categories/生活/心情/index.html @@ -1 +1 @@ -分类:心情 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
\ No newline at end of file +分类:心情 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
\ No newline at end of file diff --git a/feed.json b/feed.json index 78b4519f0..9dbe3f579 100644 --- a/feed.json +++ b/feed.json @@ -133,8 +133,8 @@ "Windows", "工具", "经验分享", - "chevereto", - "PicGo" + "PicGo", + "chevereto" ] }, { @@ -173,8 +173,8 @@ "tags": [ "生活", "心情", - "郁闷", - "心情" + "心情", + "郁闷" ] }, { @@ -275,11 +275,11 @@ "极空间", "Docker", "技术分享", + "chevereto", "极空间", "docker", "图床", - "图片上传", - "chevereto" + "图片上传" ] }, { diff --git a/index.html b/index.html index ae46e2fd3..c87a5244d 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣

文章列表

2.4k 2 分钟

# 介绍 青龙面板是一个支持 python3、javascript、shell、typescript 的定时任务管理面板。它支持在线管理脚本、环境变量、配置文件,支持在线查看日志及支持多种方式的消息通知。 # 安装 本文使用的是 whyour/qinglong 的镜像。 路径映射(由于青龙面板有 nodejs 环境,所以我把 hexo 博客的编译也放置在上面,再把 nginx 的 html...
959 1 分钟

valine 评论需要 LeanCloud 支持 # LeanCloud 注册 到 LeanCloud 网站完成注册。 创建应用。 名称随便取,方案看自己选择。开发版免费但是有限制,商业版收费无限制。 点击配置按钮进行配置。 点击设置 - 应用凭证可获取 App ID 和 App Key 点击设置 - 安全中心根据自己的需求配置 # 修改 Theme.Shoka 配置 valine:  appId: 粘贴5中获取的App ID #Your_appId appKey: 粘贴5中获取的App Key #Your_appkey placeholder: ヽ(○´∀`)ノ♪欢迎畅所欲言...
406 1 分钟

# 介绍 mariadb 属于 mysql 的一个分支,完全兼容 mysql,使用方式和 mysql 无区别。 # 安装 本文介绍安装的镜像为 linuxserver_mariadb 的 10.5.13-r0-ls45,原则上使用最新版即可 配置文件映射 端口 环境(MYSQL_ROOT_PASSWORD 为数据库 root 用户密码) 到此已经可以在内网使用了,连接方法同 mysql 一致 # 配置 此处配置为 nginx 反向代理,配置完成后可在外网连接访问 stream &#123; #极空间-docker-mariadb upstream...
1.2k 1 分钟

# 安装 下载最新版 wordpress 镜像,如极空间无法下载,可到 passerma 网站下载。 需要先在 mysql 中创建给 wordpress 使用的库。 文件路径映射(目前极空间不能映射到高速盘,否则无法启动)。 端口映射。 通过映射的端口访问安装界面(一定要通过最终访问的页面进行安装,否则修改配置比较麻烦。如最终是域名访问,就先把域名解析代理等先配置好,再通过域名访问安装)。 # 配置 如需使用 https 访问,需要在 wp-config.php 中加入以下代码,否则资源文件无法访问。 if((!empty(...
101 1 分钟

一年一次的总结时间又到了,这一年前半年平平无奇,后半年惊涛骇浪。中年危机如期而遇,人身的低谷终究还是来了。很沮丧也很无助,但还是要坚强面对。人生起起伏伏,时好时坏,终归还是会好起来的。加油!加油!加油 !
7.2k 7 分钟

# 监控端服务安装与配置 nagios 需要安装主程序和 nrpe(nagios 和各被监控主机都必须安装)。如需使用自研前端可通过安装 ndoutils (用于把 nagios 监控信息写入数据库) 和 mysql 实现。具体安装见官网 nagios 默认监控命令脚本放置在 libexec 中,自定义脚本也放到此处 etc/objects/commands.cfg 用于保存 nagios 默认监控命令 etc/nrpe.cfg 文件中需要添加用于被监控执行命令项(各被监控主机中都需要添加) etc/objects/hosts...
3.2k 3 分钟

# 主服务 基础配置 port 6379 requirepass 123456(密码,建议不设置) vm-enabled no (虚拟内存,内存够的情况下可以不使用) maxmemory 1GB(告诉Redis当使用了多少物理内存后就开始拒绝后续的写入) bind 127.0.0.1 (注释掉,否则不能外部连接) rdbchecksum no(持久化数据检查) list-max-ziplist-size 1024(ziplist的最大容量,正数为自己指定的大小。负数-1到-5为对应的值4到64Kb) list-compress-depth...
366 1 分钟

# 使用场景   在 A 域名的页面向 B 域名提交数据时需要代入 B 域名的 cookie,否则 B 域名会跳转到登陆页面。解决方式需要使用到 nginx 反向代理,配置如下: server &#123; listen port ssl http2; server_name xxx.com; ssl_certificate_key /xxx.key; ssl_certificate /xxx.pem; proxy_cookie_path ~(.*) &quot;$1; SameSite=None; secure;...
111 1 分钟

# 简介 PicGo 是一款开源的图床管理工具,十分流行。 PicGo 官方指南:PicGo | PicGo # 配置 安装插件(需要先安装 NodeJS) 图床配置   url 后缀必须用红线圈中的部分,key 在 chevereto 登陆后 api 配置中查找
709 1 分钟

# 前期准备   首先安装好 svn 和 git 工具。 # svn 转 git 1、 到 svn 项目目录右键选中 gitbash 打开窗口,执行获取用户并映射成 git 样式账号命令如下: svn log -q | awk -F '|' '/^r/ &#123;sub(&quot;^ &quot;, &quot;&quot;, $2); sub(&quot; $&quot;, &quot;&quot;, $2); print $2&quot; =...
\ No newline at end of file +Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣

文章列表

2.4k 2 分钟

# 介绍 青龙面板是一个支持 python3、javascript、shell、typescript 的定时任务管理面板。它支持在线管理脚本、环境变量、配置文件,支持在线查看日志及支持多种方式的消息通知。 # 安装 本文使用的是 whyour/qinglong 的镜像。 路径映射(由于青龙面板有 nodejs 环境,所以我把 hexo 博客的编译也放置在上面,再把 nginx 的 html...
959 1 分钟

valine 评论需要 LeanCloud 支持 # LeanCloud 注册 到 LeanCloud 网站完成注册。 创建应用。 名称随便取,方案看自己选择。开发版免费但是有限制,商业版收费无限制。 点击配置按钮进行配置。 点击设置 - 应用凭证可获取 App ID 和 App Key 点击设置 - 安全中心根据自己的需求配置 # 修改 Theme.Shoka 配置 valine:  appId: 粘贴5中获取的App ID #Your_appId appKey: 粘贴5中获取的App Key #Your_appkey placeholder: ヽ(○´∀`)ノ♪欢迎畅所欲言...
406 1 分钟

# 介绍 mariadb 属于 mysql 的一个分支,完全兼容 mysql,使用方式和 mysql 无区别。 # 安装 本文介绍安装的镜像为 linuxserver_mariadb 的 10.5.13-r0-ls45,原则上使用最新版即可 配置文件映射 端口 环境(MYSQL_ROOT_PASSWORD 为数据库 root 用户密码) 到此已经可以在内网使用了,连接方法同 mysql 一致 # 配置 此处配置为 nginx 反向代理,配置完成后可在外网连接访问 stream &#123; #极空间-docker-mariadb upstream...
1.2k 1 分钟

# 安装 下载最新版 wordpress 镜像,如极空间无法下载,可到 passerma 网站下载。 需要先在 mysql 中创建给 wordpress 使用的库。 文件路径映射(目前极空间不能映射到高速盘,否则无法启动)。 端口映射。 通过映射的端口访问安装界面(一定要通过最终访问的页面进行安装,否则修改配置比较麻烦。如最终是域名访问,就先把域名解析代理等先配置好,再通过域名访问安装)。 # 配置 如需使用 https 访问,需要在 wp-config.php 中加入以下代码,否则资源文件无法访问。 if((!empty(...
101 1 分钟

一年一次的总结时间又到了,这一年前半年平平无奇,后半年惊涛骇浪。中年危机如期而遇,人身的低谷终究还是来了。很沮丧也很无助,但还是要坚强面对。人生起起伏伏,时好时坏,终归还是会好起来的。加油!加油!加油 !
7.2k 7 分钟

# 监控端服务安装与配置 nagios 需要安装主程序和 nrpe(nagios 和各被监控主机都必须安装)。如需使用自研前端可通过安装 ndoutils (用于把 nagios 监控信息写入数据库) 和 mysql 实现。具体安装见官网 nagios 默认监控命令脚本放置在 libexec 中,自定义脚本也放到此处 etc/objects/commands.cfg 用于保存 nagios 默认监控命令 etc/nrpe.cfg 文件中需要添加用于被监控执行命令项(各被监控主机中都需要添加) etc/objects/hosts...
3.2k 3 分钟

# 主服务 基础配置 port 6379 requirepass 123456(密码,建议不设置) vm-enabled no (虚拟内存,内存够的情况下可以不使用) maxmemory 1GB(告诉Redis当使用了多少物理内存后就开始拒绝后续的写入) bind 127.0.0.1 (注释掉,否则不能外部连接) rdbchecksum no(持久化数据检查) list-max-ziplist-size 1024(ziplist的最大容量,正数为自己指定的大小。负数-1到-5为对应的值4到64Kb) list-compress-depth...
366 1 分钟

# 使用场景   在 A 域名的页面向 B 域名提交数据时需要代入 B 域名的 cookie,否则 B 域名会跳转到登陆页面。解决方式需要使用到 nginx 反向代理,配置如下: server &#123; listen port ssl http2; server_name xxx.com; ssl_certificate_key /xxx.key; ssl_certificate /xxx.pem; proxy_cookie_path ~(.*) &quot;$1; SameSite=None; secure;...
111 1 分钟

# 简介 PicGo 是一款开源的图床管理工具,十分流行。 PicGo 官方指南:PicGo | PicGo # 配置 安装插件(需要先安装 NodeJS) 图床配置   url 后缀必须用红线圈中的部分,key 在 chevereto 登陆后 api 配置中查找
709 1 分钟

# 前期准备   首先安装好 svn 和 git 工具。 # svn 转 git 1、 到 svn 项目目录右键选中 gitbash 打开窗口,执行获取用户并映射成 git 样式账号命令如下: svn log -q | awk -F '|' '/^r/ &#123;sub(&quot;^ &quot;, &quot;&quot;, $2); sub(&quot; $&quot;, &quot;&quot;, $2); print $2&quot; =...
\ No newline at end of file diff --git a/js/app.js b/js/app.js index 1b3796c18..8217e883a 100644 --- a/js/app.js +++ b/js/app.js @@ -1,2 +1,2 @@ -var e={version:"0.0.0",hostname:"https://blog.jingxiyuan.cn",root:"/",statics:"/",favicon:{normal:"images/favicon.ico",hidden:"images/failure.ico"},darkmode:false,auto_scroll:true,js:{valine:"gh/amehime/MiniValine@4.2.2-beta10/dist/MiniValine.min.js",chart:"npm/frappe-charts@1.5.0/dist/frappe-charts.min.iife.min.js",copy_tex:"npm/katex@0.12.0/dist/contrib/copy-tex.min.js",fancybox:"combine/npm/jquery@3.5.1/dist/jquery.min.js,npm/@fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.js,npm/justifiedGallery@3.8.1/dist/js/jquery.justifiedGallery.min.js"},css:{valine:"css/comment.css",katex:"npm/katex@0.12.0/dist/katex.min.css",mermaid:"css/mermaid.css",fancybox:"combine/npm/@fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.css,npm/justifiedGallery@3.8.1/dist/css/justifiedGallery.min.css"},loader:{start:true,"switch":true},search:{appID:"2NU6BAFQUF",apiKey:"47a93cc6d8d1e77bd82d36e8365788dc",indexName:"blog",hits:{per_page:10}},valine:{appId:"pFJTr97i45HCNkAPfurKR0rS-gzGzoHsz",appKey:"9LsEPqi4hHCtghqzc7qDLyNV",placeholder:"ヽ(○´∀`)ノ♪欢迎畅所欲言",avatar:"mp",pageSize:10,lang:"zh-CN",visitor:true,NoRecordIP:false,serverURLs:null,powerMode:true,tagMeta:{visitor:"新朋友",master:"博主",friend:"小伙伴",investor:"金主粑粑"},tagColor:{master:"var(--color-orange)",friend:"var(--color-aqua)",investor:"var(--color-pink)"},tagMember:{master:["lht518@vip.qq.com"],friend:null,investor:null}},quicklink:{timeout:3e3,priority:true},audio:[{title:"博主喜欢",list:[{name:"仙剑问情",url:"https://music.163.com/song/media/outer/url?id=1416747959",artist:"萧人凤",cover:"https://p2.music.126.net/gZlHY7Cc2MaD7UVhgv7rYw==/109951164626902666.jpg?param=130y130"},{name:"大天蓬",url:"https://music.163.com/song/media/outer/url?id=1483488153",artist:"璐爷",cover:"https://p2.music.126.net/rn6L_xf1tlVAyHOz95mmMQ==/109951165354012465.jpg?param=130y130"},{name:"左手指月",url:"https://music.163.com/song/media/outer/url?id=536096151",artist:"萨顶顶",cover:"https://p1.music.126.net/gEia-o05FSas8uJos54Sug==/109951163456726954.jpg?param=130y130"},{name:"如愿",url:"http://music.163.com/song/media/outer/url?id=1922701695.mp3",artist:"葱香科学家,王菲",cover:"http://p2.music.126.net/3quyghcGASgwNjjXZfqqhg==/109951167081686500.jpg?param=130v130"}]},{title:"网易云音乐",list:["https://music.163.com/#/playlist?id=5172410111","https://music.163.com/#/discover/toplist?id=19723756"]}],fireworks:["rgba(255,182,185,.9)","rgba(250,227,217,.9)","rgba(187,222,214,.9)","rgba(138,198,209,.9)"]};const t=function(e,t){return Math.floor(Math.random()*(t-e+1))+e};const a=function(){return u("main > .inner").offsetHeight};const n=function(e,t,a){if(a){t()}else{var n=document.createElement("script");n.onload=n.onreadystatechange=function(e,a){if(a||!n.readyState||/loaded|complete/.test(n.readyState)){n.onload=n.onreadystatechange=null;n=undefined;if(!a&&t)setTimeout(t,0)}};n.src=e;document.head.appendChild(n)}};const i=function(t,a){var n=e[t][a];if(n.indexOf("npm")>-1||n.indexOf("gh")>-1||n.indexOf("combine")>-1)return"//cdn.jsdelivr.net/"+n;if(n.indexOf("http")>-1)return n;return m+n};const r=function(e,t,a){if(LOCAL[e]){n(i("js",e),t||function(){window[e]=true},a||window[e])}};const s=function(e,t){if(window["css"+e])return;if(LOCAL[e]){document.head.createChild("link",{rel:"stylesheet",href:i("css",e)});window["css"+e]=true}};const o=function(e){var t=e.text||e.textContent||e.innerHTML||"";var a=e.parentNode;a.removeChild(e);var n=document.createElement("script");if(e.id){n.id=e.id}if(e.className){n.className=e.className}if(e.type){n.type=e.type}if(e.src){n.src=e.src;n.async=false}if(e.dataset.pjax!==undefined){n.dataset.pjax=""}if(t!==""){n.appendChild(document.createTextNode(t))}a.appendChild(n)};const c=function(e,t,a){var n={targets:typeof t=="number"?e.parentNode:document.scrollingElement,duration:500,easing:"easeInOutQuad",scrollTop:t||(typeof e=="number"?e:e?e.top()+document.documentElement.scrollTop-R:0),complete:function(){a&&a()}};anime(n)};const l=function(e,t,a){var n={};var i="none";switch(t){case 0:n={opacity:[1,0]};break;case 1:n={opacity:[0,1]};i="block";break;case"bounceUpIn":n={begin:function(t){e.display("block")},translateY:[{value:-60,duration:200},{value:10,duration:200},{value:-5,duration:200},{value:0,duration:200}],opacity:[0,1]};i="block";break;case"shrinkIn":n={begin:function(t){e.display("block")},scale:[{value:1.1,duration:300},{value:1,duration:200}],opacity:1};i="block";break;case"slideRightIn":n={begin:function(t){e.display("block")},translateX:[100,0],opacity:[0,1]};i="block";break;case"slideRightOut":n={translateX:[0,100],opacity:[1,0]};break;default:n=t;i=t.display;break}anime(Object.assign({targets:e,duration:200,easing:"linear"},n)).finished.then(function(){e.display(i);a&&a()})};const d={get:function(e){return localStorage.getItem(e)},set:function(e,t){localStorage.setItem(e,t);return t},del:function(e){localStorage.removeItem(e)}};const u=function(e,t){t=t||document;if(e.indexOf("#")===0){return t.getElementById(e.replace("#",""))}return t.querySelector(e)};u.all=function(e,t){t=t||document;return t.querySelectorAll(e)};u.each=function(e,t,a){return u.all(e,a).forEach(t)};Object.assign(HTMLElement.prototype,{createChild:function(e,t,a){var n=document.createElement(e);Object.assign(n,t);switch(a){case"after":this.insertAfter(n);break;case"replace":this.innerHTML="";default:this.appendChild(n)}return n},wrap:function(e){var t=document.createElement("div");Object.assign(t,e);this.parentNode.insertBefore(t,this);this.parentNode.removeChild(this);t.appendChild(this)},height:function(e){if(e){this.style.height=typeof e=="number"?e+"rem":e}return this.getBoundingClientRect().height},width:function(e){if(e){this.style.width=typeof e=="number"?e+"rem":e}return this.getBoundingClientRect().width},top:function(){return this.getBoundingClientRect().top},left:function(){return this.getBoundingClientRect().left},attr:function(e,t){if(t===null){return this.removeAttribute(e)}if(t){this.setAttribute(e,t);return this}else{return this.getAttribute(e)}},insertAfter:function(e){var t=this.parentNode;if(t.lastChild==this){t.appendChild(e)}else{t.insertBefore(e,this.nextSibling)}},display:function(e){if(e==null){return this.style.display}else{this.style.display=e;return this}},child:function(e){return u(e,this)},find:function(e){return u.all(e,this)},_class:function(e,t,a){var n=t.indexOf(" ")?t.split(" "):[t];var i=this;n.forEach(function(t){if(e=="toggle"){i.classList.toggle(t,a)}else{i.classList[e](t)}})},addClass:function(e){this._class("add",e);return this},removeClass:function(e){this._class("remove",e);return this},toggleClass:function(e,t){this._class("toggle",e,t);return this},hasClass:function(e){return this.classList.contains(e)}});var f=null;const h=/mobile/i.test(window.navigator.userAgent);const p=function(e,t){var a={type:"audio",mode:"random",btns:["play-pause","music"],controls:["mode","backward","play-pause","forward","volume"],events:{"play-pause":function(t){if(i.paused){e.player.play()}else{e.player.pause()}},music:function(e){if(s.el.hasClass("show")){s.hide()}else{s.el.addClass("show");o.scroll().title()}}}},n={random:function(e){return Math.floor(Math.random()*e)},parse:function(e){var t=[];[["music.163.com.*song.*id=(\\d+)","netease","song"],["music.163.com.*album.*id=(\\d+)","netease","album"],["music.163.com.*artist.*id=(\\d+)","netease","artist"],["music.163.com.*playlist.*id=(\\d+)","netease","playlist"],["music.163.com.*discover/toplist.*id=(\\d+)","netease","playlist"],["y.qq.com.*song/(\\w+).html","tencent","song"],["y.qq.com.*album/(\\w+).html","tencent","album"],["y.qq.com.*singer/(\\w+).html","tencent","artist"],["y.qq.com.*playsquare/(\\w+).html","tencent","playlist"],["y.qq.com.*playlist/(\\w+).html","tencent","playlist"],["xiami.com.*song/(\\w+)","xiami","song"],["xiami.com.*album/(\\w+)","xiami","album"],["xiami.com.*artist/(\\w+)","xiami","artist"],["xiami.com.*collect/(\\w+)","xiami","playlist"]].forEach(function(a){var n=new RegExp(a[0]);var i=n.exec(e);if(i!==null){t=[a[1],a[2],i[1]]}});return t},fetch:function(e){var t=[];return new Promise(function(a,i){e.forEach(function(e){var i=n.parse(e);if(i[0]){var r=JSON.stringify(i);var s=d.get(r);if(s){var o=JSON.parse(s);var c="https://music.163.com/song/media/outer/url?id=";if(i[0]=="netease"&&o&&o.length>0&&!o[0].url.startsWith(c)){jQuery.ajax({url:o[0].url,type:"get",async:false,timeout:5e3,complete:function(e,n){if(e.status!=200){o.forEach(function(e){var t=e.url.substring(e.url.indexOf("id=")+3,e.url.indexOf("&auth="));e.url=c+t;e.pic="https://p3.music.126.net/Vji3PQJAZ2C7gS_6X51NFQ==/109951164723650033.jpg?param=200y200"})}t.push.apply(t,o);a(t)}})}else{t.push.apply(t,o);a(t)}}else{fetch("https://api.i-meto.com/meting/api?server="+i[0]+"&type="+i[1]+"&id="+i[2]+"&r="+Math.random()).then(function(e){return e.json()}).then(function(e){d.set(r,JSON.stringify(e));t.push.apply(t,e);a(t)}).catch(function(e){})}}else{t.push(e);a(t)}})})},secondToTime:function(e){var t=function(e){return isNaN(e)?"00":e<10?"0"+e:""+e};var a=Math.floor(e/3600);var n=Math.floor((e-a*3600)/60);var i=Math.floor(e-a*3600-n*60);return(a>0?[a,n,i]:[n,i]).map(t).join(":")},nameMap:{dragStart:h?"touchstart":"mousedown",dragMove:h?"touchmove":"mousemove",dragEnd:h?"touchend":"mouseup"}},i=null;e.player={_id:n.random(999999),group:true,load:function(e){var t="";var a=this;if(e&&e.length>0){if(this.options.rawList!==e){this.options.rawList=e;o.clear()}}else{t="none";this.pause()}for(var n in b.el){b.el[n].display(t)}return this},fetch:function(){var e=this;return new Promise(function(t,a){if(o.data.length>0){t()}else{if(e.options.rawList){var i=[];e.options.rawList.forEach(function(t,a){i.push(new Promise(function(i,r){var s=a;var c;if(!t.list){s=0;e.group=false;c=[t]}else{e.group=true;c=t.list}n.fetch(c).then(function(e){o.add(s,e);i()})}))});Promise.all(i).then(function(){t(true)})}}}).then(function(t){if(t){o.create();v.create();e.mode()}})},mode:function(){var e=o.data.length;if(!e||o.errnum==e)return;var t=v.step=="next"?1:-1;var a=function(){var a=o.index+t;if(a>e||a<0){a=v.step=="next"?0:e-1}o.index=a};var i=function(){var t=n.random(e);if(o.index!==t){o.index=t}else{a()}};switch(this.options.mode){case"random":i();break;case"order":a();break;case"loop":if(v.step)a();if(o.index==-1)i();break}this.init()},"switch":function(e){if(typeof e=="number"&&e!=o.index&&o.current()&&!o.current().error){o.index=e;this.init()}},init:function(){var e=o.current();if(!e||e["error"]){this.mode();return}var t=false;if(!i.paused){t=true;this.stop()}i.attr("src",e.url);i.attr("title",e.name+" - "+e.artist);this.volume(d.get("_PlayerVolume")||"0.7");this.muted(d.get("_PlayerMuted"));m.create();if(this.options.type=="audio")p.create();if(t==true){this.play()}},play:function(){f&&f.player.pause();if(o.current().error){this.mode();return}var e=this;i.play().then(function(){o.scroll()}).catch(function(e){})},pause:function(){i.pause();document.title=y},stop:function(){i.pause();i.currentTime=0;document.title=y},seek:function(e){e=Math.max(e,0);e=Math.min(e,i.duration);if(isNaN(e)){e=0}i.currentTime=e;m.update(e/i.duration)},muted:function(e){if(e=="muted"){i.muted=e;d.set("_PlayerMuted",e);v.update(0)}else{d.del("_PlayerMuted");i.muted=false;v.update(i.volume)}},volume:function(e){if(!isNaN(e)){v.update(e);d.set("_PlayerVolume",e);i.volume=e}},mini:function(){s.hide()}};var s={el:null,create:function(){if(this.el)return;this.el=e.createChild("div",{className:"player-info",innerHTML:(e.player.options.type=="audio"?'
':"")+'
'},"after");p.el=this.el.child(".preview");o.el=this.el.child(".playlist");v.el=this.el.child(".controller")},hide:function(){var e=this.el;e.addClass("hide");window.setTimeout(function(){e.removeClass("show hide")},300)}};var o={el:null,data:[],index:-1,errnum:0,add:function(e,t){var a=this;t.forEach(function(t,n){t.group=e;t.name=t.name||t.title||"Meida name";t.artist=t.artist||t.author||"Anonymous";t.cover=t.cover||t.pic;t.type=t.type||"normal";a.data.push(t)})},clear:function(){this.data=[];this.el.innerHTML="";if(this.index!==-1){this.index=-1;e.player.fetch()}},create:function(){var t=this.el;this.data.map(function(a,n){if(a.el)return;var r="list-"+e.player._id+"-"+a.group;var s=u("#"+r);if(!s){s=t.createChild("div",{id:r,className:e.player.group?"tab":"",innerHTML:"
    "});if(e.player.group){s.attr("data-title",e.player.options.rawList[a.group]["title"]).attr("data-id",e.player._id)}}a.el=s.child("ol").createChild("li",{title:a.name+" - "+a.artist,innerHTML:''+a.name+""+a.artist+"",onclick:function(t){var a=t.currentTarget;if(o.index===n&&m.el){if(i.paused){e.player.play()}else{e.player.seek(i.duration*m.percent(t,a))}return}e.player.switch(n);e.player.play()}});return a});he()},current:function(){return this.data[this.index]},scroll:function(){var e=this.current();var t=this.el.child("li.active");t&&t.removeClass("active");var a=this.el.child(".tab.active");a&&a.removeClass("active");t=this.el.find(".nav li")[e.group];t&&t.addClass("active");a=this.el.find(".tab")[e.group];a&&a.addClass("active");c(e.el,e.el.offsetTop);return this},title:function(){if(i.paused)return;var e=this.current();document.title="Now Playing..."+e["name"]+" - "+e["artist"]+" | "+y},error:function(){var e=this.current();e.el.removeClass("current").addClass("error");e.error=true;this.errnum++}};var l={el:null,data:null,index:0,create:function(e){var t=o.index;var a=this;var n=o.current().lrc;var i=function(n){if(t!==o.index)return;a.data=a.parse(n);var i="";a.data.forEach(function(e,t){i+=""+e[1]+"

    "});a.el=e.createChild("div",{className:"inner",innerHTML:i},"replace");a.index=0};if(n&&n.startsWith("http"))this.fetch(n,i);else i(n)},update:function(e){if(!this.data)return;if(this.index>this.data.length-1||e=this.data[this.index+1][0])){for(var t=0;t=this.data[t][0]&&(!this.data[t+1]||e/g,"").replace(/^\s+|\s+$/g,"");if(r){const o=r.length;for(var c=0;c
    '+'

    '+t.name+"

    "+t.artist+""+'
    ';this.el.child(".cover").addEventListener("click",e.player.options.events["play-pause"]);l.create(this.el.child(".lrc"))}};var m={el:null,bar:null,create:function(){var e=o.current().el;if(e){if(this.el){this.el.parentNode.removeClass("current").removeEventListener(n.nameMap.dragStart,this.drag);this.el.remove()}this.el=e.createChild("div",{className:"progress"});this.el.attr("data-dtime",n.secondToTime(0));this.bar=this.el.createChild("div",{className:"bar"});e.addClass("current");e.addEventListener(n.nameMap.dragStart,this.drag);o.scroll()}},update:function(e){this.bar.width(Math.floor(e*100)+"%");this.el.attr("data-ptime",n.secondToTime(e*i.duration))},seeking:function(e){if(e)this.el.addClass("seeking");else this.el.removeClass("seeking")},percent:function(e,t){var a=((e.clientX||e.changedTouches[0].clientX)-t.left())/t.width();a=Math.max(a,0);return Math.min(a,1)},drag:function(t){t.preventDefault();var a=o.current().el;var r=function(e){e.preventDefault();var t=m.percent(e,a);m.update(t);l.update(t*i.duration)};var s=function(t){t.preventDefault();a.removeEventListener(n.nameMap.dragEnd,s);a.removeEventListener(n.nameMap.dragMove,r);var o=m.percent(t,a);m.update(o);e.player.seek(o*i.duration);i.disableTimeupdate=false;m.seeking(false)};i.disableTimeupdate=true;m.seeking(true);a.addEventListener(n.nameMap.dragMove,r);a.addEventListener(n.nameMap.dragEnd,s)}};var v={el:null,btns:{},step:"next",create:function(){if(!e.player.options.controls)return;var t=this;e.player.options.controls.forEach(function(a){if(t.btns[a])return;var r={onclick:function(n){t.events[a]?t.events[a](n):e.player.options.events[a](n)}};switch(a){case"volume":r.className=" "+(i.muted?"off":"on");r.innerHTML='
    ';r["on"+n.nameMap.dragStart]=t.events["volume"];r.onclick=null;break;case"mode":r.className=" "+e.player.options.mode;break;default:r.className="";break}r.className=a+r.className+" btn";t.btns[a]=t.el.createChild("div",r)});t.btns["volume"].bar=t.btns["volume"].child(".bar")},events:{mode:function(t){switch(e.player.options.mode){case"loop":e.player.options.mode="random";break;case"random":e.player.options.mode="order";break;default:e.player.options.mode="loop"}v.btns["mode"].className="mode "+e.player.options.mode+" btn";d.set("_PlayerMode",e.player.options.mode)},volume:function(t){t.preventDefault();var a=t.currentTarget;var r=false;var s=function(t){t.preventDefault();e.player.volume(v.percent(t,a));r=true};var o=function(t){t.preventDefault();a.removeEventListener(n.nameMap.dragEnd,o);a.removeEventListener(n.nameMap.dragMove,s);if(r){e.player.muted();e.player.volume(v.percent(t,a))}else{if(i.muted){e.player.muted();e.player.volume(i.volume)}else{e.player.muted("muted");v.update(0)}}};a.addEventListener(n.nameMap.dragMove,s);a.addEventListener(n.nameMap.dragEnd,o)},backward:function(t){v.step="prev";e.player.mode()},forward:function(t){v.step="next";e.player.mode()}},update:function(e){v.btns["volume"].className="volume "+(!i.muted&&e>0?"on":"off")+" btn";v.btns["volume"].bar.width(Math.floor(e*100)+"%")},percent:function(e,t){var a=((e.clientX||e.changedTouches[0].clientX)-t.left())/t.width();a=Math.max(a,0);return Math.min(a,1)}};var g={onerror:function(){o.error();e.player.mode()},ondurationchange:function(){if(i.duration!==1){m.el.attr("data-dtime",n.secondToTime(i.duration))}},onloadedmetadata:function(){e.player.seek(0);m.el.attr("data-dtime",n.secondToTime(i.duration))},onplay:function(){e.parentNode.addClass("playing");J(this.attr("title"));f=e},onpause:function(){e.parentNode.removeClass("playing");f=null},ontimeupdate:function(){if(!this.disableTimeupdate){m.update(this.currentTime/this.duration);l.update(this.currentTime)}},onended:function(t){e.player.mode();e.player.play()}};var b={el:{},create:function(){if(!e.player.options.btns)return;var t=this;e.player.options.btns.forEach(function(a){if(t.el[a])return;t.el[a]=e.createChild("div",{className:a+" btn",onclick:function(t){e.player.fetch().then(function(){e.player.options.events[a](t)})}})})}};var w=function(t){if(e.player.created)return;e.player.options=Object.assign(a,t);e.player.options.mode=d.get("_PlayerMode")||e.player.options.mode;b.create();i=e.createChild(e.player.options.type,g);s.create();e.parentNode.addClass(e.player.options.type);e.player.created=true};w(t);r("fancybox");return e};var m=e.statics.indexOf("//")>0?e.statics:e.root;var v={x:"undefined",y:"undefined"};var g=0;var y,b;const w=document.getElementsByTagName("body")[0];const C=document.documentElement;const x=u("#container");const k=u("#loading");const L=u("#nav");const E=u("#header");const N=L.child(".toggle");const T=u("#quick");const M=u("#sidebar");const O=u("#brand");var j=u("#tool"),I,H,q,A;var S=u("#search");var R,P,_;var D=window.innerHeight;var z=window.innerWidth;var B=0,W=window.location.href;var Y;const F=lozad("img, [data-background-image]",{loaded:function(e){e.addClass("lozaded")}});const U={timer:null,lock:false,show:function(){clearTimeout(this.timer);document.body.removeClass("loaded");k.attr("style","display:block");U.lock=false},hide:function(t){if(!e.loader.start)t=-1;this.timer=setTimeout(this.vanish,t||3e3)},vanish:function(){if(U.lock)return;if(e.loader.start)l(k,0);document.body.addClass("loaded");U.lock=true}};const V=function(e){var t=u(".theme .ic");if(e=="dark"){C.attr("data-theme",e);t.removeClass("i-sun");t.addClass("i-moon")}else{C.attr("data-theme",null);t.removeClass("i-moon");t.addClass("i-sun")}};const X=function(e){if(C.attr("data-theme")=="dark")e="#222";u('meta[name="theme-color"]').attr("content",e)};const Q=function(){window.matchMedia("(prefers-color-scheme: dark)").addListener(function(e){if(e.matches){V("dark")}else{V()}});var t=d.get("theme");if(t){V(t)}else{if(e.darkmode){V("dark")}}u(".theme").addEventListener("click",function(e){var t=e.currentTarget.child(".ic");var a=w.createChild("div",{id:"neko",innerHTML:'
    '});var n=function(){l(a,{delay:2500,opacity:0},function(){w.removeChild(a)})};if(t.hasClass("i-sun")){var i=function(){a.addClass("dark");V("dark");d.set("theme","dark");n()}}else{a.addClass("dark");var i=function(){a.removeClass("dark");V();d.set("theme","light");n()}}l(a,1,function(){setTimeout(i,210)})})};const G=function(){document.addEventListener("visibilitychange",function(){switch(document.visibilityState){case"hidden":u('[rel="icon"]').attr("href",m+e.favicon.hidden);document.title=LOCAL.favicon.hide;if(e.loader.switch)U.show();clearTimeout(b);break;case"visible":u('[rel="icon"]').attr("href",m+e.favicon.normal);document.title=LOCAL.favicon.show;if(e.loader.switch)U.hide(1e3);b=setTimeout(function(){document.title=y},2e3);break}})};const J=function(e){if(!e)return;var t=w.createChild("div",{innerHTML:e,className:"tip"});setTimeout(function(){t.addClass("hide");setTimeout(function(){w.removeChild(t)},300)},3e3)};const $=function(e){R=L.height();P=E.height();_=P+u("#waves").height();if(z!=window.innerWidth)ae(null,1);D=window.innerHeight;z=window.innerWidth;M.child(".panels").height(D+"px")};const K=function(e){var t=window.innerHeight;var n=a();var i=n>t?n-t:document.body.scrollHeight-t;var r=window.pageYOffset>P;var s=window.pageYOffset>0;if(r){X("#FFF")}else{X("#222")}L.toggleClass("show",r);j.toggleClass("affix",s);O.toggleClass("affix",s);M.toggleClass("affix",window.pageYOffset>_&&document.body.offsetWidth>991);if(typeof v.y=="undefined"){v.y=window.pageYOffset}g=v.y-window.pageYOffset;if(g<0){L.removeClass("up");L.toggleClass("down",r)}else if(g>0){L.removeClass("down");L.toggleClass("up",r)}else{}v.y=window.pageYOffset;var o=Math.round(Math.min(100*window.pageYOffset/i,100))+"%";H.child("span").innerText=o;u(".percent").width(o)};const Z=function(){if(e.auto_scroll)d.set(W,v.y)};const ee=function(t){var a=window.location.hash;var n=null;if(B){d.del(W);return}if(a)n=u(decodeURI(a));else{n=e.auto_scroll?parseInt(d.get(W)):0}if(n){c(n);B=1}if(t&&a&&!B){c(n);B=1}};const te=function(e,t){var a=w.createChild("textarea",{style:{top:window.scrollY+"px",position:"absolute",opacity:"0"},readOnly:true,value:e});const n=document.getSelection();const i=n.rangeCount>0?n.getRangeAt(0):false;a.select();a.setSelectionRange(0,e.length);a.readOnly=false;var r=document.execCommand("copy");t&&t(r);a.blur();if(i){n.removeAllRanges();n.addRange(i)}w.removeChild(a)};const ae=function(e,t){if(M.hasClass("on")){M.removeClass("on");N.removeClass("close");if(t){M.style=""}else{l(M,"slideRightOut")}}else{if(t){M.style=""}else{l(M,"slideRightIn",function(){M.addClass("on");N.addClass("close")})}}};const ne=function(){var e=M.child(".inner");var t=M.find(".panel");if(M.child(".tab")){e.removeChild(M.child(".tab"))}var a=document.createElement("ul"),n="active";a.className="tab";["contents","related","overview"].forEach(function(e){var t=M.child(".panel."+e);if(t.innerHTML.replace(/(^\s*)|(\s*$)/g,"").length<1){if(e=="contents"){A.display("none")}return}if(e=="contents"){A.display("")}var i=document.createElement("li");var r=document.createElement("span");var s=document.createTextNode(t.attr("data-title"));r.appendChild(s);i.appendChild(r);i.addClass(e+" item");if(n){t.addClass(n);i.addClass(n)}else{t.removeClass("active")}i.addEventListener("click",function(e){var t=event.currentTarget;if(t.hasClass("active"))return;M.find(".tab .item").forEach(function(e){e.removeClass("active")});M.find(".panel").forEach(function(e){e.removeClass("active")});M.child(".panel."+t.className.replace(" item","")).addClass("active");t.addClass("active")});a.appendChild(i);n=""});if(a.childNodes.length>1){e.insertBefore(a,e.childNodes[0]);M.child(".panels").style.paddingTop=""}else{M.child(".panels").style.paddingTop=".625rem"}};const ie=function(){var t=u.all(".contents li");if(t.length<1){return}var a=Array.prototype.slice.call(t)||[];var n=null;a=a.map(function(t,a){var i=t.child("a.toc-link");var s=u(decodeURI(i.attr("href")));if(!s)return;var o=s.child("a.anchor");var l=function(e){e.preventDefault();var t=u(decodeURI(e.currentTarget.attr("href")));n=a;c(t,null,function(){r(a);n=null})};i.addEventListener("click",l);o&&o.addEventListener("click",function(t){l(t);te(e.hostname+"/"+LOCAL.path+t.currentTarget.attr("href"))});return s});var i=M.child(".contents.panel");var r=function(e,n){var r=t[e];if(!r)return;if(r.hasClass("current")){return}u.each(".toc .active",function(e){e&&e.removeClass("active current")});a.forEach(function(e){e&&e.removeClass("active")});r.addClass("active current");a[e]&&a[e].addClass("active");var s=r.parentNode;while(!s.matches(".contents")){if(s.matches("li")){s.addClass("active");var o=u(s.child("a.toc-link").attr("href"));if(o){o.addClass("active")}}s=s.parentNode}if(getComputedStyle(M).display!="none"&&i.hasClass("active")){c(i,r.offsetTop-i.offsetHeight/4)}};var s=function(e){var t=0;var n=e[t];if(n.boundingClientRect.top>0){t=a.indexOf(n.target);return t===0?0:t-1}for(;t0){t.target.addClass("show");e.unobserve(t.target)}}})},{root:null,threshold:[.3]});u.each(".index.wrap article.item, .index.wrap section.item",function(t){e.observe(t)});u(".index.wrap .item:first-child").addClass("show")}u.each(".cards .item",function(e,t){["mouseenter","touchstart"].forEach(function(t){e.addEventListener(t,function(t){if(u(".cards .item.active")){u(".cards .item.active").removeClass("active")}e.addClass("active")})});["mouseleave"].forEach(function(t){e.addEventListener(t,function(t){e.removeClass("active")})})})};const de=function(){u.each("span.exturl",function(e){var t=document.createElement("a");t.href=decodeURIComponent(atob(e.dataset.url).split("").map(function(e){return"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2)}).join(""));t.rel="noopener external nofollow noreferrer";t.target="_blank";t.className=e.className;t.title=e.title||e.innerText;t.innerHTML=e.innerHTML;if(e.dataset.backgroundImage){t.dataset.backgroundImage=e.dataset.backgroundImage}e.parentNode.replaceChild(t,e)})};const ue=function(e){if(u(e+" .md img")){s("fancybox");r("fancybox",function(){var t=jQuery.noConflict();u.each(e+" p.gallery",function(e){var t=document.createElement("div");t.className="gallery";t.attr("data-height",e.attr("data-height")||220);t.innerHTML=e.innerHTML.replace(/
    /g,"");e.parentNode.insertBefore(t,e);e.remove()});u.each(e+" .md img:not(.emoji):not(.vemoji)",function(e){var a=t(e);var n,i="image-info";if(!a.is("a img")){var r=a.attr("data-src")||a.attr("src");a.data("safe-src",r);var s=a.wrap('').parent("a");if(!a.is(".gallery img")){s.attr("data-fancybox","default").attr("rel","default")}else{i="jg-caption"}}if(n=e.attr("title")){s.attr("data-caption",n);var o=document.createElement("span");var c=document.createTextNode(n);o.appendChild(c);o.addClass(i);e.insertAfter(o)}});u.each(e+" div.gallery",function(e,a){t(e).justifiedGallery({rowHeight:t(e).data("height")||120,rel:"gallery-"+a}).on("jg.complete",function(){t(this).find("a").each(function(e,t){t.attr("data-fancybox","gallery-"+a)})})});t.fancybox.defaults.hash=false;t(e+" .fancybox").fancybox({loop:true,helpers:{overlay:{locked:false}}})},window.jQuery)}};const fe=function(){pe();if(!u(".md"))return;ue(".post.block");u(".post.block").oncopy=function(e){J(LOCAL.copyright);if(LOCAL.nocopy){e.preventDefault();return}var t=u("#copyright");if(window.getSelection().toString().length>30&&t){e.preventDefault();var a="# "+t.child(".author").innerText;var n="# "+t.child(".link").innerText;var i="# "+t.child(".license").innerText;var r=a+"
    "+n+"
    "+i+"

    "+window.getSelection().toString().replace(/\r\n/g,"
    ");var s=a+"\n"+n+"\n"+i+"\n\n"+window.getSelection().toString().replace(/\r\n/g,"\n");if(e.clipboardData){e.clipboardData.setData("text/html",r);e.clipboardData.setData("text/plain",s)}else if(window.clipboardData){return window.clipboardData.setData("text",s)}}};u.each("li ruby",function(e){var t=e.parentNode;if(e.parentNode.tagName!="LI"){t=e.parentNode.parentNode}t.addClass("ruby")});u.each("ol[start]",function(e){e.style.counterReset="counter "+parseInt(e.attr("start")-1)});u.each(".md table",function(e){e.wrap({className:"table-container"})});u.each(".highlight > .table-container",function(e){e.className="code-container"});u.each("figure.highlight",function(e){var t=e.child(".code-container");var a=e.child("figcaption");e.insertAdjacentHTML("beforeend",'
    ');var n=e.child(".copy-btn");if(LOCAL.nocopy){n.remove()}else{n.addEventListener("click",function(e){var a=e.currentTarget;var n="",i="";t.find("pre").forEach(function(e){i+=n+e.innerText;n="\n"});te(i,function(e){a.child(".ic").className=e?"ic i-check":"ic i-times";a.blur();J(LOCAL.copyright)})});n.addEventListener("mouseleave",function(e){setTimeout(function(){e.target.child(".ic").className="ic i-clipboard"; +var e={version:"0.0.0",hostname:"https://blog.jingxiyuan.cn",root:"/",statics:"/",favicon:{normal:"images/favicon.ico",hidden:"images/failure.ico"},darkmode:false,auto_scroll:true,js:{valine:"gh/amehime/MiniValine@4.2.2-beta10/dist/MiniValine.min.js",chart:"npm/frappe-charts@1.5.0/dist/frappe-charts.min.iife.min.js",copy_tex:"npm/katex@0.12.0/dist/contrib/copy-tex.min.js",fancybox:"combine/npm/jquery@3.5.1/dist/jquery.min.js,npm/@fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.js,npm/justifiedGallery@3.8.1/dist/js/jquery.justifiedGallery.min.js"},css:{valine:"css/comment.css",katex:"npm/katex@0.12.0/dist/katex.min.css",mermaid:"css/mermaid.css",fancybox:"combine/npm/@fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.css,npm/justifiedGallery@3.8.1/dist/css/justifiedGallery.min.css"},loader:{start:true,"switch":true},search:{appID:"2NU6BAFQUF",apiKey:"47a93cc6d8d1e77bd82d36e8365788dc",indexName:"blog",hits:{per_page:10}},valine:{appId:"pFJTr97i45HCNkAPfurKR0rS-gzGzoHsz",appKey:"9LsEPqi4hHCtghqzc7qDLyNV",placeholder:"ヽ(○´∀`)ノ♪欢迎畅所欲言",avatar:"mp",pageSize:10,lang:"zh-CN",visitor:true,NoRecordIP:false,serverURLs:null,powerMode:true,tagMeta:{visitor:"新朋友",master:"博主",friend:"小伙伴",investor:"金主粑粑"},tagColor:{master:"var(--color-orange)",friend:"var(--color-aqua)",investor:"var(--color-pink)"},tagMember:{master:["hash of lht518@vip.qq.com"],friend:null,investor:null}},quicklink:{timeout:3e3,priority:true},audio:[{title:"博主喜欢",list:[{name:"仙剑问情",url:"https://music.163.com/song/media/outer/url?id=1416747959",artist:"萧人凤",cover:"https://p2.music.126.net/gZlHY7Cc2MaD7UVhgv7rYw==/109951164626902666.jpg?param=130y130"},{name:"大天蓬",url:"https://music.163.com/song/media/outer/url?id=1483488153",artist:"璐爷",cover:"https://p2.music.126.net/rn6L_xf1tlVAyHOz95mmMQ==/109951165354012465.jpg?param=130y130"},{name:"左手指月",url:"https://music.163.com/song/media/outer/url?id=536096151",artist:"萨顶顶",cover:"https://p1.music.126.net/gEia-o05FSas8uJos54Sug==/109951163456726954.jpg?param=130y130"},{name:"如愿",url:"http://music.163.com/song/media/outer/url?id=1922701695.mp3",artist:"葱香科学家,王菲",cover:"http://p2.music.126.net/3quyghcGASgwNjjXZfqqhg==/109951167081686500.jpg?param=130v130"}]},{title:"网易云音乐",list:["https://music.163.com/#/playlist?id=5172410111","https://music.163.com/#/discover/toplist?id=19723756"]}],fireworks:["rgba(255,182,185,.9)","rgba(250,227,217,.9)","rgba(187,222,214,.9)","rgba(138,198,209,.9)"]};const t=function(e,t){return Math.floor(Math.random()*(t-e+1))+e};const a=function(){return u("main > .inner").offsetHeight};const n=function(e,t,a){if(a){t()}else{var n=document.createElement("script");n.onload=n.onreadystatechange=function(e,a){if(a||!n.readyState||/loaded|complete/.test(n.readyState)){n.onload=n.onreadystatechange=null;n=undefined;if(!a&&t)setTimeout(t,0)}};n.src=e;document.head.appendChild(n)}};const i=function(t,a){var n=e[t][a];if(n.indexOf("npm")>-1||n.indexOf("gh")>-1||n.indexOf("combine")>-1)return"//cdn.jsdelivr.net/"+n;if(n.indexOf("http")>-1)return n;return m+n};const r=function(e,t,a){if(LOCAL[e]){n(i("js",e),t||function(){window[e]=true},a||window[e])}};const s=function(e,t){if(window["css"+e])return;if(LOCAL[e]){document.head.createChild("link",{rel:"stylesheet",href:i("css",e)});window["css"+e]=true}};const o=function(e){var t=e.text||e.textContent||e.innerHTML||"";var a=e.parentNode;a.removeChild(e);var n=document.createElement("script");if(e.id){n.id=e.id}if(e.className){n.className=e.className}if(e.type){n.type=e.type}if(e.src){n.src=e.src;n.async=false}if(e.dataset.pjax!==undefined){n.dataset.pjax=""}if(t!==""){n.appendChild(document.createTextNode(t))}a.appendChild(n)};const c=function(e,t,a){var n={targets:typeof t=="number"?e.parentNode:document.scrollingElement,duration:500,easing:"easeInOutQuad",scrollTop:t||(typeof e=="number"?e:e?e.top()+document.documentElement.scrollTop-R:0),complete:function(){a&&a()}};anime(n)};const l=function(e,t,a){var n={};var i="none";switch(t){case 0:n={opacity:[1,0]};break;case 1:n={opacity:[0,1]};i="block";break;case"bounceUpIn":n={begin:function(t){e.display("block")},translateY:[{value:-60,duration:200},{value:10,duration:200},{value:-5,duration:200},{value:0,duration:200}],opacity:[0,1]};i="block";break;case"shrinkIn":n={begin:function(t){e.display("block")},scale:[{value:1.1,duration:300},{value:1,duration:200}],opacity:1};i="block";break;case"slideRightIn":n={begin:function(t){e.display("block")},translateX:[100,0],opacity:[0,1]};i="block";break;case"slideRightOut":n={translateX:[0,100],opacity:[1,0]};break;default:n=t;i=t.display;break}anime(Object.assign({targets:e,duration:200,easing:"linear"},n)).finished.then(function(){e.display(i);a&&a()})};const d={get:function(e){return localStorage.getItem(e)},set:function(e,t){localStorage.setItem(e,t);return t},del:function(e){localStorage.removeItem(e)}};const u=function(e,t){t=t||document;if(e.indexOf("#")===0){return t.getElementById(e.replace("#",""))}return t.querySelector(e)};u.all=function(e,t){t=t||document;return t.querySelectorAll(e)};u.each=function(e,t,a){return u.all(e,a).forEach(t)};Object.assign(HTMLElement.prototype,{createChild:function(e,t,a){var n=document.createElement(e);Object.assign(n,t);switch(a){case"after":this.insertAfter(n);break;case"replace":this.innerHTML="";default:this.appendChild(n)}return n},wrap:function(e){var t=document.createElement("div");Object.assign(t,e);this.parentNode.insertBefore(t,this);this.parentNode.removeChild(this);t.appendChild(this)},height:function(e){if(e){this.style.height=typeof e=="number"?e+"rem":e}return this.getBoundingClientRect().height},width:function(e){if(e){this.style.width=typeof e=="number"?e+"rem":e}return this.getBoundingClientRect().width},top:function(){return this.getBoundingClientRect().top},left:function(){return this.getBoundingClientRect().left},attr:function(e,t){if(t===null){return this.removeAttribute(e)}if(t){this.setAttribute(e,t);return this}else{return this.getAttribute(e)}},insertAfter:function(e){var t=this.parentNode;if(t.lastChild==this){t.appendChild(e)}else{t.insertBefore(e,this.nextSibling)}},display:function(e){if(e==null){return this.style.display}else{this.style.display=e;return this}},child:function(e){return u(e,this)},find:function(e){return u.all(e,this)},_class:function(e,t,a){var n=t.indexOf(" ")?t.split(" "):[t];var i=this;n.forEach(function(t){if(e=="toggle"){i.classList.toggle(t,a)}else{i.classList[e](t)}})},addClass:function(e){this._class("add",e);return this},removeClass:function(e){this._class("remove",e);return this},toggleClass:function(e,t){this._class("toggle",e,t);return this},hasClass:function(e){return this.classList.contains(e)}});var f=null;const h=/mobile/i.test(window.navigator.userAgent);const p=function(e,t){var a={type:"audio",mode:"random",btns:["play-pause","music"],controls:["mode","backward","play-pause","forward","volume"],events:{"play-pause":function(t){if(i.paused){e.player.play()}else{e.player.pause()}},music:function(e){if(s.el.hasClass("show")){s.hide()}else{s.el.addClass("show");o.scroll().title()}}}},n={random:function(e){return Math.floor(Math.random()*e)},parse:function(e){var t=[];[["music.163.com.*song.*id=(\\d+)","netease","song"],["music.163.com.*album.*id=(\\d+)","netease","album"],["music.163.com.*artist.*id=(\\d+)","netease","artist"],["music.163.com.*playlist.*id=(\\d+)","netease","playlist"],["music.163.com.*discover/toplist.*id=(\\d+)","netease","playlist"],["y.qq.com.*song/(\\w+).html","tencent","song"],["y.qq.com.*album/(\\w+).html","tencent","album"],["y.qq.com.*singer/(\\w+).html","tencent","artist"],["y.qq.com.*playsquare/(\\w+).html","tencent","playlist"],["y.qq.com.*playlist/(\\w+).html","tencent","playlist"],["xiami.com.*song/(\\w+)","xiami","song"],["xiami.com.*album/(\\w+)","xiami","album"],["xiami.com.*artist/(\\w+)","xiami","artist"],["xiami.com.*collect/(\\w+)","xiami","playlist"]].forEach(function(a){var n=new RegExp(a[0]);var i=n.exec(e);if(i!==null){t=[a[1],a[2],i[1]]}});return t},fetch:function(e){var t=[];return new Promise(function(a,i){e.forEach(function(e){var i=n.parse(e);if(i[0]){var r=JSON.stringify(i);var s=d.get(r);if(s){var o=JSON.parse(s);var c="https://music.163.com/song/media/outer/url?id=";if(i[0]=="netease"&&o&&o.length>0&&!o[0].url.startsWith(c)){jQuery.ajax({url:o[0].url,type:"get",async:false,timeout:5e3,complete:function(e,n){if(e.status!=200){o.forEach(function(e){var t=e.url.substring(e.url.indexOf("id=")+3,e.url.indexOf("&auth="));e.url=c+t;e.pic="https://p3.music.126.net/Vji3PQJAZ2C7gS_6X51NFQ==/109951164723650033.jpg?param=200y200"})}t.push.apply(t,o);a(t)}})}else{t.push.apply(t,o);a(t)}}else{fetch("https://api.i-meto.com/meting/api?server="+i[0]+"&type="+i[1]+"&id="+i[2]+"&r="+Math.random()).then(function(e){return e.json()}).then(function(e){d.set(r,JSON.stringify(e));t.push.apply(t,e);a(t)}).catch(function(e){})}}else{t.push(e);a(t)}})})},secondToTime:function(e){var t=function(e){return isNaN(e)?"00":e<10?"0"+e:""+e};var a=Math.floor(e/3600);var n=Math.floor((e-a*3600)/60);var i=Math.floor(e-a*3600-n*60);return(a>0?[a,n,i]:[n,i]).map(t).join(":")},nameMap:{dragStart:h?"touchstart":"mousedown",dragMove:h?"touchmove":"mousemove",dragEnd:h?"touchend":"mouseup"}},i=null;e.player={_id:n.random(999999),group:true,load:function(e){var t="";var a=this;if(e&&e.length>0){if(this.options.rawList!==e){this.options.rawList=e;o.clear()}}else{t="none";this.pause()}for(var n in b.el){b.el[n].display(t)}return this},fetch:function(){var e=this;return new Promise(function(t,a){if(o.data.length>0){t()}else{if(e.options.rawList){var i=[];e.options.rawList.forEach(function(t,a){i.push(new Promise(function(i,r){var s=a;var c;if(!t.list){s=0;e.group=false;c=[t]}else{e.group=true;c=t.list}n.fetch(c).then(function(e){o.add(s,e);i()})}))});Promise.all(i).then(function(){t(true)})}}}).then(function(t){if(t){o.create();v.create();e.mode()}})},mode:function(){var e=o.data.length;if(!e||o.errnum==e)return;var t=v.step=="next"?1:-1;var a=function(){var a=o.index+t;if(a>e||a<0){a=v.step=="next"?0:e-1}o.index=a};var i=function(){var t=n.random(e);if(o.index!==t){o.index=t}else{a()}};switch(this.options.mode){case"random":i();break;case"order":a();break;case"loop":if(v.step)a();if(o.index==-1)i();break}this.init()},"switch":function(e){if(typeof e=="number"&&e!=o.index&&o.current()&&!o.current().error){o.index=e;this.init()}},init:function(){var e=o.current();if(!e||e["error"]){this.mode();return}var t=false;if(!i.paused){t=true;this.stop()}i.attr("src",e.url);i.attr("title",e.name+" - "+e.artist);this.volume(d.get("_PlayerVolume")||"0.7");this.muted(d.get("_PlayerMuted"));m.create();if(this.options.type=="audio")p.create();if(t==true){this.play()}},play:function(){f&&f.player.pause();if(o.current().error){this.mode();return}var e=this;i.play().then(function(){o.scroll()}).catch(function(e){})},pause:function(){i.pause();document.title=y},stop:function(){i.pause();i.currentTime=0;document.title=y},seek:function(e){e=Math.max(e,0);e=Math.min(e,i.duration);if(isNaN(e)){e=0}i.currentTime=e;m.update(e/i.duration)},muted:function(e){if(e=="muted"){i.muted=e;d.set("_PlayerMuted",e);v.update(0)}else{d.del("_PlayerMuted");i.muted=false;v.update(i.volume)}},volume:function(e){if(!isNaN(e)){v.update(e);d.set("_PlayerVolume",e);i.volume=e}},mini:function(){s.hide()}};var s={el:null,create:function(){if(this.el)return;this.el=e.createChild("div",{className:"player-info",innerHTML:(e.player.options.type=="audio"?'
    ':"")+'
    '},"after");p.el=this.el.child(".preview");o.el=this.el.child(".playlist");v.el=this.el.child(".controller")},hide:function(){var e=this.el;e.addClass("hide");window.setTimeout(function(){e.removeClass("show hide")},300)}};var o={el:null,data:[],index:-1,errnum:0,add:function(e,t){var a=this;t.forEach(function(t,n){t.group=e;t.name=t.name||t.title||"Meida name";t.artist=t.artist||t.author||"Anonymous";t.cover=t.cover||t.pic;t.type=t.type||"normal";a.data.push(t)})},clear:function(){this.data=[];this.el.innerHTML="";if(this.index!==-1){this.index=-1;e.player.fetch()}},create:function(){var t=this.el;this.data.map(function(a,n){if(a.el)return;var r="list-"+e.player._id+"-"+a.group;var s=u("#"+r);if(!s){s=t.createChild("div",{id:r,className:e.player.group?"tab":"",innerHTML:"
      "});if(e.player.group){s.attr("data-title",e.player.options.rawList[a.group]["title"]).attr("data-id",e.player._id)}}a.el=s.child("ol").createChild("li",{title:a.name+" - "+a.artist,innerHTML:''+a.name+""+a.artist+"",onclick:function(t){var a=t.currentTarget;if(o.index===n&&m.el){if(i.paused){e.player.play()}else{e.player.seek(i.duration*m.percent(t,a))}return}e.player.switch(n);e.player.play()}});return a});he()},current:function(){return this.data[this.index]},scroll:function(){var e=this.current();var t=this.el.child("li.active");t&&t.removeClass("active");var a=this.el.child(".tab.active");a&&a.removeClass("active");t=this.el.find(".nav li")[e.group];t&&t.addClass("active");a=this.el.find(".tab")[e.group];a&&a.addClass("active");c(e.el,e.el.offsetTop);return this},title:function(){if(i.paused)return;var e=this.current();document.title="Now Playing..."+e["name"]+" - "+e["artist"]+" | "+y},error:function(){var e=this.current();e.el.removeClass("current").addClass("error");e.error=true;this.errnum++}};var l={el:null,data:null,index:0,create:function(e){var t=o.index;var a=this;var n=o.current().lrc;var i=function(n){if(t!==o.index)return;a.data=a.parse(n);var i="";a.data.forEach(function(e,t){i+=""+e[1]+"

      "});a.el=e.createChild("div",{className:"inner",innerHTML:i},"replace");a.index=0};if(n&&n.startsWith("http"))this.fetch(n,i);else i(n)},update:function(e){if(!this.data)return;if(this.index>this.data.length-1||e=this.data[this.index+1][0])){for(var t=0;t=this.data[t][0]&&(!this.data[t+1]||e/g,"").replace(/^\s+|\s+$/g,"");if(r){const o=r.length;for(var c=0;c
      '+'

      '+t.name+"

      "+t.artist+""+'
      ';this.el.child(".cover").addEventListener("click",e.player.options.events["play-pause"]);l.create(this.el.child(".lrc"))}};var m={el:null,bar:null,create:function(){var e=o.current().el;if(e){if(this.el){this.el.parentNode.removeClass("current").removeEventListener(n.nameMap.dragStart,this.drag);this.el.remove()}this.el=e.createChild("div",{className:"progress"});this.el.attr("data-dtime",n.secondToTime(0));this.bar=this.el.createChild("div",{className:"bar"});e.addClass("current");e.addEventListener(n.nameMap.dragStart,this.drag);o.scroll()}},update:function(e){this.bar.width(Math.floor(e*100)+"%");this.el.attr("data-ptime",n.secondToTime(e*i.duration))},seeking:function(e){if(e)this.el.addClass("seeking");else this.el.removeClass("seeking")},percent:function(e,t){var a=((e.clientX||e.changedTouches[0].clientX)-t.left())/t.width();a=Math.max(a,0);return Math.min(a,1)},drag:function(t){t.preventDefault();var a=o.current().el;var r=function(e){e.preventDefault();var t=m.percent(e,a);m.update(t);l.update(t*i.duration)};var s=function(t){t.preventDefault();a.removeEventListener(n.nameMap.dragEnd,s);a.removeEventListener(n.nameMap.dragMove,r);var o=m.percent(t,a);m.update(o);e.player.seek(o*i.duration);i.disableTimeupdate=false;m.seeking(false)};i.disableTimeupdate=true;m.seeking(true);a.addEventListener(n.nameMap.dragMove,r);a.addEventListener(n.nameMap.dragEnd,s)}};var v={el:null,btns:{},step:"next",create:function(){if(!e.player.options.controls)return;var t=this;e.player.options.controls.forEach(function(a){if(t.btns[a])return;var r={onclick:function(n){t.events[a]?t.events[a](n):e.player.options.events[a](n)}};switch(a){case"volume":r.className=" "+(i.muted?"off":"on");r.innerHTML='
      ';r["on"+n.nameMap.dragStart]=t.events["volume"];r.onclick=null;break;case"mode":r.className=" "+e.player.options.mode;break;default:r.className="";break}r.className=a+r.className+" btn";t.btns[a]=t.el.createChild("div",r)});t.btns["volume"].bar=t.btns["volume"].child(".bar")},events:{mode:function(t){switch(e.player.options.mode){case"loop":e.player.options.mode="random";break;case"random":e.player.options.mode="order";break;default:e.player.options.mode="loop"}v.btns["mode"].className="mode "+e.player.options.mode+" btn";d.set("_PlayerMode",e.player.options.mode)},volume:function(t){t.preventDefault();var a=t.currentTarget;var r=false;var s=function(t){t.preventDefault();e.player.volume(v.percent(t,a));r=true};var o=function(t){t.preventDefault();a.removeEventListener(n.nameMap.dragEnd,o);a.removeEventListener(n.nameMap.dragMove,s);if(r){e.player.muted();e.player.volume(v.percent(t,a))}else{if(i.muted){e.player.muted();e.player.volume(i.volume)}else{e.player.muted("muted");v.update(0)}}};a.addEventListener(n.nameMap.dragMove,s);a.addEventListener(n.nameMap.dragEnd,o)},backward:function(t){v.step="prev";e.player.mode()},forward:function(t){v.step="next";e.player.mode()}},update:function(e){v.btns["volume"].className="volume "+(!i.muted&&e>0?"on":"off")+" btn";v.btns["volume"].bar.width(Math.floor(e*100)+"%")},percent:function(e,t){var a=((e.clientX||e.changedTouches[0].clientX)-t.left())/t.width();a=Math.max(a,0);return Math.min(a,1)}};var g={onerror:function(){o.error();e.player.mode()},ondurationchange:function(){if(i.duration!==1){m.el.attr("data-dtime",n.secondToTime(i.duration))}},onloadedmetadata:function(){e.player.seek(0);m.el.attr("data-dtime",n.secondToTime(i.duration))},onplay:function(){e.parentNode.addClass("playing");J(this.attr("title"));f=e},onpause:function(){e.parentNode.removeClass("playing");f=null},ontimeupdate:function(){if(!this.disableTimeupdate){m.update(this.currentTime/this.duration);l.update(this.currentTime)}},onended:function(t){e.player.mode();e.player.play()}};var b={el:{},create:function(){if(!e.player.options.btns)return;var t=this;e.player.options.btns.forEach(function(a){if(t.el[a])return;t.el[a]=e.createChild("div",{className:a+" btn",onclick:function(t){e.player.fetch().then(function(){e.player.options.events[a](t)})}})})}};var w=function(t){if(e.player.created)return;e.player.options=Object.assign(a,t);e.player.options.mode=d.get("_PlayerMode")||e.player.options.mode;b.create();i=e.createChild(e.player.options.type,g);s.create();e.parentNode.addClass(e.player.options.type);e.player.created=true};w(t);r("fancybox");return e};var m=e.statics.indexOf("//")>0?e.statics:e.root;var v={x:"undefined",y:"undefined"};var g=0;var y,b;const w=document.getElementsByTagName("body")[0];const C=document.documentElement;const x=u("#container");const k=u("#loading");const L=u("#nav");const E=u("#header");const N=L.child(".toggle");const T=u("#quick");const M=u("#sidebar");const O=u("#brand");var j=u("#tool"),I,H,q,A;var S=u("#search");var R,P,_;var D=window.innerHeight;var z=window.innerWidth;var B=0,W=window.location.href;var Y;const F=lozad("img, [data-background-image]",{loaded:function(e){e.addClass("lozaded")}});const U={timer:null,lock:false,show:function(){clearTimeout(this.timer);document.body.removeClass("loaded");k.attr("style","display:block");U.lock=false},hide:function(t){if(!e.loader.start)t=-1;this.timer=setTimeout(this.vanish,t||3e3)},vanish:function(){if(U.lock)return;if(e.loader.start)l(k,0);document.body.addClass("loaded");U.lock=true}};const V=function(e){var t=u(".theme .ic");if(e=="dark"){C.attr("data-theme",e);t.removeClass("i-sun");t.addClass("i-moon")}else{C.attr("data-theme",null);t.removeClass("i-moon");t.addClass("i-sun")}};const X=function(e){if(C.attr("data-theme")=="dark")e="#222";u('meta[name="theme-color"]').attr("content",e)};const Q=function(){window.matchMedia("(prefers-color-scheme: dark)").addListener(function(e){if(e.matches){V("dark")}else{V()}});var t=d.get("theme");if(t){V(t)}else{if(e.darkmode){V("dark")}}u(".theme").addEventListener("click",function(e){var t=e.currentTarget.child(".ic");var a=w.createChild("div",{id:"neko",innerHTML:'
      '});var n=function(){l(a,{delay:2500,opacity:0},function(){w.removeChild(a)})};if(t.hasClass("i-sun")){var i=function(){a.addClass("dark");V("dark");d.set("theme","dark");n()}}else{a.addClass("dark");var i=function(){a.removeClass("dark");V();d.set("theme","light");n()}}l(a,1,function(){setTimeout(i,210)})})};const G=function(){document.addEventListener("visibilitychange",function(){switch(document.visibilityState){case"hidden":u('[rel="icon"]').attr("href",m+e.favicon.hidden);document.title=LOCAL.favicon.hide;if(e.loader.switch)U.show();clearTimeout(b);break;case"visible":u('[rel="icon"]').attr("href",m+e.favicon.normal);document.title=LOCAL.favicon.show;if(e.loader.switch)U.hide(1e3);b=setTimeout(function(){document.title=y},2e3);break}})};const J=function(e){if(!e)return;var t=w.createChild("div",{innerHTML:e,className:"tip"});setTimeout(function(){t.addClass("hide");setTimeout(function(){w.removeChild(t)},300)},3e3)};const $=function(e){R=L.height();P=E.height();_=P+u("#waves").height();if(z!=window.innerWidth)ae(null,1);D=window.innerHeight;z=window.innerWidth;M.child(".panels").height(D+"px")};const K=function(e){var t=window.innerHeight;var n=a();var i=n>t?n-t:document.body.scrollHeight-t;var r=window.pageYOffset>P;var s=window.pageYOffset>0;if(r){X("#FFF")}else{X("#222")}L.toggleClass("show",r);j.toggleClass("affix",s);O.toggleClass("affix",s);M.toggleClass("affix",window.pageYOffset>_&&document.body.offsetWidth>991);if(typeof v.y=="undefined"){v.y=window.pageYOffset}g=v.y-window.pageYOffset;if(g<0){L.removeClass("up");L.toggleClass("down",r)}else if(g>0){L.removeClass("down");L.toggleClass("up",r)}else{}v.y=window.pageYOffset;var o=Math.round(Math.min(100*window.pageYOffset/i,100))+"%";H.child("span").innerText=o;u(".percent").width(o)};const Z=function(){if(e.auto_scroll)d.set(W,v.y)};const ee=function(t){var a=window.location.hash;var n=null;if(B){d.del(W);return}if(a)n=u(decodeURI(a));else{n=e.auto_scroll?parseInt(d.get(W)):0}if(n){c(n);B=1}if(t&&a&&!B){c(n);B=1}};const te=function(e,t){var a=w.createChild("textarea",{style:{top:window.scrollY+"px",position:"absolute",opacity:"0"},readOnly:true,value:e});const n=document.getSelection();const i=n.rangeCount>0?n.getRangeAt(0):false;a.select();a.setSelectionRange(0,e.length);a.readOnly=false;var r=document.execCommand("copy");t&&t(r);a.blur();if(i){n.removeAllRanges();n.addRange(i)}w.removeChild(a)};const ae=function(e,t){if(M.hasClass("on")){M.removeClass("on");N.removeClass("close");if(t){M.style=""}else{l(M,"slideRightOut")}}else{if(t){M.style=""}else{l(M,"slideRightIn",function(){M.addClass("on");N.addClass("close")})}}};const ne=function(){var e=M.child(".inner");var t=M.find(".panel");if(M.child(".tab")){e.removeChild(M.child(".tab"))}var a=document.createElement("ul"),n="active";a.className="tab";["contents","related","overview"].forEach(function(e){var t=M.child(".panel."+e);if(t.innerHTML.replace(/(^\s*)|(\s*$)/g,"").length<1){if(e=="contents"){A.display("none")}return}if(e=="contents"){A.display("")}var i=document.createElement("li");var r=document.createElement("span");var s=document.createTextNode(t.attr("data-title"));r.appendChild(s);i.appendChild(r);i.addClass(e+" item");if(n){t.addClass(n);i.addClass(n)}else{t.removeClass("active")}i.addEventListener("click",function(e){var t=event.currentTarget;if(t.hasClass("active"))return;M.find(".tab .item").forEach(function(e){e.removeClass("active")});M.find(".panel").forEach(function(e){e.removeClass("active")});M.child(".panel."+t.className.replace(" item","")).addClass("active");t.addClass("active")});a.appendChild(i);n=""});if(a.childNodes.length>1){e.insertBefore(a,e.childNodes[0]);M.child(".panels").style.paddingTop=""}else{M.child(".panels").style.paddingTop=".625rem"}};const ie=function(){var t=u.all(".contents li");if(t.length<1){return}var a=Array.prototype.slice.call(t)||[];var n=null;a=a.map(function(t,a){var i=t.child("a.toc-link");var s=u(decodeURI(i.attr("href")));if(!s)return;var o=s.child("a.anchor");var l=function(e){e.preventDefault();var t=u(decodeURI(e.currentTarget.attr("href")));n=a;c(t,null,function(){r(a);n=null})};i.addEventListener("click",l);o&&o.addEventListener("click",function(t){l(t);te(e.hostname+"/"+LOCAL.path+t.currentTarget.attr("href"))});return s});var i=M.child(".contents.panel");var r=function(e,n){var r=t[e];if(!r)return;if(r.hasClass("current")){return}u.each(".toc .active",function(e){e&&e.removeClass("active current")});a.forEach(function(e){e&&e.removeClass("active")});r.addClass("active current");a[e]&&a[e].addClass("active");var s=r.parentNode;while(!s.matches(".contents")){if(s.matches("li")){s.addClass("active");var o=u(s.child("a.toc-link").attr("href"));if(o){o.addClass("active")}}s=s.parentNode}if(getComputedStyle(M).display!="none"&&i.hasClass("active")){c(i,r.offsetTop-i.offsetHeight/4)}};var s=function(e){var t=0;var n=e[t];if(n.boundingClientRect.top>0){t=a.indexOf(n.target);return t===0?0:t-1}for(;t0){t.target.addClass("show");e.unobserve(t.target)}}})},{root:null,threshold:[.3]});u.each(".index.wrap article.item, .index.wrap section.item",function(t){e.observe(t)});u(".index.wrap .item:first-child").addClass("show")}u.each(".cards .item",function(e,t){["mouseenter","touchstart"].forEach(function(t){e.addEventListener(t,function(t){if(u(".cards .item.active")){u(".cards .item.active").removeClass("active")}e.addClass("active")})});["mouseleave"].forEach(function(t){e.addEventListener(t,function(t){e.removeClass("active")})})})};const de=function(){u.each("span.exturl",function(e){var t=document.createElement("a");t.href=decodeURIComponent(atob(e.dataset.url).split("").map(function(e){return"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2)}).join(""));t.rel="noopener external nofollow noreferrer";t.target="_blank";t.className=e.className;t.title=e.title||e.innerText;t.innerHTML=e.innerHTML;if(e.dataset.backgroundImage){t.dataset.backgroundImage=e.dataset.backgroundImage}e.parentNode.replaceChild(t,e)})};const ue=function(e){if(u(e+" .md img")){s("fancybox");r("fancybox",function(){var t=jQuery.noConflict();u.each(e+" p.gallery",function(e){var t=document.createElement("div");t.className="gallery";t.attr("data-height",e.attr("data-height")||220);t.innerHTML=e.innerHTML.replace(/
      /g,"");e.parentNode.insertBefore(t,e);e.remove()});u.each(e+" .md img:not(.emoji):not(.vemoji)",function(e){var a=t(e);var n,i="image-info";if(!a.is("a img")){var r=a.attr("data-src")||a.attr("src");a.data("safe-src",r);var s=a.wrap('').parent("a");if(!a.is(".gallery img")){s.attr("data-fancybox","default").attr("rel","default")}else{i="jg-caption"}}if(n=e.attr("title")){s.attr("data-caption",n);var o=document.createElement("span");var c=document.createTextNode(n);o.appendChild(c);o.addClass(i);e.insertAfter(o)}});u.each(e+" div.gallery",function(e,a){t(e).justifiedGallery({rowHeight:t(e).data("height")||120,rel:"gallery-"+a}).on("jg.complete",function(){t(this).find("a").each(function(e,t){t.attr("data-fancybox","gallery-"+a)})})});t.fancybox.defaults.hash=false;t(e+" .fancybox").fancybox({loop:true,helpers:{overlay:{locked:false}}})},window.jQuery)}};const fe=function(){pe();if(!u(".md"))return;ue(".post.block");u(".post.block").oncopy=function(e){J(LOCAL.copyright);if(LOCAL.nocopy){e.preventDefault();return}var t=u("#copyright");if(window.getSelection().toString().length>30&&t){e.preventDefault();var a="# "+t.child(".author").innerText;var n="# "+t.child(".link").innerText;var i="# "+t.child(".license").innerText;var r=a+"
      "+n+"
      "+i+"

      "+window.getSelection().toString().replace(/\r\n/g,"
      ");var s=a+"\n"+n+"\n"+i+"\n\n"+window.getSelection().toString().replace(/\r\n/g,"\n");if(e.clipboardData){e.clipboardData.setData("text/html",r);e.clipboardData.setData("text/plain",s)}else if(window.clipboardData){return window.clipboardData.setData("text",s)}}};u.each("li ruby",function(e){var t=e.parentNode;if(e.parentNode.tagName!="LI"){t=e.parentNode.parentNode}t.addClass("ruby")});u.each("ol[start]",function(e){e.style.counterReset="counter "+parseInt(e.attr("start")-1)});u.each(".md table",function(e){e.wrap({className:"table-container"})});u.each(".highlight > .table-container",function(e){e.className="code-container"});u.each("figure.highlight",function(e){var t=e.child(".code-container");var a=e.child("figcaption");e.insertAdjacentHTML("beforeend",'
      ');var n=e.child(".copy-btn");if(LOCAL.nocopy){n.remove()}else{n.addEventListener("click",function(e){var a=e.currentTarget;var n="",i="";t.find("pre").forEach(function(e){i+=n+e.innerText;n="\n"});te(i,function(e){a.child(".ic").className=e?"ic i-check":"ic i-times";a.blur();J(LOCAL.copyright)})});n.addEventListener("mouseleave",function(e){setTimeout(function(){e.target.child(".ic").className="ic i-clipboard"; },1e3)})}var i=e.child(".breakline-btn");i.addEventListener("click",function(t){var a=t.currentTarget;if(e.hasClass("breakline")){e.removeClass("breakline");a.child(".ic").className="ic i-align-left"}else{e.addClass("breakline");a.child(".ic").className="ic i-align-justify"}});var r=e.child(".fullscreen-btn");var s=function(){e.removeClass("fullscreen");e.scrollTop=0;w.removeClass("fullscreen");r.child(".ic").className="ic i-expand"};var o=function(t){var a=t.currentTarget;if(e.hasClass("fullscreen")){s();u&&u();c(e)}else{e.addClass("fullscreen");w.addClass("fullscreen");r.child(".ic").className="ic i-compress";d&&d()}};r.addEventListener("click",o);a&&a.addEventListener("click",o);if(t&&t.find("tr").length>15){t.style.maxHeight="300px";t.insertAdjacentHTML("beforeend",'
      ');var l=t.child(".show-btn");var d=function(){t.style.maxHeight="";l.addClass("open")};var u=function(){t.style.maxHeight="300px";l.removeClass("open")};l.addEventListener("click",function(e){if(l.hasClass("open")){s();u();c(t)}else{d()}})}});u.each("pre.mermaid > svg",function(e){e.style.maxWidth=""});u.each(".reward button",function(e){e.addEventListener("click",function(e){e.preventDefault();var t=u("#qr");if(t.display()==="inline-flex"){l(t,0)}else{l(t,1,function(){t.display("inline-flex")})}})});u.each(".quiz > ul.options li",function(e){e.addEventListener("click",function(t){if(e.hasClass("correct")){e.toggleClass("right");e.parentNode.parentNode.addClass("show")}else{e.toggleClass("wrong")}})});u.each(".quiz > p",function(e){e.addEventListener("click",function(t){e.parentNode.toggleClass("show")})});u.each(".quiz > p:first-child",function(e){var t=e.parentNode;var a="choice";if(t.hasClass("true")||t.hasClass("false"))a="true_false";if(t.hasClass("multi"))a="multiple";if(t.hasClass("fill"))a="gap_fill";if(t.hasClass("essay"))a="essay";e.attr("data-type",LOCAL.quiz[a])});u.each(".quiz .mistake",function(e){e.attr("data-type",LOCAL.quiz.mistake)});u.each("div.tags a",function(e){e.className=["primary","success","info","warning","danger"][Math.floor(Math.random()*5)]});u.each(".md div.player",function(e){p(e,{type:e.attr("data-type"),mode:"order",btns:[]}).player.load(JSON.parse(e.attr("data-src"))).fetch()})};const he=function(){var e;u.each("div.tab",function(t,a){if(t.attr("data-ready"))return;var n=t.attr("data-id");var i=t.attr("data-title");var r=u("#"+n);if(!r){r=document.createElement("div");r.className="tabs";r.id=n;r.innerHTML='
      ';var s=r.child(".show-btn");s.addEventListener("click",function(e){c(r)});t.parentNode.insertBefore(r,t);e=true}else{e=false}var o=r.child(".nav ul");if(!o){o=r.createChild("div",{className:"nav",innerHTML:"
        "}).child("ul")}var l=o.createChild("li",{innerHTML:i});if(e){l.addClass("active");t.addClass("active")}l.addEventListener("click",function(e){var a=e.currentTarget;r.find(".active").forEach(function(e){e.removeClass("active")});t.addClass("active");a.addClass("active")});r.appendChild(t);t.attr("data-ready",true)})};const pe=function(){var e=u("#comments");if(!e){q.display("none");return}else{q.display("")}if(!window.IntersectionObserver){s("valine")}else{var t=new IntersectionObserver(function(e,t){var a=e[0];s("valine");if(a.isIntersecting||a.intersectionRatio>0){l(u("#comments"),"bounceUpIn");t.disconnect()}});t.observe(e)}};const me=function(t){if(e.search===null)return;if(!S){S=w.createChild("div",{id:"search",innerHTML:'
        '})}var a=instantsearch({indexName:e.search.indexName,searchClient:algoliasearch(e.search.appID,e.search.apiKey),searchFunction:function(e){var t=u(".search-input");if(t.value){e.search()}}});a.on("render",function(){t.refresh(u("#search-hits"))});a.addWidgets([instantsearch.widgets.configure({hitsPerPage:e.search.hits.per_page||10}),instantsearch.widgets.searchBox({container:".search-input-container",placeholder:LOCAL.search.placeholder,showReset:false,showSubmit:false,showLoadingIndicator:false,cssClasses:{input:"search-input"}}),instantsearch.widgets.stats({container:"#search-stats",templates:{text:function(e){var t=LOCAL.search.stats.replace(/\$\{hits}/,e.nbHits).replace(/\$\{time}/,e.processingTimeMS);return t+'
        '}}}),instantsearch.widgets.hits({container:"#search-hits",templates:{item:function(t){var a=t.categories?""+t.categories.join('')+"":"";return''+a+t._highlightResult.title.value+""},empty:function(e){return'
        '+LOCAL.search.empty.replace(/\$\{query}/,e.query)+"
        "}},cssClasses:{item:"item"}}),instantsearch.widgets.pagination({container:"#search-pagination",scrollTo:false,showFirst:false,showLast:false,templates:{first:'',last:'',previous:'',next:''},cssClasses:{root:"pagination",item:"pagination-item",link:"page-number",selectedItem:"current",disabledItem:"disabled-item"}})]);a.start();u.each(".search",function(e){e.addEventListener("click",function(){document.body.style.overflow="hidden";l(S,"shrinkIn",function(){u(".search-input").focus()})})});const n=function(){document.body.style.overflow="";l(S,0)};S.addEventListener("click",function(e){if(e.target===S){n()}});u(".close-btn").addEventListener("click",n);window.addEventListener("pjax:success",n);window.addEventListener("keyup",function(e){if(e.key==="Escape"){n()}})};const ve=function(){u.each(".overview .menu > .item",function(e){L.child(".menu").appendChild(e.cloneNode(true))});k.addEventListener("click",U.vanish);N.addEventListener("click",ae);u(".dimmer").addEventListener("click",ae);T.child(".down").addEventListener("click",se);T.child(".up").addEventListener("click",re);if(!j){j=E.createChild("div",{id:"tool",innerHTML:'
        0%
        '})}I=j.child(".player");H=j.child(".back-to-top");q=j.child(".chat");A=j.child(".contents");H.addEventListener("click",re);q.addEventListener("click",oe);A.addEventListener("click",ae);p(I);u("main").addEventListener("click",function(){I.player.mini()})};const ge=function(){Z();if(M.hasClass("on")){l(M,function(){M.removeClass("on");N.removeClass("close")})}u("#main").innerHTML="";u("#main").appendChild(k.lastChild.cloneNode(true));c(0)};const ye=function(t){B=0;W=window.location.href;s("katex");r("copy_tex");s("mermaid");r("chart");r("valine",function(){var t=Object.assign({},e.valine);t=Object.assign(t,LOCAL.valine||{});t.el="#comments";t.pathname=LOCAL.path;t.pjax=Y;t.lazyload=F;new MiniValine(t);setTimeout(function(){ee(1);ue(".v")},1e3)},window.MiniValine);if(!t){u.each("script[data-pjax]",o)}y=document.title;$();ce();ne();ie();de();fe();he();I.player.load(LOCAL.audio||e.audio||{});U.hide();setTimeout(function(){ee()},500);le();F.observe()};const be=function(){ve();Y=new Pjax({selectors:["head title",".languages",".pjax","script[data-config]"],analytics:false,cacheBust:false});e.quicklink.ignores=LOCAL.ignores;quicklink.listen(e.quicklink);G();Q();me(Y);window.addEventListener("scroll",K);window.addEventListener("resize",$);window.addEventListener("pjax:send",ge);window.addEventListener("pjax:success",ye);window.addEventListener("beforeunload",function(){Z()});ye(1)};window.addEventListener("DOMContentLoaded",be);var we=document.createElement("canvas");we.style.cssText="position:fixed;top:0;left:0;pointer-events:none;z-index:9999999";document.body.appendChild(we);var Ce=we.getContext("2d");var xe=30;var ke=0;var Le=0;var Ee="click";var Ne=e.fireworks;function Te(){we.width=window.innerWidth*2;we.height=window.innerHeight*2;we.style.width=window.innerWidth+"px";we.style.height=window.innerHeight+"px";we.getContext("2d").scale(2,2)}function Me(e){ke=e.clientX||e.touches&&e.touches[0].clientX;Le=e.clientY||e.touches&&e.touches[0].clientY}function Oe(e){var t=anime.random(0,360)*Math.PI/180;var a=anime.random(50,180);var n=[-1,1][anime.random(0,1)]*a;return{x:e.x+n*Math.cos(t),y:e.y+n*Math.sin(t)}}function je(e,t){var a={};a.x=e;a.y=t;a.color=Ne[anime.random(0,Ne.length-1)];a.radius=anime.random(16,32);a.endPos=Oe(a);a.draw=function(){Ce.beginPath();Ce.arc(a.x,a.y,a.radius,0,2*Math.PI,true);Ce.fillStyle=a.color;Ce.fill()};return a}function Ie(e,t){var a={};a.x=e;a.y=t;a.color="#FFF";a.radius=.1;a.alpha=.5;a.lineWidth=6;a.draw=function(){Ce.globalAlpha=a.alpha;Ce.beginPath();Ce.arc(a.x,a.y,a.radius,0,2*Math.PI,true);Ce.lineWidth=a.lineWidth;Ce.strokeStyle=a.color;Ce.stroke();Ce.globalAlpha=1};return a}function He(e){for(var t=0;tHito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        1.6k 1 分钟

        # X-Frame-Options 响应头配置详解   X-Frame-Options HTTP 响应头是用来给浏览器指示允许一个页面可否在,或者 中展现的标记。网站可以使用此功能,来确保自己网站的内容没有被嵌套到别人的网站中去,也从而避免了点击劫持 (clickjacking) 的攻击。 X-Frame-Options 三个参数: 1、 DENY   表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许。 2、SAMEORIGIN   表示该页面可以在相同域名页面的 frame 中展示。 3、ALLOW-FROM uri   表示该页面可以在指定来源的 frame...
        1.1k 1 分钟

        # nginx 负载均衡配置 轮询(默认)   每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。 upstream my_server &#123; server 192.168.0.2:8080; server 192.168.0.3:8080; &#125; server &#123; listen 80; server_name 192.168.0.1; # Path to the root of your installation location / &#123; proxy_pass...
        1.8k 2 分钟

        今天突然发现博客的音乐无法播放了。经过一顿查找,发现是因为 https://api.i-meto.com/meting/api 调用出错了。shoka 主题应该是通过这个网站提取音乐地址、图片等信息。通过断点发现网易播放列表还是能正常获取的,只是列表中的具体音乐、图片无法获取了。于是自己用获取的列表信息组装出正确的 url 问题基本解决。只针对网易播放列表,图片只能使用一张固定的。   解决方法如下:     到 themes\shoka\source\js_app 目录下打开 player.js 文件,在最底部 init (config) 下加入 vendorJs...
        268 1 分钟

        今天突然发现自己的网站不能访问了。经过一顿排查,发现是家里的外网 ip 变动后 nginx 解析的域名 ip 还是旧 ip 导致的。手动重启 nginx 后恢复正常。但这不是长久之计,如果每次 ip 变动都需要重启一次 nginx,想想都头大。于是查询资料后获得了解决办法,方法如下: location / &#123; resolver 114.114.114.114 valid=60s; #自定义缓存有效时间间隔对变量中的域名进行解析 set $my_server &quot;https://ip:port&quot;; proxy_pass...
        179 1 分钟

        # 下载工具 protoc-3.19.5-win64.zip # 生成 js 文件 把 xxx.proto 文件拷贝到解压的 protoc-3.19.5-win64\bin 目录下 cmd 到相同的 bin 目录下 执行 protoc.exe --js_out=import_style=commonjs,binary:. ./xxx.proto 命令,就会在 bin 目录下生成 xxx_pb.js 文件
        508 1 分钟

        今天前端开发跟我反馈用 vue 的 socketio 连接不上后台服务,连接无反应无任何报错。所以不清楚是前端代码问题还是后台服务的问题。由于框架为另一同事搭建,我只负责处理后端业务逻辑部分,所以第一时间我也不清楚具体的原因。于是我找了个第三方的 socket 工具尝试连接,果然有问题。但是只是提示连接不上,无明显错误原因。到后台查看发现有提示 Unknown transport for request 错误,最后通过调试发现 netty-socketio 的库中 AuthorizeHandler 类有段处理 transport 的代码只能接受大写的 WEBSOCKET 或者...
        598 1 分钟

        # Hexo + Theme.Shoka 安装   安装介绍 # algolia 注册 algolia 不支持国内邮箱注册,而 google 和 github 由于国内被墙也没法使用。所以只能先注册 netlify 然后通过 netlify 注册 algolia。 登录 algolia 后创建一个 index,名字随意记住既可。 点击右上角红点,弹出窗口点 settings 按钮。 点击 API KEYS,获取 appId 和 adminApiKey 填入 hexo 的_config.yml 中 apiKey 暂时不填。 algolia: appId: #Your...
        590 1 分钟

        # 安装准备 需要先安装好 mysql 数据库 选择版本,1.5 版以前支持中文,之后被维护的团队删除只支持英文 本文介绍使用的是 linuxserver_chevereto 的镜像 需要预先创建好给 chevereto 使用的库、账户、密码 经过测试,使用 surenkid_chevereto 的镜像可以完美支持多国语言,配置同 linuxserver_chevereto 一样 # 容器配置 映射路径(不要放在高速盘,否则会有权限问题) 端口 环境(puid 和 pgid 使用 1000,不要使用 0,否则会报错) # 初始化配置 使用 http:// 极空间...
        1.1k 1 分钟

        # hexo 博客安装 安装 nodejs 安装 git 安装 hexo(windows 需进入 git bash) npm install -g hexo-cli 初始化博客目录 hexo init blog 进入博客目录 cd blog 初始化 hexo 到博客目录 npm install # shoka 主题安装 下载主题 git clone https://github.com/amehime/hexo-theme-shoka.git ./themes/shoka 卸载 hexo-renderer-marked 以及别的 markdown 文件渲染器 npm un...
        \ No newline at end of file +Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        1.6k 1 分钟

        # X-Frame-Options 响应头配置详解   X-Frame-Options HTTP 响应头是用来给浏览器指示允许一个页面可否在,或者 中展现的标记。网站可以使用此功能,来确保自己网站的内容没有被嵌套到别人的网站中去,也从而避免了点击劫持 (clickjacking) 的攻击。 X-Frame-Options 三个参数: 1、 DENY   表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许。 2、SAMEORIGIN   表示该页面可以在相同域名页面的 frame 中展示。 3、ALLOW-FROM uri   表示该页面可以在指定来源的 frame...
        1.1k 1 分钟

        # nginx 负载均衡配置 轮询(默认)   每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。 upstream my_server &#123; server 192.168.0.2:8080; server 192.168.0.3:8080; &#125; server &#123; listen 80; server_name 192.168.0.1; # Path to the root of your installation location / &#123; proxy_pass...
        1.8k 2 分钟

        今天突然发现博客的音乐无法播放了。经过一顿查找,发现是因为 https://api.i-meto.com/meting/api 调用出错了。shoka 主题应该是通过这个网站提取音乐地址、图片等信息。通过断点发现网易播放列表还是能正常获取的,只是列表中的具体音乐、图片无法获取了。于是自己用获取的列表信息组装出正确的 url 问题基本解决。只针对网易播放列表,图片只能使用一张固定的。   解决方法如下:     到 themes\shoka\source\js_app 目录下打开 player.js 文件,在最底部 init (config) 下加入 vendorJs...
        268 1 分钟

        今天突然发现自己的网站不能访问了。经过一顿排查,发现是家里的外网 ip 变动后 nginx 解析的域名 ip 还是旧 ip 导致的。手动重启 nginx 后恢复正常。但这不是长久之计,如果每次 ip 变动都需要重启一次 nginx,想想都头大。于是查询资料后获得了解决办法,方法如下: location / &#123; resolver 114.114.114.114 valid=60s; #自定义缓存有效时间间隔对变量中的域名进行解析 set $my_server &quot;https://ip:port&quot;; proxy_pass...
        179 1 分钟

        # 下载工具 protoc-3.19.5-win64.zip # 生成 js 文件 把 xxx.proto 文件拷贝到解压的 protoc-3.19.5-win64\bin 目录下 cmd 到相同的 bin 目录下 执行 protoc.exe --js_out=import_style=commonjs,binary:. ./xxx.proto 命令,就会在 bin 目录下生成 xxx_pb.js 文件
        508 1 分钟

        今天前端开发跟我反馈用 vue 的 socketio 连接不上后台服务,连接无反应无任何报错。所以不清楚是前端代码问题还是后台服务的问题。由于框架为另一同事搭建,我只负责处理后端业务逻辑部分,所以第一时间我也不清楚具体的原因。于是我找了个第三方的 socket 工具尝试连接,果然有问题。但是只是提示连接不上,无明显错误原因。到后台查看发现有提示 Unknown transport for request 错误,最后通过调试发现 netty-socketio 的库中 AuthorizeHandler 类有段处理 transport 的代码只能接受大写的 WEBSOCKET 或者...
        598 1 分钟

        # Hexo + Theme.Shoka 安装   安装介绍 # algolia 注册 algolia 不支持国内邮箱注册,而 google 和 github 由于国内被墙也没法使用。所以只能先注册 netlify 然后通过 netlify 注册 algolia。 登录 algolia 后创建一个 index,名字随意记住既可。 点击右上角红点,弹出窗口点 settings 按钮。 点击 API KEYS,获取 appId 和 adminApiKey 填入 hexo 的_config.yml 中 apiKey 暂时不填。 algolia: appId: #Your...
        590 1 分钟

        # 安装准备 需要先安装好 mysql 数据库 选择版本,1.5 版以前支持中文,之后被维护的团队删除只支持英文 本文介绍使用的是 linuxserver_chevereto 的镜像 需要预先创建好给 chevereto 使用的库、账户、密码 经过测试,使用 surenkid_chevereto 的镜像可以完美支持多国语言,配置同 linuxserver_chevereto 一样 # 容器配置 映射路径(不要放在高速盘,否则会有权限问题) 端口 环境(puid 和 pgid 使用 1000,不要使用 0,否则会报错) # 初始化配置 使用 http:// 极空间...
        1.1k 1 分钟

        # hexo 博客安装 安装 nodejs 安装 git 安装 hexo(windows 需进入 git bash) npm install -g hexo-cli 初始化博客目录 hexo init blog 进入博客目录 cd blog 初始化 hexo 到博客目录 npm install # shoka 主题安装 下载主题 git clone https://github.com/amehime/hexo-theme-shoka.git ./themes/shoka 卸载 hexo-renderer-marked 以及别的 markdown 文件渲染器 npm un...
        \ No newline at end of file diff --git a/rss.xml b/rss.xml index 7ad7905c0..2eb21eaf1 100644 --- a/rss.xml +++ b/rss.xml @@ -762,8 +762,8 @@ sudo sysctl vm.overcommit_memory=1 - + Wed, 12 Oct 2022 14:40:00 +0800 https://blog.jingxiyuan.cn/2022/09/28/%E6%B7%B1%E6%B7%B1%E7%9A%84%E6%8C%AB%E8%B4%A5%E5%92%8C%E6%97%A0%E5%8A%A9%E6%84%9F/ - + Wed, 28 Sep 2022 16:02:00 +0800 @@ -1103,11 +1103,11 @@ server &#123; + - Fri, 16 Sep 2022 08:04:00 +0800 标签:Hexo-admin | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file +标签:Hexo-admin | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file diff --git a/tags/Hexo/index.html b/tags/Hexo/index.html index 031aeee0d..704db7e7f 100644 --- a/tags/Hexo/index.html +++ b/tags/Hexo/index.html @@ -1 +1 @@ -标签:Hexo | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file +标签:Hexo | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file diff --git a/tags/PicGo/index.html b/tags/PicGo/index.html index 0cfc8825c..50adbc790 100644 --- a/tags/PicGo/index.html +++ b/tags/PicGo/index.html @@ -1 +1 @@ -标签:PicGo | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file +标签:PicGo | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file diff --git a/tags/Shoka/index.html b/tags/Shoka/index.html index 30cbf74e6..6ee4c6e58 100644 --- a/tags/Shoka/index.html +++ b/tags/Shoka/index.html @@ -1 +1 @@ -标签:Shoka | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file +标签:Shoka | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file diff --git a/tags/Valine/index.html b/tags/Valine/index.html index 8b8c38894..3e8280037 100644 --- a/tags/Valine/index.html +++ b/tags/Valine/index.html @@ -1 +1 @@ -标签:Valine | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file +标签:Valine | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file diff --git a/tags/Wordpress/index.html b/tags/Wordpress/index.html index 03ac7b86f..676120e74 100644 --- a/tags/Wordpress/index.html +++ b/tags/Wordpress/index.html @@ -1 +1 @@ -标签:Wordpress | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file +标签:Wordpress | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file diff --git a/tags/algolia/index.html b/tags/algolia/index.html index 9068336ba..65ec2fe93 100644 --- a/tags/algolia/index.html +++ b/tags/algolia/index.html @@ -1 +1 @@ -标签:algolia | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file +标签:algolia | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file diff --git a/tags/chevereto/index.html b/tags/chevereto/index.html index 8d8295e6d..fcc135cc6 100644 --- a/tags/chevereto/index.html +++ b/tags/chevereto/index.html @@ -1 +1 @@ -标签:chevereto | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file +标签:chevereto | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file diff --git a/tags/cookie/index.html b/tags/cookie/index.html index c7b76d558..0bf6c926c 100644 --- a/tags/cookie/index.html +++ b/tags/cookie/index.html @@ -1 +1 @@ -标签:cookie | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file +标签:cookie | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file diff --git a/tags/docker/index.html b/tags/docker/index.html index 88c3cc8ac..363b583b8 100644 --- a/tags/docker/index.html +++ b/tags/docker/index.html @@ -1 +1 @@ -标签:docker | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file +标签:docker | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file diff --git a/tags/git/index.html b/tags/git/index.html index f7be6509b..6ed0a11ce 100644 --- a/tags/git/index.html +++ b/tags/git/index.html @@ -1 +1 @@ -标签:git | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file +标签:git | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file diff --git a/tags/iframe/index.html b/tags/iframe/index.html index 0b2a338fa..8dada359f 100644 --- a/tags/iframe/index.html +++ b/tags/iframe/index.html @@ -1 +1 @@ -标签:iframe | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file +标签:iframe | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file diff --git a/tags/index.html b/tags/index.html index 41495ff6c..f9b90a016 100644 --- a/tags/index.html +++ b/tags/index.html @@ -1 +1 @@ -全部标签 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file +全部标签 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file diff --git a/tags/js/index.html b/tags/js/index.html index b0067e4f1..712077895 100644 --- a/tags/js/index.html +++ b/tags/js/index.html @@ -1 +1 @@ -标签:js | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file +标签:js | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file diff --git a/tags/mariadb/index.html b/tags/mariadb/index.html index a85d88ebe..9bf0f8775 100644 --- a/tags/mariadb/index.html +++ b/tags/mariadb/index.html @@ -1 +1 @@ -标签:mariadb | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file +标签:mariadb | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file diff --git a/tags/mysql/index.html b/tags/mysql/index.html index dfecdff4a..8d5bb4b5b 100644 --- a/tags/mysql/index.html +++ b/tags/mysql/index.html @@ -1 +1 @@ -标签:mysql | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file +标签:mysql | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file diff --git a/tags/nagios/index.html b/tags/nagios/index.html index 8cc474116..ea940a029 100644 --- a/tags/nagios/index.html +++ b/tags/nagios/index.html @@ -1 +1 @@ -标签:nagios | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file +标签:nagios | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file diff --git a/tags/netty/index.html b/tags/netty/index.html index d083766b5..309a9bfa2 100644 --- a/tags/netty/index.html +++ b/tags/netty/index.html @@ -1 +1 @@ -标签:netty | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file +标签:netty | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file diff --git a/tags/nginx/index.html b/tags/nginx/index.html index 8d8f9acd3..d4b484527 100644 --- a/tags/nginx/index.html +++ b/tags/nginx/index.html @@ -1 +1 @@ -标签:nginx | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file +标签:nginx | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file diff --git a/tags/protobuf/index.html b/tags/protobuf/index.html index c0f08321c..fa097363b 100644 --- a/tags/protobuf/index.html +++ b/tags/protobuf/index.html @@ -1 +1 @@ -标签:protobuf | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file +标签:protobuf | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file diff --git a/tags/redis/index.html b/tags/redis/index.html index a50cdca35..e59aa29d4 100644 --- a/tags/redis/index.html +++ b/tags/redis/index.html @@ -1 +1 @@ -标签:redis | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file +标签:redis | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file diff --git a/tags/socketIO/index.html b/tags/socketIO/index.html index 0fb702f7c..509309fe2 100644 --- a/tags/socketIO/index.html +++ b/tags/socketIO/index.html @@ -1 +1 @@ -标签:socketIO | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file +标签:socketIO | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file diff --git a/tags/svn/index.html b/tags/svn/index.html index 413652e36..7e03f3cc3 100644 --- a/tags/svn/index.html +++ b/tags/svn/index.html @@ -1 +1 @@ -标签:svn | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file +标签:svn | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file diff --git a/tags/博客/index.html b/tags/博客/index.html index 35b9b12ce..e535b4af2 100644 --- a/tags/博客/index.html +++ b/tags/博客/index.html @@ -1 +1 @@ -标签:博客 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file +标签:博客 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file diff --git a/tags/图床/index.html b/tags/图床/index.html index e33b9e205..4ffc2b407 100644 --- a/tags/图床/index.html +++ b/tags/图床/index.html @@ -1 +1 @@ -标签:图床 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file +标签:图床 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file diff --git a/tags/图片上传/index.html b/tags/图片上传/index.html index 95e5d1893..5beb3a9f7 100644 --- a/tags/图片上传/index.html +++ b/tags/图片上传/index.html @@ -1 +1 @@ -标签:图片上传 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file +标签:图片上传 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file diff --git a/tags/定时任务/index.html b/tags/定时任务/index.html index 213a455bb..7538af804 100644 --- a/tags/定时任务/index.html +++ b/tags/定时任务/index.html @@ -1 +1 @@ -标签:定时任务 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file +标签:定时任务 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file diff --git a/tags/心情/index.html b/tags/心情/index.html index e1513f815..538a65f77 100644 --- a/tags/心情/index.html +++ b/tags/心情/index.html @@ -1 +1 @@ -标签:心情 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file +标签:心情 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file diff --git a/tags/搜索/index.html b/tags/搜索/index.html index a5a4fd655..bb18a6ed5 100644 --- a/tags/搜索/index.html +++ b/tags/搜索/index.html @@ -1 +1 @@ -标签:搜索 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file +标签:搜索 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file diff --git a/tags/服务监控/index.html b/tags/服务监控/index.html index 588b56f29..0a65cddfa 100644 --- a/tags/服务监控/index.html +++ b/tags/服务监控/index.html @@ -1 +1 @@ -标签:服务监控 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file +标签:服务监控 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file diff --git a/tags/极空间/index.html b/tags/极空间/index.html index df0510010..3c1337574 100644 --- a/tags/极空间/index.html +++ b/tags/极空间/index.html @@ -1 +1 @@ -标签:极空间 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file +标签:极空间 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file diff --git a/tags/背景音乐/index.html b/tags/背景音乐/index.html index 9d119f62c..5eff0a801 100644 --- a/tags/背景音乐/index.html +++ b/tags/背景音乐/index.html @@ -1 +1 @@ -标签:背景音乐 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file +标签:背景音乐 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file diff --git a/tags/评论/index.html b/tags/评论/index.html index e765fb1b5..fd5ab8d9d 100644 --- a/tags/评论/index.html +++ b/tags/评论/index.html @@ -1 +1 @@ -标签:评论 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file +标签:评论 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file diff --git a/tags/负载均衡/index.html b/tags/负载均衡/index.html index be667df66..a3a7c743a 100644 --- a/tags/负载均衡/index.html +++ b/tags/负载均衡/index.html @@ -1 +1 @@ -标签:负载均衡 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file +标签:负载均衡 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file diff --git a/tags/踩坑/index.html b/tags/踩坑/index.html index 02b9199b3..584bd75a2 100644 --- a/tags/踩坑/index.html +++ b/tags/踩坑/index.html @@ -1 +1 @@ -标签:踩坑 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file +标签:踩坑 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file diff --git a/tags/郁闷/index.html b/tags/郁闷/index.html index 780c786a7..e1736d516 100644 --- a/tags/郁闷/index.html +++ b/tags/郁闷/index.html @@ -1 +1 @@ -标签:郁闷 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file +标签:郁闷 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file diff --git a/tags/青龙面板/index.html b/tags/青龙面板/index.html index 91482a0cf..e32b808ed 100644 --- a/tags/青龙面板/index.html +++ b/tags/青龙面板/index.html @@ -1 +1 @@ -标签:青龙面板 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file +标签:青龙面板 | Hito = Hito 的公告栏 = 天下事有难易乎?为之,则难者亦易矣
        \ No newline at end of file