diff --git a/2020/05/03/hexo-install-and-deploy/index.html b/2020/05/03/hexo-install-and-deploy/index.html index 52cc87358b769408974bf42716c9286e6f7f8a26..3329edefded9377f8de6c2920e0fa19498066e5d 100644 --- a/2020/05/03/hexo-install-and-deploy/index.html +++ b/2020/05/03/hexo-install-and-deploy/index.html @@ -18,4 +18,4 @@ localStorage.setItem('comments_active', commentClass); }); } - \ No newline at end of file + \ No newline at end of file diff --git a/2020/05/06/hexo-config/index.html b/2020/05/06/hexo-config/index.html index 0e9899daca565f29b0cbf8ddee28f227aff37e46..db9dccc99c2fb5bbfcd4876a7691e80a8a30e38d 100644 --- a/2020/05/06/hexo-config/index.html +++ b/2020/05/06/hexo-config/index.html @@ -18,4 +18,4 @@ localStorage.setItem('comments_active', commentClass); }); } - \ No newline at end of file + \ No newline at end of file diff --git a/2020/05/07/hexo-compress/index.html b/2020/05/07/hexo-compress/index.html new file mode 100644 index 0000000000000000000000000000000000000000..77c530430a31be9eb0639b8a0870a0604852052f --- /dev/null +++ b/2020/05/07/hexo-compress/index.html @@ -0,0 +1,21 @@ +使用Gulp压缩Hexo博客静态资源 | Alderaan的博客
0%

使用Gulp压缩Hexo博客静态资源

概述

​ 由于博客使用的插件较多,文章内包含的图片越多越大,会影响到博客的加载速度,影响访问效果。其中图片对文章加载速度影响较大,如果可以的话,可以使用国内的一些图床,但如果图床挂了,也会导致图片无法访问,迁移麻烦等,所以本博客还是挂在Github上进行访问。为此开始从资源文件大小上进行优化,了解到可以使用Gulp对博客的js、css、img、html等静态资源文件进行压缩。

Gulp全局安装

1
$ npm install gulp -g

​ 本博客安装的Gulp版本为4.0.2。

Gulp插件安装

​ 在blog文件夹(站点根目录)下,安装必备的插件:

1
$ npm install gulp gulp-minify-css gulp-uglify gulp-htmlmin gulp-htmlclean gulp-imagemin --save

​ 安装完成后,可以在package.json下查看到具体的插件版本信息,本博客的插件版本对应信息如下:

1
2
3
4
5
6
7
8
"dependencies": {
"gulp": "^4.0.2",
"gulp-htmlclean": "^2.7.22",
"gulp-htmlmin": "^5.0.1",
"gulp-imagemin": "^7.1.0",
"gulp-minify-css": "^1.2.4",
"gulp-uglify": "^3.0.2"
}

创建gulpfile.js文件

​ 在blog文件夹(站点根目录)下,新建gulpfile.js文件,并编写如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// 引入需要的模块
var gulp = require('gulp');
var minifycss = require('gulp-minify-css');
var uglify = require('gulp-uglify');
var htmlmin = require('gulp-htmlmin');
var htmlclean = require('gulp-htmlclean');
var imagemin = require('gulp-imagemin');

// 压缩public目录下所有html文件, minify-html是任务名, 设置为default,启动gulp压缩的时候可以省去任务名
gulp.task('minify-html', function() {
return gulp.src('./public/**/*.html') // 压缩文件所在的目录
.pipe(htmlclean())
.pipe(htmlmin({
removeComments: true,
minifyJS: true,
minifyCSS: true,
minifyURLs: true,
}))
.pipe(gulp.dest('./public')) // 输出的目录
});

// 压缩css
gulp.task('minify-css', function() {
return gulp.src(['./public/**/*.css','!./public/js/**/*min.css'])
.pipe(minifycss({
compatibility: 'ie8'
}))
.pipe(gulp.dest('./public'));
});
// 压缩js
gulp.task('minify-js', function() {
return gulp.src(['./public/**/.js','!./public/js/**/*min.js'])
.pipe(uglify())
.pipe(gulp.dest('./public'));
});
// 压缩图片
gulp.task('minify-images', function() {
return gulp.src(['./public/**/*.png','./public/**/*.jpg','./public/**/*.gif'])
.pipe(imagemin(
[imagemin.gifsicle({'optimizationLevel': 3}),
imagemin.mozjpeg({'progressive': true}),
imagemin.optipng({'optimizationLevel': 5}),
imagemin.svgo()],
{'verbose': true}))
.pipe(gulp.dest('./public'))
});
// gulp 4.0 适用的方式
gulp.task('default', gulp.parallel('minify-html','minify-css','minify-js','minify-images'
));

​ 这里要注意,压缩过程中排除*min.css*min.js这两类文件,因为这些文件其他人已经经过处理,不需要再进行压缩,否则可能无法正常使用。其他人网上的脚本使用的是imagemin.jpegtran,由于gulp-imagemin在7.0.0开始,已经被替换为 mozjpeg,具体可以在release版本说明中查看。

压缩指令

1
2
3
4
$ hexo clean			// 可以先清除缓存文件和已生成的静态文件(特别是更换主题后需要执行此操作)
$ hexo generate // 生成博客
$ gulp default // 执行压缩,可简写为 gulp
$ hexo deploy // 压缩完成无错误后,就可以发布了

​ 在执行压缩过程中,可能会遇到压缩jpg、压缩png、压缩gif时的错误,或者提示类似于imagemin-*组件无法找到的错误。此时应该注意,gulp-imagemin也有对应的相关依赖,如本博客中版本为7.1.0,有以下特定版本的依赖

1
2
3
4
5
6
"optionalDependencies": {
"imagemin-gifsicle": "^7.0.0",
"imagemin-mozjpeg": "^8.0.0",
"imagemin-optipng": "^7.0.0",
"imagemin-svgo": "^7.0.0"
}

​ 若对应依赖组件的版本有问题,可能会导致压缩对应格式的图片出错,为此建议当出现某个组件压缩失败时,手动安装对应特定的版本,npm安装软件包特定版本的命令格式如下:

1
$ npm install imagemin-mozjpeg@8.0.0 // 在软件包后面加上@版本号

效果

​ 一次压缩过程输出内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
$ gulp
[21:55:01] Using gulpfile ~/Documents/blog/gulpfile.js
[21:55:01] Starting 'default'...
[21:55:01] Starting 'minify-html'...
[21:55:01] Starting 'minify-css'...
[21:55:01] Starting 'minify-js'...
[21:55:01] Starting 'minify-images'...
[21:55:02] Finished 'minify-js' after 1.01 s
[21:55:03] Finished 'minify-css' after 1.75 s
[21:55:03] gulp-imagemin: ✔ images/apple-touch-icon-next.png (saved 190 B - 12.3%)
[21:55:03] gulp-imagemin: ✔ images/favicon-16x16-next.png (saved 150 B - 34.5%)
[21:55:03] gulp-imagemin: ✔ images/avatar.jpg (saved 3.69 kB - 18.6%)
[21:55:03] gulp-imagemin: ✔ images/favicon-32x32-next.png (saved 152 B - 23.8%)
[21:55:04] gulp-imagemin: ✔ 2020/05/03/hexo-install-and-deploy/20200503-114433.jpg (saved 51.1 kB - 54.5%)
[21:55:04] gulp-imagemin: ✔ 2020/05/03/hexo-install-and-deploy/20200503-202546.jpg (saved 21.3 kB - 47.3%)
[21:55:04] gulp-imagemin: ✔ 2020/05/03/hexo-install-and-deploy/20200503-200236.jpg (saved 40.2 kB - 51%)
[21:55:04] gulp-imagemin: ✔ 2020/05/03/hexo-install-and-deploy/20200503-193801.jpg (saved 51 kB - 53%)
[21:55:04] gulp-imagemin: ✔ 2020/05/03/hexo-install-and-deploy/20200503-111152.jpg (saved 80.1 kB - 56.7%)
[21:55:04] gulp-imagemin: ✔ images/avatar.gif (saved 8 B - 0.4%)
[21:55:04] gulp-imagemin: ✔ 2020/05/03/hexo-install-and-deploy/20200503-203256.jpg (saved 17.2 kB - 43.5%)
[21:55:04] gulp-imagemin: ✔ 2020/05/03/hexo-install-and-deploy/20200503-205440.jpg (saved 18.5 kB - 47.4%)
[21:55:04] gulp-imagemin: ✔ 2020/05/03/hexo-install-and-deploy/20200503-200812.jpg (saved 49.4 kB - 52.7%)
[21:55:04] gulp-imagemin: ✔ 2020/05/03/hexo-install-and-deploy/20200503-202952.jpg (saved 49.6 kB - 52.5%)
[21:55:04] gulp-imagemin: Minified 14 images (saved 383 kB - 51.3%)
[21:55:04] Finished 'minify-html' after 3.13 s
[21:55:04] Finished 'minify-images' after 3.13 s
[21:55:04] Finished 'default' after 3.14 s

index.html在压缩前的大小为37,326字节,压缩后为33,537字节;utils.js在压缩前的大小为15,982字节,压缩后仍为 15,982字节;main.css在压缩前大小为49,538字节,压缩后为38,183字节。

​ 由本次压缩可看出,Gulp对图片的压缩效果比较明显,在html、css、js上也有一定的效果,总体上讲还是有比较好的优化。

\ No newline at end of file diff --git a/2020/05/07/ssh-to-git-github-com-connection-reset/index.html b/2020/05/07/ssh-to-git-github-com-connection-reset/index.html index 2b3fd1179214db4e6bd8efb5137aa03dec07c191..9052c56e12843a7105178e17f5ac848516cf2322 100644 --- a/2020/05/07/ssh-to-git-github-com-connection-reset/index.html +++ b/2020/05/07/ssh-to-git-github-com-connection-reset/index.html @@ -1,4 +1,4 @@ -ssh -T git@github.com Connection reset by XXX port 22 | Alderaan的博客
0%

ssh -T git@github.com Connection reset by XXX port 22

概述

​ 今天在用Hexo发布博客文章时,遇到上传Github失败问题,主要提示为

1
2
3
4
5
Connection reset by 52.74.223.119
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

问题发现

​ 由于已经在Git bash中配置过SSH免密访问,且已正常使用过也没有进行修改,所以排除SSH key配置问题。怀疑是无法连接到github.com,尝试执行ssh -T git@github.com得到如下结果:

1
2
$ ssh -T git@github.com
Connection reset by 52.74.223.119 port 22

​ 竟然真的无法SSH连接到github.com???增加-v选项查看一下详细信息,反馈如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$ ssh -T -v git@github.com
OpenSSH_8.0p1, OpenSSL 1.1.1c 28 May 2019
debug1: Reading configuration data /c/Users/Alder/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to github.com [52.74.223.119] port 22.
debug1: Connection established.
debug1: identity file /c/Users/Alder/.ssh/id_rsa type 0
debug1: identity file /c/Users/Alder/.ssh/id_rsa-cert type -1
debug1: identity file /c/Users/Alder/.ssh/id_dsa type -1
debug1: identity file /c/Users/Alder/.ssh/id_dsa-cert type -1
debug1: identity file /c/Users/Alder/.ssh/id_ecdsa type -1
debug1: identity file /c/Users/Alder/.ssh/id_ecdsa-cert type -1
debug1: identity file /c/Users/Alder/.ssh/id_ed25519 type -1
debug1: identity file /c/Users/Alder/.ssh/id_ed25519-cert type -1
debug1: identity file /c/Users/Alder/.ssh/id_xmss type -1
debug1: identity file /c/Users/Alder/.ssh/id_xmss-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_8.0
debug1: Remote protocol version 2.0, remote software version babeld-d45c1532
debug1: no match: babeld-d45c1532
debug1: Authenticating to github.com:22 as 'git'
debug1: SSH2_MSG_KEXINIT sent
Connection reset by 52.74.223.119 port 22

问题解决

​ 在Windows系统下,打开控制面板->系统和安全->Windows Defender 防火墙->高级设置,选择入站规则,点击新建规则,选择端口,在特定本地端口写入22,连续选择下一步三次,输入一个名称(随意命名规则),点击完成,然后再执行命令得到如下格式结果:

1
2
$ ssh -T git@github.com
Hi XXX! You've successfully authenticated, but GitHub does not provide shell access.

​ 再尝试发布Hexo博客到Github就可以正常上传了…暂时不知道这其中的原理,即使将刚添加的规则删除了,再打开新的Git bash窗口也不会出现Connection reset错误了。。。

ssh -T git@github.com Connection reset by XXX port 22 | Alderaan的博客
0%

ssh -T git@github.com Connection reset by XXX port 22

概述

​ 今天在用Hexo发布博客文章时,遇到上传Github失败问题,主要提示为

1
2
3
4
5
Connection reset by 52.74.223.119
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

问题发现

​ 由于已经在Git bash中配置过SSH免密访问,且已正常使用过也没有进行修改,所以排除SSH key配置问题。怀疑是无法连接到github.com,尝试执行ssh -T git@github.com得到如下结果:

1
2
$ ssh -T git@github.com
Connection reset by 52.74.223.119 port 22

​ 竟然真的无法SSH连接到github.com???增加-v选项查看一下详细信息,反馈如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$ ssh -T -v git@github.com
OpenSSH_8.0p1, OpenSSL 1.1.1c 28 May 2019
debug1: Reading configuration data /c/Users/Alder/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to github.com [52.74.223.119] port 22.
debug1: Connection established.
debug1: identity file /c/Users/Alder/.ssh/id_rsa type 0
debug1: identity file /c/Users/Alder/.ssh/id_rsa-cert type -1
debug1: identity file /c/Users/Alder/.ssh/id_dsa type -1
debug1: identity file /c/Users/Alder/.ssh/id_dsa-cert type -1
debug1: identity file /c/Users/Alder/.ssh/id_ecdsa type -1
debug1: identity file /c/Users/Alder/.ssh/id_ecdsa-cert type -1
debug1: identity file /c/Users/Alder/.ssh/id_ed25519 type -1
debug1: identity file /c/Users/Alder/.ssh/id_ed25519-cert type -1
debug1: identity file /c/Users/Alder/.ssh/id_xmss type -1
debug1: identity file /c/Users/Alder/.ssh/id_xmss-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_8.0
debug1: Remote protocol version 2.0, remote software version babeld-d45c1532
debug1: no match: babeld-d45c1532
debug1: Authenticating to github.com:22 as 'git'
debug1: SSH2_MSG_KEXINIT sent
Connection reset by 52.74.223.119 port 22

问题解决

​ 在Windows系统下,打开控制面板->系统和安全->Windows Defender 防火墙->高级设置,选择入站规则,点击新建规则,选择端口,在特定本地端口写入22,连续选择下一步三次,输入一个名称(随意命名规则),点击完成,然后再执行命令得到如下格式结果:

1
2
$ ssh -T git@github.com
Hi XXX! You've successfully authenticated, but GitHub does not provide shell access.

​ 再尝试发布Hexo博客到Github就可以正常上传了…暂时不知道这其中的原理,即使将刚添加的规则删除了,再打开新的Git bash窗口也不会出现Connection reset错误了。。。

\ No newline at end of file +
\ No newline at end of file diff --git a/2020/05/10/mw150us-2-0-mac-driver/07576FCDC43828BAE9BB5A2FC846FA97.jpg b/2020/05/10/mw150us-2-0-mac-driver/07576FCDC43828BAE9BB5A2FC846FA97.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7784d8241b8b399eddd15102283932939f4e8037 Binary files /dev/null and b/2020/05/10/mw150us-2-0-mac-driver/07576FCDC43828BAE9BB5A2FC846FA97.jpg differ diff --git a/2020/05/10/mw150us-2-0-mac-driver/20200510-221203.png b/2020/05/10/mw150us-2-0-mac-driver/20200510-221203.png new file mode 100644 index 0000000000000000000000000000000000000000..410420437f7d1edf2eda78c361946f8b6ffdae35 Binary files /dev/null and b/2020/05/10/mw150us-2-0-mac-driver/20200510-221203.png differ diff --git a/2020/05/10/mw150us-2-0-mac-driver/20200510-221615.png b/2020/05/10/mw150us-2-0-mac-driver/20200510-221615.png new file mode 100644 index 0000000000000000000000000000000000000000..92368d8ed1b5045ef682ed0c30f98908f8220611 Binary files /dev/null and b/2020/05/10/mw150us-2-0-mac-driver/20200510-221615.png differ diff --git a/2020/05/10/mw150us-2-0-mac-driver/20200510-221624.png b/2020/05/10/mw150us-2-0-mac-driver/20200510-221624.png new file mode 100644 index 0000000000000000000000000000000000000000..ede57d4de11b94eb67419419219262f76ae94b33 Binary files /dev/null and b/2020/05/10/mw150us-2-0-mac-driver/20200510-221624.png differ diff --git a/2020/05/10/mw150us-2-0-mac-driver/20200510-221648.png b/2020/05/10/mw150us-2-0-mac-driver/20200510-221648.png new file mode 100644 index 0000000000000000000000000000000000000000..116ea4f72953c602fb5d6c7db6dd2ae9014a7828 Binary files /dev/null and b/2020/05/10/mw150us-2-0-mac-driver/20200510-221648.png differ diff --git a/2020/05/10/mw150us-2-0-mac-driver/20200510-221657.png b/2020/05/10/mw150us-2-0-mac-driver/20200510-221657.png new file mode 100644 index 0000000000000000000000000000000000000000..53b3588558b46c89e81c815d3b7524ece243a081 Binary files /dev/null and b/2020/05/10/mw150us-2-0-mac-driver/20200510-221657.png differ diff --git a/2020/05/10/mw150us-2-0-mac-driver/20200510-221713.png b/2020/05/10/mw150us-2-0-mac-driver/20200510-221713.png new file mode 100644 index 0000000000000000000000000000000000000000..96bd0460bedce13a81d08ac60f9332ebfa0a0767 Binary files /dev/null and b/2020/05/10/mw150us-2-0-mac-driver/20200510-221713.png differ diff --git a/2020/05/10/mw150us-2-0-mac-driver/20200510-221729.png b/2020/05/10/mw150us-2-0-mac-driver/20200510-221729.png new file mode 100644 index 0000000000000000000000000000000000000000..409ae86c62672529773a4428342696f7385ce55f Binary files /dev/null and b/2020/05/10/mw150us-2-0-mac-driver/20200510-221729.png differ diff --git a/2020/05/10/mw150us-2-0-mac-driver/20200510-222045.png b/2020/05/10/mw150us-2-0-mac-driver/20200510-222045.png new file mode 100644 index 0000000000000000000000000000000000000000..cfacf641ded4078a255f4da7bba1ad05db5c6dfb Binary files /dev/null and b/2020/05/10/mw150us-2-0-mac-driver/20200510-222045.png differ diff --git a/2020/05/10/mw150us-2-0-mac-driver/20200510-224242.png b/2020/05/10/mw150us-2-0-mac-driver/20200510-224242.png new file mode 100644 index 0000000000000000000000000000000000000000..d6f3e8da4025ac55b9f4ff3a14aea2c16bb84c8a Binary files /dev/null and b/2020/05/10/mw150us-2-0-mac-driver/20200510-224242.png differ diff --git a/2020/05/10/mw150us-2-0-mac-driver/20200510-224641.png b/2020/05/10/mw150us-2-0-mac-driver/20200510-224641.png new file mode 100644 index 0000000000000000000000000000000000000000..94bbe56dceb741d807d0a5910fb42c346446a592 Binary files /dev/null and b/2020/05/10/mw150us-2-0-mac-driver/20200510-224641.png differ diff --git a/2020/05/10/mw150us-2-0-mac-driver/index.html b/2020/05/10/mw150us-2-0-mac-driver/index.html new file mode 100644 index 0000000000000000000000000000000000000000..08a71965566c27300adc606682fed959de2525ee --- /dev/null +++ b/2020/05/10/mw150us-2-0-mac-driver/index.html @@ -0,0 +1,21 @@ +水星USB无线网卡mw150us苹果macOS系统驱动成功 | Alderaan的博客
0%

