2010年11月28日星期日

Google是如何搜集互联网信息

  如果你问别人什么是力量。培根会说“知识就是力量”,Google会说“信息就是力量”,某人会说“隐私就是力量”。毋庸置疑,Google早已认识到信息(数据)的力量。相信其他公司,不管是互联网公司,还是其他类型公司,多多少少都应该意识到这一点了。否则,哪里会出现贩卖用户资料的案件?

  本文主要说Google如何搜集互联网信息、不计其数的趋势信息和Google用户(包括你我)的信息。

  那Google到底知道多少你的信息呢?还有你的在线习惯呢?请你坐下来,登录你的Google账号,看看你正在使用的Google服务列表,你就知道你正把多少信息交给了Google。

Google是如何搜集互联网信息

登录Google账号后的“我的产品”

(注:此图中产品因人而异,只要你在登录Google账号时使用过某服务,则自动会添加到此列表中。)

  这些服务已经引起了很多隐私问题。09年末时,Google CEO埃里克·施密特曾说过:“如果你有些东西不想让别人知道,或许你本该就别做那事。”(这话听起来颇似有点“切莫伸手,伸手必被抓”的韵味。)

  那我们现在就来看看Google是怎么搜集从你那收集你的信息。

  Google信息收集渠道

  Google的使命是:“整合全球信息,让人人可用,人人受益”。它也正在很好地兑现这个诺言。然而,Google正在收集的信息似乎比我们意识到的还要多。

  1. 搜索(网页、图片、新闻和博客等)- 众所周知,Google是全球最受欢迎的搜索引擎,其全球市场占有率几近70%(比如,美国本土占66%)。Google追踪所有的搜索,其现在的搜索方式也越加个性化,个性化势必将越来越细化。

  2. 搜索结果中的点击 - Google不仅能知道我们要找什么,它也知道我们点击了哪些搜索结果。(编者注:这个做SEO的朋友应该很清楚,可以从Google Analytics中知道。)

  3. 网页检索 - Google的网页爬虫Googlebot就是一只不知疲倦的小蜜蜂,一直不停地“品读”和收录数十亿的网页。

  4. 网站分析 - Google Analytics是目前最受欢迎的网站分析工具。因其免费并支持多种高级特性,全球大量网站正使用它。

  5. 广告服务 - Adwords和Adsense是Google财务成功的基石,但它们也给Google提供了大量的有价值的数据。网民点击了那些广告,广告主在竞争哪些关键字,哪些关键字最值钱等等。这些信息都是非常有用的。

  6. 电子邮件 - Gmail是全球三大电子邮件服务之一,面临着来自微软的Hotmail还有雅虎的Email的竞争。邮件内容,包括发送内容和接收内容,都是可以解析和分析的。即使是从安全角度来看,这也是Google的一项优秀服务。Google的邮件安全服务——Postini,要从海量Gmail用户中,接收超大量的数据,包括垃圾信息、恶意软件和邮件安全趋势数据。(编者注:2007年,Google以六亿二千五百万美元的价格收购网络安全服务商Postini,以此为Google的小型商务客户提供更好的电子邮件安全服务。)

  7. Twitter - “你说有的Twitter消息都是我们的”,这句话用来解释早期的网络快速传播现象(又称“网络爆红现象”)。在09年和Twitter达成交易后,Google可以直接访问Twitter上所有的消息。

  8. Google应用服务(文档、电子表单和日历等) - Google的办公套件有很多用户,它当然也是Google的一个数据收集来源。

  9. Google公开的个人资料 - Google鼓励你把你的个人资料在网络上公开,这些资料包括你活跃在哪些社交网站(Facebook或Linkedin),你的个人主页和在线图片等等。

  10. Orkut - 虽然Google的社交网络还并不是很成功,但Orkut在巴西和印度还是有很多成功。(编者注:为什么还没有成功?可参见伯乐在线此文:《Google的社交网络为什么还没有成功》。)

  11. Google Public DNS - Google2009年年末推出的DNS服务并不只是帮助网民获得更快的DNS解析,也同时帮助Google自己。因为从这项服务中,Google可以获得大量的统计数据,比如网民访问了哪些网站。

  12. Chrome浏览器 - Chrome可以收集你的浏览器行为,还有访问哪些网站。

  13. Google财经 - 除了财经数据之外,用户在Google财经上搜索的信息和使用的信息都是Google的重要数据。

  14. YouTube - 这个目前是全球最大最受欢迎的视频网站,为Google所有。它也向Google提供了大量的用户观看习惯方面的数据。

  15. Google翻译 - 帮助Google完善其自然语言解析和翻译。

  16. Google Books - 虽然现在不是很庞大,但有潜力帮助Google知道网民阅读习惯和他们想阅读什么东西。

  17. Google阅读器 - 目前为止是全球最受欢迎的Feed阅读器。你订阅了哪些RSS种子?你在看哪些博文?Google会知道的。

  18. Feedburner - 很多博客都使用Feedburner来公开其RSS种子。Google追踪Feedburner的每一条链接。

  19. Google地图和 Google Earth - 你对哪些地方感兴趣?(Google也会知道的)

  20. 你的联系人网络 - 你在Gtalk和Gmail等上的联系,组成了一张错综复杂的用户网。如果他们都使用Google,网络映射更为深刻。虽然我们不知道Google是否做了这个,但这上面的数据是可以收集的。

  21. 即将推出的 - Chrome OS等Google更多可能成功的产品。

  22. 刚推出不久的 - 即时搜索和Goo.gl等服务

  23. 已经消亡的 - Google Wave等(虽然消亡了,应该死前收集了一些数据吧。)

  因为Google的产品数不胜数,上面的列表还会扩大。到现在为止,你应该已经知道要点了。

