笔记规范

先把书读厚,再把书读薄

为什么我们要做笔记

于我,有如下重要意义:

  • 【知识体系】促进思考,形成自己的知识库
    知识浩如烟海,被按照各种逻辑、规范或非规范的方式编排进书籍、影视资料、数据库、网络平台等载体中。

    然而,如果不能用自己的思维方式系统化地’吸收’这些知识,那么这些知识很难真正成为’你的知识’,你离能够自如应用这些知识也将会非常遥远。

    做笔记,从某种程度上来说,是在强迫你不断回顾和整理自己所学所思,然后通过清晰有序且系统的方式,以适合自己的思维习惯和理解层次去梳理和分析知识、思想和事情。

  • 【从厚读薄】长期保存我们学到的东西,快速检索、复盘,减少重新学习成本
    在学习那一刻也许你是熟悉的,随着时光流逝,人的记忆力是会慢慢衰退的,知识之间的联系也会磨损、断裂。假以时日,当曾经熟悉的问题再次出现时,我们却对它无比陌生了。

    笔记能缩短重新学习的过程,也能加强自身的记忆。

    当一个人在学习一项知识时,可能会花费数月的时间。然而,如果他有良好的笔记习惯,那么若干年后,他或许只需要1小时就能清晰地重温这些知识

  • 【从薄读厚】自我成长的过程:持续重构、更新、修改、丰富、完善
    优秀的笔记会被作者不断地重构、更新、修改、丰富和完善。后续的优秀素材、场景、案例、反馈、思考和框架都会被添加进去,使得自己的知识体系愈发完善,并成为自己思维的一部分。这甚至能激发你的灵感,促进你的创作。

    这就像修建一座房子一样,你在不断精进你的这座房子:外立面不断升级,下水道系统不断完善,庭院花草不断整治,防火系统持续更新,最终让房子的宜居指数不断提升。你将一路感受到自己的成长。


理解笔记

笔记分类

我会用到的笔记种类有:

  • 备忘录类
    不成体系的碎片化信息,如随时随地冒出的想法、点子、灵感等
  • 学生时代的错题集
  • 文史哲类课程/书籍笔记
  • 理工类课程/书籍笔记
    如数学课程笔记、运动规划课程笔记、数据结构课程笔记、Mordern C++课程等
  • 代码阅读笔记
    如各类开源代码学习笔记
  • 产品手册、调研报告、竞品分析类笔记
    如xx公司产品使用手册,专利调研报告,竞品对比分析报告等
  • 专题类或工作总结类
    如软件更新教程、刷机教程、产品使用手册、工具使用指南等

笔记原则

以下笔记原则源自我的实践总结,它们重要但非必须。根据你的笔记类型和效果,灵活整合这些要点到你的笔记系统中吧。

  • 避免简单罗列或大段抄写资料
    当你冲动想大段复制粘贴时,先停下来权衡其必要性。笔记应便于快速检索,无加工、汇总或分类的大段复制粘贴式笔记很可能是无意义且不利于检索的。

  • 二八法则与关键问题
    二八法则,或帕累托法则,指20%的因素驱动80%的结果。例如,80%的销售额来自20%的客户;80%的财富由20%的人拥有。了解此法则可以提升笔记效率,让我们抓住关键的20%,而非陷入细节。

    注:这对一开始就喜欢抓细节的完美主义者也有启发意义。

    实践中,我先提出不熟悉领域或课程的top 10(数量可调整)关键问题,视之为重要的20%,然后以此为导向学习和做笔记,效率最佳。

    分享我快速入门各工业机器人时列出的关键问题:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    1. 机器人启停、管理员密码
    2. 点动(joints, cartpose)
    3. 新程序并跑一个while循环点序列
    1. 包含line和ptp (3个点,IO输出,和一个while循环)
    2. 示教点位
    3. 速度/圆滑设置(3个点在设置圆滑和速度)
    4. 工具
    5. 用户坐标系
    6. 单步运行,跳转到某个指令,pp to main
    7. setPC
    8. 自定义调用函数,类似CALL/RUN
    9. 手动、自动运行
    4. 查看当前坐标/工具
    1. 坐标、单位
    2. 设置工具值
    5. 工具/工件坐标系如何选择和切换
    6. io配置和输入/输出
    7. 程序导入和导出、备份还原
    8. ip地址修改
    9. 多线程和前后台程序,以及前台后台和数据交互(寄存器/全局变量?)
    10. socket程序读写方法
    11. 前后台程序,用什么软件写
    12. 有没有仿真软件,离线编程软件
    13. 获取机器人当前点位,赋值/设置机器人点位(eg.来源于视觉)
    14. cp点中的cfg的如何设置;可以坐标变换么
    15. 预读,提前输出IO信号和到位才输出IO信号
    16. 姿态ABC含义, sxyz/rxyz/??
    17. eye-in-hand/ eye-on-hand模板
    18. 停止(stopRobot)、报错(seterror)、信息显示(setInfo)
    19. 说明书是否齐全
    20. 奇异点规避,姿态cfg
    21. 信号立即输出指令,IO预读
  • 应用费曼技巧
    应用费曼技巧于笔记,确保真正解决上述关键问题。在费曼技巧的基础上,用一句话回答关键问题,有助于快速复盘思路。

  • 持续迭代更新
    如同一块农田一样,不定期整理,笔记也很快杂草丛生。即使某课程笔记完结,后续若发现错误或有新案例、心得,也要继续更新,防止杂乱无章。

  • 进行适当展示
    记到本地的笔记,很可能失去更新的动力。以公开的方式(博客、个人主页、问答社区、公众号等)展示笔记,可以增强更新意愿,也有机会扩大自己的影响力。