水星USB无线网卡mw150us苹果macOS系统驱动成功

概述

​ 之前修好后的MacBook Pro (13-inch, Mid 2010),去年开始就发现偶尔找不到自带的无线网卡,用着也还经常死机。屏蔽了无线功能后,一直只能有线上网。最近终于忍不住,要无线上网了。。。由于囊中羞涩,先找了一块MERCURY(水星)的usb无线网卡MW150US 2.0 (170107),想在macOS Hight Sierra 10.13.5上驱动它。

基本信息

​ 由于水星这款网卡,不同时期生产的是不一样的芯片,我手头上这块是这样子的:

水星无线网卡图片

​ 在苹果系统上的硬件信息如下:

1
2
3
4
5
6
7
8
9
10
11
12
802.11n NIC:

产品 ID: 0x8179
厂商 ID: 0x0bda (Realtek Semiconductor Corp.)
版本: 0.00
序列号: 00E04C0001
速度: 最大 480 Mb/秒
制造商: Realtek
位置 ID: 0x24100000 / 1
可用电流 (mA): 500
所需电流 (mA): 500
额外的操作电流 (mA): 0

​ 在Windows系统上,驱动后显示的网卡名称包含rtl 8188eu字眼,成功得到对应芯片型号信息。

寻找驱动

​ 一开始在网上下载一些别人试过的Mac版本驱动,安装后仍无法使用,有可能是我的系统版本比较新的缘故。转而开始从芯片版本入手,查找其他也使用了这款芯片的厂家,看是否有对应的macOS驱动。后来了解到,Edimax这个厂家的EW-7811Un 这款 USB 无线网卡,采用了类似芯片,也是最高150Mbps。在Download页面上有如下的驱动列表:

VersionNoteDateFile TypeFile Size
v1.0.1.4Support OS:MAC 10.7/10.8/10.9/10.10/10.11 Languages:English2016-02-24ZIP10.30 MBimg
v1.0.0.1Support OS:Raspberry Pi2 Win10 IoT Languages:English2015-12-21ZIP1.65 MBimg
v1.0.0.5Support OS:Windows XP/Vista Languages:English2015-12-17ZIP26.81 MBimg
v1.0.0.5Support OS:MAC 10.4/10.5/10.6 Languages:English2012-12-12ZIP24.73 MBimg
1.0.1.6Support OS:Windows 7/8/8.1/10 Languages:English2019-10-21ZIP49.75 MBimg
1.0.1.8Support OS:MAC 10.13 Languages:English2018-09-17ZIP12.03 MBimg
1.0.1.9EW-7811Un_Linux_Wi-Fi_Driver_1.0.1.9 Support Kernel : 2.6.18 ~ 4.4.32018-06-13ZIP1.08 MBimg
1.0.1.5Support OS:MAC 10.12 Languages:English2016-12-20ZIP10.70 MBimg

​ 刚好有1.0.1.8这个版本可以支持macOS 10.13,直接下载解压后,有如下四个文件:

压缩包解压后文件夹图片

安装驱动

​ 双击Installer.pkg安装驱动

压缩包解压后文件夹图片

​ 选择继续

压缩包解压后文件夹图片

​ 选择继续,会弹出如下窗口

压缩包解压后文件夹图片

​ 同意软件许可协议中的条款

压缩包解压后文件夹图片

​ 点击安装开始执行安装,这个过程可能需要几分钟,耐心等待

压缩包解压后文件夹图片

​ 安装完成后会提示需要重新启动,同时在第一次运行会提示需要有额外的权限,允许即可。

完成

​ 如果安装完成,在右上侧状态栏中会出现新的图标,插上USB网卡,成功驱动后会显示周围的WiFi网络:

驱动成功周围WiFi信息截图

​ 打开Wireless Utility显示信息如下,左上角的图标和网上其他人发的那些驱动图标一模一样:

Wireless Utility显示信息截图

​ 现在就可以开心地重新享受无线上网了,其他81XX芯片型号的网卡也可以试试这个厂家的驱动,对于黑苹果用户也可以参考使用。

\ No newline at end of file diff --git a/2020/05/11/centos7-6-use-meig-4G-module-slm750/index.html b/2020/05/11/centos7-6-use-meig-4G-module-slm750/index.html new file mode 100644 index 0000000000000000000000000000000000000000..914fc1484f7965f1188e96b3bb3d849e030a325a --- /dev/null +++ b/2020/05/11/centos7-6-use-meig-4G-module-slm750/index.html @@ -0,0 +1,21 @@ +Centos 7.6 下使用美格SLM750(4G模块)拨号上网 | Alderaan的博客
0%

Centos 7.6 下使用美格SLM750(4G模块)拨号上网

概述

​ 想要实现4G上网有两种方式,要么加多一个4G路由器,再通过优先接入;要么通过增加4G模块(可为USB或PCIE等多种接口),直接进行拨号上网。尝试在一款J1900工控机上(该工控机自带SIM插槽),通过增加PCIE接口的美格4G模块SLM750,进行拨号上网。Windows系统下已测试过,直接安装厂家提供驱动,可以正常上网,说明硬件方面是完全支持的。本文参照厂家提供的嵌入式方案,进行驱动编译安装,并编译拨号软件,最终实现工控机4G上网功能。

准备

​ 系统为Cento 7.6 64bit,基本环境为Basic Web Server安装(理论上与安装环境模式无关,最小安装也可以)。需要下载内核源码,Centos 7.6的内核版本为3.10.0-957,源码可在此链接下载。另外还需要厂家提供的GobiNet网卡拨号的驱动及拨号工具源码,一张能4G上网的手机卡或物联网卡,接好模块天线。

编译内核源码

​ 将下载好的源码,解压到看到linux-3.10.0-957.21.3.el7.tar.xz文件,将其放到/usr/src/kernels文件夹下,并执行如下命令:

1
2
$ tar xvf linux-3.10.0-957.21.3.el7.tar.xz // 解压内核源码文件
$ mv linux-3.10.0-957.21.3.el7 3.10.0-957.el7.x86_64 // 重命名文件夹

​ 之所以要更改文件夹名称,是因为厂家的GobiNet驱动源码,Makefile文件中:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
obj-m := GobiNet.o
GobiNet-objs := GobiUSBNet.o QMIDevice.o QMI.o

PWD := $(shell pwd)
OUTPUTDIR=/lib/modules/`uname -r`/kernel/drivers/net/usb/

#ifeq ($(ARCH),)
#EARCH := $(shell uname -m)
#endif
#ifeq ($(CROSS_COMPILE),)
#CROSS_COMPILE :=
#endif
#ifeq ($(KDIR),)
KDIR := /lib/modules/$(shell uname -r)/build # 这里通过uname -r 获取了内核名称
#endif

default:
# ln -sf makefile Makefile
#$(MAKE) ARCH=${ARCH} CROSS_COMPILE=${CROSS_COMPILE} -C $(KDIR) M=$(PWD) modules
$(MAKE) CROSS_COMPILE=${CROSS_COMPILE} -C $(KDIR) M=$(PWD) modules

install: default
mkdir -p $(OUTPUTDIR)
cp -f GobiNet.ko $(OUTPUTDIR)
depmod
modprobe -r GobiNet
modprobe GobiNet

clean:
# rm -rf Makefile # 这里这段代码去掉,否则执行make clean会把Makefile文件也删除了
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions Module.* modules.order

​ 如果为其他版本的系统,将文件夹对应修改为uname -r得到的名称即可。

添加串口的ID

​ 打开内核源码文件 /3.10.0-957.el7.x86_64/drivers/usb/serial/option.c,在/* Vendor and product IDs */下增加宏定义:

1
2
3
4
5
6
7
/* Vendor and product IDs */

#define MEIG_VENDOR_ID 0x05C6
#define MEIG_PRODUCT_730 0xF601
#define MEIG_VENDOR_ID_720 0x2dee
#define MEIG_PRODUCT_720 0x4d07
#define MEIG_PRODUCT_720_ECM 0x4d02

​ 在option_ids结构体数组增加4G模块的VIDPID

1
2
3
4
static const struct usb_device_id option_ids[] = {
{ USB_DEVICE(MEIG_VENDOR_ID,MEIG_PRODUCT_730) },
{ USB_DEVICE(MEIG_VENDOR_ID_720,MEIG_PRODUCT_720) },
{ USB_DEVICE(MEIG_VENDOR_ID_720,MEIG_PRODUCT_720_ECM) },

删除NDIS和ADB端口

​ 使用option驱动,修改 /3.10.0-957.el7.x86_64/driver/usb/serial/option.c,在option_probe函数添加如下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
static int option_probe(struct usb_serial *serial,
const struct usb_device_id *id)
{
struct usb_interface_descriptor *iface_desc =
&serial->interface->cur_altsetting->desc;
struct usb_device_descriptor *dev_desc = &serial->dev->descriptor;
const struct option_blacklist_info *blacklist;

/* Never bind to the CD-Rom emulation interface */
if (iface_desc->bInterfaceClass == 0x08)
return -ENODEV;

/*
* Don't bind reserved interfaces (like network ones) which often have
* the same class/subclass/protocol as the serial interfaces. Look at
* the Windows driver .INF files for reserved interface numbers.
*/
blacklist = (void *)id->driver_info;
if (blacklist && test_bit(iface_desc->bInterfaceNumber,
&blacklist->reserved))
return -ENODEV;

// struct usb_wwan_intf_private *data; 文档中的这个语句其实没有
// 开始添加代码
if (serial->dev->descriptor.idVendor == MEIG_VENDOR_ID &&
(serial->dev->descriptor.idProduct == MEIG_PRODUCT_730)&&
serial->interface->cur_altsetting->desc.bInterfaceNumber >= 4)
return -ENODEV;

if (serial->dev->descriptor.idVendor == MEIG_VENDOR_ID_720&&
(serial->dev->descriptor.idProduct == MEIG_PRODUCT_720)&&
serial->interface->cur_altsetting->desc.bInterfaceNumber >= 4)
return -ENODEV;
// 完成添加代码

使用usb-serial驱动,/3.10.0-957.el7.x86_64/driver/usb/serial/usb-serial.c,在usb_serial_probe函数添加如下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    serial = create_serial (dev, interface, type); 
if (!serial) {
unlock_kernel();
dev_err(&interface->dev, "%s - out of memory\n", __FUNCTION__);
return -ENOMEM;
}
//开始添加代码 厂家文档写的是宏定义,在该文件中无法找到会报错,这里直接改成了对应值
if ( (serial->dev->descriptor.idVendor == 0x50C6 &&
(serial->dev->descriptor.idProduct == 0xF601) )&&
serial->interface->cur_altsetting->desc.bInterfaceNumber >=4 )
return -ENOMEM;

if (serial->dev->descriptor.idVendor == 0x2dee &&
(serial->dev->descriptor.idProduct == 0x4d07)&&
serial->interface->cur_altsetting->desc.bInterfaceNumber >= 4)
return -ENODEV;
//完成添加代码
### 配置编译参数
1
2
3
4
$ cd /usr/src/kernels/3.10.0-957.el7.x86_64  # 切换到内核源码所在路径
$ cp /boot/config-3.10.0-957.el7.x86_64 ./.config # 拷贝当前内核的编译配置
$ make oldconfig # 在已有内核基础上进行配置
$ yum install gcc gdb make elfutils-libelf-devel

​ 需要说明的是,Centos 6.7默认就开启了device drivers->usb support->usb serial converter support->USB driver for GSM and CDMA modemsdevice drivers->Network device support->usb Network Adapters->Multi-purpose USB Networking Framework这两个组件,所以拷贝原有内核的编译配置即可使用。

开始编译

​ 执行如下命令开始编译源码,对应的线程数字按照实际机器进行配置,这个过程会比较慢。

1
$ make -j 8

​ 如果有其他错误提示,则安装对应的软件包依赖即可,这里编译后不进行安装,因为内核是一样的,编译内核只是为了编译驱动时能找到一些依赖。

编译NDIS驱动

​ 这里采用的是单独编译的方式,所以上一个步骤没有和内核一块打包编译,主要是为了在不动原来内核的情况下使用,以防上面的其他软件运行受影响。

​ 到驱动目录下,执行如下命令:

1
2
$ make # 编译驱动
$ make install # 安装驱动

​ 正常编译安装的话,不会有其他的警告或者错误,驱动成功后,可以看到新的网卡。一般是ethX这种格式,但还没有IP地址,需要使用拨号软件。

编译Gobinet拨号工具

​ 在厂家提供的源码中,由于是嵌入式的方案,默认获取IP地址的是busybox中的udhcpc命令,在udhcpc.c文件中,可以注释掉这样代码,以及这行代码上面两行的寻找默认配置文件的语句。本文管理网卡的工具是NetworkManager,Gobinet拨号后,会自动检测网卡状态,进行获取IP地址操作。其它系统根据实际需要,进行修改。本文做出的修改如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
if (profile->ipv4.Address) {
#ifdef USE_DHCLIENT
snprintf(udhcpc_cmd, sizeof(udhcpc_cmd), "dhclient -4 -d --no-pid %s", ifname);
dhclient_alive++;
#else
// 注释掉获取默认配置文件
//if (access("/usr/share/udhcpc/default.script", X_OK)) {
// dbg_time("Fail to access /usr/share/udhcpc/default.script, errno: %d (%s)", errno, strerror(errno));
//}

//-f,--foreground Run in foreground
//-b,--background Background if lease is not obtained
//-n,--now Exit if lease is not obtained
//-q,--quit Exit after obtaining lease
//-t,--retries N Send up to N discover packets (default 3)
// 注释定义的获取IP命令
//snprintf(udhcpc_cmd, sizeof(udhcpc_cmd), "busybox udhcpc -f -n -q -t 5 -i %s", ifname);
#endif
// 注释掉命令线程
//pthread_create(&udhcpc_thread_id, &udhcpc_thread_attr, udhcpc_thread_function, (void*)strdup(udhcpc_cmd));
sleep(1);
}

​ 执行如下命令编译拨号工具

1
2
$ make # 编译
$ ./MeiG-CM & # 后台执行拨号工具

​ 如果拨号成功,可以看到对应的网卡会获取到IP地址,并可以正常上网。

服务化拨号工具

​ 可以使用systemctl管理拨号工具,新建一个文件MeiG-CM.service,并写入如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
[Unit]
Description=quectel-CM Service
After=network.target

[Service]
Type=simple
User=root
Restart=always
RestartSec=5s
ExecStart=/home/MeiG-CM/MeiG-CM # 这里更改为对应的可执行文件所在路径

[Install]
WantedBy=multi-user.target

​ 执行以下命令可配置服务并设置开机自启动:

1
2
3
4
$ cp MeiG-CM.service /usr/lib/systemd/system/ # 拷贝服务文件到系统目录
$ systemctl daemon-reload # 重新检测加载服务,使其被系统识别到
$ systemctl start MeiG-CM.service # 手动启动服务
$ systemctl enable MeiG-CM.service # 配置开机自启动

​ 至此,在Centos 7.6上就可以自动配置MeiG SLM50 4G模块上网。如果卡被停用后·再启用,也不需要重新启动机器,会自动重新拨号。

\ No newline at end of file diff --git a/about/index.html b/about/index.html index 388fb31ecc3fd06f842aeda21ea4e93577dfb97b..ba6588375b7ac4f358be9396fc9ce4875898b817 100644 --- a/about/index.html +++ b/about/index.html @@ -18,4 +18,4 @@ localStorage.setItem('comments_active', commentClass); }); } - \ No newline at end of file + \ No newline at end of file diff --git a/archives/2020/05/index.html b/archives/2020/05/index.html index 5986bf93de88dc6fc6242f33b6997625ceec46e6..664e6ee482db95d4401ed786e5cbe4839d7471fd 100644 --- a/archives/2020/05/index.html +++ b/archives/2020/05/index.html @@ -1,4 +1,4 @@ -归档 | Alderaan的博客
0%
嗯..! 目前共计 3 篇日志。 继续努力。
2020
归档 | Alderaan的博客
0%
\ No newline at end of file +
\ No newline at end of file diff --git a/archives/2020/index.html b/archives/2020/index.html index be9eeb4a6027c328dcabd771fa2e96d5598bdb54..e452613904328ef19481bc46d03404a3f1d92d4f 100644 --- a/archives/2020/index.html +++ b/archives/2020/index.html @@ -1,4 +1,4 @@ -归档 | Alderaan的博客
0%
嗯..! 目前共计 3 篇日志。 继续努力。
2020
归档 | Alderaan的博客
0%
\ No newline at end of file +
\ No newline at end of file diff --git a/archives/index.html b/archives/index.html index ae1aa3a413b80d384804eb5d1af070a539bae626..cfa123ddb8149c6f37df890dd703f43273f94e6c 100644 --- a/archives/index.html +++ b/archives/index.html @@ -1,4 +1,4 @@ -归档 | Alderaan的博客
0%
嗯..! 目前共计 3 篇日志。 继续努力。
2020
归档 | Alderaan的博客
0%
\ No newline at end of file +
\ No newline at end of file diff --git a/atom.xml b/atom.xml index 2f825f25d3917a5f56808215ebc8b3768827c763..280596b368fc00103d7d78df6cfa5f5c77db8dc5 100644 --- a/atom.xml +++ b/atom.xml @@ -6,7 +6,7 @@ - 2020-05-07T06:18:27.046Z + 2020-05-11T14:45:28.589Z https://alderaan.xyz/ @@ -16,6 +16,85 @@ Hexo + + Centos 7.6 下使用美格SLM750(4G模块)拨号上网 + + https://alderaan.xyz/2020/05/11/centos7-6-use-meig-4G-module-slm750/ + 2020-05-11T09:40:13.000Z + 2020-05-11T14:45:28.589Z + + 概述

​ 想要实现4G上网有两种方式,要么加多一个4G路由器,再通过优先接入;要么通过增加4G模块(可为USB或PCIE等多种接口),直接进行拨号上网。尝试在一款J1900工控机上(该工控机自带SIM插槽),通过增加PCIE接口的美格4G模块SLM750,进行拨号上网。Windows系统下已测试过,直接安装厂家提供驱动,可以正常上网,说明硬件方面是完全支持的。本文参照厂家提供的嵌入式方案,进行驱动编译安装,并编译拨号软件,最终实现工控机4G上网功能。

准备

​ 系统为Cento 7.6 64bit,基本环境为Basic Web Server安装(理论上与安装环境模式无关,最小安装也可以)。需要下载内核源码,Centos 7.6的内核版本为3.10.0-957,源码可在此链接下载。另外还需要厂家提供的GobiNet网卡拨号的驱动及拨号工具源码,一张能4G上网的手机卡或物联网卡,接好模块天线。

