使用Logseq构建GTD系统
2021-05-08: 1.0版本初步完成,待完善已完成任务回顾
2021-05-10: 1.1版本完成,修改不重要不紧急为将来清单,且新增每周回顾
前言
最近在阅读《小强升职记》,感觉里面讲到的时间管理工具和方法十分有用,自己之前虽然也了解一些工具,例如四象限原则、两分钟方法等,但看完这本书之后感觉之前的理解还是太肤浅了。是时候升级一下自己的时间管理系统了。
在此之前我的工具大致包括: 稍后读软件、GTD工具(滴答清单)、写作工具(一般是VSCode+Hexo)。最近半年沉迷于使用双链笔记软件,目前在用的是 Logseq,后面专门展开介绍一下。目前在尝试将GTD工具、笔记都整合到 Logseq 里面,主要是受了这篇文章的启发 OKR + GTD + Note => Logseq,下面就详细介绍一下我的实践过程。
前置知识
Datalog
首先,需要简单学习一下Datalog语法。Logseq是基于Clojure开发的,它的底层可以简单地理解为是类似于数据库的结构,因此可以天然的支持各种查询,这也是我们能够利用它来实现 GTD 管理的前提。因此这里如果需要掌握如何使用 Logseq 来进行查询的话,最好先学习一下如何使用 Datalog。可以参考 官方的查询教程 以及这篇 Learn Datalog Today,粗略扫一遍,能够看懂大概意思就可以了。
CSS
其次,Logseq本身是列表大纲形式,无法直接支持四象限这种样式,因此需要一些 CSS功底,这里我是直接参考了 OKR + GTD + Note => Logseq 里面的样式,原始版本在 [css+template] eisenhower matrix,可以简单看下。
使用步骤
块属性
《小强升职记》里面提到日常待办事项是分为项目、任务、行动三种的,只有行动才是可以立马去执行的,项目和任务都需要进行分解,拆成行动。
结合Logseq,我目前考虑使用属性来解决,也可以考虑使用标签,不过我认为会对内容有一定的污染,各有利弊吧。
针对一个新的行动或者任务,添加属性type字段,然后根据具体的类型添加行动、任务、项目字段。
样例:
四象限查询条件
注意:所有的待办都必须要有明确的优先级和截止日期,这么做有几个原因:
1. 要求自己对每个待办都设置明确的时间点,避免添加到收集箱中一直不处理
2. 添加了优先级之后才好进行四象限统计
3. 目前还没有找到Logseq的query条件中如何同时查找DDL在限定时间内以及无DDL限制的任务,只能查找其中一种case,这个后续解决
实际使用过程中,可以把一下的查询条件汇总到一个模板中,
## #.v-eisenhower-matrix (用于CSS选择器,最好不要改)
:PROPERTIES:
:template: 四象限
:END:
#### [[重要且紧急]]
#####
#+BEGIN_QUERY
...
#+END_QUERY
#### [[重要不紧急]]
#### [[紧急不重要]]
#### [[不重要不紧急]]
具体查询语句如下:可以根据自己的实际使用需求将属性限制移除或者修改时间限制,代码中均已经添加注释。
2021-05-10 补充: 将设置为Later的事项移动到第四象限,这样就可以定期回顾;同时新增一个每周回顾的query语句,由于目前Logseq还不支持查询当前时间戳,因此用了个笨办法,每次查询的时候手动输入当前时间戳ms进行查询。
[[重要且紧急]] 避免太多进入该象限^
#+BEGIN_QUERY
{:query [:find (pull ?b [*])
:in $ ?end
:where
[?b :block/marker ?marker]
[?b :block/priority "A"] ;; 优先级在A的才认为是重要
[?b :block/properties ?p]
[(get ?p "type") ?t]
[(contains? #{"任务" "行动" "项目"} ?t)] ;; 属性中type字段包含这三种
[(contains? #{"TODO" "DOING" "NOW"} ?marker)] ;; 不包含已完成任务,不包含LATER
(or
[?b :block/scheduled ?d]
[?b :block/deadline ?d])
[(<= ?d ?end)]
]
:inputs [:5d-after] ;; 时间跨度,5天内的算作紧急
}
#+END_QUERY
[[重要不紧急]] 优先完成此象限^
#+BEGIN_QUERY
{ :query [:find (pull ?b [*])
:in $ ?end
:where
[?b :block/marker ?marker]
[?b :block/priority "A"] ;; 优先级在A的才认为是重要
[?b :block/properties ?p]
[(get ?p "type") ?t]
[(contains? #{"任务" "行动" "项目"} ?t)] ;; 属性中type字段包含这三种
[(contains? #{"TODO" "DOING" "NOW"} ?marker)] ;; 不包含已完成任务,不包含LATER
(or
[?b :block/scheduled ?d]
[?b :block/deadline ?d])
[(> ?d ?end)] ;; DDL在5天以上
]
:inputs [:5d-after] ;; 时间跨度,5天内的算作紧急
}
#+END_QUERY
[[紧急不重要]] 尽量委派给其他人^
#+BEGIN_QUERY
{ :query [:find (pull ?b [*])
:in $ ?end
:where
[?b :block/marker ?marker]
[?b :block/properties ?p]
[?b :block/priority ?priority]
[(get ?p "type") ?t]
[(contains? #{"任务" "行动" "项目"} ?t)] ;; 属性中type字段包含这三种
[(contains? #{"TODO" "DOING" "NOW"} ?marker)] ;; 不包含已完成任务,不包含LATER
[(!= "A" ?priority)] ;; 优先级在A的才认为是重要
(or
[?b :block/scheduled ?d]
[?b :block/deadline ?d])
[(<= ?d ?end)]
]
:inputs [:5d-after] ;; 时间跨度,5天内的算作紧急
}
#+END_QUERY
[[待办清单]] 不紧急不重要,定期回顾确认^
#+BEGIN_QUERY
{ :query [:find (pull ?b [*])
:where
[?b :block/marker ?marker]
[(contains? #{"LATER"} ?marker)]
]
}
#+END_QUERY
[[本周已完成]] 近七天统计^
#+BEGIN_QUERY
{ :query [:find (pull ?b [*])
:where
[?b :block/marker ?marker]
[?b :block/properties ?p]
[(get ?p "done") ?finishedTime]
[(- 1620657776000 604800000) ?weekbefore] ;; 由于目前Logseq不支持直接获取当前时间戳,只能使用trick的方式,每次查询前手动输入当前时间戳ms值,算出一周前的时间戳
[(>= ?finishedTime ?weekbefore)] ;; 一周内完成的工作
[(= "DONE" ?marker)]
]
}
#+END_QUERY
CSS优化
这里直接照抄了 OKR + GTD + Note => Logseq, 不过它的CSS中内容较多,我单独提取了四象限相关的部分,放在 四象限CSS 中,查询模板也都放在这里,便于大家使用。
最终效果
目前我的每日笔记大概长这样:

1.1 版本已经解决
可以算是1.0 版本,目前存在的问题包括:
没有地方定期回顾那些没有设置DDL和优先级的任务缺少查看已完成任务和行动的地方(做周报时候很有用)
Logseq是个很棒的工具,期待尽快稳定下来,后面长期使用,作为笔记+GTD一站式平台~
使用Logseq构建GTD系统的更多相关文章
- Linux From Scratch(从零开始构建Linux系统,简称LFS)- Version 7.7(二)
七. 构建临时系统 1. 通用编译指南 a. 确认是否正确设置了 LFS 环境变量 echo $LFS b. 假定你已经正确地设置了宿主系统的符号链接: 1)shell 使用的是 bash. 2)sh ...
- Spring Boot中使用 Spring Security 构建权限系统
Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架.它提供了一组可以在Spring应用上下文中配置的Bean,为应用系统提供声明式的安全 ...
- 在TensorFlow中基于lstm构建分词系统笔记
在TensorFlow中基于lstm构建分词系统笔记(一) https://www.jianshu.com/p/ccb805b9f014 前言 我打算基于lstm构建一个分词系统,通过这个例子来学习下 ...
- Linux From Scratch(从零开始构建Linux系统,简称LFS)(二)
七. 构建临时系统 1. 通用编译指南 a. 确认是否正确设置了 LFS 环境变量 echo $LFS b. 假定你已经正确地设置了宿主系统需求和符号链接 c. 对于每个软件包: (1). 确保解压软 ...
- LFS7.10——构建LFS系统
参考:LFS7.10——准备Host系统 LFS7.10——构造临时Linux系统 本文正式开始构建LFS系统,后面所有命令的执行都是在root用户下完成的. 这时开始构建LFS前准备工作 更改$LF ...
- Linux From Scratch(从零开始构建Linux系统,简称LFS)- Version 7.7(一)
一. 准备工作 1. 需要一个Linux宿主系统,例如早先版本的 LFS,Ubuntu/Fedora,SuSE 或者是在你的架构上可以运行的其它发行版 如果想实现Win7与Linux双系统,可参考我的 ...
- Raspberry Pi(树莓派)上从零开始构建Linux系统(简称PiLFS)(一)
一. 准备工作 1. 装有Linux宿主系统的树莓派主板,可参考 Raspberry Pi(树莓派)上安装Raspbian(无路由器,无显示器) 2. 参考网址:Linux From Scratch ...
- 基于Spring、SpringMVC、MyBatis、Druid、Shrio构建web系统
源码下载地址:https://github.com/shuaijunlan/Autumn-Framework 在线Demo:http://autumn.shuaijunlan.cn 项目介绍 Autu ...
- alfs学习笔记-自动化构建lfs系统
我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! 一名linux爱好者,记录构建Linux From Scratch的过程 经博客园-骏马金龙前辈介绍,开始接触学习lfs,用博客 ...
随机推荐
- C 字符串奇数位小写字母转大写
如题 C实现 #include<stdio.h> #include<string.h> #define COUNT 20 //最大接受字符串数,可以使用动态获取空间函数优化 v ...
- spring学习四:Spring中的后置处理器BeanPostProcessor
BeanPostProcessor接口作用: 如果我们想在Spring容器中完成bean实例化.配置以及其他初始化方法前后要添加一些自己逻辑处理.我们需要定义一个或多个BeanPostProcesso ...
- Linux Makefile 生成 *.d 依赖文件及 gcc -M -MF -MP 等相关选项说明
1. 为什么要使用后缀名为 .d 的依赖文件? 在 Makefile 中, 我们的依赖关系可能需要包含一系列的头文件.比如main.c 源文件内容如下: #include "stdio.h& ...
- opencv结构IplImage
转载请注明来源:https://www.cnblogs.com/hookjc/ typedef struct _IplImage{int nSize; /* Ip ...
- 为什么大厂前端监控都在用GIF做埋点?
什么是前端监控? 它指的是通过一定的手段来获取用户行为以及跟踪产品在用户端的使用情况,并以监控数据为基础,为产品优化指明方向,为用户提供更加精确.完善的服务. 如果这篇文章有帮助到你,️关注+点赞️鼓 ...
- Solution -「NOI 2020」「洛谷 P6776」超现实树
\(\mathcal{Description}\) Link. 对于非空二叉树 \(T\),定义 \(\operatorname{grow}(T)\) 为所有能通过若干次"替换 \( ...
- traceroute实用命令总结
在工作中,我们经常会使用到traceroute进行追踪路由,从而判断网络的故障点,或者网络策略限制等原因.对于网络排查traceroute还是有很大用处的. 一.traceroute常用命令参数 用法 ...
- suse 12 二进制部署 Kubernetets 1.19.7 - 第03章 - 部署flannel插件
文章目录 1.3.部署flannel网络 1.3.0.下载flannel二进制文件 1.3.1.创建flannel证书和私钥 1.3.2.生成flannel证书和私钥 1.3.3.将pod网段写入et ...
- tip8:CentOS8安装ftp服务器
之前习惯使用OpenSuse,其图形化的安装.现在刚开始使用CentOS,老老实实使用命令吧! 1.本地cmd命令ftp链接虚拟机无法链接.查出虚拟机ftp服务是否开启:没有 ps -ef|grep ...
- Spring的AOP的底层实现原理?
aop是ioc的一个扩展功能,先有的ioc,再有的aop,只是在ioc的整个流程中新增的一个扩展点而已:BeanPostProcessor 底层实现用的是动态代理 AOP应用场景 场景一: 记录日志 ...