常见笔记方法

提供一些关键词用作延伸了解:

  1. Zettelkasten卡片盒笔记法
  2. 康奈尔笔记法

不过这些我都没有用到。

费曼技巧

数学概念高度抽象,数学逻辑是一种形式逻辑,一般人本身很难理解。

形式逻辑: 形式逻辑主要遵循的是演绎推理和归纳推理,典型是亚里士多德的三段论:大前提A包含了小前提B,通过A和B同时推出结论C。

记住, 笔记并不需要大段摘录, 要用自己的语言/表格/图片等工具, 追求直觉的表述。

可以通过几个方面去拓展抽象数学的直觉意义:

  • 几何意义 —> 可视化
  • 代数意义
  • 应用中的意义 —> 明确
    • 物理意义: 机器人领域, 力学领域, 数字图像处理领域
    • 统计学意义: 经济学, 社会学, 人口学, 消费学, 心理学等
    • …(欢迎补充)

可以借助以下工具来直观了解某个概念:

教学/学习理解: 直观 <—> 凝练/升华: 数学抽象

实践费曼技巧时,并不需要真的对着“别人”讲,那样效率太低。以费曼技巧来记笔记,也是实践的一种。


实践笔记

一些技巧

  • notion几种用法:
    • 不适宜公开的私人笔记
    • 笔记初稿,配合公开笔记
    • 笔记资料库,存放公开笔记中放不下的资料:软件、视频、音频、大文件等
  • 备忘录类,不一定使用notion
  • 可以使用github page做对外展示,不过需要注意下SEO

产品手册、调研报告、竞品分析类笔记

  • xxx手册阅读笔记

    硬件相关

    60页(wumin),Nano相机的曝光时间调节范围是2 ~ 10ms,看来眼在手上的这种相机的曝光时间要比眼在手外少很多,因此采图+计算最快可以做到大概500毫秒(采图14*10+计算360)。
    68页(wumin),支持光强调整(高中低); 支持HDR多重曝光(三次),我们后续也可以开发下这个功能,虽然整体耗时会成倍增加; 支持输出平滑点云;
    75页(wumin),支持通过roi内有效深度像素数量自动选择曝光值.
    82页(wumin),设置感兴趣区域,我们后续也可以开发下这个功能,比如在深框周围设置一个矩形区域,区域内的像素才进行解码+重建,计算时间大概会减少100~200毫秒。

    软件相关

    10页(wumin),所有软件统一入口,方便使用。
    14页(wumin),自动列出网段内所有设备,方便相机设置。
    308页(wumin),输入分配器,不知道用来干嘛的

    算法相关

    162页(wumin),根据尺寸动态生成SBM模板,应该是用来做简单的拆码垛
    166页(wumin),获取深度图中最高的区域,我觉得应该挺实用的
    188页(wumin),精匹配有两种type:GMM,nearest-neighbor,并说绝大数情况GMM好于NN,nearest-neighbor应该ICP;GMM是cpd(Point-Set Registration: Coherent Point Drift )?
    1015页(wumin),纸箱超级模型处理水平摆放、没有倾斜场景。

其他类型参考:notion: 产品手册、调研报告、竞品分析等


理工类课程/书籍笔记

至少包含4大部分:


代码阅读笔记

场景:

  • 学习某个源码repo,但是这个repo又会不断更新
  • 需要将代码笔记,汇总到一个markdown下,方便快速检索笔记
    • 如果注释写在不同分支,也要汇总到一个分支下面
  • 后续如有可能, 再把所有的repo的笔记, 汇总到一个地方 —> 优先级低

解决思路:

  • 保持repo的master不动,这样可以更新repo
  • 开新branch去写代码笔记
    • branch命名:
      • cmt/summary → 汇总各个分支的笔记
      • cmt/1st_20220423 → 第一次阅读源码所做的注释
      • cmt/功能_20220801 → 后续新增的功能
    • 每个branch包含
      • my_test 放测试文件
      • my_pic 放一些补充图片、文本等
      • 每个代码文件
        • 在需要注释的地方 @Study
        • 每个代码文件都要包含 @Status,表明该代码文件是否学习完毕
        • 如果架构很复杂, 可以使用vscode的plantUML 绘制类图
      • summary_1st_20220423.md
        提取每个文件下的@Study和@Status,做汇总用。该文件也需要@Status,用来表示这次branch分支的学习是否结束。
    • cmt/summary
      • notes文件夹:
        • notes.md —> 介绍各个笔记的基本情况
        • note_1st_20220423.md —> 直接从分支合并过来
        • note_功能_20220801.md —> 直接从各个合并过来
        • CHANGELOG_NOTES.md —> 记录每次把各个分支提交过来的笔记的记录
  • 代码管理
    • 不要放在本地,用github维护
      • 不要将私有代码挂载在github上,或者用公司网络推送到github上
    • cmt/summary的合并策略是通过PR merge进去。不能直接push到该分支,可能用到cherry-pick。

参考资料

作者

wumin199

发布于

2023-07-11

更新于

2025-02-13

许可协议