编译内核源码

​ 将下载好的源码,解压到看到linux-3.10.0-957.21.3.el7.tar.xz文件,将其放到/usr/src/kernels文件夹下,并执行如下命令:

1
2
$ tar xvf linux-3.10.0-957.21.3.el7.tar.xz // 解压内核源码文件
$ mv linux-3.10.0-957.21.3.el7 3.10.0-957.el7.x86_64 // 重命名文件夹

​ 之所以要更改文件夹名称,是因为厂家的GobiNet驱动源码,Makefile文件中:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
obj-m := GobiNet.o
GobiNet-objs := GobiUSBNet.o QMIDevice.o QMI.o

PWD := $(shell pwd)
OUTPUTDIR=/lib/modules/`uname -r`/kernel/drivers/net/usb/

#ifeq ($(ARCH),)
#EARCH := $(shell uname -m)
#endif
#ifeq ($(CROSS_COMPILE),)
#CROSS_COMPILE :=
#endif
#ifeq ($(KDIR),)
KDIR := /lib/modules/$(shell uname -r)/build # 这里通过uname -r 获取了内核名称
#endif

default:
#ln -sf makefile Makefile
#$(MAKE) ARCH=${ARCH} CROSS_COMPILE=${CROSS_COMPILE} -C $(KDIR) M=$(PWD) modules
$(MAKE) CROSS_COMPILE=${CROSS_COMPILE} -C $(KDIR) M=$(PWD) modules

install: default
mkdir -p $(OUTPUTDIR)
cp -f GobiNet.ko $(OUTPUTDIR)
depmod
modprobe -r GobiNet
modprobe GobiNet

clean:
# rm -rf Makefile # 这里这段代码去掉,否则执行make clean会把Makefile文件也删除了
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions Module.* modules.order

​ 如果为其他版本的系统,将文件夹对应修改为uname -r得到的名称即可。

添加串口的ID

​ 打开内核源码文件 /3.10.0-957.el7.x86_64/drivers/usb/serial/option.c,在/* Vendor and product IDs */下增加宏定义:

1
2
3
4
5
6
7
/* Vendor and product IDs */

#define MEIG_VENDOR_ID 0x05C6
#define MEIG_PRODUCT_730 0xF601
#define MEIG_VENDOR_ID_7200x2dee
#define MEIG_PRODUCT_7200x4d07
#define MEIG_PRODUCT_720_ECM0x4d02

​ 在option_ids结构体数组增加4G模块的VIDPID

1
2
3
4
static const struct usb_device_id option_ids[] = {
{ USB_DEVICE(MEIG_VENDOR_ID,MEIG_PRODUCT_730) },
{ USB_DEVICE(MEIG_VENDOR_ID_720,MEIG_PRODUCT_720) },
{ USB_DEVICE(MEIG_VENDOR_ID_720,MEIG_PRODUCT_720_ECM) },

删除NDIS和ADB端口

​ 使用option驱动,修改 /3.10.0-957.el7.x86_64/driver/usb/serial/option.c,在option_probe函数添加如下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
static int option_probe(struct usb_serial *serial,
const struct usb_device_id *id)
{
struct usb_interface_descriptor *iface_desc =
&serial->interface->cur_altsetting->desc;
struct usb_device_descriptor *dev_desc = &serial->dev->descriptor;
const struct option_blacklist_info *blacklist;

/* Never bind to the CD-Rom emulation interface*/
if (iface_desc->bInterfaceClass == 0x08)
return -ENODEV;

/*
* Don't bind reserved interfaces (like network ones) which often have
* the same class/subclass/protocol as the serial interfaces. Look at
* the Windows driver .INF files for reserved interface numbers.
*/
blacklist = (void *)id->driver_info;
if (blacklist && test_bit(iface_desc->bInterfaceNumber,
&blacklist->reserved))
return -ENODEV;

// struct usb_wwan_intf_private *data; 文档中的这个语句其实没有
// 开始添加代码
if (serial->dev->descriptor.idVendor == MEIG_VENDOR_ID &&
(serial->dev->descriptor.idProduct == MEIG_PRODUCT_730)&&
serial->interface->cur_altsetting->desc.bInterfaceNumber >= 4)
return -ENODEV;

if (serial->dev->descriptor.idVendor == MEIG_VENDOR_ID_720&&
(serial->dev->descriptor.idProduct == MEIG_PRODUCT_720)&&
serial->interface->cur_altsetting->desc.bInterfaceNumber >= 4)
return -ENODEV;
// 完成添加代码

使用usb-serial驱动,/3.10.0-957.el7.x86_64/driver/usb/serial/usb-serial.c,在usb_serial_probe函数添加如下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    serial = create_serial (dev, interface, type); 
if (!serial) {
unlock_kernel();
dev_err(&interface->dev, "%s - out of memory\n", __FUNCTION__);
return -ENOMEM;
}
//开始添加代码 厂家文档写的是宏定义,在该文件中无法找到会报错,这里直接改成了对应值
if ( (serial->dev->descriptor.idVendor == 0x50C6 &&
(serial->dev->descriptor.idProduct == 0xF601) )&&
serial->interface->cur_altsetting->desc.bInterfaceNumber >=4 )
return -ENOMEM;

if (serial->dev->descriptor.idVendor == 0x2dee &&
(serial->dev->descriptor.idProduct == 0x4d07)&&
serial->interface->cur_altsetting->desc.bInterfaceNumber >= 4)
return -ENODEV;
//完成添加代码
### 配置编译参数
1
2
3
4
$ cd /usr/src/kernels/3.10.0-957.el7.x86_64  # 切换到内核源码所在路径
$ cp /boot/config-3.10.0-957.el7.x86_64 ./.config # 拷贝当前内核的编译配置
$ make oldconfig # 在已有内核基础上进行配置
$ yum install gcc gdb make elfutils-libelf-devel

​ 需要说明的是,Centos 6.7默认就开启了device drivers->usb support->usb serial converter support->USB driver for GSM and CDMA modemsdevice drivers->Network device support->usb Network Adapters->Multi-purpose USB Networking Framework这两个组件,所以拷贝原有内核的编译配置即可使用。

开始编译

​ 执行如下命令开始编译源码,对应的线程数字按照实际机器进行配置,这个过程会比较慢。

1
$ make -j 8

​ 如果有其他错误提示,则安装对应的软件包依赖即可,这里编译后不进行安装,因为内核是一样的,编译内核只是为了编译驱动时能找到一些依赖。

编译NDIS驱动

​ 这里采用的是单独编译的方式,所以上一个步骤没有和内核一块打包编译,主要是为了在不动原来内核的情况下使用,以防上面的其他软件运行受影响。

​ 到驱动目录下,执行如下命令:

1
2
$ make # 编译驱动
$ make install # 安装驱动

​ 正常编译安装的话,不会有其他的警告或者错误,驱动成功后,可以看到新的网卡。一般是ethX这种格式,但还没有IP地址,需要使用拨号软件。

编译Gobinet拨号工具

​ 在厂家提供的源码中,由于是嵌入式的方案,默认获取IP地址的是busybox中的udhcpc命令,在udhcpc.c文件中,可以注释掉这样代码,以及这行代码上面两行的寻找默认配置文件的语句。本文管理网卡的工具是NetworkManager,Gobinet拨号后,会自动检测网卡状态,进行获取IP地址操作。其它系统根据实际需要,进行修改。本文做出的修改如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
if (profile->ipv4.Address) {
#ifdef USE_DHCLIENT
snprintf(udhcpc_cmd, sizeof(udhcpc_cmd), "dhclient -4 -d --no-pid %s", ifname);
dhclient_alive++;
#else
// 注释掉获取默认配置文件
//if (access("/usr/share/udhcpc/default.script", X_OK)) {
// dbg_time("Fail to access /usr/share/udhcpc/default.script, errno: %d (%s)", errno, strerror(errno));
//}

//-f,--foreground Run in foreground
//-b,--background Background if lease is not obtained
//-n,--now Exit if lease is not obtained
//-q,--quit Exit after obtaining lease
//-t,--retries N Send up to N discover packets (default 3)
// 注释定义的获取IP命令
//snprintf(udhcpc_cmd, sizeof(udhcpc_cmd), "busybox udhcpc -f -n -q -t 5 -i %s", ifname);
#endif
// 注释掉命令线程
//pthread_create(&udhcpc_thread_id, &udhcpc_thread_attr, udhcpc_thread_function, (void*)strdup(udhcpc_cmd));
sleep(1);
}

​ 执行如下命令编译拨号工具

1
2
$ make # 编译
$ ./MeiG-CM & # 后台执行拨号工具

​ 如果拨号成功,可以看到对应的网卡会获取到IP地址,并可以正常上网。

服务化拨号工具

​ 可以使用systemctl管理拨号工具,新建一个文件MeiG-CM.service,并写入如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
[Unit]
Description=quectel-CM Service
After=network.target

[Service]
Type=simple
User=root
Restart=always
RestartSec=5s
ExecStart=/home/MeiG-CM/MeiG-CM # 这里更改为对应的可执行文件所在路径

[Install]
WantedBy=multi-user.target

​ 执行以下命令可配置服务并设置开机自启动:

1
2
3
4
$ cp MeiG-CM.service /usr/lib/systemd/system/ # 拷贝服务文件到系统目录
$ systemctl daemon-reload # 重新检测加载服务,使其被系统识别到
$ systemctl start MeiG-CM.service # 手动启动服务
$ systemctl enable MeiG-CM.service # 配置开机自启动

​ 至此,在Centos 7.6上就可以自动配置MeiG SLM50 4G模块上网。如果卡被停用后·再启用,也不需要重新启动机器,会自动重新拨号。

]]>
+ + + + <h2 id="概述"><a href="#概述" class="headerlink" title="概述"></a>概述</h2><p>​ 想要实现4G上网有两种方式,要么加多一个4G路由器,再通过优先接入;要么通过增加4G模块(可为USB或PCIE等多种接口),直接进行拨号上网。尝试在一款J1900工控机上(该工控机自带SIM插槽),通过增加PCIE接口的美格4G模块<code>SLM750</code>,进行拨号上网。Windows系统下已测试过,直接安装厂家提供驱动,可以正常上网,说明硬件方面是完全支持的。本文参照厂家提供的嵌入式方案,进行驱动编译安装,并编译拨号软件,最终实现工控机4G上网功能。</p> + + + + + + + + + + + + + +
+ + + 水星USB无线网卡mw150us苹果macOS系统驱动成功 + + https://alderaan.xyz/2020/05/10/mw150us-2-0-mac-driver/ + 2020-05-10T07:04:06.000Z + 2020-05-11T06:20:15.584Z + + 概述

​ 之前修好后的MacBook Pro (13-inch, Mid 2010),去年开始就发现偶尔找不到自带的无线网卡,用着也还经常死机。屏蔽了无线功能后,一直只能有线上网。最近终于忍不住,要无线上网了。。。由于囊中羞涩,先找了一块MERCURY(水星)的usb无线网卡MW150US 2.0 (170107),想在macOS Hight Sierra 10.13.5上驱动它。

基本信息

​ 由于水星这款网卡,不同时期生产的是不一样的芯片,我手头上这块是这样子的:

水星无线网卡图片

​ 在苹果系统上的硬件信息如下:

1
2
3
4
5
6
7
8
9
10
11
12
802.11n NIC:

产品 ID:0x8179
厂商 ID:0x0bda (Realtek Semiconductor Corp.)
版本:0.00
序列号:00E04C0001
速度:最大 480 Mb/秒
制造商:Realtek
位置 ID:0x24100000 / 1
可用电流 (mA):500
所需电流 (mA):500
额外的操作电流 (mA):0

​ 在Windows系统上,驱动后显示的网卡名称包含rtl 8188eu字眼,成功得到对应芯片型号信息。

寻找驱动

​ 一开始在网上下载一些别人试过的Mac版本驱动,安装后仍无法使用,有可能是我的系统版本比较新的缘故。转而开始从芯片版本入手,查找其他也使用了这款芯片的厂家,看是否有对应的macOS驱动。后来了解到,Edimax这个厂家的EW-7811Un 这款 USB 无线网卡,采用了类似芯片,也是最高150Mbps。在Download页面上有如下的驱动列表:

VersionNoteDateFile TypeFile Size
v1.0.1.4Support OS:MAC 10.7/10.8/10.9/10.10/10.11 Languages:English2016-02-24ZIP10.30 MBimg
v1.0.0.1Support OS:Raspberry Pi2 Win10 IoT Languages:English2015-12-21ZIP1.65 MBimg
v1.0.0.5Support OS:Windows XP/Vista Languages:English2015-12-17ZIP26.81 MBimg
v1.0.0.5Support OS:MAC 10.4/10.5/10.6 Languages:English2012-12-12ZIP24.73 MBimg
1.0.1.6Support OS:Windows 7/8/8.1/10 Languages:English2019-10-21ZIP49.75 MBimg
1.0.1.8Support OS:MAC 10.13 Languages:English2018-09-17ZIP12.03 MBimg
1.0.1.9EW-7811Un_Linux_Wi-Fi_Driver_1.0.1.9 Support Kernel : 2.6.18 ~ 4.4.32018-06-13ZIP1.08 MBimg
1.0.1.5Support OS:MAC 10.12 Languages:English2016-12-20ZIP10.70 MBimg

​ 刚好有1.0.1.8这个版本可以支持macOS 10.13,直接下载解压后,有如下四个文件:

压缩包解压后文件夹图片

安装驱动

​ 双击Installer.pkg安装驱动

压缩包解压后文件夹图片

​ 选择继续

压缩包解压后文件夹图片

​ 选择继续,会弹出如下窗口

压缩包解压后文件夹图片

​ 同意软件许可协议中的条款

压缩包解压后文件夹图片

​ 点击安装开始执行安装,这个过程可能需要几分钟,耐心等待

压缩包解压后文件夹图片

​ 安装完成后会提示需要重新启动,同时在第一次运行会提示需要有额外的权限,允许即可。

完成

​ 如果安装完成,在右上侧状态栏中会出现新的图标,插上USB网卡,成功驱动后会显示周围的WiFi网络:

驱动成功周围WiFi信息截图

​ 打开Wireless Utility显示信息如下,左上角的图标和网上其他人发的那些驱动图标一模一样:

Wireless Utility显示信息截图

​ 现在就可以开心地重新享受无线上网了,其他81XX芯片型号的网卡也可以试试这个厂家的驱动,对于黑苹果用户也可以参考使用。

]]>
+ + + + <h2 id="概述"><a href="#概述" class="headerlink" title="概述"></a>概述</h2><p>​ 之前修好后的<strong>MacBook Pro (13-inch, Mid 2010)</strong>,去年开始就发现偶尔找不到自带的无线网卡,用着也还经常死机。屏蔽了无线功能后,一直只能有线上网。最近终于忍不住,要无线上网了。。。由于囊中羞涩,先找了一块<strong>MERCURY(水星)</strong>的usb无线网卡MW150US 2.0 (170107),想在<strong>macOS</strong> Hight Sierra 10.13.5上驱动它。</p> + + + + + + + + + + + + + +
+ + + 使用Gulp压缩Hexo博客静态资源 + + https://alderaan.xyz/2020/05/07/hexo-compress/ + 2020-05-07T13:06:42.000Z + 2020-05-11T06:20:15.584Z + + 概述

​ 由于博客使用的插件较多,文章内包含的图片越多越大,会影响到博客的加载速度,影响访问效果。其中图片对文章加载速度影响较大,如果可以的话,可以使用国内的一些图床,但如果图床挂了,也会导致图片无法访问,迁移麻烦等,所以本博客还是挂在Github上进行访问。为此开始从资源文件大小上进行优化,了解到可以使用Gulp对博客的js、css、img、html等静态资源文件进行压缩。

Gulp全局安装

1
$ npm install gulp -g

​ 本博客安装的Gulp版本为4.0.2。

Gulp插件安装

​ 在blog文件夹(站点根目录)下,安装必备的插件:

1
$ npm install gulp gulp-minify-css gulp-uglify gulp-htmlmin gulp-htmlclean gulp-imagemin --save

​ 安装完成后,可以在package.json下查看到具体的插件版本信息,本博客的插件版本对应信息如下:

1
2
3
4
5
6
7
8
"dependencies": {
"gulp": "^4.0.2",
"gulp-htmlclean": "^2.7.22",
"gulp-htmlmin": "^5.0.1",
"gulp-imagemin": "^7.1.0",
"gulp-minify-css": "^1.2.4",
"gulp-uglify": "^3.0.2"
}

创建gulpfile.js文件

​ 在blog文件夹(站点根目录)下,新建gulpfile.js文件,并编写如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// 引入需要的模块
var gulp = require('gulp');
var minifycss = require('gulp-minify-css');
var uglify = require('gulp-uglify');
var htmlmin = require('gulp-htmlmin');
var htmlclean = require('gulp-htmlclean');
var imagemin = require('gulp-imagemin');

// 压缩public目录下所有html文件, minify-html是任务名, 设置为default,启动gulp压缩的时候可以省去任务名
gulp.task('minify-html', function() {
return gulp.src('./public/**/*.html') // 压缩文件所在的目录
.pipe(htmlclean())
.pipe(htmlmin({
removeComments: true,
minifyJS: true,
minifyCSS: true,
minifyURLs: true,
}))
.pipe(gulp.dest('./public')) // 输出的目录
});

// 压缩css
gulp.task('minify-css', function() {
return gulp.src(['./public/**/*.css','!./public/js/**/*min.css'])
.pipe(minifycss({
compatibility: 'ie8'
}))
.pipe(gulp.dest('./public'));
});
// 压缩js
gulp.task('minify-js', function() {
return gulp.src(['./public/**/.js','!./public/js/**/*min.js'])
.pipe(uglify())
.pipe(gulp.dest('./public'));
});
// 压缩图片
gulp.task('minify-images', function() {
return gulp.src(['./public/**/*.png','./public/**/*.jpg','./public/**/*.gif'])
.pipe(imagemin(
[imagemin.gifsicle({'optimizationLevel': 3}),
imagemin.mozjpeg({'progressive': true}),
imagemin.optipng({'optimizationLevel': 5}),
imagemin.svgo()],
{'verbose': true}))
.pipe(gulp.dest('./public'))
});
// gulp 4.0 适用的方式
gulp.task('default', gulp.parallel('minify-html','minify-css','minify-js','minify-images'
));

​ 这里要注意,压缩过程中排除*min.css*min.js这两类文件,因为这些文件其他人已经经过处理,不需要再进行压缩,否则可能无法正常使用。其他人网上的脚本使用的是imagemin.jpegtran,由于gulp-imagemin在7.0.0开始,已经被替换为 mozjpeg,具体可以在release版本说明中查看。

压缩指令

1
2
3
4
$ hexo clean// 可以先清除缓存文件和已生成的静态文件(特别是更换主题后需要执行此操作)
$ hexo generate// 生成博客
$ gulp default// 执行压缩,可简写为 gulp
$ hexo deploy// 压缩完成无错误后,就可以发布了

​ 在执行压缩过程中,可能会遇到压缩jpg、压缩png、压缩gif时的错误,或者提示类似于imagemin-*组件无法找到的错误。此时应该注意,gulp-imagemin也有对应的相关依赖,如本博客中版本为7.1.0,有以下特定版本的依赖

