模板: 时长统计

本贴最后更新于 1113 天前,其中的信息可能已经时移世易

我一直都想把《自控力》里读到的一些东西和思源相结合.但一直没有头绪,最近对模板更熟悉一些了,所以实现了一个挺有意思的功能, 输出你在这个文档中编辑的时长,和中断编辑的时间.

主要思路是,获取今天 0 点的字符串,通过 SQL 获取大于该串的 Block,并按照从小到大排序.

依次,两者之间相减,如果时间小于 15min 进行下一次循环.

如果两者之间的间隔大于 15min,则视为,我分心了,去玩手机或者倒腾其他有意思的东西去了. 然后计算出今天的第一次编辑上一次编辑之间的时间间隔.

然后再将这一次编辑的时间,记录为 thisBlock (第一次编辑) 重复上述两两相减的过程.

最后将每一次时间段相加,得到一个总的时长.结果难免会有一点误差,但对于复盘是绰绰有余的.

效果(开小差现场)

下图是调整过 CSS 之后的效果 , 模板生成的是一个带有属性的超级块, 因此调整 CSS 还算是方便.

image.png

Templates
.action{/*获取文档的基本信息*/}
.action{$docID:=.id}
.action{$docTitle := .title}
.action{$docBox :=" "}
.action{$docPath := " "}
.action{$docCreated := " "}
.action{$docUpdated := " "}
.action{$getDocInfo := (queryBlocks "SELECT * FROM blocks WHERE id='?' and type='d' " $docID )}
.action{range $v:= $getDocInfo}
	.action{$docBox =$v.Box}
	.action{$docPath = $v.Path}
	.action{$docCreated = toDate "20060102150405" $v.Created | date "2006-01-02"}
	.action{$docUpdated = $v.Updated}
.action{end}

.action{/*获取今天的开始时间*/}
.action{$today:=now|date "20060102"}
.action{$today = cat $today "000000"}
.action{$today = nospace $today}
.action{/*定义变量*/}
.action{$firstBlock := " "}
.action{$thisBlock := " "}
.action{$lastBlock := " "}
.action{$duration:= 0.0}
.action{$workHours:= 0.0}
.action{$flag := 0}

.action{/*获取中断时间和总时长*/}
{{{row
.action{$recent_block := (queryBlocks "SELECT * FROM blocks WHERE root_id = '?'  and updated >'?' order by updated limit -1 " $docID $today)}
.action{range $index,$v:=$recent_block}
	.action{$thisBlock = $v.Updated}
	.action{/*获取今天第一个创建的块*/}
	.action{if eq $index 0}
		.action{$firstBlock = $v.Updated }
		.action{$lastBlock = $firstBlock}
	.action{else}
		.action{$duration:= ((toDate "20060102150405" $thisBlock).Sub  (toDate "20060102150405" $lastBlock)).Minutes }
		.action{if gt $duration 15.0 }
		.action{$flag = 1}
@Interrupted .action{toDate "20060102150405" $firstBlock | date "15:04"} - .action{toDate "20060102150405" $lastBlock | date "15:04"}
			.action{$workHours = addf $workHours ((toDate "20060102150405" $lastBlock).Sub  (toDate "20060102150405" $firstBlock)).Minutes }
			.action{$firstBlock = $thisBlock}
		.action{end}
	.action{end}
	.action{$lastBlock = $thisBlock}
.action{end}

.action{/*如果中途有被打断,输出最后一段时间*/}
.action{if eq $flag 1}
	@Interrupted .action{toDate "20060102150405" $firstBlock | date "15:04"} - .action{toDate "20060102150405" $lastBlock | date "15:04"}
.action{end}
.action{$workHours = addf $workHours ((toDate "20060102150405" $lastBlock).Sub  (toDate "20060102150405" $firstBlock)).Minutes }

.action{$workHours = (divf ($workHours|int64) 60)| toString }
.action{$workHours = regexFind "\\w*\\.\\w\\w" $workHours}
@Duration .action{now|date "2006-01-02 15:04:05"} | .action{$workHours}h
}}}
{: name="@DocInfo" alias="@Duration" }

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    20645 引用 • 80700 回帖 • 2 关注
1 操作
crowds21 在 2021-08-07 22:10:11 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • crowds21

    自控力中强调的一个基础是,你需要训练自己的自控力. 意识到自己在做决定,意识到自己分心了.

    焦点是自我觉察,所以这个模板的意义是对于刚开始意识不到自己分心,导致多次中断的时候,能够在最后做出一个统计,让自己意识到自己其实只专注了多久.

    每个人时间管理的方式不一样.对于一些事情,我个人不喜欢番茄的方式. TODO 也只不过是一个待办清单,和训练注意力没有啥关系.

  • 其他回帖
  • 自控力正在看第二遍。。。

    番茄 todo 之类的应该更适合吧。。。

    2 回复
  • crowds21

    我暂时的计划是将前几章的章节训练,适当的和思源结合做成一些模板,这样子之后对那些开始阅读这本书的人,提供了一个很好的训练机会.我周围一些朋友读完这本书,并没有尝试去做里面讲到的一些"练习".蛮可惜的.

    当然这个过程会比较久,我也需要重头再去一步步做一下,看看有没有什么不影响正常记笔记的方式. 如果真的整合成一个套的话,我就肯定不会发帖子了,直接发集市了.

