??xml version="1.0" encoding="utf-8" standalone="yes"?>美国职业棒球比分:BlogJava-Flyingis-文章分类 - 棒球比分大小怎么算|վ//www.355548.live/flyingis/category/4258.htmlTalking and thinking freely !<br> Flying in the world of Java and GIS !zh-cnTue, 27 Feb 2007 11:10:25 GMTTue, 27 Feb 2007 11:10:25 GMT60正确使用XHTML的冒?/title><link>//www.355548.live/flyingis/articles/83430.html</link><dc:creator>Flyingis</dc:creator><author>Flyingis</author><pubDate>Sat, 25 Nov 2006 04:04:00 GMT</pubDate><guid>//www.355548.live/flyingis/articles/83430.html</guid><wfw:comment>//www.355548.live/flyingis/comments/83430.html</wfw:comment><comments>//www.355548.live/flyingis/articles/83430.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>//www.355548.live/flyingis/comments/commentRss/83430.html</wfw:commentRss><trackback:ping>//www.355548.live/flyingis/services/trackbacks/83430.html</trackback:ping><description><![CDATA[ <div class="entry-body"> <p> <font face="Verdana" size="2">原文Q?/font> <a > <font face="Verdana" size="2">//www.456bereastreet.com/archive/200501/the_perils_of_using_xhtml_properly/</font> </a> <br /> <font face="Verdana" size="2">作者:</font> <a > <font face="Verdana" size="2">Roger Johansson</font> </a> <br /> <font face="Verdana" size="2">译Q?/font> <a > <font face="Verdana" size="2">Neo</font> </a> <font face="Verdana" size="2">(</font> <a > <font face="Verdana" size="2">//www.omemo.net/neo</font> </a> <font face="Verdana" size="2">)<br />修正Q?/font> <a > <font face="Verdana" size="2">JunChen</font> </a> </p> <p> <a > <font face="Verdana" size="2">JunChen</font> </a> <font face="Verdana" size="2">注:omemo.net|站g已经挂掉Q链接都失效了。文章写得非怸错,一直是Best of 456 Berea Street。在q里发布的时候我q行了少量代码上和翻译上的修改,以忠实原著?/font> </p> <p> <strong class="dntg"> <font face="Verdana" size="2">我?abbr>XHTML</abbr>有些q了Q但直至d夏天我才着g如何正确使用Q那是_?code>application/xhtml+xml</code>?acronym title="Multipart Internet Mail Extension">MIME</acronym>cd来伺?server)它。虽然我遇到了这些问题,但我知道问题q非如此。就如你卛_发现的一P当你开始用真正的<abbr>XHTML</abbr>Q你会遭遇很多似乎细但让h困惑的问题?/font> </strong> </p> </div> <p class="entry-more"> <font face="Verdana" size="2">h意这不是一讨论支持或反对使用<abbr>XHTML</abbr>的文章。我只是写下我所知道的潜在的易犯错误Qƈ且让你自己来军_自己的选择Q?abbr>HTML</abbr> 4.01Qؓ所有浏览器伺服?code>text/html</code>?abbr>XHTML</abbr> 1.0或者ؓ能够处理其的览器伺服ؓ<code>application/xhtml+xml</code>而其他浏览器则伺服ؓ<code>text/html</code>?abbr>XHTML</abbr> 1.0。否则有些东西会完全不一栗?/font> </p> <p class="entry-more"> <font face="Verdana" size="2">只有在问题发生的时候,我才有机会去了解和认识这些东ѝ有些情况下我必花很多旉来查N题和求助于其他hQ来L一个解x案。但我在其中学到不少东西Q我会把我已l?abbr>XHTML</abbr>后应该知道的都告诉你?/font> </p> <p class="entry-more"> <font face="Verdana" size="2">注意我这里提及的问题只会发生在能正确处理<code>application/xhtml+xml</code><acronym title="Multipart Internet Mail Extension">MIME</acronym>cd的用户代理中Q而因?abbr>XHTML</abbr>被作?abbr>XML</abbr>。这也可能是q里不提?abbr>XHTML</abbr>的早期用的原因——很有Z用这L览器,所以几乎不会有人因只伺服ؓ<code>text/html</code>?abbr>XHTML</abbr>所烦忧?/font> </p> <p class="entry-more"> <font face="Verdana" size="2">今天Q实际上?abbr>XHTML</abbr>伺服?code>application/xhtml+xml</code>正慢慢变得^常。我所知道的理由有两个Q?/font> </p> <div class="entry-more"> <ol> <li class="dntg"> <font face="Verdana" size="2">使用FirefoxQMozillaQOperaQSafari和其他兼?abbr>XHTML</abbr>览器的人数增加了很多,所以你不再仅仅己和伙伴q样做。嗯。或怽p样做Q当媄响更多h?/font> </li> <li class="dntg"> <font face="Verdana" size="2">在web开发者之_?abbr>XHTML</abbr>的真正面目是什么的觉醒来多了。?abbr>XHTML</abbr>已经有多ơ多时的热烈的讨论,其是伺服ؓ<code>text/html</code>的时候。如果你参与了Q何一ơ讨论,你知道我在说什么?/font> </li> </ol> </div> <p> <font face="Verdana" size="2">假如你,像我Q决定实现某些类型的content negotiation和在传?abbr>XHTML</abbr>的时候用正的媒体cdQ你需要知道什么能Q和)在你发布的文?中发生,q且知道怎样避免问题的发生。对于对content negotiation同进行content negotiation的脚本例子有兴趣的读者,我推荐你阅读</font> <a > <font face="Verdana" size="2">Content Negotiation</font> </a> <font face="Verdana" size="2">?/font> <a > <font face="Verdana" size="2">Serving up XHTML with the correct MIME type</font> </a> <font face="Verdana" size="2">。还有很多这U类型的文章Q但q是我读到的最_ֽ的两?/font> </p> <p> <font face="Verdana" size="2">每一个基本的教程都有一?abbr>HTML</abbr>?abbr>XHTML</abbr>的明昑֌别:元素和属性名字用小写,属性值总要用引受不要用简化属性,保所有的元素都有l束标签和没有不正确的嵌套等{。但是,?abbr>XHTML</abbr>伺服?code>application/xhtml+xml</code>时还需要知道更多东ѝ?/font> </p> <p> <strong class="dntg"> <font face="Verdana" size="2">良好的结构是必须?/font> </strong> </p> <p> <font face="Verdana" size="2">文<strong class="dntg">必须</strong>是良好的l构Qwell-formedQ的<abbr>XML</abbr>Q跟合法的(validQ?abbr>XHTML</abbr>不必然相同)。就是必,不是可能?/font> </p> <p> <font face="Verdana" size="2">如果文l构不好Q符合标准的览器(当前我知道MozillaQFirefoxQNetscapeQCaminoQOperaQSafari和OmniWeb——相当多的浏览器除了IEQ将会显C错误信息ƈ且以某种方式中止处理文?/font> </p> <p> <font face="Verdana" size="2">此外Q这q意味着不再使用未编码的"&"受?/font> </p> <p> <strong class="dntg"> <font face="Verdana" size="2">XML声明可能是必ȝ</font> </strong> </p> <p> <font face="Verdana" size="2">如果要用UTF-8或者UTF-16以外的变法,必须要XML声明Q除非HTTP头已l提供编码?/font> </p> <p> <font face="Verdana"> <font size="2">在HTTP头中是否要指定字W编码有些模p,<cite><a >Architecture of the World Wide Web, Volume One: Media Types for XML</a></cite>q样写的Q?q>M上,不应该在协议头ؓXML数据指定字符~码Q因为数据本w已描述?/q></font> </font> </p> <p> <font face="Verdana" size="2">另一斚wQ?cite><a ><abbr>XHTML</abbr> 1.0, Second Edition: Character Encoding</a></cite>写到Q?/font> </p> <p> <q> <font face="Verdana" size="2">Z让文?使用指定的字W编码,最好的办法是保证web服务器发送正的头?/font> </q> </p> <p> <font face="Verdana" size="2">是_在XML声明中指定字W编码是好的习惯Q?/font> </p> <p> <code> <font face="Verdana" size="2"><?xml version="1.0" encoding="iso-8859-1"?></font> </code> </p> <p> <strong class="dntg"> <font face="Verdana" size="2">只有五个实体是安全的</font> </strong> </p> <p> <font face="Verdana" size="2">只有五个预定义的实体Q?code>&lt;</code>, <code>&gt;</code>, <code>&amp;</code>, <code>&quot;</code>, ?code>&apos;</code>Q的支持是有保证的。其他的可能完全被忽略或者直接输出。比如,如果<abbr>XHTML</abbr>文包含?code>&nbsp;</code>或?code>&rdquo;</code>的实体,Safari会直接地输出。Opera反而选择忽略未知的实体,同时Mozila家族会认得这些实体ƈ且就像HTML?q cite="//www.mozilla.org/docs/web-developer/faq.html#xhtmldiff">“如果文?引用公共的映浏览器?abbr title="Document Type Definition">DTD</abbr>目录中的标识Wƈ且没有单独声明的文?/q>来处理?/font> </p> <p> <font face="Verdana" size="2">使用UTF-8字符~码是最受推荐的Q让你(几乎Q可以用你需要键入文?的Q意字W,不需要实体或者字W编受如果你不能或不愿用UTF-8Q数字式的字W编h可以支持和安全用的?/font> </p> <p> <strong class="dntg"> <font face="Verdana" size="2">SGML式注释的内容可能会被忽略</font> </strong> </p> <p> <font face="Verdana" size="2">SGML注释Q?abbr>HTML</abbr>风格注释Q?<code><!-- 注释 --></code>Q可能会Qƈ且会Q被览器当作注释,q是在<code>script</code>或?code>style</code>元素内部使用?/font> </p> <p> <font face="Verdana" size="2">?abbr>HTML</abbr>中,普遍地把<code>script</code>?code>style</code>的内容装入注释中Qؓ的是在不认识<code>script</code>?code>style</code>元素的浏览器中隐藏他们,q且在页面上把其内容生成q白文本?/font> </p> <p> <font face="Verdana" size="2">?abbr>XHTML</abbr>中,q样做会引v览器忽略掉注释里的M内容?/font> </p> <p> <font face="Verdana" size="2">在老的览器中隐藏<code>script</code>?code>style</code>的习惯可以追溯到1990q代中期。我的经验是Q有如此表现的浏览器是十分罕见的Q所以你可以安全地忽略它们,q且停止在脚本和样式中装入SGML式注释,q你用的是HTML?/font> </p> <p> <strong class="dntg"> <font face="Verdana" size="2">脚本和样式元素的内容也被当作XML</font> </strong> </p> <p> <font face="Verdana" size="2">样式和脚本元素是PCDATAQparsed character dataQ解析字W数据)块,不是CDATAQcharacter dataQ字W数据)块。因此,在其内看h像XML的Q何东襉K会被当作XML来解析,q且会引发错误除非是良构的?/font> </p> <p> <font face="Verdana" size="2">Z?code>script</code>?code>style</code>块中使用<?amp;或?-Q你需要用</font> <a > <font face="Verdana" size="2">CDATA </font> </a> <font face="Verdana" size="2">Q?br /><br /></font> </p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"> <img id="Codehighlighter1_31_49_Open_Image" onclick="this.style.display='none'; Codehighlighter1_31_49_Open_Text.style.display='none'; Codehighlighter1_31_49_Closed_Image.style.display='inline'; Codehighlighter1_31_49_Closed_Text.style.display='inline';" src="//www.355548.live/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /> <img id="Codehighlighter1_31_49_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_31_49_Closed_Text.style.display='none'; Codehighlighter1_31_49_Open_Image.style.display='inline'; Codehighlighter1_31_49_Open_Text.style.display='inline';" src="//www.355548.live/images/OutliningIndicators/ContractedBlock.gif" align="top" /> <span style="COLOR: #0000ff"><</span> <span style="COLOR: #800000">script </span> <span style="COLOR: #ff0000">type</span> <span style="COLOR: #0000ff">="text/javascript"</span> <span style="COLOR: #0000ff">></span> <span id="Codehighlighter1_31_49_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"> <img src="//www.355548.live/images/dot.gif" /> </span> <span id="Codehighlighter1_31_49_Open_Text"> <span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> <br /> <img src="//www.355548.live/images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><!</span> <span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">[CDATA[<br /><img src="//www.355548.live/images/OutliningIndicators/InBlock.gif" align="top" /><img src="//www.355548.live/images/dot.gif" /><br /><img src="//www.355548.live/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />]]</span> <span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">></span> <span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> <br /> <img src="//www.355548.live/images/OutliningIndicators/None.gif" align="top" /> </span> </span> <span style="COLOR: #0000ff"></</span> <span style="COLOR: #800000">script</span> <span style="COLOR: #0000ff">></span> </div> <p> <font face="Verdana" size="2">在CDATA里,你可以Q何顺序的字符Q它们不会被当作XML来解析(除了l束CDATA部分]]>Q?/font> </p> <p> <font face="Verdana" size="2">需要以<code>text/html</code>发送的文中,CDATA部分的v始和l束标签需要注释掉Q以便在不能处理CDATA部分的浏览器中隐藏:<br /></font> </p> <p> <font face="Verdana" size="2"> </font> </p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"> <img id="Codehighlighter1_31_55_Open_Image" onclick="this.style.display='none'; Codehighlighter1_31_55_Open_Text.style.display='none'; Codehighlighter1_31_55_Closed_Image.style.display='inline'; Codehighlighter1_31_55_Closed_Text.style.display='inline';" src="//www.355548.live/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /> <img id="Codehighlighter1_31_55_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_31_55_Closed_Text.style.display='none'; Codehighlighter1_31_55_Open_Image.style.display='inline'; Codehighlighter1_31_55_Open_Text.style.display='inline';" src="//www.355548.live/images/OutliningIndicators/ContractedBlock.gif" align="top" /> <span style="COLOR: #0000ff"><</span> <span style="COLOR: #800000">script </span> <span style="COLOR: #ff0000">type</span> <span style="COLOR: #0000ff">="text/javascript"</span> <span style="COLOR: #0000ff">></span> <span id="Codehighlighter1_31_55_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"> <img src="//www.355548.live/images/dot.gif" /> </span> <span id="Codehighlighter1_31_55_Open_Text"> <span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> <br /> <img src="//www.355548.live/images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span> <span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"> <![CDATA[</span> <span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"> <br /> <img src="//www.355548.live/images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> <img src="//www.355548.live/images/dot.gif" /> <br /> <img src="//www.355548.live/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /> </span> <span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span> <span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"> ]]></span> <span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"> <br /> <img src="//www.355548.live/images/OutliningIndicators/None.gif" align="top" /> </span> </span> <span style="COLOR: #0000ff"></</span> <span style="COLOR: #800000">script</span> <span style="COLOR: #0000ff">></span> <span style="COLOR: #000000"> <br /> <img id="Codehighlighter1_89_119_Open_Image" onclick="this.style.display='none'; Codehighlighter1_89_119_Open_Text.style.display='none'; Codehighlighter1_89_119_Closed_Image.style.display='inline'; Codehighlighter1_89_119_Closed_Text.style.display='inline';" src="//www.355548.live/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /> <img id="Codehighlighter1_89_119_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_89_119_Closed_Text.style.display='none'; Codehighlighter1_89_119_Open_Image.style.display='inline'; Codehighlighter1_89_119_Open_Text.style.display='inline';" src="//www.355548.live/images/OutliningIndicators/ContractedBlock.gif" align="top" /> </span> <span style="COLOR: #0000ff"><</span> <span style="COLOR: #800000">style </span> <span style="COLOR: #ff0000">type</span> <span style="COLOR: #0000ff">="text/css"</span> <span style="COLOR: #0000ff">></span> <span id="Codehighlighter1_89_119_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"> <img src="//www.355548.live/images/dot.gif" /> </span> <span id="Codehighlighter1_89_119_Open_Text"> <span style="COLOR: #800000; BACKGROUND-COLOR: #f5f5f5"> <br /> <img id="Codehighlighter1_90_104_Open_Image" onclick="this.style.display='none'; Codehighlighter1_90_104_Open_Text.style.display='none'; Codehighlighter1_90_104_Closed_Image.style.display='inline'; Codehighlighter1_90_104_Closed_Text.style.display='inline';" src="//www.355548.live/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /> <img id="Codehighlighter1_90_104_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_90_104_Closed_Text.style.display='none'; Codehighlighter1_90_104_Open_Image.style.display='inline'; Codehighlighter1_90_104_Open_Text.style.display='inline';" src="//www.355548.live/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /> </span> <span id="Codehighlighter1_90_104_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span> <span id="Codehighlighter1_90_104_Open_Text"> <span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">/*</span> <span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"> <![CDATA[ </span> <span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">*/</span> </span> <span style="COLOR: #800000; BACKGROUND-COLOR: #f5f5f5"> <br /> <img src="//www.355548.live/images/OutliningIndicators/InBlock.gif" align="top" /> <img src="//www.355548.live/images/dot.gif" /> <br /> <img id="Codehighlighter1_110_118_Open_Image" onclick="this.style.display='none'; Codehighlighter1_110_118_Open_Text.style.display='none'; Codehighlighter1_110_118_Closed_Image.style.display='inline'; Codehighlighter1_110_118_Closed_Text.style.display='inline';" src="//www.355548.live/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /> <img id="Codehighlighter1_110_118_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_110_118_Closed_Text.style.display='none'; Codehighlighter1_110_118_Open_Image.style.display='inline'; Codehighlighter1_110_118_Open_Text.style.display='inline';" src="//www.355548.live/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /> </span> <span id="Codehighlighter1_110_118_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span> <span id="Codehighlighter1_110_118_Open_Text"> <span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">/*</span> <span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"> ]]> </span> <span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">*/</span> </span> <span style="COLOR: #800000; BACKGROUND-COLOR: #f5f5f5"> <br /> <img src="//www.355548.live/images/OutliningIndicators/None.gif" align="top" /> </span> </span> <span style="COLOR: #0000ff"></</span> <span style="COLOR: #800000">style</span> <span style="COLOR: #0000ff">></span> </div> <p>如果要确保很老的览器隐藏CDATA部分Q需要用更为复杂的ҎQ像?cite>Ian Hickson</cite>?a ><font face="Verdana" size="2">Sending <abbr>XHTML</abbr> as text/html Considered Harmful</font></a><font face="Verdana" size="2">中描q的那样Q?/font></p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"> <img id="Codehighlighter1_31_72_Open_Image" onclick="this.style.display='none'; Codehighlighter1_31_72_Open_Text.style.display='none'; Codehighlighter1_31_72_Closed_Image.style.display='inline'; Codehighlighter1_31_72_Closed_Text.style.display='inline';" src="//www.355548.live/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /> <img id="Codehighlighter1_31_72_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_31_72_Closed_Text.style.display='none'; Codehighlighter1_31_72_Open_Image.style.display='inline'; Codehighlighter1_31_72_Open_Text.style.display='inline';" src="//www.355548.live/images/OutliningIndicators/ContractedBlock.gif" align="top" /> <span style="COLOR: #0000ff"><</span> <span style="COLOR: #800000">script </span> <span style="COLOR: #ff0000">type</span> <span style="COLOR: #0000ff">="text/javascript"</span> <span style="COLOR: #0000ff">></span> <span id="Codehighlighter1_31_72_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"> <img src="//www.355548.live/images/dot.gif" /> </span> <span id="Codehighlighter1_31_72_Open_Text"> <span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> <br /> <img src="//www.355548.live/images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><!--</span> <span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span> <span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">--><![CDATA[//><!--</span> <span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"> <br /> <img src="//www.355548.live/images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> <img src="//www.355548.live/images/dot.gif" /> <br /> <img src="//www.355548.live/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /> </span> <span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span> <span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">--><!]]></span> <span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"> <br /> <img src="//www.355548.live/images/OutliningIndicators/None.gif" align="top" /> </span> </span> <span style="COLOR: #0000ff"></</span> <span style="COLOR: #800000">script</span> <span style="COLOR: #0000ff">></span> <span style="COLOR: #000000"> <br /> <img id="Codehighlighter1_106_149_Open_Image" onclick="this.style.display='none'; Codehighlighter1_106_149_Open_Text.style.display='none'; Codehighlighter1_106_149_Closed_Image.style.display='inline'; Codehighlighter1_106_149_Closed_Text.style.display='inline';" src="//www.355548.live/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /> <img id="Codehighlighter1_106_149_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_106_149_Closed_Text.style.display='none'; Codehighlighter1_106_149_Open_Image.style.display='inline'; Codehighlighter1_106_149_Open_Text.style.display='inline';" src="//www.355548.live/images/OutliningIndicators/ContractedBlock.gif" align="top" /> </span> <span style="COLOR: #0000ff"><</span> <span style="COLOR: #800000">style </span> <span style="COLOR: #ff0000">type</span> <span style="COLOR: #0000ff">="text/css"</span> <span style="COLOR: #0000ff">></span> <span id="Codehighlighter1_106_149_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"> <img src="//www.355548.live/images/dot.gif" /> </span> <span id="Codehighlighter1_106_149_Open_Text"> <span style="COLOR: #800000; BACKGROUND-COLOR: #f5f5f5"> <br /> <img id="Codehighlighter1_111_133_Open_Image" onclick="this.style.display='none'; Codehighlighter1_111_133_Open_Text.style.display='none'; Codehighlighter1_111_133_Closed_Image.style.display='inline'; Codehighlighter1_111_133_Closed_Text.style.display='inline';" src="//www.355548.live/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /> <img id="Codehighlighter1_111_133_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_111_133_Closed_Text.style.display='none'; Codehighlighter1_111_133_Open_Image.style.display='inline'; Codehighlighter1_111_133_Open_Text.style.display='inline';" src="//www.355548.live/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /><!--</span> <span id="Codehighlighter1_111_133_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span> <span id="Codehighlighter1_111_133_Open_Text"> <span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">/*</span> <span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">--><![CDATA[/*><!--</span> <span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">*/</span> </span> <span style="COLOR: #800000; BACKGROUND-COLOR: #f5f5f5"> <br /> <img src="//www.355548.live/images/OutliningIndicators/InBlock.gif" align="top" /> <img src="//www.355548.live/images/dot.gif" /> <br /> <img id="Codehighlighter1_139_145_Open_Image" onclick="this.style.display='none'; Codehighlighter1_139_145_Open_Text.style.display='none'; Codehighlighter1_139_145_Closed_Image.style.display='inline'; Codehighlighter1_139_145_Closed_Text.style.display='inline';" src="//www.355548.live/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /> <img id="Codehighlighter1_139_145_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_139_145_Closed_Text.style.display='none'; Codehighlighter1_139_145_Open_Image.style.display='inline'; Codehighlighter1_139_145_Open_Text.style.display='inline';" src="//www.355548.live/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /> </span> <span id="Codehighlighter1_139_145_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span> <span id="Codehighlighter1_139_145_Open_Text"> <span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">/*</span> <span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">]]></span> <span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">*/</span> </span> <span style="COLOR: #800000; BACKGROUND-COLOR: #f5f5f5">--><br /><img src="//www.355548.live/images/OutliningIndicators/None.gif" align="top" /></span> </span> <span style="COLOR: #0000ff"></</span> <span style="COLOR: #800000">style</span> <span style="COLOR: #0000ff">></span> </div> <p> <font face="Verdana" size="2">一个更好的办法可能是在发?code>text/html</code>的文?前用content negotiation脚本来删除Q何CDATA部分?/font> </p> <p> <font face="Verdana" size="2">当然Q最聪明和安全的途径是把所有的CSS和JavaScript都移动到外部文g中,但不L现实的做法?/font> </p> <p> <strong class="dntg"> <font face="Verdana" size="2">没有会自动补全的元素</font> </strong> </p> <p> <font face="Verdana" size="2">?abbr>HTML</abbr>中,假如表格?code>tbody</code>元素漏写的话览器会自动补全Q?abbr>XHTML</abbr>不会。如果你没有清楚地添加tbodyQ它׃会出现。在~写CSS选择器和JavaScript的时候请铭记在心?/font> </p> <p> <strong class="dntg"> <font face="Verdana" size="2">用document.write~写的脚本不再工?/font> </strong> </p> <p> <font face="Verdana" size="2">?abbr>XHTML</abbr>中用JavaScriptQ?code>document.write</code>不会工作。Ian Hickson?/font> <a > <font face="Verdana" size="2">Why document.write() doesn’t work in XML</font> </a> <font face="Verdana" size="2">解释了原因。你需要?code>document.createElementNS()</code>代替。关于更多可以在</font> <a > <font face="Verdana" size="2">Experts Exchange中的论坛主题</font> </a> <font face="Verdana" size="2">中找到?/font> </p> <p> <font face="Verdana" size="2">q也是Google AdSense不在<abbr>XHTML</abbr>中工作的原因之一。那些希望以application/xhtml+xml伺服<abbr>XHTML</abbr>q且使用Googleq告的hQ这儿有一个解军_法:Simon Jessey?/font> <a > <font face="Verdana"> <font size="2">Making AdSense work with <abbr>XHTML</abbr></font> </font> </a> <font face="Verdana" size="2">。尽有炚w烦,但还是工作了Q我在这里也使用了)Q同时被Google所认可?/font> </p> <p> <strong class="dntg"> <font face="Verdana" size="2">引入样式元素</font> </strong> </p> <p> <font face="Verdana" size="2">?abbr>XHTML</abbr>中,Z兼容定义CSS规则的XMLҎQ你应该使用XML样式表声明(讉K </font> <a > <abbr> <font face="Verdana" size="2">XHTML</font> </abbr>1.0, Second Edition: Referencing Style Elements when serving as XML</a> <font face="Verdana" size="2">的XML样式表声明和</font> <a > <font face="Verdana" size="2">Associating Style Sheets with XML documents</font> </a> <font face="Verdana"> <font size="2">的xml-stylesheet处理说明Q。要载入外部CSS文gQ我们需要?code>style</code>元素Q同时应该用XML样式表声明来引入样式元素。ؓ此,使用id属性给<font face="Verdana"><code>style</code>元素一个分解的标识W,然后在XML样式表声明中引入该标识符Q?/font></font> </font> <font face="Verdana" size="2"> </font> </p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"> <img src="//www.355548.live/images/OutliningIndicators/None.gif" align="top" /> <span style="COLOR: #0000ff"><?</span> <span style="COLOR: #ff00ff">xml-stylesheet href="stylesheet1.css" type="text/css"</span> <span style="COLOR: #0000ff">?></span> <span style="COLOR: #000000"> <br /> <img src="//www.355548.live/images/OutliningIndicators/None.gif" align="top" /> </span> <span style="COLOR: #0000ff"><?</span> <span style="COLOR: #ff00ff">xml-stylesheet href="#stylesheet2"  type="text/css"</span> <span style="COLOR: #0000ff">?></span> <span style="COLOR: #000000"> <br /> <img src="//www.355548.live/images/OutliningIndicators/None.gif" align="top" /> </span> <span style="COLOR: #0000ff"><!</span> <span style="COLOR: #ff00ff">DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" <br /><img src="//www.355548.live/images/OutliningIndicators/None.gif" align="top" />"//www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"</span> <span style="COLOR: #0000ff">></span> <span style="COLOR: #000000"> <br /> <img src="//www.355548.live/images/OutliningIndicators/None.gif" align="top" /> </span> <span style="COLOR: #0000ff"><</span> <span style="COLOR: #800000">html </span> <span style="COLOR: #ff0000">xmlns</span> <span style="COLOR: #0000ff">="//www.w3.org/1999/xhtml"</span> <span style="COLOR: #ff0000"> xml:lang</span> <span style="COLOR: #0000ff">="en"</span> <span style="COLOR: #ff0000"> lang</span> <span style="COLOR: #0000ff">="en"</span> <span style="COLOR: #0000ff">></span> <span style="COLOR: #000000"> <br /> <img src="//www.355548.live/images/OutliningIndicators/None.gif" align="top" /> </span> <span style="COLOR: #0000ff"><</span> <span style="COLOR: #800000">head</span> <span style="COLOR: #0000ff">></span> <span style="COLOR: #000000"> <br /> <img src="//www.355548.live/images/OutliningIndicators/None.gif" align="top" /> </span> <span style="COLOR: #0000ff"><</span> <span style="COLOR: #800000">title</span> <span style="COLOR: #0000ff">></span> <span style="COLOR: #000000">XML stylesheet declaration</span> <span style="COLOR: #0000ff"></</span> <span style="COLOR: #800000">title</span> <span style="COLOR: #0000ff">></span> <span style="COLOR: #000000"> <br /> <img id="Codehighlighter1_382_409_Open_Image" onclick="this.style.display='none'; Codehighlighter1_382_409_Open_Text.style.display='none'; Codehighlighter1_382_409_Closed_Image.style.display='inline'; Codehighlighter1_382_409_Closed_Text.style.display='inline';" src="//www.355548.live/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /> <img id="Codehighlighter1_382_409_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_382_409_Closed_Text.style.display='none'; Codehighlighter1_382_409_Open_Image.style.display='inline'; Codehighlighter1_382_409_Open_Text.style.display='inline';" src="//www.355548.live/images/OutliningIndicators/ContractedBlock.gif" align="top" /> </span> <span style="COLOR: #0000ff"><</span> <span style="COLOR: #800000">style </span> <span style="COLOR: #ff0000">type</span> <span style="COLOR: #0000ff">="text/css"</span> <span style="COLOR: #ff0000"> id</span> <span style="COLOR: #0000ff">="stylesheet2"</span> <span style="COLOR: #0000ff">></span> <span id="Codehighlighter1_382_409_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"> <img src="//www.355548.live/images/dot.gif" /> </span> <span id="Codehighlighter1_382_409_Open_Text"> <span style="COLOR: #800000; BACKGROUND-COLOR: #f5f5f5"> <br /> <img src="//www.355548.live/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />@import "stylesheet2.css";<br /><img src="//www.355548.live/images/OutliningIndicators/None.gif" align="top" /></span> </span> <span style="COLOR: #0000ff"></</span> <span style="COLOR: #800000">style</span> <span style="COLOR: #0000ff">></span> <span style="COLOR: #000000"> <br /> <img src="//www.355548.live/images/OutliningIndicators/None.gif" align="top" /> </span> <span style="COLOR: #0000ff"></</span> <span style="COLOR: #800000">head</span> <span style="COLOR: #0000ff">></span> </div> <p> <font face="Verdana" size="2">我不知道在实际中I竟有多必要Qƈ且不使用XML样式表声明的话会有什么问题。或许有Z指点我的?/font> </p> <p> <strong class="dntg"> <font face="Verdana" size="2">CSS的应用规则有些不一?/font> </strong> </p> <p> <font face="Verdana" size="2">CSS应用?code>body</code>的性质QpropertyQƈ不应用到<abbr>XHTML</abbr>的整个文?。最值得注意的是应用背景颜色或者图片。在<abbr>HTML</abbr>中,应用?code>body</code>元素的背景将会覆盖整个页面。在<abbr>XHTML</abbr>中,你必d时样式化html。在Juicy Studio?/font> <a > <font face="Verdana" size="2">CSS body Element Test</font> </a> <font face="Verdana" size="2">中有q个行ؓ的演C?/font> </p> <p> <font face="Verdana" size="2">?abbr>XHTML</abbr>中作为CSS规则的元素和属性名字是大小写敏感的Q而且必须是小写的Q。避免问题最单的办法是,不管在HTMLQ?abbr>XHTML</abbr>q是CSS中所有东襉K保持写?/font> </p> <p> <strong class="dntg"> <font face="Verdana" size="2">有挑战,但不是不可能</font> </strong> </p> <p> <font face="Verdana" size="2">当我开始ؓ兼容的浏览器伺服<abbr>XHTML</abbr>?code>application/xhtml+xml</code>Ӟ在作出决定前假如我能d惌一L文章Q或许我的头痛可以减M。我甚至考虑使用<code>HTML 4.01 Strict</code>。虽然如此,我还是从l验中学C,而学习L一个好东西?/font> </p> <p> <font face="Verdana" size="2">正确C用真正的<abbr>XHTML</abbr>Q十分希望这文章能Z提供一些更有用的信息,q且可以为是否需要走q条路提供更多有Ҏ的决定?/font> </p> <p> <abbr> <font face="Verdana" size="2">HTML</font> </abbr>?abbr>XHTML</abbr>可能比我在这里提到的q有更多C同,所以在q里把你在?code>application/xhtml+xml</code>?abbr>XHTML</abbr>旉到的问题提出来,如果你知道Q何的错误或者忽略,务必告诉我?/p> <img src ="//www.355548.live/flyingis/aggbug/83430.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="//www.355548.live/flyingis/" target="_blank">Flyingis</a> 2006-11-25 12:04 <a href="//www.355548.live/flyingis/articles/83430.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java中文处理学习W记--Hello Unicode - 棒球比分大小怎么算|վ//www.355548.live/flyingis/articles/32461.htmlFlyingisFlyingisSat, 25 Feb 2006 15:52:00 GMT//www.355548.live/flyingis/articles/32461.html//www.355548.live/flyingis/comments/32461.html//www.355548.live/flyingis/articles/32461.html#Feedback0//www.355548.live/flyingis/comments/commentRss/32461.html//www.355548.live/flyingis/services/trackbacks/32461.html阅读全文