1
2
3
4
5
6
"optionalDependencies": {
"imagemin-gifsicle": "^7.0.0",
"imagemin-mozjpeg": "^8.0.0",
"imagemin-optipng": "^7.0.0",
"imagemin-svgo": "^7.0.0"
}

​ 若对应依赖组件的版本有问题,可能会导致压缩对应格式的图片出错,为此建议当出现某个组件压缩失败时,手动安装对应特定的版本,npm安装软件包特定版本的命令格式如下:

1
$ npm install imagemin-mozjpeg@8.0.0 // 在软件包后面加上@版本号

效果

​ 一次压缩过程输出内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
$ gulp
[21:55:01] Using gulpfile ~/Documents/blog/gulpfile.js
[21:55:01] Starting 'default'...
[21:55:01] Starting 'minify-html'...
[21:55:01] Starting 'minify-css'...
[21:55:01] Starting 'minify-js'...
[21:55:01] Starting 'minify-images'...
[21:55:02] Finished 'minify-js' after 1.01 s
[21:55:03] Finished 'minify-css' after 1.75 s
[21:55:03] gulp-imagemin: ✔ images/apple-touch-icon-next.png (saved 190 B - 12.3%)
[21:55:03] gulp-imagemin: ✔ images/favicon-16x16-next.png (saved 150 B - 34.5%)
[21:55:03] gulp-imagemin: ✔ images/avatar.jpg (saved 3.69 kB - 18.6%)
[21:55:03] gulp-imagemin: ✔ images/favicon-32x32-next.png (saved 152 B - 23.8%)
[21:55:04] gulp-imagemin: ✔ 2020/05/03/hexo-install-and-deploy/20200503-114433.jpg (saved 51.1 kB - 54.5%)
[21:55:04] gulp-imagemin: ✔ 2020/05/03/hexo-install-and-deploy/20200503-202546.jpg (saved 21.3 kB - 47.3%)
[21:55:04] gulp-imagemin: ✔ 2020/05/03/hexo-install-and-deploy/20200503-200236.jpg (saved 40.2 kB - 51%)
[21:55:04] gulp-imagemin: ✔ 2020/05/03/hexo-install-and-deploy/20200503-193801.jpg (saved 51 kB - 53%)
[21:55:04] gulp-imagemin: ✔ 2020/05/03/hexo-install-and-deploy/20200503-111152.jpg (saved 80.1 kB - 56.7%)
[21:55:04] gulp-imagemin: ✔ images/avatar.gif (saved 8 B - 0.4%)
[21:55:04] gulp-imagemin: ✔ 2020/05/03/hexo-install-and-deploy/20200503-203256.jpg (saved 17.2 kB - 43.5%)
[21:55:04] gulp-imagemin: ✔ 2020/05/03/hexo-install-and-deploy/20200503-205440.jpg (saved 18.5 kB - 47.4%)
[21:55:04] gulp-imagemin: ✔ 2020/05/03/hexo-install-and-deploy/20200503-200812.jpg (saved 49.4 kB - 52.7%)
[21:55:04] gulp-imagemin: ✔ 2020/05/03/hexo-install-and-deploy/20200503-202952.jpg (saved 49.6 kB - 52.5%)
[21:55:04] gulp-imagemin: Minified 14 images (saved 383 kB - 51.3%)
[21:55:04] Finished 'minify-html' after 3.13 s
[21:55:04] Finished 'minify-images' after 3.13 s
[21:55:04] Finished 'default' after 3.14 s

index.html在压缩前的大小为37,326字节,压缩后为33,537字节;utils.js在压缩前的大小为15,982字节,压缩后仍为 15,982字节;main.css在压缩前大小为49,538字节,压缩后为38,183字节。

​ 由本次压缩可看出,Gulp对图片的压缩效果比较明显,在html、css、js上也有一定的效果,总体上讲还是有比较好的优化。

]]>
+ + + + <h2 id="概述"><a href="#概述" class="headerlink" title="概述"></a>概述</h2><p>​ 由于博客使用的插件较多,文章内包含的图片越多越大,会影响到博客的加载速度,影响访问效果。其中图片对文章加载速度影响较大,如果可以的话,可以使用国内的一些图床,但如果图床挂了,也会导致图片无法访问,迁移麻烦等,所以本博客还是挂在Github上进行访问。为此开始从资源文件大小上进行优化,了解到可以使用<strong>Gulp</strong>对博客的js、css、img、html等静态资源文件进行压缩。</p> + + + + + + + + + + + +
+ ssh -T git@github.com Connection reset by XXX port 22 diff --git a/categories/Github/index.html b/categories/Github/index.html index bc61c00ab0df0912c32abe053ad474a6810fb751..0b31fa237ea698f0bac2d0e678b4eeadecc9f173 100644 --- a/categories/Github/index.html +++ b/categories/Github/index.html @@ -18,4 +18,4 @@ localStorage.setItem('comments_active', commentClass); }); } -
\ No newline at end of file +
\ No newline at end of file diff --git a/categories/Hexo/index.html b/categories/Hexo/index.html index 7dbd61975447f996529be5394bdfe85ae0d39563..b955b71c647ca8e08d2a00411974d98e932ec70d 100644 --- a/categories/Hexo/index.html +++ b/categories/Hexo/index.html @@ -1,4 +1,4 @@ -分类: Hexo | Alderaan的博客
0%
分类: Hexo | Alderaan的博客
0%
\ No newline at end of file +
\ No newline at end of file diff --git a/categories/MacOS/index.html b/categories/MacOS/index.html new file mode 100644 index 0000000000000000000000000000000000000000..6fb707d0df44c38f1befc1ee075a195e92d727e9 --- /dev/null +++ b/categories/MacOS/index.html @@ -0,0 +1,21 @@ +分类: MacOS | Alderaan的博客
0%
\ No newline at end of file diff --git a/categories/centos/index.html b/categories/centos/index.html new file mode 100644 index 0000000000000000000000000000000000000000..ecb710ebbcb221ab47626b5189dbd24191fbacde --- /dev/null +++ b/categories/centos/index.html @@ -0,0 +1,21 @@ +分类: centos | Alderaan的博客
0%
\ No newline at end of file diff --git a/categories/index.html b/categories/index.html index 82c4c2e5fe1fc8d839f6f530874652266d738ffe..ff47d1dfd35a04d640ef2ce3756a6ceaaee7e036 100644 --- a/categories/index.html +++ b/categories/index.html @@ -1,4 +1,4 @@ -分类 | Alderaan的博客
0%

分类

目前共计 2 个分类
分类 | Alderaan的博客
0%

分类

