Rust std::borrow::Cow

ref: Rust, Rust Borrow and Lifetimes 发现一个 Cow 用处,可以让变量支持同时赋值引用类型和值类型,场景就是我们可能接收到一个引用,同时可能需要把它变成值类型做一些处理,我们可以通过 clone 或 to_owned 统一变成值类型: fn maybe_need_to_change(s: &str) { let s = if s.starts_with("xxx") { manipulate(s) } else { s.to_owned() // 存在额外的开销 }; take_reference(&s); // s.into_owned() 可以得到 String 类型的值 } fn manipulate(s: &str) -> String { s.to_owned() } fn take_reference(s: &str) { } 另外一种方式就是通过 Cow 避免不必要的 clone 开销: fn maybe_need_to_change(s: &str) { let s = if s.starts_with("xxx") { Cow::from(manipulate(s)) } else { Cow::from(s) // 没有额外的开销 }; take_reference(&s); } fn manipulate(s: &str) -> String { s....

May 6, 2024 · 1 min · Gray King

我现在的笔记记录方式

ref: 收集和整理笔记:临时笔记、阅读笔记和正式笔记, How to Take Smart Notes, 书写比键盘输入更有利于记忆 收集:阅读笔记写到纸质的笔记本上; 整理:通过 org-roam 整理成正式笔记。

May 4, 2024 · 1 min · Gray King

收集和整理笔记:临时笔记、阅读笔记和正式笔记

ref: Introduction: The slip-box and Overarching workflow, GTD 对记笔记的启示, How to Take Smart Notes 要想长久的掌握学到的内容:写下来;要想真正的理解所学内容:转换成自己的语言。所以笔记不仅仅是学习的方式,还是以下工作的结果: 思考 阅读 理解和产生想法 收集笔记 通过以下两种方式可以收集笔记: 临时笔记(fleeting notes):捕捉脑海中的每一个想法,放到收件箱里稍后处理(丢弃或转换成正式笔记(permanent notes)) 阅读笔记(literature notes):用自己的语言记录下阅读中想要记住的内容,并保持笔记内容简单、精悍。 然后在一到两天内(忘记之前)整理笔记: 整理临时笔记,: a. 要么整理成正式笔记; b. 要么丢弃 阅读笔记:添加连接,索引内容。 如何连接正式笔记 从收集变成整理:开发想法、主题和讨论,确保之后可以通过索引或者相关的笔记找到现在撰写的这篇笔记。 是否和现有的论述存在冲突或能够支持现有的笔记? 是否可以结合现有的笔记产生新的想法? 引发了什么新的问题? 如何写正式笔记 撰写完整的句子 引用信息来源 尽量精准、清晰和间接 如何利用正式笔记 通过自下而上的系统开发主题、问题和课题:查漏补缺,跟随自己的兴趣读更多、记更多,或转移或深入,产生问题回答问题。 通过积攒足够笔记的笔记去创作:根据连接找到主题创作所需的一些,查重补漏。通过笔记适当的调整顺序产生操作,并完善草稿完成创作。

May 4, 2024 · 1 min · Gray King

Luhmann's slip-box

ref: Introduction: The slip-box and Overarching workflow, slip-box 小片的笔记通过上下文进行关联,放在两个木头盒子里面(装满了索引卡): 两个木头盒子分别的作用: 索引(bibliographical):存放对所读的书目的引用(正面)和简单的笔记(反面)。 主要(main):收集对所读内容产生的想法。 当读到一些内容,其主要工作流程: 一张索引卡,正面:数目信息,反面:简短的内容笔记,放到索引盒子里之后就不再添加。 检查相关的想法和写作:不直接照抄所读,而是用自己的语言在一片纸上写上一个想法或者笔记,放到「主盒子」里; a. 有新的想法再写在另外一张纸上进行扩展,通过编号进行连接。 b. 多个笔记形成链式,一个笔记可以关联到多个上下文中。 卡片之间连接的方式:

May 4, 2024 · 1 min · Gray King

GTD 对记笔记的启示

ref: How to Take Smart Notes, Introduction: The slip-box and Overarching workflow tags: GTD 传统计划 vs. GTD 计划:往自身施加了一层禁锢,消耗意志力、让自身丧失灵活性,难以应对开放式的任务;比如写作。 GTD:通过收集、整理、决策、行动这一套可信的系统,让大脑意识到所有的事情都已经被妥善处理,从而大脑才会让我们能够专心的处理眼前的事项,大大增加了自身的灵活性. 一种好的笔记记录方式类似 GTD 帮我们开启一种新的工作流: 收集笔记:记录、跟踪读到的内容; 整理笔记:头脑风暴开发想法; 连接笔记:激发新的想法; 创作:通过笔记进行快速创作。

May 4, 2024 · 1 min · Gray King