skip to content
声控烤箱 | KazooTTT 博客

Notes(115) RSS feed

1. [日记] 2025-03-06 星期四

长期任务和目标

今天要做的事情

  • 性能优化
  • OSS 加密算法的 key 重新生成一下
  • 检查一下在线模式下的直接开始手术
  • Vue flow 练习

值得分享的事情

资料收集

打卡

今天记录的内容

list file.ctime
from ""
where dateformat(file.ctime, "yyyy-MM-dd") = "2025-03-06"
sort file.ctime desc

memos

  • 10:23 如何配置 lint 让 vscode 编辑 md 的时候实现在英文的前后有空格。使用 pangu 插件

  • 15:01 Picgo + cloudflare R2 报错

    renmu123/obsidian-image-auto-upload-plugin: auto upload image with picgo

    \Uncaught TypeError: Cannot read properties of null (reading 'getValue')
    at Helper. GetValue (plugin: obsidian-image-auto-upload-plugin:6133:23)
    at imageAutoUploadPlugin. UploadAllFile (plugin: obsidian-image-auto-upload-plugin:6585:35)
    at Object. CheckCallback (plugin: obsidian-image-auto-upload-plugin:6416:30)
    at pW (app. Js:1:1967020)
    at t.onChooseItem (app. Js:1:2614262)
    at t.onChooseSuggestion (app. Js:1:1796358)
    at t.selectSuggestion (app. Js:1:1795828)
    at e.useSelectedItem (app. Js:1:1378470)
    at Object. Func (app. Js:1:1375868)
    at e.handleKey (app. Js:1:773817)

    结果发现只是因为 token 到期了
    Snipaste_2025-03-06_14-51-41

  • 15:09 把 cursor 的订阅停掉了,试用一下免费的 copilot

2. [日记] 2025-03-05 星期三

Updated:

长期任务和目标

今天要做的事情

值得分享的事情

资料收集

打卡

今天记录的内容

list file.ctime
from ""
where dateformat(file.ctime, "yyyy-MM-dd") = "2025-03-05"
sort file.ctime desc

memos

  • 10:16 坚果云免费版对于 cherry studio 频繁同步的场景不太够用
    感觉得找个别的支持 webdav 的网盘

    ​​​ IMG-4E7CA2B2820C13BC264E9520D61AEA71

    IMG-CEE59951BA3BB4CA797AE4C3A79CF229 IMG-0ED8EABB243959CF7C1FD45311857231
  • 10:37 其实一直分不清楚 last name, first name
    有什么记忆的方法吗
    Last name 是姓, First name 是名

  • 13:52 如果视频没有泰语字幕 Huggingface 的 whisper 可以直接输入油管的链接
    IMG-8CB8741AA4B7D8C9DBCD3251DECF4F5C

    或者可以先下载音频、视频转音频。

    另外 groq 有免费的 whisper 模型可以使用,加速后转译成字幕更加快速。

    IMG-FCDEC2838ACED54D21628E731B7A18FA

    8 MB 超限了切分一下就可以(怕切到中间了可以 lossless cut 看着波形图剪,最后可以导出带有 index 后缀的音频)

    还是不满意再用 whisperX, 功能更丰富,识别更准确(得本地下载 whisper 模型 )
    IMG-E24439522EA08DF76BD98B66DBD7ED54

    Pasted image 20250305135535
  • 14:14

    • 写一个油猴脚本快速切换微博的版本

3. [日记] 2025-03-04 星期二

Updated:

长期任务和目标

今天要做的事情

值得分享的事情

资料收集

打卡

今天记录的内容

list file.ctime
from ""
where dateformat(file.ctime, "yyyy-MM-dd") = "2025-03-04"
sort file.ctime desc

memos

  • 13:59 已经把 cherrystudio 里面的所有的默认模型改成 gemini 2 flash 了

    IMG-B1FFDA204911256BC9A3C0BC465FE803
  • 14:01 Developer Roadmaps - roadmap.sh

    学习路线图

  • 14:22 Groq 的 dev console 以及 api 调用报 404 的解决方法:
    使用非香港地区的代理

  • 14:23 Zen browser 如果出现了一些奇怪的网络问题,请去: about:preferences#searchResults 开启代理。

    IMG-3E1B27318067CBA0326348E9A3CD245A IMG-182545B738A61E339A98C367918487E2
  • 14:26 LINUX DO - 新的理想型社区

    感觉是个不错的社区一些有用的解决方法都是从这里找到的

  • 18:35 满怀期待等来的是失望真的会哭

  • 19:06 其实感觉这些 vscode like ide 体验不如 vscode 的一点是不支持 profile 同步

