January 2010 Archives

编程语言的选择并非无关紧要

| 40 Comments

且说前一段时间听淘宝的黄裳讲解淘宝网站架构发展的时候,说起 2004 年底淘宝为何从 PHP 向 Java 转移的事情。为何转换,他阐述了几个理由,其中一个是非常有趣的:当时的 PHP 缺少一个 IDE。而合适的 IDE 能够有效提升规模化软件开发的效率。

我们知道 eBay 在 2002 年的时候也在 Sun 技术团队的帮助下,将整个应用架构从 C++ 迁移到 J2EE 。也就是 eBay 内部所说的 V3 版本(refer)。

最近一件有趣的事情是,据说腾讯的财付通在招聘 Java 方面的高手,"参与系统架构选型",要把底层架构从 C/C++ 迁移到 Java 架构上来。另外,百付宝的后台技术据说也是基于 C++ 的(最开始的时候只是一两个人写核心代码)。我相信,现在百付宝或许规模还比较小,总有一天,也要面临向 Java 的迁移。这和阿姆达尔定律有点类似,要得到更大的计算能力,就要尽量减少整个系统中的非并行的环节。只是一两个人能搞定的地方,再加入更多的开发人员也是无济于事的,除非,改变协作的模式。

去年接触到的一些国内的电子商务公司,有些已经在进行技术架构上的变迁,当然,多数是从 Windows 平台迁移到 LAMP 平台,究其原因,也无非是成本与效率,而后者,更为大家所看重。当然,也有一些顽固派,比如京东,仍然固守原来的手工作坊技术模式。

如果单兵作战的话,很多程序高手会说,"用什么语言都是无所谓的"。但是如果是团队协作开发的话,用什么语言,影响则是不一样的。对于电子商务网站来说,语言的选择意味着不同的架构路线、不同的开发框架、不同的测试框架、不同的部署流程,最后更为主要的是不同的开发效率,意味着可以把更多的开发资源并入到当前的环节中。

事实上,对于一个高速发展中的网站,每隔18 或 36 个月,几乎总要有一次架构上变革的阵痛。没有这种变革的勇气,意味着以后也不会有人敢做这个尝试。没有这种阵痛,就不会有成长。

变化的节奏最后影响一切。编程语言的选择并非无关紧要,短期看来似乎影响不大,从长期来看,决定最终的竞争结果。这就是我要说的。

--EOF--

大象跳舞

| 1 Comment

最近看了不少以前不愿意看的书,《谁说大象不能跳舞?》是其中之一。这是一本教科书,讲述的是如何挽救一家走向衰败的大公司。

所处的位置不同,不同的人阅读这本书会有不一样的体会。给我印象最深的是郭士纳初入 IBM 所采取的策略,"我们只有很少的时间用来找出问题,大部分时间、精力和关注点都将用于解决问题和采取行动上。"

问题本质

新的 CEO 上任之前从众多人的建议中就已经抓住了问题的本质(收到众多建议的时候如何过滤重点?):IBM 不缺乏能人和天才,公司也不缺致胜战略,新领导人要从"战略"和"文化"等方面推行改革入手。这个改革,体现在具体行动上,是后面的"热烈拥抱"计划,说白了,也就是"拥抱用户",倾听用户的声音,解决用户的问题,赢取客户信任。然后才是财务方面的止血,最后才涉及到远景规划。能从千万重关系中抓住这些关键点,这是核心能力的提现。

对待人才的策略,也就是如何对待现有管理层,郭士纳也是自有一套。在第一次会晤管理人员的时候就主动传递了这样的信号: "IBM 历来是个人才济济的地方...只有如果有必要的时候,才会从外部引入人才"。但是我相信,这样的策略恐怕只有针对 IBM 等少数公司才会有效。多数公司不能照搬--如果问题的本质抓不住的话。(实际上,郭士纳后来还是招聘了不少曾经和他合作过的管理人员进来。)

对于这只管理团队,也不是真的没有问题 ,当时的 IBM 比较严重的官僚气是存在更多关心公司内部部门之间利益争夺而不是关注竞争对手的情况。任何一家大公司都会有既得利益者,这一点大家都会有共鸣吧。

"大象跳舞"

这本书的书名有多重隐喻。其命名或许和 TIME 杂志的这篇 Can This Elephant Dance? 有关。"大象跳舞"是什么意思? 对于 IBM 这样的庞然大物来说,跳舞意味着优雅、协调,意味着摆脱笨拙。而一旦大象能够做到以这一点,那么竞争对手自然不足为惧,因为问题来自自身而不是外界。

"Elephant Dance" 应该是个证券行业常用语,大致是"大盘股活跃,反复上涨"之意,从这个角度上来说,郭士纳也做到了,IBM 股价在他的任内也是一路上涨。

--EOF--

乱翻书,不求速进,但求有所得。

从 7-Zip 的预设格式说起

| 36 Comments

在 Twitter 上看到笑来和几个推友说起关于提供下载为何不用更通用的 ZIP 文件格式而用 7z 的格式(refer)。这个倒是挺有趣的话题,刚好我也是 7-Zip 的用户,对这个不习惯也由来已久了,也一直不喜欢这个方式。

