今天一下楼就看到了疑为震云的东西,扇形,兼有排骨形,自下离家起,至入公司大门,时间为7:40至8:30,虽然风很大但云形一直存在。不知是否在北京西边会发生地震,或是余震?
2008年5月28日
EA(Enterprise Architect)
以前我写过一篇文章 ,介绍自己用过最好的两个UML工具Visual Paradigm和MagicDraw UML。话说岁月如梭、韶华易逝,到现在也快一年了,恰好昨天一个老朋友问用啥工具来画UML图,于是就有了这篇文章。
我现在用什么工具来进行画UML图?答案是EA,即Sparx Systems Enterprise Architect。
为什么选择EA,而不是Visual Paradigm或者MagicDraw UML?并非Visual Paradigm、MagicDraw UML不好。站在我的角度,二者皆有不合我意的地方:
- 公司不买Visual Paradigm,自己也弄不到它的Crack,所以用一段时间后就觉得麻烦——每隔一段时间,需要重新申请试用许可证,而且试用版的有同一个工程中每种图只能画一份的限制;
- 而MagicDraw UML太大、占内存太多,而且感觉经常没法打开历史文件(这一点可要了俺的小命啦),对中文的支持还不太好。
所以,俺大约在半年前把EA提升为我的UML主打工具。
EA好在哪里?对于我这种放弃了MDA理想的俗人来说,其好处有三:一为好用,二为小巧,三为好看。
>好用
正如我在上次那篇介绍UML的文章里所说的:想象一下,自己在舞动鼠标之前想好了一打的类图、用例关系、协作关系,但一旦坐在电脑前打开你伟大的建模工具,却一直等到把构思忘得一干二净还怎么也画不出两个方格(类图),这样的工具你会用吗?所以我依然把“快”作为选择UML工具的首要因素,只不过换了一个更为宽泛的词:好用,因为EA还有其它很棒的特性。
>小巧
无论时光怎么飞逝,计算机的性能每年翻几番,我们都不希望自己用的软件都是像Winddows Vista那样一启动就吃掉1G内存、行动缓慢的怪兽:
所以在功能相近的情况下,人们会选择占资源更少的软件。EA 7.0的安装文件大概为26M,启动后大概占用38M内存,打开其附带的例子(包含大于20张UML图和数百个实体)后约占54M内存,对鼠标、键盘的响应速度很快。这一点上,MagicDraw UML则尽显劣势,其12.5版本的安装文件约为171M,15.0版本的安装文件大小更是上升到200M,启动后会把你的机器拖得跟蜗牛似的,并且它对鼠标、键盘的响应也很慢。
>好看
追求美丽是人类的本能之一,这就是我把做出的图是否好看定为UML工具优秀与否的重要因素之一。在美丑方面,我非艺术家,所以没法从理论上阐述EA画出来的图好看与否,仅凭感觉而已。下面贴出两张使用EA画的UML图作。
结束语:即使现在,我依然觉得Visual Paradigm最好,但没法不受限制地使用,真是可惜!
EA(Enterprise Architect)
以前我写过一篇文章 ,介绍自己用过最好的两个UML工具Visual Paradigm和MagicDraw UML。话说岁月如梭、韶华易逝,到现在也快一年了,恰好昨天一个老朋友问用啥工具来画UML图,于是就有了这篇文章。
我现在用什么工具来进行画UML图?答案是EA,即Sparx Systems Enterprise Architect。
为什么选择EA,而不是Visual Paradigm或者MagicDraw UML?并非Visual Paradigm、MagicDraw UML不好。站在我的角度,二者皆有不合我意的地方:
- 公司不买Visual Paradigm,自己也弄不到它的Crack,所以用一段时间后就觉得麻烦——每隔一段时间,需要重新申请试用许可证,而且试用版的有同一个工程中每种图只能画一份的限制;
- 而MagicDraw UML太大、占内存太多,而且感觉经常没法打开历史文件(这一点可要了俺的小命啦),对中文的支持还不太好。
所以,俺大约在半年前把EA提升为我的UML主打工具。
EA好在哪里?对于我这种放弃了MDA理想的俗人来说,其好处有三:一为好用,二为小巧,三为好看。
>好用
正如我在上次那篇介绍UML的文章里所说的:想象一下,自己在舞动鼠标之前想好了一打的类图、用例关系、协作关系,但一旦坐在电脑前打开你伟大的建模工具,却一直等到把构思忘得一干二净还怎么也画不出两个方格(类图),这样的工具你会用吗?所以我依然把“快”作为选择UML工具的首要因素,只不过换了一个更为宽泛的词:好用,因为EA还有其它很棒的特性。
>小巧
无论时光怎么飞逝,计算机的性能每年翻几番,我们都不希望自己用的软件都是像Winddows Vista那样一启动就吃掉1G内存、行动缓慢的怪兽:
所以在功能相近的情况下,人们会选择占资源更少的软件。EA 7.0的安装文件大概为26M,启动后大概占用38M内存,打开其附带的例子(包含大于20张UML图和数百个实体)后约占54M内存,对鼠标、键盘的响应速度很快。这一点上,MagicDraw UML则尽显劣势,其12.5版本的安装文件约为171M,15.0版本的安装文件大小更是上升到200M,启动后会把你的机器拖得跟蜗牛似的,并且它对鼠标、键盘的响应也很慢。
>好看
追求美丽是人类的本能之一,这就是我把做出的图是否好看定为UML工具优秀与否的重要因素之一。在美丑方面,我非艺术家,所以没法从理论上阐述EA画出来的图好看与否,仅凭感觉而已。下面贴出两张使用EA画的UML图作。
结束语:即使现在,我依然觉得Visual Paradigm最好,但没法不受限制地使用,真是可惜!
《医宗金鉴》介绍
清初,天花流行,危及宫廷,特别顺治皇帝死于天花,宫廷十分紧张,康熙亦曾感染天花, 幸得隔离治疗保全了性命,也正因为康熙曾因天花获得免疫而得继承帝位。因此,他在位时十分重视痘疹一科与种痘术之推广。乾隆即位后,发扬康雍两朝重视医学之余风,接受太医院 院使等鉴于古医书“词奥难明”“传写错讹”,自晋以下“医书甚夥”,“或博而不精,或杂而不 一,间有自相抵牾”的奏折,请求发内府医书,并征天下秘籍“分门别类,删其驳杂,采其精粹,发其余蕴,补其未备”。乾隆于四年(1739)诏令供奉内廷御医,太医院右院判吴谦,与康雍乾三朝御医、院使刘裕铎共同领衔编纂医书,由吴谦与刘裕铎任总纂修官,其下有纂 修官 14人,副纂修官12人,校阅官10人,收掌官(书稿保官)2人,誊录官23人,以及画家等组成编纂班子。
所有参与编纂的御医等,都是按照清府批文“令太医院堂官并吴谦、刘裕铎等将平日真知灼见、精通医学兼通文理之人,保举选派”而组成的。若太医院合格人员不足者,“令翰林院 ……查派”,“选取字,画好者以备誊录。如不敷用,照例行文国子监……秉公考试,务择字画端楷,咨送本馆以凭选取”可见对所有编纂、绘画、誊录人员都是经过严格选择或经考 试后择优录用的。
《医宗金鉴》经过三年时间完成,全书采集了上自春秋战国,下至明清时期历代医书的精华,共90卷,15个分册。有伤寒17卷、金匮8卷,名医方论8卷,四诊1卷,运气1卷,伤寒心法3卷,杂病心法5卷,妇科心法6卷,幼科心法6卷,痘疹心法4卷,种痘心法1卷,外科心法16卷,眼科心法2卷,针灸心法8卷,正骨心法4卷。
《医宗金鉴》图、说、方、论俱备,并附有歌诀,便于记诵,尤其切合临床实用。细读之有着十分明显的时代性,适应18世纪中国疾病谱 。例如公元17-18世纪,康熙、乾隆由于天花危害甚大,对太医院压力更大,因此,太医院在分科设置上也有明显的反映,如将痘疹作为一科从幼科中分立出来,在《医宗金鉴》中也单独成册,特别还将《种痘心法》作为一卷与幼科心法并列,可见对天花一病的专 门研究与防治得到了高度重视,促成幼科被分解为三科。另外,还有对正骨一科整理提高也十分明显 ,通过《医宗金鉴》的编纂,使中国历代相传的正骨理论与技术更加系统,更将宫廷上驷院绰班 (正骨) 处的丰富经验融为一体,使太医院正骨科与上驷院绰班处合并一处,理论与技术均得到提高 。
编纂完成后,乾隆看后十分满意,赐书名为《医宗金鉴》,正式确定该书名为《御纂医宗金鉴》,于1742年,以武英殿聚珍本与尊经阁刻本印行,在全国推广,影响巨大。1749年即被定为太医院医学教育的教科书,“使为师者必由是而教,为弟子者必由是而学”。
《医宗金鉴》逐步成为全国医学教与学的必读书、准绳。由于广泛之需求,政府与商家刻本印刷十分频繁,至今其版本流传已有50余家,平均4-5年即有一次新版本问世。这既是由于该书内容的丰富简约,深受读者喜爱。
2008年5月26日
火星人的耳机
原帖:http://www.joelonsoftware.com/items/2008/03/17.html
翻译:http://www.newsmth.net/bbstcon.php?board=Java&gid=108485
你们就要看到由web开发者挑起的网上“口水仗之母”了。它会让斯大林格勒战役看起来就好像是你的嫂子在下午茶时分冒着暴雨出门去你祖母家并把野马拴在树上一样。
这场即将到来的战役将由微软老兵Dean Hachamovitch挂帅。他正带队开发Internet Explorer的下一版,8.0。IE 8团队现在正在做一个决定,这个决定完美地,恰好地,精确地处在两种世界观的中间断层线上。这是保守者和变革者的分歧,这是“理想主义者”和“现实主义者”的分歧,这是一场巨大的划分家庭成员、工程师和计算机科学家以及凌志车和橄榄树的全球圣战。
而没有解决的办法。但它真的真的极富观赏性,因为99%的口水仗参与者不会去理解他们正在谈论的东西。这不仅仅是娱乐:对于每个需要设计交互式系统的开发者来说这是必读的。
这场口水仗将围绕所谓的“web标准”问题展开。我会让Dean来介绍一下这个问题:
所有的浏览器都有一个“标准”模式,称作“标准模式”,来提供浏览器对web标准的最尽力的实现。每个浏览器的每个版本都有它自己的标准模式,因为每个浏览器的每个版本都在提高对web标准的支持度。有Safari 3的标准模式,Firefox 2的标准模式,IE6的标准模式,IE7的标准模式,并且它们都不一样。我们想使IE8的标准模式比IE7的标准模式好得多得多。
整个问题取决于那个小小的决策:当IE8遇到一个声称支持“标准”,但可能只在IE7上测试过的网页时,它该怎么做。
标准究竟是什么玩意儿?
在各种各样的工程事业中难道没有标准吗?(不,有标准。)
难道这些标准都不起作用吗?(呃……)
为什么“web标准”这么混乱?(这不是微软一家的错。这也是你的错。还有Jon Postel(1943-1998),稍后解释)
没法儿弄。所有的解决办法都是错误的。Eric Bangeman在ars technica中写道,“IE团队不得不沿着一条羊肠小道,在支持W3C标准和确保现有的网站继续有效之间的小道中前进。”这句话说的不对。这不是一条羊肠小道。这是一条宽度是负数的道路。没有落脚的地方。无论他们做什么或是什么也不做,都会被人痛骂。
这就是为什么在这个问题上我没法选边站的原因,以后也不会。但是每个正在从业的软件开发者都应该至少理解,标准是如何生效的,标准应该如何生效,我们是怎么落到今天这个地步的,所以我想在这里试着解释一点这个问题,你会看到正是由于同样的原因,Microsoft Vista卖得这么清淡,而且这和我以前谈过的两阵营是同一个问题:Microsoft的Raymond Chen阵营(实用主义者)对MSDN阵营(理想主义者),MSDN阵营正在取胜,所以现在没有人能够知道他们最喜欢的菜单命令在Microsoft Office 2007里都跑哪儿去了,且没人要Vista。而这里则是一场相同的辩论:你是一个理想主义者(“红方”)还是一个实用主义者(“蓝方”)。
让我从头说起。让我们从思考如何让不同的东西搭配工作开始。
什么样的东西?随便一样,真的。铅笔和削笔器。电话机和电话系统。HTML网页和web浏览器。Windows用户界面程序和Windows操作系统。Facebook和Facebook应用程序。立体声耳机和立体声。
在两样东西的接合点,要遵守好多规则,不然配合不起来。
我来举个简单的例子。
想象你去了火星,在那里你发现火星人没有便携式音乐播放器。他们还在用大喇叭。
你意识到这是一个巨大的商机,开始卖便携式MP3(在火星上它们叫Qxyzrhjjjjukltks)和兼容的耳机。为了连接MP3和耳机,你发明了一个灵巧的插头,就像这样的:
因为你控制着播放器和耳机,你能保证你的播放器与耳机相配。这是个一对一市场。一种播放器,一种耳机。