Google是如何搜集互联网信息

Google服务列表

  (Google收集的)这些数据中,很多都是匿名化的,所以并非总是正确。日志可以保存9个月,服务相关的cookies可以保留18个月。即便如此,对大多数公司而言,Google手中所拥有的通用用户数据仍是有很大竞争优势,是一座名副其实的金山。

  Google - 一台无法停止的数据收集机器

  Google数据收集的方式有很多种。登录站点时生成的IP地址请求,用来设定和追踪目标的cookie。如果你登录了Google账户,你在Google下属网站上的一举一动,通常都可以和你个人账户联系起来,而不用和你的计算机对应起来。

  简而言之,如果你使用Google的服务,Google将知道你在搜索什么,你访问了什么网站,你看了哪些新闻和博客,等等。随着Google增加更多的服务,其曝光率将更加广泛,几乎一切东西都将所谓的“Google化”。

  编者注:Googlization即“Google化”,2003年由ohn Batelle和Alex Salkever共同创造这个字。

  你使用任何单一的Google服务所贡献的数据,你无需对此过多恼火。当你使用多个Google服务是,真正有趣的窘境才出现了。这个年头,谁不是呢?

  可以试着一个星期上网不用Google的任何一个服务。这也就是说,没有YouTube、没有Gmail、没有Google文档、不点击Feedburner的链接、不用Google搜索引擎等等。严格来说,你甚至必须避开和Google有合作的服务,所以,非常抱歉,Twitter也不能用、(编者注:不管你用不用梯子,YouTube和Twitter都别用)

  这个不断增长中的Google化可能就是为什么有些人不想用Google Chrome OS的缘故。因为Chrome OS可以强有力地整合Google的多种服务,并且很可能向Google提供关于你习惯的空前绝后数量级数据。

  Google为什么这么做呢?

  就像在本文一开始所提到,信息就是力量!

  拥有这些信息,Google可以用非常有效的方式来整合数据。除了每个用户或访客,Google也能为整个城市或国家检测趋势和行为。

  Google收集的信息用途广泛。在Google所有活跃的领域,那些收集的数据可以用来制定市场决策、研究、完善产品等。

  比如,如果你能提前发现特定的市场趋势,你就可以对市场做出有效反应。如果你能发现人们所寻和所需,你就可以基于这些发现做出决策。当然了,这对像Google这样的大公司是极为有用的。

  而且我们也别忘了,Google的大部分收入来自广告。Google越了解你,其广告能更加有效地服务你,这也对Google的底线有着直接影响。

  不只是(谷)哥这么做

  必须要说的是,并非只有Google一家公司在做这样的数据收集。请放心,微软也在用Bing和Hotmail做相似的事,这只是一个例子。

  Google的问题(如果你想称之为“问题”)是,它像一只大章鱼,其触须正伸向各个角落。Google已变成如此混杂,囊括我们在线生活的方方面面,我们(网上的操作)动作、行为和关系等数量空前的信息都汇聚到Google手中。

Google是如何搜集互联网信息

