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
同步ajax导致页面卡顿 我的网站在快速切换页面时,有时会卡顿甚至假死。之前我以为是带宽太小的缘故(1Mbps),直到在 MDN 查找 XMLHttpRequest 相关资料时看到这个说明: XMLHttpRequest supports both synchronous and asynchronous communications. In general, however, asynchronous requests should be preferred to synchronous requests for performance reasons. XMLHttpRequest 支持同步和异步通信。但是,一般来说,出于性能原因,异步请求应优先于同步请求。 Synchronous requests block the execution of code which causes "freezing" on t... 2022-09-18
鼠标气泡 宝宝日记的页面中规中矩,一直想加点活泼的元素,苦于没有找到理想的参考样式。 前天,在博友Design小院那里看到了鼠标气泡的效果,感觉很喜欢。寻迹找到了控件原作者的网站90's Cursor Effects。动效如下: 在源代码基础上主要做了两处修改: 增加气泡随机透明度,更显真实; 原配色在暗黑模式下过于显眼,改为牡丹粉红 #eea2a4。 完成的动效如下: 已实装于宝宝日记时间轴、宝宝日记详情页。 2022-08-24
H264需为偶数尺寸 刚才上传一个 mp4 视频时报错(视频见上一篇文章),本地调试发现错误信息为: [libx264 @ 0x55a5429f40c0] height not divisible by 2 (540x771) 搜索相关信息了解到:旧式 H264 编码视频(如 yuv420p 格式)如果长宽中含有奇数会导致转码失败。 因此,强制转换长宽为偶数: $width = 2 * (int)ceil($width / 2); $height = 2 * (int)ceil($height / 2); 之前一直没发现这个问题,大概是因为绝大部分是手机直接拍的视频,都是标准偶数尺寸。 2022-07-22