我的 20% 时间
据说 google 有个 20% 时间,员工可以在本职工作之外,拿出一些时间做点有趣的东西。我和一些朋友讨论过这样做的意义。我想,正是程序员尤其是好的程序员不好伺候,当他们不为了物质利益去工作时,也只好想些“歪招”了。做点有趣的事情,学点有趣的知识,可以让工作更带劲点,老板看似为这 20% 时间多掏了些工资,而实际上,促进了另 80% 时间的工作效率。况且程序员的效率可以天差地别(包括同一个人在不同的状态时的),一不小心就赚到了。
虽然我自己不承认,但是客观的说,这半年看起来工作压力有点大。很明显,我把前几年坚持的健身活动停掉了,室内抱石基本没碰,户外攀岩就更别提了;很久没有骑自行车远行,桥牌没打、围棋没下,杀人游戏提不起兴趣,前段时间玩了次 OUAT (不明白的同学自己 google ),事后也觉得太浪费时间而没有继续。
老妈昨天来信(贴了一块二邮票的平信)千叮万嘱注意身体,我却不小心又在上周通宵了两回。好吧,等项目做完,一定好好改改作息时间,恢复每周 5 小时的身体锻炼。争取再谈个女朋友,执子之手,与子偕老。
不过,那也是项目做完后的事情,不是吗?年轻嘛,再奋斗个一年半载好了。老爸四十出头的时候还把床搬到办公室几周几周的不回家一个人在单位写程序,想必是遗传 :D 我这儿还有一帮子兄弟跟着呢。
跑题了。其实我想写,虽然我现在是七天工作制,但是到了周末还是弄点有趣的东西玩玩的。2/7 其实远大于 20% ,只是借 google 的 20% 说事而已。下面随便写写周末玩的些小玩意。
周五的时候一个老朋友打电话过来聊一些技术问题,他的项目(一个已有上亿用户的 IM 软件)想做第二版,看看我有什么想法可以沟通一下。当然我推荐了嵌入 lua ,以及希望采用一些跨平台构架等等。也只是随便聊聊,我对 IM 的东西也是一知半解,不适合说太多。不过这突然让我对 IM 又有了点兴趣。
周末主要是研究 XMPP 玩儿,谁叫我是 google 的粉丝呢,google talk 用这个,我也就从这里入手了。btw, 新版的 popo 也部分支持 XMPP 了,至少可以跟 google talk 互通,相互可以加好友。不知道有没有一点我的功劳 :) 反正我是成年累月的跟他们组的人嘀咕的。
一开始看了下 tessa ,一个用 C++ 和 lua 做的 Jabber client 。项目目标跟我期待的比较接近,而且是用 lua 去粘合的,比较对我的胃口。不过 checkout 了源码后,仔细读了一下,还是不太喜欢。可能我现在对 C++ 的东西都不是很感兴趣的缘故吧。不过它对 gloox 做了个 lua binding 有点意思,我本来想利用这个现成的 binding 在上面堆点玩具代码的,可是在没有文档的基础上去乱试进展不大。btw, tessa 在使用 lua 的地方有可圈点之处,虽然向 lua 传递数据的地方做的不够好(每次都生成一个 std::map ),但是在消息分发处的设计有那么点意思。
而后直接 checkout 了 gloox 自己玩。不过很可惜,弄了好久都没有成功登陆 google talk 。期间研究了下 gloox 的设计,有几个地方挺巧妙。毕竟是 C++ 做的,可以弄出花来。看过记下了,只是我还是喜欢 KISS 一点。
最终还是用了 google 的 libjingle 才真正的可以堆出点小玩具出来。在 windows 编译它颇费了点功夫(unix 平台下则简单的多),搞明白它的设计后,弄个文字聊天的 bot 出来只需要几十行代码。libjingle 的 example 中带了语言聊天和文件传输的例子,都可以顺利工作。
libjingle 用了个多线程的模型,主要是基于消息队列做的线程间通讯。整个代码应该算不错,只不过风格我也不太喜欢。
弄这些个东西,主要是想做两个小玩意。
一个就是服务器的错误报告,当服务器不状态正常时,可以由一个 bot 把消息直接发到我的 IM 上来,并且可以自动的发送相关文件。当然这个对习惯用邮件的人来说意义不大。我就是其一,不过如果做出来还是满有意思的。
第二个就是做个东西取代现在 blog 右边的 google talk chat back 。现在 google 自己提供的这个不太好用。每次有人点了后,只是在 google talk 上发个消息通知一下,还必须让我主要去打开那个 flash 版本的 gtalk 激活。
我希望做个 bot 可以直接跟 blog 的游客聊天,当然不是由 bot 自动回复,而是让 bot 做为一个 web 到桌面我的 gtalk 的一个代理。让我可以在桌面的 gtalk 上,看到所有的匿名访客的聊天信息都是从 bot 那里发过来的。而我可以直接回复,并用 /1 /2 /3 ... 这样的形式切换给谁回复。托 gtalk 的福,可以轻松的实现离线留言和服务器保存记录。btw, gtalk 允许同一帐号多处同时登陆,也方便了做一些事情。
想归想,把东西实际做出来还是颇需要一些精力和时间的。gtalk 使用通用协议固然是好事,方便了大家在其上做出好玩的东西。但是通用协议的繁杂也是无可避免的。弄起来并不轻松。
据我所知,我们的 popo 之所谓迟迟未用 XMPP 或是 SIP 这样的通用协议,一定程度上也是因为其繁杂。正如前面提到的那个老朋友,他的项目也没有完全使用 SIP 而是在 SIP 基础上做了一些改动。
回头来看我桌面上的 todo list ,还有好多有趣的事情想以后慢慢做呢。周末玩玩后就这么放着吧。明天继续做回主要工作。噢,这段时间在调游戏里的数值,又温习了点快遗忘的数学知识。比如泰勒(Taylor)展开式等。这些等下次有兴趣了再写写吧。
Comments
Posted by: heihei | (19) April 23, 2010 01:00 PM
Posted by: cg | (18) December 23, 2008 02:24 PM
Posted by: 古今 | (17) December 23, 2008 12:23 AM
Posted by: kevin | (16) October 6, 2008 02:50 PM
Posted by: jyf1987 | (15) August 16, 2008 08:13 PM
Posted by: 郝艳 | (14) July 11, 2008 09:26 AM
Posted by: Anonymous | (13) May 4, 2008 11:23 AM
Posted by: 田强强 | (12) May 2, 2008 09:37 PM
Posted by: zuozuo | (11) April 29, 2008 09:28 AM
Posted by: zen_yue | (10) April 26, 2008 10:09 AM
Posted by: 飞飞 | (9) April 22, 2008 10:26 AM
Posted by: congy | (8) April 22, 2008 12:47 AM
Posted by: 羽扬 | (7) April 22, 2008 12:06 AM
Posted by: 咸鱼 | (6) April 21, 2008 03:26 PM
Posted by: 不空 | (5) April 21, 2008 12:43 PM
Posted by: Joe | (4) April 21, 2008 11:05 AM
Posted by: 开心 | (3) April 21, 2008 10:48 AM
Posted by: 星际 | (2) April 20, 2008 10:15 PM
Posted by: chai | (1) April 20, 2008 07:43 PM