模板: 时长统计

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

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

主要思路是,获取今天 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" }

  • 思源笔记

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

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

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

相关帖子

欢迎来到这里!

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

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

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

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

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

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

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

    2 回复
  • crowds21

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

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

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

推荐标签 标签

  • VirtualBox

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

    10 引用 • 2 回帖 • 12 关注
  • 游戏

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

    169 引用 • 800 回帖 • 1 关注
  • Elasticsearch

    Elasticsearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

    116 引用 • 99 回帖 • 271 关注
  • Ngui

    Ngui 是一个 GUI 的排版显示引擎和跨平台的 GUI 应用程序开发框架,基于
    Node.js / OpenGL。目标是在此基础上开发 GUI 应用程序可拥有开发 WEB 应用般简单与速度同时兼顾 Native 应用程序的性能与体验。

    7 引用 • 9 回帖 • 345 关注
  • FreeMarker

    FreeMarker 是一款好用且功能强大的 Java 模版引擎。

    23 引用 • 20 回帖 • 425 关注
  • NetBeans

    NetBeans 是一个始于 1997 年的 Xelfi 计划,本身是捷克布拉格查理大学的数学及物理学院的学生计划。此计划延伸而成立了一家公司进而发展这个商用版本的 NetBeans IDE,直到 1999 年 Sun 买下此公司。Sun 于次年(2000 年)六月将 NetBeans IDE 开源,直到现在 NetBeans 的社群依然持续增长。

    78 引用 • 102 回帖 • 640 关注
  • 工具

    子曰:“工欲善其事,必先利其器。”

    276 引用 • 685 回帖
  • Tomcat

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

    162 引用 • 529 回帖 • 1 关注
  • Electron

    Electron 基于 Chromium 和 Node.js,让你可以使用 HTML、CSS 和 JavaScript 构建应用。它是一个由 GitHub 及众多贡献者组成的活跃社区共同维护的开源项目,兼容 Mac、Windows 和 Linux,它构建的应用可在这三个操作系统上面运行。

    15 引用 • 136 回帖 • 4 关注
  • 以太坊

    以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约、开源的底层系统。以太坊是一个平台和一种编程语言 Solidity,使开发人员能够建立和发布下一代去中心化应用。 以太坊可以用来编程、分散、担保和交易任何事物:投票、域名、金融交易所、众筹、公司管理、合同和知识产权等等。

    34 引用 • 367 回帖 • 1 关注
  • OpenStack

    OpenStack 是一个云操作系统,通过数据中心可控制大型的计算、存储、网络等资源池。所有的管理通过前端界面管理员就可以完成,同样也可以通过 Web 接口让最终用户部署资源。

    10 引用 • 5 关注
  • Pipe

    Pipe 是一款小而美的开源博客平台。Pipe 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!

    131 引用 • 1114 回帖 • 147 关注
  • IBM

    IBM(国际商业机器公司)或万国商业机器公司,简称 IBM(International Business Machines Corporation),总公司在纽约州阿蒙克市。1911 年托马斯·沃森创立于美国,是全球最大的信息技术和业务解决方案公司,拥有全球雇员 30 多万人,业务遍及 160 多个国家和地区。

    16 引用 • 53 回帖 • 126 关注
  • 前端

    前端技术一般分为前端设计和前端开发,前端设计可以理解为网站的视觉设计,前端开发则是网站的前台代码实现,包括 HTML、CSS 以及 JavaScript 等。

    247 引用 • 1347 回帖
  • RYMCU

    RYMCU 致力于打造一个即严谨又活泼、专业又不失有趣,为数百万人服务的开源嵌入式知识学习交流平台。

    4 引用 • 6 回帖 • 39 关注
  • Flutter

    Flutter 是谷歌的移动 UI 框架,可以快速在 iOS 和 Android 上构建高质量的原生用户界面。 Flutter 可以与现有的代码一起工作,它正在被越来越多的开发者和组织使用,并且 Flutter 是完全免费、开源的。

    39 引用 • 92 回帖 • 6 关注
  • 区块链

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

    91 引用 • 751 回帖
  • GraphQL

    GraphQL 是一个用于 API 的查询语言,是一个使用基于类型系统来执行查询的服务端运行时(类型系统由你的数据定义)。GraphQL 并没有和任何特定数据库或者存储引擎绑定,而是依靠你现有的代码和数据支撑。

    4 引用 • 3 回帖 • 20 关注
  • 开源

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

    397 引用 • 3418 回帖
  • FlowUs

    FlowUs.息流 个人及团队的新一代生产力工具。

    让复杂的信息管理更轻松、自由、充满创意。

    1 引用 • 1 关注
  • 支付宝

    支付宝是全球领先的独立第三方支付平台,致力于为广大用户提供安全快速的电子支付/网上支付/安全支付/手机支付体验,及转账收款/水电煤缴费/信用卡还款/AA 收款等生活服务应用。

    29 引用 • 347 回帖
  • CSS

    CSS(Cascading Style Sheet)“层叠样式表”是用于控制网页样式并允许将样式信息与网页内容分离的一种标记性语言。

    181 引用 • 448 回帖
  • 正则表达式

    正则表达式(Regular Expression)使用单个字符串来描述、匹配一系列遵循某个句法规则的字符串。

    31 引用 • 94 回帖 • 1 关注
  • CentOS

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

    238 引用 • 224 回帖 • 2 关注
  • Chrome

    Chrome 又称 Google 浏览器,是一个由谷歌公司开发的网页浏览器。该浏览器是基于其他开源软件所编写,包括 WebKit,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。

    60 引用 • 287 回帖 • 1 关注
  • JSON

    JSON (JavaScript Object Notation)是一种轻量级的数据交换格式。易于人类阅读和编写。同时也易于机器解析和生成。

    51 引用 • 190 回帖 • 1 关注
  • 小说

    小说是以刻画人物形象为中心,通过完整的故事情节和环境描写来反映社会生活的文学体裁。

    28 引用 • 108 回帖