<?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>2025-12-24T07:58:38Z</updated>
  <id>https://evolly.one/</id>
  <author>
    <name>Tit1e</name>
  </author>
  <generator uri="https://gohugo.io/">Hugo</generator>
  
  <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>
  
  <entry>
    <title>国内银行现状</title>
    <link href="https://evolly.one/p/61808/"/>
    <id>https://evolly.one/p/61808/</id>
    <published>2024-02-05T17:40:54&#43;08:00</published>
    <updated>2024-02-05T17:40:54&#43;08:00</updated>
    <summary type="html">&lt;p&gt;上个月我妈给我去银行转账，算是见识到了银行踢皮球的能力。&lt;/p&gt;
&lt;p&gt;首先我妈的钱是存在存折里，农商银行，那天我妈把钱都取出来，想直接转我中国银行卡，不过有一笔 50 左右的手续费，柜员建议我妈去农业银行转，这样可以省下这比手续费。我妈平时省吃俭用，如果只是花点时间就能省下 50 块钱，自然是会采用这种方案。哪怕是我也会毫不犹豫去其他地方转，因为另一个银行只相距几百米，电动车马上就能到。&lt;/p&gt;
&lt;p&gt;于是我妈先回家翻了一通农业银行卡，等我妈到了农业银行，银行的柜员说不行，建议我妈直接去中国银行，相当于直接去往我卡里存钱，我妈也懒得跟柜员撤，想着去一趟算了，虽然中国银行在隔壁镇。期间，我妈还开错路，走了回头路。&lt;/p&gt;
&lt;p&gt;结果到了中国银行说也不行，虽然我不知道具体原因，难道是因为没有实体卡所以不行？通过我妈的转述，我也不敢肯定具体原因是什么，毕竟我亲眼见识过我妈的转述能力。&lt;/p&gt;
&lt;p&gt;最后我妈受不了，还是去了农商银行，交了 42 块的手续费。耗时好几个小时，提心吊胆带着十几万现金，吹了一路冷风，那天还刚好是最冷的一天，零下五六度，电瓶车还骑没电，确实让人生气。&lt;/p&gt;
&lt;p&gt;到现在我也还是不知道农业银行跟中国银行为什么不行。是柜员嫌麻烦，糊弄一下不懂的老年人，还是有其他真的无法办理的原因，我不得而知。&lt;/p&gt;</summary>
  </entry>
  
  <entry>
    <title>刻录 iStoreOS 系统记录</title>
    <link href="https://evolly.one/p/24776/"/>
    <id>https://evolly.one/p/24776/</id>
    <published>2024-01-08T22:00:41&#43;08:00</published>
    <updated>2024-01-08T22:00:41&#43;08:00</updated>
    <summary type="html">&lt;h2 id=&#34;前提&#34;&gt;前提&lt;/h2&gt;
&lt;p&gt;上周日将家里的拨号软路由拆了，我用的软路由是之前在前年 5 月份买的 R2S，因为最近家里的科学上网老不稳定，周日折腾了好久依旧不行，加上最新版的 Apple TV现在可以用代理了，可以完美地将它设置成旁路由，所以想了想就把软路由拆了。&lt;/p&gt;
&lt;p&gt;本文仅做记录，以便将来再次折腾时查阅。&lt;/p&gt;
&lt;h2 id=&#34;环境&#34;&gt;环境&lt;/h2&gt;
&lt;p&gt;&lt;img src=&#34;https://personal-1251959693.cos.ap-chengdu.myqcloud.com/2024-01-08-Xnip2024-01-08_22-14-32.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;使用软件&#34;&gt;使用软件&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://etcher.balena.io/&#34;&gt;balenaEtcher - Flash OS images to SD cards &amp;amp; USB drives&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;硬件&#34;&gt;硬件&lt;/h2&gt;
&lt;p&gt;TF 卡读卡器&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;打开 &lt;a href=&#34;https://fw.koolcenter.com/iStoreOS/&#34;&gt;KoolCenter 固件下载服务器&lt;/a&gt;，进入对应软路由型号的目录，&lt;code&gt;.img.gz&lt;/code&gt; 结尾的文件就是镜像文件，选择想要的镜像文件下载，一般选择最新的镜像，可以从文件名上的时间戳来或后面的上传时间判断。
&lt;img src=&#34;https://personal-1251959693.cos.ap-chengdu.myqcloud.com/2024-01-08-Xnip2024-01-08_22-24-13.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;2烧录镜像&#34;&gt;2.烧录镜像&lt;/h3&gt;
&lt;p&gt;2.1 TF 开插入读卡器，读卡器插入电脑 USB 接口。
2.2 打开 balenaEtcher，点击【从文件烧录】，选择下载的镜像。
2.3 接着选择目标磁盘，记得确认磁盘大小，确保没有选错。系统盘一般是隐藏的。
&lt;img src=&#34;https://personal-1251959693.cos.ap-chengdu.myqcloud.com/2024-01-08-143028.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;然后点击开始烧录即可，一开始需要你输入一下开机密码进行验证，然后就是刻录，刻录完还会进行一次验证，最后会弹出一个弹窗，选择推出。
&lt;img src=&#34;https://personal-1251959693.cos.ap-chengdu.myqcloud.com/2024-01-08-143401.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;到这里就完成了 iStore OS 镜像的刻录，很简单，跟 U 盘刻录 windows 系统差不多。&lt;/p&gt;
&lt;h2 id=&#34;istore-os--其他说明&#34;&gt;iStore OS  其他说明&lt;/h2&gt;
&lt;p&gt;iStore OS 的默认管理地址是 &lt;strong&gt;192.168.100.1&lt;/strong&gt;，默认账号密码是 root/password。&lt;/p&gt;
&lt;p&gt;iStore OS 手动安装的插件，无法通过商店卸载，需要通过终端命令行卸载：&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ssh root@192.168.100.1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;IP 根据实际情况调整。&lt;/p&gt;
&lt;p&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;opkg list_installed
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;is-opkg remove &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;nps&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;luci-app-nps&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;luci-i18n-nps-zh-cn&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;app-meta-nps&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;上面命令是批量卸载应用，单个卸载只需要填对应的应用名称。&lt;/p&gt;</summary>
  </entry>
  
</feed>