« 招行的系统测试过吗? | 返回首页 | 不那么随机的随机数列 »

我的 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

一个已有上亿用户的 IM 软件? 谁?谁? xdhuang!
可不可以+我GMAIL,我刚工作一个多星期,刚工作接到的任务就是用libjingle做一个IM,我现在只是能得到再线好友信息,可是不知道怎么建立会话,其实我现在只是想文本聊天就好了,不知道大哥可不可以指点一下. 我的gmail是cg1227@gmail.com
争取再谈个女朋友,执子之手,与子偕老。 ======================= 呵呵,我来应聘
刚工作半年,空闲时间用来增值了。
关于你的那个在blog上弄个中转机器人的想法 有人提供第三方的机器人托管 所以你的程序完全可以用php这类语言编写 这样写出来通用性更强 因为web空间总是很多的 而你的那个lua来做的想法 恐怕就需要在服务器上运行程序了
看了几天的libjingle程序,文件传送基本通过,可是仍旧搞不明白文字聊天是怎么处理.小女子愚钝,可否将您的文字聊天的代码发贴一下,若者方便的话直接发我邮箱也行.在网上也没找到相关的例子,我觉得SessionSendTask的Send方法应该是发送文字聊天的吧,可是不知stanza要怎么产生.满头雾水,望得到您的帮助,万分感谢!
老朋友是:黄X东?
我有一个算法题,我不知道怎么做,你能帮我看看吗? 这道算法题对我很重要 题目是: 输入一个偶数2k,输出满足下列条件的数: e[1]+e[2]= e[2]+e[3]+e[2k]= e[3]+e[4]= e[4]+e[5]= e[5]+e[6]= ..... e[2k-2]+e[2k-1]= e[2k-1]+e[2k]+e[1]= 其中e[i]在{-1,1,2,-2,...k,-k}取值 等号右面的数在{0,-1,1,-2,2,...-(k-1),k-1}中取值。 例:(当输入的偶数为2k=8时) e1=-1; e2=3; e3=4; e4=-3; e5=1; e6=-2; e7=2; e8=-4.
啊哦,云风的春天到了.
每周只有一天假,这星期六天有四天要加班,算算好像连10%的休息时间也没了:(
搞这么复杂的东东了,彻底不懂了!差距啊~~
还能有谁?
一个已有上亿用户的 IM 软件? 谁?谁?
20% 是个什么概念
前段时间玩了次 OUAT ====================== 难道云风也是马亲王的粉丝? 祥瑞御免!
据《康熙字典》持字一解: 【疏】執而不釋謂之持,是手執之也。 引用云风原文“持子之手,与子偕老”,可见,云风是个占有欲特强的人。 哈哈,别无他意,仅取一笑。
我也是,从三月工作到现在,每周加班没休息,不过这周要去桂林了,先祝自己旅途愉快!
我想中庸的思想可以解决楼主的问题,凡事要恰到好处,不偏不倚,毛时代说的左倾右倾就是这个意思,凡是做过头了都不好,你说了
刚换了新工作,偶现在把100%的上班时间都花在工作上了 :)

Post a comment

非这个主题相关的留言请到:留言本