Google是章鱼?

  造访Google数据库

  值得称道的是,Google正通过各种服务来利用其收集的数据,进一步为你提供服务。

  1、Google趋势

  2、Google网站趋势

  3、Google搜索解析

  4、Google广告计划

  5、其他诸如Wonder Wheel这样的搜索工具

  如果Google能公布如此之多的数据,可以想象一下数据量有多大,还有Google所知道的细节程度有多深。而且这些服务也能向Google提供更多的数据,比如我们对哪些趋势感兴趣,我们在找哪些网站等。

  在使用Google趋势等这些工具的时候,发现一个有趣的现象:我们几乎可以知道一切,但就是无法知道Google自身的产品。比如,“Goolge广告计划”和“Google网站趋势”并不显示Google自身站点的信息,但你可以找到其他站点的信息。

  这个比较有讽刺意味!昨天“Goolge广告计划”更新2010年9月份的“全球Top1000网站”数据,你可以看到Facebook等网站的每月独立访客数量和PV数量,但你看不到Google旗下网站的数据。

  没有免费的午餐

  不知你有没有想过,为什么几乎Google所有服务都是免费的?好了,你现在知道答案了吧。还是那就老话:天下没有免费的午餐。你或许是没有给Google掏钱(点击Google广告除外),但你已经付出信息了。虽然这并不一定是坏事,但你应该对此有所了解并加以注意。

  来源:伯乐在线投稿,原文链接

2010年11月27日星期六

视频网站上市去裸奔

  国内视频网站的上市议题已经讨论很多年了,身处第一阵营的优酷与土豆终于在最近双双提交了上市申请,并且不约而同选择了大洋彼岸的美国作为融资选择。当年群雄割据的在线视频领域,鏖战数年后仅剩下优酷与土豆两家算成气候,酷六选择被盛大旗下华友世纪收购实现借壳上市,名为领先上市实为被迫妥协认怂,而六间房、56则早已经退出了第一阵营的争夺,安安静静赚自己的小钱。

  这绝对是一场战况惨烈的争夺,历时五六年,涉及资金数十亿,优酷、土豆终于熬到了上市的一刻。似乎他们已经到了论成败的时候,但事实上上市只是他们遥远征程的一小步,上市过后并不能彻底解决他们面临的所有问题。

  视频网站上市的一定少不了那些前期投资者的推动,在视频网站火拼的过程中他们投入了数亿的资金,而上市是他们获得回报和退出的最好方式,稍后一定有如火如荼的造势行动帮助推高股价。此外,管理层与拥有期权的员工将能够回报,这算是对于他们数年辛苦工作的回报,也将一定程度上提高员工积极性,期权作为一种激励工具将能更好发挥作用。

开源史上的8大交易

  但是上市对于视频网站也许并不是一个好主意,至少现在不是,因为很少有公司能够在大幅亏损的情况下面对股市的挑战。优酷招股书显示优酷亏损达1.67亿元,据消息土豆前三季度亏损8373万元,结合之前多次融资的只进不出,如果我是投资人很难对于这样公司的业绩表现抱有太大期待,当然不排除在几年后找到适合自己的模式,但是也可能在几年后灰溜溜关门。

  上市公司的透明度有比较严格的要求,包括定期披露财务状况和业务状况,没上市的时候赚钱不赚钱都可以靠嘴巴吹,你说五千万就五千万,上市之后这一切数据都是需要财报来支持的。隔着玻璃没人知道你在裸奔,但是一旦撤了那块玻璃大家就都知道你在裸奔了,大家不仅知道你亏钱,连你亏多少钱都清清楚楚。

  资本是无情的,股市是残酷的,如果公司没有良好的业绩支撑,投资者一定会毫不犹豫地用脚投票,股价就会像过山车一样大起大落。换言之视频网站在股市融到第一笔钱之后,很可能会陷入无以为继的困境。这样的困境很大程度是来自于巨大的版权、带宽黑洞,这两座大山拖垮了无数视频网站,但是即便他们用融来的钱进行大幅版权、带宽投入,但是没有人能够保证这些投资能够很快体现在收入的提升。

  个人对于优酷、土豆两家视频网站上市是抱着积极的态度,希望他们不要忽视上市给公司带来的消极影响,积极探索新盈利模式。

  来源:XJP投稿,原文链接