7-Zip 的默认压缩文件格式为"7z" (扩展名是 .7z) ,就是这个微小的差异给用户添加了很大的麻烦。设想一下,你用 7-Zip 压缩了一个文件,扩展名为 foo.7z ,传给了你的朋友(非IT人士),而你的朋友用的是 WinRAR,这是压缩软件市场上的主流,他看到这个格式之后,他会如何反应? 换个应用场景,如果一个普通用户,从网络上下载一个软件,下载完毕之后发现默认没有软件能打开这个 .7z 为扩展名的文件,他会如何做?

必须要承认,7z 压缩格式有很多优点,而 7-Zip 是个很好的压缩工具软件,但在预设格式上的这个事儿,不折不扣的是在挑战用户习惯。或许有人支持这样的做法,一个支持观点是 7z 格式压缩比更高。这是个很好的理由,不过,那么一点点的压缩比收益,考虑到当前个人用户所用设备的存储能力以及网络支撑能力等,对于单个用户来说,无法抵消使用习惯带来的麻烦。除非全世界都是 7-Zip 的用户,很可惜,现在的 WinRAR 仍然是市场绝对的主流,而 Zip 与 RAR 格式也是事实上的标准。另一种支持观点是现在所有主流压缩软件都支持 7z 格式了,所以使用是合理的。的确,主流压缩软件可能支持了 ,但是,绝大多数计算机用户不知道这个事实,和他们不知道没什么本质区别。或许,会有人认为这是 7-Zip 发展用户的一种独特的手段,如果是的话,那恐怕这是最拙劣的营销方式,形同绑架用户一样。

如果不是市场的绝对主导者,任何挑战用户习惯的的行为无疑是危险的。相比 WinRAR 和 WinZip 来说,作为开源软件的 7-Zip ,只需要使用习惯和前两者一样,而功能甚至都未必那么强,就会赢取大量用户。但是给用户习惯設置障碍的做法无疑是不可取的。如果有人不同意,那么还记得"兼容机"这个词汇吧 ?

开源软件应该多考虑使用习惯上的"兼容性",做网站也是一样,有多少人在设计网站的过程中真的尊重用户的遗留习惯? 而你是如何做的呢?

--EOF--

信息过载

| 15 Comments

先说一下我的结论:信息过载(Information Overload)是个伪命题。只要经过足够的训练,人应该可以接受更多的信息,多到无法想像。尽管这样,我还是相信,对信息的处理还是会让很多人困扰。

如果要减少信息对自己带来的困扰,有哪些可取的途径呢?

克服信息贪婪

你想得到更多,实际上恰恰相反,越想得到更多,真正得到的有质量的内容就会更少。尝试克服对信息的贪婪,有些信息不去主动获取对你影响也会很大。

适度使用工具

工具有的时候时候只是为了减轻个人的负担而存在。不能因为有了工具而变本加利的陷入更多的信息当中。比如,Google Reader 是个不错的 RSS 阅读工具,合理使用会减轻阅读过程中的交互。可如果订阅了过多的 RSS ,反而会使信息泛滥。

现在从 Google Reader 的数据趋势看起来,"推荐"要远比"过滤"有效。通过用户的人工推荐形成的信息流要好过人工设置的过滤方法。说起"社会化推荐",国内 玩聚 的团队也在做着不错的尝试。

远离信息噪音

离开门户新闻频道,对比一下:一天看 1000 条新闻与一天不看任何新闻,都不会影响你的生活。所以,远离新浪这样的新闻门户对自己是最大的解脱。当然终极手段是远离网络。我相信看我 Blog 的人都是网虫,而网虫的信息过载都是网络带来的。

另外,我以前很少点击 IM/eMail 里面传来的连接(最近一年倒是对这方面有所放松)。很多话题帖其实没什么看头。不过是满足以下好奇心而已。

远离社会网络

现在可以说满大街都是 SNS 。登录任何一个类似站点 ,都是满屏幕的状态信息,实际有价值的信息比例非常少。我也尝试了不少网络服务,唯一一个坚持在用的就是 LinkedIn 了。

到现在为止,还没有说到 Twitter ,对于 Twitter,现在说什么都为时尚早,或许不应该说,因为国内不能正常访问这个也许不存在的网站...

其实对于有价值的信息,多少算是过载? 是信息过载还是获取信息的途径超载? 恐怕很难界定,在互联网时代,你一个月接触的信息量要比没有网络时候一年的还要多。但是这所谓的负载是否真的带来了严重问题?

这是 2 年前没写完的一个帖子,今天捡起来发现还有参考价值,做了一点补充,发布出来吧。

--EOF--

太阳升起 太阳落下

| 10 Comments

2010 年 1 月 21 日消息,欧盟已经无条件批准 Oracle 收购 Sun 的计划。接下来,尽管在有的国家或地区还会有所纠葛,但 Oracle 已经扫清了收购 Sun 的主要障碍。一代 IT 巨人 Sun 从此落幕。

Sunset.jpg
(via)

人们谈论起 Sun,总要说起这家伟大公司曾经的辉煌。Solaris、Java、SPARC、NFS......

很多人知道 Sun 是 Stanford University Network 的缩写,不过 Sun 的创始人并不全来自斯坦福大学,虽说 Vinod Khosla 、Andy Bechtolsheim 与 Scott McNealy 三个斯坦福的毕业生是 Sun 的发起人,稍后加入的 Bill Joy 大神则来自伯克利,他尽管不是发起人,但也是公司创始人。对于创始人中的 Andy Bechtolsheim ,必须要多说一嘴,多年之后,是他给了 Google 两位年轻的创始人第一笔 10 万美元的天使投资。