Flyingis 2006-02-25 23:52 发表评论
]]>
The differences between Linux distributions - 棒球比分大小怎么算|վ//www.355548.live/flyingis/articles/27575.htmlFlyingisFlyingisWed, 11 Jan 2006 05:32:00 GMT//www.355548.live/flyingis/articles/27575.html//www.355548.live/flyingis/comments/27575.html//www.355548.live/flyingis/articles/27575.html#Feedback0//www.355548.live/flyingis/comments/commentRss/27575.html//www.355548.live/flyingis/services/trackbacks/27575.htmlA lot of people have heard of GNU/Linux (more commonly referred to as just "Linux") and are having trouble finding out what the differences are between different versions -- or distributions -- that are available. This article will show how they differ, and how GNU/Linux differs from similar operating systems.

美国职业棒球比分:What Is GNU/Linux?

GNU/Linux is a modular operating system that looks and acts like a more intelligently programmed, up-to-date Unix. The term itself -- GNU/Linux -- is extremely vague and doesn't exist in the literal sense. You don't go to the store and buy GNU/Linux; instead you buy a software distribution (or distro for short) that uses GNU/Linux as its basis. So while you can't buy "Linux" at the store, you can buy SUSE Linux or Linspire.

Distributions can fundamentally differ in several ways:

  • Base operating system
  • Software management and updating
  • Hardware management
  • Desktop environment and theme
  • Proprietary extras