编程给程序员带来哪些坏习惯

  似乎任何职业都会给从业人员带来这样那样的习惯。国外某网站上有位朋友(应该也是程序员)想了解其他程序员在投身堆码事业后有什么样的坏习惯。结果一呼百应,很多程序员纷纷自爆自己的坏习惯和糗人糗事。编程无国界,相信国内堆码界的朋友,也会有同感。

  1. 编程已给我带来很多坏习惯,编程也每天在继续给我新增更多的坏习惯。当然有些习惯和编程无关了。下面这些习惯尽管我也很想改掉,但已根深蒂固。

  a. 在天地万物中,去发现多态、继承和模式;

  b. 用十六进制代码中的像素和颜色来解释某东西的大小;

  c. 在日常交谈中用代码相关的抽象术语。

编程给程序员带来哪些坏习惯

  2. 我现在认为256这个数字非常完美。但非程序员不明白这个,有时候让我措手不及。

  编者评:1024呢?

  3. 我在看纸质书时,我就非常沮丧。为什么我不能用Ctrl + F来找想看的东西呢?

  编者评:我在看电视时,一到广告,我也非常沮丧。为什么我不能往后拖呢?

  4. Q: Do you want tea OR coffee?

  A: Yes

  侍者:你喝茶还是咖啡?

  客人:是

  编者评:如果该服务生是个兼职打工的程序员,那就直接给你上茶和咖啡。因为,不管“上茶”还是“上咖啡”,都是满足“茶||咖啡”条件的。如果能多卖一样,何乐而不为呢?

  5. 我Google一切。

  编者评:忘了Google的地址怎么办?

  6. 几年前,我去一家咖啡店吃午饭,柜台里边的MM问我吃哪种面包。我不假思索地说:“默认的。”

  囧,她或许现在还在笑我……

  编者评:如果该MM不懂编程,她应该不会发“酵”,只会发蒙。

  7. 每天坐在屏幕面前,盯上10个小时,这样真的很难保持健康。如果你经常走神,编程可以帮你养成久坐的生活方式。

  编者评:除吃饭、W.C.、开会和回家Sleep外,视线一般不离开屏幕

  8. 在现实世界中,我真的很需要Ctrl + Z。

  编者评:不仅你想要,我们也想要。除了不仅要这个,每次看到钱包的时候,都会想:“要说我能Ctrl+C和Ctlr+V多好啊!”。另外,某某说他的成功可以Ctrl + C,莫非他和我们同行?

  9. 我是从零开始数数的,经常用“1”表示结束,而别人用“1”表示开始。

  编者评:这个习惯的养成是一个艰难的过程。多少次的越界,多少次的循环次数错误让俺们深刻体会:万物始于0。

  10. 我喜欢“是/不是”类型的问题,我对那种既不是“是”,也不是“不是”的回答非常不爽。

  比如:我问:“你不介意我换个台吧?” 别人答:“我正在和我妹妹IM聊天。”对我来说,这就好比:public bool canFlip( ) { return "I'm IMing my sister"; }

  返回结果明显是个字符串,而不是布尔值。对别人来说,他们已明确告诉答案了;在我看来,他们的回答是“强制转换错误”。如果我再问那个问题,他们还有同样的回答话,那应该在catch语句块中抛出异常了。

  编者评:有编译错误

  11. 我教我们家小孩,三主色是:Red、Green和Blue。

  12. 侍者:嗨,我叫克里斯蒂,我是你的Server/侍者!(server除表示“侍者”之外,还指“服务器”。)

  我:嗨,我叫麦克,我是你的Client/客户端!

  (真实的故事)

  编者评:不知道这个Server/侍者可以承受多少Client/客户的并发请求?

  13. 我发现,有时候我明明说的非常精确,但某人(通常是我老婆)并不领会我的精确性,而是理解成类似的东西。这让我抓狂。比如,我在做菜的时候,我并没有说:“从冰箱里拿任何黄的东西,”我是说:“给我黄油。”但她递给我人造黄油。

  编者评:同学,这就是你的不对了!“人造黄油”是“黄油”的子类哦!(Update:从中文字面意思上。)

  14. 当我收到如下留言后:

  (去店里买个面包。如果他们有柴鸡蛋,买10个。)

  结果我买了10个面包回家。

  编者评:因为店里有柴鸡蛋。严格来说,这是个脑筋急转弯。

  15. 我想用正则表达式来搜寻现实对象。

  编者评:如果能做到,不知你在中文世界能搜到什么?

  16. 在平常打字中,句子都是分号结尾;

  编者评:幸亏没有编程语言是用问号结尾?否则谁能看懂你的文章?

  17. 我在家做任何家务事都非常有条理。比如,在使用任何产品之前,我会仔细阅读附带的说明书,即使是使用非常简单的烤面包机也不例外。如果我要挂相框,我会Google一下“如何挂相框”,确定我所知道的是正确的(或者在亚马逊上找本悬挂相框相关的书)。

  在每做任何一件事之前,我都会准备一切必备的工具。在实际操作之前(这些操作可不能撤销的),我会做大量的测量和试验。但这让我老婆彻底发狂。

  编者评:阅读手册绝对是好习惯;动手操作之前做准备工作,也不能算坏习惯。顶多算是类职业病。你老婆不该抓狂的。但你挂相框,还要去Google一下,这个有点让我抓狂。

  18. 把一段话称为“字符串”。这让非程序员们非常不解 - 嘛是“字符串”?

  编者评:我看到蜘蛛,便说它是爬虫。这让程序员不解 - 嘛是“爬虫”?

  19. 我发现我在写信的时候常常在侧边嵌套花括号,我老婆看到后以为我抽风了。收件人也应该差不多这样想。但这已经是习惯了。

  编者评:他们也习惯了

  20. 缺觉,我现在习惯了。

  编者评:大熊猫应该不再是濒危动物了!缺觉有害健康。另外,正在看本文的朋友,不管你是否是程序员,都应该检测一下自己的睡眠是否达标了。

  21. 我喜欢优化每天的事情,尽可能多采用并行处理。比如,在启动电脑后,跑到厨房打开水壶、准备咖啡,然后跑回来输入密码登录系统;在打开火狐时,去倒开水冲咖啡,然后端着咖啡回来浏览新闻;另外,坐在马桶上刷牙,每天也能节省几分钟。

  编者评:哥端的不是咖啡,是下巴!

  来源:伯乐在线投稿,原文链接

