分类 开发笔记 下的文章
Ubuntu 22.04 安装 DokuWiki (Nginx 版)
DokuWiki 是一个简单易用、用途多样并且不依赖数据库的开源维基软件。它因简洁易读的语法受到用户的喜爱。而容易维护、备份方便和易于整合则使它成为管理员的最爱。
我的环境:
- ubuntu 22.04
- nginx 1.18
- php8.1
- mysql8
安装步骤
- 在 DokuWiki 官网下载页 下载最新稳定版本;
- 解压到
/var/www/dokuwiki,作为项目根目录; - 将根目录下的
data和conf设置为可写; - 配置 nginx,新增配置文件
/etc/nginx/sites-enabled/dokuwiki:
使用 grep 命令快速找出 nginx 配置冲突的域名所在配置文件
修改 Nginx 配置时,报错:
$ nginx -t
nginx: [warn] conflicting server name "crowall.com" on 0.0.0.0:80, ignored
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful出现 Nginx 报错 "conflicting server name" 通常意味着在 Nginx 配置中有两个或更多的 server 块使用了相同的 server_name 指令。
我的服务器是 ubuntu 22.04,安装默认的 nginx 1.18.0,所有的 server 都在 /etc/nginx/sites-enabled 目录下。
所以问题就变成了:找出 /etc/nginx/sites-enabled 目录里所有配置了这个域名的文件。
如果只有两三个 server 配置文件,一个个看也没问题,不过我的 server 比较多,所以就需要使用 grep 命令。
grep -r "crowall.com" /etc/nginx/sites-enabled/-r 表示如果下面有子目录也会扫描。
执行完就可以看到冲突的两个配置文件了,非常方便。
适用于 tabler 的 select2 样式
最近一个项目在用 tabler,tabler 是一款开源免费的并且看起来蛮正经的 UI 库,适用于以后端为主的 web 开发者。
最新版 tabler-v1.0.0-beta20 表单里的选择组件默认使用的是 tom-select,之前用的是 Selectize,但由于该项目停止开发,后来才换了 tom-select。
以上信息来源是官方的 issue。
由于官方没有提供对 select2 的支持,所以 select2 的样式在 tabler 里用不了,并且即使是引入了 bootstrap5 的样式,仍然不 work。
于是我就写了一段 css,解决了 select2 在 tabler 下适配的问题。
创建 select2-tabler-theme.css 文件:
nginx 配置指定时间段内无法访问
server 内添加配置:
# 获取本地时间
if ( $time_local ~ "^(\d+)\/(\w+)\/(\d+):(\d+):(\d+):(\d+) \+(\d+)" ) {
set $hour $4;
}
# 指定时间黑名单,如果为指定时间,返回500
if ( $hour ~ 22|23|00|01|02|03|04|05 ) {
return 500;
}这样就实现了晚上 10点~凌晨5点之间无法访问,6点以后才能正常访问。
Navicat Premium 推出了 Lite 版本,基本功能可以免费使用了
Navicat Premium Lite 是 Navicat 的精简版,拥有基本数据库操作所需的核心功能。它允许你从单个应用程序同时连接到各种数据库平台,包括 MySQL、Redis、PostgreSQL、SQL Server、Oracle、MariaDB、SQLite 和 MongoDB。Navicat Premium Lite 提供简化的数据库管理体验,使其成为用户的实用选择。
官方网址 https://www.navicat.com.cn/products/navicat-premium-lite
几个注意事项
- 虽然是 Lite 版,但 macOS 下的安装包也有 300多M,并且安装后会占用磁盘约 900M 的空间,磁盘小的用户需要考虑一下。
使用 face_recognition 识别两张人脸照片的相似度
Face Recognition 简介
Face Recognition 是一个基于 Dlib 的 Python 库,它简化了人脸识别的操作。它封装了人脸检测、编码和比较的功能,非常易于使用。GitHub 主页地址是 https://github.com/ageitgey/face_recognition 。

使用最近很火的汪峰新女友森林北李巧的照片测试。
图片 L1 和 L2 对比,face distance 为 0.393,相似度为 60.69%。
symfony 6.4 找不到 dotenv:dump 命令
前两天初始化了一个新项目,使用的是全新的 symfony 6.4。由于使用了最小化的创建命令,导致很多非核心的组件没有安装,一个个安装完,修改好 .env 环境变量配置文件,在 dump 的时候报错:
$ APP_ENV=dev APP_DEBUG=1 php bin/console dotenv:dump
There are no commands defined in the "dotenv" namespace. 执行安装命令 composer require symfony/dotenv 的时候没有任何异常。于是一步步检查,最终发现了命令的注册有问题。
对照了一下老项目,发现问题就是没注册服务。
在 config/services.yaml 配置文件中,添加以下配置:
services:
# 注册 dotenv:dump 命令
Symfony\Component\Dotenv\Command\DotenvDumpCommand:
- '%kernel.project_dir%/.env'
- '%kernel.environment%'再次执行,问题解决。
一个生成丑丑的手绘头像的开源项目 ugly-avatar
企业微信应用授权,第一次不授权手机号后如何再次开启
企业微信显示授权,可以手动选择是否授权以下三个信息:
- 头像、昵称
- 手机号
- 邮箱
如果取消勾选,会导致应用拿不到手机号码,部分需要手机号码的应用会直接报错,并且授权弹窗一个月只出现一次。
这时,就会报错:

如果希望第二次进入页面进行授权,能拿到没有勾选的信息的话,需要用户在企业微信里手动更改单个应用的授权信息。
