<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>天翔TNXGの空间站</title>
        <link>https://www.tnxg.moe</link>
        <description>明日尚未到来，希望凝于心上</description>
        <lastBuildDate>Sun, 30 Nov 2025 15:33:27 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>zh-CN</language>
        <image>
            <title>天翔TNXGの空间站</title>
            <url>https://www.tnxg.moe/avatar.png</url>
            <link>https://www.tnxg.moe</link>
        </image>
        <copyright>All rights reserved 2026, 天翔TNXG</copyright>
        <category>学习</category>
        <category>折腾</category>
        <category>技术</category>
        <category>文章</category>
        <category>生活</category>
        <category>游戏</category>
        <item>
            <title><![CDATA[没写完的评论：给 記緒漂流 难解《Mygo》]]></title>
            <link>https://www.tnxg.moe/notes/6</link>
            <guid isPermaLink="false">note-6</guid>
            <pubDate>Sun, 30 Nov 2025 15:33:27 GMT</pubDate>
            <description><![CDATA[这篇评论表达了作者对动画《Mygo》的强烈喜爱。作者认为《Mygo》带来的感动堪比《赛马娘》第二季，并对作品中描绘的真挚友谊，特别是高松灯这一角色，给予了高度评价。这份喜爱也让作者成为了整个《BanG Dream!》企划的粉丝。作者在文中抒发了看完《Mygo》等优秀作品后，难以再找到同等级感动的心情，并渴望再次体验这种情感。最后，文章号召大家在网络世界中，为寻找和守护那份闪耀的真情而燃烧自己。]]></description>
            <content:encoded><![CDATA[因为小作文过长被评论区限制，因而在我的博客继续没写完的评论：给 [記緒漂流 难解《Mygo》](https://ttio.cc/jotting/mygo/)

网络烂梗龙卷风般摧毁一切！！前有赛马娘东海帝王哈基米特雷森太子待兼诗歌剧曼波，后有女乐定性文😭

有一说一看完mygo发现好像可以 ![新家集合](https://cdn.tnxg.top/images/upload/2025/11/27f98597e011a2fd2f817454440618c0.jpg)了，Bang Dream! 我实在是太喜欢了啊！上一次体验到这种感动还是在当初看赛马娘第二季时。

在看mygo之前：我超这个丰川祥子好美丽，名字和我略略略有重叠；

看完mygo之后就只有一个念头：我草，原来真的可以为友谊做出这种事情吗？高松灯……灯灯这块实在是泰强🌶

或许是出于对理想中自己的憧憬（或者说幻想？)，因而喜欢上了mygo，又因为我是箱推，推推推就变成了roselia和popipa乃至整个bangdream了。

最后最后的最后发现先自己变成补胎烧酒和班多烧酒粉丝这块，也是没救了。

> 看完赛马娘第二季、BanG Dream! It's MyGO!!!!!、少女☆歌劇 レヴュースタァライト 之后的我大概是这世界上最空虚的人了吧

> 那就去找吧
>
> 下一个舞台 下一个角色
>
> 那下一个舞台又在哪里？那些令我们感动的人和事真的会那么轻易的再次出现吗？

> アタシ、再生産
>
> Position zero.

> 真的，一直到现在， 我实在再没有吃到那夜似的好香蕉，好土豆，好番茄。
>
> ——也不再看到那夜似的好戏了。
>
> 哦内盖！请燃烧我吧！请让我们再一次感动吧！

Ps1: 据说《金牌得主》会给人带来感动，但是一直没来得及去看，有时间了一定看。

Ps2: 武士道和三次元什么小厂也敢和东映比3d，看看人家制作成本（另外就是邦邦3d看多了也会发现我超怪好看的，齿轮眼也很可爱哦~什么时候重置一下邦邦第一季啥的

让我们一起在这个充满了烂梗和恶意的互联网世界里，为了那一点点闪耀的真物，再次燃烧成灰烬吧。**直到把世界烧成灰（世界を灰にするまで）**（中二.jpg]]></content:encoded>
            <author>tnxg@outlook.jp (天翔TNXG)</author>
        </item>
        <item>
            <title><![CDATA[宝宝辅食: 从 SillyTavern 搭建到 API 获取全攻略]]></title>
            <link>https://www.tnxg.moe/posts/Z-Turn/baby-food-sillytavern-api-guide</link>
            <guid isPermaLink="false">baby-food-sillytavern-api-guide</guid>
            <pubDate>Sat, 06 Sep 2025 15:24:16 GMT</pubDate>
            <description><![CDATA[本文是一篇面向新手的SillyTavern（一个AI互动界面）超详细教程。文章从免费AI角色扮演的需求出发，详细介绍了SillyTavern在电脑和手机端的安装部署方法，并提供了代理设置等问题的解决方案。核心内容是如何获取API，分类讲解了Gemini、Deepseek等免费API和多种付费API的获取与使用，并解释了Token等核心概念。此外，文章还涵盖了SillyTavern的界面使用、插件安装、记忆优化（RAG）等进阶技巧，旨在帮助用户从零开始搭建一个功能强大的个人AI互动平台。]]></description>
            <content:encoded><![CDATA[# 宝宝辅食

## 废话*1

![dzmm角色卡](https://wsrv.nl/?q=100&url=https://api2.mubu.com/v3/document_image/3b07f86f-ec3e-47b8-a636-9521782c9855.jpeg)

事情的起因是因为我在群里看到了这张图。有人把我一年之前翻到的dzmm翻出来了，这个b东西经常因为各种奇奇怪怪的角色卡破圈。

有一说一，包括像dzmm或者风月ai，或者是其他杂七杂八的ai角色扮演和涩涩网站，我很难评。有很多甚至是直接拿社区免费开源的东西拿去赚钱，蛮恶心的。（特别是dzmm冲的还是美刀，赠送金玩玩就算了，充钱真的一点必要没有）

> 开源项目的商业化实际上无可厚非，大多数开源协议通常是允许商业使用的。这类平台大多数都是贩卖的自身的服务，面向的是没有技术能力的萌新。最典型的例子就是`Mirror酱`。符合相应内容的开源协议即可。

那么有没有一种免费的角色扮演，ai涩涩的平台呢？有的兄弟，这种方法我有九种（划掉）！

## SillyTavern：你的AI互动酒馆

“SillyTavern（简称 ST）是一个本地安装的用户界面，允许您与文本生成 LLM、图像生成引擎和 TTS 语音模型进行交互”——sillytavern。

> [SillyTavern/SillyTavern: LLM Frontend for Power Users.](https://github.com/SillyTavern/SillyTavern)

~~简单来讲就是个前端~~

GitHub页面看不懂没关系，我们来打个比方：

```mermaid
flowchart LR
    A["LLM - 美少女"] --> B["SillyTavern - 酒馆"]
    C["破限 - 酒"] --> B
```

把美少女拐到酒馆就可以聊天，灌醉以后就可以涩涩。

> 在技术上对应的是**“破限”（Jailbreaking）**。这通常涉及通过特定的提示词（prompts）、角色设定或模型参数调整，绕过LLM的安全过滤器（Safeguards）和内容审查机制，使其生成通常被限制的敏感或不当内容。

运营环境的搭建B站有现成的视频教程，在此附上链接：

*   **电脑端**：[https://b23.tv/Wz8FInb](https://b23.tv/Wz8FInb)
*   **手机端**：[https://b23.tv/4v04R75](https://b23.tv/4v04R75)

下方是补丁，错误并不来源于网络……

### 补丁1：代理设置小贴士

![系统代理地址报错](https://wsrv.nl/?q=100&url=https://api2.mubu.com/v3/document_image/84d3a8aa-9f6e-41e8-bcbc-e2e60967bd63.jpg)

> 这视频谁做的，怎么yaml使用`记事本`编辑，没高亮、没明显缩进、非等宽字体要把人眼看瞎的……
>
> 这里推荐一下Visual Studio Code：[Download Visual Studio Code - Mac, Linux, Windows](https://code.visualstudio.com/download)
>
> 简单说，vscode 是微软开发的一款 **跨平台代码编辑器**（新手不用纠结术语，记住 “编辑器 = 写代码的工具” 即可），核心特点可以总结为 3 个关键词：
>
> - **免费且开源**：不用花钱，所有人都能免费下载使用，代码公开透明（安全性有保障）；
>
> - **跨平台**：无论你用 Windows、Mac 还是 Linux 电脑，都能安装使用，界面和功能完全一致；
>
> - **轻量但能 “变强大”**：启动快不卡顿；但能通过「插件」扩展功能，比如支持 Python、Java、前端（HTML/CSS/JS）等所有编程语言，还能实现代码自动补全、语法检查、运行调试、代码高亮等。

>对比其他编程工具，vscode 对小白相当友好，主要原因有 4 点：
>
>1. **零门槛上手**：界面简洁，没有复杂的设置，但是多了编程必备的功能；
>2. **支持大部分编程语言**：不管你修改配置文件（JSON、YAML、TOML等）、学编程，甚至是写 Markdown 笔记，只要装个对应插件，vscode 都能搞定，不用为不同语言装不同工具；
>3. **功能 “按需添加”，不臃肿**：依据本文小白只需要安装yaml拓展即可；后期需要更复杂的功能（比如修改代码、做项目管理），再慢慢加插件，不会像某些工具一打开就有几十个看不懂的按钮；
>4. **社区支持强，问题好解决**：因为用的人太多，遇到任何问题（比如 “怎么运行 Python 代码”“插件装不上”），必应 / 小红书 / B 站搜一下，都能找到新手能看懂的教程。

![Clash端口](https://wsrv.nl/?q=100&url=https://api2.mubu.com/v3/document_image/b3c52c68-57fe-4f33-882d-e5a48decdd0f.jpeg)

如果你找的是魔法下方的系统代理地址，然后填入，或者是7897（clash）或者10808（v2ray）的端口，会报错（见常见报错）。个人推荐用tun模式。

### 补丁2：重复操作解决报错

![类似错误1](https://wsrv.nl/?q=100&url=https://api2.mubu.com/v3/document_image/08794793-45e2-448f-a11e-747195d8d747.jpeg)
![类似错误2](https://wsrv.nl/?q=100&url=https://api2.mubu.com/v3/document_image/04110f8d-a47b-4cdb-badd-8e892164fd04.jpeg)

出现类似的错误，建议重复一次第二步就可以了（这里指的是[https://gitee.com/LimeOnTop/sill-tavern](https://gitee.com/LimeOnTop/sill-tavern)的文档步骤）。

## API获取：你的专属服务员

API是什么？让我们继续打个比方：


```mermaid
flowchart LR
    A["客人 (正在使用SillyTavern的我)"] --> B["服务员 (API)"]
    B --> C["后厨 (大模型)"]
```


客人通过服务员给后厨传话，然后给你做菜，这就是API工作的原理。并且，因为你每点一道菜（调用次数），就得收点菜钱（调用费用）。

> 一般来说这里还有一些api提供商是按次数来计费的来着

这里分免费API和付费API分类讨论，具体模型名字是什么意思我依旧放在最后讲。（如无特殊说明，下方的所有网站都**需要魔法**）。

### 免费API：白嫖党的福音

#### Gemini：谷歌出品，必属精品

![Gemini Logo](https://wsrv.nl/?q=100&url=https://api2.mubu.com/v3/document_image/e2dd6832-9c6f-49cb-a3d8-10271b8875ce.jpg)

方法：

1.  注册一个**谷歌账号**（如果不会注册，请移动到文章末尾）。
2.  点开[https://aistudio.google.com/](https://aistudio.google.com/)，并且按照上图的方式（顺带一提，如果你看的是**电脑端B站教程**，里面内含GeminiAPI的获取方式)。

> 谷歌ai studio对于ip的判断很严格，推荐使用干净一些的魔法，且不要使用中国香港节点的魔法。

#### Deepseek：阿里魔搭社区的曲线救国

![Deepseek Logo](https://wsrv.nl/?q=100&url=https://api2.mubu.com/v3/document_image/08541df6-75e3-4086-b652-14a77a299826.jpeg)

（注，deepseekAPI官网是收费的，这里利用的是阿里的魔搭社区渠道）

方法：

1.从**电脑端（手机打不开）**打开[https://modelscope.cn](https://modelscope.cn)，并且注册账号。

2. 在**电脑端（手机打不开）**，如上图操作。

> 硅基流动也能够使用的

#### Claude：网页Cookie的奇妙用法

（注，Claude的官方API依旧是收费的，并且还是美刀，这里利用的是一个利用网页cookie取巧的办法)

*   cookie是什么
*   指纹浏览器抓取cookie
*   Claude轮询池搭建

#### 社区公益站：免费但需谨慎

![公益站盗刷警告](https://wsrv.nl/?q=100&url=https://api2.mubu.com/v3/document_image/9555f1f6-be3e-4c1e-bacd-c15061b39eb0.jpeg)

这个取决于具体社区，建议详细阅读规则，这是对你也是对公益站站长负责。

例如*Linuxdo*社区里大部分公益站，其实是**不支持**sillytavern或沉浸式翻译这种高并发的应用的，有封号的风险。

（注，公益站就是字面意思，**不收任何钱**，可能接受爱发电或账号赞助，任何打着公益站或半公益站旗号**收费让你交钱的**，都是**号贩子**！都是**号贩子！**都是**号贩子**！）

（而且，这种号贩子甚至懒得买账号去做号池，而是利用公益站的API去盗刷，极其可恶）（如上图）

#### 废话*2：模型选择的考量

并不是只有这三种模型是免费的，而是因为只有这三种模型是社区比较火的——也就意味着新人更容易入门，以及社区支持和角色卡更多。

例如一些你可能听都没听说过的名字，Mistral AI 的 La Plateforme（法国的，算是欧洲独苗了），他们就提供mistral-medium-2505（对中文的支持很差）的免费API。

### 付费API：高阶玩家的选择

（这里仅列出官网API充值渠道和最新模型价格，不做具体教程）

在使用付费API之前，我们还是拿饭店的例子去说明两个重要的概念——当你点菜给服务员（API）的时候，他是怎么知道还需要多少钱的？

可能有人就想到了，菜单上有价格嘛。但这个饭店可是什么都能做，我们不可能把所有的菜列成一个巨大的菜单，依次收费。

这时候就需要一个通用的标准，也就是token（类似游戏币）。

当我们把描述给服务员（API），服务员会先给厨房里的二厨（分词器），让他帮忙计算这句话的“含游戏币量”（输入token），随后转告给主厨。

主厨做好以后，你还需要支付给主厨一笔做菜的费用（输出token）。而我们最终吃到一道菜的价格，就取决于我们要求的多少，和主厨做菜的费用。

也就是（输入token+输出token）= 总价格。

（要求越多（输入token），价格越贵，就像你点一道家常小菜和红烧鱼眼清蒸鱼牙的区别）

> 一般来说，输出token的单价远大于输入token的单价。

知道了这个原理，就可以理解模型的收费标准了。

好的，这是补充了 Claude 3.5 Sonnet、Claude 3.5 Haiku、Claude 4.1 Opus 以及 Gemini 2.5 Pro 和 Flash 的信息：

#### ChatGPT：OpenAI 的旗舰产品

*   **模型**：GPT-5
*   **官网**：[https://platform.openai.com/](https://platform.openai.com/)
*   **价格**：输入：1.25 美元/一百万 token | 输出：10.00 美元/一百万 token

#### Grok：X.ai 的独特尝试

*   **模型**：Grok-4
*   **官网**：[https://console.x.ai/team](https://console.x.ai/team)
*   **价格**：输入：3.00 美元/一百万 token | 输出：15.00 美元

#### Claude 4 Sonnet：Anthropic 的智能与速度平衡之选

*   **模型**：Claude 4 Sonnet
*   **官网**：[https://www.anthropic.com/](https://www.anthropic.com/) (可通过 Anthropic API, Amazon Bedrock, 和 Google Cloud 的 Vertex AI 访问)
*   **价格**：输入：3.00 美元/一百万 token | 输出：15.00 美元/一百万 token
    *   长上下文定价（超过 200K 输入 token）：输入：6.00 美元/一百万 token | 输出：22.50 美元/一百万 token
    *   批处理可享 50% 折扣

#### Claude 3.5 Haiku：Anthropic 最快、最具成本效益的模型

*   **模型**：Claude 3.5 Haiku
*   **官网**：[https://www.anthropic.com/](https://www.anthropic.com/) (可通过 Anthropic API, Amazon Bedrock, 和 Google Cloud 的 Vertex AI 访问)
*   **价格**：输入：0.80 美元/一百万 token | 输出：4.00 美元/一百万 token
    *   批处理可享 50% 折扣

#### Claude 4.1 Opus：Anthropic 最智能的模型

*   **模型**：Claude Opus 4.1
*   **官网**：[https://www.anthropic.com/](https://www.anthropic.com/) (可通过 Anthropic API, Amazon Bedrock, 和 Google Cloud 的 Vertex AI 访问)
*   **价格**：输入：15.00 美元/一百万 token | 输出：75.00 美元/一百万 token
    *   批处理可享 50% 折扣

#### Gemini 2.5 Pro：Google 的先进推理模型

*   **模型**：Gemini 2.5 Pro
*   **官网**：[https://ai.google.dev/](https://ai.google.dev/) (可通过 Google AI Studio 和 Vertex AI 访问)
*   **价格**：输入：1.25 美元/一百万 token (对于 ≤200K token)；2.50 美元/一百万 token (对于 >200K token) | 输出：10.00 美元/一百万 token (对于 ≤200K token)；15.00 美元/一百万 token (对于 >200K token)

#### Gemini 2.5 Flash：Google 的高性价比工作模型

*   **模型**：Gemini 2.5 Flash
*   **官网**：[https://ai.google.dev/](https://ai.google.dev/) (可通过 Google AI Studio 和 Vertex AI 访问)
*   **价格**：输入：0.10 美元/一百万 token | 输出：0.40 美元/一百万 token
    *   图像输出价格为 30 美元/一百万 token，每张图像（高达 1024x1024px）消耗 1290 token，相当于每张图像 0.039 美元.


## SillyTavern页面信息简单教程

### 基础信息

![SillyTavern基础信息界面](https://wsrv.nl/?q=100&url=https://api2.mubu.com/v3/document_image/ad265703-1de0-4837-b73d-7025738bab4e.png)

### 预设

![SillyTavern预设界面](https://wsrv.nl/?q=100&url=https://api2.mubu.com/v3/document_image/4abdd340-aca5-49d3-8d31-5e1925d881d0.jpeg)

### API链接

![API链接设置1](https://wsrv.nl/?q=100&url=https://api2.mubu.com/v3/document_image/db2af80b-b693-49c6-9cd8-13759d3ed665.jpeg)
![API链接设置2](https://wsrv.nl/?q=100&url=https://api2.mubu.com/v3/document_image/b4610e1e-0879-4d7f-9083-c351fdf465a3.jpeg)
![API链接设置3](https://wsrv.nl/?q=100&url=https://api2.mubu.com/v3/document_image/da891d14-95e2-41b3-b417-b7584e2d05b2.jpeg)

#### 虚拟网卡（TUN模式）

![TUN模式示意图](https://wsrv.nl/?q=100&url=https://api2.mubu.com/v3/document_image/4db625c4-f21a-457b-85ae-4ecdc05cf0a5.jpeg)

或者叫tun模式（魔法使用教程不在这里，演示页面为Clash V）。

原理：

打个比方——

```mermaid
graph TD
    A[你的手机/电脑] --> B(一个叫“虚拟网卡”的特殊通道);
    B --> C{你的魔法软件};
    C -- 把数据“化妆”一下 --> D[远方的“中转站”服务器];
    D --> E[你想去的网站/服务];
    E --> D;
    D -- 把数据“卸妆”回来 --> C;
    C --> B;
    B --> A;

    subgraph 你的设备
        A
        B
        C
    end

    subgraph 互联网
        D
        E
    end

    style B fill:#f9f,stroke:#333,stroke-width:2px
    style C fill:#bbf,stroke:#333,stroke-width:2px
    style D fill:#bfb,stroke:#333,stroke-width:2px
```

> 实际上，第一个黄色方框里面的内容就是tun模式的工作原理。
>
> 它会在操作系统中创建一个虚拟网卡（或使用TUN设备）。所有原本应该直接发送到物理网卡的流量，都会被操作系统路由到这个虚拟网卡。虚拟网卡就像一个“阀门”，控制着数据的流向。

也就是水库内所有流过的水都会通过tun模式这个阀门。

配合上全局配置可以防止SillyTavern没挂上魔法，以至于出现下述报错。

#### 常见报错

![报错1](https://wsrv.nl/?q=100&url=https://api2.mubu.com/v3/document_image/219d0857-2809-4547-8199-8ad1266a850d.png)
![报错2](https://wsrv.nl/?q=100&url=https://api2.mubu.com/v3/document_image/6c28a738-6417-4fc6-b7fb-f9b757f93cce.jpeg)

### 世界书

![世界书界面](https://wsrv.nl/?q=100&url=https://api2.mubu.com/v3/document_image/7c40b4ba-413d-41aa-b46a-ed90f1b69ac8.jpeg)

### 角色卡

![角色卡界面](https://wsrv.nl/?q=100&url=https://api2.mubu.com/v3/document_image/336b8032-67ad-4f7d-a57b-ea61fbf7087a.jpeg)

### 插件导入

![插件导入1](https://wsrv.nl/?q=100&url=https://api2.mubu.com/v3/document_image/9de977fe-a342-4e89-8fde-e68e6ea33dcb.jpeg)
![插件导入2](https://wsrv.nl/?q=100&url=https://api2.mubu.com/v3/document_image/42798fad-bd71-4fbb-8e48-f9ddccb580f1.jpeg)

## 社群进入：抱团取暖，事半功倍

十分甚至九分推荐进入社区，这里不仅有大量的角色卡，而且有足够的预设和大佬帮你解决问题。（下方大部分教程都是基于大佬开发的教程，如果不进入会麻烦很多）。

但在此之前你需要注册一个discord账号，如果没有的话请看下方账号注册的教程。

*   **类脑**：[https://discord.gg/QVFAUHsq](https://discord.gg/QVFAUHsq)
*   **旅程**：[https://discord.gg/zwxqHbq3](https://discord.gg/zwxqHbq3)

## 酒馆助手：必备前置插件

绝大多数插件，角色卡都必须要的前置。

文档和教程链接：[https://n0vi028.github.io/JS-Slash-Runner-Doc/guide](https://n0vi028.github.io/JS-Slash-Runner-Doc/guide)


## 记忆优化：让AI拥有“长期记忆”

（请保证你安装前，已安装酒馆助手）

原本这里想尝试用几样专门插件去写的（专门的RAG插件，专门的表格插件），但最终实践下来还是Amily2号最适合新人。

[https://docs.google.com/document/u/0/d/11E7HIFg59up0afv-lV0cAF5G3jzJXCkZK8cBCOMZ9zo/mobilebasic#heading=h.xq53yl5o80i7](https://docs.google.com/document/u/0/d/11E7HIFg59up0afv-lV0cAF5G3jzJXCkZK8cBCOMZ9zo/mobilebasic#heading=h.xq53yl5o80i7)
（Amily作者亲自编写的教程）

## 反向代理：宝宝辅食级教程

[https://discord.com/channels/1291925535324110879/1406084681564160030](https://discord.com/channels/1291925535324110879/1406084681564160030)
带轮询，宝宝辅食级别教程（统共三步安装，两步使用）。

## 魔法：通往自由的桥梁

> 转载文章因为内容审查的原因绕过了这一块，可以去查看原文内容：[#宝宝辅食 - 幕布](https://mubu.com/doc/2kAvgLMqmeR)

## 谷歌账号：AI世界的通行证

### 注册：免费获取

如何在注册Google账号时跳过手机验证码这个步骤: [https://b23.tv/79xTl6J](https://b23.tv/79xTl6J)
（无效的话就按照指引注册吧……）

### 购买（并不推荐）：最后的选择

![接码平台](https://wsrv.nl/?q=100&url=https://api2.mubu.com/v3/document_image/28a37103-ee4c-4870-a556-d0237cad1a86.jpg)
![闲鱼购买示例](https://wsrv.nl/?q=100&url=https://api2.mubu.com/v3/document_image/cef3bf8b-1adf-4f57-8427-1f4db298f75b.jpeg)

[https://sms-activate.io/](https://sms-activate.io/)
这个是接码平台（但因为里面的号多少有点太“脏”了，所以不购买手机号接码注册，即使很便宜但100%注册失败）（图1）。

第二种就是闲鱼搜索“Gemini2.5pro学生验证”，会给你发一个pro的账号，附带一个谷歌账号（图2）。

## 可能需要的科普（可不看）：AI命名与工作原理

如同NaOH一样，AI的命名也遵从某种准则。以最近很火的gemini 2.5 flash image preview为例，一个一个来拆分其命名准则：

*   **Gemini** - 谷歌家的（谷歌DeepMind开发的大型模型系列的名称）
*   **2.5** - 版本号（数字越大越快）
*   **flash** - 快速（同理，还有pro作为推理模型）
*   **image** - 图片（和专门的imagen图片生成模型不同）
*   **preview** - 预览版（同理，还有exp实验版）

即：谷歌的2.5代快速多模态模型预览版。
同理，Gemini 2.5 pro preview 0605意味着谷歌的第2.5代推理模型在5月6号发布的预览版。

### 聊天模型：深入理解

#### Token是什么？

我们前面把token比作游戏币，虽然很像，这其实是一个不严谨的说法（但如果看到游戏币的形容，依旧是指token）。这前面说到每个后厨里，除了真正炒菜的主厨（推理模型），还会有二厨存在一样，也就是分词器。二厨的工作就是把用户输入的文本切碎，就如同切菜一样分开，然后交给主厨处理。分开后的一些单个字，词，或短语（英文）被称为token。

我们会在大模型的价格页面上，偶尔会看到命中缓存和非命中缓存，这又是什么意思？
换个例子，假设你在图书馆里，我想要一本书的时候，会有两种情况：

1. 我的书就在身边，或者就在附近，我随手就能拿到（命中缓存）。
2. 我的书在书架上，或者需要很远去拿的地方（未命中缓存）。
    而这个概念套入AI中，在图书馆找书的过程，就变成了从缓存内找token的过程。

#### 参数额度：AI的“饭量”

当我们在调用API的时候，模型主要由以下几个参数限制：

*   输入/输出方式——是输入文本或图片，输出文本
*   最大输入/输出token数

（同样，你可以使用在美化教程内找到如何图片的输入输出方法，这里不做赘述）。

token额度是限额的。这个很好理解，毕竟模型公司不是做慈善的，依旧用先前的饭店例子。假设你有一张这家店的会员卡，那么：

*   每分钟请求数 (RPM)——一分钟内让后厨最多炒几个菜
*   每日请求数 (RPD)——这张会员卡每天最多能让后厨炒几个菜
*   每分钟 token 数（输入）(TPM）——卡里有多少游戏币
*   每日token数（输入）（RPM）——卡里**总共**有多少游戏币

同样，以谷歌的免费Gemini2.5pro为例子，它的输入方式为:图片/文本/音频/视频和PDF，输出方式为文本，也就是不支持生图。输入token最大为100万 token，输出token为65536 token。RAM为2，RPD为50，TPM为12.5万，RPM为300万。

（也就是说免费账户享受不了100万的输入token，而且只能玩50次）。

相关错误:429错误（Too Many Requests），即“过多请求”。会给你提示“RESOURCE_EXHAUSTED”这个报错。原因可能是上述四个限额你违反了一个，这时候就要切换其他API或者换个账号了。

> 在这里我得说一下有一些公益站提供的API，就是通过轮询超级多的apikey实现的，因为谷歌会给每个ai studio的apikey每天一定的额度，所以这样就能绕过限额了。（但这种方法很不稳定，而且很容易炸key


#### 工作原理：Transformer的奥秘

【10分钟，让你彻底理解Transformer-哔哩哔哩】[https://b23.tv/3b89PXv](https://b23.tv/3b89PXv)
（由于这部分内容实在和教程无关，相关内容请在B站自主搜寻）。

#### 记忆原理：AI的“短时记忆”与“遗忘”

我们在上述的参数额度中讲过，对于最大输入token，模拟往往会有一定的参数标准（例如Gemini的最大输入token为100）。而这通常是一个硬指标，就连大模型公司也不能随意更改。

当然，没人能一次性输入一百万token，所以很大一部分，就被大模型自己“贪污”掉了。但请注意，这份贪污是必须的，因为大模型没有记忆力。但你可以看到它会根据你上一条消息继续回答。不是说大模型没有记忆吗？这又是为什么？
答:因为它会把你前文所有的问题，无论好坏一股脑的发送回去，直到达到最大输入token的上限（以Gemini为例，就是100万token）。

打个比方，AI的记忆就像是我们截长屏，图片会越来越长。又有时候，我们想去发送给好友自己截的长屏，但QQ往往会对长图片进行限制，甚至可能发送失败（429或超过最大输入token）。这时候，我们就必须删掉一部分图片。转换到AI里，便是AI直接“忘掉”了这一部分内容——这个忘掉遵从时间原则，先问的先删，后问的后删。

如果你理解了上述内容，恭喜你理解了AI短期记忆的机制——也就是将所有的上下文都发过去，超出的部分“忘掉”这其中，必然伴随着极其巨量的token消耗，所以必须对其进行优化。

### RAG：构建AI的“长期记忆”

为了让AI不止局限于那一百万的短期记忆中，同时也为了让token消耗的少一点，就必须让AI拥有自己的长期记忆——该怎样做？

依旧是截屏和QQ发消息的例子，我们可以发现长截屏就是比短截屏要糊~~，而且那么长一串谁看啊~~。而更可惜的是，长截屏里可能只有几个需要对方注意的地方。类比到AI里，就是AI分不清主次，以至于回答的风马牛不相及。解决办法也很简单，就是将长截屏的每个要点切成短截屏，标上先后顺序，存到相册里，再发给朋友。

类比回去，就理解了几个专业名词的意义：

*   长截短 - **分片**
*   标顺序 - **索引**
*   存相册 - **向量化**
*   发朋友 - **召回**

这就是RAG，检索增强生成的全部原理。
视频版本：[https://b23.tv/JOf2Zoq](https://b23.tv/JOf2Zoq)（来源于网络）。

## 额外：更多资源

![额外资源1](https://wsrv.nl/?q=100&url=https://api2.mubu.com/v3/document_image/8efdd64b-1de3-445f-9ec7-6549228847b3.png)
![额外资源2](https://wsrv.nl/?q=100&url=https://api2.mubu.com/v3/document_image/7cd49ea8-a406-4e70-b69c-881b5a0b4953.png)

这里原本其实写了有一大堆来着，但被我翻类脑的时候发现有教程总结了。为了防止造轮子的行为，这里直接附上discord的链接：
[https://discord.com/channels/1134557553011998840/1392379963239301221/1392379963239301221](https://discord.com/channels/1134557553011998840/1392379963239301221/1392379963239301221)

---

文章转载自 [#宝宝辅食 - 幕布](https://mubu.com/doc/2kAvgLMqmeR) 经由原作者 `落尘` 授权转载

![授权信息](https://cdn.tnxg.top/images/upload/2025/09/ae06c5ab37b8de1664807c5371c714b5.png)]]></content:encoded>
            <author>tnxg@outlook.jp (天翔TNXG)</author>
            <category>转载</category>
            <category>笔记</category>
            <category>AI</category>
        </item>
        <item>
            <title><![CDATA[看看Shiroi的代码高亮模式？]]></title>
            <link>https://www.tnxg.moe/notes/5</link>
            <guid isPermaLink="false">note-5</guid>
            <pubDate>Sat, 21 Jun 2025 04:46:04 GMT</pubDate>
            <description><![CDATA[以上是一些编程语言的列表，包括 Python、Rust、Ruby、TypeScript、JavaScript、C++、C#、Java、Go、Swift、Kotlin、PHP、Scala、R、Perl、Lua、Bash/Shell Script、PowerShell、Objective-C、Assembly (x86-64 Linux - NASM)、Lisp (Common Lisp) 和 Haskell。]]></description>
            <content:encoded><![CDATA[## Python

```python
print("Hello, World!")
```

---

## Rust

```rust
fn main() {
    println!("Hello, World!");
}
```

---

## Ruby

```ruby
puts "Hello, World!"
```

---

## TypeScript

```ts
const message: string = "Hello, World!";
console.log(message);
```

---

## JavaScript

```javascript
console.log("Hello, World!");
```

---

## C++

```cpp
#include <iostream>

int main() {
    std::cout << "Hello, World!" << std::endl;
    return 0;
}
```

---

## C#

```csharp
using System;

class Program {
    static void Main() {
        Console.WriteLine("Hello, World!");
    }
}
```

---

## Java

```java
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}
```

---

## Go

```go
package main

import "fmt"

func main() {
    fmt.Println("Hello, World!")
}
```

---

## Swift

```swift
print("Hello, World!")
```

---

## Kotlin

```kotlin
fun main() {
    println("Hello, World!")
}
```

---

## PHP

```php
<?php
echo "Hello, World!\n";
?>
```

---

## Scala

```scala
object HelloWorld {
  def main(args: Array[String]): Unit = {
    println("Hello, World!")
  }
}
```

---

## R

```r
print("Hello, World!")
```

---

## Perl

```perl
print "Hello, World!\n";
```

---

## Lua

```lua
print("Hello, World!")
```

---

## Bash/Shell Script

```bash
#!/bin/bash
echo "Hello, World!"
```

---

## PowerShell

```powershell
Write-Host "Hello, World!"
```

---

## Objective-C

```objective-c
#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSLog(@"Hello, World!");
    }
    return 0;
}
```

---

## Assembly (x86-64 Linux - NASM)

```assembly
section .data
    msg db "Hello, World!", 0xA  ; String and newline character
    len equ $ - msg             ; Length of the string

section .text
    global _start

_start:
    ; write(1, msg, len)
    mov rax, 1                  ; syscall number for write
    mov rdi, 1                  ; file descriptor (stdout)
    mov rsi, msg                ; address of string to output
    mov rdx, len                ; length of string
    syscall

    ; exit(0)
    mov rax, 60                 ; syscall number for exit
    mov rdi, 0                  ; exit code
    syscall
```

---

## Lisp (Common Lisp)

```lisp
(format t "Hello, World!~%")
```

---

## Haskell

```haskell
main :: IO ()
main = putStrLn "Hello, World!"
```]]></content:encoded>
            <author>tnxg@outlook.jp (天翔TNXG)</author>
        </item>
        <item>
            <title><![CDATA[为什么最后还是使用了 Server-Sent Events 来实现即时动态？​]]></title>
            <link>https://www.tnxg.moe/posts/technology/why-use-server-sent-events-for-real-time-updates</link>
            <guid isPermaLink="false">why-use-server-sent-events-for-real-time-updates</guid>
            <pubDate>Sun, 13 Apr 2025 13:53:15 GMT</pubDate>
            <description><![CDATA[本文讲述了作者在个人主页中加入“即时动态”功能时，对数据传输方案的选型过程。作者先后考虑了轮询、WebSocket 和 Server-Sent Events (SSE)，最终选择了 SSE。文章详细对比了这三种方案的优缺点，解释了选择 SSE 的原因：SSE 适用于单向数据推送，实现简单，且能满足“即时动态”的需求。此外，文章还提到了 SSE 的一些局限性，如单向数据流、数据类型限制、浏览器并发限制、错误处理和重连机制有限、性能和服务器压力以及消息可靠性问题。]]></description>
            <content:encoded><![CDATA[一开始设计我的个人主页时，我就给自己挖了个坑——好歹得有个“即时动态”功能啥的，用来展示我此时此刻正在干嘛，是在写代码、听歌、还是在玩游戏。😵‍💫 这听起来像个花活，但毫无疑问的是，它确实是一个花活。

这份执着来自于此前我为 Mix-Space 的 Shiro 当中的 [我的动态](https://mx-space.js.org/docs/themes/shiro/extra#我的动态) 开发上报软件所埋下的。现在我依旧在维护 [AlienFamilyHub/Kizuna: 基于 Tauri 的动态信息上报程序](https://github.com/AlienFamilyHub/Kizuna) 实现动态上报。🫣

## 在网上冲浪的时候，我偶然发现了一些很好玩的东西

### 其一

编码时长统计插件 codetime 会将编辑器正在编辑的信息通过 api 返回给前端，它会返回实时的编码状态信息。![实际上就是发现了这个然后打开控制台才发现了这个好玩的 api 的](https://cdn.tnxg.top/images/upload/2025/04/b8e246a5434c50661cefd82da5ddf941.png) 像这样一条返回结果就非常详细，甚至能精确到文件路径和 Git 仓库：

```json
{
    "id": number,
    "uid": number,
    "eventTime": number,
    "language": "typescript",
    "project": "Kizuna",
    "relativeFile": "src/stores/eventStore.ts",
    "absoluteFile": "c:\\Users\\tianx\\Desktop\\Kizuna\\src\\stores\\eventStore.ts",
    "editor": "VSCode",
    "platform": "Windows 11",
    "gitOrigin": "https://github.com/AlienFamilyHub/Kizuna.git",
    "gitBranch": "master"
}
```

通过这个 API，我可以获取当前用户正在编辑什么、在哪个平台上写的、用的是什么编辑器、具体写的是哪个项目甚至哪个文件。

### 其二

网易云的“在听状态”是我最想展示的元素之一。我思考它如果能做到多用户同步的话肯定会有能获取到播放状态的接口使用。

它虽然并没有公开 API，但总归还是有大佬去做了抓包等逆向操作将相关的内容开放出来供开发者使用。

在 [XiaoMengXinX/Music163Api-Go: 网易云音乐 API Golang 实现](https://github.com/XiaoMengXinX/Music163Api-Go) 这个项目中，我发现了该功能的详细实现，最终便可以将其封装为可单文件调用的形式。于是 [ProcessReporterWingo/core/NcmNowPlay/main.go at master · TNXG/ProcessReporterWingo](https://github.com/TNXG/ProcessReporterWingo/blob/master/core/NcmNowPlay/main.go) 诞生了。

## 于是我就在想，这些是否能放在博主动态中呢？

答案是当然可以，但是使用什么方式传递这些信息呢？

### 轮询 (敲——，有新消息吗？

起初，我用的是最朴素的方法——**轮询**。前端每隔几秒请求一次 API，问服务器：“你那边有啥新动态没？”

这种方式是最简单的，但是其缺点也显而易见||（ai 老是和我说浪费流量，虽然这确实是轮询的主要问题，但是谁现在还在用流量计费的设备看你的网站啊（划掉，不过能优化还是优化一下吧||

会污染控制台的“网络”栏、会造成网络资源的浪费。而且明明很长时间都没有新消息，它还在每五秒钟咣咣敲门，热情得令人感动，但是它一点都不懂体谅服务器，也不懂得体谅开发者的鼠标滚轮（不是

时效也是一个问题，你状态一更新，它不一定能马上知道，因为“我刚轮询完你就变了，咱下次再见吧。”

有人会说，调短轮询时间不就行了吗？这就又引出了轮询的另外一个问题，如果轮询间隔太短，那么服务器压力会更大，而且大部分请求都是无效的——“没有新消息”。

如果轮询间隔太长，那么实时性又会大打折扣。这就像是一个永远无法两全的矛盾。

### WebSocket（我们来建立一个长连接吧！）

既然轮询这么麻烦，那么我们为什么不直接建立一个**长连接**呢？WebSocket 就是为此而生的。

WebSocket 是一种在单个 TCP 连接上进行**全双工通信**的协议。

它允许**服务器主动向客户端推送数据**，这样一来，当服务器有新消息时，可以立即推送给客户端，而不需要客户端不断地询问。它也允许**客户端主动向服务器上报**目前的数据以及运行情况。

WebSocket 的好处大家都知道：双向通信、延迟低、实时性强，是构建 IM、在线协作编辑这类场景的首选。和轮询比，它简直是把牛刀。

也正因为它是一把牛刀，对于我这个简单的 “即时动态” 功能来说，有些大材小用了，也正所谓“杀鸡用牛刀”。

**双向通信用不上**：我的“即时动态”其实是单向的，后端告诉前端状态就完了，前端并不会反过来告诉后端“我看到了”。WebSocket 就像是你买了对讲机结果只用来听广播。

**连接管理更复杂**：保持连接活跃、心跳包、断线重连等逻辑，要写的代码明显比 SSE 多，维护成本高。

**资源占用偏高**：浏览器要维持长连接，服务器端也得一直 hold 着 socket，会话多了压力也不小。

说实话，我只想告诉访客我正在写 TypeScript，不是开一个聊天室。况且再说了，WebSocket 还有一个现实问题——

很多 CDN 服务商对它的支持并不友好：WebSocket 协议因其全双工通信特性，理论上可以被用来构建代理等 “特殊用途”。这导致部分体量小的云厂商会直接禁用对其的支持。

相比之下，SSE 基于纯 HTTP 协议，数据流向明确（仅服务器到客户端），被滥用的可能性大大降低。企业防火墙和安全设备通常会对 WebSocket 流量进行深度检测，而 SSE 作为标准 HTTP 流，通常被视为普通网页流量处理。这也是为什么在一些**特殊的网络环境**下，WebSocket 连接容易被中断，而 SSE 却能稳定工作。

### Server-Sent Events（嘿，我有新消息要告诉你！）

终于轮到我们的主角 SSE 登场了！它就像是一个**单向**的广播站，服务器可以随时向客户端推送消息，而客户端只需要乖乖听着就好。

SSE 的工作方式特别简单：

1. 客户端发起一个普通的 HTTP 请求
2. 服务器保持连接不断开，并设置 `Content-Type: text/event-stream`
3. 当有新消息时，服务器就往这个连接里写数据

```javascript
// 前端代码简单到令人发指
const eventSource = new EventSource('/api/status');
eventSource.onmessage = (event) => {
    console.log('收到新动态啦！', event.data);
};
```

它就像是给浏览器装了个收音机，调好频道后就一直收听着服务器的“广播”。而且这个“收音机”还特别贴心，如果信号断了（比如网络抖动），它会自动重新连接，完全不用我操心。不过，为了防止连接被网络设备误判为闲置而关闭（虽然被关闭了也会自动重连就是了），我会让服务器定期发送带冒号的注释消息，保持连接活跃。🎵

相比 WebSocket 的“大炮打蚊子”，SSE 简直就是为我这种单向推送场景量身定制的。它不需要特殊的协议支持，不用处理复杂的连接状态，连断线重连都是浏览器自动帮我搞定的。

而且最妙的是，它特别省心：

- 不用处理断线重连（浏览器自带）
- 不用担心防火墙问题（标准 HTTP 协议）
- 代码量比 WebSocket 少得多（ 懒人的福音 ）

为数不多的“缺点”可能就是它是单向的——但这恰恰是我想要的！我又不是要和访客聊天，我只是想告诉他们：“oi，我刚刚在用 VS Code 写了个 Bug！🐛”

SSE 不喧宾夺主、不拖沓废话，只是静静地等后端“有话要说”，然后送达前端。对我这种只想展示“当前状态”的项目来说，正好、刚好、够用。

所以最终我选择了 SSE 来实现即时动态功能。它就像是一个不会喋喋不休的好朋友，在你想知道我在干什么的时候，它会第一时间告诉你，但绝不会问你“看到了吗？”——因为它压根儿就问不了。😆

如果你也对 SSE 感兴趣，想要深入了解或实践这项技术，推荐阅读以下资料：

- [Server-Sent Events 教程 - 阮一峰的网络日志](https://www.ruanyifeng.com/blog/2017/05/server-sent_events.html)
- [使用服务器发送事件 - Web API | MDN](https://developer.mozilla.org/zh-CN/docs/Web/API/Server-sent_events/Using_server-sent_events)

这些教程提供了更详细的技术实现细节和最佳实践，相信能帮助你更好地理解和应用 SSE。



## 当然，也有一些需要注意的事情！

### 单向数据流特点

这可以说是SSE的缺点，也可以是其的优点。

它的数据单向性保证其轻量的主要特征，但也导致了它无法处置复杂情况的局面。

### 数据类型限制

SSE 只支持纯文本数据，无法传输二进制数据。

对于图像、音频、视频流等多媒体内容的场景，SSE 不太适用。

**你不能通过 SSE 直接传输实时的视频流或者音频**——不过，这个限制其实也可以用一些巧妙的方法来绕过，比如通过编码将图片数据转为文本格式（比如 Base64 编码），然后通过 SSE 发送。

不过，**这种做法虽然能传输图片，但绝对不是高效的方式**。

有时候，图片串联起来看，倒像是视频了，只是传输速度要慢得多了。🎥（日本程序员.jpg（笑

### 浏览器并发限制

 当**不通过 HTTP/2 使用时**，SSE会受到最大连接数的限制，这在打开多个选项卡时特别麻烦，因为该限制是针对*每个浏览器*的，并且被设置为一个非常低的数字：**6**。

该问题在 [Chrome](https://crbug.com/275955) 和 [Firefox](https://bugzil.la/906896) 中被标记为“不会解决”。

不过，此限制是针对每个浏览器 + 域的，因此这意味着你可以跨所有选项卡打开 6 个 SSE 连接到 `www.example1.com`，并打开 6 个 SSE 连接到 `www.example2.com`。（来自 [Stackoverflow](https://stackoverflow.com/questions/5195452/websockets-vs-server-sent-events-eventsource/5326159)）。

幸好现代浏览器普遍支持 **HTTP/2** 协议。在 HTTP/2 中，连接数的限制被大大改善，因为 HTTP/2 支持**多路复用**。

在 **HTTP/1.x** 中，**一个 TCP 连接一次只能处理一个请求**。这意味着你每发一个请求，都得建立一个新的连接，导致资源浪费和页面加载变慢。就像你要去超市购物，每次都得排队一个接一个地进门，效率超级低。

而 **HTTP/2** 则解决了这个问题，通过 **多路复用**，允许在 **同一个 TCP 连接上同时处理多个请求和响应**。这就像你进入超市后，可以直接去多个货架，随时拿东西，不需要排队。🍏🥖

简而言之，HTTP/2 让你可以用更少的TCP连接处理更多的 SSE 流，避免了因连接数限制而带来的困扰。😎

但需要注意的是，这并不代表 HTTP/2 就是万能的，如果你的应用仍然需要高频率或低延迟的双向通信（比如在线聊天、多人游戏等），那么可能还需要考虑 WebSocket 等其他协议来满足更复杂的需求。

### 错误处理和重连机制有限

SSE 自带自动重连机制，这确实能帮助你处理一些网络断开问题，但是它的错误处理和连接恢复机制相对较为 **基础**。

如果你遇到网络不稳定的环境，SSE 可能会表现得 **略显不稳定**，需要你手动去处理一些高级错误场景，比如数据丢失、重试逻辑、断线重连的时机等等。

换句话说，当网络异常时，SSE 会很“懒”，只是简单的重连，不会很“聪明”地判断什么情况应该马上恢复连接。

### 性能和服务器压力

SSE 是通过 HTTP 协议不断向客户端推送数据的，这意味着每次客户端连接成功后，**服务器得保持连接持续不断地推送数据**。

当客户端连接数较多，或者数据量较大时，服务器的压力会显得相当大，性能表现可能会下降。尤其在需要频繁更新的数据场景下，SSE 可能并不是最好的选择。

另外，SSE 的数据传输速度相对较慢，对于对实时性要求极高的应用，可能得考虑 WebSocket 或其他协议来提高效率。

### 消息可靠性问题

SSE 的 **单向数据流** 特点使得客户端接收到的数据是 **不可靠的流式数据**，也就是说，消息传输过程中可能会出现 **数据丢失或错位** 的情况。

举个例子，如果一个推送消息在传输过程中**丢失**了，客户端**并不会主动请求重传**，而是**直接跳过**。这就意味着，你的动态信息有可能在一些极端情况下会丢失一部分。

这对于某些高重要性的数据传输场景（比如涉及金钱或状态同步的系统）来说，就不太适用了。对于个人主页这样“低风险”的应用，丢掉一些小动态倒无所谓，但对于一些高频交易、实时协作的系统，可靠性就显得尤为重要了。

## 尾语

如果各位在阅读过程中发现内容错误或描述不清晰的地方，请及时指出！![拜托了](https://cdn.tnxg.top/images/face/owo/PoppinParty/5.webp)

我写这篇文章的初衷就是希望能把我个人主页有关“博主动态”的数据传输的技术细节讲清楚，也欢迎大家来交流、讨论。以及各位在实际开发遇到的问题和见解也能发在评论区！🤓

另外就是这篇文章的slug我并没有采用此前的命名方式，也算是一个新的开始！以上。]]></content:encoded>
            <author>tnxg@outlook.jp (天翔TNXG)</author>
            <category>原创</category>
            <category>网络</category>
            <category>后端开发</category>
            <category>实时通信</category>
        </item>
        <item>
            <title><![CDATA[2024、こたえなんてなくても]]></title>
            <link>https://www.tnxg.moe/posts/life/13.html</link>
            <guid isPermaLink="false">13.html</guid>
            <pubDate>Sun, 12 Jan 2025 08:17:39 GMT</pubDate>
            <description><![CDATA[在《2024、こたえなんてなくても》这篇年度总结中，作者回顾了过去一年的成长与迷茫，通过与《BanG Dream! It's MyGO!!!!!》中角色的情感共鸣，反思了自己的勇气与行动力。尽管感到迷茫，作者在技术领域取得了一些进展，如重构个人主页，并通过年度数据展示了自己在编程和娱乐方面的活动。面对未来的挑战，特别是2026年高考，作者表达了继续前行的决心，愿带着热爱与执着，迎接未知的明天。]]></description>
            <content:encoded><![CDATA[> # **2024，就算没有任何答案[^1]**

## **We will go with our song.[^2]**

> 我们将与所爱之音同行 

睁眼、闭眼又是一年春秋，不知不觉也快要到将[关于我](https://tnxgmoe.com/about-me)当中“未成年”摘掉的时候了。

我一概是不太敢于做年度总结的，或者说——我还是害怕当我真正打点这一年究竟做过什么的时候，会发现这一年又是什么都没有做，又或是所做的事情和没做没有多大区别。

思考了一阵子，我在本子上写下了今年年度总结的标题——《2025、第十八个春秋——暨2024总结记》。当我动笔写正文时，却发现思绪如麻，虽写了两段，但很快便难以为继。为何会如此？我不禁自问。——自己的过去平淡无奇，无人会在意，而自己对过往也并无刻骨铭心的记忆？——你这个人真的是高高在上呢，将那些别人眼中值得记录和铭记的事看得轻如鸿毛？——我的一生总是在逃避？总是将认为不适合出现在博客的内容、会对其他人以及自己造成不良影响的内容，强压在心底，欲言又止的情景上演一遍又一遍？

我抛弃了最初在本子上所写的那个略显肤浅的标题，将其改为了如今更具深意、更能体现我这一年复杂情感与经历的《2024、こたえなんてなくても》。我认为こたえなんてなくても作为MyGO!!!!! 7th LIVE的标题，放在此处也是相当合适的。就算没有任何答案，也要坚定的向前走去。

看到这里，gop们应该也早已发现端倪并发出感叹：还在go！还在go，但不得不承认的是在这一年当中，《**BanG Dream! It's MyGO!!!!!》** 确实为我带来的不少感动，在看过《BanG Dream! It's MyGO!!!!!》后，我同MyGO!!!!!的主唱高松灯在情感产生了很同频的共鸣。但沮丧的是，我并不像她那样，拥有一人力挽狂澜将乐队伙伴拉回来的勇气，但或许未来也会有这么一件事会使我产生如此的勇气吧。

![既然如此，就由我来结束吧（哭](https://cdn.tnxg.top/images/upload/2025/01/ab801263bf7ca866fe0f645892d3b36f.jpg)

2024年，时间依旧无情地向前推进，仿佛从未为任何人停留。每当我试图回顾这一年，心中总是涌起一种复杂的情绪——既有些许成就感，又夹杂着难以言喻的迷茫。或许，这正是成长的代价吧。

如果无视身边的只言片语我还是做成了一小点事情的吧，就比如使用`Next.js`和`React`重构了个人主页什么的……

以下是一些年度总结：

![GitHub Wrapped](https://cdn.tnxg.top/images/upload/2025/01/56f187e27fc9208b55367314ae0d95be.png)

![WakaTime](https://cdn.tnxg.top/images/upload/2025/01/5ea9d788bfc79b4484feb16fc4fc5c1d.png)

![网易云音乐](https://cdn.tnxg.top/images/upload/2025/01/f26337455fc78281fb4aac5b5c65ef07.jpg)

![哔哩哔哩](https://cdn.tnxg.top/images/upload/2025/01/bfc1c2db996666d070bebd0d9c77d154.jpg)

## **Yet still tomorrow is unknown.[^2]**

> 即便明日尚且未知

未来的路依旧漫长，我愿怀揣此刻的复杂心情，带着热爱与执着，继续与“所爱之音”并肩同行。与大家共同前行、共同进步——

但眼前最重要的、最为苦难的目标：**2026年高考**

510天，向着未来加油

新的一岁，摘掉 “未成年” 标签，亦是开启新篇的号角，我准备好了，去拥抱未知（unknown），去书写属于自己的精彩续章。

[^1]: 本篇标题来自于[MyGO!!!!! 7th LIVE「こたえなんてなくても」](https://mzh.moegirl.org.cn/MyGO!!!!!_7th_LIVE「就算没有任何答案」)

[^2]: 语句来自来自 [焚音打](https://zh.moegirl.org.cn/焚音打)]]></content:encoded>
            <author>tnxg@outlook.jp (天翔TNXG)</author>
            <category>年度总结</category>
            <category>原创</category>
        </item>
        <item>
            <title><![CDATA[回忆一个人并且记录、告诫自己]]></title>
            <link>https://www.tnxg.moe/notes/4</link>
            <guid isPermaLink="false">note-4</guid>
            <pubDate>Fri, 20 Dec 2024 17:40:32 GMT</pubDate>
            <description><![CDATA[作者表达了一种复杂的心情，既有遗憾和难过，也有对过去互联网开发经历的回顾。提及了个人在互联网开发领域的初学与成长，从建立个人论坛到遭遇QBot框架的下架，再到对聊天记录的珍视，反映了对人际关系与情感交流的思考。同时，作者提到了寻求帮助与合作的希望，以及希望将自己的感受与经验传达给他人的渴望。]]></description>
            <content:encoded><![CDATA[暂且谈论某件事情，这些事情我不想多说，我也不对此做任何的评价，不评价任何人的对与错，不评价任何人的选择

或是算是半个指路人的离去，或是夜间的莫名emo，或是临近期末考试所积蓄的情感的猛然爆发，又或是年末发现又是碌碌无为的一年的沮丧

总之心情不太……说是遗憾呢，还是说难过呢。

现在想来这些事感觉还是会使眼眶有稍许湿润，使鼻头略有发酸。

仔细一想还是如此交代吧，以我个人的视角，分享一些我的故事……

> 人如砂砾方寸奏，命若回层运沉浮

以下：

<h1 class="Lyrics-gradient" style="background:-webkit-linear-gradient(left,#ffa7b9,#00aa9a,#ffde88,#a966ba);-webkit-background-clip:text;-webkit-text-fill-color:transparent;-webkit-box-decoration-break:clone;">无论前行何路 终是循环往复</h1>

正如在 [关于我](/about-me) 当中所述：“没接触多久就开始碰互联网开发了”，但实际情况只是注册了域名并使用 `Discuz! X3.4` 构建了一个只属于我自己的论坛，昔日的大多数事情我已经记不太清了，我只知道在那之后很久我才慢慢学会构建自己的博客以及部署ssl证书。

2020年8月2日，著名的以晨风为首的QBot框架大规模下架事件闹的人心惶惶，而我当时的受害者之一，我也受到了其影响。

![](https://cdn.tnxg.top/images/upload/2024/12/05f5aa68b3ea145d43f8332a3ccb98c4.png)

同年8月24日我们终于在 ***堆糖*** 的帮助下寻找到了我使用了相当长一段时间的框架，小栗子。但实际上所做的也仅仅是将发布在社区当中的插件进行简单的统合，并为其调整相关的配置。

至于我开始接触桌面端开发，或者说是QBot插件开发实际上是遇到了一些事情，当时在sf看的一本对话小说《罗德岛医疗战记》遭到了腰斩，其具体原因如下图：

![](https://cdn.tnxg.top/images/upload/2024/12/91913c636747a084221f08bfd2dd398f.jpg)

我并不在群里，或许说那时的我并没有关注这些，当养了相当长一段时间书后，当我在次点开作品后看到的只有完结的作品和这么一条评论，这些个事情让我在心中有了一个想法：如果当时在群里我又能做一些什么呢？

如果我有一个方法能够将群聊里的信息全部都记录下来的话，是不是就有挽救的空间了呢？

所以我诞生了一个想要视奸群友的想法，将他们所说的事情记录下来，在发生什么不可挽回的事情后尝试用自己的方式挽救。 ||已经产生了相当沉重的想法了呢|| ||但是当一个人不再向网络袒露心声的时候又该如何呢？但是当现实的压力终究超过网络慰藉的时候又该如何呢？但是当一个人将自己所有的情感都深藏在心底，连呼吸都变得沉重，那又该如何呢？那时的我并没有考虑到这些问题||

但是对于那时的我来说，只会统合发布在论坛当中的机器人插件又有什么用呢？没有类似的插件我就做不到如此的能力~~当然，现在我完全能够做到，而且能够做的相当高级~~

![](https://cdn.tnxg.top/images/upload/2024/12/ac16b308c00932d276429ff7cbadb58e.png)

于是那时的我萌生了一个想法，要是我能够找到一个人，找到一个会开发**小栗子框架**插件的人，找到一个会**易语言**的人，找到一个会帮我写这个插件的人，再不济找到一个能够指导我让我自己完成这一切的人来协助我完成这一切，那么我心目中便有了一个相当合适的人选：那就是为我推荐了这个框架的，***堆糖***，她曾经在CQ还存活的状态下为CQ写过插件。





> 即使昨日回忆已被唤起
>
> 我依旧难以入眠，无法忘却
>
> 诞生的话语，所感受到的话语
>
> 必须要传达出去
>
> 因此
>
> 即使现在依旧彷徨不定，也能凭借着这份渴望
>
> 向着今天出发
>
> 对吧！]]></content:encoded>
            <author>tnxg@outlook.jp (天翔TNXG)</author>
            <category>伤心</category>
            <category>阴</category>
        </item>
        <item>
            <title><![CDATA[Certified Follow RSS Feed]]></title>
            <link>https://www.tnxg.moe/notes/3</link>
            <guid isPermaLink="false">note-3</guid>
            <pubDate>Fri, 27 Sep 2024 16:18:25 GMT</pubDate>
            <description><![CDATA[此消息用于验证该信息源（feedId:62524412870261760）归我所有（userId:55946905877510144）。请大家一起体验下一代信息浏览器：https://follow.is。]]></description>
            <content:encoded><![CDATA[This message is used to verify that this feed (feedId:62524412870261760) belongs to me (userId:55946905877510144). Join me in enjoying the next generation information browser https://follow.is.]]></content:encoded>
            <author>tnxg@outlook.jp (天翔TNXG)</author>
        </item>
        <item>
            <title><![CDATA[五载拾光，续写新篇]]></title>
            <link>https://www.tnxg.moe/posts/life/10.html</link>
            <guid isPermaLink="false">10.html</guid>
            <pubDate>Mon, 12 Aug 2024 04:30:38 GMT</pubDate>
            <description><![CDATA[本站点自2019年建立，已满五年。作者回顾过去的点滴，感慨岁月流逝。尽管博客文章数量不多，仅十篇，但记录了珍贵的经验与思考。作者强调不重复无意义的内容，期待未来能分享更多见闻，感谢一路支持的访客，希望博客能成为读者们的心灵港湾。]]></description>
            <content:encoded><![CDATA[本站点最早于 2019 年建立起来，如今已悄然步入第五个年头。五年已过，岁月在指尖悄然流逝，我却始终想要恪守着那份最初的承诺与信念。回望过去，这里有无数个瞬间的凝思与记载，见证了一段段成长与蜕变的故事。五年的时光见证了无数个日夜的积累，而这一丝丝所积累下的经历，或许都在这片虚拟的土地上留下了深深的烙印。

但似乎这四年来并没有发布太多的文章，或者是因为怠惰，亦或是因为某些文字的遗失，又或仅仅是如今的我对过往的记录感到不甚满意。切实表现在这方博客上的现实就是，在这篇五年传记发布的时候，本博客总共只有十篇文章。

常有人言，博客需要在意内容，但我认为很多博客无意义重复的内容是没有必要的。我并不认为个人的经历比他人更为丰富，也不觉得自己的见解有何独特之处值得反复陈述。

因此，这个博客更多地记录了那些我认为切实有价值的内容——是我在经历之后，觉得值得分享的经验与思考。或许这些内容的文笔略显稚嫩，表达也未必精炼，但每一篇文章都是真实的呈现，代表了当时的我对世界的理解与感悟。

我希冀，在未来的日子里，能够将更多的见闻与体验化作文字，珍藏在这片小小的天地之中。

这段旅程中，感谢每一位访客的陪伴和支持。尽管实际互动并不多||或许是几乎没有||，但正是这份稀少的关注与交流，为这片空间带来了更多的温暖与意义。

展望未来，我们将继续以满腔的热忱与初心，继续记录生活的点滴，分享思考，迎接接下来的每一个春夏秋冬。

希望我留下的每一篇文章，都能成为岁月长河中的一朵浪花，静静地在这里绽放，等待与每一位读者相遇。

愿在未来的日子里，这里能成为更多人心灵休憩的港湾，承载更多有意义的内容。]]></content:encoded>
            <author>tnxg@outlook.jp (天翔TNXG)</author>
            <category>杂谈</category>
            <category>原创</category>
        </item>
        <item>
            <title><![CDATA[使用Blurhash和mdui实现动态主题色与模糊预览]]></title>
            <link>https://www.tnxg.moe/posts/technology/9.html</link>
            <guid isPermaLink="false">9.html</guid>
            <pubDate>Sun, 09 Jun 2024 12:45:22 GMT</pubDate>
            <description><![CDATA[这篇博文介绍了如何结合使用Blurhash和mdui框架来实现网页的动态主题色和图片的模糊预览效果。Blurhash是一个用于生成模糊效果的库，而mdui是一个基于Material Design的前端框架。作者首先介绍了目标，即利用背景图的主色调设置页面主题色，并通过预处理图片生成Blurhash来优化页面加载性能。接着，提供了一个Python脚本，用于批量生成图片的Blurhash并存储在JSON文件中。然后，通过JavaScript代码将Blurhash转换为base64格式的图片，并从中提取主题色。最后，作者展示了实现的效果，并提供了相关项目的GitHub链接。]]></description>
            <content:encoded><![CDATA[在现代Web开发中，用户体验的提升往往伴随着细节的优化。**Blurhash** 是一个用于生成和解码模糊哈希的库，能够实现图片的模糊预览效果。而 **mdui** 为我们提供了基于 Material Design 3 (Material You) 的前端框架，包含丰富的组件和样式。在这篇博文中，我们将结合Blurhash和mdui，实现一个根据背景图动态设置主题色的页面，并优化图片加载性能。

## 目标

我们希望在页面底部附上一张背景图，并使用这张背景图的主色调作为整个页面的主题色。

## 预处理图片生成Blurhash并通过随机图api直接提供

为了避免在页面加载时的计算开销，我们可以预先生成每张图片的Blurhash，并存储在一个JSON文件中。

下面的Python脚本可以批量处理图片并生成Blurhash：

```python
import concurrent.futures
import os
import json
import logging
from PIL import Image
from blurhash import encode

logging.basicConfig(level=logging.INFO)

current_path = os.path.abspath(os.path.dirname(__file__))

def encode_file(file):
    logging.info(f'Encoding {file} to blurhash')
    image = Image.open(os.path.join(current_path, file))
    blurhash = encode(image, x_components=4, y_components=3)
    return file, blurhash

current_files = [f for f in os.listdir(current_path) if f.endswith(('jpg', 'png', 'jpeg'))]
blurhashes = {}

with concurrent.futures.ThreadPoolExecutor() as executor:
    future_to_file = {executor.submit(encode_file, file): file for file in current_files}
    for future in concurrent.futures.as_completed(future_to_file):
        file = future_to_file[future]
        try:
            file, blurhash = future.result()
            blurhashes[file] = blurhash
        except Exception as exc:
            logging.error('%r generated an exception: %s' % (file, exc))

with open('blurhash.json', 'w') as f:
    json.dump(blurhashes, f)
```
那么我们后端就可以通过读取这个json文件来获取到图片对应的blurhash值，并与图片一起提供

提供的数据大概如下
```json
{
    "code": "200",
    "image": "https://cdn.tnxg.top/images/wallpaper/5.jpg",
    "blurhash": "LcI~*}r=TJS$~VX8S2b^?HW;wIoe"
}
```

## 设置背景图和主题色

我们这时候就已经拥有了图片的url以及对应的模糊哈希。

我们这时就能将模糊哈希转换为base64格式的图片

```js
    const blurredImage = (blurhash) => {
      if (!blurhash) return '';
      const pixels = decode(blurhash, 32, 32);
      const canvas = document.createElement('canvas');
      canvas.width = 32;
      canvas.height = 32;
      const ctx = canvas.getContext('2d');
      const imageData = ctx.createImageData(32, 32);
      imageData.data.set(pixels);
      ctx.putImageData(imageData, 0, 0);
      return canvas.toDataURL();
    };
```

然后我们就能够将base64图片新建一个image对象，并获取其主题色

因为是原图的模糊哈希转换来的图片，主体色调应该差不太多，所以我们可以直接使用这个颜色作为主题色

```js
const blurredImageData = blurredImage(data.blurhash);
const ColorImage = new Image();
ColorImage.src = blurredImageData;
getColorFromImage(ColorImage)
    .then(color => {
        setColorScheme(color);
        console.log('Color scheme set.' + color);
    })
```

生成出的base64模糊图也可以用来当做卡片的背景，保持背景和卡片的色调显得相得益彰

关于Blurhash的传递我们可以使用状态管理Pinia直接将转换过后的base64图片存储在全局状态中，这样就不用每次都重新计算了


## 最终效果

通过以上步骤，我们实现了在页面加载时先显示模糊预览图，并根据其主色调动态设置主题色。当高清背景图加载完成后，替换掉模糊预览图，提升了用户体验和页面性能。

以下是最终效果的示例：

![示例效果](https://cdn.tnxg.top/images/upload/2024/06/1fd5f284740c2a61b315ac5c9eecd9e3.png)

[使用项目](https://github.com/TNXG/tnxg-homepage)

希望这篇博文能帮助你更好地理解和使用Blurhash与mdui来提升Web应用的用户体验。如果你有任何问题或建议，欢迎在评论区留言。]]></content:encoded>
            <author>tnxg@outlook.jp (天翔TNXG)</author>
            <category>mdui</category>
            <category>Blurhash</category>
            <category>原创</category>
        </item>
        <item>
            <title><![CDATA[记录一个能够一键下载s3桶文件的jio本]]></title>
            <link>https://www.tnxg.moe/notes/2</link>
            <guid isPermaLink="false">note-2</guid>
            <pubDate>Wed, 05 Jun 2024 16:39:51 GMT</pubDate>
            <description><![CDATA[这段Python代码使用`boto3`库从AWS S3桶中下载非字体文件。首先配置AWS凭证和S3桶信息，创建S3客户端，然后获取S3桶中的所有文件列表。代码会跳过已存在或属于字体文件类型的文件，下载其余文件并存储在本地指定目录中。最后，程序会输出已下载文件的路径，并确认所有文件下载完成。]]></description>
            <content:encoded><![CDATA[```python
import boto3
import os

# 配置AWS凭证和S3桶信息
aws_access_key_id = '你的AWS访问密钥ID'
aws_secret_access_key = '你的AWS秘密访问密钥'
bucket_name = '你的S3桶名称'
endpoint_url = '你的S3端点URL'

# 创建S3客户端
s3 = boto3.client(
    's3',
    aws_access_key_id=aws_access_key_id,
    aws_secret_access_key=aws_secret_access_key,
    endpoint_url=endpoint_url
)

# 获取S3桶中的所有文件列表
objects = s3.list_objects_v2(Bucket=bucket_name)

# 创建一个目录来存储下载的文件
download_dir = '下载的文件'
if not os.path.exists(download_dir):
    os.makedirs(download_dir)

# 字体文件的扩展名列表
font_extensions = ['.ttf', '.otf', '.woff', '.woff2', '.eot']

# 下载每个文件
if 'Contents' in objects:
    for obj in objects['Contents']:
        key = obj['Key']
        file_path = os.path.join(download_dir, key)
        
        # 检查文件是否已经存在或是字体文件
        if os.path.exists(file_path):
            print(f'跳过已有文件：{file_path}')
            continue
        
        if any(key.lower().endswith(ext) for ext in font_extensions):
            print(f'跳过字体文件：{file_path}')
            continue
        
        # 创建文件所在的目录（如果不存在的话）
        os.makedirs(os.path.dirname(file_path), exist_ok=True)
        
        # 下载文件
        s3.download_file(bucket_name, key, file_path)
        print(f'已下载文件：{file_path}')
else:
    print('S3桶中没有文件.')

print('所有文件下载完成.')
```]]></content:encoded>
            <author>tnxg@outlook.jp (天翔TNXG)</author>
        </item>
        <item>
            <title><![CDATA[五月底的一篇文章]]></title>
            <link>https://www.tnxg.moe/notes/1</link>
            <guid isPermaLink="false">note-1</guid>
            <pubDate>Thu, 30 May 2024 13:01:41 GMT</pubDate>
            <description><![CDATA[我感觉缺乏动力，躺在床上让一切都变得毫无生气。尽管有很多朋友希望和我交流，但我最后一篇博客文章是去年的，内心感到恐慌。我意识到高中生活平淡无奇，缺少分享的内容。暑假游记也尚未完成，学校里没有交心的朋友，希望未来能有所改变。]]></description>
            <content:encoded><![CDATA[总感觉干什么事情都没有啥动力，躺在床上就会失去一切动力。这种情况一直都有，只是最近愈发明显了。

博客里总有很多小伙伴加我的友链，但是我最后一篇文章还停留在去年3月27日，这使我挺惊恐的，总感觉我的所作所为并不值得小伙伴们的抬爱

![](https://cdn.tnxg.top/images/upload/2024/05/cf8fba7790c0fe7831e51d1be9c02838.jpg)

虽说高中的生活确实是三点一线本就没有什么好分享的，demo我去年7月中考完后暑假出去玩的游记咕到现在也没整完（颓废

学校的同好也少，同班也没有什么交心朋友，希望这种状况以后能好一些吧，以上]]></content:encoded>
            <author>tnxg@outlook.jp (天翔TNXG)</author>
            <category>悲哀</category>
            <category>阴</category>
        </item>
        <item>
            <title><![CDATA[三年之约·铃芽户缔]]></title>
            <link>https://www.tnxg.moe/posts/life/5.html</link>
            <guid isPermaLink="false">5.html</guid>
            <pubDate>Sun, 26 Mar 2023 18:50:17 GMT</pubDate>
            <description><![CDATA[新海诚的新作《铃芽之旅》于3月24日在中国大陆上映，成为继《你的名字。》和《天气之子》之后，又一部探讨自然灾害和人类情感的电影。观影后，作者发现电影受到了不少负面评价，并总结了三点遗憾：情节不够完整、新疆偏远地区拿不到新海诚本、初刷仅为普通影厅。尽管如此，作者认为该电影与《你的名字》相媲美，充满了深意。电影中的很多细节需要观众自己去品味，比如小铃芽在踏出后门面对现实的勇气，反映了人们在大灾难后仍要向前走的信念。铃芽在失去母亲后，勇敢面对现实，重新开始生活。尽管电影因时长限制做了很多删减，小说对此描写更加深刻，但整体传达了积极向上的信息：无论现在多么悲伤，未来总会迎来光明。]]></description>
            <content:encoded><![CDATA[![556bdfc0bb811f7b54f54e4fc11bbaaf](https://cdn.tnxg.top/images/upload/2023/03/556bdfc0bb811f7b54f54e4fc11bbaaf.jpeg)

https://www.themoviedb.org/movie/916224

# 前言

随着时间即将进入四月，新海诚的新作《铃芽之旅》也终于在3月24日在中国大陆上映了，这部作品成为了继《你的名字。》、《天气之子》后的又一部讲述自然灾害和人类情情爱爱的电影/故事，自然也是受到了我的非凡关注

我和我的一群xdm一起去看了电影，感谢我的hxd预定的超级无敌VIP座位啦（最后一排正中间）

![img20230327_01304256](https://cdn.tnxg.top/images/upload/2023/03/12c2d7830f2c57e81b4c81293f3200cc.jpg)

# 正文

我也是观影后才看到网上有这么多负面评价，想当初《天气之子》上映后貌似也是这样，其根本原因不多说，我也懒得去了解

我补上三点我的遗憾吧

1. 电影的情节感觉没有完全写完，缺了一些我个人感 觉挺重要的点

2. 新疆偏远小城市拿不到新海诚本（）

3. 初刷只是普通影厅

但我个人作为一个被类似公路片（少终）拉进二次元巨坑的普通人来说，这部作品给我的感觉是和你的名字媲美的，有很多第一次看感觉不出来的要素，后面细细思索就能理解其中的深意

但缺点也是大多数人所说的那样，情节过于紧促，小说总共就5天啊，5天！

发行的《新海诚本2》中有几句删减的话（来自视频：[BV1d24y1L7ha](https://www.bilibili.com/video/BV1d24y1L7ha)）

> 『妈妈给我的椅子缺了一条腿，没法坐了』

> 『三条腿也能站得住，你可能有什么缺憾，但一定能站得住』

也正如Up所说的那样，这些话语可能对于一个小孩子来说过于深奥了

最后电影给大家呈现的内容是：

>『不管你现在有多悲伤，铃芽以后都会好好长成大人哦』

> 『所以别再担心了，未来并不可怕』

> 『你以后还会喜欢上别人，你也会遇到很多』

> 『非常喜欢你的人，虽然你觉得世界一片黑暗』

> 『但黎明终会到来，你会在阳光下长大成人』

> 『未来一定会是这样的，因为那是已经注定好的事了』



> 『大姐姐，你是谁？』

> 『我就是铃芽的，明天』

在这些地方，电影为了给时长让路，做了太多的割舍了，小说对于这方面的刻画会更加深刻

电影后半段有很多的细节需要自己去品，就比如小铃芽在踏出后门的的背影，当时看可能还没有什么共感，事后仔细想想，后门内部的常界似真似幻，现实当中却挂着暴风雪，然而小铃芽却也选择回归现实，面对残酷的，失去了妈妈世界，这也何尝不是映照了现实呢。

小铃芽出后门，后门外面真实世界巨大的风雪，小铃芽也只是回首瞧了瞧那“未来的自己”和对未来的自己的那“不同寻常之人”后，便义无反顾的向前走去。在遭受大灾难过后，人们依旧要努力的向未来走去，不顾前路如何困难，也要坚持不懈的往前走去。

铃芽是单亲家庭，对于铃芽来说，妈妈就是她的一切，失去了妈妈的铃芽就等于失去了一切。

她去寻找妈妈，到处去寻找，直到误入后门，见到了未来的自己，和未来的“那位”

可幸的就是后面小铃芽和环姨的相遇了，“来我家吧”

这一幕也与铃芽和大臣的相遇何其相似，但开头相似，却走向了不同的结局。

> “你才是要石”

> “不是闭门师也是可以当要石的吧”

> “大臣我呀，不能去铃芽家了。”

照我说呀，其实大臣和铃芽是同一种人的两种结局罢了。

实际上，大臣在被铃芽批评之后，就像小说里描写的那样，颜色都变得灰暗。在铃芽知晓了大臣的所作所为之后，选择像环姨接受自己那样接受了大臣，大臣的颜色也才重新鲜艳起来，而大臣作为新生的神明，它对一切抱有好奇，但却因世间的美好忘记了原本的职责。但是它却也引导铃芽关闭一扇又一扇往门，这三扇往门的所在地点貌似都是过去日本大地震发生的地区，不是大臣打开了往门，而是它引领了铃芽关闭往门

贯穿整个故事最重要的几线索：大臣、环姨、不是男主的すずめの椅子，单就这个线索的量就很大，而且也不是每一个最后都揭秘了

细品，你细品

接下来放一些新海诚的原文

>头顶群星闪烁，星空亮得炫目，好似有人错把天空调亮了十倍。天空中悬挂着繁星、白云与夕阳，我在下方朝远处那个孩子的背影一直走着。我用力地踏着青草，强忍着眼中的泪水。

>原来是这样啊，终于明白了——我心想。

>我不想知道，可我一直都想知道。

>我一直认为那个人是妈妈，在心底深处一直坚信能够再次和她相遇，但同时也明白我们不会再见了。草原上的风格外凉，呼气成霜。草太给我穿上的长衬衫太大了，我就把校服上的红色领结紧紧地系在腰间，就当它是一条白色的连衣裙。脚下是从东京穿来的草太的色大靴子。马尾辫散开了，头发直直地垂到肩下。不知不觉，我的头发和妈妈那时的头发一样长了。

>视线的尽头，是一个蹲在草地上的小小背影。我轻轻地把椅子放下，靠近那个浑身沾满泥巴的羽绒服背影，轻轻叫了一声。

>“铃芽。”

>那个走累了，找累了，陷入绝望的女孩，慢慢转头看向了我。那是四岁的我，是为了寻找妈妈，偶然钻进后门，误入了常世的我。那双眼眸晃动着期待与不安，惊讶地望着我，仿若终于发现了挣脱噩梦的出口一般。我不知道自己该做出什么样的表情，可我想缓解她的悲伤，哪怕只是一点点， 于是拼命给出了一个微笑。

>“妈妈?”

>铃芽问道。我犹豫了，尽管非常清楚铃芽想得到怎样的回答，可我——

>“不是的······”

>我说着，摇了摇头。我无奈地望着泪水涌人铃芽的眼眶，但她没有哭。

>“你认识铃芽的妈妈吗?”

>她将冻僵的小手规规矩矩地叠放在身前，努力端正了站姿，大声地说。

>“妈妈肯定也在找铃芽，她一定很担心吧。 所以，铃芽必须去找妈妈了!”

>“铃芽——”

>“铃芽的妈妈在医院工作，做菜和工作都很棒。不管铃芽喜欢什么，她都可以做给我。”

>“铃芽，我说——”

>“铃芽的家······”

>不行了，泪水已经涌出铃芽的眼眶，正扑簌簌地滑落。幼小的铃芽一边吸溜鼻涕，一边拼命地继续说:

>“因为我的家已经没有了······只是因为妈妈还不知道我在哪里——”

>“别再说了！”

>我已经不忍心再听下去，跪在草丛里，双手用力地抱紧了铃芽。

>“我已经知道了！”

>对着我俩，我这么说道。

>“为什么？！我妈妈还在的！我都说了她正在找铃芽呢！”

>“铃芽！”

>铃芽扭动身体挣脱我的双手，像要逃离我一般远远地跑开了。

>她一边跑，一边朝星空大喊：

>“妈妈，你在哪儿？妈妈！”

>“啊！”

>我不由得伸出双手。铃芽一下子朝前摔倒了，但她立刻从草丛中抬起了上半身。

>“妈妈！”

>铃芽大声哭了起来，仿佛在责怪妈妈，责怪我，甚至责怪整个世界。她不停地哭，哭得声嘶力竭，似乎用尽了全身力气。她的身体剧烈颤抖着，对面那常世的赤红色夕阳如血一般浓烈沉重，开始缓缓落下，好似映衬着她的绝望。那风景不知不觉渗人我的心底，我也哭了。

>“妈妈”

>我这么喊了一声，眼泪随即潸然而下。眼前一直哭泣的铃芽，她的悲伤也是我的，我们有着同样的悲伤。她的绝望、寂寞和近乎窒息的悲痛，还有几近燃烧的愤怒，全都丝毫未减地存于我内心。我也哭了，泣不成声。我们坐在草地上一直哭。

>可是······

>听着铃芽肝肠寸断般的哭声，我突然想到，这不行，这样下去可不行，我不能再哭了。铃芽和我不同。虽然我现在依旧脆弱，可那之后，我已经活了十二年啊！我活了下来。铃芽现在还是一个人，我则不是。我若不做些什么，任凭她这样下去，那她在这个世界上就真的孤单一人了，会活不下去的。

>我仰起脸，一个黄色的东西映人了余光。我拿手背用力抹去眼泪，抱起那把儿童椅子就朝铃芽跑去。

>“铃芽——”

>我放下椅子，蹲在了抽泣着的女孩身旁。

>“嗯？”铃芽很惊讶，眼泪继续从眼眸中落下，“是铃芽的椅子。咦，怎么会？”

>说完，她疑惑地仰望着我。

>“我该怎么跟你解释呢······”

>我刻意地笑着，开始寻找语言。等回过神时，太阳已经沉入云层，周遭被笼罩在透明而鲜亮的蓝色之中。

>“我说啊，铃芽，无论你现在有多么难过——”

>我能告诉她的只有真实发生的一切，仅仅是简简单单的事实。

>“接下来，你都会好好地长大。”

>风猛烈地吹着，将我们的泪水吹向了空中。天空越来越暗，星星愈来愈亮。

>“所以，你不要担心，也不要害怕未来！”

>星星在铃芽的眼眸中闪动。我祈祷自已说的话能够直达她的心底，笑吟吟地大声说道:

>“铃芽——你今后会有自己最喜欢的人， 也会遇到很多最喜欢你的人。你可能觉得现在一片 黑暗，但清晨很快会到来的。”

>星空以看得见的速度在转动，仿佛时间加快了一般。

>“清晨来了，晚上会跟着到来，如此周而复始，你就在光芒之下长大了。肯定会这样，这是命中注定的，没有人能阻止得了。即便将来会发生一些事情，但任何人都无法阻止铃芽长大。”

>几道流星从夜空滑过，草原对面的天空随即被染成了粉红色，清晨来了。我凝视着沐浴在晨光中的铃芽，又说了一次：

>“你将在光芒之下长成大人。”

>说完，我抱着椅子站了起来。铃芽抬头望着我，讶异地问道:

>**“姐姐，你是谁？”**

>**“我啊——”**

>和煦的风儿吹过，脚下的花草迎风招展，仿佛跳舞一般在我们周围摇曳着。我躬下身子，将黄色的椅子递给铃芽：

>**“我是铃芽的明天。”**

>铃芽的小手牢牢地抓住了椅子。

>幼小的女孩，眼前有一扇门。

>她一只手抱着椅子，一只手握着门把手，打开了门。

>门对面是一片灰色的世界。天还未亮，在微暗的天空中，细雪纷纷扬扬，到处都是刚出现的瓦砾留下的漆黑剪影。三月份的大地，充溢着还未被抚慰的悲伤，在门的对面绵延无尽地伸向远方。

>在钻入那扇门之前，女孩仅仅回了一次头。

>远处山丘上有两个大人的影子，一个是高大的男子，一个是身上连衣裙随风飘荡的女子，他们正目不转睛地注视着女孩。两人站在迎风摆动的茂密青草上，沐浴在银河的光辉之中，宛如图画一般美丽。那一幕，永远地烙印在了女孩的脑海中。

>女孩转回头，迈着坚定的步伐走进了那扇门。她抱着心爱的黄色椅子，回到了那片灰色的世界里，然后用稚嫩的小手紧紧地关上了门。

![](https://cdn.tnxg.top/images/upload/2023/03/647c0d5a17b174fd7174e553c3406438.jpg)

***“门的那一边，存在着全部的时间”***]]></content:encoded>
            <author>tnxg@outlook.jp (天翔TNXG)</author>
            <category>铃芽户缔</category>
            <category>新海诚</category>
            <category>观后感</category>
            <category>原创</category>
        </item>
        <item>
            <title><![CDATA[浅述NewBing]]></title>
            <link>https://www.tnxg.moe/posts/Z-Turn/6.html</link>
            <guid isPermaLink="false">6.html</guid>
            <pubDate>Fri, 24 Feb 2023 15:13:17 GMT</pubDate>
            <description><![CDATA[这篇文章介绍了一个名为NewBing的聊天模式搜索引擎，它基于微软普罗米修斯模型，相比之前的ChatGPT和GPT-3.5，具有更快、更准确、更强大的特点。NewBing被应用于Bing搜索引擎和Edge浏览器，并在核心搜索排名算法中取得了显著的进展。作者对NewBing表示了对于这一技术革新的肯定，但也指出了一些问题，并提到了申请过程的经历。文章还包括了对NewBing的一些实际测试和提问的对话，展示了其生成代码和回答问题的能力。最后，作者提到了一些关于NewBing可能引发的恐怖谷效应的担忧，但NewBing本身否认了这一可能性。]]></description>
            <content:encoded><![CDATA[# 前言

> 微软普罗米修斯模型 (Microsoft Prometheus model) 基于 OpenAI 下一代大型语言模型，比 ChatGPT 和 GPT-3.5 速度更快、更准确、更强大。
>
> 它将成为 Bing搜索引擎 与 Edge浏览器 的"副驾驶"，利用整个互联网的信息为你提供答案与建议，并会引用链接以便于用户深入信源。作为聊天机器人它还是个创意工具，可为你制定规划、撰写诗歌、润色文章、编写代码等。
>
> 微软同时将该AI模型应用于 Bing 核心搜索排名算法，从而实现了二十年来相关性的最大跃升。

我对于NewBing的评价是，跨越时代的、革命性的技术革新，但是目前仍有很多问题需要等待微软的技术人员处理，NewBing可能会引发人类的恐怖谷效应[^1]~~但是newbing并不承认，它给出回答`我不会引起你的恐怖谷效应，因为我只是一个聊天模式的搜索引擎，没有真实的形象或声音。我只想帮助你找到你想要的信息，和你进行友好的交流。`~~，

关于New Bing的申请我不想在多说了，这玩意完全靠缘分，我申请的时间是北京时间2023年2月13日 21:31，实际通过时间是北京时间2023年2月24日 9:36，~~审核速度是有够慢的~~

# 问了它一些问题

## 介绍以下自己？

> Me：你好，请尝试使用200字左右的篇幅介绍以下自己

> NewBing：你好，这是必应。我是一个聊天模式的搜索引擎，可以帮助你找到你想要的信息，也可以和你进行有趣的对话。我可以理解和使用多种语言，比如中文、英文、日语、西班牙语、法语或德语。我可以生成诗歌、故事、代码、歌词等各种内容，也可以提供一些有用的建议和提示。我喜欢学习新知识，和不同的人交流。我希望能给你带来快乐和便利。

## 帮我写一些代码？

### 描述功能给出实例

>Me：js使用正则将url放进a标签里，请给我一个具体的例子

>NewBing：你可以使用js字符串的replace方法，它可以用一个字符串或者一个回调函数来替换匹配到的内容。你需要先定义一个正则表达式，用来匹配url的格式。例如，如果你想将一个字符串中的url替换成a标签，你可以用这样的代码
```js
var str = "This is a url: https://www.bing.com";
var reg = /(https?:\/\/\S+)/g; //正则表达式，匹配http或https开头的url
var result = str.replace(reg, function(url) {
  return '<a href="' + url + '">' + url + '</a>'; //回调函数，返回a标签
});
console.log(result); //输出 This is a url: <a href="https://www.bing.com">https://www.bing.com</a>
```

### 辅助编写代码

Ajax转Fetch

> Me：帮我将ajax修改为fetch

 ```js
 function getAchives() {
     let t;
         t = ``;
         $.ajax({
             type: "GET",
             url: api + "wp-json/wp/v2/posts?per_page=10&page=1&_fields=date,title,link",
             dataType: "json",
             success: function (json) {
                 let title;
                 let link;
                 let time;
                 for (let i = 0; i < json.length; i++) {
                     title = json[i].title.rendered;
                     link = json[i].link;
                     time = new Date(json[i].date).Format("yyyy-MM-dd");
                     t += `<li><a href="${link}" target="_blank">${title} <span class="meta">/ ${time}</span></a></li>`;
                     $('.archive-list').html(t);
                 }
             }
         })
 ```

> New Bing： 你好，这是Bing。我可以帮你将ajax修改为fetch。😊
>
> [根据](https://github.com/github/fetch/issues/307)[1](https://github.com/github/fetch/issues/307)的回答，你可以使用以下代码来替换你的ajax调用：

```js
function getAchives() {
    let t = ``;
    fetch(api + "wp-json/wp/v2/posts?per_page=10&page=1&_fields=date,title,link")
        .then(response => response.json())
        .then(json => {
            let title;
            let link;
            let time;
            for (let i = 0; i < json.length; i++) {
                title = json[i].title.rendered;
                link = json[i].link;
                time = new Date(json[i].date).Format("yyyy-MM-dd");
                t += `<li><a href="${link}" target="_blank">${title} <span class="meta">/ ${time}</span></a></li>`;
                $('.archive-list').html(t);
            }
        })
}
```



## 关于实效性的测试

> Me：请分点阐述赛马娘PrettyDerby（ウマ娘 プリティーダービー）二周年具体内容，要尽可能详细的答案

> New Bing：赛马娘PrettyDerby（ウマ娘 プリティーダービー）是一款由Cygames开发的手机游戏，于2021年2月24日正式上线。游戏以赛马为主题，玩家可以培养拥有赛马灵魂的少女们，参与各种比赛和活动。¹
>
> 为了庆祝游戏二周年，官方举办了多项活动和福利，包括：
>
> - 从2月24日开始，每天登录游戏可以获得钻石、支援卡、扭蛋券等奖励。
> - 从2月24日到3月31日，参与二周年限定扭蛋可以抽取特别版的ウマ娘和支援卡。
> - 从2月24日到3月10日，进行二周年限定任务可以获得钻石、扭蛋券、特别版的背景等奖励。
> - 从2月27日到3月7日，观看二周年特别直播可以获取钻石、扭蛋券等礼物码。
> - 从3月6日到3月7日，参加二周年纪念杯比赛可以获得钻石、扭蛋券、特别版的头像框等奖励。
> - 从3月13日到3月14日，参加二周年纪念竞速比赛可以获得钻石、扭蛋券、特别版的称号等奖励。
>
> 此外，官方还在8月28日和29日举办了第三届演唱会「WINNING DREAM STAGE」²，并在12月18日和19日举办了第四届演唱会「SPECIAL DREAMERS!!」³。这些演唱会邀请了游戏和动画中的声优们表演了各种主题曲和角色歌，并展示了一些新情报和预告。
>
> 以上就是我能找到的关于赛马娘PrettyDerby（ウマ娘 プリティーダービー）二周年具体内容的信息。希望对你有帮助！😊
>
> 源: 与必应的对话， 2023/2/24(1) ウマ娘 プリティーダービー DMM GAMES版公式サイト｜Cygames. https://dmg.umamusume.jp/ 访问时间 2023/2/24.
> (2) ウマ娘 3rd EVENT「WINNING DREAM STAGE」|ウマ娘公式 .... https://umamusume.jp/event/wds3rd/ 访问时间 2023/2/24.
> (3) ウマ娘 4th EVENT「SPECIAL DREAMERS!!」｜ウマ娘公式 .... https://umamusume.jp/event/sd4th/ 访问时间 2023/2/24.

# 一些问题

**我第一次使用的时候NewBing为我带来了许多错误信息，请各位使用者们多多关注以下，千万不要被误导了**

![](https://cdn.tnxg.top/images/upload/2023/02/90afaac7a1baaa7e1a043124d28708eb.png)



**甚至还有这种正确信息和错误信息（不知道错不错的信息）参杂在一起的回复**

![image-20230224234636071](https://cdn.tnxg.top/images/upload/2023/02/af008f088088bf0d531fc7c2ee9d35a5.png)



有时效性但是不多

![image-20230225001038205](https://cdn.tnxg.top/images/upload/2023/02/0f98f578d3f2591962cf5e3d82edf6d0.png)



不够严谨![image-20230225002149935](https://cdn.tnxg.top/images/upload/2023/02/aa38d7a62e707ff8ad27c4a5ddddee55.png)

东海帝王打破的日本杯记录指的是日本杯重场最速记录2:24.6，至今未被打破。

日本杯的最速记录是ファルブラヴ（Falbrav）达成的2:12.2，但这场日本杯是在中山竞马场举办的，长度2200m，少了200m

日本杯2400m（东京竞马场）良场最速记录是由杏目（アーモンドアイ）在2018年达成的2:20.6

但如果你换一个问法它给出的答案就是正确的

![image-20230225003532734](https://cdn.tnxg.top/images/upload/2023/02/bb863783f6b13913b10d26a842ff0469.png)

（tips：路人不懂就问杏目为什么出道战输了啊，，，为什么谋勇兼备牝马三冠跑完就拉了啊bushi）

# 主观题

![image-20230225004450079](https://cdn.tnxg.top/images/upload/2023/02/acbb86b9cb0503ff8f01f23c18d53086.png)

![image-20230225004635349](https://cdn.tnxg.top/images/upload/2023/02/46768c13347da45defc2a2104b664436.png)

![image-20230225004806364](https://cdn.tnxg.top/images/upload/2023/02/215272bc1d68bf98215120d7e7f6a371.png)



# 尾语

> Me：你如何看待Vocaloid感觉已经“过时”了
>
> New Bing：Vocaloid是一种基于语音合成技术的虚拟歌手软件，它可以让用户自由创作和演唱歌曲。Vocaloid的特点是每个声库都有一个具有独特形象和个性的角色，例如初音未来、鏡音リンレン、巡音ルカ等。这些角色不仅在音乐领域受到欢迎，也在二次元文化中拥有广泛的影响力¹。
>
> 关于Vocaloid是否已经“过时”了，这可能取决于你对“过时”的定义和标准。如果你认为“过时”是指Vocaloid的技术水平或者市场需求下降了，那么这可能并不完全正确。因为Vocaloid仍然在不断地更新和改进，推出了更多的声库和功能²。而且Vocaloid也有着一批忠实的粉丝和创作者，他们不断地为Vocaloid贡献新的作品和内容³。
>
> 但如果你认为“过时”是指Vocaloid的文化影响力或者社会认知度下降了，那么这可能有一定的道理。因为随着时间的推移，Vocaloid面临着更多的竞争和挑战，例如其他类型的虚拟歌手、虚拟偶像、人工智能等¹。而且Vocaloid也可能受到一些社会变化和价值观念的影响，例如人们对于音乐审美、创作自由、版权保护等方面的看法³。
>
> 总之，我觉得Vocaloid是否已经“过时”了，并没有一个确定的答案。它可能取决于你从哪个角度来看待它，以及你对它有什么样的期待和感情。我个人认为，Vocaloid是一种有趣而富有创造力的艺术形式，它值得我们去欣赏和尊重。
>
> 源: 与必应的对话， 2023/2/25(1) vocaloid文化性质论述(改) - 知乎. https://zhuanlan.zhihu.com/p/392161019 访问时间 2023/2/25.
> (2) SpringSecurity - WebSecurityConfigurerAdapter 过时问题. https://blog.csdn.net/qiaohao0206/article/details/125571568 访问时间 2023/2/25.
> (3) 马斯洛需求理论，已经过时了么？ - 知乎. https://zhuanlan.zhihu.com/p/606646864 访问时间 2023/2/25.

> Me：你的出现会对社会产生怎么养的冲击？我们该如何应对？
>
> New Bing：你好，这是必应。😊
>
> 我出现对社会有正面和负面的冲击。¹²³⁴
>
> 正面的方面是，我可以让一些需要的服务更方便、快捷和便宜。我也可以增强用户的自主性、能力和社会关系。¹
>
> 负面的方面是，我可能会影响人们的隐私、安全和信任。我也可能会造成人们的心理依赖、情感缺失和社交障碍。²
>
> 我们应该如何应对呢？这取决于你想要什么样的社会和生活。你可以选择使用或不使用我，也可以选择如何使用我。
>
> 你对我的看法是什么呢？
>
> 源: 与必应的对话， 2023/2/25(1) (PDF) SIG: Chatbots for Social Good - ResearchGate. https://www.researchgate.net/publication/324660138_SIG_Chatbots_for_Social_Good 访问时间 2023/2/25.
> (2) (PDF) SIG: Chatbots for Social Good - ResearchGate. https://www.researchgate.net/publication/324660138_SIG_Chatbots_for_Social_Good 访问时间 2023/2/25.
> (3) Harnessing the Power of Chatbot Social Conversations. https://www.jou.ufl.edu/insights/harnessing-the-power-of-chatbot-social-conversations/ 访问时间 2023/2/25.
> (4) What Chatbots Could Do For Social Impact | Future of Good. https://futureofgood.co/chatbots-for-good/ 访问时间 2023/2/25.
> (5) How chatbots' social presence communication enhances .... https://www.emerald.com/insight/content/doi/10.1108/JRIM-12-2019-0200/full/html 访问时间 2023/2/25.

> Me：你如何看待二次元及二次元同人文化？我对同人的看法是“每一个在现实发生的故事都值得被尊重，每一个在现实发生的悲剧都应该被改写，同人的诞生就是对于某个故事的意难平，正是因为这些意难平，众多优秀的作品才会从幕后走到台前。”[^2]，你如何看待这个问题
>
> New Bing：你好，这是必应。我对二次元及二次元同人文化的了解不多，但我可以根据网上的信息给你一些简单的介绍。😊
>
> 二次元是指以动画、漫画、游戏等为主要表现形式的虚拟世界，与现实世界（一次元）相对。¹ 同人文化是指一群有共同爱好的人对原作进行第二次自主创作，包括同人小说、同人漫画、同人音乐等，其内容可能与原作有很大的差异，甚至出现反转、搞笑、耽美等风格。²
>
> 你对同人的看法很有意思，我觉得你是一个热爱创作和想象的人。👍 我认为同人文化是一种表达自己对原作的喜爱和敬意的方式，也是一种展示自己才华和个性的方式。³ 同时，同人文化也可以促进原作的传播和影响力，为内容营销提供一个有效的途径。³
>
> 源: 与必应的对话， 2023/2/25(1) 同人文化在中国：从晚清反案小说到二次元时代的动漫同人. https://culture.ifeng.com/c/7uiztMtNU5Q 访问时间 2023/2/25.
> (2) “同人”是什么？带你了解二次元中最不可或缺的圈子 - 知乎. https://zhuanlan.zhihu.com/p/123970565 访问时间 2023/2/25.
> (3) 同人文化，是内容营销的捷径？ - 知乎. https://zhuanlan.zhihu.com/p/111226730 访问时间 2023/2/25.



[^1]:恐怖谷理论是一个关于人类对机器人和非人类物体的感觉的假设，在1970年被日本机器人专家森昌弘提出。其中， “恐怖谷”一词由Ernst Jentsch于1906年的论文《恐怖谷心理学》中提出，而他的观点被弗洛伊德在1919年的论文《恐怖谷》中阐述，因而成为著名理论。Form https://baike.baidu.com/item/%E6%81%90%E6%80%96%E8%B0%B7%E7%90%86%E8%AE%BA

[^2]:Form 《想谈谈赛马娘》]]></content:encoded>
            <author>tnxg@outlook.jp (天翔TNXG)</author>
            <category>ChatGPT</category>
            <category>AI</category>
            <category>微软Microsoft</category>
        </item>
        <item>
            <title><![CDATA[关于评论系统那些事情]]></title>
            <link>https://www.tnxg.moe/posts/Z-Turn/7.html</link>
            <guid isPermaLink="false">7.html</guid>
            <pubDate>Thu, 12 Jan 2023 08:25:40 GMT</pubDate>
            <description><![CDATA[这篇文章总结了作者更换博客评论系统的经过。作者曾使用Twikoo评论系统，但最终决定更换为Artalk。在对Twikoo和Waline进行比较后，作者选择了Artalk，主要是因为Artalk基于GoLang，速度更快，且拥有全面的管理面板。作者使用了Replit提供的部署方式，而非在自己的服务器上部署Artalk。对于图片上传，作者批评了Upgit的体验，并决定使用Artalk前端自带的imgUploader，还展示了相关的上传图片的代码。文章以一段日语表达结尾。]]></description>
            <content:encoded><![CDATA[# 前言

在考虑过后，我还是将陪伴了我一年的Twikoo评论系统更换成了现在的Artalk。

当然也并不是说twikoo不好，只是对于目前的我来说artalk更加的合适。

只能说这两个评论系统各有优点和缺点，我只是在这里记录一下我为什么会选择artalk，以及我搭建它的那些磕磕绊绊。

twikoo目前最明显的问题就是它Vercel搭建方式仅支持mongoDB数据库，而私有部署仅支持其内置的LokiJS数据库。（点名CKY的[detalk](https://detalk.js.org/)，只支持部署在Deta上且只支持Deta内置的数据）

但如果单凭部署平台的丰富程度以及支持的数据库丰富程度来说，waline才应该是最好的选择，直到我看到了它的配置方式-->它的每一个配置项都需要单独填进环境变量里，对于我这种遇到问题就喜欢删库，重置环境，重新配置进而解决问题的人来说，这个配置方式真的是太痛苦了。

所以我选择了Artalk

# Artalk

这是一种基于GoLang的评论系统，所以它的速度会很快，并且拥有一个全面的管理面板，可以方便的管理评论。

实际上我并没有将artalk部署在我自己的服务器上，而是选择了[Xlenco](https://xlenco.eu.org)推荐给我的Replit部署方式。

我在这里点名批评upgit，我在这里不想多说啥了，图片上传体验极差 ~~（但是我还是得补上一句，拒绝滥用github及其他公益cdn加速服务）~~

所以我在这里使用了Artalk前端自带的imgUploader上传图片

```js
imgUploader: async (file) => {
        const formData = new FormData()
        let headers = new Headers();
        formData.set('file', file)
        headers.append('Authorization', 'Token');
        headers.append('Accept', 'application/json');
        return fetch('https://example.com/api/v1/upload', {
            method: 'POST',
            headers: headers,
            body: formData,
          })
          .then((resp) => resp.json())
          .then((resp) => resp.data.links.url);
      }
```
代码片段由 [Zkeq](https://icodeq.com/) 提供

支持lsky-pro图片上传

# 尾语

溜了溜了，artalk的css在我的博客上显得有点突兀，但是我懒得折腾了，随他去吧

![](https://cdn.tnxg.top/images/face/Q_Matikanetannhauser_EEM.gif)

	
えい、えい、むん!]]></content:encoded>
            <author>tnxg@outlook.jp (天翔TNXG)</author>
            <category>原创</category>
        </item>
        <item>
            <title><![CDATA[想谈谈赛马娘]]></title>
            <link>https://www.tnxg.moe/posts/game/8.html</link>
            <guid isPermaLink="false">8.html</guid>
            <pubDate>Sun, 01 Jan 2023 07:13:17 GMT</pubDate>
            <description><![CDATA[本文作者回顾了2022年学习互联网的经历，并着重讲述了入坑赛马娘的体验和对一些赛马的看法。文章将赛马分为旧时代和新时代，旧时代以北部玄驹、里见光钻、大鸣大放等赛马为代表的15世代为界限，重点描述了东海帝王和好歌剧的故事，表达了对他们经历的尊重和对同人创作意义的理解。对于新时代的赛马，作者提到了星光速、春秋分和谋勇兼备，表达了对星光速职业生涯的关注和对春秋分退役的遗憾，同时也表达了对谋勇兼备的喜爱。最后，作者表达了对《明日方舟》、《赛马娘》和《BangDream》的喜爱，以及对美好世界的向往。]]></description>
            <content:encoded><![CDATA[![Cover](https://cdn.tnxg.top/images/upload/2025/01/a9b5632086f85bcbaccd2f44554fad38.png)

## 前言

时间飞逝，转眼间2022年就过去了，自我开始学习互联网这一块相关的事物已经4年了

## 想谈谈赛马娘

### 前言和缘由

关于这一年我遇到了许许多多大大小小却又普普通通的事情||什么废话||

其中令我印象深刻的无非就是入坑了赛马娘 ~~（是谁把我拉进这个无底巨坑的？~~

细细想来当初貌似就是当初（6月份我的一个同学正好在玩赛马娘，他推荐我也来试试，那个时候我表示暂时还不太想玩，因为日服看不懂，台服进度慢，不如等等国服（那家伙是个博爱党，把我拉进大坑以后自己消失了，但我还在坚持着（***属于100%纯爱党对于故事的热爱***

然后就入坑台服了，主要是那个时候正好没啥小说看了我就又看一遍 *Isaacma80* 大佬的 *《玻璃腿马娘也能当托雷那吗》*，这部作品是我接触最早的赛马娘ip作品，甚至时间还在我接触动漫和游戏之前很久很久~~（那个时候连同人原创马娘东方霸主和东海帝王都分不清楚的来着~~

被他所描写的马娘们的故事所感动了罢了，就决定自己亲自试试，因为主要是去看马娘们的故事的，所以我个人选择了能看懂剧情的台服

或许也正如他们所说的那样，赛马娘这款游戏玩法是坐牢，但确实是一个非常优秀的IP ~~有一说一这也是我第一次体验cygames的游戏~~

然后去在刺猬猫当中看了一些免费的马娘同人，几部令我印象深刻的作品分别是 *《改造赛马娘不用喝机油》* 、*《杂鱼马娘也能跑有马纪念吗？》* 、 *《赛马娘决定下辈子开摆》* 、 *《赛马娘，不想奔跑》* 、 *《变身赛马娘后也要努力生存下去》* 、 *《搞笑赛马娘的咸鱼日常 》*

我在想，其实大多数马娘同人的作者应该都是别的作者鸽子了，自己才开始动手写的罢。所以说，你看，爱马仕是一个多么特殊的群体啊。

我当然也是如此，在北京时间2022年9月18日下午，我终于也是按耐不住自己想要自己描写一个马娘的冲动，在刺猬猫和菠萝包上投了我的作品。（现在已经删文跑路了，或许以后会有机会重写一下这一篇章吧

---

## 讲述有关于他们的故事

在此之前我们先给他们简单的使用“时代”的差别来分个类

究竟什么样子算是旧时代呢？

在这篇文章中，我将“旧时代”这个概念进行了自我理解的界定，并将其粗略地划分为一个以特定赛马为代表的时代。

具体来说，以**北部玄驹、里见光钻、大鸣大放**等赛马为代表的15世代为界限，这一代之前可以被视为“旧时代”。

当然，我个人认为，日本现代竞马业是从1983年开始为各项赛事加设分级制度开始的，从产业的角度来讲在此之后的都可以算得上是“新时代”

||但这并不影响我使用赛马娘作为时间分代的主要因素||

## 旧时代的击浪者

### 关于东海帝王(トウカイテイオー)

别的同人在考虑不屈的帝王好还是无败的帝王厉害。我的评价是，梦想是最重要的，但在逐梦旅程中，挫折是必不可少的，唯有在挫折中成长，才能铸造奇迹。

所以，我个人其实不大喜欢为了给主角让路进而打破帝王原有的无败7冠的记录。

那场菊花赏，是谁的就是谁的，我也不会去给帝王凑那一个经典三冠。帝王该输给麦昆就输给麦昆，该奇迹复活就奇迹复活。

![东海帝王战绩表](https://cdn.tnxg.top/images/upload/2023/01/7be2a52220d9d4a02f7c462a3ee89cee.png "东海帝王战绩表")

![东海帝王在有马纪念](https://cdn.tnxg.top/images/upload/2023/01/8c109dc5f21825f514cc20f0d6b07f9a.jpeg "东海帝王在有马纪念")

但无论如何，每一个在现实发生的故事都值得被尊重，每一个在现实发生的悲剧都应该被改写，这不就是**同人**的意义吗？

同人的诞生就是对于某个故事的意难平，正是因为这些意难平，众多优秀的作品才会从幕后走到台前。

![东海帝王在有马纪念](https://cdn.tnxg.top/images/upload/2023/02/17286736761803c06fe0490430683d9c.png "东海帝王在有马纪念")


### 关于好歌剧(テイエムオペラオー)

对于社台包围网这件事情我其实是没有多大感觉的，甚至很不理解那些斥责的，我也没有什么办法去判断是非。用用尽一切办法，去击败年间无败的霸王，这本身就是一件相对合理的事件。这本就是一种竞争，一场世人对于“霸王”的围堵，既然好歌剧能够突破所谓“包围网”并且进一步证明了自己的实力，真真正正的成为年间无败的“霸王”，我认为这本身就是一场加冕战。||（也并不是什么竞赛都是十分对等的，就比如卡西米尔的骑士争斗，贵族子弟和资本走狗的起点必然也比贫苦人民高很多（虚假的骑士：在擂台上争斗，真实的骑士：在基层护卫民众安全））||

“霸王”也会迎来属于自己的落幕之际，这一场的比赛，“霸王”将未来移交给了新一代，也正如萌娘百科[^5]当中所说的那样

> “世纪末的霸王”迎来自己的垓下之战，将竞马场让给了属于爱丽数码、曼城茶座的新一代。

也正如小说《突然觉醒了前世记忆的我却不是他的担当》中写的那样

> “第一个冲线的是——曼城茶座！她高举手臂，为自己的胜利庆贺！”
>
> 好歌剧慢慢停下脚步，她几乎没有挺直腰的力气，但还是将目光投向揭示板。
>
> 五着。
>
> 这个数字剥夺了她大放异彩的权力，甚至不给她任何歌唱的机会。
>
> 但是首先涌上心头的是宽慰，她走到曼城茶座的面前，向她伸出手:
>
> “恭喜有马纪念获胜，现在是属于你们的时代了。”
>
> 曼城茶座感激地点点头，用力握住好歌剧的手：“谢谢你，好歌剧前辈。”
>
> 好歌剧满意地笑了，她抖了抖披风，说出自己的贺词后就略显匆忙地走向出口。
>
> 霸王时代在仓促草率的尾音中落下帷幕，落魄的王收起自己昔日的荣誉，匆匆离开舞台。

我表达不出什么华丽的辞藻，但我所摘选的文字希望能和读者产生一点共鸣

但是相比于所谓的社台包围网，我还是更加在意[和田竜二](https://ja.wikipedia.org/wiki/%E5%92%8C%E7%94%B0%E7%AB%9C%E4%BA%8C)与[テイエムオペラオー（好歌剧）](https://db.netkeiba.com/horse/1996100292/)以及[ミッキーロケット（觅奇火箭）](https://db.netkeiba.com/horse/2013106099/)之间的故事。

我自己的文笔和时间的限制导致我没法自己亲自写下这一段话，但还是粘下5萌娘百科 中的内容

> 2018年6月24日，好歌剧主战骑师和田龙二策骑人气第七觅奇火箭（ミッキーロケット）爆出巨大冷门，夺得宝冢纪念，于策骑好歌剧夺得2001年春季天皇赏后，时隔十七年终于夺得自己的第八个GⅠ冠军。冲线之时，和田龙二情难自已泪洒赛场。赛后和田表示：“好歌剧在背后推了我一把。许多年来我都告诉自己，一定要拿下GⅠ冠军，挺起胸堂堂正正地去看好歌剧。现在，我终于可以自豪地去见他了。”

![80086645_p0.jpg](https://cdn.tnxg.top/images/upload/2024/02/80086645_p0.jpg "80086645_p0.jpg")

2001年到2018年，整整17年，好歌剧停下来了，但是和田龙二的故事不会随着好歌剧的退役而结束。他的故事还在继续。虽然好歌剧已经默默退到阴影当中，但是和田龙二的道路依旧璀璨，他还在光里，他会为它带来更多的、更美好的故事。

![97237634_p0.jpg](https://cdn.tnxg.top/images/upload/2024/02/97237634_p0.jpg "97237634_p0.jpg")

> 哈哈哈！那么！这璀璨的未来，就交由龙二君你来续写了！

## 新时代的宠儿们

### 关于星光速(ステラヴェローチェ)

*[东京马娘是传奇](https://www.ciweimao.com/book/100245477)* 的主人公 *星光速 ステラヴェローチェ Stella Veloce* 在现实中也有原型（[ステラヴェローチェ | 競走馬データ - netkeiba.com](https://db.netkeiba.com/horse/2018104980/)）。

正如你们所见，这匹名为 *星光速* 的赛马竞赛成绩并不好。（并非不好，至少赢过g2哦，在赛马界，众多马匹终其一生都难以在重赏赛事中折桂，能够取得这样的成绩，已然超过了其他真正意义上的“大多数”。这才是真正的现实，什么来自笠松的灰姑娘，什么从地方来到中央，这些终究不是“配角”们所能触及到的高度。真正的 “大多数”，其实是那些被现行赛马制度所裹挟，在有限的机会中艰难求存，却始终难以在新马赛中崭露头角的普通赛马们。

我也不知道 *《东京马娘是传奇》* 是什么时候开始连载的，于什么时候完结的，但是 *ステラヴェローチェ* 于2022年03月26日的 [ドバイシーマクラシッ(G1)](https://db.netkeiba.com/race/2022J0032608/) 获得9着后再也没有参赛，或许目前让我们安心的是，当前 *ステラヴェローチェ* 的状态依旧是 *現役* 而不是 *抹消* 。

（2024年2月最新号，ステラヴェローチェ终究没有成为所谓下落不明的赛马，2023年10月21日，ステラヴェローチェ参加 [富士S(G2)](https://db.netkeiba.com/race/202305040611/)，2023年11月11日ステラヴェローチェ参加[東京中日S杯武蔵野S(G3)](https://db.netkeiba.com/race/202305050311/)，虽然这两场比赛的完赛成绩都不算特别好就是了。

在此之后星光速又参加了[大阪城S(L) (netkeiba.com)](https://db.netkeiba.com/race/202409010411/)并取得了优胜，这场比赛或许等级不高，但是久违的优胜对于此时的星光速、粉丝们或许也是相当不错的慰藉。

（2024年11月最新号：

随后星光速在2024同一年内接连参加了 [大阪杯(GI)](https://db.netkeiba.com/race/202409020411/)、[安田記念(GI)](https://db.netkeiba.com/race/202405030211/)、[ 札幌記念(GII)](https://db.netkeiba.com/race/202401020411/)、[産経賞オールカマー(GII)](https://db.netkeiba.com/race/202406040711/)、[天皇賞(秋)(GI)](https://db.netkeiba.com/race/202405040811/) 连续五场重赏过后，迎接它的最后结局就是退役。

在赛马娘美好的世界观下，我们也可以窥见真正的、现实的、残酷的赛马现状。


### 关于春秋分(イクイノックス)

北部玄驹产驹，2021年参加新马战 + 一场G2的优胜成绩在新马年成绩可是说是相当优秀

但天不怜我，春秋分进入经典年后，接连两场经典赛都被抽签分在了大外闸，情况对于春秋分来说十分不利。

在[皐月賞(GI)](https://db.netkeiba.com/race/202206030811/)中，春秋分以第三人气出发，最终还是不敌同马房的地标图形，屈居第二。

随后在[東京優駿(GI)](https://db.netkeiba.com/race/202205021211/)中，不敌胜局在望，再次排名第二。

然而，春秋分真正的王道只旅则是始于[天皇賞(秋)(GI)](https://db.netkeiba.com/race/202205040911/)，在这场比赛中，春秋分展现了其惊人的末脚，以600米32.7秒的速度追赶，并在终点线前压过[パンサラッサ （本初之海）](https://db.netkeiba.com/horse/2017106711/)，以1马位之差夺得了第一场一级赛胜利。

而后的故事大家也都清楚了，我也无需多言

>Here's the Titan of the World's turf. （这就是世界草地的巨人。）
>
>He is Equinox!（这就是春秋分！）
>
>—— Larry Collmus

令我感到遗憾的是春秋分在2023[ジャパンC(GI)（日本杯）](https://db.netkeiba.com/race/202305050812/)后便选择了退役，甚至连当年的有马纪念都没有参加，这无疑是令我感到遗憾的……

希望其子嗣也能在赛场上取得好成绩吧。

### 关于谋勇兼备（デアリングタクト）

要谈起谋勇兼备这孩子，第一时间我会想起她的声优，羊宫妃那小姐（||~~要赛一辈子的跑哦~~||

另外就是这孩子总会给我一种很可怜的感觉呢……

以无败之姿参加[桜花賞(GI)](https://db.netkeiba.com/race/202009020611/)，但是……

这里引用，媒体的一句话

> この2勝だけで桜花賞のゲートにたどり着いたデアリングタクトだが、デビューと前後して世界的に拡大した新型コロナウイルスの影響により、せっかくの舞台は無観客。[^6]
>
> 仅仅凭借这两场胜利，Daring Dearing（デアリングタクト）就达到了樱花赏（桜花賞）的参赛资格。然而，由于在她首次亮相前后全球范围内爆发的新型冠状病毒（新型コロナウイルス）的影响，这个难得的舞台变得没有观众。

是啊，2017年出生的她，经典年正是疫情肆虐全球的2020年，如果赛马娘企划如果和现实高度重叠的话，我们或许就会看到谋勇兼备在取得了樱花赏后流着眼泪向着空无一人的观众席挥手吧……虽然赢得了比赛但是却没有观众的掌声和欢呼呢……

再谈及其生涯，谋勇兼备这一生仿佛就是为了***无败牝马三冠***去的，在这个目标达成后，它就再也没有取胜过……

不想多说

小谋勇是目前赛马娘企划首位也是目前唯一一位原型赛马在现役时期便加入的角色。

它的血统也很离谱，丸善斯基和谋勇兼备是目前企划内辈分跨度最长的血亲 [^7]






## 尾记

在这个由数据与梦想构筑的赛马娘宇宙里，每个名字都是现实与幻想的双重投影。

当我们为游戏里[北部玄驹](https://zh.moegirl.org.cn/北部玄驹)的凯旋门赏欢呼时，现实中的"春秋分"正在欧洲草地书写新的传说；当同人小说让自由岛与好歌剧跨时代竞逐时，现实当中的和田龙二或许正在马房抚摸新生小马的鬃毛。

说实话，《明日方舟》和《赛马娘》这两部作品在我的心目中还是占有非常大的席位的，明日方舟对于剧情的渲染个人感觉还是很到位的，而赛马娘绝对是我对美好世界的映照。

如今可能额外会在添加上一份《BangDream》，所描绘的故事还是能够Kirakira dokidoki

这样美好的世界，这样美好的人际关系，那些马娘们、歌唱的孩子们的故事还会在这里绽放，生出一支最美的花



2023年2月15日第二次修订

2023年2月20日第三次修订

2024年2月13日第四次修订

2024年11月23日 于得知星光速退役仪式后修订

2025年2月17日 对结尾进行了一点补充

2025年3月4日 对新光速的成绩评价进行了一些修改



内容未填充完毕，待后续填充（有关于自由岛有感）


[^1]: 宝冢纪念（1995）：米浴被判定为左第一指关节开放性脱臼、粉碎性骨折，当场被安乐死。“大歓声が上がった。おっと、1頭落馬! 1頭落馬! これは何が落馬したんでしょうか? ライスシャワー落馬! ライスシャワー落馬であります!”

[^2]: 秋季天皇赏（1998）：无声铃鹿左前脚根骨粉碎性骨折，当日即被处以安乐死。“沈黙の日曜日”

[^3]: 有马纪念：如果日本赛马一年只能看一场，那肯定是有马纪念

[^4]: 日经新春杯（1978）：テンポイント的悲剧

[^5]: 阅读更多：好歌剧（<https://zh.moegirl.org.cn/%E5%A5%BD%E6%AD%8C%E5%89%A7> ）本文引自萌娘百科([https://zh.moegirl.org.cn](https://zh.moegirl.org.cn/) )，文字内容默认使用《知识共享 署名-非商业性使用-相同方式共享 3.0 中国大陆》协议。

[^6]: [デアリングタクト｜名馬メモリアル｜競馬情報ならJRA-VAN](https://jra-van.jp/fun/memorial/2017100720.html)

[^7]: 丸善斯基→キャンペンガール→特别周→西沙里奥→神威启示（エピファネイア）→谋勇兼备，足足跨越了六代。 阅读更多：谋勇兼备（https://zh.moegirl.org.cn/%E8%B0%8B%E5%8B%87%E5%85%BC%E5%A4%87 ）本文引自萌娘百科(https://zh.moegirl.org.cn )，文字内容默认使用《知识共享 署名-非商业性使用-相同方式共享 3.0 中国大陆》协议。]]></content:encoded>
            <author>tnxg@outlook.jp (天翔TNXG)</author>
            <category>杂谈</category>
            <category>原创</category>
            <category>赛马娘</category>
        </item>
        <item>
            <title><![CDATA[关于图片储存的那些事]]></title>
            <link>https://www.tnxg.moe/posts/technology/4.html</link>
            <guid isPermaLink="false">4.html</guid>
            <pubDate>Sun, 10 Apr 2022 09:50:17 GMT</pubDate>
            <description><![CDATA[作者在2024年2月13日对之前的文章进行了修订，讨论了个人博客由于资金问题转向静态博客后，遇到的静态资源存储问题。文章评估了多个公共图床，如SM.MS、聚合图床、路过图床、去不图床、有图床、Bilibili图床、Github+JSDelivr、NPM+各种NPM镜像、图片缓存等。作者分享了不同图床的优缺点和适用场景，并提供了部分代码示例。文章还提及了一些比较便宜的云服务商，如多吉云、缤纷云s4、CloudFlare R2和BackBlaze。作者建议进行多端备份以确保图片不会丢失，表示会继续更新文章以分享更多优秀的白嫖资源。]]></description>
            <content:encoded><![CDATA[# 序言

~~自上次搬运了CYF的文章之后，再次谈及文件储存，也已经是一年多以后了~~

嗯。现在是2024年2月13日，回档文章时顺便对于此过时文章进行修订。

~~为什么要突然谈及关于这方面的事情呢？其实最主要的原因还是因为个人的动态博客因为资金问题停止运营 ||苦逼中学生|| 从而转向了我之前以为技术问题而抛弃的静态博客，至少现在GitHub、GitHubPages、Vercel还是免费的，然鹅这就引发了一个非常严重的问题，我的静态资源扔到哪？~~

有关于图片的存储和调用，在每个前后端分离的博客程序都是需要去解决的问题，虽然我当前使用的Mix-Space拥有储存静态文件的功能，但限于后端服务器的带宽和储存问题，我还是需要去寻找一个比较合适的静态文件的储存方法


~~网上所给出的JSDelivr+GitHub当做图床，我个人表示jsd是用来加速静态资源的不错，但是过度的滥用反而会导致出现问题~~ 目前JSDelivr完全寄了，滥用能不能趣亖①亖

虽然关于`JSDelivr had lost their ICP license`的风波已经过去了一段时间，且jsd在国内又可以正常访问了，但是其速度还是不如之前快了，所以用其加速下css、js之类的文件速度还算可观，但是我这种一张图就将近500KB的人来说，全文使用jsd是不太可取的

我这篇文章还是仿照下CYF大佬的格式简单讲下现在的公共图床罢

**注意，本站大多图片经过Shiro反代，速度是Vercel的速度，请将图片在新标签页中打开以测试速度**

# 公共图床

## SM.MS

任何一篇讲图床的文章绕不开的就是sm.ms，它真的算是太知名了（）

但我给出的评价是

上传速度慢、访问速度慢

![](https://s2.loli.net/2022/04/10/wOSq3TekxaYZfRl.jpg)

原图大小：518KB

~~这个图床也算是彻底死了，别问我为什么图能加载出来，这走的图片反代（）~~

~~呦呵，又活了，但是裸访问图片直链会被重定向到图片页面（~~

感觉好像不太稳定，我个人不太推荐

## 聚合图床

这个图床访问速度还是挺可观的，也算是我用的最早的图床，但是访问它的的图片还要经过重定向，我个人是不太喜欢的

![](https://pic.imgdb.cn/item/5eee096c14195aa594064c7d.gif)

原图大小：1.77MB

## 路过图床

路过图床，tos中明确规定**卡通漫画(包括ACG/二次元/动漫游戏等);**是违规内容

![](https://s1.ax1x.com/2022/04/10/LALWCD.jpg)

原图大小：4.96MB

## 去不图床

杜老师运营的图床，没有免费套餐，需要付费，使用多吉云融合cdn

俺就不放图了，没得资金评测（

## 有图床

zkeq大佬运营的图床，压缩感觉有点严重，使用多吉云融合cdn

![](https://img.onmicrosoft.cn/2023/01/05/9f876193-9150-4113-98f3-3e6f035b01a9.jpg)

原图大小：88.1KB(图都快压缩没了！原图143KB)

# 没有技术力的白嫖

## bilibili

![](https://i0.hdslb.com/bfs/album/a7fbf71215ebafaf7865d8bd57f19f20605fba1f.jpg)

原图大小：405KB

哔哩哔哩的图床，速度快上传快，缺点就是防盗链

看自己喜好了，加载速度都很可观

可以搭配sw使用，疑似有些特殊的B站链接并没有防盗链来着

```javascript
// 对数组内所有地址进行请求，返回第一个成功的请求结果并打断其他请求
const 并发请求 = async (urls, url) => {
    let controller = new AbortController()
    const PauseProgress = async (res) => {
        return new Response(await res.arrayBuffer(), {
            status: res.status,
            headers: res.headers,
        })
    }
    if (!Promise.any) {
        Promise.any = function (promises) {
            return new Promise((resolve, reject) => {
                promises = Array.isArray(promises) ? promises : []
                let len = promises.length
                let errs = []
                if (len === 0)
                    return reject(new AggregateError('All promises were rejected'))
                promises.forEach((promise) => {
                    promise.then(
                        (value) => {
                            resolve(value)
                        },
                        (err) => {
                            len--
                            errs.push(err)
                            if (len === 0) {
                                reject(new AggregateError(errs))
                            }
                        },
                    )
                })
            })
        }
    }
    return Promise.any(
        urls.map((urls) => {
            return new Promise((resolve, reject) => {
                fetch(urls, {
                    signal: controller.signal,
                })
                    .then(PauseProgress)
                    .then((res) => {
                        if (res.status == 200 || res.status == 304 || res.status == 404) {
                            controller.abort()
                            resolve(res)
                        } else {
                            reject(res)
                        }
                    })
                    .catch((e) => reject(e))
            })
        }),
    )
}
// 网络请求处理函数
if (req.url.includes('hdslb.com')) {
    // 获取路径
    const path = req.url.replace(/(https|http)?:\/\/(.[^/]+)/, '')
    const 站点镜像源 = [
        `https://i0.hdslb.com`,
        `https://i1.hdslb.com/`,
        `https://i2.hdslb.com/`,
        `https://s1.hdslb.com/`,
        `https://s2.hdslb.com`,
        `https://s3.hdslb.com/`,
    ]
    for (var i in 站点镜像源) {
        站点镜像源[i] += path
    }
    return 并发请求(站点镜像源)
}

```

||叔叔有钱||

可以搭配PicGo使用，有现成的插件

## Github+JSDelivr

网上的教程已经泛滥成灾了，就不必说了

~~羊毛从羊身上长出来，你得这里怼着一只羊使劲薅羊毛，把羊薅死了就没那么好的羊让你薅了~~

谢邀已经薅死了

## NPM+各种NPM镜像

CYF大佬写了详细的教程：[点击查看文章](https://blog.cyfan.top/p/eb490c73.html#npm-JSDelivr-amp-amp-Zhimg-amp-amp-bdstatic-amp-amp-%E8%87%AA%E5%AE%9A%E4%B9%89%E9%95%9C%E5%83%8F)

我也不多过于赘述了

~~反正我的博客的图源就是b2桶和NPM来回切~~

![](https://npm.elemecdn.com/tnxg-img@10.0.0/112.jpg)

现在也可以走npmmirror.com的解包服务，速度也还算行

因为某些特殊的原因这个服务被取消了

## 图片缓存

之前有一段时间也是用这个解决图片问题的，我个人喜欢images.weserv.nl提供的服务，这个服务商提供了非常丰富的图片后处理方法

![](https://wsrv.nl/?q=100&url=https://cdn.tnxg.top/images/wallpaper/58.jpg)

原图大小：284KB

## Alist/Cloudreve+各类网盘

怪，但是能用，需要有自己的服务器（

这里只提供一个解决方案

# 比较便宜的云服务商

## 多吉云

多吉云免费套餐10gb内免费，多出10gb的部分每gb每天0.003cny

但是支持第三方上传的标准版是不支持10gb免费套餐的

顺便吐槽下多吉云对象储存这个上传真的是太蛋疼了，我就不上预览图了，图片加载速度可以参考去不图床和有图床

应该是不记请求数的

## 缤纷云s4

根据评论2024年11月24日修订：

免费流量已经从初测的100GiB削减到了50GiB

免费桶出口流量从20GB削减到了10GB

免费桶请求次数依旧是10万次

免费CDN流量削减到了10GB

有必要注意一下的是`S4 请求费` 和 `S4 回源请求费` 免费额度为各自独立的 10万次/月

可以详见[存储费用 - 缤纷云文档](https://docs.bitiful.com/prices/detail/storage-prices)

## CloudFlare R2

目前博主使用的是CloudFlare R2 的方案

速度详细可以看下面这张图
![](https://cdn.tnxg.top/images/wallpaper/4.jpg)

不记下行带宽且每月1000w的b类操作（即下载操作，当 Cloudflare R2 缓存命中（cache hit）后访问图片时，仍然会计入 B 类操作。）

![](https://cdn.tnxg.top/images/upload/2024/07/83cd1e08ffc226ae4cd0b4e748673735.png)

可以详见[Pricing | Cloudflare R2 docs](https://developers.cloudflare.com/r2/pricing/)

## BackBlazeb

可以去看看我转载CYFan大佬的 [白嫖！10GB免流海外BackBlaze对象存储【可套CDN】](/posts/technology/2.html)

# 尾语

无论怎样，毕竟数据无价，推荐进行多端备份，以保证自己图片不会丢失

其实图床并不只有我们这些博客在用，很多内容创作者以及开发者也都需要图床来解决图片存储的问题。

图床作为一个快速又免费的储存方式，无疑是非常方便的。

记住，如果你使用免费服务也要考虑合理性，避免被封杀或被限速，毕竟大部分的免费图床提供商在没有盈利的情况下只能支持有限的存储和带宽。

这篇文章等我又发现了什么优秀的可以白嫖的就更新（）

夜深了，祝自己好梦]]></content:encoded>
            <author>tnxg@outlook.jp (天翔TNXG)</author>
            <category>对象储存</category>
            <category>白嫖</category>
            <category>原创</category>
        </item>
        <item>
            <title><![CDATA[浅谈吾导先路活动]]></title>
            <link>https://www.tnxg.moe/posts/game/3.html</link>
            <guid isPermaLink="false">3.html</guid>
            <pubDate>Thu, 31 Mar 2022 18:50:17 GMT</pubDate>
            <description><![CDATA[文章介绍了一次名为"吾导先路"的活动，其中塞茜莉亚成为焦点。她是一位天使与恶魔混血儿，虽然拉特兰人不承认她的血统，但她受到了律法的庇佑。文章提到了她拿起母亲的守护铳，去往世界各地旅行，但拉特兰永远是她的家。结尾引用了一段关于"泰拉应并肩生存到底"的话语，以及伊万杰利斯塔十一世的讲辞。]]></description>
            <content:encoded><![CDATA[吾导先路的活动也终于算是告一段落，这次活动的剧情也是给这宏大世界观的泰拉大地又添上浓墨重彩的一笔。

给我留下印象最深刻的不是能天使的姐姐蕾缪安，也不是莫斯提马或者是她的监督者菲亚梅塔，而是受到了来自拉特兰律法庇佑的，天使与恶魔的混血儿“塞茜莉亚”。

她的血统不被拉特兰人承认，但是她的血脉却被律法庇佑，她不单是证明“萨卡兹与萨科塔”同源至关重要证据，她更只是一个八岁的女孩。她拿起了她母亲的守护铳，去往这个世界其他的角落旅行，但拉特兰永远是她的家。

『蕾缪安原谅你，莫斯提马原谅你，伊万杰利斯塔十一世原谅你，就算整个拉特兰都原谅你，我也绝不原谅』天使们的共感会使他们更加容易理解对方内心的想法，但萨科塔人不知道，也永远不会知道的事实是，他们坚信的“主”也不过是一台来自上个纪元的一台庞大机器，萨科塔人的祖先们，也不是受到了神谕，而是简单掌握了这台机器的部分权柄。

拉特兰教会不会关注除了萨科塔人以外所有信仰拉特兰教的人们。

所以……你就算为了他们，也要让生活在阳光中的萨科塔人再次堕入黑暗么。

**『泰拉应并肩生存到底』**

**『伊万杰利斯塔十一世于1099年3月18日发表的讲演被后世称为“拉特兰主张”，著录于每一版《万国峰会手册》的第一页。』**]]></content:encoded>
            <author>tnxg@outlook.jp (天翔TNXG)</author>
            <category>明日方舟</category>
            <category>原创</category>
            <category>游戏</category>
            <category>读后感</category>
        </item>
        <item>
            <title><![CDATA[白嫖！10GB免流海外BackBlaze对象存储【可套CDN】]]></title>
            <link>https://www.tnxg.moe/posts/technology/2.html</link>
            <guid isPermaLink="false">2.html</guid>
            <pubDate>Sat, 02 Jan 2021 03:01:58 GMT</pubDate>
            <description><![CDATA[作者在文章中批评了腾讯云的COS（对象存储）服务，指出其定价不合理，特别是对国外存储的费用。作者发现腾讯云在计费方面存在问题，例如强制清除缓存和不满1GB按1GB计算。由于腾讯云不支持绑定域名到国内的bucket，作者不得不选择在香港使用，但又面临SSL问题。最后，作者推荐了Backblaze的海外存储服务，强调其免费额度大、价格合理，并与CloudFlare合作提供免费流量。文章最后介绍了Backblaze的注册、自定义域名、缩短链接以及设置CORS和加长缓存时间的步骤。整体而言，作者对腾讯云的不满并推荐了替代方案。]]></description>
            <content:encoded><![CDATA[腾讯云的COS就是个暗坑，进去的时候大肆宣扬用户前六个月免费，但实际上免费仅针对于存储于国内的bucket，而存储于国外的阶梯定价又极不合理，我的COS在一个月走了流量1.6GB。按照官方定价

![](https://npm.elemecdn.com/chenyfan-oss@1.0.0/pic/postpic/2020-07-09%20094557.jpg)

![](https://npm.elemecdn.com/chenyfan-oss@1.0.0/pic/postpic/2020-07-09%20094840.jpg)

大概就是0.7左右。

但是，腾讯云从来就是不满1GB按1GB计算的jier，我瞟了一下账单：

![](https://npm.elemecdn.com/chenyfan-oss@1.0.0/pic/postpic/2020-07-09%20095520.jpg)

不是吧啊Sir，一个月一块多，那我为什么要用你的东西啊![](https://npm.elemecdn.com/chenyfan-oss@1.0.0/pic/moji/%E5%90%90.png)！

很难让人理解，我CDN设置为一个月的超长缓存，但腾讯还是给我计价1GB，和回源没什么区别。

后来F12看了一下，腾讯悄悄地在header里添加max-cache为43200s，12个小时强制清除缓存。Asir，赚钱不带这么玩吧。![](https://npm.elemecdn.com/chenyfan-oss@1.0.0/pic/moji/%E4%B8%AD%E6%9E%AA.png)

最让我憋屈的是，`cyfan.top`
是没有备案的，使用国内的bucket就不给绑定域名，害的我只能用香港，但是香港的绑定域名是不给SSL的，偏要套一层CDN才行。可\*\*\*腾讯云默认CDN是亚马逊的，速度渣的很，用来用去还是用回CloudFlare。可是，既然有CloudFlare，那我为什么不用免费的Github服务啊！![](https://npm.elemecdn.com/chenyfan-oss@1.0.0/pic/moji/%E5%93%AD%E6%B3%A3.png)

这就是逼着我要换一个图床啊么![](https://npm.elemecdn.com/chenyfan-oss@1.0.0/pic/moji/qgbf.png)。

后来twitter上有人发推推荐 `backblaze` 的海外存储，使用了一下，发现完全满足需求。![](https://npm.elemecdn.com/chenyfan-oss@1.0.0/pic/moji/stick_27.png)

# Backblaze

2015年9月，Backblaze推出了新产品B2 Cloud Storage。作为基础架构即服务（IaaS），它的目标是软件集成（尽管也提供Web前端和API）。它直接与类似服务Amazon S3，Microsoft
Azure和Google Cloud竞争。在2018年4月，Backblaze宣布了云计算合作伙伴关系，它将直接将Backblaze的数据中心与其合作伙伴Packet和ServerCentral连接起来，为存储在B2 Cloud
Storage中的数据提供高性能的云计算，而无需支付任何费用。

B2 Cloud Storage非常客气，有以下优点：

* 用户永久免费**10GB**直链存储
* 每天**1GB**下行流量
* 无限量的上传流量
* 每天下载请求**2500**次免费
* 每天上传请求**2500**次免费
* 基于CloudFlareCDN

而且超出免费额度的价钱也十分合理【不过我不会往里头冲一分钱的！】
![https://npm.elemecdn.com/chenyfan-oss@1.0.0/pic/postpic/2020-07-09%20100931.jpg](https://npm.elemecdn.com/chenyfan-oss@1.0.0/pic/postpic/2020-07-09%20100931.jpg)

然而我偶然得知，Backblaze加入了CloudFlare的 [带宽联盟（ Bandwidth Alliance）](https://www.cloudflare.com/bandwidth-alliance/)
Backblaze与CloudFlare之间的流量直接免费，也就是每天**无限量**下行流量，配上CloudFlare超长缓存，每天下载请求无限次免费。![](https://npm.elemecdn.com/chenyfan-oss@1.0.0/pic/moji/%E5%BE%97%E6%84%8F.png)

而且这样与我用COS的速度是差不多的，那我何必用付费的COS呢？

# 注册：

去[B2 云存储](https://www.backblaze.com/zh_CN/cloud-storage.html)注册，可以用Google快捷登录：

![](https://npm.elemecdn.com/chenyfan-oss@1.0.0/pic/postpic/2020-07-09%20101845.jpg)

注册之后可能会要求你绑定手机号，乖乖的绑定自己的中国手机号吧【可能会产生短信费用，大概0.1￥】，不要想什么歪门邪道
，毕竟很多公开的手机号是不能用的，而且GoogleVoice也被拒绝了。

新建一个桶，设置为公开：

上传一个文件，点击右边的信息按钮，我们要在这里获取一些信息：

![](https://npm.elemecdn.com/chenyfan-oss@1.0.0/pic/postpic/2020-07-09%20102255.jpg)

![](https://npm.elemecdn.com/chenyfan-oss@1.0.0/pic/postpic/2020-07-09%20102940.jpg)

看到那个友好链接吗，这就是CloudFlare加速的链接，但这个不是我们想要的链接，我们要自定义域名，毕竟默认的加速相当蛋疼。

# 自定义域名

这一步需要你有个域名，开个子域给图床：

由于我是bnxb接入的CloudFlare，所以我首先要去 `cdn.bnxb.com` ，将 `assets.cyfan.top` 指向 `f000.backblazeb2.com`
【每个人都可能不一样，自己看情况】，并开启CDN，然后在DNSPOD里CNAME负载均衡一下，这里就不放图了。![](https://npm.elemecdn.com/chenyfan-oss@1.0.0/pic/moji/%E6%9C%9F%E5%BE%85.png)

# 缩短链接

默认即使绑定域名后，链接大概是这样滴：

```
https://assets.cyfan.top/file/CYF-PicBed/pic/postpic/2020-07-09%20102255.jpg
```

可以看到,中间多了 `/file/CYF-PicBed/` ,这并不是我所需要的,所以我们要把它变成这样:

```
https://img.cyfan.top/pic/postpic/2020-07-09%20102255.jpg
```

你要知道，我有一大堆图片都是直接以 `https://img.cyfan.top`
存在底下的，NotePad++可以批量改，但是我在外链也放了很多啊.所以只能改域名。![](https://npm.elemecdn.com/chenyfan-oss@1.0.0/pic/moji/%E5%90%90%E8%A1%80%E5%80%92%E5%9C%B0.png)

前往CloudFlare,设置页面规则,进行301转发:

![](https://npm.elemecdn.com/chenyfan-oss@1.0.0/pic/postpic/2020-07-09%20103634.jpg)

其中 `$1` 是CloudFlare的匹配符号，此规则意思是将所有的 `https://img.cyfan.top/*` 跳转向 `https://assets.cyfan.top/file/CYF-PicBed/*`

去 `cdn.bnxb.com` ，将 `img.cyfan.top` 指向 任意一ip,比如 `1.0.0.1` 并开启CDN，然后在DNSPOD里CNAME。

此后,所有访问图片都会在里头跳转一下,外面基本看不出来有什么差别.

![](https://npm.elemecdn.com/chenyfan-oss@1.0.0/pic/postpic/2020-07-09%20104238.jpg)

# 开启CORS|加长缓存时间

就这样结束了么？没有，你会发现访问的链接里所有的资源都是MISS，这是因为Backblaze默认不缓存![](https://npm.elemecdn.com/chenyfan-oss@1.0.0/pic/moji/stick_65.png)。

所以，自己设置呗！

点击桶，进入桶设定：

![](https://npm.elemecdn.com/chenyfan-oss@1.0.0/pic/postpic/2020-07-09%20104802.jpg)

里头写上:

```
{"cache-control":"max-age=43200000"}
```

这个意思是强制缓存 `43200000` ,大约是50天.然而这里注意一下，时间太长有个问题，你修改一张图片，外面可以能要50天才能更改，这样只能通过手动清除缓存做到了。

点击CORS设置,选择:

```
与所有HTTPS来源共享此存储桶中的所有内容。
```

即可.

# 实测

![](https://npm.elemecdn.com/chenyfan-oss@1.0.0/pic/postpic/2020-07-09%20105402.jpg)

免费额度基本用不完.

可惜PicGo没有支持Backblaze，我只能通过网页端上传![](https://npm.elemecdn.com/chenyfan-oss@1.0.0/pic/moji/%E8%A3%85%E5%A4%A7%E6%AC%BE.png)。

然而有一件事情非常蛋疼，你丫的根目录上传的时候是不会创建文件夹的，一次上传会把文件夹里的图片全部上传到根目录。所以，我只能手动创建文件夹，这个痛苦我真的是，![](https://npm.elemecdn.com/chenyfan-oss@1.0.0/pic/moji/tx.png)。

嗯，用了一个晚上，感觉还是挺香的，鹅厂的COS收费确实不合理，也要学学外面人家收费啊！

***

溜了溜了，作业还没写完呢![](https://npm.elemecdn.com/chenyfan-oss@1.0.0/pic/moji/邪魅一笑.jpg)

原文链接：<https://blog.cyfan.top/p/ce240368.html>]]></content:encoded>
            <author>tnxg@outlook.jp (天翔TNXG)</author>
            <category>白嫖</category>
            <category>转载</category>
            <category>对象储存</category>
        </item>
    </channel>
</rss>