4月
16
在项目中,我们通常会用到 mysql、redis 数据库。有时候再额外使用 sqlite 数据库也不错。 那就开搞。
centos 一般会默认安装了 sqlite 数据库。只是版本都比较落后。
# 查看 sqlite3 的版本
sqlite3 --version
# 如果没有安装那就更好。如果安装了,就先卸载这玩意
yum remove sqlite3
安装最新版本的 sqlite3
https://www.sqlite.org/download.html
官网列出了 sqlite3 的下载地址。我们选择最新的版本地址,是包含 includes a "configure" script
的版本。当前最新版本是 3.41.2。
开始安装吧。
# 喜欢将一些需要编译安装的包放在这里
cd /usr/local/src/service
wget https://www.sqlite.org/2023/sqlite-autoconf-3410200.tar.gz
tar -xzvf sqlite-autoconf-3410200.tar.gz
cd sqlite-autoconf-3410200
./configure --prefix=/usr/local
make && make install
# 建立软链
ln -s /usr/local/bin/sqlite3 /usr/bin/sqlite3
# 查看版本
sqlite3 --version
到此 sqlite3 最新版本已经安装完成了。
4月
15
css 是没有父元素选择器的。可是现在有伪选择器 has
,这个可以实现父选择器的愿望。通过 has 这个词,也很容易记住和理解。就像一个反向思维一样,本来需要一个父级,那如果我父级就在那,我判断是否有子集不就通了吗。而 css 从来都是从父到子到兄的。
https://developer.mozilla.org/zh-CN/docs/Web/CSS/:has
为什么要搞这玩意呢。还是因为在使用 element-ui 的上传组件时,当用户选择了一张图片后,上传按钮还是显示在那地方。这样体验很差也不好看。即使你加了 limit:1 的控制也不行。不知道为啥会这样(我没找到对应的 api 还是就是这样呢)。
既然这样了,那总得处理。最直接的一种方式是通过 js + css 的方式。对于 html,只要 js + css 是没有搞不定的。可是这样代码不好看了啊,也增加了多余的逻辑。通过观察组件的 dom 结构,可以发现,不管是否有选择的图片,上传按钮的兄弟级存在一个 li
标签。 只要选择了图片或默认存在的图片,都会存在一个
样式为 .el-upload-list__item
的 div。那好,这个时候就想到,如果存在父选择器,再通过父选择器的兄弟选择,通过 display:none
,不就可以隐藏了吗。
可是,可是就是没有父选择器啊。可是,可是 has 伪选择器就是可以实现这样一个场景就是父选择器。
下边是 element ui 的上传组件的结构(精简模拟的)
# 没选择图片的
<div class="upload-card">
<li></li>
<div class="upload-btn">
</div>
</div>
# 选择图片的
<div class="upload-card">
<li>
<div class="el-upload-list__item"></div>
</li>
<div class="upload-btn">
</div>
</div>
通过 has 就可以实现隐藏了。
.upload-card:has(.el-upload-list__item) .upload-btn {
display:none;
}
```
### 真实 code
```
#template
<el-form-item label="封面" prop="cover">
<el-upload ref="coverUpload" class="upload-card" action="#" :multiple="false" list-type="picture-card" :file-list="image.cover" :http-request="uploadCover" :auto-upload="false">
<i class="el-icon-plus" />
</el-upload>
</el-form-item>
# scss
::v-deep .upload-card:has(.el-upload-list__item) .el-upload--picture-card {
display: none !important;
}
4月
07
如果发现配置了定时任务,却发现没有执行到。可以先看看日志。
# 看日志
tail -f /var/log/cron
# 查看日志文件
ll /var/log/cron*
# 看哪些用户在使用定时任务
ls /var/spool/cron/
# 查看某个用户的任务详情。比如 nginx
more /var/spool/cron/nginx
# 开机自启动
systemctl enable crond
如果没有日志,请查看下边的方法
情况是这样的。本来是有日志的。如果把日志删除了,即使重启 crontab 服务也是没有日志的。还有一种就是以前根本就没打开日志。这两种情况下边的方法都可以搞定。还有说在 /etc/rsyslog.d 下建立 50-default.conf。那还不如下边的方法。 下边的方法是通过 chatGPT 查询到的。有时候还是很方便的。
要查看CentOS 8 crontab的日志,您可以按照以下步骤进行处理:
- 打开 /etc/rsyslog.conf 文件并找到以下行:
cron.* /var/log/cron
-
将上述行的注释符号(“#”)移除,以启用cron日志记录功能。保存并关闭该文件。
-
重新启动 rsyslog 服务,以确保更改生效:
$ sudo systemctl restart rsyslog
- 检查 /var/log/cron 文件,以查看生成的 cron 日志。
如果上述方法不起作用,则您可以尝试在 crontab 命令中将日志记录级别设置为更高的级别。例如,将以下行添加到 crontab 文件的顶部:
MAILTO=user@domain.com
-
-
-
-
- /path/to/script > /dev/null 2>&1
在上述命令中,将 MAILTO 设置为您的邮件地址,以接收有关 crontab 任务运行情况的通知。将脚本路径替换为实际的脚本路径,并将输出重定向到 /dev/null,以避免在终端中看到任何输出。将 "> /dev/null 2>&1" 去掉就可以在/var/spool/mail用户文件夹下查看cron任务的执行情况了。