二月创建的公司,当年七月份就已经盈利,这是因为 Andy Bechtolsheim 在成立公司之前就已经设计处了 Sun 的第一代工作站。Sun 工作站在当时可以说无敌于业界,十余年间就卖掉了 1 百万套。而到了 1995 年 Java 推出的时候,简直让业界疯狂,我还记得当初的报纸写到"几乎一夜之间互联网动了起来",这是 Sun 对业界最大的贡献。尽管 Sun 的品牌在将来或许消失,但是 Java 仍将继续改变这个世界。

公司创建四年之后成功 IPO,股票代码 SUNW ,最早代表 Sun Workstations ,这是 SUN 早期现金牛产品,后来解释为 Sun Worldwide,而到了 2007 年,则更改为 JAVA。这个更迭多少意味着 Sun 的无奈。Solaris 工作站已是明日黄花。在第一波互联网泡沫破灭前,Sun 市值一度超过 2000 亿美金,这是个惊人的数字。互联网上运行的服务器有 35% 跑在 Sun 的服务器上。彼时,Sun 自诩 "We are the dot in the .com",可惜 Sun 后来的志向 "We're the Dot in Web 2.0" 未能实现,壮志未酬。

除却 Java 之外,Sun 在其它方面的产品创新几乎都有 Bill Joy 的功劳(其实 Java 项目也有他的推动),这位号称在一个周末重写 BSD 内核的大神,在 Unix 操作系统领域带来惊人的成就,对业界产生无与伦比的影响,甚至他一个周末写就的编辑器 vi 都是很多 Unix 用户离不开的工具 (更正)。Bill Joy 在 2003 年从 Sun 出走(据说与麦克尼利不和),他的离去给 Sun 蒙上了一层阴影,从此后,Sun 在 Unix 方面鲜有有创新(这几年数来数去也只有 ZFS 算有点影响力了)。Bill Joy 在离开 Sun 之后转投纳米技术、机器人学等领域,在软件技术方面未有大的动作,但说不定这天才什么时候杀个回马枪呢。

Sun 创造了 Java ,却无法从这个金矿上赚钱。以往的分析往往认为 Sun 卖硬件卖得太舒服了,没能够及时转型。这倒的确是很重要的一方面。而另一方面是开源社区(甚至 IBM )都比 Sun 更能赢得用户的心。而 IBM ,更是抛出了 Eclipse(日蚀)项目以及后来联合其它公司成立了 Eclipse 基金,这实际上是用免费策略断了任何公司想在 Java IDE 上盈利的念头(当然主要针对 Sun)。Sun 在硬件服务器领域和 IBM 争夺市场,而 IBM 则在 Java 上断了 Sun 的后路,除此之外,IBM 亦大力扶植 Linux,甚至鼓励用户将大型机迁移到 Linux 环境下,一方面节约遗留系统维护成本,一方面硬件照卖,这是很高明的一招。

反观 Sun ,在 Linux 渐成燎原之势的时候,应对战略相当的失误,与 IBM 拥抱开源截然不同的是,Sun 采取冷眼旁观。等到 Jonathan Schwartz 主政时期,力主推出 OpenSolaris 策略虽说是一步好棋,但是时过境迁,为时晚矣。试想如果在 Linux 崭露头脚的时候,Solaris 就能够开源或者是 Sun 能援助一臂之力,那说不定就是另一番天地了。

Sun 在收购策略上一直是走弥补硬件产品线的策略,大多数收购并不成功,收购 StorageTek 花费的 41亿美元似乎是绝对的赔本买卖。收购 MySQL 虽说被业界看好,甚至 Jonathan Schwartz 称收购 Sun 是"现代软件史上最重要的并购案",可没想到仅仅一年的时间,Sun 自己也被卖掉。到现在,MySQL 仍前途未卜。

说起 Sun ,当然绕不开执掌 Sun 帅印长达 22 年之久的斯科特·麦克尼利(Scott Mcnealy)。Sun 成也麦克尼利,败也麦克尼利,说到底,他毕竟是一个商人,一个刚愎自用的商人,对于 IT 大势的判断仍然比盖茨差几个段位。Sun 的四位创始人当中,他其实是没有任何技术背景的。"网络就是计算机" 据说并不是他提出的想法,而是 Sun 的第五位员工的灵光乍现。麦克尼利给中国用户的更多印象是对微软的抵制和对盖茨的敌意,这一点倒是和拉里埃利森是一路人。一个人成功的时候,大家看到的都是他的光环;一旦失败,大家都会去指责他的缺点。

现在有一个公司颇像辉煌时期的 Sun ,那就是 Google。

"一代人来,一代人走,大地永存,太阳升起,太阳落下,太阳照常升起。"

--EOF--

说起 Bill Joy ,在 2000 年曾经发表过 2 篇影响深远的文章:

第一篇广为流传,而第二篇似乎少为人知。这两篇文章现在看来,仍然像一位先知对未来作出的预言。这一年,Bill Joy 46 岁。

后记:McNealy "I love the market economy and capitalism more than I love my company"

又及:当年有传言说 Sun 准备收购 Apple,如果成功的话会怎么样呢?历史不容假设啊。

