Write the Code. Change the World.

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的日志,您可以按照以下步骤进行处理:

  1. 打开 /etc/rsyslog.conf 文件并找到以下行:

cron.* /var/log/cron

  1. 将上述行的注释符号(“#”)移除,以启用cron日志记录功能。保存并关闭该文件。

  2. 重新启动 rsyslog 服务,以确保更改生效:

$ sudo systemctl restart rsyslog

  1. 检查 /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任务的执行情况了。