<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Tit1e</title>
  
  <link href="https://evolly.one/atom.xml" rel="self"/>
  
  <link href="https://evolly.one/"/>
  <updated>2026-04-23T04:51:39Z</updated>
  <id>https://evolly.one/</id>
  <author>
    <name>Tit1e</name>
  </author>
  <generator uri="https://gohugo.io/">Hugo</generator>
  
  <entry>
    <title>人生日记教程：配置腾讯云对象存储</title>
    <link href="https://evolly.one/p/tencentcos/"/>
    <id>https://evolly.one/p/tencentcos/</id>
    <published>2026-04-23T12:40:00&#43;08:00</published>
    <updated>2026-04-23T12:40:00&#43;08:00</updated>
    <summary type="html">&lt;p&gt;如果你想在人生日记里使用腾讯云对象存储来保存图片或其他资源，那就需要先准备好几样东西，比如 &lt;code&gt;SecretId&lt;/code&gt;、&lt;code&gt;SecretKey&lt;/code&gt;、存储桶名称和区域代码。&lt;/p&gt;
&lt;p&gt;这些名字第一次看可能会有点绕，但你不用担心。你可以把它理解成一套“开门资料”，只要按顺序准备好，然后填到人生日记里，后面基本就能正常用了。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;重要提醒&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这篇文章里要获取的这些配置非常重要，尤其是 &lt;code&gt;SecretId&lt;/code&gt; 和 &lt;code&gt;SecretKey&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;你可以一时忘记把它们放在哪里，后面再重新找、重新配都行，但一定不要轻易发给别人，也不要随便截图给他人看。&lt;/p&gt;
&lt;p&gt;一旦这些信息泄露，别人就可能直接操作你的云资源，带来不必要的损失。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;这篇文章就是写给第一次接触这些内容的朋友看的。我尽量不用复杂说法，你跟着一步一步做就行。&lt;/p&gt;
&lt;h2 id=&#34;先说一下要做什么&#34;&gt;先说一下要做什么&lt;/h2&gt;
&lt;p&gt;整个过程其实可以分成 3 步：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;登录腾讯云并完成实名认证&lt;/li&gt;
&lt;li&gt;创建 API 密钥&lt;/li&gt;
&lt;li&gt;创建存储桶，并把信息填到人生日记里&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;只要这三步做完，腾讯云对象存储这部分就算配置完成了。&lt;/p&gt;
&lt;h2 id=&#34;第一步登录腾讯云&#34;&gt;第一步：登录腾讯云&lt;/h2&gt;
&lt;p&gt;先打开腾讯云登录页面：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://cloud.tencent.com/login&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;&lt;a href=&#34;https://cloud.tencent.com/login&#34;&gt;https://cloud.tencent.com/login&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;进入后，按你平时习惯的方式登录就可以。&lt;/p&gt;
&lt;p&gt;如果你还没有账号，就先注册一个。注册完成以后再回来继续后面的步骤。&lt;/p&gt;
&lt;p&gt;登录成功后，先不要急着找密钥，最好先把实名认证处理好。&lt;/p&gt;
&lt;h2 id=&#34;第二步完成实名认证&#34;&gt;第二步：完成实名认证&lt;/h2&gt;
&lt;p&gt;打开实名认证页面：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://console.cloud.tencent.com/developer/auth&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;&lt;a href=&#34;https://console.cloud.tencent.com/developer/auth&#34;&gt;https://console.cloud.tencent.com/developer/auth&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;然后按照页面提示完成认证。&lt;/p&gt;
&lt;p&gt;如果你是第一次使用腾讯云，这一步通常是必须的。没有完成实名认证，后面有些云服务可能没法正常开通或使用。&lt;/p&gt;
&lt;p&gt;下面这张图就是实名认证页面的大致位置：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://personal-1251959693.cos.ap-chengdu.myqcloud.com/2026-04-23-121605.png&#34; alt=&#34;实名认证页面&#34;&gt;&lt;/p&gt;
&lt;p&gt;认证完成后，就可以继续创建 API 密钥了。&lt;/p&gt;
&lt;h2 id=&#34;第三步进入-api-密钥管理页面&#34;&gt;第三步：进入 API 密钥管理页面&lt;/h2&gt;
&lt;p&gt;打开 API 密钥管理页面：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://console.cloud.tencent.com/cam/capi&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;&lt;a href=&#34;https://console.cloud.tencent.com/cam/capi&#34;&gt;https://console.cloud.tencent.com/cam/capi&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;进入后有个弹窗，勾选并确认就好。&lt;/p&gt;
&lt;p&gt;下面这张图就是相关提示：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://personal-1251959693.cos.ap-chengdu.myqcloud.com/2026-04-23-121924.png&#34; alt=&#34;密钥提醒弹窗&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;第四步创建-api-密钥&#34;&gt;第四步：创建 API 密钥&lt;/h2&gt;
&lt;p&gt;在 API 密钥管理页面里，找到【新建密钥】按钮并点击。&lt;/p&gt;
&lt;p&gt;你可以参考下面这张图里的位置：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://personal-1251959693.cos.ap-chengdu.myqcloud.com/2026-04-23-122032.png&#34; alt=&#34;新建密钥按钮&#34;&gt;&lt;/p&gt;
&lt;p&gt;点击以后，系统一般还会再弹一次提醒窗口，告诉你密钥的重要性。&lt;/p&gt;
&lt;p&gt;这个提醒也是正常流程，确认以后继续就可以。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://personal-1251959693.cos.ap-chengdu.myqcloud.com/2026-04-23-122117.png&#34; alt=&#34;新建密钥系统提醒&#34;&gt;&lt;/p&gt;
&lt;p&gt;创建成功后，你会看到密钥信息，其中最重要的是这两个：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;SecretId&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SecretKey&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这两个值后面要填到人生日记里，所以你现在就先把它们保存好。&lt;/p&gt;
&lt;p&gt;建议你复制到一个安全的地方，避免后面切页面时忘记。&lt;/p&gt;
&lt;p&gt;下面是创建成功后的示意图：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://personal-1251959693.cos.ap-chengdu.myqcloud.com/2026-04-23-122246.png&#34; alt=&#34;创建成功截图&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;第五步进入对象存储页面&#34;&gt;第五步：进入对象存储页面&lt;/h2&gt;
&lt;p&gt;有了 API 密钥以后，下一步要创建存储桶。&lt;/p&gt;</summary>
  </entry>
  
  <entry>
    <title>人生日记教程：获取 deepseek API 密钥</title>
    <link href="https://evolly.one/p/dskapi/"/>
    <id>https://evolly.one/p/dskapi/</id>
    <published>2026-04-23T10:47:57&#43;08:00</published>
    <updated>2026-04-23T10:47:57&#43;08:00</updated>
    <summary type="html">&lt;p&gt;如果你想在人生日记里使用 AI 功能，就需要先准备一个 DeepSeek 的 API 密钥。这个名字看起来有点唬人，但你可以把它理解成一把“钥匙”，有了它，人生日记才能连接到 DeepSeek 的服务。&lt;/p&gt;