也许你写了一个规范,希望第三方会制造不同颜色的耳机,因为火星人很挑剔塞在他们耳朵里的东西的颜色。
在你写规范的时候,你忘了说明电压应该是1.4伏左右。你只是忘了。所以第一家积极的制造商生产的100%兼容的耳机问世了,他的喇叭只设计为0.014伏,当他测试原型的时候,要么爆掉耳机,要么震聋人的耳朵,看哪一件先发生。然后他做了些调整,逐渐地做好了一个好耳机,只是比你的稍微难看一点。
越来越多的制造商展示兼容耳机,不久我们处在了一个一对多的市场。
到目前为止,情况还不错。我们有了一个耳机插头的事实标准。那个写好的规范并不完整,也不适当。但是任何想要生产兼容耳机的人都可以把耳机插头插到你的播放器里去测试,如果配合良好,一切都好,他们可以卖了,而且肯定可以用。
直到你决定搞个新版本,Qxyzrhjjjjukltk 2.0。
Qxyzrhjjjjukltk 2.0将附带一个电话(说明火星人也不能设计他们自己的手机),耳机将有一个内置的麦克风,这要求多一段触头,因此你重做了一个完全不兼容的插头,样子难看,有各种各样的扩展口:
Qxyzrhjjjjukltk 2.0在市场上完败。是的,它有非常不错的电话功能,但是没人在乎它。他们在乎的是自己大量的耳机收藏。我之前说火星人很挑剔塞在他们耳朵里的耳机,不是玩笑。大多数时尚的火星人在此刻有一整柜子各种各样漂亮的耳机。他们在你看来都一样(红色的),但火星人就是非常非常讲究红色的那种细微变化,这是你所永远无法想象的。最新的火星高级公寓都要标榜自己有一个耳机柜。我不骗你。
我们的新家伙不那么成功,而你迅速设计了一个新款:
注意,你在插头上多分了一段触头来处理麦克风信号,但麻烦的是,你的Qxyzrhjjjjukltk 2.1并不知道插进来的耳机是否有个麦克风,它需要知道这个信息才能决定是否启动电话功能。因此你发明了一个小协议……新设备在麦克风针脚上输出一个信号,在地线针脚上检测这个信号,如果有,它一定是3段式插头。否则说明没有麦克风,于是你会进入到兼容模式,只播放音乐。很简单,但这是一个协议磋商。
现在已经不再是一个一对多的市场了。所有的立体声设备由一个厂家制造,一个版本接着另一个版本,因此我要称之为系列对多的市场:

