李开复给中国学生的第七封信

21世纪最需要的7种人才

我们都知道21世纪最有价值的是人才,是什么人才呢,就是我今天要演讲的题目。我想我这个演讲有一个很大的假设就是21世纪需要的人才与20世纪、19世纪有着很大的差别,因为21世纪有几个很重大的革命发生。在21世纪我们更多的工作是靠我们脑力的创造,是靠平等的竞争,已经没有国界的差别,世界被铲为平地,任何一个国家的人都可以和另外一个国家的人合作或者竞争,而他们都可以接触到、使用到、共享到同样的信息。不像过去,谁能独占信息他就能对另一个人或者对那个公司发挥相当大的价值。
今天的信息是因为共享才能发挥它真正的潜力。所以在这样的情况下,每个人都可以自由地选择,平等地竞争,他们会积极地去获取自己的信息,追求自己的兴趣。他们期望自己工作的公司采取的不再是控制式的管理,而是放权式的管理。因为在21世纪,一个人他是靠自己的脑力创造财富,他很聪明很有创意,他跟全世界每一个人平等地竞争,然后每一个人都有同样的信息,没有一个人会愿意在一个不公平的控制下做一个公司的齿轮。每个人都会希望发挥自己的潜能,他希望自己到一个公司工作,这个公司能够放权地让每一个员工做自己的事情。还有呢,21世纪什么都改变得非常快。你才认为说某某一个技术或者某某一个公司是很火热的,忽然一个新的技术或者一个新的公司已经出来了。这都是因为互联网,每个国家,每个领域之间的边界因此在不断地消除,世界各地的人们可以一起工作,竞争和合作。所以在这样的一个环境之下,21世纪需要的不再是19、20世纪听话,没有自己意见,努力有毅力的所谓的蓝领或者白领工人,更需要的是我的演讲要谈到的7种人。

1.创新实践者——What matters is not innovation , but useful innovation。

这7种人中的第1种是创新实践者。在今天谈到的所有人时,我都会引用一句我认为很好的话。那么第一句话是谁说得呢,是我说的。这句话跟创新有关,待会还会谈到。我想说的是在21世纪真正有价值的人是能够创新的人。他不是一个只会使用别人的方法做事情的人,他不是那种只会听话做事情的一颗棋子,一个齿轮。因为,在如今的竞争之下,一个公司唯一可以延续的竞争优势就是它的创新。任何东西都可以很容易地被模仿,只有创新很难被模仿。而创新一旦被模仿,你唯一的办法就是继续地创新。所以一批有生命力的能够持续创新的员工是唯一能够带给企业持续竞争力的财富。
你们可能会说,李开复是不是要讲Google,讲其他科技公司要学计算机科学,要做最高深的研究这才是创新呢?其实不是的。在每一个领域都可以创新,也就是这些每一个不同领域的创新,让每一个工作变得多彩多姿。我可以举个例子。如果你在美国加州101公路硅谷段上开车,你可能会看到一个广告牌。整个广告牌上面没有公司名也没有任何广告词,只简简单单刷着“(在‘e’的数列中所能找到的第一个十位数质数).com”。很多在硅谷工作的聪明人开车看到了这个广告,他们回家就会去算,有些用计算机来算,有些用数学方法来推算,算出来答案以后登陆这个网站一看,发现另外有一个更难的题目。然后他们再做了这道题目,又会到达另外一个网站,就着样做了一个题目又一个题目,最后他们发现自己到了一个很特殊的网站,这个网站就是Google的招聘网站。我们可以从这个例子看到,在Google这样一个创新的公司,它的创新其实远远不止在于一个工程部门。你可以看到招聘,市场都是充满了创意的。
关于创新还有一点要注意的,21世纪的创新必须实时、实践。因为我们有了互联网的存在,每个公司的步伐都非常快。如果你花很多的时候去做一些验证,一些用户调查,再花一两年的时间才把一个东西编出来再做测试,一个产品四五年做出来以后很可能已经过时了。所以在这21世纪,光做一个创新者是不够的,要做一个创新实践者。这就回答了我上面那句话:What matters is not innovation, but useful innovation。只是为了创新而创新是没有意义的,要做有用的创新才是有意义的。
记得我在SCI公司的时候,曾经犯过的一个最大的错误就是只想到创新,没有想到实践。我们做了一个非常酷的三维浏览器,今天可能都还没有人在使用。当时,我们每次演示的时候,观众的下巴都会掉下来,说:哇,怎么会做这么酷的一个东西!但是我们忘记了这么酷的东西却是没有市场的。最后结果是相当的失败,让我也有了一个很惨痛的经验,尤其是当我看到一百多名员工失去他们工作的时候,让我下了一个决心,就是上面这句话。
我们虽然要创新,但是不是为了创新而创新,而是为了做有用的事情而创新。我们如果回顾历史,可以看到许多成功的人才,他们有些创新,有些实践,有些左脑发达,有些右脑发达。但是那些真正对世界有重大贡献的人,我想他们不仅是创新者,也是实践者,比如说爱迪生,比尔盖茨,Larry 和Sergey,都是很好的例子。一个真正的创新实践者每一次在创新的时候都忘不了实践,在实践的时候也忘不了创新,这样的人,我想是21世纪不可缺少的人才。