&lt;p&gt;这篇文章就是写给第一次接触这些东西的朋友看的。我尽量不用复杂说法，你跟着一步一步做就行。&lt;/p&gt;
&lt;h2 id=&#34;先说一下要做什么&#34;&gt;先说一下要做什么&lt;/h2&gt;
&lt;p&gt;整个过程其实很简单，一共就 5 步：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;登录 DeepSeek 开放平台&lt;/li&gt;
&lt;li&gt;完成实名认证&lt;/li&gt;
&lt;li&gt;充值一点余额&lt;/li&gt;
&lt;li&gt;创建 API key&lt;/li&gt;
&lt;li&gt;把 key 填到人生日记里测试&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;只要前面这些步骤做完，后面基本就能正常用了。&lt;/p&gt;
&lt;h2 id=&#34;第一步登录-deepseek-开放平台&#34;&gt;第一步：登录 DeepSeek 开放平台&lt;/h2&gt;
&lt;p&gt;先打开这个地址：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://platform.deepseek.com/sign_in&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;&lt;a href=&#34;https://platform.deepseek.com/sign_in&#34;&gt;https://platform.deepseek.com/sign_in&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;进入后，你可以选择下面这两种方式登录：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;手机验证码登录&lt;/li&gt;
&lt;li&gt;微信扫码直接登录&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;选你觉得方便的就行。对于大多数人来说，哪种顺手就用哪种，没有区别。&lt;/p&gt;
&lt;p&gt;登录成功后，就说明第一步完成了。&lt;/p&gt;
&lt;h2 id=&#34;第二步完成实名认证&#34;&gt;第二步：完成实名认证&lt;/h2&gt;
&lt;p&gt;登录后，打开这个页面：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://platform.deepseek.com/profile&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;&lt;a href=&#34;https://platform.deepseek.com/profile&#34;&gt;https://platform.deepseek.com/profile&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;然后按页面提示去做实名认证。&lt;/p&gt;
&lt;p&gt;这一步一般是必须的，不做的话，后面可能没法正常充值，或者没法完整使用平台的功能。&lt;/p&gt;
&lt;p&gt;如果页面上有身份信息填写、姓名校验之类的提示，照着填就可以。提交完成后，等它通过。&lt;/p&gt;
&lt;h2 id=&#34;第三步充值&#34;&gt;第三步：充值&lt;/h2&gt;
&lt;p&gt;实名认证完成后，打开充值页面：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://platform.deepseek.com/top_up&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;&lt;a href=&#34;https://platform.deepseek.com/top_up&#34;&gt;https://platform.deepseek.com/top_up&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;按页面提示充值即可。&lt;/p&gt;
&lt;p&gt;如果你只是在人生日记里正常使用 AI，其实不需要充很多。DeepSeek 的 API 价格本来就比较便宜，先充 &lt;code&gt;10&lt;/code&gt; 块钱，通常就能用挺久。&lt;/p&gt;
&lt;p&gt;如果你后面用得多，再继续充值就行，没必要一开始充太多。&lt;/p&gt;
&lt;h2 id=&#34;第四步创建-api-key&#34;&gt;第四步：创建 API key&lt;/h2&gt;
&lt;p&gt;接下来是最关键的一步。&lt;/p&gt;
&lt;p&gt;打开这个页面：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://platform.deepseek.com/api_keys&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;&lt;a href=&#34;https://platform.deepseek.com/api_keys&#34;&gt;https://platform.deepseek.com/api_keys&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;进入后，找到并点击【创建 API key】按钮。&lt;/p&gt;
&lt;p&gt;点开以后，会弹出一个窗口，让你填写名称。&lt;/p&gt;
&lt;p&gt;这里的名称你可以随便填，比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;人生日记&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;我的笔记&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;deepseek-test&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这个名称不是密码，也不会影响使用效果，它只是方便你以后区分这个 key 是拿来做什么的。因为如果你以后创建了多个 key，名字太乱的话，自己也容易分不清。&lt;/p&gt;</summary>
  </entry>
  
  <entry>
    <title>为什么我把博客从 Hexo 迁移到 Hugo</title>
    <link href="https://evolly.one/p/1yx59a/"/>
    <id>https://evolly.one/p/1yx59a/</id>
    <published>2025-10-23T12:11:50&#43;08:00</published>
    <updated>2025-10-23T12:11:50&#43;08:00</updated>
    <summary type="html">&lt;p&gt;这几天没忍住折腾的劲，把博客从用了 快 10 年的 Hexo 迁移到了 Hugo。其实一开始我并不是想更换博客框架，我只是想写一个 Hexo 的博客发布器，通过 GitHub API 直接向仓库添加文件。然后在博客中我想新开一个 Memos 页面来展示这些类似碎碎念的想法。&lt;/p&gt;
