<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title>微风实验室</title>
		<link>http://dev.meettea.com/</link>
		<description>Design,Develop,Program,SEO and UED</description>
		<copyright>Copyright (C) 2004 Security Angel Team [S4T] All Rights Reserved.</copyright>
		<generator>SaBlog-X Version 1.6 Build 20080806</generator>
		<lastBuildDate>Fri, 30 Jul 2010 18:06:53 +0000</lastBuildDate>
		<ttl>30</ttl>
		<item>
			<guid>http://dev.meettea.com/show-87-1.html</guid>
			<title>PHP终止PHP5.2的积极更新，鼓励用户升级到PHP5.3</title>
			<author>shiny</author>
			<description><![CDATA[<p>昨日，在php官网上php5.2.x系列稳定版更新到php5.2.14，PHP5.3.x系列更新到PHP5.3.3。
同时这个版本主要改进了PHP5.2.x系列的稳定性，修复60多个BUG，部分BUG与安全相关。
这个版本标志着对PHP5.2系列更新的结束，在此版本之后不再积极更新PHP5.2x，其安全补丁可能以单个形式发布。
</p>
<p>
与此同时，PHP开发团队发布了PHP5.3.3，修复了近100个BUG，鼓励所有PHP5.2系列的用户升级到PHP5.3。
但是实际上国内很多PHP程序对PHP5.3的支持都有不少小问题。
</p>
<p>
此外，PHP官网着重列出一个PHP5.3.3新的不兼容特性：在命名空间里，和类名一致的函数不再被作为一个构造函数。不过没有使用namespace的类不受影响。
<code>
&lt;?php<br />
namespace Foo;<br />
class Bar {<br />
&nbsp;&nbsp;public function Bar() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;// 在PHP 5.3.0-5.3.2版本作为构造函数<br />
&nbsp;&nbsp;&nbsp;&nbsp;// 在PHP 5.3.3作为一个普通函数<br />
&nbsp;&nbsp;}<br />
}
?&gt;
</code>
</p>
<p>
以下是PHP5.3.3的修复清单。
Rewrote var_export() to use smart_str rather than output buffering, prevents data disclosure if a fatal error occurs (CVE-2010-2531).
<ul>
<li>Fixed a possible resource destruction issues in shm_put_var().</li>
<li>Fixed a possible information leak because of interruption of XOR operator.</li>
<li>Fixed a possible memory corruption because of unexpected call-time pass by refernce and following memory clobbering through callbacks.</li>
<li>Fixed a possible memory corruption in ArrayObject::uasort().</li>
<li>Fixed a possible memory corruption in parse_str().</li>
<li>Fixed a possible memory corruption in pack().</li>
<li>Fixed a possible memory corruption in substr_replace().</li>
<li>Fixed a possible memory corruption in addcslashes().</li>
<li>Fixed a possible stack exhaustion inside fnmatch().</li>
<li>Fixed a possible dechunking filter buffer overflow.</li>
<li>Fixed a possible arbitrary memory access inside sqlite extension.</li>
<li>Fixed string format validation inside phar extension.</li>
<li>Fixed handling of session variable serialization on certain prefix characters.</li>
<li>Fixed a NULL pointer dereference when processing invalid XML-RPC requests (Fixes CVE-2010-0397, bug #51288).</li>
<li>Fixed SplObjectStorage unserialization problems (CVE-2010-2225).</li>
<li>Fixed possible buffer overflows in mysqlnd_list_fields, mysqlnd_change_user.</li>
<li>Fixed possible buffer overflows when handling error packets in mysqlnd.</li>
<li>Key enhancements in PHP 5.3.3 include:</li>

<li>Upgraded bundled sqlite to version 3.6.23.1.</li>
<li>Upgraded bundled PCRE to version 8.02.</li>
<li>Added FastCGI Process Manager (FPM) SAPI.</li>
<li>Added stream filter support to mcrypt extension.</li>
<li>Added full_special_chars filter to ext/filter.</li>
<li>Fixed a possible crash because of recursive GC invocation.</li>
<li>Fixed bug #52238 (Crash when an Exception occured in iterator_to_array).</li>
<li>Fixed bug #52041 (Memory leak when writing on uninitialized variable returned from function).</li>
<li>Fixed bug #52060 (Memory leak when passing a closure to method_exists()).</li>
<li>Fixed bug #52001 (Memory allocation problems after using variable variables).</li>
<li>Fixed bug #51723 (Content-length header is limited to 32bit integer with Apache2 on Windows).</li>
<li>Fixed bug #48930 (__COMPILER_HALT_OFFSET__ incorrect in PHP >= 5.3).</li>
<li>For users upgrading from PHP 5.2 there is a migration guide available on http://php.net/migration53, detailing the changes between those releases and PHP 5.3.</li>
</ul>
</p>


<p>
PHP5.2.14主要更新清单
<ul>
<li>Rewrote var_export() to use smart_str rather than output buffering, prevents data disclosure if a fatal error occurs.</li>
<li>Fixed a possible interruption array leak in strrchr().(CVE-2010-2484)</li>
<li>Fixed a possible interruption array leak in strchr(), strstr(), substr(), chunk_split(), strtok(), addcslashes(), str_repeat(), trim().</li>
<li>Fixed a possible memory corruption in substr_replace().</li>
<li>Fixed SplObjectStorage unserialization problems (CVE-2010-2225).</li>
<li>Fixed a possible stack exaustion inside fnmatch().</li>
<li>Fixed a NULL pointer dereference when processing invalid XML-RPC requests (Fixes CVE-2010-0397, bug #51288).</li>
<li>Fixed handling of session variable serialization on certain prefix characters.</li>
<li>Fixed a possible arbitrary memory access inside sqlite extension. Reported by Mateusz Kocielski.</li>

<li>Key enhancements in PHP 5.2.14 include:</li>
<li>Upgraded bundled PCRE to version 8.02.</li>
<li>Updated timezone database to version 2010.5.</li>
<li>Fixed bug #52238 (Crash when an Exception occured in iterator_to_array).</li>
<li>Fixed bug #52237 (Crash when passing the reference of the property of a non-object).</li>
<li>Fixed bug #52041 (Memory leak when writing on uninitialized variable returned from function).</li>
<li>Fixed bug #51822 (Segfault with strange __destruct() for static class variables).</li>
<li>Fixed bug #51552 (debug_backtrace() causes segmentation fault and/or memory issues).</li>
<li>Fixed bug #49267 (Linking fails for iconv on MacOS: "Undefined symbols: _libiconv").</li>
</ul>
</p>]]></description>
			<link>http://dev.meettea.com/show-87-1.html</link>
			<category domain="http://dev.meettea.com/category-1-1.html">微风日志</category>
			<pubDate>2010-07-23 13:34</pubDate>
		</item>
		<item>
			<guid>http://dev.meettea.com/show-86-1.html</guid>
			<title>午茶时光 开篇的序</title>
			<author>shiny</author>
			<description><![CDATA[<p>不知不觉，左三年右三年，从午茶的策划到现在居然快六年了。</p>
<p>六年时间里，我从一个伪文艺少年到IT从业人员；从无病呻吟到只会用if/else思考；
从被深度洗脑到兼容并包，变化不可谓不大。</p>
<p>
现在，终于算有个交代了。<br />
当然，也物是人非。</p>
<ul>
<li>六年时间，80后都开始踏上社会的舞台；</li>
<li>六年时间，韩寒都开着赛车出了独唱团；</li>
<li>六年时间，秋雨大师成了佐餐笑料；</li>
<li>六年时间，新概念都成了旧概念；</li>
<li>六年时间，带三个表都实现了河蟹社会的转变；</li>
<li>六年时间，装X的都发了财；</li>
<li>六年时间，我们的国家奔向西朝鲜的康庄大道上；</li>
<li>六年时间，形形色色的人们用无尽的欲望将五浊恶世演绎得淋漓精致。</li>
<li>那就把世界末日当作一个善意的谎言，赶在2012之前开辟最后一块净地，实现最后一个梦想吧。</li>
</ul>
<center><a href="http://wucha.sg">http://wucha.sg</a> shiny</center>
<strong>预告：wucha.sg将在内测结束后正式面向公众访问，文章辑录标准是真情实感、有思想、文章耐读、形式不拘。初期不会有很多互动功能。</strong>
附：内测截图
]]></description>
			<link>http://dev.meettea.com/show-86-1.html</link>
			<category domain="http://dev.meettea.com/category-1-1.html">微风日志</category>
			<pubDate>2010-07-21 21:37</pubDate>
		</item>
		<item>
			<guid>http://dev.meettea.com/show-85-1.html</guid>
			<title>【转载】个人使用VPS的心得</title>
			<author>shiny</author>
			<description><![CDATA[<p><strong>一、为什么需要一个VPS</strong><br />
1、熟悉linux的操作<br />
现在基本的PHP岗位都多多少少有精通linux的需要了，什么bash、lamp的构建，不要告诉我你还不会自己编译一个php。<br />
看看PHPCHINA招聘版的帖子吧<br />
http://bbs.phpchina.com/thread-188734-1-1.html<br />
http://bbs.phpchina.com/thread-188833-1-1.html<br />
如果没机会接触服务器，那么vps是最接近线上运行环境的情况了</p>
<p>2、定制自己所需的运行环境<br />
很多人都在问定时执行怎么做，也有人为虚拟主机缺少XXX的支持而烦恼，也有人为程序的兼容性而努力着。<br />
如果使用了VPS，那么这些问题也可以迎刃而解。定时执行可以在shell下使用crond,缺组件可以自己编译php来支持，还能做类似于mysql定时备份等操作。</p>
<p>3、可以尝试no sql、memcached、 HipHop等先进技术<br />
好吧，如果你到今天还未尝试过no sql，那么你也是一个很Out的phper了。<br />
no sql适用对时效性较强的部分，比如Cassandra，facebook和digg.com在使用；<br />
sina app大文件储存使用MongoDB进行储存；<br />
xiami.com的消息通知部分用Redis；<br />
校内(人人)使用Tokyo Cabinet等等等<br />
振奋人心的HipHop(把PHP&ldquo;翻译&rdquo;成c++并编译成可执行文件)<br />
而Redis是linux only的，HipHop仅支持64位linux，没有一个linux还真搞不定，那么那么，你还打算在虚拟主机里YY吗？</p>
<p>4、自由绑定域名，想放几个站就放几个站<br />
介个，虚拟主机就是靠这个赚钱的，而实际上很多站都是没流量的，靠这个矛盾虚拟主机才赚钱。而VPS是不限制站点数量的。</p>
<p>5、ssh或vpn翻墙<br />
国外的VPS兼有翻墙功能，不仅不用满天找翻墙工具了，还能为朋友提供便利。<br />
什么，为什么翻墙？你难道不想接触淫淫网、国内微薄的抄袭对象吗？</p>
<p>6、相当于拥有一个私人svn服务器<br />
google code和sourceforge源码是开放的，svnhost.cn私人源码是要收费的，对于有保密性要求而又没公司服务器支持的可以选择VPS上搭建SVN。</p>
<p>7、独立ip<br />
国外的好处是不会受其他站牵连(比如godaddy的是被墙专业户)<br />
其他好处是SEO方便、可以安装SSL证书(只有独立ip才可以)</p>
<p><strong>二、关于VPS的挑选<br />
</strong>如果是国外的，从速度上看加州的机房对于国内用户访问速度不错(因为是海底光缆的米国入口)，世界范围的ping延迟也平均在150ms左右；比如San Jose或Fremont。<br />
不过也有童鞋测的米国中部的VPS速度也不错，可能是带宽原因。<br />
个人经验：有时候国内的VPS未必比米国的快;挑选nginx、lighttpd之类的WEB服务器省内存;SWAP使用超过100MB后需要减少内存占用了;balabalabalabala</p>
<p>个人目前在使用<a href="http://www.rashost.com">瑞豪开源</a>RASHOST，经验是，起步门栏低，128M起(700一年)，支持月付，几个虚拟主机就抵一个VPS了；国内商家，中文，支付方便，也卖国外VPS；客服比较耐心；比如张宴之类牛人也在用瑞豪开源；从这段时间的使用来看，还是很不错的，我推荐的朋友也都一直在用。</p>
<p><strong>三、有用的资源</strong><br />
免费SSL证书(不支持opera) <a href="http://dev.meettea.com/show-52-1.html">http://dev.meettea.com/show-52-1.html</a> <br />
Nginx 0.8.x + PHP 5.2.13（FastCGI）搭建胜过Apache十倍的Web服务器 <a href="http://blog.s135.com/nginx_php_v6/">http://blog.s135.com/nginx_php_v6/</a><br />
检测服务器状况 <a href="http://www.jiankongbao.com">http://www.jiankongbao.com</a><br />
瑞豪开源优惠码9折 RASHOST9</p>]]></description>
			<link>http://dev.meettea.com/show-85-1.html</link>
			<category domain="http://dev.meettea.com/category-1-1.html">微风日志</category>
			<pubDate>2010-07-15 10:41</pubDate>
		</item>
		<item>
			<guid>http://dev.meettea.com/show-84-1.html</guid>
			<title>独唱团 - Salvation lies within</title>
			<author>shiny</author>
			<description><![CDATA[<p>也许这里面并没有什么内容，但是Salvation lies within。我会静候阳光照耀光复后的大陆。</p>]]></description>
			<link>http://dev.meettea.com/show-84-1.html</link>
			<category domain="http://dev.meettea.com/category-4-1.html">微风笔记</category>
			<pubDate>2010-07-08 12:36</pubDate>
		</item>
		<item>
			<guid>http://dev.meettea.com/show-83-1.html</guid>
			<title>xhEditor皮肤：No Style is The Best Style</title>
			<author>shiny</author>
			<description><![CDATA[<p>基于xheditor-1.0.0-rc3的默认皮肤。</p>
<p>就改了一个ui.css、一排按钮以及一个loading图标。</p>
<p>最近，我变成了一个极简主义者。xheditor默认太有style了，这样不好，不好。。。</p>
<p>附上截图和附件:</p>]]></description>
			<link>http://dev.meettea.com/show-83-1.html</link>
			<category domain="http://dev.meettea.com/category-6-1.html">发布与下载</category>
			<pubDate>2010-06-29 21:19</pubDate>
		</item>
		<item>
			<guid>http://dev.meettea.com/show-81-1.html</guid>
			<title>历史上的今天</title>
			<author>shiny</author>
			<description><![CDATA[<strong>历史上的今天：21年前我国被研发史上最强大64位CPU</strong>

<p>绝大多数新生代的同学并不了解这一第五大发明。</p>
<p>由于这一发明实在太强大了，作为一项军事机密我国一直处于保密状态。
近期不慎泄密的深圳卫视已经被处理。</p>
<p>但是香港同胞们和世界各地华侨一直为伟大的祖国而骄傲，每年自发庆祝这一伟大的纪念日。</p>]]></description>
			<link>http://dev.meettea.com/show-81-1.html</link>
			<category domain="http://dev.meettea.com/category-1-1.html">微风日志</category>
			<pubDate>2010-06-04 19:12</pubDate>
		</item>
		<item>
			<guid>http://dev.meettea.com/show-80-1.html</guid>
			<title>我加入了一个公益项目，你也来吧？</title>
			<author>shiny</author>
			<description><![CDATA[<h2>博主介绍</h2>
<p>这是一个搜索引擎公益项目，由于总所周知的环境。这是来源于官方博客的一句话介绍：“我们的良心搜索的定位是为对于可见的虚假的互联网搜索信息不满的群体提供一个更为真实、可信的信息搜索体验。” 目前已有14人，涵盖产品经理、UI、页面、JAVA、数据库等多种职业。由于项目的需要，破例在停笔后发一次博文。</p>
<p>以下是官方公告，来自：http://buzz.sinaapp.com/?p=38</p>
<h2>加入我们</h2> 
			<div class="entry"> 
				<p>为了你我，就是现在！<strong>联系我们：</strong> 123zhaodao@gmail.com</p> 
<p>我们从不标榜任何高尚的情操，却追求着资讯平等的基本人权。我们不愿沉默，也不想卷入任何极端的对抗之中。我们热爱自由，相信公民社会共建的美好未来。</p> 
<p>基于我们共同的理想与追求，现致力搭建一个由你我共同参与的优质信息平台，专注为全体网民提供开放、真实、可信的信息来源。</p> 
<p>开放，即所有用户可对信息进行编辑和评分；</p> 
<p>真实，即杜绝一切商业利益对搜索结果的影响；</p> 
<p>可信，即所有信息经由广大用户检验突出公信力。</p> 
<p>资讯传播，从来就不是少数人掌握的特权。让我们团结一致，只做人民的搜索；让我们混在一起，在酸甜苦辣的路程，找回人生的完整。</p> 
<p>古鸽鸟走了，寒号鸟就快来了，你准备好没？</p> 
<p>（感谢丁彧对本文的贡献）</p> 
</div> ]]></description>
			<link>http://dev.meettea.com/show-80-1.html</link>
			<category domain="http://dev.meettea.com/category-1-1.html">微风日志</category>
			<pubDate>2010-04-15 14:32</pubDate>
		</item>
		<item>
			<guid>http://dev.meettea.com/show-79-1.html</guid>
			<title>博客封笔一年</title>
			<author>shiny</author>
			<description><![CDATA[<p>细数本博客数十篇文章，自觉功力不够深厚；再观高人所著，无论是设计模式、或是先进开源软件的介绍、还是对框架的思考、或者设计趋势的介绍，无不令人自惭汗颜；故封笔一年，明年此时再动笔，即可不至于误导观众，又可自勉自励。</p>
<p>微风 记于2010-4-8</p>]]></description>
			<link>http://dev.meettea.com/show-79-1.html</link>
			<category domain="http://dev.meettea.com/category-1-1.html">微风日志</category>
			<pubDate>2010-04-08 09:03</pubDate>
		</item>
		<item>
			<guid>http://dev.meettea.com/show-78-1.html</guid>
			<title>PHP版域名whois信息(过期时间)查询工具</title>
			<author>shiny</author>
			<description><![CDATA[<p>修改自网上流传的版本，并作了修正：</p>
<p>增加了两百多种域名的支持；</p>
<p>修正了过期时间解析错误的BUG，改进了效率；</p>
<p>&nbsp;</p>
<p>预期推出域名过期自动提醒服务。不过也要看心情和动力的。</p>
<p><font color="#0000ff">: )</font></p>
<div class="codeText">
<div class="codeHead">PHP代码</div>
<ol class="dp-c">
    <li class="alt"><span><span>&lt;?php &nbsp;&nbsp;</span></span></li>
    <li><span class="keyword">if</span><span>(!isset(</span><span class="vars">$_GET</span><span>[</span><span class="string">'domain'</span><span>])){ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="func">echo</span><span>&nbsp;</span><span class="string">&quot;1.您未指定要查询的域名！&lt;br&nbsp;/&gt;&quot;</span><span>; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="func">echo</span><span>&nbsp;</span><span class="string">&quot;2.接口使用方法：/whois.php?domain=&lt;FONT&nbsp;color=#ff0000&gt;域名&lt;/FONT&gt;&lt;br&nbsp;/&gt;&quot;</span><span>; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="func">echo</span><span>&nbsp;</span><span class="string">&quot;3.&lt;FONT&nbsp;color=#ff0000&gt;域名&lt;/FONT&gt;请勿加&lt;FONT&nbsp;color=#ff0000&gt;www.&lt;/FONT&gt;&lt;br&nbsp;/&gt;&quot;</span><span>; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="func">exit</span><span>; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>} &nbsp;&nbsp;</span></li>
    <li><span class="vars">$domain</span><span>&nbsp;&nbsp;=&nbsp;</span><span class="vars">$_GET</span><span>[</span><span class="string">'domain'</span><span>]; &nbsp;&nbsp;</span></li>
    <li class="alt"><span class="keyword">class</span><span>&nbsp;SearchDomain &nbsp;&nbsp;</span></li>
    <li><span>{ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span>&nbsp;</span><span class="vars">$arr_whois_servers</span><span>&nbsp;=&nbsp;</span><span class="keyword">array</span><span>( &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'com'</span><span>=&gt;</span><span class="string">'whois.internic.net'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'net'</span><span>=&gt;</span><span class="string">'whois.internic.net'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'org'</span><span>=&gt;</span><span class="string">'whois.pir.org'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'asia'</span><span>=&gt;</span><span class="string">'whois.crsnic.net'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'ac'</span><span>=&gt;</span><span class="string">'whois.nic.uk'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'ad'</span><span>=&gt;</span><span class="string">'whois.nic.ad'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'ae'</span><span>=&gt;</span><span class="string">'whois.uaenic.ae'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'ag'</span><span>=&gt;</span><span class="string">'whois.nic.ag'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'ai'</span><span>=&gt;</span><span class="string">'whois.offshore.com.ai'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'al'</span><span>=&gt;</span><span class="string">'whois.inima.al'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'an'</span><span>=&gt;</span><span class="string">'whois.una.net'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'ao'</span><span>=&gt;</span><span class="string">'whois.fccn.pt'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'aq'</span><span>=&gt;</span><span class="string">'whois.nsrc.org'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'ar'</span><span>=&gt;</span><span class="string">'whois.nic.ar'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'as'</span><span>=&gt;</span><span class="string">'whois.nic.as'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'am'</span><span>=&gt;</span><span class="string">'whois.amnic.net'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'au'</span><span>=&gt;</span><span class="string">'whois.amnic.net'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'at'</span><span>=&gt;</span><span class="string">'whois.amnic.net'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'az'</span><span>=&gt;</span><span class="string">'whois.domain.az'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'ba'</span><span>=&gt;</span><span class="string">'whois.utic.net.ba'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'bb'</span><span>=&gt;</span><span class="string">'whois.domains.org.bb'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'be'</span><span>=&gt;</span><span class="string">'whois.dns.be'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'bf'</span><span>=&gt;</span><span class="string">'whois.onatel.bf'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'bg'</span><span>=&gt;</span><span class="string">'whois.digsys.bg'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'bh'</span><span>=&gt;</span><span class="string">'whois.batelco.com.bh'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'bi'</span><span>=&gt;</span><span class="string">'whois.nic.bi'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'biz'</span><span>=&gt;</span><span class="string">'whois.nic.biz'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'bm'</span><span>=&gt;</span><span class="string">'whois.bermudanic.bm'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'bn'</span><span>=&gt;</span><span class="string">'whois.brunet.bn'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'bo'</span><span>=&gt;</span><span class="string">'whois.digsys.bo'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'by'</span><span>=&gt;</span><span class="string">'whois.unibel.by'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'bz'</span><span>=&gt;</span><span class="string">'whois.belizenic.bz'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'br'</span><span>=&gt;</span><span class="string">'whois.registro.fapesp.br'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'bt'</span><span>=&gt;</span><span class="string">'whois.nic.bt'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'bv'</span><span>=&gt;</span><span class="string">'whois.norid.no'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'ca'</span><span>=&gt;</span><span class="string">'whois.cira.ca'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'cc'</span><span>=&gt;</span><span class="string">'whois.nic.cc'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'cd'</span><span>=&gt;</span><span class="string">'whois.nic.cd'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'cf'</span><span>=&gt;</span><span class="string">'whois.socatel.intnet.cf'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'cg'</span><span>=&gt;</span><span class="string">'whois.nic.cg'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'ch'</span><span>=&gt;</span><span class="string">'whois.nic.ch'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'ci'</span><span>=&gt;</span><span class="string">'whois.aipdi.ci'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'ck'</span><span>=&gt;</span><span class="string">'whois.oyster.net.ck'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'cl'</span><span>=&gt;</span><span class="string">'whois.nic.cl'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'cm'</span><span>=&gt;</span><span class="string">'whois.info.intelcam.cm'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'cn'</span><span>=&gt;</span><span class="string">'whois.cnnic.net.cn'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'co'</span><span>=&gt;</span><span class="string">'whois.nic.uniandes.edu.co'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'coop'</span><span>=&gt;</span><span class="string">'whois.nic.coop'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'cu'</span><span>=&gt;</span><span class="string">'whois.nic.cu'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'cx'</span><span>=&gt;</span><span class="string">'whois.nic.cx'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'cy'</span><span>=&gt;</span><span class="string">'whois.nic.cy'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'cz'</span><span>=&gt;</span><span class="string">'whois.nic.cz'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'de'</span><span>=&gt;</span><span class="string">'whois.denic.de'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'dk'</span><span>=&gt;</span><span class="string">'whois.dk-hostmaster.dk'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'dj'</span><span>=&gt;</span><span class="string">'whois.intnet.dj'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'do'</span><span>=&gt;</span><span class="string">'whois.nic.do'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'dz'</span><span>=&gt;</span><span class="string">'whois.nic.dz'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'ec'</span><span>=&gt;</span><span class="string">'whois.nic.ec'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'edu'</span><span>=&gt;</span><span class="string">'whois.educause.net'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'ee'</span><span>=&gt;</span><span class="string">'whois.eenet.ee'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'eg'</span><span>=&gt;</span><span class="string">'whois.frcu.eun.eg'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'es'</span><span>=&gt;</span><span class="string">'whois.nic.es'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'et'</span><span>=&gt;</span><span class="string">'whois.telecom.net.et'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'fi'</span><span>=&gt;</span><span class="string">'whois.ripe.net'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'fj'</span><span>=&gt;</span><span class="string">'whois.usp.ac.fj'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'fk'</span><span>=&gt;</span><span class="string">'whois.fidc.org.fk'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'fm'</span><span>=&gt;</span><span class="string">'whois.dot.fm'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'fo'</span><span>=&gt;</span><span class="string">'whois.nic.fo'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'fr'</span><span>=&gt;</span><span class="string">'whois.nic.fr'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'gb'</span><span>=&gt;</span><span class="string">'whois.nic.uk'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'ge'</span><span>=&gt;</span><span class="string">'whois.nic.net.ge'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'gf'</span><span>=&gt;</span><span class="string">'whois.nplus.gf'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'gg'</span><span>=&gt;</span><span class="string">'whois.nic.gg'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'gh'</span><span>=&gt;</span><span class="string">'whois.ghana.com'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'gi'</span><span>=&gt;</span><span class="string">'whois.gibnet.gi'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'gl'</span><span>=&gt;</span><span class="string">'whois.nic.gl'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'gm'</span><span>=&gt;</span><span class="string">'whois.nic.gm'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'gn'</span><span>=&gt;</span><span class="string">'whois.psg.com'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'gov'</span><span>=&gt;</span><span class="string">'whois.nic.gov'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'gp'</span><span>=&gt;</span><span class="string">'whois.nic.gp'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'gq'</span><span>=&gt;</span><span class="string">'whois.getesa.gq'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'gr'</span><span>=&gt;</span><span class="string">'whois.hostmaster.gr'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'gs'</span><span>=&gt;</span><span class="string">'whois.adamsnames.tc'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'gt'</span><span>=&gt;</span><span class="string">'whois.uvg.edu.gt'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'gu'</span><span>=&gt;</span><span class="string">'whois.gadao.gov.gu'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'hk'</span><span>=&gt;</span><span class="string">'whois.hkdnr.net.hk'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'hm'</span><span>=&gt;</span><span class="string">'whois.registry.hm'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'hn'</span><span>=&gt;</span><span class="string">'whois.nic.hn'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'hr'</span><span>=&gt;</span><span class="string">'whois.carnet.hr'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'hu'</span><span>=&gt;</span><span class="string">'whois.nic.hu'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'id'</span><span>=&gt;</span><span class="string">'whois.idnet.net.id'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'ie'</span><span>=&gt;</span><span class="string">'whois.domainregistry.ie'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'il'</span><span>=&gt;</span><span class="string">'whois.isoc.org.il'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'im'</span><span>=&gt;</span><span class="string">'whois.nic.im'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'in'</span><span>=&gt;</span><span class="string">'whois.domain.ncst.ernet.in'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'info'</span><span>=&gt;</span><span class="string">'whois.afilias.com'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'int'</span><span>=&gt;</span><span class="string">'whois.iana.org'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'io'</span><span>=&gt;</span><span class="string">'whois.nic.io'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'ir'</span><span>=&gt;</span><span class="string">'whois.nic.ir'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'is'</span><span>=&gt;</span><span class="string">'whois.isnic.is'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'it'</span><span>=&gt;</span><span class="string">'whois.nic.it'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'je'</span><span>=&gt;</span><span class="string">'whois.isles.net'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'jo'</span><span>=&gt;</span><span class="string">'whois.nic.net.jo'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'jp'</span><span>=&gt;</span><span class="string">'whois.nic.ad.jp'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'ke'</span><span>=&gt;</span><span class="string">'whois.nbnet.co.ke'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'kg'</span><span>=&gt;</span><span class="string">'whois.domain.kg'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'kh'</span><span>=&gt;</span><span class="string">'whois.mptc.gov.kh'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'kn'</span><span>=&gt;</span><span class="string">'whois.clu.edu'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'kr'</span><span>=&gt;</span><span class="string">'whois.nic.or.kr'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'kw'</span><span>=&gt;</span><span class="string">'whois.domainname.net.kw'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'kz'</span><span>=&gt;</span><span class="string">'whois.domain.kz'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'lb'</span><span>=&gt;</span><span class="string">'whois.aub.edu.lb'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'lc'</span><span>=&gt;</span><span class="string">'whois.isisworld.lc'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'li'</span><span>=&gt;</span><span class="string">'whois.nic.li'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'lk'</span><span>=&gt;</span><span class="string">'whois.nic.lk'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'lr'</span><span>=&gt;</span><span class="string">'whois.psg.com'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'ls'</span><span>=&gt;</span><span class="string">'whois.co.ls'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'lt'</span><span>=&gt;</span><span class="string">'whois.domreg.lt'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'lu'</span><span>=&gt;</span><span class="string">'whois.dns.lu'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'lv'</span><span>=&gt;</span><span class="string">'whois.nic.lv'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'ly'</span><span>=&gt;</span><span class="string">'whois.nic.ly'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'ma'</span><span>=&gt;</span><span class="string">'whois.iam.ma'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'mc'</span><span>=&gt;</span><span class="string">'whois.nic.mc'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'md'</span><span>=&gt;</span><span class="string">'whois.ripe.net'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'mil'</span><span>=&gt;</span><span class="string">'whois.nic.mil'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'mg'</span><span>=&gt;</span><span class="string">'whois.orstom.mg'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'mh'</span><span>=&gt;</span><span class="string">'whois.nic.net.mh'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'mk'</span><span>=&gt;</span><span class="string">'whois.mpt.com.mk'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'mm'</span><span>=&gt;</span><span class="string">'whois.nic.mm'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'mn'</span><span>=&gt;</span><span class="string">'whois.nic.mn'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'mo'</span><span>=&gt;</span><span class="string">'whois.umac.mo'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'mp'</span><span>=&gt;</span><span class="string">'whois.marketplace.mp'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'mq'</span><span>=&gt;</span><span class="string">'whois.nic.mq'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'mr'</span><span>=&gt;</span><span class="string">'whois.univ-mkc.mr'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'ms'</span><span>=&gt;</span><span class="string">'whois.adamsnames.tc'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'mt'</span><span>=&gt;</span><span class="string">'whois.um.edu.mt'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'mu'</span><span>=&gt;</span><span class="string">'whois.posix.co.za'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'mw'</span><span>=&gt;</span><span class="string">'whois.tarsus.net'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'mx'</span><span>=&gt;</span><span class="string">'whois.nic.mx'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'my'</span><span>=&gt;</span><span class="string">'whois.mynic.net.my'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'mz'</span><span>=&gt;</span><span class="string">'whois.nambu.uem.mz'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'na'</span><span>=&gt;</span><span class="string">'na-nic.com.na'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'name'</span><span>=&gt;</span><span class="string">'whois.nic.name'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'nc'</span><span>=&gt;</span><span class="string">'whois.norstom.nc'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'nf'</span><span>=&gt;</span><span class="string">'whois.names.nf'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'ni'</span><span>=&gt;</span><span class="string">'whois.nic.ni'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'nl'</span><span>=&gt;</span><span class="string">'whois.domain-registry.nl'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'no'</span><span>=&gt;</span><span class="string">'whois.norid.no'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'np'</span><span>=&gt;</span><span class="string">'whois.mos.com.np'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'nu'</span><span>=&gt;</span><span class="string">'whois.nic.nu'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'nz'</span><span>=&gt;</span><span class="string">'whois.domainz.net.nz'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'om'</span><span>=&gt;</span><span class="string">'whois.gto.net.om'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'pa'</span><span>=&gt;</span><span class="string">'whois.nic.pa'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'pe'</span><span>=&gt;</span><span class="string">'whois.ekeko.rcp.net.pe'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'ph'</span><span>=&gt;</span><span class="string">'whois.domreg.org.ph'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'pg'</span><span>=&gt;</span><span class="string">'whois.unitech.ac.pg'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'pk'</span><span>=&gt;</span><span class="string">'whois.pknic.net.pk'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'pl'</span><span>=&gt;</span><span class="string">'whois.nask.pl'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'pm'</span><span>=&gt;</span><span class="string">'whois.nic.pm'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'pn'</span><span>=&gt;</span><span class="string">'whois.nic.pn'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'pr'</span><span>=&gt;</span><span class="string">'whois.uprr.pr'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'ps'</span><span>=&gt;</span><span class="string">'whois.nic.ps'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'pt'</span><span>=&gt;</span><span class="string">'whois.fccn.pt'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'py'</span><span>=&gt;</span><span class="string">'whois.nic.py'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'qa'</span><span>=&gt;</span><span class="string">'whois.qatar.net.qa'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'re'</span><span>=&gt;</span><span class="string">'whois.nic.fr'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'ro'</span><span>=&gt;</span><span class="string">'whois.rnc.ro'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'ru'</span><span>=&gt;</span><span class="string">'whois.ripn.net'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'rw'</span><span>=&gt;</span><span class="string">'whois.nic.rw'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'sa'</span><span>=&gt;</span><span class="string">'whois.saudinic.net.sa'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'sb'</span><span>=&gt;</span><span class="string">'whois.sbnic.net.sb'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'sd'</span><span>=&gt;</span><span class="string">'whois.sudatel.sd'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'se'</span><span>=&gt;</span><span class="string">'whois.nic-se.se'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'sg'</span><span>=&gt;</span><span class="string">'whois.nic.net.sg'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'sh'</span><span>=&gt;</span><span class="string">'whois.nic.sh'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'si'</span><span>=&gt;</span><span class="string">'whois.arnes.si'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'sj'</span><span>=&gt;</span><span class="string">'whois.norid.no'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'sk'</span><span>=&gt;</span><span class="string">'whois.sk-nic.sk'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'sm'</span><span>=&gt;</span><span class="string">'whois.intelcom.sm'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'sn'</span><span>=&gt;</span><span class="string">'whois.nic.sn'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'so'</span><span>=&gt;</span><span class="string">'whois.nic.so'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'st'</span><span>=&gt;</span><span class="string">'whois.st-registry.tecnisys.net'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'su'</span><span>=&gt;</span><span class="string">'whois.ripn.net'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'sv'</span><span>=&gt;</span><span class="string">'whois.svnet.org.sv'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'sz'</span><span>=&gt;</span><span class="string">'whois.iafrica.sz'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'tc'</span><span>=&gt;</span><span class="string">'whois.adamsnames.tc'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'td'</span><span>=&gt;</span><span class="string">'whois.tit.td'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'tf'</span><span>=&gt;</span><span class="string">'whois.adamsnames.tc'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'tg'</span><span>=&gt;</span><span class="string">'whois.nic.tg'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'th'</span><span>=&gt;</span><span class="string">'whois.thnic.net'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'tj'</span><span>=&gt;</span><span class="string">'whois.nic.tj'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'tm'</span><span>=&gt;</span><span class="string">'whois.nic.tm'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'tn'</span><span>=&gt;</span><span class="string">'whois.ati.tn'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'to'</span><span>=&gt;</span><span class="string">'whois.tonic.to'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'tp'</span><span>=&gt;</span><span class="string">'whois.nic.tp'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'tr'</span><span>=&gt;</span><span class="string">'whois.metu.edu.tr'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'tt'</span><span>=&gt;</span><span class="string">'whois.nic.tt'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'tw'</span><span>=&gt;</span><span class="string">'whois.twnic.net'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'tz'</span><span>=&gt;</span><span class="string">'whois.psg.com'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'tv'</span><span>=&gt;</span><span class="string">'whois.networksolutions.com'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'ua'</span><span>=&gt;</span><span class="string">'nic.net.ua'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'ug'</span><span>=&gt;</span><span class="string">'whois.nic.ug'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'uk'</span><span>=&gt;</span><span class="string">'whois.nic.uk'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'uk'</span><span>=&gt;</span><span class="string">'whois.ripe.net'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'um'</span><span>=&gt;</span><span class="string">'whois.isi.edu'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'us'</span><span>=&gt;</span><span class="string">'whois.nic.us'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'uy'</span><span>=&gt;</span><span class="string">'whois.rau.edu.uy'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'uz'</span><span>=&gt;</span><span class="string">'whois.freenet.uz'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'ve'</span><span>=&gt;</span><span class="string">'whois.nic.ve'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'wf'</span><span>=&gt;</span><span class="string">'whois.nic.fr'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'vg'</span><span>=&gt;</span><span class="string">'whois.adamsnames.tc'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'vi'</span><span>=&gt;</span><span class="string">'whois.nic.vi'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'vn'</span><span>=&gt;</span><span class="string">'whois.batin.com.vn'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'vu'</span><span>=&gt;</span><span class="string">'whois.vunic.vu'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'ws'</span><span>=&gt;</span><span class="string">'samoanic.ws'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'yt'</span><span>=&gt;</span><span class="string">'whois.nic.fr'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'yu'</span><span>=&gt;</span><span class="string">'whois.nic.yu'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'za'</span><span>=&gt;</span><span class="string">'whois.co.za'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'zm'</span><span>=&gt;</span><span class="string">'whois.zamnet.zm'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="vars">$domain</span><span>=</span><span class="string">&quot;&quot;</span><span>; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">function</span><span>&nbsp;SetDomain(</span><span class="vars">$udomain</span><span>) &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$this</span><span>-&gt;domain&nbsp;=&nbsp;</span><span class="vars">$udomain</span><span>; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">function</span><span>&nbsp;GetInfo() &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$wl</span><span>&nbsp;=&nbsp;</span><span class="string">&quot;&quot;</span><span>; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$w_server</span><span>&nbsp;=&nbsp;</span><span class="vars">$this</span><span>-&gt;GetServer(); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(</span><span class="vars">$w_server</span><span>==</span><span class="string">&quot;&quot;</span><span>)&nbsp;</span><span class="keyword">return</span><span>&nbsp;</span><span class="string">&quot;&quot;</span><span>; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$fp</span><span>&nbsp;=&nbsp;</span><span class="func">fsockopen</span><span>(</span><span class="vars">$w_server</span><span>,&nbsp;43,&nbsp;</span><span class="vars">$errno</span><span>,&nbsp;</span><span class="vars">$errstr</span><span>,&nbsp;30); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(!</span><span class="vars">$fp</span><span>)&nbsp;{ &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="func">echo</span><span>&nbsp;</span><span class="vars">$errstr</span><span>; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;</span><span class="string">&quot;&quot;</span><span>; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$out</span><span>&nbsp;=&nbsp;</span><span class="vars">$this</span><span>-&gt;domain.</span><span class="string">&quot;&quot;</span><span>; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$out</span><span>&nbsp;.=&nbsp;</span><span class="string">&quot;Connection:&nbsp;Close&quot;</span><span>; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="func">fputs</span><span>(</span><span class="vars">$fp</span><span>,&nbsp;</span><span class="vars">$out</span><span>); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">while</span><span>&nbsp;(!</span><span class="func">feof</span><span>(</span><span class="vars">$fp</span><span>)) &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$wl</span><span>&nbsp;=&nbsp;</span><span class="func">fgets</span><span>(</span><span class="vars">$fp</span><span>,&nbsp;255); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(preg_match(</span><span class="string">&quot;/no&nbsp;match/&quot;</span><span>,</span><span class="vars">$wl</span><span>)) &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fclose(</span><span class="vars">$fp</span><span>); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;</span><span class="string">&quot;ok&quot;</span><span>; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(preg_match(</span><span class="string">&quot;/Expiration&nbsp;Date/&quot;</span><span>,</span><span class="vars">$wl</span><span>)) &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$lines</span><span>&nbsp;=&nbsp;</span><span class="func">explode</span><span>(</span><span class="string">&quot;:&quot;</span><span>,</span><span class="vars">$wl</span><span>); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$t</span><span>&nbsp;=&nbsp;trim(</span><span class="vars">$lines</span><span>[1]); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$ts</span><span>&nbsp;=&nbsp;</span><span class="func">explode</span><span>(</span><span class="string">&quot;&nbsp;&quot;</span><span>,</span><span class="vars">$t</span><span>); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$t</span><span>&nbsp;=&nbsp;</span><span class="vars">$ts</span><span>[0]; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(preg_match(</span><span class="string">&quot;/[^0-9-]/&quot;</span><span>,</span><span class="vars">$t</span><span>)) &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;</span><span class="func">date</span><span>(</span><span class="string">&quot;Y-m-d&quot;</span><span>,</span><span class="func">strtotime</span><span>(</span><span class="vars">$t</span><span>)); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fclose(</span><span class="vars">$fp</span><span>); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;</span><span class="string">''</span><span>; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fclose(</span><span class="vars">$fp</span><span>); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;</span><span class="string">&quot;&quot;</span><span>; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">// </span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//获得域名的整个whois信息 </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">// </span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">function</span><span>&nbsp;GetWhois() &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$wh</span><span>&nbsp;=&nbsp;</span><span class="string">&quot;&quot;</span><span>; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$w_server</span><span>&nbsp;=&nbsp;</span><span class="vars">$this</span><span>-&gt;GetServer(); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(</span><span class="vars">$w_server</span><span>==</span><span class="string">&quot;&quot;</span><span>)&nbsp;</span><span class="keyword">return</span><span>&nbsp;</span><span class="string">&quot;&quot;</span><span>; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$fp</span><span>&nbsp;=&nbsp;</span><span class="func">fsockopen</span><span>(</span><span class="vars">$w_server</span><span>,&nbsp;43,&nbsp;</span><span class="vars">$errno</span><span>,&nbsp;</span><span class="vars">$errstr</span><span>,&nbsp;30); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(!</span><span class="vars">$fp</span><span>) &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="func">echo</span><span>&nbsp;</span><span class="vars">$errstr</span><span>; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;</span><span class="string">&quot;&quot;</span><span>; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$out</span><span>&nbsp;=&nbsp;</span><span class="vars">$this</span><span>-&gt;domain.</span><span class="string">&quot;&quot;</span><span>; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$out</span><span>&nbsp;.=&nbsp;</span><span class="string">&quot;Connection:&nbsp;Close&quot;</span><span>; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="func">fputs</span><span>(</span><span class="vars">$fp</span><span>,&nbsp;</span><span class="vars">$out</span><span>); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">while</span><span>&nbsp;(!</span><span class="func">feof</span><span>(</span><span class="vars">$fp</span><span>)) &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$wh</span><span>&nbsp;.=&nbsp;</span><span class="func">nl2br</span><span>(</span><span class="func">fgets</span><span>(</span><span class="vars">$fp</span><span>,&nbsp;255)); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fclose(</span><span class="vars">$fp</span><span>); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;</span><span class="vars">$wh</span><span>; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">// </span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//输出当前域名的状态信息 </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">// </span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">function</span><span>&nbsp;PrintSta() &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$rs</span><span>&nbsp;=&nbsp;</span><span class="vars">$this</span><span>-&gt;GetInfo(); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(</span><span class="vars">$rs</span><span>==</span><span class="string">&quot;ok&quot;</span><span>)&nbsp;</span><span class="func">echo</span><span>&nbsp;</span><span class="vars">$this</span><span>-&gt;domain.</span><span class="string">&quot;&nbsp;未注册！&lt;br/&gt;&quot;</span><span>; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">else</span><span>&nbsp;</span><span class="keyword">if</span><span>(</span><span class="vars">$rs</span><span>==</span><span class="string">&quot;&quot;</span><span>)&nbsp;</span><span class="func">echo</span><span>&nbsp;</span><span class="string">&quot;无法查询&nbsp;&quot;</span><span>.</span><span class="vars">$this</span><span>-&gt;domain.</span><span class="string">&quot;&nbsp;状态！&lt;br/&gt;&quot;</span><span>; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">else</span><span>&nbsp;</span><span class="func">echo</span><span>&nbsp;</span><span class="vars">$this</span><span>-&gt;domain.</span><span class="string">&quot;&nbsp;已注册，到期时间：$rs&lt;br/&gt;&quot;</span><span>; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">// </span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//获得&nbsp;whois&nbsp;查询服务器 </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">// </span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">function</span><span>&nbsp;GetServer() &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$udomain</span><span>=</span><span class="func">strtolower</span><span>(</span><span class="func">substr</span><span>(</span><span class="func">strrchr</span><span>(</span><span class="vars">$this</span><span>-&gt;domain,</span><span class="string">'.'</span><span>),1)); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;</span><span class="func">array_key_exists</span><span>(</span><span class="vars">$udomain</span><span>,</span><span class="vars">$this</span><span>-&gt;arr_whois_servers)&nbsp;?&nbsp;</span><span class="vars">$this</span><span>-&gt;arr_whois_servers[</span><span class="vars">$udomain</span><span>]&nbsp;:&nbsp;</span><span class="string">''</span><span>; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">// </span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//英语的月份转为数字 </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">// </span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">function</span><span>&nbsp;MonthToNum(</span><span class="vars">$m</span><span>) &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="func">echo</span><span>&nbsp;</span><span class="vars">$m</span><span>; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$m</span><span>&nbsp;=&nbsp;</span><span class="func">strtolower</span><span>(</span><span class="vars">$m</span><span>); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">for</span><span>(</span><span class="vars">$i</span><span>=1;</span><span class="vars">$i</span><span>&lt;=12;</span><span class="vars">$i</span><span>++) &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$tt</span><span>&nbsp;=&nbsp;</span><span class="func">mktime</span><span>(0,0,0,</span><span class="vars">$i</span><span>+1,0,2005); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(</span><span class="vars">$m</span><span>==</span><span class="func">strtolower</span><span>(</span><span class="func">strftime</span><span>(</span><span class="string">&quot;%b&quot;</span><span>,</span><span class="vars">$tt</span><span>))) &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(</span><span class="vars">$i</span><span>&gt;9)&nbsp;</span><span class="keyword">return</span><span>&nbsp;</span><span class="vars">$i</span><span>-1; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">else</span><span>&nbsp;</span><span class="keyword">return</span><span>&nbsp;</span><span class="string">&quot;0&quot;</span><span>.</span><span class="vars">$i</span><span>-1; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li><span>} &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span class="vars">$sd</span><span>&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;SearchDomain(); &nbsp;&nbsp;</span></li>
    <li class="alt"><span class="vars">$sd</span><span>-&gt;SetDomain(</span><span class="string">&quot;$domain&quot;</span><span>); &nbsp;&nbsp;</span></li>
    <li><span class="comment">//查询域名是否被注册，等价于&nbsp;$sd-&gt;PrintSta(); </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span class="vars">$rs</span><span>&nbsp;=&nbsp;</span><span class="vars">$sd</span><span>-&gt;GetInfo(); &nbsp;&nbsp;</span></li>
    <li><span class="keyword">if</span><span>(</span><span class="vars">$rs</span><span>==</span><span class="string">&quot;ok&quot;</span><span>)&nbsp;</span><span class="func">echo</span><span>&nbsp;</span><span class="vars">$sd</span><span>-&gt;domain.</span><span class="string">&quot;&nbsp;未注册！&lt;br/&gt;&quot;</span><span>; &nbsp;&nbsp;</span></li>
    <li class="alt"><span class="keyword">else</span><span>&nbsp;</span><span class="keyword">if</span><span>(</span><span class="vars">$rs</span><span>==</span><span class="string">&quot;&quot;</span><span>)&nbsp;</span><span class="func">echo</span><span>&nbsp;</span><span class="string">&quot;无法查询&nbsp;&quot;</span><span>.</span><span class="vars">$sd</span><span>-&gt;domain.</span><span class="string">&quot;&nbsp;状态！&lt;br/&gt;&quot;</span><span>; &nbsp;&nbsp;</span></li>
    <li><span class="keyword">else</span><span>&nbsp;</span><span class="func">echo</span><span>&nbsp;</span><span class="vars">$sd</span><span>-&gt;domain.</span><span class="string">&quot;&nbsp;已注册，到期时间：$rs&lt;br/&gt;&quot;</span><span>; &nbsp;&nbsp;</span></li>
    <li class="alt"><span class="comment">//获得域名的详细whois信息 </span><span>&nbsp;&nbsp;</span></li>
    <li><span class="comment">//echo&nbsp;$sd-&gt;GetWhois(); </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>?&gt;&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>2010/05/06 update:请注意：经进一步使用发现上面的whois server返回的并不是统一格式的信息，并且部分whois server无响应。部分小后缀域名是无法查询的，还需要进一步处理。（举例，.kr返回韩文数据，.fr,.de返回某种协议的格式，而.ru返回了另一种格式的协议，说明页面是俄文的。）</p>]]></description>
			<link>http://dev.meettea.com/show-78-1.html</link>
			<category domain="http://dev.meettea.com/category-5-1.html">PHP</category>
			<pubDate>2010-04-02 23:05</pubDate>
		</item>
		<item>
			<guid>http://dev.meettea.com/show-76-1.html</guid>
			<title>邮局收取GG ADSENSE西联汇款攻略</title>
			<author>shiny</author>
			<description><![CDATA[<p>在Adsense后台看到可以取之后，带上身份证、监控号、收款金额，到西联网点办理，网点查询:<a href="http://www.westernunion.cn/sc/location_search.php">http://www.westernunion.cn/sc/location_search.php</a>
一般它给的地址有时候是不精确的，这时要配合GOOGLE MAP查询下。网点外面一般挂有西联汇款指点网点的牌子，窗口也有西联汇款的牌子。
</p>
<p>
对于Adsense开通的比较早的用户，注意再次核对你的姓名，比如你叫张三，姓名处应该是 san zhang才是对的。新版的Adsense收汇人姓和名是分开填写的，就不存在这个问题。
</p>
<p>如果你名字还是zhangsan这样的格式的，已经发出汇款，一般到网点要说清楚，需要工作人员打电话给西联，西联会说“同意支付”，就可以收了。如果工作人员拒绝，你可以打电话给西联，说明情况后把手机给工作人员去接听一般就OK。再不行就要求对方的经理出来，不少网友用这招成功的。</p>
<p>一般西联汇款专窗是不会让你排队的。看着后面几十个人的长队心中暗爽。</p>
<p>邮局要填写的有两张单子，《收汇申请书》和《个人结汇业务申请书》。</p>
<p>《收汇申请书》要求全英文填写的，必填项目是监控号、发汇金额、收汇人名、姓、地址、电话、身份证号码、发汇人名（写Google Inc.）、发汇人电话：+1 6506234000、地址（见Google后台给你的地址）。告诉对方资金属于劳务收入，他们会给你打 结汇的资金属性：职工报酬</p>
<p>不允许代领。</p>
<p>西联的电话：800 8208668,手机拨打：(86) 21 6866 4610</p>
<p>最后，感谢国家，让万恶的资本主义企业在我身上只剩不到30元的时候及时发来美元。</p>
<p>对于一个Google fans而言，得到的不仅仅是钱。</p>]]></description>
			<link>http://dev.meettea.com/show-76-1.html</link>
			<category domain="http://dev.meettea.com/category-1-1.html">微风日志</category>
			<pubDate>2010-03-28 14:14</pubDate>
		</item>
		<item>
			<guid>http://dev.meettea.com/show-75-1.html</guid>
			<title>vsftpd + mysql验证的配置过程小记</title>
			<author>wucha</author>
			<description><![CDATA[<p>vsftpd的错误提示不够明显，所以有些地方不禁令人抓狂。昨天工作到凌晨两点也未能通过验证。早上起来继续思考，发现问题。</p>
<p>530 login incorrect的错误提示:说明验证没有通过。验证没有通过的原因是从vsftpd配置文件中验证方式到pam.d的配置这一过程中出现问题。网上流传的教程并不完整。测试验证是否成功，用db_load新建一个pam验证方式，结果通过。然后从网上搜索多份pam.d/内mysql验证的配置文件发现pam_mysql.so需要指定绝对路径才能找到。其他可能导致这种现象的产生有：vsftpd.conf内未指定pam验证文件名或者myqsl验证文件内的用户名和密码不正确。</p>
<p>登录后的异常情况：一般出现login success后再出现异常说明配置文件有问题。这种问题最好处理，一般直接从网上照抄一份修改下就能通过。</p>
<p>最后AdobeCS4.com.cn即将迁回国内。</p>]]></description>
			<link>http://dev.meettea.com/show-75-1.html</link>
			<category domain="http://dev.meettea.com/category-1-1.html">微风日志</category>
			<pubDate>2010-03-25 09:55</pubDate>
		</item>
		<item>
			<guid>http://dev.meettea.com/show-74-1.html</guid>
			<title>分享一个Nginx Rewrite的写法</title>
			<author>shiny</author>
			<description><![CDATA[<p>需要的功能：
访问的URL:   www.x.com/download/123.htm ,<br />
如果download模块存在(判断的标志是存在download文件夹以及index.php)<br />
则rewrite到www.x.com/download/index.php,<br />
否则就rewrite到www.x.com/index.php。</p>
<p>
<pre>
	    
	    set $module_name /index.php;
	    if ( $request_uri ~ ^/(\w+)/) {
		set $module_name /$1/index.php;
	    }
	    if ( !-e $document_root$module_name){
		set $module_name /index.php;
	    }
	    rewrite . $module_name;
</pre>
</p>
<p>
友情提示:用rewrite把nginx配置文件中的变量附加到php文件后面的参数里，然后用var_dump($_GET);帮助很大。
</p>]]></description>
			<link>http://dev.meettea.com/show-74-1.html</link>
			<category domain="http://dev.meettea.com/category-4-1.html">微风笔记</category>
			<pubDate>2010-03-06 14:43</pubDate>
		</item>
		<item>
			<guid>http://dev.meettea.com/show-73-1.html</guid>
			<title>pinyShop0.3新春正式版</title>
			<author>shiny</author>
			<description><![CDATA[<p>新年前的版本，也可能是最后一版。</p>
<p>再写下去可能就要和个性化的要求冲突了。
最好的功能就是nginx.conf。</p>
<b>pinyShop0.3特有功能</b>
<ol>
<li>PHP/Mysql/Nginx任意版本自动发现、使用功能</li>
<li>演示模式/调试模式两不误</li>
<li>Windows界面，状态监视</li>
<li>mysql等默认绑定127.0.0.1，空口令也安全</li>
<li><b>PHP-CGI运行监控，保持运行</b></li>
<li>调试模式下增加目录浏览功能</li>
<li>PHP更新到5.3.1,nginx更新到0.8.31</li>
<li>抛弃process.exe，使用系统自带命令，杀毒软件不再报可疑的程序</li>
</ol>

<p>较之元诞的内测版，这个版本完善了php.ini，增加了PHP-CGI保持运行的功能。</P>
<p>因为很久以前发现windows下php-cgi执行了一定次数的时候会退出，影响调试。
这个功能就是对这个现象的hack。</p>

<a href="http://pinyshop.nginxhome.com">要下载请到这里</a><!--doubanclaim3fb39415bb8d8894-->]]></description>
			<link>http://dev.meettea.com/show-73-1.html</link>
			<category domain="http://dev.meettea.com/category-6-1.html">发布与下载</category>
			<pubDate>2010-02-11 10:17</pubDate>
		</item>
		<item>
			<guid>http://dev.meettea.com/show-72-1.html</guid>
			<title>征友情链接</title>
			<author>shiny</author>
			<description><![CDATA[<p>为了PR保5争6，诚征友情链接，要求如下</p>
<ol>
<li>业内好友：80%以上原创、和技术相关、内容质量良好</li>
<li>其他人：PR>=5的正规站点；PR<5的，质量优秀的也很愿意交换链接</li>
<li>硬指标：内页免谈；不能被搜索引擎K；不诚者免谈；</li>
<li>撤下链接前请通知我；我撤下链接前也会通知你(不超过底线不会被撤下，底线指道德标准和上一条硬指标。)</li>
<li>郑重承诺：本博客8年内不会关闭(因不可抗力除外：比如全国大海蟹和世界末日)</li>
</ol>]]></description>
			<link>http://dev.meettea.com/show-72-1.html</link>
			<category domain="http://dev.meettea.com/category-1-1.html">微风日志</category>
			<pubDate>2010-02-10 10:16</pubDate>
		</item>
		<item>
			<guid>http://dev.meettea.com/show-71-1.html</guid>
			<title>sa-blog修改与优化</title>
			<author>shiny</author>
			<description><![CDATA[<ol>
<li>对评论使用external nofollow,在index.php里修改。</li>
<li>这个分类像鸡肋，把分类提到导航当作栏目来用。修改模板index即可。</li>
<li>友情链接仅仅在首页显示，这点还是在模板index修改。</li>
<li>评论使用自己的验证码程序，否则将招致垃圾留言robots的群殴。因为这个版本的sablog已经被盯上了。</li>
<li>风格修改(同时对用户体验进行了简单的优化)</li>
<li>title使得符合搜索引擎的要求，主要是在index.php修改$options['title']这个变量</li>
</ol>
<p>缺点(优点?):chrome下发表日志得自己写HTML代码。</p>
<p>喜欢这个blog想要源码的可以留下邮箱。</p>]]></description>
			<link>http://dev.meettea.com/show-71-1.html</link>
			<category domain="http://dev.meettea.com/category-5-1.html">PHP</category>
			<pubDate>2010-02-10 09:55</pubDate>
		</item>
		<item>
			<guid>http://dev.meettea.com/show-70-1.html</guid>
			<title>sina sae试用报告</title>
			<author>shiny</author>
			<description><![CDATA[近闻sina staff,sae已开放申请；不过因为计费系统测试中so不要抱很高的希望。

已申请到sina sae,对其试用一番。

<ol>
<li>经过简单修改就可以使用wordpress blog (这是一个open source project,我搭建了一个示例blog,<a href="http://wp4sae.sinaapp.com/">click here</a>)</li>
<li>集成了：Mysql，Storage，MemCache，Cron Jobs，Image，Fetch Url，Mail(并禁用一大堆函数和类)</li>
<li>禁用的函数和类的列表在<a href="http://wiki.sae.sina.com.cn/doku.php?id=sae%E5%BC%80%E5%8F%91%E8%80%85%E6%89%8B%E5%86%8C#运行环境简介">这里</a>,看得我眼睛麻花疼。</li>
<li>sina app目前还没有提供本地测试环境，原话如下：“因为本地环境的开发较为费时,且需要和线上保持同步更新,我们暂时还没有提供本地测试环境的计划.”</li>
<li><strike>sina app目前还无法绑定独立域名，原话如下：“考虑到备案和域名验证的原因,目前暂不开发独立域名绑定功能”</strike>目前已经能绑定了，用cname解析，但是“如果您使用独立域名,请先行备案,否则应用可能被关闭.”</li>
<li>上面的数据储存是：“目前是用MongoDB做的一个实现,未来有可能换成S3.”</li>
<li>对svn的支持：“目前暂时不提供.我们会在后期考虑svn/git服务.建议大家用公司的svn处理内部项目,用google code组织开源项目. upload的时候会提示是否只上传修改后的代码.目前暂时没有选择部分代码上传的功能.”</li>
<li>对.htaccess的支持：“.htaccess因为可能导致性能瓶颈暂时不支持,我们稍后会提供用于rewrite的替代方案.”</li>
<li>目前资源限制为：<ul>
<li><b>httpd</b><ul>
<li>请求次数	10000000 次</li>
<li>流入带宽	500000 KB</li>
<li>流出带宽	1000000 KB</li>
<li>CPU时间	10800000 MS</li>
</ul></li>
<li><b>Mysql</b><ul>
<li>查询次数	1000000 次</li>
<li>写入Mysql的数据量	1000000 KB</li>
<li>从Mysql读出的数据量	1000000 KB</li>
<li>CPU时间	10800000 MS</li>
<li>数据存储总量	195312.5 KB</li>
</ul></li>
<li><b>Memcache</b><ul>
<li>请求次数	10000000 次</li>
<li>写入MC的数据量	1000000 KB</li>
<li>从MC读出的数据量	1000000 KB</li>
</ul></li>
<li><b>Fetch URL</b><ul>
<li>请求次数	50000 次	</li>
<li>流入带宽	500000 KB</li>	
<li>流出带宽	500000 KB</li>	
</ul></li>
<li><b>数据存储</b><ul>
<li>请求次数	100000 次</li>
<li>流入带宽	976562.5 KB</li>
<li>流出带宽	976562.5 KB</li>
<li>数据存储总量	195312.5 KB</li>
</ul></li>
<li><b>图片处理</b><ul>
<li>请求次数	100000 次</li>
<li>流入带宽	976562.5 KB</li>
<li>流出带宽	976562.5 KB</li>
<li>CPU时间	36000000 MS</li>
</ul></li>
</ul></li>
<li>预计日后会推出收费版的服务</li>
<li>用am.php脚本管理项目,windows下还有一个exe，不过体验并不好，还是脚本简便。</li>
<li>懒了，不上图了，申请地址，<a href="http://sae.sina.com.cn/?m=inviterequest">http://sae.sina.com.cn/?m=inviterequest</a>，如果你只是想简单的使用，恐怕还不能通过。此外一天100个名额，早上申请可能比较合适。</li>
</ol>
shiny 如是记。
<p>PS：如果你的代码写得合理，能够很顺利就迁移到sina app上。</p>]]></description>
			<link>http://dev.meettea.com/show-70-1.html</link>
			<category domain="http://dev.meettea.com/category-1-1.html">微风日志</category>
			<pubDate>2010-02-03 09:15</pubDate>
		</item>
		<item>
			<guid>http://dev.meettea.com/show-69-1.html</guid>
			<title>沉默许久，近期纪要</title>
			<author>shiny</author>
			<description><![CDATA[<ol>
<li>
<p>找到了适合个人使用的CDN服务，按流量算钱，1G在2~6元之间。根据以前植物大战僵尸论坛的流量表现看，一个月也就两三G(日700ip，较高PV，多图)。示例，www.asia-home.com.cn 这个站用了该CDN Service Provider的服务。杭州电信的ping在6ms，速度非常猛。虽然这个站前端一塌糊涂，但是依托CDN依然表现不错。</p>

<p><strike>过段时间博客先试水(等有钱之后吧)。</strike>然后普及到几个站。现在博客已经启用CDN了，过段时间贴出监控宝速度检测的情况。</p>

<p>主机放国外，然后用国内的CDN加速，这样最理想，安全性和速度得到了最大的平衡。</p></li>

<li>开始制作些垃圾站(垃圾站中的战斗鸡)来维持开销。上规模后请些朋友来帮忙。</li>

<li>pinyShop 0.3用了段时间，很稳定。反馈不错。2010春节final版将于近期释出。除非有很好的理由否则将是绝版。</li>

<li>和宝哥哥聊了人生，引以为戒。</li>

<li>决定不再以加入专业IT公司(比如淘宝UED Team或者某些IT公司的CTO岗位)为职业目标。</li>

<li>不要随随便便承诺，勇于承担自己的责任，学会做商人和团队领袖。</li>

<li>淡泊、珍惜时间、隐、如果选择的时候犹豫了就坚决放弃</li>

<li>男人都以为自己可以改变世界，女人都以为自己可以改变男人</li>

<li>发这篇日志的最大目的是向大家传递一个信息：哥还活着，哥在江湖飘</li>

<li>发言完毕，谢谢大家，凑齐十条</li>
</ol>]]></description>
			<link>http://dev.meettea.com/show-69-1.html</link>
			<category domain="http://dev.meettea.com/category-1-1.html">微风日志</category>
			<pubDate>2010-02-02 10:10</pubDate>
		</item>
		<item>
			<guid>http://dev.meettea.com/show-67-1.html</guid>
			<title>请允许我说点和技术无关的事情</title>
			<author>shiny</author>
			<description><![CDATA[<p>
黄炎培问毛泽东：“当共产党执政后，没有了战争的压力，也没有反对党的监督，党员思想必松懈，继尔形成惰性，当享乐成风之时，你怎么解决权力腐败，跳出这个政党存亡的周期？” 毛泽东铿锵有力地回答：“我们已经找到了解决这个问题的办法，这就是‘民主’，即人民群众的监督。只有让人民起来监督政府，政府才不敢松懈。只有人人起来负责，才不会人亡政息。”</p>
<p>。。。</p>
<p>黄大能说，这次长谈，使父亲从此扭转了他历来对中共执政的忐忑不安，他从延安、从毛泽东身上看到，中国是有出路的，这出路就在共产党那里。从此以后，他坚定不移跟着共产党走。开国之初，大半生恪守“不为官吏”信条的黄炎培终于出山，担任了第一届中央人民政府政务院副总理。</p>
<p>。。。</p>]]></description>
			<link>http://dev.meettea.com/show-67-1.html</link>
			<category domain="http://dev.meettea.com/category-1-1.html">微风日志</category>
			<pubDate>2010-01-09 10:35</pubDate>
		</item>
		<item>
			<guid>http://dev.meettea.com/show-66-1.html</guid>
			<title>PHP版简易动态口令卡</title>
			<author>shiny</author>
			<description><![CDATA[<p>PHP版简易动态口令卡</p>
<p>WUCHA.CC是一个尚在开发中的文学网站。考虑到初期编辑分布比较广泛、编辑的操作对网站有较大的影响，故设计了网站编辑专用的动态口令卡。<br />
同样也适用对安全性有中等要求的中小型网站、博客。</p>
<p>先上图，有图有真相。</p>
<p>[attach=56]</p>
<p>[attach=57]</p>
<p>[attach=58]</p>
<p>[attach=59]</p>
<p>[attach=60]</p>
<p>连号的感觉真好 - -<br />
设计采用PHOTOSHOP。打印选择了<a href="http://www.kuukie.com">KUUKIE.COM</a>（趣奇网）的个性卡片印刷服务。<br />
趣奇网有两种规格的个性卡片。一种是名片的一半，一种和名片一样大小。</p>
<p>&nbsp;(咳咳咳咳，这里AD下趣奇网)</p>
<p>趣奇网是一家新兴的在线打印照片服务的网站。</p>
<p>你可以把你的照片等拿去印刷，也可以做些小卡片。</p>
<p>被我拿来打印口令卡纯属意外 :)</p>
<p>在互联网政策不明朗的今天，新兴网站的生存并不容易。</p>
<p>趣奇网的存在还是令我们告慰的，希望他们能够成长壮大。 :)</p>
<p>&nbsp;</p>
<p>首先是制作正面图像、背景的网格。&nbsp;</p>
<p>[attach=53]&nbsp;[attach=54]<br />
这里要注意的是，实际上剪裁的效果看（和上面的实图对比），和趣奇网提供的PSD模板有点差距，顶部有空隙[绿色线是安全线]。<br />
[attach=55]</p>
<p>然后用这段PHP代码生成动态口令并存入数据库。</p>
<div class="codeText">
<div class="codeHead">PHP代码</div>
<ol class="dp-c">
    <li class="alt"><span><span>&lt;?php &nbsp;&nbsp;</span></span></li>
    <li><span>#</span><span class="func">error_reporting</span><span>(0); &nbsp;&nbsp;</span></li>
    <li class="alt"><span class="vars">$host</span><span>&nbsp;=&nbsp;</span><span class="string">'localhost'</span><span>; &nbsp;&nbsp;</span></li>
    <li><span class="vars">$user</span><span>&nbsp;=&nbsp;</span><span class="string">'root'</span><span>; &nbsp;&nbsp;</span></li>
    <li class="alt"><span class="vars">$passwd</span><span>&nbsp;=&nbsp;</span><span class="string">''</span><span>; &nbsp;&nbsp;</span></li>
    <li><span class="vars">$db</span><span>&nbsp;=&nbsp;</span><span class="string">'dpasswd'</span><span>; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>mysql_connect(</span><span class="vars">$host</span><span>,</span><span class="vars">$user</span><span>,</span><span class="vars">$passwd</span><span>); &nbsp;&nbsp;</span></li>
    <li><span>mysql_select_db(</span><span class="vars">$db</span><span>); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span class="vars">$query</span><span>&nbsp;=&nbsp;mysql_query(</span><span class="string">'select&nbsp;count(*)&nbsp;as&nbsp;maxID&nbsp;from&nbsp;dpasswd'</span><span>); &nbsp;&nbsp;</span></li>
    <li class="alt"><span class="keyword">if</span><span>(!</span><span class="vars">$query</span><span>){&nbsp;</span><span class="func">exit</span><span>(</span><span class="string">'could&nbsp;not&nbsp;get&nbsp;max&nbsp;id&nbsp;record,program&nbsp;exit;'</span><span>);} &nbsp;&nbsp;</span></li>
    <li><span class="vars">$tmpArr</span><span>&nbsp;=&nbsp;mysql_fetch_assoc(</span><span class="vars">$query</span><span>); &nbsp;&nbsp;</span></li>
    <li class="alt"><span class="vars">$ID</span><span>&nbsp;=&nbsp;</span><span class="vars">$tmpArr</span><span>[</span><span class="string">'maxID'</span><span>]+1; &nbsp;&nbsp;</span></li>
    <li><span class="vars">$ID</span><span>&nbsp;=&nbsp;</span><span class="func">str_pad</span><span>(</span><span class="vars">$ID</span><span>,&nbsp;5,&nbsp;</span><span class="string">'0'</span><span>,&nbsp;STR_PAD_LEFT); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span class="vars">$arrRand</span><span>&nbsp;=&nbsp;</span><span class="keyword">array</span><span>(); &nbsp;&nbsp;</span></li>
    <li class="alt"><span class="keyword">for</span><span>(</span><span class="vars">$i</span><span>=0;</span><span class="vars">$i</span><span>&lt;6;</span><span class="vars">$i</span><span>++){ &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$arrRand</span><span>[]&nbsp;=&nbsp;</span><span class="keyword">array</span><span>(); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">for</span><span>(</span><span class="vars">$j</span><span>=0;</span><span class="vars">$j</span><span>&lt;11;</span><span class="vars">$j</span><span>++){ &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$arrRand</span><span>[</span><span class="vars">$i</span><span>][</span><span class="vars">$j</span><span>]&nbsp;=&nbsp;rand(0,9).rand(0,9); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li><span>} &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span class="vars">$im</span><span>=imagecreatefrompng(</span><span class="string">&quot;./bg.png&quot;</span><span>); &nbsp;&nbsp;</span></li>
    <li class="alt"><span class="vars">$x</span><span>&nbsp;=&nbsp;155; &nbsp;&nbsp;</span></li>
    <li><span class="vars">$y</span><span>&nbsp;=&nbsp;230; &nbsp;&nbsp;</span></li>
    <li class="alt"><span class="vars">$widthPerGrid</span><span>&nbsp;=&nbsp;74; &nbsp;&nbsp;</span></li>
    <li><span class="vars">$heightPerGrid</span><span>=&nbsp;75; &nbsp;&nbsp;</span></li>
    <li class="alt"><span class="vars">$noFontSize</span><span>&nbsp;=&nbsp;35; &nbsp;&nbsp;</span></li>
    <li><span class="vars">$numFontSize</span><span>&nbsp;=&nbsp;30; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span class="vars">$no_start</span><span>&nbsp;=&nbsp;</span><span class="string">'A'</span><span>.</span><span class="vars">$ID</span><span>; &nbsp;&nbsp;</span></li>
    <li class="alt"><span class="vars">$black</span><span>&nbsp;=&nbsp;imagecolorallocate(</span><span class="vars">$im</span><span>,0,0,0); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>#图像资源、字体大小、角度 &nbsp;&nbsp;</span></li>
    <li><span>imagettftext(</span><span class="vars">$im</span><span>,</span><span class="vars">$noFontSize</span><span>,0,200,115,</span><span class="vars">$black</span><span>,</span><span class="string">'tahoma.ttf'</span><span>,</span><span class="vars">$no_start</span><span>); &nbsp;&nbsp;</span></li>
    <li class="alt"><span class="keyword">for</span><span>(</span><span class="vars">$i</span><span>=0;</span><span class="vars">$i</span><span>&lt;6;</span><span class="vars">$i</span><span>++){ &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">for</span><span>(</span><span class="vars">$j</span><span>=0;</span><span class="vars">$j</span><span>&lt;11;</span><span class="vars">$j</span><span>++){ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;imagettftext(</span><span class="vars">$im</span><span>,</span><span class="vars">$numFontSize</span><span>,0,</span><span class="vars">$x</span><span>,</span><span class="vars">$y</span><span>,</span><span class="vars">$black</span><span>,</span><span class="string">'tahoma.ttf'</span><span>,</span><span class="vars">$arrRand</span><span>[</span><span class="vars">$i</span><span>][</span><span class="vars">$j</span><span>]); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$x</span><span>+=</span><span class="vars">$widthPerGrid</span><span>; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$x</span><span>-=(</span><span class="vars">$widthPerGrid</span><span>*11); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$y</span><span>+=</span><span class="vars">$heightPerGrid</span><span>; &nbsp;&nbsp;</span></li>
    <li><span>} &nbsp;&nbsp;</span></li>
    <li class="alt"><span class="vars">$num</span><span>&nbsp;=&nbsp;</span><span class="string">''</span><span>; &nbsp;&nbsp;</span></li>
    <li><span class="keyword">foreach</span><span>(</span><span class="vars">$arrRand</span><span>&nbsp;</span><span class="keyword">as</span><span>&nbsp;</span><span class="vars">$item</span><span>){ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$num</span><span>&nbsp;.=&nbsp;implode(</span><span class="string">''</span><span>,</span><span class="vars">$item</span><span>); &nbsp;&nbsp;</span></li>
    <li><span>} &nbsp;&nbsp;</span></li>
    <li class="alt"><span>mysql_query(</span><span class="string">&quot;INSERT&nbsp;INTO&nbsp;dpasswd&nbsp;(type,num)&nbsp;values&nbsp;('A','{$num}')&quot;</span><span>); &nbsp;&nbsp;</span></li>
    <li><span class="vars">$card_id</span><span>&nbsp;=&nbsp;mysql_insert_id(); &nbsp;&nbsp;</span></li>
    <li class="alt"><span class="keyword">if</span><span>(imagepng(</span><span class="vars">$im</span><span>,</span><span class="vars">$no_start</span><span>.</span><span class="string">'.png'</span><span>)){ &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="func">echo</span><span>&nbsp;</span><span class="string">'密保卡已经生成:'</span><span>,</span><span class="vars">$no_start</span><span>,</span><span class="string">'.png'</span><span>,</span><span class="string">';数据库中的ID:'</span><span>,</span><span class="vars">$card_id</span><span>; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>}&nbsp;</span><span class="keyword">else</span><span>&nbsp;{ &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="func">echo</span><span>&nbsp;</span><span class="string">'密保卡:'</span><span>,</span><span class="vars">$no_start</span><span>,</span><span class="string">'.png'</span><span>,</span><span class="string">'生成失败'</span><span>; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>} &nbsp;&nbsp;</span></li>
</ol>
</div>
<div class="codeText">
<div class="codeHead">SQL代码</div>
<ol class="dp-sql">
    <li class="alt"><span><span class="keyword">DROP</span><span>&nbsp;</span><span class="keyword">TABLE</span><span>&nbsp;IF&nbsp;EXISTS&nbsp;`dpasswd`; &nbsp;&nbsp;</span></span></li>
    <li><span class="keyword">CREATE</span><span>&nbsp;</span><span class="keyword">TABLE</span><span>&nbsp;`dpasswd`&nbsp;( &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;`dpasswdID`&nbsp;</span><span class="keyword">int</span><span>(10)&nbsp;unsigned&nbsp;</span><span class="op">NOT</span><span>&nbsp;</span><span class="op">NULL</span><span>&nbsp;AUTO_INCREMENT, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;`type`&nbsp;</span><span class="keyword">char</span><span>(2)&nbsp;</span><span class="keyword">DEFAULT</span><span>&nbsp;</span><span class="op">NULL</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;`num`&nbsp;</span><span class="keyword">char</span><span>(132)&nbsp;</span><span class="keyword">CHARACTER</span><span>&nbsp;</span><span class="keyword">SET</span><span>&nbsp;ascii&nbsp;</span><span class="op">NOT</span><span>&nbsp;</span><span class="op">NULL</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span><span class="keyword">PRIMARY</span><span>&nbsp;</span><span class="keyword">KEY</span><span>&nbsp;(`dpasswdID`) &nbsp;&nbsp;</span></li>
    <li class="alt"><span>)&nbsp;ENGINE=MyISAM&nbsp;AUTO_INCREMENT=51&nbsp;</span><span class="keyword">DEFAULT</span><span>&nbsp;CHARSET=utf8;&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>每次刷新都会使编号+1并生成一张动态口令卡。<br />
随机数的产生并没有用到种子等概念。<br />
产生完毕后数据库、本地文件各存一份。</p>
<p>趣奇网提供了批量上传图片的功能，很快就上传完毕。需要注意的是为了方便，文字面打印正面图片，正面则放生成的口令卡图片。</p>
<p>最后，感谢CCTV感谢MTV感谢支持我的fans们，WUCHA is coming soon。。。。&nbsp;</p>]]></description>
			<link>http://dev.meettea.com/show-66-1.html</link>
			<category domain="http://dev.meettea.com/category-5-1.html">PHP</category>
			<pubDate>2010-01-04 14:09</pubDate>
		</item>
		<item>
			<guid>http://dev.meettea.com/show-62-1.html</guid>
			<title>从linux kernel coding style看php代码规范</title>
			<author>shiny</author>
			<description><![CDATA[<p>从linux kernel coding style看php代码规范</p>
<p>linux内核的编码是一种极端情况。</p>
<p>需要清晰明朗以供全世界的开发者学习、修改，对代码的质量要求较高。</p>
<p>相信linus大神在长期接触各种各式代码后脾气会变得更暴躁，就比如前段时间在某论坛痛斥C++。。。</p>
<p>节选，去除不适合PHP程序员阅读的部分。</p>
<p>如果你开发PHP程序的核心代码，比如框架，尤其建议好好思考。</p>
<p>虽然，它和一些权威的代码规范比如discuz和zend的有所冲突，但是依然能从中受益。</p>
<p>linux kernel coding style (针对PHPer作了节选)</p>
<p>linux kernel coding style的中文译者:</p>
<p>中文版维护者： 张乐 Zhang Le</p>
<p>中文版翻译者： 张乐 Zhang Le</p>
<p>中文版校译者： 王聪 Wang Cong</p>
<p>wheelz</p>
<p>管旭东 Xudong Guan</p>
<p>Li Zefan</p>
<p>Wang Chen</p>
<p>&nbsp;</p>
<p><strong>第一章：缩进</strong></p>
<p>制表符是8个字符，所以缩进也是8个字符。有些异端运动试图将缩进变为4（乃至2）个字符</p>
<p>深，这几乎相当于尝试将圆周率的值定义为3。</p>
<p>理由：缩进的全部意义就在于清楚的定义一个控制块起止于何处。尤其是当你盯着你的屏幕</p>
<p>连续看了20小时之后，你将会发现大一点的缩进会使你更容易分辨缩进。</p>
<p>现在，有些人会抱怨8个字符的缩进会使代码向右边移动的太远，在80个字符的终端屏幕上</p>
<p>就很难读这样的代码。这个问题的答案是，如果你需要3级以上的缩进，不管用何种方式你</p>
<p>的代码已经有问题了，应该修正你的程序。</p>
<p>在switch语句中消除多级缩进的首选的方式是让&ldquo;switch&rdquo;和从属于它的&ldquo;case&rdquo;标签对齐于同</p>
<p>一列，而不要&ldquo;两次缩进&rdquo;&ldquo;case&rdquo;标签。比如：</p>
<div class="codeText">
<div class="codeHead">C++代码</div>
<ol class="dp-cpp">
    <li class="alt"><span><span class="keyword">switch</span><span>&nbsp;(suffix)&nbsp;{ &nbsp;&nbsp;</span></span></li>
    <li><span class="keyword">case</span><span>&nbsp;</span><span class="string">'G'</span><span>: &nbsp;&nbsp;</span></li>
    <li class="alt"><span class="keyword">case</span><span>&nbsp;</span><span class="string">'g'</span><span>: &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mem&nbsp;&lt;&lt;=&nbsp;30; &nbsp;&nbsp;</span></li>
    <li class="alt"><span class="keyword">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break</span><span>; &nbsp;&nbsp;</span></li>
    <li><span class="keyword">case</span><span>&nbsp;</span><span class="string">'M'</span><span>: &nbsp;&nbsp;</span></li>
    <li class="alt"><span class="keyword">case</span><span>&nbsp;</span><span class="string">'m'</span><span>: &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mem&nbsp;&lt;&lt;=&nbsp;20; &nbsp;&nbsp;</span></li>
    <li class="alt"><span class="keyword">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break</span><span>; &nbsp;&nbsp;</span></li>
    <li><span class="keyword">case</span><span>&nbsp;</span><span class="string">'K'</span><span>: &nbsp;&nbsp;</span></li>
    <li class="alt"><span class="keyword">case</span><span>&nbsp;</span><span class="string">'k'</span><span>: &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mem&nbsp;&lt;&lt;=&nbsp;10; &nbsp;&nbsp;</span></li>
    <li class="alt"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*&nbsp;fall&nbsp;through&nbsp;*/</span><span>&nbsp;&nbsp;</span></li>
    <li><span class="keyword">default</span><span>: &nbsp;&nbsp;</span></li>
    <li class="alt"><span class="keyword">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break</span><span>; &nbsp;&nbsp;</span></li>
    <li><span>}&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>不要把多个语句放在一行里，除非你有什么东西要隐藏：</p>
<div class="codeText">
<div class="codeHead">C++代码</div>
<ol class="dp-cpp">
    <li class="alt"><span><span class="keyword">if</span><span>&nbsp;(condition)&nbsp;do_this; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp; do_something_everytime;&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>也不要在一行里放多个赋值语句。内核代码风格超级简单。就是避免可能导致别人误读的表</p>
<p>达式。</p>
<p>除了注释、文档和Kconfig之外，不要使用空格来缩进，前面的例子是例外，是有意为之。</p>
<p>选用一个好的编辑器，不要在行尾留空格。</p>
<p>&nbsp;</p>
<p><strong>第二章：把长的行和字符串打散</strong></p>
<p>代码风格的意义就在于使用平常使用的工具来维持代码的可读性和可维护性。</p>
<p>每一行的长度的限制是80列，我们强烈建议您遵守这个惯例。</p>
<p>长于80列的语句要打散成有意义的片段。每个片段要明显短于原来的语句，而且放置的位置</p>
<p>也明显的靠右。同样的规则也适用于有很长参数列表的函数头。长字符串也要打散成较短的</p>
<p>字符串。唯一的例外是超过80列可以大幅度提高可读性并且不会隐藏信息的情况。</p>
<div class="codeText">
<div class="codeHead">C++代码</div>
<ol class="dp-cpp">
    <li class="alt"><span><span class="keyword">void</span><span>&nbsp;fun(</span><span class="datatypes">int</span><span>&nbsp;a,&nbsp;</span><span class="datatypes">int</span><span>&nbsp;b,&nbsp;</span><span class="datatypes">int</span><span>&nbsp;c) &nbsp;&nbsp;</span></span></li>
    <li><span>{ &nbsp;&nbsp;</span></li>
    <li class="alt"><span class="keyword">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if</span><span>&nbsp;(condition) &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printk(KERN_WARNING&nbsp;</span><span class="string">&quot;Warning&nbsp;this&nbsp;is&nbsp;a&nbsp;long&nbsp;&quot;</span></li>
    <li class="alt"><span class="string">&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;3&nbsp;parameters&nbsp;a:&nbsp;%u&nbsp;b:&nbsp;%u&nbsp;&quot;</span><span>&nbsp;&nbsp;</span></li>
    <li><span class="string">&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;c:&nbsp;%u&nbsp;\n&quot;</span><span>,&nbsp;a,&nbsp;b,&nbsp;c); &nbsp;&nbsp;</span></li>
    <li class="alt"><span class="keyword">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; next_statement; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>} &nbsp;&nbsp;</span></li>
</ol>
</div>
<p>&nbsp;</p>
<p><strong>第三章：大括号和空格的放置</strong></p>
<p>C语言风格中另外一个常见问题是大括号的放置。和缩进大小不同，选择或弃用某种放置策</p>
<p>略并没有多少技术上的原因，不过首选的方式，就像Kernighan和Ritchie展示给我们的，是</p>
<p>把起始大括号放在行尾，而把结束大括号放在行首，所以：</p>
<div class="codeText">
<div class="codeHead">C++代码</div>
<ol class="dp-cpp">
    <li class="alt"><span><span class="keyword">if</span><span>&nbsp;(x&nbsp;is&nbsp;</span><span class="keyword">true</span><span>)&nbsp;{ &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; we&nbsp;</span><span class="keyword">do</span><span>&nbsp;y &nbsp;&nbsp;</span></li>
    <li class="alt"><span>} &nbsp;&nbsp;</span></li>
</ol>
</div>
<p>&nbsp;这适用于所有的非函数语句块（if、switch、for、while、do）。比如：</p>
<div class="codeText">
<div class="codeHead">C++代码</div>
<ol class="dp-cpp">
    <li class="alt"><span><span class="keyword">switch</span><span>&nbsp;(action)&nbsp;{ &nbsp;&nbsp;</span></span></li>
    <li><span class="keyword">case</span><span>&nbsp;KOBJ_ADD: &nbsp;&nbsp;</span></li>
    <li class="alt"><span class="keyword">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return</span><span>&nbsp;</span><span class="string">&quot;add&quot;</span><span>; &nbsp;&nbsp;</span></li>
    <li><span class="keyword">case</span><span>&nbsp;KOBJ_REMOVE: &nbsp;&nbsp;</span></li>
    <li class="alt"><span class="keyword">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return</span><span>&nbsp;</span><span class="string">&quot;remove&quot;</span><span>; &nbsp;&nbsp;</span></li>
    <li><span class="keyword">case</span><span>&nbsp;KOBJ_CHANGE: &nbsp;&nbsp;</span></li>
    <li class="alt"><span class="keyword">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return</span><span>&nbsp;</span><span class="string">&quot;change&quot;</span><span>; &nbsp;&nbsp;</span></li>
    <li><span class="keyword">default</span><span>: &nbsp;&nbsp;</span></li>
    <li class="alt"><span class="keyword">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return</span><span>&nbsp;NULL; &nbsp;&nbsp;</span></li>
    <li><span>} &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>不过，有一个例外，那就是函数：函数的起始大括号放置于下一行的开头，所以：</p>
<div class="codeText">
<div class="codeHead">C++代码</div>
<ol class="dp-cpp">
    <li class="alt"><span><span class="datatypes">int</span><span>&nbsp;function(</span><span class="datatypes">int</span><span>&nbsp;x) &nbsp;&nbsp;</span></span></li>
    <li><span>{ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; body&nbsp;of&nbsp;function &nbsp;&nbsp;</span></li>
    <li><span>} &nbsp;&nbsp;</span></li>
</ol>
</div>
<p>&nbsp;全世界的异端可能会抱怨这个不一致性是&hellip;&hellip;呃&hellip;&hellip;不一致的，不过所有思维健全的人都知道（</p>
<p>a）K&amp;R是_正确的_，并且（b）K&amp;R是正确的。此外，不管怎样函数都是特殊的（在C语言中</p>
<p>，函数是不能嵌套的）。</p>
<p>注意结束大括号独自占据一行，除非它后面跟着同一个语句的剩余部分，也就是do语句中的</p>
<p>&ldquo;while&rdquo;或者if语句中的&ldquo;else&rdquo;，像这样：</p>
<div class="codeText">
<div class="codeHead">C++代码</div>
<ol class="dp-cpp">
    <li class="alt"><span><span class="keyword">do</span><span>&nbsp;{ &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; body&nbsp;of&nbsp;</span><span class="keyword">do</span><span>-loop &nbsp;&nbsp;</span></li>
    <li class="alt"><span>}&nbsp;</span><span class="keyword">while</span><span>&nbsp;(condition); &nbsp;&nbsp;</span></li>
</ol>
</div>
<p>&nbsp;和</p>
<div class="codeText">
<div class="codeHead">C++代码</div>
<ol class="dp-cpp">
    <li class="alt"><span><span class="keyword">if</span><span>&nbsp;(x&nbsp;==&nbsp;y)&nbsp;{ &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .. &nbsp;&nbsp;</span></li>
    <li class="alt"><span>}&nbsp;</span><span class="keyword">else</span><span>&nbsp;</span><span class="keyword">if</span><span>&nbsp;(x&nbsp;&gt;&nbsp;y)&nbsp;{ &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ... &nbsp;&nbsp;</span></li>
    <li class="alt"><span>}&nbsp;</span><span class="keyword">else</span><span>&nbsp;{ &nbsp;&nbsp;</span></li>
    <li><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>.... &nbsp;&nbsp;</span></li>
    <li class="alt"><span>} &nbsp;&nbsp;</span></li>
</ol>
</div>
<p>&nbsp;理由：K&amp;R。</p>
<p>&nbsp;也请注意这种大括号的放置方式也能使空（或者差不多空的）行的数量最小化，同时不失可</p>
<p>读性。因此，由于你的屏幕上的新行是不可再生资源（想想25行的终端屏幕），你将会有更</p>
<p>多的空行来放置注释。</p>
<p>&nbsp;当只有一个单独的语句的时候，不用加不必要的大括号。</p>
<div class="codeText">
<div class="codeHead">C++代码</div>
<ol class="dp-cpp">
    <li class="alt"><span><span class="keyword">if</span><span>&nbsp;(condition) &nbsp;&nbsp;</span></span></li>
    <li><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>action();&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>&nbsp;这点不适用于本身为某个条件语句的一个分支的单独语句。这时需要在两个分支里都使用大</p>
<p>括号。</p>
<div class="codeText">
<div class="codeHead">C++代码</div>
<ol class="dp-cpp">
    <li class="alt"><span><span class="keyword">if</span><span>&nbsp;(condition)&nbsp;{ &nbsp;&nbsp;</span></span></li>
    <li><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>do_this(); &nbsp;&nbsp;</span></li>
    <li class="alt"><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>do_that(); &nbsp;&nbsp;</span></li>
    <li><span>}&nbsp;</span><span class="keyword">else</span><span>&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class="alt"><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>otherwise(); &nbsp;&nbsp;</span></li>
    <li><span>} &nbsp;&nbsp;</span></li>
</ol>
</div>
<p>&nbsp;3.1：空格</p>
<p>Linux内核的空格使用方式（主要）取决于它是用于函数还是关键字。（大多数）关键字后</p>
<p>要加一个空格。值得注意的例外是sizeof、typeof、alignof和__attribute__，这些关键字</p>
<p>某些程度上看起来更像函数（它们在Linux里也常常伴随小括号而使用，尽管在C语言里这样</p>
<p>的小括号不是必需的，就像&ldquo;struct fileinfo info&rdquo;声明过后的&ldquo;sizeof info&rdquo;）。</p>
<p>&nbsp;所以在这些关键字之后放一个空格：</p>
<p>if, switch, case, for, do, while</p>
<p>但是不要在sizeof、typeof、alignof或者__attribute__这些关键字之后放空格。例如，</p>
<div class="codeText">
<div class="codeHead">C++代码</div>
<ol class="dp-cpp">
    <li class="alt"><span><span>s&nbsp;=&nbsp;</span><span class="keyword">sizeof</span><span>(</span><span class="keyword">struct</span><span>&nbsp;file);&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<p>不要在小括号里的表达式两侧加空格。这是一个反例：</p>
<div class="codeText">
<div class="codeHead">C++代码</div>
<ol class="dp-cpp">
    <li class="alt"><span><span>s&nbsp;=&nbsp;</span><span class="keyword">sizeof</span><span>(&nbsp;</span><span class="keyword">struct</span><span>&nbsp;file&nbsp;);&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<p>&nbsp;当声明指针类型或者返回指针类型的函数时，&ldquo;*&rdquo;的首选使用方式是使之靠近变量名或者函</p>
<p>数名，而不是靠近类型名。例子：</p>
<div class="codeText">
<div class="codeHead">C++代码</div>
<ol class="dp-cpp">
    <li class="alt"><span><span class="datatypes">char</span><span>&nbsp;*linux_banner; &nbsp;&nbsp;</span></span></li>
    <li><span>unsigned&nbsp;</span><span class="datatypes">long</span><span>&nbsp;</span><span class="datatypes">long</span><span>&nbsp;memparse(</span><span class="datatypes">char</span><span>&nbsp;*ptr,&nbsp;</span><span class="datatypes">char</span><span>&nbsp;**retptr); &nbsp;&nbsp;</span></li>
    <li class="alt"><span class="datatypes">char</span><span>&nbsp;*match_strdup(substring_t&nbsp;*s); &nbsp;&nbsp;</span></li>
</ol>
</div>
<p>&nbsp;在大多数二元和三元操作符两侧使用一个空格，例如下面所有这些操作符：</p>
<div class="codeText">
<div class="codeHead">C++代码</div>
<ol class="dp-cpp">
    <li class="alt"><span><span>=&nbsp;+&nbsp;-&nbsp;&lt;&nbsp;&gt;&nbsp;*&nbsp;/&nbsp;%&nbsp;|&nbsp;&amp;&nbsp;^&nbsp;&lt;=&nbsp;&gt;=&nbsp;==&nbsp;!=&nbsp;?&nbsp;:&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<p>&nbsp;但是一元操作符后不要加空格：</p>
<div class="codeText">
<div class="codeHead">C++代码</div>
<ol class="dp-cpp">
    <li class="alt"><span><span>&amp;&nbsp;*&nbsp;+&nbsp;-&nbsp;~&nbsp;!&nbsp;</span><span class="keyword">sizeof</span><span>&nbsp;typeof&nbsp;alignof&nbsp;__attribute__&nbsp;defined&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<p>&nbsp;后缀自加和自减一元操作符前不加空格：</p>
<p>++ --</p>
<p>&nbsp;前缀自加和自减一元操作符后不加空格：</p>
<p>++ --</p>
<p>&nbsp;&ldquo;.&rdquo;和&ldquo;-&gt;&rdquo;结构体成员操作符前后不加空格。</p>
<p>&nbsp;不要在行尾留空白。有些可以自动缩进的编辑器会在新行的行首加入适量的空白，然后你</p>
<p>就可以直接在那一行输入代码。不过假如你最后没有在那一行输入代码，有些编辑器就不</p>
<p>会移除已经加入的空白，就像你故意留下一个只有空白的行。包含行尾空白的行就这样产</p>
<p>生了。</p>
<p>当git发现补丁包含了行尾空白的时候会警告你，并且可以应你的要求去掉行尾空白；不过</p>
<p>如果你是正在打一系列补丁，这样做会导致后面的补丁失败，因为你改变了补丁的上下文。</p>
<p>&nbsp;</p>
<p><strong>第四章：命名</strong></p>
<p>&nbsp;C是一个简朴的语言，你的命名也应该这样。和Modula-2和Pascal程序员不同，C程序员不使</p>
<p>用类似 ThisVariableIsATemporaryCounter 这样华丽的名字。C程序员会称那个变量为&ldquo;tmp&rdquo;</p>
<p>，这样写起来会更容易，而且至少不会令其难于理解。</p>
<p>&nbsp;不过，虽然混用大小写的名字是不提倡使用的，但是全局变量还是需要一个具描述性的名字</p>
<p>。称一个全局函数为&ldquo;foo&rdquo;是一个难以饶恕的错误。</p>
<p>&nbsp;全局变量（只有当你真正需要它们的时候再用它）需要有一个具描述性的名字，就像全局函</p>
<p>数。如果你有一个可以计算活动用户数量的函数，你应该叫它&ldquo;count_active_users()&rdquo;或者</p>
<p>类似的名字，你不应该叫它&ldquo;cntuser()&rdquo;。</p>
<p>&nbsp;在函数名中包含函数类型（所谓的匈牙利命名法）是脑子出了问题&mdash;&mdash;编译器知道那些类型而</p>
<p>且能够检查那些类型，这样做只能把程序员弄糊涂了。难怪微软总是制造出有问题的程序。</p>
<p>&nbsp;本地变量名应该简短，而且能够表达相关的含义。如果你有一些随机的整数型的循环计数器</p>
<p>，它应该被称为&ldquo;i&rdquo;。叫它&ldquo;loop_counter&rdquo;并无益处，如果它没有被误解的可能的话。类似</p>
<p>的，&ldquo;tmp&rdquo;可以用来称呼任意类型的临时变量。</p>
<p>&nbsp;如果你怕混淆了你的本地变量名，你就遇到另一个问题了，叫做函数增长荷尔蒙失衡综合症</p>
<p>。请看第六章（函数）。</p>
<p><strong>第六章：函数</strong></p>
<p>&nbsp;函数应该简短而漂亮，并且只完成一件事情。函数应该可以一屏或者两屏显示完（我们都知</p>
<p>道ISO/ANSI屏幕大小是80x24），只做一件事情，而且把它做好。</p>
<p>&nbsp;一个函数的最大长度是和该函数的复杂度和缩进级数成反比的。所以，如果你有一个理论上</p>
<p>很简单的只有一个很长（但是简单）的case语句的函数，而且你需要在每个case里做很多很</p>
<p>小的事情，这样的函数尽管很长，但也是可以的。</p>
<p>&nbsp;不过，如果你有一个复杂的函数，而且你怀疑一个天分不是很高的高中一年级学生可能甚至</p>
<p>搞不清楚这个函数的目的，你应该严格的遵守前面提到的长度限制。使用辅助函数，并为之</p>
<p>取个具描述性的名字。</p>
<p>&nbsp;函数的另外一个衡量标准是本地变量的数量。此数量不应超过5－10个，否则你的函数就有</p>
<p>问题了。重新考虑一下你的函数，把它分拆成更小的函数。人的大脑一般可以轻松的同时跟</p>
<p>踪7个不同的事物，如果再增多的话，就会糊涂了。即便你聪颖过人，你也可能会记不清你2</p>
<p>个星期前做过的事情。</p>
<p>&nbsp;在源文件里，使用空行隔开不同的函数。</p>
<p><strong>第八章：注释</strong></p>
<p>&nbsp;注释是好的，不过有过度注释的危险。永远不要在注释里解释你的代码是如何运作的：更好</p>
<p>的做法是让别人一看你的代码就可以明白，解释写的很差的代码是浪费时间。</p>
<p>&nbsp;一般的，你想要你的注释告诉别人你的代码做了什么，而不是怎么做的。也请你不要把注释</p>
<p>放在一个函数体内部：如果函数复杂到你需要独立的注释其中的一部分，你很可能需要回到</p>
<p>第六章看一看。你可以做一些小注释来注明或警告某些很聪明（或者槽糕）的做法，但不要</p>
<p>加太多。你应该做的，是把注释放在函数的头部，告诉人们它做了什么，也可以加上它做这</p>
<p>些事情的原因。</p>
<p>&nbsp;当注释内核API函数时，请使用kernel-doc格式。请看</p>
<p>Documentation/kernel-doc-nano-HOWTO.txt 和 scripts/kernel-doc 以获得详细信息。</p>
<p>&nbsp;Linux的注释风格是C89&ldquo;/* ... */&rdquo;风格。不要使用C99风格&ldquo;// ...&rdquo;注释。</p>
<p>&nbsp;长（多行）的首选注释风格是：</p>
<div class="codeText">
<div class="codeHead">C++代码</div>
<ol class="dp-cpp">
    <li class="alt"><span><span class="comment">/* </span>&nbsp;</span></li>
    <li><span><span class="comment">&nbsp;*&nbsp;This&nbsp;is&nbsp;the&nbsp;preferred&nbsp;style&nbsp;for&nbsp;multi-line </span>&nbsp;</span></li>
    <li class="alt"><span><span class="comment">&nbsp;*&nbsp;comments&nbsp;in&nbsp;the&nbsp;Linux&nbsp;kernel&nbsp;source&nbsp;code. </span>&nbsp;</span></li>
    <li><span><span class="comment">&nbsp;*&nbsp;Please&nbsp;use&nbsp;it&nbsp;consistently. </span>&nbsp;</span></li>
    <li class="alt"><span><span class="comment">&nbsp;* </span>&nbsp;</span></li>
    <li><span><span class="comment">&nbsp;*&nbsp;Description:&nbsp;A&nbsp;column&nbsp;of&nbsp;asterisks&nbsp;on&nbsp;the&nbsp;left&nbsp;side, </span>&nbsp;</span></li>
    <li class="alt"><span><span class="comment">&nbsp;*&nbsp;with&nbsp;beginning&nbsp;and&nbsp;ending&nbsp;almost-blank&nbsp;lines. </span>&nbsp;</span></li>
    <li><span><span class="comment">&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<p>&nbsp;注释数据也是很重要的，不管是基本类型还是衍生类型。为了方便实现这一点，每一行应只</p>
<p>声明一个数据（不要使用逗号来一次声明多个数据）。这样你就有空间来为每个数据写一段</p>
<p>小注释来解释它们的用途了。</p>
<p>对于PHPER来讲，最好遵循PHPDOC风格的注释。</p>
<p>&nbsp;<strong>第九章：你已经把事情弄糟了</strong></p>
<p>&nbsp;这没什么，我们都是这样。可能你的使用了很长时间Unix的朋友已经告诉你&ldquo;GNU emacs&rdquo;能</p>
<p>自动帮你格式化C源代码，而且你也注意到了，确实是这样，不过它所使用的默认值和我们</p>
<p>想要的相去甚远（实际上，甚至比随机打的还要差&mdash;&mdash;无数个猴子在GNU emacs里打字永远不</p>
<p>会创造出一个好程序）（译注：请参考Infinite Monkey Theorem）(对于PHPer，可能就是zend studio、eclipse之类的自动格式化工具)</p>
<p>&nbsp;所以你要么放弃GNU emacs，要么改变它让它使用更合理的设定。</p>
<p>&nbsp;<strong>第十二章：宏，枚举和RTL</strong></p>
<p>&nbsp;用于定义常量的宏的名字及枚举里的标签需要大写。</p>
<div class="codeText">
<div class="codeHead">C++代码</div>
<ol class="dp-cpp">
    <li class="alt"><span><span class="preprocessor">#define&nbsp;CONSTANT&nbsp;0x12345</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<p>&nbsp;宏的名字请用大写字母，不过形如函数的宏的名字可以用小写字母。</p>
<p>。。。</p>
<p>&nbsp;</p>
<p><strong>第十三章：打印内核消息</strong></p>
<p>&nbsp;内核开发者应该是受过良好教育的。请一定注意内核信息的拼写，以给人以好的印象。不要</p>
<p>用不规范的单词比如&ldquo;dont&rdquo;，而要用&ldquo;do not&rdquo;或者&ldquo;don't&rdquo;。保证这些信息简单、明了、无</p>
<p>歧义。</p>
<p>&nbsp;内核信息不必以句号（译注：英文句号，即点）结束。</p>
<p>&nbsp;写出好的调试信息可以是一个很大的挑战；<strong>当你写出来之后，这些信息在远程除错的时候</strong>当DEBUG符号没有被定义的时候，这些信息不应该被编译进内核里</p>
<p>就会成为极大的帮助。</p>
<p>（也就是说，默认地，它们不应该被包含在内）。(对于PHPer也是同样)</p>
<p>&nbsp;</p>
<p><strong>第十八章：编辑器模式行和其他需要罗嗦的事情</strong></p>
<p>&nbsp;有一些编辑器可以解释嵌入在源文件里的由一些特殊标记标明的配置信息。比如，emacs</p>
<p>能够解释被标记成这样的行：</p>
<p>&nbsp;-*- mode: c -*-</p>
<p>或者这样的：</p>
<p>&nbsp;/*</p>
<p>Local Variables:</p>
<p>compile-command: &quot;gcc -DMAGIC_DEBUG_FLAG foo.c&quot;</p>
<p>End:</p>
<p>*/</p>
<p>&nbsp;Vim能够解释这样的标记：</p>
<p>&nbsp;/* vim:set sw=8 noet */</p>
<p>&nbsp;这包括有关缩进和模式配置的标记。人们可以使用他们自己定制的模</p>
<p>式，或者使用其他可以产生正确的缩进的巧妙方法。</p>
<p>&nbsp;</p>
<p>不要在源代码中包含任何这样的内容。每个人都有他自己的编辑器配置，你的源文件不应</p>
<p>该覆盖别人的配置。</p>
<p>&nbsp;</p>
<p>简而言之，8个字符的缩进可以让代码更容易阅读，还有一个好处是当你的函数嵌套太深的</p>
<p>时候可以给你警告。留心这个警告。</p>]]></description>
			<link>http://dev.meettea.com/show-62-1.html</link>
			<category domain="http://dev.meettea.com/category-4-1.html">微风笔记</category>
			<pubDate>2010-01-03 20:40</pubDate>
		</item>
	</channel>
</rss>
