54chen Twitter Memo 2010-06-20

  • 54chen Twitter memo 2010-06-13 http://goo.gl/fb/eq2AY #
  • RT张新泳 :哈佛有一个著名的理论:人的差别在于业余时间,而一个人的命运决定于晚上8点到10点之间。每晚抽出2个小时的时间用来阅读、进修、思考或参加有意的演讲、讨论,你会发现,你的人生正在发生改变,坚持数年之后,成功会向你招手。 #
  • 吉尼斯纪录:全世界最大的茶几面积为960万平方千米,可放置13亿杯具。 #
  • @dcyhldcyhl 梅西赛后采访:当地球迷很热情,不过吹喇叭的助威方式我还是不太适应。相对来说我更加怀念中国球迷,他们的加油口号我至今记忆犹新:谢亚龙,下课! #
  • 看着桌子上公司发的两个粽子,我想起了元宵节公司发的四个汤圆。 #
  • 端午,北京,图 http://goo.gl/fb/S7uDR #
  • 功夫网发飙,全球最大的RSS托管服务网站feedburner全线被屏,各位blogger注意转换。 #
  • 今天事情不多,翻到墙外,把四百多个followers从头看到尾,选择一天内有发言的、头像帅的、牛X的,全follow上鸟。 #
  • RT @blogkid: 接上推,没过多久,我那个同学辛苦拿回来的手机,掉在他母校北京理工的茅坑里了。//十分之杯具 #
  • RT @wolfdeng: @54chen 难怪看到你突然follow我,我还以为之前已经是相互follow的关系了 //对不住兄弟们啊,我是常年不翻墙的好人民,平时就靠个机器人发推,没学会怎么用机器人follow人,这回翻出来就一次性follow #
  • RT @Fenng:很多人都把在达内的学习经历写成工作经验了。倒也没错。 //达内在培训行业还是比较不错的,但至于达内学生水平如何则很难评估了,主要是因为社会培训学校入学时学生往往良莠不齐 #
  • 给infoq写的一篇关于NoSQL-dynamo的文章,还躺在草稿箱内,霍师傅呀霍师傅,啥时候才可以发 #
  • 首都机场航班大面积取消,不知道有没有今天坐灰机的同志啊,遇到天气不好真是大杯具。 #
  • RT @laihingkit: RT @flanklin_: RT @Showfom: 有团购cet6答案的推友吗? //太牛B了 这也行 #
  • RT_小C 韩国胜阿根廷。安全套销量猛增5倍 #
  • 有cnbeta的管理人员吗,首页因为一个静态域名的拖累,迟迟无法打开。 #
  • 跨系统共享键盘鼠标利器分享:synergy http://goo.gl/fb/eC7a5 #
  • http://url.cn/1PVfdw 承蒙霍总@taiwen看得上,将我的文章放在深度内容当中,分享与大家先 #
  • 54chen解读NoSQL代表Dynamo http://goo.gl/fb/gs23C #
  • RT @tinyfool: 豆瓣的抓取出了什么问题了?我的blog在9点新文章一直更新都没有出来过,而且手动点了“重抓”也没有任何反应。//哥你没用feedburner吧 被GFW给G没了 #
  • RT @tinyfool: @54chen 我是在用feedburner啊,不过那东西谁不知道怎么绕过去啊 // 豆瓣不敢私自绕出去吧,可以向@hongqn 求证下豆瓣抓RSS翻不翻墙。 #

54chen解读NoSQL代表Dynamo

本文已经首发于InfoQ中文站,版权所有,原文为《解读NoSQL技术代表之作Dynamo》,如需转载,请务必附带本声明,谢谢。
InfoQ中文站是一个面向中高端技术人员的在线独立社区,为Java、.NET、Ruby、SOA、敏捷、架构等领域提供及时而有深度的资讯、高端技术大会如QCon、免费迷你书下载如《架构师》等。
NoSQL在过去的一年里,逐渐已经成为了家喻户晓的东西,我(54chen)自从去年开始人人网的NoSQL系统Nuclear的研发以来,一直看着NoSQL越来越热,越来越引来大家的围观。受infoQ霍师傅之托,特作此文,一来作过去一年的总结,二来希望以平白的话语对NoSQL系统在国内的发展献绵薄之力。