2.跨领域合成者——What matters is not analysis but synthesis。

第2点呢,我想非常需要的是跨领域合成者。刚才听到了竺可桢学院,它本身是多学科的,强化班也是由来自不同专业的同学组成的。这点确实也是非常符合了所谓的合成者。相信在中国的未来,在全世界的未来,我们更需要的人才不只是那些把一个学科学得非常非常深的,而是那些把自己学科学好,同时能够与其他领域做一个跨领域结合的人才。原因其实非常简单,如果是世界上有1000种知识,这个知识本身你可以学得很深,但是两个人的知识通过交叉碰撞又可以产生新的知识,三个人的碰撞就能产生十亿个组合。
以计算机为例,如果你是学计算机的,又对心理学感兴趣,这样一个跨学科的合成,你可能对用户界面或者可用度测试会有一些贡献。所以,很多新的领域的产生,都是靠过去的两种学科所交叉碰撞出来的,这是一个很好的机会。如果把一门学科学得太深了,可能会去钻牛角尖,反而失去创新实践的机会。真正重要的不是analysis,不是要分析得很深,而是synthesis,怎么样有合成的机会。
所以,对各位同学我的建议就是,当然读好你的专业是有必要的,但是同时要考虑下是否还有别的什么专业是你有兴趣的。这两个专业最新的思想能不能结合起来,做一些即有创意又可以实践的东西,这可能是最有成长空间的一些机会。

3.高情商合作者——EQ is 9 times more important than IQ。

第3种最需要的人是高情商合作者。EQ is 9 times more important than IQ,这句话来自Daniel Goleman的《EQ》这本书。《EQ》这本书谈到情商和智商的一些差别,还有哪个比较重要。他做了一个研究,找了几千个企业的领导者。他研究是什么因素让这些非常优秀的领导者和普通的领导者有所区别。他研究的结论最重要的差别不在于IQ,而是比IQ要更重要9倍的EQ,即情商。
情商包括了怎样与人合作,包括了对自己的一种自觉,包括了对自己的一种管理,也包括了和别人团结合作以及社交的一些能力。EQ的重要性在21世纪是非常显著的,因为在21世纪,我们需要全球的合作,需要跨领域的合成。比如说你学的是心理学,你要跟学计算机的人合作才能做得出用户界面。跨领域的合作,跨国度的合作,跨语言的合作,这些都是必须要的。所以,过去也许在很多的环境里面,你作为一个孤僻自傲的天才会得到很大的重视,但是这个情况现在已经在大大地改变了。
过去,我曾在我的人才观里提到,在这个信息社会里,与过去的工业社会很大的一个差别就是信息社会最好的一个人才,一个程序员、一个科学家,可能比普通人生产力好个3倍、5倍、10倍或者20倍甚至更多。但是我想在这里补充的一句话就是说,即使他在技术方面好个多少倍,如果他是一个孤僻自傲、不能合作,甚至引起团队无法工作的人,那么他对这个团队,反而是一个负面的效果。
当我们做管理的时候,我们也必须考虑到,如果你要建立一个非常健康的团队,不管是在Google工作还是未来的Google Camp,一定要在每个人很客观高情商地愿意与他人合作,尊敬别人的前提之下,才可能有很好的结果,尤其是在21世纪这样一个情商和合作是那么重要的世纪里面。所以,我对各位同学的建议是,在你可以抓住的每一个机会里,多参与社团工作,多建立一些与人合作的基础,无论是在上课,还是参与社团项目,或是暑期工作的机会。让自己除了读书之外,多做一个能够与人团结、合作、客观、尊敬别人、聆听别人的一个高情商的学生。

