TinyLab

Keep eyes on the star and feet on the ground.


  • 首页

  • 归档

  • 分类

  • 标签

Redis:简介

发表于 2013-07-18   |   分类于 架构

Redis是一个开源的,先进的key-value持久化产品。它通常被称为数据结构服务器,它的值可以是字符串(String)、哈希(Map)、列表(List)、集合(Sets)和有序集合(Sorted sets)等类型。

可以在这些类型上面做一些原子操作,如:字符串追加、增加Hash里面的值、添加元素到列表、计算集合的交集,并集和差集;或者区有序集合中排名最高的成员。为了取得好的性能,Redis是一个内存型数据库。不限于此,看你怎么用了,也可以吧数据dump到磁盘中,或者把数据操作指令追加了一个日志文件,把它用于持久化。也可以用Redis容易的搭建master-slave架构用于数据复制。

阅读全文 »

开源架构:ZeroMQ

发表于 2013-07-17   |   分类于 架构

ØMQ你可以认为是一个消息系统,也可以认为是一个“面向消息的中间件”。它被广泛地应用在多个方面:财务系统、游戏开发、嵌入式系统、学术研究和航空航天。

消息系统最基本的功能就是为应用程序提供及时消息的发送。应用程序决定与其他一个(多个)应用程序进行通信,汇编数据然后进行发送。点击“发送”按钮一切搞定——消息系统把剩下的事情全部搞定。

阅读全文 »

cocos2d-iphone源码分析(2):Director

发表于 2013-01-24   |   分类于 游戏开发

简介

CCDirector负责创建和处理主窗口,和管理场景的的执行。同时负责:

  • 初始化OpenGL ES的context
  • 设置OpenGL像素格式(默认是RGB565)
  • 设置OpenGL缓冲深度(默认是0-bit)
  • 设置投影模式(默认是3D)

CCDirector一般作为单件使用,标准用法是:[[CCDirector sharedDirector] methodName]。IOS下[CCDirector sharedDirector]返回的对象是CCDirectorDisplayLink。

CCDirector继承自UIViewController。CDirector是真个引擎的核心,它控制整个运行过程。一般初始化代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

// Main Window
window_ = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

// Director
director_ = (CCDirectorIOS*)[CCDirector sharedDirector];
[director_ setDisplayStats:NO];
[director_ setAnimationInterval:1.0/60];

// GL View
CCGLView *__glView = [CCGLView viewWithFrame:[window_ bounds]
pixelFormat:kEAGLColorFormatRGB565
depthFormat:0 /* GL_DEPTH_COMPONENT24_OES */
preserveBackbuffer:NO
sharegroup:nil
multiSampling:NO
numberOfSamples:0
];

[director_ setView:__glView];
[director_ setDelegate:self];
director_.wantsFullScreenLayout = YES;

// Retina Display ?
[director_ enableRetinaDisplay:useRetinaDisplay_];

// Navigation Controller
navController_ = [[UINavigationController alloc] initWithRootViewController:director_];
navController_.navigationBarHidden = YES;

// AddSubView doesn't work on iOS6
[window_ addSubview:navController_.view];
// [window_ setRootViewController:navController_];

[window_ makeKeyAndVisible];

// create the main scene
CCScene *scene = [CCScene node];
....
// and run it!
[director_ pushScene: scene];

初始化流程:

  1. director_ = (CCDirectorIOS*)[CCDirector sharedDirector];

[CCDirector sharedDirector]返回的对象是CCDirectorDisplayLink,创建CCScheduler(调度器)、CActionManager(动作管理器)、CCTouchDispatcher(触摸事件处理器),并把创建的动作管理器加入调度器,然后调度器就在时间片离调用CActionManager相关方法。(相关文件:CCDirector.m, CCDirectorIOS.m)

  1. [director_ setAnimationInterval:1.0/60]; 设置FPS。

  2. 初始化GLView,为渲染准备一个视图。

  3. [director_ setView:__glView];

[director_ setDelegate:self];