Oracle 代码中的 Radiohead 歌词

| 9 Comments

这是我接触 Oracle 这么多年来最有趣的一件事儿。

刚才在邮件列表中看到一位叫做 Dennis Yurichev 的安全研究人员提及在 ORACLE.EXE 这个文件代码中包含有 Radiohead 乐队 Creep 这首歌的歌词,立刻验证了一下,果然:

$ strings oracle.exe | grep radiohead
I'm a creep, I'm a winner, what the hell am I doing here.
I don't belong here - radiohead

没错,真的是 Creep 这首歌的歌词。Radiohead 颇受 Geek 程序员的喜爱。看得出加入这段代码的程序员对这份工作并不是很满意..."what the hell am I doing here"...

另外,原歌词是 I'm a weirdo(古怪的人),而不是 winner ,估计是随手写错了。

这位 Dennis Yurichev 还给出了伪代码:

#define STRING "I'm a creep, I'm a winner, what the hell am I doing
here.I don't belong here - radiohead" 
kfasSelfTest_update() { kfasOpen (...);
somestruct.somevalue=STRING;
kfasUpdate (somestruct);
kfasClose (...); newstruct=kfasOpen (...); if (strncmp (newstruct.somevalue, STRING, ...)!=0) { // raise error 99999? kserec1(99999, 1, ...); kserec2(99999, 1, ..., STRING, 1, ...); return 0; };
kfasClose (...);
return 1;
};

据说是 10.2.0.1 之后才有,可能和 Oracle ASM 特性有关,不知道这是 Oracle 哪一位程序员的杰作...

--EOF--

我最喜欢的 Radiohead 作品还是 Paranoid Android ...

Firefox 频繁 Crash 的避免

| 15 Comments

前几天 Firefox 升级到 3.5.7 之后频繁崩溃,导致我也很崩溃。说也奇怪,Firefox 这个版本据说主要是解决以前版本的稳定性问题,还说要修复 Top crash 呢,可没想到在我的机器上反而更加的不稳定。开始猜测是一些扩展(Extension)升级带来的问题,把所有的扩展禁止掉,仍然 Crash。另外怪的是,即使使用的时候没问题,一旦退出 Firefox 的时候还是会提示软件有问题而崩溃。那个提交 Crash 报告的界面都快让我条件反射了。

因为 Firefox 是日常工作首选的浏览器,加上翻墙越脊的也很顺手,还不能弃之不用。昨天痛定思痛,决定仔细分析一下到底怎么回事。说也惭愧,尽管是 Firefox 的老用户,倒是没注意到 Firefox 对于 Crash 的反馈处理还是有一套比较不错的机制的。通过 Firefox Crash Reporter ,用户能够比较快速的定位到自己的问题。

提交了崩溃报告之后,在浏览器地址栏输入:

about:crashes

然后点击所提交的 Report ID,经过联机分析之后,会给出很有价值的提示。可以对比多组结果,便于最后确认。查看Crash Report,我的浏览器的两个主要问题是:

  • 501429 NEW Gmail tab crash while closing it's tab (caused by Google Talk Plugin)
  • 531551 NEW Firefox 3.6 topcrash due to old Acrobat Plugin (nppdf32.dll)

问题和插件(Plugin)有关系,和扩展倒是关系不大。罪魁祸首一个是 Google Talk Plugin ,一个是 Acrobat Plugin,通过 Tools-->Add-ons-->Plugins 将这两个插件关闭。重启动 Firefox ,观察,问题不再复现,泪奔。

尽管不是扩展问题,但还是仔细看了一遍可能会带来问题的 Problematic extensions 列表,看完之后,把 IE Tab 换成了 IE Tab lite。

几点感慨:

  • 对于客户端工具,如果追求扩展能力与第三方开发友好性,那么必然损失稳定性。而这个稳定性的损失如果不被用户理解,对产品的推广是比较危险的。
  • 国内火狐团队在做什么? 至少作为用户,不知道,也打算用"针对国内用户定制"的产品。
  • 其实很多时候解决办法就在那里,只是我们视而不见。

--EOF--

今天已经将 Firefox 升级到 3.6 了,目前稳定性尚可。

有来自火狐中国的朋友留言到"在将来版本的火狐中,整个插件体系被重新设计,所有的插件会在单独的进程中执行,不会影响到Firefox的执行"。这是一个好消息。

1e100.net,来自 Google

| 8 Comments

在 Alexa 上观测最近的一些数据的变化,发现了一个奇怪的域名: 1e100.net ,全球排名 45 。乍看上去,这个域名非常山寨,不过查询一下,发现这居然是 Google 的域名。Google 的名字是 Googol 这个单词拼错得来的,而 Googol 就是 10100 这个大数。1e100 = 1x10^100 = Googol (refer)。Twitter 上也有网友对此进行了提示。

1e100.net.png

这么看来,1e100 这样的域名风格倒是很 Google 化。从网上的反馈看,Google 有不少服务都在使用 1e100.net 这个域名,最多的应该是 Google Chrome 浏览器的 Safe Browsing 特性对地址的使用(对 Firefox 也有影响),而且会启用较多的并发连接,所以会有网站对此带来的压力无法承受而屏蔽 Google 的这个服务(refer),此外也让我想起以前 Google Chrome 早期的版本解析 DNS 多少有点慢,不知道是否有相关因果关系。Google 的其它产品包括 Google Toolbar、Google Analytics、YouTube 、FeedBurner 等服务也用这个域名。也有人发现 Google IPV6 地址也是通过这域名在进行测试。不过直接访问 1e100.net 是访问不到的,Google 通过子域名的形式进行使用。

按理说,这种不对外提供服务的地址,Alexa 没必要统计流量的,或许是他们的小失误倒是让我们了解到 Google 的一点有趣的信息。

--EOF--

更多参考:

更新:最新的消息说是 Google 不同数据中心间用来" identify servers, hinting that reverse DNS plays a role" ,关键词"Spanner"。

Google 现在有官方解释了:What is 1e100.net? 用于标记Google网络中的服务。主要有两个目的:1) 保持简单性; 2) 加强安全。

