Cococs Creator 3.0制作点击回弹效果

给想要添加点击回弹效果的节点添加 cc.Button 组件,然后设置该组件的 Transition 值为 SCALE 即可:

消失的磁盘空间去哪了?

过了几天,磁盘空间终究还是又满了?使用了之前的清理日志的方法只能腾出几百M的空间了。

使用 du 命令查看根目录,发现根目录只占17G,整个磁盘40G,剩下的20多G去哪了呢?

1
2
3
root@lolimay:/# du -sch $(ls --color=never --all) 2> /dev/null | sort -rh
17G total
17G .

通过这篇文章发现可以通过 lsof | grep deleted 命令找到被删除的文件(在文件系统中找不到了),但是由于程序还在运行,导致这个被删除的文件仍被占用,从而占用的磁盘空间不能被释放:

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
root@lolimay:/# lsof | grep deleted | awk '{for(i=1;i<=6;i++){printf "%s ", $i}; print $7/1048576 "MB" " "$8" "$9 }'
nginx 1605 root 2w REG 253,1 0.00390625MB 1454073 /www/wwwlogs/nginx_error.log
nginx 1605 root 4w REG 253,1 0.00390625MB 1454073 /www/wwwlogs/nginx_error.log
nginx 1605 root 5w REG 253,1 0.000277519MB 1861658 /www/server/nginx/off
nginx 1605 root 7w REG 253,1 0.0984421MB 1454074 /www/wwwlogs/api.lolimay.cn.log
nginx 1605 root 8w REG 253,1 0.000199318MB 1454082 /www/wwwlogs/api.lolimay.cn.error.log
nginx 1605 root 9w REG 253,1 0MB 1454083 /www/wwwlogs/csec.lolimay.cn.log
nginx 1605 root 10w REG 253,1 0MB 1454084 /www/wwwlogs/csec.lolimay.cn.error.log
nginx 1605 root 11w REG 253,1 0.00923347MB 1454085 /www/wwwlogs/devtool.lolimay.cn.log
nginx 1605 root 12w REG 253,1 0.0195312MB 1454086 /www/wwwlogs/devtool.lolimay.cn.error.log
nginx 1605 root 13w REG 253,1 0.00899124MB 1454154 /www/wwwlogs/kugou-dev.lolimay.cn.log
nginx 1605 root 14w REG 253,1 0.0195312MB 1454155 /www/wwwlogs/kugou-dev.lolimay.cn.error.log
nginx 1605 root 15w REG 253,1 6.06264MB 1454156 /www/wwwlogs/kugou.lolimay.cn.log
nginx 1605 root 16w REG 253,1 15.3351MB 1454157 /www/wwwlogs/kugou.lolimay.cn.error.log
nginx 1605 root 17w REG 253,1 0.000652313MB 1454158 /www/wwwlogs/kugouv2.lolimay.cn.log
nginx 1605 root 18w REG 253,1 0MB 1454159 /www/wwwlogs/kugouv2.lolimay.cn.error.log
nginx 1605 root 19w REG 253,1 15.8019MB 1454160 /www/wwwlogs/lolimay.cn.log
nginx 1605 root 20w REG 253,1 0.128906MB 1457104 /www/wwwlogs/mmic.lolimay.cn.log
nginx 1605 root 21w REG 253,1 0MB 1457105 /www/wwwlogs/mmic.lolimay.cn.error.log
nginx 1605 root 22w REG 253,1 20948.7MB 1457106 /www/wwwlogs/proxy.lolimay.cn.log <<< 好家伙,20G的空间竟然在这!
nginx 1605 root 23w REG 253,1 147.82MB 1457107 /www/wwwlogs/proxy.lolimay.cn.error.log
nginx 1606 www 2w REG 253,1 0.00390625MB 1454073 /www/wwwlogs/nginx_error.log
nginx 1606 www 4w REG 253,1 0.00390625MB 1454073 /www/wwwlogs/nginx_error.log
nginx 1606 www 5w REG 253,1 0.000277519MB 1861658 /www/server/nginx/off
nginx 1606 www 7w REG 253,1 0.0984421MB 1454074 /www/wwwlogs/api.lolimay.cn.log
nginx 1606 www 8w REG 253,1 0.000199318MB 1454082 /www/wwwlogs/api.lolimay.cn.error.log
nginx 1606 www 9w REG 253,1 0MB 1454083 /www/wwwlogs/csec.lolimay.cn.log
nginx 1606 www 10w REG 253,1 0MB 1454084 /www/wwwlogs/csec.lolimay.cn.error.log
nginx 1606 www 11w REG 253,1 0.00923347MB 1454085 /www/wwwlogs/devtool.lolimay.cn.log
nginx 1606 www 12w REG 253,1 0.0195312MB 1454086 /www/wwwlogs/devtool.lolimay.cn.error.log
nginx 1606 www 13w REG 253,1 0.00899124MB 1454154 /www/wwwlogs/kugou-dev.lolimay.cn.log

