﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>博客园-nfa2dfa</title><link>http://www.cnblogs.com/huazhihao/</link><description>诽谤现代人是我的乐趣</description><language>zh-cn</language><lastBuildDate>Mon, 06 Oct 2008 15:33:58 GMT</lastBuildDate><pubDate>Mon, 06 Oct 2008 15:33:58 GMT</pubDate><ttl>60</ttl><item><title>html交替注释</title><link>http://www.cnblogs.com/huazhihao/archive/2008/09/11/1288833.html</link><dc:creator>nfa2dfa</dc:creator><author>nfa2dfa</author><pubDate>Thu, 11 Sep 2008 01:22:00 GMT</pubDate><guid>http://www.cnblogs.com/huazhihao/archive/2008/09/11/1288833.html</guid><wfw:comment>http://www.cnblogs.com/huazhihao/comments/1288833.html</wfw:comment><comments>http://www.cnblogs.com/huazhihao/archive/2008/09/11/1288833.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/huazhihao/comments/commentRss/1288833.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/huazhihao/services/trackbacks/1288833.html</trackback:ping><description><![CDATA[<p>&lt;!--<br />
odd<br />
&lt;!--&gt;<br />
even<br />
&lt;!----&gt;<br />
</p><img src ="http://www.cnblogs.com/huazhihao/aggbug/1288833.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42809/" target="_blank">[新闻]51.COM技术副总裁邵辉跳槽百度</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>通用写文件aspx.cs</title><link>http://www.cnblogs.com/huazhihao/archive/2008/09/01/1280990.html</link><dc:creator>nfa2dfa</dc:creator><author>nfa2dfa</author><pubDate>Mon, 01 Sep 2008 02:31:00 GMT</pubDate><guid>http://www.cnblogs.com/huazhihao/archive/2008/09/01/1280990.html</guid><wfw:comment>http://www.cnblogs.com/huazhihao/comments/1280990.html</wfw:comment><comments>http://www.cnblogs.com/huazhihao/archive/2008/09/01/1280990.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/huazhihao/comments/commentRss/1280990.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/huazhihao/services/trackbacks/1280990.html</trackback:ping><description><![CDATA[<p>Response.Clear();<br />
Response.AddHeader("Content-Disposition", "attachment;FileName=" + clientname);<br />
Response.ContentType = "application/octet-stream";<br />
Response.WriteFile(filename);//Response.TransmitFile(filename);<br />
</p>
<p>&nbsp;</p>
<img src ="http://www.cnblogs.com/huazhihao/aggbug/1280990.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42807/" target="_blank">[新闻]Mono 2.0终于到来</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>Http Cookies Tips</title><link>http://www.cnblogs.com/huazhihao/archive/2008/05/09/Http_Cookies_Tips.html</link><dc:creator>nfa2dfa</dc:creator><author>nfa2dfa</author><pubDate>Fri, 09 May 2008 03:50:00 GMT</pubDate><guid>http://www.cnblogs.com/huazhihao/archive/2008/05/09/Http_Cookies_Tips.html</guid><wfw:comment>http://www.cnblogs.com/huazhihao/comments/1189692.html</wfw:comment><comments>http://www.cnblogs.com/huazhihao/archive/2008/05/09/Http_Cookies_Tips.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/huazhihao/comments/commentRss/1189692.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/huazhihao/services/trackbacks/1189692.html</trackback:ping><description><![CDATA[references:<br/ />
<a class="externallink" href="http://en.wikipedia.org/wiki/URI_scheme">http://en.wikipedia.org/wiki/HTTP_cookie</a><br/ />
<a class="externallink" href="http://en.wikipedia.org/wiki/URI_scheme">http://wp.netscape.com/newsref/std/cookie_spec.html</a>
<h1>basic sequence</h1>
<pre>
//browser &lt; server 
//response header
//Set-Cookie: A=a; B=b; Z=z
//document.cookie=="A=a; B=b; Z=z"
document.cookie = "name=value";
//document.cookie=="A=a; B=b; name=value; Z=z" //ordered by Ascend
document.cookie = "name=value2";
//document.cookie=="A=a; B=b; name=value2; Z=z" //3rd part cookie can be modified
document.cookie = "Z=z2";
//document.cookie=="A=a; B=b; name=value2; Z=z" //1st part cookie can't be modified
//maybe document.cookie=="A=a; B=b; name=value2;Z=z2;  Z=z" //1st part cookie can't be modified
//browser &gt; server 
//request header
//Cookie: A=a; B=b; name=value2; Z=z
</pre>
<h1>special names</h1>
Set-Cookie: NAME=VALUE; expires=DATE; path=PATH; domain=DOMAIN_NAME; secure
<h1>tips</h1>
<ul>
<li>多个ie进程使用各自的cookie,同一个ie进程的多个tab使用一个cookie。</li>
<li>document.cookie是一个对象，使用其作为赋值操作符左值进行修改操作.</li>
<li>document.cookie作为赋值操作符右值时,隐式调用其toString()方法。</li>
</ul><img src ="http://www.cnblogs.com/huazhihao/aggbug/1189692.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42808/" target="_blank">[新闻]百度任命李一男担任首席技术官</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>URI Reference</title><link>http://www.cnblogs.com/huazhihao/archive/2008/05/07/URI_Reference.html</link><dc:creator>nfa2dfa</dc:creator><author>nfa2dfa</author><pubDate>Wed, 07 May 2008 01:44:00 GMT</pubDate><guid>http://www.cnblogs.com/huazhihao/archive/2008/05/07/URI_Reference.html</guid><wfw:comment>http://www.cnblogs.com/huazhihao/comments/1186272.html</wfw:comment><comments>http://www.cnblogs.com/huazhihao/archive/2008/05/07/URI_Reference.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/huazhihao/comments/commentRss/1186272.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/huazhihao/services/trackbacks/1186272.html</trackback:ping><description><![CDATA[reference to<a class="externallink" href="http://en.wikipedia.org/wiki/URI_scheme">URI scheme - Wikipedia</a><br />
<a class="externallink" href="http://blogs.gotdotnet.com/noahc/archive/2006/10/19/register-a-custom-url-protocol-handler.aspx">Register a Custom URL Protocol Handler</a><br />
<h1>Generic syntax</h1>
<pre>&lt;scheme name&gt; : &lt;hierarchical part&gt; [ ? &lt;query&gt; ] [ # &lt;fragment&gt; ]</pre>
<a href="http://tools.ietf.org/html/rfc3986" class="external" title="http://tools.ietf.org/html/rfc3986">RFC 3986</a>
<pre>
  foo://username:password@example.com:8042/over/there/index.dtb;type=animal?name=ferret#nose
  \ /   \________________/\_________/ \__/\_________/ \___/ \_/ \_________/ \_________/ \__/
   |           |               |        |     |         |     |       |            |     |
scheme     userinfo         hostname  port  path  filename extension parameter(s) query fragment
   |    \_______________________________/
   |                authority
   |   ________________________
  / \ /                        \
  urn:example:animal:ferret:nose
</pre>
<h1>common schemes</h1>
<table class="wikitable">
<tr>
<th>Scheme</th>
<th>Purpose</th>
<th width="60">Defined by</th>
<th>General format</th>
<th>Notes</th>
</tr>
<tr>
<td><em>dict:</em></td>
<td>Dictionary service protocol</td>
<td><a href="http://tools.ietf.org/html/rfc2229" class="external" title="http://tools.ietf.org/html/rfc2229">RFC 2229</a></td>
<td><code>dict://&lt;user&gt;;&lt;auth&gt;@&lt;host&gt;:&lt;port&gt;/d:&lt;word&gt;:&lt;database&gt;:&lt;n&gt;</code><br />
<p><code>dict://&lt;user&gt;;&lt;auth&gt;@&lt;host&gt;:&lt;port&gt;/m:&lt;word&gt;:&lt;database&gt;:&lt;strat&gt;:&lt;n&gt;</code></p>
</td>
<td>refer to definitions or word lists available using the DICT protocol</td>
</tr>
<tr>
<td><em>dns:</em></td>
<td><a href="/wiki/Domain_Name_System" title="Domain Name System">Domain Name System</a></td>
<td><a href="http://tools.ietf.org/html/rfc4501" class="external" title="http://tools.ietf.org/html/rfc4501">RFC 4501</a></td>
<td><code>dns:[//&lt;host&gt;[:&lt;port&gt;]/]&lt;dnsname&gt;[?&lt;dnsquery&gt;]</code>
<p>examples:<br />
<code>dns:example?TYPE=A;CLASS=IN</code><br />
<code>dns://192.168.1.1/ftp.example.org?type=A</code></p>
</td>
<td>designates a DNS resource record set, referenced by domain name, class, type, and, optionally, the authority</td>
</tr>
<tr>
<td><em>fax:</em></td>
<td>Used for <a href="/wiki/Fax" title="Fax">telefacsimile</a> numbers</td>
<td><a href="http://tools.ietf.org/html/rfc2806" class="external" title="http://tools.ietf.org/html/rfc2806">RFC 2806</a></td>
<td><code>fax:&lt;phonenumber&gt;</code></td>
<td>Seems to be deprecated in <a href="http://tools.ietf.org/html/rfc3966" class="external" title="http://tools.ietf.org/html/rfc3966">RFC 3966</a> in favour of <a href="#tel:" title="">tel:</a></td>
</tr>
<tr>
<td><em>file:</em></td>
<td>Addressing files on local or network <a href="/wiki/File_system" title="File system">file systems</a></td>
<td><a href="http://tools.ietf.org/html/rfc1738" class="external" title="http://tools.ietf.org/html/rfc1738">RFC 1738</a></td>
<td><em>generic syntax</em><br />
(often appears as <code>file:///path</code>, the 3<sup>rd</sup> '/' is the final delimiter when no host (authority) is specified between)</td>
<td>Unusual in not being bound to any network protocol, and not usable in an Internet context.</td>
</tr>
<tr>
<td><em>ftp:</em></td>
<td><a href="/wiki/File_Transfer_Protocol" title="File Transfer Protocol">FTP</a> resources</td>
<td><a href="http://tools.ietf.org/html/rfc1738" class="external" title="http://tools.ietf.org/html/rfc1738">RFC 1738</a></td>
<td><em>generic syntax(ftp://user:pass@server  )</em></td>
<td></td>
</tr>
<tr>
<td><em>go:</em></td>
<td>Common Name Resolution Protocol</td>
<td><a href="http://tools.ietf.org/html/rfc3368" class="external" title="http://tools.ietf.org/html/rfc3368">RFC 3368</a></td>
<td><code>go://[&lt;host&gt;]?[&lt;common-name&gt;]*[;&lt;attribute&gt;=[&lt;type&gt;,]&lt;value&gt;]</code> or<br />
<code>go:&lt;common-name&gt;*[;&lt;attribute&gt;=[&lt;type&gt;,]&lt;value&gt;]</code></td>
<td></td>
</tr>
<tr>
<td><em>http:</em></td>
<td><a href="/wiki/HyperText_Transfer_Protocol" class="mw-redirect" title="HyperText Transfer Protocol">HTTP</a> resources</td>
<td><a href="http://tools.ietf.org/html/rfc2616" class="external" title="http://tools.ietf.org/html/rfc2616">RFC 2616</a></td>
<td><em>generic syntax</em></td>
<td></td>
</tr>
<tr>
<td><a href="/wiki/Https" title="Https"><em>https:</em></a></td>
<td>HTTP connections secured using <a href="/wiki/Transport_Layer_Security" title="Transport Layer Security">SSL/TLS</a></td>
<td><a href="http://tools.ietf.org/html/rfc2817" class="external" title="http://tools.ietf.org/html/rfc2817">RFC 2817</a></td>
<td><em>generic syntax</em></td>
<td></td>
</tr>
<tr>
<td><em>im:</em></td>
<td><a href="/wiki/Instant_messaging" class="mw-redirect" title="Instant messaging">Instant messaging</a> protocol</td>
<td><a href="http://tools.ietf.org/html/rfc3860" class="external" title="http://tools.ietf.org/html/rfc3860">RFC 3860</a> <a href="http://tools.ietf.org/html/rfc4622" class="external" title="http://tools.ietf.org/html/rfc4622">RFC 4622</a></td>
<td><code>im:&lt;username&gt;[@&lt;host&gt;]</code></td>
<td>Works as <code>xmpp:</code> URI for single user chat sessions.</td>
</tr>
<tr>
<td><em>ldap:</em></td>
<td><a href="/wiki/Lightweight_Directory_Access_Protocol" title="Lightweight Directory Access Protocol">LDAP</a> directory request</td>
<td><a href="http://tools.ietf.org/html/rfc2255" class="external" title="http://tools.ietf.org/html/rfc2255">RFC 2255</a><br />
<a href="http://tools.ietf.org/html/rfc4516" class="external" title="http://tools.ietf.org/html/rfc4516">RFC 4516</a></td>
<td><code>ldap://[&lt;host&gt;[:&lt;port&gt;]][/&lt;dn&gt; [?[&lt;attributes&gt;][?[&lt;scope&gt;][?[&lt;filter&gt;][?&lt;extensions&gt;]]]]]</code>
<p>example:<br />
<code>ldap://ldap1.example.net:6666/o=University%20of%20Michigan, c=US??sub?(cn=Babs%20Jensen)</code></p>
</td>
<td></td>
</tr>
<tr>
<td><em>mailto:</em></td>
<td><a href="/wiki/Simple_Mail_Transfer_Protocol" title="Simple Mail Transfer Protocol">SMTP</a> <a href="/wiki/E-mail" title="E-mail">e-mail</a> addresses and default content</td>
<td><a href="http://tools.ietf.org/html/rfc2368" class="external" title="http://tools.ietf.org/html/rfc2368">RFC 2368</a></td>
<td><code>mailto:&lt;address&gt;[?&lt;header1&gt;=&lt;value1&gt;[&amp;&lt;header2&gt;=&lt;value2&gt;]]</code>
<p>example:<br />
<code>mailto:jsmith@example.com?subject=A%20Test&amp;body=My%20idea%20is%3A%20%0A</code></p>
</td>
<td>Headers are optional, but often include <code>subject=</code>; <code>body=</code> can be used to pre-fill the body of the message.</td>
</tr>
<tr>
<td><em>news:</em></td>
<td>(<a href="/wiki/Usenet" title="Usenet">Usenet</a>) newsgroups and postings</td>
<td><a href="http://tools.ietf.org/html/rfc1738" class="external" title="http://tools.ietf.org/html/rfc1738">RFC 1738</a></td>
<td><code>news:&lt;newsgroupname&gt;</code> or<br />
<code>news:&lt;message-id&gt;</code></td>
<td>References a particular <em>resource</em>, regardless of location.</td>
</tr>
<tr>
<td><em>pop:</em></td>
<td>Accessing mailbox through <a href="/wiki/POP3" class="mw-redirect" title="POP3">POP3</a></td>
<td><a href="http://tools.ietf.org/html/rfc2384" class="external" title="http://tools.ietf.org/html/rfc2384">RFC 2384</a></td>
<td><code>pop://[&lt;user&gt;[;AUTH=&lt;auth&gt;]@]&lt;host&gt;[:&lt;port&gt;]</code></td>
<td></td>
</tr>
<tr>
<td><em>sip:</em></td>
<td>Used with <a href="/wiki/Session_Initiation_Protocol" title="Session Initiation Protocol">Session Initiation Protocol</a> (SIP)</td>
<td><a href="http://tools.ietf.org/html/rfc3969" class="external" title="http://tools.ietf.org/html/rfc3969">RFC 3969</a><br />
<a href="http://tools.ietf.org/html/rfc3261" class="external" title="http://tools.ietf.org/html/rfc3261">RFC 3261</a></td>
<td><code>sip:&lt;user&gt;[:&lt;password&gt;]@&lt;host&gt;[:&lt;port&gt;][;&lt;uri-parameters&gt;][?&lt;headers&gt;]</code>
<p>examples:<br />
<code>sip:alice@atlanta.com?subject=project%20x&amp;priority=urgent</code><br />
<code>sip:+1-212-555-1212:1234@gateway.com;user=phone</code></p>
</td>
<td></td>
</tr>
<tr>
<td><em><a href="/wiki/Sips:_URI_scheme" title="Sips: URI scheme">sips:</a></em></td>
<td>Secure equivalent of <em>sip:</em></td>
<td><a href="http://tools.ietf.org/html/rfc3969" class="external" title="http://tools.ietf.org/html/rfc3969">RFC 3969</a><br />
<a href="http://tools.ietf.org/html/rfc3261" class="external" title="http://tools.ietf.org/html/rfc3261">RFC 3261</a></td>
<td><code>sips:&lt;user&gt;[:&lt;password&gt;]@&lt;host&gt;[:&lt;port&gt;][;&lt;uri-parameters&gt;][?&lt;headers&gt;]</code></td>
<td></td>
</tr>
<tr>
<td><em>snmp:</em></td>
<td>Simple Network Management Protocol</td>
<td><a href="http://tools.ietf.org/html/rfc4088" class="external" title="http://tools.ietf.org/html/rfc4088">RFC 4088</a></td>
<td><code>snmp://[user@]host[:port][/[&lt;context&gt;[;&lt;contextEngineID&gt;]][/&lt;oid&gt;]]</code>
<p>examples:<br />
<code>snmp://example.com//1.3.6.1.2.1.1.3+</code><br />
<code>snmp://tester5@example.com:8161/bridge1;800002b804616263</code></p>
</td>
<td></td>
</tr>
<tr>
<td><em>soap.beep:</em><br />
<em>soap.beeps:</em></td>
<td></td>
<td><a href="http://tools.ietf.org/html/rfc3288" class="external" title="http://tools.ietf.org/html/rfc3288">RFC 3288</a></td>
<td></td>
<td></td>
</tr>
<tr>
<td><em>telnet:</em></td>
<td>Used with <a href="/wiki/Telnet" class="mw-redirect" title="Telnet">telnet</a></td>
<td><a href="http://tools.ietf.org/html/rfc4248" class="external" title="http://tools.ietf.org/html/rfc4248">RFC 4248</a></td>
<td><code>telnet://&lt;user&gt;:&lt;password&gt;@&lt;host&gt;[:&lt;port&gt;/]</code></td>
<td></td>
</tr>
</table>
<table class="wikitable">
<tr>
<th>Scheme</th>
<th>Purpose</th>
<th width="90">Defined by</th>
<th>General format</th>
<th>Notes</th>
</tr>
<tr>
<td><em><a href="/wiki/About:_URI_scheme" title="About: URI scheme">about:</a></em></td>
<td>Displaying product information and internal information</td>
<td colspan="2" align="center">Un-standardised<br />
about:blank is commonly used to display a blank page.</td>
<td>Widely used by <a href="/wiki/Web_browser" title="Web browser">web browsers</a>, sometimes even providing interactive resources. The <a href="/wiki/Opera_%28web_browser%29" title="Opera (web browser)">Opera web browser</a> uses <code>opera:</code> instead.</td>
</tr>
<tr>
<td><em><a href="/wiki/AOL_Instant_Messenger#URI_scheme" title="AOL Instant Messenger">aim:</a></em></td>
<td>Controlling <a href="/wiki/AOL_Instant_Messenger" title="AOL Instant Messenger">AOL Instant Messenger</a>.</td>
<td><a href="/wiki/AOL" title="AOL">AOL</a></td>
<td><code>aim:&lt;function&gt;?&lt;parameters&gt;</code></td>
<td>Functions include <code>goim</code>, <code>addbuddy</code>, and <code>buddyicon</code>.</td>
</tr>
<tr>
<td><em>callto:</em> </td>
<td>Launching <a href="/wiki/Skype" title="Skype">Skype</a> call (+And in Hungary the KLIP Software call too) (unofficial; see also <a href="#skype:" title="">skype:</a>)</td>
<td><a href="/wiki/Skype" title="Skype">Skype</a></td>
<td><code>callto:&lt;screenname&gt;</code> or<br />
<code>callto:&lt;phonenumber&gt;</code> <a href="http://daringfireball.net/2005/12/callto_uris_safari" class="external autonumber" title="http://daringfireball.net/2005/12/callto_uris_safari" rel="nofollow">[2]</a></td>
<td>Introduced with <a href="/wiki/Microsoft_NetMeeting" title="Microsoft NetMeeting">Microsoft NetMeeting</a>. Works with current version of <a href="/wiki/Skype" title="Skype">Skype</a> with <a href="/wiki/Firefox" class="mw-redirect" title="Firefox">Firefox</a>, <a href="/wiki/Internet_Explorer" title="Internet Explorer">Internet Explorer</a> and <a href="/wiki/Safari_%28web_browser%29" title="Safari (web browser)">Safari</a></td>
</tr>
<tr>
<td><em>chrome:</em> </td>
<td>Specifies user interfaces built using XUL in Mozilla-based browsers.</td>
<td><a href="/wiki/Mozilla" title="Mozilla">Mozilla</a></td>
<td><code>chrome://&lt;package&gt;/&lt;section&gt;/&lt;path&gt;</code> (Where <code>&lt;section&gt;</code> is either "<code>content</code>", "<code>skin</code>" or "<code>locale</code>")</td>
<td>Works only in Mozilla-based browsers such as Firefox, SeaMonkey and Netscape.</td>
</tr>
<tr>
<td><em>cvs:</em> </td>
<td>Provides a link to a <a href="/wiki/Concurrent_Versions_System" title="Concurrent Versions System">Concurrent Versions System</a> (CVS) Repository</td>
<td><a href="/wiki/Concurrent_Versions_System" title="Concurrent Versions System">Concurrent Versions System</a></td>
<td><code>cvs://&lt;method:logindetails&gt;@&lt;repository&gt;/&lt;modulepath&gt;;[date=date to retrieve | tag=tag to retrieve]</code></td>
<td></td>
</tr>
<tr>
<td><em><a href="/wiki/Ed2k:_URI_scheme" title="Ed2k: URI scheme">ed2k:</a></em></td>
<td>Resources available using the <a href="/wiki/EDonkey2000" title="EDonkey2000">eDonkey2000</a> network</td>
<td>eDonkey2000</td>
<td><code>ed2k://|file|&lt;filename&gt;|&lt;size of file&gt;|&lt;hash of file&gt;|/</code> or<br />
<code>ed2k://|server|&lt;host&gt;|&lt;port&gt;|/</code></td>
<td>Links to servers are also possible, as are additional parameters. Official documentation from <a href="http://web.archive.org/web/*/http://www.edonkey2000.com/documentation/distro.html" class="external text" title="http://web.archive.org/web/*/http://www.edonkey2000.com/documentation/distro.html" rel="nofollow">eDonkey2000 website</a> at the <a href="/wiki/Internet_Archive#Wayback_Machine" title="Internet Archive">Internet Archive Wayback Machine</a></td>
</tr>
<tr>
<td><em><a href="/wiki/Feed:_URI_scheme" title="Feed: URI scheme">feed:</a></em></td>
<td><a href="/wiki/Web_feed" title="Web feed">web feed</a> subscription</td>
<td></td>
<td><code>feed:&lt;absolute_uri&gt;</code> or<br />
<code>feed://&lt;hierarchical part&gt;</code>
<p>examples:<br />
<code>feed://example.com/rss.xml</code><br />
<code>feed:https://example.com/rss.xml</code></p>
</td>
<td>See <a href="/wiki/Feed:_URI_scheme" title="Feed: URI scheme">Feed: URI scheme</a> for a detailed overview of common implementations, supported software, and critics.</td>
</tr>
<tr>
<td><em><a href="/wiki/JAR_%28file_format%29" title="JAR (file format)">jar:</a></em></td>
<td>Compressed archive member</td>
<td><a href="http://java.sun.com/javase/6/docs/api/java/net/JarURLConnection.html" class="external text" title="http://java.sun.com/javase/6/docs/api/java/net/JarURLConnection.html" rel="nofollow">Java API</a></td>
<td><code>jar:&lt;url&gt;!/[&lt;entry&gt;]</code></td>
<td>Works for any <a href="/wiki/ZIP_%28file_format%29" title="ZIP (file format)">ZIP</a> based file.</td>
</tr>
<tr>
<td><em><a href="/wiki/Microsoft_Media_Services" title="Microsoft Media Services">mms:</a></em></td>
<td>Windows streaming media</td>
<td></td>
<td><code>mms://&lt;host&gt;:&lt;port&gt;/&lt;path&gt;</code></td>
<td>Used by Windows Media Player to stream audio and/or video.</td>
</tr>
<tr>
<td><em>msnim:</em></td>
<td>Adding a contact, or starting a conversation in Windows Live Messenger</td>
<td><a href="/wiki/Windows_Live_Messenger" title="Windows Live Messenger">Windows Live Messenger</a></td>
<td>Add a contact to the buddy list<br />
<p><code>msnim:add?contact=nada@nowhere.com</code><br />
Start a conversation with a contact<br />
<code>msnim:chat?contact=nada@nowhere.com</code><br />
Start a voice conversation with a contact<br />
<code>msnim:voice?contact=nada@nowhere.com</code><br />
Start a video conversation with a contact<br />
<code>msnim:video?contact=nada@nowhere.com</code></p>
</td>
<td>Can be invoked from a web page or via a run command or an ie browser URL (won't work with firefox 2.0.0.8). For web pages use this HTML: <code>&lt;a href="chat?contact=nada@nowhere.com"&gt;Click to chat!&lt;/a&gt;</code></td>
</tr>
<tr>
<td><em>notes:</em></td>
<td>Open a <a href="/wiki/Lotus_Notes" class="mw-redirect" title="Lotus Notes">Lotus Notes</a> document or database</td>
<td><a href="/wiki/Lotus_Notes" class="mw-redirect" title="Lotus Notes">Lotus Notes</a></td>
<td><code>notes://&lt;address&gt;</code></td>
<td>Used by IBM Lotus Notes to refer to documents and databases stored within the Lotus Notes system. When clicked in a browser on a computer with Lotus Notes client installed, Notes will open the document link as if a Notes DocLink were clicked within Notes.</td>
</tr>
<tr>
<td><em>secondlife:</em></td>
<td>Open the Map floater in Second Life application to teleport the resident to the location.</td>
<td><a href="/wiki/Linden_Lab" title="Linden Lab">Linden Lab</a></td>
<td><code>secondlife://&lt;region name&gt;/&lt;x position&gt;/&lt;y position&gt;/&lt;z position&gt;</code></td>
<td>Used by <a href="http://slurl.com/" class="external text" title="http://slurl.com/" rel="nofollow">SLurl.com</a>. <a href="http://secondlife.com/knowledgebase/article.php?id=360" class="external text" title="http://secondlife.com/knowledgebase/article.php?id=360" rel="nofollow">Knowledge base article</a>.</td>
</tr>
<tr>
<td><em>skype:</em> </td>
<td>Launching <a href="/wiki/Skype" title="Skype">Skype</a> call (official; see also <a href="#callto:" title="">callto:</a>)</td>
<td><a href="/wiki/Skype" title="Skype">Skype</a></td>
<td><code>skype:&lt;username|phonenumber&gt;[?[add|call|chat|sendfile|userinfo]]</code></td>
<td>Official documentation from <a href="http://www.skype.com/share/buttons/advanced.html" class="external text" title="http://www.skype.com/share/buttons/advanced.html" rel="nofollow">Skype website</a>.</td>
</tr>
<tr>
<td><em>sms:</em></td>
<td>Interact with <a href="/wiki/SMS" class="mw-redirect" title="SMS">SMS</a> capable devices for composing and sending messages.</td>
<td><a href="http://tools.ietf.org/html/draft-wilde-sms-uri-12" class="external text" title="http://tools.ietf.org/html/draft-wilde-sms-uri-12" rel="nofollow">IETF draft</a></td>
<td><code>sms:&lt;phone number&gt;?&lt;action&gt;</code></td>
<td>Should be used as a subset to the <code>tel:</code> schema.<sup class="noprint Template-Fact"><span title="This claim needs references to reliable sources&#160;since August 2007" style="white-space: nowrap;">[<em><a href="/wiki/Wikipedia:Citation_needed" title="Wikipedia:Citation needed">citation needed</a></em>]</span></sup></td>
</tr>
<tr>
<td><em>steam:</em></td>
<td>Interact with Steam: install apps, purchase games, run games, etc.</td>
<td><a href="/wiki/Steam_%28content_delivery%29" title="Steam (content delivery)">Steam</a>, <a href="/wiki/Valve_Corporation" title="Valve Corporation">Valve Corporation</a></td>
<td><code>steam:&lt;command line arguments&gt;</code> or<br />
<code>steam://&lt;action&gt;/&lt;id, addon, IP, hostname, etc.&gt;</code></td>
<td>Official documentation from <a href="http://developer.valvesoftware.com/wiki/Steam_browser_protocol" class="external text" title="http://developer.valvesoftware.com/wiki/Steam_browser_protocol" rel="nofollow">Valve Developer Community website</a></td>
</tr>
</table>
<h1>URL Protocol Handler</h1>
<pre>
[HKEY_CLASSES_ROOT]
  [runapp]
     (Default) = "URL:RunApp Protocol Handler"
     URL Protocol = ""
     [DefaultIcon]
       (Default) = "c:\whatever\RunAppUrlProtocol.exe&#8221;
     [shell]
       [open]
          [command]
            (Default) = "c:\whatever\RunAppUrlProtocol.exe "%1""
</pre>
After installing the example RunAppUrlProtocol app, you can put links on web pages like runapp://calc, runapp://excel, or runapp://docs that will trigger this app, look up the keyword, and execute the app.<img src ="http://www.cnblogs.com/huazhihao/aggbug/1186272.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42805/" target="_blank">[新闻]Google Knol 开始尝试有声版</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>ScrewTurn Wiki发现之路(2)--aspxlist</title><link>http://www.cnblogs.com/huazhihao/archive/2008/03/28/ScrewTurn_Wiki_Discovery_aspxlist.html</link><dc:creator>nfa2dfa</dc:creator><author>nfa2dfa</author><pubDate>Fri, 28 Mar 2008 06:54:00 GMT</pubDate><guid>http://www.cnblogs.com/huazhihao/archive/2008/03/28/ScrewTurn_Wiki_Discovery_aspxlist.html</guid><wfw:comment>http://www.cnblogs.com/huazhihao/comments/1127684.html</wfw:comment><comments>http://www.cnblogs.com/huazhihao/archive/2008/03/28/ScrewTurn_Wiki_Discovery_aspxlist.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/huazhihao/comments/commentRss/1127684.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/huazhihao/services/trackbacks/1127684.html</trackback:ping><description><![CDATA[<p><font face="Verdana">sw的aspx不算很多，这是建立在sw优秀的框架上的。</font></p>
<p><font face="Verdana">2006-11-30&nbsp; 11:49&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 673 AccessDenied.aspx<br />
最常出现的关于这个页面的代码<br />
if(!SessionFacade.Admin) Response.Redirect("AccessDenied.aspx")<br />
sw并没有使用activedirectory内置的权限管理，而是为自己的架构使用了更适合的deny方式。<br />
[admin edit getfile import operation post register upload zip].aspx.cs都使用了这条语句。</font></p>
<p><font face="Verdana">2008-02-25&nbsp; 19:43&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 82,850 Admin.aspx<br />
这是管理页面，以后要着重介绍的</font></p>
<p><font face="Verdana">2006-11-30&nbsp; 14:46&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 787 AllPages.aspx<br />
这是全部页面的索引，以后是要着重介绍的。</font></p>
<p><font face="Verdana">2007-03-17&nbsp; 08:27&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 789 Category.aspx<br />
所有分类页面的索引，以后要着重介绍的。</font></p>
<p><font face="Verdana">2007-07-03&nbsp; 08:48&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2,488 Default.aspx<br />
站点的入口，负责做一个跳转的路由节点，以后要着重介绍。</font></p>
<p><font face="Verdana">2006-11-30&nbsp; 14:52&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 323 Diff.aspx<br />
做比较两个词条用的页面，和history.aspx有点关系。</font></p>
<p><font face="Verdana">2008-01-26&nbsp; 12:03&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 66,439 Edit.aspx<br />
编辑词条的页面，最重要的一个页面，也是最重的一个页面。</font></p>
<p><font face="Verdana">2006-10-26&nbsp; 17:36&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1,074 Error.aspx<br />
&lt;asp:Literal ID="lblDescription" runat="server" Text="We're sorry, an error occurred while processing your request. The error information has been registered and it will investigated.&lt;br /&gt;Please restart from the &lt;a href=&amp;quot;Default.aspx&amp;quot;&gt;Main Page&lt;/a&gt;." meta:resourcekey="lblDescriptionResource1"&gt;&lt;/asp:Literal&gt;<br />
就为了显示一段出错信息，当然这个页面之所以没有做成.htm的原因是用到了多语言资源。</font></p>
<p><font face="Verdana">2006-09-26&nbsp; 17:29&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 111 GetFile.aspx<br />
从\ScrewTurnWiki\public\Upload\下找个文件，GetFile.aspx?File=$</font></p>
<p><font face="Verdana">2006-12-21&nbsp; 20:25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 113 GetThumb.aspx<br />
显示\ScrewTurnWiki\public\Upload\下图像文件的缩略图。<br />
另有一个jsimagebrowser.ascx.cs有这个页面的引用<br />
javascript:return __ShowPreview('GetThumb.aspx?Big=1&amp;Image=</font></p>
<p><font face="Verdana">2007-01-01&nbsp; 11:51&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1,107 History.aspx<br />
察看某个词条的历史纪录。和Diff.aspx有点关系。</font></p>
<p><font face="Verdana">2006-11-16&nbsp; 12:17&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5,030 Import.aspx<br />
导入词条页面，可以从page,MediaWiki,FlexWiki,或者文本导入。以后会着重介绍。</font></p>
<p><font face="Verdana">2006-10-23&nbsp; 11:29&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3,821 Language.aspx<br />
选择用户使用的语言，以后会着重介绍。</font></p>
<p><font face="Verdana">2006-11-30&nbsp; 15:03&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5,536 Login.aspx<br />
login/logout的页面，以后会着重介绍。</font></p>
<p><font face="Verdana">2006-11-10&nbsp; 18:23&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2,486 Message.aspx<br />
给指定用户留言，同时会有邮件通知，以后会着重介绍。</font></p>
<p><font face="Verdana">2006-11-30&nbsp; 15:20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 927 NavPath.aspx<br />
好像是列出浏览过的页面的链接，以后会着重介绍。</font></p>
<p><font face="Verdana">2007-06-21&nbsp; 10:01&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1,724 Operation.aspx<br />
仅提供了deletemessage的操作。</font></p>
<p><font face="Verdana">2006-11-30&nbsp; 15:27&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 745 PageNotFound.aspx<br />
自订制的404page</font></p>
<p><font face="Verdana">2006-12-01&nbsp; 17:08&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2,422 Post.aspx<br />
对词条留言</font></p>
<p><font face="Verdana">2006-08-17&nbsp; 19:32&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 135 Preview.aspx<br />
preview正在编辑中的词条，通过xmlhttp把内容返回给edit.aspx</font></p>
<p><font face="Verdana">2006-11-30&nbsp; 15:32&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 573 Print.aspx<br />
打印页面</font></p>
<p><font face="Verdana">2006-12-01&nbsp; 19:57&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10,374 Profile.aspx<br />
users' profile,以后着重介绍</font></p>
<p><font face="Verdana">2006-07-13&nbsp; 17:45&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 113 RandPage.aspx<br />
随机页面<br />
Pages pages = Pages.Instance;<br />
Random r = new Random();<br />
Response.Redirect(pages.AllPages[r.Next(0, pages.AllPages.Count)].Name + Settings.PageExtension);<br />
至于Settings.PageExtension<br />
public static string PageExtension {<br />
&nbsp;get { return ".ashx"; }<br />
}</font></p>
<p><font face="Verdana">2007-10-29&nbsp; 18:56&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9,947 Register.aspx<br />
注册页面，以后着重介绍</font></p>
<p><font face="Verdana">2007-02-14&nbsp; 17:33&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 129 RSS.aspx<br />
词条相关的rss页面</font></p>
<p><font face="Verdana">2007-03-08&nbsp; 07:13&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2,230 Search.aspx<br />
搜索页面，以后着重介绍</font></p>
<p><font face="Verdana">2006-11-15&nbsp; 14:47&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 419 SessionRefresh.aspx<br />
刷新session的控制页面，作为admin.aspx的一个iframe,edit.aspx.cs也提供了链接。</font></p>
<p><font face="Verdana">2006-10-13&nbsp; 16:58&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 878 Upload.aspx<br />
上传文件的页面，，用了个FileList控件，以后详细介绍。<br />
2006-07-20&nbsp; 13:49&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 103 Zip.aspx<br />
下载打包文件</font></p>
<p><font face="Verdana">sidebar.cs已经有这些链接了<br />
* [RandPage.aspx|Random Page]<br />
* [Edit.aspx|Create a new Page]<br />
* [AllPages.aspx|All Pages]<br />
* [Category.aspx|Categories]</font></p>
<p><font face="Verdana">* [Admin.aspx|Administration]<br />
* [Upload.aspx|File Management]</font></p>
<p><font face="Verdana">* [Login.aspx|Login/Logout]<br />
* [Language.aspx|Language Selection]<br />
* [Profile.aspx|Your Profile]<br />
* [Register.aspx|Create Account]<br />
从某种程度上表示这些是最重要的页面之一</font></p>
<p><font face="Verdana">除了aspx以外，还有几个ascx。这些ascx基本上只被一个页面使用过，独立出来是因为具备逻辑上的独立意义。<br />
2006-12-29&nbsp; 15:34&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5,174 FileList.ascx<br />
显示以上传文件，只有upload.aspx用到了这个控件。以后详细介绍。</font></p>
<p><font face="Verdana">2007-08-06&nbsp; 11:25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 510 JsFileTree.ascx<br />
&lt;asp:Literal ID="lblContent" runat="server" EnableViewState="false"&gt;&lt;/asp:Literal&gt;<br />
从名字看来应该是显示文件目录树的控件，只有edit.aspx用到了这个控件。<br />
像这样用Literal来做控件确实是一个好方法。</font></p>
<p><font face="Verdana">2007-12-25&nbsp; 19:35&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1,468 JsImageBrowser.ascx<br />
从名字看来应该是浏览图片的控件，只有edit.aspx用到了这个控件。</font></p>
<p><font face="Verdana">2006-11-30&nbsp; 15:07&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1,095 LogList.ascx<br />
admin.aspx用到了这个控件。</font></p>
<p><font face="Verdana"></font>&nbsp;</p>
<img src ="http://www.cnblogs.com/huazhihao/aggbug/1127684.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42804/" target="_blank">[新闻]12日电脑与人进行世纪对话 可思考机器或诞生</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>ScrewTurn Wiki发现之路(1)--masterpage.master</title><link>http://www.cnblogs.com/huazhihao/archive/2008/03/27/ScrewTurn_Wiki_Discovery_1_masterpage.html</link><dc:creator>nfa2dfa</dc:creator><author>nfa2dfa</author><pubDate>Thu, 27 Mar 2008 08:09:00 GMT</pubDate><guid>http://www.cnblogs.com/huazhihao/archive/2008/03/27/ScrewTurn_Wiki_Discovery_1_masterpage.html</guid><wfw:comment>http://www.cnblogs.com/huazhihao/comments/1125526.html</wfw:comment><comments>http://www.cnblogs.com/huazhihao/archive/2008/03/27/ScrewTurn_Wiki_Discovery_1_masterpage.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/huazhihao/comments/commentRss/1125526.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/huazhihao/services/trackbacks/1125526.html</trackback:ping><description><![CDATA[摘要: materpage.master是大部分页面的masterpage,我选择从这里开始。<br>&nbsp;&nbsp;<a href='http://www.cnblogs.com/huazhihao/archive/2008/03/27/ScrewTurn_Wiki_Discovery_1_masterpage.html'>阅读全文</a><img src ="http://www.cnblogs.com/huazhihao/aggbug/1125526.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42803/" target="_blank">[新闻]人民网评:中国移动为什么要抛弃iPhone?</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>IE8 WebSlice 尝鲜</title><link>http://www.cnblogs.com/huazhihao/archive/2008/03/09/taste_IE8_WebSlice.html</link><dc:creator>nfa2dfa</dc:creator><author>nfa2dfa</author><pubDate>Sun, 09 Mar 2008 14:59:00 GMT</pubDate><guid>http://www.cnblogs.com/huazhihao/archive/2008/03/09/taste_IE8_WebSlice.html</guid><wfw:comment>http://www.cnblogs.com/huazhihao/comments/1097920.html</wfw:comment><comments>http://www.cnblogs.com/huazhihao/archive/2008/03/09/taste_IE8_WebSlice.html#Feedback</comments><slash:comments>14</slash:comments><wfw:commentRss>http://www.cnblogs.com/huazhihao/comments/commentRss/1097920.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/huazhihao/services/trackbacks/1097920.html</trackback:ping><description><![CDATA[摘要: <img style="width:250px;height:145px;display:block;float:right;" src="http://www.cnblogs.com/images/cnblogs_com/huazhihao/webslice_results1.png" alt=""/><br><div style="padding-right:5px;">WebSlices是一种浏览器技术,只要html中使用一些特殊的标记,就可以使用户只订阅页面的一部分变得可能。这种订阅就像是订阅RSS一样。而这些特殊的标记里包括了订阅过期的描述，IE8会定时去检查更新，并给订阅用户提示.</div><br style="clear:both;"/>&nbsp;&nbsp;<a href='http://www.cnblogs.com/huazhihao/archive/2008/03/09/taste_IE8_WebSlice.html'>阅读全文</a><img src ="http://www.cnblogs.com/huazhihao/aggbug/1097920.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42802/" target="_blank">[新闻]索尼推出第二代触控屏eBook电子书</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>python diary (part 3)-metaprogramming</title><link>http://www.cnblogs.com/huazhihao/archive/2008/03/06/1094096.html</link><dc:creator>nfa2dfa</dc:creator><author>nfa2dfa</author><pubDate>Thu, 06 Mar 2008 12:32:00 GMT</pubDate><guid>http://www.cnblogs.com/huazhihao/archive/2008/03/06/1094096.html</guid><wfw:comment>http://www.cnblogs.com/huazhihao/comments/1094096.html</wfw:comment><comments>http://www.cnblogs.com/huazhihao/archive/2008/03/06/1094096.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/huazhihao/comments/commentRss/1094096.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/huazhihao/services/trackbacks/1094096.html</trackback:ping><description><![CDATA[<p><font face="Verdana">http://www.ibm.com/developerworks/cn/linux/l-pymeta/index.html?S_TACT=105AGX52&amp;S_CMP=techcsdn<br />
http://www-128.ibm.com/developerworks/cn/linux/l-pymeta2/?S_TACT=105AGX52&amp;S_CMP=techcsdn<br />
http://www.ibm.com/developerworks/cn/linux/l-pymeta3.html?ca=drs-tp4707&amp;S_TACT=105AGX52&amp;S_CMP=techcsdn</font></p>
<p><font face="Verdana">"一些 OOP 语言（包括 Python）允许对象是 自省的（也称为 反射）。即，自省对象能够描述自己：实例属于哪个类？类有哪些祖先？对象可以用哪些方法和属性？"</font></p>
<p><font face="Verdana">之前我对自省这个词相当着迷，自省表示无需解释，就可以自我解释。我第一次看到自省这个词，就理解到自省这个词的意思，从这个意义上来说，自省这个词本身就是自省的。</font></p>
<p><font face="Verdana">清单 1. 老式的 Python 1.5.2 类工厂<br />
Python 1.5.2 (#0, Jun 27 1999, 11:23:01) [...]<br />
Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam<br />
&gt;&gt;&gt; def class_with_method(func):<br />
...&nbsp;&nbsp;&nbsp;&nbsp; class klass: pass<br />
...&nbsp;&nbsp;&nbsp;&nbsp; setattr(klass, func.__name__, func)<br />
...&nbsp;&nbsp;&nbsp;&nbsp; return klass<br />
...<br />
&gt;&gt;&gt; def say_foo(self): print 'foo'<br />
...<br />
&gt;&gt;&gt; Foo = class_with_method(say_foo)<br />
&gt;&gt;&gt; foo = Foo()<br />
&gt;&gt;&gt; foo.say_foo()<br />
foo<br />
&nbsp;<br />
这段代码首先给我一个例子，证明pass关键词确有其用.<br />
其次在这段不长的代码里在我这个被oo洗脑的人看来，每一行都有magic.<br />
class klass: pass&nbsp;#就像是做了一个类实例(这样说很怪)<br />
setattr(klass, func.__name__, func)&nbsp;#类的prototype是可以被修改的，<br />
#如果用js写起来大概是klass.prototype.&lt;func.__name__&gt; = func<br />
#只是js里没有func.__name__这种内置的属性。</font></p>
<p><font face="Verdana">Foo = class_with_method(say_foo)&nbsp;#类实例作为返回值传递<br />
foo = Foo()&nbsp;#用类实例来实例化一个对象</font></p>
<p><font face="Verdana">不得不说，这比js里的all is function的基本思想更接近于oo,更接近于人的思维，却也保留了语法上的动态。</font></p>
<p><font face="Verdana">&gt;&gt;&gt; from new import classobj<br />
&gt;&gt;&gt; Foo2 = classobj('Foo2',(Foo,),{'bar':lambda self:'bar'})<br />
&gt;&gt;&gt; Foo2().bar()<br />
'bar'<br />
&gt;&gt;&gt; Foo2().say_foo()<br />
foo</font></p>
<p><font face="Verdana">这段代码在ironpython上跑不过，提示没有new module,当然也就没有classobj(即我所谓的类实例)<br />
全凭猜想，我以为classobj接受三个参数classob(nameString,superclassTuple,bodyDict)<br />
而superclassTuple为什么要做成(Foo,)这个样子，也让人十分疑惑。</font></p>
<p><font face="Verdana">&gt;&gt;&gt; X = type('X',(),{'foo':lambda self:'foo'})<br />
&gt;&gt;&gt; X, X().foo()<br />
(&lt;class '__main__.X'&gt;, 'foo')</font></p>
<p><font face="Verdana">虽然没有classobj，不过ironpython是内置支持type的，有趣的是<br />
&gt;&gt;&gt;dict<br />
&lt;type 'dict'&gt;<br />
&gt;&gt;&gt;type<br />
&lt;type 'type'&gt;</font></p>
<p><font face="Verdana">&gt;&gt;&gt; class ChattyType(type):<br />
...&nbsp;&nbsp;&nbsp;&nbsp; def __new__(cls, name, bases, dct):<br />
...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print "Allocating memory for class", name<br />
...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return type.__new__(cls, name, bases, dct)<br />
...&nbsp;&nbsp;&nbsp;&nbsp; def __init__(cls, name, bases, dct):<br />
...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print "Init'ing (configuring) class", name<br />
...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; super(ChattyType, cls).__init__(name, bases, dct)<br />
...<br />
&gt;&gt;&gt; X = ChattyType('X',(),{'foo':lambda self:'foo'})<br />
Allocating memory for class X<br />
Init'ing (configuring) class X<br />
&gt;&gt;&gt; X, X().foo()<br />
(&lt;class '__main__.X'&gt;, 'foo')</font></p>
<p><font face="Verdana">"需要注意 type 后代的一个特性；它常使第一次使用元类的人们&#8220;上圈套&#8221;。按照惯例，这些方法的第一个参数名为 cls ，而不是 self ，因为这些方法是在 已生成的类上进行操作的，而不是在元类上。事实上，关于这点没什么特别的；所有方法附加在它们的实例上，而且元类的实例是类。非特殊的名称使这更明显"</font></p>
<p><font face="Verdana">在没有读懂前一段代码的情况下，我决定再往后看一下。</font></p>
<p><font face="Verdana">&gt;&gt;&gt; class Printable(type):<br />
...&nbsp;&nbsp;&nbsp;&nbsp; def whoami(cls): print "I am a", cls.__name__<br />
...<br />
&gt;&gt;&gt; Foo = Printable('Foo',(),{})<br />
&gt;&gt;&gt; Foo.whoami()<br />
I am a Foo<br />
&gt;&gt;&gt; Printable.whoami()<br />
Traceback (most recent call last):<br />
TypeError:&nbsp; unbound method whoami() [...]</font></p>
<p><font face="Verdana">我把这段代码写成</font></p>
<p><font face="Verdana">&gt;&gt;&gt;class A(type):<br />
...&nbsp;def who(cls):print 'I am',cls.__name__<br />
...&nbsp;<br />
&gt;&gt;&gt;a=A('Foo',(),{})<br />
&gt;&gt;&gt;a.who()<br />
I am Foo<br />
&gt;&gt;&gt;A.who()<br />
Traceback (most recent call lass):<br />
&nbsp; File , line 0, in &lt;stdin&gt;##40<br />
TypeError: who() takes exactly 1 argument (0 given)<br />
&gt;&gt;&gt;A.who(A)<br />
Traceback (most recent call lass):<br />
&nbsp; File , line 0, in &lt;stdin&gt;##41<br />
TypeError: unbound method who() must be called with A instance as first argument (got type instance instead)<br />
&gt;&gt;&gt;A.who(a)<br />
I am Foo<br />
&gt;&gt;&gt;b=A(type('FooB'),(),{}))&nbsp;#这里的type是有点画蛇添足了<br />
&gt;&gt;&gt;b.who()<br />
Traceback (most recent call lass):<br />
&nbsp; File , line 0, in &lt;stdin&gt;##41<br />
AttributeError: type object 'type' has no attribute 'who'<br />
&gt;&gt;&gt;b<br />
&lt;type 'type'&gt;<br />
&gt;&gt;&gt;b.__name__<br />
'type'<br />
&gt;&gt;&gt;c=type('FooC',(),{})<br />
&gt;&gt;&gt;c.__name__<br />
'FooC'</font></p>
<p><font face="Verdana">至此可以看出来如果像这样定义class A(type)，实例化的时候是会隐式调用type()的，有点类似于c++的自动构造函数，然而python里又必须是隐式的，显式会出现二义性(从试验结果看，似乎只有type被传入)，因为type本身也是一个type。意思是所有，对象是类的实例，类都是type的实例，然而type也是类，type是type的实例(事实上这和我们这些语言的使用者完全无关，而这个逻辑也是无稽的)。</font></p>
<p><font face="Verdana">"对于老式类，定义一个全局 _metaclass_ 变量可以强制使用定制元类。但大多数时间，最安全的方法是，在希望通过定制元类来创建类时，设置该类的 _metaclass_ 类属性。必须在类定义本身中设置变量，因为 如果稍后（在已经创建类对象之后）设置属性，则不会使用元类。例如：" </font></p>
<font face="Verdana">
<p><br />
清单 6. 用类属性设置元类<br />
&gt;&gt;&gt; class Bar:<br />
...&nbsp;&nbsp;&nbsp;&nbsp; __metaclass__ = Printable<br />
...&nbsp;&nbsp;&nbsp;&nbsp; def foomethod(self): print 'foo'<br />
...<br />
&gt;&gt;&gt; Bar.whoami()<br />
I am a Bar<br />
&gt;&gt;&gt; Bar().foomethod()<br />
foo<br />
&nbsp;<br />
而通过在运行时指定__metaclass__可以获得额外的动态效果，如:<br />
"<br />
% cat dump.py<br />
#!/usr/bin/python<br />
import sys<br />
if len(sys.argv) &gt; 2:<br />
&nbsp;&nbsp;&nbsp; module, metaklass&nbsp; = sys.argv[1:3]<br />
&nbsp;&nbsp;&nbsp; m = __import__(module, globals(), locals(), [metaklass])<br />
&nbsp;&nbsp;&nbsp; __metaclass__ = getattr(m, metaklass)<br />
class Data:<br />
&nbsp;&nbsp;&nbsp; def __init__(self):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.num = 38<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.lst = ['a','b','c']<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.str = 'spam'<br />
&nbsp;&nbsp;&nbsp; dumps&nbsp;&nbsp; = lambda self: `self`<br />
&nbsp;&nbsp;&nbsp; __str__ = lambda self: self.dumps()<br />
data = Data()<br />
print data<br />
% dump.py<br />
&lt;__main__.Data instance at 1686a0&gt;</p>
<p>清单 8. 添加外部序列化元类<br />
% dump.py gnosis.magic MetaXMLPickler<br />
&lt;?xml version="1.0"?&gt;<br />
&lt;!DOCTYPE PyObject SYSTEM "PyObjects.dtd"&gt;<br />
&lt;PyObject module="__main__" class="Data" id="720748"&gt;<br />
&lt;attr name="lst" type="list" id="980012" &gt;<br />
&nbsp; &lt;item type="string" value="a" /&gt;<br />
&nbsp; &lt;item type="string" value="b" /&gt;<br />
&nbsp; &lt;item type="string" value="c" /&gt;<br />
&lt;/attr&gt;<br />
&lt;attr name="num" type="numeric" value="38" /&gt;<br />
&lt;attr name="str" type="string" value="spam" /&gt;<br />
&lt;/PyObject&gt;<br />
&nbsp;</p>
<p><br />
这个特殊的示例使用 gnosis.xml.pickle 的序列化样式，但最新的 gnosis.magic 包还包含元类序列化器 MetaYamlDump 、 MetaPyPickler 和 MetaPrettyPrint 。而且， dump.py &#8220;应用程序&#8221;的用户可以从任何定义了任何期望的 MetaPickler 的 Python 包中利用该&#8220;MetaPickler&#8221;。出于此目的而编写合适的元类如下所示： </p>
<p><br />
清单 9. 用元类添加属性<br />
class MetaPickler(type):<br />
&nbsp;&nbsp;&nbsp; "Metaclass for gnosis.xml.pickle serialization"<br />
&nbsp;&nbsp;&nbsp; def __init__(cls, name, bases, dict):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; from gnosis.xml.pickle import dumps<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; super(MetaPickler, cls).__init__(name, bases, dict)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setattr(cls, 'dumps', dumps) <br />
"<br />
我没有去细读,不过看来python是有对象xml序列化和反序列化的标准和现成的可调用的类。</p>
<p>"<br />
一种基于类的声明性框架是 gnosis.xml.validity 。在此框架下，可以声明许多&#8220;有效性类&#8221;，这些类表示了一组有关有效 XML 文档的约束。这些声明非常接近于 DTD 中所包含的那些声明。例如，可以用以下代码来配置一篇&#8220;dissertation&#8221;文档： </p>
<p><br />
清单 10. simple_diss.py gnosis.xml.validity 规则<br />
from gnosis.xml.validity import *<br />
class figure(EMPTY):&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pass<br />
class _mixedpara(Or):&nbsp;&nbsp;&nbsp;&nbsp; _disjoins = (PCDATA, figure)<br />
class paragraph(Some):&nbsp;&nbsp;&nbsp; _type = _mixedpara<br />
class title(PCDATA):&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pass<br />
class _paras(Some):&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _type = paragraph<br />
class chapter(Seq):&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _order = (title, _paras)<br />
class dissertation(Some): _type = chapter </p>
<p><br />
如果在没有正确组件子元素的情形下尝试实例化 dissertation 类，则会产生一个描述性异常；对于每个子元素，亦是如此。当只有一种明确的方式可以将参数&#8220;提升&#8221;为正确的类型 时，会从较简单的参数来生成正确的子元素。 </p>
<p>即使有效性类常常（非正式）基于预先存在的 DTD，这些类的实例也还是将自己打印成简单的 XML 文档片段，例如： </p>
<p><br />
清单 11. 基本的有效性类文档的创建<br />
&gt;&gt;&gt; from simple_diss import *<br />
&gt;&gt;&gt; ch = LiftSeq(chapter, ('It Starts','When it began'))<br />
&gt;&gt;&gt; print ch<br />
&lt;chapter&gt;&lt;title&gt;It Starts&lt;/title&gt;<br />
&lt;paragraph&gt;When it began&lt;/paragraph&gt;<br />
&lt;/chapter&gt;<br />
&nbsp;</p>
<p><br />
通过使用元类来创建有效性类，我们可以从类声明中生成 DTD（我们在这样做的同时，可以向这些有效性类额外添加一个方法）：</p>
<p><br />
清单 12. 在模块导入期间利用元类<br />
&gt;&gt;&gt; from gnosis.magic import DTDGenerator, \<br />
...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; import_with_metaclass, \<br />
...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; from_import<br />
&gt;&gt;&gt; d = import_with_metaclass('simple_diss',DTDGenerator)<br />
&gt;&gt;&gt; from_import(d,'**')<br />
&gt;&gt;&gt; ch = LiftSeq(chapter, ('It Starts','When it began'))<br />
&gt;&gt;&gt; print ch.with_internal_subset()<br />
&lt;?xml version='1.0'?&gt;<br />
&lt;!DOCTYPE chapter [<br />
&lt;!ELEMENT figure EMPTY&gt;<br />
&lt;!ELEMENT dissertation (chapter)+&gt;<br />
&lt;!ELEMENT chapter (title,paragraph+)&gt;<br />
&lt;!ELEMENT title (#PCDATA)&gt;<br />
&lt;!ELEMENT paragraph ((#PCDATA|figure))+&gt;<br />
]&gt;<br />
&lt;chapter&gt;&lt;title&gt;It Starts&lt;/title&gt;<br />
&lt;paragraph&gt;When it began&lt;/paragraph&gt;<br />
&lt;/chapter&gt;<br />
&nbsp;</p>
<p><br />
包 gnosis.xml.validity 不知道 DTD 和内部子集。那些概念和能力完全由元类 DTDGenerator 引入进来，对 gnosis.xml.validity 或 simple_diss.py 不做 任何更改。 DTDGenerator 不将自身的 .__str__() 方法替换进它产生的类 — 您仍然可以打印简单的 XML 片段 — 但元类可以方便地修改这种富有&#8220;魔力&#8221;的方法。 <br />
"</p>
<p>我也没有细读，大意是使用simple_diss.py gnosis.xml.validity，可以用类似于python的类声明来完成类似于dtd的规则描述，而编写这种python本身又和dtd何其相似。</p>
<p>"<br />
元带来的便利</p>
<p>为了使用元类以及一些可以在面向方面的编程中所使用的样本元类，包 gnosis.magic 包含几个实用程序。其中最重要的实用程序是 import_with_metaclass() 。在上例中所用到的这个函数使您能导入第三方的模块，但您要用定制元类而不是用 type 来创建所有模块类。无论您想对第三方模块赋予什么样的新能力，您都可以在创建的元类内定义该能力（或者从其它地方一起获得）。 gnosis.magic 包含一些可插入的序列化元类；其它一些包可能包含跟踪能力、对象持久性、异常日志记录或其它能力。 </p>
<p>import_with_metclass() 函数展示了元类编程的几个性质： </p>
<p><br />
清单 13. [gnosis.magic] 的 import_with_metaclass()<br />
def import_with_metaclass(modname, metaklass):<br />
&nbsp;&nbsp;&nbsp; "Module importer substituting custom metaclass"<br />
&nbsp;&nbsp;&nbsp; class Meta(object): __metaclass__ = metaklass<br />
&nbsp;&nbsp;&nbsp; dct = {'__module__':modname}<br />
&nbsp;&nbsp;&nbsp; mod = __import__(modname)<br />
&nbsp;&nbsp;&nbsp; for key, val in mod.__dict__.items():<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if inspect.isclass(val):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setattr(mod, key, type(key,(val,Meta),dct))<br />
&nbsp;&nbsp;&nbsp; return mod<br />
&nbsp;</p>
<p><br />
在这个函数中值得注意的样式是，用指定的元类生成普通的类 Meta 。但是，一旦将 Meta 作为祖先添加之后，也用定制元类来生成它的后代。原则上，象 Meta 这样的类 既可以带有元类生成器（metaclass producer） 也可以带有一组可继承的方法 — Meta 类的这两个方面是无关的。<br />
"</p>
<p>这段没怎么读懂。</p>
<p></font>&nbsp;</p>
<img src ="http://www.cnblogs.com/huazhihao/aggbug/1094096.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42801/" target="_blank">[新闻]百付宝加入战团 电子支付市场寻突破</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>IE8 Activities尝鲜</title><link>http://www.cnblogs.com/huazhihao/archive/2008/03/06/1093866.html</link><dc:creator>nfa2dfa</dc:creator><author>nfa2dfa</author><pubDate>Thu, 06 Mar 2008 09:33:00 GMT</pubDate><guid>http://www.cnblogs.com/huazhihao/archive/2008/03/06/1093866.html</guid><wfw:comment>http://www.cnblogs.com/huazhihao/comments/1093866.html</wfw:comment><comments>http://www.cnblogs.com/huazhihao/archive/2008/03/06/1093866.html#Feedback</comments><slash:comments>20</slash:comments><wfw:commentRss>http://www.cnblogs.com/huazhihao/comments/commentRss/1093866.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/huazhihao/services/trackbacks/1093866.html</trackback:ping><description><![CDATA[摘要: <img src="http://www.cnblogs.com/images/cnblogs_com/huazhihao/activityie8small.jpg" alt="IE8 Activities尝鲜"/>&nbsp;&nbsp;<a href='http://www.cnblogs.com/huazhihao/archive/2008/03/06/1093866.html'>阅读全文</a><img src ="http://www.cnblogs.com/huazhihao/aggbug/1093866.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42801/" target="_blank">[新闻]百付宝加入战团 电子支付市场寻突破</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>python diary(part 2)-set and dict.txt</title><link>http://www.cnblogs.com/huazhihao/archive/2008/02/26/1082555.html</link><dc:creator>nfa2dfa</dc:creator><author>nfa2dfa</author><pubDate>Tue, 26 Feb 2008 09:02:00 GMT</pubDate><guid>http://www.cnblogs.com/huazhihao/archive/2008/02/26/1082555.html</guid><wfw:comment>http://www.cnblogs.com/huazhihao/comments/1082555.html</wfw:comment><comments>http://www.cnblogs.com/huazhihao/archive/2008/02/26/1082555.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/huazhihao/comments/commentRss/1082555.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/huazhihao/services/trackbacks/1082555.html</trackback:ping><description><![CDATA[<p><font face="Verdana">the build-in type set is very useful in set-operation</font></p>
<p><font face="Verdana">Operation Equivalent Result <br />
len(s)&nbsp; cardinality of set s <br />
x in s&nbsp; test x for membership in s <br />
x not in s&nbsp; test x for non-membership in s <br />
s.issubset(t) s &lt;= t test whether every element in s is in t <br />
s.issuperset(t) s &gt;= t test whether every element in t is in s </font></p>
<p><font face="Verdana">s.union(t) s | t new set with elements from both s and t <br />
s.intersection(t) s &amp; t new set with elements common to s and t <br />
s.difference(t) s - t new set with elements in s but not in t <br />
s.symmetric_difference(t) s ^ t new set with elements in either s or t but not both <br />
s.copy()&nbsp; new set with a shallow copy of s </font></p>
<p><font face="Verdana">Operation Equivalent Result <br />
s.update(t) s |= t update set s, adding elements from t <br />
s.intersection_update(t) s &amp;= t update set s, keeping only elements found in both s and t <br />
s.difference_update(t) s -= t update set s, removing elements found in t <br />
s.symmetric_difference_update(t) s ^= t update set s, keeping only elements found in either s or t but not in both <br />
s.add(x)&nbsp; add element x to set s <br />
s.remove(x)&nbsp; remove x from set s; raises KeyError if not present <br />
s.discard(x)&nbsp; removes x from set s if present <br />
s.pop()&nbsp; remove and return an arbitrary element from s; raises KeyError if empty <br />
s.clear()&nbsp; remove all elements from set s </font></p>
<p><font face="Verdana"></font>&nbsp;</p>
<font face="Verdana">
<p><br />
the build-in type dict is most used as hashtable</p>
<p>Operation Result Notes <br />
len(a) the number of items in a&nbsp; <br />
a[k] the item of a with key k (1), (10) <br />
a[k] = v set a[k] to v&nbsp; <br />
del a[k] remove a[k] from a (1) <br />
a.clear() remove all items from a&nbsp; <br />
a.copy() a (shallow) copy of a&nbsp; <br />
k in a True if a has a key k, else False (2) <br />
k not in a Equivalent to not k in a (2) <br />
a.has_key(k) Equivalent to k in a, use that form in new code&nbsp; <br />
a.items() a copy of a's list of (key, value) pairs (3) <br />
a.keys() a copy of a's list of keys (3) <br />
a.update([b]) updates a with key/value pairs from b, overwriting existing keys, returns None (9) <br />
a.fromkeys(seq[, value]) Creates a new dictionary with keys from seq and values set to value (7) <br />
a.values() a copy of a's list of values (3) <br />
a.get(k[, x]) a[k] if k in a, else x (4) <br />
a.setdefault(k[, x]) a[k] if k in a, else x (also setting it) (5) <br />
a.pop(k[, x]) a[k] if k in a, else x (and remove k) (8) <br />
a.popitem() remove and return an arbitrary (key, value) pair (6) <br />
a.iteritems() return an iterator over (key, value) pairs (2), (3) <br />
a.iterkeys() return an iterator over the mapping's keys (2), (3) <br />
a.itervalues() return an iterator over the mapping's values (2), (3) </p>
<p>Notes: </p>
<p>(1) <br />
Raises a KeyError exception if k is not in the map. </p>
<p>(2) <br />
New in version 2.2. </p>
<p>(3) <br />
Keys and values are listed in an arbitrary order which is non-random, varies across Python implementations, and depends on the dictionary's history of insertions and deletions. If items(), keys(), values(), iteritems(), iterkeys(), and itervalues() are called with no intervening modifications to the dictionary, the lists will directly correspond. This allows the creation of (value, key) pairs using zip(): "pairs = zip(a.values(), a.keys())". The same relationship holds for the iterkeys() and itervalues() methods: "pairs = zip(a.itervalues(), a.iterkeys())" provides the same value for pairs. Another way to create the same list is "pairs = [(v, k) for (k, v) in a.iteritems()]". </p>
<p>(4) <br />
Never raises an exception if k is not in the map, instead it returns x. x is optional; when x is not provided and k is not in the map, None is returned. </p>
<p>(5) <br />
setdefault() is like get(), except that if k is missing, x is both returned and inserted into the dictionary as the value of k. x defaults to None. </p>
<p>(6) <br />
popitem() is useful to destructively iterate over a dictionary, as often used in set algorithms. If the dictionary is empty, calling popitem() raises a KeyError. </p>
<p>(7) <br />
fromkeys() is a class method that returns a new dictionary. value defaults to None. New in version 2.3. </p>
<p>(8) <br />
pop() raises a KeyError when no default value is given and the key is not found. New in version 2.3. </p>
<p>(9) <br />
update() accepts either another mapping object or an iterable of key/value pairs (as a tuple or other iterable of length two). If keyword arguments are specified, the mapping is then is updated with those key/value pairs: "d.update(red=1, blue=2)". Changed in version 2.4: Allowed the argument to be an iterable of key/value pairs and allowed keyword arguments. </p>
<p>(10) <br />
If a subclass of dict defines a method __missing__, if the key k is not present, the a[k] operation calls that method with the key k as argument. The a[k] operation then returns or raises whatever is returned or raised by the __missing__(k) call if the key is not present. No other operations or methods invoke __missing__(). If __missing__ is not defined, KeyError is raised. __missing__ must be a method; it cannot be an instance variable. For an example, see collections.defaultdict. New in version 2.5. </font></p>
<img src ="http://www.cnblogs.com/huazhihao/aggbug/1082555.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42800/" target="_blank">[新闻]邮件标准协议英文独占时代终结</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item></channel></rss>