2010年11月30日星期二

Symbian开源网站关闭

  Symbian基金会昨天正式宣布:基金会官方网站Symbian.org将于12月17日关闭,而Symbian智能手机操作系统将会重新回归闭源。在2008年NOKIA以超过4亿美元的代价收购Symbian 52%的剩余股权,并且宣布Symbian将会全面转向开源仅仅两年后,基金会网站的解散也正式宣告诺基亚希望借力开源的愿望正式落空。

  Symbian当初为什么要开源?因为苹果公司推出的iPhone手机以及配备的iOS操作系统,以便捷的操作、华丽的硬件配置、丰富的应用迅速俘获大量用户的心,而这这些用户正是诺基亚中高端产品的主力消费人群。同时Google收购了Andy Rubin创立的Android智能手机操作系统,在2008年10月推出了第一款基于该系统的智能手机G1并广受好评。

  iOS与Android的疯狂崛起让诺基亚寝食难安,它总是很容易想起微软在互联网的一败涂地。诺基亚赖以生存的Symbian看起来更像是一辆老爷车,无论用户体验、应用数量和架构都丝毫不占优势,而iOS与Android则是那么地诱人和可口,诺基亚相信如果自己不变革很可能会饮恨而终。

Symbian的开源网站关闭

  开源就是诺基亚给Symbian的第一剂强心针,为了实现这个目标诺基亚付出了4亿美金从爱立信、松下、西门子、三星等Symbian大股东手里收购了剩余的52%股权,获得了对Symbian的全部控制权,同时成立Symbian基金会负责开源项目的推进。诺基亚希望借助开源魅力,增强对手机厂商、开发者的吸引力。如果Symbian开源早两年也许结局会好得多,但世界上总是很少有事情能后悔的。

  对爱立信、松下、西门子、三星等手机厂商而言,自从诺基亚通过收购将Symbian变成自己的私有财产后,他们就不能再放心地将自己的后背放心交给Symbian,用敌人的武器跟敌人打仗的结局通常不好,通常是便宜了别人毁了自己。而更重要的是Symbian对于消费者的吸引力正在大幅下降,他们没必要将自己捆绑到一艘注定会沉没的船上。而相较之下Android是更好的选择,系统架构更好,Google的好口碑能吸引大量开发者的加入,更重要的是Google作为一个纯互联网公司以硬件盈利的可能性并不大,免费而又安全,至少表面上看来是这样。最早投靠Android阵营的HTC与摩托罗拉赚了个盆满钵满,它们更没有理由不向Android敞开怀抱。正如我们所看到的那样,索尼爱立信和三星先后放弃推出基于Symbian操作系统的智能手机产品,这是先和老主子划清界限,然后热情投入新主子的怀抱。

  这时Symbian的开源就异常尴尬,内无粮草,外无援兵,强撑着这么一个根本没有人关心的开源基金会只能让人笑话。诺基亚在这种情况下作出关闭基金会让Symbian重回闭源的选择就理所当然了,与其空顶着一个开源的帽子,倒不如诺基亚自己重新把Symbian回炉更合适。

  来源:XJP投稿,原文链接