4.高效能沟通者——The man who can think and does not know how to express what he thinks is at the level of him who cannot think。

第4种人是高效能的沟通者。一个人如果有思想但是不能表达自己,他其实就是一个没有思想的人,这句话其实相当的有道理。我想在座很多理工科的同学以前可能认为只要有思想就够了,不过这句话告诉我们你只有思想不能沟通,其实你是没有思想的。这句话其实并没有夸张,在21世纪全世界都是信息的前提下,很好的信息传播渠道还是经过人。人怎么传播信息的,靠沟通。一个人他的沟通能力很好,他可以把一个很难懂的信息很好地传播给别人。一个人沟通能力很差,他就无法传播信息,因此别人可能看不起他,认为他没有思想。所以沟通能力是非常需要学习的。
这种沟通的能力怎么得到呢,我可以给同学们几个很好的建议。你沟通的时候一定要理解你的听众,你要知道你的听众在想什么,听众从你的讲话中能得到什么好处,即What’s in it for you。还有要注意说话的方式,不要用说教,而应该采取引导的方式。当你与别人沟通的时候,你要先想好你主要要传达的Message是什么,用听众能够接受的方式表达出来。

5.热爱工作者——If you find a job you love , you will never work a day in your life。

第5种非常需要的人才是热爱工作者。因为在全球被铲平之后,每一个人都是平等的。如果你能够做一个工作是你非常热爱的,那么你可能在睡觉、洗澡、吃饭时都在想你的工作。你可能就会更有热情去做你的工作。你不认为你的工作是一个枯燥的事情,而是可以享受的事情。所有就有这么一句话,有一天有个美国朋友到我的办公室来说你们的孔夫子实在是太聪明了。我说怎么回事呢。他说你看他讲的这句话多有道理啊:If you find a job you love, you will never work a day in your life。我就跟他说谢谢你夸奖我们的孔夫子,不过我实在想不起来孔夫子说了这句话。
后来当天开车回家的时候我才想到可能是“知之者不如好之者,好之者不如乐之者”这句话。但是今天看起来,我认为可能这句英文的翻译还更贴切一些,在21世纪更能够被更多的人理解。因为如果你真的很爱你的工作,你就不是在工作了,你是在享受了。如果你是在享受的话,你一定会有更多的热情投入,更多的时间投入,更乐意去做更多的工作。到了星期五可能不想回家,到了星期天可能就想来上班了。那么你想比别人做得差可能都很困难。
我们能看到的是,如果你能找到你的最爱,你的一生都会过得比较快乐。所以各位同学,如果你们还没找到你们的最爱,我的建议是保持一颗好奇的心,多去尝试不同的事情。然后要理解你的专业和你的工作不见得是完全一样的。要多做咨询,了解有什么样的公司,什么样的环境,什么样的工作你毕业后可以从中选择。如果你在一个你喜欢的专业里面呢,珍惜它,好好地去找一份未来相应的工作。如果是在一个可以选择的十字路口,比如说考研,出国等等,这个时候你要好好地去选一个你真正喜欢的专业,而且也许把刚才谈到的跨领域合作的概念借鉴过来。并不是说我过去学的是一个不喜欢的专业,我就要从文科转到理科。也许你可以找到一个更好的跨越的台阶。如果你不喜欢你的专业呢,你也可以在这个专业里面尽量找一个大专业里面的小专业,也许是你比较喜欢的;或者你可以在一个你认为你比较喜欢的专业和你现在不喜欢的专业之间的交叉学科找一些机会。所以不管怎么样,最后能够找到你爱的事情,你就能发挥你的潜力,成为21世纪需要的热爱工作者。

6.积极主动者——In a few hundred years , the most important event those historians will see is that for the first time , people will have a choice. They will have to manage themselves。

