在这里插入图片描述

简介

什么是 TimeTagger ?

TimeTagger 是一个开源的时间跟踪工具,旨在帮助用户记录和分析他们的时间使用情况。它提供了一个互动的用户界面和强大的报告功能,适合个人和自由职业者使用。

主要特点

  1. 直观的用户界面:基于互动时间线设计,用户可以轻松添加和管理时间标记。
  2. 轻量级标签系统:通过使用标签而非项目,使得时间跟踪更加灵活和简便。
  3. 多种报告格式:支持将时间记录导出为 PDFCSV 格式,便于分析和分享。
  4. 目标设定:用户可以设置每日、每周或每月的时间目标,帮助管理时间使用。
  5. 集成的番茄工作法:提供实验性的番茄工作法功能,促进专注工作。
  6. 设备间同步:支持在不同设备之间同步时间记录,方便随时随地访问。
  7. 自托管选项:用户可以选择在本地或服务器上运行 TimeTagger,提供灵活性。
  8. 易于部署:使用 SQLite 数据库,便于快速部署和管理。

应用场景

  • 个人时间管理:适合个人用户跟踪日常活动,提高时间使用效率。
  • 自由职业者:自由职业者可以使用 TimeTagger 来记录工作时间,方便计费和项目管理。
  • 团队协作:可用于团队项目管理,通过时间记录分析团队效率。
  • 研究与分析:学者和研究人员可以利用 TimeTagger 进行时间使用分析,优化工作流程。

TimeTagger 是一个功能丰富且易于使用的时间跟踪工具,适合各种用户。它的主要特点包括直观的 UI、灵活的标签系统和多种报告选项,能够有效帮助用户管理和分析时间使用。

准备

要生成登录凭证,需在浏览器中打开 https://timetagger.app/cred

输入用户名和密码,复制第三段代码

这段代码会用在环境变量 TIMETAGGER_CREDENTIALS

安装

在群晖上以 Docker 方式安装。

本文写作时, latest 版本对应为 v24.12.2

docker cli 安装

如果你熟悉命令行,可能用 docker cli 更快捷

# 新建文件夹 timetagger 和 子目录
mkdir -p /volume1/docker/timetagger/data# 进入 timetagger 目录
cd /volume1/docker/timetagger# 运行容器
docker run -d \--restart unless-stopped \--name timetagger \-p 8822:80 \-v $(pwd)/data:/opt/_timetagger \-e TIMETAGGER_BIND=0.0.0.0:80 \-e TIMETAGGER_DATADIR=/opt/_timetagger \-e TIMETAGGER_LOG_LEVEL=info \-e TIMETAGGER_CREDENTIALS=laosu:$$2a$$08$$sHvy4a8ZJVk1VDPMtnOX5.G3TcBbjPcmO8W4ZI1hWptDCze29EhVK \ghcr.io/almarklein/timetagger:latest

环境变量的简单说明如下

可变
TIMETAGGER_BIND指定应用程序绑定的地址和端口
TIMETAGGER_DATADIR设置数据目录的路径
TIMETAGGER_LOG_LEVEL设置日志记录的级别
TIMETAGGER_CREDENTIALS设置应用程序的访问凭据。以 用户名:密码 的形式提供,用于身份验证

docker-compose 安装

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

version: "3"services:timetagger:image: ghcr.io/almarklein/timetagger:latestcontainer_name: timetaggerports:- "8822:80"volumes:- ./data:/opt/_timetaggerenvironment:- TIMETAGGER_BIND=0.0.0.0:80- TIMETAGGER_DATADIR=/opt/_timetagger- TIMETAGGER_LOG_LEVEL=info- TIMETAGGER_CREDENTIALS=laosu:$$2a$$08$$sHvy4a8ZJVk1VDPMtnOX5.G3TcBbjPcmO8W4ZI1hWptDCze29EhVK

然后执行下面的命令