Google带来的科普事件

| 30 Comments

在看到 Google 的 公开信 后,我在 Twitter 上说"宁与玉碎不为瓦全。也好"。之后一直想写点什么,不过在这个时候,阐述对这件事情的看法,很难不被淹没到口水战里。

揣测 Google 这样做的动机与商业目的对我们大多数人来说没有什么实际意义,不如让我们把讨论的焦点放在这次事件背后的问题上:这次实际上是客观承认了"内容审查"(refer: Censorship)变本加厉的既定事实,也让更多人知道了这一现状对社会带来的负面作用。对互联网的不当隔离与审查是不符合普世价值的,尤其不符合人民群众对于"先进生产力的发展要求",是民众无法认同与接受的做法。Google 对于互联网来说是先进生产力的绝对代表者,如果将其拒之门外,那么可以肯定这无助于社会的进步。

如果说出于政治目的的审查有其可解释性,但是为了"倒洗澡水而把孩子也倒掉"则是极其错误的做法(当然,表面上都是以一些类似"保护未来的花朵"为借口,这和过去那些重大对立冲突的导火索何其相似也)。这种错误的做法还包括前一段时间的 IDC 整顿、域名整顿等一系列事件乃至要推行网站白名单的传说,这些都是操作层面上的极度不当。"疏"与"堵",历史给我们带来无数次的经验教训,后者无疑是饮鸩止渴。我不知道在皇帝的新装的那个故事中,喊出来那家伙其实什么也没穿的小孩受到了什么对待,也不知道皇帝是否再次上演新装的闹剧。是在我们这里,似乎这样的闹剧无时无刻都在上演。

上网十年,从一个乐观者变成了悲观者。历史有的时候是进一退二,有的时候是以退为进,还是让我再乐观一次吧,期待 Google 这次准备撤离会唤醒我们更多的思考,给我们带来哪怕是一点点的进步。

--EOF--

更新:

在审查过程中造成的直接和间接的经济损失似乎少有人关注,不知道是否有经济学人关注这一领域。如果有人算一笔经济账,恐怕会是个惊人的数字。而有关部门相信也是投入了大量人力物力的,这也是不小的资金开销。

Oracle Exadata 的混合列压缩功能

| 3 Comments

Oracle 发布了关于 Exadata 的混合列压缩(Hybrid Columnar Compression)功能的白皮书(refer)。到现在这方面中文资料还比较少,所以分享一下我读这篇白皮书的笔记。Oracle 在这个文档中也提出了 数据仓库压缩(Warehouse Compression)与归档压缩(Archive Compression)两个概念上的"新"功能。

Oracle Block via http://www.dbasupport.com/img/gupta1.gif我们知道 Oracle 数据库引擎默认是以数据块(block)为存储单位,以数据行(row)作为存储与组织方式,当然理想情况是在一个数据块内存储更多的数据行,而实际上这样的方式对于一些列数较多的表不可避免的会带来存储空间的浪费。相反,以列(columnar)的方式组织、存储数据在空间上会带来很好的收益,但是对于依赖于行的查询,也是我们最常用的查询方式,则性能会差很多,而对于数据分析方面常见的汇总之类的查询,因为只需要扫描较少的数据块,就会达到很好的性能。可实际环境中,人们往往要熊掌与鱼兼得,为了达到空间和性能上的折衷,Oracle 引入了新的方式:用行与列混合的方式来存储数据。

Logical Compression Unit.jpg

如上面的示意图,从高一层抽象上看,引入了一个新的叫做压缩单元(compression unit,cu)的结构用于存储混合列压缩的行的集合。新的数据载入后,列值追加到旧有的行集合的后面,然后进行排序与分组等操作后进行压缩。这一系列动作完成后,组成一个压缩单元。直接一点说,也就是对列存储做分段处理,而压缩单元用来维系不同分段之间的关系。有个特别之处是,要使用批量装载(Bulk Loading)的方式,对于已经存储的数据依然可以应用 DML 操作。而 Exadata 引擎对待已经存入的数据的策略是按需进行解压缩。

这是与传统的 Oracle 数据库引擎所说的压缩截然不同的方式。至于数据仓库压缩与归档压缩的功能,看起来只是针对不同的场景而设置了不同的压缩密度而已。而 Oracle 之所以强调 Exadata 的压缩能力,我想更多是因为 Exadata 目前对于存储能力和价格上的限制吧。

--EOF--

公司 BLOG 运作经验谈

| 7 Comments