我们重启 nginx 进程即可释放这些空间:

1
service nginx restart

再看一下一下磁盘占用:

1
2
3
4
5
6
7
8
root@lolimay:/# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 1.8M 3.9G 1% /dev/shm
tmpfs 3.9G 532K 3.9G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/vda1 40G 17G 21G 45% /
tmpfs 783M 0 783M 0% /run/user/0

舒服了,瞬间有 21G 可用空间了。

为了解除后顾之忧,我们直接在 nginx 的配置文件中把这个站点的日志功能关闭:

1
2
access_log  off;
error_log off;

MISCONF Redis is configured to save RDB snapshots

禁用 Redis 存储快照到磁盘上就可以了:

1
2
3
redis-cli
> config set stop-writes-on-bgsave-error no
> quit

Vim进阶(2021-03-29)

参考文章:7 Vim Tips That Changed My Life (With Demo)

  1. Jump to the matching bracket/brack ([, {, }, ] 等)

通过 % 可以快速跳转到最近的一个括号

  1. Fix indentation in the whole file

通过 = G 可以快速自动修复文档中的缩进问题,但实际上我在 VSCode 中更偏爱使用 Command+F 快捷键来快速格式化文档

  1. Search for word currently under cursor

通过 * 可以快速跳转到下一个和光标下相同的词

ESLint检查svelte文件

在项目根目录创建了 .eslintrc 配置文件,内容如下:

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
{
"parserOptions": {
"ecmaVersion": 2020,
"sourceType": "module"
},
"env": {
"es6": true,
"browser": true
},
"rules": {
"semi": ["error", "never"]
},
"plugins": [
"svelte3"
],
"overrides": [
{
"files": [
"*.svelte"
],
"processor": "svelte3/svelte3"
}
],
"ignorePatterns": ["scripts/*"]
}

个人习惯是语句末尾不加分号,但是以上规则在 VSCode 中没生效,ESLint 只检查了 JavaScript 文件。

解决方案,修改 VSCode 用户 settings.json 配置文件,添加以下配置项:

1
2
3
4
"eslint.validate": [
"javascript",
"svelte"
]

这样在 VSCode 中就会检查 svelte 文件中的 JavaScript 语法了。

重启mongod服务

之前有一起听歌用户反馈排行榜列表好几天没更新了,今天检查了 mongod 服务,原来 mongoDB 的服务启动失败了。下面是一些操作的记录:

1
2
3
4
service mongod status # 查看 mongod 服务的状态
service mongod start # 启动 mongod 服务

chkconfig mongod on # 将 mongod 服务加入到开机自启

常用CLI工具使用代理

1
2
3
4
5
6
7
# npm
npm config set http=http://localhost://50321
npm config set https-proxy=http://localhost://50321

# yarn
yarn config set http=http://localhost://50321
yarn config set https-proxy=http://localhost://50321

