这次旅行,去的是传说中的“中国最美十大海岛”之一,嵛山岛。 出发之前还是挺期待的。 毕竟这种地方,网上随便一搜都是各种大片:蓝蓝的海水、层层叠叠的山、远处的海岛,还有站在山顶一眼望过去的壮阔海景。 结果真正到了以后才发现—— 旅行这种东西,真的很看天气。 登岛 刚开始的时候,天气其实还可以。 一路上看看风景,吹吹海风,感觉整个人都慢慢放松下来了。 岛上的风景和城市里完全不一样。 没有那么多高楼,也没有那么嘈杂的声音,视线一下子就开阔了很多。 一路走走停停,看到喜欢的地方就拍拍照片。 上山 在山脚下,天气看起来其实还行。 但是随着海拔越来越高,周围慢慢就开始白了起来。 远处的山看不清了。 海也看 …
算起来,我去漫展也有一段时间了。 不过如果要问我到底算什么身份…… 摄影师?算是吧。 集邮党?也算。 二次元爱好者?这个应该更准确一点。 相机挂着,手机揣着,然后看到好看的 Cos 就走不动路。 这次去的是 福州·第十五届潮柚次元动漫嘉年华。 展会在 2026 年 7 月 24 日到 26 日举行,地点还是大家比较熟悉的福州海峡国际会展中心。 出发,目标:拍照 + 集邮 一边拍,一边逛,一边集邮。 你永远不知道下一秒会在场馆哪个角落遇到谁。 我的漫展日常 “老师,可以拍几张吗?” “老师,可以集个邮吗!” “谢谢老师!” “老师,你看一下” “老师,需要反图吗,加个微信吧” 这句话我感觉已经快 …
# MoeKoe Music Mobile 一款开源、简洁、高颜值的第三方酷狗音乐移动端播放器 基于 Expo / React Native 构建,是 [MoeKoeMusic](https://github.com/iAJue/MoeKoeMusic) 桌面版的移动端实现 🌎 GitHub仓库 | 📦️ 下载安装包 | 💬 访问博客 | 🏠 项目主页 一款开源、简洁、高颜值的第三方酷狗音乐移动端播放器 基于 Expo / React Native 构建,是 MoeKoeMusic 桌面版的移动端实现 ✨ 特性 🎵 无需自建服务器 — 酷狗 API 适配层直接直连官方,开箱即用,不依赖外部 …
MoeKoe Music Extension MoeKoe Music 浏览器插件版,基于 MoeKoeMusic Web 构建,并在浏览器扩展内完成 API 路由兼容。 🌎 GitHub仓库 特性 点击浏览器插件图标后打开独立窗口运行 MoeKoeMusic。 无需用户配置 API 地址,也无需额外启动本地 API 服务。 保留 MoeKoeMusic 原有 Web 页面与交互,兼容浏览器扩展运行环境。 快速开始 环境要求 Node.js 20 或更高版本 Git Chrome / Edge 等 Chromium 内核浏览器 安装依赖 git submodule update --init …
在做插件市场之前,先有的是 MoeKoe 的普通插件系统。 当时我想解决的问题不是某一个具体功能,而是一个更通用的问题:播放器里总会冒出很多小需求,有些人想改界面,有些人想加一个工具弹窗,有些人想接自己的服务。如果每个想法都往主程序里塞,主程序会越来越重,也越来越难维护。 所以我一开始给插件系统定的方向很明确:主程序只提供插件运行环境和管理入口,具体功能交给插件自己做。插件能独立安装、独立卸载,坏了也尽量不要影响播放器本体。 上一篇我写的是 MoeKoeMusic-Plugins 这个插件登记仓库。那边解决的是“插件市场的数据怎么产生”:用户用 Issue 提交,Action 校验,维护者审核 …
一开始做 MoeKoe Music 插件生态的时候,还没有在线插件市场这个功能 后来在社区的建议下便有了这个插件市场 增加官方/社区插件仓库以扩展产品功能 插件可以由社区开发,那插件市场应该怎么管? 最直接的做法当然是把所有插件源码都收进一个大仓库里。但这个方案越想越别扭。每个插件都有自己的作者、自己的发布节奏、自己的构建方式。把它们全塞进官方仓库,不仅维护成本高,也会把责任边界搞得很模糊。 所以这个仓库最后没有被设计成“插件源码仓库”,而是变成了一个“插件登记与索引仓库”。它只做几件事: 接收插件上架、更新、下架和举报申请 自动做一轮基础校验和静态识别 把人工审核通过时的插件快照记录下来 维 …
紧接上文:《同一个动画,我用三种技术栈实现的区别?》 WebGL 二次元石头剪刀布小游戏。 规则很普通: 石头 > 剪刀 剪刀 > 布 布 > 石头 但有趣的是在于: 输了会脱衣服。 对,就是这么简单粗暴。 起因其实是“我想研究精灵图” 一开始我根本没想做游戏。 我只是想研究: atlas sprite 图层叠加 动画裁剪 这些东西。 然后想着:“总得有个实际应用场景吧?” 于是脑子一抽: 那干脆做个二次元脱衣猜拳。 然后项目开始朝奇怪方向狂奔。 这个项目最麻烦的其实不是游戏逻辑 石头剪刀布规则简单得离谱。 真正麻烦的是:衣服层级 因为角色不是:“一张完整图片” 而是: 底图 …
最近我做了个挺有意思的小实验。 我把一个二次元角色的小动画效果,分别用: WebGL Canvas 2D 纯 DOM + CSS 实现了三遍。 效果本身不复杂: 眨眼 眉毛/下眼皮联动 流汗轻微飘动 呆毛甩动 但真正有意思的,其实不是“做出来”。 而是: 同一个东西,用三种技术栈实现时,到底会差多少? 本质上就是一次“前端图形学味很浓”的复刻实验。 一开始只是想复刻一个呆毛动画 灵感来源:https://tamanidamani.itch.io/nijikas-ahoge 我当时想法特别简单:“如果是我,要怎么实现?” 然后越做越上头。最后直接演变成: 那我干脆把 …
最近写代码的时候,我有一种很奇怪的感觉。 不是写不动了,也不是不想写,而是—— 好像越来越不需要我写了。 以前一个功能,从需求到上线,基本是这样的路径: 我理解需求 → 设计方案 → 写代码 → 调试 → 改 bug → 上线 现在变成什么样? 我描述需求 → AI 写代码 → AI 改 bug → 我看一眼 → 上线 中间那一大段“写代码”的过程,突然变得很薄,甚至可以没有。 这件事,一开始挺爽的。 但爽着爽着,会有点不安。 过去程序员,除了「完成任务」后获得的成就感,在整个写代码的过程中也能体会到很多乐趣。 写代码这件事,好像没那么重要了 我以前一直觉得,程序员最核心的能力,就是写代码。 …
这件事听起来有点像电视剧里的桥段,但它确确实实发生在我身上。 我这个人呢,很恋旧。 因为家庭的原因,我很早就离开了那个地方。关于“从小一起长大(发小)”这种事情,对我来说一直很模糊——也正因如此,我格外羡慕那些能从小陪伴彼此、感情深厚的人。 长大之后,我总觉得自己像是在不断漂泊。习惯性地提前离开,把朋友丢在身后。 但偏偏就是为了曾经的那一句—— “我会回来的。” 没想到,这一等,就是二十年。 我也知道,注定不会有人真的在那里等我去履行这个约定。 可即便如此,这件事还是成了我心里的一个执念。 我以为,回到那里,能把思绪一下子拉回从前。 但真正站在那里时,脑海里只剩下零零散散的记忆—— 也许是忘了 …