在过去的 18 个月里,我一直用 20% 的时间在运营支付宝的官方网志 - 支付志 ,不要误会,我说的 20% 是 100% 之外的时间。

因为在兄弟公司中第一家推出官方 Blog,可参考的同行案例并不多,借鉴了一些 Google 运作产品 Blog 的大致思路和策略(尽管没有明确的策略)。所以,更多只能是摸石头过河,一点点的进行尝试。这里总结一点运作的经验,以供后来人参考。

避免陷入争论

对于用户的疑惑或者质疑,做解释说明(To make plain or comprehensible),不要辩解,也不要争辩。其实总有一些话题一些客观因素导致的现状是很难迅速解决的,比如"网银对非 IE 浏览器的支持",一旦就某些观点讨论起来,很容易陷入论战。身处漩涡是一件危险的事情,更好的办法是说明,中立性的的说明。在这里我也建议如果遇到恶意攻击,最好的办法当然是保持沉默。

传递必要信息

说是"官方",但不意味着事无巨细报道公司的一切,也没有必要专写一些小道消息,有关公司文化或者公益活动等事宜是有必要进行宣传的。而有关产品更新,有关用户问题的跟进解决是有必要进行说明的。而我个人比较关注的是一些被忽视但是对用户会有价值的地方。

关心有用指标

我知道有很多公司的官方网志是有专人维护的,而且,主管会定下来很多莫名其妙的指标给维护人,比如访问人次、PV 等等。其实这些指标可能会背离做这件事情的初衷。产生价值有多种渠道和方法,通过 RSS 、转载等多种渠道更能够有效的传递信息,未必一定要用户总在本地阅读,而用户阅读的多寡也不意味着信息传递价值的大小。所以,对于支付志来说,重要的是对用户传递产品信息公司理念,前面一两个月我还是关心访问人次,到了后期,我更关心的是内容引用率的跟踪,以及引用本站内容的网站所产生的影响。

制定内容策略

在准备运行的时候,针对内容制定了如下几条原则,现在看起来依然适用:

  • 我们可能会犯错误,但一旦发现会尽快纠正;
  • 所有评论在通过管理人员审核后发布,并且将在适当时候尽可能快地回复评论;
  • 我们将尽可能对引用的文章和内容给出初始连接;
  • 对所有不同的意见我们都将给予尊重。

这里面要说明的是对待留言的态度,我对留言的处理先行定下策略,实际操作中有章可循。

积极对待反馈

官方 Blog 的维护过程中,会看到非常多的用户反馈,而有些典型但是没有引起重视的问题要第一时间转发给内部团队,积少成多,长期下来看,这个收益是非常可观的。也有用户会提供针对某些长期问题的自行解决办法,也是非常值得参考的。有的时候,可能从有些角度看,只是小问题,但是对单个用户来说,都是大问题。不要忘了蝴蝶效应,小问题,可能也会带来大影响。这也是我在开始游说开辟 Blog 的一个出发点。

善用媒体工具

适当利用 Twitter (@Alipay)或是新浪微博( @支付宝 ,已经有超过 5000 人关注了) 等工具,面向不同的关注群体做一下信息广播也会有不错的效果。

结束语

必须要说的是,尽管获得了一点经验,但实际上现状距离目标还相去甚远,还有太多不尽人意的地方,只能尽力为之。

--EOF--

Second Life 升级 MySQL 的案例参考

| 6 Comments

尽管前一段时间有媒体报道 Second Life 已经悄无声息的衰败,不过林登实验室的人也还是很忙,这不,刚把一堆 MySQL 服务器进行了升级,还进行了详尽的经验总结(Refer)。

原有的 MySQL 都是跑在 4.1 版本上(4.1.11),在 2007 年的时候计划升级到 5.0 版本,不过遭遇到了...嗯,失败。当时的 5.0 版本不够快。被迫回滚。之后中心 DB 一直运行 4.1 的版本,而 Slave 和其它 DB 都逐渐升级到了 5.0.51 的版本。

用 Python 和 RabbitMQ 写了一个支持 MySQL 协议的分布式压力测试框架,该工具用于捕捉产品环境中的流量并在测试环境下回放模拟,以便更加接近系统的真实运行情况。此外,使用了 Maatkit 工具包用于验证 SQL 语法以及数据。

4.1.11 与 5.0.51 的对比测试表明,5.0.51 比 4.1.11 要慢不少,经过与 Percona 的沟通后,决定升级到 5.0.84 。从我几天前这份 MySQL 版本的调查看, 5.0.84 也是目前用户采用比较多的版本。初步测试 5.0.84 的性能和 4.1.11 的性能相差无几,随后测试打了 Percona 与 Google 的补丁的版本,未作调整下收益不大。一些关键的参数需要作调整以便得到更好的 I/O 能力(要注意如果是 SSD 环境下 innodb_read_ahead 参数要做一点调整,16K 还是 32K ? 要测试才知道)。此外,将 Binlog 放到单独的块设备上,得到 10% 的提升。值得注意的是,默认的系统 I/O 调度器不是很适合,切换到 Deadline 后得到了 15% 的提升(参考 I/O 调度器与 DB的关系)。

经过一番折腾,峰值并发达到了14-16k QPS,只用了 80% I/O 能力,而 4.1.11 最高是 8200 QPS,5.0.51 最高 11,500 QPS,看到这里,猜测他们费这么大劲升级也就是要得到更好的并发能力?