Director是继承于UIViewController,设置视图和代理者。

  1. CCScene *scene = [CCScene node];

创建主场景。

5 [director_ pushScene: scene];

把主场景推入场景堆栈,并执行。

任务

  • Memory Helper:使用purgeCacheData方法,可以自动清除所有cocos2d缓存的数据
  • Scene OpenGL Helper:可以设置OpenGL的Alpha混合和深度检测(setAlphaBlending、setDethTest)
  • Director Integration with a UIKit view:
  • Director Scene Landscape:场景布局
  • Director Scene Management:管理场景(runWithscene, pushScene, popScene, replaceScene, end, pause, resume, stopAnimation,startAnimation,drawScene)

属性

  • runningThread:cocos2d线程
  • runningScene:当前正在运行的场景,cocos2d一次只能运行一个场景
  • animationInterval:FPS
  • displayStats:控制是否显示一些统计信息
  • isPaused:控制Director是否暂停
  • isAnimating:控制Director是否运行
  • projection:设置OpenGL的投影
  • totalFrames:从Director开始运行,执行的帧数
  • secondsPerFrame:每一帧用时
  • deltegate:实现CDirectorDelegate协议的代理对象
  • scheduler:调度器
  • actionManager:动作管理器
  • touchDispatcher:用户触摸操作的处理器

查看更多相关代码:

<test/DirectorTest.m>

cocos2d-iphone源码分析(1):场景

发表于 2013-01-21   |   分类于 游戏开发

cocos2d-iphone是一个基于Objective-C的2D游戏引擎。还有一个跨平台版的叫cocos2d-x,这个现在貌似挺火的。用cocos2d开发应用之前,必须要先了解下面几个概念:

  • Scenes:场景
  • Director:导向器
  • Layers:层
  • Sprites:精灵

1.场景的概念

场景(CCScene对象)在app的工作流中,是一个比较独立的元素。你也可以把他称作“屏幕”或“关卡”。你的应用可能有很多场景,但当前状态下只能有一个被激活的场景。例如,一个小游戏,它可能有下面的场景:介绍、菜单、第一关、过度场景1、关卡2、胜利过度场景、失败过度场景、最高分场景等。

cocos2d

2.场景的实现

cocos2d的CCScene包含多个可以堆叠起来的层(CCLayer对象)。Layer为场景添加了外观和行为,一般只需要创建场景上的层对象。CCScene类族里面还有一种表示两个场景之间过度的场景,是使用CCTransitionScene对象来实现。

CCScene继承自CCNode,行为和属性和CCNode是一样的。对场景可以进行手动变换或者使用动作组(Actions)。

CCNode主要的子类有CCScene, CCLayer, CCSprite, CCMenu。下面大体介绍一下CCNode类的属性和方法:

2.1 CCNode的特性

复合:可以包含其它CCNode子节点

  • addChild
  • getChildByTag
  • removeChild

支持周期性回调

  • schedule
  • unschedule

可以执行各种动作及其组合

  • runAction
  • stopAction

2.2 CCNode的任务

  • 初始化和清理
  • 复合模式
  • 绘制
  • 变换
  • 场景管理
  • 动作
  • 调度器支持
  • 转换

2.3 CCNode的属性

  • position:位置
  • scale (x, y):缩放
  • rotation (in degrees, clockwise):旋转
  • skew:倾斜
  • CCCamera (an interface to gluLookAt ):相机
  • CCGridBase (to do mesh transformations):格子
  • anchor point:锚点
  • size:大小
  • visible:可见性
  • z-order:Z序
  • openGL z position

3. 代码示例,参见:

  • test/SceneTest.m
  • test/NodeTest.m

每周一荐:远程控制软件TeamViewer

发表于 2013-01-17   |   分类于 每周一荐

TeamViewer是一款通过Internet进行远程访问和远程支持的软件。也可以用于远程会议,同时还可以进行演示,互相交换文件。如果用于个人用途,是免费的。商业用途需要购买序列号。支持多个平台:windows、mac、iphone、ipad及其它。只要你在连接在Internet上的电脑上启动课Teamviewer,就可以在任何地方访问用各种操作系统来远程访问和控制该电脑。甚至拿起你的iphone/ipad都可以进行远程控制。

