<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-368715695002753550</id><updated>2011-11-27T16:49:24.083-08:00</updated><title type='text'>大坡3D软件开发</title><subtitle type='html'>专门从事C＋＋软件开发培训，从事3D软件开发培训，从事VC＋＋软件开发培训等等。</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://supersoftmm3d.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://supersoftmm3d.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>蔡康怡</name><uri>http://www.blogger.com/profile/17714044082004899851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>41</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-368715695002753550.post-5361331387816031170</id><published>2009-01-14T21:58:00.001-08:00</published><updated>2009-01-14T21:58:32.440-08:00</updated><title type='text'>Google发现的十大真理</title><content type='html'>Google的价值观：永不满足，力求最佳&lt;br /&gt;&lt;br /&gt;Google 创始人之一 Larry Page 指出：“完美的搜索引擎需要做到确解用户之意，切返用户之需”。就搜索技术的现状而言，我们需要通过研究、开发和革新来实现长远的发展。Google 致力于成为这一技术领域的开拓者。尽管 Google 已是全球公认的业界领先的搜索技术公司，但其目标是为所有信息搜寻者提供更高标准的服务，无论用户是坐在波士顿的台式机旁，还是正在驾车穿过波恩，或是漫步在曼谷街头。&lt;br /&gt;&lt;br /&gt;为了实现这个目标，Google 一直在孜孜不倦地追求技术创新，突破现有技术的限制，随时随地为人们提供快速准确而又简单易用的搜索服务。&lt;br /&gt;&lt;br /&gt;1. 以用户为中心，其他一切纷至沓来。&lt;br /&gt;&lt;br /&gt;创建伊始，Google 即以提供最佳的用户体验为其中心任务。虽然很多公司主张客户利益优先，但难以抗拒各种诱惑，往往会牺牲客户的少量利益来增加股东价值。 Google 的一贯态度是：如果所做的更改不会给网站访问者带来任何优势，则将坚定不移地予以拒绝：&lt;br /&gt;&lt;br /&gt;界面清晰易用；网页加载迅速；绝对不出售搜索结果中的排名位置。&lt;br /&gt;在网站上刊登的广告应提供相关的内容，且不会影响用户的体验。&lt;br /&gt;Google 始终秉持着用户第一的理念，因而从网上赢得了最忠诚的用户群体。用户群体的增长并不是通过电视广告活动，而是通过用户的交口称颂来实现的。&lt;br /&gt;&lt;br /&gt;2. 最好的方式是将一件事情做到极致。&lt;br /&gt;&lt;br /&gt;Google 要做的就是搜索。Google 不做星座预测，不做财经咨询，也不做聊天。而是带领着世界上最大的研发队伍，心无旁骛地攻克搜索问题。Google 知道自己擅长什么，也知道如何可以做得更好。通过持之以恒地对难题进行反复的探索，Google 始终能够解决困扰他人的复杂难题，并不断地改进已被公认为网上最佳的服务。借助于 Google 错别字改正程序以及 Google 工具栏等创新工具（通过后者用户可以从任何一个网站进行 Google 搜索）使得数百万用户能够享受到快捷、完美的信息搜索体验。Google 的全体员工均专注于创造“完美的搜索引擎”，并为实现此目标而孜孜不倦地努力工作。&lt;br /&gt;&lt;br /&gt;3. 快比慢好。&lt;br /&gt;&lt;br /&gt;Google 相信瞬间带来的喜悦。您需要解答的时候，是希望马上会得到解答的。这点是勿庸置疑的吧？ Google 可能是世界上唯一一个努力让其用户尽快离开自己网站的公司。Google 执着地消减自己网页上的每一个多余的比特和字节，不断地提高服务环境的效率，并一次次地打破自己创造的速度记录。其他人认为大型服务器是处理海量数据的最快捷方式。但 Google 却发现联网的 PC 机速度更快。在他人已接受搜索算法所决定的明显速度限制时，Google 却写出了新的算法，证明了速度无限的真理。 Google 一直在不断地努力，让速度再快一点。&lt;br /&gt;&lt;br /&gt;4. 网络需要民主的作风。&lt;br /&gt;&lt;br /&gt;Google 之所以成功，原因在于它依赖数以百万计的向网站发布信息的用户来确定哪些网站提供的内容具有价值。Google 不依赖一组编辑人员或仅仅根据某个词汇出现的频率来为每个网页评级，而是采用一项突破性技术，即 PageRank™。PageRank 对一个网页所链接的所有网站进行评估，为它们分配一个值（在一定程度上参照了与相应网站链接的网站）。通过分析网络的整体结构，Google 能够确定哪些网站被最对其信息感兴趣的用户“投票”评为最佳信息来源。随着网络规模不断增长，每一个新网站将成为另一个信息点，同时也是要记入的另一张选票，该技术也会不断地得到改善。&lt;br /&gt;&lt;br /&gt;5. 您不必坐在台式机前也能获得所需的答案。&lt;br /&gt;&lt;br /&gt;世界的流动性越来越强，人们很难再局限于一个固定的角落。无论是通过 PDA，还是无线电话，甚至是在汽车里，人们都希望随时获得所需的信息。Google 在这一领域开发了多种创新技术，其中包括 Google Number Search。通过这一技术，人们从具有上网功能的手机以及即时转换系统（将以 HTML 格式编写的网页转换为手机浏览器可以读取的格式）上查找数据时，可以大大减少键击次数。借助于这一系统，人们能够从 Palm PDA、Japanese i-mode、J-Sky 和 EZWeb 等原先不能显示网页内容的设备上打开数十亿个网页，以查看网页内容。尽管搜索引擎在任何地方都可以帮助用户找到所需的信息，但 Google 仍然在不断地探索新技术和提供新的解决方案。&lt;br /&gt;&lt;br /&gt;6. 您可以通过正当途径赚钱。&lt;br /&gt;&lt;br /&gt;Google 是一个企业。它通过以下两种方式来获取收入：向其他公司提供搜索技术；向广告客户提供在 Google 或网络的其他网站上刊登广告的服务。然而，您可能从未在 Google 上看到过广告。这是因为，除非广告与所显示的搜索结果页内容相关，否则 Google 不允许在我们的搜索结果页上展示任何广告。因此，只有某些搜索才会在搜索结果的上方或右侧显示赞助商链接。Google 坚信，仅当广告与您要查找的内容相关时，才会为您提供有用的信息。&lt;br /&gt;&lt;br /&gt;Google 同样也证明了广告不必过分渲染也能够切实有效。Google 不接受弹出式广告，因为这会干扰用户查看所请求的内容。我们发现，文字广告 (AdWords) 的内容在与其读者相关时，所带来的点击率要比随机显示的广告高得多。Google 的优化小组与广告客户合作，以提高广告系列在有效期内的点击率。因为点击率越高，表明广告与用户感兴趣的内容的相关性越高。任何广告客户，无论其规模大小，都可以利用这一针对性强的媒介。既可以通过我们的自助式广告服务计划在数分钟内在线投放广告，也可以在 Google 广告服务代表的帮助下发布广告。&lt;br /&gt;&lt;br /&gt;在 Google 上刊登的广告总是明确地标记为“赞助商链接”。不损害我们搜索结果的完整性是 Google 的核心价值观。我们绝对不会操纵排名位置来将我们的合作伙伴放在搜索结果中排名较高的位置。没有人能够购买更高的 PageRank（网页评级）。我们的用户信赖 Google 的客观公正性，任何短期利益都不能够构成破坏这种信任的理由。&lt;br /&gt;&lt;br /&gt;成千上万的广告客户使用我们的 Google AdWords 计划来推广他们的产品，我们相信 AdWords 是同类计划中规模最大的一个。此外，成千上万的网站管理人员利用我们的 Google AdSense 计划，刊登与其网站内容相关的广告，以增加收入和改善用户的体验。&lt;br /&gt;&lt;br /&gt;7. 信息始终在不断地累加。&lt;br /&gt;&lt;br /&gt;当 Google 索引中包含的互联网上的 HTML 网页超过任何其他搜索服务之后，我们的工程师开始将精力转到那些不太容易获得的信息上。有时只是合并新数据库的问题，如添加电话号码、地址查询以及企业目录。有时却需要更多的创造性工作，如增添可搜索超过 10 亿张图片的功能，或增添对原始格式为 PDF 文件的网页进行查看的方式。由于 PDF 格式的大量使用，我们需要扩展所搜索的文件类型的列表，以支持使用 Microsoft Word、Excel 和 PowerPoint 等多种格式创建的文档。为了满足无线用户的需要，Google 开发了一种独一无二的技术，可将 HTML 格式的文件转换为移动设备可读取的格式。该列表不会就此终止，因为 Google 的研究人员将持续不断地探索新的方式，将全球范围内的所有信息提供给寻找答案的用户。&lt;br /&gt;&lt;br /&gt;8. 对信息的需求超越了国界。&lt;br /&gt;&lt;br /&gt;尽管 Google 的总部位于加利福尼亚州，但我们的办事处遍布全球，我们的宗旨是帮助全世界的用户获得所需的信息。为了实现这一目标，我们维护着十多个互联网域；在我们所提供的搜索结果中，超过一半提供给美国境外的用户。用户可以根据自己的喜好，从 Google 支持的 35 种语言中任选一种来展示搜索结果。此外，我们还提供翻译功能，无论用户的母语是哪种语言，都可以搜索到所需的内容；不喜欢使用英语搜索的用户可以将 Google 界面自定义为大约 100 种语言中的任意一种。为了更快地补充新语种，Google 为志愿者提供机会帮助做一些翻译工作，Google.com 网站上提供了供翻译使用的自动工具。这一流程大大改善了我们为用户（甚至位于地球上最偏远角落的用户）提供的服务的种类和质量。&lt;br /&gt;&lt;br /&gt;9. 没有西装革履也一样严肃认真。&lt;br /&gt;&lt;br /&gt;Google 的创始人一再声明公司所重视的惟有搜索。他们创建公司的理念是工作应具有挑战性，而挑战可以带来乐趣。正是由于这一点，Google 的企业文化不同于其他公司，而并不是因为这里到处都有熔岩灯和大橡胶球。同样，对于我们的在线服务，Google 始终将用户放在首位；而对于日常生活，Google Inc. 将自己的员工放在首位。我们重视团队的功绩，并为个人的成就而倍感自豪，这些都促成了公司的全面成功。新想法经过交流和试验，然后以惊人的速度投入实际应用。其他公司的会议可能会占用几个小时，而在这里通常只不过是在排队购买午餐时的一次聊天，写代码的人和写检查程序的人之间不存在任何屏障。这种畅所欲言的环境提高了员工的工作效率，并促进了员工之间的友爱，而这种氛围又因肩负数以百万计的人们对 Google 搜索结果的信赖而进一步加强。为希望做出重大贡献的人员提供适当的工具，他们定然不负您的期望。&lt;br /&gt;&lt;br /&gt;10. 只是优秀还不够。&lt;br /&gt;&lt;br /&gt;为您提供的服务始终超出人们的预期。Google 不会将最好视为终点，而是看作一个新的起点。通过创新和反复探索，Google 选择行之有效的技术，并以异乎寻常的方式不断进行改进。搜索对于拼写正确的文字没有问题，对于拼写错误的文字会怎样呢？我们的工程师透视用户的需求并相应地开发错别字改正程序，就像知道用户在想什么一样。在 WAP 手机上进行搜索时的时间太长？我们的无线技术部门开发了 Google Number Search，将每个字母击键三次减少为只击一次。尽管我们的客户群体数以百万计，Google 仍然能够迅速找到发生冲突的位置，随即加以解决。但是，Google 与众不同的一点，就是在全球用户还未明确意识到自己的需求之前为其做出周密考虑，并开发出富于创新的工具和产品来满足他们的需要。这种永不满足现状的态度就是深藏在世界上最佳搜索引擎背后的终极驱动力量。&lt;br /&gt;&lt;br /&gt;来源：Google网站帮助文档&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/368715695002753550-5361331387816031170?l=supersoftmm3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://supersoftmm3d.blogspot.com/feeds/5361331387816031170/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=368715695002753550&amp;postID=5361331387816031170' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/5361331387816031170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/5361331387816031170'/><link rel='alternate' type='text/html' href='http://supersoftmm3d.blogspot.com/2009/01/google.html' title='Google发现的十大真理'/><author><name>蔡康怡</name><uri>http://www.blogger.com/profile/17714044082004899851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-368715695002753550.post-5920671186247489147</id><published>2009-01-14T21:51:00.000-08:00</published><updated>2009-01-14T21:52:07.921-08:00</updated><title type='text'>微软2008年全球员工总数约为9万人</title><content type='html'>北京时间1月15日，据国外媒体报道，《华尔街日报》周三援引消息人士的话称，受全球经济疲软的影响，微软目前正在考虑进行大幅裁员。该公司最快将在下周宣布裁员计划。&lt;br /&gt;&lt;br /&gt;据熟悉微软计划的消息人士称，微软目前正考虑在公司各个部门展开裁员，这种情况还很少在这家全球最大的软件公司出现。不过也有消&lt;br /&gt;&lt;br /&gt;息称，微软的裁员计划目前酝酿当中，该公司最终可能会用其它削减成本方式来取代裁员。消息人士还称，如果要进行裁员，微软的裁员人数将少于此前市场上所盛传的1.5万人。&lt;br /&gt;&lt;br /&gt;此前曾有传闻称，微软将于2009年1月15日进行裁员，而且部分微软员工已接到通知，称该公司准备在全球各部门实施大规模裁员。微软目前全球员工总数约为9万人，预计裁员人数约为1.5万人，约占员工总数的17%。现在还无法确认哪个部门或地区将受到最大影响，但传言可能会是MSN部门。另据传言称，微软在欧洲、中东和非洲地区的裁员人数可能在某种程度上多于其他地区。&lt;br /&gt;&lt;br /&gt;微软计划于1月22日公布第二季度财报，如果该公司计划裁员，预计将在财报发布当日或之前公布裁员措施。&lt;br /&gt;&lt;br /&gt;微软股价周三在纳斯达克市场常规交易中报收于19.09美元，较上一交易日下跌0.73美元，跌幅为3.68%。在随后的盘后交易中，微软股价下跌0.09美元，跌幅为0.47%，报收于19.00美元。在过去的52周中，微软股价最低为17.50美元，最高为35.00美元。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/368715695002753550-5920671186247489147?l=supersoftmm3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://supersoftmm3d.blogspot.com/feeds/5920671186247489147/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=368715695002753550&amp;postID=5920671186247489147' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/5920671186247489147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/5920671186247489147'/><link rel='alternate' type='text/html' href='http://supersoftmm3d.blogspot.com/2009/01/20089.html' title='微软2008年全球员工总数约为9万人'/><author><name>蔡康怡</name><uri>http://www.blogger.com/profile/17714044082004899851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-368715695002753550.post-6514432036741789291</id><published>2008-12-01T21:21:00.000-08:00</published><updated>2008-12-01T21:22:03.703-08:00</updated><title type='text'>谷歌李开复：我的传奇人生源于十句箴言</title><content type='html'>个成功的人如何定义成功？一个成功的人如何从成功中获得启发？这个命题无疑会让许多人充满了悬念与期待。2008年11月30日下午，北京青年报大厦的20层大会议室迎来了北青教育大讲堂活动开办以来最爆满的盛况，谷歌全球副总裁、大中华区总裁李开复的到来，让许多人对于成功的定义有了崭新的认识。 &lt;br /&gt;&lt;br /&gt;对于成功，不仅仅是对名利的追逐，不应该完全用世俗的价值观去衡量成功与否，而是实现自己的价值，关爱自己身边的人，给这个世界带来更多的影响力，用自己的力量去感染周围的磁场。当你某一天逝去的时候，你的墓志铭上应该撰写的是对你最公平的评价。成功的定义应该是多元化的。 &lt;br /&gt;&lt;br /&gt;在这个下午，谷歌大中华区总裁李开复用平实而不失幽默的语言，讲述了自己成长中的很多故事。和许多人的成长经历相似，他的成长中也有儿时的淘气顽皮，学生时代的疑问与困惑，有获得成功时的泪水与喜悦，也有经历困难与挫折时的蹉跎与彷徨。甚至有经历人生最低潮时期的痛苦与煎熬。但是与众不同的是，李开复在成功中收获了经验，在失败中得到了成长。他把富有传奇的人生经历浓缩成为十句具有启发性的箴言，在如同与你交谈般的娓娓道来中，将这种宝贵的人生经验像冬日暖阳一样，洒满了整个房间。 &lt;br /&gt;&lt;br /&gt;●成功箴言之一： &lt;br /&gt;&lt;br /&gt;自信不失谦虚 谦虚不失自信 &lt;br /&gt;&lt;br /&gt;李开复1961年出生于台湾，母亲在43岁高龄时生下他前，被医生数次劝阻。因为医生透露，如此高龄的产妇很可能生下白痴。但是母亲不顾一切劝阻生下了这个幺儿。这个幺儿在母亲的极度宠爱下自由自在地成长着，喜欢做很多恶作剧。把家里所有的钟表调慢一小时以便晚上床睡觉。把邻居池塘里的水放干以证实邻居池塘里并没有100条鱼。这一切母亲都只是报以宽容的一笑。但是母亲不允许孩子傲慢和目中无人。 &lt;br /&gt;&lt;br /&gt;当5岁的李开复得意洋洋地对邻居阿姨表示“上小学以后就没有见过99分”后。母亲不允许这样的狂放存在于孩子身上，有史以来第一次打了开复。母亲告诉他，“不只要好好学习，还要改掉骄傲的毛病。自夸是要不得的。谦虚是中国人的美德。”母亲总是不失时机地把做人的道理告诉开复。这一次强烈的记忆，使得开复懂得如何在谦虚和自信中保持平衡，而不会在自卑或自负中跌倒。 &lt;br /&gt;&lt;br /&gt;●成功箴言之二： &lt;br /&gt;&lt;br /&gt;天赋就是兴趣 兴趣就是天赋 &lt;br /&gt;&lt;br /&gt;李开复11岁留学美国之后，一直在美国成长。1972年，他进入了美国哥伦比亚大学学习“政治科学”专业。然而两年的学习让他知道自己的兴趣并非在政治方面。学习的枯燥经常让他在课堂上昏昏欲睡，学习成绩也不尽如人意。但是，他发现他在选修的计算机课上，有着惊人的天赋。往往是别人还在苦思冥想如何写出程序时，他早就把程序写完而无所事事。后来，他发现他像发疯一样爱上了这门学科。因此，在大学二年级时，他自己做出了一个惊人的决定，“转系！”这意味着他将从一个全美排名第3的专业转到一个毫无名气可言的专业。但是，他听从了内心的选择，还是选择了计算机专业。而这个决定，改写了他一生的轨迹。 &lt;br /&gt;&lt;br /&gt;●成功箴言之三： &lt;br /&gt;&lt;br /&gt;思考比传道重要 观点比解惑重要 &lt;br /&gt;&lt;br /&gt;李开复以哥伦比亚大学计算机专业第一名的成绩毕业以后，顺利进入匹兹堡的卡内基·梅隆大学就读计算机专业的博士。在读博士之前，他的系主任Haberman就告诉他，读博士的目的，就是要做出世界上一流的博士论文。至少在本领域是世界顶尖的。这句话让李开复十分震撼。然而，下面一句话，让他受益更深，Haberman说，“做出一流的博士论文，也不是读博士的最终目的。而是你在读博士的过程中，获得一种思考的方法，而这种方法将使你在任何一个领域，都获得顶尖的成功！”而李开复的努力证实了这种说法。李开复关于统计学方法做出的语音识别博士论文至今还是语音识别产品的理论基础。而李开复也在博士生涯中，学会了解决问题，拥有了战胜困难的勇气。 &lt;br /&gt;&lt;br /&gt;●成功箴言之四： &lt;br /&gt;&lt;br /&gt;我不同意你 但我支持你 &lt;br /&gt;&lt;br /&gt;李开复在读博士期间选择的研究方向是“语音识别”。师从博士生导致罗迪。罗迪教授鼓励李开复用专家统计的方法来研究语音识别，而李开复在这个领域经过了一番研究后，发现语音识别用这个方法可以获得特定语者95%的语音识别率。李开复把整个研究过程写了一篇论文。一经发表，得到了很正面的回馈。但是他最终发现，专家系统是有严重局限性的，无法延伸到做不特定语者的语音识别。他认为有数据的支持的统计模式是唯一的希望。当他把想法告诉导师，罗迪告诉他，“我不同意你，但是我支持你！”这样的说法让李开复备受感动，成就了李开复博士论文的成功。他的论文当年被评为《商业周刊》最杰出创新。 &lt;br /&gt;&lt;br /&gt;●成功箴言之五： &lt;br /&gt;&lt;br /&gt;挫折不是惩罚 而是学习的机会 &lt;br /&gt;&lt;br /&gt;李开复在博士生生涯里，成绩依然优秀。他用统计学做出的语音识别率大大地提高了，而博士论文发表在国际期刊上，让全美的科技界震惊。这样一个明星学生可以说在卡内基·梅隆里没有什么忧愁可言。然而，一次暑期课程让他经历了不小的挫折。1983年暑假，李开复得到了暑期工的工作。 &lt;br /&gt;&lt;br /&gt;其任务就是教宾夕法尼亚州60个最聪明的高中生计算机课程。李开复自己对那段时光非常享受，每天忙碌地备课，还想出各种教学方法。但是，他领取薪水的那一瞬间看到学生的评语，才知道学生认为，“李老师的教学就像催眠曲！”这样的评价无疑使得李开复备受打击。 &lt;br /&gt;&lt;br /&gt;然而，李开复并没有气馁。他把失败当成了学习的机会，因此获得了成功。他在此后的生涯里，尤其是回到中国以后，做了上千场的演讲。这无疑得益于学生时代的练习。 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;●成功箴言之六： &lt;br /&gt;&lt;br /&gt;创新不重要 有用的创新才重要 &lt;br /&gt;&lt;br /&gt;在苹果和SGI李开复度过了八年科学家到产品副总裁的路程。在这段路程上，他有许多成功，例如苹果的QuickTime，但是在SGI他碰到了巨大的挫折。他的团队发明的三维浏览器，在市场上失败，整个团队和产品被公司廉价卖掉。这时，他又发挥了“从挫折中学习”的反省。他理解了，仅仅有科学家的“新”、“酷”的创新是不够的。创新必须是针对用户的，必须是有用的。做产品的管理，必须把用户放在第一位。李开复1998年夏天回到中国，在中国开创微软中国研究院。这时，他把这个教训带入中国团队。 &lt;br /&gt;&lt;br /&gt;●成功箴言之七： &lt;br /&gt;&lt;br /&gt;完美的工作 成长兴趣 影响力 &lt;br /&gt;&lt;br /&gt;2000年，李开复被调回微软总部成为微软全球副总裁。几年工作后，他深深地体会了一个完美工作的标准，那就是自己有浓厚的兴趣，能有成长的空间，并具备一定的影响力。他怀念着在中国研究院的兴趣，还有在刚调回美国的学习，但是他期望着有更大的影响力。当他发现谷歌将开始在中国创建时，他主动找到了谷歌CEO施密特，并表示愿意加入谷歌。而施密特十分高兴，在一个月之后就给了李开复OFFER。李开复说，当你遇到喜欢的工作机会，不需要任何的迟疑，而需要积极主动来争取。因为这样的机会往往炙手可热，一秒钟的犹豫你就可能与之失之交臂。 &lt;br /&gt;&lt;br /&gt;●成功箴言之八： &lt;br /&gt;&lt;br /&gt;用勇气改变可以改变的事情 &lt;br /&gt;&lt;br /&gt;2005年，是李开复的转折年。他没有想到，一次普通换工作的经历引发了一次地震。微软的诉讼使他陷入了人生最低的低谷。对他的虚假负面报道铺天盖地而来。但是，他想到了他一生的座右铭：用勇气改变可以改变的事情，用胸怀接受不能改变的事情，用智慧分辨两者的不同。 &lt;br /&gt;&lt;br /&gt;于是，他全力以赴地投入了这场战斗，不再理会那些不能改变的谣言。将从微软提取的30万份邮件资料中找寻有利的证据以证明自己的清白。经过两个月的努力，法庭同意李开复到谷歌工作。最后，当李开复回到媒体面前开始工作时，他发现，没有一个记者还提问与诉讼有关的问题，因为作为官司的胜利者，媒体不再相信那些谣言。 &lt;br /&gt;&lt;br /&gt;●成功箴言之九： &lt;br /&gt;&lt;br /&gt;做最好的领导 让员工做有兴趣的事 &lt;br /&gt;&lt;br /&gt;谷歌公司聚集着世界上最天才的工程师们。如何管理这些“天才”，是摆在李开复面前的另一个课题。李开复非常推崇“放权”式的管理， 他深知在以创意为主要生产力的公司里，不能严格地恪守那些死板的规定。他可以让员工自己提出研究的方向。大家讨论决定。也可以让员工用20%的时间做自己喜欢的项目。他甚至可以让员工对公司提出建议。如果合理就采纳。谷歌里自由的环境非常有名。作为管理者，他主要是在公司战略、每年的目标、合作伙伴、总部沟通上努力，其他的时间，他更是一个企业文化的维护者、公司的发言人、员工的教练。 &lt;br /&gt;&lt;br /&gt;●成功箴言之十： &lt;br /&gt;&lt;br /&gt;价值不是你拥有多少 而是你留下多少 &lt;br /&gt;&lt;br /&gt;什么是成功？是否拥有了名利就算成功。对此，李开复回答，你的价值不是你拥有多少，而是你留下多少。当他的一个同事赚够了钱而发现失去人生目标时，才意识到，人生的价值在于贡献，和对他人的影响。 &lt;br /&gt;&lt;br /&gt;李开复曾经有过一个独特的梦想，就是在中国创建一所一流的，有世界影响力的私立大学。他甚至身体力行地为此多方奔走。但是最终因为种种原因没有成功。但是他并没有气馁，而是用另外的方式实践梦想。他说：“我不能改变教育，但是我可以帮助学生。”他给中国的大学生写信，写书，办了“我学网”，每年面对十万学生做演讲。在帮助学生的过程中，李开复看到中国大学生的成长。他说，他曾经想过自己的墓志铭应该有科学家或者企业家的注脚。但是，他说他现在已经没有这种想法，如果他的墓志铭上有热心教育者的字样，他会感觉到内心的温暖。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/368715695002753550-6514432036741789291?l=supersoftmm3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://supersoftmm3d.blogspot.com/feeds/6514432036741789291/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=368715695002753550&amp;postID=6514432036741789291' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/6514432036741789291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/6514432036741789291'/><link rel='alternate' type='text/html' href='http://supersoftmm3d.blogspot.com/2008/12/blog-post.html' title='谷歌李开复：我的传奇人生源于十句箴言'/><author><name>蔡康怡</name><uri>http://www.blogger.com/profile/17714044082004899851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-368715695002753550.post-6722904613170540440</id><published>2008-10-30T21:46:00.000-07:00</published><updated>2008-10-30T21:48:15.099-07:00</updated><title type='text'>把梦想变成现实</title><content type='html'>研究院的宗旨就是叫“把梦想变成现实”，科学家研究员的工作就是来这里来做梦，然后想办法把梦想去实现，这个过程中可能会遭遇到一些挫折，会遭遇到失败，但是这个过程你必须要喜欢，这就是做科研的一个态度。如果我们只是为五斗米折腰，那还是会很辛苦，有时候遇到挫折心情也不会很愉快，如果真的热爱这个工作，热爱这个工作的过程，即使每个人还是想会成功，但那个已经变成次要的了。研究并不是炒短线的方式，真的是需要长期的投入。 &lt;br /&gt;&lt;br /&gt;微软不做哪个研究院研究什么的计划，而是各个研究院把最好的人才雇来，让他们自己决定做什么，因为研究大部分是自主的、从下往上，而不是从上往下。研究如果可以一个人决定，那也太简单也太容易了。了不起的研究很多时候是意外，意外的意思就是说上面的人不见得相信.&lt;br /&gt;&lt;br /&gt;比如说今天下面的研究员跑来跟我讲，我可以不太相信，我可以给意见，这可能不太妥，他坚持自己的意见最后来证明我是错的，很多时候了不起的研究是这样来的。科学跟研究就是要坚持自己的理念，没错有时候是会失败的，但是我们允许失败才有可能有的大创新，所以我们通常不由上往下做计划，都让研究员自己计划，这样会形成在有些领域我们跟其他研究院有竞争，这是良性的竞争，同时也合作，因为假如你有做这个东西，你有做这个东西，凑起来可能做更大的东西。 &lt;br /&gt;&lt;br /&gt;微软亚洲研究院在过去十年做了超过260项的技术转移，转移到微软未来的产品，这是一个很重要的指标，因为这样微软才能不断地在产业保持很健全很理性的地位，才可以把商业利益再投入做研究，这个是微软的未来&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/368715695002753550-6722904613170540440?l=supersoftmm3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://supersoftmm3d.blogspot.com/feeds/6722904613170540440/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=368715695002753550&amp;postID=6722904613170540440' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/6722904613170540440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/6722904613170540440'/><link rel='alternate' type='text/html' href='http://supersoftmm3d.blogspot.com/2008/10/blog-post_30.html' title='把梦想变成现实'/><author><name>蔡康怡</name><uri>http://www.blogger.com/profile/17714044082004899851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-368715695002753550.post-3159036572720409709</id><published>2008-10-26T04:43:00.000-07:00</published><updated>2008-10-26T04:44:09.284-07:00</updated><title type='text'>Google如何管理公司</title><content type='html'>在经历2004年上市之后，Google开始井喷式的发展，一举成为市值最高的企业，企业规模也随之扩张，快速的扩张让Google面临着方方面面的考验，对于一个以人才见长的企业，人力资源管理能否适应Google的快速发展？能否帮助变成大象的Google一如既往地前行，并支撑这个新巨头的企业文化，这是Google面临的最大的挑战。&lt;br /&gt;&lt;br /&gt;　　其实，Google几年来的发展说明，他们已经解决了这个挑战，不断吸纳顶尖人才，远低于同业的员工流失率，创新而富有特色的企业文化等，都是不同侧面的佐证。&lt;br /&gt;&lt;br /&gt;　　文化管理&lt;br /&gt;&lt;br /&gt;　　不断创新是互联网企业的生存法则之一，以工程师为主体是互联网行业的人才架构的特色。Google作为互联网行业的巨头一直秉承着“我们只雇佣最聪明的人”的人才宗旨，Google相信，只有“最聪明的人”才能在这个全新的互联网领域不断创新。其两位创始人甚至对于所有领域的人才都偏爱有加，如果你是脑外科或是火箭研究领域的博士，也可能有机会去Google工作，现在Google的员工中就包含一名火箭领域的科学家和一名脑外科医生。&lt;br /&gt;&lt;br /&gt;　　“Google是以研发人员为中心的公司，倡导‘工程师文化’。因此Google倡导并鼓励一种创新、民主的企业文化，从工程师的观念创新，落实到产品设计营销，最后延伸到管理，在Google的每一个环节都有体现。”Google大中华区人力资源总监邓涛说。&lt;br /&gt;&lt;br /&gt;　　毫无疑问，Google的成功，从很大程度上要归功于其吸引人才的能力，以及适合新人发挥的企业文化。&lt;br /&gt;&lt;br /&gt;　　Google主张开放自由、民主的企业文化，“Google一直秉承吸引最聪明的人才来Google工作的理念，要想吸引最聪明的人来创新，就要先给人才创造一个非常开放、宽松的环境。管理上的‘民主’就要求每一个管理者面对下属的提议不能直接回复‘NO’，而是得说可以考虑如何帮助他发展。”&lt;br /&gt;&lt;br /&gt;　　“Google希望创造一个百家争鸣的氛围，使大家能够和敢于发表自己的看法，给各种创意一个去试验的机会。可以想象，如果在互联网企业中形成‘领导说不可以就不可以’的文化，企业又怎能领先技术发展？产品又怎能满足客户多变的需求？所以，在Google，我们强调：第一是要允许你做；第二是给你资源帮你做；第三是允许你犯错误。这就是我们追求的创新文化，要让每个人的想法、有机会去实现。”&lt;br /&gt;&lt;br /&gt;　　Google拥有Google文化委员会，在督导文化推广的同时，也倡导一些活动主题，由员工来组织相应的活动，比如社区活动、环保活动和资助残疾人活动等。员工拥有更多的主动权，参与的兴趣也会更加浓厚。&lt;br /&gt;&lt;br /&gt;　　有人把Google式文化创新称为德鲁克式理想——“工作应当体现人的社会价值，如机会、社交、认同以及个人满足，而非仅仅反映成本、效率一类的商业价值”。Google成功证明了德鲁克式理想的先进性，“传统的先对员工产生怀疑，而后防微杜渐的人力资源管理方式并非最好的解决办法。优秀的管理者应尽全力给予员工信任，并让他们最大程度地发挥自己的聪明才智，不过分关注眼前利益而做长远打算，才能为企业的发展铺好更宽阔的道路。邓涛认为，“这种方式不仅促进了创新，而且可以有效地节约管理成本，得到事半功倍的效果。”&lt;br /&gt;&lt;br /&gt;　　时间管理&lt;br /&gt;&lt;br /&gt;　　Google的员工从来不用在乎早上闹铃会不会准时响起，员工可以悠闲自得地去上班，如果你看见急匆匆赶往办公室的员工，那绝对不是担心迟到，也许是为了和同事会合去享受Google提供的免费大餐。Google提倡的弹性工作制不同于其他企业，Google充分相信员工，把工作时间的掌控权交由员工，由员工根据自己的喜好自由安排时间。&lt;br /&gt;&lt;br /&gt;　　很多人评价，在Google工作更像在自己家办公，饿了可以去吃东西，中式的、西式的，如果你不怕发胖，可以尽情地吃；困了可以小睡；玩兴大发时可以和同事PK一场桌球；哪里不舒服了，随时可以享受到按摩师的到位服务。在Google看来，这是福利，更是为员工打造宽松、自由的环境。&lt;br /&gt;&lt;br /&gt;　　“我们相信每一位来Google 工作的员工都是聪明人，聪明人都会自己安排好时间，自己主动去工作。”邓涛说，Google有数不清的]项目经理，但没有人坐在那里等待上级安排工作，大家都是积极主动地去寻找项目。&lt;br /&gt;&lt;br /&gt;　　自由项目管理&lt;br /&gt;&lt;br /&gt;　　Google鼓励员工用20%的工作时间去做自己想做的事情，即使是和手头的工作完全不相干的项目也可以。很多Google推出的产品都是员工用20%的个人时间设计完成的，这些产品都非常成功。以这次四川地震为例，很多员工利用自己20%的个人时间设计了通过Google地图帮助救援人员搜救的产品，也有员工设计了帮助幸存者寻找亲人的产品，“这些都是员工自发组织的，没有任何人去下达这样的工作安排，我们也会充分支持员工的想法。”&lt;br /&gt;&lt;br /&gt;　　员工不但有自己掌控的时间，甚至可以决定自己做什么项目，员工完成一个项目之后，他便可以和项目主管提出申请，选择自己感兴趣的项目。一般情况下，项目主管都会支持员工的想法，如果遇到不同的意见，也以协商为主，项目主管会帮助员工分析自身的优势，给员工提出建议，但最终的决定权依旧掌握在员工手中。“要给大家一定的空间去做自己想做的事情，有一些员工有一些想法，没有时间怎么办？公司会给员工时间去做。很多员工利用这些事将自己创新的想法变成现实产品，对于这种创新，Google非常鼓励。据邓涛介绍，“公司会根据员工的发明、创造以及给公司带来的回报，对员工进行各样的奖励。”&lt;br /&gt;&lt;br /&gt;　　组织管理&lt;br /&gt;&lt;br /&gt;　　“我们的组织机构非常扁平，而不是传统的金字塔型组织结构。老板与员工之间，并没有有强烈的职位等级观念，我们更倡导民主的工作氛围。”员工可以随时表达自己的想法，甚至提出与管理层不同的想法，如果管理者过于专制，马上就会通过Google的方式反映出管理者的方式不符合Google的文化，管理者如果不注意修正自己的做法，很可能会影响其在Google的发展。&lt;br /&gt;&lt;br /&gt;　　在Google，员工晋升强调民主和自由，在每年的一到两次的晋升机会中，如果员工觉得自己合适，就可以在系统中提出申请，不必非要等主管提拔才行，只要同事认可，并顺利通过审核就可以实现。&lt;br /&gt;&lt;br /&gt;　　尽管Google 提供开放、宽松的工作环境，员工可以用20%的时间做自己喜欢的事情，但这些的前提是在不影响本职工作的情况下，“公司会给员工提供各种环境，关键是员工自己怎样去安排工作，去掌控时间。工作完成的快速有效肯定会有奖励，完成的正好也很好，如果不能完成，对不起，我们也有绩效评估体系，员工也会受到一定的管理。自律和纪律永远是相辅相成的，没有纪律就没有自由。”邓涛说。&lt;br /&gt;&lt;br /&gt;　　人才管理&lt;br /&gt;&lt;br /&gt;　　“我们只雇佣最聪明的人。”既反映出Google对于招聘人才的高标准要求，也折射出苛求完美的人才理念。邓涛说，“从公司出现职位空缺，到招聘到适合的人才，一般需要三个月的时间，我们的理念是宁缺毋滥。”邓涛强调。在美国总部，公司创办的初期，Google的两位创始人会参与所有人的面试，后因公司规模不断壮大而放弃，但即使到了今天，Google两位创始人仍然会审查招聘委员会每周的工作情况，并对一些应聘者的资格提出意见。&lt;br /&gt;&lt;br /&gt;　　有资料显示，最终获得Google工作职位的应聘者平均需要通过6.2次面试。参与面试的面试官，除了人力资源部和岗位需求部门，也会邀请跨部门甚至跨区域的人员参与面试，如此严谨的招聘流程，是为了确保最终进入Google的员工真正适合Google。&lt;br /&gt;&lt;br /&gt;　　“跨部门、跨区域的人员参与面试，一方面考察面试人员的协作能力，另一方面也考察其是否愿意与应聘者共事，同时还考察应聘者是否符合公司的文化，最后每个面试者写下评语，每个人的评语都有可能影响应聘者是否会被录取。”邓涛介绍说。&lt;br /&gt;&lt;br /&gt;　　Google非常鼓励内部员工推荐应聘者，“员工对于公司文化非常了解，我们认为，员工推荐的人才更适应公司文化。”如果员工推荐的人才最终被Google录用，公司会对员工进行奖励。在美国总部，奖金高达2000美元在中国的奖金数额也颇有吸引力。据邓涛说，“现在，Google内部的员工有大约45%是通过员工推荐来的，事实证明这是一种非常有效的招聘方式。”&lt;br /&gt;&lt;br /&gt;　　公司会向新员工提供相应的企业文化培训，尤其对职业经理人，很多职业经理人因为经验和思维的原因，并不能很快适应Google开放、民主的工作氛围，“职业经理人很容易因以往的工作形成习惯，我们在招聘时会注意寻找既符合公司文化又是善于学习的人，如果你有经验，不善于学习，不善于改变自己，将很难在Google成功，因为Google和任何一家公司都不一样，这就要求进入Google的职业经理人要非常善于挑战自己，学习能力要很强。职业经理人进入Google后，我们会对他们进行系统的培训，会引导他们适应Google的文化。”&lt;br /&gt;&lt;br /&gt;　　绩效管理&lt;br /&gt;&lt;br /&gt;　　Google具有非常完善的、基于团队的考核机制。员工每个季度都有自己明确的工作目标，而且因为互联网公司都有自己的网络管理平台，比如，工程师每周的项目做到了什么程度对对所有员工都是透明的，这为员工的绩效考核提供了很好的管理工具。&lt;br /&gt;&lt;br /&gt;　　Google的考核分不同的等级，对排在末位的员工有相应的帮助措施，特别重视排名最靠后的5%的员工，公司将集中找出原因，发现问题，建立信心，帮助他们赶上来，但也不排除会将一些人淘汰出局。而对最好的5%～10%的员工，每年都会得到充分的奖励和荣誉。&lt;br /&gt;&lt;br /&gt;　　Google的人才流失率一直低于行业水平，用邓涛的话说，就是“前所未有的低。”这也从一个侧面，证明了Google在人力资源管理工作上的创新是卓有成效的。 （陈哲）&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/368715695002753550-3159036572720409709?l=supersoftmm3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://supersoftmm3d.blogspot.com/feeds/3159036572720409709/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=368715695002753550&amp;postID=3159036572720409709' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/3159036572720409709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/3159036572720409709'/><link rel='alternate' type='text/html' href='http://supersoftmm3d.blogspot.com/2008/10/google.html' title='Google如何管理公司'/><author><name>蔡康怡</name><uri>http://www.blogger.com/profile/17714044082004899851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-368715695002753550.post-2131119132497477026</id><published>2008-10-22T21:48:00.000-07:00</published><updated>2008-10-22T21:49:23.886-07:00</updated><title type='text'>从Goole收购DoubleClick谈起——我的追梦之旅(转)</title><content type='html'>作者：Diane Yu&lt;br /&gt;&lt;br /&gt;      我是在Google收购 DoubleClick消息出来的当天递交的辞呈。我的老板，DoubleClick的CIO震惊地看着我：“Are you crazy? Diane??”因为他像我一样清楚地知道，在这个时候辞职对于我这样的高级技术主管意味着什么。只要我待到收购完成，就会有相当可观的期权转换成现金，没有人会在如此巨大的金钱诱惑下辞职。也确实如此，从消息出来直至今天，DoubleClick离开的高级主管只我一人。我放弃的相当于很多美国IT人十几年辛苦工作所得。&lt;br /&gt;     他沉默了很久，问我是不是已经决定了，我点了点头。作为我多年的良师益友，他明白我从不做没有理性的决定，而且只要我决定了就不会回头。接着他说，他不会白费唇舌地劝我留下来，那没有用，但是他一定要知道为什么。他不相信有人会在这样的情况下辞职，尤其是我。我放弃的不只是期权转换成的大量现金，而且还有在Google做管理人的大好前程。他一直以为如果有人在收购结束后能在职业生涯上更上一层楼，那一定首先是我，因为我一直是他最强的技术副手。九年来，我在DoubleClick开发了一个又一个产品，培养了一个又一个IT管理者，组建和重整了一个又一个团队。九年的时间，无数的风风雨雨，我都没有离开 ，为什么现在要离开呢？而且在这样的时刻！&lt;br /&gt;     为什么？&lt;br /&gt;     因为我碰到了一个让梦想成为现实的机会，不可错过。&lt;br /&gt;     我一直希望拥有一份自己的事业，更希望在中国建一支理想的IT团队。近几年来，这样的念头愈发强烈。我曾几次利用假期回国，了解国内的IT界，正在这时，我碰到了Doug和Jon。他们在找一个可以帮助他们组建IT团队的合伙人，以实现视频网络市场化的理想：打造FreeWheel Monetization Right Management（MRM ）系统。无可置疑，这是一个创业公司，真正的从零开始。&lt;br /&gt;     一个创业公司成功的条件是什么？风险投资商最看重的是什么？首先，是你的目标市场，要足够大，要高增长；接下来，是你的盈利模式，要能看到合理清晰的盈利模式；最后，也是最重要的，是你的团队，要有一支有经验的，有能力的强大团队。具备了这三个条件的公司，不是你去找风投，是风投来找你。但你会发现，很多创业型公司并不具备这些条件，如果你有幸见到一个这样具备了所有条件的公司，那是你碰到了一个理想变成现实的机会，不可错过。&lt;br /&gt;     这正是我看中FreeWheel的原因。首先，我们定位在视频广告市场，这个市场之大毋庸置疑，仅美国而言，每年就有数百亿美金的广告预算进行交易；难得的是，这个行业正在进行一场前所未有的变革，从传统媒体到网络视频的变革。机会在变化中产生，这是一个亘古不变的真理。其次，是我们清晰的盈利模式，MRM 系统解答了一个网络视频业至今无人能解的问题 （i.e. “the billion dollar question”）：当一个人在网上看一段视频时，谁有权卖广告？谁有权分成？ 伴随着这个问题的解答，FreeWheel的盈利模式跃然纸上。最后，再看我们的团队，这个三人组，毫不夸口地讲，是世界上最强的网络广告业组合。不仅仅由于我们在各自负责领域内的成功记录，更为难得的是我们三人能力上的完美搭配：Doug曾经是DoubleClick核心产品DART的全球总经理，下属几百人的团队，年营销额数亿美金，这个部门也正是今天Google花31亿美金买下的部门；Jon 先后在DoubleClick、Yahoo! 担任产品策划的要职，他曾在短短的几年里建起DoubleClick全球广告网，为它的早期腾飞立下汗马功劳。在FreeWheel，Doug负责市场营销与管理，Jon负责产品策划与定位，而我刚好提供组建IT团队、开发产品的执行力。可以说，如果你相信有人能在这个领域里胜出，这个团队是你最该押注的团队！&lt;br /&gt;     我跟Doug和Jon讲了把IT团队建在中国的想法，有几点原因。其一，到发展中国家做软件开发，降低研发成本已经是一个广为接受的概念。印度本是这一市场的领头军，可是，印度市场近几年来趋于饱和，劳动成本大大增加，质量却不断下降，我们三个人对这一点都深有体会。相比之下，中国才刚刚起步，又拥有众多与印度同样高质量的软件开发人员，很有吸引力。再者，我多年管理跨国研发团队的经验，以及我对网络广告需求的熟悉程度可以大大降低创业型企业跨国研发的风险。最后，我作为土生土长的中国人在这方面是有优势的。他们十分同意我的看法，毫不犹豫地说：“我们支持你！”&lt;br /&gt;     就这样，我决定离开DoubleClick，同Doug和Jon 一起组建FreeWheel，把研发中心建在中国。这是让我两个梦想同时成为现实的机会，不可错过。就这样，在整个DoubleClick沉浸在被Google收购的喜悦中时，我的辞呈，递到了CIO的办公桌上。&lt;br /&gt;     创业以来，我们遇到得最多的问题是：你难道不担心Google这样的公司打造同样的产品与你们竞争？要回答这个问题，还要从Google收购DoubleClick说起，我、Doug和Jon曾就这件事对FreeWheel 的潜在影响作过详细讨论。我们认为，这一事件是网络广告业第二轮竞争开始的信号，还有，Double Click 的价值在于它的独立性，被收购后就失去了它的独立性。不出所料，由Google收购DoubleClick卷起了收购狂潮，Microsoft迅速买下了Aquantive、而Yahoo!则抢下了Right Media。风波过后，不只这个市场上的领军者没有了，就是稍有规模的竞争者也不复存在。然而市场还在，这个市场还需要独立的广告平台。事实也证明，自DoubleClick被收购的消息传出后，它的顶级客户都开始寻找其他解决方案，做第二手准备。原因很简单，这些客户是Google的竞争对手，他们不只和Google在与广告商的关系上竞争，也同时在内容上、用户群上有激烈竞争。广告收入是他们的生存命脉，没有人会把自己的生命交付在竞争对手的手上。其实洞悉这个契机的人，在我看来并不在少数。可是，既看出了机会，又了解市场，同时还能打造正确产品的人，却大多任职在这些已经被收购的公司，被“金手铐”铐住了。这些因素无疑大大增加了FreeWheel成功的机会。&lt;br /&gt;     在全世界都沉浸在这场收购狂潮带来的兴奋当中时，而我们却看到这个市场正在打开的窗口：巨额资本，没有玩家。 我们认为这个窗口将持续六个月，六个月的时间足够推出MRM的第一版，抢占先机。你也可以说，我并非是随意放弃了在Google做管理人的大好前程以及唾手可得的大笔收入，只是相比而言，在这个时候组建FreeWheel更是千载难逢。&lt;br /&gt;     MRM在美国正式推出后，在潜在客户群内引起了很大反响。很多客户说：“Wow，这正是我们在寻找的视频解决方案。”正如我们所预测的，迄今为止，还未发现任何竞争对手提供类似的方案。随后的六个月之内，相信会有无数大大小小的公司站出来说，他们也做同样的事情。只不过，我们已经抢占了先机。成功的关键在于看到别人看不到的棋，不需多，一步就好。&lt;br /&gt;     就在MRM产品刚刚发布的时候，整个Internet又发生了翻天覆地的变化。Microsoft和 Yahoo!在与Google针对搜索的竞争中节节败北，终于逼得Steve Ballmer下了狠心，对Yahoo!展开了恶意收购。冰冻三尺，非一日之寒。事实上，Yahoo!的今天是当年买下Overture 未能迅速成功整合埋下的祸根。几年前我还在DoubleClick时，我的搜索团队就已经清楚地看到，广告商在Google和Yahoo!的搜索引擎上花同样的钱买关键词广告，Google的回报率是Yahoo!的两倍。如果Yahoo!不尽快改变这个局面，它的客户就会离开，它的市场份额就会越来越小。不幸的是，Yahoo!反应得太慢，Panama发布得太晚，等不到Panama发布，Yahoo!的客户早已离开。&lt;br /&gt;     在这样巨大的市场变更中，又有一轮新机会产生了。半年前，类似机会发生在网络广告界时，有三个人在加州一间简陋办公室里欣喜若狂，半年后，MRM诞生了。我相信，在全世界沉浸在Microsoft 和Yahoo!铺天盖地的新闻中时，定有一个创新的萌芽正在某一个安静角落悄悄成长……&lt;br /&gt;&lt;br /&gt;作者简介：&lt;br /&gt;&lt;br /&gt;      Diane Yu，中文名于晶纯， FreeWheel 创始人，CTO。于2007年与Douglas Knopper, Jonathan Heller共同创建FreeWheel， 开发Monetization Right Management  系统，产品于08年1月上线，已引起美国视频网络广告界的关注。 &lt;br /&gt;      前DoubleClick工程部副总裁，负责广告商系列产品平台的开发与维护，所辖部门包括DFA、 Motif、DARTSearch和 Performics，是DoubleClick核心技术力量之一，直接参与研发并打造了DART网络广告系统。&lt;br /&gt;博客：http://blog.dianeyu.com&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/368715695002753550-2131119132497477026?l=supersoftmm3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://supersoftmm3d.blogspot.com/feeds/2131119132497477026/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=368715695002753550&amp;postID=2131119132497477026' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/2131119132497477026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/2131119132497477026'/><link rel='alternate' type='text/html' href='http://supersoftmm3d.blogspot.com/2008/10/gooledoubleclick.html' title='从Goole收购DoubleClick谈起——我的追梦之旅(转)'/><author><name>蔡康怡</name><uri>http://www.blogger.com/profile/17714044082004899851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-368715695002753550.post-2713075751816122436</id><published>2008-10-14T06:21:00.000-07:00</published><updated>2008-10-14T06:22:38.735-07:00</updated><title type='text'>最重要的是人才的积累</title><content type='html'>李一男似乎更加重视第二代移动通信技术。1998年，他（李一男当时尚在华为——作者注）接受《人民邮电报》记者采访。记者问：现在大家都在谈第三代的问题，从市场的角度看，第三代对于国内厂商来说，机会是不是更大一些？李一男的回答是这样的：我们对移动通信看的最关键的问题是品牌问题，品牌首先要体现在销售上。可以坦率地讲，如果中国的通信企业在第二代移动通信上不能有所作为，很难想象他们在第三代上会有什么大的作为。从市场的角度说，没有第二代的销售，你就不可能对移动通信有非常深刻的认识，没有这样的销售渠道和售后服务渠道，第三代的产品又靠什么推向市场。用户对你一点认识都没有，你怎样证明你的实力？所以我认为，国内企业没有第二代的发展，在第三代市场上是不会有大的进展的。从公司的发展讲，没有第二代产品产生的利润，怎么支撑第三代产品的开发？第三代开发的投资要远大于第二代。除资金外，最重要的是人才的积累。没有第二代的开发怎么会凭空产生第三代的开发力量。任何一项技术都是一步步走过来的，要想跳过去是困难的。我们通过ETS积累了大量的开局经验，也积累了终端生产的经验，这些经验用在GSM的开发上，给我们带来莫大的好处，使得我们拥有更多的训练有素的工程师。任何人才的培养都不是一蹴而就的，要遵从循序渐进的规律。不管怎么说，李一男和任正非之间，存在一段不解的渊源。李一男在华为期间，对技术开发的思路和策略未必符合任正非的压强原则，也未必认可《华为基本法》中的所有内容。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/368715695002753550-2713075751816122436?l=supersoftmm3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://supersoftmm3d.blogspot.com/feeds/2713075751816122436/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=368715695002753550&amp;postID=2713075751816122436' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/2713075751816122436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/2713075751816122436'/><link rel='alternate' type='text/html' href='http://supersoftmm3d.blogspot.com/2008/10/blog-post_14.html' title='最重要的是人才的积累'/><author><name>蔡康怡</name><uri>http://www.blogger.com/profile/17714044082004899851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-368715695002753550.post-1160727938621692976</id><published>2008-10-13T22:14:00.000-07:00</published><updated>2008-10-13T22:17:02.480-07:00</updated><title type='text'>科技博客TechCrunch：谷歌Gears前景展望</title><content type='html'>导言：很多人都对谷歌下一代网络平台Gears存在着一种的误解，人们普遍认为谷歌Gears只是增强了网络应用程序的离线功能，但事实远非如此，谷歌还有更大的野心。谷歌Gears的功能要远远超出人们的想象。著名科技博客TechCrunch日前发表了文章对谷歌Gears的现状进行了分析同时展望了其发展前景。 &lt;br /&gt;&lt;br /&gt;现状分析 &lt;br /&gt;&lt;br /&gt;自2007年5月至今，Gears已经发布了一年多。在此期间，谷歌先后发布了四个版本的Gears，每次都会增加许多新的功能。最近两次发布是在今年8月和6月。 &lt;br /&gt;&lt;br /&gt;Gears的主要目的让网络应用程序拥有与桌面应用程序相同的功能。为了实现这一目标，他们针对不同的操作系统（包括Windows、Windows Mobile、Mac OS和Linux）和浏览器（火狐、Safari和IE）推出了一系列插件。而随着谷歌Chrome浏览器的发布，用户甚至可以在不安装Gears插件的情况下使用这些功能。 &lt;br /&gt;&lt;br /&gt;该技术的目的非常明显：有了Gears，用户的浏览器的性能将会日益强大。这就使得安装桌面应用程序的用户越来越少。而微软引以为豪的Windows和Office也将走向末日。但是在这种情况没有发生之前，Gears以及与之类似的技术却必须要能够从真正意义上提升浏览器的性能。或者更准确的说，他们必须要使那些通常只在浏览器中运行的网络应用程序具备与桌面应用程序相同的功能。 &lt;br /&gt;&lt;br /&gt;目前，Gears已经可以通过以下方式来帮助开发者增强网络应用程序的功能： &lt;br /&gt;&lt;br /&gt;一、客户端数据存储 &lt;br /&gt;&lt;br /&gt;大部分的交互式网站都非常依赖于数据库，他们通过收集、组织和发送由用户和内部发布者贡献的信息来获取数据。一般而言，这些数据库都是在服务器端运行的，如果用户想要使用网站的数据，就需要向网站发送请求并等待服务器的相应。但是谷歌Gears的数据库应用程序接口（Database API）却允许网站在客户端建立数据库，这样就能够以更快的速度使用离线功能。 &lt;br /&gt;&lt;br /&gt;二、客户端网页伺服 &lt;br /&gt;&lt;br /&gt;当常规的网络服务器无法访问时，Gears就可以将你的电脑变成一台网页服务器。谷歌Gears的本地服务器应用程序接口（LocalServer API）允许网站在用户上线时缓存网页，以帮助用户实现离线浏览。不仅如此，当用户在线时，它还可以通过缓存来加速一些特定的行为。 &lt;br /&gt;&lt;br /&gt;三、桌面快捷方式 &lt;br /&gt;&lt;br /&gt;如果想要像使用桌面应用程序一样使用网络应用程序，就必须使其易于启动。因此Gears就提供了一项功能，使得开发者可以为网络应用程序建立桌面快捷方式，使得用户可以通过双击鼠标来打开该项应用程序。尽管用户此前已经可以将特定网站设置为桌面快捷方式，但是谷歌Gears的功能还是可以为用户提供更为直观的体验。图标的画质更高，而且大小可以随意调节。以后，快捷方式还将支持通讯覆盖图标，例如webmail的图标可以实时显示未读信息的数量。 &lt;br /&gt;&lt;br /&gt;四、多文件上传 &lt;br /&gt;&lt;br /&gt;通常，如果网站没有增加特定的Flash或Java插件，那么当用户希望向网站上传多个文件时，就需要逐一进行选择。但是谷歌Gears却可以使得用户可以一次性上传多个文件，从而节省时间。 &lt;br /&gt;&lt;br /&gt;五、定位功能 &lt;br /&gt;&lt;br /&gt;对于那些能够显示用户当前位置的移动设备而言，谷歌Gears可以通过运行在浏览器中的应用程序来显示这些定位信息。定位应用程序接口（Geolocation API）可以被用来确定用户的位置，甚至可以实时显示用户的运动状态。不过，想要获得用户的定位信息必须通过特殊的对话框来获得授权，从而避免信息被泄露。 &lt;br /&gt;&lt;br /&gt;六、后台处理 &lt;br /&gt;&lt;br /&gt;在运行含有大量JavaScript的网络应用程序时，通常都会因为要等待进程的处理而浪费大量的时间。通过一个名为“WorkerPool”的应用程序接口，那些耗时较长的进程将会在后台运行从而降低用户的登台时间。这就使得网络应用程序就会更加流畅。 &lt;br /&gt;&lt;br /&gt;前景展望 &lt;br /&gt;&lt;br /&gt;谷歌Gears团队通常都会按照需求推出相应的功能。因此，我们认为他们今后还将陆续发布以下功能： &lt;br /&gt;&lt;br /&gt;一、进程工具条 &lt;br /&gt;&lt;br /&gt;无论是上传单个大文件还是几个小文件，用户都希望知道上传的进度如何。以前，除了无奈地盯着变成“沙漏”的鼠标指针之外，用户根本无法知道当前的进度。但是有了谷歌Gears，用户就可以获得实时的数据处理进度。 &lt;br /&gt;&lt;br /&gt;二、断点续传 &lt;br /&gt;&lt;br /&gt;当大文件的上传因为连接中断等问题而发生错误时，你就不得不从头开始。但是谷歌Gears却承诺他们将会提供一项功能帮助用户实现断点续传。以便在意外发生时，从上次中断的地方继续上传。 &lt;br /&gt;&lt;br /&gt;三、屏幕提示 &lt;br /&gt;&lt;br /&gt;系统公告软件Growl和迷你博客Twhirl已经提供有屏幕提示功能，使得用户可以通过电脑屏幕的角落来查看更新的信息。而以后的Gears也将提供有类似的功能。无论用户是否在运行浏览器，它都可以向用户发送实时的信息提示。 &lt;br /&gt;&lt;br /&gt;从长远来看，谷歌Gears还有可能充分利用电脑的显卡来支持复杂的3D图形。而且用户还可以通过单击右键的方式来实现文件的上传。此外，网络应用程序还有可能随操作系统一同启动&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/368715695002753550-1160727938621692976?l=supersoftmm3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://supersoftmm3d.blogspot.com/feeds/1160727938621692976/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=368715695002753550&amp;postID=1160727938621692976' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/1160727938621692976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/1160727938621692976'/><link rel='alternate' type='text/html' href='http://supersoftmm3d.blogspot.com/2008/10/techcrunchgears.html' title='科技博客TechCrunch：谷歌Gears前景展望'/><author><name>蔡康怡</name><uri>http://www.blogger.com/profile/17714044082004899851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-368715695002753550.post-8964960964363119634</id><published>2008-10-08T22:27:00.000-07:00</published><updated>2008-10-08T22:28:15.952-07:00</updated><title type='text'>为什么要写class  CMyWnd : public CWindowImpl的形式</title><content type='html'>即使你能够毫不费力地阅读C++的模板类代码，仍然有两件事可能会使你有些头晕，以下面这个类的定义为例：&lt;br /&gt;&lt;br /&gt;class  CMyWnd : public CWindowImpl&lt;CMyWnd&gt;&lt;br /&gt;{&lt;br /&gt;    ...&lt;br /&gt;};  &lt;br /&gt;这样作是合法的，因为C++的语法解释说即使CMyWnd类只是被部分定义，类名CMyWnd已经被列入递归继承列表，是可以使用的。将类名作为模板类的参数是因为ATL要做另一件诡秘的事情，那就是编译期间的虚函数调用机制。&lt;br /&gt;&lt;br /&gt;如果你想要了解它是如何工作地，请看下面的例子：&lt;br /&gt;&lt;br /&gt;template &lt;class T&gt;&lt;br /&gt;class B1&lt;br /&gt;{&lt;br /&gt;public: &lt;br /&gt;    void SayHi() &lt;br /&gt;    {&lt;br /&gt;        T* pT = static_cast&lt;T*&gt;(this);   // HUH?? 我将在下面解释&lt;br /&gt; &lt;br /&gt;        pT-&gt;PrintClassName();&lt;br /&gt;    }&lt;br /&gt;protected:&lt;br /&gt;    void PrintClassName() { cout &lt;&lt; "This is B1"; }&lt;br /&gt;};&lt;br /&gt; &lt;br /&gt;class D1 : public B1&lt;D1&gt;&lt;br /&gt;{&lt;br /&gt;    // No overridden functions at all&lt;br /&gt;};&lt;br /&gt; &lt;br /&gt;class D2 : public B1&lt;D2&gt;&lt;br /&gt;{&lt;br /&gt;protected:&lt;br /&gt;    void PrintClassName() { cout &lt;&lt; "This is D2"; }&lt;br /&gt;};&lt;br /&gt; &lt;br /&gt;main()&lt;br /&gt;{&lt;br /&gt;    D1 d1;&lt;br /&gt;    D2 d2;&lt;br /&gt; &lt;br /&gt;    d1.SayHi();    // prints "This is B1"&lt;br /&gt;    d2.SayHi();    // prints "This is D2"&lt;br /&gt;}&lt;br /&gt;这句代码static_cast&lt;T*&gt;(this) 就是窍门所在。它根据函数调用时的特殊处理将指向B1类型的指针this指派为D1或D2类型的指针，因为模板代码是在编译其间生成的，所以只要编译器生成正确的继承列表，这样指派就是安全的。（如果你写成：&lt;br /&gt;&lt;br /&gt;class D3 : public B1&lt;D2&gt;&lt;br /&gt;就会有麻烦) 之所以安全是因为this对象只可能是指向D1或D2（在某些情况下）类型的对象，不会是其他的东西。注意这很像C++的多态性（polymorphism），只是SayHi()方法不是虚函数。&lt;br /&gt;&lt;br /&gt;要解释这是如何工作的，首先看对每个SayHi()函数的调用，在第一个函数调用，对象B1被指派为D1，所以代码被解释成：&lt;br /&gt;&lt;br /&gt;void B1&lt;D1&gt;::SayHi()&lt;br /&gt;{&lt;br /&gt;    D1* pT = static_cast&lt;D1*&gt;(this);&lt;br /&gt; &lt;br /&gt;    pT-&gt;PrintClassName();&lt;br /&gt;}&lt;br /&gt;由于D1没有重载PrintClassName()，所以查看基类B1，B1有PrintClassName()，所以B1的PrintClassName()被调用。&lt;br /&gt;&lt;br /&gt;现在看第二个函数调用SayHi()，这一次对象被指派为D2类型，SayHi()被解释成：&lt;br /&gt;&lt;br /&gt;void B1&lt;D2&gt;::SayHi()&lt;br /&gt;{&lt;br /&gt;    D2* pT = static_cast&lt;D2*&gt;(this);&lt;br /&gt; &lt;br /&gt;    pT-&gt;PrintClassName();&lt;br /&gt;}&lt;br /&gt;这一次，D2含有PrintClassName()方法，所以D2的PrintClassName()方法被调用。&lt;br /&gt;&lt;br /&gt;这种技术的有利之处在于：&lt;br /&gt;&lt;br /&gt;不需要使用指向对象的指针。&lt;br /&gt;节省内存，因为不需要虚函数表。&lt;br /&gt;因为没有虚函数表所以不会发生在运行时调用空指针指向的虚函数。&lt;br /&gt;所有的函数调用在编译时确定（译者加：区别于C++的虚函数机制使用的动态编连），有利于编译程序对代码的优化。&lt;br /&gt;节省虚函数表在这个例子中看起来无足轻重（每个虚函数只有4个字节），但是设想一下如果有15个基类，每个类含有20个方法，加起来就相当可观了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/368715695002753550-8964960964363119634?l=supersoftmm3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://supersoftmm3d.blogspot.com/feeds/8964960964363119634/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=368715695002753550&amp;postID=8964960964363119634' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/8964960964363119634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/8964960964363119634'/><link rel='alternate' type='text/html' href='http://supersoftmm3d.blogspot.com/2008/10/class-cmywnd-public-cwindowimpl.html' title='为什么要写class  CMyWnd : public CWindowImpl&lt;CMyWnd&gt;的形式'/><author><name>蔡康怡</name><uri>http://www.blogger.com/profile/17714044082004899851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-368715695002753550.post-5153147199022651094</id><published>2008-10-07T07:07:00.001-07:00</published><updated>2008-10-07T07:07:32.596-07:00</updated><title type='text'>华为前副总裁李一男正式出任百度CTO</title><content type='html'>回归华为两年多后，李一男最终还是选择离开华为。&lt;br /&gt;&lt;br /&gt;　　昨日，百度公司(BIDU.NASDAQ)宣布任命李一男为公司首席技术官(CTO)，任命从即日开始生效。百度创始人李彦宏昨日下午还特意向公司全体员工发送华为原副总裁李一男任命邮件，并指出，从即日起公司首席科学家Dr. William Chang、产品副总裁俞军、高级技术总监郭眈、高级技术总监崔珊珊，向李一男汇报工作，李一男直接向自己汇报。&lt;br /&gt;&lt;br /&gt;　　对于李一男的再次离去，华为方面没有作任何评论。&lt;br /&gt;&lt;br /&gt;　　不被重用？&lt;br /&gt;&lt;br /&gt;　　“李一男应该还没有办完离职手续。”华为内部一位知情人士透露，由于国庆，大家才刚上班，此前并没有任何关于李一男要离职的消息，估计李一男离职流程还没有来得及启动。&lt;br /&gt;&lt;br /&gt;　　华为研发的一位原中层表示，李一男离职的真正原因应该是没有被华为重用。这位中层认为，虽然李一男回华为后被任命为首席电信科学家，但在去年12月又被任命为华为终端部的副总裁，负责基础技术研发。而华为的核心产品是移动、交换、传输和业务软件等电信设备，终端部门在公司的地位和重要性都不如以上部门，更何况，今年初开始，华为终端业务就频频传出要出售的消息。&lt;br /&gt;&lt;br /&gt;　　“其实从李一男回归的那一天起，就注定他迟早还要离开华为。”该中层指出，李一男2006年9月回归华为的主要原因是履行华为收购港湾资产协议的结果，对李一男本人有一个“锁闭期”。&lt;br /&gt;&lt;br /&gt;　　1994年进入华为的李一男可谓少年得志，在进入华为两年后就被任命为华为常务副总裁兼中央研究院的总裁，当时才26岁。2000年，李一男带着从华为拿到的价值1000万元的设备北上创建港湾网络。公司迅速发展后，成为华为对手。2006年6月，华为收购港湾网络，李一男回到华为，任首席电信科学家、副总裁。当时，李一男的回归，还被业界猜测，李一男还可能继续成为任正非的接班人。“现在看来，李一男的回归，只是为了扫清华为前进道路上的障碍。”上述中层说。&lt;br /&gt;&lt;br /&gt;　　面临思维转型&lt;br /&gt;&lt;br /&gt;　　不过，对于李一男的加盟，李彦宏还是表示出极大兴奋。李彦宏在内部邮件中称，李一男先生是中国自主创新科学技术领域的顶尖专家，在全球领先的技术公司拥有杰出的管理经验。而李一男先生的加盟，将带领百度的产品技术团队攀上新的高峰。&lt;br /&gt;&lt;br /&gt;　　有接近李一男的人士分析认为，李一男的最主要经验是在通信传输、手机芯片领域，其加盟互联网公司，可以在融合通信与互联网领域一展所长，李彦宏之所以选择李一男，不仅仅是因为百度的CTO一职已经空了一年时间，还可能因为百度看到了谷歌的举措，将在通信和互联网融合领域有着更深远的战略规划。&lt;br /&gt;&lt;br /&gt;　　有着在华为四年工作经历的德瑞电信咨询合伙人阮开利表示，李一男在华为和港湾有丰富的数据通信技术经验，但通信设备技术思维模式和互联网企业的技术思维模式有较大的区别，前者关注的是技术本身，即技术的先进性和稳定性；而后者更关注是客户，即客户需求的满足度和满意度。因此，李一男担任百度CTO后，首先要做的就是思维转型。&lt;br /&gt;&lt;br /&gt;　　阮开利指出，随着3G时代来临，电信设备基础技术和网络的发展已经远超过电信应用服务的发展。因此，未来几年，处于下游的电信设备提供商的竞争将更激烈，整体呈现下坡的趋势。而处于上游的应用服务提供商，如互联网公司、业务运营商等将充满机会。近几年，华为员工离职去百度、腾讯公司、阿里巴巴的比比皆是。&lt;br /&gt;&lt;br /&gt;　　伴随着李一男的到位，百度已于近日对技术团队进行了规模较大的调整，社交网站51.COM主管技术的副总裁邵辉已经正式加盟百度，担任系统部技术总监，百度同时还晋升陈韫敏为技术部副总监，负责垂直搜索部。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/368715695002753550-5153147199022651094?l=supersoftmm3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://supersoftmm3d.blogspot.com/feeds/5153147199022651094/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=368715695002753550&amp;postID=5153147199022651094' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/5153147199022651094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/5153147199022651094'/><link rel='alternate' type='text/html' href='http://supersoftmm3d.blogspot.com/2008/10/cto.html' title='华为前副总裁李一男正式出任百度CTO'/><author><name>蔡康怡</name><uri>http://www.blogger.com/profile/17714044082004899851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-368715695002753550.post-1348907642022800400</id><published>2008-10-04T22:27:00.000-07:00</published><updated>2008-10-04T22:28:03.896-07:00</updated><title type='text'>福布斯：诺基亚触摸屏手机短期难改产业格局</title><content type='html'>据《福布斯》网站报道，虽然诺基亚即将发布的全新触摸屏手机5800具有非常诱人的价格，但是，美国和欧洲用户却无法在年内购买到这款产品。&lt;br /&gt;&lt;br /&gt;　　震惊业界&lt;br /&gt;&lt;br /&gt;　　诺基亚公司于本周四宣布，他们的首款全触摸屏手机年底前将首先在亚洲、中东、俄罗斯和西班牙等地区发售，这一消息令不少业界观察人士感到震惊。虽然上述市场占据了诺基亚第二季度总销量的一半以上，但是考虑到年底的圣诞购物季节，欧洲和美国市场对于提升诺基亚的业绩将更为重要。&lt;br /&gt;&lt;br /&gt;　　寰冠资本(Global Crown Capital) 的分析师泰罗-库伊蒂伦(Tero Kuittinen)说：“这将对诺基亚造成很大的伤害。通常而言，某款手机并不会对股价产生影响，但是这款手机有所不同，因为人们已经对其期待了长达一年之久。”&lt;br /&gt;&lt;br /&gt;　　那么，诺基亚为什么不直接面向全球发售该款手机呢？诺基亚的发言人表示，这主要是因为需要对运营商进行定制造成的。例如，法国电信旗下的Orange和沃达丰均要求为其定制特殊的颜色，同时加入他们自己的标志和菜单。这就使得这款手机在上述地区的发售被延迟了数周。然而，亚洲和中东地区的运营商往往不会对产品提出这类要求。&lt;br /&gt;&lt;br /&gt;　　符合预期&lt;br /&gt;&lt;br /&gt;　　新款的诺基亚5800手机在很多方面都与业界的预期相吻合。例如，其裸机的手机为279欧元（390美元），而3G版iPhone在意大利和英国的售价分别为499欧元（700美元）和350英镑（619.19美元）。&lt;br /&gt;&lt;br /&gt;　　同时，这款手机的功能也达到了人们的预期：它包含3G数据连接功能，320万像素数码相机，内置GPS定位系统，而且还搭配了带有触觉反馈功能的触摸屏。尽管还没有对这款手机还没有正式上市，但是相信看过上面的这些介绍之后，很多人都对这款手机跃跃欲试了。&lt;br /&gt;&lt;br /&gt;　　瑞典投资公司SEB Enskilda的分析师马茨-尼斯特罗姆(Mats Nystrom)说：“很多人都将诺基亚的这款手机看作是iPhone杀手。但是诺基亚却将这款产品定位在了更为广阔的市场。在当前如此低迷的宏观经济背景之下，这将是一个明智之举。”诺基亚还希望他们的音乐服务可以吸引到更多的低端消费人群。本周四，诺基亚发布的“Comes With Music”服务为用户提供了一年的无限量音乐下载服务，而且所有的费用都包含在了手机的售价中。不过，这项服务要真正发挥作用恐怕还需一些时日。因为目前这项服务仅针对英国市场的诺基亚5310手机发布。明年诺基亚5800手机也将提供这一服务，而且还将陆续扩展到更多的国家。&lt;br /&gt;&lt;br /&gt;　　难改格局&lt;br /&gt;&lt;br /&gt;　　然而，关键问题还在于，诺基亚的这款手机并没有给苹果和三星厂商造成致命的打击。&lt;br /&gt;&lt;br /&gt;　　市场研究公司Gartner的分析师卡罗琳娜-米兰内塞（Carolina Milanesi）说：“由于发售地区有限，而且‘Comes With Music’服务并未真正面向全球推广，因此诺基亚5800今年年内无法改变产业格局。”她表示，诺基亚的音乐服务本来可以弥补诺基亚在触摸屏手机方面的一些不足，但是由于推广地区有限，它现在反而成了诺基亚的一块短板。&lt;br /&gt;&lt;br /&gt;　　诺基亚公司表示，他们将会分别于2009年第一季度和2009年中面向欧洲和美国地区推出5800触摸屏手机。（长歌）&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/368715695002753550-1348907642022800400?l=supersoftmm3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://supersoftmm3d.blogspot.com/feeds/1348907642022800400/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=368715695002753550&amp;postID=1348907642022800400' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/1348907642022800400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/1348907642022800400'/><link rel='alternate' type='text/html' href='http://supersoftmm3d.blogspot.com/2008/10/blog-post.html' title='福布斯：诺基亚触摸屏手机短期难改产业格局'/><author><name>蔡康怡</name><uri>http://www.blogger.com/profile/17714044082004899851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-368715695002753550.post-394612570468251671</id><published>2008-09-21T22:13:00.000-07:00</published><updated>2008-09-21T22:14:13.246-07:00</updated><title type='text'>谷歌官方博客：未来手机必备的“七种武器”</title><content type='html'>北京时间9月21日消息，谷歌官方博客最近发表的一篇文章分析了手机的未来趋势，以下是博客全文。 &lt;br /&gt;&lt;br /&gt;自从十年前谷歌创立以来，互联网已经给全世界人们的生活带来了巨大的影响。它已经改变了政治、娱乐、文化、商业、医疗、环境等诸多方面以及几乎每个你所能想到的领域。这促使我们思考：未来的十年内将发生什么？这种惊人的技术将如何演进？我们将如何适应互联网，而且（更重要的是）互联网将如何适应我们？怀着这些问题，我们询问了十个资深的专家，并将在9月（在我们创立10周年的月份）发表他们的回答。就像计算机科学专家Alan Kay的名言所说的那样，最好的预测未来的方法就是去创造它，因此我们每天都将尽我们的最大努力，逐步实现专家们的预言。 &lt;br /&gt;&lt;br /&gt;全世界目前有大约32手机用户，而且在未来几年内，这个数字还将至少增加10亿。如今，手机已经变得比汽车（全世界登记的汽车大约为8亿辆）和信用卡（只有14亿张）还要普遍。在固定电话的普及上，我们用了100年的时间才使80％以上的国家用上固定电话，而手机做到这一点只用了16年。越来越少的青少年佩戴手表，因为他们现在都用手机来看时间。因此我们现在可以大胆地宣称手机是有史以来最普及的消费者产品。 &lt;br /&gt;&lt;br /&gt;不过，你有没有考虑过这些手机的性能到底有多强？你放在口袋、背包或者手提袋里面的手机的性能很可能要比8年前或9年前放在桌面上的个人电脑还要强10倍（假设你有一台个人电脑；大部分的手机用户没有个人电脑）。手机所拥有的一系列传感器几乎堪比火星探测器。一个仅具备基本功能的手机就拥有：时钟，电源传感器（显示电池用量），温度计（因为电池在低温下的充电效果不好），测光表（决定是否开启屏幕背光灯）；而更高级的手机还拥有：位置传感器，加速计（监测运动方向的矢量与速度），甚至还可能有指南针。最重要的是，所有这些传感器始终都是互相连接的。 &lt;br /&gt;&lt;br /&gt;我们来看看未来十年内的趋势。你可能将一周七天，一天24小时都携带着手机（中国移动最近的一项研究显示，大部分手机用户在睡觉的时候都把手机放在距离一米以内的地方），而这些手机的功能非常强大，始终保持连接，并充满各种传感器。而且更酷的是，你身边的每个人都是如此。那么，除了你现在已经利用的功能外，你还将利用这些手机来做什么呢？下面是几种可能： &lt;br /&gt;&lt;br /&gt;智能提醒&lt;br /&gt;&lt;br /&gt;你的手机将时刻洞悉你目前的状况，并在需要的时候提醒你。现在就已经是如此了——eBay可以在你投标失败的时候给你发提示信息，而提示服务（比如谷歌新闻）可以为你提供新闻、运动、或股票方面的最新信息。未来，这些应用程序将更加智能化，更加迎合你的个人偏好（将被存储在网络云里），并在你需要的时候才发送所需的信息。一个非常有用的应用情景：你的手机知道你正在前往市中心用晚饭，它将提醒你交通状况以及哪里停车最方便。 &lt;br /&gt;&lt;br /&gt;增强现实（Augmented reality）&lt;br /&gt;&lt;br /&gt;你的手机会利用它的传感器来了解你状况，并为你提供有用的信息。例如，你站在橱窗前，心里想知道里面的小狗价格。你的手机马上就会通过GPS和指南针了解到你正在看这只小狗。在你甚至还没问这个问题之前，手机就会告诉你答案了。此外，还会告诉你它的食物和最佳训练方式。 &lt;br /&gt;&lt;br /&gt;众包（Crowd Sourcing）主流化&lt;br /&gt;&lt;br /&gt;你的手机就是你的万能传声筒。通过手机，你可以发布图片、电子邮件、文本、Twitter（一种多对多互联网短信群发平台）信息以及博客文章等。如果所有人都这么做，那么世界上每个角落的人都可以实时分享他们的经历。大量的信息内容以一种全新且有趣的方式被归档、分类并重新发布给其他人。你可以在网上询问在附近最好玩的地方，并在手机上浏览其他人的评价和他们所上传的图片。如果你很有兴趣，那么你的手机就会告诉你如何前往那里。 &lt;br /&gt;&lt;br /&gt;（注：众包的特征是由非专业开发人员的普通群体配合进行开发）&lt;br /&gt;&lt;br /&gt;无处不在的传感器&lt;br /&gt;&lt;br /&gt;你的手机能够获取周围情况的大量信息。如果你获取该信息，并将它和云里面的所有其他手机的信息结合起来，那么你就会看到不可思议的世界动态实景。气象信息的更新将不再根据数百个传感器，而是根据数亿个传感器。交通信息的报道将不再仅仅根据直升飞机的观察和道路传感器，而是根据交通阻塞区域的手机（以及人）的密度、速度和方向来作出判断。 &lt;br /&gt;&lt;br /&gt;个人发展的工具&lt;br /&gt;&lt;br /&gt;你的手机不仅能够方便你的生活，它还可以为你带来收入。对于世界上的许多人来说，这已经成为现实：在印度南部，渔民们通过短信来发现最好的市场，以便出售他们今日的产品；甘蔗农场主们可以收到建议性的短信来决定作物灌溉量；在撒哈拉以南的非洲，拥有手机的企业家变成了手机运营商，为他们所在的城镇提供通信服务。未来，随着手机成为经济发展的重要推动力，这些创新只会不断增加。 &lt;br /&gt;&lt;br /&gt;与时俱进的设备&lt;br /&gt;&lt;br /&gt;就像现在的互联网一样，你的手机将更加开放，这样开发人员就可以更加方便地开发或改进应用程序和内容。你可以将你所关心的应用程序自动地安装在你的手机上。比如说，你的手机上有个软件，该软件可以改善电源管理（从而增加电池寿命）。如果有一个开发人员对该软件进行了改进。那么你不用动一根手指头，这个更新就会自动安装在你的手机上。随着时间推移，你的手机将越来越好。 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;信任与验证提高软件安全性&lt;br /&gt;&lt;br /&gt;你的手机将提供工具和信息来帮助你决定下载哪些内容，浏览哪些信息，共享哪些数据。在一个互联的世界里，信任是至关重要的，而你的手机将帮助你控制好你的信息。你可以选择不共享任何信息（缺省模式），或者只同特定人员——你所信任的朋友圈子和家庭成员——共享特定信息。你将根据你从服务提供商和软件提供者那里所得到的信息以及社区的集体评级来进行做出这些决定。你的手机会像忠心耿耿的仆人一样：它知道你的许多信息，但是如果没有你的同意，它将不会透露任何信息。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/368715695002753550-394612570468251671?l=supersoftmm3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://supersoftmm3d.blogspot.com/feeds/394612570468251671/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=368715695002753550&amp;postID=394612570468251671' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/394612570468251671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/394612570468251671'/><link rel='alternate' type='text/html' href='http://supersoftmm3d.blogspot.com/2008/09/blog-post_21.html' title='谷歌官方博客：未来手机必备的“七种武器”'/><author><name>蔡康怡</name><uri>http://www.blogger.com/profile/17714044082004899851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-368715695002753550.post-9072530055285277220</id><published>2008-09-20T18:49:00.000-07:00</published><updated>2008-09-20T18:55:00.683-07:00</updated><title type='text'>C++培训系列课程体系</title><content type='html'>&lt;span class="Apple-style-span"   style="color: rgb(17, 17, 17);   font-family:Verdana;font-size:12px;"&gt;&lt;table class="word3" cellspacing="3" cellpadding="3" border="0" style="font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-style: normal; line-height: 18px; font-weight: normal; font-variant: normal; text-transform: none; color: rgb(51, 51, 51); "&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;培训形式&lt;/b&gt;：我们的企业级高端IT培训提供以下2种培训服务形式: &lt;br /&gt;       &lt;img src="http://www.softcompass.com/images/16.gif" /&gt;   &lt;a href="" style="color: rgb(102, 102, 102); text-decoration: none; "&gt;企业内训  Onsite Training &lt;/a&gt;&lt;br /&gt;       &lt;img src="http://www.softcompass.com/images/16.gif" /&gt;   &lt;a href="" style="color: rgb(102, 102, 102); text-decoration: none; "&gt;公开课培训  Classroom Training&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;培训深度&lt;/b&gt;：对于企业内训，培训深度根据客户Team的具体情况可灵活定制，从Level 200(初中级)到Level 500(最高级)，均可提供。对于公开课培训，一般在Level 400(高级)，具体参见当期课程安排。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;培训时间&lt;/b&gt;：对于企业内训，培训时间根据客户Team的具体情况可灵活定制。对于公开课培训，请参见&lt;a href="" style="color: rgb(102, 102, 102); text-decoration: none; "&gt;公开课培训&lt;/a&gt;安排。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;培训价格&lt;/b&gt;：对于企业内训，培训价格根据客户具体需求（课程、深度、时间、人数）而不同。对于公开课培训，请参见&lt;a href="" style="color: rgb(102, 102, 102); text-decoration: none; "&gt;公开课培训&lt;/a&gt;当期定价。&lt;br /&gt;&lt;span class="Apple-style-span"  style="color: rgb(17, 17, 17);  line-height: normal; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size:16px;"&gt;&lt;table cellspacing="0" width="550" cellpadding="0"&gt;&lt;tbody&gt;&lt;tr valign="middle"&gt;&lt;td width="140" rowspan="4" class="bigtime" style="border-left-color: rgb(218, 217, 217); border-left-width: 1pt; border-left-style: solid; border-top-color: rgb(218, 217, 217); border-top-width: 1pt; border-top-style: solid; border-right-color: white; border-right-width: 1pt; border-right-style: solid; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(234, 234, 234); border-bottom-color: white; border-bottom-width: 1pt; border-bottom-style: solid; font-family: Arial, Helvetica, sans-serif; font-size: 14px; font-style: normal; line-height: 16px; font-variant: normal; text-transform: none; color: rgb(102, 102, 102); text-align: center; vertical-align: middle; text-decoration: none; background-position: initial initial; "&gt;&lt;div align="left"&gt;   语言类培训&lt;/div&gt;&lt;/td&gt;&lt;td height="25" align="left" width="270" class="word3" style="border-top-color: rgb(218, 217, 217); border-top-width: 1pt; border-top-style: solid; border-right-color: white; border-right-width: 1pt; border-right-style: solid; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(234, 234, 234); border-bottom-color: white; border-bottom-width: 1pt; border-bottom-style: solid; font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-style: normal; line-height: 18px; font-weight: normal; font-variant: normal; text-transform: none; color: rgb(51, 51, 51); background-position: initial initial; "&gt;      C++ 面向对象高级培训&lt;/td&gt;&lt;td height="25" align="center" width="150" class="word3"   style="border-top-color: rgb(218, 217, 217); border-top-width: 1pt; border-top-style: solid; border-right-color: rgb(218, 217, 217); border-right-width: 1pt; border-right-style: solid; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(234, 234, 234); border-bottom-color: white; border-bottom-width: 1pt; border-bottom-style: solid;   font-style: normal; line-height: 18px; font-weight: normal; font-variant: normal; text-transform: none; color: rgb(51, 51, 51); background-position: initial initial; font-family:Arial, Helvetica, sans-serif;font-size:12px;"&gt;&lt;span class="Apple-style-span" style="color: rgb(102, 102, 102);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height="25" align="left" class="word3" style="border-right-color: white; border-right-width: 1pt; border-right-style: solid; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(234, 234, 234); border-bottom-color: white; border-bottom-width: 1pt; border-bottom-style: solid; font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-style: normal; line-height: 18px; font-weight: normal; font-variant: normal; text-transform: none; color: rgb(51, 51, 51); background-position: initial initial; "&gt;       C++ 08(TR1)与Boost培训&lt;/td&gt;&lt;td height="25" align="center" class="word3"   style="border-right-color: rgb(218, 217, 217); border-right-width: 1pt; border-right-style: solid; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(234, 234, 234); border-bottom-color: white; border-bottom-width: 1pt; border-bottom-style: solid;   font-style: normal; line-height: 18px; font-weight: normal; font-variant: normal; text-transform: none; color: rgb(51, 51, 51); background-position: initial initial; font-family:Arial, Helvetica, sans-serif;font-size:12px;"&gt;&lt;span class="Apple-style-span" style="color: rgb(102, 102, 102);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height="25" align="left" class="word3" style="border-right-color: white; border-right-width: 1pt; border-right-style: solid; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(234, 234, 234); border-bottom-color: white; border-bottom-width: 1pt; border-bottom-style: solid; font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-style: normal; line-height: 18px; font-weight: normal; font-variant: normal; text-transform: none; color: rgb(51, 51, 51); background-position: initial initial; "&gt;      C语言高级培训&lt;/td&gt;&lt;td height="25" align="center" class="word3"   style="border-right-color: rgb(218, 217, 217); border-right-width: 1pt; border-right-style: solid; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(234, 234, 234); border-bottom-color: white; border-bottom-width: 1pt; border-bottom-style: solid;   font-style: normal; line-height: 18px; font-weight: normal; font-variant: normal; text-transform: none; color: rgb(51, 51, 51); background-position: initial initial; font-family:Arial, Helvetica, sans-serif;font-size:12px;"&gt;&lt;span class="Apple-style-span" style="color: rgb(102, 102, 102);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height="25" align="left" class="word3" style="border-right-color: white; border-right-width: 1pt; border-right-style: solid; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(234, 234, 234); border-bottom-color: white; border-bottom-width: 1pt; border-bottom-style: solid; font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-style: normal; line-height: 18px; font-weight: normal; font-variant: normal; text-transform: none; color: rgb(51, 51, 51); background-position: initial initial; "&gt;     &lt;/td&gt;&lt;td height="25" align="center" class="word3"   style="border-right-color: rgb(218, 217, 217); border-right-width: 1pt; border-right-style: solid; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(234, 234, 234); border-bottom-color: white; border-bottom-width: 1pt; border-bottom-style: solid;   font-style: normal; line-height: 18px; font-weight: normal; font-variant: normal; text-transform: none; color: rgb(51, 51, 51); background-position: initial initial; font-family:Arial, Helvetica, sans-serif;font-size:12px;"&gt;&lt;span class="Apple-style-span" style="color: rgb(102, 102, 102);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td rowspan="6" valign="middle" class="bigtime" style="border-left-color: rgb(218, 217, 217); border-left-width: 1pt; border-left-style: solid; border-right-color: white; border-right-width: 1pt; border-right-style: solid; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(234, 234, 234); border-bottom-color: white; border-bottom-width: 1pt; border-bottom-style: solid; font-family: Arial, Helvetica, sans-serif; font-size: 14px; font-style: normal; line-height: 16px; font-variant: normal; text-transform: none; color: rgb(102, 102, 102); text-align: center; vertical-align: middle; text-decoration: none; background-position: initial initial; "&gt;&lt;div align="left"&gt;   应用框架类培训&lt;/div&gt;&lt;/td&gt;&lt;td height="25" align="left" class="word3" style="border-right-color: white; border-right-width: 1pt; border-right-style: solid; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(234, 234, 234); border-bottom-color: white; border-bottom-width: 1pt; border-bottom-style: solid; font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-style: normal; line-height: 18px; font-weight: normal; font-variant: normal; text-transform: none; color: rgb(51, 51, 51); background-position: initial initial; "&gt;      Win32/Windows SDK 编程高级培训&lt;/td&gt;&lt;td height="25" align="center" class="word3"   style="border-right-color: rgb(218, 217, 217); border-right-width: 1pt; border-right-style: solid; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(234, 234, 234); border-bottom-color: white; border-bottom-width: 1pt; border-bottom-style: solid;   font-style: normal; line-height: 18px; font-weight: normal; font-variant: normal; text-transform: none; color: rgb(51, 51, 51); background-position: initial initial; font-family:Arial, Helvetica, sans-serif;font-size:12px;"&gt;&lt;span class="Apple-style-span" style="color: rgb(102, 102, 102);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height="25" align="left" class="word3" style="border-right-color: white; border-right-width: 1pt; border-right-style: solid; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(234, 234, 234); border-bottom-color: white; border-bottom-width: 1pt; border-bottom-style: solid; font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-style: normal; line-height: 18px; font-weight: normal; font-variant: normal; text-transform: none; color: rgb(51, 51, 51); background-position: initial initial; "&gt;      STL与泛型编程高级培训&lt;/td&gt;&lt;td height="25" align="center" class="word3"   style="border-right-color: rgb(218, 217, 217); border-right-width: 1pt; border-right-style: solid; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(234, 234, 234); border-bottom-color: white; border-bottom-width: 1pt; border-bottom-style: solid;   font-style: normal; line-height: 18px; font-weight: normal; font-variant: normal; text-transform: none; color: rgb(51, 51, 51); background-position: initial initial; font-family:Arial, Helvetica, sans-serif;font-size:12px;"&gt;&lt;span class="Apple-style-span" style="color: rgb(102, 102, 102);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height="25" align="left" class="word3" style="border-right-color: white; border-right-width: 1pt; border-right-style: solid; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(234, 234, 234); border-bottom-color: white; border-bottom-width: 1pt; border-bottom-style: solid; font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-style: normal; line-height: 18px; font-weight: normal; font-variant: normal; text-transform: none; color: rgb(51, 51, 51); background-position: initial initial; "&gt;      MFC高级培训&lt;/td&gt;&lt;td height="25" align="center" class="word3"   style="border-right-color: rgb(218, 217, 217); border-right-width: 1pt; border-right-style: solid; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(234, 234, 234); border-bottom-color: white; border-bottom-width: 1pt; border-bottom-style: solid;   font-style: normal; line-height: 18px; font-weight: normal; font-variant: normal; text-transform: none; color: rgb(51, 51, 51); background-position: initial initial; font-family:Arial, Helvetica, sans-serif;font-size:12px;"&gt;&lt;span class="Apple-style-span" style="color: rgb(102, 102, 102);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height="25" align="left" class="word3" style="border-right-color: white; border-right-width: 1pt; border-right-style: solid; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(234, 234, 234); border-bottom-color: white; border-bottom-width: 1pt; border-bottom-style: solid; font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-style: normal; line-height: 18px; font-weight: normal; font-variant: normal; text-transform: none; color: rgb(51, 51, 51); background-position: initial initial; "&gt;      COM/DCOM 高级培训&lt;/td&gt;&lt;td height="25" align="center" class="word3"   style="border-right-color: rgb(218, 217, 217); border-right-width: 1pt; border-right-style: solid; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(234, 234, 234); border-bottom-color: white; border-bottom-width: 1pt; border-bottom-style: solid;   font-style: normal; line-height: 18px; font-weight: normal; font-variant: normal; text-transform: none; color: rgb(51, 51, 51); background-position: initial initial; font-family:Arial, Helvetica, sans-serif;font-size:12px;"&gt;&lt;span class="Apple-style-span" style="color: rgb(102, 102, 102);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height="25" align="left" class="word3" style="border-right-color: white; border-right-width: 1pt; border-right-style: solid; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(234, 234, 234); border-bottom-color: white; border-bottom-width: 1pt; border-bottom-style: solid; font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-style: normal; line-height: 18px; font-weight: normal; font-variant: normal; text-transform: none; color: rgb(51, 51, 51); background-position: initial initial; "&gt;       ACE 网络编程高级培训&lt;/td&gt;&lt;td height="25" align="center" class="word3"   style="border-right-color: rgb(218, 217, 217); border-right-width: 1pt; border-right-style: solid; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(234, 234, 234); border-bottom-color: white; border-bottom-width: 1pt; border-bottom-style: solid;   font-style: normal; line-height: 18px; font-weight: normal; font-variant: normal; text-transform: none; color: rgb(51, 51, 51); background-position: initial initial; font-family:Arial, Helvetica, sans-serif;font-size:12px;"&gt;&lt;span class="Apple-style-span" style="color: rgb(102, 102, 102);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height="25" align="left" class="word3" style="border-right-color: white; border-right-width: 1pt; border-right-style: solid; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(234, 234, 234); border-bottom-color: white; border-bottom-width: 1pt; border-bottom-style: solid; font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-style: normal; line-height: 18px; font-weight: normal; font-variant: normal; text-transform: none; color: rgb(51, 51, 51); background-position: initial initial; "&gt;     &lt;/td&gt;&lt;td height="25" align="center" class="word3"   style="border-right-color: rgb(218, 217, 217); border-right-width: 1pt; border-right-style: solid; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(234, 234, 234); border-bottom-color: white; border-bottom-width: 1pt; border-bottom-style: solid;   font-style: normal; line-height: 18px; font-weight: normal; font-variant: normal; text-transform: none; color: rgb(51, 51, 51); background-position: initial initial; font-family:Arial, Helvetica, sans-serif;font-size:12px;"&gt;&lt;span class="Apple-style-span" style="color: rgb(102, 102, 102);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td rowspan="4" valign="middle" class="bigtime" style="border-left-color: rgb(218, 217, 217); border-left-width: 1pt; border-left-style: solid; border-right-color: white; border-right-width: 1pt; border-right-style: solid; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(234, 234, 234); border-bottom-color: rgb(218, 217, 217); border-bottom-width: 1pt; border-bottom-style: solid; font-family: Arial, Helvetica, sans-serif; font-size: 14px; font-style: normal; line-height: 16px; font-variant: normal; text-transform: none; color: rgb(102, 102, 102); text-align: center; vertical-align: middle; text-decoration: none; background-position: initial initial; "&gt;&lt;div align="left"&gt;   设计与模式类培训&lt;/div&gt;&lt;/td&gt;&lt;td height="25" align="left" class="word3" style="border-right-color: white; border-right-width: 1pt; border-right-style: solid; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(234, 234, 234); border-bottom-color: white; border-bottom-width: 1pt; border-bottom-style: solid; font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-style: normal; line-height: 18px; font-weight: normal; font-variant: normal; text-transform: none; color: rgb(51, 51, 51); background-position: initial initial; "&gt;      C++面向对象设计模式(GOF23)高级培训&lt;/td&gt;&lt;td height="25" align="center" class="word3"   style="border-right-color: rgb(218, 217, 217); border-right-width: 1pt; border-right-style: solid; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(234, 234, 234); border-bottom-color: white; border-bottom-width: 1pt; border-bottom-style: solid;   font-style: normal; line-height: 18px; font-weight: normal; font-variant: normal; text-transform: none; color: rgb(51, 51, 51); background-position: initial initial; font-family:Arial, Helvetica, sans-serif;font-size:12px;"&gt;&lt;span class="Apple-style-span" style="color: rgb(102, 102, 102);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height="25" align="left" class="word3" style="border-right-color: white; border-right-width: 1pt; border-right-style: solid; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(234, 234, 234); border-bottom-color: white; border-bottom-width: 1pt; border-bottom-style: solid; font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-style: normal; line-height: 18px; font-weight: normal; font-variant: normal; text-transform: none; color: rgb(51, 51, 51); background-position: initial initial; "&gt;      C++内存管理及设计模式高级培训&lt;/td&gt;&lt;td height="25" align="center" class="word3"   style="border-right-color: rgb(218, 217, 217); border-right-width: 1pt; border-right-style: solid; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(234, 234, 234); border-bottom-color: white; border-bottom-width: 1pt; border-bottom-style: solid;   font-style: normal; line-height: 18px; font-weight: normal; font-variant: normal; text-transform: none; color: rgb(51, 51, 51); background-position: initial initial; font-family:Arial, Helvetica, sans-serif;font-size:12px;"&gt;&lt;span class="Apple-style-span" style="color: rgb(102, 102, 102);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height="25" align="left" class="word3" style="border-right-color: white; border-right-width: 1pt; border-right-style: solid; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(234, 234, 234); border-bottom-color: white; border-bottom-width: 1pt; border-bottom-style: solid; font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-style: normal; line-height: 18px; font-weight: normal; font-variant: normal; text-transform: none; color: rgb(51, 51, 51); background-position: initial initial; "&gt;      C++性能优化高级培训&lt;/td&gt;&lt;td height="25" align="center" class="word3"   style="border-right-color: rgb(218, 217, 217); border-right-width: 1pt; border-right-style: solid; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(234, 234, 234); border-bottom-color: white; border-bottom-width: 1pt; border-bottom-style: solid;   font-style: normal; line-height: 18px; font-weight: normal; font-variant: normal; text-transform: none; color: rgb(51, 51, 51); background-position: initial initial; font-family:Arial, Helvetica, sans-serif;font-size:12px;"&gt;&lt;span class="Apple-style-span" style="color: rgb(102, 102, 102);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height="25" align="left" class="word3" style="border-right-color: white; border-right-width: 1pt; border-right-style: solid; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(234, 234, 234); border-bottom-color: rgb(218, 217, 217); border-bottom-width: 1pt; border-bottom-style: solid; font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-style: normal; line-height: 18px; font-weight: normal; font-variant: normal; text-transform: none; color: rgb(51, 51, 51); background-position: initial initial; "&gt;      C++泛型编程设计模式高级培训&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/368715695002753550-9072530055285277220?l=supersoftmm3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://supersoftmm3d.blogspot.com/feeds/9072530055285277220/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=368715695002753550&amp;postID=9072530055285277220' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/9072530055285277220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/9072530055285277220'/><link rel='alternate' type='text/html' href='http://supersoftmm3d.blogspot.com/2008/09/c.html' title='C++培训系列课程体系'/><author><name>蔡康怡</name><uri>http://www.blogger.com/profile/17714044082004899851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-368715695002753550.post-9094818611172515107</id><published>2008-09-20T18:46:00.000-07:00</published><updated>2008-09-20T18:47:13.392-07:00</updated><title type='text'>IT培训蛋糕不小 市场规模40多亿元</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS'; font-size: 14px; line-height: 25px; "&gt;&lt;p style="word-break: break-all; line-height: 1.8em !important; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "&gt;&lt;strong style="word-break: break-all; line-height: normal !important; "&gt;企业招聘 经验为王&lt;/strong&gt;&lt;/p&gt;&lt;p style="word-break: break-all; line-height: 1.8em !important; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "&gt;　　被称为朝阳产业的IT业，其从业人员平均薪酬高居各行业前列。记者从智联招聘、中华英才网、无忧工作网三大招聘&lt;a href="javascript:;" onclick="javascript:tagshow(event, '%E7%BD%91%E7%AB%99');" target="_self" style="word-break: break-all; text-decoration: none; color: rgb(101, 109, 119); line-height: normal !important; "&gt;&lt;u style="word-break: break-all; line-height: normal !important; "&gt;&lt;strong style="word-break: break-all; line-height: normal !important; "&gt;网站&lt;/strong&gt;&lt;/u&gt;&lt;/a&gt;发现，各大类职位的招聘中，IT职位需求仅次于销售，排名第二，每月有近10万个职位提供。&lt;/p&gt;&lt;p style="word-break: break-all; line-height: 1.8em !important; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "&gt;　　尽管人才市场对IT从业人员求贤若渴，但实际情况并不那么乐观。记者近期在北京的几场大型招聘会发现，“经验”成为用人单位出现频率最高的词。“项目经验、编程经验、相关语言应用经验、兼职经验”，对刚走出校门的学生而言，无疑遭遇了就业瓶颈。“高校教育重理论轻实践，尽管有上机实验，但真正的经验积累，绝非一两个实验就能获得。”某外企IT产品研发部门负责人告诉记者，IT行业的很多项目都是合作完成的，需要每个人相互配合。如果团队中多了个完全陌生的新手，必定会牵涉领导者在交流和培训中的精力。此外，新手的出错几率也很高，这对项目的进度控制及质量控制存在风险，所带来的损失也难以预计。因此，招聘方青睐有经验的IT人才也就不足为奇了。&lt;/p&gt;&lt;p style="word-break: break-all; line-height: 1.8em !important; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "&gt;　　在严峻的就业压力之下，越来越多的年轻人不得不把目光投向兼职、培训等能够获得工作经验的途径中去。据了解，仅仅是北京的计算机相关专业的学生，就有50%以上的人参加兼职或者专业培训，其他专业的学生参加IT培训的比例还要高一些。“我希望通过自己的努力，能够进入自己心仪的知名公司”，在某培训机构参加“Java工程师”培训的大三学生冯宁告诉记者，“参加培训的最大好处就是能够获得最新的技术知识，并且能积累项目开发经验。”&lt;/p&gt;&lt;p style="word-break: break-all; line-height: 1.8em !important; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "&gt;　　&lt;strong style="word-break: break-all; line-height: normal !important; "&gt;人才匮乏 猎头诞生&lt;/strong&gt;&lt;/p&gt;&lt;p style="word-break: break-all; line-height: 1.8em !important; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "&gt;　　一方面是市场对IT人才的大量需求，一方面是高校学生缺乏工作经验无法迅速融入工作中去，人才供需的失衡让近几年风行的IT培训开始成为人才市场不可忽视的力量。“仅仅是在北京，IT职位需求就占北京职场总需求的21%”，某猎头公司总监孙先生告诉记者，“不仅是高端IT人才奇货可居，就是合格的普通员工也并不那么好找。最近已经有很多客户请我寻找合适的程序员，这种现象在猎头行业是非常罕见的。”&lt;/p&gt;&lt;p style="word-break: break-all; line-height: 1.8em !important; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "&gt;　　“猎头公司往往扮演的是高级人才招聘的角色，但对于企业所需要的大量普通技术人才往往无能为力。在这种情况下，很多猎头公司开始尝试和专业的培训机构进行合作，直接预定优秀的学员，并取得了较好的效果。”北京蓝点世纪顶级JAVA培训机构负责人尹德树告诉记者，和猎头公司的合作让他看到了JAVA培训行业的“蓝海”。“任何一个行业都需要不断的创新，我们这些培训机构在经过数年的成功市场运作后也开始转型——从单一的技能培训机构转变为猎头型培训机构。”&lt;/p&gt;&lt;p style="word-break: break-all; line-height: 1.8em !important; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "&gt;　　“如果仅仅是学会了基本的操作，而缺乏完整的项目开发经验和团队合作能力，那对学生和企业而言都没有任何价值。”尹德树告诉记者，以针对用人单位需求而制定的“In-Team”顶级JAVA培训模式为例，无论是师资队伍、培训模式、资源整合都强调“Team（团队）”的概念，让学生在培训中养成团队观，为日后的迅速融入工作奠定基础。学员不但每天要完成500行以上的编码，并还要累计完成1000多个实践练习，而这已经超越了软件工程师一年的工作经验。同时，还要接受到完全真实的项目进行练习，获得真正的实际项目经验。&lt;/p&gt;&lt;p style="word-break: break-all; line-height: 1.8em !important; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "&gt;　　&lt;strong style="word-break: break-all; line-height: normal !important; "&gt;培训市场竞争激烈&lt;/strong&gt;&lt;/p&gt;&lt;p style="word-break: break-all; line-height: 1.8em !important; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "&gt;　　国内IT权威调研机构赛迪顾问IT服务分析师胡小姐表示，去年全国IT教育培训市场规模是41.49亿元，今年还将继续增长，超过这个数字。而随着奥运的临近，以及中国经济的进一步发展，市场上对IT人才的需求将再创新高，IT培训市场将成为高校传统教育的有力补充。&lt;/p&gt;&lt;p style="word-break: break-all; line-height: 1.8em !important; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "&gt;　　“很多企业要对没有实战经验的新人进行为期半年到1年的培训，支付大量的人力、财力，而培养对象一旦跳槽，又会造成企业人才投资的损失”，长期关注大学生就业的郑鹏老师指出，“现在有很多学生选择参加实战式培训来为求职增加砝码。”&lt;/p&gt;&lt;p style="word-break: break-all; line-height: 1.8em !important; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "&gt;　　“培训机构在某种程度上比猎头公司更熟悉IT企业的用人需求，尤其是对大量合格的普通IT白领的技术要求”，IT资深人士张明凯对“猎头式培训机构”的说法十分感兴趣，“就业固然是每个参加培训的学生最起码的要求，但是如何迅速积累经验，获得知名企业的工作机会。猎头型培训机构的定制人才培养模式完全根据企业所需，无疑具有很强的竞争力。”记者了解到，在长达4个月的项目驱动制培训中，会有经验丰富的项目经理亲自带队，通过公司化管理,让学员在实践中既熟练掌握了应用技术，又迅速积累了实际工作经验。&lt;/p&gt;&lt;p style="word-break: break-all; line-height: 1.8em !important; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "&gt;　　“可以预见，IT培训的竞争将达到白热化。目前我国的IT教育培训正从普及走向专业化细分阶段。比如&lt;a href="javascript:;" onclick="javascript:tagshow(event, '%E6%B8%B8%E6%88%8F');" target="_self" style="word-break: break-all; text-decoration: none; color: rgb(101, 109, 119); line-height: normal !important; "&gt;&lt;u style="word-break: break-all; line-height: normal !important; "&gt;&lt;strong style="word-break: break-all; line-height: normal !important; "&gt;游戏&lt;/strong&gt;&lt;/u&gt;&lt;/a&gt;学院的游戏人才培养、清华万博的网络工程师课程、清华美院的电脑美术&lt;a href="javascript:;" onclick="javascript:tagshow(event, '%E8%AE%BE%E8%AE%A1%E5%B8%88');" target="_self" style="word-break: break-all; text-decoration: none; color: rgb(101, 109, 119); line-height: normal !important; "&gt;&lt;u style="word-break: break-all; line-height: normal !important; "&gt;&lt;strong style="word-break: break-all; line-height: normal !important; "&gt;设计师&lt;/strong&gt;&lt;/u&gt;&lt;/a&gt;课程、蓝点世纪的顶级JAVA软件人才培养，各培训机构所设置的课程突出实际操作能力的培养，并不断升级。而猎头式培训机构的定位，也使得一些培训机构在竞争中进一步细分市场，突出自己的优势。这对整个行业的健康发展都有着积极作用。”业内人士坦言，国内外厂商对IT教育培训的专业服务关注度越来越高，这也将导致IT培训行业出现新的格局。&lt;/p&gt;&lt;p style="word-break: break-all; line-height: 1.8em !important; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "&gt;　　&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/368715695002753550-9094818611172515107?l=supersoftmm3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://supersoftmm3d.blogspot.com/feeds/9094818611172515107/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=368715695002753550&amp;postID=9094818611172515107' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/9094818611172515107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/9094818611172515107'/><link rel='alternate' type='text/html' href='http://supersoftmm3d.blogspot.com/2008/09/it-40.html' title='IT培训蛋糕不小 市场规模40多亿元'/><author><name>蔡康怡</name><uri>http://www.blogger.com/profile/17714044082004899851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-368715695002753550.post-9144565010062327222</id><published>2008-09-20T02:37:00.000-07:00</published><updated>2008-09-20T02:38:12.738-07:00</updated><title type='text'>IBM等11家科技公司上榜全球最佳品牌25强</title><content type='html'>北京时间9月19日，据国外媒体报道，国际知名杂志《商业周刊》（BusinessWeek）和著名品牌评估机构Interbrand周四公布了2008全球最具品牌价值的榜单，尽管可口可乐高居榜首，但是今年仍有11家科技公司挤入前25名。其中科技巨头Google的品牌价值增长速度最快，由去年的第20名飙升至10名。&lt;br /&gt;    &lt;br /&gt;    08年全球最具品牌价值25强 单位：十亿美元&lt;br /&gt;    BusinessWeek和Interbrand是按照品牌价值对公司营收贡献进行排名。今年IBM超过微软成为全球第二家品牌价值最高的公司。微软的座次略有下滑，由去年的第二名降至第三。&lt;br /&gt;    值得注意的是Google今年的品牌价值同比增长43%至256亿美元。而位于榜单第24名的苹果公司，其品牌价值同比增长24%至137亿美元。&lt;br /&gt;    科技公司仍然占据全球最具品牌价值榜单的重要位置，除IBM、微软、Google外，诺基亚（第5）、英特尔（第7）、惠普（第12）、思科（第17）、三星（第21）、甲骨文（第23）、苹果（第24）及索尼（第25）八家公司都跻身全球最具品牌价值25强。（芭蕉雨）&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/368715695002753550-9144565010062327222?l=supersoftmm3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://supersoftmm3d.blogspot.com/feeds/9144565010062327222/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=368715695002753550&amp;postID=9144565010062327222' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/9144565010062327222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/9144565010062327222'/><link rel='alternate' type='text/html' href='http://supersoftmm3d.blogspot.com/2008/09/ibm1125.html' title='IBM等11家科技公司上榜全球最佳品牌25强'/><author><name>蔡康怡</name><uri>http://www.blogger.com/profile/17714044082004899851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-368715695002753550.post-3959182914779914547</id><published>2008-09-16T23:02:00.001-07:00</published><updated>2008-09-16T23:02:26.518-07:00</updated><title type='text'>Building Google Chrome: A first look</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 11px; "&gt;&lt;h1 class="dek" style="font-size: 18px; font-weight: bold; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.2em; "&gt;Building Google Chrome: A first look&lt;/h1&gt;&lt;h2 class="dek2" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal bold 18px/34px Arial, Helvetica, sans-serif; font-size: 14px; color: rgb(0, 0, 0); line-height: 1.2em; margin-top: -5px; font-weight: normal; "&gt;Google's open source browser has much to offer prospective hackers (provided they use Windows)&lt;/h2&gt;&lt;p class="breadcrumb" style="font-size: 12px; font-weight: normal; line-height: 1.4em; "&gt;TAGS: &lt;a href="http://weblog.infoworld.com/fatalexception/archives/web_applications/browsers/index.html?source=Browsers" style="color: rgb(37, 103, 160); text-decoration: none; "&gt;Browsers&lt;/a&gt;, &lt;a href="http://weblog.infoworld.com/fatalexception/archives/web_applications/browsers/index.html?source=Browsers" style="color: rgb(37, 103, 160); text-decoration: none; "&gt;Browsers&lt;/a&gt;, &lt;a href="http://weblog.infoworld.com/fatalexception/archives/vendors/google/index.html?source=Google" style="color: rgb(37, 103, 160); text-decoration: none; "&gt;Google&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="post"&gt;&lt;p style="font-family: arial, helvetica, 'times new roman'; font-size: 12px; line-height: 1.6em; text-align: justify; "&gt;Last week I said I would look at Google Chrome "&lt;b&gt;&lt;a href="http://weblog.infoworld.com/fatalexception/archives/2008/09/google_chrome_a_1.html" style="color: rgb(37, 103, 160); text-decoration: none; "&gt;from a developer's perspective&lt;/a&gt;&lt;/b&gt;." I should have specified what kind. I meant I was considering it from a &lt;em&gt;Web &lt;/em&gt;developer's perspective: What does it mean for Web application builders to have yet another browser enter the already-crowded field?&lt;/p&gt;&lt;p style="font-family: arial, helvetica, 'times new roman'; font-size: 12px; line-height: 1.6em; text-align: justify; "&gt;But the more I thought about it, the more I felt it would be worthwhile to look at Chrome from the perspective of the &lt;em&gt;other &lt;/em&gt;kind of developer. After all, Chrome is open source, and there's clearly still &lt;b&gt;&lt;a href="http://weblog.infoworld.com/securityadviser/archives/2008/09/google_released.html" style="color: rgb(37, 103, 160); text-decoration: none; "&gt;some work to be done on it&lt;/a&gt;&lt;/b&gt;. So I decided to take a peek under Chrome's hood and view it through the eyes of the developers who will improve and maintain it in the coming years.&lt;/p&gt;&lt;p style="font-family: arial, helvetica, 'times new roman'; font-size: 12px; line-height: 1.6em; text-align: justify; "&gt;&lt;strong&gt;Dude, where's my code?&lt;br /&gt;&lt;/strong&gt;The first stop on my quest was &lt;b&gt;&lt;a href="http://dev.chromium.org/" target="_blank" style="color: rgb(37, 103, 160); text-decoration: none; "&gt;dev.chromium.org&lt;/a&gt;&lt;/b&gt;, the Chromium Developer Documentation site, to get a copy of the source code. "Chromium" is the name of the open source version of the Chrome browser, while "Chrome" is Google's official stable release. Get the idea? In real life, chrome is smooth and polished, while chromium is just a raw element.&lt;/p&gt;&lt;p style="font-family: arial, helvetica, 'times new roman'; font-size: 12px; line-height: 1.6em; text-align: justify; "&gt;The Chromium site explains how to download the source code for Linux, Mac OS X, or Windows. Unfortunately, if you're eagerly awaiting a Mac version of Chrome, you shouldn't hold your breath. As the &lt;b&gt;&lt;a href="http://dev.chromium.org/developers/how-tos/build-instructions-os-x" target="_blank" style="color: rgb(37, 103, 160); text-decoration: none; "&gt;Mac OS X area of the Chromium developer site&lt;/a&gt;&lt;/b&gt; explains, "Right now, the Mac build is a work in progress that is much closer to the start than the finish." In fact, according to&lt;b&gt;&lt;a href="http://dev.chromium.org/developers/mac-os-x-detailed-status" target="_blank" style="color: rgb(37, 103, 160); text-decoration: none; "&gt;the latest status report&lt;/a&gt;&lt;/b&gt;, the Chrome developers have yet to get even the browser core running under Mac OS X. Rendering actual Web pages is still a long way off, to say nothing of a usable Aqua GUI.&lt;/p&gt;&lt;p style="font-family: arial, helvetica, 'times new roman'; font-size: 12px; line-height: 1.6em; text-align: justify; "&gt;Then again, the Linux version is in arguably even worse shape. If you were laboring under the assumption that a new open source browser from Google meant an automatic win for Linux, you'd better think again. The Windows version of Chrome isn't just the first to market; it's also the master mold for all the other versions. You won't see a Linux version until the Chrome developers manage to &lt;b&gt;&lt;a href="http://dev.chromium.org/developers/how-tos/linux-development" target="_blank" style="color: rgb(37, 103, 160); text-decoration: none; "&gt;port the original Win32 codebase over to Linux&lt;/a&gt;&lt;/b&gt;, with all the headaches that implies.&lt;/p&gt;&lt;p style="font-family: arial, helvetica, 'times new roman'; font-size: 12px; line-height: 1.6em; text-align: justify; "&gt;In short, don't expect a Mac or Linux version of Chrome any time soon. Not even close.&lt;/p&gt;&lt;p style="font-family: arial, helvetica, 'times new roman'; font-size: 12px; line-height: 1.6em; text-align: justify; "&gt;So for my project, Windows was it. But even then, getting the code wasn't as easy as simply clicking a link. Instead, I first had to install a set of scripts to give me access to Chromium's Subversion source code repository. These are command-line tools, but they should feel familiar to anyone with a modicum of development experience. What checking out code from Subversion meant, however, was that I'd be working with the latest, bleeding-edge version of the code. At this early stage of the project, Chromium is definitely a moving target.&lt;/p&gt;&lt;p style="font-family: arial, helvetica, 'times new roman'; font-size: 12px; line-height: 1.6em; text-align: justify; "&gt;It might be helpful to have &lt;b&gt;&lt;a href="http://neilmcallister.com/miscellaneous/reading-list/" target="_blank" style="color: rgb(37, 103, 160); text-decoration: none; "&gt;a book to read&lt;/a&gt;&lt;/b&gt; while you wait for the source code tree to sync for the first time. The whole thing amounts to around 2.4GB of code, including all the various layout tests used to debug the WebKit rendering engine. Google says the entire download should take about an hour, depending on network activity. In my case it took at least twice that long, despite a 6Mbit broadband connection.&lt;/p&gt;&lt;p style="font-family: arial, helvetica, 'times new roman'; font-size: 12px; line-height: 1.6em; text-align: justify; "&gt;&lt;strong&gt;Dissecting a browser&lt;br /&gt;&lt;/strong&gt;Examination of the source tree reveals some interesting tidbits. Except in cases where code was borrowed from other projects, the source is released under a three-clause BSD-style license, one of the most permissive open source licenses. Google clearly has no qualms about Chromium code being used in commercial settings.&lt;/p&gt;&lt;p style="font-family: arial, helvetica, 'times new roman'; font-size: 12px; line-height: 1.6em; text-align: justify; "&gt;When Chromium does borrow, it's mostly from the expected sources. Besides the WebKit HTML rendering engine, the tree includes the typical libraries for displaying JPEGs, compressing files, and so on. It uses hunspell for its automatic spell-checker -- the same library used by Firefox 3 -- so you can expect that feature to work identically on both browsers.&lt;/p&gt;&lt;p style="font-family: arial, helvetica, 'times new roman'; font-size: 12px; line-height: 1.6em; text-align: justify; "&gt;Overall, the code looks clean and is well organized. Firefox is frequently criticized for its large, Byzantine codebase. By comparison, the Chromium code seems much more accessible to the casual programmer. Comments are plentiful, and they occasionally display some of the humor that makes the best open source projects so much fun. For example, one component of the browser core is a debugging aid dubbed the "jank-o-meter." A comment inside the source explains: "Put break point here if you want to stop threads and look at what caused the &lt;b&gt;&lt;a href="http://www.urbandictionary.com/define.php?term=janky" target="_blank" style="color: rgb(37, 103, 160); text-decoration: none; "&gt;jankiness&lt;/a&gt;&lt;/b&gt;."&lt;/p&gt;&lt;p style="font-family: arial, helvetica, 'times new roman'; font-size: 12px; line-height: 1.6em; text-align: justify; "&gt;Interestingly, Chromium was designed with a certain amount of modularity built in. For example, if for some reason you don't want to use Chromium's ultra-fast V8 JavaScript engine, you can change a few compile-time flags and build it with JavaScriptCore, the engine that ships with WebKit, instead.&lt;/p&gt;&lt;p style="font-family: arial, helvetica, 'times new roman'; font-size: 12px; line-height: 1.6em; text-align: justify; "&gt;What is not immediately evident, however, is any kind of extension mechanism. There is no directory in the source tree called "plug-ins," for example. Building an ad blocker for Chrome might be harder than it sounds.&lt;/p&gt;&lt;p style="font-family: arial, helvetica, 'times new roman'; font-size: 12px; line-height: 1.6em; text-align: justify; "&gt;&lt;strong&gt;Putting it all together&lt;br /&gt;&lt;/strong&gt;Next up: Building the actual browser. &lt;b&gt;&lt;a href="http://dev.chromium.org/developers/how-tos/build-instructions-windows" target="_blank" style="color: rgb(37, 103, 160); text-decoration: none; "&gt;To build Chrome for Windows&lt;/a&gt;&lt;/b&gt;, you'll need Visual Studio 2005 Service Pack 1 (plus some optional patches for improved performance and Vista compatibility) and &lt;b&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=F26B1AA4-741A-433A-9BE5-FA919850BDBF&amp;amp;displaylang=en" target="_blank" style="color: rgb(37, 103, 160); text-decoration: none; "&gt;the current Windows SDK&lt;/a&gt;&lt;/b&gt;. Neither Visual Studio 2003 nor 2008 are supported currently, due to incompatibility with certain parts of the Chromium codebase.&lt;/p&gt;&lt;p style="font-family: arial, helvetica, 'times new roman'; font-size: 12px; line-height: 1.6em; text-align: justify; "&gt;The folks at Google made it sound as if, once you had the source code, building Chromium was as easy as loading up the solution file in Visual Studio and pressing F7 -- so that's what I did. And you know what? They were right! Fifteen minutes and 51 compiler warnings later, I had my chrome.exe. (For reference, this was on a 2.4GHz Intel Q6600 quad-core workstation running Vista Ultimate, with 4GB of RAM and ample hard drive space.)&lt;/p&gt;&lt;p style="font-family: arial, helvetica, 'times new roman'; font-size: 12px; line-height: 1.6em; text-align: justify; "&gt;Launching the browser brought no real surprises. As the name suggests, Chromium is a rawer, less polished version of Chrome. The UI is mostly identical, with only a few very minor visual differences. All of the same options are available in the pull-down menus on the right. Sites render the same, including Flash sites. The most readily evident difference is the logo, which sheds the Google colors in favor of a subdued blue design.&lt;/p&gt;&lt;img alt="aboutchromium.jpg" src="http://weblog.infoworld.com/fatalexception/archives/aboutchromium.jpg" width="340" height="232" style="border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;p style="font-family: arial, helvetica, 'times new roman'; font-size: 12px; line-height: 1.6em; text-align: justify; "&gt;Where it comes to overall ease of use, however, Google has put in a little extra effort to differentiate Chrome from Chromium. Chrome offered to import my Firefox 3 settings automatically on first launch, and the process went without a hitch. I had to do it manually with Chromium, and when I tried, it gagged on my search engine settings and aborted the process. I managed to bring in my bookmarks by importing them separately; but while Chrome organized them just like my Firefox setup, Chromium hid them away in a subfolder.&lt;/p&gt;&lt;p style="font-family: arial, helvetica, 'times new roman'; font-size: 12px; line-height: 1.6em; text-align: justify; "&gt;These minor quibbles aside, however, my initial impression of Chromium is that it is a full-featured, usable browser. Better still, its code is straightforward and well organized, which should make it appealing to would-be browser developers who have shied away from the more daunting Mozilla codebase. I'm looking forward to seeing how it develops as Chrome moves toward its first stable release and beyond.&lt;/p&gt;&lt;a name="more" style="color: rgb(37, 103, 160); text-decoration: none; "&gt;&lt;/a&gt;&lt;p style="font-family: arial, helvetica, 'times new roman'; font-size: 12px; line-height: 1.6em; text-align: justify; "&gt;Posted by Neil McAllister on September 11, 2008 03:00 AM&lt;/p&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/368715695002753550-3959182914779914547?l=supersoftmm3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://supersoftmm3d.blogspot.com/feeds/3959182914779914547/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=368715695002753550&amp;postID=3959182914779914547' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/3959182914779914547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/3959182914779914547'/><link rel='alternate' type='text/html' href='http://supersoftmm3d.blogspot.com/2008/09/building-google-chrome-first-look.html' title='Building Google Chrome: A first look'/><author><name>蔡康怡</name><uri>http://www.blogger.com/profile/17714044082004899851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-368715695002753550.post-5661017452320012536</id><published>2008-09-16T17:13:00.000-07:00</published><updated>2008-09-16T17:14:09.945-07:00</updated><title type='text'>福布斯：企业市场 Chrome任重而道远</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: 宋体; font-size: 14px; line-height: 25px; "&gt;&lt;p style="list-style-type: none; list-style-position: initial; list-style-image: initial; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 23px; font-size: 14px; line-height: 180%; "&gt;约两周前，谷歌推出了 Chrome浏览器，在IT业界引起了不小的震动。现在的问题是，Chrome是否能提供更为强大的服务，足以使其它用户从IE和Firefox转移。&lt;/p&gt;&lt;p style="list-style-type: none; list-style-position: initial; list-style-image: initial; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 23px; font-size: 14px; line-height: 180%; "&gt;　　从人个角度讲，我喜欢喜欢 Chrome。但我认为，它要在企业市场生存需要经过艰苦的奋斗。先让我们看一下谷歌宣称的 Chrome三大优势：速度、安全和稳定性，然后再讨论其它问题。&lt;/p&gt;&lt;p style="list-style-type: none; list-style-position: initial; list-style-image: initial; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 23px; font-size: 14px; line-height: 180%; "&gt;&lt;strong&gt;　　速度&lt;/strong&gt;&lt;/p&gt;&lt;p style="list-style-type: none; list-style-position: initial; list-style-image: initial; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 23px; font-size: 14px; line-height: 180%; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="list-style-type: none; list-style-position: initial; list-style-image: initial; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 23px; font-size: 14px; line-height: 180%; "&gt;谷歌宣称Chrome比其它浏览器速度更快，我也听到一些用户关于其速度的报告，我进行的测试也非试验室测试，但 Chrome的确在速度方面并没给我深刻的印象。 Chrome不比其它IE慢，但也没有比IE明显快多少。&lt;/p&gt;&lt;p style="list-style-type: none; list-style-position: initial; list-style-image: initial; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 23px; font-size: 14px; line-height: 180%; "&gt;&lt;strong&gt;　　安全&lt;/strong&gt;&lt;/p&gt;&lt;p style="list-style-type: none; list-style-position: initial; list-style-image: initial; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 23px; font-size: 14px; line-height: 180%; "&gt;　　谷歌宣称针对目前的浏览器开发设计 Chrome.因此，谷歌没有为新的威胁和&lt;span class="articleLink"&gt;&lt;a href="http://it.hexun.com/" target="_blank" style="color: rgb(0, 51, 255); text-decoration: underline; "&gt;互联网&lt;/a&gt;&lt;/span&gt;应用开发补丁，而表示 Chrome具有一个灵活的安全架构。问题是，互联网是动态的，而非静态的。IE必须对此适应，而 Chrome也不例外。&lt;/p&gt;&lt;p style="list-style-type: none; list-style-position: initial; list-style-image: initial; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 23px; font-size: 14px; line-height: 180%; "&gt;　　微软此前就宣称IE的安全性很出色，但其总是不断推出安全补丁。实际上， Chrome推出数小时后，就出现安全问题报告。&lt;/p&gt;&lt;p style="list-style-type: none; list-style-position: initial; list-style-image: initial; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 23px; font-size: 14px; line-height: 180%; "&gt;&lt;strong&gt;　　稳定性&lt;/strong&gt;&lt;/p&gt;&lt;p style="list-style-type: none; list-style-position: initial; list-style-image: initial; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 23px; font-size: 14px; line-height: 180%; "&gt;　　Chrome具我多线程架构，因此，即使是有一个或是更多的网页出现问题时，它允许网页继续运行。在过去，一旦一个网页现出问题，整体浏览器就会出现问题，现在，这个问题也不例外。与IE相比， Chrome占用的内存更多，这对老的硬件产品用户来说就是一个问题。&lt;/p&gt;&lt;p style="list-style-type: none; list-style-position: initial; list-style-image: initial; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 23px; font-size: 14px; line-height: 180%; "&gt;&lt;strong&gt;　　出色的功能&lt;/strong&gt;&lt;/p&gt;&lt;p style="list-style-type: none; list-style-position: initial; list-style-image: initial; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 23px; font-size: 14px; line-height: 180%; "&gt;　　给我印象就深刻的是 Chrome的“最经常访问网页”。当你打开新的标签时，你会在屏幕中看到你最经常访问的网站标志。这如现你最经常使用的标签出现在屏幕上一样。我发现，在搜索主题和在不同的网站之间来回穿梭时，这一功能非常方便。 Chrome还提供“Paste and Go.”等功能。&lt;/p&gt;&lt;p style="list-style-type: none; list-style-position: initial; list-style-image: initial; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 23px; font-size: 14px; line-height: 180%; "&gt;&lt;strong&gt;　　一些网站不支持Chrome&lt;/strong&gt;&lt;/p&gt;&lt;p style="list-style-type: none; list-style-position: initial; list-style-image: initial; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 23px; font-size: 14px; line-height: 180%; "&gt;　　你会发现，Chrome在你喜爱的网站中表现出色。但如果你在一个网站中遇到问题，并希望得到网站支持时，你会发现该网站不支持Chrome应用功能。&lt;/p&gt;&lt;p style="list-style-type: none; list-style-position: initial; list-style-image: initial; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 23px; font-size: 14px; line-height: 180%; "&gt;　　支持新的浏览器往往比较慢。Firefox于2004年推出，现在占有22%的市场份额。在数周前，美国银行——全球最大的金融机构之一，宣传网站正式支持Firefox.在Chrome获得市场份额前，当Chrome运行不太好时，你必须把IE作为备用浏览器。&lt;/p&gt;&lt;p style="list-style-type: none; list-style-position: initial; list-style-image: initial; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 23px; font-size: 14px; line-height: 180%; "&gt;&lt;strong&gt;　　一些网站只支持IE&lt;/strong&gt;&lt;/p&gt;&lt;p style="list-style-type: none; list-style-position: initial; list-style-image: initial; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 23px; font-size: 14px; line-height: 180%; "&gt;　　你是否喜欢在MSN网站上玩游戏？如果是，那最好不要使用Chrome.如果你使用Chrome进入游戏频道，你会得到一个重要的信息提示“你的浏览器或是运营系统无法满足在MSN游戏区玩游戏的最低要求”。你可能会下载游戏在离线时玩，但是，在线游戏只能在IE6或是更高版本中使用。微软不会轻易让竞争对手的产品在自己的平台上随意使用。&lt;/p&gt;&lt;p style="list-style-type: none; list-style-position: initial; list-style-image: initial; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 23px; font-size: 14px; line-height: 180%; "&gt;　　在其它网站上，你也会看到这种情况，因为IE是最常用的浏览器。随着Chrome和火狐浏览器应用的增加，我希望这个问题会变得越来越小，当然，这一问题不可能宣传消失。&lt;/p&gt;&lt;p style="list-style-type: none; list-style-position: initial; list-style-image: initial; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 23px; font-size: 14px; line-height: 180%; "&gt;　　最后，对于企业用户来说，有几个问题十分重要：Chrome与Outlook Web Access的兼容性如何？它是否会与微软的统一通讯功能使用显示“存在”？&lt;/p&gt;&lt;p style="list-style-type: none; list-style-position: initial; list-style-image: initial; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 23px; font-size: 14px; line-height: 180%; "&gt;　　许多企业用户发现OWA是一种接入电遇的好办法，当你们无法接入工作电脑时。Chrome支持OWA，但有一些不同。Chrome还有日历选择功能，但你只能选择数天或是数周的内容，而IE则能为用户提供一个月的日历内容浏览。&lt;/p&gt;&lt;p style="list-style-type: none; list-style-position: initial; list-style-image: initial; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 23px; font-size: 14px; line-height: 180%; "&gt;　　如果你使用微软的统一通讯技术，你可能对“jelly bean”很熟悉。但是，这一功能 无法与Chrome兼容。Chrome面临的最大问题是，它没有充分的理由让企业转移。与OWA和不兼容，以及支持条件的严格等等，使企业坚信使用IE仍是最佳选择。&lt;/p&gt;&lt;p style="list-style-type: none; list-style-position: initial; list-style-image: initial; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 23px; font-size: 14px; line-height: 180%; "&gt;　　随着新一代网络应用的推广，人们都在讨论浏览器之争的临近。凭借IE在企业市场的霸主地位和微软在企业运算环境的强大优势，谷歌和Chrome必须拿出自己的绝活才能对抗微软。&lt;/p&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/368715695002753550-5661017452320012536?l=supersoftmm3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://supersoftmm3d.blogspot.com/feeds/5661017452320012536/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=368715695002753550&amp;postID=5661017452320012536' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/5661017452320012536'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/5661017452320012536'/><link rel='alternate' type='text/html' href='http://supersoftmm3d.blogspot.com/2008/09/chrome_16.html' title='福布斯：企业市场 Chrome任重而道远'/><author><name>蔡康怡</name><uri>http://www.blogger.com/profile/17714044082004899851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-368715695002753550.post-3009189653268601337</id><published>2008-09-15T17:37:00.000-07:00</published><updated>2008-09-15T17:38:32.762-07:00</updated><title type='text'>WTL初学者</title><content type='html'>&lt;span class="Apple-style-span"  style=" ;font-family:simsun;"&gt;&lt;h1 style="font-family: Arial, Helvetica, sans-serif; margin-top: 12px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;WTL初学者&lt;/span&gt;&lt;/h1&gt;&lt;h2 class="subtitle" style="font-family: Verdana, Arial, Helvetica, sans-serif; margin-top: 2px; margin-right: 0px; margin-bottom: 0em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;/h2&gt;&lt;div class="date" style="font-family: Verdana, Arial, Helvetica, sans-serif; color: rgb(102, 102, 102); margin-top: 9px; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;发布日期： 9/6/2005&lt;/span&gt;&lt;/span&gt;&lt;span class="datePipe" style="color: rgb(204, 204, 204); "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt; | &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;更新日期： 9/6/2005&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="height: 18px; "&gt;&lt;/div&gt;&lt;p style="font-family: Verdana, Arial, Helvetica, sans-serif; line-height: 140%; padding-top: 0px; padding-right: 0px; padding-bottom: 1em; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;对于WTL来说，我是个地道的初学者。虽然当年用C++的时候，用过VCL和MFC（那时候的WTL还没有现在这么出名），水平只是限于一般使用者。CSDN的BCB版上七千多的专家分就是明证——这小子水平也很菜。重拾对WTL的关注是因为Visual Studio 2005，微软的官方文档上已经说明，VS.NET 2005已经支持WTL在CE平台上的开发了。不过那个WTL 8.0到现在还没出来，弄得一堆人在微软新闻组里乱叫。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="font-family: Verdana, Arial, Helvetica, sans-serif; line-height: 140%; padding-top: 0px; padding-right: 0px; padding-bottom: 1em; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;为了提前感受一下，我弄了个WTL 7.1感受一下。其实WTL 7.1已经支持在EVC4下开发CE和Windows Mobile的应用程序了，我们稍后会讲到。既然是初学者，就要从最基本的入手，先用VS.NET 2003写一个WTL的应用程序吧。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="font-family: Verdana, Arial, Helvetica, sans-serif; line-height: 140%; padding-top: 0px; padding-right: 0px; padding-bottom: 1em; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;从网上下载WTL 7.1的安装包，解压后会生成一个“c:\wtl71”的文件夹。因为我们要在VS.NET 2003里写WTL程序，所以就选择执行“AppWiz70”目录下的setup71.js，如果是VS.NET 2002则选择执行“setup.js”。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="font-family: Verdana, Arial, Helvetica, sans-serif; line-height: 140%; padding-top: 0px; padding-right: 0px; padding-bottom: 1em; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;安装过程比以前要容易多了，在提示安装成功后，我们直接打开VS.NET 2003，创建新项目，在VC++项目中会多一个ATL/WTL Application Wizard的图标。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;img border="0" src="http://www.microsoft.com/china/msdn/developercenter/mobility/blog/art/wtl1.jpg" alt="a" width="530" height="364" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;img border="0" src="http://www.microsoft.com/china/msdn/developercenter/mobility/blog/art/wtl2.jpg" alt="a" width="530" height="364" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;p style="font-family: Verdana, Arial, Helvetica, sans-serif; line-height: 140%; padding-top: 0px; padding-right: 0px; padding-bottom: 1em; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;输入姓名后，按“确定”，进入生成向导。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;img border="0" src="http://www.microsoft.com/china/msdn/developercenter/mobility/blog/art/wtl3.jpg" alt="a" width="616" height="454" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;img border="0" src="http://www.microsoft.com/china/msdn/developercenter/mobility/blog/art/wtl4.jpg" alt="a" width="616" height="454" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;p style="font-family: Verdana, Arial, Helvetica, sans-serif; line-height: 140%; padding-top: 0px; padding-right: 0px; padding-bottom: 1em; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;我们选择Application Type，选择应用程序的类型。我们选择了“Enable ActiveX Control Hosting”，让这个应用程序可以作为ActiveX控件的宿主应用程序。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;img border="0" src="http://www.microsoft.com/china/msdn/developercenter/mobility/blog/art/wtl5.jpg" alt="a" width="616" height="454" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;img border="0" src="http://www.microsoft.com/china/msdn/developercenter/mobility/blog/art/wtl6.jpg" alt="a" width="616" height="454" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;p style="font-family: Verdana, Arial, Helvetica, sans-serif; line-height: 140%; padding-top: 0px; padding-right: 0px; padding-bottom: 1em; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;然后我们选择User Interface Features.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;img border="0" src="http://www.microsoft.com/china/msdn/developercenter/mobility/blog/art/wtl7.jpg" alt="a" width="616" height="454" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;p style="font-family: Verdana, Arial, Helvetica, sans-serif; line-height: 140%; padding-top: 0px; padding-right: 0px; padding-bottom: 1em; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;列出的都是应用程序常用的项，比如Toolbar和Command Bar什么的。还可以选择视图的形态，我们这里选择的都是默认。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="font-family: Verdana, Arial, Helvetica, sans-serif; line-height: 140%; padding-top: 0px; padding-right: 0px; padding-bottom: 1em; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;点击完成后，进入主界面，和MFC的应用基本没什么不同。选择编译时会报错，说atlapp.h找不到。忘了把编译路径加上了。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="font-family: Verdana, Arial, Helvetica, sans-serif; line-height: 140%; padding-top: 0px; padding-right: 0px; padding-bottom: 1em; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;“工具”菜单中选择“选项”，在“项目”节点下面选择“VC++目录”。然后在“显示以下内容的目录”下选择“包含文件”（瞧中文版翻译的……）。添加一个“c:\wtl71\include”的目录。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;img border="0" src="http://www.microsoft.com/china/msdn/developercenter/mobility/blog/art/wtl8.jpg" alt="a" width="600" height="353" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;img border="0" src="http://www.microsoft.com/china/msdn/developercenter/mobility/blog/art/wtl9.jpg" alt="a" width="600" height="353" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;p style="font-family: Verdana, Arial, Helvetica, sans-serif; line-height: 140%; padding-top: 0px; padding-right: 0px; padding-bottom: 1em; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;编译，一切正常，然后选择运行。结果就是下面这个样子。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;img border="0" src="http://www.microsoft.com/china/msdn/developercenter/mobility/blog/art/wtl10.jpg" alt="a" width="617" height="388" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;p style="font-family: Verdana, Arial, Helvetica, sans-serif; line-height: 140%; padding-top: 0px; padding-right: 0px; padding-bottom: 1em; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;好了，内容就这么多，够初学吧。其实初学不怕，关键是愿意把自己的经验与别人分享，自然会有后来者踩着你的足迹前进的。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="font-family: Verdana, Arial, Helvetica, sans-serif; line-height: 140%; padding-top: 0px; padding-right: 0px; padding-bottom: 1em; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;本文引用自&lt;/span&gt;&lt;/span&gt;&lt;a href="http://blog.csdn.net/aawolf/" target="_blank" style="color: rgb(0, 51, 204); "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;http://blog.csdn.net/aawolf/&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;，作者：马宁&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="  line-height: 15px;font-family:Verdana;font-size:11px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/368715695002753550-3009189653268601337?l=supersoftmm3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://supersoftmm3d.blogspot.com/feeds/3009189653268601337/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=368715695002753550&amp;postID=3009189653268601337' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/3009189653268601337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/3009189653268601337'/><link rel='alternate' type='text/html' href='http://supersoftmm3d.blogspot.com/2008/09/wtl.html' title='WTL初学者'/><author><name>蔡康怡</name><uri>http://www.blogger.com/profile/17714044082004899851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-368715695002753550.post-8393909823294725730</id><published>2008-09-14T19:02:00.000-07:00</published><updated>2008-09-14T19:03:12.386-07:00</updated><title type='text'>有感于“扁鹊论医术”</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: simsun; font-size: 14px; line-height: 22px; "&gt;扁鹊是我国古代名医，被人尊为“医仙”。有一天，魏文王问扁鹊：“你们家兄弟三人都精通医术，你认为谁的医术最高明？”扁鹊不假思索地说：“我大哥的医术最高明，其次是二哥，医术最不济的就是我了。”文王不解：“可是你的名气最大啊，什么原因呢？”扁鹊回答说：“我大哥在病人有隐患但尚未发病时就治病，病人不知道他事先能铲除病因，也很少有人在发病前看病，所以他的名声无法传出去。我二哥在病人病情刚发展起来的时候治病，一般人以为自己只是得了小病，一治就愈，所以他只是乡里有名气。而我是在病人病情严重时候才发现病和治病，还常常动大手术，所以许多人都以为我医术高明。”魏文王觉得有道理，说“你说得很对”。&lt;p&gt;    扁鹊的这番话表现的不只是他的诚实和谦逊，还在于他给我们提供了一个考虑问题的思路，就是用什么样的态度来对待一个人的能力和业绩。扁鹊对这个问题的认识是清醒的，其大哥防患于未然，二哥治病于萌芽，无疑都要比自己只到病人病情严重时才能看出来并进行施救的水平要高得多，可论功名却往往不成正比。其中原因是什么呢？我觉得就在于人们有一种“实用性思维”，也就是在某一关键事情上，只有你付出更多且有效的劳动才承认你，否则都会被轻视和忽略。&lt;/p&gt;&lt;p&gt;    扁鹊的医术观其实就是一种识人观。古往今来有不少这样的人，他们只看到对方能做什么具体的事，能干什么活，而看不出其远见卓识和雄才大略。霸王项羽就属于这样的人，当年韩信、陈平等诸多富有战略眼光的名将和谋士都在其麾下，但项羽却眼圈狭小，看不出他们的大智大勇，一个也不重用。结果他们中有的人投奔到刘邦门下，成为一代名将，最终将项羽消灭。三国时期的袁绍也是这样的人。官渡之战前夕，富有远见的谋臣田丰分析敌我兵情，觉得暂不宜与士气正旺的曹操部队交战。袁绍不仅不听，还将田丰囚禁起来。结果不出田丰所料。可战败归来的袁绍不仅不视田丰为高明，反而将其杀之。由于人的学识、经验和智商不同，生活中不乏富有卓识远见和能够见微知著的人，他们能够将一些不良后果消灭在萌芽状态。对于这样的人，我们不仅要听其言，还要作为重要人才加以推崇，使得他们声名远播，提出更好更多的建议，这对于我们的事业大有好处。&lt;/p&gt;&lt;p&gt;    扁鹊的医术观也是一种业绩观，就是以什么样的眼光和态度来看待一个人的业绩。不否认，有的人把具体工作做得很扎实、很出色，值得嘉许。但也不应忽视那些事前有预料、防患于未然的人，他们的一句预言、一次遏制，就能把事情的恶果消灭在萌芽状态，所产生的效益要比亡羊补牢高得多。在布鲁塞尔广场上有一尊尿童的雕塑，据传当年法军入侵比利时，在法军堆集大量炸药，点燃导火索破城的千钧一发之际，路过此处的小童于廉急中生智，用自己的一泡尿浇熄了嗞嗞作响的导火索，从而保住了全城人的性命。小于廉这一英雄壮举可谓千百雄兵所不能比，为此，比利时人将其视为英雄，为其塑像，完全应该。可生活中有的人并不这样想问题，“焦头烂额座上客，曲突徙薪阶下囚”，在一个单位出了问题，往往是抢救者受到表扬奖励，而那些有预言并能防止事故发生者却被忽视，即使受表扬也轻描淡写。这样的结果，往往是人们不愿意对一些问题进行前瞻性思考，即使有思考、有预见也不愿意积极主动地说出来，这对于我们在工作中预防隐患，提高效益是不利的。&lt;/p&gt;&lt;p&gt;    读扁鹊一番话，觉得他不只是名医，也是一位哲人，其语言中的哲理很值得我们铭记。&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/368715695002753550-8393909823294725730?l=supersoftmm3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://supersoftmm3d.blogspot.com/feeds/8393909823294725730/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=368715695002753550&amp;postID=8393909823294725730' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/8393909823294725730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/8393909823294725730'/><link rel='alternate' type='text/html' href='http://supersoftmm3d.blogspot.com/2008/09/blog-post_14.html' title='有感于“扁鹊论医术”'/><author><name>蔡康怡</name><uri>http://www.blogger.com/profile/17714044082004899851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-368715695002753550.post-689767868415034492</id><published>2008-09-10T06:38:00.001-07:00</published><updated>2008-09-10T06:38:23.767-07:00</updated><title type='text'>清理QQ垃圾文件</title><content type='html'>&lt;div&gt;常年用QQ的朋友是否曾清理QQ垃圾文件，你们在重装QQ前，会备份一下你的号码文件夹吧？如果有一天你发现你的硬盘空间越来越小了，一定要记得查看QQ文件夹，是不是已经塞进了好多垃圾！笔者QQ装在E盘,重装QQ,重装系统都没动过QQ安装目录,垃圾文件可想而知,下面来清理一下这里的垃圾文件。&lt;/div&gt;&lt;div&gt;安装目录:ProgramFilesTencentQQ你的QQ号码CustomFaceRecv &lt;/div&gt;&lt;div&gt;安装目录:ProgramFilesTencentQQ你的QQ号码image &lt;/div&gt;&lt;div&gt;这2个文件夹是QQ的图片缓存目录，别人给你发的表情、截图，或者不管是不是给你的，只要在群中发出来的图片，都会保存在这里。时间久了，这2个文件可以达到GB级！！！！！放心删除，不会影响你已经保存的那些表情和头像的，它们不在这2个文件夹内。 &lt;/div&gt;&lt;div&gt;如果你有多个号码，记得把相应号码下的这2个文件夹内的东东统统删除。不管什么程序，我们都定期清理系统的垃圾文件，可以提高我们系统的运行速度。 &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/368715695002753550-689767868415034492?l=supersoftmm3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://supersoftmm3d.blogspot.com/feeds/689767868415034492/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=368715695002753550&amp;postID=689767868415034492' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/689767868415034492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/689767868415034492'/><link rel='alternate' type='text/html' href='http://supersoftmm3d.blogspot.com/2008/09/qq.html' title='清理QQ垃圾文件'/><author><name>蔡康怡</name><uri>http://www.blogger.com/profile/17714044082004899851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-368715695002753550.post-4435078132812249046</id><published>2008-09-08T22:39:00.000-07:00</published><updated>2008-09-08T22:40:35.340-07:00</updated><title type='text'>引子</title><content type='html'>&lt;span class="Apple-style-span"   style="  line-height: 19px; font-family:arial;font-size:14px;"&gt;&lt;h3 style="line-height: 104%; font-weight: normal; font-size: 135%; display: block; padding-top: 0.1em; padding-right: 5px; padding-bottom: 0.1em; padding-left: 5px; margin-top: 1em; margin-right: -5px; margin-bottom: 0.35em; margin-left: -5px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 1px; border-left-width: 0px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; height: auto; background-color: transparent; color: rgb(170, 0, 0); border-top-color: rgb(233, 228, 210); border-right-color: rgb(233, 228, 210); border-bottom-color: rgb(233, 228, 210); border-left-color: rgb(233, 228, 210); "&gt;2.1 引子&lt;/h3&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;如果你是一个纯粹的实用主义者，也许一开始就可以从这里开始看起，因为此处提供了一个示例程序，它可以带给你有关使用STL的最直接的感受。是的，与其纸上谈兵，不如单刀直入，实际操作一番。但是，需要提醒的是，假如你在兴致昂然地细细品味本章内容的时候，能够同时结合前面章节作为佐餐，那将是再好不过的。你会发现，前面所提到的有关STL的那些优点，在此处得到了确切的应证。本章的后半部分，将为你演示在一些主流C ++编译器上，运行上述示例程序的具体操作方法，和需要注意的事项。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;&lt;/p&gt;&lt;h3 style="line-height: 104%; font-weight: normal; font-size: 135%; display: block; padding-top: 0.1em; padding-right: 5px; padding-bottom: 0.1em; padding-left: 5px; margin-top: 1em; margin-right: -5px; margin-bottom: 0.35em; margin-left: -5px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 1px; border-left-width: 0px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; height: auto; background-color: transparent; color: rgb(170, 0, 0); border-top-color: rgb(233, 228, 210); border-right-color: rgb(233, 228, 210); border-bottom-color: rgb(233, 228, 210); border-left-color: rgb(233, 228, 210); "&gt;&lt;a name="2.2 例程实作"&gt;&lt;/a&gt;2.2 例程实作&lt;/h3&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;非常遗憾，我不得不舍弃"Hello World"这个经典的范例，尽管它不只一次的被各种介绍计算机语言的教科书所引用，几乎成为了一个默认的“标准”。其原因在于它太过简单了，以至于不具备代表性，无法展现STL的巨大魅力。我选用了一个稍稍复杂一点的例子，它的大致功能是：从标准输入设备（一般是键盘）读入一些整型数据，然后对它们进行排序，最终将结果输出到标准输出设备（一般是显示器屏幕）。这是一种典型的处理方式，程序本身具备了一个系统所应该具有的几乎所有的基本特征：输入 + 处理 + 输出。你将会看到三个不同版本的程序。第一个是没有使用STL的普通C++程序，你将会看到完成这样看似简单的事情，需要花多大的力气，而且还未必没有一点问题（真是吃力不讨好）。第二个程序的主体部分使用了STL特性，此时在第一个程序中所遇到的问题就基本可以解决了。同时，你会发现采用了STL之后，程序变得简洁明快，清晰易读。第三个程序则将STL的功能发挥到了及至，你可以看到程序里几乎每一行代码都是和STL相关的。这样的机会并不总是随处可见的，它展现了STL中的几乎所有的基本组成部分，尽管这看起来似乎有点过分了。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;有几点是需要说明的：&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;这个例程的目的，在于向你演示如何在C++程序中使用STL，同时希望通过实践，证明STL所带给你的确确实实的好处。程序中用到的一些STL基本组件，比如：vector（一种容器）、sort（一种排序算法），你只需要有一个大致的概念就可以了，这并不影响阅读代码和理解程序的含义。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;很多人对GUI（图形用户界面）的运行方式很感兴趣，这也难怪，漂亮的界面总是会令人赏心悦目的。但是很可惜，在这里没有加入这些功能。这很容易解释，对于所提供的这个简单示例程序而言，加入GUI特性，是有点本末倒置的。这将会使程序的代码量骤然间急剧膨胀，而真正可以说明问题的核心部分确被淹没在诸多无关紧要的代码中间（你需要花去极大的精力来处理键盘或者鼠标的消息响应这些繁琐而又较为规范的事情）。即使你有像Borland C++ Builder这样的基于IDE（集成化开发环境）的工具，界面的处理变得较为简单了（框架代码是自动生成的）。请注意，我们这里所谈及的是属于C++标准的一部分（STL的第一个字母说明了这一点），它不涉及具体的某个开发工具，它是几乎在任何C++编译器上都能编译通过的代码。毕竟，在 Microsoft Visual C++和Borland C++ Builder里，有关GUI的处理代码是不一样的。如果你想了解这些GUI的细节，这里恐怕没有你希望得到的答案，你可以寻找其它相关书籍。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;&lt;strong style="font-weight: bold; "&gt;2.2.1 第一版：史前时代--转木取火&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;在STL还没有降生的"黑暗时代"，C++程序员要完成前面所提到的那些功能，需要做很多事情（不过这比起C程序来，似乎好一点），程序大致是如下这个样子的：&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;&lt;/p&gt;&lt;pre style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; color: rgb(122, 71, 7); overflow-x: scroll; overflow-y: scroll; width: auto; "&gt;// name:example2_1.cpp // alias:Rubish  #include &lt;stdlib.h&gt; #include &lt;iostream.h&gt;  int compare(const void *arg1, const void *arg2);  void main(void) { const int max_size = 10; // 数组允许元素的最大个数 int num[max_size]; // 整型数组  // 从标准输入设备读入整数，同时累计输入个数， // 直到输入的是非整型数据为止 int n; for (n = 0; cin &gt;&gt; num[n]; n ++);  // C标准库中的快速排序（quick-sort）函数 qsort(num, n, sizeof(int), compare);  // 将排序结果输出到标准输出设备 for (int i = 0; i &lt;&gt; *(int *)arg2) ? 1 : 0; } &lt;/iostream.h&gt;&lt;/stdlib.h&gt;&lt;/pre&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;这是一个和STL没有丝毫关系的传统风格的C++程序。因为程序的注释已经很详尽了，所以不需要我再做更多的解释。总的说来，这个程序看起来并不十分复杂（本来就没有太多功能）。只是，那个compare函数，看起来有点费劲。指向它的函数指针被作为最后一个实参传入qsort函数，qsort是C程序库stdlib.h中的一个函数。以下是qsort的函数原型：&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;void qsort(void *base, size_t num, size_t width, int (__cdecl *compare )(const void *elem1, const void *elem2 ) ); 看起来有点令人作呕，尤其是最后一个参数。大概的意思是，第一个参数指明了要排序的数组（比如：程序中的num），第二个参数给出了数组的大小（qsort没有足够的智力预知你传给它的数组的实际大小），第三个参数给出了数组中每个元素以字节为单位的大小。最后那个长长的家伙，给出了排序时比较元素的方式（还是因为qsort的智商问题）。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;以下是某次运行的结果：&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;输入：0 9 2 1 5&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;输出：0 1 2 5 9有一个问题，这个程序并不像看起来那么健壮（Robust）。如果我们输入的数字个数超过max_size所规定的上限，就会出现数组越界问题。如果你在Visual C++的IDE环境下以控制台方式运行这个程序时，会弹出非法内存访问的错误对话框。这个问题很严重，严重到足以使你开始重新审视这个程序的代码。为了弥补程序中的这一缺陷。我们不得不考虑采用如下三种方案中的一种：&lt;/p&gt;&lt;ol style="margin-top: 0px; background-color: transparent; "&gt;&lt;li style="background-color: transparent; line-height: 1.4em; "&gt;采用大容量的静态数组分配。&lt;/li&gt;&lt;li style="background-color: transparent; line-height: 1.4em; "&gt;限定输入的数据个数。&lt;/li&gt;&lt;li style="background-color: transparent; line-height: 1.4em; "&gt;采用动态内存分配。&lt;/li&gt;&lt;/ol&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;第一种方案比较简单，你所做的只是将max_size改大一点，比如：1000或者10000。但是，严格讲这并不能最终解决问题，隐患仍然存在。假如有人足够耐心，还是可以使你的这个经过纠正后的程序崩溃的。此外，分配一个大数组，通常是在浪费空间，因为大多数情况下，数组中的一部分空间并没有被利用。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;再来看看第二种方案，通过在第一个for循环中加入一个限定条件，可以使问题得到解决。比如：for (int n = 0; cin &gt;&gt; num[n] &amp;amp;&amp;amp; n &lt;&gt;&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;看来只有选择第三种方案了。是的，你可以利用指针，以及动态内存分配妥善的解决上述问题，并且使程序具有良好的灵活性。这需要用到new，delete操作符，或者古老的malloc()， realloc()和free()函数。但是为此，你将牺牲程序的简洁性，使程序代码陡增，代码的处理逻辑也不再像原先看起来那么清晰了。一个 compare函数或许就已经令你不耐烦了，更何况要实现这些复杂的处理机制呢？很难保证你不会在处理这个问题的时候出错，很多程序的bug往往就是这样产生的。同时，你还应该感谢stdlib.h，它为你提供了qsort函数，否则，你还需要自己实现排序算法。如果你用的是冒泡法排序，那效率就不会很理想。……，问题真是越来越让人头疼了！&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;关于第一个程序的讨论就到此为止，如果你对第三种方案感兴趣的话，可以尝试着自己编写一个程序，作为思考题。这里就不准备再浪费笔墨去实现这样一个让人不甚愉快的程序了。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;&lt;strong style="font-weight: bold; "&gt;2.2.2 第二版：工业时代--组件化大生产&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;我们应该庆幸自己所生活的年代。工业时代，科技的发展所带来的巨大便利已经影响到了我们生活中的每个细节。如果你还在以原始人类的方式生活着，那我真该怀疑你是否属于某个生活在非洲或者南美丛林里的原始部落中的一员了，难道是玛雅文明又重现了？&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;STL便是这个时代的产物，正如其他科技成果一样，C++程序员也应该努力使自己适应并充分利用这个"高科技成果"。让我们重新审视第一版的那个破烂不堪的程序。试着使用一下STL，看看效果如何。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;&lt;/p&gt;&lt;pre style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; color: rgb(122, 71, 7); overflow-x: scroll; overflow-y: scroll; width: auto; "&gt;// name:example2_2.cpp // alias:The first STL program  #include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;algorithm&gt;  using namespace std;  void main(void) { vector&lt;int&gt; num; // STL中的vector容器 int element;  // 从标准输入设备读入整数， // 直到输入的是非整型数据为止 while (cin &gt;&gt; element) num.push_back(element);  // STL中的排序算法 sort(num.begin(), num.end());  // 将排序结果输出到标准输出设备 for (int i = 0; i &lt;&gt;这个程序的主要部分改用了STL的部件，看起来要比第一个程序简洁一点，你已经找不到那个讨厌的compare函数了。它真的能很好的运行吗？你可以试试，因为程序的运行结果和前面的大致差不多，所以在此略去。我可以向你保证，这个程序是足够健壮的。不过，可能你还没有完全看明白程序的代码，所以我需要为你解释一下。毕竟，这个戏法变得太快了，较之第一个程序，一眨眼的功夫，那些老的C++程序员所熟悉的代码都不见了，取而代之的是一些新鲜玩意儿。&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;程序的前三行是包含的头文件，它们提供了程序所要用到的所有C++特性（包括输入输出处理，STL中的容器和算法）。不必在意那个.h，并不是我的疏忽，程序保证可以编译通过，只要你的C++编译器支持标准C++规范的相关部分。你只需要把它们看作是一些普通的C++头文件就可以了。事实上，也正是如此，如果你对这个变化细节感兴趣的化，可以留意一下你身旁的佐餐。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;同样可以忽略第四行的存在。加入那个声明只是为了表明程序引用到了std这个标准名字空间（namespace），因为STL中的那些玩意儿全都包含在那里面。只有通过这行声明，编译器才能允许你使用那些有趣的特性。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;程序中用到了vector，它是STL中的一个标准容器，可以用来存放一些元素。你可以把vector理解为int [?]，一个整型的数组。之所以大小未知是因为，vector是一个可以动态调整大小的容器，当容器已满时，如果再放入元素则vector会悄悄扩大自己的容量。push_back是vector容器的一个类属成员函数，用来在容器尾端插入一个元素。main函数中第一个while循环做的事情就是不断向 vector容器尾端插入整型数据，同时自动维护容器空间的大小。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;sort是STL中的标准算法，用来对容器中的元素进行排序。它需要两个参数用来决定容器中哪个范围内的元素可以用来排序。这里用到了vector的另两个类属成员函数。begin()用以指向vector的首端，而end()则指向vector的末端。这里有两个问题，begin()和end()的返回值是什么？这涉及到STL的另一个重要部件--迭代器（Iterator），不过这里并不需要对它做详细了解。你只需要把它当作是一个指针就可以了，一个指向整型数据的指针。相应的sort函数声明也可以看作是void sort(int* first, int* last)，尽管这实际上很不精确。另一个问题是和end()函数有关，尽管前面说它的返回值指向vector的末端，但这种说法不能算正确。事实上，它的返回值所指向的是vector中最末端元素的后面一个位置，即所谓pass-the-end value。这听起来有点费解，不过不必在意，这里只是稍带一提。总的来说，sort函数所做的事情是对那个准整型数组中的元素进行排序，一如第一个程序中的那个qsort，不过比起qsort来，sort似乎要简单了许多。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;程序的最后是输出部分，在这里vector完全可以以假乱真了，它所提供的对元素的访问方式简直和普通的C++内建数组一模一样。那个size函数用来返回vector中的元素个数，就相当于第一个程序中的变量n。这两行代码直观的不用我再多解释了。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;我想我的耐心讲解应该可以使你大致看懂上面的程序了，事实上STL的运用使程序的逻辑更加清晰，使代码更易于阅读。试问，有谁会不明白begin、 end、size这样的字眼所表达的含义呢（除非他不懂英语）？试着运行一下，看看效果。再试着多输入几个数，看看是否会发生数组越界现象。实践证明，程序运行良好。是的，由于vector容器自行维护了自身的大小，C++程序员就不用操心动态内存分配了，指针的错误使用毕竟会带来很多麻烦，同时程序也会变得冗长无比。这正是前面第三种方案的缺点所在。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;再仔细审视一下你的第一个STL版的C++程序，回顾一下第一章所提到的那些有关STL的优点：易于使用，具有工业强度……，再比较一下第一版的程序，我想你应该有所体会了吧！&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;&lt;strong style="font-weight: bold; "&gt;2.2.3 第三版：唯美主义的杰作&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;事态的发展有时候总会趋向极端，这在那些唯美主义者当中犹是如此。首先声明，我并不是一个唯美主义者，提供第二版程序的改进版，完全是为了让你更深刻的感受到STL的魅力所在。在看完第三版之后，你会强烈感受到这一点。或许你也会变成一个唯美主义者了，至少在STL方面。这应该不是我的错，因为决定权在你手里。下面我们来看看这个绝版的C++程序。&lt;/p&gt;&lt;pre style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; color: rgb(122, 71, 7); overflow-x: scroll; overflow-y: scroll; width: auto; "&gt;// name:example2_3.cpp // alias:aesthetic version  #include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;algorithm&gt; #include &lt;iterator&gt;  using namespace std;  void main(void) { typedef vector&lt;int&gt; int_vector; typedef istream_iterator&lt;int&gt; istream_itr; typedef ostream_iterator&lt;int&gt; ostream_itr; typedef back_insert_iterator&lt;&gt; back_ins_itr;  // STL中的vector容器 int_vector num;  // 从标准输入设备读入整数， // 直到输入的是非整型数据为止 copy(istream_itr(cin), istream_itr(), back_ins_itr(num));  // STL中的排序算法 sort(num.begin(), num.end());  // 将排序结果输出到标准输出设备 copy(num.begin(), num.end(), ostream_itr(cout, "\n")); } &lt;/int&gt;&lt;/int&gt;&lt;/int&gt;&lt;/iterator&gt;&lt;/algorithm&gt;&lt;/vector&gt;&lt;/iostream&gt;&lt;/pre&gt;在这个程序里几乎每行代码都是和STL有关的（除了main和那对花括号，当然还有注释），并且它包含了STL中几乎所有的各大部件（容器 container，迭代器iterator, 算法algorithm, 适配器adaptor），唯一的遗憾是少了函数对象（functor）的身影。&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;还记得开头提到的一个典型系统所具有的基本特征吗？--输入+处理+输出。所有这些功能，在上面的程序里，仅仅是通过三行语句来实现的，其中每一行语句对应一种操作。对于数据的操作被高度的抽象化了，而算法和容器之间的组合，就像搭积木一样轻松自如，系统的耦合度被降到了极低点。这就是闪耀着泛型之光的STL的伟大力量。如此简洁，如此巧妙，如此神奇！就像魔术一般，以至于再一次让你摸不着头脑。怎么实现的？为什么在看第二版程序的时候如此清晰的你，又坠入了五里雾中（窃喜）。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;请留意此处的标题（唯美主义的杰作），在实际环境中，你未必要做到这样完美。毕竟美好愿望的破灭，在生活中时常会发生。过于理想化，并不是一件好事，至少我是这么认为的。正如前面提到的，这个程序只是为了展示STL的独特魅力，你不得不为它的出色表现所折服，也许只有深谙STL之道的人才会想出这样的玩意儿来。如果你只是一般性的使用STL，做到第二版这样的程度也就可以了。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;实在是因为这个程序太过"简单"，以至于我无法肯定，在你还没有完全掌握STL之前，通过我的讲解，是否能够领会这区区三行代码，我将尽我的最大努力。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;前面提到的迭代器可以对容器内的任意元素进行定位和访问。在STL里，这种特性被加以推广了。一个cin代表了来自输入设备的一段数据流，从概念上讲它对数据流的访问功能类似于一般意义上的迭代器，但是C++中的cin在很多地方操作起来并不像是一个迭代器，原因就在于其接口和迭代器的接口不一致（比如：不能对cin进行++运算，也不能对之进行取值运算--即*运算）。为了解决这个矛盾，就需要引入适配器的概念。istream_iterator便是一个适配器，它将cin进行包装，使之看起来像是一个普通的迭代器，这样我们就可以将之作为实参传给一些算法了（比如这里的copy算法）。因为算法只认得迭代器，而不会接受cin。对于上面程序中的第一个copy函数而言，其第一个参数展开后的形式是：istream_iterator(cin)，其第二个参数展开后的形式是：istream_iterator()（如果你对typedef的语法不清楚，可以参考有关的c++语言书籍）。其效果是产生两个迭代器的临时对象，前一个指向整型输入数据流的开始，后一个则指向"pass-the-end value"。这个函数的作用就是将整型输入数据流从头至尾逐一"拷贝"到vector这个准整型数组里，第一个迭代器从开始位置每次累进，最后到达第二个迭代器所指向的位置。或许你要问，如果那个copy函数的行为真如我所说的那样，为什么不写成如下这个样子呢？&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;copy(istream_iterator&lt;int&gt;(cin), istream_iterator&lt;int&gt;(), num.begin());&lt;/int&gt;&lt;/int&gt;&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;你确实可以这么做，但是有一个小小的麻烦。还记得第一版程序里的那个数组越界问题吗？如果你这么写的话，就会遇到类似的麻烦。原因在于copy函数在" 拷贝"数据的时候，如果输入的数据个数超过了vector容器的范围时，数据将会拷贝到容器的外面。此时，容器不会自动增长容量，因为这只是简单地拷贝，并不是从末端插入。为了解决这个问题，另一个适配器back_insert_iterator登场了，它的作用就是引导copy算法每次在容器末端插入一个数据。程序中的那个back_ins_itr(num)展开后就是：back_insert_iterator(num)，其效果是生成一个这样的迭待器对象。终于将讲完了三分之一（真不容易！），好在第二句和前一版程序没有差别，这里就略过了。至于第三句，ostream_itr(cout, "\n")展开后的形式是：ostream_iterator(cout, "\n")，其效果是产生一个处理输出数据流的迭待器对象，其位置指向数据流的起始处，并且以"\n"作为分割符。第二个copy函数将会从头至尾将 vector中的内容"拷贝"到输出设备，第一个参数所代表的迭代器将会从开始位置每次累进，最后到达第二个参数所代表的迭代器所指向的位置。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;这就是全部的内容。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;&lt;/p&gt;&lt;h3 style="line-height: 104%; font-weight: normal; font-size: 135%; display: block; padding-top: 0.1em; padding-right: 5px; padding-bottom: 0.1em; padding-left: 5px; margin-top: 1em; margin-right: -5px; margin-bottom: 0.35em; margin-left: -5px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 1px; border-left-width: 0px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; height: auto; background-color: transparent; color: rgb(170, 0, 0); border-top-color: rgb(233, 228, 210); border-right-color: rgb(233, 228, 210); border-bottom-color: rgb(233, 228, 210); border-left-color: rgb(233, 228, 210); "&gt;&lt;a name="2.3 历史的评价"&gt;&lt;/a&gt;2.3 历史的评价&lt;/h3&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;历史的车轮总是滚滚向前的，工业时代的文明较之史前时代，当然是先进并且发达的。回顾那两个时代的C++程序，你会真切的感受到这种差别。简洁易用，具有工业强度，较好的可移植性，高效率，加之第三个令人目眩的绝版程序所体现出来的高度抽象性，高度灵活性和组件化特性，使你对STL背后所蕴含的泛型化思想都有了些微的感受。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;真幸运，你可以横跨两个时代，有机会目睹这种"文明"的差异。同时，这也应该使你越加坚定信念，使自己顺应时代的潮流。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;&lt;/p&gt;&lt;h3 style="line-height: 104%; font-weight: normal; font-size: 135%; display: block; padding-top: 0.1em; padding-right: 5px; padding-bottom: 0.1em; padding-left: 5px; margin-top: 1em; margin-right: -5px; margin-bottom: 0.35em; margin-left: -5px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 1px; border-left-width: 0px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; height: auto; background-color: transparent; color: rgb(170, 0, 0); border-top-color: rgb(233, 228, 210); border-right-color: rgb(233, 228, 210); border-bottom-color: rgb(233, 228, 210); border-left-color: rgb(233, 228, 210); "&gt;&lt;a name="2.4 如何运行"&gt;&lt;/a&gt;2.4 如何运行&lt;/h3&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;在你还没有真正开始运行前面后两个程序之前，最好先浏览一下本节。这里简单介绍了在特定编译器环境下运行STL程序的一些细节，并提供了一些可能遇到的问题的解决办法。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;此处，我选用了目前在Windows平台下较为常见的Microsoft Visual C++ 6.0和Borland C++ Builder 6.0作为例子。尽管Visual C++ 6.0对最新的ANSI/ISO C++标准支持的并不是很好。不过据称Visual C++ .NET（也就是VC7.0）在这方面的性能有所改善。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;你可以选用多种方式运行前面的程序，比如在Visual C++下，你可以直接在DOS命令行状态下编译运行，也可以在VC的IDE下采用控制台应用程序（Console Application）的方式运行。对于C++ Builder，情况也类似。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;对于Visual C++而言，如果是在DOS命令行状态下，你首先需要找到它的编译器。假定你的Visual C++装在C:\Program Files\Microsoft Visual Studio\VC98下面，则其编译器所在路径应该是C:\Program Files\Microsoft Visual Studio\VC98\Bin，在那里你可以找到cl.exe文件。编译时请加上/GX和/MT参数。如果一切正常，结果就会产生一个可执行文件。如下所示：&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;cl /GX /MT example2_2.cpp&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;前一个参数用于告知编译器允许异常处理（Exception Handling）。在P. J. Plauger STL中的很多地方使用了异常处理机制（即try…throw…catch语法），所以应该加上这个参数，否则会有如下警告信息：&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;warning C4530: C++ exception handler used, but unwind semantics are not enabled.&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;后一个参数则用于使程序支持多线程，它需要在链接时使用LIBCMT.LIB库文件。不过P. J. Plauger STL并不是线程安全的（thread safety）。如果你是在VC环境下使用像STLport这样的STL实现版本，则需要加上这个参数，因为STLport是线程安全的。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;如果在IDE环境下，可以在新建工程的时候选择控制台应用程序。&lt;br /&gt;&lt;img src="http://www.chinaitlab.com/www/imgfiles/2005.6.13.11.15.16.3.jpg" style="vertical-align: text-bottom; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt; &lt;br /&gt;图3：在Visual C++ IDE环境下运行STL程序&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;至于那些参数的设置，则可以通过在Project功能菜单项中的Settings功能【Alt+F7】中设置编译选项来完成。 &lt;br /&gt;&lt;img src="http://www.chinaitlab.com/www/imgfiles/2005.6.13.11.15.27.4.jpg" style="vertical-align: text-bottom; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;; &lt;br /&gt;图4：在Visual C++ IDE环境下设置编译参数&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;有时，在IDE环境下编译STL程序时，可能会出现如下警告信息（前面那几个示例程序不会出现这种情况）：&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;warning C4786: '……' : identifier was truncated to '255' characters in the debug information&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;这是因为编译器在Debug状态下编译时，把程序中所出现的标识符长度限制在了255个字符范围内。如果超过最大长度，这些标识符就无法在调试阶段查看和计算了。而在STL程序中大量的用到了模板函数和模板类，编译器在实例化这些内容时，展开之后所产生的标识符往往很长（没准会有一千多个字符！）。如果你想认识一下这个warning的话，很简单，在程序里加上如下一行代码：&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;vector&lt;string&gt; string_array; // 类似于字符串数组变量&lt;/string&gt;&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;对于这样的warning，当然可以置之不理，不过也是有解决办法的。 你可以在文件开头加入下面这一行：#pragma warning(disable: 4786)。它强制编译器忽略这个警告信息，这种做法虽然有点粗鲁，但是很有效。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;至于C++ Builder，其DOS命令行状态下的运行方式是这样的。假如你的C++ Builder装在C:\Program Files\Borland\CBuilder6。则其编译器所在路径应该是C:\Program Files\ Borland\CBuilder6\Bin，在那里你可以找到bcc32.exe文件，输入如下命令，即大功告成了：&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;bcc32 example2_2.cpp&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;至于IDE环境下，则可以在新建应用程序的时候，选择控制台向导（Console Wizard）。 &lt;br /&gt;&lt;img src="http://www.chinaitlab.com/www/imgfiles/2005.6.13.11.15.39.5.jpg" style="vertical-align: text-bottom; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt; &lt;br /&gt;图5：在C++ Builder IDE环境下运行STL程序&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;现在你可以在你的机器上运行前面的示例程序了。不过，请恕我多嘴，有些细节不得不提请你注意。小心编译器给你留下的陷阱。比如前面第三个程序中有如下这一行代码：&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;typedef back_insert_iterator&lt;&gt; back_ins_itr;&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;请留意"&gt;"前面的空格，最好不要省去。如果你吝惜这点空格所占用的磁盘空间的话，那就太不划算了。其原因还是在于C++编译器本身的缺陷。上述代码，相当于如下代码（编译器做的也正是这样的翻译工作）：&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;typedef back_insert_iterator&lt;&gt; &gt; back_ins_itr;&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;如果你没有加空格的话，编译器会把"&gt;&gt;"误认为是单一标识（看起来很像那个数据流输入操作符"&gt;&gt;"）。为了回避这个难题， C++要求使用者必须在两个右尖括号之间插入空格。所以，你最好还是老老实实照我的话做，以避免不必要的麻烦。不过有趣的是，对于上述那行展开前的代码，在Visual C++里即使你没有加空格，编译器也不会报错。而同样的代码在C++ Builder中没有那么幸运了。不过，最好还是不要心存侥幸，如果你采用展开后的书写方式，则两个编译器都不会给你留情面了。&lt;/p&gt;&lt;/int&gt;&lt;/algorithm&gt;&lt;/vector&gt;&lt;/iostream&gt;&lt;/pre&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/368715695002753550-4435078132812249046?l=supersoftmm3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://supersoftmm3d.blogspot.com/feeds/4435078132812249046/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=368715695002753550&amp;postID=4435078132812249046' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/4435078132812249046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/4435078132812249046'/><link rel='alternate' type='text/html' href='http://supersoftmm3d.blogspot.com/2008/09/blog-post_08.html' title='引子'/><author><name>蔡康怡</name><uri>http://www.blogger.com/profile/17714044082004899851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-368715695002753550.post-5825392528126403347</id><published>2008-09-08T22:37:00.001-07:00</published><updated>2008-09-08T22:37:54.658-07:00</updated><title type='text'>1 初识STL：解答一些疑问</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: arial; font-size: 14px; line-height: 19px; "&gt;作为C++标准不可缺少的一部分，STL应该是渗透在C++程序的角角落落里的。STL不是实验室里的宠儿，也不是程序员桌上的摆设，她的激动人心并非昙花一现。本教程旨在传播和普及STL的基础知识，若能借此机会为STL的推广做些力所能及的事情，到也是件让人愉快的事情。&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;&lt;/p&gt;&lt;h2 style="line-height: 104%; font-weight: normal; font-size: 160%; display: block; padding-top: 0.1em; padding-right: 5px; padding-bottom: 0.1em; padding-left: 5px; margin-top: 1em; margin-right: -5px; margin-bottom: 0.35em; margin-left: -5px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 1px; border-left-width: 0px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; height: auto; color: rgb(170, 0, 0); background-color: rgb(253, 250, 241); border-top-color: rgb(226, 220, 200); border-right-color: rgb(226, 220, 200); border-bottom-color: rgb(226, 220, 200); border-left-color: rgb(226, 220, 200); "&gt;&lt;a name="1 初识STL：解答一些疑问"&gt;&lt;/a&gt;1 初识STL：解答一些疑问&lt;/h2&gt;&lt;h3 style="line-height: 104%; font-weight: normal; font-size: 135%; display: block; padding-top: 0.1em; padding-right: 5px; padding-bottom: 0.1em; padding-left: 5px; margin-top: 1em; margin-right: -5px; margin-bottom: 0.35em; margin-left: -5px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 1px; border-left-width: 0px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; height: auto; background-color: transparent; color: rgb(170, 0, 0); border-top-color: rgb(233, 228, 210); border-right-color: rgb(233, 228, 210); border-bottom-color: rgb(233, 228, 210); border-left-color: rgb(233, 228, 210); "&gt;&lt;a name="1.1 一个最关心的问题：什么是STL"&gt;&lt;/a&gt;1.1 一个最关心的问题：什么是STL&lt;/h3&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;"什么是STL？"，假如你对STL还知之甚少，那么我想，你一定很想知道这个问题的答案，坦率地讲，要指望用短短数言将这个问题阐述清楚，也决非易事。因此，如果你在看完本节之后还是觉得似懂非懂，大可不必着急，在阅读了后续内容之后，相信你对STL的认识，将会愈加清晰、准确和完整。不过，上述这番话听起来是否有点像是在为自己糟糕的表达能力开脱罪责呢？:）&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;不知道你是否有过这样的经历。在你准备着手完成数据结构老师所布置的家庭作业时，或者在你为你所负责的某个软件项目中添加一项新功能时，你发现需要用到一个链表(List)或者是映射表（Map）之类的东西，但是手头并没有现成的代码。于是在你开始正式考虑程序功能之前，手工实现List或者Map是不可避免的。于是……，最终你顺利完成了任务。或许此时，作为一个具有较高素养的程序员的你还不肯罢休（或者是一个喜欢偷懒的优等生:），因为你会想到，如果以后还遇到这样的情况怎么办？没有必要再做一遍同样的事情吧！&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;如果说上述这种情形每天都在发生，或许有点夸张。但是，如果说整个软件领域里，数十年来确实都在为了一个目标而奋斗--可复用性（reusability），这看起来似乎并不夸张。从最早的面向过程的函数库，到面向对象的程序设计思想，到各种组件技术（如：COM、EJB），到设计模式（design pattern）等等。而STL也在做着类似的事情，同时在它背后蕴涵着一种新的程序设计思想--泛型化设计（generic programming）。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;继续上面提到的那个例子，假如你把List或者map完好的保留了下来，正在暗自得意。且慢，如果下一回的List里放的不是浮点数而是整数呢？如果你所实现的Map在效率上总是令你不太满意并且有时还会出些bug呢？你该如何面对这些问题？使用STL 是一个不错的选择，确实如此，STL可以漂亮地解决上面提到的这些问题，尽管你还可以寻求其他方法。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;说了半天，到底STL是什么东西呢？&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;STL（Standard Template Library），即标准模板库，是一个具有工业强度的，高效的C++程序库。它被容纳于C++标准程序库（C++ Standard Library）中，是ANSI/ISO C++标准中最新的也是极具革命性的一部分。该库包含了诸多在计算机科学领域里所常用的基本数据结构和基本算法。为广大C++程序员们提供了一个可扩展的应用框架，高度体现了软件的可复用性。这种现象有些类似于Microsoft Visual C++中的MFC（Microsoft Foundation Class Library），或者是Borland C++ Builder中的VCL(Visual Component Library)，对于此二者，大家一定不会陌生吧。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;从逻辑层次来看，在STL中体现了泛型化程序设计的思想（generic programming），引入了诸多新的名词，比如像需求（requirements），概念（concept），模型（model），容器（container），算法（algorithmn），迭代子（iterator）等。与OOP（object-oriented programming）中的多态（polymorphism）一样，泛型也是一种软件的复用技术。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;从实现层次看，整个STL是以一种类型参数化（type parameterized）的方式实现的，这种方式基于一个在早先C++标准中没有出现的语言特性--模板（template）。如果查阅任何一个版本的STL源代码，你就会发现，模板作为构成整个STL的基石是一件千真万确的事情。除此之外，还有许多C++的新特性为STL的实现提供了方便。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;不知你对这里一下子冒出这么多术语做何感想，希望不会另你不愉快。假如你对它们之中的大多数不甚了解，敬请放心，在后续内容中将会对这些名词逐一论述。正如开头所提到的。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;有趣的是，对于STL还有另外一种解释--STepanov &amp;amp; Lee，前者是指Alexander Stepanov，STL的创始人；而后者是Meng Lee，她也是使STL得以推行的功臣，第一个STL成品就是他们合作完成的。这一提法源自1995年3月，Dr.Dobb's Journal特约记者, 著名技术书籍作家Al Stevens对Alexander Stepanov的一篇专访。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;&lt;/p&gt;&lt;h3 style="line-height: 104%; font-weight: normal; font-size: 135%; display: block; padding-top: 0.1em; padding-right: 5px; padding-bottom: 0.1em; padding-left: 5px; margin-top: 1em; margin-right: -5px; margin-bottom: 0.35em; margin-left: -5px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 1px; border-left-width: 0px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; height: auto; background-color: transparent; color: rgb(170, 0, 0); border-top-color: rgb(233, 228, 210); border-right-color: rgb(233, 228, 210); border-bottom-color: rgb(233, 228, 210); border-left-color: rgb(233, 228, 210); "&gt;&lt;a name="1.2 追根溯源：STL的历史"&gt;&lt;/a&gt;1.2 追根溯源：STL的历史&lt;/h3&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;在结识新朋友的时候，大多数人总是忍不住想了解对方的过去。本节将带您简单回顾一下STL的过去。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;被誉为STL之父的 Alexander Stepanov，出生于苏联莫斯科，早在20世纪70年代后半期，他便已经开始考虑，在保证效率的前提下，将算法从诸多具体应用之中抽象出来的可能性，这便是后来泛型化思想的雏形。为了验证自己的思想，他和纽约州立大学教授Deepak Kapur，伦塞里尔技术学院教授David Musser共同开发了一种叫做Tecton的语言。尽管这次尝试最终没有取得实用性的成果，但却给了Stepanov很大的启示。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;在随后的几年中，他又和David Musser等人先后用Schema语言（一种Lisp语言的变种）和Ada语言建立了一些大型程序库。这其间，Alexander Stepanov开始意识到，在当时的面向对象程序设计思想中所存在的一些问题，比如抽象数据类型概念所存在的缺陷。Stepanov希望通过对软件领域中各组成部分的分类，逐渐形成一种软件设计的概念性框架。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;1987年左右，在贝尔实验室工作的Alexander Stepanov开始首次采用C++语言进行泛型软件库的研究。但遗憾的是，当时的C++语言还没有引入模板（template）的语法，现在我们可以清楚的看到，模板概念之于STL实现，是何等重要。是时使然，采用继承机制是别无选择的。尽管如此，Stepanov还是开发出了一个庞大的算法库。与此同时，在与Andrew Koenig（前ISO C++标准化委员会主席）和Bjarne Stroustrup（C++语言的创始人）等顶级大师们的共事过程中，Stepanov开始注意到C/C++语言在实现其泛型思想方面所具有的潜在优势。就拿C/C++中的指针而言，它的灵活与高效运用，使后来的STL在实现泛型化的同时更是保持了高效率。另外，在STL中占据极其重要地位的迭代子概念便是源自于C/C++中原生指针（ native pointer）的抽象。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;1988年，Alexander Stepanov开始进入惠普的Palo Alto实验室工作，在随后的4年中，他从事的是有关磁盘驱动器方面的工作。直到1992年，由于参加并主持了实验室主任Bill Worley所建立的一个有关算法的研究项目，才使他重新回到了泛型化算法的研究工作上来。项目自建立之后，参与者从最初的8人逐渐减少，最后只剩下两个人--Stepanove本人和Meng Lee。经过长时间的努力，最终，信念与汗水所换来的是一个包含有大量数据结构和算法部件的庞大运行库。这便是现在的STL的雏形（同时也是STL的一个实现版本--HP STL）。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;1993年，当时在贝尔实验室的Andrew Koenig看到了Stepanove的研究成果，很是兴奋。在他的鼓励与帮助下，Stepanove于是年9月的圣何塞为ANSI/ISO C++标准委员会做了一个相关演讲（题为"The Science of C++ Programming"），向委员们讲述了其观念。然后又于次年3月，在圣迭戈会议上，向委员会提交了一份建议书，以期使STL成为C++标准库的一部分。尽管这一建议十分庞大，以至于降低了被通过的可能性，但由于其所包含的新思想，投票结果以压倒多数的意见认为推迟对该建议的决定。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;随后，在众人的帮助之下，包括Bjarne Stroustrup在内，Stepanove又对STL进行了改进。同时加入了一个封装内存模式信息的抽象模块，也就是现在STL中的 allocator，它使STL的大部分实现都可以独立于具体的内存模式，从而独立于具体平台。在同年夏季的滑铁卢会议上，委员们以80%赞成，20%反对，最终通过了提案，决定将STL正式纳入C++标准化进程之中，随后STL便被放进了会议的工作文件中。自此，STL终于成为了C++家族中的重要一员。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;此后，随着C++标准的不断改进，STL也在不断地作着相应的演化。直至1998年，ANSI/ISO C++标准正式定案，STL始终是C++标准中不可或缺的一大部件。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;&lt;/p&gt;&lt;h3 style="line-height: 104%; font-weight: normal; font-size: 135%; display: block; padding-top: 0.1em; padding-right: 5px; padding-bottom: 0.1em; padding-left: 5px; margin-top: 1em; margin-right: -5px; margin-bottom: 0.35em; margin-left: -5px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 1px; border-left-width: 0px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; height: auto; background-color: transparent; color: rgb(170, 0, 0); border-top-color: rgb(233, 228, 210); border-right-color: rgb(233, 228, 210); border-bottom-color: rgb(233, 228, 210); border-left-color: rgb(233, 228, 210); "&gt;&lt;a name="1.3 千丝万缕的联系"&gt;&lt;/a&gt;1.3 千丝万缕的联系&lt;/h3&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;在你了解了STL的过去之后，一些名词开始不断在你的大脑中浮现，STL、C++、C++标准函数库、泛型程序设计、面向对象程序设计……，这些概念意味着什么？他们之间的关系又是什么？如果你想了解某些细节，这里也许有你希望得到的答案。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;&lt;strong style="font-weight: bold; "&gt;1.3.1 STL和C++&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;没有C++语言就没有STL，这么说毫不为过。一般而言，STL作为一个泛型化的数据结构和算法库，并不牵涉具体语言（当然，在C++里，它被称为 STL）。也就是说，如果条件允许，用其他语言也可以实现之。这里所说的条件，主要是指类似于"模板"这样的语法机制。如果你没有略过前一节内容的话，应该可以看到，Alexander Stepanov在选择C++语言作为实现工具之前，早以采用过多种程序设计语言。但是，为什么最终还是C++幸运的承担了这个历史性任务呢？原因不仅在于前述那个条件，还在于C++在某些方面所表现出来的优越特性，比如：高效而灵活的指针。但是如果把C++作为一种OOP（Object- Oriented Programming，面向对象程序设计）语言来看待的话（事实上我们一般都是这么认为的，不是吗？），其功能强大的继承机制却没有给STL的实现帮上多大的忙。在STL的源代码里，并没有太多太复杂的继承关系。继承的思想，甚而面向对象的思想，还不足以实现类似STL这样的泛型库。C++只有在引入了 "模板"之后，才直接导致了STL的诞生。这也正是为什么，用其他比C++更纯的面向对象语言无法实现泛型思想的一个重要原因。当然，事情总是在变化之中，像Java在这方面，就是一个很好的例子，jdk1.4中已经加入了泛型的特性。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;此外，STL对于C++的发展，尤其是模板机制，也起到了促进作用。比如：模板函数的偏特化（template function partial specialization），它被用于在特定应用场合，为一般模板函数提供一系列特殊化版本。这一特性是继STL被ANSI/ISO C++标准委员会通过之后，在Bjarne和Stepanov共同商讨之下并由Bjarne向委员会提出建议的，最终该项建议被通过。这使得STL中的一些算法在处理特殊情形时可以选择非一般化的方式，从而保证了执行的效率。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;&lt;strong style="font-weight: bold; "&gt;1.3.2 STL和C++标准函数库&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;STL是最新的C++标准函数库中的一个子集，这个庞大的子集占据了整个库的大约80%的分量。而作为在实现STL过程中扮演关键角色的模板则充斥了几乎整个C++标准函数库。在这里，我们有必要看一看C++标准函数库里包含了哪些内容，其中又有哪些是属于标准模板库（即STL）的。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;C++标准函数库为C++程序员们提供了一个可扩展的基础性框架。我们从中可以获得极大的便利，同时也可以通过继承现有类，自己编制符合接口规范的容器、算法、迭代子等方式对之进行扩展。它大致包含了如下几个组件：&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;C标准函数库，基本保持了与原有C语言程序库的良好兼容，尽管有些微变化。人们总会忍不住留恋过去的美好岁月，如果你曾经是一个C程序员，对这一点一定体会颇深。或许有一点会让你觉得奇怪，那就是在C++标准库中存在两套C的函数库，一套是带有.h扩展名的（比如&lt;stdio.h&gt;），而另一套则没有（比如&lt;cstdio&gt;）。它们确实没有太大的不同。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;语言支持（language support）部分，包含了一些标准类型的定义以及其他特性的定义，这些内容，被用于标准库的其他地方或是具体的应用程序中。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;诊断（diagnostics）部分，提供了用于程序诊断和报错的功能，包含了异常处理（exception handling），断言（assertions），错误代码（error number codes）三种方式。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;通用工具（general utilities）部分，这部分内容为C++标准库的其他部分提供支持，当然你也可以在自己的程序中调用相应功能。比如：动态内存管理工具，日期/时间处理工具。记住，这里的内容也已经被泛化了（即采用了模板机制）。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;字符串（string）部分，用来代表和处理文本。它提供了足够丰富的功能。事实上，文本是一个string对象，它可以被看作是一个字符序列，字符类型可能是char，或者wchar_t等等。string可以被转换成char*类型，这样便可以和以前所写的C/C++代码和平共处了。因为那时侯除了 char*，没有别的。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;国际化（internationalization）部分，作为OOP特性之一的封装机制在这里扮演着消除文化和地域差异的角色，采用locale和facet可以为程序提供众多国际化支持，包括对各种字符集的支持，日期和时间的表示，数值和货币的处理等等。毕竟，在中国和在美国，人们表示日期的习惯是不同的。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;容器（containers）部分，STL的一个重要组成部分，涵盖了许多数据结构，比如前面曾经提到的链表，还有：vector（类似于大小可动态增加的数组）、queue（队列）、stack（堆栈）……。string 也可以看作是一个容器，适用于容器的方法同样也适用于string。现在你可以轻松的完成数据结构课程的家庭作业了。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;算法（algorithms）部分，STL的一个重要组成部分，包含了大约70个通用算法，用于操控各种容器，同时也可以操控内建数组。比如：find用于在容器中查找等于某个特定值的元素，for_each用于将某个函数应用到容器中的各个元素上，sort用于对容器中的元素排序。所有这些操作都是在保证执行效率的前提下进行的，所以，如果在你使用了这些算法之后程序变得效率底下，首先一定不要怀疑这些算法本身，仔细检查一下程序的其他地方。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;迭代器（iterators）部分，STL的一个重要组成部分，如果没有迭代器的撮合，容器和算法便无法结合的如此完美。事实上，每个容器都有自己的迭代器，只有容器自己才知道如何访问自己的元素。它有点像指针，算法通过迭代器来定位和操控容器中的元素。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;数值（numerics）部分，包含了一些数学运算功能，提供了复数运算的支持。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;输入/输出（input/output）部分，就是经过模板化了的原有标准库中的iostream部分，它提供了对C++程序输入输出的基本支持。在功能上保持了与原有iostream的兼容，并且增加了异常处理的机制，并支持国际化（internationalization）。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;总体上，在C++标准函数库中，STL主要包含了容器、算法、迭代器。string也可以算做是STL的一部分。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;&lt;img src="http://www.chinaitlab.com/www/imgfiles/2005.6.13.11.14.10.1.gif" style="vertical-align: text-bottom; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt; &lt;br /&gt;图1：STL和C++标准函数库&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;&lt;strong style="font-weight: bold; "&gt;1.3.3 STL和GP，GP和OOP&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;正如前面所提到的，在STL的背后蕴含着泛型化程序设计（GP）的思想，在这种思想里，大部分基本算法被抽象，被泛化，独立于与之对应的数据结构，用于以相同或相近的方式处理各种不同情形。这一思想和面向对象的程序设计思想（OOP）不尽相同，因为，在OOP中更注重的是对数据的抽象，即所谓抽象数据类型（Abstract Data Type），而算法则通常被附属于数据类型之中。几乎所有的事情都可以被看作类或者对象（即类的实例），通常，我们所看到的算法被作为成员函数（member function）包含在类（class）中，类和类则构成了错综复杂的继承体系。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;尽管在象C++这样的程序设计语言中，你还可以用全局函数来表示算法，但是在类似于Java这样的纯面向对象的语言中，全局函数已经被"勒令禁止"了。因此，用Java来模拟GP思想是颇为困难的。如果你对前述的STL历史还有印象的话，应该记得Alexander Stepanove也曾用基于OOP的语言尝试过实现GP思想，但是效果并不好，包括没有引入模板之前的C++语言。站在巨人的肩膀上，我们可以得出这样的结论，在OOP中所体现的思想与GP的思想确实是相异的。C++并不是一种纯面向对象的程序设计语言，它的绝妙之处，就在于既满足了OOP，又成全了 GP。对于后者，模板立下了汗马功劳。另外，需要指出的是，尽管GP和OOP有诸多不同，但这种不同还不至于到"水火不容"的地步。并且，在实际运用的时候，两者的结合使用往往可以使问题的解决更为有效。作为GP思想实例的STL本身便是一个很好的范例，如果没有继承，不知道STL会是什么样子，似乎没有人做过这样的试验。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;&lt;/p&gt;&lt;h3 style="line-height: 104%; font-weight: normal; font-size: 135%; display: block; padding-top: 0.1em; padding-right: 5px; padding-bottom: 0.1em; padding-left: 5px; margin-top: 1em; margin-right: -5px; margin-bottom: 0.35em; margin-left: -5px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 1px; border-left-width: 0px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; height: auto; background-color: transparent; color: rgb(170, 0, 0); border-top-color: rgb(233, 228, 210); border-right-color: rgb(233, 228, 210); border-bottom-color: rgb(233, 228, 210); border-left-color: rgb(233, 228, 210); "&gt;&lt;a name="1.4 STL的不同实现版本"&gt;&lt;/a&gt;1.4 STL的不同实现版本&lt;/h3&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;相信你对STL的感性认识应该有所提高了，是该做一些实际的工作了，那么我们首先来了解一下STL的不同实现版本。ANSI/ISO C++文件中的STL是一个仅被描述在纸上的标准，对于诸多C++编译器而言，需要有各自实际的STL，它们或多或少的实现了标准中所描述的内容，这样才能够为我们所用。之所以有不同的实现版本，则存在诸多原因，有历史的原因，也有各自编译器生产厂商的原因。以下是几个常见的STL实现版本。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;&lt;strong style="font-weight: bold; "&gt;1.4.1 HP STL&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;HP STL是所有其它STL实现版本的根源。它是STL之父Alexander Stepanov在惠普的Palo Alto实验室工作时，和Meng Lee共同完成的，是第一个STL的实现版本（参见1.2节）。这个STL是开放源码的，所以它允许任何人免费使用、复制、修改、发布和销售该软件和相关文档，前提是必须在所有相关文件中加入HP STL的版本信息和授权信息。现在已经很少直接使用这个版本的STL了。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;&lt;strong style="font-weight: bold; "&gt;1.4.2 P.J. Plauger STL&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;P. J. Plauger STL属于个人作品，由P. J. Plauger本人实现，是HP STL的一个继承版本，因此在其所有头文件中都含有HP STL的相关声明，同时还有P. J. Plauger本人的版权声明。P. J. Plauger是标准C中stdio库的早期实现者，现在是C/C++ User's Journal的主编，与Microsoft保持着良好的关系。P. J. Plauger STL便是被用于Microsoft的Visual C++中的。在Windows平台下的同类版本中，其性能不错，但是queue组件（队列，一种容器）的效率不理想，同时由于Visual C++对C++语言标准的支持不是很好（至少直到VC6.0为止，还是如此），因此一定程度上影响了P. J. Plauger STL的性能。此外，该版本的源代码可读性较差，你可以在VC的Include子目录下找到所有源文件（比如：C:\Program Files\Microsoft Visual Studio\VC98\Include）。因为不是开放源码的（open source），所以这些源代码是不能修改和销售的，目前P.J. Plauger STL由Dinkumware公司提供相关服务，详情请见&lt;a href="http://www.dinkumware.com/" target="_top" style="text-decoration: underline; color: rgb(0, 102, 204); background-color: transparent; "&gt;http://www.dinkumware.com&lt;/a&gt;。据称Visual Studio.NET中的Visual C++.NET（即VC7.0），对C++标准的支持有所提高，并且多了以哈希表（hash table）为基础而实现的map容器，multimap容器和set容器。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;&lt;strong style="font-weight: bold; "&gt;1.4.3 Rouge Wave STL&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;Rouge Wave STL是由Rouge Wave公司实现的，也是HP STL的一个继承版本，除了HP STL的相关声明之外，还有Rouge Wave公司的版权声明。同时，它也不是开放源码的，因此无法修改和销售。该版本被Borland C++ Builder所采用，你可以在C++ Builder的Include子目录下找到所有头文件（比如：C:\Program Files\Borland\Cbuilder5\Include）。尽管Rouge Wave STL的性能不是很好，但由于C++ Builder对C++语言标准的支持还算不错，使其表现在一定程度上得以改善。此外，其源代码的可读性较好。可以从如下网站得到更详细的情况介绍： &lt;a href="http://www.rougewave.com/" target="_top" style="text-decoration: underline; color: rgb(0, 102, 204); background-color: transparent; "&gt;http://www.rougewave.com&lt;/a&gt;。遗憾的是该版本已有一段时间没有更新且不完全符合标准。因此在Borland C++ Builder 6.0中，它的地位被另一个STL的实现版本--STLport（见后）取代了。但是考虑到与以前版本的兼容，C++ Builder 6.0还是保留了Rouge Wave STL，只是如果你想查看它的源代码的话，需要在别的目录中才能找到（比如：C:\Program Files\Borland\Cbuilder6\Include\oldstl）。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;&lt;strong style="font-weight: bold; "&gt;1.4.4 STLport&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;STLport最初源于俄国人Boris Fomitchev的一个开发项目，主要用于将SGI STL的基本代码移植到其他诸如C++Builder或者是Visual C++这样的主流编译器上。因为SGI STL属于开放源码，所以STLport才有权这样做。目前STLport的最新版本是4.5。可以从如下网站得到更详细的情况介绍：&lt;a href="http://www.stlchina.org/twiki/bin/view.pl/Main/STLEasyStudy" target="_top" style="text-decoration: underline; color: rgb(0, 102, 204); background-color: transparent; "&gt;//www.stlport.org&lt;/a&gt;，可以免费下载其源代码。STLport已经被C/C++技术委员会接受成为工业标准，且在许多平台上都支持。根据测试STLport的效率比VC中的STL要快。比Rouge Wave STL更符合标准，也更容易移植。Borland C++ Builder已经在其6.0版中加入了对STLport的支持，它使用的STLport就是4.5版的，C++ Builder 6.0同时还提供了STLport的使用说明。你可以在C++ Builder的Include\Stlport子目录下找到所有头文件（比如：C:\Program Files\Borland\Cbuilder6\Include\Stlport）。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;&lt;strong style="font-weight: bold; "&gt;1.4.5 SGI STL&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;SGI STL是由Silicon Graphics Computer System, Inc公司实现的，其设计者和编写者包括Alexander Stepanov和Matt Austern，同样它也是HP STL的一个继承版本。它属于开放源码，因此你可以修改和销售它。SGI STL被GCC（linux下的C++编译器）所采用，你可以在GCC的Include子目录下找到所有头文件（比如：C:\cygnus\cygwin -b20\include\g++\include）。由于GCC对C++语言标准的支持很好，SGI STL在linux平台上的性能相当出色。此外，其源代码的可读性也很好。可以从如下网站得到更详细的情况介绍：&lt;a href="http://www.sgi.com/" target="_top" style="text-decoration: underline; color: rgb(0, 102, 204); background-color: transparent; "&gt;http://www.sgi.com&lt;/a&gt;，可以免费下载其源代码。目前的最新版本是3.3。&lt;/p&gt;&lt;p style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;&lt;img src="http://www.chinaitlab.com/www/imgfiles/2005.6.13.11.14.24.2.gif%3E;%3Cbr%3E%E5%9B%BE2%EF%BC%9ASTL%E5%AE%B6%E6%97%8F%E7%9A%84%E8%B0%B1%E7%B3%BB%3Cp%20/%3E%3Ch2%3E%3Ca%20name=" 2="" style="vertical-align: text-bottom; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt; 2 牛刀小试：且看一个简单例程&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/368715695002753550-5825392528126403347?l=supersoftmm3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://supersoftmm3d.blogspot.com/feeds/5825392528126403347/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=368715695002753550&amp;postID=5825392528126403347' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/5825392528126403347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/5825392528126403347'/><link rel='alternate' type='text/html' href='http://supersoftmm3d.blogspot.com/2008/09/1-stl.html' title='1 初识STL：解答一些疑问'/><author><name>蔡康怡</name><uri>http://www.blogger.com/profile/17714044082004899851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-368715695002753550.post-2268658230165226228</id><published>2008-09-08T09:15:00.001-07:00</published><updated>2008-09-08T09:15:59.776-07:00</updated><title type='text'>LA生活大总结之差不多文字完结篇</title><content type='html'>&lt;div style="PADDING-RIGHT: 12px; PADDING-LEFT: 12px; PADDING-BOTTOM: 16px; PADDING-TOP: 16px"&gt; &lt;div class="b_size bold"&gt;&lt;br /&gt;&lt;/div&gt; &lt;p class="graytext list_action" style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-TOP: 6px"&gt;作者：&lt;b class="grn normal"&gt;徐静蕾&lt;/b&gt;  来自：&lt;a style="COLOR: #a0a0a0; TEXT-DECORATION: underline" href="http://m356.mail.qq.com/cgi-bin/reader_list?groupid=&amp;amp;classid=&amp;amp;classtype=feed&amp;amp;from=home|list&amp;amp;sid=Njk2MDc3OTM4MjgwMDQyMDIw9073204,zh_CN&amp;amp;feedid=1_2968&amp;amp;page=0&amp;amp;fromparent.feed.name.DATA$"&gt;老徐&lt;/a&gt; &lt;/p&gt;&lt;/div&gt;&lt;!--  &lt;img src="http://r17.mail.qq.com/zh_CN/htmledition20080903/images//s0.gif" title="点击图标 收藏这篇文章" id="star_1_2968_218" onclick="Reader.Article.setStar( '1_2968', '218', '1220347208');" style="cursor:pointer;" starflag="1" /&gt;  --&gt; &lt;div class="" style="PADDING-RIGHT: 12px; PADDING-LEFT: 12px; PADDING-BOTTOM: 0px; WIDTH: auto; PADDING-TOP: 0px; TEXT-ALIGN: left"&gt; &lt;div class="body" id="content" style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px"&gt; &lt;p&gt;   归家倒计时进行中。刚才有人问我什么最成功，仔细想了想，还是生活最成功。本来想特别谦虚来着，可是，没办法，确实特别成功——这就是最谦虚的说法了&lt;img src="http://blogimg.sinajs.cn/images/control/face/018.gif" /&gt;。还有进一步的总结，就是：智商低，情商高。情商实在是太高了，所以有特别信任的朋友，特别好的家人；智商实在是太低了，所以一工作就焦虑，我试图躲了两个月，还是有点焦虑，所以目前的做法名曰：随它去。此处寻人：寻一名能使我智商变高的人士。并欢迎踊跃推荐，毛遂自荐。&lt;/p&gt; &lt;p&gt;   继续美国的总结。今天又看了两个电影，两个都是小说改编的，一个是英国电影，一个是美国艺术片，第一个名字不记得了，太长，第二个，引得我和G同学在电影院哭得快岔了气儿，名字叫：《Elegy》，这还是在我没有看懂所有台词的情况下……好久没有看电影哭得这么厉害了，回到家里数小时，仍旧觉得脑门有皮球那么大，眼睛干涩得像千年老井。电影结束，所有人在座位上发呆，好久才起身陆续出门。出来两个人肿着个眼睛相视大笑，笑得又流了眼泪。这一天，一个影院接着一个影院赶场子，抱着大爆米花大可乐，还有一个热狗，两个芝士夹心面包，一天的饭就这样解决了。第一个影院门口，做了大概二、三十颗许愿树，无数的小纸条绑在树枝上，远看像开着白色的花，花团锦簇。但愿他们的愿望都能实现。我的愿望呢，我的愿望是永远不失去我爱的人们，但是这个愿望太过分了，是不会实现的，因为我已经失去了一个我深爱的家人，因为有一天连自己也会失去，这毋庸置疑。所以才要活得自由，通透。所以我就不再想我的愿望了。并且决定除了已经有的之外，尽量不再增加一个感情过分深的人。&lt;/p&gt; &lt;p&gt;   我还干了什么来着……我常买八卦杂志看&lt;img src="http://blogimg.sinajs.cn/images/control/face/029.gif" /&gt;，美其名曰，学英语&lt;img src="http://blogimg.sinajs.cn/images/control/face/003.gif" /&gt;。但是不懂的词太多了，查也查不过来，索性自暴自弃，就只看图片和看得懂的新闻，谁和又有好了，谁和谁又吵了，谁和谁又生了，谁和谁又互相谩骂了……看得还挺带劲……是不是特别不显好啊……&lt;img src="http://blogimg.sinajs.cn/images/control/face/033.gif" /&gt;。怎么好的你不学，坏的你学那么快&lt;img src="http://blogimg.sinajs.cn/images/control/face/008.gif" /&gt;！……其实好的我也学了，我自己打扫房间，自己做饭吃，自己洗衣服，我还学历史知识，看科学的书，我就差把好句子抄在笔记本里了！对了……我还用英文写了两篇日记呢！虽然很短吧……&lt;img src="http://blogimg.sinajs.cn/images/control/face/018.gif" /&gt;&lt;img src="http://blogimg.sinajs.cn/images/control/face/018.gif" /&gt;不过，我藏起来了……我那拼写和语法……等脸皮再厚一点点的时候再公开……&lt;/p&gt; &lt;p&gt;   还干了什么来着……对了，我在来之前写了一份遗书，这年头天灾人祸的，谁也不知道自己哪天会怎样，我要是万一不在了，我要照顾的那些人，他们一定要受到保护。遗书交给了十分信任的朋友，看着他拿着离开的背影，长长的出了口气，当时并不知道为什么。忽然有一天，我在沙发上卧着，恍然发现了原因：从此之后，所有的东西都不是自己的了。那种轻松的感觉，从来不曾有过。另一个G同学有一个想法很好，他说将来把自己历年立下的遗嘱都收集起来，必是一个鲜活的成长史,人事变迁，大部头的都在那里了。非常有道理。希望别变迁。&lt;/p&gt; &lt;p&gt;   看样子差不多了。对了还有，我对有些事情，有些状况，心里是很有意见的，不过鉴于说了也解决不了什么问题,  也不会做什么实事儿,只会变成一个口儿贩子，所以不说了。&lt;/p&gt; &lt;p&gt;   其实假期还没过完，原色慢慢就要过度成间色，急脾气总结的有点偏早。爱早不早吧就……&lt;/p&gt; &lt;p&gt;   &lt;/p&gt; &lt;p&gt;   至于然后我要干什么，山清水秀太阳高，知道也不知道……&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/368715695002753550-2268658230165226228?l=supersoftmm3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://supersoftmm3d.blogspot.com/feeds/2268658230165226228/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=368715695002753550&amp;postID=2268658230165226228' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/2268658230165226228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/2268658230165226228'/><link rel='alternate' type='text/html' href='http://supersoftmm3d.blogspot.com/2008/09/la.html' title='LA生活大总结之差不多文字完结篇'/><author><name>蔡康怡</name><uri>http://www.blogger.com/profile/17714044082004899851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-368715695002753550.post-4884948594590475860</id><published>2008-09-08T09:12:00.001-07:00</published><updated>2008-09-08T09:12:40.322-07:00</updated><title type='text'>LA超级流水账之2</title><content type='html'>&lt;div style="PADDING-RIGHT: 12px; PADDING-LEFT: 12px; PADDING-BOTTOM: 16px; PADDING-TOP: 16px"&gt;&lt;p class="graytext list_action" style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-TOP: 6px"&gt;作者：&lt;b class="grn normal"&gt;徐静蕾&lt;/b&gt;  来自：&lt;a style="COLOR: #a0a0a0; TEXT-DECORATION: underline" href="http://m356.mail.qq.com/cgi-bin/reader_list?groupid=&amp;amp;classid=&amp;amp;classtype=feed&amp;amp;from=home|list&amp;amp;sid=Njk2MDc3OTM4MjgwMDQyMDIw9073204,zh_CN&amp;amp;feedid=1_2968&amp;amp;page=0&amp;amp;fromparent.feed.name.DATA$"&gt;老徐&lt;/a&gt;   9月2日  &lt;/p&gt;&lt;/div&gt;&lt;!--  &lt;img src="http://r17.mail.qq.com/zh_CN/htmledition20080903/images//s0.gif" title="点击图标 收藏这篇文章" id="star_1_2968_217" onclick="Reader.Article.setStar( '1_2968', '217', '1220302536');" style="cursor:pointer;" starflag="1" /&gt;  --&gt; &lt;div class="" style="PADDING-RIGHT: 12px; PADDING-LEFT: 12px; PADDING-BOTTOM: 0px; WIDTH: auto; PADDING-TOP: 0px; TEXT-ALIGN: left"&gt; &lt;div class="body" id="content" style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px"&gt; &lt;p&gt;   上次说到气人：气人是不好的，会气人也不是本事，还耽误了自己的时间。想起一些过去干过的不靠谱的事儿，虽然已经自己检讨过了，还是不免要感慨一下，好在都成了过往。&lt;/p&gt; &lt;p&gt;   加州的海水有点冷，这是来前没有想到的.住着又很喧闹，不宜休息。所以原来住在海边的计划临时换成了pasadena，据说这里是洛杉矶最早的城市。安静，闲适。老城那边据说周末还有露天电影看，虽然一次都没看成，听起来也过瘾。要回去了，不知道还有没有机会。想起小时候在我们大院里看的露天电影《白求恩》，巨大的银幕，前后都可以看，和邻居的小朋友搬着小凳子，一会儿在前面，一会儿跑到后面看，很像我家小猫，看到电视机里放着画面的时候，总想去背后看看究竟，背后什么都没有，还不肯相信，反复几次之后，就索性睡了起来。&lt;/p&gt; &lt;p&gt;   这个小城有三家电影院，一个主流院线，两个艺术院线，都离我住的地方很近。到了周末，即使是艺术院线，影院内外也是人头攒动，不排上20分钟的队，是看不上电影的，要是想吃喝点什么，又是20分钟，不早点到一定不行。艺术院线的观众，上岁数的比较多，主流院线则老少皆宜。观众看电影的时候十分捧场，看到《妈妈咪呀》的结尾，会站起来又唱又跳，看完一个感人的爱情电影，情侣们会纷纷拥抱接吻，那种场面和电影一样感人，遂感到电影工作者的欣慰。&lt;/p&gt; &lt;p&gt;   看电影，是来这里的主要娱乐活动，每个院线都会有不同的电影看，由于是暑期挡，青春片很多，观众比较两极化，老的老，小的小，老观众们经常看出眼泪来，估计是回想到了自己的年青时代。印象最深刻的是伍迪埃伦的新电影《VickyCristinaBarcelona》，导演对情感的极度悲观以幽默的形式体现，确实到了一定境界，几乎是信手拈来，加上三个极有魅力的演员，不好看也奇怪了。这还是在台词没有全部看懂的情况下，回去一定找来翻译好的DVD重新看两遍。&lt;/p&gt; &lt;p&gt;   洛杉矶购物，我到觉得比纽约好，可能是因为这里能开车，所以比较容易熟悉各处的情况。加上美元贬值很多，东西也变得便宜了起来，只是都要上点税，又不似欧洲还可以退。但还是不错，购物狂再次发作，来美的前一段，一星期有三天都在买东西，好多鲜艳的裙子，搁在平时是绝不会买的，到了这里就不在乎了，加上皮肤继南非之后晒得更黑，鲜艳的衣服倒也很配。改天一并秀来。&lt;/p&gt; &lt;p&gt;   还有很多热情的朋友，不但自己热情，还介绍好多朋友给我，前一个月很忙，一个午饭接着一个晚饭，一个meeting接着一个meeting。&lt;/p&gt; &lt;p&gt;   高中同学和她老公从温哥华和北京来找我玩儿——继我去年从纽约探访过他们之后。就在我的客厅打下地铺，很有小时候住集体宿舍的感觉，一起做做饭逛逛街海边散散步，三四天一转眼就过去了。&lt;/p&gt; &lt;p&gt;   北京的朋友来玩儿的时候，我们去了趟拉斯维加斯。女友因为夜里回身拿一杯水而脱臼……听起来有点荒谬哈……我和来抢救的工作人员说，他们也不大信，只是狐疑的看着我们两的女的……坐着救护车，到了一家公立医院，医生的人手看来很紧张，等了好几个小时才看上病，其间又是量血压又是拍片子，服下了大量止疼药，最后居然进行了全麻手术……一看账单：2000美元……真崩溃……在美国，没有保险是绝对不行的。对于全麻，我们一致认为有些过份了，要是在中国，随便一个正骨医生，很快应该就可以给正回去。那天，在寒冷的医院急诊室里，一夜没睡，上午小歇了三个小时，便离开酒店，女友的麻药劲儿没消，在车上继续睡，狂睡怒睡，我一个司机开回了洛杉矶，四个小时，到了后面一个小时，几乎要在方向盘上睡着了。&lt;/p&gt; &lt;p&gt;    任何人只要有自己本国的驾照，都可以租到车，是这里很大的一个好处。可以开车自己出行了，便觉得成了这里的主人。加上一个GPS，简直是如虎添翼，畅行无阻。我前后租了三辆，价钱都很便宜，两个敞篷，一个吉普，大概还不到北京租车的一半。后来发现敞篷车完全是个样子货，在路上跑10分钟，脸都被吹焦了，于是今后再也不做敞篷车的打算。&lt;/p&gt; &lt;p&gt;    ……&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/368715695002753550-4884948594590475860?l=supersoftmm3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://supersoftmm3d.blogspot.com/feeds/4884948594590475860/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=368715695002753550&amp;postID=4884948594590475860' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/4884948594590475860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/4884948594590475860'/><link rel='alternate' type='text/html' href='http://supersoftmm3d.blogspot.com/2008/09/la2.html' title='LA超级流水账之2'/><author><name>蔡康怡</name><uri>http://www.blogger.com/profile/17714044082004899851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-368715695002753550.post-3721230558863586401</id><published>2008-09-06T07:04:00.001-07:00</published><updated>2008-09-06T07:04:34.335-07:00</updated><title type='text'>使用VC2005编译出现这个错误</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: verdana; font-size: 12px; line-height: 18px; "&gt;Include\unknwn.idl(108) : error MIDL2025 : syntax error : expecting ] or , near &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;"annotation"&lt;/div&gt;&lt;div&gt;Include\unknwn.idl(108) : error MIDL2026 : cannot recover from earlier syntax errors; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;aborting compilation &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;如果使用VC2005编译出现这个错误，是由于使用了新版本的VISTA SDK头文件，而使用旧版本的MIDL&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;工具来编译所导致。&lt;/div&gt;&lt;div&gt;解决方法是安装SDK时，把它的SDK里带的编译工具也需要安装，然后在VC里&lt;/div&gt;&lt;div&gt;Tools &gt; Options &gt; Projects and Solutions &gt; VC++ Directories &gt; Executable Files&lt;/div&gt;&lt;div&gt;里添加这个SDK的BIN目录，这样就使用新版本的MIDL编译工具。&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/368715695002753550-3721230558863586401?l=supersoftmm3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://supersoftmm3d.blogspot.com/feeds/3721230558863586401/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=368715695002753550&amp;postID=3721230558863586401' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/3721230558863586401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/3721230558863586401'/><link rel='alternate' type='text/html' href='http://supersoftmm3d.blogspot.com/2008/09/vc2005.html' title='使用VC2005编译出现这个错误'/><author><name>蔡康怡</name><uri>http://www.blogger.com/profile/17714044082004899851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-368715695002753550.post-7378222843431784304</id><published>2008-09-03T07:42:00.000-07:00</published><updated>2008-09-03T07:43:03.105-07:00</updated><title type='text'>速度是最大优势</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: simsun; font-size: 14px; line-height: 22px; "&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;他们还善于编写一个JavaScript引擎。巴克在谷歌推出Chrome浏览器前几周曾表示：“我们今天只是在尝试一些基准运行。”实际上，V8引擎处理JavaScript的速度比Firefox或Safari浏览器快10倍。而在那些相同的基准下，Chrome与浏览器市场的霸主微软IE 7相比又如何？答案是前者运行速度是后者的56倍。巴克说：“我们有点低估了自己的工作能力。”&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;　　速度可能是Chrome浏览器是最重要的进步。当你以数量级的方式去改善某些设备的时候，你没有造出更好的东西——你造出的是新产品。巴克说：“开发人员一体会到这类速度的魅力，他们就会开始从事更美妙的新的网络应用，他们在这方面更具创造力。”谷歌希望推出新一代网络应用，这样一来，微软最不愿看到的梦魇将成为现实：浏览器将成为相当于操作系统的应用。&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;　　谷歌还对Chrome进行了一些改进，令其成为多进程操作平台，使每个打开的标签页可以像独立的程序一样运行。2007年5月，谷歌收购了GreenBorder Technologies公司，这是一家软件安全公司，其技术被用于为Firefox或IE创建一个封闭、安全的环境，将它们的活动隔离到“虚拟会议”(或沙盒)中，在这里，恶意软件入侵不会破坏电脑上的其它活动和数据。&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;　　这项交易对外公开宣布时，业界就怀疑谷歌可能会涉足反病毒领域。这项收购完成后不久，GreenBorder的工程师们即了解到，他们的工作就是为新一代浏览器的标签页构建“沙盒”。卡洛斯·皮萨诺(Carlos Pizano)说：“我们都糊涂了。他们不会说明用沙盒去干什么。”&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;　　尽管Chrome开发团队日益壮大，但开发工作从没有陷入像官僚机构经常遭遇的困顿中。在Chrome项目的初期阶段，开发人员还能在谷歌某个咖啡厅一张桌子上共用午餐。不久，即便是最大的桌子，亦不能满足这个团队的用餐需要了。&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;　　每位工程师都怀以“开源”的精神工作，他们可以随便检查任何代码，去调整或改进。拉考维斯基总在尝试让开发进程保持透明。&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;　　&lt;strong&gt;具有全新功能&lt;/strong&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;　　随着产品整体规划逐项落到实处，工程师们开始把工作重点放在用户界面上。一开始，Chrome开发团队希望，这款浏览器的视觉效果一定要做到平淡无奇，这样，用户甚至认为他们不是在使用浏览器。开发人员的口号变成了“内容，而不是chrome”，鉴于这款浏览器的名称，给人以一种奇怪的感觉。马克·拉尔森(Mark Larson)说，我们学会了如何在遭人嘲讽下生活。&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;　　当你把一个含有像Gmail这样的网络应用的标签页拖至一个单独的窗口，说明你希望一个“应用捷径”(app shortcut)的时候，最清晰的表达会出现在你的面前。此刻，菜单、按钮、地址栏全部消失了，Web应用看上去更像是桌面应用。&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;　　在决定包括哪些按钮和功能时，开发小组开始玩起一个智力游戏，即消除一切东西，然后再去分析如何恢复。后面的按钮？没什么用处，删去。前面的按钮？没有什么必要，但它最后幸存下来。如果你是浏览器状态栏的忠实拥趸，那么你可能对Chrome不太习惯。&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;　　Chrome有书签栏。最初，工程师认为他们不应该要书签栏。Chrome引入多个新的导航方法，如在其中一个导航方法中，浏览器可以分析用户不用打字也清楚接下来该进入哪项程序。你输入文字时，可以使用“omnibox”，一项结合了地址栏和搜索栏的功能：只要输入你想要查找的东西，它就能提供网络地址、搜索结果或适合你要求的受网友欢迎的目的地，这些信息全部是以非插入式文本形式出现在框的下面。&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;　　一定程度上讲，它就是谷歌著名按钮“I'm Feeling Lucky(手气不错)”的增强版。谷歌在用户中进行的调查表明，一些人仍喜欢点击这个书签栏获取导航信息。一个折中方案是：如果用户以前在IE或Firefox浏览器上设定了书签栏，Chrome将会导入这项设置。否则，用户将没有书签栏，除非他们特意选择。&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;　　&lt;strong&gt;保密工作非常好&lt;/strong&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;　　令人难以置信的是，谷歌浏览器在两年时间里竟然不为外界所知。直到2007年年中，即Chrome项目实施约一年的时候，开发小组让未参与该项目的公司职员了解他们的创新工作时，这方面的消息才泄露出去。在以当前原型为特征的高科技谈话系列的一开始，员工们反响非常强烈。在各种功能(如将标签页拖至新窗口)演示过程中，他们不时爆发出发自内心的欢呼声。&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;　　随着知道Chrome浏览器的人越来越多，有件事必然要发生——相关消息传到博客的耳中。但是，没有一名记者能将这些传言整理在一起。乌普森(Upson)说：“我想这是因为有关谷歌浏览器的传闻存在了很久，就像是人们天天说看到大脚怪或尼斯湖怪，到最后便习以为常了。”&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;　　在Chrome浏览器推出前夕，皮查伊(Pichai)同一些人分享了他对Chrome浏览器的期望。究竟会有多少人用谷歌的浏览器？他说：“怎么也有几百万吧。我希望老妈也用，当然还有老爸。”谷歌内部对Chrome的认可并不代表这款浏览器会获得成功，乌普森认为，即便Chrome不能夺取很大的市场份额，但其创新技术将提高浏览器整体表现。他说：“如果网络变得越来越好，我们自然会是直接受益者。”&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;　　随着Chrome浏览器推出的时间日益临近，开发小组搬到谷歌公司园区一栋装饰一新的大楼内办公。在园区内最大的一间会议室内，全体工程师可以在此开会，但也只能站着，坐下的话空间就不够了。公司还向他们提供牛奶和饼干。在经过初期发展后，拉考维斯基将整层楼交给了手下。他不厌其烦地向大家解释将Chrome打造为开源产品的种种益处。开源产品是指代码对外公开，每个用户可以帮助改善浏览器的功能。&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;　　拉考维斯基说：“我们将可以衡量我们的测试效果。它能使人们从事我们从未想象过的事情，让用户对我们产生一种信赖，这是别的工作所没有的效应。”&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;　　随着会议即将结束，与会人员的情绪也达到顶点，这不仅仅是因为咖啡的作用。毕竟，Chrome开发小组即将揭开谷歌冥冥中要去完成的一款新产品的神秘面纱。尽管如此，开发小组当务之急是消除横亘在他们面前的五个技术难题。(杨琳)&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/368715695002753550-7378222843431784304?l=supersoftmm3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://supersoftmm3d.blogspot.com/feeds/7378222843431784304/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=368715695002753550&amp;postID=7378222843431784304' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/7378222843431784304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/7378222843431784304'/><link rel='alternate' type='text/html' href='http://supersoftmm3d.blogspot.com/2008/09/blog-post_7079.html' title='速度是最大优势'/><author><name>蔡康怡</name><uri>http://www.blogger.com/profile/17714044082004899851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-368715695002753550.post-3772919260990672886</id><published>2008-09-03T07:41:00.002-07:00</published><updated>2008-09-03T07:42:30.201-07:00</updated><title type='text'>开发过程一波三折</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: simsun; font-size: 14px; line-height: 22px; "&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;&lt;strong&gt;开发过程一波三折&lt;/strong&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;　　对现有浏览器进行修补以适应这一想法意味着，必须不断开发相关附加组件，例如工具条、RSS阅读器等等。但这种修补可能因为一次彻底升级成为一种徒劳。费希尔说：“作为Firefox的开发者，你必须不断创新，但你又经常担心，一旦推出下一版本，所有扩展将成为废物。实际上，这种事情已经发生了。”结论是显而易见的：只有开发自己的软件，谷歌才能将浏览器送入“云计算”时代，并潜在地掀起一股自微软和Netscape拉锯战(市场排名几乎每月变换)之后从未有过的革新浪潮。&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;　　谷歌构想的一个关键性革新就是所谓的多处理结构，这一系统能够帮助计算机在软件崩溃时继续运行。那为什么不将这一系统应用到浏览器身上呢？也就是说，当一个标签页崩溃时，其它标签页仍可以泰然自若。当然了，为了解决“一个老鼠屎坏了一锅汤”的问题，你也可以采取拖拽现有标签页创建一个新窗口这种方式。简单地说，就是从头开始，这种方式拥有其它一些优势。在设计上，你可以做到更加简洁并使其运行速度更快，而更简洁、更快速恰恰是谷歌奉行的两大原则。&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;　　2006年6月，古德杰、费希尔和曾就职于Mozilla的布赖恩·莱纳(Brian Ryner)开发出一个“小原型”。他们的第一个重大决定就是选用渲染引擎——帮助处理网页的HTML代码，并将结果显示在用户的屏幕上。他们敲定的两个开源引擎分别是用于Firefox的Gecko和用于苹果Safari 浏览器的WebKit。&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;　　WebKit已被负责开发谷歌移动操作系统Android的研究小组采用，其运行速度是Gecko的3倍，自然成为Chrome的首选。&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;　　几周之后，古德杰等人便开发出可在Windows系统下运行WebKit的一款比较简单的浏览器——某一个标签页崩溃后，这个浏览器仍能运行。古德杰回忆说：“当标签页崩溃后，用户会看到一个沮丧的表情图标，表明这个标签页已经‘死’了，这是Chrome浏览器的第一大特色。”不久之后，布林和佩奇视察了秘密开始的浏览器开发计划。参与开发的工程师帕姆·格里纳(Pam Greene)回忆说：“我记得很清楚，当时我就坐在桌子旁边，一条玩具蛇趴在桌子后面。布林一边玩着健身球，一边看费希尔演示，同时还不忘用手爱抚那条玩具蛇。”&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;　　&lt;strong&gt;公司高层终开绿灯&lt;/strong&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;　　没有谁能确切地说出公司高层是什么时候给Chrome浏览器工程开的绿灯。皮采回忆起一次行政会议，当时施密特好像不再像以前那样反对。这位CEO表示，如果谷歌确实决心上马浏览器工程，研究团队就必须开发出与IE和火狐有着很大不同的东西。另外，谷歌的浏览器速度必须更快，而且必须是开放源代码。&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;　　当然，这些正是研发团队早就想到了的地方。&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;　　总之，到2006年秋，Chrome浏览器从非正式概念跨越到了正式的工程。工程师布雷特·威尔逊(Brett Wilson)说：“某个星期五，我们开了一个会。主管说‘高层正在考虑做我们自己的浏览器，你们怎么看？’所有人是既兴奋又惶恐。”之所以惶恐，部分是因为他们非常清楚，研发一款有竞争力的浏览器是一项巨大的任务。&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;　　由于对火狐的依赖，研发团队成员内心的感受可谓五味杂陈，作为开放源代码发展的代表，火狐是对抗微软统治地位的一道屏障。2006年10月加入研发团队的工程师埃里克·凯(Erik Kay)说：“我们的担心是，人们会把它解读为破坏火狐。”&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;　　让谷歌人感到欣慰的是，他们的浏览器将百分之百地开放源代码：谷歌的创新可能会帮助找到进入Mozilla编码库的方法。厄普森说：“我们真心希望火狐和其它开放源代码的浏览器都能够成功。”&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;　　作为谷歌力挺火狐的一部分，皮采会见了Mozilla总裁米切尔·贝克(Mitchell Baker)，并在向她介绍了谷歌的计划。现在贝克表示，对Mozilla和火狐来说，Chrome浏览器是一种混合体。她将Chrome浏览器的推出视为是对Mozilla有关浏览器的选择至关重要这一信念的拥护。她说：“如果谷歌提出一些很好的新创意，那对用户来说再好不过。竞争促生最棒的浏览器。”但她也明白，很多她的客户将会下载谷歌的应用程序。她说：“我们期待人们去试用，然后再回来。因为独立非常重要，Mozilla还将继续存在。”&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;　　一个次要的问题是这款产品应该取一个什么名字。在研究了代号，但感觉都非常愚蠢之后，他们借用了过去用来描述框架、工具栏和浏览器窗口周围菜单的一个词：chrome。&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;　　另外聘请的一个人也非常重要。因为用户期望Chrome能使运行Web应用程序最优化，一个关键要素应该是JavaScript Java引擎，这是一种运行Web应用程序编码的“虚拟机”。建造这种虚拟机的理想人选是丹麦计算机科学家拉尔斯·巴克(Lars Bak)。2006年9月，在不停地进行了20多年的设计后，巴克准备抽出一部分时间用在他位于奥尔胡斯郊外的农场里。就在这个时候，谷歌打来了电话。&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;　　巴克建立了一个小团队，最初在农场工作，之后搬到了当地大学的办公室。他知道他的任务是研发一款比以往任何一款浏览器更快的引擎。他称自己的团队是“V8”项目的一部分，他说：“我们下定决心，一定要加快JavaScript的运行速度，我们花了4个月的时间去做。”这个丹麦研发小组通常是早上7、8点钟开工，一直编程到晚上6、7点钟。唯一的休息时间是午饭，他们会在5分钟内狼吞虎咽地吃完，然后玩20分钟的游戏。巴克说：“我们都很会玩Wii&lt;a href="http://sports.sina.com.cn/tennis/" target="_blank" class="akey" style="color: rgb(0, 0, 153); text-decoration: none; "&gt;网球&lt;/a&gt;游戏。”&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/368715695002753550-3772919260990672886?l=supersoftmm3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://supersoftmm3d.blogspot.com/feeds/3772919260990672886/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=368715695002753550&amp;postID=3772919260990672886' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/3772919260990672886'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/3772919260990672886'/><link rel='alternate' type='text/html' href='http://supersoftmm3d.blogspot.com/2008/09/blog-post_03.html' title='开发过程一波三折'/><author><name>蔡康怡</name><uri>http://www.blogger.com/profile/17714044082004899851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-368715695002753550.post-1899944128616736522</id><published>2008-09-03T07:41:00.001-07:00</published><updated>2008-09-03T07:41:52.040-07:00</updated><title type='text'>谷歌Chrome浏览器开发内幕</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: simsun; font-size: 14px; line-height: 22px; "&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;&lt;span style="font-family:楷体_GB2312;"&gt;导语：10月号《连线》杂志撰文称，谷歌推出Chrome浏览器是一个计划周密的行动，目的非常明确，就是要与微软的IE抢占市场份额。&lt;/span&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;　　&lt;strong&gt;开发浏览器传闻变现实&lt;/strong&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;　　8月18日，谷歌在加州山景城总部41号大楼一个小会议室召开每周一次的经理会，这可能是发布Chrome浏览器前的最后一次经理会。在会议上，布赖恩·拉考维斯基(Brian Rakowski)走向白色书写板，用黑色干擦笔在白板上写了12个条目。&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;　　拉考维斯基今年20多岁，身体瘦长，喜爱交友，是一项秘密计划——Chrome浏览器开发——的产品经理。据悉，这一计划从启动到现在已经有两年多时间了。&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;　　他写的第一条是“发布状态”(State of the Release)。被讨论的发布对象就是外界极为关注的Chrome——谷歌的第一个网页浏览器。浏览器是网上冲浪的必备工具，帮助用户完成搜索、阅读、购买、办理银行业务、登录Facebook、聊天、观看视频、听音乐等网上活动。对于谷歌来说，推出Chrome绝对是一个重大举措，是实现谷歌时代真正到来所必不可少的一步。&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;　　在将桌面计算升级到“云计算”过程中，谷歌拥有相当大的优势。Chrome的出现无疑是向其竞争对手微软发出的一大挑战。多年前，微软正是凭借IE浏览器击溃Netscape Navigator。随着Chrome的登场，IE是否会面临和Netscape Navigator一样的命运，我们拭目以待。&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;　　实际上，谷歌将推出浏览器的传闻很久以前就已不胫而走。在漫长的等待中，很多人早已闭上讨论之口。但这一次的经理会势必再次启动讨论之门。按照谷歌的计划，Chrome在9月2日正式登场。在公开测试版之前的最后一个版本，拉考维斯基及其团队只发现5个“bug”，而且都已解决。技术负责人之一的马克·拉尔森(Mark Larson)说：“事情看起来还不错。”&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;　　谷歌产品管理副总裁桑达·皮采(Sundar Pichai)问道：“什么东西让你们搞了一个晚上？”参与第一个原型开发的工程师达林·费希尔(Darin Fisher)说：“当然不是Chrome。”这句话引来一片笑声，因为每一个人都知道他家里有一个只有10周大的孩子。拉考维斯基拿出一支红笔在“发布状态”旁边加了一个“X”。这是一个信号，暗示谷歌Chrome浏览器离成为现实只有一步之遥。&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;　　&lt;strong&gt;早在2001年便有开发打算&lt;/strong&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;　　谷歌为什么要开发浏览器？这似乎是一个很容易回答的问题。相比之下，人们更为关注的是，谷歌开发浏览器为什么用了这么长时间。皮采说：“我们要做的是让人们使用一种浏览器访问我们的资源和网络。”CEO埃里克·施密特(Eric Schmidt)说：“浏览器是关键所在。”他应该很清楚这一点，因为在上世纪90年代激烈的浏览器大战中，他就竟曾担任过Sun的首席技术官(CTO)。毫无疑问，谷歌创始人拉里·佩奇(Larry Page)和塞吉·布林(Sergey Brin)自然也知道这一点。&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;　　施密特说：“在2001年加盟谷歌时，佩奇和布林就对我说‘我们要开发自己的浏览器’。我当时的回答是‘不’。”他解释说，当时的时机还不成熟。“我不相信公司那时已具备足以经受住一场浏览器战争的实力。我们的战略目标应该在‘雷达探测不到的地方’，这一点非常重要。”虽然当时没有进行开发，但打造自家浏览器的想法却保留下来，传闻也开始蔓延开来。2004年，《纽约时报》援引一名自称了解谷歌业务具体细节的人的话报道说，谷歌正开始开发浏览器。消息一经传出，施密特随即予以公开否认。&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;　　在幕后，Chrome开发仍旧是施密特与谷歌创始人争论的话题。谷歌最后采取了一种折衷办法，组建一个小组，任务是改进浏览器奇才本·古德杰(Ben Goodger)和费希尔负责开发的开源浏览器Firefox。(古德杰和费希尔均效力于Firefox拥有者、非盈利性组织Mozilla)除此之外，谷歌还推出另一个举措，聘请曾就职于NeXT 公司的37岁的工程师莱纳斯·厄普森(Linus Upson)担任工程研发总监。费希尔说：“佩奇和布林的决定是非常明智的，原因再简单不过：如果能做好Firefox扩展，他们就有能力开发出一款优秀的浏览器。”&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 164.28%; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;　　2006年春季，Firefox开发小组开始讨论设计一款新的浏览器。他们热爱Firefox，但他们也知道当前所有浏览器都有一个共同缺陷。在最初构思微软IE和Firefox心脏的代码库时，浏览器并没有现在这么复杂。之前只能在桌面上实现的功能——邮件、电子表格、数据库管理——现在却越来越多地在网上进行。在即将到来的“云计算”时代，网络已不仅仅是一个内容传递平台。&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/368715695002753550-1899944128616736522?l=supersoftmm3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://supersoftmm3d.blogspot.com/feeds/1899944128616736522/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=368715695002753550&amp;postID=1899944128616736522' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/1899944128616736522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/1899944128616736522'/><link rel='alternate' type='text/html' href='http://supersoftmm3d.blogspot.com/2008/09/chrome.html' title='谷歌Chrome浏览器开发内幕'/><author><name>蔡康怡</name><uri>http://www.blogger.com/profile/17714044082004899851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-368715695002753550.post-5352381349337117263</id><published>2008-09-02T22:24:00.000-07:00</published><updated>2008-09-02T22:26:36.294-07:00</updated><title type='text'>谷歌信奉速度是金钱</title><content type='html'>　9月3日消息，据国外媒体报道，谷歌本周二表示，该公司希望新发布的Chrome浏览器能够改进搜索、广告和应用软件业务，而不是成为浏览器市场上的一匹黑马。&lt;br /&gt;　　谷歌负责产品管理的副总裁桑达皮采（Sundar Pichai）在该公司总部举行的一次新闻发布会上说，“我们发布Chrome的目标是推动Web平台的发展。我们认为浏览器应当有更大的发展，与Web保持同步。”&lt;br /&gt;　　谷歌联合创始人谢尔盖布林（Sergey Brin）表示，“如果互联网使用量增长迅速，我们的业务就会良性发展。”&lt;br /&gt;　　Chrome的目标是提高互联网浏览和Web应用软件与桌面应用软件相比的竞争力。通过Chrome及其多内核架构，谷歌希望浏览器具有可以与现代操作系统相媲美的稳定性。&lt;br /&gt;　　像稳定性一样，速度也是Chrome的一大特性。“时间就是金钱”这句话对谷歌已经不再适用，对谷歌来说速度才是金钱。正如谷歌联合创始人拉里佩吉（Larry Page）所说，更快的互联网浏览速度会带来更多的搜索，从而提高谷歌的业绩。佩吉表示，“我们在上网时经常需要等待显示网页内容。”&lt;br /&gt;　　Chrome的目标是将用户等待时间缩短到最低限度。在新闻发布会上进行的静态网页加载测试中，Chrome的平均页面渲染时间为77.28毫秒，IE浏览器的平均页面渲染时间为220.64毫秒。&lt;br /&gt;　　谷歌强调说，Chrome是一款开放源代码浏览器，不会对Mozilla或其它开放源代码项目构成威胁。布林说，任何浏览器的改进都对谷歌有利。&lt;br /&gt;　　皮采表示，“&lt;strong&gt;我们认为浏览器是现代应用软件平台&lt;/strong&gt;。”（文芹）&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/368715695002753550-5352381349337117263?l=supersoftmm3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://supersoftmm3d.blogspot.com/feeds/5352381349337117263/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=368715695002753550&amp;postID=5352381349337117263' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/5352381349337117263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/5352381349337117263'/><link rel='alternate' type='text/html' href='http://supersoftmm3d.blogspot.com/2008/09/blog-post_9175.html' title='谷歌信奉速度是金钱'/><author><name>蔡康怡</name><uri>http://www.blogger.com/profile/17714044082004899851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-368715695002753550.post-3382030313333646381</id><published>2008-09-02T06:22:00.001-07:00</published><updated>2008-09-02T06:22:26.076-07:00</updated><title type='text'>软件体系结构的概念</title><content type='html'>一 从软件危机谈起&lt;br /&gt;　　软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。20世纪60年代末至20世纪70年代初，"软件危机"一词在计算机界广为流传。事实上，几乎从计算机诞生的那一天起，就出现了软件危机，只不过到了1968年在原西德加密施（Garmish）召开的国际软件工程会议上才被人们普遍认识到。&lt;br /&gt;1 软件危机的表现&lt;br /&gt;（1）软件成本日益增长&lt;br /&gt;　　在计算机发展的早期，大型计算机系统主要是被设计应用于非常狭窄的军事领域。在这个时期，研制计算机的费用主要由国家财政提供，研制者很少考虑到研制代价问题。随着计算机市场化和民用化的发展，代价和成本就成为投资者考虑的最重要的问题之一。20世纪50年代，软件成本在整个计算机系统成本中所占的比例为10%-20%。但随着软件产业的发展，软件成本日益增长。相反，计算机硬件随着技术的进步、生产规模的扩大，价格却不断下降。这样一来，软件成本在计算机系统中所占的比例越来越大。到20世纪60年代中期，软件成本在计算机系统中所占的比例已经增长到50%左右。&lt;br /&gt;　　而且，该数字还在不断地递增，下面是一组来自美国空军计算机系统的数据：1955年，软件费用约占总费用的18%，1970年达到60%，1975年达到72%，1980年达到80%，1985年达到85%左右。&lt;br /&gt;（2）开发进度难以控制&lt;br /&gt;　　由于软件是逻辑、智力产品，软件的开发需建立庞大的逻辑体系，这是与其他产品的生产不一样的。例如：工厂里要生产某种机器，在时间紧的情况下可以要工人加班或者实行"三班倒"，而这些方法都不能用在软件开发上。&lt;br /&gt;　　在软件开发过程中，用户需求变化等各种意想不到的情况层出不穷，令软件开发过程很难保证按预定的计划实现，给项目计划和论证工作带来了很大的困难。&lt;br /&gt;　　BROOK曾经提出："在已拖延的软件项目上，增加人力只会使其更难按期完成"。事实上，软件系统的结构很复杂，各部分附加联系极大，盲目增加软件开发人员并不能成比例地提高软件开发能力。相反，随着人员数量的增加，人员的组织、协调、通信、培训和管理等方面的问题将更为严重。&lt;br /&gt;　　许多重要的大型软件开发项目，如IBM OS/360和世界范围的军事命令控制系统（WWMCCS），在耗费了大量的人力和财力之后，由于离预定目标相差甚远不得不宣布失败。&lt;br /&gt;（3）软件质量差&lt;br /&gt;　　软件项目即使能按预定日期完成，结果却不尽人意。1965年至1970年，美国范登堡基地发射火箭多次失败，绝大部分故障是由应用程序错误造成的。程序的一些微小错误可以造成灾难性的后果，例如，有一次，在美国肯尼迪发射一枚阿脱拉斯火箭，火箭飞离地面几十英里高空开始翻转，地面控制中心被迫下令炸毁。后经检查发现是飞行计划程序里漏掉了一个连字符。就是这样一个小小的疏漏造成了这支价值1850万美元的火箭试验失败。&lt;br /&gt;　　在"软件作坊"里，由于缺乏工程化思想的指导，程序员几乎总是习惯性地以自己的想法去代替用户对软件的需求，软件设计带有随意性，很多功能只是程序员的"一厢情愿"而已，这是造成软件不能今人满意的重要因素。&lt;br /&gt;（4）软件维护困难&lt;br /&gt;　　正式投入使用的软件，总是存在着一定数量的错误，在不同的运行条件下，软件就会出现故障，因此需要维护。但是，由于在软件设计和开发过程中，没有严格遵循软件开发标准，各种随意性很大，没有完整的真实反映系统状况的记录文档，给软件维护造成了巨大的困难。特别是在软件使用过程中，原来的开发人员可能因各种原因已经离开原来的开发组织，使得软件几乎不可维护。&lt;br /&gt;　　另外，软件修改是一项很"危险"的工作，对一个复杂的逻辑过程，哪怕做一项微小的改动，都可能引入潜在的错误，常常会发生"纠正一个错误带来更多新错误"的问题，从而产生副作用。&lt;br /&gt;　　有资料表明，工业届为维护软件支付的费用占全部硬件和软件费用的40%-75%。&lt;br /&gt;2 软件危机的原因&lt;br /&gt;　　从软件危机的种种表现和软件作为逻辑产品的特殊性可以发现软件危机的原因：&lt;br /&gt;（1）用户需求不明确&lt;br /&gt;　　在软件开发过程中，用户需求不明确问题主要体现在四个方面：&lt;br /&gt;　　◇ 在软件开发出来之前，用户自己也不清楚软件的具体需求；&lt;br /&gt;　　◇ 用户对软件需求的描述不精确，可能有遗漏、有二义性、甚至有错误；&lt;br /&gt;　　◇ 在软件开发过程中，用户还提出修改软件功能、界面、支撑环境等方面的要求；&lt;br /&gt;　　◇ 软件开发人员对用户需求的理解与用户本来愿望有差异。&lt;br /&gt;（2）缺乏正确的理论指导&lt;br /&gt;　　缺乏有力的方法学和工具方面的支持。由于软件不同于大多数其他工业产品，其开发过程是复杂的逻辑思维过程，其产品极大程度地依赖于开发人员高度的智力投入。由于过分地依靠程序设计人员在软件开发过程中的技巧和创造性，加剧软件产品的个性化，也是发生软件危机的一个重要原因。&lt;br /&gt;（3）软件规模越来越大&lt;br /&gt;　　随着软件应用范围的增广，软件规模愈来愈大。大型软件项目需要组织一定的人力共同完成，而多数管理人员缺乏开发大型软件系统的经验，而多数软件开发人员又缺乏管理方面的经验。各类人员的信息交流不及时、不准确、有时还会产生误解。软件项目开发人员不能有效地、独立自主地处理大型软件的全部关系和各个分支，因此容易产生疏漏和错误。&lt;br /&gt;（4）软件复杂度越来越高&lt;br /&gt;　　软件不仅仅是在规模上快速地发展扩大，而且其复杂性也急剧地增加。软件产品的特殊性和人类智力的局限性，导致人们无力处?quot;复杂问题"。所谓"复杂问题"的概念是相对的，一旦人们采用先进的组织形式、开发方法和工具提高了软件开发效率和能力，新的、更大的、更复杂的问题又摆在人们的面前。&lt;br /&gt;3 如何克服软件危机&lt;br /&gt;　　人们在认真地研究和分析了软件危机背后的真正原因之后，得出了"人们面临的不光是技术问题，更重要的是管理问题。管理不善必然导致失败。"的结论，便开始探索用工程的方法进行软件生产的可能性，即用现代工程的概念、原理、技术和方法进行计算机软件的开发、管理和维护。于是，计算机科学技术的一个新领域--软件工程诞生了。&lt;br /&gt;　　软件工程是用工程、科学和数学的原则与方法研制、维护计算机软件的有关技术及管理方法。软件工程包括三个要素：&lt;br /&gt;　　（1）方法。软件工程方法为软件开发提供了"如何做"的技术，是完成软件工程项目的技术手段；&lt;br /&gt;　　（2）工具。软件工具是人类在开发软件的活动中智力和体力的扩展和延伸，为软件工程方法提供了自动的或半自动的软件支撑环境；&lt;br /&gt;　　（3）过程。软件工程的过程则是将软件工程的方法和工具综合起来以达到合理、及时地进行计算机软件开发的目的。&lt;br /&gt;　　迄今为止，软件工程的研究与应用已经取得很大成就，它在软件开发方法、工具、管理等方面的应用大大缓解了软件危机造成的被动局面。&lt;br /&gt;二 构件和软件重用&lt;br /&gt;1 软件重用&lt;br /&gt;　　软件重用是指在两次或多次不同的软件开发过程中重复使用相同或相近软件元素的过程。软件元素包括程序代码、测试用例、设计文档、设计过程、需求分析文档甚至领域知识。通常，把这种可重用的元素称作软构件，可重用的软件元素越大，我们就说重用的粒度越大。&lt;br /&gt;　　使用软件重用技术可以减少软件开发活动中大量的重复性工作，这样就能提高软件生产率，降低开发成本，缩短开发周期。同时，由于软构件大都经过严格的质量认证，并在实际运行环境中得到校验，因此，重用软构件有助于改善软件质量。此外，大量使用软构件，软件的灵活性和标准化程度也可望得到提高。&lt;br /&gt;　　在这里，我们只是为了后面的行文方便，简单地介绍了软件重用技术的概念和作用。软件重用本身是一门博大精深的技术，有兴趣的读者可以进一步查阅有关资料和书籍。&lt;br /&gt;2 构件&lt;br /&gt;　　一般认为，构件是指语义完整、语法正确和有可重用价值的单位软件，是软件重用过程中可以明确辩识的系统；结构上，它是语义描述、通讯接口和实现代码的复合体。简单地说，构件是具有一定的功能，能够独立工作或能同其它构件装配起来协调工作的程序体，构件的使用同他的开发、生产无关。从抽象程度来看，面向对象技术已达到了类级重用(代码重用)，它以类为封装的单位。这样的重用粒度还太小，不足以解决异构互操作和效率更高的重用。构件将抽象的程度提到一个更高的层次，它是对一组类的组合进行封装，并代表完成一个或多个功能的特定服务，也为用户提供了多个接口。整个构件隐藏了具体的实现，只用接口提供服务。&lt;br /&gt;　　近年来，构件技术发展迅速，已形成三个主要流派，分别是IBM的CORBA 、Sun的Java平台和Microsoft的COM+。 如果把软件系统看成是构件的集合，那么从构件的外部形态来看，构成一个系统的构件可分为5类：&lt;br /&gt;　　（1）独立而成熟的构件。独立而成熟的构件得到了实际运行环境的多次检验，该类构件隐藏了所有接口，用户只需用规定好的命令进行使用。例如，数据库管理系统和操作系统等。&lt;br /&gt;　　（2）有限制的构件。有限制的构件提供了接口，指出了使用的条件和前提，这种构件在装配时，会产生资源冲突、覆盖等影响，在使用时需要加以测试。例如，各种面向对象对象程序设计语言中的基础类库等。&lt;br /&gt;　　（3）适应性构件。适应性构件进行了包装或使用了接口技术，把不兼容性、资源冲突等进行了处理，可以直接使用。这种构件可以不加修改地使用在各种环境中。例如ActiveX等。&lt;br /&gt;　　（4）装配的构件。装配的构件在安装时，已经装配在操作系统、数据库管理系统或信息系统不同层次上，使用胶水代码（Blue Code）就可以进行连接使用。目前一些软件商提供的大多数软件产品都属这一类。&lt;br /&gt;　　（5）可修改的构件。可修改的构件可以进行版本替换。如果对原构件修改错误、增加新功能，可以利用重新"包装"或写接口来实现构件的替换。这种构件在应用系统开发中使用得比较多。&lt;br /&gt;　　基于构件的软件开发通常包括构件获取、构件分类和检索、构件评估、适应性修改以及将现有构件在新的语境下组装成新的系统。构件获取可以有多种不同的途径：&lt;br /&gt;　　（1）从现有构件中获得符合要求的构件，直接使用或作适应性修改，得到可重用的构件；&lt;br /&gt;　　（2）通过遗产工程，将具有潜在重用价值的构件提取出来，得到可重用的构件；&lt;br /&gt;　　（3）从市场上购买现成的商业构件，即COTS构件；&lt;br /&gt;　　（4）开发新的符合要求的构件。&lt;br /&gt;　　一个企业或组织在进行以上决策时，必须考虑到不同方式获取构件的一次性成本和以后的维护成本，做出最优的选择。&lt;br /&gt;三 软件体系结构&lt;br /&gt;1 软件体系结构的兴起&lt;br /&gt;　　六十年代的软件危机使得人们开始重视软件工程的研究。起初，人们把软件设计的重点放在数据结构和算法的选择上，随着软件系统规模越来越大、越来越复杂，整个系统的结构和规格说明显得越来越重要。软件危机的程度日益加剧，现有的软件工程方法对此显得力不从心。对于大规模的复杂软件系统来说，对总体的系统结构设计和规格说明比起对计算的算法和数据结构的选择已经变得明显重要得多。在此种背景下，人们认识到软件体系结构的重要性，并认为对软件体系结构的系统、深入的研究将会成为提高软件生产率和解决软件维护问题的新的最有希望的途径。&lt;br /&gt;　　自从软件系统首次被分成许多模块，模块之间有相互作用，组合起来有整体的属性，就具有了体系结构。好的开发者常常会使用一些体系结构模式作为软件系统结构设计策略，但他们并没有规范地、明确地表达出来，这样就无法将他们的知识与别人交流。软件体系结构是设计抽象的进一步发展，满足了更好地理解软件系统，更方便地开发更大、更复杂的软件系统的需要。&lt;br /&gt;　　事实上，软件总是有体系结构的，不存在没有体系结构的软件。体系结构（Architecture）一词在英文里就是"建筑"的意思。把软件比作一座楼房，从整体上讲，是因为它有基础、主体和装饰，即操作系统之上的基础设施软件、实现计算逻辑的主体应用程序、方便使用的用户界面程序。从细节上来看每一个程序也是有结构的。早期的结构化程序就是以语句组成模块，模块的聚集和嵌套形成层层调用的程序结构，也就是体系结构。结构化程序的程序（表达）结构和（计算的）逻辑结构的一致性及自顶向下开发方法自然而然地形成了体系结构。由于结构化程序设计时代程序规模不大，通过强调结构化程序设计方法学，自顶向下、逐步求精，并注意模块的耦合性就可以得到相对良好的结构，所以，并未特别研究软件体系结构。&lt;br /&gt;　　我们可以作个简单的比喻，结构化程序设计时代是以砖、瓦、灰、沙、石、预制梁、柱、屋面板盖平房和小楼，而面向对象时代以整面墙、整间房、一层楼梯的预制件盖高楼大厦。构件怎样搭配才合理？体系结构怎样构造容易？重要构件有了更改后，如何保证整栋高楼不倒？每种应用领域需要什么构件（医院、工厂、旅馆）？有哪些实用、美观、强度、造价合理的构件骨架使建造出来的建筑（即体系结构）更能满足用户的需求？如同土木工程进入到现代建筑学一样，软件也从传统的软件工程进入到现代面向对象的软件工程，研究整个软件系统的体系结构，寻求建构最快、成本最低、质量最好的构造过程。&lt;br /&gt;　　软件体系结构虽脱胎于软件工程，但其形成同时借鉴了计算机体系结构和网络体系结构中很多宝贵的思想和方法，最近几年软件体系结构研究已完全独立于软件工程的研究，成为计算机科学的一个最新的研究方向和独立学科分支。软件体系结构研究的主要内容涉及软件体系结构描述、软件体系结构风格、软件体系结构评价和软件体系结构的形式化方法等。解决好软件的重用、质量和维护问题，是研究软件体系结构的根本目的。&lt;br /&gt;2 软件体系结构的定义&lt;br /&gt;　　虽然软件体系结构已经在软件工程领域中有着广泛的应用，但迄今为止还没有一个被大家所公认的定义。许多专家学者从不同角度和不同侧面对软件体系结构进行了刻画，较为典型的定义有：&lt;br /&gt;　　（1）Dewayne Perry和A1ex Wo1f曾这样定义：软件体系结构是具有一定形式的结构化元素，即构件的集合，包括处理构件、数据构件和连接构件。处理构件负责对数据进行加工，数据构件是被加工的信息，连接构件把体系结构的不同部分组组合连接起来。这一定义注重区分处理构件、数据构件和连接构件，这一方法在其他的定义和方法中基本上得到保持。&lt;br /&gt;　　（2）Mary Shaw和David Garlan认为软件体系结构是软件设计过程中的一个层次，这一层次超越计算过程中的算法设计和数据结构设计。体系结构问题包括总体组织和全局控制、通讯协议、同步、数据存取，给设计元素分配特定功能，设计元素的组织，规模和性能，在各设计方案间进行选择等。软件体系结构处理算法与数据结构之上关于整体系统结构设计和描述方面的一些问题，如全局组织和全局控制结构、关于通讯、同步与数据存取的协议，设计构件功能定义，物理分布与合成，设计方案的选择、评估与实现等。&lt;br /&gt;　　（3）Kruchten指出，软件体系结构有四个角度，它们从不同方面对系统进行描述：概念角度描述系统的主要构件及它们之间的关系；模块角度包含功能分解与层次结构；运行角度描述了一个系统的动态结构；代码角度描述了各种代码和库函数在开发环境中的组织。&lt;br /&gt;　　（4）Hayes Roth则认为软件体系结构是一个抽象的系统规范，主要包括用其行为来描述的功能构件和构件之间的相互连接、接口和关系。&lt;br /&gt;　　（5）David Garlan和Dewne Perry于1995年在IEEE软件工程学报上又采用如下的定义：软件体系结构是一个程序／系统各构件的结构、它们之间的相互关系以及进行设计的原则和随时间进化的指导方针。&lt;br /&gt;　　（6）Barry Boehm和他的学生提出，一个软件体系结构包括一个软件和系统构件，互联及约束的集合；一个系统需求说明的集合；一个基本原理用以说明这一构件，互联和约束能够满足系统需求。&lt;br /&gt;　　（7）1997年，Bass，Ctements和Kazman在《使用软件体系结构》一书中给出如下的定义：一个程序或计算机系统的软件体系结构包括一个或一组软件构件、软件构件的外部的可见特性及其相互关系。其中，"软件外部的可见特性"是指软件构件提供的服务、性能、特性、错误处理、共享资源使用等。&lt;br /&gt;　　总之，软件体系结构的研究正在发展，软件体系结构的定义也必然随之完善。在以后的文章里，如果不特别指出，我们将使用软件体系结构的下列定义：&lt;br /&gt;　　软件体系结构为软件系统提供了一个结构、行为和属性的高级抽象，由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。软件体系结构不仅指定了系统的组织结构和拓扑结构，并且显示了系统需求和构成系统的元素之间的对应关系，提供了一些设计决策的基本原理。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/368715695002753550-3382030313333646381?l=supersoftmm3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://supersoftmm3d.blogspot.com/feeds/3382030313333646381/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=368715695002753550&amp;postID=3382030313333646381' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/3382030313333646381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/3382030313333646381'/><link rel='alternate' type='text/html' href='http://supersoftmm3d.blogspot.com/2008/09/blog-post_02.html' title='软件体系结构的概念'/><author><name>蔡康怡</name><uri>http://www.blogger.com/profile/17714044082004899851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-368715695002753550.post-4592317892754222950</id><published>2008-09-02T06:16:00.001-07:00</published><updated>2008-09-02T06:16:42.375-07:00</updated><title type='text'>微软亚洲领导人论坛演讲全文:最重要是教育</title><content type='html'>新浪科技讯 4月19日，微软公司董事长比尔·盖茨开始第二天的访华行程。盖茨当日上午在清华大学发表演讲，并接受清华大学颁发的名誉博士学位证书。当天下午，盖茨出席在北京中国大饭店举办的2007微软-亚洲政府领导人论坛，并做了主题演讲。&lt;br /&gt;　　以下为盖茨演讲实录：&lt;br /&gt;　　比尔?盖茨：各位下午好，我非常高兴能够来到亚洲，有这么多激动人心的事情让我看到。我们聚集在一起共同探讨政府如何发挥作用来推动信息的革命以及在国家中的发生，使这些技术能够取得更高的效率，并且有更高的透明度，能有更好的服务，特别是在教育上，这真正能够来说明我们这样一种动态的发展，对教育的承诺等，这些是关键的因素，可以让我们继续的发展下去。&lt;br /&gt;　　今后十年的时间里，这一技术的进步可以给我们创造更多的机会，这是革命性的，有更多的生产力和活动，比我们以前更好，以低成本的技术使得价格不断下降，并且有更多人的使用。因为我们不仅仅是键盘操作，我们可以把机器作为墨水输入，可以给别人发出去，还有一些是语音的，可以拿照相机、摄像机看清楚谁在讲话，谁在哪个地方等等。这些自然的截面，有更加小的设备装置，可以说是无处不在的，并且是一些分布阶段的技术。&lt;br /&gt;　　通过这些技术的进步，人们可以使用目前的计算进行远距离的远程工作，能够比以前做的更好，他们能够导航信息来发现一些趋势，比以前做的更好。他们可以实现这些设备之间从电脑端到另一端的移动。可以更好的了解销售质量比以前更好。所以说更先进的技术来说很难以置信的。但技术进步的另外一个目标，将远远超出这些，并不只是来帮助、使用这样一些技术，需要花一段时间来实现，推动着全球资本发展。&lt;br /&gt;　　另外一点，随着时间的推移，这样一些技术，以及信息能够带来的能力，是通过互联网实现的。每一个小孩、每一个人能够根据自己的意愿来反映出自己的能力。技术发展如此之快，这是我们所能做到的，我们有这样一些技术、这样一些理念，包括培训设施我们都可以考虑，如何支持这些事情，并且保证质量。我们还可以考虑整个问题，不仅仅是PC的成本，而是一些连接性、培训、维护等支持所有事情，进行整合。其中多数来说都是很难的，花费也高昂，也不只是PC的硬件部分，还涉及软件。&lt;br /&gt;　　微软现在已经有30年的历史，最初的梦想是关于给所有人提供一台计算机，这样来说，我们需要回忆到最初的想法、最初的承诺，微软能够在哪些方面做些什么。现在我们可以每人进行计算，能够改变我们对教育现状的看法，并且有机会能够以在线的方式从全球最佳的大学看到一些在线的教育，能够看到教授，尽可能以最佳的方式进行教学，能够使学生对教育充满更多的兴趣，这些在今后都可以成为标准的能力，这都是我们所想到的。我们考虑大学的教师上课，并且提供相应的材料，我们也提供了一些测试，来证明他们有这样一些技能能够实现，课堂的教学有一些可以以低成本的方式得到，可能这一部分不应该重复，而是更好地使用这一部分的能力。同样来说，这些论证，实际上以测试的技术，也可以以非常有效的方法进行提供，这又使得我们去创造这样一种环境，所以老师和学生能够互动在一起上课，今天有一种面对面的方式，但随着时间的推移，其中有一部分也可以通过互联网实现，所以有一个非常有意思的研究，某些学生来看大学的课程，去大学观看，还有其他一些人在远程地区通过设备观看，对于远程设备来说，每15分钟停一下，因为学生要探讨，相互交流的内容。他们想了解，什么才是最好的学习方式才是最佳的办法，或者课堂中有什么问题，这样的远程小组可以在任何一个地方停下来，因为他们可以存储起来，可以接着往下看。所以说教育开始发生了一些变化，能够共享最佳的实践，能够享受互联网提供丰富的功能。我们会在很多地方看到这一点，微软公司正在做的一项发布就是要帮助和推动，我们把他叫做更加广泛的计划，我们可以能够让这些软件的捐献，可以以各种各样的方式广泛的潜力能够使人们共同充分挖掘潜力，因为其中涉及到了很多的问题，每一个国家都有一些具体的做法，我们也听到了一些政府和公民非常感兴趣的，包括做一些教育、创新，以及创造一些就业机会和环境等等。&lt;br /&gt;　　我们有一些企业他们考虑的是什么？我们如何利用最佳的实践方法，以及目前最好的结果，能够保证我们在一个全球的范围内相互共享和分享。所以，教育对于我们未来来说是一个最重要的投资。我们已经有一些能力看到目前的影响结果，计算机已经达到了1100万的中学生，在全球来说，我们还能够培训260万的老师。信息技术的推动发展，所以技术会成为一个关键的组成部分，在教师的体验中，我们有这样一些的设备，即使是公用的设备，可以让学生亲手体验到，让教师和所有的课程相互联系起来。所以我们发布一个新的叫做学生创新套件，在三年中可以买到，政府可以提供电脑，交给学生，我们提供一整套的软件套件，包括Windows XP Starter Edition、Microsoft Office Home and Student　2007、Microsoft Math 3.0、Learning Essentials 2.0 for Microsoft　Office 和 Windows Live? Mail desktop，能够装起来学习，以及所有的套件，这都是涉及到一些政府买的硬件。我们还要在任何一个系统都可以去做。我们可以看到非常好的工作来至于合作伙伴，Internet公司也做了很大的新硬件的进展，AMD也取得了一些进展，包括HP在世界上都取得了很多的进展。所以我们创新合作伙伴的创新，包括政府提供的一些服务，加在一起他可以推动我们项目的发展。&lt;br /&gt;　　教育这一领域发展速度令人难以置信。数字革命的变化，来看看银行业，通过一个数据手机就可以，比如说小额贷款也可以享受到一些好处，包括小额的保险、小额的储蓄，我们如何找到这样一些份额，这些都是可以通过手机来实现的，这是一个非常可靠的系统。这是在目前发展的早期阶段，即使对于发展中国家也是一样的，他可以使用信息技术能够减少我们很多服务的开销，使开销降低。这是我们真正所专注于去做的。&lt;br /&gt;　　考虑到今天的会议，企业中有很多的会议经常出差，面对面的进行开会。更多的是通过互联网能够共享文件，能够一起共享视频内容以及相互对话，这都是基于互联网的，没有额外的费用。所以说让我们的全球变成一个更小的地方，能够相互合作、相互工作，都是通过互联网连接能够实现到的。以及还有一些软件可以做，相当于教师的电话系统会消失，标准的PPS的设备也会消失，主要是把电话跟互联网连接就可以了，这些接口的截面可以使跟大屏幕进行连接，比如说电话会议，一些部可能的电话进来，我想某些人电话进来可以让他挑选在你的日期安排比较合适的日期打回来再见面，所有的都是可以通过互联网来实现，使人们省很多的钱，可以作为一个单独的PPS系统，在一个额外的时间能够有能力打电话给他们，这比我们的传统做法更好。&lt;br /&gt;　　现在的软件行业不断发展，我们也非常自豪，因为我们在衡量自己的时候，通过我们自己有什么样的创新合作伙伴，在亚洲对于我们每一个美元的业务来说，我们的每一个美元可以让他们不断发展，这是我们目前发展自己的最重要一种方式，我们可以创造这样一些机会，针对大的公司、小公司以及新的创新都是一样的。&lt;br /&gt;　　有一个例子我们怎么去做？我们有一些学生他有这样一些学习比赛，他们开发出新的理念和创新。我们叫做创新杯比赛，我们已经有10万个学生注册了，将来还会有更多的创新杯的竞赛，还会看到更多的注册。其中有一个项目提交比赛来说都是最基础的，比如说创造一家新的公司，能够提交这样一种比赛，非常高兴地看到这个工作项目的一部分，我们来帮他们做一些营销工作，让帮他们采取一些新的方式去做，我们可以创建更多的创建中心，使更多的开发人员到这个地方，通过这个地方使用他们自己买不起的硬件进行开发工作。在全球目前我们差不多有110个中心，承诺在今后的外汇市场上会有更多，要超过200个，更多很多地点能够针对开发人员到这个地方去与协作合作伙伴进行一块儿开发。同样还有很多的例子，比如说新加坡一家公司，他们已经走出了创新中心，他比一个小的门户机构会小一些，通过互联网的连接，时间可以推移，学生就不在需要成本了，他的装置成本比课本的成本更小一些。他们可以看笔记，可以看各种各样的视频。这远远优于基于纸张的课本更好一些。所以他们做了这样一些软件，针对这样一种平板电脑来说，已经在很多国家已经超过140多个国家进行使用，这是通过创新中心来实现的，通过创造这些技术来说已经进入各个行业，这些行业继续增长。目前缺少一些好的工程师的技能，全球也一样，有很多富裕国家参加这样的一个工程合作，这就是对于政府来说有这样一些很大的机会，其中多数国家都是在亚洲地区。也许全球都会从这样的技能来实现，我们在印度可以创造一个就业的门户，人们可以查找一些更多的技能，以及更多的技能需要得到的。以及这些工作在什么地方，能够通过很快的方式来得到合作伙伴，以及以非常出色的技术方式来使用技术给人们提供能力，当然这些技术是成功的，我们也会有很多这样的技术，会把这些方式提供过来。并且把源代码放在实验室中，这样使得人们很快启动。他们愿意这样做，我们去帮他们也可以的，这对于政府很多项目也是一样的。比如说门户项目，连接不同的部门放在一个网站上，我们也可以很快做这个项目，因为我们在很多几十个国家都这样做。所以把现有的软件，不用做任何的变化，或者说他们并不只是做变化，他们只是一个传统的项目就可以，软件互相连接放在WEB的服务器上，我们已经做过很多次这样的门户，这是直截了当的做法。但人们考虑到软件项目的时候，传统来讲他们会想到一些项目，很多的，需要成千成万的投入，需要很长的时间，通过几年的发展我们一些应用硬件已经有了，这对于项目来说少数的时间，不到18个小时的时间就能够实现。我们通过样机来看到用户的反馈情况进行改进，而不是通过复杂的销售周期开始，现在的软件更好，我们做事情可以更快，任何一个做互联网的系统，我们知道他经常可以得到用户的反馈，他们使用什么样的功能，人们在使用什么，可以给我们做一些调查，以及哪些方面他们是喜欢的，哪些他们不喜欢。以及提供等等浏览的提升，提高人们的满意度，能够享受这样的服务。&lt;br /&gt;　　经常有人在问我，技术革命的发生是否已经到头了，是否已经到了极限，当然答案在今后十年终也不会看到有什么奇迹会发生，我们看到的能力来说会变的越来越大、越来越好，Windows服务器的廉价机器也比大型主机的能力更大，政府的数据库，不管是每一个公民还是每一个公民存的照片，对于这样一些项目来说关键是有好的软件以及培训以及非常好的程序和截面，这是一个项目的重要一部分，也并不只是说只依赖于硬件。&lt;br /&gt;　　因为这里边把一个系统放在一起，他带来一些挑战，我们看到已经没有什么极限，从连接系统来说看到一些新的系统途径，已经在地球中开始出现。以及非常好的高带宽的，使用有线式的无线式的。包括还有带宽的变化，我们并不只是说一些视频，比如说教育方面所得到的情况。以及还有电影以及其他的会议，任何一种类新的视频，在五年前互联网的应用以及互联网的照片，但视频并不是一个主流的，今天已经变成主流了。现在系统的能力，以及软件工具的能力已经达到了这种程度，比如说使用工序的连接，也可以使用这样一些视频，能够使所有的系统连接的很好，有一些是非常重要的进行使用，比如说教育、培训以及其他各个方面，能够进行张贴以及娱乐性的视频，互联网都有这样一个结构，有的是在家里使用，有的是在工作当中使用，有的是在教育上使用，人们都可以来做期待，都是非常宝贵的，去到任何地方都可以看到。&lt;br /&gt;　　在任何地方你住在那里只要有Internet就可以看到你熟悉的表格、文件以及发电子邮件。这些工具现在已经变成标准化的工具，我们会进行更多地合作、进行更多的信息，企业业务的信息，这样内容也更加丰富。所以这些工具将会继续允许我们在客机方面的进展，包括向设计飞机的科学，还是生物科学还是在理解基因的科学，以及如何研究进行数据方面的研究在医学上取得进展，所以说Internet互联网所有的技术使得人们能够进行相互信息、实现互联，并且速度也会越来越快。就像我里边所说的中心最重要的一点是教育，以及在空间中可以做什么。我们可以看到有很多的做法，可以改变硬件，我们可以有很多的方法，去使用新的做法。我觉得这些理念，首先是要在亚洲的国家使用，因为刚才我已经提到过，这些国家有非常大的潜力，不管他们处在什么样的发展阶段，他们对于新技术、对于教育非常感兴趣，而且致力于教育。我们相信微软在这过程中能够发挥非常重要的作用。今天我们已经宣布了有学生创新的套件，这是政府的项目。还有其他项目围绕创新所做的，这些都是在我们能做的基础之上，事实上我们可以给大家提供非常好的软件，提供培训的经费，而且硬件的成本越来越低，针对我们讨论的50亿人，这些事情不会一夜间发生，我不仅仅需要通过电脑、有时候需要通过手机、电视以及通过其他的设施进行教育的传播。所以在这方面我们必须要具有创新性，也需要让这些教师自己补充信息。每一个学科都要有各种各样语言的使用。全球的公司所开发出来的使地方的公司也能做到，所有这些的根源都需要回到教育，所以说教育是一个关键的问题。&lt;br /&gt;　　我们是世界的公民，通过教育才可以实现自己充分的潜力，同时也要回到我们刚才所说的，现在我们读的书和以前读的书，如果想让我们预测到经济机遇，看看他们处在什么样情况下的国家，现在的情况是不断变化，到底在什么样的国家存在最好的机遇，也是取决于他们受到什么样的教育，所以世界上的每一个人，如果能够得到非常好的大学教育，可以通过互联网得到教育的话，就会得到工作。因为缺乏这方面的高级人才，所以这可以提高世界各地的工作水平，而且花了很多的时间，生活水平提高之后，教育也能够提高。这样可以更好地理解学生的需求，同时可以更好地帮助教师也做的更好。我们致力于发挥这方面的作用，同时我们对于这方面的结果也是非常激动的。所以大家可以感觉到，为什么教育是我们的业务，对于所有的事情，我们现在还是处在应用技术和推动所有的开端。谢谢！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/368715695002753550-4592317892754222950?l=supersoftmm3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://supersoftmm3d.blogspot.com/feeds/4592317892754222950/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=368715695002753550&amp;postID=4592317892754222950' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/4592317892754222950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/4592317892754222950'/><link rel='alternate' type='text/html' href='http://supersoftmm3d.blogspot.com/2008/09/blog-post.html' title='微软亚洲领导人论坛演讲全文:最重要是教育'/><author><name>蔡康怡</name><uri>http://www.blogger.com/profile/17714044082004899851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-368715695002753550.post-4719077912497685341</id><published>2008-09-02T06:13:00.000-07:00</published><updated>2008-09-02T06:14:22.188-07:00</updated><title type='text'>20年来比尔·盖茨的智慧语录摘选</title><content type='html'>作为微软和不断创造成功奇迹的传奇式人物，比尔-盖茨有很多针对广泛科技领域的话题发表权威论断的机会。这其中的大部分，其正确性都已被后来的事实证明。&lt;br /&gt;　　以下是近20年来比尔-盖茨的一些充满智慧的名言所进行的总结，所附的照片主要来自PC World的资料中心和微软的网站。&lt;br /&gt;　　1983年&lt;br /&gt;　　“目前已经有很多主要在计算机上应用的软件开发出来。就现在的情况看，面向IBM计算机的软件在其中占据着绝对的统治地位，但我相信，这种情况是会改变的，虽然其比例降到50%以下的可能性极小。”&lt;br /&gt;　　“在市场上目前的确存在很多垃圾软件，我们必须要对开发师们进行培训，告诉他们如何才能开发出更好的软件产品来。”&lt;br /&gt;　　——摘录于1983年比尔-盖茨与PC World的一次访谈。&lt;br /&gt;　　1983年/1984年&lt;br /&gt;　　“但是，当我和保罗-艾伦(Paul Allen)在1975年开发出第一台微机版BASIC语言时，由于高级语言要求系统需具备高速处理器和大容量内存，这使其在大型机和小型机上的应用受到了限制。”&lt;br /&gt;　　“计算机语言必须不断与新的情况相适应。这意味着，计算机语言和人类语言一样。我们的语言并非是一臣不变的，它们要随着新的情况不断进行调整。与此类似，由于微型计算机的规模不断扩大，计算机语言也必须随之不断发展完善自己。”&lt;br /&gt;　　——摘自比尔-盖茨为《PC World年度软件回顾特刊》撰写的一篇文章。&lt;br /&gt;　　1986年&lt;br /&gt;　　“我们相信很多组织自己拥有计算机的时代很快就要到来，在这之前，有两件主要的事情需要我们做好准备，这就是设计好图形用户界面，以便能使像更大尺寸的显示器、新型芯片、激光打印机和互联网这些设备能够发挥最大的优势。大家将很快便可感受到运行在分布模式下的软件优势。”&lt;br /&gt;　　“从现在开始，一年以后市场上出售的所有计算机都将以286为基础，三年之后，大家将看到它们升级成386计算机。今天，如果我们将数据长期存储，目前计算机的存储性能(或程序运行它们的方便性)，实在让人不敢恭维。我相信最终，能够满足公司处理工作需求的应用程序将会面世。标准软件程序和硬件将会使计算机的性能、用途得到显著的提高。那时人们将会感觉到如果没有计算机帮忙，他们的工作效率将会大幅下降。”&lt;br /&gt;　　“我们还没有见过那种只有10个非存储芯片(non-memory chips)的超级小型计算机(其中一个芯片的显示分辨率为1000×1000像素)，或是不断更新的显示器。但是在接下来的三年里，这些都将变成现实，那时的人们如果看到现在的我们在640×200的模式下工作时，一定搞不懂我们在干什么。”&lt;br /&gt;　　——摘自1986年1月比尔-盖茨与PC World进行的一次访谈。&lt;br /&gt;　　1987年&lt;br /&gt;　　比尔-盖茨与最喜欢的应用程序:“Excel。这是一款你和它接触越多，越发对其喜爱的软件。我经常使用Word，但是它不能进行分类规划，而且也不能充分发挥我的创造性。”&lt;br /&gt;　　同期取得的最重要成就：“帮助创建了一座MS-DOS标准的工作站，由此实现了在数千台电脑上运行同一种应用程序的梦想。当我16岁时，曾经夜以继日的开发FORTRAN编辑器，我发现那时已经有数百个在我之前写出的应用程序，我所开发的可能并不是最好的。但是由于存在很多不同的构架和操作系统，我又不得不写这些程序。所以我想能不能找到某种方法，以杜绝这些不得不做的无用功？这样不仅可以降低开发的应用程序数量，同时又能提高其质量。最终我终于达成了这个心愿，这让我非常开心。”&lt;br /&gt;　　——摘自1987年与PC World的一次访谈。&lt;br /&gt;　　1993年&lt;br /&gt;　　“工作小组不断增长的现象将会激发人们对使用计算机的需求……未来微软所有的应用程序都将是工作组形式为基础的，而Windows工作组正是实现这个目标的一种方法。”&lt;br /&gt;　　——摘自1993年1月PC World的一篇报道。&lt;br /&gt;　　1997年&lt;br /&gt;　　就微软花费4.25亿美元购买WebTV网络的议案，比尔-盖茨指出：“我们的目标是不仅要不断积累如何不断提高PC连接设备性能的经验，还要着眼于新一代TV产品。”&lt;br /&gt;　　——摘自1997年6月9日信息电子世界(InfoWorld Electric)Bob Trott对新闻发布会的一篇报道。&lt;br /&gt;　　1999年&lt;br /&gt;　　“数码市场有广阔的发展前景，我们要不断的简化数码产品的技术含量、不断降低它们的价格，并使其更加贴进消费市场。”&lt;br /&gt;　　他说，关于在个人隐私上存在的问题，是可以轻易被技术发展所解决的，但是隐私保护条例与政治的关系要远远大于技术因素。盖茨还强调要对软件进行更多的测试以保证其质量。这被业界广泛认为是微软客户的福音。&lt;br /&gt;　　——摘自1999年4月3日PC World编辑Tom Spring发表的比尔-盖茨在MIT实验室对于计算机技术举行的35周年庆典上的讲话。&lt;br /&gt;　　“计算机将成为用户存储信息和创建文档的总服务站。至于浏览网站关注世界的变化，消费者将有范围广阔的设备可供选择。&lt;br /&gt;　　——摘自1999年12月28日IDG新闻服务机构Clare Haney的一篇报道。&lt;br /&gt;　　2000年&lt;br /&gt;　　“个人电视机具备录制下用户喜欢观看的电视节目的功能。”&lt;br /&gt;　　使用这些新的或旧的网络设备，“整个房子就如一台计算机一样。”&lt;br /&gt;　　——摘自比尔-盖茨在2000年国际消费者电子大会上的致辞，由PC World的Cameron Crouch在2000年1月6日进行报道。&lt;br /&gt;　　“他们在不断的商讨计算机如何才能解决世界存在的所有问题。他们被自己做的事情深深的吸引了，他们还要为人类价值的前景做出全面的考虑。”&lt;br /&gt;　　——摘自纽约时报的一篇关于比尔-盖茨在澳大利亚墨尔本2000年10月的讲话，PC World在2001年2月对其进行了全版引用。&lt;br /&gt;　　2001年&lt;br /&gt;　　“手写板计算机能够摆脱真正的约束，我预测在5年之内它将成为美国出售的PC中最受欢迎的机型。”&lt;br /&gt;　　——摘自比尔-盖茨在计算机分销商展览会的发言(2006年由Martyn Williams在IDG新闻服务板块上引用)。&lt;br /&gt;　　2003年&lt;br /&gt;　　“我一直梦想着运行非常、非常好的计算机在某天能够来到这个世界，那时，我会使用微软开发的新产品。我再也不用给所有的开发师们发电子邮件质问他们：‘你们为什么要这样做？’”&lt;br /&gt;　　“如果你已经制定了一个远大的计划，那么就在你的生命中，用最大的努力去实现这个目标吧。”&lt;br /&gt;　　——摘自比尔-盖茨在印度技术协会50周年庆典聚会上的讲话，由InfoWorld.com的编辑Paul Krill在2003年1月21日对其进行了报道。&lt;br /&gt;　　2004年&lt;br /&gt;　　“如果我们观察今天的计算机，其对简便易用的目标，可谓只实现了一半。”&lt;br /&gt;　　——摘自比尔-盖茨与伯克利大学工程技术学院主任Richard Newton的谈话。由IDG新闻服务板块的记者Joris Evers在2004年10月1日进行了报道。&lt;br /&gt;　　2006年&lt;br /&gt;　　“我们的目标不是成为设备中心，而是要成为用户中心。”&lt;br /&gt;　　——摘自比尔-盖茨在MIX 2006大会上的讲话，由IDG新闻服务板块记者Elizabeth Montalbano在2006年3月20日进行了报道。&lt;br /&gt;　　“我们的确已经看到，长时间以来，墨水服务写字板平台输入子系统和语音辨识输入系统已经变的和键盘一样重要，虽然相互之间不能取代，但重要性相同。”&lt;br /&gt;　　“事实上，我们相信在未来的某一天，所有的学生不用再背着教科书，代之使用的是连接无线网络的写字板电脑，学生们无论到哪里，都可以随身携带写字板电脑，它的亮度要高于教科书并且更具灵活性。提供的内容也更加丰富。”&lt;br /&gt;　　——摘自2006年4月21日IDG新闻服务板块的记者Martyn Williams在东京大会上的一篇报道。PC World的编辑Amber Bouman为此篇报道也做出了贡献。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/368715695002753550-4719077912497685341?l=supersoftmm3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://supersoftmm3d.blogspot.com/feeds/4719077912497685341/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=368715695002753550&amp;postID=4719077912497685341' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/4719077912497685341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/4719077912497685341'/><link rel='alternate' type='text/html' href='http://supersoftmm3d.blogspot.com/2008/09/20.html' title='20年来比尔·盖茨的智慧语录摘选'/><author><name>蔡康怡</name><uri>http://www.blogger.com/profile/17714044082004899851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-368715695002753550.post-490344438047604484</id><published>2008-09-01T06:03:00.001-07:00</published><updated>2008-09-01T06:03:34.567-07:00</updated><title type='text'>我遇到的几个VC错误及解决方法</title><content type='html'>今天我在做系统的时候碰到两个问题：&lt;br /&gt;1.parsing error :Number or identifier expected Input Line:"ON_COMMAND(ID_QMENU_ITEMS+1,OnMenu)"；&lt;br /&gt;2.在点击对话框Button时，出现“cannot add new member”的错误提示。&lt;br /&gt;这里我给出这两个问题的解决方法：&lt;br /&gt;针对问题1：&lt;br /&gt;      我的问题出在对话框的Afx中加了ON_COMMAND(ID_QMENU_ITEMS, OnMenu) ON_COMMAND(ID_QMENU_ITEMS+1, OnMenu) ON_COMMAND(ID_QMENU_ITEMS+2, OnMenu) ON_COMMAND(ID_QMENU_ITEMS+3, OnMenu) ON_COMMAND(ID_QMENU_ITEMS+4, OnMenu) ON_COMMAND(ID_QMENU_ITEMS+5, OnMenu) ON_COMMAND(ID_QMENU_ITEMS+6, OnMenu) ON_COMMAND(ID_QMENU_ITEMS+7, OnMenu) ON_COMMAND(ID_QMENU_ITEMS+8, OnMenu) ON_COMMAND(ID_QMENU_ITEMS+9, OnMenu) ON_COMMAND(ID_QMENU_ITEMS+10, OnMenu) ON_COMMAND(ID_QMENU_ITEMS+11, OnMenu)&lt;br /&gt;这些代码不是系统自己生成的，所以，把以上代码移到Afx之后，问题解决&lt;br /&gt;针对问题2：&lt;br /&gt;问题出在*.clw文件，把该文件删除，在vc中用Ctrl+w重新建立，并Add all，问题解决。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/368715695002753550-490344438047604484?l=supersoftmm3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://supersoftmm3d.blogspot.com/feeds/490344438047604484/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=368715695002753550&amp;postID=490344438047604484' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/490344438047604484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/490344438047604484'/><link rel='alternate' type='text/html' href='http://supersoftmm3d.blogspot.com/2008/09/vc_01.html' title='我遇到的几个VC错误及解决方法'/><author><name>蔡康怡</name><uri>http://www.blogger.com/profile/17714044082004899851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-368715695002753550.post-8196820669992233024</id><published>2008-09-01T06:02:00.001-07:00</published><updated>2008-09-01T06:02:53.141-07:00</updated><title type='text'>多种VC常见的错误说明</title><content type='html'>1、fatal error C1010: unexpected end of file while looking for precompiled header directive。&lt;br /&gt;寻找预编译头文件路径时遇到了不该遇到的文件尾。（一般是没有#include "stdafx.h"）&lt;br /&gt;2、fatal error C1083: Cannot open include file: 'R…….h': No such file or directory&lt;br /&gt;不能打开包含文件“R…….h”：没有这样的文件或目录。&lt;br /&gt;3、error C2011: 'C……': 'class' type redefinition&lt;br /&gt;类“C……”重定义。&lt;br /&gt;4、error C2018: unknown character '0xa3'&lt;br /&gt;不认识的字符'0xa3'。（一般是汉字或中文标点符号）&lt;br /&gt;5、error C2057: expected constant expression&lt;br /&gt;希望是常量表达式。（一般出现在switch语句的case分支中）&lt;br /&gt;6、error C2065: 'IDD_MYDIALOG' : undeclared identifier&lt;br /&gt;“IDD_MYDIALOG”：未声明过的标识符。&lt;br /&gt;7、error C2082: redefinition of formal parameter 'bReset'&lt;br /&gt;函数参数“bReset”在函数体中重定义。&lt;br /&gt;8、error C2143: syntax error: missing ':' before '{'&lt;br /&gt;句法错误：“{”前缺少“；”。&lt;br /&gt;9、error C2146: syntax error : missing ';' before identifier 'dc'&lt;br /&gt;句法错误：在“dc”前丢了“；”。&lt;br /&gt;10、error C2196: case value '69' already used&lt;br /&gt;值69已经用过。（一般出现在switch语句的case分支中）&lt;br /&gt;11、error C2509: 'OnTimer' : member function not declared in 'CHelloView'&lt;br /&gt;成员函数“OnTimer”没有在“CHelloView”中声明。&lt;br /&gt;12、error C2511: 'reset': overloaded member function 'void (int)' not found in 'B'&lt;br /&gt;重载的函数“void reset(int)”在类“B”中找不到。&lt;br /&gt;13、error C2555: 'B::f1': overriding virtual function differs from 'A::f1' only by return type or calling convention&lt;br /&gt;类B对类A中同名函数f1的重载仅根据返回值或调用约定上的区别。&lt;br /&gt;14、error C2660: 'SetTimer' : function does not take 2 parameters&lt;br /&gt;“SetTimer”函数不传递2个参数。&lt;br /&gt;15、warning C4035: 'f……': no return value&lt;br /&gt;“f……”的return语句没有返回值。&lt;br /&gt;16、warning C4553: '= =' : operator has no effect; did you intend '='?&lt;br /&gt;没有效果的运算符“= =”；是否改为“=”？&lt;br /&gt;17、warning C4700: local variable 'bReset' used without having been initialized&lt;br /&gt;局部变量“bReset”没有初始化就使用。&lt;br /&gt;18、error C4716: 'CMyApp::InitInstance' : must return a value&lt;br /&gt;“CMyApp::InitInstance”函数必须返回一个值。&lt;br /&gt;19、LINK : fatal error LNK1168: cannot open Debug/P1.exe for writing&lt;br /&gt;连接错误：不能打开P1.exe文件，以改写内容。（一般是P1.Exe还在运行，未关闭）&lt;br /&gt;20、error LNK2001: unresolved external symbol "public: virtual _ _thiscall C……::~C……(void)"&lt;br /&gt;连接时发现没有实现的外部符号（变量、函数等）。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/368715695002753550-8196820669992233024?l=supersoftmm3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://supersoftmm3d.blogspot.com/feeds/8196820669992233024/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=368715695002753550&amp;postID=8196820669992233024' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/8196820669992233024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/8196820669992233024'/><link rel='alternate' type='text/html' href='http://supersoftmm3d.blogspot.com/2008/09/vc.html' title='多种VC常见的错误说明'/><author><name>蔡康怡</name><uri>http://www.blogger.com/profile/17714044082004899851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-368715695002753550.post-7714214670834991541</id><published>2008-09-01T05:58:00.000-07:00</published><updated>2008-09-01T05:59:00.233-07:00</updated><title type='text'>VC疑难错误：warning C4819:该文件包含不能在当前代码页</title><content type='html'>中文VC8的程序员可能会常常看见这个warning:warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失.这个警告没有什么坏影响，但会影响心情：） 所以还是要治理一下：哪个文件出现这个警告错误，打开它， 用VS2005的查找替换功能，打开允许正则表达式选项，选择当前窗口，查找替换 \n 为 \n ,  然后，这个世界就清净了。原因： 查找的 \n 是跨平台的回车，替换的 \n 却是当前代码页的回车了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/368715695002753550-7714214670834991541?l=supersoftmm3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://supersoftmm3d.blogspot.com/feeds/7714214670834991541/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=368715695002753550&amp;postID=7714214670834991541' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/7714214670834991541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/7714214670834991541'/><link rel='alternate' type='text/html' href='http://supersoftmm3d.blogspot.com/2008/09/vcwarning-c4819.html' title='VC疑难错误：warning C4819:该文件包含不能在当前代码页'/><author><name>蔡康怡</name><uri>http://www.blogger.com/profile/17714044082004899851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-368715695002753550.post-6855701519821620448</id><published>2008-08-31T22:18:00.000-07:00</published><updated>2008-08-31T22:19:31.992-07:00</updated><title type='text'>《华为真相》作者程东升再出新作 揭秘“百度奇迹”</title><content type='html'>Donews 8月29日消息 记者获悉，《华为真相》作者、著名财经作家程东升正在酝酿另一重头大作。继深度梳理和披露了中国世界级企业华为的发展历程之后，此番程东升将注意力放在了同样打着中国烙印的世界级公司——百度的身上。&lt;br /&gt;　　“众里寻他千百度”，在海归传奇人物李彦宏的带领下，有着地道中国情结的百度，只用短短数年的时间，便从一个默默站在门户网站身后的技术提供者，成长为坐拥两亿多用户、完胜搜索引擎巨擘Google、连续十四季度业绩同比增长超过三位数的全球最大中文搜索引擎。而其2005年在纳斯达克挂牌时创下的海外IPO涨幅最高的辉煌纪录，更是迄今无人打破。&lt;br /&gt;　　尽管已经成为中国在世界上最具代表性的一张名片，以低调、冷静著称的百度和其领军人李彦宏的身上却一直笼罩着一层神秘的面纱。记者获悉，经过数年来对百度的跟踪和深度采访，以独有的财经新闻敏锐性和对商业时代脉搏的准确把握而著称的知名作家程东升，将于年底正式推出一部以百度发展史为主线的新作，以期通过大量鲜为人知的故事的描述和披露，向业界揭秘出百度是如何创造出举世瞩目的新财富神话、并快速称雄中国、走向世界的。&lt;br /&gt;　　据介绍，程东升的这部新书已被纳入到由北京大学企业管理案例研究中心、中信出版社、蓝狮子财经出版中心联合打造的“中国百家标杆企业”学术研究工程中。该工程旨在把中国最有价值和特色的优秀企业作为研究对象，生动而全面地描述中国企业成长史，发现并纪录中国企业家的思考、经验与教训，最终为中国管理思想和企业经营思想的诞生提供研究素材和教学题材，并将中国优秀企业的成长经验传播到海内外。&lt;br /&gt;　　从《华为真相》到如今的《任正非管理日志》、《华为经营管理智慧》，知名财经媒体《21世纪经济报道》记者程东升已经出版五六部财经图书作品，在业界有着较为广泛的影响力。其与刘丽丽合著的《华为真相》更是名列《中国企业家》杂志评选的“2004年度最受中国企业家欢迎的十本商业书”之首，在业内掀起了一股“华为热”。（吴客）&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/368715695002753550-6855701519821620448?l=supersoftmm3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://supersoftmm3d.blogspot.com/feeds/6855701519821620448/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=368715695002753550&amp;postID=6855701519821620448' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/6855701519821620448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/6855701519821620448'/><link rel='alternate' type='text/html' href='http://supersoftmm3d.blogspot.com/2008/08/blog-post_1918.html' title='《华为真相》作者程东升再出新作 揭秘“百度奇迹”'/><author><name>蔡康怡</name><uri>http://www.blogger.com/profile/17714044082004899851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-368715695002753550.post-3207129732729481527</id><published>2008-08-31T04:55:00.001-07:00</published><updated>2008-08-31T04:55:28.374-07:00</updated><title type='text'>哄堂大笑</title><content type='html'>上高中语文老师讲诗词，讲到：“停车坐爱枫林暖”，老师说，“这个坐爱啊”，全体木然，后哄堂大笑… 　　 　　2.男同学站在我左边，女同学站在我右边，其他人原地不动...结果就他没动。 　　3. 小学里每次要考试的时候，班主任总喜欢说：“真替你们着急啊，我真是皇帝不急急太监!”明明是个老太太，怎么喜欢说自己是太监呢？ 　　4.有一天外面下大雨，老师满脸雨水的走进教室，在讲桌前不知道找着什么东西，找了一会就问前排的同学:“我擦纸的脸呢?” 　　5.线段a是线段b的一半，那线段b是线段a的多少呢？(全班皆静，候高论，半晌后)线段b就是线段a的两半。（晕） 　　6.初中，某数学老师讲方程式变换，在讲台上袖子一挽大声喝道：同学们注意！我要变形了！…… 　　7.大学“军事理论”在一大教室上，所以老师得别一个小麦克风。一回上到一半，老师停了下来说，“我马上回来”。然后就听到一阵脚步声，一下拉门声，一声“呲~~”，然后就是一阵水柱溅地声，然后又是一声“呲~~”，一下拉门声，一阵脚步声。当他回到教室，开口说“我们继续”的时候，教室里一百多号人终于忍不住都笑了起来。大笑、捧腹的那种。 　　8.一同学在下面闹，我们老师说：“你给我站到黑板上面去！！” 高难度啊。 　　9.我初中老师讲题目喜欢用投身其中……“我的底面半径是20CM，我的高是50CM，那么我……”下面有人说“是饭桶……”全班爆笑…… 　　10.老师说某某真聪明，七窍通了六窍，那人正得意时补上一句，一窍不通~！ 　　11.初中英语老师是个秃子，一天上课，他问一个同学：“what day is today?’（我的头是秃头？）同学想了一下，回答：“Yes.” 　　12.高三数学摸底一男生问：老师，画图没有铅笔，是借一支还是用钢笔？老师（老年妇女）答：随你的大小便吧。 　　13.:高中的代数老师：“说话不许出声音。” 　　14. 语文老师 讲“停车...（停车坐爱枫林晚一句）大家知道诗人停车干什么啊？” 　　15.高中一化学老师兼教导主任做题时故意做错，然后让某同学找出其中的错误。该同学艰难的答出之后，老师赞许而很严肃地说：“很好，你看出了老师的破腚（绽）。”众皆木然，下课后，老师刚走出去，全班哄堂大笑。 　　16.某日，我们高中数学老师跟我们讲函数周期表时，讲到“周期”二字时激动地走下讲台，对着全班同学说：“你们还不了解周期啊，真的是猪都比你们聪明些。”然后他指着第一排的一个女生说：“你知道什么是周期吗？你跟他们解释一下。”全班均晕倒。 　　17.我们初中时候规定升国旗时候要穿校服，结果总有一些人没有穿校服或者是单只穿裤子或者是衣服。然后每次升旗之前校长都拿着一个扩音喇叭在那里说：“有的同学不穿衣服，有的同学不穿裤子，有的就干脆衣服裤子都不穿” 　　18. 语文老师教赤壁的课文，说起曹兵在华容道互相践踏，感慨道：人流是可怕的…… 　　19.某天上数学偶看到偶们数学老师牙上有片绿叶子（老师中午估计是吃韭菜馅的饺子了）过了一会发现叶子没了………下课的时候发现在我们班某女生的脖子上……&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/368715695002753550-3207129732729481527?l=supersoftmm3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://supersoftmm3d.blogspot.com/feeds/3207129732729481527/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=368715695002753550&amp;postID=3207129732729481527' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/3207129732729481527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/3207129732729481527'/><link rel='alternate' type='text/html' href='http://supersoftmm3d.blogspot.com/2008/08/blog-post_270.html' title='哄堂大笑'/><author><name>蔡康怡</name><uri>http://www.blogger.com/profile/17714044082004899851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-368715695002753550.post-1046876531607460219</id><published>2008-08-31T04:31:00.000-07:00</published><updated>2008-08-31T04:32:13.766-07:00</updated><title type='text'>美国生活大总结1</title><content type='html'>美国的假期马上就要结束，月初回国。最直接的感觉是，一年过得差不多了。这里的博客有点荒废，应该是不可避免的疲劳期。&lt;br /&gt;   和去年的纽约之行相比，今年更休闲一些，没有上正经的课，没有考试，没有来自五湖四海的外国同学，只在家里接受家教的训导。每每就和我老师闲聊起来，或者一同逛街、看电影英文去了。看电影的时候，常常忘了是在看没有字幕的英文片，也不知道是在发呆还是真的看懂了。来美国近两个月，觉得脑子有点退化，公司同事发的各种工作信件和报表的感觉，就如同看英文电影一样，看着看着，时不常的思绪就飞了出去，飞到了哪里，自己也不知情。&lt;br /&gt;   加州的夏天是如一日的阳光灿烂。楼下的游泳池，不停有人在开泳池烧烤party，而我经常在二楼的小栏杆上看着他们的笑脸和烤肉垂涎三尺，那些嬉水的小宝贝们，在爸爸妈妈的带领下玩儿的正酣，游泳池的上面有好多反射着斑斓阳光的气泡。&lt;br /&gt;   客厅棕色的沙发，是我的根据地。奥运新闻、台湾政治访谈节目、圣丹斯的电影频道、用来学英语的美国电视连续剧、和同事们有一搭没一搭的沟通、和老同学新朋友动辄就长达一天的闲聊，都是在这里进行的。要不是昨天有朋友的老婆来这里做客，客厅已经无处落脚了，想起了上大学的时候被同学嫌弃的我的铺位。我可怜的同屋们。&lt;br /&gt;   两个月还是挺快的，尽管实际上我已经归心似箭了，家里的小猫咪好虽好，没了我是绝绝不行的。走了之后，一定会想念pasadena这里典型的徐氏垃圾站：满桌的杂志，学英语的卡片，各种充电器、遥控器，矿泉水，还有每日带给我甜美味道的桔子加草莓的香薰烛台。满地的鞋子，各种人字拖，买了几乎从不穿的高跟鞋，只在朋友来串门的时候被夸奖一下。习惯了赤着到处走的大脚不丫子，绝对有劳动人民的气质，那可真不是一朝一夕培养出来的——这又是扯到哪儿去了……&lt;br /&gt;   被LA的警察发了两次罚单，一次是我懵着出了门——被一点小事情困扰了一下下，以为自己能闯过那个不停闪烁的黄灯，结果就在过线的那一刹那，灯红了起来，紧接着就是电影里熟悉的声画，一辆警车在我车后以迅雷不及掩耳之势狂想了起来，忽然觉得自己像一个逃犯，满脑子都是你有权保持沉默什么的话，自动的就靠到了路边接受罚单。从此开车及其小心，见到黄灯就停车，看来高额罚款和警车轰鸣的形式感还是挺管用的。足以警醒不规矩或者走神的司机。&lt;br /&gt;   还有一次是在朋友家的大号斯门口，每次去停都没事儿，偏偏赶上专门不能停的星期三下午，警察阿姨平易近人的仔细开罚单，我用我的傻瓜英语费力的为自己辩解了一下，显然无效，她看似无奈的耸肩。&lt;br /&gt;   我们是准备开长途到旧金山和北京来的朋友汇合看音乐节，有Rediohead的演出。胸大无脑为此在大洋彼岸嫉恨了半天，说音乐盲居然能看到这样的演出。我说没有办法，机会总是给那些需要被教育的人……其实我说的是，机会总是给那些不需要机会的人——但是这话太气人了，我听了都被气到了。&lt;br /&gt;    …… 作者：徐静蕾&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/368715695002753550-1046876531607460219?l=supersoftmm3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://supersoftmm3d.blogspot.com/feeds/1046876531607460219/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=368715695002753550&amp;postID=1046876531607460219' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/1046876531607460219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/1046876531607460219'/><link rel='alternate' type='text/html' href='http://supersoftmm3d.blogspot.com/2008/08/1.html' title='美国生活大总结1'/><author><name>蔡康怡</name><uri>http://www.blogger.com/profile/17714044082004899851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-368715695002753550.post-5217791339881824301</id><published>2008-08-31T03:42:00.001-07:00</published><updated>2008-08-31T03:42:50.038-07:00</updated><title type='text'>100元的C++软件开发培训班</title><content type='html'>C++软件开发培训（2008-6-16）&lt;br /&gt;&lt;br /&gt;1、培养目标&lt;br /&gt;l         程序设计入门，懂得怎么使用C++编写简单程序。&lt;br /&gt;l         掌握程序设计方法，领会面向过程、面向对象和模板的程序设计。&lt;br /&gt;l         熟练地使用C++解决问题。&lt;br /&gt;l         每个人看懂1000个例子源码。&lt;br /&gt;2、提供的服务&lt;br /&gt;l       提供180课学习资料。&lt;br /&gt;l       提供EMail和QQ回答学员所有问题。&lt;br /&gt;l       提供1000个例子源码，并解答所有相关的提问。&lt;br /&gt;3、培训时间与收费&lt;br /&gt;每位学员半年培训费用为100元，定期更新讲义，及时回答所有问题。&lt;br /&gt;4、招收条件&lt;br /&gt;l       拥有QQ号码。&lt;br /&gt;l       拥有EMail。&lt;br /&gt;&lt;br /&gt;联系方式：&lt;br /&gt;加入QQ群号为：13462614&lt;br /&gt;BLOG：&lt;a href="http://blog.csdn.net/caimouse"&gt;http://blog.csdn.net/caimouse&lt;/a&gt;&lt;br /&gt;EMail: &lt;a href="mailto:caimouse@vip.qq.com"&gt;caimouse@vip.qq.com&lt;/a&gt;&lt;br /&gt;以加入群号为主，加入群号的前10名免费培训，加满100名为限。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/368715695002753550-5217791339881824301?l=supersoftmm3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://supersoftmm3d.blogspot.com/feeds/5217791339881824301/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=368715695002753550&amp;postID=5217791339881824301' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/5217791339881824301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/5217791339881824301'/><link rel='alternate' type='text/html' href='http://supersoftmm3d.blogspot.com/2008/08/100c.html' title='100元的C++软件开发培训班'/><author><name>蔡康怡</name><uri>http://www.blogger.com/profile/17714044082004899851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-368715695002753550.post-163520499826924997</id><published>2008-08-31T03:38:00.001-07:00</published><updated>2008-08-31T03:38:56.173-07:00</updated><title type='text'>五笔和拼音输入法开发</title><content type='html'>我的五笔介绍&lt;br /&gt;我的五笔由蔡军生开发,不但可以输入五笔,如果五笔打不开来时,可以输入拼音.&lt;br /&gt;2008-08-30 发布第一个版本.&lt;br /&gt;如果有什么建议或才问题请通过QQ: 9073204 ,&lt;br /&gt;或者向EMAIL:  &lt;a href="mailto:9073204@qq.com"&gt;9073204@qq.com&lt;/a&gt; 发EMAIL.&lt;br /&gt;或者通过&lt;a href="http://blog.csdn.net/caimouse"&gt;http://blog.csdn.net/caimouse&lt;/a&gt;来给我留言.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mail.qq.com/cgi-bin/ftnExs_download?k=26303730f05538365742bd3014621b05540405545254521b555605001c565204011d0e040553190657040e0307515005055107302362794f346575790352040e530804001f185d4663&amp;amp;t=exs_ftn_download&amp;amp;code=c0701b46"&gt;http://mail.qq.com/cgi-bin/ftnExs_download?k=26303730f05538365742bd3014621b05540405545254521b555605001c565204011d0e040553190657040e0307515005055107302362794f346575790352040e530804001f185d4663&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/368715695002753550-163520499826924997?l=supersoftmm3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://supersoftmm3d.blogspot.com/feeds/163520499826924997/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=368715695002753550&amp;postID=163520499826924997' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/163520499826924997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/163520499826924997'/><link rel='alternate' type='text/html' href='http://supersoftmm3d.blogspot.com/2008/08/blog-post_31.html' title='五笔和拼音输入法开发'/><author><name>蔡康怡</name><uri>http://www.blogger.com/profile/17714044082004899851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-368715695002753550.post-2050679104409332572</id><published>2008-08-31T03:22:00.000-07:00</published><updated>2008-08-31T03:23:02.289-07:00</updated><title type='text'>发布了</title><content type='html'>这是第一篇，测试一下。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/368715695002753550-2050679104409332572?l=supersoftmm3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://supersoftmm3d.blogspot.com/feeds/2050679104409332572/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=368715695002753550&amp;postID=2050679104409332572' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/2050679104409332572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/368715695002753550/posts/default/2050679104409332572'/><link rel='alternate' type='text/html' href='http://supersoftmm3d.blogspot.com/2008/08/blog-post.html' title='发布了'/><author><name>蔡康怡</name><uri>http://www.blogger.com/profile/17714044082004899851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