再谈软件保护中软加密和硬加密的安全强度

  在软件保护技术中一般存在两种主要的保护方式:不需要额外的硬件设备,完全由软件实现的方式和使用硬件加密锁的方式。往往前者被称作“软加密”方式;而后者被称作“硬加密”方式。普遍认为,硬加密方式的安全强度要大于软加密方式。

  但真的是这样吗?

  一 软件解密方法

  如同软件加密的方式千差万别,软件解密的办法也多种多样。但从根本上,无外乎三种主要手段:

  1. 逆向工程

  采用软件代码分析和跟踪的方法,找到软件中调用加密验证或判断验证结果的代码,并进行修改或替换,以绕过保护。

  2. 通讯欺骗

  在软件代码调用验证机制的通道上对通讯指令截取和分析,并通过修改或回放的方法欺骗软件,使之产生错误的判断。

  3. 指纹复制

  对软件进行加密认定的硬件信息或硬件本身进行复制。

  其中逆向工程的破解方法与底层采用何种加密机制的关系不大,破解难度主要由软件代码的复杂程度以及核心安全库的防护机制决定。下面主要分析通讯欺骗和指纹复制的破解方法对软加密和硬加密的难易程度。

  通讯欺骗

  通讯欺骗往往通过监视、修改及复制系统功能调用的结果来实现。它需要破解者有能力在不影响软件正常运行的情况下截获及修改与软件保护相关的系统调用。要能正常实现通讯欺骗,必须要满足以下几个条件:

  1. 有能力找到所有与软件保护相关的系统调用。

  这对硬加密非常容易——所有对加密锁硬件的IO操作;但对软加密则不太容易,任何系统调用,包括文件、注册表、系统信息、时间的调用都可能与软件保护操作相关。

  2. 能够分析了解系统调用的输入、输出参数所代表的意义,能够伪造返回结果。

  3. 能够在不影响系统及应用程序正常工作的条件下修改返回结果。

  设计精良的硬加密产品可以在软件代码和硬件加密锁之间构建所谓的“安全通道”,使得破解者虽然能够截获通讯命令,却无法分析得到其中的原始数据,也无法伪造通讯命令,从而基本无法进行通讯欺骗。

  对于软加密来说,破解者总是可以得到系统调用命令的原始数据,但要想在不影响系统以及应用程序功能的情况下修改系统调用结果则并不容易。一方面,破解者必须能够了解哪些系统调用与软件保护机制有关;另一方面,系统调用的结果并不总是容易截获——很多获取硬件指纹的命令基于系统中断调用;最后,修改系统调用结果在很多情况下将会影响系统和软件的运行,使得破解过程无法正常进行。

  从理论上来说,除非破解者能够营造一个有能力任意监视并改写所有系统调用结果的独立环境,否则将无法完全实现通讯欺骗,而这样做的工作要比逆向工程还要复杂,从而导致对软加密采用通讯欺骗的破解方法失去意义。

  从本质上来说,软加密基于系统功能调用,而硬加密基于对硬件本身功能的调用。因此软加密实现与系统本身的结合程度要比硬加密高得多。

  指纹复制

  软加密的安全指纹由所运行的软、硬件环境获取;而硬加密的指纹就是加密锁本身。与普遍的认知相反,对计算机运行环境指纹的复制要比想象中困难得多,而对加密锁硬件的复制则要比想象中的更容易也更危险。

  为什么计算机运行环境不容易复制:

  1. 有一些计算机硬件设备包含了唯一的ID,比如说CPU或者某些型号的硬盘,这些唯一ID是不可复制的。

  2. 包括硬盘分区序列号或网卡MID等都具有很好的唯一性。

  3. IP地址具有很好的唯一性,而伪造会导致系统网络通讯异常。

  4. 在局域网内部,机器名、用户名及内网IP地址都是很好的唯一特征。

  5. 根据操作系统及硬盘文件可以产生非常好的唯一特征。

  6. 最重要的是,要复制所有上述这些硬件和软件特征,其投入的成本不低。因此不具备大规模复制的可行性。

  关于硬件加密锁的复制:

  1. 主要的加密锁芯片都可以通过硬件剖片的方法读出内容,从而进行复制,包括智能卡芯片。这个过程的成本比通常想象的要低,因为破解者往往会租用专业设备而不需要自己购买。

  2. 破解者总是可以买到厂家的加密锁,并进行分析和改造。

  3. 破解者可能会通过加密锁的代理或开发商内部相关人员得到加密锁内部的算法相关数据,从而在无需硬件分析的情况下复制加密锁。

  4. 需要注意的是,加密锁复制的前期成本较高,但一旦形成复制能力,后期的平均复制成本则很低。

  结论

  精心设计的软加密实现方案可以在通讯欺骗和指纹复制的破解环节上提供足够高的安全性,使破解者转向通过逆向工程的方法破解软件。在这种情况下,软件的防分析及跟踪能力以及代码内部的加密技巧成为了安全系统的核心,底层基于硬加密还是软加密将不再影响系统的实际安全性。

  二 软加密的新技术及四大优势

  通过利用网络通讯和服务器认证,软加密方式在实际应用中可以获得比上述分析好得多的安全应用效果。

  所谓服务器认证,是指软件安全系统首次运行的时候在服务器端“备案”,存储客户端硬件特征,并获取开发商授权的过程。除了首次运行的激活过程外,服务器认证还可以在今后再次进行,以核查及升级授权内容。

  由北京比特安索公司开发的比特平台除了支持服务器认证技术,还提供了将授权运行于服务器系统之上的“云授权”保护方案。云授权采用客户端与服务器实时连接的验证方案,安全系统指纹始终依附在服务器上,因此具有更高的安全性。它与传统的软加密具有明显的区别,因此不在这里进行分析。

  集成了服务器认证的软加密方案具有硬加密不具备的四大优势。

  双因素验证

  无论是传统的硬加密还是软加密,安全验证都是单因素的,即基于加密锁或本机硬件指纹。集成了服务器认证之后,加密方案本身是双因素的:既与本机硬件指纹相关,又与服务器相关。

  双因素验证大大加强了系统整体的安全性,破解者无法通过破解其中的一个因素实现完整的盗版。它使新一代的软加密技术的安全性实质上超过传统硬加密成为现实。

  破解追踪

  世上没有绝对可靠的保护技术,而运行于客户环境的软件代码总是可以被跟踪和分析。与硬加密不同的是,实现双因素验证的软加密方案中很容易实现对破解应用的追踪。

  除非通过逆向工程的办法把所有与服务器通讯相关的代码完全替换——这个工作比软件破解本身的难度还要大——否则服务器将有可能对软件的破解拷贝进行追踪。以比特平台为例,通过设置授权模版的“强制认证”或“智能连接”属性,客户端软件将定期或不定期地尝试与服务器进行连接验证,服务器因此可以发现是否有授权盗用的情况,并且可以根据相应的授权码找到盗用源头,解后进行封锁。

  也就是说,新一代的软加密技术本身通过服务器验证的机制,不再是单纯的本地安全技术。它是包含了本地安全与网络安全的综合性系统架构。

  补救措施

  软加密的一个明显优势是可以方便地推出对破解版本的补救措施。

  当基于硬加密的应用程序被破解后,一般来说,为保证升级后的应用程序与旧版本程序使用的加密锁不兼容,软件开发商在应用升级的时候必须同时升级应用程序代码并提供新的加密锁。这样的升级措施需要很大的成本,开发商实际上往往无法实施。

  而软加密的补救措施是零成本的。

  同样以比特平台为例,当开发商发现现有版本被破解后,可以在平台上为现有产品添加新的特征项(即功能模块),或升级已有的功能算法;开发商相应地升级应用程序代码,制作升级补丁,并发送给合法用户。

  合法用户拿到升级补丁并升级应用程序后,应用软件可以自动连接到授权服务器进行算法更新并升级本地授权文件,从而完成升级。而盗版用户因为无法通过服务器验证而不能应用升级内容。破解者也必须再次实施破解才能使用新的功能。

  破解风险

  前面提到了,软加密与系统和使用环境的结合程度要比硬加密高得多。对于硬加密的破解版本使用者,除了软件本身可能会因破解不充分而存在问题外,使用者不存在任何其它使用风险,盗版使用的成本很低。

  对于软加密,盗版使用者往往需要为使用软件而更改系统设置,如网卡MIC地址或系统时间,而这些都会对整个系统及其它应用程序造成影响,从而提高盗版使用难度,增加使用成本。这些系统设置和负面影响使得盗版使用不可能大规模推广。

  三 效果为王

  使用软件保护技术或产品的目标是以最小的成本达成最佳的防盗版效果,其本身是一个系统性的工作,软件的整体安全性受系统中最薄弱部分的制约,并与实施难度、应用风险、危害程度等密切相关。

  新一代软加密技术以服务器验证为基础,其整体安全性已超出包括传统硬加密在内的单纯的本地安全技术,并显著降低了盗版使用的扩散范围,具有更好的实际安全效果。

  此外,软加密特有的无物流、易管理以及授权方案灵活等众多特点,使得它成为互联网时代的最佳软件保护方案。

