在 Bing 搜索结果中显示网站图标 本站在 Bing 搜索结果中是默认图标,为此我特地补充了头信息,明文写入 favicon 地址。然而等待大半年之后仍未显示图标。随后我查到一种说法是搜索量有一定规模才会展示网站图标,此事便被搁置了。直到最近我发现可以向官方反馈解决,实测有效。 准备工作 登录Bing Webmaster Tools,验证网站所有权。 提交反馈 依次点击右上角【问号】- 联系支持人员【必应网站管理员支持】- 页面最下方【Raise support request】,然后填写相关信息: What type of problem do you have? 选择 [Crawling issue] What do you need help with? 选择 [Other] Describe your issue with the website you have selected above. Please do... 2025-03-27
解决 iOS 18.3 播放 WebM 出错 发现问题 手机升级 iOS 18.3.2 后发现网站播放视频出错。表现为播放时骤停,失去响应。捕获error事件,得到 code: 3(MEDIA_ERR_DECODE),message: "Media failed to decode"。 我对视频的处理是优先使用 WebM 格式,MP4 作为备用。因为 MP4 是被广泛支持的格式,不太可能出现解码问题,我自然怀疑问题出在 WebM。果不其然,移除 WebM 链接后播放恢复正常。 解决问题 知道问题所在,我很快写好了修复代码,判断系统是 iOS 时不使用 WebM。但是在提交之前我冒出了一个念头,这是 iOS 更新造成的兼容问题,我为什么要为苹果的错误买单,打一个丑陋的针对性的补丁呢?于是我继续折腾,用通用的思路做优化。 最终方案如下: 首次播放视频时使用 MP4;同时创建一个虚拟节点加载 WebM,捕获到error判定为不支持,捕获到c... 2025-03-15
解决 SVG 转字体出现空白的问题 我在制作专栏图标时发现有的 SVG 转为字体时,某些交接处会出现空白: 检查发现某些路径(path)重叠会发生这个问题: 我首先尝试消除重叠,使边缘贴合,然后发现自己完全没能力完成这样精准的绘制。最终我还是找到了解决办法:SVG Fixer。实现原理是: Convert SVG Strokes To Fills Attempts to fix your svg by turning it into a fill / single path (and making it font compatible as a bonus). 安装和使用方法: #安装 npm i -g oslllo-svg-fixer #使用 oslllo-svg-fixer -s ./1.svg -d ./ 2025-02-04
内嵌抖音视频 抖音开放平台提供了内嵌抖音视频的方法,详见《通过VideoID获取IFrame代码》。 示例代码: 与B站不同,抖音iframe没有做自适应,需要结合自己网站调整样式。下面以我的网站为例。 手机端代码: .douyin { width: min(324px, 100%); margin-inline: auto; overflow: hidden } .douyin iframe { aspect-ratio: .4821 } 电脑端代码: .douyin { width: max(730px, 100%); margin-inline: auto } 写这篇文章的起因是我刷到了上面这条搞笑视频,想写文章分享。之前在风记星辰那里看到过内嵌抖音视频,参考他的样式,并研究了抖音官方文档,实现了期望效果。不过有一个坑是父级元素宽度小于730px会强... 2025-01-12
iOS Safari 回退导致 alert 失效 我在文章页增加了解析运行 html 和 js 源码的功能。然后发现一个诡异的问题,在手机端 Safari 按回退和前进键会导致 alert 失效。验证了电脑端和手机端各种浏览器,仅手机端 Safari 复现这个问题。 我查到的解释是: alert/confirm/prompt dialogs will not be displayed if the user has navigated back to a pushState location. Once a user has navigated back (at any point), calling alert(…), confirm(…), or prompt(…) will not display dialog boxes. confirm(…) will always return false, and prompt(…) wil... 2024-11-10
ddns-go 配置三级域名 为了方便网址分发,注册了免费三级域名 dujun.ggff.net 备用。域名接入 Cloudflare,并用 ddns-go 做动态解析。 按照经验填写域名和泛解析: dujun.ggff.net *.dujun.ggff.net 结果发生报错:“在DNS服务商中未找到根域名: ggff.net”。因为之前 dujun.eu.org 和 dujun.us.kg 就是这样填写的,同样是三级域名,我搞不清问题出在哪里。最后在 issues 找到了答案,有些三级域名要这样配置: :dujun.ggff.net *:dujun.ggff.net 2024-10-29
全屏事件触发 resize 事件 我之前发现播放视频时进入全屏会闪退。奇怪的是 Chrome 和 Firefox 存在这个问题,但 Safari 正常。正因为如此对我造成了误导,没有找到问题所在。直到今天发现了这个乌龙。 拖动改变浏览器窗口大小时会造成图文排版变形,所以我监听到 resize 事件就会重新渲染页面——表现之一就是视频进入全屏时“闪退”成了非全屏窗口,video 元素被清除了,重新渲染为缩略图 img。 那么解决这个问题就是监听到 resize 事件时增加一个判断是否全屏。 is_fullscreen = () => !!( document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement || document.msFullscreenElement... 2024-10-25
Redis 禁用持久化 我用 Redis 做缓存,纯内存运行,不需要持久化。原先只需要修改 redis.conf 两处配置: 禁用RDB持久化:注释 save 开头的配置项 禁用AOF持久化:appendonly 改为 no Redis 升级到新版后,我查日志发现仍然有"DB saved on disk",也就是禁用 RDB 失效了。对比新版配置发现,不能只注释掉 save,还要明文写入: save "" 然后要删除已经生成的 RDB 文件,否则重启后还会从磁盘加载数据。执行命令 config get dir和config get dbfilename找到文件删除。 最后重启服务使之生效。 2024-10-15
Docker 限制容器内网络带宽 要限制 Docker 容器内的网络带宽,没有原生命令支持,需要借助工具。最方便并且对原有部署改动最小的办法是创建 tc-docker 特权容器来限制其他容器的带宽。 Docker CLI 创建 tc-docker 特权容器,保持后台运行,管理其他容器的网络带宽: docker run -d \ --name tc-docker \ --network host \ --privileged \ --restart always \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /var/run/docker/netns:/var/run/docker/netns:shared \ codyguo/tc-docker 在原有的 docker run 命令中增加 label 参数进行带... 2024-10-13
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