2010年11月26日星期五

明星软件工程师的十种特质

  如今,每家公司都似乎成了科技公司。从软件创业公司到投机性投资公司、制药巨头和媒体巨头,它们都越来越多地加入到软件业务行列。

  代码质量不仅成为了一个必需品,更成为了一个竞争优势。因为众多公司围绕软件而竞争,开发软件的人——软件工程师正显得越发重要。但是,你该如何发现那种百里挑一的程序员呢?在本文中,我们简明扼要地列出了明星开发人员的10种特质。

明星软件工程师的10种特质

  1. 热爱编程

  编程是一种为了满足兴趣而心甘情愿去做的劳动(Programming is a labor of love)。和其他任何职业一样,唯有真正的热情,才能完成真正的伟大事情。这里有个误解,认为编写代码是机械化并纯科学性的。事实上,最优秀的软件工程师是工匠,他们能把能量、独创性和创造力融入到每一行代码中。伟大的工程师知道何时该把代码雕琢至完美,知道何时把大型系统像拼图一样组装到一块。热爱编程的工程师从构建软件中获得满足,就好比一位作曲家在完成一部交响乐后而欣喜若狂。正是兴奋感和成就感,才造就了喜爱编程的明星工程师。

  2. 完成事情

  有很多技术人员只谈论软件而不编写代码(只说不做型)。而伟大软件工程师会真正去编码,这也是他们最为重要的品质之一。他们是实际做事的人。聪明人都知道,解决问题的最佳途径是直面问题,而不是花上数周来设计复杂又不必要的架构和函数库。优秀工程师应当会问:解决手头问题的最简单方法是什么?最近的软件开发方法——敏捷实践,正是专注那个。它的思想是,把复杂的项目拆分为短小的迭代,每个迭代只关注一小部分的增量功能。因为每个迭代对应的编码只需要数周,所以功能易于管理并简单。

  3. 持续重构代码

  编码很像雕刻。要像艺术家一样不断完善自己的作品,软件工程师也要通过可能的最佳方式来持续完善自己的代码,以达到目标。重新塑造代码的原则称为“重构”,Martin Fowler在他的创意书中有相应描述。重构背后的原始思想是:改善代码而不改变其功能,移动调整部分代码以确保系统不腐,还有确保系统完成基于当前需求该完成的事。持续重构可以让开发人员解决另一个著名的问题——“黑盒遗留代码”(这个问题基本无人想触及)。

  几十年的软件开发文化要求我们,不应该去改变正常工作的东西。然而,随着时间推移,问题是我们成为了老旧代码的奴隶,老旧代码变得不稳定和不兼容。而重构正好可以改变这一状况,因为我们是代码的主人,不是它的奴隶。重构在工程师和代码之间建立起持续的“对话”,并带来所有权、确定性、自信心和系统的稳定性。

  千万不要成为老旧代码的奴隶。如果代码是他人所写,或许你可以轻易推脱责任。但大多数时候,那些代码是自己所写,要拿得起放得下,旧代码该埋时,就把它埋了!

  4. 使用设计模式

  自从所谓的“四人帮”(Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides)发表他们的著作——《设计模式》后,全世界的软件工程师一直都在讨论模式。在我们所处世界,不管是自然界还是人类行为,模式无处不在。软件工程自然也不例外。模式就是不断重现的跨语言跨系统的场景和机制。一位优秀的工程师通常能识别并利用模式,而不是受制于模式。工程师不应(强制)让系统去适应某种模式,而需发现在系统中使用模式的时机(恰当使用模式)。在使用模式来确保正确性时,应借鉴利用前人的智慧结晶,使用以前能正当解决特定工程问题的方法。但请切记:模式不是万灵药;不要为了使用设计模式而使用设计模式。

  5. 编写测试

  曾有段时间,软件工程师们认为测试不值得他们去做。然而,如果你不做测试,你怎么能确保代码就能正常工作呢?敏捷实践中的“单元测试”已获得普遍认可,因为它注重编写测试来反映代码是否有效。随着系统增大,测试也随之增大。有经验的工程师知道并了解测试的价值所在,因为测试的目的就是创建一个能正常运作的系统。优秀的工程师通常会确保出现过一次的Bug不会再出现第二次。但优秀的工程师也知道,不应该浪费时间写那些琐碎或多余的测试,而需要专注测试各个组件中的核心部分。

  6. 善用现有代码

  “重新发明轮子”一直是软件行业中的巨大问题之一。从发明新语言到从写函数库,忽视并重写那些已经存在并已能工作的奇怪驱动力,已经造成大量软件开发的失败案例。一位明星工程师会专注三种基本类型的重用:第一,内部基础架构的重用,相应代码是他自己或同事编写的;第二,使用第三方的函数库,比如JDK.最后,研究使用某些大型网络服务商提供的相应服务,比如Amazon.总之,正确善用现有的代码,使得软件工程师能真正专注于最为重要的事情上——应用程序本身。

  7. 专注可用性

  优秀的工程师通常都专注于用户。无论用户是企业还是个人,无论是为消费型的软件公司还是投资银行,需要关注的都是可用性。用户如何和系统交互?系统是否提供一种简单、直接和平稳的操作体验?有种说法,因为软件工程师是技术人员,他/她和“用户如何与系统交互”没有关联,这种说法严重错误。优秀工程师努力工作是为了什么?不正是让系统简单并易于使用。他们无时无刻都会想到用户,不会尝试去发明那些令人费解,只有极客才能理解并欣赏的东西。

  有些时候,一些软件工程师过于投入,反而忘记所编写的程序/软件,是供他人使用,不是做给自己看的“艺术品”。所以,在软件开发过程中,一直要把“用户”放在心中。

  8. 编写可维护的代码

  软件开发界的另外一个小秘密是:编写优秀代码和糟糕代码所花费的时间是一样多。一位训练有素的工程师,他/她会从第一行代码开始就考虑可维护性和代码的演化。没有任何理由编写“丑陋”的代码、长达数页的函数,或是稀奇古怪的变量名。优秀的工程师编写代码会遵循命名惯例,代码编写紧凑、简单和不过度炫耀聪明。代码的每一行,都应恰如其分地展现出其原有目的。在给不便理解的代码(块)合理注释时,别忘了命名规则。清晰明了的函数名和变量名可以让代码不言而明。

  在编码时,有些程序员会有这种心态:过一会儿再来修改或完善某部分代码或某条语句。但谁知这一“过一会”竟然是“一天”、“一周”、“一个月”或“一年”,甚至以后根本就没机会再回头修改。所以,尽量别妥协写出暂时堪用的代码。否则,不仅不会节省开发时间,也可以阻碍整个进程。当然也不利于后续维护人员的工作。

  9. 能用任何语言编程

  优秀的软件工程师活血有自己一门特别钟爱的编程语言,但从不会执迷于当中。如今已有很多优秀的编程语言,也就是说,如果你只会使用其中一门语言,说明你缺乏多样性。你可以用Java、C#或C++编写任何现代软件,可以用PHP、Perl或Ruby编写任何网站的后台。简而言之,编程所用语言,远远没有语言相应的函数库重要。优秀的工程师能够认知到这一点,并愿意去学习新语言、新函数库和构建系统的新方法。

  10. 知晓基本的计算机科学知识

  最后,但肯定不是优秀工程师最不重要的特质就是:扎实的基础。优秀的工程师或许并没有计算机科学的学位,但他/她必须知道基础——数据结构和算法。如果不知道哈希表,或者不知道链表和数组之间的差别,你如何构建一款大型的软件?。这些都是每位从事软件开发的开发人员应当知道的。算法也同样重要,从二分查找到各种排序,到图形遍历,一位明星工程师必须知道并内在消化这些基础东西。因为这些基础就是你在构建任何现代软件中做抉择时的必备品。

  结束语

  以上就是区分伟大软件工程师的诸多特质。其中讨论的“热情”,是非常重要的。代码重用、设计模式、基础数据结构和算法都是必须知道的,而敏捷实践中的重构和单元测试则有助于工程师应对复杂的软件。尤为重要的是,明星工程师相信简洁和常识。也正是这些信念,帮助他们成功构建当今世界所需的看似不可能又错综复杂的系统。

  来源:伯乐在线投稿,原文链接