然后是对代码的验证上,包括 SQL 在不同 DB 版本上的正确性以及 SQL 运行的效率,后者也就是执行计划稳定性。这两个测试主要是用 Maatkit 来做的。对于后者,我个人觉得他们的验证过程还有点黑盒子,或许应该关注到具体的 TOP SQL 才会更稳妥一些。此外,复制数据的一致性检查也有必要加以重视。

这台中心服务器数据量大约 250GB。当前所用的服务器是 8 核 Xeon E5450 CPU,64GB 内存,400GB 的直连磁盘(RAID 10),接下来有计划表明要迁移到 16 核的机器上,并且将启用 SSD 。

总体来看,对 MySQL 升级的过程其实也不是那么简单的,也要有个方法论与好的方案才会保证最后升级的成功。

--EOF--

延伸参考:Percona 针对 MySQL 5.0.84 的 Patch 说明

Movable Type 与 WordPress

| 13 Comments

在几次跳票之后,Six Apart 终于发布了 Movable Type 5。作为少数坚守在 MT 阵地的用户,当然是第一时间升级到新版本进行了一番体验,结果就是这几天正在一点点修改升级后的一些模板上的问题。倒是有活干了。

一点小经验是如果是延续用旧的主题的话,迁移到新的目录后要确保有 "theme.yaml" 这个文件,否则后台点击 Setting 按钮的时候会弹出一个"Can't call method "label" on unblessed reference" 的错误。多数插件都能继续用,可以打开 MT 的 Debug 模式,然后查看 Plugin 列表,会显示哪些插件兼容性不够好。我觉得用好 MT 的一个秘诀就是...尽量少用插件。

总体来看 MT 新版本的确带来了很大改进,除了增加了版本历史功能外,内容结构的组织有更大的改进,模板的可定制化非常好,是目前能看到的 CMS 平台的登峰造极之作。只是从平台的角度考虑恐怕还竞争不过 WordPress ,我个人觉得语言的实现(Perl vs. PHP)造成了二者在最初发展上的差异,进而导致插件上开发的 Movable Type 远远不如 WordPress 容易,而插件的多寡影响功能的完善与丰富性。用户会接受哪一个不言而明了。另外一个影响因素就是更多的主机提供商对 PHP 的支持更为友好,甚至一些提供商提供一键安装 WordPress 的服务。而 MT 的安装怎么也需要用户懂一点点技术才成。

好的工具才会激发写作的乐趣,MT 属于这样的工具

--EOF--

受邀做2009中文互联网开放式评选(ChinaMode)的观察员,在评审候选网站的时候,我发现,在过去的一年中,或许是经济危机的影响,国内互联网方面的 Startup 并不多。这里回顾一下个人认为值得关注的几个初创公司。

VMKid - 手机虚拟机与无线互联网技术平台

年底的时候,猛犸科技( VMkid.com ) 在杭州 BetaCafe 举办了产品发布会,演示了他们令人心动的手机虚拟机技术以及无线互联网平台解决方案。这是一家颇为神秘的初创公司,甚至官方站点到现在还没有正式对外开放,不过已经得到了阿里集团旗下子公司淘宝的大力支持。创建人在硅谷爬摸滚打了多年,对技术趋势的把握非同一般。相信在 2010 年,这家公司会在业界有不小的动作。

Updated:该公司已经被阿里巴巴收购。

Yupoo -- 图片托管解决方案提供商

又拍(Yupoo.com) 虽说是在几年前创建的,不过在 2009 年开始了二次创业。创始团队在 2008 年底被迫离开,到了 2009 年末颇有戏剧性的取回了控制权,宣布再度归来。随后的 Yupoo 进行了一系列的调整,无论是个人摄影爱好者还是电子商务网店用户,都有对应的图片解决方案。年底的时候 51.com 悄然对封锁了图片外链,给不少网店用户带来了恐慌,相信会给第三方图片托管一个很好的发展契机。国内需要有个第三方图片托管服务,期待 Yupoo 接下来会大展拳脚。

DNSPod - 智能DNS解析服务提供商

因为 2009 年 6 月份暴风影音域名解析引起的大规模断网事件让 DNSPod 引起了很多人的关注,也让更多人知道了站长吴洪声,不到半年的筹备后,DNSPod 已经进行了正规的商业运作。依托 DNS 的服务国外有大家颇为熟知的 OpenDNS,而 Google Public DNS 的发布无疑也给了 DNSPod 足够的信心。考虑到国内独特的互联网环境,DNSPod 自然不愁客户。

射手影音播放器 -- 一站式多媒体播放工具

射手影音播放器是射手网站长发起的项目,到现在或许还没有进行商业运作,不过谁说一定要商业运作呢? 说起播放器,在国内客户端工具竞争到白热化的今天能做到创新是不容易的,但是射手播放器仍有独到之秘。且不说绿色无广告,依托射手网的字幕资源的"智能下载匹配字幕"功能让用户再也不用担心找不到精确的字幕。这也是 2009 年我唯一新安装的一个桌面客户端工具。

监控宝-- 网站性能监控的在线服务

监控宝提供第三方网站运维服务,主要针对网站性能、服务器状态的监控。对于大网站来说,绝大多数都会自荐监控系统。监控宝则有点像服务于初创公司的初创公司,很多还在起步中的网站要么没任何监控服务,要么自己费力做的监控成本太高,这个服务的出现倒是弥补了市场上在这方面的空缺。

