<?xml version="1.0" encoding="gb2312"?>
<rss version="2.0">
   <channel>
      <title>windtear 追求完美</title>
      <link>http://windtear.net/</link>
      <description>计算机技术 网络技术 互联网应用学习研究 Linux Windows IT技术</description>
      <language>en</language>
      <copyright>Copyright 2008</copyright>
      <lastBuildDate>Sat, 18 Oct 2008 19:10:17 +0800</lastBuildDate>
      <generator>http://www.sixapart.com/movabletype/</generator>
      <docs>http://blogs.law.harvard.edu/tech/rss</docs> 

            <item>
         <title>pac 代理脚本与 IE Firefox Chrome 浏览器</title>
         <description><![CDATA[<p><a href="http://creativecommons.org/licenses/by-nc-sa/2.5/cn/">版权声明</a>：可以任意转载，转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。<br />
<a href="http://windtear.net/2008/10/proxy_pac_ie_firefox_chrome.html">http://windtear.net/2008/10/proxy_pac_ie_firefox_chrome.html</a></p>
<p><a href="http://proxy.ipcn.org/">ipcn</a> 提供 pac 代理服务  需要认证<br />
然后发现来自"WinHttp-Autoproxy-Service/5.1" 请求 .pac 特别多 也不含压缩头</p>

<p>Google 了下发现<br />
<a href="http://code.google.com/p/chromium/issues/detail?id=1684">http://code.google.com/p/chromium/issues/detail?id=1684</a><br />
<a href="http://msdn.microsoft.com/en-us/library/aa383153(VS.85).aspx">http://msdn.microsoft.com/en-us/library/aa383153(VS.85).aspx</a><br />
说是调用WinHttpGetProxyForUrl时把fAutoLogonIfChallenged设成false就没事了<br />
WinHTTP AutoProxy 由于设的是 true 所以每次都去请求:(</p>

<p>然后又观察了 IE Firefox Chrome 等处理 pac 的情况<br />
IE GET pac 不带压缩头 带原始的 User-Agent：<br />
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Win32)<br />
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Win32)<br />
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Win32)<br />
还有 Accept: */*  和 Cookie 之前如果已cache的话 还会带上 If-Modified-Since</p>

<p>Firefox 带的头很全 包括压缩头 Accept-Encoding: gzip,deflate 和 no-cache</p>

<p>Google Chrome 比较懒 不带压缩头 连 User-Agent 头都没有</p>

<p>pac 代理脚本这块可以用一些小技巧 比如<br />
function FindProxyForURL(url, host)<br />
if - else if - else<br />
var lchost = host.toLowerCase();<br />
var lcurl = url.toLowerCase();<br />
(url.substring(0, 4) != "http")<br />
isPlainHostName(host)<br />
dnsDomainIs(host,".cn")<br />
!isResolvable(host)<br />
rip = dnsResolve(host);<br />
isInNet(rip,"192.168.0.0","255.255.0.0")<br />
(shExpMatch(host, "*sixxs.org"))<br />
return "PROXY test.proxy.ipcn.org:3128; DIRECT";<br />
详见 Netscape 的帮助 proxy-live.html<br />
关于 MIME type 推荐的是 application/x-ns-proxy-autoconfig 不过 text/plain 也都干活</p>

<p>遇到的问题有：<br />
如果pac下载不全 每次调用 isInNet(host, ...) 都会发起dns查询 改成rip就好了<br />
Vista Win2003 的 WinHTTP AutoProxy 服务会每个请求都去刷 pac<br />
Web Proxy Auto-Discovery (WPAD) protocol： (/wpad.dat)<br />
DHCP option 252<br />
option wpad code 252 = text;<br />
option wpad "http://192.168.1.1/proxy.pac";</p>

<p>Redirect /wpad.dat http://192.168.1.1/proxy.pac</p>

<p>代理过程：<br />
需认证的话 第一次返回 407(ERR_CACHE_ACCESS_DENIED)<br />
给出 Proxy-Authenticate: Basic realm="ipcn proxy server"<br />
认证通过后 如果不允许返回 403(ERR_ACCESS_DENIED)<br />
如果允许则以后带上 Proxy-Authorization: Basic ... 头正常使用代理<br />
</p>]]></description>
         <link>http://windtear.net/2008/10/proxy_pac_ie_firefox_chrome.html</link>
         <guid>http://windtear.net/2008/10/proxy_pac_ie_firefox_chrome.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">浏览器</category>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">pac</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">proxy</category>
        
         <pubDate>Sat, 18 Oct 2008 19:10:17 +0800</pubDate>
      </item>
            <item>
         <title>2008年最新版个人所得税计算器3 (7月后有效 基数9966 公积金比例为12% 养老医保调整后)</title>
         <description><![CDATA[<p><a href="http://creativecommons.org/licenses/by-nc-sa/2.5/cn/">版权声明</a>：可以任意转载，转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。<br />
<a href="http://windtear.net/2008/08/personal_income_tax_calculator_2008v3.html">http://windtear.net/2008/08/personal_income_tax_calculator_2008v3.html</a></p>
<pre>2008年最新版个人所得税计算器3 (7月后有效 基数9966 公积金比例为12% 养老医保调整后)

<p>输入 税前工资 或 应付工资 其他自动算出来显示</p>

<p>税前工资： <input id="beforeSalary" name="beforeSalary" type=text value="" onkeyup="return calcTax(2);" onchange="return calcTax(2);"> *<br />
应付工资： <input id="shouldSalary" name="shouldSalary" type=text value="" onkeyup="return calcTax(1);" onchange="return calcTax(1);"> * (等于税前工资减去三险一金)<br />
公积金比例： <input id="gjjratio1" name="gjjratio" type="radio" value="8" onclick="return calcTax(2);">8% <input id="gjjratio2" name="gjjratio" type="radio" value="10" onclick="return calcTax(2);">10% <input id="gjjratio3" name="gjjratio" type="radio" value="12" onclick="return calcTax(2);" checked>12%<br />
所得税：   <input id="tax" name="tax" type=text><br />
税后工资： <input id="resultSalary" name="resultSalary" type=text> (实际到手的净收入)</p>

<p>养老保险： <input id="yanglao" name="yanglao" type=text> (<a href="http://windtear.net/archives/2006/06/02/000996.html">每年4月份调整</a>：按8%算 )<br />
医疗保险： <input id="yibao" name="yibao" type=text> (<a href="http://windtear.net/archives/2006/06/02/000996.html">每年3月份调整</a>：按2%算 包括3元互助)<br />
公积金：   <input id="gongjijin" name="gongjijin" type=text> (<a href="http://windtear.net/archives/2006/06/02/000996.html">每年7月份调整</a>：按12%算 供参考 以前是10% 8%)<br />
失业保险： <input id="shiye" name="shiye" type=text> (<a href="http://windtear.net/archives/2006/06/02/000996.html">每年4月份调整</a>：按0.5%算)<br />
税率：     <input id="taxRatio" name="taxRatio" type=text><br />
调节数：   <input id="taxAdjust" name="taxAdjust" type=text><br />
<input type=submit value="计算" onclick="return calcTax();"></p>

<p>转载请注明出处 <a href="http://windtear.net/2008/08/personal_income_tax_calculator_2008v2.html">http://windtear.net/2008/08/personal_income_tax_calculator_2008v2.html</a><br />
过去几年的个人所得税计算器：<br />
<a href="http://windtear.net/2008/08/personal_income_tax_calculator_2008v3.html">2008年最新版个人所得税计算器3 (7月后有效 基数9966 公积金比例为12% 养老医保调整后)</a><br />
<a href="http://windtear.net/2008/08/personal_income_tax_calculator_2008v2.html">2008年最新版个人所得税计算器2 (7月后有效 基数9966 公积金比例为12% 养老医保调整前)</a><br />
<a href="http://windtear.net/2008/02/personal_income_tax_calculator_2008v1.html">2008年最新版个人所得税计算器1 (3月后有效 起征点调整为2000元后)</a><br />
<a href="http://windtear.net/archives/2007/08/01/001262.html">2007最新版个人所得税计算器2 (7月后有效 社保公积金调整后)</a><br />
<a href="http://windtear.net/archives/2007/05/16/001233.html">2007最新版个人所得税计算器1 (7月前有效 社保调整后 公积金调整前)</a><br />
<a href="http://windtear.net/archives/2006/01/04/000876.html">2006最新版个人所得税计算器</a><br />
<a href="http://windtear.net/archives/2005/10/15/000798.html">2005个人所得税计算器</a></p>

<p><script type="text/javascript"><!--<br />
function calcTax(a) {<br />
switch (a) {<br />
	case 1:<br />
	var shouldSalary=parseFloat(document.getElementById("shouldSalary").value);<br />
	if (shouldSalary>0) {<br />
	document.getElementById("beforeSalary").value="";<br />
	document.getElementById("yanglao").value="";<br />
	document.getElementById("yibao").value="";<br />
	document.getElementById("gongjijin").value="";<br />
	document.getElementById("shiye").value="";<br />
	}<br />
	break;<br />
	case 2:<br />
	var beforeSalary=parseFloat(document.getElementById("beforeSalary").value);<br />
	if (beforeSalary>=9966) {<br />
		var yanglao=797.28;<br />
		var yibao=202.32;<br />
		var gongjijin=1196;<br />
		if(document.getElementById("gjjratio1").checked==true) { gongjijin = 797; }<br />
		else if(document.getElementById("gjjratio2").checked==true) { gongjijin = 997; }<br />
		var windtear=1;<br />
		var shiye=49.83;<br />
		var shouldSalary=parseFloat(beforeSalary-yanglao-yibao-gongjijin-shiye).toFixed(2);<br />
	} else {<br />
		var yanglao=parseFloat(beforeSalary*0.08).toFixed(2);<br />
		var yibao=parseFloat(beforeSalary*0.02+3).toFixed(2);<br />
		var gongjijin=parseFloat(beforeSalary*0.12).toFixed(0);<br />
		if (document.getElementById("gjjratio1").checked==true) { gongjijin = parseFloat(beforeSalary*0.08).toFixed(0); }<br />
		else if (document.getElementById("gjjratio2").checked==true) { gongjijin = parseFloat(beforeSalary*0.1).toFixed(0); }<br />
		var windtear=1;<br />
		var shiye=parseFloat(beforeSalary*0.005).toFixed(2);<br />
		var shouldSalary=parseFloat(beforeSalary-yanglao-yibao-gongjijin-shiye).toFixed(2);<br />
	}<br />
	if (shouldSalary>0) {<br />
	document.getElementById("shouldSalary").value=shouldSalary;<br />
	document.getElementById("yanglao").value=yanglao;<br />
	document.getElementById("yibao").value=yibao;<br />
	document.getElementById("gongjijin").value=gongjijin;<br />
	document.getElementById("shiye").value=shiye;<br />
	}<br />
	break;			<br />
}</p>

<p>if (shouldSalary>0) {<br />
var taxSalary=(shouldSalary-2000);<br />
var taxRatio=0;<br />
var taxAdjust=0;</p>

<p>if (taxSalary<=0) {taxRatio=0;taxAdjust=0;}<br />
else if (taxSalary>0&&taxSalary<=500) {taxRatio=0.05;taxAdjust=0;}<br />
else if (taxSalary>500&&taxSalary<=2000) {taxRatio=0.10;taxAdjust=25;}<br />
else if (taxSalary>2000&&taxSalary<=5000) {taxRatio=0.15;taxAdjust=125;}<br />
else if (taxSalary>5000&&taxSalary<=20000) {taxRatio=0.20;taxAdjust=375;}<br />
else if (taxSalary>20000&&taxSalary<=40000) {taxRatio=0.25;taxAdjust=1375;}<br />
else if (taxSalary>40000&&taxSalary<=60000) {taxRatio=0.30;taxAdjust=3375;}<br />
else if (taxSalary>60000&&taxSalary<=80000) {taxRatio=0.35;taxAdjust=6375;}<br />
else if (taxSalary>80000&&taxSalary<=100000) {taxRatio=0.40;taxAdjust=10375;}<br />
else if (taxSalary>100000) {taxRatio=0.45;taxAdjust=15375;}<br />
var tax=parseFloat(taxSalary*taxRatio-taxAdjust).toFixed(2);</p>

<p>var resultSalary=parseFloat(shouldSalary-tax).toFixed(2);</p>

<p>document.getElementById("taxRatio").value=taxRatio;<br />
document.getElementById("taxAdjust").value=taxAdjust;<br />
document.getElementById("tax").value=tax;<br />
document.getElementById("resultSalary").value=resultSalary;<br />
}<br />
}<br />
document.getElementById("beforeSalary").focus()<br />
// --></script><br />
</pre></p>]]></description>
         <link>http://windtear.net/2008/08/personal_income_tax_calculator_2008v3.html</link>
         <guid>http://windtear.net/2008/08/personal_income_tax_calculator_2008v3.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">杂项</category>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">个人所得税</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">计算器</category>
        
         <pubDate>Tue, 19 Aug 2008 13:29:27 +0800</pubDate>
      </item>
            <item>
         <title>2008年最新版个人所得税计算器2 (7月后有效 基数9966 公积金比例为12% 养老医保调整前)</title>
         <description><![CDATA[<p><a href="http://creativecommons.org/licenses/by-nc-sa/2.5/cn/">版权声明</a>：可以任意转载，转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。<br />
<a href="http://windtear.net/2008/08/personal_income_tax_calculator_2008v2.html">http://windtear.net/2008/08/personal_income_tax_calculator_2008v2.html</a></p>
<pre>2008年最新版个人所得税计算器2 (7月后有效 基数9966 公积金比例为12% 养老医保调整前)

<p>输入 税前工资 或 应付工资 其他自动算出来显示</p>

<p>税前工资： <input id="beforeSalary" name="beforeSalary" type=text value="" onkeyup="return calcTax(2);" onchange="return calcTax(2);"> *<br />
应付工资： <input id="shouldSalary" name="shouldSalary" type=text value="" onkeyup="return calcTax(1);" onchange="return calcTax(1);"> * (等于税前工资减去三险一金)<br />
公积金比例： <input id="gjjratio1" name="gjjratio" type="radio" value="8" onclick="return calcTax(2);">8% <input id="gjjratio2" name="gjjratio" type="radio" value="10" onclick="return calcTax(2);">10% <input id="gjjratio3" name="gjjratio" type="radio" value="12" onclick="return calcTax(2);" checked>12%<br />
所得税：   <input id="tax" name="tax" type=text><br />
税后工资： <input id="resultSalary" name="resultSalary" type=text> (实际到手的净收入)</p>

<p>养老保险： <input id="yanglao" name="yanglao" type=text> (<a href="http://windtear.net/archives/2006/06/02/000996.html">每年4月份调整</a>：按8%算 )<br />
医疗保险： <input id="yibao" name="yibao" type=text> (<a href="http://windtear.net/archives/2006/06/02/000996.html">每年3月份调整</a>：按2%算 包括3元互助)<br />
公积金：   <input id="gongjijin" name="gongjijin" type=text> (<a href="http://windtear.net/archives/2006/06/02/000996.html">每年7月份调整</a>：按12%算 供参考 以前是10% 8%)<br />
失业保险： <input id="shiye" name="shiye" type=text> (<a href="http://windtear.net/archives/2006/06/02/000996.html">每年4月份调整</a>：按0.5%算)<br />
税率：     <input id="taxRatio" name="taxRatio" type=text><br />
调节数：   <input id="taxAdjust" name="taxAdjust" type=text><br />
<input type=submit value="计算" onclick="return calcTax();"></p>

<p>转载请注明出处 <a href="http://windtear.net/2008/08/personal_income_tax_calculator_2008v2.html">http://windtear.net/2008/08/personal_income_tax_calculator_2008v2.html</a><br />
过去几年的个人所得税计算器：<br />
<a href="http://windtear.net/2008/08/personal_income_tax_calculator_2008v3.html">2008年最新版个人所得税计算器3 (7月后有效 基数9966 公积金比例为12% 养老医保调整后)</a><br />
<a href="http://windtear.net/2008/08/personal_income_tax_calculator_2008v2.html">2008年最新版个人所得税计算器2 (7月后有效 基数9966 公积金比例为12% 养老医保调整前)</a><br />
<a href="http://windtear.net/2008/02/personal_income_tax_calculator_2008v1.html">2008年最新版个人所得税计算器1 (3月后有效 起征点调整为2000元后)</a><br />
<a href="http://windtear.net/archives/2007/08/01/001262.html">2007最新版个人所得税计算器2 (7月后有效 社保公积金调整后)</a><br />
<a href="http://windtear.net/archives/2007/05/16/001233.html">2007最新版个人所得税计算器1 (7月前有效 社保调整后 公积金调整前)</a><br />
<a href="http://windtear.net/archives/2006/01/04/000876.html">2006最新版个人所得税计算器</a><br />
<a href="http://windtear.net/archives/2005/10/15/000798.html">2005个人所得税计算器</a></p>

<p><script type="text/javascript"><!--<br />
function calcTax(a) {<br />
switch (a) {<br />
	case 1:<br />
	var shouldSalary=parseFloat(document.getElementById("shouldSalary").value);<br />
	if (shouldSalary>0) {<br />
	document.getElementById("beforeSalary").value="";<br />
	document.getElementById("yanglao").value="";<br />
	document.getElementById("yibao").value="";<br />
	document.getElementById("gongjijin").value="";<br />
	document.getElementById("shiye").value="";<br />
	}<br />
	break;<br />
	case 2:<br />
	var beforeSalary=parseFloat(document.getElementById("beforeSalary").value);<br />
	if (beforeSalary>=9966) {<br />
		var yanglao=721.92;<br />
		var yibao=183.48;<br />
		var gongjijin=1196;<br />
		if(document.getElementById("gjjratio1").checked==true) { gongjijin = 797; }<br />
		else if(document.getElementById("gjjratio2").checked==true) { gongjijin = 997; }<br />
		var windtear=1;<br />
		var shiye=45.12;<br />
		var shouldSalary=parseFloat(beforeSalary-yanglao-yibao-gongjijin-shiye).toFixed(2);<br />
	} else {<br />
		var yanglao=parseFloat(beforeSalary*0.08).toFixed(2);<br />
		if (yanglao>721.92) { yanglao=721.92; }<br />
		var yibao=parseFloat(beforeSalary*0.02+3).toFixed(2);<br />
		if (yibao>183.48) { yibao=183.48; }<br />
		var gongjijin=parseFloat(beforeSalary*0.12).toFixed(0);<br />
		if (document.getElementById("gjjratio1").checked==true) { gongjijin = parseFloat(beforeSalary*0.08).toFixed(0); }<br />
		else if (document.getElementById("gjjratio2").checked==true) { gongjijin = parseFloat(beforeSalary*0.1).toFixed(0); }<br />
		var windtear=1;<br />
		var shiye=parseFloat(beforeSalary*0.005).toFixed(2);<br />
		if (shiye>45.12) { shiye=45.12; }<br />
		var shouldSalary=parseFloat(beforeSalary-yanglao-yibao-gongjijin-shiye).toFixed(2);<br />
	}<br />
	if (shouldSalary>0) {<br />
	document.getElementById("shouldSalary").value=shouldSalary;<br />
	document.getElementById("yanglao").value=yanglao;<br />
	document.getElementById("yibao").value=yibao;<br />
	document.getElementById("gongjijin").value=gongjijin;<br />
	document.getElementById("shiye").value=shiye;<br />
	}<br />
	break;			<br />
}</p>

<p>if (shouldSalary>0) {<br />
var taxSalary=(shouldSalary-2000);<br />
var taxRatio=0;<br />
var taxAdjust=0;</p>

<p>if (taxSalary<=0) {taxRatio=0;taxAdjust=0;}<br />
else if (taxSalary>0&&taxSalary<=500) {taxRatio=0.05;taxAdjust=0;}<br />
else if (taxSalary>500&&taxSalary<=2000) {taxRatio=0.10;taxAdjust=25;}<br />
else if (taxSalary>2000&&taxSalary<=5000) {taxRatio=0.15;taxAdjust=125;}<br />
else if (taxSalary>5000&&taxSalary<=20000) {taxRatio=0.20;taxAdjust=375;}<br />
else if (taxSalary>20000&&taxSalary<=40000) {taxRatio=0.25;taxAdjust=1375;}<br />
else if (taxSalary>40000&&taxSalary<=60000) {taxRatio=0.30;taxAdjust=3375;}<br />
else if (taxSalary>60000&&taxSalary<=80000) {taxRatio=0.35;taxAdjust=6375;}<br />
else if (taxSalary>80000&&taxSalary<=100000) {taxRatio=0.40;taxAdjust=10375;}<br />
else if (taxSalary>100000) {taxRatio=0.45;taxAdjust=15375;}<br />
var tax=parseFloat(taxSalary*taxRatio-taxAdjust).toFixed(2);</p>

<p>var resultSalary=parseFloat(shouldSalary-tax).toFixed(2);</p>

<p>document.getElementById("taxRatio").value=taxRatio;<br />
document.getElementById("taxAdjust").value=taxAdjust;<br />
document.getElementById("tax").value=tax;<br />
document.getElementById("resultSalary").value=resultSalary;<br />
}<br />
}<br />
document.getElementById("beforeSalary").focus()<br />
// --></script><br />
</pre></p>]]></description>
         <link>http://windtear.net/2008/08/personal_income_tax_calculator_2008v2.html</link>
         <guid>http://windtear.net/2008/08/personal_income_tax_calculator_2008v2.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">杂项</category>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">个人所得税</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">计算器</category>
        
         <pubDate>Tue, 19 Aug 2008 12:15:30 +0800</pubDate>
      </item>
            <item>
         <title>squid封禁不带User-Agent的请求</title>
         <description><![CDATA[<p><a href="http://creativecommons.org/licenses/by-nc-sa/2.5/cn/">版权声明</a>：可以任意转载，转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。<br />
<a href="http://windtear.net/2008/08/squid_deny_empty_user-agent.html">http://windtear.net/2008/08/squid_deny_empty_user-agent.html</a></p>
<p>看<a href="http://windtear.net/tech/awstats.html">awstats</a>分析报表 很多请求不带User-Agent头<br />
Unknown robot (identified by empty user agent string)<br />
于是就封禁了 加两行<a href="http://windtear.net/tech/squid.html">squid</a>配置<br />
acl has_ua browser .+<br />
http_access notfound !has_ua</p>

<p>其中notfound 可以用deny 这里是改过的 status = HTTP_NOT_FOUND<br />
page_id = ERR_INVALID_URL ERR_INVALID_URL 也是改过的<br />
&lt;TITLE&gt;404 Not Found&lt;/TITLE&gt;<br />
</p>]]></description>
         <link>http://windtear.net/2008/08/squid_deny_empty_user-agent.html</link>
         <guid>http://windtear.net/2008/08/squid_deny_empty_user-agent.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">squid</category>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">squid</category>
        
         <pubDate>Mon, 04 Aug 2008 23:13:32 +0800</pubDate>
      </item>
            <item>
         <title>手工搞迅雷 Thunder</title>
         <description><![CDATA[<p><a href="http://creativecommons.org/licenses/by-nc-sa/2.5/cn/">版权声明</a>：可以任意转载，转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。<br />
<a href="http://windtear.net/2008/08/thunder.html">http://windtear.net/2008/08/thunder.html</a></p>
<p>昨天第一次在自己电脑上搞迅雷 (不是安装迅雷)<br />
下载 Thunder5.8.3.556.exe 解压<br />
按照install_script.iss改了{app}\下几个目录名<br />
(Components下一个不改 Program\Ad 改成只读文件)<br />
然后运行 Thunder.exe 很干净 还能干活</p>

<p>第一次在自己电脑上搞迅雷 首战告捷:)<br />
</p>]]></description>
         <link>http://windtear.net/2008/08/thunder.html</link>
         <guid>http://windtear.net/2008/08/thunder.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">软件</category>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">迅雷</category>
        
         <pubDate>Mon, 04 Aug 2008 23:02:51 +0800</pubDate>
      </item>
            <item>
         <title>apache 哪个版本开始 gzip压缩版的 ETag 最后加个 -gzip</title>
         <description><![CDATA[<p><a href="http://creativecommons.org/licenses/by-nc-sa/2.5/cn/">版权声明</a>：可以任意转载，转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。<br />
<a href="http://windtear.net/2008/07/apache_etag_-gzip.html">http://windtear.net/2008/07/apache_etag_-gzip.html</a></p>
<p>今天看<a href="http://httpd.apache.org/">apache主页</a><br />
发现gzip压缩版的 ETag 最后加个 -gzip "329c25-21a3-44f8c636dd240"-gzip<br />
不知道从哪个版本开始的 看 <a href="http://www.apache.org/dist/httpd/CHANGES_2.2">ChangeLog</a> 没看出来</p>

<p>1. 不带 Accept-Encoding: gzip, deflate 头<br />
HTTP/1.1 200 OK<br />
Date: Sun, 13 Jul 2008 11:43:19 GMT<br />
Server: Apache/2.2.9 (Unix)<br />
Last-Modified: Fri, 13 Jun 2008 13:38:09 GMT<br />
ETag: "329c25-21a3-44f8c636dd240"<br />
Accept-Ranges: bytes<br />
Content-Length: 8611<br />
Vary: Accept-Encoding<br />
Content-Type: text/html<br />
X-Pad: avoid browser bug</p>

<p>2. 带 Accept-Encoding: gzip, deflate 头<br />
HTTP/1.1 200 OK<br />
Date: Sun, 13 Jul 2008 11:46:45 GMT<br />
Server: Apache/2.2.9 (Unix)<br />
Last-Modified: Fri, 13 Jun 2008 13:38:09 GMT<br />
ETag: "329c25-21a3-44f8c636dd240"-gzip<br />
Accept-Ranges: bytes<br />
Vary: Accept-Encoding<br />
Content-Encoding: gzip<br />
Content-Length: 2303<br />
Content-Type: text/html</p>

<p>以前 apache 不管压缩不压缩返回的 ETag 都一样<br />
squid 2.6 针对此还特意做了个选项<br />
acl apache rep_header Server ^Apache<br />
broken_vary_encoding allow apache</p>]]></description>
         <link>http://windtear.net/2008/07/apache_etag_-gzip.html</link>
         <guid>http://windtear.net/2008/07/apache_etag_-gzip.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">软件</category>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">apache</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">squid</category>
        
         <pubDate>Sun, 13 Jul 2008 23:42:51 +0800</pubDate>
      </item>
            <item>
         <title>[squid patch] 解决 Accept-Encoding 不一致造成的多份缓存问题</title>
         <description><![CDATA[<p><a href="http://creativecommons.org/licenses/by-nc-sa/2.5/cn/">版权声明</a>：可以任意转载，转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。<br />
<a href="http://windtear.net/2008/07/squid_patch_accept-encoding_multi_cache.html">http://windtear.net/2008/07/squid_patch_accept-encoding_multi_cache.html</a></p>
<pre>解决的是 IE Firefox 搜索引擎spider 的 Accept-Encoding 不一致造成的多份缓存问题
MSIE 的 Accept-Encoding 是 gzip, deflate
Firefox Googlebot 的是 gzip,deflate (之间没有空格)
多份缓存说明穿透的风险 还是有些危险的

<p>--- squid-2.6.STABLE21.orig/src/http.c	2008-04-02 09:03:47.000000000 +0800<br />
+++ squid-2.6.STABLE21/src/http.c	2008-07-10 21:17:26.000000000 +0800<br />
@@ -387,14 +387,20 @@<br />
 	}<br />
 	strListAdd(&vstr, name, ',');<br />
 	hdr = httpHeaderGetByName(&request->header, name);<br />
-	safe_free(name);<br />
 	value = strBuf(hdr);<br />
 	if (value) {<br />
+	    if (strcmp(name, "accept-encoding") != 0) {<br />
 	    value = rfc1738_escape_part(value);<br />
 	    stringAppend(&vstr, "=\"", 2);<br />
 	    stringAppend(&vstr, value, strlen(value));<br />
 	    stringAppend(&vstr, "\"", 1);<br />
+	    } else {<br />
+		if(strstr(value,"gzip") != NULL || strstr(value,"deflate") != NULL) {<br />
+	    		stringAppend(&vstr, "=\"gzip,\%20deflate\"", 18);<br />
+		}<br />
+	    }<br />
 	}<br />
+	safe_free(name);<br />
 	stringClean(&hdr);<br />
     }<br />
     safe_free(request->vary_hdr); </p>

<p>这里不考虑 gzip deflate 的大写问题<br />
</pre></p>]]></description>
         <link>http://windtear.net/2008/07/squid_patch_accept-encoding_multi_cache.html</link>
         <guid>http://windtear.net/2008/07/squid_patch_accept-encoding_multi_cache.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">squid</category>
                  <category domain="http://www.sixapart.com/ns/types#category">浏览器</category>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">squid，patch</category>
        
         <pubDate>Thu, 10 Jul 2008 21:25:12 +0800</pubDate>
      </item>
            <item>
         <title>ipcn proxy 暂时关闭</title>
         <description><![CDATA[<p><a href="http://creativecommons.org/licenses/by-nc-sa/2.5/cn/">版权声明</a>：可以任意转载，转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。<br />
<a href="http://windtear.net/2008/07/ipcn_proxy_temp_close.html">http://windtear.net/2008/07/ipcn_proxy_temp_close.html</a></p>
<p>由于一些"安全隐患"原因 暂时需要关闭 <a href="http://proxy.ipcn.org/">IPCN 代理服务</a> 祝各位老师同学假期愉快<br />
过一段将在合适的时候想办法再次开放</p>

<p>一. 关于 <a href="http://ipcn.org/">ipcn.org</a> 的代理服务存在安全隐患</p>

<p>ipcn.org 是我在校时课外做的网站 主要提供一些有益的帮助服务 不收取任何费用<br />
主要包括<a href="http://norton.ipcn.org/">Norton 诺顿病毒库</a>、<a href="http://search.ipcn.org/">FTP 搜索引擎</a>、<a href="http://domain.ipcn.org/">免费二级域名</a>、<a href="http://whois.ipcn.org/">IP 地理位置</a>、<br />
<a href="http://firefox.ipcn.org/">Firefox 镜像下载</a>、<a href="http://proxy.ipcn.org/">教育网出国代理</a>等服务<br />
其中出国代理是自己购买的商业带宽，然后分享给大家使用。<br />
这些服务为全校师生的科研、学习提供了一些有益的帮助作用 得到了广泛认可</p>

<p>2004年我拿ipcn.org参加了清华大学第二十二届“挑战杯” 获得了一等奖<br />
毕业后 考虑到这些东西还有用 我就坚持继续做了下去 机器放在了实验室<br />
(现在网站已不在实验室)</p>

<p>关于代理服务 我从技术上做了很多限制: <br />
只允许清华/教育网用户使用<br />
只能访问教育网免费地址之外的地址(web端口80/443) 不能用来访问学校内的资源<br />
不能用来访问学校购买的商业数据库 能直接访问的地方都不能通过ipcn代理访问<br />
为防止被滥用、乱用  做了密码限制 并每两小时更换<br />
代理做了使用限制 不能下载大文件 不能多线程 最高使用带宽在 1.x Mb/s(100多KB/s)<br />
代理本身是购买的商业IDC线路 是合法使用<br />
(关于这些 我在主页 <a href="http://proxy.ipcn.org/ipcn_proxy_usage.html#faq">FAQ</a> 做了一些说明)<br />
<a href="http://proxy.ipcn.org/ipcn_proxy_usage.html#faq">http://proxy.ipcn.org/ipcn_proxy_usage.html#faq</a></p>

<p>根据这六年的运行情况(从2002年开始) 从我的角度看 应该是没有安全隐患的<br />
比如大家不能用来在学校随便发表帖子和不当言论等</p>

<p><br />
二. 关于 ipcn.org 有商业广告</p>

<p>关于商业广告 大体是这样的一个情况<br />
ipcn.org不放商业广告 我也没精力去搞这些<br />
后来放了一些 Google AdSense, 包括推广 Firefox 等<br />
从google的技术实现看 大体是一些和网站内容相关的推广<br />
后来看不影响网站内容和风格就放了 <br />
这个我现在放在了公网 也可以删掉<br />
</p>]]></description>
         <link>http://windtear.net/2008/07/ipcn_proxy_temp_close.html</link>
         <guid>http://windtear.net/2008/07/ipcn_proxy_temp_close.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">网络</category>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">ipcn</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">proxy</category>
        
         <pubDate>Wed, 09 Jul 2008 11:08:25 +0800</pubDate>
      </item>
            <item>
         <title>盗链、反盗链、反反盗链、反反反盗链</title>
         <description><![CDATA[<p><a href="http://creativecommons.org/licenses/by-nc-sa/2.5/cn/">版权声明</a>：可以任意转载，转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。<br />
<a href="http://windtear.net/2008/05/stealing_link_and_referer_etc.html">http://windtear.net/2008/05/stealing_link_and_referer_etc.html</a></p>
<p>atppp写<a href="http://blog.wuxinan.net/archives/356">Google Reader 里看新浪博客图片</a>提到Firefox的<a href="https://addons.mozilla.org/en-US/firefox/addon/953">RefControl</a>插件<br />
就想到了盗链、反盗链、反反盗链、反反反盗链这个题目</p>

<p>先简单解释一下意思：<br />
盗链：我的图片音乐视频等资源被别人的网页用了 算盗链<br />
反盗链：基于带宽成本考虑等原因 不想让别人用我的图片 只允许我自己用 想法限制<br />
反反盗链：利用我限制方法的漏洞 想法用我不想让用的图片<br />
反反反盗链：完善限制方法 别人想法用也不让用<br />
......</p>

<p>简单说就是反盗链一件事<br />
很有意思很具普遍性的一个课题 以前折腾过不少 写写思路</p>

<p>1. 如何盗链：<br />
基本的html知识 如img嵌套一个图片 href链接一个文件下载等</p>

<p>2. 如何反盗链<br />
简单的常用的方法是判断Referer头是不是自己的域名<br />
apache可以通过匹配Referer进行 env 设置 然后Allow Deny<br />
squid 可以通过匹配Referer进行 acl 设置 然后http_access alow deny<br />
有一个细节就是不带Referer的请求(空Referer)允不允许 一般都允许 严格的话可以限制<br />
(apache判断 ^$ squid可以通过对有内容取反设置 .+)</p>

<p>3. 如何反反盗链<br />
反反盗链就是绕过前面反盗链的设置<br />
下载软件的思路：一般是加上Referer等<br />
浏览器的思路：一般是改设置不发Referer 或发反盗链不限制的Referer<br />
Firefox的基本设置是 network.http.sendRefererHeader (about:config) 默认是2全发送<br />
改成0 不发送Referer 改成1点链接发送 嵌套图片等不发送Referer头<br />
Firefox 的 RefControl 插件可以基于站点设定Referer策略 或者指定Referer<br />
对付判断Referer为自身或为空等都能反反盗链成功</p>

<p>另外也可以使用代理 代理一层根据需求过滤 Referer</p>

<p>4. 如何反反反盗链<br />
简单的不行了 只能出大招了<br />
比如加上User-Agent等别的头判断(当然也能绕) 正确的是 加上Cookie判断等 记录比对来过的IP<br />
比如根据应用的架构 访问页面时设置session 访问图片等时判断是否来过<br />
或者访问页面时把ip写到内存库 ip库可以放本地内存或远程(提供tcp/udp接口 注意效率)<br />
访问图片时判断来源ip是否在这个ip库再返回正常数据或者404 object not found<br />
技术上还可以更完美更变态一些...</p>

<p><br />
当然并不是都限制"盗链" 比如有些网站资源丰富 或者给图片打上小标签打自己知名度等<br />
限制的话能能节省带宽成本 防止被滥用等<br />
限不限都有道理 反正大家都不容易 可以理解<br />
这些是产品或管理方面的考量了 技术上大体就是上面说的<br />
</p>]]></description>
         <link>http://windtear.net/2008/05/stealing_link_and_referer_etc.html</link>
         <guid>http://windtear.net/2008/05/stealing_link_and_referer_etc.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">互联网</category>
                  <category domain="http://www.sixapart.com/ns/types#category">浏览器</category>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">反盗链</category>
        
         <pubDate>Sat, 03 May 2008 01:37:43 +0800</pubDate>
      </item>
            <item>
         <title>PXE 网络安装</title>
         <description><![CDATA[<p><a href="http://creativecommons.org/licenses/by-nc-sa/2.5/cn/">版权声明</a>：可以任意转载，转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。<br />
<a href="http://windtear.net/2008/04/pxe_boot_net_install.html">http://windtear.net/2008/04/pxe_boot_net_install.html</a></p>
<p>PXE网络安装、网络升级是我喜欢的 (4年前开始玩)<br />
简单写几句</p>

<p>1. dhcpd 只需注意两点<br />
一是指定 next-server: tftpboot server<br />
二是指定文件名 /pxelinux.0 (syslinux的)<br />
如果追求完美 就是部署ddns 根据iLO DRAC ELOM主机名动态控制</p>

<p>2. tftpd 注意安全问题: 路径、文件权限<br />
in.tftpd -l -s /tftpboot/ 默认nobody权限 别被恶意覆盖文件就行<br />
如果追求完美 可以在default前写C0A801 0A0200等文件 ks指定可以远程按需动态生成<br />
改改msg 还可以再转换splash图片等</p>

<p>3. httpd (性能好)<br />
mount iso (创建yum仓库 这里不必需 只是网络升级用)<br />
如果追求完美 可以考虑绑定ip 限制来源 认证等<br />
然后环境就搭好了</p>

<p>注意事项是：<br />
考虑别影响现有dhcp环境<br />
结合vlan或默认选项防止造成灾难重装<br />
再有就是：<br />
<a href="http://windtear.net/archives/2005/07/18/000720.html">多vlan得配802.1q</a><br />
只维护一个dhcp server 做dhcp relay ks按需动态生成就近取源等<br />
log 归档</p>

<p>基本原理是：(dhcp/bootp的功能)<br />
客户端PXE启动 广播dhcp请求<br />
dhcp server回应ip信息 tftp信息<br />
客户端抓取然后启动<br />
输入选择调用对应的ks(kickstart) ks里面指定url源<br />
其他是都在ks里面做了</p>

<p>从完美的角度 细节还是有一些 不过基本上算很简单</p>]]></description>
         <link>http://windtear.net/2008/04/pxe_boot_net_install.html</link>
         <guid>http://windtear.net/2008/04/pxe_boot_net_install.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">操作系统</category>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">pxe</category>
        
         <pubDate>Mon, 14 Apr 2008 00:07:43 +0800</pubDate>
      </item>
            <item>
         <title>windtear&apos;s new PGP Public Key (2008.4.13 ~ 2012.4.12)</title>
         <description><![CDATA[<p><a href="http://creativecommons.org/licenses/by-nc-sa/2.5/cn/">版权声明</a>：可以任意转载，转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。<br />
<a href="http://windtear.net/2008/04/windtear_new_pgp_public_key.html">http://windtear.net/2008/04/windtear_new_pgp_public_key.html</a></p>
<p><a href="http://windtear.net/archives/2004/04/12/000313.html">4年前仔细研究了 PGP 的知识</a><br />
今天重新创建一个有效期4年的 PGP Key 以后关键信息会签名发布或者加密发布</p>

<p>05788A15<br />
Fingerprint: A3C4 E2F7 5D1C 457A CC26  49ED CDB5 7620 0578 8A15<br />
[expires: 2012-04-12]</p>

<p>gpg -v --keyserver hkp://pgpkeys.mit.edu --recv-key 05788A15<br />
gpg -v --keyserver hkp://subkeys.pgp.net --recv-key 05788A15</p>

<p><a href="http://ipcn.org/windtear.asc">http://ipcn.org/windtear.asc</a><br />
<a href="http://windtear.net/windtear.asc">http://windtear.net/windtear.asc</a></p>

<p>附：windtear.asc<br />
-----BEGIN PGP PUBLIC KEY BLOCK-----<br />
Version: GnuPG v1.4.7 (GNU/Linux)</p>

<p>mQGiBEgB4oQRBACbwtlQOGhRHPX7ng83fWivxFVlIDucDoRee2Pe0OoEwcUGKceR<br />
PDHfiY23QmY6MRxSjkRDsXa0RIlzrNI3BGqC5tn8Ho3kZ/vIz7GibRLetzuu1Dw1<br />
hox01qhezBr1LJ3t98kv2wgkfOToktYq+NJQOGqJMwrCsj3sgPBT62PfawCgwn6b<br />
rKqCsI3BwD3ZwnhCE7LEPPsD/1YxDTf1Hcw/KToek8DBHjSUNOwmPLaojGwefwQL<br />
/lIXCMjZcZaHG7ZOVPxlJjQxnDTrXeMhVl7QrH5nGkFChY5HXdrHbwiL/IkXh/wy<br />
LI40ekTntgzUBQAxxCA6VJ8kYJq+5Vx9LBdat2WTgT8J+baSezoKa15793xTdroM<br />
T1hdBACA0+EhJXnzgYxnjhHSuCZ3PGnK/ub8R/IuQrtnPSBIXKW3ElD4qN7/0USq<br />
KheV+rbZU8I6DcnPzRbECXXigNl1EZg0QmKGE3n05guHFBthIZK/BqhPdrXVpykA<br />
1UWmejxER4DtU8l4lAnU6tTEAbpU6G0Duhp5F1kxqmTvVPnoZLQsd2luZHRlYXIg<br />
KFhpdWxpbmcgWmhhbmcpIDx3aW5kdGVhckBpcGNuLm9yZz6IZgQTEQIAJgUCSAHi<br />
hAIbAwUJB4TOAAYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEM21diAFeIoVMREA<br />
n19v6XfQMpWxoU4y0Mf7OYyudM2iAJ0bAvSLR0YV6l7HFlTmtzx7pzxNpbkCDQRI<br />
AeNREAgA0ccJ/792fWJi7QFYVkGuvXD+v/0bbm6dW5dQCEWAwZy1rc4LzWZOGZnV<br />
ur7TJu/Wc6QHDltgsmZVl39KTuHCOAE27VZPYwfptaEMH0061d7jlo0WVbqcLRI/<br />
6hs98hCYhdA5iaSa8PqfH2aV1BCPt9b+rD+XT/bwOnDlUMmoBacMrm7Nw6SnGt/W<br />
+GQxN0zT6pj3ihpj4l8hunxzIT+3btvLg1q0u7NUvBC41WLt7jnWpYjAkB/DEEiD<br />
QhDkWvz4mGkxLBiOBjy35iwbSmLMptnpUUoRUMHsDjy/h/KuGPNQyySe5QvXhxg+<br />
VxZrAcIphF2smLaLzPucNkOl95Op6wADBQf/Z8jpN8aF/0Vlogm7PB5WW9bhf8zc<br />
k8tOyDaQrT+nEgD5LV0WDWZsmREsemWVTNLd0rZn887gzJfOPEIQpDqgOvjWbs0H<br />
1FvDB/z498Yw8YM1x6GNztLihI8R71tT7Y0Wa2DgdBsY9sTCaWlDC7prSLSuvHD7<br />
t9R4+Zys2BTFQqo2ShNI/Wu7agexAICqjJtyXYD5DL3Fiwsb0Cl5uW1nArFyuDQf<br />
ks9VLxb/hWrX1RDrhsrsA++3l8B70JJ8pu6+i+hMgPelFgMPJl9gnMNqjK3eVaCT<br />
OYvqNI91VlBS1WJk0TYgAsudxyadlwtoWXHnWI/BuOKgoY7/ZyXsQYSC6IhPBBgR<br />
AgAPBQJIAeNRAhsMBQkHhM4AAAoJEM21diAFeIoV+d0An1YknIVsiTd5a7g3Uk1R<br />
Bx8fl/VvAKCPMqvOzm3uc3/tDrmYpTa1/UPrnQ==<br />
=ZcU1<br />
-----END PGP PUBLIC KEY BLOCK-----</p>]]></description>
         <link>http://windtear.net/2008/04/windtear_new_pgp_public_key.html</link>
         <guid>http://windtear.net/2008/04/windtear_new_pgp_public_key.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">安全</category>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">PGP</category>
        
         <pubDate>Sun, 13 Apr 2008 20:12:37 +0800</pubDate>
      </item>
            <item>
         <title>Redhat 改默认网关、改静态路由的超详细步骤</title>
         <description><![CDATA[<p><a href="http://creativecommons.org/licenses/by-nc-sa/2.5/cn/">版权声明</a>：可以任意转载，转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。<br />
<a href="http://windtear.net/2008/03/redhat_network_route_gateway.html">http://windtear.net/2008/03/redhat_network_route_gateway.html</a></p>
<p>Redhat 改默认网关、改静态路由的超详细步骤</p>

<p>0. 简单说改默认网关是改 /etc/sysconfig/network 中的 GATEWAY 配置<br />
   改静态路由是改 /etc/sysconfig/network-scripts/ 目录的 eth?.route or route-eth?<br />
   详细提醒如下</p>

<p>1. 检查内外网流量 是否流量很大正在提供重要服务<br />
   得到相关人员确认后再行动</p>

<p>2. 确认是要改的机器<br />
   ifconfig (或 ip ad ls) 确认当前所在机器</p>

<p>3. route -n (或 ip route ls) 查看当前默认网关和配置<br />
   /etc/sysconfig/network<br />
   GATEWAY=当前.配置.网关.ip</p>

<p>4. 确认内外网卡配置 ONBOOT 配置 (eth0 eth1 ... 都要看)<br />
   /etc/sysconfig/network-scripts/ifcfg-eth0<br />
   /etc/sysconfig/network-scripts/ifcfg-eth1<br />
  <br />
5. 确认内外网默认路由配置 (eth0 eth1 ... 都要看)<br />
   /etc/sysconfig/network-scripts/eth1.route<br />
   或<br />
   /etc/sysconfig/network-scripts/route-eth1<br />
   最好再确认一眼 /etc/sysconfig/static-routes<br />
   确认 rc.local 配置 (加上所有自启动服务检查更好)</p>

<p>6. [可选] [高级]确认是否启用了策略路由<br />
   ip rule ls 确认有没有自定义 table 路由策略</p>

<p>7. [可选] 确认所有定时任务没有改 ip 路由等配置<br />
   比如远程更新网卡驱动 为防意外(保险)回退有时用此方法</p>

<p>8. 简单的修改可以用 ; 一次执行完 比如<br />
   route del default; route add default gw 新.网.关.IP<br />
   对自己不自信 可以先把自己的机器加上去 防止改错自己也连不上<br />
   route add -host 自己.机器.的.ip gw 正确.网关.的.ip</p>

<p>9. 大量修改用 ifup 生效 如 ifup eth1<br />
   用init脚本要用restart 如 service network restart<br />
   防止先敲 service network stop 回车后再想敲 service network start 的情况</p>

<p>A. 适用于 Redhat 发行版， 转载请注明<a href="http://windtear.net/2008/03/redhat_network_route_gateway.html">出处<br />
http://windtear.net/2008/03/redhat_network_route_gateway.html</a></p>

<p>相关文章：<br />
<a href="http://windtear.net/archives/2005/01/13/000554.html">Red Hat 下 route 静态路由 设置 eth0.route & route-eth0 & static-routes<br />
http://windtear.net/archives/2005/01/13/000554.html</a><br />
三种方式：<br />
eth0.route redhat 新推的格式 比较傻瓜一些<br />
route-eth0 redhat 的老的格式 对专业人士很好<br />
static-routes</p>

<p>举例如下：<br />
/etc/sysconfig/network-scripts/eth0.route<br />
ADDRESS0=192.168.0.0<br />
NETMASK0=255.255.0.0<br />
GATEWAY0=10.1.1.254<br />
ADDRESS1=172.16.0.0<br />
NETMASK1=255.240.0.0<br />
GATEWAY1=10.1.1.254</p>

<p>/etc/sysconfig/network-scripts/route-eth0<br />
192.168.0.0/16 via 10.1.1.254<br />
172.16.0.0/12 via 10.1.1.254</p>

<p>/etc/sysconfig/static-routes<br />
eth0 net 192.168.0.0 netmask 255.255.0.0 gw 10.1.1.254</p>]]></description>
         <link>http://windtear.net/2008/03/redhat_network_route_gateway.html</link>
         <guid>http://windtear.net/2008/03/redhat_network_route_gateway.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">网络</category>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">路由</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">gateway</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">网关</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">redhat</category>
        
         <pubDate>Fri, 21 Mar 2008 10:35:08 +0800</pubDate>
      </item>
            <item>
         <title>inode、inode size/block、block size/fragment size ...</title>
         <description><![CDATA[<p><a href="http://creativecommons.org/licenses/by-nc-sa/2.5/cn/">版权声明</a>：可以任意转载，转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。<br />
<a href="http://windtear.net/2008/03/ext3_inode_size_block_size.html">http://windtear.net/2008/03/ext3_inode_size_block_size.html</a></p>
<p>先 dumpe2fs -h /dev/xxx 看一眼结果 有个感性认识 再认真分析<br />
volume name/magic number 0xEF53/fetures 如has_journal...<br />
inode count/block count//block size/fragment size /inode zie<br />
mount count/max mount count/ ...</p>

<p><br />
关于 block size和fragment size 简单说 读取越大速度越快 越小越省空间<br />
block size:  kernel一次读的大小 如16384  4096 (设置方法 -b)<br />
(btw: super block: 从硬盘开头 1024 字节开始往后的一部分数据)<br />
fragment size: 放 block 的零头 减少浪费 如2048 512 (bsize/8 ~ bsize) (设置方法 -f)</p>

<p>inode: 索引节点 占128字节 存数据的基本信息资料(时间 存取权限 位置)<br />
inode size: 多大的数据分一个 inode  (设置方法 -i 4096)<br />
越小则 inode table 越大，link越长 速度慢 空间利用率越高<br />
经验值 4K 相当于文件的平均大小是 4K 此时inode table 占3.19%空间<br />
（因为inode size太小 inode table占用空间多 空间利用率还是不高)<br />
inode size 不能比 block size 小 要不会浪费 inode</p>

<p>所以以前ext2/3跑bbs玩要先计算好防止 inode 用光 data block 还有剩余</p>]]></description>
         <link>http://windtear.net/2008/03/ext3_inode_size_block_size.html</link>
         <guid>http://windtear.net/2008/03/ext3_inode_size_block_size.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">文件系统</category>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">inode</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">文件系统</category>
        
         <pubDate>Thu, 20 Mar 2008 17:47:07 +0800</pubDate>
      </item>
            <item>
         <title>封禁抽风的腾讯 Sosospider 124.115.0.0 5个网段</title>
         <description><![CDATA[<p><a href="http://creativecommons.org/licenses/by-nc-sa/2.5/cn/">版权声明</a>：可以任意转载，转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。<br />
<a href="http://windtear.net/2008/03/deny_sosospider.html">http://windtear.net/2008/03/deny_sosospider.html</a></p>
<p>迄今为止 我已遭遇过国内4大门户的spider攻击<br />
<a href="http://windtear.net/archives/2007/05/31/001239.html">新浪</a> <a href="http://windtear.net/archives/2006/09/02/001073.html">搜狐</a> <a href="http://windtear.net/archives/2007/05/14/001230.html">网易</a> <a href="http://windtear.net/2008/03/deny_sosospider.html">腾讯</a></p>

<p>124.115.0.0 ～ 124.115.4.255<br />
所有的请求都加一个 Referer 为请求URL的头<br />
遭遇64个ip近万次的抓取 UA信息为 "Sosospider+(+http://help.soso.com/webspider.htm)"<br />
目前已封了这5个网段</p>

<p>前面的blog：<br />
<a href="http://windtear.net/archives/2007/05/31/001239.html">60.28.164.* 新浪 iaskspider 也疯狂</a><br />
<a href="http://windtear.net/archives/2007/05/14/001230.html">yodao 的 spider 也可以直接封掉</a><br />
<a href="http://windtear.net/archives/2006/09/02/001073.html">sohu 公司昨天想 DoS 攻击我网站?</a></p>]]></description>
         <link>http://windtear.net/2008/03/deny_sosospider.html</link>
         <guid>http://windtear.net/2008/03/deny_sosospider.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">网络</category>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">spider</category>
        
         <pubDate>Fri, 14 Mar 2008 00:25:57 +0800</pubDate>
      </item>
            <item>
         <title>Windows 2000 Server 平滑升级安装 Windows XP Professional</title>
         <description><![CDATA[<p><a href="http://creativecommons.org/licenses/by-nc-sa/2.5/cn/">版权声明</a>：可以任意转载，转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。<br />
<a href="http://windtear.net/2008/03/windows_2000_server_upgrade_windows_xp.html">http://windtear.net/2008/03/windows_2000_server_upgrade_windows_xp.html</a></p>
<p>Windows 2000 Server 直接升级到 Windows XP Professional 是不支持的<br />
采用全新安装：<br />
1. 可以在运行win2k时 运行 i386\winnt32.exe 安装<br />
2. 可以启动到dos环境 运行 i386\winnt.exe 安装<br />
3. 还可光盘启动安装</p>

<p>通过 winnt32 winnt 可以指定参数<br />
可以设置自动安装 可以为要在别的机器用的新硬盘安装</p>

<p>自动安装：<br />
编辑无人参与应答文件 winnt.sif<br />
(Winnt.sif文件中的语句段和条目与Unattend.txt文件相同)<br />
[Data]<br />
UnattendedInstall=Yes<br />
AutoPartition=0 (提示选择安装分区)</p>

<p>[Unattended]<br />
TargetPath=\WINXP</p>

<p>[UserData]<br />
ProductKey="XXXXX-XXXXX-XXXXX-XXXXX-XXXXX"<br />
FullName="Windtear Zhang"<br />
OrgName=""<br />
ComputerName="windtear"</p>

<p>复制文件完成后的情况是：<br />
boot.ini 增加一项启动项<br />
C:\$WIN_NT$.~BT\BOOTSECT.DAT<br />
具体源文件目录默认在 C:\$WIN_NT$.~LS</p>

<p>直接复制好环境绕开拷贝文件的方法是：<br />
修改 c:\$WIN_NT$.~BT\winnt.sif<br />
OriSrc="C:\$WIN_NT$.~LS\"</p>

<p>migrate.inf 的目的是保持原系统的驱动器字母</p>

<p>正式安装：<br />
目标盘如果是ntfs分区 如果该分区之前的安全权限设置里面没有 Administrators 组<br />
会提示错误 bootvid.dll 拷贝失败 提示重插光盘等<br />
但是呢 又能把目录结构建起来 只不过文件名大都是 $$TEMP$$.~~~<br />
WINXP 目录共 45,818,106 Bytes</p>

<p>平滑升级的方法和注意事项：<br />
1. 尽量用免费开源的软件 配置文件在目录里的<br />
2. 导入 IE 的收藏夹 cookies 导入各家银行的个人信息证书<br />
3. 导入通讯薄备份 windtear.wab<br />
4. 拷贝Application Data 开始菜单 _viminfo PUTTY.RND My Documents\Default.rdp<br />
5. 导入原系统的相关软件注册表信息 个别dll需要拷贝到 system32 目录<br />
6. gnutools 等不用动 直接设置 PATH<br />
7. 只有 winpim 需要重新安装 其实主要是注册控件<br />
8. 招行专业版同理 注册完控件直接用 证书都不用恢复:)<br />
9. 安装 WindowsInstaller-KB893803-v2-x86.exe 然后安装<br />
   Windows Live Messenger 8.5.1302.1018 (之前win2k是7.0.0820) <a href="http://windtear.net/archives/2006/02/13/000916.html">改多登的方法</a><br />
   Install_WLMessenger.exe 12.0.1471.1025 20256272 bytes<br />
拷贝 msn 聊天记录 或者设置消息目录时指定老的</p>

<p>基本上我的软件都直接用 比如大众化的<br />
Firefox Thunderbird putty fterm OpenOffice.org gVim mpc TotalCMD 等等<br />
其他很多软件就不列出来了</p>]]></description>
         <link>http://windtear.net/2008/03/windows_2000_server_upgrade_windows_xp.html</link>
         <guid>http://windtear.net/2008/03/windows_2000_server_upgrade_windows_xp.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">操作系统</category>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">windows</category>
        
         <pubDate>Thu, 13 Mar 2008 23:15:14 +0800</pubDate>
      </item>
      
   </channel>
</rss>