第6种是积极主动者。这句话是Peter Drucker所说的。他说几百年之后,历史学家回顾今天,他们会说这个世纪里最重要的事情,不是互联网,而是人有了选择。有了选择就要积极主动,然后需要管理自己。这是最重要的一点,这也就是我们从工业社会转变到现在的信息社会所发生的最重要的事情。一个积极主动者他对自己的一切一定要负责,因为如果你自己不在乎,没有别人会比你更在乎,没有人会比你更知道你想做什么。在来到大学之前,一切都是消极,由父母来决定的。进入大学之后,要开始对自己的一切负责。不去解决也是一种解决,不做决定其实也是一种决定,这个决定就是让自己走入一个消极而不是积极的方向。
在我出书的时候许多人喜欢让我把他们的座右铭写在书上,当我有时间的时候我也会尽量配合,但是有一句话我绝对是不写的,这句话就是沉默是金。因为在今天的环境里面,每个人需要合适地推销自己,让别人知道你的成果。因为如果你不表达,那其实别人就会认为你没有思想。当然,在适当的环境里,你才能做适当的表达,并不是要你抢别人的机会,也不是要你过分地做一个出头鸟。但是,如果你有一些想法有一些思想一定要表达出来。
在这个21世纪里,每个人都有想法,都有信息。那些最有信息或者最有想法的人可能会得到很多或者更多的注意。比如说在这次成立Google Camp的时候,工作人员有一天来找我说我们这个Google Camp有一些想法你觉得怎么样?当时我记得非常清楚的就是我在全国20多个高校做巡回演讲的时候在那些学校见到了一些非常积极主动的同学。我就跟他说,你去下面四个学校见见曾经主持我办的活动的同学吧,因为我认为他们是积极主动的,是符合Google Camp的精神的。我认为他们会给你很多想法,也许他们会成为我们的Google Camp的骨干。所以,如果你们在想,怎么挑到这四个学校的呢,很大的原因就是当时我做巡回演讲的时候这是四个让我感触最深最积极主动的学校,最优秀的同学。所以这是一个活生生的今天在Google Camp成立的时候发生的例子。
我们可以看到正是因为当时有这么一批积极主动的同学让我们今天有机会在浙大成立这个Google Camp。积极主动者,他并不只是积极地等待机会,他还需要积极地把握机会,为自己创造机会。这点可能是中国的学生,中国的员工最需要常常提醒自己的地方。前一阵我们在中国差不多招了三十多个员工,工作了三四个月。有一天我们在聚会,他们就问我说:开复,你对我们这三十个刚开始的关门弟子有什么建议没有。我的回答是:从技术方面,从对公司的理想、价值观认同以及努力方面,我都非常非常的满意。但是,如果要讲一点我希望你们未来可以做的更好的,我希望你们未来能够更加积极主动,要提出你们的想法。

7.乐观向上者——The glass is half full or half empty depending on whether you’re pouring in or out

最后我想讲的是乐观向上者。这句话来自美国的一个喜剧演员Bill Cosby,他是这么说的,我们常说一杯水是一半满的还是一半空的,其实要看你是继续把水注进杯子里,还是把水从杯子里面倒出去。如果你在继续注水的话,你会期望着水位上升;如果你在倒水的话,你会想到很快杯子就会空掉了。其实这告诉我们的是一个人的思想,是一个乐观的人,还是一个悲观的人。如果你是一个乐观向上的人,你会总告诉自己未来会更好。台湾有位企业家叫做张忠谋,他是台基电的董事长,他最近写了一篇文章,我觉得里面有些很有哲理的话。他有个朋友请他提几个字挂在墙上。然后张忠谋就跟他说,我的字写得不好,但是我随便帮你写几个字,然后他就写了“常想一二”这四个字。他朋友说什么叫“常想一二”呢。然后张忠谋就告诉他说,你没有听过吗?我们都说人生不如意之事十有八九,我要告诉你常想那剩下那一二比较如意的事情。他说他从小就看了很多大人物的传记,他发现了一个规律,凡是成功者都是受苦受难的。然后他们的生命几乎就是人生不如意事十有八九的真实写照。但是他发现这些人之所以能够成功,就是因为他们保持了正面的思考,通过“常想一二”,他们能够超越苦难。苦难对他们来说反而成了生命中最好的养料,为他们未来的成功做了良好的铺垫。
所以这些成功者在面对苦难时的坚持、乐观和勇气是最重要的。人生的如意或不如意,更重要的不是取决于人生的际遇而是思想的瞬间。所以,人生的真正品质取决于你有没有“常想一二”这种乐观的思维方式,观点反而比这个事实更重要。这是他很有哲理的一篇文章,我想你用Google可以搜索得到。
其实在21世纪,还有很多其他的理由要做一个乐观向上的人。因为21世纪是一个更实时善变的环境,我们尝试的事情会碰到很多很多的失败。我们都听到说Google很酷,有一个20%的Project,每一个人都有20%的时间做自己想做的事情。但是,如果我们做一个统计,我想一定会发现,这个20%自己想做的Project绝大多数一定是失败的。如果你没有一个良好的心态,不能客观地说我学到了一个Lesson有助于我做下一个项目时,那你很快就会处于一个非常沮丧的心态。所以Google公司不但不惩罚失败,还鼓励每个人客观地从失败中爬起来。我们要有一种心态,要认为挫折不是一种惩罚,而是一个学习的机会。
当我回顾我一生的职业生涯,我想我学到最多的绝对不是来源于我的成功。反而是我在读博士的时候被评为最坏的老师,在一个公司做了一个很酷的技术却没有用,导致公司被卖掉、员工失业等等失败的经历让我学到了很多,超过了我在语音识别或者其他领域所取得的成就。所以一定要把握每一个失败的时候,让自己过渡好每一个痛苦的时期。然后要能有正面的思想,要站起来,要正视自己的错误,能够从错误中学习。

