﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>博客园-YellowWee's Scripts</title><link>http://www.cnblogs.com/YellowWee/</link><description>妳的世界能夠從此不同...而我的世界... 亦因妳而改變...</description><language>zh-cn</language><lastBuildDate>Wed, 03 Dec 2008 04:36:59 GMT</lastBuildDate><pubDate>Wed, 03 Dec 2008 04:36:59 GMT</pubDate><ttl>60</ttl><item><title>Founders at Work: Stories of Startups' Early Days 创业初期的故事</title><link>http://www.cnblogs.com/YellowWee/archive/2007/11/03/948156.html</link><dc:creator>YellowWee(端木柒)</dc:creator><author>YellowWee(端木柒)</author><pubDate>Sat, 03 Nov 2007 08:33:00 GMT</pubDate><guid>http://www.cnblogs.com/YellowWee/archive/2007/11/03/948156.html</guid><wfw:comment>http://www.cnblogs.com/YellowWee/comments/948156.html</wfw:comment><comments>http://www.cnblogs.com/YellowWee/archive/2007/11/03/948156.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/YellowWee/comments/commentRss/948156.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/YellowWee/services/trackbacks/948156.html</trackback:ping><description><![CDATA[<img height="240" alt="" src="http://www.yellowwee.com.cn/image.axd?picture=FounderAtWork_.jpg" width="240" align="right" border="0" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a title="foundersatwork" href="http://www.foundersatwork.com/" target="_blank">Founders at Work: Stories of Startups' Early Days</a> 是许多著名技术公司创建者的访谈录,记录着他们创业早期发生的种种。当这些技术还只是朋友们的一些想法时，它们是什么样的？像Steve Wozniak (Apple), Caterina Fake (Flickr), Mitch Kapor (Lotus), Max Levchin (PayPal), and Sabeer Bhatia (Hotmail) 这这样的创业者亲自告诉你他们学习创建一个公司是多么的有趣，多么的令人吃惊。
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 他们是从哪里得到后来使他们变得富有的注意？他们怎么说服投资者给他们投资？当他们进行不下去了，他们又是怎么死里逃生的？ </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这本书里除了基本的技术之外,很有很多商业知识,始终创业和商业是分不开的,并不是有好的技术就能把它变成热销的商品。记得大学时李开复教授来<a title="西北工业大学" href="http://www.nwpu.edu.cn/" target="_blank">我们学校</a>演讲，拿会儿大概2000年，其中他介绍了它们亚洲研究院的一个研究项目，一款&#8220;中文输入法&#8221;。这款输入法到如今来看也没有哪个输入法功能能超过它的，让我印象最深的是功能是自动更正功能，比如你输入汉语拼音shanxi，山西和陕西都是这个拼音，输入shanxi后显示的山西，当你输入西安后，前面的山西自动变成陕西了（刚是了一下，好像微软拼音输入法2007也能实现）；还有比如你在输入英文，遇到比如公司的英文记不得怎么写了，你只用输入gongsi，就会自动生成company，更牛的是，它能根据你英文的上下文选择不同的英文。每次敲入gongsi，它能根据上下文生成company，corporation，corp. ，Co. 和firm。这款输入至今还没有面世，可见一个技术转化为商品还需要很长的过程。 </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;推荐，这本书可以给我们这些搞技术开拓视野，学习一些商业知识，商业技能，始终技术能否成功得要有市场才行。这本书还没有中文，我会利用时间慢慢把这一个个的采访故事翻译过来，请关注<font face="Courier New"><a href="http://www.yellowwee.com.cn/category/FounderAtWork.aspx"><font face="Courier New">YellowWee's Script</font></a></font>。 <font face="Courier New"><a href="http://www.yellowwee.com.cn/category/FounderAtWork.aspx"><font face="Courier New">http://www.yellowwee.com.cn/category/FounderAtWork.aspx</font></a></font></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 32个采访包括： </p>
<blockquote>
<blockquote>
<blockquote>
<blockquote>
<p>David Heinemeier Hansson<br />
Partner, 37signals and creator of <font color="#0000ff">Ruby on Rails</font> </p>
<p>Charles Geschke <br />
Founder of <font color="#0000ff">Adobe</font> </p>
<p>Ron Gruner<br />
Founder of <font color="#0000ff">Alliant Computer</font> and<font color="#0000ff"> Shareholder.com </font></p>
<p>Steve Wozniak <br />
Founder of <font color="#0000ff">Apple</font> </p>
<p>Philip Greenspun<br />
Founder of <font color="#0000ff">ArsDigita</font> </p>
<p>Evan Williams <br />
Founder of <font color="#0000ff">Blogger.com</font> and <font color="#0000ff">Odeo</font> </p>
<p>Craig Newmark <br />
Founder of <font color="#0000ff">Craigslist</font> </p>
<p>Joshua Schachter <br />
Founder of <font color="#0000ff">Del.icio.us</font> </p>
<p>Joe Kraus <br />
Founder of <font color="#0000ff">Excite and JotSpot</font> </p>
<p>Blake Ross <br />
Creator of <font color="#0000ff">Firefox</font> </p>
<p>Caterina Fake <br />
Founder of <font color="#0000ff">Flickr</font> </p>
<p>Joel Spolsky <br />
Founder of <font color="#0000ff">Fog Creek Software</font> </p>
<p>Paul Buchheit <br />
Creator of <font color="#0000ff">Gmail</font> </p>
<p>Ray Ozzie <br />
Founder of <font color="#0000ff">Groove Networks and Iris Associates</font> </p>
<p>Sabeer Bhatia <br />
Founder of <font color="#0000ff">Hotmail</font> </p>
<p>James Hong <br />
Founder of <font color="#0000ff">HotorNot</font> </p>
<p>Mitch Kapor <br />
Founder of <font color="#0000ff">Lotus</font> </p>
<p>Bob Davis <br />
Founder of <font color="#0000ff">Lycos</font> </p>
<p>Arthur van Hoff <br />
Founder of <font color="#0000ff">Marimba</font> </p>
<p>Mark Fletcher <br />
Founder of <font color="#0000ff">ONElist and Bloglines</font> </p>
<p>Ann Winblad <br />
Founder of <font color="#0000ff">Open Systems and Hummer Winblad</font> </p>
<p>Max Levchin <br />
Founder of <font color="#0000ff">PayPal</font> </p>
<p>Mike Lazaridis <br />
Founder of <font color="#0000ff">Research in Motion</font> </p>
<p>Mena Trott <br />
Founder of <font color="#0000ff">Six Apart</font> </p>
<p>Dan Bricklin <br />
Founder of <font color="#0000ff">Software Arts and creator of VisiCalc</font> </p>
<p>James Currier <br />
Founder of <font color="#0000ff">Tickle</font> </p>
<p>Mike Ramsay <br />
Founder of <font color="#0000ff">TiVo</font> </p>
<p>Steve Kaufer <br />
Founder of <font color="#0000ff">TripAdvisor</font> </p>
<p>Paul Graham <br />
Founder of <font color="#0000ff">Viaweb and Y Combinator</font> </p>
<p>Brewster Kahle <br />
Founder of <font color="#0000ff">WAIS, Internet Archive and Alexa Internet</font> </p>
<p>Steve Perlman <br />
Founder of <font color="#0000ff">WebTV</font> </p>
<p>Tim Brady <br />
First employee at <font color="#0000ff">Yahoo</font>! </p>
</blockquote></blockquote></blockquote></blockquote>
<img src ="http://www.cnblogs.com/YellowWee/aggbug/948156.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43772/" target="_blank">[新闻]Digg创始人：不再考虑出售公司 将适机并购</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>生成自己站点的SiteMap</title><link>http://www.cnblogs.com/YellowWee/archive/2007/10/31/944488.html</link><dc:creator>YellowWee(端木柒)</dc:creator><author>YellowWee(端木柒)</author><pubDate>Wed, 31 Oct 2007 08:16:00 GMT</pubDate><guid>http://www.cnblogs.com/YellowWee/archive/2007/10/31/944488.html</guid><wfw:comment>http://www.cnblogs.com/YellowWee/comments/944488.html</wfw:comment><comments>http://www.cnblogs.com/YellowWee/archive/2007/10/31/944488.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/YellowWee/comments/commentRss/944488.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/YellowWee/services/trackbacks/944488.html</trackback:ping><description><![CDATA[<a href="http://www.yellowwee.com.cn/post/2007/10/%e7%94%9f%e6%88%90%e8%87%aa%e5%b7%b1%e7%ab%99%e7%82%b9%e7%9a%84SiteMap.aspx">http://www.yellowwee.com.cn/post/2007/10/%e7%94%9f%e6%88%90%e8%87%aa%e5%b7%b1%e7%ab%99%e7%82%b9%e7%9a%84SiteMap.aspx<br />
</a><br />
<div>
<p>SEO技术肯定很多人都听说过，SEO(Search Engine Optimization)直译成中文是&#8220;搜索引擎优化&#8221;。就是研究如何提高自己网站在搜索引擎中的排名。其中有一项就是在自己的站点加入SiteMap，让搜索引擎更好的理解你的网站，更容易的索引你的页面。 </p>
&nbsp;
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SiteMap允许你&#8220;告诉&#8221;搜索引擎你网站页面的URLs。SiteMap其实就是一个XML文档，其中列出了你站点页面的URLs。下面就是一个SiteMap的例子： </p>
<p><span style="background: #d9d9d9"><font size="+0"><font face="Calibri"><font size="2">&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />
</font></font></font></span><span style="background: #d9d9d9"><font size="+0"><font face="Calibri"><font size="2">&lt;urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"&gt;</font></font></font><span style="background: #d9d9d9"><font face="Calibri" size="2">&nbsp;</font></span><span style="background: #d9d9d9"><font size="+0"><font face="Calibri"><font size="2">&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; &lt;url&gt;</font></font></font></span><span style="background: #d9d9d9"><font size="+0"><font face="Calibri"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;loc&gt;http://www.example.com/&lt;/loc&gt;</font></font></font></span><span style="background: #d9d9d9"><font size="+0"><font face="Calibri"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;lastmod&gt;2005-01-01&lt;/lastmod&gt;</font></font></font></span><span style="background: #d9d9d9"><font size="+0"><font face="Calibri"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;changefreq&gt;monthly&lt;/changefreq&gt;</font></font></font></span><span style="background: #d9d9d9"><font size="+0"><font face="Calibri"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;priority&gt;0.8&lt;/priority&gt;<br />
</font></font></font></span><span style="background: #d9d9d9"><font size="+0"><font face="Calibri"><font size="2">&nbsp;&nbsp; &lt;/url&gt;</font></font></font></span><span style="background: #d9d9d9"><font size="+0"><font face="Calibri"><font size="2">&nbsp;<br />
&nbsp;&nbsp; &lt;url&gt;</font></font></font></span><span style="background: #d9d9d9"><font size="+0"><font face="Calibri"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;loc&gt;http://www.example.com/catalog?item=12&amp;amp;desc=vacation_hawaii&lt;/loc&gt;</font></font></font></span><span style="background: #d9d9d9"><font size="+0"><font face="Calibri"><font size="2">&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;changefreq&gt;weekly&lt;/changefreq&gt;</font></font></font></span><span style="background: #d9d9d9"><font size="+0"><font face="Calibri"><font size="2">&nbsp;&nbsp;<br />
&nbsp;&nbsp; &nbsp;&lt;/url&gt;</font></font></font></span><span style="background: #d9d9d9"><font size="+0"><font face="Calibri"><font size="2">&nbsp;&nbsp;<br />
</font></font></font></span><span style="background: #d9d9d9"><font size="+0"><font face="Calibri"><font size="2">&nbsp;</font></font></font></span><span style="background: #d9d9d9"><font size="+0"><font face="Calibri"><font size="2">&lt;/urlset&gt;</font></font></font></span></span> </p>
<p>是不是看见这么长一串的XML就放晕啊？&lt;loc&gt;&lt;changefreq&gt;这些都是什么意思？ </p>
<p>还好Google为我们提供了一个SiteMap生成器(SiteMap Generator)，你可以到<a href="http://www.sourceforge.net/project/showfiles.php?group_id=137793&amp;package_id=153422">http://www.sourceforge.net/project/showfiles.php?group_id=137793&amp;package_id=153422</a> 这里下载。 </p>
<p>如果你不喜欢Google，这里还有第三方提供的SiteMap 生成器。<a href="http://code.google.com/sm_thirdparty.html">http://code.google.com/sm_thirdparty.html </a></p>
&nbsp;
<p>如果你有兴趣理解研究SiteMap协议，可以到<a href="https://www.google.com/webmasters/tools/docs/en/protocol.html">https://www.google.com/webmasters/tools/docs/en/protocol.html</a> 了解。 </p>
&nbsp;
<p>下面来说一下如果要使用Google 的SiteMap生成器，需要什么前期准备： </p>
&nbsp;
<p>1.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 首先你必须有在Web服务器上运行脚本的权限。（如果你是使用虚拟主机，那么可以在本地的测试环境下运行生成SiteMap，并替换其中的连接为你的虚拟主机地址） </p>
<p>2.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 由于Google 的生成器是用Python写成，要运行它你必须要装有Python 2.2或后续版本。（从这里下载<a href="http://www.python.org/download">http://www.python.org/download</a>） </p>
<p>3.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当然生成SiteMap后你要能把它放到你的服务器或虚拟主机上。 </p>
&nbsp;
<p>如何生成SiteMap： </p>
&nbsp;
<p>1.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 下载Google SiteMap生成器：<a href="http://www.sourceforge.net/project/showfiles.php?group_id=137793&amp;package_id=153422">http://www.sourceforge.net/project/showfiles.php?group_id=137793&amp;package_id=153422</a> </p>
<p>2.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 创建配置文件 </p>
&nbsp;
<p>修改example_config.xml文件（包含在下载的压缩包中）中找到 </p>
&lt;site base_url="http://www.example.com/" store_into="/var/www/docroot/sitemap.xml.gz"verbose="1"&gt;&nbsp;
<p>修改base_url为你自己的Url </p>
<p>修改store_into为你存放SiteMap的地址 </p>
&nbsp;
<p style="margin: 0cm 0cm 0pt 42pt">修改后我的是： </p>
<p>&lt;site base_url="http://www.yellowwee.com.com.cn/" store_into="sitemap.xml"verbose="1"&gt;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 根据example_config.xml的说明设置配置文件的剩余部分。 </p>
<p>3.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 上传脚本到服务器：需要上传config.xml、sitemap_gen.py到你的web服务器 </p>
<p>4.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 运行生成脚本sitemap_gen.py生成SiteMap </p>
<em><font size="3">&nbsp;python sitemap_gen.py --config=&lt;path/config.xml&gt;</font></em>&nbsp;&nbsp;
<p>把生成的SiteMap提交给Google，Google就会根据你的SiteMap索引你的站点，这样你的站点出现在Google搜索结果中的几率就会大大增加喽。（因为很多网站是页面动态生成，虽然Google会索引动态页面，但如果索引时遇到错误，就会跳过索引。提交SitaMap后Goolge就知道如何索引你的站点，减少因出错没有索引到的几率） </p>
&nbsp;
<p>提交SiteMap到Google，请到&#8220;Google 网站管理员工具&#8221;。&#8220;Google 网站管理员工具&#8221;里还有Google为站长准备的一些工具，有兴趣的可以自己看看。 </p>
</div>
<img src ="http://www.cnblogs.com/YellowWee/aggbug/944488.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43771/" target="_blank">[新闻]福布斯:中国经济增长减速 网游行业从中获益</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>开通新博客，欢迎大家访问：http://www.yellowwee.com.cn</title><link>http://www.cnblogs.com/YellowWee/archive/2007/10/31/944484.html</link><dc:creator>YellowWee(端木柒)</dc:creator><author>YellowWee(端木柒)</author><pubDate>Wed, 31 Oct 2007 08:14:00 GMT</pubDate><guid>http://www.cnblogs.com/YellowWee/archive/2007/10/31/944484.html</guid><wfw:comment>http://www.cnblogs.com/YellowWee/comments/944484.html</wfw:comment><comments>http://www.cnblogs.com/YellowWee/archive/2007/10/31/944484.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/YellowWee/comments/commentRss/944484.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/YellowWee/services/trackbacks/944484.html</trackback:ping><description><![CDATA[<font face="Courier New">请大家到我的新博客看看～<a href="http://www.yellowwee.com.cn"><br />
<br />
http://www.yellowwee.com.cn</a></font>
<img src ="http://www.cnblogs.com/YellowWee/aggbug/944484.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43771/" target="_blank">[新闻]福布斯:中国经济增长减速 网游行业从中获益</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>[转载]Fix Your Site With the Right DOCTYPE</title><link>http://www.cnblogs.com/YellowWee/archive/2007/09/24/904239.html</link><dc:creator>YellowWee(端木柒)</dc:creator><author>YellowWee(端木柒)</author><pubDate>Mon, 24 Sep 2007 07:18:00 GMT</pubDate><guid>http://www.cnblogs.com/YellowWee/archive/2007/09/24/904239.html</guid><wfw:comment>http://www.cnblogs.com/YellowWee/comments/904239.html</wfw:comment><comments>http://www.cnblogs.com/YellowWee/archive/2007/09/24/904239.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/YellowWee/comments/commentRss/904239.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/YellowWee/services/trackbacks/904239.html</trackback:ping><description><![CDATA[<h1 class="title"><a href="http://www.alistapart.com/articles/doctype">Fix Your Site With the Right DOCTYPE!</a></h1>
<h3 class="byline">by <a href="http://www.alistapart.com/authors/z/zeldman">Jeffrey Zeldman</a></h3>
<ul id="metastuff">
    <li>Published in: <a title="CSS" href="http://www.alistapart.com/topics/code/css/">CSS</a>, <a title="HTML and XHTML" href="http://www.alistapart.com/topics/code/htmlxhtml/">HTML and XHTML</a>, <a title="Layout" href="http://www.alistapart.com/topics/design/layout/">Layout</a>, <a title="XML" href="http://www.alistapart.com/topics/code/xml/">XML</a> <strong>|</strong>
    <li class="discuss">
    <p><a href="http://www.alistapart.com/comments/doctype/">Discuss this article &#187;</a></p>
    </li>
