我的2025年观影清单 |
2024-12-27 |
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 lock
、uv 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 |
这是一篇来自Greptile公司的博客,讲述了他们是如何提高 LLM 在产品中的回复质量,减少无用/低效的回复。
分别尝试了3种方法:
- 提高Prompt质量
- 使用另一个 LLM 审核输出
- 使用简单的聚类向量系统
最后测试下来只有第三种方法是有效的。
这和最近我在做的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进行后续的功能修改和完善