<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feed.neatcn.com/styles/feedsky2.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link href="http://feed.neatcn.com" type="application/rss+xml" rel="self"></atom:link><fs:self_link href="http://feed.feedsky.com/neatcn" type="application/rss+xml"></fs:self_link><lastBuildDate>Thu, 21 Aug 2008 14:49:00 GMT</lastBuildDate><title>飞天小肥猪的简单人生</title><description>幻想指点江山，梦中激扬文字（尽量保证每日更新；原始博客请看：http://www.cnitblog.com/neatstudio/）</description><image><url>http://www.feedsky.com/feed/neatcn/sc/gif</url><title>飞天小肥猪的简单人生</title><link>http://www.neatcn.com/</link></image><link>http://www.neatcn.com/</link><copyright>Copyright (C) 2004 Security Angel Team [S4T] All Rights Reserved.</copyright><pubDate>Thu, 21 Aug 2008 22:50:54 GMT</pubDate><item><title>测试JS的速度</title><link>http://item.feedsky.com/~feedsky/neatcn/~7070841/106351164/5179076/1/item.html</link><description>&lt;p&gt;在mootools的官方网站有一个网页专门用来测试几个框架的速度，大概是：mootools,jquery,prototype,dojo,yui，测试下来jquery的平均速度应该算是最快的。&lt;br /&gt;
&lt;br /&gt;
那个评测下来IE下JS运行速度慢果然是很明显的。同样的测试在IE下面比FF下面，速度慢了一倍左右啊。&lt;br /&gt;
&lt;br /&gt;
不多了。自己测试一下看结果吧。。&lt;br /&gt;
http://mootools.net/slickspeed/&lt;/p&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=bef49b1a4b55b7e158fa67a63580aae5&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=bef49b1a4b55b7e158fa67a63580aae5&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=e9032e850a7b2938cdd7b8853b8b125e&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=e9032e850a7b2938cdd7b8853b8b125e&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=0250a07e5fcb4869dd2d06715dfb0284&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=0250a07e5fcb4869dd2d06715dfb0284&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=4d2edb70c9da2d3a111164d78fa90b96&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=4d2edb70c9da2d3a111164d78fa90b96&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=325129570e235256165e0c9e5cdec13f&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=325129570e235256165e0c9e5cdec13f&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=f27883ee7b7cb4f34eaecc5013f05950&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=f27883ee7b7cb4f34eaecc5013f05950&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=2b7a880113f8858708cdb34b410b8a92&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=2b7a880113f8858708cdb34b410b8a92&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category domain="http://www.neatcn.com/category-2-1.html">Javascript</category><pubDate>Thu, 21 Aug 2008 22:49:00 +0800</pubDate><author>gouki</author><guid isPermaLink="false">http://www.neatcn.com/show-211-1.html</guid><dc:creator>gouki</dc:creator><fs:srclink>http://www.neatcn.com/show-211-1.html</fs:srclink><fs:srcfeed>http://www.neatcn.com/rss.php</fs:srcfeed><fs:itemid>feedsky/neatcn/~7070841/106351164/5179076</fs:itemid></item><item><title>zendframework 1.6终于将SOAP放进去了</title><link>http://item.feedsky.com/~feedsky/neatcn/~7070841/105972534/5179076/1/item.html</link><description>&lt;p&gt;1.6版本的zf终于将SOAP放进来了，同时也增加了DOJO的支持。不过我没有想通。为什么那么多的JS框架，最终会选择了DOJO。&lt;/p&gt;
&lt;p&gt;这些不是我能够想得通的。还是看看到底更新了什么再说吧。&lt;/p&gt;
&lt;p&gt;An overview of new features:&lt;/p&gt;
&lt;ul class=&quot;disc&quot;&gt;
    &lt;li&gt;Dojo Integration
    &lt;ul&gt;
        &lt;li&gt;JSON-RPC&lt;/li&gt;
        &lt;li&gt;Dojo Data packing&lt;/li&gt;
        &lt;li&gt;Dojo View Helper&lt;/li&gt;
        &lt;li&gt;Dijit integration with Zend_Form &amp;amp; Zend_View&lt;/li&gt;
        &lt;li&gt;Dojo Library Distribution&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;SOAP
    &lt;ul&gt;
        &lt;li&gt;SOAP Server&lt;/li&gt;
        &lt;li&gt;SOAP Client&lt;/li&gt;
        &lt;li&gt;Autodiscovery&lt;/li&gt;
        &lt;li&gt;WSDL access&lt;/li&gt;
        &lt;li&gt;WSDL Generation&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;Preview of Tooling Project in Laboratory (see /laboratory folder)
    &lt;ul&gt;
        &lt;li&gt;Command Line Interface&lt;/li&gt;
        &lt;li&gt;Project Asset Management&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;Unit Testing Harness for Controllers&lt;/li&gt;
    &lt;li&gt;Lucene 2.3 Index File Format Support&lt;/li&gt;
    &lt;li&gt;Zend_Session save handler for Database Tables&lt;/li&gt;
    &lt;li&gt;Paginator Component&lt;/li&gt;
    &lt;li&gt;Text/Figlet Support&lt;/li&gt;
    &lt;li&gt;ReCaptcha Service&lt;/li&gt;
    &lt;li&gt;Zend_Config_Xml Attribute Support&lt;/li&gt;
    &lt;li&gt;Character Set Option for DB Adapters&lt;/li&gt;
    &lt;li&gt;Zend File Transfer Component&lt;/li&gt;
    &lt;li&gt;New Media View Helpers (Flash, Quicktime, Object, and Page)&lt;/li&gt;
    &lt;li&gt;Support in Zend_Translate for INI File Format&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This obviously marks a very important step towards a high-quality, highly tested 1.6 GA release. Thanks to everyone who has contributed to this release in any way: with patches/check ins, documentation/translations, and bug reports.&lt;/p&gt;