&lt;p&gt;至于为什么我想写一个博客发布器，是因为我觉得还是将文字内容掌握在自己手中才是最靠谱的。&lt;/p&gt;
&lt;p&gt;博客发布器在 AI 帮助下很快就完成并且可以正常使用：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://personal-1251959693.cos.ap-chengdu.myqcloud.com/blog/images/image-20251023111414891.png&#34; alt=&#34;image-20251023111414891&#34;&gt;&lt;/p&gt;
&lt;p&gt;然后配合 Cloudflare 的自动构建，流程很快顺利跑通了，但是实际使用中，我发现 Hexo 构建实在太慢了，从构建记录来看，每次要 2 分 30 秒左右。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://personal-1251959693.cos.ap-chengdu.myqcloud.com/blog/images/image-20251023113010042.png&#34; alt=&#34;image-20251023113010042&#34;&gt;&lt;/p&gt;
&lt;p&gt;这只是构建时间，加上触发，代码拉取发布等时间，实际页面上看到得三四分钟后（当然，其实用这种方式之前，就应该做好这个觉悟，这种方式注定及时性没那么高，但人偏偏就喜欢追求及时反馈）。&lt;/p&gt;
&lt;p&gt;于是我脑海中重新冒出了使用 Hugo 的想法，之前了解过，但觉得折腾这个没有比较，那点速度对我来说无关痛痒，一年也写不了几篇文章，于是就被搁置。但现在不一样了，有了这个发布器后，手机上随时都能写一些东西，更新的频率大大提升，所以每次构建的等待就很让我难受。所以一咬牙，就决定把博客从 Hexo 迁移到 Hugo。&lt;/p&gt;
&lt;p&gt;实际迁移下来，其实没遇到很多问题，主要是 AI 帮了很大的忙，我之前的博客比较简单，主要就是一些文章，图片用的腾讯云图床，所以也没什么资源文件，只需要把博客头部的格式转换一下基本就可以直接用到 Hugo，AI 一出手轻轻松松。然后就是安装一下 Hugo 的环境，跟个官方文档，一个命令行的事情，然后初始化站点，选择一个主题（Hugo 没有默认主题，所以必须选择一个主题才能看到页面）。接着就是提交到 GitHub，Cloudflare 添加 Pages，然后把域名转移到这个新的页面，迁移就结束了。&lt;/p&gt;
&lt;p&gt;现在 Hugo 的构建速度基本在 22 秒左右，比 Hexo 整整快了 2 分钟，可以说是很大的提升。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://personal-1251959693.cos.ap-chengdu.myqcloud.com/blog/images/image-20251023113047178.png&#34; alt=&#34;image-20251023113047178&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;结语&#34;&gt;结语&lt;/h2&gt;
&lt;p&gt;曾经也一直想过怎么可以比较方便地发布 Hexo 博客，尝试过通过 Obsidian，但是体验并不好，并且 Obsidian 本身的多端同步就有问题，这次突然从以前的项目中获取到了灵感，不如通过 API 直接向仓库写内容，配合自动构建，发布文章简单许多，并且 web 自带多端属性，做好页面适配就好。我觉得这才是 Hexo、Hugo 这类静态博客发布文章的终极形态，虽然有一定门槛，但也不比 Obsidian 折腾 git 插件难多少，就是获取一些 key，token 之类的比较麻烦。同时我还将发布器做成 PWA 应用，就像使用 app 一样，想写了打开随时写，或者先写到其他地方，比如 flomo，备忘录，然后复制粘贴到发布器发布就好了。&lt;/p&gt;</summary>
  </entry>
  
  <entry>
    <title>fnOS 中使用 Docker 安装 n8n 中文版</title>
    <link href="https://evolly.one/p/6730/"/>
    <id>https://evolly.one/p/6730/</id>
    <published>2025-10-17T17:45:43&#43;08:00</published>
    <updated>2025-10-17T17:45:43&#43;08:00</updated>
    <summary type="html">&lt;p&gt;最近想使用工作流让 AI 帮我处理一些事情，于是我就想到了 n8n，刚好前阵子把家里闲置的主机弄成了 fnOS，性能对比之前的群晖 DS218 play 可以说是一个天上一个地下，深切感受到了：“原来外面的世界这么美好”。&lt;/p&gt;
