<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>我的备忘录</title>
	<atom:link href="http://www.nimab.org/feed" rel="self" type="application/rss+xml" />
	<link>http://www.nimab.org</link>
	<description>穷困潦倒</description>
	<lastBuildDate>Wed, 29 Feb 2012 16:23:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>单电相机的硬伤</title>
		<link>http://www.nimab.org/2012/03/01/92.html</link>
		<comments>http://www.nimab.org/2012/03/01/92.html#comments</comments>
		<pubDate>Wed, 29 Feb 2012 16:23:24 +0000</pubDate>
		<dc:creator>Kafeifei</dc:creator>
				<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://www.nimab.org/?p=92</guid>
		<description><![CDATA[纠结了两天终于弄明白了，为什么 Hologon 在 M9 上边缘泛红严重，失光也很严重。 红光折射率最低按理说不应该是泛红，紫色是折射率最高的，所以那个不是泛红，是泛紫。 因为以前胶片是完全平坦，并且感光材料是最表层，所以 Hologon 这种设计不会有边缘偏紫和严重失光的情况，虽然徕卡的 CCD 很 BT 的对边缘像素进行了底层位移，可以大大减轻这种情况，但 Hologon 底面光线斜射角度已经严重超出 CCD 能承受的范围了。 然后徕卡新出的镜头对数码相机进行了优化，所谓的优化只有一种方式，就是减少斜射光的角度，基本上可以认为是加长镜头长度，让镜头射出的光线尽量符合柯达这块 CCD 的变态设计，以前的老镜头拿到 M9 上都有这种问题。 所以什么火龙果、七枚玉之类的，不管它曾经有多辉煌，在 M9 上注定无法与新设计的镜头比。所以买镜头要买新镜头，或者玩胶片。 另外 M4/3 系统因为 CCD(CMOS) 较小，镜头都是全新设计的，这个问题控制得还不错，徕卡用了高成本的方式在 CCD 上做工作，而 NEX 的问题就比较严重了，这就说明为什么蔡司那个 24/1.8 设计得如此之长了，注定了 NEX 的镜头要有好画质，就一定很长，并不是不想做好的饼干头，而是做不出来。]]></description>
			<content:encoded><![CDATA[<p>纠结了两天终于弄明白了，为什么 Hologon 在 M9 上边缘泛红严重，失光也很严重。<br />
红光折射率最低按理说不应该是泛红，紫色是折射率最高的，所以那个不是泛红，是泛紫。</p>
<p>因为以前胶片是完全平坦，并且感光材料是最表层，所以 Hologon 这种设计不会有边缘偏紫和严重失光的情况，虽然徕卡的 CCD 很 BT 的对边缘像素进行了底层位移，可以大大减轻这种情况，但 Hologon 底面光线斜射角度已经严重超出 CCD 能承受的范围了。</p>
<p>然后徕卡新出的镜头对数码相机进行了优化，所谓的优化只有一种方式，就是减少斜射光的角度，基本上可以认为是加长镜头长度，让镜头射出的光线尽量符合柯达这块 CCD 的变态设计，以前的老镜头拿到 M9 上都有这种问题。</p>
<p>所以什么火龙果、七枚玉之类的，不管它曾经有多辉煌，在 M9 上注定无法与新设计的镜头比。所以买镜头要买新镜头，或者玩胶片。</p>
<p>另外 M4/3 系统因为 CCD(CMOS) 较小，镜头都是全新设计的，这个问题控制得还不错，徕卡用了高成本的方式在 CCD 上做工作，而 NEX 的问题就比较严重了，这就说明为什么蔡司那个 24/1.8 设计得如此之长了，注定了 NEX 的镜头要有好画质，就一定很长，并不是不想做好的饼干头，而是做不出来。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nimab.org/2012/03/01/92.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>linode备忘</title>
		<link>http://www.nimab.org/2011/08/27/84.html</link>
		<comments>http://www.nimab.org/2011/08/27/84.html#comments</comments>
		<pubDate>Sat, 27 Aug 2011 06:14:01 +0000</pubDate>
		<dc:creator>Kafeifei</dc:creator>
				<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://www.nimab.org/?p=84</guid>
		<description><![CDATA[Linode 512 swap 512M （不要太小，否则编译某些软件会失败，自己做swap麻烦） disk1 19.5G 数据中心 Fremont, CA, USA 这个连中国比较快，可以先测试一下(google搜索测试方法) 计费方式： 周付：如果申请时间不是每月1号，第一个月每周结账 月付：每月自动扣款 年付：每年自动扣款，有10%优惠 我获得的第一个IP被搞，发Ticket过去，很快给我换了一个新IP 四核cpu性能不错 内存被扣掉大约100M，咨询后得知是xen内核占用，没显示出来云云，问题不大 提供的Gentoo内核支持pptp、tun，很方便 客服响应速度很快，有专业人士解答你的技术问题，问题描述需要严谨一些，因为他们客服做事非常严谨，因为我英文很差所以在咨询支付方式的时候纠结了很久，他们需要得到一个最精确的指令才会给你办事]]></description>
			<content:encoded><![CDATA[<p>Linode 512<br />
swap 512M （不要太小，否则编译某些软件会失败，自己做swap麻烦）<br />
disk1 19.5G<br />
数据中心 Fremont, CA, USA 这个连中国比较快，可以先测试一下(google搜索测试方法)</p>
<p>计费方式：<br />
周付：如果申请时间不是每月1号，第一个月每周结账<br />
月付：每月自动扣款<br />
年付：每年自动扣款，有10%优惠</p>
<p>我获得的第一个IP被搞，发Ticket过去，很快给我换了一个新IP</p>
<p>四核cpu性能不错</p>
<p>内存被扣掉大约100M，咨询后得知是xen内核占用，没显示出来云云，问题不大</p>
<p>提供的Gentoo内核支持pptp、tun，很方便</p>
<p>客服响应速度很快，有专业人士解答你的技术问题，问题描述需要严谨一些，因为他们客服做事非常严谨，因为我英文很差所以在咨询支付方式的时候纠结了很久，他们需要得到一个最精确的指令才会给你办事</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nimab.org/2011/08/27/84.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>记录两个转域名到 godaddy</title>
		<link>http://www.nimab.org/2011/08/27/79.html</link>
		<comments>http://www.nimab.org/2011/08/27/79.html#comments</comments>
		<pubDate>Sat, 27 Aug 2011 05:57:25 +0000</pubDate>
		<dc:creator>Kafeifei</dc:creator>
				<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://www.nimab.org/?p=79</guid>
		<description><![CDATA[转域名流程 上家申请转出域名 获得域名转移密码 取消TransferProhibited（解锁） 下家申请转入域名，一般需要续费一年，然后输入转移密码 上家确认转出 转移成功 我有两个域名，一个是商务中国的代理(520idc)，找到客服QQ，传身份证扫描，100元服务费，顺利解锁并获得转移密码，第二个工作日收到邮件，点确认转出，完成。非常顺利，这100元服务费很值。 另一个是新网互联的代理(edong)，找到客服留言，发来一对资料，要求将申请书、身份证复印件到上海的公司。 三个工作日后我主动打电话询问情况，要求15元到北京的快递费。 一天后留言询问，被告知域名所有机构(Registrant Organization)不是我的名字，而且这个值不能修改，要求先过户，过户费50元，并且过户后一年内不能转出域名！ 您好：具体的注册信息您可以登录以下管理地址查看： 域名：nimab.org 密码：****** 管理地址:http://mgt.dns.com.cn/ 过户流程是：在会员中心，页面下方直接购物通道“增值服务”，找到“域名服务产品”下个订单（收费）50元/个。然后再邮寄过户书面资料！ 过户需要出具如下书面资料： ①域名过户协议：域名所有者双方签字（个人）或盖章（公司） http://www.edong.com/Documents/dnsgh.doc （原所有人不存在的，旧所有人签字（盖章）需与免责申明上签字（盖章）一致） ②新旧所有人证件： 1）域名所有者为公司:提供营业执照副本复印件,带有工商的年审章，且加盖公章 2）域名所有者为个人:提供个人身份证复印件,如是第二代,需要正反两面 ③域名过户免责申明（申明上签字（盖章）由真实存在所有人签字（盖章）） 原所有人正确过户免责申明： http://www.edong.com/Documents/zhengchangyuming.doc 原所有人不正确过户免责申明： http://www.edong.com/Documents/wentiyuming.doc 以上资料需要邮寄到我司： 公司总部地址：上海市 浦东新区 外高桥保税区 富特北路399号 华三大厦4层 邮政编码：200131 域名客服(收) 联系电话：021-51873666 头大了！不过转折点就在这里，我登陆新网域名管理系统以后发现(Registrant Organization)有一次修改的机会，于是修改之。再看，居然有转出域名的功能！ 您尚未开通在线转移功能，请登录会员或联系为您提供域名注册服务的代理开通! 如在转移过程中遇到问题请联系新网互联客服中心，我们会为您解答。 通过代理商注册域名的用户，请您先联系代理为您开通转移功能，如代理无任何理由的拒绝为您开通在线转移，请与我们联系，我们会帮助您完成域名转出，非常感谢！ 客服电话：95105612（免长话费） 服务邮箱：support@dns.com.cn 于是，两次留言要求开通在线转移功能，并附上新网的通知。 终于给我开通了在线转移功能。 在新网申请转出域名，顺利获得转移密码。 等了4天没有收到确认转出邮件，不过5天内新网没驳回我的请求将自动转出。 第一家代理：山寨，简单粗暴，我喜欢。 第二家代理：官僚，恶心，唾弃。]]></description>
			<content:encoded><![CDATA[<p>转域名流程</p>
<ol>
<li>上家申请转出域名</li>
<li>获得域名转移密码</li>
<li>取消TransferProhibited（解锁）</li>
<li>下家申请转入域名，一般需要续费一年，然后输入转移密码</li>
<li>上家确认转出</li>
<li>转移成功</li>
</ol>
<p>我有两个域名，一个是商务中国的代理(520idc)，找到客服QQ，传身份证扫描，100元服务费，顺利解锁并获得转移密码，第二个工作日收到邮件，点确认转出，完成。非常顺利，这100元服务费很值。</p>
<p>另一个是新网互联的代理(edong)，找到客服留言，发来一对资料，要求将申请书、身份证复印件到上海的公司。<br />
三个工作日后我主动打电话询问情况，要求15元到北京的快递费。<br />
一天后留言询问，被告知域名所有机构(Registrant Organization)不是我的名字，而且这个值不能修改，要求先过户，过户费50元，并且过户后一年内不能转出域名！</p>
<pre>
您好：具体的注册信息您可以登录以下管理地址查看：
域名：nimab.org
密码：******
管理地址:http://mgt.dns.com.cn/
过户流程是：在会员中心，页面下方直接购物通道“增值服务”，找到“域名服务产品”下个订单（收费）50元/个。然后再邮寄过户书面资料！
过户需要出具如下书面资料：
①域名过户协议：域名所有者双方签字（个人）或盖章（公司）

http://www.edong.com/Documents/dnsgh.doc

（原所有人不存在的，旧所有人签字（盖章）需与免责申明上签字（盖章）一致）
②新旧所有人证件：
1）域名所有者为公司:提供营业执照副本复印件,带有工商的年审章，且加盖公章
2）域名所有者为个人:提供个人身份证复印件,如是第二代,需要正反两面
③域名过户免责申明（申明上签字（盖章）由真实存在所有人签字（盖章））
原所有人正确过户免责申明：

http://www.edong.com/Documents/zhengchangyuming.doc

原所有人不正确过户免责申明： http://www.edong.com/Documents/wentiyuming.doc
以上资料需要邮寄到我司：
公司总部地址：上海市 浦东新区 外高桥保税区 富特北路399号 华三大厦4层 邮政编码：200131 域名客服(收) 联系电话：021-51873666
</pre>
<p>头大了！不过转折点就在这里，我登陆新网域名管理系统以后发现(Registrant Organization)有一次修改的机会，于是修改之。再看，居然有转出域名的功能！</p>
<pre>
您尚未开通在线转移功能，请登录会员或联系为您提供域名注册服务的代理开通!
如在转移过程中遇到问题请联系新网互联客服中心，我们会为您解答。
通过代理商注册域名的用户，请您先联系代理为您开通转移功能，如代理无任何理由的拒绝为您开通在线转移，请与我们联系，我们会帮助您完成域名转出，非常感谢！
客服电话：95105612（免长话费） 服务邮箱：support@dns.com.cn
</pre>
<p>于是，两次留言要求开通在线转移功能，并附上新网的通知。<br />
终于给我开通了在线转移功能。<br />
在新网申请转出域名，顺利获得转移密码。<br />
等了4天没有收到确认转出邮件，不过5天内新网没驳回我的请求将自动转出。</p>
<p>第一家代理：山寨，简单粗暴，我喜欢。<br />
第二家代理：官僚，恶心，唾弃。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nimab.org/2011/08/27/79.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java 1.5 for OS X Lion</title>
		<link>http://www.nimab.org/2011/07/26/73.html</link>
		<comments>http://www.nimab.org/2011/07/26/73.html#comments</comments>
		<pubDate>Tue, 26 Jul 2011 09:16:27 +0000</pubDate>
		<dc:creator>Kafeifei</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[MacosX]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Zend]]></category>

		<guid isPermaLink="false">http://www.nimab.org/?p=73</guid>
		<description><![CDATA[请参看：http://www.s-seven.net/java_15_lion]]></description>
			<content:encoded><![CDATA[<p>请参看：<a href="http://www.s-seven.net/java_15_lion">http://www.s-seven.net/java_15_lion</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nimab.org/2011/07/26/73.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mac flush DNS 缓存</title>
		<link>http://www.nimab.org/2010/02/23/69.html</link>
		<comments>http://www.nimab.org/2010/02/23/69.html#comments</comments>
		<pubDate>Tue, 23 Feb 2010 01:56:56 +0000</pubDate>
		<dc:creator>xdanger</dc:creator>
				<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://www.nimab.org/?p=69</guid>
		<description><![CDATA[&#60; 10.5: lookupd -flushcache &#62;= 10.5: dscacheutil -flushcache]]></description>
			<content:encoded><![CDATA[<p>&lt; 10.5: lookupd -flushcache<br />
&gt;= 10.5: dscacheutil -flushcache</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nimab.org/2010/02/23/69.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>关于Doctype</title>
		<link>http://www.nimab.org/2009/10/26/61.html</link>
		<comments>http://www.nimab.org/2009/10/26/61.html#comments</comments>
		<pubDate>Mon, 26 Oct 2009 11:09:33 +0000</pubDate>
		<dc:creator>Kafeifei</dc:creator>
				<category><![CDATA[8diagrams]]></category>

		<guid isPermaLink="false">http://www.nimab.org/?p=61</guid>
		<description><![CDATA[从某年开始，国内网站对html的第一行进行了大规模改动，就是大力鼓吹“xhtml+css”的时候吧。 其实就是增加了一行： &#60;!DOCTYPE html PUBLIC &#34;-//W3C//DTD XHTML 1.0 Transitional//EN&#34; &#34;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&#34;&#62; 当时没有太多别的感受，除了所有网站都变慢了。当时的电脑配置不好，发现访问大点的网页都显得力不从心了，正好推动了硬件发展…… 废话多了点，请看文章（有翻译得比较烂的版本，google上找）：http://hsivonen.iki.fi/doctype/ 这里要说的重点就是浏览器的模式选择，有三个： Quirks Mode Standards Mode Almost Standards Mode 性能 Q>A>S，其中IE的Q模式不支持css2.1，但性能最好，比其他模式快很多很多，其他浏览器没关注，不知道具体情况，反正性能都不差。 IE很重要，性能很重要，对用户来说，最好的模式就是Q。 对开发者而言，最好的模式是S。]]></description>
			<content:encoded><![CDATA[<p>从某年开始，国内网站对html的第一行进行了大规模改动，就是大力鼓吹“xhtml+css”的时候吧。<br />
其实就是增加了一行：
<div class="hl-surround" ><div class="hl-main"><pre>&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;
&quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;</pre></div></div>
<p>当时没有太多别的感受，除了所有网站都变慢了。当时的电脑配置不好，发现访问大点的网页都显得力不从心了，正好推动了硬件发展……<br />
废话多了点，请看文章（有翻译得比较烂的版本，google上找）：<a href="http://hsivonen.iki.fi/doctype/">http://hsivonen.iki.fi/doctype/</a></p>
<p>这里要说的重点就是浏览器的模式选择，有三个：<br />
Quirks Mode<br />
Standards Mode<br />
Almost Standards Mode<br />
性能 Q>A>S，其中IE的Q模式不支持css2.1，但性能最好，比其他模式快很多很多，其他浏览器没关注，不知道具体情况，反正性能都不差。</p>
<p>IE很重要，性能很重要，对用户来说，最好的模式就是Q。<br />
对开发者而言，最好的模式是S。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nimab.org/2009/10/26/61.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Zend Studio 5.5 on Snow leopard</title>
		<link>http://www.nimab.org/2009/09/03/54.html</link>
		<comments>http://www.nimab.org/2009/09/03/54.html#comments</comments>
		<pubDate>Thu, 03 Sep 2009 07:03:31 +0000</pubDate>
		<dc:creator>Kafeifei</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[Zend]]></category>

		<guid isPermaLink="false">http://www.nimab.org/?p=54</guid>
		<description><![CDATA[其实是因为snow leopard里没有jre1.5，1.5被链接到1.6了。 wget http://www.cs.washington.edu/homes/isdal/snow_leopard_workaround/java.1.5.0-leopard.tar.gz tar -xvzf java.1.5.0-leopard.tar.gz rm -f java.1.5.0-leopard.tar.gz sudo mv 1.5.0 /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0 cd /System/Library/Frameworks/JavaVM.framework/Versions/ sudo ln -sf 1.5.0 1.5]]></description>
			<content:encoded><![CDATA[<p>其实是因为snow leopard里没有jre1.5，1.5被链接到1.6了。</p>
<div class="hl-surround" ><div class="hl-main"><pre>wget http://www.cs.washington.edu/homes/isdal/snow_leopard_workaround/java.1.5.0-leopard.tar.gz
tar -xvzf java.1.5.0-leopard.tar.gz
rm -f java.1.5.0-leopard.tar.gz
sudo mv 1.5.0 /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0
cd /System/Library/Frameworks/JavaVM.framework/Versions/
sudo ln -sf 1.5.0 1.5</pre></div></div>
]]></content:encoded>
			<wfw:commentRss>http://www.nimab.org/2009/09/03/54.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>几行bash分析日志并报警强力蜘蛛</title>
		<link>http://www.nimab.org/2008/08/25/51.html</link>
		<comments>http://www.nimab.org/2008/08/25/51.html#comments</comments>
		<pubDate>Mon, 25 Aug 2008 10:45:57 +0000</pubDate>
		<dc:creator>xdanger</dc:creator>
				<category><![CDATA[bash]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[log]]></category>

		<guid isPermaLink="false">http://www.nimab.org/?p=51</guid>
		<description><![CDATA[被SB蜘蛛抓烦了，今天早上一看，有2个IP一小时就抓了我80G的页面，还都是动态页面。 首先让 Apache 记的日志最小化，好处不用说了。 SetEnvIfNoCase Request_URI \.gif$ dontlog SetEnvIfNoCase Request_URI \.jpg$ dontlog SetEnvIfNoCase Request_URI \.png$ dontlog SetEnvIfNoCase Request_URI \.swf$ dontlog SetEnvIfNoCase Request_URI \.css$ dontlog SetEnvIfNoCase Request_URI \.js$ dontlog SetEnvIfNoCase Request_URI \.ico$ dontlog CustomLog "&#124;/usr/local/sbin/cronolog /var/log/httpd/%Y-%m/%d-%H.ip" "%{X-Forwarded-For}i" env=!dontlog 因为我的 Apache 是躲在 n 层代理的后面，所以只能记录 %{X-Forwarded-For}，里面包含真实 IP，但是需要下一步分析去取出。 cd /var/log/httpd f=`date -d '1 hours ago' +%Y-%m/%d-%H.ip` ip=`sed 's#^\([0-9\.]\{1,\}\)[0-9 \.,\s]\{1,\}#\1#' [...]]]></description>
			<content:encoded><![CDATA[<p>被SB蜘蛛抓烦了，今天早上一看，有2个IP一小时就抓了我80G的页面，还都是动态页面。</p>
<p>首先让 Apache 记的日志最小化，好处不用说了。</p>
<p><code><br />
    SetEnvIfNoCase Request_URI \.gif$ dontlog<br />
    SetEnvIfNoCase Request_URI \.jpg$ dontlog<br />
    SetEnvIfNoCase Request_URI \.png$ dontlog<br />
    SetEnvIfNoCase Request_URI \.swf$ dontlog<br />
    SetEnvIfNoCase Request_URI \.css$ dontlog<br />
    SetEnvIfNoCase Request_URI \.js$  dontlog<br />
    SetEnvIfNoCase Request_URI \.ico$ dontlog<br />
    CustomLog "|/usr/local/sbin/cronolog /var/log/httpd/%Y-%m/%d-%H.ip" "%{X-Forwarded-For}i" env=!dontlog<br />
</code></p>
<p>因为我的 Apache 是躲在 n 层代理的后面，所以只能记录 %{X-Forwarded-For}，里面包含真实 IP，但是需要下一步分析去取出。</p>
<p><code><br />
cd /var/log/httpd<br />
f=`date -d '1 hours ago' +%Y-%m/%d-%H.ip`<br />
ip=`sed 's#^\([0-9\.]\{1,\}\)[0-9 \.,\s]\{1,\}#\1#' $f | awk '{a[$1]++ } END{for(i in a){print a[i] " " i}}' | sort -rn | head`<br />
curl -u 机器人的饭否登录名:密码 -d status="$ip" http://api.fanfou.com/statuses/update.xml<br />
rm $f<br />
</code></p>
<p>测试下来一小时 10M 的 log，分析一下也就 3 秒左右，还有1秒是发送给饭否的报警的。如果记录的直接就是真实 IP，那可以去掉 sed 那段，分析应该还会快很多（log文件就小很多了）。</p>
<p>看到有夸张的，不是常规搜索引擎蜘蛛的话，就咔嚓掉。<br />
<code><br />
iptables -A INPUT -s xxx.xxx.xxx.xxx/29 -j DROP<br />
</code><br />
1          202.106.186.*        163蜘蛛<br />
2          202.108.36.*        163蜘蛛<br />
3          202.108.44.*        163蜘蛛<br />
4          202.108.45.*        163蜘蛛<br />
5          202.108.5.*        163蜘蛛<br />
6          202.108.9.*        163蜘蛛<br />
7          220.181.12.*        163蜘蛛<br />
8          220.181.13.*        163蜘蛛<br />
9          220.181.14.*        163蜘蛛<br />
10        220.181.15.*        163蜘蛛<br />
11        220.181.28.*        163蜘蛛<br />
12        220.181.31.*        163蜘蛛<br />
13        222.185.245.*        163蜘蛛<br />
14        202.165.100.*        3721蜘蛛<br />
15        220.181.19.*        百度蜘蛛<br />
16        159.226.50.*        百度蜘蛛<br />
17        202.108.11.*        百度蜘蛛<br />
18        202.108.22.*        百度蜘蛛<br />
19        202.108.23.*        百度蜘蛛<br />
20        202.108.249.*        百度蜘蛛<br />
21        202.108.250.*        百度蜘蛛<br />
22        61.135.145.*        百度蜘蛛<br />
23        61.135.146.*        百度蜘蛛<br />
24        64.124.85.*        become.com<br />
25        61.151.243.*        china蜘蛛<br />
26        202.165.96.*        gais.cs.ccu.edu.tw<br />
27        216.239.33.*        google蜘蛛<br />
28        216.239.35.*        google蜘蛛<br />
29        216.239.37.*        google蜘蛛<br />
30        216.239.39.*        google蜘蛛<br />
31        216.239.51.*        google蜘蛛<br />
32        216.239.53.*        google蜘蛛<br />
33        216.239.55.*        google蜘蛛<br />
34        216.239.57.*        google蜘蛛<br />
35        216.239.59.*        google蜘蛛<br />
36        64.233.161.*        google蜘蛛<br />
37        64.233.189.*        google蜘蛛<br />
38        66.102.11.*        google蜘蛛<br />
39        66.102.7.*        google蜘蛛<br />
40        66.102.9.*        google蜘蛛<br />
41        66.249.64.*        google蜘蛛<br />
42        66.249.65.*        google蜘蛛<br />
43        66.249.66.*        google蜘蛛<br />
44        66.249.71.*        google蜘蛛<br />
45        66.249.72.*        google蜘蛛<br />
46        72.14.207.*        google蜘蛛<br />
47        61.135.152.*        iask蜘蛛<br />
48        65.54.188.*        msn蜘蛛<br />
49        65.54.225.*        msn蜘蛛<br />
50        65.54.226.*        msn蜘蛛<br />
51        65.54.228.*        msn蜘蛛<br />
52        65.54.229.*        msn蜘蛛<br />
53        207.46.98.*        msn蜘蛛<br />
54        207.68.157.*        msn蜘蛛<br />
55        194.224.199.*        noxtrumbot<br />
56        220.181.8.*        Outfox<br />
57        221.239.209.*        Outfox<br />
58        217.212.224.*        psbot<br />
59        219.133.40.*        QQ蜘蛛<br />
60        202.96.170.*        QQ蜘蛛<br />
61        202.104.129.*        QQ蜘蛛<br />
62        61.135.157.*        QQ蜘蛛<br />
63        219.142.118.*        sina蜘蛛<br />
64        219.142.78.*        sina蜘蛛<br />
65        61.135.132.*        sohu蜘蛛<br />
66        220.181.26.*        sohu蜘蛛<br />
          220.181.19.*<br />
67        61.135.158.*        tom蜘蛛<br />
68        66.196.90.*        yahoo蜘蛛<br />
69        66.196.91.*        yahoo蜘蛛<br />
70        68.142.249.*        yahoo蜘蛛<br />
71        68.142.250.*        yahoo蜘蛛<br />
72        68.142.251.*        yahoo蜘蛛<br />
73        202.165.102.*        yahoo中国蜘蛛<br />
74        202.160.178.*        yahoo中国蜘蛛<br />
75        202.160.179.*        yahoo中国蜘蛛<br />
76        202.160.180.*        yahoo中国蜘蛛<br />
77        202.160.181.*        yahoo中国蜘蛛<br />
78        202.160.183.*        yahoo中国蜘蛛<br />
79        72.30.101.*        yahoo蜘蛛<br />
80        72.30.102.*        yahoo蜘蛛<br />
81        72.30.103.*        yahoo蜘蛛<br />
82        72.30.104.*        yahoo蜘蛛<br />
83        72.30.107.*        yahoo蜘蛛<br />
84        72.30.110.*        yahoo蜘蛛<br />
85        72.30.111.*        yahoo蜘蛛<br />
86        72.30.128.*        yahoo蜘蛛<br />
87        72.30.129.*        yahoo蜘蛛<br />
88        72.30.131.*        yahoo蜘蛛<br />
89        72.30.133.*        yahoo蜘蛛<br />
90        72.30.134.*        yahoo蜘蛛<br />
91        72.30.135.*        yahoo蜘蛛<br />
92        72.30.216.*        yahoo蜘蛛<br />
93        72.30.226.*        yahoo蜘蛛<br />
94        72.30.252.*        yahoo蜘蛛<br />
95        72.30.97.*        yahoo蜘蛛<br />
96        72.30.98.*        yahoo蜘蛛<br />
97        72.30.99.*        yahoo蜘蛛<br />
98        74.6.74.*        yahoo蜘蛛<br />
99        202.108.4.*        中搜蜘蛛<br />
100      202.108.4.*        中搜蜘蛛<br />
101      202.108.33.*      中搜蜘蛛<br />
102      202.96.51.*        中搜蜘蛛<br />
103      219.142.53.*        中搜蜘蛛 </p>
]]></content:encoded>
			<wfw:commentRss>http://www.nimab.org/2008/08/25/51.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>mplayer mac osx 更新 svn-27466</title>
		<link>http://www.nimab.org/2008/08/16/50.html</link>
		<comments>http://www.nimab.org/2008/08/16/50.html#comments</comments>
		<pubDate>Sat, 16 Aug 2008 13:09:21 +0000</pubDate>
		<dc:creator>Kafeifei</dc:creator>
				<category><![CDATA[MacosX]]></category>
		<category><![CDATA[mplayer]]></category>

		<guid isPermaLink="false">http://www.nimab.org/?p=50</guid>
		<description><![CDATA[http://www.nimab.org/mplayerosx]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.nimab.org/mplayerosx">http://www.nimab.org/mplayerosx</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nimab.org/2008/08/16/50.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mplayer mac osx 更新 svn-27266</title>
		<link>http://www.nimab.org/2008/07/12/49.html</link>
		<comments>http://www.nimab.org/2008/07/12/49.html#comments</comments>
		<pubDate>Sat, 12 Jul 2008 05:45:56 +0000</pubDate>
		<dc:creator>Kafeifei</dc:creator>
				<category><![CDATA[MacosX]]></category>
		<category><![CDATA[mplayer]]></category>

		<guid isPermaLink="false">http://www.nimab.org/?p=49</guid>
		<description><![CDATA[http://www.nimab.org/mplayerosx]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.nimab.org/mplayerosx">http://www.nimab.org/mplayerosx</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nimab.org/2008/07/12/49.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>分阶段的人生</title>
		<link>http://www.nimab.org/2008/07/02/48.html</link>
		<comments>http://www.nimab.org/2008/07/02/48.html#comments</comments>
		<pubDate>Wed, 02 Jul 2008 06:55:33 +0000</pubDate>
		<dc:creator>xdanger</dc:creator>
				<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://www.nimab.org/?p=48</guid>
		<description><![CDATA[有一天,神创造了一头牛. 神对牛说:「你要整天在田里替农夫耕田,供应牛奶给人类饮用. 你要工作直至日落，而你只能吃草.我给你50年的寿命.」 牛抗议:「我这么辛苦，还只能吃草，我只要20年寿命，余下的还给你.」神答应了. 第二天,神创造了猴子. 神跟猴子说:「你要娱乐人类,令他们欢笑你要表演翻跟斗 ,而你只能吃香蕉.我给你20年的寿命.」 猴子抗议:「要引人发笑,表演杂技,还要翻跟斗,这么辛苦,我活10年好了.」 神答应. 第三天,神创造了狗. 神对狗说:「你要站在门口吠.你吃主人吃剩的东西.我给你25年的寿命.」 狗抗议:「整天坐在门口吠,我要15年好了,余下的还给你.」 神答应. 第四天,神创造了人.神对人说:「你只需要睡觉,吃东西和玩耍,不用做什么辛苦的事,只需要尽情享受生命,我 给你20年的寿命.」 人抗议:「这么好的生活只有20年」神没说话. 人对神说「这样吧.牛还了30年给你，猴子还了10年，狗也还了10年，这些都给我好了，那我就能活到70岁.」神答应了. 这就是为甚么,我们的头20年,只需吃饭.睡觉和玩耍. 之后的30年,我们像一条牛整天工作养家，. 接著的10年,我们退休了,我们得像只猴子表演杂耍来娱乐自己的孙儿， 最后的10年，整天留在家里，像一条狗坐在门口旁边看……]]></description>
			<content:encoded><![CDATA[<p>有一天,神创造了一头牛. 神对牛说:「你要整天在田里替农夫耕田,供应牛奶给人类饮用. 你要工作直至日落，而你只能吃草.我给你50年的寿命.」<br />
牛抗议:「我这么辛苦，还只能吃草，我只要20年寿命，余下的还给你.」神答应了.<br />
第二天,神创造了猴子. 神跟猴子说:「你要娱乐人类,令他们欢笑你要表演翻跟斗 ,而你只能吃香蕉.我给你20年的寿命.」<br />
猴子抗议:「要引人发笑,表演杂技,还要翻跟斗,这么辛苦,我活10年好了.」 神答应.<br />
第三天,神创造了狗. 神对狗说:「你要站在门口吠.你吃主人吃剩的东西.我给你25年的寿命.」<br />
狗抗议:「整天坐在门口吠,我要15年好了,余下的还给你.」 神答应.<br />
第四天,神创造了人.神对人说:「你只需要睡觉,吃东西和玩耍,不用做什么辛苦的事,只需要尽情享受生命,我 给你20年的寿命.」<br />
人抗议:「这么好的生活只有20年」神没说话.<br />
人对神说「这样吧.牛还了30年给你，猴子还了10年，狗也还了10年，这些都给我好了，那我就能活到70岁.」神答应了.<br />
这就是为甚么,我们的头20年,只需吃饭.睡觉和玩耍.<br />
之后的30年,我们像一条牛整天工作养家，.<br />
接著的10年,我们退休了,我们得像只猴子表演杂耍来娱乐自己的孙儿，<br />
最后的10年，整天留在家里，像一条狗坐在门口旁边看……   </p>
]]></content:encoded>
			<wfw:commentRss>http://www.nimab.org/2008/07/02/48.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>mplayer-macosx 更新</title>
		<link>http://www.nimab.org/2008/06/07/46.html</link>
		<comments>http://www.nimab.org/2008/06/07/46.html#comments</comments>
		<pubDate>Sat, 07 Jun 2008 05:41:44 +0000</pubDate>
		<dc:creator>Kafeifei</dc:creator>
				<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://www.nimab.org/?p=46</guid>
		<description><![CDATA[http://www.nimab.org/mplayerosx [27002]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.nimab.org/mplayerosx">http://www.nimab.org/mplayerosx</a> [27002]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nimab.org/2008/06/07/46.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NTFS for Mac® OS X 6.5</title>
		<link>http://www.nimab.org/2008/05/31/45.html</link>
		<comments>http://www.nimab.org/2008/05/31/45.html#comments</comments>
		<pubDate>Fri, 30 May 2008 16:29:33 +0000</pubDate>
		<dc:creator>Kafeifei</dc:creator>
				<category><![CDATA[MacosX]]></category>

		<guid isPermaLink="false">http://www.nimab.org/?p=45</guid>
		<description><![CDATA[终于可以不用忍受ntfs-3g那蜗牛速度了，特别是写入速度！ 相比6.0版，没有了打开大文件错误和特定情况下的传输速度问题。 http://www.paragon-software.com/home/ntfs-mac/download.html Preference pane is added; Preference pane allows enabling/disabling POSIX permissions on an NTFS volume; Preference pane allows turning off/on Paragon NTFS for Linux driver; Preference pane allows disabling/enabling NTFS file/folder compression; Preferences pane allows disabling/enabling Last Access Time attribute update; Improved performance; Improved driver stability.]]></description>
			<content:encoded><![CDATA[<p>终于可以不用忍受ntfs-3g那蜗牛速度了，特别是写入速度！<br />
相比6.0版，没有了打开大文件错误和特定情况下的传输速度问题。<br />
<a href="http://www.paragon-software.com/home/ntfs-mac/download.html">http://www.paragon-software.com/home/ntfs-mac/download.html</a></p>
<blockquote><p>Preference pane is added;<br />
Preference pane allows enabling/disabling POSIX permissions on an NTFS volume;<br />
Preference pane allows turning off/on Paragon NTFS for Linux driver;<br />
Preference pane allows disabling/enabling NTFS file/folder compression;<br />
Preferences pane allows disabling/enabling Last Access Time attribute update;<br />
Improved performance;<br />
Improved driver stability.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.nimab.org/2008/05/31/45.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mplayer-mscosx更新</title>
		<link>http://www.nimab.org/2008/05/25/44.html</link>
		<comments>http://www.nimab.org/2008/05/25/44.html#comments</comments>
		<pubDate>Sun, 25 May 2008 11:47:05 +0000</pubDate>
		<dc:creator>Kafeifei</dc:creator>
				<category><![CDATA[MacosX]]></category>
		<category><![CDATA[mplayer]]></category>

		<guid isPermaLink="false">http://www.nimab.org/?p=44</guid>
		<description><![CDATA[http://www.nimab.org/mplayerosx [26863]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.nimab.org/mplayerosx">http://www.nimab.org/mplayerosx</a> [26863]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nimab.org/2008/05/25/44.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>只不过想听听音乐。。。。。zt</title>
		<link>http://www.nimab.org/2008/05/18/43.html</link>
		<comments>http://www.nimab.org/2008/05/18/43.html#comments</comments>
		<pubDate>Sun, 18 May 2008 05:21:45 +0000</pubDate>
		<dc:creator>Kafeifei</dc:creator>
				<category><![CDATA[8diagrams]]></category>

		<guid isPermaLink="false">http://www.nimab.org/2008/05/18/43.html</guid>
		<description><![CDATA[转自：http://blog.sina.com.cn/s/reader_4abce54e010008li.html 本EG完全虚构，如有雷同实属无奈～～～～ 第一幕：入门 新人A：请问，200以下买什么耳机好？ （叮咚！新人A转职为菜鸟A） 闲人A：这个价格真的很尴尬啊……200以下值得买的也就是MX500了。 菜鸟A：那不是耳塞吗？我想买耳机。 闲人A：这样啊……那你多加点钱买PX100吧，300不到，很平衡的。 （菜鸟A心想：平衡是什么意思？） 闲人B：哎呀，PX100这么没个性的耳机有什么好的？买K66吧，300出头，声场一流！ （菜鸟A心想：声场是什么东东？） 闲人C：kao！K66这种没有下半身的耳机有什么意思？听我的，DT231，500以下无敌！ （菜鸟A心想：没有下半身？） 闲人A：唉，一帮菜鸟…… 闲人B：×你大爷！^￥％^￥^￥…… 闲人C：你丫^％^#￥％￥#…… 菜鸟A：各位大侠……我一会儿再来…… 第二幕：进阶 菜鸟A：各位大侠，我在论坛潜了一段时间的水，觉得K66可能适合我。请各位大侠再给点建议吧。 （叮咚！菜鸟A转职为烧友A） 侠客A：K66？这种低端就不用烧了吧，直接上好的不就得了？说说看，喜欢K66的哪一点？ 烧友A：大家都说它人声好…… 侠客A：喜欢人声啊，那就上A500好了。 侠客B：切，小日本那种BT音染也拿来说事，你知不知道什么叫HI-FI啊？ 侠客A：……可是A500的人声是好啊…… （叮咚！侠客A转职为闲人A） 侠客B：你上DT531吧，音染少，人声虽然单薄但是特真实。其实薄也薄不到哪里去，你听蔡琴，一点都不薄。 烧友A：可是我喜欢王菲……DT531多少钱？ 侠客B：停产了。 烧友A：啊？ 侠客B：你不知道，停产的都是好东西！我认识一个老板，他那儿有工包…… （叮咚！侠客B转职为枪手B） 烧友A心想：好险！ 侠客C：这帮烂人！没把你吓着吧。其实啊，我还是推荐M1，1000以下best buy。你看看指标就知道了，和1000以上的耳机比起来毫不逊色呢。 烧友A：是啊，很多人都说过它不错……哎？我的预算只有300…… 侠客C：呵呵，相信你过不多久就会厌倦K66的。一步到位多好，省钱啊。牛人A，你说是不是？ 牛人A：…… 烧友A：……好吧！老板～～～～ 老板旁白：凯子上钩了，hoho～ 侠客C：恭喜！以后就不用操心耳机了，安心地欣赏音乐吧……（烧友A下场）才怪！ 第三幕： 烧 烧友A：各位大侠，我这个M1的声音不行啊！ 侠客D：好耳机都是要煲的。今天你煲了没有？ 烧友A：当我第一天出来混的？煲了半年了！ （叮咚！烧友A转职为侠客A） （叮咚！侠客D转职为闲人D） 牛人A：你用的是什么音源？ 侠客A：随身听。 牛人A：难怪了。M1虽然可以用在随身听上，但是要发挥它真正的实力，还是得上耳放。 侠客A：耳放？哇呀呀～～～又是一大笔钱！怎么没人告诉我这事啊？ 牛人A：你也没问呀，嘿嘿。 侠客A：……买耳放去！老板～～～～ 老板旁白：耳机凯子就是好，削过一次还能接着削，hoho～ [...]]]></description>
			<content:encoded><![CDATA[<p>转自：http://blog.sina.com.cn/s/reader_4abce54e010008li.html</p>
<p>本EG完全虚构，如有雷同实属无奈～～～～</p>
<p>第一幕：入门</p>
<p>新人A：请问，200以下买什么耳机好？<br />
（叮咚！新人A转职为菜鸟A）<br />
闲人A：这个价格真的很尴尬啊……200以下值得买的也就是MX500了。<br />
菜鸟A：那不是耳塞吗？我想买耳机。<br />
闲人A：这样啊……那你多加点钱买PX100吧，300不到，很平衡的。<br />
（菜鸟A心想：平衡是什么意思？）<br />
闲人B：哎呀，PX100这么没个性的耳机有什么好的？买K66吧，300出头，声场一流！<br />
（菜鸟A心想：声场是什么东东？）<br />
闲人C：kao！K66这种没有下半身的耳机有什么意思？听我的，DT231，500以下无敌！<br />
（菜鸟A心想：没有下半身？）<br />
闲人A：唉，一帮菜鸟……<br />
闲人B：×你大爷！^￥％^￥^￥……<br />
闲人C：你丫^％^#￥％￥#……<br />
菜鸟A：各位大侠……我一会儿再来……</p>
<p>第二幕：进阶</p>
<p>菜鸟A：各位大侠，我在论坛潜了一段时间的水，觉得K66可能适合我。请各位大侠再给点建议吧。<br />
（叮咚！菜鸟A转职为烧友A）<br />
侠客A：K66？这种低端就不用烧了吧，直接上好的不就得了？说说看，喜欢K66的哪一点？<br />
烧友A：大家都说它人声好……<br />
侠客A：喜欢人声啊，那就上A500好了。<br />
侠客B：切，小日本那种BT音染也拿来说事，你知不知道什么叫HI-FI啊？<br />
侠客A：……可是A500的人声是好啊……<br />
（叮咚！侠客A转职为闲人A）<br />
侠客B：你上DT531吧，音染少，人声虽然单薄但是特真实。其实薄也薄不到哪里去，你听蔡琴，一点都不薄。<br />
烧友A：可是我喜欢王菲……DT531多少钱？<br />
侠客B：停产了。<br />
烧友A：啊？<br />
侠客B：你不知道，停产的都是好东西！我认识一个老板，他那儿有工包……<br />
（叮咚！侠客B转职为枪手B）<br />
烧友A心想：好险！<br />
侠客C：这帮烂人！没把你吓着吧。其实啊，我还是推荐M1，1000以下best buy。你看看指标就知道了，和1000以上的耳机比起来毫不逊色呢。<br />
烧友A：是啊，很多人都说过它不错……哎？我的预算只有300……<br />
侠客C：呵呵，相信你过不多久就会厌倦K66的。一步到位多好，省钱啊。牛人A，你说是不是？<br />
牛人A：……<br />
烧友A：……好吧！老板～～～～<br />
老板旁白：凯子上钩了，hoho～<br />
侠客C：恭喜！以后就不用操心耳机了，安心地欣赏音乐吧……（烧友A下场）才怪！</p>
<p>第三幕： 烧</p>
<p>烧友A：各位大侠，我这个M1的声音不行啊！<br />
侠客D：好耳机都是要煲的。今天你煲了没有？<br />
烧友A：当我第一天出来混的？煲了半年了！<br />
（叮咚！烧友A转职为侠客A）<br />
（叮咚！侠客D转职为闲人D）<br />
牛人A：你用的是什么音源？<br />
侠客A：随身听。<br />
牛人A：难怪了。M1虽然可以用在随身听上，但是要发挥它真正的实力，还是得上耳放。<br />
侠客A：耳放？哇呀呀～～～又是一大笔钱！怎么没人告诉我这事啊？<br />
牛人A：你也没问呀，嘿嘿。<br />
侠客A：……买耳放去！老板～～～～<br />
老板旁白：耳机凯子就是好，削过一次还能接着削，hoho～</p>
<p>侠客A：上了耳放的M1确实好多了，可我怎么还觉得不满意啊？<br />
牛人B：你听什么比较多？<br />
侠客A：我喜欢王菲。<br />
牛人B：用M1听王菲？亏你想得出来！听王菲的话，同价位的K501比M1好多了！<br />
侠客A：啊？（一咬牙）老板～～～～<br />
老板旁白：谁说一步到位来着？hoho～</p>
<p>侠客A：谁跟我说K501好来着？我一点感觉都没有！K501真烂！<br />
牛人B：Stop!你侮辱我可以，但是你侮辱K501就不行！这是设计师智慧的结晶！……不，也不许你侮辱我！K501不是那么好伺候的，得配专门的耳放才可以。<br />
侠客A：我……算了。老板～～～～<br />
老板旁白：牛人啊，托您说话说半截的福，hoho～</p>
<p>侠客A：换过耳放，终于知道K501的好了。可是，怎么感觉还差那么一点呢？<br />
牛人C：不会吧，这么好的耳机用随身听做音源，连台机都没用？就算是国外捡来的洋垃圾台机修修再用，也比随身听强啊。<br />
侠客A：老板～～～～<br />
牛人D：信号线也很重要的，随机配的那都是垃圾线！<br />
侠客A：老板～～～～<br />
牛人E：电源线也很重要！没有稳定的电源，怎么会有稳定的声音？<br />
侠客A：老板～～～～<br />
牛人F：光换线没用，电源还要滤波！你家接的市电没经过HIFI优化吧？<br />
侠客A：老板～～～～<br />
老板旁白：多好的凯子啊！hoho～<br />
（叮咚！侠客A转职为牛人A）<br />
闲人A：恭喜大侠！<br />
闲人B：大侠的装备好多哦，偶好崇拜你～～～～<br />
闲人C：大侠～～～～俺想跟你的大牛装备合影，可以吗？<br />
牛人A心想：我本来想干嘛来着？</p>
<p>第四幕：轮回</p>
<p>侠客C：这帮烂人！没把你吓着吧。其实啊，我还是推荐M1，1000以下best buy。你看看指标就知道了，和1000以上的耳机比起来毫不逊色呢。<br />
烧友B：是啊，很多人都说过它不错……哎？我的预算只有300……<br />
侠客C：呵呵，相信你过不多久就会厌倦K66的。一步到位多好，省钱啊。牛人A，你说是不是？<br />
牛人A：……</p>
<p>新人B：请问，KK现在多少钱？<br />
牛人A：我先问问你的音源是什么，不会是随身听吧？用随身听玩KK，那是不行地，是对设计师的不尊重……<br />
（牛人A心想：话是这么说的没错吧？）<br />
新人B：不要以为老子是新来的就好欺负，家里台机功放老早就配齐了，今天就是想找个KK玩玩！怎么，没见过又有品位又有钱的人啊？<br />
牛人A：……<br />
（叮咚！牛人A转职为侠客A）</p>
<p>新人C：咱手里这个K240S咋就这么不中听捏？<br />
侠客A：呵呵，耳机都是要煲的嘛。今天你煲了没有？<br />
（侠客A心想：大家都这么说，应该没错吧？）<br />
新人C：大哥，不瞒你说，咱虽然是新人，可是在论坛潜水也不是一天两天了，煲耳机这事咱还是知道地！<br />
侠客A：……<br />
（叮咚！侠客A转职为闲人A）</p>
<p>新人D：各位大侠，请给小女子推荐一款300以下的耳机吧！<br />
闲人A：PX100吧，很平衡<br />
（闲人A心想：平衡是什么意思？我在说什么？）<br />
闲人B：哎呀，PX100这么没个性的耳机有什么好的？买K66吧，300出头，声场一流！<br />
闲人C：靠！K66这种没有下半身的耳机有什么意思？听我的，DT231，500以下无敌！<br />
闲人A：唉，一帮菜鸟……<br />
闲人B：×你大爷！^￥％^￥^￥<br />
闲人C：你丫^％^#￥％￥#</p>
<p>……</p>
<p>剧终<br />
谢谢观赏～～～～</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nimab.org/2008/05/18/43.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>wp post 时500错误重要更新</title>
		<link>http://www.nimab.org/2008/05/10/41.html</link>
		<comments>http://www.nimab.org/2008/05/10/41.html#comments</comments>
		<pubDate>Sat, 10 May 2008 14:31:30 +0000</pubDate>
		<dc:creator>Kafeifei</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.nimab.org/?p=41</guid>
		<description><![CDATA[应该有些人用了我修改过的db.php文件，发现一bug，请尽快更新。 详情链接：http://www.nimab.org/2008/05/01/39.html]]></description>
			<content:encoded><![CDATA[<p>应该有些人用了我修改过的db.php文件，发现一bug，请尽快更新。<br />
详情链接：<a href="http://www.nimab.org/2008/05/01/39.html">http://www.nimab.org/2008/05/01/39.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nimab.org/2008/05/10/41.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>用Mplayer播放高清电影(蓝光原盘)</title>
		<link>http://www.nimab.org/2008/05/10/40.html</link>
		<comments>http://www.nimab.org/2008/05/10/40.html#comments</comments>
		<pubDate>Sat, 10 May 2008 10:15:56 +0000</pubDate>
		<dc:creator>Kafeifei</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[MacosX]]></category>
		<category><![CDATA[mplayer]]></category>

		<guid isPermaLink="false">http://www.nimab.org/?p=40</guid>
		<description><![CDATA[前提还是你的cpu必须强劲，默认情况下mplayer是单线程的，所以显得力不从心，如果你的cpu是双核或支持超线程，那么试试加上一下参数： -lavdopts threads=8 或者，来自这里：http://ubuntuforums.org/showthread.php?t=629701 -vfm ffmpeg -lavdopts lowres=2:fast:skiploopfilter=all:threads=8 --------- 蓝光原盘抓出来的文件一般以 .ts 结尾 h264 标准 ------- update ------ mac下，mplayer的性能明显差很多，经过大量测试，发现问题主要在音频驱动上，我的配置： −vf scale=-2 -lavdopts lowres=1,1400:fast:skiploopfilter=all:threads=8 -ao openal -vo macosx 播放《汽车总动员》时勉强不卡！或许因为ntfs-3g的性能不佳吧，另外lowres这个配置未生效。 −vf scale=-2 可以修正字幕被拉扁的问题（视频质量未见异常）。]]></description>
			<content:encoded><![CDATA[<p>前提还是你的cpu必须强劲，默认情况下mplayer是单线程的，所以显得力不从心，如果你的cpu是双核或支持超线程，那么试试加上一下参数：</p>
<div class="hl-surround" style="height:28px;"><div class="hl-main"><pre>-lavdopts threads=8</pre></div></div>
<p>或者，来自这里：<a href="http://ubuntuforums.org/showthread.php?t=629701">http://ubuntuforums.org/showthread.php?t=629701</a></p>
<div class="hl-surround" style="height:28px;"><div class="hl-main"><pre>-vfm ffmpeg -lavdopts lowres=2:fast:skiploopfilter=all:threads=8</pre></div></div>
<p>---------<br />
蓝光原盘抓出来的文件一般以 .ts 结尾 h264 标准<br />
------- update ------<br />
mac下，mplayer的性能明显差很多，经过大量测试，发现问题主要在音频驱动上，我的配置：</p>
<div class="hl-surround" style="height:28px;"><div class="hl-main"><pre>−vf scale=-2 -lavdopts lowres=1,1400:fast:skiploopfilter=all:threads=8 -ao openal -vo macosx</pre></div></div>
<p>播放《汽车总动员》时勉强不卡！或许因为ntfs-3g的性能不佳吧，另外lowres这个配置未生效。<br />
−vf scale=-2 可以修正字幕被拉扁的问题（视频质量未见异常）。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nimab.org/2008/05/10/40.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress 2.5.1 500 错误解决方法</title>
		<link>http://www.nimab.org/2008/05/01/39.html</link>
		<comments>http://www.nimab.org/2008/05/01/39.html#comments</comments>
		<pubDate>Wed, 30 Apr 2008 17:02:05 +0000</pubDate>
		<dc:creator>Kafeifei</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.nimab.org/?p=39</guid>
		<description><![CDATA[随时听人讲有500错误。 今天在楚云blog上重现了。 抓住机会debug。 结果很快出来： 当你第二次用同样的标题并且标题中含有多字节文字时，有很大机会触发wp一个死循环，然后服务器cpu直接到100%，当运行时间超过max_execution_time时候出现500错误。 死循环在这里：wp-include/post.php &#60;?php ...... if ( 'draft' != $post_status ) { $post_name_check = $wpdb-&#62;get_var($wpdb-&#62;prepare(&#34;SELECT post_name FROM $wpdb-&#62;posts WHERE post_name = %s AND post_type = %s AND ID != %d AND post_parent = %d LIMIT 1&#34;, $post_name, $post_type, $post_ID, $post_parent)); if ($post_name_check &#124;&#124; in_array($post_name, $wp_rewrite-&#62;feeds) ) { $suffix = 2; do { [...]]]></description>
			<content:encoded><![CDATA[<p>随时听人讲有500错误。<br />
今天在<a href="http://www.apollopy.org/">楚云</a>blog上重现了。<br />
抓住机会debug。<br />
结果很快出来：<br />
当你第二次用同样的标题并且标题中含有多字节文字时，有很大机会触发wp一个死循环，然后服务器cpu直接到100%，当运行时间超过max_execution_time时候出现500错误。<br />
死循环在这里：wp-include/post.php</p>
<div class="hl-surround" ><div class="hl-main"><pre><span class="hl-inlinetags">&lt;?php</span><span class="hl-code">
......
</span><span class="hl-reserved">if </span><span class="hl-brackets">( </span><span class="hl-quotes">'</span><span class="hl-string">draft</span><span class="hl-quotes">'</span><span class="hl-code"> != </span><span class="hl-var">$post_status </span><span class="hl-brackets">) {
    </span><span class="hl-var">$post_name_check</span><span class="hl-code"> = </span><span class="hl-var">$wpdb</span><span class="hl-code">-&gt;</span><span class="hl-identifier">get_var</span><span class="hl-brackets">(</span><span class="hl-var">$wpdb</span><span class="hl-code">-&gt;</span><span class="hl-identifier">prepare</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">SELECT post_name FROM </span><span class="hl-var">$wpdb</span><span class="hl-string">-&gt;posts WHERE post_name = %s AND post_type = %s AND ID != %d AND post_parent = %d LIMIT 1</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-var">$post_name</span><span class="hl-code">, </span><span class="hl-var">$post_type</span><span class="hl-code">, </span><span class="hl-var">$post_ID</span><span class="hl-code">, </span><span class="hl-var">$post_parent</span><span class="hl-brackets">))</span><span class="hl-code">;

    </span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-var">$post_name_check</span><span class="hl-code"> || </span><span class="hl-identifier">in_array</span><span class="hl-brackets">(</span><span class="hl-var">$post_name</span><span class="hl-code">, </span><span class="hl-var">$wp_rewrite</span><span class="hl-code">-&gt;</span><span class="hl-identifier">feeds</span><span class="hl-brackets">) ) {
        </span><span class="hl-var">$suffix</span><span class="hl-code"> = </span><span class="hl-number">2</span><span class="hl-code">;
        </span><span class="hl-reserved">do </span><span class="hl-brackets">{
            </span><span class="hl-var">$alt_post_name</span><span class="hl-code"> = </span><span class="hl-identifier">substr</span><span class="hl-brackets">(</span><span class="hl-var">$post_name</span><span class="hl-code">, </span><span class="hl-number">0</span><span class="hl-code">, </span><span class="hl-number">200</span><span class="hl-code">-</span><span class="hl-brackets">(</span><span class="hl-identifier">strlen</span><span class="hl-brackets">(</span><span class="hl-var">$suffix</span><span class="hl-brackets">)</span><span class="hl-code">+</span><span class="hl-number">1</span><span class="hl-brackets">))</span><span class="hl-code">. </span><span class="hl-quotes">&quot;</span><span class="hl-string">-</span><span class="hl-var">$suffix</span><span class="hl-quotes">&quot;</span><span class="hl-code">;
            </span><span class="hl-comment">// expected_slashed ($alt_post_name, $post_name, $post_type)
            </span><span class="hl-var">$post_name_check</span><span class="hl-code"> = </span><span class="hl-var">$wpdb</span><span class="hl-code">-&gt;</span><span class="hl-identifier">get_var</span><span class="hl-brackets">(</span><span class="hl-var">$wpdb</span><span class="hl-code">-&gt;</span><span class="hl-identifier">prepare</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">SELECT post_name FROM </span><span class="hl-var">$wpdb</span><span class="hl-string">-&gt;posts WHERE post_name = '</span><span class="hl-var">$alt_post_name</span><span class="hl-string">' AND post_type = '</span><span class="hl-var">$post_type</span><span class="hl-string">' AND ID != %d AND post_parent = %d LIMIT 1</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-var">$post_ID</span><span class="hl-code">, </span><span class="hl-var">$post_parent</span><span class="hl-brackets">))</span><span class="hl-code">;
            </span><span class="hl-var">$suffix</span><span class="hl-code">++;
        </span><span class="hl-brackets">} </span><span class="hl-reserved">while </span><span class="hl-brackets">(</span><span class="hl-var">$post_name_check</span><span class="hl-brackets">)</span><span class="hl-code">;
        </span><span class="hl-var">$post_name</span><span class="hl-code"> = </span><span class="hl-var">$alt_post_name</span><span class="hl-code">;
    </span><span class="hl-brackets">}
}</span></pre></div></div>
<p>死循环触发点：wp-include/wp-db.php</p>
<div class="hl-surround" ><div class="hl-main"><pre><span class="hl-inlinetags">&lt;?php</span><span class="hl-code">
......
</span><span class="hl-comment">/**
 * Prepares a SQL query for safe use, using sprintf() syntax
 */
</span><span class="hl-reserved">function </span><span class="hl-identifier">prepare</span><span class="hl-brackets">(</span><span class="hl-var">$args</span><span class="hl-code">=</span><span class="hl-reserved">NULL</span><span class="hl-brackets">) {
    </span><span class="hl-reserved">if </span><span class="hl-brackets">( </span><span class="hl-reserved">NULL</span><span class="hl-code"> === </span><span class="hl-var">$args </span><span class="hl-brackets">)
    </span><span class="hl-reserved">return</span><span class="hl-code">;
    </span><span class="hl-var">$args</span><span class="hl-code"> = </span><span class="hl-identifier">func_get_args</span><span class="hl-brackets">()</span><span class="hl-code">;
    </span><span class="hl-var">$query</span><span class="hl-code"> = </span><span class="hl-identifier">array_shift</span><span class="hl-brackets">(</span><span class="hl-var">$args</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-var">$query</span><span class="hl-code"> = </span><span class="hl-identifier">str_replace</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">'%s'</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">'</span><span class="hl-string">%s</span><span class="hl-quotes">'</span><span class="hl-code">, </span><span class="hl-var">$query</span><span class="hl-brackets">)</span><span class="hl-code">; </span><span class="hl-comment">// in case someone mistakenly already singlequoted it
    </span><span class="hl-var">$query</span><span class="hl-code"> = </span><span class="hl-identifier">str_replace</span><span class="hl-brackets">(</span><span class="hl-quotes">'</span><span class="hl-string">&quot;%s&quot;</span><span class="hl-quotes">'</span><span class="hl-code">, </span><span class="hl-quotes">'</span><span class="hl-string">%s</span><span class="hl-quotes">'</span><span class="hl-code">, </span><span class="hl-var">$query</span><span class="hl-brackets">)</span><span class="hl-code">; </span><span class="hl-comment">// doublequote unquoting
    </span><span class="hl-var">$query</span><span class="hl-code"> = </span><span class="hl-identifier">str_replace</span><span class="hl-brackets">(</span><span class="hl-quotes">'</span><span class="hl-string">%s</span><span class="hl-quotes">'</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">'%s'</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-var">$query</span><span class="hl-brackets">)</span><span class="hl-code">; </span><span class="hl-comment">// quote the strings
    </span><span class="hl-identifier">array_walk</span><span class="hl-brackets">(</span><span class="hl-var">$args</span><span class="hl-code">, </span><span class="hl-reserved">array</span><span class="hl-brackets">(</span><span class="hl-code">&amp;</span><span class="hl-var">$this</span><span class="hl-code">, </span><span class="hl-quotes">'</span><span class="hl-string">escape_by_ref</span><span class="hl-quotes">'</span><span class="hl-brackets">))</span><span class="hl-code">;
    </span><span class="hl-reserved">return</span><span class="hl-code"> @</span><span class="hl-identifier">vsprintf</span><span class="hl-brackets">(</span><span class="hl-var">$query</span><span class="hl-code">, </span><span class="hl-var">$args</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span></pre></div></div>
<p>post_name 中的的多字节文字被 urlencode 成这样 "%e6%88%91%e6%93%8d%ef%bc%81"，只要 % 后面跟了 bcdeufFosxX 中任意一个（覆盖了大半个中文区域），就造成 vsprintf 函数调用失败，返回 false，而上层的循环一直在等它返回一个非false的值，直到程序死掉。</p>
<p>解决方法很简单：<br />
修改 wp-include/wp-db.php<br />
用下面的代码替换掉之前贴出的代码：</p>
<div class="hl-surround" style="height:420px;"><div class="hl-main"><pre><span class="hl-inlinetags">&lt;?php</span><span class="hl-code">
......
</span><span class="hl-comment">/**
 * Prepares a SQL query for safe use, using sprintf() syntax
 */
</span><span class="hl-reserved">function </span><span class="hl-identifier">prepare</span><span class="hl-brackets">(</span><span class="hl-var">$args</span><span class="hl-code">=</span><span class="hl-reserved">NULL</span><span class="hl-brackets">) {
    </span><span class="hl-reserved">if </span><span class="hl-brackets">( </span><span class="hl-reserved">NULL</span><span class="hl-code"> === </span><span class="hl-var">$args </span><span class="hl-brackets">)
    </span><span class="hl-reserved">return</span><span class="hl-code">;
    </span><span class="hl-var">$args</span><span class="hl-code"> = </span><span class="hl-identifier">func_get_args</span><span class="hl-brackets">()</span><span class="hl-code">;
    </span><span class="hl-var">$query</span><span class="hl-code"> = </span><span class="hl-identifier">array_shift</span><span class="hl-brackets">(</span><span class="hl-var">$args</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-var">$query</span><span class="hl-code"> = </span><span class="hl-identifier">str_replace</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">'%s'</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">'</span><span class="hl-string">%s</span><span class="hl-quotes">'</span><span class="hl-code">, </span><span class="hl-var">$query</span><span class="hl-brackets">)</span><span class="hl-code">; </span><span class="hl-comment">// in case someone mistakenly already singlequoted it
    </span><span class="hl-var">$query</span><span class="hl-code"> = </span><span class="hl-identifier">str_replace</span><span class="hl-brackets">(</span><span class="hl-quotes">'</span><span class="hl-string">&quot;%s&quot;</span><span class="hl-quotes">'</span><span class="hl-code">, </span><span class="hl-quotes">'</span><span class="hl-string">%s</span><span class="hl-quotes">'</span><span class="hl-code">, </span><span class="hl-var">$query</span><span class="hl-brackets">)</span><span class="hl-code">; </span><span class="hl-comment">// doublequote unquoting
    </span><span class="hl-var">$query</span><span class="hl-code"> = </span><span class="hl-identifier">str_replace</span><span class="hl-brackets">(</span><span class="hl-quotes">'</span><span class="hl-string">%s</span><span class="hl-quotes">'</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">'%s'</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-var">$query</span><span class="hl-brackets">)</span><span class="hl-code">; </span><span class="hl-comment">// quote the strings
    </span><span class="hl-identifier">array_walk</span><span class="hl-brackets">(</span><span class="hl-var">$args</span><span class="hl-code">, </span><span class="hl-reserved">array</span><span class="hl-brackets">(</span><span class="hl-code">&amp;</span><span class="hl-var">$this</span><span class="hl-code">, </span><span class="hl-quotes">'</span><span class="hl-string">escape_by_ref</span><span class="hl-quotes">'</span><span class="hl-brackets">))</span><span class="hl-code">;

    </span><span class="hl-comment">// 旧的方法会引起其他问题
    // $query = preg_replace(&quot;#(%[0-f]{2})#sie&quot;, &quot;urldecode('$1')&quot;, $query);
    // $query = @vsprintf($query, $args);
    // $query = preg_replace(&quot;#([\x80-\xff])#se&quot;, &quot;strtolower(urlencode('$1'))&quot;, $query);

    // 新的方法只针对重复标题时的死循环问题
    </span><span class="hl-var">$reg</span><span class="hl-code"> = </span><span class="hl-quotes">&quot;</span><span class="hl-string">#post_name = '((?:%[0-9a-f]{2})+.+)'#Usi</span><span class="hl-quotes">&quot;</span><span class="hl-code">;
    </span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">preg_match</span><span class="hl-brackets">(</span><span class="hl-var">$reg</span><span class="hl-code">, </span><span class="hl-var">$query</span><span class="hl-code">, </span><span class="hl-var">$match</span><span class="hl-brackets">)) {
        </span><span class="hl-var">$he</span><span class="hl-code"> = </span><span class="hl-var">$match</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">]</span><span class="hl-code">;
        </span><span class="hl-var">$hd</span><span class="hl-code"> = </span><span class="hl-identifier">urldecode</span><span class="hl-brackets">(</span><span class="hl-var">$he</span><span class="hl-brackets">)</span><span class="hl-code">;
        </span><span class="hl-var">$query</span><span class="hl-code"> = </span><span class="hl-identifier">str_replace</span><span class="hl-brackets">(</span><span class="hl-var">$he</span><span class="hl-code">, </span><span class="hl-var">$hd</span><span class="hl-code">, </span><span class="hl-var">$query</span><span class="hl-brackets">)</span><span class="hl-code">;
        </span><span class="hl-var">$query</span><span class="hl-code"> = @</span><span class="hl-identifier">vsprintf</span><span class="hl-brackets">(</span><span class="hl-var">$query</span><span class="hl-code">, </span><span class="hl-var">$args</span><span class="hl-brackets">)</span><span class="hl-code">;
        </span><span class="hl-var">$query</span><span class="hl-code"> = </span><span class="hl-identifier">str_replace</span><span class="hl-brackets">(</span><span class="hl-var">$hd</span><span class="hl-code">, </span><span class="hl-var">$he</span><span class="hl-code">, </span><span class="hl-var">$query</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-brackets">} </span><span class="hl-reserved">else </span><span class="hl-brackets">{
        </span><span class="hl-var">$query</span><span class="hl-code"> = @</span><span class="hl-identifier">vsprintf</span><span class="hl-brackets">(</span><span class="hl-var">$query</span><span class="hl-code">, </span><span class="hl-var">$args</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-brackets">}

    </span><span class="hl-reserved">return </span><span class="hl-var">$query</span><span class="hl-code">;
</span><span class="hl-brackets">}</span></pre></div></div>
<p>后来楚云坚持认为wp可以不用修改任何原始代码解决所有问题，所以找到了下面的方法：<br />
下载这个文件：<a href="http://www.nimab.org/softwares/db.tgz">db.tgz</a> 解压后得到 db.php 将它放到 wp-content/ 下。<br />
---------<br />
或许这只是其中一个造成500的原因，下次遇到再说吧。<br />
--------- update --------<br />
补充，此db.php为2.5.1的，后来才知道2.5.1比2.5.0也有更新，不保证其他版本没有意外情况。<br />
<strong>--------- update 2008/05/10 --------<br />
发现bug，更新了方法以及db.php下载链接。以前的方法太粗暴，一些其他的查询也被强制转码造成数据错误。<br />
解决方法：重新下载db.php或按照前文代码重新修改wp-db.php。已经出错的数据，可重新编辑保存。已知会引发错误的地方：http://yourwpuri/wp-admin/widgets.php （也就是说你使用了之前的 db 文件后，有设置过 widgets 功能，最好重新设置一遍）</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nimab.org/2008/05/01/39.html/feed</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>新装 Leopard 安装开发环境全记录</title>
		<link>http://www.nimab.org/2008/03/16/30.html</link>
		<comments>http://www.nimab.org/2008/03/16/30.html#comments</comments>
		<pubDate>Sun, 16 Mar 2008 10:40:20 +0000</pubDate>
		<dc:creator>xdanger</dc:creator>
				<category><![CDATA[MacosX]]></category>

		<guid isPermaLink="false">http://www.nimab.org/2008/03/16/30.html</guid>
		<description><![CDATA[前期工作 安装光盘里的 Xcode，或者下载 iPhone SDK，2.1G，包括了最新的 Xcode 和 iPhone SDK。 安装好后会有 apache-2.2.6 / php-5.2.5 / ruby-1.8.6 / rails-1.2.6 / python-2.5.1 / java-1.5.0_13 / sqlite-3.4.0 …… gcc 会有2个版本：4.0.1 和 4.2.1，默认 /usr/bin/gcc 软连到 gcc-4.0，我们先让默认的 gcc 改用 4.2（2007年1月就 release 了，Changelog） cd /usr/bin sudo unlink gcc sudo ln -s gcc-4.2 gcc 设置全局编译参数，编辑 /etc/profile，加上下面的全局变量，保存后重启终端 export MACOSX_DEPLOYMENT_TARGET=10.5 export ARCHFLAGS='-arch x86_64' export CFLAGS='-arch [...]]]></description>
			<content:encoded><![CDATA[<h3>前期工作</h3>
<p>安装光盘里的 Xcode，或者下载 <a href="http://developer.apple.com/iphone/">iPhone SDK</a>，2.1G，包括了最新的 Xcode 和 iPhone SDK。</p>
<p>安装好后会有 apache-2.2.6 / php-5.2.5 / ruby-1.8.6 / rails-1.2.6 / python-2.5.1 / java-1.5.0_13 / sqlite-3.4.0 …… gcc 会有2个版本：<a href="http://gcc.gnu.org/gcc-4.0/">4.0.1</a> 和 <a href="http://gcc.gnu.org/gcc-4.2/">4.2.1</a>，默认 /usr/bin/gcc 软连到 gcc-4.0，我们先让默认的 gcc 改用 4.2（2007年1月就 release 了，<a href="http://gcc.gnu.org/gcc-4.2/changes.html">Changelog</a>）</p>
<div class="hl-surround" ><div class="hl-main"><pre>cd /usr/bin
sudo unlink gcc
sudo ln -s gcc-4.2 gcc</pre></div></div>
<p>设置全局编译参数，编辑 /etc/profile，加上下面的全局变量，保存后重启终端</p>
<div class="hl-surround" ><div class="hl-main"><pre>export MACOSX_DEPLOYMENT_TARGET=10.5
export ARCHFLAGS='-arch x86_64'
export CFLAGS='-arch x86_64 -O3 -pipe'
export CXXFLAGS=$CFLAGS
export LDFLAGS='-arch x86_64 -bind_at_load'</pre></div></div>
<p>如果需要编译兼容 i386、ppc、ppc64 版本的（编译出来的文件会增大不少），只要加上相应的 -arch 即可</p>
<div class="hl-surround" ><div class="hl-main"><pre>export CFLAGS=&quot;-arch ppc -arch ppc64 -arch i386 -arch x86_64 -O3 -pipe&quot;
export CXXFLAGS=$CFLAGS
export LDFLAGS=&quot;-arch ppc -arch ppc64 -arch i386 -arch x86_64 -bind_at_load&quot;</pre></div></div>
<p>如果需要编译针对 CPU 优化的，Apple 全系列已经升级到 Intel Core Duo，所以可以加上以下参数</p>
<div class="hl-surround" ><div class="hl-main"><pre>CHOST=&quot;x86_64-pc-linux-gnu&quot;
CFLAGS=&quot;-march=nocona -O2 -pipe&quot;
CXXFLAGS=&quot;${CFLAGS}&quot;</pre></div></div>
<p><a href="http://www.gentoo.org/doc/en/faq.xml#optimizations">-O 使用 O3</a>，其他详见 <a href="http://www.gentoo-wiki.com/Safe_Cflags">http://www.gentoo-wiki.com/Safe_Cflags</a></p>
<p>因此我自己编译的最终参数是</p>
<div class="hl-surround" ><div class="hl-main"><pre>export MACOSX_DEPLOYMENT_TARGET=10.5
export ARCHFLAGS='-arch x86_64'
export CFLAGS='-arch x86_64 -march=nocona -pipe -O3 -pipe'
export CXXFLAGS=$CFLAGS
export LDFLAGS='-arch x86_64 -bind_at_load'</pre></div></div>
<h3>Java</h3>
<p>虽然 Apple 总算在 2008年2月 放出了 <a href="http://developer.apple.com/java/download/">JDK6 Preview</a>，但是问题还是非常多。我们还是用 BSD 的一个移植版本 <a href="http://landonf.bikemonkey.org/static/soylatte/">Soylatte</a>，直接下载 64-bit JDK for Mac OS X 10.5: <a href="http://hg.bikemonkey.org/archive/javasrc_1_6_jrl_darwin/soylatte16-amd64-1.0.2.tar.bz2">soylatte16-amd64-1.0.2.tar.bz2</a> (Username: 'jrl'，Password: 'I am a Licensee in good standing')<br />
解压后放到 /usr/local/soylatte16-amd64，软连 /usr/local/java 到这个目录：</p>
<div class="hl-surround" ><div class="hl-main"><pre>cd /usr/local; sudo ln -s soylatte16-amd64 java
cd /System/Library/Frameworks/JavaVM.framework/Versions/; sudo mkdir soylatte16-amd64
cd soylatte16-amd64; sudo ln -s /usr/local/java Home; sudo ln -s ./Home/bin ./Commands
cd ../A; sudo mv Commands Commands.bak; sudo ln -s ../CurrentJDK/Commands ./
cd ..; sudo unlink CurrentJDK; sudo ln -s soylatte16-amd64 CurrentJDK
java -version</pre></div></div>
<p>显示如下，Java 就算搞定了</p>
<div class="hl-surround" ><div class="hl-main"><pre>java version &quot;1.6.0_03-p3&quot;
Java(TM) SE Runtime Environment (build 1.6.0_03-p3-landonf_03_feb_2008_01_32-b00)
Java HotSpot(TM) 64-Bit Server VM (build 1.6.0_03-p3-landonf_03_feb_2008_01_32-b00, mixed mode)</pre></div></div>
<h3>基本库和命令</h3>
<p><b>libtool</b></p>
<div class="hl-surround" ><div class="hl-main"><pre>curl http://ftp.gnu.org/gnu/libtool/libtool-1.5.26.tar.gz &amp;gt; libtool-1.5.26.tar.gz
tar xzf libtool-1.5.26.tar.gz
cd libtool-1.5.26
./configure
make
sudo make install</pre></div></div>
<p><b>zlib</b></p>
<div class="hl-surround" ><div class="hl-main"><pre>curl http://www.zlib.net/zlib-1.2.3.tar.gz &amp;gt; zlib-1.2.3.tar.gz
tar xzf zlib-1.2.3.tar.gz
cd zlib-1.2.3
./configure
make
sudo make install</pre></div></div>
<p><b>openssl/libssl</b></p>
<div class="hl-surround" ><div class="hl-main"><pre>curl http://www.openssl.org/source/openssl-0.9.8g.tar.gz &amp;gt; openssl-0.9.8g.tar.gz
tar xzf openssl-0.9.8g.tar.gz
cd openssl-0.9.8g
./config --prefix=/usr/local --openssldir=/openssl threads zlib-dynamic
vi Makefile
# OPTIONS 里去掉 no-sse2 来开启 CPU 的 SSE2 指令集支持
# CFLAG 里 -arch i386 改为 -arch x86_64
# SHARED_LDFLAGS 同上
make
sudo make install
cd /usr/local/bin
sudo ln -s ../openssl/bin/* ./</pre></div></div>
<p><b>wget</b></p>
<div class="hl-surround" ><div class="hl-main"><pre>curl http://ftp.gnu.org/gnu/wget/wget-1.11.tar.bz2 &amp;gt; wget-1.11.tar.bz2
tar xjf wget-1.11.tar.bz2
cd wget-1.11.tar.bz2
./configure --with-libssl-prefix=/usr/local/openssl
make
sudo make install</pre></div></div>
<p><b>libpng</b></p>
<div class="hl-surround" ><div class="hl-main"><pre>wget http://downloads.sourceforge.net/libpng/lpng1225.tar.bz2 -O libpng-1.2.25.tar.bz2
tar xjf libpng-1.2.25.tar.bz2
cd libpng-1.2.25
./configure
make
sudo make install</pre></div></div>
<p><b>libjpeg</b></p>
<div class="hl-surround" ><div class="hl-main"><pre>wget http://freshmeat.net/redir/libjpeg/5665/url_tgz/jpegsrc.v6b.tar.gz
tar xzf jpegsrc.v6b.tar.gz
cd jpeg-6b
cp /usr/share/libtool/config.sub .
cp /usr/share/libtool/config.guess .
./configure --enable-shared --enable-static
make
sudo mkdir -p /usr/local/man/man1
sudo make install -lib</pre></div></div>
<p><b>freetype</b></p>
<div class="hl-surround" ><div class="hl-main"><pre>wget http://download.savannah.gnu.org/releases/freetype/freetype-2.3.5.tar.gz
tar xzf freetype-2.3.5.tar.gz
cd freetype-2.3.5
./configure
make
sudo make install</pre></div></div>
<p><b>fontconfig</b></p>
<div class="hl-surround" ><div class="hl-main"><pre>wget http://fontconfig.org/release/fontconfig-2.5.91.tar.gz
tar xzf fontconfig-2.5.91.tar.gz
cd fontconfig-2.5.91
./configure --prefix=/usr/local --with-zlib --with-jpeg --with-png --with-freetype --disable-dependency-tracking
make
sudo make install</pre></div></div>
<p><b>gd2</b></p>
<div class="hl-surround" ><div class="hl-main"><pre>wget http://www.libgd.org/releases/gd-2.0.35.tar.bz2
tar xjf gd-2.0.35.tar.bz2
cd gd-2.0.35
./configure --with-fontconfig=/usr/local/bin --disable-dependency-tracking
make
sudo make install</pre></div></div>
<p><b>ImageMagick</b></p>
<div class="hl-surround" ><div class="hl-main"><pre>wget ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick-6.3.9-7.tar.bz2
tar xjf ImageMagick-6.3.9-7.tar.bz2
cd ImageMagick-6.3.9
./configure --with-fontconfig
make
sudo make install</pre></div></div>
<p><b>mysql</b></p>
<div class="hl-surround" ><div class="hl-main"><pre>wget http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-5.0.51a.tar.gz/from/http://mirror.services.wisc.edu/mysql/
tar xzf mysql-5.0.51a.tar.gz
cd mysql-5.0.51a
./configure --with-mysql-user=mysql --with-mysql-group=mysql --with-innodb --with-archive-storage-engine --with-ndbcluster --with-zlib-dir=/usr/local --with-pthread --with-extra-charsets=utf8 --disable-dependency-tracking
make
sudo make install</pre></div></div>
<p><b>neon</b></p>
<div class="hl-surround" ><div class="hl-main"><pre>wget http://www.webdav.org/neon/neon-0.25.5.tar.gz
tar xzf neon-0.25.5.tar.gz
cd neon-0.25.5
./configure --with-ssl=openssl
make
sudo make install</pre></div></div>
<p><b>Berkeley DB</b></p>
<div class="hl-surround" ><div class="hl-main"><pre># 为了让 subversion-1.4.6 使用，只能用 db-4.4 版本的
wget http://download.oracle.com/berkeley-db/db-4.4.20.tar.gz
tar xzf db-4.4.20.tar.gz
cd db-4.4.20/build_unix
make
sudo make install
cd /usr/local/; sudo ln -s BerkeleyDB.4.4 bdb</pre></div></div>
<p><b>subversion</b></p>
<div class="hl-surround" ><div class="hl-main"><pre>wget http://apache.mirror.phpchina.com/httpd/httpd-2.2.8.tar.bz2
tar xjf httpd-2.2.8.tar.bz2
wget http://subversion.tigris.org/downloads/subversion-1.4.6.tar.bz2
tar xjf subversion-1.4.6.tar.bz2
cd subversion-1.4.6
cp -r ../httpd-2.2.8/srclib/apr* ./
./configure --with-apxs=/usr/sbin/apxs --with-berkeley-db=/usr/local/bdb --with-ssl
make
sudo make install</pre></div></div>
<p><b>libevent</b></p>
<div class="hl-surround" ><div class="hl-main"><pre>wget http://www.monkey.org/~provos/libevent-1.4.2-rc.tar.gz
tar xzf libevent-1.4.2-rc.tar.gz
cd libevent-1.4.2-rc
./configure
make
sudo make install</pre></div></div>
<p><b>memcached</b></p>
<div class="hl-surround" ><div class="hl-main"><pre>wget http://www.danga.com/memcached/dist/memcached-1.2.5.tar.gz
tar xzf memcached-1.2.5.tar.gz
cd memcached-1.2.5
./configure
make
sudo make install</pre></div></div>
<p><b>pcre</b></p>
<div class="hl-surround" ><div class="hl-main"><pre>wget http://nchc.dl.sourceforge.net/sourceforge/pcre/pcre-7.6.tar.bz2
tar xjf pcre-7.6.tar.bz2
cd pcre-7.6
./configure --enable-utf8
make
sudo make install</pre></div></div>
<p><b>pkg-config</b></p>
<div class="hl-surround" ><div class="hl-main"><pre>wget http://pkgconfig.freedesktop.org/releases/pkg-config-0.23.tar.gz
tar xzf pkg-config-0.23.tar.gz
cd pkg-config-0.23
make
sudo make install
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig</pre></div></div>
<p><b>libxml2</b></p>
<div class="hl-surround" ><div class="hl-main"><pre>wget ftp://xmlsoft.org/libxml2/libxml2-2.6.31.tar.gz
tar xzf libxml2-2.6.31.tar.gz
cd libxml2-2.6.31</pre></div></div>
<p><b>lighttpd</b></p>
<div class="hl-surround" ><div class="hl-main"><pre>wget http://www.lighttpd.net/download/lighttpd-1.4.19.tar.bz2
tar xjf lighttpd-1.4.19.tar.bz2
cd lighttpd-1.4.19
./configure --with-openssl --with-zlib --without-bzip2 --with-pcre  --with-gdbm --with-memcache --with-ldap
make
sudo make install</pre></div></div>
<p>好像大功告成了，还缺啥嘛？</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nimab.org/2008/03/16/30.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>iphone 1.1.3/1.1.4 完美破解指南</title>
		<link>http://www.nimab.org/2008/03/15/29.html</link>
		<comments>http://www.nimab.org/2008/03/15/29.html#comments</comments>
		<pubDate>Fri, 14 Mar 2008 16:38:47 +0000</pubDate>
		<dc:creator>Kafeifei</dc:creator>
				<category><![CDATA[Bsd]]></category>
		<category><![CDATA[MacosX]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://www.nimab.org/2008/03/15/29.html</guid>
		<description><![CDATA[首先用itunes将iphone升级至1.1.3/1.1.4 然后运行ziphone激活，破解，解锁…… 安装openssh root登陆，密码:alpine 安全起见 #chmod -x /usr/bin/passwd 到这里生成密码，salt为/s，用它替换root密码（/etc/master.passwd） 然后移动 /Application /Library 到第二分区]]></description>
			<content:encoded><![CDATA[<p>首先用itunes将iphone升级至1.1.3/1.1.4<br />
然后运行<a href="http://www.verycd.com/groups/iphone/241292.topic">ziphone</a>激活，破解，解锁……<br />
安装openssh<br />
root登陆，密码:alpine<br />
安全起见 #chmod -x /usr/bin/passwd<br />
到<a href="http://javascript.internet.com/passwords/unix-crypt(3)-encryption.html">这里</a>生成密码，salt为/s，用它替换root密码（/etc/master.passwd）<br />
然后移动 /Application /Library 到第二分区</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nimab.org/2008/03/15/29.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.485 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2012-04-18 08:44:43 -->
<!-- Compression = gzip -->
