阅读视图

发现新文章,点击刷新页面。

SpamLite - 一份简约的Typecho垃圾评论拦截插件

很存粹的一款垃圾评判拦截插件,支持自定义的关键词对评论、昵称、网址、邮箱进行过滤
原本的插件功能不支持对IP的拦截,于是我改了下代码,加上了对评论者IP的拦截

下载

https://github.com/kaygb/SpamLite

原作者仓库链接:https://github.com/BeihangHuiye/SpamLite

使用

首先下载插件,按照图片的方式下载zip
2024-11-01T13:15:08.png

然后上传到插件目录解压,插件文件夹名改为SpamLite

后台插件管理启用即可
2024-11-01T13:20:38.png

Ubuntu 22.04 关闭图形界面

打开终端,输入以下命令关闭图形界面:

sudo systemctl disable lightdm.service

或者使用以下命令在启动时禁用图形界面:

sudo nano /etc/default/grub

将 GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" 修改为 GRUB_CMDLINE_LINUX_DEFAULT="text",然后更新grub配置:

sudo update-grub

如果上方无效的话,可以使用systemd设置默认运行级别:
查看当前的默认运行级别:

systemctl get-default

将默认运行级别设置为多用户模式(关闭图形界面):

sudo systemctl set-default multi-user.target

需要重新启用图形界面时,可以使用以下命令:

sudo systemctl set-default graphical.target

操作完成后重启一下查看效果

KZHomePage: 卡片风格个人网站引导页静态模板

已更名为:KZHomePage,QQ群:962303102

功能

  • 音乐播放支持在线解析歌单(基于meting)
  • Layer弹出层支持
  • 音乐播放器可选卡片模式和吸底模式
  • 接入一言API服务

预览

2024-07-20T04:46:28.png

最新开发版本
最新稳定版本

下载

Github下载
本站下载

使用方式

  1. 下载最新压缩包,解压后使用任意编辑器修改index.html
  2. 修改配置信息
  3. 上传至服务器

修改图片

在index.html中找到以下代码,替换其中的图片链接即可。

    <style>
        body{
            /*背景图片URL 可使用随机图片API */
            background-image: url("https://bu.dusays.com/2022/06/04/629b0a2a89425.png"); 
        }
        .photo-bg {
            /* 卡片左侧图片 */
            background-image: url("https://bu.dusays.com/2022/06/04/629b0a2750921.jpg");
        }
    </style>

修改歌单

在index.html中找到以下代码,进行修改。


    <script>
        // 音乐设置
        let meting_music_api = "https://meting.170601.xyz";// meting api
        let music_server = "netease"; // 音乐服务:网易云 netease 参见 meting api支持的服务
        let music_type = "playlist"; // 歌曲类型:歌单playlist 单首歌曲 song  专辑 album
        let music_id = "20173709"; // 歌单ID或歌曲ID或者专辑ID 20173709 29732992
        let music_order = "random"; // 音频循环顺序, 顺序播放: 'list', 随机播放:'random'
        let music_mini = false; // mini模式 吸底模式开启后此选项实效 true / false
        let music_fixed = false; // 吸底模式
        let music_volume = 0.7; // 默认音量
        let music_autoplay = false; // 自动播放
        let music_loop = "all"; // 音频循环播放, 可选值: 'all', 'one', 'none' ,分别为全部循环,单曲循环,不循环
    </script>

配置导航按钮

导航按钮依赖kz-nav-btn类,删除后按钮功能将会失效

导航按钮支持在标签中修改相应的属性,可以实现弹窗显示、当前标签页打开或者新标签页打开
找到index.html中的导航按钮组区块

<!-- 导航按钮组 -->
<button data-href="//www.kezez.com" data-title="Blog" data-window="pop" data-anim="4"
    data-area-w="80%" data-area-h="90%" data-shade="false"
    class="kz-nav-btn btn btn-primary col-lg-4">Blog</button>

<button data-href="https://github.com/kaygb/KZHomePage" data-title="GitHub" data-window="newtab"
    data-anim="4" data-area-w="80%" data-area-h="90%" data-shade="false"
    class="kz-nav-btn btn btn-secondary col-lg-4">GitHub</button>

<button data-href="https://mail.qq.com/cgi-bin/qm_share?t=qm_mailme&email=hi@kezez.com"
    data-title="Blog" data-window="pop" data-anim="4" data-area-w="80%" data-area-h="90%"
    data-shade="false" class="kz-nav-btn btn btn-success col-lg-4">Send a Mail</button>