&lt;p&gt;话不多说，上流程。&lt;/p&gt;
&lt;h2 id=&#34;环境说明&#34;&gt;环境说明&lt;/h2&gt;
&lt;p&gt;fnOS 版本为 &lt;code&gt;V0.9.30&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://personal-1251959693.cos.ap-chengdu.myqcloud.com/blog/images/image-20251020103134105.png&#34; alt=&#34;image-20251020103134105&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;准备工作&#34;&gt;准备工作&lt;/h2&gt;
&lt;h3 id=&#34;1-更换镜像源非必需&#34;&gt;1. 更换镜像源（非必需）&lt;/h3&gt;
&lt;p&gt;如果你没有更换过飞牛的镜像源，使用的还是默认的镜像源，可能会有一些问题，比如我就遇到了 n8n 的镜像一下载完，但是本地就是不显示的问题，后来发现是镜像源的问题，换了就好了，更换方式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;打开 Docker&lt;/li&gt;
&lt;li&gt;左侧切换到【镜像仓库】菜单&lt;/li&gt;
&lt;li&gt;右上角【设置】-【加速源设置】&lt;/li&gt;
&lt;li&gt;【添加】，添加地址为&lt;code&gt;https://docker.1ms.run&lt;/code&gt;，备注随便&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://personal-1251959693.cos.ap-chengdu.myqcloud.com/blog/images/image-20251020103300670.png&#34; alt=&#34;image-20251020103300670&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;2-下载-n8n-镜像&#34;&gt;2. 下载 n8n 镜像&lt;/h3&gt;
&lt;p&gt;在【镜像仓库】搜索 n8n，下载名为&lt;code&gt;n8nio/n8n&lt;/code&gt;的镜像，一般是第一个。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://personal-1251959693.cos.ap-chengdu.myqcloud.com/blog/images/image-20251020103402482.png&#34; alt=&#34;image-20251020103402482&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;3-创建目录&#34;&gt;3. 创建目录&lt;/h3&gt;
&lt;p&gt;打开飞牛的【文件管理】应用，左侧切换到【我的文件】，在这个目录下新建一个【Docker】的文件夹（如果没有的话），再在【Docker】目录下新建一个【n8n】文件夹，再在【n8n】下新建一个【n8n_data】文件夹。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://personal-1251959693.cos.ap-chengdu.myqcloud.com/blog/images/image-20251020103523146.png&#34; alt=&#34;image-20251020103523146&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;4-下载汉化数据&#34;&gt;4. 下载汉化数据&lt;/h3&gt;
&lt;p&gt;在 &lt;a href=&#34;https://github.com/other-blowsnow/n8n-i18n-chinese/releases&#34;&gt;https://github.com/other-blowsnow/n8n-i18n-chinese/releases&lt;/a&gt; 下载最新的 Source code，解压后，将【editor-ui-dist】改名为【zh-cn】，然后将这个改名后的文件夹上传到刚刚创建的【n8n】目录下，与【n8n_data】同级。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://personal-1251959693.cos.ap-chengdu.myqcloud.com/blog/images/image-20251020103923167.png&#34; alt=&#34;image-20251020103923167&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://personal-1251959693.cos.ap-chengdu.myqcloud.com/blog/images/image-20251020104151449.png&#34; alt=&#34;image-20251020104151449&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;5-配置-n8n-启动&#34;&gt;5. 配置 n8n 启动&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;回到 【Docker】应用，左侧切到【本地镜像】标签，刚才下载的 n8n 镜像应该就在其中，点击启动按钮&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://personal-1251959693.cos.ap-chengdu.myqcloud.com/blog/images/image-20251020104254963.png&#34; alt=&#34;image-20251020104254963&#34;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;填上容器名称，其他配置根据自己需求，我只勾选了【开机自动启动】，点击下一步&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://personal-1251959693.cos.ap-chengdu.myqcloud.com/blog/images/image-20251020104342435.png&#34; alt=&#34;image-20251020104342435&#34;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;高级设置中的【存储位置】设置，新增两条映射：&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;选择【n8n_data】目录，后面的地址填上&lt;code&gt;/home/node/.n8n&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;选择【zh-cn】目录，后面的地址填上&lt;code&gt;/usr/local/lib/node_modules/n8n/node_modules/n8n-editor-ui/dist&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://personal-1251959693.cos.ap-chengdu.myqcloud.com/blog/images/image-20251020104457449.png&#34; alt=&#34;image-20251020104457449&#34;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;再在环境变量设置中新增两条环境变量&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;N8N_SECURE_COOKIE&lt;/code&gt; 设置为 &lt;code&gt;false&lt;/code&gt;（如果你在本地使用，需要添加这条，如果你的设备已经配置好了https，可以不设置这条环境变量）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;N8N_DEFAULT_LOCALE&lt;/code&gt; 设置为 &lt;code&gt;zh-CN&lt;/code&gt;（中文显示）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;​	&lt;img src=&#34;https://personal-1251959693.cos.ap-chengdu.myqcloud.com/blog/images/image-20251020104613706.png&#34; alt=&#34;image-20251020104613706&#34;&gt;&lt;/p&gt;
&lt;ol start=&#34;5&#34;&gt;
&lt;li&gt;点击【创建】&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;6-启动&#34;&gt;6. 启动&lt;/h3&gt;
&lt;p&gt;【Docker】应用切到【容器】标签，然后将鼠标放到链接图标上，会出现运行端口，点击端口就会打开项目。或者直接使用&lt;code&gt;http://[nas IP]:5678&lt;/code&gt;直接访问。默认端口为5678，如果你改动过就使用你改后的端口。&lt;/p&gt;</summary>
  </entry>
  
  <entry>
    <title>uniapp 中 v-for 循环内 input 输入时自动失焦问题</title>
    <link href="https://evolly.one/p/145/"/>
    <id>https://evolly.one/p/145/</id>
    <published>2025-09-01T16:53:45&#43;08:00</published>
    <updated>2025-09-01T16:53:45&#43;08:00</updated>
    <summary type="html">&lt;p&gt;最近在开发一个商品管理系统时遇到了一个奇怪的问题：在使用 uniapp 开发的页面中，有一个商品列表，每个商品都有数量输入框，但是在输入框中输入数字时，每输入一个字符，输入框就会自动失去焦点，用户体验非常糟糕。&lt;/p&gt;