在新的一年,在新的互联网形势下,相信创业会更加艰难,不过,寒冬过去才是春天。想到这些,才有希望。

--EOF--

大导演詹姆斯·卡梅隆的旷世巨作《阿凡达》(AVATAR) 好评如潮,观众无不被片中呈现的美轮美奂的画面所震撼。电影惊人的动画效果由 Weta Digital 公司制作,我们可以从这篇 Processing AVATAR 了解到一点关于制作该片特效的超级计算机的情况。

Weta Digital 的计算集群在 2008 重新进行了设计,采用了 HP Cluster Platform 3000BL 集群平台作为其解决方案, 操作系统是 Linux ,在 TOP 500 超级计算机中排名也从最初的 400 多上升到了 190 多名(refer)。这套环境在 2008 年的时候是 4096 个 Core,到 2009 年增加到 5936 个(refer),而不是所说的 40000 个 (refer,我猜测是笔误),在 TOP 500 超级计算机中一度排名第一的 IBM 的走鹃(Roadrunner),也不过才 12 万个核而已。

总内存有 104 TB,内联采用的是万兆以太网,没有使用 Infiniband 。BL2x220c 是惠普面向高性能计算推出的刀片服务器,其独到之处是一个刀片内放两台服务器,每服务器有两个 4 核 CPU,用的是 Intel Xeon 处理器(支持 EM64T 技术)。

整部电影大约 3 PB 的数据存放在 BlueArc 和 NetApp 的存储上,数据传输走光纤通道。电影完成时一帧的数据是 12 MB,一秒钟 24 帧,每分钟的数据就有 17.28 GB,而整部 AVATAR 长达 160 多分钟。我想不会有哪个人在自己的 PC 上有这么样的一部电影吧,恐怕也是没办法播放的。

Weta Digital 大有来头,这是彼得·杰克逊(Peter Jackson)创建的公司,因为给《指环王》制作特效而受到业界瞩目,其实还有不少电影,比如《金刚》《机械公敌》以及前不久的 《2012》,也都是由 Weta Digital 制作的特效。不知道我们国内的导演有没有创建过类似的公司,当然,我相信他们对动画特效的运用与理解恐怕还差得很远。

计算机集群能力的提升从一定程度上推动电影艺术的发展,对电影来说,电影越来越好看,票价也是越来越贵。而因为摩尔定律依然有效,计算机集群的运算能力是逐年提升的,成本反而下降,只要能取得更震撼的视觉效果,剧情不太白痴,投入产出似乎倒也是一笔明白账。

--EOF--

编程要趁早

| 24 Comments

在阅读 Coders at Work 这本书的时候,发现一个有趣的现象:成名的程序员,都是在很早的时候就进行编程了。

读这本书是从 Brad Fitzpatrick(Memcached的作者) 的采访开始的,因为整本书里面他最年轻,Brad 在 1980 年出生,能够跻身一群业界技术前辈中间是非常惹眼的,他什么时候开始接触计算机?5 岁。整本书里面采访的一些程序员,也多半都是在高中之前就接触计算机并且被 0 和 1 的世界所吸引。国内现在仍活跃的一些顶尖程序员,比如云风、章文嵩,也都是很小的时候就开始接触计算机(而实际上很多资深的程序员在一起,几乎都会谈到 Apple II,这是一代 IT 人的技术启蒙之门)。

从很小的时候开始接触计算机,并且对计算机产生兴趣的话,那么到了上大学的时候,可能已经积累了 10000 小时的实践经验,意味着他已经跑在很多同行的前面。而如果对计算机接触较晚的话,那么发现了自己的兴趣之后自然要投入大量时间去进行实践,也就是我们经常读到的那些国内第一代程序员的典型故事:整天泡在机房蹭机器,通宵达旦。最近这个 10000 小时的说法因为《异类》这本书的火爆而再次流行起来。就我个人的理解,类似写程序、下围棋之类的事情要实践的量达到一定程度才会产生质变。

"二十岁不成国手,终生无望",用在计算机这个领域或许有点绝对,毕竟大卫·卡特勒 这样的牛人在 20 多岁才开始折腾计算机的,国内也有王江民 39 岁学计算机的励志故事。不过不要忘了,那是什么时代? 此一时,彼一时。看这本Coders at Work 至少能够警示我们,其实没那么多天才,大家眼中的天才也都是经过数年的苦功夫才熬出来的。

另外一个有趣的现象是会发现这本书里面受采访者的父母有很多也都是理工科出身的,孩子在很小的时候就耳濡目染接触到很多技术方面的信息,对于以后的投身 IT 行业有一定影响。从这一点来说,国内很多家长望子成龙心切,硬逼着孩子去整天上什么音乐舞蹈之类的学习班其实对孩子的成长没啥太大的帮助,除非有兴趣才会达到足够的练习实践时间,否则孩子自己也会疯掉的。

--EOF--

又及:有伟人说,"计算机要从娃娃抓起"。要我看更好一点的做法应该是,把计算机早点扔给娃娃。

关于这篇归档

This page is an archive of entries from January 2010 listed from newest to oldest.

December 2009 is the previous archive.

February 2010 is the next archive.

Find recent content on the main index or look in the archives to find all content.