ai-coding
对于我而言对于真正 AI Coding 应该是在25年年底,虽然前面也在用了cursor,github copilot等工具,但是这些工具更多的是辅助编程,而不是完全由AI来完成编码工作。很多时候还是我自己主导,尤其是后端开发,AI更多的是帮我完成一些重复性的代码生成工作,比如生成CRUD接口,生成数据模型等。大概就是在11月左右,我开始尝试claude code, codex,同时也用了这两家的最强模型,也使用了国产GLM4.7, 配合claude 工具,在很多时候也可以很好的解决日常的开发工作。也是在这段时间,各种AI工具层出不穷,OpenCode, zcode, 以及在 X 上大家开始各种通过 Vibe Coding 开发出了各种有趣的项目。在之前个人可能因为技术栈的的问题,大家的工作是比较有明显的界限的,前端开发,后端开发,数据分析,运维等,但是现在AI Coding 的出现,让很多人可以跨越技术栈的界限,甚至在自己不了解的技术领域做出一些有趣的项目。在之前如果真的想要快速做出一个产品,还需要花费大量的时间去学习相关的领域知识。而现在AI Coding 的出现,让很多人可...
2025 summary
在2025年12月初自己突然冒出了想要总结一下这一年,可能是因为最近比较焦虑,回顾这一年最重要的事情就是今年自己结婚了,工作上在年初的时候换了一个新的项目组。在这么一个午后,想着这一年经历的事情,在北京这么多年后,第一次有了跟不上这个时代的变化,AI 在这一年变化太快了,模型在不断的进步,和 AI 相关的内容也在不断的迸发,觉得自己所做的事情很快会被替代,原本写代码的乐趣也少了很多。在这个时间点,好好回顾一下这一年,以及自己接下来的路还如何走。 生活 就在前几天自己刚刚过完33岁生日,回头看时间真的过的好快,2025年也过的好快,今年年初的时候自己并没有给今天制定什么一定要完成的计划,可能那个时候自己想的,最重要的事情就是自己结婚了,也终于和女朋友有一个正式的求婚,我们两个已经认识了11年了,从最开始的校园到来北京工作,再到今年的结婚,自己是14年来的北京,她是16年来的北京。 求婚 和媳妇认识这么多年一直欠了一个特别正式的求婚,所以想的是要选择一个非常适合的时间以及方式,思来想去决定放在七夕的时候,结果实际是七夕当天我需要的花定不到,以及花店那几天非常忙,没有办法就放在了后面...
20250808-daily-rust
Rust 学习 https://www.tisonkun.org/2025/08/05/trickle-down-oss/: 文章介绍了“涓滴开源”模式,即从商业软件开发中提炼出微小且完整的模块并开源。 以Cronexpr为例,该库是为ScopeDB云数据库解析Crontab表达式而开发的。作者在调研现有库后,决定自行开发,Cronexpr实现了对时区信息的支持,并使用了可靠的jiff和winnow库。Cronexpr已发布1.0版本,稳定运行。 涓滴开源模式使ScopeDB能够获得反馈,并为其他用户提供价值。作者认为这种模式具有可持续性,并可提升技术品牌影响力。 https://xuanwo.io/2025/05-learn-rust-by-reasoning-with-code-agents/:文章探讨了通过代码代理进行Rust学习的方法——“通过推理学习”。这种方法强调,学习不应仅限于阅读或实践,更重要的是理解代码背后的逻辑。作者提出,通过阅读代码、提出问题并思考“为什么”和“如果会怎样”,可以更深入地理解Rust的复杂特性,例如所有权、特征和生命周期。文章详细介绍了“推理...
20250804-daily-rust
Rust Tips一种非常方便的方法来过滤 HashMap 数据 1234567891011use std::collections::HashMap;fn main() { let mut scores = HashMap::new(); scores.insert("Alice", 80); scores.insert("Bob", 90); scores.insert("Charlie", 60); scores.retain(|_, &mut score| score > 60); println!("Scores after retain: {:?}", scores); // {"Bob": 90, "Alice": 80}}
20250801-daily-rust
Rust TipsRust 2024: let chains in if and while 123456789101112131415161718fn main() { let numbers = [10, 20, 30, 40]; match sum_first_two(&numbers) { Some(sum) => println!("The sum of the first two numbers is: {}", sum), None => println!("Not enough numbers to sum."), }}fn sum_first_two(nums: &[u8]) -> Option<u8> { let mut iter = nums.iter(); if let Some(first) = iter.next() &...
20250731-daily-rust
Rust Tipsdrain 从 vector 批量删除指定范围,并以迭代器的形式返回所有移除的元素。 123456fn main() { let mut numbers = vec![1, 2, 3, 4, 5]; let evens: Vec<_> = numbers.drain(..).filter(|&x| x % 2 == 0).collect(); println!("Even numbers: {:?}", evens); // Even numbers: [2, 4] println!("Remaining numbers: {:?}", numbers); // Remaining numbers: []} AI 趣事https://x.com/dotey/status/1950733173714756042
tips-for-faster-rust-compile
Updatge Rust Compiler And ToolChainRust 一直在持续不断的优化编译的速度,因此定期更新你的 Rust 编译器和工具链是非常重要的。 1rustup update Cargo CheckCargo check 是一个非常有用的工具,它可以在不编译代码的情况下检查你的代码是否有语法错误或其他问题。这可以大大加快你的开发速度。 Remove Unused Dependencies1cargo install cargo-machete && cargo machete Update Dependencies cargo update 会自动更新所有依赖项到最新版本。 cargo tree --duplicate 查找多个版本的依赖项,目的是通过更新依赖旧版本的依赖项来合并到单个版本(待验证) Faster Linker Linux/Macos: https://lld.llvm.org/ Linux: https://github.com/rui314/mold 目前github 上比较活跃的还有: https:/...
20250730-daily-rust
Rust Tips12345678910111213141516fn main() { my_assert(false);}#[track_caller]fn my_assert(condition: bool) { if !condition { let caller = std::panic::Location::caller(); panic!( "Assertion failed at {}:{}:{}", caller.file(), caller.line(), caller.column(), ); }} Rust中的track_caller宏,可以帮我们精准定位代码调用点。上面的代码,当我们使用了 track_caller,运行代码提示: 123thread 'main...
20250729-daily-rust
Rust TipsRust 中 iterators 非常强大,两个实用的函数: peekable: 允许查看下一个元素但不使用它 partition(cond_fn): 根据条件将迭代器划分为单独的集合 1234567891011fn main() { let mut iter = vec![1, 2, 3].into_iter().peekable(); let a = iter.peek(); println!("{:?}", a); let b = iter.next(); println!("{:?}", b); let (events, odds): (Vec<_>, Vec<_>) = (1..6).partition(|&x| x % 2 == 0); println!("{:?}", events); // [2, 4] println!("&...