&lt;h2 id=&#34;问题场景&#34;&gt;问题场景&lt;/h2&gt;
&lt;p&gt;具体场景是这样的：用户扫描商品二维码后，会在 &lt;code&gt;productList&lt;/code&gt; 数组中添加一个商品对象，每个商品对象都包含商品信息和数量字段，数量字段与 input 输入框进行双向绑定。用户需要在输入框中修改商品数量，但每次输入都会导致输入框失焦。&lt;/p&gt;
&lt;h2 id=&#34;错误代码&#34;&gt;错误代码&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;view&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;v-for&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;(item, i) in productList&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;:key&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;item&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;view&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;class&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;product-item&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;view&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;class&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;label-section&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;text&lt;/span&gt;&amp;gt;商品数量&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;text&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;text&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;class&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;required-mark&amp;#34;&lt;/span&gt;&amp;gt;*&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;text&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;view&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;input&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#a6e22e&#34;&gt;v-model&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;item.quantity&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#a6e22e&#34;&gt;class&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;quantity-input&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#a6e22e&#34;&gt;placeholder&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;请输入数量&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#a6e22e&#34;&gt;type&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;number&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;@&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;input&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;updateQuantity($event, i)&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;text&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;class&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;unit-text&amp;#34;&lt;/span&gt;&amp;gt;件&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;text&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;view&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;view&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;updateQuantity&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;e&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;i&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;value&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;e&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;e&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;detail&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;value&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;$nextTick&lt;/span&gt;(() =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;productList&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;productList&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;map&lt;/span&gt;((&lt;span style=&#34;color:#a6e22e&#34;&gt;v&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;index&lt;/span&gt;) =&amp;gt; ({
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      ...&lt;span style=&#34;color:#a6e22e&#34;&gt;v&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#a6e22e&#34;&gt;quantity&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; parseInt(&lt;span style=&#34;color:#a6e22e&#34;&gt;i&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;===&lt;/span&gt; parseInt(&lt;span style=&#34;color:#a6e22e&#34;&gt;index&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;?&lt;/span&gt; parseInt(&lt;span style=&#34;color:#a6e22e&#34;&gt;value&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;v&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;quantity&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }));
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  });
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;},
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;问题原因&#34;&gt;问题原因&lt;/h2&gt;
&lt;p&gt;问题的根本原因在于 &lt;code&gt;v-for&lt;/code&gt; 中的 &lt;code&gt;:key=&amp;quot;item&amp;quot;&lt;/code&gt; 设置不当。当 input 数据发生变化并触发模型更新后，Vue 需要重新渲染列表项。由于 key 值绑定的是整个 item 对象，而 item 对象中的 quantity 属性发生了变化，导致 Vue 认为这是一个新的列表项，从而重新创建了整个 view 组件，包括其中的 input 元素。&lt;/p&gt;</summary>
  </entry>
  
  <entry>
    <title>我用 Cursor 开发了一个在线图片处理工具，希望能帮你提升效率</title>
    <link href="https://evolly.one/p/48077/"/>
    <id>https://evolly.one/p/48077/</id>
    <published>2025-05-06T16:53:45&#43;08:00</published>
    <updated>2025-05-06T16:53:45&#43;08:00</updated>
    <summary type="html">&lt;h2 id=&#34;trimspace我做了一个在线图片处理工具希望能帮你提升效率&#34;&gt;TrimSpace：我做了一个在线图片处理工具，希望能帮你提升效率&lt;/h2&gt;