TeamViewer提供了一个简洁易用的用户界面。

你可以选择是要远程控制你的伙伴、还是与伙伴共享你自己的桌面或仅传输文件而不共享桌面。

TeamViewer

极具吸引力的伙伴列表使你能够实现即时团队协作。在TeamViewer伙伴列表中,始终可以看到哪些同事课供连接——只需要点一下鼠标即可实现连接。

伙伴列表中保存,可在任意计算机上使用TeamViewer进行访问。

TeamViewer

所有TeamViewer版本都包括完整的文件传输功能,即文件和文件夹复制。为实现最快传输速度,所有数据在传输之前都进行了压缩。

TeamViewer

下面是我用iPad控制自己的电脑的截图,一睹为快:

TeamViewer

想要尝试的朋友,或者了解更多的朋友。请访问TeamViewer官方网站:http://www.teamviewer.com/zhCN/index.aspx

关于学习的一点想法(3)

发表于 2013-01-11   |   分类于 个人管理

知道了学习的意义,和要什么样的知识,然后需要解决的问题:如何学习?学习有什么好的方法和工具?

学习的方法和工具

从横向来看,学习方法主要有主动学习和被动学习。主动学习有:讨论、实践、传授给他人,被动学习有:听讲、阅读、视听、演示。这里对每种学习方式就不展开讨论了,怎样有效的听讲、阅读、视听、演示、讨论、实践、教授?Google一下。下图是知识学习的金字塔,统计了一下不同的学习方式的知识留存率:

学习

从纵向来看,如何来学习某一领域的知识?下面给出一个基本模型:

  • 打好基础:了解该领域的基础知识。通过阅读简单、经典和入门或概论之类书籍;通过阅读引用次最多的论文、被收藏最多的经典文章来学习基础知识。

  • 了解行业:了解该领域的全貌。阅读关于你关注领域索索引擎前50页的内容,形成对行业的感性认识;与通行进行认识交流、获取隐形知识。

  • 跟进发展:跟踪并掌握该领域的最新知识。互联网信息;行业论文;行业专家的观点、博客等,争取能面对面交流;参与行业的社区交流(网络论坛)。

  • 实践创新:在实践中创新和学习。在工作中有意识地利用知识,做完每项工作后进行回顾和总结;有意识地做知识显性化的工作,写出你的观点和体会,充分利用机会说出自己的看法。

学习的工具。信息时代的工具,网络为我么提供了许多比较强大的工具,做为一个知识工作者,我们一般随时随地都可以使用电脑、iPhone、iPad等工具访问网络。下面整理一下可以用于学习知识的工具:

  • 搜索引擎:Goole、Bing、Baidu(排序代表我的喜爱顺序,具体原因不解释~~)
  • 维基百科型网站:Wikipedia、百度百科、互动百科、MBAlib
  • 问答型网站:Quaro、iAsk、百度知道
  • 在线论文库:Google学术、CNKI
  • 信息评价工具:豆瓣
  • 信息订阅工具:GoogleReader

结束

有了动机,有了方向、有了方法。还在等什么,学习吧!把学习当做一种乐趣,一种超越,一种认识世界和认识自我的途径。回顾一下2012年,自己的学习主要是通过阅读和视听,以后应该更加注重实践和分享。学而不思则惘,思而不学则怠。2012年我读过的书(共计53本),都还不错,分享一下:

文学

  • 《爱的艺术》
  • 《恋人絮语》
  • 《朝圣的心路》
  • 《安静的位置》
  • 《草叶集》
  • 《无用之学》
  • 《红字》
  • 《我为何写作》
  • 《哈克贝利·费恩历险记》
  • 《瓦尔登湖》
  • 《野性的呼唤》
  • 《马丁·伊登》
  • 《永别了,武器》
  • 《老人与海》
  • 《喧哗与骚动》
  • 《第二十二条军规》
  • 《欲望号街车》
  • 《了不起的盖茨比》:梦碎了一地
  • 《红与黑》:一个真实、聪明、有野心的木匠儿子!生活在一个虚伪、阶级意识强烈的世界!一段想爱却无法去爱的爱情,一段单纯却参杂着强烈阶级意识的爱情!于连与当时那个社会的格格不如,而又有强大的野心,注定了他以死亡收场!
    《在路上》:他们搭车赶路,结识陌生人,放纵性情,随心所欲,在聚众旅行的狂欢中,几乎没有道德底限,即使落魄如乞丐,但只要“在路上”就是惬意的,萨尔曾经由衷地感叹:“啊,美好、温暖的夜晚,月光如水,搂着你的姑娘,喝喝酒,说说话,啐啐唾沫,简直是天上人间!”在这种混乱、亢奋而筋疲力尽的得过且过的状态背后,《在路上》的主题远没有它的语言那样轻快。书中的人物不停地穿梭于公路与城市之间,每一段行程都有那么多人在路上,孤独的、忧郁的、快乐的、麻木的……纽约、丹佛、旧金山……城市只是符号,是路上歇息片刻的驿站,每当他们抵达一个地点,却发现梦想仍然在远方,于是只有继续前进。

个人管理

  • 《How to Read a Book》
  • 《把时间当做朋友》
  • 《高效能人士的七个习惯》
  • 《要事第一》
  • 《成为作家》
  • 《奇特的一生》
  • 《小强升职记》
  • 《荣格性格哲学》
  • 《弗洛伊德心理哲学》
  • 《弗洛伊德人生哲学》
  • 《拖延心理学》
  • 《聪明的投资者》
  • 《理财有道》
  • 《理财工具箱》

职业相关

  • 《项目计划与进度管理》
  • 《有效的工作分解结构》
  • 《程序设计语言原理》
  • 《重构:改善既有代码的设计》
  • 《设计模式》
  • 《设计模式解析》
  • 《重构手册》
  • 《Head First设计模式》
  • 《UML精粹》
  • 《面向模式的软件架构 卷1:模式系统》
  • 《面向模式的软件架构 卷2:用于并发和网络化对象的模式》(英文版)
  • 《面向模式的软件架构 卷3:资源管理的模式》
  • 《面向模式的软件架构 卷4:分布式计算的模式语言》
  • 《面向模式的软件架构 卷5:模式与模式语言》
  • 《C++网络编程 卷1:运用ACE和模式消除复杂性》
  • 《C++网络编程 卷2:基于ACE和框架的系统化复用》
  • 《iPhone游戏开发实践指南》
  • 《深入浅出Ajax》
  • 《sed and awk》
  • 《Gnuplot in Action》

其它

  • 《史蒂夫·乔布斯传》
  • 《世界因你不同》
  • 《大设计》

时间在继续、我们在路上。生命在何时终结,我们不得而知,但我知道我想要去哪里,走下去就是了。走了弯路,通过实践学习,再绕回来继续。我一直崇尚简单,简单是我的哲学,是我的目标。简单并不意味着无知、它是一种超越繁杂的境界。就像UNIX的设计哲学一样:K.I.S.S(Keep It Simple and Stupid)。

(全文结束)

关于学习的一点想法(2)

发表于 2013-01-10   |   分类于 个人管理

昨天整理了一下关于学习意义的思考。找到学习的意义、学习的动机,你才能有的放矢,高效的学习。现在回答,可以回答第二个问题了。

学习什么?

学习是一个不断认识世界,认识自我的过程。可以看出,学习的对象或内容,是世界或自我,世界又分为自然世界和社会。世界万物,千丝万缕,随随便便都都能列出很多学科,而任何一个学科的一个分支都有可能穷尽一生去学习。自然科学:物理、化学、生物、数学、医学、计算机科学、哲学等,社会相关:管理学、经济学、心理学、等等,每个学科下又有各种各样的分支。