The sections below will cover each of these topics in depth. If there is one particular area that you are confused about, feel free to skip down to the appropriate section. The next topic will cover how GNU/Linux differs from Unix and other Unix-like operating systems.

BSD, Unix, OS X, Linux?

There are many Unix-like operating systems and derivatives. Which ones are which?

Category OSes Origin of code?
GNU GNU/Linux, GNU/HURD, GNU/Mach, GNU/BSD Free Software Foundation; kernels developed separately except HURD. The Linux kernel was originally written by Linus Torvalds, and is currently maintained by him.
BSD FreeBSD, OpenBSD, NetBSD, DesktopBSD, BSD/OS UC Berkeley, originally; each project has been developed separately since the early-mid 1990s, however.
Unix Solaris, AIX, IRIX, HP/UX, Tru64, UnixWare, OpenServer Bell Labs (AT&T) developed the original Unix code. UNIX is now a trademarked operating system certification program instead of an operating system, and no longer requires that a compliant OS contain AT&T Unix source code to achieve brand certification. Despite that, all of the extant Unix derivatives are compliant with at least one published UNIX standard.
Darwin Darwin, OS X Based on the NeXTSTEP operating system, which used the Mach kernel and some FreeBSD programs and networking code. OS X is developed from Darwin.
Minix Minix Originally written by Andrew Tanenbaum, but now mostly developed by a handful of others