# 新建文件夹 timetagger 和 子目录
mkdir -p /volume1/docker/timetagger/data# 进入 timetagger 目录
cd /volume1/docker/timetagger# 将 docker-compose.yml 放入当前目录# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:8822

可以进 Demo 看看

真正使用,要进 App

需要登录

登录成功后的主界面

进入设置

可以根据需要进行修改和调整

主界面点 Record 开始跟踪时间

除了 Web 外,TimeTagger 还提供了命令行和 VS Code 插件,方便标记您的时间。如果不知道怎么用,可以看看 Demo 和官方的说明文档

参考文档

almarklein/timetagger: Tag your time, get the insight
地址:https://github.com/almarklein/timetagger

TimeTagger - Tag your time, get the insight
地址:https://timetagger.app/

TimeTagger
地址:https://timetagger.readthedocs.io

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/94321.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/94321.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/94321.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习游戏制作记录(角色属性和状态脚本)8.4

1.实现简单的角色属性创建CharactorState脚本:挂载在敌人和玩家身上public float damage;//角色伤害public float maxHp;//最大生命[SerializeField] private float currentHealth;//当前生命void Start(){currentHealth maxHp;//初始化将当前生命设置为最大生命}p…

04-Chapter02-Example01

文章介绍 1、完善项目结构 1.1 新建第二章对应模块Chapter021.2 新建模块Chapter02对应包com.itheima1.3 在包com.itheima下新建class类 ,类名称Example01.java项目结构如下:2、编写Example01.java代码 P38 package com.itheima;public class Example01…

【达梦MPP(带主备)集群搭建】

达梦MPP(带主备)集群搭建 为了提高MPP系统可靠性,克服由于单节点故障导致整个系统不能继续正常工作的问题,DM在普通的MPP系统基础上,引入数据守护主备机制,为每一个MPP节点配置一个实时备库作为备份节点&a…

Java基础学习(一):类名规范、返回值、注释、数据类型

目录 一、类名规范二、返回值三、注释四、数据类型 1. 基本类型2. 引用类型3. 强制数据类型转换4. 进制5. 进制的转换6. 超范围运算 相关文章 Java基础学习(二):Java中的变量和常量、final(重点)、运算、字符串 了…

Nginx相关实验(2)

nginx的一些高级配置 nginx状态页 基于nginx 模块 ngx_http_stub_status_module 实现, 在编译安装nginx的时候需要添加编译参数 --with-http_stub_status_module 否则配置完成之后监测会是提示语法错误 #检查模块是否配置 如果不存在需要添加模块重新编译 nginx …

2.Java和C++有什么区别

2.Java和C有什么区别 1.在C中,支持操作符重载,而在Java里是不允许的 2.C支持多继承,而Java不可以,但Java可以单继承多实现 3.Java内置多线程机制,而C没有 4.Java里面自带了垃圾回收机制,可以自动清理缓存等…

MLIR Introduction

简介 MLIR 项目是一个构建可重用和可扩展编译器基础设施创新项目,旨在解决软件碎片化问题,显著降低构建特定领域编译器的成本。 基于MLIR,可以实现: 数据流图表达(如TensorFlow),包含dynamic…

[找出字符串中第一个匹配项的下标]

代码思路分析: 1. 边界情况处理 代码中没有显式处理以下边界情况,但逻辑已隐含支持: needle 为空字符串:应返回 0(但题目通常保证 needle 非空)。haystack 比 needle 短:直接返回 -1&#xff08…

深入剖析RT-Thread串口驱动:基于STM32H750的FinSH Shell全链路Trace分析与实战解密(上)

0. 概述 这是cherryusb代码trace分析系列文章之七。 RT-Thread串口驱动框架与FinSH Shell运行机制深度解析:针对STM32H750 ART-PI平台,本文独辟蹊径采用创新的代码trace分析方法,破解庞大串口框架下的复杂运行逻辑。通过精确trace日志与drv_u…