我们看到的每一个事物,你只要仔细观察,你就会发现一堆相关的知识,如果想要全部学习,是不可能的事物。举个简单的例子,我现在正在用的书桌,关于这个桌子的知识:桌子的结构、材料、外形、眼色、整体造型、美学、实用价值、承载能力、另类用途(能不能当做床来睡一觉、能不能拆解组装、甚至劈成柴火煮一顿早饭)、、、。

随便发散一下,就能想到很多,任何一个角度都是知识,并且要深入研究都会花费时间。人的精力和时间是有限的。你不能一辈子就只研究桌子吧,你得找到自己的方向,确定自己要学习的内容,在有限的人生里面去实现自己的价值,和找到生命的意义。

下面通过知识的广度(横向)和深度(纵向),通过了解自己来从知识海洋中取一瓢自己的清水。

1. 横向:确定知识的广度

要学习什么?你可以通过了解自己、结合自己学习的动机来确定,首先你的了解自己的价值观、目标、优势、性格和兴趣。

  • 价值观:整个人生的学习的原则
  • 目标:做到有目的的学习,目标给你提供强大的学习动力。
  • 优势:加强自己的强项,成为强中之强(弱势有空再去弥补,因为弱势你需要花掉很多时间,效果可能不佳,还会影响自己的心态)。
  • 性格:性格决定命运。
  • 兴趣:兴趣是最好的老师。

为了了解自己,你可以问自己下面的问题:

  • 你的优势是什么?
  • 你的兴趣是什么?
  • 你的价值观是什么?
  • 你的个人目标是什么?
  • 你的性格是什么?
  • 别人眼中的自己是什么?
  • 你想成为什么样的人?

通过回答这些问题,你大概已经知道该学点什么了。

假设你想成为一名CEO,你就需要去学习、项目管理、组织管理、公司管理、行政管理,等等,你可以把MBA的课程列表拿出来看一下就知道了,这些都是显性知识,更多的应该是通过实践,和与人交流去获得更多的隐形知识。假设你想成为一名游戏技术牛人,那么你要学的也会有很多:计算机语言、操作系统、网络编程、数据库、各种各样的工具,总结模式、学习架构、游戏设计原理、图像图像、、、。

你的目标确定了你要学习的内容。你想成为技术牛人,你不能整天去研究桌子,或者其它,当然如果研究桌子是你的兴趣,或者仅仅出狱自娱自乐的目的,也未尝不可。

下面关于上面的问题,是我的答案(随着思想的不断成熟,会一直变化):

价值观:自主独立、平衡、协同增效

目标:iOS游戏/应用开发;项目管理高效、有序

优势:思维能力、系统性(优势也有缺陷:分析瘫痪)

1. 善于分析、总结、判断  
2. 善于从整体上把握事物  
3. 喜欢追根究底,力图抓住事物的本质  
4. 对文字、语言敏感  
5. 抽象思维能力强,能理解复杂的理论概念,善于将事情概念化,善于从中推断出原则或预测趋势  
6. 擅长策略性思维  
7. 会接受建设性的批评,而不把它当作针对个人的问题  

性格:INTJ(内向 直觉 思维 判断),通过MBTI测试

兴趣:文学、音乐、摄影、神游、程序

通过对自己做一番了解之后,我要学习的知识包括

  • 项目管理
  • iOS开发、iOS游戏开发
  • 游戏开发
  • 软件设计及其架构
  • 软件工程、软件过程
  • 个人管理:时间管理、知识管理
  • 摄影、图片处理

2. 纵向:确定知识的深度

吾生也有涯、而知却无涯。确定了要学的内容,下一个问题就是我该在这门知识里面挖多深,只是简单的了解、熟悉、精通还是有通过研究学习,要有自己的理解和见地。

知识的深度,见山是山,见山不是山,见山还是山。类似与之前学校里面听到的,要学习一本书,你首先得找到一本简单的书,然后把书念厚了,最后再把它念薄了。

所以,达芬奇说:简洁是终极的复杂!