<!-- end 导航按钮组 -->

修改按钮的以下配置即可

data-href="//www.kezez.com"  // 要打开的链接
data-title="Blog"            // 标题
data-window="pop"            // 窗口模式,可选:pop(弹窗显示) current(当前页打开) newtab(新标签页打开)
data-anim="4"                // 窗口动画效果,可选值:1 2 3 4 5 6 具体效果可以手动尝试
data-area-w="80%"             // 窗口打开后所占的宽度
data-area-h="90%"            // 窗口打开后所占的高度
data-shade="false"           // 是否显示遮罩

修改导航按钮颜色

按钮颜色使用bootstraap4的颜色格式,只需要修改按钮对应的class类即可改变按钮颜色
https://v4.bootcss.com/docs/components/buttons/
<button type="button" class="btn btn-primary">Primary</button>
<button type="button" class="btn btn-secondary">Secondary</button>
<button type="button" class="btn btn-success">Success</button>
<button type="button" class="btn btn-danger">Danger</button>
<button type="button" class="btn btn-warning">Warning</button>
<button type="button" class="btn btn-info">Info</button>
<button type="button" class="btn btn-light">Light</button>
<button type="button" class="btn btn-dark">Dark</button>

image.png

更新日志

# 2022-09-17 v1.2.0
1. 导航按钮可以自定义配置了

# 2022-06-12 v1.1.1
1. 全新的Layer皮肤
2. 修改弹窗动画

# 2022-06-12 v1.1.0
1. 替换已经无法稳定服务的jsdelivr为本地和七牛静态CDN库
2. 调整细节样式
3. 支持背景图和卡片图的修改,现在无需修改css文件了

# 2022-03-29 v1.0
1. 新增歌单自定义设置
2. 支持两种播放器位置

依赖项目

https://github.com/metowolf/MetingJS

https://aplayer.js.org/

版权声明

原始模板来源:http://www.cssmoban.com/cssthemes/9357.shtml

站点样式更新&404页面重制

许久没有对小站做调整了,于是今天闲来无事,调整了一下样式

主要改动

首页最直观的改动是左上角LOGO更换为Svg,因为左上角有个站点名,而下方也有个站点名,有点重复的感觉,于是改成了logo的显示,手搓了一个svg
然后映入眼帘的是渐变色背景的站点名称,在朴素中增添了一丝调皮的意味,我还蛮喜欢的哈哈
接着是字体颜色的改动,原本的颜色是比较浅的,加粗之后对于阅读看起来还是舒服一点的(对于我自己来说)
最后是圆角的改动,去除了部分的圆角,改成了凌厉的直角,因为我本人比较喜欢方方正正硬朗的感觉。
2024-07-06T15:20:44.png

404页面

原本的404页面只是有几个链接,我觉得不够个性化,于是重新改了一下,可以直接访问404页面查看效果
2024-07-06T15:26:06.png

PS

后续应该会继续随机调整一些样式,也算是水了一篇,好久没更新了。。。

Ubuntu 使用命令行修改DNS地址

Ubuntu20.04LTS包括两个版本:Server版本和Desktop版本,在 Ubuntu Server中,默认使用interfaces管理网络,而在Desktop版本中,默认使用NetworkManager来管理网络,那么如何在命令行中对NetworkManager进行管理呢?

使用nmcli命令

用户和脚本都可使用命令行工具 nmcli 控制 NetworkManager。该命令的基本格式为:

nmcli OPTIONS OBJECT { COMMAND | help }

其中 OBJECT 可为 generalnetworkingradioconnectiondevice 之一。最常用的选项为:-t, --terse(用于脚本)、-p, --pretty 选项(用于用户)及 -h, --help 选项。

~]$ nmcli help
Usage: nmcli [OPTIONS] OBJECT { COMMAND | help }

OPTIONS
  -t[erse]                                   terse output
  -p[retty]                                  pretty output
  -m[ode] tabular|multiline                  output mode
  -f[ields] <field1,field2,...>|all|common   specify fields to output
  -e[scape] yes|no                           escape columns separators in values
  -n[ocheck]                                 don't check nmcli and NetworkManager versions
  -a[sk]                                     ask for missing parameters
  -w[ait] <seconds>                          set timeout waiting for finishing operations
  -v[ersion]                                 show program version
  -h[elp]                                    print this help

