无聊的五一假第一天

五一假期的第一天,宅在家无聊玩游戏。下午我爸心血来潮想拆开研究下我坏了的滑板车,结果螺丝滑丝拧不开,电机对螺丝也是特制的没法打开,遂放弃。

晚上原定想去看《间谍过家家》新出的电影的,可惜朋友不愿意来,与此同时也被爸妈叫去亲戚家做客了。我也和往常一样带上笔电,终于提起笔开始写起了自己的“寻觅另一半 - 交友指南”,说白了就是简单和对面透露我的一些特点,介于我的女生绝缘体特征,或许这个页面还会长期继续调整…

Clarity / 聊天记录提取 / 租宽带讨论 / 一次试探

晚上给自己的网站加入了 Clarity,一个可以观察访客行为的系统,插入之后我意外的发现有人从我的 Resume 项目点击了一个博客链接,由于该链接经过漫长时间已经 404,导致他快速离开了(少了一次也许能得到打赏的机会),我趁机亡羊补牢修改了 Nginx 规则,强行跳转过来,这样就没错了。

至于为什么加入它,本质上还是好奇吧,我也想知道大家都喜欢浏览我的什么内容,是否对我网站里的功能设定能够做到一眼上手,后期也能更好的创作,仅仅如此。

我还尝试去研究了下处理聊天记录富文本的逻辑,最终写了一个简单的根据文本信息提取聊天内容和群友名称的过程,唯独的难点就是纯文本形式没法拿到图片节点,估计还得以 HTML 的方式去提取才行,再结合 Electron 能直接读取本地文件的特性,最终变成一个可用最小实现?

大佬 @qwe7002 和我分享了近期折腾宽带的经历,说是中山移动可以租下一条很实惠的宽带,公网 IP,不限流量(理论上不怕刷流量,就怕真的把你机器玩坏了),拿来挂自己服务器什么的都不错,比什么云厂商舒服多了。我也和他了解了下相关知识,他说要有个个体户身份才行,网站备案的就可以用。就是感觉要申请下来挺复杂的,也不知道我所在地的宽带服务商有没有类似的优惠...

还记得她上次很久都没有回复我的消息(而且是好几次),看她也半个多月没发朋友圈了,我试探性的给她发了消息,问她五一假期有没有打算去看漫展。我本以为她会继续不理我,结果居然很快回了,但挺敷衍的。我和她澄清了之前的“代练”行为,只是想做同好朋友而已。她似乎接受了,但又没完全接受。即便如此,反正我很难接受这种长时间不回的行为,我此时此刻已经铁了心和她断联了。鉴于她初期给我的印象挺好,我不忍心直接单删(包括她也没有把我单删),我主动和她道了最后的别,好聚好散吧~

有关在小窝上播放网易云歌曲的问题

晚上继续写了下昨天的日记,想着插入一首网易云的 VIP 歌曲,但现状是不能播放。我在想如何识别它是可以播放的呢,以及可否将链接替换成我自己服务器的地址(我手动上传一个)?

说干就干,曾经我是用国内服务器作为跳板检测歌曲能否播放的,我把这个代码恢复之后发现网易貌似是直接把我服务器的 IP 给封杀了,拿浏览器登录我自己账号都提示“网络太拥挤,请稍后再试”,因此没法获取歌曲能否播放了。

服务器不能打开估计得整一个跳板服务器,这样搞访问起来极其不稳定不说,还可能掉链子。我想能不能凭歌曲接口本身的信息去检查,一番 G00gle 搜索后还是在我熟悉的 老项目文档 下找到了相关信息,这个名为 fee 的字段引起了我的关注。

  • 0: 免费或无版权
  • 1: VIP 歌曲
  • 4: 购买专辑
  • 8: 非会员可免费播放低音质,会员可播放高音质及下载

我拿自己歌单下的歌曲试了下,的确属实,只要是 0 和 8 的歌曲都能在国内直接播放,反之不行。但此时群友看到了我发的消息,表示手机能直接播放我发的 VIP 歌曲链接(但是 45 秒的试听),我去!这直接从 404 变成可试听,浏览体验已经是质的提升啊!但是鉴于我国内服务器还是不能访问网易云播放相关的接口,模拟手机端 UA 返回歌曲链接的方案目前还是没法实现,可惜可惜!

修复 Nuxt 的两个问题