</ul>
<div id="articletext">
<p>You&#8217;ve done all the right stuff, but your site doesn&#8217;t look or work as it should in the latest browsers.</p>
<p>You&#8217;ve written valid XHTML and CSS. You&#8217;ve used the W3C standard Document Object Model (DOM) to manipulate dynamic page elements. Yet, in browsers designed to support these very standards, your site is failing. A faulty DOCTYPE is likely to blame.</p>
<p>This little article will provide you with DOCTYPEs that work, and explain the practical, real&#8211;world effect of these seemingly abstract tags.</p>
<h2>WHY A DOCTYPE?</h2>
<p>Per HTML and XHTML standards, a DOCTYPE (short for &#8220;document type declaration&#8221;) informs the validator which version of (X)HTML you&#8217;re using, and must appear at the very top of every web page. DOCTYPEs are a key component of compliant web pages: your markup and CSS won&#8217;t validate without them.</p>
<p>As mentioned in <a href="http://www.alistapart.com/articles/betterliving/">previous</a> ALA articles (and in <a href="http://www.nypl.org/styleguide/">other</a> interesting <a href="http://developer.netscape.com/evangelism/docs/articles/validate/">places</a>), DOCTYPES are also essential to the proper rendering and functioning of web documents in compliant browsers like Mozilla, IE5/Mac, and IE6/Win.</p>
<p>A recent DOCTYPE that includes a full URI (a complete web address) tells these browsers to render your page in standards&#8211;compliant mode, treating your (X)HTML, CSS, and DOM as you expect them to be treated.</p>
<p>Using an incomplete or outdated DOCTYPE—or no DOCTYPE at all—throws these same browsers into &#8220;Quirks&#8221; mode, where the browser assumes you&#8217;ve written old-fashioned, invalid markup and code per the depressing industry norms of the late 1990s.</p>
<p>In this setting, the browser will attempt to parse your page in backward&#8211;compatible fashion, rendering your CSS as it might have looked in IE4, and reverting to a proprietary, browser&#8211;specific DOM. (IE reverts to the IE DOM; Mozilla and Netscape 6 revert to who knows what.)</p>
<p>Clearly, this is not what you want. But it is often what you&#8217;ll get, due to the preponderance of incorrect or incomplete DOCTYPE information this article hopes to correct.</p>
<p>(Note: The Opera browser does not play by these rules; it always attempts to render pages in standards&#8211;compliant mode. Go, Opera! On the other hand, Opera does not yet offer solid support for the W3C DOM. But they&#8217;re working on it.) {Ed: Since this article was first published, Opera has delivered the DOM-compliant Opera 7 browser.}</p>
<h2>WHERE HAVE ALL THE DOCTYPES GONE?</h2>
<p>Since DOCTYPES are vital to the proper functioning of web standards in browsers, and since W3C is a leading creator of web standards, you might expect W3C&#8217;s <a href="http://w3.org/">website</a> to provide a listing of proper DOCTYPEs, and you might also expect to be able to find this information quickly and easily in a single location. But as of this writing, you can&#8217;t. {Ed. Prompted in part by this article, the W3C now lists standard DOCTYPEs on its site. You will find the listing a few screens into the W3C tutorial, &#8220;<a href="http://www.w3.org/QA/2002/04/Web-Quality">My Web site is standard. And yours?</a>&#8221;}</p>
<p>W3.org is not <a href="http://www.alistapart.com/">A List Apart</a>, <a href="http://webreference.com/">WebReference</a>, or <a href="http://www.webmonkey.com/">Webmonkey</a>. It&#8217;s not intended to help web designers, developers, and content folks get up to speed on the latest technological recommendations and practices. That&#8217;s not its job.</p>
<p>W3C <em>does</em> publish a series of <a href="http://www.w3.org/2002/03/tutorials.html">tutorials</a>, though most web developers are unaware of it. Mainly, though, W3C&#8217;s site houses a collection of proposals, drafts, and Recommendations, written <em>by</em> geeks <em>for</em> geeks. And when I say geeks, I don&#8217;t mean ordinary web professionals like you and me. I mean geeks who make the rest of us look like Grandma on the first day She&#8217;s Got Mail.&#8482;</p>
<p>You can search for DOCTYPEs all day at w3.org without finding one page that lists them all. And when you <em>do</em> hunt down a DOCTYPE (generally in relation to a particular Recommendation or Working Draft), it&#8217;s often one that won&#8217;t work on your site.</p>
<p>Scattered throughout W3C&#8217;s site are DOCTYPEs with missing URIs, and DOCTYPEs with <em>relative</em> URIs that point to documents on W3C&#8217;s own site. Once removed from W3C&#8217;s site and used on your web pages, these URIs point to non&#8211;existent documents, thus fouling up your best efforts and the browser&#8217;s.</p>
<p>For instance, many sites sport this DOCTYPE, copied and pasted directly from w3.org:</p>
<pre>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"DTD/xhtml1-strict.dtd"&gt;
</pre>
<p>If you look at the last part of the DOCTYPE (&#8220;DTD/xhtml1-strict.dtd&#8221;), you&#8217;ll see that it is a relative link to a document on W3C&#8217;s site. Since that document is on W3C&#8217;s site but not yours, the URI is useless to the browser.</p>
<p>The DOCTYPE you&#8217;d actually want to use is:</p>
<pre>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
</pre>
<p>Notice that the latter DOCTYPE includes a complete URI at the end of the tag. Since the tag provides a valid location on the web, the browser knows where to find it, and will render your document in standards&#8211;compliant mode.</p>
<h2>DOCTYPES THAT WORK</h2>
<p>So what DOCTYPEs should we use? Glad you asked. The following complete DOCTYPEs are the ones we need:</p>
<h3>HTML 4.01 Strict, Transitional, Frameset</h3>
<pre>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd"&gt;
&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"&gt;
&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd"&gt;</pre>
<h3>XHTML 1.0 Strict, Transitional, Frameset</h3>
<pre>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"&gt;</pre>
<h3>XHTML 1.1 DTD</h3>
<pre>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"&gt;</pre>
<h2>NEXT STEPS</h2>
<p>How can you help improve support for standards on the web? Besides bookmarking this page (and copying and pasting these DOCTYPEs for your own use), if your web editor inserts DOCTYPEs, you might want to check them out and compare them to the list above.</p>
<p>Many well&#8211;intentioned software makers have cut and pasted incomplete DOCTYPEs from W3C into their software. Result: when you use these programs&#8217; built&#8211;in functionality to insert DOCTYPEs in your pages, the browsers go into Quirks mode, undoing all your hard work.</p>
<p>It&#8217;s worth contacting the folks who make your favorite authoring package, showing them the proper DOCTYPEs, and politely requesting them to address this issue in an incremental upgrade. (In some cases, you may also be able to <a href="http://www.alistapart.com/articles/dreamweaver/">modify your editor</a> yourself.)</p>
<h2>COMING SOON</h2>
<p>We have every reason to believe that W3C&#8217;s site will soon sport a handy listing of accurate, usable DOCTYPES and other essential information in an easy&#8211;to&#8211;find location. In fact, Karl Dubost, Conformance Manager of W3C&#8217;s <a href="http://www.w3.org/QA/">Quality Assurance</a> team, contributed to the information in this little article.</p>
<p>Likewise, when <a href="http://www.webstandards.org/">The Web Standards Project</a> relaunches (real soon), it will also provide this information. {Ed. note: The Web Standards Project relaunched in late 2002.}</p>
<p>But sites are being designed and built every day, and you need this information now—so there it is.</p>
<p>Happy authoring and rendering!</p>
<dl class="trans">
<dt>Translations
<dd><a href="http://www.gdesign.it/pages/howto/articoli/doctype/doctype.php">Italian</a> (gdesign.it)
<dd><a href="http://groovemanifesto.hit.bg/articles/code/doctype/">Bulgarian</a> (Groove Manifesto)
<dd><a href="http://pompage.net/pompe/doctype/">French</a> (Pompage.net)
<dd><a href="http://puredesign.ch/lounge/artikel/doctype.shtml">German</a> (Puredesign.ch)
<dd><a href="http://www.gen7es.net/traducciones/ala/doctype/">Spanish</a> (gen7es.net)
<dd><a href="http://www.webmascon.com/topics/coding/25a.asp">Russian</a> (Webmascon.com)</dd></dl></div>
<div id="learnmore">
<h2>Learn More</h2>
<p>Related Topics: <a title="CSS" href="http://www.alistapart.com/topics/code/css/">CSS</a>, <a title="HTML and XHTML" href="http://www.alistapart.com/topics/code/htmlxhtml/">HTML and XHTML</a>, <a title="Layout" href="http://www.alistapart.com/topics/design/layout/">Layout</a>, <a title="XML" href="http://www.alistapart.com/topics/code/xml/">XML</a><br />
<br />
<br />
转自 http://www.alistapart.com/articles/doctype</p>
</div>
<img src ="http://www.cnblogs.com/YellowWee/aggbug/904239.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43770/" target="_blank">[新闻]苹果正调查MacBook笔记本“黑屏死机”故障</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>Java Top Books</title><link>http://www.cnblogs.com/YellowWee/archive/2007/09/19/898718.html</link><dc:creator>YellowWee(端木柒)</dc:creator><author>YellowWee(端木柒)</author><pubDate>Wed, 19 Sep 2007 08:45:00 GMT</pubDate><guid>http://www.cnblogs.com/YellowWee/archive/2007/09/19/898718.html</guid><wfw:comment>http://www.cnblogs.com/YellowWee/comments/898718.html</wfw:comment><comments>http://www.cnblogs.com/YellowWee/archive/2007/09/19/898718.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/YellowWee/comments/commentRss/898718.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/YellowWee/services/trackbacks/898718.html</trackback:ping><description><![CDATA[<table class="booklist">
    <tbody>
        <tr>
            <td>
            <h2 align="right">.</h2>
            <p align="right">Votes<br />
            27</p>
            <p align="right">Avg Pos<br />
            1.93</p>
            </td>
            <td><a href="http://www.amazon.com/exec/obidos/ASIN/0201310058/javalobby-20"><img src="http://images.amazon.com/images/P/0201310058.01.TTZZZZZZ.jpg"  alt="" /></a></td>
            <td>
            <h3><a href="http://www.amazon.com/exec/obidos/ASIN/0201310058/javalobby-20">Effective Java Programming Language Guide</a> </h3>
            <h4>By Joshua Bloch</h4>
            <p>Addison-Wesley Professional</p>
            <p>Paperback, 252 pages</p>
            <p>List Price: $44.99 - <a href="http://www.amazon.com/exec/obidos/ASIN/0201310058/javalobby-20">Amazon</a>: <a href="http://www.amazon.ca/exec/obidos/ASIN/0201310058/javalobby-20"><img class="flag" alt="CA" src="http://www.javalobby.org/articles/5books/images/flags/flag_canada.png" /></a><a href="http://www.amazon.fr/exec/obidos/ASIN/0201310058/javalobby-20"><img class="flag" alt="FR" src="http://www.javalobby.org/articles/5books/images/flags/flag_france.png" /></a><a href="http://www.amazon.de/exec/obidos/ASIN/0201310058/javalobby-20"><img class="flag" alt="DE" src="http://www.javalobby.org/articles/5books/images/flags/flag_germany.png" /></a><a href="http://www.amazon.co.uk/exec/obidos/ASIN/0201310058/javalobby-20"><img class="flag" alt="UK" src="http://www.javalobby.org/articles/5books/images/flags/flag_great_britain.png" /></a><a href="http://www.amazon.jp/exec/obidos/ASIN/0201310058/javalobby-20"><img class="flag" alt="JP" src="http://www.javalobby.org/articles/5books/images/flags/flag_japan.png" /></a><a href="http://www.amazon.com/exec/obidos/ASIN/0201310058/javalobby-20"><img class="flag" alt="US" src="http://www.javalobby.org/articles/5books/images/flags/flag_usa.png" /></a> </p>
            </td>
        </tr>
        <tr>
            <td>
            <h2 align="right">2.</h2>
            <p align="right">Votes<br />
            17</p>
            <p align="right">Avg Pos<br />
            3.06</p>
            </td>
            <td><a href="http://www.amazon.com/exec/obidos/ASIN/0201633612/javalobby-20"><img src="http://images.amazon.com/images/P/0201633612.01.TTZZZZZZ.jpg"  alt="" /></a></td>
            <td>
            <h3><a href="http://www.amazon.com/exec/obidos/ASIN/0201633612/javalobby-20">Design Patterns: Elements of Reusable Object-Oriented Software</a> </h3>
            <h4>By Erich Gamma; Richard Helm; Ralph Johnson; John Vlissides</h4>
            <p>Addison-Wesley Professional</p>
            <p>Hardcover, 395 pages</p>
            <p>List Price: $54.99 - <a href="http://www.amazon.com/exec/obidos/ASIN/0201633612/javalobby-20">Amazon</a>: <a href="http://www.amazon.ca/exec/obidos/ASIN/0201633612/javalobby-20"><img class="flag" alt="CA" src="http://www.javalobby.org/articles/5books/images/flags/flag_canada.png" /></a><a href="http://www.amazon.fr/exec/obidos/ASIN/0201633612/javalobby-20"><img class="flag" alt="FR" src="http://www.javalobby.org/articles/5books/images/flags/flag_france.png" /></a><a href="http://www.amazon.de/exec/obidos/ASIN/0201633612/javalobby-20"><img class="flag" alt="DE" src="http://www.javalobby.org/articles/5books/images/flags/flag_germany.png" /></a><a href="http://www.amazon.co.uk/exec/obidos/ASIN/0201633612/javalobby-20"><img class="flag" alt="UK" src="http://www.javalobby.org/articles/5books/images/flags/flag_great_britain.png" /></a><a href="http://www.amazon.jp/exec/obidos/ASIN/0201633612/javalobby-20"><img class="flag" alt="JP" src="http://www.javalobby.org/articles/5books/images/flags/flag_japan.png" /></a><a href="http://www.amazon.com/exec/obidos/ASIN/0201633612/javalobby-20"><img class="flag" alt="US" src="http://www.javalobby.org/articles/5books/images/flags/flag_usa.png" /></a> </p>
            </td>
        </tr>
        <tr>
            <td>
            <h2 align="right">3.</h2>
            <p align="right">Votes<br />
            12</p>
            <p align="right">Avg Pos<br />
            3.83</p>
            </td>
            <td><a href="http://www.amazon.com/exec/obidos/ASIN/0201485672/javalobby-20"><img src="http://images.amazon.com/images/P/0201485672.01.TTZZZZZZ.jpg"  alt="" /></a></td>
            <td>
            <h3><a href="http://www.amazon.com/exec/obidos/ASIN/0201485672/javalobby-20">Refactoring: Improving the Design of Existing Code</a> </h3>
            <h4>By Martin Fowler; Kent Beck; John Brant; William Opdyke; Don Roberts</h4>
            <p>Addison-Wesley Professional</p>
            <p>Hardcover, 464 pages</p>
            <p>List Price: $59.99 - <a href="http://www.amazon.com/exec/obidos/ASIN/0201485672/javalobby-20">Amazon</a>: <a href="http://www.amazon.ca/exec/obidos/ASIN/0201485672/javalobby-20"><img class="flag" alt="CA" src="http://www.javalobby.org/articles/5books/images/flags/flag_canada.png" /></a><a href="http://www.amazon.fr/exec/obidos/ASIN/0201485672/javalobby-20"><img class="flag" alt="FR" src="http://www.javalobby.org/articles/5books/images/flags/flag_france.png" /></a><a href="http://www.amazon.de/exec/obidos/ASIN/0201485672/javalobby-20"><img class="flag" alt="DE" src="http://www.javalobby.org/articles/5books/images/flags/flag_germany.png" /></a><a href="http://www.amazon.co.uk/exec/obidos/ASIN/0201485672/javalobby-20"><img class="flag" alt="UK" src="http://www.javalobby.org/articles/5books/images/flags/flag_great_britain.png" /></a><a href="http://www.amazon.jp/exec/obidos/ASIN/0201485672/javalobby-20"><img class="flag" alt="JP" src="http://www.javalobby.org/articles/5books/images/flags/flag_japan.png" /></a><a href="http://www.amazon.com/exec/obidos/ASIN/0201485672/javalobby-20"><img class="flag" alt="US" src="http://www.javalobby.org/articles/5books/images/flags/flag_usa.png" /></a> </p>
            </td>
        </tr>
        <tr>
            <td>
            <h2 align="right">4.</h2>
            <p align="right">Votes<br />
            10</p>
            <p align="right">Avg Pos<br />
            3</p>
            </td>
            <td><a href="http://www.amazon.com/exec/obidos/ASIN/0596007124/javalobby-20"><img src="http://images.amazon.com/images/P/0596007124.01.TTZZZZZZ.jpg"  alt="" /></a></td>
            <td>
            <h3><a href="http://www.amazon.com/exec/obidos/ASIN/0596007124/javalobby-20">Head First Design Patterns</a> </h3>
            <h4>By Elisabeth Freeman; Eric Freeman; Bert Bates; Kathy Sierra</h4>
            <p>O'Reilly Media, Inc.</p>
            <p>Paperback, 676 pages</p>
            <p>List Price: $44.95 - <a href="http://www.amazon.com/exec/obidos/ASIN/0596007124/javalobby-20">Amazon</a>: <a href="http://www.amazon.ca/exec/obidos/ASIN/0596007124/javalobby-20"><img class="flag" alt="CA" src="http://www.javalobby.org/articles/5books/images/flags/flag_canada.png" /></a><a href="http://www.amazon.fr/exec/obidos/ASIN/0596007124/javalobby-20"><img class="flag" alt="FR" src="http://www.javalobby.org/articles/5books/images/flags/flag_france.png" /></a><a href="http://www.amazon.de/exec/obidos/ASIN/0596007124/javalobby-20"><img class="flag" alt="DE" src="http://www.javalobby.org/articles/5books/images/flags/flag_germany.png" /></a><a href="http://www.amazon.co.uk/exec/obidos/ASIN/0596007124/javalobby-20"><img class="flag" alt="UK" src="http://www.javalobby.org/articles/5books/images/flags/flag_great_britain.png" /></a><a href="http://www.amazon.jp/exec/obidos/ASIN/0596007124/javalobby-20"><img class="flag" alt="JP" src="http://www.javalobby.org/articles/5books/images/flags/flag_japan.png" /></a><a href="http://www.amazon.com/exec/obidos/ASIN/0596007124/javalobby-20"><img class="flag" alt="US" src="http://www.javalobby.org/articles/5books/images/flags/flag_usa.png" /></a> </p>
            </td>
        </tr>
        <tr>
            <td>
            <h2 align="right">5.</h2>
            <p align="right">Votes<br />
            10</p>
            <p align="right">Avg Pos<br />
            3.5</p>
            </td>
            <td><a href="http://www.amazon.com/exec/obidos/ASIN/0764543857/javalobby-20"><img src="http://images.amazon.com/images/P/0764543857.01.TTZZZZZZ.jpg"  alt="" /></a></td>
            <td>
            <h3><a href="http://www.amazon.com/exec/obidos/ASIN/0764543857/javalobby-20">Expert One-on-One J2EE Design and Development</a> </h3>
            <h4>By Rod Johnson</h4>
            <p>Wrox</p>
            <p>Paperback, 768 pages</p>
            <p>List Price: $59.99 - <a href="http://www.amazon.com/exec/obidos/ASIN/0764543857/javalobby-20">Amazon</a>: <a href="http://www.amazon.ca/exec/obidos/ASIN/0764543857/javalobby-20"><img class="flag" alt="CA" src="http://www.javalobby.org/articles/5books/images/flags/flag_canada.png" /></a><a href="http://www.amazon.fr/exec/obidos/ASIN/0764543857/javalobby-20"><img class="flag" alt="FR" src="http://www.javalobby.org/articles/5books/images/flags/flag_france.png" /></a><a href="http://www.amazon.de/exec/obidos/ASIN/0764543857/javalobby-20"><img class="flag" alt="DE" src="http://www.javalobby.org/articles/5books/images/flags/flag_germany.png" /></a><a href="http://www.amazon.co.uk/exec/obidos/ASIN/0764543857/javalobby-20"><img class="flag" alt="UK" src="http://www.javalobby.org/articles/5books/images/flags/flag_great_britain.png" /></a><a href="http://www.amazon.jp/exec/obidos/ASIN/0764543857/javalobby-20"><img class="flag" alt="JP" src="http://www.javalobby.org/articles/5books/images/flags/flag_japan.png" /></a><a href="http://www.amazon.com/exec/obidos/ASIN/0764543857/javalobby-20"><img class="flag" alt="US" src="http://www.javalobby.org/articles/5books/images/flags/flag_usa.png" /></a> </p>
            </td>
        </tr>
        <tr>
            <td>
            <h2 align="right">6.</h2>
            <p align="right">Votes<br />
            9</p>
            <p align="right">Avg Pos<br />
            2</p>
            </td>
            <td><a href="http://www.amazon.com/exec/obidos/ASIN/0131872486/javalobby-20"><img src="http://images.amazon.com/images/P/0131872486.01.TTZZZZZZ.jpg"  alt="" /></a></td>
            <td>
            <h3><a href="http://www.amazon.com/exec/obidos/ASIN/0131872486/javalobby-20">Thinking in Java (4th Edition)</a> </h3>
            <h4>By Bruce Eckel</h4>
            <p>Prentice Hall PTR</p>
            <p>Paperback, 1520 pages</p>
            <p>List Price: $59.99 - <a href="http://www.amazon.com/exec/obidos/ASIN/0131872486/javalobby-20">Amazon</a>: <a href="http://www.amazon.ca/exec/obidos/ASIN/0131872486/javalobby-20"><img class="flag" alt="CA" src="http://www.javalobby.org/articles/5books/images/flags/flag_canada.png" /></a><a href="http://www.amazon.fr/exec/obidos/ASIN/0131872486/javalobby-20"><img class="flag" alt="FR" src="http://www.javalobby.org/articles/5books/images/flags/flag_france.png" /></a><a href="http://www.amazon.de/exec/obidos/ASIN/0131872486/javalobby-20"><img class="flag" alt="DE" src="http://www.javalobby.org/articles/5books/images/flags/flag_germany.png" /></a><a href="http://www.amazon.co.uk/exec/obidos/ASIN/0131872486/javalobby-20"><img class="flag" alt="UK" src="http://www.javalobby.org/articles/5books/images/flags/flag_great_britain.png" /></a><a href="http://www.amazon.jp/exec/obidos/ASIN/0131872486/javalobby-20"><img class="flag" alt="JP" src="http://www.javalobby.org/articles/5books/images/flags/flag_japan.png" /></a><a href="http://www.amazon.com/exec/obidos/ASIN/0131872486/javalobby-20"><img class="flag" alt="US" src="http://www.javalobby.org/articles/5books/images/flags/flag_usa.png" /></a> </p>
            </td>
        </tr>
        <tr>
            <td>
            <h2 align="right">7.</h2>
            <p align="right">Votes<br />
            9</p>
            <p align="right">Avg Pos<br />
            3.11</p>
            </td>
            <td><a href="http://www.amazon.com/exec/obidos/ASIN/0735619670/javalobby-20"><img src="http://images.amazon.com/images/P/0735619670.01.TTZZZZZZ.jpg"  alt="" /></a></td>
            <td>
            <h3><a href="http://www.amazon.com/exec/obidos/ASIN/0735619670/javalobby-20">Code Complete (2nd Edition)</a> </h3>
            <h4>By Steve McConnell</h4>
            <p>Microsoft Press</p>
            <p>Paperback, 960 pages</p>
            <p>List Price: $49.99 - <a href="http://www.amazon.com/exec/obidos/ASIN/0735619670/javalobby-20">Amazon</a>: <a href="http://www.amazon.ca/exec/obidos/ASIN/0735619670/javalobby-20"><img class="flag" alt="CA" src="http://www.javalobby.org/articles/5books/images/flags/flag_canada.png" /></a><a href="http://www.amazon.fr/exec/obidos/ASIN/0735619670/javalobby-20"><img class="flag" alt="FR" src="http://www.javalobby.org/articles/5books/images/flags/flag_france.png" /></a><a href="http://www.amazon.de/exec/obidos/ASIN/0735619670/javalobby-20"><img class="flag" alt="DE" src="http://www.javalobby.org/articles/5books/images/flags/flag_germany.png" /></a><a href="http://www.amazon.co.uk/exec/obidos/ASIN/0735619670/javalobby-20"><img class="flag" alt="UK" src="http://www.javalobby.org/articles/5books/images/flags/flag_great_britain.png" /></a><a href="http://www.amazon.jp/exec/obidos/ASIN/0735619670/javalobby-20"><img class="flag" alt="JP" src="http://www.javalobby.org/articles/5books/images/flags/flag_japan.png" /></a><a href="http://www.amazon.com/exec/obidos/ASIN/0735619670/javalobby-20"><img class="flag" alt="US" src="http://www.javalobby.org/articles/5books/images/flags/flag_usa.png" /></a> </p>
            </td>
        </tr>
        <tr>
            <td>
            <h2 align="right">8.</h2>
            <p align="right">Votes<br />
            8</p>
            <p align="right">Avg Pos<br />
            2.25</p>
            </td>
            <td><a href="http://www.amazon.com/exec/obidos/ASIN/0596009208/javalobby-20"><img src="http://images.amazon.com/images/P/0596009208.01.TTZZZZZZ.jpg"  alt="" /></a></td>
            <td>
            <h3><a href="http://www.amazon.com/exec/obidos/ASIN/0596009208/javalobby-20">Head First Java (2nd Edition)</a> </h3>
            <h4>By Kathy Sierra; Bert Bates</h4>
            <p>O'Reilly Media, Inc.</p>
            <p>Paperback, 720 pages</p>
            <p>List Price: $44.95 - <a href="http://www.amazon.com/exec/obidos/ASIN/0596009208/javalobby-20">Amazon</a>: <a href="http://www.amazon.ca/exec/obidos/ASIN/0596009208/javalobby-20"><img class="flag" alt="CA" src="http://www.javalobby.org/articles/5books/images/flags/flag_canada.png" /></a><a href="http://www.amazon.fr/exec/obidos/ASIN/0596009208/javalobby-20"><img class="flag" alt="FR" src="http://www.javalobby.org/articles/5books/images/flags/flag_france.png" /></a><a href="http://www.amazon.de/exec/obidos/ASIN/0596009208/javalobby-20"><img class="flag" alt="DE" src="http://www.javalobby.org/articles/5books/images/flags/flag_germany.png" /></a><a href="http://www.amazon.co.uk/exec/obidos/ASIN/0596009208/javalobby-20"><img class="flag" alt="UK" src="http://www.javalobby.org/articles/5books/images/flags/flag_great_britain.png" /></a><a href="http://www.amazon.jp/exec/obidos/ASIN/0596009208/javalobby-20"><img class="flag" alt="JP" src="http://www.javalobby.org/articles/5books/images/flags/flag_japan.png" /></a><a href="http://www.amazon.com/exec/obidos/ASIN/0596009208/javalobby-20"><img class="flag" alt="US" src="http://www.javalobby.org/articles/5books/images/flags/flag_usa.png" /></a> </p>
            </td>
        </tr>
        <tr>
            <td>
            <h2 align="right">9.</h2>
            <p align="right">Votes<br />
            8</p>
            <p align="right">Avg Pos<br />
            4.63</p>
            </td>
            <td><a href="http://www.amazon.com/exec/obidos/ASIN/020161622X/javalobby-20"><img src="http://images.amazon.com/images/P/020161622X.01.TTZZZZZZ.jpg"  alt="" /></a></td>
            <td>
            <h3><a href="http://www.amazon.com/exec/obidos/ASIN/020161622X/javalobby-20">The Pragmatic Programmer: From Journeyman to Master</a> </h3>
            <h4>By Andrew Hunt; David Thomas</h4>
            <p>Addison-Wesley Professional</p>
            <p>Paperback, 352 pages</p>
            <p>List Price: $42.99 - <a href="http://www.amazon.com/exec/obidos/ASIN/020161622X/javalobby-20">Amazon</a>: <a href="http://www.amazon.ca/exec/obidos/ASIN/020161622X/javalobby-20"><img class="flag" alt="CA" src="http://www.javalobby.org/articles/5books/images/flags/flag_canada.png" /></a><a href="http://www.amazon.fr/exec/obidos/ASIN/020161622X/javalobby-20"><img class="flag" alt="FR" src="http://www.javalobby.org/articles/5books/images/flags/flag_france.png" /></a><a href="http://www.amazon.de/exec/obidos/ASIN/020161622X/javalobby-20"><img class="flag" alt="DE" src="http://www.javalobby.org/articles/5books/images/flags/flag_germany.png" /></a><a href="http://www.amazon.co.uk/exec/obidos/ASIN/020161622X/javalobby-20"><img class="flag" alt="UK" src="http://www.javalobby.org/articles/5books/images/flags/flag_great_britain.png" /></a><a href="http://www.amazon.jp/exec/obidos/ASIN/020161622X/javalobby-20"><img class="flag" alt="JP" src="http://www.javalobby.org/articles/5books/images/flags/flag_japan.png" /></a><a href="http://www.amazon.com/exec/obidos/ASIN/020161622X/javalobby-20"><img class="flag" alt="US" src="http://www.javalobby.org/articles/5books/images/flags/flag_usa.png" /></a> </p>
            </td>
        </tr>
        <tr>
            <td>
            <h2 align="right">10.</h2>
            <p align="right">Votes<br />
            8</p>
            <p align="right">Avg Pos<br />
            5.25</p>
            </td>
            <td><a href="http://www.amazon.com/exec/obidos/ASIN/0131489062/javalobby-20"><img src="http://images.amazon.com/images/P/0131489062.01.TTZZZZZZ.jpg"  alt="" /></a></td>
            <td>
            <h3><a href="http://www.amazon.com/exec/obidos/ASIN/0131489062/javalobby-20">Applying UML and Patterns</a> </h3>
            <h4>By Craig Larman</h4>
            <p>Prentice Hall PTR</p>
            <p>Hardcover, 736 pages</p>
            <p>List Price: $59.99 - <a href="http://www.amazon.com/exec/obidos/ASIN/0131489062/javalobby-20">Amazon</a>: <a href="http://www.amazon.ca/exec/obidos/ASIN/0131489062/javalobby-20"><img class="flag" alt="CA" src="http://www.javalobby.org/articles/5books/images/flags/flag_canada.png" /></a><a href="http://www.amazon.fr/exec/obidos/ASIN/0131489062/javalobby-20"><img class="flag" alt="FR" src="http://www.javalobby.org/articles/5books/images/flags/flag_france.png" /></a><a href="http://www.amazon.de/exec/obidos/ASIN/0131489062/javalobby-20"><img class="flag" alt="DE" src="http://www.javalobby.org/articles/5books/images/flags/flag_germany.png" /></a><a href="http://www.amazon.co.uk/exec/obidos/ASIN/0131489062/javalobby-20"><img class="flag" alt="UK" src="http://www.javalobby.org/articles/5books/images/flags/flag_great_britain.png" /></a><a href="http://www.amazon.jp/exec/obidos/ASIN/0131489062/javalobby-20"><img class="flag" alt="JP" src="http://www.javalobby.org/articles/5books/images/flags/flag_japan.png" /></a><a href="http://www.amazon.com/exec/obidos/ASIN/0131489062/javalobby-20"><img class="flag" alt="US" src="http://www.javalobby.org/articles/5books/images/flags/flag_usa.png" /></a> </p>
            </td>
        </tr>
        <tr>
            <td>
            <h2 align="right">11.</h2>
            <p align="right">Votes<br />
            7</p>
            <p align="right">Avg Pos<br />
            2.71</p>
            </td>
            <td><a href="http://www.amazon.com/exec/obidos/ASIN/0131482025/javalobby-20"><img src="http://images.amazon.com/images/P/0131482025.01.TTZZZZZZ.jpg"  alt="" /></a></td>
            <td>
            <h3><a href="http://www.amazon.com/exec/obidos/ASIN/0131482025/javalobby-20">Core Java 2, Volume I--Fundamentals (7th Edition)</a> </h3>
            <h4>By Cay Horstmann; Gary Cornell</h4>
            <p>Prentice Hall PTR</p>
            <p>Paperback, 784 pages</p>
            <p>List Price: $49.99 - <a href="http://www.amazon.com/exec/obidos/ASIN/0131482025/javalobby-20">Amazon</a>: <a href="http://www.amazon.ca/exec/obidos/ASIN/0131482025/javalobby-20"><img class="flag" alt="CA" src="http://www.javalobby.org/articles/5books/images/flags/flag_canada.png" /></a><a href="http://www.amazon.fr/exec/obidos/ASIN/0131482025/javalobby-20"><img class="flag" alt="FR" src="http://www.javalobby.org/articles/5books/images/flags/flag_france.png" /></a><a href="http://www.amazon.de/exec/obidos/ASIN/0131482025/javalobby-20"><img class="flag" alt="DE" src="http://www.javalobby.org/articles/5books/images/flags/flag_germany.png" /></a><a href="http://www.amazon.co.uk/exec/obidos/ASIN/0131482025/javalobby-20"><img class="flag" alt="UK" src="http://www.javalobby.org/articles/5books/images/flags/flag_great_britain.png" /></a><a href="http://www.amazon.jp/exec/obidos/ASIN/0131482025/javalobby-20"><img class="flag" alt="JP" src="http://www.javalobby.org/articles/5books/images/flags/flag_japan.png" /></a><a href="http://www.amazon.com/exec/obidos/ASIN/0131482025/javalobby-20"><img class="flag" alt="US" src="http://www.javalobby.org/articles/5books/images/flags/flag_usa.png" /></a> </p>
            </td>
        </tr>
        <tr>
            <td>
            <h2 align="right">12.</h2>
            <p align="right">Votes<br />
            7</p>
            <p align="right">Avg Pos<br />
            3.71</p>
            </td>
            <td><a href="http://www.amazon.com/exec/obidos/ASIN/0131118269/javalobby-20"><img src="http://images.amazon.com/images/P/0131118269.01.TTZZZZZZ.jpg"  alt="" /></a></td>
            <td>
            <h3><a href="http://www.amazon.com/exec/obidos/ASIN/0131118269/javalobby-20">Core Java 2, Volume II--Advanced Features (7th Edition)</a> </h3>
            <h4>By Cay Horstmann; Gary Cornell</h4>
            <p>Prentice Hall PTR</p>
            <p>Paperback, 1024 pages</p>
            <p>List Price: $49.99 - <a href="http://www.amazon.com/exec/obidos/ASIN/0131118269/javalobby-20">Amazon</a>: <a href="http://www.amazon.ca/exec/obidos/ASIN/0131118269/javalobby-20"><img class="flag" alt="CA" src="http://www.javalobby.org/articles/5books/images/flags/flag_canada.png" /></a><a href="http://www.amazon.fr/exec/obidos/ASIN/0131118269/javalobby-20"><img class="flag" alt="FR" src="http://www.javalobby.org/articles/5books/images/flags/flag_france.png" /></a><a href="http://www.amazon.de/exec/obidos/ASIN/0131118269/javalobby-20"><img class="flag" alt="DE" src="http://www.javalobby.org/articles/5books/images/flags/flag_germany.png" /></a><a href="http://www.amazon.co.uk/exec/obidos/ASIN/0131118269/javalobby-20"><img class="flag" alt="UK" src="http://www.javalobby.org/articles/5books/images/flags/flag_great_britain.png" /></a><a href="http://www.amazon.jp/exec/obidos/ASIN/0131118269/javalobby-20"><img class="flag" alt="JP" src="http://www.javalobby.org/articles/5books/images/flags/flag_japan.png" /></a><a href="http://www.amazon.com/exec/obidos/ASIN/0131118269/javalobby-20"><img class="flag" alt="US" src="http://www.javalobby.org/articles/5books/images/flags/flag_usa.png" /></a> </p>
            </td>
        </tr>
        <tr>
            <td>
            <h2 align="right">13.</h2>
            <p align="right">Votes<br />
            7</p>
            <p align="right">Avg Pos<br />
            4.57</p>
            </td>
            <td><a href="http://www.amazon.com/exec/obidos/ASIN/0321127420/javalobby-20"><img src="http://images.amazon.com/images/P/0321127420.01.TTZZZZZZ.jpg"  alt="" /></a></td>
            <td>
            <h3><a href="http://www.amazon.com/exec/obidos/ASIN/0321127420/javalobby-20">Patterns of Enterprise Application Architecture</a> </h3>
            <h4>By Martin Fowler</h4>
            <p>Addison-Wesley Professional</p>
            <p>Hardcover, 560 pages</p>
            <p>List Price: $54.99 - <a href="http://www.amazon.com/exec/obidos/ASIN/0321127420/javalobby-20">Amazon</a>: <a href="http://www.amazon.ca/exec/obidos/ASIN/0321127420/javalobby-20"><img class="flag" alt="CA" src="http://www.javalobby.org/articles/5books/images/flags/flag_canada.png" /></a><a href="http://www.amazon.fr/exec/obidos/ASIN/0321127420/javalobby-20"><img class="flag" alt="FR" src="http://www.javalobby.org/articles/5books/images/flags/flag_france.png" /></a><a href="http://www.amazon.de/exec/obidos/ASIN/0321127420/javalobby-20"><img class="flag" alt="DE" src="http://www.javalobby.org/articles/5books/images/flags/flag_germany.png" /></a><a href="http://www.amazon.co.uk/exec/obidos/ASIN/0321127420/javalobby-20"><img class="flag" alt="UK" src="http://www.javalobby.org/articles/5books/images/flags/flag_great_britain.png" /></a><a href="http://www.amazon.jp/exec/obidos/ASIN/0321127420/javalobby-20"><img class="flag" alt="JP" src="http://www.javalobby.org/articles/5books/images/flags/flag_japan.png" /></a><a href="http://www.amazon.com/exec/obidos/ASIN/0321127420/javalobby-20"><img class="flag" alt="US" src="http://www.javalobby.org/articles/5books/images/flags/flag_usa.png" /></a> </p>
            </td>
        </tr>
        <tr>
            <td>
            <h2 align="right">14.</h2>
            <p align="right">Votes<br />
            6</p>
            <p align="right">Avg Pos<br />
            4.33</p>
            </td>
            <td><a href="http://www.amazon.com/exec/obidos/ASIN/0130648841/javalobby-20"><img src="http://images.amazon.com/images/P/0130648841.01.TTZZZZZZ.jpg"  alt="" /></a></td>
            <td>
            <h3><a href="http://www.amazon.com/exec/obidos/ASIN/0130648841/javalobby-20">Core J2EE Patterns: Best Practices and Design Strategies</a> </h3>
            <h4>By Deepak Alur; John Crupi; Dan Malks</h4>
            <p>Pearson Education</p>
            <p>Paperback, 496 pages</p>
            <p>List Price: $44.99 - <a href="http://www.amazon.com/exec/obidos/ASIN/0130648841/javalobby-20">Amazon</a>: <a href="http://www.amazon.ca/exec/obidos/ASIN/0130648841/javalobby-20"><img class="flag" alt="CA" src="http://www.javalobby.org/articles/5books/images/flags/flag_canada.png" /></a><a href="http://www.amazon.fr/exec/obidos/ASIN/0130648841/javalobby-20"><img class="flag" alt="FR" src="http://www.javalobby.org/articles/5books/images/flags/flag_france.png" /></a><a href="http://www.amazon.de/exec/obidos/ASIN/0130648841/javalobby-20"><img class="flag" alt="DE" src="http://www.javalobby.org/articles/5books/images/flags/flag_germany.png" /></a><a href="http://www.amazon.co.uk/exec/obidos/ASIN/0130648841/javalobby-20"><img class="flag" alt="UK" src="http://www.javalobby.org/articles/5books/images/flags/flag_great_britain.png" /></a><a href="http://www.amazon.jp/exec/obidos/ASIN/0130648841/javalobby-20"><img class="flag" alt="JP" src="http://www.javalobby.org/articles/5books/images/flags/flag_japan.png" /></a><a href="http://www.amazon.com/exec/obidos/ASIN/0130648841/javalobby-20"><img class="flag" alt="US" src="http://www.javalobby.org/articles/5books/images/flags/flag_usa.png" /></a> </p>
            </td>
        </tr>
        <tr>
            <td>
            <h2 align="right">15.</h2>
            <p align="right">Votes<br />
            6</p>
            <p align="right">Avg Pos<br />
            4.83</p>
            </td>
            <td><a href="http://www.amazon.com/exec/obidos/ASIN/0201310090/javalobby-20"><img src="http://images.amazon.com/images/P/0201310090.01.TTZZZZZZ.jpg"  alt="" /></a></td>
            <td>
            <h3><a href="http://www.amazon.com/exec/obidos/ASIN/0201310090/javalobby-20">Concurrent Programming in Java: Design Principles and Pattern (2nd Edition)</a> </h3>
            <h4>By Doug Lea</h4>
            <p>Addison-Wesley Professional</p>
            <p>Paperback, 432 pages</p>
            <p>List Price: $54.99 - <a href="http://www.amazon.com/exec/obidos/ASIN/0201310090/javalobby-20">Amazon</a>: <a href="http://www.amazon.ca/exec/obidos/ASIN/0201310090/javalobby-20"><img class="flag" alt="CA" src="http://www.javalobby.org/articles/5books/images/flags/flag_canada.png" /></a><a href="http://www.amazon.fr/exec/obidos/ASIN/0201310090/javalobby-20"><img class="flag" alt="FR" src="http://www.javalobby.org/articles/5books/images/flags/flag_france.png" /></a><a href="http://www.amazon.de/exec/obidos/ASIN/0201310090/javalobby-20"><img class="flag" alt="DE" src="http://www.javalobby.org/articles/5books/images/flags/flag_germany.png" /></a><a href="http://www.amazon.co.uk/exec/obidos/ASIN/0201310090/javalobby-20"><img class="flag" alt="UK" src="http://www.javalobby.org/articles/5books/images/flags/flag_great_britain.png" /></a><a href="http://www.amazon.jp/exec/obidos/ASIN/0201310090/javalobby-20"><img class="flag" alt="JP" src="http://www.javalobby.org/articles/5books/images/flags/flag_japan.png" /></a><a href="http://www.amazon.com/exec/obidos/ASIN/0201310090/javalobby-20"><img class="flag" alt="US" src="http://www.javalobby.org/articles/5books/images/flags/flag_usa.png" /></a> </p>
            </td>
        </tr>
        <tr>
            <td>
            <h2 align="right">16.</h2>
            <p align="right">Votes<br />
            4</p>
            <p align="right">Avg Pos<br />
            3.75</p>
            </td>
            <td><a href="http://www.amazon.com/exec/obidos/ASIN/0135974445/javalobby-20"><img src="http://images.amazon.com/images/P/0135974445.01.TTZZZZZZ.jpg"  alt="" /></a></td>
            <td>
            <h3><a href="http://www.amazon.com/exec/obidos/ASIN/0135974445/javalobby-20">Agile Software Development, Principles, Patterns, and Practices</a> </h3>
            <h4>By Robert C. Martin</h4>
            <p>Prentice Hall</p>
            <p>Hardcover, 552 pages</p>
            <p>List Price: $63 - <a href="http://www.amazon.com/exec/obidos/ASIN/0135974445/javalobby-20">Amazon</a>: <a href="http://www.amazon.ca/exec/obidos/ASIN/0135974445/javalobby-20"><img class="flag" alt="CA" src="http://www.javalobby.org/articles/5books/images/flags/flag_canada.png" /></a><a href="http://www.amazon.fr/exec/obidos/ASIN/0135974445/javalobby-20"><img class="flag" alt="FR" src="http://www.javalobby.org/articles/5books/images/flags/flag_france.png" /></a><a href="http://www.amazon.de/exec/obidos/ASIN/0135974445/javalobby-20"><img class="flag" alt="DE" src="http://www.javalobby.org/articles/5books/images/flags/flag_germany.png" /></a><a href="http://www.amazon.co.uk/exec/obidos/ASIN/0135974445/javalobby-20"><img class="flag" alt="UK" src="http://www.javalobby.org/articles/5books/images/flags/flag_great_britain.png" /></a><a href="http://www.amazon.jp/exec/obidos/ASIN/0135974445/javalobby-20"><img class="flag" alt="JP" src="http://www.javalobby.org/articles/5books/images/flags/flag_japan.png" /></a><a href="http://www.amazon.com/exec/obidos/ASIN/0135974445/javalobby-20"><img class="flag" alt="US" src="http://www.javalobby.org/articles/5books/images/flags/flag_usa.png" /></a> </p>
            </td>
        </tr>
        <tr>
            <td>
            <h2 align="right">17.</h2>
            <p align="right">Votes<br />
            4</p>
            <p align="right">Avg Pos<br />
            4.75</p>
            </td>
            <td><a href="http://www.amazon.com/exec/obidos/ASIN/0321193687/javalobby-20"><img src="http://images.amazon.com/images/P/0321193687.01.TTZZZZZZ.jpg"  alt="" /></a></td>
            <td>
            <h3><a href="http://www.amazon.com/exec/obidos/ASIN/0321193687/javalobby-20">UML Distilled: A Brief Guide to the Standard Object Modeling Language (3rd Edition)</a> </h3>
            <h4>By Martin Fowler</h4>
            <p>Addison-Wesley Professional</p>
            <p>Paperback, 192 pages</p>
            <p>List Price: $34.99 - <a href="http://www.amazon.com/exec/obidos/ASIN/0321193687/javalobby-20">Amazon</a>: <a href="http://www.amazon.ca/exec/obidos/ASIN/0321193687/javalobby-20"><img class="flag" alt="CA" src="http://www.javalobby.org/articles/5books/images/flags/flag_canada.png" /></a><a href="http://www.amazon.fr/exec/obidos/ASIN/0321193687/javalobby-20"><img class="flag" alt="FR" src="http://www.javalobby.org/articles/5books/images/flags/flag_france.png" /></a><a href="http://www.amazon.de/exec/obidos/ASIN/0321193687/javalobby-20"><img class="flag" alt="DE" src="http://www.javalobby.org/articles/5books/images/flags/flag_germany.png" /></a><a href="http://www.amazon.co.uk/exec/obidos/ASIN/0321193687/javalobby-20"><img class="flag" alt="UK" src="http://www.javalobby.org/articles/5books/images/flags/flag_great_britain.png" /></a><a href="http://www.amazon.jp/exec/obidos/ASIN/0321193687/javalobby-20"><img class="flag" alt="JP" src="http://www.javalobby.org/articles/5books/images/flags/flag_japan.png" /></a><a href="http://www.amazon.com/exec/obidos/ASIN/0321193687/javalobby-20"><img class="flag" alt="US" src="http://www.javalobby.org/articles/5books/images/flags/flag_usa.png" /></a> </p>
            </td>
        </tr>
        <tr>
            <td>
            <h2 align="right">18.</h2>
            <p align="right">Votes<br />
            4</p>
            <p align="right">Avg Pos<br />
            5.5</p>
            </td>
            <td><a href="http://www.amazon.com/exec/obidos/ASIN/0201835959/javalobby-20"><img src="http://images.amazon.com/images/P/0201835959.01.TTZZZZZZ.jpg"  alt="" /></a></td>
            <td>
            <h3><a href="http://www.amazon.com/exec/obidos/ASIN/0201835959/javalobby-20">The Mythical Man-Month: Essays on Software Engineering, 20th Anniversary Edition</a> </h3>
            <h4>By Frederick P. Brooks</h4>
            <p>Addison-Wesley Professional</p>
            <p>Paperback, 322 pages</p>
            <p>List Price: $34.99 - <a href="http://www.amazon.com/exec/obidos/ASIN/0201835959/javalobby-20">Amazon</a>: <a href="http://www.amazon.ca/exec/obidos/ASIN/0201835959/javalobby-20"><img class="flag" alt="CA" src="http://www.javalobby.org/articles/5books/images/flags/flag_canada.png" /></a><a href="http://www.amazon.fr/exec/obidos/ASIN/0201835959/javalobby-20"><img class="flag" alt="FR" src="http://www.javalobby.org/articles/5books/images/flags/flag_france.png" /></a><a href="http://www.amazon.de/exec/obidos/ASIN/0201835959/javalobby-20"><img class="flag" alt="DE" src="http://www.javalobby.org/articles/5books/images/flags/flag_germany.png" /></a><a href="http://www.amazon.co.uk/exec/obidos/ASIN/0201835959/javalobby-20"><img class="flag" alt="UK" src="http://www.javalobby.org/articles/5books/images/flags/flag_great_britain.png" /></a><a href="http://www.amazon.jp/exec/obidos/ASIN/0201835959/javalobby-20"><img class="flag" alt="JP" src="http://www.javalobby.org/articles/5books/images/flags/flag_japan.png" /></a><a href="http://www.amazon.com/exec/obidos/ASIN/0201835959/javalobby-20"><img class="flag" alt="US" src="http://www.javalobby.org/articles/5books/images/flags/flag_usa.png" /></a> </p>
            </td>
        </tr>
        <tr>
            <td>
            <h2 align="right">19.</h2>
            <p align="right">Votes<br />
            4</p>
            <p align="right">Avg Pos<br />
            6</p>
            </td>
            <td><a href="http://www.amazon.com/exec/obidos/ASIN/0321125215/javalobby-20"><img src="http://images.amazon.com/images/P/0321125215.01.TTZZZZZZ.jpg"  alt="" /></a></td>
            <td>
            <h3><a href="http://www.amazon.com/exec/obidos/ASIN/0321125215/javalobby-20">Domain-Driven Design: Tackling Complexity in the Heart of Software</a> </h3>
            <h4>By Eric Evans</h4>
            <p>Addison-Wesley Professional</p>
            <p>Hardcover, 576 pages</p>
            <p>List Price: $54.99 - <a href="http://www.amazon.com/exec/obidos/ASIN/0321125215/javalobby-20">Amazon</a>: <a href="http://www.amazon.ca/exec/obidos/ASIN/0321125215/javalobby-20"><img class="flag" alt="CA" src="http://www.javalobby.org/articles/5books/images/flags/flag_canada.png" /></a><a href="http://www.amazon.fr/exec/obidos/ASIN/0321125215/javalobby-20"><img class="flag" alt="FR" src="http://www.javalobby.org/articles/5books/images/flags/flag_france.png" /></a><a href="http://www.amazon.de/exec/obidos/ASIN/0321125215/javalobby-20"><img class="flag" alt="DE" src="http://www.javalobby.org/articles/5books/images/flags/flag_germany.png" /></a><a href="http://www.amazon.co.uk/exec/obidos/ASIN/0321125215/javalobby-20"><img class="flag" alt="UK" src="http://www.javalobby.org/articles/5books/images/flags/flag_great_britain.png" /></a><a href="http://www.amazon.jp/exec/obidos/ASIN/0321125215/javalobby-20"><img class="flag" alt="JP" src="http://www.javalobby.org/articles/5books/images/flags/flag_japan.png" /></a><a href="http://www.amazon.com/exec/obidos/ASIN/0321125215/javalobby-20"><img class="flag" alt="US" src="http://www.javalobby.org/articles/5books/images/flags/flag_usa.png" /></a> </p>
            </td>
        </tr>
        <tr>
            <td>
            <h2 align="right">20.</h2>
            <p align="right">Votes<br />
            3</p>
            <p align="right">Avg Pos<br />
            2.33</p>
            </td>
            <td><a href="http://www.amazon.com/exec/obidos/ASIN/032133678X/javalobby-20"><img src="http://images.amazon.com/images/P/032133678X.01.TTZZZZZZ.jpg"  alt="" /></a></td>
            <td>
            <h3><a href="http://www.amazon.com/exec/obidos/ASIN/032133678X/javalobby-20">Java Puzzlers</a> </h3>
            <h4>By Joshua Bloch; Neal Gafter</h4>
            <p>Addison-Wesley Professional</p>
            <p>Paperback, 304 pages</p>
            <p>List Price: $39.99 - <a href="http://www.amazon.com/exec/obidos/ASIN/032133678X/javalobby-20">Amazon</a>: <a href="http://www.amazon.ca/exec/obidos/ASIN/032133678X/javalobby-20"><img class="flag" alt="CA" src="http://www.javalobby.org/articles/5books/images/flags/flag_canada.png" /></a><a href="http://www.amazon.fr/exec/obidos/ASIN/032133678X/javalobby-20"><img class="flag" alt="FR" src="http://www.javalobby.org/articles/5books/images/flags/flag_france.png" /></a><a href="http://www.amazon.de/exec/obidos/ASIN/032133678X/javalobby-20"><img class="flag" alt="DE" src="http://www.javalobby.org/articles/5books/images/flags/flag_germany.png" /></a><a href="http://www.amazon.co.uk/exec/obidos/ASIN/032133678X/javalobby-20"><img class="flag" alt="UK" src="http://www.javalobby.org/articles/5books/images/flags/flag_great_britain.png" /></a><a href="http://www.amazon.jp/exec/obidos/ASIN/032133678X/javalobby-20"><img class="flag" alt="JP" src="http://www.javalobby.org/articles/5books/images/flags/flag_japan.png" /></a><a href="http://www.amazon.com/exec/obidos/ASIN/032133678X/javalobby-20"><img class="flag" alt="US" src="http://www.javalobby.org/articles/5books/images/flags/flag_usa.png" /></a> </p>
            </td>
        </tr>
    </tbody>
</table>
<br />
<br />
<a title="显示全部（http://www.javalobby.org/articles/5books/full.jsp）" href="http://www.javalobby.org/articles/5books/full.jsp">显示全部（http://www.javalobby.org/articles/5books/full.jsp）</a>
<img src ="http://www.cnblogs.com/YellowWee/aggbug/898718.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43769/" target="_blank">[新闻]007最牛电脑探秘：应用界面来自中国(组图)</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>自定义DataContext类</title><link>http://www.cnblogs.com/YellowWee/archive/2007/09/04/881068.html</link><dc:creator>YellowWee(端木柒)</dc:creator><author>YellowWee(端木柒)</author><pubDate>Tue, 04 Sep 2007 01:48:00 GMT</pubDate><guid>http://www.cnblogs.com/YellowWee/archive/2007/09/04/881068.html</guid><wfw:comment>http://www.cnblogs.com/YellowWee/comments/881068.html</wfw:comment><comments>http://www.cnblogs.com/YellowWee/archive/2007/09/04/881068.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/YellowWee/comments/commentRss/881068.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/YellowWee/services/trackbacks/881068.html</trackback:ping><description><![CDATA[摘要:  1.) 手工书写代码，自定义需要映射的表和关系 usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Data.Linq;//DataContext在此命名空间下usingSystem.Data.Linq.Mapping;//[Database][Tabale]等属性在此&nbsp;&nbsp;<a href='http://www.cnblogs.com/YellowWee/archive/2007/09/04/881068.html'>阅读全文</a><img src ="http://www.cnblogs.com/YellowWee/aggbug/881068.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43768/" target="_blank">[新闻]新浪网遭攻击瘫痪500分钟 被迫答应黑客要求</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>[转载]Encrypting Configuration Information in ASP.NET 2.0 Applications</title><link>http://www.cnblogs.com/YellowWee/archive/2007/09/03/880662.html</link><dc:creator>YellowWee(端木柒)</dc:creator><author>YellowWee(端木柒)</author><pubDate>Mon, 03 Sep 2007 13:02:00 GMT</pubDate><guid>http://www.cnblogs.com/YellowWee/archive/2007/09/03/880662.html</guid><wfw:comment>http://www.cnblogs.com/YellowWee/comments/880662.html</wfw:comment><comments>http://www.cnblogs.com/YellowWee/archive/2007/09/03/880662.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/YellowWee/comments/commentRss/880662.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/YellowWee/services/trackbacks/880662.html</trackback:ping><description><![CDATA[<center><font size="+2"><strong>Encrypting Configuration Information in ASP.NET 2.0 Applications </strong></font><br />
<font size="+1"><em>By <a href="http://www.4guysfromrolla.com/ScottMitchell.shtml">Scott Mitchell</a> </em></font></center>
<p>
<hr />
<p><strong>Introduction</strong><br />
When creating ASP.NET 2.0 applications, developers commonly store sensitive configuration information in the <code>Web.config</code> file. The cannonical example is database connection strings, but other sensitive information included in the <code>Web.config</code> file can include SMTP server connection information and user credentials, among others. While ASP.NET is configured, by default, to reject all HTTP requests to resources with the <code>.config</code> extension, the sensitive information in <code>Web.config</code> can be compromised if a hacker obtains access to your web server's file system. For example, perhaps you forgot to disallow anonymous FTP access to your website, thereby allowing a hacker to simply FTP in and download your <code>Web.config</code> file. Eep.
<p>Fortunately ASP.NET 2.0 helps mitigate this problem by allowing selective portions of the <code>Web.config</code> file to be encrypted, such as the <code>&lt;connectionStrings&gt;</code> section, or some custom config section used by your application. Configuration sections can be easily encrypted using code or <code>aspnet_regiis.exe</code>, a command-line program. Once encrypted, the <code>Web.config</code> settings are safe from prying eyes. Furthermore, when retrieving encrypted congifuration settings programmatically in your ASP.NET pages, ASP.NET will automatically decrypt the encrypted sections its reading. In short, once the configuration information in encrypted, you don't need to write any further code or take any further action to use that encrypted data in your application.
<p>In this article we'll see how to programmatically encrypt and decrypt portions of the configuration settings and look at using the <code>aspnet_regiis.exe</code> command-line program. We'll then evaluate the encryption options ASP.NET 2.0 offers. There's also a short discussion on how to encrypt configuration information in ASP.NET version 1.x. Read on to learn more! <img height="1" src="http://mjxads.internet.com/RealMedia/ads/adstream_lx.cgi/intm/webdev/www.4guysfromrolla.com/aspnet/articles/021506-1.aspx/1162388441/accessunit/OasDefault/Nokia_Ent_Sol_eBook_GEMS_1i/Nokia_eBook_AU.html/64656163623533633436646330306130?_RM_EMPTY_" width="1"  alt="" /> <noscript></noscript><!-- /accessunit ad tag -->
<p>&nbsp;</p>
<p><strong>Things to Keep in Mind...</strong><br />
Before we get started exploring how to encrypt configuration information in ASP.NET 2.0, keep the following things in the back of your mind:
<ol>
    <li>All forms of encryption involve some sort of secret that is used when encrypting and decrypting the data. Symmetric encryption algorithm use the same secret key in both encrypting and decrypting a message, whereas asymmetric encryption algorithms use different keys for encrypting and decrypting. Regardless of the technique being used, the encryption scheme is only as safe as the secret key for decrypting.
    <li>The configuration encryption capabilities in ASP.NET 2.0 are designed to foil a hacker who somehow is able to retrieve your configuration files. The idea is that if the hacker has your <code>Web.config</code> file on his computer, she can't de-scramble the encrypted sections. However, when an ASP.NET page on the web server requests information from an encrypted configuration file, the data must be decrypted to be used (and this happens without you needing to write any code). Therefore, if a hacker is able to upload an ASP.NET web page to your system that queries the configuration file and displays its results, she can view the encrypted settings in plain-text. (There's an example ASP.NET page that can be downloaded at the end of this article that illustrates encrypting and decrypting various sections of the <code>Web.config</code> file; as you'll see, an ASP.NET page can access (and display) the plain-text version of the encrypted data.)
    <li>Encrypting and decrypting configuration sections carries a performance cost. Therefore, only encrypt the configuration sections that contain sensitive information. There's likely no need to encrypt, say, the <code>&lt;compilation&gt;</code> or <code>&lt;authorization&gt;</code> configuration sections. </li>
</ol>
That being said, let's get started!
<p><strong>What Information Can Be Encrypted</strong><br />
Before we examine <em>how</em> to encrypt configuration information in ASP.NET 2.0, let's first look at what configuration information, exactly, can be encrypted. The .NET Framework 2.0 libraries include the capabilities to encrypt most any configuration sections within the <code>Web.config</code> or <code>machine.config</code> files. Configuration sections are those XML elements that are children of the <code>&lt;configuration&gt;</code> or <code>&lt;system.web&gt;</code> elements. For example, the sample <code>Web.config</code> below has three configuration settings explicitly defined: <code>&lt;connectionStrings&gt;</code>, <code>&lt;compilation&gt;</code>, and <code>&lt;authentication&gt;</code>.
<p>
<table width="95%" border="0">
    <tbody>
        <tr>
            <td width="100%" bgcolor="#cccccc"><code>&lt;?xml version="1.0"?&gt;<br />
            &lt;configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"&gt;<br />
            &nbsp;&nbsp;&nbsp;&lt;connectionStrings&gt;<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;add name="MembershipConnectionString" connectionString="<em>connectionString</em>"/&gt;<br />
            &nbsp;&nbsp;&nbsp;&lt;/connectionStrings&gt;<br />
            <br />
            &nbsp;&nbsp;&nbsp;&lt;system.web&gt;<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;compilation debug="true"/&gt;<br />
            <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;authentication mode="Forms" /&gt;<br />
            &nbsp;&nbsp;&nbsp;&lt;/system.web&gt;<br />
            &lt;/configuration&gt; </code></td>
        </tr>
    </tbody>
</table>
<p>Each of these sections can optionally be encrypted, either programmatically or through <code>aspnet_regiis.exe</code>, a command-line tool. When encrypted, the scrambled text is stored directly in the configuration file. For example, if we were to encrypt the <code>&lt;connectionStrings&gt;</code> section above the resulting <code>Web.config</code> file might look like the following: (Note: a large chunk of the <code>&lt;CipherValue&gt;</code> has been removed for brevity.)
<p>
<table width="95%" border="0">
    <tbody>
        <tr>
            <td width="100%" bgcolor="#cccccc"><code>&lt;?xml version="1.0"?&gt;<br />
            &lt;configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"&gt;<br />
            <br />
            <strong>&nbsp;&nbsp;&nbsp;&lt;connectionStrings configProtectionProvider="DataProtectionConfigurationProvider"&gt;<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;EncryptedData&gt;<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;CipherData&gt;<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;CipherValue&gt;AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAed...GicAlQ==&lt;/CipherValue&gt;<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/CipherData&gt;<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/EncryptedData&gt;<br />
            &nbsp;&nbsp;&nbsp;&lt;/connectionStrings&gt;<br />
            </strong><br />
            &nbsp;&nbsp;&nbsp;&lt;system.web&gt;<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;compilation debug="true"/&gt;<br />
            <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;authentication mode="Forms" /&gt;<br />
            &nbsp;&nbsp;&nbsp;&lt;/system.web&gt;<br />
            &lt;/configuration&gt; </code></td>
        </tr>
    </tbody>
</table>
<p>There are some configuration sections that you <em>cannot</em> encrypt using this technique:
<ul>
    <li><code>&lt;processModel&gt;</code>
    <li><code>&lt;runtime&gt;</code>
    <li><code>&lt;mscorlib&gt;</code>
    <li><code>&lt;startup&gt;</code>
    <li><code>&lt;system.runtime.remoting&gt;</code>
    <li><code>&lt;configProtectedData&gt;</code>
    <li><code>&lt;satelliteassemblies&gt;</code>
    <li><code>&lt;cryptographySettings&gt;</code>
    <li><code>&lt;cryptoNameMapping&gt;</code>
    <li><code>&lt;cryptoClasses&gt;</code> </li>
</ul>
In order to encrypt these configuration sections you must encrypt the value and store it in the registry. There's an <code>aspnet_setreg.exe</code> command-line tool to help along with this process; this tool is discussed later in this article in the "Encrypting Configuration Settings in ASP.NET Version 1.x" note.
<p>
<table class="noteBox" align="center">
    <tbody>
        <tr>
            <th>The Differences Between <code>Web.Config</code> and <code>Machine.Config</code></th>
        </tr>
        <tr>
            <td><code>Web.config</code> files specify configuration settings for a particular web application, and are located in the application's root directory; the <code>machine.config</code> file specifies configuration settings for all of the websites on the web server, and is located in <code>$WINDOWSDIR$\Microsoft.Net\Framework\<em>Version</em>\CONFIG</code>. </td>
        </tr>
    </tbody>
</table>
<p><strong>Encryption Options</strong><br />
Protecting configuration sections in ASP.NET 2.0 uses the <a href="http://aspnet.4guysfromrolla.com/articles/101905-1.aspx"><em>provider model</em></a>, which allows for any implementation to be seamlessly plugged into the API. The .NET Framework 2.0 ships with two built-in providers for protecting configuration sections:
<ul>
    <li><strong>The Windows Data Protection API (DPAPI) Provider (<code>DataProtectionConfigurationProvider</code>)</strong> - this provider uses the built-in cryptography capabilities of Windows to encrypt and decrypt the configuration sections. By default this provider uses the machine's key. You can also use user keys, but that requires a bit more customization. Refer to <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/paght000005.asp">How To: Encrypt Configuration Sections in ASP.NET 2.0 Using DPAPI</a> for more information on this process. Since the keys are machine- or user- specific, the DPAPI provider does not work in settings where you wan to deploy the same encrypted configuration file to multiple servers.
    <li><strong>RSA Protected Configuration Provider (<code>RSAProtectedConfigurationProvider</code>)</strong> - uses RSA public key encryption to encrypt/decrypt the configuration sections. With this provider you need to create key containers that hold the public and private keys used for encrypting and decrypting the configuration information. Refer to <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/paght000006.asp">How To: Encrypt Configuration Sections in ASP.NET 2.0 Using RSA</a> for more information. You can use RSA in a multi-server scenario by creating exportable key containers. </li>
</ul>
You can also create your own protected settings providers, if needed.
<p>In this article we'll only explore using the DPAPI provider using machine-level keys. This is, by far, the simplest approach since it doesn't require creating any keys or key containers, or ensuring access and permission rights to user-level keys. Of course, it has the downside that an encrypted configuration file can only be used on the web server that performed the encryption in the first place; furthermore, using the machine key would allow the encrypted text to be decrytable by any website on the web server.
<p><strong>Programmatically Encrypting Configuration Sections</strong><br />
The <code>System.Configuration.SectionInformation</code> class abstractly represents a configuration section. To encrypt a configuration section simply use the <code>SectionInformation</code> class's <code>ProtectSection(<em>provider</em>)</code> method, passing in the name of the provider you want to use to perform the encryption. To access a particular configuration section in your application's <code>Web.config</code> file, use the <code>WebConfigurationManager</code> class (in the <code>System.Web.Configuration</code> namespace) to reference your <code>Web.config</code> file, and then use its <code>GetSection(<em>sectionName</em>)</code> method to return a <code>ConfigurationSection</code> instance. Finally, you can get to a <code>SectionInformation</code> object via the <code>ConfigurationSection</code> instance's <code>SectionInformation</code> property.
<p>This jumble of words should be made clearer by a simple code example (which I'm taking directly from <a href="http://www.davidhayden.com/davidhayden/default.aspx">David Hayden</a>'s blog entry <a href="http://davidhayden.com/blog/dave/archive/2005/11/17/2572.aspx">Encrypt Connection Strings AppSettings and Web.Config in ASP.NET 2.0 - Security Best Practices</a>:
<p>
<table width="95%" border="0">
    <tbody>
        <tr>
            <td width="100%" bgcolor="#cccccc"><code>
            <pre>private void ProtectSection(string sectionName,
            string provider)
            {
            Configuration config =
            WebConfigurationManager.
            OpenWebConfiguration(Request.ApplicationPath);
            ConfigurationSection section =
            config.GetSection(sectionName);
            if (section != null &amp;&amp;
            !section.SectionInformation.IsProtected)
            {
            section.SectionInformation.ProtectSection(provider);
            config.Save();
            }
            }
            private void UnProtectSection(string sectionName)
            {
            Configuration config =
            WebConfigurationManager.
            OpenWebConfiguration(Request.ApplicationPath);
            ConfigurationSection section =
            config.GetSection(sectionName);
            if (section != null &amp;&amp;
            section.SectionInformation.IsProtected)
            {
            section.SectionInformation.UnprotectSection();
            config.Save();
            }
            }
            </pre>
            </code></td>
        </tr>
    </tbody>
</table>
<p>This method David has created - <code>ProtectSection(<em>sectionName</em>, <em>provider</em>)</code> - can be called from an ASP.NET page, passing in a section name (like <code>connectionStrings</code>) and a provider (like <code>DataProtectionConfigurationProvider</code>), and it opens the <code>Web.config</code> file, references the section, invokes the <code>ProtectSection(<em>provider</em>)</code> method of the <code>SectionInformation</code> object, and saves the configuration changes.
<p>The <code>UnProtectSection(<em>provider</em>)</code> method decrypts a particular configuration section. Here only the section to decrypt needs to be passed in - we don't need to bother with the provider because that information is stored in the markup accompanying the encrypted section (i.e., in the above example, the <code>&lt;connectionStrings&gt;</code> section, after being encrypted, included the provider: <code>&lt;connectionStrings <em>configProtectionProvider="DataProtectionConfigurationProvider"</em>&gt;</code>).
<p>
<table class="noteBox" align="center">
    <tbody>
        <tr>
            <th>And.................... You're Done!</code></th>
        </tr>
        <tr>
            <td>Keep in mind that once the data is encrypted, when it's read from an ASP.NET page (i.e., reading the connection string information from a SqlDataSource control or programmatically, via <code>ConfigurationManager.ConnectionStrings[<em>connStringName</em>].ConnectionString</code>), ASP.NET automatically decrypts the connection string and returns the plain-text value. In other words, you don't need to change your code one iota after implementing encryption. Pretty cool! </td>
        </tr>
    </tbody>
</table>
<p>At the end of this article you'll find an ASP.NET 2.0 website download that has a page that shows the site's <code>Web.config</code> file in a multi-line TextBox, with Button Web controls for encrypting various portions of the configuration file. That example illustrates using both the <code>ProtectSection()</code> and <code>UnProtectSection()</code> methods shown above.
<p><strong>Using the <code>aspnet_regiis.exe</code> Command-Line Tool</strong><br />
You can also encrypt and decrypt sections in the <code>Web.config</code> file using the <code>aspnet_regiis.exe</code> command-line tool, which can be found in the <code>%WINDOWSDIR%\Microsoft.Net\Framework\<em>version</em></code> directory. To encrypt a section of the <code>Web.config</code> using the DPAPI machine key with this command-line tool, use:
<p>
<table width="95%" border="0">
    <tbody>
        <tr>
            <td width="100%" bgcolor="#cccccc"><code>-- Generic form for <em>encrypting</em> the Web.config file for a particular website...<br />
            aspnet_regiis.exe -pef <em>section</em> <em>physical_directory</em> &#8211;prov <em>provider</em><br />
            &nbsp;&nbsp;&nbsp;-- or --<br />
            aspnet_regiis.exe -pe <em>section</em> -app <em>virtual_directory</em> &#8211;prov <em>provider</em><br />
            <br />
            <br />
            -- Concrete example of <em>encrypting</em> the Web.config file for a particular website...<br />
            aspnet_regiis.exe -pef "connectionStrings" "C:\Inetpub\wwwroot\MySite" &#8211;prov "DataProtectionConfigurationProvider"<br />
            &nbsp;&nbsp;&nbsp;-- or --<br />
            aspnet_regiis.exe -pe "connectionStrings" -app "/MySite" &#8211;prov "DataProtectionConfigurationProvider"<br />
            <br />
            <br />
            <br />
            -- Generic form for <em>decrypting</em> the Web.config file for a particular website...<br />
            aspnet_regiis.exe -pdf <em>section</em> <em>physical_directory</em><br />
            &nbsp;&nbsp;&nbsp;-- or --<br />
            aspnet_regiis.exe -pd <em>section</em> -app <em>virtual_directory</em><br />
            <br />
            <br />
            -- Concrete example of <em>decrypting</em> the Web.config file for a particular website...<br />
            aspnet_regiis.exe -pdf "connectionStrings" "C:\Inetpub\wwwroot\MySite"<br />
            &nbsp;&nbsp;&nbsp;-- or --<br />
            aspnet_regiis.exe -pd "connectionStrings" -app "/MySite"<br />
            </code></td>
        </tr>
    </tbody>
</table>
<p>You can also specify that <code>aspnet_regiis.exe</code> should perform encryption/decryption on the <code>machine.config</code> file instead. See the technical documentation for the <a href="http://msdn2.microsoft.com/en-us/library/k6h9cz8h.aspx">ASP.NET IIS Registration Tool (<code>Aspnet_regiis.exe</code>)</a> for more information on the available command-line switches.
<p>
<table class="noteBox" align="center">
    <tbody>
        <tr>
            <th>Encrypting Configuration Settings in ASP.NET Version 1.x</th>
        </tr>
        <tr>
            <td>In order to protect configuration settings in ASP.NET version 1.x, developers needed to encrypt and store the sensitive settings in the web server's registry, storing it in a "strong" key. Rather than storing the encrypted content in the configuration file, as in ASP.NET, the configuration file would contain a reference to the registry key holding the encrypted value, a la:
            <p><code>&lt;identity impersonate="true"<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;userName="registry:HKLM\SOFTWARE\MY_SECURE_APP\identity\ASPNET_SETREG,userName"<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;password="registry:HKLM\SOFTWARE\MY_SECURE_APP\identity\ASPNET_SETREG,password" /&gt; </code>
            <p>Microsoft made available the <code>aspnet_setreg.exe</code> command-line tool for encrypting the contents of sensitive configuration information and moving it to a "strong" registry entry. Unfortunately this tool only works on specific configuration settings, whereas ASP.NET 2.0 allows encrypting any configuration section.
            <p>For more information on using <code>aspnet_setreg.exe</code> in an ASP.NET 1.x application, see <a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;329290">KB #32990 (How to use the ASP.NET utility to encrypt credentials and session state connection strings)</a>. Unfortunately, this command-line program only encrypts predefined sections of the configuration settings, and does <em>not</em> allow you to encrypt your own added database connection strings and other sensitive information.
            <p>In order to encrypt your own content you can use a couple of techniques. The different options are described in <a href="http://www.pluralsight.com/blogs/keith/">Keith Brown</a>'s <em>The .NET Developer's Guide to Windows Security</em> Wiki page on <a href="http://pluralsight.com/wiki/default.aspx/Keith.GuideBook.HowToStoreSecretsOnAMachine">How To Store Secrets On A Machine</a>. For a look at implementing the registry approach, which is what the <code>aspnet_setreg.exe</code> command-line tool does for the predefined configuration sections, refer to: <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetsec/html/SecNetHT11.asp">How To: Store an Encrypted Connection String in the Registry</a>. </p>
            </td>
        </tr>
    </tbody>
</table>
<p><strong>Conclusion</strong><br />
In this article we saw different encryption options ASP.NET 2.0 provides for protecting configuration sections, as well as how to encrypt sections of the <code>Web.config</code> using both programmatic techniques and <code>aspnet_regiis.exe</code>, a command-line tool. Protecting your sensitive configuration settings can help ensure that your site is more hardened against nefarious hackers by making it more difficult to discover the sensitive configuration settings. And with the ease of encrypting and decrypting this information in ASP.NET 2.0, there's really no excuse not to protect your sensitive configuration settings in this manner.
<p>Happy Programming!
<p>
<p>
<li>By <a href="http://www.4guysfromrolla.com/ScottMitchell.shtml">Scott Mitchell</a> </li>
<p>转自:</p>
<a title="Encrypting Configuration Information in ASP.NET 2.0 Applications " href="http://aspnet.4guysfromrolla.com/articles/021506-1.aspx">Encrypting Configuration Information in ASP.NET 2.0 Applications </a>
<img src ="http://www.cnblogs.com/YellowWee/aggbug/880662.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43767/" target="_blank">[新闻]联发科称“死机短信”不会伤害手机硬件</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>安装 Sql Server Query Visualizer</title><link>http://www.cnblogs.com/YellowWee/archive/2007/08/30/876044.html</link><dc:creator>YellowWee(端木柒)</dc:creator><author>YellowWee(端木柒)</author><pubDate>Thu, 30 Aug 2007 08:48:00 GMT</pubDate><guid>http://www.cnblogs.com/YellowWee/archive/2007/08/30/876044.html</guid><wfw:comment>http://www.cnblogs.com/YellowWee/comments/876044.html</wfw:comment><comments>http://www.cnblogs.com/YellowWee/archive/2007/08/30/876044.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/YellowWee/comments/commentRss/876044.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/YellowWee/services/trackbacks/876044.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<ol>
    <li>编译&nbsp;VS2008 Beta2 安装目录下（我的是"D:\Program Files\Microsoft Visual Studio 9.0\Samples\1033\CSharpSamples.zip\LinqSamples\QueryVisualizer" ）的 <strong>QueryVisualizer</strong> 项目。</li>
    <li>关闭所有运行的 Vs2008。</li>
    <li>把编译好的 <strong>SqlServerQueryVisualizer.dll</strong> 拷贝到 "Program Files\Microsoft Visual Studio 9.0\Common7\Packages\Debugger\Visualizers\" 目录下。</li>
    <li>启动VS2008，debug，就可以看到传说中的"放大镜(Magnify Glass)"了。</li>
</ol>
<p><strong>安装之前：</strong><br />
<br />
<img height="77" alt="" src="http://www.cnblogs.com/images/cnblogs_com/yellowwee/Untitled-1.gif" width="617" border="0" /><br />
<br />
<strong>安装之后：<br />
<br />
<img alt="" src="http://www.cnblogs.com/images/cnblogs_com/yellowwee/Untitled-2.gif" border="0" /><br />
</strong></p>
<img src ="http://www.cnblogs.com/YellowWee/aggbug/876044.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43766/" target="_blank">[新闻]金融危机引爆Web2.0变革：社区网站价值被高估</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>生活的五项调整</title><link>http://www.cnblogs.com/YellowWee/archive/2007/08/22/865955.html</link><dc:creator>YellowWee(端木柒)</dc:creator><author>YellowWee(端木柒)</author><pubDate>Wed, 22 Aug 2007 12:23:00 GMT</pubDate><guid>http://www.cnblogs.com/YellowWee/archive/2007/08/22/865955.html</guid><wfw:comment>http://www.cnblogs.com/YellowWee/comments/865955.html</wfw:comment><comments>http://www.cnblogs.com/YellowWee/archive/2007/08/22/865955.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/YellowWee/comments/commentRss/865955.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/YellowWee/services/trackbacks/865955.html</trackback:ping><description><![CDATA[<p dir="ltr" style="margin-right: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a title="身体使用手册(You:The Owner's Manual)" href="http://www.amazon.com/YOU-Owners-Insiders-Healthier-Younger/dp/0060765313/ref=pd_bbs_1/104-0751505-9611908?ie=UTF8&amp;s=books&amp;qid=1187784803&amp;sr=8-1" target="_blank">身体使用手册(You:The Owner's Manual)</a>&nbsp;中概括了5项调整，使自己的寿命和生活质量发生翻天覆地的变化，仅仅5项。它们是：<br />
<br />
</p>
<ol>
    <ol>
        <ol>
            <li>控制血压</li>
            <li>戒烟</li>
            <li>每天运动30分钟</li>
            <li>控制精神压力</li>
            <li>坚持简单易行的健康饮食习惯</li>
        </ol>
    </ol>
</ol>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果能做到这5项调整，在今后10年里，你的病亡或病残的几率只有你同龄人的1/10。</p>
<p><br />
</p>
<img src ="http://www.cnblogs.com/YellowWee/aggbug/865955.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43765/" target="_blank">[新闻]MySpace称目前是收购创业公司良机</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>C# 中的扩展方法---Extension methods in C#</title><link>http://www.cnblogs.com/YellowWee/archive/2007/08/21/863727.html</link><dc:creator>YellowWee(端木柒)</dc:creator><author>YellowWee(端木柒)</author><pubDate>Tue, 21 Aug 2007 03:16:00 GMT</pubDate><guid>http://www.cnblogs.com/YellowWee/archive/2007/08/21/863727.html</guid><wfw:comment>http://www.cnblogs.com/YellowWee/comments/863727.html</wfw:comment><comments>http://www.cnblogs.com/YellowWee/archive/2007/08/21/863727.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/YellowWee/comments/commentRss/863727.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/YellowWee/services/trackbacks/863727.html</trackback:ping><description><![CDATA[摘要: 使用扩展方法需要注意的几点： The method is define in a top level static class ( the class is directly under the namespace) The method is static and decorates its first param with a new param modifier this, this par&nbsp;&nbsp;<a href='http://www.cnblogs.com/YellowWee/archive/2007/08/21/863727.html'>阅读全文</a><img src ="http://www.cnblogs.com/YellowWee/aggbug/863727.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43764/" target="_blank">[新闻]诺基亚推出触摸屏手机N97</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item></channel></rss>