1.我眼中的两种模式

NoSQL其实并不是什么妖魔鬼怪,相反的,NoSQL的真谛其实应该是Not Only SQL,其产生是在数据量和访问量的增大下,人为地去添加机器、切分数据到不同的机器,变得越来越困难,人力成本越来越高,于是便开始有了这样的项目,本意是提高数据存储的自动化程度,减少人为干预的时间,让负载更加均匀。在国际上,真正的代表之作有来自Google的 BigTable 和Amazon 的Dynamo,他们分别使用了不同的基本原理。

1.1 MapReduce

这是历史最久的一种模型,典型的代表是BigTable。Map表示映射,Reduce表示化简。MapReduce通过把对数据集的大规模操作分发给网络上的每个节点实现可靠性(Map);每个节点会周期性的把完成的工作和状态的更新报告回来(Reduce)。大多数分布式运算可以抽象为MapReduce操作。Map是把输入Input分解成中间的Key/Value对,Reduce把Key/Value合成最终输出Output。这两个函数由程序员提供给系统,下层设施把Map和Reduce操作分布在集群上运行。

1.2 dynamo

我把dynamo专门归纳成为了一种,的确是这样的,它与MapReduce不同,自成一派。来说历史,Amazon于2006年推出了自己的云存储服务S3,2007年其CTO公布了S3的设计方案,从此江湖中就不再太平了,开源项目一个个如雨后春笋般地出现了。比较常见的有facebook开发的Cassandra(如果没有记错,在去年来到他们的项目网页的时候,上面还写着他们之中的一个开发人员是dynamo的设计人员,现在风头紧了,去掉了),还有linkedin的voldemort,国内的话,有豆瓣网的beansDB,人人网的nuclear等等。这次主要讲的也是dynamo的方案细节。

2.入门基础
Dynamo的意思是发电机,的确,这一整套的方案都像发电机一样,源源不断地提供服务,永不间断。以下内容看上去有点教条,但基本上要理解原理,这每一项都是必须知道的。

2.1 CAP原则
先来看历史,Eric A. Brewer教授,Inktomi公司的创始人,berkeley大学的计算机教授,Inktomi是雅虎搜索现在的台端技术核心支持。最主要的是,他们(Inktomi公司)在最早的时间里,开始研究分布计算。CAP原则的提出,可以追溯到2000年的时候(可以想象有多么早!),Brewer教授在一次talk中,基于他运作inktomi与在伯克利大学里的经验,总结出了CAP原则(后附当年的slide)。图2.1来自Brewer教授当年所画的图: cap 图2.1

Consistency(一致性),数据一致性,简单的说,就是数据复制到了N台机器,如果有更新,要N机器的数据是一起更新的。
Availability(可用性),好的响应性能,此项意思主要就是速度。
Partition tolerance(分区容错性),这里是说好的分区方法,体现具体一点,简单地可理解为是节点的可扩展性。

定理:任何分布式系统只可同时满足二点,没法三者兼顾。
忠告:架构师不要将精力浪费在如何设计能满足三者的完美分布式系统,而是应该进行取舍。

2.2 DHT

DHT(Distributed Hash Table,分布式哈希表),它是一种分布式存储寻址方法的统称。就像普通的哈希表,里面保存了key与value的对应关系,一般都能根据一个key去对应到相应的节点,从而得到相对应的value。
这里随带一提,在DHT算法中,一致性哈希作为第一个实用的算法,在大多数系统中都使用了它。一致性哈希基本解决了在P2P环境中最为关键的问题——如何在动态的网络拓扑中分布存储和路由。每个节点仅需维护少量相邻节点的信息,并且在节点加入/退出系统时,仅有相关的少量节点参与到拓扑的维护中。至于一致性哗然的细节就不在这里详细说了,要指明的一点是,在Dynamo的数据分区方式之后,其实内部已然是一个对一致性哈希的改造了。

3.进入Dynamo的世界

有了上面一章里的两个基础介绍之后,我们开始进入Dynamo的世界。

3.1 Dynamo的数据分区与作用