晚上打算继续上传一些相册图片,结果发现相册页面的图片资源一直在转圈圈,非常奇怪。我此前写了一个图片懒加载组件,在客户端完成加载后,理应触发 onLoad 事件消除加载中的状态。我起初怀疑是浏览器的 Bug,结果写了一个纯 JS 的版本验证了下发现一切正常,怀疑是 onLoad 在图片加载之后设置,导致没有触发。@戴兜 说可能就是水合的问题,解决办法很简单,使用 onMounted 检查一下图片的 complete 属性就可以了,看上去现在的组件逻辑应该改成默认 loading=false,检测到非 complete 再设置成 true 的效果。

还记得之前的 日记 提到过,Nuxt 的生产环境下会给 App.vue 文件的第一层组件样式额外打包了一份样式输出在 Head 里面,出现一个样式被另一个相同样式覆盖的情况。 @戴兜 大佬说修改配置项 Inline Styles 可以去除相关输出。看上去这是它内置的优化机制,主要是为了提高首屏速度(但是文档也没解释这个到底有什么用)。我后续对比了一下有和无的首屏速度,基本上没有多少差异,用户无明显感知(Lighthouse 前两张截图白屏),反倒是用户网络延迟的因素导致网站访问卡顿的影响较大。

第三个问题则是日常编码的时候遇到的,新版的 Vue VSC 扩展貌似在 JSX 下有 Bug,输入常用引入项(例如 refonMounted)都没法自动 import 在文件顶部,如果使用 SFC 模式则没问题,这种 Bug 就有点恶心人,也不知道该怎么反馈...

详情

继续完善 iPhone 图片处理脚本

中午休息过程中借助 AI 的力量,继续完善了我的 iPhone 图片处理脚本,主要是对已处理内容的跳过判断,之前一月的图太多只传了一部分,后续增加的图还需要继续存放进来,弄好的文件就不需要反复再处理一次了。这是修改过的部分,关于实现中有关 Shell 的表达式细节,还参考阅读了 这篇文章

# 遍历当前文件夹下的所有 heic 和 png 文件
for file in *.{HEIC,heic,PNG,png,JPG}; do
  # 跳过不存在的文件
  if [[ ! -f "$file" ]]; then
    continue
  fi

  # 检查输出文件是否已存在
  if [[ -e "output/$new_filename" ]]; then
    echo "Skipping existing file: output/$new_filename"
    continue
  fi
done

睡前依旧挂着崩铁,打开博客把友情链接简单过了一遍,又多了 1-2 个不能打开的网站了。还继续改了一下博客的 2023 总结文章,即便脚本越来越完善,这篇文章的图片依旧要还很久的债,也不知道又要多长时间才能补完...

《你想活出怎样的人生》

今天首先按照昨天的想法完善了下 方块播放器 项目,更换成 Animation API 来控制动画,再完善了一些代码组织结构,功能基本和之前一致,水项目也算是对学习积累的一种实践嘛。

晚上约了 @王同学 去看了宫崎骏的最新作《你想活出怎样的人生》,全程看着有点懵,结果到后半才勉勉强强看出点哲理。貌似就是在讲那个虚拟世界的问题,问主角到底愿意选择一个不完美的现实世界(毕竟主角前半转学被欺负了),还是选择沉浸在自己创造的“完美”的世界(甚至现实世界的人物还可以在这里以跨时间的形式存在)。别的不说,明明宫崎骏的画风看着一点都不瑟,怎么感觉男主抱着自己老妈的样子这么温馨,让我感觉这么酸啊~

之后我们两个去吃了深夜的 M 记,他点了一份 66 元的三人套餐,我起初感觉量会不会太大,结果他一人吃了两人的份量了,哈哈哈哈。

详情

使用 Animation API 让页面元素动起来

前天给公司的浏览器插件项目做了个弹出动画,原理是给页面插入 style 标签,包含一段拼接的 CSS 动画,感觉不够优雅,这不一早看了这篇 讨论,发现有个新的 Animation API 更好用。

// Before
const styleEl = document.createElement("style");
styleEl.innerHTML = `
  @keyframes panel-animate {
    from {
      opacity: 0;
      transform: translate(${fromLeft}px, ${fromTop}px) scale(0);
    }
    to {
      transform: translate(${toLeft}px, ${toTop}px);
    }
  }

  .has-animate {
    transform-origin: top left;
    animation: panel-animate .5s forwards;
  }
`;

// After
const scaleAni = panel.animate(
  [
    { opacity: 0, transform: `translate(${fromLeft}px, ${fromTop}px) scale(0)` },
    { transform: `translate(${toLeft}px, ${toTop}px)` },
  ],
  { duration: 500 },
);

这样修改完之后可读性更好,有 TS 类型加成,还不需要担心类名冲突等等一系列问题,我打算趁机翻新一下我的 方块播放器 的相关代码了。

1
2
3
...
4
奇趣音乐盒技术源于 Kico Player
Emmm,这里是歌词君