&lt;p&gt;But our work is not yet over! Let's do our best to bring this release to the breaking point to find areas we can improve the release for General Availability. Based on your feedback we will determine in the next few weeks whether we require additional release candidates, so please provide feedback on our issue tracker (&lt;a href=&quot;http://framework.zend.com/issues&quot;&gt;http://framework.zend.com/issues&lt;/a&gt;) as soon as you can and ask any questions/post your experiences on the appropriate mailing list.&lt;/p&gt;
&lt;p&gt;Again, the Zend Framework community does NOT recommend this release for production use. We do, however, recommend evaluating new features in this release with existing and new applications.&lt;/p&gt;
&lt;p&gt;Enjoy 1.6RC1, and see you on the issue tracker, wiki, and mailing lists!&lt;/p&gt;
&lt;p&gt;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;END&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&lt;/p&gt;
&lt;p&gt;不知道：Zend File Transfer Component，这个会给我们带来什么样的惊喜？大文件传输还是其他的？下载源码研究一下，哈哈&lt;/p&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=70c2a41e6c9e4dddc246e98ee5a02603&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=70c2a41e6c9e4dddc246e98ee5a02603&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=446cdc6885d81b7f47718d182a04e0e7&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=446cdc6885d81b7f47718d182a04e0e7&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=04db5e9202089a31532d8eca1f1ae750&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=04db5e9202089a31532d8eca1f1ae750&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=f74381620c785074cb92f1dd858d3f3b&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=f74381620c785074cb92f1dd858d3f3b&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=ee1a162fe2dad28c12b5b6a96071bac3&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=ee1a162fe2dad28c12b5b6a96071bac3&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=ddfc780c8d13e2e5b94d61a986327b46&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=ddfc780c8d13e2e5b94d61a986327b46&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=2471514b4545b876e6fe52609df1a2a8&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=2471514b4545b876e6fe52609df1a2a8&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category domain="http://www.neatcn.com/category-4-1.html">PHP Framework</category><pubDate>Wed, 20 Aug 2008 23:53:00 +0800</pubDate><author>gouki</author><guid isPermaLink="false">http://www.neatcn.com/show-209-1.html</guid><dc:creator>gouki</dc:creator><fs:srclink>http://www.neatcn.com/show-209-1.html</fs:srclink><fs:srcfeed>http://www.neatcn.com/rss.php</fs:srcfeed><fs:itemid>feedsky/neatcn/~7070841/105972534/5179076</fs:itemid></item><item><title>Zend_Acl and MVC Integration Part I (Basic Use)</title><link>http://item.feedsky.com/~feedsky/neatcn/~7070841/105478067/5179076/1/item.html</link><description>&lt;p&gt;原文地址：http://devzone.zend.com/article/3509-Zend_Acl-and-MVC-Integration-Part-I-Basic-Use&lt;br /&gt;
&lt;br /&gt;
原文内容：&lt;/p&gt;
&lt;p&gt;&lt;cite&gt;By Aldemar Bernal&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;So, what is wrong with Zend_Acl and the current MVC implementation in the Zend Framework? there is nothing wrong, it is just that it gets not too obvious for developers how to achieve an optimal integration between these two important parts of the framework.&lt;/p&gt;
&lt;p&gt;First at all, this article is based on the following Zend Framework Proporsal (&lt;a href=&quot;http://framework.zend.com/wiki/pages/viewpage.action?pageId=39025&quot;&gt;link&lt;/a&gt;), by this moment this proposal is in Pending Recommendation state.&lt;/p&gt;
&lt;p&gt;Well, how it works? There are two key components in this proposal:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;A Front Controller Plugin: This component resolves if the current user has access to the page which is being opened.&lt;/li&gt;
    &lt;li&gt;An Action Helper: This component allows you to check whether the current user has access inside a controller.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Based on these two components, let's try them with an example. Let's talk about a website like DevZone, we would need a controller that work with the user management and another one which will deal with article management, as well we need 3 types of users (roles), one for guests, one for writers and another one which will approve the articles; resuming, we have:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Resources:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;user controller.&lt;/li&gt;
    &lt;li&gt;article controller.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Roles:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Guest.&lt;/li&gt;
    &lt;li&gt;Writer.&lt;/li&gt;
    &lt;li&gt;Admin.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Setting up the Zend_Acl component&lt;/h3&gt;
&lt;p&gt;After defined what we want to do, the next step will create a Zend_Acl instance which will reflect our model.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre&gt;/** Creating the ACL object */&lt;br /&gt;require_once 'Zend/Acl.php';&lt;br /&gt;$myAcl = new Zend_Acl();&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Creating the roles&lt;/h3&gt;
&lt;p&gt;Now we create the roles in our Zend_Acl instance.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre&gt;/** Creating Roles */&lt;br /&gt;require_once 'Zend/Acl/Role.php';&lt;br /&gt;$myAcl-&amp;gt;addRole(new Zend_Acl_Role('guest'))&lt;br /&gt;      -&amp;gt;addRole(new Zend_Acl_Role('writer'), 'guest')&lt;br /&gt;      -&amp;gt;addRole(new Zend_Acl_Role('admin'), 'writer');&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Creating the resources&lt;/h3&gt;
&lt;p&gt;And then we create the resources needed (one per controller) and their relationship with the roles we created.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre&gt;/** Creating resources */&lt;br /&gt;require_once 'Zend/Acl/Resource.php';&lt;br /&gt;$myAcl-&amp;gt;add(new Zend_Acl_Resource('user'))&lt;br /&gt;      -&amp;gt;add(new Zend_Acl_Resource('article'));&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Creating the permissions&lt;/h3&gt;
&lt;p&gt;Now that we added the roles and resources to our Zend_Acl instance, it's time to explain what actions must be available to which roles.&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Guest won't have access to edit, add or approve an article.&lt;/li&gt;
    &lt;li&gt;Writer won't have access to approve an article.&lt;/li&gt;
    &lt;li&gt;Admin will have complete access.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre&gt;/** Creating permissions */&lt;br /&gt;$myAcl-&amp;gt;allow('guest', 'user')&lt;br /&gt;      -&amp;gt;deny('guest', 'article')&lt;br /&gt;      -&amp;gt;allow('guest', 'article', 'view')&lt;br /&gt;      -&amp;gt;allow('writer', 'article', array('add', 'edit'))&lt;br /&gt;      -&amp;gt;allow('admin', 'article', 'approve');&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Creating the access denied view file&lt;/h3&gt;
&lt;p&gt;We will need to create a view and an action which will address all those denied users, in order to do it, first we create a new action in our error controller:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre&gt;class ErrorController extends Zend_Controller_Action&lt;br /&gt;{&lt;br /&gt;    ....&lt;br /&gt;&lt;br /&gt;    public function deniedAction()&lt;br /&gt;    {&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    ....&lt;br /&gt;}&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;And then we create our view file (/application/views/scripts/error/denied.phtml) with some warning message:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre&gt;&amp;lt;h1&amp;gt;Error&amp;lt;/h1&amp;gt;&lt;br /&gt;&amp;lt;h2&amp;gt;Access denied&amp;lt;/h2&amp;gt;&lt;br /&gt;&amp;lt;p&amp;gt;You are trying to access an area which you have not allowed.&amp;lt;/p&amp;gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Finishing the configuration&lt;/h3&gt;
&lt;p&gt;Okay, we have setup our Zend_Acl configuration, so far, it doesn't look like something new, but the next step is register the controller plugin, this important part takes the Zend_Acl instance we created and then validates it against the current page being accessed by an user.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre&gt;/** Setting up the front controller */ &lt;br /&gt;require_once 'Zend/Controller/Front.php'; &lt;br /&gt;$front = Zend_Controller_Front::getInstance(); &lt;br /&gt;$front-&amp;gt;setControllerDirectory('path/to/controllers'); &lt;br /&gt; &lt;br /&gt;/** Registering the Plugin object */ &lt;br /&gt;require_once 'Zend/Controller/Plugin/Acl.php'; &lt;br /&gt;$aclPlugin = new Zend_Controller_Plugin_Acl($myAcl);&lt;br /&gt;$aclPlugin-&amp;gt;setRoleName($currentUserRole);&lt;br /&gt;&lt;br /&gt;$front-&amp;gt;registerPlugin(new Zend_Controller_Plugin_Acl($acl, 'guest')); &lt;br /&gt;&lt;br /&gt;/** Dispatching the front controller */ &lt;br /&gt;$front-&amp;gt;dispatch();&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;After this configuration is done, once an user enters in our application, depending the role he/she has the page will be displayed or an access denied page will be displayed.&lt;/p&gt;
&lt;p&gt;For more information about this you can go to:&lt;br /&gt;
&lt;a href=&quot;http://framework.zend.com/wiki/pages/viewpageattachments.action?pageId=39025&quot;&gt;Zend_Acl &amp;amp; MVC Integration&lt;/a&gt;&lt;br /&gt;
and here is a small implementation source code of this:&lt;br /&gt;
&lt;a href=&quot;http://framework.zend.com/wiki/download/attachments/39025/ZionFramework.zip&quot;&gt;Source Code&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;END&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&lt;br /&gt;
由于本文并没有什么特别的地方，而且单词也没有什么，故不作翻译。&lt;/p&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=d5efa55cbe5cc366e0a4cce90a3bb925&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=d5efa55cbe5cc366e0a4cce90a3bb925&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=9f2de450dddfd40e14bd413656a5a94b&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=9f2de450dddfd40e14bd413656a5a94b&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=bf96c63ef3c020c70129178def58f3f2&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=bf96c63ef3c020c70129178def58f3f2&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=2aaa39b2ba891c0a436ff6c55dbd40eb&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=2aaa39b2ba891c0a436ff6c55dbd40eb&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=dbcd8b757ac84bab3fb3c5d9ee595a18&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=dbcd8b757ac84bab3fb3c5d9ee595a18&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=66a66451b171bb0f8eb40357ef57ae2e&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=66a66451b171bb0f8eb40357ef57ae2e&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=4f81f5a7b927ed3be1a152b14e04fac4&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=4f81f5a7b927ed3be1a152b14e04fac4&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category domain="http://www.neatcn.com/category-4-1.html">PHP Framework</category><pubDate>Tue, 19 Aug 2008 23:20:00 +0800</pubDate><author>gouki</author><guid isPermaLink="false">http://www.neatcn.com/show-208-1.html</guid><dc:creator>gouki</dc:creator><fs:srclink>http://www.neatcn.com/show-208-1.html</fs:srclink><fs:srcfeed>http://www.neatcn.com/rss.php</fs:srcfeed><fs:itemid>feedsky/neatcn/~7070841/105478067/5179076</fs:itemid></item><item><title>最常用的链接</title><link>http://item.feedsky.com/~feedsky/neatcn/~7070841/105478068/5179076/1/item.html</link><description>&lt;p&gt;日常工作中，有一些网站是经常要去的，因此在这里加上链接，以后就可以偷懒了，而且，也防止自己以后找不到相应的网站。[逐步更新中]&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.php.net&quot;&gt;PHP官方网站&lt;/a&gt;　　　&lt;a href=&quot;http://www.php.net/docs.php&quot;&gt;PHP官方手册&lt;/a&gt;　　&lt;a href=&quot;http://download.php.net&quot;&gt;PHP下载&lt;/a&gt;　　&lt;a href=&quot;http://snap.php.net&quot;&gt;PHP snap&lt;/a&gt; 　　&lt;a href=&quot;http://pear.php.net&quot;&gt;pear for PHP&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.apache.org&quot;&gt;APACHE官方网站&lt;/a&gt;　　&lt;a href=&quot;http://httpd.apache.org/docs/2.2/&quot;&gt;APACHE手册&lt;/a&gt;　　&lt;a href=&quot;http://www.mysql.com&quot;&gt;MYSQL官方网站&lt;/a&gt;　　&lt;a href=&quot;http://dev.mysql.com/doc/refman/5.1/zh/index.html&quot;&gt;MYSQL官方中文手册&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.smarty.net/&quot;&gt;SMARTY官方网站&lt;/a&gt;　　&lt;a href=&quot;http://www.smarty.net/docs.php&quot;&gt;SMARTY手册&lt;/a&gt;　　&lt;a href=&quot;http://quickskin.codeworxtech.com/&quot;&gt;smarttemplate官方网站&lt;/a&gt;(改名叫quickskin了)&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://jquery.com/&quot;&gt;jQuery官方网站&lt;/a&gt;　　&lt;a href=&quot;http://www.prototypejs.org/&quot;&gt;prototype官方网站&lt;/a&gt;　　&lt;a href=&quot;http://mootools.net/&quot;&gt;mootools官方网站&lt;/a&gt;&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.python.org/&quot;&gt;PYTHON官方网站&lt;/a&gt;　　&lt;a href=&quot;http://www.python.org/doc/&quot;&gt;PYTHON手册&lt;/a&gt;&lt;/p&gt;
&lt;hr width=&quot;100%&quot; size=&quot;2&quot; /&gt;
&lt;p&gt;下面是系统类的链接&lt;br /&gt;
&lt;a href=&quot;http://www.freebsd.org/docs.html&quot;&gt;FREEBSD操作手册 &lt;br /&gt;
&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=10913be9eb6f4727a048732cfb0c4528&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=10913be9eb6f4727a048732cfb0c4528&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=fa73eec778444a577edbde2077d66703&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=fa73eec778444a577edbde2077d66703&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=fe467124376e705f12b9f467b844f4e7&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=fe467124376e705f12b9f467b844f4e7&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=6369ded82d83f5c334e7a0e8f0a27bf4&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=6369ded82d83f5c334e7a0e8f0a27bf4&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=83696e1c1500f4f38d1e99cb50229053&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=83696e1c1500f4f38d1e99cb50229053&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=84bdd5d33f225e96da4a8c1d913923b4&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=84bdd5d33f225e96da4a8c1d913923b4&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=5d6d5e2fcbede797627dfb663243cb0e&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=5d6d5e2fcbede797627dfb663243cb0e&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category domain="http://www.neatcn.com/category-5-1.html">Misc</category><pubDate>Tue, 19 Aug 2008 23:18:00 +0800</pubDate><author>gouki</author><guid isPermaLink="false">http://www.neatcn.com/show-176-1.html</guid><dc:creator>gouki</dc:creator><fs:srclink>http://www.neatcn.com/show-176-1.html</fs:srclink><fs:srcfeed>http://www.neatcn.com/rss.php</fs:srcfeed><fs:itemid>feedsky/neatcn/~7070841/105478068/5179076</fs:itemid></item><item><title>Google Reader shared items [2008-08-19]</title><link>http://www.google.com/reader/shared/03597963246232603900#2008-08-19</link><guid>http://www.google.com/reader/shared/03597963246232603900#2008-08-19</guid><pubDate>Tue, 19 Aug 2008 00:00:00 +0800</pubDate><description>&lt;ul&gt;&lt;li&gt;&lt;a href='http://item.feedsky.com/~feedsky/cssrain/~6110346/105259978/4218245/1/item.html' title='link to ..'&gt;jQuery---新闻内容切换.（改进版）&lt;/a&gt;&lt;br/&gt;&lt;div&gt;&lt;a href=&quot;http://www.cssrain.cn/attachments/month_0808/w2008819154257.jpg&quot; rel=&quot;lightbox&quot; title=&quot;http://www.cssrain.cn&quot;&gt;&lt;img src=&quot;http://www.cssrain.cn/attachments/month_0808/w2008819154257.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;把上次发的修改了一下。、&lt;br&gt;&lt;br&gt;演示：&lt;br&gt;&lt;a href=&quot;http://www.cssrain.cn/demo/shownews/index2.htm&quot;&gt;http://www.cssrain.cn/demo/shownews/index2.htm&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;下载：&lt;br&gt;&lt;a href=&quot;http://www.cssrain.cn/demo/shownews/shownews2.rar&quot;&gt;http://www.cssrain.cn/demo/shownews/shownews2.rar&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;span style=&quot;color:Red&quot;&gt;&lt;strong&gt;转载请注明 ： cssrain.cn&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;</description><fs:burntype>mark day</fs:burntype><fs:srclink>http://item.feedsky.com/~feedsky/cssrain/~6110346/105259978/4218245/1/item.html</fs:srclink><fs:srcfeed>http://www.google.com/reader/public/atom/user/03597963246232603900/state/com.google/broadcast</fs:srcfeed><fs:itemid>feedsky/neatcn/~7124590/105461134/5179076</fs:itemid></item><item><title>电视也弹窗</title><link>http://item.feedsky.com/~feedsky/neatcn/~7070841/105478069/5179076/1/item.html</link><description>&lt;p&gt;偶在网上闲逛。突然发现一段内容，对应家中现有的有线电视情况，突然感到好紧张。。。贴上部分内容，陪我一起震惊吧。&lt;/p&gt;
&lt;p&gt;
&lt;div class=&quot;codeText&quot;&gt;
&lt;div class=&quot;codeHead&quot;&gt;原文：http://www.dbanotes.net/mylife/fuck_huashu_tv.html&lt;/div&gt;
&lt;ol start=&quot;1&quot; class=&quot;dp-xml&quot;&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;自从用了这个遥控器，我就感觉不对劲儿，怎么赛事正精彩的时侯屏幕上会出来个小窗口提示有奖答题呢?&amp;nbsp;第一次看到以为是央视搞的，后来频繁的出现感觉有点不对，按遥控器的&amp;quot;退出&amp;quot;键，居然提示，&amp;quot;确定退出么?&amp;quot;&amp;nbsp;按&amp;quot;确定&amp;quot;，居然也要半天才能消失这个小浮动窗口。真是有些震惊啊，这下真的互动了，弹窗广告居然搞到电视上来了!&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;流氓会武术，谁都挡不住!&amp;nbsp;相信这个技术会被更多有线电视运营商采用的。到时候面对时不时的弹窗广告，加上原来就有的贴片广告，以及那些&amp;quot;精彩绝伦&amp;quot;的电视购物广告，这电视还能看下去么?&amp;nbsp;奥运过后，电视关闭!&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
好佩服现在的厂商呀。这是否和当年的分众一个想法？只是这个想法比分众还疯狂啊。估计是和电信学的吧？&lt;/p&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=abf8e6a7334a7db618143217738e8a69&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=abf8e6a7334a7db618143217738e8a69&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=56881bf9cb4991c72e97c59480e4569f&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=56881bf9cb4991c72e97c59480e4569f&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=664839698715a93825aa460d83020130&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=664839698715a93825aa460d83020130&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=cad09dcd4c2aa27fa0599c45b0393aee&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=cad09dcd4c2aa27fa0599c45b0393aee&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=fbf3ba79b1ec3e74b8ec383bc00cbbf8&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=fbf3ba79b1ec3e74b8ec383bc00cbbf8&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=9eaef17e9b29d437b81a984b727bf4f6&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=9eaef17e9b29d437b81a984b727bf4f6&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=49024fc768c667d30dd7b95098fbfcd4&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=49024fc768c667d30dd7b95098fbfcd4&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category domain="http://www.neatcn.com/category-5-1.html">Misc</category><pubDate>Mon, 18 Aug 2008 17:08:00 +0800</pubDate><author>gouki</author><guid isPermaLink="false">http://www.neatcn.com/show-207-1.html</guid><dc:creator>gouki</dc:creator><fs:srclink>http://www.neatcn.com/show-207-1.html</fs:srclink><fs:srcfeed>http://www.neatcn.com/rss.php</fs:srcfeed><fs:itemid>feedsky/neatcn/~7070841/105478069/5179076</fs:itemid></item><item><title>smarty中的注释</title><link>http://item.feedsky.com/~feedsky/neatcn/~7070841/105478070/5179076/1/item.html</link><description>&lt;p&gt;写代码的时候不可避免的会使用到注释。大多数的情况下，我们都是使用&amp;lt;!-- 这里是注释 --&amp;gt;，因为这是HTML自带的注释功能，在这里的代码都不会被显示到浏览器。&lt;/p&gt;
&lt;p&gt;然而，使用了smarty之类，我们确实不是很建议这样使用，因为，在&amp;lt;!----&amp;gt;标记里的smarty代码其实还是被解析了，如果是这样的话，那么，我们其实是多做了很多事情，却没有被显示出来，那就是说，我们其实多做了很多无用功。&lt;/p&gt;
&lt;p&gt;因此，我们在使用smarty模版的时候，应该根据smarty的规范来。让我们看看手册怎么说：&lt;/p&gt;
&lt;hr width=&quot;100%&quot; size=&quot;2&quot; /&gt;
&lt;p&gt;&amp;nbsp;所有例子中，我们假定你使用缺省的分隔符。Smarty中，所有在分隔符之外的内容被显示为静态内容，或者说不会被改变。一旦Smarty遇见分隔符，它将尝试解释它们，然后在其位置处显示合适的内容。&lt;/p&gt;
&lt;h1 class=&quot;sect1&quot;&gt;注释&lt;/h1&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;模板注释由星号包围，继而由&lt;a href=&quot;http://notsobad.cn/file/smarty/variable.left.delimiter.html&quot;&gt;分隔符&lt;/a&gt;包围，型如：&lt;tt class=&quot;literal&quot;&gt;{* 这是一个注释 *}。&lt;/tt&gt;Smarty注释不会在最终模板的输出中显示，这点和&lt;tt class=&quot;literal&quot;&gt;&amp;lt;!-- HTML comments --&amp;gt;不同。前者对于在模板中插入内部注释有用，因为没有人能看到。&lt;/tt&gt;;-)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;
&lt;div class=&quot;codeHead&quot;&gt;模版中的注释&lt;/div&gt;
&lt;ol class=&quot;dp-xml&quot; start=&quot;1&quot;&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;{*&amp;nbsp;这是Smarty注释，不出现在编译后的输出中&amp;nbsp;*}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;tag-name&quot;&gt;html&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;tag-name&quot;&gt;head&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;tag-name&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;{$title}&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;tag-name&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;tag-name&quot;&gt;head&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;tag-name&quot;&gt;body&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;{*&amp;nbsp;另一个单行Smarty注释&amp;nbsp;*}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;comments&quot;&gt;&amp;lt;!--&amp;nbsp;HTML注释将发送到浏览器&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;{*&amp;nbsp;这是一个多行&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Smarty注释&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;并不发送到浏览器&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;*}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;{*********************************************************&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;多行注释块，包含了版权信息&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;@&amp;nbsp;author:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bg@example.com&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;@&amp;nbsp;maintainer:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;support@example.com&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;@&amp;nbsp;para:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;that&amp;nbsp;sets&amp;nbsp;block&amp;nbsp;style&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;@&amp;nbsp;css:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;the&amp;nbsp;style&amp;nbsp;output&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;**********************************************************}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;{*&amp;nbsp;包含了主LOGO和其他东西的头文件&amp;nbsp;*}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;{include&amp;nbsp;&lt;span class=&quot;attribute&quot;&gt;file&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;'header.tpl'&lt;/span&gt;&lt;span&gt;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;{*&amp;nbsp;开发注解：$includeFile变量在foo.php脚本中赋值&amp;nbsp;*}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;comments&quot;&gt;&amp;lt;!--&amp;nbsp;显示主内容块&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;{include&amp;nbsp;&lt;span class=&quot;attribute&quot;&gt;file&lt;/span&gt;&lt;span&gt;=$includeFile}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;{*&amp;nbsp;该&lt;span class=&quot;tag&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;tag-name&quot;&gt;select&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;块是多余的&amp;nbsp;*}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;{*&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;tag-name&quot;&gt;select&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;attribute&quot;&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&amp;quot;company&amp;quot;&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;{html_options&amp;nbsp;&lt;span class=&quot;attribute&quot;&gt;options&lt;/span&gt;&lt;span&gt;=$vals&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;attribute&quot;&gt;selected&lt;/span&gt;&lt;span&gt;=$selected_id}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;tag-name&quot;&gt;select&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;*}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;{*&amp;nbsp;模板的cvs标记。下面的36应该是美元符号。&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;但是在CVS中被转换了。&amp;nbsp;*}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;{* &lt;/span&gt;&amp;amp;#36;&lt;span&gt;Id:&amp;nbsp;Exp &lt;/span&gt;&amp;amp;#36;&lt;span&gt; *}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;{*&amp;nbsp;$Id:&amp;nbsp;*}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;tag-name&quot;&gt;body&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;tag-name&quot;&gt;html&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=eaa1041d03d7756cc242e4f4f9ffd7c0&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=eaa1041d03d7756cc242e4f4f9ffd7c0&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=2b10c18769a6150e40df84dd9e8a664d&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=2b10c18769a6150e40df84dd9e8a664d&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=fce4ce80fcc0477ce3a0c6c75e6f1a53&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=fce4ce80fcc0477ce3a0c6c75e6f1a53&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=2f1af1c0429204f6989015e683f373ad&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=2f1af1c0429204f6989015e683f373ad&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=59b7d08c4a372b0b18b2b122744be475&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=59b7d08c4a372b0b18b2b122744be475&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=52fee59245db36e39434ec446ef1dd55&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=52fee59245db36e39434ec446ef1dd55&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=188b8cfbe168c8e4b4ab87d924e14dab&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=188b8cfbe168c8e4b4ab87d924e14dab&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category domain="http://www.neatcn.com/category-10-1.html">Smarty</category><pubDate>Mon, 18 Aug 2008 14:47:00 +0800</pubDate><author>gouki</author><guid isPermaLink="false">http://www.neatcn.com/show-206-1.html</guid><dc:creator>gouki</dc:creator><fs:srclink>http://www.neatcn.com/show-206-1.html</fs:srclink><fs:srcfeed>http://www.neatcn.com/rss.php</fs:srcfeed><fs:itemid>feedsky/neatcn/~7070841/105478070/5179076</fs:itemid></item><item><title>smarty中的变量使用</title><link>http://item.feedsky.com/~feedsky/neatcn/~7070841/105478071/5179076/1/item.html</link><description>&lt;p&gt;smarty中的变量和平时使用有点区别，比如$aa.bb其实代表的是$aa['bb']，具体如何个使用法，其实在手册里已经有详细说明了&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Smarty可以识别嵌入在双引号中&lt;a href=&quot;http://notsobad.cn/file/smarty/api.assign.html&quot;&gt;赋值&lt;/a&gt;的&lt;a href=&quot;http://notsobad.cn/file/smarty/language.syntax.variables.html&quot;&gt;变量&lt;/a&gt;，只要变量名只包含数字，字母，下划线和方括号[]（参见&lt;a target=&quot;_top&quot; href=&quot;http://php.net/language.variables&quot;&gt;命名&lt;/a&gt;）。如果有其它字符（如句点，对象引用等），变量必须由反引号对`backticks`包含。你不可以嵌入&lt;a href=&quot;http://notsobad.cn/file/smarty/language.modifiers.html&quot;&gt;修饰符&lt;/a&gt;，它们必须永远在引号之外使用。&lt;br /&gt;
&lt;br /&gt;
实际使用中应该是这样的：&lt;/p&gt;
&lt;pre class=&quot;programlisting&quot;&gt;语法例子：&lt;br /&gt;{func var=&amp;quot;test $foo test&amp;quot;}       &amp;lt;-- 使用$foo&lt;br /&gt;{func var=&amp;quot;test $foo_bar test&amp;quot;}   &amp;lt;-- 使用$foo_bar&lt;br /&gt;{func var=&amp;quot;test $foo[0] test&amp;quot;}    &amp;lt;-- 使用$foo[0]&lt;br /&gt;{func var=&amp;quot;test $foo[bar] test&amp;quot;}  &amp;lt;-- 使用$foo[bar]&lt;br /&gt;&lt;font color=&quot;#0000ff&quot;&gt;{func var=&amp;quot;test $foo.bar test&amp;quot;}   &amp;lt;-- 使用$foo（不是$foo.bar）&lt;br /&gt;{func var=&amp;quot;test `$foo.bar` test&amp;quot;} &amp;lt;-- 使用$foo.bar&lt;/font&gt;&lt;br /&gt;{func var=&amp;quot;test `$foo.bar` test&amp;quot;|escape} &amp;lt;-- 修饰符在引号外！&lt;br /&gt;&lt;br /&gt;实际例子：&lt;br /&gt;{include file=&amp;quot;subdir/$tpl_name.tpl&amp;quot;} &amp;lt;-- 将以实际值替换$tpl_name&lt;br /&gt;{cycle values=&amp;quot;one,two,`$smarty.config.myval`&amp;quot;} &amp;lt;-- 必须有反引号！&lt;br /&gt;&lt;br /&gt;看清楚哦。平时在使用的时候应该是感觉不出问题的，只有用在函数、循环里面，这才会成为使用中的问题。&lt;/pre&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=b8b648cbcc4643ac12bef2232343174b&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=b8b648cbcc4643ac12bef2232343174b&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=966b80cfc9bb53739eae0fd16228ec58&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=966b80cfc9bb53739eae0fd16228ec58&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=89ab4000cff0996813dc0c6f3407ad6d&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=89ab4000cff0996813dc0c6f3407ad6d&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=4b1388dca54180b56e130cea713ac652&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=4b1388dca54180b56e130cea713ac652&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=0e9e7b12c261c64b6457bfe29340e81c&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=0e9e7b12c261c64b6457bfe29340e81c&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=7ea47deef587e3ab136aa7f15fba562c&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=7ea47deef587e3ab136aa7f15fba562c&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=a8c94d6454cac1d6e910eeac32e58b3e&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=a8c94d6454cac1d6e910eeac32e58b3e&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category domain="http://www.neatcn.com/category-10-1.html">Smarty</category><pubDate>Mon, 18 Aug 2008 14:31:00 +0800</pubDate><author>gouki</author><guid isPermaLink="false">http://www.neatcn.com/show-205-1.html</guid><dc:creator>gouki</dc:creator><fs:srclink>http://www.neatcn.com/show-205-1.html</fs:srclink><fs:srcfeed>http://www.neatcn.com/rss.php</fs:srcfeed><fs:itemid>feedsky/neatcn/~7070841/105478071/5179076</fs:itemid></item><item><title>Google Reader shared items [2008-08-18]</title><link>http://www.google.com/reader/shared/03597963246232603900#2008-08-18</link><guid>http://www.google.com/reader/shared/03597963246232603900#2008-08-18</guid><pubDate>Mon, 18 Aug 2008 00:00:00 +0800</pubDate><description>&lt;ul&gt;&lt;li&gt;&lt;a href='http://www.cnblogs.com/daizhj/archive/2008/08/18/1270085.html' title='link to ..'&gt;ACE中的设计模式应用场景---模式初学者勿入&lt;/a&gt;&lt;br/&gt;&lt;div&gt;摘要:      最近在整理以前所看文章内容时，发现了几篇2003年程序员合订本里关于 ACE的文章，当年这几篇文章中所谈到的内容就让人非常兴奋，因为在那个国内热火朝天学习设计模式的几年里，这几篇文章因为其内容涉及到了bridge, strategy, adapter, facade等模式在这个..&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href='http://www.cnblogs.com/chnking/archive/2008/08/18/1270063.html' title='link to ..'&gt;IIS客户端证书访问配置&lt;/a&gt;&lt;br/&gt;&lt;div&gt;摘要: 本文给出了如何配置IIS通过SSL安全通道进行访问的方法，并在此基础上详细讨论了IIS如何设置要求对客户端提供客户端证书进行身份验证。IIS端SSL服务器证书申请和安装，从而配置SSL安全访问通道。客户端证书的申请和安装，IIS端如何映射客户端证书到服务器上的win..&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;</description><fs:burntype>mark day</fs:burntype><fs:srclink>http://www.cnblogs.com/daizhj/archive/2008/08/18/1270085.html</fs:srclink><fs:srcfeed>http://www.google.com/reader/public/atom/user/03597963246232603900/state/com.google/broadcast</fs:srcfeed><fs:itemid>feedsky/neatcn/~7124590/105265065/5179076</fs:itemid></item><item><title>一个程序员的13口决！</title><link>http://item.feedsky.com/~feedsky/neatcn/~7070841/105478072/5179076/1/item.html</link><description>&lt;p&gt;看到这段，觉得有理。。。记录下来，实在不知道原作者是谁。。。。&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;一个程序员的13口决！&lt;/strong&gt;&lt;br /&gt;
1、编程就像吃饭，不可能一口变成胖子。&lt;br /&gt;
2、还没练几天就想要高工资，不如去批发白菜好了。&lt;br /&gt;
3、程序员也民工，不觉得自己太高尚。&lt;br /&gt;
4、你的代码永远存在可优化的可能，所以有空要回头再看看。&lt;br /&gt;
5、编程时要永远开着记事本，测试数据，测试方法，搜到的代码等等要常放进去，存起来以备不时之需。&lt;br /&gt;
6、不要再回忆你的代码有多牛B，第二天早上别人的代码就可把你的程序替换了。&lt;br /&gt;
7、每一天都不是糟糕的，更糟的还在后面。&lt;br /&gt;
8、整理你的代码，文档，思维方式，以及行为方式。&lt;br /&gt;
9、第一次看到时千万别说你已经理解了。。。未来的变数还很大。&lt;br /&gt;
10、任何事物都是由简单开始，并最终回归简单。只是层次不同了而已。&lt;br /&gt;
11、首先感谢自己，然后再谢别人。还要感谢人民政府给你提供了就业机会。&lt;br /&gt;
12、永远都知道自己当前该做什么。&lt;br /&gt;
13、理解正念，并认真执行。&lt;/p&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=ff51e06c9b11b8581bc08b96018da446&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=ff51e06c9b11b8581bc08b96018da446&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=5c2dfe662e42151fe449c6658b64f833&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=5c2dfe662e42151fe449c6658b64f833&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=da95ce5886a8fad26a8d6ddcec03b375&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=da95ce5886a8fad26a8d6ddcec03b375&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=20a81d804a16b45d0c0bb86ffb6445b8&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=20a81d804a16b45d0c0bb86ffb6445b8&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=df99ed8e2ed557128429baff22c1573b&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=df99ed8e2ed557128429baff22c1573b&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=1f8eff5f69ad2c4f5f8078f0dce2678b&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=1f8eff5f69ad2c4f5f8078f0dce2678b&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=49c762c5b1b8c88aa822fe3d7712f514&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=49c762c5b1b8c88aa822fe3d7712f514&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category domain="http://www.neatcn.com/category-5-1.html">Misc</category><pubDate>Sun, 17 Aug 2008 22:25:00 +0800</pubDate><author>gouki</author><guid isPermaLink="false">http://www.neatcn.com/show-204-1.html</guid><dc:creator>gouki</dc:creator><fs:srclink>http://www.neatcn.com/show-204-1.html</fs:srclink><fs:srcfeed>http://www.neatcn.com/rss.php</fs:srcfeed><fs:itemid>feedsky/neatcn/~7070841/105478072/5179076</fs:itemid></item><item><title>成语新解</title><link>http://item.feedsky.com/~feedsky/neatcn/~7070841/105478073/5179076/1/item.html</link><description>&lt;p&gt;1.知书达礼：仅知道书本知识是不够的，还要学会送礼；&lt;br /&gt;
2.度日如年：日子非常好过，每天像过年一样；&lt;br /&gt;
3.杯水车薪：每天办公室喝喝茶，月底可以拿到一车工资；&lt;br /&gt;
4.知足常乐：知道有人请自己洗脚，心里就感到快乐；&lt;br /&gt;
5.见异思迁：看见漂亮的异性就想搬到她那里去住；&lt;br /&gt;
6.语重心长：别人话讲得重了，心里怀恨很长时间；&lt;br /&gt;
7.有机可乘：出门考察有飞机可以乘坐；&lt;br /&gt;
8.不学无术：不要白费工夫学那些不实用的东西；&lt;br /&gt;
9.夫唱妇随：丈夫进了歌厅，妻子跟踪尾随。&lt;/p&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=9e68a144823f2124476bf5e9bf3b9d56&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=9e68a144823f2124476bf5e9bf3b9d56&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=3acf427c8b41d0c44cf198aa4f09de8b&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=3acf427c8b41d0c44cf198aa4f09de8b&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=910f0d97037639f887826d6107e6fa36&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=910f0d97037639f887826d6107e6fa36&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=7c302a8c35675ac7b2870e565be98329&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=7c302a8c35675ac7b2870e565be98329&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=e23e329a5e8d3cb9853221ec24210cae&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=e23e329a5e8d3cb9853221ec24210cae&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=ba40decacb22a9afdf85d5441016f49a&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=ba40decacb22a9afdf85d5441016f49a&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=df956f343386d424b51e7d75e698c9b1&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=df956f343386d424b51e7d75e698c9b1&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category domain="http://www.neatcn.com/category-6-1.html">Literature</category><pubDate>Sun, 17 Aug 2008 20:51:00 +0800</pubDate><author>gouki</author><guid isPermaLink="false">http://www.neatcn.com/show-203-1.html</guid><dc:creator>gouki</dc:creator><fs:srclink>http://www.neatcn.com/show-203-1.html</fs:srclink><fs:srcfeed>http://www.neatcn.com/rss.php</fs:srcfeed><fs:itemid>feedsky/neatcn/~7070841/105478073/5179076</fs:itemid></item><item><title>好不要脸的说明</title><link>http://item.feedsky.com/~feedsky/neatcn/~7070841/105478074/5179076/1/item.html</link><description>&lt;p&gt;国内很多软件开发在叫嚣着开源，但，有几个是真正做到的？最初的discuz，直到现在还是有一些目录是加密的，主要是一些API，现在又看到不少自称是开源的。请你们扪心自问，你们做到了吗？&lt;br /&gt;
虽然国内开发人员的素质参差不齐，但靠欺骗的手段来达到听引人的目录，你们对得起自己的良心吗？？&lt;br /&gt;
&lt;strong&gt;什么是开源？？？看看吧。。。&lt;/strong&gt;&lt;br /&gt;
开放源代码并不仅仅意味着对源代码的访问权。开放源代码软件的发布条款必须满足以下条件：&lt;br /&gt;
&lt;br /&gt;
1. 自由地再发布&lt;br /&gt;
&lt;br /&gt;
如果被发布的软件是由不同来源的程序组成的，许可证不得限制任何当事人或组织（party）销售或赠送作为被发布软件成分之一的开放源码软件。&lt;br /&gt;
&lt;br /&gt;
许可证不得从此项销售中索取使用费或其它任何费用。（理由）&lt;br /&gt;
&lt;br /&gt;
2. 源代码&lt;br /&gt;
&lt;br /&gt;
程序必须包括源代码，必须允许以源代码方式发布、还必须允许以编译后的形式发布。如果产品的某个部分没有与源代码一同发布，那么必须提供通行的、不需要支 付合理范围之外的任何费用的手段以获得源代码---从网络上免费下载是一种可取的方式。源代码必须是程序员对其进行修改的最佳形式。故意地使源代码变得含 混晦涩是不允许的。也不允许给出预处理器或翻译器处理的中间结果。（理由）&lt;br /&gt;
&lt;br /&gt;
3. 派生作品&lt;br /&gt;
&lt;br /&gt;
许可证必须允许修改软件和派生软件，并且必须允许它们按照原软件的许可证的条款进行发布。（理由）&lt;br /&gt;
&lt;br /&gt;
4. 作者的源代码的完整性&lt;br /&gt;
&lt;br /&gt;
只有在许可证允许与源代码一同发布&amp;quot;补丁文件&amp;quot;（该&amp;quot;补丁文件&amp;quot;以在创建时对程序进行修改为目的）时，许可证才能限制对修改形式的源代码的发布。许可证必 须明确地允许发布由修改后的源代码生成的程序。许可证可以要求派生的作品采用不同的名称或不同的版本号以区别于原来的软件。（理由）&lt;br /&gt;
&lt;br /&gt;
5. 不得歧视任何个人或团体&lt;br /&gt;
&lt;br /&gt;
许可证不得歧视任何个人或者由多人组成的团体。（理由）&lt;br /&gt;
&lt;br /&gt;
6. 不得歧视任何应用领域（fields of endeavor）&lt;br /&gt;
&lt;br /&gt;
许可证不得限制任何人把程序应用于任何领域。例如，不得规定程序不能应用于商业领域或基因研究领域。（理由）&lt;br /&gt;
&lt;br /&gt;
7. 许可证的发布&lt;br /&gt;
&lt;br /&gt;
与程序有关的权利必须适用于该程序的任何使用者，并且程序的使用者也不需要为了使用该程序而获得其它许可证的许可。（理由）&lt;br /&gt;
&lt;br /&gt;
8. 许可证不能针对于一个产品&lt;br /&gt;
&lt;br /&gt;
与程序有关的权利不能由该程序是否作为某个软件产品的一部分来决定。如果程序从那个发布中被抽出来，并且按照程序的许可证的条款进行使用和发布，那么得到该程序的当事人或组织将获得与得到原程序的使用者相同的权利。（理由）&lt;br /&gt;
&lt;br /&gt;
9. 许可证不能影响其它软件&lt;br /&gt;
&lt;br /&gt;
许可证不得向与采用它的软件一同发布的其它软件提出任何限制。例如，许可证不能坚持要求在同一媒体上发布的其它程序都是开放源代码软件。（理由）&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.neatcn.com/show-202-1.html&quot; target=&quot;_blank&quot;&gt;阅读全文&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=b2dc43405ccaf3ec7bb033c502155217&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=b2dc43405ccaf3ec7bb033c502155217&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=5a702d92be5f1a109158af06ab7371a5&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=5a702d92be5f1a109158af06ab7371a5&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=c653b9c228cfa3881bf21d1b298abf7c&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=c653b9c228cfa3881bf21d1b298abf7c&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=5477faf10b30572b1003330cb10ead05&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=5477faf10b30572b1003330cb10ead05&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=c4c3d0f7f200d28e8dd093601bfd0758&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=c4c3d0f7f200d28e8dd093601bfd0758&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=dc3265425c6715862fd3189de8099d5e&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=dc3265425c6715862fd3189de8099d5e&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=2d9e5f1fa6b3cda2d869e4ab77f015f2&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=2d9e5f1fa6b3cda2d869e4ab77f015f2&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category domain="http://www.neatcn.com/category-1-1.html">PHP</category><pubDate>Sun, 17 Aug 2008 10:16:00 +0800</pubDate><author>gouki</author><guid isPermaLink="false">http://www.neatcn.com/show-202-1.html</guid><dc:creator>gouki</dc:creator><fs:srclink>http://www.neatcn.com/show-202-1.html</fs:srclink><fs:srcfeed>http://www.neatcn.com/rss.php</fs:srcfeed><fs:itemid>feedsky/neatcn/~7070841/105478074/5179076</fs:itemid></item><item><title>YUI 3.0 Preview Release 1</title><link>http://item.feedsky.com/~feedsky/neatcn/~7070841/105478075/5179076/1/item.html</link><description>&lt;p&gt;几天不见，YUI居然release了，虽然是preview版本。&lt;br /&gt;
官方这么说：&lt;/p&gt;
&lt;hr width=&quot;100%&quot; size=&quot;2&quot; /&gt;
&lt;p&gt;&lt;span class=&quot;lftCont&quot;&gt;
&lt;p&gt;The YUI development team has issued &lt;a href=&quot;http://developer.yahoo.com/yui/3/&quot;&gt;YUI 3.0 Preview Release 1&lt;/a&gt;, an early look at the next generation of the &lt;a href=&quot;http://developer.yahoo.com/yui/&quot;&gt;Yahoo! User Interface Library (YUI)&lt;/a&gt;. This developer preview shows you where the library is headed as we pursue goals of size, performance, consistency, power, security, and openness.&lt;/p&gt;
&lt;p&gt;You can read &lt;a href=&quot;http://yuiblog.com/blog/2008/08/13/yui3pr1/&quot;&gt;the introduction to the new release on YUIBlog&lt;/a&gt; and get a sense of &lt;a href=&quot;http://yuiblog.com/blog/2008/08/15/portal-example/&quot;&gt;the new syntactical style in this blog post&lt;/a&gt;, which reviews &lt;a href=&quot;http://developer.yahoo.com/yui/3/examples/dd/portal-drag.html&quot;&gt;Dav Glass's Draggable Portable example&lt;/a&gt; &amp;mdash; one of &lt;a href=&quot;http://developer.yahoo.com/yui/3/examples/&quot;&gt;more than 60 examples&lt;/a&gt; that accompany the preview's &lt;a href=&quot;http://developer.yahoo.com/yui/3/&quot;&gt;extensive documentation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;YUI 3.0 PR 1 is an early preview &amp;mdash; not suitable for production deployment. The development team is looking forward to your feedback &lt;a href=&quot;http://tech.groups.yahoo.com/group/yui3/&quot;&gt;in the YUI 3.x community forum&lt;/a&gt; as we refine the API toward a 2009 release.&lt;/p&gt;
&lt;p&gt;Work continues on YUI's main 2.x codeline, too, and YUI 2.x is still the foundation for current projects. &lt;a href=&quot;http://developer.yahoo.com/yui/roadmap/&quot;&gt;Check out the library's Roadmap&lt;/a&gt; for a up-to-date picture of what we're planning for upcoming releases.&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;hr width=&quot;100%&quot; size=&quot;2&quot; /&gt;
&lt;p&gt;有点期待。&lt;/p&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=03fe18bed6fb7f76cc68acedf4850a81&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=03fe18bed6fb7f76cc68acedf4850a81&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=502089a1509df3faeeb1d4fedaecb708&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=502089a1509df3faeeb1d4fedaecb708&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=e8f9f401ed0ce7e831401b623bdbba7c&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=e8f9f401ed0ce7e831401b623bdbba7c&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=72765b25e7064e8fe54879ddc3fc5a52&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=72765b25e7064e8fe54879ddc3fc5a52&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=1a483411190e1f3be6943d87b0a5f686&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=1a483411190e1f3be6943d87b0a5f686&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=22c2b04749e5a0f2339e65b2b5c42236&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=22c2b04749e5a0f2339e65b2b5c42236&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=98501ff0ebddf278792413f1a998b76c&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=98501ff0ebddf278792413f1a998b76c&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category domain="http://www.neatcn.com/category-2-1.html">Javascript</category><pubDate>Sun, 17 Aug 2008 10:05:00 +0800</pubDate><author>gouki</author><guid isPermaLink="false">http://www.neatcn.com/show-201-1.html</guid><dc:creator>gouki</dc:creator><fs:srclink>http://www.neatcn.com/show-201-1.html</fs:srclink><fs:srcfeed>http://www.neatcn.com/rss.php</fs:srcfeed><fs:itemid>feedsky/neatcn/~7070841/105478075/5179076</fs:itemid></item><item><title>Google Reader shared items [2008-08-17]</title><link>http://www.google.com/reader/shared/03597963246232603900#2008-08-17</link><guid>http://www.google.com/reader/shared/03597963246232603900#2008-08-17</guid><pubDate>Sun, 17 Aug 2008 00:00:00 +0800</pubDate><description>&lt;ul&gt;&lt;li&gt;&lt;a href='http://tech.idv2.com/2008/08/17/memcached-pdf/' title='link to ..'&gt;memcached全面剖析–PDF总结篇&lt;/a&gt;&lt;br/&gt;&lt;div&gt;memcached全面剖析的连载已经结束，翻译工作也已经全部完成了。
为了方便阅读，现将原来的翻译结果打包成PDF文档。可在本文末尾处下载。
原来的各篇翻译的地址如下：
第1章：http://tech.idv2.com/2008/07/10/memcached-001/
第2章：http://tech.idv2.com/2008/07/11/..&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;</description><fs:burntype>mark day</fs:burntype><fs:srclink>http://tech.idv2.com/2008/08/17/memcached-pdf/</fs:srclink><fs:srcfeed>http://www.google.com/reader/public/atom/user/03597963246232603900/state/com.google/broadcast</fs:srcfeed><fs:itemid>feedsky/neatcn/~7124590/105265067/5179076</fs:itemid></item><item><title>Adobe to contribute AMF support to Zend Framework</title><link>http://item.feedsky.com/~feedsky/neatcn/~7070841/105478076/5179076/1/item.html</link><description>&lt;p&gt;Copy from framework.zend.com , it's submitted of &lt;span class=&quot;comment-block&quot;&gt;Thursday, July 31, 2008&lt;br /&gt;
It's full contents :
&lt;div class=&quot;codeText&quot;&gt;
&lt;div class=&quot;codeHead&quot;&gt;XML/HTML&lt;/div&gt;
&lt;ol start=&quot;1&quot; class=&quot;dp-xml&quot;&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;Andi Gutmans, the CTO of Zend, blogged yesterday about a new proposal making it&amp;rsquo;s way through the Zend Framework process.  &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;Adobe has made a proposal for an AMF (Action Message Format) component in Zend Framework. This ZF component will allow for client-side applications built with Flex and Adobe AIR to communicate easily and efficiently with PHP on the server-side. Leading the design of the component for Adobe is Wade Arnold. Wade already has a track record of bringing the Adobe RIA technologies to PHP as a result of all of his work on AMFPHP.  &lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;I know everybody over on the Zend Framework team is real excited about this proposal. If you work with Zend Framework then you are going to want to keep an eye on it.  &lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;and someone were comments for this news,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;
&lt;div class=&quot;codeHead&quot;&gt;XML/HTML代码&lt;/div&gt;
&lt;ol class=&quot;dp-xml&quot; start=&quot;1&quot;&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;This is really great news! I am currently using JSON as the interface format between my Zend Framework and Flex app. This week I've been considering switching to amfphp (Lee Brimelow prepared a screencast http://www.gotoandlearn.com/player.php?&lt;/span&gt;&lt;span class=&quot;attribute&quot;&gt;id&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;78&lt;/span&gt;&lt;span&gt;), but I didn't want to refactor/change all of my code. Zend_Amf is great news. I can't wait to begin using it. Cheers Adobe!   &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;这样看来，以后ADOBE或许也会主动参与了吧？&lt;/p&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=08c51f485da538c9b869d2e1f0ad30fe&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=08c51f485da538c9b869d2e1f0ad30fe&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=63f07b60e7d8b49bf6aab7f2276d7500&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=63f07b60e7d8b49bf6aab7f2276d7500&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=b79a2576bcc0b988c43a53e89b3526d0&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=b79a2576bcc0b988c43a53e89b3526d0&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=aa15d1aff10cdefd1b04352e32a7ee55&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=aa15d1aff10cdefd1b04352e32a7ee55&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=4e96ecf1766baa67e1e69b25118e1d10&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=4e96ecf1766baa67e1e69b25118e1d10&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=991595a5adc00d6ffdd0667c55383f23&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=991595a5adc00d6ffdd0667c55383f23&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=bcf9221a5fb235bd03178063e742d15a&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=bcf9221a5fb235bd03178063e742d15a&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category domain="http://www.neatcn.com/category-4-1.html">PHP Framework</category><pubDate>Sat, 16 Aug 2008 12:16:00 +0800</pubDate><author>gouki</author><guid isPermaLink="false">http://www.neatcn.com/show-200-1.html</guid><dc:creator>gouki</dc:creator><fs:srclink>http://www.neatcn.com/show-200-1.html</fs:srclink><fs:srcfeed>http://www.neatcn.com/rss.php</fs:srcfeed><fs:itemid>feedsky/neatcn/~7070841/105478076/5179076</fs:itemid></item><item><title>Google Reader shared items [2008-08-16]</title><link>http://www.google.com/reader/shared/03597963246232603900#2008-08-16</link><guid>http://www.google.com/reader/shared/03597963246232603900#2008-08-16</guid><pubDate>Sat, 16 Aug 2008 00:00:00 +0800</pubDate><description>&lt;ul&gt;&lt;li&gt;&lt;a href='http://tech.idv2.com/2008/08/16/flicker-and-photosensitive-epilepsy/' title='link to ..'&gt;闪烁和感光症&lt;/a&gt;&lt;br/&gt;&lt;div&gt;感光症癫痫（Photosensitive Epilepsy）
是一种罕见的癫痫症。高速闪烁的灯光、连续出现的图案、闪烁的视频，甚至树叶被风吹动时摇曳的影子都有可能会引起感光症发作。
感光症引起各国的重视，是由于1997年的口袋妖怪事件。
1997年12月16日，《口袋妖怪》第38话《电脑..&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;</description><fs:burntype>mark day</fs:burntype><fs:srclink>http://tech.idv2.com/2008/08/16/flicker-and-photosensitive-epilepsy/</fs:srclink><fs:srcfeed>http://www.google.com/reader/public/atom/user/03597963246232603900/state/com.google/broadcast</fs:srcfeed><fs:itemid>feedsky/neatcn/~7124590/105265068/5179076</fs:itemid></item><item><title>详解REST与SOAP的“风格”</title><link>http://item.feedsky.com/~feedsky/neatcn/~7070841/104231008/5179076/1/item.html</link><description>&lt;p&gt;&amp;nbsp;&amp;nbsp; 摘要:&lt;font color=&quot;#006699&quot;&gt;REST是代表性状态传输的名称首字母缩写，与其说它是标准，不如说是一种风格。然而，在我的前一篇文章中，正如我们所讨论的，众多从事Web服务的软件设计师们认为SOAP过度复杂，于是，类似eBay和Google的服务都采用了REST风格的约束来暴露其大量数据&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;REST是代表性状态传输的名称首字母缩写，与其说它是标准，不如说是一种风格。然而，在我的前一篇文章中，正如我们所讨论的，众多从事Web服务的软件设计师们认为S&lt;a target=&quot;_blank&quot; title=&quot;oa,OA,办公自动化&quot; href=&quot;http://it.mie168.com/OA/index.htm&quot;&gt;OA&lt;/a&gt;P过度复杂，于是，类似eBay和&lt;a target=&quot;_blank&quot; title=&quot;google,Google,谷歌&quot; href=&quot;http://mie168.com/qiye/google.htm&quot;&gt;Google&lt;/a&gt;的服务都采用了REST风格的&lt;a target=&quot;_blank&quot; title=&quot;pingjing-yueshu,瓶颈,约束&quot; href=&quot;http://mie168.com/manage/pingjing-yueshu.htm&quot;&gt;约束&lt;/a&gt;来暴露其大量数据。 &lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;比较REST和SOAP的&amp;ldquo;风格&amp;rdquo;&lt;/strong&gt; &lt;br /&gt;
&lt;br /&gt;
REST依赖一套简单的&amp;ldquo;动词&amp;rdquo;，把所有的复杂性都转移到了指定资源的&amp;ldquo;名词&amp;rdquo;中。与此不同，SOAP却有一套相当复杂的XML格式化命令和数据传输选项。 &lt;br /&gt;
&lt;br /&gt;
在Web服务发展的初期，XML格式化消息的第一个主要用途是，应用于XML-RPC协议，其中RPC代表远程过程调用。在XML远程过程调 用(XML-RPC)中，客户端发送一条特定消息，该消息中必须包括名称、运行服务的程序以及输入参数。相反， REST风格的请求却不关心正在运行的程序是什么，它仅仅请求命名资源。 &lt;br /&gt;
&lt;br /&gt;
XML-RPC只能使用有限的数据类型种类和一些简单的数据结构。人们认为这个协议还不够强大，于是就出现了SOAP&amp;mdash;&amp;mdash;其最初的定义是简单 对象访问协议。之后，大家逐渐意识到SOAP其实并不简单，而且也不需要必须使用面向对象语言，所以，现在人们只是沿用SOAP这个名称而已。 &lt;br /&gt;
&lt;br /&gt;
XML-RPC只有简单的数据类型集，取而代之，SOAP是通过利用XML Schema的不断发展来定义数据类型的。同时，SOAP也能够利用XML 命名空间，这是XML-RPC所不需要的。如此一来，SOAP消息的开头部分就可以是任何类型的XML命名空间声明，其代价是在系统之间增加了更多的复杂 性和不兼容性。 &lt;br /&gt;
&lt;br /&gt;
另外，非常重要一点是，REST是需要请求HTTP的，与其相比，SOAP更具优势，SOAP消息可以由所有能够处理Unicode文本的传 输方式来传送，很可惜，这一点通常不被人们所认可。事实是，由于HTTP穿透防火墙的便捷性，以及开发商们对Web非常熟悉，因此，人们还在继续强调着 HTTP传输。 &lt;br /&gt;
&lt;br /&gt;
随着计算机行业的觉醒，人们发现了基于XML的Web服务的商业潜力，于是，各家公司开始不断地发掘想法、观点、论据以及标准化尝试。W3C曾经设法以&amp;ldquo;Web服务活动&amp;rdquo;的名义来&lt;a target=&quot;_blank&quot; title=&quot;zuzhi-mubiao,组织,目标&quot; href=&quot;http://mie168.com/manage/zuzhi-mubiao.htm&quot;&gt;组织&lt;/a&gt;成果展，其中也包括实际做出SOAP的XML协议工作组(XML Protocol Working Group)。与Web服务有关的标准化成果&amp;mdash;&amp;mdash;从某种程度上说与SOAP相关或者依赖于SOAP&amp;mdash;&amp;mdash;的数量已经倍增了到了令人惊讶的程度。 &lt;br /&gt;
&lt;br /&gt;
最初，SOAP是作为XML-RPC的扩展而发展起来的，它主要强调的是，通过从WSDL文件中所获得的方法和变量名来进行远程过程调用。现 在，通过不断进步，人们发现了更多的使用SOAP的方式，而不仅仅是采用&amp;ldquo;文件&amp;rdquo;方式&amp;mdash;&amp;mdash;基本上是使用一个SOAP信封来传送XML格式化文件。无论如 何，要掌握SOAP，了解WSDL所扮演的角色是最根本的。&lt;strong&gt;Web服务描述语言或WSDL&lt;/strong&gt; &lt;br /&gt;
&lt;br /&gt;
为了创建一个用于描述Web服务的XML格式化文件，Web服务描述语言(WSDL)标准提供了足够多的细节，以便能够构建出客户端代码，从而访问服务或者服务器端代码以提供服务。一个服务的WSDL文件将会为你提供以下几个方面的内容： &lt;br /&gt;
&lt;br /&gt;
用于访问服务的地址信息  &lt;br /&gt;
&lt;br /&gt;
用于传送信息的传输协议(例如，通道数)  &lt;br /&gt;
&lt;br /&gt;
用于所有可使用功能的名称和接口使用方法  &lt;br /&gt;
&lt;br /&gt;
在所有的请求和响应中所使用的数据类型 &lt;br /&gt;
&lt;br /&gt;
2001年3月，W3C推出了WSDL 1.1版本用于讨论，这并不是最终确定的规范。W3C Web服务描述工作组目前正在开发该规范的2.0版本，基本上已经到了尾声。虽然，WSDL通常是用于特定的SOAP服务，但是，从理论说，它是完全可以 用于特定的REST风格的GET或者POST操作的。 &lt;br /&gt;
&lt;br /&gt;
能够根据服务的WSDL描述来自动创建客户端和服务器端代码，支持这一功能的开发环境目前使用得很广泛，以便能够适用于Web服务器和Web 服务客户端的不同程序设计语言。如果你使用Google搜索&amp;ldquo;SOAP IDE&amp;rdquo;的话，大概会出现上百万条相关信息。也有这样的工具，根据Java或C#对象来生成相应的WSDL和代码。自动生成代码也许能够使你的开发效率更 高，但是离优化却是越来越远。 &lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;安全与SOAP&lt;/strong&gt; &lt;br /&gt;
&lt;br /&gt;
如果企业使用SOAP来传送有价值的信息的话，那么，安全就是最重要的问题。由OASIS组织发起，计算机行业的领导者们已经联合开发了一套标准，称为WS-Security。这个标准对基本的SOAP通信做出了改善，以便能够处理以下几个问题： &lt;br /&gt;
&lt;br /&gt;
消息机密性&amp;mdash;&amp;mdash;由于拦截HTTP消息的方式非常多，因此，在请求和响应过程中，必须能够对所有重要信息加密。很幸运，现在的加密技术非常先进，我们能够对消息内容进行加密，以保证消息不被修改。 &lt;br /&gt;
&lt;br /&gt;
客户和服务身份&amp;mdash;&amp;mdash;必须能够核实SOAP请求来源的身份。 &lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;结论&lt;/strong&gt; &lt;br /&gt;
&lt;br /&gt;
在开发人员的意识里，对于Web服务的开发而言，REST和SOAP风格各有千秋。SOAP拥有更为详尽的标准化成果和开源工具。除此之外， 现在，有许多集成开发环境能够在现有代码的基础上，依据接口方法自动生成SOAP。如果你需要使用WSDL来发布你的服务，或者你需要一些安全功能如消息 签名和加密，那么，SOAP能够确保消息的安全性。另一方面，如果你希望使用简单接口来公布一些信息，而不需要繁琐的处理过程，那么，REST也许是最佳 选择。&lt;/p&gt;
&lt;p&gt;&amp;mdash;&amp;mdash;END&amp;mdash;&amp;mdash;&lt;/p&gt;
&lt;p&gt;原文来自：http://it.mie168.com/SOA/2007-01/78597.htm&lt;/p&gt;</description><category domain="http://www.neatcn.com/category-1-1.html">PHP</category><pubDate>Fri, 15 Aug 2008 23:57:00 +0800</pubDate><author>gouki</author><guid isPermaLink="false">http://www.neatcn.com/show-199-1.html</guid><dc:creator>gouki</dc:creator><fs:srclink>http://www.neatcn.com/show-199-1.html</fs:srclink><fs:srcfeed>http://www.neatcn.com/rss.php</fs:srcfeed><fs:itemid>feedsky/neatcn/~7070841/104231008/5179076</fs:itemid></item><item><title>PHP+MYSQL的OA为何没有Java的值钱</title><link>http://item.feedsky.com/~feedsky/neatcn/~7070841/105478077/5179076/1/item.html</link><description>&lt;p&gt;本文来自于天极网。意见不敢苟同，COPY过来也是想听听大家的意见。&lt;br /&gt;
原文如下：&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;
&lt;div class=&quot;codeHead&quot;&gt;为什么PHP+MYSQL的OA不如JAVA写的值钱？？？&lt;/div&gt;
&lt;ol start=&quot;1&quot; class=&quot;dp-xml&quot;&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;现在市场上的oa基本上可归结为两大阵营，即php阵营和java阵营。但对接触oa不久的用户来说，看到的往往只是它们的表相，只是明显的价格差异，却很难看出它们之间的实际差异。其实，&amp;nbsp;PHP&amp;nbsp;+&amp;nbsp;MYSQL&amp;nbsp;不值钱不仅仅局限于oa软件，而是整体上PHP&amp;nbsp;+&amp;nbsp;MYSQL开发的软件都不如java开发的软件值钱。为什么PHP&amp;nbsp;+&amp;nbsp;MYSQL&amp;nbsp;的OA为什么不值钱呢？首先得明白php和java之间的差异才行。&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;　　1、&lt;strong&gt;系统的技术架构比较&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;　　分层是将系统进行有效组织的方式，分而治之的思想是计算机领域中非常重要的思想。在好的分层思想引导下，便能实现&amp;ldquo;高内聚、低耦合&amp;rdquo;，也能将具体的问题割裂开来，易于控制、易于延展，更易于分配资源。PHP只能实现简单的分布式两层或三层的架构，而JAVA在这方面就十分强大，可以实现多层的网络架构。运用MVC的设计模式，可使oa系统具有更加高效、合理的系统架构。技术架构的落后，使运用php编写的oa软件系统先天不足，而后天又无法补足其先天上的劣势。使得系统在可拓展性、需求应变性上与JAVA编写的oa软件系统的差距越来越大。架构的差距，注定了php做的oa充其量是个小家碧玉，始终无法和java这种大家闺秀同台竞技。&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;　　2、&lt;strong&gt;数据库访问比较&amp;nbsp;&amp;nbsp;&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;　　PHP可编译成具有与许多数据库相连接的函数。将自己编写外围的函数去间接存取数据库。通过这样的途径当更换使用的数据库时，可以轻松地修改编码以适应这样的变化。但PHP提供的数据库接口支持彼此不统一，比如对Oracle,&amp;nbsp;MySQL，Sybase的接口，彼此都不一样。由于PHP对于不同的数据库采用不同的数据库访问接口，所以数据库访问代码的通用性不强。&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;　　而Java通过JDBC来访问数据库，通过不同的数据库厂商提供的数据库驱动方便地访问数据库，访问数据库的接口比较统一。如果同样是将开发的web应用从MYSQL数据数转到ORACLE数据，PHP需要做大量的修改工作，而且比较繁琐。但JAVA开发的便只需要很少的更改便能实现。&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;　　数据库访问方式的差异，奠定了php开发出的oa和java开发出来的oa是马车和火车的差距，前者只能亦步亦趋而且额度有限，后者却是工业化的结晶，不仅能够包容万物而且速度上稳步提升。&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;　　3、&lt;strong&gt;安全性对比&amp;nbsp;&amp;nbsp;&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;　　在同是开源和跨平台的java面前，php丢掉了很多的优势。在代码的安全性上尤为突出。php的开发程序在别人拿到代码后，可以很容易的进行修改。而&amp;nbsp;java开发的程序由于无法看到完整的源代码，只能看到一些编译好的类文件，所以安全性较高。加之系统架构的优势，在安全性上php和java是相去甚远。&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;　　如果非要将php和java在安全性上做个比较的话，同一个小偷光顾php那是随便拿来随便改，想拿什么拿什么，拿的高兴还能大笔一辉某某到此一游。而光顾java的时候，便会发现警察把守，内设自动报警装置，即便突破重重阻扰后进入居室。那值钱的东西都放在加密后的保险柜中，只能望洋兴叹、铩羽而归。&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;　　4、&lt;strong&gt;前瞻性和拓展性&amp;nbsp;&amp;nbsp;&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;　　从整体来说，php适用于中小型系统，而java适用于大型系统。Php能够将单一的事件做好，但却不适合完成集成度较高的多项并发事件。为什么说php适合中小型系统而不适合做大系统呢？&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;　　首先，&amp;nbsp;php缺乏多层结构支持。而对于大型的系统负荷站点，只能采用分布计算。将数据库、应用逻辑层和表示逻辑层彼此分开，并将同层的根据流量分开，组成二维数组。而php恰恰缺乏这种支持。&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;　　其次，PHP提供的数据库接口不统一，要将多个不同的数据库数据统一需要花费很大的力气。而JAVA则没有这种缺陷，可通过SUN&amp;nbsp;Java的Java&amp;nbsp;Class和EJB获得规模支持，通过EJB/CORBA以及众多厂商的Application&amp;nbsp;Server获得结构支持。如IBM的E－business，它的核心是采用JSP/Servlet的Web&amp;nbsp;Sphere，是通过CGI来提供支持的。&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;　　如果将Php比作将才，具备独挡一方的能力。那么java便是帅才，具有较好的前瞻性和拓展性，整体布局和协同能力强。能够指挥千军万马，最后逐鹿中原。&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;　　5、&lt;strong&gt;开发成本比较&amp;nbsp;&amp;nbsp;&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;　　既然php在诸多方面都不如java优异，那么php开发出的oa产品何以与java产品竞争呢？在于Php阵营普遍走的是低端路线，而java阵营走的是中高端路线。两者之间交叉的区域较小。&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;　　软件价格的高低很大程度上和自身成本和功能相挂钩。php的入门门槛较低，绝大多数学过c的程序员都很容易转型为php程序员，这使得php程序员的泛滥成灾的同时，低成本的php软件产品也层出不穷。以PHP最经典的组合PHP&amp;nbsp;+&amp;nbsp;MySQL&amp;nbsp;+&amp;nbsp;Apache为例，由于所有软件都是开源免费的，所以投入并不高。&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;　　而java开发需要特定的环境，成长为一个合格的java程序员需要一定的时间，java程序员的成本也是php成本的几倍。Java的web应用服务器免费的有Tomcat、JBoss等，而要想具有很好的商业化服务便必须选用Web&amp;nbsp;Sphere和&amp;nbsp;Web&amp;nbsp;logic。这其中投入的成本无形中便超是php成本的N倍。所以，java开发oa的成本要远远高于php开发出来的同类软件产品。但也正由于java&amp;nbsp;开发的成本较高，很难实现抄袭和短期内逾越的可能，也使得java用开发出的产品门槛更高。&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;　　不怕不识货，就怕货比货。Php开发出来的产品也能用，但是和java开出的同类产品是没法比较的。正因为php开发的产品整体性能和java开发的相去甚远，所以php运用低成本的低价优势和同类的java产品抗争，以价格落差来平衡购买者的心态。所以，PHP&amp;nbsp;+&amp;nbsp;MYSQL&amp;nbsp;的OA不值钱也就不足为怪了。&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;在作者眼里，PHP好象就只能处于低层次的开发。其实开发这东西也是双面性的，你让一个新手写JAVA和让我一个老手写PHP，写出来的东西你认为哪个值钱？&lt;br /&gt;
之所以JAVA比PHP值钱，归根结底还是观念，大多数人认为JAVA是科班出身，而PHP则是扎根草堆，虽然最近两年也开始逐步有培训班的出现，但和JAVA比起来就差远了。&lt;br /&gt;
就象大腕里说的：你要用PHP写的OA，你都不好意思提出口，怎么着也得是JAVA，.NET之类的吧。&lt;/p&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=9591175d33e3b76321bd16d38867191d&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=9591175d33e3b76321bd16d38867191d&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=19617e20efd505ae94d64987c217924f&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=19617e20efd505ae94d64987c217924f&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=bf605c4bb48256976bc4e83a0be7dd65&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=bf605c4bb48256976bc4e83a0be7dd65&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=82ea2a53d4641a369cf4fcb9fe5dd26d&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=82ea2a53d4641a369cf4fcb9fe5dd26d&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=4321f990b98beafd553bbd8f2c202aca&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=4321f990b98beafd553bbd8f2c202aca&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=072c56c74b73b32fd536e3c7381bfa78&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=072c56c74b73b32fd536e3c7381bfa78&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=efdfcef91fe4b1a44a0254f8798374ed&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=efdfcef91fe4b1a44a0254f8798374ed&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category domain="http://www.neatcn.com/category-5-1.html">Misc</category><pubDate>Fri, 15 Aug 2008 23:54:00 +0800</pubDate><author>gouki</author><guid isPermaLink="false">http://www.neatcn.com/show-198-1.html</guid><dc:creator>gouki</dc:creator><fs:srclink>http://www.neatcn.com/show-198-1.html</fs:srclink><fs:srcfeed>http://www.neatcn.com/rss.php</fs:srcfeed><fs:itemid>feedsky/neatcn/~7070841/105478077/5179076</fs:itemid></item><item><title>REST与SOAP之比较——SOAP篇</title><link>http://item.feedsky.com/~feedsky/neatcn/~7070841/105478078/5179076/1/item.html</link><description>&lt;p&gt;比较REST和SOAP的&amp;ldquo;风格&amp;rdquo;&lt;br /&gt;
&lt;br /&gt;
REST依赖一套简单的&amp;ldquo;动词&amp;rdquo;，把所有的复杂性都转移到了指定资源的&amp;ldquo;名词&amp;rdquo;中。与此不同，SOAP却有一套相当复杂的XML格式化命令和数据传输选项。&lt;br /&gt;
&lt;br /&gt;
在Web服务发展的初期，XML格式化消息的第一个主要用途是，应用于XML-RPC协议，其中RPC代表远程过程调用。在XML远程过程调用(XML-RPC)中，客户端发送一条特定消息，该消息中必须包括名称、运行服务的程序以及输入参数。相反， REST风格的请求却不关心正在运行的程序是什么，它仅仅请求命名资源。&lt;br /&gt;
&lt;br /&gt;
XML-RPC只能使用有限的数据类型种类和一些简单的数据结构。人们认为这个协议还不够强大，于是就出现了SOAP&amp;mdash;&amp;mdash;其最初的定义是简单对象访问协议。之后，大家逐渐意识到SOAP其实并不简单，而且也不需要必须使用面向对象语言，所以，现在人们只是沿用SOAP这个名称而已。&lt;br /&gt;
&lt;br /&gt;
XML-RPC只有简单的数据类型集，取而代之，SOAP是通过利用XML Schema的不断发展来定义数据类型的。同时，SOAP也能够利用XML 命名空间，这是XML-RPC所不需要的。如此一来，SOAP消息的开头部分就可以是任何类型的XML命名空间声明，其代价是在系统之间增加了更多的复杂性和不兼容性。&lt;br /&gt;
&lt;br /&gt;
另外，非常重要一点是，REST是需要请求HTTP的，与其相比，SOAP更具优势，SOAP消息可以由所有能够处理Unicode文本的传输方式来传送，很可惜，这一点通常不被人们所认可。事实是，由于HTTP穿透防火墙的便捷性，以及开发商们对Web非常熟悉，因此，人们还在继续强调着HTTP传输。&lt;br /&gt;
&lt;br /&gt;
随着计算机行业的觉醒，人们发现了基于XML的Web服务的商业潜力，于是，各家公司开始不断地发掘想法、观点、论据以及标准化尝试。W3C曾经设法以&amp;ldquo;Web服务活动&amp;rdquo;的名义来组织成果展，其中也包括实际做出SOAP的XML协议工作组(XML Protocol Working Group)。与Web服务有关的标准化成果&amp;mdash;&amp;mdash;从某种程度上说与SOAP相关或者依赖于SOAP&amp;mdash;&amp;mdash;的数量已经倍增了到了令人惊讶的程度。&lt;br /&gt;
&lt;br /&gt;
最初，SOAP是作为XML-RPC的扩展而发展起来的，它主要强调的是，通过从WSDL文件中所获得的方法和变量名来进行远程过程调用。现在，通过不断进步，人们发现了更多的使用SOAP的方式，而不仅仅是采用&amp;ldquo;文件&amp;rdquo;方式&amp;mdash;&amp;mdash;基本上是使用一个SOAP信封来传送XML格式化文件。无论如何，要掌握SOAP，了解WSDL所扮演的角色是最根本的。&lt;br /&gt;
&lt;br /&gt;
Web服务描述语言或WSDL&lt;br /&gt;
为了创建一个用于描述Web服务的XML格式化文件，Web服务描述语言(WSDL)标准提供了足够多的细节，以便能够构建出客户端代码，从而访问服务或者服务器端代码以提供服务。一个服务的WSDL文件将会为你提供以下几个方面的内容：&lt;br /&gt;
&lt;br /&gt;
用于访问服务的地址信息 &lt;br /&gt;
用于传送信息的传输协议(例如，通道数) &lt;br /&gt;
用于所有可使用功能的名称和接口使用方法 &lt;br /&gt;
在所有的请求和响应中所使用的数据类型&lt;br /&gt;
2001年3月，W3C推出了WSDL 1.1版本用于讨论，这并不是最终确定的规范。W3C Web服务描述工作组目前正在开发该规范的2.0版本，基本上已经到了尾声。虽然，WSDL通常是用于特定的SOAP服务，但是，从理论说，它是完全可以用于特定的REST风格的GET或者POST操作的。&lt;br /&gt;
&lt;br /&gt;
能够根据服务的WSDL描述来自动创建客户端和服务器端代码，支持这一功能的开发环境目前使用得很广泛，以便能够适用于Web服务器和Web服务客户端的不同程序设计语言。如果你使用Google搜索&amp;ldquo;SOAP IDE&amp;rdquo;的话，大概会出现上百万条相关信息。也有这样的工具，根据Java或C#对象来生成相应的WSDL和代码。自动生成代码也许能够使你的开发效率更高，但是离优化却是越来越远。&lt;br /&gt;
&lt;br /&gt;
安全与SOAP&lt;br /&gt;
&lt;br /&gt;
如果企业使用SOAP来传送有价值的信息的话，那么，安全就是最重要的问题。由OASIS组织发起，计算机行业的领导者们已经联合开发了一套标准，称为WS-Security。这个标准对基本的SOAP通信做出了改善，以便能够处理以下几个问题：&lt;br /&gt;
&lt;br /&gt;
消息机密性&amp;mdash;&amp;mdash;由于拦截HTTP消息的方式非常多，因此，在请求和响应过程中，必须能够对所有重要信息加密。很幸运，现在的加密技术非常先进，我们能够对消息内容进行加密，以保证消息不被修改。&lt;br /&gt;
&lt;br /&gt;
客户和服务身份&amp;mdash;&amp;mdash;必须能够核实SOAP请求来源的身份。&lt;br /&gt;
&lt;br /&gt;
结论&lt;br /&gt;
&lt;br /&gt;
在开发人员的意识里，对于Web服务的开发而言，REST和SOAP风格各有千秋。SOAP拥有更为详尽的标准化成果和开源工具。除此之外，现在，有许多集成开发环境能够在现有代码的基础上，依据接口方法自动生成SOAP。如果你需要使用WSDL来发布你的服务，或者你需要一些安全功能如消息签名和加密，那么，SOAP能够确保消息的安全性。另一方面，如果你希望使用简单接口来公布一些信息，而不需要繁琐的处理过程，那么，REST也许是最佳选择。&lt;br /&gt;
&lt;br /&gt;
&amp;mdash;&amp;mdash;END&amp;mdash;&amp;mdash;&lt;br /&gt;
原文来自：http://www.diybl.com/course/3_program/java/javajs/2007918/71772.html&lt;br /&gt;
仅作参考&lt;/p&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=74d97b66c83d78e1241c761d9ace32d3&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=74d97b66c83d78e1241c761d9ace32d3&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=0b6c581dd180fd99214cc76ca7f24075&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=0b6c581dd180fd99214cc76ca7f24075&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=ccd4162ca7f5f1da4d2bcdbf4d1a074f&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=ccd4162ca7f5f1da4d2bcdbf4d1a074f&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=c8e7b949505927834723f51e6c16000a&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=c8e7b949505927834723f51e6c16000a&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=b17a0f63e718d7af3c1df7381614243c&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=b17a0f63e718d7af3c1df7381614243c&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=71f42bd55980a14041ac0cfccb3f4e50&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=71f42bd55980a14041ac0cfccb3f4e50&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=2854e6efad43fd9380840a23e80d8bcc&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=2854e6efad43fd9380840a23e80d8bcc&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category domain="http://www.neatcn.com/category-1-1.html">PHP</category><pubDate>Fri, 15 Aug 2008 23:41:00 +0800</pubDate><author>gouki</author><guid isPermaLink="false">http://www.neatcn.com/show-197-1.html</guid><dc:creator>gouki</dc:creator><fs:srclink>http://www.neatcn.com/show-197-1.html</fs:srclink><fs:srcfeed>http://www.neatcn.com/rss.php</fs:srcfeed><fs:itemid>feedsky/neatcn/~7070841/105478078/5179076</fs:itemid></item><item><title>REST与SOAP的比较——REST篇</title><link>http://item.feedsky.com/~feedsky/neatcn/~7070841/105478079/5179076/1/item.html</link><description>&lt;p&gt;　我有这样一个推断，在计算机世界中，但凡那些让开发人员记住的重要概念，都有一个很酷的名称首字母缩写，否则的话，开发人员很快就会将其抛之脑后。比如Ajax、SOAP以及REST就证明了这一点。&lt;br /&gt;
&lt;br /&gt;
REST能够在计算机领域被广泛采用，它走的道路是不同寻常的。这个术语是由Roy Fielding创造的。Fielding毕业于Irvine市加利福尼亚大学，在他的博士学位论文中第一次提出了REST这个概念。在Web方面，我们必须承认Fielding是非常精通的，他曾经帮助创建HTTP 1.0规范，该规范从1996年开始就为Web提供基本准则。他在Web标准方面非常有经验，这为他的这篇博士论文奠定了坚实的基础。&lt;br /&gt;
&lt;br /&gt;
Fielding指出，使用且符合代表性状态传输(REST)设计约束的 Web 上部署的组件，可以充分利用 Web 的有用特性，万维网(World Wide Web)才能够达到最佳的工作效果。可以这样理解REST&amp;mdash;&amp;mdash;当一个浏览器得到并且显示构成HTML页面的各个元素时，它正在获取资源的当前状态的表现形式。在Fielding的博士论文中，他列举了REST风格的设计约束，并且解释了为什么这些约束能够充分利用Web 的有用特性，使其达到最佳状态，以及这些约束的关键所在。同时，在论文中，他也包含了一些关于REST和某些目前的Web风格之间 &amp;ldquo;不符合&amp;rdquo;的讨论，以及这些Web风格是如何导致设计无法利用Web特性的。&lt;br /&gt;
&lt;br /&gt;
Fielding认为，对于使用HTTP承载应用程序协议穿越防火墙，XML-RPC 和SOAP所采用的方式是&amp;ldquo;从根本上被误导的概念。&amp;rdquo;它们所采用的方式违背了设立防火墙的概念，结果是，防火墙厂商为了保护系统需要侦察出所承载的协议。由于大多数SOAP应用程序使用HTTP都是为了穿越防火墙，因此，你可以发现REST与SOAP之间的冲突是从哪里开始的。Fielding认为，如果你打算使用HTTP的话，就应该与充分利用HTTP本身的含义。&lt;br /&gt;
&lt;br /&gt;
REST风格强调，通过有限的操作或者是&amp;ldquo;动词&amp;rdquo;以及一个组件之间的标准接口，也就是HTTP协议提供的借口，来提升客户与服务之间的交互。通过为每一个资源分配其自己的URL，来实现灵活性，REST可以调用包含上百个URI的资源类型的客户，其中的关键是REST能够给你无限多的&amp;ldquo;名词&amp;rdquo;。REST使用HTTP的动词&amp;mdash;&amp;mdash;简单的良定义操作集:POST, GET, PUT,DELETE进行请求和响应，从而避免了歧义。举个例子，GET只能够简单地返回资源的表现形式，而不能够创建任何其他的内容。&lt;br /&gt;
&lt;br /&gt;
在Web发展的初期，由于人们都在试验通过收集各种不同来源的元素，从而把Web应用程序融合在一起，有大量这种Web服务的不成熟探索的例子&amp;mdash;&amp;mdash;从HTTP页面中解析信息，用于页面创建者没有计划到的用途。这种&amp;ldquo;屏幕抓取&amp;rdquo;的Web类比表明，REST风格的方法是先于那些更加复杂的Web服务而出现的。&lt;br /&gt;
&lt;br /&gt;
REST是一种风格而不是一个标准&lt;br /&gt;
&lt;br /&gt;
你可能会把软件的架构风格当作对上层设计模式的抽象。然而，根据Fielding所说，设计模式的堆砌并不等同于架构风格，因为模式是非常接近于特定问题的。&lt;br /&gt;
&lt;br /&gt;
由于REST是超文本系统的一种风格，而不是Web服务的，因此，本文的标题&amp;ldquo;REST与SOAP之比较&amp;rdquo;就有些让人误解。然而，很多软件设计人员会将其混淆，他们在考虑如何创建Web服务时，会得出这样的结论：SOAP过于复杂，而简单的类似于REST的设计却更加适合。&lt;br /&gt;
&lt;br /&gt;
REST与RPC风格之比较&lt;br /&gt;
&lt;br /&gt;
远程过程调用的架构，是应用在基于XML-RPC或者 RPC风格的SOAP的Web服务中的，它却有着完全不同的风格。客户端发出命令，以使服务做出特定的操作。换句话说，RPC有动词的倾向。&lt;br /&gt;
&lt;br /&gt;
REST强调资源(名词)有统一的接口以此来对它们寻址，而RPC强调过程(动词)有统一的接口来激发它们。一个基于RPC的架构，动词数量是没有限制的。REST说，我们使用四个动词&amp;mdash;&amp;mdash;非常熟悉，HTTP标准的GET、POST、PUT以及DELETE&amp;mdash;&amp;mdash;来进行请求和响应，REST使用资源寻址来处理其可变性。&lt;br /&gt;
&lt;br /&gt;
一个简单的REST举例&lt;br /&gt;
&lt;br /&gt;
假设我们希望一个Web服务暴露一部分目录，从这个目录中，用户将能够得到一些描述、图片、安装指令等等。为了得到数字&amp;ldquo;n1996-01&amp;rdquo;的描述，用户需要格式化一个GET请求，类似于下面的这个URL：&lt;br /&gt;
&lt;br /&gt;
http://company.com/catalog/description/n1996-01&lt;br /&gt;
&lt;br /&gt;
在处理这个请求时，&amp;ldquo;/catalog&amp;rdquo;将映射到一个服务中，之后，通过该服务对&amp;ldquo;description/n1996-01&amp;rdquo;进行解释，从而定位资源。在创建响应时，服务需要使用内容类型(Content-Type)的头文件来指定返回格式。在这种情况下，假定返回格式是HTML或者XML，客户端能够使用它来控制页面的布局。如果要得到图片，那么这个请求将对&amp;ldquo;/catalog/picture/n1996-01&amp;rdquo;进行寻址，返回的响应将是图片内容类型(Content-Type)。&lt;br /&gt;
&lt;br /&gt;
REST的商业应用&lt;br /&gt;
&lt;br /&gt;
最近几年，大多数Web商业企业开始对REST非常感兴趣。Google Data API(目前还在测试版本)专门使用REST规则来提供简单的协议。对服务的HTTP GET请求的响应结果是，采用Atom或者是RSS联合格式的XML数据。Google也使用Atom以及POST、PUT和DELETE操作来完成公共协议。eBay服务提供通过使用不同语言工具来访问服务，这些工具包括文档/文字风格的SOAP以及REST风格。&lt;br /&gt;
&lt;br /&gt;
那么，对于XML-RPC和SOAP所具有的RPC风格而言，REST风格是否是一个具有竞争力的替代者呢?当然，我决不这样认为，在下一篇文章中，我将尽量向大家展现SOAP所向无敌的领域。&lt;br /&gt;
&amp;mdash;&amp;mdash;&amp;mdash;END&amp;mdash;&amp;mdash;&lt;br /&gt;
原文来自：http://www.diybl.com/course/3_program/java/javajs/2007918/71777.html&lt;br /&gt;
仅作参考&lt;/p&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=0d05f0832d3111ba303d9d0979226037&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=0d05f0832d3111ba303d9d0979226037&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=0f99658f7e1c58ab7a5c2aef3319c604&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=0f99658f7e1c58ab7a5c2aef3319c604&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=692792a2a0cfc9e2dc40d7a2ca2a3599&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=692792a2a0cfc9e2dc40d7a2ca2a3599&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=807aece8eefeee4c26428558d76cf8dd&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=807aece8eefeee4c26428558d76cf8dd&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=803d91f8be91c505951068af70f5ed14&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=803d91f8be91c505951068af70f5ed14&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=37efd8427974deaf613fe03d88565002&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=37efd8427974deaf613fe03d88565002&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/neatcn?a=0ea4c17f6cf5b7eee56f680e5f2ea19f&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/neatcn?i=0ea4c17f6cf5b7eee56f680e5f2ea19f&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category domain="http://www.neatcn.com/category-1-1.html">PHP</category><pubDate>Fri, 15 Aug 2008 23:40:00 +0800</pubDate><author>gouki</author><guid isPermaLink="false">http://www.neatcn.com/show-196-1.html</guid><dc:creator>gouki</dc:creator><fs:srclink>http://www.neatcn.com/show-196-1.html</fs:srclink><fs:srcfeed>http://www.neatcn.com/rss.php</fs:srcfeed><fs:itemid>feedsky/neatcn/~7070841/105478079/5179076</fs:itemid></item><item><title>javascript---浅析注册事件</title><link>http://item.feedsky.com/~feedsky/neatcn/~7070841/105478080/5179076/1/item.html</link><description>&lt;p&gt;在这个浮躁的世界里，说实话，很难看到一两篇好的文章，我写的一般都比较垃圾，但我会尽量发现精品。在闲逛的时候发现这篇文章确实不错，虽然讲的比较简单一点。&lt;/p&gt;
&lt;p&gt;文章是从cssrain.cn上COPY而来，原文网址为：http://item.feedsky.com/~feedsky/cssrain/~6110346/103912558/4218245/1/item.html&lt;/p&gt;
&lt;p&gt;内容如下：&lt;/p&gt;
&lt;p&gt;首先是最常规的方法：&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;
&lt;div class=&quot;codeHead&quot;&gt;XML/HTML代码&lt;/div&gt;
&lt;ol class=&quot;dp-xml&quot; start=&quot;1&quot;&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;tag-name&quot;&gt;p&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;attribute&quot;&gt;id&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&amp;quot;para&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;attribute&quot;&gt;title&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&amp;quot;cssrain&amp;nbsp;demo!&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;attribute&quot;&gt;onclick&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&amp;quot;test()&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;test&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;tag-name&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;tag-name&quot;&gt;script&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;function&amp;nbsp;test(){&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;alert(&amp;quot;test&amp;quot;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;tag-name&quot;&gt;script&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;当某一天，我们知道JavaScript要跟HTML结构实现分离后，就会改了一种写法:&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;
&lt;div class=&quot;codeHead&quot;&gt;XML/HTML代码&lt;/div&gt;
&lt;ol class=&quot;dp-xml&quot; start=&quot;1&quot;&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;tag-name&quot;&gt;p&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;attribute&quot;&gt;id&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&amp;quot;para&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;attribute&quot;&gt;title&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&amp;quot;cssrain&amp;nbsp;demo!&amp;quot;&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;test&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;tag-name&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;tag-name&quot;&gt;script&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;function&amp;nbsp;test(){&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;alert(&amp;quot;test&amp;quot;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&lt;span class=&quot;attribute&quot;&gt;window.onload&lt;/span&gt;&lt;span&gt;&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;function&lt;/span&gt;&lt;span&gt;(){&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;document.getElementById(&amp;quot;para&amp;quot;)&lt;span class=&quot;attribute&quot;&gt;.onclick&lt;/span&gt;&lt;span&gt;&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;test&lt;/span&gt;&lt;span&gt;;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;tag-name&quot;&gt;script&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;当我们工作越来越久后，有时候我们需要对某个元素绑定多个相同的事件类型：&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;
&lt;div class=&quot;codeHead&quot;&gt;XML/HTML代码&lt;/div&gt;
&lt;ol class=&quot;dp-xml&quot; start=&quot;1&quot;&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;tag-name&quot;&gt;p&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;attribute&quot;&gt;id&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&amp;quot;para&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;attribute&quot;&gt;title&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&amp;quot;cssrain&amp;nbsp;demo!&amp;quot;&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;test&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;tag-name&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;tag-name&quot;&gt;script&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;function&amp;nbsp;test(){&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;alert(&amp;quot;test&amp;quot;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;function&amp;nbsp;pig(){&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;alert(&amp;quot;pig&amp;quot;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;attribute&quot;&gt;window.onload&lt;/span&gt;&lt;span&gt;&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;function&lt;/span&gt;&lt;span&gt;(){&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;document.getElementById(&amp;quot;para&amp;quot;).attachEvent(&amp;quot;onclick&amp;quot;,test);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;document.getElementById(&amp;quot;para&amp;quot;).attachEvent(&amp;quot;onclick&amp;quot;,pig);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;tag-name&quot;&gt;script&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;在一段时间内，你并没发现这段代码有任何错误。&lt;br /&gt;
某一天，一个名叫firefox的浏览器 闯入你的视野，当我们把这段代码放到firefox中执行后，&lt;br /&gt;
发现并不能正常运行。 问题就这样，越来越多，然而作为一名JS程序员，这些都是必须面对的。&lt;br /&gt;
&lt;br /&gt;
为了解决这段代码的平台兼容性问题，我翻翻手册，知道了firefox跟ie的区别：&lt;br /&gt;
firefox中注册事件使用：addEventListener方法，同时为了兼容ie，我们必须用到if ... else...&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;
&lt;div class=&quot;codeHead&quot;&gt;XML/HTML代码&lt;/div&gt;
&lt;ol class=&quot;dp-xml&quot; start=&quot;1&quot;&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;tag-name&quot;&gt;p&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;attribute&quot;&gt;id&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&amp;quot;para&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;attribute&quot;&gt;title&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&amp;quot;cssrain&amp;nbsp;demo!&amp;quot;&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;test&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;tag-name&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;tag-name&quot;&gt;script&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;function&amp;nbsp;test(){&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;alert(&amp;quot;test&amp;quot;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;function&amp;nbsp;pig(){&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;alert(&amp;quot;pig&amp;quot;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;attribute&quot;&gt;window.onload&lt;/span&gt;&lt;span&gt;&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;function&lt;/span&gt;&lt;span&gt;(){&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;&lt;span class=&quot;attribute&quot;&gt;element&lt;/span&gt;&lt;span&gt;&amp;nbsp;=&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;document&lt;/span&gt;&lt;span&gt;.getElementById(&amp;quot;para&amp;quot;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(element.addEventListener){&amp;nbsp;&amp;nbsp;//&amp;nbsp;firefox&amp;nbsp;&amp;nbsp;,&amp;nbsp;w3c&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;element.addEventListener(&amp;quot;click&amp;quot;,test,false);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;element.addEventListener(&amp;quot;click&amp;quot;,pig,false);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;ie&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;element.attachEvent(&amp;quot;onclick&amp;quot;,test);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;element.attachEvent(&amp;quot;onclick&amp;quot;,pig);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;tag-name&quot;&gt;script&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;此时，代码就可以在多个平台上工作了。&lt;br /&gt;
&lt;br /&gt;
但随着水平的进步，你不满足每次都去判断，你想把这个判断封装起来，以后可以直接调用：&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;
&lt;div class=&quot;codeHead&quot;&gt;XML/HTML代码&lt;/div&gt;
&lt;ol class=&quot;dp-xml&quot; start=&quot;1&quot;&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;tag-name&quot;&gt;p&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;attribute&quot;&gt;id&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&amp;quot;para&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;attribute&quot;&gt;title&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&amp;quot;cssrain&amp;nbsp;demo!&amp;quot;&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;test&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;tag-name&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;tag-name&quot;&gt;script&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;function&amp;nbsp;test(){&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;alert(&amp;quot;test&amp;quot;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;function&amp;nbsp;pig(){&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;alert(&