4. pip安装和运行openwebui

Updated:

运行 openwebui 的时候除了 docker 部署之外,还有一种方法是 pip 部署

GitHub - open-webui/open-webui: User-friendly AI Interface (Supports Ollama, OpenAI API, …)

IMG-CDC2BAD93093406D70B0F9A6F01B86BF

环境变量缺失无法将“open-webui”项识别为 cmdlet、函数、脚本文件或可运行程序的名称

如果报错:

open-webui serve
open-webui : 无法将“open-webui”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请
确保路径正确,然后再试一次。
所在位置 行:1 字符: 1
+ open-webui serve
+ ~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (open-webui:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

这是因为没有将 python 对应的 Scripts 文件夹路径添加到环境变量中

  1. 如何查看路径在哪里
    在命令行中运行这一段
Terminal window
pip show requests
IMG-54444FCBA889BF74A543004B4163532D

能够看到这里面的 location, 所以实际的 script 的路径就是这个(site-packges 替换为 Scripts)

Terminal window
C:\Users\turbo\AppData\Roaming\Python\Python312\Scripts

把这个路径复制一下或者暂存到一个地方,我们需要把它保存在环境变量里面去(一般 windows 出现这个问题比较多,所以只写了对应的教程)

如何编辑环境变量

IMG-647D50202A16E26E1BE25AE4FC4E5DA1

搜索环境变量,进入编辑窗口

IMG-D9D3E5481059773AA8CCB5718E5EFB06

然后编辑系统变量把刚刚的那段路径添加到里面就可以了

IMG-3F25D1B9A693916B658415B17B64FDF4

然后再打开一个命令行运行

openwebui serve

就不会报找不到了

启动后长时间白屏的最终的解决方法

然后在 openwebui长时间白屏解决方案#现象描述 中有提到错误的原因在于当前环境无法连接到 openai。在使用 pip 安装的 packages 的时候,需要设置 ENABLE_OPENAI_API 的环境变量,具体做法如下:

  1. 在命令行中设置当前运行的环境变量 在 Linux/macOS 中:
    ENABLE_OPENAI_API=0 open-webui serve

在 Windows PowerShell 中:
$env:ENABLE_OPENAI_API=0; open-webui serve

在 Windows CMD 中:
set ENABLE_OPENAI_API=0 && open-webui serve


(题外话)如果你需要从. Env 读取环境变量那么,参考这个格式来写,
Using .env Files for Environment Variables in Python Applications - DEV Community

5. [git] 使用大模型处理 git diff 生成 commit msg

使用大模型处理 git diff 生成 commit msg 的流程如下:

  1. 获取 git diff 信息:

    • 可以使用 git diff > git.diff 将 diff 信息写入文件。
    • 可以使用 git diff | clip (Windows) 将 diff 信息复制到剪贴板。
  2. 准备提示词:

    • 提示词需要包含 commit 规则 [^1]。例子如下:
    用户会输入git diff,请你生成commit msg,可以根据更改内容生成一些备注
    我的commit规则:
    module.exports = {
    rules: {
    'type-enum': [
    2,
    'always',
    [
    'feat', // 新功能
    'fix', // 修复
    'docs', // 文档变更
    'style', // 代码格式
    'refactor', // 重构
    'perf', // 性能优化
    'test', // 增加测试
    'chore', // 构建过程或辅助工具的变动
    'revert', // 回退
    'build', // 打包
    ],
    ],
    'type-case': [2, 'always', 'lower-case'],
    'type-empty': [2, 'never'],
    'scope-empty': [0],
    'scope-case': [0],
    'subject-full-stop': [0],
    'subject-case': [0],
    'header-max-length': [0],
    },
    };
  3. 发送给大模型:git diff 信息和提示词一起发送给大模型,获取 commit msg。

  4. 使用 Cherry Studio (可选):

    • 可以使用 Cherry Studio 创建 commit msg 生成助手

IMG-BF22CA923126747336FA047AD2FFE0B3
具体效果

IMG-42E5510D67C42284041E3402E4D459AD

6. [日记] 2025-02-28 星期五

Updated:

长期任务和目标

今天要做的事情

值得分享的事情

资料收集

打卡

今天记录的内容

list file.ctime
from ""
where dateformat(file.ctime, "yyyy-MM-dd") = "2025-02-28"
sort file.ctime desc

memos

  • 11:17 其实可以写一个面向于粉丝的教程

    Pasted image 20250228111717
  • 14:29 希望 cherry studio 导入目录的时候支持忽略文件

  • 15:37 不能直接通过 git diff > 剪贴板 这样的命令实现,因为重定向 > 只能用于文件。但是,您可以使用一些工具和命令组合来实现将 git diff 的输出直接复制到剪贴板,而无需先写入文件。

    以下是几种常见的方法,适用于不同的操作系统:

    1. 使用 clip (Windows)

    Windows 系统自带 clip 命令,可以将标准输入的内容复制到剪贴板。

    Terminal window
    git diff | clip

    2. 使用 pbcopy (macOS)

    macOS 系统自带 pbcopy 命令,可以将标准输入的内容复制到剪贴板。

    Terminal window
    git diff | pbcopy

    3. 使用 xclipxsel (Linux)

    Linux 系统通常没有自带的剪贴板工具,需要安装 xclipxsel

    • xclip:

      Terminal window
      git diff | xclip -selection clipboard

      或者,如果 xclip 不可用:

      Terminal window
      git diff | xclip -in -selection clipboard
    • xsel:

      Terminal window
      git diff | xsel --clipboard --input

      或者简写:

      Terminal window
      git diff | xsel -bi

    安装 xclipxsel (Linux)

    如果您的 Linux 系统上没有安装 xclipxsel,可以使用以下命令安装:

    • Debian/Ubuntu:

      Terminal window
      sudo apt-get update
      sudo apt-get install xclip

      或者

      Terminal window
      sudo apt-get install xsel
    • Fedora/CentOS/RHEL:

      Terminal window
      sudo yum install xclip

      或者

      Terminal window
      sudo yum install xsel

    总结

    根据您的操作系统选择相应的命令,并将其添加到您的 shell 配置文件(例如 .bashrc.zshrc)中,以便您可以方便地使用它。例如,您可以创建一个别名:

    Terminal window
    alias gdiffclip='git diff | pbcopy' # macOS
    alias gdiffclip='git diff | clip' # Windows
    alias gdiffclip='git diff | xclip -selection clipboard' # Linux (xclip)
    alias gdiffclip='git diff | xsel -bi' # Linux (xsel)

    然后,您就可以使用 gdiffclip 命令将 git diff 的输出直接复制到剪贴板。

    由于题目没有提供操作系统信息,以上提供了各种操作系统下的方案,请根据实际情况选择。

  • 17:10

  • 17:58 Pasted image 20250228175738

    调用 grop 调不通,然后发现官方 dev console 也直接 404 了

    Pasted image 20250228175843 Pasted image 20250228180112

7. [日记] 2025-02-27 星期四

Updated:

长期任务和目标

今天要做的事情

值得分享的事情

资料收集

打卡

今天记录的内容

list file.ctime
from ""
where dateformat(file.ctime, "yyyy-MM-dd") = "2025-02-27"
sort file.ctime desc

memos

  • 00:38 重要时刻 iphone 发热卡死的话真的很急

  • 10:52 感觉 cherry studio 的设计会比 chatwise 更好
    而且它是开源的

  • 11:01 IMG-A057E6D98847314E2A2742FB44382803

    IMG-C4F896C16386AFFB89F1ED856D4D8319

    这个网站的设计好好看

    Stripe Press — Ideas for progress

  • 14:40 觉得 arc 或者很多浏览器都不支持很完美的插件同步 这一点还挺可惜的

  • 14:41 Yak shaving 是一种 adhd 症状也说不定

  • 14:46 如何实现比较好的字段转化(映射) #前端

  • 23:47 使用 milanote 规划的输入输出工作流 希望可以实践起来

    大体思路社交平台作为最随意的入口,通过 n8n + rss 定时获取内容调接口写入到 raindrop 和 子弹笔记里面(目前用 thino 比较多),然后用 milanote 筛选一层,然后记录比较详细的个人的脑洞和想法,然后输出为项目或者企划,做进一步详细规划。

    如果输出的形式是项目的话,就按照项目管理的形式去走

    如果输出的形式是长文,那么还是放到 obsidian 里面去写(搭配 lineage 插件),最后 git 提交后触发 github actions 部署到 cloudflare,另外如果要录视频就在长文的基础上改一版视频稿。


    我个人感觉主动筛选这一层比较重要,如果碎片化的记录太多或者随手收集的东西太多,其实不容易留下印象,有效的信息太少了。

     #Milanote  #工作流

    IMG-2025-02-27-9CB204EEDBCD1BCF3D2EDFBD6744C8D0 IMG-2025-02-27-E106A5338A221E70CFCC67E397E2E7D4

8. [日记] 2025-02-25 星期二

Updated:

长期任务和目标

今天要做的事情

  • [[dicom压缩 jpeg2000 1]]
  • [[oss 上传 1]]

值得分享的事情

资料收集

打卡

今天记录的内容

list file.ctime
from ""
where dateformat(file.ctime, "yyyy-MM-dd") = "2025-02-25"
sort file.ctime desc

memos

  • 12:06 原来 deepseekr1 的提示词是公开的 这么看也不复杂

    https://github.com/deepseek-ai/DeepSeek-R1#official-prompts

    IMG-2CBB4266E3AABE21E9AF0FCAF7F00469
  • 12:08 就这么大的池子 像个宝一样盯着也是挺搞笑的

  • 13:46 我是玻璃心😭

  • 19:27 最近喜欢坐地铁通勤 回去的路上还能吃点路边摊

  • 19:54 不吃火锅就吃烤匠 这个宣传语好洗脑

  • 20:57 bun 还是省心的

  • 23:44 为什么就这么让人不省心

  • 23:56 做什么都觉得挺无聊的 该让自己吃点苦了

  • 23:56 有什么事情是躺在床上也能做 然后对自己有帮助的或者算是有意义产出的

9. [日记] 2025-02-24 星期一

Updated:

长期任务和目标

今天要做的事情

值得分享的事情

资料收集

0:38 - 📖《Early Retirement Extreme》

4:17 - 📖《权力的 48 条法则》

6:05 - 📖《创造力的修行》

10:16 - 📖《SHOW YOUR WORK》

11:40 - 📖《非暴力沟通》

打卡

list file.ctime
from ""
where dateformat(file.ctime, "yyyy-MM-dd") = "2025-02-24"
sort file.ctime desc

memos

  • 14:59 最应该反复阅读的一句话:

    「能够对抗消极的不是积极,而是专注;能够对抗焦虑的不是安慰,而是具体;能够对抗迷茫的不是方法,而是行动。」 ​​​

  • 22:23

    想要自己养成的习惯:

    在床上不要用电脑,有需要用到电脑的场景,请你马上起身去到电脑桌前面

  • 22:31 电脑还是不能太长时间不关机

  • 22:48 obsidian-reveal-active-file 插件与 thino 冲突

    同时开启会出现 thino 和之前激活的 tab 之间反复切换的情况

    两者只能开启一个才正常

    另外如果 obsidian 的也支持 vscode 一样的二分查找法排查插件问题就好了,这样就不用手动一个个去点击关闭。

    (不过想到一个方法是用代码来手动控制插件启用情况,不过这样需要手动运行和重启 obsidian)

    #obsidian #thino #插件

    IMG-D00ECA1A03C7ED8C2D3C6B2350F49493
  • 23:01 1 月份都一直在用 deepseek v3 当翻译 api,便宜又好用

    IMG-C904F87DB6FF60DE95982CB164FE976A

    2 月份几乎没调通过 😭

    IMG-52AB966C8BE3F1DE7D2F91B261A9CF8A
Pasted image 20250224234657
  • 23:06 我是真的看不懂老牛说话

  • 23:21 #dicom 之前一直都想错了方向,维度指的并不是 rgb,rgba

    CleanShot2025-02-2423
  • 23:24 备忘一下

    手表无法充电大概是因为插头不对或者电压不对

  • 23:28 超级讨厌那种动不动就震惊吊打失业已死的博主的

10. [碎片] 配置 cloudflare 规则实现重定向

Updated:
IMG-16E2701A71548A6357EB84B23B32A3E2

博客路由结构对比

旧路由结构新路由结构 (Astro)
/blog/xxx/posts/xxx
/tag/xxx/tags/xxx
/category/xxx/categories/xxx

迁移之后可能会有一部分用户从搜索引擎或者之前收藏的链接中访问我的博客,如果不做处理,这些用户访问的页面会返回 404,导致用户体验下降。所以需要实现重定向。

思路有两种

  1. 基于部署平台 cloudflare 实现重定向
  2. 基于框架 astro 实现重定向

基于部署平台 cloudflare 实现重定向

在这里下载好 csv 的模板

CSV file format to import URL redirects · Cloudflare Rules docs

对照填写规则 Redirect visitors to a new page URL · Cloudflare Rules docs

根据自身需求填写,我的最终的 csv 如下

SOURCE_URL,TARGET_URL,STATUS_CODE,PRESERVE_QUERY_STRING,INCLUDE_SUBDOMAINS,SUBPATH_MATCHING,PRESERVE_PATH_SUFFIX
https://blog.kazoottt.top/category,https://blog.kazoottt.top/categories,301,true,false,true,true
https://blog.kazoottt.top/diary,https://blog.kazoottt.top/notes,301,true,false,true,true
https://blog.kazoottt.top/blog,https://blog.kazoottt.top/posts,301,true,false,true,true
https://blog.kazoottt.top/tag,https://blog.kazoottt.top/tags,301,true,false,true,true

然后点击侧边栏的批量重定向,上传 csv,保存,创建批量重定向列表。最后绑定把批量重定向规则绑定对应的列表就可以了。

(也可以点击域名然后再设置规则,总之入口和可配置项有很多,按需选择)

IMG-9B20E505345B2B2FFAEFCE7463420E90

下图是配置完成的效果

IMG-8072C6F424C6D27A40E457198B622A5C

这样我再访问 https://blog.kazoottt.top/posts/2025-W07/ 就会被重定向到 https://blog.kazoottt.top/posts/2025-W07/

通过配置 astro 完成重定向

其实 astro 也可以配置 astro.config.ts 中的 redirect 属性来实现,但是个人用下来觉得它对于动态路由的支持并不好,且文档中没有写的很详细,我通过代码跳转过去才知道支持动态路由的配置。

IMG-145A60CDEC5C619A9F432DBAA2325AA2-1

配置如下:

redirects: {
"/blog/[...slug]": "/posts/[...slug]",
"/category/[...slug]": "/categories/[...slug]",
"/diary/[...slug]": "/notes/[...slug]",
"/tag/[...slug]": "/tags/[...slug]",
},

但是配置后打包开始报错,提示我去写 getStaticPaths 或者配置 export const prerender = false

19:33:08.963 11:33:08 ▶ /category/[...slug]
19:33:08.964 11:33:08 [ERROR] [build] Failed to call getStaticPaths for /category/[...slug]
19:33:09.240 [GetStaticPathsRequired] `getStaticPaths()` function is required for dynamic routes. Make sure that you `export` a `getStaticPaths` function from your dynamic route.
19:33:09.240 Hint:
19:33:09.240 See https://docs.astro.build/en/guides/routing/#dynamic-routes for more information on dynamic routes.
19:33:09.240
19:33:09.240 If you meant for this route to be server-rendered, set `export const prerender = false;` in the page.
19:33:09.241 Error reference:
19:33:09.241 https://docs.astro.build/en/reference/errors/get-static-paths-required/
19:33:09.241 Location:
19:33:09.241 /category/[...slug]:0:0
19:33:09.241 Stack trace:
19:33:09.241 at validateDynamicRouteModule (file:///opt/buildhome/repo/node_modules/.pnpm/[email protected][email protected]/node_modules/astro/dist/core/routing/validation.js:19:11)
19:33:09.241 at getPathsForRoute (file:///opt/buildhome/repo/node_modules/.pnpm/[email protected][email protected]/node_modules/astro/dist/core/build/generate.js:182:31)
19:33:09.241 at async generatePages (file:///opt/buildhome/repo/node_modules/.pnpm/[email protected][email protected]/node_modules/astro/dist/core/build/generate.js:82:7)
19:33:09.241 at async AstroBuilder.build (file:///opt/buildhome/repo/node_modules/.pnpm/[email protected][email protected]/node_modules/astro/dist/core/build/index.js:154:5)
19:33:09.241 at async build (file:///opt/buildhome/repo/node_modules/.pnpm/[email protected][email protected]/node_modules/astro/dist/core/build/index.js:45:3)
19:33:09.241 at async runCommand (file:///opt/buildhome/repo/node_modules/.pnpm/[email protected][email protected]/node_modules/astro/dist/cli/index.js:147:7)
19:33:09.410 Failed: Error while executing user command. Exited with error code: 1
19:33:09.422 Failed: build command exited with code: 1
19:33:10.423 Failed: error occurred while running build command

尝试一番后依然报错,然后也没有找到比较明确的解决方法,所以第二种方式暂时被弃用了。后面有时间的时候,会去看 astro 的源代码验证是否支持这样写,以及找到具体的正确写法。