Python与C++通信教程:C++打包dll,供Python调用(1)

目录 1,新建一个工程 math_functions.cpp内容: 先编译一下看是否可以正常运行: 2,编译成dll,并用Python调用 有两种方式: 命令 1(使用静态链接): 可移植性: 命令 2(动态链接): 可移植性: 这里我使用的是静态链接的方式: python调用实例 test_dll.py 1,…

编程与数学 03-002 计算机网络 19_网络新技术研究

编程与数学 03-002 计算机网络 19_网络新技术研究一、软件定义网络(SDN)(一)SDN的基本原理与架构(二)SDN的应用场景与优势二、网络功能虚拟化(NFV)(一)NFV的概…

uniapp 跨端开发

一、创建uniapp项目 1. 项目架构2. 初始化项目3. pages.json 和 tabBar 案例4. uni-app和原生小程序开发区别5. 用命令行创建uni-app项目 官网链接:https://uniapp.dcloud.net.cn/quickstart-cli.html#创建uni-app6. 用vscode开发uni-app在uni-app中只有manifest.js…

区块链支付技术的核心原理

区块链支付利用分布式账本技术(DLT)实现点对点的价值转移,无需传统银行或支付网关的中介。核心特点是去中心化、透明、可追溯。• 基本流程:1. 用户发起交易:通过加密货币钱包发送支付请求(例如用ETH支付&a…

linux中 多进程 导致cuda错误的问题解决

问题总结与解决方案 核心问题 在使用 Linux 系统时,多进程并行计算中加载模型到 GPU 时出现错误:_MODEL SentenceTransformer( model_path, device "cuda" if torch.cuda.is_available() else "cpu" )根本原因: CUDA 上…

智能感知的新入口:AIGC 与低延迟视频通路的深度融合

✳️ 引言:AIGC,正在重构视觉智能的“生成逻辑” AI生成内容(AIGC)正在从“内容创作工具”跃升为计算机视觉系统的新引擎。它不再只是“文生图”、“图生文”的演示技术,而是实实在在地改变着我们构建、处理和理解视觉…

Ubuntu 内网多台服务器时间同步方案(适用于临时能上外网的环境)

哎,最近项目是运行在内网环境下的,出现了由于时间不同步导致的bug。一般来讲,几台服务器的时间不一致,会带来很多问题,比如日志时间对不上、分布式服务出现异常,等等。项目上现在有三台服务器,其…

延长电池寿命的低Iq技术

本文章是笔者整理的备忘笔记。希望在帮助自己温习避免遗忘的同时,也能帮助其他需要参考的朋友。如有谬误,欢迎大家进行指正。一、概述随着电池供电型应用的激增,人们对质优价廉的电池和电池包的需求持续猛涨。电池制造商们不断采用新的化学物…

QT 如何实现enum与字符串的互转

将enum中定义的枚举值,以字符串的形式写入文件,同时也能从字符串转为枚举值。举例说明: ColorSelector中的Colors枚举,我们希望 kColorRed 这个写入到本地文件时,可以直接保存“kColorRed”,而非kColorRed对…

SLAM卷不动了,机器人还有哪些方向能做?

关注gongzhonghao【CVPR顶会精选】众所周知,机器人因复杂环境适应性差、硬件部署成本高,对高效泛化一直需求迫切。再加上多传感器协同难题、真实场景数据获取不易,当下对迁移学习 机器人智能融合的研究也就更热烈了。不过显然,这…

H.266 vs H.265/AV1/H.264:从工程落地看下一代视频系统的技术演进

一、背景:编解码标准演进背后的技术驱动 视频编码标准的更迭,从未只是一次简单的技术升级,而是对码率压缩效率、编码复杂度与画质质量三者之间平衡点的持续探索。在 H.264 成为全平台事实标准的十余年里,它成功支撑了 SD 至 1080…