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

<channel>
	<title>Michael`s blog</title>
	<atom:link href="http://www.toplee.com/blog/feed" rel="self" type="application/rss+xml" />
	<link>http://www.toplee.com/blog</link>
	<description>活到老，学到老 ...   @ IT，业界，互联网</description>
	<lastBuildDate>Mon, 14 May 2012 20:26:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>pinterest中国版poyy.com横空出世</title>
		<link>http://www.toplee.com/blog/1340.html</link>
		<comments>http://www.toplee.com/blog/1340.html#comments</comments>
		<pubDate>Mon, 14 May 2012 20:00:52 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[IT / 业界 / 互联网]]></category>
		<category><![CDATA[pinterest poyy.com poyy]]></category>

		<guid isPermaLink="false">http://www.toplee.com/blog/?p=1340</guid>
		<description><![CDATA[哈哈，绝对的中国版pinterest，不信就去看看吧！ http://poyy.com]]></description>
			<content:encoded><![CDATA[<p>哈哈，绝对的中国版pinterest，不信就去看看吧！ <a href="http://poyy.com" target="_blank">http://poyy.com</a> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.toplee.com/blog/1340.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>终于取消了烦人的10658222彩信</title>
		<link>http://www.toplee.com/blog/1337.html</link>
		<comments>http://www.toplee.com/blog/1337.html#comments</comments>
		<pubDate>Mon, 14 May 2012 04:33:40 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[IT / 业界 / 互联网]]></category>
		<category><![CDATA[10658222 qxty qxcxjlb]]></category>

		<guid isPermaLink="false">http://www.toplee.com/blog/?p=1337</guid>
		<description><![CDATA[网上查到有发送 QXTY 到10658222，结果收到回复说不是连连发体验业务的订阅者，不能取消，后来打客服电话和搜索资料，多方努力终于搞定，解决办法： 发送 QXCXJLB 到10658222 就可以了，收到的回复是移动彩信俱乐部的免费彩信，真是垃圾！]]></description>
			<content:encoded><![CDATA[<p>网上查到有发送 QXTY 到10658222，结果收到回复说不是连连发体验业务的订阅者，不能取消，后来打客服电话和搜索资料，多方努力终于搞定，解决办法： 发送 QXCXJLB 到10658222 就可以了，收到的回复是移动彩信俱乐部的免费彩信，真是垃圾！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.toplee.com/blog/1337.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>用Chrome的调试工具改善网站整体访问性能</title>
		<link>http://www.toplee.com/blog/1332.html</link>
		<comments>http://www.toplee.com/blog/1332.html#comments</comments>
		<pubDate>Sat, 28 Apr 2012 07:11:33 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Web架构/负载/性能]]></category>
		<category><![CDATA[httpWatch chrome Audits 网站性能]]></category>

		<guid isPermaLink="false">http://www.toplee.com/blog/?p=1332</guid>
		<description><![CDATA[Chrome浏览器的Developer Tools里面有个Audits工具，可以很方便的帮我们发现网站存在的一些常见问题，比如缓存时间设置问题，header里面是否有CacheControl Public问题，Gzip是否打开等等，建议做系统管理的可以尝试一下。 另外，在IE下有个HttpWatch Professional的插件，这个工具也提供很全面的网站访问改进建议！]]></description>
			<content:encoded><![CDATA[<p>Chrome浏览器的Developer Tools里面有个Audits工具，可以很方便的帮我们发现网站存在的一些常见问题，比如缓存时间设置问题，header里面是否有CacheControl Public问题，Gzip是否打开等等，建议做系统管理的可以尝试一下。</p>
<p>另外，在IE下有个HttpWatch Professional的插件，这个工具也提供很全面的网站访问改进建议！</p>
<div id="attachment_1334" class="wp-caption alignnone" style="width: 491px"><a href="http://www.toplee.com/blog/wp-content/uploads/2012/04/audit1.png"><img src="http://www.toplee.com/blog/wp-content/uploads/2012/04/audit1.png" alt="" title="准备运行Audits" width="481" height="415" class="size-full wp-image-1334" /></a><p class="wp-caption-text">准备运行Audits</p></div>
<div id="attachment_1335" class="wp-caption alignnone" style="width: 494px"><a href="http://www.toplee.com/blog/wp-content/uploads/2012/04/audit2.png"><img src="http://www.toplee.com/blog/wp-content/uploads/2012/04/audit2.png" alt="" title="查看Audits结果" width="484" height="416" class="size-full wp-image-1335" /></a><p class="wp-caption-text">查看Audits结果</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.toplee.com/blog/1332.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP 正则里面的两个重要技巧</title>
		<link>http://www.toplee.com/blog/1328.html</link>
		<comments>http://www.toplee.com/blog/1328.html#comments</comments>
		<pubDate>Fri, 27 Apr 2012 09:47:41 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[PHP / Zend]]></category>
		<category><![CDATA[php 正则 贪吃 捕获]]></category>

		<guid isPermaLink="false">http://www.toplee.com/blog/?p=1328</guid>
		<description><![CDATA[正则用了好些年，有两个东西总结出来是在web开发中非常有用的，尤其在抓取、代码分析中经常用到。 1. .* 的贪吃性 我们用 /\*.*\*/ 去和字符串 /* first comment */ not comment /* second comment */ 匹配会失败，因为由于 .* 项目的贪吃性，会匹配成整个字符串，于是就会匹配失败，不过，如果在后面加一个问号数量符，则会停止贪吃性，而变成匹配尽可能少的数目，因此模式 /\*.*?\*/ 就会正确匹配。各种数量符的含义并没有改变，只是优先的匹配数目。不要将问号的此用法和其自己作为数量符的使用混淆。因为有两种用法，有时可以两个一起出现，例如 \d??\d 会优先匹配一个数字，但如别无选择也可以匹配两个以使剩余模式匹配。 如果设定了 PCRE_UNGREEDY 选项（此选项 Perl 中没有）则数量符默认不是贪吃型的，但是在个别模式后加上一个问号可以将其变成贪吃型的。换句话说，这可以反转默认的行为。 后面跟上一个 + 的数量符是“占有性”（possessive）的。它会匹配尽可能多的字符而不管剩余的模式。因此 .*abc 可以匹配 &#8220;aabc&#8221; 但是 .*+abc 就不会，因为 .*+ 已经匹配了整个字符串。自 PHP 4.3.3 起可以用占有性数量符可以来加快处理过程。 2. （）子模式的不捕获 如果将字符串 &#8220;the red king&#8221; 来和模式 the ((red&#124;white) (king&#124;queen)) 进行匹配，捕获的子串为 &#8220;red [...]]]></description>
			<content:encoded><![CDATA[<p>正则用了好些年，有两个东西总结出来是在web开发中非常有用的，尤其在抓取、代码分析中经常用到。</p>
<p>1. .* 的贪吃性</p>
<p>我们用 /\*.*\*/ 去和字符串 /* first comment */ not comment /* second comment */ 匹配会失败，因为由于 .* 项目的贪吃性，会匹配成整个字符串，于是就会匹配失败，不过，如果在后面加一个问号数量符，则会停止贪吃性，而变成匹配尽可能少的数目，因此模式 /\*.*?\*/ 就会正确匹配。各种数量符的含义并没有改变，只是优先的匹配数目。不要将问号的此用法和其自己作为数量符的使用混淆。因为有两种用法，有时可以两个一起出现，例如 \d??\d 会优先匹配一个数字，但如别无选择也可以匹配两个以使剩余模式匹配。 </p>
<p>如果设定了 PCRE_UNGREEDY 选项（此选项 Perl 中没有）则数量符默认不是贪吃型的，但是在个别模式后加上一个问号可以将其变成贪吃型的。换句话说，这可以反转默认的行为。 </p>
<p>后面跟上一个 + 的数量符是“占有性”（possessive）的。它会匹配尽可能多的字符而不管剩余的模式。因此 .*abc 可以匹配 &#8220;aabc&#8221; 但是 .*+abc 就不会，因为 .*+ 已经匹配了整个字符串。自 PHP 4.3.3 起可以用占有性数量符可以来加快处理过程。</p>
<p>2. （）子模式的不捕获</p>
<p>如果将字符串 &#8220;the red king&#8221; 来和模式 the ((red|white) (king|queen))<br />
进行匹配，捕获的子串为 &#8220;red king&#8221;，&#8221;red&#8221; 以及 &#8220;king&#8221;，并被计为 1，2 和 3。 </p>
<p>简单的括号实现两种功能的事实不总是有帮助的。经常有需要一组子模式但不需要捕获的时候。如果左括号后面跟着 &#8220;?:&#8221;，子模式不做任何捕获，并且在计算任何之后捕获的子模式时也不算在内。例如，如果用字符串 &#8220;the white queen&#8221; 去和模式 the ((?:red|white) (king|queen)) 匹配，捕获的子串是 &#8220;white queen&#8221; 和 &#8220;queen&#8221;，并被计为 1 和 2。</p>
<p>因此，最完美的匹配网页中图片 src 部分的正则表达式处理如下：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: #00008b;">$str</span><span style="color: Gray;">=</span><span style="color: #8b0000;">'</span><span style="color: Red;">&lt;p style=&quot;padding: 0px; margin-top: 0px; margin-bottom: 0px; line-height: 200%;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;upfiles/2009/07/1246430143_4.jpg&quot; alt=&quot;&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;padding: 0px; margin-top: 0px; margin-bottom: 0px; line-height: 200%;&quot;&gt;&lt;img border=&quot;0&quot; src=</span><span style="color: Navy;">\'</span><span style="color: Red;">upfiles/2009/07/1246430143_3.jpg</span><span style="color: Navy;">\'</span><span style="color: Red;"> alt=&quot;&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;padding: 0px; margin-top: 0px; margin-bottom: 0px; line-height: 200%;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;upfiles/2009/07/1246430143_1.jpg&quot; alt=&quot;&quot;/&gt;&lt;img width=&quot;280&quot; height=&quot;187&quot; alt=&quot;&quot; class=&quot;imgloading&quot; original=&quot;http://s.yoututuan.com/team/2011/1206/13231497847660.jpg&quot; src=&quot;http://s.yoututuan.com/team/2011/1206/13231497847660.jpg&quot; style=&quot;display: block; &quot;&gt;</span><span style="color: #8b0000;">'</span><span style="color: Gray;">;<br />&nbsp;<br /></span><span style="color: #00008b;">$pattern</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">/&lt;img.*?src=['|</span><span style="color: Navy;">\&quot;</span><span style="color: Red;">](.*?(?:\.(?:gif|jpg)))['|</span><span style="color: Navy;">\&quot;</span><span style="color: Red;">].*?[\/]?&gt;/i</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;<br /></span><span style="color: Blue;">preg_match_all</span><span style="color: Olive;">(</span><span style="color: #00008b;">$pattern</span><span style="color: Gray;">,</span><span style="color: #00008b;">$str</span><span style="color: Gray;">,</span><span style="color: #00008b;">$match</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;<br /></span><span style="color: Blue;">print_r</span><span style="color: Olive;">(</span><span style="color: #00008b;">$match</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></div></div>
<p>以上代码将输出如下内容：</p>
<div class="hl-surround"><div class="hl-main">Array<br />(<br />&nbsp;&nbsp; &nbsp;[0] =&gt; Array<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;(<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[0] =&gt; &lt;img border=&quot;0&quot; src=&quot;upfiles/2009/07/1246430143_4.jpg&quot; alt=&quot;&quot;/&gt;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[1] =&gt; &lt;img border=&quot;0&quot; src='upfiles/2009/07/1246430143_3.jpg' alt=&quot;&quot;/&gt;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[2] =&gt; &lt;img border=&quot;0&quot; src=&quot;upfiles/2009/07/1246430143_1.jpg&quot; alt=&quot;&quot;/&gt;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[3] =&gt; &lt;img width=&quot;280&quot; height=&quot;187&quot; alt=&quot;&quot; class=&quot;imgloading&quot; original=&quot;http://s.yoututuan.com/team/2011/1206/13231497847660.jpg&quot; src=&quot;http://s.yoututuan.com/team/2011/1206/13231497847660.jpg&quot; style=&quot;display: block; &quot;&gt;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;)<br /><br />&nbsp;&nbsp; &nbsp;[1] =&gt; Array<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;(<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[0] =&gt; upfiles/2009/07/1246430143_4.jpg<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[1] =&gt; upfiles/2009/07/1246430143_3.jpg<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[2] =&gt; upfiles/2009/07/1246430143_1.jpg<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[3] =&gt; http://s.yoututuan.com/team/2011/1206/13231497847660.jpg<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;)<br /><br />)</div></div>
]]></content:encoded>
			<wfw:commentRss>http://www.toplee.com/blog/1328.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP正则匹配字符串中的标签</title>
		<link>http://www.toplee.com/blog/1319.html</link>
		<comments>http://www.toplee.com/blog/1319.html#comments</comments>
		<pubDate>Thu, 19 Apr 2012 05:05:51 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[PHP / Zend]]></category>
		<category><![CDATA[中文]]></category>
		<category><![CDATA[标点符号]]></category>
		<category><![CDATA[正则]]></category>

		<guid isPermaLink="false">http://www.toplee.com/blog/?p=1319</guid>
		<description><![CDATA[如果标签里面有中文、英文、数字等混排，则需要对汉字进行特殊处理，由于PCRE不支持\U \P \L之类的perl字符串处理转义，使用16进制或者Unicode进行处理，范例如下： $str = &#34;之二宽阔的甘家口东#标签1#标签2 #标签3。#标签4,都发$1234 ￥xc,cvm , ￥12,dflksjf如何#标签5.x #tag6.cvxcv“&#34;;preg_match_all('/#([a-zA-Z0-9\x7f-\xff]+)/', $str, $mat);print_r($mat);&#160;preg_match(&#34;/[\x{00a5}\x{ffe5}](\d+)/u&#34;, $str, $mat);print_r($mat); 得到的结果如下： Array ( [0] => Array ( [0] => #标签1 [1] => #标签2 [2] => #标签3。 [3] => #标签4 [4] => #标签5 [5] => #tag6 ) [1] => Array ( [0] => 标签1 [1] => 标签2 [2] => 标签3。 [3] [...]]]></description>
			<content:encoded><![CDATA[<p>如果标签里面有中文、英文、数字等混排，则需要对汉字进行特殊处理，由于PCRE不支持\U \P \L之类的perl字符串处理转义，使用16进制或者Unicode进行处理，范例如下：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: #00008b;">$str</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">之二宽阔的甘家口东#标签1#标签2 #标签3。#标签4,都发$1234 ￥xc,cvm , ￥12,dflksjf如何#标签5.x #tag6.cvxcv“</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;<br /></span><span style="color: Blue;">preg_match_all</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">/#([a-zA-Z0-9\x7f-\xff]+)/</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #00008b;">$str</span><span style="color: Gray;">, </span><span style="color: #00008b;">$mat</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br /></span><span style="color: Blue;">print_r</span><span style="color: Olive;">(</span><span style="color: #00008b;">$mat</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;<br /></span><span style="color: Blue;">preg_match</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">/[\x{00a5}\x{ffe5}](\d+)/u</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">, </span><span style="color: #00008b;">$str</span><span style="color: Gray;">, </span><span style="color: #00008b;">$mat</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br /></span><span style="color: Blue;">print_r</span><span style="color: Olive;">(</span><span style="color: #00008b;">$mat</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></div></div>
<p>得到的结果如下：</p>
<p><code><br />
Array<br />
(<br />
    [0] => Array<br />
        (<br />
            [0] => #标签1<br />
            [1] => #标签2<br />
            [2] => #标签3。<br />
            [3] => #标签4<br />
            [4] => #标签5<br />
            [5] => #tag6<br />
        )</p>
<p>    [1] => Array<br />
        (<br />
            [0] => 标签1<br />
            [1] => 标签2<br />
            [2] => 标签3。<br />
            [3] => 标签4<br />
            [4] => 标签5<br />
            [5] => tag6<br />
        )</p>
<p>)<br />
Array<br />
(<br />
    [0] => ￥12<br />
    [1] => 12<br />
)<br />
</code></p>
<p>补充说明：</p>
<p>双字节字符编码范围 </p>
<p>1. GBK (GB2312/GB18030)<br />
x00-xff GBK双字节编码范围<br />
x20-x7f ASCII<br />
xa1-xff 中文 gb2312<br />
x80-xff 中文 gbk </p>
<p>2. UTF-8 (Unicode) </p>
<p>u4e00-u9fa5 (中文)<br />
x3130-x318F (韩文<br />
xAC00-xD7A3 (韩文)<br />
u0800-u4e00 (日文)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.toplee.com/blog/1319.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>cherokee</title>
		<link>http://www.toplee.com/blog/1317.html</link>
		<comments>http://www.toplee.com/blog/1317.html#comments</comments>
		<pubDate>Thu, 05 Apr 2012 09:04:22 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Web架构/负载/性能]]></category>
		<category><![CDATA[cherokee]]></category>
		<category><![CDATA[nginx]]></category>

		<guid isPermaLink="false">http://www.toplee.com/blog/?p=1317</guid>
		<description><![CDATA[估计是喜欢开cherokee，最近新上线的服务器我也懒得配置Nginx，直接用cherokee了，配置起来很方便，对于当前访问量不大的站点，其实用那个都行，简单就好，简单就好！ &#160;]]></description>
			<content:encoded><![CDATA[<p>估计是喜欢开cherokee，最近新上线的服务器我也懒得配置Nginx，直接用cherokee了，配置起来很方便，对于当前访问量不大的站点，其实用那个都行，简单就好，简单就好！</p>
<p>&nbsp;</p>
<p><a href="http://poyy.com/p/297066/"><img class="alignnone" title="just do it!" src="http://pic.haoyork.com/da/a9/93/b3088882b5_600_0.jpg" alt="" width="600" height="604" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.toplee.com/blog/1317.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>牛逼的GMP数学运算库</title>
		<link>http://www.toplee.com/blog/1313.html</link>
		<comments>http://www.toplee.com/blog/1313.html#comments</comments>
		<pubDate>Thu, 12 Jan 2012 15:54:49 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Linux / BSD]]></category>
		<category><![CDATA[PHP / Zend]]></category>
		<category><![CDATA[bsd]]></category>
		<category><![CDATA[gmp]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[php_gmp]]></category>

		<guid isPermaLink="false">http://www.toplee.com/blog/?p=1313</guid>
		<description><![CDATA[搞了一晚上，搞定了一个需要使用无限长度数字运算的产品功能开发，实现权限模块的处理，使用了gmp库来完成，效果一级棒，性能好不好还不知道，不过好在不是用在高性能要求的部分，好久木有今晚这样的为了搞定一个问题而钻研的劲头了。 顺便记录一下，如果要在BSD系统下的PHP中使用GMP库，不要安装最新的5.0.x版本的GMP库，4.2.4以下的版本最好，要不编译不过去的！ 当前功能中实际使用到的最大数字是 18446744073709107172 ，二进制的结果是如此惊人的长度: 1111111111111111111111111111111111111111111110010011011111100100]]></description>
			<content:encoded><![CDATA[<p>搞了一晚上，搞定了一个需要使用无限长度数字运算的产品功能开发，实现权限模块的处理，使用了gmp库来完成，效果一级棒，性能好不好还不知道，不过好在不是用在高性能要求的部分，好久木有今晚这样的为了搞定一个问题而钻研的劲头了。</p>
<p>顺便记录一下，如果要在BSD系统下的PHP中使用GMP库，不要安装最新的5.0.x版本的GMP库，4.2.4以下的版本最好，要不编译不过去的！</p>
<p>当前功能中实际使用到的最大数字是 18446744073709107172 ，二进制的结果是如此惊人的长度: 1111111111111111111111111111111111111111111110010011011111100100</p>
]]></content:encoded>
			<wfw:commentRss>http://www.toplee.com/blog/1313.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>又一年过去，得失几何？</title>
		<link>http://www.toplee.com/blog/1308.html</link>
		<comments>http://www.toplee.com/blog/1308.html#comments</comments>
		<pubDate>Thu, 12 Jan 2012 05:02:25 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[心情 / 生活]]></category>

		<guid isPermaLink="false">http://www.toplee.com/blog/?p=1308</guid>
		<description><![CDATA[这一年，失去了什么？ 太多，太多！失去了已很难找回！ 这一年，得到了什么？ 几乎是一无所获！ 如此真贵的岁月，又被我SB的蹉跎。。。 曾经那个有活力、有梦想的年轻人，如今面对镜子中那张沧桑疲惫的脸，很难再淡定轻松的微笑一回！ 亲情、爱情、友情、事业，对一个男人来说，哪一样失败都不是成功，镜子中的我，败得一塌糊涂。。。 &#160; 来年，路在何方？]]></description>
			<content:encoded><![CDATA[<p>这一年，失去了什么？ 太多，太多！失去了已很难找回！</p>
<p>这一年，得到了什么？ 几乎是一无所获！ 如此真贵的岁月，又被我SB的蹉跎。。。</p>
<p>曾经那个有活力、有梦想的年轻人，如今面对镜子中那张沧桑疲惫的脸，很难再淡定轻松的微笑一回！</p>
<p>亲情、爱情、友情、事业，对一个男人来说，哪一样失败都不是成功，镜子中的我，败得一塌糊涂。。。</p>
<p>&nbsp;</p>
<p>来年，路在何方？</p>
]]></content:encoded>
			<wfw:commentRss>http://www.toplee.com/blog/1308.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>把FreeBSD下的硬件RAID去掉</title>
		<link>http://www.toplee.com/blog/1301.html</link>
		<comments>http://www.toplee.com/blog/1301.html#comments</comments>
		<pubDate>Wed, 16 Nov 2011 10:11:56 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Linux / BSD]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[fsck]]></category>
		<category><![CDATA[fstab]]></category>
		<category><![CDATA[raid]]></category>

		<guid isPermaLink="false">http://www.toplee.com/blog/?p=1301</guid>
		<description><![CDATA[几年前的一台服务器，intel s3000ah的板子，自带Intel Matrix Storage和LSI的raid，不过这个板子的raid对freebsd不支持，当初勉强使用Intel Matrix Storage的模式设置了raid 1 安装了BSD的7.2， 事实上并不是真正的好使，raid经常掉，bsd下的raid管理工具atacontrol也不能进行detach和attach的，勉强认为freebsd能认识设备ar0而已。 机器前几天终于挂了，出现的情况是raid1的两个磁盘都显示了offline，用过Intel Matrix Storage的就知道，CTRL+I进去后，其实是啥也干不了的，这个板子如果在windows下，或者用板子自带引导盘也是可以干点啥的，在bsd下，Intel Matrix Storage就是狗屎一坨。 按照过去的经验，通常这样的情况都是重装系统完事，但是因为人不在现场，David帮我跑去机房看看情况，于是乎抱着试试看的态度，尝试看看是否可以从硬件和软件下把raid禁用了，用一块盘当作普通sata来运行原理的系统，省得重装系统，配置和恢复数据麻烦，没想到一试居然成功了，下面把大致的经过分享给大家，希望对大家有参考作用。 首先，到bios里面，把raid禁用了，然后重启机器，正常的话能看到freebsd的引导了，但是这会儿是不能正常进入系统的，半道儿上就会停住，告知ar0&#8230;啥的设备问题。 在freebsd引导菜单中选择进入单用户模式 进到单用户模式的shell环境下后，因为/usr /var 啥的分区都没能挂载，而使用mount -a 啥的肯定不行，因为分区指向的都是ar0&#8230;的raid设备名， 于是我们要想办法修改fstab，这会儿矛盾的问题是，既然/usr无法挂载，/usr/bin/vi自然就没法运行了，如何能修改fstab文件呢？ 琢磨了会儿，找到了办法，先umount /usr 试试， 然后再运行 mount -u /dev/ad4s1f /usr ，这里的ad4s1f其实是我raid1第一块硬盘在系统中的设备名，这个名称你可以大致的看看/dev/目录下有啥ad开头的文件，再对比一下当前fstab文件里面的分区，就能找到对应的块设备名称了。 通过上面的操作，vi就可以使用了， 运行 /usr/bin/vi /etc/fstab，把该文件里面原来ar0&#8230;的都改成ad4&#8230; ，保存退出，成功了一大半了。（这里漏掉了一步关键的，/etc/fstab文件应该是只读的文件系统，需要先运行 mount -fw / ） 接下来需要做的事情是要从系统里面删除掉原来的raid设备，这个比较简单 运行/usr/bin/atacontrol detach ad4 和/usr/bin/atacontrol detach ad6 ，然后运行/usr/bin/atacontrol delete ar0 （你的系统里面也有可能是ar1，自己看fstab来决定） 然后最好执行一下fsck -y ，抽颗烟等结束后reboot，基本上就好了！ [...]]]></description>
			<content:encoded><![CDATA[<p>几年前的一台服务器，intel s3000ah的板子，自带<em>Intel</em> Matrix Storage和LSI的raid，不过这个板子的raid对freebsd不支持，当初勉强使用<em>Intel</em> Matrix Storage的模式设置了raid 1 安装了BSD的7.2， 事实上并不是真正的好使，raid经常掉，bsd下的raid管理工具atacontrol也不能进行detach和attach的，勉强认为freebsd能认识设备ar0而已。</p>
<p>机器前几天终于挂了，出现的情况是raid1的两个磁盘都显示了offline，用过<em>Intel</em> Matrix Storage的就知道，CTRL+I进去后，其实是啥也干不了的，这个板子如果在windows下，或者用板子自带引导盘也是可以干点啥的，在bsd下，<em>Intel</em> Matrix Storage就是狗屎一坨。</p>
<p>按照过去的经验，通常这样的情况都是重装系统完事，但是因为人不在现场，David帮我跑去机房看看情况，于是乎抱着试试看的态度，尝试看看是否可以从硬件和软件下把raid禁用了，用一块盘当作普通sata来运行原理的系统，省得重装系统，配置和恢复数据麻烦，没想到一试居然成功了，下面把大致的经过分享给大家，希望对大家有参考作用。</p>
<p>首先，到bios里面，把raid禁用了，然后重启机器，正常的话能看到freebsd的引导了，但是这会儿是不能正常进入系统的，半道儿上就会停住，告知ar0&#8230;啥的设备问题。</p>
<p>在freebsd引导菜单中选择进入单用户模式</p>
<p>进到单用户模式的shell环境下后，因为/usr /var 啥的分区都没能挂载，而使用mount -a 啥的肯定不行，因为分区指向的都是ar0&#8230;的raid设备名， 于是我们要想办法修改fstab，这会儿矛盾的问题是，既然/usr无法挂载，/usr/bin/vi自然就没法运行了，如何能修改fstab文件呢？</p>
<p>琢磨了会儿，找到了办法，先umount /usr 试试， 然后再运行 mount -u /dev/ad4s1f /usr ，这里的ad4s1f其实是我raid1第一块硬盘在系统中的设备名，这个名称你可以大致的看看/dev/目录下有啥ad开头的文件，再对比一下当前fstab文件里面的分区，就能找到对应的块设备名称了。</p>
<p>通过上面的操作，vi就可以使用了， 运行 /usr/bin/vi /etc/fstab，把该文件里面原来ar0&#8230;的都改成ad4&#8230; ，保存退出，成功了一大半了。（这里漏掉了一步关键的，/etc/fstab文件应该是只读的文件系统，需要先运行 mount -fw / ）</p>
<p>接下来需要做的事情是要从系统里面删除掉原来的raid设备，这个比较简单 运行/usr/bin/atacontrol detach ad4 和/usr/bin/atacontrol detach ad6 ，然后运行/usr/bin/atacontrol delete ar0 （你的系统里面也有可能是ar1，自己看fstab来决定）</p>
<p>然后最好执行一下fsck -y ，抽颗烟等结束后reboot，基本上就好了！</p>
<p>这会儿应该能进到系统了，再df看看磁盘分区情况，系统回到了普通的单硬盘模式了，多出来的那块ad6还没有使用，可以再自己分区单独使用。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.toplee.com/blog/1301.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>将食，涨，如厕，陷而卒</title>
		<link>http://www.toplee.com/blog/1298.html</link>
		<comments>http://www.toplee.com/blog/1298.html#comments</comments>
		<pubDate>Wed, 16 Nov 2011 09:49:27 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[心情 / 生活]]></category>
		<category><![CDATA[搞笑]]></category>

		<guid isPermaLink="false">http://www.toplee.com/blog/?p=1298</guid>
		<description><![CDATA[今天看到一则古代帝王最“雷人”的死法，把轻松分享一下! &#160; 春秋时期，晋景公有天刚要吃饭，突然肚子不舒服，去了趟茅房。侍从左等右等，饭都凉了，还不见回来，到茅房去找，发现君王掉进茅坑，淹死了。以文笔简洁有力著称的《左传》,仅用一句话描写此事：“将食，涨，如厕，陷而卒”。]]></description>
			<content:encoded><![CDATA[<p>今天看到一则古代帝王最“雷人”的死法，把轻松分享一下!</p>
<p>&nbsp;</p>
<p>春秋时期，晋景公有天刚要吃饭，突然肚子不舒服，去了趟茅房。侍从左等右等，饭都凉了，还不见回来，到茅房去找，发现君王掉进茅坑，淹死了。以文笔简洁有力著称的《左传》,仅用一句话描写此事：“将食，涨，如厕，陷而卒”。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.toplee.com/blog/1298.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>使用HAProxy对MySQL进行负载均衡和状态监控</title>
		<link>http://www.toplee.com/blog/1284.html</link>
		<comments>http://www.toplee.com/blog/1284.html#comments</comments>
		<pubDate>Fri, 24 Jun 2011 09:07:14 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Web架构/负载/性能]]></category>
		<category><![CDATA[haproxy]]></category>
		<category><![CDATA[master]]></category>
		<category><![CDATA[memcached]]></category>
		<category><![CDATA[MySQL / DB]]></category>
		<category><![CDATA[replication]]></category>
		<category><![CDATA[slave]]></category>

		<guid isPermaLink="false">http://www.toplee.com/blog/?p=1284</guid>
		<description><![CDATA[转载请保留原文内容，并声明转载地址：http://www.toplee.com/blog/1284.html 乐搜（lesoo.com)使用HAProxy已经很久了，但主要用在前端web请求的负载均衡和状态监控上，对于后端的Memcached以及MySQL却一直没有应用，最近对系统架构进行了小规模的整理，把MySQL也收编到了HAProxy下，经过一段时间的使用，体验还是不错的。 详细的HAProxy的安装配置我就不说了，主要针对HAProxy如何监控检测后端MySQL服务器的状态说两句。 我们的环境由两台master和若干台slave数据库组成，在HA的配置中，可以设置灵活的策略和进行slave的分组，如果系统更大了，将还会根据业务系统来拆分若干个master和slave组。 声明：以下内容应用和验证环境是基于 FreeBSD 8.2 环境，MySQL在5.1以上版本，理论上 Linux 的各个版本基本都能通过，如果有不能通过的情况，请别随意张口扔板砖，欢迎添加评论留言向我提问 HA对MySQL状态监控实现的方式很多，不过大多逻辑都一样，使用自己编写的脚本程序（可以是shell、php、perl等你熟悉的语言）监控mysql的运行情况，然后通过HTTP的方式输出运行结果给HA，我使用的是shell程序来实现的监控，结合 FreeBSD的inetd服务来实现监控端口的提供 1. 监控脚本编写 下面是我写的一段监控shell脚本，用于监控其中一台叫mdb1的master数据库replication运行： #!/usr/local/bin/bash MYSQL_HOST=&#34;mdb1&#34; MYSQL_PORT=&#34;3307&#34; MYSQL_USERNAME=&#34;michael&#34; MYSQL_PASSWORD=&#34;michael@lesoo.com&#34; &#160; /usr/local/bin/mysql -h$MYSQL_HOST -P$MYSQL_PORT -u$MYSQL_USERNAME -p$MYSQL_PASSWORD -e &#34;show slave status\G;&#34; &#62; /tmp/check_mdb1_rep.txt iostat=`grep &#34;Slave_IO_Running&#34; /tmp/check_mdb1_rep.txt&#160; &#124;awk '{print $2}'` sqlstat=`grep &#34;Slave_SQL_Running&#34; /tmp/check_mdb1_rep.txt &#124;awk '{print $2}'` #echo iostat:$iostat and sqlstat:$sqlstat if [ &#34;$iostat&#34; = &#34;Yes&#34; ] &#38;&#38; [...]]]></description>
			<content:encoded><![CDATA[<p>转载请保留原文内容，并声明转载地址：http://www.toplee.com/blog/1284.html</p>
<p><a href="http://www.lesoo.com">乐搜（lesoo.com)</a>使用HAProxy已经很久了，但主要用在前端web请求的负载均衡和状态监控上，对于后端的Memcached以及MySQL却一直没有应用，最近对系统架构进行了小规模的整理，把MySQL也收编到了HAProxy下，经过一段时间的使用，体验还是不错的。</p>
<p>详细的HAProxy的安装配置我就不说了，主要针对HAProxy如何监控检测后端MySQL服务器的状态说两句。</p>
<p>我们的环境由两台master和若干台slave数据库组成，在HA的配置中，可以设置灵活的策略和进行slave的分组，如果系统更大了，将还会根据业务系统来拆分若干个master和slave组。</p>
<p><em><strong>声明：以下内容应用和验证环境是基于 FreeBSD 8.2 环境，MySQL在5.1以上版本，理论上 Linux 的各个版本基本都能通过，如果有不能通过的情况，请别随意张口扔板砖，欢迎添加评论留言向我提问</strong></em></p>
<p>HA对MySQL状态监控实现的方式很多，不过大多逻辑都一样，使用自己编写的脚本程序（可以是shell、php、perl等你熟悉的语言）监控mysql的运行情况，然后通过HTTP的方式输出运行结果给HA，我使用的是shell程序来实现的监控，结合 FreeBSD的inetd服务来实现监控端口的提供</p>
<p><img title="More..." src="http://www.toplee.com/blog/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif" alt="" /></p>
<p><span id="more-1284"></span></p>
<p><strong>1. 监控脚本编写</strong></p>
<p>下面是我写的一段监控shell脚本，用于监控其中一台叫mdb1的master数据库replication运行：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">#!/usr/local/bin/bash</li>
<li>MYSQL_HOST=&quot;mdb1&quot;</li>
<li>MYSQL_PORT=&quot;3307&quot;</li>
<li>MYSQL_USERNAME=&quot;michael&quot;</li>
<li>MYSQL_PASSWORD=&quot;michael@lesoo.com&quot;</li>
<li>&nbsp;</li>
<li>/usr/local/bin/mysql -h$MYSQL_HOST -P$MYSQL_PORT -u$MYSQL_USERNAME -p$MYSQL_PASSWORD -e &quot;show slave status\G;&quot; &gt; /tmp/check_mdb1_rep.txt</li>
<li>iostat=`grep &quot;Slave_IO_Running&quot; /tmp/check_mdb1_rep.txt&nbsp; |awk '{print $2}'`</li>
<li>sqlstat=`grep &quot;Slave_SQL_Running&quot; /tmp/check_mdb1_rep.txt |awk '{print $2}'`</li>
<li>#echo iostat:$iostat and sqlstat:$sqlstat</li>
<li>if [ &quot;$iostat&quot; = &quot;Yes&quot; ] &amp;&amp; [ &quot;$sqlstat&quot; = &quot;Yes&quot; ];</li>
<li>then</li>
<li># mysql is fine, return http 200</li>
<li>/bin/echo &quot;HTTP/1.1 200 OK\r\n&quot;</li>
<li>/bin/echo &quot;Content-Type: Content-Type: text/plain\r\n&quot;</li>
<li>/bin/echo &quot;\r\n&quot;</li>
<li>/bin/echo &quot;MySQL ($MYSQL_HOST:$MYSQL_PORT) replication is running.\r\n&quot;</li>
<li>/bin/echo &quot;\r\n&quot;</li>
<li>else</li>
<li># mysql is down, return http 503</li>
<li>/bin/echo &quot;HTTP/1.1 503 Service Unavailable\r\n&quot;</li>
<li>/bin/echo &quot;Content-Type: Content-Type: text/plain\r\n&quot;</li>
<li>/bin/echo &quot;\r\n&quot;</li>
<li>/bin/echo &quot;MySQL ($MYSQL_HOST:$MYSQL_PORT) replication&nbsp; is *down*.\r\n&quot;</li>
<li>/bin/echo &quot;\r\n&quot;</li></ol></div>
<p>上面的代码大概有点shell脚本编写经验的都能明白什么意思，就是用mysql 命令连接指定数据库并 -e 方式执行MySQL命令 &#8220;show slave status\G&#8221;，用以输出当前MySQL服务器的replication运行状况，里面会有两个主要的状态参数Slave_IO_Running和Slave_SQL_Running， 这两个参数用于表示当前数据库的replication运行是否正常，如果有一个是No，则表示数据库同步歇菜了，把状态据结果通过Linux的管道命令输出到 /tmp/check_mdb1_rep.txt文件（你可以自己随便改个文件名），再使用grep和awk命令把文件中想要的两个参数文本行读取出来并拆分，最后判断是否都是“Yes”， 对于正常情况，我们输出一个HTTP协议标准的header头信息，里面包含关键的Code 200或者Code 503，这个其实就是HAProxy监控最终需要的东西。</p>
<p>上面的解释如果有不明白的，可以留言来问我。</p>
<p>把以上这段代码保存为一个文件，比如 /bin/mdb1_replication.sh ，记得 chmod +x</p>
<p><strong>2. 把脚本变成一个系统TCP监听服务</strong></p>
<p>编写/etc/service文件，在末尾添加如下一行</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">mdb1_replication 8822/tcp</li></ol></div>
<p>这段代码的意思就是定义一个系统的服务，名称叫mdb1_replication， 占用8822端口，使用TCP协议访问（这里名称和端口可以自己定义，只要不和系统别的服务重名和端口重复即可）</p>
<p>然后编写/etc/inetd.conf，在文件末尾添加如下一行</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">mdb1_replication stream tcp nowait root /bin/mdb1_replication.sh mdb1_replication</li></ol></div>
<p>这段代码的意思是添加一个接受系统inetd管理的服务，服务名称是前面提到的mdb1_replication， 执行的脚本是 /bin/mdb1_replication.sh，其他的几个参数意思就自己man inetd.conf看看吧</p>
<p>然后运行修改运行 /etc/rc.d/inetd restart 启动服务</p>
<p>运行 netstat -anl |grep 8822 看看是否服务和端口起来了，没有起来的话，检查检查哪里出错了，看看系统日志。</p>
<p>最后执行 telnet localhost 8822，正常应该看到如下运行结果</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">%telnet localhost 8822</li>
<li>Trying 127.0.0.1...</li>
<li>Connected to localhost.</li>
<li>Escape character is '^]'.</li>
<li>HTTP/1.1 200 OK\r\n</li>
<li>Content-Type: Content-Type: text/plain\r\n</li>
<li>\r\n</li>
<li>MySQL (mdb2:3307) replication is running.\r\n</li>
<li>\r\n</li>
<li>Connection closed by foreign host.</li>
<li>%</li></ol></div>
<p><strong>3. 配置Haproxy的监控</strong></p>
<p>在HA配置文件中添加类似下面的部分内容</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">listen mdb_3307 192.168.0.8:3307</li>
<li>mode tcp</li>
<li>maxconn 100</li>
<li>balance roundrobin</li>
<li>option httpchk OPTIONS * HTTP/1.1\r\nHost:\ www</li>
<li>server www1:3307 www1:3307 weight 1 check port 9922 inter 2s rise 2 fall 2</li>
<li>server mdb2:3307 mdb2:3307 weight 3 check port 9922 inter 2s rise 2 fall 2 backup</li>
<li>option tcpka</li></ol></div>
<p>上面这段配置我就不过多说明了，这是HAProxy的配置语法，如果对HA有不明白的地方，欢迎讨论。</p>
<p>补充： 目前我们的系统已经实现了 Nginx / Memcached / Sphinx / MySQL 等各个后端应用的负载均衡和状态监控，还有短信报警等环节，有兴趣讨论交流的，欢迎和我联络！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.toplee.com/blog/1284.html/feed</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>悲惨的验车历程终于告一段落了！</title>
		<link>http://www.toplee.com/blog/1275.html</link>
		<comments>http://www.toplee.com/blog/1275.html#comments</comments>
		<pubDate>Wed, 22 Jun 2011 15:33:18 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[IT / 业界 / 互联网]]></category>
		<category><![CDATA[验车]]></category>

		<guid isPermaLink="false">http://www.toplee.com/blog/?p=1275</guid>
		<description><![CDATA[唉，一言难尽啊！]]></description>
			<content:encoded><![CDATA[<p>唉，一言难尽啊！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.toplee.com/blog/1275.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>支付渠道的改善很关键</title>
		<link>http://www.toplee.com/blog/1273.html</link>
		<comments>http://www.toplee.com/blog/1273.html#comments</comments>
		<pubDate>Wed, 22 Jun 2011 13:33:03 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[IT / 业界 / 互联网]]></category>
		<category><![CDATA[乐搜]]></category>
		<category><![CDATA[支付]]></category>

		<guid isPermaLink="false">http://www.toplee.com/blog/?p=1273</guid>
		<description><![CDATA[最近更新了乐搜网的支付网关，顺便改进了部分支付产品的使用逻辑和用户体验，今天收到了显著的效果，甚是欣慰！ 这些日子和各个支付平台的来回来去费劲折腾，深刻体会到了天朝推出支付牌照一事的影响力真是够大，到处都是门槛，在天朝下做点事情真是越来越难！]]></description>
			<content:encoded><![CDATA[<p>最近更新了乐搜网的支付网关，顺便改进了部分支付产品的使用逻辑和用户体验，今天收到了显著的效果，甚是欣慰！</p>
<p>这些日子和各个支付平台的来回来去费劲折腾，深刻体会到了天朝推出支付牌照一事的影响力真是够大，到处都是门槛，在天朝下做点事情真是越来越难！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.toplee.com/blog/1273.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>感谢Google Reader 丢失的数据又找回来了！</title>
		<link>http://www.toplee.com/blog/1255.html</link>
		<comments>http://www.toplee.com/blog/1255.html#comments</comments>
		<pubDate>Tue, 07 Jun 2011 13:30:10 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[其他技术]]></category>
		<category><![CDATA[atom]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[reader]]></category>
		<category><![CDATA[rss]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.toplee.com/blog/?p=1255</guid>
		<description><![CDATA[通过google reader订阅进行导出丢失的数据 https://www.google.com/reader/atom/feed/http://www.toplee.com/blog/%3Ffeed%3Drss2?n=100 得到的是atom格式的xml数据，然后进行一次转换到rss格式的xml 最后进入到WP的后台 import 搞定！]]></description>
			<content:encoded><![CDATA[<p>通过google reader订阅进行导出丢失的数据</p>
<p><a href="https://www.google.com/reader/atom/feed/http://www.toplee.com/blog/%3Ffeed%3Drss2?n=100">https://www.google.com/reader/atom/feed/http://www.toplee.com/blog/%3Ffeed%3Drss2?n=100</a></p>
<p>得到的是atom格式的xml数据，然后进行一次转换到rss格式的xml</p>
<p>最后进入到WP的后台 import</p>
<p>搞定！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.toplee.com/blog/1255.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>又杯具了，数据丢失了近6个月的。。。</title>
		<link>http://www.toplee.com/blog/1239.html</link>
		<comments>http://www.toplee.com/blog/1239.html#comments</comments>
		<pubDate>Sun, 05 Jun 2011 17:04:11 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[西拉东扯]]></category>

		<guid isPermaLink="false">http://www.toplee.com/blog/1239.html</guid>
		<description><![CDATA[不过最近6个月公司事情太忙，blog也基本没怎么更新啥东西，只能这样安慰自己了！]]></description>
			<content:encoded><![CDATA[<p>不过最近6个月公司事情太忙，blog也基本没怎么更新啥东西，只能这样安慰自己了！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.toplee.com/blog/1239.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>谷歌地图升级到5.4版</title>
		<link>http://www.toplee.com/blog/1240.html</link>
		<comments>http://www.toplee.com/blog/1240.html#comments</comments>
		<pubDate>Sat, 14 May 2011 10:52:35 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[其他技术]]></category>

		<guid isPermaLink="false">http://www.toplee.com/blog/1240.html</guid>
		<description><![CDATA[现在用的手机是android2.2版的三星i9000，ROM自带的谷歌地图是4.5版，但官方早就升级到了5.4版，中间有性能和功能的大幅提升，可是尝试了若干方法安装升级都没有成功，如果用市场直接升级会得到“应用程序未安装”的错误提示，用adb手动安装，会得到 INSTALL_FAILED_SHARED_USER_INCOMPATIBLE 错误提示，另外还尝试了用RE获取root权限后后删除/system/app/Maps.apk后安装或者升级，依然不能成功，其实之前编译测试 apk文件的时候，遇到 INSTALL_FAILED_SHARED_USER_INCOMPATIBLE错误其实是因为 AndroidManifest.xml 文件中android:sharedUserId=”android.uid.system”设置项所指，可是这事儿现在没法弄，官方的Google maps的apk文件打开后里面的AndroidManifest.xml文件不能这样修改搞定。 崩溃之余想到个方法可以一试，就是把系统原来的4.5版 /system/app/Maps.apk拷贝到手机的另外地方，然后通过RE删除掉原来的文件后，在手机上点击Maps.apk文件安装一份新的4.5版谷歌地图，这样安装出来的文件就成为了第三方应用程序的模式，于是再进入设置-&#62;应用程序里面删掉刚安装的4.5版程序，然后再次通过adb命令安装最新5.4版的Maps.apk，结果成功了！ C:\Users\michael\Documents\Wandoujia\Download\Appadb install -r &#34;Maps.apk&#34;335 KB/s (6297067 bytes in 18.355s)pkg: /data/local/tmp/Maps.apkFailure [INSTALL_FAILED_SHARED_USER_INCOMPATIBLE]C:\Users\michael\Documents\Wandoujia\Download\Appadb install &#34;Maps.apk&#34;250 KB/s (6297067 bytes in 24.589s)pkg: /data/local/tmp/Maps.apkSuccess]]></description>
			<content:encoded><![CDATA[<p>现在用的手机是android2.2版的三星i9000，ROM自带的谷歌地图是4.5版，但官方早就升级到了5.4版，中间有性能和功能的大幅提升，可是尝试了若干方法安装升级都没有成功，如果用市场直接升级会得到“应用程序未安装”的错误提示，用adb手动安装，会得到 INSTALL_FAILED_SHARED_USER_INCOMPATIBLE 错误提示，另外还尝试了用RE获取root权限后后删除/system/app/Maps.apk后安装或者升级，依然不能成功，其实之前编译测试 apk文件的时候，遇到 INSTALL_FAILED_SHARED_USER_INCOMPATIBLE错误其实是因为 AndroidManifest.xml 文件中android:sharedUserId=”android.uid.system”设置项所指，可是这事儿现在没法弄，官方的Google maps的apk文件打开后里面的AndroidManifest.xml文件不能这样修改搞定。</p>
<p>崩溃之余想到个方法可以一试，就是把系统原来的4.5版 /system/app/Maps.apk拷贝到手机的另外地方，然后通过RE删除掉原来的文件后，在手机上点击Maps.apk文件安装一份新的4.5版谷歌地图，这样安装出来的文件就成为了第三方应用程序的模式，于是再进入设置-&gt;应用程序里面删掉刚安装的4.5版程序，然后再次通过adb命令安装最新5.4版的Maps.apk，结果成功了！</p>
<div class="hl-surround"><div class="hl-main">C:\Users\michael\Documents\Wandoujia\Download\App<br />adb install -r &quot;Maps.apk&quot;<br />335 KB/s (6297067 bytes in 18.355s)<br />pkg: /data/local/tmp/Maps.apk<br />Failure [INSTALL_FAILED_SHARED_USER_INCOMPATIBLE]<br /><br />C:\Users\michael\Documents\Wandoujia\Download\App<br />adb install &quot;Maps.apk&quot;<br />250 KB/s (6297067 bytes in 24.589s)<br />pkg: /data/local/tmp/Maps.apk<br />Success</div></div>
]]></content:encoded>
			<wfw:commentRss>http://www.toplee.com/blog/1240.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>TP-Link WN321G无线网卡在FreeBSD下配置</title>
		<link>http://www.toplee.com/blog/1241.html</link>
		<comments>http://www.toplee.com/blog/1241.html#comments</comments>
		<pubDate>Wed, 04 May 2011 05:04:39 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[其他技术]]></category>

		<guid isPermaLink="false">http://www.toplee.com/blog/1241.html</guid>
		<description><![CDATA[默认情况下，FreeBSD7.2以上（我测试是这样）内核默认都支持这款无线网卡的驱动，这款网卡的芯片是 Ralink RT2573 ，可以说运气不错，一直扔着闲置没用。 启动的时候，或者插入USB口的时候，大概能看到如下内容，表示驱动已经加载： rum0: &#60;Ralink 54M.USB......., class 0/0, rev 2.00/0.01, addr 2&#62; on uhub4rum0: MAC/BBP RT2573 (rev 0x2573a), RF RT2528rum0: Ethernet address: 00:14:78:76:ff:59rum0: if_start running deferred for Giantrum0: &#60;Ralink 54M.USB......., class 0/0, rev 2.00/0.01, addr 2&#62; on uhub4rum0: MAC/BBP RT2573 (rev 0x2573a), RF RT2528rum0: Ethernet address: 00:14:78:76:ff:59rum0: if_start running deferred for Giant 配置非常简单，只需要在rc.conf下配置如下内容即可： [...]]]></description>
			<content:encoded><![CDATA[<p>默认情况下，FreeBSD7.2以上（我测试是这样）内核默认都支持这款无线网卡的驱动，这款网卡的芯片是 Ralink RT2573 ，可以说运气不错，一直扔着闲置没用。</p>
<p>启动的时候，或者插入USB口的时候，大概能看到如下内容，表示驱动已经加载：</p>
<div class="hl-surround"><div class="hl-main">rum0: &lt;Ralink 54M.USB......., class 0/0, rev 2.00/0.01, addr 2&gt; on uhub4<br />rum0: MAC/BBP RT2573 (rev 0x2573a), RF RT2528<br />rum0: Ethernet address: 00:14:78:76:ff:59<br />rum0: if_start running deferred for Giant<br />rum0: &lt;Ralink 54M.USB......., class 0/0, rev 2.00/0.01, addr 2&gt; on uhub4rum0: MAC/BBP RT2573 (rev 0x2573a), RF RT2528rum0: Ethernet address: 00:14:78:76:ff:59rum0: if_start running deferred for Giant</div></div>
<p>配置非常简单，只需要在rc.conf下配置如下内容即可：</p>
<div class="hl-surround"><div class="hl-main">ifconfig_rum0=&quot;inet 192.168.1.8  netmask 255.255.255.0 ssid bengxin authmode open wepmode on weptxkey 1 wepkey 0x1234567890&quot;</div></div>
<p>其中 ssid 是无线路由的ssid名称， authmode 是认证模式， wepmode 表示采用wep加密方式 weptxkey表示用的第几个密钥进行数据传输 webkey 是16进制的wep密钥值，根据你的需要来修改即可， wepkey支持多个，可以写成 1:0×1234567890 表示第一个密钥</p>
]]></content:encoded>
			<wfw:commentRss>http://www.toplee.com/blog/1241.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>为了证明我活着，冒个泡</title>
		<link>http://www.toplee.com/blog/1242.html</link>
		<comments>http://www.toplee.com/blog/1242.html#comments</comments>
		<pubDate>Wed, 27 Apr 2011 17:13:39 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[心情 / 生活]]></category>

		<guid isPermaLink="false">http://www.toplee.com/blog/1242.html</guid>
		<description><![CDATA[好久没更新blog了，为了证明我还尚在人间，冒个泡。 最近忙的事情太多了，和哥们折腾了一个沟帮子熏鸡店 （当然，这是占了少许精力），还在折腾一个服饰店，对于经营传统行业最近是长了非常多的经验值 不过，主要的精力还是在蹦心上，网站大规模改版的工作接近尾声，正在进行一些支付方面的收尾工作，忙最多的事情是公司最近要搬家了，待了快三年的办公室就要告别了，下周将搬进亚运村的新办公室，换个环境，换个工作心情。 今天尤其累，折腾CentOS的一个服务器，在机房搞了两天，破主板不是SATA硬盘支持问题就是网卡驱动问题，最终网卡驱动通过下载 AR81Family-linux-v1.0.1.14.tar.gz 搞定，但是sata硬盘的问题依然让我崩溃，唉，一分钱一分货一点不假！ 等网站改版上线，公司搬家完毕，能喘口气的时候，再补交点有营养的作业。]]></description>
			<content:encoded><![CDATA[<p>好久没更新blog了，为了证明我还尚在人间，冒个泡。</p>
<p>最近忙的事情太多了，和哥们折腾了一个<a title="沟帮子熏鸡" href="http://www.bengxin.com/shop/1000000324.html">沟帮子熏鸡店</a> （当然，这是占了少许精力），还在折腾一个服饰店，对于经营传统行业最近是长了非常多的经验值</p>
<p>不过，主要的精力还是在蹦心上，网站大规模改版的工作接近尾声，正在进行一些支付方面的收尾工作，忙最多的事情是公司最近要搬家了，待了快三年的办公室就要告别了，下周将搬进亚运村的新办公室，换个环境，换个工作心情。</p>
<p>今天尤其累，折腾CentOS的一个服务器，在机房搞了两天，破主板不是SATA硬盘支持问题就是网卡驱动问题，最终网卡驱动通过下载 <a href="http://partner.atheros.com/Drivers.aspx">AR81Family-linux-v1.0.1.14.tar.gz</a> 搞定，但是sata硬盘的问题依然让我崩溃，唉，一分钱一分货一点不假！</p>
<p>等网站改版上线，公司搬家完毕，能喘口气的时候，再补交点有营养的作业。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.toplee.com/blog/1242.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>解决技术小问题两三件</title>
		<link>http://www.toplee.com/blog/1243.html</link>
		<comments>http://www.toplee.com/blog/1243.html#comments</comments>
		<pubDate>Wed, 16 Feb 2011 16:41:01 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[PHP / Zend]]></category>
		<category><![CDATA[西拉东扯]]></category>

		<guid isPermaLink="false">http://www.toplee.com/blog/1243.html</guid>
		<description><![CDATA[1. imageCreateFromBMP()方法的实现，重点是解决了对32位BMP图片格式的支持，现在很多的团购网站图片格式明显有问题，比如阿丫团，虽然都是.jpg的，其实图片文件mime类型是image/bmp的，确实很诡异 2. 困扰我很久的PPT编写和修改操作电脑反应非常慢的老问题，有时输入和删除个字电脑都很迟缓，今儿终于搞定了，不是电脑的问题，是Office的拼写检查导致的，现在可以用行云流水来形容了。 3. 另外搞定SVN的菜鸟问题一个，随着版本的增加，SVN服务器的反应是越来越慢，这是因为大量的版本历史文件存放在一个服务器目录下导致，这是默认的svnadmin create的存放模式，其实使用BDB模式存放就轻松搞定了，至于为什么默认不用此方式，我还没有去研究。]]></description>
			<content:encoded><![CDATA[<p>1. imageCreateFromBMP()方法的实现，重点是解决了对32位BMP图片格式的支持，现在很多的团购网站图片格式明显有问题，比如阿丫团，虽然都是.jpg的，其实图片文件mime类型是image/bmp的，确实很诡异</p>
<p>2. 困扰我很久的PPT编写和修改操作电脑反应非常慢的老问题，有时输入和删除个字电脑都很迟缓，今儿终于搞定了，不是电脑的问题，是Office的拼写检查导致的，现在可以用行云流水来形容了。</p>
<p>3. 另外搞定SVN的菜鸟问题一个，随着版本的增加，SVN服务器的反应是越来越慢，这是因为大量的版本历史文件存放在一个服务器目录下导致，这是默认的svnadmin create的存放模式，其实使用BDB模式存放就轻松搞定了，至于为什么默认不用此方式，我还没有去研究。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.toplee.com/blog/1243.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>感谢哥们帮忙，联想3110打印机在win7下能用了</title>
		<link>http://www.toplee.com/blog/1244.html</link>
		<comments>http://www.toplee.com/blog/1244.html#comments</comments>
		<pubDate>Mon, 14 Feb 2011 14:06:32 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[其他技术]]></category>

		<guid isPermaLink="false">http://www.toplee.com/blog/1244.html</guid>
		<description><![CDATA[很老的打印机了，很少用，但是扔了又是浪费，这次差点被扔了，因为在win7下一直找不到驱动程序可用，今天得到网上一哥们的帮助，神奇的搞定了，废物利用的感觉是不错的。 参考网址： http://support1.lenovo.com.cn/lenovo/wsi/Modules/Driverdownload.aspx?SearchType=1&#38;LogicType=0&#38;MachineId=8681&#38;SN=&#38;IsBackPage=false&#38;IsSeachOne=true&#38;typename=%E8%81%94%E6%83%B33518%E5%BD%A9%E8%89%B2%E5%96%B7%E5%A2%A8%E6%89%93%E5%8D%B0%E6%9C%BA]]></description>
			<content:encoded><![CDATA[<p>很老的打印机了，很少用，但是扔了又是浪费，这次差点被扔了，因为在win7下一直找不到驱动程序可用，今天得到网上一哥们的帮助，神奇的搞定了，废物利用的感觉是不错的。</p>
<p>参考网址： <a href="http://support1.lenovo.com.cn/lenovo/wsi/Modules/Driverdownload.aspx?SearchType=1&amp;LogicType=0&amp;MachineId=8681&amp;SN=&amp;IsBackPage=false&amp;IsSeachOne=true&amp;typename=%E8%81%94%E6%83%B33518%E5%BD%A9%E8%89%B2%E5%96%B7%E5%A2%A8%E6%89%93%E5%8D%B0%E6%9C%BA">http://support1.lenovo.com.cn/lenovo/wsi/Modules/Driverdownload.aspx?SearchType=1&amp;LogicType=0&amp;MachineId=8681&amp;SN=&amp;IsBackPage=false&amp;IsSeachOne=true&amp;typename=%E8%81%94%E6%83%B33518%E5%BD%A9%E8%89%B2%E5%96%B7%E5%A2%A8%E6%89%93%E5%8D%B0%E6%9C%BA</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.toplee.com/blog/1244.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