OBJECT
  g[eneral]       NetworkManager's general status and operations
  n[etworking]    overall networking control
  r[adio]         NetworkManager radio switches
  c[onnection]    NetworkManager's connections
  d[evice]        devices managed by NetworkManager
以上内容来自redhat文档网站

那么,根据文档所说,我们就可以使用此命令来对网络信息进行修改

首先,我们需要查看网络的链接信息:

nmcli device show

使用此命令可以看到设备eno1上显示已连接的网络信息,对此网络进行修改,比如修改DNS:

nmcli device modify eno1 ipv4.dns 119.29.29.29

参考资料

更多的信息,可以访问下方的文档进行查看

2.3. 使用 NetworkManager 命令行工具 nmcli Red Hat Enterprise Linux 7 | Red Hat Customer Portal

PHP实现简易反向代理

最近使用Ward搭建了一个服务器状态监控的面板,非常的好看

Ward

由于本站是直接搭建在本地的物理服务器上的,并且使用了内网穿透的方式大家才能访问,而Ward是用docker跑起来的,映射了本地服务器的4000端口,每次想添加一个域名映射到服务器上需要单独新建一个隧道,由于本人巨懒,所以就不想新建隧道了,打算直接用反向代理的方式直接将Ward映射到子目录:ELEC Server (kezez.com),于是就搜索了一下有没有php直接反向代理的方式,结果还真的被我找到了,本文的实现方式采用了Mayx博主的方法,原文链接:如何用PHP制作一个简单的反向代理 | Mayx的博客 (mabbs.github.io)

实现方式

首先,创建一个子目录:/lab/status/, 这样可以直接通过这个链接访问:https://www.kezez.com/lab/status/
然后在子目录创建一个index.php文件,内容如下:

<?php

function removePrefixIfStartsWith($str, $prefix) {
    // 检查字符串是否以指定前缀开头
    if (strpos($str, $prefix) === 0) {
        // 如果是,则删除前缀并返回新的字符串
        return substr($str, strlen($prefix));
    } else {
        // 如果不是则直接返回原字符串
        return $str;
    }
}

$string = $_SERVER['REQUEST_URI'];

$outputString = removePrefixIfStartsWith($string, "/lab/status");

$content = file_get_contents("http://192.168.0.2:4000".$outputString);

foreach ($http_response_header as $header) {
    header($header);
}
if ($content) {
    echo $content;
}
else
{
    echo "404";  
}

这个时候,简易的反代已经创建好了,接下来需要将/lab/status/路径下的所有请求转发到index.php来处理,由于目前本站是直接用的typecho的apache docker镜像,环境是基于apache的,所以直接在同级目录创建一个.htaccess文件,并写下如下内容:

RewriteEngine On
RewriteBase /lab/status

# 重写规则:如果请求的文件或目录实际不存在,则重定向到index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L]

此时就大工告成了,具体效果可以直接查看:ELEC Server (kezez.com)

PS:
如果使用此方式,建议将被反向代理的网站引用的资源链接改成相对路径,否则可能不显示样式

参考

如何用PHP制作一个简单的反向代理 | Mayx的博客 (mabbs.github.io)

容器化MariaDB/Mysql定时备份实现

自从本站更换了服务器后,一直没有给数据库做定时的备份,目前服务器采用的是全部Docker容器化的方式,本站以及数据库都是运行在单独的docker容器中,为了以防万一,觉得还是需要做一次定时的全量备份比较好

备份方案

目前想到的方案是采取mysqldump工具进行备份的方式,所以需要构建一个单独的容器,在容器这个容器中使用mysqldump命令连接另一个容器的mariadb进行备份

构建容器镜像

在服务器的某个目录下,创建一个Dockerfile文件:

# 使用包含mysql-client和bash的基础镜像
FROM alpine:latest

# 替换为阿里云的Alpine镜像源(如果需要)
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories

# 更新包索引并安装mysqldump与bash
RUN apk update && apk add --no-cache mysql-client bash coreutils

# 设置环境变量
ENV MYSQL_HOST="192.168.0.200"
ENV MYSQL_PORT="3306"
ENV MYSQL_USER="root"
ENV MYSQL_PASSWORD="123456"
ENV MYSQL_DATABASE="dbname"
ENV BACKUP_DIR="/backup"

