<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>The Viogami lab</title><link>https://viogami.github.io/blog/index.html</link><description/><generator>Hugo</generator><language>en</language><lastBuildDate>Mon, 06 Apr 2026 07:17:08 +0000</lastBuildDate><atom:link href="https://viogami.github.io/blog/index.xml" rel="self" type="application/rss+xml"/><item><title>Project</title><link>https://viogami.github.io/blog/project/index.html</link><pubDate>Fri, 20 Mar 2026 14:52:21 +0000</pubDate><guid>https://viogami.github.io/blog/project/index.html</guid><description>自动手记人偶 跨端动漫管理应用（Web + Mobile），前端为静态页面，可以单独启动，数据保存在本地。
C.H文件夹下为后端代码，为支持保存的数据上传云端。go原生库编写，实现非常简单，也非常高效。
VioGo–不止聊天的奇妙bot 纯go编写的机器人业务后端，bot取名为 Vio ，qq机器人的实现基于gocq提供的api，基于gocq的上报事件调用转发外部讯息并返回。 可以完成基于chatgpt聊天任务，以及一些简单的指令响应。 如果你有想法和意见请提issue！这对我和bot都很重要！ 欢迎qq加群讨论：340961300
p5r预告信生成器API 我制作了api版本供生产或娱乐使用。网页版有汉化版但最近网站貌似挂了，如果反响好我就自己部署一个网页版公开下。
基于gocq的qqbot搭建 你至少需要启动三个服务 qsign服务器 go-cqhttp 你自己的机器人后端 gocq只需要启动项目即可，不需要配置域名，qsign和你的后端都需要配置域名 为了可以实现双向通信，你的后端需要实现websocket的通信。</description></item><item><title>Web</title><link>https://viogami.github.io/blog/web/index.html</link><pubDate>Mon, 02 Mar 2026 01:42:07 +0000</pubDate><guid>https://viogami.github.io/blog/web/index.html</guid><description>从分类维度冲突到领域驱动设计(DDD) 在分类问题中，无论是开发还是生活种，通常都习惯是单维树状结构表达的，但多数情况下，事物是多维属性的。
cockroachDB和mysql对比 尝试用了下cockroachdb，直接docker拉下，单节点启动。语法和pg基本一样，也当做pg和mysql的对比了，毕竟pg用的还是少，值得不停翻阅。
接口状态化设计–游标分页的优雅方案 无状态接口（Stateless）： 每次请求都是独立的，服务端不保存任何与上一次请求相关的上下文。 有状态接口（Stateful）： 多次请求之间有关联，服务端保存并依赖客户端的历史状态。
使用opensearch搜索引擎 阿里云的opensearch主要是做搜索使用，会通过用户的行为操作，加入一些权重设置、AI训练模型，来做人气模型和类目预测。opensearch目前产品单价较高，每月费用近2万（行业算法版）。仅需要图像搜索可用向量检索版，费用约700.
linux启动docker镜像成功，而win启动该镜像mysql报错 dockers报错：Starting MySQL database server mysqld …failed 进入容器内部，查看mysql错误日志：cat /var/log/mysql/error.log mysql具体报错：Different lower_case_table_names settings for server ('2') and data dictionary ('0').</description></item><item><title>Game</title><link>https://viogami.github.io/blog/game/index.html</link><pubDate>Sun, 15 Mar 2026 09:05:22 +0000</pubDate><guid>https://viogami.github.io/blog/game/index.html</guid><description>如何选择游戏字体 系统字与艺术字 不管是衬线体还是非衬线体，需要作为游戏的系统字体时，都需经过授权才可以合法使用。由于游戏包体大小和压缩限制的原因，游戏中不能放置太多的字体，往往标题字和系统字都各选一种。而如果游戏中的所有文字都仅使用系统字不免会有些单调，因此开发者需要在字体使用上做出权衡。 为了满足游戏中一些特殊的需求，如活动标题、游戏名字等，开发者可能需要使用一些艺术字或手写字体。艺术字有时是针对现有字体的变形和修饰，有时候也会是更为复杂的改变；而手写字体通常更加自然、柔和，风格化更强，有时候会由专业书法家进行设计。 那么，应该如何选择系统字或艺术字？我们应当考虑文字在游戏中所起到的作用。不同作用的文字会存在不同的设计和处理方式。一般情况下设计游戏界面所使用到的字体种类越少越好，尽可能通过视觉层次原则，例如字体的不同权重、样式、大小、方向、位置、颜色等来体现重要性差异。 字幕与对话 字幕和对话用于推进剧情和进行游戏引导，要尽可简洁。 通常使用清晰、易读的字体，如微软雅黑、思源黑体等非衬线体字体。这些字体在不同屏幕尺寸和分辨率下都能保持良好的可读性，确保玩家能够轻松理解游戏中的信息和指引。同时，字幕和对话的字体大小和行距也需要适当调整，以提高阅读体验，避免过于拥挤或过于稀疏的排版。
Nakama初体验 Nakama是一款开源的分布式游戏服务器，支持实时多人游戏、社交功能和后端服务。本文介绍了Nakama的安装和基本使用方法。
用最轻量的VS负载进行UE5开发(使用rider) 本人常用rider，不希望多安装一个vs，体积大是一方面，也不太习惯了。所以查阅了相关文档，发现只要安装vs的构建工具就可以了，下面记录一下过程。 {class=“children children-type-list children-sort-”}</description></item><item><title>Thinking</title><link>https://viogami.github.io/blog/thinking/index.html</link><pubDate>Mon, 06 Apr 2026 07:17:08 +0000</pubDate><guid>https://viogami.github.io/blog/thinking/index.html</guid><description>随笔 记录生活所思所想，来源于其他设备转移
后悔 记录第一次去香港的所见所得，标题即是这次一日游的浓缩概括，不过对我来说至少三层含义。
锈蚀 善于总结，就能发现时间的副作用
透传2025年 想写点什么，但很懒惰，其实在去年11月左右就老是感觉得记录一下了，奈何阻力重重，键盘按下千斤重呢。 也许也因为我怕写不出什么内容。现在正有精神，连本带息全都print下来吧。
Hugo or Typecho?博客是个问题 最终权衡我还是选择了typecho，抛开历史原因，在线编辑是个很必要的功能，谁等得住编译预览呢。虽然有codespace，但还是很麻烦。静态博客可以当发布页用，写点真文档，轻内容还是放在typecho吧</description></item><item><title>Reversing</title><link>https://viogami.github.io/blog/reversing/index.html</link><pubDate>Mon, 20 Jan 2025 00:00:00 +0000</pubDate><guid>https://viogami.github.io/blog/reversing/index.html</guid><description>TLS流量解密，mitmproxy抓包模拟器流量走clash代理证书问题 mumu模拟器启动游戏，希望抓其传向服务器的包，实现一些自动化操作。由于游戏是日服，所以需要启用代理。我使用了clash。此外，游戏的包使用了tls1.3加密，要想截取必须获得在本地生成的密钥进行解密才能知道明文。中间人代理，我使用了mitmproxy。
【逆向】解决unity导出TextAsset后部分文本出现乱码 该文件是通过解包软件从ab包直接导出的，不存在ab包加密的问题。既然部分文本可读，那么该文件加密的可能性很小，部分加密这种也太小众了。 {class=“children children-type-list children-sort-”}</description></item></channel></rss>