整理一下个人在学习生活中的工作流,根据个人实际需求和实践不断调整更新。

代码编辑

分析一下我目前的需求,我目前需要大量编写如下类型的文件:

  • 文档语言
    • LaTeX
    • Markdown
  • 编程语言
    • C/C++
    • Python
    • MATLAB
    • ...

目前采用的方案如下:

  • VSCode:作为绝对的主力编辑器,只需要进行一些配置就可以支持绝大部分语言;(VSCode的配置需要及时备份)
  • Typora:对于Markdown的轻量级使用,Typora也是一个非常好的选择,比VSCode更加方便。
  • MATLAB:这个比较特殊,还是需要使用MATLAB自身的IDE,因为VSCode的插件支持太拉了;
  • Vim/Nvim:鼓捣了一阵,但是有一些难以克服的问题,比如中英文切换太麻烦,没有Linux真机导致GUI无法使用等,因此浅尝辄止。

至于各种编程语言的具体配置,这里就不列出了,比较麻烦。

文献阅读

实际包括三类需求:文献管理、文献阅读、文献笔记:

  • 文献管理:
    • Zotero的文献数据库比手动维护文献存储的文件夹方便得多,它可以自动给添加的PDF重命名,提供期刊信息等;
    • Zotero的数据存储依赖坚果云的webdav服务,免费版已经足够使用了。
  • 文献阅读:
    • Zotero对于文献阅读非常友好,只需要配置一些插件即可,例如翻译插件和参考文献插件等;
    • 基本的注记通过Zotero的PDF浏览器实现,不使用其它花里胡哨的功能。
  • 文献笔记:不使用Zotero及其插件提供的笔记机制,只使用下一节中的LaTeX笔记,文献阅读笔记要求与Zotero解耦,不产生任何联系。

在测试使用了一段时间,发现Zotero不仅功能花里胡哨,而且存在很多潜在问题,因此决定尽量简化使用方式:

  • 解析:对导入的文献自动解析数据,包括获取期刊信息
  • 分类:对文献进行基本的分类
  • 注记:在PDF中进行标注,不使用Zotero提供的额外笔记或单独的笔记条目
  • 标签:没有任何固定的规则,等我使用时慢慢养成吧,使用标签的目的只有一个——迅速找到想要的文献

除此之外,由插件提供的附近功能尽量不要使用,因为很容易出问题,例如条目关联,阅读进度数据等。

学习笔记

与大部分人不同,对于通常办公需要的office三件套几乎不需要使用,我完全不关心Word和PPT中的各种模板和配置。

分析一下我目前的需求:

  • 需要大量使用LaTeX做数学笔记,基于markdown或者富文本的笔记软件都是不适合的:
    • 富文本笔记的导出和转换都很麻烦
    • 富文本和markdown对于LaTeX公式的支持都是远远不够的
  • 要求数据保存在本地,并且便于迁移,这一点决定了任何非本地的笔记软件也是不可接受的。(之前重度使用印象笔记来拍照记录上课的手写笔记,但是现在那些笔记的导出非常困难,就放在那儿吧)

因此,实际上当前的所有主流笔记软件(印象笔记,Notion,OneNote等)都不适合,也包括很多人重度使用的Obsidian。 我被迫选择在本地使用文件夹组织管理LaTeX笔记,使用VSCode编辑。

考虑到笔记的特点和数据安全性,需要基于Git仓库进行版本管理和备份,只使用单个主分支进行开发,使用USTC LUG提供的GitLab服务进行远程备份(私有仓库),提交信息使用英文,在重要节点使用标签标记。

使用LaTeX做笔记有一个天然的问题:必须准备合适的配置模板才能做到开箱即用,之前鼓捣了很多花里胡哨的模板,但是那些配置其实都不是必要的,因此删繁就简,将必要的配置整理为两个文件:

  • note-setup.tex:笔记配置模板
  • beamer-setup.tex:Beamer配置模板

放在Github上的仓库LaTeXZero,并且放置在本地的~/latexzero文件夹,使用时直接在开头input即可。

在本地使用一个文件夹管理所有的LaTeX笔记和Markdown笔记,例如~/Notes,主文件的模板通过VSCode snippet提供。

笔记仓库主体结构如下:

  • Archive:归档仓库,按照月份进行归档,例如Archive/2024-10/,由对应月份的Main仓库和记录文件合并而成。
  • Main:当前月份的主要笔记,包括一些主要的笔记条目,例如
    • Main/Note-10-04,其中包括Note-10-04.tex以及附属的bib文件,图片等。
    • Main/Beamer-10-09,其中包括Beamer-10-09.tex以及附属的bib文件,图片等。
  • Topic:一些零碎且简短的笔记条目,例如
    • Topic/lrmm-note,其中包括lrmm-note.tex以及附属的bib文件,图片等。
  • 当前月份的记录文件,例如2024-11-log.md

大致每个月底,将主笔记文件夹Main/中的内容以及记录文件2024-xx-log.md整理到归档文件夹Archive对应的月份文件夹下。

备份与同步

分析一下我目前的需求,有两类需求:

  • 第一类是基于网盘的备份:例如pdf资源,图片视频资源等。
  • 第二类是基于Git的备份:对应那些适合采用git备份的文本资源,例如学习笔记,各种项目代码,脚本等;

先考虑网盘备份,目前的各种商业网盘都不太同满足我的需求:

  • 国外的网盘有网络访问问题,而且付费版太贵了,例如Dropbox和Onedrive;
  • 国内的网盘有数据安全问题,这一点也是不可接收的,例如百度网盘,腾讯云盘。

因此自己又在云服务器上搭建了一个Cloudreve网盘,供个人使用,但是它的备份机制是我自己写的Python定时备份脚本,感觉还是不太可靠,最终还是选择付费的100G Onedrive吧。

目前关于云盘的所有使用详情如下:

  • 大部分情况:Onedrive(100G基础版)
  • Zotero的数据存储:坚果云(免费版)
  • 网上获得的各种资料(备考资料,软件资料等):百度网盘
  • 早期手机上的大量相册和视频:百度网盘(加密)
  • 学习笔记中的PDF:Cloudreve,便于跨平台查看(但是主要靠Git备份)

电脑桌面的很多垃圾最近终于被我清理完成了,顺便用Onedrive把桌面文档同步备份一下。(百度的同步空间非常垃圾,用是不可能用的)

下面的内容比较重要,因此采用多平台进行备份:

  • 学术备份(包括与毕业论文和期刊论文相关的文档和代码):打包压缩在三个平台备份(Onedrive + 睿客网 + 百度网盘)
  • 课程资料:Onedrive,打包备份在百度网盘

然后是基于Git仓库的备份,目前的使用分成两种情况:

  • 大部分情况下:使用Github(即使偶尔网络不好连不上也没事)
  • 与学习生活强相关的:考虑到安全性和可靠性,使用USTC LUG提供的GitLab服务 https://git.lug.ustc.edu.cn/