“在我还很小的时候,每天晚上睡觉之前母亲都会给我念一些UPDATE查询。我听了很多很多关于如何将对象更新到数据库的故事,其中绝大部分都是如此的老土……因此,我也带着类似的更新对象到数据表的想法逐步成长,和其它的同龄人没什么两样。所有的UPDATE语句都包括所有的字段,而存储过程都要获取对象的所有属性。”
看完这段,估计大家都明白作者接下来要踩踩代码生成器或ORM工具所生成的全字段通用UPDATE了。
“到此为止,你还觉得你真的懂UPDATE语句吗?再想清楚一些吧。”这是作者最后讲的话。如果你想真正“学习”一下UPDATE语句,那就模仿他的做法把你日常所用的UPDATE语句放到查询分析器里看看还有什么地方可优化的吧。
还有,如果IE/Mac也是你的设计所要兼容的浏览器的话,就要看看“关于IEMac的小问题”这一节了。因为IE/Mac的呈现引擎与IE/Win完全不同,显得更加标准,所以完全不知道hasLayout为何物,因此在使用上述技巧时应该避免“错误命中”IE/Mac。
“MSDN文档”摘录了来自MSDN本身的话,简单解释了一下为什么hasLayout的元素会如此特别。因为当一个元素hasLayout时,它必须是一个矩形区域,同时它负责自己内部所有元素的大小与定位。理论上每一个元素都hasLayout时,所有的元素定位都是最准确的,然而这导致计算复杂度增加,IE的执行效率降低到无法接受的程度,因此IE设计为只有特定条件才会触发一个元素hasLayout。而hasLayout也不意味着一个元素完全符合标准地呈现,例如它要求此元素绝对是矩形,而容纳有float属性元素的父元素就不是矩形了,它让开了一些位置给有float属性的元素,如果这个父元素hasLayout了呈现出来也就不符合标准了。
“分析”一节简述了作者对hasLayout的理解,作者认为hasLayout是一个内部的标志位,一旦被设置该元素就好像一个独立的小窗体一样,负责自己内部的呈现。
“堆叠、分层与layout”这一节补充说明了hasLayout对分层的影响。所谓的分层,就是指z-index所能影响的东西,当多个矩形区域存在重叠范围时,应该哪个覆盖哪个。之后的“混乱的contenteditable”、“与CSS规范的相似性”、“Quirksmode”几节都描述了类似的与hasLayout有关的其它问题。
DinnerNow.net实际上是一个虚构的在线订餐网站。你可以在上面订餐,然后Workflow就开始了,从烹调开始,到上路运输,都是Workflow的状态,而作为订餐者你可以网站上追踪到状态的更新。如果你不想开着浏览器,你还可以将DinnerNow.net的WindowsVistaSidebarGadget添加到你的Sidebar,从而直接在Gadget上了解你的订单状态。又或者你根本就不在PC前,使用WindowsMobile设备同样可以访问DinnerNow.net。
DinnerNow.net还有很多值得研究的地方等着大家去挖掘,大家有兴趣的话就去下载一个来研究研究吧。因为现在DinnerNow.net才刚刚放出来,所以网上的研究资料可能非常有限,特别是中文资料还没有人写,所以研究起来或许会有一定的难度。