Debian Server 安装桌面环境 有些云厂商只提供 Linux 镜像,不提供 Windows 镜像。此时如果需要桌面环境,可以 dd 成 Windows。但对于低配服务器,在 Linux Server 安装桌面环境是更合适的选择。 我习惯用的服务器系统是 Debian。对比几款常用的桌面环境,在资源占用低和美观易用的妥协中,最终选择了 Cinnamon。 #安装 Cinnamon 桌面环境 sudo apt install task-cinnamon-desktop #安装 XRDP 服务 sudo apt install xrdp 2024-10-12
乱码导致 json_encode 失败的解决方法 发现访客日志缓存失效,定位到写入 redis 时数据经 json_encode 变成了空字符。调用 json_last_error_msg() 打印出报错信息为:"Malformed UTF-8 characters, possibly incorrectly encoded"。 解决办法是增加参数 JSON_INVALID_UTF8_IGNORE,过滤掉乱码字符: json_encode($value, JSON_INVALID_UTF8_IGNORE); 2024-09-19
极简界面内嵌B站视频 如果文章中嵌入了B站视频,但并不想引导到B站——只作为“图床”使用,可以使用极简界面。 B站官方的嵌入代码形如: 改写为: 只需要替换地址并增加两个参数,其中: 原地址:player.bilibili.com/player.html 替换为:bilibili.com/blackboard/html5mobileplayer.html 增加参数1:hideCoverInfo=1 表示隐藏播放量等信息 增加参数2:danmaku=0 表示默认关闭弹幕 原始内嵌播放器效果(增加了禁止自动播放autoplay=0): 极简内嵌播放器效果: 2024-08-28
Docker 限制容器 CPU、内存使用 服务器评分系列要统一规格为 2 核 2G,对于高配服务器用 Docker 限制容器 CPU、内存使用来模拟相近的硬件环境。CPU 限制我起先用cpus参数,后来发现cpuset-cpus更准确。下文验证了两者的区别(主机 8 核 8G,Docker 限制为 2 核 2G)。 cpus docker run -d --name server-testing --memory="2048m" --cpus="2.0" -v /docker/server_testing/result:/server_testing/result dujunio/server-testing --cpus="2.0"表示使用 200% 核心,在 8 核主机上占用 25% CPU。如上所示,实际是分配到 8 个核心,每个核心承担一部分,凑齐相当于 2 个核心的算力。 cpuset-cpus docker run -... 2024-07-07
修改兼容版 description 本站基于 js(ES2017+)DOM 渲染,对搜索引擎爬虫和非现代浏览器不友好,因此做了一个无 js 纯 html 输出的兼容版: 我没有做很多 SEO 工作,keywords、description 使用了统一的描述。结果发现百度很多结果只取 description,而未像 Google、Bing 一样生成摘要: 百度的表现令我费解,并无奈修改了兼容版文章页面,keywords 改为标签,description 改为文章截字。 2024-05-14
阿里邮箱添加DKIM 前言 DKIM 是一种电子邮件安全协议,通过消息加密认证的方式对邮件发送域名进行验证,用于检查电子邮件是否在传输过程中被篡改,保证邮件内容的完整性。 本站使用阿里云企业邮箱(免费版)发送通知邮件,添加 DKIM 可以降低被判定为垃圾邮件的概率。 发送申请 通过postmaster邮箱发送邮件至fankui@alibaba-inc.com,例如: 邮件标题:阿里邮箱DKIM申请+杜郎俊赏+dujun.io 邮件内容: 1)公司名称:杜郎俊赏 2)邮箱域名:dujun.io 添加DNS解析 几天后收到回信,根据提示在邮箱域名 DNS 增加一条 TXT 记录 default._domainkey。配置完成后回复邮件。 完成私钥配置 继续等待几天后收到私钥配置完成的通知邮件,申请流程结束。 验证 通过邮件客户端发信或者调用程序(PHPMailer)发信,自动追加了 DKIM-Signature 字... 2023-12-12
邮件中的链接被自动打开 发现问题 我有个脚本在每晚 22 - 24 点,每隔一段时间检查宝宝日记是否发表,如果未发表就给自己发一封邮件。邮件中附带一个链接,打开后会写入数据库标识,当天不再提醒。 最近发现一个问题,忘发日记在 22 点会收到一次邮件,然后就不再收到了。正常情况应该是隔段时间就收到一封,直到发表日记为止。 检查数据库发现标识被更新了,也就是链接被打开过,但是我本人并没有点击。 分析问题 根据数据库更新时间对比行为日志,发现有两种情形下邮件中的链接被自动打开了。 1. 平台自动访问邮件链接 根据日志,访问日记邮件链接的 ip 来自阿里云。我用的是阿里云的邮件推送,以前没发生过这种问题。现在猜测阿里云近期过了修改,会访问邮件中的链接。 2. 客户端自动访问邮件链接 与日记邮件类似,评论回复的通知邮件附带了取消通知的链接。对比日志发现,邮件中的多个链接在同一秒中被打开了,不像是人为操作。所以猜测有些博友的... 2023-08-30
Docker拉取被墙镜像 上个月开始,docker hub 无法访问,带来的麻烦是不能用 UI 搜索镜像,但是 docker pull 仍然可用。本以为过段时间可以恢复,结果一个月之后,今天 docker pull 也彻底不能用了。因为开源实例系列镜像托管在 docker hub,必须拉取镜像,所以用 AWS 服务器自建了仓库来中转。 AWS(境外)自建仓库 #创建仓库,对外服务暴露在 5000 端口(dujun.eu.org:5000) docker run -d -v /home/admin/docker:/var/lib/registry -p 5000:5000 --name myregistry registry #拉取 docker hub 镜像并发布到自建仓库 docker pull dujunio/php:8.1 docker tag dujunio/php:8.1 localhost:5000/d... 2023-06-21
php 双问号可以链式使用 刚才改网站代码,偶然发现 php 双问号是可以链式使用的: $ret = $a ?? $b ?? $c ?? 4; 原本我是应该加括号的: $ret = $a ?? ($b ?? ($c ?? 4)); 无心之失忘了加括号,竟然可以执行,才发现双问号可以链式使用。 之所以有这样的乌龙,是因为我这个从 php5 时代入行的古典程序员,对新的语法糖是想当然的,没有去仔细看过文档。双问号的使用习惯也是从三元式演变过来的,自然没想过还能链式使用。 用三元式表达上面的语句是这样的: $ret = isset($a) ? $a : (isset($b) ? $b : (isset($c) ? $c : 4)); php 不愧是世界上最好的语言。令人开心。 2022-11-11
JavaScript 强混淆 我的网站是纯内存缓存读 + js 渲染 spa,现在的瓶颈就是硬件配置低、带宽小,程序架构上可以说追求到极致了。其中,js 渲染是全站性能优化的关键一坏,服务器只负责吐出原始数据,而把路由解析、数据处理、布局渲染的计算压力都转嫁给了浏览器。 如此重要的前端部分我当然花了很大的心思。js 是明文的,只能做混淆。但是如果混淆得足够好,逆向成本过高,也是可以达到很好的代码保护。网上有很多 js 代码混淆的方法可以参考,但有些会让文件大小增加好几倍。这里我分享一下自己 js 强混淆的思路。 我实现 js 强混淆的关键一点就是字面量表达式。 原生写法: str.trim(); 字面量表达式: str['trim'](); 有了这个基础,混淆要做的就是进一步隐藏字符串了。我用了 ASCII 转码和 base64,使得字符基础变量简化为 64 个 base64 编码字符,以及特殊的空格和换行符。 以“我... 2022-10-19