&lt;p&gt;平时无论是写博客、做分享，还是日常工作中，图片处理总是免不了的一个环节。有时候只是想简单裁剪一下图片、转换个格式，或者批量调整一下尺寸，却常常需要打开庞大的桌面软件，或者在各种在线工具间反复横跳，体验不佳，效率也不高。特别是处理一些私密图片时，总担心上传到服务器后的安全问题。&lt;/p&gt;
&lt;p&gt;基于这些痛点和思考，我利用业余时间开发了一款名为 TrimSpace 的在线图片处理工具。我的初衷很简单：打造一个像流水线一样高效、安全、便捷的图片处理工具，让大家可以专注于创作本身，而不是在繁琐的图片处理上浪费时间。&lt;/p&gt;
&lt;p&gt;你可以在这里访问它：&lt;a href=&#34;https://trimspace.online/zh&#34;&gt;trimspace.online&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;trimspace-能做什么&#34;&gt;TrimSpace 能做什么？&lt;/h3&gt;
&lt;p&gt;TrimSpace 集合了我认为最常用也最核心的一些图片处理功能，并且会持续迭代和完善。目前它的主要特性包括：&lt;/p&gt;
&lt;h4 id=&#34;1强大的批量处理能力&#34;&gt;1. 强大的批量处理能力&lt;/h4&gt;
&lt;p&gt;这是我个人非常喜欢也觉得非常实用的一个功能。想象一下，当你有几十甚至上百张图片需要统一调整大小、转换格式，或者应用同一种滤镜效果时，一张张手动处理简直是噩梦。&lt;/p&gt;
&lt;p&gt;TrimSpace 的批量处理功能可以让你：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;一次上传多张图片：直接拖拽或选择文件，非常方便。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;统一参数设置：无论是尺寸、格式还是其他处理选项，只需设置一次。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一键应用到所有图片：瞬间完成所有处理，大幅提升效率。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这个功能在我处理博客配图、整理相册时帮了大忙，希望也能帮到你。&lt;/p&gt;
&lt;h4 id=&#34;2-灵活自由的裁剪工具&#34;&gt;2. 灵活自由的裁剪工具&lt;/h4&gt;
&lt;p&gt;裁剪是图片处理中最常见的需求之一。TrimSpace 提供了非常灵活的裁剪工具：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;自定义尺寸和比例：你可以输入精确的像素值，或者选择常用的宽高比，如1:1, 16:9, 4:3等。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;精确的位置调整：通过拖拽和调整选框，可以精确控制裁剪区域。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;实时预览：调整过程中可以实时看到裁剪后的效果。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;无论是社交媒体配图、文章插图，还是个人头像，都能轻松裁剪出完美适配的尺寸。&lt;/p&gt;
&lt;h4 id=&#34;3-广泛的多格式支持&#34;&gt;3. 广泛的多格式支持&lt;/h4&gt;
&lt;p&gt;不同的平台和场景对图片格式有不同的要求。TrimSpace 支持多种主流图片格式的输入和输出：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;输入支持：PNG, JPG/JPEG, WebP, AVIF, SVG。值得一提的是，SVG格式会被转换为PNG进行后续处理。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;输出支持：PNG, JPEG, WebP, ICO。你可以根据需求灵活选择导出的格式，并且可以调节JPEG和WebP的压缩质量。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这意味着你可以轻松地将图片转换为最适合的格式，例如将高兼容性的JPG转换为体积更小、画质更优的WebP格式。&lt;/p&gt;
&lt;h4 id=&#34;4-用户数据安全至上&#34;&gt;4. 用户数据安全至上&lt;/h4&gt;
&lt;p&gt;我知道，很多人在处理图片时，尤其是涉及个人隐私或商业敏感内容的图片，会非常担心数据安全问题。“我的图片上传到服务器了吗？会不会被泄露？”&lt;/p&gt;
&lt;p&gt;在设计 TrimSpace 时，我将用户数据安全放在了首位。除了ICO格式的转换因为技术特殊性需要在服务器端处理外，其他所有的图片处理操作（包括裁剪、缩放、滤镜、格式转换等）都是在你的浏览器本地完成的！ 这意味着图片数据根本不会离开你的电脑，极大地降低了数据泄露的风险。我们不存储用户的任何图片（ICO转换完成后也会立即删除），你可以放心使用。&lt;/p&gt;
&lt;h4 id=&#34;5-无需注册即开即用&#34;&gt;5. 无需注册，即开即用&lt;/h4&gt;
&lt;p&gt;我希望 TrimSpace 是一个尽可能降低使用门槛的工具。因此：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;无需注册：打开网站就能直接使用。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;免费基础功能：对于未登录的用户，每天可以免费处理3张图片，对于大部分临时性的需求应该足够了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;登录后无限制：如果你需要处理更多图片，可以选择登录，登录后将不再有处理数量的限制。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;我希望这种方式能够让更多人方便快捷地体验到 TrimSpace 的便利。&lt;/p&gt;
&lt;h4 id=&#34;6-现代化的浏览体验&#34;&gt;6. 现代化的浏览体验&lt;/h4&gt;
&lt;p&gt;TrimSpace 兼容所有主流的现代浏览器，如 Chrome, Firefox, Safari, Edge 等。我们采用了响应式设计，无论你是在PC端还是平板设备上，都能获得流畅的操作体验。&lt;/p&gt;</summary>
  </entry>
  
  <entry>
    <title>你好呀，2025</title>
    <link href="https://evolly.one/p/49269/"/>
    <id>https://evolly.one/p/49269/</id>
    <published>2024-12-31T22:13:01&#43;08:00</published>
    <updated>2024-12-31T22:13:01&#43;08:00</updated>
    <summary type="html">&lt;p&gt;2024 年的最后一天，还是想照常来写一篇年终总结。&lt;/p&gt;
