<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[F↓L→R↓Mht]]></title> 
<link>http://www.freeplug.org/blog/index.php</link> 
<description><![CDATA[All Information About hack988]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[F↓L→R↓Mht]]></copyright>
<item>
<link>http://www.freeplug.org/blog/read.php?99</link>
<title><![CDATA[关于php的时间戳和时间显示]]></title> 
<author>hack988 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[php(program)]]></category>
<pubDate>Tue, 02 Mar 2010 17:10:18 +0000</pubDate> 
<guid>http://www.freeplug.org/blog/read.php?99</guid> 
<description>
<![CDATA[ 
	今天测试了以下程序才发现其实无论在哪个timezone下实际上时间戳永远是不会变化的<br/><div class="code"><br/>echo time();<br/>echo &quot;<br/>&quot;;<br/>echo date(&quot;Y-m-d H:i:s&quot;).&quot;<br/>&quot;;<br/>echo microtime(true).&quot;<br/>&quot;;<br/>date_default_timezone_set(&#039;Etc/GMT-8&#039;);<br/>echo time().&quot;<br/>&quot;;<br/>echo date(&quot;Y-m-d H:i:s&quot;).&quot;<br/>&quot;;<br/>echo microtime(true);<br/></div><br/>结果：<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>1267549679<br/>2010-03-02 17:07:59<br/>1267549679.1875<br/>1267549679<br/>2010-03-03 01:07:59<br/>1267549679.1876<br/></div></div><br/>Tags - <a href="http://www.freeplug.org/blog/tag.php?tag=php" rel="tag">php</a> , <a href="http://www.freeplug.org/blog/tag.php?tag=date" rel="tag">date</a> , <a href="http://www.freeplug.org/blog/tag.php?tag=timestamp" rel="tag">timestamp</a>
]]>
</description>
</item><item>
<link>http://www.freeplug.org/blog/read.php?98</link>
<title><![CDATA[针对foreach，array_xxx系列函数的效率讨论(2)]]></title> 
<author>hack988 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[php(program)]]></category>
<pubDate>Fri, 15 Jan 2010 07:16:22 +0000</pubDate> 
<guid>http://www.freeplug.org/blog/read.php?98</guid> 
<description>
<![CDATA[ 
	继续上一话题，我有针对phpwind的部分代码做了一些比较，结果发现其实关键问题似乎在变量本身。<br/>引用变量的副本出现得越多耗用时间上越长<br/><div class="code"><br/>&lt;?php<br/>error_reporting(0);<br/>$doadd=$source=range(0,1000);<br/>//array(&quot;fefefefe&quot;,&quot;fwfeewf&#039;fef&quot;);<br/>$times=10;<br/>$mtime = explode(&#039; &#039;, microtime());<br/>$GetServer_start = $mtime&#91;1&#93; + $mtime&#91;0&#93;;<br/>for($i=0;$i&lt;$times;$i++)&#123;<br/>&nbsp;&nbsp;$GLOBALS&#91;&#039;pwServer&#039;&#93; =&nbsp;&nbsp;&nbsp;&nbsp;GetServer(array(&#039;HTTP_REFERER&#039;,&#039;HTTP_HOST&#039;,&#039;HTTP_X_FORWARDED_FOR&#039;,&#039;HTTP_USER_AGENT&#039;,&#039;HTTP_CLIENT_IP&#039;, &#039;HTTP_SCHEME&#039;,&#039;HTTPS&#039;,&#039;PHP_SELF&#039;,&#039;REQUEST_URI&#039;,&#039;REQUEST_METHOD&#039;,&#039;REMOTE_ADDR&#039;,&#039;QUERY_STRING&#039;));<br/>&nbsp;&nbsp;!$GLOBALS&#91;&#039;pwServer&#039;&#93;&#91;&#039;PHP_SELF&#039;&#93; &amp;&amp; $GLOBALS&#91;&#039;pwServer&#039;&#93;&#91;&#039;PHP_SELF&#039;&#93; = GetServer(&#039;SCRIPT_NAME&#039;);<br/>&#125;<br/>$mtime = explode(&#039; &#039;, microtime());<br/>$GetServer_end = $mtime&#91;1&#93; + $mtime&#91;0&#93;;<br/><br/><br/>for($i=0;$i&lt;$times;$i++)&#123;<br/>&nbsp;&nbsp;$GLOBALS&#91;&#039;pwServer&#039;&#93; =&nbsp;&nbsp;&nbsp;&nbsp;newGetServer(array(&#039;HTTP_REFERER&#039;,&#039;HTTP_HOST&#039;,&#039;HTTP_X_FORWARDED_FOR&#039;,&#039;HTTP_USER_AGENT&#039;,&#039;HTTP_CLIENT_IP&#039;, &#039;HTTP_SCHEME&#039;,&#039;HTTPS&#039;,&#039;PHP_SELF&#039;,&#039;REQUEST_URI&#039;,&#039;REQUEST_METHOD&#039;,&#039;REMOTE_ADDR&#039;,&#039;QUERY_STRING&#039;));<br/>&nbsp;&nbsp;!$GLOBALS&#91;&#039;pwServer&#039;&#93;&#91;&#039;PHP_SELF&#039;&#93; &amp;&amp; $GLOBALS&#91;&#039;pwServer&#039;&#93;&#91;&#039;PHP_SELF&#039;&#93; = GetServer(&#039;SCRIPT_NAME&#039;);<br/>&#125;<br/>$mtime = explode(&#039; &#039;, microtime());<br/>$newGetServer_end = $mtime&#91;1&#93; + $mtime&#91;0&#93;;<br/><br/>for($i=0;$i&lt;$times;$i++)&#123;<br/>&nbsp;&nbsp;$GLOBALS&#91;&#039;pwServer&#039;&#93; =&nbsp;&nbsp;&nbsp;&nbsp;newGetServer_udiff(array(&#039;HTTP_REFERER&#039;,&#039;HTTP_HOST&#039;,&#039;HTTP_X_FORWARDED_FOR&#039;,&#039;HTTP_USER_AGENT&#039;,&#039;HTTP_CLIENT_IP&#039;, &#039;HTTP_SCHEME&#039;,&#039;HTTPS&#039;,&#039;PHP_SELF&#039;,&#039;REQUEST_URI&#039;,&#039;REQUEST_METHOD&#039;,&#039;REMOTE_ADDR&#039;,&#039;QUERY_STRING&#039;));<br/>&nbsp;&nbsp;!$GLOBALS&#91;&#039;pwServer&#039;&#93;&#91;&#039;PHP_SELF&#039;&#93; &amp;&amp; $GLOBALS&#91;&#039;pwServer&#039;&#93;&#91;&#039;PHP_SELF&#039;&#93; = GetServer(&#039;SCRIPT_NAME&#039;);<br/>&#125;<br/>$mtime = explode(&#039; &#039;, microtime());<br/>$newGetServer_udiff_end = $mtime&#91;1&#93; + $mtime&#91;0&#93;;<br/><br/><br/>echo &quot;&lt;br/&gt;orgGetServer:&quot;.($GetServer_end-$GetServer_start).&quot;&lt;BR/&gt;&quot;;<br/>echo &quot;newGetServer_end:&quot;.($newGetServer_end-$GetServer_end).&quot;&lt;BR/&gt;&quot;;<br/>echo &quot;newGetServer_udiff:&quot;.($newGetServer_udiff_end-$GetServer_end).&quot;&lt;BR/&gt;&quot;;<br/><br/><br/>function oAdd_S(&amp;$array)&#123;<br/>&nbsp;&nbsp;foreach ($array as $key =&gt; $value) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$array&#91;$key&#93; =&nbsp;&nbsp;addslashes($value);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&#125;<br/>function onewAdd_S(&amp;$string)&#123;<br/>&nbsp;&nbsp;$string= addslashes($string);<br/>&#125;<br/>function newAdd_S(&amp;$string)&#123;<br/>&nbsp;&nbsp;is_array($string) ? array_walk($string,&#039;newAdd_S&#039;):$string=addslashes($string);<br/>&#125;<br/><br/>function doServerGet(&amp;$string,$key=0)&#123;<br/>&nbsp;&nbsp;global $server;<br/>&nbsp;&nbsp;isset($_SERVER&#91;$key&#93;)?($server&#91;$key&#93; = str_replace(array(&#039;&lt;&#039;,&#039;&gt;&#039;,&#039;&quot;&#039;,&quot;&#039;&quot;,&#039;%3C&#039;,&#039;%3E&#039;,&#039;%22&#039;,&#039;%27&#039;,&#039;%3c&#039;,&#039;%3e&#039;),&#039;&#039;,$_SERVER&#91;$key&#93;)):($server&#91;$key&#93;=NULL);<br/>&#125;<br/>function newGetServer($keys)&#123;<br/>&nbsp;&nbsp;//Copyright (c) 2003-09 PHPWind<br/>&nbsp;&nbsp;$server=array();<br/>&nbsp;&nbsp;is_array($keys)?array_walk($keys,&#039;doServerGet&#039;):($server=str_replace(array(&#039;&lt;&#039;,&#039;&gt;&#039;,&#039;&quot;&#039;,&quot;&#039;&quot;,&#039;%3C&#039;,&#039;%3E&#039;,&#039;%22&#039;,&#039;%27&#039;,&#039;%3c&#039;,&#039;%3e&#039;),&#039;&#039;,$_SERVER&#91;$keys&#93;));<br/>&nbsp;&nbsp;return $server;<br/>&#125;<br/>function GetServer_walk_func($var,$key=0)&#123;<br/>&nbsp;&nbsp;isset($_SERVER&#91;$key&#93;) ? $var=str_replace(array(&#039;&lt;&#039;,&#039;&gt;&#039;,&#039;&quot;&#039;,&quot;&#039;&quot;,&#039;%3C&#039;,&#039;%3E&#039;,&#039;%22&#039;,&#039;%27&#039;,&#039;%3c&#039;,&#039;%3e&#039;),&#039;&#039;,$_SERVER&#91;$key&#93;):NULL;<br/>&#125;<br/><br/>function newGetServer_udiff($keys)&#123;<br/>&nbsp;&nbsp;$server=array_fill_keys($keys,NULL);<br/>&nbsp;&nbsp;is_array($keys)?array_walk($keys,&#039;GetServer_walk_func&#039;):($server=str_replace(array(&#039;&lt;&#039;,&#039;&gt;&#039;,&#039;&quot;&#039;,&quot;&#039;&quot;,&#039;%3C&#039;,&#039;%3E&#039;,&#039;%22&#039;,&#039;%27&#039;,&#039;%3c&#039;,&#039;%3e&#039;),&#039;&#039;,$_SERVER&#91;$keys&#93;));<br/>&nbsp;&nbsp;return $server;<br/>&#125;<br/>//oraginal phpwind<br/>/**<br/> * 删除多余全局变量<br/> *<br/> * 多余的全局变量,会对站点安全构成威胁.需要保留的变量在$allowed中说明<br/> *<br/> */<br/>function pwInitGlobals() &#123;<br/>&nbsp;&nbsp;$allowed = array(&#039;GLOBALS&#039;=&gt;1, &#039;_GET&#039;=&gt;1, &#039;_POST&#039;=&gt;1, &#039;_COOKIE&#039;=&gt;1, &#039;_FILES&#039;=&gt;1, &#039;_SERVER&#039;=&gt;1, &#039;P_S_T&#039;=&gt;1);<br/>&nbsp;&nbsp;foreach ($GLOBALS as $key =&gt; $value) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if (!isset($allowed&#91;$key&#93;)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$GLOBALS&#91;$key&#93; = null;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unset($GLOBALS&#91;$key&#93;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;if (!get_magic_quotes_gpc()) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;Add_S($_POST);<br/>&nbsp;&nbsp;&nbsp;&nbsp;Add_S($_GET);<br/>&nbsp;&nbsp;&nbsp;&nbsp;Add_S($_COOKIE);<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;Add_S($_FILES);<br/>&nbsp;&nbsp;$GLOBALS&#91;&#039;pwServer&#039;&#93; = GetServer(array(&#039;HTTP_REFERER&#039;,&#039;HTTP_HOST&#039;,&#039;HTTP_X_FORWARDED_FOR&#039;,&#039;HTTP_USER_AGENT&#039;,&#039;HTTP_CLIENT_IP&#039;, &#039;HTTP_SCHEME&#039;,&#039;HTTPS&#039;,&#039;PHP_SELF&#039;,&#039;REQUEST_URI&#039;,&#039;REQUEST_METHOD&#039;,&#039;REMOTE_ADDR&#039;,&#039;QUERY_STRING&#039;));<br/>&nbsp;&nbsp;!$GLOBALS&#91;&#039;pwServer&#039;&#93;&#91;&#039;PHP_SELF&#039;&#93; &amp;&amp; $GLOBALS&#91;&#039;pwServer&#039;&#93;&#91;&#039;PHP_SELF&#039;&#93; = GetServer(&#039;SCRIPT_NAME&#039;);<br/>&#125;<br/><br/>function InitGP($keys,$method=null,$cvtype=1)&#123;//0=null,1=Char_cv,2=int<br/>&nbsp;&nbsp;//Copyright (c) 2003-09 PHPWind<br/>&nbsp;&nbsp;!is_array($keys) &amp;&amp; $keys = array($keys);<br/>&nbsp;&nbsp;foreach ($keys as $key) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if ($key == &#039;GLOBALS&#039;) continue;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$GLOBALS&#91;$key&#93; = NULL;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if ($method != &#039;P&#039; &amp;&amp; isset($_GET&#91;$key&#93;)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$GLOBALS&#91;$key&#93; = $_GET&#91;$key&#93;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125; elseif ($method != &#039;G&#039; &amp;&amp; isset($_POST&#91;$key&#93;)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$GLOBALS&#91;$key&#93; = $_POST&#91;$key&#93;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if (isset($GLOBALS&#91;$key&#93;) &amp;&amp; !empty($cvtype) &#124;&#124; $cvtype==2) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$GLOBALS&#91;$key&#93; = Char_cv($GLOBALS&#91;$key&#93;,$cvtype==2,true);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&#125;<br/>&#125;<br/>/**<br/> * 读取指定的全局环境变量值<br/> *<br/> * @param mixed $keys 环境变量名，可数组或单值<br/> * @return mixed 根据参数个数返回指定环境变量值<br/> */<br/>function GetServer($keys)&#123;<br/>&nbsp;&nbsp;//Copyright (c) 2003-09 PHPWind<br/>&nbsp;&nbsp;foreach ((array)$keys as $key) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$server&#91;$key&#93; = NULL;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if (isset($_SERVER&#91;$key&#93;)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$server&#91;$key&#93; = str_replace(array(&#039;&lt;&#039;,&#039;&gt;&#039;,&#039;&quot;&#039;,&quot;&#039;&quot;,&#039;%3C&#039;,&#039;%3E&#039;,&#039;%22&#039;,&#039;%27&#039;,&#039;%3c&#039;,&#039;%3e&#039;),&#039;&#039;,$_SERVER&#91;$key&#93;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;return is_array($keys) ? $server : $server&#91;$keys&#93;;<br/>&#125;<br/><br/>function Char_cv($mixed,$isint=false,$istrim=false) &#123;<br/>&nbsp;&nbsp;//Copyright (c) 2003-09 PHPWind<br/>&nbsp;&nbsp;if (is_array($mixed)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;foreach ($mixed as $key =&gt; $value) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mixed&#91;$key&#93; = Char_cv($value,$isint,$istrim);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&#125; elseif ($isint) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$mixed = (int)$mixed;<br/>&nbsp;&nbsp;&#125; elseif (!is_numeric($mixed) &amp;&amp; ($istrim ? $mixed = trim($mixed) : $mixed) &amp;&amp; $mixed) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$mixed = str_replace(array(&quot;&#92;0&quot;,&quot;%00&quot;,&quot;&#92;r&quot;),&#039;&#039;,$mixed);<br/>&nbsp;&nbsp;&nbsp;&nbsp;$mixed = preg_replace(<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array(&#039;/&#91;&#92;&#92;x00-&#92;&#92;x08&#92;&#92;x0B&#92;&#92;x0C&#92;&#92;x0E-&#92;&#92;x1F&#93;/&#039;,&#039;/&amp;(?!(#&#91;0-9&#93;+&#124;&#91;a-z&#93;+);)/is&#039;),<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array(&#039;&#039;,&#039;&amp;amp;&#039;),<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mixed<br/>&nbsp;&nbsp;&nbsp;&nbsp;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;$mixed = str_replace(array(&quot;%3C&quot;,&#039;&lt;&#039;),&#039;&amp;lt;&#039;,$mixed);<br/>&nbsp;&nbsp;&nbsp;&nbsp;$mixed = str_replace(array(&quot;%3E&quot;,&#039;&gt;&#039;),&#039;&amp;gt;&#039;,$mixed);<br/>&nbsp;&nbsp;&nbsp;&nbsp;$mixed = str_replace(array(&#039;&quot;&#039;,&quot;&#039;&quot;,&quot;&#92;t&quot;,&#039;&nbsp;&nbsp;&#039;),array(&#039;&amp;quot;&#039;,&#039;&amp;#39;&#039;,&#039;&nbsp;&nbsp;&nbsp;&nbsp;&#039;,&#039;&amp;nbsp;&amp;nbsp;&#039;),$mixed);<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;return $mixed;<br/>&#125;<br/><br/>function Add_S(&amp;$array)&#123;<br/>&nbsp;&nbsp;if (is_array($array)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;foreach ($array as $key =&gt; $value) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (is_array($value)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add_S($array&#91;$key&#93;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125; else &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$array&#91;$key&#93; = addslashes($value);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&#125;<br/>&#125;<br/>?&gt;<br/></div><br/>测试结果<br/>php5下结果：<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>orgGetServer:0.0015239715576172<br/>newGetServer_end:0.0010228157043457<br/>newGetServer_udiff:0.0018918514251709<br/></div></div><br/>在$server变量一次性被填充的情况下，arrya_walk单层历遍实际还是有一些效率优势<br/>Tags - <a href="http://www.freeplug.org/blog/tag.php?tag=php%252Cforeach%252Carray%252Carray_walk" rel="tag">php,foreach,array,array_walk</a>
]]>
</description>
</item><item>
<link>http://www.freeplug.org/blog/read.php?97</link>
<title><![CDATA[针对foreach，array_xxx系列函数的效率讨论]]></title> 
<author>hack988 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[php(program)]]></category>
<pubDate>Fri, 15 Jan 2010 07:05:46 +0000</pubDate> 
<guid>http://www.freeplug.org/blog/read.php?97</guid> 
<description>
<![CDATA[ 
	最近与一个老程序员讨论关于php效率的问题，讨论到关于是用php自身的函数还是用foreach来做递归运算的问题，于是动手把以前做的一组测试再次做了一下结果发现了跟以前截然相反的结论。<br/><br/><div class="code"><br/>&lt;?php<br/>error_reporting(0);<br/>$doadd=$source=range(0,10000);<br/>$mixsource=array();<br/>for($i&lt;0;$i&lt;1000;$i++)&#123;<br/>&nbsp;&nbsp;$mixsource&#91;&#93;=range(0,100);<br/>&#125;<br/>$mixdo=$mixsource;<br/><br/>$times=1;<br/>$starttime = microtime(true);<br/>for($i=0;$i&lt;$times;$i++)&#123;<br/>&nbsp;&nbsp;$doadd=$source;<br/>&nbsp;&nbsp;Add_S($doadd);<br/>&#125;<br/>$endtime = microtime(true);<br/>echo &quot;&lt;br/&gt;orgAdd_S:&quot;.number_format($endtime-$starttime,20).&quot;&lt;BR/&gt;&quot;;<br/><br/>$starttime = microtime(true);<br/>for($i=0;$i&lt;$times;$i++)&#123;<br/>&nbsp;&nbsp;$doadd=$source;<br/>&nbsp;&nbsp;array_walk($doadd,&quot;newAdd_S&quot;);<br/>&#125;<br/>$endtime = microtime(true);<br/>echo &quot;&lt;br/&gt;newAdd_S:&quot;.number_format($endtime-$starttime,20).&quot;&lt;BR/&gt;&quot;;<br/><br/><br/>$starttime = microtime(true);<br/>for($i=0;$i&lt;$times;$i++)&#123;<br/>&nbsp;&nbsp;$mixdo=$mixsource;<br/>&nbsp;&nbsp;Add_S($mixdo);<br/>&#125;<br/>$endtime = microtime(true);<br/>echo &quot;&lt;br/&gt;orgAdd_S(mix):&quot;.number_format($endtime-$starttime,20).&quot;&lt;BR/&gt;&quot;;<br/><br/>$starttime = microtime(true);<br/>for($i=0;$i&lt;$times;$i++)&#123;<br/>&nbsp;&nbsp;$mixdo=$mixsource;<br/>&nbsp;&nbsp;array_walk($mixdo,&quot;newAdd_S&quot;);<br/>&#125;<br/>$endtime = microtime(true);<br/>echo &quot;&lt;br/&gt;newAdd_S(mix):&quot;.number_format($endtime-$starttime,20).&quot;&lt;BR/&gt;&quot;;<br/><br/><br/>$starttime = microtime(true);<br/>for($i=0;$i&lt;$times;$i++)&#123;<br/>&nbsp;&nbsp;$doadd=$source;<br/>&nbsp;&nbsp;oAdd_S($doadd);<br/>&#125;<br/>$endtime = microtime(true);<br/>echo &quot;&lt;br/&gt;oAdd_S:&quot;.number_format($endtime-$starttime,20).&quot;&lt;BR/&gt;&quot;;<br/><br/><br/>$starttime = microtime(true);<br/>for($i=0;$i&lt;$times;$i++)&#123;<br/>&nbsp;&nbsp;$doadd=$source;<br/>&nbsp;&nbsp;foreach ($doadd as $key =&gt; $value) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$doadd&#91;$key&#93; =&nbsp;&nbsp;addslashes($value);<br/>&nbsp;&nbsp;&#125;<br/>&#125;<br/>$endtime = microtime(true);<br/>echo &quot;&lt;br/&gt;Add_S_nofunc:&quot;.number_format($endtime-$starttime,20).&quot;&lt;BR/&gt;&quot;;<br/><br/>$starttime = microtime(true);<br/>for($i=0;$i&lt;$times;$i++)&#123;<br/>&nbsp;&nbsp;$doadd=$source;<br/>&nbsp;&nbsp;array_walk($doadd,&quot;onewAdd_S&quot;);<br/>&#125;<br/>$endtime = microtime(true);<br/>echo &quot;&lt;br/&gt;onewAdd_S:&quot;.number_format($endtime-$starttime,20).&quot;&lt;BR/&gt;&quot;;<br/><br/>$doadd=$source;<br/>$starttime = microtime(true);<br/>foreach ($doadd as $k =&gt; $v) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;addOne($v);<br/>&#125;<br/>$endtime = microtime(true);<br/>echo &quot;&lt;br/&gt;foreach(addOne):&quot;.number_format($endtime-$starttime,20).&quot;&lt;BR/&gt;&quot;;<br/><br/>$doadd=$source;<br/>$starttime = microtime(true);<br/>array_walk($doadd, &#039;addOne&#039;);<br/>$endtime = microtime(true);<br/>echo &quot;&lt;br/&gt;array_walk(addOne):&quot;.number_format($endtime-$starttime,20).&quot;&lt;BR/&gt;&quot;;<br/><br/>function addOne(&amp;$item) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$item = $item + 1;<br/>&#125;<br/><br/>function Add_S(&amp;$array)&#123;<br/>&nbsp;&nbsp;if (is_array($array)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;foreach ($array as $key =&gt; $value) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (is_array($value)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add_S($array&#91;$key&#93;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125; else &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$array&#91;$key&#93; = addslashes($value);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&#125;<br/>&#125;<br/><br/>function oAdd_S(&amp;$array)&#123;<br/>&nbsp;&nbsp;foreach ($array as $key =&gt; $value) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$array&#91;$key&#93; =&nbsp;&nbsp;addslashes($value);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&#125;<br/>function onewAdd_S(&amp;$string)&#123;<br/>&nbsp;&nbsp;$string= addslashes($string);<br/>&#125;<br/>function newAdd_S(&amp;$string)&#123;<br/>&nbsp;&nbsp;is_array($string) ? array_walk($string,&#039;newAdd_S&#039;):$string=addslashes($string);<br/>&#125;<br/>?&gt;<br/></div><br/><br/>得到的结果为：<br/>php4下（经常出现负数，原因未知）<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>orgAdd_S:0.08950499999999999901<br/><br/>newAdd_S:0.10287800000000002498<br/><br/>orgAdd_S(mix):-0.30718800000000001660<br/><br/>newAdd_S(mix):-0.04874000000000001442<br/><br/>oAdd_S:0.07469500000000000917<br/><br/>Add_S_nofunc:0.09770799999999995933<br/><br/>onewAdd_S:0.09332800000000002427<br/><br/>foreach(addOne):0.06459700000000001552<br/><br/>array_walk(addOne):0.06099900000000001654<br/><br/></div></div><br/><br/>php5.2下结果<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>orgAdd_S:0.03681683540344238281<br/><br/>newAdd_S:0.06004285812377929688<br/><br/>orgAdd_S(mix):0.33627510070800781250<br/><br/>newAdd_S(mix):0.65101504325866699219<br/><br/>oAdd_S:0.02820801734924316059<br/><br/>Add_S_nofunc:0.03237485885620117188<br/><br/>onewAdd_S:0.04846286773681640625<br/><br/>foreach(addOne):0.02344417572021484375<br/><br/>array_walk(addOne):0.02508306503295898784<br/></div></div><br/>php5.3下结果：<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>orgAdd_S:0.03579783439636230469<br/><br/>newAdd_S:0.06817722320556640625<br/><br/>orgAdd_S(mix):0.34221100807189941406<br/><br/>newAdd_S(mix):0.69621300697326660156<br/><br/>oAdd_S:0.02676510810852050781<br/><br/>Add_S_nofunc:0.03174018859863281250<br/><br/>onewAdd_S:0.05831003189086914062<br/><br/>foreach(addOne):0.01832890510559082031<br/><br/>array_walk(addOne):0.03184199333190917969<br/><br/></div></div><br/><br/>这些结果与我2年前测试的结果有着很大的差别，那时测试发现array_walk远快于foreach,而现在的结果却是foreach在多层递归的情况下比array_walk快了1倍，我已不清楚到底是php的递归性能现在提升了还是array_walk的性能下降了：（，有待进一步研究。<br/>Tags - <a href="http://www.freeplug.org/blog/tag.php?tag=php%252Carray%252Carray_walk%252Cforeach" rel="tag">php,array,array_walk,foreach</a>
]]>
</description>
</item><item>
<link>http://www.freeplug.org/blog/read.php?96</link>
<title><![CDATA[FreeBSD 7.2全配置]]></title> 
<author>hack988 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[Server Configure]]></category>
<pubDate>Thu, 12 Nov 2009 18:22:02 +0000</pubDate> 
<guid>http://www.freeplug.org/blog/read.php?96</guid> 
<description>
<![CDATA[ 
	1、分区（注意使用标准分区表时，应在slice里将分区激活，否则无法引导）<br/><br/>2、添加用户<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content">pw user add -n hack988 -g sshlogin</div></div><br/><br/>3、修改启动禁用sendmail（/etc/rc.conf）<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>sendmail_enable="NO"<br/>sendmail_submit_enable="NO"<br/>sendmail_outbound_enable="NO"<br/>sendmail_msp_queue_enable="NO"<br/></div></div><br/>4、修改/tmp目录到/var/tmp<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>rm -rf tmp<br/>ln -s /var/tmp /tmp<br/></div></div><br/><br/>5、开启安装cvs最新版本<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>pkg_add -rv cvsup-without-gui<br/>rehash<br/></div></div><br/><br/>6、配置/etc/make.conf文件<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>cp /usr/share/examples/etc/make.conf /etc/make.conf<br/></div></div><br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>CPUTYPE?=native<br/>CFLAGS= -O3 -march=native -mtune=native -mcpu=native -msse2<br/>CXXFLAGS+= -O3 -march=native -mtune=native -mcpu=native -msse2<br/></div></div><br/><br/>BDECFLAGS 直接开启配置文件内的默认配置<br/><br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>SUP_UPDATE=yes<br/>#<br/>SUP=&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/usr/bin/csup<br/>SUPFLAGS=&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -g -L 2<br/>SUPHOST=&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cvsup5.kr.freebsd.org<br/>SUPFILE=&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/usr/cvsconfig/standard-supfile<br/>PORTSSUPFILE=&nbsp;&nbsp; /usr/cvsconfig/ports-supfile<br/>DOCSUPFILE=&nbsp;&nbsp;&nbsp;&nbsp; /usr/cvsconfig/doc-supfile<br/>MASTER_SITE_BACKUP?=&nbsp;&nbsp;&nbsp;&nbsp;&#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp; <a href="ftp://ftp.kr5.freebsd.org/pub/FreeBSD/distfiles/$&#123;DIST_SUBDIR&#125;/&#92;" target="_blank">ftp://ftp.kr5.freebsd.org/pub/FreeBSD/distfiles/$&#123;DIST_SUBDIR&#125;/&#92;</a><br/>&nbsp;&nbsp;&nbsp;&nbsp; <a href="ftp://cvsup7.tw.freebsd.org/pub/FreeBSD/distfiles/$&#123;DIST_SUBDIR&#125;/&#92;" target="_blank">ftp://cvsup7.tw.freebsd.org/pub/FreeBSD/distfiles/$&#123;DIST_SUBDIR&#125;/&#92;</a><br/>&nbsp;&nbsp;&nbsp;&nbsp; <a href="ftp://cvsup4.FreeBSDChina.org/pub/FreeBSD/distfiles/$&#123;DIST_SUBDIR&#125;/&#92;" target="_blank">ftp://cvsup4.FreeBSDChina.org/pub/FreeBSD/distfiles/$&#123;DIST_SUBDIR&#125;/&#92;</a><br/>&nbsp;&nbsp;&nbsp;&nbsp; <a href="ftp://cvsup5.FreeBSDChina.org/pub/FreeBSD/distfiles/$&#123;DIST_SUBDIR&#125;/" target="_blank">ftp://cvsup5.FreeBSDChina.org/pub/FreeBSD/distfiles/$&#123;DIST_SUBDIR&#125;/</a><br/>MASTER_SITE_OVERRIDE?=$&#123;MASTER_SITE_BACKUP&#125;<br/></div></div><br/>7、mkdir /usr/cvsconfig<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>cp ports-supfile /usr/cvsconfig/<br/>cp doc-supfile /usr/cvsconfig/<br/>cp doc-supfile&nbsp;&nbsp;/usr/cvsconfig/ <br/></div></div><br/>编辑 ports-sufile<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>*default host=ftp.cn.FreeBSD.org<br/><br/>ports-all<br/></div></div><br/><br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>rehash<br/></div></div><br/><br/>第一次更新使用<br/>csup -g -L 2 /usr/cvsconfig/ports-supfile<br/>以后直接进入ports目录make update<br/><br/>8、修改内核参数<br/>/boot/loader.conf<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>#add to loader.conf by hack988 for performance<br/>kern.maxproc=20480<br/>kern.maxfiles=65535<br/>kern.ipc.shmmni=512<br/>kern.ipc.semmsl=1024<br/>kern.ipc.semmns=524288<br/>kern.ipc.semopm=1024<br/>kern.ipc.semmap=655360<br/>kern.ipc.semmnu=1000<br/>kern.ipc.shm_use_phys=1<br/>kern.ipc.nsfbufs=65535<br/>kern.ipc.nmbclusters=163840<br/>kern.ipc.msgmni=512<br/>kern.ipc.msgmnb=20480<br/>#end<br/></div></div><br/>9、/etc/sysctl.conf<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>#add to sysctl.conf by hack988 for performance<br/>#maxsockbuf=<br/>#local.stream.recvspace+local.stream.sendspace+tcp.sendbuf_max+tcp.recvbuf_max<br/>kern.ipc.maxsockbuf=15417600<br/>kern.ipc.somaxconn=4096<br/>#50MB recv,100MB send<br/>net.local.stream.recvspace=2569600<br/>net.local.stream.sendspace=5139200<br/><br/>#50MB recv,100MB send<br/>net.inet.tcp.sendbuf_max=5139200<br/>net.inet.tcp.recvbuf_max=2569600<br/>net.inet.tcp.recvbuf_inc=16384<br/>net.inet.tcp.sendbuf_inc=16384<br/><br/>net.inet.ip.forwarding=1<br/>net.inet6.ip6.redirect=0<br/>net.inet.ip.redirect=0<br/><br/>net.inet.tcp.delayed_ack=0<br/>net.inet.icmp.drop_redirect=1<br/>net.inet.icmp.log_redirect=1<br/>net.inet.tcp.msl=4096<br/>net.inet.tcp.blackhole=2<br/>net.inet.icmp.icmplim=5<br/>net.inet.tcp.inflight.enable=0<br/><br/>kern.ipc.shmmax=1073741824<br/>kern.ipc.shmall=1048576<br/><br/><br/>vfs.ufs.dirhash_maxmem=8388608<br/>machdep.cpu_idle_hlt=0<br/><br/><br/><br/>#end<br/></div></div><br/><br/>10、安装fastest_sites<br/>运行fastest_sites > /usr/cvsconfig/ports_sites.conf<br/>/etc/make.conf<br/>在MASTER_SITE_BACKUP<br/>下添加<br/>.include "/usr/cvsconfig/ports_sites.conf"<br/><br/>11、安装fastest_cvsup<br/>/usr/ports/sysutils/fastest_cvsup/<br/><br/>12、添加axel用于多线程下载<br/>cd /usr/ports/ftp<br/>配置/etc/make.conf<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>FETCH_CMD=axel<br/>FETCH_BEFORE_ARGS= -n 10 -a<br/>FETCH_AFTER_ARGS=<br/>DISABLE_SIZE=yes <br/>WITHOUT_X11=yes #禁用x11部分<br/>[quote]<br/>13、编译perl 5.10<br/><br/>14、<br/>编译安装 /usr/ports/ports-mgmt/portupgrade<br/><br/>15、编译java 1.6<br/>/usr/ports/java/diablo-jdk16<br/>按照提示将相应的文件复制到/usr/distfiles目录<br/><br/>16、编译tomcat5.0<br/>新建<br/>[quote]<br/>mkdir /usr/opt<br/>chmod 755 /usr/opt<br/>mkdir /usr/opt/tomcat50<br/>mkdir /usr/opt/tomcat50/webapps<br/>mv&nbsp;&nbsp;/usr/local/jakarta-tomcat5.0/webapps /usr/opt/tomcat50/<br/>ln -s /usr/opt/tomcat50/webapps/ /usr/local/jakarta-tomcat5.0/webapps<br/>chown -R www:www /usr/opt/tomcat50<br/>chmod -R 755 /usr/opt/tomcat50<br/></div></div><br/>查询rc.conf 变量<br/>/usr/local/etc/rc.d/tomcat50 rcvar<br/>添加变量到/etc/rc.conf<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>tomcat50_enable="YES"<br/></div></div><br/><br/>/usr/local/etc/rc.d/tomcat50 start<br/>测试是否可用<br/><br/><br/>17、安装tomcat native驱动（5.5以上）<br/><br/><br/>18、安装mysql<br/>首先配置参数<br/>/usr/local/etc/pkgtools.conf<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>&nbsp;&nbsp;MAKE_ARGS = &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'databases/mysql50-*' => [<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'WITH_CHARSET=utf8',<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'WITH_COLLATION=utf8_bin',<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'WITH_XCHARSET=all',<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'WITH_FAST_MUTEXES=yes',<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'BUILD_STATIC=yes',<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'BUILD_OPTIMIZED=yes',<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'WITH_OPENSSL=yes',<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'WITH_NDB=yes',<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]<br/>&nbsp;&nbsp;&#125;<br/></div></div><br/>注意使用portinstall来安装，这些参数才会生效<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>mkdir /usr/opt/mysql50<br/>mkdir /usr/opt/mysql50/myisam<br/>mkdir /usr/opt/mysql50/innodb<br/>mkdir /usr/opt/mysql50/mysql-tmp<br/>chown -R mysql:mysql /usr/opt/mysql50<br/>chmod -R&nbsp;&nbsp;700 /usr/opt/mysql50<br/>chown -R mysql:wheel /usr/opt/mysql50/mysql-tmp<br/></div></div><br/>编辑/usr/local/etc/rc.d/mysql-server<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>$&#123;mysql_dbdir="/usr/opt/mysql50"&#125;<br/>--datadir=$&#123;mysql_dbdir&#125; --> --datadir=$&#123;mysql_dbdir&#125;/myisam<br/><br/>mysql_create_auth_tables<br/>$&#123;mysql_dbdir&#125;-->$&#123;mysql_dbdir&#125;/myisam<br/><br/>mysql_prestart<br/>$&#123;mysql_dbdir&#125;/mysql-->$&#123;mysql_dbdir&#125;/myisam/mysql<br/></div></div><br/>从/usr/local/share/mysql/<br/>复制一个合适的my-xxx.cnf文件到/usr/opt/mysql50/my.cnf<br/>修改my.cnf权限<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>chmod 700 /usr/local/mysql50/my.cnf<br/>chown mysql:mysql /usr/local/mysql50/my.cnf<br/></div></div><br/><br/>/usr/local/mysql50/my.cnf关键配置<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>innodb_file_per_table=1<br/>tmpdir = /usr/opt/mysql50/mysql-tmp<br/>innodb_data_home_dir = /usr/opt/mysql50/innodb<br/>innodb_log_group_home_dir=/usr/opt/mysql50/innodb<br/></div></div><br/><br/>查找/etc/rc.conf启动变量<br/>/usr/local/etc/rc.d/mysql-server rcvar<br/>添加启动变量/etc/rc.conf<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>mysql_enable="YES"<br/></div></div><br/><br/>启动测试<br/> /usr/local/etc/rc.d/mysql-server start<br/><br/>运行mysql命令添加权限<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>mysql<br/>use mysql;<br/>select User,Password,Host from user;<br/><br/>#如不存在 root 且host为 %的用户则添加远程管理<br/>CREATE USER&nbsp;&nbsp;'root'@'%' IDENTIFIED BY 'hack988';<br/>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;<br/>#然后远程管理数据库，建议用navicatmysql<br/></div></div><br/><br/>19、添加多个回环地址与内网地址以便管理时使用<br/>/etc/rc.conf<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>ifconfig_em1="inet 192.168.240.1 netmask 255.255.255.0"<br/>ifconfig_lo0="inet 127.0.0.1 netmask 255.255.255.248"<br/>ifconfig_lo0_alias0="inet 127.0.0.2 netmask 255.255.255.248"<br/></div></div><br/>重新启动，ifconfig -a确认配置是否生效<br/><br/><br/>20、开启ipfilter<br/>/etc/rc.cnf<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>ipfilter_enable="YES"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Start ipf firewall<br/>ipfilter_rules="/etc/ipf.rules"&nbsp;&nbsp; # loads rules definition text file<br/>ipmon_enable="YES"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Start IP monitor log<br/>ipmon_flags="-Ds"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # D = start as daemon<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# s = log to syslog<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# v = log tcp window, ack, seq<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# n = map IP & port to names<br/></div></div><br/>建立一个空的默认ipf.rules<br/>touch /etc/ipf.rules<br/><br/><br/>新建文件（注意文件名必须以.sh结束）<br/>ee /etc/rc.d/ipf.rules.sh<br/>添加脚本<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>#!/bin/sh<br/>sh /usr/opt/conf/ipf.rules $1 &<br/></div></div><br/>修改权限<br/>chmod 755 /etc/rc.d/ipf.rules.sh<br/><br/>添加/usr/opt/conf/ipf.rules脚本<br/>mkdir /usr/opt/conf<br/>chmod 777 /usr/opt/conf<br/><br/>启动ipfilter 测试<br/> kldstat<br/>察看模块是否挂起<br/>挂载模块<br/> kldload ipl.ko<br/>/etc/rc.d/ipfilter start<br/>修改 ipf.rules 权限<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>chown root:wheel /usr/opt/conf/ipf.rules<br/>chmod 744 /usr/opt/conf/ipf.rules<br/></div></div><br/><br/>重新启动确认ipfilter是否启动<br/>ipfstat -io<br/><br/>配置日志文件/etc/syslog.conf(该部分配置应放在*.*之上否则无记录)<br/>在&nbsp;&nbsp;/var/message所在行添加<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>local0.none;<br/></div></div><br/>注意该项添加应放在<br/>*.notice以后<br/><br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>#to log ipfilter<br/>local0.info&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;&nbsp;&nbsp;&nbsp;/var/log/ipf.log<br/>#log another ip info<br/>!local0.info<br/>local0.*&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /var/log/ipmon.log<br/></div></div><br/><br/><br/>配置日志轮巡/etc/newsyslog.conf<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>/var/log/ipf.log&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;640&nbsp;&nbsp;7&nbsp;&nbsp;&nbsp;&nbsp; 1000&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp; JC<br/>/var/log/ipmon.log&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;640&nbsp;&nbsp;7&nbsp;&nbsp;&nbsp;&nbsp; 1000&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp; JC<br/></div></div><br/>重新启动 newsyslog,syslog<br/>/etc/rc.d/newsyslog&nbsp;&nbsp;restart<br/>/etc/rc.d/syslogd&nbsp;&nbsp;restart<br/><br/><br/>21、添加bash为默认脚本<br/>首先进入/usr/ports/shells/bash/<br/>make<br/>得到<br/>/usr/ports/shells/bash/work/bash-4.0/examples/startup-files/bashrc<br/>cp /usr/ports/shells/bash/work/bash-4.0/examples/startup-files/bashrc /etc/bashrc<br/><br/><br/>添加公共属性<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/># bogus 上<br/>#for host display&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>PS1='[&#92;u@&#92;h &#92;W]&#92;$ ' <br/>#by hack988 for color ls like linux<br/>CLICOLOR="YES";&nbsp;&nbsp;&nbsp;&nbsp;export CLICOLOR<br/>LSCOLORS="ExGxFxdxCxDxDxhbadExEx";&nbsp;&nbsp;&nbsp;&nbsp;export LSCOLORS<br/>#<br/>修改<br/># bogus<br/>if [ -f /unix ] ; then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alias ls='/bin/ls -CF'<br/>else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alias ls='/bin/ls -G'<br/>fi<br/>alias su='su - ' #for load profile by default<br/>alias rehash='hash -r' # for rehash like csh<br/>结尾添加<br/>#by hack988 for color ls<br/>#TERM=xterm-color export TERM<br/>if [ $&#123;TERM:0:4&#125; != "cons" ]; then<br/>&nbsp;&nbsp;&nbsp;&nbsp;TERM="xterm-color";export TERM<br/>fi<br/>#by hack988 for custom script<br/>PATH="/usr/opt/sh:$PATH" ;export PATH<br/>#end<br/></div></div><br/><br/>修改用户默认shell<br/>chsh -s /usr/local/bin/bash root<br/><br/>切换到相应的用户<br/><br/>修改<br/>~/.bash_rc<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/># .bash_rc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/># User specific aliases and functions<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/># Source global definitions&nbsp;&nbsp;<br/>if [ -f /etc/bashrc ]; then&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;. /etc/bashrc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>fi&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/></div></div><br/>修改<br/>~/.bash_profile<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/># .bash_profile<br/> <br/># Get the aliases and functions<br/>if [ -f ~/.bash_rc ]; then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;. ~/.bash_rc<br/>fi<br/> <br/># User specific environment and startup programs<br/> <br/>#PATH=$PATH:$HOME/bin<br/> <br/>#export PATH<br/>unset USERNAME<br/></div></div><br/><br/>添加连接用于快捷启动mysql,tomcat<br/>mkdir /usr/opt/sh<br/><br/>ln -s /usr/local/etc/rc.d/tomcat50 /usr/opt/sh/tomcat50<br/><br/>ln -s /usr/local/etc/rc.d/mysql-server /usr/opt/sh/mysql50<br/><br/><br/>附：<br/>ipf.rules脚本<br/><div class="code"><br/>#!/bin/sh<br/>################ Start of IP rules file ###############################<br/># Set var for rules script<br/>run_mod=&quot;mrun&quot; #run method <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#debug= allow all<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#run = deny all<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#mdebug<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#mrun<br/>#tempfile=&quot;/usr/opt/conf/runtemp&quot;<br/>#touch $tempfile<br/>#echo &quot;do inscript=====================&quot;&gt;&gt;$tempfile<br/>#echo &quot;allarg=$*&quot;&gt;&gt;$tempfile<br/>if &#91; $# -ge 1 &#93;;then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case $1 in<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;Rr&#93;&#91;Uu&#93;&#91;Nn&#93;&#124;&#91;Mm&#93;&#91;Rr&#93;&#91;Uu&#93;&#91;Nn&#93;&#124;&#91;Dd&#93;&#91;Ee&#93;&#91;Bb&#93;&#91;Uu&#93;&#91;Gg&#93;&#124;&#91;Mm&#93;&#91;Dd&#93;&#91;Ee&#93;&#91;Bb&#93;&#91;Uu&#93;&#91;Gg&#93;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;run_mod=$1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;faststart&quot;&#124;&quot;start&quot;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;Starting ipfilter table load&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sleep 3<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case $run_mod in<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;Rr&#93;&#91;Uu&#93;&#91;Nn&#93;&#124;&#91;Dd&#93;&#91;Ee&#93;&#91;Bb&#93;&#91;Uu&#93;&#91;Gg&#93;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;run_mod=&quot;run&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;Mm&#93;&#91;Rr&#93;&#91;Uu&#93;&#91;Nn&#93;&#124;&#91;Mm&#93;&#91;Dd&#93;&#91;Ee&#93;&#91;Bb&#93;&#91;Uu&#93;&#91;Gg&#93;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;run_mod=&quot;mrun&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;esac<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;Hh&#93;&#91;Ee&#93;&#91;Ll&#93;&#91;Pp&#93;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo -e &quot;#################################################################&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo -e &quot;#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#92;033&#91;1;37mIpfilter Custom table load for FreeBSD 7.2 Releas&#92;033&#91;0m&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo -e &quot;#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#92;033&#91;4;36mVersion 1.0&#92;033&#91;0m&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;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo -e &quot;#&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;&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;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo -e &quot;#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; This Script is Create By &#92;033&#91;1;34mhack988&#92;033&#91;0m&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo -e &quot;#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Site:&#92;033&#91;4;36mwww.freeplug.org&#92;033&#91;0m&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;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo -e &quot;#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Date:11/06/2009&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;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo -e &quot;#&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;&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;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo -e &quot;# &#92;033&#91;1;34mSetting:&#92;033&#91;0m&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo -e &quot;#&nbsp;&nbsp;1. Copy This Script to your path.&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;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo -e &quot;#&nbsp;&nbsp;2. Change Owner to root:wheel.&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;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo -e &quot;#&nbsp;&nbsp;3. Change Mod to execable Mod&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;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo -e &quot;#&nbsp;&nbsp;&nbsp;&nbsp; (Less Mod is 100 After Finished Tables Test).&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo -e &quot;#&nbsp;&nbsp;4. Create A Boot AutoStart Script (Name.sh) in /etc/rc.d/.&nbsp;&nbsp; #&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo -e &quot;#&nbsp;&nbsp;&nbsp;&nbsp; This File&#039;s Text is:&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;&nbsp;&nbsp;&nbsp;#&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo -e &quot;#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#92;033&#91;1;32m#!/bin/sh&#92;033&#91;0m&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo -e &quot;#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#92;033&#91;1;32msh /usr/opt/conf/ipf.rules $1 &amp; #Run In Backend.&#92;033&#91;0m&nbsp;&nbsp;&nbsp;&nbsp;#&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo -e &quot;#&nbsp;&nbsp;5. Edit Table In Each Functions In This Script File.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo -e &quot;#&nbsp;&nbsp;&#92;033&#91;1;41;37mNotice:&#92;033&#91;0m Named &#92;033&#91;4;33mrun_mod&#92;033&#91;0m used to set script run Mode.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo -e &quot;#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#92;033&#91;4;33mfaststart&#124;start&#92;033&#91;0m is used for system boot,if &#92;033&#91;4;33mrun_mod&#92;033&#91;0m&nbsp;&nbsp;&nbsp;&nbsp; #&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo -e &quot;#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set to &#92;033&#91;4;33mmrun,mdebug&#92;033&#91;0m script will boot as &#92;033&#91;4;33mmrun&#92;033&#91;0m mode,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo -e &quot;#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set to &#92;033&#91;4;33mrun,debug&#92;033&#91;0m script will boot as &#92;033&#91;4;33mrun&#92;033&#91;0m mode.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo -e &quot;#&nbsp;&nbsp;&#92;033&#91;1;34mMode list:&#92;033&#91;0m&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo -e &quot;#&nbsp;&nbsp;1.&#92;033&#91;4;33mrun&#124;faststart&#124;start&#92;033&#91;0m:An normal mode(Finished table edit).&nbsp;&nbsp; #&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo -e &quot;#&nbsp;&nbsp;2.&#92;033&#91;4;33mmrun&#92;033&#91;0m:An normal mode manger&#039;s filter table.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo -e &quot;#&nbsp;&nbsp;3.&#92;033&#91;4;33mdebug&#92;033&#91;0m:Mode for set used table and ipnat table.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo -e &quot;#&nbsp;&nbsp;4.&#92;033&#91;4;33mmdebug&#92;033&#91;0m:Mode for debug manger&#039;s filter table.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo -e &quot;#&nbsp;&nbsp; Example:Now I want to Add an user for Mysql so run script&nbsp;&nbsp; #&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo -e &quot;#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; with &#92;033&#91;4;33mmdebug&#92;033&#91;0m agument to open port 3306.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo -e &quot;#&nbsp;&nbsp;&#92;033&#91;5;41;37mWarning&#92;033&#91;0m:&#92;033&#91;4;33mmdebug&#92;033&#91;0m and &#92;033&#91;4;33mdebug&#92;033&#91;0m mode not Clean Active Nat List and&nbsp;&nbsp;#&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo -e &quot;#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;pass in/out all&#039; in top of filer table.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo -e &quot;#&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;&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;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo -e &quot;# &#92;033&#91;1;34mUsage:&#92;033&#91;0mipf.rules &#91;mdebug&#124;debug&#124;faststart&#124;start&#124;mrun&#124;run&#93;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo -e &quot;#&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;&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;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo -e &quot;#################################################################&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;Unkown Arguments for ipf load&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;esac<br/>fi<br/> <br/>#define interface<br/>pubif_1=&quot;em0&quot;&nbsp;&nbsp; # public interface name of NIC<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# facing the public Internet<br/>lanif_1=&quot;em1&quot;&nbsp;&nbsp; # lan interface name of NIC<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # facing the Internal Lan<br/>loopif_1=&quot;lo0&quot;<br/>loopif_2=&quot;lo0&quot;<br/> <br/>#define my ips<br/>#public ips<br/>pubip_1=&quot;xxxxxxxxx&quot;<br/> <br/>#lan ips<br/>lanip_1=&quot;xxxxxxxxxxxxx&quot;<br/> <br/>#loop ips<br/>loopip_1=&quot;127.0.0.1&quot;<br/>loopip_2=&quot;127.0.0.2&quot;<br/>#my admin ips<br/>adminip_1=&quot;xxxxxxxxx/25&quot;<br/>adminip_2=&quot;xxxxxxxxx/24&quot;<br/>adminip_3=&quot;xxxxxxxxx/24&quot;<br/>adminip_4=&quot;xxxxxxxxx&quot;<br/>#define groups<br/>group_me=1<br/>group_global=2<br/>group_lan=3<br/>group_wan=4<br/> <br/> <br/>begin_ipf_clean () &#123;<br/>############<br/># Flush out the list before we begin.<br/>#<br/>ipf -Fa <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case $1 in<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;Dd&#93;&#91;Ee&#93;&#91;Bb&#93;&#91;Uu&#93;&#91;Gg&#93;&#124;&#91;Mm&#93;&#91;Dd&#93;&#91;Ee&#93;&#91;Bb&#93;&#91;Uu&#93;&#91;Gg&#93;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ipf -f - &lt;&lt; EOF<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$group_global pass out all<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$group_global pass in all<br/>EOF<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ipf -f - &lt;&lt; EOF<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$group_global block out all<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$group_global block in all<br/>EOF<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;esac<br/>&#125;<br/> <br/>begin_ipnat_clean () &#123;<br/>############<br/># Flush out the list before we begin.<br/>#<br/>case $1 in<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;Dd&#93;&#91;Ee&#93;&#91;Bb&#93;&#91;Uu&#93;&#91;Gg&#93;&#124;&#91;Mm&#93;&#91;Dd&#93;&#91;Ee&#93;&#91;Bb&#93;&#91;Uu&#93;&#91;Gg&#93;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ipnat -C<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ipnat -CF<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br/>esac<br/>&#125;<br/> <br/>#########################formating ipf table for manager#################<br/>format_ipf_manage_table()&#123;<br/>touch&nbsp;&nbsp;/tmp/tmp.$addstr.ipf<br/>cat &gt;/tmp/tmp.$addstr.ipf&lt;&lt;EOF<br/>#for mysql manager<br/>#icmp<br/>$group_global pass in quick on $pubif_1&nbsp;&nbsp;proto icmp from any to $pubip_1 keep state<br/> <br/>$group_global pass in log quick proto tcp from any to $loopip_1 port = 3306 keep state<br/>$group_global pass in log quick proto tcp from any to $loopip_2 port = 3306 keep state<br/>#$group_global block out log quick proto tcp from any to any port = 9750 keep state<br/>#table for web<br/>$group_global pass in quick proto tcp from any to any port = 8180 keep state<br/>#table for ssh<br/>#$group_global pass in quick proto tcp from any to any port = 100 keep state<br/>$group_global pass in log quick proto tcp from any to $loopip_1 port = 22 keep state<br/>$group_global pass in log quick proto tcp from any to $loopip_2 port = 22 keep state<br/>EOF<br/>&#125;<br/>#################################end#####################################<br/> <br/> <br/>#########################formating ipf table############################<br/>format_ipf_table()&#123;<br/>touch&nbsp;&nbsp;/tmp/tmp.$addstr.ipf<br/>cat &gt;&gt;/tmp/tmp.$addstr.ipf&lt;&lt;EOF<br/># my local ips<br/>$group_me pass in quick on $loopif_1 all<br/>$group_me pass out quick on $loopif_1 all<br/> <br/> <br/>#$group_me pass in quick on $loopif_2 all keep state<br/>$group_me pass out quick from $pubip_1 to any keep state<br/>$group_me pass out quick from $lanip_1 to any keep state<br/> <br/>#block some in global&nbsp;&nbsp;<br/>#禁止所有不完整的IP数据包&nbsp;&nbsp; <br/>$group_global block in quick all with short&nbsp;&nbsp; <br/>#禁止所有紊乱的数据包<br/>$group_global block in quick all with frag&nbsp;&nbsp; <br/>#禁止所有的只有SYN标志而没有实际内容的TCP包（防止SYN攻击）&nbsp;&nbsp; <br/>#$group_global block in quick on $pubif_1 proto tcp all flags S/SA&nbsp;&nbsp; <br/>#禁止FUP标记的TCP包（防止flood攻击）&nbsp;&nbsp; <br/>$group_global block in quick on $pubif_1 proto tcp all flags FUP<br/> <br/>#table for ssh<br/>#$group_global pass in quick proto tcp from any to any port = 22 keep state<br/> <br/>#table for web<br/>#global set<br/>$group_global pass in&nbsp;&nbsp;quick proto tcp from any to $loopip_1 port = 8180 keep state<br/>$group_global pass in&nbsp;&nbsp;quick proto tcp from any to $loopip_2 port = 8180 keep state<br/> <br/>#wan set<br/>#$group_wan pass in&nbsp;&nbsp;quick proto tcp from any to any port = 80 keep state<br/> <br/>#lan set <br/>$group_lan pass in quick on $lanif_1 proto tcp from any to $lanip_1 port=8180 keep state<br/> <br/>#icmp packet<br/>$group_lan pass in quick on $lanif_1&nbsp;&nbsp;proto icmp all keep state<br/> <br/>#table for self admin<br/>$group_global pass in quick on $pubif_1 from $adminip_1 to any keep state<br/>$group_global pass in quick on $pubif_1 from $adminip_2 to any keep state <br/>$group_global pass in quick on $pubif_1 from $adminip_3 to any keep state<br/>$group_global pass in quick on $pubif_1 from $adminip_4 to any keep state <br/>EOF<br/>&#125;<br/>#################################end#####################################<br/> <br/>#########################formating ipnat table###########################<br/>format_ipnat_table()&#123;<br/>touch&nbsp;&nbsp;/tmp/tmp.$addstr.ipnat<br/>cat &gt; /tmp/tmp.$addstr.ipnat&lt;&lt;EOF<br/># my web mapping<br/>rdr $lanif_1 $lanip_1 port 80 -&gt; $loopip_2&nbsp;&nbsp;port 8180<br/>rdr $pubif_1 $pubip_1 port 80 -&gt; $loopip_1&nbsp;&nbsp;port 8180<br/>#my mysql mapping <br/>rdr $lanif_1 $lanip_1 port 9750 -&gt; $loopip_2&nbsp;&nbsp;port 3306<br/>rdr $pubif_1 $pubip_1 port 9750 -&gt; $loopip_1&nbsp;&nbsp;port 3306<br/> <br/>#my ssh mapping <br/>rdr $lanif_1 $lanip_1 port 100 -&gt; $loopip_2&nbsp;&nbsp;port 22<br/>rdr $pubif_1 $pubip_1 port 100 -&gt; $loopip_1&nbsp;&nbsp;port 22<br/> <br/>EOF<br/>&#125;<br/>#################################end#####################################<br/> <br/>#########################do ipfilter table load##########################<br/>load_ipf_table()&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;touch&nbsp;&nbsp;/tmp/tmp.$addstr.ipf<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unlink /tmp/tmp.$addstr.ipf<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case $run_mod in<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;Mm&#93;&#91;Dd&#93;&#91;Ee&#93;&#91;Bb&#93;&#91;Uu&#93;&#91;Gg&#93;&#124;&#91;Mm&#93;&#91;Rr&#93;&#91;Uu&#93;&#91;Nn&#93;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;format_ipf_manage_table<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;esac<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;format_ipf_table<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sed -e &#039;s/^&#92;(&#91;^a-zA-Z0-9#&#93;*&#92;)&#92;(.*&#92;)/&#92;2/&#039; /tmp/tmp.$addstr.ipf &#124;&#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sed -e &#039;/^#/d&#039;&#124;sed -e &#039;/^$/d&#039;&#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;/tmp/trim.$addstr.ipf<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unlink /tmp/tmp.$addstr.ipf<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cat /tmp/trim.$addstr.ipf&#124;ipf -f -<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case $run_mod in<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;Dd&#93;&#91;Ee&#93;&#91;Bb&#93;&#91;Uu&#93;&#91;Gg&#93;&#124;&#91;Mm&#93;&#91;Dd&#93;&#91;Ee&#93;&#91;Bb&#93;&#91;Uu&#93;&#91;Gg&#93;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;=====================ipf table rules import===============&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cat /tmp/trim.$addstr.ipf<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;=============================end==========================&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;=====================Current ipf rules loaded=============&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ipfstat -hio<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;===============================end========================&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;esac<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unlink /tmp/trim.$addstr.ipf<br/>&#125;<br/>###################################end###################################<br/> <br/> <br/>############################do ipnat table load##########################<br/>load_ipnat_table()&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;format_ipnat_table<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;touch /tmp/trim.$addstr.ipnat<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sed -e &#039;s/^&#92;(&#91;^a-zA-Z0-9#&#93;*&#92;)&#92;(.*&#92;)/&#92;2/&#039; /tmp/tmp.$addstr.ipnat &#124;&#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sed -e &#039;/^#/d&#039;&#124;sed -e &#039;/^$/d&#039;&#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;/tmp/trim.$addstr.ipnat<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unlink /tmp/tmp.$addstr.ipnat<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cat /tmp/trim.$addstr.ipnat&#124;ipnat -f -<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case $run_mod in<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;Dd&#93;&#91;Ee&#93;&#91;Bb&#93;&#91;Uu&#93;&#91;Gg&#93;&#124;&#91;Mm&#93;&#91;Dd&#93;&#91;Ee&#93;&#91;Bb&#93;&#91;Uu&#93;&#91;Gg&#93;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;=====================ipnat table rules import===============&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cat /tmp/trim.$addstr.ipnat<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;=============================end==========================&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;=====================Current ipnat rules loaded=============&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ipnat -l<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;===============================end========================&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;esac<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unlink /tmp/trim.$addstr.ipnat<br/>&#125;<br/>###################################end###################################<br/> <br/>#Start Clean<br/>begin_ipf_clean $&#123;run_mod&#125;<br/>begin_ipnat_clean $&#123;run_mod&#125;<br/>load_ipf_table<br/>load_ipnat_table<br/>echo &quot;===================================================================&quot;<br/>echo &quot;ipf load end mode:$run_mod&quot;<br/><br/></div><br/>Tags - <a href="http://www.freeplug.org/blog/tag.php?tag=ipfilter" rel="tag">ipfilter</a> , <a href="http://www.freeplug.org/blog/tag.php?tag=freebsd" rel="tag">freebsd</a> , <a href="http://www.freeplug.org/blog/tag.php?tag=ports" rel="tag">ports</a> , <a href="http://www.freeplug.org/blog/tag.php?tag=tomcat" rel="tag">tomcat</a> , <a href="http://www.freeplug.org/blog/tag.php?tag=mysql" rel="tag">mysql</a>
]]>
</description>
</item><item>
<link>http://www.freeplug.org/blog/read.php?95</link>
<title><![CDATA[Tor(洋葱头)的巨大改变]]></title> 
<author>hack988 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[all IT information ]]></category>
<pubDate>Wed, 11 Nov 2009 08:41:22 +0000</pubDate> 
<guid>http://www.freeplug.org/blog/read.php?95</guid> 
<description>
<![CDATA[ 
	今天系统重新装了一下，顺便更新了洋葱头的版本，突然发现洋葱头出现了一个巨大的变化，以前与tor配合使用的Privoxy被移出了vidalia-bundle，使用新的Polipo代替，而且以前的Privoxy在第一次安装完成后启动可以成功，但以后开启tor时如不手工启动Privoxy，是需要非常复杂的配置才可以内嵌启动的，而新的Polipo则不一样，直接就可以顺利的启动。<br/><br/>Tags - <a href="http://www.freeplug.org/blog/tag.php?tag=tor" rel="tag">tor</a> , <a href="http://www.freeplug.org/blog/tag.php?tag=%25E6%25B4%258B%25E8%2591%25B1%25E5%25A4%25B4" rel="tag">洋葱头</a> , <a href="http://www.freeplug.org/blog/tag.php?tag=%25E4%25BB%25A3%25E7%2590%2586" rel="tag">代理</a>
]]>
</description>
</item><item>
<link>http://www.freeplug.org/blog/read.php?94</link>
<title><![CDATA[《javascript变量作用域与var赋值》的补充]]></title> 
<author>hack988 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[web collection]]></category>
<pubDate>Thu, 17 Sep 2009 18:06:08 +0000</pubDate> 
<guid>http://www.freeplug.org/blog/read.php?94</guid> 
<description>
<![CDATA[ 
	今天无意发现有位朋友转载了我以前写的一个关于javascript的文章，并做了一些补充，说实在的现在连我自己对javascript作用域的问题都有点模糊了，这篇文章还是几年前研究O'reilly出版局的javascript权威指南时写的，现在看到别人的东西，拿来收藏以下，顺便温故知新。<br/>来源：<a href="http://hi.baidu.com/shiliangshuai/blog/item/741d7031d298fb11eac4afd1.html" target="_blank">http://hi.baidu.com/shiliangshuai/blog/item/741d7031d298fb11eac4afd1.html</a><br/><br/>奇特的javascript变量作用域与var赋值 ：<a href="http://www.freeplug.org/blog/read.php?57" target="_blank">http://www.freeplug.org/blog/read.php?57</a><br/>中讲述了javascript的【变量作用域】的问题：变量的寻找过程是：g函数内是否存在变量z；有则使用，没有则到f函数查找；<br/>f函数内是否有y变量，有则使用无则到全局内查找（top-level）；<br/>和【隐含var 声明】，也就是说在作用域范围内第一次赋值的地方x=1就等同于var x=1。<br/><br/>这里，我要补充一点。就是在函数中省略var进行赋值的时候。并不完全等于加上var的情况。<br/>也就是说，在“函数中”，x=1不等于var x = 1<br/>区别是x=1是在全局范围内声明一个x变量。这个函数被调用后，全局范围内，就多了一个x变量。<br/>var x = 1，是在函数范围内声明一个x变量。出了这个函数就不可见了。<br/><br/>原因我想应该是x=1首先逐层查找，当找到全局范围时发现还没有，就在全局范围内声明了这个变量。<br/>其实，逻辑上讲，应该是在x=1的函数范围内声明这个变量。不知道是不是bug。<br/>而var就显式的指定了，在这个函数范围声明变量。<br/>放置发生这种混乱的方法，文章中已经提到了：就是不要省略var<br/><br/>示例1：<br/>function logdfsdf()<br/>&#123;<br/>//alert("logdfsdf"+i);<br/>i =10;<br/>//alert("logdfsdf_end:"+i);<br/>&#125;<br/>logdfsdf();<br/>alert(i);<br/>结果是11。<br/><br/>示例2：<br/>function logdfsdf()<br/>&#123;<br/>//alert("logdfsdf"+i);<br/>var i =10;<br/>//alert("logdfsdf_end:"+i);<br/>&#125;<br/>logdfsdf();<br/>alert(i);<br/>结果是，变量未声明。<br/><br/>示例3：<br/>function xxxdf()<br/>&#123;<br/>for(i=0;i<3;i++)<br/>&#123;<br/>alert("xxxdf b:"+i);<br/>logdfsdf();<br/>alert("xxxdf e:"+i);<br/>&#125;<br/><br/>alert("xxxdf eeeee:"+i);<br/>&#125;<br/>function logdfsdf()<br/>&#123;<br/>i =10;<br/>&#125;<br/>xxxdf();<br/>结果是xxxdf()循环一次就退出，因为2个函数都在对顶层变量i做操作。<br/>将logdfsdf()中的i=10前边加上var 或xxxdf()中的i=0加上var 都可以使循环正常。<br/>这样就只有一个是全局i了。另一个不是，所以走的是不同的变量。都加var 则都不是全局变量。<br/><br/>------------------------------------------<br/>还有一点需要注意的是：<br/>x=1;<br/>function f()&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp; var x=2;<br/>&nbsp;&nbsp;&nbsp;&nbsp; g();<br/>&nbsp;&nbsp;&nbsp;&nbsp; function g()&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x=3;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&#125;<br/>f();<br/>alert(x);<br/><br/>与<br/>x=1;<br/>function f()&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp; var x=2;<br/>&nbsp;&nbsp;&nbsp;&nbsp; g();<br/>&#125;<br/>f();<br/>alert(x);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp; function g()&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x=3;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>的结果是不同的。<br/>第一个的结果是1。第二个的结果是3。<br/>原因是第一个示例中，g()的上层是f()。而在第二个示例中，g()的上层就是全局了。<br/>可见，确定层次关系的关键是函数编写时的位置而不是调用层次。<br/>-------------------------------------------------------<br/>关于重复的变量声明：如果第二次声明没有赋值，那个这个语句等于相当于没有。如果第二次声明进行了赋值，则相当于赋值。<br/>function testxx()<br/>&#123;<br/>var i = 11;<br/>var i;<br/>alert(i);<br/>&#125;<br/>testxx();<br/>结果是11。<br/><br/>function testxx()<br/>&#123;<br/>var i = 11;<br/>var i=1;<br/>alert(i);<br/>&#125;<br/>testxx();<br/>结果是1。<br/><br/> <br/><br/>Tags - <a href="http://www.freeplug.org/blog/tag.php?tag=javascript" rel="tag">javascript</a> , <a href="http://www.freeplug.org/blog/tag.php?tag=%25E4%25BD%259C%25E7%2594%25A8%25E5%259F%259F" rel="tag">作用域</a> , <a href="http://www.freeplug.org/blog/tag.php?tag=%25E7%25A8%258B%25E5%25BA%258F%25E5%2591%2598" rel="tag">程序员</a>
]]>
</description>
</item><item>
<link>http://www.freeplug.org/blog/read.php?93</link>
<title><![CDATA[关于基于P2P的虚拟局域网软件（hamachi2）]]></title> 
<author>hack988 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[web collection]]></category>
<pubDate>Fri, 11 Sep 2009 17:51:47 +0000</pubDate> 
<guid>http://www.freeplug.org/blog/read.php?93</guid> 
<description>
<![CDATA[ 
	&nbsp;&nbsp;&nbsp;&nbsp; 最近，工作中遇到点问题，需要控制一台公网IP在不断变化且自身只能通过NAT连接外网的机器，于是开始动用google狂搜，首先看到的是国产软件loginany,用loginany为关键词搜索就会发现N多的相关软文广告，看来这个国产软件还是挺有钱的：），试用后发现这软件开用就是moeny，所谓的积分政策什么的实在觉得离谱，初始只给20分钟控制权，唉看来我是没福分支持这个国产软件了，于是继续搜，VNN，logmein出现在我的屏幕上，但VNN实在是生涩难懂直接放弃，logmein嘛装后摸索了半天就是连不上，不过实在欣赏它那种基于flash的控制模式，方便极了：），最后找到了期衍生产品logmein hamachi，这东西说来跟远程控制无关，是个纯粹的VPN软件和VNN类似，但只要解决了内网穿透问题，远程控制软件可是满天飞啊！<br/>&nbsp;&nbsp;&nbsp;&nbsp;起初研究的是hamachi 1.x版本有些不太明白，虽然两台机器连通了，但似乎客户端ID分配是每次全新安装自动生成的，所以如果你使用它创建了一个网络，记得务必在未卸载前将其删除，或赋予其他成员管理权限，不然以后再想建同名的网络就难了。另外千万不要在设置里面乱点评估，要知道一评估你就退不回免费版本了，除非达到评估时间（30天），这样会给你带来很多麻烦，当然你也可以把它的配置文件清空，重新生成ID不过这样实在有点麻烦，也是在浪费服务器资源。<br/>1.X多的操作就不介绍了，操作很简单。<br/>升级到2.X后的突然发现麻烦不断：（<br/>第一个麻烦就是系统启动后不会自动启动，这可是个大问题目前已初步研究出解决方法，但觉得应该还有更好的方法，待研究清楚后一并记录：）<br/><br/>第二个麻烦：卸载后重新安装找不到网络适配器<br/>在此过程中，客户端可看到网络内的用户，但会出现感叹号提示无法连接，尝试从注册表下手清理，清理方法与清理本地连接2方法类似，具体方法可在GOOGLE内搜索“regedit 本地连接2”关键字立刻就有结果：）<br/>但清除后安装依然找不到适配器，硬件管理器里面也没有设备实在觉的非常奇怪，于是再次借用Google结果找到了这样一个官方说明<br/><a href="http://logmeinwiki.com/wiki/Hamachi:Failed_to_Connect_to_Hamachi_Network_Adapter" target="_blank">http://logmeinwiki.com/wiki/Hamachi:Failed_to_Connect_to_Hamachi_Network_Adapter</a><br/>从Notes提及的步骤来看应该是添加一个键值就可以了，但在我的注册表中却发现除了“Descriptions”下一个键名叫“Hamachi Network Interface”的数据，其他什么都没有，于是反其道而行之del!!（大家注意删除前记得备份注册表哦，不然删挂了我可不负责），在此重新安装hamachi，嘿嘿重起后适配器回来了。<br/><br/><br/>Tags - <a href="http://www.freeplug.org/blog/tag.php?tag=hamachi" rel="tag">hamachi</a> , <a href="http://www.freeplug.org/blog/tag.php?tag=%25E8%259B%25A4%25E8%259F%2586%25E6%25B1%25A0" rel="tag">蛤蟆池</a> , <a href="http://www.freeplug.org/blog/tag.php?tag=vpn" rel="tag">vpn</a> , <a href="http://www.freeplug.org/blog/tag.php?tag=p2p" rel="tag">p2p</a> , <a href="http://www.freeplug.org/blog/tag.php?tag=%25E8%2599%259A%25E6%258B%259F%25E5%258C%2596%25E5%25B1%2580%25E5%259F%259F%25E7%25BD%2591" rel="tag">虚拟化局域网</a>
]]>
</description>
</item><item>
<link>http://www.freeplug.org/blog/read.php?92</link>
<title><![CDATA[php 5.3以后也有自定义配置了：）]]></title> 
<author>hack988 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[php(program)]]></category>
<pubDate>Wed, 26 Aug 2009 21:33:27 +0000</pubDate> 
<guid>http://www.freeplug.org/blog/read.php?92</guid> 
<description>
<![CDATA[ 
	http://us3.php.net/manual/en/configuration.file.per-user.php<br/>突然翻到这篇说明，虽然需要加载一些扩展，但实在难得一见的改变，以前要修改参数只能在php.ini或者php代码中修改现在多了一种与htaccess兼容的形式：），可惜目前只支持CGI/FastCGI SAPI<br/><br/>不过这个设计应该来自于apache的思路：）<br/><br/>仔细看来跟ini_set的作用范围相同，但同时也带来了更大的安全问题，如果别人读取到这个文件，怎么办？看来以后做服务器配置时也要相应的对这个文件做屏蔽了：）<br/>Tags - <a href="http://www.freeplug.org/blog/tag.php?tag=.user.ini" rel="tag">.user.ini</a> , <a href="http://www.freeplug.org/blog/tag.php?tag=ini_set" rel="tag">ini_set</a> , <a href="http://www.freeplug.org/blog/tag.php?tag=apache" rel="tag">apache</a>
]]>
</description>
</item><item>
<link>http://www.freeplug.org/blog/read.php?91</link>
<title><![CDATA[php读写文件比较(fread,fwrite,file_put_contents,file_get_contents)]]></title> 
<author>hack988 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[php(program)]]></category>
<pubDate>Wed, 26 Aug 2009 21:25:35 +0000</pubDate> 
<guid>http://www.freeplug.org/blog/read.php?91</guid> 
<description>
<![CDATA[ 
	今天发现一个快速开发库叫做kiwiphp,其号称达到原生php 的 60%的处理速度，于是拿来翻阅了一下代码，突然发现在php5.1以后php已提供了非常完整的文件读写函数，无需自行使用fopen,fwrite与fread等函数，但效率是否真的比使用传统函数高呢？带着这个疑问我做了测试<br/><div class="code"><br/>$round=100;<br/>$mtime = explode(&#039; &#039;, microtime());<br/>$starttime = $mtime&#91;1&#93; + $mtime&#91;0&#93;;<br/>for($i=0;$i&lt;$round;$i++)&#123;<br/>&nbsp;&nbsp;writetofile(&quot;./testwrite&quot;,&quot;1234567890&quot;);<br/>&#125;<br/>$mtime = explode(&#039; &#039;, microtime());<br/>$endtime = $mtime&#91;1&#93; + $mtime&#91;0&#93;;<br/>echo &quot;write 1 in :&quot;.($endtime-$starttime).&quot;&lt;BR/&gt;&quot;;<br/><br/>$mtime = explode(&#039; &#039;, microtime());<br/>$starttime = $mtime&#91;1&#93; + $mtime&#91;0&#93;;<br/>for($i=0;$i&lt;$round;$i++)&#123;<br/>&nbsp;&nbsp;writetofile(&quot;./testwriteappend&quot;,&quot;1234567890&quot;,&quot;ab+&quot;);<br/>&#125;<br/>$mtime = explode(&#039; &#039;, microtime());<br/>$endtime = $mtime&#91;1&#93; + $mtime&#91;0&#93;;<br/>echo &quot;write 2 in :&quot;.($endtime-$starttime).&quot;&lt;BR/&gt;&quot;;<br/><br/><br/>$mtime = explode(&#039; &#039;, microtime());<br/>$starttime = $mtime&#91;1&#93; + $mtime&#91;0&#93;;<br/>for($i=0;$i&lt;$round;$i++)&#123;<br/>&nbsp;&nbsp;readstream(&quot;./testwriteappend&quot;,10,&quot;rb&quot;,1024);<br/>&#125;<br/>$mtime = explode(&#039; &#039;, microtime());<br/>$endtime = $mtime&#91;1&#93; + $mtime&#91;0&#93;;<br/>echo &quot;read 1 in :&quot;.($endtime-$starttime).&quot;&lt;BR/&gt;&quot;;<br/><br/><br/>$mtime = explode(&#039; &#039;, microtime());<br/>$starttime = $mtime&#91;1&#93; + $mtime&#91;0&#93;;<br/>for($i=0;$i&lt;$round;$i++)&#123;<br/>&nbsp;&nbsp;file_put_contents(&quot;./testwritef&quot;,&quot;1234567890&quot;, LOCK_EX);<br/>&#125;<br/>$mtime = explode(&#039; &#039;, microtime());<br/>$endtime = $mtime&#91;1&#93; + $mtime&#91;0&#93;;<br/>echo &quot;writef 1 in :&quot;.($endtime-$starttime).&quot;&lt;BR/&gt;&quot;;<br/><br/>$mtime = explode(&#039; &#039;, microtime());<br/>$starttime = $mtime&#91;1&#93; + $mtime&#91;0&#93;;<br/>for($i=0;$i&lt;$round;$i++)&#123;<br/>&nbsp;&nbsp;file_put_contents(&quot;./testwritefappend&quot;,&quot;1234567890&quot;,FILE_APPEND &#124; LOCK_EX);<br/>&#125;<br/>$mtime = explode(&#039; &#039;, microtime());<br/>$endtime = $mtime&#91;1&#93; + $mtime&#91;0&#93;;<br/>echo &quot;writef 2 in :&quot;.($endtime-$starttime).&quot;&lt;BR/&gt;&quot;;<br/><br/>$mtime = explode(&#039; &#039;, microtime());<br/>$starttime = $mtime&#91;1&#93; + $mtime&#91;0&#93;;<br/>for($i=0;$i&lt;$round;$i++)&#123;<br/>&nbsp;&nbsp;file_get_contents(&quot;./testwritefappend&quot;,FILE_BINARY,NULL,10,1024);<br/>&#125;<br/>$mtime = explode(&#039; &#039;, microtime());<br/>$endtime = $mtime&#91;1&#93; + $mtime&#91;0&#93;;<br/>echo &quot;readf 1 in :&quot;.($endtime-$starttime).&quot;&lt;BR/&gt;&quot;;<br/><br/><br/><br/>function writetofile($filename,$data,$method=&quot;wb+&quot;)&#123;<br/>&nbsp;&nbsp;//touch($filename);<br/>&nbsp;&nbsp;$handle=fopen($filename,$method);<br/>&nbsp;&nbsp;if(!$handle)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;return false;<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;flock($handle,LOCK_EX);<br/>&nbsp;&nbsp;fputs($handle,$data);<br/>&nbsp;&nbsp;//flock($handle,LOCK_UN);<br/>&nbsp;&nbsp;fclose($handle);<br/>&nbsp;&nbsp;return true;<br/>&#125;<br/>function readstream($filename,$seek=0,$method=&quot;rb&quot;,$toread=1024)&#123;<br/>&nbsp;&nbsp;if($handle=fopen($filename,$method))&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$seek&gt;0 &amp;&amp; fseek($handle,$seek);//,SEEK_CUR);<br/>&nbsp;&nbsp;&nbsp;&nbsp;//flock($handle,LOCK_SH);<br/>&nbsp;&nbsp;&nbsp;&nbsp;$size=filesize($filename);<br/>&nbsp;&nbsp;&nbsp;&nbsp;if($size)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$size= $size&gt;$toread ? $toread : $size;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$filedata =fread($handle,$size);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;else&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(!feof($handle))&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$filedata .=fread($handle,1024);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(strlen($filedata)&gt;=$toread)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;//flock($handle,LOCK_UN);<br/>&nbsp;&nbsp;&nbsp;&nbsp;fclose($handle);<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;return $filedata;<br/>&#125;<br/></div><br/>经过反复运行这组函数，我发现其实，php5提供的整合函数并不占多大优势，传统方式偶尔会快过php5提供的整合函数。<br/><br/>其中一组结果<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>write 1 in :0.0020349025726318<br/>write 2 in :0.0018160343170166<br/>read 1 in :0.00025391578674316<br/>writef 1 in :0.0017929077148438<br/>writef 2 in :0.0018231868743896<br/>readf 1 in :0.00019192695617676<br/></div></div><br/>实际上也就快那么0.001,0.0001秒左右。看来php自身的fread,fopen等函数已经非常优秀，即使与C相比也不会相差多少（php5提供的整合函数实际上就是将fopen,fread等过程较由php自身也就是c编写的函数来完成）。<br/>不过减少了很多手工需要些的代码，实在是不错的选择：）<br/>Tags - <a href="http://www.freeplug.org/blog/tag.php?tag=file_put_contents" rel="tag">file_put_contents</a> , <a href="http://www.freeplug.org/blog/tag.php?tag=file_get_contents" rel="tag">file_get_contents</a> , <a href="http://www.freeplug.org/blog/tag.php?tag=fread" rel="tag">fread</a> , <a href="http://www.freeplug.org/blog/tag.php?tag=fwrite" rel="tag">fwrite</a> , <a href="http://www.freeplug.org/blog/tag.php?tag=fopen" rel="tag">fopen</a>
]]>
</description>
</item><item>
<link>http://www.freeplug.org/blog/read.php?90</link>
<title><![CDATA[妥善处理正则表达式的贪婪模式]]></title> 
<author>hack988 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[php(program)]]></category>
<pubDate>Tue, 25 Aug 2009 11:28:21 +0000</pubDate> 
<guid>http://www.freeplug.org/blog/read.php?90</guid> 
<description>
<![CDATA[ 
	昨天订阅了php的maillist，看到一位朋友问到一个有趣的正则，看到这个正则想起以前也遇到过同样的问题，花了很久才弄出来。于是打算回答一下，结果发现原来的方法我也不记得了。折腾了半天终于写出一段代码.<br/>问题原文<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/><br/>>>>>&nbsp;&nbsp;Lets assume I have the string "cats i&nbsp;&nbsp;saw a cat and a dog"<br/>>>>>&nbsp;&nbsp;i want to strip everything except "cat" and "dog" so the result will be<br/>>>>>&nbsp;&nbsp;"catcatdog",<br/>>>>>&nbsp;&nbsp;using preg_replace.<br/>>>>><br/>>>>><br/>>>>>&nbsp;&nbsp;I've tried something like /[^(dog&#124;cat)]+/ but no success<br/>>>>><br/>>>>&nbsp;&nbsp;> What should I do?<br/><br/></div></div><br/>我的实现代码<br/><div class="code"><br/>$str=&quot;cats i&nbsp;&nbsp;saw a cat and a dog&quot;;<br/>$str1=preg_replace(&quot;/.*?(dog&#124;cat).*?/&quot;,&#039;call_replace&#039;,$str);<br/>echo $str.&quot;&lt;BR/&gt;&quot;;<br/>echo $str1.&quot;&lt;BR/&gt;&quot;;<br/><br/>function call_replace($match)&#123;<br/>&nbsp;&nbsp;if(in_array($match&#91;0&#93;,array(&#039;cat&#039;,&#039;dog&#039;)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;return $match&#91;0&#93;;<br/>&nbsp;&nbsp;else<br/>&nbsp;&nbsp;&nbsp;&nbsp;return &quot;&quot;;<br/>&#125;<br/></div><br/>由于之前测试过preg_replace,preg_replace_callback的效率区别，因此特意使用这样的方式替换。<br/>但没想到，组内有高人写出了更为效率惊人的代码，实在是佩服，来看看代码：<br/><div class="code"><br/>//我的实现<br/>$starttime = $mtime&#91;1&#93; + $mtime&#91;0&#93;;<br/>for($i=0;$i&lt;1000;$i++)&#123;<br/>&nbsp;&nbsp;$str=&quot;cats i&nbsp;&nbsp;saw a cat and a dog&quot;;<br/>&nbsp;&nbsp;$str1=preg_replace(&quot;/.*?(dog&#124;cat).*?/&quot;,&#039;call_replace&#039;,$str);<br/>&#125;<br/>$mtime = explode(&#039; &#039;, microtime());<br/>$end = $mtime&#91;1&#93; + $mtime&#91;0&#93;;<br/>echo $end-$starttime.&quot;&lt;br/&gt;&quot;;<br/><br/>//别人的实现<br/>$mtime = explode(&#039; &#039;, microtime());<br/>$starttime = $mtime&#91;1&#93; + $mtime&#91;0&#93;;<br/>for($i=0;$i&lt;1000;$i++)&#123;<br/>&nbsp;&nbsp;$s = &quot;cats i&nbsp;&nbsp;saw a cat and a dog&quot;;<br/>&nbsp;&nbsp;$r = preg_replace(&#039;#.*?(cat&#124;dog).*?#&#039;, &#039;&#92;1&#039;, $s);<br/>&#125;<br/>$mtime = explode(&#039; &#039;, microtime());<br/>$end = $mtime&#91;1&#93; + $mtime&#91;0&#93;;<br/>echo $end-$starttime.&quot;&lt;br/&gt;&quot;;<br/><br/><br/>function call_replace($match)&#123;<br/>&nbsp;&nbsp;if(in_array($match&#91;0&#93;,array(&#039;cat&#039;,&#039;dog&#039;)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;return $match&#91;0&#93;;<br/>&nbsp;&nbsp;else<br/>&nbsp;&nbsp;&nbsp;&nbsp;return &quot;&quot;;<br/>&#125;<br/></div><br/>实现结果如下：<br/><br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>0.35762286186218<br/>0.34786200523376<br/></div></div><br/>我刷新了N次，结果每次都比我快那么0.01秒,实在是厉害，下面总结一下别人的正则表达式的精妙之处。<br/>该正则实际匹配内容组合为<br/>xxxxdog<br/>xxxxcat<br/>catxxxx<br/>dogxxxx<br/>xxxxcatxxxxxx<br/>xxxxdogxxxxx<br/>按照以上几种方式正则将进行匹配。<br/>其实该正则表达式可写为<br/><div class="code"><br/>#.*(cat&#124;dog).*#<br/></div><br/>但如果你这么用会怎样？哈哈恭喜你，你从兔子变成乌龟了！<br/>那么为什么一个?号有这么大作用呢？<br/>其实道理很简单，在搜索到匹配组合时正则表达式默认情况下会继续搜索字符串寻找匹配，那么如果匹配的次数为2次那么实际搜索的时间将是2次完整的字符串历遍。<br/>而加上?号就完全不同了，2次结过并不会是2次完整的字符串历遍。<br/><br/>Tags - <a href="http://www.freeplug.org/blog/tag.php?tag=%25E8%25B4%25AA%25E5%25A9%25AA%25E6%25A8%25A1%25E5%25BC%258F" rel="tag">贪婪模式</a> , <a href="http://www.freeplug.org/blog/tag.php?tag=%25E6%25AD%25A3%25E5%2588%2599%25E8%25A1%25A8%25E8%25BE%25BE%25E5%25BC%258F" rel="tag">正则表达式</a> , <a href="http://www.freeplug.org/blog/tag.php?tag=preg_replace" rel="tag">preg_replace</a> , <a href="http://www.freeplug.org/blog/tag.php?tag=preg_replace_callback" rel="tag">preg_replace_callback</a>
]]>
</description>
</item>
</channel>
</rss>