<?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 2009</copyright>
      <lastBuildDate>Sat, 19 Dec 2009 22:58:08 +0800</lastBuildDate>
      <generator>http://www.sixapart.com/movabletype/</generator>
      <docs>http://blogs.law.harvard.edu/tech/rss</docs> 

            <item>
         <title>3G攻略 中国联通 186 WCDMA 套餐查话费 HSDPA高速上网</title>
         <description><![CDATA[<p><a href="http://creativecommons.org/licenses/by-nc-sa/2.5/cn/">版权声明</a>：可以任意转载，转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。<br />
<a href="http://windtear.net/2009/12/chinaunicom_3g_186_wcdma.html">http://windtear.net/2009/12/chinaunicom_3g_186_wcdma.html</a></p>
<p>运营商整合之后6家运营商变为3家<br />
中国联通 含前中国网通固话和前中国联通的GSM网 客服号10010 3G号段为186 WCDMA 沃<br />
中国移动 含前中国移动和前中国铁通固话 客服号10086 3G号段为188 TD-SCDMA G3<br />
中国电信 含前中国电信固话和前中国联通的CDMA网 客服号10000 3G号段为189 CDMA2000 天翼</p>

<p>本文介绍windtear对中国联通3G的使用体会<br />
186 沃 96元套餐含300M上网流量 240分钟通话 不分长话市话漫游 客服号10010<br />
支持 wcdma 的手机较多 如目前比较火的 iphone Google G1/G3 nokia e72等</p>

<p>上网攻略：<br />
接入点 *99#<br />
用户名3gnet 密码3gnet<br />
用户名uninet 密码uninet<br />
用户名3gwap 密码3gwap<br />
用户名uniwap 密码uniwap</p>

<p>3.5G HSDPA 上网 速度10.2Mbps 或者宣称的 7.2Mbps</p>

<p>套餐查话费攻略：<br />
查话费网站 http://www.10010.com/<br />
先获取服务密码 (选忘记密码 查看手机收到的短信中的4位数字 设置服务密码）<br />
登录网站可以查详单 话费 网络流量 如：<br />
帐单查询 - 手机上网流量  会列出已使用的收费流量<br />
详单查询 - 通话详单 可以每次查询7天的详单<br />
如果想知道剩余时长可以由详单去除被叫 去除拨打10010等免费电话 累加即为已使用的通话时长 240减去该数值得到剩余时长</p>

<p>获得通话剩余时长还可以通过短信的方式<br />
发送短信 TCYL 到 1065580123  (注意： 本方法据说按返回的短信收费 据说需要1元钱)<br />
由于要花钱 所以还是建议通过网站详单累加 或者通过手机自带的通话记录中-通话时间-已拨电话估算<br />
windtear 建议通过 excel 处理网站数据 windtear 还建议通过编写程序自动处理10010网站数据<br />
10010网站通话时长那一栏的数据格式为 xx秒 或 xx分xx秒 呼叫类型为主叫 被叫<br />
中国移动提供了诸如 CXBX CXGFX CXGTC CXIP1000 等短信代码接口 中国联通不提供<br />
</p>]]></description>
         <link>http://windtear.net/2009/12/chinaunicom_3g_186_wcdma.html</link>
         <guid>http://windtear.net/2009/12/chinaunicom_3g_186_wcdma.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">杂项</category>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">3g</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">联通</category>
        
         <pubDate>Sat, 19 Dec 2009 22:58:08 +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/2009/12/jingdong_360buy_cheat_customer.html">http://windtear.net/2009/12/jingdong_360buy_cheat_customer.html</a></p>
<p>本人亲身经历 实在气不过京东商城能如此无耻。 严重欺诈消费者的京东商城肯定会倒闭的！</p>

<p>摘要：<br />
从京东商城买了一部nokia手机 无法开机 申请换货<br />
京东商城15天后把手机发回来 说手机没问题 不给换货 事实上手机仍无法开机<br />
发回来之前京东商城客服联系说如果我同意就把原手机送回来 如果我不同意就放在那 什么时候同意了再联系他们 然后让我随便找315 (这些都是客服原话)<br />
手机送回来后去nokia官方客服 nokia官方检测结论需要返厂修</p>

<p>京东商城欺诈消费者的地方：<br />
1. 手机明明有问题 说没问题 拖15天发回来 (详细时间附后)<br />
   这里面有两个可能<br />
   1.1. 京东商城根本没做检测 放了15天发回来<br />
   1.2. 检测了 也说有问题 15天后发回来 nokia也不给出检测报告了<br />
2. 我申请的换货 京东商城系统里给我改成了返修<br />
   打客服电话 客服开始说可能我选错了 我说没选错 我有截图 然后客服又说那可能是系统问题 没人能改这个东西<br />
3. 拖时间 申请换货期间打过几次客服电话 客服说12月3号就看到结果了 拖到12月10号过了15天才联系发给我</p>

<p>附详细时间：<br />
京东:<br />
订单跟踪<br />
2009-11-25 14:45	配送员已经从站点出发,请您准备收货<br />
返修跟踪<br />
2009-11-25 15:10 (发现不能开机 直接申请换货)	提交申请成功<br />
2009-11-26 18:51	>站点全单退货,原因：售后取货返回<br />
2009-11-28 15:15	商品已经收到且登记检测完毕,请等待处理<br />
2009-12-03 13:?? (客服说内部显示处理完毕 可开机)<br />
2009-12-10 11:21 (客服联系说前面提到没问题的话 发回来)	返修已结束，希望我们的服务能令您满意！<br />
2009-12-11 13:15 (拿到手)</p>

<p>nokia:<br />
2009-12-12 15:17 开始nokia官方维修 结论：需要返厂修</p>

<p>结论：<br />
京东商城严重欺诈消费者 京东商城缺乏最基本的商业道德 祝京东商城早日倒闭</p>

<p>感谢很多同事朋友在此期间给我的帮助和建议<br />
</p>]]></description>
         <link>http://windtear.net/2009/12/jingdong_360buy_cheat_customer.html</link>
         <guid>http://windtear.net/2009/12/jingdong_360buy_cheat_customer.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">杂项</category>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">360buy</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">京东</category>
        
         <pubDate>Sat, 12 Dec 2009 18:03:26 +0800</pubDate>
      </item>
            <item>
         <title>2009年最新版个人所得税计算器2 (7月后有效 基数11178 失业0.2%)</title>
         <description><![CDATA[<p><a href="http://creativecommons.org/licenses/by-nc-sa/2.5/cn/">版权声明</a>：可以任意转载，转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。<br />
<a href="http://windtear.net/2009/10/personal_income_tax_calculator_2009v2.html">http://windtear.net/2009/10/personal_income_tax_calculator_2009v2.html</a></p>
<pre>2009年最新版个人所得税计算器2 (7月后有效 基数11178 失业0.2%)

<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.2%算)<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/2009/10/personal_income_tax_calculator_2009v2.html">http://windtear.net/2009/10/personal_income_tax_calculator_2009v2.html</a><br />
过去几年的个人所得税计算器：<br />
<a href="http://windtear.net/2009/10/personal_income_tax_calculator_2009v2.html">2009年最新版个人所得税计算器1 (7月后有效 基数11178 失业0.2%)</a><br />
<a href="http://windtear.net/2009/10/personal_income_tax_calculator_2009v1.html">2009年最新版个人所得税计算器1 (7月前有效 基数9966 失业0.2%)</a><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>=11178) {<br />
		var yanglao=721.92;<br />
		var yibao=183.48;<br />
		var gongjijin=1341;<br />
		if(document.getElementById("gjjratio1").checked==true) { gongjijin = 894; }<br />
		else if(document.getElementById("gjjratio2").checked==true) { gongjijin = 1118; }<br />
		var windtear=1;<br />
		var shiye=18.05;<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.002).toFixed(2);<br />
		if (shiye>18.05) { shiye=18.05; }<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/2009/10/personal_income_tax_calculator_2009v2.html</link>
         <guid>http://windtear.net/2009/10/personal_income_tax_calculator_2009v2.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, 20 Oct 2009 19:13:30 +0800</pubDate>
      </item>
            <item>
         <title>2009年最新版个人所得税计算器1 (7月前有效 基数9966 失业0.2%)</title>
         <description><![CDATA[<p><a href="http://creativecommons.org/licenses/by-nc-sa/2.5/cn/">版权声明</a>：可以任意转载，转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。<br />
<a href="http://windtear.net/2009/10/personal_income_tax_calculator_2009v1.html">http://windtear.net/2009/10/personal_income_tax_calculator_2009v1.html</a></p>
<pre>2009年最新版个人所得税计算器1 (7月前有效 基数9966 失业0.2%)

<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.2%算)<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/2009/10/personal_income_tax_calculator_2009v1.html">http://windtear.net/2009/10/personal_income_tax_calculator_2009v1.html</a><br />
过去几年的个人所得税计算器：<br />
<a href="http://windtear.net/2009/10/personal_income_tax_calculator_2009v2.html">2009年最新版个人所得税计算器1 (7月后有效 基数11178 失业0.2%)</a><br />
<a href="http://windtear.net/2009/10/personal_income_tax_calculator_2009v1.html">2009年最新版个人所得税计算器1 (7月前有效 基数9966 失业0.2%)</a><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=18.05;<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.002).toFixed(2);<br />
		if (shiye>18.05) { shiye=18.05; }<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/2009/10/personal_income_tax_calculator_2009v1.html</link>
         <guid>http://windtear.net/2009/10/personal_income_tax_calculator_2009v1.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, 20 Oct 2009 19:00:49 +0800</pubDate>
      </item>
            <item>
         <title>用 iptables 解决某些时候抢先应答的 RST 造成的异常中断： 忽略RESET 保证数据畅通</title>
         <description><![CDATA[<p><a href="http://creativecommons.org/licenses/by-nc-sa/2.5/cn/">版权声明</a>：可以任意转载，转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。<br />
<a href="http://windtear.net/2009/10/iptables_drop_reset.html">http://windtear.net/2009/10/iptables_drop_reset.html</a></p>
<pre>一个真实的例子 由于可能触发了什么东西 A到B的数据交互会被一个抢先的RST回应干扰
简单解决是忽略这种类型的全部 RST 包
iptables -I INPUT -p tcp --tcp-flags SYN,FIN,RST,URG,PSH RST -j DROP

<p> pkts bytes target     prot opt in     out     source               destination         <br />
    0     0 DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp flags:0x2F/0x04</p>

<p>顺便复习备忘下</p>

<p>1 SYN<br />
	14+20+20+20(options)<br />
eth	6+6+2 dstmac+srcmac+0800<br />
ip	45+ds+2ip.len(60)+2ip.id+flags(DF 0x04).2frag_offset+ttl+proto tcp 06+2checksum+src+dst<br />
tcp	2srcport+dstport+4seq+4+1hdr_len+1flags(0x02syn 04rst 10ack)+2window+2checksum+2+options<br />
options	4mss+2sack(04 02)+10timestamp+1nop+7window_scale<br />
seq=0 mss=1460	04c751df</p>

<p>2 SYN+ACK	<br />
tcp	<br />
seq=0 ack=1 len=0	0540780e 04c751e0<br />
1flags(0x12 syn+ack)</p>

<p>3 ACK<br />
tcp	20+12(1nop+1nop+10timestamp)<br />
1flags(0x10 ack)<br />
seq=1 ack=1	04c751e0 	0540780f</p>

<p>4 PSH+ACK<br />
ip	ip.len=169<br />
tcp	len=117<br />
seq=1(next118 169-20-32=117) 04c751e0 0540780f<br />
1flags(0x18 psh+ack)	tcp segment data=117</p>

<p>5 RST<br />
ip	2ip.len(52)	flags(DF 0x00)<br />
tcp<br />
seq=1	0540780f ack(04c75255)<br />
flags(0x04 RST ack not set)</p>

<p>6 ACK<br />
tcp<br />
seq=1 ack=118<br />
1flags(0x10 ack)</p>

<p>7 RST<br />
ip	2ip.len(40)	flags(DF 0x04)<br />
tcp	seq=118	04c75255 ack(00000000)<br />
flags(0x04 RST)</p>

<p><br />
1 2 3 syn syn+ack ack<br />
4 PSH+ACK (GET ...)<br />
6 ACK<br />
由于5 抢先 RESET 只好 7 RESET</p>

<p><br />
解决：<br />
忽略异常RESET包  (不包括端口未开放的RST+ACK)<br />
iptables -I INPUT -p tcp --tcp-flags SYN,FIN,RST,URG,PSH RST -j DROP<br />
 pkts bytes target     prot opt in     out     source               destination         <br />
    0     0 DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp flags:0x2F/0x04<br />
</pre></p>]]></description>
         <link>http://windtear.net/2009/10/iptables_drop_reset.html</link>
         <guid>http://windtear.net/2009/10/iptables_drop_reset.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#category">互联网</category>
                  <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">iptables</category>
        
         <pubDate>Sun, 11 Oct 2009 22:36:29 +0800</pubDate>
      </item>
            <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>
      
   </channel>
</rss>