在Dynamo的实现中提到一个关键的东西,就是数据分区。
假设我们的数据的 key 的范围是0到2的64次方(不用怀疑你的数据量会超过它,正常甚至变态情况下你都是超不过的,甚至像伏地魔等其他类Dynamo系统是使用的2^31-1),然后设置一个常数,比如说1000,将我们的key的范围分成1000份。然后再将这1000份key的范围均匀分配到所有的节点(s个节点),这样每个节点负责的分区数就是1000/s份分区。
如图3.1,假设我们有A、B、C三台机器,然后将我们的分区定义了12个。 dynamo数据分区 图3.1

因为数据是均匀离散到这个环上的(有人开始会认为数据的key是从1、2、3、4。。。这样子一直下去的,其实不是的,哈希计算出来的值,都是一个离散的结果),所以我们每个分区的数据量是大致相等的。从图上我们可以得出,每台机器都分到了三个分区里的数据,并且因为分区是均匀的,在分区数量是相当大的时候,数据的分布会更加的均匀,与此同时,负载也被均匀地分开了(当然了,如果硬要说你的负载还是只集中在一个分区里,那不是这里讨论的问题了,有可能是你的哈希函数是不是有什么样的问题了)。

为什么要进行这样的分布呢,分布的好处在于,在有新机器加入的时候,只需要替换原有分区即可,如图3.2所示: dynamo数据分区 图3.2

同样是图3.1里的情况,12个分区分到ABC三个节点,图3.2中就是再进入了一个新的节点D,从图上的重新分布情况可以得出,所有节点里只需要转移四分之一的数据到新来的节点即可,同时,新节点的负载也伴随分区的转移而转移了(这里的12个分区太少了,如果是1200个分区甚至是12000个分区的话,这个结论就是正确的了,12个分区只为演示用)

3.2 从Dynamo的NRW看CAP法则

在Dynamo系统中,第一次提出来了NRW的方法。
N - 复制的次数
R - 读数据的最小节点数
W - 写成功的最小分区数
这三个数的具体作用呢,是用来灵活地调整Dynamo系统的可用性与一致性的。
举个例子来说,如果R=1的话,表示最少只需要去一个节点读数据即可,读到即返回,这时是可用性是很高的,但并不能保证数据的一致性,如果说W同时为1的话,那可用性更新是最高的一种情况,但这时完全不能保障数据的一致性,因为在可供复制的N个节点里,只需要写成功一次的话就返回了,也就意味着,有可能在读的这一次并没有真正读到需要的数据(一致性相当的不好)。如果W=R=N=3的话,也就是说,每次写的时候,都保证所有要复制的点都写成功,读的时候也是都读到,这样子一定读出来的数据是正确的,但是这中间的性能大打折扣,也就是说,数据的一致性非常的高,但系统的可用性却非常低了。如果R + W > N能够保证我们“读我们所写”,Dynamo推荐使用322的组合使用可。
Dynamo系统的数据分区让整个网络的可扩展性其实是一个固定值(你分了多少区,实际上网络里扩展节点的上限就是这个数),通过NRW来达到另外两个方向上的调整。

3.3 Dynamo的一些增加可用性的补救
针对一些经常可能出现的问题,Dynamo还提供了一些解决的方法。
第一个是hinted handoff数据的加入:在一个节点出现临时性故障时,数据会自动进入列表中的下一个节点进行写操作,并标记为handoff数据,在收到通知原节点恢复时重新把数据推回去。这能使系统的写入成功大大提升。
第二个是向量时钟来做版本控制:用一个向量(比如说[a,1]表示这个数据在a节点第一次写入)来标记数据的版本,这样在有版本冲突的时候,可以追溯到出现问题的地方。这可以使数据的最终一致成为可能。(Cassandra未用vector clock, 而只用client timestamps也达到了同样效果。)
第三个是Merkle tree来提速数据变动时的查找:使用Merkle tree为数据建立索引,只要任意数据有变动,都将快速反馈出来。
第四个是Gossip协议:一种通讯协议,目标是让节点与节点之间通信,省略中心节点的存在,使网络达到去中心化。提高系统的可用性。