因为,npm 默认的 registry 是 https://registry.npmjs.org,所以第二条设置才是有效的。

搭建Isso自建评论系统

之前博客的评论系统一直用的是 Disqus,但是 Disqus 在国内被墙了,必须通过代理才能访问,这导致在国内的体验不是很好。工信部又发通知不允许第三方平台提供非注册用户发表评论跟帖的功能,于是多说、网易云跟帖这些评论平台也快速倒闭。韩国还有一个来必力可以用,但是个人无感。

最终打算使用 Isso 搭建自建评论系统,具体介绍见官网简介,我这里直接记录搭建过程。

安装 Isso

1
2
yum install sqlite python36-devel # 安装依赖 (python36-devel用于 gcc 编译 misaka 插件)
python3 -m pip install isso --user # 安装 isso

配置 Isso

在用户目录下新建一个 isso 文件夹,isso.conf 配置文件(用来配置 isso),其中 isso.conf 的内容示例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# 通用配置
[general]
# 数据库文件路径,把 /root/ 替换成你自己的用户路径 (必填)
dbpath = /root/isso/data.db
# 配置文件的名字,如果该服务器上只搭建一个 Isso 的话可以忽略,搭建多个 Isso 的话需要设置 (可选)
name = blog
# 是你引用 Isso JavaSript 文件的博客地址,需要写全,如果有的话就多加几行,只有一个域名的话留下一个即可 (必填)
host = https://lolimay.cn
https://www.lolimay.cn
# 是否开启邮件通知,设置了 SMTP 就要在下面的 [smtp] 设置右键发送方式 (可选)
notify = smtp
# 日志文件路径 (可选)
log-file = /root/isso/log

# 服务器配置
[server]
# 本地监听端口号
listen = http://localhost:53051/

# 评论审核
[moderation]
# 是否开启邮件审核,这里直接关闭了
enabled = false
# 在审核队列中的邮件,超时30天未审核直接移除
purge-after = 30d

# 你自己的 SMTP 配置,我这里使用的是 QQ 邮箱服务
[smtp]
# SMTP 用户名
username = service@lolimay.cn
# SMTP 密码
password = <替换成你的SMTP密码>
# SMTP 域名
host = smtp.qq.com
# SMTP 端口
port = 465
# SMTP 加密方式,选项有 ssl, starttls (TLS) QQ邮箱不支持 TLS 请使用 ssl 选项
security = ssl
# 接受邮件通知的邮箱
to = shiqi.mei@lolimay.cn
# 标题
from = "Isso 评论"<service@lolimay.cn>
# 超时
timeout = 10

# Misaka Markdown 插件
[markup]
# 选项
options = strikethrough, superscript, autolink
# 评论允许的 HTML 标签,默认允许的有 a, blockquote, br, code, del, em, h1, h2, h3, h4, h5, h6, hr, ins, li, ol, p, pre, strong, table, tbody, td, th, thead, ul,可以根据自己的情况修改
allowed-elements =
# 评论允许的 HTML 标签属性,默认只允许 align 和 href
allowed-attributes =

# 防火墙配置
[guard]
# 是否开启防火墙,可以防止被恶意评论
enabled = true
# 访客每分钟评论次数
ratelimit = 10
# 评论回复次数
direct-reply = 100
# 是否可以回复自己的评论
reply-to-self = true
# 是否要求写名字
require-author = true
# 是否要求写 email 地址
require-email = true

# 加密选项
[hash]
# 加密评论的身份方式,如 email 地址,没有特殊需求可以忽略这项
salt = Eech7co8Ohloopo9Ol6baimi
algorithm = pbkdf2

保存配置文件后,就可以启动 isso 看输出消息是否正常:

1
isso -c ~/isso/isso.conf

检查日志文件,查看是否有错误信息:

1
cat ~/isso/log

预期内容如下,如果日志输出不是类似下面这个内容,则需要手动排错:

1
2
connected to SMTP server
connected to https://lolimay.cn

配置 Nginx 反向代理 Isso 服务

修改网站的 Nginx 配置,添加代理规则:

1
2
3
4
5
6
7
location /isso/ {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Script-Name /isso;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://localhost:53051/;
}

保存后访问,https://lolimay.cn/isso 或者 https://www.lolimay.cn/isso 后显示:

1
2
Bad Request
missing uri query

就表示反向代理配置成功了,如果都没问题,就可以 Ctrl+C 先停止 Isso 了。

使用 pm2 部署 Isso

1
2
pm2 start python3 --name "isso" -- /usr/local/bin/isso -c /root/isso/isso.conf
pm2 save # 保存当前进程列表,这样即使系统重启后也会自动恢复

在博客源码中引用

1
2
3
4
5
6
7
<% if (page.comments) { %>
<!-- 部分配置需要和后端的 isso.conf 中的配置一致 -->
<script data-isso="/isso/" src="/isso/js/embed.min.js" data-isso-css="true"
data-isso-reply-to-self="true" data-isso-require-author="true" data-isso-require-email="true"
data-isso-max-comments-top="10" data-isso-max-comments-nested="5" data-isso-reveal-on-click="5" data-isso-avatar="true" data-isso-avatar-bg="#f0f0f0" data-isso-avatar-fg="#9abf88 #5698c4 #e279a3 #9163b6" data-isso-vote="true" data-vote-levels=""></script>
<section id="isso-thread"></section>
<% } %>

最后重新部署博客不出意外应该就可以看到成果了:

当然,如果你觉得自带的样式太简陋的话可以自己写一点 CSS 覆盖即可。

参考链接

  1. Debian / Ubuntu 搭建 Isso 评论系统教程

数据链路层课程笔记

视频源地址:计算机网络微课堂 - 湖科大教书匠

数据链路层以帧为单位传输数据

数据链路层的三个重要问题:封装成帧、差错检测、可靠传输。

封装成帧

  1. 帧头和帧尾中包含有重要的控制信息
  2. 帧头和帧尾的作用之一是帧定界
  3. 使用字符(节)填充、比特填充来实现透明传输

为了提高帧的传输效率,应尽可能使帧的数据部分的长度大一些,但是每一种数据链路层协议都规定了帧的数据部分的长度上限,称为最大传送单元MTU(Maximum Transfer Unit)。

差错检测

可能会出现比特差错(误码),1可能会变成0,使用差错检测码FCS来检验,一般采用循环冗余校验CRC(Cyclic Redundancy Check)来进行差错检测。

  1. CRC算法要求生成多项式必须包含最低次项

CRC校验码计算举例:

Git使用代理克隆仓库

克隆GitHub大型仓库(几十M以上的项目)一直是我的一个痛点。由于众所周知的原因,克隆GitHub上的仓库的速率正常只有十几KB/s,按这个速度不知道要到猴年马月才能把代码克隆下来。

使用下面这个命令:

1
2
3
4
5
6
7
8
I git clone https://github.com/lolimay/engine.git --config "https.proxy=http://localhost:49804"
Cloning into 'engine'...
remote: Enumerating objects: 137, done.
remote: Counting objects: 100% (137/137), done.
remote: Compressing objects: 100% (116/116), done.
remote: Total 115399 (delta 45), reused 47 (delta 19), pack-reused 115262
Receiving objects: 100% (115399/115399), 71.42 MiB | 310.00 KiB/s, done.
Resolving deltas: 100% (87791/87791), done.

使用 --config "https.proxy=本地代理地址" 命令可以以几百K的速度克隆仓库,记住一定要是克隆的 https:// 协议开头的链接,git@ 开头的协议代理没用。

克隆下仓库后再重新设置 remote 地址,不然每次 push 上去的时候都得输 GitHub 账号密码:

1
2
cd engine
git remote set-url origin git@github.com:lolimay/engine.git