最后我做一个总结:在21世纪里面,我们需要认真读书的同学,但是我们更需要创新实践的人才。我们需要每一科的专才,但是我们更需要跨领域合成者。我们需要高智商的人,但是更需要高情商的人。我们需要每一个学生能够高效能地理解,但是未来你们更需要高效能地沟通。
毕业后,当然要找一个热门的工作,但是更重要的是你要热爱你的工作。不要再继续做一个只会被动听话的学生,而要做一个积极主动的学生。不要只是做一个小心翼翼的人,而要做一个乐观向上的人。

转自:开复和他的学生网

Tags: , ,

抵制垃圾短信 抵制短信广告

前一阵,QQ 的一个消息,报道了中国移动公布垃圾短信投诉号码的新闻:

http://tech.qq.com/a/20080320/000144.htm

我看到后特别高兴,一直遭受垃圾短信困扰的我,终于有机会做出反击了!

我是做 Web 开发的,当前 web 2.0 的大环境下,我认为我们可以用程序来帮助大家完成很多工作。我曾经报怨过中国移动等大公司,不思进取,开始赚钱了就蹲在哪儿充大爷,根本不为用户的需求考虑一点点改进。

垃圾短信很讨厌,我特别希望中国移动可以开发一个用户平台,用户可以自己添加短信黑名单,这样,被我设置过号码的垃圾短信就再也无法发到我的手机上。其实这套系统非常简单,无非就是会对性能造成一定影响,但通过良好的设计和优化,肯定可以解决的。这可以大大提高用户对中国移动服务的满意度。

遗憾的是,到现在也没有一个类似的系统。

不过,前一阵的那个垃圾短信举报号码,看来还是挺好用的。

最近这十来天,我收到过十几条垃圾短信,每收到一条,我就立刻举报。

这不,今天中国移动就给我回复了短信,以下是内容原文:

“(1/2)尊敬的客户,您05月05日举报06358978317(号码)曾向您发送了不良信息,我们已经配合相关部门核实并做了妥善处理,感谢(2/2)您对营造绿色通信环境做出的努力!中国移动”

这是我5分钟前收到的。

我很欣慰,我的努力,有了一点点效果。

真的是举手之劳,从现在开始,不会再有手机用户会收到06358978317发的垃圾短信了。我邀请大家一起加入抵制垃圾短信的行列,一切都是那么简单:

当您收到垃圾短信时,把发送方的号码和英文星号 * 连在一起插入到短信头部,然后把短信转发至 10086999 即可。

例如:06358978317 给我发送了垃圾短信,内容是 “我是SB,来看看我的猥琐样子吧”,我选择了转发短信,并编辑内容 “06358978317*我是SB,来看看我的猥琐样子吧”,转发到了 10086999。

过几分钟,你就会收到中国移动的提示,告诉你他们很快会进行调查并处理。

我先替广大的手机用户向您对抵制垃圾短信所做的努力表示感谢!

Tags: ,

正则表达式 测试工具 Regex Buddy

接上文 Regular Expression 排除字符串 不包含字符串 ,连夜上传了一个用于测试正则表达式的工具,可以方便地设置测试用例,还可以一步一步引导你如何写一个有效的正则:

Regex Buddy 2.01 破解版

实在不好意思,我这里也是破解版,正版买不起,咱又不是用作商业用途,自己学习用,大家就不要鄙视我了,谢谢!