确定知识的深度,也很简单,追从内心的选择。给要学的内容排个顺序,那些你认为是重要的,就不断去加深,那些可以浅尝辄止、那些只需要懂些常识即可。

知道该学点什么了,剩下的就是如何去学习?涉及到学习的方法和工具。

(未完待续)

关于学习的一点想法(1)

发表于 2013-01-09   |   分类于 个人管理

从初生到长大成人,一直在有意识或无意识地在不断地学习知识。学习可以说是一个人的本能,为了适应环境,你不得不去学习。虽然从小学到大学,一直到毕业从事工作,无时无刻都在不断学习,但是关于学习本身,却没有好好思考一下。关于学习的思考,主要是找到下面三个问题的答案:

  1. 为什么要学习?(学习的意义是什么?)
  2. 应该学习什么?(学习的对象和内容是什么?)
  3. 如何学习?(学习的方法和工具有那些?)

学习是一个过程

为了回答上面的问题,先解释一下什么是学习。我认为:学习是一个不断认识世界、认识自己的过程,世界包括自然世界和社会。

我们从呱呱坠地开始,一直到离开这个世界,不断地为了生物本能,寒冷、饥饿等,不断的检查世界对自己的反应,然后不断地学习、模仿,做出调整,去适应世界。

学习的意义

为什么要学习?每个人在不同的时期,应该都有不同的答案,只是可能没有意识到。

还记得小的时候,上学简直就是一种受罪,因为我么不知道我们为什么要去上学,学习的动机不足,只是听从父母的安排。父母和周围的人们会告诉你,读书学习是你唯一的出路,知识改变命运,然后你真的就相信了。坐在教室里面,一直到大学毕业。上小学的目的,是为了上中学;上中学的目的是为了上高中;上高中的目的是为了上一个重点大学;上大学的目的是为了找到一份好工作;找一份好工作就意味着你过上了正常人的体面生活。完全就是一场梦幻之旅,这简直就是过去中国教育的悲剧(现在估计也差不多)!一个人的自我意识,只有在所有的梦幻都被打碎的时候,他才开始自省。套用《无间道》的话:“我们在不断赶路,却忘记了出路”,我们在不断学习,却不知道为什么。越早意识到自己学习的意义,尽早找到人生的方向。

下面是我自己的答案:

  • 个人需求
    • 物质层面的目的:创造财富
      • 学习知识,是为了提高自己的竞争力。
      • 学习知识,是为了满足工作的需要。
      • 学习知识,是为了更好地完成工作
      • 学习知识,是为了开创自己的事业
    • 精神层面的目的:精神享受
      • 学习知识,是为了满足自己的好奇心
      • 学习知识,是为了满足自己的求知欲
      • 学习知识,是为了自娱自乐
  • 社会需求
    • 学习知识,是为了更好的融入群体和社会
    • 学习知识,是为了获得更多人的认可
    • 学习知识,是为了与他人分享知识
    • 学习知识,是为了建立个人品牌
  • 认识世界、改造世界(年少轻狂时候的想法,当做终极目的吧!)

你的答案是什么了?在知道了学习的目的/动机/意义,自然而然就会有这样的疑问,世界何其大、人性又是何其复杂,想要都去学习一下根本是不可能的事情,同一个事物,从不同的学科、不同的角度出发,都可以产生很多的知识。完全学习,是不可能的,也是没有必要的。

(未完待续)

每周一荐:iOS应用iThoughts

发表于 2012-12-27   |   分类于 每周一荐

思维导图软件之前也推荐过,但都是基于PC的应用(Windows、Mac、Linux版),如FreeMind、Docear、XMind都是很不错的。最近发现一个不错的iOS应用iThoughts,它有iPhone和iPad版。可以导入FreeMind和XMind编辑的思维导图文件。可以导出为多种格式,如:pdf、png、mm(FreeMind支持)、mmap(MindManager支持)、xmind(XMind支持)、html等。

iThoughts

