Fork me on GitHub
Wakatime 测试工作时间

Wakatime – 现在几点了,你在做什么呢

前面提到了一个用来QS自己的工具Clarify。这次介绍一个专门给程序员用的工具。
大家都知道一万小时定律,但我究竟写java写了多久了呢?WakaTime知道。估计很多人都知道RescueTime,我也是用RescueTime来记录我的工作时间。但它无法记录更具体的行为(也许实际也做了),比如我写了多久javascript,多久objective-C。Waka就可以啦,因为它提供了几个主要的IDE的插件,只需要安装对应的插件,Waka就能自动记录你在IDE里的行为。

WakaTime

Waka的基本设计和rescuetime类似。每个人注册完将获取一个key,装一个客户端,把key输进去(登陆是同一个道理),然后它就把本地的所有行为带个key扔给服务器来统计,一段时间之后给你个报表。不过Waka做的真的很精准,精确到每一个文件用了多少秒,每一种语言用了多少时间。

图片描述
图片描述

据说Waka还能知道你在每个branch用了多久,这还真是一个量化程序员的好办法。如果有项目管理会用这种工具,相信也能更精准的把握开发进度,控制每一次开发尝试的代价。

作为一个付费用户狂人,登陆以后做的第一件事当然是搜Pricing~对比一下,付费用户的功能就是无限期数据查看和原始数据导出。想了想…算了这次…还有团队版本哦~

工作原理

Waka让我觉得好玩的是他的plugin都是开源的,而且在他的开源项目列表里看到了一个叫wakatime的核心项目,python写的,说是大家基本不需要直接使用的。基本可以确定是每个plugin都会去调用的核心库。

从queue.py里看出所有的log都会被放到~/.wakatime.db下,那我们就去看看它存了啥。打开以后发现是空的…想必是Waka把log都传走了以后就删掉了本地的。于是,断网,假装写代码,再看看。

图片描述

可以看到它记录了我在哪个文件,什么时间,什么项目下,写了什么语言,甚至在哪一行下都记录下来了。如果这个数据结合版本管理,动态的展现出来,将会是多酷啊~

Anyway,由于我很想用koding这样的WebIDE来工作,这样就又没发用Waka了,所以我需要知道发送记录的具体API是什么。

这也叫API文档

Wakatime是觉得代码是最好的文档么,居然在API文档里没有写出这些log是如何被打进数据库的…文档里只有认证,获得统计信息,和当前用户信息的接口…

好吧,那我们直接去刚才那个python的repo里看吧。首先,这里面肯定有个代码文件是包括http和wakatime.com的。那就搜吧,找到了init.py里一个函数叫send_action。很明显这是用来发log的。

那先让我们用curl模拟一下这个请求吧(看起来也不用太多域)。

$ curl -d '{"time":"1414688349","file":"/root","lines":"123","language":"javascript","is_write":"0","project":"manhattan"}' -H "User-Agent: space" -H "Content-Type: application/json" -H "Authorization: Basic ODMwOTliYjMtZGUwZS00NWFkLThhODItZmY4OWUwYzxxxxxxx" https://wakatime.com/api/v1/actions
{
  "data": {
    "id": "83682870-8306-4d12-b4a9-e0ba5f6cc295"
  }
}

把Key base64一下,用date +%s拿一下当前的timestamp,就可以往Waka里扔数据啦。扔完了以后看看Dashboard~好啦,我们的曼哈顿项目出现啦~

图片描述

如果你愿意可以把它改成各种SDK(当然browser里会出现跨域的问题,所以你可以找个中间服务器做这事儿)。

在未来做点儿事儿

刚才看到了有个timestamp来表示时间,如果改成以后呢。估计waka不会蛋疼到做这个检查吧…往2015年1月1日扔几个action,等一小会儿,看manhattan项目的URL,改成https://wakatime.com/project/manhattan?start=2014-12-26&end=2015-1-3。就能看到我在未来写javascript了~

扩展的waka

所以其实wakatime是一个特别基础的action记录和统计平台。如果它愿意开源(其实这真的还不如一个logger分析平台…),完全可以搭建成一个QS小服务。比如晚上9点连续发出20分钟加速度变化数据,然后就停止了10分钟…

posted on   HackerVirus  阅读(6931)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
历史上的今天:
2014-05-05 GridView动态增加行
2013-05-05 ArcEngine IMap接口
2013-05-05 Database2Sharp之混合型Winform框架代码生成
2013-05-05 vim配置文件和插件
2013-05-05 .NET:在ASP.NET中如何进行IP限制
2013-05-05 初学Perl的感受之数据类型
2013-05-05 通过Linux理解操作系统(一):概述
点击右上角即可分享
微信分享提示