Versun

对待生命,不妨大胆一点,因为我们终将失去它



Mixbox: 基于颜料的混色系统

2024-12-30

Mixbox
这是一个基于真实颜料的混色系统包,看了它的实现原理视频讲解,挺有意思

终于知道为什么以前学数字绘画的时候,混色系统一直不顺手,因为它们的混色系统都是错的!
之前还以为是我的软件配置、笔刷参数有问题!

刚刚试了它们的Demo,和实际混色感觉是一样的


Trio

2024-12-27

Trio
一个在线人声合成器,可以自动和声,我玩的有点上瘾,很有意思


我的2025年观影清单

2024-12-27
在我观看了油管上很有意思的《2024年电影预告片混剪》视频后,才发现好多片段都很陌生。。。 是时候补回来了,所以这个视频里出现的所有电影将会是我的2025年的观影清单:

uv cheatsheet

2024-12-27

这是一篇个人使用uv的汇总,以便查询(不定时更新)


uv官方文档: https://docs.astral.sh/uv/
uv CLI文档: https://docs.astral.sh/uv/reference/cli/
uv安装命令: curl -LsSf https://astral.sh/uv/install.sh | sh


  • 安装 Python: uv python install 3.12
  • 创建 Python 虚拟环境: uv venv /path/to/environment --python 3.12
  • 安装软件包:uv pip install pkg_name
  • 安装全局包:uv tool install pkg_name
  • 初始化项目:uv init myproject
  • 同步项目:uv sync
    如果当前文件夹存在python项目,则会自动创建venv,并启用虚拟环境后自动安装依赖包,非常方便
  • 运行项目:uv run manage.py runserver
    如果存在venv,则自动启用venv并运行指定程序
  • 添加包到 pyproject.toml 文件中:uv add pkg_name
  • 同步/更新包到 pyproject.toml 和 uv.lock 文件中:uv lockuv sync
  • 添加包到指定的依赖组:uv add --group production request
    • 自动添加到开发组:uv add --dev- pytest
  • 临时运行:uvx pycowsay hello from uv

nanodjango

2024-12-27

Github: nanodjango
非常喜欢这个项目,可以像flask/fastapi那样,使用单文件就可以用django快速编写一个原型应用,后期还可以转为Django的标准文件架构

不知道Rails有没有类似的nano框架


保险何时值得?

2024-12-26

文章:保险何时值得?

这篇文章会简述了保险的目的、是否应该购买保险、如何计算保险的价值,同时还提供了保险价值计算器


如何让 LLMs 闭嘴

2024-12-26

文章:How to Make LLMs Shut Up

这是一篇来自Greptile公司的博客,讲述了他们是如何提高 LLM 在产品中的回复质量,减少无用/低效的回复。
分别尝试了3种方法:

  1. 提高Prompt质量
  2. 使用另一个 LLM 审核输出
  3. 使用简单的聚类向量系统

最后测试下来只有第三种方法是有效的。

这和最近我在做的aicmt工具时,遇到的问题非常类似。
起初我将prompt优化到90%的效果后,无论再怎么优化prompt或者引入第二个AI都无法继续提升回复的质量,恰巧看到这篇文章后,准备试一试用向量过滤器看看效果


行为驱动开发(BDD)

2024-12-24

今天才知道除了测试驱动开发(TDD)外,还有一个行为驱动开发(BDD),主要用于测试软件的预期行为。
在TDD中,单元测试主要测试具体的代码实现,更注重底层的测试,而BDD则从业务行为上进行测试,更注重高层次的行为测试。

目前最流行的BDD框架应该 Cucumber, 它的作者也参与了Ruby著名的测试框架RSpec的开发,
所以Ruby可以说是Cucumber的发源地,我最近在写Ruby的测试用例时,发现其自由度非常高,而且很符合思考逻辑。

Cucumber目前也支持几乎所有的主流编程语言,其语法具有很强的可读性,很贴近业务需求


特殊的 Git hash

2024-12-23

今天AI写了一段神奇的代码:

parent = commit.parents[0] if commit.parents else self.repo.tree("4b825dc642cb6eb9a060e54bf8d69288fbee4904")

功能是获取某个git提交的上一个提交,如果没有则返回4b825dc642cb6eb9a060e54bf8d69288fbee4904提交。
刚开始看到硬编码的hash以为又是ai乱写的,所以询问了下ai,才得知:

  • 4b825dc642cb6eb9a060e54bf8d69288fbee4904是一个特殊的 Git hash,代表一个空树(empty tree)
  • 这个 hash 是固定的,在所有 Git 仓库中都是一样的
  • 当我们需要比较第一个 commit 的变更时,就需要和这个空树比较,因为第一个 commit 之前没有任何内容

我在本地的多个git repo中测试了,还真是一个有效的hash,均返回空,神奇


多做,少做

2024-12-19

多做自己认为对的事情,少做别人认为对的事情。
多做自己想做的事情,少做别人想让你做的事情。
多做会犯错的事情,少做一定不会错的事情。
多做没做过的事情,少做熟悉的事情。
多做能让自己开心的事情,少做能让别人开心的事情
多做奇怪的事情,少做正常的事情
多做不敢做的事情,少做没有压力的事情