GNU/Linux is only one possible combination of the GNU operating system with a separate kernel. GNU's own kernel is HURD, but it's been in development for a long time and is nowhere near ready for production. GNU/BSD and GNU/Mach exist, but more for experimental purposes than anything else. So in effect, GNU/Linux is the only GNU-based operating system that matters. Theoretically, you could use the operating system components from BSD and eliminate GNU entirely (or almost entirely) from GNU/Linux, but that would -- again -- be purely an academic pursuit.

Of the above-listed operating systems, only GNU/Linux has a variety of software distributions. The others are software distributions in themselves. The one exception is Solaris, which is based on code from the OpenSolaris project. There is at least one other OpenSolaris-based distribution aside from Solaris, and others are probably in development.

Most of these operating systems are similar in superficial ways. All are command line-based at heart, even if many of them default to graphical interfaces. Most of them share the majority of their terminal commands -- or have commands that have largely similar functionality and syntax -- so if you know one system very well, it is not difficult to learn a different one. GNU's userland utilities were improved replacements of Unix commands; BSD was originally developed from Unix source code, so its userland utilities started out as clones of Unix commands and have evolved from there. Some of these OSes can use the same software programs if properly configured. Some are restricted to specific hardware architectures, while others are extraordinarily versatile in terms of what computers they can operate on.

The amount of code- and program-sharing among all of these operating systems varies. All of them are guaranteed to have either BSD code integrated somewhere, or at least one GNU utility (usually the GNU Compiler Collection, the BASH terminal program, or the Emacs text editor, among many others) included by default.

Base operating system differences

Among GNU/Linux distributions, there can be many variances in the base operating system (kernel and userland utilities). Some have unique methods of managing startup scripts; others mimic BSD or Unix. You can know everything there is to know about creating and modifying init scripts on Red Hat Enterprise Linux, then be totally lost when trying to implement the same changes on Gentoo Linux.

Almost all distros make their own small, custom changes to the Linux kernel in order to accommodate other changes or additions that the distribution maintainers want to make. This makes each distro's kernel unique, and probably incompatible with other distributions. Commercial desktop GNU/Linux distros usually have extensively hacked kernels that support proprietary programs like Win4Lin, VMware, and proprietary hardware drivers.

GNU/Linux distributions are generally binary compatible with each other. That means that a program that will work on SUSE Linux will also work on Xandros and Linspire and any other distribution of the same generation and hardware architecture. Like all other operating systems, programs that are compiled for one architecture will not work on others. The only exception is 32-bit x86 binaries, which will work with most 64-bit AMD64 and Intel EM64T computers.

Software management and updating

Chances are, if you've selected the right GNU/Linux distribution for your needs, you won't have to add any extra software to it. If you do, most distros have software repositories that contain thousands of extra software packages that have been certified to work with your configuration. All you have to do is figure out which programs you want, select them from a list, and everything is installed for you. It's much like using Windows Update.

Also like Windows Update, all major GNU/Linux distributions come equipped with a software update framework. Unlike Windows Update, however, GNU/Linux updaters will find patches and bug fixes for all of the software on your computer -- not just the basic operating system. Each distribution has its own specialized update tools, but they are all generally easy to use.

On a more basic level, GNU/Linux distributions install software in one of two ways: by compiling from source code, or -- more commonly -- by installing precompiled binary packages.

Source-based distributions like Gentoo and Arch still have a software management framework like the big fancy commercial distros, but you have extra options. You can add in compiler flags to make programs a little faster or use less memory, or you can build applications with hooks to other programs so that your software is more interoperable. Binary distributions make guesses as to what your needs will be, and try to cover all of the bases by compiling everything in. In the real world, you're not going to notice much of a difference by adding compiler optimizations and other options, but if you like tinkering with your computer, you'll enjoy the experience.