新浪微博微群功能上线

  以前曾经给新浪微博提了一个建议,就是实现类似Facebook的群组功能,一个群组可以是一个封闭的小圈子,用户可以在里面发言,外部无法看到,就和QQ群一样,加入群组需要审核,管理员可以删除用户,这样就可以实现团队微博或企业微博的部分功能了。

  其实,新浪微博以前曾经开发了一个“新浪乐居”,是一个以房产为主的微群,但运营并不太成功,而在今天,感恩节之夜,新版的新浪微群功能出来了,我访问进去看了一下,竟然发现新版微群已经实现了我当初提的几点建议,微群管理员可以将其设置为“私密群组”,使其发言只能被群友看到,外部看不到。

  微群将对QQ群和豆瓣小组等网站产生一定的竞争关系,目前新版的微群功能还是较为简单,和微博类似,如果微群的竞争目标是腾讯QQ群的话,那应该还需要支持上传文档、通用格式的文件等功能,最好再支持日历、投票和问答的功能,管理员或用户可以给发布的信息增加Tags(主题),管理员可以将信息增加为精华等Tags类型,那样的话,微群就将成为QQ群的一个有力竞争对手。

  目前一个用户可以创建3个微群,满足以下条件才能创建微群:1.上传头像,2.粉丝达到10人,3.微博超过10条,4.已创建微群不超过3个。

  新浪微群比腾讯QQ群的好处在于:1、免费。2、成员数更多。3、所有发言都会保留待日后查看。4、发布信息可带标签。5、可针对信息评论。不足之处:1、发布信息方便性不如QQ。2、发布信息140个字,无法发布长信息。3、贴图不方便。4、不支持上传任意格式的文件。5、没有群相册和群共享。6、目前还不支持手机访问。

  微群(QQ群)如果设置为“开放群”,在运营上其实风险挺大的,像QQ群那种私密群还经常面临审查,“开放群”就更危险了,一旦出现所谓的“有害信息”,就会遇到监管的麻烦,因此设置为“私密群”对于运营来说更为“安全”一些,外部只能猜测群里可能有有害信息,但却没有证据。

  新版微群的地址是 http://q.t.sina.com.cn ,目前的新版微群仍在内侧阶段,需要通过邀请码才能访问。下面是Mr_Janco网友发布的新浪微群的试用体验。