# 将备份脚本复制到容器内
COPY backup_script.sh /usr/local/bin/backup_script.sh
RUN chmod +x /usr/local/bin/backup_script.sh

# 在容器启动时执行备份脚本
CMD ["/usr/local/bin/backup_script.sh"]

这个时候第一步准备好了

编写备份脚本

在Dockerfile的同目录下,创建一个backup_script文件

#!/bin/bash

# 获取环境变量
MYSQL_HOST=${MYSQL_HOST:-"192.168.0.200"}
MYSQL_PORT=${MYSQL_PORT:-"3306"}
MYSQL_USER=${MYSQL_USER:-"root"}
MYSQL_PASSWORD=${MYSQL_PASSWORD:-"123456"}
MYSQL_DATABASE="dbname"
BACKUP_DIR="${BACKUP_DIR:-"/backup"}"

# 创建备份目录(如果不存在)
mkdir -p "$BACKUP_DIR"

# 设置备份文件名称(包含时间戳)
BACKUP_FILENAME="$BACKUP_DIR/blog_$(date +'%Y%m%d%H%M%S').sql.gz"

# 执行mysqldump命令并压缩备份文件
mysqldump -h $MYSQL_HOST -P $MYSQL_PORT -u$MYSQL_USER -p$MYSQL_PASSWORD --single-transaction $MYSQL_DATABASE | gzip > $BACKUP_FILENAME

echo "Database backup of blog has been created at $BACKUP_FILENAME"

这个时候备份的脚本也准备好了

构建容器&启动容器

容器内部的备份目录为/backup ,所以我这里将宿主机的/data/backup 映射到容器的/backup目录,当备份完成后宿主机的/data/backup就会存在备份的文件

# 构建容器
docker build -t db-backup-image .
# 启动容器
docker run -d \
  --env MYSQL_HOST=192.168.0.200 \
  --env MYSQL_PORT=3306 \
  -v /data/backup:/backup \
  db-backup-image

run之后,执行完成容器会自动退出,此时可以查看备份目录下是否存在备份的数据库文件

Cron 定时任务

通过docker ps -a 命令,我们可以拿到构建容器的容器id,通过执行 docker start 容器id命令就可以直接执行备份

crontab -e

在后面添加一行:

0 1 * * * docker restart xxx(替换为你的容器ID)

保存后,将会在每天的凌晨一点执行备份

使用Cron定时更新Hosts解决Gihub无法访问问题

因为总所周知的原因,GitHub在国内的访问是不稳定的,经常抽风,不使用一点科学的手段没有办法很好的进行访问,所以就有通过获取GitHub最新的可访问的ip,手动更新到系统的hosts文件中的办法来应对

fetch-github-hosts

官网的介绍:fetch-github-hosts 是主要为解决研究及学习人员访问 Github 过慢或其他问题而提供的 Github Hosts 同步工具

官网链接:https://hosts.gitcdn.top/

对于Windows系统,我们可以直接下载fetch-github-hosts客户端的方式很方便的对hosts进行更新,也可以通过手动的方式修改hosts,只需要将:https://hosts.gitcdn.top/hosts.txt 中的内容复制到hosts文件中即可

Cron

Ubuntu 系统中自带Cron服务,通过cron服务我们可以很方便的编写一些计划任务,让它定时的为我们执行

crontab 的用法如下:

usage:  crontab [-u user] file
        crontab [ -u user ] [ -i ] { -e | -l | -r }
                (default operation is replace, per 1003.2)
        -e      (edit user's crontab)
        -l      (list user's crontab)
        -r      (delete user's crontab)
        -i      (prompt before deleting user's crontab)

常用的命令

crontab -u root -e     #编辑用户 root 的计划任务文件(需要有 root 权限)
crontab -e             #编辑当前用户的计划任务文件
crontab -u root -l     #显示用户 root 的计划任务文件(需要有 root 权限)
crontab -l             #显示当前用户的计划任务文件
crontab -r             #删除当前用户的计划任务文件

cron 语法格式

m   h   dom   mon dow  command
0-59 0-23 1-31 1-12 0-7  command

m    表示分钟    0-59
h    表示小时    0-23
dom    day of month,表示日期    1-31
mon    month,表示月份    1-12
dow    day of week,表示星期    0-7
command    待执行的命令    -

需要特殊说明的是,dow 的取值范围为 0-7 共 8 个数,1-6 分别表示周一-周六,0 和 7 均表示周日

另外需要使用一些特殊符号实现灵活的配置:

  • 代表所有值
    / 代表“每”
  • 代表范围
    , 分割数字

使用Cron定时执行sh更新GitHub Hosts

首先编写一个sh脚本

# 创建一个文件夹 可自定义
mkdir /data/crontab_task
mkdir /data/crontab_task/log
# 创建一个sh脚本
vim set_github_hosts.sh

接着写入内容

#!/bin/bash
start_text="Start update github hosts. Current time: "
current_time=$(date "+%Y-%m-%d %H:%M:%S")
starting=$start_text$current_time
echo "-----------------------------------------------------------------"
echo $starting
sed -i "/# fetch-github-hosts begin/Q" /etc/hosts && curl https://hosts.gitcdn.top/hosts.txt >> /etc/hosts
echo "Down."

按下esc并输入wq保存

赋予sh可执行权限

chmod u+x set_github_hosts.sh

编写cron表达式

crontab -e

此时在文件的最后添加以下内容:

*/60 *  *  *  * /data/crontab_task/set_github_hosts.sh >> /data/crontab_task/log/set_github_hosts.log 2>&1

保存后,重启cron服务即可,service cron restart

一段时间后就可以去log目录下查看执行的日志,正确执行的情况下是一直会更新日志的

小爱同学语音控制电脑开机关机

俗话说“懒是人类发展第一生产力”,人类因为想偷懒所以就必须先创造,最后就出现了很多可以帮助我们“偷懒”的事物。在科技发达的今天,语音助手几乎人人的手机上都有,小爱同学和米家相辅相成,米家支持接入第三方平台使得我们去diy控制一些家具设备成为可能。
为了开机能少伸手按一下电源键,以及关机时不必再跑到电脑跟前点一下关机,于是我就写了个程序,接入了米家,使用小爱同学控制电脑的开关机。

准备

  1. 注册巴法云并绑定米家
    首先前往 https://cloud.bemfa.com/ 注册一个巴法云账号,然后前往MQTT设备云:https://cloud.bemfa.com/tcp/devicemqtt.html 创建一个主题,注意这个主题是有命名要求的,要想让米家能够识别到,需要按照文档的说明
    2023-08-09T13:36:26.png

可以创建一个灯的类型,比如:pc006,,然后昵称设置为 电脑(语音时使用这个昵称)

  1. 开启 Windows SSH
    这一步可以直接参考:https://zhuanlan.zhihu.com/p/391373172
  2. 开启 WOL
    WOL也就是网络唤醒,需要主板支持
    这一步参考:https://zhuanlan.zhihu.com/p/183704557

程序介绍

本程序基于WOL和SSH进行电脑的开机和关机,所以需要一台可以专门跑这个程序的机器(比如nas)进行部署,可以通过docker的方式

程序配置

首先下载程序包:
https://kaygb.lanzoum.com/b0enhdb5e
密码:fhnn

解压后,将application-demo.yml重命名为application.yml, 然后修改此文件中的配置信息,里面的配置信息针对于需要进行语音控制开关机的设备

server:
  port: 8080

ewl:
  mqtt:
    broker:
      ip: bemfa.com
      port: 9501
    topic: pc006
    secret: sv8m0cz43qw0b6eyn44rsfc82rbatjdu # 修改为你的巴法云secret
  pc:
    host: 192.168.0.55 # 修改为你的电脑 IP
    mac: 2C-F4-5X-2J-A2-5B 修改为你的电脑 MAC
  ssh:
    port: 22
    username: user # 你电脑登录的用户名
    password: 1234ABCD # 你电脑登录的密码

如果你是windows,可以在另一台电脑上直接双击start.bat 启动程序进行测试

使用

对着小爱同学说 :开启电脑 / 关闭电脑 即可开机或者关机电脑 这个名称取决于你在巴法云添加的设备昵称

获取IP 和 MAC

打开cmd,输入ipconfig /all,即可获取
2023-08-09T13:54:18.png

博客旧站重新上线了

最近整理github仓库,发现了之前博客数据的存档,于是乎部署到了hexo,发布到了github pages上面了,当然,文章是不会在旧站更新了,但是偶尔需要找一些资料的话还是可以去旧站翻翻看的。

部分图片估计是丢了,找不回来了,很遗憾。

看到旧站的数据,很是怀念之前写博客的日子,每天逛友链,看看大佬们有没有什么更新,也认识了很多的人。

旧站域名:https://oldblog.kezez.com

2023-06-27T11:27:53.png

[Golang] Go语言环境SDK安装及实现一个 HelloWorld!

环境配置

本文基于Windows系统(WIN11)

首先下载go语言的SDK: https://golang.google.cn/dl/,截止此文时间,最新的版本为1.20.5,由于是win11,这里我直接选择下载 go1.20.5.windows-amd64.msi

下载 go1.20.5.windows-amd64.msi

下载完成后双击安装
安装完成后,打开终端,查看go版本号

$ go version
go version go1.20.5 windows/amd64

Hello World

创建一个工程目录,在工程目录下执行mod命令初始化工程

$ go mod init hello
go: creating new go.mod: module hello

此时目录下会出现一个 go.mod 文件

使用任意编辑器在工程目录下创建 hello.go

package main

import "fmt"

func main() {
   fmt.Println("Hello, World!")
}

使用go命令执行

$ go run hello.go 
Hello World!

本站 RSSHub 服务累计请求量突破两百五十万次

本站 RSSHub 服务已暂停,可使用 monster_4y 提供的免费RSSHub服务

自上一次更新RssHub服务至现在已经过去1208小时,大约50天,在这50天的时间内请求量达到2597451次,平均每分钟请求量35.832次,看到这个数据我还是很有成就感的。

2023-03-22T13:28:30.png

近期可能会更新一下,同步官方最新的代码,不过更新后之前的数据就需要重新统计了

另外,在域名的前面加上docs,即可访问加速过的文档

RSSHub:https://rsshub.170601.xyz/
RSSHub Docs: https://docs.rsshub.170601.xyz/

NPM && Yarn 设置镜像加速及恢复官方镜像

NPM

查询当前镜像

npm get registry

设置为淘宝镜像

npm config set registry https://registry.npmmirror.com

设置为官方镜像

npm config set registry https://registry.npmjs.org/

YARN

查询当前镜像

yarn config get registry

设置为淘宝镜像

yarn config set registry https://registry.npmmirror.com

设置为官方镜像

yarn config set registry https://registry.yarnpkg.com

罗技G304开箱及简单体验

前段时间入手的雷柏MT710L,好用是好用,但是毕竟是定位办公的鼠标,偶尔打游戏的时候总感觉鼠标响应有点慢,平时写代码啥的用倒是没啥问题,于是我换上了用了三年的有线鼠标雷柏V90,好家伙,瞬间感觉响应速度好快,于是乎,我去测试了一下鼠标的回报率。
这个旧有线鼠标的回报率是1000,而这个无线鼠标只有120,怪不得觉得玩游戏时不得劲。于是乎,趁着便宜,JD入手了罗技的G304

开箱

朴实无华的盒子
[album]

IMG_20221227_183645.jpg
IMG_20221227_183659.jpg
IMG_20221227_183718.jpg
IMG_20221227_183725.jpg

[/album]

拆开后,里面一个鼠标,一节五号电池,一根延长线

IMG_20221227_183834.jpg

回报率测试

网页端测试平均下来八百多,实际上最高980,官方宣称性能模式可达1000的回报率,基本上差不多

回报率

使用感受

第一感觉是相当丝滑,鼠标大小比MT710L小一点,但是比V90要大,握持感还可以,重点是响应速度很不错,罗技的无线技术已经做的和有线差不多了,相当的NICE

GHub

动画很漂亮,可设置灵敏度

image24ba20e93c37a1f6.png

以及宏和一些自定义配置

image930e6f50076bafeb.png

Fontmin:字体提取如此简单

原生字体看久了,就想给博客的名字换个字体,VOID主题是支持直接修改logo字体样式的,所以我就去字体天下找到了一款字体下载了下来。
但是,问题来了,一个中文字体文件动辄十几兆甚至几十兆大,如果直接进行引用的话,那对网站的加载速度的影响可想而知,并且我们只需要其中的几个字,直接使用整个字体文件有点小题大作,所以,我们可以采用字体提取的方式将字体文件瘦身,提取我们所需要的文字。

挑选字体

这里我比较推荐字体天下这个网站,无需登录就可以下载字体,但是要注意一点,字体是有版权的,我们尽量选择商用免费的字体,以规避后期可能产生的侵权问题。
这里可以直达商用免费字体页面:https://www.fonts.net.cn/commercial-free/fonts-zh-1.html

当然,我们所需要的文字也不一定在我们选好的字体文件中存在,那么我们可以使用字体天下的预览,如果效果是自己喜欢的样子,可以点击下载,我们会得到字体的压缩包

字体预览

字体瘦身

我们无法直接从字体文件中取其中的几个字出来,但是我们可以借助工具软件来达到我们想要的目的,这里推荐使用一款软件:Fontmin,使用Fontmin我们可以轻轻松松的提取想要的字体到单独的字体文件中,软件的下载方式将会在文末提供。

打开Fontmin,我们可以看到如下的界面:

Fontmin

在上方输入区域输入我们需要提取的文字,然后将解压后的字体文件拖入下方的字体区域,点击生成

拖放字体

稍等片刻

生成中

生成成功后,在弹出的文件管理窗口中可以看到,他已经将十几兆的字体文件瘦身成8KB的字体文件了,是不是很神奇!

生成结果

然后,我们使用这个生成的字体文件,就大功告成了。

文件下载

https://box.kezez.com/#s/8sM9xiCQ&view=Software/Fontmin

NVM的安装和使用

nvm是啥

nvm全英文也叫node.js version management,是一个nodejs的版本管理工具。nvm和n都是node.js版本管理工具,为了解决node.js各种版本存在不兼容现象可以通过它可以安装和切换不同版本的node.js。

也就是说,使用nvm,我们可以在电脑上同时安装多个不同版本的nodejs,只需要使用一条命令即可快速的进行版本切换。

下载nvm

nvm文档手册 - nvm是一个nodejs的版本管理工具 (uihtm.com)

或者直接在本站下载:

共享资源 - 文档分享 - 珂泽云盘 (kezez.com)

安装nvm和nodejs

注意,如果电脑上已经装了nodejs环境,需要先卸载掉

在上面的链接下载完成后,进行解压,解压后里面有个exe文件,双击进行安装,安装完成后,使用命令安装nodejs

我这里安装了node 18.12.1,以管理的身份运行任意的终端,这里我使用Git Bash:

nvm install 18
nvm list
nvm use 18.12.1
node -v

如下界面即为安装成功了

2022-11-20-21-53-51-image.png

问题

我在安装的过程中遇到了两个问题

报错1:

nvm use 18.12.1
exit status 145: The directory is not empty.

这个问题的话,是因为我选择放置nodejs版本的目录之前是有东西的,需要把这个目录的文件清空,然后重新执行nvm命令

报错2:

nvm use 18.12.1
exit status 1: You do not have sufficient privilege to perform this operation.

这问题就很简单了,是因为权限不足的原因

使用管理员模式运行,这里我以Git Bash为例,在Git Bash右键 - 更多 - 以管理员身份运行,重新执行即可。

2022-11-20-22-03-33-image.png

nvm命令

  • nvm arch:显示node是运行在32位还是64位。
  • nvm install <version> [arch] :安装node, version是特定版本也可以是最新稳定版本latest。可选参数arch指定安装32位还是64位版本,默认是系统位数。可以添加--insecure绕过远程服务器的SSL。
  • nvm list [available] :显示已安装的列表。可选参数available,显示可安装的所有版本。list可简化为ls。
  • nvm on :开启node.js版本管理。
  • nvm off :关闭node.js版本管理。
  • nvm proxy [url] :设置下载代理。不加可选参数url,显示当前代理。将url设置为none则移除代理。
  • nvm node_mirror [url] :设置node镜像。默认是https://nodejs.org/dist/。如果不写url,则使用默认url。设置后可至安装目录settings.txt文件查看,也可直接在该文件操作。
  • nvm npm_mirror [url] :设置npm镜像。https://github.com/npm/cli/archive/。如果不写url,则使用默认url。设置后可至安装目录settings.txt文件查看,也可直接在该文件操作。
  • nvm uninstall <version> :卸载指定版本node。
  • nvm use [version] [arch] :使用制定版本node。可指定32/64位。
  • nvm root [path] :设置存储不同版本node的目录。如果未设置,默认使用当前目录。
  • nvm version :显示nvm版本。version可简化为v。

配置NVM和Yarn镜像

https://www.kezez.com/archives/249.html

❌