关于作者
54chen(陈臻),人人网分布式存储研究人员,业余时间混迹于各技术组织且乐此不疲。目前关注实施PHP培训。对flex等前端技术有一点研究。个人技术站点:http://www.54chen.com/ 。可以通过电子邮件 czhttp@gmail.com 联系到他。

参考的网站
http://project-voldemort.com/
http://cassandra.apache.org/
http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf
http://timyang.net/data/dynamo-flawed-architecture-chinese/
http://www.cs.berkeley.edu/~brewer/
http://www.54chen.com/document/dynamo-based-systems.html
http://www.cs.berkeley.edu/~brewer/cs262b-2004/PODC-keynote.pdf
http://en.wikipedia.org/wiki/Distributed_hash_table
http://en.wikipedia.org/wiki/Consistent_hashing

跨系统共享键盘鼠标利器分享:synergy

世界杯马蜂窝 是这样的张总, ?在家里的电脑上按了CTRL+C,然后在公司的电脑上再按CTRL+V是。。。肯定不行的。即使同一篇文章也不行。不不,多贵的电脑都不行。

--题记

端午归来,特此总结,实现上述难题,靠一利器:synergy

此利器可打通mac\linux\windows任意两者的联系,使两个系统共享鼠标和键盘。下面以ubuntu 10.04与盗版windows XP为例。

首先,在ubuntu下面,建立服务端。
#sudo apt-get install synergy quicksynergy
#quicksynergy
启动后如图所示: synergy 只需要填写上下左右中的某一个位置修改成另一台机器的机器名,点击执行,常驻运行即可。

然后,在windows下面,安装客户端。
Synergy 1.3 Client
安装运行后如图: Synergy 1.3 输入Ubuntu机器的ip地址,点Start即可连上两机。

连上之后,可以撤掉在你办公桌面上的一个键盘,鼠标移动到哪个桌面上,键盘针对哪个系统输入,非常好用,还支持复制粘贴,对上班时候用两台电脑的同学非常适用。

54chen Twitter Memo 2010-06-13

  • 54chen Twitter memo 2010-06-06 http://goo.gl/fb/Rs2h8 #
  • 科举考试开始了 #
  • 互联网公司的产品人员是多么富有创意的一个方向,然后公司的产品们天天忙于大会小会,还会有时间静下来创意吗? #
  • 采访了一下新浪和盛大的兄弟,知道一个问题,其实大家的测试人员都非常不专业,经常提些类似产品建议的东西出来。 #
  • RT 许朝军: “赢”由五个汉字组成:亡、口、月、贝、凡,包含着赢家必备的五种意识或能力。 亡:危机意识。口:沟通能力。月:时间观念。贝:取财有道。凡:平常心态,从最坏处着想,向最好处努力。 #
  • @hongqn 大侠,535已经过去了,能不能把豆瓣小组的戒严变松点了,现在公开小组还是游客访问不了 #
  • http://book.qq.com/s/book/0/18/18959/index.shtml 80后白手起家:25岁我赚了3个亿 #
  • 组织哥学社的兄弟们一起书写的这本书,不知道能否组织好。http://www.douban.com/group/topic/11801788/ #
  • 公元2010年高考日,吾哥嫂产下一侄女,七斤,有前途,奔高考而来。 #
  • http://blog.renren.com/share/80178/2432185045 转 再一次蛋疼菊紧——我对于2010年高考作文题目内涵之探究 最后一个对天上人间的解释真是让人蛋疼 #
  • 在ubuntu下修改Empathy 2.30.1的conversation.py 文件达到支持小I群昵称,现提供修改好的conversation.py下载,复盖即可使用。http://url.cn/1t6APN #
  • RT @162cm:3台好机器,能不能顶住2000万动态PV呀???心里没底 //动到什么程序以及好到什么程度? #
  • RT Tank #网易#评论已经被#五毛#攻陷...http://url.cn/3DzTuX #
  • RT 宗苒 杨晓光: 又有那么一群孩子,以为自己就要解放,迫不及待要去狂欢,然后KTV,购物,聚餐,旅游,骄傲的行走……却不知,他们逃离了天堂…… #
  • 正在进行的圣战,把人人网page供下了,发现很有意思的事情,web×3了DB×2,帖吧挂了一会儿 #
  • CCAV2 经济半小时在高考结束第二天的时候讲大学应届生求职如何的困难,心酸。 #
  • 讲到一个计算机专业的“小王”--主持人的结论,他们在大学里没有职业规划。妈的上学呢规划毛的职业啊。 #
  • 一场技术的圣战:rose开源框架之portal http://goo.gl/fb/ekH7j #
  • 关于昨天的圣战,人人网公共主页遇到巨大压力的记实,http://www.54chen.com/architecture/rose-open-source-portal-framework.html 一场技术的圣战:rose开源框架之portal #
  • @162cm 可以考虑做成类似portal的设计,压力巨大的情况下,一个模块一个模块地隐藏 in reply to 162cm #
  • 前教育部长周济当选中国工程院院长 【评论已经关闭】 #
  • nnd 亚马逊S3服务被墙 twitter丢样式 #
  • 跟风 生日快乐 RT @laogao: @blogkid 今天你生日?生日快乐哈! #
  • RT 曹操 : 操何其聪明,72疑冢皆假!竖子去盗墓,无奈发掘个假墓,甚为难堪。于是约请几个老头在这里评论三国。操甚为开心! #
  • http://share.renren.com/share/GetShare.do?id=2474124437&owner=243221591&ref=newsfeed&sfet=110&fin=9 耗资2100万的主旋律动画--雷锋的故事--华丽! #
  • 我博客所使用的DNS服务器从下午4点开始受到DDOS攻击,时常会打不开网站。 #
  • 思密达1比0领先斯巴达 #