目前共计 4 个分类
\ No newline at end of file +
\ No newline at end of file diff --git a/css/main.css b/css/main.css index 47767d088d8ab8e69597566d9d398173afb07c97..503e78cccfc9cb8c66e7b066085c5743795348ec 100644 --- a/css/main.css +++ b/css/main.css @@ -1 +1 @@ -code,h5,kbd,pre,samp{font-size:1em}button,hr,input{overflow:visible}progress,sub,sup{vertical-align:baseline}.table-container,pre,textarea{overflow:auto}p,table{margin:0 0 20px}:root{--body-bg-color:#eee;--content-bg-color:#fff;--card-bg-color:#f5f5f5;--text-color:#555;--blockquote-color:#666;--link-color:#555;--link-hover-color:#222;--brand-color:#fff;--brand-hover-color:#fff;--table-row-odd-bg-color:#f9f9f9;--table-row-hover-bg-color:#f5f5f5;--menu-item-bg-color:#f5f5f5;--btn-default-bg:#fff;--btn-default-color:#555;--btn-default-border-color:#555;--btn-default-hover-bg:#222;--btn-default-hover-color:#fff;--btn-default-hover-border-color:#222}html{line-height:1.15;-webkit-text-size-adjust:100%}details,main{display:block}hr{box-sizing:content-box}a{background:0 0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:ButtonText dotted 1px}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}.post-body,a,code,span.exturl{overflow-wrap:break-word;word-wrap:break-word}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}.btn,body{line-height:2}.post-body,.posts-expand .post-meta,.site-title,body,h1,h2,h3,h4,h5,h6{font-family:Lato,"PingFang SC","Microsoft YaHei",sans-serif}summary{display:list-item}[hidden],template{display:none}::selection{background:#262a30;color:#eee}body,html{height:100%}body{margin:0;background:var(--body-bg-color);color:var(--text-color);font-size:1em}@media (max-width:991px){body{padding-left:0!important;padding-right:0!important}}h1,h2,h3,h4,h5,h6{font-weight:700;line-height:1.5;margin:20px 0 15px}h1{font-size:1.5em}h2{font-size:1.375em}h3{font-size:1.25em}h4{font-size:1.125em}.btn,.highlight figcaption,h6,pre code,table{font-size:.875em}a,span.exturl{border-bottom:1px solid #999;color:var(--link-color);outline:0;text-decoration:none;cursor:pointer}a:hover,span.exturl:hover{border-bottom-color:var(--link-hover-color);color:var(--link-hover-color)}iframe,img,video{display:block;margin-left:auto;margin-right:auto;max-width:100%}hr{background-image:repeating-linear-gradient(-45deg,#ddd,#ddd 4px,transparent 4px,transparent 8px);border:0;height:3px;margin:40px 0}blockquote{border-left:4px solid #ddd;color:var(--blockquote-color);margin:0;padding:0 15px}blockquote cite::before{content:'-';padding:0 5px}dt{font-weight:700}dd{margin:0;padding:0}kbd{background-color:#f5f5f5;background-image:linear-gradient(#eee,#fff,#eee);border:1px solid #ccc;border-radius:.2em;box-shadow:.1em .1em .2em rgba(0,0,0,.1);color:#555;font-family:inherit;padding:.1em .3em;white-space:nowrap}table{border-collapse:collapse;border-spacing:0;width:100%}tbody tr:nth-of-type(odd){background:var(--table-row-odd-bg-color)}tbody tr:hover{background:var(--table-row-hover-bg-color)}caption,td,th{font-weight:400;padding:8px;text-align:left;vertical-align:middle}td,th{border:1px solid #ddd;border-bottom:3px solid #ddd}th{font-weight:700;padding-bottom:10px}td{border-bottom-width:1px}.btn{background:var(--btn-default-bg);border:2px solid var(--btn-default-border-color);border-radius:2px;color:var(--btn-default-color);display:inline-block;padding:0 20px;text-decoration:none;transition-property:background-color;transition-delay:0s;transition-duration:.2s;transition-timing-function:ease-in-out}.btn:hover{background:var(--btn-default-hover-bg);border-color:var(--btn-default-hover-border-color);color:var(--btn-default-hover-color)}.btn+.btn{margin:0 0 8px 8px}.btn .fa-fw{text-align:left;width:1.285714285714286em}.toggle{line-height:0}.toggle .toggle-line{background:#fff;display:inline-block;height:2px;left:0;position:relative;top:0;transition:all .4s;vertical-align:top;width:100%}.toggle .toggle-line:not(:first-child){margin-top:3px}.toggle.toggle-arrow .toggle-line-first{left:50%;top:2px;transform:rotate(45deg);width:50%}.toggle.toggle-arrow .toggle-line-middle{left:2px;width:90%}.toggle.toggle-arrow .toggle-line-last{left:50%;top:-2px;transform:rotate(-45deg);width:50%}.toggle.toggle-close .toggle-line-first{transform:rotate(-45deg);top:5px}.toggle.toggle-close .toggle-line-middle{opacity:0}.toggle.toggle-close .toggle-line-last{transform:rotate(45deg);top:-5px}.highlight,pre{background:#f7f7f7;color:#4d4d4c;line-height:1.6;margin:0 auto 20px}code,pre{font-family:consolas,Menlo,monospace,"PingFang SC","Microsoft YaHei"}code{background:#eee;border-radius:3px;color:#555;padding:2px 4px}.highlight ::selection{background:#d6d6d6}.highlight pre{border:0;margin:0;padding:10px 0}.highlight table{border:0;margin:0;width:auto}.highlight td{border:0;padding:0}.highlight figcaption{background:#eff2f3;color:#4d4d4c;display:flex;justify-content:space-between;line-height:1.2;padding:.5em}.highlight figcaption a{color:#4d4d4c}.highlight figcaption a:hover{border-bottom-color:#4d4d4c}.highlight .gutter{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none}.highlight .gutter pre{background:#eff2f3;color:#869194;padding-left:10px;padding-right:10px;text-align:right}.highlight .code pre{background:#f7f7f7;padding-left:10px;width:100%}.gist table{width:auto}.gist table td{border:0}pre{padding:10px}pre code{background:0 0;color:#4d4d4c;padding:0;text-shadow:none}pre .deletion{background:#fdd}pre .addition{background:#dfd}pre .meta{color:#eab700;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none}pre .comment{color:#8e908c}pre .attribute,pre .css .class,pre .css .id,pre .css .pseudo,pre .html .doctype,pre .name,pre .regexp,pre .ruby .constant,pre .tag,pre .variable,pre .xml .doctype,pre .xml .pi,pre .xml .tag .title{color:#c82829}pre .built_in,pre .builtin-name,pre .command,pre .constant,pre .literal,pre .number,pre .params,pre .preprocessor{color:#f5871f}pre .css .rules .attribute,pre .formula,pre .header,pre .inheritance,pre .ruby .class .title,pre .ruby .symbol,pre .special,pre .string,pre .symbol,pre .value,pre .xml .cdata{color:#718c00}pre .css .hexcolor,pre .title{color:#3e999f}pre .coffeescript .title,pre .function,pre .javascript .title,pre .perl .sub,pre .python .decorator,pre .python .title,pre .ruby .function .title,pre .ruby .title .keyword{color:#4271ae}pre .javascript .function,pre .keyword{color:#8959a8}.blockquote-center{border-left:none;margin:40px 0;padding:0;position:relative;text-align:center}.blockquote-center .fa{display:block;opacity:.6;position:absolute;width:100%}.blockquote-center .fa-quote-left{border-top:1px solid #ccc;text-align:left;top:-20px}.blockquote-center .fa-quote-right{border-bottom:1px solid #ccc;text-align:right;bottom:-20px}.blockquote-center div,.blockquote-center p{text-align:center}.post-body .group-picture img{margin:0 auto;padding:0 3px}.group-picture-row{margin-bottom:6px;overflow:hidden}.group-picture-column{float:left;margin-bottom:10px}.post-body .note,.post-body .tabs{margin-bottom:20px}.post-body .label{color:#555;display:inline;padding:0 2px}.post-body .label.default{background:#f0f0f0}.post-body .label.primary{background:#efe6f7}.post-body .label.info{background:#e5f2f8}.post-body .label.success{background:#e7f4e9}.post-body .label.warning{background:#fcf6e1}.post-body .label.danger{background:#fae8eb}.post-body .tabs,.tabs-comment{display:block;padding-top:10px;position:relative}.post-body .tabs ul.nav-tabs,.tabs-comment ul.nav-tabs{display:flex;flex-wrap:wrap;margin:0 0 -1px;padding:0}.post-body .tabs ul.nav-tabs li.tab,.tabs-comment ul.nav-tabs li.tab{border-bottom:1px solid #ddd;border-left:1px solid transparent;border-right:1px solid transparent;border-top:3px solid transparent;flex-grow:1;list-style-type:none;border-radius:0}@media (max-width:413px){.post-body .tabs ul.nav-tabs,.tabs-comment ul.nav-tabs{display:block;margin-bottom:5px}.post-body .tabs ul.nav-tabs li.tab,.tabs-comment ul.nav-tabs li.tab{border-bottom:1px solid transparent;border-left:3px solid transparent;border-right:1px solid transparent;border-top:1px solid transparent;border-radius:0}}.post-body .tabs ul.nav-tabs li.tab a,.tabs-comment ul.nav-tabs li.tab a{border-bottom:initial;display:block;line-height:1.8;outline:0;padding:.25em .75em;text-align:center;transition-delay:0s;transition-duration:.2s;transition-timing-function:ease-out}.menu-item a,.menu-item span.exturl,.pagination .next,.pagination .page-number,.pagination .prev{transition-property:border-color;transition-delay:0s;transition-duration:.2s;transition-timing-function:ease-in-out}.post-body .tabs ul.nav-tabs li.tab a i,.tabs-comment ul.nav-tabs li.tab a i{width:1.285714285714286em}.post-body .tabs ul.nav-tabs li.tab.active,.tabs-comment ul.nav-tabs li.tab.active{border-bottom:1px solid transparent;border-left:1px solid #ddd;border-right:1px solid #ddd;border-top:3px solid #fc6423}@media (max-width:413px){.post-body .tabs ul.nav-tabs li.tab.active,.tabs-comment ul.nav-tabs li.tab.active{border-bottom:1px solid #ddd;border-left:3px solid #fc6423;border-right:1px solid #ddd;border-top:1px solid #ddd}}.post-body .tabs ul.nav-tabs li.tab.active a,.tabs-comment ul.nav-tabs li.tab.active a{color:var(--link-color);cursor:default}.post-body .tabs .tab-content .tab-pane,.tabs-comment .tab-content .tab-pane{border:1px solid #ddd;border-top:0;padding:20px 20px 0;border-radius:0}.post-body .tabs .tab-content .tab-pane:not(.active),.tabs-comment .tab-content .tab-pane:not(.active){display:none}.post-body .tabs .tab-content .tab-pane.active,.tabs-comment .tab-content .tab-pane.active{display:block}.post-body .tabs .tab-content .tab-pane.active:nth-of-type(1),.tabs-comment .tab-content .tab-pane.active:nth-of-type(1){border-radius:0}@media (max-width:413px){.post-body .tabs .tab-content .tab-pane.active:nth-of-type(1),.tabs-comment .tab-content .tab-pane.active:nth-of-type(1){border-radius:0}}.post-body .note{border-radius:3px;padding:1em;position:relative;border:1px solid #eee;border-left-width:5px}.post-body .note h2,.post-body .note h3,.post-body .note h4,.post-body .note h5,.post-body .note h6{margin-top:0;border-bottom:initial;margin-bottom:0;padding-top:0}.post-body .note blockquote:first-child,.post-body .note img:first-child,.post-body .note ol:first-child,.post-body .note p:first-child,.post-body .note pre:first-child,.post-body .note table:first-child,.post-body .note ul:first-child{margin-top:0}.post-body .note blockquote:last-child,.post-body .note img:last-child,.post-body .note ol:last-child,.post-body .note p:last-child,.post-body .note pre:last-child,.post-body .note table:last-child,.post-body .note ul:last-child{margin-bottom:0}.post-body .note.default{border-left-color:#777}.post-body .note.default h2,.post-body .note.default h3,.post-body .note.default h4,.post-body .note.default h5,.post-body .note.default h6{color:#777}.post-body .note.primary{border-left-color:#6f42c1}.post-body .note.primary h2,.post-body .note.primary h3,.post-body .note.primary h4,.post-body .note.primary h5,.post-body .note.primary h6{color:#6f42c1}.post-body .note.info{border-left-color:#428bca}.post-body .note.info h2,.post-body .note.info h3,.post-body .note.info h4,.post-body .note.info h5,.post-body .note.info h6{color:#428bca}.post-body .note.success{border-left-color:#5cb85c}.post-body .note.success h2,.post-body .note.success h3,.post-body .note.success h4,.post-body .note.success h5,.post-body .note.success h6{color:#5cb85c}.post-body .note.warning{border-left-color:#f0ad4e}.post-body .note.warning h2,.post-body .note.warning h3,.post-body .note.warning h4,.post-body .note.warning h5,.post-body .note.warning h6{color:#f0ad4e}.post-body .note.danger{border-left-color:#d9534f}.post-body .note.danger h2,.post-body .note.danger h3,.post-body .note.danger h4,.post-body .note.danger h5,.post-body .note.danger h6{color:#d9534f}.pagination .next,.pagination .page-number,.pagination .prev,.pagination .space{display:inline-block;margin:0 10px;padding:0 11px;position:relative;top:-1px}@media (max-width:767px){.pagination .next,.pagination .page-number,.pagination .prev,.pagination .space{margin:0 5px}}.pagination{text-align:center}.pagination .next,.pagination .page-number,.pagination .prev{border-bottom:0;border-top:1px solid #eee}.pagination .next:hover,.pagination .page-number:hover,.pagination .prev:hover{border-top-color:#222}.pagination .space{margin:0;padding:0}.pagination .prev{margin-left:0}.pagination .next{margin-right:0}.pagination .page-number.current{background:#ccc;border-top-color:#ccc;color:#fff}@media (max-width:767px){.pagination{border-top:none}.pagination .next,.pagination .page-number,.pagination .prev{border-bottom:1px solid #eee;border-top:0;margin-bottom:10px;padding:0 10px}.pagination .next:hover,.pagination .page-number:hover,.pagination .prev:hover{border-bottom-color:#222}}.comments{overflow:hidden}.comment-button-group{display:flex;flex-wrap:wrap-reverse;justify-content:center;margin:1em 0}.comment-button-group .comment-button{margin:.1em .2em}.comment-button-group .comment-button.active{background:var(--btn-default-hover-bg);border-color:var(--btn-default-hover-border-color);color:var(--btn-default-hover-color)}.comment-position{display:none}.comment-position.active{display:block}.tabs-comment{background:var(--content-bg-color);padding-top:0}.tabs-comment .comments{border:0;box-shadow:none;margin-top:0;padding-top:0}.container{min-height:100%;position:relative}.main-inner{margin:0 auto;width:calc(100% - 20px)}@media (min-width:1200px){.main-inner{width:1160px}}@media (min-width:1600px){.main-inner{width:73%}}@media (max-width:767px){.content-wrap{padding:0 20px}.site-meta{text-align:center}}.header{background:0 0}.header-inner{margin:0 auto}@media (min-width:1200px){.header-inner{width:1160px}}@media (min-width:1600px){.header-inner{width:73%}}.site-brand-container{display:flex;flex-shrink:0;padding:0 10px}.headband{background:#222;height:3px}.site-meta{flex-grow:1;text-align:center}.brand{border-bottom:none;color:var(--brand-color);display:inline-block;line-height:1.375em;position:relative}.brand:hover{color:var(--brand-hover-color)}.site-title{font-size:1.375em;font-weight:400;margin:0}.site-subtitle{color:#ddd;font-size:.8125em}.use-motion .brand{opacity:0}.use-motion .custom-logo-image,.use-motion .site-subtitle,.use-motion .site-title{opacity:0;position:relative;top:-10px}.site-nav-right,.site-nav-toggle{display:none}@media (max-width:767px){.site-nav-right,.site-nav-toggle{display:flex;flex-direction:column;justify-content:center}}.site-nav-right .toggle,.site-nav-toggle .toggle{padding:10px;width:22px}.site-nav-right .toggle .toggle-line,.site-nav-toggle .toggle .toggle-line{border-radius:1px}.site-nav{display:block}@media (max-width:767px){.site-nav{clear:both;display:none}}.site-nav.site-nav-on{display:block}.menu{margin-top:20px;padding-left:0;text-align:center}.menu-item{display:inline-block;list-style:none;margin:0 10px}@media (max-width:767px){.menu-item{display:block;margin-top:10px}.menu-item.menu-item-search{display:none}}.menu-item a,.menu-item span.exturl{border-bottom:0;display:block;font-size:.8125em}@media (hover:none){.menu-item a:hover,.menu-item span.exturl:hover{border-bottom-color:transparent!important}}.menu-item .fa,.menu-item .fab,.menu-item .far,.menu-item .fas{margin-right:8px}.menu-item .badge{display:inline-block;font-weight:700;line-height:1;margin-left:.35em;margin-top:.35em;text-align:center;white-space:nowrap}@media (max-width:767px){.menu-item .badge{float:right;margin-left:0}}.menu .menu-item a:hover,.menu .menu-item span.exturl:hover,.menu-item-active a{background:var(--menu-item-bg-color)}.use-motion .menu-item{opacity:0}.sidebar{bottom:0;top:0}.sidebar-inner{color:#999;padding:18px 10px;text-align:center}.cc-license{margin-top:10px;text-align:center}.cc-license .cc-opacity{border-bottom:none;opacity:.7}.cc-license .cc-opacity:hover{opacity:.9}.cc-license img{display:inline-block}.site-author-image{border:1px solid #eee;display:block;margin:0 auto;max-width:120px;padding:2px;border-radius:50%;transition:2s all}.site-author-name{color:var(--text-color);font-weight:600;margin:0;text-align:center}.site-description{color:#999;font-size:.8125em;margin-top:0;text-align:center}.links-of-author a,.links-of-author span.exturl{border-bottom-color:#555;display:inline-block;font-size:.8125em;margin-bottom:10px;margin-right:10px;vertical-align:middle}.links-of-author a::before,.links-of-author span.exturl::before{background:#91ab2e;border-radius:50%;content:' ';display:inline-block;height:4px;margin-right:3px;vertical-align:middle;width:4px}.sidebar-button a{border-radius:4px;padding:0 15px}.sidebar-button a .fa,.sidebar-button a .fab,.sidebar-button a .far,.sidebar-button a .fas{margin-right:5px}.links-of-blogroll{font-size:.8125em;margin-top:10px}.links-of-blogroll-title{font-size:.875em;font-weight:600;margin-top:0}.links-of-blogroll-list{list-style:none;margin:0;padding:0}#sidebar-dimmer{display:none}@media (max-width:767px){#sidebar-dimmer{background:#000;display:block;height:100%;left:100%;opacity:0;position:fixed;top:0;width:100%;z-index:1100}.sidebar-active+#sidebar-dimmer{opacity:.7;transform:translateX(-100%);transition:opacity .5s}}.back-to-top,.post-toc ol a,.posts-collapse .post-header,.posts-collapse .post-header::before,.posts-expand .post-title-link::before{transition-delay:0s;transition-duration:.2s;transition-timing-function:ease-in-out}.sidebar-nav{margin:0;padding-bottom:20px;padding-left:0}.sidebar-nav li{border-bottom:1px solid transparent;color:var(--text-color);cursor:pointer;display:inline-block;font-size:.875em}.sidebar-nav li.sidebar-nav-overview{margin-left:10px}.sidebar-nav li:hover{color:#fc6423}.sidebar-nav .sidebar-nav-active{border-bottom-color:#fc6423;color:#fc6423}.sidebar-nav .sidebar-nav-active:hover{color:#fc6423}.sidebar-panel{display:none;overflow-x:hidden;overflow-y:auto}.sidebar-panel-active{display:block}.sidebar-toggle{background:#222;bottom:45px;cursor:pointer;height:14px;left:30px;padding:5px;position:fixed;width:14px;z-index:1300}@media (max-width:991px){.sidebar-toggle{left:20px;opacity:.8;display:none}}.sidebar-toggle:hover .toggle-line{background:#fc6423}.post-toc{font-size:.875em}.post-toc ol{list-style:none;margin:0;padding:0 2px 5px 10px;text-align:left}.post-toc ol>ol{padding-left:0}.post-toc ol a{transition-property:all}.post-toc .nav-item{line-height:1.8;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.post-toc .nav .active-current>.nav-child,.post-toc .nav .active-current>.nav-child>.nav-item,.post-toc .nav .active>.nav-child,.post-toc .nav .nav-child{display:block}.post-toc .nav .active>a{border-bottom-color:#fc6423;color:#fc6423}.post-toc .nav .active-current>a,.post-toc .nav .active-current>a:hover{color:#fc6423}.site-state{display:flex;justify-content:center;line-height:1.4;margin-top:10px;overflow:hidden;text-align:center;white-space:nowrap}.site-state-item:not(:first-child){border-left:1px solid #eee}.site-state-item a{border-bottom:none}.site-state-item-count{display:block;font-size:1em;font-weight:600;text-align:center}.languages,.powered-by,.theme-info,.with-love{display:inline-block}.site-state-item-name{color:#999;font-size:.8125em}.footer{color:#999;font-size:.875em;padding:20px 0}.footer.footer-fixed{bottom:0;left:0;position:absolute;right:0}.footer-inner{box-sizing:border-box;margin:0 auto;text-align:center;width:calc(100% - 20px)}@media (min-width:1200px){.footer-inner{width:1160px}}@media (min-width:1600px){.footer-inner{width:73%}}.languages{font-size:1.125em;position:relative}.languages .lang-select-label span{margin:0 .5em}.languages .lang-select{height:100%;left:0;opacity:0;position:absolute;top:0;width:100%}.with-love{color:red;margin:0 5px}@-moz-keyframes iconAnimate{0%,100%{transform:scale(1)}10%,30%{transform:scale(.9)}20%,40%,50%,60%,70%,80%{transform:scale(1.1)}}@-webkit-keyframes iconAnimate{0%,100%{transform:scale(1)}10%,30%{transform:scale(.9)}20%,40%,50%,60%,70%,80%{transform:scale(1.1)}}@-o-keyframes iconAnimate{0%,100%{transform:scale(1)}10%,30%{transform:scale(.9)}20%,40%,50%,60%,70%,80%{transform:scale(1.1)}}@keyframes iconAnimate{0%,100%{transform:scale(1)}10%,30%{transform:scale(.9)}20%,40%,50%,60%,70%,80%{transform:scale(1.1)}}.back-to-top{font-size:12px;text-align:center;background:#222;bottom:-100px;box-sizing:border-box;color:#fff;cursor:pointer;opacity:.6;padding:0 6px;position:fixed;transition-property:bottom;z-index:1300;width:24px}.back-to-top span{display:none}.back-to-top:hover{color:#fc6423}.back-to-top.back-to-top-on{bottom:30px}@media (max-width:991px){.back-to-top{left:20px;opacity:.8}}@media (min-width:1200px){.post-body{font-size:1.125em}}.post-body .exturl .fa{font-size:.875em;margin-left:4px}.post-body .figure .caption,.post-body .image-caption{color:#999;font-size:.875em;font-weight:700;line-height:1;margin:-20px auto 15px;text-align:center}.post-sticky-flag{display:inline-block;transform:rotate(30deg)}.post-button{margin-top:40px;text-align:center}.use-motion .collection-header,.use-motion .comments,.use-motion .pagination,.use-motion .post-block,.use-motion .post-body,.use-motion .post-header{opacity:0}.posts-collapse{margin-left:35px;position:relative}@media (max-width:767px){.posts-collapse{margin-left:0;margin-right:0}}.posts-collapse .collection-title{font-size:1.125em;position:relative}.posts-collapse .collection-title::before{background:#999;border:1px solid #fff;border-radius:50%;content:' ';height:10px;left:0;margin-left:-6px;margin-top:-4px;position:absolute;top:50%;width:10px}.posts-collapse .collection-year{font-size:1.5em;font-weight:700;margin:60px 0;position:relative}.posts-collapse .collection-year::before{background:#bbb;border-radius:50%;content:' ';height:8px;left:0;margin-left:-4px;margin-top:-4px;position:absolute;top:50%;width:8px}.posts-collapse .collection-header{display:block;margin:0 0 0 20px}.posts-collapse .collection-header small{color:#bbb;margin-left:5px}.posts-collapse .post-header{border-bottom:1px dashed #ccc;margin:30px 0;padding-left:15px;position:relative;transition-property:border}.posts-collapse .post-header::before,.posts-collapse::before{content:' ';position:absolute;left:0}.posts-collapse .post-header::before{background:#bbb;border:1px solid #fff;border-radius:50%;height:6px;margin-left:-4px;top:.75em;transition-property:background;width:6px}.posts-collapse .post-header:hover{border-bottom-color:#666}.posts-collapse .post-header:hover::before{background:#222}.posts-collapse .post-meta{display:inline;font-size:.75em;margin-right:10px}.posts-collapse .post-title{display:inline}.posts-collapse .post-title a,.posts-collapse .post-title span.exturl{border-bottom:none;color:var(--link-color)}.posts-collapse .post-title .fa-external-link-alt{font-size:.875em;margin-left:5px}.posts-collapse::before{background:#f5f5f5;height:100%;margin-left:-2px;top:1.25em;width:4px}.post-eof{background:#ccc;height:1px;margin:80px auto 60px;text-align:center;width:8%}.post-block:last-of-type .post-eof{display:none}.content{padding-top:40px}@media (min-width:992px){.post-body{text-align:justify}}@media (max-width:991px){.post-body{text-align:justify}}.post-body h1,.post-body h2,.post-body h3,.post-body h4,.post-body h5,.post-body h6{padding-top:10px}.post-body h1 .header-anchor,.post-body h2 .header-anchor,.post-body h3 .header-anchor,.post-body h4 .header-anchor,.post-body h5 .header-anchor,.post-body h6 .header-anchor{border-bottom-style:none;color:#ccc;float:right;margin-left:10px;visibility:hidden}.post-body h1 .header-anchor:hover,.post-body h2 .header-anchor:hover,.post-body h3 .header-anchor:hover,.post-body h4 .header-anchor:hover,.post-body h5 .header-anchor:hover,.post-body h6 .header-anchor:hover{color:inherit}.post-body h1:hover .header-anchor,.post-body h2:hover .header-anchor,.post-body h3:hover .header-anchor,.post-body h4:hover .header-anchor,.post-body h5:hover .header-anchor,.post-body h6:hover .header-anchor{visibility:visible}.post-body iframe,.post-body img,.post-body video{margin-bottom:20px}.post-body .video-container{height:0;margin-bottom:20px;overflow:hidden;padding-top:75%;position:relative;width:100%}.post-body .video-container embed,.post-body .video-container iframe,.post-body .video-container object{height:100%;left:0;margin:0;position:absolute;top:0;width:100%}.post-gallery{align-items:center;display:grid;grid-gap:10px;grid-template-columns:1fr 1fr 1fr;margin-bottom:20px}.post-gallery a{border:0}.post-gallery img{margin:0}.posts-expand .post-header{font-size:1.125em}.posts-expand .post-title{font-size:1.5em;font-weight:400;margin:initial;text-align:center;overflow-wrap:break-word;word-wrap:break-word}.posts-expand .post-title-link{border-bottom:none;color:var(--link-color);display:inline-block;position:relative;vertical-align:top}.posts-expand .post-title-link::before{background:var(--link-color);bottom:0;content:'';height:2px;left:0;position:absolute;transform:scaleX(0);visibility:hidden;width:100%}.posts-expand .post-title-link:hover::before{transform:scaleX(1);visibility:visible}.posts-expand .post-title-link .fa-external-link-alt{font-size:.875em;margin-left:5px}.posts-expand .post-meta{color:#999;font-size:.75em;margin:3px 0 60px;text-align:center}.posts-expand .post-meta .post-description{font-size:.875em;margin-top:2px}.posts-expand .post-meta time{border-bottom:1px dashed #999;cursor:pointer}.post-meta .post-meta-item+.post-meta-item::before{content:'|';margin:0 .5em}.post-meta-divider{margin:0 .5em}.post-meta-item-icon{margin-right:3px}@media (max-width:991px){.post-meta-item-icon{display:inline-block}.post-meta-item-text{display:none}}.post-nav{border-top:1px solid #eee;display:flex;justify-content:space-between;margin-top:15px;padding:10px 5px 0}.post-nav-item{flex:1}.post-nav-item a{border-bottom:none;display:block;font-size:.875em;line-height:1.6;position:relative}.post-nav-item a:active{top:2px}.post-nav-item .fa{font-size:.75em}.post-nav-item:first-child{margin-right:15px}.post-nav-item:first-child .fa{margin-right:5px}.post-nav-item:last-child{margin-left:15px;text-align:right}#qr p,.category-all-page .category-all-title,.event-list .event .event-details::before,.post-tags,.post-widgets,.reward-container,.sidebar-button,.social-like,.tag-cloud,.wp_rating,ul.breadcrumb{text-align:center}.post-nav-item:last-child .fa{margin-left:5px}.rtl.post-body a,.rtl.post-body h1,.rtl.post-body h2,.rtl.post-body h3,.rtl.post-body h4,.rtl.post-body h5,.rtl.post-body h6,.rtl.post-body li,.rtl.post-body ol,.rtl.post-body p,.rtl.post-body ul{direction:rtl;font-family:UKIJ Ekran}.rtl.post-title{font-family:UKIJ Ekran}.post-tags{margin-top:40px}.post-tags a{display:inline-block;font-size:.8125em}.post-tags a:not(:last-child){margin-right:10px}.post-widgets{border-top:1px solid #eee;margin-top:15px}.wp_rating{height:20px;line-height:20px;margin-top:10px;padding-top:6px}.social-like{display:flex;font-size:.875em;justify-content:center}.reward-container{margin:20px auto;padding:10px 0;width:90%}.reward-container button{background:#ff2a2a;border:0;border-radius:5px;color:#fff;cursor:pointer;line-height:2;outline:0;padding:0 15px;vertical-align:text-top}.reward-container button:hover{background:#f55}#qr{padding-top:20px}#qr a{border:0}#qr img{display:inline-block;margin:.8em 2em 0;max-width:100%;width:180px}.post-copyright{background:var(--card-bg-color);border-left:3px solid #ff2a2a;list-style:none;margin:2em 0 0;padding:.5em 1em}.my_post_copyright{width:85%;max-width:45em;margin:2.8em auto 0;padding:.5em 1em;border:1px solid #d3d3d3;font-size:.93rem;line-height:1.6em;word-break:break-all;background:rgba(255,255,255,.4)}.my_post_copyright p{margin:0}.my_post_copyright span{display:inline-block;width:5.2em;color:#333;font-weight:700}.my_post_copyright .raw{margin-left:1em;width:5em}.my_post_copyright a{color:grey;border-bottom:0}.my_post_copyright a:hover{color:#0593d3;text-decoration:underline}.my_post_copyright:hover .fa-clipboard{color:#000}.my_post_copyright .post-url:hover{font-weight:400}.my_post_copyright .copy-path{margin-left:1em;width:1em}@media (max-width:767px){.post-gallery{grid-template-columns:1fr 1fr}.my_post_copyright .copy-path{display:none}}.my_post_copyright .copy-path:hover{color:grey;cursor:pointer}.category-all-page .category-all{margin-top:20px}.category-all-page .category-list{list-style:none;margin:0;padding:0}.category-all-page .category-list-item{margin:5px 10px}.category-all-page .category-list-count{color:#bbb}.category-all-page .category-list-count::before{content:' (';display:inline}.category-all-page .category-list-count::after{content:') ';display:inline}.category-all-page .category-list-child{padding-left:10px}.event-list{padding:0}.event-list hr{background:#222;margin:20px 0 45px}.event-list hr::after{background:#222;color:#fff;content:'NOW';display:inline-block;font-weight:700;padding:0 5px;text-align:right}.event-list .event{background:#222;margin:20px 0;min-height:40px;padding:15px 0 15px 10px}.event-list .event .event-summary{color:#fff;margin:0;padding-bottom:3px}.event-list .event .event-summary::before{animation:dot-flash 1s alternate infinite ease-in-out;color:#fff;content:'\f111';display:inline-block;font-size:10px;margin-right:25px;vertical-align:middle;font-family:'Font Awesome 5 Free';font-weight:900}.event-list .event .event-relative-time{color:#bbb;display:inline-block;font-size:12px;font-weight:400;padding-left:12px}.event-list .event .event-details{color:#fff;display:block;line-height:18px;margin-left:56px;padding-bottom:6px;padding-top:3px;text-indent:-24px}.event-list .event .event-details::before{color:#fff;display:inline-block;margin-right:9px;text-indent:0;width:14px;font-family:'Font Awesome 5 Free';font-weight:900}.event-list .event .event-details.event-location::before{content:'\f041'}.event-list .event .event-details.event-duration::before{content:'\f017'}.event-list .event-past{background:#f5f5f5}.event-list .event-past .event-details,.event-list .event-past .event-summary{color:#bbb;opacity:.9}.event-list .event-past .event-details::before,.event-list .event-past .event-summary::before{animation:none;color:#bbb}@-moz-keyframes dot-flash{from{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}@-webkit-keyframes dot-flash{from{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}@-o-keyframes dot-flash{from{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}@keyframes dot-flash{from{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}ul.breadcrumb{font-size:.75em;list-style:none;margin:1em 0;padding:0 2em}ul.breadcrumb li{display:inline}ul.breadcrumb li+li::before{content:'/\00a0';font-weight:400;padding:.5em}ul.breadcrumb li+li:last-child{font-weight:700}.tag-cloud a{display:inline-block;margin:10px}.tag-cloud a:hover{color:var(--link-hover-color)!important}.header{margin:0 auto;position:relative;width:calc(100% - 20px)}@media (min-width:1200px){.header{width:1160px}}@media (min-width:1600px){.header{width:73%}}@media (max-width:991px){.header{width:auto}}.header-inner{background:var(--content-bg-color);border-radius:initial;box-shadow:0 2px 2px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.06),0 1px 5px 0 rgba(0,0,0,.12);overflow:hidden;padding:0;position:absolute;top:0;width:240px}@media (min-width:1200px){.header-inner{width:240px}}.main-inner{align-items:flex-start;display:flex;justify-content:space-between;flex-direction:row-reverse}@media (max-width:991px){.header-inner{border-radius:initial;position:relative;width:auto}.main-inner{width:auto}}.content-wrap{border-radius:initial;box-sizing:border-box;width:calc(100% - 252px)}@media (max-width:991px){.content-wrap{border-radius:initial;padding:20px;width:100%}}.footer-inner{padding-left:260px}.back-to-top{left:auto;right:30px}.site-brand-container{background:#222}@media (max-width:991px){.back-to-top{right:20px}.footer-inner{padding-left:0;padding-right:0;width:auto}.site-brand-container{box-shadow:0 0 16px rgba(0,0,0,.5)}.custom-logo-image{display:none}}.site-meta{padding:20px 0}.brand{padding:0}.site-subtitle{margin:10px 10px 0}.custom-logo-image{margin-top:20px}.site-nav-right .toggle,.site-nav-toggle .toggle{color:#fff}.site-nav-right .toggle .toggle-line,.site-nav-toggle .toggle .toggle-line{background:#fff}@media (min-width:768px) and (max-width:991px){.site-nav-right,.site-nav-toggle{display:flex;flex-direction:column;justify-content:center}.site-nav{display:none}}.menu .menu-item{display:block;margin:0}.menu .menu-item a,.menu .menu-item span.exturl{padding:5px 20px;position:relative;text-align:left;transition-property:background-color}@media (max-width:991px){.menu .menu-item.menu-item-search{display:none}}.menu .menu-item .badge{background:#ccc;border-radius:10px;color:#fff;float:right;padding:2px 5px;text-shadow:1px 1px 0 rgba(0,0,0,.1);vertical-align:middle}.main-menu .menu-item-active a::after{background:#bbb;border-radius:50%;content:' ';height:6px;margin-top:-3px;position:absolute;right:15px;top:50%;width:6px}.sidebar-inner,.sub-menu{background:var(--content-bg-color)}.sub-menu{margin:0;padding:6px 0}.sub-menu .menu-item{display:inline-block}.sub-menu .menu-item a,.sub-menu .menu-item span.exturl{background:0 0;margin:5px 10px;padding:initial}.sub-menu .menu-item a:hover,.sub-menu .menu-item span.exturl:hover{background:0 0;color:#fc6423}.sub-menu .menu-item-active a{border-bottom-color:#fc6423;color:#fc6423}.sub-menu .menu-item-active a:hover{border-bottom-color:#fc6423}.sidebar{background:var(--body-bg-color);box-shadow:none;margin-top:100%;position:static;width:240px}@media (max-width:991px){.sidebar{display:none}}.sidebar-toggle{display:none}.sidebar-inner{border-radius:initial;box-shadow:0 2px 2px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.06),0 1px 5px 0 rgba(0,0,0,.12),0 -1px .5px 0 rgba(0,0,0,.09);box-sizing:border-box;color:var(--text-color);width:240px;opacity:0}.sidebar-inner.affix{position:fixed;top:12px}.sidebar-inner.affix-bottom{position:absolute}.site-state-item{padding:0 10px}.sidebar-button{border-bottom:1px dotted #ccc;border-top:1px dotted #ccc;margin-top:10px}.sidebar-button a{border:0;color:#fc6423;display:block}.sidebar-button a:hover{background:0 0;border:0;color:#e34603}.sidebar-button a:hover .fa,.sidebar-button a:hover .fab,.sidebar-button a:hover .far,.sidebar-button a:hover .fas{color:#e34603}.links-of-author{display:flex;flex-wrap:wrap;margin-top:10px;justify-content:center}.links-of-author-item{margin:5px 0 0;width:50%}.comments,.post-block+.post-block{margin-top:12px}.links-of-author-item a,.links-of-author-item span.exturl{box-sizing:border-box;margin-bottom:0;margin-right:0;max-width:216px;overflow:hidden;padding:0 5px;text-overflow:ellipsis;white-space:nowrap;border-bottom:none;display:block;text-decoration:none}.links-of-author-item a::before,.links-of-author-item span.exturl::before,.post-eof{display:none}.links-of-author-item a:hover,.links-of-author-item span.exturl:hover{background:var(--body-bg-color);border-radius:4px}.links-of-author-item .fa,.links-of-author-item .fab,.links-of-author-item .far,.links-of-author-item .fas{margin-right:2px}.links-of-blogroll-item{padding:0}.content-wrap{background:initial;box-shadow:initial;padding:initial}.comments,.post-block{padding:40px;background:var(--content-bg-color)}.post-block{border-radius:initial;box-shadow:0 2px 2px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.06),0 1px 5px 0 rgba(0,0,0,.12)}.comments,.pagination,.post-block+.post-block{border-radius:initial;box-shadow:0 2px 2px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.06),0 1px 5px 0 rgba(0,0,0,.12),0 -1px .5px 0 rgba(0,0,0,.09)}.tabs-comment{margin-top:1em}.content{padding-top:initial}.pagination{background:var(--content-bg-color);border-top:initial;margin:12px 0 0;padding:10px 0}.pagination .next,.pagination .page-number,.pagination .prev{margin-bottom:initial;top:initial}.main{padding-bottom:initial}.footer{bottom:auto}.sub-menu{border-bottom:initial;box-shadow:0 2px 2px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.06),0 1px 5px 0 rgba(0,0,0,.12)}.sub-menu+.content .post-block{box-shadow:0 2px 2px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.06),0 1px 5px 0 rgba(0,0,0,.12),0 -1px .5px 0 rgba(0,0,0,.09);margin-top:12px}@media (min-width:768px) and (max-width:991px){.sub-menu+.content .post-block{margin-top:10px}}@media (max-width:767px){.sub-menu+.content .post-block{margin-top:8px}}.post-body h1,.post-body h2{border-bottom:1px solid #eee}.post-body h3{border-bottom:1px dotted #eee}@media (min-width:768px) and (max-width:991px){.content-wrap{padding:10px}.posts-expand .post-button{margin-top:20px}.comments,.post-block+.post-block{margin-top:10px}.post-block{border-radius:initial;box-shadow:0 2px 2px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.06),0 1px 5px 0 rgba(0,0,0,.12),0 -1px .5px 0 rgba(0,0,0,.09);padding:20px}.comments{padding:10px 20px}.pagination{margin:10px 0 0}}@media (max-width:767px){.content-wrap{padding:8px}.posts-expand .post-button{margin:12px 0}.comments,.post-block+.post-block{margin-top:8px}.post-block{border-radius:initial;box-shadow:0 2px 2px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.06),0 1px 5px 0 rgba(0,0,0,.12),0 -1px .5px 0 rgba(0,0,0,.09);min-height:auto;padding:12px}.comments{padding:10px 12px}.pagination{margin:8px 0 0}} \ No newline at end of file +code,h5,kbd,pre,samp{font-size:1em}button,hr,input{overflow:visible}progress,sub,sup{vertical-align:baseline}.table-container,pre,textarea{overflow:auto}p,table{margin:0 0 20px}:root{--body-bg-color:#eee;--content-bg-color:#fff;--card-bg-color:#f5f5f5;--text-color:#555;--blockquote-color:#666;--link-color:#555;--link-hover-color:#222;--brand-color:#fff;--brand-hover-color:#fff;--table-row-odd-bg-color:#f9f9f9;--table-row-hover-bg-color:#f5f5f5;--menu-item-bg-color:#f5f5f5;--btn-default-bg:#fff;--btn-default-color:#555;--btn-default-border-color:#555;--btn-default-hover-bg:#222;--btn-default-hover-color:#fff;--btn-default-hover-border-color:#222}html{line-height:1.15;-webkit-text-size-adjust:100%}details,main{display:block}hr{box-sizing:content-box}a{background:0 0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:ButtonText dotted 1px}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}.post-body,a,code,span.exturl{overflow-wrap:break-word;word-wrap:break-word}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}.btn,body{line-height:2}.post-body,.posts-expand .post-meta,.site-title,body,h1,h2,h3,h4,h5,h6{font-family:Lato,"PingFang SC","Microsoft YaHei",sans-serif}summary{display:list-item}[hidden],template{display:none}::selection{background:#262a30;color:#eee}body,html{height:100%}body{margin:0;background:var(--body-bg-color);color:var(--text-color);font-size:1em}@media (max-width:991px){body{padding-left:0!important;padding-right:0!important}}h1,h2,h3,h4,h5,h6{font-weight:700;line-height:1.5;margin:20px 0 15px}h1{font-size:1.5em}h2{font-size:1.375em}h3{font-size:1.25em}h4{font-size:1.125em}.btn,.highlight figcaption,h6,pre code,table{font-size:.875em}a,span.exturl{border-bottom:1px solid #999;color:var(--link-color);outline:0;text-decoration:none;cursor:pointer}a:hover,span.exturl:hover{border-bottom-color:var(--link-hover-color);color:var(--link-hover-color)}iframe,img,video{display:block;margin-left:auto;margin-right:auto;max-width:100%}hr{background-image:repeating-linear-gradient(-45deg,#ddd,#ddd 4px,transparent 4px,transparent 8px);border:0;height:3px;margin:40px 0}blockquote{border-left:4px solid #ddd;color:var(--blockquote-color);margin:0;padding:0 15px}blockquote cite::before{content:'-';padding:0 5px}dt{font-weight:700}dd{margin:0;padding:0}kbd{background-color:#f5f5f5;background-image:linear-gradient(#eee,#fff,#eee);border:1px solid #ccc;border-radius:.2em;box-shadow:.1em .1em .2em rgba(0,0,0,.1);color:#555;font-family:inherit;padding:.1em .3em;white-space:nowrap}table{border-collapse:collapse;border-spacing:0;width:100%}tbody tr:nth-of-type(odd){background:var(--table-row-odd-bg-color)}tbody tr:hover{background:var(--table-row-hover-bg-color)}caption,td,th{font-weight:400;padding:8px;text-align:left;vertical-align:middle}td,th{border:1px solid #ddd;border-bottom:3px solid #ddd}th{font-weight:700;padding-bottom:10px}td{border-bottom-width:1px}.btn{background:var(--btn-default-bg);border:2px solid var(--btn-default-border-color);border-radius:2px;color:var(--btn-default-color);display:inline-block;padding:0 20px;text-decoration:none;transition-property:background-color;transition-delay:0s;transition-duration:.2s;transition-timing-function:ease-in-out}.btn:hover{background:var(--btn-default-hover-bg);border-color:var(--btn-default-hover-border-color);color:var(--btn-default-hover-color)}.btn+.btn{margin:0 0 8px 8px}.btn .fa-fw{text-align:left;width:1.285714285714286em}.toggle{line-height:0}.toggle .toggle-line{background:#fff;display:inline-block;height:2px;left:0;position:relative;top:0;transition:all .4s;vertical-align:top;width:100%}.toggle .toggle-line:not(:first-child){margin-top:3px}.toggle.toggle-arrow .toggle-line-first{left:50%;top:2px;transform:rotate(45deg);width:50%}.toggle.toggle-arrow .toggle-line-middle{left:2px;width:90%}.toggle.toggle-arrow .toggle-line-last{left:50%;top:-2px;transform:rotate(-45deg);width:50%}.toggle.toggle-close .toggle-line-first{transform:rotate(-45deg);top:5px}.toggle.toggle-close .toggle-line-middle{opacity:0}.toggle.toggle-close .toggle-line-last{transform:rotate(45deg);top:-5px}.highlight,pre{background:#f7f7f7;color:#4d4d4c;line-height:1.6;margin:0 auto 20px}code,pre{font-family:consolas,Menlo,monospace,"PingFang SC","Microsoft YaHei"}code{background:#eee;border-radius:3px;color:#555;padding:2px 4px}.highlight ::selection{background:#d6d6d6}.highlight pre{border:0;margin:0;padding:10px 0}.highlight table{border:0;margin:0;width:auto}.highlight td{border:0;padding:0}.highlight figcaption{background:#eff2f3;color:#4d4d4c;display:flex;justify-content:space-between;line-height:1.2;padding:.5em}.highlight figcaption a{color:#4d4d4c}.highlight figcaption a:hover{border-bottom-color:#4d4d4c}.highlight .gutter{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none}.highlight .gutter pre{background:#eff2f3;color:#869194;padding-left:10px;padding-right:10px;text-align:right}.highlight .code pre{background:#f7f7f7;padding-left:10px;width:100%}.gist table{width:auto}.gist table td{border:0}pre{padding:10px}pre code{background:0 0;color:#4d4d4c;padding:0;text-shadow:none}pre .deletion{background:#fdd}pre .addition{background:#dfd}pre .meta{color:#eab700;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none}pre .comment{color:#8e908c}pre .attribute,pre .css .class,pre .css .id,pre .css .pseudo,pre .html .doctype,pre .name,pre .regexp,pre .ruby .constant,pre .tag,pre .variable,pre .xml .doctype,pre .xml .pi,pre .xml .tag .title{color:#c82829}pre .built_in,pre .builtin-name,pre .command,pre .constant,pre .literal,pre .number,pre .params,pre .preprocessor{color:#f5871f}pre .css .rules .attribute,pre .formula,pre .header,pre .inheritance,pre .ruby .class .title,pre .ruby .symbol,pre .special,pre .string,pre .symbol,pre .value,pre .xml .cdata{color:#718c00}pre .css .hexcolor,pre .title{color:#3e999f}pre .coffeescript .title,pre .function,pre .javascript .title,pre .perl .sub,pre .python .decorator,pre .python .title,pre .ruby .function .title,pre .ruby .title .keyword{color:#4271ae}pre .javascript .function,pre .keyword{color:#8959a8}.blockquote-center{border-left:none;margin:40px 0;padding:0;position:relative;text-align:center}.blockquote-center .fa{display:block;opacity:.6;position:absolute;width:100%}.blockquote-center .fa-quote-left{border-top:1px solid #ccc;text-align:left;top:-20px}.blockquote-center .fa-quote-right{border-bottom:1px solid #ccc;text-align:right;bottom:-20px}.blockquote-center div,.blockquote-center p{text-align:center}.post-body .group-picture img{margin:0 auto;padding:0 3px}.group-picture-row{margin-bottom:6px;overflow:hidden}.group-picture-column{float:left;margin-bottom:10px}.post-body .note,.post-body .tabs{margin-bottom:20px}.post-body .label{color:#555;display:inline;padding:0 2px}.post-body .label.default{background:#f0f0f0}.post-body .label.primary{background:#efe6f7}.post-body .label.info{background:#e5f2f8}.post-body .label.success{background:#e7f4e9}.post-body .label.warning{background:#fcf6e1}.post-body .label.danger{background:#fae8eb}.post-body .tabs,.tabs-comment{display:block;padding-top:10px;position:relative}.post-body .tabs ul.nav-tabs,.tabs-comment ul.nav-tabs{display:flex;flex-wrap:wrap;margin:0 0 -1px;padding:0}.post-body .tabs ul.nav-tabs li.tab,.tabs-comment ul.nav-tabs li.tab{border-bottom:1px solid #ddd;border-left:1px solid transparent;border-right:1px solid transparent;border-top:3px solid transparent;flex-grow:1;list-style-type:none;border-radius:0}@media (max-width:413px){.post-body .tabs ul.nav-tabs,.tabs-comment ul.nav-tabs{display:block;margin-bottom:5px}.post-body .tabs ul.nav-tabs li.tab,.tabs-comment ul.nav-tabs li.tab{border-bottom:1px solid transparent;border-left:3px solid transparent;border-right:1px solid transparent;border-top:1px solid transparent;border-radius:0}}.post-body .tabs ul.nav-tabs li.tab a,.tabs-comment ul.nav-tabs li.tab a{border-bottom:initial;display:block;line-height:1.8;outline:0;padding:.25em .75em;text-align:center;transition-delay:0s;transition-duration:.2s;transition-timing-function:ease-out}.menu-item a,.menu-item span.exturl,.pagination .next,.pagination .page-number,.pagination .prev{transition-property:border-color;transition-delay:0s;transition-duration:.2s;transition-timing-function:ease-in-out}.post-body .tabs ul.nav-tabs li.tab a i,.tabs-comment ul.nav-tabs li.tab a i{width:1.285714285714286em}.post-body .tabs ul.nav-tabs li.tab.active,.tabs-comment ul.nav-tabs li.tab.active{border-bottom:1px solid transparent;border-left:1px solid #ddd;border-right:1px solid #ddd;border-top:3px solid #fc6423}@media (max-width:413px){.post-body .tabs ul.nav-tabs li.tab.active,.tabs-comment ul.nav-tabs li.tab.active{border-bottom:1px solid #ddd;border-left:3px solid #fc6423;border-right:1px solid #ddd;border-top:1px solid #ddd}}.post-body .tabs ul.nav-tabs li.tab.active a,.tabs-comment ul.nav-tabs li.tab.active a{color:var(--link-color);cursor:default}.post-body .tabs .tab-content .tab-pane,.tabs-comment .tab-content .tab-pane{border:1px solid #ddd;border-top:0;padding:20px 20px 0;border-radius:0}.post-body .tabs .tab-content .tab-pane:not(.active),.tabs-comment .tab-content .tab-pane:not(.active){display:none}.post-body .tabs .tab-content .tab-pane.active,.tabs-comment .tab-content .tab-pane.active{display:block}.post-body .tabs .tab-content .tab-pane.active:nth-of-type(1),.tabs-comment .tab-content .tab-pane.active:nth-of-type(1){border-radius:0}@media (max-width:413px){.post-body .tabs .tab-content .tab-pane.active:nth-of-type(1),.tabs-comment .tab-content .tab-pane.active:nth-of-type(1){border-radius:0}}.post-body .note{border-radius:3px;padding:1em;position:relative;border:1px solid #eee;border-left-width:5px}.post-body .note h2,.post-body .note h3,.post-body .note h4,.post-body .note h5,.post-body .note h6{margin-top:0;border-bottom:initial;margin-bottom:0;padding-top:0}.post-body .note blockquote:first-child,.post-body .note img:first-child,.post-body .note ol:first-child,.post-body .note p:first-child,.post-body .note pre:first-child,.post-body .note table:first-child,.post-body .note ul:first-child{margin-top:0}.post-body .note blockquote:last-child,.post-body .note img:last-child,.post-body .note ol:last-child,.post-body .note p:last-child,.post-body .note pre:last-child,.post-body .note table:last-child,.post-body .note ul:last-child{margin-bottom:0}.post-body .note.default{border-left-color:#777}.post-body .note.default h2,.post-body .note.default h3,.post-body .note.default h4,.post-body .note.default h5,.post-body .note.default h6{color:#777}.post-body .note.primary{border-left-color:#6f42c1}.post-body .note.primary h2,.post-body .note.primary h3,.post-body .note.primary h4,.post-body .note.primary h5,.post-body .note.primary h6{color:#6f42c1}.post-body .note.info{border-left-color:#428bca}.post-body .note.info h2,.post-body .note.info h3,.post-body .note.info h4,.post-body .note.info h5,.post-body .note.info h6{color:#428bca}.post-body .note.success{border-left-color:#5cb85c}.post-body .note.success h2,.post-body .note.success h3,.post-body .note.success h4,.post-body .note.success h5,.post-body .note.success h6{color:#5cb85c}.post-body .note.warning{border-left-color:#f0ad4e}.post-body .note.warning h2,.post-body .note.warning h3,.post-body .note.warning h4,.post-body .note.warning h5,.post-body .note.warning h6{color:#f0ad4e}.post-body .note.danger{border-left-color:#d9534f}.post-body .note.danger h2,.post-body .note.danger h3,.post-body .note.danger h4,.post-body .note.danger h5,.post-body .note.danger h6{color:#d9534f}.pagination .next,.pagination .page-number,.pagination .prev,.pagination .space{display:inline-block;margin:0 10px;padding:0 11px;position:relative;top:-1px}@media (max-width:767px){.pagination .next,.pagination .page-number,.pagination .prev,.pagination .space{margin:0 5px}}.pagination{text-align:center}.pagination .next,.pagination .page-number,.pagination .prev{border-bottom:0;border-top:1px solid #eee}.pagination .next:hover,.pagination .page-number:hover,.pagination .prev:hover{border-top-color:#222}.pagination .space{margin:0;padding:0}.pagination .prev{margin-left:0}.pagination .next{margin-right:0}.pagination .page-number.current{background:#ccc;border-top-color:#ccc;color:#fff}@media (max-width:767px){.pagination{border-top:none}.pagination .next,.pagination .page-number,.pagination .prev{border-bottom:1px solid #eee;border-top:0;margin-bottom:10px;padding:0 10px}.pagination .next:hover,.pagination .page-number:hover,.pagination .prev:hover{border-bottom-color:#222}}.comments{overflow:hidden}.comment-button-group{display:flex;flex-wrap:wrap-reverse;justify-content:center;margin:1em 0}.comment-button-group .comment-button{margin:.1em .2em}.comment-button-group .comment-button.active{background:var(--btn-default-hover-bg);border-color:var(--btn-default-hover-border-color);color:var(--btn-default-hover-color)}.comment-position{display:none}.comment-position.active{display:block}.tabs-comment{background:var(--content-bg-color);padding-top:0}.tabs-comment .comments{border:0;box-shadow:none;margin-top:0;padding-top:0}.container{min-height:100%;position:relative}.main-inner{margin:0 auto;width:calc(100% - 20px)}@media (min-width:1200px){.main-inner{width:1160px}}@media (min-width:1600px){.main-inner{width:73%}}@media (max-width:767px){.content-wrap{padding:0 20px}.site-meta{text-align:center}}.header{background:0 0}.header-inner{margin:0 auto}@media (min-width:1200px){.header-inner{width:1160px}}@media (min-width:1600px){.header-inner{width:73%}}.site-brand-container{display:flex;flex-shrink:0;padding:0 10px}.headband{background:#222;height:3px}.site-meta{flex-grow:1;text-align:center}.brand{border-bottom:none;color:var(--brand-color);display:inline-block;line-height:1.375em;position:relative}.brand:hover{color:var(--brand-hover-color)}.site-title{font-size:1.375em;font-weight:400;margin:0}.site-subtitle{color:#ddd;font-size:.8125em}.use-motion .brand{opacity:0}.use-motion .custom-logo-image,.use-motion .site-subtitle,.use-motion .site-title{opacity:0;position:relative;top:-10px}.site-nav-right,.site-nav-toggle{display:none}@media (max-width:767px){.site-nav-right,.site-nav-toggle{display:flex;flex-direction:column;justify-content:center}}.site-nav-right .toggle,.site-nav-toggle .toggle{padding:10px;width:22px}.site-nav-right .toggle .toggle-line,.site-nav-toggle .toggle .toggle-line{border-radius:1px}.site-nav{display:block}@media (max-width:767px){.site-nav{clear:both;display:none}}.site-nav.site-nav-on{display:block}.menu{margin-top:20px;padding-left:0;text-align:center}.menu-item{display:inline-block;list-style:none;margin:0 10px}@media (max-width:767px){.menu-item{display:block;margin-top:10px}.menu-item.menu-item-search{display:none}}.menu-item a,.menu-item span.exturl{border-bottom:0;display:block;font-size:.8125em}@media (hover:none){.menu-item a:hover,.menu-item span.exturl:hover{border-bottom-color:transparent!important}}.menu-item .fa,.menu-item .fab,.menu-item .far,.menu-item .fas{margin-right:8px}.menu-item .badge{display:inline-block;font-weight:700;line-height:1;margin-left:.35em;margin-top:.35em;text-align:center;white-space:nowrap}@media (max-width:767px){.menu-item .badge{float:right;margin-left:0}}.menu .menu-item a:hover,.menu .menu-item span.exturl:hover,.menu-item-active a{background:var(--menu-item-bg-color)}.use-motion .menu-item{opacity:0}.sidebar{bottom:0;top:0}.sidebar-inner{color:#999;padding:18px 10px;text-align:center}.cc-license{margin-top:10px;text-align:center}.cc-license .cc-opacity{border-bottom:none;opacity:.7}.cc-license .cc-opacity:hover{opacity:.9}.cc-license img{display:inline-block}.site-author-image{border:1px solid #eee;display:block;margin:0 auto;max-width:120px;padding:2px;border-radius:50%;transition:2s all}.site-author-name{color:var(--text-color);font-weight:600;margin:0;text-align:center}.site-description{color:#999;font-size:.8125em;margin-top:0;text-align:center}.links-of-author a,.links-of-author span.exturl{border-bottom-color:#555;display:inline-block;font-size:.8125em;margin-bottom:10px;margin-right:10px;vertical-align:middle}.links-of-author a::before,.links-of-author span.exturl::before{background:#0a585e;border-radius:50%;content:' ';display:inline-block;height:4px;margin-right:3px;vertical-align:middle;width:4px}.sidebar-button a{border-radius:4px;padding:0 15px}.sidebar-button a .fa,.sidebar-button a .fab,.sidebar-button a .far,.sidebar-button a .fas{margin-right:5px}.links-of-blogroll{font-size:.8125em;margin-top:10px}.links-of-blogroll-title{font-size:.875em;font-weight:600;margin-top:0}.links-of-blogroll-list{list-style:none;margin:0;padding:0}#sidebar-dimmer{display:none}@media (max-width:767px){#sidebar-dimmer{background:#000;display:block;height:100%;left:100%;opacity:0;position:fixed;top:0;width:100%;z-index:1100}.sidebar-active+#sidebar-dimmer{opacity:.7;transform:translateX(-100%);transition:opacity .5s}}.back-to-top,.post-toc ol a,.posts-collapse .post-header,.posts-collapse .post-header::before,.posts-expand .post-title-link::before{transition-delay:0s;transition-duration:.2s;transition-timing-function:ease-in-out}.sidebar-nav{margin:0;padding-bottom:20px;padding-left:0}.sidebar-nav li{border-bottom:1px solid transparent;color:var(--text-color);cursor:pointer;display:inline-block;font-size:.875em}.sidebar-nav li.sidebar-nav-overview{margin-left:10px}.sidebar-nav li:hover{color:#fc6423}.sidebar-nav .sidebar-nav-active{border-bottom-color:#fc6423;color:#fc6423}.sidebar-nav .sidebar-nav-active:hover{color:#fc6423}.sidebar-panel{display:none;overflow-x:hidden;overflow-y:auto}.sidebar-panel-active{display:block}.sidebar-toggle{background:#222;bottom:45px;cursor:pointer;height:14px;left:30px;padding:5px;position:fixed;width:14px;z-index:1300}@media (max-width:991px){.sidebar-toggle{left:20px;opacity:.8;display:none}}.sidebar-toggle:hover .toggle-line{background:#fc6423}.post-toc{font-size:.875em}.post-toc ol{list-style:none;margin:0;padding:0 2px 5px 10px;text-align:left}.post-toc ol>ol{padding-left:0}.post-toc ol a{transition-property:all}.post-toc .nav-item{line-height:1.8;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.post-toc .nav .active-current>.nav-child,.post-toc .nav .active-current>.nav-child>.nav-item,.post-toc .nav .active>.nav-child,.post-toc .nav .nav-child{display:block}.post-toc .nav .active>a{border-bottom-color:#fc6423;color:#fc6423}.post-toc .nav .active-current>a,.post-toc .nav .active-current>a:hover{color:#fc6423}.site-state{display:flex;justify-content:center;line-height:1.4;margin-top:10px;overflow:hidden;text-align:center;white-space:nowrap}.site-state-item:not(:first-child){border-left:1px solid #eee}.site-state-item a{border-bottom:none}.site-state-item-count{display:block;font-size:1em;font-weight:600;text-align:center}.languages,.powered-by,.theme-info,.with-love{display:inline-block}.site-state-item-name{color:#999;font-size:.8125em}.footer{color:#999;font-size:.875em;padding:20px 0}.footer.footer-fixed{bottom:0;left:0;position:absolute;right:0}.footer-inner{box-sizing:border-box;margin:0 auto;text-align:center;width:calc(100% - 20px)}@media (min-width:1200px){.footer-inner{width:1160px}}@media (min-width:1600px){.footer-inner{width:73%}}.languages{font-size:1.125em;position:relative}.languages .lang-select-label span{margin:0 .5em}.languages .lang-select{height:100%;left:0;opacity:0;position:absolute;top:0;width:100%}.with-love{color:red;margin:0 5px}@-moz-keyframes iconAnimate{0%,100%{transform:scale(1)}10%,30%{transform:scale(.9)}20%,40%,50%,60%,70%,80%{transform:scale(1.1)}}@-webkit-keyframes iconAnimate{0%,100%{transform:scale(1)}10%,30%{transform:scale(.9)}20%,40%,50%,60%,70%,80%{transform:scale(1.1)}}@-o-keyframes iconAnimate{0%,100%{transform:scale(1)}10%,30%{transform:scale(.9)}20%,40%,50%,60%,70%,80%{transform:scale(1.1)}}@keyframes iconAnimate{0%,100%{transform:scale(1)}10%,30%{transform:scale(.9)}20%,40%,50%,60%,70%,80%{transform:scale(1.1)}}.back-to-top{font-size:12px;text-align:center;background:#222;bottom:-100px;box-sizing:border-box;color:#fff;cursor:pointer;opacity:.6;padding:0 6px;position:fixed;transition-property:bottom;z-index:1300;width:24px}.back-to-top span{display:none}.back-to-top:hover{color:#fc6423}.back-to-top.back-to-top-on{bottom:30px}@media (max-width:991px){.back-to-top{left:20px;opacity:.8}}@media (min-width:1200px){.post-body{font-size:1.125em}}.post-body .exturl .fa{font-size:.875em;margin-left:4px}.post-body .figure .caption,.post-body .image-caption{color:#999;font-size:.875em;font-weight:700;line-height:1;margin:-20px auto 15px;text-align:center}.post-sticky-flag{display:inline-block;transform:rotate(30deg)}.post-button{margin-top:40px;text-align:center}.use-motion .collection-header,.use-motion .comments,.use-motion .pagination,.use-motion .post-block,.use-motion .post-body,.use-motion .post-header{opacity:0}.posts-collapse{margin-left:35px;position:relative}@media (max-width:767px){.posts-collapse{margin-left:0;margin-right:0}}.posts-collapse .collection-title{font-size:1.125em;position:relative}.posts-collapse .collection-title::before{background:#999;border:1px solid #fff;border-radius:50%;content:' ';height:10px;left:0;margin-left:-6px;margin-top:-4px;position:absolute;top:50%;width:10px}.posts-collapse .collection-year{font-size:1.5em;font-weight:700;margin:60px 0;position:relative}.posts-collapse .collection-year::before{background:#bbb;border-radius:50%;content:' ';height:8px;left:0;margin-left:-4px;margin-top:-4px;position:absolute;top:50%;width:8px}.posts-collapse .collection-header{display:block;margin:0 0 0 20px}.posts-collapse .collection-header small{color:#bbb;margin-left:5px}.posts-collapse .post-header{border-bottom:1px dashed #ccc;margin:30px 0;padding-left:15px;position:relative;transition-property:border}.posts-collapse .post-header::before,.posts-collapse::before{content:' ';position:absolute;left:0}.posts-collapse .post-header::before{background:#bbb;border:1px solid #fff;border-radius:50%;height:6px;margin-left:-4px;top:.75em;transition-property:background;width:6px}.posts-collapse .post-header:hover{border-bottom-color:#666}.posts-collapse .post-header:hover::before{background:#222}.posts-collapse .post-meta{display:inline;font-size:.75em;margin-right:10px}.posts-collapse .post-title{display:inline}.posts-collapse .post-title a,.posts-collapse .post-title span.exturl{border-bottom:none;color:var(--link-color)}.posts-collapse .post-title .fa-external-link-alt{font-size:.875em;margin-left:5px}.posts-collapse::before{background:#f5f5f5;height:100%;margin-left:-2px;top:1.25em;width:4px}.post-eof{background:#ccc;height:1px;margin:80px auto 60px;text-align:center;width:8%}.post-block:last-of-type .post-eof{display:none}.content{padding-top:40px}@media (min-width:992px){.post-body{text-align:justify}}@media (max-width:991px){.post-body{text-align:justify}}.post-body h1,.post-body h2,.post-body h3,.post-body h4,.post-body h5,.post-body h6{padding-top:10px}.post-body h1 .header-anchor,.post-body h2 .header-anchor,.post-body h3 .header-anchor,.post-body h4 .header-anchor,.post-body h5 .header-anchor,.post-body h6 .header-anchor{border-bottom-style:none;color:#ccc;float:right;margin-left:10px;visibility:hidden}.post-body h1 .header-anchor:hover,.post-body h2 .header-anchor:hover,.post-body h3 .header-anchor:hover,.post-body h4 .header-anchor:hover,.post-body h5 .header-anchor:hover,.post-body h6 .header-anchor:hover{color:inherit}.post-body h1:hover .header-anchor,.post-body h2:hover .header-anchor,.post-body h3:hover .header-anchor,.post-body h4:hover .header-anchor,.post-body h5:hover .header-anchor,.post-body h6:hover .header-anchor{visibility:visible}.post-body iframe,.post-body img,.post-body video{margin-bottom:20px}.post-body .video-container{height:0;margin-bottom:20px;overflow:hidden;padding-top:75%;position:relative;width:100%}.post-body .video-container embed,.post-body .video-container iframe,.post-body .video-container object{height:100%;left:0;margin:0;position:absolute;top:0;width:100%}.post-gallery{align-items:center;display:grid;grid-gap:10px;grid-template-columns:1fr 1fr 1fr;margin-bottom:20px}.post-gallery a{border:0}.post-gallery img{margin:0}.posts-expand .post-header{font-size:1.125em}.posts-expand .post-title{font-size:1.5em;font-weight:400;margin:initial;text-align:center;overflow-wrap:break-word;word-wrap:break-word}.posts-expand .post-title-link{border-bottom:none;color:var(--link-color);display:inline-block;position:relative;vertical-align:top}.posts-expand .post-title-link::before{background:var(--link-color);bottom:0;content:'';height:2px;left:0;position:absolute;transform:scaleX(0);visibility:hidden;width:100%}.posts-expand .post-title-link:hover::before{transform:scaleX(1);visibility:visible}.posts-expand .post-title-link .fa-external-link-alt{font-size:.875em;margin-left:5px}.posts-expand .post-meta{color:#999;font-size:.75em;margin:3px 0 60px;text-align:center}.posts-expand .post-meta .post-description{font-size:.875em;margin-top:2px}.posts-expand .post-meta time{border-bottom:1px dashed #999;cursor:pointer}.post-meta .post-meta-item+.post-meta-item::before{content:'|';margin:0 .5em}.post-meta-divider{margin:0 .5em}.post-meta-item-icon{margin-right:3px}@media (max-width:991px){.post-meta-item-icon{display:inline-block}.post-meta-item-text{display:none}}.post-nav{border-top:1px solid #eee;display:flex;justify-content:space-between;margin-top:15px;padding:10px 5px 0}.post-nav-item{flex:1}.post-nav-item a{border-bottom:none;display:block;font-size:.875em;line-height:1.6;position:relative}.post-nav-item a:active{top:2px}.post-nav-item .fa{font-size:.75em}.post-nav-item:first-child{margin-right:15px}.post-nav-item:first-child .fa{margin-right:5px}.post-nav-item:last-child{margin-left:15px;text-align:right}#qr p,.category-all-page .category-all-title,.event-list .event .event-details::before,.post-tags,.post-widgets,.reward-container,.sidebar-button,.social-like,.tag-cloud,.wp_rating,ul.breadcrumb{text-align:center}.post-nav-item:last-child .fa{margin-left:5px}.rtl.post-body a,.rtl.post-body h1,.rtl.post-body h2,.rtl.post-body h3,.rtl.post-body h4,.rtl.post-body h5,.rtl.post-body h6,.rtl.post-body li,.rtl.post-body ol,.rtl.post-body p,.rtl.post-body ul{direction:rtl;font-family:UKIJ Ekran}.rtl.post-title{font-family:UKIJ Ekran}.post-tags{margin-top:40px}.post-tags a{display:inline-block;font-size:.8125em}.post-tags a:not(:last-child){margin-right:10px}.post-widgets{border-top:1px solid #eee;margin-top:15px}.wp_rating{height:20px;line-height:20px;margin-top:10px;padding-top:6px}.social-like{display:flex;font-size:.875em;justify-content:center}.reward-container{margin:20px auto;padding:10px 0;width:90%}.reward-container button{background:#ff2a2a;border:0;border-radius:5px;color:#fff;cursor:pointer;line-height:2;outline:0;padding:0 15px;vertical-align:text-top}.reward-container button:hover{background:#f55}#qr{padding-top:20px}#qr a{border:0}#qr img{display:inline-block;margin:.8em 2em 0;max-width:100%;width:180px}.post-copyright{background:var(--card-bg-color);border-left:3px solid #ff2a2a;list-style:none;margin:2em 0 0;padding:.5em 1em}.my_post_copyright{width:85%;max-width:45em;margin:2.8em auto 0;padding:.5em 1em;border:1px solid #d3d3d3;font-size:.93rem;line-height:1.6em;word-break:break-all;background:rgba(255,255,255,.4)}.my_post_copyright p{margin:0}.my_post_copyright span{display:inline-block;width:5.2em;color:#333;font-weight:700}.my_post_copyright .raw{margin-left:1em;width:5em}.my_post_copyright a{color:grey;border-bottom:0}.my_post_copyright a:hover{color:#0593d3;text-decoration:underline}.my_post_copyright:hover .fa-clipboard{color:#000}.my_post_copyright .post-url:hover{font-weight:400}.my_post_copyright .copy-path{margin-left:1em;width:1em}@media (max-width:767px){.post-gallery{grid-template-columns:1fr 1fr}.my_post_copyright .copy-path{display:none}}.my_post_copyright .copy-path:hover{color:grey;cursor:pointer}.category-all-page .category-all{margin-top:20px}.category-all-page .category-list{list-style:none;margin:0;padding:0}.category-all-page .category-list-item{margin:5px 10px}.category-all-page .category-list-count{color:#bbb}.category-all-page .category-list-count::before{content:' (';display:inline}.category-all-page .category-list-count::after{content:') ';display:inline}.category-all-page .category-list-child{padding-left:10px}.event-list{padding:0}.event-list hr{background:#222;margin:20px 0 45px}.event-list hr::after{background:#222;color:#fff;content:'NOW';display:inline-block;font-weight:700;padding:0 5px;text-align:right}.event-list .event{background:#222;margin:20px 0;min-height:40px;padding:15px 0 15px 10px}.event-list .event .event-summary{color:#fff;margin:0;padding-bottom:3px}.event-list .event .event-summary::before{animation:dot-flash 1s alternate infinite ease-in-out;color:#fff;content:'\f111';display:inline-block;font-size:10px;margin-right:25px;vertical-align:middle;font-family:'Font Awesome 5 Free';font-weight:900}.event-list .event .event-relative-time{color:#bbb;display:inline-block;font-size:12px;font-weight:400;padding-left:12px}.event-list .event .event-details{color:#fff;display:block;line-height:18px;margin-left:56px;padding-bottom:6px;padding-top:3px;text-indent:-24px}.event-list .event .event-details::before{color:#fff;display:inline-block;margin-right:9px;text-indent:0;width:14px;font-family:'Font Awesome 5 Free';font-weight:900}.event-list .event .event-details.event-location::before{content:'\f041'}.event-list .event .event-details.event-duration::before{content:'\f017'}.event-list .event-past{background:#f5f5f5}.event-list .event-past .event-details,.event-list .event-past .event-summary{color:#bbb;opacity:.9}.event-list .event-past .event-details::before,.event-list .event-past .event-summary::before{animation:none;color:#bbb}@-moz-keyframes dot-flash{from{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}@-webkit-keyframes dot-flash{from{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}@-o-keyframes dot-flash{from{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}@keyframes dot-flash{from{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}ul.breadcrumb{font-size:.75em;list-style:none;margin:1em 0;padding:0 2em}ul.breadcrumb li{display:inline}ul.breadcrumb li+li::before{content:'/\00a0';font-weight:400;padding:.5em}ul.breadcrumb li+li:last-child{font-weight:700}.tag-cloud a{display:inline-block;margin:10px}.tag-cloud a:hover{color:var(--link-hover-color)!important}.header{margin:0 auto;position:relative;width:calc(100% - 20px)}@media (min-width:1200px){.header{width:1160px}}@media (min-width:1600px){.header{width:73%}}@media (max-width:991px){.header{width:auto}}.header-inner{background:var(--content-bg-color);border-radius:initial;box-shadow:0 2px 2px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.06),0 1px 5px 0 rgba(0,0,0,.12);overflow:hidden;padding:0;position:absolute;top:0;width:240px}@media (min-width:1200px){.header-inner{width:240px}}.main-inner{align-items:flex-start;display:flex;justify-content:space-between;flex-direction:row-reverse}@media (max-width:991px){.header-inner{border-radius:initial;position:relative;width:auto}.main-inner{width:auto}}.content-wrap{border-radius:initial;box-sizing:border-box;width:calc(100% - 252px)}@media (max-width:991px){.content-wrap{border-radius:initial;padding:20px;width:100%}}.footer-inner{padding-left:260px}.back-to-top{left:auto;right:30px}.site-brand-container{background:#222}@media (max-width:991px){.back-to-top{right:20px}.footer-inner{padding-left:0;padding-right:0;width:auto}.site-brand-container{box-shadow:0 0 16px rgba(0,0,0,.5)}.custom-logo-image{display:none}}.site-meta{padding:20px 0}.brand{padding:0}.site-subtitle{margin:10px 10px 0}.custom-logo-image{margin-top:20px}.site-nav-right .toggle,.site-nav-toggle .toggle{color:#fff}.site-nav-right .toggle .toggle-line,.site-nav-toggle .toggle .toggle-line{background:#fff}@media (min-width:768px) and (max-width:991px){.site-nav-right,.site-nav-toggle{display:flex;flex-direction:column;justify-content:center}.site-nav{display:none}}.menu .menu-item{display:block;margin:0}.menu .menu-item a,.menu .menu-item span.exturl{padding:5px 20px;position:relative;text-align:left;transition-property:background-color}@media (max-width:991px){.menu .menu-item.menu-item-search{display:none}}.menu .menu-item .badge{background:#ccc;border-radius:10px;color:#fff;float:right;padding:2px 5px;text-shadow:1px 1px 0 rgba(0,0,0,.1);vertical-align:middle}.main-menu .menu-item-active a::after{background:#bbb;border-radius:50%;content:' ';height:6px;margin-top:-3px;position:absolute;right:15px;top:50%;width:6px}.sidebar-inner,.sub-menu{background:var(--content-bg-color)}.sub-menu{margin:0;padding:6px 0}.sub-menu .menu-item{display:inline-block}.sub-menu .menu-item a,.sub-menu .menu-item span.exturl{background:0 0;margin:5px 10px;padding:initial}.sub-menu .menu-item a:hover,.sub-menu .menu-item span.exturl:hover{background:0 0;color:#fc6423}.sub-menu .menu-item-active a{border-bottom-color:#fc6423;color:#fc6423}.sub-menu .menu-item-active a:hover{border-bottom-color:#fc6423}.sidebar{background:var(--body-bg-color);box-shadow:none;margin-top:100%;position:static;width:240px}@media (max-width:991px){.sidebar{display:none}}.sidebar-toggle{display:none}.sidebar-inner{border-radius:initial;box-shadow:0 2px 2px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.06),0 1px 5px 0 rgba(0,0,0,.12),0 -1px .5px 0 rgba(0,0,0,.09);box-sizing:border-box;color:var(--text-color);width:240px;opacity:0}.sidebar-inner.affix{position:fixed;top:12px}.sidebar-inner.affix-bottom{position:absolute}.site-state-item{padding:0 10px}.sidebar-button{border-bottom:1px dotted #ccc;border-top:1px dotted #ccc;margin-top:10px}.sidebar-button a{border:0;color:#fc6423;display:block}.sidebar-button a:hover{background:0 0;border:0;color:#e34603}.sidebar-button a:hover .fa,.sidebar-button a:hover .fab,.sidebar-button a:hover .far,.sidebar-button a:hover .fas{color:#e34603}.links-of-author{display:flex;flex-wrap:wrap;margin-top:10px;justify-content:center}.links-of-author-item{margin:5px 0 0;width:50%}.comments,.post-block+.post-block{margin-top:12px}.links-of-author-item a,.links-of-author-item span.exturl{box-sizing:border-box;margin-bottom:0;margin-right:0;max-width:216px;overflow:hidden;padding:0 5px;text-overflow:ellipsis;white-space:nowrap;border-bottom:none;display:block;text-decoration:none}.links-of-author-item a::before,.links-of-author-item span.exturl::before,.post-eof{display:none}.links-of-author-item a:hover,.links-of-author-item span.exturl:hover{background:var(--body-bg-color);border-radius:4px}.links-of-author-item .fa,.links-of-author-item .fab,.links-of-author-item .far,.links-of-author-item .fas{margin-right:2px}.links-of-blogroll-item{padding:0}.content-wrap{background:initial;box-shadow:initial;padding:initial}.comments,.post-block{padding:40px;background:var(--content-bg-color)}.post-block{border-radius:initial;box-shadow:0 2px 2px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.06),0 1px 5px 0 rgba(0,0,0,.12)}.comments,.pagination,.post-block+.post-block{border-radius:initial;box-shadow:0 2px 2px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.06),0 1px 5px 0 rgba(0,0,0,.12),0 -1px .5px 0 rgba(0,0,0,.09)}.tabs-comment{margin-top:1em}.content{padding-top:initial}.pagination{background:var(--content-bg-color);border-top:initial;margin:12px 0 0;padding:10px 0}.pagination .next,.pagination .page-number,.pagination .prev{margin-bottom:initial;top:initial}.main{padding-bottom:initial}.footer{bottom:auto}.sub-menu{border-bottom:initial;box-shadow:0 2px 2px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.06),0 1px 5px 0 rgba(0,0,0,.12)}.sub-menu+.content .post-block{box-shadow:0 2px 2px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.06),0 1px 5px 0 rgba(0,0,0,.12),0 -1px .5px 0 rgba(0,0,0,.09);margin-top:12px}@media (min-width:768px) and (max-width:991px){.sub-menu+.content .post-block{margin-top:10px}}@media (max-width:767px){.sub-menu+.content .post-block{margin-top:8px}}.post-body h1,.post-body h2{border-bottom:1px solid #eee}.post-body h3{border-bottom:1px dotted #eee}@media (min-width:768px) and (max-width:991px){.content-wrap{padding:10px}.posts-expand .post-button{margin-top:20px}.comments,.post-block+.post-block{margin-top:10px}.post-block{border-radius:initial;box-shadow:0 2px 2px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.06),0 1px 5px 0 rgba(0,0,0,.12),0 -1px .5px 0 rgba(0,0,0,.09);padding:20px}.comments{padding:10px 20px}.pagination{margin:10px 0 0}}@media (max-width:767px){.content-wrap{padding:8px}.posts-expand .post-button{margin:12px 0}.comments,.post-block+.post-block{margin-top:8px}.post-block{border-radius:initial;box-shadow:0 2px 2px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.06),0 1px 5px 0 rgba(0,0,0,.12),0 -1px .5px 0 rgba(0,0,0,.09);min-height:auto;padding:12px}.comments{padding:10px 12px}.pagination{margin:8px 0 0}} \ No newline at end of file diff --git a/index.html b/index.html index b2bd8ae08d31d78524b7469995a00a557da9af41..9d0b4f70c2b6a5fe18470580e75cf6a47a21ea82 100644 --- a/index.html +++ b/index.html @@ -1,4 +1,4 @@ -Alderaan的博客
0%

​ 本文主要说明在Hexo博客nexT主题下如何进行美化,具体对应效果可通过本博客页面进行查看。

  • Hexo version: 4.2.0
  • nexT version:7.8.0
阅读全文 »

概述

​ 近来发现,之前学习过、实践过的东西,要用的时候经常一时想不起来。习惯性添加进谷歌浏览器的书签,也会因为对方博客文章删除等无法继续看到。特别的是,部署一个东西需要看几个网上资源才可以完成,书签列表越来越长,难以维护。为此,觉得还是很有必要通过写博客的方式进行分类记录,也方便分享经验。本着能折腾就不闲着的宗旨,在网上查阅有关资料后,决定在GitHub上搭建Hexo个人博客,顺便学习使用Markdown

阅读全文 »
Alderaan的博客
0%

概述

​ 想要实现4G上网有两种方式,要么加多一个4G路由器,再通过优先接入;要么通过增加4G模块(可为USB或PCIE等多种接口),直接进行拨号上网。尝试在一款J1900工控机上(该工控机自带SIM插槽),通过增加PCIE接口的美格4G模块SLM750,进行拨号上网。Windows系统下已测试过,直接安装厂家提供驱动,可以正常上网,说明硬件方面是完全支持的。本文参照厂家提供的嵌入式方案,进行驱动编译安装,并编译拨号软件,最终实现工控机4G上网功能。

阅读全文 »

概述

​ 之前修好后的MacBook Pro (13-inch, Mid 2010),去年开始就发现偶尔找不到自带的无线网卡,用着也还经常死机。屏蔽了无线功能后,一直只能有线上网。最近终于忍不住,要无线上网了。。。由于囊中羞涩,先找了一块MERCURY(水星)的usb无线网卡MW150US 2.0 (170107),想在macOS Hight Sierra 10.13.5上驱动它。

阅读全文 »

概述

​ 由于博客使用的插件较多,文章内包含的图片越多越大,会影响到博客的加载速度,影响访问效果。其中图片对文章加载速度影响较大,如果可以的话,可以使用国内的一些图床,但如果图床挂了,也会导致图片无法访问,迁移麻烦等,所以本博客还是挂在Github上进行访问。为此开始从资源文件大小上进行优化,了解到可以使用Gulp对博客的js、css、img、html等静态资源文件进行压缩。

阅读全文 »

​ 本文主要说明在Hexo博客nexT主题下如何进行美化,具体对应效果可通过本博客页面进行查看。

  • Hexo version: 4.2.0
  • nexT version:7.8.0
阅读全文 »

概述

​ 近来发现,之前学习过、实践过的东西,要用的时候经常一时想不起来。习惯性添加进谷歌浏览器的书签,也会因为对方博客文章删除等无法继续看到。特别的是,部署一个东西需要看几个网上资源才可以完成,书签列表越来越长,难以维护。为此,觉得还是很有必要通过写博客的方式进行分类记录,也方便分享经验。本着能折腾就不闲着的宗旨,在网上查阅有关资料后,决定在GitHub上搭建Hexo个人博客,顺便学习使用Markdown

阅读全文 »
\ No newline at end of file +
\ No newline at end of file diff --git a/tags/4G-module/index.html b/tags/4G-module/index.html new file mode 100644 index 0000000000000000000000000000000000000000..29f1809a34f22a2de539da908db3019f8560dafb --- /dev/null +++ b/tags/4G-module/index.html @@ -0,0 +1,21 @@ +标签: 4G module | Alderaan的博客
0%
\ No newline at end of file diff --git a/tags/Driver/index.html b/tags/Driver/index.html new file mode 100644 index 0000000000000000000000000000000000000000..479a568d2d991ec2c3c829a2c9e5026d8bf689bd --- /dev/null +++ b/tags/Driver/index.html @@ -0,0 +1,21 @@ +标签: Driver | Alderaan的博客
0%
\ No newline at end of file diff --git a/tags/Github/index.html b/tags/Github/index.html index 1ac16b827490179abbeb57d67cdb15a22552f6e9..ac1156dd8799b6ec122fdb0cd7f702bb3f085382 100644 --- a/tags/Github/index.html +++ b/tags/Github/index.html @@ -18,4 +18,4 @@ localStorage.setItem('comments_active', commentClass); }); } -
\ No newline at end of file +
\ No newline at end of file diff --git a/tags/Gulp/index.html b/tags/Gulp/index.html new file mode 100644 index 0000000000000000000000000000000000000000..829595391b0b95986b8614809872209f8d4b8b6d --- /dev/null +++ b/tags/Gulp/index.html @@ -0,0 +1,21 @@ +标签: Gulp | Alderaan的博客
0%
\ No newline at end of file diff --git a/tags/Hexo/index.html b/tags/Hexo/index.html index 18afa20c7d9f6761f8999796c3f4243e123ea0eb..4031827e95183c115e6ddfa55cf39274cf972ad1 100644 --- a/tags/Hexo/index.html +++ b/tags/Hexo/index.html @@ -1,4 +1,4 @@ -标签: Hexo | Alderaan的博客
0%
标签: Hexo | Alderaan的博客
0%
\ No newline at end of file +
\ No newline at end of file diff --git a/tags/MW150US/index.html b/tags/MW150US/index.html new file mode 100644 index 0000000000000000000000000000000000000000..7994d8e0043763b05d4502d19bf4c591d7921c15 --- /dev/null +++ b/tags/MW150US/index.html @@ -0,0 +1,21 @@ +标签: MW150US | Alderaan的博客
0%
\ No newline at end of file diff --git a/tags/MacOS/index.html b/tags/MacOS/index.html new file mode 100644 index 0000000000000000000000000000000000000000..4193b4a1b05e04a6eb643e8ef45034ac08b9faab --- /dev/null +++ b/tags/MacOS/index.html @@ -0,0 +1,21 @@ +标签: MacOS | Alderaan的博客
0%
\ No newline at end of file diff --git a/tags/SSH/index.html b/tags/SSH/index.html index 546e3fdf5b48cf0899aa9d912f93359f8158d585..8b10f143eca84808aab6f69fe527568a1abd0e4b 100644 --- a/tags/SSH/index.html +++ b/tags/SSH/index.html @@ -18,4 +18,4 @@ localStorage.setItem('comments_active', commentClass); }); } -
\ No newline at end of file +
\ No newline at end of file diff --git a/tags/centos/index.html b/tags/centos/index.html new file mode 100644 index 0000000000000000000000000000000000000000..f30f28280f50385eed42bc165b63b52e5dae80a2 --- /dev/null +++ b/tags/centos/index.html @@ -0,0 +1,21 @@ +标签: centos | Alderaan的博客
0%
\ No newline at end of file diff --git a/tags/index.html b/tags/index.html index 1d924b11603c0622240fd24c803fd0dde6649821..fe3309b20e2250c0ac020894115c9e09af679ea1 100644 --- a/tags/index.html +++ b/tags/index.html @@ -1,4 +1,4 @@ -标签 | Alderaan的博客
0%

标签

目前共计 3 个标签
标签 | Alderaan的博客
0%

标签

\ No newline at end of file +
\ No newline at end of file diff --git a/tags/slm750/index.html b/tags/slm750/index.html new file mode 100644 index 0000000000000000000000000000000000000000..574c1ce70bd09a1a6a7edaeb3408d1ad4646e71e --- /dev/null +++ b/tags/slm750/index.html @@ -0,0 +1,21 @@ +标签: slm750 | Alderaan的博客
0%
\ No newline at end of file