Source-based distros will take a lot longer to manage because it takes time to compile large programs. You can use binary packages to get started, but updates are applied by compiling from source code. A binary installation of the KDE desktop environment takes only slightly longer than the time consumed downloading the binaries from the Internet, but compiling the full KDE system from source can literally take days. The same can be said of such behemoths as OpenOffice.org, GNOME, and Mozilla.

Binary distributions almost exclusively use two package formats for programs: RPM (a recursive acronym for RPM Package Manager), and DEB (short for Debian, a GNU/Linux distribution that is commonly used as a basis for others). In the old days, you may have had to go searching for RPMs or DEBs of programs that you wanted. In this day and age, however, you use your package manager to find and retrieve them for you. In the event that you must install one of these packages by hand, there are graphical alternatives to the standard command line tools for installing them. There are even tools available to use DEB packages on RPM-based distros, and vice-versa. Usually programs are packaged in both formats, though.

Red Hat (and Fedora Core), SUSE, and Mandriva are three well-known distributions that use RPM packages. Linspire, Xandros, Debian, Ubuntu, and Mepis are some of the most popular DEB-based distributions. Both package formats are heavily entrenched in these and other distributions; neither seeks to replace the other.

Occasionally you might see someone on a message forum or mailing list complaining about RPMs and "dependency hell." This is because individual packages usually depend on other packages, and that means tracking down several RPMs to install one program, then doing some command line kung-fu to install them in the right order. Again, this is the old way of doing things -- nowadays you let your package manager do the work for you.

Popular package managers include:

Hardware management

Commercial GNU/Linux distributions include software that automatically detects and installs the proper drivers for all of your computer hardware and peripherals. Usually it works perfectly without any user intervention necessary. Sometimes it encounters unsupported hardware, or hardware that requires a newer kernel or driver. Some distros share the same autodetection and hardware management code, some have a totally unique hardware management framework.

Non-commercial distros are usually good at detecting hardware, but never contain proprietary drivers for ATI and Nvidia video cards, some kinds of wireless network chips, RAID cards, and video capture cards. Drivers for these devices require licensing and distribution agreements that non-commercial distribution developers are generally unwilling to negotiate, agree to, or pay for. This means that if you want to take full advantage of your 3D graphics card, you will have to download and install a proprietary video driver. A simple Google search will usually yield installation instructions. Again, this is best done by adding software repository sources to your package manager instead of installing them by hand.

Desktop environments and themes

The two primary desktop environments in the world of GNU/Linux are GNOME and KDE. Most distros support both, and usually default to one or the other. There are also window managers, which don't have the large number of integrated programs, but are usually considered to be more responsive and efficient on slower computers. Which one you should use is entirely a matter of preference.

Aside from desktop environment, each distribution has its own special color, icon, login, desktop, and menu theme. You can change the theme -- there are several dozen good themes available, and more coming out every week -- so don't let the default look and feel of the desktop discourage you. You can make KDE look almost exactly like Windows XP, and you can make GNOME look almost exactly like Apple OS X. Window managers are even more customizable, but often require you to edit configuration files by hand.

Proprietary extras

In addition to the proprietary hardware drivers mentioned previously, there are also proprietary software extras that are an important complement to the desktop computing experience. Most people will, at one time or another, need to access a PDF, Java applet, Flash animation, or video file on the World Wide Web. And when they need to see those files, they need browser plugins to do it. Unfortunately, all of the most functional plugins for these technologies are not free-as-in-rights, and won't be included with the majority of GNU/Linux distributions. If you want them, you have to either choose a commercial distro (there are some recommendations in a section below), or add them by hand. As I've said before, adding them by hand is not necessarily difficult, but it will take some reading and research to get everything working perfectly. If you are not prepared to do this, do not choose a GNU/Linux distro that does not include these extras.

Recommendations

If you don't know what you're doing, don't choose distributions that require a lot of legwork to configure basic services or install extra software. If you are new to GNU/Linux and want a great desktop experience, I recommend trying these distros (listed in no specific order):

All of these distros will cost you something -- usually under US $100. A lot of experienced GNU/Linux enthusiasts will recommend non-commercial distributions like Ubuntu, Fedora Core, or Debian. These are good distros and are available free of charge, but require that you add proprietary video drivers and Web browser plugins by hand, and don't have the same kind of automatic hardware management that the four distros I listed above have. That means that you could end up rather frustrated by your GNU/Linux experience. Also stay away from the open source edition of SUSE Linux -- that is also missing many of the proprietary extras that you're used to in Windows or OS X (the commercial version of SUSE does have plugins for Java, Flash, and PDF). It's not tough to add them if you follow this guide, but many people are not prepared to get that technical with their software.

If you're looking for a distro that is more suited to server use, try these:

Again, people will argue that other distros or Unix-like OSes are better, but the above-mentioned distributions are easy to install, configure, and manage, and come with extensive documentation and commercial support. You will have a much easier time with them, and you're better off going with one of these if you're new to GNU/Linux or Unix-like operating systems in general. You can make virtually any GNU/Linux distribution into a server of any kind; it's just a matter of how much work you have to do to prepare and maintain it. If you don't want to do a lot of work, choose one of the above distros.

Non-commercial desktop distributions of note include:

If you would prefer more of a challenge, as either a server or a desktop OS, try these distros:

Lastly, if you would like to see what a GNU/Linux desktop can look like, you can download Knoppix, a distro that runs entirely from a CD. You write the ISO file to a blank CD-R disc, then restart your computer with the disc in the CD drive. You'll run a whole distribution right from the CD. When you're done playing around, just select the Shutdown menu option, remove the CD from the drive, and restart -- nothing will be written to your hard drive.

Copyright 2006 Jem Matzan.
link: //www.softwareinreview.com/cms/content/view/26/1/