2010年11月28日星期日

百度文库送用户进监狱

  上网看到有介绍制作10多种炸弹、汽油弹等爆炸物的文章,北京小伙冯某觉得好玩,就将这些内容转发到百度文库,百度文库通过了审核,使得文章被阅读2000次,冯某因涉嫌传授犯罪方法罪被公诉,朝阳法院判其拘役6个月。(2010年11月28日《新京报》)

  看了这则新闻,我第一次知道了“传授犯罪方法罪”,一篇文章才被浏览2000次,这小伙这么着就进去六个月实在冤,看来这孩子他爸不是李刚啊。而这个新闻最令我惊讶的地方是,百度不仅陷害自己的用户,还不用负任何责任。

  姑且就算这小伙发的内容是“有害信息”,百度文库就真的没有一点责任吗?百度文档里的内容全部由用户上传到百度服务器上,内容通过百度的人工审核之后才对外发布,违法的有害信息根本不应该审核通过,百度审核通过了就是失职,难道百度对于此事上就没有一点责任吗?

百度送用户入监狱

  百度文库侵犯版权

  百度文库将自己的用户送入监狱,可谓继雅虎邮箱之后开辟的又一先例,而之前,百度文库就因为版权问题而陷入诉讼之中,早先,盛大文学就联合众多网站、出版机构以及作家和业界人士对百度发起连锁诉讼,理由是百度文库中的内容涉嫌盗版侵权。

  盛大文学CEO侯小强连续在微博上发言,呼吁出版机构、作家等多方力量联合起来,发起对百度的联合诉讼,反对网络盗版侵权。

  侯小强在新浪微博控诉称“百度文库不死,中国原创文学必亡。文学正版一役即在此处。若狙击无效,明日之文学就是今日之MP3”。