&lt;p&gt;今年对我来说是打击非常大的一年，因为工作，上半年直接半年没有收入，下半年靠着前同事才稳住脚步，但是生活上依旧非常难受，没有安全感，像被掐着脖子过了一年，呼吸困难，但是也死不了，有好几次差点崩溃，这种月光没有安全感的日子对我来说太难太难受了。但这也让我明白了很多，以我的条件，靠打工是没有出路的，况且经过连着两家公司欠薪，已经彻底对打工失去了信心，所以只能另寻他路，但现在也还没有头绪。&lt;/p&gt;
&lt;p&gt;今年跟咪咪也收获了很多快乐，年初 1 月 23 日的时候提了深蓝，虽然提车一小时后就出险，然后开进了 4S 店，但是后来它陪伴我们走遍了杭州周边，最远只跑到过上海，获取千岛湖更远。截止今天，它陪我们走过了 18918.4KM，明年，希望我们能去更多更远的地方，我想开着它跟咪咪去更多的省份，去体验更多。&lt;/p&gt;
&lt;p&gt;今年咪咪去了三次日本，每次回来都会千辛万苦回一大堆零食酒水，很感动。现在她正在日本跨着年，她会比我早一小时进入 2025 年，我将在国内 11 点的时候向她送上祝福。&lt;/p&gt;
&lt;p&gt;0 点的时候我们同时送上了祝福。我觉得自己正在改变，变得更有仪式感。其实说自己没有仪式感我是不认可的，我觉得自己是一个注重仪式感的人，只是我认为的仪式感，是我会为时间沉淀而来的事物，献上仪式感，比如经过时间沉淀的感情，而咪咪觉得的仪式感是平时各种小节日之类的，以前我觉得没必要，或者说会排斥，每年都是类似的过，过这种节日完全没意思，我想在普通的生活中去创造我俩的仪式感，去纪念独属于我们的纪念日。但是现在每逢过节看到别人发的朋友圈，不知道是不是出于攀比，我也会想让咪咪在节日有这样的氛围，因为她喜欢。所以今年新年，我想布置一下家里，让家里有一些新年的氛围，增添一些喜庆的元素。&lt;/p&gt;
&lt;p&gt;前天的时候我妈夜班下班，不小心被电线绊倒，左边膝盖髌骨粉碎性骨折，明天早上 10 点多就要动手术了，希望手术顺利，在 2025 开个好头，2025 低开高走。&lt;/p&gt;
&lt;p&gt;2025，万事顺遂。朋友家人都能身体健康，永远快乐，真的快乐。&lt;/p&gt;</summary>
  </entry>
  
  <entry>
    <title>Sourcetree 报错 PuTTY&#39;s cache and carry on connecting</title>
    <link href="https://evolly.one/p/56019/"/>
    <id>https://evolly.one/p/56019/</id>
    <published>2024-09-20T22:56:38&#43;08:00</published>
    <updated>2024-09-20T22:56:38&#43;08:00</updated>
    <summary type="html">&lt;h2 id=&#34;前因&#34;&gt;前因&lt;/h2&gt;
&lt;p&gt;前几天在公司还了一台电脑，重新安装了开发环境，然后用 SourceTree 推代码的时候报错了，想起来上一台电脑刚用的时候也出现过这个问题，所以记录一下。&lt;/p&gt;
&lt;h2 id=&#34;错误信息&#34;&gt;错误信息&lt;/h2&gt;
&lt;p&gt;&lt;img src=&#34;http://personal-1251959693.cos.ap-chengdu.myqcloud.com/2024-09-20-150207.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git -c diff.mnemonicprefix&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;false -c core.quotepath&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;false --no-optional-locks fetch --no-tags origin
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;The host key is not cached &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; this server:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gitee.com &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;port 22&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;You have no guarantee that the server is the computer
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;you think it is.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;The server&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;s ssh-ed25519 key fingerprint is:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;ssh-ed25519 255 SHA256:+ULzij2u99B9eWYFTw1Q4ErYG/aepHLbu96xxxxxxxxx
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;If you trust this host, enter &amp;#34;y&amp;#34; to add the key to
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;完成时带有错误，见上文。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;PuTTY&amp;#39;&lt;/span&gt;s cache and carry on connecting.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;If you want to carry on connecting just once, without
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;adding the key to the cache, enter &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;n&amp;#34;&lt;/span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;If you &lt;span style=&#34;color:#66d9ef&#34;&gt;do&lt;/span&gt; not trust this host, press Return to abandon the
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;connection.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Store key in cache? &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;y/n, Return cancels connection, i &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; more info&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;解决办法&#34;&gt;解决办法&lt;/h2&gt;
&lt;p&gt;选择【工具】，然后点击【选项】。 然后在【SSH客户端】更换成 openSSH ，然后就可以推拉代码了。&lt;/p&gt;</summary>
  </entry>
  
  <entry>
    <title>关闭 Google 智能镜头</title>
    <link href="https://evolly.one/p/32182/"/>
    <id>https://evolly.one/p/32182/</id>
    <published>2024-08-29T00:09:19&#43;08:00</published>
    <updated>2024-08-29T00:09:19&#43;08:00</updated>
    <summary type="html">&lt;p&gt;前几天手贱不小心把 Google 智能镜头给打开了，然后就发现它在我浏览网页的时候时不时地就弹出来，我本身不使用这个功能，但这个东西我感觉应该还是要占用一定系统资源的，所以想着将它关闭，网上找了一圈教程，方法挺多，但是随着 chrome 更新，有些教程上的的方法不一定准确，所以这里记录一下我自己的方法。&lt;/p&gt;