Tags:

Regular Expression 排除字符串 不包含字符串

今天在写一个 Symfony 的路由匹配规则,查看文档的时候发现有一个 requirements 参数,可以对自定义的变量匹配正则表达式。用它匹配特定的字符串很容易,比如 requirements: { id: \d+ } 表示匹配一个或多个数字形式的 id,但我的要求是排除某些字符串之后的匹配,这个我就不知道怎么做了。

上网找了很多,最后还是 Google 帮我找到了想要的结果。

原文在这里:

http://www.cnblogs.com/deerchao/archive/2007/02/15/651411.html

deerchao的blog,文章详细叙述了作者的试验过程,很有意义,后面的评论也很有价值,最后的正则就是回复评论的人提供的,在这里我也顺便感谢一下!

简单说来,目标:当字符串中不包含 google 和 leakon 的时候,匹配字符串。

正则就是 \b((?!google|leakon)\w)+\b。

这里可能看得不是很清楚,我写了个 wiki,里面还有几个测试的例子,请大家看看:

http://wiki.leakon.com/RegularExpressionTips

Tags:

更新 Blog

今天顺利把blog更新到最新版本。本来早就想做了,一直没有找到足够的时间验证。

借助于我最近开发的一个web版的命令行工具(虚拟主机 SSH),把主机上的程序文件夹打成tar包,下载了回来。

又把数据库导出成sql文件存到本地。

在自己的机器上重新搭了一套blog环境,和线上版本完全一致。然后用新程序覆盖老程序,并执行upgrade程序,顺利升级。更换了现在这套模板,同时下载了最新的防止垃圾评论的plugin。仔细检查了一番,没有发现问题。

最近一直有一些做事方法上的心得,也好长时间没写blog了。

就说说这干活儿快与慢的问题吧,我是写代码的coder,工作上的项目安排,一般都有时间排期,定好了某天完成开发。但我总是会比预想的慢,总是不能按时完成任务。

这样的次数多了,我就觉得我自己很笨,为什么别人都能很快写完程序,我就不行呢?

每当看到有人晋升,老大们给写评价时,都有工作快速这么一条,而且一般工程师的评价标准中,如果能提前完成任务,都会有更高的评分。

我怎么就不行呢?

最近我接手的项目,出现的接二连三的bug,都是以前的开发人员遗留的,让我吃了不少苦。不过通过解决这些问题,我也看到了我开发速度慢的深层原因:我不是为了完成任务去coding,我是为了把一件事做好。

前一阵写了一篇wiki,是关于php的pack函数性能调研的,经过优化,调用pack的性能可以提高4倍以上!!!

但是,为了这个性能调研,我花了1天多的时间。

本来,如果不考虑性能,我直接写一行pack调用就完事儿了,用不了1分钟。

事后,没有人会知道,我的程序的运行时间从8小时变成了2小时,大家只知道,我比原计划晚了1天提交程序……

另一个故事:自动发邮件的php程序,部分中文字符会变成乱码。

调查问题原因的时候,有个同事告诉我在邮件正文的换行处把\n替换成\r\n就可以了。

我不理解为什么要这样做,我觉得这只是跳过问题的方法,问题本身并没有得到解决。

我又花了半天时间一步一步重现bug,最后看到,由于没有对邮件正文进行编码,邮件服务器每隔1000个字节,会自动添加一个换行符。如果遇到汉字,这个换行符加到了2个字节之间,后面的部分字符就会变成乱码。

知道了原因,马上修改邮件发送程序,改用base64编码,然后再测试,此bug彻底解决,再也不会出现!

同事给我提的办法,实际上是歪打正着,乱码就是因为汉字被强行截断的,而他的程序的环境,恰好是加了\r后就跳过了那个汉字,所以没有乱码。下次有其他项目要用邮件程序的时候,这位老兄调乱码可有的玩了,呵呵……

当然,我可不是那种幸灾乐祸的人,我查到原因后,立刻跟大家分享了经验。只是……,我的3个小时都花在这上面了……。接手我的程序的人,不会再遇到邮件乱码问题,接手那位老兄代码的人,日后估计会比较惨……

回到今天的引子,关于blog升级。

按照官方的说法,只要用新程序覆盖老程序,就可以完成升级。

都是写php的,我总感觉自己不在测试环境下试一把,真不敢直接拿线上blog开刀。