百度侵权

  根据百度文库的说明,文库定位为“供网友在线分享文档的开放平台”,即“用户可以在线阅读和下载多个领域的资料;平台所累积的文档,均来自热心用户上传;百度自身不编辑或修改用户上传的文档内容”。

  而实际上,绝大多数作者都不可能免费将自己的文学作品放上去给人下载,因此所谓的“网友自主上传”完全是百度做盗版的借口,对于用户上传的小说,百度只是审核小说内容是不是色情和违法信息,却从来就没有审核过该用户是否是小说的作者,属于明知故犯,严重失职,这种以盗版为目录的盈利手法应该受到重罚。

  百度回应文库盗版雷倒一片

  针对外界指控百度文库是中国原创文学最大的盗版基地,百度市场与公关部高级总监朱光却把问题抛给了媒体,认为大家不应该揪住这8%的内容不放。朱光说:“百度文库要是关了,中国网络文学的盗版问题就解决了?”

  百度对于版权的这种态度令所有媒体都感到震惊,实际上,中国的版权问题最严重的,恰恰是百度文库这种大网站,如果这种大网站不去盗版,中国的盗版问题就可以彻底解决。

  小网站敢去做盗版的内容吗?5、6年前可能还敢,但是现在,应该都没有这个胆量了。对于个人网站来说,一发现有害信息就拔网线,有些甚至直接把域名给Hold了,这谁受得了?相信个人网站都不愿意触碰版权这样的雷区。

  但百度就不同了,百度是大网站,即使有什么侵权信息,也不会有人去拔百度服务器的网线,百度甚至还可以振振有辞地要求指控者提供自己的版权所有者的“证据”,否则还不予删除,流氓做大了就成黑社会,没人能管了。

  针对百度回应“把百度文库关了,中国的盗版问题就解决了吗?”很多网友编了些段子对此进行讥讽,例如:许宗衡说:“把我抓了,中国的腐败问题就解决了吗?!”强盗说:“把我杀了,世上就太平了吗?!”

  百度文库的未来

  小说作家、出版社、原创文学网站是因为利益问题指控百度文库,此时百度尚可站在网友的立场说,百度文库能够帮很多人找到有用而且免费的资料,那么这次百度文库将自己的用户送入监狱,则让众多网友认清了百度文库的真面目,百度文库及其他盗版网站,他们的最终目标绝对不是为了方便网友,而是为了自身的盈利,只有彻底关闭这些盗版侵权网站,扶持正版原创作品,才能彻底扭转中国网络盗版满天飞的现状,而大多数网友的实际利益才能得到保障。

  名词解释:传授犯罪方法罪(刑法第295条),是指用语言、文字、动作、图象或者其他方法,故意向他人传授实施犯罪的具体经验和技能的行为。传授犯罪方法的,处五年以下有期徒刑、拘役或者管制;情节严重的,处五年以上有期徒刑;情节特别严重的,处无期徒刑或者死刑。

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. 知晓基本的计算机科学知识

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

  结束语

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

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