Location via proxy:   
[Report a bug]   [Manage cookies]                

Versun

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



我的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

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


如何实现人生中最伟大的复出

2024-12-19

文章: How To Make The Greatest Comeback Of Your Life

挺浓的一篇鸡汤,但味道还不错:

你一心只想成为医生、律师、艺术家、设计师、工程师或其他任何自我限制的身份,这些身份影响了你的认知和学习。

你没有按照自己的意愿去探索、失败、发现和建设, 没有发展出自由个体的独特特质

问题是,你还在寻找 "唯一真正的道路"。
我来告诉你,根本就没有。
如果有的话,我们早就找到了,每个人都会变得富有、快乐和健康。但现实并非如此。事情永远不会总是幸福的。为什么呢?因为没有悲伤,快乐就没有意义。没有手臂,手就不存在。物理、生物、心理和精神层面都包含这种模式。缺一不可

当你去度假时,最终,也许在两三周后,你会觉得度假很平常。你会觉得无聊。这不再是 "度假"了。这是正常的生活。你想回去工作。你想做一些事情,任何事情,只是有点新奇和有趣。你的心灵渴望平衡,但不是普通意义上的平淡而悲惨的生活。你的心灵渴望对比

说了这么多,只想说一件事:因为你害怕犯错,所以你没有达到自己的目标。
错误是大自然的指南针。
如果说没有悲伤就没有快乐,那么没有失败就没有成功。

非常认可!就像软件一样,一个软件只有出现bug才能继续完善,不断成长。

当你意识到自己不想要什么,并朝着另一个方向努力时,你想要的生活就会变得更加清晰

你需要有自己的目标,而你只有对自己的现状感到绝对厌倦,并摒弃你所认为的一切,才能产生这些目标。


AI驱动的Git提交助手: aicmt

2024-12-18

这是我新开发的命令行小工具:aicmt

一个AI驱动的Git提交助手,不仅能自动生成提交信息,还能自动分析代码变更,并根据最佳实践将其拆分为多个结构良好的提交。

功能特点

  • 智能变更拆分:不同于传统的提交信息生成器,aicmt能分析您的代码变更,并按照Git最佳实践自动拆分为多个逻辑清晰的提交
  • 灵活控制:您可以让AI决定提交数量,也可以自行指定想要的提交数量
  • 专注编码:自由地进行所有代码修改,将提交组织工作交给AI处理 – 在编码时无需担心如何完美地进行原子提交

演示:

开发的初衷:每次修改大量代码后,都要花费很多时间去手动筛选并提交不同的commit,比如修复了好几个bug和很多文档更新,往常都是要手动分成2个提交,很麻烦,所以就萌生了使用AI来自动分析变动的代码,然后自动拆分提交

开发过程:总共花了2天左右,使用Replit Agent和Windsurf面向Chat编程的,所有代码都是由claude-3.5-sonnet生成,我只负责审核代码和删除代码。

开发感受:Replit Agent适合0到1的开发,可以非常快的出原型,但不适合后续的修改和返工,代码容易混乱,所以需要搭配Windsurf进行后续的功能修改和完善