所以才拖了好长时间,今天才完成升级。(我分别在2个不同的环境下进行了升级,都没有问题)

看了看虚拟主机上程序文件的修改时间,还是2007年6月的呢,那会儿刚搭好这个blog,将近一年没升级过了……

新的blog,后台界面漂亮多了,至少是我喜欢的风格。

我拿新wp后台模板,帮朋友开发了一个客服程序,被对方的客服评价为非常难看!

无语了,他们居然认为那个纯table的连一点css修饰都没有的系统比wp的后台好看!

审美啊……这就是中国特色吧,要不外国的网站在中国混不起来呢,人家著名视觉设计师和用户体验设计师做的界面,在土惯了的中国人眼里它就是不好看,不好用……

Tags: , ,

friendfeed

friendfeed

今天是FriendFeed爆发日。经历了几个月的测试以后,这个由数名Google的前员工组成的团队开发的聚合服务获得了500万美元的融资,并开始开放注册。

FriendFeed是一个在朋友之间交流各自最新在线活动的一个平台。它可以把用户所使用的网络服务的更新内容同步并聚合在一起。你只要在FriendFeed上添加你感兴趣的好友,就可以随时看到他们所更新的活动。我们也可以对这些朋友的每一项更新进行评论和收藏。FriendFeed已经内置了20多种常见的服务方便用户进行添加内容。

乍一看起来FriendFeed和其它LifeStreaming的服务貌似没有多少区别,但是通过一些细节就可以看出FriendFeed可以作的事情更多。你可以对你朋友的所有活动进行评论和收藏,而你所作的这些评论和收藏的数据都将被FriendFeed记录和分析。

通过这些记录和分析,FriendFeed提供了一些非常有趣的功能。它的统计功能可以帮你找出哪些人对你的内容感兴趣,而你又对哪些人的内容感兴趣;也可以看出你以及你的朋友使用哪些服务更为频繁;FriendFeed的推荐功能可以给你推荐你可能感兴趣的人;你甚至可以用你感兴趣的内容来虚拟出一个你感兴趣的人物。

FriendFeed的高明之处在于:它的初始用户数据来自于用户已经熟悉、且已被广泛使用的发布平台,不用担心内容的匮乏;而用户间的互动又需要在网站内完成,为数据的分析提供了便利;而数据的分析可以帮助用户更好的拓展和改良自己的朋友圈子,获得更有价值的内容。

所以说FriendFeed是一个可以跟踪你朋友所发布在线内容的平台。而这些朋友,可能来自现实生活,可能是和你有相同的爱好,可能是你感兴趣的人,甚至是一个虚拟的人物!