Flyingis 2006-01-11 13:32 发表评论
]]>
目l理面试指南[转蝲] - 棒球比分大小怎么算|վ//www.355548.live/flyingis/articles/24062.htmlFlyingisFlyingisThu, 15 Dec 2005 08:12:00 GMT//www.355548.live/flyingis/articles/24062.html//www.355548.live/flyingis/comments/24062.html//www.355548.live/flyingis/articles/24062.html#Feedback0//www.355548.live/flyingis/comments/commentRss/24062.html//www.355548.live/flyingis/services/trackbacks/24062.html

    准备面试的方?br />

  书、杂志、组l和研讨?

  本文的参考目录中列出了许多能得到有效的管理实践信息的地方。去L理斚w的书c,包括技术管理和商业理两个斚w。阅ȝ理大师,例如Q?span lang="EN-US">Peter DruckerQ?span lang="EN-US">C. A. Gallagher?span lang="EN-US">A. Maslow写的书和文章。他们提供了在Q何领域都使用的管理知识。信息管理大师例如:Tom DeMarco, M. Page-Jones, Ed Yourdon, L. L. Constantine{等提供了许多条理清楚的、经q实跉|验的Ҏ?span lang="EN-US">

  如果你要同用户一起工作,要阅M本有关领域的专业书籍。了解业务比了解技术环境更重要。事实上Q让用户参加面试q程来流行。要准备得更充分Q可以买一本《哈佛商业评论》(Harvard Business ReviewQ这是一本很好的杂志Q适用于商业读者同样也适用?span lang="EN-US">IT理。许?span lang="EN-US">IT杂志例如?span lang="EN-US">CIO杂志》及在参考书目中列出的书目中都有有关目理和h员管理方面的文章。这些杂志中q包括概括或详细的技术性文章?span lang="EN-US">

  可以和美国管理协会(AMAQ和其他商业l织取得联系Q获取管理信息。值得一提的是,卡奈基梅隆大学的软g工程研究所Q?span lang="EN-US">SEIQ在90q代提出的管理Y件过E,最新标准版本ؓSEI9000?span lang="EN-US">

  许多技术研讨会Q例如数字咨询和技术{换研I所Q?span lang="EN-US">Digital Consulting and Technology Transfer InstituteQ有许多不同领域的项目管理和技术研讨会。另一U途径是通过你所在的l织。他们也怼提供有关授权、谈判和們֐技巧等的课E,所有这些都有助于你准备目理?span lang="EN-US">

  你应该了解的软g

  掌握一U项目管理工兗例如微软的Project?span lang="EN-US">Applied Business Technology/Project Workbench。所有这些工具都有许多有效的目理Ҏ和术语字典?span lang="EN-US">

  除了上述提到的工具外Q还有一个越来越行的工具可以针对不同技术环境中的项目在计划~制、费用估和理Ҏ上提供帮助。这个工具就?span lang="EN-US">LBMS/Process EngineerQ具?span lang="EN-US">CASE界面的工兗?span lang="EN-US">

  如果你用过此类工具Q把q些内容列在你的历中。当Ӟ不仅要掌握工P你还必须h坚实的基知识和项目管理方法?span lang="EN-US">
  一个项目经理必智多谋。通过emailq行通信已经取代了电话和邮寄备忘录。许多公司有自己的系l,q有许多公司使用Lotus Notes。无论是用何U品,必须h如下性能Q?

  · 能够与处于不同地理位|的人取得联p?
  · 能够有效地通知团队Q包括供应商Q范_q度的变?
  · 能很快地解决问?span lang="EN-US">

  要记住h们工作方式的差别Q性格内向的h更愿意通过email沟通。这样他们可以有旉思考问题的{案而不是在会议上立d出答案?span lang="EN-US">
  作ؓ一个项目经理,你可能会作报告(reportQ和介绍(presentation)。因此,需要掌握字处理软g和图形Y件。这些Y件在市场上都可以买到。在你的历上列出你会使用的此cY件?span lang="EN-US">

  L思想
  M行业都有好的目l理和差的项目经理。你可以从两U项目经理n上得到启C(什么是应该做的而什么是应该避免的)。如有可能,问一些优U的项目经理他们是如何做的。如果你对你的职业发展道路还不太清楚Q你可以拿一刚刚读q的有关文章Q问问这些项目经理对此文的观炏V?span lang="EN-US">

  一个成功的目l理的标志有拥有一支气氛融z的U极的团队,上层领导的信d用户的尊重。一致的行动是另一个标志,它是衡量领导能力的基。优U的项目经理应该了解每个雇员的长处和短处。他们认为失败ƈ不是~点Q而是一ơ学习机会?span lang="EN-US">

  目l理必须建立一套专业标准。但按照一套完的例子来进行管理却是一个失败的目l理。这虽然说明他们的多才多艺,但更体现了他们在授权和沟通方面的能力不。原来想积极工作的员工变得消极的做法可以毁了项目经理。你在技术方面的能力应该用于指导和培训员工。如果你参与~程或设计,你不是在开发你的团队,也不是在做项目经理?span lang="EN-US">

  目计划技?

  以下是在面试中通常会提到的有关目计划~制的术语和图表。大多项目计划编制工具都会用到一些或全部术语和功能。你应该复习一下有用的一个或多个目理工具Q这有助于你q一步熟悉常用的技术和功能?span lang="EN-US">

  图表cdQ?span lang="EN-US">

  甘特图:用图形,特别是条形图Q描q项目进度的图表。每一个条形符号代表不同的意义。例如:关键d的条形符号及/或颜色可能与非关键Q务的不同。概要Q务(zd或阶D)的符号可能于其他d不同?span lang="EN-US">

  Pert图:用流E图来表C所有Q务的现行依赖关系?span lang="EN-US">PERT的意思是计划评h与审查技术,是一U网l图?span lang="EN-US">

  d列表Q文?span lang="EN-US">/U向地列出项目计划。通常臛_应包括以下栏目:d~号QQ务名Uͼ开始日期,l束日期Q持l时间和工作效率?span lang="EN-US">

  工作分解l构Q项目Q务和/或活动的l构图?span lang="EN-US">

  关键路径Q是贯穿整个目的一条\径,表明在限定的旉成功完成目涉及的各d间的依赖关系。调整关键\径上d的时间进度将会媄响整个项目的交付旉。关键\径方法(CRMQ图是一U网l图Q用于项目的q度控制和协调项目的zd和事件?span lang="EN-US">

  可交付成果:证明一个或多个d完成的有形事物。例如:逻辑数据模型?span lang="EN-US">

  依赖关系QQ务间的联pM影响一个或多个d的开始时间。例如:在没有弄清需求前Q不能开始编E?span lang="EN-US">

  JAD/化方法:联合应用E序设计(化方法是90q代的术?span lang="EN-US">)。一套面向结果的,大脑风暴式的,有一个共同的商业目的信息集合/分n会议。该Ҏ?span lang="EN-US">IBM公司?span lang="EN-US">1970q开发的Q由固定的,l构化的q程l成Qƈ在一个有l验的实施者的领导下进行。简化方法去掉了一些结?span lang="EN-US">,然?span lang="EN-US">,仍要求所有各斚w必须参加所有的会议和一个有建模技术的记录员作记录。参加者们包括目团队,(与用?span lang="EN-US">)和行政官员。ؓ会议的成功,每个人必ȝ解和同意目的q且快解决他们的Q务?span lang="EN-US">

  延迟Q是d的结束时间和与其相关的Q务的开始时间之间的延迟旉。这允许dl束旉和开始时间的重叠和拉ѝ?span lang="EN-US">

  Ҏ论:一U明的、有l织的、可重复的、结构化的方?span lang="EN-US">/技?Q以完成一个通用的目的。这些技术或指南定义步骤QQ务,角色Q目的和可交付成果,q些是Q何系l的成功的实现所必须的?span lang="EN-US">

  衡量标准Q一个一致ƈ且可重复的测量一个项目的大小和复杂性的Ҏ。标准准备在整个目生命期中使用许多Ҏ中的一个。今天公怋用的行Ҏ是:
  a) 功能点(Allan AbrechtQ?span lang="EN-US">
  b) 重要事g (Tom DeMarco)
  c) 加权q_
  d) 代码?span lang="EN-US">

  里程:在项目生命期的一个重要的事g的结束。通常一个里E碑是在关键的\径上的一Ҏ动。它不必是一个有形的可交付品例如一个逻辑数据模型Q但可以是用户对工作成果的肯定?span lang="EN-US">

  阶段/zd/摘要标题Q概要的概c不是所有的目理工具都强调特定的阶段和摘要一U的格式Q然而许多标准的开发方法用q些术语q行工作分解?span lang="EN-US">

  RADQ快速的应用开?span lang="EN-US">(如果不正地使用会有破坏作用)。通过应用E序生成器,建模和快速原型工L使用加快开发工作的一条途径。最大的改进是在整个开发生命周期中加入快速原型。这在编码前了解清楚用户需求提供优U的工兗?span lang="EN-US">

  资源限制Q一个基于可得到的资源的数量Q每个资源的技巧的水^Q资源工作时间表而开发的计划和时间表?span lang="EN-US">

  范围变更Q对原先设计要求的功能增加而没有对人员Q时间或费用的媄响进行评估。范围变更可能是一个商业用h一个热心的E序员提出的。两者媄响系l的交付q且不能被估计,分析Q或记录?span lang="EN-US">

  面试中的表达的要?span lang="EN-US">(q问题没被?span lang="EN-US">)

  如果你没有管理经?

  对于那些从未正式理q一个项目的Q可能是非正式地理q的人。在那些情况中,当强调他们的技术背景优势的同时需要明说明他们没认识C们已掌握的那些技巧。你可以提及你是怎么不得不在没有授权的情况下领导一个大型的开发团队进行工作的。需要强调的是没有一个稳固的技术的基础,你的工程d和估计的军_可能被过分简单化。当你是目的领ghQ你需要提供技术的q诏避免团队负荷工作?span lang="EN-US">

  如果你的技术技巧在未来的技术的环境中是落伍或不同的

  你不需要理解技术环境的内部是如何工作的Q但是你应该理解一般的概念和特征决定环境的能力和弱炏V许多项目管理技巧是出技术范围的。因?span lang="EN-US">,如果你的技术技巧是落伍的,你仍然能你在技术上能负独立责Q。提及你理的应用类型和及其商业作用。提及团队是如何有效地完成目标的。强调你的管理哲学。提CU,与你C同等的hQ你的用户和部下是如何评价你的管理能力的Q记住提起Q何你掌握的商务领域知识。在面试时应该将你对你的技能落后的恐惧抛在一旁。一旦你拥有q个工作Q你能向公司内的专家询问。在所有组l中都有各方面专家的非正式的机构。你可以到处打听一下,把他们找出来?span lang="EN-US">

  问面试官的问题:

  即你通过面试Q得Cq个职位Q你q需要信息进行估Pq时是你的好Z。如果这是目l理的第一个工作Q务,q尤其是关键。你需要明白你的工作环境。因此,你可以问下列问题Q?span lang="EN-US">

  1. 公司优先权是什么?
  2. 本项目的执行资助者是谁?
  3. 公司使用的开发原理体pL什么?
  4. 本项目最后期限是什么?
  5. 有量度项目成功的Ҏ吗?
  6. 你的新经理将怎样保持目信息灵通?
  7. 你的新经理管理哲学和风格是什么?
  8. 目上的Z的技能水qx什么?
  9. 你将理的项目的范围被充分地定义吗?
  10. 技术环境已l选好了吗Q?span lang="EN-US">

  以下是典型的目理面试中通常会问到的问题Q期望的回答Q:
  很多的问题的{案是主观的Q面试官想知道你的观Ҏ否和他们的及公司一致。问题的构成如下Q?span lang="EN-US">
  1. 目理软g工具知识Q?span lang="EN-US">
  2. ~制目计划的技?Q?span lang="EN-US">
  3. 人员理技?span lang="EN-US">
  4. 沟通技?span lang="EN-US">
  5. 原理体系知识Q标准开发生命周期和目理 Q?span lang="EN-US">

  目理软g工具知识

  问题1Q工期和工作量之间的差异是什么?
  {案1Q工期是商业/日历上的天数Q与人数和工作量无关。工作量是与日历天数无关的h的工作。例如:
  一天的工作量对于一个一只花50%在时间在上面的h来说Q他的工期就是两天。如果两个h全职工作Q工期是1天,而工作量是两个工作日?span lang="EN-US">

  问题2Q怎样和ؓ什么要在编刉目计划时考虑依赖关系Q?span lang="EN-US">
  {案2Q根据用的软g包,依赖关系可以通过Q务及其后lQ务的标识W进行关联来表示。依赖关p说明了d之间兌/q列的要求。依赖关pd以是指在另一个Q务能开始之前有一个Q务必d成。例如,逻辑模型必须在物理模型前完成。但试q不是要在所有编E工作完成之后才开始,如果没有完成的程序对U性测试没有媄响?span lang="EN-US">

  目计划加入依赖关系Q就能找出项目的关键路径q且能够定它对目工期的媄响?span lang="EN-US">

  问题3Q你怎样h的工作步调与计划l合Q?span lang="EN-US">
  {案3Q根据组l用的具体的工P可以资源拆成更的资源/单位Q或者可以将d拆成更小的Q务?span lang="EN-US">

  问题4Q你怎样培训,假日和个人教育时间表l合hQ?span lang="EN-US">
  {案4Q每个品都有标明不工作的天数的公司/全球的日历。每个品都也有个h的资源日历标明个Z工作的时间。如果项目需要教育和培训Q应该把它们象Q务那样写在项目计划上?span lang="EN-US">

  问题5Q你怎样安排cM状态会议这栯I整个项目但只需要极的旉和工作量的Q务?
  {案5Q它的工期将和整个项目时间一样长Q占工作量的癑ֈ比很。被分配lQ务的每个在该d的时间占他时间的癑ֈ比极低?span lang="EN-US">

  问题6Q实冉|告对计划的作用以及实况与最初预计的比较有何价|
  {案6Q根据组l用的特定的工P每个工具都ؓ实况报告中输入相互独立的要素/域信息。也可以报表进行分c,来向团队成员和其他相兛_体说明关键\径的变化或时间表的调整。这些报告对已实现工作评价和作ؓ在计划下一个工E或阶段的输入有价倹{另一个把估计和实冉|告比较的有h值的用途是把范围变更对目的媄响记录下来?span lang="EN-US">

  做项目计划的技?span lang="EN-US">

  问题7Q你Z么制定项目计划?
  {案7Q项目计划是实现成功的系l的路线图。它提供了一U手D|通知每个人希望他们做什么及何时完成。它帮助目l理使管理层Q商务用户和支持团体了解目状态和调整Ҏ的资源。逐项列记?span lang="EN-US">?/span>一览表?/span>协助对Q何变动的影响q行q速评估。当实况报告与计划联pv来后Q项目计划ؓ今后目的Q务划分和估算提供了有用的信息?span lang="EN-US">

  问题8Q你怎样着手做目的计划?
  {案8Q进E安排是一门艺术。根据已知有关业务目标的事实Q公怸般标准,以及可以利用的过ȝl验。可以从清楚地定义范围和目标开始。把目的风险和制约做成文g。差的估计源于对业务知识和项目范围缺乏了解。可以从目d分解入手Q例如先划分阶段Q然后定义每个阶D늚zdQ再定义每个zd中的d。识别和文化里E碑和可交付产品。项目计划是当信息变得可以利用的Ӟ不断l化的有生命文g。很好地记录q度的变化对目l理Q开发团队,支持团队Q以及管理层Q商业用户都有益处?span lang="EN-US">

  问题9Q你怎样着手制定项目计划?
  {案9Q在适当的活动和阶段或其他的概括的标准说明下Q输入确定的d。将适当的可交付产品及里E碑和特定的d联系h。连接全部需要依赖关联的d。把资源角色或资源名字加到每个Q务上。应用度量结果确定事先的d工作量,把更多的旉用于需求收集,设计和测试。考虑所有已知的节假日,培训Q休假或其他的资源停工时间。计划草案将同支持团体,理层和商务用户一起复查,做ؓ补充性的输入和最l的批准?span lang="EN-US">

原文链接Q?/span>//pm.csai.cn/manager/NO415.htm

 



Flyingis 2005-12-15 16:12 发表评论
]]>
Java开源工具包 - 棒球比分大小怎么算|վ//www.355548.live/flyingis/articles/23260.htmlFlyingisFlyingisSat, 10 Dec 2005 05:41:00 GMT//www.355548.live/flyingis/articles/23260.html//www.355548.live/flyingis/comments/23260.html//www.355548.live/flyingis/articles/23260.html#Feedback0//www.355548.live/flyingis/comments/commentRss/23260.html//www.355548.live/flyingis/services/trackbacks/23260.html     逐渐整理一些有用的Java开源工具包Qƈ且不断更新?br />
    法工具Q?br />
    ZJava的遗传算法工具JGAP是一ƄJava~写的遗传算法包。它提供了基本的遗传法Q你可以使用它来解决一些适合用遗传算法解决的问题?005q?2?0日止最新的版本是JGAP2.5。下载地址
https://sourceforge.net/project/showfiles.php?group_id=11618&package_id=48940

    Jakarta Commons Math 是Jakarta Commons 的一个单独的子项目,主要包括数学和统计学lg。下载地址
//jakarta.apache.org/site/downloads/downloads_commons-math.cgi

    Java函数~程工具FunctionalJ是一个开源的工具包,能够帮助你在Java中进行函数编E。下载地址
//functionalj.sourceforge.net/

    JFormula是由JAPISoft 开发的一l数学表辑ּAPIQ用于计各U不同的数学表达式。下载链?/font> //www.japisoft.com/download.html

    标签工具Q?br />
    AJAXTag是一lJSP标签Q用来简化AJAX技术在JSP面中的使用。它提供了一些常见功能的标签如下拉联选择Q用户在文本框中输入字符自动从指定的数据中匹配用戯入的字符{。它构徏在JavaScript框架之上。下载地址
//sourceforge.net/projects/ajaxtags/

    |络应用框架:

    Apache Mina 0.9: MINA (Multipurpose Infrastructure for Network Applications)是一个网l应用程序框架。用户利用它可以Ҏ地开发高性能和高伸羃性的|络应用E序。下载地址
//svn.apache.org/repository/directory-network/

    AJAX应用框架:

    Buffalo是由国h开发的Ajax框架。Buffalo中定义了Webq程调用的传输基Qƈ且将q程调用对象完整的序列化C本地Q成为可以被JavaScript~程触及的对象。Buffalo中的重要lg - BuffaloBindingQ提供了JavaScript对象l定到HTML元素的能力。这U绑定将是无侵入的,只需要在HTML元素中加入若q个不媄响排版的属性,卛_数据与界面l定?br />    Buffalo 1.1 之前的版本重要的功能主要集中于远E调用与Java对象/JavaScript对象之间的双向序列化Q这个特性已l被众多的应用久l考验Q被认ؓ是健壮的。它大大减少了在Java对象与JavaScript对象之间需要考虑的细节,开发者可以更用心地进行业务设计和界面设计?.2版本的推出,引入了新的众多的Ҏ包括,新的重新改写的Spring集成Q与行javascript库prototype的集成,支持览器前q后退按钮Q等{?br />    下蝲链接 //www.amowa.net/buffalo/
    
    AJAXq项用于创徏互动Web应用的技术正在爆发式的进入到Web开发领域中Q?span style="COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">q速的变得如此热门以至于一些开发?span style="COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">在技术上无法及时更新。ؓ了满x快的开?span lang="EN-US">AJAX的需求,已经有不公司和开发者社区正在推?span lang="EN-US">AJAX?span lang="EN-US">RADq_。其?span lang="EN-US">ThinkCAP框架集成了超q?span lang="EN-US">24U开源代码库?span style="COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体">现在Q?span lang="EN-US">ThinkCAP的框枉分也以GPL方式开?/span>了。详l链?span lang="EN-US" style="FONT-FAMILY: 宋体">//trends.newsforge.com/article.pl?sid=06/01/08/1725231

  可视化工?

    Fabric 是一个用于用L面开发的有力工具Q面向创建可视化Java Bean的用戗Fabric的执行技?Park'可以L的集合XML-based用户界面语言到rich 界面。链接地址Q?/font> //www.platespiller.com/download.jsp

    搜烦引擎:

    Compass 0.7.0: Compass 具备一个强大的、事务的、高性能的对?搜烦引擎映射Q与一个Java持久层框架。下载地址
//www.compassframework.org/display/SITE/Downloads

    JDK Date和Calendar的替代工?

    Joda-Time提供了一lJavacdQ用于处理包括ISO8601标准在内的date和time。利用它可以把JDK Date和Calendarcd全替换掉Q而且仍然能够提供很好的集成?Joda-Time主要的特点包括:易于使用Q易于扩展,提供一l完整的功能Q有着比JDK Calendar更好的整体性能{等。下载链?/font>
//sourceforge.net/project/showfiles.php?group_id=97367&package_id=104212

    Java 3D 工具:

    Java XTools是一个用来提高Java 以及Java 3D 功能Ҏ的工具。下载地址
//freshmeat.net/projects/xtools/?branch_id=39620&release_id=217167

    地理信息pȝ服务?

    GeoServer 1.3.0-PR1: GeoServer是OpenGIS的web服务器规范的J2EE实现。下载链?/font>
//freshmeat.net/projects/geoserver/?branch_id=44295&release_id=217272 

   
GeoServer 开发组q日宣布Q地理信息系l服务器GeoServer 1.3.1 beta 发布了。GeoServer是OpenGIS的web服务器规范的J2EE实现。该新版本中最显著的改q就是增加了GeoTools 2.2.xQ增加了许多新功能。下载链?/font> //docs.codehaus.org/display/GEOS/2006/05/06/GeoServer+1.3.1+beta+release

    试工具Q?/strong>

    TestNG是根据JUnit 和NUnit思想而构建的一个测试框Ӟ但是TestNG增加了许多新的功能得它变得更加强大与容易用。链接地址
//testng.org/

    FindBugs可以用来扑ևpȝ源代码中存在的BugQ与设计上存在的问题Q非常好的一个捉虫Y件。链接地址Q?/font> //findbugs.sourceforge.net/

    压羃工具?

    TrueZIP 是一个ZIP压羃工具包,Z提供ZIP相关功能Q你可以调用q个ZIP压羃工具包进行压~操作。TrueZIP则针对java.util.zip中的~点q行了完善。链接地址
https://truezip.dev.java.net/

    报表制作工具Q?/strong>

    OpenReports 提供Zweb 的灵zL表解x案,支持 PDFQHTML 和XLS 报表格式Q基于WebWorkQHibernate ?Velocity 开发完成,q且q提供一个整合了Tomcat 的OpenReports-Tomcat 文g下蝲. 新版本包括了一pd的bug fix?br />    下蝲地址Q?/font> //oreports.com/index.php?option=com_content&task=view&id=24&Itemid=30



Flyingis 2005-12-10 13:41 发表评论
]]>
IOC容器比较--Spring VS Pico VS Yan/Nuts - 棒球比分大小怎么算|վ//www.355548.live/flyingis/articles/23042.htmlFlyingisFlyingisThu, 08 Dec 2005 13:56:00 GMT//www.355548.live/flyingis/articles/23042.html//www.355548.live/flyingis/comments/23042.html//www.355548.live/flyingis/articles/23042.html#Feedback0//www.355548.live/flyingis/comments/commentRss/23042.html//www.355548.live/flyingis/services/trackbacks/23042.html

Features  Spring  Pico  Yan/Nuts
xml configuration
Yes  Through Nano Container
Yes
Life cycle
Singleton only
Singleton only
Both singleton and prototype
Parametered and ad-hoc life cycle
No
No
Through <lifecycle> tag
Constructor Injection
Yes Yes
Yes
Setter Injection
Yes
Yes
Yes
Factory Method Injection
Yes
Yes
Yes
Referencing Field
FieldRetrievingFactoryBean
Implement ComponentAdapter
Through <field> tag.
Anonymous sub-bean
Yes No
Yes
Ad-hoc bean combination
No No
Through <sequence> or <callcc> tags
Concise collection literal
No
No
Yes
named local bean
No
No
Through <local> tag
Bean Definition Reuse
through "abstract" bean

Through <function> tag
import module
Yes
Yes
Yes
module private beans
No
No
Through "export" and "hide" attribute of <module>
Selective import by bean names
No
No
Through "includes" and "excludes" attribute of <import>
Import with namespace
No
No
Through "namespace" attribute of <import>
Singleton bean with prototype property
Requires Cglib and bytecode generation
ComponentAdapter combination
Through component combination
Dependency Injection for objects not managed by container
Supported at the cost of Spring API dependency
No
Through <function> and <factory> tag
Extensible tag library
No. But FactoryBean is a substitute
No
By implementing subclasses of Nut
Configuration unit-testable within configuration file.
No
No
By using <sequence> together with <assertEqual>, <assertSame>, <if>, <unless>, <fail> etc.
autoproxy
Yes

No
Custom PropertyEditor
Yes
Yes
No
Container hierarchy
Yes
Yes
Yes
AOP support
Both Spring AOP and AspectJ
Via dynaop
Any AOP solution can be plugged in. An integration package for spring AOP is provided out-of-box.
Declarative Transactional support
Yes
  No. But Spring's declarative transaction support is integrated.
Scripting language support
Not yet
Nano Container
Not yet
原文链接Q?/font> //docs.codehaus.org/pages/viewpage.action?pageId=39307

Flyingis 2005-12-08 21:56 发表评论
]]>
Eclipse实用快捷键大全[转蝲] - 棒球比分大小怎么算|վ//www.355548.live/flyingis/articles/17337.htmlFlyingisFlyingisSat, 29 Oct 2005 06:08:00 GMT//www.355548.live/flyingis/articles/17337.html//www.355548.live/flyingis/comments/17337.html//www.355548.live/flyingis/articles/17337.html#Feedback0//www.355548.live/flyingis/comments/commentRss/17337.html//www.355548.live/flyingis/services/trackbacks/17337.htmlCtrl+1 快速修?最l典的快捷键,׃用多说了)
Ctrl+D: 删除当前行?br />Ctrl+Alt+↓ 复制当前行C一?复制增加)
Ctrl+Alt+↑ 复制当前行C一?复制增加)
Alt+↓ 当前行和下面一行交互位|?特别实用,可以省去先剪?再粘贴了)
Alt+↑ 当前行和上面一行交互位|?同上)
Alt+← 前一个编辑的面
Alt+→ 下一个编辑的面(当然是针对上面那条来说了)
Alt+Enter 昄当前选择资源(工程,or 文g or文g)的属?br />Shift+Enter 在当前行的下一行插入空?q时鼠标可以在当前行的Q一位置,不一定是最?
Shift+Ctrl+Enter 在当前行插入I(原理同上?
Ctrl+Q 定位到最后编辑的地方
Ctrl+L 定位在某行?对于E序过100的h有音?
Ctrl+M 最大化当前的Edit或View (再按则反?
Ctrl+/ 注释当前?再按则取消注?br />Ctrl+O 快速显C OutLine
Ctrl+T 快速显C当前类的承结?br />Ctrl+W 关闭当前Editer
Ctrl+K 参照选中的Word快速定位到下一?br />Ctrl+E 快速显C当前Editer的下拉列?如果当前面没有昄的用黑体表示)
Ctrl+/(键? 折叠当前cM的所有代?br />Ctrl+×(键? 展开当前cM的所有代?br />Ctrl+Space 代码助手完成一些代码的插入(但一般和输入法有冲突,可以修改输入法的热键,也可以暂用Alt+/来代?
Ctrl+Shift+E 昄理当前打开的所有的View的管理器(可以选择关闭,Ȁzȝ操作)
Ctrl+J 正向增量查找(按下Ctrl+J?你所输入的每个字母编辑器都提供快速匹配定位到某个单词,如果没有,则在stutes line中显C没有找C,查一个单词时,特别实用,q个功能Idea两年前就有了)
Ctrl+Shift+J 反向增量查找(和上条相?只不q是从后往前查)
Ctrl+Shift+F4 关闭所有打开的Editer
Ctrl+Shift+X 把当前选中的文本全部变呛_?br />Ctrl+Shift+Y 把当前选中的文本全部变为小?br />Ctrl+Shift+F 格式化当前代?br />Ctrl+Shift+P 定位到对于的匚wW?譬如{}) (从前面定位后面时,光标要在匚wW里?后面到前?则反?

下面的快捷键是重构里面常用的,本hp己喜Ƣ且常用的整理一??一般重构的快捷键都是Alt+Shift开头的?
Alt+Shift+R 重命名?是我自己最q的一个了,其是变量和cȝRename,比手工方法能节省很多力_?
Alt+Shift+M 抽取Ҏ (q是重构里面最常用的方法之一?其是对一大堆泥团代码有用)
Alt+Shift+C 修改函数l构(比较实用,有N个函数调用了q个Ҏ,修改一ơ搞?
Alt+Shift+L 抽取本地变量( 可以直接把一些魔法数字和字符串抽取成一个变?其是多处调用的时?
Alt+Shift+F 把Class中的local变量变ؓfield变量 (比较实用的功?
Alt+Shift+I 合ƈ变量(可能q样说有点不妥Inline)
Alt+Shift+V Ud函数和变?不怎么常用)
Alt+Shift+Z 重构的后悔药(Undo)

~辑
作用域 功q快捷键 
全局 查找q替换 Ctrl+F 
文本~辑器 查找上一个 Ctrl+Shift+K 
文本~辑器 查找下一个 Ctrl+K 
全局 撤销 Ctrl+Z 
全局 复制 Ctrl+C 
全局 恢复上一个选择 Alt+Shift+↓?br />全局 剪切 Ctrl+X 
全局 快速修正 Ctrl1+1 
全局 内容辅助 Alt+/ 
全局 全部选中 Ctrl+A 
全局 删除 Delete 
全局 上下文信息 Alt+Q?br />Alt+Shift+?
Ctrl+Shift+Space 
Java~辑器 显C工hC描qWF2 
Java~辑器 选择装元素 Alt+Shift+↑?br />Java~辑器 选择上一个元素 Alt+Shift+←?br />Java~辑器 选择下一个元素 Alt+Shift+→?br />文本~辑器 增量查找 Ctrl+J 
文本~辑器 增量逆向查找 Ctrl+Shift+J 
全局 _脓 Ctrl+V 
全局 重做 Ctrl+Y 
 
查看
作用域 功q快捷键 
全局 攑֤ Ctrl+= 
全局 ~小 Ctrl+- 
 
H口
作用域 功q快捷键 
全局 Ȁzȝ辑器 F12 
全局 切换~辑器 Ctrl+Shift+W 
全局 上一个编辑器 Ctrl+Shift+F6 
全局 上一个视图 Ctrl+Shift+F7 
全局 上一个透视图 Ctrl+Shift+F8 
全局 下一个编辑器 Ctrl+F6 
全局 下一个视图 Ctrl+F7 
全局 下一个透视图 Ctrl+F8 
文本~辑器 显C标Z下文菜单 Ctrl+W 
全局 昄视图菜单 Ctrl+F10 
全局 昄pȝ菜单 Alt+- 
 
D
作用域 功q快捷键 
Java~辑器 打开l构 Ctrl+F3 
全局 打开cd Ctrl+Shift+T 
全局 打开cd层次l构 F4 
全局 打开声明 F3 
全局 打开外部javadoc Shift+F2 
全局 打开资源 Ctrl+Shift+R 
全局 后退历史记录 Alt+←?br />全局 前进历史记录 Alt+→?br />全局 上一个 Ctrl+, 
全局 下一个 Ctrl+. 
Java~辑器 显C大U Ctrl+O 
全局 在层ơ结构中打开cd Ctrl+Shift+H 
全局 转至匚w的括号 Ctrl+Shift+P 
全局 转至上一个编辑位| Ctrl+Q 
Java~辑器 {至上一个成员 Ctrl+Shift+↑?br />Java~辑器 {至下一个成员 Ctrl+Shift+↓?br />文本~辑器 {臌 Ctrl+L 
 
搜烦
作用域 功q快捷键 
全局 出现在文件中 Ctrl+Shift+U 
全局 打开搜烦对话框 Ctrl+H 
全局 工作Z的声明 Ctrl+G 
全局 工作Z的引用 Ctrl+Shift+G 

文本~辑
作用域 功q快捷键 
文本~辑器 改写切换 Insert 
文本~辑器 上滚行 Ctrl+↑?br />文本~辑器 下滚行 Ctrl+↓?br /> 
文g
作用域 功q快捷键 
全局 保存 Ctrl+X 
Ctrl+S 
全局 打印 Ctrl+P 
全局 关闭 Ctrl+F4 
全局 全部保存 Ctrl+Shift+S 
全局 全部关闭 Ctrl+Shift+F4 
全局 属性 Alt+Enter 
全局 新徏 Ctrl+N 
 

作用域 功q快捷键 
全局 全部构徏 Ctrl+B 
 
源代?br />作用域 功q快捷键 
Java~辑器 格式化 Ctrl+Shift+F 
Java~辑器 取消注释 Ctrl+\ 
Java~辑器 注释 Ctrl+/ 
Java~辑器 添加导入 Ctrl+Shift+M 
Java~辑器 组l导入 Ctrl+Shift+O 
Java~辑器 用try/catch块来包围 未设|,太常用了Q所以在q里列出,自己讄?br />也可以用Ctrl+1自动修正。?br /> 
q行
作用域 功q快捷键 
全局 单步q回 F7 
全局 单步跌 F6 
全局 单步跛_ F5 
全局 单步跛_选择 Ctrl+F5 
全局 调试上次启动 F11 
全局 l箋 F8 
全局 使用qo器单步执行 Shift+F5 
全局 d/去除断点 Ctrl+Shift+B 
全局 昄 Ctrl+D 
全局 q行上次启动 Ctrl+F11 
全局 q行臌 Ctrl+R 
全局 执行 Ctrl+U 
 
重构
作用域 功q快捷键 
全局 撤销重构 Alt+Shift+Z 
全局 抽取Ҏ Alt+Shift+M 
全局 抽取局部变量 Alt+Shift+L 
全局 内联 Alt+Shift+I 
全局 Ud Alt+Shift+V 
全局 重命名 Alt+Shift+R 
全局 重做 Alt+Shift+Y


]]>
{ganrao}