crowds21
不带评论的观察是人类智力的最高形式 上海

推荐标签 标签

  • Telegram

    Telegram 是一个非盈利性、基于云端的即时消息服务。它提供了支持各大操作系统平台的开源的客户端,也提供了很多强大的 APIs 给开发者创建自己的客户端和机器人。

    5 引用 • 35 回帖 • 1 关注
  • Quicker

    Quicker 您的指尖工具箱!操作更少,收获更多!

    28 引用 • 101 回帖
  • H2

    H2 是一个开源的嵌入式数据库引擎,采用 Java 语言编写,不受平台的限制,同时 H2 提供了一个十分方便的 web 控制台用于操作和管理数据库内容。H2 还提供兼容模式,可以兼容一些主流的数据库,因此采用 H2 作为开发期的数据库非常方便。

    11 引用 • 54 回帖 • 650 关注
  • webpack

    webpack 是一个用于前端开发的模块加载器和打包工具,它能把各种资源,例如 JS、CSS(less/sass)、图片等都作为模块来使用和处理。

    41 引用 • 130 回帖 • 274 关注
  • VirtualBox

    VirtualBox 是一款开源虚拟机软件,最早由德国 Innotek 公司开发,由 Sun Microsystems 公司出品的软件,使用 Qt 编写,在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。

    10 引用 • 2 回帖 • 11 关注
  • 开源

    Open Source, Open Mind, Open Sight, Open Future!

    405 引用 • 3558 回帖
  • Git

    Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

    206 引用 • 358 回帖 • 1 关注
  • RESTful

    一种软件架构设计风格而不是标准,提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

    30 引用 • 114 回帖
  • Sillot

    Insights(注意当前设置 master 为默认分支)

    汐洛彖夲肜矩阵(Sillot T☳Converbenk Matrix),致力于服务智慧新彖乄,具有彖乄驱动、极致优雅、开发者友好的特点。其中汐洛绞架(Sillot-Gibbet)基于自思源笔记(siyuan-note),前身是思源笔记汐洛版(更早是思源笔记汐洛分支),是智慧新录乄终端(多端融合,移动端优先)。

    主仓库地址:Hi-Windom/Sillot

    文档地址:sillot.db.sc.cn

    注意事项:

    1. ⚠️ 汐洛仍在早期开发阶段,尚不稳定
    2. ⚠️ 汐洛并非面向普通用户设计,使用前请了解风险
    3. ⚠️ 汐洛绞架基于思源笔记,开发者尽最大努力与思源笔记保持兼容,但无法实现 100% 兼容
    29 引用 • 25 回帖 • 59 关注
  • CentOS

    CentOS(Community Enterprise Operating System)是 Linux 发行版之一,它是来自于 Red Hat Enterprise Linux 依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定的服务器以 CentOS 替代商业版的 Red Hat Enterprise Linux 使用。两者的不同在于 CentOS 并不包含封闭源代码软件。

    238 引用 • 224 回帖 • 2 关注
  • 游戏

    沉迷游戏伤身,强撸灰飞烟灭。

    174 引用 • 814 回帖
  • 阿里巴巴

    阿里巴巴网络技术有限公司(简称:阿里巴巴集团)是以曾担任英语教师的马云为首的 18 人,于 1999 年在中国杭州创立,他们相信互联网能够创造公平的竞争环境,让小企业通过创新与科技扩展业务,并在参与国内或全球市场竞争时处于更有利的位置。

    43 引用 • 221 回帖 • 169 关注
  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:SymSoloVditor思源笔记

    1081 引用 • 3459 回帖 • 241 关注
  • CSDN

    CSDN (Chinese Software Developer Network) 创立于 1999 年,是中国的 IT 社区和服务平台,为中国的软件开发者和 IT 从业者提供知识传播、职业发展、软件开发等全生命周期服务,满足他们在职业发展中学习及共享知识和信息、建立职业发展社交圈、通过软件开发实现技术商业化等刚性需求。

    14 引用 • 155 回帖
  • Ubuntu

    Ubuntu(友帮拓、优般图、乌班图)是一个以桌面应用为主的 Linux 操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词,意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的“仁爱”思想。Ubuntu 的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由自由软件构建而成的操作系统。

    123 引用 • 168 回帖
  • Typecho

    Typecho 是一款博客程序,它在 GPLv2 许可证下发行,基于 PHP 构建,可以运行在各种平台上,支持多种数据库(MySQL、PostgreSQL、SQLite)。

    12 引用 • 65 回帖 • 456 关注
  • Love2D

    Love2D 是一个开源的, 跨平台的 2D 游戏引擎。使用纯 Lua 脚本来进行游戏开发。目前支持的平台有 Windows, Mac OS X, Linux, Android 和 iOS。

    14 引用 • 53 回帖 • 526 关注
  • jQuery

    jQuery 是一套跨浏览器的 JavaScript 库,强化 HTML 与 JavaScript 之间的操作。由 John Resig 在 2006 年 1 月的 BarCamp NYC 上释出第一个版本。全球约有 28% 的网站使用 jQuery,是非常受欢迎的 JavaScript 库。

    63 引用 • 134 回帖 • 728 关注
  • 程序员

    程序员是从事程序开发、程序维护的专业人员。

    546 引用 • 3531 回帖 • 1 关注
  • Google

    Google(Google Inc.,NASDAQ:GOOG)是一家美国上市公司(公有股份公司),于 1998 年 9 月 7 日以私有股份公司的形式创立,设计并管理一个互联网搜索引擎。Google 公司的总部称作“Googleplex”,它位于加利福尼亚山景城。Google 目前被公认为是全球规模最大的搜索引擎,它提供了简单易用的免费服务。不作恶(Don't be evil)是谷歌公司的一项非正式的公司口号。

    49 引用 • 192 回帖 • 1 关注
  • V2Ray
    1 引用 • 15 回帖 • 3 关注
  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    540 引用 • 672 回帖
  • Postman

    Postman 是一款简单好用的 HTTP API 调试工具。

    4 引用 • 3 回帖
  • 设计模式

    设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

    198 引用 • 120 回帖
  • 区块链

    区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法 。

    91 引用 • 751 回帖
  • Tomcat

    Tomcat 最早是由 Sun Microsystems 开发的一个 Servlet 容器,在 1999 年被捐献给 ASF(Apache Software Foundation),隶属于 Jakarta 项目,现在已经独立为一个顶级项目。Tomcat 主要实现了 JavaEE 中的 Servlet、JSP 规范,同时也提供 HTTP 服务,是市场上非常流行的 Java Web 容器。

    162 引用 • 529 回帖 • 4 关注
  • IPFS

    IPFS(InterPlanetary File System,星际文件系统)是永久的、去中心化保存和共享文件的方法,这是一种内容可寻址、版本化、点对点超媒体的分布式协议。请浏览 IPFS 入门笔记了解更多细节。

    20 引用 • 245 回帖 • 249 关注