(转自http://webleon.org/2008/02/friendfeed.html)

tinyMCE 编辑器支持 iframe

今天同事问我tinyMCE编辑器能不能插入iframe,我也不是很确定,后来分别Baidu和Google了一把,得到了答案: tinyMCE 编辑器支持 iframe。

做法:只要打开tiny_mce.js(这是删除了换行的版本,源码在tiny_mce_src.js) ,找到valid_elements,在定义的字符串后面加入iframe[src|width|height|name|align]就可以了。

然后刷新浏览器,注意要用Ctrl+F5刷新,否则浏览器会加载缓存过的js。

也可以在html调用 tiny_mce.js的后面加上一个版本号,如tiny_mce.js?ver=leakon。

说点题外的,Baidu的英文搜索,相关性还真是差得远远的。

我要查标题的结论是否正确时,分别在两个浏览器输入了tinyMCE iframe,大家自己看看,百度都是什么样的搜索结果,再看看google,第一条就是我想要的,而且还解决了我的问题。

我现在做Symfony开发,这个框架在国外很火,论坛也很多,可惜在国内很少有相关内容。用Baidu是没办法了,Google帮我解决了很多问题。

赞一个~~~

虚拟主机 SSH

问题由来:

我买了美国的虚拟主机,机器性能很好,空间巨大(150G) ,唯一的也是最大的问题,就是访问速度慢。

其实服务器本身至少能保证3M的带宽,我用其他服务器,单线程wget美国主机的文件,都可以稳定地保持在300K/s以上。

但用浏览器访问,由于需要发起多次tcp连接,而每次连接只传很小的几k文件就立即断掉,所以很慢。

最让我抓狂的就是,我上传一个软件包,总大小也就4、5M,但文件数量特别多,至少有几百甚至上千,传这么一个文件夹,没有2小时根本完不了。

我就想,如果虚拟主机有命令行,可以执行压缩或解压命令就好了。

传单个文件,再慢,也能保证每秒50K,像这样几M的文件,几分钟就可以搞定。

但如何解压呢?

答案就是:web版的命令行工具。

最简单的,就是system或exec函数,可以像SSH客户端一样,执行我们想要的命令。

注意,有些虚拟主机限制执行system和exec这两个函数,但我做了测试,证明是有其他方法的,一会儿再说这个方法是什么。

请您看到这个方法后,不要大肆宣传,或利用这个方法做一些危害主机安全的操作。如果这个方法也被禁用了,那以后就再也没有类似的方法了。

有了web的ssh,我们该怎么用呢?

1、首先要有清晰的unix文件的路径知识,知道什么是绝对路径,什么是相对路径,如何引用一个路径,等等。因为web版ssh只能方便地在当前一个目录下操作,稍有不慎,就可能造成无法挽回的后果。

2、学会使用ls、df、du、cp、mv、tar、zip等常用命令。使用web版ssh的出发点,就是希望以后在上传或下载文件时,可以预先打包,然后只传一个文件,这样可以大大减少传输时间的浪费。因此,列出目录、复制、移动、压缩和解压,就是必备的命令工具。

3、web版ssh还有一个功能,就是可以执行命令行的MySQL!!!最近我刚试着迁移discuz论坛,俗称论坛搬家,就是把论坛从A服务器迁移(搬家)到B服务器,重要的过程就是dump数据库,再import。而传统的工具,只有phpmyadmin,导出sql文件到还容易,但导入到另一个服务器,尤其是导入到另一个虚拟主机的时候,会受B主机的上传文件大小限制,大文件没法导入。还有,就是我遇到的乱码问题,由于B主机的大小限制只有2M,我的sql有5M,没办法,只能先压缩。import的时候,没有出错,但是导完发现都是乱码。A服务器是utf8,B是gbk。import的时候,本来import时选择了utf8编码的,但貌似对zip压缩的sql文件无效,最终是按gbk编码导入utf8的sql文件,这必然是乱码啊,结果就是论坛变成“蝌蚪文”。逼得我没办法了,只能开发一个web版ssh工具,最后用 mysql –default-character-set=utf8 -uleakon -pleakon leakon < leakon.sql 这个命令行才成功导入。这回,导入过程快多了,瞬间完成,不必再等着phpmyadmin上传本地sql文件。这一切,多亏了我的ssh工具,也就是本为的主角:web_shell。

按说这不叫ssh,只是一个web的命令行转发函数,但为了大家搜索虚拟主机ssh的时候能方便一些,就故意写了好多ssh。

大家可以看看国外的虚拟主机,大部分都支持ssh,而且……

唉,我都不想重复这些了,国外主机的优势,真不是国内idc服务商们可以比的。国内用最烂的服务、最烂的技术、最烂的界面来提供的虚拟主机,价格却是国外的好几倍甚至几十倍。价格我真不想再说了,反正最贵的都比国内最便宜的便宜好多好多,而且服务好得更多。

跑题了,回来说我的web_shell。

这是我简单开发的一个辅助工具,专门解决我上文提到的各种问题,加了一个简单安全验证,文件放在服务上,别人无法使用,只有你自己能用。

源码在我的GoogleCode里可以找到,地址是:

http://leakon.googlecode.com/svn/trunk/leakon/php/web_shell/web_zip.php

现在充其量是alpha 0.0.0.1版,里面还有一大堆debug的注释,本来还想加入一些新功能,但没那么多时间,先解决眼前的问题吧。

使用的时候,需要自己写一个web_inc.php,里面只要定义一个AUTH_KEY就可以了,这是你的密钥,只有知道密钥的人才可以使用这个web_shell。

默认的密钥,我是用一个字符串加当天日期的md5写的,如何快速计算一个字符串的md5呢?我早就写了一个工具,也许大家都没注意过,我就再发一次吧:

http://code.leakon.com/php/tools/

可以做一些简单的编码、解码计算,很好用哦。

源码也在googlecode里,大家自己找吧。

盼望得到您的指点或回复,谢谢!

另,php本身还有一个popen,也可以执行命令,一般的虚拟主机都没禁用,还是那句话,请慎用,要是用烂了,以后也就没得用了。