一场技术的圣战:rose开源框架之portal

作者:人人网架构师 王志亮

(54chen按:此文为客座博文,王志亮大侠,人人网架构师,疱丁分词创始人,rose是他的另一开源大作。关于69圣战,请看http://zhidao.baidu.com/question/158643718.html?si=2&wtp=wk

2010年的69日是一个圣战的日子,零点一到就有人开始,好戏也如约在晚上7点发生。人人网战场是SJ的公共主页:http://page.renren.com/sj

 

对不同人,这个日子意味着不同,滋味也不同。作为人人网技术团队,我们要保证服务能力、用户体验能够应付得了这个挑战。

 

某一个服务器的能力总有限,为了应付突然增长的读写量,web服务架构、内部服务架构、数据库架构等要能够轻松通过服务器调配来满足。就web服务器而言,我们增加了1倍的机器。现在再回头来看监控的数据,一切显得美好。这个期间整个服务做到了服务能力没有中断。除此之外,在这次圣战中,其中还有一项我们独有的技术起到了重要的作用:rose portal ,下面作一个介绍:

 

图1是sj的主页:

 

图1 sj在人人网的公共主页

这个页面分为三列:

  • 左边有 “推荐给好友”、“基本信息”、“相册”;
  • 中间有“给SJ留言”、“好友留言”;
  • 右边有“好友”,“人人的用户还关注”等。

在后台,这些被分解为不同的模块,我们称之为”window”。这每一个window都意味着可能连接一个独立的服务集群,比如基本信息服务、留言服务、好友服务、相册服务等等。这样,一个公共主页就等于多个独立的、可配置的window模块组成,如图2所示 :

图2 公共主页的window模块组成

随着伟大圣战的深入,这个页面就变成这样(右边的栏目不见了),如图3所示

图3 圣战进行中时模块的自动保护

产品同学看到此情此景,仍然很开心:“只要留言的window能在,其它的没在不要紧”

但是不一会,继续恶化,如图4所示:

图4 圣战进行中压力进一步增加

甚至到了图5的情形:

 

图5 圣战进行中压力进一步增加

黄晶看着公共主页呈现出这种状况时,笑着形容这样的图“缺胳膊少腿”:“怎么还没加机器”。当公共主页技术团队把机器逐步增加一倍的时候,这种情况变少了,甚至就没有了。

虽然这些页面看起来“缺胳膊少腿”,但要知道在以前,这种情况,我们整个页面的某个模块堵了可会导致用户浏览器长期空白,直至最后提示网页不可显示。这给用户带来很不好的体验,同时因为网页一直不释放连接,恶性循环导致web服务器最后全哑了。

好在,早在半年前我们开发了rose portal框架,解决了此问题,rose portal是一个服务端portal技术,基于rose框架 (也就是servlet容器) 下的服务端portal技术,rose portal不是Java常说的portlet技术,也不是基于ajax的客户端portal技术。

rose poral提供这些特性;

  1. 能够将一个页面分为多个窗口;
  2. 开发者使用一个主控制器,在主控制器中不断通过portal.addWindow方法,将请求并发转发给多个窗口;
  3. 每个窗口有单独的控制器处理逻辑、可以返回独立视图就像一个web请求一样;
  4. 框架能够处理并发转发并发逻辑处理并发渲染,并最后统一返回把html输出给浏览器;
  5. 提供了“整体超时控制”手段,使得某个窗口因一时服务能力下降时不影响整个页面的输出;

 

这里有一个portal开发示例:

http://code.google.com/p/paoding-rose/wiki/Rose_Portal_Demo

 

献上现在最新的sj主页(2010/6/10 10:46作为结束,如图6,目前粉丝 粉丝 21w+、留言146w+,谢谢(另感谢李伟博同学,以上图片均是他收集的)

 

图6 最新的sj主页

54chen Twitter Memo 2010-06-06

  • 行走江湖,需讲人品 #
  • 经典:天朝的法律很完善,不过都是txt文件,不是exe文件。 #
  • http://mirrors.sohu.com/ebook/ sohu这个镜像很赞。 #
  • 跟风跟风求交往 RT @blogkid:跟风求交往 RT @huandu: 这两天和负责设计&实现下一代big table的google牛人聊天,受益良多,能和他聊天纯粹因为他是我女朋友的亲哥哥,真是非常的orz,没想到有这么牛的亲戚 #
  • 电梯前的小盆友们 节日快乐 #
  • 准备在人人网UGC团队博客上邀请人人网各个优秀产品线的开发精英们作一对一的工程师接龙活动,类似CSDN的架构师接龙,欢迎就你对人人网技术层面感兴趣的内容反馈过来。 #
  • 我把QQ新闻里关于居住证和房产税的新闻内容复制去了豆瓣,结果被豆瓣和谐了,莫谈国是。 #
  • 保安队长领了枪,射了法院院长。 #
  • 一小姐深夜被蒙面人强.暴,她在派出所分析说:民工皮肤没这么好;工人东西没这么小;光棍射的没这么少;老人硬的没这么早,综合分析是领导. #
  • 中国式经济学:GDP = 搞地皮 #
  • 一般新浪微博都是140个字吧,163的微博可以输入163个字,我也在寻思360安全卫士要是出个微博是不是得输入360个字?网友纷纷表示51.com和 56.com会压力很大。其实我一直在等2688网店和3721网络实名出微博。网友说,其实,移动10086也在酝酿微博…… #
  • RT @d_yang:

    测҉试҉敏҉感҉词҉:҉六҉四҉快҉到҉了҉!҉ #
  • http://www.bei-ji-xing.com/archives/297 QQ扫描硬盘这事说得神乎其神的,谁知道是真是假呢? #
  • 在会见了温家宝之后,日本首相鸠山由纪夫突然召开记者会宣布辞任。这是继德国总统之后,近期第二位国际首脑在会见温家宝后因为种种原因突然辞职。大家纷纷猜测:总理去发船票了…… #
  • RT 康伟.kw :你还在苦苦寻觅闫凤娇那327M、尼康D80拍摄、焦距20-90毫米、曝光补偿为0、F=7.1、ISO100-160、2872X2592pix的原始101P? #
  • 哥学社 第一次 在 PHP兄弟连《草根》杂志 建立专栏 正式提供下载 http://www.douban.com/group/topic/11704573/ #
  • @nshen121 求共享 in reply to nshen121 #
  • RT @sky000:准生证→出生证→独生证→身份证→学生证→团员证→党员证→学位证→毕业证→暂住证→结婚证→房产证→驾驶证→行驶证→健康证→工作证→医保证→下岗证→ 失业证→上岗证→资格证→荣誉证→通行证→残疾证→退休证→老人证→死亡证 #
  • synergy 这个软件很不错,把鼠标和键盘在两机器间共享,我把我的ubuntu+windows用一个键盘鼠标共享了 #
  • RT @ kejunz:平时分享和交流多的公司,一定是技术活跃,团队整体水平也差不了,技术活跃一定创新多,产出价值也高。从管理角度上,可以反映一家公司的健康状态 #
  • RT @fuchaoqun:@ 奇遇花园 now // 上班时间搞活动? #
  • 40台640G机器存下10T的nuclear数据 #
  • 今天,敏感词都是敏感词 #
  • 今天是五月三十五日,我们的双32位的服务器又上线了,单台机器的硬盘刚好是双320G的 #
  • RT @kejunz:“ 广场上曾经奔跑的青年 如今已经失去了他们的信念 而你整夜的坐在广场里面 等待黑夜夜吞噬着你的一切 这是一个没有希望的广场 ” - CarsickCars<广场> #
  • 这是一种需要同时启4个的精神 RT@162cm:一个yapache进程,努力地向Cpu 25%占用靠近 这是一种什么精神 #
  • RT 周卿: zz今天面产品,是一个女生,我问她如果一个项目很紧急,但是程序员不愿意加班,你会怎么办?答曰:“撒娇” #
  • ubuntu 10.04 LTS版本下的Empathy MSN群聊显示昵称方法 http://goo.gl/fb/fr8dk #

Ubuntu 10.04 LTS版本下的Empathy MSN群聊显示昵称方法

54chen ubuntu empathy msn

1.关系普及

Empathy是个托,python-papyon是个python实现的msn库,telepathy-butterfly是个完成msn功能的python客户端。

2.修改办法

sudo vim /usr/share/pyshared/papyon/conversation.py
查找 if message_type == 这个字符串
找到内容为:
if message_type == 'text/plain':
msg = ConversationMessage(unicode(message.body, message_encoding),
TextFormat.parse(message_formatting),
self.__last_received_msn_objects)
try:
display_name = message.get_header('P4-Context')

将if判断后try之前中间定义msg这一堆内容修改为如下:

try:
msg = ConversationMessage(unicode("["+message.get_header('P4-Context')+"]"+message.body, message_encoding),
TextFormat.parse(message_formatting),
self.__last_received_msn_objects)
except KeyError:
msg = ConversationMessage(unicode(message.body, message_encoding),
TextFormat.parse(message_formatting),
self.__last_received_msn_objects)

保存后重新启动empathy,msn群里就能显示昵称鸟。

empathy

点击此处下载我的conversation.py文件

下载下来后执行:

chen@54chen:~$ gunzip conversation.py.gz
chen@54chen:~$ sudo cp conversation.py /usr/share/pyshared/papyon/

我的版本是:Empathy 2.30.1

参加mongodb Workshop

29号,星期六,参加了在ThoughtWorks办公室举行的mongodb workshop。
主讲者Peter Membrey,是个年轻有为的牛人,17岁就获得了RHCE。
这是一个很小团体的技术会议,人数没有超过20人,来参加的都是有名气的牛人们。会上认识了腾讯超群大侠(还不忘记为他们招聘挖人吼一声),以及甲骨文的黄秋大侠(给人很文雅的感觉:)),以及来自鲜果和新浪的两位大侠(sorry,两位都没带名片,叫不上名字来~hoho~)
Peter的讲话是全英文的,只能听懂一半,另一半完全靠ppt上的内容。。。不过并不妨碍我们交流~~
ThoughtWorks的办公室是非常nice的。。。有图有真相。。。(图从网上找的,忘记现场拍照了)
这是厨房 有点吧台的样子 thougtworks

这是书架,沿着边上全是 thoughtworks

这是办公的地方,没有格子 thoughtworks

另外,创建了一个group,欢迎对no-sql架构有兴趣一起进行深入探讨的同志加入 http://groups.google.co.nz/group/dynamo_china 目前已经看到豆瓣的洪强宁大侠加进来了,更多的大侠正在加入中。。。

54chen Twitter Memo 2010-05-30

  • 54chen Twitter memo 2010-05-23 http://goo.gl/fb/DAGLG #
  • 54chen Twitter memo 2010-05-23 http://goo.gl/fb/Un4td #
  • 是因为昨天凌晨的两场车祸吗,好些个twitter host都不可用了 #
  • 我在那里生活了两年,夏天真的是很爽的 blogkid: 上周六晚上,和几个朋友在牡丹园附近吃饭,之后在元大都遗址公园散步。公园里有老人们在唱苏联歌曲,晚风习习,真想住到这样的地方。我想离开西二旗了 #
  • 我在那里生活了两年,夏天真的是很爽的 RT @blogkid: 上周六晚上,和几个朋友在牡丹园附近吃饭,之后在元大都遗址公园散步。公园里有老人们在唱苏联歌曲,晚风习习,真想住到这样的地方。我想离开西二旗了 #
  • http://news.qq.com/a/20100524/000842.htm 吓人,美的的紫砂煲,家里有一个放着,好在没用 #
  • RT 侯冲:-D : ZZ:某人的遗书: “存折在密码箱里、密码箱在保险柜里、保险柜钥匙夹在存折里” #
  • 被人晃点了吧 退出登录看看 RT @taiwen: 刚才看http://tinyurl.com/25tfagr Thanks”,里面竟然还有我的名字,其他人的被感谢理由都很清楚,唯独我的那部分写的是“Yes! Thank You!”。为什么要感谢我呢?纳 #
  • http://tinyurl.com/35kvtnp 逼迫一个白求恩式的老外关闭博客、威胁他不准在媒体上出现、否则就驱逐出境,这个国家已经疯了 #
  • 看完柴静采访卢安克的视频,心平气和的,你会知道,一个人一生中有追求与没有追求,是大不一样的 #
  • RT Tank:在香港一切准许,除非法律禁止;在新加坡一切禁止,除非法律准许;在台湾一切准许,包括法律禁止;在中国大陆 一切禁止,包括法律准许。 #
  • RT 张章 http://is.gd/cmL3P 具说曾哥也去日本发展了 #
  • RT @rewinx: 快速跳转到Google SSL 中文版的网址:http://ur.ly/cf4W #
  • MR.分享: 故人西辞富士康,早死投胎去蓝翔。蓝翔毕业去应聘,M的还是富士康 这个太牛B了 #
  • 这句要顶 RT @d_yang: 生买不起房,死买不起墓,半生不死又住不起医院。 #
  • 大家前半生考过的最低分有多低? #
  • RT @apker: 35分,高数.. //高数考这点可以原谅 #
  • RT @d_yang: @apker @54chen 12分, 第一次中考,语文, 我在开场的第10分钟倒下, 住院40天.//这是意外不算,还有更低的吗 #
  • 纯洁一顶 RT @taiwen: 所见所闻改变一生,不知不觉断送一生。 #
  • [纯水]庆祝数据开始注入nuclear系统和哥学社整装待发 http://goo.gl/fb/OgtSZ #
  • 上天开恩 friendfeed解封了一点点 ssl已经可以访问 #
  • 今天焦点访谈和前半生看的焦点访谈都不一样,以前一直都是说一件事,这回先讲拆迁,接着研究大蒜的价格了。 #
  • RT @Fenng: 惜别淘宝,全职创业9RIA.com天地会 http://is.gd/cqHby //吓一跳,一直在等你放你的消息呢,原来是黑羽的消息 #
  • 以后再跳楼的,判死刑。//不错的提议 #
  • 写了一脚本,可以自动分析可用的twitter host,不知道是应该分享呢,还是应该分享。 #
  • 分享一个批量扫描ip地址的shell内涵脚本 http://goo.gl/fb/bmopn #
  • RT @d_yang: http://ur.ly/drn0 半年前柴静对卢安克的专访//所谓信仰与理想 #
  • 今天打开支付宝付账,弹出来一个框框,叫天威诚信证书助手,很黄很暴力,我立即把它关了。 #
  • RT @d_yang @54chen 我觉得有来头, 支付宝可能是被合作的. //向@Fenng求证 #
  • 我盯着一个需求横看竖看,多天之后终于看明白了,一个action就可以搞定了。如果不看,此时应该是许多个action了 #
  • @162cm 兄弟真滋润呀 in reply to 162cm #