walkdoer / Life-Time-Tracker

个人时间跟踪,可视化个人活动数据,管理个人生活,利用过去来指导未来,基于柳比歇夫的统计方法

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Life Time Tracker

这个软件有什么用?

Life Time Tracker是一个做个人时间统计的工具,读了《奇特的一生》之后,想实践柳比歇夫的统计方法。但是没有找到就手的工具,所以决定自己开发一个,顺便尝试一下nwjs + react的组合来开发桌面App,同时也实践近一段时间在学习的数据可视化。

现在文档较少,bug比较多,还是请多包涵。

安装

暂时不提供App的下载, 需要的请自行clone项目,然后进行构建生成软件 目前只支持 osx, 后面有时间再计划支持主要的平台

安装前请确定你有下列依赖

  • node
  • gulp npm install -g gulp
  • bower npm instll -g bower
  • mongodb >= 3.0.0
mongodb的安装

如果你是osx, 可以通过homebrew进行安装,如果没有homebrew,请看这里

brew update
brew install mongodb

启动

mongod

或者可以指定数据的保存位置, 注意,文件夹要先创建好,否则会报错

mongod --dbpath ~/data/db

如果是windows, 可以到mongodb官网下载

生成App

######1.先安装依赖

npm install
bower install

######2. 构建

gulp deploy
#默认使用最新版本的nw.js
gulp nw
#如果最新版本的使用不了,可以指定版本号进行构建
gulp nw --version 0.12.3

就这样子完成了,然后会在 productions目录下生成app文件

使用

采用文本日志的形式来记录时间,对时间进行多维度的描述,尽可能的还原这段时间的真相,为后面的统计积累数据。

采用纯文本的日志记录是因为,效率和方便分析与存储

在介绍概念之前,请看一个例子,这里模拟一天的日志,请看看你能否看懂。看不懂没关系,看到后面的概念介绍你就会明白的。

8:45
8:45~9:06 {NT}[修身]
9:06~9:27 {NT}[交通]
9:27~9:40 {NT}[早餐]
10:01~10:40 {WK}[文档]<SuperAI>(编写API文档:pg=30 link="http://某个链接地址")  这是一些注释,pg表示进度,link表示连接地址
10:40~11:26 {WK}[问题排查]<Circle>$0.1.0$(排查无法上传文档的问题) 可能是Content-type问题
11:40~11:52 {WK} 处理一些工作琐事
12:16~12:46 {NT}[lunch] 午餐的时候和@(杰子)聊天,好搞笑
12:47~12:57 {STU}[生物]<每天一个TED>(走进蜜蜂生命中的最初21天)
12:58~13:16 {STU}[启发,社会]<每天一个TED>(怎样复苏一个社区:用想象力、美和艺术) 如何从无到有去创造一样东西
13:17~13:39 {BRK}[午休]
14:33~14:38 {WK}[编程,优化]<life-time-tracker>$0.1.11$(未完成高亮优化) 当修改的时候一并进行移动
14:38~16:52 {WK}[编程,优化]<life-time-tracker>$0.1.11$(高亮日志功能:pg=100) starlog ,用于star行,提高可读性,这个功能算是完成了
17:04~17:18 {SPR}[散步]
17:28~18:02 {WK}[开发工具]<DED>$1.3.5$(添加Grunt-gzip到generator-act中)
18:02~18:52 {WK}[问题排查]<DED>$1.3.5$(Nginx 499问题排查) have no clue
19:16~19:40 {NT}[supper]
19:40~20:18 {WK}[问题排查]<DED>$1.3.5$(Nginx 499问题排查) 可能是中间加速设备,但是无法追踪
21:00~23:10 {WK}[预研]<Circle>$0.1.0$(设计一个信息采集器:pg=10) scrapy抓取知乎
23:12~23:35 {NT}[交通]
23:35~00:28 {BRK}[听音乐]
00:40~1:30 {ENT}[tv,美剧]<冰血暴>$第一季$(1)
1:30

日志格式

其中涉及到几个分类的方式

类别

{} 来表示, 例如 {休息}, {工作} ,为了更加快速的输入,可以选择英文,例如 {work}, {study}, 为了更快的输入,甚至可以用缩写,例如 {wk} 表示工作 ,{stu}表示学习,等等。可以任意定义

标签

[] 来表示, 可以有多个标签, 用于描述这一段时间。 例如 [读书,历史,人类历史]

10:00~11:00 {STU}[技术漫游,github, 阅读代码] 查看一下Github Trending, 阅读感兴趣项目的代码
项目, 版本, 任务, 子任务

项目,版本,任务,子任务,其实是对生活的进一步一个细分,方便记录复杂的生活场景,如工作中的项目,个人的研究。

  • 项目 <> 生活中的许多方面都可以用项目来归类,用一些好玩的名字来归类自己的生活也挺有趣。
  • 版本 $$ 例如看美剧的时候可以记录为 22:00~23:00 [tv,美剧]<纸牌屋>$第一季$(1)
  • 任务 () 有需要可以用于进一步的细分
  • 子任务 ## 有需要可以用于进一步的细分

例如

9:00~10:00 {STU}[读书,历史]<格物致知>$世界通史$(第一章)
10:30~12:30 {WK}[编程]<我的个人项目>$0.1.0$(初始化项目)
注明

结合云端存储使用,风味更佳。例如Dropbox,可以保持日志的版本,这样可以解决日志的安全和同步等问题。

开发

基于 nw.js + react.js + bootstrap 的组合进行开发,还有多个开源组件

  • highcharts.js
  • d3.js
  • 更多依赖可以查看package.json和bower.json中的依赖申明

clone项目之后,运行 npm installbower install 安装依赖; 然后运行 gulp, 和 打开开发服务器node node_modules/tracker/ltt.js server之后可以进行开发了,在浏览器中打开也可以,默认访问localhost:3000 但是会失去部分nw.js提供的功能.

Screenshot

Dashboard

Dashboard

日志编辑器,提供快捷键提高编辑效率

log editor

个人数据可视化

这里列出的只是其中一份报表,还有更多类型的报表。

个人数据可视化

项目可视化

项目界面

项目,报表,task的管理界面

搜索

搜索

目标管理

goal

最后

在生活中学到一些新的东西,如果有办法融入到软件里面的,就会进行开发,这个时候真的觉得写软件,就像是写书一样。

License

Creative Commons Attribution-NonCommercial 3.0 License.


感谢 亚历山大·亚历山德罗维奇·柳比歇夫

About

个人时间跟踪,可视化个人活动数据,管理个人生活,利用过去来指导未来,基于柳比歇夫的统计方法


Languages

Language:JavaScript 97.7%Language:CSS 2.1%Language:HTML 0.1%