新浪微博微群功能上线

  新浪微博微群功能上线将兴起微博小组化讨论(作者Mr_Janco

  11月25日,内测已久的新浪微博微群功能上线,微群的前身是新浪微博“乐居微群”,乐居微群因界面不友好,以及没有隐私设置等功能,一直得不到认同,新浪也没有将其集成到微博中去。而这次上线的微群功能则比较成熟,下面来看看新浪微博。微群的几个新特性。

  微群首页

  新浪微博。微群,登录后,首页列出了最近更新的微群以及两条最新微群消息、今日微群微博、新成员数,而点击“按时间查看”,可以看到所加入微群中所有最新的微博,用户可以更直观地了解自己所在微群最近的情况。

  微群内部界面

  与乐居微群有所不同,微群的群内发布微博按钮左边多加了“同时发送到我的微博”选项,默认情况下是不勾选的。另外,就算选择了“同时发送到我的微博”,发布后的微博结尾也不会像以前乐居微群那样留有微群名+微群地址的尾巴。

  微群管理隐私保护

  值得一提的是,微群管理中的隐私保护,多了一个非常实用的功能,就是选择微群类型。当选择“私密群组”,配合“需管理员批准后才可加入”选项,微群所发布的信息将不会被外界所看到,也就是先了小组私密谈话,开秘密会议等活动形式。

  相信在不久之后,新浪微博会将微群的链接放到微博顶部,并且完成新浪微博官方客户端和开放平台API的跟进工作。手机客户端普及微群功能的话,无疑是对传统IM的一大打击,基本上IM能够实现的功能,微博都实现了。新浪微博能否打败腾讯QQ,大家拭目以待。

2010年11月25日星期四

黑莓封杀Kik Messenger

  最近异常火爆的跨平台社交短信软件Kik在其官方博客上,Kik被黑莓RIM封杀,黑莓用户已经无法下载Kik客户端。

  Kik Messenger是一个社交短信服务,目前在Android、iPhone和黑莓平台都非常的火爆,他可以实现跨平台之间的信息交流。Kik Messenger在表现形式上很类似手机的短信,但其是利用网络而不是运营商发送短信的软件,其速度非常快,并且完全免费,界面也非常简洁和易用。

  Kik Messenger支持三个手机平台(Android、iPhone和黑莓),其用户增长模式是爆炸性的:10月19日发布到3个智能手机平台,两个星期后用户就超过1万,而到了现在1个多月后,Kik已经拥有超过250万用户,其中有近100万黑莓用户,并且Kik的用户量还在不断增长。

黑莓封杀Kik Messenger

  因为RIM有着自己独特的黑莓手机内置集成IM软件BlackBerry Messenger(俗称BBM),其功能和Kik几乎一样,但不能跨平台运行,只能在黑莓手机用户里使用,而Kik的跨平台特点让黑莓用户也可以和其他平台用户进行通讯,从而对黑莓的固有用户群产生了威胁。

  因此,RIM做出了一个艰难的决定,将Kik Messenger从黑莓的应用商店中下架,对于已经安装Kik的黑莓用户,则关闭了PUSH功能,使得Kik的消息传递会延时长达一个小时,RIM还禁止Kik访问黑莓软件开发工具包和签名钥匙。RIM官方对Kik Messenger下架给出的说法是“考虑到用户隐私问题”。

  目前Kik Messenger的iPhone和Android用户不受影响。

  Kik做为一个创业型的小公司,RIM公司的这个决定对其产生了巨大的打击,因此Kik在官方博客里呼吁,RIM应采取开放的心态,倡导黑莓形成一个良性的开放平台生态系统,否则将会严重打击第三方开发者的积极性。

  iPhone和Android用户下载Kik的地址是:http://www.kik.com/download.php

2010年11月23日星期二

新浪首届微博开发者大会资料

  新浪主办的中国首届微博开发者大会在11月16日在北京举行,此次大会剖析了整个产业的发展趋势和机遇,解读了微博平台的开放理念,作为微博行业的首场技术盛宴,本次大会吸引了行业专家、草根网民尤其是各类第三方开发者的普遍关注。

  新浪在本次开发者大会上公布的最新数据显示,截至2010年10月底,新浪微博用户数已达5000万,新浪微博用户平均每天发布超过2500万条微博内容,每秒钟产生微博785条,每天微博带来3000万的流量。

新浪首届微博开发者大会资料

  以下是大会嘉宾演讲视频资料

  曹国伟:从门户向平台转变 - 希望微博能够成为中国社会发展的引擎,改变网络生活。

  李开复:互联网发展四大趋势 - 微博其实是满足了每一个人非常原始的一种欲望。

  彭少彬:中国式微博的奇迹 - 所有的奇迹都源于新浪微博,它成为了新媒体时代的缔造者

  蔡文胜:微博开放而公正 - 新浪微博有两个重要点,一是公正,二是开放。

  沈南鹏:微博是重要营销手段 - 推动把微博作为一个很重要的营销的手段和工具。

  无线互联专场

  王煜全演讲:无线开放平台的发展与未来

  许士彦演讲:从Weicon看如何设计优秀的第三方应用

  郑书仁演讲:微博在智能手机中的爆发点

  陈石演讲:打造手机上网的开放式体验

  开发者与技术专场

  汪华演讲:互联网创业者的机会

  王明功演讲:微博平台产品和应用

  杨卫华演讲:微博平台架构和安全

  陈理捷演讲:在SAE上开发高性能的微博应用

  演讲PPT收集

  PPT是根据现场照片整理制作的,下载地址