嗯,这下方便许多了,思维导图可以随身携带了。虽然iPhone屏幕比较小,看起来不是那么方便,但用起来感觉还是比较流畅的,可以非常方便地放大缩小、编辑节点的、添加图片节点、还可以手绘Doodle。有机会可以体验下iPad版的,感觉应该更好些,思维导图还是大屏幕看着爽些。

iThoughts

除了常规的功能,还有一个值得一提的功能就是它的wifi传输功能,开启wifi传输之后,iThougts应该是自己开启了一个简单的网页服务器,然后我们就可以在电脑的浏览器里面输入ip和端口地址,轻松地添加、删除iPhone里面的思维导图文件了。

更多介绍可以去官网查看:http://ithoughts.co.uk/iThoughts/Welcome.html

每周一荐:时间日志应用aTimeLogger2

发表于 2012-12-20   |   分类于 每周一荐

之前在李笑来《与时间做朋友》那本书里面知道了:要养成记录时间日志的习惯。通过过往的时间日志,发现自己的高效时间和工作、学习重心,同时也可以明确自己的时间流向,最重要的是为确定下一步行动做计划和决策提供了参考。

故坚持使用Google Calendar做时间日志也有大半年时间了,做完一件事情的时候或者在每天工作结束的时候,就会在Calendar上记录在某一个时间段内做了些什么事情。Calendar本身是一个日程表,是计划未来的事情的,自己用他记录已经完成的事情。效果感觉还不错,扫一眼大概就知道自己干了些什么,只不过想要量化就比较麻烦(不是不可以,可以把日程数据导出来,自己写个程序来处理一下~~),比如本周我花了多少时间去写代码、花了多少时间去读书提高自己、花了多少时间去管理团队、分别占的比例是多少。

阅读了《奇特的一生》,了解到柳比歇夫的时间统计法之后,就更加想做时间日志的量化统计了。Google到iPhone上的应用:aTimerLogger2,正合我意。手机一般都是随身携带,开始一件事情、结束一件事情的时候只需要轻轻一按,就准确地记录下了。(BTW:放弃Calendar做时间日志有一个比较重要的原因就是GFW,手机、电脑上的翻墙代理切换来切换去感觉很不爽啊,Google比较好用的应用一个一个只能选择放弃,现在就只剩下Gmail和Reader了)

aTimerLogger2

你可以同时开启多个活动:(比如:乘坐飞机的时候同时也可以读书)

aTimerLogger2

当你的活动比较多的时候,也可以开启分组功能:

aTimerLogger2

可以统计、量化你使用的时间:周期可以是每日、每周、每月,通过饼图和详细列表可以非常直观地知道你的用时情况。

aTimerLogger2

如果你想对自己的用时进行更进一步,或者更加直观的分析。可以将记录的时间日志数据导出了CSV发送到你的邮箱:

aTimerLogger2

aTimeLogger总的来说,量化自己的用时情况做的还是很好的。已经使用了三周,结合自己的实际情况,也有点小缺憾:

  1. 不能自己定制需要记录的日期:自己一般只记录工作日的用时,周末两天是彻底解放时间,不做时间日志,不去想工作上的问题。aTimerLogger的周饼图和月饼图一般都是包括周末两天的。

  2. 每日详情没有Calendar那么直观,具体每天都干了些什么,只能通过列表看到。

  3. 如果能够看到本日/周/月/年剩余的工作时间就完美了

备注:记录时间日志的目的并不是为了节约时间,做更多的工作。而是为了找出被莫名奇妙浪费掉的时间,发现自己的高效时间段,通过量化统计所做的活动及其用时来做计划,从而平衡自己的工作、学习和生活。用浪费掉的时间,和通过提高工作效率省下来的时间,做自己喜欢做的,思考一些问题,或者娱乐HAPPY一下^_^。

为了避免陷入机械化,只跟踪工作日。原则就是:工作日把工作和学习搞好、周末想怎么HAPPY就怎么HAPPY。

1…567…13
David++

David++

123 日志
25 分类
65 标签
RSS
GitHub 知乎 微博 豆瓣
© 2007 - 2021 David++
由 Hexo 强力驱动
主题 - NexT.Pisces