<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0">

<channel>
	<title>Andy's Blog</title>
	
	<link>http://www.21andy.com/blog</link>
	<description>PHP,WordPress,SEO,网赚,站长</description>
	<lastBuildDate>Tue, 29 May 2012 14:48:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/21andycom" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="21andycom" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">21andycom</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Google WebFont 字体打包下载</title>
		<link>http://www.21andy.com/blog/20120529/2049.html</link>
		<comments>http://www.21andy.com/blog/20120529/2049.html#comments</comments>
		<pubDate>Tue, 29 May 2012 14:44:37 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[收藏]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[google font]]></category>
		<category><![CDATA[webfont]]></category>
		<category><![CDATA[字体]]></category>

		<guid isPermaLink="false">http://www.21andy.com/blog/?p=2049</guid>
		<description><![CDATA[Google webfonts 提供免费的 API，配合使用 CSS 的 @font-face 很好很强大，下面是所有 Google WebFont 的打包下载. Download Google’s Web Fonts 49,737,222 bytes (49.7 MB on disk)*Updated 2011-11-02]]></description>
			<content:encoded><![CDATA[下载 : <a href="http://www.21andy.com/blog/download/googlewebfonts.tgz" title="">Google Web Font</a> 2012-05-29 (47.43 MB, 已下载 0 次)
<p>Google <a href="http://code.google.com/webfonts" rel="nofollow" target="_blank">webfonts</a> 提供免费的 <a href="http://code.google.com/apis/webfonts/" rel="nofollow" target="_blank">API</a>，配合使用 CSS 的 <strong>@font-face</strong> 很好很强大，下面是所有 Google WebFont 的打包下载.</p>
<p><strong><a href="http://www.21andy.com/blog/upload/attchments/2012/0529/googlewebfonts.tgz" target="_blank" title="Google WebFont 字体打包下载">Download Google’s Web Fonts</a></strong></p>
<div class="hl-surround"><div class="hl-main">49,737,222 bytes (49.7 MB on disk)*<br />Updated 2011-11-02</div></div>
]]></content:encoded>
			<wfw:commentRss>http://www.21andy.com/blog/20120529/2049.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>download.fedora.redhat.com 更换为 dl.fedoraproject.org</title>
		<link>http://www.21andy.com/blog/20120529/2047.html</link>
		<comments>http://www.21andy.com/blog/20120529/2047.html#comments</comments>
		<pubDate>Mon, 28 May 2012 23:31:09 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[技术]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[download.fedora.redhat.com]]></category>

		<guid isPermaLink="false">http://www.21andy.com/blog/?p=2047</guid>
		<description><![CDATA[前段时间开始 download.fedora.redhat.com 已经不能访问，请自己改为 dl.fedoraproject.org]]></description>
			<content:encoded><![CDATA[<p>前段时间开始 <strong>download.fedora.redhat.com</strong> 已经不能访问，请自己改为 </p>
<blockquote><p>dl.fedoraproject.org</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.21andy.com/blog/20120529/2047.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CodeCanyon Notification Boxes 3.0</title>
		<link>http://www.21andy.com/blog/20120529/2046.html</link>
		<comments>http://www.21andy.com/blog/20120529/2046.html#comments</comments>
		<pubDate>Mon, 28 May 2012 23:12:49 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[收藏]]></category>
		<category><![CDATA[CodeCanyon]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Notification Boxes]]></category>

		<guid isPermaLink="false">http://www.21andy.com/blog/?p=2046</guid>
		<description><![CDATA[Version 3.0 Notification Boxes - 10 different styles - 3 different templates - HTML and CSS3 - jQuery Animation - PSD included - Documentation v 3.0 Features - Added Notification Template: - Notification Box without Description - Notification Box with description (Template 1) - Notification Box with description (Template 2) - Added auto height for [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.21andy.com/blog/upload/2012/0528/e2c33bad84834bc3.jpg" class="lightbox"><img src="http://www.21andy.com/blog/upload/2012/0528/e2c33bad84834bc3_thumb.jpg" title="CodeCanyon Notification Boxes 3.0" alt="CodeCanyon Notification Boxes 3.0 e2c33bad84834bc3 thumb" /></a></p>
下载 : <a href="http://www.21andy.com/blog/download/CodeCanyon_Notification_Boxes_3.0.zip" title="CodeCanyon Notification Boxes 3.0">CodeCanyon Notification Boxes</a> 2012-05-28 (975.49 kB, 已下载 12 次)
<p>Version 3.0</p>
<p>Notification Boxes<br />
- 10 different styles<br />
- 3 different templates<br />
- HTML and CSS3<br />
- jQuery Animation<br />
- PSD included<br />
- Documentation</p>
<p>v 3.0 Features<br />
- Added Notification Template:<br />
- Notification Box without Description<br />
- Notification Box with description (Template 1)<br />
- Notification Box with description (Template 2)<br />
- Added auto height for more line of text<br />
- Added auto width (only for Notification Box Template without description)<br />
entire notification box is active on mouseover. </p>
<h4>Incoming search terms:</h4><ul><li><a href="http://www.21andy.com/blog/20120529/2046.html" title="codecanyon - notification boxes 3 0">codecanyon - notification boxes 3 0</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.21andy.com/blog/20120529/2046.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Idiorm &amp; Paris - PHP5 + PDO ORM &amp; AR</title>
		<link>http://www.21andy.com/blog/20120528/2044.html</link>
		<comments>http://www.21andy.com/blog/20120528/2044.html#comments</comments>
		<pubDate>Mon, 28 May 2012 14:56:28 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[技术]]></category>
		<category><![CDATA[AR]]></category>
		<category><![CDATA[Idiorm]]></category>
		<category><![CDATA[ORM]]></category>
		<category><![CDATA[Paris]]></category>
		<category><![CDATA[PDO]]></category>
		<category><![CDATA[PHP5]]></category>

		<guid isPermaLink="false">http://www.21andy.com/blog/?p=2044</guid>
		<description><![CDATA[Idiorm is an ORM object-relational mapper and fluent query builder. If you prefer to think about tables and joins, you should probably be using Idiorm. Paris is an AR Active Record implementation based on Idiorm. If you prefer to think about model objects and relationships, you should probably be using Paris. http://j4mie.github.com/idiormandparis/ Idiorm Example: $user [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.21andy.com/blog/uploads/2012/05/Idiorm_Paris.png" class="lightbox"><img src="http://www.21andy.com/blog/uploads/2012/05/Idiorm_Paris.png" alt="Idiorm & Paris   PHP5 + PDO ORM & AR Idiorm Paris" title="Idiorm_Paris" width="518" height="162" class="alignnone size-full wp-image-2045" /></a></p>
<p><strong>Idiorm</strong> is an <strong>ORM</strong> object-relational mapper and fluent query builder.</p>
<blockquote><p>If you prefer to think about <strong>tables </strong>and <strong>joins</strong>, you should probably be using Idiorm.</p></blockquote>
<p><strong>Paris</strong> is an <strong>AR</strong> Active Record implementation based on Idiorm.</p>
<blockquote><p>If you prefer to think about <strong>model objects </strong>and <strong>relationships</strong>, you should probably be using Paris.</p></blockquote>
<p><a href="http://j4mie.github.com/idiormandparis/" target="_blank">http://j4mie.github.com/idiormandparis/</a></p>
<p><strong>Idiorm Example: </strong></p>
<div class="hl-surround"><div class="hl-main"><span style="color: #00008b;">$user</span><span style="color: Gray;"> = </span><span style="color: Blue;">ORM</span><span style="color: Gray;">::</span><span style="color: Blue;">for_table</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">user</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;-&gt;</span><span style="color: Blue;">where_equal</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">username</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">j4mie</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;-&gt;</span><span style="color: Blue;">find_one</span><span style="color: Olive;">()</span><span style="color: Gray;">;<br />&nbsp;<br /></span><span style="color: #00008b;">$user</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">first_name</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">'</span><span style="color: Red;">Jamie</span><span style="color: #8b0000;">'</span><span style="color: Gray;">;<br /></span><span style="color: #00008b;">$user</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">save</span><span style="color: Olive;">()</span><span style="color: Gray;">;<br />&nbsp;<br /></span><span style="color: #00008b;">$tweets</span><span style="color: Gray;"> = </span><span style="color: Blue;">ORM</span><span style="color: Gray;">::</span><span style="color: Blue;">for_table</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">tweet</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;-&gt;</span><span style="color: Blue;">select</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">tweet.*</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;-&gt;</span><span style="color: Blue;">join</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">user</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: Green;">array</span><span style="color: Olive;">(</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #8b0000;">'</span><span style="color: Red;">user.id</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">=</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">tweet.user_id</span><span style="color: #8b0000;">'</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">))</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;-&gt;</span><span style="color: Blue;">where_equal</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">user.username</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">j4mie</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;-&gt;</span><span style="color: Blue;">find_many</span><span style="color: Olive;">()</span><span style="color: Gray;">;<br />&nbsp;<br /></span><span style="color: Green;">foreach</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: #00008b;">$tweets</span><span style="color: Gray;"> </span><span style="color: Green;">as</span><span style="color: Gray;"> </span><span style="color: #00008b;">$tweet</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">echo</span><span style="color: Gray;"> </span><span style="color: #00008b;">$tweet</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">text</span><span style="color: Gray;">;<br /></span><span style="color: Olive;">}</span><span style="color: Gray;"></span></div></div>
<p><strong>Paris Example:</strong></p>
<div class="hl-surround"><div class="hl-main"><span style="color: Green;">class</span><span style="color: Gray;"> </span><span style="color: Blue;">User</span><span style="color: Gray;"> </span><span style="color: Green;">extends</span><span style="color: Gray;"> </span><span style="color: Blue;">Model</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">public</span><span style="color: Gray;"> </span><span style="color: Green;">function</span><span style="color: Gray;"> </span><span style="color: Blue;">tweets</span><span style="color: Olive;">()</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">return</span><span style="color: Gray;"> </span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">has_many</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">Tweet</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br /></span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;<br /></span><span style="color: Green;">class</span><span style="color: Gray;"> </span><span style="color: Blue;">Tweet</span><span style="color: Gray;"> </span><span style="color: Green;">extends</span><span style="color: Gray;"> </span><span style="color: Blue;">Model</span><span style="color: Gray;"> </span><span style="color: Olive;">{}</span><span style="color: Gray;"><br />&nbsp;<br /></span><span style="color: #00008b;">$user</span><span style="color: Gray;"> = </span><span style="color: Blue;">Model</span><span style="color: Gray;">::</span><span style="color: Blue;">factory</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">User</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;-&gt;</span><span style="color: Blue;">where_equal</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">username</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">j4mie</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;-&gt;</span><span style="color: Blue;">find_one</span><span style="color: Olive;">()</span><span style="color: Gray;">;<br /></span><span style="color: #00008b;">$user</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">first_name</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">'</span><span style="color: Red;">Jamie</span><span style="color: #8b0000;">'</span><span style="color: Gray;">;<br /></span><span style="color: #00008b;">$user</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">save</span><span style="color: Olive;">()</span><span style="color: Gray;">;<br />&nbsp;<br /></span><span style="color: #00008b;">$tweets</span><span style="color: Gray;"> = </span><span style="color: #00008b;">$user</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">tweets</span><span style="color: Olive;">()</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">find_many</span><span style="color: Olive;">()</span><span style="color: Gray;">;<br /></span><span style="color: Green;">foreach</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: #00008b;">$tweets</span><span style="color: Gray;"> </span><span style="color: Green;">as</span><span style="color: Gray;"> </span><span style="color: #00008b;">$tweet</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">echo</span><span style="color: Gray;"> </span><span style="color: #00008b;">$tweet</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">text</span><span style="color: Gray;">;<br /></span><span style="color: Olive;">}</span><span style="color: Gray;"></span></div></div>
<h4>Incoming search terms:</h4><ul><li><a href="http://www.21andy.com/blog/20120528/2044.html" title="verycd">verycd</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.21andy.com/blog/20120528/2044.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux iptables 配置详解</title>
		<link>http://www.21andy.com/blog/20120528/2043.html</link>
		<comments>http://www.21andy.com/blog/20120528/2043.html#comments</comments>
		<pubDate>Sun, 27 May 2012 20:52:13 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[技术]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[配置]]></category>

		<guid isPermaLink="false">http://www.21andy.com/blog/?p=2043</guid>
		<description><![CDATA[Linux iptables 配置详解 如果你的IPTABLES基础知识还不了解,建议先去看看. 一、配置一个filter表的防火墙 1. 查看本机关于 iptables 的设置情况 # iptables -L -n Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain RH-Firewall-1-INPUT (0 references) target prot opt source destination ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ACCEPT [...]]]></description>
			<content:encoded><![CDATA[<p>Linux iptables 配置详解<br />
如果你的IPTABLES基础知识还不了解,建议先去看看.</p>
<h2>一、配置一个filter表的防火墙</h2>
<p><strong>1. 查看本机关于 iptables 的设置情况</strong><br />
<strong># iptables -L -n</strong></p>
<blockquote><p>Chain INPUT (policy ACCEPT)<br />
target       prot opt source                 destination<br />
Chain FORWARD (policy ACCEPT)<br />
target       prot opt source                 destination<br />
Chain OUTPUT (policy ACCEPT)<br />
target       prot opt source                 destination<br />
Chain RH-Firewall-1-INPUT (0 references)<br />
target       prot opt source                 destination<br />
ACCEPT       all    --    0.0.0.0/0              0.0.0.0/0<br />
ACCEPT       icmp --    0.0.0.0/0              0.0.0.0/0             icmp type 255<br />
ACCEPT       esp    --    0.0.0.0/0              0.0.0.0/0<br />
ACCEPT       ah     --    0.0.0.0/0              0.0.0.0/0<br />
ACCEPT       udp    --    0.0.0.0/0              224.0.0.251           udp dpt:5353<br />
ACCEPT       udp    --    0.0.0.0/0              0.0.0.0/0             udp dpt:631<br />
ACCEPT       all    --    0.0.0.0/0              0.0.0.0/0             state RELATED,ESTABLISHED<br />
ACCEPT       tcp    --    0.0.0.0/0              0.0.0.0/0             state NEW tcp dpt:22<br />
ACCEPT       tcp    --    0.0.0.0/0              0.0.0.0/0             state NEW tcp dpt:80<br />
ACCEPT       tcp    --    0.0.0.0/0              0.0.0.0/0             state NEW tcp dpt:25<br />
REJECT       all    --    0.0.0.0/0              0.0.0.0/0             reject-with icmp-host-prohibited</p></blockquote>
<p>可以看出我在安装linux时,选择了有防火墙,并且开放了22,80,25端口.<br />
如果你在安装linux时没有选择启动防火墙,是这样的</p>
<p><strong># iptables -L -n</strong></p>
<blockquote><p>Chain INPUT (policy ACCEPT)<br />
target       prot opt source                 destination<br />
Chain FORWARD (policy ACCEPT)<br />
target       prot opt source                 destination<br />
Chain OUTPUT (policy ACCEPT)<br />
target       prot opt source                 destination</p></blockquote>
<p>什么规则都没有.</p>
<p><strong>2.清除原有规则.</strong><br />
不管你在安装linux时是否启动了防火墙,如果你想配置属于自己的防火墙,那就清除现在filter的所有规则.<br />
<strong># iptables -F</strong>        清除预设表filter中的所有规则链的规则<br />
<strong># iptables -X</strong>        清除预设表filter中使用者自定链中的规则<br />
我们在来看一下<br />
<strong># iptables -L -n</strong></p>
<blockquote><p>Chain INPUT (policy ACCEPT)<br />
target       prot opt source                 destination<br />
Chain FORWARD (policy ACCEPT)<br />
target       prot opt source                 destination<br />
Chain OUTPUT (policy ACCEPT)<br />
target       prot opt source                 destination</p></blockquote>
<p>什么都没有了吧,和我们在安装linux时没有启动防火墙是一样的.(提前说一句,这些配置就像用命令配置IP一样,重起就会失去作用),怎么保存.<br />
<strong># /etc/rc.d/init.d/iptables save</strong><br />
这样就可以写到 /etc/sysconfig/iptables 文件里了.写入后记得把防火墙重起一下,才能起作用.<br />
<strong># service iptables restart</strong><br />
现在IPTABLES配置表里什么配置都没有了,那我们开始我们的配置吧</p>
<p><strong>3.设定预设规则</strong><br />
<strong># iptables -p INPUT DROP<br />
# iptables -p OUTPUT ACCEPT<br />
# iptables -p FORWARD DROP</strong><br />
上面的意思是,当超出了IPTABLES里filter表里的两个链规则(INPUT,FORWARD)时,不在这两个规则里的数据包怎么处理呢,那就是DROP(放弃).应该说这样配置是很安全的.我们要控制流入数据包</p>
<p>而对于OUTPUT链,也就是流出的包我们不用做太多限制,而是采取ACCEPT,也就是说,不在着个规则里的包怎么办呢,那就是通过.</p>
<p>可以看出INPUT,FORWARD两个链采用的是允许什么包通过,而OUTPUT链采用的是不允许什么包通过.</p>
<p>这样设置还是挺合理的,当然你也可以三个链都DROP,但这样做我认为是没有必要的,而且要写的规则就会增加.但如果你只想要有限的几个规则是,如只做WEB服务器.还是推荐三个链都是DROP.<br />
注:如果你是远程SSH登陆的话,当你输入第一个命令回车的时候就应该掉了.因为你没有设置任何规则.<br />
怎么办,去本机操作呗!</p>
<p><strong>4.添加规则.</strong><br />
首先添加INPUT链,INPUT链的默认规则是DROP,所以我们就写需要ACCETP(通过)的链</p>
<p>为了能采用远程SSH登陆,我们要开启22端口<br />
<strong># iptables -A INPUT -p tcp --dport 22 -j ACCEPT</strong><br />
<strong># iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT</strong><br />
注:这个规则,如果你把OUTPUT 设置成DROP的就要写上这一部,好多人都是望了写这一部规则导致,始终无法SSH.在远程一下,是不是好了.</p>
<p>其他的端口也一样,如果开启了web服务器,OUTPUT设置成DROP的话,同样也要添加一条链:<br />
<strong># iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT</strong><br />
其他同理.</p>
<p>如果做了WEB服务器,开启80端口<br />
<strong># iptables -A INPUT -p tcp --dport 80 -j ACCEPT</strong></p>
<p>如果做了邮件服务器,开启25,110端口<br />
<strong># iptables -A INPUT -p tcp --dport 110 -j ACCEPT</strong><br />
<strong># iptables -A INPUT -p tcp --dport 25 -j ACCEPT</strong></p>
<p>如果做了FTP服务器,开启21端口<br />
<strong># iptables -A INPUT -p tcp --dport 21 -j ACCEPT</strong><br />
<strong># iptables -A INPUT -p tcp --dport 20 -j ACCEPT</strong></p>
<p>如果做了DNS服务器,开启53端口<br />
<strong># iptables -A INPUT -p tcp --dport 53 -j ACCEPT</strong></p>
<p>如果你还做了其他的服务器,需要开启哪个端口,照写就行了.<br />
上面主要写的都是INPUT链,凡是不在上面的规则里的,都DROP</p>
<p>允许icmp包通过,也就是允许 ping<br />
<strong># iptables -A OUTPUT -p icmp -j ACCEPT</strong> (OUTPUT设置成DROP的话)<br />
<strong># iptables -A INPUT -p icmp -j ACCEPT</strong>    (INPUT设置成DROP的话)</p>
<p>允许loopback!(不然会导致DNS无法正常关闭等问题)<br />
<strong># iptables -A INPUT -i lo -p all -j ACCEPT</strong> (如果是INPUT DROP)<br />
<strong># iptables -A OUTPUT -o lo -p all -j ACCEPT</strong>(如果是OUTPUT DROP)</p>
<p>下面写OUTPUT链,OUTPUT链默认规则是ACCEPT,所以我们就写需要DROP(放弃)的链.</p>
<p>减少不安全的端口连接<br />
<strong># iptables -A OUTPUT -p tcp --sport 31337 -j DROP<br />
# iptables -A OUTPUT -p tcp --dport 31337 -j DROP</strong><br />
有些些特洛伊木马会扫描端口31337到31340(即黑客语言中的 elite 端口)上的服务。既然合法服务都不使用这些非标准端口来通信,阻塞这些端口能够有效地减少你的网络上可能被感染的机器和它们的远程主服务器进行独立通信的机会<br />
还有其他端口也一样,像:31335、27444、27665、20034 NetBus、9704、137-139（smb）,2049(NFS)端口也应被禁止,我在这写的也不全,有兴趣的朋友应该去查一下相关资料.</p>
<p>当然出入更安全的考虑你也可以包OUTPUT链设置成DROP,那你添加的规则就多一些,就像上边添加<br />
允许SSH登陆一样.照着写就行了.</p>
<p>下面写一下更加细致的规则,就是限制到某台机器</p>
<p>如:我们只允许192.168.0.3的机器进行SSH连接<br />
<strong># iptables -A INPUT -s 192.168.0.3 -p tcp --dport 22 -j ACCEPT</strong><br />
如果要允许,或限制一段IP地址可用 <strong>192.168.0.0/24</strong> 表示192.168.0.1-255端的所有IP.<br />
24表示子网掩码数.但要记得把 /etc/sysconfig/iptables 里的这一行删了.<br />
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT 因为它表示所有地址都可以登陆.<br />
或采用命令方式:<br />
<strong># iptables -D INPUT -p tcp --dport 22 -j ACCEPT</strong><br />
然后保存,我再说一边,反是采用命令的方式,只在当时生效,如果想要重起后也起作用,那就要保存.写入到/etc/sysconfig/iptables文件里.<br />
<strong># /etc/rc.d/init.d/iptables save</strong><br />
这样写 !192.168.0.3 表示除了192.168.0.3的ip地址<br />
其他的规则连接也一样这么设置.</p>
<p>在下面就是FORWARD链,FORWARD链的默认规则是DROP,所以我们就写需要ACCETP(通过)的链,对正在转发链的监控.</p>
<p>开启转发功能,(在做NAT时,FORWARD默认规则是DROP时,必须做)<br />
<strong># iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT<br />
# iptables -A FORWARD -i eth1 -o eh0 -j ACCEPT</strong></p>
<p>丢弃坏的TCP包<br />
<strong>#iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j DROP</strong></p>
<p>处理IP碎片数量,防止攻击,允许每秒100个<br />
<strong>#iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT</strong></p>
<p>设置ICMP包过滤,允许每秒1个包,限制触发条件是10个包<br />
<strong>#iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT</strong></p>
<p>我在前面只所以允许ICMP包通过,就是因为我在这里有限制.</p>
<h2>二、配置一个NAT表放火墙</h2>
<p><strong>1. 查看本机关于NAT的设置情况</strong><br />
<strong># iptables -t nat -L</strong></p>
<blockquote><p>Chain PREROUTING (policy ACCEPT)<br />
target       prot opt source                 destination<br />
Chain POSTROUTING (policy ACCEPT)<br />
target       prot opt source                 destination<br />
SNAT         all    --    192.168.0.0/24         anywhere              to:211.101.46.235<br />
Chain OUTPUT (policy ACCEPT)<br />
target       prot opt source                 destination</p></blockquote>
<p>我的NAT已经配置好了的(只是提供最简单的代理上网功能,还没有添加防火墙规则).关于怎么配置NAT,参考我的另一篇文章<br />
当然你如果还没有配置NAT的话,你也不用清除规则,因为NAT在默认情况下是什么都没有的</p>
<p>如果你想清除,命令是<br />
<strong># iptables -F -t nat<br />
# iptables -X -t nat<br />
# iptables -Z -t nat</strong></p>
<p><strong>2. 添加规则</strong><br />
添加基本的NAT地址转换,(关于如何配置NAT可以看我的另一篇文章)<br />
添加规则,我们只添加DROP链.因为默认链全是ACCEPT.</p>
<p>防止外网用内网IP欺骗<br />
<strong># iptables -t nat -A PREROUTING -i eth0 -s 10.0.0.0/8 -j DROP<br />
# iptables -t nat -A PREROUTING -i eth0 -s 172.16.0.0/12 -j DROP<br />
# iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/16 -j DROP</strong></p>
<p>如果我们想,比如阻止MSN,QQ,BT等的话,需要找到它们所用的端口或者IP,(个人认为没有太大必要)<br />
例：<br />
禁止与211.101.46.253的所有连接<br />
<strong># iptables -t nat -A PREROUTING    -d 211.101.46.253 -j DROP</strong></p>
<p>禁用FTP(21)端口<br />
<strong># iptables -t nat -A PREROUTING -p tcp --dport 21 -j DROP</strong><br />
这样写范围太大了,我们可以更精确的定义.<br />
<strong># iptables -t nat -A PREROUTING    -p tcp --dport 21 -d 211.101.46.253 -j DROP</strong><br />
这样只禁用211.101.46.253地址的FTP连接,其他连接还可以.如web(80端口)连接.</p>
<p>按照我写的,你只要找到QQ,MSN等其他软件的IP地址,和端口,以及基于什么协议,只要照着写就行了.</p>
<p>最后：<br />
drop非法连接<br />
<strong># iptables -A INPUT     -m state --state INVALID -j DROP<br />
# iptables -A OUTPUT    -m state --state INVALID -j DROP<br />
# iptables-A FORWARD -m state --state INVALID -j DROP</strong></p>
<p>允许所有已经建立的和相关的连接<br />
<strong># iptables-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT<br />
# iptables-A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT<br />
# /etc/rc.d/init.d/iptables save</strong><br />
这样就可以写到/etc/sysconfig/iptables文件里了.写入后记得把防火墙重起一下,才能起作用<br />
<strong># service iptables restart</strong><br />
别忘了保存，不行就写一部保存一次．你可以一边保存，一边做实验，看看是否达到你的要求</p>
<h4>Incoming search terms:</h4><ul><li><a href="http://www.21andy.com/blog/20120528/2043.html" title="iptables">iptables</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.21andy.com/blog/20120528/2043.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Waterfall 瀑布流布局 jQuery &amp; KISSY</title>
		<link>http://www.21andy.com/blog/20120527/2041.html</link>
		<comments>http://www.21andy.com/blog/20120527/2041.html#comments</comments>
		<pubDate>Sun, 27 May 2012 14:53:57 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[技术]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[KISSY]]></category>
		<category><![CDATA[Waterfall]]></category>
		<category><![CDATA[布局]]></category>
		<category><![CDATA[瀑布流]]></category>

		<guid isPermaLink="false">http://www.21andy.com/blog/?p=2041</guid>
		<description><![CDATA[瀑布流布局站点欣赏 Pinterest http://pinterest.com Wookmark http://www.wookmark.com/ 花瓣网 http://huaban.com/ 淘宝爱逛街 http://love.taobao.com/guang 还有这里 http://www.21andy.com/ 发现啦 http://www.faxianla.com/ 目前而言实现瀑布流主要有3种方式: float, absolute, css3 colum. 最佳实现方式是绝对定位 absolute 最大的缺点就是很耗CPU内存资源，机器烂很容易卡死！ 教程 http://benholland.me/javascript/how-to-build-a-site-that-works-like-pinterest/ jQuery 实现 Waterfall 插件集合 jQuery Masonry http://masonry.desandro.com/index.html jQuery WookMark http://www.wookmark.com/jquery-plugin jQuery Isotope http://isotope.metafizzy.co/demos/layout-modes.html jQuery iMuFeng Waterfall https://github.com/iMuFeng/Waterfall jQuery Waterfall jQuery Masonry 使用方法 $('#container').masonry({&#160; itemSelector: '.box'}); jQuery WookMark 使用方法 $('#myContent li').wookmark({offset: 2}); jQuery [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.21andy.com/blog/upload/2012/0528/fe455b73aaf12550.jpg" class="lightbox"><img src="http://www.21andy.com/blog/upload/2012/0528/fe455b73aaf12550.jpg" title="Waterfall 瀑布流布局 jQuery & KISSY" alt="Waterfall 瀑布流布局 jQuery & KISSY fe455b73aaf12550" /></a></p>
<p>瀑布流布局站点欣赏</p>
<ul>
<li>Pinterest <a href="http://pinterest.com" rel="nofollow" target="_blank">http://pinterest.com</a></li>
<li>Wookmark <a href="http://www.wookmark.com/" rel="nofollow" target="_blank">http://www.wookmark.com/</a></li>
<li>花瓣网 <a href="http://huaban.com/" rel="nofollow" target="_blank">http://huaban.com/</a></li>
<li>淘宝爱逛街 <a href="http://love.taobao.com/guang" rel="nofollow" target="_blank">http://love.taobao.com/guang</a></li>
<li>还有这里 <a href="http://www.21andy.com/blog/" target="_blank">http://www.21andy.com/</a></li>
<li>发现啦 <a href="http://www.faxianla.com/" rel="nofollow" target="_blank">http://www.faxianla.com/</a></li>
</ul>
<p><a href="http://www.21andy.com/blog/uploads/2012/05/waterfall.jpg" class="lightbox"><img src="http://www.21andy.com/blog/uploads/2012/05/waterfall.jpg" alt="Waterfall 瀑布流布局 jQuery & KISSY waterfall" title="waterfall" width="500" height="778" class="alignnone size-full wp-image-2042" /></a></p>
<p>目前而言实现瀑布流主要有3种方式: float, absolute, css3 colum.<br />
最佳实现方式是绝对定位 <strong>absolute</strong><br />
<strong>最大的缺点就是很耗CPU内存资源，机器烂很容易卡死！</strong></p>
<p>教程 <a href="http://benholland.me/javascript/how-to-build-a-site-that-works-like-pinterest/" target="_blank">http://benholland.me/javascript/how-to-build-a-site-that-works-like-pinterest/<br />
</a></p>
<h2>jQuery 实现 Waterfall 插件集合</h2>
<p><strong>jQuery Masonry</strong> <a href="http://masonry.desandro.com/index.html" rel="nofollow" target="_blank">http://masonry.desandro.com/index.html</a><br />
<strong>jQuery WookMark</strong> <a href="http://www.wookmark.com/jquery-plugin" rel="nofollow" target="_blank">http://www.wookmark.com/jquery-plugin</a><br />
<strong>jQuery Isotope</strong> <a href="http://isotope.metafizzy.co/demos/layout-modes.html" target="_blank">http://isotope.metafizzy.co/demos/layout-modes.html</a><br />
<strong>jQuery iMuFeng Waterfall</strong> <a href="https://github.com/iMuFeng/Waterfall" rel="nofollow" target="_blank">https://github.com/iMuFeng/Waterfall</a></p>
<h2>jQuery Waterfall</h2>
<p>jQuery Masonry 使用方法</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Gray;">$</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">#container</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">masonry</span><span style="color: Olive;">({</span><span style="color: Gray;"><br />&nbsp; </span><span style="color: Blue;">itemSelector</span><span style="color: Gray;">: </span><span style="color: #8b0000;">'</span><span style="color: Red;">.box</span><span style="color: #8b0000;">'</span><span style="color: Gray;"><br /></span><span style="color: Olive;">})</span><span style="color: Gray;">;</span></div></div>
<p>jQuery WookMark 使用方法</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Gray;">$</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">#myContent li</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">wookmark</span><span style="color: Olive;">({</span><span style="color: Blue;">offset</span><span style="color: Gray;">: </span><span style="color: Maroon;">2</span><span style="color: Olive;">})</span><span style="color: Gray;">;</span></div></div>
<p>jQuery iMuFeng Waterfall 使用方法<br />
加载 jQuery库 (需1.4+)<br />
加载 jQuery.waterfull.min.js , 必须在jQuery库之后;<br />
调用接口: $node.waterfall({/* 此处为设置选项, 可留空 */})<br />
如: </p>
<div class="hl-surround"><div class="hl-main"><span style="color: Gray;">$</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">#container</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">waterfall</span><span style="color: Olive;">({})</span></div></div>
<p>设置选项</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">itemSelector</span><span style="color: Gray;">:</span><span style="color: #8b0000;">'</span><span style="color: Red;">.post-home</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,&nbsp; &nbsp; &nbsp;</span><span style="color: #ffa500;">//子元素id/class, 可留空</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">columnCount</span><span style="color: Gray;">:</span><span style="color: Maroon;">4</span><span style="color: Gray;">,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #ffa500;">// 列数,&nbsp; 纯数字, 可留空</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">columnWidth</span><span style="color: Gray;">:</span><span style="color: Maroon;">300</span><span style="color: Gray;">,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #ffa500;">// 列宽度, 纯数字, 可留空</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">isResizable</span><span style="color: Gray;">:</span><span style="color: Green;">false</span><span style="color: Gray;">,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #ffa500;">// 自适应浏览器宽度, 默认false</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">isAnimated</span><span style="color: Gray;">:</span><span style="color: Green;">false</span><span style="color: Gray;">,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">// 元素动画, 默认false</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">Duration</span><span style="color: Gray;">:</span><span style="color: Maroon;">500</span><span style="color: Gray;">,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">// 动画时间</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">Easing</span><span style="color: Gray;">:</span><span style="color: #8b0000;">'</span><span style="color: Red;">swing</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">// 动画效果, 配合 jQuery Easing Plugin 使用</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">endFn</span><span style="color: Gray;">:</span><span style="color: Green;">function</span><span style="color: Olive;">(){}</span><span style="color: Gray;">,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">// 回调函数</span><span style="color: Gray;"><br /></span><span style="color: Olive;">}</span></div></div>
<h2>KISSY Waterfall</h2>
<p><strong>KISSY Waterfall </strong> <a href="http://docs.kissyui.com/docs/html/demo/component/waterfall/index.html" rel="nofollow" target="_blank">http://docs.kissyui.com/docs/html/demo/component/waterfall/index.html</a></p>
<p>KISSY 的 Waterfall 组件主要包含两个部分，一个是对现有数据块进行排列计算各自所在的位置； 二是下拉滚动时，触发加载数据操作，并把数据添加到目标容器中。</p>
<p>1) 数据块排列，算法步骤简述下:</p>
<p>初始化时，对容器中已有数据块元素进行第一次计算，需要用户给定: a，容器元素 — 以此获取容器总宽度； b，列宽度； c，最小列数； 最终列数取的是容器宽度/列宽度和最小列数的最大值，这样保证了，当窗口很小时，仍然出现最小列数的数据；<br />
获得列数后，需要保存每个列的当前高度，这样在添加每个数据块时，才知道起始高度是多少；<br />
依次取容器中的所有数据块，先寻找当前高度最小的某列，之后根据列序号，确定数据块的left，top值，left 为所在列的序号乘以列宽，top 为所在列的当前高度，最后更新所在列的当前高度加上这个数据块元素的高度，至此，插入一个元素结束；<br />
当所有元素插入完毕后，调整容器的高度为各列最大的高度值，结束依次调整；<br />
性能效率上的注意点: a，如果当前正在调整中，又触发了 resize 事件，需要将上次调整暂停后执行这次调整(见 timedChunk 函数)； b，resize 触发会很频繁，可以将回调函数缓存一段时候后执行，即当这段时间内多次触发了resize事件，但回调函数只会执行一次(见 S.buffer 函数)<br />
感兴趣的可以参见源码。</p>
<p>2) 异步加载数据，前面讲的是如何对容器中已有元素进行排列，但很多情况下，还需要不断加载新数据块，为此专门设计了一个独立的模块 KISSY.Waterfall.Loader，其实这个功能就更简单了，仅包含两个步骤:</p>
<p>绑定滚动事件，并确定预加载线高度值，即滚动到哪个高度后，需要去加载数据，其实这个就是列的最小高度值，这样当前滚动值和最小高度值比较一下即可判断出来，是否要触发加载数据；<br />
加载数据，为了不对数据源做太多限制，完全由使用者自己决定数据源从哪边获取和其格式，这样更好的方便用户使用。为此，该组件只提供一个load(success，end) 接口，怎样load 由用户自己去定义，而其中的 success/end，分别给出如何添加新数据(suceess 即同 addItems)/如何停止加载的接口。</p>
<h4>Incoming search terms:</h4><ul><li><a href="http://www.21andy.com/blog/20120527/2041.html" title="jquery 瀑布流">jquery 瀑布流</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.21andy.com/blog/20120527/2041.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adobe Dreamweaver CS6 新功能视频教程下载</title>
		<link>http://www.21andy.com/blog/20120527/2038.html</link>
		<comments>http://www.21andy.com/blog/20120527/2038.html#comments</comments>
		<pubDate>Sat, 26 May 2012 21:05:54 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[收藏]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Dreamweaver CS6]]></category>
		<category><![CDATA[视频教程]]></category>

		<guid isPermaLink="false">http://www.21andy.com/blog/?p=2038</guid>
		<description><![CDATA[Adobe Dreamweaver CS6 新功能视频教程下载（拖到迅雷） [Adobe.Dreamweaver.CS6.新功能视频教程].TLF-SOFT-Lynda.com.Dreamweaver.CS6.New.Features-iNKiSO.bin 390MB 此文件是光盘镜像，可以用 MiniWinMount 虚拟光驱工具加载 中文名: Adobe Dreamweaver CS6 新功能视频教程 英文名: Lynda.com Dreamweaver CS6 New Features 资源格式: 光盘镜像 主讲人: James Williamson 发行日期: 2012年4月23日 地区: 美国 对白语言: 英语 文字语言: 英文 简介: 语言：英语 网址：http://www.lynda.com/Dreamweaver-tutorials/Dreamweaver-CS-New-Features/97612-2.html 类别：教程 Lynda.com 出品的时长1小时22分钟的Adobe Dreamweaver CS6 新功能视频教程。由James Williamson展示了改进后的FTP功能;流体网格功能，为设计师提供了一个可视化的方式来控制多个屏幕尺寸的页面布局，同时自动整合通过使用 HTML5的跨浏览器的一致性;和CSS过渡面板，这使得它很容易通过一个对话框添加令人印象深刻的CSS驱动过渡到页面上的任何元素。 Adobe® Dreamweaver® CS6 网页设计软件拥有直观的可视界面，可制作并编辑网站和移动应用程序。使用专为跨平台兼容性设计的自适应网格版面创建页面。在发布前使用多屏幕预览审阅设计。利用 Adobe® Dreamweaver® CS6 软件中改善的 FTP 性能，更高效地传输大型文件。更新的“实时视图”和“多屏幕预览”面板可呈现 HTML5 [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Adobe Dreamweaver CS6 新功能视频教程下载（拖到迅雷）</strong></p>
<blockquote><p><a rel="nofollow" href="ed2k://%7Cfile%7C%5BAdobe.Dreamweaver.CS6.%E6%96%B0%E5%8A%9F%E8%83%BD%E8%A7%86%E9%A2%91%E6%95%99%E7%A8%8B%5D.TLF-SOFT-Lynda.com.Dreamweaver.CS6.New.Features-iNKiSO.bin%7C408930480%7C2500c940ee3999b967ba79ad18312bcb%7Ch=lfahrm3axhfedackl2hcyfx2kccf6hph%7C/" rel="nofollow" target="_blank">[Adobe.Dreamweaver.CS6.新功能视频教程].TLF-SOFT-Lynda.com.Dreamweaver.CS6.New.Features-iNKiSO.bin</a> 390MB
</p></blockquote>
<p>此文件是光盘镜像，可以用 <a rel="nofollow" href="http://cn.winmount.com/xiazai.html" target="_blank">MiniWinMount</a> 虚拟光驱工具加载</p>
<p>中文名: Adobe Dreamweaver CS6 新功能视频教程<br />
英文名: Lynda.com Dreamweaver CS6 New Features</p>
<p><a href="http://www.21andy.com/blog/uploads/2012/05/dreamweaver_cs6_new.jpg" class="lightbox"><img src="http://www.21andy.com/blog/uploads/2012/05/dreamweaver_cs6_new.jpg" alt="Adobe Dreamweaver CS6 新功能视频教程下载 dreamweaver cs6 new" title="dreamweaver_cs6_new" width="400" height="224" class="alignnone size-full wp-image-2039" /></a></p>
<p>资源格式: 光盘镜像<br />
主讲人: James Williamson<br />
发行日期: 2012年4月23日<br />
地区: 美国<br />
对白语言: 英语<br />
文字语言: 英文</p>
<p>简介:<br />
语言：英语<br />
网址：http://www.lynda.com/Dreamweaver-tutorials/Dreamweaver-CS-New-Features/97612-2.html<br />
类别：教程<br />
Lynda.com 出品的时长1小时22分钟的Adobe Dreamweaver CS6 新功能视频教程。由James Williamson展示了改进后的FTP功能;流体网格功能，为设计师提供了一个可视化的方式来控制多个屏幕尺寸的页面布局，同时自动整合通过使用 HTML5的跨浏览器的一致性;和CSS过渡面板，这使得它很容易通过一个对话框添加令人印象深刻的CSS驱动过渡到页面上的任何元素。<br />
Adobe® Dreamweaver® CS6 网页设计软件拥有直观的可视界面，可制作并编辑网站和移动应用程序。使用专为跨平台兼容性设计的自适应网格版面创建页面。在发布前使用多屏幕预览审阅设计。利用 Adobe® Dreamweaver® CS6 软件中改善的 FTP 性能，更高效地传输大型文件。更新的“实时视图”和“多屏幕预览”面板可呈现 HTML5 代码，使您能检查自己的工作。</p>
<p>Topics include:</p>
<blockquote><p>Exploring the interface changes<br />
Reviewing the FTP enhancements<br />
Using the new image optimization workflows<br />
Applying multiple classes<br />
Applying CSS transitions<br />
Taking advantage of the jQuery Mobile theme support</p></blockquote>
<p>目录: Introduction</p>
<blockquote><p>Welcome 01m 07s<br />
Using the exercise files 02m 09s<br />
01h 18m<br />
1. New Features Exploring changes to the interface 08m 08s<br />
Reviewing FTP enhancements 06m 24s<br />
Exploring image-optimization workflows 11m 00s<br />
Applying multiple classes 05m 51s<br />
Reviewing support for web fonts 11m 59s<br />
Working with CSS3 transitions 08m 39s<br />
Exploring jQuery Mobile theme support 09m 14s<br />
Working with fluid grids 16m 59s<br />
01m 08s<br />
Conclusion Where to go from here 01m 08s</p></blockquote>
<h4>Incoming search terms:</h4><ul><li><a href="http://www.21andy.com/blog/20120527/2038.html" title="dreamweaver cs6 新功能">dreamweaver cs6 新功能</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.21andy.com/blog/20120527/2038.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SwitchHosts 快速切换 hosts 的小工具</title>
		<link>http://www.21andy.com/blog/20120524/2037.html</link>
		<comments>http://www.21andy.com/blog/20120524/2037.html#comments</comments>
		<pubDate>Wed, 23 May 2012 17:38:16 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[软件收藏]]></category>
		<category><![CDATA[hosts]]></category>
		<category><![CDATA[SwitchHosts]]></category>

		<guid isPermaLink="false">http://www.21andy.com/blog/?p=2037</guid>
		<description><![CDATA[SwitchHosts 在 Windows 下的运行截图如下： SwitchHosts 还可以最小化到系统托盘，在托盘图标的右键菜单上也可以快速切换各 hosts 方案： SwitchHosts 绿色版下载地址：https://github.com/oldj/SwitchHosts/downloads]]></description>
			<content:encoded><![CDATA[<p>SwitchHosts 在 Windows 下的运行截图如下：</p>
<p><a href="http://www.21andy.com/blog/upload/2012/0523/9f250547111149be.png" class="lightbox"><img src="http://www.21andy.com/blog/upload/2012/0523/9f250547111149be_thumb.png" title="SwitchHosts 快速切换 hosts 的小工具" alt="SwitchHosts 快速切换 hosts 的小工具 9f250547111149be thumb" /></a></p>
<p>SwitchHosts 还可以最小化到系统托盘，在托盘图标的右键菜单上也可以快速切换各 hosts 方案：</p>
<p><a href="http://www.21andy.com/blog/upload/2012/0523/f963799cd32e4c82.png" class="lightbox"><img src="http://www.21andy.com/blog/upload/2012/0523/f963799cd32e4c82.png" title="SwitchHosts 快速切换 hosts 的小工具" alt="SwitchHosts 快速切换 hosts 的小工具 f963799cd32e4c82" /></a></p>
<p>SwitchHosts 绿色版下载地址：<a href="https://github.com/oldj/SwitchHosts/downloads" rel="nofollow" target="_blank">https://github.com/oldj/SwitchHosts/downloads</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.21andy.com/blog/20120524/2037.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>VMWare 添加虚拟硬盘到 CentOS</title>
		<link>http://www.21andy.com/blog/20120523/2031.html</link>
		<comments>http://www.21andy.com/blog/20120523/2031.html#comments</comments>
		<pubDate>Wed, 23 May 2012 11:18:22 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[技术]]></category>
		<category><![CDATA[VMWare]]></category>
		<category><![CDATA[虚拟硬盘]]></category>

		<guid isPermaLink="false">http://www.21andy.com/blog/?p=2031</guid>
		<description><![CDATA[下面，我实例讲解一下添加一个50G的硬盘到 VMWare 的 CentOS 里 转载请注明原文出处：http://www.21andy.com/blog/20120523/2031.html 1. 先查看一下分区 # fdisk -l Disk /dev/sda: 21.4 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 13 104391 83 Linux /dev/sda2 14 2610 20860402+ 8e Linux LVM Disk [...]]]></description>
			<content:encoded><![CDATA[<p>下面，我实例讲解一下添加一个50G的硬盘到 VMWare 的 CentOS 里</p>
<p><a href="http://www.21andy.com/blog/uploads/2012/05/vmware_add_hdd.png" class="lightbox"><img src="http://www.21andy.com/blog/uploads/2012/05/vmware_add_hdd-500x438.png" alt="VMWare 添加虚拟硬盘到 CentOS vmware add hdd 500x438" title="vmware_add_hdd" width="500" height="438" class="alignnone size-medium wp-image-2033" /></a></p>
<p><a href="http://www.21andy.com/blog/uploads/2012/05/vmware_add_hdd2.png" class="lightbox"><img src="http://www.21andy.com/blog/uploads/2012/05/vmware_add_hdd2-100x100.png" alt="VMWare 添加虚拟硬盘到 CentOS vmware add hdd2 100x100" title="vmware_add_hdd2" width="100" height="100" class="alignnone size-thumbnail wp-image-2034" /></a> <a href="http://www.21andy.com/blog/uploads/2012/05/vmware_add_hdd3.png" class="lightbox"><img src="http://www.21andy.com/blog/uploads/2012/05/vmware_add_hdd3-100x100.png" alt="VMWare 添加虚拟硬盘到 CentOS vmware add hdd3 100x100" title="vmware_add_hdd3" width="100" height="100" class="alignnone size-thumbnail wp-image-2035" /></a> <a href="http://www.21andy.com/blog/uploads/2012/05/vmware_add_hdd4.png" class="lightbox"><img src="http://www.21andy.com/blog/uploads/2012/05/vmware_add_hdd4-100x100.png" alt="VMWare 添加虚拟硬盘到 CentOS vmware add hdd4 100x100" title="vmware_add_hdd4" width="100" height="100" class="alignnone size-thumbnail wp-image-2036" /></a> <a href="http://www.21andy.com/blog/uploads/2012/05/vmware_add_hdd5.png" class="lightbox"><img src="http://www.21andy.com/blog/uploads/2012/05/vmware_add_hdd5-100x100.png" alt="VMWare 添加虚拟硬盘到 CentOS vmware add hdd5 100x100" title="vmware_add_hdd5" width="100" height="100" class="alignnone size-thumbnail wp-image-2032" /></a></p>
<p>转载请注明原文出处：<a title="VMWare 添加虚拟硬盘到 CentOS" href="http://www.21andy.com/blog/20120523/2031.html">http://www.21andy.com/blog/20120523/2031.html</a></p>
<p>1. 先查看一下分区<br />
<strong># fdisk -l</strong></p>
<blockquote><p>Disk /dev/sda: 21.4 GB, 21474836480 bytes<br />
255 heads, 63 sectors/track, 2610 cylinders<br />
Units = cylinders of 16065 * 512 = 8225280 bytes</p>
<p>Device Boot      Start         End      Blocks   Id  System<br />
/dev/sda1   *           1          13      104391   83  Linux<br />
/dev/sda2              14        2610    20860402+  8e  Linux LVM</p>
<p><strong>Disk /dev/sdb: 53.6 GB, 53687091200 bytes<br />
这个是刚才添加的硬盘，找到了!</strong><br />
255 heads, 63 sectors/track, 6527 cylinders<br />
Units = cylinders of 16065 * 512 = 8225280 bytes</p>
<p>Disk /dev/sdb doesn't contain a valid partition table</p></blockquote>
<p>2. 给新加的硬盘 /dev/sdb 分区<br />
<strong># fdisk /dev/sdb</strong></p>
<blockquote><p>Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel<br />
Building a new DOS disklabel. Changes will remain in memory only,<br />
until you decide to write them. After that, of course, the previous<br />
content won't be recoverable.</p>
<p>The number of cylinders for this disk is set to 6527.<br />
There is nothing wrong with that, but this is larger than 1024,<br />
and could in certain setups cause problems with:<br />
1) software that runs at boot time (e.g., old versions of LILO)<br />
2) booting and partitioning software from other OSs<br />
   (e.g., DOS FDISK, OS/2 FDISK)<br />
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)</p></blockquote>
<blockquote><p>Command (m for help): <strong>m</strong><br />
Command action<br />
   a   toggle a bootable flag<br />
   b   edit bsd disklabel<br />
   c   toggle the dos compatibility flag<br />
   d   delete a partition<br />
   l   list known partition types<br />
   m   print this menu<br />
   n   add a new partition<br />
   o   create a new empty DOS partition table<br />
   p   print the partition table<br />
   q   quit without saving changes<br />
   s   create a new empty Sun disklabel<br />
   t   change a partition's system id<br />
   u   change display/entry units<br />
   v   verify the partition table<br />
   w   write table to disk and exit<br />
   x   extra functionality (experts only)</p></blockquote>
<blockquote><p>Command (m for help): <strong>p</strong></p>
<p>Disk /dev/sdb: 53.6 GB, 53687091200 bytes<br />
255 heads, 63 sectors/track, 6527 cylinders<br />
Units = cylinders of 16065 * 512 = 8225280 bytes</p>
<p>   Device Boot      Start         End      Blocks   Id  System</p>
</blockquote>
<blockquote><p>Command (m for help): <strong>n</strong><br />
Command action<br />
   e   extended<br />
   p   primary partition (1-4)<br />
p<br />
Partition number (1-4): <strong>1</strong><br />
First cylinder (1-6527, default 1): 53687091200<br />
Value out of range.<br />
First cylinder (1-6527, default 1):<br />
Using default value 1<br />
Last cylinder or +size or +sizeM or +sizeK (1-6527, default 6527):<br />
Using default value 6527</p></blockquote>
<blockquote><p>Command (m for help): <strong>p</strong></p>
<p>Disk /dev/sdb: 53.6 GB, 53687091200 bytes<br />
255 heads, 63 sectors/track, 6527 cylinders<br />
Units = cylinders of 16065 * 512 = 8225280 bytes</p>
<p>   Device Boot      Start         End      Blocks   Id  System<br />
/dev/sdb1               1        6527    52428096   83  Linux</p></blockquote>
<blockquote><p>Command (m for help): <strong>w</strong><br />
The partition table has been altered!</p>
<p>Calling ioctl() to re-read partition table.<br />
Syncing disks.</p></blockquote>
<p>原文：<a href="http://www.21andy.com/blog/20120523/2031.html">VMWare 添加虚拟硬盘到 CentOS</a></p>
<p>3. 格式化它<br />
<strong># mkfs -t ext3 /dev/sdb1</strong></p>
<blockquote><p>mke2fs 1.39 (29-May-2006)<br />
Filesystem label=<br />
OS type: Linux<br />
Block size=4096 (log=2)<br />
Fragment size=4096 (log=2)<br />
6553600 inodes, 13107024 blocks<br />
655351 blocks (5.00%) reserved for the super user<br />
First data block=0<br />
Maximum filesystem blocks=0<br />
400 block groups<br />
32768 blocks per group, 32768 fragments per group<br />
16384 inodes per group<br />
Superblock backups stored on blocks:<br />
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,<br />
	4096000, 7962624, 11239424</p>
<p>Writing inode tables: done<br />
Creating journal (32768 blocks): done<br />
Writing superblocks and filesystem accounting information: done</p>
<p>This filesystem will be automatically checked every 38 mounts or<br />
180 days, whichever comes first.  Use tune2fs -c or -i to override.</p></blockquote>
<p>4. 再来看一下分区<br />
<strong># fdisk -l</strong></p>
<blockquote><p>Disk /dev/sda: 21.4 GB, 21474836480 bytes<br />
255 heads, 63 sectors/track, 2610 cylinders<br />
Units = cylinders of 16065 * 512 = 8225280 bytes</p>
<p>   Device Boot      Start         End      Blocks   Id  System<br />
/dev/sda1   *           1          13      104391   83  Linux<br />
/dev/sda2              14        2610    20860402+  8e  Linux LVM</p>
<p>Disk /dev/sdb: 53.6 GB, 53687091200 bytes<br />
255 heads, 63 sectors/track, 6527 cylinders<br />
Units = cylinders of 16065 * 512 = 8225280 bytes</p>
<p>   Device Boot      Start         End      Blocks   Id  System<br />
/dev/sdb1               1        6527    52428096   83  Linux<br />
[root@localhost ~]# /dev/<br />
bus/        fd/         input/      mapper/     pts/        snd/        VolGroup00/<br />
disk/       gpmctl      MAKEDEV     net/        shm/        .udev/<br />
[root@localhost ~]# /dev/<br />
bus/        fd/         input/      mapper/     pts/        snd/        VolGroup00/<br />
disk/       gpmctl      MAKEDEV     net/        shm/        .udev/      </p></blockquote>
<p>5. mount 挂载到 CentOS 里<br />
<strong># mkdir /andy<br />
# mount -t ext3 /dev/sdb1 /andy<br />
# df -k</strong></p>
<blockquote><p>Filesystem           1K-blocks      Used Available Use% Mounted on<br />
/dev/mapper/VolGroup00-LogVol00<br />
                      18156292   1392940  15826188   9% /<br />
/dev/sda1               101086     18904     76963  20% /boot<br />
tmpfs                   517288         0    517288   0% /dev/shm<br />
<strong>/dev/sdb1             51605436    184272  48799760   1% /andy</strong></p></blockquote>
<p>搞定！<br />
转载请注明原文出处：<a title="VMWare 添加虚拟硬盘到 CentOS" href="http://www.21andy.com/blog/20120523/2031.html">http://www.21andy.com/blog/20120523/2031.html</a></p>
<h4>Incoming search terms:</h4><ul><li><a href="http://www.21andy.com/blog/20120523/2031.html" title="Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)">Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.21andy.com/blog/20120523/2031.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>解决 yum fastestmirror引起的错误</title>
		<link>http://www.21andy.com/blog/20120523/2030.html</link>
		<comments>http://www.21andy.com/blog/20120523/2030.html#comments</comments>
		<pubDate>Wed, 23 May 2012 04:11:32 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[技术]]></category>
		<category><![CDATA[fastestmirror]]></category>
		<category><![CDATA[yum]]></category>

		<guid isPermaLink="false">http://www.21andy.com/blog/?p=2030</guid>
		<description><![CDATA[今天运行 yum 的时候出错，原因是fastestmirror引起的 # yum -y updateLoaded plugins: fastestmirrorDetermining fastest mirrorsTraceback (most recent call last):&#160; File &#34;/usr/bin/yum&#34;, line 29, in ?&#160;&#160; &#160;yummain.user_main(sys.argv[1:], exit_code=True)&#160; File &#34;/usr/share/yum-cli/yummain.py&#34;, line 309, in user_main&#160;&#160; &#160;errcode = main(args)&#160; File &#34;/usr/share/yum-cli/yummain.py&#34;, line 178, in main&#160;&#160; &#160;result, resultmsgs = base.doCommands()&#160; File &#34;/usr/share/yum-cli/cli.py&#34;, line 345, in doCommands&#160;&#160; &#160;self._getTs(needTsRemove)&#160; File &#34;/usr/lib/python2.4/site-packages/yum/depsolve.py&#34;, line 101, in _getTs&#160;&#160; [...]]]></description>
			<content:encoded><![CDATA[<p>今天运行 yum 的时候出错，原因是fastestmirror引起的</p>
<div class="hl-surround"><div class="hl-main"># yum -y update<br />Loaded plugins: fastestmirror<br />Determining fastest mirrors<br />Traceback (most recent call last):<br />&nbsp; File &quot;/usr/bin/yum&quot;, line 29, in ?<br />&nbsp;&nbsp; &nbsp;yummain.user_main(sys.argv[1:], exit_code=True)<br />&nbsp; File &quot;/usr/share/yum-cli/yummain.py&quot;, line 309, in user_main<br />&nbsp;&nbsp; &nbsp;errcode = main(args)<br />&nbsp; File &quot;/usr/share/yum-cli/yummain.py&quot;, line 178, in main<br />&nbsp;&nbsp; &nbsp;result, resultmsgs = base.doCommands()<br />&nbsp; File &quot;/usr/share/yum-cli/cli.py&quot;, line 345, in doCommands<br />&nbsp;&nbsp; &nbsp;self._getTs(needTsRemove)<br />&nbsp; File &quot;/usr/lib/python2.4/site-packages/yum/depsolve.py&quot;, line 101, in _getTs<br />&nbsp;&nbsp; &nbsp;self._getTsInfo(remove_only)<br />&nbsp; File &quot;/usr/lib/python2.4/site-packages/yum/depsolve.py&quot;, line 112, in _getTsInfo<br />&nbsp;&nbsp; &nbsp;pkgSack = self.pkgSack<br />&nbsp; File &quot;/usr/lib/python2.4/site-packages/yum/__init__.py&quot;, line 662, in &lt;lambda&gt;<br />&nbsp;&nbsp; &nbsp;pkgSack = property(fget=lambda self: self._getSacks(),<br />&nbsp; File &quot;/usr/lib/python2.4/site-packages/yum/__init__.py&quot;, line 502, in _getSacks<br />&nbsp;&nbsp; &nbsp;self.repos.populateSack(which=repos)<br />&nbsp; File &quot;/usr/lib/python2.4/site-packages/yum/repos.py&quot;, line 232, in populateSack<br />&nbsp;&nbsp; &nbsp;self.doSetup()<br />&nbsp; File &quot;/usr/lib/python2.4/site-packages/yum/repos.py&quot;, line 79, in doSetup<br />&nbsp;&nbsp; &nbsp;self.ayum.plugins.run('postreposetup')<br />&nbsp; File &quot;/usr/lib/python2.4/site-packages/yum/plugins.py&quot;, line 179, in run<br />&nbsp;&nbsp; &nbsp;func(conduitcls(self, self.base, conf, **kwargs))<br />&nbsp; File &quot;/usr/lib/yum-plugins/fastestmirror.py&quot;, line 181, in postreposetup_hook<br />&nbsp;&nbsp; &nbsp;all_urls = FastestMirror(all_urls).get_mirrorlist()<br />&nbsp; File &quot;/usr/lib/yum-plugins/fastestmirror.py&quot;, line 333, in get_mirrorlist<br />&nbsp;&nbsp; &nbsp;self._poll_mirrors()<br />&nbsp; File &quot;/usr/lib/yum-plugins/fastestmirror.py&quot;, line 376, in _poll_mirrors<br />&nbsp;&nbsp; &nbsp;pollThread.start()<br />&nbsp; File &quot;/usr/lib/python2.4/threading.py&quot;, line 416, in start<br />&nbsp;&nbsp; &nbsp;_start_new_thread(self.__bootstrap, ())<br />thread.error: can't start new thread</div></div>
<p>解决办法：</p>
<div class="hl-surround"><div class="hl-main">echo &quot;alias yum='yum --disableplugin=fastestmirror'&quot; &gt;&gt; /root/.bashrc</div></div>
<p>退出重新登录</p>
<h4>Incoming search terms:</h4><ul><li><a href="http://www.21andy.com/blog/20120523/2030.html" title="fastestmirror">fastestmirror</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.21andy.com/blog/20120523/2030.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>curl_multi_exec() &amp; curl_multi_getcontent()</title>
		<link>http://www.21andy.com/blog/20120523/2029.html</link>
		<comments>http://www.21andy.com/blog/20120523/2029.html#comments</comments>
		<pubDate>Tue, 22 May 2012 18:48:19 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[curl_multi_exec]]></category>
		<category><![CDATA[curl_multi_getcontent]]></category>
		<category><![CDATA[curl_setopt]]></category>

		<guid isPermaLink="false">http://www.21andy.com/blog/?p=2029</guid>
		<description><![CDATA[/*** Perform parallel cURL request.** @param array $urls Array of URLs to make request.* @param array $options (Optional) Array of additional cURL options.* @return mixed Results from the request (if any).*/function curlMultiRequest($urls, $options = array()) {&#160;&#160; &#160;$ch = array();&#160;&#160; &#160;$results = array();&#160;&#160; &#160;$mh = curl_multi_init(); &#160;&#160; &#160;foreach($urls as $key =&#62; $val) {&#160;&#160; &#160; &#160; &#160;$ch[$key] [...]]]></description>
			<content:encoded><![CDATA[<div class="hl-surround"><div class="hl-main"><span style="color: #ffa500;">/**<br />* Perform parallel cURL request.<br />*<br />*</span><span style="color: Blue;"> @param </span><span style="color: #ffa500;">array $urls Array of URLs to make request.<br />*</span><span style="color: Blue;"> @param </span><span style="color: #ffa500;">array $options (Optional) Array of additional cURL options.<br />*</span><span style="color: Blue;"> @return </span><span style="color: #ffa500;">mixed Results from the request (if any).<br />*/</span><span style="color: Gray;"><br /></span><span style="color: Green;">function</span><span style="color: Gray;"> </span><span style="color: Blue;">curlMultiRequest</span><span style="color: Olive;">(</span><span style="color: #00008b;">$urls</span><span style="color: Gray;">, </span><span style="color: #00008b;">$options</span><span style="color: Gray;"> = </span><span style="color: Green;">array</span><span style="color: Olive;">())</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: #00008b;">$ch</span><span style="color: Gray;"> = </span><span style="color: Green;">array</span><span style="color: Olive;">()</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: #00008b;">$results</span><span style="color: Gray;"> = </span><span style="color: Green;">array</span><span style="color: Olive;">()</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: #00008b;">$mh</span><span style="color: Gray;"> = </span><span style="color: Blue;">curl_multi_init</span><span style="color: Olive;">()</span><span style="color: Gray;">; <br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">foreach</span><span style="color: Olive;">(</span><span style="color: #00008b;">$urls</span><span style="color: Gray;"> </span><span style="color: Green;">as</span><span style="color: Gray;"> </span><span style="color: #00008b;">$key</span><span style="color: Gray;"> =&gt; </span><span style="color: #00008b;">$val</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$ch</span><span style="color: Olive;">[</span><span style="color: #00008b;">$key</span><span style="color: Olive;">]</span><span style="color: Gray;"> = </span><span style="color: Blue;">curl_init</span><span style="color: Olive;">()</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">if</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: #00008b;">$options</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">curl_setopt_array</span><span style="color: Olive;">(</span><span style="color: #00008b;">$ch</span><span style="color: Olive;">[</span><span style="color: #00008b;">$key</span><span style="color: Olive;">]</span><span style="color: Gray;">, </span><span style="color: #00008b;">$options</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">curl_setopt</span><span style="color: Olive;">(</span><span style="color: #00008b;">$ch</span><span style="color: Olive;">[</span><span style="color: #00008b;">$key</span><span style="color: Olive;">]</span><span style="color: Gray;">, </span><span style="color: Blue;">CURLOPT_URL</span><span style="color: Gray;">, </span><span style="color: #00008b;">$val</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">curl_multi_add_handle</span><span style="color: Olive;">(</span><span style="color: #00008b;">$mh</span><span style="color: Gray;">, </span><span style="color: #00008b;">$ch</span><span style="color: Olive;">[</span><span style="color: #00008b;">$key</span><span style="color: Olive;">])</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: #00008b;">$running</span><span style="color: Gray;"> = </span><span style="color: Green;">null</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">do</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">curl_multi_exec</span><span style="color: Olive;">(</span><span style="color: #00008b;">$mh</span><span style="color: Gray;">, </span><span style="color: #00008b;">$running</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">while</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: #00008b;">$running</span><span style="color: Gray;"> &gt; </span><span style="color: Maroon;">0</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: #ffa500;">// Get content and remove handles.</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">foreach</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: #00008b;">$ch</span><span style="color: Gray;"> </span><span style="color: Green;">as</span><span style="color: Gray;"> </span><span style="color: #00008b;">$key</span><span style="color: Gray;"> =&gt; </span><span style="color: #00008b;">$val</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$results</span><span style="color: Olive;">[</span><span style="color: #00008b;">$key</span><span style="color: Olive;">]</span><span style="color: Gray;"> = </span><span style="color: Blue;">curl_multi_getcontent</span><span style="color: Olive;">(</span><span style="color: #00008b;">$val</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">curl_multi_remove_handle</span><span style="color: Olive;">(</span><span style="color: #00008b;">$mh</span><span style="color: Gray;">, </span><span style="color: #00008b;">$val</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">curl_multi_close</span><span style="color: Olive;">(</span><span style="color: #00008b;">$mh</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">return</span><span style="color: Gray;"> </span><span style="color: #00008b;">$results</span><span style="color: Gray;">;<br /></span><span style="color: Olive;">}</span><span style="color: Gray;"></span></div></div>
]]></content:encoded>
			<wfw:commentRss>http://www.21andy.com/blog/20120523/2029.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress 使用 SQLite 3正确安装方法</title>
		<link>http://www.21andy.com/blog/20120522/2028.html</link>
		<comments>http://www.21andy.com/blog/20120522/2028.html#comments</comments>
		<pubDate>Tue, 22 May 2012 13:22:14 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[技术]]></category>
		<category><![CDATA[PDO]]></category>
		<category><![CDATA[SQLite]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.21andy.com/blog/?p=2028</guid>
		<description><![CDATA[有些小内存的VPS，不想装MySQL，于是就想让WordPress 使用 SQLite3 PDO (SQLite) For WordPress 这个插件很早就有了，可一直是个鸡肋，以前错误一堆堆的 今天我又尝试了一下，用最新版的WordPress 3.3 来使用 SQLite3 数据库 我在本机装的VMware虚拟机CentOS中完成，这里我用的一点小技巧分享给大家 原文出处：http://www.21andy.com/blog/20120522/2028.html 1. 向 hosts 添加 192.168.134.133 21andy.com 2. 在虚拟机 nginx 中添加 21andy.com 配置 这样都搞好以后，打包到服务器解压就行了 回到本文主题，WordPress 使用 SQLite 3正确安装方法 WordPress 使用 SQLite 3正确安装方法 正确安装方法如下： 1. 先正常用 MySQL 安装 WordPress 2. 用 mysqldump 导出数据库 mysqldump -hlocalhost -uroot -p --compatible=ansi --skip-opt --default-character-set=utf8 wordpress &#62; [...]]]></description>
			<content:encoded><![CDATA[<p>有些小内存的VPS，不想装MySQL，于是就想让WordPress 使用 SQLite3</p>
<p>PDO (SQLite) For WordPress 这个插件很早就有了，可一直是个鸡肋，以前错误一堆堆的</p>
<p>今天我又尝试了一下，用最新版的WordPress 3.3 来使用 SQLite3 数据库</p>
<p>我在本机装的VMware虚拟机CentOS中完成，这里我用的一点小技巧分享给大家</p>
<p>原文出处：<a href="http://www.21andy.com/blog/20120522/2028.html">http://www.21andy.com/blog/20120522/2028.html</a> </p>
<p>1. 向 hosts 添加 192.168.134.133  21andy.com<br />
2. 在虚拟机 nginx 中添加 21andy.com 配置</p>
<p>这样都搞好以后，打包到服务器解压就行了</p>
<p>回到本文主题，WordPress 使用 SQLite 3正确安装方法</p>
<p><a href="http://www.21andy.com/blog/20120522/2028.html">WordPress 使用 SQLite 3正确安装方法</a> </p>
<p>正确安装方法如下：<br />
1. 先正常用 MySQL 安装 WordPress<br />
2. 用 mysqldump 导出数据库</p>
<div class="hl-surround"><div class="hl-main">mysqldump -hlocalhost -uroot -p --compatible=ansi --skip-opt --default-character-set=utf8 wordpress &gt; wordpress.sql</div></div>
<p>3. 转换 MySQL 成 SQLite3</p>
<div class="hl-title">&#19979;&#36733;: <a href="http://www.21andy.com/blog/wp-content/plugins/coolcode/coolcode.php?p=2028&amp;download=mysql_to_sqlite.sh">mysql_to_sqlite.sh</a></div><div class="hl-surround"><div class="hl-main">#!/bin/bash<br />if [ &quot;x$1&quot; == &quot;x&quot; ]; then<br />&nbsp; echo &quot;Usage: $0 &lt;dumpname&gt;&quot;<br />&nbsp; exit<br />fi<br /><br />cat $1 |<br />grep -v ' KEY &quot;' |<br />grep -v ' UNIQUE KEY &quot;' |<br />grep -v ' PRIMARY KEY ' |<br />sed '/^SET/d' |<br />sed 's/ unsigned / /g' |<br />sed 's/ auto_increment/ primary key autoincrement/g' |<br />sed 's/ smallint([0-9]*) / integer /g' |<br />sed 's/ tinyint([0-9]*) / integer /g' |<br />sed 's/ int([0-9]*) / integer /g' |<br />sed 's/ character set [^ ]* / /g' |<br />sed 's/ enum([^)]*) / varchar(255) /g' |<br />sed 's/ on update [^,]*//g' |<br />sed 's/\\r\\n/\\n/g' |<br />sed 's/\\&quot;/&quot;/g' |<br />sed 's/ &quot;id&quot; bigint(20) NOT NULL/ &quot;id&quot; integer primary key autoincrement/g' |<br />perl -e 'local $/;$_=&lt;&gt;;s/,\n\)/\n\)/gs;print &quot;begin;\n&quot;;print;print &quot;commit;\n&quot;' |<br />perl -pe '<br />if (/^(INSERT.+?)\(/) {<br />&nbsp; $a=$1;<br />&nbsp; s/\\'\''/'\'\''/g;<br />&nbsp; s/\\n/\n/g;<br />&nbsp; s/\),\(/\);\n$a\(/g;<br />}<br />' &gt; $1.sql<br />cat $1.sql | sqlite3 $1.sqlite &gt; $1.err<br />ERRORS=`cat $1.err | wc -l`<br />if [ $ERRORS == 0 ]; then<br />&nbsp; echo &quot;Conversion completed ! Output file: $1.sqlite&quot;<br />&nbsp; rm $1.sql<br />&nbsp; rm $1.err<br />else<br />&nbsp; echo &quot;There were errors during conversion.&nbsp; Please review $1.err and $1.sql for details.&quot;<br />fi</div></div>
<p>然后</p>
<div class="hl-surround"><div class="hl-main">chmod +x mysql_to_sqlihte.sh<br />./mysql_to_sqlite.sh wordpress.sql</div></div>
<p>这样会生成一个 <strong>wordpress.sql.sqlite</strong> 的文件了，就是 SQLite3 数据库</p>
<p>4. 安装 PDO (SQLite) For WordPress 插件</p>
<div class="hl-surround"><div class="hl-main">wget http://downloads.wordpress.org/plugin/pdo-for-wordpress.2.7.0.zip<br />unzip pdo-for-wordpress.2.7.0.zip<br />mv pdo-for-wordpress/* wordpress/wp-content/<br />cd wordpress/wp-content/<br />mkdir database</div></div>
<p>然后把刚才生成的 <strong>wordpress.sql.sqlite</strong> 放到 database 目录下<br />
改名为 <strong>wordpress.sqlite</strong></p>
<p>5. 编辑配置文件<br />
打开 <strong>wp-config.php</strong> 添加</p>
<div class="hl-surround"><div class="hl-main">define('DB_TYPE', 'sqlite');</div></div>
<p>其他的 DB_NAME, DB_PASSWORD 等可以设置成空了</p>
<p>打开 <strong>wp-content/db.php</strong> 查找</p>
<div class="hl-surround"><div class="hl-main">define ('FQDB', FQDBDIR .'MyBlog.sqlite');</div></div>
<p>修改成</p>
<div class="hl-surround"><div class="hl-main">define ('FQDB', FQDBDIR .'wordpress.sqlite');</div></div>
<p>好了，大功告成。</p>
<p><a href="http://www.21andy.com/blog/20120522/2028.html">WordPress 使用 SQLite 3正确安装方法</a> </p>
<p>最后，这个插件还不是很完美，有错误的话，会记录在 <strong>wp-content/database/debug.txt</strong> 中<br />
有些插件用到 mysql 的话，如果使用有问题，看下插件代码是不是用了 mysql 函数，自己改<br />
但基本可以正常使用了</p>
]]></content:encoded>
			<wfw:commentRss>http://www.21andy.com/blog/20120522/2028.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>163 QQ Gmail Live 免费企业邮箱对比</title>
		<link>http://www.21andy.com/blog/20120522/2027.html</link>
		<comments>http://www.21andy.com/blog/20120522/2027.html#comments</comments>
		<pubDate>Tue, 22 May 2012 06:29:54 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[收藏]]></category>
		<category><![CDATA[163]]></category>
		<category><![CDATA[Gmail]]></category>
		<category><![CDATA[Live]]></category>
		<category><![CDATA[QQ]]></category>
		<category><![CDATA[免费企业邮箱]]></category>

		<guid isPermaLink="false">http://www.21andy.com/blog/?p=2027</guid>
		<description><![CDATA[帐号支持： 默认支持200个帐户，如需更多可单独申请 附件支持： 单封邮件最大附件50MB 空间大小： 默认3G容量 MX记录： mx.ym.163.com 优先级10 POP设置： pop.ym.163.com 默认端口为：110 SMTP设置： smtp.ym.163.com 默认端口为：25 备注说明： 支持分组管理、支持系统日志查询、支持群发邮件 不支持独立登录页面、目前已经开放注册 帐号支持： 可分配200个帐户 附件支持： 最大附件50MB，支持最大1G文件临时存储 空间大小： 无限量 MX记录： mxbiz1.qq.com 优先级5 和 mxbiz2.qq.com 优先级10 POP设置： pop.exmail.qq.com SMTP设置： smtp.exmail.qq.com IMAP设置： imap.exmail.qq.com 备注说明： 全程SSL加密,安全高.国内外10多个城市架设服务器 帐号支持： 可分配50个帐户 附件支持： 单封邮件最大附件支持20MB 空间大小： 7GB邮箱容量 MX记录： ASPMX.L.GOOGLE.COM 优先级10 SMTP设置： smtp.gmail.com 端口：465 或 587 IMAP设置： imap.gmail.com 端口：993 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://ym.163.com/" rel="nofollow" target="_blank"><img title="163 QQ Gmail Live 免费企业邮箱对比" src="http://www.21andy.com/blog/upload/small/cce6443608af576b.jpg" alt="163 QQ Gmail Live 免费企业邮箱对比 cce6443608af576b" width="137" height="36" border="0" /></a></p>
<table width="500" border="0" cellspacing="1" cellpadding="0">
<tbody>
<tr>
<td width="80">帐号支持：</td>
<td>默认支持200个帐户，如需更多可单独申请</td>
</tr>
<tr>
<td width="80">附件支持：</td>
<td>单封邮件最大附件50MB</td>
</tr>
<tr>
<td width="80">空间大小：</td>
<td>默认3G容量</td>
</tr>
<tr>
<td width="80">MX记录：</td>
<td>mx.ym.163.com 优先级10</td>
</tr>
<tr>
<td width="80">POP设置：</td>
<td>pop.ym.163.com 默认端口为：110</td>
</tr>
<tr>
<td width="80">SMTP设置：</td>
<td>smtp.ym.163.com 默认端口为：25</td>
</tr>
<tr>
<td rowspan="2" width="80">备注说明：</td>
<td>支持分组管理、支持系统日志查询、支持群发邮件</td>
</tr>
<tr>
<td>不支持独立登录页面、目前已经开放注册</td>
</tr>
</tbody>
</table>
<p><a href="https://exmail.qq.com/" rel="nofollow" target="_blank"><img title="163 QQ Gmail Live 免费企业邮箱对比" src="http://www.21andy.com/blog/upload/small/78f21e36684064d0.jpg" alt="163 QQ Gmail Live 免费企业邮箱对比 78f21e36684064d0" width="208" height="37" border="0" /></a></p>
<table width="500" border="0" cellspacing="1" cellpadding="0">
<tbody>
<tr>
<td width="80">帐号支持：</td>
<td>可分配200个帐户</td>
</tr>
<tr>
<td width="80">附件支持：</td>
<td>最大附件50MB，支持最大1G文件临时存储</td>
</tr>
<tr>
<td width="80">空间大小：</td>
<td>无限量</td>
</tr>
<tr>
<td width="80">MX记录：</td>
<td>mxbiz1.qq.com 优先级5 和 mxbiz2.qq.com 优先级10</td>
</tr>
<tr>
<td width="80">POP设置：</td>
<td>pop.exmail.qq.com</td>
</tr>
<tr>
<td width="80">SMTP设置：</td>
<td>smtp.exmail.qq.com</td>
</tr>
<tr>
<td width="80">IMAP设置：</td>
<td>imap.exmail.qq.com</td>
</tr>
<tr>
<td width="80">备注说明：</td>
<td>全程SSL加密,安全高.国内外10多个城市架设服务器</td>
</tr>
</tbody>
</table>
<p><a href="http://www.google.com/apps/intl/zh-CN/group/index.html" rel="nofollow" target="_blank"><img title="163 QQ Gmail Live 免费企业邮箱对比" src="http://www.21andy.com/blog/upload/small/a8b619556f7ca554.jpg" alt="163 QQ Gmail Live 免费企业邮箱对比 a8b619556f7ca554" width="137" height="58" border="0" /></a></p>
<table width="500" border="0" cellspacing="1" cellpadding="0">
<tbody>
<tr>
<td width="80">帐号支持：</td>
<td>可分配50个帐户</td>
</tr>
<tr>
<td width="80">附件支持：</td>
<td>单封邮件最大附件支持20MB</td>
</tr>
<tr>
<td width="80">空间大小：</td>
<td>7GB邮箱容量</td>
</tr>
<tr>
<td width="80">MX记录：</td>
<td>ASPMX.L.GOOGLE.COM 优先级10</td>
</tr>
<tr>
<td width="80">SMTP设置：</td>
<td>smtp.gmail.com 端口：465 或 587</td>
</tr>
<tr>
<td width="80">IMAP设置：</td>
<td>imap.gmail.com 端口：993</td>
</tr>
<tr>
<td rowspan="2" width="80">备注说明：</td>
<td>支持即时通讯（google talk）、支持在线文档</td>
</tr>
<tr>
<td>标准版为免费版本，暂时不支持.CN域名</td>
</tr>
</tbody>
</table>
<p><a href="http://domains.live.com/" rel="nofollow" target="_blank"><img title="163 QQ Gmail Live 免费企业邮箱对比" src="http://www.21andy.com/blog/upload/small/717066390c9860e1.jpg" alt="163 QQ Gmail Live 免费企业邮箱对比 717066390c9860e1" width="130" height="58" border="0" /></a></p>
<table width="500" border="0" cellspacing="1" cellpadding="0">
<tbody>
<tr>
<td width="80" height="28">帐号支持：</td>
<td height="28">可添加500个帐户</td>
</tr>
<tr>
<td width="80" height="28">附件支持：</td>
<td height="28">单封邮件50MB</td>
</tr>
<tr>
<td width="80" height="28">空间大小：</td>
<td height="28">单个邮箱容量5G</td>
</tr>
<tr>
<td width="80" height="28">MX记录：</td>
<td height="28">*****.pamx1.hotmail.com(每个企业的MX记录不一样)</td>
</tr>
<tr>
<td width="80" height="28">POP设置：</td>
<td height="28">pop3.live.com 端口：995</td>
</tr>
<tr>
<td width="80" height="28">SMTP设置：</td>
<td height="28">smtp.live.com</td>
</tr>
<tr>
<td width="80" height="28">备注说明：</td>
<td height="28">支持定义登录页面、支持共享空间等</td>
</tr>
</tbody>
</table>
<p><a href="http://mail.sohu.net/free/" rel="nofollow" target="_blank"><img title="163 QQ Gmail Live 免费企业邮箱对比" src="http://www.21andy.com/blog/upload/small/8188e51a1efb2dbf.jpg" alt="163 QQ Gmail Live 免费企业邮箱对比 8188e51a1efb2dbf" width="146" height="38" border="0" /></a></p>
<table width="500" border="0" cellspacing="1" cellpadding="0">
<tbody>
<tr>
<td width="80">帐号支持：</td>
<td>支持邮箱个数不限制</td>
</tr>
<tr>
<td width="80">附件支持：</td>
<td>单封邮件10MB</td>
</tr>
<tr>
<td width="80">空间大小：</td>
<td>单个邮箱容量1G</td>
</tr>
<tr>
<td width="80">MX记录：</td>
<td>mx.mail.sogou.com</td>
</tr>
<tr>
<td width="80">POP设置：</td>
<td>pop3.mail.sogou.com</td>
</tr>
<tr>
<td width="80">SMTP设置：</td>
<td>smtp.mail.sogou.com</td>
</tr>
<tr>
<td rowspan="2" width="80">备注说明：</td>
<td>支持自由分组、支持自定义Logo、支持邮件列表管理</td>
</tr>
<tr>
<td>不支持独立登录页面、目前已经不能注册</td>
</tr>
</tbody>
</table>
<h4>Incoming search terms:</h4><ul><li><a href="http://www.21andy.com/blog/20120522/2027.html" title="pljm">pljm</a></li><li><a href="http://www.21andy.com/blog/20120522/2027.html" title="pwxfd">pwxfd</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.21andy.com/blog/20120522/2027.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[原创] 不怕丢数据！VPS定时自动备份终极指南</title>
		<link>http://www.21andy.com/blog/20120520/2026.html</link>
		<comments>http://www.21andy.com/blog/20120520/2026.html#comments</comments>
		<pubDate>Sun, 20 May 2012 07:06:09 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[技术]]></category>
		<category><![CDATA[rsync]]></category>
		<category><![CDATA[备份]]></category>

		<guid isPermaLink="false">http://www.21andy.com/blog/?p=2026</guid>
		<description><![CDATA[[原创] 不怕丢数据！VPS定时自动备份终极指南 近半年，先后丢失5个网站数据，大多都是由于VPS硬盘损坏造成，RAID10为了速度是很不保险的 最近的2次分别是DirectSpace和BuyVM 所以，必需备份，作好VPS随时准备丢失数据的准备 昨天花了一整天，把目前所有的站做了每日同步，以下分享给大家实际操作方法。 转载请注明原文出处 http://www.21andy.com/blog/20120520/2026.html 网上关于rsync的资料也不少，但多数我想会把你看晕的，以下我用实例来讲解，重点的地方我会详细说明，希望让大家都会用。 以下，假设网站所在的VPS为A，存储备份的VPS为B，系统均为 CentOS 备份方法为 B 定时向 A 拉数据来备份 一、VPS A 上面的具体部署 1. 安装 rsync yum -y install rsync 把rsync加入开机启动 echo 'rsync --daemon' &#62;&#62; /etc/rc.d/rc.local 2. 设置rsync密码 echo '你的用户名:你的密码' &#62; /etc/rsyncd.scrtchmod 600 /etc/rsyncd.scrt 这里的用户名和密码，在VPS B上将会用到 3. 配置rsync vim /etc/rsyncd.conf 放入以下内容, #后面是我的注释 &#19979;&#36733;: rsyncd.confuid = rootgid = rootuse chroot [...]]]></description>
			<content:encoded><![CDATA[<p><strong>[原创] 不怕丢数据！VPS定时自动备份终极指南</strong></p>
<p>近半年，先后丢失5个网站数据，大多都是由于VPS硬盘损坏造成，RAID10为了速度是很不保险的<br />
最近的2次分别是DirectSpace和BuyVM<br />
所以，必需备份，作好VPS随时准备丢失数据的准备<br />
昨天花了一整天，把目前所有的站做了每日同步，以下分享给大家实际操作方法。<br />
转载请注明原文出处 <a title="[原创] 不怕丢数据！VPS定时自动备份终极指南" href="http://www.21andy.com/blog/20120520/2026.html">http://www.21andy.com/blog/20120520/2026.html</a><br />
网上关于rsync的资料也不少，但多数我想会把你看晕的，以下我用实例来讲解，重点的地方我会详细说明，希望让大家都会用。</p>
<blockquote><p>以下，假设网站所在的VPS为<strong>A</strong>，存储备份的VPS为<strong>B</strong>，系统均为 CentOS<br />
备份方法为 B 定时向 A 拉数据来备份</p></blockquote>
<h2>一、VPS A 上面的具体部署</h2>
<p><strong>1. 安装 rsync</strong></p>
<div class="hl-surround"><div class="hl-main">yum -y install rsync</div></div>
<p>把rsync加入开机启动</p>
<div class="hl-surround"><div class="hl-main">echo 'rsync --daemon' &gt;&gt; /etc/rc.d/rc.local</div></div>
<p><strong>2. 设置rsync密码</strong></p>
<div class="hl-surround"><div class="hl-main">echo '你的用户名:你的密码' &gt; /etc/rsyncd.scrt<br />chmod 600 /etc/rsyncd.scrt</div></div>
<p>这里的用户名和密码，在VPS B上将会用到</p>
<p><strong>3. 配置rsync</strong><br />
vim /etc/rsyncd.conf<br />
放入以下内容, #后面是我的注释</p>
<div class="hl-title">&#19979;&#36733;: <a href="http://www.21andy.com/blog/wp-content/plugins/coolcode/coolcode.php?p=2026&amp;download=rsyncd.conf">rsyncd.conf</a></div><div class="hl-surround"><div class="hl-main">uid = root<br />gid = root<br />use chroot = no<br />read only = yes<br />max connections = 10<br /><br />port = 873<br />pid file = /var/run/rsyncd.pid<br />lock file = /var/run/rsync.lock<br />#log file = /var/log/rsync.log # 偶不想记录log<br />log format = %t %a %m %f %b<br />syslog facility = local3<br />timeout = 300<br /><br />[www]<br />path = /var/www/<br />comment = 21andy.com<br />ignore errors<br />read only = yes<br />list = no<br />auth users = andy<br />secrets file = /etc/rsyncd.scrt<br />#exclude = 21andy.com/blog/cache/ #不需要备份的目录，我使用exclude from方法来排除<br />exclude from = /etc/rsync_exclude.txt<br />hosts allow = 备份服务器的IP<br />hosts deny = *</div></div>
<p><strong>4. 排除不备份的目录</strong><br />
vim /etc/rsync_exclude.txt<br />
输入不备份的目录，每行一个，不可以用绝对路径，而必须用上面配置文件中path的相对路径，如</p>
<div class="hl-surround"><div class="hl-main">21andy.com/blog/cache/<br />21andy.com/manual/</div></div>
<p>这个排除文件有更高级的+-写法，我们不需要，简单够用就好，用 exclude from 方法，好处在于随时要添加不需要备份的内容时，方便添加，且不需要重启rsync进程</p>
<p><strong>5. 制作一个重启rsync的脚本</strong><br />
vim /root/rsyncd_restart.sh<br />
放入以下内容</p>
<div class="hl-surround"><div class="hl-main">kill -9 `cat /var/run/rsyncd.pid`<br />rm -f /var/run/rsyncd.pid<br />rm -f /var/run/rsyncd.lock<br />rsync --daemon</div></div>
<p>chmod 600 /root/rsyncd_restart.sh<br />
chmod +x /root/rsyncd_restart.sh<br />
现在直接用 /root/rsyncd_restart.sh 来重新启动 rsync 进程</p>
<p><strong>6. 备份 MySQL 的脚本</strong><br />
此脚本可同时备份多个数据库，并进行gzip压缩，按日期目录保存，3天之前的备份将被自动删除<br />
vim /root/mysql_backup.sh</p>
<div class="hl-title">&#19979;&#36733;: <a href="http://www.21andy.com/blog/wp-content/plugins/coolcode/coolcode.php?p=2026&amp;download=mysql_backup.sh">mysql_backup.sh</a></div><div class="hl-surround"><div class="hl-main">#!/bin/bash<br /><br /># 以下配置信息请自己修改<br />mysql_user=&quot;USER&quot; #MySQL备份用户<br />mysql_password=&quot;PASSWORD&quot; #MySQL备份用户的密码<br />mysql_host=&quot;localhost&quot;<br />mysql_port=&quot;3306&quot;<br />mysql_charset=&quot;utf8&quot; #MySQL编码<br />backup_db_arr=(&quot;db1&quot; &quot;db2&quot;) #要备份的数据库名称，多个用空格分开隔开 如(&quot;db1&quot; &quot;db2&quot; &quot;db3&quot;)<br />backup_location=/var/www/mysql&nbsp; #备份数据存放位置，末尾请不要带&quot;/&quot;,此项可以保持默认，程序会自动创建文件夹<br />expire_backup_delete=&quot;ON&quot; #是否开启过期备份删除 ON为开启 OFF为关闭<br />expire_days=3 #过期时间天数 默认为三天，此项只有在expire_backup_delete开启时有效<br /><br /># 本行开始以下不需要修改<br />backup_time=`date +%Y%m%d%H%M`&nbsp; #定义备份详细时间<br />backup_Ymd=`date +%Y-%m-%d` #定义备份目录中的年月日时间<br />backup_3ago=`date -d '3 days ago' +%Y-%m-%d` #3天之前的日期<br />backup_dir=$backup_location/$backup_Ymd&nbsp; #备份文件夹全路径<br />welcome_msg=&quot;Welcome to use MySQL backup tools!&quot; #欢迎语<br /><br /># 判断MYSQL是否启动,mysql没有启动则备份退出<br />mysql_ps=`ps -ef |grep mysql |wc -l`<br />mysql_listen=`netstat -an |grep LISTEN |grep $mysql_port|wc -l`<br />if [ [$mysql_ps == 0] -o [$mysql_listen == 0] ]; then<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;echo &quot;ERROR:MySQL is not running! backup stop!&quot;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;exit<br />else<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;echo $welcome_msg<br />fi<br /><br /># 连接到mysql数据库，无法连接则备份退出<br />mysql -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password &lt;&lt;end<br />use mysql;<br />select host,user from user where user='root' and host='localhost';<br />exit<br />end<br /><br />flag=`echo $?`<br />if [ $flag != &quot;0&quot; ]; then<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;echo &quot;ERROR:Can't connect mysql server! backup stop!&quot;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;exit<br />else<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;echo &quot;MySQL connect ok! Please wait......&quot;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;# 判断有没有定义备份的数据库，如果定义则开始备份，否则退出备份<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if [ &quot;$backup_db_arr&quot; != &quot;&quot; ];then<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#dbnames=$(cut -d ',' -f1-5 $backup_database)<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#echo &quot;arr is (${backup_db_arr[@]})&quot;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for dbname in ${backup_db_arr[@]}<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;do<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;echo &quot;database $dbname backup start...&quot;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;`mkdir -p $backup_dir`<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;`mysqldump -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password $dbname --default-character-set=$mysql_charset | gzip &gt; $backup_dir/$dbname-$backup_time.sql.gz`<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;flag=`echo $?`<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if [ $flag == &quot;0&quot; ];then<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;echo &quot;database $dbname success backup to $backup_dir/$dbname-$backup_time.sql.gz&quot;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;echo &quot;database $dbname backup fail!&quot;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;fi<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;done<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;else<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;echo &quot;ERROR:No database to backup! backup stop&quot;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;exit<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;fi<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;# 如果开启了删除过期备份，则进行删除操作<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if [ &quot;$expire_backup_delete&quot; == &quot;ON&quot; -a&nbsp; &quot;$backup_location&quot; != &quot;&quot; ];then<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #`find $backup_location/ -type d -o -type f -ctime +$expire_days -exec rm -rf {} \;`<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; `find $backup_location/ -type d -mtime +$expire_days | xargs rm -rf`<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo &quot;Expired backup data delete complete!&quot;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;fi<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;echo &quot;All database backup success! Think you!&quot;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;exit<br />fi</div></div>
<p>chmod 600 /root/mysql_backup.sh<br />
chmod +x /root/mysql_backup.sh</p>
<p>好了，加入 crontab 每天00:00定时自动备份</p>
<div class="hl-surround"><div class="hl-main">00 00 * * * /root/mysql_backup.sh</div></div>
<p>至此，网站所在VPS A上的部署已经都完成了！接下来在备份VPS B上进行设置来拉备份。</p>
<p>转载请注明原文出处 <a title="[原创] 不怕丢数据！VPS定时自动备份终极指南" href="http://www.21andy.com/blog/20120520/2026.html">http://www.21andy.com/blog/20120520/2026.html</a></p>
<h2>二、VPS B 上面的具体部署</h2>
<p><strong>1. 安装 rsync</strong></p>
<div class="hl-surround"><div class="hl-main">yum -y install rsync</div></div>
<p>这里不需要加入开机启动了，因为是客户端，不是服务端</p>
<p><strong>2. 设置rsync密码</strong></p>
<div class="hl-surround"><div class="hl-main">echo '你在A上设置的密码' &gt; /etc/rsync.pass<br />chmod 400 /etc/rsync.pass</div></div>
<p><strong>3. 测试一下同步</strong><br />
先建个存储备份的地方</p>
<div class="hl-surround"><div class="hl-main">mkdir -p /var/rsync/</div></div>
<p>测试一下同步</p>
<div class="hl-surround"><div class="hl-main">rsync -avzP --delete --password-file=/etc/rsync.pass 用户名@192.168.0.100::www /var/rsync/21andy.com/</div></div>
<p>这条命令，我说明一下几个要点</p>
<blockquote><p>-avzP是啥，自己搜索我站内介绍<br />
--delete 是为了比如A上删除了一个文件，同步的时候，B会自动删除那个文件<br />
--password-file 刚才VPS B中 <strong>/etc/rsync.pass</strong> 设置那个密码，要和VPS A的 <strong>/etc/rsyncd.scrt</strong> 中的密码一样，这样cron运行的时候，就不需要密码了<br />
这条命令中的"<strong>用户名</strong>"为VPS A的 <strong>/etc/rsyncd.scrt</strong> 中的用户名<br />
这条命令中的 192.168.0.100 为VPS A的IP地址<br />
::www，注意是2个 <strong>:</strong> 号，www为VPS A的配置文件 <strong>/etc/rsyncd.conf</strong> 中的<strong>[www]</strong>，意思是根据A上的/etc/rsyncd.conf来同步其中的[www]段内容，一个 : 号的时候，用于不根据配置文件，直接同步指定目录</p></blockquote>
<p><strong>4. 加入crontab每天00:30同步</strong></p>
<div class="hl-surround"><div class="hl-main">30 00 * * * rsync -avzP --delete --password-file=/etc/rsync.pass 用户名@192.168.0.100::www /var/rsync/21andy.com/ &gt; /dev/null 2&gt;&amp;1</div></div>
<p>OK！至此大功告成！不怕丢数据了，天天自动备份！<br />
如果还要再保险一点，再加个VPS C<br />
C来同步B，双重备份，哪个挂了都不怕！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.21andy.com/blog/20120520/2026.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Sublime Text 2 破解</title>
		<link>http://www.21andy.com/blog/20120519/2024.html</link>
		<comments>http://www.21andy.com/blog/20120519/2024.html#comments</comments>
		<pubDate>Sat, 19 May 2012 07:34:55 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[软件收藏]]></category>
		<category><![CDATA[Sublime Text]]></category>

		<guid isPermaLink="false">http://www.21andy.com/blog/?p=2024</guid>
		<description><![CDATA[Sublime Text 2 破解 Sublime Text 有多好用，我很早很早以前就有过介绍推荐，目前最新版的注册方法如下。 适用于最新版官网下载 http://www.sublimetext.com/2 1. sublime_text.exe 复制一份改名为 sublime_text_cracked.exe 2. 用sublime text2 打开这个文件，搜索 3342，改为 3242 保存 3. 打开 sublime_text_cracked.exe 在help菜单里enter license，把下面注册码贴进去，包括begin和end那两行 —–BEGIN LICENSE—–hiwanzUnlimited User LicenseEA7E-268385B320641E6E11F5C6E16553C438A683972BA70FE439203367920D70E7DEB0E92436D756177BBE49EFC9FBBB3420DB9D36AA8307E845B6AB8AF99D81734EEA96102402C853F1FFF9854D94799D1317F371DAB52730F6CADDE701BF3BE03C34EF285E053D2B5E16502F4B009DE413591DE0840D6E2CBF0A3049E2FAD940A53FF67—–END LICENSE—– Incoming search terms:sublime破解]]></description>
			<content:encoded><![CDATA[<p>Sublime Text 2 破解</p>
<p>Sublime Text 有多好用，我很早很早以前就有过介绍推荐，目前最新版的注册方法如下。</p>
<p>适用于最新版官网下载<br />
<a href="http://www.sublimetext.com/2" target="_blank">http://www.sublimetext.com/2</a></p>
<p>1. sublime_text.exe 复制一份改名为 sublime_text_cracked.exe<br />
2. 用sublime text2 打开这个文件，搜索 <strong>3342</strong>，改为 <strong>3242</strong> 保存<br />
<a href="http://www.21andy.com/blog/uploads/2012/05/sublime_text2.png" class="lightbox"><img src="http://www.21andy.com/blog/uploads/2012/05/sublime_text2-500x410.png" alt="Sublime Text 2 破解 sublime text2 500x410" title="sublime_text2" width="500" height="410" class="alignnone size-medium wp-image-2025" /></a><br />
3. 打开 sublime_text_cracked.exe 在help菜单里enter license，把下面注册码贴进去，包括begin和end那两行</p>
<div class="hl-surround"><div class="hl-main">—–BEGIN LICENSE—–<br />hiwanz<br />Unlimited User License<br />EA7E-26838<br />5B320641E6E11F5C6E16553C438A6839<br />72BA70FE439203367920D70E7DEB0E92<br />436D756177BBE49EFC9FBBB3420DB9D3<br />6AA8307E845B6AB8AF99D81734EEA961<br />02402C853F1FFF9854D94799D1317F37<br />1DAB52730F6CADDE701BF3BE03C34EF2<br />85E053D2B5E16502F4B009DE413591DE<br />0840D6E2CBF0A3049E2FAD940A53FF67<br />—–END LICENSE—–</div></div>
<h4>Incoming search terms:</h4><ul><li><a href="http://www.21andy.com/blog/20120519/2024.html" title="sublime破解">sublime破解</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.21andy.com/blog/20120519/2024.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>rsync 参数详解</title>
		<link>http://www.21andy.com/blog/20120519/2022.html</link>
		<comments>http://www.21andy.com/blog/20120519/2022.html#comments</comments>
		<pubDate>Sat, 19 May 2012 07:19:40 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[技术]]></category>
		<category><![CDATA[rsync]]></category>

		<guid isPermaLink="false">http://www.21andy.com/blog/?p=2022</guid>
		<description><![CDATA[Rsync 常用组合 rsync -avzSHP -e 'ssh -p 22' root@21andy.com:/www/21andy.com /21andy.com/*rsync -avzSHP root@21andy.com::21andy ./rsync -avzP --ignore-existing --exclude='cache/*' root@21andy.com::21andy ./ Rsync 参数选项说明 -v, --verbose 详细模式输出 -q, --quiet 精简输出模式 -c, --checksum 打开校验开关，强制对文件传输进行校验 -a, --archive 归档模式，表示以递归方式传输文件，并保持所有文件属性，等于-rlptgoD -r, --recursive 对子目录以递归模式处理 -R, --relative 使用相对路径信息 rsync foo/bar/foo.c remote:/tmp/ Rsync 参数在/tmp目录下创建foo.c文件，而如果使用-R参数： rsync -R foo/bar/foo.c remote:/tmp/ Rsync 参数会创建文件/tmp/foo/bar/foo.c，也就是会保持完全路径信息。 -b, --backup 创建备份，也就是对于目的已经存在有同样的文件名时，将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。 --backup-dir 将备份文件(如~filename)存放在在目录下。 -suffix=SUFFIX [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Rsync 常用组合</strong></p>
<div class="hl-surround"><div class="hl-main">rsync -avzSHP -e 'ssh -p 22' root@21andy.com:/www/21andy.com /21andy.com/*<br />rsync -avzSHP root@21andy.com::21andy ./<br />rsync -avzP --ignore-existing --exclude='cache/*' root@21andy.com::21andy ./</div></div>
<p><strong>Rsync 参数选项说明</strong></p>
<p>-v, --verbose 详细模式输出<br />
-q, --quiet 精简输出模式<br />
-c, --checksum 打开校验开关，强制对文件传输进行校验<br />
-a, --archive 归档模式，表示以递归方式传输文件，并保持所有文件属性，等于-rlptgoD<br />
-r, --recursive 对子目录以递归模式处理<br />
-R, --relative 使用相对路径信息</p>
<p>    rsync foo/bar/foo.c remote:/tmp/<br />
    Rsync 参数在/tmp目录下创建foo.c文件，而如果使用-R参数：<br />
    rsync -R foo/bar/foo.c remote:/tmp/<br />
    Rsync 参数会创建文件/tmp/foo/bar/foo.c，也就是会保持完全路径信息。</p>
<p>-b, --backup 创建备份，也就是对于目的已经存在有同样的文件名时，将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。<br />
--backup-dir 将备份文件(如~filename)存放在在目录下。<br />
-suffix=SUFFIX 定义备份文件前缀<br />
-u, --update 仅仅进行更新，也就是跳过所有已经存在于DST，并且文件时间晚于要备份的文件。(不覆盖更新的文件)<br />
-l, --links 保留软链结<br />
-L, --copy-links 想对待常规文件一样处理软链结<br />
--copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链结<br />
--safe-links 忽略指向SRC路径目录树以外的链结<br />
-H, --hard-links 保留硬链结<br />
-p, --perms 保持文件权限<br />
-o, --owner 保持文件属主信息<br />
-g, --group 保持文件属组信息<br />
-D, --devices 保持设备文件信息<br />
-t, --times 保持文件时间信息<br />
-S, --sparse 对稀疏文件进行特殊处理以节省DST的空间<br />
-n, --dry-run现实哪些文件将被传输<br />
-W, --whole-file 拷贝文件，不进行增量检测<br />
-x, --one-file-system 不要跨越文件系统边界<br />
-B, --block-size=SIZE 检验算法使用的块尺寸，默认是700字节<br />
-e, --rsh=COMMAND 指定替代rsh的shell程序<br />
--rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息<br />
-C, --cvs-exclude 使用和CVS一样的方法自动忽略文件，用来排除那些不希望传输的文件<br />
--existing 仅仅更新那些已经存在于DST的文件，而不备份那些新创建的文件<br />
--delete 删除那些DST中SRC没有的文件<br />
--delete-excluded 同样删除接收端那些被该选项指定排除的文件<br />
--delete-after 传输结束以后再删除<br />
--ignore-errors 及时出现IO错误也进行删除<br />
--max-delete=NUM 最多删除NUM个文件<br />
--partial 保留那些因故没有完全传输的文件，以是加快随后的再次传输<br />
--force 强制删除目录，即使不为空<br />
--numeric-ids 不将数字的用户和组ID匹配为用户名和组名<br />
--timeout=TIME IP超时时间，单位为秒<br />
-I, --ignore-times 不跳过那些有同样的时间和长度的文件<br />
--size-only 当决定是否要备份文件时，仅仅察看文件大小而不考虑文件时间<br />
--modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口，默认为0<br />
-T --temp-dir=DIR 在DIR中创建临时文件<br />
--compare-dest=DIR 同样比较DIR中的文件来决定是否需要备份<br />
-P 等同于 --partial<br />
--progress 显示备份过程<br />
-z, --compress 对备份的文件在传输时进行压缩处理<br />
--exclude=PATTERN 指定排除不需要传输的文件模式<br />
--include=PATTERN 指定不排除而需要传输的文件模式<br />
--exclude-from=FILE 排除FILE中指定模式的文件<br />
--include-from=FILE 不排除FILE指定模式匹配的文件<br />
--version 打印版本信息<br />
--address 绑定到特定的地址<br />
--config=FILE 指定其他的配置文件，不使用默认的rsyncd.conf文件<br />
--port=PORT 指定其他的rsync服务端口<br />
--blocking-io 对远程shell使用阻塞IO<br />
-stats 给出某些文件的传输状态<br />
--progress 在传输时现实传输过程<br />
--log-format=FORMAT 指定日志文件格式<br />
--password-file=FILE 从FILE中得到密码<br />
--bwlimit=KBPS 限制I/O带宽，KBytes per second<br />
-h, --help 显示帮助信息</p>
]]></content:encoded>
			<wfw:commentRss>http://www.21andy.com/blog/20120519/2022.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CentOS x86_64 version i386 packages</title>
		<link>http://www.21andy.com/blog/20120519/2021.html</link>
		<comments>http://www.21andy.com/blog/20120519/2021.html#comments</comments>
		<pubDate>Sat, 19 May 2012 07:18:41 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[技术]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[x86_64]]></category>

		<guid isPermaLink="false">http://www.21andy.com/blog/?p=2021</guid>
		<description><![CDATA[installed the x86_64 version, so why do I have i386 packages, and can I get rid of them? CentOS follows the upstream source in this respect, as it does in general, and the x86_64 installation by default will install iX86 32-bit packages on a 64-bit installation for compatibility purposes. Many server system administrators (and some [...]]]></description>
			<content:encoded><![CDATA[<p>installed the x86_64 version, so why do I have i386 packages, and can I get rid of them?</p>
<p>CentOS follows the upstream source in this respect, as it does in general, and the x86_64 installation by default will install iX86 32-bit packages on a 64-bit installation for compatibility purposes. Many server system administrators (and some desktop users) want a pure 64-bit system and so remove all 32-bit packages. This can be accomplished as follows:</p>
<div class="hl-surround"><div class="hl-main">yum remove \*.i\?86</div></div>
<p>To keep any 32-bit packages from being installed in future updates, edit your /etc/yum.conf and add the line:</p>
<div class="hl-surround"><div class="hl-main">exclude = *.i?86</div></div>
<p>Be aware that 32-bit applications, including some browser plugins that may only be available in 32-bit versions, will no longer work after this procedure.</p>
<p>You may also want to do this:</p>
<div class="hl-surround"><div class="hl-main">yum reinstall \*</div></div>
<p>The reason is that sometimes the /usr/share/ items (shared between BOTH packages) get removed when removing the 32-bit RPM packages. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.21andy.com/blog/20120519/2021.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>nginx proxy gzip</title>
		<link>http://www.21andy.com/blog/20120519/2020.html</link>
		<comments>http://www.21andy.com/blog/20120519/2020.html#comments</comments>
		<pubDate>Sat, 19 May 2012 07:17:51 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[技术]]></category>
		<category><![CDATA[gzip]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[proxy]]></category>

		<guid isPermaLink="false">http://www.21andy.com/blog/?p=2020</guid>
		<description><![CDATA[nginx 向后端请求 gzip 内容 proxy_set_header Accept-Encoding 'gzip'; nginx 向后端请求未 gzip 内容 proxy_set_header Accept-Encoding ''; substitutions4nginx 只能处理未压缩的内容]]></description>
			<content:encoded><![CDATA[<p>nginx 向后端请求 gzip 内容</p>
<div class="hl-surround"><div class="hl-main">proxy_set_header Accept-Encoding 'gzip';</div></div>
<p>nginx 向后端请求未 gzip 内容</p>
<div class="hl-surround"><div class="hl-main">proxy_set_header Accept-Encoding '';</div></div>
<p>substitutions4nginx 只能处理未压缩的内容</p>
]]></content:encoded>
			<wfw:commentRss>http://www.21andy.com/blog/20120519/2020.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nginx 缓存解决方案</title>
		<link>http://www.21andy.com/blog/20120519/2019.html</link>
		<comments>http://www.21andy.com/blog/20120519/2019.html#comments</comments>
		<pubDate>Sat, 19 May 2012 07:16:49 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[技术]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[ngx_cache_purge]]></category>
		<category><![CDATA[缓存]]></category>

		<guid isPermaLink="false">http://www.21andy.com/blog/?p=2019</guid>
		<description><![CDATA[试验了用128MB的小机Nginx反代+缓存跑了个3万ip的站，负载一直在0.01-0.02，没感觉 目前，Nginx的缓存控制机制是软肋，特别是清理过期缓存方面，有2种方法来清理过期的缓存，当然，nginx自身也会清理的，但清理的机制不好。所以，只能do it yourself. 1. Cron 定时删除 下面是每2小时删除修改时间超过2天的文件 #clear cache pic01 */2 * * * root find /path/to/your/site/ -type f -mtime +2 -print0 &#124; xargs -0 -r rm &#62;/dev/null 2&#62;&#38;1 2. Purge 方式触发删除 location / {&#160;&#160; &#160;if ($request_method ~ &#34;PURGE&#34;){&#160;&#160; &#160; &#160; &#160;rewrite (.*) /purge.php last;&#160;&#160; &#160;}&#160;&#160; &#160;add_header&#160; &#160; &#160; X-Cache&#160; &#160;HIT;&#160;&#160; &#160;error_page&#160; &#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>试验了用128MB的小机Nginx反代+缓存跑了个3万ip的站，负载一直在0.01-0.02，没感觉</p>
<p>目前，Nginx的缓存控制机制是软肋，特别是清理过期缓存方面，有2种方法来清理过期的缓存，当然，nginx自身也会清理的，但清理的机制不好。所以，只能do it yourself.</p>
<p><strong>1. Cron 定时删除</strong><br />
下面是每2小时删除修改时间超过2天的文件</p>
<div class="hl-surround"><div class="hl-main">#clear cache pic<br />01 */2 * * * root find /path/to/your/site/ -type f -mtime +2 -print0 | xargs -0 -r rm &gt;/dev/null 2&gt;&amp;1</div></div>
<p><strong>2. Purge 方式触发删除</strong></p>
<div class="hl-surround"><div class="hl-main">location / {<br />&nbsp;&nbsp; &nbsp;if ($request_method ~ &quot;PURGE&quot;){<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;rewrite (.*) /purge.php last;<br />&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;add_header&nbsp; &nbsp; &nbsp; X-Cache&nbsp; &nbsp;HIT;<br />&nbsp;&nbsp; &nbsp;error_page&nbsp; &nbsp; &nbsp; 404 = @fetch;<br />}<br /><br />location /purge.php {<br />&nbsp;&nbsp; &nbsp;internal;<br />&nbsp;&nbsp; &nbsp;fastcgi_pass&nbsp; &nbsp;127.0.0.1:9000;<br />&nbsp;&nbsp; &nbsp;include&nbsp; &nbsp; &nbsp; &nbsp; fastcgi_params;<br />&nbsp;&nbsp; &nbsp;fastcgi_param&nbsp; SCRIPT_FILENAME&nbsp; &nbsp; /www/21andy.com/fastcgi$fastcgi_script_name;<br />}</div></div>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">&lt;?php</span><span style="color: Gray;"><br /></span><span style="color: Blue;">header</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">Cache-Control: max-age=0</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br /></span><span style="color: #00008b;">$uri</span><span style="color: Gray;"> = </span><span style="color: #00008b;">$_SERVER</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">REQUEST_URI</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;">;<br /></span><span style="color: #00008b;">$doc_root</span><span style="color: Gray;"> = </span><span style="color: #00008b;">$_SERVER</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">DOCUMENT_ROOT</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;">;<br />&nbsp;<br /></span><span style="color: #00008b;">$file</span><span style="color: Gray;"> = </span><span style="color: #00008b;">$doc_root</span><span style="color: Gray;">.</span><span style="color: #00008b;">$uri</span><span style="color: Gray;">;<br /></span><span style="color: Green;">echo</span><span style="color: Gray;"> </span><span style="color: #00008b;">$file</span><span style="color: Gray;">.</span><span style="color: #8b0000;">&quot;</span><span style="color: Navy;">\n</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;<br /></span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">is_file</span><span style="color: Olive;">(</span><span style="color: #00008b;">$file</span><span style="color: Olive;">))</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp; </span><span style="color: Green;">echo</span><span style="color: Gray;"> </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">File Clear...</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;<br />&nbsp; @</span><span style="color: Blue;">unlink</span><span style="color: Olive;">(</span><span style="color: #00008b;">$file</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br /></span><span style="color: Olive;">}</span><span style="color: Gray;"> </span><span style="color: Green;">else</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp; </span><span style="color: Green;">echo</span><span style="color: Gray;"> </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">File Not Found...</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;<br /></span><span style="color: Olive;">}</span></div></div>
<p>也可以装插件 <strong>ngx_cache_purge</strong><br />
下载地下： <a href="http://wiki.nginx.org/NginxChsCachePurge" target="_blank">http://wiki.nginx.org/NginxChsCachePurge</a></p>
<div class="hl-surround"><div class="hl-main">http {<br />&nbsp;&nbsp; &nbsp;proxy_cache_path&nbsp; /tmp/cache&nbsp; keys_zone=tmpcache:10m;<br /><br />&nbsp;&nbsp; &nbsp;server {<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;location / {<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;proxy_pass&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;http://127.0.0.1:8000;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;proxy_cache&nbsp; &nbsp; &nbsp; &nbsp; tmpcache;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;proxy_cache_key&nbsp; &nbsp; $uri$is_args$args;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}<br /><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;location ~ /purge(/.*) {<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;allow&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 127.0.0.1;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;deny&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;all;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;proxy_cache_purge&nbsp; tmpcache $1$is_args$args;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;}<br />}</div></div>
<p>注意，purge方式删除的话，由于nginx反代保存的是纯静态内容，我不想在反代的机子上装PHP<br />
所以，应该由后端主动来触发完成<br />
另外，由于是纯静态内容，很多以前直接用php的方式处理的东西，现在需要改成js+后端来处理了</p>
<p>详细不说了，思路就这样</p>
<p>BTW: https://github.com/bummercloud/nginx-fastcgi-cache-purge</p>
<h4>Incoming search terms:</h4><ul><li><a href="http://www.21andy.com/blog/20120519/2019.html" title="nginx ">nginx </a></li><li><a href="http://www.21andy.com/blog/20120519/2019.html" title="nginx 缓存 清理">nginx 缓存 清理</a></li><li><a href="http://www.21andy.com/blog/20120519/2019.html" title="nginx缓存">nginx缓存</a></li><li><a href="http://www.21andy.com/blog/20120519/2019.html" title="proxy_cache_purge">proxy_cache_purge</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.21andy.com/blog/20120519/2019.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>批量管理VPS的工具SolusVMController</title>
		<link>http://www.21andy.com/blog/20120519/2018.html</link>
		<comments>http://www.21andy.com/blog/20120519/2018.html#comments</comments>
		<pubDate>Sat, 19 May 2012 07:13:24 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[技术]]></category>
		<category><![CDATA[SolusVMController]]></category>
		<category><![CDATA[vps]]></category>

		<guid isPermaLink="false">http://www.21andy.com/blog/?p=2018</guid>
		<description><![CDATA[SolusVMController 是 PHP 开发的免费 VPS 管理面板，它通过 SolusVM 的 API 来控制，可以把所有的 VPS 集中管理了，现在购买的 VPS 面板一般都是SolusVM，API 具体请进面板开启。 安装 SolusVMController wget http://solusvmcontroller.com/files/solusvmcontroller-2.3.zipunzip solusvmcontroller-2.3.zipcd solusvmcontroller*mv configuration.php.default configuration.phpchmod 777 configuration.phpchmod 777 tables 默认用户名密码都是 admin Figure 1: Login interface. Figure 2: List of VPSes under SolusVMController. Figure 3: Edit exiting VPS information. Figure 4: View VPS information. Figure 5: User settings [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://http://solusvmcontroller.com/" rel="nofollow" target="_blank">SolusVMController </a>是 PHP 开发的免费 VPS 管理面板，它通过 SolusVM 的 API 来控制，可以把所有的 VPS 集中管理了，现在购买的 VPS 面板一般都是SolusVM，API 具体请进面板开启。</p>
<p><strong>安装 SolusVMController</strong></p>
<div class="hl-surround"><div class="hl-main">wget http://solusvmcontroller.com/files/solusvmcontroller-2.3.zip<br />unzip solusvmcontroller-2.3.zip<br />cd solusvmcontroller*<br />mv configuration.php.default configuration.php<br />chmod 777 configuration.php<br />chmod 777 tables</div></div>
<p>默认用户名密码都是 <strong>admin</strong></p>
<p><a href="http://www.21andy.com/blog/upload/2012/0519/5e6609814e59bc8d.jpg" class="lightbox" target="_blank" title="批量管理VPS的工具SolusVMController"><img src="http://www.21andy.com/blog/upload/2012/0519/5e6609814e59bc8d_thumb.jpg" title="批量管理VPS的工具SolusVMController" alt="批量管理VPS的工具SolusVMController 5e6609814e59bc8d thumb" /></a><br />
<em>Figure 1: Login interface.</em></p>
<p><a href="http://www.21andy.com/blog/upload/2012/0519/4a8217e37e97f6a5.jpg" class="lightbox" target="_blank" title="批量管理VPS的工具SolusVMController"><img src="http://www.21andy.com/blog/upload/2012/0519/4a8217e37e97f6a5_thumb.jpg" title="批量管理VPS的工具SolusVMController" alt="批量管理VPS的工具SolusVMController 4a8217e37e97f6a5 thumb" /></a><br />
<em>Figure 2: List of VPSes under SolusVMController.</em></p>
<p><a href="http://www.21andy.com/blog/upload/2012/0519/2ca65f5098adc979.jpg" class="lightbox" target="_blank" title="批量管理VPS的工具SolusVMController"><img src="http://www.21andy.com/blog/upload/2012/0519/2ca65f5098adc979_thumb.jpg" title="批量管理VPS的工具SolusVMController" alt="批量管理VPS的工具SolusVMController 2ca65f5098adc979 thumb" /></a><br />
<em>Figure 3: Edit exiting VPS information.</em></p>
<p><a href="http://www.21andy.com/blog/upload/2012/0519/b77ad13d6534abc1.jpg" class="lightbox" target="_blank" title="批量管理VPS的工具SolusVMController"><img src="http://www.21andy.com/blog/upload/2012/0519/b77ad13d6534abc1_thumb.jpg" title="批量管理VPS的工具SolusVMController" alt="批量管理VPS的工具SolusVMController b77ad13d6534abc1 thumb" /></a><br />
<em>Figure 4: View VPS information.</em></p>
<p><a href="http://www.21andy.com/blog/upload/2012/0519/88a6fe5de1b50f99.jpg" class="lightbox" target="_blank" title="批量管理VPS的工具SolusVMController"><img src="http://www.21andy.com/blog/upload/2012/0519/88a6fe5de1b50f99_thumb.jpg" title="批量管理VPS的工具SolusVMController" alt="批量管理VPS的工具SolusVMController 88a6fe5de1b50f99 thumb" /></a><br />
<em>Figure 5: User settings page.</em></p>
<div><embed id="lingoes_plugin_object" width="0" height="0" type="application/lingoes-npruntime-capture-word-plugin" hidden="true" /></div>
]]></content:encoded>
			<wfw:commentRss>http://www.21andy.com/blog/20120519/2018.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss><!-- Dynamic page generated in 0.292 seconds. --><!-- Cached page generated by WP-Super-Cache on 2012-05-29 23:03:01 --><!-- Compression = gzip -->