&lt;h2 id=&#34;关闭-google-智能镜头&#34;&gt;关闭 Google 智能镜头&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;chrome 访问 &lt;a href=&#34;chrome://flags/&#34;&gt;chrome://flags/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;在顶部搜索框搜索 &lt;code&gt;Lens&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;将 &lt;code&gt;Lens overlay&lt;/code&gt; 设置为 &lt;code&gt;Disabled&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;http://personal-1251959693.cos.ap-chengdu.myqcloud.com/2024-09-02-HapiGo%20%E5%89%AA%E8%B4%B4%E6%9D%BF%20-%202024-9-2%2023.10.25.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;这样就关闭了 Google 智能镜头。&lt;/p&gt;</summary>
  </entry>
  
  <entry>
    <title>Cursor 搭配 DeepSeek，给你丝滑的体验</title>
    <link href="https://evolly.one/p/38281/"/>
    <id>https://evolly.one/p/38281/</id>
    <published>2024-08-18T12:16:34&#43;08:00</published>
    <updated>2024-08-18T12:16:34&#43;08:00</updated>
    <summary type="html">&lt;p&gt;第一次知道 Cursor 的时候还是它刚出来的时候，那时候的它非常简陋，侧边栏只有一个目录树，另一个是搜索栏还是什么，我对它的第一印象是：Sublime + Github Copilot，功能非常地简单，甚至可以说是简陋，体验一番后就将它卸载了。&lt;/p&gt;
&lt;p&gt;最近，网上 Cursor 的声音又多起来了，在 X 上，订阅的 Newsletter 中有看到有不少人提起 Cursor，现在它已经与 VS Code 融为一体，可以做到无缝切换，这让我有了兴趣，毕竟 VS Code 是我的主力编辑器，如果它体验可以做到跟 VS Code 一样，再加上它 AI 上的加持，那么我很有可能将主力编辑器替换为 Cursor。&lt;/p&gt;
&lt;p&gt;一番试用之后，让我有些惊喜，我在 VS Code 上试用的是 Codeium 插件，但是这个插件对网络要求比较高，哪怕我挂着代理，还是会经常出现问题。而 Cursor 是直接在编辑器中集成了 AI，效率比插件高很多，体验也更为丝滑。&lt;/p&gt;
&lt;p&gt;Cursor 可以通过开通订阅使用它内置的各家的 AI 模型：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://personal-1251959693.cos.ap-chengdu.myqcloud.com/2024-08-18-043514.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;但是 Cursor 的订阅价格比较贵，后来我怕发现它支持自定义 OpenAI API，而DeepSeek 兼容 OpenAI API，下面是设置教程：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://personal-1251959693.cos.ap-chengdu.myqcloud.com/2024-08-18-044258.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;点击编辑器右上角齿轮，打开设置界面。&lt;/li&gt;
&lt;li&gt;点击设置界面左侧 Models。&lt;/li&gt;
&lt;li&gt;点击 Add models，DeepSeek 目前有两种模型：&lt;code&gt;deepseek-chat&lt;/code&gt; 与 &lt;code&gt;deepseek-coder&lt;/code&gt;，可以都加上，然后根据实际情况使用（使用过程中可以切换语言模型）。&lt;/li&gt;
&lt;li&gt;在下方 OpenAI API Key 处填入 DeepSeek 的 Key，DeepSeek 的 Key 可以在 &lt;a href=&#34;https://platform.deepseek.com/api_keys&#34;&gt;Deepseek 开放平台&lt;/a&gt;生成。&lt;/li&gt;
&lt;li&gt;点击 Override OpenAI Base URL，在下方输入框输入&lt;code&gt;https://api.deepseek.com/v1&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;点击 Verify 按钮验证是否正常，验证后可能会出现一个提示，大致意思是你订阅了 Pro 就可以不使用自定义 API 了，忽略就行，然后就可以正常试用了。
使用效果：&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;http://personal-1251959693.cos.ap-chengdu.myqcloud.com/2024-08-18-045854.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;</summary>
  </entry>
  
</feed>