下面是一些你已经知道的系列对多的市场:
- Facebook | 约 20,000 个Facebook 应用
- Windows | 约 1,000,000 个Windows 应用
- Microsoft Word | 约 1,000,000,000 份Word文档
还有几百个其他的例子。要记住的是,当左手边的设备的新版本发布时,它必须保持自动向后兼容所有右手边的老的附件,因为那些老的附件在设计的时候可能不会考虑要连接新设备。火星人的耳机已经造出来了。你不可能回去把它们都改了。相比之下,改变新发明的设备以使其在连接旧耳机时表现得像个旧设备,
要容易得多,也更合常理。
因为你想要进步,增加新的特性和功能,你也需要一个新的协议让新的设备使用,合乎常理的做法是让两种设备在一开始时协商一下来确定它们是否都理解最新的协议。
微软是在系列对多的世界里成长起来的。
但还有一个多对多市场。
又过了好多年;你还在像疯子一样卖Qxyzrhjjjjukltk;但如今市场上有很多克隆的Qxyzrhjjjjukltk,比如开放源码的FireQx,还有很多耳机,你不断地发明需要改变耳机插头的新特性。这使得耳机制造商快发疯了,因为他们必须在每一种克隆Qxyzrhjjjjukltk上测试他们的新设计,这又耗时又费钱。并且老实说,他们中的大多数没有时间,只是在最流行的 MP3 5.0 上测过。如果测试通过,他们就很高兴。但是,当然了,当你把耳机插到 FireQx 3.0 时,它在你手里炸了,只是因为轻微地误解了规范里一段晦涩的、没人真正明白的内容,这段内容叫 hasLayout。人人都可以理解,当雨天时,hasLayout属性是true,电压会提高以支持挡风玻璃雨刷特性,但是对冰雹和下雪天是否也作为雨天来启用haslayout似乎存在一些争论,因为规范里没有说。FireQx 3.0 把雪天也当作雨天,因为下雪的时候你也需要雨刷,Qxyzrhjjjjukltk 5.0不这样,因为开发这个特性的开发员生活在火星上一个温暖的不下雪的地区,也没有驾照。是的,他们在火星上没有驾照。
最终一些讨厌鬼在他们的blog上写了一些长篇大作,详细解释了一个技巧,你能利用它来使Qxyzrhjjjjukltk 5.0表现得像FireQx 3.0一样。这个技巧利用了 MP3 5.0 里的一个高级bug来欺骗Qxyzrhjjjjukltk:通过融化一点点雪,让它在下雪的时候也以为是下雨。这很荒谬。但人人都在这么做,因为他们必须解决 hasLayout的不兼容。后来,Qxyzrhjjjjukltk团队在6.0中修正了这个bug,你再一次抓狂,你不得不去找某个可利用的新的bug来让装备了风挡雨刷特性的耳机可以适用于这两种设备。
现在。这就是多对多市场。左边有许多播放器各不相同,右边有数以亿计的耳机。两边都在犯错误,因为是人总会犯错。
不用说,这就是我们在面对HTML时的相同处境。几十种通用浏览器,亿万网页。
多年来,在多对多市场上发生的事情,就是呼吁“标准”,这样“所有的播放器”(特别是那些小播放器)都有同样的机会可以去正确显示所有8亿个网页,更重要的是,那8亿个网页的设计者们只需在一个浏览器上测试,只要遵照“web标准”,他们的网页在其它的浏览器上也能行,而无需在每个浏览器上测试每个网页。
看到了吧,想法就是,不是多对多的去测试,而是多对标准,标准对多的去测试,你的测试少了可不止一点点。更不要说,你的网页再也不需要任何针对特定浏览器的代码去解决不同浏览器的bug,因为在这个理想世界里,没有bug。
那就是理想。
实际上,web还有点小问题:没法去对照标准测试一个网页,因为没有任何参考实现(Reference Implementation)来保证,如果它没问题,所有的浏览器都没问题。就是不存在这样的参考实现。
所以面对一堆你没读过的,或者读了也不能完全理解的标准文档,你只能去用你的头脑去“测试”,纯粹作为一种思维实验罢了。
那些文档超级难懂。文档里充满了诸如这样的句子:“如果一个兄弟块框(它不漂浮且不是绝对定位的)跟着一个插入框,插入框将变成块框的第一个行内框。一个插入框不能插入另一个块,如果那个块已经以一个插入框开始或是它自己就是一个插入框。”每当我读到这样的句子,我纳闷,怎么有人能以正确的遵从规范。
没有可行的方法来检查你刚写好的网页是否符合规范。是有些校验器(Validator),但它们不会告诉你这个网页会被如何显示,一个把所有的文字叠在一起看不清的,但是却是“有效的”网页也没什么用处。人们所做的只是针对某个或某两个浏览器去检查,直到它看起来正常。假如他们犯了一个错,但是在IE和Firefox里看起来没问题,他们也不会知道自己犯了错。
当新出来一个浏览器/或版本时,他们的页面可能就看不了了。
如果你曾经访问过耶路撒冷最传统的犹太人社区,那里所有的人都完全同意并严格遵守犹太法里的每个字词标点,你会发现除了对哪些是干净的食物有一般的规定之外,你并不会看到一个来自某个传统社区的祭司会希望在另一个传统社区的某位祭司家里吃东西。而web设计者们正在发现Mea Shearim的犹太人几十年前就知道了的道理:不会仅仅因为你们都同意一本书就能保证兼容性,因为法律是如此复杂,难懂,绕圈,几乎不可能对它们有足够的理解以避开陷阱和地雷,你还是直接要水果盘吧,比较安全。
当然,标准是一个伟大的目标,不过在你变成一个标准迷之前,你必须要理解,由于人类的弱点,标准有时会被错误地解释,有时会令人困惑,甚至模棱两可。
这里真正的问题是,你在假设,有一个标准,但是由于没有人有一个方法去对照标准进行测试,这不是一个真正的标准:它是一种柏拉图式的理想和一系列的误解,因此标准并不能如人民希望的那样减少在多对多市场上的测试矩阵。
DOCTYPE是一个神话。
一个web设计者挂了一个DOCTYPE标签到他的网页上,说,“这是标准的HTML”,这是一种很傲慢的举止。但他们不会知道。他们要说的只不过是这个网页应该是一个标准的HTML而已。他们所真正知道的只不过是他们已经在IE、Firefox,也许还有Opera和Safari上测试过,看起来正常而已。或者是,他们从一本书上把DOCTYPE标签拷出来,却并不知道这意味着什么。
在真实世界里,人们不是完美的,你不可能只用一个规范就建立一个标准——你必须有一个超级严格的参考实现,每个人都只对照这个参考实现去测试。要不然,你会得到17份不同的“标准”,或者一份也没有。
这就是Jon Postel在1981年引起的问题所在,那年他造了一个新词,健壮性原则:“严于律己,宽以待人”。他说要让协议牢靠地工作的最佳方法是,人人都非常非常小心的遵守规范,但同时对别人,如果他没有严格遵守规范,要极度宽容,只要你能体会出他的意思就行。
所以,从技术上说,要显示一段小字段落的方法是<p><small>, 但是很多人写成<small><p>,这从技术上来说是不对的,至于为什么,大多数web开发者也都不理解,而web浏览器原谅了这种写法,把文字变小,因为这显然是他们想要的。
现在,到处是充满了这些错误的网页,因为所有的老浏览器开发者们开发出了超级开明,友好,通融的浏览器,它们爱你,不在乎你是否犯了错误。这样就出现了大量的错误。Postel的“健壮性”原则并非真正可行。这个问题多年来都没人注意到。2001年,Marshall Rose最后写道:
跟直觉恰恰相反,Postel的健壮性原则(“严于律己,宽以待人”)常常导致部署出现问题。为什么?当一个新的实现最初发布时,它可能会碰到一些现有实现的一个子集。如果那些实现遵从健壮性原则,那么新实现中的错误很可能不会被察觉。新的实现接着会碰到一些流传不是很广泛的部署。好些新的实现重复着这个过程。渐渐地,不是那么正确的实现跑进那些比最初的实现要少些宽容的实现里。读者该知道接下来会发生些什么。
Jon Postel 理应为他对互联网的发明所做的巨大贡献而骄傲,实在是没有理由为他那非著名的健壮性原则而责怪他。1981年还是史前时期。要是你能告诉Postel,会有9千万未受训的人(而不是工程师),去创建网站,他们会干很多乱七八糟的事情,而某种被误导的慈善,使得早期的浏览器开发者接受了这些错误,总会显示这些网页,他就会明白,这是个错误的原则。而实际上,web标准理想主义者是对的。创建web的正确的方法,本应该是有一个非常非常严格的标准,每一个浏览器都应该明确指出你所有的错误,web开发者如果不知道如何“严谨地提交”,就不要去写到处出现的网页,除非知道怎么做。
但话说回来,如果真是那样,web就不会像它现在这样起飞。也许,我们还会用着由AT&T运营的巨大Lotus Notes网络。抖!
该怎样会怎样能怎样。谁会在意。都已经这样了。我们无法改变过去,只能去改变未来。见鬼,即使是未来,我们能改变的也没多少。
如果你是Internet Explorer 8.0团队里的一名实用主义者,你的脑皮层里应该深深地烙有Raymond Chen的这些话。他写过一些Windows XP是如何无奈地去模拟老Windows版本里的一些bug行为的文章:
站在消费者的角度来看这个问题。你买了些软件,有X,有Y,还有Z。后来,你升级到Windows XP。你的电脑现在时不时死机。而软件Z根本用不了。你会告诉你朋友:“别升级到XP!经常死机。与软件Z也不兼容。”你会去调试你的系统以确定是软件X导致了死机,而软件Z用不了是因为它用了未公开的window消息吗?当然不会。你会去把XP退货了(你的X,Y,Z软件是几个月前买的,已经过了30天退货期了,你唯一可以退的是XP)。
你也在思考了吧,嗯? 让我们为这段话更新一下版本吧:
站在消费者的角度来看这个问题。你买了些软件,有X,有Y,还有Z。后来,你升级到Windows
XPVista。你的电脑现在时不时死机。而软件Z根本用不了。你会告诉你朋友:“别升级到XPVista!经常死机。与软件Z也不兼容。”你会去调试你的系统以确定是软件X导致了死机,而软件Z用不了是因为它用了不安全的window消息吗?当然不会。你会去把XPVista退货了(你的X,Y,Z软件是几个月前买的,已经过了30天退货期了,你唯一可以退的是XPVista)。
微软内部理想主义者对实用主义者的胜利,我2004年就报道过了,直接解释了为什么Vista收到一片恶评,并且销售惨淡。
而这些话又是如何说到IE团队身上的呢?
站在消费者的角度来看这个问题。你每天访问100个网站。后来你升级到IE 8。一半的网页显示混乱,Google地图根本用不了。
![]()
你会告诉你朋友:“别升级到IE 8! 所有的网页都显示得乱七八糟,Google地图根本用不了。”你会去查看源代码以确定X网站使用了非标准的HTML,而Google地图用不了是因为它使用了老版本IE里提供却从未被标准委员会接受的非标准JavaScript对象吗?当然不会。你会把IE 8卸了(那些网站不是你控制的,有些网页的开发者现在已经不在人世了。你唯一可以做的事情就是退回到IE 7)。
所以,如果你是IE 8团队的一个开发者,你首先要做到的是在系列到多市场上屡试不爽的事情。你们会做一些协议层的协商,对那些没有明确告诉你它们期待新行为的站点,继续模拟以前的行为,这样所有的现有网站继续可以用。你只会在那些在网页上写了一个小标记,说:“嗨!我与IE 8神交!来吧,请给我你的所有新货!”的时候,才会看到新行为。
实际上,那曾经是IE团队宣布的第一个决定,时间是1月21日。浏览器会自动考虑到现有网页,人们不必去修改网站以使它们能像在旧版本的、bug多多的被web开发者痛恨的IE 7里的那样。
一个实用主义的工程师会下结论,说IE团队的最初决定是正确的。但年轻的理想主义者“标准”人们受不了了。
他们说,IE需要提供一个web标准体验,而不必要求写一个特殊的“嗨!我已经在IE 8下测试过了”标签。他们对特殊标签感到恶心。所有这些该死的网页不得不写37个丑陋的hack以使它能够在5到6个流行的浏览器里可用。受够了这些丑陋的hacks!8亿个现有的网页,下地狱吧!
IE 团队掷了硬币。他们的第二个决定,我必须认为这不是最后的决定,是去做理想主义者的事。对所有声明“标准兼容”的网页,都认为它们是为IE 8设计的,并已经测试过了。
在我用IE 8访问过的几乎所有网站,都会有某种形式的失效。用了大量JavaScript的网页一般来说都彻底死翘。大量的网页只是有显示上的问题:比如内容跑到别的地方了,弹出菜单的中间会有个滚动条压着。有些站点有些更微妙的问题:它们看起来还行,但你点着点着,一些关键的表单却提交不了了,
或直接跑到了一个空白页。
这些并不是有错误的网页,它们通常是遵照web标准精心构建的网站。但由于IE 6, IE 7并非真正符合规范,因此那些网站里有一些hacks,比如说“在Internet Explorer上……把这个东西向右移17像素以补偿IE的bug”。
而IE 8还是叫IE。但已经没有了IE 7的bug,他们遵照规范把那个曾经左偏17像素的东西移了。所以现在,那些曾经的补偿都没用了。
IE 8无法正常显示大多数网页,直到你放弃,单击那个“像IE7那样做”的按钮。
理想主义者不在乎这些,他们要的就是让你去改那些网页。
那些网页中的一部分已经没法改了。它们可能刻在了CD-ROM上。它们的作者现在已经不在人世了。大部分的网页都是那些现在不知所措的人创建的,为什么这些网页,4年前花钱雇一个设计师开发的网页,现在看不了了呢?
理想主义者欢欣鼓舞,他们去IE团队的blog上,有生以来第一次为微软说了好话。
我看着我的表。
滴答,滴答,滴答。
几秒钟内,你开始看到有人在论坛上这么发贴:
我下载了IE 8,有些bug。我的一些网站,比如"HP",读起来非常困难,因为页面变得非常非常小……我的网速也时不时会慢一下,我去google地图,页面上到处都是重叠的东西,真难用!
嗯。你们这些沾沾自喜的理想主义者,嘲笑这只菜鸟。顾客不是傻子。她是你妻子。不要嘲笑了,98%的人会装IE 8,然后说“有bug,我看不了我的网页。”他们不会为了你们这些愚蠢的对开发一个合乎有点神话般的,柏拉图式的规范的浏览器有着宗教般狂热的人打响指。而这个标准并没有在任何一个地方被实现过。理想主义者不想听你们讲那些肮脏的hacks。他们只希望web浏览器只接受真正的网站。
看到了吧,这是个多么可怕的例子,说明了两个阵营之间的鸿沟。
web标准阵营看起来是左翼的。但你要真的开发了一个网页,声称符合标准,而事实上却不是,理想主义者就会变身为美国最严厉的州长Joe Arpaio:“你犯错了,活该你的网站看不了。我不在乎你的80%的网页都看不了了,我会把你们全都关进监狱。在那里你们会穿上粉红色的囚裤,吃15分钱的三明治,排队干活。而且我并不在乎把整个郡的人都扔进监狱。法律就是法律。”
另一方面,我们有实用主义者、敏感的、热心的、温柔的工程类型。“我们不能默认为IE 7模式吗?只用1行代码……打包!解决!”
是秘密吗?这就是我思考的会发生的事情。IE 8团队会告诉每个人IE 8默认会使web标准,在漫长的beta测试期内,他们会请求人们在IE 8里测试他们的网页,并让它们正确运行。当他们临近发布时,世界上只有32%的网页可以正确显示。
他们会说,“看,伙计们!我们真的很抱歉,我们真的想让IE 8默认使用web标准模式。但我们没法发布一个不能用的浏览器。”他们会回到实用主义者的决定上来。也许他们不会,因为实用主义者离开微软权力层已经有些时日了。如果是这样,IE 会失去很多市场份额。但理想主义者会雀跃,或许Dean Hachamovitch的年终巨奖也不会少一分钱。
看到了吗?没有正确答案。
通常,理想主义者在道理上是100%的正确;通常,实用主义者在现实里正确。口水仗会持续数年。这场争论把世界分成两半。如果你有办法可以买到互联网口水仗的股票,现在是一个不错的入市时机。
2008年5月22日
“汉龙希望小学”的教学楼为什么没有垮
“打扰您了,可以负责的告诉你,绵阳五所希望小学建设均由我经办,而此次大地震未能撼动一幢,巍然屹立!师生未损毫发!请你来绵阳做客! ”
如果那天邓家小学像北川一中那样在几秒钟内就被震垮,后来的成为传说的长途翻越也就不存在,那天一个学生都没有死,甚至没有什么重伤,我了解到,那座十年来正式名字叫“汉龙希望小学”的教学楼不仅楼没有垮,奇迹是,连教学楼正面那块长十几米、高三层楼的玻璃幕墙一小块都没有碎,与在这场大地震学校教学楼动辄压死几百名学生相比,这是一个奇迹,我很好奇,这是谁修的房子?
于是我知道一个叫“汉龙集团”的公司,它是在十年前出资捐赠邓家小学的企业,老板叫“刘汉”,总经理叫“孙晓东”,经办监理学校修建工程的人是当时的集团办公室主任,学校里很多人在谈及这场幸运的逃生时,都在感谢这位监工的“办工室主任”,昨晚我找到这位办公室主任,他讲了一些故事,但坚决不让我透露他的姓名,也不要表扬他,因为他不想引起不必要的麻烦。因此下面我只能用X先生来代指为什么“汉龙希望小学”在这次大地震中成为唯一没有压死学生的学校?或者说奇迹最开始的一步是什么,我得知以下内情:
一、十年前,刘汉和孙晓东对下属X先生说,“亏什么不能亏教育,这次你一定要把好质量关,要是楼修不好出事了,你就从公司里走人吧”。
二、十年前一天,监理工程的X发现施工公司的水泥有问题,含泥土太多,因为X曾经是生产水泥的一家公司的副老总,经他手灌注的水泥至少有五十万吨,是绝对的行家,所以他要求施工公司老总必须把沙子里的泥冲干净,也不能用扁平的石子,从建筑专业而言,扁平石子混在水泥灌注过程中是灾难,水泥结实度大打折扣,他对施工队大发雷霆,愣让他们把沙子里的泥冲干净,把扁平石头全部拣走。
三、一次会议中,他在追问工期拖延时,发现施工公司负责人眼神不对,才得知原来是有关方面的款项没有及时到位。按捐赠原则,企业捐款必须先到当地有关部门,再由有关部门把企业的钱下发到具体施工公司中去,但施工公司并没有从有关部门及时拿到钱(具体人们想必都能猜到,这可是中国式惯例),于是X先生又发火了,穷追不舍,终于让款项到位。
四、在奠基仪式上,由于某个原因工期又得拖延,X又发火了,他找到有关部门,据理力争,9月19日,学校终于平出一块崭新漂亮的操场,他说看到那块操场铺平后很开心,而那块操场,就是十年后483名学生逃生的地方。
那段时间人们总能听到X在吵架,在发火,在追款项,当我对他核对这个事实时,他要求我一定要在“吵架”上加上引号,否则引起不必要的麻烦。
我想我已没必要说得太多,一个深知捐赠中国希望小学潜规则的人士说,虽然学生们全部逃生是个奇迹,但汉龙集团的X先生能够通过“吵架”把钱“吵”到正规用途上更是个奇迹,在往常,吵架根本没用,钱还是不能够及时到位……(这里恕我暂时不能直言)
由于X先生反复叮嘱我不能写他的名字,所以我们在邓家“汉龙希望小学全部成功逃生”的故事后,就只能记住以下名字:刘汉、孙晓东、肖晓川、吴少先、陈世荣,罗中会,母贤莹,沈长树,赵义辉,母广兰,吴明艳。
刚才,X先生给我发来一则短信,未经他同意,我就刊发在我博上,目的是让有的人有的部门看看,也提醒以后有人想修希望小学的人看看:
打扰您了,可以负责的告诉你,绵阳五所希望小学建设均由我经办,而此次大地震未能撼动一幢,巍然屹立!师生未损毫发!请你来绵阳做客!
2008年5月20日
感谢秘鲁政府
出处:http://www.cntcm.org/cgi-bin/topic.cgi?forum=33&topic=6112
秘鲁政府16日颁布最高政令,宣布5月19日为“全国哀悼日”,以悼念中国在汶川地震中的遇难者。这是秘鲁第一次为外国遇难者宣布“全国哀悼日”。
由秘鲁总统加西亚、政府总理德尔卡斯蒂略以及外交部长、司法部长和劳工部长共同签署的最高政令说:“2008年5月12日发生在中国的强烈地震,不仅是这 个亚洲国家的灾难,也是全人类的不幸。秘鲁政府对如此惨重的人员伤亡表示哀悼,将宣布5月19日为全国哀悼日。”
根据这项政令,在哀悼日,秘鲁高级官员将通过中国驻秘鲁大使馆向中国地震中的死难者志哀,全国所有政府机构、军事设施、警察机关,以及所有秘鲁在国外的外交机构都将降半旗。
全世界第一个为中国灾民降半旗的国家。秘鲁16日宣布,中国18日宣布,缅甸19日宣布......
感谢秘鲁,让我们知道原来国旗是可以为普通人降的,此前仅为帝王将相。
秘鲁在一定程度上促使我们的政府也首次为平民下半旗悼念,确实应该谢谢他们。
秘鲁这次是 对中国地震遇难生灵的极大尊重,同时也是对中国政府的督促。
中国的进步离不开国际社会的示范作用。
转载:网易公司声明将停止与中国红十字总会的合作
前几天,网易公司声明将停止与中国红十字总会的合作,理由是对方不接受网易在线捐赠系统。
评论:或许,我们当初也应当把钱捐入“廖冰兄人文基金”,而不是什么“中国红十字会总会”。
2008年5月19日
震云
出处:http://www.scmbbs.com/cn/othertp/2008/5/othertp46.php
- 什么是震云
您可能不信,早在17世纪中国古籍中就有“昼中或日落之后,天际晴朗,而有细云如一线,甚长,震兆也”的记载,1935年我国宁夏的隆德县《重修隆德县志》中记载有“天晴日暖,碧空清净,忽见黑云如缕,婉如长蛇,横卧天际,久而不散,势必为地震” 之语。
但是,世界各国对于地震云的研究还是最近几年的事,其中以我国和日本处于领先地位,我国对地震云的研究始于1976年唐山大地震之后,目前成功的例证有十余个,日本利用地震云预报地震成功的例证有上百个,有趣的是,首先提出“地震云”这个名字的不是地震学者,而是一政治家,他就是日本前福冈市市长键田忠三郎,他曾经亲身经历过日本福冈1956年的7级地震,并且在地震时亲眼看到天空中有一种非常奇特的云,以后只要这种云出现,总有地震相应发生,所以他就把这样的云称为“地震云”。
- 震云分类
那么,什么样的云才是地震云呢?这种云的最大特点在于“奇”,与一般的云有着明显的区别。
- 蔚蓝的天空中有时会留下一条飞机的尾迹,常见的条带状地震云很像飞机的尾迹,不过更加厚实和丰满些,它一般预示震中处于云向的垂直线上。
- 另外有一种辐射状的地震云,则有数条的带状云同时相交在一点,犹如一把没有扇面的扇骨铺在空中,云的交点垂直于地面就是震中所在地。
- 此外还有一种条纹状地震云,形似人的两排肋骨,根据此云判断震中较为复杂。
地震云出现的时间以早上和傍晚居多,地震云持续的时间越长,则对应的震中就越近,地震云的长度越长,则距离发生地震的时间就越近,地震云的颜色看上去越令人恐怖,则所对应的地震强度就越强。
- 震云图片
条状震云
扇状震云
排骨状震云
Visual Studio解决方案(.Sln)和Wise安装脚本(.Wse)的命令行编译
这两天正忙于项目的验收提交工作,哎,我们公司有个近乎变态的规定:阁下提交的项目文件、安装文件要由项目无关的人员,甚至是完全不懂技术的人员按照编译说明进行编译。为简化编译过程,同时也为减少麻烦,俺决定编写批处理文件来搞定这一切。以下是需要注意的内容:
- 编译.Sln
这个不用说了,.Sln是Visual Studio的解决方案文件,编译的时候只需要安装.Net Framework后就可以使用MSBuild可编辑.Sln文件。不过按照官方的文档说明,MSBuild目前只支持7.0~9.0版本(即Visual Studio 2002~2005生成)的.Sln文件。如果你用的是Visual Studio2008,需要做以下处理:
- 手动将.Sln文件头中的“Microsoft Visual Studio Solution File, Format Version 10.00”改成“Microsoft Visual Studio Solution File, Format Version 9.00”。
- MSBuild还无法认出.csproj文件中的“<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />”,得将其中的“$(MSBuildToolsPath)”改成“$(MSBuildBinPath)”。
- 编译.Wse
.Wse是Wise Install System工具的项目文件(即安装脚本),原来一直以为只能通过Wise的GUI来进行手动编译,查了它的帮助文件后发现在命令行中亦执行编译命令。下面的内容摘自Wise自带的帮助文件:
补充说明
根据“buxiangliumingzi ”网友的提示,发现其实Framework 3.5中的MSBuild支持Visual Studio 2008生成的.Sln和.csproj项目文件。
地震专家欲哭无泪
中国科学院工程地质力学重点实验室 李世煇
在西方现代科学技术主导下,破坏性地震(5级以上)的预报,特别是临震预报是不可能的。这是国内外地震界主流的共识。从这个角度看,42年前的唐山地震和今天的汶川地震都是不能准确预报的。凤凰卫视“有报天天读”提到:有的报纸说唐山地震是“三分天灾,七分人祸”;“时事辩论会主持人说:如果唐山地震时不拒绝外援,不会死几十万人。这些是看法不符合实际。实际情况是,如果尊重中西文化优势互补的科学家的意见,这些灾难倒是可以避免的。请参阅本人博客上转载的有关文章。
在中国,一批(1970年代)年轻的中国地震工作者学习中国传统文化的精华(包括充分利用历史文献记载和“取象比类”的方法等),取得遥遥领先国际的科研成果。例如,耿庆国根据历代(包括1956-1970年)大旱与地震关系的统计,发现“6级以上大地震的震中区,震前1-3.5年往往是旱区。旱区越大,干旱时间越长,相应的震级越高”的统计规律(公元512年-1879年中国大旱后2-3.5年,发生了7次7.5-8级大地震)。1972年耿庆国提出“旱震关系大地震中期预报方法”,根据这一规律,耿庆国预报了1975年的海城地震,特别是1976年的唐山地震。在1980年代出版了专著《中国旱震关系》(科学出版社)。这些成果触犯了地震界当权者的利益,耿庆国被调出预报队伍,去了地震报社。
今天,2008年5月12日,听到四川汶川发生7.8级强震,中国的地震科学家耿庆国欲哭无泪,心里在流血。2006年他根据旱震关系提出中期预报,近年阿坝地区将发生7级以上地震。4月26日和27日中国地球物理学会下属的“天灾预测委员会”上,以委员会的名义,作出“在一年内(2008.5-2009.4)仍应注意兰州以南,川、甘、青交界附近可能发生6-7级地震”的预报(文字报告已报中国地震局等,4月30日密件发出),而且,根据强磁暴组合,明确提出“阿坝地区7级以上地震的危险点在5月8日前后10天以内”(以上地震预报三要素均已明确)。明明是国宝,却受到当权的主流地震科学家的排斥,只能靠微薄的退休费坚持搞科研。可惜这位退休的地震科学家的话,没有起到作用。
我的感觉是满腔悲愤。什么时候耿庆国、汪成民、任振球、王迪兴等一批国宝才能不受排挤,放开手脚为振兴中华效力呢?
摄于2006年12月17日“从海诚地震到青龙奇迹研讨会(第20次天地生人学术会议)”会前,左为耿庆国,右为汪成民,中为李世煇。