<?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/"
	>

<channel>
	<title>一个程序猿</title>
	<atom:link href="http://www.sunboyu.cn/feed" rel="self" type="application/rss+xml" />
	<link>http://www.sunboyu.cn</link>
	<description>时光不会倒流,脚步总要前进</description>
	<pubDate>Tue, 31 Jan 2012 10:50:34 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Putty、Winscp中文版后门最简单解决方法</title>
		<link>http://www.sunboyu.cn/2012/01/31/putty%e3%80%81winscp%e4%b8%ad%e6%96%87%e7%89%88%e5%90%8e%e9%97%a8%e6%9c%80%e7%ae%80%e5%8d%95%e8%a7%a3%e5%86%b3%e6%96%b9%e6%b3%95.shtml</link>
		<comments>http://www.sunboyu.cn/2012/01/31/putty%e3%80%81winscp%e4%b8%ad%e6%96%87%e7%89%88%e5%90%8e%e9%97%a8%e6%9c%80%e7%ae%80%e5%8d%95%e8%a7%a3%e5%86%b3%e6%96%b9%e6%b3%95.shtml#comments</comments>
		<pubDate>Tue, 31 Jan 2012 10:50:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1449</guid>
		<description><![CDATA[问题起因：http://bbs.duba.net/thread-22623363-1-1.html
如果不想更换自己的工具，那么在自己的host文件里增加如下一行
host文件地址：C:\WINDOWS\system32\drivers\etc\hosts
127.0.0.1&#160; ip-163.com
哦了
]]></description>
			<content:encoded><![CDATA[<p>问题起因：http://bbs.duba.net/thread-22623363-1-1.html</p>
<p>如果不想更换自己的工具，那么在自己的host文件里增加如下一行</p>
<p>host文件地址：C:\WINDOWS\system32\drivers\etc\hosts</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">127.0.0.1&nbsp; ip-163.com</li></ol></div>
<p>哦了</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2012/01/31/putty%e3%80%81winscp%e4%b8%ad%e6%96%87%e7%89%88%e5%90%8e%e9%97%a8%e6%9c%80%e7%ae%80%e5%8d%95%e8%a7%a3%e5%86%b3%e6%96%b9%e6%b3%95.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>Tokyo Cabinet table表的jsp接口</title>
		<link>http://www.sunboyu.cn/2011/08/16/tokyo-cabinet-table%e8%a1%a8%e7%9a%84jsp%e6%8e%a5%e5%8f%a3.shtml</link>
		<comments>http://www.sunboyu.cn/2011/08/16/tokyo-cabinet-table%e8%a1%a8%e7%9a%84jsp%e6%8e%a5%e5%8f%a3.shtml#comments</comments>
		<pubDate>Tue, 16 Aug 2011 06:50:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Java]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[table表]]></category>

		<category><![CDATA[Tokyo Cabinet]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1436</guid>
		<description><![CDATA[终于完成了Tokyo Cabinet的jsp接口，在tomcat下性能不是那么出众，看来性能还是得用c。
部署方法看上一偏配置说明。
代码 api.tar.gz
信息插入与修改：
$data['database'] = &#34;sunboyudata2&#34;;
$jsondata = array();
while($row = mysql_fetch_array($query,MYSQL_ASSOC)){
	$jsondata[] = $row;
}
$data['jsondata'] = json_encode($jsondata);
$url= http_build_query($data ); 
$postdate = array ( 
	'http' =&#62; array ( 
		'method' =&#62; 'POST', 
		'header'=&#62; &#34;Content-type: application/x-www-form-urlencoded\r\n&#34; . 
		&#34;Content-Length: &#34; . strlen($url) . &#34;\r\n&#34;, 
		'content' =&#62; $url
	), 
);
$postcontent = stream_context_create($postdate); 
$return= file_get_contents('http://192.168.138.29:8080/api.jsp', false, $postcontent );
查询：
http://192.168.138.29:8080/search.jsp?database=sunboyudata2&#038;query=fid:QCNUMEQ:1604&#038;skip=20000&#038;max=10
database:数据库文件名[无扩展名]
query:查询条件 每组查询条件三个部分 字段:规则:值  每组之间用&#124;分割
skip:记录起始
max:返回的记录条数
缺点：在频繁大数据量提交的时候，tomcat总是影响失败。性能没有预期那么好，tc需要优化。
]]></description>
			<content:encoded><![CDATA[<p>终于完成了Tokyo Cabinet的jsp接口，在tomcat下性能不是那么出众，看来性能还是得用c。</p>
<p>部署方法看上一偏配置说明。</p>
<p>代码 <a href='http://www.sunboyu.cn/upfiles/2011/08/apitar.gz'>api.tar.gz</a></p>
<p>信息插入与修改：</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">$data['database'] = &quot;sunboyudata2&quot;;</li>
<li>$jsondata = array();</li>
<li>while($row = mysql_fetch_array($query,MYSQL_ASSOC)){</li>
<li>	$jsondata[] = $row;</li>
<li>}</li>
<li>$data['jsondata'] = json_encode($jsondata);</li>
<li>$url= http_build_query($data ); </li>
<li>$postdate = array ( </li>
<li>	'http' =&gt; array ( </li>
<li>		'method' =&gt; 'POST', </li>
<li>		'header'=&gt; &quot;Content-type: application/x-www-form-urlencoded\r\n&quot; . </li>
<li>		&quot;Content-Length: &quot; . strlen($url) . &quot;\r\n&quot;, </li>
<li>		'content' =&gt; $url</li>
<li>	), </li>
<li>);</li>
<li>$postcontent = stream_context_create($postdate); </li>
<li>$return= file_get_contents('http://192.168.138.29:8080/api.jsp', false, $postcontent );</li></ol></div>
<p>查询：</p>
<p>http://192.168.138.29:8080/search.jsp?database=sunboyudata2&#038;query=fid:QCNUMEQ:1604&#038;skip=20000&#038;max=10</p>
<p>database:数据库文件名[无扩展名]<br />
query:查询条件 每组查询条件三个部分 字段:规则:值  每组之间用|分割<br />
skip:记录起始<br />
max:返回的记录条数</p>
<p>缺点：在频繁大数据量提交的时候，tomcat总是影响失败。性能没有预期那么好，tc需要优化。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2011/08/16/tokyo-cabinet-table%e8%a1%a8%e7%9a%84jsp%e6%8e%a5%e5%8f%a3.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>linux下tokyocabinet存储引擎java接口的配置</title>
		<link>http://www.sunboyu.cn/2011/08/12/linux%e4%b8%8btokyocabinet%e5%ad%98%e5%82%a8%e5%bc%95%e6%93%8ejava%e6%8e%a5%e5%8f%a3%e7%9a%84%e9%85%8d%e7%bd%ae.shtml</link>
		<comments>http://www.sunboyu.cn/2011/08/12/linux%e4%b8%8btokyocabinet%e5%ad%98%e5%82%a8%e5%bc%95%e6%93%8ejava%e6%8e%a5%e5%8f%a3%e7%9a%84%e9%85%8d%e7%bd%ae.shtml#comments</comments>
		<pubDate>Fri, 12 Aug 2011 07:01:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Java]]></category>

		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[api]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[tokyocabinet]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1432</guid>
		<description><![CDATA[tokyocabinet是一个性能极高的存储引擎，除支持传统的keyvalue存储外，还支持table表的存储，具体可以看这里 http://fallabs.com/tokyocabinet/spex-en.html#tctdbapi
使用tc常用的工具就是作者另外写的一个api：tt http://fallabs.com/tokyotyrant/  兼容memcached协议，非常好用和高效。
但这里我期望使用的是table表，它提供了C的接口，但没有php方便调用的的方式，所以张宴同学做了一个很方便的tcsql  http://blog.s135.com/tcsql/
因为我C的水平问题，一直没有写出稳定的操作接口，并且张宴同学tcsql的设计理念非常好，支持分布式的结构。
因此我改变了设计思路，并且使用我想对熟悉的java接口来做这个事情。
linux下配置过程：
环境装备：标准JDK环境
1、下载java api http://fallabs.com/tokyocabinet/javapkg/
2、解压后进入 tokyocabinet-java-1.24 目录
3、运行 ./configure &#8211;prefix=/opt/tcjava  &#038;&#038; make &#038;&#038; make install
4、环境变量配置：
这里是包含JDK的全部配置

export JAVA_HOME=/opt/jdk
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:/opt/tcjava/lib/tokyocabinet.jar:/opt/tcjava/lib/libjtokyocabinet.so:/opt/tcjava/lib/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/tcjava/lib/
export PATH=$PATH:$JAVA_HOME/bin
export JRE_HOME=$JAVA_HOME/jrei
JAVA_OPTS="-server"
JAVA_OPTS="$JAVA_OPTS -Xms64m -Xmx128m"
JAVA_OPTS="$JAVA_OPTS -D64 -Djava.library.path=/usr/local/lib/"

把以上代码增加到 /etc/profile 文件尾部，而后 source /etc/profile
配置完成，开始测试：
进入 tokyocabinet-java-1.24/example  执行 make
然后运行  java TCTDBEX  如果看到跟代码中预期的结果，则tc的javaapi在此服务器上安装成功。
]]></description>
			<content:encoded><![CDATA[<p>tokyocabinet是一个性能极高的存储引擎，除支持传统的keyvalue存储外，还支持table表的存储，具体可以看这里 http://fallabs.com/tokyocabinet/spex-en.html#tctdbapi</p>
<p>使用tc常用的工具就是作者另外写的一个api：tt http://fallabs.com/tokyotyrant/  兼容memcached协议，非常好用和高效。</p>
<p>但这里我期望使用的是table表，它提供了C的接口，但没有php方便调用的的方式，所以张宴同学做了一个很方便的tcsql  http://blog.s135.com/tcsql/</p>
<p>因为我C的水平问题，一直没有写出稳定的操作接口，并且张宴同学tcsql的设计理念非常好，支持分布式的结构。</p>
<p>因此我改变了设计思路，并且使用我想对熟悉的java接口来做这个事情。</p>
<p>linux下配置过程：</p>
<p>环境装备：标准JDK环境</p>
<p>1、下载java api http://fallabs.com/tokyocabinet/javapkg/</p>
<p>2、解压后进入 tokyocabinet-java-1.24 目录</p>
<p>3、运行 ./configure &#8211;prefix=/opt/tcjava  &#038;&#038; make &#038;&#038; make install</p>
<p>4、环境变量配置：<br />
这里是包含JDK的全部配置<br />
<code><br />
export JAVA_HOME=/opt/jdk<br />
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:/opt/tcjava/lib/tokyocabinet.jar:/opt/tcjava/lib/libjtokyocabinet.so:/opt/tcjava/lib/<br />
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/tcjava/lib/<br />
export PATH=$PATH:$JAVA_HOME/bin<br />
export JRE_HOME=$JAVA_HOME/jrei<br />
JAVA_OPTS="-server"<br />
JAVA_OPTS="$JAVA_OPTS -Xms64m -Xmx128m"<br />
JAVA_OPTS="$JAVA_OPTS -D64 -Djava.library.path=/usr/local/lib/"<br />
</code><br />
把以上代码增加到 /etc/profile 文件尾部，而后 source /etc/profile</p>
<p>配置完成，开始测试：</p>
<p>进入 tokyocabinet-java-1.24/example  执行 make</p>
<p>然后运行  java TCTDBEX  如果看到跟代码中预期的结果，则tc的javaapi在此服务器上安装成功。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2011/08/12/linux%e4%b8%8btokyocabinet%e5%ad%98%e5%82%a8%e5%bc%95%e6%93%8ejava%e6%8e%a5%e5%8f%a3%e7%9a%84%e9%85%8d%e7%bd%ae.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>使用PHP来生成二维码</title>
		<link>http://www.sunboyu.cn/2011/08/11/%e4%bd%bf%e7%94%a8php%e6%9d%a5%e7%94%9f%e6%88%90%e4%ba%8c%e7%bb%b4%e7%a0%81.shtml</link>
		<comments>http://www.sunboyu.cn/2011/08/11/%e4%bd%bf%e7%94%a8php%e6%9d%a5%e7%94%9f%e6%88%90%e4%ba%8c%e7%bb%b4%e7%a0%81.shtml#comments</comments>
		<pubDate>Thu, 11 Aug 2011 13:55:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[php]]></category>

		<category><![CDATA[二维码]]></category>

		<category><![CDATA[手机]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1430</guid>
		<description><![CDATA[二维码是什么？
看这里：百度百科：二维码
二维码我用的最多的就是利用android手机的二维码扫描功能扫描网址，当然这种方法还大量应用在货物标签，比如我们去超市结账的条码扫描。
二维码利用近距离的光线进行数据传输，打破了网络数据线的依赖，可以说是一种打破常规的非常方便的应用。尤其在各种设备并不那么兼容的情况下，用二维码交换少量信息是非常便利的。
二维码的算法是通用的，二维码PHP的生成，我发现了以下几种方式：
1、某日本作者写的PHP http://www.swetake.com/qr/qr_cgi.html
2、开源社区上的PHP程序 http://phpqrcode.sourceforge.net/
3、google提供的一个接口  http://code.google.com/intl/zh-CN/apis/chart/
这里我尝试了第二种方法：下载软件包后，使用里边的方法：QRcode::png
我写了个代码是这样：

require_once(APP_PATH.'/include/phpqrcode/qrlib.php');
QRcode::png("http://www.sunboyu.cn");

这样就可以输出二维码图形了，可以用手机尝试一下。
]]></description>
			<content:encoded><![CDATA[<p>二维码是什么？</p>
<p>看这里：<a href="http://baike.baidu.com/view/132241.htm" target="_blank">百度百科：二维码</a></p>
<p>二维码我用的最多的就是利用android手机的二维码扫描功能扫描网址，当然这种方法还大量应用在货物标签，比如我们去超市结账的条码扫描。</p>
<p>二维码利用近距离的光线进行数据传输，打破了网络数据线的依赖，可以说是一种打破常规的非常方便的应用。尤其在各种设备并不那么兼容的情况下，用二维码交换少量信息是非常便利的。</p>
<p>二维码的算法是通用的，二维码PHP的生成，我发现了以下几种方式：<br />
1、某日本作者写的PHP http://www.swetake.com/qr/qr_cgi.html<br />
2、开源社区上的PHP程序 http://phpqrcode.sourceforge.net/<br />
3、google提供的一个接口  http://code.google.com/intl/zh-CN/apis/chart/</p>
<p>这里我尝试了第二种方法：下载软件包后，使用里边的方法：QRcode::png</p>
<p>我写了个代码是这样：<br />
<code><br />
require_once(APP_PATH.'/include/phpqrcode/qrlib.php');<br />
QRcode::png("http://www.sunboyu.cn");<br />
</code><br />
这样就可以输出二维码图形了，可以用手机尝试一下。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2011/08/11/%e4%bd%bf%e7%94%a8php%e6%9d%a5%e7%94%9f%e6%88%90%e4%ba%8c%e7%bb%b4%e7%a0%81.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>搭建C开发环境的一个小shell，自动，得找软件包和配置文件模板</title>
		<link>http://www.sunboyu.cn/2011/08/06/%e6%90%ad%e5%bb%bac%e5%bc%80%e5%8f%91%e7%8e%af%e5%a2%83%e7%9a%84%e4%b8%80%e4%b8%aa%e5%b0%8fshell%ef%bc%8c%e8%87%aa%e5%8a%a8%ef%bc%8c%e5%be%97%e6%89%be%e8%bd%af%e4%bb%b6%e5%8c%85%e5%92%8c%e9%85%8d.shtml</link>
		<comments>http://www.sunboyu.cn/2011/08/06/%e6%90%ad%e5%bb%bac%e5%bc%80%e5%8f%91%e7%8e%af%e5%a2%83%e7%9a%84%e4%b8%80%e4%b8%aa%e5%b0%8fshell%ef%bc%8c%e8%87%aa%e5%8a%a8%ef%bc%8c%e5%be%97%e6%89%be%e8%bd%af%e4%bb%b6%e5%8c%85%e5%92%8c%e9%85%8d.shtml#comments</comments>
		<pubDate>Sat, 06 Aug 2011 07:42:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1426</guid>
		<description><![CDATA[develop
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.sunboyu.cn/upfiles/2011/08/develop.sh">develop</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2011/08/06/%e6%90%ad%e5%bb%bac%e5%bc%80%e5%8f%91%e7%8e%af%e5%a2%83%e7%9a%84%e4%b8%80%e4%b8%aa%e5%b0%8fshell%ef%bc%8c%e8%87%aa%e5%8a%a8%ef%bc%8c%e5%be%97%e6%89%be%e8%bd%af%e4%bb%b6%e5%8c%85%e5%92%8c%e9%85%8d.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>今天你微博了没有？</title>
		<link>http://www.sunboyu.cn/2011/07/28/%e4%bb%8a%e5%a4%a9%e4%bd%a0%e5%be%ae%e5%8d%9a%e4%ba%86%e6%b2%a1%e6%9c%89%ef%bc%9f.shtml</link>
		<comments>http://www.sunboyu.cn/2011/07/28/%e4%bb%8a%e5%a4%a9%e4%bd%a0%e5%be%ae%e5%8d%9a%e4%ba%86%e6%b2%a1%e6%9c%89%ef%bc%9f.shtml#comments</comments>
		<pubDate>Thu, 28 Jul 2011 06:50:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1424</guid>
		<description><![CDATA[看上边 ↑
]]></description>
			<content:encoded><![CDATA[<p>看上边 ↑</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2011/07/28/%e4%bb%8a%e5%a4%a9%e4%bd%a0%e5%be%ae%e5%8d%9a%e4%ba%86%e6%b2%a1%e6%9c%89%ef%bc%9f.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>android Activity之间传参</title>
		<link>http://www.sunboyu.cn/2011/07/26/android-activity%e4%b9%8b%e9%97%b4%e4%bc%a0%e5%8f%82.shtml</link>
		<comments>http://www.sunboyu.cn/2011/07/26/android-activity%e4%b9%8b%e9%97%b4%e4%bc%a0%e5%8f%82.shtml#comments</comments>
		<pubDate>Tue, 26 Jul 2011 05:40:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Java]]></category>

		<category><![CDATA[android]]></category>

		<category><![CDATA[传参]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1422</guid>
		<description><![CDATA[貌似跟网页不一样，没有get post了，但提供了这样的传参方式：
前一个页面

Intent intent = new Intent(IndexappActivity.this, LoginappActivity.class);
intent.putExtra("test", "这是来自MainActivity的数据。");
startActivity(intent);

接受页面

Bundle extras = getIntent().getExtras();
String data = null;
if(extras != null)
{
    data  = extras.getString("test");
}
setTitle( data);

还有其他数据格式，不过这种意境够我用了，结贴
]]></description>
			<content:encoded><![CDATA[<p>貌似跟网页不一样，没有get post了，但提供了这样的传参方式：</p>
<p>前一个页面<br />
<code><br />
Intent intent = new Intent(IndexappActivity.this, LoginappActivity.class);<br />
intent.putExtra("test", "这是来自MainActivity的数据。");<br />
startActivity(intent);<br />
</code></p>
<p>接受页面</p>
<p><code><br />
Bundle extras = getIntent().getExtras();<br />
String data = null;<br />
if(extras != null)<br />
{<br />
    data  = extras.getString("test");<br />
}<br />
setTitle( data);<br />
</code></p>
<p>还有其他数据格式，不过这种意境够我用了，结贴</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2011/07/26/android-activity%e4%b9%8b%e9%97%b4%e4%bc%a0%e5%8f%82.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>常用的Intent的URI及示例 (转)</title>
		<link>http://www.sunboyu.cn/2011/07/25/%e5%b8%b8%e7%94%a8%e7%9a%84intent%e7%9a%84uri%e5%8f%8a%e7%a4%ba%e4%be%8b-%e8%bd%ac.shtml</link>
		<comments>http://www.sunboyu.cn/2011/07/25/%e5%b8%b8%e7%94%a8%e7%9a%84intent%e7%9a%84uri%e5%8f%8a%e7%a4%ba%e4%be%8b-%e8%bd%ac.shtml#comments</comments>
		<pubDate>Mon, 25 Jul 2011 14:20:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Java]]></category>

		<category><![CDATA[android]]></category>

		<category><![CDATA[intent]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1420</guid>
		<description><![CDATA[以下是常用到的Intent的URI及其示例，包含了大部分应用中用到的共用Intent。
一、打开一个网页，类别是Intent.ACTION_VIEW
Uri uri = Uri.parse(“http://blog.3gstdy.com/”);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
二、打开地图并定位到一个点
Uri uri = Uri.parse(“geo:52.76,-79.0342″);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
三、打开拨号界面 ,类型是Intent.ACTION_DIAL
Uri uri = Uri.parse(“tel:10086″);
Intent intent = new Intent(Intent.ACTION_DIAL, uri);
四、直接拨打电话,与三不同的是，这个直接拨打电话，而不是打开拨号界面
Uri uri = Uri.parse(“tel:10086″);
Intent intent = new Intent(Intent.ACTION_CALL, uri);
五、卸载一个应用，Intent的类别是Intent.ACTION_DELETE
Uri uri = Uri.fromParts(“package”, “xxx”, null);
Intent intent = new Intent(Intent.ACTION_DELETE, uri);
六、安装应用程序,Intent的类别是Intent.ACTION_PACKAGE_ADDED
Uri uri = Uri.fromParts(“package”, “xxx”, null);
Intent intent = new Intent(Intent.ACTION_PACKAGE_ADDED, uri);
七、播放音频文件
Uri uri [...]]]></description>
			<content:encoded><![CDATA[<p>以下是常用到的Intent的URI及其示例，包含了大部分应用中用到的共用Intent。<br />
一、打开一个网页，类别是Intent.ACTION_VIEW<br />
Uri uri = Uri.parse(“http://blog.3gstdy.com/”);<br />
Intent intent = new Intent(Intent.ACTION_VIEW, uri);<br />
二、打开地图并定位到一个点<br />
Uri uri = Uri.parse(“geo:52.76,-79.0342″);<br />
Intent intent = new Intent(Intent.ACTION_VIEW, uri);</p>
<p>三、打开拨号界面 ,类型是Intent.ACTION_DIAL<br />
Uri uri = Uri.parse(“tel:10086″);<br />
Intent intent = new Intent(Intent.ACTION_DIAL, uri);<br />
四、直接拨打电话,与三不同的是，这个直接拨打电话，而不是打开拨号界面<br />
Uri uri = Uri.parse(“tel:10086″);<br />
Intent intent = new Intent(Intent.ACTION_CALL, uri);<br />
五、卸载一个应用，Intent的类别是Intent.ACTION_DELETE<br />
Uri uri = Uri.fromParts(“package”, “xxx”, null);<br />
Intent intent = new Intent(Intent.ACTION_DELETE, uri);<br />
六、安装应用程序,Intent的类别是Intent.ACTION_PACKAGE_ADDED<br />
Uri uri = Uri.fromParts(“package”, “xxx”, null);<br />
Intent intent = new Intent(Intent.ACTION_PACKAGE_ADDED, uri);<br />
七、播放音频文件<br />
Uri uri = Uri.parse(“file:///sdcard/download/everything.mp3″);<br />
Intent intent = new Intent(Intent.ACTION_VIEW, uri);<br />
intent.setType(“audio/mp3″);<br />
八、打开发邮件界面<br />
Uri uri= Uri.parse(“mailto:admin@3gstdy.com”);<br />
Intent intent = new Intent(Intent.ACTION_SENDTO, uri);<br />
九、发邮件,与八不同这里是将邮件发送出去，<br />
Intent intent = new Intent(Intent.ACTION_SEND);<br />
String[] tos = { “admin@3gstdy.com” };<br />
String[] ccs = { “webmaster@3gstdy.com” };<br />
intent.putExtra(Intent.EXTRA_EMAIL, tos);<br />
intent.putExtra(Intent.EXTRA_CC, ccs);<br />
intent.putExtra(Intent.EXTRA_TEXT, “I come from http://blog.3gstdy.com”);<br />
intent.putExtra(Intent.EXTRA_SUBJECT, “http://blog.3gstdy.com”);<br />
intent.setType(“message/rfc882″);<br />
Intent.createChooser(intent, “Choose Email Client”);<br />
//发送带附件的邮件<br />
Intent intent = new Intent(Intent.ACTION_SEND);<br />
intent.putExtra(Intent.EXTRA_SUBJECT, “The email subject text”);<br />
intent.putExtra(Intent.EXTRA_STREAM, “file:///sdcard/mysong.mp3″);<br />
intent.setType(“audio/mp3″);<br />
startActivity(Intent.createChooser(intent, “Choose Email Client”));<br />
十、发短信<br />
Uri uri= Uri.parse(“tel:10086″);<br />
Intent intent = new Intent(Intent.ACTION_VIEW, uri);<br />
intent.putExtra(“sms_body”, “I come from http://blog.3gstdy.com”);<br />
intent.setType(“vnd.android-dir/mms-sms”);<br />
十一、直接发邮件<br />
Uri uri= Uri.parse(“smsto://100861″);<br />
Intent intent = new Intent(Intent.ACTION_SENDTO, uri);<br />
intent.putExtra(“sms_body”, “3g android http://blog.3gstdy.com”);<br />
十二、发彩信<br />
Uri uri= Uri.parse(“content://media/external/images/media/23″);<br />
Intent intent = new Intent(Intent.ACTION_SEND);<br />
intent.putExtra(“sms_body”, “3g android http://blog.3gstdy.com”);<br />
intent.putExtra(Intent.EXTRA_STREAM, uri);<br />
intent.setType(“image/png”);<br />
十三、# Market 相关<br />
1 //寻找某个应用<br />
Uri uri = Uri.parse(“market://search?q=pname:pkg_name”);<br />
Intent it = new Intent(Intent.ACTION_VIEW, uri);<br />
startActivity(it);<br />
//where pkg_name is the full package path for an application<br />
2 //显示某个应用的相关信息<br />
Uri uri = Uri.parse(“market://details?id=app_id”);<br />
Intent it = new Intent(Intent.ACTION_VIEW, uri);<br />
startActivity(it);<br />
//where app_id is the application ID, find the ID<br />
//by clicking on your application on Market home<br />
//page, and notice the ID from the address bar<br />
十四、路径规划<br />
Uri uri = Uri.parse(“http://maps.google.com/maps?f=d&#038;saddr=startLat%20startLng&#038;daddr=endLat%20endLng&#038;hl=en”);<br />
Intent it = new Intent(Intent.ACTION_VIEW, uri);<br />
startActivity(it);</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2011/07/25/%e5%b8%b8%e7%94%a8%e7%9a%84intent%e7%9a%84uri%e5%8f%8a%e7%a4%ba%e4%be%8b-%e8%bd%ac.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>android点击返回按钮弹出的提示</title>
		<link>http://www.sunboyu.cn/2011/06/28/android%e7%82%b9%e5%87%bb%e8%bf%94%e5%9b%9e%e6%8c%89%e9%92%ae%e5%bc%b9%e5%87%ba%e7%9a%84%e6%8f%90%e7%a4%ba.shtml</link>
		<comments>http://www.sunboyu.cn/2011/06/28/android%e7%82%b9%e5%87%bb%e8%bf%94%e5%9b%9e%e6%8c%89%e9%92%ae%e5%bc%b9%e5%87%ba%e7%9a%84%e6%8f%90%e7%a4%ba.shtml#comments</comments>
		<pubDate>Tue, 28 Jun 2011 03:53:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Java]]></category>

		<category><![CDATA[alert]]></category>

		<category><![CDATA[android]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1418</guid>
		<description><![CDATA[
import android.view.KeyEvent;
import android.app.AlertDialog;
import android.content.DialogInterface;
@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
           if (keyCode == KeyEvent.KEYCODE_BACK &#038;&#038; event.getRepeatCount() == 0) {
        	   AlertDialog.Builder dlg=new AlertDialog.Builder(this);
       	   [...]]]></description>
			<content:encoded><![CDATA[<p><code><br />
import android.view.KeyEvent;<br />
import android.app.AlertDialog;<br />
import android.content.DialogInterface;<br />
@Override<br />
    public boolean onKeyDown(int keyCode, KeyEvent event) {</p>
<p>           if (keyCode == KeyEvent.KEYCODE_BACK &#038;&#038; event.getRepeatCount() == 0) {<br />
        	   AlertDialog.Builder dlg=new AlertDialog.Builder(this);<br />
       	       dlg.setTitle("Alert");<br />
       	       dlg.setMessage("退出?");<br />
       	       dlg.setPositiveButton("是", new DialogInterface.OnClickListener() {<br />
       	    	   public void onClick(DialogInterface dialog, int whichButton) {<br />
       	    	    setResult(RESULT_OK);<br />
       	    	    finish();<br />
       	    	   }<br />
       	    	});<br />
       	    	dlg.setNegativeButton("不", new DialogInterface.OnClickListener() {<br />
       	    	    public	void onClick(DialogInterface dialog, int whichButton) {</p>
<p>       	    	    }<br />
       	    	});<br />
       	       dlg.show();<br />
           }<br />
           return super.onKeyDown(keyCode, event);<br />
    }<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2011/06/28/android%e7%82%b9%e5%87%bb%e8%bf%94%e5%9b%9e%e6%8c%89%e9%92%ae%e5%bc%b9%e5%87%ba%e7%9a%84%e6%8f%90%e7%a4%ba.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>Android权限列表permission</title>
		<link>http://www.sunboyu.cn/2011/06/22/android%e6%9d%83%e9%99%90%e5%88%97%e8%a1%a8permission.shtml</link>
		<comments>http://www.sunboyu.cn/2011/06/22/android%e6%9d%83%e9%99%90%e5%88%97%e8%a1%a8permission.shtml#comments</comments>
		<pubDate>Wed, 22 Jun 2011 08:43:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[技术存档]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1416</guid>
		<description><![CDATA[android.permission.ACCESS_CHECKIN_PROPERTIES允许读写访问&#8221;properties&#8221;表在checkin数据库中，改值可以修改上传( Allows read/write access to the &#8220;properties&#8221; table in the checkin database, to change values that get uploaded)
android.permission.ACCESS_COARSE_LOCATION允许一个程序访问CellID或WiFi热点来获取粗略的位置(Allows an application to access coarse (e.g., Cell-ID, WiFi) location)
android.permission.ACCESS_FINE_LOCATION允许一个程序访问精良位置(如GPS) (Allows an application to access fine (e.g., GPS) location)
android.permission.ACCESS_LOCATION_EXTRA_COMMANDS允许应用程序访问额外的位置提供命令(Allows an application to access extra location provider commands)
android.permission.ACCESS_MOCK_LOCATION允许程序创建模拟位置提供用于测试(Allows an application to create mock location providers for testing)
android.permission.ACCESS_NETWORK_STATE允许程序访问有关GSM网络信息(Allows applications to [...]]]></description>
			<content:encoded><![CDATA[<p>android.permission.ACCESS_CHECKIN_PROPERTIES允许读写访问&#8221;properties&#8221;表在checkin数据库中，改值可以修改上传( Allows read/write access to the &#8220;properties&#8221; table in the checkin database, to change values that get uploaded)</p>
<p>android.permission.ACCESS_COARSE_LOCATION允许一个程序访问CellID或WiFi热点来获取粗略的位置(Allows an application to access coarse (e.g., Cell-ID, WiFi) location)</p>
<p>android.permission.ACCESS_FINE_LOCATION允许一个程序访问精良位置(如GPS) (Allows an application to access fine (e.g., GPS) location)</p>
<p>android.permission.ACCESS_LOCATION_EXTRA_COMMANDS允许应用程序访问额外的位置提供命令(Allows an application to access extra location provider commands)</p>
<p>android.permission.ACCESS_MOCK_LOCATION允许程序创建模拟位置提供用于测试(Allows an application to create mock location providers for testing)</p>
<p>android.permission.ACCESS_NETWORK_STATE允许程序访问有关GSM网络信息(Allows applications to access information about networks)</p>
<p>android.permission.ACCESS_SURFACE_FLINGER允许程序使用SurfaceFlinger底层特性(Allows an application to use SurfaceFlinger&#8217;s low level features)</p>
<p>android.permission.ACCESS_WIFI_STATE允许程序访问Wi-Fi网络状态信息(Allows applications to access information about Wi-Fi networks)</p>
<p>android.permission.ADD_SYSTEM_SERVICE允许程序发布系统级服务(Allows an application to publish system-level services).</p>
<p>android.permission.BATTERY_STATS允许程序更新手机电池统计信息(Allows an application to update the collected battery statistics)</p>
<p>android.permission.BLUETOOTH允许程序连接到已配对的蓝牙设备(Allows applications to connect to paired bluetooth devices)</p>
<p>android.permission.BLUETOOTH_ADMIN允许程序发现和配对蓝牙设备(Allows applications to discover and pair bluetooth devices)</p>
<p>android.permission.BRICK请求能够禁用设备(非常危险)(Required to be able to disable the device (very dangerous!).)</p>
<p>android.permission.BROADCAST_PACKAGE_REMOVED允许程序广播一个提示消息在一个应用程序包已经移除后(Allows an application to broadcast a notification that an application package has been removed)</p>
<p>android.permission.BROADCAST_STICKY.允许一个程序广播常用intents(Allows an application to broadcast sticky intents)</p>
<p>android.permission.CALL_PHONE允许一个程序初始化一个电话拨号不需通过拨号用户界面需要用户确认(Allows an application to initiate a phone call without going through the Dialer user interface for the user to confirm the call being placed.)</p>
<p>android.permission.CALL_PRIVILEGED允许一个程序拨打任何号码，包含紧急号码无需通过拨号用户界面需要用户确认(Allows an application to call any phone number, including emergency numbers, without going through the Dialer user interface for the user to confirm the call being placed)</p>
<p>android.permission.CAMERA请求访问使用照相设备(Required to be able to access the camera device. )</p>
<p>android.permission.CHANGE_COMPONENT_ENABLED_STATE允许一个程序是否改变一个组件或其他的启用或禁用(Allows an application to change whether an application component (other than its own) is enabled or not. )</p>
<p>android.permission.CHANGE_CONFIGURATION允许一个程序修改当前设置，如本地化(Allows an application to modify the current configuration, such as locale. )</p>
<p>android.permission.CHANGE_NETWORK_STATE允许程序改变网络连接状态(Allows applications to change network connectivity state)</p>
<p>android.permission.CHANGE_WIFI_STATE允许程序改变Wi-Fi连接状态(Allows applications to change Wi-Fi connectivity state)</p>
<p>android.permission.CLEAR_APP_CACHE允许一个程序清楚缓存从所有安装的程序在设备中(Allows an application to clear the caches of all installed applications on the device. )</p>
<p>android.permission.CLEAR_APP_USER_DATA允许一个程序清除用户设置(Allows an application to clear user data)</p>
<p>android.permission.CONTROL_LOCATION_UPDATES允许启用禁止位置更新提示从无线模块(Allows enabling/disabling location update notifications from the radio. )</p>
<p>android.permission.DELETE_CACHE_FILES允许程序删除缓存文件(Allows an application to delete cache files)</p>
<p>android.permission.DELETE_PACKAGES允许一个程序删除包(Allows an application to delete packages)</p>
<p>android.permission.DEVICE_POWER允许访问底层电源管理(Allows low-level access to power management)</p>
<p>android.permission.DIAGNOSTIC允许程序RW诊断资源(Allows applications to RW to diagnostic resources. )</p>
<p>android.permission.DISABLE_KEYGUARD允许程序禁用键盘锁(Allows applications to disable the keyguard )</p>
<p>android.permission.DUMP允许程序返回状态抓取信息从系统服务(Allows an application to retrieve state dump information from system services.)</p>
<p>android.permission.EXPAND_STATUS_BAR允许一个程序扩展收缩在状态栏,Android开发网提示应该是一个类似Windows Mobile中的托盘程序(Allows an application to expand or collapse the status bar. )</p>
<p>android.permission.FACTORY_TEST作为一个工厂测试程序，运行在root用户(Run as a manufacturer test application, running as the root user. )</p>
<p>android.permission.FLASHLIGHT访问闪光灯,Android开发网提示HTC Dream不包含闪光灯(Allows access to the flashlight )</p>
<p>android.permission.FORCE_BACK允许程序强行一个后退操作是否在顶层activities(Allows an application to force a BACK operation on whatever is the top activity. )</p>
<p>android.permission.FOTA_UPDATE暂时不了解这是做什么使用的，Android开发网分析可能是一个预留权限.</p>
<p>android.permission.GET_ACCOUNTS访问一个帐户列表在Accounts Service中(Allows access to the list of accounts in the Accounts Service)</p>
<p>android.permission.GET_PACKAGE_SIZE允许一个程序获取任何package占用空间容量(Allows an application to find out the space used by any package. )</p>
<p>android.permission.GET_TASKS允许一个程序获取信息有关当前或最近运行的任务，一个缩略的任务状态，是否活动等等(Allows an application to get information about the currently or recently running tasks: a thumbnail representation of the tasks, what activities are running in it, etc.)</p>
<p>android.permission.HARDWARE_TEST允许访问硬件(Allows access to hardware peripherals. )</p>
<p>android.permission.INJECT_EVENTS允许一个程序截获用户事件如按键、触摸、轨迹球等等到一个时间流，Android开发网提醒算是hook技术吧(Allows an application to inject user events (keys, touch, trackball) into the event stream and deliver them to ANY window.)</p>
<p>android.permission.INSTALL_PACKAGES允许一个程序安装packages(Allows an application to install packages. )</p>
<p>android.permission.INTERNAL_SYSTEM_WINDOW允许打开窗口使用系统用户界面(Allows an application to open windows that are for use by parts of the system user interface. )</p>
<p>android.permission.INTERNET允许程序打开网络套接字(Allows applications to open network sockets)</p>
<p>android.permission.MANAGE_APP_TOKENS允许程序管理(创建、催后、 z-order默认向z轴推移)程序引用在窗口管理器中(Allows an application to manage (create, destroy, Z-order) application tokens in the window manager. )</p>
<p>android.permission.MASTER_CLEAR目前还没有明确的解释，Android开发网分析可能是清除一切数据，类似硬格机</p>
<p>android.permission.MODIFY_AUDIO_SETTINGS允许程序修改全局音频设置(Allows an application to modify global audio settings)</p>
<p>android.permission.MODIFY_PHONE_STATE允许修改话机状态，如电源，人机接口等(Allows modification of the telephony state - power on, mmi, etc. )</p>
<p>android.permission.MOUNT_UNMOUNT_FILESYSTEMS允许挂载和反挂载文件系统可移动存储(Allows mounting and unmounting file systems for removable storage. )</p>
<p>android.permission.PERSISTENT_ACTIVITY允许一个程序设置他的activities显示(Allow an application to make its activities persistent. )</p>
<p>android.permission.PROCESS_OUTGOING_CALLS允许程序监视、修改有关播出电话(Allows an application to monitor, modify, or abort outgoing calls)</p>
<p>android.permission.READ_CALENDAR允许程序读取用户日历数据(Allows an application to read the user&#8217;s calendar data.)</p>
<p>android.permission.READ_CONTACTS允许程序读取用户联系人数据(Allows an application to read the user&#8217;s contacts data.)</p>
<p>android.permission.READ_FRAME_BUFFER允许程序屏幕波或和更多常规的访问帧缓冲数据(Allows an application to take screen shots and more generally get access to the frame buffer data)</p>
<p>android.permission.READ_INPUT_STATE允许程序返回当前按键状态(Allows an application to retrieve the current state of keys and switches. )</p>
<p>android.permission.READ_LOGS允许程序读取底层系统日志文件(Allows an application to read the low-level system log files. )</p>
<p>android.permission.READ_OWNER_DATA允许程序读取所有者数据(Allows an application to read the owner&#8217;s data)</p>
<p>android.permission.READ_SMS允许程序读取短信息(Allows an application to read SMS messages.)</p>
<p>android.permission.READ_SYNC_SETTINGS允许程序读取同步设置(Allows applications to read the sync settings)</p>
<p>android.permission.READ_SYNC_STATS允许程序读取同步状态(Allows applications to read the sync stats)</p>
<p>android.permission.REBOOT请求能够重新启动设备(Required to be able to reboot the device. )</p>
<p>android.permission.RECEIVE_BOOT_COMPLETED允许一个程序接收到 ACTION_BOOT_COMPLETED广播在系统完成启动(Allows an application to receive the ACTION_BOOT_COMPLETED that is broadcast after the system finishes booting. )</p>
<p>android.permission.RECEIVE_MMS允许一个程序监控将收到MMS彩信,记录或处理(Allows an application to monitor incoming MMS messages, to record or perform processing on them. )</p>
<p>android.permission.RECEIVE_SMS允许程序监控一个将收到短信息，记录或处理(Allows an application to monitor incoming SMS messages, to record or perform processing on them.)</p>
<p>android.permission.RECEIVE_WAP_PUSH允许程序监控将收到WAP PUSH信息(Allows an application to monitor incoming WAP push messages. )</p>
<p>android.permission.RECORD_AUDIO允许程序录制音频(Allows an application to record audio)</p>
<p>android.permission.REORDER_TASKS允许程序改变Z轴排列任务(Allows an application to change the Z-order of tasks)</p>
<p>android.permission.RESTART_PACKAGES允许程序重新启动其他程序(Allows an application to restart other applications)</p>
<p>android.permission.SEND_SMS允许程序发送SMS短信(Allows an application to send SMS messages)</p>
<p>android.permission.SET_ACTIVITY_WATCHER允许程序监控或控制activities已经启动全局系统中Allows an application to watch and control how activities are started globally in the system.</p>
<p>android.permission.SET_ALWAYS_FINISH允许程序控制是否活动间接完成在处于后台时Allows an application to control whether activities are immediately finished when put in the background.</p>
<p>android.permission.SET_ANIMATION_SCALE修改全局信息比例(Modify the global animation scaling factor.)</p>
<p>android.permission.SET_DEBUG_APP配置一个程序用于调试(Configure an application for debugging.)</p>
<p>android.permission.SET_ORIENTATION允许底层访问设置屏幕方向和实际旋转(Allows low-level access to setting the orientation (actually rotation) of the screen.)</p>
<p>android.permission.SET_PREFERRED_APPLICATIONS允许一个程序修改列表参数PackageManager.addPackageToPreferred() 和PackageManager.removePackageFromPreferred()方法(Allows an application to modify the list of preferred applications with the PackageManager.addPackageToPreferred() and PackageManager.removePackageFromPreferred() methods.)</p>
<p>android.permission.SET_PROCESS_FOREGROUND允许程序当前运行程序强行到前台(Allows an application to force any currently running process to be in the foreground.)</p>
<p>android.permission.SET_PROCESS_LIMIT允许设置最大的运行进程数量(Allows an application to set the maximum number of (not needed) application processes that can be running. )</p>
<p>android.permission.SET_TIME_ZONE允许程序设置时间区域(Allows applications to set the system time zone)</p>
<p>android.permission.SET_WALLPAPER允许程序设置壁纸(Allows applications to set the wallpaper )</p>
<p>android.permission.SET_WALLPAPER_HINTS允许程序设置壁纸hits(Allows applications to set the wallpaper hints)</p>
<p>android.permission.SIGNAL_PERSISTENT_PROCESSES允许程序请求发送信号到所有显示的进程中(Allow an application to request that a signal be sent to all persistent processes)</p>
<p>android.permission.STATUS_BAR允许程序打开、关闭或禁用状态栏及图标Allows an application to open, close, or disable the status bar and its icons.</p>
<p>android.permission.SUBSCRIBED_FEEDS_READ允许一个程序访问订阅RSS Feed内容提供(Allows an application to allow access the subscribed feeds ContentProvider. )</p>
<p>android.permission.SUBSCRIBED_FEEDS_WRITE系统暂时保留改设置,Android开发网认为未来版本会加入该功能。</p>
<p>android.permission.SYSTEM_ALERT_WINDOW允许一个程序打开窗口使用 TYPE_SYSTEM_ALERT，显示在其他所有程序的顶层(Allows an application to open windows using the type TYPE_SYSTEM_ALERT, shown on top of all other applications. )</p>
<p>android.permission.VIBRATE允许访问振动设备(Allows access to the vibrator)</p>
<p>android.permission.WAKE_LOCK允许使用PowerManager的 WakeLocks保持进程在休眠时从屏幕消失( Allows using PowerManager WakeLocks to keep processor from sleeping or screen from dimming)</p>
<p>android.permission.WRITE_APN_SETTINGS允许程序写入API设置(Allows applications to write the apn settings)</p>
<p>android.permission.WRITE_CALENDAR允许一个程序写入但不读取用户日历数据(Allows an application to write (but not read) the user&#8217;s calendar data. )</p>
<p>android.permission.WRITE_CONTACTS允许程序写入但不读取用户联系人数据(Allows an application to write (but not read) the user&#8217;s contacts data. )</p>
<p>android.permission.WRITE_GSERVICES允许程序修改Google服务地图(Allows an application to modify the Google service map. )</p>
<p>android.permission.WRITE_OWNER_DATA允许一个程序写入但不读取所有者数据(Allows an application to write (but not read) the owner&#8217;s data.)</p>
<p>android.permission.WRITE_SETTINGS允许程序读取或写入系统设置(Allows an application to read or write the system settings. )</p>
<p>android.permission.WRITE_SMS允许程序写短信(Allows an application to write SMS messages)</p>
<p>android.permission.WRITE_SYNC_SETTINGS允许程序写入同步设置(Allows applications to write the sync settings)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2011/06/22/android%e6%9d%83%e9%99%90%e5%88%97%e8%a1%a8permission.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>新浪微博产品的部分功能分析</title>
		<link>http://www.sunboyu.cn/2011/05/23/%e6%96%b0%e6%b5%aa%e5%be%ae%e5%8d%9a%e4%ba%a7%e5%93%81%e7%9a%84%e9%83%a8%e5%88%86%e5%8a%9f%e8%83%bd%e5%88%86%e6%9e%90.shtml</link>
		<comments>http://www.sunboyu.cn/2011/05/23/%e6%96%b0%e6%b5%aa%e5%be%ae%e5%8d%9a%e4%ba%a7%e5%93%81%e7%9a%84%e9%83%a8%e5%88%86%e5%8a%9f%e8%83%bd%e5%88%86%e6%9e%90.shtml#comments</comments>
		<pubDate>Mon, 23 May 2011 15:30:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[相当拍砖]]></category>

		<category><![CDATA[微博]]></category>

		<category><![CDATA[新浪]]></category>

		<category><![CDATA[社区游戏化]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1413</guid>
		<description><![CDATA[最近比较关注新浪微博，虽然我使用比较多的是qq微博，微博也是社区的一个变形。
早在博客流行的时候，我跟同事们讨论了社区的形态：以主题分类为根的公告板，到以用户为根的博客。从以用户关系为根的sns，到以简单内容为根的微博。社区离开不以下几个元素：人、内容，在内容上构建话题，话题分类，在人上构建关系。
新浪微博以人的内容为主体，以话题为聚合，以新的内容展示方式创造了一个全新的社区，社区的特点是消息的传递更佳迅速，消息的传递途径以人的关系为基础。
基础内容和用户关系使这个社区异常活跃，但在微博发展中，微博也衍用了传统社区的一些功能。
排行榜、热门话题、热门标签是内容人工[或者程序]整理的一个关键词聚合页面，通过人工[或者程序]的方式归纳出热门的话题词汇，可方便用户关注整站最热话题。
名人堂、名人/草根/达人排行榜则是以用户不同形势的行为为依据进行归档排序，使用户可以找到社区内的活跃分子，同时也作为了社区潮流的风向标。
我最关注的是其娱乐功能：勋章功能。勋章类似mmorPG游戏的任务系统，用户通过完成任务取得勋章。而勋章则非常类似成就系统，熟悉魔兽世界的玩家对此应该非常熟悉。
跟很多社区系统一样，新浪微博开放了api功能，使得更多的应用进入了社区，包括很多游戏功能。
当今社区已经不单是信息的聚合平台，更多的功能会使其拥有娱乐的性质，即我们常说的”社区游戏化“；
]]></description>
			<content:encoded><![CDATA[<p>最近比较关注新浪微博，虽然我使用比较多的是qq微博，微博也是社区的一个变形。</p>
<p>早在博客流行的时候，我跟同事们讨论了社区的形态：以主题分类为根的公告板，到以用户为根的博客。从以用户关系为根的sns，到以简单内容为根的微博。社区离开不以下几个元素：人、内容，在内容上构建话题，话题分类，在人上构建关系。</p>
<p>新浪微博以人的内容为主体，以话题为聚合，以新的内容展示方式创造了一个全新的社区，社区的特点是消息的传递更佳迅速，消息的传递途径以人的关系为基础。</p>
<p>基础内容和用户关系使这个社区异常活跃，但在微博发展中，微博也衍用了传统社区的一些功能。</p>
<p>排行榜、热门话题、热门标签是内容人工[或者程序]整理的一个关键词聚合页面，通过人工[或者程序]的方式归纳出热门的话题词汇，可方便用户关注整站最热话题。</p>
<p>名人堂、名人/草根/达人排行榜则是以用户不同形势的行为为依据进行归档排序，使用户可以找到社区内的活跃分子，同时也作为了社区潮流的风向标。</p>
<p>我最关注的是其娱乐功能：勋章功能。勋章类似mmorPG游戏的任务系统，用户通过完成任务取得勋章。而勋章则非常类似成就系统，熟悉魔兽世界的玩家对此应该非常熟悉。</p>
<p>跟很多社区系统一样，新浪微博开放了api功能，使得更多的应用进入了社区，包括很多游戏功能。</p>
<p>当今社区已经不单是信息的聚合平台，更多的功能会使其拥有娱乐的性质，即我们常说的”社区游戏化“；</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2011/05/23/%e6%96%b0%e6%b5%aa%e5%be%ae%e5%8d%9a%e4%ba%a7%e5%93%81%e7%9a%84%e9%83%a8%e5%88%86%e5%8a%9f%e8%83%bd%e5%88%86%e6%9e%90.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>easyui 在线演示</title>
		<link>http://www.sunboyu.cn/2011/05/13/easyui-%e5%9c%a8%e7%ba%bf%e6%bc%94%e7%a4%ba.shtml</link>
		<comments>http://www.sunboyu.cn/2011/05/13/easyui-%e5%9c%a8%e7%ba%bf%e6%bc%94%e7%a4%ba.shtml#comments</comments>
		<pubDate>Fri, 13 May 2011 02:19:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[相当拍砖]]></category>

		<category><![CDATA[纯属蛋疼]]></category>

		<category><![CDATA[demo]]></category>

		<category><![CDATA[easyui]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1410</guid>
		<description><![CDATA[easyui不如extjs，有在线演示，我找了很久， 没找到一个好用的演示，自己顺手做了一个，希望大家喜欢。
http://www.sunboyu.cn/easyui-1.2.3/index.html
]]></description>
			<content:encoded><![CDATA[<p>easyui不如extjs，有在线演示，我找了很久， 没找到一个好用的演示，自己顺手做了一个，希望大家喜欢。</p>
<p><a href="http://www.sunboyu.cn/easyui-1.2.3/index.html">http://www.sunboyu.cn/easyui-1.2.3/index.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2011/05/13/easyui-%e5%9c%a8%e7%ba%bf%e6%bc%94%e7%a4%ba.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>绯闻是如何产生的-也说营销</title>
		<link>http://www.sunboyu.cn/2011/05/09/%e7%bb%af%e9%97%bb%e6%98%af%e5%a6%82%e4%bd%95%e4%ba%a7%e7%94%9f%e7%9a%84-%e4%b9%9f%e8%af%b4%e8%90%a5%e9%94%80.shtml</link>
		<comments>http://www.sunboyu.cn/2011/05/09/%e7%bb%af%e9%97%bb%e6%98%af%e5%a6%82%e4%bd%95%e4%ba%a7%e7%94%9f%e7%9a%84-%e4%b9%9f%e8%af%b4%e8%90%a5%e9%94%80.shtml#comments</comments>
		<pubDate>Mon, 09 May 2011 09:37:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1407</guid>
		<description><![CDATA[查看我的简历
五分钟写了个小玩意，希望大家喜欢
]]></description>
			<content:encoded><![CDATA[<p><a href="http://sunboyu.cn/peixun.php?name=%CB%EF%B2%A9%D3%EE&#038;sch=%CB%B9%CC%B9%B8%A3%B4%F3%D1%A7&#038;company=Google&#038;script=ASP">查看我的简历</a></p>
<p>五分钟写了个小玩意，希望大家喜欢</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2011/05/09/%e7%bb%af%e9%97%bb%e6%98%af%e5%a6%82%e4%bd%95%e4%ba%a7%e7%94%9f%e7%9a%84-%e4%b9%9f%e8%af%b4%e8%90%a5%e9%94%80.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>php和mysql guid的应用</title>
		<link>http://www.sunboyu.cn/2011/04/24/php%e5%92%8cmysql-guid%e7%9a%84%e5%ba%94%e7%94%a8.shtml</link>
		<comments>http://www.sunboyu.cn/2011/04/24/php%e5%92%8cmysql-guid%e7%9a%84%e5%ba%94%e7%94%a8.shtml#comments</comments>
		<pubDate>Sun, 24 Apr 2011 11:00:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[MYSQL]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1405</guid>
		<description><![CDATA[
　　GUID： 即Globally Unique Identifier（全球唯一标识符） 也称作 UUID(Universally Unique IDentifier) 。 GUID是一个通过特定算法产生的二进制长度为128位的数字标识符，用于指示产品的唯一性。GUID 主要用于在拥有多个节点、多台计算机的网络或系统中，分配必须具有唯一性的标识符。
　　在 Windows 平台上，GUID 广泛应用于微软的产品中，用于标识如如注册表项、类及接口标识、数据库、系统目录等对象。

php中并没有标准的guid，只是有个函数 uniqid() 生成唯一id。而在mysql中有函数生成guid：SELECT UUID() 
]]></description>
			<content:encoded><![CDATA[<blockquote><p>
　　GUID： 即Globally Unique Identifier（全球唯一标识符） 也称作 UUID(Universally Unique IDentifier) 。 GUID是一个通过特定算法产生的二进制长度为128位的数字标识符，用于指示产品的唯一性。GUID 主要用于在拥有多个节点、多台计算机的网络或系统中，分配必须具有唯一性的标识符。<br />
　　在 Windows 平台上，GUID 广泛应用于微软的产品中，用于标识如如注册表项、类及接口标识、数据库、系统目录等对象。
</p></blockquote>
<p>php中并没有标准的guid，只是有个函数 uniqid() 生成唯一id。而在mysql中有函数生成guid：SELECT UUID() </p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2011/04/24/php%e5%92%8cmysql-guid%e7%9a%84%e5%ba%94%e7%94%a8.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>兼容ie678 ff chrome的浮动层控制</title>
		<link>http://www.sunboyu.cn/2011/04/23/%e5%85%bc%e5%ae%b9ie678-ff-chrome%e7%9a%84%e6%b5%ae%e5%8a%a8%e5%b1%82%e6%8e%a7%e5%88%b6.shtml</link>
		<comments>http://www.sunboyu.cn/2011/04/23/%e5%85%bc%e5%ae%b9ie678-ff-chrome%e7%9a%84%e6%b5%ae%e5%8a%a8%e5%b1%82%e6%8e%a7%e5%88%b6.shtml#comments</comments>
		<pubDate>Sat, 23 Apr 2011 10:38:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1403</guid>
		<description><![CDATA[经过测试组严格测试的，其他浏览器还不清楚,依赖jquery
if(typeof document.all !== &#34;undefined&#34;) {&#160; &#160;//IE
&#160;&#160; &#160;var left&#160; &#160; = document.documentElement.scrollLeft;
&#160;&#160; &#160;var top&#160; &#160; &#160;= document.documentElement.scrollTop;
&#160;&#160; &#160;drag_x = event.clientX;
&#160;&#160; &#160;drag_y = event.clientY
&#160;&#160; &#160;
} else {&#160; &#160; //FF,Chrome,Opera,Safari
&#160;&#160; &#160;var left&#160; &#160; = document.documentElement.offsetLeft;
&#160;&#160; &#160;var top&#160; &#160; &#160;= document.documentElement.offsetTop;
&#160;&#160; &#160;drag_x = e.pageX;
&#160;&#160; &#160;drag_y = e.pageY;
}
var tipsDiv = '&#60;div class=&#34;tipsClass&#34;&#62;&#60;img src=&#34;http://pic.xoyo.com/zt/rt/mapdesign/load.gif&#34; /&#62;&#60;/div&#62;';
$( 'body' ).append( tipsDiv );
$( 'div.tipsClass' ).css({
'top' [...]]]></description>
			<content:encoded><![CDATA[<p>经过测试组严格测试的，其他浏览器还不清楚,依赖jquery</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">if(typeof document.all !== &quot;undefined&quot;) {&nbsp; &nbsp;//IE</li>
<li>&nbsp;&nbsp; &nbsp;var left&nbsp; &nbsp; = document.documentElement.scrollLeft;</li>
<li>&nbsp;&nbsp; &nbsp;var top&nbsp; &nbsp; &nbsp;= document.documentElement.scrollTop;</li>
<li>&nbsp;&nbsp; &nbsp;drag_x = event.clientX;</li>
<li>&nbsp;&nbsp; &nbsp;drag_y = event.clientY</li>
<li>&nbsp;&nbsp; &nbsp;</li>
<li>} else {&nbsp; &nbsp; //FF,Chrome,Opera,Safari</li>
<li>&nbsp;&nbsp; &nbsp;var left&nbsp; &nbsp; = document.documentElement.offsetLeft;</li>
<li>&nbsp;&nbsp; &nbsp;var top&nbsp; &nbsp; &nbsp;= document.documentElement.offsetTop;</li>
<li>&nbsp;&nbsp; &nbsp;drag_x = e.pageX;</li>
<li>&nbsp;&nbsp; &nbsp;drag_y = e.pageY;</li>
<li>}</li>
<li>var tipsDiv = '&lt;div class=&quot;tipsClass&quot;&gt;&lt;img src=&quot;http://pic.xoyo.com/zt/rt/mapdesign/load.gif&quot; /&gt;&lt;/div&gt;';</li>
<li>$( 'body' ).append( tipsDiv );</li>
<li>$( 'div.tipsClass' ).css({</li>
<li>'top' : (top+drag_y) + 'px',</li>
<li>'left' : (left+drag_x) + 'px', </li>
<li>'position' : 'absolute',</li>
<li>'padding' : '3px 5px',</li>
<li>'background': '#8FBC8F',</li>
<li>'font-size' : 12 + 'px',</li>
<li>'margin' : '0 auto',</li>
<li>'text-align': 'center',</li>
<li>'width' : 'auto',</li>
<li>'color' : '#fff',</li>
<li>'opacity' : '0.8'</li>
<li>}).show();</li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2011/04/23/%e5%85%bc%e5%ae%b9ie678-ff-chrome%e7%9a%84%e6%b5%ae%e5%8a%a8%e5%b1%82%e6%8e%a7%e5%88%b6.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>狼</title>
		<link>http://www.sunboyu.cn/2011/04/10/%e7%8b%bc.shtml</link>
		<comments>http://www.sunboyu.cn/2011/04/10/%e7%8b%bc.shtml#comments</comments>
		<pubDate>Sun, 10 Apr 2011 15:12:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1401</guid>
		<description><![CDATA[高亢的号角是集结的信号
黑夜里，一齐冲向目标
团结是信仰
即时面对猎人的枪
&#8211;应用文写作课堂随笔
]]></description>
			<content:encoded><![CDATA[<p>高亢的号角是集结的信号</p>
<p>黑夜里，一齐冲向目标</p>
<p>团结是信仰</p>
<p>即时面对猎人的枪</p>
<p>&#8211;应用文写作课堂随笔</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2011/04/10/%e7%8b%bc.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>mysql_udf_tc 未测试发布版</title>
		<link>http://www.sunboyu.cn/2011/03/18/mysql_udf_tc-%e6%9c%aa%e6%b5%8b%e8%af%95%e5%8f%91%e5%b8%83%e7%89%88.shtml</link>
		<comments>http://www.sunboyu.cn/2011/03/18/mysql_udf_tc-%e6%9c%aa%e6%b5%8b%e8%af%95%e5%8f%91%e5%b8%83%e7%89%88.shtml#comments</comments>
		<pubDate>Fri, 18 Mar 2011 03:11:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[mysql]]></category>

		<category><![CDATA[tc]]></category>

		<category><![CDATA[udf]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1397</guid>
		<description><![CDATA[受伤了，没时间折腾，先发布未测试版，欢迎各种bug提交，康复后继续
mysql数据同步到tc的table表，直接写文件，php读文件查询。
看手册，不解释。
有问题加qq 176300676
#ifdef STANDARD
#include &#60;stdlib .h&#62;
#include &#60;stdio .h&#62;
#include &#60;string .h&#62;
#ifdef __WIN__
typedef unsigned __int64 ulonglong;	/* Microsofts 64 bit types */
typedef __int64 longlong;
#else
typedef unsigned long long ulonglong;
typedef long long longlong;
#endif /*__WIN__*/
#else
#include &#60;my_global .h&#62;
#include &#60;my_sys .h&#62;
#include &#60;m_string .h&#62;
#endif
#include &#60;mysql .h&#62;
#include &#60;ctype .h&#62;
&#160;
#include &#60;float .h&#62;
&#160;
&#160;
#include &#60;tcutil .h&#62;
#include &#60;tctdb .h&#62;
#include &#60;stdlib .h&#62;
#include &#60;stdbool .h&#62;
#include &#60;stdint .h&#62;
&#160;
&#160;
&#160;
#ifdef HAVE_DLOPEN
&#160;
/*&#160; &#160;TC_CREATE&#160; &#160; */
my_bool tc_create_init(UDF_INIT [...]]]></description>
			<content:encoded><![CDATA[<p>受伤了，没时间折腾，先发布未测试版，欢迎各种bug提交，康复后继续</p>
<p>mysql数据同步到tc的table表，直接写文件，php读文件查询。</p>
<p>看手册，不解释。</p>
<p>有问题加qq 176300676</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">#ifdef STANDARD</li>
<li>#include &lt;stdlib .h&gt;</li>
<li>#include &lt;stdio .h&gt;</li>
<li>#include &lt;string .h&gt;</li>
<li>#ifdef __WIN__</li>
<li>typedef unsigned __int64 ulonglong;	/* Microsofts 64 bit types */</li>
<li>typedef __int64 longlong;</li>
<li>#else</li>
<li>typedef unsigned long long ulonglong;</li>
<li>typedef long long longlong;</li>
<li>#endif /*__WIN__*/</li>
<li>#else</li>
<li>#include &lt;my_global .h&gt;</li>
<li>#include &lt;my_sys .h&gt;</li>
<li>#include &lt;m_string .h&gt;</li>
<li>#endif</li>
<li>#include &lt;mysql .h&gt;</li>
<li>#include &lt;ctype .h&gt;</li>
<li>&nbsp;</li>
<li>#include &lt;float .h&gt;</li>
<li>&nbsp;</li>
<li>&nbsp;</li>
<li>#include &lt;tcutil .h&gt;</li>
<li>#include &lt;tctdb .h&gt;</li>
<li>#include &lt;stdlib .h&gt;</li>
<li>#include &lt;stdbool .h&gt;</li>
<li>#include &lt;stdint .h&gt;</li>
<li>&nbsp;</li>
<li>&nbsp;</li>
<li>&nbsp;</li>
<li>#ifdef HAVE_DLOPEN</li>
<li>&nbsp;</li>
<li>/*&nbsp; &nbsp;TC_CREATE&nbsp; &nbsp; */</li>
<li>my_bool tc_create_init(UDF_INIT *initid, UDF_ARGS *args, char *message)</li>
<li>{</li>
<li>	return 0;</li>
<li>}</li>
<li>&nbsp;</li>
<li>void tc_create_deinit(UDF_INIT *initid)</li>
<li>{</li>
<li>}</li>
<li>&nbsp;</li>
<li>char * tc_create(UDF_INIT *initid, UDF_ARGS *args, char *result, unsigned long *length, char *is_null, char *error)</li>
<li>{</li>
<li>	TCTDB *tdb;</li>
<li>	int ecode;</li>
<li>&nbsp;&nbsp; &nbsp;char *errormsg;</li>
<li>	char *tcfile;</li>
<li>	tdb = tctdbnew();</li>
<li>&nbsp;</li>
<li>	tcfile = args-&gt;args[0];</li>
<li>&nbsp;</li>
<li>&nbsp;&nbsp; &nbsp;/* open the database */</li>
<li>&nbsp;&nbsp; &nbsp;if(!tctdbopen(tdb, tcfile, TDBOWRITER | TDBOCREAT))</li>
<li>	{</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;ecode = tctdbecode(tdb);</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;sprintf(errormsg, &quot;error: %s\n&quot;, tctdberrmsg(ecode));</li>
<li>&nbsp;</li>
<li>&nbsp;&nbsp; &nbsp;}</li>
<li>	else</li>
<li>	{</li>
<li>		sprintf(errormsg, &quot;OK&quot;);</li>
<li>	}</li>
<li>	*length = strlen(errormsg);</li>
<li>	return errormsg;</li>
<li>}</li>
<li>&nbsp;</li>
<li>/*&nbsp; &nbsp;TC_SET&nbsp; &nbsp; */</li>
<li>my_bool tc_set_init(UDF_INIT *initid, UDF_ARGS *args, char *message)</li>
<li>{</li>
<li>&nbsp; if (args-&gt;arg_count &lt; 3)</li>
<li>&nbsp; {</li>
<li>&nbsp;&nbsp; &nbsp;strcpy(message,&quot;Wrong arguments to metaphon;&nbsp; Use the source&quot;);</li>
<li>&nbsp;&nbsp; &nbsp;return 1;</li>
<li>&nbsp; }</li>
<li>&nbsp; return 0;</li>
<li>}</li>
<li>&nbsp;</li>
<li>&nbsp;</li>
<li>void tc_set_deinit(UDF_INIT *initid)</li>
<li>{</li>
<li>}</li>
<li>&nbsp;</li>
<li>&nbsp;</li>
<li>char *tc_set(UDF_INIT *initid, UDF_ARGS *args, char *result, unsigned long *length, char *is_null, char *error)</li>
<li>{	</li>
<li>	char *dbfile,*errormsg,pkbuf[200];</li>
<li>	TCTDB *tdb;</li>
<li>	TCMAP *cols;</li>
<li>	int i = 0;</li>
<li>	int ecode,pksiz;</li>
<li>&nbsp;&nbsp; &nbsp;memcpy(result, &quot;result string&quot;, 13);</li>
<li>&nbsp;&nbsp; &nbsp;*length = 13;</li>
<li>&nbsp;</li>
<li>	dbfile = args-&gt;args[0];</li>
<li>&nbsp;</li>
<li>	tdb = tctdbnew();</li>
<li>&nbsp;</li>
<li>&nbsp;&nbsp; &nbsp;if(!tctdbopen(tdb, dbfile, TDBOWRITER | TDBOCREAT)){</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;ecode = tctdbecode(tdb);</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;sprintf(errormsg, &quot;open error: %s\n&quot;, tctdberrmsg(ecode));</li>
<li>&nbsp;&nbsp; &nbsp;}</li>
<li>&nbsp;</li>
<li>	cols = tcmapnew();</li>
<li>&nbsp;</li>
<li>	for(i = 2;i&lt;args -&gt;arg_count;i++)</li>
<li>	{</li>
<li>		tcmapput2(cols, args-&gt;attributes[i], args-&gt;args[i]);	</li>
<li>	}</li>
<li>	pksiz = sprintf(pkbuf,&quot;%s&quot;,args-&gt;attributes[1]);</li>
<li>	</li>
<li>	if(!tctdbput(tdb, pkbuf, pksiz, cols)){</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;ecode = tctdbecode(tdb);</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;sprintf(errormsg,&quot;put error: %s\n&quot;, tctdberrmsg(ecode));</li>
<li>&nbsp;</li>
<li>&nbsp;&nbsp; &nbsp;}</li>
<li>	else</li>
<li>	{</li>
<li>		errormsg = &quot;OK&quot;;</li>
<li>&nbsp;</li>
<li>	}</li>
<li>&nbsp;&nbsp; &nbsp;tcmapdel(cols);</li>
<li>	</li>
<li>&nbsp;</li>
<li>	if(!tctdbclose(tdb)){</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;ecode = tctdbecode(tdb);</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;sprintf(errormsg, &quot;close error: %s\n&quot;, tctdberrmsg(ecode));</li>
<li>&nbsp;&nbsp; &nbsp;}</li>
<li>	*length = strlen(errormsg);</li>
<li>	return errormsg;</li>
<li>}</li>
<li>&nbsp;</li>
<li>/*&nbsp; &nbsp;TC_DEL&nbsp; &nbsp; */</li>
<li>my_bool tc_del_init(UDF_INIT *initid, UDF_ARGS *args, char *message)</li>
<li>{</li>
<li>&nbsp; if (args-&gt;arg_count &lt; 2)</li>
<li>&nbsp; {</li>
<li>&nbsp;&nbsp; &nbsp;strcpy(message,&quot;Wrong arguments to metaphon;&nbsp; Use the source&quot;);</li>
<li>&nbsp;&nbsp; &nbsp;return 1;</li>
<li>&nbsp; }</li>
<li>&nbsp; return 0;</li>
<li>}</li>
<li>void tc_del_deinit(UDF_INIT *initid)</li>
<li>{</li>
<li>}</li>
<li>char * tc_del(UDF_INIT *initid, UDF_ARGS *args, char *result, unsigned long *length, char *is_null, char *error)</li>
<li>{</li>
<li>	TCTDB *tdb;</li>
<li>	char *dbfile,*errormsg,*pkbuf;</li>
<li>	int ecode;</li>
<li>&nbsp;</li>
<li>	dbfile = args-&gt;args[0];</li>
<li>	pkbuf = args-&gt;args[1];</li>
<li>&nbsp;</li>
<li>	tdb = tctdbnew();</li>
<li>&nbsp;</li>
<li>&nbsp;&nbsp; &nbsp;if(!tctdbopen(tdb, dbfile, TDBOWRITER | TDBOCREAT)){</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;ecode = tctdbecode(tdb);</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;sprintf(errormsg, &quot;open error: %s\n&quot;, tctdberrmsg(ecode));</li>
<li>&nbsp;&nbsp; &nbsp;}</li>
<li>	if(!tctdbout2(tdb,pkbuf))</li>
<li>	{</li>
<li>		ecode = tctdbecode(tdb);</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;sprintf(errormsg,&quot;delete error: %s\n&quot;, tctdberrmsg(ecode));</li>
<li>	}</li>
<li>	else</li>
<li>	{</li>
<li>		errormsg = &quot;OK&quot;;</li>
<li>	}</li>
<li>	if(!tctdbclose(tdb)){</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;ecode = tctdbecode(tdb);</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;sprintf(errormsg, &quot;close error: %s\n&quot;, tctdberrmsg(ecode));</li>
<li>&nbsp;&nbsp; &nbsp;}</li>
<li>	*length = strlen(errormsg);</li>
<li>	return errormsg;</li>
<li>&nbsp;</li>
<li>}</li>
<li>/*&nbsp; &nbsp;TC_SETINDEX&nbsp; &nbsp; */</li>
<li>my_bool tc_sexindex_init(UDF_INIT *initid, UDF_ARGS *args, char *message)</li>
<li>{</li>
<li>&nbsp; if (args-&gt;arg_count &lt; 2)</li>
<li>&nbsp; {</li>
<li>&nbsp;&nbsp; &nbsp;strcpy(message,&quot;Wrong arguments to metaphon;&nbsp; Use the source&quot;);</li>
<li>&nbsp;&nbsp; &nbsp;return 1;</li>
<li>&nbsp; }</li>
<li>&nbsp; return 0;</li>
<li>}</li>
<li>void tc_sexindex_deinit(UDF_INIT *initid)</li>
<li>{</li>
<li>}</li>
<li>char * tc_sexindex(UDF_INIT *initid, UDF_ARGS *args, char *result, unsigned long *length, char *is_null, char *error)</li>
<li>{</li>
<li>	TCTDB *tdb;</li>
<li>	char *dbfile,*errormsg,*pkname[200];</li>
<li>	int ecode,indextype;</li>
<li>&nbsp;</li>
<li>	dbfile = args-&gt;args[0];</li>
<li>	*pkname = args-&gt;attributes[1];</li>
<li>&nbsp;</li>
<li>	tdb = tctdbnew();</li>
<li>&nbsp;</li>
<li>&nbsp;&nbsp; &nbsp;if(!tctdbopen(tdb, dbfile, TDBOWRITER | TDBOCREAT)){</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;ecode = tctdbecode(tdb);</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;sprintf(errormsg, &quot;open error: %s\n&quot;, tctdberrmsg(ecode));</li>
<li>&nbsp;&nbsp; &nbsp;}</li>
<li>&nbsp;&nbsp; &nbsp;if(args-&gt;args[2]==&quot;string&quot;)</li>
<li>	{</li>
<li>		indextype = TDBITLEXICAL;</li>
<li>	}</li>
<li>	else if(args-&gt;args[2]==&quot;int&quot;)</li>
<li>	{</li>
<li>		indextype = TDBITDECIMAL;</li>
<li>	}</li>
<li>	if(!tctdbsetindex(tdb,*pkname,indextype))</li>
<li>	{</li>
<li>		ecode = tctdbecode(tdb);</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;sprintf(errormsg, &quot;setindex error: %s\n&quot;, tctdberrmsg(ecode));</li>
<li>	}</li>
<li>&nbsp;</li>
<li>	if(!tctdbclose(tdb)){</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;ecode = tctdbecode(tdb);</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;sprintf(errormsg, &quot;close error: %s\n&quot;, tctdberrmsg(ecode));</li>
<li>&nbsp;&nbsp; &nbsp;}</li>
<li>	*length = strlen(errormsg);</li>
<li>	return errormsg;</li>
<li>}</li>
<li>#endif /* HAVE_DLOPEN */</li>
<li>&lt;/args&gt;&lt;/stdint&gt;&lt;/stdbool&gt;&lt;/stdlib&gt;&lt;/tctdb&gt;&lt;/tcutil&gt;&lt;/float&gt;&lt;/ctype&gt;&lt;/mysql&gt;&lt;/m_string&gt;&lt;/my_sys&gt;&lt;/my_global&gt;&lt;/string&gt;&lt;/stdio&gt;&lt;/stdlib&gt;</li></ol></div>
<p>编译安装脚本，自理</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">#!/bin/sh</li>
<li>gcc -Wall -I/opt/mysql-5.0.22/include/mysql -I/opt/tokyocabinet-1.4.46/include -I. -shared -L/usr/lib -ltokyocabinet -lz -lbz2 -lrt -lpthread -lm -lc&nbsp; udf_tt.c -o lib_mysqludf_tt.so</li>
<li>#gcc -Wall -I/opt/mysql-5.0.22/include/mysql -I. -static udf_tt.c -o lib_mysqludf_tt.so</li>
<li>cp -f ./lib_mysqludf_tt.so /usr/lib/lib_mysqludf_tt.so</li>
<li>service mysqld restart</li></ol></div>
<p>使用：</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">drop function tc_create;</li>
<li>create function tc_create returns string soname 'lib_mysqludf_tt.so';</li>
<li>&nbsp;</li>
<li>drop function tc_set;</li>
<li>create function tc_set returns string soname 'lib_mysqludf_tt.so';</li>
<li>&nbsp;</li>
<li>select tc_set(&quot;/home/sunboyu/test&quot;,`User`,`Host`) FROM user limit 1</li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2011/03/18/mysql_udf_tc-%e6%9c%aa%e6%b5%8b%e8%af%95%e5%8f%91%e5%b8%83%e7%89%88.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>谈我喜欢的作家-郑渊洁</title>
		<link>http://www.sunboyu.cn/2011/03/07/zyj.shtml</link>
		<comments>http://www.sunboyu.cn/2011/03/07/zyj.shtml#comments</comments>
		<pubDate>Mon, 07 Mar 2011 15:31:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[感悟]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1389</guid>
		<description><![CDATA[离开校园已经多年，书却一直伴我左右。从《科幻世界》到《飞碟探索》，从教科书到各种工具书；书卖了一批又一批，可办公桌和家里的书箱里总有沉甸甸的一摞书。
社会的竞争是残酷的，我更感觉到了“书到用时方恨少”的涵义。利用业余时间，我又走进了大学校园。令我惊讶的是，计算机专业居然开了语文课，我也碰上了一个国字脸上驾着金丝眼睛、白白净净满腹经纶的大学语文老师。
由于年初的一点意外，我没能赶上第一节课，不过我依然感受到这个老师的渊博-也许更因为我是工科生。
课间与老师攀谈，得知上次课后作业，随课上话题思路，遂写此文。
我喜欢书，毕业后每年买书的花费都近千元。当然大部分是计算机书籍，偶尔也在西三旗桥头买几本二手杂志，怀念一下青春。最近又喜欢上过期期刊，全新杂志但价格却不及全假三分之一。
要说我读过的书，可为杂而又杂：小说故事、杂文、诗歌；王朔的《过把瘾》、琼瑶的《碧云天》、长河落日刀等不知名的武侠故事。
要说我最喜欢那个作家，第一个下意识闪现的人物，就是郑渊洁。
平时我做心理测试，我的心理年龄远远超过了生理年龄：我在小学的时候让父亲带着我到石家庄最大的新华书店：中山路新华书专程去买一本小说：《奔腾验钞机》（后改名《我是钱》）-售货员惊讶，这么小的孩子爱看这种书！
其实爱上郑渊洁正是因为这部小说。当时父亲花几毛钱给我买了一本《童话大王》，里边节选了《奔腾验钞机》50元钞的经历。以一张钱的眼光来看世界，我被这个小说深深吸引了。
随着时光流逝，那本《奔腾验钞机》已经被我翻得惨不忍睹，中学的时候我也曾去书店寻找郑渊洁其他作品，但由于手头的拮据而不得放弃。
大学毕业后，得力于网络的便捷，我几乎阅读了郑渊洁所有的作品，被他的笔锋所深深得震撼。
他的笔法很犀利、尖刻，我总用鲁迅的作品来形容他的作品：他们的作品都是时代的匕首-鲁迅的作品作为一把手术刀在剔出社会的毒瘤，而又以一剂良药来治疗麻木的人；而郑渊洁的作品也非常尖刻得揭露一些社会现象给予讽刺，又赞扬了一些高尚的情操，凸现人性的美好。
《奔腾验钞机》这部作品以钱为第一视角，用其擅长的童话的方式去阐述不同的故事。这些故事深刻批判某些自私贪婪、拜金享乐型人群，这部小说描写人物心理活动比较多，通过人物心理的细腻揣摩和描写，使读者的内心与故事产生共鸣。
《飞马牌汽车》也是我喜欢的一部小说。书中大量夸张的描写批判了官僚主义、教条主义的思想，整部作品夸张让人忍俊不禁、却又阐明了作者此文的主旨。
郑渊洁的人也跟其作品一样：豪放、犀利。他儿子可直呼其名；儿子没有上学却自学成才；愤世嫉俗、远离污秽，为人低调不近商业活动。
也许、我喜欢的就是他的性格；他的书是我们心灵沟通的桥梁。
]]></description>
			<content:encoded><![CDATA[<blockquote><p>离开校园已经多年，书却一直伴我左右。从《科幻世界》到《飞碟探索》，从教科书到各种工具书；书卖了一批又一批，可办公桌和家里的书箱里总有沉甸甸的一摞书。</p>
<p>社会的竞争是残酷的，我更感觉到了“书到用时方恨少”的涵义。利用业余时间，我又走进了大学校园。令我惊讶的是，计算机专业居然开了语文课，我也碰上了一个国字脸上驾着金丝眼睛、白白净净满腹经纶的大学语文老师。</p>
<p>由于年初的一点意外，我没能赶上第一节课，不过我依然感受到这个老师的渊博-也许更因为我是工科生。</p>
<p>课间与老师攀谈，得知上次课后作业，随课上话题思路，遂写此文。</p></blockquote>
<p>我喜欢书，毕业后每年买书的花费都近千元。当然大部分是计算机书籍，偶尔也在西三旗桥头买几本二手杂志，怀念一下青春。最近又喜欢上过期期刊，全新杂志但价格却不及全假三分之一。</p>
<p>要说我读过的书，可为杂而又杂：小说故事、杂文、诗歌；王朔的《过把瘾》、琼瑶的《碧云天》、长河落日刀等不知名的武侠故事。</p>
<p>要说我最喜欢那个作家，第一个下意识闪现的人物，就是郑渊洁。</p>
<p>平时我做心理测试，我的心理年龄远远超过了生理年龄：我在小学的时候让父亲带着我到石家庄最大的新华书店：中山路新华书专程去买一本小说：《奔腾验钞机》（后改名《我是钱》）-售货员惊讶，这么小的孩子爱看这种书！</p>
<p>其实爱上郑渊洁正是因为这部小说。当时父亲花几毛钱给我买了一本《童话大王》，里边节选了《奔腾验钞机》50元钞的经历。以一张钱的眼光来看世界，我被这个小说深深吸引了。</p>
<p>随着时光流逝，那本《奔腾验钞机》已经被我翻得惨不忍睹，中学的时候我也曾去书店寻找郑渊洁其他作品，但由于手头的拮据而不得放弃。</p>
<p>大学毕业后，得力于网络的便捷，我几乎阅读了郑渊洁所有的作品，被他的笔锋所深深得震撼。</p>
<p>他的笔法很犀利、尖刻，我总用鲁迅的作品来形容他的作品：他们的作品都是时代的匕首-鲁迅的作品作为一把手术刀在剔出社会的毒瘤，而又以一剂良药来治疗麻木的人；而郑渊洁的作品也非常尖刻得揭露一些社会现象给予讽刺，又赞扬了一些高尚的情操，凸现人性的美好。</p>
<p>《奔腾验钞机》这部作品以钱为第一视角，用其擅长的童话的方式去阐述不同的故事。这些故事深刻批判某些自私贪婪、拜金享乐型人群，这部小说描写人物心理活动比较多，通过人物心理的细腻揣摩和描写，使读者的内心与故事产生共鸣。</p>
<p>《飞马牌汽车》也是我喜欢的一部小说。书中大量夸张的描写批判了官僚主义、教条主义的思想，整部作品夸张让人忍俊不禁、却又阐明了作者此文的主旨。</p>
<p>郑渊洁的人也跟其作品一样：豪放、犀利。他儿子可直呼其名；儿子没有上学却自学成才；愤世嫉俗、远离污秽，为人低调不近商业活动。</p>
<p>也许、我喜欢的就是他的性格；他的书是我们心灵沟通的桥梁。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2011/03/07/zyj.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>结合逍遥问问讲解如何利用LoadRunner进行性能测试</title>
		<link>http://www.sunboyu.cn/2011/01/27/%e7%bb%93%e5%90%88%e9%80%8d%e9%81%a5%e9%97%ae%e9%97%ae%e8%ae%b2%e8%a7%a3%e5%a6%82%e4%bd%95%e5%88%a9%e7%94%a8loadrunner%e8%bf%9b%e8%a1%8c%e6%80%a7%e8%83%bd%e6%b5%8b%e8%af%95.shtml</link>
		<comments>http://www.sunboyu.cn/2011/01/27/%e7%bb%93%e5%90%88%e9%80%8d%e9%81%a5%e9%97%ae%e9%97%ae%e8%ae%b2%e8%a7%a3%e5%a6%82%e4%bd%95%e5%88%a9%e7%94%a8loadrunner%e8%bf%9b%e8%a1%8c%e6%80%a7%e8%83%bd%e6%b5%8b%e8%af%95.shtml#comments</comments>
		<pubDate>Thu, 27 Jan 2011 02:33:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[其他]]></category>

		<category><![CDATA[loadrunner]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1384</guid>
		<description><![CDATA[最近群里聊到测试，我也拿公司测试部门的一个文档分享。我们测试组4个MM，负责平时的功能测试，性能测试和安全测试。既有很萌的测试主管，又有彪悍的千杯不醉，还有海吃不胖的瘦弱女生，包括由行政转为技术的全才。
PPT主要得靠演讲人的口述才能理解，这里PPT写的也比较详尽，大家可以看出一些功能和流程上的东西。
PPT部分内容删除，包括产品业务流程图，设计敏感账号和我们一些IP信息，不过不影响阅读。
附加一句：得用WPS打开。没装WPS的可以来这里下载 http://www.wps.cn/
顺便宣传我们的产品 逍遥问问
PPT下载
]]></description>
			<content:encoded><![CDATA[<p>最近群里聊到测试，我也拿公司测试部门的一个文档分享。我们测试组4个MM，负责平时的功能测试，性能测试和安全测试。既有很萌的测试主管，又有彪悍的千杯不醉，还有海吃不胖的瘦弱女生，包括由行政转为技术的全才。</p>
<p>PPT主要得靠演讲人的口述才能理解，这里PPT写的也比较详尽，大家可以看出一些功能和流程上的东西。</p>
<p>PPT部分内容删除，包括产品业务流程图，设计敏感账号和我们一些IP信息，不过不影响阅读。</p>
<p>附加一句：得用WPS打开。没装WPS的可以来这里下载 http://www.wps.cn/</p>
<p>顺便宣传我们的产品 <a href="http://ask.xoyo.com">逍遥问问</a></p>
<p><a href='http://www.sunboyu.cn/upfiles/2011/01/e585ace58fb8e5a496e58886e4baabe78988e69cac-e7bb93e59088e9808de981a5e997aee997aee8aeb2e8a7a3e5a682e4bd95e588a9e794a8loadrunnere8bf9be8a18c.rar'>PPT下载</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2011/01/27/%e7%bb%93%e5%90%88%e9%80%8d%e9%81%a5%e9%97%ae%e9%97%ae%e8%ae%b2%e8%a7%a3%e5%a6%82%e4%bd%95%e5%88%a9%e7%94%a8loadrunner%e8%bf%9b%e8%a1%8c%e6%80%a7%e8%83%bd%e6%b5%8b%e8%af%95.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>利用udf扩展mysql增加json_object函数</title>
		<link>http://www.sunboyu.cn/2011/01/23/%e5%88%a9%e7%94%a8udf%e6%89%a9%e5%b1%95mysql%e5%a2%9e%e5%8a%a0json_object%e5%87%bd%e6%95%b0.shtml</link>
		<comments>http://www.sunboyu.cn/2011/01/23/%e5%88%a9%e7%94%a8udf%e6%89%a9%e5%b1%95mysql%e5%a2%9e%e5%8a%a0json_object%e5%87%bd%e6%95%b0.shtml#comments</comments>
		<pubDate>Sun, 23 Jan 2011 13:47:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[MYSQL]]></category>

		<category><![CDATA[c]]></category>

		<category><![CDATA[mysql]]></category>

		<category><![CDATA[udf]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1378</guid>
		<description><![CDATA[其实已经有一个成形的mysql json编码的模块 http://www.mysqludf.org/lib_mysqludf_json/index.php
不过我们在使用的过程中，发现这个函数有版本兼容的问题，后看代码，发现它的json加密规则比较麻烦，没拆出来分析，就自己使用一个json类 http://sourceforge.net/projects/cjson/ 重写了一遍json_object函数。
目前在mysql-5.0.22版本上使用基本没问题，但在mysql5.5以上版本会有问题，udf接口格式好像有了变化。
mysql-5.0.22版本给出的例子是c++的代码。使用了extern语法，为了兼容gcc的语法。而我实际使用纯C环境，就抛弃了extern的语法。
udf_json源码下载
file:udf_json.c
#ifdef STANDARD
#include &#60;stdlib .h&#62;
#include &#60;stdio .h&#62;
#include &#60;string .h&#62;
#ifdef __WIN__
typedef unsigned __int64 ulonglong;	/* Microsofts 64 bit types */
typedef __int64 longlong;
#else
typedef unsigned long long ulonglong;
typedef long long longlong;
#endif /*__WIN__*/
#else
#include &#60;my_global .h&#62;
#include &#60;my_sys .h&#62;
#include &#60;m_string .h&#62;
#endif
#include &#60;mysql .h&#62;
#include &#60;ctype .h&#62;
#include &#60;float .h&#62;
#include &#34;cJSON.h&#34;
#ifdef HAVE_DLOPEN
my_bool json_object_init(UDF_INIT *initid, UDF_ARGS *args, char *message)
{
&#160; if (args-&#62;arg_count &#60; 1)
&#160; [...]]]></description>
			<content:encoded><![CDATA[<p>其实已经有一个成形的mysql json编码的模块 http://www.mysqludf.org/lib_mysqludf_json/index.php</p>
<p>不过我们在使用的过程中，发现这个函数有版本兼容的问题，后看代码，发现它的json加密规则比较麻烦，没拆出来分析，就自己使用一个json类 http://sourceforge.net/projects/cjson/ 重写了一遍json_object函数。</p>
<p>目前在mysql-5.0.22版本上使用基本没问题，但在mysql5.5以上版本会有问题，udf接口格式好像有了变化。</p>
<p>mysql-5.0.22版本给出的例子是c++的代码。使用了extern语法，为了兼容gcc的语法。而我实际使用纯C环境，就抛弃了extern的语法。</p>
<p><a href='http://www.sunboyu.cn/upfiles/2011/01/udf_json.rar'>udf_json源码下载</a></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">file:udf_json.c</li>
<li>#ifdef STANDARD</li>
<li>#include &lt;stdlib .h&gt;</li>
<li>#include &lt;stdio .h&gt;</li>
<li>#include &lt;string .h&gt;</li>
<li>#ifdef __WIN__</li>
<li>typedef unsigned __int64 ulonglong;	/* Microsofts 64 bit types */</li>
<li>typedef __int64 longlong;</li>
<li>#else</li>
<li>typedef unsigned long long ulonglong;</li>
<li>typedef long long longlong;</li>
<li>#endif /*__WIN__*/</li>
<li>#else</li>
<li>#include &lt;my_global .h&gt;</li>
<li>#include &lt;my_sys .h&gt;</li>
<li>#include &lt;m_string .h&gt;</li>
<li>#endif</li>
<li>#include &lt;mysql .h&gt;</li>
<li>#include &lt;ctype .h&gt;</li>
<li>#include &lt;float .h&gt;</li>
<li>#include &quot;cJSON.h&quot;</li>
<li>#ifdef HAVE_DLOPEN</li>
<li>my_bool json_object_init(UDF_INIT *initid, UDF_ARGS *args, char *message)</li>
<li>{</li>
<li>&nbsp; if (args-&gt;arg_count &lt; 1)</li>
<li>&nbsp; {</li>
<li>&nbsp;&nbsp; &nbsp;strcpy(message,&quot;Wrong arguments to metaphon;&nbsp; Use the source&quot;);</li>
<li>&nbsp;&nbsp; &nbsp;return 1;</li>
<li>&nbsp; }</li>
<li>&nbsp; return 0;</li>
<li>}</li>
<li>void json_object_deinit(UDF_INIT *initid)</li>
<li>{</li>
<li>}</li>
<li>char *json_object(UDF_INIT *initid, UDF_ARGS *args, char *result, unsigned long *length, char *is_null, char *error)</li>
<li>{</li>
<li>	cJSON *root;</li>
<li>	char *out;</li>
<li>	int i = 0;</li>
<li>&nbsp;</li>
<li>	root=cJSON_CreateObject();</li>
<li>	for(i = 0;i&lt;args-&gt;arg_count;i++)</li>
<li>	{</li>
<li>		if(args-&gt;arg_type[i] == STRING_RESULT)</li>
<li>		{</li>
<li>		&nbsp; &nbsp; cJSON_AddStringToObject(root, args-&gt;attributes[i], args-&gt;args[i]);</li>
<li>		}</li>
<li>		else if(args-&gt;arg_type[i] == INT_RESULT)</li>
<li>		{</li>
<li>			cJSON_AddNumberToObject(root, args-&gt;attributes[i], *((int*)args-&gt;args[i])); //函数参数为double型，这里强转int是好使的，纳闷</li>
<li>		}</li>
<li>	}</li>
<li>	out=cJSON_Print(root);</li>
<li>&nbsp;&nbsp; &nbsp;cJSON_Delete(root);</li>
<li>	*length = strlen(out);</li>
<li>	return out;</li>
<li>}</li>
<li>#endif /* HAVE_DLOPEN */</li>
<li>&nbsp;</li>
<li>file:make.sh</li>
<li>#!/bin/sh</li>
<li>gcc -Wall -I/opt/mysql-5.0.22/include/mysql -I. -shared udf_json.c cJSON.c -o lib_mysqludf_json.so</li>
<li>cp -f ./lib_mysqludf_json.so /usr/lib/lib_mysqludf_json.so</li>
<li>service mysqld restart</li>
<li>&lt;/float&gt;&lt;/ctype&gt;&lt;/mysql&gt;&lt;/m_string&gt;&lt;/my_sys&gt;&lt;/my_global&gt;&lt;/string&gt;&lt;/stdio&gt;&lt;/stdlib&gt;</li></ol></div>
<p>编译完成，复制so文件至公共库，然后执行以下语句：</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">drop function json_object;</li>
<li>create function json_object returns string soname 'lib_mysqludf_json.so';</li></ol></div>
<p>使用 ：</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">SELECT json_object(field1,field2……) AS jsdate FROM table;</li></ol></div>
<p>PHP调用：</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">$db = mysql_connect(&quot;127.0.0.1:3306&quot;,&quot;root&quot;,&quot;123456&quot;);</li>
<li>mysql_select_db(&quot;test&quot;);</li>
<li>$query = mysql_query(&quot;SELECT json_object(id,intval,value) FROM test LIMIT 6&quot;);</li>
<li>while($row = mysql_fetch_array($query)){</li>
<li>&nbsp;&nbsp; &nbsp;var_dump(json_decode($row[0],true));</li>
<li>}</li></ol></div>
<p>结果显示：</p>
<blockquote><p>
array(3) {<br />
  ["id"]=><br />
  int(2)<br />
  ["intval"]=><br />
  int(43324)<br />
  ["value"]=><br />
  string(10) &#8220;fdsfdsfdsa&#8221;<br />
}<br />
array(3) {<br />
  ["id"]=><br />
  int(5)<br />
  ["intval"]=><br />
  int(432432432)<br />
  ["value"]=><br />
  string(10) &#8220;fdsafdsasa&#8221;<br />
}</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2011/01/23/%e5%88%a9%e7%94%a8udf%e6%89%a9%e5%b1%95mysql%e5%a2%9e%e5%8a%a0json_object%e5%87%bd%e6%95%b0.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>mysql5.5.8安装笔记</title>
		<link>http://www.sunboyu.cn/2011/01/19/mysql558%e5%ae%89%e8%a3%85%e7%ac%94%e8%ae%b0.shtml</link>
		<comments>http://www.sunboyu.cn/2011/01/19/mysql558%e5%ae%89%e8%a3%85%e7%ac%94%e8%ae%b0.shtml#comments</comments>
		<pubDate>Wed, 19 Jan 2011 03:46:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[MYSQL]]></category>

		<category><![CDATA[mysql5.5.8]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1374</guid>
		<description><![CDATA[mysql5.5.8对于守旧的人绝对是一种惨无人道的蹂躏。
我开始用mysql5.5.8了，被忽悠得天花乱坠，说性能提升，说主从同步迅速……
不过我是专用udf功能的，因为我常用的mysql稳定版本5.0.22官方说有点小bug，使用udf有点问题，被迫升级了5.5.8版本。
mysql5.5.8抛弃了我们钟爱的configure，而次用了cmake。
当然你要先安装cmake   http://www.cmake.org/files/v2.8/cmake-2.8.3.tar.gz
cmake安装简单，tar后make &#038;&#038; make install 搞定。
mysql5.5.8到官网下载 http://dev.mysql.com/downloads/mirror.php?id=399302#mirrors
tar出来，就找不到configure了，不过官方提供了高仿configure的转换脚本，不过神马都是浮云，自己折腾脚本吧
cmake -DCMAKE_INSTALL_PREFIX=/opt/mysql-5.5.8 \
&#160;&#160; &#160; &#160;-DMYSQL_DATADIR=/opt/mysql-5.5.8/data \
&#160;&#160; &#160; &#160;-DSYSCONFDIR=/opt/mysql-5.5.8/etc \
&#160;&#160; &#160; &#160;-DINSTALL_PLUGINDIR=dir_name=/opt/mysql-5.5.8/plugin \
&#160;&#160; &#160; &#160;-DWITH_INNOBASE_STORAGE_ENGINE=1 \
&#160;&#160; &#160; &#160;-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
&#160;&#160; &#160; &#160;-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
&#160;&#160; &#160; &#160;-DWITH_FEDERATED_STORAGE_ENGINE=1 \
&#160;&#160; &#160; &#160;-DWITH_PARTITION_STORAGE_ENGINE=1 \
&#160;&#160; &#160; &#160;-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock \
&#160;&#160; &#160; &#160;-DMYSQL_TCP_PORT=3306 \
&#160;&#160; &#160; &#160;-DENABLED_LOCAL_INFILE=1 \
&#160;&#160; &#160; &#160;-DEXTRA_CHARSETS=all \
&#160;&#160; &#160; &#160;-DDEFAULT_CHARSET=utf8 \
&#160;&#160; &#160; &#160;-DDEFAULT_COLLATION=utf8-general_ci \
&#160;&#160; &#160; &#160;-DMYSQL_USER=mysql
然后make [...]]]></description>
			<content:encoded><![CDATA[<p>mysql5.5.8对于守旧的人绝对是一种惨无人道的蹂躏。</p>
<p>我开始用mysql5.5.8了，被忽悠得天花乱坠，说性能提升，说主从同步迅速……</p>
<p>不过我是专用udf功能的，因为我常用的mysql稳定版本5.0.22官方说有点小bug，使用udf有点问题，被迫升级了5.5.8版本。</p>
<p>mysql5.5.8抛弃了我们钟爱的configure，而次用了cmake。</p>
<p>当然你要先安装cmake   http://www.cmake.org/files/v2.8/cmake-2.8.3.tar.gz</p>
<p>cmake安装简单，tar后make &#038;&#038; make install 搞定。</p>
<p>mysql5.5.8到官网下载 http://dev.mysql.com/downloads/mirror.php?id=399302#mirrors</p>
<p>tar出来，就找不到configure了，不过官方提供了高仿configure的转换脚本，不过神马都是浮云，自己折腾脚本吧</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">cmake -DCMAKE_INSTALL_PREFIX=/opt/mysql-5.5.8 \</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp;-DMYSQL_DATADIR=/opt/mysql-5.5.8/data \</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp;-DSYSCONFDIR=/opt/mysql-5.5.8/etc \</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp;-DINSTALL_PLUGINDIR=dir_name=/opt/mysql-5.5.8/plugin \</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp;-DWITH_INNOBASE_STORAGE_ENGINE=1 \</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp;-DWITH_ARCHIVE_STORAGE_ENGINE=1 \</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp;-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp;-DWITH_FEDERATED_STORAGE_ENGINE=1 \</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp;-DWITH_PARTITION_STORAGE_ENGINE=1 \</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp;-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock \</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp;-DMYSQL_TCP_PORT=3306 \</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp;-DENABLED_LOCAL_INFILE=1 \</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp;-DEXTRA_CHARSETS=all \</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp;-DDEFAULT_CHARSET=utf8 \</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp;-DDEFAULT_COLLATION=utf8-general_ci \</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp;-DMYSQL_USER=mysql</li></ol></div>
<p>然后make &#038;&#038; make install就行。</p>
<p>剩下的事情就跟老版本的一样了，不过我编译的时候没有成功安装 mysql_install_db 脚本，自己写了一个，也算成功完成任务了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2011/01/19/mysql558%e5%ae%89%e8%a3%85%e7%ac%94%e8%ae%b0.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>discuz论坛大表优化</title>
		<link>http://www.sunboyu.cn/2011/01/11/discuz%e8%ae%ba%e5%9d%9b%e5%a4%a7%e8%a1%a8%e4%bc%98%e5%8c%96.shtml</link>
		<comments>http://www.sunboyu.cn/2011/01/11/discuz%e8%ae%ba%e5%9d%9b%e5%a4%a7%e8%a1%a8%e4%bc%98%e5%8c%96.shtml#comments</comments>
		<pubDate>Tue, 11 Jan 2011 15:15:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[discuz]]></category>

		<category><![CDATA[posts]]></category>

		<category><![CDATA[分表]]></category>

		<category><![CDATA[合并表]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1365</guid>
		<description><![CDATA[通过观察，大部分的dz论坛在数据量发展到一定程度，在线人数逐渐提高后，首先锁表的是sessions，这个表我已经写过多种优化的方式，不外乎寻找一些比mysql负载性能好的程序来代替这部分工作。但时间长了，随着在线人数继续增加，那个附加的程序也会面临瓶颈。提高硬件性能和软件性能固然能提高负载，但一旦到瓶颈，必须想其他的方案。
硬件和简约的程序能提高性能，在大数据量下，算法的优势就能体现出来了。
顺便提一下主从：很多人认为主从可以解决问题，其实未必。设想一主多从结构，假如主库写压力很大，那同样压力会同步到从库，会造成N个从库压力同时很大。事实上从库压力会小于主库，因为主库是多进程写，而从库是单进程写， 但总的来说，执行的语句不会少。所以，主从这种结构在一定情况下也就失去了优势。（在硬件资源充裕，压力不是很大的环境下，这种问题发生较少，在硬件条件比较差的一些环境下，这种瓶颈很容易表现出来）
这里拿discuz7的posts表举例，摆脱主从结构，硬件比较差，表很大，10G以上。
一个负载大的dz论坛，在线人数多，又比较活跃，那posts表的压力肯定不会小。在一个回复比较频繁，存储引擎使用myisam的posts表，锁表是经常发生的，我所遇见的问题发生的环境为：数据库单点，无主从，io压力中等。posts表频繁锁表，而造成查询排队，查询速度骤然下降。
在不提升硬件的情况下，要想提速，显然是比较困难的，大量的文本数据装入memcached显然也不合适。所以，这个问题我用优化数据存储的角度对数据表进行了改造。
TIPS：同样100M带宽的集线器和交换机，交换机的吞吐性能远远高于集线器，原因在于：交换机建立专有通道，避免了冲突。
而在mysql中，锁表可以形象描述为冲突了，读写冲突了。但如果我们分表，把读写分散，也许会好点。
分表规则：按照tid进行hash，分散到16个表中。
假设，一读一写，两个操作，同时进行，那么他们撞在一起的几率就是1。如果分为两个表，那么他们撞在一起的几率就是1/2 = 0.5,用一个函数来表示，就是F(x)=1/x ，显然，分的表越多，冲突的机会越小，锁表的几率就越少。即时锁表，影响的也只是1/x的数据，不会对所有的用户造成影响。
数据模型解释：如果是绝对同步发生，几率应该是 F(x)=1/((x-1)*x)，但在计算机里，无论两个操作时间间隔多小，在cpu时间片上都是顺序执行，因为，函数我认定为：F(x)=1/x。
以上用数学的方式解释了算法优化对性能的提升。实际上，通过对逍遥论坛的用户行为统计：posts表95%以上的操作都是在读写，搜索和管理占小部分。
补充一种分表算法：在discuzX里，后台启用了分表，我没有细看，大概是把表按照时间段或者其他条件分开。我猜测，作者本意是拆分老数据，主表只留最新数据和一些命中高的数据。这种方式可以起到一定效果，但根据统计，大部分用户习惯浏览回复最新帖子，因此，大部分的读写还是定位到了一张表，也就是没有彻底解决读写冲突的问题。
还有一个朋友使用的是顺序分表，500w个pid一张表，但这个方法同上个方法，没解决冲突问题。
所以，在他的基础上，我考虑出按照tid进行hash分表的方案。
说到这里，分表又给我们带来了麻烦，有些查询并不能用tid主键进行定位，这里我用了mysql合并表，这个合并表可以合并16个分表，成为一个大表进行查询，而表名依然用原始的表明，这样，dz中原来的功能就不受影响了。
此方案已经实现，我用的新老数据+分别hash的方式，即32张表存储posts数据的方式。但未做压力测试。最近努力学习loadrunner使用，这个压测马上就可以进行了。
]]></description>
			<content:encoded><![CDATA[<p>通过观察，大部分的dz论坛在数据量发展到一定程度，在线人数逐渐提高后，首先锁表的是sessions，这个表我已经写过多种优化的方式，不外乎寻找一些比mysql负载性能好的程序来代替这部分工作。但时间长了，随着在线人数继续增加，那个附加的程序也会面临瓶颈。提高硬件性能和软件性能固然能提高负载，但一旦到瓶颈，必须想其他的方案。</p>
<p>硬件和简约的程序能提高性能，在大数据量下，算法的优势就能体现出来了。</p>
<p>顺便提一下主从：很多人认为主从可以解决问题，其实未必。设想一主多从结构，假如主库写压力很大，那同样压力会同步到从库，会造成N个从库压力同时很大。事实上从库压力会小于主库，因为主库是多进程写，而从库是单进程写， 但总的来说，执行的语句不会少。所以，主从这种结构在一定情况下也就失去了优势。（在硬件资源充裕，压力不是很大的环境下，这种问题发生较少，在硬件条件比较差的一些环境下，这种瓶颈很容易表现出来）</p>
<p>这里拿discuz7的posts表举例，摆脱主从结构，硬件比较差，表很大，10G以上。</p>
<p>一个负载大的dz论坛，在线人数多，又比较活跃，那posts表的压力肯定不会小。在一个回复比较频繁，存储引擎使用myisam的posts表，锁表是经常发生的，我所遇见的问题发生的环境为：数据库单点，无主从，io压力中等。posts表频繁锁表，而造成查询排队，查询速度骤然下降。</p>
<p>在不提升硬件的情况下，要想提速，显然是比较困难的，大量的文本数据装入memcached显然也不合适。所以，这个问题我用优化数据存储的角度对数据表进行了改造。</p>
<p>TIPS：同样100M带宽的集线器和交换机，交换机的吞吐性能远远高于集线器，原因在于：交换机建立专有通道，避免了冲突。</p>
<p>而在mysql中，锁表可以形象描述为冲突了，读写冲突了。但如果我们分表，把读写分散，也许会好点。</p>
<p>分表规则：按照tid进行hash，分散到16个表中。</p>
<p>假设，一读一写，两个操作，同时进行，那么他们撞在一起的几率就是1。如果分为两个表，那么他们撞在一起的几率就是1/2 = 0.5,用一个函数来表示，就是F(x)=1/x ，显然，分的表越多，冲突的机会越小，锁表的几率就越少。即时锁表，影响的也只是1/x的数据，不会对所有的用户造成影响。</p>
<p>数据模型解释：如果是绝对同步发生，几率应该是 F(x)=1/((x-1)*x)，但在计算机里，无论两个操作时间间隔多小，在cpu时间片上都是顺序执行，因为，函数我认定为：F(x)=1/x。</p>
<p>以上用数学的方式解释了算法优化对性能的提升。实际上，通过对逍遥论坛的用户行为统计：posts表95%以上的操作都是在读写，搜索和管理占小部分。</p>
<p>补充一种分表算法：在discuzX里，后台启用了分表，我没有细看，大概是把表按照时间段或者其他条件分开。我猜测，作者本意是拆分老数据，主表只留最新数据和一些命中高的数据。这种方式可以起到一定效果，但根据统计，大部分用户习惯浏览回复最新帖子，因此，大部分的读写还是定位到了一张表，也就是没有彻底解决读写冲突的问题。<br />
还有一个朋友使用的是顺序分表，500w个pid一张表，但这个方法同上个方法，没解决冲突问题。<br />
所以，在他的基础上，我考虑出按照tid进行hash分表的方案。</p>
<p>说到这里，分表又给我们带来了麻烦，有些查询并不能用tid主键进行定位，这里我用了mysql合并表，这个合并表可以合并16个分表，成为一个大表进行查询，而表名依然用原始的表明，这样，dz中原来的功能就不受影响了。</p>
<p>此方案已经实现，我用的新老数据+分别hash的方式，即32张表存储posts数据的方式。但未做压力测试。最近努力学习loadrunner使用，这个压测马上就可以进行了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2011/01/11/discuz%e8%ae%ba%e5%9d%9b%e5%a4%a7%e8%a1%a8%e4%bc%98%e5%8c%96.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>小货倒库绝版秘籍</title>
		<link>http://www.sunboyu.cn/2011/01/10/%e5%b0%8f%e8%b4%a7%e5%80%92%e5%ba%93%e7%bb%9d%e7%89%88%e7%a7%98%e7%b1%8d.shtml</link>
		<comments>http://www.sunboyu.cn/2011/01/10/%e5%b0%8f%e8%b4%a7%e5%80%92%e5%ba%93%e7%bb%9d%e7%89%88%e7%a7%98%e7%b1%8d.shtml#comments</comments>
		<pubDate>Sun, 09 Jan 2011 16:07:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[单车生活]]></category>

		<category><![CDATA[倒库]]></category>

		<category><![CDATA[小货]]></category>

		<category><![CDATA[帖库]]></category>

		<category><![CDATA[考试]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1361</guid>
		<description><![CDATA[AB库，车子默认在B库内。
1、B库到考试初试地点：前进->右杆进入右边第一个盲区（两块玻璃中间的盲区），右打轮一圈半，待车头变正，停止。
2、开始考试，帖库：看车后窗户，缓行，中杆（AB库中间的杆）进入右后盲区（驾驶室右后角的盲区），右打轮两圈打满，倒行，后窗户右侧立柱跟中杆重合后，左打轮一圈，倒行，中杆到右后盲区跟右侧立柱中间的位置，右打轮一圈打满，看左倒车镜，出现A库左后杆后，逐渐调整车子对准A库后边左右杆中间，右打轮两圈，方向盘打正，倒行，待车子后侧将近后侧的时候，停车，帖库完成。
3、移库：右打轮两圈打满，前进，待中杆移动到将近左倒车镜左数1/3的时候，停，左打轮四圈打满，前进，待车头打正的时候停止，如果车头不到前边线，可适当前进，右打轮四圈打满，倒行，视线看准后窗户立柱左边的立柱并且瞄准车后边左侧第二颗铆钉与第一颗铆钉中间，B库右后杆移动到第二颗铆钉上，停车，左打轮四圈打满，看车头，倒车，待车头摆正，停止，右打轮两圈，方向盘打正，前进，并且适当调整车子在车库中央，然后倒车，车子后边接近后边线，停止。
4、出库：左打轮一圈，前进，从A库出去，看车子右后角，将近出线的时候，左打轮一圈半，带车头摆正后，停止。
5、倒库：A库左杆刚出左边第一个盲区（左边两块玻璃中间的盲区），停止，左打轮两圈打满，倒行，待AB库中间的杆出线在后盲区后，后盲区最下边的边与杆相切，停止，右打轮一圈，继续倒行，待中杆第二次与后盲区最下边的杆相切，左打轮一圈打满，看右倒车镜，待B库右后杆出线在右倒车镜中，看左右倒车镜后边的杆线，调整车子摆正，倒车，待车头离前边线两米左右，停车。
考试完毕。必须6分钟内完成，不得压线，不得撞杆，不得违法步骤。
http://www.zyue.com/n/BU83/na70809.html      皮卡科目二蝴蝶桩过关技巧配图详解
http://teli.blog.hexun.com/36153356_d.html   科目二考试内容及技巧皮卡怎样定点停车，上坡起步，侧方位，单边桥，过圆饼
]]></description>
			<content:encoded><![CDATA[<p>AB库，车子默认在B库内。</p>
<p>1、B库到考试初试地点：前进->右杆进入右边第一个盲区（两块玻璃中间的盲区），右打轮一圈半，待车头变正，停止。<br />
2、开始考试，帖库：看车后窗户，缓行，中杆（AB库中间的杆）进入右后盲区（驾驶室右后角的盲区），右打轮两圈打满，倒行，后窗户右侧立柱跟中杆重合后，左打轮一圈，倒行，中杆到右后盲区跟右侧立柱中间的位置，右打轮一圈打满，看左倒车镜，出现A库左后杆后，逐渐调整车子对准A库后边左右杆中间，右打轮两圈，方向盘打正，倒行，待车子后侧将近后侧的时候，停车，帖库完成。<br />
3、移库：右打轮两圈打满，前进，待中杆移动到将近左倒车镜左数1/3的时候，停，左打轮四圈打满，前进，待车头打正的时候停止，如果车头不到前边线，可适当前进，右打轮四圈打满，倒行，视线看准后窗户立柱左边的立柱并且瞄准车后边左侧第二颗铆钉与第一颗铆钉中间，B库右后杆移动到第二颗铆钉上，停车，左打轮四圈打满，看车头，倒车，待车头摆正，停止，右打轮两圈，方向盘打正，前进，并且适当调整车子在车库中央，然后倒车，车子后边接近后边线，停止。<br />
4、出库：左打轮一圈，前进，从A库出去，看车子右后角，将近出线的时候，左打轮一圈半，带车头摆正后，停止。<br />
5、倒库：A库左杆刚出左边第一个盲区（左边两块玻璃中间的盲区），停止，左打轮两圈打满，倒行，待AB库中间的杆出线在后盲区后，后盲区最下边的边与杆相切，停止，右打轮一圈，继续倒行，待中杆第二次与后盲区最下边的杆相切，左打轮一圈打满，看右倒车镜，待B库右后杆出线在右倒车镜中，看左右倒车镜后边的杆线，调整车子摆正，倒车，待车头离前边线两米左右，停车。</p>
<p>考试完毕。必须6分钟内完成，不得压线，不得撞杆，不得违法步骤。</p>
<p>http://www.zyue.com/n/BU83/na70809.html      皮卡科目二蝴蝶桩过关技巧配图详解</p>
<p>http://teli.blog.hexun.com/36153356_d.html   科目二考试内容及技巧皮卡怎样定点停车，上坡起步，侧方位，单边桥，过圆饼</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2011/01/10/%e5%b0%8f%e8%b4%a7%e5%80%92%e5%ba%93%e7%bb%9d%e7%89%88%e7%a7%98%e7%b1%8d.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>利用loadrunner做mysql压力测试</title>
		<link>http://www.sunboyu.cn/2011/01/06/%e5%88%a9%e7%94%a8loadrunner%e5%81%9amysql%e5%8e%8b%e5%8a%9b%e6%b5%8b%e8%af%95.shtml</link>
		<comments>http://www.sunboyu.cn/2011/01/06/%e5%88%a9%e7%94%a8loadrunner%e5%81%9amysql%e5%8e%8b%e5%8a%9b%e6%b5%8b%e8%af%95.shtml#comments</comments>
		<pubDate>Thu, 06 Jan 2011 15:05:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[其他]]></category>

		<category><![CDATA[c api]]></category>

		<category><![CDATA[loadrunner]]></category>

		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1354</guid>
		<description><![CDATA[loadrunner下的mysql c api
一个很简单的模拟用户访问论坛帖子的loadrunner测试脚本
最近跟测试组学习loadrunner的使用，测试组的姑娘们习惯用界面进行操作，而习惯linux平台使用的我很多功能都使用代码来实现了。
最近用loadrunner写了一个模拟社区用户压测论坛数据库的一个脚本，进行数据库的压力测试和优化工作。
用户行为分析：
在社区中，看帖的人是发帖人的10倍以上，而看帖人大概80%以上都在看新帖，20以下的用户有挖坟行为。
因此，设定如此的比率：每11个用户，1个发帖，8个看最近30%的帖，两个看老的70%的帖。
我的论坛帖子回复表大概是：973505个帖子的回复，两千多万的回帖。
根据这些数据，配合mysql的c api，写如下脚本:
注：脚本的my_mysql_insert()函数是有问题的，多线程下有一个资源符没处理好，因为还不太了解loadrunner的线程机制，所以留下了一个bug。
在做完这个脚本后，我发现我们测试机性能都不错，很难在一个5G大小的单表上主键查询造成很大的压力，所以，计划把dz论坛架设，用php+mysql真实环境下进行压测，这样可以顺便练习http函数下的loadrunner编程。
globals.h
#ifndef _GLOBALS_H 
#define _GLOBALS_H
#include &#34;lrun.h&#34;
#include &#34;web_api.h&#34;
#include &#34;lrw_custom_body.h&#34;
#include &#34;modal_dialog_callbacks.h&#34;
#define random(x) (rand()%x)
#include &#60;mysql .h&#62;
#include &#60;mysql_com .h&#62;
#include &#60;mysql_time .h&#62;
#include &#60;mysql_version .h&#62;
#include &#60;typelib .h&#62;
#include &#60;my_list .h&#62;
#include &#60;my_alloc .h&#62;
#endif // _GLOBALS_H
&#60;/my_alloc&#62;&#60;/my_list&#62;&#60;/typelib&#62;&#60;/mysql_version&#62;&#60;/mysql_time&#62;&#60;/mysql_com&#62;&#60;/mysql&#62;
vuser_init.c
MYSQL *db;
MYSQL_ROW record;
vuser_init()
{
	char sql[128];
	MYSQL_RES *results1;
&#160;&#160; &#160;lr_load_dll(&#34;libmysql.dll&#34;);
&#160;&#160; &#160;db = mysql_init(NULL);
	mysql_real_connect(db, &#34;192.168.8.32&#34;, &#34;root&#34;, &#34;123456&#34;, &#34;sunboyu_test&#34;, 3311, &#34;/tmp/mysql3311.sock&#34;, 1);
&#160;&#160; &#160;
	sprintf(sql, &#34;show tables&#34;);
	mysql_query(db, sql);
&#160;&#160; &#160;results1 = mysql_store_result(db);
&#160;&#160; &#160;while((record = mysql_fetch_row(results1))) 
	{
	&#160; [...]]]></description>
			<content:encoded><![CDATA[<p><a href='http://www.sunboyu.cn/upfiles/2011/01/loadrunner_mysql.rar'>loadrunner下的mysql c api</a></p>
<p><a href='http://www.sunboyu.cn/upfiles/2011/01/web.rar'>一个很简单的模拟用户访问论坛帖子的loadrunner测试脚本</a></p>
<p>最近跟测试组学习loadrunner的使用，测试组的姑娘们习惯用界面进行操作，而习惯linux平台使用的我很多功能都使用代码来实现了。</p>
<p>最近用loadrunner写了一个模拟社区用户压测论坛数据库的一个脚本，进行数据库的压力测试和优化工作。</p>
<p>用户行为分析：</p>
<p>在社区中，看帖的人是发帖人的10倍以上，而看帖人大概80%以上都在看新帖，20以下的用户有挖坟行为。</p>
<p>因此，设定如此的比率：每11个用户，1个发帖，8个看最近30%的帖，两个看老的70%的帖。</p>
<p>我的论坛帖子回复表大概是：973505个帖子的回复，两千多万的回帖。</p>
<p>根据这些数据，配合mysql的c api，写如下脚本:</p>
<p>注：脚本的my_mysql_insert()函数是有问题的，多线程下有一个资源符没处理好，因为还不太了解loadrunner的线程机制，所以留下了一个bug。</p>
<p>在做完这个脚本后，我发现我们测试机性能都不错，很难在一个5G大小的单表上主键查询造成很大的压力，所以，计划把dz论坛架设，用php+mysql真实环境下进行压测，这样可以顺便练习http函数下的loadrunner编程。</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">globals.h</li>
<li>#ifndef _GLOBALS_H </li>
<li>#define _GLOBALS_H</li>
<li>#include &quot;lrun.h&quot;</li>
<li>#include &quot;web_api.h&quot;</li>
<li>#include &quot;lrw_custom_body.h&quot;</li>
<li>#include &quot;modal_dialog_callbacks.h&quot;</li>
<li>#define random(x) (rand()%x)</li>
<li>#include &lt;mysql .h&gt;</li>
<li>#include &lt;mysql_com .h&gt;</li>
<li>#include &lt;mysql_time .h&gt;</li>
<li>#include &lt;mysql_version .h&gt;</li>
<li>#include &lt;typelib .h&gt;</li>
<li>#include &lt;my_list .h&gt;</li>
<li>#include &lt;my_alloc .h&gt;</li>
<li>#endif // _GLOBALS_H</li>
<li>&lt;/my_alloc&gt;&lt;/my_list&gt;&lt;/typelib&gt;&lt;/mysql_version&gt;&lt;/mysql_time&gt;&lt;/mysql_com&gt;&lt;/mysql&gt;</li></ol></div>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">vuser_init.c</li>
<li>MYSQL *db;</li>
<li>MYSQL_ROW record;</li>
<li>vuser_init()</li>
<li>{</li>
<li>	char sql[128];</li>
<li>	MYSQL_RES *results1;</li>
<li>&nbsp;&nbsp; &nbsp;lr_load_dll(&quot;libmysql.dll&quot;);</li>
<li>&nbsp;&nbsp; &nbsp;db = mysql_init(NULL);</li>
<li>	mysql_real_connect(db, &quot;192.168.8.32&quot;, &quot;root&quot;, &quot;123456&quot;, &quot;sunboyu_test&quot;, 3311, &quot;/tmp/mysql3311.sock&quot;, 1);</li>
<li>&nbsp;&nbsp; &nbsp;</li>
<li>	sprintf(sql, &quot;show tables&quot;);</li>
<li>	mysql_query(db, sql);</li>
<li>&nbsp;&nbsp; &nbsp;results1 = mysql_store_result(db);</li>
<li>&nbsp;&nbsp; &nbsp;while((record = mysql_fetch_row(results1))) </li>
<li>	{</li>
<li>	&nbsp; &nbsp; lr_log_message(&quot;table = %s&quot;, record[0]);</li>
<li>&nbsp;&nbsp; &nbsp; }</li>
<li>	mysql_free_result(results1);</li>
<li>	return 0;</li>
<li>}</li></ol></div>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">vuser_end.c</li>
<li>vuser_end()</li>
<li>{</li>
<li>&nbsp;&nbsp; mysql_close(db);</li>
<li>&nbsp;&nbsp; mysql_server_end();</li>
<li>	return 0;</li>
<li>}</li></ol></div>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">Action.c</li>
<li>Action()</li>
<li>{</li>
<li>	int r1 = 0;</li>
<li>	char sql[128];</li>
<li>	r1 = random(11);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //10种用户，8种正常访问，两种在挖坟</li>
<li>	lr_log_message(&quot; %d&quot;, r1);</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if(r1==11)</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;my_mysql_insert();</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;else</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;my_mysql_query( r1 );</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</li>
<li>	return 0;</li>
<li>}</li>
<li>&nbsp;</li>
<li>int my_mysql_query( int randid )</li>
<li>{</li>
<li>	int r2 = 0;</li>
<li>	int j = 0;</li>
<li>	int count = 0;</li>
<li>	int page = 0;</li>
<li>	char sql[128];</li>
<li>	MYSQL_RES *results2;</li>
<li>	if(randid&amp;lt;2)&nbsp; //老数据，小部分 20%</li>
<li>	{</li>
<li>		r2 = random(700000);</li>
<li>		sprintf(sql, &quot;SELECT COUNT(*) AS count FROM posts_jx3 WHERE tid = %d;&quot;,r2);</li>
<li>		lr_log_message(&quot;%s&quot;,sql);</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;mysql_query(db, sql);</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;results2 = mysql_store_result(db);</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;while((record = mysql_fetch_row(results2))) </li>
<li>		{</li>
<li>	&nbsp; &nbsp; &nbsp; &nbsp; lr_log_message(&quot;count = %d&quot;, record[0]);</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</li>
<li>		mysql_free_result(results2);</li>
<li>		page = count/10;</li>
<li>		lr_log_message(&quot;page = %d&quot;, page);</li>
<li>		for(j=0;j&lt; =page;j++)</li>
<li>		{</li>
<li>			sprintf(sql, &quot;SELECT *&nbsp; FROM posts_jx3 WHERE tid = %d LIMIT %d,10;&quot;,r2,j);</li>
<li>			mysql_query(db, sql);</li>
<li>			lr_log_message(&quot;%s&quot;, sql);</li>
<li>			if (j&gt;0) {</li>
<li>				&nbsp; results2 = mysql_store_result(db);</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;while((record = mysql_fetch_row(results2))) </li>
<li>		&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {</li>
<li>	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;lr_log_message(&quot;pid = %d&quot;, record[0]);</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</li>
<li>		&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mysql_free_result(results2);</li>
<li>			}</li>
<li>		}</li>
<li>	}</li>
<li>	else //新数据，大部分 80%</li>
<li>	{</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;r2 = random(273505);</li>
<li>		r2 = r2+700000;</li>
<li>		sprintf(sql, &quot;SELECT COUNT(*) AS count FROM posts_jx3 WHERE tid = %d;&quot;,r2);</li>
<li>		lr_log_message(&quot;%s&quot;,sql);</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;mysql_query(db, sql);</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;results2 = mysql_store_result(db);</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;while((record = mysql_fetch_row(results2))) </li>
<li>		{</li>
<li>			lr_log_message(&quot;count = %d&quot;, record[0]);</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</li>
<li>		mysql_free_result(results2);</li>
<li>		page = count/10;</li>
<li>		lr_log_message(&quot;page = %d&quot;, page);</li>
<li>&nbsp;</li>
<li>		for(j=0;j&lt; =page;j++)</li>
<li>		{</li>
<li>			sprintf(sql, &quot;SELECT *&nbsp; FROM posts_jx3 WHERE tid = %d LIMIT %d,10;&quot;,r2,j);</li>
<li>			lr_log_message(&quot;%s&quot;, sql);</li>
<li>			mysql_query(db, sql);</li>
<li>			if (j&gt;0) {</li>
<li>				&nbsp; results2 = mysql_store_result(db);</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;while((record = mysql_fetch_row(results2))) </li>
<li>		&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {</li>
<li>	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lr_log_message(&quot;pid = %d&quot;, record[0]);</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</li>
<li>		&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mysql_free_result(results2);</li>
<li>			}</li>
<li>		}</li>
<li>	}</li>
<li>	mysql_free_result(results2);</li>
<li>	return 0;</li>
<li>}</li>
<li>&nbsp;</li>
<li>&nbsp;</li>
<li>&nbsp;</li>
<li>int my_mysql_insert()</li>
<li>{</li>
<li>	int t;</li>
<li>&nbsp;&nbsp; &nbsp;char sql[500];</li>
<li>	MYSQL_RES *results3;</li>
<li>	sprintf(sql,&quot;%s&quot;,&quot;INSERT INTO posts_jx3 ( fid, tid, first, author, authorid, subject, dateline, message, useip, invisible, anonymous, usesig, htmlon, bbcodeoff, smileyoff, parseurloff, attachment, rate, ratetimes, status) VALUES ( 12345, 215053, 0, 'fdsafsdfsd', 2265065, '', 1240535917, 'fdsfsdfdsfd', '118.239.49.229', 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0);&quot;);</li>
<li>	lr_log_message(&quot;%s&quot;, sql);</li>
<li>&nbsp;&nbsp; &nbsp;t = mysql_query(db, sql);</li>
<li>	if(t)</li>
<li>	{</li>
<li>		lr_log_message(&quot;%s&quot;, mysql_error(db));</li>
<li>	}</li>
<li>	else</li>
<li>	{</li>
<li>		lr_log_message(&quot;%s&quot;, &quot;suc&quot;);</li>
<li>	}</li>
<li>}</li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2011/01/06/%e5%88%a9%e7%94%a8loadrunner%e5%81%9amysql%e5%8e%8b%e5%8a%9b%e6%b5%8b%e8%af%95.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>linux挂载ntfs分区</title>
		<link>http://www.sunboyu.cn/2010/12/22/linux%e6%8c%82%e8%bd%bdntfs%e5%88%86%e5%8c%ba.shtml</link>
		<comments>http://www.sunboyu.cn/2010/12/22/linux%e6%8c%82%e8%bd%bdntfs%e5%88%86%e5%8c%ba.shtml#comments</comments>
		<pubDate>Wed, 22 Dec 2010 13:54:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[centos]]></category>

		<category><![CDATA[mount]]></category>

		<category><![CDATA[ntfs]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1350</guid>
		<description><![CDATA[最近有点数据需要在linux环境下处理，我用的是centos，最简方式安装，默认不支持ntfs格式。
查资料后，有两种方式可以使centos支持ntfs：1、重新编译内核  2、增加一个插件
重新编译内核成本有点高，而且风险比较大，尝试以下插件后，很好用：
http://tuxera.com/opensource/ntfs-3g-2010.10.2.tgz
下载后，解压，进入目录  ./configure &#038;&#038; make &#038;&#038; make install 即可
然后查看硬盘分区信息：fdisk -l
我的移动硬盘可以显示如下信息：
Device Boot&#160; &#160; &#160; Start&#160; &#160; &#160; &#160; &#160;End&#160; &#160; &#160; Blocks&#160; &#160;Id&#160; System
/dev/sda1&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;2&#160; &#160; &#160; &#160;19457&#160; &#160;156280320&#160; &#160; f&#160; W95 Ext'd (LBA)
/dev/sda5&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;2&#160; &#160; &#160; &#160; 1306&#160; &#160; 10482381&#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>最近有点数据需要在linux环境下处理，我用的是centos，最简方式安装，默认不支持ntfs格式。</p>
<p>查资料后，有两种方式可以使centos支持ntfs：1、重新编译内核  2、增加一个插件</p>
<p>重新编译内核成本有点高，而且风险比较大，尝试以下插件后，很好用：</p>
<p>http://tuxera.com/opensource/ntfs-3g-2010.10.2.tgz</p>
<p>下载后，解压，进入目录  ./configure &#038;&#038; make &#038;&#038; make install 即可</p>
<p>然后查看硬盘分区信息：fdisk -l</p>
<p>我的移动硬盘可以显示如下信息：</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">Device Boot&nbsp; &nbsp; &nbsp; Start&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;End&nbsp; &nbsp; &nbsp; Blocks&nbsp; &nbsp;Id&nbsp; System</li>
<li>/dev/sda1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;2&nbsp; &nbsp; &nbsp; &nbsp;19457&nbsp; &nbsp;156280320&nbsp; &nbsp; f&nbsp; W95 Ext'd (LBA)</li>
<li>/dev/sda5&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;2&nbsp; &nbsp; &nbsp; &nbsp; 1306&nbsp; &nbsp; 10482381&nbsp; &nbsp; 7&nbsp; HPFS/NTFS</li>
<li>/dev/sda6&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1307&nbsp; &nbsp; &nbsp; &nbsp; 5222&nbsp; &nbsp; 31455238+&nbsp; &nbsp;7&nbsp; HPFS/NTFS</li>
<li>/dev/sda7&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 5223&nbsp; &nbsp; &nbsp; &nbsp;19457&nbsp; &nbsp;114342606&nbsp; &nbsp; 7&nbsp; HPFS/NTFS</li></ol></div>
<p>挂载命令 mount -t ntfs-3g /dev/sda7 /data1</p>
<p>访问 /data1 即可访问/dev/sda7 分区</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2010/12/22/linux%e6%8c%82%e8%bd%bdntfs%e5%88%86%e5%8c%ba.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>discuz全文检索lucene解决方案图例</title>
		<link>http://www.sunboyu.cn/2010/12/17/discuz%e5%85%a8%e6%96%87%e6%a3%80%e7%b4%a2lucene%e8%a7%a3%e5%86%b3%e6%96%b9%e6%a1%88%e5%9b%be%e4%be%8b.shtml</link>
		<comments>http://www.sunboyu.cn/2010/12/17/discuz%e5%85%a8%e6%96%87%e6%a3%80%e7%b4%a2lucene%e8%a7%a3%e5%86%b3%e6%96%b9%e6%a1%88%e5%9b%be%e4%be%8b.shtml#comments</comments>
		<pubDate>Fri, 17 Dec 2010 03:17:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Java]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[discuz]]></category>

		<category><![CDATA[lucene]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1347</guid>
		<description><![CDATA[
已经全部调试通过，正在往一个线上环境上部署。文档也在敢写之中，谢谢关注。
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.sunboyu.cn/upfiles/2010/12/discuze8aebae59d9be6909clucenee696b9e6a188e88d89e59bbe.jpg"><img src="http://www.sunboyu.cn/upfiles/2010/12/discuze8aebae59d9be6909clucenee696b9e6a188e88d89e59bbe-300x199.jpg" alt="discuz论坛搜索方案" title="discuz论坛搜索方案" width="300" height="199" class="aligncenter size-medium wp-image-1348" /></a></p>
<p>已经全部调试通过，正在往一个线上环境上部署。文档也在敢写之中，谢谢关注。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2010/12/17/discuz%e5%85%a8%e6%96%87%e6%a3%80%e7%b4%a2lucene%e8%a7%a3%e5%86%b3%e6%96%b9%e6%a1%88%e5%9b%be%e4%be%8b.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>discuz优化心得</title>
		<link>http://www.sunboyu.cn/2010/12/14/discuz%e4%bc%98%e5%8c%96%e5%bf%83%e5%be%97.shtml</link>
		<comments>http://www.sunboyu.cn/2010/12/14/discuz%e4%bc%98%e5%8c%96%e5%bf%83%e5%be%97.shtml#comments</comments>
		<pubDate>Tue, 14 Dec 2010 07:16:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[技术存档]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1330</guid>
		<description><![CDATA[自从09年10月份接到公司论坛改造升级任务到现在，逍遥论坛 http://bbs.xoyo.com 在性能和负载方面相对稳定,修改了原来的结构，单程序可以支持多论坛(模仿5d6d http://www.5dforum.com/ )。有几个参数可以参考：

平时在线人数：5000~10000人     峰值：50000+（超过5w后，统计表性能明显下降，关闭了统计）

之前每逢峰值论坛常挂，改造之后有充足的预案防止出问题，保证论坛用户能及时在论坛传达必要消息。
在论坛改造过程中，我写了很多文章来表述改造中的一些心得，也认识了很多朋友一起讨论dz的优化。其中最宝贵的经验，是一些无能为力的站长把他们的服务器交给我，让我亲手在一个大负载的服务器上去做优化，在这个过程中学到了很多系统优化方面的知识，更宝贵的是获得了大负载下dz的一些瓶颈点的数据。
由于考虑用户群的问题，很多技术没有办法用开源的软件实现，也无法找到替代品，考虑实际，很多dz站长自己并没有实力去涉入维护一个更改很多的论坛，所以我的方案并没有大量去应用。
在帮朋友优化的过程中，提到更多的是技术实力与维护、需求的增删与性能的平衡。
所以，我得出这样的结论供大家参考：
1、每个功能都会吃系统资源，充分考虑每个功能是否必须，不必须的功能一定要砍。
2、找系统压力点：根据我对逍遥论坛用户日志的分析，90%的压力集中在 forumdisplay.php viewthread.php上，而这些脚本的压力主要体现在表联查而造成的锁表上，最主要的表就是sessions表。sessions表集合了很多用户统计相关功能，因为，优化此表，结合上条原则，合理增删功能，达到压力减小。
3、硬件的优化。硬件优化也是我最近考虑的一个方案，想对于开发人员，硬件的开销还是很小的。合理升级硬件也是一个不错的方案。
以上结论是针对中小型网站已经碰到瓶颈的dz程序做出的建议。
而对于一个负载很大，并且有实力的团队，那在discuz上要做的文章就太多了。
1、拆表是必然的，而对于一些数据量不大但经常变动的表，完全可以全cache。
2、根据需求删改功能。discuz很强大， 但不是每个功能都是你必须使用的。
3、开源产品会给你很多灵感。
推荐的一些开源技术方案：
memcached(不用说了) 
Tokyo Cabinet DBM:性能极佳的持久存储的keyvalue数据库 
mysql udf http http://blog.s135.com/mysql-udf-http/  让tt变成从库？
lucene 必须要替换discuz默认的搜索
你还有什么想法？
一时兴起，写此文。欢迎有兴趣的朋友加 discuz性能优化讨论群 qq:41886598
]]></description>
			<content:encoded><![CDATA[<p>自从09年10月份接到公司论坛改造升级任务到现在，<a href="http://bbs.xoyo.com">逍遥论坛 http://bbs.xoyo.com</a> 在性能和负载方面相对稳定,修改了原来的结构，单程序可以支持多论坛(模仿5d6d http://www.5dforum.com/ )。有几个参数可以参考：</p>
<blockquote><p>
平时在线人数：5000~10000人     峰值：50000+（超过5w后，统计表性能明显下降，关闭了统计）
</p></blockquote>
<p>之前每逢峰值论坛常挂，改造之后有充足的预案防止出问题，保证论坛用户能及时在论坛传达必要消息。</p>
<p>在论坛改造过程中，我写了很多文章来表述改造中的一些心得，也认识了很多朋友一起讨论dz的优化。其中最宝贵的经验，是一些无能为力的站长把他们的服务器交给我，让我亲手在一个大负载的服务器上去做优化，在这个过程中学到了很多系统优化方面的知识，更宝贵的是获得了大负载下dz的一些瓶颈点的数据。</p>
<p>由于考虑用户群的问题，很多技术没有办法用开源的软件实现，也无法找到替代品，考虑实际，很多dz站长自己并没有实力去涉入维护一个更改很多的论坛，所以我的方案并没有大量去应用。</p>
<p>在帮朋友优化的过程中，提到更多的是技术实力与维护、需求的增删与性能的平衡。</p>
<p>所以，我得出这样的结论供大家参考：</p>
<p>1、每个功能都会吃系统资源，充分考虑每个功能是否必须，不必须的功能一定要砍。</p>
<p>2、找系统压力点：根据我对逍遥论坛用户日志的分析，90%的压力集中在 forumdisplay.php viewthread.php上，而这些脚本的压力主要体现在表联查而造成的锁表上，最主要的表就是sessions表。sessions表集合了很多用户统计相关功能，因为，优化此表，结合上条原则，合理增删功能，达到压力减小。</p>
<p>3、硬件的优化。硬件优化也是我最近考虑的一个方案，想对于开发人员，硬件的开销还是很小的。合理升级硬件也是一个不错的方案。</p>
<p>以上结论是针对中小型网站已经碰到瓶颈的dz程序做出的建议。</p>
<p>而对于一个负载很大，并且有实力的团队，那在discuz上要做的文章就太多了。</p>
<p>1、拆表是必然的，而对于一些数据量不大但经常变动的表，完全可以全cache。</p>
<p>2、根据需求删改功能。discuz很强大， 但不是每个功能都是你必须使用的。</p>
<p>3、开源产品会给你很多灵感。</p>
<p>推荐的一些开源技术方案：</p>
<p>memcached(不用说了) </p>
<p>Tokyo Cabinet DBM:性能极佳的持久存储的keyvalue数据库 </p>
<p>mysql udf http http://blog.s135.com/mysql-udf-http/  让tt变成从库？</p>
<p>lucene 必须要替换discuz默认的搜索</p>
<p>你还有什么想法？</p>
<p>一时兴起，写此文。欢迎有兴趣的朋友加 discuz性能优化讨论群 qq:41886598</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2010/12/14/discuz%e4%bc%98%e5%8c%96%e5%bf%83%e5%be%97.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>使用awstats对nginx的日志进行分析</title>
		<link>http://www.sunboyu.cn/2010/12/10/%e4%bd%bf%e7%94%a8awstats%e5%af%b9nginx%e7%9a%84%e6%97%a5%e5%bf%97%e8%bf%9b%e8%a1%8c%e5%88%86%e6%9e%90.shtml</link>
		<comments>http://www.sunboyu.cn/2010/12/10/%e4%bd%bf%e7%94%a8awstats%e5%af%b9nginx%e7%9a%84%e6%97%a5%e5%bf%97%e8%bf%9b%e8%a1%8c%e5%88%86%e6%9e%90.shtml#comments</comments>
		<pubDate>Fri, 10 Dec 2010 08:13:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[awstats]]></category>

		<category><![CDATA[linux]]></category>

		<category><![CDATA[nginx]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1326</guid>
		<description><![CDATA[抛弃apache很长时间了，一直在用nginx，基于第三方的统计系统很多，故很久没有分析过web服务器的日志。最近日志突然暴增，从站长统计无法看出具体暴增的原因，故配置awstats进行分析。
awstats在nginx上运行，这个配置我没做过，所以，我依然使用apache作为awstats的服务器使用。只不过换一个端口而已。
apache配置：安装请看之前的日志，配置文件增加一行配置，具体为
&#60;directory &#34;/opt/httpd-2.2.9/cgi-bin&#34;&#62;
&#160;&#160; &#160;AddHandler cgi-script .pl .cgi&#160; #这行即可
&#160;&#160; &#160;AllowOverride None
&#160;&#160; &#160;Options None
&#160;&#160; &#160;Order allow,deny
&#160;&#160; &#160;Allow from all
&#60;/directory&#62;
配置好，基本就可以启动了。注意端口号，别跟nginx重复了。
下载awstats：http://downloads.sourceforge.net/project/awstats/AWStats/7.0/awstats-7.0.tar.gz?r=http%3A%2F%2Fawstats.sourceforge.net%2F&#038;ts=1291968393&#038;use_mirror=cdnetworks-kr-1
解压后，找到 cgi-bin classes css icon js 这几个文件夹。其中cgi-bin里的文件放到apache的 cgi-bin目录下，其他放到apache的网站根目录。
然后访问 hostname:8080/cgi-bin/awstats.pl 看是不是有结果。
配置站点：
复制 cgi-bin目录下 awstats.model.conf 文件 为 awstats.hostname.conf
修改如下几个关键点
LogFile=&#34;/home/www/log/www.google.com.log&#34; #nginx的日志
SiteDomain=&#34;www.google.com&#34;
HostAliases=&#34;localhost google.com 127.0.0.1 REGEX[myserver\.com$]&#34;
配置完这些， 基本就可以使用了。
另外，还要生成报表：命令为
/opt/httpd-2.2.9/cgi-bin/awstats.pl -update -config=hostname                为了方便，可以加到crontab里。到这里就配置完了。
]]></description>
			<content:encoded><![CDATA[<p>抛弃apache很长时间了，一直在用nginx，基于第三方的统计系统很多，故很久没有分析过web服务器的日志。最近日志突然暴增，从站长统计无法看出具体暴增的原因，故配置awstats进行分析。</p>
<p>awstats在nginx上运行，这个配置我没做过，所以，我依然使用apache作为awstats的服务器使用。只不过换一个端口而已。</p>
<p>apache配置：安装请看之前的日志，配置文件增加一行配置，具体为</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">&lt;directory &quot;/opt/httpd-2.2.9/cgi-bin&quot;&gt;</li>
<li>&nbsp;&nbsp; &nbsp;AddHandler cgi-script .pl .cgi&nbsp; #这行即可</li>
<li>&nbsp;&nbsp; &nbsp;AllowOverride None</li>
<li>&nbsp;&nbsp; &nbsp;Options None</li>
<li>&nbsp;&nbsp; &nbsp;Order allow,deny</li>
<li>&nbsp;&nbsp; &nbsp;Allow from all</li>
<li>&lt;/directory&gt;</li></ol></div>
<p>配置好，基本就可以启动了。注意端口号，别跟nginx重复了。</p>
<p>下载awstats：http://downloads.sourceforge.net/project/awstats/AWStats/7.0/awstats-7.0.tar.gz?r=http%3A%2F%2Fawstats.sourceforge.net%2F&#038;ts=1291968393&#038;use_mirror=cdnetworks-kr-1</p>
<p>解压后，找到 cgi-bin classes css icon js 这几个文件夹。其中cgi-bin里的文件放到apache的 cgi-bin目录下，其他放到apache的网站根目录。</p>
<p>然后访问 hostname:8080/cgi-bin/awstats.pl 看是不是有结果。</p>
<p>配置站点：</p>
<p>复制 cgi-bin目录下 awstats.model.conf 文件 为 awstats.hostname.conf</p>
<p>修改如下几个关键点</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">LogFile=&quot;/home/www/log/www.google.com.log&quot; #nginx的日志</li>
<li>SiteDomain=&quot;www.google.com&quot;</li>
<li>HostAliases=&quot;localhost google.com 127.0.0.1 REGEX[myserver\.com$]&quot;</li></ol></div>
<p>配置完这些， 基本就可以使用了。</p>
<p>另外，还要生成报表：命令为</p>
<p>/opt/httpd-2.2.9/cgi-bin/awstats.pl -update -config=hostname                为了方便，可以加到crontab里。到这里就配置完了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2010/12/10/%e4%bd%bf%e7%94%a8awstats%e5%af%b9nginx%e7%9a%84%e6%97%a5%e5%bf%97%e8%bf%9b%e8%a1%8c%e5%88%86%e6%9e%90.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>逍遥问问正式上线</title>
		<link>http://www.sunboyu.cn/2010/12/08/%e9%80%8d%e9%81%a5%e9%97%ae%e9%97%ae%e6%ad%a3%e5%bc%8f%e4%b8%8a%e7%ba%bf.shtml</link>
		<comments>http://www.sunboyu.cn/2010/12/08/%e9%80%8d%e9%81%a5%e9%97%ae%e9%97%ae%e6%ad%a3%e5%bc%8f%e4%b8%8a%e7%ba%bf.shtml#comments</comments>
		<pubDate>Wed, 08 Dec 2010 14:22:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[逍遥谷的那些事]]></category>

		<category><![CDATA[上线]]></category>

		<category><![CDATA[逍遥问问]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1321</guid>
		<description><![CDATA[逍遥问问今天正式上线。  http://ask.xoyo.com
逍遥问问是我2010年下半年9月份接到的项目，项目需要替换老的逍遥问答系统，打造一个新的游戏问答互动系统。
产品涉及老数据的导入，系统的开发，兼容游戏产品的接口，团队配备三个开发人员、四个测试人员、一个前端页面制作人员和一个产品设计人员。
经过一期二期的努力开发，几百个bug的修改，数次需求跟进完善，逍遥问问成功上线。
我们团队有新人老人，男生女生，在各种困难、争执、矛盾的情况下，按照既定日期顺利上线。
感谢大家，我们是一个很强的团队。
]]></description>
			<content:encoded><![CDATA[<p>逍遥问问今天正式上线。  <a href="http://ask.xoyo.com">http://ask.xoyo.com</a></p>
<p>逍遥问问是我2010年下半年9月份接到的项目，项目需要替换老的逍遥问答系统，打造一个新的游戏问答互动系统。</p>
<p>产品涉及老数据的导入，系统的开发，兼容游戏产品的接口，团队配备三个开发人员、四个测试人员、一个前端页面制作人员和一个产品设计人员。</p>
<p>经过一期二期的努力开发，几百个bug的修改，数次需求跟进完善，逍遥问问成功上线。</p>
<p>我们团队有新人老人，男生女生，在各种困难、争执、矛盾的情况下，按照既定日期顺利上线。</p>
<p>感谢大家，我们是一个很强的团队。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2010/12/08/%e9%80%8d%e9%81%a5%e9%97%ae%e9%97%ae%e6%ad%a3%e5%bc%8f%e4%b8%8a%e7%ba%bf.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>开始学车</title>
		<link>http://www.sunboyu.cn/2010/12/04/%e5%bc%80%e5%a7%8b%e5%ad%a6%e8%bd%a6.shtml</link>
		<comments>http://www.sunboyu.cn/2010/12/04/%e5%bc%80%e5%a7%8b%e5%ad%a6%e8%bd%a6.shtml#comments</comments>
		<pubDate>Sat, 04 Dec 2010 13:53:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1319</guid>
		<description><![CDATA[公司组织团购了北方驾校的培训班，金山大部队，一个屋子全是金山的弟兄，还碰上了一个非常富有激情的法培教室，那是相当的刺激啊。
怀念家里的拖拉机，就报了手动挡皮卡小车。
周末学习，居然比上班起的都早，累的要死，不过痛并快乐着，虽然短期不买车，不过驾照也是一个相当实用的社会文凭。
感谢金山优秀的后勤经理克明大哥。
]]></description>
			<content:encoded><![CDATA[<p>公司组织团购了北方驾校的培训班，金山大部队，一个屋子全是金山的弟兄，还碰上了一个非常富有激情的法培教室，那是相当的刺激啊。</p>
<p>怀念家里的拖拉机，就报了手动挡皮卡小车。</p>
<p>周末学习，居然比上班起的都早，累的要死，不过痛并快乐着，虽然短期不买车，不过驾照也是一个相当实用的社会文凭。</p>
<p>感谢金山优秀的后勤经理克明大哥。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2010/12/04/%e5%bc%80%e5%a7%8b%e5%ad%a6%e8%bd%a6.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>设计模式研究</title>
		<link>http://www.sunboyu.cn/2010/12/02/%e8%ae%be%e8%ae%a1%e6%a8%a1%e5%bc%8f%e7%a0%94%e7%a9%b6.shtml</link>
		<comments>http://www.sunboyu.cn/2010/12/02/%e8%ae%be%e8%ae%a1%e6%a8%a1%e5%bc%8f%e7%a0%94%e7%a9%b6.shtml#comments</comments>
		<pubDate>Thu, 02 Dec 2010 14:47:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[设计模式]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1317</guid>
		<description><![CDATA[研究PHP设计模式其实很久，不过真正在使用上却用的不是很多。但凡设计模式都用在大型负载的商业软件商，而对于web开发，尤其一些短平快的产品，设计模式显得不是那么重要。而只有一些非常核心和通用的部分，我们加以封装，主要是方便复用。
通过最近做一些项目，松散的设计明显不能满足项目的需求，随意的代码虽然能加快项目进度，但也造成很严重的技术透支。
重新认识框架，可以得出以下体会：
框架的确是限制人的，但不是技术的限制，不是思想的限制，而是规范合作的限制。
项目的设计规划人员要付出更多，其设计了框架的核心后，开发人员在你的思路下进行开发，你的一点点错误会在几个人身上得到成倍的放大。
坚持一种设计思路，即使已经走了很多弯路，但起码保证这些弯路要走踏实，而不是一条泥泞的弯路。
一个优化的框架不仅是完成基本功能，更要让开发人员感觉爽，这是最重要的（很难实现）。
最后，继续琢磨我的框架吧。
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-题外话&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;
最新学了一段时间的C，包括我以前也提倡，用写C的态度来写PHP。写C语言，每个变量，每块内存都要完全规划在你的脑子里，处理不好，程序是绝对跑不动的。做PHP项目，也要注意这些细节，虽然PHP是弱类型的语言。当然，做一个项目，也要去考虑方方面面。
]]></description>
			<content:encoded><![CDATA[<p>研究PHP设计模式其实很久，不过真正在使用上却用的不是很多。但凡设计模式都用在大型负载的商业软件商，而对于web开发，尤其一些短平快的产品，设计模式显得不是那么重要。而只有一些非常核心和通用的部分，我们加以封装，主要是方便复用。</p>
<p>通过最近做一些项目，松散的设计明显不能满足项目的需求，随意的代码虽然能加快项目进度，但也造成很严重的技术透支。</p>
<p>重新认识框架，可以得出以下体会：</p>
<p>框架的确是限制人的，但不是技术的限制，不是思想的限制，而是规范合作的限制。</p>
<p>项目的设计规划人员要付出更多，其设计了框架的核心后，开发人员在你的思路下进行开发，你的一点点错误会在几个人身上得到成倍的放大。</p>
<p>坚持一种设计思路，即使已经走了很多弯路，但起码保证这些弯路要走踏实，而不是一条泥泞的弯路。</p>
<p>一个优化的框架不仅是完成基本功能，更要让开发人员感觉爽，这是最重要的（很难实现）。</p>
<p>最后，继续琢磨我的框架吧。</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-题外话&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>最新学了一段时间的C，包括我以前也提倡，用写C的态度来写PHP。写C语言，每个变量，每块内存都要完全规划在你的脑子里，处理不好，程序是绝对跑不动的。做PHP项目，也要注意这些细节，虽然PHP是弱类型的语言。当然，做一个项目，也要去考虑方方面面。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2010/12/02/%e8%ae%be%e8%ae%a1%e6%a8%a1%e5%bc%8f%e7%a0%94%e7%a9%b6.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>在国内注册域名就是悲剧,在成都世纪东方注册(51web.cn),就是悲剧的悲剧</title>
		<link>http://www.sunboyu.cn/2010/11/30/%e5%9c%a8%e5%9b%bd%e5%86%85%e6%b3%a8%e5%86%8c%e5%9f%9f%e5%90%8d%e5%b0%b1%e6%98%af%e6%82%b2%e5%89%a7%e5%9c%a8%e6%88%90%e9%83%bd%e4%b8%96%e7%ba%aa%e4%b8%9c%e6%96%b9%e6%b3%a8%e5%86%8c51webcn.shtml</link>
		<comments>http://www.sunboyu.cn/2010/11/30/%e5%9c%a8%e5%9b%bd%e5%86%85%e6%b3%a8%e5%86%8c%e5%9f%9f%e5%90%8d%e5%b0%b1%e6%98%af%e6%82%b2%e5%89%a7%e5%9c%a8%e6%88%90%e9%83%bd%e4%b8%96%e7%ba%aa%e4%b8%9c%e6%96%b9%e6%b3%a8%e5%86%8c51webcn.shtml#comments</comments>
		<pubDate>Tue, 30 Nov 2010 01:31:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<category><![CDATA[51web]]></category>

		<category><![CDATA[世纪东方]]></category>

		<category><![CDATA[骗子]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1313</guid>
		<description><![CDATA[本人一com域名想转出，遂联系世纪东方客服：
成都世纪东方网络通信有限公司 9:13:15
您好，请问有什么可以帮您？
我 9:13:21
你好
我 9:13:37
我想办理域名转出
成都世纪东方网络通信有限公司 9:14:01
域名转出：先在域名管理中，查看这个域名是哪个顶级商的接口，然后点http://help.51web.com/domain/分别查看您所对应接口的域名转出
流程，上面很清楚的介绍表格如何填写，请您详细查看。过期前30天和续费后60天不能办理转出，转出费用20元每个。
我 9:14:32
为什么要交转出费？
成都世纪东方网络通信有限公司 9:15:08
收 20元 手续费。
我 9:15:17
有物价局规定么
成都世纪东方网络通信有限公司 9:15:36
我司规定的，我们要寄资料到顶级商才能办理转出
我 9:15:52
我给寄行吧
成都世纪东方网络通信有限公司 9:20:24
全国主机9强!极速海外主机免备案=100元 C0M=55 香港VPS=258 礼品特大放送~http://huodong1.51web.com
我 9:20:35
支付宝给你们付款行么
成都世纪东方网络通信有限公司 9:20:46
请按流程办理
成都世纪东方网络通信有限公司 9:20:47
感谢支持
我 9:21:02
什么流程？
成都世纪东方网络通信有限公司 9:21:16
域名转出流程
我 9:21:23
在哪？
成都世纪东方网络通信有限公司 9:21:42
域名是？
我 9:21:49
zhengxingde.com
成都世纪东方网络通信有限公司 9:22:26
http://help.51web.com/view.php?id=180
我 9:23:24
这个域名我得提供什么
成都世纪东方网络通信有限公司 9:23:56
http://help.51web.com/view.php?id=180
按这个流程办理
我 9:24:04
看不明白
我 9:24:13
你就告诉我现在我应该做什么
成都世纪东方网络通信有限公司 9:24:38
http://help.51web.com/view.php?id=180
按这个流程办理
我 9:24:45
看不懂
成都世纪东方网络通信有限公司 9:24:56
你是那里看不懂呀
我 9:24:59
麻烦告诉我应该走哪个步骤，填哪个表
成都世纪东方网络通信有限公司 9:25:00
您仔细看过了吗
我 9:25:05 
我 9:25:09
什么是国内域名
我 9:25:13
所有人
我 9:25:22
我需要到你们公司么
我 9:25:29 
我 9:25:34
这两个表有什么区别
我 9:25:42 
我 9:25:46
这都得填么？
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-
然后，没下文了。我打电话到新网总部，新网说这些事不管，一切找代理。
域名只能不要了，不是重要域名，不值当折腾。
不过鉴于国内环境，千万不要在国内注册域名了，更不要在 成都世纪东方注册了 用了这么多年了，我他妈受够了。
大家可以根据这篇文章去转自己的域名 http://blog.s135.com/domain_transfer/
随着国际信用卡的普及，在国外注册域名已经很方便了，godday也支持支付宝支付，所以，大家注册域名的时候，一定要给自己留足够的后路。
]]></description>
			<content:encoded><![CDATA[<p>本人一com域名想转出，遂联系世纪东方客服：</p>
<p>成都世纪东方网络通信有限公司 9:13:15<br />
您好，请问有什么可以帮您？<br />
我 9:13:21<br />
你好<br />
我 9:13:37<br />
我想办理域名转出<br />
成都世纪东方网络通信有限公司 9:14:01<br />
域名转出：先在域名管理中，查看这个域名是哪个顶级商的接口，然后点http://help.51web.com/domain/分别查看您所对应接口的域名转出</p>
<p>流程，上面很清楚的介绍表格如何填写，请您详细查看。过期前30天和续费后60天不能办理转出，转出费用20元每个。<br />
我 9:14:32<br />
为什么要交转出费？<br />
成都世纪东方网络通信有限公司 9:15:08<br />
收 20元 手续费。<br />
我 9:15:17<br />
有物价局规定么<br />
成都世纪东方网络通信有限公司 9:15:36<br />
我司规定的，我们要寄资料到顶级商才能办理转出<br />
我 9:15:52<br />
我给寄行吧<br />
成都世纪东方网络通信有限公司 9:20:24<br />
全国主机9强!极速海外主机免备案=100元 C0M=55 香港VPS=258 礼品特大放送~http://huodong1.51web.com<br />
我 9:20:35<br />
支付宝给你们付款行么<br />
成都世纪东方网络通信有限公司 9:20:46<br />
请按流程办理<br />
成都世纪东方网络通信有限公司 9:20:47<br />
感谢支持<br />
我 9:21:02<br />
什么流程？<br />
成都世纪东方网络通信有限公司 9:21:16<br />
域名转出流程<br />
我 9:21:23<br />
在哪？<br />
成都世纪东方网络通信有限公司 9:21:42<br />
域名是？<br />
我 9:21:49<br />
zhengxingde.com<br />
成都世纪东方网络通信有限公司 9:22:26<br />
http://help.51web.com/view.php?id=180<br />
我 9:23:24<br />
这个域名我得提供什么<br />
成都世纪东方网络通信有限公司 9:23:56<br />
http://help.51web.com/view.php?id=180<br />
按这个流程办理<br />
我 9:24:04<br />
看不明白<br />
我 9:24:13<br />
你就告诉我现在我应该做什么<br />
成都世纪东方网络通信有限公司 9:24:38<br />
http://help.51web.com/view.php?id=180<br />
按这个流程办理<br />
我 9:24:45<br />
看不懂<br />
成都世纪东方网络通信有限公司 9:24:56<br />
你是那里看不懂呀<br />
我 9:24:59<br />
麻烦告诉我应该走哪个步骤，填哪个表<br />
成都世纪东方网络通信有限公司 9:25:00<br />
您仔细看过了吗<br />
我 9:25:05 </p>
<p>我 9:25:09<br />
什么是国内域名<br />
我 9:25:13<br />
所有人<br />
我 9:25:22<br />
我需要到你们公司么<br />
我 9:25:29 </p>
<p>我 9:25:34<br />
这两个表有什么区别<br />
我 9:25:42 </p>
<p>我 9:25:46<br />
这都得填么？</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
然后，没下文了。我打电话到新网总部，新网说这些事不管，一切找代理。</p>
<p>域名只能不要了，不是重要域名，不值当折腾。</p>
<p>不过鉴于国内环境，千万不要在国内注册域名了，更不要在 成都世纪东方注册了 用了这么多年了，我他妈受够了。</p>
<p>大家可以根据这篇文章去转自己的域名 <a href="http://blog.s135.com/domain_transfer/">http://blog.s135.com/domain_transfer/</a></p>
<p>随着国际信用卡的普及，在国外注册域名已经很方便了，godday也支持支付宝支付，所以，大家注册域名的时候，一定要给自己留足够的后路。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2010/11/30/%e5%9c%a8%e5%9b%bd%e5%86%85%e6%b3%a8%e5%86%8c%e5%9f%9f%e5%90%8d%e5%b0%b1%e6%98%af%e6%82%b2%e5%89%a7%e5%9c%a8%e6%88%90%e9%83%bd%e4%b8%96%e7%ba%aa%e4%b8%9c%e6%96%b9%e6%b3%a8%e5%86%8c51webcn.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>闲谈产品</title>
		<link>http://www.sunboyu.cn/2010/11/09/%e9%97%b2%e8%b0%88%e4%ba%a7%e5%93%81.shtml</link>
		<comments>http://www.sunboyu.cn/2010/11/09/%e9%97%b2%e8%b0%88%e4%ba%a7%e5%93%81.shtml#comments</comments>
		<pubDate>Tue, 09 Nov 2010 15:21:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1306</guid>
		<description><![CDATA[作为一个开发人员，谈产品不是自己的本职工作，但代码写烦了，就爱想点别的去放松。
最近博客被黑了，漏洞点还没定位得到，当然某人还会继续给我添加那些js代码，不管这个，总之那人是为了SEO优化而给我捣乱，并没有偷账号删数据的行为，黑就黑吧。
谈两个产品，qq，360。谈他们绝对不是为了拉点流量，而是这两个产品与我关系太大了。
先谈360，这里不得不说这个产品的优秀。一个流氓软件被优秀的产品设计和强大的水军搞得有了两亿用户，从这点来看，周鸿祎绝对是个牛人。从360问世，我也曾被其强大的插件卸载功能所震慑（后来想想，自己杀自己的软件难度还是不大的）。周鸿祎在谈软件设计的时候，谈了一个做减法的思路，很好。一个产品出来，一定要有亮点，不需要多，一个足矣。第一个应该是卸插件。第二个应该是打补丁。其他功能说实话，用的还真不多。后来想，周为什么能做好这两件事：1、他是流氓软件之父。2、他是微软在华的盗版代言人。有这两点支撑，做不好就有问题了。
大多数人做产品，估计没有**之父的光环，也没有微软这样的后台，唯一可取的，就是找到产品亮点，做精。
第二个是qq。其实没有360跟qq打的这一架，那些平时损qq的人不知道自己有多依赖qq。反正那天骂qq的太多了，诈唬着要卸qq。不过我好友里那些小妮子小崽子们挂着损qq的签名还始终亮着头像。你得了好处就卖卖乖也无所谓，得了好处再反咬一口就有点不厚道了。
可见，一个产品要做好，就得想办法让用户痛哭流涕生离死别离不开你。
如果能把以上两点结合起来，那产品可就太牛(A+C)/2了。
]]></description>
			<content:encoded><![CDATA[<p>作为一个开发人员，谈产品不是自己的本职工作，但代码写烦了，就爱想点别的去放松。</p>
<p>最近博客被黑了，漏洞点还没定位得到，当然某人还会继续给我添加那些js代码，不管这个，总之那人是为了SEO优化而给我捣乱，并没有偷账号删数据的行为，黑就黑吧。</p>
<p>谈两个产品，qq，360。谈他们绝对不是为了拉点流量，而是这两个产品与我关系太大了。</p>
<p>先谈360，这里不得不说这个产品的优秀。一个流氓软件被优秀的产品设计和强大的水军搞得有了两亿用户，从这点来看，周鸿祎绝对是个牛人。从360问世，我也曾被其强大的插件卸载功能所震慑（后来想想，自己杀自己的软件难度还是不大的）。周鸿祎在谈软件设计的时候，谈了一个做减法的思路，很好。一个产品出来，一定要有亮点，不需要多，一个足矣。第一个应该是卸插件。第二个应该是打补丁。其他功能说实话，用的还真不多。后来想，周为什么能做好这两件事：1、他是流氓软件之父。2、他是微软在华的盗版代言人。有这两点支撑，做不好就有问题了。</p>
<p>大多数人做产品，估计没有**之父的光环，也没有微软这样的后台，唯一可取的，就是找到产品<strong>亮点</strong>，做<strong>精</strong>。</p>
<p>第二个是qq。其实没有360跟qq打的这一架，那些平时损qq的人不知道自己有多依赖qq。反正那天骂qq的太多了，诈唬着要卸qq。不过我好友里那些小妮子小崽子们挂着损qq的签名还始终亮着头像。你得了好处就卖卖乖也无所谓，得了好处再反咬一口就有点不厚道了。</p>
<p>可见，一个产品要做好，就得想办法让用户痛哭流涕生离死别<strong>离不开</strong>你。</p>
<p>如果能把以上两点结合起来，那产品可就太牛(A+C)/2了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2010/11/09/%e9%97%b2%e8%b0%88%e4%ba%a7%e5%93%81.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>学习PHP开发的一些资源</title>
		<link>http://www.sunboyu.cn/2010/11/09/%e5%ad%a6%e4%b9%a0php%e5%bc%80%e5%8f%91%e7%9a%84%e4%b8%80%e4%ba%9b%e8%b5%84%e6%ba%90.shtml</link>
		<comments>http://www.sunboyu.cn/2010/11/09/%e5%ad%a6%e4%b9%a0php%e5%bc%80%e5%8f%91%e7%9a%84%e4%b8%80%e4%ba%9b%e8%b5%84%e6%ba%90.shtml#comments</comments>
		<pubDate>Tue, 09 Nov 2010 14:42:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[api]]></category>

		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1304</guid>
		<description><![CDATA[http://blog.csdn.net/alexdream/archive/2008/03/24/2213344.aspx
http://devzone.zend.com/node/view/id/1022
http://blog.csdn.net/alin0725/archive/2007/04/08/1556460.aspx
http://devzone.zend.com/article/1024-Extension-Writing-Part-III-Resources       这篇文章不错，讲PHP如果管理连接符
http://www.phpbbchina.com/wiki/index.php/%E7%BC%96%E5%86%99PHP%E6%89%A9%E5%B1%95   中文教程
]]></description>
			<content:encoded><![CDATA[<p>http://blog.csdn.net/alexdream/archive/2008/03/24/2213344.aspx</p>
<p>http://devzone.zend.com/node/view/id/1022</p>
<p>http://blog.csdn.net/alin0725/archive/2007/04/08/1556460.aspx</p>
<p>http://devzone.zend.com/article/1024-Extension-Writing-Part-III-Resources       这篇文章不错，讲PHP如果管理连接符</p>
<p>http://www.phpbbchina.com/wiki/index.php/%E7%BC%96%E5%86%99PHP%E6%89%A9%E5%B1%95   中文教程</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2010/11/09/%e5%ad%a6%e4%b9%a0php%e5%bc%80%e5%8f%91%e7%9a%84%e4%b8%80%e4%ba%9b%e8%b5%84%e6%ba%90.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>使用MYSQL C api操作mysql</title>
		<link>http://www.sunboyu.cn/2010/10/31/%e4%bd%bf%e7%94%a8mysql-c-api%e6%93%8d%e4%bd%9cmysql.shtml</link>
		<comments>http://www.sunboyu.cn/2010/10/31/%e4%bd%bf%e7%94%a8mysql-c-api%e6%93%8d%e4%bd%9cmysql.shtml#comments</comments>
		<pubDate>Sun, 31 Oct 2010 13:13:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[MYSQL]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1298</guid>
		<description><![CDATA[
#include 
#include 
#include &#8220;mysql.h&#8221;
int main(int argc, char **argv)
{
	MYSQL mysql, *sock;
	MYSQL_RES *res;
	MYSQL_FIELD *fd;
	MYSQL_ROW row;
	char sql[160];
	char host[20];
	char user[20];
	char pass[20];
	char data[20];
	int i;
	if(argc!=6)
	{
		fprintf(stderr, &#8220;Please input you host, username, password, dbname, sql\n\n&#8221;);
		exit(0);
	}
    sprintf(host, argv[1]);
	sprintf(user, argv[2]);
	sprintf(pass, argv[3]);
	sprintf(data, argv[4]);
	sprintf(sql, argv[5]);
	mysql_init(&#038;mysql);
	if(!(sock=mysql_real_connect(&#038;mysql, host, user, pass, data, 0, NULL, 0)))
	{
		fprintf(stderr, &#8220;Can&#8217;t connect to engine!\n%s\n&#8221;, mysql_error(&#038;mysql));
		perror(&#8221;");
		exit(0);
	}
	if(mysql_query(sock, sql))
	{
		fprintf(stderr, &#8220;Query failed (%s)\n&#8221;, mysql_error(sock));
		exit(1);
	}
	if(!(res=mysql_store_result(sock)))
	{
		fprintf(stderr, &#8220;Couldn`t get [...]]]></description>
			<content:encoded><![CDATA[<p><code><br />
#include <stdio .h><br />
#include <stdlib .h><br />
#include &#8220;mysql.h&#8221;</p>
<p>int main(int argc, char **argv)<br />
{<br />
	MYSQL mysql, *sock;<br />
	MYSQL_RES *res;<br />
	MYSQL_FIELD *fd;<br />
	MYSQL_ROW row;<br />
	char sql[160];<br />
	char host[20];<br />
	char user[20];<br />
	char pass[20];<br />
	char data[20];<br />
	int i;<br />
	if(argc!=6)<br />
	{<br />
		fprintf(stderr, &#8220;Please input you host, username, password, dbname, sql\n\n&#8221;);<br />
		exit(0);<br />
	}<br />
    sprintf(host, argv[1]);<br />
	sprintf(user, argv[2]);<br />
	sprintf(pass, argv[3]);<br />
	sprintf(data, argv[4]);<br />
	sprintf(sql, argv[5]);<br />
	mysql_init(&#038;mysql);<br />
	if(!(sock=mysql_real_connect(&#038;mysql, host, user, pass, data, 0, NULL, 0)))<br />
	{<br />
		fprintf(stderr, &#8220;Can&#8217;t connect to engine!\n%s\n&#8221;, mysql_error(&#038;mysql));<br />
		perror(&#8221;");<br />
		exit(0);<br />
	}<br />
	if(mysql_query(sock, sql))<br />
	{<br />
		fprintf(stderr, &#8220;Query failed (%s)\n&#8221;, mysql_error(sock));<br />
		exit(1);<br />
	}<br />
	if(!(res=mysql_store_result(sock)))<br />
	{<br />
		fprintf(stderr, &#8220;Couldn`t get result from %s\n&#8221;, mysql_error(sock));<br />
		exit(1);<br />
	}<br />
	printf(&#8221;number of fields returned:%d\n&#8221;, mysql_num_fields(res));<br />
	while(row=mysql_fetch_row(res))<br />
	{<br />
		for(i=0;i<mysql_num_fields (res);i++)<br />
		{<br />
			printf("%d:%s   ",i,row[i]);<br />
		}<br />
		printf("\r\n");<br />
	}<br />
	mysql_free_result(res);<br />
	mysql_close(sock);<br />
	exit(0);<br />
	return 0;<br />
}<br />
</code><br />
编译参数：gcc mysql.c -o mysql -I /usr/include/mysql -L /lib/mysql -lmysqlclient</mysql_num_fields></stdlib></stdio></code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2010/10/31/%e4%bd%bf%e7%94%a8mysql-c-api%e6%93%8d%e4%bd%9cmysql.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>如何打好工</title>
		<link>http://www.sunboyu.cn/2010/10/29/%e5%a6%82%e4%bd%95%e6%89%93%e5%a5%bd%e5%b7%a5.shtml</link>
		<comments>http://www.sunboyu.cn/2010/10/29/%e5%a6%82%e4%bd%95%e6%89%93%e5%a5%bd%e5%b7%a5.shtml#comments</comments>
		<pubDate>Fri, 29 Oct 2010 01:09:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[相当拍砖]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1296</guid>
		<description><![CDATA[1 	能够客观公正地评价自己和他人的优缺点。
2 	及时发现工作中的问题，并能立即主动进行解决。
3 	能够积极分享有利于目标实现或对他人有帮助的关键资源、信息等。
4 	以事实为依据，用数据说话，在工作中能够有效的运用数据分析来解决问题。
5 	能够坦诚地与别人交流，并能友善接纳别人对自己的意见，甚至是负面的反馈。
6 	花时间澄清并确认任务目标、完成时间、质量要求、资源投入等，进行缜密计划。
7 	能够主动探索或引进新的技术、业务流程或工作方法，并能真正推动工作效率提升。
8 	积极学习，广泛交流，不断拓宽知识的广度和深度，并将所学知识有效的运用到实际工作中。
9 	自始至终关注工作的进程，定期就任务完成过程中的关键点认真核查。任务完成后，主动检查有没有漏掉或需要修正的环节。
10 	站在用户的角度思考“用户的真正需求是什么”，并在日常工作中认真落实。
]]></description>
			<content:encoded><![CDATA[<p>1 	能够客观公正地评价自己和他人的优缺点。<br />
2 	及时发现工作中的问题，并能立即主动进行解决。<br />
3 	能够积极分享有利于目标实现或对他人有帮助的关键资源、信息等。<br />
4 	以事实为依据，用数据说话，在工作中能够有效的运用数据分析来解决问题。<br />
5 	能够坦诚地与别人交流，并能友善接纳别人对自己的意见，甚至是负面的反馈。<br />
6 	花时间澄清并确认任务目标、完成时间、质量要求、资源投入等，进行缜密计划。<br />
7 	能够主动探索或引进新的技术、业务流程或工作方法，并能真正推动工作效率提升。<br />
8 	积极学习，广泛交流，不断拓宽知识的广度和深度，并将所学知识有效的运用到实际工作中。<br />
9 	自始至终关注工作的进程，定期就任务完成过程中的关键点认真核查。任务完成后，主动检查有没有漏掉或需要修正的环节。<br />
10 	站在用户的角度思考“用户的真正需求是什么”，并在日常工作中认真落实。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2010/10/29/%e5%a6%82%e4%bd%95%e6%89%93%e5%a5%bd%e5%b7%a5.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>缸炉烧饼</title>
		<link>http://www.sunboyu.cn/2010/10/24/%e7%bc%b8%e7%82%89%e7%83%a7%e9%a5%bc.shtml</link>
		<comments>http://www.sunboyu.cn/2010/10/24/%e7%bc%b8%e7%82%89%e7%83%a7%e9%a5%bc.shtml#comments</comments>
		<pubDate>Sun, 24 Oct 2010 08:33:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[其他]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1293</guid>
		<description><![CDATA[最近做梦，梦见了老家的缸炉烧饼。在北京找了数多地方，没找到卖缸炉烧饼的。流连之际，发现有人跟我一样怀念着家乡不起眼的小吃。遂转载一故乡作家的文章。
土豆网：缸炉烧饼的介绍

　　正如到北京不吃全聚德烤鸭就不算到北京一样，如果到了平山不吃缸炉烧饼，那就不能说到过平山。
　　说起平山，可能没几个人知道这个小小的县城，但说起革命圣地西柏坡，恐怕用如雷贯耳来形容一点儿也不过分，而这个大名鼎鼎的西柏坡，就是平山县的一个小村庄。从1990年离开家乡平山，到今年已经整整二十年了。二十年间，家乡的很多东西都如过眼烟云，并没有在我心中留下多少印象。倒是这缸炉烧饼，总如儿时那样的亲切，以至于每次回老家，都回吃上一次，甚至于有亲戚朋友回去，都委托他们带回来几个尝尝鲜。
　　面食里叫烧饼的并不少，无非是放了油盐，和好面后上面沾上芝麻，用锅烙得金黄。但缸炉烧饼却有它的独特之处，一是方形，据我了解，各地的烧饼样式不少，但大部分是圆的，仅有这缸炉烧饼，便便做成了方形，原因当然不得而知，但这便从形状上与其他的烧饼分开了；二是有细分类，大致可分为；普通、油酥、牛肉罩等；三是制作方式不同，大部分烧饼都是用锅烙，而缸炉烧饼却是像烤红薯一样，做好后放在一个铁筒中烘烤。
　　刚出炉的烧饼，表面焦黄，如上中间有一个山包样的大鼓，上面粘着白白的芝麻，咬一口酥中带脆，满口清香，油酥烧饼，更是酥软可口，至于牛肉罩的，是在烧饼的表面放了一层细如肉松的牛肉粒，一口下去，不仅香气四溢，而且烤牛肉的香味久久不散，晚上连牙都舍不得刷了。
　　记得很小的时候，每到赶集，总是跟在家长后面缠着要去，其实也没什么东西可买，只是为了2分钱一个的烧饼，但因为家里条件实在不好，就是这样的要求一年也只能实现有限的几次。于是又求了家长在家里做，面和油都不错，但就是做不出那个味道，但有总比没有的好，吃不上买的，自己做的也可以解一下馋。每年年底，姥爷都会来家里看看，对于他带来的其他东西，我们一概不问，只是找他书包里的那几个缸炉烧饼。久而久之，姥爷每次来，也总会带一包缸炉烧饼来。
　　后来，缸炉烧饼又长到5分一个，一角一个，两角一个，现在，已经是四角一个了。但我对于缸炉烧饼的情节，不仅没有减退，而是越来越浓重了。
　　四个角的缸炉烧饼就像是一座城，一座建在我心中的城，一座没有城门的城。不论走到哪里，我总也无法突破它，也从来没有想过要突破它。
]]></description>
			<content:encoded><![CDATA[<blockquote><p>最近做梦，梦见了老家的缸炉烧饼。在北京找了数多地方，没找到卖缸炉烧饼的。流连之际，发现有人跟我一样怀念着家乡不起眼的小吃。遂转载一故乡作家的文章。</p></blockquote>
<blockquote><p><a href="http://www.tudou.com/programs/view/fdSpqc--c3o/" target="_blank">土豆网：缸炉烧饼的介绍</a></p></blockquote>
<p><img src="http://www.waywaycn.com/userfiles/acc_img/2/4/1/p_6_602_071213175750.jpg" alt="缸炉烧饼" /></p>
<p>　　正如到北京不吃全聚德烤鸭就不算到北京一样，如果到了平山不吃缸炉烧饼，那就不能说到过平山。</p>
<p>　　说起平山，可能没几个人知道这个小小的县城，但说起革命圣地西柏坡，恐怕用如雷贯耳来形容一点儿也不过分，而这个大名鼎鼎的西柏坡，就是平山县的一个小村庄。从1990年离开家乡平山，到今年已经整整二十年了。二十年间，家乡的很多东西都如过眼烟云，并没有在我心中留下多少印象。倒是这缸炉烧饼，总如儿时那样的亲切，以至于每次回老家，都回吃上一次，甚至于有亲戚朋友回去，都委托他们带回来几个尝尝鲜。</p>
<p>　　面食里叫烧饼的并不少，无非是放了油盐，和好面后上面沾上芝麻，用锅烙得金黄。但缸炉烧饼却有它的独特之处，一是方形，据我了解，各地的烧饼样式不少，但大部分是圆的，仅有这缸炉烧饼，便便做成了方形，原因当然不得而知，但这便从形状上与其他的烧饼分开了；二是有细分类，大致可分为；普通、油酥、牛肉罩等；三是制作方式不同，大部分烧饼都是用锅烙，而缸炉烧饼却是像烤红薯一样，做好后放在一个铁筒中烘烤。</p>
<p>　　刚出炉的烧饼，表面焦黄，如上中间有一个山包样的大鼓，上面粘着白白的芝麻，咬一口酥中带脆，满口清香，油酥烧饼，更是酥软可口，至于牛肉罩的，是在烧饼的表面放了一层细如肉松的牛肉粒，一口下去，不仅香气四溢，而且烤牛肉的香味久久不散，晚上连牙都舍不得刷了。</p>
<p>　　记得很小的时候，每到赶集，总是跟在家长后面缠着要去，其实也没什么东西可买，只是为了2分钱一个的烧饼，但因为家里条件实在不好，就是这样的要求一年也只能实现有限的几次。于是又求了家长在家里做，面和油都不错，但就是做不出那个味道，但有总比没有的好，吃不上买的，自己做的也可以解一下馋。每年年底，姥爷都会来家里看看，对于他带来的其他东西，我们一概不问，只是找他书包里的那几个缸炉烧饼。久而久之，姥爷每次来，也总会带一包缸炉烧饼来。</p>
<p>　　后来，缸炉烧饼又长到5分一个，一角一个，两角一个，现在，已经是四角一个了。但我对于缸炉烧饼的情节，不仅没有减退，而是越来越浓重了。</p>
<p>　　四个角的缸炉烧饼就像是一座城，一座建在我心中的城，一座没有城门的城。不论走到哪里，我总也无法突破它，也从来没有想过要突破它。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2010/10/24/%e7%bc%b8%e7%82%89%e7%83%a7%e9%a5%bc.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>密码保护：制定新的学习计划</title>
		<link>http://www.sunboyu.cn/2010/10/17/%e5%88%b6%e5%ae%9a%e6%96%b0%e7%9a%84%e5%ad%a6%e4%b9%a0%e8%ae%a1%e5%88%92.shtml</link>
		<comments>http://www.sunboyu.cn/2010/10/17/%e5%88%b6%e5%ae%9a%e6%96%b0%e7%9a%84%e5%ad%a6%e4%b9%a0%e8%ae%a1%e5%88%92.shtml#comments</comments>
		<pubDate>Sun, 17 Oct 2010 14:35:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[原创技术]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1282</guid>
		<description><![CDATA[无法提供任何摘要。这是一篇受保护的文章。]]></description>
			<content:encoded><![CDATA[<form action="http://www.sunboyu.cn/wp-pass.php" method="post">
<p>这是一篇受密码保护的文章。您需要提供访问密码：</p>
<p><label for="pwbox-1282">密码：<br />
<input name="post_password" id="pwbox-1282" type="password" size="20" /></label><br />
<input type="submit" name="Submit" value="提交" /></p></form>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2010/10/17/%e5%88%b6%e5%ae%9a%e6%96%b0%e7%9a%84%e5%ad%a6%e4%b9%a0%e8%ae%a1%e5%88%92.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>解放思想，实事求是</title>
		<link>http://www.sunboyu.cn/2010/10/11/%e8%a7%a3%e6%94%be%e6%80%9d%e6%83%b3%ef%bc%8c%e5%ae%9e%e4%ba%8b%e6%b1%82%e6%98%af.shtml</link>
		<comments>http://www.sunboyu.cn/2010/10/11/%e8%a7%a3%e6%94%be%e6%80%9d%e6%83%b3%ef%bc%8c%e5%ae%9e%e4%ba%8b%e6%b1%82%e6%98%af.shtml#comments</comments>
		<pubDate>Mon, 11 Oct 2010 12:24:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<category><![CDATA[flash]]></category>

		<category><![CDATA[解放思想]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1280</guid>
		<description><![CDATA[由于本部门经常做一些在线摇奖的程序，需要做一个flash的转盘，中奖由后台程序控制，flash转盘只是制造一个摇奖转盘的效果。
as程序员(也许懂PHP)的大作：flash转盘，支持丰富的接口，可做几乎任何交互-弹窗信息、表单、其他我看不懂的交互……可以说，这个程序几乎能满足所有的摇奖流程，能进行相当复杂的as操作。后来我琢磨：这些接口，可以做webgame了。
比较惨的是：as程序员调到别的部门了，接口无文档，一群PHP程序员傻了。
一个略懂as的PHP系统工程师（以工作职位作品综合命名）：flash转盘，只能转一下，无其他功能。交互呢？表单呢？复杂操作呢？恩-js+php，或者叫ajax吧，几乎全解决了，也就是把as的流程全部放到页面上去做，只有转盘转动的流程放到as里。js和PHP是我们强项，省个人工，我们的问题从此没有了。
我记得主席有句话：解放思想，实事求是，作为这篇小记的标题还算合适。
解放思想：解决问题有多种方式，不可拘泥于前人的经验。
实事求是：问题解决即可，不需要多么复杂高深。
]]></description>
			<content:encoded><![CDATA[<p>由于本部门经常做一些在线摇奖的程序，需要做一个flash的转盘，中奖由后台程序控制，flash转盘只是制造一个摇奖转盘的效果。</p>
<p>as程序员(也许懂PHP)的大作：flash转盘，支持丰富的接口，可做几乎任何交互-弹窗信息、表单、其他我看不懂的交互……可以说，这个程序几乎能满足所有的摇奖流程，能进行相当复杂的as操作。后来我琢磨：这些接口，可以做webgame了。</p>
<p>比较惨的是：as程序员调到别的部门了，接口无文档，一群PHP程序员傻了。</p>
<p>一个略懂as的PHP系统工程师（以工作职位作品综合命名）：flash转盘，只能转一下，无其他功能。交互呢？表单呢？复杂操作呢？恩-js+php，或者叫ajax吧，几乎全解决了，也就是把as的流程全部放到页面上去做，只有转盘转动的流程放到as里。js和PHP是我们强项，省个人工，我们的问题从此没有了。</p>
<p>我记得主席有句话：解放思想，实事求是，作为这篇小记的标题还算合适。</p>
<p>解放思想：解决问题有多种方式，不可拘泥于前人的经验。</p>
<p>实事求是：问题解决即可，不需要多么复杂高深。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2010/10/11/%e8%a7%a3%e6%94%be%e6%80%9d%e6%83%b3%ef%bc%8c%e5%ae%9e%e4%ba%8b%e6%b1%82%e6%98%af.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>发两句牢骚</title>
		<link>http://www.sunboyu.cn/2010/09/28/%e5%8f%91%e4%b8%a4%e5%8f%a5%e7%89%a2%e9%aa%9a.shtml</link>
		<comments>http://www.sunboyu.cn/2010/09/28/%e5%8f%91%e4%b8%a4%e5%8f%a5%e7%89%a2%e9%aa%9a.shtml#comments</comments>
		<pubDate>Tue, 28 Sep 2010 12:11:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1278</guid>
		<description><![CDATA[节前打硬仗，很久不写博客了，因为公司项目，自己的研究的东西也暂停了，节后项目上线会继续开发。
北京的交通是真的没法呆了，某天没碰见车祸，那是见鬼。也许真该活在外地，挣在北京。
等十一我把我的齿胎给atx750换上，去香山来个越野。柏油路骑行已经没啥兴趣了，最近一直想来点刺激。
内人说我最近精神挺好，其实高兴很简单，找个自己喜欢的事，一直喜欢下去，就够了。上班我就喜欢拼代码，下班我就喜欢飙车O(∩_∩)O哈哈~
]]></description>
			<content:encoded><![CDATA[<p>节前打硬仗，很久不写博客了，因为公司项目，自己的研究的东西也暂停了，节后项目上线会继续开发。</p>
<p>北京的交通是真的没法呆了，某天没碰见车祸，那是见鬼。也许真该活在外地，挣在北京。</p>
<p>等十一我把我的齿胎给atx750换上，去香山来个越野。柏油路骑行已经没啥兴趣了，最近一直想来点刺激。</p>
<p>内人说我最近精神挺好，其实高兴很简单，找个自己喜欢的事，一直喜欢下去，就够了。上班我就喜欢拼代码，下班我就喜欢飙车O(∩_∩)O哈哈~</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2010/09/28/%e5%8f%91%e4%b8%a4%e5%8f%a5%e7%89%a2%e9%aa%9a.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>一个程序猿</title>
		<link>http://www.sunboyu.cn/2010/08/10/%e4%b8%80%e4%b8%aa%e7%a8%8b%e5%ba%8f%e7%8c%bf.shtml</link>
		<comments>http://www.sunboyu.cn/2010/08/10/%e4%b8%80%e4%b8%aa%e7%a8%8b%e5%ba%8f%e7%8c%bf.shtml#comments</comments>
		<pubDate>Tue, 10 Aug 2010 09:57:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<category><![CDATA[凡客]]></category>

		<category><![CDATA[程序猿]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1267</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.sunboyu.cn/upfiles/2010/08/未命名.jpg"><img src="http://www.sunboyu.cn/upfiles/2010/08/未命名.jpg" alt="未命名" title="未命名" width="600" height="328" class="aligncenter size-full wp-image-1268" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2010/08/10/%e4%b8%80%e4%b8%aa%e7%a8%8b%e5%ba%8f%e7%8c%bf.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>使用Lucene 构建强大的discuz 论坛搜索模块</title>
		<link>http://www.sunboyu.cn/2010/07/27/discuz_lucene.shtml</link>
		<comments>http://www.sunboyu.cn/2010/07/27/discuz_lucene.shtml#comments</comments>
		<pubDate>Tue, 27 Jul 2010 06:21:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Java]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[discuz]]></category>

		<category><![CDATA[优化]]></category>

		<category><![CDATA[全文]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1263</guid>
		<description><![CDATA[在我搞完公司的论坛优化后，我一直想写一个圈套的dz性能优化的方案。当时的全文检索使用的是公司内部某人开发的检索系统，没有开源，所以我做此方案来实现。
此文刚打完草稿，处于调试通过的状态。没有形成具体可用的用户文档。希望在这个底稿的基础上，朋友能给予测试和支持，以鼓励我做出一套完整的方案。
下载：lucene_dz
欢迎加入QQ讨论群：41886598
]]></description>
			<content:encoded><![CDATA[<p>在我搞完公司的论坛优化后，我一直想写一个圈套的dz性能优化的方案。当时的全文检索使用的是公司内部某人开发的检索系统，没有开源，所以我做此方案来实现。<br />
此文刚打完草稿，处于调试通过的状态。没有形成具体可用的用户文档。希望在这个底稿的基础上，朋友能给予测试和支持，以鼓励我做出一套完整的方案。</p>
<p>下载：<a href='http://www.sunboyu.cn/upfiles/2010/07/lucene_dz.pdf'>lucene_dz</a></p>
<p>欢迎加入QQ讨论群：41886598</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2010/07/27/discuz_lucene.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>使用XDEBUG进行PHP性能分析</title>
		<link>http://www.sunboyu.cn/2010/07/22/%e4%bd%bf%e7%94%a8xdebug%e8%bf%9b%e8%a1%8cphp%e6%80%a7%e8%83%bd%e5%88%86%e6%9e%90.shtml</link>
		<comments>http://www.sunboyu.cn/2010/07/22/%e4%bd%bf%e7%94%a8xdebug%e8%bf%9b%e8%a1%8cphp%e6%80%a7%e8%83%bd%e5%88%86%e6%9e%90.shtml#comments</comments>
		<pubDate>Thu, 22 Jul 2010 01:47:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[其他]]></category>

		<category><![CDATA[xdebug]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1259</guid>
		<description><![CDATA[最近给论坛做性能优化，写了一个文档，在线编辑器不好用，就写了个wps文档。
文件下载：使用XDEBUG进行PHP性能分析
]]></description>
			<content:encoded><![CDATA[<p>最近给论坛做性能优化，写了一个文档，在线编辑器不好用，就写了个wps文档。</p>
<p>文件下载：<a href='http://www.sunboyu.cn/upfiles/2010/07/使用XDEBUG进行PHP性能分析.wps'>使用XDEBUG进行PHP性能分析</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2010/07/22/%e4%bd%bf%e7%94%a8xdebug%e8%bf%9b%e8%a1%8cphp%e6%80%a7%e8%83%bd%e5%88%86%e6%9e%90.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>discuz7.2针对session表的分析和优化</title>
		<link>http://www.sunboyu.cn/2010/07/07/discuz7-2%e9%92%88%e5%af%b9session%e8%a1%a8%e7%9a%84%e5%88%86%e6%9e%90%e5%92%8c%e4%bc%98%e5%8c%96.shtml</link>
		<comments>http://www.sunboyu.cn/2010/07/07/discuz7-2%e9%92%88%e5%af%b9session%e8%a1%a8%e7%9a%84%e5%88%86%e6%9e%90%e5%92%8c%e4%bc%98%e5%8c%96.shtml#comments</comments>
		<pubDate>Wed, 07 Jul 2010 09:04:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[原创技术]]></category>

		<category><![CDATA[discuz]]></category>

		<category><![CDATA[session表]]></category>

		<category><![CDATA[优化]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1245</guid>
		<description><![CDATA[广告时间：新建一个qq群，欢迎大家进来讨论discuz的性能优化  qq群 41886598  接头暗号：dz
引子
最近一个朋友的论坛由discuz转化为phpwind，因为discuz在负载较大的情况下频频当机，但在我观察，瓶颈基本是数据库，并且负载最高的表定位为sessions表。之前我们论坛在进行了大的改进后，除了分表这些基本优化，改动最大的就是sessions表。我们使用张宴写的tcsql来存储用户的session信息，经推算，系统负载应该能支撑10~20w人同时在线。
这个10~20w人只是推测，因为原来我们优化sessions表但没有切换到tcsql的时候，最高支撑到4~6w人-也就是某次游戏临时维护，用户大量涌向论坛，在大概4~6w用户的情况下，论坛崩溃。而tcsq的读写效率远远高于mysql，因此推算tcsql代替sessions表的情况下，论坛至少可以承载10~20w人同时在线。
毕竟tcsql用C进行开发，而且没有开源。去年的文章发表后，一直有朋友在探讨dz的优化问题，但那几个方案都依赖了第三方的应用。这次，我想到的是在不依赖其他应用的前提下，完成dz的sessions表优化。
这里，我对sessions表的访问情况作了一个统计：
一个没访问过的论坛，我作为一个用户：1、进入首页 2、ajax登录 3、进入某板块 4、点击某帖子。4个操作，统计session表的操作：select 5次，insert 2次，delete 2次，update，3次，select联查，4次，一共16次操作。对于一个成熟的网站，大部分用户的操作连起来，统计数据跟我统计的会有区别，但从全局看来，sessions表的确是mysql查询数的一个瓶颈。
以子之矛
对于这个问题，dz程序其实是有解决方案的。
if($pvfrequence &#38;amp;&#38;amp; $discuz_uid) {
if($spageviews &#38;gt;= $pvfrequence) {
$pageviewsadd = ', pageviews=\'0\'';
$db-&#38;gt;query(&#34;UPDATE {$tablepre}members SET pageviews=pageviews+'$spageviews' WHERE uid='$discuz_uid'&#34;, 'UNBUFFERED');
} else {
$pageviewsadd = ', pageviews=pageviews+1';
}
} else {
$pageviewsadd = '';
}
这个功能是统计用户浏览量的一个小东西，$spageviews是保存在用户session表的一个变量，如果每次浏览都更新用户表的浏览数，member表的负担是很大的。dz的程序员就用客户端更新数据这种方式，把数据更新动作放在了session表，每$spageviews个周期更新一次，有效降低了member表压力，而且此配置在网站后台作出了用户接口。
为什么这个问题可以解决，只不过把压力进行了转移，而sessions表的压力为什么不能解决一下呢？我百思不得其解。
攻子之盾
member的压力可以转移到sessions表，当然sessions表的压力就不能再转移给别的表了，这样处理，不管转移到哪里，都是数据库的压力，所以，得想办法转移到数据库之外。
再考虑为什么member的压力可以转移：因为用户浏览数这个统计项，用户每必要也不需要实时看到更新。
而用户的session信息是用户实时要用，并且有部分权限控制方面的东西，是非常必要的，所以，必须实时获取。既然其他表的压力也都来了sessions表，那更新也必然需要在sessions表中做。这个事情，不就是php的session应该做的事情么？
再考虑sessions表除模拟php的session功能外的其他功能：
1、状态传递：需要把用户的当前状态实时传递给其他用户。在线状态、用户所在位置等。
2、统计分析：在dz可以看到当前多少用户在线，对于单纯使用php session功能是无法满足的，故dz采用sessions表来替代这个功能。
现在就设计一个机制，既满足用户session的功能，又满足统计分析的功能。当然，用php+mysql了。需要及时更新的信息存储于php的session，而需要统计的信息分阶段更新到mysql。
流程如此 用户创建一个mysql记录，创建一个session，session的过期机制类似于mysql表。每次访问，取session信息，如果session信息不存在，取sessions表中的信息。像用户浏览次数这类数据，可以每过一段时间更新到mysql中。用户session每次更新，也只是更新session数据，而session机制的并发性和效率，远远高于mysql的。如此解决，既不阉割原有的功能，又不会对环境造成很严重的依赖，只要支持phpsession的环境即可。
总结
在修改完成后，我又进行了测试，这次session表的访问频度已经降到了原来的1/3之下，我想，对于大型的论坛，起码能节约1/3的服务器吧。这样改动也并不是没有缺点的：统计就会有延迟和偏差。因为中间用户突然离开，会损失sessions表更新的及时性甚至会损失这部分数据。如果严重依赖论坛自己某些统计功能的话，那这种方式欠妥，但对于已经使用第三方统计或者对那部分数据不很敏感的论坛用户，这种方案还是非常适合的。
附言：dz的大多数产品设计都采用sessions表这种设计思路，因此，这个思路可以优化几乎所有的dz产品。
tips：如何定位sessions表的负载： 在mysql数据类的query方法里增加如下代码,数据少可以用肉眼数，数据多可以写个脚本去分析
$handle = fopen(&#34;sql.log&#34;,&#34;a+&#34;);
fwrite($handle,str_replace(&#34;\r\n&#34;,&#34;&#34;,$sql).&#34;\r\n&#34;);
fclose($handle);
附上代码：
dz
]]></description>
			<content:encoded><![CDATA[<p>广告时间：新建一个qq群，欢迎大家进来讨论discuz的性能优化  qq群 41886598  接头暗号：dz</p>
<h1>引子</h1>
<p>最近一个朋友的论坛由discuz转化为phpwind，因为discuz在负载较大的情况下频频当机，但在我观察，瓶颈基本是数据库，并且负载最高的表定位为sessions表。之前我们论坛在进行了大的改进后，除了分表这些基本优化，改动最大的就是sessions表。我们使用张宴写的tcsql来存储用户的session信息，经推算，系统负载应该能支撑10~20w人同时在线。</p>
<p>这个10~20w人只是推测，因为原来我们优化sessions表但没有切换到tcsql的时候，最高支撑到4~6w人-也就是某次游戏临时维护，用户大量涌向论坛，在大概4~6w用户的情况下，论坛崩溃。而tcsq的读写效率远远高于mysql，因此推算tcsql代替sessions表的情况下，论坛至少可以承载10~20w人同时在线。<br />
毕竟tcsql用C进行开发，而且没有开源。去年的文章发表后，一直有朋友在探讨dz的优化问题，但那几个方案都依赖了第三方的应用。这次，我想到的是在不依赖其他应用的前提下，完成dz的sessions表优化。</p>
<p>这里，我对sessions表的访问情况作了一个统计：</p>
<p>一个没访问过的论坛，我作为一个用户：1、进入首页 2、ajax登录 3、进入某板块 4、点击某帖子。4个操作，统计session表的操作：select 5次，insert 2次，delete 2次，update，3次，select联查，4次，一共16次操作。对于一个成熟的网站，大部分用户的操作连起来，统计数据跟我统计的会有区别，但从全局看来，sessions表的确是mysql查询数的一个瓶颈。</p>
<h1>以子之矛</h1>
<p>对于这个问题，dz程序其实是有解决方案的。</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">if($pvfrequence &amp;amp;&amp;amp; $discuz_uid) {</li>
<li>if($spageviews &amp;gt;= $pvfrequence) {</li>
<li>$pageviewsadd = ', pageviews=\'0\'';</li>
<li>$db-&amp;gt;query(&quot;UPDATE {$tablepre}members SET pageviews=pageviews+'$spageviews' WHERE uid='$discuz_uid'&quot;, 'UNBUFFERED');</li>
<li>} else {</li>
<li>$pageviewsadd = ', pageviews=pageviews+1';</li>
<li>}</li>
<li>} else {</li>
<li>$pageviewsadd = '';</li>
<li>}</li></ol></div>
<p>这个功能是统计用户浏览量的一个小东西，$spageviews是保存在用户session表的一个变量，如果每次浏览都更新用户表的浏览数，member表的负担是很大的。dz的程序员就用客户端更新数据这种方式，把数据更新动作放在了session表，每$spageviews个周期更新一次，有效降低了member表压力，而且此配置在网站后台作出了用户接口。</p>
<p>为什么这个问题可以解决，只不过把压力进行了转移，而sessions表的压力为什么不能解决一下呢？我百思不得其解。</p>
<h1>攻子之盾</h1>
<p>member的压力可以转移到sessions表，当然sessions表的压力就不能再转移给别的表了，这样处理，不管转移到哪里，都是数据库的压力，所以，得想办法转移到数据库之外。</p>
<p>再考虑为什么member的压力可以转移：因为用户浏览数这个统计项，用户每必要也不需要实时看到更新。</p>
<p>而用户的session信息是用户实时要用，并且有部分权限控制方面的东西，是非常必要的，所以，必须实时获取。既然其他表的压力也都来了sessions表，那更新也必然需要在sessions表中做。这个事情，不就是php的session应该做的事情么？</p>
<p>再考虑sessions表除模拟php的session功能外的其他功能：</p>
<p>1、状态传递：需要把用户的当前状态实时传递给其他用户。在线状态、用户所在位置等。</p>
<p>2、统计分析：在dz可以看到当前多少用户在线，对于单纯使用php session功能是无法满足的，故dz采用sessions表来替代这个功能。</p>
<p>现在就设计一个机制，既满足用户session的功能，又满足统计分析的功能。当然，用php+mysql了。需要及时更新的信息存储于php的session，而需要统计的信息分阶段更新到mysql。</p>
<p>流程如此 用户创建一个mysql记录，创建一个session，session的过期机制类似于mysql表。每次访问，取session信息，如果session信息不存在，取sessions表中的信息。像用户浏览次数这类数据，可以每过一段时间更新到mysql中。用户session每次更新，也只是更新session数据，而session机制的并发性和效率，远远高于mysql的。如此解决，既不阉割原有的功能，又不会对环境造成很严重的依赖，只要支持phpsession的环境即可。</p>
<h1>总结</h1>
<p>在修改完成后，我又进行了测试，这次session表的访问频度已经降到了原来的1/3之下，我想，对于大型的论坛，起码能节约1/3的服务器吧。这样改动也并不是没有缺点的：统计就会有延迟和偏差。因为中间用户突然离开，会损失sessions表更新的及时性甚至会损失这部分数据。如果严重依赖论坛自己某些统计功能的话，那这种方式欠妥，但对于已经使用第三方统计或者对那部分数据不很敏感的论坛用户，这种方案还是非常适合的。</p>
<p>附言：dz的大多数产品设计都采用sessions表这种设计思路，因此，这个思路可以优化几乎所有的dz产品。</p>
<p>tips：如何定位sessions表的负载： 在mysql数据类的query方法里增加如下代码,数据少可以用肉眼数，数据多可以写个脚本去分析</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">$handle = fopen(&quot;sql.log&quot;,&quot;a+&quot;);</li>
<li>fwrite($handle,str_replace(&quot;\r\n&quot;,&quot;&quot;,$sql).&quot;\r\n&quot;);</li>
<li>fclose($handle);</li></ol></div>
<p>附上代码：</p>
<p><a href='http://www.sunboyu.cn/upfiles/2010/07/dz.rar'>dz</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2010/07/07/discuz7-2%e9%92%88%e5%af%b9session%e8%a1%a8%e7%9a%84%e5%88%86%e6%9e%90%e5%92%8c%e4%bc%98%e5%8c%96.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>最近的感想</title>
		<link>http://www.sunboyu.cn/2010/06/05/%e6%9c%80%e8%bf%91%e7%9a%84%e6%84%9f%e6%83%b3.shtml</link>
		<comments>http://www.sunboyu.cn/2010/06/05/%e6%9c%80%e8%bf%91%e7%9a%84%e6%84%9f%e6%83%b3.shtml#comments</comments>
		<pubDate>Sat, 05 Jun 2010 12:25:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[感悟]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1238</guid>
		<description><![CDATA[1、我总在努力学习，学习技术。技术好有用么？有用。但能干好活么？态度。
2、第二个目标-让自己坚持。坚持自己的技术方向，这个我做到了，在工作中能不能做到，问号？叹号。做得不够。
3、尊重别人的劳动成果。无论是工作中还是生活中。
4、三人行必有我师。高手往往低调。
5、买书是比较廉价的学习方式。
]]></description>
			<content:encoded><![CDATA[<p>1、我总在努力学习，学习技术。技术好有用么？有用。但能干好活么？态度。</p>
<p>2、第二个目标-让自己坚持。坚持自己的技术方向，这个我做到了，在工作中能不能做到，问号？叹号。做得不够。</p>
<p>3、尊重别人的劳动成果。无论是工作中还是生活中。</p>
<p>4、三人行必有我师。高手往往低调。</p>
<p>5、买书是比较廉价的学习方式。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2010/06/05/%e6%9c%80%e8%bf%91%e7%9a%84%e6%84%9f%e6%83%b3.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>配置php下的mysql连接池-sqlrelay</title>
		<link>http://www.sunboyu.cn/2010/05/20/%e9%85%8d%e7%bd%aephp%e4%b8%8b%e7%9a%84mysql%e8%bf%9e%e6%8e%a5%e6%b1%a0-sqlrelay.shtml</link>
		<comments>http://www.sunboyu.cn/2010/05/20/%e9%85%8d%e7%bd%aephp%e4%b8%8b%e7%9a%84mysql%e8%bf%9e%e6%8e%a5%e6%b1%a0-sqlrelay.shtml#comments</comments>
		<pubDate>Thu, 20 May 2010 14:13:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[原创技术]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1225</guid>
		<description><![CDATA[本文主要介绍sqlrelay的配置安装。通过其性能和一些具体环境的测试来帮助开发者应用在相应的场合中去应付大并发的mysql数据库连接。
什么是sqlrelay？
Sqlrelay是一个开源的数据库连接池软件。它可以预建立数据库连接，同时可作为数据库连接代理和负载均衡器使用。
SQL Relay is a persistent database connection pooling, proxying and load balancing system for Unix and Linux.
Sqlrelay项目主页  http://sqlrelay.sourceforge.net/
Sqlrelay源码下载  http://sqlrelay.sourceforge.net/download.html
Sqlrelay原理示意：
连接池示意图：

负载均衡示意图：

1、	sqlrelay的安装
下载源代码（因为不能yum或者apt-get）
#wget http://prdownloads.sourceforge.net/sqlrelay/sqlrelay-0.41.tar.gz?download
解压缩
#tar –zxvf sqlrelay-0.41.tar.gz
配置
#cd sqlrelay-0.41
#./configure &#8211;prefix=/opt/sqlrelay &#8211;with-mysql-prefix=/opt/mysql-5.0.22 &#8211;with-php-prefix=/opt/php-5.2.6 &#8211;disable-python
注释：因为我用的python版本跟sqlrelay版本稍有纠结，所以显式得去声明不增加python下的api。
为啥我软件编译目标路径是/opt，我也不知道，也许第一次看见某人这么做的，我也就一直这么做。大家别问了，没啥道理，其实编译到 /shit 下边，也不影响正常的运行。
查看编译好的文件：
#cd /opt/sqlrelay
#ls
Bin  etc  include  lib  share  var
如果出现下列目录，安装“基本完毕”。
2、	sqlrelay的配置
sqlrelay有个问题，如果指定了prefix，而$prefix/bin/目录如果不在环境变量中，则主进程运行是有问题的。因为，编译完后，我们在/etc/profile中增加一条命令：
PATH=$PATH:/opt/sqlrelay/bin      #此目录就是你prefix的目录
配置文件：
&#60; ?xml version=&#34;1.0&#34;?&#62;
&#60; !DOCTYPE instances SYSTEM &#34;sqlrelay.dtd&#34;&#62;
&#60;instances&#62;
	&#60;instance id=&#34;mysqlpool&#34; [...]]]></description>
			<content:encoded><![CDATA[<p>本文主要介绍sqlrelay的配置安装。通过其性能和一些具体环境的测试来帮助开发者应用在相应的场合中去应付大并发的mysql数据库连接。</p>
<p>什么是sqlrelay？</p>
<p>Sqlrelay是一个开源的数据库连接池软件。它可以预建立数据库连接，同时可作为数据库连接代理和负载均衡器使用。</p>
<blockquote><p>SQL Relay is a persistent database connection pooling, proxying and load balancing system for Unix and Linux.</p></blockquote>
<p>Sqlrelay项目主页  http://sqlrelay.sourceforge.net/<br />
Sqlrelay源码下载  http://sqlrelay.sourceforge.net/download.html</p>
<p>Sqlrelay原理示意：</p>
<p>连接池示意图：</p>
<p><a href="http://www.sunboyu.cn/upfiles/2010/05/2009817122917215.png"><img class="aligncenter size-full wp-image-1227" title="pool" src="http://www.sunboyu.cn/upfiles/2010/05/2009817122917215.png" alt="pool" width="157" height="114" /></a></p>
<p>负载均衡示意图：</p>
<p><a href="http://www.sunboyu.cn/upfiles/2010/05/router.png"><img class="aligncenter size-full wp-image-1228" title="router" src="http://www.sunboyu.cn/upfiles/2010/05/router.png" alt="router" width="208" height="185" /></a></p>
<p>1、	sqlrelay的安装</p>
<p>下载源代码（因为不能yum或者apt-get）<br />
#wget http://prdownloads.sourceforge.net/sqlrelay/sqlrelay-0.41.tar.gz?download<br />
解压缩<br />
#tar –zxvf sqlrelay-0.41.tar.gz<br />
配置<br />
#cd sqlrelay-0.41<br />
#./configure &#8211;prefix=/opt/sqlrelay &#8211;with-mysql-prefix=/opt/mysql-5.0.22 &#8211;with-php-prefix=/opt/php-5.2.6 &#8211;disable-python<br />
注释：因为我用的python版本跟sqlrelay版本稍有纠结，所以显式得去声明不增加python下的api。<br />
为啥我软件编译目标路径是/opt，我也不知道，也许第一次看见某人这么做的，我也就一直这么做。大家别问了，没啥道理，其实编译到 /shit 下边，也不影响正常的运行。<br />
查看编译好的文件：<br />
#cd /opt/sqlrelay<br />
#ls<br />
Bin  etc  include  lib  share  var<br />
如果出现下列目录，安装“基本完毕”。<br />
2、	sqlrelay的配置<br />
sqlrelay有个问题，如果指定了prefix，而$prefix/bin/目录如果不在环境变量中，则主进程运行是有问题的。因为，编译完后，我们在/etc/profile中增加一条命令：<br />
PATH=$PATH:/opt/sqlrelay/bin      #此目录就是你prefix的目录</p>
<p>配置文件：</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">&lt; ?xml version=&quot;1.0&quot;?&gt;</li>
<li>&lt; !DOCTYPE instances SYSTEM &quot;sqlrelay.dtd&quot;&gt;</li>
<li>&lt;instances&gt;</li>
<li>	&lt;instance id=&quot;mysqlpool&quot; port=&quot;9002&quot; socket=&quot;/tmp/sqlrelay.socket&quot; dbase=&quot;mysql&quot; connections=&quot;20&quot; maxconnections=&quot;50&quot; maxqueuelength=&quot;5&quot; growby=&quot;1&quot; ttl=&quot;60&quot; maxsessioncount=&quot;10&quot; endofsession=&quot;commit&quot; sessiontimeout=&quot;600&quot; runasuser=&quot;nobody&quot; runasgroup=&quot;nobody&quot; cursors=&quot;5&quot; authtier=&quot;listener&quot; handoff=&quot;pass&quot; deniedips=&quot;&quot; allowedips=&quot;&quot; debug=&quot;none&quot; maxquerysize=&quot;65536&quot; maxstringbindvaluelength=&quot;4000&quot; maxlobbindvaluelength=&quot;71680&quot; idleclienttimeout=&quot;-1&quot; maxlisteners=&quot;-1&quot; listenertimeout=&quot;0&quot; reloginatstart=&quot;no&quot; timequeriessec=&quot;-1&quot; timequeriesusec=&quot;-1&quot;&gt;</li>
<li>	&lt;/instance&gt;</li>
<li>&lt;/instances&gt;</li></ol></div>
<p>这样，就配置了一个id为mysqlpool的连接池。<br />
Port=9002  sqlrelay提供服务的端口是 9002<br />
Dbase=mysql 要连接mysql<br />
Connections=20 起始创建20个连接<br />
Maxconnections=50 最大连接数 50<br />
其他参数可以自己琢磨，在具体应用中还需要修改后边的参数，都啥含义，看字面或者看手册皆可。</p>
<p>启动sqlrelay：<br />
#./sqlr-start –id mysqlpool   //启动刚才定义的id为mysqlpool的连接池<br />
关闭sqlrelay<br />
#./sqlr-stop</p>
<p>3、	sqlrelayPHP api的配置</p>
<p>sqlrelay的PHP api扩展在编译的时候已经生成，在php的./lib/php/extensions/no-debug-non-zts-20060613/ 目录下，修改php.ini中extension_dir的值：extension_dir=”/opt/php-5.2.6/lib/php/extensions/no-debug-non-zts-20060613/”<br />
而后增加引用声明：extension=sql_relay.so</p>
<p>重启php，执行 php –m 查看是否有 sql_relay 如果有，则证明配置成功。</p>
<p>4、sqlrelay的使用</p>
<p>$con=sqlrcon_alloc(“mysqlpool”,9002,””,”root”,”123456”,0,1);<br />
Var_dump($con);</p>
<p>这样，利用sqlrelay的phpapi，就可以跟mysql建立链接。</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>另求高并发的测试环境搭建方案，有经验的朋友可以提供相关信息。注：本人只有非常SB的惠普V3000系列高发热强雪花屏笔记本一台做测试环境。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2010/05/20/%e9%85%8d%e7%bd%aephp%e4%b8%8b%e7%9a%84mysql%e8%bf%9e%e6%8e%a5%e6%b1%a0-sqlrelay.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>iostat安装</title>
		<link>http://www.sunboyu.cn/2010/05/10/iostat%e5%ae%89%e8%a3%85.shtml</link>
		<comments>http://www.sunboyu.cn/2010/05/10/iostat%e5%ae%89%e8%a3%85.shtml#comments</comments>
		<pubDate>Mon, 10 May 2010 02:42:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1220</guid>
		<description><![CDATA[原来一直以为iostat跟iftop一样是独立的安装包，后google发现是一个工具包中的工具，叫systat。
下载地址：http://pagesperso-orange.fr/sebastien.godard/download.html
使用说明书 http://pagesperso-orange.fr/sebastien.godard/man_iostat.html
]]></description>
			<content:encoded><![CDATA[<p>原来一直以为iostat跟iftop一样是独立的安装包，后google发现是一个工具包中的工具，叫systat。</p>
<p>下载地址：<a href="http://pagesperso-orange.fr/sebastien.godard/download.html">http://pagesperso-orange.fr/sebastien.godard/download.html</a></p>
<p>使用说明书 <a href="http://pagesperso-orange.fr/sebastien.godard/man_iostat.html">http://pagesperso-orange.fr/sebastien.godard/man_iostat.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2010/05/10/iostat%e5%ae%89%e8%a3%85.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>samba配置小结</title>
		<link>http://www.sunboyu.cn/2010/05/06/samba%e9%85%8d%e7%bd%ae%e5%b0%8f%e7%bb%93.shtml</link>
		<comments>http://www.sunboyu.cn/2010/05/06/samba%e9%85%8d%e7%bd%ae%e5%b0%8f%e7%bb%93.shtml#comments</comments>
		<pubDate>Thu, 06 May 2010 05:18:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1218</guid>
		<description><![CDATA[最近想把本本彻底改成linux，前期准备就是要适应一切能想到的应用。跟台式的文件交互，ftp、ssh都可以，但还是觉得共享会方便，于是配置了一下samba。
本子上的系统用的是centos5.4 X64，samba软件是使用命令 yum install samba 进行安装。
首先，启动关闭samba命令
service smb start
service smb restart
service smb stop
首先配置一个公共的读写目录
mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
touch /etc/samba/smb.conf
#smb.conf 内容为
[global]
workgroup = home
netbios name = notebook
server string = Samba Server
security = share
[public]
path = /home/public
browseable = yes
writeable = yes
guest ok = yes
public = yes
force user = nobody
force group = nobody
重启samba后，在windows中运行(局域网互联) 敲入 \\ip 则可以看到public共享目录
如果增加权限验证，则需要增加用户信息：samba用以下两个命令来增加用户信息
smbadduser&#160; &#160;//增加用户
mbpasswd&#160; &#160; &#160;//增加密码
配置文件如下
[global]
workgroup = ksgdfa
netbios name = ksgfdsa
server [...]]]></description>
			<content:encoded><![CDATA[<p>最近想把本本彻底改成linux，前期准备就是要适应一切能想到的应用。跟台式的文件交互，ftp、ssh都可以，但还是觉得共享会方便，于是配置了一下samba。</p>
<p>本子上的系统用的是centos5.4 X64，samba软件是使用命令 yum install samba 进行安装。</p>
<p>首先，启动关闭samba命令</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">service smb start</li>
<li>service smb restart</li>
<li>service smb stop</li></ol></div>
<p>首先配置一个公共的读写目录</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">mv /etc/samba/smb.conf /etc/samba/smb.conf.bak</li>
<li>touch /etc/samba/smb.conf</li>
<li>#smb.conf 内容为</li>
<li>[global]</li>
<li>workgroup = home</li>
<li>netbios name = notebook</li>
<li>server string = Samba Server</li>
<li>security = share</li>
<li>[public]</li>
<li>path = /home/public</li>
<li>browseable = yes</li>
<li>writeable = yes</li>
<li>guest ok = yes</li>
<li>public = yes</li>
<li>force user = nobody</li>
<li>force group = nobody</li></ol></div>
<p>重启samba后，在windows中运行(局域网互联) 敲入 \\ip 则可以看到public共享目录</p>
<p>如果增加权限验证，则需要增加用户信息：samba用以下两个命令来增加用户信息</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">smbadduser&nbsp; &nbsp;//增加用户</li>
<li>mbpasswd&nbsp; &nbsp; &nbsp;//增加密码</li></ol></div>
<p>配置文件如下</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">[global]</li>
<li>workgroup = ksgdfa</li>
<li>netbios name = ksgfdsa</li>
<li>server string = Samba Server</li>
<li>security = share</li>
<li>encrypt passwords = yes</li>
<li>smb passwd file = /etc/samba/smbpasswd</li>
<li>&nbsp;</li>
<li>&nbsp;</li>
<li>[public]</li>
<li>path = /home/public</li>
<li>browseable = yes</li>
<li>writeable = yes</li>
<li>guest ok = yes</li>
<li>public = yes</li>
<li>force user = nobody</li>
<li>force group = nobody</li>
<li>&nbsp;</li>
<li>[sunboyu]</li>
<li>path = /opt/samba/sunboyu</li>
<li>browseable = yes</li>
<li>writeable = yes</li></ol></div>
<p>补充：其中，公共目录的权限，用配置成 nobody:nobody  777<br />
而 sunboyu 目录的权限，则配置成 sunboyu:sunboyu 777</p>
<p>tips：如果配置成功后，一直无法写入文件，则检查是否关闭selinux，如果没关闭，关闭即可。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2010/05/06/samba%e9%85%8d%e7%bd%ae%e5%b0%8f%e7%bb%93.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>购买了一套得力1022G的套装工具</title>
		<link>http://www.sunboyu.cn/2010/04/25/%e8%b4%ad%e4%b9%b0%e4%ba%86%e4%b8%80%e5%a5%97%e5%be%97%e5%8a%9b1022g%e7%9a%84%e5%a5%97%e8%a3%85%e5%b7%a5%e5%85%b7.shtml</link>
		<comments>http://www.sunboyu.cn/2010/04/25/%e8%b4%ad%e4%b9%b0%e4%ba%86%e4%b8%80%e5%a5%97%e5%be%97%e5%8a%9b1022g%e7%9a%84%e5%a5%97%e8%a3%85%e5%b7%a5%e5%85%b7.shtml#comments</comments>
		<pubDate>Sun, 25 Apr 2010 11:52:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1210</guid>
		<description><![CDATA[
小区旁边一个店新开张，特价57块钱。
]]></description>
			<content:encoded><![CDATA[<p><img alt="" src="http://img01.taobaocdn.com/bao/uploaded/i1/T1JJNuXcdBXXbvvJMZ_032029.jpg_310x310.jpg" title="dl1022g" class="alignnone" width="250" height="250" /></p>
<p>小区旁边一个店新开张，特价57块钱。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2010/04/25/%e8%b4%ad%e4%b9%b0%e4%ba%86%e4%b8%80%e5%a5%97%e5%be%97%e5%8a%9b1022g%e7%9a%84%e5%a5%97%e8%a3%85%e5%b7%a5%e5%85%b7.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>rsync使用小结</title>
		<link>http://www.sunboyu.cn/2010/04/17/rsync%e4%bd%bf%e7%94%a8%e5%b0%8f%e7%bb%93.shtml</link>
		<comments>http://www.sunboyu.cn/2010/04/17/rsync%e4%bd%bf%e7%94%a8%e5%b0%8f%e7%bb%93.shtml#comments</comments>
		<pubDate>Sat, 17 Apr 2010 14:28:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1206</guid>
		<description><![CDATA[多台服务器使用，难免用到同步，工作中大量接触的是rsync，简单测试了一下其命令和应用。
rsync官方主页：  http://samba.anu.edu.au/rsync/  下载地址为：http://samba.anu.edu.au/ftp/rsync/rsync-3.0.7.tar.gz
安装：
./configure --prefix=/opt/rsync-3.0.7
make
make install
默认好像没有生成配置文件，创建 
vi /etc/rsync.conf
//填入以下内容
uid=nobody
gid=nobody
max connections=3
use chroot=no
log file=/var/log/rsyncd.log
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock
测试的两台主机：192.168.0.20  192.168.0.30
在192.168.0.30的/etc/rsync.conf下增加以下代码
[test]&#160; &#160; &#160; &#160;//定义一个域
path=/root/test
comment=test folder
uid=root
ignore errors
read only=no
list=no
然后测试两个命令
1、把192.168.0.20上的 /root/source 目录同步到 192.168.0.30 的 /root/test上
/opt/rsync-3.0.7/bin/rsync -vazu &#8211;progress   /root/source 192.168.0.30::test
2、从192.168.0.30 的 /root/test 同步到 192.168.0.20上的/root/test
/opt/rsync-3.0.7/bin/rsync -vzrtopg &#8211;progress  192.168.0.30::test /root/test
配置权限：
在192.168.0.30上vi /etc/rsycnpass 然后 echo test:123456 >> /etc/rsycnpass
配置文件修改为
secrets file = /etc/rsyncpass
[test]&#160; &#160; &#160; &#160;//定义一个域
path=/root/test
comment=test folder
uid=root
ignore [...]]]></description>
			<content:encoded><![CDATA[<p>多台服务器使用，难免用到同步，工作中大量接触的是rsync，简单测试了一下其命令和应用。</p>
<p>rsync官方主页：  http://samba.anu.edu.au/rsync/  下载地址为：http://samba.anu.edu.au/ftp/rsync/rsync-3.0.7.tar.gz</p>
<p>安装：</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">./configure --prefix=/opt/rsync-3.0.7</li>
<li>make</li>
<li>make install</li></ol></div>
<p>默认好像没有生成配置文件，创建 </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">vi /etc/rsync.conf</li>
<li>//填入以下内容</li>
<li>uid=nobody</li>
<li>gid=nobody</li>
<li>max connections=3</li>
<li>use chroot=no</li>
<li>log file=/var/log/rsyncd.log</li>
<li>pid file=/var/run/rsyncd.pid</li>
<li>lock file=/var/run/rsyncd.lock</li></ol></div>
<p>测试的两台主机：192.168.0.20  192.168.0.30</p>
<p>在192.168.0.30的/etc/rsync.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">[test]&nbsp; &nbsp; &nbsp; &nbsp;//定义一个域</li>
<li>path=/root/test</li>
<li>comment=test folder</li>
<li>uid=root</li>
<li>ignore errors</li>
<li>read only=no</li>
<li>list=no</li></ol></div>
<p>然后测试两个命令<br />
1、把192.168.0.20上的 /root/source 目录同步到 192.168.0.30 的 /root/test上<br />
/opt/rsync-3.0.7/bin/rsync -vazu &#8211;progress   /root/source 192.168.0.30::test<br />
2、从192.168.0.30 的 /root/test 同步到 192.168.0.20上的/root/test<br />
/opt/rsync-3.0.7/bin/rsync -vzrtopg &#8211;progress  192.168.0.30::test /root/test</p>
<p>配置权限：<br />
在192.168.0.30上vi /etc/rsycnpass 然后 echo test:123456 >> /etc/rsycnpass<br />
配置文件修改为</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">secrets file = /etc/rsyncpass</li>
<li>[test]&nbsp; &nbsp; &nbsp; &nbsp;//定义一个域</li>
<li>path=/root/test</li>
<li>comment=test folder</li>
<li>uid=root</li>
<li>ignore errors</li>
<li>read only=no</li>
<li>list=no</li>
<li>auth users=test</li></ol></div>
<p>则上边命令1修改为 /opt/rsync-3.0.7/bin/rsync -vazu &#8211;progress   /root/source test@192.168.0.30::test<br />
命令2改为 /opt/rsync-3.0.7/bin/rsync -vzrtopg &#8211;progress  test@192.168.0.30::test /root/test</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2010/04/17/rsync%e4%bd%bf%e7%94%a8%e5%b0%8f%e7%bb%93.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>有没有必须去学习第二语言</title>
		<link>http://www.sunboyu.cn/2010/04/10/%e6%9c%89%e6%b2%a1%e6%9c%89%e5%bf%85%e9%a1%bb%e5%8e%bb%e5%ad%a6%e4%b9%a0%e7%ac%ac%e4%ba%8c%e8%af%ad%e8%a8%80.shtml</link>
		<comments>http://www.sunboyu.cn/2010/04/10/%e6%9c%89%e6%b2%a1%e6%9c%89%e5%bf%85%e9%a1%bb%e5%8e%bb%e5%ad%a6%e4%b9%a0%e7%ac%ac%e4%ba%8c%e8%af%ad%e8%a8%80.shtml#comments</comments>
		<pubDate>Sat, 10 Apr 2010 11:46:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1204</guid>
		<description><![CDATA[当然，我说的不是中文英文这个语言，而是编程语言。
从开始玩电脑，大大小小学了不少的编程语言，从开始的logo语言、basic语言，到大学里的c，c++，vb，vfp，又到毕业工作后的asp，php，工作空闲又挤时间看了看java，python。不过目前我唯一能吃饭的语言，还是PHP，其他语言或者当做垫脚石，或者是无聊充当了解闷的工具。
大学之前的语言基本扔了，之后asp由于市场面窄，而转向了PHP。在闲暇之余充实自己的java、python，虽然也完成了一些事情，但毕竟是作为php的补充来使用，偶尔充当模块之间的胶水工具。
从工作几年来看，我是这么认为学习第二语言的必要性：
1、第二语言要多看看，了解其优缺点。单一学习一门语言，容易造成盲目崇拜，或者自我，不利于发挥和发展。
2、适当学习一些跟自己语言起胶水作用的语言。学php的离不了win/linux两个平台，作为web开发语言，在bat/shell编程方面，批处理、perl、bash的优势php无法完全替代。
没必要去把两个以上的语言都学习精通（精力充沛的除外），但必须精通一门，了解大众，起码在团队中跟他人配合的时候保证无障碍。
]]></description>
			<content:encoded><![CDATA[<p>当然，我说的不是中文英文这个语言，而是编程语言。</p>
<p>从开始玩电脑，大大小小学了不少的编程语言，从开始的logo语言、basic语言，到大学里的c，c++，vb，vfp，又到毕业工作后的asp，php，工作空闲又挤时间看了看java，python。不过目前我唯一能吃饭的语言，还是PHP，其他语言或者当做垫脚石，或者是无聊充当了解闷的工具。</p>
<p>大学之前的语言基本扔了，之后asp由于市场面窄，而转向了PHP。在闲暇之余充实自己的java、python，虽然也完成了一些事情，但毕竟是作为php的补充来使用，偶尔充当模块之间的胶水工具。</p>
<p>从工作几年来看，我是这么认为学习第二语言的必要性：</p>
<p>1、第二语言要多看看，了解其优缺点。单一学习一门语言，容易造成盲目崇拜，或者自我，不利于发挥和发展。</p>
<p>2、适当学习一些跟自己语言起胶水作用的语言。学php的离不了win/linux两个平台，作为web开发语言，在bat/shell编程方面，批处理、perl、bash的优势php无法完全替代。</p>
<p>没必要去把两个以上的语言都学习精通（精力充沛的除外），但必须精通一门，了解大众，起码在团队中跟他人配合的时候保证无障碍。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2010/04/10/%e6%9c%89%e6%b2%a1%e6%9c%89%e5%bf%85%e9%a1%bb%e5%8e%bb%e5%ad%a6%e4%b9%a0%e7%ac%ac%e4%ba%8c%e8%af%ad%e8%a8%80.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>关于一些网站登录穿越(账号改变&#124;登录变成他人)的问题研究</title>
		<link>http://www.sunboyu.cn/2010/03/30/discuz%e8%b4%a6%e5%8f%b7%e6%b7%b7%e4%b9%b1%e9%97%ae%e9%a2%98%e7%a0%94%e7%a9%b6.shtml</link>
		<comments>http://www.sunboyu.cn/2010/03/30/discuz%e8%b4%a6%e5%8f%b7%e6%b7%b7%e4%b9%b1%e9%97%ae%e9%a2%98%e7%a0%94%e7%a9%b6.shtml#comments</comments>
		<pubDate>Tue, 30 Mar 2010 06:13:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[相当拍砖]]></category>

		<category><![CDATA[账号改变]]></category>

		<category><![CDATA[账号穿越]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1199</guid>
		<description><![CDATA[最近论坛发生了一些问题，某用户A登录后变成了某用户B。此事在某阶段频繁发生。在排除了账号服务器的问题、程序自身问题后，在网上又发现类似现象：
淘宝账号诡异事件：
http://diybbs.it168.com/viewthread.php?tid=593134&#038;extra=&#038;page=1

我点到我自己的淘宝里面，进入了一个陌生女子的界面
不过这个bug只出现了一次
这个人我已经加上了，是个卖魔方的
卡巴斯基中文官网论坛账号诡异事件：
http://bbs.kaspersky.com.cn/viewthread.php?tid=15891
有登录论坛出现别人信息的会员请进这个问题，论坛上已经有不少会员碰到。管理员正在设法解决这个问题。凡是出现这种情况的，请在下面回帖，向管理员详细说明以下情况，帮助管理员更快解决问题
1、出现问题的频率和条件
2、进入论坛的方式（例如是收藏夹进入、直接输入网址进入……）
3、论坛登录名和密码的保存方式（每次输入，不保存；按照多少时间保存）
4、有无别人和你共用电脑
5、使用的浏览器，及其版本
6、有无采取清除缓存文件，清除Cookies的措施，效果如何？
7、除以上措施外，有没有采取过其他措施，效果如何？
GMAIL账号诡异事件：
http://www.gseeker.com/50226711/aecceaecgmaileaeieie_139265.php

看到这个标题，你可能会认为这是天方夜谭。但事实上，这是完全有可能发生的。某天，你在登录Gmail时，尽管你100%正确地输入了自己的用户名及密码，但出现在你眼前的却是别人的Gmail邮箱。如果你第一时间怀疑自己的眼睛，那你就冤枉它了。因为至少在科威特，部分Gmail用户本周就经历了这样的怪事。

通过这些事件的观察，和对一些论坛账号发生错误的账户主人的询问，基本确定了以下几个可能点：
1、缓存的错误。因为discuz使用cookie进行身份认证，而一些代理缓存了cookie头，造成一个cache多人使用造成的问题。http://bbs.chinaunix.net/viewthread.php?tid=837214
2、依然是缓存的问题。只不过这个缓存可以存在于cn大局域网，或者某些ISP，比如google的例子，或者某些地区的服务商，抑或……
您是通过什么网络上的淘宝，据我所知，移动的浙江固网宽带出现过类似的严重安全隐患。宽带网络运营商的问题很大（强制建立缓存代理服务器，缓存不该缓存的网页），网站的问题是其次的。或者说，在那种情况下，绝大多数网站用户都会出现“穿越”现象。
    如果被你穿越的人和你斗处在同一城市，基本上就是这个原因了。
解决方法，且听下次分解。
如果您的网站出现类似问题，欢迎加我qq176300676一起收集数据样本进行分析
亦可加入msn讨论群 lampper@live.cn
]]></description>
			<content:encoded><![CDATA[<p>最近论坛发生了一些问题，某用户A登录后变成了某用户B。此事在某阶段频繁发生。在排除了账号服务器的问题、程序自身问题后，在网上又发现类似现象：<br />
淘宝账号诡异事件：<br />
http://diybbs.it168.com/viewthread.php?tid=593134&#038;extra=&#038;page=1</p>
<blockquote><p>
我点到我自己的淘宝里面，进入了一个陌生女子的界面<br />
不过这个bug只出现了一次<br />
这个人我已经加上了，是个卖魔方的</p></blockquote>
<p>卡巴斯基中文官网论坛账号诡异事件：<br />
http://bbs.kaspersky.com.cn/viewthread.php?tid=15891</p>
<blockquote><p>有登录论坛出现别人信息的会员请进这个问题，论坛上已经有不少会员碰到。管理员正在设法解决这个问题。凡是出现这种情况的，请在下面回帖，向管理员详细说明以下情况，帮助管理员更快解决问题<br />
1、出现问题的频率和条件<br />
2、进入论坛的方式（例如是收藏夹进入、直接输入网址进入……）<br />
3、论坛登录名和密码的保存方式（每次输入，不保存；按照多少时间保存）<br />
4、有无别人和你共用电脑<br />
5、使用的浏览器，及其版本<br />
6、有无采取清除缓存文件，清除Cookies的措施，效果如何？<br />
7、除以上措施外，有没有采取过其他措施，效果如何？</p></blockquote>
<p>GMAIL账号诡异事件：<br />
http://www.gseeker.com/50226711/aecceaecgmaileaeieie_139265.php</p>
<blockquote><p>
看到这个标题，你可能会认为这是天方夜谭。但事实上，这是完全有可能发生的。某天，你在登录Gmail时，尽管你100%正确地输入了自己的用户名及密码，但出现在你眼前的却是别人的Gmail邮箱。如果你第一时间怀疑自己的眼睛，那你就冤枉它了。因为至少在科威特，部分Gmail用户本周就经历了这样的怪事。
</p></blockquote>
<p>通过这些事件的观察，和对一些论坛账号发生错误的账户主人的询问，基本确定了以下几个可能点：</p>
<p>1、缓存的错误。因为discuz使用cookie进行身份认证，而一些代理缓存了cookie头，造成一个cache多人使用造成的问题。http://bbs.chinaunix.net/viewthread.php?tid=837214</p>
<p>2、依然是缓存的问题。只不过这个缓存可以存在于cn大局域网，或者某些ISP，比如google的例子，或者某些地区的服务商，抑或……</p>
<blockquote><p>您是通过什么网络上的淘宝，据我所知，移动的浙江固网宽带出现过类似的严重安全隐患。宽带网络运营商的问题很大（强制建立缓存代理服务器，缓存不该缓存的网页），网站的问题是其次的。或者说，在那种情况下，绝大多数网站用户都会出现“穿越”现象。<br />
    如果被你穿越的人和你斗处在同一城市，基本上就是这个原因了。</p></blockquote>
<p>解决方法，且听下次分解。</p>
<p>如果您的网站出现类似问题，欢迎加我qq176300676一起收集数据样本进行分析</p>
<p>亦可加入msn讨论群 lampper@live.cn</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2010/03/30/discuz%e8%b4%a6%e5%8f%b7%e6%b7%b7%e4%b9%b1%e9%97%ae%e9%a2%98%e7%a0%94%e7%a9%b6.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>django&#124;python中图形验证码的实现</title>
		<link>http://www.sunboyu.cn/2010/03/23/djangopython%e4%b8%ad%e5%9b%be%e5%bd%a2%e9%aa%8c%e8%af%81%e7%a0%81%e7%9a%84%e5%ae%9e%e7%8e%b0.shtml</link>
		<comments>http://www.sunboyu.cn/2010/03/23/djangopython%e4%b8%ad%e5%9b%be%e5%bd%a2%e9%aa%8c%e8%af%81%e7%a0%81%e7%9a%84%e5%ae%9e%e7%8e%b0.shtml#comments</comments>
		<pubDate>Tue, 23 Mar 2010 06:01:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1195</guid>
		<description><![CDATA[python自己并没有带图型库，需要借助第三方的图形库来实现。原来习惯的就是php下的gd库，但网上搜索后普遍说gd的python接口不好用，又考虑php也即将抛弃dg，就选择了很多人推荐的 PIL（python image library） 库。
首先是安装此库，http://www.pythonware.com/products/pil/index.htm
选择自己相应版本和平台进行安装，安装文档写的还算清楚。
然后是代码实现：
import Image, ImageDraw, ImageFont, md5, random,cStringIO,util
def show(request):
&#160;&#160; &#160;im = Image.new('RGBA',(52,18),(50,50,50,50))
&#160;&#160; &#160;draw = ImageDraw.Draw(im)
&#160;&#160; &#160;rands = util.rand(4)&#160; //自己写的一个取随机字符串的函数
&#160;&#160; &#160;draw.text((2,0), rands[0], font=ImageFont.truetype(&#34;tahomabd.TTF&#34;, random.randrange(12,18)), fill='white')
&#160;&#160; &#160;draw.text((14,0), rands[1], font=ImageFont.truetype(&#34;tahomabd.TTF&#34;, random.randrange(12,18)), fill='yellow')
&#160;&#160; &#160;draw.text((27,0), rands[2], font=ImageFont.truetype(&#34;tahomabd.TTF&#34;, random.randrange(12,18)), fill='yellow')
&#160;&#160; &#160;draw.text((40,0), rands[3], font=ImageFont.truetype(&#34;tahomabd.TTF&#34;, random.randrange(12,18)), fill='white')&#160; 
&#160;&#160; &#160;del draw
&#160;&#160; &#160;request.session['checkcode'] = rands
&#160;&#160; &#160;buf = cStringIO.StringIO()
&#160;&#160; &#160;im.save(buf, 'gif')
&#160;&#160; &#160;return HttpResponse(buf.getvalue(),'image/gif')
修改urls.py文件
#check code
&#160;&#160; [...]]]></description>
			<content:encoded><![CDATA[<p>python自己并没有带图型库，需要借助第三方的图形库来实现。原来习惯的就是php下的gd库，但网上搜索后普遍说gd的python接口不好用，又考虑php也即将抛弃dg，就选择了很多人推荐的 PIL（python image library） 库。</p>
<p>首先是安装此库，http://www.pythonware.com/products/pil/index.htm</p>
<p>选择自己相应版本和平台进行安装，安装文档写的还算清楚。</p>
<p>然后是代码实现：</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">import Image, ImageDraw, ImageFont, md5, random,cStringIO,util</li>
<li>def show(request):</li>
<li>&nbsp;&nbsp; &nbsp;im = Image.new('RGBA',(52,18),(50,50,50,50))</li>
<li>&nbsp;&nbsp; &nbsp;draw = ImageDraw.Draw(im)</li>
<li>&nbsp;&nbsp; &nbsp;rands = util.rand(4)&nbsp; //自己写的一个取随机字符串的函数</li>
<li>&nbsp;&nbsp; &nbsp;draw.text((2,0), rands[0], font=ImageFont.truetype(&quot;tahomabd.TTF&quot;, random.randrange(12,18)), fill='white')</li>
<li>&nbsp;&nbsp; &nbsp;draw.text((14,0), rands[1], font=ImageFont.truetype(&quot;tahomabd.TTF&quot;, random.randrange(12,18)), fill='yellow')</li>
<li>&nbsp;&nbsp; &nbsp;draw.text((27,0), rands[2], font=ImageFont.truetype(&quot;tahomabd.TTF&quot;, random.randrange(12,18)), fill='yellow')</li>
<li>&nbsp;&nbsp; &nbsp;draw.text((40,0), rands[3], font=ImageFont.truetype(&quot;tahomabd.TTF&quot;, random.randrange(12,18)), fill='white')&nbsp; </li>
<li>&nbsp;&nbsp; &nbsp;del draw</li>
<li>&nbsp;&nbsp; &nbsp;request.session['checkcode'] = rands</li>
<li>&nbsp;&nbsp; &nbsp;buf = cStringIO.StringIO()</li>
<li>&nbsp;&nbsp; &nbsp;im.save(buf, 'gif')</li>
<li>&nbsp;&nbsp; &nbsp;return HttpResponse(buf.getvalue(),'image/gif')</li></ol></div>
<p>修改urls.py文件</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">#check code</li>
<li>&nbsp;&nbsp; &nbsp;(r'^checkcode/','view.checkcode.show'),</li></ol></div>
<p>再访问 http://127.0.0.1/checkcode/ 既可看到效果。</p>
<p>官方的手册写的比较惨，属于找什么没什么。顺便把网上找到的一个写的不错的文档传送来：http://nadiana.com/pil-tutorial-basic-advanced-drawing</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2010/03/23/djangopython%e4%b8%ad%e5%9b%be%e5%bd%a2%e9%aa%8c%e8%af%81%e7%a0%81%e7%9a%84%e5%ae%9e%e7%8e%b0.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>django中关于静态文件那些事</title>
		<link>http://www.sunboyu.cn/2010/03/20/django%e4%b8%ad%e5%85%b3%e4%ba%8e%e9%9d%99%e6%80%81%e6%96%87%e4%bb%b6%e9%82%a3%e4%ba%9b%e4%ba%8b.shtml</link>
		<comments>http://www.sunboyu.cn/2010/03/20/django%e4%b8%ad%e5%85%b3%e4%ba%8e%e9%9d%99%e6%80%81%e6%96%87%e4%bb%b6%e9%82%a3%e4%ba%9b%e4%ba%8b.shtml#comments</comments>
		<pubDate>Sat, 20 Mar 2010 09:10:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1191</guid>
		<description><![CDATA[那个500错误快把我整死了，结果才分析可能django把静态文件当脚本处理了。
对于线上部署，完全可以用rewrite的方式进行解决。可本机调试，用的是自带的server，可搞死人了。
不过搜索后发现，django解决这个问题了，使用一个叫做 django.views.static.serve 的方法处理这些静态文件。
实现代码如下:
在/urls.py 文件中
from os import path
底下增加
if settings.DEBUG:
&#160;&#160; &#160;urlpatterns += patterns('', (r'^static/(?P&#60;path&#62;.*)$', 'django.views.static.serve', {'document_root': path.join(path.dirname(__file__),'static')}), )
&#60;/path&#62;
然后，把所有静态文件放到 static 目录下，即可。
不过这种方式只适合开发环境，在线上的时候还是需要把这个问题交给httpserver
]]></description>
			<content:encoded><![CDATA[<p>那个500错误快把我整死了，结果才分析可能django把静态文件当脚本处理了。</p>
<p>对于线上部署，完全可以用rewrite的方式进行解决。可本机调试，用的是自带的server，可搞死人了。</p>
<p>不过搜索后发现，django解决这个问题了，使用一个叫做 django.views.static.serve 的方法处理这些静态文件。</p>
<p>实现代码如下:</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">在/urls.py 文件中</li>
<li>from os import path</li>
<li>底下增加</li>
<li>if settings.DEBUG:</li>
<li>&nbsp;&nbsp; &nbsp;urlpatterns += patterns('', (r'^static/(?P&lt;path&gt;.*)$', 'django.views.static.serve', {'document_root': path.join(path.dirname(__file__),'static')}), )</li>
<li>&lt;/path&gt;</li></ol></div>
<p>然后，把所有静态文件放到 static 目录下，即可。</p>
<p>不过这种方式只适合开发环境，在线上的时候还是需要把这个问题交给httpserver</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2010/03/20/django%e4%b8%ad%e5%85%b3%e4%ba%8e%e9%9d%99%e6%80%81%e6%96%87%e4%bb%b6%e9%82%a3%e4%ba%9b%e4%ba%8b.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>mongodb windows平台下的安装和使用</title>
		<link>http://www.sunboyu.cn/2010/03/18/mongodb-windows%e5%b9%b3%e5%8f%b0%e4%b8%8b%e7%9a%84%e5%ae%89%e8%a3%85%e5%92%8c%e4%bd%bf%e7%94%a8.shtml</link>
		<comments>http://www.sunboyu.cn/2010/03/18/mongodb-windows%e5%b9%b3%e5%8f%b0%e4%b8%8b%e7%9a%84%e5%ae%89%e8%a3%85%e5%92%8c%e4%bd%bf%e7%94%a8.shtml#comments</comments>
		<pubDate>Thu, 18 Mar 2010 05:47:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[原创技术]]></category>

		<category><![CDATA[mongodb]]></category>

		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1187</guid>
		<description><![CDATA[平时还是windows用的多，所以很多测试也习惯用windows。
首先下载mongodb的windows编译版本：
http://www.mongodb.org/display/DOCS/Downloads    http://downloads.mongodb.org/win32/mongodb-win32-i386-1.2.4.zip
解压后存放于 D:\mongodb
创建数据存放目录  D:\data
启动数据库  D:\mongodb\bin\mongod &#8211;dbpath D:\data
然后测试连接情况 D:\mongodb\bin\mongo
因为都是使用默认配置，如果出现以下回显，则证明安装成功
MongoDB shell version: 1.2.4
url: test
connecting to: test
type &#34;exit&#34; to exit
type &#34;help&#34; for help
&#62;
进阶：为了平时使用方便，把mongod注册为系统服务
D:\mongodb\bin\mongod &#8211;dbpath D:\data &#8211;install       #注册为系统服务
修改服务的端口  D:\mongodb\bin\mongod &#8211;dbpath D:\data &#8211;port 10001
其他配置 敲 mongod -h 就会出来
]]></description>
			<content:encoded><![CDATA[<p>平时还是windows用的多，所以很多测试也习惯用windows。</p>
<p>首先下载mongodb的windows编译版本：</p>
<p>http://www.mongodb.org/display/DOCS/Downloads    http://downloads.mongodb.org/win32/mongodb-win32-i386-1.2.4.zip</p>
<p>解压后存放于 D:\mongodb</p>
<p>创建数据存放目录  D:\data</p>
<p>启动数据库  D:\mongodb\bin\mongod &#8211;dbpath D:\data</p>
<p>然后测试连接情况 D:\mongodb\bin\mongo</p>
<p>因为都是使用默认配置，如果出现以下回显，则证明安装成功</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">MongoDB shell version: 1.2.4</li>
<li>url: test</li>
<li>connecting to: test</li>
<li>type &quot;exit&quot; to exit</li>
<li>type &quot;help&quot; for help</li>
<li>&gt;</li></ol></div>
<p>进阶：为了平时使用方便，把mongod注册为系统服务</p>
<p>D:\mongodb\bin\mongod &#8211;dbpath D:\data &#8211;install       #注册为系统服务</p>
<p>修改服务的端口  D:\mongodb\bin\mongod &#8211;dbpath D:\data &#8211;port 10001</p>
<p>其他配置 敲 mongod -h 就会出来</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2010/03/18/mongodb-windows%e5%b9%b3%e5%8f%b0%e4%b8%8b%e7%9a%84%e5%ae%89%e8%a3%85%e5%92%8c%e4%bd%bf%e7%94%a8.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>系统重装那事</title>
		<link>http://www.sunboyu.cn/2010/03/04/%e7%b3%bb%e7%bb%9f%e9%87%8d%e8%a3%85%e9%82%a3%e4%ba%8b.shtml</link>
		<comments>http://www.sunboyu.cn/2010/03/04/%e7%b3%bb%e7%bb%9f%e9%87%8d%e8%a3%85%e9%82%a3%e4%ba%8b.shtml#comments</comments>
		<pubDate>Thu, 04 Mar 2010 13:38:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1176</guid>
		<description><![CDATA[写了个简单的笔记

金山毒霸2009杀毒套装  找公司要序列号
WPS OFFICE个人版  下载
fireworks
dreamweave
editplus 设置
adobe reader
mindmanager
foxmail 设置
搜狗输入法 设置
腾讯通
firefox
firebug
alexabar
httpwatch
svn客户端 配置
windows补丁
sp3
apache
php
mysql
python2.5
msn
cuteftp
加入公司的域
设置ip
环境变量 D:\dev\PHP5;D:\dev\PHP5\ext;

]]></description>
			<content:encoded><![CDATA[<p>写了个简单的笔记</p>
<blockquote><p>
金山毒霸2009杀毒套装  找公司要序列号<br />
WPS OFFICE个人版  下载<br />
fireworks<br />
dreamweave<br />
editplus 设置<br />
adobe reader<br />
mindmanager<br />
foxmail 设置<br />
搜狗输入法 设置<br />
腾讯通<br />
firefox<br />
firebug<br />
alexabar<br />
httpwatch<br />
svn客户端 配置<br />
windows补丁<br />
sp3<br />
apache<br />
php<br />
mysql<br />
python2.5<br />
msn<br />
cuteftp<br />
加入公司的域<br />
设置ip<br />
环境变量 D:\dev\PHP5;D:\dev\PHP5\ext;
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2010/03/04/%e7%b3%bb%e7%bb%9f%e9%87%8d%e8%a3%85%e9%82%a3%e4%ba%8b.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>新年新气象</title>
		<link>http://www.sunboyu.cn/2010/03/02/%e6%96%b0%e5%b9%b4%e6%96%b0%e6%b0%94%e8%b1%a1-2.shtml</link>
		<comments>http://www.sunboyu.cn/2010/03/02/%e6%96%b0%e5%b9%b4%e6%96%b0%e6%b0%94%e8%b1%a1-2.shtml#comments</comments>
		<pubDate>Tue, 02 Mar 2010 15:25:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[感悟]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1174</guid>
		<description><![CDATA[1、千万别碰网游，除非你靠网游吃饭
2、多看书总是有用的，包括闲书
3、多交朋友，多帮助别人。感情是个银行，利息很大
4、学习依然是最重要的
5、虽然很俗，虽然通货膨胀，但人民币是最可爱的东西
]]></description>
			<content:encoded><![CDATA[<p>1、千万别碰网游，除非你靠网游吃饭<br />
2、多看书总是有用的，包括闲书<br />
3、多交朋友，多帮助别人。感情是个银行，利息很大<br />
4、学习依然是最重要的<br />
5、虽然很俗，虽然通货膨胀，但人民币是最可爱的东西</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2010/03/02/%e6%96%b0%e5%b9%b4%e6%96%b0%e6%b0%94%e8%b1%a1-2.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>头绪与条理</title>
		<link>http://www.sunboyu.cn/2010/01/30/%e5%a4%b4%e7%bb%aa%e4%b8%8e%e6%9d%a1%e7%90%86.shtml</link>
		<comments>http://www.sunboyu.cn/2010/01/30/%e5%a4%b4%e7%bb%aa%e4%b8%8e%e6%9d%a1%e7%90%86.shtml#comments</comments>
		<pubDate>Sat, 30 Jan 2010 03:57:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[感悟]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1172</guid>
		<description><![CDATA[没想到这两个词具体是什么意思，但这肯定是我的缺陷了。
前几天培训，被指出这个毛病，其实仔细回想，工作中何尝不是没有头绪条理，很多事情忙的团团转，搞的一团糟。
改正这个毛病其实用了很长时间，从期初开始做简单的文件记录，到后来大量的纸质手稿，到现在详细的记录和思维软件(mindmanage)的应用，对做事有了很多提高。
昨天晚上加班，自愿加班，去完成一个我所认为半天就能完成的工作，其实用了将近一天，实际工作时间也算半天吧。时间浪费了一大半，是因为以前已经实现的一个冗杂的逻辑又去想了一遍，结果还没想明白。后把之前的逻辑拿来，20分钟顺利结束了战斗。
非常勤恳的工作不是啥好事，漂亮得完成工作并把时间留给自己才是王道。
]]></description>
			<content:encoded><![CDATA[<p>没想到这两个词具体是什么意思，但这肯定是我的缺陷了。</p>
<p>前几天培训，被指出这个毛病，其实仔细回想，工作中何尝不是没有头绪条理，很多事情忙的团团转，搞的一团糟。</p>
<p>改正这个毛病其实用了很长时间，从期初开始做简单的文件记录，到后来大量的纸质手稿，到现在详细的记录和思维软件(mindmanage)的应用，对做事有了很多提高。</p>
<p>昨天晚上加班，自愿加班，去完成一个我所认为半天就能完成的工作，其实用了将近一天，实际工作时间也算半天吧。时间浪费了一大半，是因为以前已经实现的一个冗杂的逻辑又去想了一遍，结果还没想明白。后把之前的逻辑拿来，20分钟顺利结束了战斗。</p>
<p>非常勤恳的工作不是啥好事，漂亮得完成工作并把时间留给自己才是王道。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2010/01/30/%e5%a4%b4%e7%bb%aa%e4%b8%8e%e6%9d%a1%e7%90%86.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>程序员的跳跃思维与作品</title>
		<link>http://www.sunboyu.cn/2010/01/21/%e7%a8%8b%e5%ba%8f%e5%91%98%e7%9a%84%e8%b7%b3%e8%b7%83%e6%80%9d%e7%bb%b4%e4%b8%8e%e4%bd%9c%e5%93%81.shtml</link>
		<comments>http://www.sunboyu.cn/2010/01/21/%e7%a8%8b%e5%ba%8f%e5%91%98%e7%9a%84%e8%b7%b3%e8%b7%83%e6%80%9d%e7%bb%b4%e4%b8%8e%e4%bd%9c%e5%93%81.shtml#comments</comments>
		<pubDate>Thu, 21 Jan 2010 14:04:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1169</guid>
		<description><![CDATA[前段时间，我的网站自觉和谐了，留下了一个空荡荡的服务器。当然，有个必须解决的事情，就是月付的租用费用。
我挣的都是辛苦钱，更让我明白了时间就是金钱的概念。因此，我得让我的服务器有所产出。
想了很多种方案，有好友提示：学习芭比豆淘小宝之类的网站，出租相册空间给卖家也不错。伟大！
遂开始配服务写代码。写到一半，突然发现，时间付出也许跟此项目的产出严重不符。一台服务器利润太小，除非实现规模化运营。而我最不擅长的就是销售，看着写了一半的程序心疼，遂产生念头，把代码开放给需要的人，作为一个开源项目让其自生自灭。
我知道程序员为啥都穷的叮当了。
演示：http://taobao.sunboyu.cn/
谁帮我做个界面……
请耐心等待我的程序注释和配置指南……
]]></description>
			<content:encoded><![CDATA[<p>前段时间，我的网站自觉和谐了，留下了一个空荡荡的服务器。当然，有个必须解决的事情，就是月付的租用费用。</p>
<p>我挣的都是辛苦钱，更让我明白了时间就是金钱的概念。因此，我得让我的服务器有所产出。</p>
<p>想了很多种方案，有好友提示：学习芭比豆淘小宝之类的网站，出租相册空间给卖家也不错。伟大！</p>
<p>遂开始配服务写代码。写到一半，突然发现，时间付出也许跟此项目的产出严重不符。一台服务器利润太小，除非实现规模化运营。而我最不擅长的就是销售，看着写了一半的程序心疼，遂产生念头，把代码开放给需要的人，作为一个开源项目让其自生自灭。</p>
<p>我知道程序员为啥都穷的叮当了。</p>
<p>演示：<a href="http://taobao.sunboyu.cn/">http://taobao.sunboyu.cn/</a></p>
<p>谁帮我做个界面……</p>
<p>请耐心等待我的程序注释和配置指南……</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2010/01/21/%e7%a8%8b%e5%ba%8f%e5%91%98%e7%9a%84%e8%b7%b3%e8%b7%83%e6%80%9d%e7%bb%b4%e4%b8%8e%e4%bd%9c%e5%93%81.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>discuz论坛sessions表最终优化方案</title>
		<link>http://www.sunboyu.cn/2010/01/17/discuz%e8%ae%ba%e5%9d%9bsessions%e8%a1%a8%e6%9c%80%e7%bb%88%e4%bc%98%e5%8c%96%e6%96%b9%e6%a1%88.shtml</link>
		<comments>http://www.sunboyu.cn/2010/01/17/discuz%e8%ae%ba%e5%9d%9bsessions%e8%a1%a8%e6%9c%80%e7%bb%88%e4%bc%98%e5%8c%96%e6%96%b9%e6%a1%88.shtml#comments</comments>
		<pubDate>Sun, 17 Jan 2010 15:00:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[原创技术]]></category>

		<category><![CDATA[discuz]]></category>

		<category><![CDATA[sessions表]]></category>

		<category><![CDATA[优化]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1163</guid>
		<description><![CDATA[最近一直在折腾dz的sessions表优化。经过某群好友的各种方法提示和一些高数据量用户论坛的鼎力支持，总结以下优化方案。部分方案是在某些论坛正在使用的，部分方案是我发散思维总结的，没有经过大数据量和大负载下的应用，只是作为一个备选的方案，当然欢迎朋友们拿去实践。
1、分库
这个方法至少两三个注册用户百万级至千万级的论坛在使用。实施也比较简单，只需要把sessions表放在其他的库中，跟论坛主库分离，这样，就可以用多台服务器来分担论坛压力。sessions表查询的地方，如果直接查询，则连sessions表所在的库，如果是联查，则分别查询后，合并插叙结果。
2、砍功能
这个方法虽然不实用，但的确有效。仔细看看dz的一些sql语句，就知道砍掉某些功能摆脱sessions表的约束，性能会有多大的提高。砍功能，最终还是为了提升性能。但如果不砍功能又提升性能，才是终极目的。此方法适用于对某些统计功能要求不高的论坛使用。
3、memcached存储sessions，异步统计用户的在线数据
此方法其实还是砍掉了论坛的用户在线统计功能而独立开发一套统计系统。此思路来源于我们的统计服务器。如果统计服务器已经统计了部分信息，就没必要再去耗费大量的sql效率去进行统计。当时我们负责统计的吴同学正好也要开发一套针对不同系统的统计代码，我可以直接把要统计的数据提交给统计服务器，再由统计服务器返回统计结果。以异步的方式来统计，化解dz sessions表的性能瓶颈。而统计信息的异步提交，可以提交到本地数据库，可以提交到第三方统计系统，当然也可以根据需要独立开发一套小型统计系统。
方案3是本人原创方案，方案的修改代码在以下附件中：  异步session统计信息同步，欢迎大家使用。
由于dz的开发考虑的是大众市场，功能冗余代码逻辑复杂。但优化dz并不是那么的困难，而优化的思路，也是跟其他系统优化相似：mysql瓶颈。一个即将崩溃的系统，或者频繁崩溃的系统，是进行优化的最好示例：减少sql查询，提高sql语句查询效率。dz考虑大众市场，为了提高产品兼容性，并没有引入太多的第三方软件：比如memcached，bdb，ttserver等，虽然内部已经为主从预留了接口，但未见很明显的文档支持。
第三个方案优化的思路也很明显，减少sessions表的慢查询而改为memcached高速的数据存储，把统计功能做接口留出，此功能给第三方来做。这样sessions表的瓶颈即可消除。
]]></description>
			<content:encoded><![CDATA[<p>最近一直在折腾dz的sessions表优化。经过某群好友的各种方法提示和一些高数据量用户论坛的鼎力支持，总结以下优化方案。部分方案是在某些论坛正在使用的，部分方案是我发散思维总结的，没有经过大数据量和大负载下的应用，只是作为一个备选的方案，当然欢迎朋友们拿去实践。</p>
<p>1、分库</p>
<p>这个方法至少两三个注册用户百万级至千万级的论坛在使用。实施也比较简单，只需要把sessions表放在其他的库中，跟论坛主库分离，这样，就可以用多台服务器来分担论坛压力。sessions表查询的地方，如果直接查询，则连sessions表所在的库，如果是联查，则分别查询后，合并插叙结果。</p>
<p>2、砍功能</p>
<p>这个方法虽然不实用，但的确有效。仔细看看dz的一些sql语句，就知道砍掉某些功能摆脱sessions表的约束，性能会有多大的提高。砍功能，最终还是为了提升性能。但如果不砍功能又提升性能，才是终极目的。此方法适用于对某些统计功能要求不高的论坛使用。</p>
<p>3、memcached存储sessions，异步统计用户的在线数据</p>
<p>此方法其实还是砍掉了论坛的用户在线统计功能而独立开发一套统计系统。此思路来源于我们的统计服务器。如果统计服务器已经统计了部分信息，就没必要再去耗费大量的sql效率去进行统计。当时我们负责统计的吴同学正好也要开发一套针对不同系统的统计代码，我可以直接把要统计的数据提交给统计服务器，再由统计服务器返回统计结果。以异步的方式来统计，化解dz sessions表的性能瓶颈。而统计信息的异步提交，可以提交到本地数据库，可以提交到第三方统计系统，当然也可以根据需要独立开发一套小型统计系统。</p>
<p>方案3是本人原创方案，方案的修改代码在以下附件中：  <a href='http://www.sunboyu.cn/upfiles/2010/01/异步session统计信息同步.txt'>异步session统计信息同步</a>，欢迎大家使用。</p>
<p>由于dz的开发考虑的是大众市场，功能冗余代码逻辑复杂。但优化dz并不是那么的困难，而优化的思路，也是跟其他系统优化相似：mysql瓶颈。一个即将崩溃的系统，或者频繁崩溃的系统，是进行优化的最好示例：减少sql查询，提高sql语句查询效率。dz考虑大众市场，为了提高产品兼容性，并没有引入太多的第三方软件：比如memcached，bdb，ttserver等，虽然内部已经为主从预留了接口，但未见很明显的文档支持。<br />
第三个方案优化的思路也很明显，减少sessions表的慢查询而改为memcached高速的数据存储，把统计功能做接口留出，此功能给第三方来做。这样sessions表的瓶颈即可消除。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2010/01/17/discuz%e8%ae%ba%e5%9d%9bsessions%e8%a1%a8%e6%9c%80%e7%bb%88%e4%bc%98%e5%8c%96%e6%96%b9%e6%a1%88.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>撞在墙上的一个思路</title>
		<link>http://www.sunboyu.cn/2010/01/16/%e6%92%9e%e5%9c%a8%e5%a2%99%e4%b8%8a%e7%9a%84%e4%b8%80%e4%b8%aa%e6%80%9d%e8%b7%af.shtml</link>
		<comments>http://www.sunboyu.cn/2010/01/16/%e6%92%9e%e5%9c%a8%e5%a2%99%e4%b8%8a%e7%9a%84%e4%b8%80%e4%b8%aa%e6%80%9d%e8%b7%af.shtml#comments</comments>
		<pubDate>Fri, 15 Jan 2010 16:59:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[MYSQL]]></category>

		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1159</guid>
		<description><![CDATA[今天一天没干别的，没写程序，没玩游戏，除了中午参加公司的一个吹气球比赛得了第一，获得“**公司第一吹”的称号。
一天都在考虑使用完全开源的方案来解决dz sessions表的性能问题。中午大脑极度紧张，以至于撞在关兄的工位，工位几近散架。
在轻度震荡中想到一个优化方案，就是分离sessions表的一些功能，把sessions会话和统计功能分离，并且统计使用异步提交。
这样，如果sessions会话生存期10分钟的量计算，20万人同时在线，sessions会话存memcached，而统计只用少量字段在独立的表中。因为php的sessions操作速度高，而统计信息调用并不是非常频繁，并且查找也是简单的int型查询，速度快，并且也进行memcached缓存。
下午吴同学详细讲述了我们的统计系统的负载和数据量，在大量实际应用的基础上，我的方案应该能很好的实施。
这样算来，连接瓶颈跟存储瓶颈似乎都能解决。明天集中时间实现这个方案。
]]></description>
			<content:encoded><![CDATA[<p>今天一天没干别的，没写程序，没玩游戏，除了中午参加公司的一个吹气球比赛得了第一，获得“**公司第一吹”的称号。</p>
<p>一天都在考虑使用完全开源的方案来解决dz sessions表的性能问题。中午大脑极度紧张，以至于撞在关兄的工位，工位几近散架。</p>
<p>在轻度震荡中想到一个优化方案，就是分离sessions表的一些功能，把sessions会话和统计功能分离，并且统计使用异步提交。</p>
<p>这样，如果sessions会话生存期10分钟的量计算，20万人同时在线，sessions会话存memcached，而统计只用少量字段在独立的表中。因为php的sessions操作速度高，而统计信息调用并不是非常频繁，并且查找也是简单的int型查询，速度快，并且也进行memcached缓存。</p>
<p>下午吴同学详细讲述了我们的统计系统的负载和数据量，在大量实际应用的基础上，我的方案应该能很好的实施。</p>
<p>这样算来，连接瓶颈跟存储瓶颈似乎都能解决。明天集中时间实现这个方案。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2010/01/16/%e6%92%9e%e5%9c%a8%e5%a2%99%e4%b8%8a%e7%9a%84%e4%b8%80%e4%b8%aa%e6%80%9d%e8%b7%af.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>关于discuz的优化纠结</title>
		<link>http://www.sunboyu.cn/2010/01/15/%e5%85%b3%e4%ba%8ediscuz%e7%9a%84%e4%bc%98%e5%8c%96%e7%ba%a0%e7%bb%93.shtml</link>
		<comments>http://www.sunboyu.cn/2010/01/15/%e5%85%b3%e4%ba%8ediscuz%e7%9a%84%e4%bc%98%e5%8c%96%e7%ba%a0%e7%bb%93.shtml#comments</comments>
		<pubDate>Fri, 15 Jan 2010 07:23:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[MYSQL]]></category>

		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1155</guid>
		<description><![CDATA[最近一直在寻找一个开源的方案来解决discuz的性能瓶颈。在做完几个关键表的分表后，sessions表又成了最大的瓶颈。因为页面每次刷新，至少两个sql语句在session表上，究其原因，session表的最大作用在于对用户行为的统计。
曾经尝试过使用php的session，不过支持phpsession的几个sever都不支持条件查询，除非是遍历匹配。这样也不能起到提高性能的作用。
在以上条件下，我寻找了两套方案：ttserver mongodb。
在session表100w数据的测试下，得出以下数据：

连接测试-只测试连接释放
tt:40.0904033184
mysqldb:0.0669066905975
mongodb:226.840053558
mysqldb:0.154407262802
经过一万次的连接测试，同一个脚本中，
ttserver连接耗时 40.09 秒，而mysql连接耗时0.07秒 linux下测试
mongodb 连接耗时 226.8 秒，而mysql连接耗时0.15秒 linux下测试
但是在500次的查询测试中，同一个脚本中，主键查询和索引优化后的复杂查询
mongodb 查询耗时 0.021 秒
mysql   查询耗时 0.123 秒

可以看出，tt和mongo两个功能上完全支持此表优化的数据库，在连接性能上远不如mysql，而web为频繁连接中断的服务，显然并不适合做这项功能。
继续寻找支持此功能的开源方案，欢迎大家提供线索。
]]></description>
			<content:encoded><![CDATA[<p>最近一直在寻找一个开源的方案来解决discuz的性能瓶颈。在做完几个关键表的分表后，sessions表又成了最大的瓶颈。因为页面每次刷新，至少两个sql语句在session表上，究其原因，session表的最大作用在于对用户行为的统计。</p>
<p>曾经尝试过使用php的session，不过支持phpsession的几个sever都不支持条件查询，除非是遍历匹配。这样也不能起到提高性能的作用。</p>
<p>在以上条件下，我寻找了两套方案：ttserver mongodb。</p>
<p>在session表100w数据的测试下，得出以下数据：</p>
<blockquote><p>
连接测试-只测试连接释放<br />
tt:40.0904033184<br />
mysqldb:0.0669066905975</p>
<p>mongodb:226.840053558<br />
mysqldb:0.154407262802</p>
<p>经过一万次的连接测试，同一个脚本中，<br />
ttserver连接耗时 40.09 秒，而mysql连接耗时0.07秒 linux下测试<br />
mongodb 连接耗时 226.8 秒，而mysql连接耗时0.15秒 linux下测试</p>
<p>但是在500次的查询测试中，同一个脚本中，主键查询和索引优化后的复杂查询<br />
mongodb 查询耗时 0.021 秒<br />
mysql   查询耗时 0.123 秒
</p></blockquote>
<p>可以看出，tt和mongo两个功能上完全支持此表优化的数据库，在连接性能上远不如mysql，而web为频繁连接中断的服务，显然并不适合做这项功能。</p>
<p>继续寻找支持此功能的开源方案，欢迎大家提供线索。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2010/01/15/%e5%85%b3%e4%ba%8ediscuz%e7%9a%84%e4%bc%98%e5%8c%96%e7%ba%a0%e7%bb%93.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>剑侠世界三-大堂驿报-财经-古井泉的回落谈叶芷青服务器的金融情况</title>
		<link>http://www.sunboyu.cn/2010/01/11/%e5%89%91%e4%be%a0%e4%b8%96%e7%95%8c%e4%b8%89-%e5%a4%a7%e5%a0%82%e9%a9%bf%e6%8a%a5-%e8%b4%a2%e7%bb%8f-%e5%8f%a4%e4%ba%95%e6%b3%89%e7%9a%84%e5%9b%9e%e8%90%bd%e8%b0%88%e5%8f%b6%e8%8a%b7%e9%9d%92.shtml</link>
		<comments>http://www.sunboyu.cn/2010/01/11/%e5%89%91%e4%be%a0%e4%b8%96%e7%95%8c%e4%b8%89-%e5%a4%a7%e5%a0%82%e9%a9%bf%e6%8a%a5-%e8%b4%a2%e7%bb%8f-%e5%8f%a4%e4%ba%95%e6%b3%89%e7%9a%84%e5%9b%9e%e8%90%bd%e8%b0%88%e5%8f%b6%e8%8a%b7%e9%9d%92.shtml#comments</comments>
		<pubDate>Mon, 11 Jan 2010 06:51:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<category><![CDATA[逍遥谷的那些事]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1151</guid>
		<description><![CDATA[我是剑三里一小商人，小本生意下自然不会有太多极品的材料，不过小生意也红红火火。做生意自然要关注市场动态，底下谈谈朝廷和金融的一些动态。
最近朝廷发威，70个区服封杀外挂将近2500多个。兴奋之余，不免悲哀：我的唯一的一个古井泉由三天前的1700金将到了1200金，世界频道很多人以千金的价格抛售，难得一个冤大头1050金买走了我的古井泉。
古井泉价格下滑，跟封挂有着密切关系。封挂，意味着大量的古井将回归到玩家手里，更有小道消息：古井的爆率大部分将放到副本里。综合这两个因素，外挂商大量抛售古井套现，而玩家也有了获得古井新的手段，价格自然会回降。
朝廷用金融的手段来封外挂，比技术手段高明得多。
再谈封挂对其他物价的影响。
受古井降价影响，很多玩家开始筹备铸造或者缝纫高级紫装，古井泉到位，其他材料自然要凑齐。千年冰芯、珍珠缀放的价格有所上涨，是三天前的5~10倍。其他普通材料变化不大，但有上涨的趋势。
由于很多外挂被封，绫罗水波零这些普通的日常冲级材料会涨价。以前交易行的低价材料大部分都是外挂商打出，他们的倾销造成价格很低。
中冷泉五莲泉由于广阔的市场，价格依然坚挺，隐月线、天山雪水等蓝色材料，根据爆率和市场需求，价格会保持稳定，不会有太大起伏。
最近铜锭等低级的材料又涨价趋势，因为很多70级的铸造材料，中间需要铜锭等。因此，小号们赶紧多打点铜锭，技能练习采矿铸造，又能小发一笔补贴家用。
剑三的市场跟真实的世界有很大的相似之处，因此想发财，还是要多关注我们的财经报道。谢谢各位大侠。
]]></description>
			<content:encoded><![CDATA[<p>我是剑三里一小商人，小本生意下自然不会有太多极品的材料，不过小生意也红红火火。做生意自然要关注市场动态，底下谈谈朝廷和金融的一些动态。</p>
<p>最近朝廷发威，70个区服封杀外挂将近2500多个。兴奋之余，不免悲哀：我的唯一的一个古井泉由三天前的1700金将到了1200金，世界频道很多人以千金的价格抛售，难得一个冤大头1050金买走了我的古井泉。</p>
<p>古井泉价格下滑，跟封挂有着密切关系。封挂，意味着大量的古井将回归到玩家手里，更有小道消息：古井的爆率大部分将放到副本里。综合这两个因素，外挂商大量抛售古井套现，而玩家也有了获得古井新的手段，价格自然会回降。</p>
<p>朝廷用金融的手段来封外挂，比技术手段高明得多。</p>
<p>再谈封挂对其他物价的影响。</p>
<p>受古井降价影响，很多玩家开始筹备铸造或者缝纫高级紫装，古井泉到位，其他材料自然要凑齐。千年冰芯、珍珠缀放的价格有所上涨，是三天前的5~10倍。其他普通材料变化不大，但有上涨的趋势。</p>
<p>由于很多外挂被封，绫罗水波零这些普通的日常冲级材料会涨价。以前交易行的低价材料大部分都是外挂商打出，他们的倾销造成价格很低。</p>
<p>中冷泉五莲泉由于广阔的市场，价格依然坚挺，隐月线、天山雪水等蓝色材料，根据爆率和市场需求，价格会保持稳定，不会有太大起伏。</p>
<p>最近铜锭等低级的材料又涨价趋势，因为很多70级的铸造材料，中间需要铜锭等。因此，小号们赶紧多打点铜锭，技能练习采矿铸造，又能小发一笔补贴家用。</p>
<p>剑三的市场跟真实的世界有很大的相似之处，因此想发财，还是要多关注我们的财经报道。谢谢各位大侠。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2010/01/11/%e5%89%91%e4%be%a0%e4%b8%96%e7%95%8c%e4%b8%89-%e5%a4%a7%e5%a0%82%e9%a9%bf%e6%8a%a5-%e8%b4%a2%e7%bb%8f-%e5%8f%a4%e4%ba%95%e6%b3%89%e7%9a%84%e5%9b%9e%e8%90%bd%e8%b0%88%e5%8f%b6%e8%8a%b7%e9%9d%92.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>小改EditPlus打造python开发环境</title>
		<link>http://www.sunboyu.cn/2010/01/10/%e5%b0%8f%e6%94%b9editplus%e6%89%93%e9%80%a0python%e5%bc%80%e5%8f%91%e7%8e%af%e5%a2%83.shtml</link>
		<comments>http://www.sunboyu.cn/2010/01/10/%e5%b0%8f%e6%94%b9editplus%e6%89%93%e9%80%a0python%e5%bc%80%e5%8f%91%e7%8e%af%e5%a2%83.shtml#comments</comments>
		<pubDate>Sun, 10 Jan 2010 13:00:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Python]]></category>

		<category><![CDATA[原创技术]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1148</guid>
		<description><![CDATA[editplus默认是不支持python开发的，但官方提供了相关的支持：
http://www.editplus.com/dn.cgi?python3.zip
在 菜单->工具选择->语法 中，可以新建语法类型 python,扩展名 py,语法文件为python.stx,自动完成文件为python.acp
即可。
]]></description>
			<content:encoded><![CDATA[<p>editplus默认是不支持python开发的，但官方提供了相关的支持：</p>
<p>http://www.editplus.com/dn.cgi?python3.zip</p>
<p>在 菜单->工具选择->语法 中，可以新建语法类型 python,扩展名 py,语法文件为python.stx,自动完成文件为python.acp</p>
<p>即可。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2010/01/10/%e5%b0%8f%e6%94%b9editplus%e6%89%93%e9%80%a0python%e5%bc%80%e5%8f%91%e7%8e%af%e5%a2%83.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>在nginx下配置自动虚拟主机</title>
		<link>http://www.sunboyu.cn/2010/01/09/%e5%9c%a8nginx%e4%b8%8b%e9%85%8d%e7%bd%ae%e8%87%aa%e5%8a%a8%e8%99%9a%e6%8b%9f%e4%b8%bb%e6%9c%ba.shtml</link>
		<comments>http://www.sunboyu.cn/2010/01/09/%e5%9c%a8nginx%e4%b8%8b%e9%85%8d%e7%bd%ae%e8%87%aa%e5%8a%a8%e8%99%9a%e6%8b%9f%e4%b8%bb%e6%9c%ba.shtml#comments</comments>
		<pubDate>Fri, 08 Jan 2010 16:33:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[原创技术]]></category>

		<category><![CDATA[nginx]]></category>

		<category><![CDATA[虚拟主机]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1143</guid>
		<description><![CDATA[以前用apache，很多虚拟主机的时候，用 mod_vhost_alias 模块去解决。nginx似乎没有这样的功能。
原来为了做这个功能，我用python写了一堆脚本，去自动管理nginx的配置文件，结果还是不理想。频繁重写配置文件，频繁重启，总会出现点问题。
在nginx的0.8.*下，发现了这样的功能：http://wiki.nginx.org/NginxHttpCoreModule

Since nginx 0.8.25 named captures can be used in server_name:
server {
  server_name   ~^(www\.)?(?.+)$;
  location / {
    root  /sites/$domain;
  }
}

大喜，于是乎做出如下配置，实现了nginx下自动虚拟主机的功能：
server {
&#160;&#160; &#160; listen&#160; &#160; &#160; &#160;80;
&#160;&#160; &#160; server_name&#160; ~^(?P&#60;domainname&#62;.+)\.autovhost\.sunboyu\.cn$;
&#160;&#160; &#160; location / {
&#160;&#160; &#160; &#160; &#160; #autoindex&#160; on;
&#160;&#160; &#160; &#160; &#160; root&#160; &#160;/home/vhost/$domainname;
&#160;&#160; &#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>以前用apache，很多虚拟主机的时候，用 mod_vhost_alias 模块去解决。nginx似乎没有这样的功能。</p>
<p>原来为了做这个功能，我用python写了一堆脚本，去自动管理nginx的配置文件，结果还是不理想。频繁重写配置文件，频繁重启，总会出现点问题。</p>
<p>在nginx的0.8.*下，发现了这样的功能：http://wiki.nginx.org/NginxHttpCoreModule</p>
<blockquote><p>
Since nginx 0.8.25 named captures can be used in server_name:<br />
server {<br />
  server_name   ~^(www\.)?(?<domain>.+)$;<br />
  location / {<br />
    root  /sites/$domain;<br />
  }<br />
}<br />
</domain></p></blockquote>
<p>大喜，于是乎做出如下配置，实现了nginx下自动虚拟主机的功能：</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">server {</li>
<li>&nbsp;&nbsp; &nbsp; listen&nbsp; &nbsp; &nbsp; &nbsp;80;</li>
<li>&nbsp;&nbsp; &nbsp; server_name&nbsp; ~^(?P&lt;domainname&gt;.+)\.autovhost\.sunboyu\.cn$;</li>
<li>&nbsp;&nbsp; &nbsp; location / {</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; #autoindex&nbsp; on;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; root&nbsp; &nbsp;/home/vhost/$domainname;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; index&nbsp; index.html index.htm;</li>
<li>&nbsp;&nbsp; &nbsp; }</li>
<li>&nbsp;&nbsp; &nbsp; access_log /home/autovhost.sunboyu.cn.log main;</li>
<li>}</li>
<li>&lt;/domainname&gt;</li></ol></div>
<p>测试通过。</p>
<p>我的开源虚拟主机管理系统nginx版本指日可待。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2010/01/09/%e5%9c%a8nginx%e4%b8%8b%e9%85%8d%e7%bd%ae%e8%87%aa%e5%8a%a8%e8%99%9a%e6%8b%9f%e4%b8%bb%e6%9c%ba.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>新浪微博短URL的意义和实现</title>
		<link>http://www.sunboyu.cn/2010/01/03/%e6%96%b0%e6%b5%aa%e5%be%ae%e5%8d%9a%e7%9f%adurl%e7%9a%84%e6%84%8f%e4%b9%89%e5%92%8c%e5%ae%9e%e7%8e%b0.shtml</link>
		<comments>http://www.sunboyu.cn/2010/01/03/%e6%96%b0%e6%b5%aa%e5%be%ae%e5%8d%9a%e7%9f%adurl%e7%9a%84%e6%84%8f%e4%b9%89%e5%92%8c%e5%ae%9e%e7%8e%b0.shtml#comments</comments>
		<pubDate>Sat, 02 Jan 2010 16:40:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[其他]]></category>

		<category><![CDATA[微博]]></category>

		<category><![CDATA[新浪]]></category>

		<category><![CDATA[短url]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1141</guid>
		<description><![CDATA[新浪微博，就是迷你博客（废话）。我关心的不是博客，是url。里边的url全部使用了一种很短的url，比如 http://sinaurl.cn/**** 这里猜测了这种url的实现意义：
1：减少url所占的字数，优化排版。微博就是一个小，如果我贴了一个地址就占一半的字数，那作者很不爽，读者很不爽，做页面那哥们(MM)肯定跟不爽。所以，咱弄个短的url，岂不皆大欢喜。
2：排挤灌水广告者。众所周知，很多广告者为了广告，或者为了页面优化，得群发垃圾消息增加反向链接数。而短url跳转这种方式根本无法增加反向链接数。也就是这种方式从根本上掐断了垃圾群发者的命根子，这样也就减少了垃圾信息的量，节约了信息审核的人工成本（这项成本随着严打是越来越高啊）。
3：暂时没想出来。
实现，其实很简单，就是接收个id，然后找到对应记录就行。根据新浪信息的量，不可能用mysql的，成本高（负载和硬件消耗）。不可能用oracle，凭我的了解，不可能用。
新浪在小日本那个ttserver的基础上开发了个支持分布式的key->value型的数据库，这玩意正好用上，支持高并发大负载，逻辑简单还支持分布式，这么实现貌似最好不过。
吃饱没事，大半夜写文章。欢迎大家来讨论。
]]></description>
			<content:encoded><![CDATA[<p>新浪微博，就是迷你博客（废话）。我关心的不是博客，是url。里边的url全部使用了一种很短的url，比如 http://sinaurl.cn/**** 这里猜测了这种url的实现意义：</p>
<p>1：减少url所占的字数，优化排版。微博就是一个小，如果我贴了一个地址就占一半的字数，那作者很不爽，读者很不爽，做页面那哥们(MM)肯定跟不爽。所以，咱弄个短的url，岂不皆大欢喜。</p>
<p>2：排挤灌水广告者。众所周知，很多广告者为了广告，或者为了页面优化，得群发垃圾消息增加反向链接数。而短url跳转这种方式根本无法增加反向链接数。也就是这种方式从根本上掐断了垃圾群发者的命根子，这样也就减少了垃圾信息的量，节约了信息审核的人工成本（这项成本随着严打是越来越高啊）。</p>
<p>3：暂时没想出来。</p>
<p>实现，其实很简单，就是接收个id，然后找到对应记录就行。根据新浪信息的量，不可能用mysql的，成本高（负载和硬件消耗）。不可能用oracle，凭我的了解，不可能用。</p>
<p>新浪在小日本那个ttserver的基础上开发了个支持分布式的key->value型的数据库，这玩意正好用上，支持高并发大负载，逻辑简单还支持分布式，这么实现貌似最好不过。</p>
<p>吃饱没事，大半夜写文章。欢迎大家来讨论。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2010/01/03/%e6%96%b0%e6%b5%aa%e5%be%ae%e5%8d%9a%e7%9f%adurl%e7%9a%84%e6%84%8f%e4%b9%89%e5%92%8c%e5%ae%9e%e7%8e%b0.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>单点登录sso粗解+示例</title>
		<link>http://www.sunboyu.cn/2009/12/31/%e5%8d%95%e7%82%b9%e7%99%bb%e5%bd%95sso%e7%b2%97%e8%a7%a3%e7%a4%ba%e4%be%8b.shtml</link>
		<comments>http://www.sunboyu.cn/2009/12/31/%e5%8d%95%e7%82%b9%e7%99%bb%e5%bd%95sso%e7%b2%97%e8%a7%a3%e7%a4%ba%e4%be%8b.shtml#comments</comments>
		<pubDate>Thu, 31 Dec 2009 02:56:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[原创技术]]></category>

		<category><![CDATA[demo]]></category>

		<category><![CDATA[sso]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1131</guid>
		<description><![CDATA[
用户中心代码 sso
跨域测试脚本 cookie

单点登录，英语为 Single Sign-On，粗俗点讲，就是登录一次，全站适用。
单点登录在应用中的实际意义，就是减少开发量，增强用户体验。
减少开发量，指的是：只要开发一套用户系统， 各个系统统一调用。用户系统尽量优化接口，通用性，安全性，达到一次开发， 全站适用。
增强用户体验，指的是：用户一次登录，全站登录。而不是切换一个模块，就登录一次。
web方面单点登录主要是用cookie传递令牌进行身份认证。简单说下令牌。
我这里用散列值来作为令牌，当然散列值之中有我的的密钥，防止别人伪造我的令牌。
环境：sso.sunboyu.cn 用户中心 vps.sunboyu.cn/cookie.php 跨子域不同脚本访问测试。 令牌密钥: $key
具体规则： sso.sunboyu.cn 用户登录，登录信息写到cookie，cookie做用域为 sunboyu.cn。并且生成令牌sso_key=md5(uid+username+key)。
登陆后，其他子域站点调用此cookie信息，并且验证此令牌是否是合法的令牌，if( md5( cookie[uid]+cookie[username] )==cookie[key] )
这样既可判断，此令牌合法性而确认此用户为登录。
具体demo:http://sso.sunboyu.cn
延伸：一个简单的md5似乎很容易让别人猜解加密的算法，来暴力一翻也不是没有可能，因此，除了加密外，算法的安全性和密钥的安全性也是需要考虑的。
如果安全级别要求高之又高，可以考虑rsa算法，不过速度就是问题了。其中又参考了一些朋友的意见，用对称加密，比如php中的Mcrypt 函数。
扩展开发：对于大多数网站，跨子域的单点登录就能满足应用。但对于一些域名复杂的网站，比如sohu，显然多个域名不能用此方法实现。这时就得搞出跨跨的单点登录系统。等年后继续得瑟。
]]></description>
			<content:encoded><![CDATA[<blockquote><p>
用户中心代码 <a href='http://www.sunboyu.cn/upfiles/2009/12/sso.rar'>sso</a><br />
跨域测试脚本 <a href='http://www.sunboyu.cn/upfiles/2009/12/cookie.rar'>cookie</a>
</p></blockquote>
<p>单点登录，英语为 Single Sign-On，粗俗点讲，就是登录一次，全站适用。</p>
<p>单点登录在应用中的实际意义，就是减少开发量，增强用户体验。</p>
<p>减少开发量，指的是：只要开发一套用户系统， 各个系统统一调用。用户系统尽量优化接口，通用性，安全性，达到一次开发， 全站适用。</p>
<p>增强用户体验，指的是：用户一次登录，全站登录。而不是切换一个模块，就登录一次。</p>
<p>web方面单点登录主要是用cookie传递令牌进行身份认证。简单说下令牌。</p>
<p>我这里用散列值来作为令牌，当然散列值之中有我的的密钥，防止别人伪造我的令牌。</p>
<blockquote><p>环境：sso.sunboyu.cn 用户中心 vps.sunboyu.cn/cookie.php 跨子域不同脚本访问测试。 令牌密钥: $key</p></blockquote>
<p>具体规则： sso.sunboyu.cn 用户登录，登录信息写到cookie，cookie做用域为 sunboyu.cn。并且生成令牌sso_key=md5(uid+username+key)。</p>
<p>登陆后，其他子域站点调用此cookie信息，并且验证此令牌是否是合法的令牌，if( md5( cookie[uid]+cookie[username] )==cookie[key] )</p>
<p>这样既可判断，此令牌合法性而确认此用户为登录。</p>
<p>具体demo:http://sso.sunboyu.cn</p>
<p>延伸：一个简单的md5似乎很容易让别人猜解加密的算法，来暴力一翻也不是没有可能，因此，除了加密外，算法的安全性和密钥的安全性也是需要考虑的。</p>
<p>如果安全级别要求高之又高，可以考虑rsa算法，不过速度就是问题了。其中又参考了一些朋友的意见，用对称加密，比如php中的Mcrypt 函数。</p>
<p>扩展开发：对于大多数网站，跨子域的单点登录就能满足应用。但对于一些域名复杂的网站，比如sohu，显然多个域名不能用此方法实现。这时就得搞出跨跨的单点登录系统。等年后继续得瑟。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/12/31/%e5%8d%95%e7%82%b9%e7%99%bb%e5%bd%95sso%e7%b2%97%e8%a7%a3%e7%a4%ba%e4%be%8b.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>使用无模式数据库来改造dz的session</title>
		<link>http://www.sunboyu.cn/2009/12/29/%e4%bd%bf%e7%94%a8%e6%97%a0%e6%a8%a1%e5%bc%8f%e6%95%b0%e6%8d%ae%e5%ba%93%e6%9d%a5%e6%94%b9%e9%80%a0dz%e7%9a%84session.shtml</link>
		<comments>http://www.sunboyu.cn/2009/12/29/%e4%bd%bf%e7%94%a8%e6%97%a0%e6%a8%a1%e5%bc%8f%e6%95%b0%e6%8d%ae%e5%ba%93%e6%9d%a5%e6%94%b9%e9%80%a0dz%e7%9a%84session.shtml#comments</comments>
		<pubDate>Tue, 29 Dec 2009 01:26:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[原创技术]]></category>

		<category><![CDATA[discuz]]></category>

		<category><![CDATA[session]]></category>

		<category><![CDATA[性能]]></category>

		<category><![CDATA[无模式数据库]]></category>

		<category><![CDATA[瓶颈]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1124</guid>
		<description><![CDATA[前两天还不知道啥是无模式数据库，不过最近迫切需要修改discuz bbs的session表，所以研究了一下相关的资料，发现了无模式这个名字。
具体无模式是啥，这里找了两篇文章：

关系数据库的末日是否已经来临
关系数据库的根本问题分析及数据库革命之走向

关于无模式的应用案例，很典型的一个，就是康盛uchome的feed表。
这里简单介绍几个无模式数据库，供大家参考：
mongodb : http://www.mongodb.org/display/DOCS/Home
mongodb的php扩展 http://www.mongodb.org/display/DOCS/Installing+the+PHP+Driver#InstallingthePHPDriver-PECL
这个数据库已经在淘宝上配合10gen做了云计算的session（名字很操蛋）,具体资料在这里 http://rdc.taobao.com/blog/dw/archives/410。具有了实际应用的东西应该很不错，不过我没尝试过。
Tokyo Tyrant：http://1978th.net/
tt的php扩展 http://www.php.net/manual/en/book.tokyo-tyrant.php
这个大家就比较熟悉了，SB日本鬼子写的东西，应用很广，sina，qq等公司里都在大量应用，sina的研发团队在此基础上还做了个分布式的东东，很是不错。据说这玩意还得到了很多公司的赞助，shit。
TCSQL：张宴基于tt开发的一套东西，内部做了很多算法优化，具体可参考此文章 http://blog.s135.com/tcsql/
总结：康盛使用mysql来存储session，不能说是一种错，但对于dz的负载绝对是第一个瓶颈。用这种方式，在线人数5w对数据库绝对是个坎。很多负载比较大的论坛，都做了此方面的优化，比如，给session表单独一个数据库，或者干脆阉割此功能。不错，独立的session表，或者分库，访问量大的时候，瓶颈依然在mysql上；阉割此功能，有些心疼，而且很多运营数据会丢失。所以，保持原功能而平滑提升性能，是一个不错的解决方向。
]]></description>
			<content:encoded><![CDATA[<p>前两天还不知道啥是无模式数据库，不过最近迫切需要修改discuz bbs的session表，所以研究了一下相关的资料，发现了无模式这个名字。</p>
<p>具体无模式是啥，这里找了两篇文章：</p>
<blockquote><p>
<a href="http://database.51cto.com/art/200903/116752.htm">关系数据库的末日是否已经来临</a><br />
<a href="http://database.51cto.com/art/200908/146424.htm">关系数据库的根本问题分析及数据库革命之走向</a>
</p></blockquote>
<p>关于无模式的应用案例，很典型的一个，就是康盛uchome的feed表。</p>
<p>这里简单介绍几个无模式数据库，供大家参考：</p>
<p>mongodb : http://www.mongodb.org/display/DOCS/Home</p>
<p>mongodb的php扩展 http://www.mongodb.org/display/DOCS/Installing+the+PHP+Driver#InstallingthePHPDriver-PECL</p>
<p>这个数据库已经在淘宝上配合10gen做了云计算的session（名字很操蛋）,具体资料在这里 http://rdc.taobao.com/blog/dw/archives/410。具有了实际应用的东西应该很不错，不过我没尝试过。</p>
<p>Tokyo Tyrant：http://1978th.net/</p>
<p>tt的php扩展 http://www.php.net/manual/en/book.tokyo-tyrant.php</p>
<p>这个大家就比较熟悉了，SB日本鬼子写的东西，应用很广，sina，qq等公司里都在大量应用，sina的研发团队在此基础上还做了个分布式的东东，很是不错。据说这玩意还得到了很多公司的赞助，shit。</p>
<p>TCSQL：张宴基于tt开发的一套东西，内部做了很多算法优化，具体可参考此文章 http://blog.s135.com/tcsql/</p>
<p>总结：康盛使用mysql来存储session，不能说是一种错，但对于dz的负载绝对是第一个瓶颈。用这种方式，在线人数5w对数据库绝对是个坎。很多负载比较大的论坛，都做了此方面的优化，比如，给session表单独一个数据库，或者干脆阉割此功能。不错，独立的session表，或者分库，访问量大的时候，瓶颈依然在mysql上；阉割此功能，有些心疼，而且很多运营数据会丢失。所以，保持原功能而平滑提升性能，是一个不错的解决方向。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/12/29/%e4%bd%bf%e7%94%a8%e6%97%a0%e6%a8%a1%e5%bc%8f%e6%95%b0%e6%8d%ae%e5%ba%93%e6%9d%a5%e6%94%b9%e9%80%a0dz%e7%9a%84session.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>改变exec的阻塞模式</title>
		<link>http://www.sunboyu.cn/2009/12/25/%e6%94%b9%e5%8f%98exec%e7%9a%84%e9%98%bb%e5%a1%9e%e6%a8%a1%e5%bc%8f.shtml</link>
		<comments>http://www.sunboyu.cn/2009/12/25/%e6%94%b9%e5%8f%98exec%e7%9a%84%e9%98%bb%e5%a1%9e%e6%a8%a1%e5%bc%8f.shtml#comments</comments>
		<pubDate>Fri, 25 Dec 2009 02:19:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1118</guid>
		<description><![CDATA[很多操作时间会很长，不能让用户在页面上执行PHP脚本，否则页面会被拖死。
一个不错的方案，就是提交到后台去执行。
linux有个命令 nohup command &#038; 这样就会提交到后台，而终端的用户体会不到程序执行的过程。
原来我使用这种方式 shell_exec( &#8220;nohuo php file.php &#038;&#8221; ) 进行后台提交，后来发现速度依然不快， 还是被挂起了。查看手册，exec函数有如下提示：
Note: 如果用本函数启动一个程序并希望保持在后台运行，必须确保该程序的输出被重定向到一个文件或者其它输出流去，否则 PHP 会在程序执行结束前挂起。
因此，这样修改就达到了目的：
exec( &#8220;nohuo php file.php >> /dev/null &#038;&#8221; ) 
]]></description>
			<content:encoded><![CDATA[<p>很多操作时间会很长，不能让用户在页面上执行PHP脚本，否则页面会被拖死。</p>
<p>一个不错的方案，就是提交到后台去执行。</p>
<p>linux有个命令 nohup command &#038; 这样就会提交到后台，而终端的用户体会不到程序执行的过程。</p>
<p>原来我使用这种方式 shell_exec( &#8220;nohuo php file.php &#038;&#8221; ) 进行后台提交，后来发现速度依然不快， 还是被挂起了。查看手册，exec函数有如下提示：</p>
<blockquote><p>Note: 如果用本函数启动一个程序并希望保持在后台运行，必须确保该程序的输出被重定向到一个文件或者其它输出流去，否则 PHP 会在程序执行结束前挂起。</p></blockquote>
<p>因此，这样修改就达到了目的：</p>
<p>exec( &#8220;nohuo php file.php >> /dev/null &#038;&#8221; ) </p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/12/25/%e6%94%b9%e5%8f%98exec%e7%9a%84%e9%98%bb%e5%a1%9e%e6%a8%a1%e5%bc%8f.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>康盛，这么做是不是有点过火了-2</title>
		<link>http://www.sunboyu.cn/2009/12/24/discuz-hole-2.shtml</link>
		<comments>http://www.sunboyu.cn/2009/12/24/discuz-hole-2.shtml#comments</comments>
		<pubDate>Thu, 24 Dec 2009 12:15:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[原创技术]]></category>

		<category><![CDATA[manyou]]></category>

		<category><![CDATA[ucenter]]></category>

		<category><![CDATA[uchome]]></category>

		<category><![CDATA[康盛]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1113</guid>
		<description><![CDATA[自打上篇文章 康盛，这么做是不是有点过火了发表后，引起很多朋友讨论。有些朋友从技术上抨击了这种做法，有些朋友从商业上去理解这种做法。当然，我们是搞技术的，单纯从程序安全和数据安全上来分析一下。
老样子，后台有个get提交：
http://u.discuz.net/customer/update.php?get=a%3A16%3A%7Bs%3A7%3A%22sitekey%22%3Bs%3A16%3A%22f270e28a8b0Qv1Y8%22%3Bs%3A7%3A%22version%22%3Bs%3A3%3A%222.0%22%3Bs%3A7%3A%22release%22%3Bs%3A8%3A%2220090825%22%3Bs%3A3%3A%22php%22%3Bs%3A5%3A%225.2.6%22%3Bs%3A5%3A%22mysql%22%3Bs%3A6%3A%225.0.22%22%3Bs%3A6%3A%22dbsize%22%3Bi%3A1298163%3Bs%3A7%3A%22charset%22%3Bs%3A5%3A%22utf-8%22%3Bs%3A8%3A%22sitename%22%3Bs%3A12%3A%22%E6%88%91%E7%9A%84%E7%A9%BA%E9%97%B4%22%3Bs%3A7%3A%22feednum%22%3Bs%3A2%3A%2210%22%3Bs%3A7%3A%22blognum%22%3Bs%3A1%3A%220%22%3Bs%3A8%3A%22albumnum%22%3Bs%3A1%3A%220%22%3Bs%3A9%3A%22threadnum%22%3Bs%3A1%3A%220%22%3Bs%3A8%3A%22sharenum%22%3Bs%3A1%3A%220%22%3Bs%3A10%3A%22commentnum%22%3Bs%3A1%3A%220%22%3Bs%3A8%3A%22myappnum%22%3Bs%3A1%3A%224%22%3Bs%3A8%3A%22spacenum%22%3Bs%3A1%3A%223%22%3B%7D&#038;h=aa380aa3
urldecode并且反序列化，得出这么一堆东西
Array
(
&#160;&#160; &#160;[sitekey] =&#62; f270e28a8b0Qv1Y8
&#160;&#160; &#160;[version] =&#62; 2.0
&#160;&#160; &#160;[release] =&#62; 20090825
&#160;&#160; &#160;[php] =&#62; 5.2.6
&#160;&#160; &#160;[mysql] =&#62; 5.0.22
&#160;&#160; &#160;[dbsize] =&#62; 1298163
&#160;&#160; &#160;[charset] =&#62; utf-8
&#160;&#160; &#160;[sitename] =&#62; 我的空间
&#160;&#160; &#160;[feednum] =&#62; 10
&#160;&#160; &#160;[blognum] =&#62; 0
&#160;&#160; &#160;[albumnum] =&#62; 0
&#160;&#160; &#160;[threadnum] =&#62; 0
&#160;&#160; &#160;[sharenum] =&#62; 0
&#160;&#160; &#160;[commentnum] =&#62; 0
&#160;&#160; &#160;[myappnum] =&#62; 4
&#160;&#160; &#160;[spacenum] =&#62; 3
)
sitekey是什么？通过阅读代码，sitekey是pre_config表里一个字段，跟以下代码配合工作
$hash = $_SCONFIG['my_siteid'].'&#124;'.$_SGLOBAL['supe_uid'].'&#124;'.$appid.'&#124;'.$current_url.'&#124;'.$extra.'&#124;'.$timestamp.'&#124;'.$_SCONFIG['my_sitekey'];
它跟manyou服务器配合，才有权从你的服务器上拉取你数据库中的某些信息。
其他字段，我们看字面意思基本也能知道是干啥用的。
继续运行程序，我们看当一个用户第一次安装应用的时候做了什么。
这个信息要从服务器上截取，我是根据nginx日志和程序中截取反馈信息获得的。
服务器日志：
124.238.249.171 - - [24/Dec/2009:20:02:40 [...]]]></description>
			<content:encoded><![CDATA[<p>自打上篇文章 <a href="http://www.sunboyu.cn/2009/12/10/discuz-hole.shtml">康盛，这么做是不是有点过火了</a>发表后，引起很多朋友讨论。有些朋友从技术上抨击了这种做法，有些朋友从商业上去理解这种做法。当然，我们是搞技术的，单纯从程序安全和数据安全上来分析一下。</p>
<p>老样子，后台有个get提交：<br />
http://u.discuz.net/customer/update.php?get=a%3A16%3A%7Bs%3A7%3A%22sitekey%22%3Bs%3A16%3A%22f270e28a8b0Qv1Y8%22%3Bs%3A7%3A%22version%22%3Bs%3A3%3A%222.0%22%3Bs%3A7%3A%22release%22%3Bs%3A8%3A%2220090825%22%3Bs%3A3%3A%22php%22%3Bs%3A5%3A%225.2.6%22%3Bs%3A5%3A%22mysql%22%3Bs%3A6%3A%225.0.22%22%3Bs%3A6%3A%22dbsize%22%3Bi%3A1298163%3Bs%3A7%3A%22charset%22%3Bs%3A5%3A%22utf-8%22%3Bs%3A8%3A%22sitename%22%3Bs%3A12%3A%22%E6%88%91%E7%9A%84%E7%A9%BA%E9%97%B4%22%3Bs%3A7%3A%22feednum%22%3Bs%3A2%3A%2210%22%3Bs%3A7%3A%22blognum%22%3Bs%3A1%3A%220%22%3Bs%3A8%3A%22albumnum%22%3Bs%3A1%3A%220%22%3Bs%3A9%3A%22threadnum%22%3Bs%3A1%3A%220%22%3Bs%3A8%3A%22sharenum%22%3Bs%3A1%3A%220%22%3Bs%3A10%3A%22commentnum%22%3Bs%3A1%3A%220%22%3Bs%3A8%3A%22myappnum%22%3Bs%3A1%3A%224%22%3Bs%3A8%3A%22spacenum%22%3Bs%3A1%3A%223%22%3B%7D&#038;h=aa380aa3</p>
<p>urldecode并且反序列化，得出这么一堆东西</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">Array</li>
<li>(</li>
<li>&nbsp;&nbsp; &nbsp;[sitekey] =&gt; f270e28a8b0Qv1Y8</li>
<li>&nbsp;&nbsp; &nbsp;[version] =&gt; 2.0</li>
<li>&nbsp;&nbsp; &nbsp;[release] =&gt; 20090825</li>
<li>&nbsp;&nbsp; &nbsp;[php] =&gt; 5.2.6</li>
<li>&nbsp;&nbsp; &nbsp;[mysql] =&gt; 5.0.22</li>
<li>&nbsp;&nbsp; &nbsp;[dbsize] =&gt; 1298163</li>
<li>&nbsp;&nbsp; &nbsp;[charset] =&gt; utf-8</li>
<li>&nbsp;&nbsp; &nbsp;[sitename] =&gt; 我的空间</li>
<li>&nbsp;&nbsp; &nbsp;[feednum] =&gt; 10</li>
<li>&nbsp;&nbsp; &nbsp;[blognum] =&gt; 0</li>
<li>&nbsp;&nbsp; &nbsp;[albumnum] =&gt; 0</li>
<li>&nbsp;&nbsp; &nbsp;[threadnum] =&gt; 0</li>
<li>&nbsp;&nbsp; &nbsp;[sharenum] =&gt; 0</li>
<li>&nbsp;&nbsp; &nbsp;[commentnum] =&gt; 0</li>
<li>&nbsp;&nbsp; &nbsp;[myappnum] =&gt; 4</li>
<li>&nbsp;&nbsp; &nbsp;[spacenum] =&gt; 3</li>
<li>)</li></ol></div>
<p>sitekey是什么？通过阅读代码，sitekey是pre_config表里一个字段，跟以下代码配合工作</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">$hash = $_SCONFIG['my_siteid'].'|'.$_SGLOBAL['supe_uid'].'|'.$appid.'|'.$current_url.'|'.$extra.'|'.$timestamp.'|'.$_SCONFIG['my_sitekey'];</li></ol></div>
<p>它跟manyou服务器配合，才有权从你的服务器上拉取你数据库中的某些信息。</p>
<p>其他字段，我们看字面意思基本也能知道是干啥用的。</p>
<p>继续运行程序，我们看当一个用户第一次安装应用的时候做了什么。</p>
<p>这个信息要从服务器上截取，我是根据nginx日志和程序中截取反馈信息获得的。</p>
<p>服务器日志：</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">124.238.249.171 - - [24/Dec/2009:20:02:40 +0800] &quot;POST /uhome/api/my.php HTTP/1.0&quot; 200 192 &quot;-&quot; &quot;myop/1.0&quot; &quot;-&quot;</li></ol></div>
<p>manyou服务器发来post请求。post信息不会在日志里，底下是我抓取来的信息：</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">[post] =&gt; Array</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[module] =&gt; Users</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[method] =&gt; getInfo</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[sign] =&gt; 271ce9942c94fc4f4d39445e133105bc</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[params] =&gt; a:1:{s:4:\&quot;uIds\&quot;;a:1:{i:0;s:1:\&quot;3\&quot;;}}</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;)</li></ol></div>
<p>做过sns网站应用开发的应该很容易看懂底大概是什么意思。<br />
看看我们的程序给manyou平台返回了什么信息：</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">[result] =&gt; Array</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[0] =&gt; Array</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[uId] =&gt; 3</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[handle] =&gt; sunboyu1</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[action] =&gt;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[realName] =&gt;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[realNameChecked] =&gt;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[gender] =&gt; unknown</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[email] =&gt; dfafdasf@123.fdsafds</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[qq] =&gt;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[msn] =&gt;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[birthday] =&gt; 0000-00-00</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[bloodType] =&gt; unknown</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[relationshipStatus] =&gt; unknown</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[birthProvince] =&gt;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[birthCity] =&gt;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[resideProvince] =&gt;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[resideCity] =&gt;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[viewNum] =&gt; 0</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[friendNum] =&gt; 0</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[myStatus] =&gt;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[lastActivity] =&gt; 0</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[created] =&gt; 1261655045</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[credit] =&gt; 25</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[isUploadAvatar] =&gt;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[adminLevel] =&gt; none</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[homepagePrivacy] =&gt; public</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[profilePrivacyList] =&gt; Array</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;)</li>
<li>&nbsp;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[friendListPrivacy] =&gt; public</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;)</li>
<li>&nbsp;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;)</li>
<li>&nbsp;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[mode] =&gt;</li></ol></div>
<p>有了这些数据，我又注册了一个号码，把资料填全，看看是不是都被抓走：</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">[result] =&gt; Array</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[totalNum] =&gt; 0</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[friends] =&gt; Array</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;)</li>
<li>&nbsp;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[me] =&gt; Array</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[uId] =&gt; 4</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[handle] =&gt; sunboyu2</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[action] =&gt; </li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[realName] =&gt; 一个程序猿</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[realNameChecked] =&gt; 1</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[gender] =&gt; male</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[email] =&gt; 1231231@fdsfdsa.com</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[qq] =&gt; 176300676</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[msn] =&gt; sunboyu@gmail.com</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[birthday] =&gt; 2004-02-01</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[bloodType] =&gt; B</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[relationshipStatus] =&gt; single</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[birthProvince] =&gt; 北京</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[birthCity] =&gt; 东城</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[resideProvince] =&gt; 黑龙江</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[resideCity] =&gt; 佳木斯</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[viewNum] =&gt; 0</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[friendNum] =&gt; 0</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[myStatus] =&gt; </li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[lastActivity] =&gt; 1261657227</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[created] =&gt; 1261657100</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[credit] =&gt; 40</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[isUploadAvatar] =&gt; 1</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[adminLevel] =&gt; none</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[homepagePrivacy] =&gt; friends</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[profilePrivacyList] =&gt; Array</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[relationshipStatus] =&gt; friends</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[birthday] =&gt; friends</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[bloodType] =&gt; me</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[birthPlace] =&gt; public</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[residePlace] =&gt; public</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[qq] =&gt; me</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[mobile] =&gt; public</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[msn] =&gt; public</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;)</li>
<li>&nbsp;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[friendListPrivacy] =&gt; me</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;)</li>
<li>&nbsp;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;)</li>
<li>&nbsp;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[mode] =&gt; </li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;)</li></ol></div>
<p>差不多基本资料都过去了。</p>
<p>这样，可以看出，康盛的服务器不断得在抓取用户的信息。这个事情是不是过火，从商业的角度，是应该很过火的。他把用户产品内的账号信息等关键东西都抓走，这些信息到他们手里，难免会交易给竞争对手。<br />
但是，从技术上讲，康盛的manyou服务器还有个缓存的功能。如果拉取用户信息这个请求都放在网站的服务器上，我相信大多数虚拟主机的用户会不堪重负，而康盛其实为这些负载买单了。买单的结果，就是你得把用户的信息提供给康盛。就这么简单。</p>
<p>从程序安全上讲，你的数据库信息，尤其用户信息，在你的网站和manyou之间共享，而康盛没有拉走用户或者管理员资料，也没有发现其他信息的提取，所以，两者之间是安全的。第三方网站是无法获得这些资料的。</p>
<p>但从商业安全上讲，康盛的服务器是否可信？康盛是否会拿这些信息作一些站长不希望做的事情？这个只能由官方来解释了。</p>
<p>睡一觉，研究其他产品去。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/12/24/discuz-hole-2.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>企业的效率，谁是榜样</title>
		<link>http://www.sunboyu.cn/2009/12/21/%e4%bc%81%e4%b8%9a%e7%9a%84%e6%95%88%e7%8e%87%ef%bc%8c%e8%b0%81%e6%98%af%e6%a6%9c%e6%a0%b7.shtml</link>
		<comments>http://www.sunboyu.cn/2009/12/21/%e4%bc%81%e4%b8%9a%e7%9a%84%e6%95%88%e7%8e%87%ef%bc%8c%e8%b0%81%e6%98%af%e6%a6%9c%e6%a0%b7.shtml#comments</comments>
		<pubDate>Mon, 21 Dec 2009 12:42:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1107</guid>
		<description><![CDATA[想到这个话题，还得从我的医保蓝本说起。
医保这东西，是员工就应该有。当然，我也得有。可我经历了三年多才拿到。
第一个公司，就是我刚来北京任职的公司，创业公司，吃够了苦，最后离开的时候，我两手空空，老板同意为我上保险，直到下一个公司开始为我上为止。
不过老板的确很仁义，为了上了几个月的保险，等我得知我上的是农民工那种集体户的标准的时候，已经不是气愤，变成了羞辱。当然，我也有个编号，仅是编号证明。第二个公司按照正常员工的标准给上了，不过那个编号始终没有变成一个蓝本。人力让我找原单位，原单位让我找现单位，热线电话让我找劳动局，劳动局让我找现在会计去办理即可。我的弱点就是不坚强，我妥协放弃了。农民工没啥，该咋过咋过。
到第三个公司，也就是现在的公司，入职后又提起了这事，人力惊讶，居然没蓝本，我详细解释了整个过程，人力无语。问之：能办否；答曰：申请一下。上午十一点问完，下午一点把一个崭新的蓝本送到了我的手里。我怀疑劳动局在我们楼里。
当要求别人尽职、效率的时候，首先问问自己做到没。效率是生命，不仅指的是员工，而是指整个队伍的效率。
]]></description>
			<content:encoded><![CDATA[<p>想到这个话题，还得从我的医保蓝本说起。</p>
<p>医保这东西，是员工就应该有。当然，我也得有。可我经历了三年多才拿到。</p>
<p>第一个公司，就是我刚来北京任职的公司，创业公司，吃够了苦，最后离开的时候，我两手空空，老板同意为我上保险，直到下一个公司开始为我上为止。</p>
<p>不过老板的确很仁义，为了上了几个月的保险，等我得知我上的是农民工那种集体户的标准的时候，已经不是气愤，变成了羞辱。当然，我也有个编号，仅是编号证明。第二个公司按照正常员工的标准给上了，不过那个编号始终没有变成一个蓝本。人力让我找原单位，原单位让我找现单位，热线电话让我找劳动局，劳动局让我找现在会计去办理即可。我的弱点就是不坚强，我妥协放弃了。农民工没啥，该咋过咋过。</p>
<p>到第三个公司，也就是现在的公司，入职后又提起了这事，人力惊讶，居然没蓝本，我详细解释了整个过程，人力无语。问之：能办否；答曰：申请一下。上午十一点问完，下午一点把一个崭新的蓝本送到了我的手里。我怀疑劳动局在我们楼里。</p>
<p>当要求别人尽职、效率的时候，首先问问自己做到没。效率是生命，不仅指的是员工，而是指整个队伍的效率。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/12/21/%e4%bc%81%e4%b8%9a%e7%9a%84%e6%95%88%e7%8e%87%ef%bc%8c%e8%b0%81%e6%98%af%e6%a6%9c%e6%a0%b7.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>nginx做反向代理的配置</title>
		<link>http://www.sunboyu.cn/2009/12/16/nginx%e5%81%9a%e5%8f%8d%e5%90%91%e4%bb%a3%e7%90%86%e7%9a%84%e9%85%8d%e7%bd%ae.shtml</link>
		<comments>http://www.sunboyu.cn/2009/12/16/nginx%e5%81%9a%e5%8f%8d%e5%90%91%e4%bb%a3%e7%90%86%e7%9a%84%e9%85%8d%e7%bd%ae.shtml#comments</comments>
		<pubDate>Wed, 16 Dec 2009 10:39:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[nginx]]></category>

		<category><![CDATA[proxy]]></category>

		<category><![CDATA[反向代理]]></category>

		<category><![CDATA[透明代理]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1101</guid>
		<description><![CDATA[感谢铎哥的配置，感谢宴哥解决ssl连接的问题。
server
&#160;{
&#160;&#160; &#160; &#160; &#160;listen&#160; &#160; &#160; 8181;
&#160;&#160; &#160; &#160; &#160;resolver 202.96.64.68;
&#160;&#160; &#160; &#160; &#160;location /
&#160;&#160; &#160; &#160; &#160;{
&#160;&#160; &#160; &#160; &#160; &#160; &#160;proxy_pass http://$http_host$request_uri;
&#160;&#160; &#160; &#160; &#160; &#160; &#160;proxy_redirect&#160; &#160; &#160; &#160; &#160; off;
&#160;&#160; &#160; &#160; &#160; &#160; &#160;proxy_set_header&#160; &#160; &#160; &#160; Host&#160; &#160; &#160; &#160; &#160; &#160; $host;
&#160;&#160; &#160; &#160; &#160; &#160; &#160;proxy_set_header&#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>感谢铎哥的配置，感谢宴哥解决ssl连接的问题。</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">server</li>
<li>&nbsp;{</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;listen&nbsp; &nbsp; &nbsp; 8181;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;resolver 202.96.64.68;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;location /</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;proxy_pass http://$http_host$request_uri;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;proxy_redirect&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; off;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;proxy_set_header&nbsp; &nbsp; &nbsp; &nbsp; Host&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $host;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;proxy_set_header&nbsp; &nbsp; &nbsp; &nbsp; X-Real-IP&nbsp; &nbsp; &nbsp; &nbsp;$remote_addr;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;proxy_set_header&nbsp; &nbsp; &nbsp; &nbsp; X-Forwarded-For $proxy_add_x_forwarded_for;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;client_max_body_size&nbsp; &nbsp; 10m;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;client_body_buffer_size 128k;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;proxy_connect_timeout&nbsp; &nbsp;90;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;proxy_send_timeout&nbsp; &nbsp; &nbsp; 90;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;proxy_read_timeout&nbsp; &nbsp; &nbsp; 90;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;proxy_buffers&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;32 4k;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;access_log /home/proxy.log;</li>
<li>&nbsp;}</li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/12/16/nginx%e5%81%9a%e5%8f%8d%e5%90%91%e4%bb%a3%e7%90%86%e7%9a%84%e9%85%8d%e7%bd%ae.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>django进程管理器</title>
		<link>http://www.sunboyu.cn/2009/12/16/django%e8%bf%9b%e7%a8%8b%e7%ae%a1%e7%90%86%e5%99%a8.shtml</link>
		<comments>http://www.sunboyu.cn/2009/12/16/django%e8%bf%9b%e7%a8%8b%e7%ae%a1%e7%90%86%e5%99%a8.shtml#comments</comments>
		<pubDate>Wed, 16 Dec 2009 08:42:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1099</guid>
		<description><![CDATA[nginx+php，php有个进程管理器，为php-fpm，Django没有，网上大概看了看，找出了几段，小改一下，能用了。
#!/bin/bash
siteroot=&#34;/home/project/sun&#34;
sitename=&#34;http://python.sunboyu.cn&#34;
cd $siteroot
if [ $# -lt 1 ];then
&#160;&#160; &#160;echo &#34;Usages: server.sh [start&#124;stop&#124;restart]&#34;
&#160;&#160; &#160;exit 0
fi
&#160;
if [ $1 = start ];then
&#160;&#160; &#160;isrun=`ps aux&#124;grep &#34;manage.py runfcgi&#34;&#124;grep -v &#34;grep&#34;&#124;wc -l`
&#160;&#160; &#160;if [ $isrun -eq 1 ];then
&#160;&#160; &#160; &#160; &#160;echo $sitename&#34; has running!&#34;
&#160;&#160; &#160; &#160; &#160;exit 0
&#160;&#160; &#160;else
&#160;&#160; &#160; &#160; &#160;python manage.py runfcgi method=threaded host=127.0.0.1 port=8000 --settings=settings
&#160;&#160; &#160; &#160; &#160;echo $sitename&#34;is [...]]]></description>
			<content:encoded><![CDATA[<p>nginx+php，php有个进程管理器，为php-fpm，Django没有，网上大概看了看，找出了几段，小改一下，能用了。</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">#!/bin/bash</li>
<li>siteroot=&quot;/home/project/sun&quot;</li>
<li>sitename=&quot;http://python.sunboyu.cn&quot;</li>
<li>cd $siteroot</li>
<li>if [ $# -lt 1 ];then</li>
<li>&nbsp;&nbsp; &nbsp;echo &quot;Usages: server.sh [start|stop|restart]&quot;</li>
<li>&nbsp;&nbsp; &nbsp;exit 0</li>
<li>fi</li>
<li>&nbsp;</li>
<li>if [ $1 = start ];then</li>
<li>&nbsp;&nbsp; &nbsp;isrun=`ps aux|grep &quot;manage.py runfcgi&quot;|grep -v &quot;grep&quot;|wc -l`</li>
<li>&nbsp;&nbsp; &nbsp;if [ $isrun -eq 1 ];then</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;echo $sitename&quot; has running!&quot;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;exit 0</li>
<li>&nbsp;&nbsp; &nbsp;else</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;python manage.py runfcgi method=threaded host=127.0.0.1 port=8000 --settings=settings</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;echo $sitename&quot;is running!!&quot;</li>
<li>&nbsp;&nbsp; &nbsp;fi</li>
<li>elif [ $1 = stop ];then</li>
<li>&nbsp;&nbsp; &nbsp;djid=`ps aux|grep &quot;manage.py runfcgi&quot;|grep -v &quot;grep&quot;|awk '{print $2}'`</li>
<li>&nbsp;&nbsp; &nbsp;kill -9 $djid</li>
<li>&nbsp;&nbsp; &nbsp;echo $sitename&quot; is stop!&quot;</li>
<li>elif [ $1 = restart ];then</li>
<li>&nbsp;&nbsp; &nbsp;djid=`ps aux|grep &quot;manage.py runfcgi&quot;|grep -v &quot;grep&quot;|awk '{print $2}'`</li>
<li>&nbsp;&nbsp; &nbsp;kill -9 $djid</li>
<li>&nbsp;&nbsp; &nbsp;echo $sitename&quot; is stop!!&quot;</li>
<li>&nbsp;&nbsp; &nbsp;python manage.py runfcgi method=threaded host=127.0.0.1 port=8000 --settings=settings</li>
<li>&nbsp;&nbsp; &nbsp;echo $sitename&quot; is start!!&quot;</li>
<li>else</li>
<li>&nbsp;&nbsp; &nbsp;echo &quot;Usages: server.sh [start|stop|restart]&quot;</li>
<li>fi</li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/12/16/django%e8%bf%9b%e7%a8%8b%e7%ae%a1%e7%90%86%e5%99%a8.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>django+nginx的部分配置</title>
		<link>http://www.sunboyu.cn/2009/12/16/djangonginx%e7%9a%84%e9%83%a8%e5%88%86%e9%85%8d%e7%bd%ae.shtml</link>
		<comments>http://www.sunboyu.cn/2009/12/16/djangonginx%e7%9a%84%e9%83%a8%e5%88%86%e9%85%8d%e7%bd%ae.shtml#comments</comments>
		<pubDate>Wed, 16 Dec 2009 03:26:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[Python]]></category>

		<category><![CDATA[原创技术]]></category>

		<category><![CDATA[django]]></category>

		<category><![CDATA[nginx]]></category>

		<category><![CDATA[配置]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1097</guid>
		<description><![CDATA[nginx的配置，特别感谢爱词霸的吕同学，发扬了开源共享的精神，大大缩短了我的调试成本。
server {
&#160;&#160; &#160;listen 80;
&#160;&#160; &#160;server_name python.sunboyu.cn;
&#160;&#160; &#160;location / {
&#160;&#160; &#160; &#160; &#160; &#160;fastcgi_pass 127.0.0.1:8000;
&#160;&#160; &#160; &#160; &#160; &#160;fastcgi_buffers&#160; &#160; &#160; 16&#160; 128k;
&#160;&#160; &#160; &#160; &#160; &#160;fastcgi_ignore_client_abort&#160; on;
&#160;&#160; &#160; &#160; &#160; &#160;fastcgi_read_timeout 60;
&#160;
&#160;&#160; &#160; &#160; &#160; &#160;fastcgi_param PATH_INFO $fastcgi_script_name;
&#160;&#160; &#160; &#160; &#160; &#160;fastcgi_param REQUEST_METHOD $request_method;
&#160;&#160; &#160; &#160; &#160; &#160;fastcgi_param QUERY_STRING $query_string;
&#160;&#160; &#160; &#160; &#160; &#160;fastcgi_param CONTENT_TYPE [...]]]></description>
			<content:encoded><![CDATA[<p>nginx的配置，特别感谢<a href='http://www.iciba.com/' target='_blank'>爱词霸</a>的<a href='http://blog.lvscar.info/' target='_blank'>吕同学</a>，发扬了开源共享的精神，大大缩短了我的调试成本。</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">server {</li>
<li>&nbsp;&nbsp; &nbsp;listen 80;</li>
<li>&nbsp;&nbsp; &nbsp;server_name python.sunboyu.cn;</li>
<li>&nbsp;&nbsp; &nbsp;location / {</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;fastcgi_pass 127.0.0.1:8000;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;fastcgi_buffers&nbsp; &nbsp; &nbsp; 16&nbsp; 128k;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;fastcgi_ignore_client_abort&nbsp; on;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;fastcgi_read_timeout 60;</li>
<li>&nbsp;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;fastcgi_param PATH_INFO $fastcgi_script_name;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;fastcgi_param REQUEST_METHOD $request_method;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;fastcgi_param QUERY_STRING $query_string;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;fastcgi_param CONTENT_TYPE $content_type;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;fastcgi_param CONTENT_LENGTH $content_length;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;fastcgi_param SERVER_PROTOCOL&nbsp; $server_protocol;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;fastcgi_param SERVER_PORT&nbsp; &nbsp; &nbsp; $server_port;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;fastcgi_param SERVER_NAME&nbsp; $server_name;</li>
<li>&nbsp;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;fastcgi_pass_header Authorization;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;fastcgi_intercept_errors off;</li>
<li>&nbsp;</li>
<li>&nbsp;&nbsp; &nbsp;}</li>
<li>}</li></ol></div>
<p>同时附上一个额外的文档，nginx变量跟cgi协议的对应关系。<br />
注：在配置中，并不是所有的变量必须加上，而是根据环境选择其中应该有的变量，至于具体加哪些变量，得求助高人了。</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">#&nbsp; &nbsp; Fast CGI param reference</li>
<li>#&nbsp; &nbsp; fastcgi_param&nbsp; &nbsp; SCRIPT_FILENAME&nbsp; $document_root$fastcgi_script_name;</li>
<li>#&nbsp; &nbsp; fastcgi_param&nbsp; &nbsp; QUERY_STRING&nbsp; $query_string;</li>
<li>#&nbsp; &nbsp; fastcgi_param&nbsp; &nbsp; REQUEST_METHOD&nbsp; $request_method;</li>
<li>#&nbsp; &nbsp; fastcgi_param&nbsp; &nbsp; CONTENT_TYPE&nbsp; $content_type;</li>
<li>#&nbsp; &nbsp; fastcgi_param&nbsp; &nbsp; CONTENT_LENGTH&nbsp; $content_length;</li>
<li>#&nbsp; &nbsp; fastcgi_param&nbsp; &nbsp; GATEWAY_INTERFACE&nbsp; CGI/1.1;</li>
<li>#&nbsp; &nbsp; fastcgi_param&nbsp; &nbsp; SERVER_SOFTWARE&nbsp; nginx;</li>
<li>#&nbsp; &nbsp; fastcgi_param&nbsp; &nbsp; SCRIPT_NAME&nbsp; $fastcgi_script_name;</li>
<li>#&nbsp; &nbsp; fastcgi_param&nbsp; &nbsp; REQUEST_URI&nbsp; $request_uri;</li>
<li>#&nbsp; &nbsp; fastcgi_param&nbsp; &nbsp; DOCUMENT_URI&nbsp; $document_uri;</li>
<li>#&nbsp; &nbsp; fastcgi_param&nbsp; &nbsp; DOCUMENT_ROOT&nbsp; $document_root;</li>
<li>#&nbsp; &nbsp; fastcgi_param&nbsp; &nbsp; SERVER_PROTOCOL&nbsp; $server_protocol;</li>
<li>#&nbsp; &nbsp; fastcgi_param&nbsp; &nbsp; REMOTE_ADDR&nbsp; $remote_addr;</li>
<li>#&nbsp; &nbsp; fastcgi_param&nbsp; &nbsp; REMOTE_PORT&nbsp; $remote_port;</li>
<li>#&nbsp; &nbsp; fastcgi_param&nbsp; &nbsp; SERVER_ADDR&nbsp; $server_addr;</li>
<li>#&nbsp; &nbsp; fastcgi_param&nbsp; &nbsp; SERVER_PORT&nbsp; $server_port;</li>
<li>#&nbsp; &nbsp; fastcgi_param&nbsp; &nbsp; SERVER_NAME&nbsp; $server_name;</li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/12/16/djangonginx%e7%9a%84%e9%83%a8%e5%88%86%e9%85%8d%e7%bd%ae.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>django笔记3-DEMO篇</title>
		<link>http://www.sunboyu.cn/2009/12/15/django%e7%ac%94%e8%ae%b03-demo%e7%af%87.shtml</link>
		<comments>http://www.sunboyu.cn/2009/12/15/django%e7%ac%94%e8%ae%b03-demo%e7%af%87.shtml#comments</comments>
		<pubDate>Tue, 15 Dec 2009 13:06:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Python]]></category>

		<category><![CDATA[原创技术]]></category>

		<category><![CDATA[demo]]></category>

		<category><![CDATA[django]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1089</guid>
		<description><![CDATA[1、创建一个project（可理解为站点）
django-admin.py startproject project1
发现新建了一个文件夹 project1
2、创建一个app（可理解为一个……）
python manage.py app1
发现多了一个文件夹 app1
3 、vi ./app1/views.py  增加代码
from django.http import HttpResponse
def index(self,request):
&#160;&#160; &#160;return HttpResponse('hello test')
4、vi ./urls.py  增加代码
( r&#8217;^tests/&#8217; , &#8216;project1.app1.views.index&#8217; ),
5、启动服务
python manage.py runserver domain.com:8000
然后在浏览器打 domain.com:8000/tests
如果能看到 hello test则证明配置成功。
如果不成功，看debug信息吧，debug默认是开启的。
另外我自己配置使用fastcgi方式运行python，python manage.py runfcgi host=127.0.0.1 port=8000,然后用nginx代理访问。两种方式还有所不同，具体的不同点暂时还不知道，希望知道这些差别的大大们多加提示，继续研究中。
]]></description>
			<content:encoded><![CDATA[<p>1、创建一个project（可理解为站点）</p>
<p>django-admin.py startproject project1</p>
<p>发现新建了一个文件夹 project1</p>
<p>2、创建一个app（可理解为一个……）</p>
<p>python manage.py app1</p>
<p>发现多了一个文件夹 app1</p>
<p>3 、vi ./app1/views.py  增加代码</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">from django.http import HttpResponse</li>
<li>def index(self,request):</li>
<li>&nbsp;&nbsp; &nbsp;return HttpResponse('hello test')</li></ol></div>
<p>4、vi ./urls.py  增加代码<br />
( r&#8217;^tests/&#8217; , &#8216;project1.app1.views.index&#8217; ),</p>
<p>5、启动服务</p>
<p>python manage.py runserver domain.com:8000</p>
<p>然后在浏览器打 domain.com:8000/tests</p>
<p>如果能看到 hello test则证明配置成功。</p>
<p>如果不成功，看debug信息吧，debug默认是开启的。</p>
<blockquote><p>另外我自己配置使用fastcgi方式运行python，python manage.py runfcgi host=127.0.0.1 port=8000,然后用nginx代理访问。两种方式还有所不同，具体的不同点暂时还不知道，希望知道这些差别的大大们多加提示，继续研究中。</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/12/15/django%e7%ac%94%e8%ae%b03-demo%e7%af%87.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>django笔记2-配置篇</title>
		<link>http://www.sunboyu.cn/2009/12/15/django%e7%ac%94%e8%ae%b02-%e9%85%8d%e7%bd%ae%e7%af%87.shtml</link>
		<comments>http://www.sunboyu.cn/2009/12/15/django%e7%ac%94%e8%ae%b02-%e9%85%8d%e7%bd%ae%e7%af%87.shtml#comments</comments>
		<pubDate>Tue, 15 Dec 2009 12:37:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Python]]></category>

		<category><![CDATA[原创技术]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1086</guid>
		<description><![CDATA[1、升级linux的python为最新版本
ln -s /usr/bin/python /opt/python**{your install path}**/bin/python
2、设置django-admin.py至系统命令
ln -s /opt/python**{your install path}**/lib/python2.5/site-packages/django/bin/django-admin.py  /usr/bin/django-admin.py
然后查看 django-admin.py &#8211;version
回显版本正确，则证明系统配置成功。
]]></description>
			<content:encoded><![CDATA[<p>1、升级linux的python为最新版本</p>
<p>ln -s /usr/bin/python /opt/python**{your install path}**/bin/python</p>
<p>2、设置django-admin.py至系统命令</p>
<p>ln -s /opt/python**{your install path}**/lib/python2.5/site-packages/django/bin/django-admin.py  /usr/bin/django-admin.py</p>
<p>然后查看 django-admin.py &#8211;version</p>
<p>回显版本正确，则证明系统配置成功。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/12/15/django%e7%ac%94%e8%ae%b02-%e9%85%8d%e7%bd%ae%e7%af%87.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>django笔记1-安装篇</title>
		<link>http://www.sunboyu.cn/2009/12/14/django%e7%ac%94%e8%ae%b01-%e5%ae%89%e8%a3%85%e7%af%87.shtml</link>
		<comments>http://www.sunboyu.cn/2009/12/14/django%e7%ac%94%e8%ae%b01-%e5%ae%89%e8%a3%85%e7%af%87.shtml#comments</comments>
		<pubDate>Mon, 14 Dec 2009 11:02:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Python]]></category>

		<category><![CDATA[原创技术]]></category>

		<category><![CDATA[django]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1082</guid>
		<description><![CDATA[1、安装django，当然要安装python，我安装的python2.5
./configure &#8211;prefix=你的路径
2、安装mysqldb
这个可以看这篇文章 http://www.sunboyu.cn/2009/04/22/python25mysqldb122%E5%AE%89%E8%A3%85.shtml
3、安装easl_install
http://pypi.python.org/pypi/setuptools  我下的源码，按照提示安装就行
4、使用easl_install安装flup
地址 http://www.saddi.com/software/flup/dist/flup-1.0.2-py2.5.egg
5、安装django1.1
python setup install
到这里大体就算安装完了，底下配置。
]]></description>
			<content:encoded><![CDATA[<p>1、安装django，当然要安装python，我安装的python2.5</p>
<p>./configure &#8211;prefix=你的路径</p>
<p>2、安装mysqldb</p>
<p>这个可以看这篇文章 http://www.sunboyu.cn/2009/04/22/python25mysqldb122%E5%AE%89%E8%A3%85.shtml</p>
<p>3、安装easl_install</p>
<p>http://pypi.python.org/pypi/setuptools  我下的源码，按照提示安装就行</p>
<p>4、使用easl_install安装flup</p>
<p>地址 http://www.saddi.com/software/flup/dist/flup-1.0.2-py2.5.egg</p>
<p>5、安装django1.1</p>
<p>python setup install</p>
<p>到这里大体就算安装完了，底下配置。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/12/14/django%e7%ac%94%e8%ae%b01-%e5%ae%89%e8%a3%85%e7%af%87.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>康盛，这么做是不是有点过火了</title>
		<link>http://www.sunboyu.cn/2009/12/10/discuz-hole.shtml</link>
		<comments>http://www.sunboyu.cn/2009/12/10/discuz-hole.shtml#comments</comments>
		<pubDate>Wed, 09 Dec 2009 17:02:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<category><![CDATA[discuz]]></category>

		<category><![CDATA[后门]]></category>

		<category><![CDATA[康盛]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1074</guid>
		<description><![CDATA[使用开源产品，的确能加快我们的产品实现进度，我们也感谢那些提供免费开源产品的人。当然，我个人也喜欢开源技术。
但如果开源的产品中给你下个后门，抓取你的数据，你还能高兴么？
现在分析 discuz 7.0 的几段代码：
if($adminid == 1 &#38;&#38; $action == 'home') {
	echo '&#60;sc '.'ript language=&#34;Jav'.'aScript&#34; src=&#34;ht'.'tp:/'.'/cus'.'tome'.'r.disc'.'uz.n'.'et/n'.'ews'.'.p'.'hp?'.bbsinformation().'&#34;&#62;';
	//echo '&#60;/sc&#62;&#60;sc '.'ript language=&#34;Jav'.'aScript&#34; src=&#34;http://localhost/com/n'.'ews'.'.p'.'hp?'.bbsinformation().'&#34;&#62;';
}
&#60;/sc&#62;
恩，看见了没，我告诉大家一个写木马常用的方式 eval ,比如asp中查找木马，通常查找fso等关键字，木马一般都给他写成 eval(&#8217;f'+&#8217;s&#8217;,'o&#8217;)，写php的应该很熟悉这个函数了。这段代码当然不是木马，咱看看他具体做了什么：
function bbsinformation() {
&#160;
	global $db, $timestamp, $tablepre, $charset, $bbname, $_SERVER, $siteuniqueid, $save_mastermobile, $msn;
	$update = array('uniqueid' =&#62; $siteuniqueid, 'version' =&#62; DISCUZ_VERSION, 'release' =&#62; DISCUZ_RELEASE, 'php' =&#62; PHP_VERSION, 'mysql' =&#62; $db-&#62;version(), 'charset' =&#62; $charset, 'bbname' =&#62; $bbname, [...]]]></description>
			<content:encoded><![CDATA[<p>使用开源产品，的确能加快我们的产品实现进度，我们也感谢那些提供免费开源产品的人。当然，我个人也喜欢开源技术。</p>
<p>但如果开源的产品中给你下个后门，抓取你的数据，你还能高兴么？</p>
<p>现在分析 discuz 7.0 的几段代码：</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">if($adminid == 1 &amp;&amp; $action == 'home') {</li>
<li>	echo '&lt;sc '.'ript language=&quot;Jav'.'aScript&quot; src=&quot;ht'.'tp:/'.'/cus'.'tome'.'r.disc'.'uz.n'.'et/n'.'ews'.'.p'.'hp?'.bbsinformation().'&quot;&gt;';</li>
<li>	//echo '&lt;/sc&gt;&lt;sc '.'ript language=&quot;Jav'.'aScript&quot; src=&quot;http://localhost/com/n'.'ews'.'.p'.'hp?'.bbsinformation().'&quot;&gt;';</li>
<li>}</li>
<li>&lt;/sc&gt;</li></ol></div>
<p>恩，看见了没，我告诉大家一个写木马常用的方式 eval ,比如asp中查找木马，通常查找fso等关键字，木马一般都给他写成 eval(&#8217;f'+&#8217;s&#8217;,'o&#8217;)，写php的应该很熟悉这个函数了。这段代码当然不是木马，咱看看他具体做了什么：</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">function bbsinformation() {</li>
<li>&nbsp;</li>
<li>	global $db, $timestamp, $tablepre, $charset, $bbname, $_SERVER, $siteuniqueid, $save_mastermobile, $msn;</li>
<li>	$update = array('uniqueid' =&gt; $siteuniqueid, 'version' =&gt; DISCUZ_VERSION, 'release' =&gt; DISCUZ_RELEASE, 'php' =&gt; PHP_VERSION, 'mysql' =&gt; $db-&gt;version(), 'charset' =&gt; $charset, 'bbname' =&gt; $bbname, 'mastermobile' =&gt; $save_mastermobile);</li>
<li>&nbsp;</li>
<li>	$updatetime = @filemtime(DISCUZ_ROOT.'./forumdata/updatetime.lock');</li>
<li>	if(empty($updatetime) || ($timestamp - $updatetime &gt; 3600 * 4)) {</li>
<li>		@touch(DISCUZ_ROOT.'./forumdata/updatetime.lock');</li>
<li>		$update['members'] = $db-&gt;result_first(&quot;SELECT COUNT(*) FROM {$tablepre}members&quot;);</li>
<li>		$update['threads'] = $db-&gt;result_first(&quot;SELECT COUNT(*) FROM {$tablepre}threads&quot;);</li>
<li>		$update['posts'] = $db-&gt;result_first(&quot;SELECT COUNT(*) FROM {$tablepre}posts&quot;);</li>
<li>		$query = $db-&gt;query(&quot;SELECT special, count(*) AS spcount FROM {$tablepre}threads GROUP BY special&quot;);</li>
<li>		while($thread = $db-&gt;fetch_array($query)) {</li>
<li>			$thread['special'] = intval($thread['special']);</li>
<li>			$update['spt_'.$thread['special']] = $thread['spcount'];</li>
<li>		}</li>
<li>		if($msn['on'] &amp;&amp; $msn['domain']) {</li>
<li>			$update['msn_domain'] = $msn['domain'];</li>
<li>		}</li>
<li>	}</li>
<li>&nbsp;</li>
<li>	$data = '';</li>
<li>	foreach($update as $key =&gt; $value) {</li>
<li>		$data .= $key.'='.rawurlencode($value).'&amp;';</li>
<li>	}</li>
<li>	return 'update='.rawurlencode(base64_encode($data)).'&amp;md5hash='.substr(md5($_SERVER['HTTP_USER_AGENT'].implode('', $update).$timestamp), 8, 8).'&amp;timestamp='.$timestamp;</li>
<li>}</li></ol></div>
<p>看见了吧，看他提交的几个关键字段：$update['members'],$update['threads'],$update['posts'],$thread['special'],$update['spt_'.$thread['special']],$update['msn_domain'],这些字段提交过去，也许对我们系统安全并无影响，可看看6.0版本的论坛还提交了什么：</p>
<p>uniqueid=**&#038;version=6.0.0&#038;release=20081117&#038;php=5.2.6&#038;mysql=5.0.22&#038;charset=utf-8&#038;bbname=**&#038;mastermobile=****&#038;members=4965&#038;threads=883&#038;posts=25921&#038;spt_0=879&#038;spt_1=4&#038;</p>
<p>mastermobile 看见这个字段你会汗不？</p>
<p>康盛应该为此行为买单不？不会 。</p>
<p>看下边：</p>
<blockquote><p>
III 有限担保和免责声明<br />
    1. 本软件及所附带的文件是作为不提供任何明确的或隐含的赔偿或担保的形式提供的。<br />
    2. 用户出于自愿而使用本软件，您必须了解使用本软件的风险，在尚未购买产品技术服务之前，我们不承诺提供任何形式的技术支持、使用担保，也不承担任何因使用本软件而产生问题的相关责任。<br />
    3. 康盛创想(北京)科技有限公司不对使用本软件构建的论坛中的文章或信息承担责任。
</p></blockquote>
<p>您必须了解使用本软件的风险&#8211;用户了解信息泄露的风险么？<br />
康盛创想(北京)科技有限公司不对使用本软件构建的论坛中的文章或信息承担责任。其实，我也不愿意承担。</p>
<p>本文纯属月经文，如有难受，过几天自然恢复。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/12/10/discuz-hole.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>完全缓存discuz论坛数据</title>
		<link>http://www.sunboyu.cn/2009/12/06/%e5%ae%8c%e5%85%a8%e7%bc%93%e5%ad%98discuz%e8%ae%ba%e5%9d%9b%e6%95%b0%e6%8d%ae.shtml</link>
		<comments>http://www.sunboyu.cn/2009/12/06/%e5%ae%8c%e5%85%a8%e7%bc%93%e5%ad%98discuz%e8%ae%ba%e5%9d%9b%e6%95%b0%e6%8d%ae.shtml#comments</comments>
		<pubDate>Sun, 06 Dec 2009 14:15:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[MYSQL]]></category>

		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1072</guid>
		<description><![CDATA[最近一直在琢磨discuz的优化，想出一些数据缓存的策略：
index.php  部分数据已经进行了缓存，但需要全部缓存，只有当 页面刷新数/更新时间 >>>>  发帖数/更新时间 ，则有必要做此缓存，此处缓存更新最为频繁，适合做内存缓存，但 更新时间不宜太久，此时间根据首页更新频度确定。
forumdisplay.php  更新频繁，优化策略同上，只是更新频度略低于首页。
viewthread.php  回复更新频繁，内容更新频度低，适合做硬盘缓存。但分页部分不可做缓存，否则……
space.php  更新不频繁，适合做硬盘缓存。
faq.php  做个静态即可。
以上分析只是根据平时维护总结，临时脑子一蹦，未作具体分析，欢迎广大站长讨论试用。版权所有，欢迎盗版。
]]></description>
			<content:encoded><![CDATA[<p>最近一直在琢磨discuz的优化，想出一些数据缓存的策略：</p>
<p>index.php  部分数据已经进行了缓存，但需要全部缓存，只有当 页面刷新数/更新时间 >>>>  发帖数/更新时间 ，则有必要做此缓存，此处缓存更新最为频繁，适合做内存缓存，但 更新时间不宜太久，此时间根据首页更新频度确定。</p>
<p>forumdisplay.php  更新频繁，优化策略同上，只是更新频度略低于首页。</p>
<p>viewthread.php  回复更新频繁，内容更新频度低，适合做硬盘缓存。但分页部分不可做缓存，否则……</p>
<p>space.php  更新不频繁，适合做硬盘缓存。</p>
<p>faq.php  做个静态即可。</p>
<p>以上分析只是根据平时维护总结，临时脑子一蹦，未作具体分析，欢迎广大站长讨论试用。版权所有，欢迎盗版。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/12/06/%e5%ae%8c%e5%85%a8%e7%bc%93%e5%ad%98discuz%e8%ae%ba%e5%9d%9b%e6%95%b0%e6%8d%ae.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>暂别剑三</title>
		<link>http://www.sunboyu.cn/2009/11/28/%e6%9a%82%e5%88%ab%e5%89%91%e4%b8%89.shtml</link>
		<comments>http://www.sunboyu.cn/2009/11/28/%e6%9a%82%e5%88%ab%e5%89%91%e4%b8%89.shtml#comments</comments>
		<pubDate>Fri, 27 Nov 2009 16:05:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[逍遥谷的那些事]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1068</guid>
		<description><![CDATA[最近发现玩游戏有点堕落，大量时间用在了游戏上，突然有一天，登陆服务器，发现好多命令居然手生了，又发现博客很久没有更新，又发现，几乎没有代码量了。
痛定思痛，本月剑三不再充值。待恢复学习后再考虑充值。

]]></description>
			<content:encoded><![CDATA[<p>最近发现玩游戏有点堕落，大量时间用在了游戏上，突然有一天，登陆服务器，发现好多命令居然手生了，又发现博客很久没有更新，又发现，几乎没有代码量了。</p>
<p>痛定思痛，本月剑三不再充值。待恢复学习后再考虑充值。</p>
<p><img alt="" src="http://pic.xoyo.com/cms/jx3/2009/10/30/cc/cc37.jpg" title="剑三拖拉机" class="aligncenter" width="600" height="433" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/11/28/%e6%9a%82%e5%88%ab%e5%89%91%e4%b8%89.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>大话discuz性能优化</title>
		<link>http://www.sunboyu.cn/2009/11/27/%e5%a4%a7%e8%af%9ddiscuz%e6%80%a7%e8%83%bd%e4%bc%98%e5%8c%96.shtml</link>
		<comments>http://www.sunboyu.cn/2009/11/27/%e5%a4%a7%e8%af%9ddiscuz%e6%80%a7%e8%83%bd%e4%bc%98%e5%8c%96.shtml#comments</comments>
		<pubDate>Fri, 27 Nov 2009 15:46:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1065</guid>
		<description><![CDATA[接此篇  http://www.sunboyu.cn/2009/11/05/discuz%E8%AE%BA%E5%9D%9B%E4%BC%98%E5%8C%96.shtml
最近一直在修改discuz，看到了很多问题，在跟系统工程部门合作的时候，也看到了很多比较优秀的解决方案，可以引入到系统中。
底下粗略讲述下已经做过的优化和可以着手进行的优化。
对于一个数据量比较大的论坛，首先是分表。posts表，threads表是必须要分的。可以按照forum表的fid进行分，也可以使用tid进行hash散列分布。分表带来的问题，显然是分页。我们进行排序的时候不可能去进行union查询，否则就失去了分表的意义。在这里，我们使用了一个支持排序的key-value型存储的小型数据库-Tokyo Tyrant（http://1978th.net/tokyotyrant/），用此数据库去同步threads表和posts表的数据，达到高速分页。（附：典型应用可以参见此文章 http://blog.s135.com/tcsql/ ）
随着数据表的膨胀，很多join联查必须进行拆分。分表可能强制我们去拆分联查，另外一些很变动不大的表，比如用户信息表的数据，使用率明显很高，变动不会太大，而使用key-value存储再合适不过。这时候，bdb和memcached是首选，我推荐使用bdb，可以持久存储于硬盘上，由用户更新资料触发更新，不必考虑过期和服务器重启的问题。这样可以减少太多的join联查，而节约数据库服务器的缓存。
随着静态文件的增长和访问量的增长，带宽浪费是一个值得考虑的问题。我们打开discuz的首页，静态文件要比php文件多好几倍，而每个文件都夹带了长长的cookie信息，因此，把这些cookie去掉显然会节约大量的带宽。discuz的文件结构还是很不错的，通常通过一个参数的配置或者全文替换就能完成这项工作。此应用，可以在新浪所有的图片上有所体现。
全文检索是mysql所不擅长的，因此附加一个好的全文检索方案很必须，我熟悉的方案：Lucene，sphinx，whoosh是我喜欢的几个全文检索的工具，对于discuz的负载，我感觉任何一个都能满足应用。在此方案上，设计一个完美的同步触发机制很重要。
还有很多问题，都在待发现中，部分问题已经解决，部分问题可以优化。discuz优化好，其实是个不错的产品。
]]></description>
			<content:encoded><![CDATA[<p>接此篇  http://www.sunboyu.cn/2009/11/05/discuz%E8%AE%BA%E5%9D%9B%E4%BC%98%E5%8C%96.shtml</p>
<p>最近一直在修改discuz，看到了很多问题，在跟系统工程部门合作的时候，也看到了很多比较优秀的解决方案，可以引入到系统中。</p>
<p>底下粗略讲述下已经做过的优化和可以着手进行的优化。</p>
<p>对于一个数据量比较大的论坛，首先是分表。posts表，threads表是必须要分的。可以按照forum表的fid进行分，也可以使用tid进行hash散列分布。分表带来的问题，显然是分页。我们进行排序的时候不可能去进行union查询，否则就失去了分表的意义。在这里，我们使用了一个支持排序的key-value型存储的小型数据库-Tokyo Tyrant（http://1978th.net/tokyotyrant/），用此数据库去同步threads表和posts表的数据，达到高速分页。（附：典型应用可以参见此文章 http://blog.s135.com/tcsql/ ）</p>
<p>随着数据表的膨胀，很多join联查必须进行拆分。分表可能强制我们去拆分联查，另外一些很变动不大的表，比如用户信息表的数据，使用率明显很高，变动不会太大，而使用key-value存储再合适不过。这时候，bdb和memcached是首选，我推荐使用bdb，可以持久存储于硬盘上，由用户更新资料触发更新，不必考虑过期和服务器重启的问题。这样可以减少太多的join联查，而节约数据库服务器的缓存。</p>
<p>随着静态文件的增长和访问量的增长，带宽浪费是一个值得考虑的问题。我们打开discuz的首页，静态文件要比php文件多好几倍，而每个文件都夹带了长长的cookie信息，因此，把这些cookie去掉显然会节约大量的带宽。discuz的文件结构还是很不错的，通常通过一个参数的配置或者全文替换就能完成这项工作。此应用，可以在新浪所有的图片上有所体现。</p>
<p>全文检索是mysql所不擅长的，因此附加一个好的全文检索方案很必须，我熟悉的方案：Lucene，sphinx，whoosh是我喜欢的几个全文检索的工具，对于discuz的负载，我感觉任何一个都能满足应用。在此方案上，设计一个完美的同步触发机制很重要。</p>
<p>还有很多问题，都在待发现中，部分问题已经解决，部分问题可以优化。discuz优化好，其实是个不错的产品。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/11/27/%e5%a4%a7%e8%af%9ddiscuz%e6%80%a7%e8%83%bd%e4%bc%98%e5%8c%96.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>给WordPress加了个每日谚语插件</title>
		<link>http://www.sunboyu.cn/2009/11/23/%e7%bb%99wordpress%e5%8a%a0%e4%ba%86%e4%b8%aa%e6%af%8f%e6%97%a5%e8%b0%9a%e8%af%ad%e6%8f%92%e4%bb%b6.shtml</link>
		<comments>http://www.sunboyu.cn/2009/11/23/%e7%bb%99wordpress%e5%8a%a0%e4%ba%86%e4%b8%aa%e6%af%8f%e6%97%a5%e8%b0%9a%e8%af%ad%e6%8f%92%e4%bb%b6.shtml#comments</comments>
		<pubDate>Mon, 23 Nov 2009 15:04:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1060</guid>
		<description><![CDATA[很久没写点自己的小代码了，感觉手生。
&#60; ?=$voice[rand(0,count($voice)-1)]?&#62;&#160; #加在title的地方，$voice这个数组随便找个地方塞一下就行
]]></description>
			<content:encoded><![CDATA[<p>很久没写点自己的小代码了，感觉手生。</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">&lt; ?=$voice[rand(0,count($voice)-1)]?&gt;&nbsp; #加在title的地方，$voice这个数组随便找个地方塞一下就行</li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/11/23/%e7%bb%99wordpress%e5%8a%a0%e4%ba%86%e4%b8%aa%e6%af%8f%e6%97%a5%e8%b0%9a%e8%af%ad%e6%8f%92%e4%bb%b6.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>程序猿？车手？</title>
		<link>http://www.sunboyu.cn/2009/11/21/%e7%a8%8b%e5%ba%8f%e7%8c%bf%ef%bc%9f%e8%bd%a6%e6%89%8b%ef%bc%9f.shtml</link>
		<comments>http://www.sunboyu.cn/2009/11/21/%e7%a8%8b%e5%ba%8f%e7%8c%bf%ef%bc%9f%e8%bd%a6%e6%89%8b%ef%bc%9f.shtml#comments</comments>
		<pubDate>Sat, 21 Nov 2009 02:45:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[单车生活]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1057</guid>
		<description><![CDATA[
刚配了一套轮组，升级一下上班车，放到办公桌上搞个造型。
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.sunboyu.cn/upfiles/2009/11/desktop.jpg"><img src="http://www.sunboyu.cn/upfiles/2009/11/desktop-300x225.jpg" alt="desktop" title="desktop" width="300" height="225" class="aligncenter size-medium wp-image-1058" /></a></p>
<p>刚配了一套轮组，升级一下上班车，放到办公桌上搞个造型。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/11/21/%e7%a8%8b%e5%ba%8f%e7%8c%bf%ef%bc%9f%e8%bd%a6%e6%89%8b%ef%bc%9f.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>流程的改进和代码控制</title>
		<link>http://www.sunboyu.cn/2009/11/21/%e6%b5%81%e7%a8%8b%e7%9a%84%e6%94%b9%e8%bf%9b%e5%92%8c%e4%bb%a3%e7%a0%81%e6%8e%a7%e5%88%b6.shtml</link>
		<comments>http://www.sunboyu.cn/2009/11/21/%e6%b5%81%e7%a8%8b%e7%9a%84%e6%94%b9%e8%bf%9b%e5%92%8c%e4%bb%a3%e7%a0%81%e6%8e%a7%e5%88%b6.shtml#comments</comments>
		<pubDate>Sat, 21 Nov 2009 01:37:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[感悟]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1055</guid>
		<description><![CDATA[最近一直在修改系统，并无太多原创的代码。其中修改了ucenterhome和discuz两套代码。
ucenterhome原来的队伍进行优化后，我又改进了分享功能。此功能虽然上线，功能也无大碍，但UE方面差强人意，主要是因为年前项目紧张，此项目投入人力并不多的原因。此功能修改，无详细的需求文档，也未进行详细的需求分析和业务逻辑设计，就匆匆开始了编码过程，结果就是：代码比较混乱，结构性比较差，升级和改进的潜力小。如果要改进，面临的结果就是重写。又因为uchome本身的设计结构，无论改写和重写成本都比较高。
因此，前期的规划是比较重要的，前期多想一点，后期就能节约更多的时间和精力。
这种做法马上应用到下一个项目中：discuz论坛的优化和功能改造。
前期对需求做了详细的分析，在中间不断的需求细化和明确，因此，功能和业务逻辑清晰，代码在修改的时候，保留了原来功能，只做了功能的分支。虽然前期的需求交流花费了较多的时间，但编码过程所花费的时间就很小了。
后者的流程才是以后要继续发扬的流程。
]]></description>
			<content:encoded><![CDATA[<p>最近一直在修改系统，并无太多原创的代码。其中修改了ucenterhome和discuz两套代码。</p>
<p>ucenterhome原来的队伍进行优化后，我又改进了分享功能。此功能虽然上线，功能也无大碍，但UE方面差强人意，主要是因为年前项目紧张，此项目投入人力并不多的原因。此功能修改，无详细的需求文档，也未进行详细的需求分析和业务逻辑设计，就匆匆开始了编码过程，结果就是：代码比较混乱，结构性比较差，升级和改进的潜力小。如果要改进，面临的结果就是重写。又因为uchome本身的设计结构，无论改写和重写成本都比较高。</p>
<p>因此，前期的规划是比较重要的，前期多想一点，后期就能节约更多的时间和精力。</p>
<p>这种做法马上应用到下一个项目中：discuz论坛的优化和功能改造。</p>
<p>前期对需求做了详细的分析，在中间不断的需求细化和明确，因此，功能和业务逻辑清晰，代码在修改的时候，保留了原来功能，只做了功能的分支。虽然前期的需求交流花费了较多的时间，但编码过程所花费的时间就很小了。</p>
<p>后者的流程才是以后要继续发扬的流程。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/11/21/%e6%b5%81%e7%a8%8b%e7%9a%84%e6%94%b9%e8%bf%9b%e5%92%8c%e4%bb%a3%e7%a0%81%e6%8e%a7%e5%88%b6.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>课间活动</title>
		<link>http://www.sunboyu.cn/2009/11/20/%e8%af%be%e9%97%b4%e6%b4%bb%e5%8a%a8.shtml</link>
		<comments>http://www.sunboyu.cn/2009/11/20/%e8%af%be%e9%97%b4%e6%b4%bb%e5%8a%a8.shtml#comments</comments>
		<pubDate>Fri, 20 Nov 2009 07:15:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[逍遥谷的那些事]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1051</guid>
		<description><![CDATA[
版权所有，欢迎转载
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.sunboyu.cn/upfiles/2009/11/xoyo.jpg"><img src="http://www.sunboyu.cn/upfiles/2009/11/xoyo-300x229.jpg" alt="xoyo" title="xoyo" width="300" height="229" class="aligncenter size-medium wp-image-1052" /></a></p>
<p>版权所有，欢迎转载</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/11/20/%e8%af%be%e9%97%b4%e6%b4%bb%e5%8a%a8.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>一段清理系统垃圾的代码（只用于windows）</title>
		<link>http://www.sunboyu.cn/2009/11/17/%e4%b8%80%e6%ae%b5%e6%b8%85%e7%90%86%e7%b3%bb%e7%bb%9f%e5%9e%83%e5%9c%be%e7%9a%84%e4%bb%a3%e7%a0%81%ef%bc%88%e5%8f%aa%e7%94%a8%e4%ba%8ewindows%ef%bc%89.shtml</link>
		<comments>http://www.sunboyu.cn/2009/11/17/%e4%b8%80%e6%ae%b5%e6%b8%85%e7%90%86%e7%b3%bb%e7%bb%9f%e5%9e%83%e5%9c%be%e7%9a%84%e4%bb%a3%e7%a0%81%ef%bc%88%e5%8f%aa%e7%94%a8%e4%ba%8ewindows%ef%bc%89.shtml#comments</comments>
		<pubDate>Tue, 17 Nov 2009 06:28:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[其他]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1048</guid>
		<description><![CDATA[clean
]]></description>
			<content:encoded><![CDATA[<p><a href='http://www.sunboyu.cn/upfiles/2009/11/clean.bat'>clean</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/11/17/%e4%b8%80%e6%ae%b5%e6%b8%85%e7%90%86%e7%b3%bb%e7%bb%9f%e5%9e%83%e5%9c%be%e7%9a%84%e4%bb%a3%e7%a0%81%ef%bc%88%e5%8f%aa%e7%94%a8%e4%ba%8ewindows%ef%bc%89.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>上地桥堵车的场面，各位如果有时间，稍微绕一下</title>
		<link>http://www.sunboyu.cn/2009/11/17/%e4%b8%8a%e5%9c%b0%e6%a1%a5%e5%a0%b5%e8%bd%a6%e7%9a%84%e5%9c%ba%e9%9d%a2%ef%bc%8c%e5%90%84%e4%bd%8d%e5%a6%82%e6%9e%9c%e6%9c%89%e6%97%b6%e9%97%b4%ef%bc%8c%e7%a8%8d%e5%be%ae%e7%bb%95%e4%b8%80%e4%b8%8b.shtml</link>
		<comments>http://www.sunboyu.cn/2009/11/17/%e4%b8%8a%e5%9c%b0%e6%a1%a5%e5%a0%b5%e8%bd%a6%e7%9a%84%e5%9c%ba%e9%9d%a2%ef%bc%8c%e5%90%84%e4%bd%8d%e5%a6%82%e6%9e%9c%e6%9c%89%e6%97%b6%e9%97%b4%ef%bc%8c%e7%a8%8d%e5%be%ae%e7%bb%95%e4%b8%80%e4%b8%8b.shtml#comments</comments>
		<pubDate>Tue, 17 Nov 2009 00:58:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1042</guid>
		<description><![CDATA[



]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.sunboyu.cn/upfiles/2009/11/shangdi4.jpg"><img src="http://www.sunboyu.cn/upfiles/2009/11/shangdi4-300x225.jpg" alt="shangdi4" title="shangdi4" width="300" height="225" class="aligncenter size-medium wp-image-1046" /></a></p>
<p><a href="http://www.sunboyu.cn/upfiles/2009/11/shangdi3.jpg"><img src="http://www.sunboyu.cn/upfiles/2009/11/shangdi3-300x225.jpg" alt="shangdi3" title="shangdi3" width="300" height="225" class="aligncenter size-medium wp-image-1045" /></a></p>
<p><a href="http://www.sunboyu.cn/upfiles/2009/11/shangdi2.jpg"><img src="http://www.sunboyu.cn/upfiles/2009/11/shangdi2-300x225.jpg" alt="shangdi2" title="shangdi2" width="300" height="225" class="aligncenter size-medium wp-image-1044" /></a></p>
<p><a href="http://www.sunboyu.cn/upfiles/2009/11/shangdi1.jpg"><img src="http://www.sunboyu.cn/upfiles/2009/11/shangdi1-300x225.jpg" alt="shangdi1" title="shangdi1" width="300" height="225" class="aligncenter size-medium wp-image-1043" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/11/17/%e4%b8%8a%e5%9c%b0%e6%a1%a5%e5%a0%b5%e8%bd%a6%e7%9a%84%e5%9c%ba%e9%9d%a2%ef%bc%8c%e5%90%84%e4%bd%8d%e5%a6%82%e6%9e%9c%e6%9c%89%e6%97%b6%e9%97%b4%ef%bc%8c%e7%a8%8d%e5%be%ae%e7%bb%95%e4%b8%80%e4%b8%8b.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>phpmyadmin语句定界符的问题</title>
		<link>http://www.sunboyu.cn/2009/11/11/phpmyadmin%e8%af%ad%e5%8f%a5%e5%ae%9a%e7%95%8c%e7%ac%a6%e7%9a%84%e9%97%ae%e9%a2%98.shtml</link>
		<comments>http://www.sunboyu.cn/2009/11/11/phpmyadmin%e8%af%ad%e5%8f%a5%e5%ae%9a%e7%95%8c%e7%ac%a6%e7%9a%84%e9%97%ae%e9%a2%98.shtml#comments</comments>
		<pubDate>Wed, 11 Nov 2009 09:59:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[MYSQL]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1034</guid>
		<description><![CDATA[用phpmyadmin写触发器的朋友，不知道有没有碰见这个问题：用pma导出的语句，死活倒不进去，mysqldump导出的，也不能用pma倒入。
反正问题多多，很令人头疼。
今天再次碰到这个问题后，偶然发现个问题，就是sql输入框下的一个小的内容：语句定界符。
平时导出sql，语句定界符默认是分号，而编辑触发器的时候，是两个斜杠//。
蹊跷就在这里，导入的时候使用的定界符必须跟倒出时候的定界符保持一致，否则就会出现错误。
问题发现后，老王是相当的高兴啊。
]]></description>
			<content:encoded><![CDATA[<p>用phpmyadmin写触发器的朋友，不知道有没有碰见这个问题：用pma导出的语句，死活倒不进去，mysqldump导出的，也不能用pma倒入。</p>
<p>反正问题多多，很令人头疼。</p>
<p>今天再次碰到这个问题后，偶然发现个问题，就是sql输入框下的一个小的内容：语句定界符。</p>
<p>平时导出sql，语句定界符默认是分号，而编辑触发器的时候，是两个斜杠//。</p>
<p>蹊跷就在这里，导入的时候使用的定界符必须跟倒出时候的定界符保持一致，否则就会出现错误。</p>
<p>问题发现后，老王是相当的高兴啊。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/11/11/phpmyadmin%e8%af%ad%e5%8f%a5%e5%ae%9a%e7%95%8c%e7%ac%a6%e7%9a%84%e9%97%ae%e9%a2%98.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>discuz论坛优化</title>
		<link>http://www.sunboyu.cn/2009/11/05/discuz%e8%ae%ba%e5%9d%9b%e4%bc%98%e5%8c%96.shtml</link>
		<comments>http://www.sunboyu.cn/2009/11/05/discuz%e8%ae%ba%e5%9d%9b%e4%bc%98%e5%8c%96.shtml#comments</comments>
		<pubDate>Thu, 05 Nov 2009 10:19:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[MYSQL]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[原创技术]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1031</guid>
		<description><![CDATA[discuz论坛在国内非常流行，用户众多。优秀的用户体验和超强的负载，也赢得了众多的好评。
但discuz毕竟是为中小型网站设计，很容易达到性能的瓶颈。在最近对discuz的改造和表结构的分析，做了以下的探讨，来提升论坛的性能。
第一步，当然就是分表。
技术实力不太强的用户（严重依赖mysql的用户），分表是最直接的做法（当然，有些功能会损失）。
分析一个运营两年的discuz数据库，库表大概是十几个G左右，posts数据表已经几个千万。
首先可以拆分的，就是post表了。根据情况，post表可以分10张，百张，规则可以哈希，也可以阶段自增（分表主键使用tid（帖子id））。分完表，可以看到一排post_**的表，每个表的数据量降到百万以下，速度就无太大影响。
第二个可以拆分的，是threads表，此表分表，可以水平分割方式水平的分割，可以根据论坛版块id进行分表，这样可以使每个表的数据量减小，但这样也损失了一个功能：全站标题检索。
通过以上两个表的改造论坛的承载能力能迅速见长。
底下会讨论高级优化改造得方法，且听下次分解。
]]></description>
			<content:encoded><![CDATA[<p>discuz论坛在国内非常流行，用户众多。优秀的用户体验和超强的负载，也赢得了众多的好评。</p>
<p>但discuz毕竟是为中小型网站设计，很容易达到性能的瓶颈。在最近对discuz的改造和表结构的分析，做了以下的探讨，来提升论坛的性能。</p>
<p>第一步，当然就是分表。<br />
技术实力不太强的用户（严重依赖mysql的用户），分表是最直接的做法（当然，有些功能会损失）。</p>
<p>分析一个运营两年的discuz数据库，库表大概是十几个G左右，posts数据表已经几个千万。</p>
<p>首先可以拆分的，就是post表了。根据情况，post表可以分10张，百张，规则可以哈希，也可以阶段自增（分表主键使用tid（帖子id））。分完表，可以看到一排post_**的表，每个表的数据量降到百万以下，速度就无太大影响。</p>
<p>第二个可以拆分的，是threads表，此表分表，可以水平分割方式水平的分割，可以根据论坛版块id进行分表，这样可以使每个表的数据量减小，但这样也损失了一个功能：全站标题检索。</p>
<p>通过以上两个表的改造论坛的承载能力能迅速见长。</p>
<p>底下会讨论高级优化改造得方法，且听下次分解。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/11/05/discuz%e8%ae%ba%e5%9d%9b%e4%bc%98%e5%8c%96.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>逍遥谷居民重新开战</title>
		<link>http://www.sunboyu.cn/2009/11/05/%e9%80%8d%e9%81%a5%e8%b0%b7%e5%b1%85%e6%b0%91%e9%87%8d%e6%96%b0%e5%bc%80%e6%88%98.shtml</link>
		<comments>http://www.sunboyu.cn/2009/11/05/%e9%80%8d%e9%81%a5%e8%b0%b7%e5%b1%85%e6%b0%91%e9%87%8d%e6%96%b0%e5%bc%80%e6%88%98.shtml#comments</comments>
		<pubDate>Thu, 05 Nov 2009 09:44:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[逍遥谷的那些事]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1029</guid>
		<description><![CDATA[中午又能采矿了
]]></description>
			<content:encoded><![CDATA[<p>中午又能采矿了</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/11/05/%e9%80%8d%e9%81%a5%e8%b0%b7%e5%b1%85%e6%b0%91%e9%87%8d%e6%96%b0%e5%bc%80%e6%88%98.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>剑三角色选择与玩家的性格分析</title>
		<link>http://www.sunboyu.cn/2009/10/22/%e5%89%91%e4%b8%89%e8%a7%92%e8%89%b2%e9%80%89%e6%8b%a9%e4%b8%8e%e7%8e%a9%e5%ae%b6%e7%9a%84%e6%80%a7%e6%a0%bc%e5%88%86%e6%9e%90.shtml</link>
		<comments>http://www.sunboyu.cn/2009/10/22/%e5%89%91%e4%b8%89%e8%a7%92%e8%89%b2%e9%80%89%e6%8b%a9%e4%b8%8e%e7%8e%a9%e5%ae%b6%e7%9a%84%e6%80%a7%e6%a0%bc%e5%88%86%e6%9e%90.shtml#comments</comments>
		<pubDate>Thu, 22 Oct 2009 05:57:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[逍遥谷的那些事]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1021</guid>
		<description><![CDATA[天策：天策为唐王李世民的秘密部队，在地位上相当于御林军，在近代也可理解为8341部队。现在可谓特警或者特种部队。他们大多是民间的高人选拔进来，一身江湖豪气，但不缺皇家气度。
选择天策的玩家，大都充满了豪情壮志，并且充满权位的期望。玩家敢于在游戏中拼搏，并且主动担当帮会小队的领导者，为了集体利益可以牺牲自己，担当“人民天策”的角色。
万花：选择万花的玩家，多期望自己有谷主东方宇轩的宽广胸襟，又期望能在江湖中找到适合自己的桃园圣地。他们爱好清净，不愿理会江湖杂事，在江湖中不断修炼提高，成为人人尊敬的万花成员。万花的玩家的战斗更多注重自己的修炼，而非争得一名一例。
少林：天下武功出少林，加入少林的玩家一定抱着拥有江湖最高武功的目的。少林弟子不争功名利禄，以普度众生为己任。少林拥有极高的攻击的气血值，近战能力极强，在队伍中也是义不容辞的排头兵。选择少林的玩家大都把自己的目标隐藏在心底，不轻易张扬，隐居在平淡的江湖中，但路见不平，绝对拔刀相助。
七秀：大部分女玩家也许选择了七秀，也不乏一些男玩家也选择了七秀。七秀可以作为战斗的幕后英雄，技能以治疗为主。选择七秀的玩家肯定是富有爱心和奉献精神的。现实中，他们也属于乐意助人，脾气随和之士。
纯阳：这个真的不知道，回头分析。
]]></description>
			<content:encoded><![CDATA[<p>天策：天策为唐王李世民的秘密部队，在地位上相当于御林军，在近代也可理解为8341部队。现在可谓特警或者特种部队。他们大多是民间的高人选拔进来，一身江湖豪气，但不缺皇家气度。<br />
选择天策的玩家，大都充满了豪情壮志，并且充满权位的期望。玩家敢于在游戏中拼搏，并且主动担当帮会小队的领导者，为了集体利益可以牺牲自己，担当“人民天策”的角色。</p>
<p>万花：选择万花的玩家，多期望自己有谷主东方宇轩的宽广胸襟，又期望能在江湖中找到适合自己的桃园圣地。他们爱好清净，不愿理会江湖杂事，在江湖中不断修炼提高，成为人人尊敬的万花成员。万花的玩家的战斗更多注重自己的修炼，而非争得一名一例。</p>
<p>少林：天下武功出少林，加入少林的玩家一定抱着拥有江湖最高武功的目的。少林弟子不争功名利禄，以普度众生为己任。少林拥有极高的攻击的气血值，近战能力极强，在队伍中也是义不容辞的排头兵。选择少林的玩家大都把自己的目标隐藏在心底，不轻易张扬，隐居在平淡的江湖中，但路见不平，绝对拔刀相助。</p>
<p>七秀：大部分女玩家也许选择了七秀，也不乏一些男玩家也选择了七秀。七秀可以作为战斗的幕后英雄，技能以治疗为主。选择七秀的玩家肯定是富有爱心和奉献精神的。现实中，他们也属于乐意助人，脾气随和之士。</p>
<p>纯阳：这个真的不知道，回头分析。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/10/22/%e5%89%91%e4%b8%89%e8%a7%92%e8%89%b2%e9%80%89%e6%8b%a9%e4%b8%8e%e7%8e%a9%e5%ae%b6%e7%9a%84%e6%80%a7%e6%a0%bc%e5%88%86%e6%9e%90.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>跟LU有关的长工</title>
		<link>http://www.sunboyu.cn/2009/10/20/%e8%b7%9flu%e6%9c%89%e5%85%b3%e7%9a%84%e9%95%bf%e5%b7%a5.shtml</link>
		<comments>http://www.sunboyu.cn/2009/10/20/%e8%b7%9flu%e6%9c%89%e5%85%b3%e7%9a%84%e9%95%bf%e5%b7%a5.shtml#comments</comments>
		<pubDate>Tue, 20 Oct 2009 13:07:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[逍遥谷的那些事]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1019</guid>
		<description><![CDATA[记得原来搭档有个xinglu，现在逍遥谷有个搭档叫aolu，经常下意识喊错。
]]></description>
			<content:encoded><![CDATA[<p>记得原来搭档有个xinglu，现在逍遥谷有个搭档叫aolu，经常下意识喊错。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/10/20/%e8%b7%9flu%e6%9c%89%e5%85%b3%e7%9a%84%e9%95%bf%e5%b7%a5.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>mysql触发器管理</title>
		<link>http://www.sunboyu.cn/2009/10/14/mysql%e8%a7%a6%e5%8f%91%e5%99%a8%e7%ae%a1%e7%90%86.shtml</link>
		<comments>http://www.sunboyu.cn/2009/10/14/mysql%e8%a7%a6%e5%8f%91%e5%99%a8%e7%ae%a1%e7%90%86.shtml#comments</comments>
		<pubDate>Wed, 14 Oct 2009 12:45:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[MYSQL]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1016</guid>
		<description><![CDATA[mysql没有一个像mssql的客户端去管理，所以有了PHPMYADMIN，管理mysql不再单纯依靠命令行，但PHPMYADMIN似乎不是那么万能，偶尔也会耍耍版本细节的脾气。
最近使用mysql触发器，不想使用命令行编辑，但phpmyadmin调试缺比较麻烦，原来想的是先建立一个空的触发器，然后修改，后来发现修改迁移问题多的要死，在老王同学的帮助下，经过几个晚上努力，整理出一些规律。
调试的时候，可以在空的触发器上逐条增加语句，一点一点调试，这样很容易定位问题，迅速修改。
迁移的时候，不能直接编辑触发器拷贝里边的代码，我用的phpmyadmin是2.11.9*版本的，生成的代码虽然他自己认，但一迁移就出了问题，我还没去阅读PHPMYADMIN的代码，不知道代码如何产生，但begin end里的内容大致相同，不同的是两头的辅助语句。
两头的内容跟版本密切相关，用mysqldump导出的语句做模板，把过程添加到里边，基本就没什么问题了。
不同版本的语法稍有出入，没有详细总结，总之掌握了调试的方法，解决问题速度就会提升。
使用触发器后，原来十几次的交互，一次就可以解决。我尝试了下出发器和存储过程，发现开发成本都差不多，复杂度也是类似的，所以没有用存储过程。
]]></description>
			<content:encoded><![CDATA[<p>mysql没有一个像mssql的客户端去管理，所以有了PHPMYADMIN，管理mysql不再单纯依靠命令行，但PHPMYADMIN似乎不是那么万能，偶尔也会耍耍版本细节的脾气。</p>
<p>最近使用mysql触发器，不想使用命令行编辑，但phpmyadmin调试缺比较麻烦，原来想的是先建立一个空的触发器，然后修改，后来发现修改迁移问题多的要死，在老王同学的帮助下，经过几个晚上努力，整理出一些规律。</p>
<p>调试的时候，可以在空的触发器上逐条增加语句，一点一点调试，这样很容易定位问题，迅速修改。</p>
<p>迁移的时候，不能直接编辑触发器拷贝里边的代码，我用的phpmyadmin是2.11.9*版本的，生成的代码虽然他自己认，但一迁移就出了问题，我还没去阅读PHPMYADMIN的代码，不知道代码如何产生，但begin end里的内容大致相同，不同的是两头的辅助语句。</p>
<p>两头的内容跟版本密切相关，用mysqldump导出的语句做模板，把过程添加到里边，基本就没什么问题了。</p>
<p>不同版本的语法稍有出入，没有详细总结，总之掌握了调试的方法，解决问题速度就会提升。</p>
<p>使用触发器后，原来十几次的交互，一次就可以解决。我尝试了下出发器和存储过程，发现开发成本都差不多，复杂度也是类似的，所以没有用存储过程。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/10/14/mysql%e8%a7%a6%e5%8f%91%e5%99%a8%e7%ae%a1%e7%90%86.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>discuz的生存之道</title>
		<link>http://www.sunboyu.cn/2009/09/29/discuz%e7%9a%84%e7%94%9f%e5%ad%98%e4%b9%8b%e9%81%93.shtml</link>
		<comments>http://www.sunboyu.cn/2009/09/29/discuz%e7%9a%84%e7%94%9f%e5%ad%98%e4%b9%8b%e9%81%93.shtml#comments</comments>
		<pubDate>Tue, 29 Sep 2009 07:44:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[其他]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1013</guid>
		<description><![CDATA[最近修改UCH，改得头大，对他的东西大概也熟悉个七八。
暂且不用说他的代码质量，逻辑或者完善程度，但说这个产品的发展路子，这肯定是个有市场的东西。
UCH是国内最早搞开源sns的了，而且搭配上discuz这个用户量很大的东西，迅速在国内铺开。
当然要说代码质量，那个惨，bug无数。基本做PHP的程序员，死都不愿意改它。
但是很多项目还是拿来了，为啥？因为他适合中国的用户，为啥适合？抄facebook？当然也有一定关系，关键呢，是因为东西出来的早。
产品迅速抢占市场是老戴在discuz闭源收费到开源免费的一个战略性转变，也正是这个转变，让discuz有了更加快速的成长。
bug？功能的欠缺？每天在discuz官方网站上可以看到无数的抱怨。吵得，骂的，一群一群的，但仍然阻止不了新版本接连不断的发布。
用户就是在这样不断的期望失望再期望再失望中逐渐培养出来的。
ecshop，我自认为做的很好，只可惜推出较晚，被南边的大头抢了先机。老戴的产品肯定会发展好的，因为他已经不是一个程序员。
]]></description>
			<content:encoded><![CDATA[<p>最近修改UCH，改得头大，对他的东西大概也熟悉个七八。</p>
<p>暂且不用说他的代码质量，逻辑或者完善程度，但说这个产品的发展路子，这肯定是个有市场的东西。</p>
<p>UCH是国内最早搞开源sns的了，而且搭配上discuz这个用户量很大的东西，迅速在国内铺开。</p>
<p>当然要说代码质量，那个惨，bug无数。基本做PHP的程序员，死都不愿意改它。</p>
<p>但是很多项目还是拿来了，为啥？因为他适合中国的用户，为啥适合？抄facebook？当然也有一定关系，关键呢，是因为东西出来的早。</p>
<p>产品迅速抢占市场是老戴在discuz闭源收费到开源免费的一个战略性转变，也正是这个转变，让discuz有了更加快速的成长。</p>
<p>bug？功能的欠缺？每天在discuz官方网站上可以看到无数的抱怨。吵得，骂的，一群一群的，但仍然阻止不了新版本接连不断的发布。</p>
<p>用户就是在这样不断的期望失望再期望再失望中逐渐培养出来的。</p>
<p>ecshop，我自认为做的很好，只可惜推出较晚，被南边的大头抢了先机。老戴的产品肯定会发展好的，因为他已经不是一个程序员。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/09/29/discuz%e7%9a%84%e7%94%9f%e5%ad%98%e4%b9%8b%e9%81%93.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>php使用header来控制cookie</title>
		<link>http://www.sunboyu.cn/2009/09/28/php%e4%bd%bf%e7%94%a8header%e6%9d%a5%e6%8e%a7%e5%88%b6cookie.shtml</link>
		<comments>http://www.sunboyu.cn/2009/09/28/php%e4%bd%bf%e7%94%a8header%e6%9d%a5%e6%8e%a7%e5%88%b6cookie.shtml#comments</comments>
		<pubDate>Mon, 28 Sep 2009 07:33:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1011</guid>
		<description><![CDATA[php中的setcookie函数是有bug的，bug原理不太明白，不过底下这个方法可以避免这个bug
function setcookies( $name , $value , $expire , $path = &#34;/&#34; , $domain = &#34;&#34; )
{
&#160;&#160; &#160;header(&#34;Set-Cookie: $name=$value; path=$path; domain=$domain; expires=&#34;.gmstrftime(&#34;%A, %d-%b-%Y %H:%M:%S GMT&#34;,$expire));
}
]]></description>
			<content:encoded><![CDATA[<p>php中的setcookie函数是有bug的，bug原理不太明白，不过底下这个方法可以避免这个bug</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">function setcookies( $name , $value , $expire , $path = &quot;/&quot; , $domain = &quot;&quot; )</li>
<li>{</li>
<li>&nbsp;&nbsp; &nbsp;header(&quot;Set-Cookie: $name=$value; path=$path; domain=$domain; expires=&quot;.gmstrftime(&quot;%A, %d-%b-%Y %H:%M:%S GMT&quot;,$expire));</li>
<li>}</li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/09/28/php%e4%bd%bf%e7%94%a8header%e6%9d%a5%e6%8e%a7%e5%88%b6cookie.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>网站Cache全分析</title>
		<link>http://www.sunboyu.cn/2009/09/26/%e7%bd%91%e7%ab%99cache%e5%85%a8%e5%88%86%e6%9e%90.shtml</link>
		<comments>http://www.sunboyu.cn/2009/09/26/%e7%bd%91%e7%ab%99cache%e5%85%a8%e5%88%86%e6%9e%90.shtml#comments</comments>
		<pubDate>Sat, 26 Sep 2009 13:44:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[原创技术]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1001</guid>
		<description><![CDATA[
前言：本文经过我对大多数网站的http头分析、自己做网站中的一些缓存设置、服务器的一些配置优化，后又阅读了RFC2616HTTP协议相关内容，以做此文。

原版下载
1、为什么要cache？
	这是个经常提到但很多时候又无法突然准确回答的问题。粗略讲，就是要加速和减压。
	加速：试想中国的网络，网通电信（就不提铁通之类）开创了互联互通新障碍，我们的用户在不多交钱的时候就得忍受奇慢的跨网速度。而作为互联网运营者，我们希望用户获得最好的用户体验，因此我们就要打破这个障碍。
	很多互联网服务商已经用分布cache解决了这个问题，比如sina，把中心服务器的内容分发到各个省市的cache服务器，根据用户所在的网络（ip段）来确定用户拉去最近服务器上的内容，达到访问速度最快。
	对于小型网站，页面静态化也是常用的cache方法，因为web服务器处理静态页面速度优于程序脚本，所以也起到了加速的作用，当然，也为了下一个原因-服务器减压。
	减压：显而易见，动态脚本的输出速度比一个静态的页面要慢的多（解释、执行、数据库数据读取）。因此，如果我们让用户只是读取一个静态文件，那硬件成本就会很低。大量用户访问静态文件而很少访问动态脚本，如何以节约昂贵的硬件资源。
	可以看出，cache还是有二利而无一害的。

2、目前流行的cache模型

可以看到，在数据库、web上，都做了相应的cache。至于生成静态文件，这个技术应该不是一个问题，所以，我在这里主要说一下通用的前端cache。
3、前端cache工作原理（apache mod_cache、squid）
Squid是一个linux下非常流行的代理服务器，当然，这里我们更多的是使用其缓冲（cache）的功能。
Apache mod_cache是从2.0版本开始加入的一个缓存模块，可以作为类似squid的缓存服务，我只尝试过在使用代理模块（mod_proxy）的时候使用，组合作为一个简易版squid，至于其他应用还没有深挖。
这里，首先提几个http协议里的头标志：
Last-Modified 文档最后修改时间，类似于php中的filemtime
Date 文档从服务器端发出的服务器端时间
Expires 文档过期时间
Cache-Control 这个指令我暂时不能用人类的语言表达清楚，大概就是，如果其他域缓存控制有冲突，一切听这个，优先级别比较高。
Pragma 一些特定指令，一般不用，但用的也很多。因为用其他几个参数就能实现目的了。
突然发现语言逻辑出了问题，居然不能表述cache的原理，故底下作图，简单说明。

这样就清楚多了，废话全省了。看不懂者请我吃饭，我给你们当面讲解。
4、实例
现在访问
http://www.sunboyu.cn/wp-content/themes/zen-in-grey-10/images/headerimage.jpg
第一次访问，我们用firebug网络标签查看：200 OK
然后刷新一下再看：304 Not Modified
综合一下其他域，分析为啥会这样
第一次访问：
请求信息
Host	www.sunboyu.cn	
User-Agent	Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)	
Accept	text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8	
Accept-Language	zh-cn,zh;q=0.5	
Accept-Encoding	gzip,deflate	
Accept-Charset	GB2312,utf-8;q=0.7,*;q=0.7	
Keep-Alive	300	
Connection	keep-alive	
Referer	http://www.sunboyu.cn/	
Cookie	__utma=100971139.746333267.1249527244.1253502591.1253523523.65; __utmz=100971139.1249527244.1.1.utmcsr=(direct)&#124;utmccn=(direct)&#124;utmcmd=(none); wp-settings-1=editor%3Dhtml%26align%3Dcenter%26m0%3Do%26m1%3Dc%26m2%3Dc%26m3%3Dc%26m4%3Do%26m5%3Do%26m6%3Do%26m7%3Dc%26m8%3Do%26hidetb%3D1%26urlbutton%3Durlfile%26imgsize%3Dlarge%26m9%3Do%26m10%3Do; wp-settings-time-1=1252910178; PHPSESSID=a9af3fbfa19442fe549227e1a355ac52; __utmc=100971139
第一次访问，发送基本的请求信息。
反馈信息：
Date	Mon, 21 Sep 2009 09:09:01 GMT	
Server	Apache/2.2.11 (FreeBSD) mod_ssl/2.2.11 OpenSSL/0.9.8e DAV/2	
Last-Modified	Wed, 22 Jul 2009 08:13:25 GMT	
Etag	&#34;797fe8-45a3-46f46f1fb1340&#34;	
Accept-Ranges	bytes	
Content-Length	17827	
Keep-Alive	timeout=5, max=100	
Connection	Keep-Alive	
Content-Type	image/jpeg
服务器反馈了该文件的信息，其中包括date：反馈的时间；last-modified：最后修改时间；etag：页面的姆印信息。
第二次访问：
请求信息：
Host	www.sunboyu.cn	
User-Agent	Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)	
Accept	text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8	
Accept-Language	zh-cn,zh;q=0.5	
Accept-Encoding	gzip,deflate	
Accept-Charset	GB2312,utf-8;q=0.7,*;q=0.7	
Keep-Alive	300	
Connection	keep-alive	
Referer	http://www.sunboyu.cn/	
Cookie	__utma=100971139.746333267.1249527244.1253502591.1253523523.65; [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>
前言：本文经过我对大多数网站的http头分析、自己做网站中的一些缓存设置、服务器的一些配置优化，后又阅读了RFC2616HTTP协议相关内容，以做此文。
</p></blockquote>
<p><a href='http://www.sunboyu.cn/upfiles/2009/09/cache.doc'>原版下载</a></p>
<p><strong>1、为什么要cache？</strong></p>
<p>	这是个经常提到但很多时候又无法突然准确回答的问题。粗略讲，就是要加速和减压。<br />
	加速：试想中国的网络，网通电信（就不提铁通之类）开创了互联互通新障碍，我们的用户在不多交钱的时候就得忍受奇慢的跨网速度。而作为互联网运营者，我们希望用户获得最好的用户体验，因此我们就要打破这个障碍。<br />
	很多互联网服务商已经用分布cache解决了这个问题，比如sina，把中心服务器的内容分发到各个省市的cache服务器，根据用户所在的网络（ip段）来确定用户拉去最近服务器上的内容，达到访问速度最快。<br />
	对于小型网站，页面静态化也是常用的cache方法，因为web服务器处理静态页面速度优于程序脚本，所以也起到了加速的作用，当然，也为了下一个原因-服务器减压。<br />
	减压：显而易见，动态脚本的输出速度比一个静态的页面要慢的多（解释、执行、数据库数据读取）。因此，如果我们让用户只是读取一个静态文件，那硬件成本就会很低。大量用户访问静态文件而很少访问动态脚本，如何以节约昂贵的硬件资源。<br />
	可以看出，cache还是有二利而无一害的。</p>
<p><span id="more-1001"></span></p>
<p><strong>2、目前流行的cache模型</strong></p>
<p><a href="http://www.sunboyu.cn/upfiles/2009/09/lamp-cache.gif"><img src="http://www.sunboyu.cn/upfiles/2009/09/lamp-cache-300x168.gif" alt="lamp cache" title="lamp cache" width="300" height="168" class="aligncenter size-medium wp-image-1003" /></a></p>
<p>可以看到，在数据库、web上，都做了相应的cache。至于生成静态文件，这个技术应该不是一个问题，所以，我在这里主要说一下通用的前端cache。</p>
<p><strong>3、前端cache工作原理（apache mod_cache、squid）</strong></p>
<p>Squid是一个linux下非常流行的代理服务器，当然，这里我们更多的是使用其缓冲（cache）的功能。<br />
Apache mod_cache是从2.0版本开始加入的一个缓存模块，可以作为类似squid的缓存服务，我只尝试过在使用代理模块（mod_proxy）的时候使用，组合作为一个简易版squid，至于其他应用还没有深挖。<br />
这里，首先提几个http协议里的头标志：<br />
Last-Modified 文档最后修改时间，类似于php中的filemtime<br />
Date 文档从服务器端发出的服务器端时间<br />
Expires 文档过期时间<br />
Cache-Control 这个指令我暂时不能用人类的语言表达清楚，大概就是，如果其他域缓存控制有冲突，一切听这个，优先级别比较高。<br />
Pragma 一些特定指令，一般不用，但用的也很多。因为用其他几个参数就能实现目的了。</p>
<p>突然发现语言逻辑出了问题，居然不能表述cache的原理，故底下作图，简单说明。</p>
<p><a href="http://www.sunboyu.cn/upfiles/2009/09/http.gif"><img src="http://www.sunboyu.cn/upfiles/2009/09/http-283x300.gif" alt="http" title="http" width="283" height="300" class="aligncenter size-medium wp-image-1004" /></a></p>
<p>这样就清楚多了，废话全省了。看不懂者请我吃饭，我给你们当面讲解。</p>
<p><strong>4、实例</strong></p>
<p>现在访问<br />
http://www.sunboyu.cn/wp-content/themes/zen-in-grey-10/images/headerimage.jpg<br />
第一次访问，我们用firebug网络标签查看：200 OK<br />
然后刷新一下再看：304 Not Modified<br />
综合一下其他域，分析为啥会这样<br />
第一次访问：<br />
请求信息</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">Host	www.sunboyu.cn	</li>
<li>User-Agent	Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)	</li>
<li>Accept	text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8	</li>
<li>Accept-Language	zh-cn,zh;q=0.5	</li>
<li>Accept-Encoding	gzip,deflate	</li>
<li>Accept-Charset	GB2312,utf-8;q=0.7,*;q=0.7	</li>
<li>Keep-Alive	300	</li>
<li>Connection	keep-alive	</li>
<li>Referer	http://www.sunboyu.cn/	</li>
<li>Cookie	__utma=100971139.746333267.1249527244.1253502591.1253523523.65; __utmz=100971139.1249527244.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); wp-settings-1=editor%3Dhtml%26align%3Dcenter%26m0%3Do%26m1%3Dc%26m2%3Dc%26m3%3Dc%26m4%3Do%26m5%3Do%26m6%3Do%26m7%3Dc%26m8%3Do%26hidetb%3D1%26urlbutton%3Durlfile%26imgsize%3Dlarge%26m9%3Do%26m10%3Do; wp-settings-time-1=1252910178; PHPSESSID=a9af3fbfa19442fe549227e1a355ac52; __utmc=100971139</li></ol></div>
<p>第一次访问，发送基本的请求信息。</p>
<p>反馈信息：</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">Date	Mon, 21 Sep 2009 09:09:01 GMT	</li>
<li>Server	Apache/2.2.11 (FreeBSD) mod_ssl/2.2.11 OpenSSL/0.9.8e DAV/2	</li>
<li>Last-Modified	Wed, 22 Jul 2009 08:13:25 GMT	</li>
<li>Etag	&quot;797fe8-45a3-46f46f1fb1340&quot;	</li>
<li>Accept-Ranges	bytes	</li>
<li>Content-Length	17827	</li>
<li>Keep-Alive	timeout=5, max=100	</li>
<li>Connection	Keep-Alive	</li>
<li>Content-Type	image/jpeg</li></ol></div>
<p>服务器反馈了该文件的信息，其中包括date：反馈的时间；last-modified：最后修改时间；etag：页面的姆印信息。</p>
<p>第二次访问：<br />
请求信息：</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">Host	www.sunboyu.cn	</li>
<li>User-Agent	Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)	</li>
<li>Accept	text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8	</li>
<li>Accept-Language	zh-cn,zh;q=0.5	</li>
<li>Accept-Encoding	gzip,deflate	</li>
<li>Accept-Charset	GB2312,utf-8;q=0.7,*;q=0.7	</li>
<li>Keep-Alive	300	</li>
<li>Connection	keep-alive	</li>
<li>Referer	http://www.sunboyu.cn/	</li>
<li>Cookie	__utma=100971139.746333267.1249527244.1253502591.1253523523.65; __utmz=100971139.1249527244.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); wp-settings-1=editor%3Dhtml%26align%3Dcenter%26m0%3Do%26m1%3Dc%26m2%3Dc%26m3%3Dc%26m4%3Do%26m5%3Do%26m6%3Do%26m7%3Dc%26m8%3Do%26hidetb%3D1%26urlbutton%3Durlfile%26imgsize%3Dlarge%26m9%3Do%26m10%3Do; wp-settings-time-1=1252910178; PHPSESSID=a9af3fbfa19442fe549227e1a355ac52; __utmc=100971139	</li>
<li>If-Modified-Since	Wed, 22 Jul 2009 08:13:25 GMT	</li>
<li>If-None-Match	&quot;797fe8-45a3-46f46f1fb1340&quot;	</li>
<li>Cache-Control	max-age=0</li></ol></div>
<p>由于信息浏览被缓存在浏览器cache中，所以向服务器请求的时候顺便带上了if-modified-sine信息，if-none-match的信息。</p>
<p>反馈信息：</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">Date	Mon, 21 Sep 2009 09:09:33 GMT	</li>
<li>Server	Apache/2.2.11 (FreeBSD) mod_ssl/2.2.11 OpenSSL/0.9.8e DAV/2	</li>
<li>Last-Modified	Wed, 22 Jul 2009 08:13:25 GMT	</li>
<li>Etag	&quot;797fe8-45a3-46f46f1fb1340&quot;	</li>
<li>Accept-Ranges	bytes	</li>
<li>Content-Length	17827	</li>
<li>Content-Type	image/jpeg</li></ol></div>
<p>此次访问，因为etag信息的比较，服务器确定浏览器本地缓存了此文件。并且在浏览器发送的信息 if-modified-since时间后，服务器的文件并没有发生变化，因此，服务器发送304指令使浏览器读取本地缓存，以减少http信息传输量，提高响应速度。</p>
<p><strong>5、进阶（对缓存服务器的控制）</strong></p>
<p>http关于缓存的控制不仅可以控制浏览器，针对代理服务器依然有效。比如我们使用squid进行反向代理服务，我们可以通过调整http头信息而确定用户是否要访问squid的缓存信息，或者不缓存而直接转发服务器的反馈。<br />
假如现在，一台apache的server跑php，主要是cms，由于工期的问题，没工夫做生成静态了，但我们还希望负载不要太大，因此我们在前边加了一台squid服务器，希望能缓存html结果，这样实现项目快速推进。<br />
当然，服务器部署好之后，还需要程序这边做一些配置，就是发送合适的http的头信息，程序做好修改即可。<br />
首先，我们做一个规划：<br />
网站首页希望缓存5分钟，因为不断有新网站发布。<br />
列表页面缓存1小时，因为不断有新的文章发布，但比首页频度还是下降了一些。<br />
文章最终显示页面缓存一天，因为发布要经过多人审核，一般不会修改，但也难免修改一两个字眼。<br />
为了便于演示，我本地架设了apache和squid。当然鄙视一下自己，是用的windows版本，否则就不能玩剑三了。<br />
言归正传，结构如下：</p>
<p><a href="http://www.sunboyu.cn/upfiles/2009/09/demo.gif"><img src="http://www.sunboyu.cn/upfiles/2009/09/demo-300x105.gif" alt="demo" title="demo" width="300" height="105" class="aligncenter size-medium wp-image-1005" /></a></p>
<p>当访问http://127.0.0.1:8888的时候，squid转发请求至http://127.0.0.1:80获取内容，然后反馈给用户，抑或把缓存的内容直接发送给用户。<br />
现在做首页的发布。<br />
首页缓存5分钟，也就是300秒。<br />
从squid访问apache时间算起，过期时间则为 time()+300<br />
用php发送http头 header(&#8221;Expires: &#8221; .gmdate(&#8221;D, d M Y H:i:s&#8221;,time()+300). &#8221; GMT&#8221;);<br />
验证：在仿真环境中模拟，我们用httpwatch来查看squid反馈，根据apache和squid的日志来验证缓存是否生效。<br />
写一个文件 </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">&lt; ?php </li>
<li>header(&quot;Expires: &quot; .gmdate(&quot;D, d M Y H:i:s&quot;,time()+300). &quot; GMT&quot;);</li>
<li>echo &quot;Content test!!&quot;;</li>
<li>&nbsp;?&gt;</li></ol></div>
<p>部署完毕后访问 http://127.0.0.1 看是否顺利输出。然后访问 http://127.0.0.1:8888 看是否可以看到预期内容。<br />
如果能顺利输出，则证明squid apache工作皆正常。<br />
现在用httpwatch查看头信息<br />
第一次访问：</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">HTTP/1.0 200 OK</li>
<li>Date: Wed, 23 Sep 2009 07:55:42 GMT</li>
<li>Server: Apache/2.2.13 (Win32) PHP/5.2.6</li>
<li>Accept-Ranges: bytes</li>
<li>X-Powered-By: PHP/5.2.6</li>
<li>Expires: Wed, 23 Sep 2009 08:00:42 GMT</li>
<li>Content-Type: text/html</li>
<li>X-Cache: MISS from squid.sunboyu.cn</li>
<li>X-Cache-Lookup: MISS from squid.sunboyu.cn:8888</li>
<li>Via: 1.0 squid.sunboyu.cn (squid/3.0.STABLE13-BZR)</li>
<li>Connection: close</li></ol></div>
<p>第二次访问：</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">HTTP/1.0 200 OK</li>
<li>Date: Wed, 23 Sep 2009 07:55:42 GMT</li>
<li>Server: Apache/2.2.13 (Win32) PHP/5.2.6</li>
<li>Accept-Ranges: bytes</li>
<li>X-Powered-By: PHP/5.2.6</li>
<li>Expires: Wed, 23 Sep 2009 08:00:42 GMT</li>
<li>Content-Type: text/html</li>
<li>Age: 28</li>
<li>X-Cache: HIT from squid.sunboyu.cn</li>
<li>X-Cache-Lookup: HIT from squid.sunboyu.cn:8888</li>
<li>Via: 1.0 squid.sunboyu.cn (squid/3.0.STABLE13-BZR)</li>
<li>Connection: close</li></ol></div>
<p>比较两次访问，两次访问时间 07:55:42 相同，过期时间相同 08:00:42，跟之前设置的5分钟相符。第一次X-Cache显示为MISS，因为一次访问，squid缓存中并没有相关信息，所以从apache中获得，第二次缓存中存在缓存信息，直接读取缓存输出，为之“命中”。</p>
<p>根据这个实验，很容易得知第二和第三条要求的做法：</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">&lt; ?php</li>
<li>header(&quot;Expires: &quot; .gmdate(&quot;D, d M Y H:i:s&quot;,time()+3600). &quot; GMT&quot;);</li>
<li>……</li>
<li>?&gt;</li>
<li>&lt; ?php</li>
<li>header(&quot;Expires: &quot; .gmdate(&quot;D, d M Y H:i:s&quot;,time()+86400). &quot; GMT&quot;);</li>
<li>……</li>
<li>?&gt;</li></ol></div>
<p>只需要给页面加上一个过期的http头，即可实现我们的缓存目的。这样做，比生成页面方便多了。当然，如果求seo效果，可以用重写来实现，缓存效果不变。<br />
如何来显示一下缓存后的结果呢？我们可以写一个一般复杂的php脚本，其中运算数据库都使用，直接在apache运行，压力测试一下；然后使用squid访问，访问一次后，关闭apache，然后再压力测试，比较成绩。^_^，因为有了squid，apache跟mysql都不工作了，当然要非常节约资源。<br />
Squid的合理使用，达到了快速网站开发，减轻服务器压力，提高用户影响的目的。<br />
底下分析下squid在分布式加速方面的应用。<br />
分析新浪的一些图片，发现http头中有这样的信息：</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">http://i1.sinaimg.cn/blog/temp/1/2008/0306/U2725P503T1D169F1DT20090701101305.jpg</li>
<li>HTTP/1.0 304 Not Modified</li>
<li>Date: Fri, 28 Aug 2009 22:09:32 GMT</li>
<li>Content-Type: image/jpeg</li>
<li>Expires: Sat, 28 Aug 2010 22:09:32 GMT</li>
<li>Last-Modified: Wed, 01 Jul 2009 02:13:05 GMT</li>
<li>Age: 81943</li>
<li>X-Cache: HIT from zjm-209.sina.com.cn</li>
<li>Connection: keep-alive</li></ol></div>
<p>可以发现是命中了zjm-209.sina.com.cn。<br />
Sina在全国各地有好多服务器，其DNS根据用户访问的ip确定用户需要访问哪台服务器最快，则把请求转发到相应服务器，来提高用户访问速度。<br />
大概结构如下：</p>

<a href='http://www.sunboyu.cn/2009/09/26/%e7%bd%91%e7%ab%99cache%e5%85%a8%e5%88%86%e6%9e%90.shtml/lamp-cache' title='lamp cache'><img src="http://www.sunboyu.cn/upfiles/2009/09/lamp-cache-150x84.gif" width="150" height="84" class="attachment-thumbnail" alt="" /></a>
<a href='http://www.sunboyu.cn/2009/09/26/%e7%bd%91%e7%ab%99cache%e5%85%a8%e5%88%86%e6%9e%90.shtml/http' title='http'><img src="http://www.sunboyu.cn/upfiles/2009/09/http-141x150.gif" width="141" height="150" class="attachment-thumbnail" alt="" /></a>
<a href='http://www.sunboyu.cn/2009/09/26/%e7%bd%91%e7%ab%99cache%e5%85%a8%e5%88%86%e6%9e%90.shtml/demo' title='demo'><img src="http://www.sunboyu.cn/upfiles/2009/09/demo-150x52.gif" width="150" height="52" class="attachment-thumbnail" alt="" /></a>
<a href='http://www.sunboyu.cn/2009/09/26/%e7%bd%91%e7%ab%99cache%e5%85%a8%e5%88%86%e6%9e%90.shtml/sina-cache' title='sina cache'><img src="http://www.sunboyu.cn/upfiles/2009/09/sina-cache-150x84.gif" width="150" height="84" class="attachment-thumbnail" alt="" /></a>

<p>总结<br />
Cache的确是个好东西，使用好了，做事事半功倍。不过很多时候我们得cache和&#8221;非cache&#8221;共用。有些内容需要cache，有些页面却要避免cache。当然squid也给出了接口方面控制每个缓存元素。过度的cache也是不好的，在cache之前，对项目进行严谨的分析和大量的测试是我们创建缓存机制的一个前提。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/09/26/%e7%bd%91%e7%ab%99cache%e5%85%a8%e5%88%86%e6%9e%90.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>firefox的cache和http头信息</title>
		<link>http://www.sunboyu.cn/2009/09/24/firefox%e7%9a%84cache%e5%92%8chttp%e5%a4%b4%e4%bf%a1%e6%81%af.shtml</link>
		<comments>http://www.sunboyu.cn/2009/09/24/firefox%e7%9a%84cache%e5%92%8chttp%e5%a4%b4%e4%bf%a1%e6%81%af.shtml#comments</comments>
		<pubDate>Thu, 24 Sep 2009 03:05:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[其他]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=999</guid>
		<description><![CDATA[最近调试squid，发现一个很奇异的问题，程序服务器都配置好后，使用ie狂刷，每次都是HIT，而是用firefoxF5狂刷，结果很多都是MISS，google后发现firefox独有的特性：
如果一个页面访问后，在地址栏再次敲入打开，则走cache，而如果点F5，则firefox发送http请求的时候会自动在头上增加 Cache-Control	max-age=0 因此缓存失效。不过正常访问下，还是没有问题的。
原文：
I usually post about problems that I&#8217;ve solved. But every once in a while, for all my digging around and googling, I come up on something that I can&#8217;t solve quickly and thuroughly enough - so I post about it here in the hope someone can help.
To make a long story short - [...]]]></description>
			<content:encoded><![CDATA[<p>最近调试squid，发现一个很奇异的问题，程序服务器都配置好后，使用ie狂刷，每次都是HIT，而是用firefoxF5狂刷，结果很多都是MISS，google后发现firefox独有的特性：</p>
<p>如果一个页面访问后，在地址栏再次敲入打开，则走cache，而如果点F5，则firefox发送http请求的时候会自动在头上增加 Cache-Control	max-age=0 因此缓存失效。不过正常访问下，还是没有问题的。</p>
<p>原文：</p>
<p>I usually post about problems that I&#8217;ve solved. But every once in a while, for all my digging around and googling, I come up on something that I can&#8217;t solve quickly and thuroughly enough - so I post about it here in the hope someone can help.</p>
<p>To make a long story short - I&#8217;ve found out that FireFox 1.5 appends a &#8220;Cache-Control: max-age=0&#8243; HTTP header to requests for ASPX files. This header tells the web server and any proxy servers on the way not to respond with cached version of the requested page and to go and run the actual ASPX instead.</p>
<p>For me, this is a big problem. It renders the NetApp NetCache reverse proxy that I&#8217;m using quite useless and impacts badly on response times for that particular page.</p>
<p>Does anybody know why FireFox adds this header to the request? How can this be circumvented either on the browser&#8217;s side or on the proxy server&#8217;s side?</p>
<p>It took us a bit to work it out.</p>
<p>If you hit refresh, firefox will ask for the latest copy (max-age=0).</p>
<p>If you type the url into the address bar and hit enter, then type it in again, it&#8217;ll cache.</p>
<p>Check it works in about:cache.</p>
<p>See also:</p>
<p>http://developer.mozilla.org/en/docs/Using_Firefox_1.5_caching</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/09/24/firefox%e7%9a%84cache%e5%92%8chttp%e5%a4%b4%e4%bf%a1%e6%81%af.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>加班与剑三</title>
		<link>http://www.sunboyu.cn/2009/09/23/%e5%8a%a0%e7%8f%ad%e4%b8%8e%e5%89%91%e4%b8%89.shtml</link>
		<comments>http://www.sunboyu.cn/2009/09/23/%e5%8a%a0%e7%8f%ad%e4%b8%8e%e5%89%91%e4%b8%89.shtml#comments</comments>
		<pubDate>Wed, 23 Sep 2009 01:11:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[逍遥谷的那些事]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=997</guid>
		<description><![CDATA[昨天剑三就收费了，当然，逍遥谷大部分同仁还没有去缴纳份子钱，当然也无法进入剑三。平时手工后，工地上火热的场面不见了，大部分人早早回家，或回家休息，或回家与内人共度良宵。
次日，大家四下打听逍遥谷居民是否有福利云云。在得知短期内肯定没有后，大家逐渐去总务处缴纳份子钱，进入剑三。
]]></description>
			<content:encoded><![CDATA[<p>昨天剑三就收费了，当然，逍遥谷大部分同仁还没有去缴纳份子钱，当然也无法进入剑三。平时手工后，工地上火热的场面不见了，大部分人早早回家，或回家休息，或回家与内人共度良宵。</p>
<p>次日，大家四下打听逍遥谷居民是否有福利云云。在得知短期内肯定没有后，大家逐渐去总务处缴纳份子钱，进入剑三。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/09/23/%e5%8a%a0%e7%8f%ad%e4%b8%8e%e5%89%91%e4%b8%89.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>市集杂记</title>
		<link>http://www.sunboyu.cn/2009/09/22/%e5%b8%82%e9%9b%86%e6%9d%82%e8%ae%b0.shtml</link>
		<comments>http://www.sunboyu.cn/2009/09/22/%e5%b8%82%e9%9b%86%e6%9d%82%e8%ae%b0.shtml#comments</comments>
		<pubDate>Tue, 22 Sep 2009 07:49:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[逍遥谷的那些事]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=995</guid>
		<description><![CDATA[我们还在逍遥谷忙活着；我也早觉得有写一点东西的必要了。离我来到逍遥谷也已有两月，伟大的剑三也开始收费，我正有写一点东西的必要了。
剑三收费，大多数人还是比较支持了，一些谷底元老早于带着盘缠，千里迢迢得到钱庄转账，以争取更快得变成武林豪杰。
剑世，我已经玩了30纹银，不仅级别很低，而且未沾一花一草。赔了。中午跟逍遥谷的老人攀谈，被痛斥，穷成这样也不应该给逍遥谷丢人。
最后逍遥谷主一语道破：没30万纹银别去剑世混！莫非我这个穷秀才一直得在谷底种地？
最终还是凑了点碎银子，玩起了剑三。
]]></description>
			<content:encoded><![CDATA[<p>我们还在逍遥谷忙活着；我也早觉得有写一点东西的必要了。离我来到逍遥谷也已有两月，伟大的剑三也开始收费，我正有写一点东西的必要了。</p>
<p>剑三收费，大多数人还是比较支持了，一些谷底元老早于带着盘缠，千里迢迢得到钱庄转账，以争取更快得变成武林豪杰。</p>
<p>剑世，我已经玩了30纹银，不仅级别很低，而且未沾一花一草。赔了。中午跟逍遥谷的老人攀谈，被痛斥，穷成这样也不应该给逍遥谷丢人。</p>
<p>最后逍遥谷主一语道破：没30万纹银别去剑世混！莫非我这个穷秀才一直得在谷底种地？</p>
<p>最终还是凑了点碎银子，玩起了剑三。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/09/22/%e5%b8%82%e9%9b%86%e6%9d%82%e8%ae%b0.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>squid,nginx,apache几个代理软件的比较</title>
		<link>http://www.sunboyu.cn/2009/09/13/squidnginxapache%e5%87%a0%e4%b8%aa%e4%bb%a3%e7%90%86%e8%bd%af%e4%bb%b6%e7%9a%84%e6%af%94%e8%be%83.shtml</link>
		<comments>http://www.sunboyu.cn/2009/09/13/squidnginxapache%e5%87%a0%e4%b8%aa%e4%bb%a3%e7%90%86%e8%bd%af%e4%bb%b6%e7%9a%84%e6%af%94%e8%be%83.shtml#comments</comments>
		<pubDate>Sun, 13 Sep 2009 03:51:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[APACHE]]></category>

		<category><![CDATA[LINUX]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=988</guid>
		<description><![CDATA[最近一直在研究代理缓存之类的东东，几个软件一直在瞎鼓捣，没弄出个结果，自己也稀里糊涂，总结一下几天折腾的成绩：
在并发上，nginx无疑是老大，做反向代理的时候，没有发现squid的并发方面介绍，所以暂且认为ngnix是老大，apache的稳定性有目共睹，但在并发方面的确不是很如意。
缓存方面：squid，apache都支持diskcache和memcache，根据http的head头来确定是否缓存，nginx不支持缓存，不过我在google开源上看见了新浪的水杨老大的一个东东，给nginx加上了文件缓存，不过没有大规模使用，暂时不把它当做一种解决方案。
在代理和缓存的规则上，apache很强，很强大的重写功能，尤其是强制修改http规则，不过这个功能我始终没有调试成功，no-cache的页面始终无法去缓存。
如果只是做网站的反向代理，负载均衡，nginx感觉要比squid强，性能强悍，配置方便。
如果是做代理+缓存加速，那squid的功能和稳定性还是很好的，毕竟在互联网上大量应用。
apache呢？好像没它的事情了。当然不是，有些地方可以拿他的功能当中间件使用，这个等下次分解。
]]></description>
			<content:encoded><![CDATA[<p>最近一直在研究代理缓存之类的东东，几个软件一直在瞎鼓捣，没弄出个结果，自己也稀里糊涂，总结一下几天折腾的成绩：</p>
<p>在并发上，nginx无疑是老大，做反向代理的时候，没有发现squid的并发方面介绍，所以暂且认为ngnix是老大，apache的稳定性有目共睹，但在并发方面的确不是很如意。</p>
<p>缓存方面：squid，apache都支持diskcache和memcache，根据http的head头来确定是否缓存，nginx不支持缓存，不过我在google开源上看见了新浪的水杨老大的一个东东，给nginx加上了文件缓存，不过没有大规模使用，暂时不把它当做一种解决方案。</p>
<p>在代理和缓存的规则上，apache很强，很强大的重写功能，尤其是强制修改http规则，不过这个功能我始终没有调试成功，no-cache的页面始终无法去缓存。</p>
<p>如果只是做网站的反向代理，负载均衡，nginx感觉要比squid强，性能强悍，配置方便。</p>
<p>如果是做代理+缓存加速，那squid的功能和稳定性还是很好的，毕竟在互联网上大量应用。</p>
<p>apache呢？好像没它的事情了。当然不是，有些地方可以拿他的功能当中间件使用，这个等下次分解。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/09/13/squidnginxapache%e5%87%a0%e4%b8%aa%e4%bb%a3%e7%90%86%e8%bd%af%e4%bb%b6%e7%9a%84%e6%af%94%e8%be%83.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>给.Net程序加个cache</title>
		<link>http://www.sunboyu.cn/2009/09/06/%e7%bb%99-net%e7%a8%8b%e5%ba%8f%e5%8a%a0%e4%b8%aacache.shtml</link>
		<comments>http://www.sunboyu.cn/2009/09/06/%e7%bb%99-net%e7%a8%8b%e5%ba%8f%e5%8a%a0%e4%b8%aacache.shtml#comments</comments>
		<pubDate>Sun, 06 Sep 2009 14:47:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=984</guid>
		<description><![CDATA[朋友说一个.net的网站总被dos攻击，让给个方案，还不能贵了。听对方描述一番，感觉是iis的垃圾造成连接数的问题。
很少研究iis，但我知道linux下很多软件可以很好的提升并发连接数，于是出一简单方案去尝试。

]]></description>
			<content:encoded><![CDATA[<p>朋友说一个.net的网站总被dos攻击，让给个方案，还不能贵了。听对方描述一番，感觉是iis的垃圾造成连接数的问题。</p>
<p>很少研究iis，但我知道linux下很多软件可以很好的提升并发连接数，于是出一简单方案去尝试。</p>
<p><a href="http://www.sunboyu.cn/upfiles/2009/09/未命名-1.jpg"><img src="http://www.sunboyu.cn/upfiles/2009/09/未命名-1.jpg" alt="未命名-1" title="未命名-1" width="1000" height="684" class="aligncenter size-full wp-image-985" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/09/06/%e7%bb%99-net%e7%a8%8b%e5%ba%8f%e5%8a%a0%e4%b8%aacache.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>个人独上妙峰山，被P，被抓作弊，被BS……</title>
		<link>http://www.sunboyu.cn/2009/08/30/%e4%b8%aa%e4%ba%ba%e7%8b%ac%e4%b8%8a%e5%a6%99%e5%b3%b0%e5%b1%b1%ef%bc%8c%e8%a2%abp%ef%bc%8c%e8%a2%ab%e6%8a%93%e4%bd%9c%e5%bc%8a%ef%bc%8c%e8%a2%abbs%e2%80%a6%e2%80%a6.shtml</link>
		<comments>http://www.sunboyu.cn/2009/08/30/%e4%b8%aa%e4%ba%ba%e7%8b%ac%e4%b8%8a%e5%a6%99%e5%b3%b0%e5%b1%b1%ef%bc%8c%e8%a2%abp%ef%bc%8c%e8%a2%ab%e6%8a%93%e4%bd%9c%e5%bc%8a%ef%bc%8c%e8%a2%abbs%e2%80%a6%e2%80%a6.shtml#comments</comments>
		<pubDate>Sun, 30 Aug 2009 11:53:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[单车生活]]></category>

		<category><![CDATA[妙峰山]]></category>

		<category><![CDATA[骑行]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=977</guid>
		<description><![CDATA[<table id="px6" title="妙峰山" border="0" cellspacing="0" cellpadding="0"><tr>
<td>
<a class="thickbox" rel="g6" href="http://farm3.static.flickr.com/2540/3870509956_306e0090a0_m.jpg" title="IMG_5223" alt="IMG_5223"><img src="http://farm3.static.flickr.com/2540/3870509956_306e0090a0_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2540%2F3870509956_306e0090a0_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2540%2F3870509956_306e0090a0_m.jpg%22%2C%22a%22%3A%22IMG_5223%22%7D" alt="IMG_5223"/></a></td>
<td>
<a class="thickbox" rel="g6" href="http://farm4.static.flickr.com/3482/3869727865_b80141c28b_m.jpg" title="IMG_5225" alt="IMG_5225"><img src="http://farm4.static.flickr.com/3482/3869727865_b80141c28b_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3482%2F3869727865_b80141c28b_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3482%2F3869727865_b80141c28b_m.jpg%22%2C%22a%22%3A%22IMG_5225%22%7D" alt="IMG_5225"/></a></td>
<td>
<a class="thickbox" rel="g6" href="http://farm4.static.flickr.com/3472/3869727661_430b19fdfc_m.jpg" title="IMG_5226" alt="IMG_5226"><img src="http://farm4.static.flickr.com/3472/3869727661_430b19fdfc_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3472%2F3869727661_430b19fdfc_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3472%2F3869727661_430b19fdfc_m.jpg%22%2C%22a%22%3A%22IMG_5226%22%7D" alt="IMG_5226"/></a></td>
<td>
<a class="thickbox" rel="g6" href="http://farm3.static.flickr.com/2649/3870509784_cbe5427094_m.jpg" title="IMG_5222" alt="IMG_5222"><img src="http://farm3.static.flickr.com/2649/3870509784_cbe5427094_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2649%2F3870509784_cbe5427094_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2649%2F3870509784_cbe5427094_m.jpg%22%2C%22a%22%3A%22IMG_5222%22%7D" alt="IMG_5222"/></a></td>
<td>
<a class="thickbox" rel="g6" href="http://farm4.static.flickr.com/3458/3870509256_85a5a76d55_m.jpg" title="IMG_5220" alt="IMG_5220"><img src="http://farm4.static.flickr.com/3458/3870509256_85a5a76d55_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3458%2F3870509256_85a5a76d55_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3458%2F3870509256_85a5a76d55_m.jpg%22%2C%22a%22%3A%22IMG_5220%22%7D" alt="IMG_5220"/></a></td>
</tr>
<tr>
<td>
<a class="thickbox" rel="g6" href="http://farm3.static.flickr.com/2623/3870509124_20c2b70734_m.jpg" title="IMG_5219" alt="IMG_5219"><img src="http://farm3.static.flickr.com/2623/3870509124_20c2b70734_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2623%2F3870509124_20c2b70734_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2623%2F3870509124_20c2b70734_m.jpg%22%2C%22a%22%3A%22IMG_5219%22%7D" alt="IMG_5219"/></a></td>
<td>
<a class="thickbox" rel="g6" href="http://farm4.static.flickr.com/3489/3869727017_d6e40ec7f0_m.jpg" title="IMG_5221" alt="IMG_5221"><img src="http://farm4.static.flickr.com/3489/3869727017_d6e40ec7f0_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3489%2F3869727017_d6e40ec7f0_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3489%2F3869727017_d6e40ec7f0_m.jpg%22%2C%22a%22%3A%22IMG_5221%22%7D" alt="IMG_5221"/></a></td>
<td>
<a class="thickbox" rel="g6" href="http://farm3.static.flickr.com/2558/3869726379_892ede829a_m.jpg" title="IMG_5218" alt="IMG_5218"><img src="http://farm3.static.flickr.com/2558/3869726379_892ede829a_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2558%2F3869726379_892ede829a_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2558%2F3869726379_892ede829a_m.jpg%22%2C%22a%22%3A%22IMG_5218%22%7D" alt="IMG_5218"/></a></td>
<td>
<a class="thickbox" rel="g6" href="http://farm4.static.flickr.com/3431/3870508790_43dfc930c5_m.jpg" title="IMG_5217" alt="IMG_5217"><img src="http://farm4.static.flickr.com/3431/3870508790_43dfc930c5_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3431%2F3870508790_43dfc930c5_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3431%2F3870508790_43dfc930c5_m.jpg%22%2C%22a%22%3A%22IMG_5217%22%7D" alt="IMG_5217"/></a></td>
<td>
<a class="thickbox" rel="g6" href="http://farm3.static.flickr.com/2573/3870508628_42562fc5d6_m.jpg" title="IMG_5216" alt="IMG_5216"><img src="http://farm3.static.flickr.com/2573/3870508628_42562fc5d6_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2573%2F3870508628_42562fc5d6_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2573%2F3870508628_42562fc5d6_m.jpg%22%2C%22a%22%3A%22IMG_5216%22%7D" alt="IMG_5216"/></a></td>
</tr>
<tr>
<td>
<a class="thickbox" rel="g6" href="http://farm4.static.flickr.com/3144/3870508366_9b724c1b2e_m.jpg" title="IMG_5215" alt="IMG_5215"><img src="http://farm4.static.flickr.com/3144/3870508366_9b724c1b2e_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3144%2F3870508366_9b724c1b2e_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3144%2F3870508366_9b724c1b2e_m.jpg%22%2C%22a%22%3A%22IMG_5215%22%7D" alt="IMG_5215"/></a></td>
<td>
<a class="thickbox" rel="g6" href="http://farm3.static.flickr.com/2648/3870508170_fd19249d74_m.jpg" title="IMG_5214" alt="IMG_5214"><img src="http://farm3.static.flickr.com/2648/3870508170_fd19249d74_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2648%2F3870508170_fd19249d74_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2648%2F3870508170_fd19249d74_m.jpg%22%2C%22a%22%3A%22IMG_5214%22%7D" alt="IMG_5214"/></a></td>
<td>
<a class="thickbox" rel="g6" href="http://farm3.static.flickr.com/2655/3870507904_41314acab6_m.jpg" title="IMG_5212" alt="IMG_5212"><img src="http://farm3.static.flickr.com/2655/3870507904_41314acab6_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2655%2F3870507904_41314acab6_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2655%2F3870507904_41314acab6_m.jpg%22%2C%22a%22%3A%22IMG_5212%22%7D" alt="IMG_5212"/></a></td>
<td>
<a class="thickbox" rel="g6" href="http://farm3.static.flickr.com/2652/3869725499_6538a2d503_m.jpg" title="IMG_5213" alt="IMG_5213"><img src="http://farm3.static.flickr.com/2652/3869725499_6538a2d503_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2652%2F3869725499_6538a2d503_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2652%2F3869725499_6538a2d503_m.jpg%22%2C%22a%22%3A%22IMG_5213%22%7D" alt="IMG_5213"/></a></td>
<td>
<a class="thickbox" rel="g6" href="http://farm3.static.flickr.com/2541/3869725177_c83084bb77_m.jpg" title="IMG_5206" alt="IMG_5206"><img src="http://farm3.static.flickr.com/2541/3869725177_c83084bb77_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2541%2F3869725177_c83084bb77_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2541%2F3869725177_c83084bb77_m.jpg%22%2C%22a%22%3A%22IMG_5206%22%7D" alt="IMG_5206"/></a></td>
</tr>
<tr>
<td>
<a class="thickbox" rel="g6" href="http://farm3.static.flickr.com/2659/3870507424_8bdaf61a18_m.jpg" title="IMG_5204" alt="IMG_5204"><img src="http://farm3.static.flickr.com/2659/3870507424_8bdaf61a18_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2659%2F3870507424_8bdaf61a18_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2659%2F3870507424_8bdaf61a18_m.jpg%22%2C%22a%22%3A%22IMG_5204%22%7D" alt="IMG_5204"/></a></td>
<td>
<a class="thickbox" rel="g6" href="http://farm4.static.flickr.com/3424/3869724959_eb0f11452b_m.jpg" title="IMG_5205" alt="IMG_5205"><img src="http://farm4.static.flickr.com/3424/3869724959_eb0f11452b_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3424%2F3869724959_eb0f11452b_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3424%2F3869724959_eb0f11452b_m.jpg%22%2C%22a%22%3A%22IMG_5205%22%7D" alt="IMG_5205"/></a></td>
<td>
<a class="thickbox" rel="g6" href="http://farm3.static.flickr.com/2495/3869724631_00b9bf926c_m.jpg" title="IMG_5201" alt="IMG_5201"><img src="http://farm3.static.flickr.com/2495/3869724631_00b9bf926c_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2495%2F3869724631_00b9bf926c_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2495%2F3869724631_00b9bf926c_m.jpg%22%2C%22a%22%3A%22IMG_5201%22%7D" alt="IMG_5201"/></a></td>
<td>
<a class="thickbox" rel="g6" href="http://farm3.static.flickr.com/2579/3869724469_510994e145_m.jpg" title="IMG_5198" alt="IMG_5198"><img src="http://farm3.static.flickr.com/2579/3869724469_510994e145_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2579%2F3869724469_510994e145_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2579%2F3869724469_510994e145_m.jpg%22%2C%22a%22%3A%22IMG_5198%22%7D" alt="IMG_5198"/></a></td>
<td>
<a class="thickbox" rel="g6" href="http://farm4.static.flickr.com/3528/3870507006_edb8ea6a10_m.jpg" title="IMG_5197" alt="IMG_5197"><img src="http://farm4.static.flickr.com/3528/3870507006_edb8ea6a10_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3528%2F3870507006_edb8ea6a10_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3528%2F3870507006_edb8ea6a10_m.jpg%22%2C%22a%22%3A%22IMG_5197%22%7D" alt="IMG_5197"/></a></td>
</tr>
</table><link id="px_editstylesheet" type="text/css" href="http://www.sunboyu.cn/wp-content/plugins/photoxhibit/photoxhibit.php?option=css&gid=6&1328511666" rel="stylesheet"/>原始图片  http://www.flickr.com/photos/40265853@N07/sets/72157622058873973/
因同行的同事周六加班，我的骑行就放到周末了，上周刚买的车，今天算第二次骑行，选择了一个不太长的地方：妙峰山。
早晨八点半我们在公司门口集合，出发点就是小营桥。走到温泉镇，同事由于昨日踢球膝关节疼痛，放弃了骑行，转向颐和园方向，
我只能孤身勇闯妙峰山。同事由于不熟悉北京的路，我把我的地图给他，结果，我在六环处没有拐弯，结果走了几公里的冤枉路，幸
亏提前打听，才走上正轨。这时才想起孔圣人的一句名言：鼻子下边就是路。
上了109国道，感觉身体能量逐渐消耗，但体力还行，但总是在20+的速度，据说很多QS都是30+甚至40+，本人努力了几次，不靠谱，
还是20+的好。路上碰上不少司机，打开窗口送我个指头-大拇指，很是感动。都是司机啊，眼泪哗哗的。
到了牌楼，我以为到顶了，给何总打了个电话，何总说，还有20公里，一直骑就行。我一看，果然有个路牌说20公里到妙峰山。继续
爬吧，20公里不是小菜么
刚开始爬，还能勉强保持20km，想想，20km，一小时不就上去了，可爬到一半，实在就不行了，勉强保持10km往上蹭。等看到8km牌
子的时候，体力就很差了，看着前后人少的时候，偷着推车前进，居然被一大姐给逮了，训斥我赶紧骑车。上车继续，结果还是被大
姐给P没影了。
爬行中发现一休息的老哥，小肚子比我大，也没我爬得快，但毅力好，始终能赶上我，快到峰顶3km的时候，我实在不行了，休息中
，老哥超过了我，我只好声明：我不行了，我得下去了。
休息几分钟，想想还差一点就到顶了，为啥不上去。继续走，连推带骑终于到了峰顶，休息，留影，走人。
中间碰见一个骑trek的大哥，正在寻找一个啥啥山头，说可以到防火道，我自然不知。临走人家问我：你咋还带个车锁？谁让我的车
子是贼必偷得捷安特呢。
一天骑行是120公里，骑行时间就不好意思说了，下午5点才到家。这成绩虽然比不上各位QS，但这是我骑行历史上的第80~200公里，自我感觉良好。
感谢同事陪我走过最无聊的路段
感谢司机同志给我的拇指
感谢摩托车队给我的拇指
感谢三蹦子（跨子摩托）给我的拇指
感谢车友给我的鼓励
感谢老哥陪我休息
感谢trek大哥对我的表扬
感谢一切车友

]]></description>
			<content:encoded><![CDATA[<table id="px6" title="妙峰山" border="0" cellspacing="0" cellpadding="0"><tr>
<td>
<a class="thickbox" rel="g6" href="http://farm3.static.flickr.com/2540/3870509956_306e0090a0_m.jpg" title="IMG_5223" alt="IMG_5223"><img src="http://farm3.static.flickr.com/2540/3870509956_306e0090a0_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2540%2F3870509956_306e0090a0_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2540%2F3870509956_306e0090a0_m.jpg%22%2C%22a%22%3A%22IMG_5223%22%7D" alt="IMG_5223"/></a></td>
<td>
<a class="thickbox" rel="g6" href="http://farm4.static.flickr.com/3482/3869727865_b80141c28b_m.jpg" title="IMG_5225" alt="IMG_5225"><img src="http://farm4.static.flickr.com/3482/3869727865_b80141c28b_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3482%2F3869727865_b80141c28b_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3482%2F3869727865_b80141c28b_m.jpg%22%2C%22a%22%3A%22IMG_5225%22%7D" alt="IMG_5225"/></a></td>
<td>
<a class="thickbox" rel="g6" href="http://farm4.static.flickr.com/3472/3869727661_430b19fdfc_m.jpg" title="IMG_5226" alt="IMG_5226"><img src="http://farm4.static.flickr.com/3472/3869727661_430b19fdfc_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3472%2F3869727661_430b19fdfc_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3472%2F3869727661_430b19fdfc_m.jpg%22%2C%22a%22%3A%22IMG_5226%22%7D" alt="IMG_5226"/></a></td>
<td>
<a class="thickbox" rel="g6" href="http://farm3.static.flickr.com/2649/3870509784_cbe5427094_m.jpg" title="IMG_5222" alt="IMG_5222"><img src="http://farm3.static.flickr.com/2649/3870509784_cbe5427094_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2649%2F3870509784_cbe5427094_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2649%2F3870509784_cbe5427094_m.jpg%22%2C%22a%22%3A%22IMG_5222%22%7D" alt="IMG_5222"/></a></td>
<td>
<a class="thickbox" rel="g6" href="http://farm4.static.flickr.com/3458/3870509256_85a5a76d55_m.jpg" title="IMG_5220" alt="IMG_5220"><img src="http://farm4.static.flickr.com/3458/3870509256_85a5a76d55_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3458%2F3870509256_85a5a76d55_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3458%2F3870509256_85a5a76d55_m.jpg%22%2C%22a%22%3A%22IMG_5220%22%7D" alt="IMG_5220"/></a></td>
</tr>
<tr>
<td>
<a class="thickbox" rel="g6" href="http://farm3.static.flickr.com/2623/3870509124_20c2b70734_m.jpg" title="IMG_5219" alt="IMG_5219"><img src="http://farm3.static.flickr.com/2623/3870509124_20c2b70734_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2623%2F3870509124_20c2b70734_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2623%2F3870509124_20c2b70734_m.jpg%22%2C%22a%22%3A%22IMG_5219%22%7D" alt="IMG_5219"/></a></td>
<td>
<a class="thickbox" rel="g6" href="http://farm4.static.flickr.com/3489/3869727017_d6e40ec7f0_m.jpg" title="IMG_5221" alt="IMG_5221"><img src="http://farm4.static.flickr.com/3489/3869727017_d6e40ec7f0_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3489%2F3869727017_d6e40ec7f0_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3489%2F3869727017_d6e40ec7f0_m.jpg%22%2C%22a%22%3A%22IMG_5221%22%7D" alt="IMG_5221"/></a></td>
<td>
<a class="thickbox" rel="g6" href="http://farm3.static.flickr.com/2558/3869726379_892ede829a_m.jpg" title="IMG_5218" alt="IMG_5218"><img src="http://farm3.static.flickr.com/2558/3869726379_892ede829a_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2558%2F3869726379_892ede829a_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2558%2F3869726379_892ede829a_m.jpg%22%2C%22a%22%3A%22IMG_5218%22%7D" alt="IMG_5218"/></a></td>
<td>
<a class="thickbox" rel="g6" href="http://farm4.static.flickr.com/3431/3870508790_43dfc930c5_m.jpg" title="IMG_5217" alt="IMG_5217"><img src="http://farm4.static.flickr.com/3431/3870508790_43dfc930c5_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3431%2F3870508790_43dfc930c5_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3431%2F3870508790_43dfc930c5_m.jpg%22%2C%22a%22%3A%22IMG_5217%22%7D" alt="IMG_5217"/></a></td>
<td>
<a class="thickbox" rel="g6" href="http://farm3.static.flickr.com/2573/3870508628_42562fc5d6_m.jpg" title="IMG_5216" alt="IMG_5216"><img src="http://farm3.static.flickr.com/2573/3870508628_42562fc5d6_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2573%2F3870508628_42562fc5d6_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2573%2F3870508628_42562fc5d6_m.jpg%22%2C%22a%22%3A%22IMG_5216%22%7D" alt="IMG_5216"/></a></td>
</tr>
<tr>
<td>
<a class="thickbox" rel="g6" href="http://farm4.static.flickr.com/3144/3870508366_9b724c1b2e_m.jpg" title="IMG_5215" alt="IMG_5215"><img src="http://farm4.static.flickr.com/3144/3870508366_9b724c1b2e_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3144%2F3870508366_9b724c1b2e_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3144%2F3870508366_9b724c1b2e_m.jpg%22%2C%22a%22%3A%22IMG_5215%22%7D" alt="IMG_5215"/></a></td>
<td>
<a class="thickbox" rel="g6" href="http://farm3.static.flickr.com/2648/3870508170_fd19249d74_m.jpg" title="IMG_5214" alt="IMG_5214"><img src="http://farm3.static.flickr.com/2648/3870508170_fd19249d74_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2648%2F3870508170_fd19249d74_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2648%2F3870508170_fd19249d74_m.jpg%22%2C%22a%22%3A%22IMG_5214%22%7D" alt="IMG_5214"/></a></td>
<td>
<a class="thickbox" rel="g6" href="http://farm3.static.flickr.com/2655/3870507904_41314acab6_m.jpg" title="IMG_5212" alt="IMG_5212"><img src="http://farm3.static.flickr.com/2655/3870507904_41314acab6_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2655%2F3870507904_41314acab6_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2655%2F3870507904_41314acab6_m.jpg%22%2C%22a%22%3A%22IMG_5212%22%7D" alt="IMG_5212"/></a></td>
<td>
<a class="thickbox" rel="g6" href="http://farm3.static.flickr.com/2652/3869725499_6538a2d503_m.jpg" title="IMG_5213" alt="IMG_5213"><img src="http://farm3.static.flickr.com/2652/3869725499_6538a2d503_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2652%2F3869725499_6538a2d503_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2652%2F3869725499_6538a2d503_m.jpg%22%2C%22a%22%3A%22IMG_5213%22%7D" alt="IMG_5213"/></a></td>
<td>
<a class="thickbox" rel="g6" href="http://farm3.static.flickr.com/2541/3869725177_c83084bb77_m.jpg" title="IMG_5206" alt="IMG_5206"><img src="http://farm3.static.flickr.com/2541/3869725177_c83084bb77_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2541%2F3869725177_c83084bb77_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2541%2F3869725177_c83084bb77_m.jpg%22%2C%22a%22%3A%22IMG_5206%22%7D" alt="IMG_5206"/></a></td>
</tr>
<tr>
<td>
<a class="thickbox" rel="g6" href="http://farm3.static.flickr.com/2659/3870507424_8bdaf61a18_m.jpg" title="IMG_5204" alt="IMG_5204"><img src="http://farm3.static.flickr.com/2659/3870507424_8bdaf61a18_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2659%2F3870507424_8bdaf61a18_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2659%2F3870507424_8bdaf61a18_m.jpg%22%2C%22a%22%3A%22IMG_5204%22%7D" alt="IMG_5204"/></a></td>
<td>
<a class="thickbox" rel="g6" href="http://farm4.static.flickr.com/3424/3869724959_eb0f11452b_m.jpg" title="IMG_5205" alt="IMG_5205"><img src="http://farm4.static.flickr.com/3424/3869724959_eb0f11452b_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3424%2F3869724959_eb0f11452b_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3424%2F3869724959_eb0f11452b_m.jpg%22%2C%22a%22%3A%22IMG_5205%22%7D" alt="IMG_5205"/></a></td>
<td>
<a class="thickbox" rel="g6" href="http://farm3.static.flickr.com/2495/3869724631_00b9bf926c_m.jpg" title="IMG_5201" alt="IMG_5201"><img src="http://farm3.static.flickr.com/2495/3869724631_00b9bf926c_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2495%2F3869724631_00b9bf926c_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2495%2F3869724631_00b9bf926c_m.jpg%22%2C%22a%22%3A%22IMG_5201%22%7D" alt="IMG_5201"/></a></td>
<td>
<a class="thickbox" rel="g6" href="http://farm3.static.flickr.com/2579/3869724469_510994e145_m.jpg" title="IMG_5198" alt="IMG_5198"><img src="http://farm3.static.flickr.com/2579/3869724469_510994e145_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2579%2F3869724469_510994e145_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2579%2F3869724469_510994e145_m.jpg%22%2C%22a%22%3A%22IMG_5198%22%7D" alt="IMG_5198"/></a></td>
<td>
<a class="thickbox" rel="g6" href="http://farm4.static.flickr.com/3528/3870507006_edb8ea6a10_m.jpg" title="IMG_5197" alt="IMG_5197"><img src="http://farm4.static.flickr.com/3528/3870507006_edb8ea6a10_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3528%2F3870507006_edb8ea6a10_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3528%2F3870507006_edb8ea6a10_m.jpg%22%2C%22a%22%3A%22IMG_5197%22%7D" alt="IMG_5197"/></a></td>
</tr>
</table><link id="px_editstylesheet" type="text/css" href="http://www.sunboyu.cn/wp-content/plugins/photoxhibit/photoxhibit.php?option=css&gid=6&1328511667" rel="stylesheet"/><p>原始图片  <a href="http://www.flickr.com/photos/40265853@N07/sets/72157622058873973/">http://www.flickr.com/photos/40265853@N07/sets/72157622058873973/</a></p>
<p>因同行的同事周六加班，我的骑行就放到周末了，上周刚买的车，今天算第二次骑行，选择了一个不太长的地方：妙峰山。</p>
<p>早晨八点半我们在公司门口集合，出发点就是小营桥。走到温泉镇，同事由于昨日踢球膝关节疼痛，放弃了骑行，转向颐和园方向，</p>
<p>我只能孤身勇闯妙峰山。同事由于不熟悉北京的路，我把我的地图给他，结果，我在六环处没有拐弯，结果走了几公里的冤枉路，幸</p>
<p>亏提前打听，才走上正轨。这时才想起孔圣人的一句名言：鼻子下边就是路。</p>
<p>上了109国道，感觉身体能量逐渐消耗，但体力还行，但总是在20+的速度，据说很多QS都是30+甚至40+，本人努力了几次，不靠谱，</p>
<p>还是20+的好。路上碰上不少司机，打开窗口送我个指头-大拇指，很是感动。都是司机啊，眼泪哗哗的。</p>
<p>到了牌楼，我以为到顶了，给何总打了个电话，何总说，还有20公里，一直骑就行。我一看，果然有个路牌说20公里到妙峰山。继续</p>
<p>爬吧，20公里不是小菜么</p>
<p>刚开始爬，还能勉强保持20km，想想，20km，一小时不就上去了，可爬到一半，实在就不行了，勉强保持10km往上蹭。等看到8km牌</p>
<p>子的时候，体力就很差了，看着前后人少的时候，偷着推车前进，居然被一大姐给逮了，训斥我赶紧骑车。上车继续，结果还是被大</p>
<p>姐给P没影了。</p>
<p>爬行中发现一休息的老哥，小肚子比我大，也没我爬得快，但毅力好，始终能赶上我，快到峰顶3km的时候，我实在不行了，休息中</p>
<p>，老哥超过了我，我只好声明：我不行了，我得下去了。</p>
<p>休息几分钟，想想还差一点就到顶了，为啥不上去。继续走，连推带骑终于到了峰顶，休息，留影，走人。</p>
<p>中间碰见一个骑trek的大哥，正在寻找一个啥啥山头，说可以到防火道，我自然不知。临走人家问我：你咋还带个车锁？谁让我的车</p>
<p>子是贼必偷得捷安特呢。</p>
<p>一天骑行是120公里，骑行时间就不好意思说了，下午5点才到家。这成绩虽然比不上各位QS，但这是我骑行历史上的第80~200公里，自我感觉良好。</p>
<p>感谢同事陪我走过最无聊的路段<br />
感谢司机同志给我的拇指<br />
感谢摩托车队给我的拇指<br />
感谢三蹦子（跨子摩托）给我的拇指<br />
感谢车友给我的鼓励<br />
感谢老哥陪我休息<br />
感谢trek大哥对我的表扬<br />
感谢一切车友</p>
<p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/08/30/%e4%b8%aa%e4%ba%ba%e7%8b%ac%e4%b8%8a%e5%a6%99%e5%b3%b0%e5%b1%b1%ef%bc%8c%e8%a2%abp%ef%bc%8c%e8%a2%ab%e6%8a%93%e4%bd%9c%e5%bc%8a%ef%bc%8c%e8%a2%abbs%e2%80%a6%e2%80%a6.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>为啥要进行骑车运动</title>
		<link>http://www.sunboyu.cn/2009/08/29/%e4%b8%ba%e5%95%a5%e8%a6%81%e8%bf%9b%e8%a1%8c%e9%aa%91%e8%bd%a6%e8%bf%90%e5%8a%a8.shtml</link>
		<comments>http://www.sunboyu.cn/2009/08/29/%e4%b8%ba%e5%95%a5%e8%a6%81%e8%bf%9b%e8%a1%8c%e9%aa%91%e8%bd%a6%e8%bf%90%e5%8a%a8.shtml#comments</comments>
		<pubDate>Sat, 29 Aug 2009 06:15:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[单车生活]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=974</guid>
		<description><![CDATA[周末买了一辆运动型的山地，入门级的，不算贵，配上一身的装备，花了不到3000块钱。邻居看见费解：为啥不买个好的电动车？好多同事也纳闷为什么自行车也有几千上万的价格？
解释一下：首先说北漂在北京的生活都是很苦的，有乐也是苦中作乐。北京的基础环境很差，比如空气、水质、环境、饮食习惯、生活节奏，这些因素会让北漂们的身体素质有天然的劣势。因此，不断运动强身健体是北漂的必修课。当然，自行车运动只是各种运动的一种，其他运动皆可。
自行车正逐渐成为一种全民运动。当年乒乓球在打出世界后，国内掀起乒乓热，因为乒乓运动占地少，设备简单，记得小时候村里架上两块水泥板，中间放上一排砖头，就是个简单的乒乓球运动场地。而自行车在中国的普及率是很高的，很顺其自然得就能成为大众认可的运动。自行车运动只是需要一条能通车的公路，或者能过车的山路即可，成本异常低。
自行车运动花式也比较多，公路、山地、越野、BMX、攀爬、速降……要是没谱，弄个破车傻骑也能出效果。
女生骑车，建议买个合身的运动车，因为传统的代步车能把你的大腿骑粗，运动车有氧运动能让你的大腿变细。
]]></description>
			<content:encoded><![CDATA[<p>周末买了一辆运动型的山地，入门级的，不算贵，配上一身的装备，花了不到3000块钱。邻居看见费解：为啥不买个好的电动车？好多同事也纳闷为什么自行车也有几千上万的价格？</p>
<p>解释一下：首先说北漂在北京的生活都是很苦的，有乐也是苦中作乐。北京的基础环境很差，比如空气、水质、环境、饮食习惯、生活节奏，这些因素会让北漂们的身体素质有天然的劣势。因此，不断运动强身健体是北漂的必修课。当然，自行车运动只是各种运动的一种，其他运动皆可。</p>
<p>自行车正逐渐成为一种全民运动。当年乒乓球在打出世界后，国内掀起乒乓热，因为乒乓运动占地少，设备简单，记得小时候村里架上两块水泥板，中间放上一排砖头，就是个简单的乒乓球运动场地。而自行车在中国的普及率是很高的，很顺其自然得就能成为大众认可的运动。自行车运动只是需要一条能通车的公路，或者能过车的山路即可，成本异常低。</p>
<p>自行车运动花式也比较多，公路、山地、越野、BMX、攀爬、速降……要是没谱，弄个破车傻骑也能出效果。</p>
<p>女生骑车，建议买个合身的运动车，因为传统的代步车能把你的大腿骑粗，运动车有氧运动能让你的大腿变细。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/08/29/%e4%b8%ba%e5%95%a5%e8%a6%81%e8%bf%9b%e8%a1%8c%e9%aa%91%e8%bd%a6%e8%bf%90%e5%8a%a8.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>《哥 寂寞》小样-同事山羊的最新作品</title>
		<link>http://www.sunboyu.cn/2009/08/26/%e3%80%8a%e5%93%a5-%e5%af%82%e5%af%9e%e3%80%8b%e5%b0%8f%e6%a0%b7-%e5%90%8c%e4%ba%8b%e5%b1%b1%e7%be%8a%e7%9a%84%e6%9c%80%e6%96%b0%e4%bd%9c%e5%93%81.shtml</link>
		<comments>http://www.sunboyu.cn/2009/08/26/%e3%80%8a%e5%93%a5-%e5%af%82%e5%af%9e%e3%80%8b%e5%b0%8f%e6%a0%b7-%e5%90%8c%e4%ba%8b%e5%b1%b1%e7%be%8a%e7%9a%84%e6%9c%80%e6%96%b0%e4%bd%9c%e5%93%81.shtml#comments</comments>
		<pubDate>Wed, 26 Aug 2009 05:25:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[相当拍砖]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=970</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p><object width="420" height="363"><param name="movie" value="http://www.tudou.com/v/8-uC2_HIsDo"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><param name="wmode" value="opaque"></param><embed src="http://www.tudou.com/v/8-uC2_HIsDo" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" wmode="opaque" width="420" height="363"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/08/26/%e3%80%8a%e5%93%a5-%e5%af%82%e5%af%9e%e3%80%8b%e5%b0%8f%e6%a0%b7-%e5%90%8c%e4%ba%8b%e5%b1%b1%e7%be%8a%e7%9a%84%e6%9c%80%e6%96%b0%e4%bd%9c%e5%93%81.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>十三陵水库骑行路线详细</title>
		<link>http://www.sunboyu.cn/2009/08/26/%e5%8d%81%e4%b8%89%e9%99%b5%e6%b0%b4%e5%ba%93%e9%aa%91%e8%a1%8c%e8%b7%af%e7%ba%bf%e8%af%a6%e7%bb%86.shtml</link>
		<comments>http://www.sunboyu.cn/2009/08/26/%e5%8d%81%e4%b8%89%e9%99%b5%e6%b0%b4%e5%ba%93%e9%aa%91%e8%a1%8c%e8%b7%af%e7%ba%bf%e8%af%a6%e7%bb%86.shtml#comments</comments>
		<pubDate>Wed, 26 Aug 2009 04:43:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[单车生活]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=966</guid>
		<description><![CDATA[清河出发，顺着八达岭高速，是没有啥疑问的，一直往昌平冲锋，直着走，别拐弯（小弯要拐，掉沟里后果自负）。但中间有个立交桥是需要左拐的，Y的牌子字向前面，得回头才能看见，没记住是哪个桥，稍等问一下。

到昌平的西关环岛，就得掉头往市里了，走 府学路 ，那边人多，可以问问，府学路往前走，差不多穿过城区，往左看水库路，就能上水库了，那边就没啥可说的了，中间的分叉其实就是正转跟倒转的分叉。

路上车友应该不少，不认识路随时问，可以问问老乡。
回来的时候，环岛得绕大圈，否则得搬车子过去了。
]]></description>
			<content:encoded><![CDATA[<p>清河出发，顺着八达岭高速，是没有啥疑问的，一直往昌平冲锋，直着走，别拐弯（小弯要拐，掉沟里后果自负）。但中间有个立交桥是需要左拐的，Y的牌子字向前面，得回头才能看见，没记住是哪个桥，稍等问一下。</p>
<p><a href="http://www.sunboyu.cn/upfiles/2009/08/12512616779005004.gif"><img src="http://www.sunboyu.cn/upfiles/2009/08/12512616779005004.gif" alt="12512616779005004" title="12512616779005004" width="416" height="499" class="aligncenter size-full wp-image-967" /></a></p>
<p>到昌平的西关环岛，就得掉头往市里了，走 府学路 ，那边人多，可以问问，府学路往前走，差不多穿过城区，往左看水库路，就能上水库了，那边就没啥可说的了，中间的分叉其实就是正转跟倒转的分叉。</p>
<p><a href="http://www.sunboyu.cn/upfiles/2009/08/未命名-2.jpg"><img src="http://www.sunboyu.cn/upfiles/2009/08/未命名-2.jpg" alt="未命名-2" title="未命名-2" width="405" height="405" class="aligncenter size-full wp-image-968" /></a></p>
<p>路上车友应该不少，不认识路随时问，可以问问老乡。</p>
<p>回来的时候，环岛得绕大圈，否则得搬车子过去了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/08/26/%e5%8d%81%e4%b8%89%e9%99%b5%e6%b0%b4%e5%ba%93%e9%aa%91%e8%a1%8c%e8%b7%af%e7%ba%bf%e8%af%a6%e7%bb%86.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>mysql5.1触发器小试</title>
		<link>http://www.sunboyu.cn/2009/08/25/mysql5-1%e8%a7%a6%e5%8f%91%e5%99%a8%e5%b0%8f%e8%af%95.shtml</link>
		<comments>http://www.sunboyu.cn/2009/08/25/mysql5-1%e8%a7%a6%e5%8f%91%e5%99%a8%e5%b0%8f%e8%af%95.shtml#comments</comments>
		<pubDate>Tue, 25 Aug 2009 14:51:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[MYSQL]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=961</guid>
		<description><![CDATA[我一直以为mysql5.0的触发器好似没那么强大，被一个搞mssql的老大给忽悠了，其实mysql触发器从5.0就变得很强大，当然包括5.1。
这里拿一个demo说事：
DROP TRIGGER IF EXISTS `ucenterhome`.`uchome_doing_test`;
DELIMITER //
CREATE TRIGGER `ucenterhome`.`uchome_doing_test` AFTER INSERT ON `ucenterhome`.`uchome_doing`
&#160;FOR EACH ROW BEGIN
&#160;&#160; &#160;INSERT INTO uchome_doing_1 SET doid= NEW.doid+3, uid= NEW.uid , username= NEW.username,`from`=NEW.`from`,dateline=NEW.dateline,message=NEW.message,ip=NEW.ip,replynum = NEW.replynum,mood=NEW.mood;&#160; &#160;
END
//
DELIMITER ;
每向uchome_doing表中插一条数据，就复制到uchome_dong_1表中一条。
有两个关键字：
OLD&#160; NEW
官方的解释：

The OLD and NEW keywords enable you to access columns in the rows affected by a trigger. (OLD and NEW are not case sensitive.) In [...]]]></description>
			<content:encoded><![CDATA[<p>我一直以为mysql5.0的触发器好似没那么强大，被一个搞mssql的老大给忽悠了，其实mysql触发器从5.0就变得很强大，当然包括5.1。</p>
<p>这里拿一个demo说事：</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">DROP TRIGGER IF EXISTS `ucenterhome`.`uchome_doing_test`;</li>
<li>DELIMITER //</li>
<li>CREATE TRIGGER `ucenterhome`.`uchome_doing_test` AFTER INSERT ON `ucenterhome`.`uchome_doing`</li>
<li>&nbsp;FOR EACH ROW BEGIN</li>
<li>&nbsp;&nbsp; &nbsp;INSERT INTO uchome_doing_1 SET doid= NEW.doid+3, uid= NEW.uid , username= NEW.username,`from`=NEW.`from`,dateline=NEW.dateline,message=NEW.message,ip=NEW.ip,replynum = NEW.replynum,mood=NEW.mood;&nbsp; &nbsp;</li>
<li>END</li>
<li>//</li>
<li>DELIMITER ;</li></ol></div>
<p>每向uchome_doing表中插一条数据，就复制到uchome_dong_1表中一条。</p>
<p>有两个关键字：</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">OLD&nbsp; NEW</li></ol></div>
<p>官方的解释：</p>
<blockquote><p>
The OLD and NEW keywords enable you to access columns in the rows affected by a trigger. (OLD and NEW are not case sensitive.) In an INSERT trigger, only NEW.col_name can be used; there is no old row. In a DELETE trigger, only OLD.col_name can be used; there is no new row. In an UPDATE trigger, you can use OLD.col_name to refer to the columns of a row before it is updated and NEW.col_name to refer to the columns of the row after it is updated.
</p></blockquote>
<p>还有两个关键字</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">BEFORE AFTER</li></ol></div>
<p>官方解释</p>
<blockquote><p>
The keyword BEFORE indicates the trigger action time. In this case, the trigger should activate before each row inserted into the table. The other allowable keyword here is AFTER.
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/08/25/mysql5-1%e8%a7%a6%e5%8f%91%e5%99%a8%e5%b0%8f%e8%af%95.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>十三陵半日游</title>
		<link>http://www.sunboyu.cn/2009/08/24/%e5%8d%81%e4%b8%89%e9%99%b5%e5%8d%8a%e6%97%a5%e6%b8%b8.shtml</link>
		<comments>http://www.sunboyu.cn/2009/08/24/%e5%8d%81%e4%b8%89%e9%99%b5%e5%8d%8a%e6%97%a5%e6%b8%b8.shtml#comments</comments>
		<pubDate>Sun, 23 Aug 2009 23:43:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[单车生活]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=956</guid>
		<description><![CDATA[22日买上了新车，23日忍不住叫上同事一起出游。我们选择了一个很休闲的线路-十三陵。早晨9点出发，下午一点我到家。
图片如果看不到请点击这里查看原始相册  搜狐相册






]]></description>
			<content:encoded><![CDATA[<p>22日买上了新车，23日忍不住叫上同事一起出游。我们选择了一个很休闲的线路-十三陵。早晨9点出发，下午一点我到家。</p>
<p>图片如果看不到请点击这里查看原始相册  <a href="http://pp.sohu.com/photosetview-34317959-30508009.html" target="_blank">搜狐相册</a></p>
<p><img class="alignnone" src="http://1851.img.pp.sohu.com.cn/images/2009/8/23/15/2/123f3d72885g215.jpg" alt="" width="614" height="461" /></p>
<p><img class="alignnone" src="http://1861.img.pp.sohu.com.cn/images/2009/8/23/15/2/123f3d30f1dg214.jpg" alt="" width="614" height="461" /></p>
<p><img class="alignnone" src="http://1851.img.pp.sohu.com.cn/images/2009/8/23/15/2/123f3d70fa9g215.jpg" alt="" width="614" height="461" /></p>
<p><img class="alignnone" src="http://1851.img.pp.sohu.com.cn/images/2009/8/23/15/2/123f3d84628g213.jpg" alt="" width="614" height="461" /></p>
<p><img class="alignnone" src="http://1841.img.pp.sohu.com.cn/images/2009/8/23/15/2/123f3d6bcadg215.jpg" alt="" width="614" height="461" /></p>
<p><img class="alignnone" src="http://1841.img.pp.sohu.com.cn/images/2009/8/23/15/2/123f3d28600g214.jpg" alt="" width="614" height="461" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/08/24/%e5%8d%81%e4%b8%89%e9%99%b5%e5%8d%8a%e6%97%a5%e6%b8%b8.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>mysql数据抽象层-PDO</title>
		<link>http://www.sunboyu.cn/2009/08/20/mysql%e6%95%b0%e6%8d%ae%e6%8a%bd%e8%b1%a1%e5%b1%82-pdo.shtml</link>
		<comments>http://www.sunboyu.cn/2009/08/20/mysql%e6%95%b0%e6%8d%ae%e6%8a%bd%e8%b1%a1%e5%b1%82-pdo.shtml#comments</comments>
		<pubDate>Thu, 20 Aug 2009 08:02:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[MYSQL]]></category>

		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=953</guid>
		<description><![CDATA[好久不用PDO了，公司这边有的项目使用PDO，再熟悉一下，继续沿用之前的方法：
没用数据绑定和一些高级的功能，只是实现基础功能。
&#60; ?php
interface DateBaseConnect
{
	#数据库连接
	public function Connect( $host , $user , $pass , $datebase );
	#使用数据库
	public function selectDateBase( $datebase );
	#执行一个查询
	public function query( $sql );
	#取得一行
	public function fetch( $sql );
	#取得所有
	public function fetchAll( $sql );
	#取得影响行数
	public function affectedRow();
	#取得结果行数
	public function recordCount();
	#取得上次插入ID
	public function insertID();
	#释放资源
	public function close();
}
class sPDO implements DateBaseConnect
{
	#连接标识
	public $handle = false;
	#结果标识
	public $query;
	#查询次数
	public $exetime;
	#影响行数
	public $affectedRows;
	#statement
	public $statement;
	#数据库连接
	public function Connect( $host , $user , $pass , [...]]]></description>
			<content:encoded><![CDATA[<p>好久不用PDO了，公司这边有的项目使用PDO，再熟悉一下，继续沿用之前的方法：</p>
<p>没用数据绑定和一些高级的功能，只是实现基础功能。</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">&lt; ?php</li>
<li>interface DateBaseConnect</li>
<li>{</li>
<li>	#数据库连接</li>
<li>	public function Connect( $host , $user , $pass , $datebase );</li>
<li>	#使用数据库</li>
<li>	public function selectDateBase( $datebase );</li>
<li>	#执行一个查询</li>
<li>	public function query( $sql );</li>
<li>	#取得一行</li>
<li>	public function fetch( $sql );</li>
<li>	#取得所有</li>
<li>	public function fetchAll( $sql );</li>
<li>	#取得影响行数</li>
<li>	public function affectedRow();</li>
<li>	#取得结果行数</li>
<li>	public function recordCount();</li>
<li>	#取得上次插入ID</li>
<li>	public function insertID();</li>
<li>	#释放资源</li>
<li>	public function close();</li>
<li>}</li>
<li>class sPDO implements DateBaseConnect</li>
<li>{</li>
<li>	#连接标识</li>
<li>	public $handle = false;</li>
<li>	#结果标识</li>
<li>	public $query;</li>
<li>	#查询次数</li>
<li>	public $exetime;</li>
<li>	#影响行数</li>
<li>	public $affectedRows;</li>
<li>	#statement</li>
<li>	public $statement;</li>
<li>	#数据库连接</li>
<li>	public function Connect( $host , $user , $pass , $datebase )</li>
<li>	{</li>
<li>		try</li>
<li>		{</li>
<li>			$this-&gt;handle = new PDO(&quot;mysql:dbname=&quot;.$datebase.&quot;;host=&quot;.$host, $user, $pass);</li>
<li>		}</li>
<li>		catch (PDOException $e)</li>
<li>		{</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;echo 'Connection failed: ' . $e-&gt;getMessage();</li>
<li>		}</li>
<li>		$this-&gt;exetime = 0;</li>
<li>	}</li>
<li>	#选择数据库</li>
<li>	public function selectDateBase( $database )</li>
<li>	{</li>
<li>	&nbsp; &nbsp; return true;</li>
<li>	}</li>
<li>	#执行一个查询</li>
<li>	public function query( $sql )</li>
<li>	{</li>
<li>	&nbsp; &nbsp; $this-&gt;affectedRows = $this-&gt;handle-&gt;exec( $sql );</li>
<li>		$this-&gt;exetime++;</li>
<li>		return true;</li>
<li>	}</li>
<li>	#取得一行</li>
<li>	public function fetch( $sql )</li>
<li>	{</li>
<li>		$this-&gt;statement = $this-&gt;handle-&gt;query( $sql );</li>
<li>		return $this-&gt;statement-&gt;fetch(PDO::FETCH_ASSOC);</li>
<li>	}</li>
<li>	#取得所有</li>
<li>	public function fetchAll( $sql )</li>
<li>	{</li>
<li>		$this-&gt;statement = $this-&gt;handle-&gt;query( $sql );</li>
<li>		return $this-&gt;statement-&gt;fetchAll(PDO::FETCH_ASSOC);</li>
<li>	}</li>
<li>	#取得影响行数</li>
<li>	public function affectedRow()</li>
<li>	{</li>
<li>		return $this-&gt;affectedRows;</li>
<li>	}</li>
<li>	#取得结果行数</li>
<li>	public function recordCount()</li>
<li>	{</li>
<li>		return $this-&gt;statement-&gt;rowCount();</li>
<li>	}</li>
<li>	#取得上次插入ID</li>
<li>	public function insertID()</li>
<li>	{</li>
<li>		$sql = sprintf(&quot;SELECT LAST_INSERT_ID() AS id&quot;);</li>
<li>		$pdostatement = $this-&gt;handle-&gt;query( $sql );</li>
<li>		$rs = $pdostatement-&gt;fetch();</li>
<li>		return $rs['id'];</li>
<li>	}</li>
<li>	#释放资源</li>
<li>	public function close()</li>
<li>	{</li>
<li>		unset($this-&gt;handle);</li>
<li>	}</li>
<li>	#析构函数</li>
<li>	function __destruct()</li>
<li>	{</li>
<li>		$this-&gt;close();</li>
<li>	}</li>
<li>}</li>
<li>#Demo</li>
<li>$db = new sPDO;</li>
<li>$db-&gt;Connect( 'localhost' , 'root' , '123456' , 'ucenterhome' );</li>
<li>$rs = $db-&gt;fetchAll( &quot;SELECT * FROM uchome_blogfield&quot; );</li>
<li>print_r( $rs );</li>
<li>?&gt;</li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/08/20/mysql%e6%95%b0%e6%8d%ae%e6%8a%bd%e8%b1%a1%e5%b1%82-pdo.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>对UCenter Home的一点看法</title>
		<link>http://www.sunboyu.cn/2009/08/17/%e5%af%b9ucenter-home%e7%9a%84%e4%b8%80%e7%82%b9%e7%9c%8b%e6%b3%95.shtml</link>
		<comments>http://www.sunboyu.cn/2009/08/17/%e5%af%b9ucenter-home%e7%9a%84%e4%b8%80%e7%82%b9%e7%9c%8b%e6%b3%95.shtml#comments</comments>
		<pubDate>Mon, 17 Aug 2009 14:27:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=950</guid>
		<description><![CDATA[最近改了改UCenter Home，发现，这的确是个不错的产品，但不能算一个成熟的程序。
产品看法：
这个产品主要是服务一些个人站长和小型站点，功能模仿一些成熟的sns系统，模仿比较到位，而且功能上尽可能大的去完善，让管理员可以方便进行比较系统全面的管理。而从产品的设计体验上，也能适应中国大多数的用户。
所以，这个产品在国内算一套非常不错的sns建站系统。
编码方面：
要说代码，我相信阅读过代码的人一定很头疼，从discuz的bbs就这样。
代码只是面向过程，这个，在discuz方面，我估计是累积开发造成的，一个个版本升级，变化不能太大，如果变化真的太大，会失去一些开发者。另外，他自己升级也是个问题。
不过uch这个产品也开发成了这样。代码结构我倒挺喜欢，之前我写那个架子也是这样。优点：结构规范，适合多人协作。缺点，面向对象性，代码复用差。这个结构，我估计是公司某元老折腾的，然后有几个小弟进行模块开发。
为什么这么说，是有原因的，因为遍历整个代码，起码有两种以上的代码风格，而且人员之间沟通配合也造成了一些错误，虽然不是bug，但看得出来项目进行的仓促。不过这也是公司的一个战略措施，小戴同学总是及时放出产品来打压竞争对手。
再说负载，其实这个问题就不用说，从大量的垃圾sql语句就能看出，这个产品不能支持较大的负载。
再说最后一点，如果你想去优化改善，彻底改善，放弃吧。重写。
我看的只是uch2.0的预览版，估计正式版放出的时候，这些问题会有所改善。
]]></description>
			<content:encoded><![CDATA[<p>最近改了改UCenter Home，发现，这的确是个不错的产品，但不能算一个成熟的程序。</p>
<p>产品看法：</p>
<p>这个产品主要是服务一些个人站长和小型站点，功能模仿一些成熟的sns系统，模仿比较到位，而且功能上尽可能大的去完善，让管理员可以方便进行比较系统全面的管理。而从产品的设计体验上，也能适应中国大多数的用户。</p>
<p>所以，这个产品在国内算一套非常不错的sns建站系统。</p>
<p>编码方面：</p>
<p>要说代码，我相信阅读过代码的人一定很头疼，从discuz的bbs就这样。</p>
<p>代码只是面向过程，这个，在discuz方面，我估计是累积开发造成的，一个个版本升级，变化不能太大，如果变化真的太大，会失去一些开发者。另外，他自己升级也是个问题。</p>
<p>不过uch这个产品也开发成了这样。代码结构我倒挺喜欢，之前我写那个架子也是这样。优点：结构规范，适合多人协作。缺点，面向对象性，代码复用差。这个结构，我估计是公司某元老折腾的，然后有几个小弟进行模块开发。</p>
<p>为什么这么说，是有原因的，因为遍历整个代码，起码有两种以上的代码风格，而且人员之间沟通配合也造成了一些错误，虽然不是bug，但看得出来项目进行的仓促。不过这也是公司的一个战略措施，小戴同学总是及时放出产品来打压竞争对手。</p>
<p>再说负载，其实这个问题就不用说，从大量的垃圾sql语句就能看出，这个产品不能支持较大的负载。</p>
<p>再说最后一点，如果你想去优化改善，彻底改善，放弃吧。重写。</p>
<p>我看的只是uch2.0的预览版，估计正式版放出的时候，这些问题会有所改善。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/08/17/%e5%af%b9ucenter-home%e7%9a%84%e4%b8%80%e7%82%b9%e7%9c%8b%e6%b3%95.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>Google便签功能曾经崩溃过</title>
		<link>http://www.sunboyu.cn/2009/08/14/google%e4%be%bf%e7%ad%be%e5%8a%9f%e8%83%bd%e6%9b%be%e7%bb%8f%e5%b4%a9%e6%ba%83%e8%bf%87.shtml</link>
		<comments>http://www.sunboyu.cn/2009/08/14/google%e4%be%bf%e7%ad%be%e5%8a%9f%e8%83%bd%e6%9b%be%e7%bb%8f%e5%b4%a9%e6%ba%83%e8%bf%87.shtml#comments</comments>
		<pubDate>Fri, 14 Aug 2009 14:51:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=947</guid>
		<description><![CDATA[自从google取消了首页登录，我用google便签就很少了，不知道他们战略目的是什么。
今天突然想到里边一条信息存档，上去查看，居然数据被回滚了（我有版本记录）。
我琢磨着应该是google的服务出了一次大问题，为了掩人耳目，把相关服务给屏蔽了。
对于技术失误，还要抱着容忍的态度去看待。
]]></description>
			<content:encoded><![CDATA[<p>自从google取消了首页登录，我用google便签就很少了，不知道他们战略目的是什么。</p>
<p>今天突然想到里边一条信息存档，上去查看，居然数据被回滚了（我有版本记录）。</p>
<p>我琢磨着应该是google的服务出了一次大问题，为了掩人耳目，把相关服务给屏蔽了。</p>
<p>对于技术失误，还要抱着容忍的态度去看待。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/08/14/google%e4%be%bf%e7%ad%be%e5%8a%9f%e8%83%bd%e6%9b%be%e7%bb%8f%e5%b4%a9%e6%ba%83%e8%bf%87.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>最近的总结</title>
		<link>http://www.sunboyu.cn/2009/08/13/%e6%9c%80%e8%bf%91%e7%9a%84%e6%80%bb%e7%bb%93.shtml</link>
		<comments>http://www.sunboyu.cn/2009/08/13/%e6%9c%80%e8%bf%91%e7%9a%84%e6%80%bb%e7%bb%93.shtml#comments</comments>
		<pubDate>Thu, 13 Aug 2009 14:04:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[感悟]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=945</guid>
		<description><![CDATA[1、相信团队的力量是无穷的，就好像组队打怪升级快。
2、不提倡个人英雄主义，一个人打boss一般的结果是over
3、分工合作，发挥长处。
4、集中精力做事情，稳下心来，事半功倍。
5、相信自己的实力，勇敢向前。
6、人都是善良的，世界多么美好。
7、同一个事情，同一个梦想。
8、大鱼大肉会长小肚子。
9、运动得坚持，人的耐性其实是表现在各个方面，坚持运动，还得坚持学习。
10、还有很多，因为数据库很贵，不多浪费。
11、做事想周全。
]]></description>
			<content:encoded><![CDATA[<p>1、相信团队的力量是无穷的，就好像组队打怪升级快。</p>
<p>2、不提倡个人英雄主义，一个人打boss一般的结果是over</p>
<p>3、分工合作，发挥长处。</p>
<p>4、集中精力做事情，稳下心来，事半功倍。</p>
<p>5、相信自己的实力，勇敢向前。</p>
<p>6、人都是善良的，世界多么美好。</p>
<p>7、同一个事情，同一个梦想。</p>
<p>8、大鱼大肉会长小肚子。</p>
<p>9、运动得坚持，人的耐性其实是表现在各个方面，坚持运动，还得坚持学习。</p>
<p>10、还有很多，因为数据库很贵，不多浪费。</p>
<p>11、做事想周全。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/08/13/%e6%9c%80%e8%bf%91%e7%9a%84%e6%80%bb%e7%bb%93.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>找回firefox的标签点击关闭功能</title>
		<link>http://www.sunboyu.cn/2009/08/09/%e6%89%be%e5%9b%9efirefox%e7%9a%84%e6%a0%87%e7%ad%be%e7%82%b9%e5%87%bb%e5%85%b3%e9%97%ad%e5%8a%9f%e8%83%bd.shtml</link>
		<comments>http://www.sunboyu.cn/2009/08/09/%e6%89%be%e5%9b%9efirefox%e7%9a%84%e6%a0%87%e7%ad%be%e7%82%b9%e5%87%bb%e5%85%b3%e9%97%ad%e5%8a%9f%e8%83%bd.shtml#comments</comments>
		<pubDate>Sun, 09 Aug 2009 07:16:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[技术存档]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=943</guid>
		<description><![CDATA[最近安装了最新版firefox，发现一个很重要的功能没了，双击标签关闭的功能没了，寻找相关的配置也没有。
后发现有些机器的版本可以，有些不可以，详细比较后，发现原来是中国版的才有这个功能。
后安装中国版后此功能再现。
我一直认为这个功能很不错，遨游这类浏览器基本也是标配功能，而国际版的为什么就没有？
]]></description>
			<content:encoded><![CDATA[<p>最近安装了最新版firefox，发现一个很重要的功能没了，双击标签关闭的功能没了，寻找相关的配置也没有。</p>
<p>后发现有些机器的版本可以，有些不可以，详细比较后，发现原来是中国版的才有这个功能。</p>
<p>后安装中国版后此功能再现。</p>
<p>我一直认为这个功能很不错，遨游这类浏览器基本也是标配功能，而国际版的为什么就没有？</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/08/09/%e6%89%be%e5%9b%9efirefox%e7%9a%84%e6%a0%87%e7%ad%be%e7%82%b9%e5%87%bb%e5%85%b3%e9%97%ad%e5%8a%9f%e8%83%bd.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>向所有我的主机用户说抱歉</title>
		<link>http://www.sunboyu.cn/2009/08/08/%e5%90%91%e6%89%80%e6%9c%89%e6%88%91%e7%9a%84%e4%b8%bb%e6%9c%ba%e7%94%a8%e6%88%b7%e8%af%b4%e6%8a%b1%e6%ad%89.shtml</link>
		<comments>http://www.sunboyu.cn/2009/08/08/%e5%90%91%e6%89%80%e6%9c%89%e6%88%91%e7%9a%84%e4%b8%bb%e6%9c%ba%e7%94%a8%e6%88%b7%e8%af%b4%e6%8a%b1%e6%ad%89.shtml#comments</comments>
		<pubDate>Sat, 08 Aug 2009 02:52:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[相当拍砖]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=939</guid>
		<description><![CDATA[由于机房频繁掉电，我的服务器在跟IDC销售协商后办理了退款。此次事故是由于经济的原因，选择了一个质量比较差的机房而导致。虽然本人提供免费的空间，但没有保障带宽质量，我深感抱歉。
最近本人正在寻求新的IDC，同时也在关注一些合作者，希望能够免费为广大网民提供带宽。
此致
一个程序猿
]]></description>
			<content:encoded><![CDATA[<p>由于机房频繁掉电，我的服务器在跟IDC销售协商后办理了退款。此次事故是由于经济的原因，选择了一个质量比较差的机房而导致。虽然本人提供免费的空间，但没有保障带宽质量，我深感抱歉。</p>
<p>最近本人正在寻求新的IDC，同时也在关注一些合作者，希望能够免费为广大网民提供带宽。</p>
<p>此致</p>
<p>一个程序猿</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/08/08/%e5%90%91%e6%89%80%e6%9c%89%e6%88%91%e7%9a%84%e4%b8%bb%e6%9c%ba%e7%94%a8%e6%88%b7%e8%af%b4%e6%8a%b1%e6%ad%89.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>剑侠世界新手试玩</title>
		<link>http://www.sunboyu.cn/2009/08/08/%e5%89%91%e4%be%a0%e4%b8%96%e7%95%8c%e6%96%b0%e6%89%8b%e8%af%95%e7%8e%a9.shtml</link>
		<comments>http://www.sunboyu.cn/2009/08/08/%e5%89%91%e4%be%a0%e4%b8%96%e7%95%8c%e6%96%b0%e6%89%8b%e8%af%95%e7%8e%a9.shtml#comments</comments>
		<pubDate>Sat, 08 Aug 2009 01:54:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=937</guid>
		<description><![CDATA[剑侠世界是金山最近很火爆的游戏，昨天从公司局域网拷来，安装后，华丽的界面的确能吸引人跃跃欲试。
游戏，我感觉很多地方设计的都像剑侠情缘单机版-我是剑侠情缘的正版老玩家，所以很容易上手。刚开始上来并不像原来的游戏一样上来就打怪升级，而是去做一些任务，在做任务的同事，不断熟悉游戏操作，还可以升级，度过郁闷的新手期。
游戏很多细节充分为玩家考虑，比如寻人寻路，都是一键操作了，减轻了玩家操作复杂度，很照顾了我们这些懒人。
玩了几个小时，就升到十二级了，不过我的速度应该是满了。中间我去打怪升级了。其实前期打怪升级不如做任务升级快。
迷上这个游戏，并不是因为他是网络游戏，而是延续了我对剑仙情缘的感情，不过过两天也许切换到剑侠情缘网络版，我势做人民币玩家，但不知道游戏是否收费……
]]></description>
			<content:encoded><![CDATA[<p>剑侠世界是金山最近很火爆的游戏，昨天从公司局域网拷来，安装后，华丽的界面的确能吸引人跃跃欲试。</p>
<p>游戏，我感觉很多地方设计的都像剑侠情缘单机版-我是剑侠情缘的正版老玩家，所以很容易上手。刚开始上来并不像原来的游戏一样上来就打怪升级，而是去做一些任务，在做任务的同事，不断熟悉游戏操作，还可以升级，度过郁闷的新手期。</p>
<p>游戏很多细节充分为玩家考虑，比如寻人寻路，都是一键操作了，减轻了玩家操作复杂度，很照顾了我们这些懒人。</p>
<p>玩了几个小时，就升到十二级了，不过我的速度应该是满了。中间我去打怪升级了。其实前期打怪升级不如做任务升级快。</p>
<p>迷上这个游戏，并不是因为他是网络游戏，而是延续了我对剑仙情缘的感情，不过过两天也许切换到剑侠情缘网络版，我势做人民币玩家，但不知道游戏是否收费……</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/08/08/%e5%89%91%e4%be%a0%e4%b8%96%e7%95%8c%e6%96%b0%e6%89%8b%e8%af%95%e7%8e%a9.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>金山一日</title>
		<link>http://www.sunboyu.cn/2009/08/06/%e9%87%91%e5%b1%b1%e4%b8%80%e6%97%a5.shtml</link>
		<comments>http://www.sunboyu.cn/2009/08/06/%e9%87%91%e5%b1%b1%e4%b8%80%e6%97%a5.shtml#comments</comments>
		<pubDate>Thu, 06 Aug 2009 15:23:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=933</guid>
		<description><![CDATA[虽然头很清楚的告诉我，不用写工作日志了，不过我还是希望把每天的事情写个记录。
今天是我第三次冒雨至金山，虽然只是小雨。我到金山，颇有水漫金山的戏剧色彩，三次面试，两次都是瓢泼大雨-可惜我还是来了。
等待、入职、领设备、熟悉同事，一切皆为一个拥有国际化水平的优秀公司。人多就是好，单一个部门的零碎笔记就够我看好几天的了。翻阅公共文档，了解公司制度，顺便看看一些技术文档，开发规范之类。(顺便介绍一下,碰见不少大家熟悉的牛人，包括s135的博主)
这是我第一次拥有全套的正版软件，很脸红，的确第一次。不过我还是被无情得BS了，我的机器初始化的时候，谁给我装了个正版的Office！！结果，打开一个word文档的时候，被同事与重深长得教育了-不要忘记，我们是金山的人，我们有WPS。
最近网站系统正在切换，赶上了加班，虽然给我一点简单的事情，但还是感觉团队力量的强大。无论什么事情都有人在背后支持你。
将近10点半才下班，这是我半年来第一次加班，很有感觉。临走，看见一个哥们抱着铺盖卷走进一间会议室……
明天他几点起床？
]]></description>
			<content:encoded><![CDATA[<p>虽然头很清楚的告诉我，不用写工作日志了，不过我还是希望把每天的事情写个记录。</p>
<p>今天是我第三次冒雨至金山，虽然只是小雨。我到金山，颇有水漫金山的戏剧色彩，三次面试，两次都是瓢泼大雨-可惜我还是来了。</p>
<p>等待、入职、领设备、熟悉同事，一切皆为一个拥有国际化水平的优秀公司。人多就是好，单一个部门的零碎笔记就够我看好几天的了。翻阅公共文档，了解公司制度，顺便看看一些技术文档，开发规范之类。(顺便介绍一下,碰见不少大家熟悉的牛人，包括s135的博主)</p>
<p>这是我第一次拥有全套的正版软件，很脸红，的确第一次。不过我还是被无情得BS了，我的机器初始化的时候，谁给我装了个正版的Office！！结果，打开一个word文档的时候，被同事与重深长得教育了-不要忘记，我们是金山的人，我们有WPS。</p>
<p>最近网站系统正在切换，赶上了加班，虽然给我一点简单的事情，但还是感觉团队力量的强大。无论什么事情都有人在背后支持你。</p>
<p>将近10点半才下班，这是我半年来第一次加班，很有感觉。临走，看见一个哥们抱着铺盖卷走进一间会议室……</p>
<p>明天他几点起床？</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/08/06/%e9%87%91%e5%b1%b1%e4%b8%80%e6%97%a5.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>难得的一份安宁</title>
		<link>http://www.sunboyu.cn/2009/08/05/%e9%9a%be%e5%be%97%e7%9a%84%e4%b8%80%e4%bb%bd%e5%ae%89%e5%ae%81.shtml</link>
		<comments>http://www.sunboyu.cn/2009/08/05/%e9%9a%be%e5%be%97%e7%9a%84%e4%b8%80%e4%bb%bd%e5%ae%89%e5%ae%81.shtml#comments</comments>
		<pubDate>Wed, 05 Aug 2009 02:07:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[相当拍砖]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=931</guid>
		<description><![CDATA[最近原单位离职了，这两天无所事事，推开了一切聚会，推了一切朋友邀请的帮忙，也推脱了一切可能的外快。
每天来到清华旁边的避风塘，一杯茶，一个笔记本，打发一天的时间。虽然感觉时间还是很快，但忙碌中终于有了一丝的清闲。
不用去想跟别人的扯皮，也暂时忘了原公司拖欠我的工资。一切彷佛都与我我关，我只是这个世界的一个过客。
想到明天又要去新公司报告，无比珍惜这来之不易的闲暇。
天很阴，就想当前的经济。我坐在一个靠窗户的位置，享受凉爽潮湿的风。
这种感觉，真的就像在家一样。 
]]></description>
			<content:encoded><![CDATA[<p>最近原单位离职了，这两天无所事事，推开了一切聚会，推了一切朋友邀请的帮忙，也推脱了一切可能的外快。</p>
<p>每天来到清华旁边的避风塘，一杯茶，一个笔记本，打发一天的时间。虽然感觉时间还是很快，但忙碌中终于有了一丝的清闲。</p>
<p>不用去想跟别人的扯皮，也暂时忘了原公司拖欠我的工资。一切彷佛都与我我关，我只是这个世界的一个过客。</p>
<p>想到明天又要去新公司报告，无比珍惜这来之不易的闲暇。</p>
<p>天很阴，就想当前的经济。我坐在一个靠窗户的位置，享受凉爽潮湿的风。</p>
<p>这种感觉，真的就像在家一样。 </p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/08/05/%e9%9a%be%e5%be%97%e7%9a%84%e4%b8%80%e4%bb%bd%e5%ae%89%e5%ae%81.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>Discuz一些乱码错误的总结</title>
		<link>http://www.sunboyu.cn/2009/08/03/discuz%e4%b8%80%e4%ba%9b%e4%b9%b1%e7%a0%81%e9%94%99%e8%af%af%e7%9a%84%e6%80%bb%e7%bb%93.shtml</link>
		<comments>http://www.sunboyu.cn/2009/08/03/discuz%e4%b8%80%e4%ba%9b%e4%b9%b1%e7%a0%81%e9%94%99%e8%af%af%e7%9a%84%e6%80%bb%e7%bb%93.shtml#comments</comments>
		<pubDate>Mon, 03 Aug 2009 14:19:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/2009/08/03/discuz%e4%b8%80%e4%ba%9b%e4%b9%b1%e7%a0%81%e9%94%99%e8%af%af%e7%9a%84%e6%80%bb%e7%bb%93.shtml</guid>
		<description><![CDATA[最近用Discuz6.0，在用到分类信息功能的时候，自建模板总是出现错误，仔细跟踪，发现是个别模板编码错误。我用的UTF-8版本，有不少文件里用了中文字符，而且是gbk编码，造成了这种错误。
我google此类信息，有不少问题都出现在了编码上，建议网友在使用的时候，发现编码错误，仔细跟踪一下，找出模板。大部分的问题基本能以此方式解决。
]]></description>
			<content:encoded><![CDATA[<p>最近用Discuz6.0，在用到分类信息功能的时候，自建模板总是出现错误，仔细跟踪，发现是个别模板编码错误。我用的UTF-8版本，有不少文件里用了中文字符，而且是gbk编码，造成了这种错误。</p>
<p>我google此类信息，有不少问题都出现在了编码上，建议网友在使用的时候，发现编码错误，仔细跟踪一下，找出模板。大部分的问题基本能以此方式解决。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/08/03/discuz%e4%b8%80%e4%ba%9b%e4%b9%b1%e7%a0%81%e9%94%99%e8%af%af%e7%9a%84%e6%80%bb%e7%bb%93.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>一个备份mysql的脚本，很简单</title>
		<link>http://www.sunboyu.cn/2009/07/29/%e4%b8%80%e4%b8%aa%e5%a4%87%e4%bb%bdmysql%e7%9a%84%e8%84%9a%e6%9c%ac%ef%bc%8c%e5%be%88%e7%ae%80%e5%8d%95.shtml</link>
		<comments>http://www.sunboyu.cn/2009/07/29/%e4%b8%80%e4%b8%aa%e5%a4%87%e4%bb%bdmysql%e7%9a%84%e8%84%9a%e6%9c%ac%ef%bc%8c%e5%be%88%e7%ae%80%e5%8d%95.shtml#comments</comments>
		<pubDate>Wed, 29 Jul 2009 13:43:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[MYSQL]]></category>

		<category><![CDATA[mysql]]></category>

		<category><![CDATA[备份]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=927</guid>
		<description><![CDATA[帮朋友维护服务器的时候，习惯性得检查各项服务和维护，偶然间发现了这个脚本，冒着被BS的风险分享给大家，希望大家捧个钱场，施舍给老衲几万块钱买套房。
@echo off
C:
CD &#34;C:\Program Files\WinRAR&#34;
&#160;
net stop Mysql
winrar.exe a -ag&#34;-[YYYY-MM-DD-HH-MM-SS]&#34; -k -r -s -ibck -inul &#34;D:\MYSQL备份生成的文件.rar&#34; &#34;E:\bak\data\*.*&#34;
net start Mysql
]]></description>
			<content:encoded><![CDATA[<p>帮朋友维护服务器的时候，习惯性得检查各项服务和维护，偶然间发现了这个脚本，冒着被BS的风险分享给大家，希望大家捧个钱场，施舍给老衲几万块钱买套房。</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">@echo off</li>
<li>C:</li>
<li>CD &quot;C:\Program Files\WinRAR&quot;</li>
<li>&nbsp;</li>
<li>net stop Mysql</li>
<li>winrar.exe a -ag&quot;-[YYYY-MM-DD-HH-MM-SS]&quot; -k -r -s -ibck -inul &quot;D:\MYSQL备份生成的文件.rar&quot; &quot;E:\bak\data\*.*&quot;</li>
<li>net start Mysql</li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/07/29/%e4%b8%80%e4%b8%aa%e5%a4%87%e4%bb%bdmysql%e7%9a%84%e8%84%9a%e6%9c%ac%ef%bc%8c%e5%be%88%e7%ae%80%e5%8d%95.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>翻车了</title>
		<link>http://www.sunboyu.cn/2009/07/29/%e7%bf%bb%e8%bd%a6%e4%ba%86.shtml</link>
		<comments>http://www.sunboyu.cn/2009/07/29/%e7%bf%bb%e8%bd%a6%e4%ba%86.shtml#comments</comments>
		<pubDate>Wed, 29 Jul 2009 04:10:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<category><![CDATA[翻车]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=924</guid>
		<description><![CDATA[中午酷热难耐，下楼调车+玩车。
好久没调车，车闸不灵了，结果，拿着我18块钱的工具组瞎调一气，车闸异常灵敏。
结果，在一个甩尾动作的时候，速度骤降，车子前栽，车从我头上飞过，而我居然只擦破点外皮。
起身，对着旁边乘凉的大叔大妈们微笑……一帮人张着大嘴。
哥玩的不是单车，是寂寞！
]]></description>
			<content:encoded><![CDATA[<p>中午酷热难耐，下楼调车+玩车。</p>
<p>好久没调车，车闸不灵了，结果，拿着我18块钱的工具组瞎调一气，车闸异常灵敏。</p>
<p>结果，在一个甩尾动作的时候，速度骤降，车子前栽，车从我头上飞过，而我居然只擦破点外皮。</p>
<p>起身，对着旁边乘凉的大叔大妈们微笑……一帮人张着大嘴。</p>
<p>哥玩的不是单车，是寂寞！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/07/29/%e7%bf%bb%e8%bd%a6%e4%ba%86.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>如何选择一个称心的IDC</title>
		<link>http://www.sunboyu.cn/2009/07/28/%e5%a6%82%e4%bd%95%e9%80%89%e6%8b%a9%e4%b8%80%e4%b8%aa%e7%a7%b0%e5%bf%83%e7%9a%84idc.shtml</link>
		<comments>http://www.sunboyu.cn/2009/07/28/%e5%a6%82%e4%bd%95%e9%80%89%e6%8b%a9%e4%b8%80%e4%b8%aa%e7%a7%b0%e5%bf%83%e7%9a%84idc.shtml#comments</comments>
		<pubDate>Tue, 28 Jul 2009 03:07:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[感悟]]></category>

		<category><![CDATA[IDC]]></category>

		<category><![CDATA[选购]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=914</guid>
		<description><![CDATA[最近跟我那个成都的某个IDC机房扯皮，扯得我是下三滥的手段都想用了，不过看在还混在这个圈子的面子上，没跟他们使损招。我最看不惯的就是那些销售，以为技术人员都是木头，都是榆木疙瘩。凭借一张三寸不烂之舌就想敷衍了事。套用一句流行语：咱民工玩的是风度，不是阴沟。
其实自打毕业干IT这行，从买51.net的虚拟主机到现在，接触的IDC是不下几十家，出入过的机房也有十几个之多，当然碰到的一些扯皮的事情当然就更多了。写这篇文章，就是把一些细节纰漏出来。不针对某个无良IDC，当然也不是给哪个IDC做广告，都是自己经验之谈。也许有理解和认识的错误，欢迎朋友和同行们指正。
因为虚拟主机已经不常用，我说的主要是服务器托管租用方面，我的经历主要是北京范围内。
首先是如何找一个优秀的IDC。IDC分一线二线三线，就好像买车分几个系列一样。如果你想拥有军用悍马的性能，那十个奥拓的价格也不行。如果你真买了10万以下的车，那半路抛锚或者高速上被车皮挤死也别太抱怨。一线IDC主要集中了国内顶尖的网络公司：腾讯，搜狐，新浪，盛大，完美之类的大客户。他们的价格绝对让你乍舌，但质量也能有你想象那么高。你上这几家的网站，有几次断网，有几次感觉速度慢了。而二线的IDC就有大多数也许是发展中的网站，比较拮据的，或者一些知名客户但需要价格比比较高的流量的。三线的IDC，就难说了，小的不能再小的公司，一些个人网站，垃圾站，或者，就是皮包公司。
所以，寻找IDC，先问问销售，贵机房有什么知名的大客户，给个ip或者地址看看（当然，要说是搜狐的某个分站，不用他说，你自己就找到了）。这时，你可以根据销售提供的客户的质量来评价这个机房的档次。
当你选定一个机房后，测试是必须的——三天最少。当你的机器上架后，首先要做的，就是测试带宽，探测网络结构，测试稳定性，甚至网管反应（有点破坏性测试）。测试带宽，要测试上行和下行的带宽，是否能跑足。如果没有从三层以下限速，你尝试持续高带宽，网管有没有反应。（不要期望你能跑那么大的带宽，你跑的大，别的客户也能跑那么大，抢来抢去，自己正常业务也就受损了）。探测下你ip段的网络拓扑，是否划分vlan，你的vlan里有没有windows机器（防止arp，我一般用linux）。最后关机，你看网管是否有反应。我曾经用过一线IDC的带宽，但是网关配置出错，造成流量为0，结果我们刚出机房，网管就打来了电话。这样的服务，你能不感动么。
合同：不管什么业务，合同是要签的。这方面我很无奈，我可以直言不讳得说，做这行的都是流氓，因为合同上基本都是霸王条款。非可控的意外，他们基本都不赔偿。可以说，基本出现的故障，都是他们不可控的：大网出现意外，比如光纤让铲车铲了，或者市电被掐了。当然他们不可控。不过一定要记住，机房设计是必须把意外情况设计进去的，UPS、柴油发电机组是机房必须的设备，这也是你服务的一部分，如果这些都没有，那机房的价值就很低（带宽，电力只是成本的一部分，一部分成本用在了对于意外情况的冗余上）。所以，最好能让他们补充：何种电力冗余，何种网络冗余，意外故障如何赔偿。
实地勘察：光有合同不行，最近我碰到的事情很生气。机房电力出了问题（他们居然走普通市电而没有备用电力），UPS是有，没接到你机器上。结果断电，造成我mysql故障而无法恢复，我正在跟他们交涉。记得问问现场网管的情况，说两个比较常见的问题咨询一下。另外问问他们的收入情况。别小看这些细节：我的linux系统，让网管给关系，网管居然说不会linux。汗得我差点从自行车上载下来。去机房，多看看设备：电力，空调，防火，还有就是机房是否整齐，管理是否到位。看看机房后边的线是否都清晰（曾经在丰台一个机房，一下子就把邻居的电源拔了……）。
好的机房，不仅是硬件资源好，软件也不可缺的。当然软件不是指安装的软件，而是机房的配套设施。去的时候，网管都会自带工具软件。测试的时候建议让机房去做，比如，借一个移动光驱，借一张光盘，下载一个iso去刻盘，打一颗网线，让现场的技术给帮忙之类的事情。别怕机房的人BS你，这只是去感觉一下你应该有的服务。
补充1：上文所说测试上下行带宽问题，事出有因：大部分的专业idc，上下行给的都是一致的，但个别的idc，把下行带宽克扣出来，去给一些小区或者单位做接入，这样达到了更高的利润，但这样给一些下行需求高的客户带来了问题。所以我提到了这点。（学过通讯技术的应该都知道带宽复用这么一个技术，大家可以google一下。）
说了半天，这些经验的确都是自己交学费的成果，希望把这些细节分享给大家，欢迎大家交流，可以加我的qq  176300676  或者msn sunboyu@gmail.com
当然也可以加入lamp大家庭  msn用户加  lamper@live.cn 为好友
本文为作者原创，转载须注明出处。  http://www.sunboyu.cn/2009/07/28/%E5%A6%82%E4%BD%95%E9%80%89%E6%8B%A9%E4%B8%80%E4%B8%AA%E7%A7%B0%E5%BF%83%E7%9A%84idc.shtml
]]></description>
			<content:encoded><![CDATA[<p>最近跟我那个成都的某个IDC机房扯皮，扯得我是下三滥的手段都想用了，不过看在还混在这个圈子的面子上，没跟他们使损招。我最看不惯的就是那些销售，以为技术人员都是木头，都是榆木疙瘩。凭借一张三寸不烂之舌就想敷衍了事。套用一句流行语：咱民工玩的是风度，不是阴沟。</p>
<p>其实自打毕业干IT这行，从买51.net的虚拟主机到现在，接触的IDC是不下几十家，出入过的机房也有十几个之多，当然碰到的一些扯皮的事情当然就更多了。写这篇文章，就是把一些细节纰漏出来。不针对某个无良IDC，当然也不是给哪个IDC做广告，都是自己经验之谈。也许有理解和认识的错误，欢迎朋友和同行们指正。</p>
<p>因为虚拟主机已经不常用，我说的主要是服务器托管租用方面，我的经历主要是北京范围内。</p>
<p>首先是如何找一个优秀的IDC。IDC分一线二线三线，就好像买车分几个系列一样。如果你想拥有军用悍马的性能，那十个奥拓的价格也不行。如果你真买了10万以下的车，那半路抛锚或者高速上被车皮挤死也别太抱怨。一线IDC主要集中了国内顶尖的网络公司：腾讯，搜狐，新浪，盛大，完美之类的大客户。他们的价格绝对让你乍舌，但质量也能有你想象那么高。你上这几家的网站，有几次断网，有几次感觉速度慢了。而二线的IDC就有大多数也许是发展中的网站，比较拮据的，或者一些知名客户但需要价格比比较高的流量的。三线的IDC，就难说了，小的不能再小的公司，一些个人网站，垃圾站，或者，就是皮包公司。</p>
<p>所以，寻找IDC，先问问销售，贵机房有什么知名的大客户，给个ip或者地址看看（当然，要说是搜狐的某个分站，不用他说，你自己就找到了）。这时，你可以根据销售提供的客户的质量来评价这个机房的档次。</p>
<p>当你选定一个机房后，测试是必须的——三天最少。当你的机器上架后，首先要做的，就是测试带宽，探测网络结构，测试稳定性，甚至网管反应（有点破坏性测试）。测试带宽，要测试上行和下行的带宽，是否能跑足。如果没有从三层以下限速，你尝试持续高带宽，网管有没有反应。（不要期望你能跑那么大的带宽，你跑的大，别的客户也能跑那么大，抢来抢去，自己正常业务也就受损了）。探测下你ip段的网络拓扑，是否划分vlan，你的vlan里有没有windows机器（防止arp，我一般用linux）。最后关机，你看网管是否有反应。我曾经用过一线IDC的带宽，但是网关配置出错，造成流量为0，结果我们刚出机房，网管就打来了电话。这样的服务，你能不感动么。</p>
<p>合同：不管什么业务，合同是要签的。这方面我很无奈，我可以直言不讳得说，做这行的都是流氓，因为合同上基本都是霸王条款。非可控的意外，他们基本都不赔偿。可以说，基本出现的故障，都是他们不可控的：大网出现意外，比如光纤让铲车铲了，或者市电被掐了。当然他们不可控。不过一定要记住，机房设计是必须把意外情况设计进去的，UPS、柴油发电机组是机房必须的设备，这也是你服务的一部分，如果这些都没有，那机房的价值就很低（带宽，电力只是成本的一部分，一部分成本用在了对于意外情况的冗余上）。所以，最好能让他们补充：何种电力冗余，何种网络冗余，意外故障如何赔偿。</p>
<p>实地勘察：光有合同不行，最近我碰到的事情很生气。机房电力出了问题（他们居然走普通市电而没有备用电力），UPS是有，没接到你机器上。结果断电，造成我mysql故障而无法恢复，我正在跟他们交涉。记得问问现场网管的情况，说两个比较常见的问题咨询一下。另外问问他们的收入情况。别小看这些细节：我的linux系统，让网管给关系，网管居然说不会linux。汗得我差点从自行车上载下来。去机房，多看看设备：电力，空调，防火，还有就是机房是否整齐，管理是否到位。看看机房后边的线是否都清晰（曾经在丰台一个机房，一下子就把邻居的电源拔了……）。</p>
<p>好的机房，不仅是硬件资源好，软件也不可缺的。当然软件不是指安装的软件，而是机房的配套设施。去的时候，网管都会自带工具软件。测试的时候建议让机房去做，比如，借一个移动光驱，借一张光盘，下载一个iso去刻盘，打一颗网线，让现场的技术给帮忙之类的事情。别怕机房的人BS你，这只是去感觉一下你应该有的服务。</p>
<p>补充1：上文所说测试上下行带宽问题，事出有因：大部分的专业idc，上下行给的都是一致的，但个别的idc，把下行带宽克扣出来，去给一些小区或者单位做接入，这样达到了更高的利润，但这样给一些下行需求高的客户带来了问题。所以我提到了这点。（学过通讯技术的应该都知道带宽复用这么一个技术，大家可以google一下。）</p>
<p>说了半天，这些经验的确都是自己交学费的成果，希望把这些细节分享给大家，欢迎大家交流，可以加我的qq  176300676  或者msn sunboyu@gmail.com</p>
<p>当然也可以加入lamp大家庭  msn用户加  lamper@live.cn 为好友</p>
<p>本文为作者原创，转载须注明出处。  http://www.sunboyu.cn/2009/07/28/%E5%A6%82%E4%BD%95%E9%80%89%E6%8B%A9%E4%B8%80%E4%B8%AA%E7%A7%B0%E5%BF%83%E7%9A%84idc.shtml</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/07/28/%e5%a6%82%e4%bd%95%e9%80%89%e6%8b%a9%e4%b8%80%e4%b8%aa%e7%a7%b0%e5%bf%83%e7%9a%84idc.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>smarty分页程序，模板小改进</title>
		<link>http://www.sunboyu.cn/2009/07/27/smarty%e5%88%86%e9%a1%b5%e7%a8%8b%e5%ba%8f%ef%bc%8c%e6%a8%a1%e6%9d%bf%e5%b0%8f%e6%94%b9%e8%bf%9b.shtml</link>
		<comments>http://www.sunboyu.cn/2009/07/27/smarty%e5%88%86%e9%a1%b5%e7%a8%8b%e5%ba%8f%ef%bc%8c%e6%a8%a1%e6%9d%bf%e5%b0%8f%e6%94%b9%e8%bf%9b.shtml#comments</comments>
		<pubDate>Mon, 27 Jul 2009 07:11:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[原创技术]]></category>

		<category><![CDATA[smarty]]></category>

		<category><![CDATA[分页]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=899</guid>
		<description><![CDATA[增加了：跳转到第几页的功能
模板部分
&#60;div id=&#34;page&#34;&#62;
&#60;table&#62;
&#160;&#160; &#160;&#60;tr&#62;
	&#160; &#160; &#60;td&#62;
		共{{$page.count}}条数据 每页{{$page.pagesize}}条&#160; 共{{$page.pagecount}}页 当前第{{$page.page}}页
&#160;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&#60;!-- 新加的跳转功能&#160; start --&#62;
&#160;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;跳转到第 
&#160;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&#60;select onchange=&#34;window.location.href='{{$page.baseurl}}&#38;page='+this.options[this.selectedIndex].value&#34;&#62;
&#160;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;{{section name=pagejump loop=4 start=0 step=1 max=4}}
&#160;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&#60;option value=&#34;{{$smarty.section.pagejump.index+1}}&#34;&#62;{{$smarty.section.pagejump.index+1}}&#60;/option&#62;
&#160;&#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>增加了：跳转到第几页的功能</p>
<p>模板部分</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">&lt;div id=&quot;page&quot;&gt;</li>
<li>&lt;table&gt;</li>
<li>&nbsp;&nbsp; &nbsp;&lt;tr&gt;</li>
<li>	&nbsp; &nbsp; &lt;td&gt;</li>
<li>		共{{$page.count}}条数据 每页{{$page.pagesize}}条&nbsp; 共{{$page.pagecount}}页 当前第{{$page.page}}页</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;!-- 新加的跳转功能&nbsp; start --&gt;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;跳转到第 </li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;select onchange=&quot;window.location.href='{{$page.baseurl}}&amp;page='+this.options[this.selectedIndex].value&quot;&gt;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{{section name=pagejump loop=4 start=0 step=1 max=4}}</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;option value=&quot;{{$smarty.section.pagejump.index+1}}&quot;&gt;{{$smarty.section.pagejump.index+1}}&lt;/option&gt;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{{/section}}</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;/select&gt; 页</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;!-- 新加的跳转功能&nbsp; start --&gt;</li>
<li>		&lt;/td&gt;</li>
<li>		&lt;td&gt;</li>
<li>		{{if $page.pagecount&gt;1}}</li>
<li>		{{if $page.first eq 1}}</li>
<li>		&lt;a href=&quot;{{$page.baseurl}}&quot;&gt;首页&lt;/a&gt;</li>
<li>		{{else}}</li>
<li>		首页</li>
<li>		{{/if}}</li>
<li>		{{if $page.pre eq 1}}</li>
<li>		&lt;a href=&quot;{{$page.baseurl}}&amp;page={{$page.page-1}}&quot;&gt;上一页&lt;/a&gt;</li>
<li>		{{else}}</li>
<li>		上一页</li>
<li>		{{/if}}</li>
<li>		{{foreach from=$page.pagelist item=vols}}</li>
<li>		&nbsp; &nbsp; {{if ($vols.page &gt; 0 ) &amp;&amp; ($vols.page &lt; = $page.pagecount) }}</li>
<li>				{{if $vols.link eq 1}}</li>
<li>				&lt;a href=&quot;{{$page.baseurl}}&amp;page={{$vols.page}}&quot;&gt;[{{$vols.page}}]</li>
<li>				{{else}}</li>
<li>				[{{$vols.page}}]</li>
<li>				{{/if}}</li>
<li>			{{/if}}</li>
<li>		{{/foreach}}</li>
<li>		{{if $page.next eq 1}}</li>
<li>		&lt;a href=&quot;{{$page.baseurl|default:&quot;?&quot;}}&amp;page={{$page.page+1}}&quot;&gt;下一页&lt;/a&gt;</li>
<li>		{{else}}</li>
<li>		下一页</li>
<li>		{{/if}}</li>
<li>		{{if $page.last eq 1}}</li>
<li>		&lt;a href=&quot;{{$page.baseurl|default:&quot;?&quot;}}&amp;page={{$page.pagecount}}&quot;&gt;尾页&lt;/a&gt;</li>
<li>		{{else}}</li>
<li>		尾页</li>
<li>		{{/if}}</li>
<li>		{{/if}}</li>
<li>		&lt;/td&gt;</li>
<li>	&lt;/tr&gt;</li>
<li>&lt;/table&gt;</li>
<li>&lt;/div&gt;</li></ol></div>
<p>其实我在做的时候又出现个问题，如果是url重写了，如何来做这个baseurl变量。问题解决方法是，把url当做模板，比如/blog/index/%d</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/07/27/smarty%e5%88%86%e9%a1%b5%e7%a8%8b%e5%ba%8f%ef%bc%8c%e6%a8%a1%e6%9d%bf%e5%b0%8f%e6%94%b9%e8%bf%9b.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>使用成语的文字验证码</title>
		<link>http://www.sunboyu.cn/2009/07/24/%e4%bd%bf%e7%94%a8%e6%88%90%e8%af%ad%e7%9a%84%e6%96%87%e5%ad%97%e9%aa%8c%e8%af%81%e7%a0%81.shtml</link>
		<comments>http://www.sunboyu.cn/2009/07/24/%e4%bd%bf%e7%94%a8%e6%88%90%e8%af%ad%e7%9a%84%e6%96%87%e5%ad%97%e9%aa%8c%e8%af%81%e7%a0%81.shtml#comments</comments>
		<pubDate>Fri, 24 Jul 2009 13:48:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[成语]]></category>

		<category><![CDATA[文字验证码]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=897</guid>
		<description><![CDATA[上次写的nb验证码程序，遭到了大部分人的唾弃，因为我使用了中国汉字全集，而大部分中国人对汉字了解还只能占其一半，也就是四个汉字中经常出现生僻字，造成无法使用。
这次使用成语作为汉字验证码（其实已经发现其他网站再用），则中文用户识别的几率就大得多。
demo:
程序下载:点击下载
]]></description>
			<content:encoded><![CDATA[<p>上次写的nb验证码程序，遭到了大部分人的唾弃，因为我使用了中国汉字全集，而大部分中国人对汉字了解还只能占其一半，也就是四个汉字中经常出现生僻字，造成无法使用。</p>
<p>这次使用成语作为汉字验证码（其实已经发现其他网站再用），则中文用户识别的几率就大得多。</p>
<p>demo:<img class="alignnone" src="http://www.sunboyu.cn/php/wordcode.php" alt="" width="67" height="18" /></p>
<p>程序下载:<a href="/php/nbcodev2.rar">点击下载</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/07/24/%e4%bd%bf%e7%94%a8%e6%88%90%e8%af%ad%e7%9a%84%e6%96%87%e5%ad%97%e9%aa%8c%e8%af%81%e7%a0%81.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>密码保护：不冷静的思考——我要退出了</title>
		<link>http://www.sunboyu.cn/2009/07/24/%e4%b8%8d%e5%86%b7%e9%9d%99%e7%9a%84%e6%80%9d%e8%80%83%e2%80%94%e2%80%94%e6%88%91%e8%a6%81%e9%80%80%e5%87%ba%e4%ba%86.shtml</link>
		<comments>http://www.sunboyu.cn/2009/07/24/%e4%b8%8d%e5%86%b7%e9%9d%99%e7%9a%84%e6%80%9d%e8%80%83%e2%80%94%e2%80%94%e6%88%91%e8%a6%81%e9%80%80%e5%87%ba%e4%ba%86.shtml#comments</comments>
		<pubDate>Fri, 24 Jul 2009 05:58:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[相当拍砖]]></category>

		<category><![CDATA[NP]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=894</guid>
		<description><![CDATA[无法提供任何摘要。这是一篇受保护的文章。]]></description>
			<content:encoded><![CDATA[<form action="http://www.sunboyu.cn/wp-pass.php" method="post">
<p>这是一篇受密码保护的文章。您需要提供访问密码：</p>
<p><label for="pwbox-894">密码：<br />
<input name="post_password" id="pwbox-894" type="password" size="20" /></label><br />
<input type="submit" name="Submit" value="提交" /></p></form>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/07/24/%e4%b8%8d%e5%86%b7%e9%9d%99%e7%9a%84%e6%80%9d%e8%80%83%e2%80%94%e2%80%94%e6%88%91%e8%a6%81%e9%80%80%e5%87%ba%e4%ba%86.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>apache自动生成目录文件列表配置</title>
		<link>http://www.sunboyu.cn/2009/07/22/apache%e8%87%aa%e5%8a%a8%e7%94%9f%e6%88%90%e7%9b%ae%e5%bd%95%e6%96%87%e4%bb%b6%e5%88%97%e8%a1%a8%e9%85%8d%e7%bd%ae.shtml</link>
		<comments>http://www.sunboyu.cn/2009/07/22/apache%e8%87%aa%e5%8a%a8%e7%94%9f%e6%88%90%e7%9b%ae%e5%bd%95%e6%96%87%e4%bb%b6%e5%88%97%e8%a1%a8%e9%85%8d%e7%bd%ae.shtml#comments</comments>
		<pubDate>Wed, 22 Jul 2009 11:13:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[apache列目录]]></category>

		<category><![CDATA[配置]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=880</guid>
		<description><![CDATA[由于种种原因，服务器给卖掉了，因此，我做的源码目录也就没了。这里把该目录的配置属性介绍一下：
&#60;directory /home/sunboyu/www_source.sunboyu.cn&#62;
&#160;&#160; &#160; &#160; &#160;MaxConnPerIP 1
&#160;&#160; &#160; &#160; &#160;ReadmeName foot.html&#160; &#160; &#160; &#160; #页面的头
&#160;&#160; &#160; &#160; &#160;HeaderName top.html&#160; &#160; &#160; &#160; &#160; #页面的脚
&#160;&#160; &#160; &#160; &#160;IndexIgnore top.html foot.html&#160; &#160; #列目录的时候，忽略这些文件
&#160;&#160; &#160; &#160; &#160;ServerSignature Off&#160; &#160; &#160; &#160;#关闭服务器标志
&#160;&#160; &#160; &#160; &#160;IndexOptions FancyIndexing VersionSort FoldersFirst SuppressLastModified NameWidth=* Charset=UTF-8
&#160;&#160; &#160; &#160; &#160;Options FollowSymLinks
&#160;&#160; &#160; &#160; &#160;Options +Indexes
&#160;&#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>由于种种原因，服务器给卖掉了，因此，我做的源码目录也就没了。这里把该目录的配置属性介绍一下：</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">&lt;directory /home/sunboyu/www_source.sunboyu.cn&gt;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;MaxConnPerIP 1</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;ReadmeName foot.html&nbsp; &nbsp; &nbsp; &nbsp; #页面的头</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;HeaderName top.html&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #页面的脚</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;IndexIgnore top.html foot.html&nbsp; &nbsp; #列目录的时候，忽略这些文件</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;ServerSignature Off&nbsp; &nbsp; &nbsp; &nbsp;#关闭服务器标志</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;IndexOptions FancyIndexing VersionSort FoldersFirst SuppressLastModified NameWidth=* Charset=UTF-8</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Options FollowSymLinks</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Options +Indexes</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;AllowOverride all</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Order deny,allow</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Allow from all</li>
<li>&nbsp;&lt;/directory&gt;</li></ol></div>
<p>FancyIndexing 打开列表功能</p>
<p>VersionSort 同一文件不同版本分类列出</p>
<p>FoldersFirst 文件夹优先</p>
<p>SuppressLastModified 禁止列出最后修改时间</p>
<p>NameWidth=* 文件名长度 *当然是全部显示</p>
<p>Charset=UTF-8 页面输出编码</p>
<p>AddIcon /other/icons/exe.gif .bin .exe  给exe bin扩展名添加exe.gif图标</p>
<p>ScanHTMLTitles 如果有html文件，则度html的title为描述</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/07/22/apache%e8%87%aa%e5%8a%a8%e7%94%9f%e6%88%90%e7%9b%ae%e5%bd%95%e6%96%87%e4%bb%b6%e5%88%97%e8%a1%a8%e9%85%8d%e7%bd%ae.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>图片动态缩放PHP与JS算法</title>
		<link>http://www.sunboyu.cn/2009/07/20/%e5%9b%be%e7%89%87%e5%8a%a8%e6%80%81%e7%bc%a9%e6%94%bephp%e4%b8%8ejs%e7%ae%97%e6%b3%95.shtml</link>
		<comments>http://www.sunboyu.cn/2009/07/20/%e5%9b%be%e7%89%87%e5%8a%a8%e6%80%81%e7%bc%a9%e6%94%bephp%e4%b8%8ejs%e7%ae%97%e6%b3%95.shtml#comments</comments>
		<pubDate>Mon, 20 Jul 2009 00:19:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[GD]]></category>

		<category><![CDATA[JS]]></category>

		<category><![CDATA[php]]></category>

		<category><![CDATA[图片缩放]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=875</guid>
		<description><![CDATA[这个算法写好多次了，虽然简单，但每次都得想一次，这里做个备份。
因为GD函数进行缩放，必须有宽和高，而在浏览器中，会自动按照比率调整宽高，所以两个函数稍有区别。
#PHP版
# $s_width&#160; 原图宽
# $s_height 原图高
# $t_width&#160; 目标文件最大宽
# $t_height 目标文件最大高
function ReSizePic( $s_width , $s_height , $t_width , $t_height)
{
	if( $s_width / $s_height &#62; $t_width / $t_height &#38;&#38; $s_width &#62; $t_width)
	{
		$t_height = $s_height * $t_width / $s_width;
		$t_width = $t_width;
	}
	else if( $s_width / $s_height &#62; $t_width / $t_height &#38;&#38; $s_width &#60; = $t_width)
	{
		$t_height = $s_height;
		$t_width&#160; = $s_width;
	}
	else if( $s_width [...]]]></description>
			<content:encoded><![CDATA[<p>这个算法写好多次了，虽然简单，但每次都得想一次，这里做个备份。</p>
<p>因为GD函数进行缩放，必须有宽和高，而在浏览器中，会自动按照比率调整宽高，所以两个函数稍有区别。</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">#PHP版</li>
<li># $s_width&nbsp; 原图宽</li>
<li># $s_height 原图高</li>
<li># $t_width&nbsp; 目标文件最大宽</li>
<li># $t_height 目标文件最大高</li>
<li>function ReSizePic( $s_width , $s_height , $t_width , $t_height)</li>
<li>{</li>
<li>	if( $s_width / $s_height &gt; $t_width / $t_height &amp;&amp; $s_width &gt; $t_width)</li>
<li>	{</li>
<li>		$t_height = $s_height * $t_width / $s_width;</li>
<li>		$t_width = $t_width;</li>
<li>	}</li>
<li>	else if( $s_width / $s_height &gt; $t_width / $t_height &amp;&amp; $s_width &lt; = $t_width)</li>
<li>	{</li>
<li>		$t_height = $s_height;</li>
<li>		$t_width&nbsp; = $s_width;</li>
<li>	}</li>
<li>	else if( $s_width / $s_height &lt; $t_width / $t_height &amp;&amp; $s_height &gt; $t_height)</li>
<li>	{</li>
<li>		$t_width = $s_width*$t_height/$s_height;</li>
<li>		$t_height = $t_height;</li>
<li>	}</li>
<li>	else if( $s_width / $s_height &lt; $t_width / $t_height &amp;&amp; $s_height &lt;= $t_height)</li>
<li>	{</li>
<li>		$t_height = $s_height;</li>
<li>		$t_width&nbsp; = $s_width;</li>
<li>	}</li>
<li>	return array( &quot;width&quot; =&gt; $t_width , &quot;height&quot; =&gt; $t_height );</li>
<li>}</li>
<li>#JS版</li>
<li># obj 图片对象</li>
<li># maxWidth 显示最大宽</li>
<li># maxHeight 显示最大高</li>
<li>function ReSizePic( obj , maxWidth , maxHeight )</li>
<li>{</li>
<li>	if( ( obj.width/obj.height &gt;= maxWidth/maxHeight ) &amp;&amp; obj.width &gt; maxWidth )</li>
<li>	{</li>
<li>		obj.width = maxWidth;</li>
<li>	}</li>
<li>	else if( ( obj.width/obj.height &lt; maxWidth/maxHeight ) &amp;&amp; obj.height &gt; maxHeight )</li>
<li>	{</li>
<li>		obj.height = maxHeight;</li>
<li>	}</li>
<li>}</li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/07/20/%e5%9b%be%e7%89%87%e5%8a%a8%e6%80%81%e7%bc%a9%e6%94%bephp%e4%b8%8ejs%e7%ae%97%e6%b3%95.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>平民化的黑客</title>
		<link>http://www.sunboyu.cn/2009/07/19/%e5%b9%b3%e6%b0%91%e5%8c%96%e7%9a%84%e9%bb%91%e5%ae%a2.shtml</link>
		<comments>http://www.sunboyu.cn/2009/07/19/%e5%b9%b3%e6%b0%91%e5%8c%96%e7%9a%84%e9%bb%91%e5%ae%a2.shtml#comments</comments>
		<pubDate>Sun, 19 Jul 2009 05:40:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[相当拍砖]]></category>

		<category><![CDATA[黑客]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=867</guid>
		<description><![CDATA[每天下班，都有各式各样的IT人，能看到各种各样的IT文化衫：unix系列的，思科的网工，微软家族的，今天突然看到一黑客，令我肃然起敬-

]]></description>
			<content:encoded><![CDATA[<p>每天下班，都有各式各样的IT人，能看到各种各样的IT文化衫：unix系列的，思科的网工，微软家族的，今天突然看到一黑客，令我肃然起敬-</p>
<p><a href="http://www.sunboyu.cn/upfiles/2009/07/hacker.jpg"><img class="aligncenter size-full wp-image-868" title="hacker" src="http://www.sunboyu.cn/upfiles/2009/07/hacker.jpg" alt="hacker" width="800" height="600" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/07/19/%e5%b9%b3%e6%b0%91%e5%8c%96%e7%9a%84%e9%bb%91%e5%ae%a2.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>火狐-真正的火狐-火狐美女</title>
		<link>http://www.sunboyu.cn/2009/07/17/%e7%81%ab%e7%8b%90-%e7%9c%9f%e6%ad%a3%e7%9a%84%e7%81%ab%e7%8b%90-%e7%81%ab%e7%8b%90%e7%be%8e%e5%a5%b3.shtml</link>
		<comments>http://www.sunboyu.cn/2009/07/17/%e7%81%ab%e7%8b%90-%e7%9c%9f%e6%ad%a3%e7%9a%84%e7%81%ab%e7%8b%90-%e7%81%ab%e7%8b%90%e7%be%8e%e5%a5%b3.shtml#comments</comments>
		<pubDate>Fri, 17 Jul 2009 02:14:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<category><![CDATA[firefox]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=862</guid>
		<description><![CDATA[<table id="px3" title="firefox" border="0" cellspacing="0" cellpadding="0"><tr>
<td>
<a class="lightBox" rel="g3" href="http://farm4.static.flickr.com/3433/3854627880_b9b2b003b2_m.jpg" title="firefox_dog" alt="firefox_dog"><img src="http://farm4.static.flickr.com/3433/3854627880_b9b2b003b2_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3433%2F3854627880_b9b2b003b2_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3433%2F3854627880_b9b2b003b2_m.jpg%22%2C%22a%22%3A%22firefox_dog%22%7D" alt="firefox_dog"/></a></td>
<td>
<a class="lightBox" rel="g3" href="http://farm3.static.flickr.com/2657/3854627010_6f02aa8494_m.jpg" title="03335194_687cd90d890e65cb33a033222e8706cf" alt="03335194_687cd90d890e65cb33a033222e8706cf"><img src="http://farm3.static.flickr.com/2657/3854627010_6f02aa8494_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2657%2F3854627010_6f02aa8494_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2657%2F3854627010_6f02aa8494_m.jpg%22%2C%22a%22%3A%2203335194_687cd90d890e65cb33a033222e8706cf%22%7D" alt="03335194_687cd90d890e65cb33a033222e8706cf"/></a></td>
<td>
<a class="lightBox" rel="g3" href="http://farm4.static.flickr.com/3515/3853838423_994732c453_m.jpg" title="a9478eb81fff17f4d4ae6aad9efba12d" alt="a9478eb81fff17f4d4ae6aad9efba12d"><img src="http://farm4.static.flickr.com/3515/3853838423_994732c453_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3515%2F3853838423_994732c453_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3515%2F3853838423_994732c453_m.jpg%22%2C%22a%22%3A%22a9478eb81fff17f4d4ae6aad9efba12d%22%7D" alt="a9478eb81fff17f4d4ae6aad9efba12d"/></a></td>
<td>
<a class="lightBox" rel="g3" href="http://farm3.static.flickr.com/2449/3854626948_2c993d1787_m.jpg" title="600px-firefoxsvg" alt="600px-firefoxsvg"><img src="http://farm3.static.flickr.com/2449/3854626948_2c993d1787_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2449%2F3854626948_2c993d1787_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2449%2F3854626948_2c993d1787_m.jpg%22%2C%22a%22%3A%22600px-firefoxsvg%22%7D" alt="600px-firefoxsvg"/></a></td>
<td>
<a class="lightBox" rel="g3" href="http://farm3.static.flickr.com/2465/3853837091_5248cb0f45_m.jpg" title="firefox-experiment" alt="firefox-experiment"><img src="http://farm3.static.flickr.com/2465/3853837091_5248cb0f45_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2465%2F3853837091_5248cb0f45_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2465%2F3853837091_5248cb0f45_m.jpg%22%2C%22a%22%3A%22firefox-experiment%22%7D" alt="firefox-experiment"/></a></td>
</tr>
<tr>
<td>
<a class="lightBox" rel="g3" href="http://farm3.static.flickr.com/2511/3853836473_f8818085bb_m.jpg" title="sexy-firefox" alt="sexy-firefox"><img src="http://farm3.static.flickr.com/2511/3853836473_f8818085bb_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2511%2F3853836473_f8818085bb_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2511%2F3853836473_f8818085bb_m.jpg%22%2C%22a%22%3A%22sexy-firefox%22%7D" alt="sexy-firefox"/></a></td>
<td>
<a class="lightBox" rel="g3" href="http://farm3.static.flickr.com/2481/3854625274_c9047dd9a4_m.jpg" title="firefox_ie_desktop_1152x864" alt="firefox_ie_desktop_1152x864"><img src="http://farm3.static.flickr.com/2481/3854625274_c9047dd9a4_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2481%2F3854625274_c9047dd9a4_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2481%2F3854625274_c9047dd9a4_m.jpg%22%2C%22a%22%3A%22firefox_ie_desktop_1152x864%22%7D" alt="firefox_ie_desktop_1152x864"/></a></td>
<td>
<a class="lightBox" rel="g3" href="http://farm3.static.flickr.com/2583/3853834401_b02e10c0c4_m.jpg" title="firefox_truth" alt="firefox_truth"><img src="http://farm3.static.flickr.com/2583/3853834401_b02e10c0c4_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2583%2F3853834401_b02e10c0c4_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2583%2F3853834401_b02e10c0c4_m.jpg%22%2C%22a%22%3A%22firefox_truth%22%7D" alt="firefox_truth"/></a></td>
<td>
<a class="lightBox" rel="g3" href="http://farm4.static.flickr.com/3478/3853833959_7840b2e890_m.jpg" title="07869039_5a9dfe7e171b31ad25835d0aa53ebbaf" alt="07869039_5a9dfe7e171b31ad25835d0aa53ebbaf"><img src="http://farm4.static.flickr.com/3478/3853833959_7840b2e890_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3478%2F3853833959_7840b2e890_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3478%2F3853833959_7840b2e890_m.jpg%22%2C%22a%22%3A%2207869039_5a9dfe7e171b31ad25835d0aa53ebbaf%22%7D" alt="07869039_5a9dfe7e171b31ad25835d0aa53ebbaf"/></a></td>
<td>
<a class="lightBox" rel="g3" href="http://farm3.static.flickr.com/2467/3853833799_4b553be2be_m.jpg" title="firefox-6" alt="firefox-6"><img src="http://farm3.static.flickr.com/2467/3853833799_4b553be2be_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2467%2F3853833799_4b553be2be_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2467%2F3853833799_4b553be2be_m.jpg%22%2C%22a%22%3A%22firefox-6%22%7D" alt="firefox-6"/></a></td>
</tr>
<tr>
<td>
<a class="lightBox" rel="g3" href="http://farm3.static.flickr.com/2509/3853832625_7807e93870_m.jpg" title="99011397_9c03c120284be9f90d4a5a33a4b0ac3b" alt="99011397_9c03c120284be9f90d4a5a33a4b0ac3b"><img src="http://farm3.static.flickr.com/2509/3853832625_7807e93870_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2509%2F3853832625_7807e93870_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2509%2F3853832625_7807e93870_m.jpg%22%2C%22a%22%3A%2299011397_9c03c120284be9f90d4a5a33a4b0ac3b%22%7D" alt="99011397_9c03c120284be9f90d4a5a33a4b0ac3b"/></a></td>
<td>
<a class="lightBox" rel="g3" href="http://farm4.static.flickr.com/3456/3853832173_0e5e4226d5_m.jpg" title="07728881_31a56fc6d5a5ff4bad8118ddff455424" alt="07728881_31a56fc6d5a5ff4bad8118ddff455424"><img src="http://farm4.static.flickr.com/3456/3853832173_0e5e4226d5_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3456%2F3853832173_0e5e4226d5_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3456%2F3853832173_0e5e4226d5_m.jpg%22%2C%22a%22%3A%2207728881_31a56fc6d5a5ff4bad8118ddff455424%22%7D" alt="07728881_31a56fc6d5a5ff4bad8118ddff455424"/></a></td>
<td>
<a class="lightBox" rel="g3" href="http://farm3.static.flickr.com/2504/3854620646_9a8b45cf69_m.jpg" title="50142045_132702724976cd02112a878c516ddec0" alt="50142045_132702724976cd02112a878c516ddec0"><img src="http://farm3.static.flickr.com/2504/3854620646_9a8b45cf69_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2504%2F3854620646_9a8b45cf69_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2504%2F3854620646_9a8b45cf69_m.jpg%22%2C%22a%22%3A%2250142045_132702724976cd02112a878c516ddec0%22%7D" alt="50142045_132702724976cd02112a878c516ddec0"/></a></td>
<td>
<a class="lightBox" rel="g3" href="http://farm3.static.flickr.com/2638/3853832019_c413a72f0d_m.jpg" title="firefox-ad" alt="firefox-ad"><img src="http://farm3.static.flickr.com/2638/3853832019_c413a72f0d_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2638%2F3853832019_c413a72f0d_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2638%2F3853832019_c413a72f0d_m.jpg%22%2C%22a%22%3A%22firefox-ad%22%7D" alt="firefox-ad"/></a></td>
<td>
<a class="lightBox" rel="g3" href="http://farm3.static.flickr.com/2545/3854620470_73b96b86cc_m.jpg" title="22133893_11a40388efcea416252e94a9fa264bc8" alt="22133893_11a40388efcea416252e94a9fa264bc8"><img src="http://farm3.static.flickr.com/2545/3854620470_73b96b86cc_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2545%2F3854620470_73b96b86cc_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2545%2F3854620470_73b96b86cc_m.jpg%22%2C%22a%22%3A%2222133893_11a40388efcea416252e94a9fa264bc8%22%7D" alt="22133893_11a40388efcea416252e94a9fa264bc8"/></a></td>
</tr>
<tr>
<td>
<a class="lightBox" rel="g3" href="http://farm3.static.flickr.com/2481/3854620224_1fa3b3378b_m.jpg" title="27477612_bbc2337c217d132528e0f679c7801cff" alt="27477612_bbc2337c217d132528e0f679c7801cff"><img src="http://farm3.static.flickr.com/2481/3854620224_1fa3b3378b_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2481%2F3854620224_1fa3b3378b_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2481%2F3854620224_1fa3b3378b_m.jpg%22%2C%22a%22%3A%2227477612_bbc2337c217d132528e0f679c7801cff%22%7D" alt="27477612_bbc2337c217d132528e0f679c7801cff"/></a></td>
<td>
<a class="lightBox" rel="g3" href="http://farm4.static.flickr.com/3511/3854619488_f35cf3325d_m.jpg" title="google-girl-vs-firefox-girl-500x344" alt="google-girl-vs-firefox-girl-500x344"><img src="http://farm4.static.flickr.com/3511/3854619488_f35cf3325d_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3511%2F3854619488_f35cf3325d_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3511%2F3854619488_f35cf3325d_m.jpg%22%2C%22a%22%3A%22google-girl-vs-firefox-girl-500x344%22%7D" alt="google-girl-vs-firefox-girl-500x344"/></a></td>
<td>
<a class="lightBox" rel="g3" href="http://farm3.static.flickr.com/2486/3853830745_a0d43e1ab4_m.jpg" title="24496522_86ce154f0982b184dda72035e0eb003d" alt="24496522_86ce154f0982b184dda72035e0eb003d"><img src="http://farm3.static.flickr.com/2486/3853830745_a0d43e1ab4_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2486%2F3853830745_a0d43e1ab4_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2486%2F3853830745_a0d43e1ab4_m.jpg%22%2C%22a%22%3A%2224496522_86ce154f0982b184dda72035e0eb003d%22%7D" alt="24496522_86ce154f0982b184dda72035e0eb003d"/></a></td>
<td>
<a class="lightBox" rel="g3" href="http://farm3.static.flickr.com/2648/3854619128_b8e6af50f2_m.jpg" title="87095721_6c29888cb01bf8c9d71e83dc3f3f2c01" alt="87095721_6c29888cb01bf8c9d71e83dc3f3f2c01"><img src="http://farm3.static.flickr.com/2648/3854619128_b8e6af50f2_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2648%2F3854619128_b8e6af50f2_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2648%2F3854619128_b8e6af50f2_m.jpg%22%2C%22a%22%3A%2287095721_6c29888cb01bf8c9d71e83dc3f3f2c01%22%7D" alt="87095721_6c29888cb01bf8c9d71e83dc3f3f2c01"/></a></td>
<td>
<a class="lightBox" rel="g3" href="http://farm4.static.flickr.com/3535/3853829835_aa9beb8f22_m.jpg" title="95252819_167efa8812638694e0e0d020d798aa0d" alt="95252819_167efa8812638694e0e0d020d798aa0d"><img src="http://farm4.static.flickr.com/3535/3853829835_aa9beb8f22_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3535%2F3853829835_aa9beb8f22_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3535%2F3853829835_aa9beb8f22_m.jpg%22%2C%22a%22%3A%2295252819_167efa8812638694e0e0d020d798aa0d%22%7D" alt="95252819_167efa8812638694e0e0d020d798aa0d"/></a></td>
</tr>
</table><link id="px_editstylesheet" type="text/css" href="http://www.sunboyu.cn/wp-content/plugins/photoxhibit/photoxhibit.php?option=css&gid=3&1328511668" rel="stylesheet"/>
]]></description>
			<content:encoded><![CDATA[<table id="px3" title="firefox" border="0" cellspacing="0" cellpadding="0"><tr>
<td>
<a class="lightBox" rel="g3" href="http://farm4.static.flickr.com/3433/3854627880_b9b2b003b2_m.jpg" title="firefox_dog" alt="firefox_dog"><img src="http://farm4.static.flickr.com/3433/3854627880_b9b2b003b2_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3433%2F3854627880_b9b2b003b2_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3433%2F3854627880_b9b2b003b2_m.jpg%22%2C%22a%22%3A%22firefox_dog%22%7D" alt="firefox_dog"/></a></td>
<td>
<a class="lightBox" rel="g3" href="http://farm3.static.flickr.com/2657/3854627010_6f02aa8494_m.jpg" title="03335194_687cd90d890e65cb33a033222e8706cf" alt="03335194_687cd90d890e65cb33a033222e8706cf"><img src="http://farm3.static.flickr.com/2657/3854627010_6f02aa8494_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2657%2F3854627010_6f02aa8494_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2657%2F3854627010_6f02aa8494_m.jpg%22%2C%22a%22%3A%2203335194_687cd90d890e65cb33a033222e8706cf%22%7D" alt="03335194_687cd90d890e65cb33a033222e8706cf"/></a></td>
<td>
<a class="lightBox" rel="g3" href="http://farm4.static.flickr.com/3515/3853838423_994732c453_m.jpg" title="a9478eb81fff17f4d4ae6aad9efba12d" alt="a9478eb81fff17f4d4ae6aad9efba12d"><img src="http://farm4.static.flickr.com/3515/3853838423_994732c453_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3515%2F3853838423_994732c453_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3515%2F3853838423_994732c453_m.jpg%22%2C%22a%22%3A%22a9478eb81fff17f4d4ae6aad9efba12d%22%7D" alt="a9478eb81fff17f4d4ae6aad9efba12d"/></a></td>
<td>
<a class="lightBox" rel="g3" href="http://farm3.static.flickr.com/2449/3854626948_2c993d1787_m.jpg" title="600px-firefoxsvg" alt="600px-firefoxsvg"><img src="http://farm3.static.flickr.com/2449/3854626948_2c993d1787_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2449%2F3854626948_2c993d1787_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2449%2F3854626948_2c993d1787_m.jpg%22%2C%22a%22%3A%22600px-firefoxsvg%22%7D" alt="600px-firefoxsvg"/></a></td>
<td>
<a class="lightBox" rel="g3" href="http://farm3.static.flickr.com/2465/3853837091_5248cb0f45_m.jpg" title="firefox-experiment" alt="firefox-experiment"><img src="http://farm3.static.flickr.com/2465/3853837091_5248cb0f45_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2465%2F3853837091_5248cb0f45_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2465%2F3853837091_5248cb0f45_m.jpg%22%2C%22a%22%3A%22firefox-experiment%22%7D" alt="firefox-experiment"/></a></td>
</tr>
<tr>
<td>
<a class="lightBox" rel="g3" href="http://farm3.static.flickr.com/2511/3853836473_f8818085bb_m.jpg" title="sexy-firefox" alt="sexy-firefox"><img src="http://farm3.static.flickr.com/2511/3853836473_f8818085bb_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2511%2F3853836473_f8818085bb_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2511%2F3853836473_f8818085bb_m.jpg%22%2C%22a%22%3A%22sexy-firefox%22%7D" alt="sexy-firefox"/></a></td>
<td>
<a class="lightBox" rel="g3" href="http://farm3.static.flickr.com/2481/3854625274_c9047dd9a4_m.jpg" title="firefox_ie_desktop_1152x864" alt="firefox_ie_desktop_1152x864"><img src="http://farm3.static.flickr.com/2481/3854625274_c9047dd9a4_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2481%2F3854625274_c9047dd9a4_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2481%2F3854625274_c9047dd9a4_m.jpg%22%2C%22a%22%3A%22firefox_ie_desktop_1152x864%22%7D" alt="firefox_ie_desktop_1152x864"/></a></td>
<td>
<a class="lightBox" rel="g3" href="http://farm3.static.flickr.com/2583/3853834401_b02e10c0c4_m.jpg" title="firefox_truth" alt="firefox_truth"><img src="http://farm3.static.flickr.com/2583/3853834401_b02e10c0c4_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2583%2F3853834401_b02e10c0c4_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2583%2F3853834401_b02e10c0c4_m.jpg%22%2C%22a%22%3A%22firefox_truth%22%7D" alt="firefox_truth"/></a></td>
<td>
<a class="lightBox" rel="g3" href="http://farm4.static.flickr.com/3478/3853833959_7840b2e890_m.jpg" title="07869039_5a9dfe7e171b31ad25835d0aa53ebbaf" alt="07869039_5a9dfe7e171b31ad25835d0aa53ebbaf"><img src="http://farm4.static.flickr.com/3478/3853833959_7840b2e890_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3478%2F3853833959_7840b2e890_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3478%2F3853833959_7840b2e890_m.jpg%22%2C%22a%22%3A%2207869039_5a9dfe7e171b31ad25835d0aa53ebbaf%22%7D" alt="07869039_5a9dfe7e171b31ad25835d0aa53ebbaf"/></a></td>
<td>
<a class="lightBox" rel="g3" href="http://farm3.static.flickr.com/2467/3853833799_4b553be2be_m.jpg" title="firefox-6" alt="firefox-6"><img src="http://farm3.static.flickr.com/2467/3853833799_4b553be2be_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2467%2F3853833799_4b553be2be_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2467%2F3853833799_4b553be2be_m.jpg%22%2C%22a%22%3A%22firefox-6%22%7D" alt="firefox-6"/></a></td>
</tr>
<tr>
<td>
<a class="lightBox" rel="g3" href="http://farm3.static.flickr.com/2509/3853832625_7807e93870_m.jpg" title="99011397_9c03c120284be9f90d4a5a33a4b0ac3b" alt="99011397_9c03c120284be9f90d4a5a33a4b0ac3b"><img src="http://farm3.static.flickr.com/2509/3853832625_7807e93870_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2509%2F3853832625_7807e93870_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2509%2F3853832625_7807e93870_m.jpg%22%2C%22a%22%3A%2299011397_9c03c120284be9f90d4a5a33a4b0ac3b%22%7D" alt="99011397_9c03c120284be9f90d4a5a33a4b0ac3b"/></a></td>
<td>
<a class="lightBox" rel="g3" href="http://farm4.static.flickr.com/3456/3853832173_0e5e4226d5_m.jpg" title="07728881_31a56fc6d5a5ff4bad8118ddff455424" alt="07728881_31a56fc6d5a5ff4bad8118ddff455424"><img src="http://farm4.static.flickr.com/3456/3853832173_0e5e4226d5_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3456%2F3853832173_0e5e4226d5_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3456%2F3853832173_0e5e4226d5_m.jpg%22%2C%22a%22%3A%2207728881_31a56fc6d5a5ff4bad8118ddff455424%22%7D" alt="07728881_31a56fc6d5a5ff4bad8118ddff455424"/></a></td>
<td>
<a class="lightBox" rel="g3" href="http://farm3.static.flickr.com/2504/3854620646_9a8b45cf69_m.jpg" title="50142045_132702724976cd02112a878c516ddec0" alt="50142045_132702724976cd02112a878c516ddec0"><img src="http://farm3.static.flickr.com/2504/3854620646_9a8b45cf69_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2504%2F3854620646_9a8b45cf69_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2504%2F3854620646_9a8b45cf69_m.jpg%22%2C%22a%22%3A%2250142045_132702724976cd02112a878c516ddec0%22%7D" alt="50142045_132702724976cd02112a878c516ddec0"/></a></td>
<td>
<a class="lightBox" rel="g3" href="http://farm3.static.flickr.com/2638/3853832019_c413a72f0d_m.jpg" title="firefox-ad" alt="firefox-ad"><img src="http://farm3.static.flickr.com/2638/3853832019_c413a72f0d_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2638%2F3853832019_c413a72f0d_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2638%2F3853832019_c413a72f0d_m.jpg%22%2C%22a%22%3A%22firefox-ad%22%7D" alt="firefox-ad"/></a></td>
<td>
<a class="lightBox" rel="g3" href="http://farm3.static.flickr.com/2545/3854620470_73b96b86cc_m.jpg" title="22133893_11a40388efcea416252e94a9fa264bc8" alt="22133893_11a40388efcea416252e94a9fa264bc8"><img src="http://farm3.static.flickr.com/2545/3854620470_73b96b86cc_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2545%2F3854620470_73b96b86cc_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2545%2F3854620470_73b96b86cc_m.jpg%22%2C%22a%22%3A%2222133893_11a40388efcea416252e94a9fa264bc8%22%7D" alt="22133893_11a40388efcea416252e94a9fa264bc8"/></a></td>
</tr>
<tr>
<td>
<a class="lightBox" rel="g3" href="http://farm3.static.flickr.com/2481/3854620224_1fa3b3378b_m.jpg" title="27477612_bbc2337c217d132528e0f679c7801cff" alt="27477612_bbc2337c217d132528e0f679c7801cff"><img src="http://farm3.static.flickr.com/2481/3854620224_1fa3b3378b_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2481%2F3854620224_1fa3b3378b_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2481%2F3854620224_1fa3b3378b_m.jpg%22%2C%22a%22%3A%2227477612_bbc2337c217d132528e0f679c7801cff%22%7D" alt="27477612_bbc2337c217d132528e0f679c7801cff"/></a></td>
<td>
<a class="lightBox" rel="g3" href="http://farm4.static.flickr.com/3511/3854619488_f35cf3325d_m.jpg" title="google-girl-vs-firefox-girl-500x344" alt="google-girl-vs-firefox-girl-500x344"><img src="http://farm4.static.flickr.com/3511/3854619488_f35cf3325d_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3511%2F3854619488_f35cf3325d_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3511%2F3854619488_f35cf3325d_m.jpg%22%2C%22a%22%3A%22google-girl-vs-firefox-girl-500x344%22%7D" alt="google-girl-vs-firefox-girl-500x344"/></a></td>
<td>
<a class="lightBox" rel="g3" href="http://farm3.static.flickr.com/2486/3853830745_a0d43e1ab4_m.jpg" title="24496522_86ce154f0982b184dda72035e0eb003d" alt="24496522_86ce154f0982b184dda72035e0eb003d"><img src="http://farm3.static.flickr.com/2486/3853830745_a0d43e1ab4_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2486%2F3853830745_a0d43e1ab4_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2486%2F3853830745_a0d43e1ab4_m.jpg%22%2C%22a%22%3A%2224496522_86ce154f0982b184dda72035e0eb003d%22%7D" alt="24496522_86ce154f0982b184dda72035e0eb003d"/></a></td>
<td>
<a class="lightBox" rel="g3" href="http://farm3.static.flickr.com/2648/3854619128_b8e6af50f2_m.jpg" title="87095721_6c29888cb01bf8c9d71e83dc3f3f2c01" alt="87095721_6c29888cb01bf8c9d71e83dc3f3f2c01"><img src="http://farm3.static.flickr.com/2648/3854619128_b8e6af50f2_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2648%2F3854619128_b8e6af50f2_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2648%2F3854619128_b8e6af50f2_m.jpg%22%2C%22a%22%3A%2287095721_6c29888cb01bf8c9d71e83dc3f3f2c01%22%7D" alt="87095721_6c29888cb01bf8c9d71e83dc3f3f2c01"/></a></td>
<td>
<a class="lightBox" rel="g3" href="http://farm4.static.flickr.com/3535/3853829835_aa9beb8f22_m.jpg" title="95252819_167efa8812638694e0e0d020d798aa0d" alt="95252819_167efa8812638694e0e0d020d798aa0d"><img src="http://farm4.static.flickr.com/3535/3853829835_aa9beb8f22_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3535%2F3853829835_aa9beb8f22_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3535%2F3853829835_aa9beb8f22_m.jpg%22%2C%22a%22%3A%2295252819_167efa8812638694e0e0d020d798aa0d%22%7D" alt="95252819_167efa8812638694e0e0d020d798aa0d"/></a></td>
</tr>
</table><link id="px_editstylesheet" type="text/css" href="http://www.sunboyu.cn/wp-content/plugins/photoxhibit/photoxhibit.php?option=css&gid=3&1328511672" rel="stylesheet"/><p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/07/17/%e7%81%ab%e7%8b%90-%e7%9c%9f%e6%ad%a3%e7%9a%84%e7%81%ab%e7%8b%90-%e7%81%ab%e7%8b%90%e7%be%8e%e5%a5%b3.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>智联招聘的个人评测系统</title>
		<link>http://www.sunboyu.cn/2009/07/16/%e6%99%ba%e8%81%94%e6%8b%9b%e8%81%98%e7%9a%84%e4%b8%aa%e4%ba%ba%e8%af%84%e6%b5%8b%e7%b3%bb%e7%bb%9f.shtml</link>
		<comments>http://www.sunboyu.cn/2009/07/16/%e6%99%ba%e8%81%94%e6%8b%9b%e8%81%98%e7%9a%84%e4%b8%aa%e4%ba%ba%e8%af%84%e6%b5%8b%e7%b3%bb%e7%bb%9f.shtml#comments</comments>
		<pubDate>Wed, 15 Jul 2009 20:56:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[其他]]></category>

		<category><![CDATA[个人评测系统]]></category>

		<category><![CDATA[智联]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=860</guid>
		<description><![CDATA[朋友发给我智联招聘一个个人评测系统，进行了职业兴趣，IQ,EQ的测试，经过一中午的测试，我发现这个测试还是蛮有道理的，对我的分析大体如下：
职业兴趣：研究型、社会型。   从小不喜欢学习，但喜欢玩弄点高深的东西，让只看分数的老师们头疼不已。分数不高，难题倒解得非常出色，让我想起了爱因斯坦（狂晕）。中学往后一直在学校担任领导干部，估计是社会型性格的由来。
智商102，平均水平。看来真是一般人。其中对数字的敏感很强，排到了82%，估计我天生是搞计算机的命。不过我更喜欢研究hack。
情商不高，不喜欢研究人，估计长期跟计算机打交道的结构。不过沟通能力语言能力情绪控制能力挺强。在情商分支看来我也偏科。我是很理智的人。
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-
人的发展还是取决于个人和环境，测试权当一参考。
]]></description>
			<content:encoded><![CDATA[<p>朋友发给我智联招聘一个个人评测系统，进行了职业兴趣，IQ,EQ的测试，经过一中午的测试，我发现这个测试还是蛮有道理的，对我的分析大体如下：</p>
<p>职业兴趣：研究型、社会型。   从小不喜欢学习，但喜欢玩弄点高深的东西，让只看分数的老师们头疼不已。分数不高，难题倒解得非常出色，让我想起了爱因斯坦（狂晕）。中学往后一直在学校担任领导干部，估计是社会型性格的由来。</p>
<p>智商102，平均水平。看来真是一般人。其中对数字的敏感很强，排到了82%，估计我天生是搞计算机的命。不过我更喜欢研究hack。</p>
<p>情商不高，不喜欢研究人，估计长期跟计算机打交道的结构。不过沟通能力语言能力情绪控制能力挺强。在情商分支看来我也偏科。我是很理智的人。</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>人的发展还是取决于个人和环境，测试权当一参考。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/07/16/%e6%99%ba%e8%81%94%e6%8b%9b%e8%81%98%e7%9a%84%e4%b8%aa%e4%ba%ba%e8%af%84%e6%b5%8b%e7%b3%bb%e7%bb%9f.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>为FCKEditor增加图片附件管理功能</title>
		<link>http://www.sunboyu.cn/2009/07/15/%e4%b8%bafckeditor%e5%a2%9e%e5%8a%a0%e5%9b%be%e7%89%87%e9%99%84%e4%bb%b6%e7%ae%a1%e7%90%86%e5%8a%9f%e8%83%bd.shtml</link>
		<comments>http://www.sunboyu.cn/2009/07/15/%e4%b8%bafckeditor%e5%a2%9e%e5%8a%a0%e5%9b%be%e7%89%87%e9%99%84%e4%bb%b6%e7%ae%a1%e7%90%86%e5%8a%9f%e8%83%bd.shtml#comments</comments>
		<pubDate>Wed, 15 Jul 2009 05:38:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[fckeditor]]></category>

		<category><![CDATA[附件数据库]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=858</guid>
		<description><![CDATA[其实好久没用过FCKEeditor了，因为将近两年没写过CMS，今天突然人品大爆发，想起了这个问题。
fckeditor是一个非常棒的所见即所得在线编辑器，包括一些门户网站都在使用。fckeditor有个问题，就是上传图片默认为一个文件夹，当然这个问题早已经解决，我们可以用cookie或者session的方式给参数 $Config['UserFilesPath'] 就可以定制上传路径。而后在文章保存的过程中即可保存图片地址。
然后在使用过程中又出现一个问题，虽然我们知道图片在哪个文件夹，但我们却不能动态的去知道具体文件夹内有哪几个图片，预览是什么。而且，我们在写CMS的时候经常需要调用其中一张图片做封面，原来的机制显然无法去满足这些需求（当然你也可以查看编辑器内的源代码来查看图片地址，不过对于外行似乎有点困难）。
突然看到了discuz的附件机制，相出这么个损招：每张图片上传都给他存储在数据库中，打上guid（或者唯一的地址）进行标识，当我们保存的时候，图片会跟文章关联，在使用之前还可以用ajax动态调用预览，可谓一举两得。
文章保存后，图片进入数据库，另外还可以方便找出编辑遗留的垃圾，因为很多时候一个已经传了文章的草稿没有保存，而遗留很多的临时文件。
最近的fck版本好像升级了，配置文件放从根目录迁移了，不过fck代码非常规整，做这么个改造不是很难，就没写demo。
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-
文章很冗余，骗稿费?
]]></description>
			<content:encoded><![CDATA[<p>其实好久没用过FCKEeditor了，因为将近两年没写过CMS，今天突然人品大爆发，想起了这个问题。</p>
<p>fckeditor是一个非常棒的所见即所得在线编辑器，包括一些门户网站都在使用。fckeditor有个问题，就是上传图片默认为一个文件夹，当然这个问题早已经解决，我们可以用cookie或者session的方式给参数 $Config['UserFilesPath'] 就可以定制上传路径。而后在文章保存的过程中即可保存图片地址。</p>
<p>然后在使用过程中又出现一个问题，虽然我们知道图片在哪个文件夹，但我们却不能动态的去知道具体文件夹内有哪几个图片，预览是什么。而且，我们在写CMS的时候经常需要调用其中一张图片做封面，原来的机制显然无法去满足这些需求（当然你也可以查看编辑器内的源代码来查看图片地址，不过对于外行似乎有点困难）。</p>
<p>突然看到了discuz的附件机制，相出这么个损招：每张图片上传都给他存储在数据库中，打上guid（或者唯一的地址）进行标识，当我们保存的时候，图片会跟文章关联，在使用之前还可以用ajax动态调用预览，可谓一举两得。</p>
<p>文章保存后，图片进入数据库，另外还可以方便找出编辑遗留的垃圾，因为很多时候一个已经传了文章的草稿没有保存，而遗留很多的临时文件。</p>
<p>最近的fck版本好像升级了，配置文件放从根目录迁移了，不过fck代码非常规整，做这么个改造不是很难，就没写demo。</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>文章很冗余，骗稿费?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/07/15/%e4%b8%bafckeditor%e5%a2%9e%e5%8a%a0%e5%9b%be%e7%89%87%e9%99%84%e4%bb%b6%e7%ae%a1%e7%90%86%e5%8a%9f%e8%83%bd.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>Linux配置几个关键点需要注意</title>
		<link>http://www.sunboyu.cn/2009/07/15/linux%e9%85%8d%e7%bd%ae%e5%87%a0%e4%b8%aa%e5%85%b3%e9%94%ae%e7%82%b9%e9%9c%80%e8%a6%81%e6%b3%a8%e6%84%8f.shtml</link>
		<comments>http://www.sunboyu.cn/2009/07/15/linux%e9%85%8d%e7%bd%ae%e5%87%a0%e4%b8%aa%e5%85%b3%e9%94%ae%e7%82%b9%e9%9c%80%e8%a6%81%e6%b3%a8%e6%84%8f.shtml#comments</comments>
		<pubDate>Tue, 14 Jul 2009 20:30:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[centos]]></category>

		<category><![CDATA[linux]]></category>

		<category><![CDATA[机房]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=856</guid>
		<description><![CDATA[前两天机房断电，弄得兄弟我太郁闷。机房网管居然直接硬关机，这么来回弄了两三次，问技术，不是那一拨，问销售，没啥解释，人家说不知道……
一分钱一分货有道理，结果我机器挂了，机房那边说linux启动，中间卡死了。因为那个机房没有懂linux的网管，所以，我开车（捷安特）去了机房。
后发现，其实没什么问题，卡在了一个依赖python的启动进程上，另外mysql貌似也没有启动。
我用ubuntu live版的cd进入系统（有点像win下的PE的思路），修改了python设置：
原来python默认是2.3版本，我升级到了2.5，默认关联的是2.5版的，但这样会有一些问题，比如yum对版本依赖性很强，修改后则其不工作，所以我修改了yum的配置，让其寻找2.3版本。而另一下对python有依赖的模块我却没有发现，造成down机后无法启动。
mysql无法自启动，没找出是哪的问题，不过，我在ubuntu下加载了原来的分区，修改了rc.local配置,灭了mysql，系统顺利启动。
总结：ubuntu live cd的作用跟我修理xp时候的pe功能相似，系统挂掉的时候修改个配置啥的还是很好用的。
除非很了解软件之间的依赖性，否则不要随意修改那些配置，否则会造成依赖性问题。
事发现场图片

]]></description>
			<content:encoded><![CDATA[<p>前两天机房断电，弄得兄弟我太郁闷。机房网管居然直接硬关机，这么来回弄了两三次，问技术，不是那一拨，问销售，没啥解释，人家说不知道……</p>
<p>一分钱一分货有道理，结果我机器挂了，机房那边说linux启动，中间卡死了。因为那个机房没有懂linux的网管，所以，我开车（捷安特）去了机房。</p>
<p>后发现，其实没什么问题，卡在了一个依赖python的启动进程上，另外mysql貌似也没有启动。</p>
<p>我用ubuntu live版的cd进入系统（有点像win下的PE的思路），修改了python设置：</p>
<p>原来python默认是2.3版本，我升级到了2.5，默认关联的是2.5版的，但这样会有一些问题，比如yum对版本依赖性很强，修改后则其不工作，所以我修改了yum的配置，让其寻找2.3版本。而另一下对python有依赖的模块我却没有发现，造成down机后无法启动。</p>
<p>mysql无法自启动，没找出是哪的问题，不过，我在ubuntu下加载了原来的分区，修改了rc.local配置,灭了mysql，系统顺利启动。</p>
<p>总结：ubuntu live cd的作用跟我修理xp时候的pe功能相似，系统挂掉的时候修改个配置啥的还是很好用的。</p>
<p>除非很了解软件之间的依赖性，否则不要随意修改那些配置，否则会造成依赖性问题。</p>
<p>事发现场图片</p>
<p><a href="http://www.sunboyu.cn/upfiles/2009/07/server-mysql.jpg"><img class="aligncenter size-full wp-image-872" title="server-mysql" src="http://www.sunboyu.cn/upfiles/2009/07/server-mysql.jpg" alt="server-mysql" width="800" height="591" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/07/15/linux%e9%85%8d%e7%bd%ae%e5%87%a0%e4%b8%aa%e5%85%b3%e9%94%ae%e7%82%b9%e9%9c%80%e8%a6%81%e6%b3%a8%e6%84%8f.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>PHP开发的一个pureftpd管理工具</title>
		<link>http://www.sunboyu.cn/2009/07/10/php%e5%bc%80%e5%8f%91%e7%9a%84%e4%b8%80%e4%b8%aapureftpd%e7%ae%a1%e7%90%86%e5%b7%a5%e5%85%b7.shtml</link>
		<comments>http://www.sunboyu.cn/2009/07/10/php%e5%bc%80%e5%8f%91%e7%9a%84%e4%b8%80%e4%b8%aapureftpd%e7%ae%a1%e7%90%86%e5%b7%a5%e5%85%b7.shtml#comments</comments>
		<pubDate>Fri, 10 Jul 2009 08:49:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[原创技术]]></category>

		<category><![CDATA[manager]]></category>

		<category><![CDATA[pureftpd]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=850</guid>
		<description><![CDATA[用过pureftpd manager，虽然功能足够，但很多bug，无法使用，而pureftpd功能简单，写个管理工具也没多复杂，于是乎，花两个晚上写了个简单的管理脚本，分享给大家。不过没来得及写注释，回头会把注释补上。
分流下载 http://down.chinaz.com/soft/26439.htm
点击下载
&#60; ?php
error_reporting(2047);
header(&#34;Content-Type: text/html; charset=utf-8&#34;);
header(&#34;Cache-Control: no-cache, must-revalidate&#34;); // HTTP/1.1
header(&#34;Expires: Mon, 26 Jul 1997 05:00:00 GMT&#34;); // 过去的时间
define(&#34;FILENAME&#34;,$_SERVER['PHP_SELF']);
$adminuser = &#34;admin&#34;;
$adminpass = &#34;admin&#34;;
&#160;
$servtype = 'mysql';
$hostname = 'localhost';
$username = 'root';
$password = '123456';
$datebase = 'pure-ftpd';
$table&#160; &#160; = &#34;users&#34;;
$charset&#160; = 'utf8';
$crypt&#160; &#160; = &#34;MD5&#34;;
&#160;
session_start();
#session_destroy();
$action = isset($_GET['action']) ? $_GET['action'] : &#34;index&#34;;
&#160;
&#160;
switch( $action )
{
&#160;&#160; &#160;case &#34;index&#34;:
	&#160; &#160; checklogin();
		func_html( 0 );
		switch($_SESSION['user'])
		{
		&#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>用过pureftpd manager，虽然功能足够，但很多bug，无法使用，而pureftpd功能简单，写个管理工具也没多复杂，于是乎，花两个晚上写了个简单的管理脚本，分享给大家。不过没来得及写注释，回头会把注释补上。</p>
<p>分流下载 http://down.chinaz.com/soft/26439.htm</p>
<p><a href='http://www.sunboyu.cn/upfiles/2009/07/ftp.rar'>点击下载</a></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">&lt; ?php</li>
<li>error_reporting(2047);</li>
<li>header(&quot;Content-Type: text/html; charset=utf-8&quot;);</li>
<li>header(&quot;Cache-Control: no-cache, must-revalidate&quot;); // HTTP/1.1</li>
<li>header(&quot;Expires: Mon, 26 Jul 1997 05:00:00 GMT&quot;); // 过去的时间</li>
<li>define(&quot;FILENAME&quot;,$_SERVER['PHP_SELF']);</li>
<li>$adminuser = &quot;admin&quot;;</li>
<li>$adminpass = &quot;admin&quot;;</li>
<li>&nbsp;</li>
<li>$servtype = 'mysql';</li>
<li>$hostname = 'localhost';</li>
<li>$username = 'root';</li>
<li>$password = '123456';</li>
<li>$datebase = 'pure-ftpd';</li>
<li>$table&nbsp; &nbsp; = &quot;users&quot;;</li>
<li>$charset&nbsp; = 'utf8';</li>
<li>$crypt&nbsp; &nbsp; = &quot;MD5&quot;;</li>
<li>&nbsp;</li>
<li>session_start();</li>
<li>#session_destroy();</li>
<li>$action = isset($_GET['action']) ? $_GET['action'] : &quot;index&quot;;</li>
<li>&nbsp;</li>
<li>&nbsp;</li>
<li>switch( $action )</li>
<li>{</li>
<li>&nbsp;&nbsp; &nbsp;case &quot;index&quot;:</li>
<li>	&nbsp; &nbsp; checklogin();</li>
<li>		func_html( 0 );</li>
<li>		switch($_SESSION['user'])</li>
<li>		{</li>
<li>		&nbsp; &nbsp; case $adminuser:</li>
<li>			&nbsp; &nbsp; func_admin_index();</li>
<li>			break;</li>
<li>			default:</li>
<li>			&nbsp; &nbsp; func_user_index();</li>
<li>			break;</li>
<li>		}</li>
<li>		func_html( 1 );</li>
<li>	break;</li>
<li>&nbsp;&nbsp; &nbsp;case &quot;userlogin&quot;:</li>
<li>	case &quot;adminlogin&quot;:</li>
<li>	&nbsp; &nbsp; func_html( 0 );</li>
<li>	&nbsp; &nbsp; func_userlogin();</li>
<li>		func_html( 1 );</li>
<li>	break;</li>
<li>	case &quot;userloginaction&quot;:</li>
<li>	&nbsp; &nbsp; func_userloginaction( $_POST['username'] , $_POST['password'] , $_POST['logintype'] );</li>
<li>	break;</li>
<li>	case &quot;userpasswordchang&quot;:</li>
<li>	&nbsp; &nbsp; checklogin();</li>
<li>		user_password_chang( $_POST['password'] );</li>
<li>	break;</li>
<li>	case &quot;adminchangeuserpassword&quot;:</li>
<li>	case &quot;useradd&quot;:</li>
<li>	&nbsp; &nbsp; checklogin(true);</li>
<li>		func_admin_user_edit( isset($_GET['user']) ? $_GET['user'] : false );</li>
<li>	break;</li>
<li>	case &quot;userinfoac&quot;:</li>
<li>	&nbsp; &nbsp; checklogin(true);</li>
<li>		switch($_POST['action'])</li>
<li>		{</li>
<li>		&nbsp; &nbsp; case &quot;edit&quot;:</li>
<li>			&nbsp; &nbsp; func_admin_useredit();</li>
<li>			break;</li>
<li>			case &quot;add&quot;:</li>
<li>			&nbsp; &nbsp; func_admin_useradd();</li>
<li>			break;</li>
<li>		}</li>
<li>	break;</li>
<li>	case &quot;adminuserdel&quot;:</li>
<li>	&nbsp; &nbsp; func_user_del( $_GET['user'] );</li>
<li>	break;</li>
<li>	case &quot;logout&quot;:</li>
<li>	&nbsp; &nbsp; func_logout();</li>
<li>	break;</li>
<li>}</li>
<li>&nbsp;</li>
<li>&nbsp;</li>
<li>function func_html( $position = 0 )</li>
<li>{</li>
<li>&nbsp;&nbsp; &nbsp;switch( $position )</li>
<li>	{</li>
<li>	&nbsp; &nbsp; case 0:</li>
<li>		&nbsp; &nbsp; echo &quot;&lt;!DOCTYPE html PUBLIC \&quot;-//W3C//DTD XHTML 1.0 Transitional//EN\&quot; \&quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\&quot;&gt;</li>
<li>&lt;html xmlns=\&quot;http://www.w3.org/1999/xhtml\&quot;&gt;</li>
<li>&lt;head&gt;</li>
<li>&lt;meta http-equiv=\&quot;Content-Type\&quot; content=\&quot;text/html; charset=utf-8\&quot; /&gt;</li>
<li>&lt;title&gt;PURE-FTPD简易管理系统&lt;/title&gt;</li>
<li>&lt;style type=\&quot;text/css\&quot;&gt;</li>
<li>td</li>
<li>{</li>
<li>	padding:4px;</li>
<li>}</li>
<li>.bar</li>
<li>{</li>
<li>&nbsp;&nbsp; &nbsp;width:80%;</li>
<li>	border-bottom:dotted 1px #aaa;</li>
<li>	margin-bottom:20px;</li>
<li>	padding:10px;</li>
<li>}</li>
<li>&lt;/style&gt;</li>
<li>&lt;/head&gt;</li>
<li>&lt;body&gt;</li>
<li>&lt;div class=\&quot;bar\&quot;&gt;PURE-FTPD简易管理工具 &amp;nbsp; 孙博宇 &amp;nbsp; http://www.sunboyu.cn &amp;nbsp; QQ:176300676 &amp;nbsp; MSN:sunboyu@gmail.com&nbsp; &amp;nbsp; &quot;;</li>
<li>if(isset($_SESSION['user']))</li>
<li>{</li>
<li>&nbsp;&nbsp; &nbsp;echo &quot;&lt;input type=\&quot;button\&quot; name=\&quot;logout\&quot; id=\&quot;logout\&quot; value=\&quot;退出\&quot;&nbsp; onclick=\&quot;window.location.href='?action=logout'\&quot; /&gt;&quot;;</li>
<li>}</li>
<li>echo &quot;&lt;/div&gt;&quot;;</li>
<li>		break;</li>
<li>		case 1:</li>
<li>		&nbsp; &nbsp; echo &quot;&lt;/body&gt;</li>
<li>&lt;/html&gt;</li>
<li>			&quot;;</li>
<li>		break;</li>
<li>	}</li>
<li>&nbsp;&nbsp; &nbsp;</li>
<li>}</li>
<li>function checklogin( $type = false )</li>
<li>{</li>
<li>&nbsp;&nbsp; &nbsp;global $adminuser;</li>
<li>&nbsp;&nbsp; &nbsp;if(!isset($_SESSION['user']))</li>
<li>	{</li>
<li>		header(&quot;Location:&quot;.FILENAME.&quot;?action=userlogin&quot;);</li>
<li>	}</li>
<li>	if($type&amp;&amp;$_SESSION['user']!=$adminuser)</li>
<li>	{</li>
<li>	&nbsp; &nbsp; header(&quot;Location:&quot;.FILENAME.&quot;?action=adminlogin&quot;);</li>
<li>	}</li>
<li>}</li>
<li>&nbsp;</li>
<li>function func_userlogin( )</li>
<li>{</li>
<li>&nbsp;&nbsp; &nbsp;echo &quot;&lt;form name=\&quot;loginform\&quot; id=\&quot;loginform\&quot; action=\&quot;?action=userloginaction\&quot; method=\&quot;post\&quot;&gt;</li>
<li>&lt;table cellpadding=\&quot;0\&quot; cellspacing=\&quot;0\&quot; border=\&quot;0\&quot; style=\&quot;margin:0px;\&quot;&gt;</li>
<li>	&lt;tr&gt;</li>
<li>		&lt;td colspan=\&quot;2\&quot; align=\&quot;center\&quot;&gt;用户登录&lt;/td&gt;</li>
<li>	&lt;/tr&gt;</li>
<li>	&lt;tr&gt;</li>
<li>		&lt;td width=\&quot;60\&quot; align=\&quot;right\&quot;&gt;用户名&lt;/td&gt;&lt;td width=\&quot;200\&quot;&gt;&lt;input type=\&quot;text\&quot; name=\&quot;username\&quot; id=\&quot;username\&quot; /&gt;&lt;/td&gt;</li>
<li>	&lt;/tr&gt;</li>
<li>	&lt;tr&gt;</li>
<li>		&lt;td align=\&quot;right\&quot;&gt;密码&lt;/td&gt;&lt;td&gt;&lt;input type=\&quot;password\&quot; name=\&quot;password\&quot; id=\&quot;password\&quot; /&gt;&lt;/td&gt;</li>
<li>	&lt;/tr&gt;</li>
<li>	&lt;tr&gt;</li>
<li>		&lt;td align=\&quot;center\&quot; colspan=\&quot;2\&quot;&gt;&lt;input type=\&quot;submit\&quot; name=\&quot;submit\&quot; id=\&quot;submit\&quot; value=\&quot;登录\&quot; /&gt;&lt;input type=\&quot;hidden\&quot; name=\&quot;logintype\&quot; id=\&quot;logintype\&quot; value=\&quot;{$_GET['action']}\&quot; /&gt; &amp;nbsp; &quot;;</li>
<li>		if($_GET['action']==&quot;userlogin&quot;)</li>
<li>		{</li>
<li>		&nbsp; &nbsp; echo &quot;&lt;a href=\&quot;?action=adminlogin\&quot;&gt;管理员登录&lt;/a&gt;&quot;;</li>
<li>		}</li>
<li>		else</li>
<li>		{</li>
<li>		&nbsp; &nbsp; echo &quot;&lt;a href=\&quot;?action=userlogin\&quot;&gt;用户登录&lt;/a&gt;&quot;;</li>
<li>		}</li>
<li>		echo &quot;&lt;/td&gt;</li>
<li>	&lt;/tr&gt;</li>
<li>	&lt;tr&gt;</li>
<li>		&lt;td align=\&quot;center\&quot; colspan=\&quot;2\&quot;&gt;&quot;.(isset($_GET['error']) ? $_GET['error'] : &quot;&quot;).&quot;&lt;/td&gt;</li>
<li>	&lt;/tr&gt;</li>
<li>&lt;/table&gt;</li>
<li>&lt;/form&gt;</li>
<li>	&quot;;</li>
<li>}</li>
<li>&nbsp;</li>
<li>function func_getdb()</li>
<li>{</li>
<li>&nbsp;&nbsp; &nbsp;global $hostname,$username,$password,$datebase,$charset;</li>
<li>	$handle = @mysql_connect( $hostname , $username , $password , false ) or die(&quot;Can't connetc to the DateBse.&quot;.mysql_error());</li>
<li>	@mysql_select_db( $datebase , $handle ) or die(&quot;Can't select the DateBase&quot;.mysql_error());</li>
<li>	mysql_query( &quot;SET NAMES '{$charset}'&quot; , $handle );</li>
<li>	return $handle;</li>
<li>}</li>
<li>&nbsp;</li>
<li>function func_userloginaction( $usernames , $passwords , $logintype )</li>
<li>{</li>
<li>&nbsp;&nbsp; &nbsp;switch( $logintype )</li>
<li>	{</li>
<li>	&nbsp; &nbsp; case &quot;userlogin&quot;:</li>
<li>		&nbsp; &nbsp; global $table,$username,$password,$crypt;</li>
<li>			$handle = func_getdb();</li>
<li>			#echo &quot;SELECT COUNT(*) AS count FROM {$table} WHERE User = '{$usernames}' AND Password = &quot;.$crypt.&quot;('&quot;.$passwords.&quot;')&quot;;</li>
<li>			$query = mysql_query(&quot;SELECT COUNT(*) AS count FROM {$table} WHERE User = '{$usernames}' AND Password = &quot;.$crypt.&quot;('&quot;.$passwords.&quot;')&quot; , $handle);</li>
<li>			$row = mysql_fetch_array( $query, MYSQL_ASSOC );</li>
<li>			if($row['count']==1)</li>
<li>			{</li>
<li>				$_SESSION['user'] = $usernames;</li>
<li>				echo &quot;登录成功，跳转中……&quot;;</li>
<li>				echo &quot;&lt;meta http-equiv=\&quot;Refresh\&quot; content=\&quot;1; url=&quot;.FILENAME.&quot;?action=index\&quot;&gt;&quot;;</li>
<li>			}</li>
<li>			else</li>
<li>			{</li>
<li>				header(&quot;Location:&quot;.FILENAME.&quot;?action=userlogin&amp;error=&quot;.urlencode(&quot;用户名或者密码错误！&quot;));</li>
<li>			}</li>
<li>		break;</li>
<li>		case &quot;adminlogin&quot;:</li>
<li>		&nbsp; &nbsp; global $adminuser,$adminpass;</li>
<li>		&nbsp; &nbsp; if($adminuser==$usernames&amp;&amp;$adminpass==$passwords)</li>
<li>			{</li>
<li>			&nbsp; &nbsp; $_SESSION['user'] = $usernames;</li>
<li>				echo &quot;登录成功，跳转中……&quot;;</li>
<li>				echo &quot;&lt;/meta&gt;&lt;meta http-equiv=\&quot;Refresh\&quot; content=\&quot;1; url=&quot;.FILENAME.&quot;?action=index\&quot;&gt;&quot;;</li>
<li>			}</li>
<li>			else</li>
<li>			{</li>
<li>			&nbsp; &nbsp; header(&quot;Location:&quot;.FILENAME.&quot;?action=adminlogin&amp;error=&quot;.urlencode(&quot;用户名或者密码错误！&quot;));</li>
<li>			}</li>
<li>		break;</li>
<li>	}</li>
<li>}</li>
<li>&nbsp;</li>
<li>function func_user_index()</li>
<li>{</li>
<li>&nbsp;&nbsp; &nbsp;global $table,$username,$password,$crypt;</li>
<li>	$handle = func_getdb();</li>
<li>	$query = mysql_query(&quot;SELECT * FROM {$table} WHERE User = '{$_SESSION['user']}'&quot; , $handle);</li>
<li>	$row = mysql_fetch_array( $query, MYSQL_ASSOC );</li>
<li>&nbsp;&nbsp; &nbsp;echo &quot;&lt;form name=\&quot;userpassword\&quot; id=\&quot;userpassword\&quot; method=\&quot;post\&quot; action=\&quot;?action=userpasswordchang\&quot;&gt;</li>
<li>	&lt;table cellpadding=\&quot;0\&quot; cellspacing=\&quot;0\&quot; border=\&quot;1\&quot;&gt;</li>
<li>&nbsp;&nbsp; &nbsp;&lt;tr&gt;</li>
<li>	&nbsp; &nbsp; &lt;td colspan=\&quot;2\&quot; align=\&quot;center\&quot;&gt;服务器信息&lt;/td&gt;</li>
<li>	&lt;/tr&gt;</li>
<li>&nbsp;&nbsp; &nbsp;&lt;tr&gt;</li>
<li>	&nbsp; &nbsp; &lt;td width=\&quot;100\&quot; align=\&quot;right\&quot;&gt;ip&lt;/td&gt;&lt;td width=\&quot;500\&quot;&gt;&quot;.gethostbyname($_SERVER['SERVER_NAME']).&quot;&lt;/td&gt;</li>
<li>	&lt;/tr&gt;</li>
<li>	&lt;tr&gt;</li>
<li>	&nbsp; &nbsp; &lt;td colspan=\&quot;2\&quot; align=\&quot;center\&quot;&gt;账户信息&lt;/td&gt;</li>
<li>	&lt;/tr&gt;</li>
<li>	&lt;tr&gt;</li>
<li>	&nbsp; &nbsp; &lt;td width=\&quot;100\&quot; align=\&quot;right\&quot;&gt;用户名&lt;/td&gt;&lt;td width=\&quot;500\&quot;&gt;&quot;.$row['User'].&quot;&lt;/td&gt;</li>
<li>	&lt;/tr&gt;</li>
<li>	&lt;tr&gt;</li>
<li>	&nbsp; &nbsp; &lt;td width=\&quot;100\&quot; align=\&quot;right\&quot;&gt;修改密码&lt;/td&gt;&lt;td width=\&quot;500\&quot;&gt;&lt;input type=\&quot;password\&quot; name=\&quot;password\&quot; id=\&quot;password\&quot; /&gt; &amp;nbsp; &lt;input type=\&quot;submit\&quot; name=\&quot;submit\&quot; id=\&quot;submit\&quot; value=\&quot;修改\&quot; /&gt;&lt;/td&gt;</li>
<li>	&lt;/tr&gt;</li>
<li>	&lt;tr&gt;</li>
<li>	&nbsp; &nbsp; &lt;td width=\&quot;100\&quot; align=\&quot;right\&quot;&gt;Uid&lt;/td&gt;&lt;td width=\&quot;500\&quot;&gt;&quot;.$row['Uid'].&quot;&lt;/td&gt;</li>
<li>	&lt;/tr&gt;</li>
<li>	&lt;tr&gt;</li>
<li>	&nbsp; &nbsp; &lt;td width=\&quot;100\&quot; align=\&quot;right\&quot;&gt;Gid&lt;/td&gt;&lt;td width=\&quot;500\&quot;&gt;&quot;.$row['Gid'].&quot;&lt;/td&gt;</li>
<li>	&lt;/tr&gt;</li>
<li>	&lt;tr&gt;</li>
<li>	&nbsp; &nbsp; &lt;td width=\&quot;100\&quot; align=\&quot;right\&quot;&gt;Status&lt;/td&gt;&lt;td width=\&quot;500\&quot;&gt;&quot;.$row['status'].&quot;&lt;/td&gt;</li>
<li>	&lt;/tr&gt;</li>
<li>	&lt;tr&gt;</li>
<li>	&nbsp; &nbsp; &lt;td width=\&quot;100\&quot; align=\&quot;right\&quot;&gt;Dir&lt;/td&gt;&lt;td width=\&quot;500\&quot;&gt;&quot;.$row['Dir'].&quot;&lt;/td&gt;</li>
<li>	&lt;/tr&gt;</li>
<li>	&lt;tr&gt;</li>
<li>	&nbsp; &nbsp; &lt;td width=\&quot;100\&quot; align=\&quot;right\&quot;&gt;ULBandwidth&lt;/td&gt;&lt;td width=\&quot;500\&quot;&gt;&quot;.$row['ULBandwidth'].&quot;&lt;/td&gt;</li>
<li>	&lt;/tr&gt;</li>
<li>	&lt;tr&gt;</li>
<li>	&nbsp; &nbsp; &lt;td width=\&quot;100\&quot; align=\&quot;right\&quot;&gt;DLBandwidth&lt;/td&gt;&lt;td width=\&quot;500\&quot;&gt;&quot;.$row['DLBandwidth'].&quot;&lt;/td&gt;</li>
<li>	&lt;/tr&gt;</li>
<li>	&lt;tr&gt;</li>
<li>	&nbsp; &nbsp; &lt;td width=\&quot;100\&quot; align=\&quot;right\&quot;&gt;ipaccess&lt;/td&gt;&lt;td width=\&quot;500\&quot;&gt;&quot;.$row['ipaccess'].&quot;&lt;/td&gt;</li>
<li>	&lt;/tr&gt;</li>
<li>	&lt;tr&gt;</li>
<li>	&nbsp; &nbsp; &lt;td width=\&quot;100\&quot; align=\&quot;right\&quot;&gt;QuotaSize&lt;/td&gt;&lt;td width=\&quot;500\&quot;&gt;&quot;.$row['QuotaSize'].&quot;&lt;/td&gt;</li>
<li>	&lt;/tr&gt;</li>
<li>	&lt;tr&gt;</li>
<li>	&nbsp; &nbsp; &lt;td width=\&quot;100\&quot; align=\&quot;right\&quot;&gt;QuotaFiles&lt;/td&gt;&lt;td width=\&quot;500\&quot;&gt;&quot;.$row['QuotaFiles'].&quot;&lt;/td&gt;</li>
<li>	&lt;/tr&gt;</li>
<li>&lt;/table&gt;</li>
<li>&lt;/form&gt;</li>
<li>	&quot;;</li>
<li>}</li>
<li>&nbsp;</li>
<li>function user_password_chang( $password )</li>
<li>{</li>
<li>&nbsp;&nbsp; &nbsp;global $crypt,$table;</li>
<li>&nbsp;&nbsp; &nbsp;if(empty($password))</li>
<li>	{</li>
<li>	&nbsp; &nbsp; echo &quot;密码不能为空，修改失败……&quot;;</li>
<li>		echo &quot;&lt;/meta&gt;&lt;meta http-equiv=\&quot;Refresh\&quot; content=\&quot;1; url=&quot;.FILENAME.&quot;?action=index\&quot;&gt;&quot;;</li>
<li>	}</li>
<li>	else</li>
<li>	{</li>
<li>		$handle = func_getdb();</li>
<li>		$query = mysql_query(&quot;UPDATE {$table} SET Password = &quot;.$crypt.&quot;('&quot;.$password.&quot;') WHERE User = '{$_SESSION['user']}'&quot; , $handle);</li>
<li>		session_destroy();</li>
<li>		echo &quot;修改成功，请重新登录。如果新的密码不能登录，请尝试使用旧密码进行登录……&quot;;</li>
<li>		echo &quot;&lt;/meta&gt;&lt;meta http-equiv=\&quot;Refresh\&quot; content=\&quot;1; url=&quot;.FILENAME.&quot;?action=userlogin\&quot;&gt;&quot;;</li>
<li>	}</li>
<li>}</li>
<li>&nbsp;</li>
<li>function func_admin_index()</li>
<li>{</li>
<li>&nbsp;&nbsp; &nbsp;global $table,$username,$password,$crypt;</li>
<li>	$handle = func_getdb();</li>
<li>	$query = mysql_query(&quot;SELECT * FROM {$table} ORDER BY User ASC&quot; , $handle);</li>
<li>	echo &quot;&lt;script language=\&quot;javascript\&quot;&gt;</li>
<li>function del( username )</li>
<li>{</li>
<li>&nbsp;&nbsp; &nbsp;if(confirm('确认删除 '+username+'?'))</li>
<li>	{</li>
<li>	&nbsp; &nbsp; window.location.href=\&quot;?action=adminuserdel&amp;user=\&quot;+username;</li>
<li>	}</li>
<li>	else</li>
<li>	{</li>
<li>	&nbsp; &nbsp; return false;</li>
<li>	}</li>
<li>}</li>
<li>&lt;/script&gt;&lt;table cellpadding=\&quot;0\&quot; cellspacing=\&quot;0\&quot; border=\&quot;1\&quot;&gt;</li>
<li>&lt;tr&gt;</li>
<li>	&lt;td colspan=\&quot;4\&quot; align=\&quot;center\&quot;&gt;用户列表&lt;/td&gt;</li>
<li>	&lt;td align=\&quot;right\&quot;&gt;&lt;input type=\&quot;button\&quot; name=\&quot;add\&quot; id=\&quot;add\&quot; value=\&quot;添加账户\&quot; onclick=\&quot;window.location.href='?action=useradd'\&quot; /&gt;&lt;/td&gt;</li>
<li>&lt;/tr&gt;</li>
<li>&lt;tr&gt;</li>
<li>	&lt;td align=\&quot;center\&quot;&gt;账号&lt;/td&gt;</li>
<li>	&lt;td align=\&quot;center\&quot;&gt;Uid&lt;/td&gt;</li>
<li>	&lt;td align=\&quot;center\&quot;&gt;Gid&lt;/td&gt;</li>
<li>	&lt;td align=\&quot;center\&quot;&gt;Dir&lt;/td&gt;</li>
<li>	&lt;td align=\&quot;center\&quot;&gt;操作&lt;/td&gt;&nbsp; &nbsp;	 	</li>
<li>&lt;/tr&gt;&quot;;</li>
<li>	while( $row = mysql_fetch_array( $query, MYSQL_ASSOC ) )</li>
<li>	{</li>
<li>	&nbsp; &nbsp; echo &quot;&lt;tr&gt;</li>
<li>	&lt;td&gt;&quot;.$row['User'].&quot;&lt;/td&gt;</li>
<li>	&lt;td align=\&quot;center\&quot;&gt;&quot;.$row['Uid'].&quot;&lt;/td&gt;</li>
<li>	&lt;td align=\&quot;center\&quot;&gt;&quot;.$row['Gid'].&quot;&lt;/td&gt;</li>
<li>	&lt;td&gt;&quot;.$row['Dir'].&quot;&lt;/td&gt;</li>
<li>	&lt;td align=\&quot;center\&quot;&gt;&lt;input type=\&quot;button\&quot; name=\&quot;button\&quot; id=\&quot;button\&quot; value=\&quot;修改\&quot; onclick=\&quot;window.location.href='?action=adminchangeuserpassword&amp;user=&quot;.$row['User'].&quot;'\&quot; /&gt;</li>
<li>	&lt;input type=\&quot;button\&quot; name=\&quot;del\&quot; id=\&quot;del\&quot; value=\&quot;删除\&quot; onclick=\&quot;del('&quot;.$row['User'].&quot;')\&quot; /&gt;&lt;/td&gt;&nbsp; &nbsp;	 	</li>
<li>&lt;/tr&gt;&quot;;</li>
<li>	}</li>
<li>echo &quot;&lt;/table&gt;&quot;;</li>
<li>}</li>
<li>&nbsp;</li>
<li>function func_admin_user_edit( $user = false )</li>
<li>{</li>
<li>&nbsp;&nbsp; &nbsp;</li>
<li>&nbsp;&nbsp; &nbsp;if($user)</li>
<li>	{</li>
<li>	&nbsp; &nbsp; global $table,$crypt;</li>
<li>		$handle = func_getdb();</li>
<li>		$query = mysql_query(&quot;SELECT * FROM {$table} WHERE User = '&quot;.$user.&quot;'&quot; , $handle);</li>
<li>		$row = mysql_fetch_array( $query, MYSQL_ASSOC );</li>
<li>		if($row==false)</li>
<li>		{</li>
<li>		&nbsp; &nbsp; echo &quot;不存在这个用户……&quot;;</li>
<li>		&nbsp; &nbsp; echo &quot;&lt;/meta&gt;&lt;meta http-equiv=\&quot;Refresh\&quot; content=\&quot;1; url=&quot;.FILENAME.&quot;?action=index\&quot;&gt;&quot;;</li>
<li>			exit();</li>
<li>		}</li>
<li>		$action = &quot;edit&quot;;</li>
<li>	}</li>
<li>	else</li>
<li>	{</li>
<li>	&nbsp; &nbsp; $row[&quot;User&quot;] = &quot;&quot;;</li>
<li>		$row['Uid'] = &quot;&quot;;</li>
<li>		$row['Gid'] = &quot;&quot;;</li>
<li>		$row['status'] = 0;</li>
<li>		$row['Dir'] = &quot;&quot;;</li>
<li>		$row['ULBandwidth'] = 0;</li>
<li>		$row['DLBandwidth'] = 0;</li>
<li>		$row['ipaccess'] = &quot;*&quot;;</li>
<li>		$row['QuotaSize'] = 0;</li>
<li>		$row['QuotaFiles'] = 0;</li>
<li>		$action = &quot;add&quot;;</li>
<li>	}</li>
<li>echo &quot;&lt;form name=\&quot;userpassword\&quot; id=\&quot;userpassword\&quot; method=\&quot;post\&quot; action=\&quot;?action=userinfoac\&quot;&gt;</li>
<li>&lt;table cellpadding=\&quot;0\&quot; cellspacing=\&quot;0\&quot; border=\&quot;1\&quot;&gt;</li>
<li>	&lt;tr&gt;</li>
<li>	&nbsp; &nbsp; &lt;td colspan=\&quot;2\&quot; align=\&quot;center\&quot;&gt;账户信息&lt;/td&gt;</li>
<li>	&lt;/tr&gt;</li>
<li>	&lt;tr&gt;</li>
<li>	&nbsp; &nbsp; &lt;td width=\&quot;100\&quot; align=\&quot;right\&quot;&gt;用户名&lt;/td&gt;&lt;td width=\&quot;500\&quot;&gt;&quot;;</li>
<li>		if($action==&quot;add&quot;)</li>
<li>		{</li>
<li>		&nbsp; &nbsp; echo&nbsp; &quot;&lt;input type=\&quot;text\&quot; name=\&quot;User\&quot; id=\&quot;User\&quot; value=\&quot;&quot;.$row['User'].&quot;\&quot; /&gt;&quot;;</li>
<li>		}</li>
<li>		else</li>
<li>		{</li>
<li>		&nbsp; &nbsp; echo&nbsp; $row['User'].&quot;&lt;input type=\&quot;hidden\&quot; name=\&quot;User\&quot; id=\&quot;User\&quot; value=\&quot;&quot;.$row['User'].&quot;\&quot; /&gt;&quot;;</li>
<li>		}</li>
<li>		echo &quot;&lt;/td&gt;</li>
<li>	&lt;/tr&gt;</li>
<li>	&lt;tr&gt;</li>
<li>	&nbsp; &nbsp; &lt;td width=\&quot;100\&quot; align=\&quot;right\&quot;&gt;密码&lt;/td&gt;&lt;td width=\&quot;500\&quot;&gt;&lt;input type=\&quot;password\&quot; name=\&quot;password\&quot; id=\&quot;password\&quot; /&gt; &lt;/td&gt;</li>
<li>	&lt;/tr&gt;</li>
<li>	&lt;tr&gt;</li>
<li>	&nbsp; &nbsp; &lt;td width=\&quot;100\&quot; align=\&quot;right\&quot;&gt;Uid&lt;/td&gt;&lt;td width=\&quot;500\&quot;&gt; &lt;input type=\&quot;text\&quot; name=\&quot;Uid\&quot; id=\&quot;Uid\&quot; value=\&quot;&quot;.$row['Uid'].&quot;\&quot; /&gt;&lt;/td&gt;</li>
<li>	&lt;/tr&gt;</li>
<li>	&lt;tr&gt;</li>
<li>	&nbsp; &nbsp; &lt;td width=\&quot;100\&quot; align=\&quot;right\&quot;&gt;Gid&lt;/td&gt;&lt;td width=\&quot;500\&quot;&gt; &lt;input type=\&quot;text\&quot; name=\&quot;Gid\&quot; id=\&quot;Gid\&quot; value=\&quot;&quot;.$row['Gid'].&quot;\&quot; /&gt;&lt;/td&gt;</li>
<li>	&lt;/tr&gt;</li>
<li>	&lt;tr&gt;</li>
<li>	&nbsp; &nbsp; &lt;td width=\&quot;100\&quot; align=\&quot;right\&quot;&gt;Status&lt;/td&gt;&lt;td width=\&quot;500\&quot;&gt; &lt;input type=\&quot;text\&quot; name=\&quot;status\&quot; id=\&quot;status\&quot; value=\&quot;&quot;.$row['status'].&quot;\&quot; /&gt;&lt;/td&gt;</li>
<li>	&lt;/tr&gt;</li>
<li>	&lt;tr&gt;</li>
<li>	&nbsp; &nbsp; &lt;td width=\&quot;100\&quot; align=\&quot;right\&quot;&gt;Dir&lt;/td&gt;&lt;td width=\&quot;500\&quot;&gt; &lt;input type=\&quot;text\&quot; name=\&quot;Dir\&quot; id=\&quot;Dir\&quot; value=\&quot;&quot;.$row['Dir'].&quot;\&quot; /&gt;&lt;/td&gt;</li>
<li>	&lt;/tr&gt;</li>
<li>	&lt;tr&gt;</li>
<li>	&nbsp; &nbsp; &lt;td width=\&quot;100\&quot; align=\&quot;right\&quot;&gt;ULBandwidth&lt;/td&gt;&lt;td width=\&quot;500\&quot;&gt; &lt;input type=\&quot;text\&quot; name=\&quot;ULBandwidth\&quot; id=\&quot;ULBandwidth\&quot; value=\&quot;&quot;.$row['ULBandwidth'].&quot;\&quot; /&gt;&lt;/td&gt;</li>
<li>	&lt;/tr&gt;</li>
<li>	&lt;tr&gt;</li>
<li>	&nbsp; &nbsp; &lt;td width=\&quot;100\&quot; align=\&quot;right\&quot;&gt;DLBandwidth&lt;/td&gt;&lt;td width=\&quot;500\&quot;&gt; &lt;input type=\&quot;text\&quot; name=\&quot;DLBandwidth\&quot; id=\&quot;DLBandwidth\&quot; value=\&quot;&quot;.$row['DLBandwidth'].&quot;\&quot; /&gt;&lt;/td&gt;</li>
<li>	&lt;/tr&gt;</li>
<li>	&lt;tr&gt;</li>
<li>	&nbsp; &nbsp; &lt;td width=\&quot;100\&quot; align=\&quot;right\&quot;&gt;ipaccess&lt;/td&gt;&lt;td width=\&quot;500\&quot;&gt; &lt;input type=\&quot;text\&quot; name=\&quot;ipaccess\&quot; id=\&quot;ipaccess\&quot; value=\&quot;&quot;.$row['ipaccess'].&quot;\&quot; /&gt;&lt;/td&gt;</li>
<li>	&lt;/tr&gt;</li>
<li>	&lt;tr&gt;</li>
<li>	&nbsp; &nbsp; &lt;td width=\&quot;100\&quot; align=\&quot;right\&quot;&gt;QuotaSize&lt;/td&gt;&lt;td width=\&quot;500\&quot;&gt; &lt;input type=\&quot;text\&quot; name=\&quot;QuotaSize\&quot; id=\&quot;QuotaSize\&quot; value=\&quot;&quot;.$row['QuotaSize'].&quot;\&quot; /&gt;&lt;/td&gt;</li>
<li>	&lt;/tr&gt;</li>
<li>	&lt;tr&gt;</li>
<li>	&nbsp; &nbsp; &lt;td width=\&quot;100\&quot; align=\&quot;right\&quot;&gt;QuotaFiles&lt;/td&gt;&lt;td width=\&quot;500\&quot;&gt; &lt;input type=\&quot;text\&quot; name=\&quot;QuotaFiles\&quot; id=\&quot;QuotaFiles\&quot; value=\&quot;&quot;.$row['QuotaFiles'].&quot;\&quot; /&gt;&lt;/td&gt;</li>
<li>	&lt;/tr&gt;</li>
<li>	&lt;tr&gt;</li>
<li>	&nbsp; &nbsp; &lt;td align=\&quot;center\&quot; colspan=\&quot;2\&quot;&gt;&lt;input type=\&quot;submit\&quot; name=\&quot;submit\&quot; id=\&quot;submit\&quot; value=\&quot;提交\&quot; /&gt; &lt;input type=\&quot;button\&quot; name=\&quot;back\&quot; id=\&quot;back\&quot; onclick=\&quot;window.history.go(-1)\&quot; value=\&quot;返回\&quot; /&gt; &lt;input type=\&quot;hidden\&quot; name=\&quot;action\&quot; id=\&quot;action\&quot; value=\&quot;&quot;.$action.&quot;\&quot; /&gt;&lt;/td&gt;</li>
<li>	&lt;/tr&gt;</li>
<li>&lt;/table&gt;</li>
<li>&lt;/form&gt;&quot;;</li>
<li>}</li>
<li>&nbsp;</li>
<li>function func_admin_useredit()</li>
<li>{</li>
<li>&nbsp;&nbsp; &nbsp;global $table,$crypt;</li>
<li>	$handle = func_getdb();</li>
<li>	$query = mysql_query(&quot;SELECT * FROM {$table} WHERE User = '&quot;.$_POST['User'].&quot;'&quot; , $handle);</li>
<li>	$row = mysql_fetch_array( $query, MYSQL_ASSOC );</li>
<li>	if($row==false)</li>
<li>	{</li>
<li>		echo &quot;不存在这个用户……&quot;;</li>
<li>		echo &quot;&lt;/meta&gt;&lt;meta http-equiv=\&quot;Refresh\&quot; content=\&quot;1; url=&quot;.FILENAME.&quot;?action=index\&quot;&gt;&quot;;</li>
<li>		exit();</li>
<li>	}</li>
<li>	$query = mysql_query(&quot;UPDATE {$table} SET password = &quot;.$crypt.&quot;('&quot;.$_POST['password'].&quot;') , Uid = {$_POST['Uid']} , Gid = {$_POST['Gid']} , status = '{$_POST['status']}' , Dir = '{$_POST['Dir']}' , ULBandwidth = {$_POST['ULBandwidth']} , DLBandwidth = {$_POST['DLBandwidth']} , ipaccess = '{$_POST['ipaccess']}' , QuotaSize = {$_POST['QuotaSize']} , QuotaFiles = {$_POST['QuotaFiles']} WHERE User = '{$_POST['User']}'&quot;);</li>
<li>	if($query)</li>
<li>	{</li>
<li>	&nbsp; &nbsp; echo &quot;修改成功，稍后返回……&quot;;</li>
<li>	}</li>
<li>	else</li>
<li>	{</li>
<li>	&nbsp; &nbsp; echo &quot;修改失败，请仔细检查每个参数……&quot;;</li>
<li>	}</li>
<li>	echo &quot;&lt;/meta&gt;&lt;meta http-equiv=\&quot;Refresh\&quot; content=\&quot;1; url=&quot;.FILENAME.&quot;?action=index\&quot;&gt;&quot;;</li>
<li>	exit();</li>
<li>}</li>
<li>&nbsp;</li>
<li>function func_admin_useradd()</li>
<li>{</li>
<li>&nbsp;&nbsp; &nbsp;global $table,$crypt;</li>
<li>	$handle = func_getdb();</li>
<li>	$query = mysql_query(&quot;SELECT * FROM {$table} WHERE User = '&quot;.$_POST['User'].&quot;'&quot; , $handle);</li>
<li>	$row = mysql_fetch_array( $query, MYSQL_ASSOC );</li>
<li>	if($row)</li>
<li>	{</li>
<li>		echo &quot;用户已经存在……&quot;;</li>
<li>		echo &quot;&lt;/meta&gt;&lt;meta http-equiv=\&quot;Refresh\&quot; content=\&quot;1; url=&quot;.FILENAME.&quot;?action=index\&quot;&gt;&quot;;</li>
<li>		exit();</li>
<li>	}</li>
<li>	$query = mysql_query(&quot;INSERT INTO {$table} SET password = &quot;.$crypt.&quot;('&quot;.$_POST['password'].&quot;') , Uid = {$_POST['Uid']} , Gid = {$_POST['Gid']} , status = '{$_POST['status']}' , Dir = '{$_POST['Dir']}' , ULBandwidth = {$_POST['ULBandwidth']} , DLBandwidth = {$_POST['DLBandwidth']} , ipaccess = '{$_POST['ipaccess']}' , QuotaSize = {$_POST['QuotaSize']} , QuotaFiles = {$_POST['QuotaFiles']} , User = '{$_POST['User']}' , comment = ''&quot;);</li>
<li>	if($query)</li>
<li>	{</li>
<li>	&nbsp; &nbsp; echo &quot;添加成功，稍后返回……&quot;;</li>
<li>	}</li>
<li>	else</li>
<li>	{</li>
<li>	&nbsp; &nbsp; echo &quot;添加失败，请仔细检查每个参数……&quot;;</li>
<li>	}</li>
<li>	echo &quot;&lt;/meta&gt;&lt;meta http-equiv=\&quot;Refresh\&quot; content=\&quot;1; url=&quot;.FILENAME.&quot;?action=index\&quot;&gt;&quot;;</li>
<li>	exit();</li>
<li>}</li>
<li>&nbsp;</li>
<li>function func_user_del( $user )</li>
<li>{</li>
<li>&nbsp;&nbsp; &nbsp;global $table;</li>
<li>	$handle = func_getdb();</li>
<li>	$query = mysql_query(&quot;DELETE FROM {$table} WHERE User = '{$user}'&quot; , $handle);</li>
<li>	if($query)</li>
<li>	{</li>
<li>	&nbsp; &nbsp; echo &quot;删除成功，稍后返回……&quot;;</li>
<li>	}</li>
<li>	else</li>
<li>	{</li>
<li>	&nbsp; &nbsp; echo &quot;删除失败，稍后返回……&quot;;</li>
<li>	}</li>
<li>	echo &quot;&lt;/meta&gt;&lt;meta http-equiv=\&quot;Refresh\&quot; content=\&quot;1; url=&quot;.FILENAME.&quot;?action=index\&quot;&gt;&quot;;</li>
<li>}</li>
<li>&nbsp;</li>
<li>function func_logout()</li>
<li>{</li>
<li>&nbsp;&nbsp; &nbsp;session_destroy();</li>
<li>	echo &quot;退出成功……&quot;;</li>
<li>	echo &quot;&lt;/meta&gt;&lt;meta http-equiv=\&quot;Refresh\&quot; content=\&quot;1; url=&quot;.FILENAME.&quot;?action=userlogin\&quot;&gt;&quot;;</li>
<li>}</li>
<li>?&gt;</li>
<li>&lt;/meta&gt;</li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/07/10/php%e5%bc%80%e5%8f%91%e7%9a%84%e4%b8%80%e4%b8%aapureftpd%e7%ae%a1%e7%90%86%e5%b7%a5%e5%85%b7.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>故地重游，不一样的感觉</title>
		<link>http://www.sunboyu.cn/2009/07/08/%e6%95%85%e5%9c%b0%e9%87%8d%e6%b8%b8%ef%bc%8c%e4%b8%8d%e4%b8%80%e6%a0%b7%e7%9a%84%e6%84%9f%e8%a7%89.shtml</link>
		<comments>http://www.sunboyu.cn/2009/07/08/%e6%95%85%e5%9c%b0%e9%87%8d%e6%b8%b8%ef%bc%8c%e4%b8%8d%e4%b8%80%e6%a0%b7%e7%9a%84%e6%84%9f%e8%a7%89.shtml#comments</comments>
		<pubDate>Wed, 08 Jul 2009 06:10:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[感悟]]></category>

		<category><![CDATA[服务]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=846</guid>
		<description><![CDATA[帮一个朋友搞点东西，发现，他居然跟我的老东家合作的。呵呵，如果我在老东家那里继续任职，这个客户就是我的客户。
登陆原来公司的服务器，很有重归故里的感觉，可现在，我成了局外人。
公司做大了，服务反而差了，这另我很失望。一个优秀的公司不断发展，对外的服务也必须提升，这样才能良性的循环。
就算站最后的局外岗，服务做好！
]]></description>
			<content:encoded><![CDATA[<p>帮一个朋友搞点东西，发现，他居然跟我的老东家合作的。呵呵，如果我在老东家那里继续任职，这个客户就是我的客户。</p>
<p>登陆原来公司的服务器，很有重归故里的感觉，可现在，我成了局外人。</p>
<p>公司做大了，服务反而差了，这另我很失望。一个优秀的公司不断发展，对外的服务也必须提升，这样才能良性的循环。</p>
<p>就算站最后的局外岗，服务做好！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/07/08/%e6%95%85%e5%9c%b0%e9%87%8d%e6%b8%b8%ef%bc%8c%e4%b8%8d%e4%b8%80%e6%a0%b7%e7%9a%84%e6%84%9f%e8%a7%89.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>RSS解析类-SimplePie</title>
		<link>http://www.sunboyu.cn/2009/07/08/rss%e8%a7%a3%e6%9e%90%e7%b1%bb-simplepie.shtml</link>
		<comments>http://www.sunboyu.cn/2009/07/08/rss%e8%a7%a3%e6%9e%90%e7%b1%bb-simplepie.shtml#comments</comments>
		<pubDate>Wed, 08 Jul 2009 01:31:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[rss]]></category>

		<category><![CDATA[simplepie]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=844</guid>
		<description><![CDATA[最近做一个RSS解析调用的东东，研究了rss2.0的协议，发现自己去写解析程序会要命的，于是找了个开源的php rss解析类，发现完全可以满足需求，故推荐给大家。虽然有一些bug，但是可以绕过，不影响主要字段显示，先这么用着。底下写了个demo：
$this-&#62;load(&#34;SimplePie&#34;,&#34;http://www.sunboyu.cn/feed&#34;);&#160; &#160;#自己写的框架，load是加载类的方法，可根据自己的情况进行修改 new Simplepie()
$this-&#62;SimplePie-&#62;strip_comments(true);
$this-&#62;SimplePie-&#62;enable_xml_dump( false );
$this-&#62;SimplePie-&#62;init();
$this-&#62;SimplePie-&#62;handle_content_type();
&#160;
foreach( $r as $item ):
&#160;&#160; &#160;echo &#34;&#60;font color=\&#34;red\&#34;&#62;标题&#60;/font&#62;&#160; &#34;.$item-&#62;get_title();
&#160;&#160; &#160;echo &#34;&#60;br /&#62;&#34;;
&#160;&#160; &#160;echo &#34;&#60;font color=\&#34;red\&#34;&#62;链接&#60;/font&#62;&#160; &#34;.$item-&#62;get_link();
&#160;&#160; &#160;echo &#34;&#60;br /&#62;&#34;;
&#160;&#160; &#160;echo &#34;&#60;font color=\&#34;red\&#34;&#62;链接&#60;/font&#62;&#160; &#34;.$item-&#62;get_id();
&#160;&#160; &#160;echo &#34;&#60;br /&#62;&#34;;
&#160;&#160; &#160;echo &#34;&#60;font color=\&#34;red\&#34;&#62;更新时间&#60;/font&#62;&#160; &#34;.strtotime($item-&#62;get_date());
&#160;&#160; &#160;echo &#34;&#60;br /&#62;&#34;;
&#160;&#160; &#160;$authors = $item-&#62;get_authors();
&#160;&#160; &#160;echo &#34;&#60;font color=\&#34;red\&#34;&#62;作者&#60;/font&#62;&#160; &#34;.$authors[0]-&#62;name;
&#160;&#160; &#160;echo &#34;&#60;br /&#62;&#34;;
&#160;&#160; &#160;echo &#34;&#60;font color=\&#34;red\&#34;&#62;描述&#60;/font&#62;&#160; &#34;.$item-&#62;get_description();
&#160;&#160; &#160;echo &#34;&#60;br [...]]]></description>
			<content:encoded><![CDATA[<p>最近做一个RSS解析调用的东东，研究了rss2.0的协议，发现自己去写解析程序会要命的，于是找了个开源的php rss解析类，发现完全可以满足需求，故推荐给大家。虽然有一些bug，但是可以绕过，不影响主要字段显示，先这么用着。底下写了个demo：</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">$this-&gt;load(&quot;SimplePie&quot;,&quot;http://www.sunboyu.cn/feed&quot;);&nbsp; &nbsp;#自己写的框架，load是加载类的方法，可根据自己的情况进行修改 new Simplepie()</li>
<li>$this-&gt;SimplePie-&gt;strip_comments(true);</li>
<li>$this-&gt;SimplePie-&gt;enable_xml_dump( false );</li>
<li>$this-&gt;SimplePie-&gt;init();</li>
<li>$this-&gt;SimplePie-&gt;handle_content_type();</li>
<li>&nbsp;</li>
<li>foreach( $r as $item ):</li>
<li>&nbsp;&nbsp; &nbsp;echo &quot;&lt;font color=\&quot;red\&quot;&gt;标题&lt;/font&gt;&nbsp; &quot;.$item-&gt;get_title();</li>
<li>&nbsp;&nbsp; &nbsp;echo &quot;&lt;br /&gt;&quot;;</li>
<li>&nbsp;&nbsp; &nbsp;echo &quot;&lt;font color=\&quot;red\&quot;&gt;链接&lt;/font&gt;&nbsp; &quot;.$item-&gt;get_link();</li>
<li>&nbsp;&nbsp; &nbsp;echo &quot;&lt;br /&gt;&quot;;</li>
<li>&nbsp;&nbsp; &nbsp;echo &quot;&lt;font color=\&quot;red\&quot;&gt;链接&lt;/font&gt;&nbsp; &quot;.$item-&gt;get_id();</li>
<li>&nbsp;&nbsp; &nbsp;echo &quot;&lt;br /&gt;&quot;;</li>
<li>&nbsp;&nbsp; &nbsp;echo &quot;&lt;font color=\&quot;red\&quot;&gt;更新时间&lt;/font&gt;&nbsp; &quot;.strtotime($item-&gt;get_date());</li>
<li>&nbsp;&nbsp; &nbsp;echo &quot;&lt;br /&gt;&quot;;</li>
<li>&nbsp;&nbsp; &nbsp;$authors = $item-&gt;get_authors();</li>
<li>&nbsp;&nbsp; &nbsp;echo &quot;&lt;font color=\&quot;red\&quot;&gt;作者&lt;/font&gt;&nbsp; &quot;.$authors[0]-&gt;name;</li>
<li>&nbsp;&nbsp; &nbsp;echo &quot;&lt;br /&gt;&quot;;</li>
<li>&nbsp;&nbsp; &nbsp;echo &quot;&lt;font color=\&quot;red\&quot;&gt;描述&lt;/font&gt;&nbsp; &quot;.$item-&gt;get_description();</li>
<li>&nbsp;&nbsp; &nbsp;echo &quot;&lt;br /&gt;&quot;;</li>
<li>&nbsp;&nbsp; &nbsp;echo $item-&gt;get_local_date();</li>
<li>&nbsp;&nbsp; &nbsp;echo &quot;&lt;br /&gt;&quot;;</li>
<li>&nbsp;&nbsp; &nbsp;echo &quot;&lt;font color=\&quot;red\&quot;&gt;正文&lt;/font&gt;&nbsp; &quot;.$item-&gt;get_content();</li>
<li>&nbsp;&nbsp; &nbsp;echo &quot;&lt;br /&gt;&lt;br /&gt;&quot;;</li>
<li>foreachend;</li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/07/08/rss%e8%a7%a3%e6%9e%90%e7%b1%bb-simplepie.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>漂移的下场</title>
		<link>http://www.sunboyu.cn/2009/07/01/%e6%bc%82%e7%a7%bb%e7%9a%84%e4%b8%8b%e5%9c%ba.shtml</link>
		<comments>http://www.sunboyu.cn/2009/07/01/%e6%bc%82%e7%a7%bb%e7%9a%84%e4%b8%8b%e5%9c%ba.shtml#comments</comments>
		<pubDate>Wed, 01 Jul 2009 03:58:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<category><![CDATA[漂移]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=837</guid>
		<description><![CDATA[下班推车，突然发现后轮撒气了，以为是有人搞破坏。
去修车师傅那里一看，后胎有个小孔，应该是我骑行下台阶造，局部张力骤大造成。
顺便检查了一下外胎，发现伤痕累累，漂移所致。
玩车真是个费钱的营生。

车胎的赤坏了好多

前胎还好

后胎，基本被磨平了
]]></description>
			<content:encoded><![CDATA[<p>下班推车，突然发现后轮撒气了，以为是有人搞破坏。</p>
<p>去修车师傅那里一看，后胎有个小孔，应该是我骑行下台阶造，局部张力骤大造成。</p>
<p>顺便检查了一下外胎，发现伤痕累累，漂移所致。</p>
<p>玩车真是个费钱的营生。</p>
<p><a href="http://www.sunboyu.cn/upfiles/2009/07/1.jpg"><img src="http://www.sunboyu.cn/upfiles/2009/07/1.jpg" alt="1" title="1" width="800" height="705" class="aligncenter size-full wp-image-838" /></a><br />
车胎的赤坏了好多</p>
<p><a href="http://www.sunboyu.cn/upfiles/2009/07/2.jpg"><img src="http://www.sunboyu.cn/upfiles/2009/07/2.jpg" alt="2" title="2" width="800" height="411" class="aligncenter size-full wp-image-839" /></a><br />
前胎还好</p>
<p><a href="http://www.sunboyu.cn/upfiles/2009/07/3.jpg"><img src="http://www.sunboyu.cn/upfiles/2009/07/3.jpg" alt="3" title="3" width="800" height="426" class="aligncenter size-full wp-image-840" /></a><br />
后胎，基本被磨平了</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/07/01/%e6%bc%82%e7%a7%bb%e7%9a%84%e4%b8%8b%e5%9c%ba.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>网游时代的单机霸王</title>
		<link>http://www.sunboyu.cn/2009/07/01/%e7%bd%91%e6%b8%b8%e6%97%b6%e4%bb%a3%e7%9a%84%e5%8d%95%e6%9c%ba%e9%9c%b8%e7%8e%8b.shtml</link>
		<comments>http://www.sunboyu.cn/2009/07/01/%e7%bd%91%e6%b8%b8%e6%97%b6%e4%bb%a3%e7%9a%84%e5%8d%95%e6%9c%ba%e9%9c%b8%e7%8e%8b.shtml#comments</comments>
		<pubDate>Tue, 30 Jun 2009 21:22:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<category><![CDATA[植物大战僵尸]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=835</guid>
		<description><![CDATA[写这个标题有点标题党了，但除了红警之外，还没有哪个即时战略游戏让我如此痴迷。
《植物大战僵尸》是宝开公司出品的一款单机小游戏，游戏压缩包才59.9M  http://www.verycd.com/topics/2745208/  的确是一款不大的游戏。
麻雀虽小，五脏俱全，游戏集成了战略对抗、卡片、升级、金钱、mini小游戏、多种场景于一体，多种搞笑的植物武器和很Q的僵尸造型和动作，使简单的情节变得如此生动。
游戏在2009年五月五日出品，但国内在之前似乎已经流传预览版。游戏迅速的推广，给当今网游界很大警示：什么样的游戏才是用户最喜欢的。
今天我又在挂机，单机游戏挂机，很好玩吧。因为我得让我的蜗牛在菜园子里不断收获金币，来购买更厉害的武器。
PS：
最近玩这个游戏，学习时间自然减少，不过已经开始flex的学习。
顺便改造一下我的框架，来进行新的项目。
]]></description>
			<content:encoded><![CDATA[<p>写这个标题有点标题党了，但除了红警之外，还没有哪个即时战略游戏让我如此痴迷。</p>
<p>《植物大战僵尸》是<a href="http://www.popcap.com/">宝开公司</a>出品的一款单机小游戏，游戏压缩包才59.9M  http://www.verycd.com/topics/2745208/  的确是一款不大的游戏。</p>
<p>麻雀虽小，五脏俱全，游戏集成了战略对抗、卡片、升级、金钱、mini小游戏、多种场景于一体，多种搞笑的植物武器和很Q的僵尸造型和动作，使简单的情节变得如此生动。</p>
<p>游戏在2009年五月五日出品，但国内在之前似乎已经流传预览版。游戏迅速的推广，给当今网游界很大警示：什么样的游戏才是用户最喜欢的。</p>
<p>今天我又在挂机，单机游戏挂机，很好玩吧。因为我得让我的蜗牛在菜园子里不断收获金币，来购买更厉害的武器。</p>
<p>PS：</p>
<p>最近玩这个游戏，学习时间自然减少，不过已经开始flex的学习。</p>
<p>顺便改造一下我的框架，来进行新的项目。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/07/01/%e7%bd%91%e6%b8%b8%e6%97%b6%e4%bb%a3%e7%9a%84%e5%8d%95%e6%9c%ba%e9%9c%b8%e7%8e%8b.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>HTML1.5来了</title>
		<link>http://www.sunboyu.cn/2009/07/01/html15%e6%9d%a5%e4%ba%86.shtml</link>
		<comments>http://www.sunboyu.cn/2009/07/01/html15%e6%9d%a5%e4%ba%86.shtml#comments</comments>
		<pubDate>Tue, 30 Jun 2009 20:06:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[技术存档]]></category>

		<category><![CDATA[flex]]></category>

		<category><![CDATA[html1.5]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=832</guid>
		<description><![CDATA[今天下载了firefox3.5，其中惊现HTML1.5标签。
看来真正的富媒体时代到来，html有赶超flex的势头？
&#60;video id=&#34;video&#34; src=&#34;http://www.dailymotion.com/cdn/OGG-320x240/video/x9euyb?key=a99e7056808342ad0868b4decfe811c814044ec&#34;&#62;&#60;/video&#62;
]]></description>
			<content:encoded><![CDATA[<p>今天下载了firefox3.5，其中惊现HTML1.5标签。</p>
<p>看来真正的富媒体时代到来，html有赶超flex的势头？</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">&lt;video id=&quot;video&quot; src=&quot;http://www.dailymotion.com/cdn/OGG-320x240/video/x9euyb?key=a99e7056808342ad0868b4decfe811c814044ec&quot;&gt;&lt;/video&gt;</li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/07/01/html15%e6%9d%a5%e4%ba%86.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>我终于堕落了，开始搞前端技术</title>
		<link>http://www.sunboyu.cn/2009/06/29/%e6%88%91%e7%bb%88%e4%ba%8e%e5%a0%95%e8%90%bd%e4%ba%86%ef%bc%8c%e5%bc%80%e5%a7%8b%e6%90%9e%e5%89%8d%e7%ab%af%e6%8a%80%e6%9c%af.shtml</link>
		<comments>http://www.sunboyu.cn/2009/06/29/%e6%88%91%e7%bb%88%e4%ba%8e%e5%a0%95%e8%90%bd%e4%ba%86%ef%bc%8c%e5%bc%80%e5%a7%8b%e6%90%9e%e5%89%8d%e7%ab%af%e6%8a%80%e6%9c%af.shtml#comments</comments>
		<pubDate>Sun, 28 Jun 2009 20:31:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<category><![CDATA[flex]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=828</guid>
		<description><![CDATA[
好久没买书了，周末烈日炎炎，购书一本。
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.sunboyu.cn/upfiles/2009/06/flex-3-cookbook.jpg"><img src="http://www.sunboyu.cn/upfiles/2009/06/flex-3-cookbook.jpg" alt="flex-3-cookbook" title="flex-3-cookbook" width="240" height="240" class="aligncenter size-full wp-image-829" /></a></p>
<p>好久没买书了，周末烈日炎炎，购书一本。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/06/29/%e6%88%91%e7%bb%88%e4%ba%8e%e5%a0%95%e8%90%bd%e4%ba%86%ef%bc%8c%e5%bc%80%e5%a7%8b%e6%90%9e%e5%89%8d%e7%ab%af%e6%8a%80%e6%9c%af.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>我为什么总反对用微软的东西做企业级应用</title>
		<link>http://www.sunboyu.cn/2009/06/26/%e6%88%91%e4%b8%ba%e4%bb%80%e4%b9%88%e6%80%bb%e5%8f%8d%e5%af%b9%e7%94%a8%e5%be%ae%e8%bd%af%e7%9a%84%e4%b8%9c%e8%a5%bf%e5%81%9a%e4%bc%81%e4%b8%9a%e7%ba%a7%e5%ba%94%e7%94%a8.shtml</link>
		<comments>http://www.sunboyu.cn/2009/06/26/%e6%88%91%e4%b8%ba%e4%bb%80%e4%b9%88%e6%80%bb%e5%8f%8d%e5%af%b9%e7%94%a8%e5%be%ae%e8%bd%af%e7%9a%84%e4%b8%9c%e8%a5%bf%e5%81%9a%e4%bc%81%e4%b8%9a%e7%ba%a7%e5%ba%94%e7%94%a8.shtml#comments</comments>
		<pubDate>Fri, 26 Jun 2009 05:01:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[相当拍砖]]></category>

		<category><![CDATA[bug]]></category>

		<category><![CDATA[微软]]></category>

		<category><![CDATA[计算]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=819</guid>
		<description><![CDATA[其实，我反对微软，只是反对他的不开源，蓝屏，其应用在中小企业项目中的性价比。
自从SAP里做开发的一个同学给我做了一个很简单的演示，让我彻底明白微软为什么围绕中小企业，甚至中小企业的产品都做不好。

简单目算一下，你有何感想。
大家在任意一个版本的excel上测试一下。这只是一个最简单的例子，如果你用.NET框架去做产品，可想而知，你的风险有多大。
再看google

精确度提升一个小数点，但这种处理差强人意，从数学上，33.3×3依然不等于百分之百。
]]></description>
			<content:encoded><![CDATA[<p>其实，我反对微软，只是反对他的不开源，蓝屏，其应用在中小企业项目中的性价比。</p>
<p>自从SAP里做开发的一个同学给我做了一个很简单的演示，让我彻底明白微软为什么围绕中小企业，甚至中小企业的产品都做不好。</p>
<p><a href="http://www.sunboyu.cn/upfiles/2009/06/e5beaee8bdaf.jpg"><img src="http://www.sunboyu.cn/upfiles/2009/06/e5beaee8bdaf.jpg" alt="e5beaee8bdaf" title="e5beaee8bdaf" width="905" height="640" class="aligncenter size-full wp-image-820" /></a></p>
<p>简单目算一下，你有何感想。</p>
<p>大家在任意一个版本的excel上测试一下。这只是一个最简单的例子，如果你用.NET框架去做产品，可想而知，你的风险有多大。</p>
<p>再看google</p>
<p><a href="http://www.sunboyu.cn/upfiles/2009/06/e69caae591bde5908d-1.jpg"><img src="http://www.sunboyu.cn/upfiles/2009/06/e69caae591bde5908d-1.jpg" alt="e69caae591bde5908d-1" title="e69caae591bde5908d-1" width="471" height="418" class="aligncenter size-full wp-image-824" /></a></p>
<p>精确度提升一个小数点，但这种处理差强人意，从数学上，33.3×3依然不等于百分之百。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/06/26/%e6%88%91%e4%b8%ba%e4%bb%80%e4%b9%88%e6%80%bb%e5%8f%8d%e5%af%b9%e7%94%a8%e5%be%ae%e8%bd%af%e7%9a%84%e4%b8%9c%e8%a5%bf%e5%81%9a%e4%bc%81%e4%b8%9a%e7%ba%a7%e5%ba%94%e7%94%a8.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>初创公司的运维应该怎么做（lamp架构）2</title>
		<link>http://www.sunboyu.cn/2009/06/24/%e5%88%9d%e5%88%9b%e5%85%ac%e5%8f%b8%e7%9a%84%e8%bf%90%e7%bb%b4%e5%ba%94%e8%af%a5%e6%80%8e%e4%b9%88%e5%81%9a%ef%bc%88lamp%e6%9e%b6%e6%9e%84%ef%bc%892.shtml</link>
		<comments>http://www.sunboyu.cn/2009/06/24/%e5%88%9d%e5%88%9b%e5%85%ac%e5%8f%b8%e7%9a%84%e8%bf%90%e7%bb%b4%e5%ba%94%e8%af%a5%e6%80%8e%e4%b9%88%e5%81%9a%ef%bc%88lamp%e6%9e%b6%e6%9e%84%ef%bc%892.shtml#comments</comments>
		<pubDate>Wed, 24 Jun 2009 10:08:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[原创技术]]></category>

		<category><![CDATA[初创公司]]></category>

		<category><![CDATA[运维]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=815</guid>
		<description><![CDATA[今天活进度不错，闲下来再扯几句，接上篇： 初创公司的运维应该怎么做（lamp架构）
事情总得发展，一不小心就会发展到两台以上的服务器。
这时候，如何部署就是问题了，既要节约硬件带宽资源，省钱，又要充分发挥我们硬件的特性。
1、数据库，总得做个热备吧，主从复制，两个服务器就足够，当然更多的话，你可以多个从数据库。这时候主服务器挂了，备份的数据库可以立马变成主数据库进行工作，而主数据库又变成从的，这样达到无缝的切换。数据库多了，写压力集中在主数据库，而从数据库就可以分担读的压力。一般系统读压力大大高于写压力（特殊的系统除外），这样我们把其他服务器的CPU还能合理利用上。
2、如果但是数据库分到其他服务器上，CPU看似是充分利用了，带宽也得去利用。mysql同步走内网流量，自己用switch相连，而其他服务器同样可以分担http的负载。这时候，我们要考虑如何把原来独立服务器的http流量分布到其他新服务器上。直接做个nfs，把附件图片等分布到新服务器上是个最简单最懒的方式，也是短期最有效的，因为我们可以更换一个变量名就把url指向另外的服务器。
3、分频道也是办法之一，我们把一个大网站拆成几个小网站，分散到几个服务器，包括代码、数据、数据库，不过这种方法对小网站是费力不讨好，分开了，还整合不？分频道之外，还可以分功能，可以把email单独拿出来，也可以把一些消耗资源的功能单独拿出来。
4、最合理的，还是要综合考虑当前的服务，压力所在。把CPU、存储，带宽资源需求的模块都列出来，然后平均分布，再寻找平均分配资源的部署方式，这样是最优化的，但也对开发人员提出了更高的要求。程序代码的模块化、可零活配置、可迁移、可扩展是进行优化的前提。所以，在网站建设初期，最好考虑如何去扩展站点。
－－－－－－－－－－－－－－－－－－－－－
貌似运维跟程序又掺合到一起了，当然，好的项目是需要各部门合作的，团队力量总是大的，所谓：瘦死的骆驼比狗大。
]]></description>
			<content:encoded><![CDATA[<p>今天活进度不错，闲下来再扯几句，接上篇： <a href="http://www.sunboyu.cn/2009/06/22/%E5%88%9D%E5%88%9B%E5%85%AC%E5%8F%B8%E7%9A%84%E8%BF%90%E7%BB%B4%E5%BA%94%E8%AF%A5%E6%80%8E%E4%B9%88%E5%81%9A%EF%BC%88lamp%E6%9E%B6%E6%9E%84%EF%BC%89.shtml">初创公司的运维应该怎么做（lamp架构）</a></p>
<p>事情总得发展，一不小心就会发展到两台以上的服务器。</p>
<p>这时候，如何部署就是问题了，既要节约硬件带宽资源，省钱，又要充分发挥我们硬件的特性。</p>
<p>1、数据库，总得做个热备吧，主从复制，两个服务器就足够，当然更多的话，你可以多个从数据库。这时候主服务器挂了，备份的数据库可以立马变成主数据库进行工作，而主数据库又变成从的，这样达到无缝的切换。数据库多了，写压力集中在主数据库，而从数据库就可以分担读的压力。一般系统读压力大大高于写压力（特殊的系统除外），这样我们把其他服务器的CPU还能合理利用上。</p>
<p>2、如果但是数据库分到其他服务器上，CPU看似是充分利用了，带宽也得去利用。mysql同步走内网流量，自己用switch相连，而其他服务器同样可以分担http的负载。这时候，我们要考虑如何把原来独立服务器的http流量分布到其他新服务器上。直接做个nfs，把附件图片等分布到新服务器上是个最简单最懒的方式，也是短期最有效的，因为我们可以更换一个变量名就把url指向另外的服务器。</p>
<p>3、分频道也是办法之一，我们把一个大网站拆成几个小网站，分散到几个服务器，包括代码、数据、数据库，不过这种方法对小网站是费力不讨好，分开了，还整合不？分频道之外，还可以分功能，可以把email单独拿出来，也可以把一些消耗资源的功能单独拿出来。</p>
<p>4、最合理的，还是要综合考虑当前的服务，压力所在。把CPU、存储，带宽资源需求的模块都列出来，然后平均分布，再寻找平均分配资源的部署方式，这样是最优化的，但也对开发人员提出了更高的要求。程序代码的模块化、可零活配置、可迁移、可扩展是进行优化的前提。所以，在网站建设初期，最好考虑如何去扩展站点。</p>
<p>－－－－－－－－－－－－－－－－－－－－－</p>
<p>貌似运维跟程序又掺合到一起了，当然，好的项目是需要各部门合作的，团队力量总是大的，所谓：瘦死的骆驼比狗大。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/06/24/%e5%88%9d%e5%88%9b%e5%85%ac%e5%8f%b8%e7%9a%84%e8%bf%90%e7%bb%b4%e5%ba%94%e8%af%a5%e6%80%8e%e4%b9%88%e5%81%9a%ef%bc%88lamp%e6%9e%b6%e6%9e%84%ef%bc%892.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>初创公司的运维应该怎么做（lamp架构）</title>
		<link>http://www.sunboyu.cn/2009/06/22/%e5%88%9d%e5%88%9b%e5%85%ac%e5%8f%b8%e7%9a%84%e8%bf%90%e7%bb%b4%e5%ba%94%e8%af%a5%e6%80%8e%e4%b9%88%e5%81%9a%ef%bc%88lamp%e6%9e%b6%e6%9e%84%ef%bc%89.shtml</link>
		<comments>http://www.sunboyu.cn/2009/06/22/%e5%88%9d%e5%88%9b%e5%85%ac%e5%8f%b8%e7%9a%84%e8%bf%90%e7%bb%b4%e5%ba%94%e8%af%a5%e6%80%8e%e4%b9%88%e5%81%9a%ef%bc%88lamp%e6%9e%b6%e6%9e%84%ef%bc%89.shtml#comments</comments>
		<pubDate>Mon, 22 Jun 2009 05:23:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[原创技术]]></category>

		<category><![CDATA[初创公司]]></category>

		<category><![CDATA[运维]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=808</guid>
		<description><![CDATA[这里说的初创公司，也包括一些小型的网络公司，运维是很头疼的事情。
初创公司，包括一些现金有问题的公司，资金紧张，买不起大量的设备，用不起高级的运维人员，财政捉襟见肘。
这种公司一个很重要的问题，就是要充分利用现有的资源，把每一分钱的效益都充分榨出来。
从技术上讲，大部分瓶颈都发生在带宽上，而大部分的灾难都发生在数据丢失上，底下，从以下两个问题来描述如何去搭建高效安全的小企业级应用系统。
单台服务器方案：
这样的公司实在是穷疯了，只有一台服务器，一个百兆共享。
配置：linux nginx mysql php 这是标配。单台服务器就别考虑负载均衡之类的东西了，只要保证http服务够快，充分去利用idc的带宽，跑高跑满是前期要做的。
如果只是网站，没有下载之类的，nginx是最佳的选择（做虚拟主机安全性太差）。这个时候，优化好mysql，搭配nginx优秀的性能，一般瓶颈优先出现在带宽上。
不建议把带宽跑得很满，因为idc一般都会在交换上限制流量，所以，不要等到相应很迟缓的时候再考虑增加带宽，如果带宽实在闲着没用，开个ftp，给员工做文档备份，装个邮件服务器，解决了内部沟通的问题。
数据安全，是一定要做的。mysql前期可以每天全备份，找个本地的机器每天下载备份，虽然浪费点人工，但不失为最安全的备份。如果本地都能搞丢……就拿块硬盘自己拍自己。
网站程序建议用svn版本控制发布，这样，就有了源码、svn库、本地开发三个以上的备份。而网站的附件，在程序编写前就得考虑增量备份的方式，合理设计存储结构，每天增量备份（因为附件多的话，每天全备压力会大）。而每天的增量，设计一个全备，一旦出现数据问题，有前边的全备，当日的增量，这样会把损风险和失降低到最低。
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-
临时撰写，想哪里写哪里。希望有经验的一起交流。
]]></description>
			<content:encoded><![CDATA[<p>这里说的初创公司，也包括一些小型的网络公司，运维是很头疼的事情。</p>
<p>初创公司，包括一些现金有问题的公司，资金紧张，买不起大量的设备，用不起高级的运维人员，财政捉襟见肘。</p>
<p>这种公司一个很重要的问题，就是要充分利用现有的资源，把每一分钱的效益都充分榨出来。</p>
<p>从技术上讲，大部分瓶颈都发生在带宽上，而大部分的灾难都发生在数据丢失上，底下，从以下两个问题来描述如何去搭建高效安全的小企业级应用系统。</p>
<p>单台服务器方案：</p>
<p>这样的公司实在是穷疯了，只有一台服务器，一个百兆共享。</p>
<p>配置：linux nginx mysql php 这是标配。单台服务器就别考虑负载均衡之类的东西了，只要保证http服务够快，充分去利用idc的带宽，跑高跑满是前期要做的。</p>
<p>如果只是网站，没有下载之类的，nginx是最佳的选择（做虚拟主机安全性太差）。这个时候，优化好mysql，搭配nginx优秀的性能，一般瓶颈优先出现在带宽上。</p>
<p>不建议把带宽跑得很满，因为idc一般都会在交换上限制流量，所以，不要等到相应很迟缓的时候再考虑增加带宽，如果带宽实在闲着没用，开个ftp，给员工做文档备份，装个邮件服务器，解决了内部沟通的问题。</p>
<p>数据安全，是一定要做的。mysql前期可以每天全备份，找个本地的机器每天下载备份，虽然浪费点人工，但不失为最安全的备份。如果本地都能搞丢……就拿块硬盘自己拍自己。</p>
<p>网站程序建议用svn版本控制发布，这样，就有了源码、svn库、本地开发三个以上的备份。而网站的附件，在程序编写前就得考虑增量备份的方式，合理设计存储结构，每天增量备份（因为附件多的话，每天全备压力会大）。而每天的增量，设计一个全备，一旦出现数据问题，有前边的全备，当日的增量，这样会把损风险和失降低到最低。</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>临时撰写，想哪里写哪里。希望有经验的一起交流。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/06/22/%e5%88%9d%e5%88%9b%e5%85%ac%e5%8f%b8%e7%9a%84%e8%bf%90%e7%bb%b4%e5%ba%94%e8%af%a5%e6%80%8e%e4%b9%88%e5%81%9a%ef%bc%88lamp%e6%9e%b6%e6%9e%84%ef%bc%89.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>一只歪吐舌头的狗</title>
		<link>http://www.sunboyu.cn/2009/06/22/%e4%b8%80%e5%8f%aa%e6%ad%aa%e5%90%90%e8%88%8c%e5%a4%b4%e7%9a%84%e7%8b%97.shtml</link>
		<comments>http://www.sunboyu.cn/2009/06/22/%e4%b8%80%e5%8f%aa%e6%ad%aa%e5%90%90%e8%88%8c%e5%a4%b4%e7%9a%84%e7%8b%97.shtml#comments</comments>
		<pubDate>Mon, 22 Jun 2009 04:52:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[相当拍砖]]></category>

		<category><![CDATA[吐舌头]]></category>

		<category><![CDATA[狗]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=795</guid>
		<description><![CDATA[

美女：歪吐舌头斜瞪眼不是狗的专利！！！

长颈鹿：我也会！

楼上，人更会的！
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.sunboyu.cn/upfiles/2009/06/img_5100.jpg"><img class="size-large wp-image-796 alignleft" title="img_5100" src="http://www.sunboyu.cn/upfiles/2009/06/img_5100-1024x821.jpg" alt="img_5100" width="614" height="493" /></a></p>
<p><a href="http://www.sunboyu.cn/upfiles/2009/06/1.jpg"><img class="alignleft size-full wp-image-797" title="1" src="http://www.sunboyu.cn/upfiles/2009/06/1.jpg" alt="1" width="411" height="614" /></a></p>
<p style="text-align: center;">美女：歪吐舌头斜瞪眼不是狗的专利！！！</p>
<p><a href="http://www.sunboyu.cn/upfiles/2009/06/2.jpg"><img class="alignleftsize-full wp-image-798" title="2" src="http://www.sunboyu.cn/upfiles/2009/06/2.jpg" alt="2" width="413" height="550" /></a></p>
<p style="text-align: center;">长颈鹿：我也会！</p>
<p><a href="http://www.sunboyu.cn/upfiles/2009/06/3.jpg"><img class="alignleft size-full wp-image-799" title="3" src="http://www.sunboyu.cn/upfiles/2009/06/3.jpg" alt="3" width="427" height="327" /></a></p>
<p style="text-align: center;">楼上，人更会的！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/06/22/%e4%b8%80%e5%8f%aa%e6%ad%aa%e5%90%90%e8%88%8c%e5%a4%b4%e7%9a%84%e7%8b%97.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>我是跳票王</title>
		<link>http://www.sunboyu.cn/2009/06/15/%e6%88%91%e6%98%af%e8%b7%b3%e7%a5%a8%e7%8e%8b.shtml</link>
		<comments>http://www.sunboyu.cn/2009/06/15/%e6%88%91%e6%98%af%e8%b7%b3%e7%a5%a8%e7%8e%8b.shtml#comments</comments>
		<pubDate>Mon, 15 Jun 2009 13:38:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<category><![CDATA[跳票]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=789</guid>
		<description><![CDATA[终于又发现自己这个毛病了。
做事情还得靠队伍，谁想搭伙做点东西？
我太需要团队了，离开团队的写作，任何作品都显得那么沧桑……
]]></description>
			<content:encoded><![CDATA[<p>终于又发现自己这个毛病了。</p>
<p>做事情还得靠队伍，谁想搭伙做点东西？</p>
<p>我太需要团队了，离开团队的写作，任何作品都显得那么沧桑……</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/06/15/%e6%88%91%e6%98%af%e8%b7%b3%e7%a5%a8%e7%8e%8b.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>大事件－五道口的双层彩虹</title>
		<link>http://www.sunboyu.cn/2009/06/14/%e5%a4%a7%e4%ba%8b%e4%bb%b6%ef%bc%8d%e4%ba%94%e9%81%93%e5%8f%a3%e7%9a%84%e5%8f%8c%e5%b1%82%e5%bd%a9%e8%99%b9.shtml</link>
		<comments>http://www.sunboyu.cn/2009/06/14/%e5%a4%a7%e4%ba%8b%e4%bb%b6%ef%bc%8d%e4%ba%94%e9%81%93%e5%8f%a3%e7%9a%84%e5%8f%8c%e5%b1%82%e5%bd%a9%e8%99%b9.shtml#comments</comments>
		<pubDate>Sun, 14 Jun 2009 15:10:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<category><![CDATA[五道口]]></category>

		<category><![CDATA[彩虹]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=787</guid>
		<description><![CDATA[<table id="px4" title="5dk" border="0" cellspacing="0" cellpadding="0"><tr>
<td>
<a class="lightBox" rel="g4" href="http://farm4.static.flickr.com/3511/3854575702_597afa8862_m.jpg" title="IMG_5035" alt="IMG_5035"><img src="http://farm4.static.flickr.com/3511/3854575702_597afa8862_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3511%2F3854575702_597afa8862_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3511%2F3854575702_597afa8862_m.jpg%22%2C%22a%22%3A%22IMG_5035%22%7D" alt="IMG_5035"/></a></td>
<td>
<a class="lightBox" rel="g4" href="http://farm3.static.flickr.com/2606/3854575694_70b2dbe4da_m.jpg" title="IMG_5034" alt="IMG_5034"><img src="http://farm3.static.flickr.com/2606/3854575694_70b2dbe4da_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2606%2F3854575694_70b2dbe4da_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2606%2F3854575694_70b2dbe4da_m.jpg%22%2C%22a%22%3A%22IMG_5034%22%7D" alt="IMG_5034"/></a></td>
<td>
<a class="lightBox" rel="g4" href="http://farm4.static.flickr.com/3422/3854575692_95601ebf9a_m.jpg" title="IMG_5033" alt="IMG_5033"><img src="http://farm4.static.flickr.com/3422/3854575692_95601ebf9a_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3422%2F3854575692_95601ebf9a_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3422%2F3854575692_95601ebf9a_m.jpg%22%2C%22a%22%3A%22IMG_5033%22%7D" alt="IMG_5033"/></a></td>
<td>
<a class="lightBox" rel="g4" href="http://farm4.static.flickr.com/3508/3854575684_6030fbb8ba_m.jpg" title="IMG_5032" alt="IMG_5032"><img src="http://farm4.static.flickr.com/3508/3854575684_6030fbb8ba_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3508%2F3854575684_6030fbb8ba_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3508%2F3854575684_6030fbb8ba_m.jpg%22%2C%22a%22%3A%22IMG_5032%22%7D" alt="IMG_5032"/></a></td>
<td>
<a class="lightBox" rel="g4" href="http://farm4.static.flickr.com/3545/3854575682_af0c0a159f_m.jpg" title="IMG_5031" alt="IMG_5031"><img src="http://farm4.static.flickr.com/3545/3854575682_af0c0a159f_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3545%2F3854575682_af0c0a159f_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3545%2F3854575682_af0c0a159f_m.jpg%22%2C%22a%22%3A%22IMG_5031%22%7D" alt="IMG_5031"/></a></td>
</tr>
<tr>
<td>
<a class="lightBox" rel="g4" href="http://farm4.static.flickr.com/3461/3854575672_45b48e177a_m.jpg" title="IMG_5030" alt="IMG_5030"><img src="http://farm4.static.flickr.com/3461/3854575672_45b48e177a_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3461%2F3854575672_45b48e177a_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3461%2F3854575672_45b48e177a_m.jpg%22%2C%22a%22%3A%22IMG_5030%22%7D" alt="IMG_5030"/></a></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table><link id="px_editstylesheet" type="text/css" href="http://www.sunboyu.cn/wp-content/plugins/photoxhibit/photoxhibit.php?option=css&gid=4&1328511673" rel="stylesheet"/>
]]></description>
			<content:encoded><![CDATA[<table id="px4" title="5dk" border="0" cellspacing="0" cellpadding="0"><tr>
<td>
<a class="lightBox" rel="g4" href="http://farm4.static.flickr.com/3511/3854575702_597afa8862_m.jpg" title="IMG_5035" alt="IMG_5035"><img src="http://farm4.static.flickr.com/3511/3854575702_597afa8862_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3511%2F3854575702_597afa8862_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3511%2F3854575702_597afa8862_m.jpg%22%2C%22a%22%3A%22IMG_5035%22%7D" alt="IMG_5035"/></a></td>
<td>
<a class="lightBox" rel="g4" href="http://farm3.static.flickr.com/2606/3854575694_70b2dbe4da_m.jpg" title="IMG_5034" alt="IMG_5034"><img src="http://farm3.static.flickr.com/2606/3854575694_70b2dbe4da_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2606%2F3854575694_70b2dbe4da_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm3.static.flickr.com%2F2606%2F3854575694_70b2dbe4da_m.jpg%22%2C%22a%22%3A%22IMG_5034%22%7D" alt="IMG_5034"/></a></td>
<td>
<a class="lightBox" rel="g4" href="http://farm4.static.flickr.com/3422/3854575692_95601ebf9a_m.jpg" title="IMG_5033" alt="IMG_5033"><img src="http://farm4.static.flickr.com/3422/3854575692_95601ebf9a_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3422%2F3854575692_95601ebf9a_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3422%2F3854575692_95601ebf9a_m.jpg%22%2C%22a%22%3A%22IMG_5033%22%7D" alt="IMG_5033"/></a></td>
<td>
<a class="lightBox" rel="g4" href="http://farm4.static.flickr.com/3508/3854575684_6030fbb8ba_m.jpg" title="IMG_5032" alt="IMG_5032"><img src="http://farm4.static.flickr.com/3508/3854575684_6030fbb8ba_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3508%2F3854575684_6030fbb8ba_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3508%2F3854575684_6030fbb8ba_m.jpg%22%2C%22a%22%3A%22IMG_5032%22%7D" alt="IMG_5032"/></a></td>
<td>
<a class="lightBox" rel="g4" href="http://farm4.static.flickr.com/3545/3854575682_af0c0a159f_m.jpg" title="IMG_5031" alt="IMG_5031"><img src="http://farm4.static.flickr.com/3545/3854575682_af0c0a159f_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3545%2F3854575682_af0c0a159f_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3545%2F3854575682_af0c0a159f_m.jpg%22%2C%22a%22%3A%22IMG_5031%22%7D" alt="IMG_5031"/></a></td>
</tr>
<tr>
<td>
<a class="lightBox" rel="g4" href="http://farm4.static.flickr.com/3461/3854575672_45b48e177a_m.jpg" title="IMG_5030" alt="IMG_5030"><img src="http://farm4.static.flickr.com/3461/3854575672_45b48e177a_s.jpg" metadata="%7B%22t%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3461%2F3854575672_45b48e177a_s.jpg%22%2C%22f%22%3A%22http%3A%2F%2Ffarm4.static.flickr.com%2F3461%2F3854575672_45b48e177a_m.jpg%22%2C%22a%22%3A%22IMG_5030%22%7D" alt="IMG_5030"/></a></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table><link id="px_editstylesheet" type="text/css" href="http://www.sunboyu.cn/wp-content/plugins/photoxhibit/photoxhibit.php?option=css&gid=4&1328511673" rel="stylesheet"/><p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/06/14/%e5%a4%a7%e4%ba%8b%e4%bb%b6%ef%bc%8d%e4%ba%94%e9%81%93%e5%8f%a3%e7%9a%84%e5%8f%8c%e5%b1%82%e5%bd%a9%e8%99%b9.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>针对尚趣网（vsuch.com）的简单优化</title>
		<link>http://www.sunboyu.cn/2009/06/12/%e9%92%88%e5%af%b9%e5%b0%9a%e8%b6%a3%e7%bd%91%ef%bc%88vsuchcom%ef%bc%89%e7%9a%84%e7%ae%80%e5%8d%95%e4%bc%98%e5%8c%96.shtml</link>
		<comments>http://www.sunboyu.cn/2009/06/12/%e9%92%88%e5%af%b9%e5%b0%9a%e8%b6%a3%e7%bd%91%ef%bc%88vsuchcom%ef%bc%89%e7%9a%84%e7%ae%80%e5%8d%95%e4%bc%98%e5%8c%96.shtml#comments</comments>
		<pubDate>Fri, 12 Jun 2009 07:42:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[技术存档]]></category>

		<category><![CDATA[nginx]]></category>

		<category><![CDATA[vsuch]]></category>

		<category><![CDATA[优化]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=782</guid>
		<description><![CDATA[最近，一友找我去优化apache，了解后，是vsuch.com网站的问题。
vsuch网站使用lamp＋windows混合平台（汗），追究历史，原来网站用.net编写，后用php重构了整个网站。
整改前 Mysql运行在linux机器上，php运行在windows平台上，中间局域网方式连接。
网站日访问量不小，alexa排名6800，windows平台明显抗不住，经常莫名其妙的问题。（题外话：我最早维护的服务器也是windows，apache在上边很不稳定）
了解后，我感觉一台服务器就足矣，放弃了apache的方案，安装了nginx＋php，数据库依然沿用原来的。
整改后，linux负载稍稍升高，mysql负载不变，http的负载在nginx下并没有表现出多高。顺利完成了迁移。
后公司又开通了cdn服务（有钱），速度有了很明显的提升。
－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－
根据其公司目前的技术结构，我提出了很多优化和整改的想法，希望每个创业网站都能走好。
－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－
]]></description>
			<content:encoded><![CDATA[<p>最近，一友找我去优化apache，了解后，是vsuch.com网站的问题。</p>
<p>vsuch网站使用lamp＋windows混合平台（汗），追究历史，原来网站用.net编写，后用php重构了整个网站。</p>
<p>整改前 Mysql运行在linux机器上，php运行在windows平台上，中间局域网方式连接。</p>
<p>网站日访问量不小，alexa排名6800，windows平台明显抗不住，经常莫名其妙的问题。（题外话：我最早维护的服务器也是windows，apache在上边很不稳定）</p>
<p>了解后，我感觉一台服务器就足矣，放弃了apache的方案，安装了nginx＋php，数据库依然沿用原来的。</p>
<p>整改后，linux负载稍稍升高，mysql负载不变，http的负载在nginx下并没有表现出多高。顺利完成了迁移。</p>
<p>后公司又开通了cdn服务（有钱），速度有了很明显的提升。</p>
<p>－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－</p>
<p>根据其公司目前的技术结构，我提出了很多优化和整改的想法，希望每个创业网站都能走好。</p>
<p>－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/06/12/%e9%92%88%e5%af%b9%e5%b0%9a%e8%b6%a3%e7%bd%91%ef%bc%88vsuchcom%ef%bc%89%e7%9a%84%e7%ae%80%e5%8d%95%e4%bc%98%e5%8c%96.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>在windows下玩apache php不能不知的几个小设置</title>
		<link>http://www.sunboyu.cn/2009/06/10/%e5%9c%a8windows%e4%b8%8b%e7%8e%a9apache-php%e4%b8%8d%e8%83%bd%e4%b8%8d%e7%9f%a5%e7%9a%84%e5%87%a0%e4%b8%aa%e5%b0%8f%e8%ae%be%e7%bd%ae.shtml</link>
		<comments>http://www.sunboyu.cn/2009/06/10/%e5%9c%a8windows%e4%b8%8b%e7%8e%a9apache-php%e4%b8%8d%e8%83%bd%e4%b8%8d%e7%9f%a5%e7%9a%84%e5%87%a0%e4%b8%aa%e5%b0%8f%e8%ae%be%e7%bd%ae.shtml#comments</comments>
		<pubDate>Wed, 10 Jun 2009 09:09:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[APACHE]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[apache]]></category>

		<category><![CDATA[php]]></category>

		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=779</guid>
		<description><![CDATA[1、PHPIniDir &#8220;D:\PHP5&#8243;
这样不用每次都把php.ini拷贝到C:\Windows下
2、set Path=D:\PHP5;D:\PHP5\ext;%Path%
这样不用每次把那些dll拷贝到C:\Windows\system32下
]]></description>
			<content:encoded><![CDATA[<p>1、PHPIniDir &#8220;D:\PHP5&#8243;</p>
<p>这样不用每次都把php.ini拷贝到C:\Windows下</p>
<p>2、set Path=D:\PHP5;D:\PHP5\ext;%Path%</p>
<p>这样不用每次把那些dll拷贝到C:\Windows\system32下</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/06/10/%e5%9c%a8windows%e4%b8%8b%e7%8e%a9apache-php%e4%b8%8d%e8%83%bd%e4%b8%8d%e7%9f%a5%e7%9a%84%e5%87%a0%e4%b8%aa%e5%b0%8f%e8%ae%be%e7%bd%ae.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>Centos4.7（Linux）下架设BT服务器</title>
		<link>http://www.sunboyu.cn/2009/06/09/centos47%ef%bc%88linux%ef%bc%89%e4%b8%8b%e6%9e%b6%e8%ae%bebt%e6%9c%8d%e5%8a%a1%e5%99%a8.shtml</link>
		<comments>http://www.sunboyu.cn/2009/06/09/centos47%ef%bc%88linux%ef%bc%89%e4%b8%8b%e6%9e%b6%e8%ae%bebt%e6%9c%8d%e5%8a%a1%e5%99%a8.shtml#comments</comments>
		<pubDate>Tue, 09 Jun 2009 05:21:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[原创技术]]></category>

		<category><![CDATA[bittorrent]]></category>

		<category><![CDATA[bt]]></category>

		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=768</guid>
		<description><![CDATA[穷人，就得想穷人的办法，带宽被坑，严重缩水，为了分享大量资源，最终决定使用bt发布一些大资源。
网上找了很多BitTorrent架设btserver的教程，不是版本不对，就是安装复杂，所以，我找了个比较老的版本，一次装上调通。
我使用了BitTorrent-3.9.1，官方下载地址为 http://download.bittorrent.com/dl/archive/BitTorrent-3.9.1.tar.gz
防止墙，我传到本地 bittorrent-3.9.1.tar.gz
首先你服务器要预装python，centos4.7预装python2.3，我预留，但服务器环境python使用了2.5版，2.3不能删，yum对版本依赖性比较强，还得预留。
解压 BitTorrent-3.9.1.tar.gz 后进入文件夹，按照说明进行安装：
python setup.py install
即可安装。当然中间会遇到各种问题，大部分是关于python版本或者依赖的，错误可以跟帖发一下，一起解决。
好了，首先启动服务器：
python bttrack.py --port 6969 --dfile dfile.log
其中port参数是服务的端口（一定记得调一下防火墙），dfile是日志
然后打开 http://ip:6969/  如果显示
BitTorrent download info
    * tracker version: 3.9.1
    * server time: 2009-06-09 05:12 UTC
则证明服务启动成功。
下面创建一个种子文件
btmaketorrent.py http://bt.sunboyu.cn:6969/announce /root/soft/xmlrpc-epi-0.54.tar.gz
这样，就针对 /root/soft/xmlrpc-epi-0.54.tar.gz 文件创建了一个种子文件，使用的track地址是 http://bt.sunboyu.cn:6969
生成的种子位置，是这样:如果针对一个文件，则在文件同一文件夹下，如果针对文件夹，则在文件夹同级目录。
然后发布一个种子（很多人可能对种子这个概念不了解，可以查看资料，关于bt协议的）
btdownloadheadless.py /root/soft/xmlrpc-epi-0.54.tar.gz.torrent --save_as /root/soft/xmlrpc-epi-0.54.tar.gz
发布种子有很多参数要限制，可以看命令具体参数，比如占用的端口跟限速等。
我测试了一下，linux发布的文件，就可以下载了。这只是服务器建立的阶段，要管理，还得写好多管理脚本，否则文件多的话，手工可受不了。
另外还有好多的开源web监控、管理、发布的系统，大家可以下来搭建尝试。欢迎交流。
相关资料 http://zh.wikipedia.org/wiki/BitTorrent
]]></description>
			<content:encoded><![CDATA[<p>穷人，就得想穷人的办法，带宽被坑，严重缩水，为了分享大量资源，最终决定使用bt发布一些大资源。</p>
<p>网上找了很多BitTorrent架设btserver的教程，不是版本不对，就是安装复杂，所以，我找了个比较老的版本，一次装上调通。</p>
<p>我使用了BitTorrent-3.9.1，官方下载地址为 http://download.bittorrent.com/dl/archive/BitTorrent-3.9.1.tar.gz</p>
<p>防止墙，我传到本地 <a href='http://www.sunboyu.cn/upfiles/2009/06/bittorrent-391tar.gz'>bittorrent-3.9.1.tar.gz</a></p>
<p>首先你服务器要预装python，centos4.7预装python2.3，我预留，但服务器环境python使用了2.5版，2.3不能删，yum对版本依赖性比较强，还得预留。</p>
<p>解压 BitTorrent-3.9.1.tar.gz 后进入文件夹，按照说明进行安装：</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">python setup.py install</li></ol></div>
<p>即可安装。当然中间会遇到各种问题，大部分是关于python版本或者依赖的，错误可以跟帖发一下，一起解决。</p>
<p>好了，首先启动服务器：</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">python bttrack.py --port 6969 --dfile dfile.log</li></ol></div>
<p>其中port参数是服务的端口（一定记得调一下防火墙），dfile是日志</p>
<p>然后打开 http://ip:6969/  如果显示</p>
<p>BitTorrent download info</p>
<p>    * tracker version: 3.9.1<br />
    * server time: 2009-06-09 05:12 UTC</p>
<p>则证明服务启动成功。</p>
<p>下面创建一个种子文件</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">btmaketorrent.py http://bt.sunboyu.cn:6969/announce /root/soft/xmlrpc-epi-0.54.tar.gz</li></ol></div>
<p>这样，就针对 /root/soft/xmlrpc-epi-0.54.tar.gz 文件创建了一个种子文件，使用的track地址是 http://bt.sunboyu.cn:6969<br />
生成的种子位置，是这样:如果针对一个文件，则在文件同一文件夹下，如果针对文件夹，则在文件夹同级目录。</p>
<p>然后发布一个种子（很多人可能对种子这个概念不了解，可以查看资料，关于bt协议的）</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">btdownloadheadless.py /root/soft/xmlrpc-epi-0.54.tar.gz.torrent --save_as /root/soft/xmlrpc-epi-0.54.tar.gz</li></ol></div>
<p>发布种子有很多参数要限制，可以看命令具体参数，比如占用的端口跟限速等。</p>
<p>我测试了一下，linux发布的文件，就可以下载了。这只是服务器建立的阶段，要管理，还得写好多管理脚本，否则文件多的话，手工可受不了。</p>
<p>另外还有好多的开源web监控、管理、发布的系统，大家可以下来搭建尝试。欢迎交流。</p>
<p>相关资料 http://zh.wikipedia.org/wiki/BitTorrent</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/06/09/centos47%ef%bc%88linux%ef%bc%89%e4%b8%8b%e6%9e%b6%e8%ae%bebt%e6%9c%8d%e5%8a%a1%e5%99%a8.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>脱裤子放屁典范程序</title>
		<link>http://www.sunboyu.cn/2009/06/05/%e8%84%b1%e8%a3%a4%e5%ad%90%e6%94%be%e5%b1%81%e5%85%b8%e8%8c%83%e7%a8%8b%e5%ba%8f.shtml</link>
		<comments>http://www.sunboyu.cn/2009/06/05/%e8%84%b1%e8%a3%a4%e5%ad%90%e6%94%be%e5%b1%81%e5%85%b8%e8%8c%83%e7%a8%8b%e5%ba%8f.shtml#comments</comments>
		<pubDate>Fri, 05 Jun 2009 02:25:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[代码冗余]]></category>

		<category><![CDATA[康盛]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=766</guid>
		<description><![CDATA[最近搞一个单点登录的东东，研究了下康盛的ucenterhome产品，在研究cookie的时候发现这么一段处理程序：
$prelength = strlen($_SC['cookiepre']);
foreach($_COOKIE as $key =&#62; $val) {
	if(substr($key, 0, $prelength) == $_SC['cookiepre']) {
		$_SCOOKIE[(substr($key, $prelength))] = empty($magic_quote) ? saddslashes($val) : $val;
	}
}
其目的是把合法的cookie拿出来防到一个全局变量里去用。
cookie本身就是一个挺好的全局变量，而康盛又把这个变量拿出来去用，为什么？
或者，为了方便管理变量，但判断函数判断自定义全局变量跟判断cookie全局变量成本相同；
或者，为了让开发者必须彻底明白业务逻辑才能修改，提高竞争对手抄袭门槛或者提高二次开发门槛而给项目部带来更高的收入？
这样的代码里边很多，也许只有他们自己才能了解最终目的。
]]></description>
			<content:encoded><![CDATA[<p>最近搞一个单点登录的东东，研究了下康盛的ucenterhome产品，在研究cookie的时候发现这么一段处理程序：</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">$prelength = strlen($_SC['cookiepre']);</li>
<li>foreach($_COOKIE as $key =&gt; $val) {</li>
<li>	if(substr($key, 0, $prelength) == $_SC['cookiepre']) {</li>
<li>		$_SCOOKIE[(substr($key, $prelength))] = empty($magic_quote) ? saddslashes($val) : $val;</li>
<li>	}</li>
<li>}</li></ol></div>
<p>其目的是把合法的cookie拿出来防到一个全局变量里去用。</p>
<p>cookie本身就是一个挺好的全局变量，而康盛又把这个变量拿出来去用，为什么？</p>
<p>或者，为了方便管理变量，但判断函数判断自定义全局变量跟判断cookie全局变量成本相同；</p>
<p>或者，为了让开发者必须彻底明白业务逻辑才能修改，提高竞争对手抄袭门槛或者提高二次开发门槛而给项目部带来更高的收入？</p>
<p>这样的代码里边很多，也许只有他们自己才能了解最终目的。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/06/05/%e8%84%b1%e8%a3%a4%e5%ad%90%e6%94%be%e5%b1%81%e5%85%b8%e8%8c%83%e7%a8%8b%e5%ba%8f.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>买了一个新的捷安特座管快拆</title>
		<link>http://www.sunboyu.cn/2009/05/31/%e4%b9%b0%e4%ba%86%e4%b8%80%e4%b8%aa%e6%96%b0%e7%9a%84%e6%8d%b7%e5%ae%89%e7%89%b9%e5%ba%a7%e7%ae%a1%e5%bf%ab%e6%8b%86.shtml</link>
		<comments>http://www.sunboyu.cn/2009/05/31/%e4%b9%b0%e4%ba%86%e4%b8%80%e4%b8%aa%e6%96%b0%e7%9a%84%e6%8d%b7%e5%ae%89%e7%89%b9%e5%ba%a7%e7%ae%a1%e5%bf%ab%e6%8b%86.shtml#comments</comments>
		<pubDate>Sun, 31 May 2009 12:32:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[相当拍砖]]></category>

		<category><![CDATA[座管快拆]]></category>

		<category><![CDATA[捷安特]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=743</guid>
		<description><![CDATA[北航东门捷安特店买的，10块大洋。网上说批发两块八  http://detail.china.alibaba.com/buyer/offerdetail/147764286.html
讨伐一下破坏我自行车的贼。

]]></description>
			<content:encoded><![CDATA[<p>北航东门捷安特店买的，10块大洋。网上说批发两块八  http://detail.china.alibaba.com/buyer/offerdetail/147764286.html</p>
<p>讨伐一下破坏我自行车的贼。</p>
<p><a href="http://www.sunboyu.cn/upfiles/2009/05/img_5009.jpg"><img src="http://www.sunboyu.cn/upfiles/2009/05/img_5009.jpg" alt="img_5009" title="img_5009" width="894" height="592" class="aligncenter size-full wp-image-744" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/05/31/%e4%b9%b0%e4%ba%86%e4%b8%80%e4%b8%aa%e6%96%b0%e7%9a%84%e6%8d%b7%e5%ae%89%e7%89%b9%e5%ba%a7%e7%ae%a1%e5%bf%ab%e6%8b%86.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>xml与array互转函数</title>
		<link>http://www.sunboyu.cn/2009/05/31/xml%e4%b8%8earray%e4%ba%92%e8%bd%ac%e5%87%bd%e6%95%b0.shtml</link>
		<comments>http://www.sunboyu.cn/2009/05/31/xml%e4%b8%8earray%e4%ba%92%e8%bd%ac%e5%87%bd%e6%95%b0.shtml#comments</comments>
		<pubDate>Sun, 31 May 2009 10:42:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[array]]></category>

		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=741</guid>
		<description><![CDATA[突然发现写程序不像原来思路那么清晰了，一个递归居然想了半天，不过还是凑合着写了一个简单的xml与array互转的函数，来实现跟其他系统的对接。
原来一直用的是拼凑的方式生成xml，这次使用了DOMDocument对象。不知道这个类是否有非法字符的问题，待测试一下便知。
class AXML
{
	var $dom = '';
	#&#160; &#160; array to xml&#160; &#160; &#160; &#160;###########################################
&#160;&#160; &#160;#array to xml
	function array2xml( $array )
	{
		$this-&#62;dom = new DOMDocument('1.0', 'utf-8');
		$this-&#62;dom-&#62;formatOutput = true;
		$this-&#62;_array( array( 'root' =&#62; $array ) , $this-&#62;dom );
		echo $this-&#62;dom-&#62;saveXML();
	}
&#160;
	#array to dom
	function _array( $array = array() , $dom )
	{
		$i = 0;
		foreach( $array as $key =&#62; $value )
		{
			if( is_array( $value ) )
			{
				//遍历
				$node[$i] = [...]]]></description>
			<content:encoded><![CDATA[<p>突然发现写程序不像原来思路那么清晰了，一个递归居然想了半天，不过还是凑合着写了一个简单的xml与array互转的函数，来实现跟其他系统的对接。</p>
<p>原来一直用的是拼凑的方式生成xml，这次使用了DOMDocument对象。不知道这个类是否有非法字符的问题，待测试一下便知。</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">class AXML</li>
<li>{</li>
<li>	var $dom = '';</li>
<li>	#&nbsp; &nbsp; array to xml&nbsp; &nbsp; &nbsp; &nbsp;###########################################</li>
<li>&nbsp;&nbsp; &nbsp;#array to xml</li>
<li>	function array2xml( $array )</li>
<li>	{</li>
<li>		$this-&gt;dom = new DOMDocument('1.0', 'utf-8');</li>
<li>		$this-&gt;dom-&gt;formatOutput = true;</li>
<li>		$this-&gt;_array( array( 'root' =&gt; $array ) , $this-&gt;dom );</li>
<li>		echo $this-&gt;dom-&gt;saveXML();</li>
<li>	}</li>
<li>&nbsp;</li>
<li>	#array to dom</li>
<li>	function _array( $array = array() , $dom )</li>
<li>	{</li>
<li>		$i = 0;</li>
<li>		foreach( $array as $key =&gt; $value )</li>
<li>		{</li>
<li>			if( is_array( $value ) )</li>
<li>			{</li>
<li>				//遍历</li>
<li>				$node[$i] = $this-&gt;dom-&gt;createElement( $key );</li>
<li>				$dom-&gt;appendChild( $node[$i] );</li>
<li>				$this-&gt;_array( $value , $node[$i] );</li>
<li>			}</li>
<li>			else</li>
<li>			{</li>
<li>				$node[$i] = $this-&gt;dom-&gt;createElement( $key , $value );</li>
<li>				$dom-&gt;appendChild( $node[$i] );</li>
<li>			}</li>
<li>			$i++;</li>
<li>		}</li>
<li>	}</li>
<li>	#&nbsp; &nbsp;xml&nbsp; to array&nbsp; &nbsp; &nbsp; &nbsp;###########################################</li>
<li>	#xml to array</li>
<li>	function xml2array( $xmls )</li>
<li>	{</li>
<li>		$array = array();</li>
<li>		$this-&gt;dom = new SimpleXMLElement( $xmls );</li>
<li>		print_r( $this-&gt;_object( $this-&gt;dom ) );</li>
<li>	}</li>
<li>	#object to array</li>
<li>	function _object( $object )</li>
<li>	{</li>
<li>		$array = array();</li>
<li>		$t = get_object_vars( $object );</li>
<li>		$i = 0;</li>
<li>		foreach( $t as $key =&gt; $value )</li>
<li>		{</li>
<li>			if(is_object($value))</li>
<li>			{</li>
<li>				$array[$key] = $this-&gt;_object( $value );</li>
<li>			}</li>
<li>			else</li>
<li>			{</li>
<li>				$array[$key] = $value;</li>
<li>			}</li>
<li>			$i++;</li>
<li>		}</li>
<li>		return $array;</li>
<li>	}</li>
<li>}</li>
<li>$xml = new AXML();</li>
<li>$xml-&gt;array2xml( $array );</li>
<li>$xml-&gt;xml2array( $xml_string );</li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/05/31/xml%e4%b8%8earray%e4%ba%92%e8%bd%ac%e5%87%bd%e6%95%b0.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>自行车零件被盗了，学会了漂移</title>
		<link>http://www.sunboyu.cn/2009/05/31/%e8%87%aa%e8%a1%8c%e8%bd%a6%e9%9b%b6%e4%bb%b6%e8%a2%ab%e7%9b%97%e4%ba%86%ef%bc%8c%e5%ad%a6%e4%bc%9a%e4%ba%86%e6%bc%82%e7%a7%bb.shtml</link>
		<comments>http://www.sunboyu.cn/2009/05/31/%e8%87%aa%e8%a1%8c%e8%bd%a6%e9%9b%b6%e4%bb%b6%e8%a2%ab%e7%9b%97%e4%ba%86%ef%bc%8c%e5%ad%a6%e4%bc%9a%e4%ba%86%e6%bc%82%e7%a7%bb.shtml#comments</comments>
		<pubDate>Sun, 31 May 2009 03:23:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<category><![CDATA[公路漂移]]></category>

		<category><![CDATA[自行车]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=739</guid>
		<description><![CDATA[早晨推车，突然发现我车座的快拆螺丝让人给偷了，shit！！
只能把车座临时架在车上，很低，就凑合着骑了。
今天上班没跟媳妇一起走，所以自己骑得很快，突然发现，重心低了，原来漂移就很爽。
以前我座杆总是调得很高，漂移扭力大的时候，人都要飞出去，可现在身子稍微一晃，车就能漂过去。
五道口人多的时候试着漂了两下，感觉很爽，还把一女死机吓的急刹车，^_^，不过我的车子围着他的车头漂了个优美的弧线，很爽！
]]></description>
			<content:encoded><![CDATA[<p>早晨推车，突然发现我车座的快拆螺丝让人给偷了，shit！！</p>
<p>只能把车座临时架在车上，很低，就凑合着骑了。</p>
<p>今天上班没跟媳妇一起走，所以自己骑得很快，突然发现，重心低了，原来漂移就很爽。</p>
<p>以前我座杆总是调得很高，漂移扭力大的时候，人都要飞出去，可现在身子稍微一晃，车就能漂过去。</p>
<p>五道口人多的时候试着漂了两下，感觉很爽，还把一女死机吓的急刹车，^_^，不过我的车子围着他的车头漂了个优美的弧线，很爽！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/05/31/%e8%87%aa%e8%a1%8c%e8%bd%a6%e9%9b%b6%e4%bb%b6%e8%a2%ab%e7%9b%97%e4%ba%86%ef%bc%8c%e5%ad%a6%e4%bc%9a%e4%ba%86%e6%bc%82%e7%a7%bb.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>限制apache http线程的带宽</title>
		<link>http://www.sunboyu.cn/2009/05/29/%e9%99%90%e5%88%b6apache-http%e7%ba%bf%e7%a8%8b%e7%9a%84%e5%b8%a6%e5%ae%bd.shtml</link>
		<comments>http://www.sunboyu.cn/2009/05/29/%e9%99%90%e5%88%b6apache-http%e7%ba%bf%e7%a8%8b%e7%9a%84%e5%b8%a6%e5%ae%bd.shtml#comments</comments>
		<pubDate>Fri, 29 May 2009 04:09:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[APACHE]]></category>

		<category><![CDATA[apache]]></category>

		<category><![CDATA[mod_bandwidth]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=736</guid>
		<description><![CDATA[最近带宽告急，原因是我做了几个开源软件的下载，结果带宽持续飙升，已经到了IDC给我的限度，所以在apache上增加了mod_bw模块(mod_bandwidth).
下载 mod_bw 的源代码 http://www.ivn.cl/apache/files/source/mod_bw-0.8.tgz
解压后，执行 apxs -i -a -c mod_bw.c
貌似自动就加到httpd.conf文件里。
如果不是自动的，就手工拷贝 mod_bw.so 到 apache module目录，httpd.conf 里增加 LoadModule bw_module modules/mod_bw.so
在虚拟主机里增加如下配置文件
BandWidthModule On&#160; &#160; &#160; &#160; &#160; &#160; &#160;#打开带宽限制功能
ForceBandWidthModule On&#160; &#160; &#160;#强制带宽限制
BandWidth all 102400&#160; &#160; &#160; &#160; &#160; &#160; #强制100KB
MinBandWidth all -1
具体的配置文档可以看这里
mod_bw-08
]]></description>
			<content:encoded><![CDATA[<p>最近带宽告急，原因是我做了几个开源软件的下载，结果带宽持续飙升，已经到了IDC给我的限度，所以在apache上增加了mod_bw模块(mod_bandwidth).</p>
<p>下载 mod_bw 的源代码 http://www.ivn.cl/apache/files/source/mod_bw-0.8.tgz</p>
<p>解压后，执行 apxs -i -a -c mod_bw.c</p>
<p>貌似自动就加到httpd.conf文件里。</p>
<p>如果不是自动的，就手工拷贝 mod_bw.so 到 apache module目录，httpd.conf 里增加 LoadModule bw_module modules/mod_bw.so</p>
<p>在虚拟主机里增加如下配置文件</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">BandWidthModule On&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#打开带宽限制功能</li>
<li>ForceBandWidthModule On&nbsp; &nbsp; &nbsp;#强制带宽限制</li>
<li>BandWidth all 102400&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #强制100KB</li>
<li>MinBandWidth all -1</li></ol></div>
<p>具体的配置文档可以看这里</p>
<p><a href='http://www.sunboyu.cn/upfiles/2009/05/mod_bw-08.txt'>mod_bw-08</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/05/29/%e9%99%90%e5%88%b6apache-http%e7%ba%bf%e7%a8%8b%e7%9a%84%e5%b8%a6%e5%ae%bd.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>我的apache配置-mpm</title>
		<link>http://www.sunboyu.cn/2009/05/28/%e6%88%91%e7%9a%84apache%e9%85%8d%e7%bd%ae-mpm.shtml</link>
		<comments>http://www.sunboyu.cn/2009/05/28/%e6%88%91%e7%9a%84apache%e9%85%8d%e7%bd%ae-mpm.shtml#comments</comments>
		<pubDate>Thu, 28 May 2009 15:13:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[APACHE]]></category>

		<category><![CDATA[apache]]></category>

		<category><![CDATA[fork]]></category>

		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=734</guid>
		<description><![CDATA[&#60;ifmodule mpm_prefork_module&#62;
&#160;&#160; &#160;StartServers&#160; &#160; &#160; &#160; &#160; &#160; &#160; 2
&#160;&#160; &#160;MinSpareServers&#160; &#160; &#160; &#160; &#160;5
&#160;&#160; &#160;MaxSpareServers&#160; &#160; &#160; &#160; 10
&#160;&#160; &#160;MaxClients&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;128
&#160;&#160; &#160;MaxRequestsPerChild&#160; &#160; 5000
&#60;/ifmodule&#62;
这个配置基本支撑http的访问，几个博客，一个论坛，还有一个哥们很大的静态并发。
以前使用的是work方式，因为不太了解，经常造成进程崩溃，又切换到了prefork方式，这次调整的比较稳定了。
]]></description>
			<content:encoded><![CDATA[<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">&lt;ifmodule mpm_prefork_module&gt;</li>
<li>&nbsp;&nbsp; &nbsp;StartServers&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 2</li>
<li>&nbsp;&nbsp; &nbsp;MinSpareServers&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;5</li>
<li>&nbsp;&nbsp; &nbsp;MaxSpareServers&nbsp; &nbsp; &nbsp; &nbsp; 10</li>
<li>&nbsp;&nbsp; &nbsp;MaxClients&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;128</li>
<li>&nbsp;&nbsp; &nbsp;MaxRequestsPerChild&nbsp; &nbsp; 5000</li>
<li>&lt;/ifmodule&gt;</li></ol></div>
<p>这个配置基本支撑http的访问，几个博客，一个论坛，还有一个哥们很大的静态并发。</p>
<p>以前使用的是work方式，因为不太了解，经常造成进程崩溃，又切换到了prefork方式，这次调整的比较稳定了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/05/28/%e6%88%91%e7%9a%84apache%e9%85%8d%e7%bd%ae-mpm.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>中国平安保险工号为A20××××的电话销售果然是个骗子</title>
		<link>http://www.sunboyu.cn/2009/05/26/%e4%b8%ad%e5%9b%bd%e5%b9%b3%e5%ae%89%e4%bf%9d%e9%99%a9%e5%b7%a5%e5%8f%b7%e4%b8%baa20%c3%97%c3%97%c3%97%c3%97%e7%9a%84%e7%94%b5%e8%af%9d%e9%94%80%e5%94%ae%e6%9e%9c%e7%84%b6%e6%98%af%e4%b8%aa%e9%aa%97.shtml</link>
		<comments>http://www.sunboyu.cn/2009/05/26/%e4%b8%ad%e5%9b%bd%e5%b9%b3%e5%ae%89%e4%bf%9d%e9%99%a9%e5%b7%a5%e5%8f%b7%e4%b8%baa20%c3%97%c3%97%c3%97%c3%97%e7%9a%84%e7%94%b5%e8%af%9d%e9%94%80%e5%94%ae%e6%9e%9c%e7%84%b6%e6%98%af%e4%b8%aa%e9%aa%97.shtml#comments</comments>
		<pubDate>Tue, 26 May 2009 09:23:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<category><![CDATA[中国平安]]></category>

		<category><![CDATA[骗子]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=727</guid>
		<description><![CDATA[今天突然接到中国保险的推销电话，说我中奖了，免费赠送一份交通意外保险，来电号码是02195511 这个号码后经查询，地区是中国平安公司的，后来根据短信内容，的确也查到了工号为A20××××的电话销售员。
销售的内容是，只要留下我的姓名和出生年月（没要身份证号码，所以警惕度下降），就可以获得一份交通意外险，所以，我把他需要的信息给他了，我满怀希望期待那份免费的保单号，结果……
不过当我到他们网站的时候，的确说赠送，不过我没有保单号，因为他们索取完我的信息，就没下文了。
我的手机号码＋真实姓名的价值远远高于推销员的工资＋电话费用。
如果我继续填写我的身份证号码，后果将不堪设想。
流氓就是流氓，骗子就是骗子。
有时候骗子太大了，反而看不清。
我的平安的短信我已经永久收藏了，我会告诉身边所有的人。
再到大街上看见平安的推销员，我会把真相告诉他们。
－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－
终于有人回复了，不过看IP，这哥们是河南的，我觉得也是中国平安的员工吧。很不幸，我受到了中国平安的短信和保单号。
更不幸，我没有提供身份证号码，依然得到了保单号。或者中国平安是个骗子，或者楼下你是个骗子。反正你们都是中国平安的，自己公司内部出现自相矛盾，你们还想骗谁。
如果有人想证实，我把中国平安的短信截图公布。
短信的确是免费的保险，但只是三个月。中国平安用三个月的免费保险骗取了我的手机号和真实姓名，我不知道他们以后会如何。反正短信骚扰跟电话推销是少不了了。
如果中国平安是有良知的企业，我希望我的号码不再受到任何中国平安的信息。   谢谢。
]]></description>
			<content:encoded><![CDATA[<p>今天突然接到中国保险的推销电话，说我中奖了，免费赠送一份交通意外保险，来电号码是02195511 这个号码后经查询，地区是中国平安公司的，后来根据短信内容，的确也查到了工号为A20××××的电话销售员。</p>
<p>销售的内容是，只要留下我的姓名和出生年月（没要身份证号码，所以警惕度下降），就可以获得一份交通意外险，所以，我把他需要的信息给他了，我满怀希望期待那份免费的保单号，结果……</p>
<p>不过当我到他们网站的时候，的确说赠送，不过我没有保单号，因为他们索取完我的信息，就没下文了。</p>
<p>我的手机号码＋真实姓名的价值远远高于推销员的工资＋电话费用。</p>
<p>如果我继续填写我的身份证号码，后果将不堪设想。</p>
<p>流氓就是流氓，骗子就是骗子。</p>
<p>有时候骗子太大了，反而看不清。</p>
<p>我的平安的短信我已经永久收藏了，我会告诉身边所有的人。</p>
<p>再到大街上看见平安的推销员，我会把真相告诉他们。</p>
<p>－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－</p>
<p>终于有人回复了，不过看IP，这哥们是河南的，我觉得也是中国平安的员工吧。很不幸，我受到了中国平安的短信和保单号。</p>
<p>更不幸，我没有提供身份证号码，依然得到了保单号。或者中国平安是个骗子，或者楼下你是个骗子。反正你们都是中国平安的，自己公司内部出现自相矛盾，你们还想骗谁。</p>
<p>如果有人想证实，我把中国平安的短信截图公布。</p>
<p>短信的确是免费的保险，但只是三个月。中国平安用三个月的免费保险骗取了我的手机号和真实姓名，我不知道他们以后会如何。反正短信骚扰跟电话推销是少不了了。</p>
<p>如果中国平安是有良知的企业，我希望我的号码不再受到任何中国平安的信息。   谢谢。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/05/26/%e4%b8%ad%e5%9b%bd%e5%b9%b3%e5%ae%89%e4%bf%9d%e9%99%a9%e5%b7%a5%e5%8f%b7%e4%b8%baa20%c3%97%c3%97%c3%97%c3%97%e7%9a%84%e7%94%b5%e8%af%9d%e9%94%80%e5%94%ae%e6%9e%9c%e7%84%b6%e6%98%af%e4%b8%aa%e9%aa%97.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>我那些当民工的日子</title>
		<link>http://www.sunboyu.cn/2009/05/26/%e6%88%91%e9%82%a3%e4%ba%9b%e5%bd%93%e6%b0%91%e5%b7%a5%e7%9a%84%e6%97%a5%e5%ad%90.shtml</link>
		<comments>http://www.sunboyu.cn/2009/05/26/%e6%88%91%e9%82%a3%e4%ba%9b%e5%bd%93%e6%b0%91%e5%b7%a5%e7%9a%84%e6%97%a5%e5%ad%90.shtml#comments</comments>
		<pubDate>Tue, 26 May 2009 08:46:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[相当拍砖]]></category>

		<category><![CDATA[三炮]]></category>

		<category><![CDATA[北漂]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=723</guid>
		<description><![CDATA[谨以此文鼓励所有北漂的IT民工们。]]></description>
			<content:encoded><![CDATA[<p>转自 <a href="http://www.imphper.net/" target="_blank">三炮的blog</a>  http://www.imphper.net/</p>
<p>    一年前的这个时候我还在地下室住着。</p>
<p>    每当想起那段住地下室，隔板间的日子，心中总是哇凉哇凉的。有种想为自己痛哭一场的感觉。</p>
<p>    地下室的周围是正在拆建的八里庄社区，下午下班回去，床上趴着3，4只蟑螂，我一开门，就一溜烟的都不见了，我的床上铺着一张亲戚家给的破床单，后来在附近买了张床单，睡上去就像是睡在塑料布上一样，因为不是纯棉的，手感非常的差。屋子非常的小，有一个窗户，非常小，野猫有时候还会过来光顾一下，上面护着报纸，微微的透着光。窗户的外面是两栋楼的中间，屋里的灯管让我眩晕，睡在地下室的床上，我常常在想，人死了，就是埋在这个深度吧！我也常常在那片废墟上的简易棚吃饭，什么拉面呀，炒饭呀，也不管干净不干净，都是周围的民工在那里吃，我就和他们搅和在一起。不下雨，尘土飞扬，下雨，泥泞的没路可走。到处都是坑。进入地下室的感觉，就像是在往地心深处走，外面一片光明，里面越走越黑。上班的路上大型工程车来来往往。地下室每次洗澡要5块钱，而且水能烫死人，后来为了能洗澡，我去对面的奥利健身看过，年卡是5000，我被吓出来了，我只是想在附近找个公共浴室，好几次下班我走路去找，打听，可就是找不到。最后我只好周末为了洗澡花4个小时的来回路程去北京的亲戚家洗。这段时间我每天下了班就去东边的北二外上自习看书，晚上尽可能的晚点回来。看了几本书，水平提高了不少。那时候真的是在绝望中给自己希望，墙上挂着彩票中奖号，每天下班去买一注彩票。我的隔壁住着一个神经病老头，还总爱找我唠嗑。养了一只“鹩哥 ”，叫起来很吓人。地下室房租450，网费60，水费20。</p>
<p>    接着伟大的奥运会要开幕了，通知地下室不让住人了。我们被赶了出来，我是倒数第二户被请出来的，因为房子不好租所以拖着。在地下室里我给朋友打电话说不让住了，我快哭了。后来接着我找到房子了。</p>
<p>    本来还在为找到房子而庆幸，结果搬过去很快就证明我错了，天气很快就热了，且不说没有空调，因为是客厅的隔板间，而且房屋本事就不通透，我住的隔板间也没有窗户，虽然能洗澡，比地下室这点好些，还有洗衣机，不用手洗衣服，但他们在厨房一做饭，而且那家是湖北人，做饭爱放辣椒，油烟有一半都跑我屋里，能呛死我，而且通风通不出去。这还算好的，那会儿天热了，晚上睡觉我把厨房门打开通风，因为厨房通外面，而且厨房门对着我的房间，可晚上就不知道谁把厨房门给我关上，有几次我从睡眠中喘不过气醒来，就像是被把嘴捂住，半夜起来再去把门打开，就为了能够吸一口空气。而且那户人家一共合租了4家，一共有7个人，而且他们互相之间都有矛盾，有几次警察都来了。隔板间房租450，网费40，其他另算。</p>
<p>    那段时间工作也特别不稳定，公司里乱七八糟，小人当道，同事都被气走了，我们在那里做着最后的挣扎，经常被叫去因为一点小事批评。那段时间我在公司带着，同时也在找工作，那个时侯的我水平已经锻炼的可以点了，也算是工作满一年了，好难啊，终于满一年了。先后几个面试的公司都要我了，体坛周报，盛大文学，这两个第一个因为他们曾经对员工做过很过分的事情，而且远离机场，在宣武区，就没去，盛大文学的工资少1k，而且在立水桥，地方也不好，也没去。就去了离机场比较顺路的三元桥，左家庄那边，后来干了足足5个月，直到那边公司破产。到了新公司以后我的工资也可以租的起像样一点的房子了，而且女朋友也从廊坊军训回来了，我一个人可以受苦受罪，不能让她受罪，现在想起来她有几次从廊坊回来看我，和我一起住在那个黑暗的地下室，那个喘不过气的隔板间，现在想起来我都还是心里面特别难受。找到新工作以后我很快就搬到四元桥了，是一个小区六楼的两居室，隔壁住一对夫妻，他们住大间，我住小间，大概也就是8M的样子，终于可以迎接着早晨的阳光起床了。有燃气热水器，有空调，我终于能吸到新鲜空气，能看到阳光了！！就这个，因为我女朋友经常过来，他们倒不乐意了，中间闹了几次矛盾，虽然房子住着比较舒服，但是还是太小，而且是1.2的单人床。这时候我也有自行车了，我可以每天骑车15分钟上班。一个月房租850，网费60，乱七八糟下来一个月1100，住了小半年。1100的房租对我一个人来说承担起来还是很重的，除去房租，因为之前我几乎一无所有，买了乱七八糟的一些东西，几乎就没有存下钱，左家庄的公司2008.12.8破产，我去同学网干了一个月，因为工作太累，让我加班我不愿意，就把我辞退了，这也是我期望的。回来我就搬家了，搬到现在住的地方，草场地，是机场方向的一个村子，盖的3层小楼，厨房卫生间（有太阳能）七户公用。那时候是冬天，还凑合能住，单房子潮湿，被子唔不热，一次交了半年的，因为起码有两扇大窗户，有阳光，房子7月份到期，想想去年炎热的北京，我很犹豫要不要7月份搬家，因为我也有点舍不得这里，和邻居关系很好了，而且房东人很好，房子是600一个月除了电费其他全包。从这里到我现在的公司每天骑车来回也得两小时，累得我呀。。。。</p>
<p>    这些东西不吐不快，总算是写完了，算是对去年的这个时候的自己的一种佩服与自勉了，想想以前那么艰苦的日子都过去了，我还有什么过不去的呢？</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/05/26/%e6%88%91%e9%82%a3%e4%ba%9b%e5%bd%93%e6%b0%91%e5%b7%a5%e7%9a%84%e6%97%a5%e5%ad%90.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>Linux下APACHE MYSQL PHP FCgid Suexec 配置文档V1.0</title>
		<link>http://www.sunboyu.cn/2009/05/22/linux%e4%b8%8bapache-mysql-php-fcgid-suexec-%e9%85%8d%e7%bd%ae%e6%96%87%e6%a1%a3v10.shtml</link>
		<comments>http://www.sunboyu.cn/2009/05/22/linux%e4%b8%8bapache-mysql-php-fcgid-suexec-%e9%85%8d%e7%bd%ae%e6%96%87%e6%a1%a3v10.shtml#comments</comments>
		<pubDate>Fri, 22 May 2009 03:14:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[APACHE]]></category>

		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[MYSQL]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[centos]]></category>

		<category><![CDATA[LAMP]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=716</guid>
		<description><![CDATA[文档版本：V1.0
启动撰写时间: 2009年05月20日
目的：全面详细介绍LAMP fastcgi方式配置细节,基于之前的自动配置脚本，目的是把更多的细节转达给大家。
需要软件源码：
CentOS4.7
http://centos.ustc.edu.cn/centos/4.7/isos/i386/CentOS-4.7.ServerCD-i386.iso
http://centos.ustc.edu.cn/centos/4.7/isos/x86_64/CentOS-4.7.ServerCD-x86_64.iso
Apache-2.2.9
http://archive.apache.org/dist/httpd/httpd-2.2.9.tar.gz
MYSQL-5.2.6
http://downloads.mysql.com/archives/mysql-5.0/mysql-5.0.22.tar.gz
PHP-5.2.6
http://museum.php.net/php5/php-5.2.6.tar.gz
FCGID
http://ncu.dl.sourceforge.net/sourceforge/mod-fcgid/mod_fcgid.2.2.tgz
安装：
第一步：Linux系统安装,同时可以参照我原来的文档
http://www.sunboyu.cn/2008/06/13/centos5%E5%AE%89%E8%A3%85%E6%8C%87%E5%8D%97%EF%BC%88%E7%AE%80%E5%8D%95%E7%AF%87%EF%BC%89.shtml

视频。我按照最小化进行安装。最后ping百度不通，是因为没有重启，重启后是正常的。从过程可疑看出，我用的vmware进行安装，所以，要根据你实际的网络情况进行调整配置。
Linux Centos 4.7 安装视频（下载）(关闭)

第二步：系统更新，组件安装。
首先更新一下yum源，具体查看这篇日志 http://www.sunboyu.cn/2009/01/07/centos4%E5%88%9D%E5%A7%8B%E5%8C%96%E7%9A%84%E4%B8%80%E4%BA%9B%E8%84%9A%E6%9C%AC.shtml
升级一下系统：
yum upgrade
安装一些必要的组件：
yum install gcc gcc-c++ gcc4-c++ autoconf gd gd-devel libxml2 libxml2-devel zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel expat expat-devel sqlite sqlite-devel png-devel jpeg-devel libtool libjpeg* libpng* freetype-devel
安装MYSQL-5.0.22
解压mysql
#tar -zxvf mysql-5.0.22.tar.gz
#cd cd mysql-5.0.22
#groupadd mysql
#useradd -g mysql mysql
#./configure &#8211;prefix=/opt/mysql-5.0.22 [...]]]></description>
			<content:encoded><![CDATA[<p>文档版本：V1.0</p>
<p>启动撰写时间: 2009年05月20日</p>
<p>目的：全面详细介绍LAMP fastcgi方式配置细节,基于之前的自动配置脚本，目的是把更多的细节转达给大家。</p>
<p>需要软件源码：</p>
<p>CentOS4.7</p>
<p>http://centos.ustc.edu.cn/centos/4.7/isos/i386/CentOS-4.7.ServerCD-i386.iso</p>
<p>http://centos.ustc.edu.cn/centos/4.7/isos/x86_64/CentOS-4.7.ServerCD-x86_64.iso</p>
<p>Apache-2.2.9</p>
<p>http://archive.apache.org/dist/httpd/httpd-2.2.9.tar.gz</p>
<p>MYSQL-5.2.6</p>
<p>http://downloads.mysql.com/archives/mysql-5.0/mysql-5.0.22.tar.gz</p>
<p>PHP-5.2.6</p>
<p>http://museum.php.net/php5/php-5.2.6.tar.gz</p>
<p>FCGID</p>
<p>http://ncu.dl.sourceforge.net/sourceforge/mod-fcgid/mod_fcgid.2.2.tgz</p>
<p>安装：</p>
<p>第一步：Linux系统安装,同时可以参照我原来的文档</p>
<p>http://www.sunboyu.cn/2008/06/13/centos5%E5%AE%89%E8%A3%85%E6%8C%87%E5%8D%97%EF%BC%88%E7%AE%80%E5%8D%95%E7%AF%87%EF%BC%89.shtml</p>
<p><span id="more-716"></span></p>
<p>视频。我按照最小化进行安装。最后ping百度不通，是因为没有重启，重启后是正常的。从过程可疑看出，我用的vmware进行安装，所以，要根据你实际的网络情况进行调整配置。</p>
<p><a href="http://www.sunboyu.cn/upfiles/v/lamp.avi">Linux Centos 4.7 安装视频（下载）</a>(关闭)</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="353" height="291" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://player.youku.com/player.php/sid/XMTExMTU3NzE2/v.swf" /><embed type="application/x-shockwave-flash" width="353" height="291" src="http://player.youku.com/player.php/sid/XMTExMTU3NzE2/v.swf"></embed></object></p>
<p>第二步：系统更新，组件安装。</p>
<p>首先更新一下yum源，具体查看这篇日志 http://www.sunboyu.cn/2009/01/07/centos4%E5%88%9D%E5%A7%8B%E5%8C%96%E7%9A%84%E4%B8%80%E4%BA%9B%E8%84%9A%E6%9C%AC.shtml</p>
<p>升级一下系统：</p>
<p>yum upgrade</p>
<p>安装一些必要的组件：</p>
<p>yum install gcc gcc-c++ gcc4-c++ autoconf gd gd-devel libxml2 libxml2-devel zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel expat expat-devel sqlite sqlite-devel png-devel jpeg-devel libtool libjpeg* libpng* freetype-devel</p>
<p>安装MYSQL-5.0.22</p>
<p>解压mysql</p>
<p>#tar -zxvf mysql-5.0.22.tar.gz</p>
<p>#cd cd mysql-5.0.22</p>
<p>#groupadd mysql</p>
<p>#useradd -g mysql mysql</p>
<p>#./configure &#8211;prefix=/opt/mysql-5.0.22 \<br />
&#8211;without-debug \<br />
&#8211;enable-thread-safe-client \<br />
&#8211;with-client-ldflags=-all-static \<br />
&#8211;with-mysqld-ldflags=-all-static \<br />
&#8211;enable-local-infile \<br />
&#8211;enable-largefile \<br />
&#8211;with-charset=utf8 \<br />
&#8211;with-collation=utf8_unicode_ci \<br />
&#8211;with-extra-charsets=complex \<br />
&#8211;with-pic \<br />
&#8211;with-mysqld-libs \<br />
&#8211;with-comment \<br />
&#8211;with-query-cache \<br />
&#8211;with-bench \<br />
&#8211;with-big-tables \<br />
&#8211;with-innodb \<br />
&#8211;with-mysqld-use=mysql</p>
<p>#make</p>
<p>#make install</p>
<p>#cp ./support-files/my-medium.cnf /etc/my.cnf</p>
<p>#cp ./support-files/mysql.server /etc/init.d/mysqld</p>
<p>#chmod 755 /etc/init.d/mysqld</p>
<p>#/opt/mysql-5.0.22/bin/mysql_install_db &#8211;user=mysql &amp;</p>
<p>#echo &#8220;/opt/mysql-5.0.22/bin/mysqld_safe &#8211;user=mysql &amp;&#8221;&gt;&gt;/etc/rc.local</p>
<p>#service mysqld start</p>
<p>#/opt/mysql-5.0.22/bin/mysqladmin -u root password &#8216;123456&#8242;</p>
<p>#cd ..</p>
<p>安装APACHE</p>
<p>#groupadd apache</p>
<p>#useradd -g apache apache</p>
<p>#tar -zxvf httpd-2.2.9.tar.gz</p>
<p>#cd httpd-2.2.9</p>
<p>#./configure &#8211;prefix=/opt/httpd-2.2.9 \<br />
&#8211;enable-dav \<br />
&#8211;enable-dav-fs \<br />
&#8211;enable-modules=all \<br />
&#8211;enable-mods-shared=all \<br />
&#8211;disable-auth-basic \<br />
&#8211;enable-include \<br />
&#8211;enable-substitute \<br />
&#8211;enable-authz-dbm \<br />
&#8211;enable-log-config \<br />
&#8211;enable-headers \<br />
&#8211;enable-setenvif \<br />
&#8211;with-ssl \<br />
&#8211;enable-static-ab \<br />
&#8211;enable-http \<br />
&#8211;enable-mime \<br />
&#8211;enable-status \<br />
&#8211;enable-isapi \<br />
&#8211;enable-imagemap \<br />
&#8211;enable-actions \<br />
&#8211;enable-speling \<br />
&#8211;enable-userdir \<br />
&#8211;enable-alias \<br />
&#8211;enable-vhost-alias \<br />
&#8211;enable-dir \<br />
&#8211;enable-rewrite \<br />
&#8211;enable-dumpio \<br />
&#8211;enable-echo \<br />
&#8211;enable-so \<br />
&#8211;enable-example \<br />
&#8211;enable-case-filter \<br />
&#8211;enable-substitute \<br />
&#8211;enable-log-config \<br />
&#8211;enable-logio \<br />
&#8211;enable-env \<br />
&#8211;with-mpm=worker \<br />
&#8211;with-included-apr \<br />
&#8211;with-apr \<br />
&#8211;with-apr-util \<br />
&#8211;with-z \<br />
&#8211;enable-proxy \<br />
&#8211;enable-proxy-connect \<br />
&#8211;enable-proxy-ftp \<br />
&#8211;enable-proxy-http \<br />
&#8211;enable-proxy-ajp \<br />
&#8211;enable-proxy-balancer \<br />
&#8211;enable-suexec \<br />
&#8211;with-suexec-caller=apache \<br />
&#8211;with-suexec-userdir=www \<br />
&#8211;with-suexec-docroot=/home \<br />
&#8211;with-suexec-uidmin=100 \<br />
&#8211;with-suexec-gidmin=100 \<br />
&#8211;with-suexec-logfile=/var/log/suexec_log</p>
<p>#make</p>
<p>#make install</p>
<p>#ln -s /opt/httpd-2.2.9/bin/apachectl /etc/init.d/httpd</p>
<p>#cd ..</p>
<p>修改apache配置文件 /opt/httpd-2.2.9/conf/httpd.conf</p>
<p>找到</p>
<p>User daemon<br />
Group daemon</p>
<p>修改为</p>
<p>User apache<br />
Group apache</p>
<p>安装 fcgid</p>
<p>#tar -zxvf mod_fcgid.2.2.tgz</p>
<p>#cd mod_fcgid.2.2</p>
<p>修改Makefile</p>
<p>top_dir = /usr/local/apache2 为 top_dir = /opt/httpd-2.2.9</p>
<p>#make</p>
<p>#make install</p>
<p>#cd ..</p>
<p>修改apache配置文件 httpd.conf</p>
<p>增加 LoadModule fcgid_module modules/mod_fcgid.so</p>
<p>安装PHP，记得增加cgi支持</p>
<p>#tar -zxvf php-5.2.6.tar.gz</p>
<p>#cd php-5.2.6</p>
<p>#./configure &#8211;prefix=/opt/php-5.2.6 &#8211;with-libxml-dir &#8211;enable-cli &#8211;enable-cgi &#8211;enable-fastcgi &#8211;enable-bcmath &#8211;enable-force-cgi-redirect &#8211;enable-discard-path &#8211;enable-path-info-check &#8211;with-openssl &#8211;with-pcre-regex &#8211;enable-calendar &#8211;enable-dom &#8211;enable-ftp &#8211;with-openssl-dir=/usr/local/ssl &#8211;enable-gd-jis-conv &#8211;enable-hash &#8211;with-iconv &#8211;enable-json &#8211;enable-mbstring &#8211;enable-mbregex &#8211;enable-pdo &#8211;enable-posix &#8211;enable-libxml &#8211;enable-simplexml &#8211;with-sqlite &#8211;enable-tokenizer &#8211;enable-xmlreader &#8211;enable-xmlwriter &#8211;enable-sockets &#8211;with-zlib &#8211;with-freetype-dir &#8211;with-gd &#8211;with-jpeg-dir=/usr/lib &#8211;with-png-dir=/usr/lib &#8211;with-mime-magic &#8211;with-mysql=/opt/mysql-5.0.22 &#8211;with-zlib-dir=/usr/lib/libz.so &#8211;with-pdo-mysql=/opt/mysql-5.0.22 &#8211;with-pdo-sqlite &#8211;enable-posix &#8211;enable-soap</p>
<p>#make</p>
<p>#make install</p>
<p>修改apache配置文件httpd.conf</p>
<p>找到</p>
<p># Virtual hosts<br />
#Include conf/extra/httpd-vhosts.conf</p>
<p>修改为</p>
<p># Virtual hosts<br />
Include conf/extra/httpd-vhosts.conf</p>
<p>修改apache配置文件 conf/extra/httpd-vhosts.conf</p>
<p>删除所有的虚拟主机</p>
<p>现在配置虚拟主机：</p>
<p>所有虚拟主机的组为 vhost</p>
<p>增加一个用户名为sunboyu的虚拟主机</p>
<p>#groupadd vhost</p>
<p>#useradd -g vhost sunboyu</p>
<p>用户主目录默认为 /home/sunboyu</p>
<p>增加两个目录</p>
<p>#mkdir /home/sunboyu/www</p>
<p>#mkdir /home/sunboyu/logs</p>
<p>增加虚拟主机配置文件</p>
<p>SuexecUserGroup sunboyu vhost<br />
ServerAdmin sunboyu@gmail.com<br />
DocumentRoot &#8220;/home/sunboyu/www&#8221;<br />
ServerName 192.168.0.4<br />
ServerAlias sunboyu.cn<br />
ErrorLog &#8220;/home/sunboyu/logs/error_log&#8221;<br />
CustomLog &#8220;|/opt/httpd-2.2.9/bin/rotatelogs /home/sunboyu/logs/%Y_%m_%d_log 86400 +480&#8243; common</p>
<p>AddHandler fcgid-script .php<br />
#AddHandler cgi-script .pl .cgi<br />
FCGIWrapper /home/sunboyu/php-cgi .php<br />
Options ExecCGI FollowSymLinks<br />
AllowOverride all<br />
Order deny,allow<br />
Allow from all</p>
<p>创建文件 /home/sunboyu/php-cgi 文件内容为</p>
<p>#!/bin/sh<br />
export PHPRC=/home/sunboyu<br />
export PHP_FCGI_CHILDREN=4<br />
export PHP_FCGI_MAX_REQUESTS=5000<br />
exec /opt/php-5.2.6/bin/php-cgi &#8220;$@&#8221;</p>
<p>#chmod 755 -R /home/sunboyu</p>
<p>#chown sunboyu:vhost -R /home/sunboyu</p>
<p>配置到现在，重启apache</p>
<p>#service httpd restart</p>
<p>在虚拟目录根下 /home/sunboyu/www 下写文件 info.php 内容为 phpinfo() 修改权限为755 用户组为 sunboyu:vhost</p>
<p>现在访问应该是phpinfo的信息。</p>
<p>在写这篇文档的时候，基本是按照数续依次安装。</p>
<p>如果有问题，希望帮忙，请提前修改你服务器root密码，我们可以一起调试。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/05/22/linux%e4%b8%8bapache-mysql-php-fcgid-suexec-%e9%85%8d%e7%bd%ae%e6%96%87%e6%a1%a3v10.shtml/feed</wfw:commentRss>
<enclosure url="http://www.sunboyu.cn/upfiles/v/lamp.avi" length="17880876" type="video/x-msvideo" />
		</item>
		<item>
		<title>IT人办公室锻炼器械－俯卧撑</title>
		<link>http://www.sunboyu.cn/2009/05/22/it%e4%ba%ba%e5%8a%9e%e5%85%ac%e5%ae%a4%e9%94%bb%e7%82%bc%e5%99%a8%e6%a2%b0%ef%bc%8d%e4%bf%af%e5%8d%a7%e6%92%91.shtml</link>
		<comments>http://www.sunboyu.cn/2009/05/22/it%e4%ba%ba%e5%8a%9e%e5%85%ac%e5%ae%a4%e9%94%bb%e7%82%bc%e5%99%a8%e6%a2%b0%ef%bc%8d%e4%bf%af%e5%8d%a7%e6%92%91.shtml#comments</comments>
		<pubDate>Fri, 22 May 2009 02:24:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<category><![CDATA[俯卧撑]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=713</guid>
		<description><![CDATA[此运动器械购于淘宝，24块＋5块快递＝29元
平时工作紧张，只能进行简单节约空间的运动，俯卧撑是办公室运动比较适合的。
因本人比较丰满，刚买只能做三个，半个月练习后能做到20个标准动作的。
运动之前本人单车上班下肢能活动开，到单位可以进行上肢运动。
不建议无氧运动，那样会让你的肌肉变硬，失去弹性。

切忌：当你只能做三个的时候，不要对着你的同事或者亲人，除非你跟他有天大的仇恨，否则后果自负！
]]></description>
			<content:encoded><![CDATA[<p>此运动器械购于淘宝，24块＋5块快递＝29元</p>
<p>平时工作紧张，只能进行简单节约空间的运动，俯卧撑是办公室运动比较适合的。</p>
<p>因本人比较丰满，刚买只能做三个，半个月练习后能做到20个标准动作的。</p>
<p>运动之前本人单车上班下肢能活动开，到单位可以进行上肢运动。</p>
<p>不建议无氧运动，那样会让你的肌肉变硬，失去弹性。</p>
<p><a href="http://www.sunboyu.cn/upfiles/2009/05/20071119202942838gif.jpg"><img src="http://www.sunboyu.cn/upfiles/2009/05/20071119202942838gif.jpg" alt="20071119202942838gif" title="20071119202942838gif" width="533" height="394" class="aligncenter size-full wp-image-714" /></a></p>
<p>切忌：当你只能做三个的时候，不要对着你的同事或者亲人，除非你跟他有天大的仇恨，否则后果自负！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/05/22/it%e4%ba%ba%e5%8a%9e%e5%85%ac%e5%ae%a4%e9%94%bb%e7%82%bc%e5%99%a8%e6%a2%b0%ef%bc%8d%e4%bf%af%e5%8d%a7%e6%92%91.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>设计标准的通讯协议</title>
		<link>http://www.sunboyu.cn/2009/05/17/%e8%ae%be%e8%ae%a1%e6%a0%87%e5%87%86%e7%9a%84%e9%80%9a%e8%ae%af%e5%8d%8f%e8%ae%ae.shtml</link>
		<comments>http://www.sunboyu.cn/2009/05/17/%e8%ae%be%e8%ae%a1%e6%a0%87%e5%87%86%e7%9a%84%e9%80%9a%e8%ae%af%e5%8d%8f%e8%ae%ae.shtml#comments</comments>
		<pubDate>Sun, 17 May 2009 15:48:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[原创技术]]></category>

		<category><![CDATA[php]]></category>

		<category><![CDATA[Python]]></category>

		<category><![CDATA[协议]]></category>

		<category><![CDATA[虚拟主机]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=710</guid>
		<description><![CDATA[当然不会是底层通讯协议，因为TCP/IP已经为我们准备好了足够完善的通讯机制确保稳定安全。
此协议为七层应用协议，跟http ftp是平级的，使用socket进行通讯，可以兼容php、python、java、c等语言。
协议开源，使用点对点信息校验，满足普通应用。
协议模拟tcp封包过程，进行数据封装。
协议内容：(伪代码)
struct vhost
{
&#160;&#160; &#160;Head varchar(10),&#160; &#160; &#160; &#160; &#160; &#160; //协议头
&#160;&#160; &#160;Version int(5),&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;//版本
&#160;&#160; &#160;Timestamp int(5),&#160; &#160; &#160; &#160; &#160; &#160; //时间戳
&#160;&#160; &#160;Length int(10),&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; //包长度
&#160;&#160; &#160;Signature varchar(10),&#160; &#160; &#160; //签名
&#160;&#160; &#160;Date varchar(500)&#160; &#160; &#160; &#160; &#160; &#160; //数据 
}
协议包包括了协议头，版本，时间戳，包长度、签名（防止数据篡改和伪造）,数据。基本能满足应用。
控制端数据打包发送后，受控端只需返回接受成功即可，以便客户端及时作出判断。
底下针对此包做PHP版本的封包和python的解包部分。
注释：原来使用问答的方式进行通讯，需要多次数据的应答，而此次的修改只需一次即可完成，而打包封包在一端完成，这样对网络稳定性的依赖就会降低。
]]></description>
			<content:encoded><![CDATA[<p>当然不会是底层通讯协议，因为TCP/IP已经为我们准备好了足够完善的通讯机制确保稳定安全。</p>
<p>此协议为七层应用协议，跟http ftp是平级的，使用socket进行通讯，可以兼容php、python、java、c等语言。</p>
<p>协议开源，使用点对点信息校验，满足普通应用。</p>
<p>协议模拟tcp封包过程，进行数据封装。</p>
<p>协议内容：(伪代码)</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">struct vhost</li>
<li>{</li>
<li>&nbsp;&nbsp; &nbsp;Head varchar(10),&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //协议头</li>
<li>&nbsp;&nbsp; &nbsp;Version int(5),&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//版本</li>
<li>&nbsp;&nbsp; &nbsp;Timestamp int(5),&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //时间戳</li>
<li>&nbsp;&nbsp; &nbsp;Length int(10),&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //包长度</li>
<li>&nbsp;&nbsp; &nbsp;Signature varchar(10),&nbsp; &nbsp; &nbsp; //签名</li>
<li>&nbsp;&nbsp; &nbsp;Date varchar(500)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //数据 </li>
<li>}</li></ol></div>
<p>协议包包括了协议头，版本，时间戳，包长度、签名（防止数据篡改和伪造）,数据。基本能满足应用。</p>
<p>控制端数据打包发送后，受控端只需返回接受成功即可，以便客户端及时作出判断。</p>
<p>底下针对此包做PHP版本的封包和python的解包部分。</p>
<p>注释：原来使用问答的方式进行通讯，需要多次数据的应答，而此次的修改只需一次即可完成，而打包封包在一端完成，这样对网络稳定性的依赖就会降低。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/05/17/%e8%ae%be%e8%ae%a1%e6%a0%87%e5%87%86%e7%9a%84%e9%80%9a%e8%ae%af%e5%8d%8f%e8%ae%ae.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>做开源的虚拟主机管理系统</title>
		<link>http://www.sunboyu.cn/2009/05/15/%e5%81%9a%e5%bc%80%e6%ba%90%e7%9a%84%e8%99%9a%e6%8b%9f%e4%b8%bb%e6%9c%ba%e7%ae%a1%e7%90%86%e7%b3%bb%e7%bb%9f.shtml</link>
		<comments>http://www.sunboyu.cn/2009/05/15/%e5%81%9a%e5%bc%80%e6%ba%90%e7%9a%84%e8%99%9a%e6%8b%9f%e4%b8%bb%e6%9c%ba%e7%ae%a1%e7%90%86%e7%b3%bb%e7%bb%9f.shtml#comments</comments>
		<pubDate>Thu, 14 May 2009 21:47:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[虚拟主机管理]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=707</guid>
		<description><![CDATA[经过痛苦的削减，我把我预想中的虚拟主机管理系统功能裁到了最小 － 标准的单机lamp虚拟主机管理系统。
这个过程是很痛苦的。在软件设计的时候，我参考了好多成型的虚拟主机管理系统，包括蓝芒，webmin，还有德国等几个虚拟主机管理。不过在做的过程中发现了各自的优缺点，做了取并集综合的方法，整理出一个无比强大的功能设计文档。另外，根据国情，设计了完善的业务流程和各种接口。
不过在做的过程才发现，庞大的系统我根本不可能去实现。另外在做的时候的确卡在了一些技术细节上，python的使用毕竟不如php熟练，另外socket通讯在不同语言上有很多细节的区别，还得一一去测试突破。
基于以上原因，我把设计文档一再精简，到了目前仅适合我使用的程度：
1、开设虚拟主机，mysql数据库，并开ftp帐号。
2、用户可以修改mysql数据库密码。
3、用户可以修改ftp帐号密码。
如此以来，我项目可以继续进行了。因为足够简单。另外之前的折腾并不是白做，因为好多问题悬在了心中。因为之前的鸿鹄大志，导致我现在设计的结构可扩展性比较强，程序功能模块也都进行了合理规划。
希望在半个月后能出第一版程序，届时会开源公测。 希望对此有兴趣的同学加入我们（其实是我）。
]]></description>
			<content:encoded><![CDATA[<p>经过痛苦的削减，我把我预想中的虚拟主机管理系统功能裁到了最小 － 标准的单机lamp虚拟主机管理系统。</p>
<p>这个过程是很痛苦的。在软件设计的时候，我参考了好多成型的虚拟主机管理系统，包括蓝芒，webmin，还有德国等几个虚拟主机管理。不过在做的过程中发现了各自的优缺点，做了取并集综合的方法，整理出一个无比强大的功能设计文档。另外，根据国情，设计了完善的业务流程和各种接口。</p>
<p>不过在做的过程才发现，庞大的系统我根本不可能去实现。另外在做的时候的确卡在了一些技术细节上，python的使用毕竟不如php熟练，另外socket通讯在不同语言上有很多细节的区别，还得一一去测试突破。</p>
<p>基于以上原因，我把设计文档一再精简，到了目前仅适合我使用的程度：</p>
<p>1、开设虚拟主机，mysql数据库，并开ftp帐号。</p>
<p>2、用户可以修改mysql数据库密码。</p>
<p>3、用户可以修改ftp帐号密码。</p>
<p>如此以来，我项目可以继续进行了。因为足够简单。另外之前的折腾并不是白做，因为好多问题悬在了心中。因为之前的鸿鹄大志，导致我现在设计的结构可扩展性比较强，程序功能模块也都进行了合理规划。</p>
<p>希望在半个月后能出第一版程序，届时会开源公测。 希望对此有兴趣的同学加入我们（其实是我）。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/05/15/%e5%81%9a%e5%bc%80%e6%ba%90%e7%9a%84%e8%99%9a%e6%8b%9f%e4%b8%bb%e6%9c%ba%e7%ae%a1%e7%90%86%e7%b3%bb%e7%bb%9f.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>如何才能作出一款好的游戏</title>
		<link>http://www.sunboyu.cn/2009/05/13/%e5%a6%82%e4%bd%95%e6%89%8d%e8%83%bd%e4%bd%9c%e5%87%ba%e4%b8%80%e6%ac%be%e5%a5%bd%e7%9a%84%e6%b8%b8%e6%88%8f.shtml</link>
		<comments>http://www.sunboyu.cn/2009/05/13/%e5%a6%82%e4%bd%95%e6%89%8d%e8%83%bd%e4%bd%9c%e5%87%ba%e4%b8%80%e6%ac%be%e5%a5%bd%e7%9a%84%e6%b8%b8%e6%88%8f.shtml#comments</comments>
		<pubDate>Tue, 12 May 2009 19:42:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[感悟]]></category>

		<category><![CDATA[webgame]]></category>

		<category><![CDATA[游戏]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=703</guid>
		<description><![CDATA[貌似我也进入了如火如荼的webgame领域。虽然鄙人玩游戏很少，不过本着发展社会主义建设、全民奔小康的目的，还是要把这个东西搞好。
游戏的一些细节，我还是门外汉，仅总结一下游戏的几个要点：
    背景，剧情。
游戏的背景和剧情是游戏的一个重头戏。纵观国内国外游戏，无一不建立在一个有鲜明背景的基础上。魔兽世界讲的希腊神话的故事，剑侠情缘讲的是古代武林故事，劲舞团把迪厅搬到了家里，CS让你在家里就可以与敌方激战。任何一个好的游戏都无法摆脱一个主线，就像一个电影的剧情，一本小说的线索。而只是打怪升级的游戏显然已经失去了原有的魅力，动人的故事背景是吸引玩家的一个先决条件，流畅的剧情是黏合用户的必要条件。
    完善的程序架构
一直很讨厌提架构这个词，因为到现在我也不知道啥是架构，架构师依然是神秘的东西。我所谓的架构，是要作出一套程序，而程序可伸缩，可扩展，灵活自由，不会因为一点小的改动而逼疯程序员，更不会因为编码人员的牢骚而影响游戏的运营。程序要兼顾开发，策划，运营，运维多个部门，总之一句话：大家好才是真的好。
    强大的运营支持系统
    公司总是要盈利的，而且，不管做任何项目之前都得把这个事情想在前头。记住：老板得养活一个公司的人，投资人需要高额的利润。别听那帮人瞎扯：当时我们只想做用户，没想挣钱！那些人智商都不低，不用怀疑。任何事情都要提前想到，运营系统虽然是游戏内测公测很久才用得着的，但一定要在前期考虑进去。虽然收费系统，支付系统是无用的，但行为分析，数据分析，bug跟踪，用户反馈，推广系统，这些系统在游戏测试的时候既能发挥起作用，在数据基础上的数据挖掘更是游戏发展的风向标。
    团队
    没有一个人的英雄，尤其在IT这个圈子。
]]></description>
			<content:encoded><![CDATA[<p>貌似我也进入了如火如荼的webgame领域。虽然鄙人玩游戏很少，不过本着发展社会主义建设、全民奔小康的目的，还是要把这个东西搞好。</p>
<p>游戏的一些细节，我还是门外汉，仅总结一下游戏的几个要点：</p>
<p>    背景，剧情。</p>
<p>游戏的背景和剧情是游戏的一个重头戏。纵观国内国外游戏，无一不建立在一个有鲜明背景的基础上。魔兽世界讲的希腊神话的故事，剑侠情缘讲的是古代武林故事，劲舞团把迪厅搬到了家里，CS让你在家里就可以与敌方激战。任何一个好的游戏都无法摆脱一个主线，就像一个电影的剧情，一本小说的线索。而只是打怪升级的游戏显然已经失去了原有的魅力，动人的故事背景是吸引玩家的一个先决条件，流畅的剧情是黏合用户的必要条件。</p>
<p>    完善的程序架构</p>
<p>一直很讨厌提架构这个词，因为到现在我也不知道啥是架构，架构师依然是神秘的东西。我所谓的架构，是要作出一套程序，而程序可伸缩，可扩展，灵活自由，不会因为一点小的改动而逼疯程序员，更不会因为编码人员的牢骚而影响游戏的运营。程序要兼顾开发，策划，运营，运维多个部门，总之一句话：大家好才是真的好。</p>
<p>    强大的运营支持系统</p>
<p>    公司总是要盈利的，而且，不管做任何项目之前都得把这个事情想在前头。记住：老板得养活一个公司的人，投资人需要高额的利润。别听那帮人瞎扯：当时我们只想做用户，没想挣钱！那些人智商都不低，不用怀疑。任何事情都要提前想到，运营系统虽然是游戏内测公测很久才用得着的，但一定要在前期考虑进去。虽然收费系统，支付系统是无用的，但行为分析，数据分析，bug跟踪，用户反馈，推广系统，这些系统在游戏测试的时候既能发挥起作用，在数据基础上的数据挖掘更是游戏发展的风向标。</p>
<p>    团队</p>
<p>    没有一个人的英雄，尤其在IT这个圈子。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/05/13/%e5%a6%82%e4%bd%95%e6%89%8d%e8%83%bd%e4%bd%9c%e5%87%ba%e4%b8%80%e6%ac%be%e5%a5%bd%e7%9a%84%e6%b8%b8%e6%88%8f.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>陪大亮加班之所想</title>
		<link>http://www.sunboyu.cn/2009/05/09/%e9%99%aa%e5%a4%a7%e4%ba%ae%e5%8a%a0%e7%8f%ad%e4%b9%8b%e6%89%80%e6%83%b3.shtml</link>
		<comments>http://www.sunboyu.cn/2009/05/09/%e9%99%aa%e5%a4%a7%e4%ba%ae%e5%8a%a0%e7%8f%ad%e4%b9%8b%e6%89%80%e6%83%b3.shtml#comments</comments>
		<pubDate>Sat, 09 May 2009 00:37:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[感悟]]></category>

		<category><![CDATA[时间]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=697</guid>
		<description><![CDATA[大亮又在加班，看来无双休还是小事，这么下去人的肉身能不能保全都是问题。
问题不大，琐碎的JS问题，不能算新手，但js的确是让人头疼的问题，何况人家是javaer。
想起了我刚毕业那股松散浪荡劲，后悔我的时间，我的青春。
客户给钱就能当大爷，老板给钱就能当黄世仁。这是千古不变的道理。
Business is business-抛开这些来讲，就是纯扯淡了。
耽误了两个小时的思考时间。一会要补上。
再也不敢浪费时间了。
]]></description>
			<content:encoded><![CDATA[<p>大亮又在加班，看来无双休还是小事，这么下去人的肉身能不能保全都是问题。</p>
<p>问题不大，琐碎的JS问题，不能算新手，但js的确是让人头疼的问题，何况人家是javaer。</p>
<p>想起了我刚毕业那股松散浪荡劲，后悔我的时间，我的青春。</p>
<p>客户给钱就能当大爷，老板给钱就能当黄世仁。这是千古不变的道理。</p>
<p>Business is business-抛开这些来讲，就是纯扯淡了。</p>
<p>耽误了两个小时的思考时间。一会要补上。</p>
<p>再也不敢浪费时间了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/05/09/%e9%99%aa%e5%a4%a7%e4%ba%ae%e5%8a%a0%e7%8f%ad%e4%b9%8b%e6%89%80%e6%83%b3.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>Smarty分页类修正版</title>
		<link>http://www.sunboyu.cn/2009/05/08/smarty%e5%88%86%e9%a1%b5%e7%b1%bb%e4%bf%ae%e6%ad%a3%e7%89%88.shtml</link>
		<comments>http://www.sunboyu.cn/2009/05/08/smarty%e5%88%86%e9%a1%b5%e7%b1%bb%e4%bf%ae%e6%ad%a3%e7%89%88.shtml#comments</comments>
		<pubDate>Thu, 07 May 2009 19:59:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[smarty]]></category>

		<category><![CDATA[分页]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=691</guid>
		<description><![CDATA[原来写的分页类有问题，经过排查，发现一个变量用错了，修改之
效果,很简单，黑白配，有心的人可以自己修改一下风格，欢迎共享

PHP部分
&#60; ?php
/*&#160; Page.Class.php
&#160;*&#160; Page
&#160;*&#160; @link&#160; &#160; &#160; &#160; http://www.sunboyu.cn
&#160;*&#160; @package&#160; &#160; &#160;OA
&#160;*&#160; @version&#160; &#160; &#160;V1.0
&#160;*
&#160;*&#160; 2009 05 07&#160; sunboyu@gmail.com
&#160;*&#160; Demo
	$page = new Page( 1 , 'v_user' , '*' , '' );
	$rs = $page-&#62;__getlist();
	$smarty-&#62;assign(&#34;page&#34;,$page-&#62;__getpagelist());
&#160;*/
&#160;class Page
&#160;{
	 public $count;&#160; &#160; &#160; #结果总数
	 public $page;&#160; &#160; &#160; &#160;#当前页
	 public $pagesize;&#160; &#160;#每页结果数
	 public $pagecount;&#160; #翻页数
	 public $baseurl;&#160; &#160; #url
	 public [...]]]></description>
			<content:encoded><![CDATA[<p>原来写的分页类有问题，经过排查，发现一个变量用错了，修改之</p>
<p>效果,很简单，黑白配，有心的人可以自己修改一下风格，欢迎共享</p>
<p><a href="http://www.sunboyu.cn/upfiles/2009/05/e69caae591bde5908d-1.jpg"><img src="http://www.sunboyu.cn/upfiles/2009/05/e69caae591bde5908d-1.jpg" alt="e69caae591bde5908d-1" title="e69caae591bde5908d-1" width="589" height="77" class="aligncenter size-full wp-image-695" /></a></p>
<p>PHP部分</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">&lt; ?php</li>
<li>/*&nbsp; Page.Class.php</li>
<li>&nbsp;*&nbsp; Page</li>
<li>&nbsp;*&nbsp; @link&nbsp; &nbsp; &nbsp; &nbsp; http://www.sunboyu.cn</li>
<li>&nbsp;*&nbsp; @package&nbsp; &nbsp; &nbsp;OA</li>
<li>&nbsp;*&nbsp; @version&nbsp; &nbsp; &nbsp;V1.0</li>
<li>&nbsp;*</li>
<li>&nbsp;*&nbsp; 2009 05 07&nbsp; sunboyu@gmail.com</li>
<li>&nbsp;*&nbsp; Demo</li>
<li>	$page = new Page( 1 , 'v_user' , '*' , '' );</li>
<li>	$rs = $page-&gt;__getlist();</li>
<li>	$smarty-&gt;assign(&quot;page&quot;,$page-&gt;__getpagelist());</li>
<li>&nbsp;*/</li>
<li>&nbsp;class Page</li>
<li>&nbsp;{</li>
<li>	 public $count;&nbsp; &nbsp; &nbsp; #结果总数</li>
<li>	 public $page;&nbsp; &nbsp; &nbsp; &nbsp;#当前页</li>
<li>	 public $pagesize;&nbsp; &nbsp;#每页结果数</li>
<li>	 public $pagecount;&nbsp; #翻页数</li>
<li>	 public $baseurl;&nbsp; &nbsp; #url</li>
<li>	 public $result;&nbsp; &nbsp; &nbsp;#结果数组集</li>
<li>	 public $pagelist;&nbsp; &nbsp;#每翻页数</li>
<li>	 public $db;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#数据库连接</li>
<li>	 public $table;&nbsp; &nbsp; &nbsp; #要查询的表</li>
<li>	 public $fileds;&nbsp; &nbsp; &nbsp;#要返回的字段</li>
<li>	 public $where;&nbsp; &nbsp; &nbsp; #where条件</li>
<li>&nbsp;</li>
<li>	 #构造函数，初始化变量</li>
<li>	 function __construct( $page , $table , $fields = '*' , $where = false , $baseurl = false )</li>
<li>	 {</li>
<li>	&nbsp; &nbsp; &nbsp;global $_CFG,$db;</li>
<li>		 $this-&gt;db&nbsp; &nbsp; &nbsp; &nbsp; = $db;</li>
<li>		 $this-&gt;table&nbsp; &nbsp; &nbsp;= $table;</li>
<li>		 $this-&gt;page&nbsp; &nbsp; &nbsp; = isset($page) ? intval($page) : 1;</li>
<li>		 $this-&gt;fileds&nbsp; &nbsp; = $fields;</li>
<li>		 $this-&gt;pagesize&nbsp; = $_CFG['pagesize'];</li>
<li>		 $this-&gt;baseurl&nbsp; &nbsp;= ($baseurl!=false) ? $baseurl : $this-&gt;__geturl();</li>
<li>		 $this-&gt;pagelist&nbsp; = $_CFG['pagelist'];</li>
<li>		 $this-&gt;where&nbsp; &nbsp; &nbsp;= $where;</li>
<li>	 }</li>
<li>&nbsp;</li>
<li>	 #获得当前url</li>
<li>	 function __geturl()</li>
<li>	 {</li>
<li>		parse_str($_SERVER['QUERY_STRING'],$str);</li>
<li>		if(isset($str['page']))</li>
<li>		{</li>
<li>			unset($str['page']);</li>
<li>		}</li>
<li>		return count($str) &gt; 0 ? &quot;?&quot;.http_build_query($str) : &quot;?&quot;;</li>
<li>	 }</li>
<li>&nbsp;</li>
<li>	 #获得记录集</li>
<li>	 function __getlist()</li>
<li>	 {</li>
<li>	&nbsp; &nbsp; &nbsp;#获得count记录</li>
<li>		 $sql = sprintf(&quot;SELECT COUNT(*) AS table_count FROM %s %s&quot;,$this-&gt;table,(($this-&gt;where!=false) ? &quot; WHERE &quot;.$this-&gt;where : ''));</li>
<li>		 $rs = $this-&gt;db-&gt;fetch( $sql );</li>
<li>		 $this-&gt;count = $rs['table_count'];</li>
<li>	&nbsp; &nbsp; &nbsp;$offset = ($this-&gt;page-1)*$this-&gt;pagesize-1;</li>
<li>	&nbsp; &nbsp; &nbsp;$sql = sprintf(&quot;SELECT %s FROM %s %s LIMIT %d,%d&quot;,$this-&gt;fileds,$this-&gt;table,(($this-&gt;where!=false) ? &quot; WHERE &quot;.$this-&gt;where : ''),$this-&gt;pagesize*($this-&gt;page-1),$this-&gt;pagesize);</li>
<li>		 #echo $sql;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; $list = $this-&gt;db-&gt;fetchAll( $sql );</li>
<li>		 return $list;</li>
<li>	 }</li>
<li>&nbsp;</li>
<li>	 #获得分页列表</li>
<li>	 function __getpagelist()</li>
<li>	 {</li>
<li>		 $this-&gt;result['count'] = $this-&gt;count;</li>
<li>		 $this-&gt;result['page'] = $this-&gt;page;</li>
<li>		 $this-&gt;result['pagesize'] = $this-&gt;pagesize;</li>
<li>		 $this-&gt;result['pagecount'] = ceil($this-&gt;count/$this-&gt;pagesize);</li>
<li>		 if($this-&gt;result['pagecount']&lt; =1) //只有一页以下</li>
<li>		 {</li>
<li>			 $this-&gt;result['pagelist'] = 0;</li>
<li>		 }</li>
<li>		 else //一页以上</li>
<li>		 {</li>
<li>			 #前一页，第一页的算法</li>
<li>			 $this-&gt;result['first'] = ($this-&gt;page == 1) ? 0 : 1;</li>
<li>			 $this-&gt;result['pre'] = ($this-&gt;page == 1) ? 0 : 1;</li>
<li>			 #后一页，最后一页的算法</li>
<li>			 $this-&gt;result['next'] = ($this-&gt;page == $this-&gt;result['pagecount'] ) ? 0 : 1;</li>
<li>			 $this-&gt;result['last'] = ($this-&gt;page == $this-&gt;result['pagecount'] ) ? 0 : 1;</li>
<li>&nbsp;</li>
<li>			 #起始</li>
<li>			 $pagearray = array();</li>
<li>			 $start = floor(($this-&gt;page-1)/10)*10+1;</li>
<li>			 for($i=0;$i&amp;lt;10;$i++)</li>
<li>			 {</li>
<li>			&nbsp; &nbsp; &nbsp;if( ($start+$i) &lt; = $this-&gt;result['pagecount'])</li>
<li>				 {</li>
<li>				&nbsp; &nbsp; &nbsp;$pagearray[$i]['page'] = $start+$i; </li>
<li>				 }</li>
<li>				 if( ($start+$i) != $this-&gt;page )</li>
<li>				 {</li>
<li>				&nbsp; &nbsp; &nbsp;$pagearray[$i]['link'] = 1; </li>
<li>				 }</li>
<li>			 }</li>
<li>			 #分页导航列表</li>
<li>			 $this-&gt;result['pagelist'] = $pagearray;</li>
<li>			 $this-&gt;result['baseurl'] = $this-&gt;baseurl;</li>
<li>		 }</li>
<li>		 return $this-&gt;result;</li>
<li>	 }</li>
<li>}</li>
<li>?&gt;</li></ol></div>
<p>模板部分</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">&lt;div id=&quot;page&quot;&gt;</li>
<li>&lt;table&gt;</li>
<li>&nbsp;&nbsp; &nbsp;&lt;tr&gt;</li>
<li>	&nbsp; &nbsp; &lt;td&gt;</li>
<li>		共{{$page.count}}条数据 每页{{$page.pagesize}}条&nbsp; 共{{$page.pagecount}}页 当前第{{$page.page}}页</li>
<li>		&lt;/td&gt;</li>
<li>		&lt;td&gt;</li>
<li>		{{if $page.pagecount&gt;1}}</li>
<li>		{{if $page.first eq 1}}</li>
<li>		&lt;a href=&quot;{{$page.baseurl}}&quot;&gt;首页&lt;/a&gt;</li>
<li>		{{else}}</li>
<li>		首页</li>
<li>		{{/if}}</li>
<li>		{{if $page.pre eq 1}}</li>
<li>		&lt;a href=&quot;{{$page.baseurl}}&amp;page={{$page.page-1}}&quot;&gt;上一页&lt;/a&gt;</li>
<li>		{{else}}</li>
<li>		上一页</li>
<li>		{{/if}}</li>
<li>		{{foreach from=$page.pagelist item=vols}}</li>
<li>		&nbsp; &nbsp; {{if ($vols.page &gt; 0 ) &amp;&amp; ($vols.page &lt; = $page.pagecount) }}</li>
<li>				{{if $vols.link eq 1}}</li>
<li>				&lt;a href=&quot;{{$page.baseurl}}&amp;page={{$vols.page}}&quot;&gt;[{{$vols.page}}]</li>
<li>				{{else}}</li>
<li>				[{{$vols.page}}]</li>
<li>				{{/if}}</li>
<li>			{{/if}}</li>
<li>		{{/foreach}}</li>
<li>		{{if $page.next eq 1}}</li>
<li>		&lt;a href=&quot;{{$page.baseurl|default:&quot;?&quot;}}&amp;page={{$page.page+1}}&quot;&gt;下一页&lt;/a&gt;</li>
<li>		{{else}}</li>
<li>		下一页</li>
<li>		{{/if}}</li>
<li>		{{if $page.last eq 1}}</li>
<li>		&lt;a href=&quot;{{$page.baseurl|default:&quot;?&quot;}}&amp;page={{$page.pagecount}}&quot;&gt;尾页&lt;/a&gt;</li>
<li>		{{else}}</li>
<li>		尾页</li>
<li>		{{/if}}</li>
<li>		{{/if}}</li>
<li>		&lt;/td&gt;</li>
<li>	&lt;/tr&gt;</li>
<li>&lt;/table&gt;</li>
<li>&lt;/div&gt;</li></ol></div>
<p>补充一个demo</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">#PHP部分</li>
<li>$page = new Page( $page , $this-&gt;area_table , $fields = '*' , $where);</li>
<li>$result['rs'] = $page-&gt;__getlist();</li>
<li>$result['page'] = $page-&gt;__getpagelist();</li>
<li>$smarty-&gt;assign(&quot;list&quot;,$result['rs']);</li>
<li>$smarty-&gt;assign(&quot;page&quot;,$result['page']);</li>
<li>$smarty-&gt;display('list.tpl');</li>
<li>#模板里边只要引用这个分页模板即可</li>
<li>{{include file=$smarty.const.Tpl|cat:&quot;/Page.tpl&quot;}}</li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/05/08/smarty%e5%88%86%e9%a1%b5%e7%b1%bb%e4%bf%ae%e6%ad%a3%e7%89%88.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>我的框架依然有人记得</title>
		<link>http://www.sunboyu.cn/2009/05/05/%e6%88%91%e7%9a%84%e6%a1%86%e6%9e%b6%e4%be%9d%e7%84%b6%e6%9c%89%e4%ba%ba%e8%ae%b0%e5%be%97.shtml</link>
		<comments>http://www.sunboyu.cn/2009/05/05/%e6%88%91%e7%9a%84%e6%a1%86%e6%9e%b6%e4%be%9d%e7%84%b6%e6%9c%89%e4%ba%ba%e8%ae%b0%e5%be%97.shtml#comments</comments>
		<pubDate>Tue, 05 May 2009 11:59:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[框架]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=687</guid>
		<description><![CDATA[去年尝试开发了一个框架，开发了一半。或者说第一阶段开发完成。
为了开发这个框架，阅读了大量框架代码，框架思想，然后精心去调试了自己的框架。
在框架完成后，我并没有去使用。
框架的初衷是为了性能跟开发规范，而我在这个框架下兼职无法写代码，无法发挥。自从学写PHP，我从来没受什么规矩约束过，向来是自由度很高。而规则则是多年编程留下的一些经验。后来发现我的风格实在无法用框架来约束，所以放弃使用这个框架，依然按照自己的风格进行开发。
但反思，为什么有很多的框架在项目中应用－那就是规范。不成规矩，不成方圆。尤其在团队合作开发过程中，团队利益就高于个体利益。如果每个人能损失一点个人利益，那团队就可能拥有至高的利益。
因此，我又尝试开发了一套闭源自用的框架。其既集成了框架的一些模块化，规范化的理念，又适合程序员在小范围内自由发挥。后来我又加上了一些管理功能，通用模块系统，现在我可以在这个上边快速开发，又可以很轻松得把模块拆离重组。
内心我并没有把他当作框架，叫做程序“模子”会更好，感谢lamp群友给这么个名字。
]]></description>
			<content:encoded><![CDATA[<p>去年尝试开发了一个框架，开发了一半。或者说第一阶段开发完成。</p>
<p>为了开发这个框架，阅读了大量框架代码，框架思想，然后精心去调试了自己的框架。</p>
<p>在框架完成后，我并没有去使用。</p>
<p>框架的初衷是为了性能跟开发规范，而我在这个框架下兼职无法写代码，无法发挥。自从学写PHP，我从来没受什么规矩约束过，向来是自由度很高。而规则则是多年编程留下的一些经验。后来发现我的风格实在无法用框架来约束，所以放弃使用这个框架，依然按照自己的风格进行开发。</p>
<p>但反思，为什么有很多的框架在项目中应用－那就是规范。不成规矩，不成方圆。尤其在团队合作开发过程中，团队利益就高于个体利益。如果每个人能损失一点个人利益，那团队就可能拥有至高的利益。</p>
<p>因此，我又尝试开发了一套闭源自用的框架。其既集成了框架的一些模块化，规范化的理念，又适合程序员在小范围内自由发挥。后来我又加上了一些管理功能，通用模块系统，现在我可以在这个上边快速开发，又可以很轻松得把模块拆离重组。</p>
<p>内心我并没有把他当作框架，叫做程序“模子”会更好，感谢lamp群友给这么个名字。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/05/05/%e6%88%91%e7%9a%84%e6%a1%86%e6%9e%b6%e4%be%9d%e7%84%b6%e6%9c%89%e4%ba%ba%e8%ae%b0%e5%be%97.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>蓝芒主机管理系统简析</title>
		<link>http://www.sunboyu.cn/2009/05/02/%e8%93%9d%e8%8a%92%e4%b8%bb%e6%9c%ba%e7%ae%a1%e7%90%86%e7%b3%bb%e7%bb%9f%e7%ae%80%e6%9e%90.shtml</link>
		<comments>http://www.sunboyu.cn/2009/05/02/%e8%93%9d%e8%8a%92%e4%b8%bb%e6%9c%ba%e7%ae%a1%e7%90%86%e7%b3%bb%e7%bb%9f%e7%ae%80%e6%9e%90.shtml#comments</comments>
		<pubDate>Sat, 02 May 2009 12:24:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[其他]]></category>

		<category><![CDATA[蓝芒]]></category>

		<category><![CDATA[虚拟主机管理]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=684</guid>
		<description><![CDATA[最近问了下蓝芒的销售，一套全功能的主机管理系统网络版是5000来块，而且现在可以打8折，也就是4000。
蓝芒的软件可以说是国内拔尖的，论技术，可能仅次于创值立信。这个价格多少对我写自己的主机管理系统有点打击。如果只是为了完善我的主机业务，买一套软件比我写可划算的多，而且他们有现成的售后队伍。
不过我还是网上google了一套破解的系统先看看。
昨天的帖子也说了，我弄了PHP DeZend系统去反解他们代码，很顺利，整套代码跃然呈现出来，最新版。5.0，程序注释都是5.1，估计是最新版。
能反解的，只是他的主控端，集成了业务系统。而被控端是一个windows的被控程序，没有反解，因为我没那个能耐。
下边是我阅读代码后分析的其软件架构：

主控端可以看出集成了业务平台，管理平台，代理平台等应用，而被控端可以是windows或者linux等操作系统。
主控端无需考虑操作系统，只需要销售产品，而被控端根据主控端传来的参数执行指令，生成产品。
这里蓝芒设计比较巧妙的，就是对windows和linux的一些相似业务做了规整，作出了通用的控制接口，可无缝去对接w或l的操作系统。
经过考虑，我决定还是购买一套蓝芒的系统，不过，我自己的系统依然准备进行开源开发，重新整合。
]]></description>
			<content:encoded><![CDATA[<p>最近问了下蓝芒的销售，一套全功能的主机管理系统网络版是5000来块，而且现在可以打8折，也就是4000。</p>
<p>蓝芒的软件可以说是国内拔尖的，论技术，可能仅次于创值立信。这个价格多少对我写自己的主机管理系统有点打击。如果只是为了完善我的主机业务，买一套软件比我写可划算的多，而且他们有现成的售后队伍。</p>
<p>不过我还是网上google了一套破解的系统先看看。</p>
<p>昨天的帖子也说了，我弄了PHP DeZend系统去反解他们代码，很顺利，整套代码跃然呈现出来，最新版。5.0，程序注释都是5.1，估计是最新版。</p>
<p>能反解的，只是他的主控端，集成了业务系统。而被控端是一个windows的被控程序，没有反解，因为我没那个能耐。</p>
<p>下边是我阅读代码后分析的其软件架构：</p>
<p><a href="http://www.sunboyu.cn/upfiles/2009/05/e8939de88a92.jpg"><img class="aligncenter size-full wp-image-685" title="e8939de88a92" src="http://www.sunboyu.cn/upfiles/2009/05/e8939de88a92.jpg" alt="e8939de88a92" width="800" height="486" /></a></p>
<p>主控端可以看出集成了业务平台，管理平台，代理平台等应用，而被控端可以是windows或者linux等操作系统。</p>
<p>主控端无需考虑操作系统，只需要销售产品，而被控端根据主控端传来的参数执行指令，生成产品。</p>
<p>这里蓝芒设计比较巧妙的，就是对windows和linux的一些相似业务做了规整，作出了通用的控制接口，可无缝去对接w或l的操作系统。</p>
<p>经过考虑，我决定还是购买一套蓝芒的系统，不过，我自己的系统依然准备进行开源开发，重新整合。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/05/02/%e8%93%9d%e8%8a%92%e4%b8%bb%e6%9c%ba%e7%ae%a1%e7%90%86%e7%b3%bb%e7%bb%9f%e7%ae%80%e6%9e%90.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>PHP DeZend真的很爽</title>
		<link>http://www.sunboyu.cn/2009/05/02/php-dezend%e7%9c%9f%e7%9a%84%e5%be%88%e7%88%bd.shtml</link>
		<comments>http://www.sunboyu.cn/2009/05/02/php-dezend%e7%9c%9f%e7%9a%84%e5%be%88%e7%88%bd.shtml#comments</comments>
		<pubDate>Fri, 01 May 2009 16:19:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[dezend]]></category>

		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=681</guid>
		<description><![CDATA[突然在网上发现一套我渴望已久的IDC管理软件，下载下来，除用vb之类的加密外，其源代码是用zend加密过的PHP代码。大喜，网上找到这个工具，然后迅速反接后，看到所有源代码。开始研究。
PHP DeZend
]]></description>
			<content:encoded><![CDATA[<p>突然在网上发现一套我渴望已久的IDC管理软件，下载下来，除用vb之类的加密外，其源代码是用zend加密过的PHP代码。大喜，网上找到这个工具，然后迅速反接后，看到所有源代码。开始研究。</p>
<p><a href='http://www.sunboyu.cn/upfiles/2009/05/phpe7a0b4e8a7a3dezender5.rar'>PHP DeZend</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/05/02/php-dezend%e7%9c%9f%e7%9a%84%e5%be%88%e7%88%bd.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>SVN两个小命令</title>
		<link>http://www.sunboyu.cn/2009/04/30/svn%e4%b8%a4%e4%b8%aa%e5%b0%8f%e5%91%bd%e4%bb%a4.shtml</link>
		<comments>http://www.sunboyu.cn/2009/04/30/svn%e4%b8%a4%e4%b8%aa%e5%b0%8f%e5%91%bd%e4%bb%a4.shtml#comments</comments>
		<pubDate>Wed, 29 Apr 2009 17:04:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[svn]]></category>

		<category><![CDATA[创建]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=678</guid>
		<description><![CDATA[./svnadmin create /home/sunboyu/svndata/bj1998
./svnserve -d &#8211;listen-port 端口号 -r /home/sunboyu/svndata/
 /var/opt/subversion-1.4.3/bin/svn checkout  svn://localhost:20002/tools ./ &#8211;username sun &#8211;password sun
]]></description>
			<content:encoded><![CDATA[<p>./svnadmin create /home/sunboyu/svndata/bj1998</p>
<p>./svnserve -d &#8211;listen-port 端口号 -r /home/sunboyu/svndata/</p>
<p> /var/opt/subversion-1.4.3/bin/svn checkout  svn://localhost:20002/tools ./ &#8211;username sun &#8211;password sun</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/04/30/svn%e4%b8%a4%e4%b8%aa%e5%b0%8f%e5%91%bd%e4%bb%a4.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>市场驱动产品与产品驱动销售</title>
		<link>http://www.sunboyu.cn/2009/04/29/%e5%b8%82%e5%9c%ba%e9%a9%b1%e5%8a%a8%e4%ba%a7%e5%93%81%e4%b8%8e%e4%ba%a7%e5%93%81%e9%a9%b1%e5%8a%a8%e9%94%80%e5%94%ae.shtml</link>
		<comments>http://www.sunboyu.cn/2009/04/29/%e5%b8%82%e5%9c%ba%e9%a9%b1%e5%8a%a8%e4%ba%a7%e5%93%81%e4%b8%8e%e4%ba%a7%e5%93%81%e9%a9%b1%e5%8a%a8%e9%94%80%e5%94%ae.shtml#comments</comments>
		<pubDate>Tue, 28 Apr 2009 20:59:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[感悟]]></category>

		<category><![CDATA[市场]]></category>

		<category><![CDATA[销售]]></category>

		<category><![CDATA[驱动]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=673</guid>
		<description><![CDATA[貌似两个紧密相连的概念，可在做事上，是迥然不同的两种表现。
销售出身的人，总能把破烂给折腾出去，他们不在乎技术有多好，产品有多烂，反正他们的任务就是把客户拉来，让钱爬在自己的账户上。
这样苦不堪言的是那些苦命攒代码的人，不得不迎合销售千变万化的销售策略和肆意夸大而进行的承诺。
当然对于技术出身的销售来说，在面对客户相对谨慎，在对产品的把握上显得拘谨，但这样做下来的方案变故会比纯销售做事稳当得多。
对于一个公司，无论是谁来驱动谁，总得有一个原始动力，原始动力丢失的时候，公司就会陷入浑沌状态。
这个动力一般是市场来驱动，对于创业者，更多的动力是那股原始的冲劲。
最近看了一本书，大概悟出这些道理。通过最近做产品，发现自己弱点很明显，还不能从大局去考虑事情，看技术之外的事情肤浅。
从今天作为一个起点，努力客服。
]]></description>
			<content:encoded><![CDATA[<p>貌似两个紧密相连的概念，可在做事上，是迥然不同的两种表现。</p>
<p>销售出身的人，总能把破烂给折腾出去，他们不在乎技术有多好，产品有多烂，反正他们的任务就是把客户拉来，让钱爬在自己的账户上。</p>
<p>这样苦不堪言的是那些苦命攒代码的人，不得不迎合销售千变万化的销售策略和肆意夸大而进行的承诺。</p>
<p>当然对于技术出身的销售来说，在面对客户相对谨慎，在对产品的把握上显得拘谨，但这样做下来的方案变故会比纯销售做事稳当得多。</p>
<p>对于一个公司，无论是谁来驱动谁，总得有一个原始动力，原始动力丢失的时候，公司就会陷入浑沌状态。</p>
<p>这个动力一般是市场来驱动，对于创业者，更多的动力是那股原始的冲劲。</p>
<p>最近看了一本书，大概悟出这些道理。通过最近做产品，发现自己弱点很明显，还不能从大局去考虑事情，看技术之外的事情肤浅。</p>
<p>从今天作为一个起点，努力客服。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/04/29/%e5%b8%82%e5%9c%ba%e9%a9%b1%e5%8a%a8%e4%ba%a7%e5%93%81%e4%b8%8e%e4%ba%a7%e5%93%81%e9%a9%b1%e5%8a%a8%e9%94%80%e5%94%ae.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>产品需要灵魂</title>
		<link>http://www.sunboyu.cn/2009/04/28/%e4%ba%a7%e5%93%81%e9%9c%80%e8%a6%81%e7%81%b5%e9%ad%82.shtml</link>
		<comments>http://www.sunboyu.cn/2009/04/28/%e4%ba%a7%e5%93%81%e9%9c%80%e8%a6%81%e7%81%b5%e9%ad%82.shtml#comments</comments>
		<pubDate>Mon, 27 Apr 2009 21:52:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[感悟]]></category>

		<category><![CDATA[产品]]></category>

		<category><![CDATA[灵魂]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=671</guid>
		<description><![CDATA[http://www.sunboyu.cn/2008/11/10/%E7%BD%91%E7%AB%99%E7%9A%84%E7%94%9F%E5%91%BD%E4%B8%8E%E7%81%B5%E9%AD%82.shtml
这是我去年写的一个日志。网站，需要灵魂。
岂止是网站，任何一款产品，都需要他的灵魂。
今天的产品设计方案被上边否定了，仔细琢磨，原来我在做产品，虽然是一个技术可行的产品，但没有灵魂。没有人会对一具僵尸有感情，没有用户会对一个没有灵魂的产品感兴趣。
下午匆匆给产品附加了灵魂，勉强被通过。
底下还要继续给产品人性化，这个项目我吃定了。
]]></description>
			<content:encoded><![CDATA[<p>http://www.sunboyu.cn/2008/11/10/%E7%BD%91%E7%AB%99%E7%9A%84%E7%94%9F%E5%91%BD%E4%B8%8E%E7%81%B5%E9%AD%82.shtml</p>
<p>这是我去年写的一个日志。网站，需要灵魂。</p>
<p>岂止是网站，任何一款产品，都需要他的灵魂。</p>
<p>今天的产品设计方案被上边否定了，仔细琢磨，原来我在做产品，虽然是一个技术可行的产品，但没有灵魂。没有人会对一具僵尸有感情，没有用户会对一个没有灵魂的产品感兴趣。</p>
<p>下午匆匆给产品附加了灵魂，勉强被通过。</p>
<p>底下还要继续给产品人性化，这个项目我吃定了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/04/28/%e4%ba%a7%e5%93%81%e9%9c%80%e8%a6%81%e7%81%b5%e9%ad%82.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>Python写的数据库备份程序</title>
		<link>http://www.sunboyu.cn/2009/04/22/python%e5%86%99%e7%9a%84%e6%95%b0%e6%8d%ae%e5%ba%93%e5%a4%87%e4%bb%bd%e7%a8%8b%e5%ba%8f.shtml</link>
		<comments>http://www.sunboyu.cn/2009/04/22/python%e5%86%99%e7%9a%84%e6%95%b0%e6%8d%ae%e5%ba%93%e5%a4%87%e4%bb%bd%e7%a8%8b%e5%ba%8f.shtml#comments</comments>
		<pubDate>Tue, 21 Apr 2009 17:55:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[MYSQL]]></category>

		<category><![CDATA[Python]]></category>

		<category><![CDATA[mysqldump]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=664</guid>
		<description><![CDATA[下载地址:mysqlbak
#!/var/opt/python-2.5/bin/python
import os
import time
import MySQLdb
&#160;
&#160;
CFG = {}
CFG['root'] = {}
CFG['root']['hostname'] = 'localhost'
CFG['root']['username'] = 'root'
CFG['root']['password'] = 'test'
&#160;
&#160;
CFG['mysqldump'] = '/opt/mysql-5.0.22/bin/mysqldump'
&#160;
CFG['time'] = time.strftime(&#34;%Y-%m-%d&#34;, time.localtime(time.time()) ) 
&#160;
CFG['bakpath'] = '/tmp/' + CFG['time']
CFG['mainbak'] = '/home/sunboyu/databak/' + CFG['time']
&#160;
&#160;
if os.path.exists( CFG['bakpath'] ) == False:
&#160;&#160; &#160;os.mkdir( CFG['bakpath'] )
if os.path.exists( CFG['mainbak'] ) == False:
&#160;&#160; &#160;os.mkdir( CFG['mainbak'] )
&#160;
def mysql_database_bak( database ):
&#160;&#160; &#160;global CFG
&#160;&#160; &#160;DIR = CFG['bakpath'] + &#34;/&#34; [...]]]></description>
			<content:encoded><![CDATA[<p>下载地址:<a href='http://www.sunboyu.cn/upfiles/2009/04/mysqlbak.rar'>mysqlbak</a></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">#!/var/opt/python-2.5/bin/python</li>
<li>import os</li>
<li>import time</li>
<li>import MySQLdb</li>
<li>&nbsp;</li>
<li>&nbsp;</li>
<li>CFG = {}</li>
<li>CFG['root'] = {}</li>
<li>CFG['root']['hostname'] = 'localhost'</li>
<li>CFG['root']['username'] = 'root'</li>
<li>CFG['root']['password'] = 'test'</li>
<li>&nbsp;</li>
<li>&nbsp;</li>
<li>CFG['mysqldump'] = '/opt/mysql-5.0.22/bin/mysqldump'</li>
<li>&nbsp;</li>
<li>CFG['time'] = time.strftime(&quot;%Y-%m-%d&quot;, time.localtime(time.time()) ) </li>
<li>&nbsp;</li>
<li>CFG['bakpath'] = '/tmp/' + CFG['time']</li>
<li>CFG['mainbak'] = '/home/sunboyu/databak/' + CFG['time']</li>
<li>&nbsp;</li>
<li>&nbsp;</li>
<li>if os.path.exists( CFG['bakpath'] ) == False:</li>
<li>&nbsp;&nbsp; &nbsp;os.mkdir( CFG['bakpath'] )</li>
<li>if os.path.exists( CFG['mainbak'] ) == False:</li>
<li>&nbsp;&nbsp; &nbsp;os.mkdir( CFG['mainbak'] )</li>
<li>&nbsp;</li>
<li>def mysql_database_bak( database ):</li>
<li>&nbsp;&nbsp; &nbsp;global CFG</li>
<li>&nbsp;&nbsp; &nbsp;DIR = CFG['bakpath'] + &quot;/&quot; + database</li>
<li>&nbsp;&nbsp; &nbsp;if os.path.exists( DIR )==False:</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;os.mkdir( DIR )</li>
<li>&nbsp;&nbsp; &nbsp;conn = MySQLdb.connect( host = CFG['root']['hostname'] , user = CFG['root']['username'] , passwd = CFG['root']['password'] , db = database )</li>
<li>&nbsp;&nbsp; &nbsp;db = conn.cursor()</li>
<li>&nbsp;&nbsp; &nbsp;sql = &quot;show tables&quot;;</li>
<li>&nbsp;&nbsp; &nbsp;db.execute( sql )</li>
<li>&nbsp;&nbsp; &nbsp;result = {}</li>
<li>&nbsp;&nbsp; &nbsp;for recordline in db.fetchall():</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;os.system( CFG['mysqldump'] + &quot; --opt&nbsp; &quot; + database + &quot; &quot; + recordline[0] + &quot; -u&quot; + CFG['root']['username'] + &quot; -p&quot; + CFG['root']['password'] + &quot; &gt; &quot; + DIR + &quot;/&quot; + database + &quot;_&quot; + recordline[0] + &quot;.sql&quot; )</li>
<li>&nbsp;&nbsp; &nbsp;os.system( &quot;tar cvf &quot; + CFG['bakpath'] + &quot;/&quot; + database + &quot;.tar.gz &quot; +&nbsp; CFG['bakpath'] + &quot;/&quot; + database )</li>
<li>&nbsp;&nbsp; &nbsp;os.system( &quot;mv &quot; + CFG['bakpath'] + &quot;/&quot; + database + &quot;.tar.gz &quot; + CFG['mainbak'] + '/' )</li>
<li>&nbsp;</li>
<li>&nbsp;</li>
<li>conn = MySQLdb.connect( host = CFG['root']['hostname'] , user = CFG['root']['username'] , passwd = CFG['root']['password'] , db = 'test' )</li>
<li>sql = &quot;show databases&quot;;</li>
<li>db = conn.cursor()</li>
<li>db.execute( sql )</li>
<li>result = {}</li>
<li>bigcount = 0</li>
<li>for recordline in db.fetchall():</li>
<li>	littlecount = 0</li>
<li>	result[bigcount] = {}</li>
<li>	for colnum in db.description:</li>
<li>	&nbsp; &nbsp; result[bigcount][colnum[0]] = recordline[littlecount]</li>
<li>	&nbsp; &nbsp; littlecount += 1</li>
<li>	bigcount += 1</li>
<li>&nbsp;</li>
<li>&nbsp;</li>
<li>for tables in result:</li>
<li>&nbsp;&nbsp; &nbsp;mysql_database_bak( result[tables]['Database'] )</li>
<li>&nbsp;</li>
<li>os.system( &quot;rm -rf /tmp/&quot; + CFG['time'] )&nbsp; #警告 rm -rf 这个命令相当危险，使用一定要谨慎</li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/04/22/python%e5%86%99%e7%9a%84%e6%95%b0%e6%8d%ae%e5%ba%93%e5%a4%87%e4%bb%bd%e7%a8%8b%e5%ba%8f.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>python2.5+MySQLdb1.2.2安装</title>
		<link>http://www.sunboyu.cn/2009/04/22/python25mysqldb122%e5%ae%89%e8%a3%85.shtml</link>
		<comments>http://www.sunboyu.cn/2009/04/22/python25mysqldb122%e5%ae%89%e8%a3%85.shtml#comments</comments>
		<pubDate>Tue, 21 Apr 2009 16:04:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[Python]]></category>

		<category><![CDATA[MySQLdb]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=662</guid>
		<description><![CDATA[最近比较喜欢用python写一些shell，又因为要跟mysql交互，所以安装python2.5＋MySQLdb1.2.2。
选择python而没有选择perl，c之类，是因为python语法相对简单，适合我。其实php也可以，但linux默认安装python并大量使用，而并不默认安装PHP。
在安装过程中遇到很多问题，暂不罗列，google是半万能的，多尝试。
使用这两个版本，是因为在编译过程中的问题，逼我仔细阅读了产品稳当，发现版本依赖性很强，最终选择的这两个。
python编译很简单 ./configure &#8211;prefix=/*****  就OK了。
MySQLdb的安装也很简单,但首先要修改site.cfg的参数，其中threadsafe和mysql_config的值要根据情况修改。
python setup.py build
（如果必要，中间运行这个  ln -s /opt/mysql-5.0.22/lib/libmysqlclient.a ./build/lib.linux-x86_64-2.4/_mysql.so 路径自己调整）
python setup.py install
]]></description>
			<content:encoded><![CDATA[<p>最近比较喜欢用python写一些shell，又因为要跟mysql交互，所以安装python2.5＋MySQLdb1.2.2。</p>
<p>选择python而没有选择perl，c之类，是因为python语法相对简单，适合我。其实php也可以，但linux默认安装python并大量使用，而并不默认安装PHP。</p>
<p>在安装过程中遇到很多问题，暂不罗列，google是半万能的，多尝试。</p>
<p>使用这两个版本，是因为在编译过程中的问题，逼我仔细阅读了产品稳当，发现版本依赖性很强，最终选择的这两个。</p>
<p>python编译很简单 ./configure &#8211;prefix=/*****  就OK了。</p>
<p>MySQLdb的安装也很简单,但首先要修改site.cfg的参数，其中threadsafe和mysql_config的值要根据情况修改。</p>
<p>python setup.py build<br />
（如果必要，中间运行这个  ln -s /opt/mysql-5.0.22/lib/libmysqlclient.a ./build/lib.linux-x86_64-2.4/_mysql.so 路径自己调整）<br />
python setup.py install</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/04/22/python25mysqldb122%e5%ae%89%e8%a3%85.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>三维仿真技术的发展和应用</title>
		<link>http://www.sunboyu.cn/2009/04/21/%e4%b8%89%e7%bb%b4%e4%bb%bf%e7%9c%9f%e6%8a%80%e6%9c%af%e7%9a%84%e5%8f%91%e5%b1%95%e5%92%8c%e5%ba%94%e7%94%a8.shtml</link>
		<comments>http://www.sunboyu.cn/2009/04/21/%e4%b8%89%e7%bb%b4%e4%bb%bf%e7%9c%9f%e6%8a%80%e6%9c%af%e7%9a%84%e5%8f%91%e5%b1%95%e5%92%8c%e5%ba%94%e7%94%a8.shtml#comments</comments>
		<pubDate>Mon, 20 Apr 2009 21:41:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[感悟]]></category>

		<category><![CDATA[三维]]></category>

		<category><![CDATA[仿真]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=660</guid>
		<description><![CDATA[每天下班，我都能骑上自行车顺利回家，但那拥堵的道路却让我不堪忍受。于是，放下自行车，从车库里开出我那辆三菱跑车，飞奔在高速公路上。
我开到220KM/Hour，路上遇到一个山西的好友，打招呼之间，撞上了一辆的士。我的车翻滚了两圈，我居然又稳稳得跑了起来，而人毫发无损。
警车追来，可惜他的车远不如我，结果被我甩下。半个小时后，我又回到了家。
当然，这也许是做梦，但却不是梦。我在玩《极品飞车》游戏，计算机仿真的技术让我在忙碌一天后彻底放松。
仿真的汽车，高现实的场景模拟，给人心理无限愉悦，而这一些，仅需要一根网线和一台电脑。
尖端技术一般都用在军事，仿真模拟技术也一样，从最早的军用模拟，到高科技实验室，再到现在的大众消费，仅仅几十年。在大众消费领域，仿真技术广泛应用在娱乐休闲领域，如电脑游戏，各种游艺机设备。
平面模拟的效果终究是差的，于是出现立体模拟。
我见过最早的立体模拟设备也许就是街边的游艺厅了，两个牌就可以开一圈的赛车，还可以拿上强去剿匪。现在各种外设逐渐走向人们家庭。
罗技方向盘＋3D视频眼睛，能给你视觉，触觉上的高度仿真（当然没有那种摇晃的力学作用）。而一些实验室，已经开发出高度模拟特定环境的系统，如神洲飞船的模拟训练仓，海员训练的模拟水仓。
尖端技术向民用发展，不会是很长的，而在电脑技术和网络如此发达的今天，这些技术的整合，将给人们的生活带来惊人的变化。
也许游戏里发生那些，明天就走向了真实。
是期待，还是恐惧？
]]></description>
			<content:encoded><![CDATA[<p>每天下班，我都能骑上自行车顺利回家，但那拥堵的道路却让我不堪忍受。于是，放下自行车，从车库里开出我那辆三菱跑车，飞奔在高速公路上。</p>
<p>我开到220KM/Hour，路上遇到一个山西的好友，打招呼之间，撞上了一辆的士。我的车翻滚了两圈，我居然又稳稳得跑了起来，而人毫发无损。</p>
<p>警车追来，可惜他的车远不如我，结果被我甩下。半个小时后，我又回到了家。</p>
<p>当然，这也许是做梦，但却不是梦。我在玩《极品飞车》游戏，计算机仿真的技术让我在忙碌一天后彻底放松。</p>
<p>仿真的汽车，高现实的场景模拟，给人心理无限愉悦，而这一些，仅需要一根网线和一台电脑。</p>
<p>尖端技术一般都用在军事，仿真模拟技术也一样，从最早的军用模拟，到高科技实验室，再到现在的大众消费，仅仅几十年。在大众消费领域，仿真技术广泛应用在娱乐休闲领域，如电脑游戏，各种游艺机设备。</p>
<p>平面模拟的效果终究是差的，于是出现立体模拟。</p>
<p>我见过最早的立体模拟设备也许就是街边的游艺厅了，两个牌就可以开一圈的赛车，还可以拿上强去剿匪。现在各种外设逐渐走向人们家庭。</p>
<p>罗技方向盘＋3D视频眼睛，能给你视觉，触觉上的高度仿真（当然没有那种摇晃的力学作用）。而一些实验室，已经开发出高度模拟特定环境的系统，如神洲飞船的模拟训练仓，海员训练的模拟水仓。</p>
<p>尖端技术向民用发展，不会是很长的，而在电脑技术和网络如此发达的今天，这些技术的整合，将给人们的生活带来惊人的变化。</p>
<p>也许游戏里发生那些，明天就走向了真实。</p>
<p>是期待，还是恐惧？</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/04/21/%e4%b8%89%e7%bb%b4%e4%bb%bf%e7%9c%9f%e6%8a%80%e6%9c%af%e7%9a%84%e5%8f%91%e5%b1%95%e5%92%8c%e5%ba%94%e7%94%a8.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>iftop来查看linux的即时流量</title>
		<link>http://www.sunboyu.cn/2009/04/18/iftop%e6%9d%a5%e6%9f%a5%e7%9c%8blinux%e7%9a%84%e5%8d%b3%e6%97%b6%e6%b5%81%e9%87%8f.shtml</link>
		<comments>http://www.sunboyu.cn/2009/04/18/iftop%e6%9d%a5%e6%9f%a5%e7%9c%8blinux%e7%9a%84%e5%8d%b3%e6%97%b6%e6%b5%81%e9%87%8f.shtml#comments</comments>
		<pubDate>Sat, 18 Apr 2009 00:59:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[iftop]]></category>

		<category><![CDATA[流量]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=658</guid>
		<description><![CDATA[http://ex-parrot.com/~pdw/iftop/download/?D=A
我也就纳闷，直接make &#038;&#038; make install就好了。
如此简单的东西，iftop就可以查看了。
yum install *pcap*
]]></description>
			<content:encoded><![CDATA[<p>http://ex-parrot.com/~pdw/iftop/download/?D=A</p>
<p>我也就纳闷，直接make &#038;&#038; make install就好了。</p>
<p>如此简单的东西，iftop就可以查看了。</p>
<p>yum install *pcap*</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/04/18/iftop%e6%9d%a5%e6%9f%a5%e7%9c%8blinux%e7%9a%84%e5%8d%b3%e6%97%b6%e6%b5%81%e9%87%8f.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>话说备份</title>
		<link>http://www.sunboyu.cn/2009/04/18/%e8%af%9d%e8%af%b4%e5%a4%87%e4%bb%bd.shtml</link>
		<comments>http://www.sunboyu.cn/2009/04/18/%e8%af%9d%e8%af%b4%e5%a4%87%e4%bb%bd.shtml#comments</comments>
		<pubDate>Sat, 18 Apr 2009 00:39:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[灾难备份]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=654</guid>
		<description><![CDATA[最近服务器down了几次，频繁装了几次系统，可谓筋疲力尽，最后一次面对IBM的机器，对柜发誓：机器再down，这辈子不摸服务器。
话是这么说，服务真down了还的去管。
不过管之前，有些臭事还是要做－灾难备份。
首先是什么需要备份：数据库当然要备份，文件当然要备份。貌似所有的企业都在备份这些。
熟悉windows2003的网管都知道，2003提供了方便的配置文件备份，这个貌似是linux所没有的。打上标记。
用户需要备份么，我指linux系统帐号。备份一下吧，如果你有依赖系统账户的程序。
应用软件的配置文件是否要备份？如果你的配置很专业复杂个性，备份一下吧，省得都在黑白屏上VI，我双飞燕的键盘不好使，不想多敲几个字母。
源码的编译参数需要备份么？我有AMP自动安装脚本，很好很强大！
最近的一个小目标：linux灾难备份的脚本。
下一个就是：linux灾难恢复的脚本。
]]></description>
			<content:encoded><![CDATA[<p>最近服务器down了几次，频繁装了几次系统，可谓筋疲力尽，最后一次面对IBM的机器，对柜发誓：机器再down，这辈子不摸服务器。</p>
<p>话是这么说，服务真down了还的去管。</p>
<p>不过管之前，有些臭事还是要做－灾难备份。</p>
<p>首先是什么需要备份：数据库当然要备份，文件当然要备份。貌似所有的企业都在备份这些。</p>
<p>熟悉windows2003的网管都知道，2003提供了方便的配置文件备份，这个貌似是linux所没有的。打上标记。</p>
<p>用户需要备份么，我指linux系统帐号。备份一下吧，如果你有依赖系统账户的程序。</p>
<p>应用软件的配置文件是否要备份？如果你的配置很专业复杂个性，备份一下吧，省得都在黑白屏上VI，我双飞燕的键盘不好使，不想多敲几个字母。</p>
<p>源码的编译参数需要备份么？我有AMP自动安装脚本，很好很强大！</p>
<p>最近的一个小目标：linux灾难备份的脚本。</p>
<p>下一个就是：linux灾难恢复的脚本。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/04/18/%e8%af%9d%e8%af%b4%e5%a4%87%e4%bb%bd.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>博客终于恢复，IBM志强机上线！</title>
		<link>http://www.sunboyu.cn/2009/04/17/%e5%8d%9a%e5%ae%a2%e7%bb%88%e4%ba%8e%e6%81%a2%e5%a4%8d%ef%bc%8cibm%e5%bf%97%e5%bc%ba%e6%9c%ba%e4%b8%8a%e7%ba%bf%ef%bc%81.shtml</link>
		<comments>http://www.sunboyu.cn/2009/04/17/%e5%8d%9a%e5%ae%a2%e7%bb%88%e4%ba%8e%e6%81%a2%e5%a4%8d%ef%bc%8cibm%e5%bf%97%e5%bc%ba%e6%9c%ba%e4%b8%8a%e7%ba%bf%ef%bc%81.shtml#comments</comments>
		<pubDate>Fri, 17 Apr 2009 10:28:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<category><![CDATA[IBM]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=650</guid>
		<description><![CDATA[终于受不了那个兼容机，一周断6天，不知道是硬件问题还是兼容性问题，反正是没法用了。
狠心上了台IBM，虽然机型老点，毕竟是IBM，跑web富富有余。
另外在软件上抛弃apache，更换了nginx，负载更是创新低！
]]></description>
			<content:encoded><![CDATA[<p>终于受不了那个兼容机，一周断6天，不知道是硬件问题还是兼容性问题，反正是没法用了。<br />
狠心上了台IBM，虽然机型老点，毕竟是IBM，跑web富富有余。<br />
另外在软件上抛弃apache，更换了nginx，负载更是创新低！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/04/17/%e5%8d%9a%e5%ae%a2%e7%bb%88%e4%ba%8e%e6%81%a2%e5%a4%8d%ef%bc%8cibm%e5%bf%97%e5%bc%ba%e6%9c%ba%e4%b8%8a%e7%ba%bf%ef%bc%81.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>linux下杀死某用户的所有进程</title>
		<link>http://www.sunboyu.cn/2009/04/08/linux%e4%b8%8b%e6%9d%80%e6%ad%bb%e6%9f%90%e7%94%a8%e6%88%b7%e7%9a%84%e6%89%80%e6%9c%89%e8%bf%9b%e7%a8%8b.shtml</link>
		<comments>http://www.sunboyu.cn/2009/04/08/linux%e4%b8%8b%e6%9d%80%e6%ad%bb%e6%9f%90%e7%94%a8%e6%88%b7%e7%9a%84%e6%89%80%e6%9c%89%e8%bf%9b%e7%a8%8b.shtml#comments</comments>
		<pubDate>Wed, 08 Apr 2009 15:53:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=648</guid>
		<description><![CDATA[kill -9 $(ps -fu  &#124; awk &#8216;{ print $2 }&#8217;)
该死的桶桶，给你开了几百个php-cgi进程，把服务器搞死了！
]]></description>
			<content:encoded><![CDATA[<p>kill -9 $(ps -fu <username> | awk &#8216;{ print $2 }&#8217;)</p>
<p>该死的桶桶，给你开了几百个php-cgi进程，把服务器搞死了！</username></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/04/08/linux%e4%b8%8b%e6%9d%80%e6%ad%bb%e6%9f%90%e7%94%a8%e6%88%b7%e7%9a%84%e6%89%80%e6%9c%89%e8%bf%9b%e7%a8%8b.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>linux内存释放</title>
		<link>http://www.sunboyu.cn/2009/04/07/linux%e5%86%85%e5%ad%98%e9%87%8a%e6%94%be.shtml</link>
		<comments>http://www.sunboyu.cn/2009/04/07/linux%e5%86%85%e5%ad%98%e9%87%8a%e6%94%be.shtml#comments</comments>
		<pubDate>Tue, 07 Apr 2009 14:32:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[linux]]></category>

		<category><![CDATA[内存]]></category>

		<category><![CDATA[释放]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=646</guid>
		<description><![CDATA[echo 1 &#62; /proc/sys/vm/drop_caches; #释放页面缓存 
echo 2 &#62; /proc/sys/vm/drop_caches; #释放dentries和inodes
echo 3 &#62; /proc/sys/vm/drop_caches; #释放1＋2
]]></description>
			<content:encoded><![CDATA[<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">echo 1 &gt; /proc/sys/vm/drop_caches; #释放页面缓存 </li>
<li>echo 2 &gt; /proc/sys/vm/drop_caches; #释放dentries和inodes</li>
<li>echo 3 &gt; /proc/sys/vm/drop_caches; #释放1＋2</li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/04/07/linux%e5%86%85%e5%ad%98%e9%87%8a%e6%94%be.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>wordpress在不同webserver下的重写规则和配置</title>
		<link>http://www.sunboyu.cn/2009/04/07/wordpress%e5%9c%a8%e4%b8%8d%e5%90%8cwebserver%e4%b8%8b%e7%9a%84%e9%87%8d%e5%86%99%e8%a7%84%e5%88%99%e5%92%8c%e9%85%8d%e7%bd%ae.shtml</link>
		<comments>http://www.sunboyu.cn/2009/04/07/wordpress%e5%9c%a8%e4%b8%8d%e5%90%8cwebserver%e4%b8%8b%e7%9a%84%e9%87%8d%e5%86%99%e8%a7%84%e5%88%99%e5%92%8c%e9%85%8d%e7%bd%ae.shtml#comments</comments>
		<pubDate>Tue, 07 Apr 2009 13:22:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[其他]]></category>

		<category><![CDATA[apache]]></category>

		<category><![CDATA[nginx]]></category>

		<category><![CDATA[wordpress]]></category>

		<category><![CDATA[重写]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=644</guid>
		<description><![CDATA[apache下
#.htaccess
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
#httpd.conf
Options ExecCGI FollowSymLinks
AllowOverride All
Order allow,deny
allow from all
nginx下
#nginx.conf
location / {
&#160;&#160; &#160; &#160; &#160;if (!-f $request_filename){
&#160;&#160; &#160; &#160; &#160; &#160; &#160;rewrite (.*) /index.php;
&#160;&#160; &#160; &#160; &#160;}
&#160;&#160; &#160;}
]]></description>
			<content:encoded><![CDATA[<p>apache下</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">#.htaccess</li>
<li>RewriteEngine On</li>
<li>RewriteBase /</li>
<li>RewriteCond %{REQUEST_FILENAME} !-f</li>
<li>RewriteCond %{REQUEST_FILENAME} !-d</li>
<li>RewriteRule . /index.php [L]</li>
<li>#httpd.conf</li>
<li>Options ExecCGI FollowSymLinks</li>
<li>AllowOverride All</li>
<li>Order allow,deny</li>
<li>allow from all</li></ol></div>
<p>nginx下</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">#nginx.conf</li>
<li>location / {</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if (!-f $request_filename){</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;rewrite (.*) /index.php;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</li>
<li>&nbsp;&nbsp; &nbsp;}</li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/04/07/wordpress%e5%9c%a8%e4%b8%8d%e5%90%8cwebserver%e4%b8%8b%e7%9a%84%e9%87%8d%e5%86%99%e8%a7%84%e5%88%99%e5%92%8c%e9%85%8d%e7%bd%ae.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>还是Nginx对抗负载的能力强</title>
		<link>http://www.sunboyu.cn/2009/04/07/%e8%bf%98%e6%98%afnginx%e5%af%b9%e6%8a%97%e8%b4%9f%e8%bd%bd%e7%9a%84%e8%83%bd%e5%8a%9b%e5%bc%ba.shtml</link>
		<comments>http://www.sunboyu.cn/2009/04/07/%e8%bf%98%e6%98%afnginx%e5%af%b9%e6%8a%97%e8%b4%9f%e8%bd%bd%e7%9a%84%e8%83%bd%e5%8a%9b%e5%bc%ba.shtml#comments</comments>
		<pubDate>Tue, 07 Apr 2009 06:45:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[APACHE]]></category>

		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[apache]]></category>

		<category><![CDATA[nginx]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=640</guid>
		<description><![CDATA[编译了老半天的apache，又做了很多调整和优化，依然抗不住死机，其实负载也不是很大，但内存CPU就是出奇的高，无奈，装上nginx，负载一下子下来了。
顺便提一下，我PC级的服务器。
感谢  http://www.51fit.com/ 友情提供测试数据
计划重新部署apache，调整工作模式。
]]></description>
			<content:encoded><![CDATA[<p>编译了老半天的apache，又做了很多调整和优化，依然抗不住死机，其实负载也不是很大，但内存CPU就是出奇的高，无奈，装上nginx，负载一下子下来了。</p>
<p>顺便提一下，我PC级的服务器。</p>
<p>感谢  http://www.51fit.com/ 友情提供测试数据</p>
<p>计划重新部署apache，调整工作模式。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/04/07/%e8%bf%98%e6%98%afnginx%e5%af%b9%e6%8a%97%e8%b4%9f%e8%bd%bd%e7%9a%84%e8%83%bd%e5%8a%9b%e5%bc%ba.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>虚拟化产品市场分析</title>
		<link>http://www.sunboyu.cn/2009/04/04/%e8%99%9a%e6%8b%9f%e5%8c%96%e4%ba%a7%e5%93%81%e5%b8%82%e5%9c%ba%e5%88%86%e6%9e%90.shtml</link>
		<comments>http://www.sunboyu.cn/2009/04/04/%e8%99%9a%e6%8b%9f%e5%8c%96%e4%ba%a7%e5%93%81%e5%b8%82%e5%9c%ba%e5%88%86%e6%9e%90.shtml#comments</comments>
		<pubDate>Sat, 04 Apr 2009 05:13:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[其他]]></category>

		<category><![CDATA[管理软件]]></category>

		<category><![CDATA[虚拟主机]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=626</guid>
		<description><![CDATA[我这里分析的虚拟化产品，主要是和IDC相关的一些虚拟产品。
我们常见的产品，比如虚拟主机（空间），VPS，服务器合租等。这类产品目前在市场上发展比较成熟，而且随着互联网发展，这类产品市场前景逐渐看好。
这点，从万网的发展路线就可以看出，中小企业越来越重视自己信息化的建设，而从百度的销售业绩也能看出，企业的投入逐渐从传统媒体转向了互联网。另外，各大IDC机房内，也有相当的托管机器是用在中小网站上。
而这些产品的基础构建，管理，对于不管是企业还是个人，都是一个问题。对于国内做虚拟主机产品的老大们，万网，新网都有自己的管理系统，而对于一些小型用户，一些开源的管理软件足矣，无非是增加点人力。
目前虚拟主机应用主流平台就是windows，linux，freebsd，windows系统首先有自己完善的管理机制和可供开发人员使用的API，对于unix相关系统，开源界更是提供了数不尽的资源。而这些产品更大的问题就是：他们只考虑了去如何管理一个系统，而并没有更多的考虑如何去运营这个系统，如何把产品更快投入商业生产中。
我熟知的成熟商业系统主要有cpanel系统，在整个产业都很出名的，因为美国很多主流虚拟主机提供商都使用这个系统。国内很出名的是创值立信,他们的产品可以算上国内老大了，据说他们的开发团队是从万网跑出来的一伙人，所以在经验和技术积累上很成熟。
但这两个系统都有致命的缺点，就是高昂的价格，不能被大众尤其是中小型的客户甚至个人所接受。
再说其他的一些产品。国产的蓝芒主机管理系统，也是行业内的佼佼者，它们的系统支持国内完善的业务流管理，跨平台的系统支持，可谓非常完善的产品。而再有一些小型的产品，基本都工作在windows下，而无法实现对windows/*nix混合集群的支持，这样就造成了部分客户的流失。
而一些开源的虚拟主机管理，其功能之强令人震撼，比如webmin主机管理平台，还有一些windows下的免费软件基本能实现对整个操作系统虚拟化的管理，但一旦涉及商用，就有很大的问题，其欠缺的不仅是支付，业务流，财务等，更难以实现的是对整个运营流程的管理。
而目前国内此市场上，或者产品功能的欠缺，或者价格的昂贵，对于一些初创的公司或者个人都是一个门槛，无法达到成本低廉化。
所以，我认为国内此类虚拟化管理软件还有很大的市场潜力，只要是能够适应市场的产品，会在如此大的市场份额中再分一杯羹。
]]></description>
			<content:encoded><![CDATA[<p>我这里分析的虚拟化产品，主要是和IDC相关的一些虚拟产品。</p>
<p>我们常见的产品，比如虚拟主机（空间），VPS，服务器合租等。这类产品目前在市场上发展比较成熟，而且随着互联网发展，这类产品市场前景逐渐看好。</p>
<p>这点，从万网的发展路线就可以看出，中小企业越来越重视自己信息化的建设，而从百度的销售业绩也能看出，企业的投入逐渐从传统媒体转向了互联网。另外，各大IDC机房内，也有相当的托管机器是用在中小网站上。</p>
<p>而这些产品的基础构建，管理，对于不管是企业还是个人，都是一个问题。对于国内做虚拟主机产品的老大们，万网，新网都有自己的管理系统，而对于一些小型用户，一些开源的管理软件足矣，无非是增加点人力。</p>
<p>目前虚拟主机应用主流平台就是windows，linux，freebsd，windows系统首先有自己完善的管理机制和可供开发人员使用的API，对于unix相关系统，开源界更是提供了数不尽的资源。而这些产品更大的问题就是：他们只考虑了去如何管理一个系统，而并没有更多的考虑如何去运营这个系统，如何把产品更快投入商业生产中。</p>
<p>我熟知的成熟商业系统主要有cpanel系统，在整个产业都很出名的，因为美国很多主流虚拟主机提供商都使用这个系统。国内很出名的是创值立信,他们的产品可以算上国内老大了，据说他们的开发团队是从万网跑出来的一伙人，所以在经验和技术积累上很成熟。</p>
<p>但这两个系统都有致命的缺点，就是高昂的价格，不能被大众尤其是中小型的客户甚至个人所接受。</p>
<p>再说其他的一些产品。国产的蓝芒主机管理系统，也是行业内的佼佼者，它们的系统支持国内完善的业务流管理，跨平台的系统支持，可谓非常完善的产品。而再有一些小型的产品，基本都工作在windows下，而无法实现对windows/*nix混合集群的支持，这样就造成了部分客户的流失。</p>
<p>而一些开源的虚拟主机管理，其功能之强令人震撼，比如webmin主机管理平台，还有一些windows下的免费软件基本能实现对整个操作系统虚拟化的管理，但一旦涉及商用，就有很大的问题，其欠缺的不仅是支付，业务流，财务等，更难以实现的是对整个运营流程的管理。</p>
<p>而目前国内此市场上，或者产品功能的欠缺，或者价格的昂贵，对于一些初创的公司或者个人都是一个门槛，无法达到成本低廉化。</p>
<p>所以，我认为国内此类虚拟化管理软件还有很大的市场潜力，只要是能够适应市场的产品，会在如此大的市场份额中再分一杯羹。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/04/04/%e8%99%9a%e6%8b%9f%e5%8c%96%e4%ba%a7%e5%93%81%e5%b8%82%e5%9c%ba%e5%88%86%e6%9e%90.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>Python写的数据抽象层</title>
		<link>http://www.sunboyu.cn/2009/03/30/python%e5%86%99%e7%9a%84%e6%95%b0%e6%8d%ae%e6%8a%bd%e8%b1%a1%e5%b1%82.shtml</link>
		<comments>http://www.sunboyu.cn/2009/03/30/python%e5%86%99%e7%9a%84%e6%95%b0%e6%8d%ae%e6%8a%bd%e8%b1%a1%e5%b1%82.shtml#comments</comments>
		<pubDate>Mon, 30 Mar 2009 03:26:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[原创技术]]></category>

		<category><![CDATA[mysql]]></category>

		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=622</guid>
		<description><![CDATA[python本身没有对mysql的支持，得依赖附加的库 http://mysql-python.sourceforge.net 。很多框架采用了这个库，比如adodb，django等。不过我倾向于自己写这些东西，所以小研究了一下。 mysql-python 有两个对象 MySQLdb _mysql 这里是介绍http://mysql-python.sourceforge.net/MySQLdb.html,我使用的是 MySQLdb 对象
#!/D:\python25\python.exe
import MySQLdb
&#160;
class Mysql(object):
&#160;&#160; &#160;handle = ''
&#160;&#160; &#160;query = ''
&#160;&#160; &#160;exectime = 0
&#160;&#160; &#160;effected = 0
&#160;
&#160;&#160; &#160;def __init__( self , hostname , username , password , database ):
&#160;&#160; &#160; &#160; &#160;db = MySQLdb.connect( host = hostname , user = username , passwd = password , db = [...]]]></description>
			<content:encoded><![CDATA[<p>python本身没有对mysql的支持，得依赖附加的库 http://mysql-python.sourceforge.net 。很多框架采用了这个库，比如adodb，django等。不过我倾向于自己写这些东西，所以小研究了一下。 mysql-python 有两个对象 MySQLdb _mysql 这里是介绍http://mysql-python.sourceforge.net/MySQLdb.html,我使用的是 MySQLdb 对象</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">#!/D:\python25\python.exe</li>
<li>import MySQLdb</li>
<li>&nbsp;</li>
<li>class Mysql(object):</li>
<li>&nbsp;&nbsp; &nbsp;handle = ''</li>
<li>&nbsp;&nbsp; &nbsp;query = ''</li>
<li>&nbsp;&nbsp; &nbsp;exectime = 0</li>
<li>&nbsp;&nbsp; &nbsp;effected = 0</li>
<li>&nbsp;</li>
<li>&nbsp;&nbsp; &nbsp;def __init__( self , hostname , username , password , database ):</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;db = MySQLdb.connect( host = hostname , user = username , passwd = password , db = database )</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;self.handle = db.cursor()</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</li>
<li>&nbsp;&nbsp; &nbsp;def query( self , sql = '' ):</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return self.handle.execute( sql )</li>
<li>&nbsp;</li>
<li>&nbsp;&nbsp; &nbsp;def fetch( self , sql = '' ):</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;self.handle.execute( sql )</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;rs = self.handle.fetchone()</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;count = 0</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;result = {}</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for colnum in self.handle.description:</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;result[colnum[0]] = rs[count]</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;count += 1</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return result</li>
<li>&nbsp;&nbsp; &nbsp;</li>
<li>&nbsp;&nbsp; &nbsp;def fetchAll( self , sql = '' ):</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;self.handle.execute( sql )</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;result = {}</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;bigcount = 0</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for recordline in self.handle.fetchall():</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;littlecount = 0</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;result[bigcount] = {}</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for colnum in self.handle.description:</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;result[bigcount][colnum[0]] = recordline[littlecount]</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;littlecount += 1</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bigcount += 1</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return result</li>
<li>&nbsp;</li>
<li>&nbsp;&nbsp; &nbsp;def insertID( self ):</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.handle.execute(&quot;SELECT LAST_INSERT_ID() AS lid&quot;)</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;rs = self.handle.fetchone()</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return rs[0]</li>
<li>&nbsp;</li>
<li>&nbsp;&nbsp; &nbsp;def close( self ):</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.handle.close()</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pass</li>
<li>#DEMO</li>
<li>db = Mysql('localhost','root','123456','frame')</li>
<li>db.fetchAll('select * from user')</li>
<li>#rs = db.fetchAll('select * from user')</li>
<li>#sql = &quot;INSERT INTO tags (module,fid,name,note,`order`) VALUE ('test',1,'fd','ds',1)&quot;</li>
<li>#db.query(sql)</li>
<li>#print db.insertID()</li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/03/30/python%e5%86%99%e7%9a%84%e6%95%b0%e6%8d%ae%e6%8a%bd%e8%b1%a1%e5%b1%82.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>几个画蛇添足的函数，出自我手</title>
		<link>http://www.sunboyu.cn/2009/03/18/%e5%87%a0%e4%b8%aa%e7%94%bb%e8%9b%87%e6%b7%bb%e8%b6%b3%e7%9a%84%e5%87%bd%e6%95%b0%ef%bc%8c%e5%87%ba%e8%87%aa%e6%88%91%e6%89%8b.shtml</link>
		<comments>http://www.sunboyu.cn/2009/03/18/%e5%87%a0%e4%b8%aa%e7%94%bb%e8%9b%87%e6%b7%bb%e8%b6%b3%e7%9a%84%e5%87%bd%e6%95%b0%ef%bc%8c%e5%87%ba%e8%87%aa%e6%88%91%e6%89%8b.shtml#comments</comments>
		<pubDate>Tue, 17 Mar 2009 17:20:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[http_build_query]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=608</guid>
		<description><![CDATA[翻看自己以前的代码，发现自己的一些搞笑的函数,列一个
function func_arrtoQuerystring($array)&#160; &#160; &#160; &#160; &#160; &#160; &#160;#其实就是http_build_query
{
&#160;&#160; &#160;$string = '?';
&#160;&#160; &#160;foreach($array as $key=&#62;$value)
	{
	&#160; &#160; $string .= $key.&#34;,&#34;.$value.&#34;;&#34;;
	}
	$string = substr($string,0,substr($string)-1);
	$string .= &#34;.html&#34;;
	return $string;
}
回头多找几个这样的，自勉
]]></description>
			<content:encoded><![CDATA[<p>翻看自己以前的代码，发现自己的一些搞笑的函数,列一个</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">function func_arrtoQuerystring($array)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#其实就是http_build_query</li>
<li>{</li>
<li>&nbsp;&nbsp; &nbsp;$string = '?';</li>
<li>&nbsp;&nbsp; &nbsp;foreach($array as $key=&gt;$value)</li>
<li>	{</li>
<li>	&nbsp; &nbsp; $string .= $key.&quot;,&quot;.$value.&quot;;&quot;;</li>
<li>	}</li>
<li>	$string = substr($string,0,substr($string)-1);</li>
<li>	$string .= &quot;.html&quot;;</li>
<li>	return $string;</li>
<li>}</li></ol></div>
<p>回头多找几个这样的，自勉</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/03/18/%e5%87%a0%e4%b8%aa%e7%94%bb%e8%9b%87%e6%b7%bb%e8%b6%b3%e7%9a%84%e5%87%bd%e6%95%b0%ef%bc%8c%e5%87%ba%e8%87%aa%e6%88%91%e6%89%8b.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>SVN自动提交那个钩子</title>
		<link>http://www.sunboyu.cn/2009/03/17/svn%e8%87%aa%e5%8a%a8%e6%8f%90%e4%ba%a4%e9%82%a3%e4%b8%aa%e9%92%a9%e5%ad%90.shtml</link>
		<comments>http://www.sunboyu.cn/2009/03/17/svn%e8%87%aa%e5%8a%a8%e6%8f%90%e4%ba%a4%e9%82%a3%e4%b8%aa%e9%92%a9%e5%ad%90.shtml#comments</comments>
		<pubDate>Tue, 17 Mar 2009 10:30:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=606</guid>
		<description><![CDATA[首先那个版本得检出一下 /opt/subversion-1.4.3/bin/svn checkout svn://svn.sunboyu.cn:**/python/sso /home/project/sso
export LANG=zh_CN.UTF-8&#160; &#160;#中文支持
REPOS=&#34;$1&#34;
REV=&#34;$2&#34;
SVN=/opt/subversion-1.4.3/bin/svn&#160; #svn的地址
DIR=/home/main&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;#目标地址
/opt/subversion-1.4.3/bin/svn update /home/main&#160; &#160; &#160; &#160;#执行
]]></description>
			<content:encoded><![CDATA[<p>首先那个版本得检出一下 /opt/subversion-1.4.3/bin/svn checkout svn://svn.sunboyu.cn:**/python/sso /home/project/sso</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">export LANG=zh_CN.UTF-8&nbsp; &nbsp;#中文支持</li>
<li>REPOS=&quot;$1&quot;</li>
<li>REV=&quot;$2&quot;</li>
<li>SVN=/opt/subversion-1.4.3/bin/svn&nbsp; #svn的地址</li>
<li>DIR=/home/main&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#目标地址</li>
<li>/opt/subversion-1.4.3/bin/svn update /home/main&nbsp; &nbsp; &nbsp; &nbsp;#执行</li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/03/17/svn%e8%87%aa%e5%8a%a8%e6%8f%90%e4%ba%a4%e9%82%a3%e4%b8%aa%e9%92%a9%e5%ad%90.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>file_get_contents函数使用post方法</title>
		<link>http://www.sunboyu.cn/2009/03/16/file_get_contents%e5%87%bd%e6%95%b0%e4%bd%bf%e7%94%a8post%e6%96%b9%e6%b3%95.shtml</link>
		<comments>http://www.sunboyu.cn/2009/03/16/file_get_contents%e5%87%bd%e6%95%b0%e4%bd%bf%e7%94%a8post%e6%96%b9%e6%b3%95.shtml#comments</comments>
		<pubDate>Mon, 16 Mar 2009 04:27:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=602</guid>
		<description><![CDATA[以前总用socket的方式发送接收http的包，结果收到的包也有一堆http的协议头信息。
处理这些信息还挺费劲的。
然后想到了file_get_contents($url)方法，可以得到纯净的http包的正文。但这种方式默认是get的方式，后查手册和搜索，得到了post的方法。
这种方式基本跟socket的方式相同，包头构建好即可。
$array = array ('a' =&#62; 'b','c'=&#62;'d'); 
$url= http_build_query($array ); 
$postdate = array ( 
&#160;&#160; &#160;'http' =&#62; array ( 
&#160;&#160; &#160; &#160; &#160;'method' =&#62; 'POST', 
&#160;&#160; &#160; &#160; &#160;'header'=&#62; &#34;Content-type: application/x-www-form-urlencoded\r\n&#34; . 
&#160;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#34;Content-Length: &#34; . strlen($url) . &#34;\r\n&#34;, 
&#160;&#160; &#160; &#160; &#160;'content' =&#62; $url
&#160;&#160; &#160;), 
); 
$postcontent [...]]]></description>
			<content:encoded><![CDATA[<p>以前总用socket的方式发送接收http的包，结果收到的包也有一堆http的协议头信息。<br />
处理这些信息还挺费劲的。</p>
<p>然后想到了file_get_contents($url)方法，可以得到纯净的http包的正文。但这种方式默认是get的方式，后查手册和搜索，得到了post的方法。</p>
<p>这种方式基本跟socket的方式相同，包头构建好即可。</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">$array = array ('a' =&gt; 'b','c'=&gt;'d'); </li>
<li>$url= http_build_query($array ); </li>
<li>$postdate = array ( </li>
<li>&nbsp;&nbsp; &nbsp;'http' =&gt; array ( </li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;'method' =&gt; 'POST', </li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;'header'=&gt; &quot;Content-type: application/x-www-form-urlencoded\r\n&quot; . </li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;Content-Length: &quot; . strlen($url) . &quot;\r\n&quot;, </li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;'content' =&gt; $url</li>
<li>&nbsp;&nbsp; &nbsp;), </li>
<li>); </li>
<li>$postcontent = stream_context_create($postdate ); </li>
<li>$return= file_get_contents('http://www.sunboyu.cn', false, $postcontent );&nbsp; </li>
<li>echo $return;</li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/03/16/file_get_contents%e5%87%bd%e6%95%b0%e4%bd%bf%e7%94%a8post%e6%96%b9%e6%b3%95.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>解决了该死的权限问题，是否真的有效</title>
		<link>http://www.sunboyu.cn/2009/03/12/%e8%a7%a3%e5%86%b3%e4%ba%86%e8%af%a5%e6%ad%bb%e7%9a%84%e6%9d%83%e9%99%90%e9%97%ae%e9%a2%98%ef%bc%8c%e6%98%af%e5%90%a6%e7%9c%9f%e7%9a%84%e6%9c%89%e6%95%88.shtml</link>
		<comments>http://www.sunboyu.cn/2009/03/12/%e8%a7%a3%e5%86%b3%e4%ba%86%e8%af%a5%e6%ad%bb%e7%9a%84%e6%9d%83%e9%99%90%e9%97%ae%e9%a2%98%ef%bc%8c%e6%98%af%e5%90%a6%e7%9c%9f%e7%9a%84%e6%9c%89%e6%95%88.shtml#comments</comments>
		<pubDate>Thu, 12 Mar 2009 15:43:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Python]]></category>

		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=600</guid>
		<description><![CDATA[我的apache＋php权限是配置的最为严格的，当然，在用的时候难免伴随着混乱的账户情况，linux的权限机制也是很让人头疼的，终于，还是在风平浪静种碰到了麻烦。
我不认为PHP很强，因为它只是一个面向Web的脚本语言，而PHP的开发者却赋予了它太多，让人去用，有人也滥用。
当然，一门语言能解决N多问题是好的，比如汇编，C，但终究PHP有它跨不过的坎。毕竟它只是web脚本语言。
权限出现很大的问题，至今没有搞透，说白了对linux还是一知半解，使用python写了个第三方的东西，很完美得跳跃了权限的问题。至于效率，python肯定要比php强的，起码PHP作为服务器端程序运行，PHP还没有线程和进程的控制（一直没有发现），python有完善的线程进程的库。在权限管理上，python没细看，PHP在linux下有posix函数库，我一直也没有用过。
在没有更好的解决方案前，我依然用PHP做服务器端程序，python作为一些补充。也许，全部切换过去。
]]></description>
			<content:encoded><![CDATA[<p>我的apache＋php权限是配置的最为严格的，当然，在用的时候难免伴随着混乱的账户情况，linux的权限机制也是很让人头疼的，终于，还是在风平浪静种碰到了麻烦。</p>
<p>我不认为PHP很强，因为它只是一个面向Web的脚本语言，而PHP的开发者却赋予了它太多，让人去用，有人也滥用。</p>
<p>当然，一门语言能解决N多问题是好的，比如汇编，C，但终究PHP有它跨不过的坎。毕竟它只是web脚本语言。</p>
<p>权限出现很大的问题，至今没有搞透，说白了对linux还是一知半解，使用python写了个第三方的东西，很完美得跳跃了权限的问题。至于效率，python肯定要比php强的，起码PHP作为服务器端程序运行，PHP还没有线程和进程的控制（一直没有发现），python有完善的线程进程的库。在权限管理上，python没细看，PHP在linux下有posix函数库，我一直也没有用过。</p>
<p>在没有更好的解决方案前，我依然用PHP做服务器端程序，python作为一些补充。也许，全部切换过去。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/03/12/%e8%a7%a3%e5%86%b3%e4%ba%86%e8%af%a5%e6%ad%bb%e7%9a%84%e6%9d%83%e9%99%90%e9%97%ae%e9%a2%98%ef%bc%8c%e6%98%af%e5%90%a6%e7%9c%9f%e7%9a%84%e6%9c%89%e6%95%88.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>做完数据库抽象层，可能要做一个通用的缓存层</title>
		<link>http://www.sunboyu.cn/2009/03/07/%e5%81%9a%e5%ae%8c%e6%95%b0%e6%8d%ae%e5%ba%93%e6%8a%bd%e8%b1%a1%e5%b1%82%ef%bc%8c%e5%8f%af%e8%83%bd%e8%a6%81%e5%81%9a%e4%b8%80%e4%b8%aa%e9%80%9a%e7%94%a8%e7%9a%84%e7%bc%93%e5%ad%98%e5%b1%82.shtml</link>
		<comments>http://www.sunboyu.cn/2009/03/07/%e5%81%9a%e5%ae%8c%e6%95%b0%e6%8d%ae%e5%ba%93%e6%8a%bd%e8%b1%a1%e5%b1%82%ef%bc%8c%e5%8f%af%e8%83%bd%e8%a6%81%e5%81%9a%e4%b8%80%e4%b8%aa%e9%80%9a%e7%94%a8%e7%9a%84%e7%bc%93%e5%ad%98%e5%b1%82.shtml#comments</comments>
		<pubDate>Sat, 07 Mar 2009 06:17:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[其他]]></category>

		<category><![CDATA[bdb]]></category>

		<category><![CDATA[memcache]]></category>

		<category><![CDATA[缓存]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=598</guid>
		<description><![CDATA[数据抽象层实现了Mysql和SQLite的兼容，基本也就够用了，基本所有的PHP环境现在都支持sqlite(起码我配的环境是)，而且扩展的过程证明了这个规则是可以通用的。
低下要做个通用的缓存层，基本就是 key value 这种简单映射的就足够。这种缓存目前实现主要有本地文本，bdb，memcache几大系列。本地文本异常灵活，方便迁移，不依赖其他组件，直接用PHP的文件读写函数就可以。缺点是，未有大规模系统使用，因为PHP本身效率问题。小的应用还是可以使用的，phpx上也有个三德子写的通用文本缓存类。
bdb就非常不错了，嵌入式的数据库，支持简单的key value模式，而且本身非常小，但效率高，支撑非常大的数据量。
memcache就不用说了，太通用了，很多大型的系统都在应用，优缺点不再重复。
抽象层兼容这几个就行了，能实现无缝迁移即可。
计划下周末开工。
]]></description>
			<content:encoded><![CDATA[<p>数据抽象层实现了Mysql和SQLite的兼容，基本也就够用了，基本所有的PHP环境现在都支持sqlite(起码我配的环境是)，而且扩展的过程证明了这个规则是可以通用的。</p>
<p>低下要做个通用的缓存层，基本就是 key value 这种简单映射的就足够。这种缓存目前实现主要有本地文本，bdb，memcache几大系列。本地文本异常灵活，方便迁移，不依赖其他组件，直接用PHP的文件读写函数就可以。缺点是，未有大规模系统使用，因为PHP本身效率问题。小的应用还是可以使用的，phpx上也有个三德子写的通用文本缓存类。</p>
<p>bdb就非常不错了，嵌入式的数据库，支持简单的key value模式，而且本身非常小，但效率高，支撑非常大的数据量。</p>
<p>memcache就不用说了，太通用了，很多大型的系统都在应用，优缺点不再重复。</p>
<p>抽象层兼容这几个就行了，能实现无缝迁移即可。</p>
<p>计划下周末开工。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/03/07/%e5%81%9a%e5%ae%8c%e6%95%b0%e6%8d%ae%e5%ba%93%e6%8a%bd%e8%b1%a1%e5%b1%82%ef%bc%8c%e5%8f%af%e8%83%bd%e8%a6%81%e5%81%9a%e4%b8%80%e4%b8%aa%e9%80%9a%e7%94%a8%e7%9a%84%e7%bc%93%e5%ad%98%e5%b1%82.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>SQLite牛刀小试</title>
		<link>http://www.sunboyu.cn/2009/03/07/sqlite%e7%89%9b%e5%88%80%e5%b0%8f%e8%af%95.shtml</link>
		<comments>http://www.sunboyu.cn/2009/03/07/sqlite%e7%89%9b%e5%88%80%e5%b0%8f%e8%af%95.shtml#comments</comments>
		<pubDate>Fri, 06 Mar 2009 18:07:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[sqlite]]></category>

		<category><![CDATA[sqlitemanager]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=594</guid>
		<description><![CDATA[这玩意据说跟bdb一样，嵌入式数据库，正好嵌到了PHP上边，因为写框架，框架里新添加了一个功能，就是管理模块的一个模块，本想用mysql来做，又一想，用mysql，那迁移起来可麻烦了，不运行一个install就没法部署了，不如把功能直接镶嵌，直接使用。
SQLite跟mysql一样，是关系型数据库，而且功能都类似，我直接使用原来的接口，写了一个数据抽象层，直接挂接到原框架里，很好用。
SQLite管理，我还找了两个工具，一个桌面版的，类似mysql front ，一个web版的，看来就像phpmyadmin了。
413 Request Entity Too Large
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;
nginx/0.5.34
FUCK Nginx HOST
那个sqlitemanager  http://www.sqlitemanager.org/
代码如下，因为使用不多，临时用一下，所以细节没怎么处理，待出问题的时候再来修改。
&#60; ?php
/*&#160; DB.SQLite.Class.php
&#160;*&#160; SQLite
&#160;*&#160; @link&#160; &#160; &#160; &#160; http://www.sunboyu.cn
&#160;*&#160; @package&#160; &#160; &#160;OA
&#160;*&#160; @version&#160; &#160; &#160;V1.0
&#160;*
&#160;*&#160; 2009 03 07&#160; sunboyu@gmail.com
&#160;*&#160; Demo
&#160;*/
require_once(ROOT.&#34;/Include/Class/DB.InterFace.php&#34;);
class SQLite implements DateBaseConnect
{
	#连接标识
	public $handle = false;
	#结果标识
	public $query;
	#查询次数
	public $exetime;
	#数据库连接
&#160;&#160; &#160;public function Connect( $argvs )
	{
		$this-&#62;handle = @sqlite_open( $argvs['hostname'].'/'.$argvs['datebase'] , $argvs['mode'] , $sqliteerror );
		if(!$this-&#62;handle)
		{
			die(&#34;Can't connect to the datebase [...]]]></description>
			<content:encoded><![CDATA[<p>这玩意据说跟bdb一样，嵌入式数据库，正好嵌到了PHP上边，因为写框架，框架里新添加了一个功能，就是管理模块的一个模块，本想用mysql来做，又一想，用mysql，那迁移起来可麻烦了，不运行一个install就没法部署了，不如把功能直接镶嵌，直接使用。<br />
SQLite跟mysql一样，是关系型数据库，而且功能都类似，我直接使用原来的接口，写了一个数据抽象层，直接挂接到原框架里，很好用。<br />
SQLite管理，我还找了两个工具，一个桌面版的，类似mysql front ，一个web版的，看来就像phpmyadmin了。</p>
<p>413 Request Entity Too Large</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>nginx/0.5.34</p>
<p>FUCK Nginx HOST</p>
<p>那个sqlitemanager  http://www.sqlitemanager.org/</p>
<p>代码如下，因为使用不多，临时用一下，所以细节没怎么处理，待出问题的时候再来修改。</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">&lt; ?php</li>
<li>/*&nbsp; DB.SQLite.Class.php</li>
<li>&nbsp;*&nbsp; SQLite</li>
<li>&nbsp;*&nbsp; @link&nbsp; &nbsp; &nbsp; &nbsp; http://www.sunboyu.cn</li>
<li>&nbsp;*&nbsp; @package&nbsp; &nbsp; &nbsp;OA</li>
<li>&nbsp;*&nbsp; @version&nbsp; &nbsp; &nbsp;V1.0</li>
<li>&nbsp;*</li>
<li>&nbsp;*&nbsp; 2009 03 07&nbsp; sunboyu@gmail.com</li>
<li>&nbsp;*&nbsp; Demo</li>
<li>&nbsp;*/</li>
<li>require_once(ROOT.&quot;/Include/Class/DB.InterFace.php&quot;);</li>
<li>class SQLite implements DateBaseConnect</li>
<li>{</li>
<li>	#连接标识</li>
<li>	public $handle = false;</li>
<li>	#结果标识</li>
<li>	public $query;</li>
<li>	#查询次数</li>
<li>	public $exetime;</li>
<li>	#数据库连接</li>
<li>&nbsp;&nbsp; &nbsp;public function Connect( $argvs )</li>
<li>	{</li>
<li>		$this-&gt;handle = @sqlite_open( $argvs['hostname'].'/'.$argvs['datebase'] , $argvs['mode'] , $sqliteerror );</li>
<li>		if(!$this-&gt;handle)</li>
<li>		{</li>
<li>			die(&quot;Can't connect to the datebase &quot;.$argvs['datebase']);</li>
<li>		}</li>
<li>		$this-&gt;exetime = 0;</li>
<li>	}</li>
<li>	#使用数据库</li>
<li>	public function selectDateBase( $datebase )</li>
<li>	{</li>
<li>		#此方法无用</li>
<li>		return true;</li>
<li>	}</li>
<li>	#执行一个查询</li>
<li>	public function query( $sql )</li>
<li>	{</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;#echo $sql;</li>
<li>		$this-&gt;query = sqlite_query( $sql , $this-&gt;handle ) or die(&quot;query error&quot;.sqlite_last_error( $this-&gt;handle ));</li>
<li>		$this-&gt;exetime++;</li>
<li>		return true;</li>
<li>	}</li>
<li>	#取得一行</li>
<li>	public function fetch( $sql )</li>
<li>	{</li>
<li>		$this-&gt;query( $sql );</li>
<li>		while( $row = mysql_fetch_array( $this-&gt;query, MYSQL_ASSOC ) )</li>
<li>		{</li>
<li>			return $row;</li>
<li>	&nbsp; &nbsp; }</li>
<li>		return false;</li>
<li>	}</li>
<li>	#取得所有</li>
<li>	public function fetchAll( $sql )</li>
<li>	{</li>
<li>		$this-&gt;query( $sql );</li>
<li>		return sqlite_fetch_all( $this-&gt;query );</li>
<li>	}</li>
<li>	#取得影响行数</li>
<li>	public function affectedRow()</li>
<li>	{</li>
<li>		return true;</li>
<li>	}</li>
<li>	#取得结果行数</li>
<li>	public function recordCount()</li>
<li>	{</li>
<li>		return sqlite_num_rows( $this-&gt;query );</li>
<li>	}</li>
<li>	#取得上次插入ID</li>
<li>	public function insertID()</li>
<li>	{</li>
<li>		return false;</li>
<li>	}</li>
<li>	#释放资源</li>
<li>	public function close()</li>
<li>	{</li>
<li>		unset( $this-&gt;handle );</li>
<li>	}</li>
<li>	#析构函数</li>
<li>	/*</li>
<li>	function __destruct()</li>
<li>	{</li>
<li>		$this-&gt;close();</li>
<li>	}</li>
<li>	*/</li>
<li>}</li>
<li>?&gt;</li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/03/07/sqlite%e7%89%9b%e5%88%80%e5%b0%8f%e8%af%95.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>给代码打上版本号</title>
		<link>http://www.sunboyu.cn/2009/03/03/%e7%bb%99%e4%bb%a3%e7%a0%81%e6%89%93%e4%b8%8a%e7%89%88%e6%9c%ac%e5%8f%b7.shtml</link>
		<comments>http://www.sunboyu.cn/2009/03/03/%e7%bb%99%e4%bb%a3%e7%a0%81%e6%89%93%e4%b8%8a%e7%89%88%e6%9c%ac%e5%8f%b7.shtml#comments</comments>
		<pubDate>Tue, 03 Mar 2009 15:55:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[版本]]></category>

		<category><![CDATA[耦合]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=591</guid>
		<description><![CDATA[这个版本号，当然不是svn的版本号。
写程序再多，很多情况还是考虑不清楚。有时候代码耦合度并不能合理权衡，一旦升级某项功能，大改一下也是难免。但大换血式的更改代码是很忌讳的，尤其是运行很稳定的程序。
迫不得已，流程要修改，而且可能是截断了某个流程，创建分支，这时候，如果有一个版本的控制，那只需要更新特定的版本文件，即可实现无缝升级。当然，如果不稳定，可以迅速实现代码版本的回滚。
不过这种情况要求程序模块松散耦合，当你有紧耦合代码需要调整的时候，可以享受版本切换带来的享受。
]]></description>
			<content:encoded><![CDATA[<p>这个版本号，当然不是svn的版本号。</p>
<p>写程序再多，很多情况还是考虑不清楚。有时候代码耦合度并不能合理权衡，一旦升级某项功能，大改一下也是难免。但大换血式的更改代码是很忌讳的，尤其是运行很稳定的程序。</p>
<p>迫不得已，流程要修改，而且可能是截断了某个流程，创建分支，这时候，如果有一个版本的控制，那只需要更新特定的版本文件，即可实现无缝升级。当然，如果不稳定，可以迅速实现代码版本的回滚。</p>
<p>不过这种情况要求程序模块松散耦合，当你有紧耦合代码需要调整的时候，可以享受版本切换带来的享受。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/03/03/%e7%bb%99%e4%bb%a3%e7%a0%81%e6%89%93%e4%b8%8a%e7%89%88%e6%9c%ac%e5%8f%b7.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>重写框架</title>
		<link>http://www.sunboyu.cn/2009/03/01/%e9%87%8d%e5%86%99%e6%a1%86%e6%9e%b6.shtml</link>
		<comments>http://www.sunboyu.cn/2009/03/01/%e9%87%8d%e5%86%99%e6%a1%86%e6%9e%b6.shtml#comments</comments>
		<pubDate>Sun, 01 Mar 2009 04:06:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[框架]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=585</guid>
		<description><![CDATA[其实我有两个框架，一个是比较简单的框架，适用于多人生产，只是拿出了框架的一些基本特性，便于由程序员自由发挥，又不缺乏一个基本的规则。
另一个是cakephp的“高仿版”，虽然是一个完整的框架，但学习成本高，另外扼杀了程序员的天性，所以，不再更新。
这次更新的是第一个框架，因为投入了生产，暴露了很多问题，这次的目标，首先是一个完善的框架系统，另外继承很多的应用实例。
另外一些LAMP应用脚本也会适当集成，当然得是拥有root的人才能使用这些功能。
主框架依然是PHP类库，路由，JS库（考虑是否集成JQUERY）
]]></description>
			<content:encoded><![CDATA[<p>其实我有两个框架，一个是比较简单的框架，适用于多人生产，只是拿出了框架的一些基本特性，便于由程序员自由发挥，又不缺乏一个基本的规则。</p>
<p>另一个是cakephp的“高仿版”，虽然是一个完整的框架，但学习成本高，另外扼杀了程序员的天性，所以，不再更新。</p>
<p>这次更新的是第一个框架，因为投入了生产，暴露了很多问题，这次的目标，首先是一个完善的框架系统，另外继承很多的应用实例。</p>
<p>另外一些LAMP应用脚本也会适当集成，当然得是拥有root的人才能使用这些功能。</p>
<p>主框架依然是PHP类库，路由，JS库（考虑是否集成JQUERY）</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/03/01/%e9%87%8d%e5%86%99%e6%a1%86%e6%9e%b6.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>使用PYTHON小提apache下的PHP执行权限</title>
		<link>http://www.sunboyu.cn/2009/02/28/%e4%bd%bf%e7%94%a8python%e5%b0%8f%e6%8f%90apache%e4%b8%8b%e7%9a%84php%e6%89%a7%e8%a1%8c%e6%9d%83%e9%99%90.shtml</link>
		<comments>http://www.sunboyu.cn/2009/02/28/%e4%bd%bf%e7%94%a8python%e5%b0%8f%e6%8f%90apache%e4%b8%8b%e7%9a%84php%e6%89%a7%e8%a1%8c%e6%9d%83%e9%99%90.shtml#comments</comments>
		<pubDate>Sat, 28 Feb 2009 15:15:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=583</guid>
		<description><![CDATA[绕了个圈，权限彻底上去了，中间用socket通讯方式解决。
代码暂时还不安全，等拿出安全的方案后公布
]]></description>
			<content:encoded><![CDATA[<p>绕了个圈，权限彻底上去了，中间用socket通讯方式解决。<br />
代码暂时还不安全，等拿出安全的方案后公布</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/02/28/%e4%bd%bf%e7%94%a8python%e5%b0%8f%e6%8f%90apache%e4%b8%8b%e7%9a%84php%e6%89%a7%e8%a1%8c%e6%9d%83%e9%99%90.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>AS4中jdk的配置问题</title>
		<link>http://www.sunboyu.cn/2009/02/24/as4%e4%b8%adjdk%e7%9a%84%e9%85%8d%e7%bd%ae%e9%97%ae%e9%a2%98.shtml</link>
		<comments>http://www.sunboyu.cn/2009/02/24/as4%e4%b8%adjdk%e7%9a%84%e9%85%8d%e7%bd%ae%e9%97%ae%e9%a2%98.shtml#comments</comments>
		<pubDate>Tue, 24 Feb 2009 06:10:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[as4]]></category>

		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=581</guid>
		<description><![CDATA[AS4中默认安装了jdk1.3.×
在安装jdk1.6.0后，设置了环境变量，可默认还是显示java1.3.×
后发现，在/usr/bin 下有java这个文件，默认关联的是1.3的，删除掉后，发现一切正常
]]></description>
			<content:encoded><![CDATA[<p>AS4中默认安装了jdk1.3.×<br />
在安装jdk1.6.0后，设置了环境变量，可默认还是显示java1.3.×<br />
后发现，在/usr/bin 下有java这个文件，默认关联的是1.3的，删除掉后，发现一切正常</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/02/24/as4%e4%b8%adjdk%e7%9a%84%e9%85%8d%e7%bd%ae%e9%97%ae%e9%a2%98.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>购买新书两本</title>
		<link>http://www.sunboyu.cn/2009/02/22/%e8%b4%ad%e4%b9%b0%e6%96%b0%e4%b9%a6%e4%b8%a4%e6%9c%ac.shtml</link>
		<comments>http://www.sunboyu.cn/2009/02/22/%e8%b4%ad%e4%b9%b0%e6%96%b0%e4%b9%a6%e4%b8%a4%e6%9c%ac.shtml#comments</comments>
		<pubDate>Sun, 22 Feb 2009 12:02:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[其他]]></category>

		<category><![CDATA[linux系统安全]]></category>

		<category><![CDATA[密码传奇]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=575</guid>
		<description><![CDATA[http://www.douban.com/subject/2171797/

http://www.douban.com/subject/3024665/

]]></description>
			<content:encoded><![CDATA[<p>http://www.douban.com/subject/2171797/</p>
<p><a href="http://www.sunboyu.cn/upfiles/2009/02/s3069021.jpg"><img src="http://www.sunboyu.cn/upfiles/2009/02/s3069021.jpg" alt="s3069021" title="s3069021" width="102" height="145" class="aligncenter size-full wp-image-576" /></a></p>
<p>http://www.douban.com/subject/3024665/</p>
<p><a href="http://www.sunboyu.cn/upfiles/2009/02/s30690211.jpg"><img src="http://www.sunboyu.cn/upfiles/2009/02/s30690211.jpg" alt="s30690211" title="s30690211" width="200" height="285" class="aligncenter size-full wp-image-577" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/02/22/%e8%b4%ad%e4%b9%b0%e6%96%b0%e4%b9%a6%e4%b8%a4%e6%9c%ac.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>Python编译参数</title>
		<link>http://www.sunboyu.cn/2009/02/21/python%e7%bc%96%e8%af%91%e5%8f%82%e6%95%b0.shtml</link>
		<comments>http://www.sunboyu.cn/2009/02/21/python%e7%bc%96%e8%af%91%e5%8f%82%e6%95%b0.shtml#comments</comments>
		<pubDate>Sat, 21 Feb 2009 15:38:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Python]]></category>

		<category><![CDATA[mod_python]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=573</guid>
		<description><![CDATA[python2.6.1和mod_python的编译参数
#python编译参数
./configure --prefix=/opt/python-2.6.1 \
--enable-shared \
--enable-profiling \
--with-gcc \
--with-pydebug \
--with-system-ffi \
--with-signal-module \
--with-dec-threads \
--with-threads \
--with-thread \
--with-pth \
--with-doc-strings \
--with-tsc \
--with-pymalloc \
--with-fpectl
&#160;
#python_mod编译参数
./configure --with-apxs=/opt/httpd-2.2.9 \
--with-python=/opt/python-2.6.1
]]></description>
			<content:encoded><![CDATA[<p>python2.6.1和mod_python的编译参数</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">#python编译参数</li>
<li>./configure --prefix=/opt/python-2.6.1 \</li>
<li>--enable-shared \</li>
<li>--enable-profiling \</li>
<li>--with-gcc \</li>
<li>--with-pydebug \</li>
<li>--with-system-ffi \</li>
<li>--with-signal-module \</li>
<li>--with-dec-threads \</li>
<li>--with-threads \</li>
<li>--with-thread \</li>
<li>--with-pth \</li>
<li>--with-doc-strings \</li>
<li>--with-tsc \</li>
<li>--with-pymalloc \</li>
<li>--with-fpectl</li>
<li>&nbsp;</li>
<li>#python_mod编译参数</li>
<li>./configure --with-apxs=/opt/httpd-2.2.9 \</li>
<li>--with-python=/opt/python-2.6.1</li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/02/21/python%e7%bc%96%e8%af%91%e5%8f%82%e6%95%b0.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>值得程序员们看的一段对话</title>
		<link>http://www.sunboyu.cn/2009/02/16/%e5%80%bc%e5%be%97%e7%a8%8b%e5%ba%8f%e5%91%98%e4%bb%ac%e7%9c%8b%e7%9a%84%e4%b8%80%e6%ae%b5%e5%af%b9%e8%af%9d.shtml</link>
		<comments>http://www.sunboyu.cn/2009/02/16/%e5%80%bc%e5%be%97%e7%a8%8b%e5%ba%8f%e5%91%98%e4%bb%ac%e7%9c%8b%e7%9a%84%e4%b8%80%e6%ae%b5%e5%af%b9%e8%af%9d.shtml#comments</comments>
		<pubDate>Mon, 16 Feb 2009 14:29:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[感悟]]></category>

		<category><![CDATA[对话]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=571</guid>
		<description><![CDATA[新年期许
三炮 
今天晚上和七夜吃饭去了，吃饭的时候聊到了程序员年龄的问题，回来的路上聊到了如何奔小康的问题。
三德子27了，已经开始因为年龄的缘故在做程序员这个问题上开始上下摇晃了，因为在中国，程序员就是苦力，是年轻而且精力智力好的人做的，可在我的眼里，三德子经验老到，丰富，很喜欢听三德子讲东西。
再过两年我也得27了，看着身边圈子里的一个个朋友有的有所成了，有的碌碌无为混到了大龄阶层。我觉得自己现在正在站在这个人生的分岔路上，如果再不加把劲，就危险了。
想起了长辰科技解散的时候邹总说过的话：“希望你们大家离开长辰科技，能做到一件事，每天看半小时的书，我的要求不高，就半小时，半年后，你们谁做到了，发短信告诉我！我相信你们不一定都能做到，单我希望你们能够做到！”，想起这句话至今感动着我，鼓舞着我。
    在2009年这一年，我要放下心中的包袱，愉快的上路，不再压抑，沉重，在2010年的时候，踏上一个更高的台阶！
孙小贰
我跟三德子一样，都是大龄程序员了，压力只能在有压力的地方获得。
我在朗玛9个月，每天看书半小时，我做到了(经常是半天)。
每天写程序，去做调试，我做到了。
经常写一些新鲜东西，我做到了。
每天写东西，后来做不到了，因为研究的东西深了，不是一天两天了。
但我有点崩溃了，虽然得到了一些东西，但也失去了一些东西。
我从有压力的地方走出来，希望能平衡自己的生活，真正去做适合自己的事情。 
三炮:相信你的这段辛苦的日子是值得的，我正在踏着你们老一辈做过的路迷茫的前行 删除
]]></description>
			<content:encoded><![CDATA[<p>新年期许</p>
<p>三炮 </p>
<p>今天晚上和七夜吃饭去了，吃饭的时候聊到了程序员年龄的问题，回来的路上聊到了如何奔小康的问题。<br />
三德子27了，已经开始因为年龄的缘故在做程序员这个问题上开始上下摇晃了，因为在中国，程序员就是苦力，是年轻而且精力智力好的人做的，可在我的眼里，三德子经验老到，丰富，很喜欢听三德子讲东西。<br />
再过两年我也得27了，看着身边圈子里的一个个朋友有的有所成了，有的碌碌无为混到了大龄阶层。我觉得自己现在正在站在这个人生的分岔路上，如果再不加把劲，就危险了。<br />
想起了长辰科技解散的时候邹总说过的话：“希望你们大家离开长辰科技，能做到一件事，每天看半小时的书，我的要求不高，就半小时，半年后，你们谁做到了，发短信告诉我！我相信你们不一定都能做到，单我希望你们能够做到！”，想起这句话至今感动着我，鼓舞着我。<br />
    在2009年这一年，我要放下心中的包袱，愉快的上路，不再压抑，沉重，在2010年的时候，踏上一个更高的台阶！</p>
<p>孙小贰</p>
<p>我跟三德子一样，都是大龄程序员了，压力只能在有压力的地方获得。<br />
我在朗玛9个月，每天看书半小时，我做到了(经常是半天)。<br />
每天写程序，去做调试，我做到了。<br />
经常写一些新鲜东西，我做到了。<br />
每天写东西，后来做不到了，因为研究的东西深了，不是一天两天了。<br />
但我有点崩溃了，虽然得到了一些东西，但也失去了一些东西。<br />
我从有压力的地方走出来，希望能平衡自己的生活，真正去做适合自己的事情。 </p>
<p>三炮:相信你的这段辛苦的日子是值得的，我正在踏着你们老一辈做过的路迷茫的前行 删除</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/02/16/%e5%80%bc%e5%be%97%e7%a8%8b%e5%ba%8f%e5%91%98%e4%bb%ac%e7%9c%8b%e7%9a%84%e4%b8%80%e6%ae%b5%e5%af%b9%e8%af%9d.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>mysql索引优化</title>
		<link>http://www.sunboyu.cn/2009/02/15/mysql%e7%b4%a2%e5%bc%95%e4%bc%98%e5%8c%96.shtml</link>
		<comments>http://www.sunboyu.cn/2009/02/15/mysql%e7%b4%a2%e5%bc%95%e4%bc%98%e5%8c%96.shtml#comments</comments>
		<pubDate>Sun, 15 Feb 2009 06:01:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[MYSQL]]></category>

		<category><![CDATA[mysql]]></category>

		<category><![CDATA[优化]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=568</guid>
		<description><![CDATA[做复杂的数据报表经常要很多sql语句连续执行，不是超时就是把mysql跑挂。不过现在硬件廉价，这些软件完美得兼容了多核多线程，虽然一个mysql进程负载高，但只占用一个内核，其他的查询依然可以使用其他的内核进行运算，服务器不会整体挂掉。
mysql优化，主要是索引，大量消耗资源的查询一定要做相关索引优化，具体优化思想我是阅读的这本书－http://www.douban.com/subject/3039216/ 里边mysql优化部分讲得非常简洁明了。而对于cpu的优化，就是尽力把整体时间拉开，cpu会比较平稳。具体做法是用sleep把sql语句分隔，这样用时间换取了稳定。当然，有些报表数据一旦作出就不会再变，这时最好把这些数据文本缓存，以后查询只读取文本即可。
]]></description>
			<content:encoded><![CDATA[<p>做复杂的数据报表经常要很多sql语句连续执行，不是超时就是把mysql跑挂。不过现在硬件廉价，这些软件完美得兼容了多核多线程，虽然一个mysql进程负载高，但只占用一个内核，其他的查询依然可以使用其他的内核进行运算，服务器不会整体挂掉。</p>
<p>mysql优化，主要是索引，大量消耗资源的查询一定要做相关索引优化，具体优化思想我是阅读的这本书－http://www.douban.com/subject/3039216/ 里边mysql优化部分讲得非常简洁明了。而对于cpu的优化，就是尽力把整体时间拉开，cpu会比较平稳。具体做法是用sleep把sql语句分隔，这样用时间换取了稳定。当然，有些报表数据一旦作出就不会再变，这时最好把这些数据文本缓存，以后查询只读取文本即可。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/02/15/mysql%e7%b4%a2%e5%bc%95%e4%bc%98%e5%8c%96.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>centos折腾记录</title>
		<link>http://www.sunboyu.cn/2009/02/10/centos%e6%8a%98%e8%85%be%e8%ae%b0%e5%bd%95.shtml</link>
		<comments>http://www.sunboyu.cn/2009/02/10/centos%e6%8a%98%e8%85%be%e8%ae%b0%e5%bd%95.shtml#comments</comments>
		<pubDate>Tue, 10 Feb 2009 03:47:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=561</guid>
		<description><![CDATA[安装gmone图形界面
yum &#8211;exclude=nautilus-sendto groupinstall gnome-desktop
安装vnc
yum install vnc
vncserver start
vi xstartup
#xterm -geometry 80&#215;24+10+10 -ls -title &#8220;$VNCDESKTOP Desktop&#8221; &#038;
gnome-session
就OK了
安装中文-得给不会命令行的大哥们用
yum groupinstall &#8220;Chinese Support&#8221;
另外编辑/etc/sysconfig/i18n成下面这个样子：
LANG=&#8221;zh_CN.GB18030&#8243;
SUPPORTED=&#8221;zh_CN.GB18030:zh_CN:zh:zh_TW.Big5:zh_TW:zh:en_US.iso885915:en_US:en&#8221;
SYSFONT=&#8221;lat0-sun16&#8243;
SYSFONTACM=&#8221;iso15&#8243;
reboot
另外，我想centos4.7直接yum成centos5.2，暂时不折腾
]]></description>
			<content:encoded><![CDATA[<p>安装gmone图形界面</p>
<p>yum &#8211;exclude=nautilus-sendto groupinstall gnome-desktop</p>
<p>安装vnc</p>
<p>yum install vnc</p>
<p>vncserver start</p>
<p>vi xstartup<br />
#xterm -geometry 80&#215;24+10+10 -ls -title &#8220;$VNCDESKTOP Desktop&#8221; &#038;<br />
gnome-session</p>
<p>就OK了</p>
<p>安装中文-得给不会命令行的大哥们用</p>
<p>yum groupinstall &#8220;Chinese Support&#8221;</p>
<p>另外编辑/etc/sysconfig/i18n成下面这个样子：<br />
LANG=&#8221;zh_CN.GB18030&#8243;<br />
SUPPORTED=&#8221;zh_CN.GB18030:zh_CN:zh:zh_TW.Big5:zh_TW:zh:en_US.iso885915:en_US:en&#8221;<br />
SYSFONT=&#8221;lat0-sun16&#8243;<br />
SYSFONTACM=&#8221;iso15&#8243;</p>
<p>reboot</p>
<p>另外，我想centos4.7直接yum成centos5.2，暂时不折腾</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/02/10/centos%e6%8a%98%e8%85%be%e8%ae%b0%e5%bd%95.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>无题</title>
		<link>http://www.sunboyu.cn/2009/02/09/%e6%97%a0%e9%a2%98.shtml</link>
		<comments>http://www.sunboyu.cn/2009/02/09/%e6%97%a0%e9%a2%98.shtml#comments</comments>
		<pubDate>Mon, 09 Feb 2009 12:47:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[相当拍砖]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=556</guid>
		<description><![CDATA[正月十五月正东
羞煞人间万盏灯
总有一时落下去
满天尽是小星星
某文人骚客，很骚
]]></description>
			<content:encoded><![CDATA[<p>正月十五月正东</p>
<p>羞煞人间万盏灯</p>
<p>总有一时落下去</p>
<p>满天尽是小星星</p>
<p>某文人骚客，很骚</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/02/09/%e6%97%a0%e9%a2%98.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>nagios学习笔记－安装篇</title>
		<link>http://www.sunboyu.cn/2009/02/04/nagios%e5%ad%a6%e4%b9%a0%e7%ac%94%e8%ae%b0%ef%bc%8d%e5%ae%89%e8%a3%85%e7%af%87.shtml</link>
		<comments>http://www.sunboyu.cn/2009/02/04/nagios%e5%ad%a6%e4%b9%a0%e7%ac%94%e8%ae%b0%ef%bc%8d%e5%ae%89%e8%a3%85%e7%af%87.shtml#comments</comments>
		<pubDate>Wed, 04 Feb 2009 09:49:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[nagios]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=554</guid>
		<description><![CDATA[服务器和网络总搞的人疲惫，有不少商用的服务器监视工具，但价格都太贵，自己写，太费劲，而且要监控的服务也很多，不近要监控可用性，还要监控性能。
后在CU论坛看到nagios功能强大，尝试安装了一下。
首先到 http://www.nagios.org/ 下载 nagios-3.0.6.tar.gz  nagios-plugins-1.4.13.tar.gz  两个程序，两个必须安装，否则不工作。
nagios主程序安装非常简单，暂时没有看configure参数，直接加了个 &#8211;prefix就OK了。那个plugins也一样，但nagios主程序在configure &#8211;prefix &#038;&#038; make all &#038;&#038; make install 之后,还要运行 make install-commandmode &#038;&#038; make install-config &#038;&#038; make install-init &#038;&#038; make install-webconf  但是最后一个 make install-webconf 可能会报错，无法找到apache配置文件目录，手工拷贝 nagios.conf 到apache配置文件目录，在主配置文件引用就可以了。
这样安装就完成了，可以访问 localhost/nagios
但没有配置，无法完成监控报表的功能，因为刚学习，也没找到中文文档，待研究后继续……
]]></description>
			<content:encoded><![CDATA[<p>服务器和网络总搞的人疲惫，有不少商用的服务器监视工具，但价格都太贵，自己写，太费劲，而且要监控的服务也很多，不近要监控可用性，还要监控性能。</p>
<p>后在CU论坛看到nagios功能强大，尝试安装了一下。</p>
<p>首先到 http://www.nagios.org/ 下载 nagios-3.0.6.tar.gz  nagios-plugins-1.4.13.tar.gz  两个程序，两个必须安装，否则不工作。</p>
<p>nagios主程序安装非常简单，暂时没有看configure参数，直接加了个 &#8211;prefix就OK了。那个plugins也一样，但nagios主程序在configure &#8211;prefix &#038;&#038; make all &#038;&#038; make install 之后,还要运行 make install-commandmode &#038;&#038; make install-config &#038;&#038; make install-init &#038;&#038; make install-webconf  但是最后一个 make install-webconf 可能会报错，无法找到apache配置文件目录，手工拷贝 nagios.conf 到apache配置文件目录，在主配置文件引用就可以了。</p>
<p>这样安装就完成了，可以访问 localhost/nagios</p>
<p>但没有配置，无法完成监控报表的功能，因为刚学习，也没找到中文文档，待研究后继续……</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/02/04/nagios%e5%ad%a6%e4%b9%a0%e7%ac%94%e8%ae%b0%ef%bc%8d%e5%ae%89%e8%a3%85%e7%af%87.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>使用APACHE代理功能加速网通电信互联收看《丑女无敌》</title>
		<link>http://www.sunboyu.cn/2009/02/02/%e4%bd%bf%e7%94%a8apache%e4%bb%a3%e7%90%86%e5%8a%9f%e8%83%bd%e5%8a%a0%e9%80%9f%e7%bd%91%e9%80%9a%e7%94%b5%e4%bf%a1%e4%ba%92%e8%81%94%e6%94%b6%e7%9c%8b%e3%80%8a%e4%b8%91%e5%a5%b3%e6%97%a0%e6%95%8c.shtml</link>
		<comments>http://www.sunboyu.cn/2009/02/02/%e4%bd%bf%e7%94%a8apache%e4%bb%a3%e7%90%86%e5%8a%9f%e8%83%bd%e5%8a%a0%e9%80%9f%e7%bd%91%e9%80%9a%e7%94%b5%e4%bf%a1%e4%ba%92%e8%81%94%e6%94%b6%e7%9c%8b%e3%80%8a%e4%b8%91%e5%a5%b3%e6%97%a0%e6%95%8c.shtml#comments</comments>
		<pubDate>Mon, 02 Feb 2009 15:26:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[原创技术]]></category>

		<category><![CDATA[apache]]></category>

		<category><![CDATA[proxy]]></category>

		<category><![CDATA[丑女无敌]]></category>

		<category><![CDATA[代理]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=550</guid>
		<description><![CDATA[内人要看金鹰网的《丑女无敌》，无奈其服务器为电信线路，我们北京网通线路浏览非常慢，肉眼就能看见侦数。
起初想做个vpn，登陆到服务器上，走电信网关，但linux在配置vpn时候内核编译死活不能成功，暂时放弃这个计划，想其他方法。
本以为web播放走流媒体的相关协议，后尝试使用流媒体下载工具，始终没能把文件扒下来，后被逼急，又想入侵其服务器。
扫描了端口，发现其服务器只开21 80端口了，非常诡异，正常的流媒体不走这两个端口的，后抓包发现，web播放器中请求服务器其实是走的HTTP协议
GET /HttpServer/jinying/电视剧下载/丑女无敌第二季/第四集.wmv?SessionID=75440406108580700-17&#38;ServerIP=222.246.135.168&#38;ServiceType=1&#38;ContentID=6754 HTTP/1.1
Host:222.246.135.168
Accept:*/*
User-Agent:Mozilla/4.0 (compatible; MSIE 5.00; Windows 98)
Connection:close
Range:bytes=5444743-5969030&#160; &#160; &#160; &#160; &#160;#524287
ConnectId:22455
CheckTag:34275a1d57f84c60b5ccf8519cad6908
UserAgent:PowerStream 1.0.5.5507
页面每隔一段时间去请求一段数据，然后浏览器中的播放器去处理这些数据，转换为影音。
既然是走http，那可以直接用apache做一个代理，我直接把本地的http请求通过亦庄网通的服务器转发，而亦庄虽然是网通机房，但访问电信的速度确比我高的多，这样就实现了网通高速收看电信的节目。
虽然稍卡（码率比较大），但基本达到了顺利观看的水平。
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.sunboyu.cn/upfiles/2009/02/e4b891e5a5b3e697a0e6958ce7acac2e5ada3-1.jpg"><img src="http://www.sunboyu.cn/upfiles/2009/02/e4b891e5a5b3e697a0e6958ce7acac2e5ada3-1.jpg" alt="e4b891e5a5b3e697a0e6958ce7acac2e5ada3-1" title="e4b891e5a5b3e697a0e6958ce7acac2e5ada3-1" width="264" height="198" class="aligncenter size-full wp-image-552" /></a>内人要看金鹰网的《丑女无敌》，无奈其服务器为电信线路，我们北京网通线路浏览非常慢，肉眼就能看见侦数。</p>
<p>起初想做个vpn，登陆到服务器上，走电信网关，但linux在配置vpn时候内核编译死活不能成功，暂时放弃这个计划，想其他方法。</p>
<p>本以为web播放走流媒体的相关协议，后尝试使用流媒体下载工具，始终没能把文件扒下来，后被逼急，又想入侵其服务器。</p>
<p>扫描了端口，发现其服务器只开21 80端口了，非常诡异，正常的流媒体不走这两个端口的，后抓包发现，web播放器中请求服务器其实是走的HTTP协议</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">GET /HttpServer/jinying/电视剧下载/丑女无敌第二季/第四集.wmv?SessionID=75440406108580700-17&amp;ServerIP=222.246.135.168&amp;ServiceType=1&amp;ContentID=6754 HTTP/1.1</li>
<li>Host:222.246.135.168</li>
<li>Accept:*/*</li>
<li>User-Agent:Mozilla/4.0 (compatible; MSIE 5.00; Windows 98)</li>
<li>Connection:close</li>
<li>Range:bytes=5444743-5969030&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#524287</li>
<li>ConnectId:22455</li>
<li>CheckTag:34275a1d57f84c60b5ccf8519cad6908</li>
<li>UserAgent:PowerStream 1.0.5.5507</li></ol></div>
<p>页面每隔一段时间去请求一段数据，然后浏览器中的播放器去处理这些数据，转换为影音。</p>
<p>既然是走http，那可以直接用apache做一个代理，我直接把本地的http请求通过亦庄网通的服务器转发，而亦庄虽然是网通机房，但访问电信的速度确比我高的多，这样就实现了网通高速收看电信的节目。</p>
<p>虽然稍卡（码率比较大），但基本达到了顺利观看的水平。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/02/02/%e4%bd%bf%e7%94%a8apache%e4%bb%a3%e7%90%86%e5%8a%9f%e8%83%bd%e5%8a%a0%e9%80%9f%e7%bd%91%e9%80%9a%e7%94%b5%e4%bf%a1%e4%ba%92%e8%81%94%e6%94%b6%e7%9c%8b%e3%80%8a%e4%b8%91%e5%a5%b3%e6%97%a0%e6%95%8c.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>发现问题，PHP中时间的一些细节</title>
		<link>http://www.sunboyu.cn/2009/02/01/%e5%8f%91%e7%8e%b0%e9%97%ae%e9%a2%98%ef%bc%8cphp%e4%b8%ad%e6%97%b6%e9%97%b4%e7%9a%84%e4%b8%80%e4%ba%9b%e7%bb%86%e8%8a%82.shtml</link>
		<comments>http://www.sunboyu.cn/2009/02/01/%e5%8f%91%e7%8e%b0%e9%97%ae%e9%a2%98%ef%bc%8cphp%e4%b8%ad%e6%97%b6%e9%97%b4%e7%9a%84%e4%b8%80%e4%ba%9b%e7%bb%86%e8%8a%82.shtml#comments</comments>
		<pubDate>Sun, 01 Feb 2009 13:53:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[date]]></category>

		<category><![CDATA[time]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=548</guid>
		<description><![CDATA[php中，时间戳和date取得的时间是不同的。
时间戳是时间段，不受时区影响，无论哪个时区，取得都是格林威治的时间段。
date，是取得的系统时间，也就是加了时区的。
为了保持一致，php的头文件应该首先声明时区。
犯个错误，还得导数据库……
]]></description>
			<content:encoded><![CDATA[<p>php中，时间戳和date取得的时间是不同的。</p>
<p>时间戳是时间段，不受时区影响，无论哪个时区，取得都是格林威治的时间段。</p>
<p>date，是取得的系统时间，也就是加了时区的。</p>
<p>为了保持一致，php的头文件应该首先声明时区。</p>
<p>犯个错误，还得导数据库……</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/02/01/%e5%8f%91%e7%8e%b0%e9%97%ae%e9%a2%98%ef%bc%8cphp%e4%b8%ad%e6%97%b6%e9%97%b4%e7%9a%84%e4%b8%80%e4%ba%9b%e7%bb%86%e8%8a%82.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>Linux时间同步大法</title>
		<link>http://www.sunboyu.cn/2009/02/01/linux%e6%97%b6%e9%97%b4%e5%90%8c%e6%ad%a5%e5%a4%a7%e6%b3%95.shtml</link>
		<comments>http://www.sunboyu.cn/2009/02/01/linux%e6%97%b6%e9%97%b4%e5%90%8c%e6%ad%a5%e5%a4%a7%e6%b3%95.shtml#comments</comments>
		<pubDate>Sun, 01 Feb 2009 04:11:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[linux]]></category>

		<category><![CDATA[rdate]]></category>

		<category><![CDATA[时间同步]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=546</guid>
		<description><![CDATA[linux时间不同步，很郁闷，装了个ntp之类的东西，还是不好使
其实使用rdate就可以，但死活不成功。
又考虑，时间协议也许不是走80端口，查看/etc/service 果然，service iptables stop, 重新运行
rdate -s time.nist.gov
果然同步成功。
本机设置为上海时间，一切OK。
]]></description>
			<content:encoded><![CDATA[<p>linux时间不同步，很郁闷，装了个ntp之类的东西，还是不好使</p>
<p>其实使用rdate就可以，但死活不成功。</p>
<p>又考虑，时间协议也许不是走80端口，查看/etc/service 果然，service iptables stop, 重新运行</p>
<p>rdate -s time.nist.gov</p>
<p>果然同步成功。</p>
<p>本机设置为上海时间，一切OK。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/02/01/linux%e6%97%b6%e9%97%b4%e5%90%8c%e6%ad%a5%e5%a4%a7%e6%b3%95.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>新年新气象</title>
		<link>http://www.sunboyu.cn/2009/01/31/%e6%96%b0%e5%b9%b4%e6%96%b0%e6%b0%94%e8%b1%a1.shtml</link>
		<comments>http://www.sunboyu.cn/2009/01/31/%e6%96%b0%e5%b9%b4%e6%96%b0%e6%b0%94%e8%b1%a1.shtml#comments</comments>
		<pubDate>Sat, 31 Jan 2009 12:40:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<category><![CDATA[诺基亚]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=542</guid>
		<description><![CDATA[折腾了一周，终于回到北京。以前过年是享福，现在是受着罪享福。
早晨6点起床，中午12点就进屋了，还是家近的好。
去年收入不错，犒劳自己，买了个新手机，很牛的手机，诺基亚1200……待机十来天，这是我最喜欢的，因为我懒，经常忘记充电。
上图

]]></description>
			<content:encoded><![CDATA[<p>折腾了一周，终于回到北京。以前过年是享福，现在是受着罪享福。</p>
<p>早晨6点起床，中午12点就进屋了，还是家近的好。</p>
<p>去年收入不错，犒劳自己，买了个新手机，很牛的手机，诺基亚1200……待机十来天，这是我最喜欢的，因为我懒，经常忘记充电。</p>
<p>上图</p>
<p><a href="http://www.sunboyu.cn/upfiles/2009/01/1200.jpg"><img class="aligncenter size-full wp-image-543" title="1200" src="http://www.sunboyu.cn/upfiles/2009/01/1200.jpg" alt="1200" width="500" height="500" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/01/31/%e6%96%b0%e5%b9%b4%e6%96%b0%e6%b0%94%e8%b1%a1.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>乡村歌手</title>
		<link>http://www.sunboyu.cn/2009/01/28/%e4%b9%a1%e6%9d%91%e6%ad%8c%e6%89%8b-2.shtml</link>
		<comments>http://www.sunboyu.cn/2009/01/28/%e4%b9%a1%e6%9d%91%e6%ad%8c%e6%89%8b-2.shtml#comments</comments>
		<pubDate>Wed, 28 Jan 2009 08:29:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[相当拍砖]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=537</guid>
		<description><![CDATA[[media id=2 width=320 height=240]
]]></description>
			<content:encoded><![CDATA[<p>[media id=2 width=320 height=240]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/01/28/%e4%b9%a1%e6%9d%91%e6%ad%8c%e6%89%8b-2.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>乡村歌手</title>
		<link>http://www.sunboyu.cn/2009/01/28/%e4%b9%a1%e6%9d%91%e6%ad%8c%e6%89%8b.shtml</link>
		<comments>http://www.sunboyu.cn/2009/01/28/%e4%b9%a1%e6%9d%91%e6%ad%8c%e6%89%8b.shtml#comments</comments>
		<pubDate>Wed, 28 Jan 2009 02:04:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[相当拍砖]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=535</guid>
		<description><![CDATA[[media id=1 width=320 height=240]
]]></description>
			<content:encoded><![CDATA[<p>[media id=1 width=320 height=240]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/01/28/%e4%b9%a1%e6%9d%91%e6%ad%8c%e6%89%8b.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>山村春晚即将推出</title>
		<link>http://www.sunboyu.cn/2009/01/26/%e5%b1%b1%e6%9d%91%e6%98%a5%e6%99%9a%e5%8d%b3%e5%b0%86%e6%8e%a8%e5%87%ba.shtml</link>
		<comments>http://www.sunboyu.cn/2009/01/26/%e5%b1%b1%e6%9d%91%e6%98%a5%e6%99%9a%e5%8d%b3%e5%b0%86%e6%8e%a8%e5%87%ba.shtml#comments</comments>
		<pubDate>Mon, 26 Jan 2009 08:41:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[相当拍砖]]></category>

		<category><![CDATA[山村]]></category>

		<category><![CDATA[春晚]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=532</guid>
		<description><![CDATA[下午我爹组织了一场纯山村春晚，计划跟CCTV的春晚较劲。
详情轻关注本博客。
]]></description>
			<content:encoded><![CDATA[<p>下午我爹组织了一场纯山村春晚，计划跟CCTV的春晚较劲。</p>
<p>详情轻关注本博客。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/01/26/%e5%b1%b1%e6%9d%91%e6%98%a5%e6%99%9a%e5%8d%b3%e5%b0%86%e6%8e%a8%e5%87%ba.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>老家的新成员</title>
		<link>http://www.sunboyu.cn/2009/01/24/%e8%80%81%e5%ae%b6%e7%9a%84%e6%96%b0%e6%88%90%e5%91%98.shtml</link>
		<comments>http://www.sunboyu.cn/2009/01/24/%e8%80%81%e5%ae%b6%e7%9a%84%e6%96%b0%e6%88%90%e5%91%98.shtml#comments</comments>
		<pubDate>Sat, 24 Jan 2009 06:47:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[相当拍砖]]></category>

		<category><![CDATA[dog]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=530</guid>
		<description><![CDATA[[nggallery id=2]
]]></description>
			<content:encoded><![CDATA[<p>[nggallery id=2]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/01/24/%e8%80%81%e5%ae%b6%e7%9a%84%e6%96%b0%e6%88%90%e5%91%98.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>在家办公，其乐无穷</title>
		<link>http://www.sunboyu.cn/2009/01/23/%e5%9c%a8%e5%ae%b6%e5%8a%9e%e5%85%ac%ef%bc%8c%e5%85%b6%e4%b9%90%e6%97%a0%e7%a9%b7.shtml</link>
		<comments>http://www.sunboyu.cn/2009/01/23/%e5%9c%a8%e5%ae%b6%e5%8a%9e%e5%85%ac%ef%bc%8c%e5%85%b6%e4%b9%90%e6%97%a0%e7%a9%b7.shtml#comments</comments>
		<pubDate>Fri, 23 Jan 2009 02:00:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=521</guid>
		<description><![CDATA[[nggallery id=1]
这个相册插件不错，推广一下
]]></description>
			<content:encoded><![CDATA[<p>[nggallery id=1]</p>
<p>这个相册插件不错，推广一下</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/01/23/%e5%9c%a8%e5%ae%b6%e5%8a%9e%e5%85%ac%ef%bc%8c%e5%85%b6%e4%b9%90%e6%97%a0%e7%a9%b7.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>我们应该信任谁</title>
		<link>http://www.sunboyu.cn/2009/01/22/%e6%88%91%e4%bb%ac%e5%ba%94%e8%af%a5%e4%bf%a1%e4%bb%bb%e8%b0%81.shtml</link>
		<comments>http://www.sunboyu.cn/2009/01/22/%e6%88%91%e4%bb%ac%e5%ba%94%e8%af%a5%e4%bf%a1%e4%bb%bb%e8%b0%81.shtml#comments</comments>
		<pubDate>Thu, 22 Jan 2009 03:03:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[其他]]></category>

		<category><![CDATA[带宽]]></category>

		<category><![CDATA[链路]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=514</guid>
		<description><![CDATA[最近几个服务器频频出事，虽然不是自己的服务器，经验还是值得学习的。
在做高可靠性方案的时候，我们应该信任谁，是个问题。
首先是域名。一般域名都是委托给idc，或者专业做dns的，作为网站的入口，交给他们就等于绝对的信任他们，没有备份方案。如果带有些许的不信任，可以设置备用dns为自己的dns服务器。dns一般没太大的问题，但一旦有问题就是大问题，万网新网好像都发生过dns服务器大规模故障，全国各地大面积瘫痪，不能不说，对域名的信任存在问题。
链路，说到链路，这是个大问题，也许也包含了域名的问题。
从dns，网关，路由，响应，各个节点负载，都需要经过详细测试。
一般销售推销带宽，只是简单让测试ping值，但实际是不科学的，因为在用的时候，我选择的带宽ping值的确很好，但实际应用效果缺不理想，没有那个系统是靠ping值来保障的，域名服务器，网关速度，交换，路由的处理能力都是硬指标。很多服务器ping值好，但数据一流起来可就没那么好了。承诺给你大的带宽，可带宽要局限在一个固定的环境中，无异于局域网应用。
我们需要的是优秀的广域网应用，所以，最好的测试还是把服务架上，实际去跑一阵应用服务，才能最终确定带宽和链路的质量。
中间跳了很多环境，涉及了宽带提供商，运营商，代理，现场技术，用户等很多环节，保证每个环境的通路才是最终的通路。任何一个环节都可能成为瓶颈和以后应用的隐患。
但在中国的网络环境中，我们应该信任谁？
]]></description>
			<content:encoded><![CDATA[<p>最近几个服务器频频出事，虽然不是自己的服务器，经验还是值得学习的。</p>
<p>在做高可靠性方案的时候，我们应该信任谁，是个问题。</p>
<p>首先是域名。一般域名都是委托给idc，或者专业做dns的，作为网站的入口，交给他们就等于绝对的信任他们，没有备份方案。如果带有些许的不信任，可以设置备用dns为自己的dns服务器。dns一般没太大的问题，但一旦有问题就是大问题，万网新网好像都发生过dns服务器大规模故障，全国各地大面积瘫痪，不能不说，对域名的信任存在问题。</p>
<p>链路，说到链路，这是个大问题，也许也包含了域名的问题。</p>
<p>从dns，网关，路由，响应，各个节点负载，都需要经过详细测试。</p>
<p>一般销售推销带宽，只是简单让测试ping值，但实际是不科学的，因为在用的时候，我选择的带宽ping值的确很好，但实际应用效果缺不理想，没有那个系统是靠ping值来保障的，域名服务器，网关速度，交换，路由的处理能力都是硬指标。很多服务器ping值好，但数据一流起来可就没那么好了。承诺给你大的带宽，可带宽要局限在一个固定的环境中，无异于局域网应用。</p>
<p>我们需要的是优秀的广域网应用，所以，最好的测试还是把服务架上，实际去跑一阵应用服务，才能最终确定带宽和链路的质量。</p>
<p>中间跳了很多环境，涉及了宽带提供商，运营商，代理，现场技术，用户等很多环节，保证每个环境的通路才是最终的通路。任何一个环节都可能成为瓶颈和以后应用的隐患。</p>
<p>但在中国的网络环境中，我们应该信任谁？</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/01/22/%e6%88%91%e4%bb%ac%e5%ba%94%e8%af%a5%e4%bf%a1%e4%bb%bb%e8%b0%81.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>sunboyu-amp-fastcgi-suexec-v23-alpha</title>
		<link>http://www.sunboyu.cn/2009/01/21/sunboyu-amp-fastcgi-suexec-v23-alpha.shtml</link>
		<comments>http://www.sunboyu.cn/2009/01/21/sunboyu-amp-fastcgi-suexec-v23-alpha.shtml#comments</comments>
		<pubDate>Wed, 21 Jan 2009 03:10:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[amp]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=516</guid>
		<description><![CDATA[Linux下APACHE MYSQL PHP FCgid Suexec 自动安装脚本V2.3
1、补全了支持的字符集，默认为utf8
sunboyu-amp-fastcgi-suexec-v23-alpha
]]></description>
			<content:encoded><![CDATA[<p>Linux下APACHE MYSQL PHP FCgid Suexec 自动安装脚本V2.3</p>
<p>1、补全了支持的字符集，默认为utf8</p>
<p><a href='http://www.sunboyu.cn/upfiles/2009/01/sunboyu-amp-fastcgi-suexec-v23-alpha.txt'>sunboyu-amp-fastcgi-suexec-v23-alpha</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/01/21/sunboyu-amp-fastcgi-suexec-v23-alpha.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>倒霉的网管</title>
		<link>http://www.sunboyu.cn/2009/01/19/%e5%80%92%e9%9c%89%e7%9a%84%e7%bd%91%e7%ae%a1.shtml</link>
		<comments>http://www.sunboyu.cn/2009/01/19/%e5%80%92%e9%9c%89%e7%9a%84%e7%bd%91%e7%ae%a1.shtml#comments</comments>
		<pubDate>Mon, 19 Jan 2009 12:40:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[故障]]></category>

		<category><![CDATA[网管]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=507</guid>
		<description><![CDATA[ping的通，连不上]]></description>
			<content:encoded><![CDATA[<p>该死的网管，昨天就发现网络不正常，没注意，以为是机房不稳定，可这种状态持续到了今天。话说这状态非常诡异，可以ping通，很快，偶尔也能应用一些服务，httpd，ftp，ssh，但有时候任何服务都中断，只是ping的通。</p>
<p>但是如果ssh一直保持会话，突然中断后，ssh还能顺利跟服务器通讯。</p>
<p>这可难坏了我这个牛叉的系统工程师和一个CCIE级大哥，我又发挥流氓黑客的精神，彻底扫描了服务器端口和一些数据包，发现几个疑点：</p>
<p>1、服务器通讯正常的时候，所有端口的包数据都是正常的，是我自己服务的标志。</p>
<p>2、服务器通讯异常的时候，服务端口有变，并且出现异常数据。</p>
<p>疯狂google后发现，有这么几个可能性：</p>
<p>1、dell的网卡驱动没有装好，会产生MAC地址跳跃（mac地址都是写在芯片里的，汗！）。</p>
<p>2、ip地址被盗用了。</p>
<p>第一条已经排除，下载dell网卡驱动后，重装后也正常。问题依然存在。</p>
<p>第二，我跟那边网管要了个新的ip，一切正常。</p>
<p>比较一下两个服务器的几个协议的头,上边是我的，下边是异常的</p>
<p>1、ftp</p>
<p>我牛叉的Pure-FTPd,mysql动态控制的</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">220---------- 欢迎来到 Pure-FTPd ----------</li>
<li>220-您是第 1 个使用者，最多可达 50 个连接</li>
<li>220-现在本地时间是 15:21。服务器端口： 21。</li>
<li>220-这部主机也欢迎IPv6的连接</li>
<li>220 在 15 分钟内没有活动，您被会断线。</li></ol></div>
<p>啥玩意，还真没见过</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">220 211.99.3.121 pSOSystem FTP server (NTL386/1.0.4) ready.</li></ol></div>
<p>他的其他端口<br />
特征码出来了，CTerminalSocket，google一下原来是作voip电话的服务器，逮着了，回头砸他服务器去！</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">Connect</li>
<li>Remote Command:</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;MCMS VERSION 7.5.0.173&nbsp; &nbsp;Operating System : PSOS</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 19/01/09 15:32:40:590 N</li>
<li>:0000133853 T:0c610000 L:10 S:0585d800 CTerminalSocket</li>
<li>&nbsp;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;****************&nbsp; &nbsp;EXCEPTI</li>
<li>ON&nbsp; *****************</li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/01/19/%e5%80%92%e9%9c%89%e7%9a%84%e7%bd%91%e7%ae%a1.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>累……疯狂的配置</title>
		<link>http://www.sunboyu.cn/2009/01/18/%e7%b4%af%e2%80%a6%e2%80%a6%e7%96%af%e7%8b%82%e7%9a%84%e9%85%8d%e7%bd%ae.shtml</link>
		<comments>http://www.sunboyu.cn/2009/01/18/%e7%b4%af%e2%80%a6%e2%80%a6%e7%96%af%e7%8b%82%e7%9a%84%e9%85%8d%e7%bd%ae.shtml#comments</comments>
		<pubDate>Sun, 18 Jan 2009 14:16:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[centos]]></category>

		<category><![CDATA[dell]]></category>

		<category><![CDATA[优化]]></category>

		<category><![CDATA[精简]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=503</guid>
		<description><![CDATA[Dell1950终于上架了，又一个牛叉的系统，我把CentOS精简到了我能想象到的极致（当然跟gentoo还不能媲美），在AMP(apache,php,mysql)都启动空负载的状态下，内存占用降到了128M以下。
top - 16:54:16 up&#160; 3:42,&#160; 1 user,&#160; load average: 0.00, 0.00, 0.00
Tasks:&#160; 83 total,&#160; &#160;1 running,&#160; 82 sleeping,&#160; &#160;0 stopped,&#160; &#160;0 zombie
Cpu(s):&#160; 0.0% us,&#160; 0.0% sy,&#160; 0.0% ni, 99.9% id,&#160; 0.1% wa,&#160; 0.0% hi,&#160; 0.0% si
Mem:&#160; &#160;4042344k total,&#160; &#160;125040k used,&#160; 3917304k free,&#160; &#160; 11136k buffers
Swap:&#160; 6094840k total,&#160; &#160; &#160; &#160; 0k used,&#160; 6094840k free,&#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>Dell1950终于上架了，又一个牛叉的系统，我把CentOS精简到了我能想象到的极致（当然跟gentoo还不能媲美），在AMP(apache,php,mysql)都启动空负载的状态下，内存占用降到了128M以下。</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">top - 16:54:16 up&nbsp; 3:42,&nbsp; 1 user,&nbsp; load average: 0.00, 0.00, 0.00</li>
<li>Tasks:&nbsp; 83 total,&nbsp; &nbsp;1 running,&nbsp; 82 sleeping,&nbsp; &nbsp;0 stopped,&nbsp; &nbsp;0 zombie</li>
<li>Cpu(s):&nbsp; 0.0% us,&nbsp; 0.0% sy,&nbsp; 0.0% ni, 99.9% id,&nbsp; 0.1% wa,&nbsp; 0.0% hi,&nbsp; 0.0% si</li>
<li>Mem:&nbsp; &nbsp;4042344k total,&nbsp; &nbsp;125040k used,&nbsp; 3917304k free,&nbsp; &nbsp; 11136k buffers</li>
<li>Swap:&nbsp; 6094840k total,&nbsp; &nbsp; &nbsp; &nbsp; 0k used,&nbsp; 6094840k free,&nbsp; &nbsp; 47004k cached</li></ol></div>
<p>一些内核级补丁没有打，估计了解这类漏洞入侵的人，我暂时也招架不住，现在只是为了服务器的稳定。apache＋php＋mysql＋ftp＋ssh之类的账户权限作了详细的统筹，对外服务权限尤其作了限制，尽量达到最优。PHP是用developer模式进行编译安装，没有考虑实际应用，只是把功能尽量多的增加（这些操作会稍微影响性能，但相对128M，是可以忽略的），但很重要的opcode缓冲加上了，Centos用最小安装，以来的一些组件和库分别安装，决不多余。尽量在硬盘基础占用上也降至最小。硬盘分区使用了LVM，偷懒了，虽然这样会有很大的问题，但手工分区还不是很熟悉，而且在管理存储上我功力还不够，以后进行改善。</p>
<p>硬盘情况如下：感觉还是大了点，回头清理一下缓存。</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">[root@localhost ~]# df</li>
<li>Filesystem&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;1K-blocks&nbsp; &nbsp; &nbsp; Used Available Use% Mounted on</li>
<li>/dev/mapper/VolGroup00-LogVol00</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 134980848&nbsp; &nbsp;1214972 126909172&nbsp; &nbsp;1% /</li>
<li>/dev/sda1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;101086&nbsp; &nbsp; &nbsp;14864&nbsp; &nbsp; &nbsp;81003&nbsp; 16% /boot</li>
<li>none&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;2021172&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0&nbsp; &nbsp;2021172&nbsp; &nbsp;0% /dev/shm</li></ol></div>
<p>很成功的系统，但管理软件我一直没功夫去写，待写完后就是一个完整的初始系统＋管理套件</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/01/18/%e7%b4%af%e2%80%a6%e2%80%a6%e7%96%af%e7%8b%82%e7%9a%84%e9%85%8d%e7%bd%ae.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>Dell1950安装Centos4.7 ServerCD</title>
		<link>http://www.sunboyu.cn/2009/01/18/dell1950%e5%ae%89%e8%a3%85centos47-servercd.shtml</link>
		<comments>http://www.sunboyu.cn/2009/01/18/dell1950%e5%ae%89%e8%a3%85centos47-servercd.shtml#comments</comments>
		<pubDate>Sun, 18 Jan 2009 03:11:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[centos]]></category>

		<category><![CDATA[centos4.7]]></category>

		<category><![CDATA[dell1950]]></category>

		<category><![CDATA[servercd]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=501</guid>
		<description><![CDATA[朋友弄来一台Dell1950，至强E5405，单颗CPU4核，4G内存，一块136Gsas硬盘，因原来的双CPU的机器利用率太差，好说歹说才降级改成单CPU。
原以为DELL对linux支持很好，可我的centos4.7servercd 并没有直接就能装上，估计是不认sas硬盘，没有继承sas硬盘的驱动，翻出机器自带的引导光盘，默认引导一遍，把驱动拷贝到硬盘上，可所支持的操作系统只有windows和redhat的as系统，我的CentosCD并不认，逼我重启，再用CentosCD引导，顺利安装。
这机器就是比我本本上的虚拟机快－－&#124;&#124;几乎是闪装系统，闪编译，而最大的瓶颈却是我家里1M的adsl带宽，因为我是从我 sunboyu.cn 的源里下载软件，其实当时应该配置成局域网源的，忘了，不过也就这样了，速度飞快，而且我那个脚本基本无人职守，跑上，我就喝茶去了……
顺便也写了本篇日志
]]></description>
			<content:encoded><![CDATA[<p>朋友弄来一台Dell1950，至强E5405，单颗CPU4核，4G内存，一块136Gsas硬盘，因原来的双CPU的机器利用率太差，好说歹说才降级改成单CPU。</p>
<p>原以为DELL对linux支持很好，可我的centos4.7servercd 并没有直接就能装上，估计是不认sas硬盘，没有继承sas硬盘的驱动，翻出机器自带的引导光盘，默认引导一遍，把驱动拷贝到硬盘上，可所支持的操作系统只有windows和redhat的as系统，我的CentosCD并不认，逼我重启，再用CentosCD引导，顺利安装。</p>
<p>这机器就是比我本本上的虚拟机快－－||几乎是闪装系统，闪编译，而最大的瓶颈却是我家里1M的adsl带宽，因为我是从我 sunboyu.cn 的源里下载软件，其实当时应该配置成局域网源的，忘了，不过也就这样了，速度飞快，而且我那个脚本基本无人职守，跑上，我就喝茶去了……</p>
<p>顺便也写了本篇日志</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/01/18/dell1950%e5%ae%89%e8%a3%85centos47-servercd.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>gentoo初体验</title>
		<link>http://www.sunboyu.cn/2009/01/17/gentoo%e5%88%9d%e4%bd%93%e9%aa%8c.shtml</link>
		<comments>http://www.sunboyu.cn/2009/01/17/gentoo%e5%88%9d%e4%bd%93%e9%aa%8c.shtml#comments</comments>
		<pubDate>Sat, 17 Jan 2009 06:37:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[GenToo]]></category>

		<category><![CDATA[gentoo]]></category>

		<category><![CDATA[安装]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=495</guid>
		<description><![CDATA[使用的是 install-x86-minimal-2008.0.iso 这张盘，在vmware6中进行安装。
初次安装异常辛苦，想起了刚买电脑装98那架势。自己格盘，配置文件系统，然后安装，然后％……※×……×（※（
反正很有乐趣。
底下是初次使用常用命令，打包收集一下
passwd  #修改root密码
net-setup eth0   #修改网卡信息
/etc/init.d/sshd start  #启动sshd服务  底下就可以用ssh登录了
磁盘分区，我习惯用lvm，虽说安全和管理上是偷懒的行为，不过方便么。
fdisk不好用，我用cfdisk，很OK。
创建文件系统的命令



文件系统
创建命令


ext2
mke2fs


ext3
mke2fs -j


reiserfs
mkreiserfs


xfs
mkfs.xfs


jfs
mkfs.jfs



创建swap分区  mkswap /dev/hda2
激活swap分区  swapon /dev/hda2
然后挂载文件，具体看手册  http://gentoo.linuxsir.org/doc/cn/handbook/hb_part1_chap5.html
以后按照手册，我基本建立起了这个系统，而且portage成功。
]]></description>
			<content:encoded><![CDATA[<p>使用的是 install-x86-minimal-2008.0.iso 这张盘，在vmware6中进行安装。</p>
<p>初次安装异常辛苦，想起了刚买电脑装98那架势。自己格盘，配置文件系统，然后安装，然后％……※×……×（※（</p>
<p>反正很有乐趣。</p>
<p>底下是初次使用常用命令，打包收集一下<br />
passwd  #修改root密码<br />
net-setup eth0   #修改网卡信息<br />
/etc/init.d/sshd start  #启动sshd服务  底下就可以用ssh登录了</p>
<p>磁盘分区，我习惯用lvm，虽说安全和管理上是偷懒的行为，不过方便么。<br />
fdisk不好用，我用cfdisk，很OK。</p>
<p>创建文件系统的命令</p>
<table border="0">
<tbody>
<tr>
<td bgcolor="#7a5ada"><strong>文件系统</strong></td>
<td bgcolor="#7a5ada"><strong>创建命令</strong></td>
</tr>
<tr>
<td bgcolor="#ddddff">ext2</td>
<td bgcolor="#ddddff"><span class="code">mke2fs</span></td>
</tr>
<tr>
<td bgcolor="#ddddff">ext3</td>
<td bgcolor="#ddddff"><span class="code">mke2fs -j</span></td>
</tr>
<tr>
<td bgcolor="#ddddff">reiserfs</td>
<td bgcolor="#ddddff"><span class="code">mkreiserfs</span></td>
</tr>
<tr>
<td bgcolor="#ddddff">xfs</td>
<td bgcolor="#ddddff"><span class="code">mkfs.xfs</span></td>
</tr>
<tr>
<td bgcolor="#ddddff">jfs</td>
<td bgcolor="#ddddff"><span class="code">mkfs.jfs</span></td>
</tr>
</tbody>
</table>
<p>创建swap分区  mkswap /dev/hda2</p>
<p>激活swap分区  swapon /dev/hda2</p>
<p>然后挂载文件，具体看手册  http://gentoo.linuxsir.org/doc/cn/handbook/hb_part1_chap5.html</p>
<p>以后按照手册，我基本建立起了这个系统，而且portage成功。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/01/17/gentoo%e5%88%9d%e4%bd%93%e9%aa%8c.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>明确了方向,Gentoo,Python</title>
		<link>http://www.sunboyu.cn/2009/01/17/%e6%98%8e%e7%a1%ae%e4%ba%86%e6%96%b9%e5%90%91gentoopython.shtml</link>
		<comments>http://www.sunboyu.cn/2009/01/17/%e6%98%8e%e7%a1%ae%e4%ba%86%e6%96%b9%e5%90%91gentoopython.shtml#comments</comments>
		<pubDate>Fri, 16 Jan 2009 16:03:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[感悟]]></category>

		<category><![CDATA[gentoo]]></category>

		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=493</guid>
		<description><![CDATA[晚上收拾东西，翻出了很多的Linux发行版，Ubuntu，SuseLinux，红旗，Fedora等。不过我最终还是留下了Centos的几个版本。
Fedora5是我的第一个实际应用的发行版，因为公司当时从win迁移linux平台，红帽是我曾经听说过的系统，简单实践过，就硬上了，好在有yum这东西，很端的时间把服务都配起来，还真跑起来了。
不过Fedora在DELL1950的机器上有个硬伤，就是对双网卡的支持不好，只能支持一块网卡，后来迫不得已，找到了Centos，果然很爽，就一直在用了。
以后，基本一直在研究和优化linux下的Web相关服务。不断优化，改进，定制。
终于发现在发行版的基础上优化和精简，逐渐有了障碍，我需要研究linux的各种服务的原理，与其去分析每个服务，不如从零配置一个服务。两个方案，LFS和gentoo。
LFS似乎是个很神秘的东西，其实现在的资料很全，而且很多高手给出了详细的流程。但我选择了gentoo，因为gentoo是完全根据用户定制进行安装，是在一个稳定的基础上进行定制，定制的产品也许稳定性和效率会很高。而LFS，如果我对linux的理解不是太深，也许作出来的版本也是不能进行生产的，只能算个实验室产品。
因此，本着劳以致用的原则，我开始对gentoo系统的研究，另外继续发展熟悉的CentOS4.7Server版本用作生产。
希望下年我能完全切换到gentoo环境＋python开发。
注：转移到python，是因为最近我被一个PHP进程效率问题折腾的焦头烂额，而在linux上实现多个php进程调度的困难和效率的损失让我彻底对PHP失去了信心，因为PHP就是一个面向Web的开发语言，用迷信崇拜的思想往其他领域迁移实在是难受，因此用python去解决多进程的问题再好不好，python的解释型语言和面向对象特性跟PHP很是相似，但相关的类库却接近于底层，又没有c的完全面向底层。python也许又是我下一个迷信的东西。
]]></description>
			<content:encoded><![CDATA[<p>晚上收拾东西，翻出了很多的Linux发行版，Ubuntu，SuseLinux，红旗，Fedora等。不过我最终还是留下了Centos的几个版本。</p>
<p>Fedora5是我的第一个实际应用的发行版，因为公司当时从win迁移linux平台，红帽是我曾经听说过的系统，简单实践过，就硬上了，好在有yum这东西，很端的时间把服务都配起来，还真跑起来了。</p>
<p>不过Fedora在DELL1950的机器上有个硬伤，就是对双网卡的支持不好，只能支持一块网卡，后来迫不得已，找到了Centos，果然很爽，就一直在用了。</p>
<p>以后，基本一直在研究和优化linux下的Web相关服务。不断优化，改进，定制。</p>
<p>终于发现在发行版的基础上优化和精简，逐渐有了障碍，我需要研究linux的各种服务的原理，与其去分析每个服务，不如从零配置一个服务。两个方案，LFS和gentoo。</p>
<p>LFS似乎是个很神秘的东西，其实现在的资料很全，而且很多高手给出了详细的流程。但我选择了gentoo，因为gentoo是完全根据用户定制进行安装，是在一个稳定的基础上进行定制，定制的产品也许稳定性和效率会很高。而LFS，如果我对linux的理解不是太深，也许作出来的版本也是不能进行生产的，只能算个实验室产品。</p>
<p>因此，本着劳以致用的原则，我开始对gentoo系统的研究，另外继续发展熟悉的CentOS4.7Server版本用作生产。</p>
<p>希望下年我能完全切换到gentoo环境＋python开发。</p>
<p>注：转移到python，是因为最近我被一个PHP进程效率问题折腾的焦头烂额，而在linux上实现多个php进程调度的困难和效率的损失让我彻底对PHP失去了信心，因为PHP就是一个面向Web的开发语言，用迷信崇拜的思想往其他领域迁移实在是难受，因此用python去解决多进程的问题再好不好，python的解释型语言和面向对象特性跟PHP很是相似，但相关的类库却接近于底层，又没有c的完全面向底层。python也许又是我下一个迷信的东西。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/01/17/%e6%98%8e%e7%a1%ae%e4%ba%86%e6%96%b9%e5%90%91gentoopython.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>北方网的编辑，差点笑喷</title>
		<link>http://www.sunboyu.cn/2009/01/16/%e5%8c%97%e6%96%b9%e7%bd%91%e7%9a%84%e7%bc%96%e8%be%91%ef%bc%8c%e5%b7%ae%e7%82%b9%e7%ac%91%e5%96%b7.shtml</link>
		<comments>http://www.sunboyu.cn/2009/01/16/%e5%8c%97%e6%96%b9%e7%bd%91%e7%9a%84%e7%bc%96%e8%be%91%ef%bc%8c%e5%b7%ae%e7%82%b9%e7%ac%91%e5%96%b7.shtml#comments</comments>
		<pubDate>Fri, 16 Jan 2009 01:15:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=490</guid>
		<description><![CDATA[在本场比赛赛前，北方网体育频道在经过强烈的思想斗争和频道内部激烈的辩论后，决定为尚在关心国足的球迷文字直播本场比赛。但最终结果证明—— 我们的善意行为却成为了给广大中国球迷添堵的帮凶。鉴于此，北方网体育频道主页今日将不再对国足消息进行体现。如需要浏览相关消息，请在您的意志足够坚强的情况下，查看其他网站消息。]]></description>
			<content:encoded><![CDATA[<p>国足消息请浏览其他网站 网媒的忍耐也是有限的</p>
<p><img src="http://www.sunboyu.cn/upfiles/2009/01/e69caae591bde5908d-1-300x280.png" alt="e69caae591bde5908d-1" title="e69caae591bde5908d-1" width="300" height="280" class="aligncenter size-medium wp-image-491" /></p>
<p>北方网消息(记者刘颂)：1月15日消息，在北京时间昨天晚上进行的2011年亚洲杯预赛小组赛D组的一场比赛中，中国国家男子足球队2:3负于叙利亚队。</p>
<p>在本场比赛赛前，北方网体育频道在经过强烈的思想斗争和频道内部激烈的辩论后，决定为尚在关心国足的球迷文字直播本场比赛。但最终结果证明—— 我们的善意行为却成为了给广大中国球迷添堵的帮凶。鉴于此，北方网体育频道主页今日将不再对国足消息进行体现。如需要浏览相关消息，请在您的意志足够坚强的情况下，查看其他网站消息。</p>
<p>在此，特向昨晚通过北方网体育频道文字直播查看国足消息的网友表示歉意，并对本频道进行文字直播国足消息的记者表示同情。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/01/16/%e5%8c%97%e6%96%b9%e7%bd%91%e7%9a%84%e7%bc%96%e8%be%91%ef%bc%8c%e5%b7%ae%e7%82%b9%e7%ac%91%e5%96%b7.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>服务器性能负载记录工具</title>
		<link>http://www.sunboyu.cn/2009/01/14/%e6%9c%8d%e5%8a%a1%e5%99%a8%e6%80%a7%e8%83%bd%e8%b4%9f%e8%bd%bd%e8%ae%b0%e5%bd%95%e5%b7%a5%e5%85%b7.shtml</link>
		<comments>http://www.sunboyu.cn/2009/01/14/%e6%9c%8d%e5%8a%a1%e5%99%a8%e6%80%a7%e8%83%bd%e8%b4%9f%e8%bd%bd%e8%ae%b0%e5%bd%95%e5%b7%a5%e5%85%b7.shtml#comments</comments>
		<pubDate>Wed, 14 Jan 2009 09:15:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[linux]]></category>

		<category><![CDATA[工具]]></category>

		<category><![CDATA[日志]]></category>

		<category><![CDATA[负载]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=486</guid>
		<description><![CDATA[服务器突然发生了崩溃，老板开始找我了。
找了半天居然没找到问题在哪里，一咬牙，写了个性能和负载的记录工具，再出事我可有记录了－,－&#124;&#124;
备注：只能在linux下用。
&#60; ?php
date_default_timezone_set('Asia/Shanghai');
define('SLEEPTIME',10);&#160; &#160; &#160; &#160;//10秒记录一次
$memfile&#160; = &#34;/proc/meminfo&#34;;
$loadfile = &#34;/proc/loadavg&#34;;
$logfile&#160; = sprintf(&#34;/var/www/html/log/%s.log&#34;,date('Y-m-d'));
while(1)
{
	$log = getload();
	$log .= getmem();
	$log .= mymem();
	$log .= &#34;\n\r&#34;.date(&#34;Y-m-d H:i:s&#34;);
	$log .= &#34;\n\r\n\r&#34;;
	$handle = fopen($logfile,'a');
	fwrite($handle,$log);
	fclose($handle);
	sleep(SLEEPTIME);
}
&#160;
function getload()&#160; &#160; &#160; //获得负载
{
	global $loadfile;
	return file_get_contents($loadfile);
}
function getmem()&#160; &#160; &#160; //获得内存占用
{
	global $memfile;
	$mem = file($memfile);
	return $mem[0];
}
function mymem()&#160; &#160; &#160; &#160;//程序本身内存占用
{
	$pid = getmypid();
	exec(&#34;ps -eo%mem,rss,pid &#124; grep $pid&#34;, $output);
&#160;&#160; &#160; &#160; &#160;$output = explode(&#34; &#34;, [...]]]></description>
			<content:encoded><![CDATA[<p>服务器突然发生了崩溃，老板开始找我了。</p>
<p>找了半天居然没找到问题在哪里，一咬牙，写了个性能和负载的记录工具，再出事我可有记录了－,－||</p>
<p>备注：只能在linux下用。</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">&lt; ?php</li>
<li>date_default_timezone_set('Asia/Shanghai');</li>
<li>define('SLEEPTIME',10);&nbsp; &nbsp; &nbsp; &nbsp;//10秒记录一次</li>
<li>$memfile&nbsp; = &quot;/proc/meminfo&quot;;</li>
<li>$loadfile = &quot;/proc/loadavg&quot;;</li>
<li>$logfile&nbsp; = sprintf(&quot;/var/www/html/log/%s.log&quot;,date('Y-m-d'));</li>
<li>while(1)</li>
<li>{</li>
<li>	$log = getload();</li>
<li>	$log .= getmem();</li>
<li>	$log .= mymem();</li>
<li>	$log .= &quot;\n\r&quot;.date(&quot;Y-m-d H:i:s&quot;);</li>
<li>	$log .= &quot;\n\r\n\r&quot;;</li>
<li>	$handle = fopen($logfile,'a');</li>
<li>	fwrite($handle,$log);</li>
<li>	fclose($handle);</li>
<li>	sleep(SLEEPTIME);</li>
<li>}</li>
<li>&nbsp;</li>
<li>function getload()&nbsp; &nbsp; &nbsp; //获得负载</li>
<li>{</li>
<li>	global $loadfile;</li>
<li>	return file_get_contents($loadfile);</li>
<li>}</li>
<li>function getmem()&nbsp; &nbsp; &nbsp; //获得内存占用</li>
<li>{</li>
<li>	global $memfile;</li>
<li>	$mem = file($memfile);</li>
<li>	return $mem[0];</li>
<li>}</li>
<li>function mymem()&nbsp; &nbsp; &nbsp; &nbsp;//程序本身内存占用</li>
<li>{</li>
<li>	$pid = getmypid();</li>
<li>	exec(&quot;ps -eo%mem,rss,pid | grep $pid&quot;, $output);</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;$output = explode(&quot; &quot;, $output[0]);</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return $output[1] * 1024;</li>
<li>}</li>
<li>?&gt;</li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/01/14/%e6%9c%8d%e5%8a%a1%e5%99%a8%e6%80%a7%e8%83%bd%e8%b4%9f%e8%bd%bd%e8%ae%b0%e5%bd%95%e5%b7%a5%e5%85%b7.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>《狼牙》中的《神秘园》</title>
		<link>http://www.sunboyu.cn/2009/01/13/%e3%80%8a%e7%8b%bc%e7%89%99%e3%80%8b%e4%b8%ad%e7%9a%84%e3%80%8a%e7%a5%9e%e7%a7%98%e5%9b%ad%e3%80%8b.shtml</link>
		<comments>http://www.sunboyu.cn/2009/01/13/%e3%80%8a%e7%8b%bc%e7%89%99%e3%80%8b%e4%b8%ad%e7%9a%84%e3%80%8a%e7%a5%9e%e7%a7%98%e5%9b%ad%e3%80%8b.shtml#comments</comments>
		<pubDate>Tue, 13 Jan 2009 15:48:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[相当拍砖]]></category>

		<category><![CDATA[狼牙]]></category>

		<category><![CDATA[神秘园]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=477</guid>
		<description><![CDATA[看了狼牙，钟情于吴京儿女情长，不过在后边雨中打斗的场面后，来了一场一场诡异的音乐：京胡版爱尔兰风情音乐《神秘园》。
听得我是浑身鸡皮疙瘩，那么惨烈感人的场面无论如何也不能跟闲情雅致的神秘园系列联系在一起。
估计导演以前常排浪漫肥皂剧……
查看全文收听


]]></description>
			<content:encoded><![CDATA[<p>看了狼牙，钟情于吴京儿女情长，不过在后边雨中打斗的场面后，来了一场一场诡异的音乐：京胡版爱尔兰风情音乐《神秘园》。</p>
<p>听得我是浑身鸡皮疙瘩，那么惨烈感人的场面无论如何也不能跟闲情雅致的神秘园系列联系在一起。</p>
<p>估计导演以前常排浪漫肥皂剧……</p>
<p>查看全文收听<br />
<span id="more-477"></span></p>
<p><object classid="clsid:6bf52a52-394a-11d3-b153-00c04f79faa6" width="500" height="50" codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701"><param name="enabled" value="true" /><param name="url" value="http://www.shooter.net.cn/mp3/Nocturne.mp3" /><param name="url" value="http://www.shooter.net.cn/mp3/Nocturne.mp3" /><embed type="application/x-mplayer2" width="500" height="50" src="http://www.shooter.net.cn/mp3/Nocturne.mp3" url="http://www.shooter.net.cn/mp3/Nocturne.mp3" enabled="true"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/01/13/%e3%80%8a%e7%8b%bc%e7%89%99%e3%80%8b%e4%b8%ad%e7%9a%84%e3%80%8a%e7%a5%9e%e7%a7%98%e5%9b%ad%e3%80%8b.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>程序猿的洁癖和强迫症</title>
		<link>http://www.sunboyu.cn/2009/01/12/%e7%a8%8b%e5%ba%8f%e7%8c%bf%e7%9a%84%e6%b4%81%e7%99%96%e5%92%8c%e5%bc%ba%e8%bf%ab%e7%97%87.shtml</link>
		<comments>http://www.sunboyu.cn/2009/01/12/%e7%a8%8b%e5%ba%8f%e7%8c%bf%e7%9a%84%e6%b4%81%e7%99%96%e5%92%8c%e5%bc%ba%e8%bf%ab%e7%97%87.shtml#comments</comments>
		<pubDate>Mon, 12 Jan 2009 13:18:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<category><![CDATA[强迫症]]></category>

		<category><![CDATA[洁癖]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=475</guid>
		<description><![CDATA[突然发现自己有严重的洁癖和强迫症：
系统开机必须清理垃圾，有一个临时的文件，我就感觉机器很慢，赶紧清理，不愿意让别人看见这个文件，否则会怀疑我机器的性能和人品。
绝对不多安装一个软件和插件，必须的软件装完，如果长时间不用，还会卸载，并且用多款系统清理工具进行清理。
XP一律用最简单的风格，背景都不能用太大的文件。
每个月要重装一次，而且要破解，升级，优化，打补丁，并且清理一切冗余的文件。
磁盘整理是必须的，杀毒是必须的，我的机器没有装一个插件，软件大都弄成绿色版。
写代码必须用svn，防治出错。
代码单词严格遵守大小写规则和英文词语习惯。
能优化必须优化，否则熬夜修改。
Linux一律用最小安装，用什么装什么，不留冗余文件，所有安装的软件有统一的格式和管理，并保留shell和文档笔记。
妄想制作一个Linux发行版。
笔记本经常清理，带出去见客户要一尘不染，临走前调试系统，使其飞快。
想打死那些昧良心写代码的人。
服务器负载降到最低，不断给别人卸载软件，减少进程。
总结：职业病，严重心理障碍
目标：大局为重
]]></description>
			<content:encoded><![CDATA[<p>突然发现自己有严重的洁癖和强迫症：</p>
<p>系统开机必须清理垃圾，有一个临时的文件，我就感觉机器很慢，赶紧清理，不愿意让别人看见这个文件，否则会怀疑我机器的性能和人品。</p>
<p>绝对不多安装一个软件和插件，必须的软件装完，如果长时间不用，还会卸载，并且用多款系统清理工具进行清理。</p>
<p>XP一律用最简单的风格，背景都不能用太大的文件。</p>
<p>每个月要重装一次，而且要破解，升级，优化，打补丁，并且清理一切冗余的文件。</p>
<p>磁盘整理是必须的，杀毒是必须的，我的机器没有装一个插件，软件大都弄成绿色版。</p>
<p>写代码必须用svn，防治出错。</p>
<p>代码单词严格遵守大小写规则和英文词语习惯。</p>
<p>能优化必须优化，否则熬夜修改。</p>
<p>Linux一律用最小安装，用什么装什么，不留冗余文件，所有安装的软件有统一的格式和管理，并保留shell和文档笔记。</p>
<p>妄想制作一个Linux发行版。</p>
<p>笔记本经常清理，带出去见客户要一尘不染，临走前调试系统，使其飞快。</p>
<p>想打死那些昧良心写代码的人。</p>
<p>服务器负载降到最低，不断给别人卸载软件，减少进程。</p>
<p>总结：职业病，严重心理障碍<br />
目标：大局为重</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/01/12/%e7%a8%8b%e5%ba%8f%e7%8c%bf%e7%9a%84%e6%b4%81%e7%99%96%e5%92%8c%e5%bc%ba%e8%bf%ab%e7%97%87.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>PHP开发中，框架(frame)、脚手架(scaffolding)、应用资源包(application package)详解</title>
		<link>http://www.sunboyu.cn/2009/01/11/php%e5%bc%80%e5%8f%91%e4%b8%ad%ef%bc%8c%e6%a1%86%e6%9e%b6frame%e3%80%81%e8%84%9a%e6%89%8b%e6%9e%b6scaffolding%e3%80%81%e5%ba%94%e7%94%a8%e8%b5%84%e6%ba%90%e5%8c%85application-package%e8%af%a6.shtml</link>
		<comments>http://www.sunboyu.cn/2009/01/11/php%e5%bc%80%e5%8f%91%e4%b8%ad%ef%bc%8c%e6%a1%86%e6%9e%b6frame%e3%80%81%e8%84%9a%e6%89%8b%e6%9e%b6scaffolding%e3%80%81%e5%ba%94%e7%94%a8%e8%b5%84%e6%ba%90%e5%8c%85application-package%e8%af%a6.shtml#comments</comments>
		<pubDate>Sun, 11 Jan 2009 10:34:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[应用资源包]]></category>

		<category><![CDATA[框架]]></category>

		<category><![CDATA[脚手架]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=473</guid>
		<description><![CDATA[什么是框架：字典中框架指架构，骨架结构，框子，底座等，从字面意思，不难理解，框架指一个基础，而在程序开发中，框架指基于底层语言而逐步向上层应用进行的一些功能实现。其并没有实现具体的功能，而是简化了开发过程，任何模块中常用的功能都被框架进行封装或者扩充，给开发人员以最简的操作实现。
常用的PHP框架：Cakephp Flexphp Thinkphp
什么是脚手架：脚手架通常使用在框架的数据抽象层，数据脚手架可以很直观得给开发者或者使用者数据结构的表现。脚手架同样可以表现在一些具体应用上。但脚手架的功能只是把数据或者应用的最终结果能用简单的方式表现，但并没有达到最终的应用效果，常用在建模或结构设计的初期。脚手架的优势就是给最终用户一个直观的产品但中间并没有经过大量的开发，以减少需求变更所带来的反复开发。
常用脚手架：CI框架中数据脚手架
什么是应用资源包：应用资源包就是具体的应用了，比如bbs，blog，用户管理，资源管理等一些具体的应用。应用资源包侧重完成了一个完整的功能，而面向开发的应用资源包又提高了可迁移性，使一些项目的功能模块直接修改应用资源包的接口而达到快速开发。
常用案例：xoops中功能模块包。
]]></description>
			<content:encoded><![CDATA[<p>什么是框架：字典中框架指架构，骨架结构，框子，底座等，从字面意思，不难理解，框架指一个基础，而在程序开发中，框架指基于底层语言而逐步向上层应用进行的一些功能实现。其并没有实现具体的功能，而是简化了开发过程，任何模块中常用的功能都被框架进行封装或者扩充，给开发人员以最简的操作实现。</p>
<p>常用的PHP框架：Cakephp Flexphp Thinkphp</p>
<p>什么是脚手架：脚手架通常使用在框架的数据抽象层，数据脚手架可以很直观得给开发者或者使用者数据结构的表现。脚手架同样可以表现在一些具体应用上。但脚手架的功能只是把数据或者应用的最终结果能用简单的方式表现，但并没有达到最终的应用效果，常用在建模或结构设计的初期。脚手架的优势就是给最终用户一个直观的产品但中间并没有经过大量的开发，以减少需求变更所带来的反复开发。</p>
<p>常用脚手架：CI框架中数据脚手架</p>
<p>什么是应用资源包：应用资源包就是具体的应用了，比如bbs，blog，用户管理，资源管理等一些具体的应用。应用资源包侧重完成了一个完整的功能，而面向开发的应用资源包又提高了可迁移性，使一些项目的功能模块直接修改应用资源包的接口而达到快速开发。</p>
<p>常用案例：xoops中功能模块包。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/01/11/php%e5%bc%80%e5%8f%91%e4%b8%ad%ef%bc%8c%e6%a1%86%e6%9e%b6frame%e3%80%81%e8%84%9a%e6%89%8b%e6%9e%b6scaffolding%e3%80%81%e5%ba%94%e7%94%a8%e8%b5%84%e6%ba%90%e5%8c%85application-package%e8%af%a6.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>吃了一次传说中的“卤煮火烧”</title>
		<link>http://www.sunboyu.cn/2009/01/10/%e5%90%83%e4%ba%86%e4%b8%80%e6%ac%a1%e4%bc%a0%e8%af%b4%e4%b8%ad%e7%9a%84%e2%80%9c%e5%8d%a4%e7%85%ae%e7%81%ab%e7%83%a7%e2%80%9d.shtml</link>
		<comments>http://www.sunboyu.cn/2009/01/10/%e5%90%83%e4%ba%86%e4%b8%80%e6%ac%a1%e4%bc%a0%e8%af%b4%e4%b8%ad%e7%9a%84%e2%80%9c%e5%8d%a4%e7%85%ae%e7%81%ab%e7%83%a7%e2%80%9d.shtml#comments</comments>
		<pubDate>Sat, 10 Jan 2009 15:24:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<category><![CDATA[卤煮火烧]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=468</guid>
		<description><![CDATA[感谢上帝赐给我的卤煮火烧~~~~~~~~~~~~~~~~~~~~~~~~~哪孙子给我端走了！
这也是郭德纲德一个一句经典语录了。
下午下班去审美理发，出来，到一个街边小店叫了一碗卤煮火烧，还是大碗。
之前听别人说老北京人吃炒肝，卤煮，豆汁，外乡人都吃不惯，待卤煮刚上来的时候，看了一下，应该是下水肉汤里炖的豆腐泡和死面火烧。
我没有感谢上帝，就直接开吃，刚吃几块烧饼和豆腐，还没什么感觉，等肥肠下肚，才感觉油腥劲上来，不过我还是很能吃肉。吃到一半，突然感觉半饱，看来这东西油大，顶饱。
最香是吃到最后，只剩下半碗汤的时候，尝试喝汤。待汤将尽的时候，才感觉肉汤的美味，直喝个底朝天。
感谢上帝赐给我的卤煮火烧~~~~~~~~~~~~~~~~~~~~~~~~~大爷我付钱走了！
]]></description>
			<content:encoded><![CDATA[<p>感谢上帝赐给我的卤煮火烧~~~~~~~~~~~~~~~~~~~~~~~~~哪孙子给我端走了！</p>
<p>这也是郭德纲德一个一句经典语录了。</p>
<p>下午下班去审美理发，出来，到一个街边小店叫了一碗卤煮火烧，还是大碗。</p>
<p>之前听别人说老北京人吃炒肝，卤煮，豆汁，外乡人都吃不惯，待卤煮刚上来的时候，看了一下，应该是下水肉汤里炖的豆腐泡和死面火烧。</p>
<p>我没有感谢上帝，就直接开吃，刚吃几块烧饼和豆腐，还没什么感觉，等肥肠下肚，才感觉油腥劲上来，不过我还是很能吃肉。吃到一半，突然感觉半饱，看来这东西油大，顶饱。</p>
<p>最香是吃到最后，只剩下半碗汤的时候，尝试喝汤。待汤将尽的时候，才感觉肉汤的美味，直喝个底朝天。</p>
<p>感谢上帝赐给我的卤煮火烧~~~~~~~~~~~~~~~~~~~~~~~~~大爷我付钱走了！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/01/10/%e5%90%83%e4%ba%86%e4%b8%80%e6%ac%a1%e4%bc%a0%e8%af%b4%e4%b8%ad%e7%9a%84%e2%80%9c%e5%8d%a4%e7%85%ae%e7%81%ab%e7%83%a7%e2%80%9d.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>Centos4初始化的一些脚本</title>
		<link>http://www.sunboyu.cn/2009/01/07/centos4%e5%88%9d%e5%a7%8b%e5%8c%96%e7%9a%84%e4%b8%80%e4%ba%9b%e8%84%9a%e6%9c%ac.shtml</link>
		<comments>http://www.sunboyu.cn/2009/01/07/centos4%e5%88%9d%e5%a7%8b%e5%8c%96%e7%9a%84%e4%b8%80%e4%ba%9b%e8%84%9a%e6%9c%ac.shtml#comments</comments>
		<pubDate>Wed, 07 Jan 2009 01:27:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[centos4]]></category>

		<category><![CDATA[yum]]></category>

		<category><![CDATA[源]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=465</guid>
		<description><![CDATA[#!/bin/sh
cd /etc/yum.repos.d
mv CentOS-Base.repo&#160; CentOS-Base.repo.save
wget http://centos.ustc.edu.cn/CentOS-Base.repo
yum install gcc4-c++
中国科技大学的源挺快的，因为是高校，所以比较稳定，一些其他服务器的过一段时间也许就消失了，所以不建议
网易的源  http://mirrors.163.com/.help/CentOS-Base-163.repo
搜狐的源 http://mirrors.sohu.com/help/CentOS-Base-sohu.repo
]]></description>
			<content:encoded><![CDATA[<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">#!/bin/sh</li>
<li>cd /etc/yum.repos.d</li>
<li>mv CentOS-Base.repo&nbsp; CentOS-Base.repo.save</li>
<li>wget http://centos.ustc.edu.cn/CentOS-Base.repo</li>
<li>yum install gcc4-c++</li></ol></div>
<p>中国科技大学的源挺快的，因为是高校，所以比较稳定，一些其他服务器的过一段时间也许就消失了，所以不建议</p>
<p>网易的源  http://mirrors.163.com/.help/CentOS-Base-163.repo</p>
<p>搜狐的源 http://mirrors.sohu.com/help/CentOS-Base-sohu.repo</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/01/07/centos4%e5%88%9d%e5%a7%8b%e5%8c%96%e7%9a%84%e4%b8%80%e4%ba%9b%e8%84%9a%e6%9c%ac.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>揭发一个写程序以来自己常犯的错误</title>
		<link>http://www.sunboyu.cn/2009/01/06/%e6%8f%ad%e5%8f%91%e4%b8%80%e4%b8%aa%e5%86%99%e7%a8%8b%e5%ba%8f%e4%bb%a5%e6%9d%a5%e8%87%aa%e5%b7%b1%e5%b8%b8%e7%8a%af%e7%9a%84%e9%94%99%e8%af%af.shtml</link>
		<comments>http://www.sunboyu.cn/2009/01/06/%e6%8f%ad%e5%8f%91%e4%b8%80%e4%b8%aa%e5%86%99%e7%a8%8b%e5%ba%8f%e4%bb%a5%e6%9d%a5%e8%87%aa%e5%b7%b1%e5%b8%b8%e7%8a%af%e7%9a%84%e9%94%99%e8%af%af.shtml#comments</comments>
		<pubDate>Tue, 06 Jan 2009 15:05:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[时间戳]]></category>

		<category><![CDATA[时间段]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=460</guid>
		<description><![CDATA[从来没发现这个错误，今天突然想到。
数据库中时间，我习惯使用时间戳来保存，取某天或者某小时的数据时，采用 sql 的 between and 方法。
&#60; ?php
#某天的数据
$time[0] = strtotime(date('Y-m-d'));
$time[1] = $time[0]+86400;
$sql = &#34;SELECT * FROM TABLE WHERE TIME BETWEEN $time[0] AND $time[1]&#34;&#160; //伪代码
?&#62;
乍看这样是没有什么问题的，取某天的时间段。实践证明，在数据时间的分布比较疏松的时候，的确没什么问题，但如果数据分布十分密集，每秒都有若干数据的时候，问题就出来了。根据between的规则，实际的时间就是 $time[1]-$time[0]+1 = 86401
每条语句多算了一秒……汗
解决方案，时间段的计算一律 $time[0] + 60*60*24*x -1
]]></description>
			<content:encoded><![CDATA[<p>从来没发现这个错误，今天突然想到。</p>
<p>数据库中时间，我习惯使用时间戳来保存，取某天或者某小时的数据时，采用 sql 的 between and 方法。</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">&lt; ?php</li>
<li>#某天的数据</li>
<li>$time[0] = strtotime(date('Y-m-d'));</li>
<li>$time[1] = $time[0]+86400;</li>
<li>$sql = &quot;SELECT * FROM TABLE WHERE TIME BETWEEN $time[0] AND $time[1]&quot;&nbsp; //伪代码</li>
<li>?&gt;</li></ol></div>
<p>乍看这样是没有什么问题的，取某天的时间段。实践证明，在数据时间的分布比较疏松的时候，的确没什么问题，但如果数据分布十分密集，每秒都有若干数据的时候，问题就出来了。根据between的规则，实际的时间就是 $time[1]-$time[0]+1 = 86401</p>
<p>每条语句多算了一秒……汗</p>
<p>解决方案，时间段的计算一律 $time[0] + 60*60*24*x -1</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/01/06/%e6%8f%ad%e5%8f%91%e4%b8%80%e4%b8%aa%e5%86%99%e7%a8%8b%e5%ba%8f%e4%bb%a5%e6%9d%a5%e8%87%aa%e5%b7%b1%e5%b8%b8%e7%8a%af%e7%9a%84%e9%94%99%e8%af%af.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>年前了，懒得动了</title>
		<link>http://www.sunboyu.cn/2009/01/06/%e5%b9%b4%e5%89%8d%e4%ba%86%ef%bc%8c%e6%87%92%e5%be%97%e5%8a%a8%e4%ba%86.shtml</link>
		<comments>http://www.sunboyu.cn/2009/01/06/%e5%b9%b4%e5%89%8d%e4%ba%86%ef%bc%8c%e6%87%92%e5%be%97%e5%8a%a8%e4%ba%86.shtml#comments</comments>
		<pubDate>Tue, 06 Jan 2009 01:08:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<category><![CDATA[累]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=458</guid>
		<description><![CDATA[每天异常疲惫，写点代码就累，累，还是累～～～～～～～～～～～～～～～～～～
]]></description>
			<content:encoded><![CDATA[<p>每天异常疲惫，写点代码就累，累，还是累～～～～～～～～～～～～～～～～～～</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/01/06/%e5%b9%b4%e5%89%8d%e4%ba%86%ef%bc%8c%e6%87%92%e5%be%97%e5%8a%a8%e4%ba%86.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>wordpress评论验证码插件安装成功</title>
		<link>http://www.sunboyu.cn/2009/01/02/wordpress%e8%af%84%e8%ae%ba%e9%aa%8c%e8%af%81%e7%a0%81%e6%8f%92%e4%bb%b6%e5%ae%89%e8%a3%85%e6%88%90%e5%8a%9f.shtml</link>
		<comments>http://www.sunboyu.cn/2009/01/02/wordpress%e8%af%84%e8%ae%ba%e9%aa%8c%e8%af%81%e7%a0%81%e6%8f%92%e4%bb%b6%e5%ae%89%e8%a3%85%e6%88%90%e5%8a%9f.shtml#comments</comments>
		<pubDate>Fri, 02 Jan 2009 03:51:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[原创技术]]></category>

		<category><![CDATA[wordpress插件]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/2009/01/02/wordpress%e8%af%84%e8%ae%ba%e9%aa%8c%e8%af%81%e7%a0%81%e6%8f%92%e4%bb%b6%e5%ae%89%e8%a3%85%e6%88%90%e5%8a%9f.shtml</guid>
		<description><![CDATA[wp-imgcode
在适当的地方增加这句话就可以了
< ?php do_action(’comment_form’, $post->ID); ?>
]]></description>
			<content:encoded><![CDATA[<p>wp-imgcode<br />
在适当的地方增加这句话就可以了<br />
< ?php do_action(’comment_form’, $post->ID); ?></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/01/02/wordpress%e8%af%84%e8%ae%ba%e9%aa%8c%e8%af%81%e7%a0%81%e6%8f%92%e4%bb%b6%e5%ae%89%e8%a3%85%e6%88%90%e5%8a%9f.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>博客升级V2.7成功</title>
		<link>http://www.sunboyu.cn/2009/01/02/%e5%8d%9a%e5%ae%a2%e5%8d%87%e7%ba%a7v27%e6%88%90%e5%8a%9f.shtml</link>
		<comments>http://www.sunboyu.cn/2009/01/02/%e5%8d%9a%e5%ae%a2%e5%8d%87%e7%ba%a7v27%e6%88%90%e5%8a%9f.shtml#comments</comments>
		<pubDate>Thu, 01 Jan 2009 18:44:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<category><![CDATA[wordpress]]></category>

		<category><![CDATA[升级]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=441</guid>
		<description><![CDATA[顺便帮助强哥测试新的博客版本，我这里先做个肉鸡，2.7向下兼容很好，无缝切换过来。
新的后台比较强，但也有点花哨。
体验一下再说
后台支持版本，不错
图片上传测试：

flash上传测试:

]]></description>
			<content:encoded><![CDATA[<p>顺便帮助强哥测试新的博客版本，我这里先做个肉鸡，2.7向下兼容很好，无缝切换过来。</p>
<p>新的后台比较强，但也有点花哨。</p>
<p>体验一下再说</p>
<p>后台支持版本，不错</p>
<p>图片上传测试：</p>
<p><img class="alignnone size-medium wp-image-444" title="156236" src="http://www.sunboyu.cn/upfiles/2009/01/156236-202x300.jpg" alt="156236" width="202" height="300" /></p>
<p>flash上传测试:</p>
<p><img class="aligncenter size-full wp-image-447" title="20071223105227536" src="http://www.sunboyu.cn/upfiles/2009/01/20071223105227536.jpg" alt="20071223105227536" width="300" height="450" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/01/02/%e5%8d%9a%e5%ae%a2%e5%8d%87%e7%ba%a7v27%e6%88%90%e5%8a%9f.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>新年第一帖</title>
		<link>http://www.sunboyu.cn/2009/01/01/%e6%96%b0%e5%b9%b4%e7%ac%ac%e4%b8%80%e5%b8%96.shtml</link>
		<comments>http://www.sunboyu.cn/2009/01/01/%e6%96%b0%e5%b9%b4%e7%ac%ac%e4%b8%80%e5%b8%96.shtml#comments</comments>
		<pubDate>Wed, 31 Dec 2008 16:31:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[感悟]]></category>

		<category><![CDATA[新年]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=440</guid>
		<description><![CDATA[其实，这个时候我在想一个问题，我的技术应该超哪个方向发展。
这是个干炸带鱼和烧熊掌之间的选择，不过我还是比较贪心，选择了“熊掌罩烧带鱼段”。
其实为了做这道菜，我寻找了大半年，对于一个厨子，没有什么不可能。
这道菜也许我做上半年，也许一年，最终会端到你的餐桌上。
请等待……开源会打击敌人，免费会拖垮敌人，超强的开发进度会让敌人措手不及！
]]></description>
			<content:encoded><![CDATA[<p>其实，这个时候我在想一个问题，我的技术应该超哪个方向发展。<br />
这是个干炸带鱼和烧熊掌之间的选择，不过我还是比较贪心，选择了“熊掌罩烧带鱼段”。<br />
其实为了做这道菜，我寻找了大半年，对于一个厨子，没有什么不可能。<br />
这道菜也许我做上半年，也许一年，最终会端到你的餐桌上。<br />
请等待……开源会打击敌人，免费会拖垮敌人，超强的开发进度会让敌人措手不及！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2009/01/01/%e6%96%b0%e5%b9%b4%e7%ac%ac%e4%b8%80%e5%b8%96.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>2008的最后一天</title>
		<link>http://www.sunboyu.cn/2008/12/31/2008%e7%9a%84%e6%9c%80%e5%90%8e%e4%b8%80%e5%a4%a9.shtml</link>
		<comments>http://www.sunboyu.cn/2008/12/31/2008%e7%9a%84%e6%9c%80%e5%90%8e%e4%b8%80%e5%a4%a9.shtml#comments</comments>
		<pubDate>Wed, 31 Dec 2008 14:35:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[感悟]]></category>

		<category><![CDATA[年终总结]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=439</guid>
		<description><![CDATA[下午腐败了一场，幸好没喝多少，躲过一劫。
总结今年，收获不少，尤其加入朗玛，更是在项目经验上积累不少心得。
技术方面，自5月份加入朗玛，有了突飞猛进的发展，不仅在代码方面，linux系统长进不少，在程序架构和代码风格上也有了很大的提高。
细节：mysql优化，索引，搜索引擎基础，lucene，linux系统管理，apache优化设置，PHP优化，系统安全，权限，都有了一个不小的进步。前端方面，http优化，js编程，也有一定的提高。
其实学的挺杂，但心中终于有了一个目标，并且为了这个目标努力了，前进了，而且落实到代码字符上了。
2008是个不错的年景，有了很大的收获，2009要再接再厉。
]]></description>
			<content:encoded><![CDATA[<p>下午腐败了一场，幸好没喝多少，躲过一劫。<br />
总结今年，收获不少，尤其加入朗玛，更是在项目经验上积累不少心得。<br />
技术方面，自5月份加入朗玛，有了突飞猛进的发展，不仅在代码方面，linux系统长进不少，在程序架构和代码风格上也有了很大的提高。<br />
细节：mysql优化，索引，搜索引擎基础，lucene，linux系统管理，apache优化设置，PHP优化，系统安全，权限，都有了一个不小的进步。前端方面，http优化，js编程，也有一定的提高。<br />
其实学的挺杂，但心中终于有了一个目标，并且为了这个目标努力了，前进了，而且落实到代码字符上了。<br />
2008是个不错的年景，有了很大的收获，2009要再接再厉。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/12/31/2008%e7%9a%84%e6%9c%80%e5%90%8e%e4%b8%80%e5%a4%a9.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>传说中的千万数据量优化</title>
		<link>http://www.sunboyu.cn/2008/12/30/%e4%bc%a0%e8%af%b4%e4%b8%ad%e7%9a%84%e5%8d%83%e4%b8%87%e6%95%b0%e6%8d%ae%e9%87%8f%e4%bc%98%e5%8c%96.shtml</link>
		<comments>http://www.sunboyu.cn/2008/12/30/%e4%bc%a0%e8%af%b4%e4%b8%ad%e7%9a%84%e5%8d%83%e4%b8%87%e6%95%b0%e6%8d%ae%e9%87%8f%e4%bc%98%e5%8c%96.shtml#comments</comments>
		<pubDate>Tue, 30 Dec 2008 14:10:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[其他]]></category>

		<category><![CDATA[sql]]></category>

		<category><![CDATA[优化]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=438</guid>
		<description><![CDATA[平时看别人招聘，动不动来个“有千万数据量优化经验”。我还的确没有这个经验，中小网站来个几万几十万的数据就了不得，一些涉及数据多的顶多也来个百万，因为超百万我就分表了，而且设计的时候尽量使用主键索引，避免使用模糊搜索和一些复杂的搜索。
基本百万数量级以下的简单应用，一般的服务器没什么问题，只要程序够不垃圾就行。
今天突然奇想，尝试下千万数据什么样子，花半个小时生成了一堆随机的数字，一千万整，当然还有其他的一些数据，主要测试从千万级的数据中捞少量数据是什么样子。
我用的MSSQL2005，使用存储过程生成数据，半个小时，Mysql没实验过。结果，从千万数据用where捞几万条数据，用单一的where条件，果然很慢，能达到20几秒。后仔细查看索引和语句，发现没有很好的索引供sql语句使用，根据where语句建立索引，速度提升到10秒左右。因为只是取出几个字段，后又想使用覆盖索引，加上那几个字段，速度大为提高。
经过跟踪测试，在覆盖索引的使用后，取数据已经达到了相当迅速，但大量的时间消耗在了数据库连接和数据的传输上。因为本系统必须操作大量数据，而拆分数据后又增加了创建数据库连接的成本，速度反而变慢。其实，只要php不超时，已经达到了可用的程度。
总结：索引这玩意真的不错，但设计数据表要尽量简单，简单不是指字段简单，而是使sql语句取数据简单，必要时中间要增加矢量的冗余数据，用空间换取时间。
]]></description>
			<content:encoded><![CDATA[<p>平时看别人招聘，动不动来个“有千万数据量优化经验”。我还的确没有这个经验，中小网站来个几万几十万的数据就了不得，一些涉及数据多的顶多也来个百万，因为超百万我就分表了，而且设计的时候尽量使用主键索引，避免使用模糊搜索和一些复杂的搜索。<br />
基本百万数量级以下的简单应用，一般的服务器没什么问题，只要程序够不垃圾就行。<br />
今天突然奇想，尝试下千万数据什么样子，花半个小时生成了一堆随机的数字，一千万整，当然还有其他的一些数据，主要测试从千万级的数据中捞少量数据是什么样子。<br />
我用的MSSQL2005，使用存储过程生成数据，半个小时，Mysql没实验过。结果，从千万数据用where捞几万条数据，用单一的where条件，果然很慢，能达到20几秒。后仔细查看索引和语句，发现没有很好的索引供sql语句使用，根据where语句建立索引，速度提升到10秒左右。因为只是取出几个字段，后又想使用覆盖索引，加上那几个字段，速度大为提高。<br />
经过跟踪测试，在覆盖索引的使用后，取数据已经达到了相当迅速，但大量的时间消耗在了数据库连接和数据的传输上。因为本系统必须操作大量数据，而拆分数据后又增加了创建数据库连接的成本，速度反而变慢。其实，只要php不超时，已经达到了可用的程度。<br />
总结：索引这玩意真的不错，但设计数据表要尽量简单，简单不是指字段简单，而是使sql语句取数据简单，必要时中间要增加矢量的冗余数据，用空间换取时间。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/12/30/%e4%bc%a0%e8%af%b4%e4%b8%ad%e7%9a%84%e5%8d%83%e4%b8%87%e6%95%b0%e6%8d%ae%e9%87%8f%e4%bc%98%e5%8c%96.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>使用linux进程来分布PHP的压力，构造高负载多并发的系统</title>
		<link>http://www.sunboyu.cn/2008/12/25/%e4%bd%bf%e7%94%a8linux%e8%bf%9b%e7%a8%8b%e6%9d%a5%e5%88%86%e5%b8%83php%e7%9a%84%e5%8e%8b%e5%8a%9b%ef%bc%8c%e6%9e%84%e9%80%a0%e9%ab%98%e8%b4%9f%e8%bd%bd%e5%a4%9a%e5%b9%b6%e5%8f%91%e7%9a%84%e7%b3%bb.shtml</link>
		<comments>http://www.sunboyu.cn/2008/12/25/%e4%bd%bf%e7%94%a8linux%e8%bf%9b%e7%a8%8b%e6%9d%a5%e5%88%86%e5%b8%83php%e7%9a%84%e5%8e%8b%e5%8a%9b%ef%bc%8c%e6%9e%84%e9%80%a0%e9%ab%98%e8%b4%9f%e8%bd%bd%e5%a4%9a%e5%b9%b6%e5%8f%91%e7%9a%84%e7%b3%bb.shtml#comments</comments>
		<pubDate>Thu, 25 Dec 2008 07:42:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[php]]></category>

		<category><![CDATA[压力，进程]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=437</guid>
		<description><![CDATA[最近又跟P友讨论PHP的多进程问题，解决的方案，一般都是建立新的系统进程去处理，而linux的nohup命令可以创建新的进程，如果主程序需要处理很多数据，比如一个队列，把这些记录分布开，可以提高主程序的响应，能更快的使主程序结束。
这个方案最早出现在这哥们的博客里，大家可以参考 http://blog.s135.com/read.php/311.htm
而我处理，基本基于PHP的cli模式，使用$argv传递参数而非url，在一些涉及轮询的程序中，可以尽快得把负载分散，使单一的轮询程序来处理下一次的轮询。
]]></description>
			<content:encoded><![CDATA[<p>最近又跟P友讨论PHP的多进程问题，解决的方案，一般都是建立新的系统进程去处理，而linux的nohup命令可以创建新的进程，如果主程序需要处理很多数据，比如一个队列，把这些记录分布开，可以提高主程序的响应，能更快的使主程序结束。</p>
<p>这个方案最早出现在这哥们的博客里，大家可以参考 http://blog.s135.com/read.php/311.htm</p>
<p>而我处理，基本基于PHP的cli模式，使用$argv传递参数而非url，在一些涉及轮询的程序中，可以尽快得把负载分散，使单一的轮询程序来处理下一次的轮询。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/12/25/%e4%bd%bf%e7%94%a8linux%e8%bf%9b%e7%a8%8b%e6%9d%a5%e5%88%86%e5%b8%83php%e7%9a%84%e5%8e%8b%e5%8a%9b%ef%bc%8c%e6%9e%84%e9%80%a0%e9%ab%98%e8%b4%9f%e8%bd%bd%e5%a4%9a%e5%b9%b6%e5%8f%91%e7%9a%84%e7%b3%bb.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>修改Linux用户登录的默认语言设置</title>
		<link>http://www.sunboyu.cn/2008/12/20/%e4%bf%ae%e6%94%b9linux%e7%94%a8%e6%88%b7%e7%99%bb%e5%bd%95%e7%9a%84%e9%bb%98%e8%ae%a4%e8%af%ad%e8%a8%80%e8%ae%be%e7%bd%ae.shtml</link>
		<comments>http://www.sunboyu.cn/2008/12/20/%e4%bf%ae%e6%94%b9linux%e7%94%a8%e6%88%b7%e7%99%bb%e5%bd%95%e7%9a%84%e9%bb%98%e8%ae%a4%e8%af%ad%e8%a8%80%e8%ae%be%e7%bd%ae.shtml#comments</comments>
		<pubDate>Sat, 20 Dec 2008 08:47:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[linux]]></category>

		<category><![CDATA[终端编码]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=436</guid>
		<description><![CDATA[进入linux中断，查看自己的设置，可以看下 env命令的回显
默认都是us_EN.UTF-8
有一些字符出来全是乱码，尝试修改一下
修改用户主目录下 .bash_profile 文件，增加一行 export LANG=zh_CN.gbk
然后logout，再重新登录，部分字符显示正常。
]]></description>
			<content:encoded><![CDATA[<p>进入linux中断，查看自己的设置，可以看下 env命令的回显</p>
<p>默认都是us_EN.UTF-8</p>
<p>有一些字符出来全是乱码，尝试修改一下</p>
<p>修改用户主目录下 .bash_profile 文件，增加一行 export LANG=zh_CN.gbk</p>
<p>然后logout，再重新登录，部分字符显示正常。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/12/20/%e4%bf%ae%e6%94%b9linux%e7%94%a8%e6%88%b7%e7%99%bb%e5%bd%95%e7%9a%84%e9%bb%98%e8%ae%a4%e8%af%ad%e8%a8%80%e8%ae%be%e7%bd%ae.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>sunboyu-amp-fastcgi-suexec-v22-alpha 发布</title>
		<link>http://www.sunboyu.cn/2008/12/20/sunboyu-amp-fastcgi-suexec-v22-alpha-%e5%8f%91%e5%b8%83.shtml</link>
		<comments>http://www.sunboyu.cn/2008/12/20/sunboyu-amp-fastcgi-suexec-v22-alpha-%e5%8f%91%e5%b8%83.shtml#comments</comments>
		<pubDate>Sat, 20 Dec 2008 07:06:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[amp]]></category>

		<category><![CDATA[apache]]></category>

		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=434</guid>
		<description><![CDATA[Linux下APACHE MYSQL PHP FCgid Suexec 自动安装脚本V2.2
1、增加了m4-1.4.9
2、增加了autoconf-2.62
这两个包在安装eaccelerator-0.9.5.2的时候使用
3、增加了PHP &#8211;with-mcrypt 参数
4、增加了PHP &#8211;enable-sockets 参数
sunboyu-amp-fastcgi-suexec-v22-alpha
]]></description>
			<content:encoded><![CDATA[<p>Linux下APACHE MYSQL PHP FCgid Suexec 自动安装脚本V2.2</p>
<p>1、增加了m4-1.4.9</p>
<p>2、增加了autoconf-2.62</p>
<p>这两个包在安装eaccelerator-0.9.5.2的时候使用</p>
<p>3、增加了PHP &#8211;with-mcrypt 参数</p>
<p>4、增加了PHP &#8211;enable-sockets 参数</p>
<p><a href="http://www.sunboyu.cn/upfiles/2008/12/sunboyu-amp-fastcgi-suexec-v22-alpha.txt">sunboyu-amp-fastcgi-suexec-v22-alpha</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/12/20/sunboyu-amp-fastcgi-suexec-v22-alpha-%e5%8f%91%e5%b8%83.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>纯属扯淡</title>
		<link>http://www.sunboyu.cn/2008/12/19/%e7%ba%af%e5%b1%9e%e6%89%af%e6%b7%a1.shtml</link>
		<comments>http://www.sunboyu.cn/2008/12/19/%e7%ba%af%e5%b1%9e%e6%89%af%e6%b7%a1.shtml#comments</comments>
		<pubDate>Fri, 19 Dec 2008 03:09:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[感悟]]></category>

		<category><![CDATA[备份]]></category>

		<category><![CDATA[扯淡]]></category>

		<category><![CDATA[集中存储]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=433</guid>
		<description><![CDATA[老久没写日志，手痒痒，扯一篇。
前两天公司服务器总出点不大不小的故障，让人头疼，虽然我不是网管，但积极想几个解决方案还是应该的。
我提出了集中的备份存储，这种分布式的实时云备份（概念词语，扯淡）应该是最为有效的，能保证高冗余高可靠高安全，但实际是不现实的，一直在跟群里的高人们扯这个事。做技术的一般都考虑如何做到更安全更可靠，可这种安全可靠的代价是高的，不管从老板还是从项目，在一个写web的小组里做这种事情纯属烧包，集中存储＋实时的工作备份，软件硬件成本远远高于找几个IT民工的价钱。钱摆在这里，兄弟们就别意淫了，老老实实手工备份是正道，谁丢数据了，自己加班补去吧，申请个加班工作餐也没几个钱。
最近把LAMP一套基础的东西都配置了一圈，基本能组成一个工作中高可用性高易用性的网络，不过这种配置离不了我这个网络高手，要想移植，得摸清所有的东西，其实更多的是我们这群民工的工作流程和工作习惯，有可移植性，也有不可移植性。代码易抄，精髓难学。
我在考虑是不是有必要把全套的东西详细整理一遍。
]]></description>
			<content:encoded><![CDATA[<p>老久没写日志，手痒痒，扯一篇。</p>
<p>前两天公司服务器总出点不大不小的故障，让人头疼，虽然我不是网管，但积极想几个解决方案还是应该的。</p>
<p>我提出了集中的备份存储，这种分布式的实时云备份（概念词语，扯淡）应该是最为有效的，能保证高冗余高可靠高安全，但实际是不现实的，一直在跟群里的高人们扯这个事。做技术的一般都考虑如何做到更安全更可靠，可这种安全可靠的代价是高的，不管从老板还是从项目，在一个写web的小组里做这种事情纯属烧包，集中存储＋实时的工作备份，软件硬件成本远远高于找几个IT民工的价钱。钱摆在这里，兄弟们就别意淫了，老老实实手工备份是正道，谁丢数据了，自己加班补去吧，申请个加班工作餐也没几个钱。</p>
<p>最近把LAMP一套基础的东西都配置了一圈，基本能组成一个工作中高可用性高易用性的网络，不过这种配置离不了我这个网络高手，要想移植，得摸清所有的东西，其实更多的是我们这群民工的工作流程和工作习惯，有可移植性，也有不可移植性。代码易抄，精髓难学。</p>
<p>我在考虑是不是有必要把全套的东西详细整理一遍。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/12/19/%e7%ba%af%e5%b1%9e%e6%89%af%e6%b7%a1.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>Pure-ftpd安装配置草稿－补充完全</title>
		<link>http://www.sunboyu.cn/2008/12/18/pure-ftpd%e5%ae%89%e8%a3%85%e9%85%8d%e7%bd%ae%e8%8d%89%e7%a8%bf%ef%bc%8d%e8%a1%a5%e5%85%85%e5%ae%8c%e5%85%a8.shtml</link>
		<comments>http://www.sunboyu.cn/2008/12/18/pure-ftpd%e5%ae%89%e8%a3%85%e9%85%8d%e7%bd%ae%e8%8d%89%e7%a8%bf%ef%bc%8d%e8%a1%a5%e5%85%85%e5%ae%8c%e5%85%a8.shtml#comments</comments>
		<pubDate>Thu, 18 Dec 2008 01:47:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[pure-ftpd]]></category>

		<category><![CDATA[草稿]]></category>

		<category><![CDATA[配置]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=431</guid>
		<description><![CDATA[cp /opt/mysql-5.0.22/lib/mysql/* /usr/lib&#160; &#160; &#160; &#160; &#160; #解决编译依赖库问题
./configure --prefix=/opt/pure-ftpd \
--with-mysql=/opt/mysql-5.0.22 \
--with-rfc2640 \
--with-language=simplified-chinese \
--with-peruserlimits \
--with-diraliases \
--with-virtualchroot \
--with-virtualhosts \
--with-welcomemsg \
--with-ftpwho \
--with-quotas \
--with-throttling \
--with-cookie \
--with-extauth \
--with-puredb \
--with-altlog \
--with-sysquotas \
--with-paranoidmsg \
--with-ascii \
--with-inetd
&#160;
cp  $install_dir/pureftpd-mysql.conf /opt/pure-ftpd/
cp  $install_dir/configuration-file/pure-config.pl pure-ftpd.conf /opt/pure-ftpd/
启动服务  /opt/pure-ftpd/pure-config.pl pure-ftpd.conf
这里补充完整：
安装完后，很多配置文件还在原来的安装包里，并没有部署到prefix目标文件夹下，需要手工复制过去，就是上边那两个，一个启动脚本，pure-config.pl 还有性能监控工具，统计工具等。
另外一个经常出现的问题：(为了重现，还得修改成错误的)
 421 配置错误: 无效的SQL配置文件: /opt/pure-ftpd/etc/pureftpd-mysql.conf
这个问题网上很多问的，但解释不到位，这里详细解释一下：我们在编译的时候选择了好多参数，部分参数跟配置是对应的，只有编译相关模块，才能打开相关配置，否则是不行的，会报错，但这个软件报错不报错误行数，所以调试起来比较费劲，我是一个个配置行进行开关才发现这个问题的，比如，我开启了这行，MySQLGetRatioDL SELECT DLRatio FROM users WHERE User=&#8221;\L&#8221; 但我编译的时候未加 ratio这个参数，就报错了，所以在调试的时候一定要对照一下编译时候的参数。
mysql中，密码我用的encryt加密，调试记得打开防火墙，其他没什么需要注意的。
]]></description>
			<content:encoded><![CDATA[<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">cp /opt/mysql-5.0.22/lib/mysql/* /usr/lib&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #解决编译依赖库问题</li>
<li>./configure --prefix=/opt/pure-ftpd \</li>
<li>--with-mysql=/opt/mysql-5.0.22 \</li>
<li>--with-rfc2640 \</li>
<li>--with-language=simplified-chinese \</li>
<li>--with-peruserlimits \</li>
<li>--with-diraliases \</li>
<li>--with-virtualchroot \</li>
<li>--with-virtualhosts \</li>
<li>--with-welcomemsg \</li>
<li>--with-ftpwho \</li>
<li>--with-quotas \</li>
<li>--with-throttling \</li>
<li>--with-cookie \</li>
<li>--with-extauth \</li>
<li>--with-puredb \</li>
<li>--with-altlog \</li>
<li>--with-sysquotas \</li>
<li>--with-paranoidmsg \</li>
<li>--with-ascii \</li>
<li>--with-inetd</li>
<li>&nbsp;</li>
<li>cp  $install_dir/pureftpd-mysql.conf /opt/pure-ftpd/</li>
<li>cp  $install_dir/configuration-file/pure-config.pl pure-ftpd.conf /opt/pure-ftpd/</li></ol></div>
<p>启动服务  /opt/pure-ftpd/pure-config.pl pure-ftpd.conf</p>
<p>这里补充完整：<br />
安装完后，很多配置文件还在原来的安装包里，并没有部署到prefix目标文件夹下，需要手工复制过去，就是上边那两个，一个启动脚本，pure-config.pl 还有性能监控工具，统计工具等。<br />
另外一个经常出现的问题：(为了重现，还得修改成错误的)<br />
 421 配置错误: 无效的SQL配置文件: /opt/pure-ftpd/etc/pureftpd-mysql.conf<br />
这个问题网上很多问的，但解释不到位，这里详细解释一下：我们在编译的时候选择了好多参数，部分参数跟配置是对应的，只有编译相关模块，才能打开相关配置，否则是不行的，会报错，但这个软件报错不报错误行数，所以调试起来比较费劲，我是一个个配置行进行开关才发现这个问题的，比如，我开启了这行，MySQLGetRatioDL SELECT DLRatio FROM users WHERE User=&#8221;\L&#8221; 但我编译的时候未加 ratio这个参数，就报错了，所以在调试的时候一定要对照一下编译时候的参数。<br />
mysql中，密码我用的encryt加密，调试记得打开防火墙，其他没什么需要注意的。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/12/18/pure-ftpd%e5%ae%89%e8%a3%85%e9%85%8d%e7%bd%ae%e8%8d%89%e7%a8%bf%ef%bc%8d%e8%a1%a5%e5%85%85%e5%ae%8c%e5%85%a8.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>sunboyu-amp-fastcgi-suexec-v21-alpha 发布</title>
		<link>http://www.sunboyu.cn/2008/12/15/sunboyu-amp-fastcgi-suexec-v21-alpha-%e5%8f%91%e5%b8%83.shtml</link>
		<comments>http://www.sunboyu.cn/2008/12/15/sunboyu-amp-fastcgi-suexec-v21-alpha-%e5%8f%91%e5%b8%83.shtml#comments</comments>
		<pubDate>Mon, 15 Dec 2008 13:58:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[fastcgi]]></category>

		<category><![CDATA[LAMP]]></category>

		<category><![CDATA[mysql]]></category>

		<category><![CDATA[php]]></category>

		<category><![CDATA[suexec]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=428</guid>
		<description><![CDATA[Linux下APACHE MYSQL PHP FCgid Suexec 自动安装脚本V2.1
1、增加了PHP &#8211;enable-bcmath 参数，支持高精度函数库
2、增加了ncurses MYSQL的一个依赖库
3、增加了apache &#8211;enable-so 参数
sunboyu-amp-fastcgi-suexec-v21-alpha
此脚本在Centos4.7ServerCD 最小安装，root账户下执行完全正常。
]]></description>
			<content:encoded><![CDATA[<p>Linux下APACHE MYSQL PHP FCgid Suexec 自动安装脚本V2.1<br />
1、增加了PHP &#8211;enable-bcmath 参数，支持高精度函数库<br />
2、增加了ncurses MYSQL的一个依赖库<br />
3、增加了apache &#8211;enable-so 参数</p>
<p><a href='http://www.sunboyu.cn/upfiles/2008/12/sunboyu-amp-fastcgi-suexec-v21-alpha.txt'>sunboyu-amp-fastcgi-suexec-v21-alpha</a></p>
<p>此脚本在Centos4.7ServerCD 最小安装，root账户下执行完全正常。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/12/15/sunboyu-amp-fastcgi-suexec-v21-alpha-%e5%8f%91%e5%b8%83.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>全面切换到CentOS-4.7.ServerCD</title>
		<link>http://www.sunboyu.cn/2008/12/14/%e5%85%a8%e9%9d%a2%e5%88%87%e6%8d%a2%e5%88%b0centos-47servercd.shtml</link>
		<comments>http://www.sunboyu.cn/2008/12/14/%e5%85%a8%e9%9d%a2%e5%88%87%e6%8d%a2%e5%88%b0centos-47servercd.shtml#comments</comments>
		<pubDate>Sun, 14 Dec 2008 14:24:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[4.7]]></category>

		<category><![CDATA[centos]]></category>

		<category><![CDATA[servercd]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=427</guid>
		<description><![CDATA[下载地址 http://centos.ustc.edu.cn/centos/4.7/isos/x86_64/CentOS-4.7.ServerCD-x86_64.iso
注：根据需要下载x86_64或者i386版本
一般x86_64跑服务器或者64位CPU上，家用台式一般用i386，不过现在比较好的家用cpu也64位，我的就比较落后了……
安装还是老一套，我用vmware模拟的scis硬盘安装，选择的定制安全，选择组件那步直接选择mini安装即可。
因为5一直没有servercd，而发行版又太大，3个多G，所以还是选择这个精简的服务器版本。
]]></description>
			<content:encoded><![CDATA[<p>下载地址 http://centos.ustc.edu.cn/centos/4.7/isos/x86_64/CentOS-4.7.ServerCD-x86_64.iso<br />
注：根据需要下载x86_64或者i386版本<br />
一般x86_64跑服务器或者64位CPU上，家用台式一般用i386，不过现在比较好的家用cpu也64位，我的就比较落后了……</p>
<p>安装还是老一套，我用vmware模拟的scis硬盘安装，选择的定制安全，选择组件那步直接选择mini安装即可。</p>
<p>因为5一直没有servercd，而发行版又太大，3个多G，所以还是选择这个精简的服务器版本。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/12/14/%e5%85%a8%e9%9d%a2%e5%88%87%e6%8d%a2%e5%88%b0centos-47servercd.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>PHP引用机制和垃圾回收机制详解</title>
		<link>http://www.sunboyu.cn/2008/12/12/php%e5%bc%95%e7%94%a8%e6%9c%ba%e5%88%b6%e5%92%8c%e5%9e%83%e5%9c%be%e5%9b%9e%e6%94%b6%e6%9c%ba%e5%88%b6%e8%af%a6%e8%a7%a3.shtml</link>
		<comments>http://www.sunboyu.cn/2008/12/12/php%e5%bc%95%e7%94%a8%e6%9c%ba%e5%88%b6%e5%92%8c%e5%9e%83%e5%9c%be%e5%9b%9e%e6%94%b6%e6%9c%ba%e5%88%b6%e8%af%a6%e8%a7%a3.shtml#comments</comments>
		<pubDate>Fri, 12 Dec 2008 14:16:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[php]]></category>

		<category><![CDATA[垃圾回收]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=426</guid>
		<description><![CDATA[PHP对变量的跟踪，其实是采用引用，比如 $a = &#8220;test&#8221; 那么就是在内存中开辟一个存储区，保存 test，$a 做为test的引用。
同时我们可以 $b = &#38;$a,$b作为 $a的引用，他们同时指向test存储空间。
在文章  http://www.sunboyu.cn/2008/11/19/php%E4%B8%AD%E5%8F%98%E9%87%8F%E5%BC%95%E7%94%A8%E8%AF%A6%E8%A7%A3.shtml    中，我们做了一个应用的测试，当删除一个引用后，变量并不消失，是因为PHP使用一个引用计数的东东。当$a=&#8221;test&#8221;建立后，test的引用计数就是1，建立 $b=&#38;$a后，test的引用计数就是2，删除任何一个引用后，引用计数为1.
只要是引用计数不为0的数据，则为当前有效的数据。然而，当数据的引用计数为0的时候，系统就会识别此数据为垃圾数据，需要回收，这也就形成了PHP的垃圾回收机制。
]]></description>
			<content:encoded><![CDATA[<p>PHP对变量的跟踪，其实是采用引用，比如 $a = &#8220;test&#8221; 那么就是在内存中开辟一个存储区，保存 test，$a 做为test的引用。</p>
<p>同时我们可以 $b = &amp;$a,$b作为 $a的引用，他们同时指向test存储空间。</p>
<p>在文章  http://www.sunboyu.cn/2008/11/19/php%E4%B8%AD%E5%8F%98%E9%87%8F%E5%BC%95%E7%94%A8%E8%AF%A6%E8%A7%A3.shtml    中，我们做了一个应用的测试，当删除一个引用后，变量并不消失，是因为PHP使用一个引用计数的东东。当$a=&#8221;test&#8221;建立后，test的引用计数就是1，建立 $b=&amp;$a后，test的引用计数就是2，删除任何一个引用后，引用计数为1.</p>
<p>只要是引用计数不为0的数据，则为当前有效的数据。然而，当数据的引用计数为0的时候，系统就会识别此数据为垃圾数据，需要回收，这也就形成了PHP的垃圾回收机制。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/12/12/php%e5%bc%95%e7%94%a8%e6%9c%ba%e5%88%b6%e5%92%8c%e5%9e%83%e5%9c%be%e5%9b%9e%e6%94%b6%e6%9c%ba%e5%88%b6%e8%af%a6%e8%a7%a3.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>互联网的浮躁</title>
		<link>http://www.sunboyu.cn/2008/12/12/%e4%ba%92%e8%81%94%e7%bd%91%e7%9a%84%e6%b5%ae%e8%ba%81.shtml</link>
		<comments>http://www.sunboyu.cn/2008/12/12/%e4%ba%92%e8%81%94%e7%bd%91%e7%9a%84%e6%b5%ae%e8%ba%81.shtml#comments</comments>
		<pubDate>Fri, 12 Dec 2008 09:07:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[感悟]]></category>

		<category><![CDATA[相当拍砖]]></category>

		<category><![CDATA[互联网]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=425</guid>
		<description><![CDATA[前几天，QQ上有个哥们问我做个网站多少钱，这类问题我还是仔细得回答了，虽然很烦：按照网站复杂度定价格，你们详细规划网站了么？
兄弟很羞涩得说，他在创业，没钱，没技术，想用Discuz的产品做一个简单的网站去运营。
不排除可能成功，因为目前我知道很多网站就是用这么简单的一个东西做大的，比如chinaunix，55bbs，所以，我没资格说你这么做不行，扯淡，或者是把希望留给了有梦想的人。
目前一些人，在做视频，在做webgame（sns）。这两个行当是不是真有公司挣钱了，我不知道，反正我知道做这个烧钱厉害，而且很多人在继续做。
纵观互联网格局，俨然不是90年代初的股市，只要进钱就是翻。中国互联网起步阶段，网易靠提供电子邮件和虚拟主机发家了，王志东靠写汉卡成功了，戴志康写了个discuz成功了（虽然前期版本有抄袭嫌疑），有人从高丽棒子那弄个传奇，也挣得盆满钵满。
看现在，一个个新生事情的出现，然后又蹦出无数的追随者：youtobe出售，国内一堆搞视频网站的；化工网上市，行业门户林立而起（个人感觉行业门户比较靠普，毕竟是靠近实业），facebook卖了点钱，开心啥啥都起来，暂且不说做得好与否，国内这些创业者的思维的确不敢恭维。没有创新，只有盲从。做事情没有具体的目标，有的干脆只有－上市，收购。
我曾经住在林大旁边，方兴东的办公室就在附近，而今天每次路过，我都在心里暗笑，曾经一个多么伟大的人，带着多么伟大的思想，居然被新浪一棒子打死，连气都没有喘一口。
其实，作为一个打工者，看不惯只知道天天意淫的老板混日子。很多时候，我相信我是肤浅的，作为一个晚辈，我不懂互联网。但我也相信，今天的互联网是浮躁的，也许这次经济的浪潮能冲垮一部分人的梦想，洗清头脑，为行业带来新生。
]]></description>
			<content:encoded><![CDATA[<p>前几天，QQ上有个哥们问我做个网站多少钱，这类问题我还是仔细得回答了，虽然很烦：按照网站复杂度定价格，你们详细规划网站了么？</p>
<p>兄弟很羞涩得说，他在创业，没钱，没技术，想用Discuz的产品做一个简单的网站去运营。</p>
<p>不排除可能成功，因为目前我知道很多网站就是用这么简单的一个东西做大的，比如chinaunix，55bbs，所以，我没资格说你这么做不行，扯淡，或者是把希望留给了有梦想的人。</p>
<p>目前一些人，在做视频，在做webgame（sns）。这两个行当是不是真有公司挣钱了，我不知道，反正我知道做这个烧钱厉害，而且很多人在继续做。</p>
<p>纵观互联网格局，俨然不是90年代初的股市，只要进钱就是翻。中国互联网起步阶段，网易靠提供电子邮件和虚拟主机发家了，王志东靠写汉卡成功了，戴志康写了个discuz成功了（虽然前期版本有抄袭嫌疑），有人从高丽棒子那弄个传奇，也挣得盆满钵满。</p>
<p>看现在，一个个新生事情的出现，然后又蹦出无数的追随者：youtobe出售，国内一堆搞视频网站的；化工网上市，行业门户林立而起（个人感觉行业门户比较靠普，毕竟是靠近实业），facebook卖了点钱，开心啥啥都起来，暂且不说做得好与否，国内这些创业者的思维的确不敢恭维。没有创新，只有盲从。做事情没有具体的目标，有的干脆只有－上市，收购。</p>
<p>我曾经住在林大旁边，方兴东的办公室就在附近，而今天每次路过，我都在心里暗笑，曾经一个多么伟大的人，带着多么伟大的思想，居然被新浪一棒子打死，连气都没有喘一口。</p>
<p>其实，作为一个打工者，看不惯只知道天天意淫的老板混日子。很多时候，我相信我是肤浅的，作为一个晚辈，我不懂互联网。但我也相信，今天的互联网是浮躁的，也许这次经济的浪潮能冲垮一部分人的梦想，洗清头脑，为行业带来新生。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/12/12/%e4%ba%92%e8%81%94%e7%bd%91%e7%9a%84%e6%b5%ae%e8%ba%81.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>新书，不是一般的新</title>
		<link>http://www.sunboyu.cn/2008/12/12/%e6%96%b0%e4%b9%a6%ef%bc%8c%e4%b8%8d%e6%98%af%e4%b8%80%e8%88%ac%e7%9a%84%e6%96%b0.shtml</link>
		<comments>http://www.sunboyu.cn/2008/12/12/%e6%96%b0%e4%b9%a6%ef%bc%8c%e4%b8%8d%e6%98%af%e4%b8%80%e8%88%ac%e7%9a%84%e6%96%b0.shtml#comments</comments>
		<pubDate>Fri, 12 Dec 2008 03:34:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=423</guid>
		<description><![CDATA[
中午到中关村图书大厦购得，不错。
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.sunboyu.cn/upfiles/2008/12/s3140466.jpg"><img class="aligncenter size-full wp-image-424" title="s3140466" src="http://www.sunboyu.cn/upfiles/2008/12/s3140466.jpg" alt="" width="125" height="180" /></a></p>
<p>中午到中关村图书大厦购得，不错。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/12/12/%e6%96%b0%e4%b9%a6%ef%bc%8c%e4%b8%8d%e6%98%af%e4%b8%80%e8%88%ac%e7%9a%84%e6%96%b0.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>自行车VS Program</title>
		<link>http://www.sunboyu.cn/2008/12/12/%e8%87%aa%e8%a1%8c%e8%bd%a6vs-program.shtml</link>
		<comments>http://www.sunboyu.cn/2008/12/12/%e8%87%aa%e8%a1%8c%e8%bd%a6vs-program.shtml#comments</comments>
		<pubDate>Fri, 12 Dec 2008 01:02:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<category><![CDATA[echo]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=419</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.sunboyu.cn/upfiles/2008/12/echo.jpg"><img class="aligncenter size-full wp-image-420" title="echo" src="http://www.sunboyu.cn/upfiles/2008/12/echo.jpg" alt="" width="500" height="333" /></a><a href="http://www.sunboyu.cn/upfiles/2008/12/java.jpg"><img class="aligncenter size-full wp-image-421" title="java" src="http://www.sunboyu.cn/upfiles/2008/12/java.jpg" alt="" width="500" height="346" /></a><a href="http://www.sunboyu.cn/upfiles/2008/12/python.jpg"><img class="aligncenter size-full wp-image-422" title="python" src="http://www.sunboyu.cn/upfiles/2008/12/python.jpg" alt="" width="500" height="375" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/12/12/%e8%87%aa%e8%a1%8c%e8%bd%a6vs-program.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>unix不是个简单的玩意，人要知道谦虚</title>
		<link>http://www.sunboyu.cn/2008/12/09/unix%e4%b8%8d%e6%98%af%e4%b8%aa%e7%ae%80%e5%8d%95%e7%9a%84%e7%8e%a9%e6%84%8f%ef%bc%8c%e4%ba%ba%e8%a6%81%e7%9f%a5%e9%81%93%e8%b0%a6%e8%99%9a.shtml</link>
		<comments>http://www.sunboyu.cn/2008/12/09/unix%e4%b8%8d%e6%98%af%e4%b8%aa%e7%ae%80%e5%8d%95%e7%9a%84%e7%8e%a9%e6%84%8f%ef%bc%8c%e4%ba%ba%e8%a6%81%e7%9f%a5%e9%81%93%e8%b0%a6%e8%99%9a.shtml#comments</comments>
		<pubDate>Tue, 09 Dec 2008 14:36:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[感悟]]></category>

		<category><![CDATA[日记]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=418</guid>
		<description><![CDATA[提醒自己一下，踏踏实实学基础。
周末继续买书去。
]]></description>
			<content:encoded><![CDATA[<p>提醒自己一下，踏踏实实学基础。<br />
周末继续买书去。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/12/09/unix%e4%b8%8d%e6%98%af%e4%b8%aa%e7%ae%80%e5%8d%95%e7%9a%84%e7%8e%a9%e6%84%8f%ef%bc%8c%e4%ba%ba%e8%a6%81%e7%9f%a5%e9%81%93%e8%b0%a6%e8%99%9a.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>购得一本新书：《Python网络编程基础》</title>
		<link>http://www.sunboyu.cn/2008/12/08/%e8%b4%ad%e5%be%97%e4%b8%80%e6%9c%ac%e6%96%b0%e4%b9%a6%ef%bc%9a%e3%80%8apython%e7%bd%91%e7%bb%9c%e7%bc%96%e7%a8%8b%e5%9f%ba%e7%a1%80%e3%80%8b.shtml</link>
		<comments>http://www.sunboyu.cn/2008/12/08/%e8%b4%ad%e5%be%97%e4%b8%80%e6%9c%ac%e6%96%b0%e4%b9%a6%ef%bc%9a%e3%80%8apython%e7%bd%91%e7%bb%9c%e7%bc%96%e7%a8%8b%e5%9f%ba%e7%a1%80%e3%80%8b.shtml#comments</comments>
		<pubDate>Mon, 08 Dec 2008 15:04:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[其他]]></category>

		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=416</guid>
		<description><![CDATA[过分迷信PHP是不行的，做事还得找专长

]]></description>
			<content:encoded><![CDATA[<p>过分迷信PHP是不行的，做事还得找专长<br />
<a href='http://www.sunboyu.cn/upfiles/2008/12/s2604186.jpg'><img src="http://www.sunboyu.cn/upfiles/2008/12/s2604186.jpg" alt="" title="s2604186" width="105" height="140" class="aligncenter size-full wp-image-417" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/12/08/%e8%b4%ad%e5%be%97%e4%b8%80%e6%9c%ac%e6%96%b0%e4%b9%a6%ef%bc%9a%e3%80%8apython%e7%bd%91%e7%bb%9c%e7%bc%96%e7%a8%8b%e5%9f%ba%e7%a1%80%e3%80%8b.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>解决php模块ssh2的编译问题</title>
		<link>http://www.sunboyu.cn/2008/12/07/%e8%a7%a3%e5%86%b3php%e6%a8%a1%e5%9d%97ssh2%e7%9a%84%e7%bc%96%e8%af%91%e9%97%ae%e9%a2%98.shtml</link>
		<comments>http://www.sunboyu.cn/2008/12/07/%e8%a7%a3%e5%86%b3php%e6%a8%a1%e5%9d%97ssh2%e7%9a%84%e7%bc%96%e8%af%91%e9%97%ae%e9%a2%98.shtml#comments</comments>
		<pubDate>Sun, 07 Dec 2008 13:50:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[php]]></category>

		<category><![CDATA[ssh2]]></category>

		<category><![CDATA[编译]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=415</guid>
		<description><![CDATA[这个问题一google就出来了，官方给出的解决方案，
在config.h里加上一个宏定义 #define LIBSSH2_APINO 200412301450,哇塞，一切OK
http://pecl.php.net/bugs/bug.php?id=9656
/root/ssh2-0.10/ssh2.c: In function 'zif_ssh2_methods_negotiated':
/root/ssh2-0.10/ssh2.c:483: warning: assignment discards qualifiers from pointer target type
/root/ssh2-0.10/ssh2.c:484: warning: assignment discards qualifiers from pointer target type
/root/ssh2-0.10/ssh2.c:485: warning: assignment discards qualifiers from pointer target type
/root/ssh2-0.10/ssh2.c:486: warning: assignment discards qualifiers from pointer target type
/root/ssh2-0.10/ssh2.c:487: warning: assignment discards qualifiers from pointer target type
/root/ssh2-0.10/ssh2.c:488: warning: assignment discards qualifiers from pointer target type
/root/ssh2-0.10/ssh2.c:489: [...]]]></description>
			<content:encoded><![CDATA[<p>这个问题一google就出来了，官方给出的解决方案，<br />
在config.h里加上一个宏定义 #define LIBSSH2_APINO 200412301450,哇塞，一切OK<br />
http://pecl.php.net/bugs/bug.php?id=9656</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">/root/ssh2-0.10/ssh2.c: In function 'zif_ssh2_methods_negotiated':</li>
<li>/root/ssh2-0.10/ssh2.c:483: warning: assignment discards qualifiers from pointer target type</li>
<li>/root/ssh2-0.10/ssh2.c:484: warning: assignment discards qualifiers from pointer target type</li>
<li>/root/ssh2-0.10/ssh2.c:485: warning: assignment discards qualifiers from pointer target type</li>
<li>/root/ssh2-0.10/ssh2.c:486: warning: assignment discards qualifiers from pointer target type</li>
<li>/root/ssh2-0.10/ssh2.c:487: warning: assignment discards qualifiers from pointer target type</li>
<li>/root/ssh2-0.10/ssh2.c:488: warning: assignment discards qualifiers from pointer target type</li>
<li>/root/ssh2-0.10/ssh2.c:489: warning: assignment discards qualifiers from pointer target type</li>
<li>/root/ssh2-0.10/ssh2.c:490: warning: assignment discards qualifiers from pointer target type</li>
<li>/root/ssh2-0.10/ssh2.c:491: warning: assignment discards qualifiers from pointer target type</li>
<li>/root/ssh2-0.10/ssh2.c:492: warning: assignment discards qualifiers from pointer target type</li>
<li>/root/ssh2-0.10/ssh2.c: In function 'zif_ssh2_fingerprint':</li>
<li>/root/ssh2-0.10/ssh2.c:536: warning: assignment discards qualifiers from pointer target type</li>
<li>/root/ssh2-0.10/ssh2.c: In function 'zif_ssh2_publickey_add':</li>
<li>/root/ssh2-0.10/ssh2.c:1038: warning: passing argument 1 of '_efree' discards qualifiers from pointer target type</li>
<li>/root/ssh2-0.10/ssh2.c: In function 'zif_ssh2_publickey_list':</li>
<li>/root/ssh2-0.10/ssh2.c:1097: warning: passing argument 4 of 'add_assoc_stringl_ex' discards qualifiers from pointer target type</li>
<li>/root/ssh2-0.10/ssh2.c:1098: warning: passing argument 4 of 'add_assoc_stringl_ex' discards qualifiers from pointer target type</li>
<li>/root/ssh2-0.10/ssh2.c:1106: warning: initialization discards qualifiers from pointer target type</li>
<li>/root/ssh2-0.10/ssh2.c:1107: warning: passing argument 2 of '_zend_hash_add_or_update' discards qualifiers from pointer target type</li>
<li>/bin/sh /root/ssh2-0.10/libtool --mode=compile gcc&nbsp; -I. -I</li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/12/07/%e8%a7%a3%e5%86%b3php%e6%a8%a1%e5%9d%97ssh2%e7%9a%84%e7%bc%96%e8%af%91%e9%97%ae%e9%a2%98.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>山穷水复疑无路，柳暗花明又一村</title>
		<link>http://www.sunboyu.cn/2008/12/07/%e5%b1%b1%e7%a9%b7%e6%b0%b4%e5%a4%8d%e7%96%91%e6%97%a0%e8%b7%af%ef%bc%8c%e6%9f%b3%e6%9a%97%e8%8a%b1%e6%98%8e%e5%8f%88%e4%b8%80%e6%9d%91.shtml</link>
		<comments>http://www.sunboyu.cn/2008/12/07/%e5%b1%b1%e7%a9%b7%e6%b0%b4%e5%a4%8d%e7%96%91%e6%97%a0%e8%b7%af%ef%bc%8c%e6%9f%b3%e6%9a%97%e8%8a%b1%e6%98%8e%e5%8f%88%e4%b8%80%e6%9d%91.shtml#comments</comments>
		<pubDate>Sat, 06 Dec 2008 16:13:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[php]]></category>

		<category><![CDATA[ssh2]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=413</guid>
		<description><![CDATA[学习就是这样，突然发现了PHP居然有ssh2的模块，这样远程连接linux服务器就很容易，我正头疼用socket写个ssh2的连接类，突然就发现了这个玩意。手册看得还是少，罚吃巧克力一块。
官方文档:http://www.php.net/manual/en/book.ssh2.php
]]></description>
			<content:encoded><![CDATA[<p>学习就是这样，突然发现了PHP居然有ssh2的模块，这样远程连接linux服务器就很容易，我正头疼用socket写个ssh2的连接类，突然就发现了这个玩意。手册看得还是少，罚吃巧克力一块。<br />
官方文档:http://www.php.net/manual/en/book.ssh2.php</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/12/07/%e5%b1%b1%e7%a9%b7%e6%b0%b4%e5%a4%8d%e7%96%91%e6%97%a0%e8%b7%af%ef%bc%8c%e6%9f%b3%e6%9a%97%e8%8a%b1%e6%98%8e%e5%8f%88%e4%b8%80%e6%9d%91.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>CentPHP V1.0 release</title>
		<link>http://www.sunboyu.cn/2008/12/05/centphp-v10-release.shtml</link>
		<comments>http://www.sunboyu.cn/2008/12/05/centphp-v10-release.shtml#comments</comments>
		<pubDate>Fri, 05 Dec 2008 14:06:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[CentPHP]]></category>

		<category><![CDATA[php框架]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=412</guid>
		<description><![CDATA[1.0不发布，1.1就不会出来，折腾了半月，终于写了个简单的框架，虽然只有简单的几个类，但基本实现了全OOP的操作。这个归功于网上众多的开源软件，没有这些资源的帮助，就不会有我的进步。
取名CentPHP，是因为我希望它像CentPHP一样强大稳定，而且免费开源。
最终把session的数据库保存方式给去了，因为太麻烦，模板引擎基本没什么功能，只有传值和显示，虽然进行了一些优化，但没有彻底跟踪排查资源调用情况，这个在以后版本要逐渐修正。
下边是相关文件列表，源码～～～～～～～～～等实现完一个项目后放出……
F:.
│  Index.php
│
├─lib
│  └─kernel
│          CentPHP.php
│          Class.Controller.php
│          Class.CP.php
│          Class.Mysql.php
│          Class.Router.php
│ [...]]]></description>
			<content:encoded><![CDATA[<p>1.0不发布，1.1就不会出来，折腾了半月，终于写了个简单的框架，虽然只有简单的几个类，但基本实现了全OOP的操作。这个归功于网上众多的开源软件，没有这些资源的帮助，就不会有我的进步。</p>
<p>取名CentPHP，是因为我希望它像CentPHP一样强大稳定，而且免费开源。</p>
<p>最终把session的数据库保存方式给去了，因为太麻烦，模板引擎基本没什么功能，只有传值和显示，虽然进行了一些优化，但没有彻底跟踪排查资源调用情况，这个在以后版本要逐渐修正。<br />
下边是相关文件列表，源码～～～～～～～～～等实现完一个项目后放出……</p>
<p>F:.<br />
│  Index.php<br />
│<br />
├─lib<br />
│  └─kernel<br />
│          CentPHP.php<br />
│          Class.Controller.php<br />
│          Class.CP.php<br />
│          Class.Mysql.php<br />
│          Class.Router.php<br />
│          Class.URI.php<br />
│          Class.View.php<br />
│          Common.php<br />
│<br />
├─usr<br />
│  ├─config<br />
│  │      Config.Mysql.php<br />
│  │      Config.View.php<br />
│  │<br />
│  ├─controllers<br />
│  │      welcome.php<br />
│  │<br />
│  ├─lib<br />
│  │      Class.Session.php<br />
│  │<br />
│  └─views<br />
│          welcome.php<br />
│<br />
└─var</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/12/05/centphp-v10-release.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>Session处理，比较怪异的应用</title>
		<link>http://www.sunboyu.cn/2008/12/04/session%e5%a4%84%e7%90%86%ef%bc%8c%e6%af%94%e8%be%83%e6%80%aa%e5%bc%82%e7%9a%84%e5%ba%94%e7%94%a8.shtml</link>
		<comments>http://www.sunboyu.cn/2008/12/04/session%e5%a4%84%e7%90%86%ef%bc%8c%e6%af%94%e8%be%83%e6%80%aa%e5%bc%82%e7%9a%84%e5%ba%94%e7%94%a8.shtml#comments</comments>
		<pubDate>Thu, 04 Dec 2008 15:47:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[session]]></category>

		<category><![CDATA[钩子]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=411</guid>
		<description><![CDATA[其实我很不喜欢把session放在数据库中处理，不过公司一直这么用，就先这么写，更倒霉的是，花了老大力气集成在一个不适合大项目的小框架里。
session本来是用URI类统一处理，过滤全局变量中的不安全因素，这样依赖，因为要重写session的几个方法，把原来的流程整得乱七八糟。
我正在想，是不是要把他做成一个钩子，钩挂在原来系统中，通过命令的方式开关，这样貌似是个不错的办法，不过，得把钩子的类写好……
补充：session放到数据库中的好处：可以即时得查看在新的用户（当然不是非常准确），可以踢人，如果是有登录认证的话。缺点：速度贼拉得慢，不如放到内存中。操作一次内存，得反复读写数据库，且不说硬盘，网络传输就是不消的消耗。
]]></description>
			<content:encoded><![CDATA[<p>其实我很不喜欢把session放在数据库中处理，不过公司一直这么用，就先这么写，更倒霉的是，花了老大力气集成在一个不适合大项目的小框架里。<br />
session本来是用URI类统一处理，过滤全局变量中的不安全因素，这样依赖，因为要重写session的几个方法，把原来的流程整得乱七八糟。<br />
我正在想，是不是要把他做成一个钩子，钩挂在原来系统中，通过命令的方式开关，这样貌似是个不错的办法，不过，得把钩子的类写好……</p>
<p>补充：session放到数据库中的好处：可以即时得查看在新的用户（当然不是非常准确），可以踢人，如果是有登录认证的话。缺点：速度贼拉得慢，不如放到内存中。操作一次内存，得反复读写数据库，且不说硬盘，网络传输就是不消的消耗。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/12/04/session%e5%a4%84%e7%90%86%ef%bc%8c%e6%af%94%e8%be%83%e6%80%aa%e5%bc%82%e7%9a%84%e5%ba%94%e7%94%a8.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>PHP5.2.7RC版本发布</title>
		<link>http://www.sunboyu.cn/2008/12/04/php527rc%e7%89%88%e6%9c%ac%e5%8f%91%e5%b8%83.shtml</link>
		<comments>http://www.sunboyu.cn/2008/12/04/php527rc%e7%89%88%e6%9c%ac%e5%8f%91%e5%b8%83.shtml#comments</comments>
		<pubDate>Thu, 04 Dec 2008 04:01:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[php]]></category>

		<category><![CDATA[php5.2.7]]></category>

		<category><![CDATA[发布]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=410</guid>
		<description><![CDATA[官方地址 http://qa.php.net/
下载地址 http://downloads.php.net/ilia/php-5.2.7RC5.tar.gz
]]></description>
			<content:encoded><![CDATA[<p>官方地址 http://qa.php.net/</p>
<p>下载地址 http://downloads.php.net/ilia/php-5.2.7RC5.tar.gz</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/12/04/php527rc%e7%89%88%e6%9c%ac%e5%8f%91%e5%b8%83.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>Windows下安装Apache，Mysql，PHP过程详解</title>
		<link>http://www.sunboyu.cn/2008/12/04/windows%e4%b8%8b%e5%ae%89%e8%a3%85apache%ef%bc%8cmysql%ef%bc%8cphp%e8%bf%87%e7%a8%8b%e8%af%a6%e8%a7%a3.shtml</link>
		<comments>http://www.sunboyu.cn/2008/12/04/windows%e4%b8%8b%e5%ae%89%e8%a3%85apache%ef%bc%8cmysql%ef%bc%8cphp%e8%bf%87%e7%a8%8b%e8%af%a6%e8%a7%a3.shtml#comments</comments>
		<pubDate>Thu, 04 Dec 2008 01:40:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[apache]]></category>

		<category><![CDATA[mysql]]></category>

		<category><![CDATA[php]]></category>

		<category><![CDATA[wamp]]></category>

		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=409</guid>
		<description><![CDATA[原则：使用官方程序，完全自己配置，不使用其他辅助工具套件等。
准备：
apache2.2.*   http://httpd.apache.org/download.cgi   如果有stable版本，最好用stable版，其实最新版作为调试也不错
PHP5.2.*  http://www.php.net/downloads.php  目前是5.2.6
mysql5.1  http://dev.mysql.com/downloads/mysql/5.1.html  下载windows安装版本
1、安装Apache，安装路径随意，默认即可，手工管理更好，建议放到 d:\Apache 放D盘是为了以后重装的话，所有的配置文件都还在（备份不仅要备份数据，还要备份不起眼的配置文件）
2、安装Mysql，同上，安装到 D:\Mysql  理由同上
3、解压PHP5.2.×至目录 D:\PHP5 理由还是同上
4、配置环境变量：在桌面上找到“我的电脑”，右键点击“我的电脑”，选择“属性”里的“高级”标签，点击“环境变量”，在“系统变量”里找到“Path”，点击“编辑”按钮，在“变量值”后面加上“;D:\PHP5\;D:\PHP5\ext”，然后点“确定”退出。环境变量配置完成。（windows下Path环境变量是做什么用，google一下先，这样设置后，系统会自动搜索PHP目录里的可执行文件和加载类库）
5、进入PHP5目录下，找到php.ini-dist文件，将其复制到C盘的WINDOWS目录下，并将其文件名修改为“php.ini”。（php会默认从这个路径找php.ini这个文件，当然也可以手工指定这个目录，修改apache的配置文件即可）
6、再次进入PHP5目录下，将以下文件复制到C盘的WINDOWS目录下的System32里：（原因，我也不太清楚，但貌似可以设置一个环境变量指向这个路径就ok，那个方法一直没找到，也没理解）
fdftk.dll
gds32.dll
libeay32.dll
libmcrypt.dll
libmhash.dll
libmysql.dll
msql.dll
news.txt
ntwdblib.dll
7、打开Apache的主目录，进入conf文件夹，找到“httpd.conf”文件，为操作方便起见，建议使用Dreamweaver打开它。打开后在第126行左右找到 LoadModule vhost_alias_module modules/mod_vhost_alias.so，在后面添加以下语句：
LoadModule php5_module &#8220;D:/PHP5/php5apache2_2_filter.dll
&#8220;AddType application/x-httpd-php .php
添加完成后保存文件。
8、在apache主目录下htdocs下创建index.php文件，内容为&#60;?php phpinfo(); ?&#62;保存。
9、在浏览器的地址栏里输入http://127.0.0.1/index.php。即可打开显示PHP信息的页面。配置成功。
]]></description>
			<content:encoded><![CDATA[<p>原则：使用官方程序，完全自己配置，不使用其他辅助工具套件等。</p>
<p>准备：</p>
<p>apache2.2.*   http://httpd.apache.org/download.cgi   如果有stable版本，最好用stable版，其实最新版作为调试也不错</p>
<p>PHP5.2.*  http://www.php.net/downloads.php  目前是5.2.6</p>
<p>mysql5.1  http://dev.mysql.com/downloads/mysql/5.1.html  下载windows安装版本</p>
<p>1、安装Apache，安装路径随意，默认即可，手工管理更好，建议放到 d:\Apache 放D盘是为了以后重装的话，所有的配置文件都还在（备份不仅要备份数据，还要备份不起眼的配置文件）</p>
<p>2、安装Mysql，同上，安装到 D:\Mysql  理由同上</p>
<p>3、解压PHP5.2.×至目录 D:\PHP5 理由还是同上</p>
<p>4、配置环境变量：在桌面上找到“我的电脑”，右键点击“我的电脑”，选择“属性”里的“高级”标签，点击“环境变量”，在“系统变量”里找到“Path”，点击“编辑”按钮，在“变量值”后面加上“;D:\PHP5\;D:\PHP5\ext”，然后点“确定”退出。环境变量配置完成。（windows下Path环境变量是做什么用，google一下先，这样设置后，系统会自动搜索PHP目录里的可执行文件和加载类库）</p>
<p>5、进入PHP5目录下，找到php.ini-dist文件，将其复制到C盘的WINDOWS目录下，并将其文件名修改为“php.ini”。（php会默认从这个路径找php.ini这个文件，当然也可以手工指定这个目录，修改apache的配置文件即可）</p>
<p>6、再次进入PHP5目录下，将以下文件复制到C盘的WINDOWS目录下的System32里：（原因，我也不太清楚，但貌似可以设置一个环境变量指向这个路径就ok，那个方法一直没找到，也没理解）<br />
fdftk.dll<br />
gds32.dll<br />
libeay32.dll<br />
libmcrypt.dll<br />
libmhash.dll<br />
libmysql.dll<br />
msql.dll<br />
news.txt<br />
ntwdblib.dll</p>
<p>7、打开Apache的主目录，进入conf文件夹，找到“httpd.conf”文件，为操作方便起见，建议使用Dreamweaver打开它。打开后在第126行左右找到 LoadModule vhost_alias_module modules/mod_vhost_alias.so，在后面添加以下语句：<br />
LoadModule php5_module &#8220;D:/PHP5/php5apache2_2_filter.dll<br />
&#8220;AddType application/x-httpd-php .php<br />
添加完成后保存文件。</p>
<p>8、在apache主目录下htdocs下创建index.php文件，内容为&lt;?php phpinfo(); ?&gt;保存。</p>
<p>9、在浏览器的地址栏里输入http://127.0.0.1/index.php。即可打开显示PHP信息的页面。配置成功。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/12/04/windows%e4%b8%8b%e5%ae%89%e8%a3%85apache%ef%bc%8cmysql%ef%bc%8cphp%e8%bf%87%e7%a8%8b%e8%af%a6%e8%a7%a3.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>框架资源消耗分析</title>
		<link>http://www.sunboyu.cn/2008/12/03/%e6%a1%86%e6%9e%b6%e8%b5%84%e6%ba%90%e6%b6%88%e8%80%97%e5%88%86%e6%9e%90.shtml</link>
		<comments>http://www.sunboyu.cn/2008/12/03/%e6%a1%86%e6%9e%b6%e8%b5%84%e6%ba%90%e6%b6%88%e8%80%97%e5%88%86%e6%9e%90.shtml#comments</comments>
		<pubDate>Wed, 03 Dec 2008 14:42:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[原创技术]]></category>

		<category><![CDATA[效率]]></category>

		<category><![CDATA[框架]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=408</guid>
		<description><![CDATA[简单使用了下CI框架，发现了不少技巧：在 Controller类中实例化了好多的类
function _ci_initialize()
	{
		// Assign all the class objects that were instantiated by the
		// front controller to local class variables so that CI can be
		// run as one big super object.
		$classes = array(
							'config'	=&#62; 'Config',
							'input'		=&#62; 'Input',
							'benchmark'	=&#62; 'Benchmark',
							'uri'		=&#62; 'URI',
							'output'	=&#62; 'Output',
							'lang'		=&#62; 'Language',
							'router'	=&#62; 'Router'
							);
		
		foreach ($classes as $var =&#62; $class)
		{
			$this-&#62;$var =&#38; load_class($class);
		}
&#160;
		// In PHP 5 the Loader class is run as [...]]]></description>
			<content:encoded><![CDATA[<p>简单使用了下CI框架，发现了不少技巧：在 Controller类中实例化了好多的类</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">function _ci_initialize()</li>
<li>	{</li>
<li>		// Assign all the class objects that were instantiated by the</li>
<li>		// front controller to local class variables so that CI can be</li>
<li>		// run as one big super object.</li>
<li>		$classes = array(</li>
<li>							'config'	=&gt; 'Config',</li>
<li>							'input'		=&gt; 'Input',</li>
<li>							'benchmark'	=&gt; 'Benchmark',</li>
<li>							'uri'		=&gt; 'URI',</li>
<li>							'output'	=&gt; 'Output',</li>
<li>							'lang'		=&gt; 'Language',</li>
<li>							'router'	=&gt; 'Router'</li>
<li>							);</li>
<li>		</li>
<li>		foreach ($classes as $var =&gt; $class)</li>
<li>		{</li>
<li>			$this-&gt;$var =&amp; load_class($class);</li>
<li>		}</li>
<li>&nbsp;</li>
<li>		// In PHP 5 the Loader class is run as a discreet</li>
<li>		// class.&nbsp; In PHP 4 it extends the Controller</li>
<li>		if (floor(phpversion()) &gt;= 5)</li>
<li>		{</li>
<li>			$this-&gt;load =&amp; load_class('Loader');</li>
<li>			$this-&gt;load-&gt;_ci_autoloader();</li>
<li>		}</li>
<li>		else</li>
<li>		{</li>
<li>			$this-&gt;_ci_autoloader();</li>
<li>			</li>
<li>			// sync up the objects since PHP4 was working from a copy</li>
<li>			foreach (array_keys(get_object_vars($this)) as $attribute)</li>
<li>			{</li>
<li>				if (is_object($this-&gt;$attribute))</li>
<li>				{</li>
<li>					$this-&gt;load-&gt;$attribute =&amp; $this-&gt;$attribute;</li>
<li>				}</li>
<li>			}</li>
<li>		}</li></ol></div>
<p>然后在默认welcome的模型里print_r($this),那是一个密密麻麻阿，无数的实例化数据摆在这里，估计内存CPU消耗也是惊人。<br />
当然，作者并不是没有解决这些问题，所有的类在实例化之后使用static的方式常驻内存中，在第一次加载后，响应时间明显缩短，我本地测试是否默认实例化如此多的对象速度没有明显的差别。<br />
对于原来我写程序，其实是有洁癖的，或者是心理障碍，就是像写C一样仔细考虑每个变量和每个方法，计算操作复杂度，其实对于整个系统开发和PHP这们语言来说，这么开发其实是杞人忧天，因为PHP本身就可以处理这些问题，比如static方法，一些缓存。<br />
在进行各种测试之后，我的类库居然也默认加载了一些方法，只是应用在小网站中。<br />
对于大型网站，还是要充分考虑效率性能的问题。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/12/03/%e6%a1%86%e6%9e%b6%e8%b5%84%e6%ba%90%e6%b6%88%e8%80%97%e5%88%86%e6%9e%90.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>在懒惰中发展</title>
		<link>http://www.sunboyu.cn/2008/12/02/%e5%9c%a8%e6%87%92%e6%83%b0%e4%b8%ad%e5%8f%91%e5%b1%95.shtml</link>
		<comments>http://www.sunboyu.cn/2008/12/02/%e5%9c%a8%e6%87%92%e6%83%b0%e4%b8%ad%e5%8f%91%e5%b1%95.shtml#comments</comments>
		<pubDate>Tue, 02 Dec 2008 14:39:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[感悟]]></category>

		<category><![CDATA[危机]]></category>

		<category><![CDATA[发展]]></category>

		<category><![CDATA[学习]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=407</guid>
		<description><![CDATA[最近写代码总有疲倦的感觉，可能是快过年了，心思全在年关上。
期望中的框架也许全是OOP+非常规范的结构，其实未必是最合理的，为了偷懒，部分操作还是用函数来实现，然后通过引用把函数附给类的方法，其实这样解决了很多问题，可以在类中直接调用，也可以作为类的一个方法。这样节约了代码，节约了操作。
本想买本SOA的书看看，最终还是没走到书店，跟上半年学习的激情相差老远。经济危机，多少会优点压力，工作的压力是一部分，社会给予的无形压力最能压人，社会是真正的敌人。记得中学老师总说大学是半个社会，现在真走到社会上，才发现那些老师其实混得比我惨多了，他们压力更大。他们能顶住，我为何不能。
今天去了一个车行买了点配件，把车装修一下，车老板是个女孩，正在考研，她老公帮她打理店铺。其实这是我简单的目标，有自己的一个小店，也需收入不是多么丰厚，但一定要留出自己发展的道路。
保证每天翻书，一定得坚持，即使一天一页。
]]></description>
			<content:encoded><![CDATA[<p>最近写代码总有疲倦的感觉，可能是快过年了，心思全在年关上。</p>
<p>期望中的框架也许全是OOP+非常规范的结构，其实未必是最合理的，为了偷懒，部分操作还是用函数来实现，然后通过引用把函数附给类的方法，其实这样解决了很多问题，可以在类中直接调用，也可以作为类的一个方法。这样节约了代码，节约了操作。</p>
<p>本想买本SOA的书看看，最终还是没走到书店，跟上半年学习的激情相差老远。经济危机，多少会优点压力，工作的压力是一部分，社会给予的无形压力最能压人，社会是真正的敌人。记得中学老师总说大学是半个社会，现在真走到社会上，才发现那些老师其实混得比我惨多了，他们压力更大。他们能顶住，我为何不能。</p>
<p>今天去了一个车行买了点配件，把车装修一下，车老板是个女孩，正在考研，她老公帮她打理店铺。其实这是我简单的目标，有自己的一个小店，也需收入不是多么丰厚，但一定要留出自己发展的道路。</p>
<p>保证每天翻书，一定得坚持，即使一天一页。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/12/02/%e5%9c%a8%e6%87%92%e6%83%b0%e4%b8%ad%e5%8f%91%e5%b1%95.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>框架开发的两个主方向</title>
		<link>http://www.sunboyu.cn/2008/12/02/%e6%a1%86%e6%9e%b6%e5%bc%80%e5%8f%91%e7%9a%84%e4%b8%a4%e4%b8%aa%e4%b8%bb%e6%96%b9%e5%90%91.shtml</link>
		<comments>http://www.sunboyu.cn/2008/12/02/%e6%a1%86%e6%9e%b6%e5%bc%80%e5%8f%91%e7%9a%84%e4%b8%a4%e4%b8%aa%e4%b8%bb%e6%96%b9%e5%90%91.shtml#comments</comments>
		<pubDate>Tue, 02 Dec 2008 05:50:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[内存消耗]]></category>

		<category><![CDATA[效率]]></category>

		<category><![CDATA[框架]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=406</guid>
		<description><![CDATA[最近一直在研究框架，翻阅了各大框架结构，最后总结出两点：性能和接口规范。
1、接口规范
框架的一大意义在于整合类库和资源，使用统一的接口和统一的方式进行调用，统一的接口又更加方便其他资源的整合，模块化的管理更容易对代码进行管理。这样，可以使得不同的开发人员形成一致的风格进行分工协作。
2、效率
框架在整合类库，判断路由的时候，毕竟消耗很多冗余操作。太多的类库加载也将耗费很多的内存和CPU，因此，框架开发的另一个要点就是要降低操作复杂性，降低内存消耗，在这个基础上有可优化性。
总结到这里，晚上继续玩命……
]]></description>
			<content:encoded><![CDATA[<p>最近一直在研究框架，翻阅了各大框架结构，最后总结出两点：性能和接口规范。<br />
1、接口规范<br />
框架的一大意义在于整合类库和资源，使用统一的接口和统一的方式进行调用，统一的接口又更加方便其他资源的整合，模块化的管理更容易对代码进行管理。这样，可以使得不同的开发人员形成一致的风格进行分工协作。<br />
2、效率<br />
框架在整合类库，判断路由的时候，毕竟消耗很多冗余操作。太多的类库加载也将耗费很多的内存和CPU，因此，框架开发的另一个要点就是要降低操作复杂性，降低内存消耗，在这个基础上有可优化性。</p>
<p>总结到这里，晚上继续玩命……</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/12/02/%e6%a1%86%e6%9e%b6%e5%bc%80%e5%8f%91%e7%9a%84%e4%b8%a4%e4%b8%aa%e4%b8%bb%e6%96%b9%e5%90%91.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>炮爷,经济危机进村了</title>
		<link>http://www.sunboyu.cn/2008/12/01/%e7%82%ae%e7%88%b7%e7%bb%8f%e6%b5%8e%e5%8d%b1%e6%9c%ba%e8%bf%9b%e6%9d%91%e4%ba%86.shtml</link>
		<comments>http://www.sunboyu.cn/2008/12/01/%e7%82%ae%e7%88%b7%e7%bb%8f%e6%b5%8e%e5%8d%b1%e6%9c%ba%e8%bf%9b%e6%9d%91%e4%ba%86.shtml#comments</comments>
		<pubDate>Mon, 01 Dec 2008 14:44:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[相当拍砖]]></category>

		<category><![CDATA[下岗]]></category>

		<category><![CDATA[经济危机]]></category>

		<category><![CDATA[裁员]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=405</guid>
		<description><![CDATA[年底，真应了贺爷的话，金融风波到来了。
上周六还看见炮爷在抱怨加班，周一上午炮爷公司就突然宣布解散。这事要给我也就认了，人总得去尝试，可炮爷就惨点。
刚认识炮爷是在4月左右，群内我跟炮爷一起求职，有天突然面试了一个公司，在学院路财富大厦，结果炮爷来得晚走得早，倒是我在那里耗了半天。炮爷看来脾气比我直得多，直接就把那孙子枪毙了，我就比较虚伪了，装腔作势面了半天，得给人家人事找点事干，表示对人家工作的肯定和尊重，另外，那人事的确脑子不好使，忽悠人的话前后不着边，比起大公司的人事确实差劲，后来托辞走了。炮爷在处理这类事情上是优于我的，而我必须跟人接触后才能分辨。
后炮爷跟群内几位大哥级人物混CBD去，我依然留在海淀。
炮爷去CBD后第一个工作不错，跟着大哥们不亦乐乎，技术突飞猛进，甚是惊人。不过乐极生悲，两个月后该部门集体被裁，一位老大去跟村长混事，炮爷跟另一位老大去一新公司发展。
按说炮爷的公司是财大气粗，前途无量，不过好景也没有持续多长，这不11月，正赶上全球金融危机，危机的浪花直逼北京互联网行业，各个公司只出人不进人，很多公司已经是只有出的气，没有进的气。这不，据说炮爷的老东家搞投资亏了几个亿，炮爷也跟着经济的大潮光荣下岗。
现在，炮爷只有跟着他的空姐老婆混了，年前找工作是不太容易，炮爷欠我的十瓶啤酒今年估计也还不上了。
]]></description>
			<content:encoded><![CDATA[<p>年底，真应了贺爷的话，金融风波到来了。</p>
<p>上周六还看见炮爷在抱怨加班，周一上午炮爷公司就突然宣布解散。这事要给我也就认了，人总得去尝试，可炮爷就惨点。</p>
<p>刚认识炮爷是在4月左右，群内我跟炮爷一起求职，有天突然面试了一个公司，在学院路财富大厦，结果炮爷来得晚走得早，倒是我在那里耗了半天。炮爷看来脾气比我直得多，直接就把那孙子枪毙了，我就比较虚伪了，装腔作势面了半天，得给人家人事找点事干，表示对人家工作的肯定和尊重，另外，那人事的确脑子不好使，忽悠人的话前后不着边，比起大公司的人事确实差劲，后来托辞走了。炮爷在处理这类事情上是优于我的，而我必须跟人接触后才能分辨。</p>
<p>后炮爷跟群内几位大哥级人物混CBD去，我依然留在海淀。</p>
<p>炮爷去CBD后第一个工作不错，跟着大哥们不亦乐乎，技术突飞猛进，甚是惊人。不过乐极生悲，两个月后该部门集体被裁，一位老大去跟村长混事，炮爷跟另一位老大去一新公司发展。</p>
<p>按说炮爷的公司是财大气粗，前途无量，不过好景也没有持续多长，这不11月，正赶上全球金融危机，危机的浪花直逼北京互联网行业，各个公司只出人不进人，很多公司已经是只有出的气，没有进的气。这不，据说炮爷的老东家搞投资亏了几个亿，炮爷也跟着经济的大潮光荣下岗。</p>
<p>现在，炮爷只有跟着他的空姐老婆混了，年前找工作是不太容易，炮爷欠我的十瓶啤酒今年估计也还不上了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/12/01/%e7%82%ae%e7%88%b7%e7%bb%8f%e6%b5%8e%e5%8d%b1%e6%9c%ba%e8%bf%9b%e6%9d%91%e4%ba%86.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>经济危机了，LAMPer们应该做点什么</title>
		<link>http://www.sunboyu.cn/2008/11/30/%e7%bb%8f%e6%b5%8e%e5%8d%b1%e6%9c%ba%e4%ba%86%ef%bc%8clamper%e4%bb%ac%e5%ba%94%e8%af%a5%e5%81%9a%e7%82%b9%e4%bb%80%e4%b9%88.shtml</link>
		<comments>http://www.sunboyu.cn/2008/11/30/%e7%bb%8f%e6%b5%8e%e5%8d%b1%e6%9c%ba%e4%ba%86%ef%bc%8clamper%e4%bb%ac%e5%ba%94%e8%af%a5%e5%81%9a%e7%82%b9%e4%bb%80%e4%b9%88.shtml#comments</comments>
		<pubDate>Sun, 30 Nov 2008 09:45:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=404</guid>
		<description><![CDATA[1、不要怕，经济危机对我们这些搞技术的冲击最小，除非你花钱如流水，每天往返高档消费场所（这样的人好像也就不搞技术了），稳住，IT互联网市场就跟电信一样，永远不会跨，只是一时黯淡而已，总有复苏的时候。
2、保持积极向上的心情，这种心情在经济危机时候尤其重要。因为很多人在经济危机，行业不景气的时候会选择其他的行业，这时候是我们潜心修行的好时候，等行业复苏的时候我们一炮杀出，毕竟取胜于市场。
3、不要期待老板给你加薪升职，员工总是难以理解老板的苦，尤其是这个时候。能保证公司顺利度过难关是老板要想的，当然老板心情会很清楚谁在努力。但是也未必你的雇主是周扒皮。
4、尽量不要跳槽，跳槽只能让你从零开始，经济危机下公司发展会变得缓慢，即使你有能力，也不如平时容易发挥出来，造成自己发展缓慢。
5、潜心修炼。经济危机或多或少都让一些闲适少起来，流出更多的时间，你可以把自己的专业知识砸实，可以学一门更高级的编程语言，可以考一些证，成为以后加薪的理由。总之，如果能认清楚形势，这对我们是个好事。
6、经济再不好，还是有一些机会的，尝试找到一些平时不容易出现的机会。
7、保持在圈里，经济危机是又周期的，等下一次危机来临的时候，我们已经积累了足够的经验。
]]></description>
			<content:encoded><![CDATA[<p>1、不要怕，经济危机对我们这些搞技术的冲击最小，除非你花钱如流水，每天往返高档消费场所（这样的人好像也就不搞技术了），稳住，IT互联网市场就跟电信一样，永远不会跨，只是一时黯淡而已，总有复苏的时候。</p>
<p>2、保持积极向上的心情，这种心情在经济危机时候尤其重要。因为很多人在经济危机，行业不景气的时候会选择其他的行业，这时候是我们潜心修行的好时候，等行业复苏的时候我们一炮杀出，毕竟取胜于市场。</p>
<p>3、不要期待老板给你加薪升职，员工总是难以理解老板的苦，尤其是这个时候。能保证公司顺利度过难关是老板要想的，当然老板心情会很清楚谁在努力。但是也未必你的雇主是周扒皮。</p>
<p>4、尽量不要跳槽，跳槽只能让你从零开始，经济危机下公司发展会变得缓慢，即使你有能力，也不如平时容易发挥出来，造成自己发展缓慢。</p>
<p>5、潜心修炼。经济危机或多或少都让一些闲适少起来，流出更多的时间，你可以把自己的专业知识砸实，可以学一门更高级的编程语言，可以考一些证，成为以后加薪的理由。总之，如果能认清楚形势，这对我们是个好事。</p>
<p>6、经济再不好，还是有一些机会的，尝试找到一些平时不容易出现的机会。</p>
<p>7、保持在圈里，经济危机是又周期的，等下一次危机来临的时候，我们已经积累了足够的经验。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/11/30/%e7%bb%8f%e6%b5%8e%e5%8d%b1%e6%9c%ba%e4%ba%86%ef%bc%8clamper%e4%bb%ac%e5%ba%94%e8%af%a5%e5%81%9a%e7%82%b9%e4%bb%80%e4%b9%88.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>框架学习之起步阶段：罗马的出发</title>
		<link>http://www.sunboyu.cn/2008/11/27/%e6%a1%86%e6%9e%b6%e5%ad%a6%e4%b9%a0%e4%b9%8b%e8%b5%b7%e6%ad%a5%e9%98%b6%e6%ae%b5%ef%bc%9a%e7%bd%97%e9%a9%ac%e7%9a%84%e5%87%ba%e5%8f%91.shtml</link>
		<comments>http://www.sunboyu.cn/2008/11/27/%e6%a1%86%e6%9e%b6%e5%ad%a6%e4%b9%a0%e4%b9%8b%e8%b5%b7%e6%ad%a5%e9%98%b6%e6%ae%b5%ef%bc%9a%e7%bd%97%e9%a9%ac%e7%9a%84%e5%87%ba%e5%8f%91.shtml#comments</comments>
		<pubDate>Thu, 27 Nov 2008 14:11:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[url路由]]></category>

		<category><![CDATA[框架]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=403</guid>
		<description><![CDATA[罗马真的不是一天建成的，不能不承认，那些框架作者在此花费的精力。我的框架只写了一个说明，两个函数，就已经尽兴不下去了，当然跟这几天的感冒有关，不过，更多的是我没有理清框架应该有的结构。
一个优秀的框架除了规范化大部分操作外，其在效率和性能损耗上做了进步一的改进，从而能够高效处理复杂的操作。
第一个自动加载类的函数，参考了下PHP手册关于引用部分，才发现自己原来写类的方法，是如何的消耗内存和CPU，任何一个方法的诞生都是有其目的的，不能认为PHP是神，但PHP毕竟比我强，因此我还是要相信这些我不熟悉的操作是有用武之地的。
第二个方法，是要定义URI路由，URI路由我会尽量使用逐一匹配的方式进行解析，但有些操作不确定变量数量的时候，简单使用正则。我正则不很强，但也对着手册也可以写，但我总感觉这玩意太费劲，大脑想着费劲，电脑做着肯定费劲。有简单的方式，为何用难的，难道只是为了省点代码空间么，没必要的。
不过说到底，正则这东西还是很有用，不能因为效率差而失去，计划写个分支，把简单的用模板匹配，复杂的用正则，皆大欢喜。
不过写之前，还是要大量翻看别人的东西。
]]></description>
			<content:encoded><![CDATA[<p>罗马真的不是一天建成的，不能不承认，那些框架作者在此花费的精力。我的框架只写了一个说明，两个函数，就已经尽兴不下去了，当然跟这几天的感冒有关，不过，更多的是我没有理清框架应该有的结构。</p>
<p>一个优秀的框架除了规范化大部分操作外，其在效率和性能损耗上做了进步一的改进，从而能够高效处理复杂的操作。</p>
<p>第一个自动加载类的函数，参考了下PHP手册关于引用部分，才发现自己原来写类的方法，是如何的消耗内存和CPU，任何一个方法的诞生都是有其目的的，不能认为PHP是神，但PHP毕竟比我强，因此我还是要相信这些我不熟悉的操作是有用武之地的。</p>
<p>第二个方法，是要定义URI路由，URI路由我会尽量使用逐一匹配的方式进行解析，但有些操作不确定变量数量的时候，简单使用正则。我正则不很强，但也对着手册也可以写，但我总感觉这玩意太费劲，大脑想着费劲，电脑做着肯定费劲。有简单的方式，为何用难的，难道只是为了省点代码空间么，没必要的。</p>
<p>不过说到底，正则这东西还是很有用，不能因为效率差而失去，计划写个分支，把简单的用模板匹配，复杂的用正则，皆大欢喜。</p>
<p>不过写之前，还是要大量翻看别人的东西。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/11/27/%e6%a1%86%e6%9e%b6%e5%ad%a6%e4%b9%a0%e4%b9%8b%e8%b5%b7%e6%ad%a5%e9%98%b6%e6%ae%b5%ef%bc%9a%e7%bd%97%e9%a9%ac%e7%9a%84%e5%87%ba%e5%8f%91.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>感冒一周，今日好转</title>
		<link>http://www.sunboyu.cn/2008/11/27/%e6%84%9f%e5%86%92%e4%b8%80%e5%91%a8%ef%bc%8c%e4%bb%8a%e6%97%a5%e5%a5%bd%e8%bd%ac.shtml</link>
		<comments>http://www.sunboyu.cn/2008/11/27/%e6%84%9f%e5%86%92%e4%b8%80%e5%91%a8%ef%bc%8c%e4%bb%8a%e6%97%a5%e5%a5%bd%e8%bd%ac.shtml#comments</comments>
		<pubDate>Thu, 27 Nov 2008 11:30:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<category><![CDATA[日志]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=402</guid>
		<description><![CDATA[上周日去泡温泉，结果回来就感冒发烧，硬挺几天，没有就医，简单吃点药，差不多快抗过去了。看来感冒真的有周期性，看不看都得来上几天，这几天坚持天天吃水果，保证足够的能量，居然一直也撑下来了，工作也没怎么耽误，大喜。
今日终于有明显好转，虽然有点不利索，回家继续框架研究，争取年前能出个简单的框架系统。
预订的目标一定要实现，而且是在框架系统的基础上实现，工作量不会小，以后得抓紧时间了，LINUX系统一直是个大任务，最近一直没看，计划元旦补习。
学习的感觉真好，让自己感觉自己是个活人。
]]></description>
			<content:encoded><![CDATA[<p>上周日去泡温泉，结果回来就感冒发烧，硬挺几天，没有就医，简单吃点药，差不多快抗过去了。看来感冒真的有周期性，看不看都得来上几天，这几天坚持天天吃水果，保证足够的能量，居然一直也撑下来了，工作也没怎么耽误，大喜。</p>
<p>今日终于有明显好转，虽然有点不利索，回家继续框架研究，争取年前能出个简单的框架系统。</p>
<p>预订的目标一定要实现，而且是在框架系统的基础上实现，工作量不会小，以后得抓紧时间了，LINUX系统一直是个大任务，最近一直没看，计划元旦补习。</p>
<p>学习的感觉真好，让自己感觉自己是个活人。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/11/27/%e6%84%9f%e5%86%92%e4%b8%80%e5%91%a8%ef%bc%8c%e4%bb%8a%e6%97%a5%e5%a5%bd%e8%bd%ac.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>我要出售的自行车</title>
		<link>http://www.sunboyu.cn/2008/11/26/%e6%88%91%e8%a6%81%e5%87%ba%e5%94%ae%e7%9a%84%e8%87%aa%e8%a1%8c%e8%bd%a6.shtml</link>
		<comments>http://www.sunboyu.cn/2008/11/26/%e6%88%91%e8%a6%81%e5%87%ba%e5%94%ae%e7%9a%84%e8%87%aa%e8%a1%8c%e8%bd%a6.shtml#comments</comments>
		<pubDate>Wed, 26 Nov 2008 01:07:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<category><![CDATA[出售]]></category>

		<category><![CDATA[自行车]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=395</guid>
		<description><![CDATA[





]]></description>
			<content:encoded><![CDATA[<p><a href='http://www.sunboyu.cn/upfiles/2008/11/img_4074.jpg'><img src="http://www.sunboyu.cn/upfiles/2008/11/img_4074.jpg" alt="" title="img_4074" width="500" height="375" class="aligncenter size-full wp-image-396" /></a></p>
<p><a href='http://www.sunboyu.cn/upfiles/2008/11/img_4075.jpg'><img src="http://www.sunboyu.cn/upfiles/2008/11/img_4075.jpg" alt="" title="img_4075" width="500" height="375" class="aligncenter size-full wp-image-397" /></a></p>
<p><a href='http://www.sunboyu.cn/upfiles/2008/11/img_4076.jpg'><img src="http://www.sunboyu.cn/upfiles/2008/11/img_4076.jpg" alt="" title="img_4076" width="500" height="375" class="aligncenter size-full wp-image-398" /></a></p>
<p><a href='http://www.sunboyu.cn/upfiles/2008/11/img_4077.jpg'><img src="http://www.sunboyu.cn/upfiles/2008/11/img_4077.jpg" alt="" title="img_4077" width="500" height="375" class="aligncenter size-full wp-image-399" /></a></p>
<p><a href='http://www.sunboyu.cn/upfiles/2008/11/img_4078.jpg'><img src="http://www.sunboyu.cn/upfiles/2008/11/img_4078.jpg" alt="" title="img_4078" width="500" height="375" class="aligncenter size-full wp-image-400" /></a></p>
<p><a href='http://www.sunboyu.cn/upfiles/2008/11/img_4079.jpg'><img src="http://www.sunboyu.cn/upfiles/2008/11/img_4079.jpg" alt="" title="img_4079" width="500" height="375" class="aligncenter size-full wp-image-401" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/11/26/%e6%88%91%e8%a6%81%e5%87%ba%e5%94%ae%e7%9a%84%e8%87%aa%e8%a1%8c%e8%bd%a6.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>一辆二手车，尽知天下事</title>
		<link>http://www.sunboyu.cn/2008/11/25/%e4%b8%80%e8%be%86%e4%ba%8c%e6%89%8b%e8%bd%a6%ef%bc%8c%e5%b0%bd%e7%9f%a5%e5%a4%a9%e4%b8%8b%e4%ba%8b.shtml</link>
		<comments>http://www.sunboyu.cn/2008/11/25/%e4%b8%80%e8%be%86%e4%ba%8c%e6%89%8b%e8%bd%a6%ef%bc%8c%e5%b0%bd%e7%9f%a5%e5%a4%a9%e4%b8%8b%e4%ba%8b.shtml#comments</comments>
		<pubDate>Tue, 25 Nov 2008 14:03:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<category><![CDATA[卖车]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=394</guid>
		<description><![CDATA[给老婆买了辆新车，要把旧车卖掉。其实旧车也就骑了半年，除了一层的土，也没什么，我骑到中关村依然轻松，所以，感觉应该卖个好价钱。不过由于懒得出门，只好贱卖，毕竟学习的时间成本也挺高的。
在58，赶集上发了两个帖子，因为当时没有拍照，只好找了张新车照片，也许有人认为我的车跟新车一样，那就错了，因为我也说明了，所以，算个小误会，明天我会把实际的照片发上去。
接触了买主，说一下：
第一个买主是个搞二手车的，确切来说，应该是个搞自行车翻新工作的。当时给他电话简单说明了一下，因为不是专业搞车的，所以只能以常理描述一下。下午来电话说：肯定要了，就这价钱。我想，既然这么肯定，就把其他买主推了，毕竟天冷，来一趟挺不容易。可到要见面的时候，那哥们出门，找了另一个哥们来看车，那哥们又记错了地方，结果没来，后买主又打电话，说已经来取车，就等了大概二十分钟。果然来了，貌似专业的样子试了试车，说实在，虽然我不是专业玩车的，但起码车子真正值钱的地方能看出来，他只看了表面的东西，其实就是翻新成本，可能感觉翻新成本高，抑或是想多挣点，再次压价。对于生意人，我向来是心狠的，生意就是生意，人情大于生意，生意就不叫生意了。磨了半天，看我态度坚决，泱泱而归，又说了些委婉道歉让我久等之类的话。生意人都这样，我做生意其实也是这样。
第二个买主还没有，因为答应这个后，我没答应其他人看车，所以，明天把实际照片发上去再说。网上的帖子删了先。不过不打算卖给搞二手车的人了，因为车子骑时间长了有感情，还是给一个能发挥其余热的人放心。
－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－
续上篇，车子终于出手，这次是本小区邻居，之前说好不砍价，来后果然没砍价，原价照收。不像第一位卖主那么细致得去看这个车，可以保证是自己骑的，其实就是自己骑，因为他在旁边开店，不可能去倒卖自行车，就直接卖他了。收钱200，没零钱找，顺便旁边买橘子一兜，送给他小侄子几颗，生意算顺利完成。
生意完结，总结：车子虽不算好，但保证结实和稳定性，起码能打气一次能持续一个月清河到中关村的路程不掉链子，不算很沉，不过轴也要多保养，北京天太干，粉尘多，不注意保养的会使轴老化过快，造成报废。北京的黑车管理力度不错，起码没有很明显的黑车交易，所以我这车还是可以卖到更高的价钱的。不过，精力不在于此，草草了事，贱卖之。
]]></description>
			<content:encoded><![CDATA[<p>给老婆买了辆新车，要把旧车卖掉。其实旧车也就骑了半年，除了一层的土，也没什么，我骑到中关村依然轻松，所以，感觉应该卖个好价钱。不过由于懒得出门，只好贱卖，毕竟学习的时间成本也挺高的。</p>
<p>在58，赶集上发了两个帖子，因为当时没有拍照，只好找了张新车照片，也许有人认为我的车跟新车一样，那就错了，因为我也说明了，所以，算个小误会，明天我会把实际的照片发上去。</p>
<p>接触了买主，说一下：</p>
<p>第一个买主是个搞二手车的，确切来说，应该是个搞自行车翻新工作的。当时给他电话简单说明了一下，因为不是专业搞车的，所以只能以常理描述一下。下午来电话说：肯定要了，就这价钱。我想，既然这么肯定，就把其他买主推了，毕竟天冷，来一趟挺不容易。可到要见面的时候，那哥们出门，找了另一个哥们来看车，那哥们又记错了地方，结果没来，后买主又打电话，说已经来取车，就等了大概二十分钟。果然来了，貌似专业的样子试了试车，说实在，虽然我不是专业玩车的，但起码车子真正值钱的地方能看出来，他只看了表面的东西，其实就是翻新成本，可能感觉翻新成本高，抑或是想多挣点，再次压价。对于生意人，我向来是心狠的，生意就是生意，人情大于生意，生意就不叫生意了。磨了半天，看我态度坚决，泱泱而归，又说了些委婉道歉让我久等之类的话。生意人都这样，我做生意其实也是这样。</p>
<p>第二个买主还没有，因为答应这个后，我没答应其他人看车，所以，明天把实际照片发上去再说。网上的帖子删了先。不过不打算卖给搞二手车的人了，因为车子骑时间长了有感情，还是给一个能发挥其余热的人放心。</p>
<p>－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－</p>
<p>续上篇，车子终于出手，这次是本小区邻居，之前说好不砍价，来后果然没砍价，原价照收。不像第一位卖主那么细致得去看这个车，可以保证是自己骑的，其实就是自己骑，因为他在旁边开店，不可能去倒卖自行车，就直接卖他了。收钱200，没零钱找，顺便旁边买橘子一兜，送给他小侄子几颗，生意算顺利完成。</p>
<p>生意完结，总结：车子虽不算好，但保证结实和稳定性，起码能打气一次能持续一个月清河到中关村的路程不掉链子，不算很沉，不过轴也要多保养，北京天太干，粉尘多，不注意保养的会使轴老化过快，造成报废。北京的黑车管理力度不错，起码没有很明显的黑车交易，所以我这车还是可以卖到更高的价钱的。不过，精力不在于此，草草了事，贱卖之。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/11/25/%e4%b8%80%e8%be%86%e4%ba%8c%e6%89%8b%e8%bd%a6%ef%bc%8c%e5%b0%bd%e7%9f%a5%e5%a4%a9%e4%b8%8b%e4%ba%8b.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>车已购得，捷安特追逐者540</title>
		<link>http://www.sunboyu.cn/2008/11/24/%e8%bd%a6%e5%b7%b2%e8%b4%ad%e5%be%97%ef%bc%8c%e6%8d%b7%e5%ae%89%e7%89%b9%e8%bf%bd%e9%80%90%e8%80%85540.shtml</link>
		<comments>http://www.sunboyu.cn/2008/11/24/%e8%bd%a6%e5%b7%b2%e8%b4%ad%e5%be%97%ef%bc%8c%e6%8d%b7%e5%ae%89%e7%89%b9%e8%bf%bd%e9%80%90%e8%80%85540.shtml#comments</comments>
		<pubDate>Mon, 24 Nov 2008 12:34:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=393</guid>
		<description><![CDATA[加上挡泥板，两个锁（中国的治安－－&#124;）,一共是1100大洋。

]]></description>
			<content:encoded><![CDATA[<p>加上挡泥板，两个锁（中国的治安－－|）,一共是1100大洋。</p>
<p><img src="/upfiles/2008/11/zhuizhuzhe.jpg" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/11/24/%e8%bd%a6%e5%b7%b2%e8%b4%ad%e5%be%97%ef%bc%8c%e6%8d%b7%e5%ae%89%e7%89%b9%e8%bf%bd%e9%80%90%e8%80%85540.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>我的一个虚拟主机配置，支持suexec+fastcgi+php+perl</title>
		<link>http://www.sunboyu.cn/2008/11/22/%e6%88%91%e7%9a%84%e4%b8%80%e4%b8%aa%e8%99%9a%e6%8b%9f%e4%b8%bb%e6%9c%ba%e9%85%8d%e7%bd%ae%ef%bc%8c%e6%94%af%e6%8c%81suexecfastcgiphpperl.shtml</link>
		<comments>http://www.sunboyu.cn/2008/11/22/%e6%88%91%e7%9a%84%e4%b8%80%e4%b8%aa%e8%99%9a%e6%8b%9f%e4%b8%bb%e6%9c%ba%e9%85%8d%e7%bd%ae%ef%bc%8c%e6%94%af%e6%8c%81suexecfastcgiphpperl.shtml#comments</comments>
		<pubDate>Sat, 22 Nov 2008 05:36:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[虚拟主机]]></category>

		<category><![CDATA[配置]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=392</guid>
		<description><![CDATA[&#60;virtualhost *:80&#62;
&#160;&#160; &#160;SuexecUserGroup www www
&#160;&#160; &#160;ServerAdmin webmaster@dummy-host.example.com
&#160;&#160; &#160;DocumentRoot &#34;/home/www/php&#34;
&#160;&#160; &#160;ServerName 192.168.43.129
&#160;&#160; &#160;ServerAlias www.dummy-host.example.com
&#160;&#160; &#160;ErrorLog &#34;logs/dummy-host.example.com-error_log&#34;
&#160;&#160; &#160;CustomLog &#34;logs/dummy-host.example.com-access_log&#34; combined
&#160;&#160; &#160;&#60;directory /home/www/php&#62;
&#160;&#160; &#160; &#160; &#160;AddHandler fcgid-script .php
&#160;&#160; &#160; &#160; &#160;AddHandler perl-script .pl .cgi
&#160;&#160; &#160; &#160; &#160;PerlResponseHandler ModPerl::Registry
&#160;&#160; &#160; &#160; &#160;PerlOptions +ParseHeaders
&#160;&#160; &#160; &#160; &#160;PerlOptions +SetupEnv
&#160;&#160; &#160; &#160; &#160;FCGIWrapper /home/www/php-cgi .php
&#160;&#160; &#160; &#160; &#160;Options ExecCGI +FollowSymLinks SymLinksIfOwnerMatch
&#160;&#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">&lt;virtualhost *:80&gt;</li>
<li>&nbsp;&nbsp; &nbsp;SuexecUserGroup www www</li>
<li>&nbsp;&nbsp; &nbsp;ServerAdmin webmaster@dummy-host.example.com</li>
<li>&nbsp;&nbsp; &nbsp;DocumentRoot &quot;/home/www/php&quot;</li>
<li>&nbsp;&nbsp; &nbsp;ServerName 192.168.43.129</li>
<li>&nbsp;&nbsp; &nbsp;ServerAlias www.dummy-host.example.com</li>
<li>&nbsp;&nbsp; &nbsp;ErrorLog &quot;logs/dummy-host.example.com-error_log&quot;</li>
<li>&nbsp;&nbsp; &nbsp;CustomLog &quot;logs/dummy-host.example.com-access_log&quot; combined</li>
<li>&nbsp;&nbsp; &nbsp;&lt;directory /home/www/php&gt;</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;AddHandler fcgid-script .php</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;AddHandler perl-script .pl .cgi</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;PerlResponseHandler ModPerl::Registry</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;PerlOptions +ParseHeaders</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;PerlOptions +SetupEnv</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;FCGIWrapper /home/www/php-cgi .php</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Options ExecCGI +FollowSymLinks SymLinksIfOwnerMatch</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;allow from all</li>
<li>&nbsp;&nbsp; &nbsp;&lt;/directory&gt;</li>
<li>&lt;/virtualhost&gt;</li></ol></div>
<p>老一套，要注意的是各种脚本的映射，容器的合理使用。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/11/22/%e6%88%91%e7%9a%84%e4%b8%80%e4%b8%aa%e8%99%9a%e6%8b%9f%e4%b8%bb%e6%9c%ba%e9%85%8d%e7%bd%ae%ef%bc%8c%e6%94%af%e6%8c%81suexecfastcgiphpperl.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>给APACHE增加mod_perl,使其支持perl脚本编写的程序</title>
		<link>http://www.sunboyu.cn/2008/11/21/%e7%bb%99apache%e5%a2%9e%e5%8a%a0mod_perl%e4%bd%bf%e5%85%b6%e6%94%af%e6%8c%81perl%e8%84%9a%e6%9c%ac%e7%bc%96%e5%86%99%e7%9a%84%e7%a8%8b%e5%ba%8f.shtml</link>
		<comments>http://www.sunboyu.cn/2008/11/21/%e7%bb%99apache%e5%a2%9e%e5%8a%a0mod_perl%e4%bd%bf%e5%85%b6%e6%94%af%e6%8c%81perl%e8%84%9a%e6%9c%ac%e7%bc%96%e5%86%99%e7%9a%84%e7%a8%8b%e5%ba%8f.shtml#comments</comments>
		<pubDate>Fri, 21 Nov 2008 08:59:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[apache]]></category>

		<category><![CDATA[cgi]]></category>

		<category><![CDATA[mod_perl]]></category>

		<category><![CDATA[perl]]></category>

		<category><![CDATA[pl]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=391</guid>
		<description><![CDATA[老样子，下载 perl-5.8.8.tar.gz mod_perl-2.0-current.tar.gz perlinfo.zip
wget http://www.sunboyu.cn/sourse/perl-5.8.8.tar.gz
wget http://www.sunboyu.cn/sourse/mod_perl-2.0-current.tar.gz
wget http://www.sunboyu.cn/sourse/perlinfo.zip
tar -zxvf perl-5.8.8.tar.gz
tar -zxvf mod_perl-2.0-current.tar.gz
tar -zxvf perl-5.8.8.tar.gz
先安装perl ./Configure -h  看帮助吧，忘了
在安装 mod_perl  #perl Makefile.PL WITH_APXS=/opt/httpd-2.2.9/bin/apxs
如果报错，看看帮助，得加几个参数
然后修改 httpd.conf ,增加 LoadModule perl_module modules/mod_perl.so
最后在虚拟目录里增加
&#60;location /cgi-bin&#62;
&#160; SetHandler perl-script
&#160; PerlResponseHandler ModPerl::Registry
&#160; Options +ExecCGI
&#160; PerlOptions +ParseHeaders
&#160; PerlOptions +SetupEnv
&#60;/location&#62;
然后把perlinfo.zip里那个探针放在cgi-bin目录下，访问一下，如果显示相关信息，证明配置成功。
费了半天劲，就为了用一个awstats。
突发奇想，是不是把python和ruby也配置上？
]]></description>
			<content:encoded><![CDATA[<p>老样子，下载 perl-5.8.8.tar.gz mod_perl-2.0-current.tar.gz perlinfo.zip<br />
wget http://www.sunboyu.cn/sourse/perl-5.8.8.tar.gz<br />
wget http://www.sunboyu.cn/sourse/mod_perl-2.0-current.tar.gz<br />
wget http://www.sunboyu.cn/sourse/perlinfo.zip</p>
<p>tar -zxvf perl-5.8.8.tar.gz<br />
tar -zxvf mod_perl-2.0-current.tar.gz<br />
tar -zxvf perl-5.8.8.tar.gz</p>
<p>先安装perl ./Configure -h  看帮助吧，忘了<br />
在安装 mod_perl  #perl Makefile.PL WITH_APXS=/opt/httpd-2.2.9/bin/apxs<br />
如果报错，看看帮助，得加几个参数<br />
然后修改 httpd.conf ,增加 LoadModule perl_module modules/mod_perl.so<br />
最后在虚拟目录里增加</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">&lt;location /cgi-bin&gt;</li>
<li>&nbsp; SetHandler perl-script</li>
<li>&nbsp; PerlResponseHandler ModPerl::Registry</li>
<li>&nbsp; Options +ExecCGI</li>
<li>&nbsp; PerlOptions +ParseHeaders</li>
<li>&nbsp; PerlOptions +SetupEnv</li>
<li>&lt;/location&gt;</li></ol></div>
<p>然后把perlinfo.zip里那个探针放在cgi-bin目录下，访问一下，如果显示相关信息，证明配置成功。<br />
费了半天劲，就为了用一个awstats。<br />
突发奇想，是不是把python和ruby也配置上？</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/11/21/%e7%bb%99apache%e5%a2%9e%e5%8a%a0mod_perl%e4%bd%bf%e5%85%b6%e6%94%af%e6%8c%81perl%e8%84%9a%e6%9c%ac%e7%bc%96%e5%86%99%e7%9a%84%e7%a8%8b%e5%ba%8f.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>PHP中引用返回的用法</title>
		<link>http://www.sunboyu.cn/2008/11/21/php%e4%b8%ad%e5%bc%95%e7%94%a8%e8%bf%94%e5%9b%9e%e7%9a%84%e7%94%a8%e6%b3%95.shtml</link>
		<comments>http://www.sunboyu.cn/2008/11/21/php%e4%b8%ad%e5%bc%95%e7%94%a8%e8%bf%94%e5%9b%9e%e7%9a%84%e7%94%a8%e6%b3%95.shtml#comments</comments>
		<pubDate>Fri, 21 Nov 2008 02:49:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=390</guid>
		<description><![CDATA[先看个例子
function &#38;new_class( $classname )
{
&#160;&#160; &#160; &#160; &#160;static $object = array();
&#160;&#160; &#160; &#160; &#160;if(isset( $object[$classname] ))
&#160;&#160; &#160; &#160; &#160;{
&#160;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;return $object[$classname];
&#160;&#160; &#160; &#160; &#160;}
&#160;&#160; &#160; &#160; &#160;$object[$classname] = &#38; new $classname();
&#160;&#160; &#160; &#160; &#160;return $object[$classname];
}
class abc
{
	public $a;
	public $b;
	function abc()
	{
		$this-&#62;a = 1;
		$this-&#62;b = 2;
	}
}
class test
{
}
&#160;
$a = new test();
$a-&#62;abc = &#38; new_class( [...]]]></description>
			<content:encoded><![CDATA[<p>先看个例子</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">function &amp;new_class( $classname )</li>
<li>{</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;static $object = array();</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if(isset( $object[$classname] ))</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return $object[$classname];</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;$object[$classname] = &amp; new $classname();</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return $object[$classname];</li>
<li>}</li>
<li>class abc</li>
<li>{</li>
<li>	public $a;</li>
<li>	public $b;</li>
<li>	function abc()</li>
<li>	{</li>
<li>		$this-&gt;a = 1;</li>
<li>		$this-&gt;b = 2;</li>
<li>	}</li>
<li>}</li>
<li>class test</li>
<li>{</li>
<li>}</li>
<li>&nbsp;</li>
<li>$a = new test();</li>
<li>$a-&gt;abc = &amp; new_class( 'abc' );</li>
<li>print_r($a);</li></ol></div>
<p>很显然，这样做的好处是减少了实例化对象的复制，直接绑定了对象。这样减少了内存的消耗和操作的复杂。但实际上官方又说了这么一句，很是纳闷：<br />
Do not use return-by-reference to increase performance, the engine is smart enough to optimize this on its own.<br />
不要尝试用引用返回提高性能，因为PHP引擎足够聪明，自己会解决。<br />
闷中</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/11/21/php%e4%b8%ad%e5%bc%95%e7%94%a8%e8%bf%94%e5%9b%9e%e7%9a%84%e7%94%a8%e6%b3%95.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>PHP中变量引用详解</title>
		<link>http://www.sunboyu.cn/2008/11/19/php%e4%b8%ad%e5%8f%98%e9%87%8f%e5%bc%95%e7%94%a8%e8%af%a6%e8%a7%a3.shtml</link>
		<comments>http://www.sunboyu.cn/2008/11/19/php%e4%b8%ad%e5%8f%98%e9%87%8f%e5%bc%95%e7%94%a8%e8%af%a6%e8%a7%a3.shtml#comments</comments>
		<pubDate>Wed, 19 Nov 2008 13:37:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=388</guid>
		<description><![CDATA[PHP中，引用就是用另一个变量是访问一个变量的值。但是跟C中指针不通。这里做几个测试，以说明：
$a = &#34;date&#34;;
$b = &#38;amp;$a;
echo $a; // date
echo $b; // date
$b = &#34;date1&#34;;
echo $a; // date1
echo $b; // date1
unset($a);
echo $b; // date1

可以看出，引用其实就是给一个变量增加了一个别名，而对于有别名的变量，删除这个变量只是删除了这个变量的名字，而变量的内容不变，同时，使用任何一个函数名操作一个变量，都是操作了值，值的结果可以使用任何一个别名访问。
]]></description>
			<content:encoded><![CDATA[<p>PHP中，引用就是用另一个变量是访问一个变量的值。但是跟C中指针不通。这里做几个测试，以说明：</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">$a = &quot;date&quot;;</li>
<li>$b = &amp;amp;$a;</li>
<li>echo $a; // date</li>
<li>echo $b; // date</li>
<li>$b = &quot;date1&quot;;</li>
<li>echo $a; // date1</li>
<li>echo $b; // date1</li>
<li>unset($a);</li>
<li>echo $b; // date1</li></ol></div>
<p><a href='http://www.sunboyu.cn/upfiles/2008/11/e69caae591bde5908d-1.jpg'><img src="http://www.sunboyu.cn/upfiles/2008/11/e69caae591bde5908d-1.jpg" alt="" title="e69caae591bde5908d-1" width="500" height="308" class="aligncenter size-full wp-image-389" /></a><br />
可以看出，引用其实就是给一个变量增加了一个别名，而对于有别名的变量，删除这个变量只是删除了这个变量的名字，而变量的内容不变，同时，使用任何一个函数名操作一个变量，都是操作了值，值的结果可以使用任何一个别名访问。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/11/19/php%e4%b8%ad%e5%8f%98%e9%87%8f%e5%bc%95%e7%94%a8%e8%af%a6%e8%a7%a3.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>励志博客</title>
		<link>http://www.sunboyu.cn/2008/11/18/%e5%8a%b1%e5%bf%97%e5%8d%9a%e5%ae%a2.shtml</link>
		<comments>http://www.sunboyu.cn/2008/11/18/%e5%8a%b1%e5%bf%97%e5%8d%9a%e5%ae%a2.shtml#comments</comments>
		<pubDate>Tue, 18 Nov 2008 13:50:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[感悟]]></category>

		<category><![CDATA[励志]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=387</guid>
		<description><![CDATA[好多天不学习了，新的框架也迟迟没有动工，不断在看别人的东西是不错，但主要原因还是懒。最近拼命学习山地车知识，因为下年准备购置一台入门级山地车，开始加强锻炼。搞IT的人没有一个好的身体不行，作为一个男人，身体不好更不行。
经济危机，虽说跟个人离的不远，但那种无形的压力却在时时考验我们的忍受力。好多同行的公司都倒闭了，中关村做硬件的更是亏的一塌糊涂。
以前听某个励志讲座，道：人感觉通货膨胀，物价上涨，感觉到压力，其实是自身的发展滞后于社会的发展而带来的压力。如果个体的发展速度高于通货膨胀的速度，那基本是没有什么压力，而且能保持比较舒畅的生活。
总结现在，貌似发展不是太理想，只能勉强达到与经济发展持平的状态。不管做什么，保持快乐的心情是必要的，保持持续的斗志是必须的。年底，不知道如何激起斗志，也许更多的精力要放在考虑如何度过这个年关。
原公司的同事走得都差不多了，技术部第一批第二批人都走了，真正让我失落的，是自己未完成的项目，程序就跟自己的孩子一样，就那么死掉总是感觉心寒。总是想不明白，为什么公司的发展总是伴随着残忍。公司，家庭，都是社会的一部分，商跟家两个字即使写在一起，也无法体会家的温暖。
2008马上过去了，大概还有两个月的时间，两个月，六分之一年，还是值得抓住的。下一年，精力可能会分散在学历考试上一部分，时间的紧迫让人窒息。总之，自己日程表上的事情还要完成。
]]></description>
			<content:encoded><![CDATA[<p>好多天不学习了，新的框架也迟迟没有动工，不断在看别人的东西是不错，但主要原因还是懒。最近拼命学习山地车知识，因为下年准备购置一台入门级山地车，开始加强锻炼。搞IT的人没有一个好的身体不行，作为一个男人，身体不好更不行。</p>
<p>经济危机，虽说跟个人离的不远，但那种无形的压力却在时时考验我们的忍受力。好多同行的公司都倒闭了，中关村做硬件的更是亏的一塌糊涂。</p>
<p>以前听某个励志讲座，道：人感觉通货膨胀，物价上涨，感觉到压力，其实是自身的发展滞后于社会的发展而带来的压力。如果个体的发展速度高于通货膨胀的速度，那基本是没有什么压力，而且能保持比较舒畅的生活。</p>
<p>总结现在，貌似发展不是太理想，只能勉强达到与经济发展持平的状态。不管做什么，保持快乐的心情是必要的，保持持续的斗志是必须的。年底，不知道如何激起斗志，也许更多的精力要放在考虑如何度过这个年关。</p>
<p>原公司的同事走得都差不多了，技术部第一批第二批人都走了，真正让我失落的，是自己未完成的项目，程序就跟自己的孩子一样，就那么死掉总是感觉心寒。总是想不明白，为什么公司的发展总是伴随着残忍。公司，家庭，都是社会的一部分，商跟家两个字即使写在一起，也无法体会家的温暖。</p>
<p>2008马上过去了，大概还有两个月的时间，两个月，六分之一年，还是值得抓住的。下一年，精力可能会分散在学历考试上一部分，时间的紧迫让人窒息。总之，自己日程表上的事情还要完成。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/11/18/%e5%8a%b1%e5%bf%97%e5%8d%9a%e5%ae%a2.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>MYSQL5新特性，分区表</title>
		<link>http://www.sunboyu.cn/2008/11/15/mysql5%e6%96%b0%e7%89%b9%e6%80%a7%ef%bc%8c%e5%88%86%e5%8c%ba%e8%a1%a8.shtml</link>
		<comments>http://www.sunboyu.cn/2008/11/15/mysql5%e6%96%b0%e7%89%b9%e6%80%a7%ef%bc%8c%e5%88%86%e5%8c%ba%e8%a1%a8.shtml#comments</comments>
		<pubDate>Sat, 15 Nov 2008 09:57:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[MYSQL]]></category>

		<category><![CDATA[mysql]]></category>

		<category><![CDATA[分区]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=385</guid>
		<description><![CDATA[CU上看了一个介绍mysql5分区表的帖子，很感兴趣，如果有了分区的应用，那么设计数据库结构可以更加紧凑，而在应用上更加灵活，减少了一些不必要的视图，而在速度上也很好的提升。
分区的好处是，在物理上根据规则对表进行分离。
水平分区其实是B树索引物理上又增加了一级，当然要提高检索速度了，因为又多了一个手工索引。
垂直分区，在一些应用上会更加方便，比如discuz程序，帖子标题跟正文都是分离的，目的是降低单表容量，而有了垂直分区，可以在物理上对字段进行分离，而访问的时候又是类似视图的访问，无比爽也！！
目前还没测试分区到底有多少性能潜力可开发，回头用大的数据查询测试一下。
相关资料：http://dev.mysql.com/doc/refman/5.1/zh/partitioning.html
]]></description>
			<content:encoded><![CDATA[<p>CU上看了一个介绍mysql5分区表的帖子，很感兴趣，如果有了分区的应用，那么设计数据库结构可以更加紧凑，而在应用上更加灵活，减少了一些不必要的视图，而在速度上也很好的提升。<br />
分区的好处是，在物理上根据规则对表进行分离。<br />
水平分区其实是B树索引物理上又增加了一级，当然要提高检索速度了，因为又多了一个手工索引。<br />
垂直分区，在一些应用上会更加方便，比如discuz程序，帖子标题跟正文都是分离的，目的是降低单表容量，而有了垂直分区，可以在物理上对字段进行分离，而访问的时候又是类似视图的访问，无比爽也！！<br />
目前还没测试分区到底有多少性能潜力可开发，回头用大的数据查询测试一下。<br />
相关资料：http://dev.mysql.com/doc/refman/5.1/zh/partitioning.html</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/11/15/mysql5%e6%96%b0%e7%89%b9%e6%80%a7%ef%bc%8c%e5%88%86%e5%8c%ba%e8%a1%a8.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>重新折腾</title>
		<link>http://www.sunboyu.cn/2008/11/15/%e9%87%8d%e6%96%b0%e6%8a%98%e8%85%be.shtml</link>
		<comments>http://www.sunboyu.cn/2008/11/15/%e9%87%8d%e6%96%b0%e6%8a%98%e8%85%be.shtml#comments</comments>
		<pubDate>Sat, 15 Nov 2008 01:12:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<category><![CDATA[发展]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=384</guid>
		<description><![CDATA[昨天翻看原来的一个程序，发现没有了数据库，只留下了一个数据字典，使用adodb构建，可是我居然放弃了使用adodb，自己写了一个针对mysql的数据持久层。
在翻看了大量的框架类之后，打算重新我的程序，这次估计能有很大的进步，不仅是个框架的概念，要做成一个兼资源管理，部署，框架的东西。东西太大，没法一步完成，还是先把核心库做出来。
今后又是一场硬仗。
]]></description>
			<content:encoded><![CDATA[<p>昨天翻看原来的一个程序，发现没有了数据库，只留下了一个数据字典，使用adodb构建，可是我居然放弃了使用adodb，自己写了一个针对mysql的数据持久层。<br />
在翻看了大量的框架类之后，打算重新我的程序，这次估计能有很大的进步，不仅是个框架的概念，要做成一个兼资源管理，部署，框架的东西。东西太大，没法一步完成，还是先把核心库做出来。<br />
今后又是一场硬仗。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/11/15/%e9%87%8d%e6%96%b0%e6%8a%98%e8%85%be.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>框架之争</title>
		<link>http://www.sunboyu.cn/2008/11/13/%e6%a1%86%e6%9e%b6%e4%b9%8b%e4%ba%89.shtml</link>
		<comments>http://www.sunboyu.cn/2008/11/13/%e6%a1%86%e6%9e%b6%e4%b9%8b%e4%ba%89.shtml#comments</comments>
		<pubDate>Thu, 13 Nov 2008 13:36:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[框架]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=383</guid>
		<description><![CDATA[最近在看一些框架，从zendframework，cakephp，IC，都大概了解了一下，因为以前习惯全部手工代码，但后来发现这种方式过于松散，松散到不能管理，因为类，函数，虽然有自己的方式整理，但每次开展项目的时候都得重新整理，重新配置接口，过于麻烦，于是想到了框架。
框架，其实是用程序管理类库的一种方式，采用统一的接口，统一的调用风格进行操作，对于团队合作中代码可读性提供了便利。但框架也有很严重的问题，就是效率。
框架大都采用了单点的入口，然后提供url的路由功能进行解析，另外，类的调用也大都采取__autoload进行寻找，大大降低了程序的效率。
后又看了奶瓶老仙的BSMlite，深有感触。
其实，使用框架完全可以应付中小型项目，至于效率，也可以在完工后进行优化再发布，这样就会达到两全其美的效果。
]]></description>
			<content:encoded><![CDATA[<p>最近在看一些框架，从zendframework，cakephp，IC，都大概了解了一下，因为以前习惯全部手工代码，但后来发现这种方式过于松散，松散到不能管理，因为类，函数，虽然有自己的方式整理，但每次开展项目的时候都得重新整理，重新配置接口，过于麻烦，于是想到了框架。</p>
<p>框架，其实是用程序管理类库的一种方式，采用统一的接口，统一的调用风格进行操作，对于团队合作中代码可读性提供了便利。但框架也有很严重的问题，就是效率。</p>
<p>框架大都采用了单点的入口，然后提供url的路由功能进行解析，另外，类的调用也大都采取__autoload进行寻找，大大降低了程序的效率。</p>
<p>后又看了奶瓶老仙的BSMlite，深有感触。</p>
<p>其实，使用框架完全可以应付中小型项目，至于效率，也可以在完工后进行优化再发布，这样就会达到两全其美的效果。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/11/13/%e6%a1%86%e6%9e%b6%e4%b9%8b%e4%ba%89.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>PHP版DES加密解密</title>
		<link>http://www.sunboyu.cn/2008/11/12/php%e7%89%88des%e5%8a%a0%e5%af%86%e8%a7%a3%e5%af%86.shtml</link>
		<comments>http://www.sunboyu.cn/2008/11/12/php%e7%89%88des%e5%8a%a0%e5%af%86%e8%a7%a3%e5%af%86.shtml#comments</comments>
		<pubDate>Wed, 12 Nov 2008 05:31:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[原创技术]]></category>

		<category><![CDATA[des]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=382</guid>
		<description><![CDATA[&#60; ?php
class DES
{
	public $key = '';
	public $iv = '';
	public $td = '';
	public $ks = '';
	//构造函数
	public function __construct( $key )
	{
		$this-&#62;td = mcrypt_module_open('rijndael-256', '', 'ofb', '');
		$this-&#62;iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($this-&#62;td), (substr(PHP_OS,0,3)=='WIN' ? MCRYPT_RAND : MCRYPT_DEV_RANDOM));
		$this-&#62;ks = mcrypt_enc_get_key_size($this-&#62;td);
		$this-&#62;key = substr(md5($key), 0, $this-&#62;ks);
	}
	//加密函数
	function encrypt( $value )
&#160;&#160; &#160;{
		mcrypt_generic_init($this-&#62;td, $this-&#62;key, $this-&#62;iv);
		$r = mcrypt_generic( $this-&#62;td , $value );
		mcrypt_generic_deinit($this-&#62;td);
		return $r;
&#160;&#160; &#160;}
	//解密函数
	function decrypt( $value )
&#160;&#160; &#160;{
		mcrypt_generic_init($this-&#62;td, [...]]]></description>
			<content:encoded><![CDATA[<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">&lt; ?php</li>
<li>class DES</li>
<li>{</li>
<li>	public $key = '';</li>
<li>	public $iv = '';</li>
<li>	public $td = '';</li>
<li>	public $ks = '';</li>
<li>	//构造函数</li>
<li>	public function __construct( $key )</li>
<li>	{</li>
<li>		$this-&gt;td = mcrypt_module_open('rijndael-256', '', 'ofb', '');</li>
<li>		$this-&gt;iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($this-&gt;td), (substr(PHP_OS,0,3)=='WIN' ? MCRYPT_RAND : MCRYPT_DEV_RANDOM));</li>
<li>		$this-&gt;ks = mcrypt_enc_get_key_size($this-&gt;td);</li>
<li>		$this-&gt;key = substr(md5($key), 0, $this-&gt;ks);</li>
<li>	}</li>
<li>	//加密函数</li>
<li>	function encrypt( $value )</li>
<li>&nbsp;&nbsp; &nbsp;{</li>
<li>		mcrypt_generic_init($this-&gt;td, $this-&gt;key, $this-&gt;iv);</li>
<li>		$r = mcrypt_generic( $this-&gt;td , $value );</li>
<li>		mcrypt_generic_deinit($this-&gt;td);</li>
<li>		return $r;</li>
<li>&nbsp;&nbsp; &nbsp;}</li>
<li>	//解密函数</li>
<li>	function decrypt( $value )</li>
<li>&nbsp;&nbsp; &nbsp;{</li>
<li>		mcrypt_generic_init($this-&gt;td, $this-&gt;key, $this-&gt;iv);</li>
<li>		$r = mdecrypt_generic($this-&gt;td, $value);</li>
<li>		mcrypt_generic_deinit($this-&gt;td);</li>
<li>		return $r;</li>
<li>&nbsp;&nbsp; &nbsp;}</li>
<li>	//西沟函数</li>
<li>	function __destruct()</li>
<li>	{</li>
<li>		mcrypt_module_close($this-&gt;td);</li>
<li>	}</li>
<li>}</li>
<li>&nbsp;</li>
<li>&nbsp;</li>
<li>$des = new DES('FDASFDAS');</li>
<li>$content = file_get_contents('example.php');</li>
<li>echo $content;</li>
<li>echo &quot;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&quot;;</li>
<li>$encode = $des-&gt;encrypt( $content );</li>
<li>echo $encode;</li>
<li>echo &quot;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&quot;;</li>
<li>$decode = $des-&gt;decrypt($encode);</li>
<li>echo $decode;</li>
<li>?&gt;</li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/11/12/php%e7%89%88des%e5%8a%a0%e5%af%86%e8%a7%a3%e5%af%86.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>网站的生命与灵魂</title>
		<link>http://www.sunboyu.cn/2008/11/10/%e7%bd%91%e7%ab%99%e7%9a%84%e7%94%9f%e5%91%bd%e4%b8%8e%e7%81%b5%e9%ad%82.shtml</link>
		<comments>http://www.sunboyu.cn/2008/11/10/%e7%bd%91%e7%ab%99%e7%9a%84%e7%94%9f%e5%91%bd%e4%b8%8e%e7%81%b5%e9%ad%82.shtml#comments</comments>
		<pubDate>Mon, 10 Nov 2008 14:33:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[感悟]]></category>

		<category><![CDATA[垂直网站]]></category>

		<category><![CDATA[灵魂]]></category>

		<category><![CDATA[生命]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=380</guid>
		<description><![CDATA[今日跟一行业垂直网站站长探讨网站内容的问题，直言其网站为垃圾网站风格，后其站长，美工，程序，我，召开了小型四人会议，共同探讨。
网站之生命，网站之灵魂，是今年网站发展重点。简言之，即用户使用其意图，意义，感受，体验。
用户至某网站，其一是想得其所得，为网站之内容。其二，用户想再次到来，得到最新内容，为网站之更新。用户既得内容，又想发布己见，为止交互。用户感觉网站甚好，赞而传之，为之用户群的扩大。网站发展，其路大体相近。
－－－－－－－－－－－－－看了会历史，就成这样了，下边说人话－－－－－－－－－－－－－－－－－
好的网站，首先内容是要吸引人的，否则用户不会过来。
一个全新的网站，在建立初期可能要进行大量的内容摘抄，甚至使用一些采集工具进行采集。对于刚发展的小网站，这种做法是事半功倍的，但是，我绝对不赞成使用采集器进行采集入库，原因有三：1、采集不容易控制html标签，很容易造成页面排版跟实际风格不符，造成用户阅读困难；2、采集不容易控制内容的归类准确性，任何一个网站的分类都没有完全相同的；3、采集的网站，搜索引擎不易收录，而且排名很低，不利于推广。
解决这个问题，我建议使用手工采集的方式，按照自己网站的标准重新排版，而且加以整理，最好自己总结摘要和关键词，这样，既满足了内容充实的低成本，又以比较匹配的分类给用户好的阅读体验。
其次，行业网站的内容相对集中，但又有其占有的分类形势，因此，一个非常符合行业习惯的分类形式很有必要。好的分类，就是一个好的索引，好的导航，更容易把用户粘滞在网站上。
再之，网站初期不就建议构建在通用的CMS系统上。因为这些CMS虽然成熟，但灵活性欠佳，难以满足复杂的内容需求，而且，很容易让人认为是个垃圾站，所以，独立开发，而且作出自己的风格是必要的，这样能减少不必要的二次开发。
然后：不断的更新，意味着网站的生命，没人希望在首页看到一年前的文章。
网站的灵魂，体现在活生生的个体，不仅是活的，而且要是鲜活，有蓬勃生命力的。生命是有对外界刺激的反映的，也就是交互性。
交互性，比较容易，现在最流行的就是bbs，blog，space，sns貌似也将成标配。
现在说灵魂，灵魂是个看不见摸不着的东西，但的确能感受到。
灵魂，用在网站上更多的就是网站的文化氛围和主题，比如上mop的就是扯淡美女意淫，上天涯的就是讨论一些事情，年龄偏长。上csdn的windows环境工程师多，chinaunix上都是钟情开源的。提到这些网站的时候，我们就能感受到一种灵魂，不论是好的还是坏的，起码能让我们神经一动。一个网站能做到这种程度，才算是有了灵魂。
&#8212;&#8212;&#8212;&#8212;&#8212;题外话：关于编程语言&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;
主旨是：不管用什么语言，你要保证有能力去开发维护下去，并且拥有和掌控源代码。
当你拿着一个没有源代码的网站又要改造的时候，你郁闷去吧……
]]></description>
			<content:encoded><![CDATA[<p>今日跟一行业垂直网站站长探讨网站内容的问题，直言其网站为垃圾网站风格，后其站长，美工，程序，我，召开了小型四人会议，共同探讨。</p>
<p>网站之生命，网站之灵魂，是今年网站发展重点。简言之，即用户使用其意图，意义，感受，体验。</p>
<p>用户至某网站，其一是想得其所得，为网站之内容。其二，用户想再次到来，得到最新内容，为网站之更新。用户既得内容，又想发布己见，为止交互。用户感觉网站甚好，赞而传之，为之用户群的扩大。网站发展，其路大体相近。</p>
<p>－－－－－－－－－－－－－看了会历史，就成这样了，下边说人话－－－－－－－－－－－－－－－－－</p>
<p>好的网站，首先内容是要吸引人的，否则用户不会过来。</p>
<p>一个全新的网站，在建立初期可能要进行大量的内容摘抄，甚至使用一些采集工具进行采集。对于刚发展的小网站，这种做法是事半功倍的，但是，我绝对不赞成使用采集器进行采集入库，原因有三：1、采集不容易控制html标签，很容易造成页面排版跟实际风格不符，造成用户阅读困难；2、采集不容易控制内容的归类准确性，任何一个网站的分类都没有完全相同的；3、采集的网站，搜索引擎不易收录，而且排名很低，不利于推广。</p>
<p>解决这个问题，我建议使用手工采集的方式，按照自己网站的标准重新排版，而且加以整理，最好自己总结摘要和关键词，这样，既满足了内容充实的低成本，又以比较匹配的分类给用户好的阅读体验。</p>
<p>其次，行业网站的内容相对集中，但又有其占有的分类形势，因此，一个非常符合行业习惯的分类形式很有必要。好的分类，就是一个好的索引，好的导航，更容易把用户粘滞在网站上。</p>
<p>再之，网站初期不就建议构建在通用的CMS系统上。因为这些CMS虽然成熟，但灵活性欠佳，难以满足复杂的内容需求，而且，很容易让人认为是个垃圾站，所以，独立开发，而且作出自己的风格是必要的，这样能减少不必要的二次开发。</p>
<p>然后：不断的更新，意味着网站的生命，没人希望在首页看到一年前的文章。</p>
<p>网站的灵魂，体现在活生生的个体，不仅是活的，而且要是鲜活，有蓬勃生命力的。生命是有对外界刺激的反映的，也就是交互性。</p>
<p>交互性，比较容易，现在最流行的就是bbs，blog，space，sns貌似也将成标配。</p>
<p>现在说灵魂，灵魂是个看不见摸不着的东西，但的确能感受到。</p>
<p>灵魂，用在网站上更多的就是网站的文化氛围和主题，比如上mop的就是扯淡美女意淫，上天涯的就是讨论一些事情，年龄偏长。上csdn的windows环境工程师多，chinaunix上都是钟情开源的。提到这些网站的时候，我们就能感受到一种灵魂，不论是好的还是坏的，起码能让我们神经一动。一个网站能做到这种程度，才算是有了灵魂。</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;题外话：关于编程语言&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>主旨是：不管用什么语言，你要保证有能力去开发维护下去，并且拥有和掌控源代码。</p>
<p>当你拿着一个没有源代码的网站又要改造的时候，你郁闷去吧……</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/11/10/%e7%bd%91%e7%ab%99%e7%9a%84%e7%94%9f%e5%91%bd%e4%b8%8e%e7%81%b5%e9%ad%82.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>暂别系统，回归程序设计</title>
		<link>http://www.sunboyu.cn/2008/11/10/%e6%9a%82%e5%88%ab%e7%b3%bb%e7%bb%9f%ef%bc%8c%e5%9b%9e%e5%bd%92%e7%a8%8b%e5%ba%8f%e8%ae%be%e8%ae%a1.shtml</link>
		<comments>http://www.sunboyu.cn/2008/11/10/%e6%9a%82%e5%88%ab%e7%b3%bb%e7%bb%9f%ef%bc%8c%e5%9b%9e%e5%bd%92%e7%a8%8b%e5%ba%8f%e8%ae%be%e8%ae%a1.shtml#comments</comments>
		<pubDate>Mon, 10 Nov 2008 10:29:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<category><![CDATA[..]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=379</guid>
		<description><![CDATA[最近的linux加强学习搞得我精疲力尽，总算有了一个显著的提高。
从明天起继续开始程序和网站的设计，目标－架构设计的显著提升。
]]></description>
			<content:encoded><![CDATA[<p>最近的linux加强学习搞得我精疲力尽，总算有了一个显著的提高。</p>
<p>从明天起继续开始程序和网站的设计，目标－架构设计的显著提升。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/11/10/%e6%9a%82%e5%88%ab%e7%b3%bb%e7%bb%9f%ef%bc%8c%e5%9b%9e%e5%bd%92%e7%a8%8b%e5%ba%8f%e8%ae%be%e8%ae%a1.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>Ubuntu系统同步跟进</title>
		<link>http://www.sunboyu.cn/2008/11/09/ubuntu%e7%b3%bb%e7%bb%9f%e5%90%8c%e6%ad%a5%e8%b7%9f%e8%bf%9b.shtml</link>
		<comments>http://www.sunboyu.cn/2008/11/09/ubuntu%e7%b3%bb%e7%bb%9f%e5%90%8c%e6%ad%a5%e8%b7%9f%e8%bf%9b.shtml#comments</comments>
		<pubDate>Sun, 09 Nov 2008 06:18:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[ubuntu8.10]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=378</guid>
		<description><![CDATA[Ubuntu8.10在2008年10月30日终于到来，跟官方所要了两张作为纪念，同时刻了一张进行试用。
新版的跟8.04没看出太大的区别，对于那个立方体效果，我也没有试用。系统是让用的，不是用来玩的，关闭所有的特效，能顺利工作才是。
我用的惠普康柏 V3729 系列，系统安装后，自动识别无线网卡，这是首要的，拉线的感觉可不好。官方发布后，国内的更新源也同步更新了，cn99的不太好用，我用的lupaworld的源,比较快
deb http://mirror.lupaworld.com/ubuntu intrepid main restricted universe multiverse
deb http://mirror.lupaworld.com/ubuntu intrepid-security main restricted universe multiverse
deb http://mirror.lupaworld.com/ubuntu intrepid-updates main restricted universe multiverse
deb http://mirror.lupaworld.com/ubuntu intrepid-backports main restricted universe multiverse
deb http://mirror.lupaworld.com/ubuntu intrepid-proposed main restricted universe multiverse
deb-src http://mirror.lupaworld.com/ubuntu intrepid main restricted universe multiverse
deb-src http://mirror.lupaworld.com/ubuntu intrepid-security main restricted universe multiverse
deb-src http://mirror.lupaworld.com/ubuntu intrepid-updates main restricted universe multiverse
deb-src http://mirror.lupaworld.com/ubuntu intrepid-backports main restricted [...]]]></description>
			<content:encoded><![CDATA[<p>Ubuntu8.10在2008年10月30日终于到来，跟官方所要了两张作为纪念，同时刻了一张进行试用。<br />
新版的跟8.04没看出太大的区别，对于那个立方体效果，我也没有试用。系统是让用的，不是用来玩的，关闭所有的特效，能顺利工作才是。<br />
我用的惠普康柏 V3729 系列，系统安装后，自动识别无线网卡，这是首要的，拉线的感觉可不好。官方发布后，国内的更新源也同步更新了，cn99的不太好用，我用的lupaworld的源,比较快</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">deb http://mirror.lupaworld.com/ubuntu intrepid main restricted universe multiverse</li>
<li>deb http://mirror.lupaworld.com/ubuntu intrepid-security main restricted universe multiverse</li>
<li>deb http://mirror.lupaworld.com/ubuntu intrepid-updates main restricted universe multiverse</li>
<li>deb http://mirror.lupaworld.com/ubuntu intrepid-backports main restricted universe multiverse</li>
<li>deb http://mirror.lupaworld.com/ubuntu intrepid-proposed main restricted universe multiverse</li>
<li>deb-src http://mirror.lupaworld.com/ubuntu intrepid main restricted universe multiverse</li>
<li>deb-src http://mirror.lupaworld.com/ubuntu intrepid-security main restricted universe multiverse</li>
<li>deb-src http://mirror.lupaworld.com/ubuntu intrepid-updates main restricted universe multiverse</li>
<li>deb-src http://mirror.lupaworld.com/ubuntu intrepid-backports main restricted universe multiverse</li>
<li>deb-src http://mirror.lupaworld.com/ubuntu intrepid-proposed main restricted universe multiverse</li></ol></div>
<p>我的机器是 NVIDIA GeForce 7150M的显卡，默认是不支持的，但 apt-get upgrade后，可以用新力德自动安装显卡驱动。为这驱动我费了不少劲，官方的下载了不少，也没装上。<br />
整体装完后，更新了mplayer，可以播放mp3，但rmvb的不能播放，下载了realplaylinux版，只有图像没有声音。<br />
在更新完</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">sudo apt-get install gstreamer0.10-pitfdll gstreamer0.10-ffmpeg gstreamer0.10-plugins-bad gstreamer0.10-plugins-bad-multiverse gstreamer0.10-plugins-ugly gstreamer0.10-plugins-ugly-multiverse </li>
<li>sudo apt-get install libxine-extracodecs totem-xine ffmpeg lame faad sox mjpegtools libxine-main1</li></ol></div>
<p>后，realplay运行正常。msn用Pidgin,qq使用官方的ubuntu版本，很流畅，不过还不能看迅雷看看，回头装wine试试。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/11/09/ubuntu%e7%b3%bb%e7%bb%9f%e5%90%8c%e6%ad%a5%e8%b7%9f%e8%bf%9b.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>linux_apache_php_mysql_fcgid_suexec_高效安全的主机配置方案</title>
		<link>http://www.sunboyu.cn/2008/11/08/linux_apache_php_mysql_fcgid_suexec_%e9%ab%98%e6%95%88%e5%ae%89%e5%85%a8%e7%9a%84%e4%b8%bb%e6%9c%ba%e9%85%8d%e7%bd%ae%e6%96%b9%e6%a1%88.shtml</link>
		<comments>http://www.sunboyu.cn/2008/11/08/linux_apache_php_mysql_fcgid_suexec_%e9%ab%98%e6%95%88%e5%ae%89%e5%85%a8%e7%9a%84%e4%b8%bb%e6%9c%ba%e9%85%8d%e7%bd%ae%e6%96%b9%e6%a1%88.shtml#comments</comments>
		<pubDate>Sat, 08 Nov 2008 14:35:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[apache]]></category>

		<category><![CDATA[fastcgi]]></category>

		<category><![CDATA[fcgid]]></category>

		<category><![CDATA[linux]]></category>

		<category><![CDATA[php]]></category>

		<category><![CDATA[suexec]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=376</guid>
		<description><![CDATA[linux+apache+php+mysql+fcgid+suexec 高效安全主机配置
最近一直在研究web服务器的配置和安全配置，基本搞完了
window2003下
iis+php(isapi)
apache+php(mod)
linux下
apache+php(mod)
apache+php(fastcgi)
四种安装方式的安全设置。其中涉及一些性能方面的调整，但没有实际的环境来测试，所以只涉及方法，不涉及具体的应用，而在安全方面下了很大的功夫。
底下我针对比较复杂的一种安装模式apache+php(fastcgi)进行详细讲解，来介绍如何配置一个安全的虚拟主机系统。
调试环境：
CentOS5
Apache2.2.9
Mysql5.0.22
PHP5.2.6
Fcgid2.4.6
需要的脚本  sunboyu-amp-fastcgi-suexec-v20-alpha
首先用脚本 unboyu-amp-fastcgi-v20-fcgid-suexec-alpha.txt 进行安装。
注：我在我的服务器上做了一个源，如果你感觉较慢的话，可以先吧软件下载到本地，然后修改一下脚本进行安装。
整体运行完后，apache是能成功运行的，但访问的话显示权限错误，底下主要是配置权限
过程用命令来显示，比较符合技术人员的习惯
1、vi /opt/httpd-2.2.9/conf/httpd.conf
修改 User daemon
Group daemon
为 User apache
Group apache
去掉 #Include conf/extra/httpd-vhosts.conf 前边的#，使其生效
2、增加一个虚拟站点的账户
groupadd www
useradd -g www www
现在应该有个目录 /home/www
3、vi /opt/httpd-2.2.9/conf/extra/httpd-vhost.conf
屏蔽或直接删除原来的站点信息
SuexecUserGroup www www #这里一定要弄清楚是做什么用的
ServerAdmin sunboyu@gmail.com
DocumentRoot &#8220;/home/www/php-cgi&#8221;
ServerName 192.168.0.5 #我测试的ip是这个，实际应该为你的域名
ServerAlias www.dummy-host.example.com #别名
ErrorLog &#8220;logs/dummy-host.example.com-error_log&#8221; #日志，用独立的名字
CustomLog &#8220;logs/dummy-host.example.com-access_log&#8221; common
SetHandler fcgid-script #我在编译完apache，附加了两个模块，fastcgi和fcgid，后一个是国人开发的，比fastcgi更稳定和易用
FCGIWrapper /home/www/php/php-cgi .php # php-cgi 是站点下的一个文件，下边建立
Options ExecCGI
allow from all
然后: x 即可
4、建立脚本 /home/www/php/php-cgi
vi /home/www/php/php-cgi
内容为
#!/bin/sh
export PHPRC=/home/www/php-cgi
export PHP_FCGI_CHILDREN=5 #创建的fcgi进程
export PHP_FCGI_MAX_REQUESTS=5000 #最大连接数
/opt/php-5.2.6/bin/php-cgi #php-cgi程序的位置
: x
5、创建独立的php.ini配置文件
cp [...]]]></description>
			<content:encoded><![CDATA[<p>linux+apache+php+mysql+fcgid+suexec 高效安全主机配置</p>
<p>最近一直在研究web服务器的配置和安全配置，基本搞完了<br />
window2003下<br />
iis+php(isapi)<br />
apache+php(mod)<br />
linux下<br />
apache+php(mod)<br />
apache+php(fastcgi)<br />
四种安装方式的安全设置。其中涉及一些性能方面的调整，但没有实际的环境来测试，所以只涉及方法，不涉及具体的应用，而在安全方面下了很大的功夫。<br />
底下我针对比较复杂的一种安装模式apache+php(fastcgi)进行详细讲解，来介绍如何配置一个安全的虚拟主机系统。</p>
<p>调试环境：</p>
<p>CentOS5<br />
Apache2.2.9<br />
Mysql5.0.22<br />
PHP5.2.6<br />
Fcgid2.4.6</p>
<p>需要的脚本  <a href='http://www.sunboyu.cn/upfiles/2008/12/sunboyu-amp-fastcgi-suexec-v20-alpha.txt'>sunboyu-amp-fastcgi-suexec-v20-alpha</a></p>
<p>首先用脚本 unboyu-amp-fastcgi-v20-fcgid-suexec-alpha.txt 进行安装。<br />
注：我在我的服务器上做了一个源，如果你感觉较慢的话，可以先吧软件下载到本地，然后修改一下脚本进行安装。</p>
<p>整体运行完后，apache是能成功运行的，但访问的话显示权限错误，底下主要是配置权限<br />
过程用命令来显示，比较符合技术人员的习惯<br />
1、vi /opt/httpd-2.2.9/conf/httpd.conf</p>
<p>修改 User daemon<br />
Group daemon<br />
为 User apache<br />
Group apache</p>
<p>去掉 #Include conf/extra/httpd-vhosts.conf 前边的#，使其生效</p>
<p>2、增加一个虚拟站点的账户</p>
<p>groupadd www<br />
useradd -g www www</p>
<p>现在应该有个目录 /home/www</p>
<p>3、vi /opt/httpd-2.2.9/conf/extra/httpd-vhost.conf</p>
<p>屏蔽或直接删除原来的站点信息<br />
SuexecUserGroup www www #这里一定要弄清楚是做什么用的<br />
ServerAdmin sunboyu@gmail.com<br />
DocumentRoot &#8220;/home/www/php-cgi&#8221;<br />
ServerName 192.168.0.5 #我测试的ip是这个，实际应该为你的域名<br />
ServerAlias www.dummy-host.example.com #别名<br />
ErrorLog &#8220;logs/dummy-host.example.com-error_log&#8221; #日志，用独立的名字<br />
CustomLog &#8220;logs/dummy-host.example.com-access_log&#8221; common</p>
<p>SetHandler fcgid-script #我在编译完apache，附加了两个模块，fastcgi和fcgid，后一个是国人开发的，比fastcgi更稳定和易用<br />
FCGIWrapper /home/www/php/php-cgi .php # php-cgi 是站点下的一个文件，下边建立<br />
Options ExecCGI<br />
allow from all<br />
然后: x 即可</p>
<p>4、建立脚本 /home/www/php/php-cgi</p>
<p>vi /home/www/php/php-cgi<br />
内容为<br />
#!/bin/sh<br />
export PHPRC=/home/www/php-cgi<br />
export PHP_FCGI_CHILDREN=5 #创建的fcgi进程<br />
export PHP_FCGI_MAX_REQUESTS=5000 #最大连接数<br />
/opt/php-5.2.6/bin/php-cgi #php-cgi程序的位置</p>
<p>: x</p>
<p>5、创建独立的php.ini配置文件<br />
cp /opt/php-5.2.6/lib/php.ini /home/www/php-cgi/php.ini</p>
<p>6、修改PHP的open_basedir</p>
<p>在/home/www/php-cgi/php.ini中找到<br />
open_basedir , 修改为<br />
open_basedir = /home/www/php<br />
注：safe_mode_exec_dir 之类的参数如果从比较变态的安全设置来说，也是应该来设定的，但我还不变态</p>
<p>7、配置权限<br />
chgrp root /opt/httpd-2.2.9/bin/suexec<br />
chmod 4751 /opt/httpd-2.2.9/bin/suexec<br />
chown www:www -R /home/www<br />
chmod 755 -R /home/www<br />
chmod 700 -R /home/www/php-cgi/php-cgi</p>
<p>8、重启<br />
server httpd restart</p>
<p>9、如果你能看到成功页面，然后就传一个PHP木马上去测试一下权限和安全的问题.<br />
如果连启动都启动不了，那就得查httpd的error_log ，suexec_log，然后去google一下，看看是哪的权限问题。</p>
<p>总结：本人教懒，整个过程调通后，也没写文档，但看到网上此类资料不多，而且有一些都没有命中要害，比如一些权限的配置和相对详尽的说明。我的注释只是把一些网上没有的解释而我弄明白后的理解写在了上边，但真正要想明白，估计还得搬着手册和google去一条条查。而且，我不是边做边写的，而是根据原来的配置盲写了一遍，估计会不少错误，总比没有强。如果有谁发现这个安全依然有问题，可以帮我提出，因为在安全方面我对自己要求很高。<br />
如果有什么需要讨论的，可以加入这个MSN群 lampper@live.cn （加为msn好友即可）</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/11/08/linux_apache_php_mysql_fcgid_suexec_%e9%ab%98%e6%95%88%e5%ae%89%e5%85%a8%e7%9a%84%e4%b8%bb%e6%9c%ba%e9%85%8d%e7%bd%ae%e6%96%b9%e6%a1%88.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>美丽的天津，我的车！</title>
		<link>http://www.sunboyu.cn/2008/11/07/%e7%be%8e%e4%b8%bd%e7%9a%84%e5%a4%a9%e6%b4%a5%ef%bc%8c%e6%88%91%e7%9a%84%e8%bd%a6%ef%bc%81.shtml</link>
		<comments>http://www.sunboyu.cn/2008/11/07/%e7%be%8e%e4%b8%bd%e7%9a%84%e5%a4%a9%e6%b4%a5%ef%bc%8c%e6%88%91%e7%9a%84%e8%bd%a6%ef%bc%81.shtml#comments</comments>
		<pubDate>Fri, 07 Nov 2008 14:14:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[相当拍砖]]></category>

		<category><![CDATA[偷车]]></category>

		<category><![CDATA[自行车]]></category>

		<category><![CDATA[黑车]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=375</guid>
		<description><![CDATA[有人说，到天津没吃狗不理，不算到过天津。其实，在天津没丢过车，就不算在天津呆过。
苏苏的电动车丢了，皆大欢喜，能跟A哥交流了。他俩丢的都是电动的，看来那些贼档次有些提高。
我只丢过两辆车，不，是三辆，不，是四辆。
第一辆是140块买的非常不错的黑车，大二的时候，在商科网吧门口。去网吧上网一会，一小会，十几分钟吧，出来居然他妈的没了，晚上7点多。一般我会把车子栓电线杆上的，那次时间短，就没注意，果然丢了。不过想想，这叫变相租车，反正我买的也是黑车。
第二辆是毕业时同学卖我的一辆，当时住一个筒子楼，二楼，每天我都会把车搬楼道里，那天，我发誓，是真忘了，结果，两个小时就丢了，在六纬路附近的一个筒子楼。那车破的……真服那个贼。
第三辆，是朋友送的一辆破车，太破了，实在没法要了，就给我了……想不到，此车也在八里台附近给丢了，这车还是栓在柱子上被偷的，可能是收破烂的眼不好使，没看见我的锁，一不小心给打开了，就拣走了。
第四辆，是在第三辆车丢后，我顺便在八里台某派出所的门口买了辆黑车，好像这么说有点太那个，我的确是在那条小河边上的黑车市场买的，50块，挺好一车，骑了大概半年，最后那是我要来北京，不值当带一车过来，就锁在了刘家房子某个小区，结果，那么结实的一个锁，还是被高手打开了。
这是我在天津所丢的四辆车。
其实，我知道我买的车也许都是黑车，但也没办法，新车比旧车丢的更快，这事扔派出所估计也不值当的，就当租车。在天津三年，我发现了几个大的二手车交易市场（这么叫比较文明），如此大的市场，我怎能不买二手。
现在来了北京，似乎好点，起码高档的小区治安还是不错，写字楼的保安也都挺好。来北京我这是第三辆车了，第一辆买的是天津那种小厂组装的车，不贵，骑了一年，骑烂了。第二辆是在清河小营市场买的一辆永久，不是翻新就是假货。fuck奸商。现在骑的是一辆捷安特山地，非常不错。明年计划升级美利达公爵系列。
]]></description>
			<content:encoded><![CDATA[<p>有人说，到天津没吃狗不理，不算到过天津。其实，在天津没丢过车，就不算在天津呆过。</p>
<p>苏苏的电动车丢了，皆大欢喜，能跟A哥交流了。他俩丢的都是电动的，看来那些贼档次有些提高。</p>
<p>我只丢过两辆车，不，是三辆，不，是四辆。</p>
<p>第一辆是140块买的非常不错的黑车，大二的时候，在商科网吧门口。去网吧上网一会，一小会，十几分钟吧，出来居然他妈的没了，晚上7点多。一般我会把车子栓电线杆上的，那次时间短，就没注意，果然丢了。不过想想，这叫变相租车，反正我买的也是黑车。</p>
<p>第二辆是毕业时同学卖我的一辆，当时住一个筒子楼，二楼，每天我都会把车搬楼道里，那天，我发誓，是真忘了，结果，两个小时就丢了，在六纬路附近的一个筒子楼。那车破的……真服那个贼。</p>
<p>第三辆，是朋友送的一辆破车，太破了，实在没法要了，就给我了……想不到，此车也在八里台附近给丢了，这车还是栓在柱子上被偷的，可能是收破烂的眼不好使，没看见我的锁，一不小心给打开了，就拣走了。</p>
<p>第四辆，是在第三辆车丢后，我顺便在八里台某派出所的门口买了辆黑车，好像这么说有点太那个，我的确是在那条小河边上的黑车市场买的，50块，挺好一车，骑了大概半年，最后那是我要来北京，不值当带一车过来，就锁在了刘家房子某个小区，结果，那么结实的一个锁，还是被高手打开了。</p>
<p>这是我在天津所丢的四辆车。</p>
<p>其实，我知道我买的车也许都是黑车，但也没办法，新车比旧车丢的更快，这事扔派出所估计也不值当的，就当租车。在天津三年，我发现了几个大的二手车交易市场（这么叫比较文明），如此大的市场，我怎能不买二手。</p>
<p>现在来了北京，似乎好点，起码高档的小区治安还是不错，写字楼的保安也都挺好。来北京我这是第三辆车了，第一辆买的是天津那种小厂组装的车，不贵，骑了一年，骑烂了。第二辆是在清河小营市场买的一辆永久，不是翻新就是假货。fuck奸商。现在骑的是一辆捷安特山地，非常不错。明年计划升级美利达公爵系列。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/11/07/%e7%be%8e%e4%b8%bd%e7%9a%84%e5%a4%a9%e6%b4%a5%ef%bc%8c%e6%88%91%e7%9a%84%e8%bd%a6%ef%bc%81.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>一生的创业</title>
		<link>http://www.sunboyu.cn/2008/11/07/%e4%b8%80%e7%94%9f%e7%9a%84%e5%88%9b%e4%b8%9a.shtml</link>
		<comments>http://www.sunboyu.cn/2008/11/07/%e4%b8%80%e7%94%9f%e7%9a%84%e5%88%9b%e4%b8%9a.shtml#comments</comments>
		<pubDate>Fri, 07 Nov 2008 12:48:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[感悟]]></category>

		<category><![CDATA[创业]]></category>

		<category><![CDATA[大学生]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=374</guid>
		<description><![CDATA[创业这个词其实前几年并不常用，但随着高校扩招，大量毕业生难以就业，上边为了稳定人心，解决这些问题，开始提倡创业这个事情。
随着社会的开放，大学生意识的提高，有不少的大学生和毕业生确实以自己的能力开创了自己的一片天地。然而在我们讨论大学生是不是应该去做这些事情的时候，媒体却在大肆宣传大学生的创业成果，好像在全国学子的心上挠痒痒。
在媒体上，我们看到大量大学生创业的成功案例，包括类似比尔盖茨之类，但他们宣传的大都是一个人得到一个某某机会，然后如何如何成功，殊不知，创业成功毕竟是少数，太多的人处于创业萌芽或者无准备状态的创业。
这里，暂且不去分析他们为何成功和为何失败，有创业的心，固然是好事，值得我们提倡，但在创业背后，我们需要什么，如何创业，却值得我们深思。
我身边很多人在创业，当然，也有成功的，很多人属于破釜沉舟式的创业，我很敬佩这种精神，还有一些是摸着石头过河型的，这样的人就比较危险了，因为在当今市场上，失败的几率要大。
我感觉，创业是一辈子的事情，人自己，是业的一个重要组成部分，我们自己的健康，我们的自身素质，我们在这个社会中的适应能力，都将是我们发展的一些重要因素。创业成功，首先是个体的成功，然后是团队的成功，集体的成功。因此，创业是一生的创业。
]]></description>
			<content:encoded><![CDATA[<p>创业这个词其实前几年并不常用，但随着高校扩招，大量毕业生难以就业，上边为了稳定人心，解决这些问题，开始提倡创业这个事情。</p>
<p>随着社会的开放，大学生意识的提高，有不少的大学生和毕业生确实以自己的能力开创了自己的一片天地。然而在我们讨论大学生是不是应该去做这些事情的时候，媒体却在大肆宣传大学生的创业成果，好像在全国学子的心上挠痒痒。</p>
<p>在媒体上，我们看到大量大学生创业的成功案例，包括类似比尔盖茨之类，但他们宣传的大都是一个人得到一个某某机会，然后如何如何成功，殊不知，创业成功毕竟是少数，太多的人处于创业萌芽或者无准备状态的创业。</p>
<p>这里，暂且不去分析他们为何成功和为何失败，有创业的心，固然是好事，值得我们提倡，但在创业背后，我们需要什么，如何创业，却值得我们深思。</p>
<p>我身边很多人在创业，当然，也有成功的，很多人属于破釜沉舟式的创业，我很敬佩这种精神，还有一些是摸着石头过河型的，这样的人就比较危险了，因为在当今市场上，失败的几率要大。</p>
<p>我感觉，创业是一辈子的事情，人自己，是业的一个重要组成部分，我们自己的健康，我们的自身素质，我们在这个社会中的适应能力，都将是我们发展的一些重要因素。创业成功，首先是个体的成功，然后是团队的成功，集体的成功。因此，创业是一生的创业。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/11/07/%e4%b8%80%e7%94%9f%e7%9a%84%e5%88%9b%e4%b8%9a.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>伟大的进步</title>
		<link>http://www.sunboyu.cn/2008/11/05/%e4%bc%9f%e5%a4%a7%e7%9a%84%e8%bf%9b%e6%ad%a5.shtml</link>
		<comments>http://www.sunboyu.cn/2008/11/05/%e4%bc%9f%e5%a4%a7%e7%9a%84%e8%bf%9b%e6%ad%a5.shtml#comments</comments>
		<pubDate>Wed, 05 Nov 2008 14:09:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[linux]]></category>

		<category><![CDATA[安全]]></category>

		<category><![CDATA[虚拟主机]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=373</guid>
		<description><![CDATA[博客很久没更新，导致alexa排名暴跌，因为最近在研究linux下apache＋php的系统安全问题，这个问题困扰了好久。因为配置iis（之前有此文章）的时候，我设置了非常安全的iis站点用户和权限的隔离，但在linux下，总没有找到好的方法。
最近查阅了大量的资料，主要是了解apache的账户机制，suexec的工作原理，然后又翻看了大量的资料，终于搞清楚了一套完整的安全的lamp虚拟主机配置方法，能达到站点的权限隔离，进程账户的相对独立，以及对性能的控制。
在学习的过程中，常犯的错误，就是轻敌。总感觉这事不难，一会就搞定。但实际头疼了半个月。另外就是不看日志。到最后两天，大量的调试是在对比日志和理解日志的涵义，针对日志去进行配置。从我学linux的过程来看，看手册，翻日志，分析别人的案例，是学习的最佳途径。
关于安全配置linux虚拟主机的过程，我将另写文章。
]]></description>
			<content:encoded><![CDATA[<p>博客很久没更新，导致alexa排名暴跌，因为最近在研究linux下apache＋php的系统安全问题，这个问题困扰了好久。因为配置iis（之前有此文章）的时候，我设置了非常安全的iis站点用户和权限的隔离，但在linux下，总没有找到好的方法。</p>
<p>最近查阅了大量的资料，主要是了解apache的账户机制，suexec的工作原理，然后又翻看了大量的资料，终于搞清楚了一套完整的安全的lamp虚拟主机配置方法，能达到站点的权限隔离，进程账户的相对独立，以及对性能的控制。</p>
<p>在学习的过程中，常犯的错误，就是轻敌。总感觉这事不难，一会就搞定。但实际头疼了半个月。另外就是不看日志。到最后两天，大量的调试是在对比日志和理解日志的涵义，针对日志去进行配置。从我学linux的过程来看，看手册，翻日志，分析别人的案例，是学习的最佳途径。</p>
<p>关于安全配置linux虚拟主机的过程，我将另写文章。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/11/05/%e4%bc%9f%e5%a4%a7%e7%9a%84%e8%bf%9b%e6%ad%a5.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>IIS安全机制详解</title>
		<link>http://www.sunboyu.cn/2008/11/04/iis%e5%ae%89%e5%85%a8%e6%9c%ba%e5%88%b6%e8%af%a6%e8%a7%a3.shtml</link>
		<comments>http://www.sunboyu.cn/2008/11/04/iis%e5%ae%89%e5%85%a8%e6%9c%ba%e5%88%b6%e8%af%a6%e8%a7%a3.shtml#comments</comments>
		<pubDate>Tue, 04 Nov 2008 10:11:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[其他]]></category>

		<category><![CDATA[iis]]></category>

		<category><![CDATA[权限]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=371</guid>
		<description><![CDATA[2005年前后曾经风靡过一阵旁注入侵，其利用的原理是所有的iis站点使用了统一的进程账户，而对所有站点设置了同样的权限，因此，当你有一个站点的权限的时候，就等于拥有了所有站点的权限。
在虚拟主机上，这么设置，那生意真的是没法做了，因此，基于iis的虚拟主机都用了独立的iis进程账户进行权限的隔离。
现简述安全原理：
现有 site1，site2，site3 三个站点，三个站点目录结构如下
D:\WWW\site1  D:\WWW\site2   D:\WWW\site3
默认会使用 IUSR_SUN 这个账户作为Internet来宾账户，而 IIS_WPG作为IIS工作进程组。那么会在D:\WWW 这个文件夹上使IUSR_SUN有用读写执行脚本的权限，而三个站点的的匿名访问用户均为IUSR_SUN。这样，虽然脚本（asp，php等）运行在D:\WWW\site1目录下，但对D:\WWW\site2   D:\WWW\site3都是有读写权限的。
如果服务器上的站点是一个公司的，那样还好，如果是给不同的用户来用，问题不言而喻。
因此，我们要用独立的账户和权限来运行三个站点。
我们设置三个用户  IUSR_SUN_1  IUSR_SUN_2   IUSR_SUN_3 ,只归入guests组（如果属于多个组，windows会按照权限的交集来计算）三个用户分别作为 D:\WWW\site1  D:\WWW\site2   D:\WWW\site3的匿名访问用户。然后分别给 D:\WWW\site1  IUSR_SUN_1用户读写等权限，依次设置。
这样，每个网站的用户权限被禁锢在自己的文件夹（站点）下，就保证了站点权限的隔离。
－－－－－－附录－－－－－－
在设置一个站点的时候，我按照最严格的权限进行设定，但发现一个问题，有些PHP的脚本不能执行。后来发现，当使用require(&#8221;./a.php&#8221;)，这种linux风格的路径的时候，会出问题。后查资料发现，这样访问的时候，脚本需要对本层目录的上一层拥有读的权限，所以，我们在独立设置对上层有个读的权限，这样问题就可以解决。
这个问题发生在ThinkSNS程序中，他们大量使用了linux风格的路径包含方式，因此在权限严格的iis上就跑不动了。而discuz的程序大都不使用这种方式，在兼容性上下了很大功夫。
]]></description>
			<content:encoded><![CDATA[<p>2005年前后曾经风靡过一阵旁注入侵，其利用的原理是所有的iis站点使用了统一的进程账户，而对所有站点设置了同样的权限，因此，当你有一个站点的权限的时候，就等于拥有了所有站点的权限。</p>
<p>在虚拟主机上，这么设置，那生意真的是没法做了，因此，基于iis的虚拟主机都用了独立的iis进程账户进行权限的隔离。</p>
<p>现简述安全原理：</p>
<p>现有 site1，site2，site3 三个站点，三个站点目录结构如下</p>
<p>D:\WWW\site1  D:\WWW\site2   D:\WWW\site3</p>
<p>默认会使用 IUSR_SUN 这个账户作为Internet来宾账户，而 IIS_WPG作为IIS工作进程组。那么会在D:\WWW 这个文件夹上使IUSR_SUN有用读写执行脚本的权限，而三个站点的的匿名访问用户均为IUSR_SUN。这样，虽然脚本（asp，php等）运行在D:\WWW\site1目录下，但对D:\WWW\site2   D:\WWW\site3都是有读写权限的。</p>
<p>如果服务器上的站点是一个公司的，那样还好，如果是给不同的用户来用，问题不言而喻。</p>
<p>因此，我们要用独立的账户和权限来运行三个站点。</p>
<p>我们设置三个用户  IUSR_SUN_1  IUSR_SUN_2   IUSR_SUN_3 ,只归入guests组（如果属于多个组，windows会按照权限的交集来计算）三个用户分别作为 D:\WWW\site1  D:\WWW\site2   D:\WWW\site3的匿名访问用户。然后分别给 D:\WWW\site1  IUSR_SUN_1用户读写等权限，依次设置。</p>
<p>这样，每个网站的用户权限被禁锢在自己的文件夹（站点）下，就保证了站点权限的隔离。</p>
<p>－－－－－－附录－－－－－－</p>
<p>在设置一个站点的时候，我按照最严格的权限进行设定，但发现一个问题，有些PHP的脚本不能执行。后来发现，当使用require(&#8221;./a.php&#8221;)，这种linux风格的路径的时候，会出问题。后查资料发现，这样访问的时候，脚本需要对本层目录的上一层拥有读的权限，所以，我们在独立设置对上层有个读的权限，这样问题就可以解决。</p>
<p>这个问题发生在ThinkSNS程序中，他们大量使用了linux风格的路径包含方式，因此在权限严格的iis上就跑不动了。而discuz的程序大都不使用这种方式，在兼容性上下了很大功夫。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/11/04/iis%e5%ae%89%e5%85%a8%e6%9c%ba%e5%88%b6%e8%af%a6%e8%a7%a3.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>Amp Linux自动安装脚本（FastCgi）2.0发布</title>
		<link>http://www.sunboyu.cn/2008/11/03/amp-linux%e8%87%aa%e5%8a%a8%e5%ae%89%e8%a3%85%e8%84%9a%e6%9c%ac%ef%bc%88fastcgi%ef%bc%8920%e5%8f%91%e5%b8%83.shtml</link>
		<comments>http://www.sunboyu.cn/2008/11/03/amp-linux%e8%87%aa%e5%8a%a8%e5%ae%89%e8%a3%85%e8%84%9a%e6%9c%ac%ef%bc%88fastcgi%ef%bc%8920%e5%8f%91%e5%b8%83.shtml#comments</comments>
		<pubDate>Mon, 03 Nov 2008 09:51:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=369</guid>
		<description><![CDATA[sunboyu-amp-fastcgi-v20-alpha
本来模块方式跟fastcgi方式的版本可以同步发布的，单由于不争气的hp本本，推迟N天发布。
目前本版本可以安装使用，但由于启用了suexec的安全方式，在虚拟主机下还不能应用，因为linux权限系统很严格，目前还没有彻底搞透suexec的权限机制。
估计以下的几天都得搞这个问题了。我从google上搜索了不少的文章，可惜权限细节配置的方面不多，即使有详细的，也没有说明白原理，所以还是得自己来搞了。
这个版本的更新，跟模块方式编译的类似，如下：
1、增加 OSSP mm 库，PHP可以在此库的支持下保存session到内存 http://www.ossp.org/pkg/lib/mm/
2、增加eaccelerator-0.9.5.2 opcode缓存  http://eaccelerator.net/
3、Apache开启status模块
4、增加了suexec安全访问方式的配置（研究调试中）。
欢迎大家加入LAMPer msn群 lampper@live.cn 加这个号为msn好友即可
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.sunboyu.cn/upfiles/2008/11/sunboyu-amp-fastcgi-v20-alpha.txt">sunboyu-amp-fastcgi-v20-alpha</a></p>
<p>本来模块方式跟fastcgi方式的版本可以同步发布的，单由于不争气的hp本本，推迟N天发布。</p>
<p>目前本版本可以安装使用，但由于启用了suexec的安全方式，在虚拟主机下还不能应用，因为linux权限系统很严格，目前还没有彻底搞透suexec的权限机制。</p>
<p>估计以下的几天都得搞这个问题了。我从google上搜索了不少的文章，可惜权限细节配置的方面不多，即使有详细的，也没有说明白原理，所以还是得自己来搞了。</p>
<p>这个版本的更新，跟模块方式编译的类似，如下：</p>
<p>1、增加 OSSP mm 库，PHP可以在此库的支持下保存session到内存 http://www.ossp.org/pkg/lib/mm/</p>
<p>2、增加eaccelerator-0.9.5.2 opcode缓存  http://eaccelerator.net/</p>
<p>3、Apache开启status模块</p>
<p>4、增加了suexec安全访问方式的配置（研究调试中）。</p>
<p>欢迎大家加入LAMPer msn群 lampper@live.cn 加这个号为msn好友即可</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/11/03/amp-linux%e8%87%aa%e5%8a%a8%e5%ae%89%e8%a3%85%e8%84%9a%e6%9c%ac%ef%bc%88fastcgi%ef%bc%8920%e5%8f%91%e5%b8%83.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>重于整好了倒霉的惠普</title>
		<link>http://www.sunboyu.cn/2008/11/01/%e9%87%8d%e4%ba%8e%e6%95%b4%e5%a5%bd%e4%ba%86%e5%80%92%e9%9c%89%e7%9a%84%e6%83%a0%e6%99%ae.shtml</link>
		<comments>http://www.sunboyu.cn/2008/11/01/%e9%87%8d%e4%ba%8e%e6%95%b4%e5%a5%bd%e4%ba%86%e5%80%92%e9%9c%89%e7%9a%84%e6%83%a0%e6%99%ae.shtml#comments</comments>
		<pubDate>Sat, 01 Nov 2008 02:28:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[相当拍砖]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=368</guid>
		<description><![CDATA[首先，继续鄙视hp V3000系列本子，发热量太大，机身反过来直接能摊煎饼，结果造成频繁死机，多种方式解决无果，买散热底拖一个，暂时解决问题。
不过有散热底拖存在的情况下，CPU负载过高的时候发热依然很严重，恐怕也盯不了太久。
另外就是v3000系列的设计，估计设计师也是近亲结婚的产物，太不人性化了，建议买此品牌此系列的朋友谨记教诲。
]]></description>
			<content:encoded><![CDATA[<p>首先，继续鄙视hp V3000系列本子，发热量太大，机身反过来直接能摊煎饼，结果造成频繁死机，多种方式解决无果，买散热底拖一个，暂时解决问题。</p>
<p>不过有散热底拖存在的情况下，CPU负载过高的时候发热依然很严重，恐怕也盯不了太久。</p>
<p>另外就是v3000系列的设计，估计设计师也是近亲结婚的产物，太不人性化了，建议买此品牌此系列的朋友谨记教诲。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/11/01/%e9%87%8d%e4%ba%8e%e6%95%b4%e5%a5%bd%e4%ba%86%e5%80%92%e9%9c%89%e7%9a%84%e6%83%a0%e6%99%ae.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>Apache开启Gzip压缩</title>
		<link>http://www.sunboyu.cn/2008/10/28/apache%e5%bc%80%e5%90%afgzip%e5%8e%8b%e7%bc%a9.shtml</link>
		<comments>http://www.sunboyu.cn/2008/10/28/apache%e5%bc%80%e5%90%afgzip%e5%8e%8b%e7%bc%a9.shtml#comments</comments>
		<pubDate>Tue, 28 Oct 2008 05:57:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[APACHE]]></category>

		<category><![CDATA[apache]]></category>

		<category><![CDATA[deflate]]></category>

		<category><![CDATA[mod_gzip]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=366</guid>
		<description><![CDATA[文档位置 http://lamp.linux.gov.cn/Apache/ApacheMenu/mod/mod_deflate.html
Apache2中的实时压缩解压的模块编译在mod_deflate模块中，替换了原来的mod_gzip模块。
编译apache的时候 &#8211;enable-deflate  这个参数是默认开启的，编译完会有mod_deflate模块。
配置站点：
如果我们想使一个文件传输的时候进行加密，我们在站点配置文件里增加这样的配置
&#60;Location /&#62;
SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI \
\.(?:gif&#124;jpe?g&#124;png)$ no-gzip dont-vary
Header append Vary User-Agent env=!dont-vary
&#60;/Location&#62;
这样，/opt/httpd-2.2.9/htdocs目录下的所有mime类型为text/html的文件就可以启用
未压缩的http头



Date
Tue, 28 Oct 2008 13:04:15 GMT


Server
Apache/2.2.9 (Unix) DAV/2 PHP/5.2.6


Last-Modified
Tue, 28 Oct 2008 12:51:52 GMT


Etag
&#8220;30623-55fda-45a4fb62a8a00&#8243;


Accept-Ranges
bytes


Content-Length
352218


Content-Type
text/html


Vary
Accept-Encoding,User-Agent



压缩后的http头



Date
Tue, 28 Oct 2008 13:07:39 GMT


Server
Apache/2.2.9 (Unix) DAV/2 PHP/5.2.6


Last-Modified
Tue, 28 Oct 2008 12:51:52 GMT


Etag
&#8220;30623-55fda-45a4fb62a8a00&#8243;-gzip


Accept-Ranges
bytes


Vary
Accept-Encoding,User-Agent


Content-Encoding
gzip


Content-Length
2778


Keep-Alive
timeout=5, max=100


Connection
Keep-Alive


Content-Type
text/html



原来length为352218，压缩后为2778，效果还是很明显的。
不过对于length很小的文件，是不进行压缩的。
具体的一些调整的细节，可以看原apache手册。
]]></description>
			<content:encoded><![CDATA[<p>文档位置 http://lamp.linux.gov.cn/Apache/ApacheMenu/mod/mod_deflate.html</p>
<p>Apache2中的实时压缩解压的模块编译在mod_deflate模块中，替换了原来的mod_gzip模块。</p>
<p>编译apache的时候 &#8211;enable-deflate  这个参数是默认开启的，编译完会有mod_deflate模块。</p>
<p>配置站点：</p>
<p>如果我们想使一个文件传输的时候进行加密，我们在站点配置文件里增加这样的配置</p>
<p>&lt;Location /&gt;<br />
SetOutputFilter DEFLATE<br />
BrowserMatch ^Mozilla/4 gzip-only-text/html<br />
BrowserMatch ^Mozilla/4\.0[678] no-gzip<br />
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html<br />
SetEnvIfNoCase Request_URI \<br />
\.(?:gif|jpe?g|png)$ no-gzip dont-vary<br />
Header append Vary User-Agent env=!dont-vary<br />
&lt;/Location&gt;<br />
这样，/opt/httpd-2.2.9/htdocs目录下的所有mime类型为text/html的文件就可以启用</p>
<p>未压缩的http头</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="netInfoParamName">Date</td>
<td class="netInfoParamValue">Tue, 28 Oct 2008 13:04:15 GMT</td>
</tr>
<tr>
<td class="netInfoParamName">Server</td>
<td class="netInfoParamValue">Apache/2.2.9 (Unix) DAV/2 PHP/5.2.6</td>
</tr>
<tr>
<td class="netInfoParamName">Last-Modified</td>
<td class="netInfoParamValue">Tue, 28 Oct 2008 12:51:52 GMT</td>
</tr>
<tr>
<td class="netInfoParamName">Etag</td>
<td class="netInfoParamValue">&#8220;30623-55fda-45a4fb62a8a00&#8243;</td>
</tr>
<tr>
<td class="netInfoParamName">Accept-Ranges</td>
<td class="netInfoParamValue">bytes</td>
</tr>
<tr>
<td class="netInfoParamName">Content-Length</td>
<td class="netInfoParamValue">352218</td>
</tr>
<tr>
<td class="netInfoParamName">Content-Type</td>
<td class="netInfoParamValue">text/html</td>
</tr>
<tr>
<td class="netInfoParamName">Vary</td>
<td class="netInfoParamValue">Accept-Encoding,User-Agent</td>
</tr>
</tbody>
</table>
<p>压缩后的http头</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="netInfoParamName">Date</td>
<td class="netInfoParamValue">Tue, 28 Oct 2008 13:07:39 GMT</td>
</tr>
<tr>
<td class="netInfoParamName">Server</td>
<td class="netInfoParamValue">Apache/2.2.9 (Unix) DAV/2 PHP/5.2.6</td>
</tr>
<tr>
<td class="netInfoParamName">Last-Modified</td>
<td class="netInfoParamValue">Tue, 28 Oct 2008 12:51:52 GMT</td>
</tr>
<tr>
<td class="netInfoParamName">Etag</td>
<td class="netInfoParamValue">&#8220;30623-55fda-45a4fb62a8a00&#8243;-gzip</td>
</tr>
<tr>
<td class="netInfoParamName">Accept-Ranges</td>
<td class="netInfoParamValue">bytes</td>
</tr>
<tr>
<td class="netInfoParamName">Vary</td>
<td class="netInfoParamValue">Accept-Encoding,User-Agent</td>
</tr>
<tr>
<td class="netInfoParamName">Content-Encoding</td>
<td class="netInfoParamValue">gzip</td>
</tr>
<tr>
<td class="netInfoParamName">Content-Length</td>
<td class="netInfoParamValue">2778</td>
</tr>
<tr>
<td class="netInfoParamName">Keep-Alive</td>
<td class="netInfoParamValue">timeout=5, max=100</td>
</tr>
<tr>
<td class="netInfoParamName">Connection</td>
<td class="netInfoParamValue">Keep-Alive</td>
</tr>
<tr>
<td class="netInfoParamName">Content-Type</td>
<td class="netInfoParamValue">text/html</td>
</tr>
</tbody>
</table>
<p>原来length为352218，压缩后为2778，效果还是很明显的。</p>
<p>不过对于length很小的文件，是不进行压缩的。</p>
<p>具体的一些调整的细节，可以看原apache手册。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/10/28/apache%e5%bc%80%e5%90%afgzip%e5%8e%8b%e7%bc%a9.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>Amp Linux自动安装脚本（模块方式安装）2.0发布</title>
		<link>http://www.sunboyu.cn/2008/10/27/amp-linux%e8%87%aa%e5%8a%a8%e5%ae%89%e8%a3%85%e8%84%9a%e6%9c%ac%ef%bc%88%e6%a8%a1%e5%9d%97%e6%96%b9%e5%bc%8f%e5%ae%89%e8%a3%85%ef%bc%8920%e5%8f%91%e5%b8%83.shtml</link>
		<comments>http://www.sunboyu.cn/2008/10/27/amp-linux%e8%87%aa%e5%8a%a8%e5%ae%89%e8%a3%85%e8%84%9a%e6%9c%ac%ef%bc%88%e6%a8%a1%e5%9d%97%e6%96%b9%e5%bc%8f%e5%ae%89%e8%a3%85%ef%bc%8920%e5%8f%91%e5%b8%83.shtml#comments</comments>
		<pubDate>Mon, 27 Oct 2008 02:44:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[amp]]></category>

		<category><![CDATA[mod]]></category>

		<category><![CDATA[v2.0]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=364</guid>
		<description><![CDATA[sunboyu-amp-mod-v20-alpha
更改记录：
1、增加 OSSP mm 库，PHP可以在此库的支持下保存session到内存 http://www.ossp.org/pkg/lib/mm/
2、增加eaccelerator-0.9.5.2 opcode缓存  http://eaccelerator.net/
3、Apache开启status模块
本软件无stable版本，因为脚本并不是一个兼容各个linux系统的脚本，而是我在平时使用时做个一个简单批处理，来简化服务器配置的繁琐过程.
我使用的环境是Centos5.0，使用的定制安装，安装尽量最小化（本人有系统洁癖），以后系统还会更简化，我会尽量得使用编译的方式安装所有的软件，并不是说自己编译的就肯定比别人编译的好，参数更优化，而是通过这些繁琐的东西来提高对服务器性能跟参数之间关系的认识。
建议网友在做服务器的时候，不要按照我的默认脚本安装，因为这个脚本只注重了功能的大而全而并未关注性能和稳定，所以，本脚本只适合大家去研究，或者学习这个过程。
以后的版本会逐渐把一些优化的思想加入，但终归是个人的一些思想，不一定适合所有人，而且，这只是一个单机服务器的配置过程，对于大型系统是不适合的。
欢迎大家加入LAMP MSN 群交流 ( 加 lampper@live.cn 为msn好友)
顺便BS一下惠普笔记本V3000系列＋宇瞻内存，太不兼容了，以至我调试脚本的时候不断死机（调试一遍得一小时呢－－&#124;）
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.sunboyu.cn/upfiles/2008/10/sunboyu-amp-mod-v20-alpha.txt">sunboyu-amp-mod-v20-alpha</a></p>
<p>更改记录：</p>
<p>1、增加 OSSP mm 库，PHP可以在此库的支持下保存session到内存 http://www.ossp.org/pkg/lib/mm/</p>
<p>2、增加eaccelerator-0.9.5.2 opcode缓存  http://eaccelerator.net/</p>
<p>3、Apache开启status模块</p>
<p>本软件无stable版本，因为脚本并不是一个兼容各个linux系统的脚本，而是我在平时使用时做个一个简单批处理，来简化服务器配置的繁琐过程.</p>
<p>我使用的环境是Centos5.0，使用的定制安装，安装尽量最小化（本人有系统洁癖），以后系统还会更简化，我会尽量得使用编译的方式安装所有的软件，并不是说自己编译的就肯定比别人编译的好，参数更优化，而是通过这些繁琐的东西来提高对服务器性能跟参数之间关系的认识。</p>
<p>建议网友在做服务器的时候，不要按照我的默认脚本安装，因为这个脚本只注重了功能的大而全而并未关注性能和稳定，所以，本脚本只适合大家去研究，或者学习这个过程。</p>
<p>以后的版本会逐渐把一些优化的思想加入，但终归是个人的一些思想，不一定适合所有人，而且，这只是一个单机服务器的配置过程，对于大型系统是不适合的。</p>
<p>欢迎大家加入LAMP MSN 群交流 ( 加 lampper@live.cn 为msn好友)</p>
<p>顺便BS一下惠普笔记本V3000系列＋宇瞻内存，太不兼容了，以至我调试脚本的时候不断死机（调试一遍得一小时呢－－|）</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/10/27/amp-linux%e8%87%aa%e5%8a%a8%e5%ae%89%e8%a3%85%e8%84%9a%e6%9c%ac%ef%bc%88%e6%a8%a1%e5%9d%97%e6%96%b9%e5%bc%8f%e5%ae%89%e8%a3%85%ef%bc%8920%e5%8f%91%e5%b8%83.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>浅谈公司管理中员工积极性问题</title>
		<link>http://www.sunboyu.cn/2008/10/24/%e6%b5%85%e8%b0%88%e5%85%ac%e5%8f%b8%e7%ae%a1%e7%90%86%e4%b8%ad%e5%91%98%e5%b7%a5%e7%a7%af%e6%9e%81%e6%80%a7%e9%97%ae%e9%a2%98.shtml</link>
		<comments>http://www.sunboyu.cn/2008/10/24/%e6%b5%85%e8%b0%88%e5%85%ac%e5%8f%b8%e7%ae%a1%e7%90%86%e4%b8%ad%e5%91%98%e5%b7%a5%e7%a7%af%e6%9e%81%e6%80%a7%e9%97%ae%e9%a2%98.shtml#comments</comments>
		<pubDate>Fri, 24 Oct 2008 14:19:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[相当拍砖]]></category>

		<category><![CDATA[管理]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=363</guid>
		<description><![CDATA[先说一个小故事，也是别人博客上看来的：
一群小孩每天都在一个老人门口嬉戏，而且欢笑的声音很大，老人很苦恼。
于是老人想了个办法，一天给每个孩子1一块钱，说：你们的高兴也让我很愉快，这是给你们的报酬。第二天，又给了每个孩子5毛钱，第三天，只给了他们一毛钱。
于是，孩子们愤恨得离开了：这么点钱也想买快乐！
老人又得到了清净。
现在分析一下孩子的心理：在得到老人的钱之前，他们的快乐是发自内心的，快乐完全是为了自己，快乐这个动作的发出者和受益者都是孩子，因此孩子有足够的动力和理由去快乐。而老人给他们钱，并暗示他们的快乐有其他意义的时候，孩子们快乐的动机发生了改变，目的从满足自身的快乐变成了换得金钱。当他们的动机改变，而期望的目的值没有达到的时候，他们放弃了这件事情。
这种心理每天都在我们身边发生。
先说普通的公司员工：员工来到公司，首先进入试用期，如果他期望得到这份工作，会不与余力得去发挥自己，表现自己，以获得领导和上司的赏识。这事，工作的动力完全发自内心。等试用期过后，会有所放松，因为这时，工作的目的是为了一份薪水。当然，有的员工会一直保持，有的员工会堕落，也有的员工会继续保持实干的作风。不管是哪种员工，总会为了自己的目标努力，升值、加薪，总尤其是最后一种，当他获得的报酬不断低于心理预期，那他的行为就跟那一群逃跑的小孩一样。
因此，现在很多中小型尤其创业公司提出了互利共赢的合作模式，不是简单的公司员工关系，而把公司的期权股份等分给员工，以这种方式使员工建立起创业伙伴的关系，充分调动员工的工作热情，往往能取得很好的效果。
另外，再说积极型员工：有些人把工作看成自己的事业，因此，这种人不管在哪里都会保持高涨的工作热情，比如爱因斯坦这种人，不在乎为谁服务，不在乎结果，只在乎自己做了什么。这种员工是可遇不可求的，他们甚至不要求多高的薪水和预期，唯一的要求就是自身价值的体现。但这种员工往往是对手挖墙脚的对象。
其实，大部分人都遵循这么一个规律，管理一个公司，更多的是要调用员工的积极性。而对于员工来说，把工作的动机变为自发和主动，在这个过程中努力提高自己，才是正道。
]]></description>
			<content:encoded><![CDATA[<p>先说一个小故事，也是别人博客上看来的：</p>
<p>一群小孩每天都在一个老人门口嬉戏，而且欢笑的声音很大，老人很苦恼。</p>
<p>于是老人想了个办法，一天给每个孩子1一块钱，说：你们的高兴也让我很愉快，这是给你们的报酬。第二天，又给了每个孩子5毛钱，第三天，只给了他们一毛钱。</p>
<p>于是，孩子们愤恨得离开了：这么点钱也想买快乐！</p>
<p>老人又得到了清净。</p>
<p>现在分析一下孩子的心理：在得到老人的钱之前，他们的快乐是发自内心的，快乐完全是为了自己，快乐这个动作的发出者和受益者都是孩子，因此孩子有足够的动力和理由去快乐。而老人给他们钱，并暗示他们的快乐有其他意义的时候，孩子们快乐的动机发生了改变，目的从满足自身的快乐变成了换得金钱。当他们的动机改变，而期望的目的值没有达到的时候，他们放弃了这件事情。</p>
<p>这种心理每天都在我们身边发生。</p>
<p>先说普通的公司员工：员工来到公司，首先进入试用期，如果他期望得到这份工作，会不与余力得去发挥自己，表现自己，以获得领导和上司的赏识。这事，工作的动力完全发自内心。等试用期过后，会有所放松，因为这时，工作的目的是为了一份薪水。当然，有的员工会一直保持，有的员工会堕落，也有的员工会继续保持实干的作风。不管是哪种员工，总会为了自己的目标努力，升值、加薪，总尤其是最后一种，当他获得的报酬不断低于心理预期，那他的行为就跟那一群逃跑的小孩一样。</p>
<p>因此，现在很多中小型尤其创业公司提出了互利共赢的合作模式，不是简单的公司员工关系，而把公司的期权股份等分给员工，以这种方式使员工建立起创业伙伴的关系，充分调动员工的工作热情，往往能取得很好的效果。</p>
<p>另外，再说积极型员工：有些人把工作看成自己的事业，因此，这种人不管在哪里都会保持高涨的工作热情，比如爱因斯坦这种人，不在乎为谁服务，不在乎结果，只在乎自己做了什么。这种员工是可遇不可求的，他们甚至不要求多高的薪水和预期，唯一的要求就是自身价值的体现。但这种员工往往是对手挖墙脚的对象。</p>
<p>其实，大部分人都遵循这么一个规律，管理一个公司，更多的是要调用员工的积极性。而对于员工来说，把工作的动机变为自发和主动，在这个过程中努力提高自己，才是正道。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/10/24/%e6%b5%85%e8%b0%88%e5%85%ac%e5%8f%b8%e7%ae%a1%e7%90%86%e4%b8%ad%e5%91%98%e5%b7%a5%e7%a7%af%e6%9e%81%e6%80%a7%e9%97%ae%e9%a2%98.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>网易聊天室关了，一个时代的结束？</title>
		<link>http://www.sunboyu.cn/2008/10/22/%e7%bd%91%e6%98%93%e8%81%8a%e5%a4%a9%e5%ae%a4%e5%85%b3%e4%ba%86%ef%bc%8c%e4%b8%80%e4%b8%aa%e6%97%b6%e4%bb%a3%e7%9a%84%e7%bb%93%e6%9d%9f%ef%bc%9f.shtml</link>
		<comments>http://www.sunboyu.cn/2008/10/22/%e7%bd%91%e6%98%93%e8%81%8a%e5%a4%a9%e5%ae%a4%e5%85%b3%e4%ba%86%ef%bc%8c%e4%b8%80%e4%b8%aa%e6%97%b6%e4%bb%a3%e7%9a%84%e7%bb%93%e6%9d%9f%ef%bc%9f.shtml#comments</comments>
		<pubDate>Wed, 22 Oct 2008 09:02:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[相当拍砖]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=360</guid>
		<description><![CDATA[当年的火爆，不亚于如今的QQ。

]]></description>
			<content:encoded><![CDATA[<p>当年的火爆，不亚于如今的QQ。</p>
<p><a href="http://www.sunboyu.cn/upfiles/2008/10/e69caae591bde5908d.jpg"><img class="aligncenter size-full wp-image-361" title="e69caae591bde5908d" src="http://www.sunboyu.cn/upfiles/2008/10/e69caae591bde5908d.jpg" alt="" width="500" height="328" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/10/22/%e7%bd%91%e6%98%93%e8%81%8a%e5%a4%a9%e5%ae%a4%e5%85%b3%e4%ba%86%ef%bc%8c%e4%b8%80%e4%b8%aa%e6%97%b6%e4%bb%a3%e7%9a%84%e7%bb%93%e6%9d%9f%ef%bc%9f.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>密秀,注定了失败</title>
		<link>http://www.sunboyu.cn/2008/10/21/%e5%af%86%e7%a7%80%e6%b3%a8%e5%ae%9a%e4%ba%86%e5%a4%b1%e8%b4%a5.shtml</link>
		<comments>http://www.sunboyu.cn/2008/10/21/%e5%af%86%e7%a7%80%e6%b3%a8%e5%ae%9a%e4%ba%86%e5%a4%b1%e8%b4%a5.shtml#comments</comments>
		<pubDate>Tue, 21 Oct 2008 14:19:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[相当拍砖]]></category>

		<category><![CDATA[mixi]]></category>

		<category><![CDATA[mixiu]]></category>

		<category><![CDATA[密秀]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=359</guid>
		<description><![CDATA[http://mixiu.cn 据说是鬼子 mixi.jp的汉化版。
一看，果然是。从技术上讲，mixiu和mixi都实用了perl作为web的开发语言，服务器无一例外得使用了*unix，但mixiu使用了fedora，这东西跑服务器不是很在行。
从风格上，密秀照搬了mixi网站的一些传统习惯，比如大量使用图片得导航，貌似“卡哇伊”的美工。
为什么注定了他的失败呢？
1、免不了的要受爱国情绪的影响。你就不学学阿里巴巴，拿了日本人的钱就别太张扬，你还公然声明是日本mixi的中文化网站，当然要受到愤青的冲击。
2、糟糕的美工。中国人玩sns，或者个人空间，已经习惯了facebook或者51，qq空间那东西，密秀的东西啥都不像，美工虽好，但完全不适合中国的习惯。
3、中国人喜欢拿钱砸市场，你们要觉得有钱，先砸点。
4、有我这样的人臭嘴不断冲击，肯定玩不大。
谢谢
]]></description>
			<content:encoded><![CDATA[<p>http://mixiu.cn 据说是鬼子 mixi.jp的汉化版。</p>
<p>一看，果然是。从技术上讲，mixiu和mixi都实用了perl作为web的开发语言，服务器无一例外得使用了*unix，但mixiu使用了fedora，这东西跑服务器不是很在行。</p>
<p>从风格上，密秀照搬了mixi网站的一些传统习惯，比如大量使用图片得导航，貌似“卡哇伊”的美工。</p>
<p>为什么注定了他的失败呢？</p>
<p>1、免不了的要受爱国情绪的影响。你就不学学阿里巴巴，拿了日本人的钱就别太张扬，你还公然声明是日本mixi的中文化网站，当然要受到愤青的冲击。</p>
<p>2、糟糕的美工。中国人玩sns，或者个人空间，已经习惯了facebook或者51，qq空间那东西，密秀的东西啥都不像，美工虽好，但完全不适合中国的习惯。</p>
<p>3、中国人喜欢拿钱砸市场，你们要觉得有钱，先砸点。</p>
<p>4、有我这样的人臭嘴不断冲击，肯定玩不大。</p>
<p>谢谢</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/10/21/%e5%af%86%e7%a7%80%e6%b3%a8%e5%ae%9a%e4%ba%86%e5%a4%b1%e8%b4%a5.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>jar命令的一些应用</title>
		<link>http://www.sunboyu.cn/2008/10/21/jar%e5%91%bd%e4%bb%a4%e7%9a%84%e4%b8%80%e4%ba%9b%e5%ba%94%e7%94%a8.shtml</link>
		<comments>http://www.sunboyu.cn/2008/10/21/jar%e5%91%bd%e4%bb%a4%e7%9a%84%e4%b8%80%e4%ba%9b%e5%ba%94%e7%94%a8.shtml#comments</comments>
		<pubDate>Tue, 21 Oct 2008 08:29:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Java]]></category>

		<category><![CDATA[jar]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=358</guid>
		<description><![CDATA[对于我，最常用的两个功能，就是打包类库，创建可执行的JAR。
打包文件，可以看下边的功能呢个表：



功能
命令


用一个单独的文件创建一个 JAR 文件
jar cf jar-file input-file&#8230;


用一个目录创建一个 JAR 文件
jar cf jar-file dir-name


创建一个未压缩的 JAR 文件
jar cf0 jar-file dir-name


更新一个 JAR 文件
jar uf jar-file input-file&#8230;


查看一个 JAR 文件的内容
jar tf jar-file


提取一个 JAR 文件的内容
jar xf jar-file


从一个 JAR 文件中提取特定的文件
jar xf jar-file archived-file&#8230;


运行一个打包为可执行 JAR 文件的应用程序
java -jar app.jar



创建一个可执行 JAR 很容易。首先将所有应用程序代码放到一个目录中。假设应用程序中的主类是 com.mycompany.myapp.Sample 。您要创建一个包含应用程序代码的 JAR 文件并标识出主类。为此，在某个位置(不是在应用程序目录中)创建一个名为  manifest 的文件，并在其中加入以下一行： Main-Class: com.mycompany.myapp.Sample
引用地址:http://www-128.ibm.com/developerworks/cn/java/j-jar/index.html
]]></description>
			<content:encoded><![CDATA[<p>对于我，最常用的两个功能，就是打包类库，创建可执行的JAR。</p>
<p>打包文件，可以看下边的功能呢个表：</p>
<table border="1" cellspacing="0" cellpadding="3" width="80%">
<tbody>
<tr>
<td><strong>功能</strong></td>
<td><strong>命令</strong></td>
</tr>
<tr>
<td>用一个单独的文件创建一个 JAR 文件</td>
<td>jar cf jar-file input-file&#8230;</td>
</tr>
<tr>
<td>用一个目录创建一个 JAR 文件</td>
<td>jar cf jar-file dir-name</td>
</tr>
<tr>
<td>创建一个未压缩的 JAR 文件</td>
<td>jar cf0 jar-file dir-name</td>
</tr>
<tr>
<td>更新一个 JAR 文件</td>
<td>jar uf jar-file input-file&#8230;</td>
</tr>
<tr>
<td>查看一个 JAR 文件的内容</td>
<td>jar tf jar-file</td>
</tr>
<tr>
<td>提取一个 JAR 文件的内容</td>
<td>jar xf jar-file</td>
</tr>
<tr>
<td>从一个 JAR 文件中提取特定的文件</td>
<td>jar xf jar-file archived-file&#8230;</td>
</tr>
<tr>
<td>运行一个打包为可执行 JAR 文件的应用程序</td>
<td>java -jar app.jar</td>
</tr>
</tbody>
</table>
<p>创建一个可执行 JAR 很容易。首先将所有应用程序代码放到一个目录中。假设应用程序中的主类是 com.mycompany.myapp.Sample 。您要创建一个包含应用程序代码的 JAR 文件并标识出主类。为此，在某个位置(不是在应用程序目录中)创建一个名为  manifest 的文件，并在其中加入以下一行： Main-Class: com.mycompany.myapp.Sample</p>
<p>引用地址:http://www-128.ibm.com/developerworks/cn/java/j-jar/index.html</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/10/21/jar%e5%91%bd%e4%bb%a4%e7%9a%84%e4%b8%80%e4%ba%9b%e5%ba%94%e7%94%a8.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>UML2.0学习指南</title>
		<link>http://www.sunboyu.cn/2008/10/21/uml20%e5%ad%a6%e4%b9%a0%e6%8c%87%e5%8d%97.shtml</link>
		<comments>http://www.sunboyu.cn/2008/10/21/uml20%e5%ad%a6%e4%b9%a0%e6%8c%87%e5%8d%97.shtml#comments</comments>
		<pubDate>Tue, 21 Oct 2008 01:11:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[其他]]></category>

		<category><![CDATA[uml]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=356</guid>
		<description><![CDATA[
书还不错，虽然有点看不懂。中小型公司很少有做项目前期建模的，我来试试。
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.sunboyu.cn/upfiles/2008/10/s2253303.jpg"><img class="aligncenter size-full wp-image-357" title="s2253303" src="http://www.sunboyu.cn/upfiles/2008/10/s2253303.jpg" alt="" width="200" height="261" /></a></p>
<p>书还不错，虽然有点看不懂。中小型公司很少有做项目前期建模的，我来试试。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/10/21/uml20%e5%ad%a6%e4%b9%a0%e6%8c%87%e5%8d%97.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>WindowsXP遭毒手了，您还用Windows2003么？</title>
		<link>http://www.sunboyu.cn/2008/10/19/windowsxp%e9%81%ad%e6%af%92%e6%89%8b%e4%ba%86%ef%bc%8c%e6%82%a8%e8%bf%98%e7%94%a8windows2003%e4%b9%88%ef%bc%9f.shtml</link>
		<comments>http://www.sunboyu.cn/2008/10/19/windowsxp%e9%81%ad%e6%af%92%e6%89%8b%e4%ba%86%ef%bc%8c%e6%82%a8%e8%bf%98%e7%94%a8windows2003%e4%b9%88%ef%bc%9f.shtml#comments</comments>
		<pubDate>Sun, 19 Oct 2008 15:23:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<category><![CDATA[windows 黑屏]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=355</guid>
		<description><![CDATA[非常期待2008年10月20日的到来，因为亲爱的比尔盖茨同志终于要拿WindowsXP开刀了。虽然番茄花园的事情只是一个引子，但我想比尔那哥们还是不会放弃中国这块肥肉的。
总得来说，我是非常乐意全国的电脑都黑屏的。自打我玩电脑，我面向的就是很多的操作系统的。CCDOS,UCDOS,MS-DOS,还有我看不懂的NetWare（当时真的不懂是啥），到后来，基本就全是windows了，从windows32，95，98，2000，xp，vista（电脑配置不行，还没用），忘了一个狗屎到家的Windows ME，我基本都用过，而且，似乎只要摸电脑就是windows，从高中的教材开始，我认为，学电脑就是学windows，直至大学，我才知道有个玩意叫Linux。
我不知道是不是微软公关太好了，完美的大学计划，优于任何一个搞媒体搞公关的公司，甚至我们自己的红旗系统，我大学后才知道，我知道了，原来我们自己也有操作系统，那我们为什么没有推广自己的操作系统呢？
不想了。我觉得思考这个问题，我纯属脑子进水兼被驴踢－因为考试全他妈考windows的东西呗，我自己还拿了个计算机等级三级的证书呢。再往上想，能找出一堆被驴踢的人。
不能说被驴踢的人就不是好驴。红旗公司开发那个桌面系统，其实挺好的，很XP，这次黑屏肯定是盖同学吃了番茄后想出的馊招，不过，这次能提醒国人，XP真他妈不是好东西，用个东西，还得黑屏（虽然我的linux终端也是黑的）。想不黑屏，想不天天升级，想不黑屏后也不蓝屏……换个操作系统吧。
写点div，要兼容ie和ff，这他妈难受！
]]></description>
			<content:encoded><![CDATA[<p>非常期待2008年10月20日的到来，因为亲爱的比尔盖茨同志终于要拿WindowsXP开刀了。虽然番茄花园的事情只是一个引子，但我想比尔那哥们还是不会放弃中国这块肥肉的。</p>
<p>总得来说，我是非常乐意全国的电脑都黑屏的。自打我玩电脑，我面向的就是很多的操作系统的。CCDOS,UCDOS,MS-DOS,还有我看不懂的NetWare（当时真的不懂是啥），到后来，基本就全是windows了，从windows32，95，98，2000，xp，vista（电脑配置不行，还没用），忘了一个狗屎到家的Windows ME，我基本都用过，而且，似乎只要摸电脑就是windows，从高中的教材开始，我认为，学电脑就是学windows，直至大学，我才知道有个玩意叫Linux。</p>
<p>我不知道是不是微软公关太好了，完美的大学计划，优于任何一个搞媒体搞公关的公司，甚至我们自己的红旗系统，我大学后才知道，我知道了，原来我们自己也有操作系统，那我们为什么没有推广自己的操作系统呢？</p>
<p>不想了。我觉得思考这个问题，我纯属脑子进水兼被驴踢－因为考试全他妈考windows的东西呗，我自己还拿了个计算机等级三级的证书呢。再往上想，能找出一堆被驴踢的人。</p>
<p>不能说被驴踢的人就不是好驴。红旗公司开发那个桌面系统，其实挺好的，很XP，这次黑屏肯定是盖同学吃了番茄后想出的馊招，不过，这次能提醒国人，XP真他妈不是好东西，用个东西，还得黑屏（虽然我的linux终端也是黑的）。想不黑屏，想不天天升级，想不黑屏后也不蓝屏……换个操作系统吧。</p>
<p>写点div，要兼容ie和ff，这他妈难受！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/10/19/windowsxp%e9%81%ad%e6%af%92%e6%89%8b%e4%ba%86%ef%bc%8c%e6%82%a8%e8%bf%98%e7%94%a8windows2003%e4%b9%88%ef%bc%9f.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>WordPress使用Lucene进行搜索</title>
		<link>http://www.sunboyu.cn/2008/10/18/wordpress%e4%bd%bf%e7%94%a8lucene%e8%bf%9b%e8%a1%8c%e6%90%9c%e7%b4%a2.shtml</link>
		<comments>http://www.sunboyu.cn/2008/10/18/wordpress%e4%bd%bf%e7%94%a8lucene%e8%bf%9b%e8%a1%8c%e6%90%9c%e7%b4%a2.shtml#comments</comments>
		<pubDate>Sat, 18 Oct 2008 05:52:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Java]]></category>

		<category><![CDATA[lucene]]></category>

		<category><![CDATA[search]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=354</guid>
		<description><![CDATA[接上篇，我们使用Lucene Document Field IndexWrite 等方法创建了索引，现在，使用内建的搜索的方法进行检索。
代码如下：
import java.io.*;
import org.apache.lucene.index.Term;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.analysis.*;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.*;
&#160;
public class Search
{
public static void main( String argv[] ) throws Exception
{
IndexReader reader = IndexReader.open(&#34;./index&#34;);
Searcher searcher = new IndexSearcher(reader);
SimpleAnalyzeranalyzer = new SimpleAnalyzer();
QueryParser parser = new QueryParser(&#34;post_content&#34;, analyzer);
Query query = parser.parse( argv[0] );
Hits hits = searcher.search(query);
System.out.println(hits.length() + &#34;个结果&#34;);
for(int i=0;i
{
System.out.println(hits.doc(i).get(&#34;guid&#34;));
}
}
}
编译后，我们在命令行进行查询：
E:\java>java Search php
40个结果
http://www.sunboyu.cn/?p=332
http://www.sunboyu.cn/?p=164
http://www.sunboyu.cn/?p=213
http://www.sunboyu.cn/?p=123
http://www.sunboyu.cn/?p=124
http://www.sunboyu.cn/?p=180
http://www.sunboyu.cn/?p=283
http://www.sunboyu.cn/?p=282
http://www.sunboyu.cn/?p=234
http://www.sunboyu.cn/?p=53
http://www.sunboyu.cn/?p=159
http://www.sunboyu.cn/?p=235
http://www.sunboyu.cn/?p=221
http://www.sunboyu.cn/?p=73
http://www.sunboyu.cn/?p=11
http://www.sunboyu.cn/?p=51
http://www.sunboyu.cn/?p=240
http://www.sunboyu.cn/?p=196
http://www.sunboyu.cn/?p=52
http://www.sunboyu.cn/?p=308
http://www.sunboyu.cn/?p=298
http://www.sunboyu.cn/?p=9
http://www.sunboyu.cn/?page_id=38
http://www.sunboyu.cn/?p=236
http://www.sunboyu.cn/?p=320
http://www.sunboyu.cn/?p=141
http://www.sunboyu.cn/?p=78
http://www.sunboyu.cn/?p=291
http://www.sunboyu.cn/?p=218
http://www.sunboyu.cn/?p=154
http://www.sunboyu.cn/?p=121
http://www.sunboyu.cn/?p=200
http://www.sunboyu.cn/?p=244
http://www.sunboyu.cn/?p=280
http://www.sunboyu.cn/?page_id=112
http://www.sunboyu.cn/?p=288
http://www.sunboyu.cn/?p=292
http://www.sunboyu.cn/?p=20
http://www.sunboyu.cn/?p=130
http://www.sunboyu.cn/?p=87
E:\java>
可以看到，当我们搜索关键词“php”，返回了所有存在php关键词的链接。
当然，这个只是个简单的演示，在创建索引的时候，我们使用了SimpleAnalyzer的方法，这个方法对中文，其实就是基于单字的分词，对于中文信息检索基本是没有意义的。Lucene提供了开发的源代码，因为，我们可以很方便得为其附加我们自己的中文分词方法。
]]></description>
			<content:encoded><![CDATA[<p>接上篇，我们使用Lucene Document Field IndexWrite 等方法创建了索引，现在，使用内建的搜索的方法进行检索。<br />
代码如下：</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">import java.io.*;</li>
<li>import org.apache.lucene.index.Term;</li>
<li>import org.apache.lucene.index.IndexReader;</li>
<li>import org.apache.lucene.analysis.*;</li>
<li>import org.apache.lucene.queryParser.QueryParser;</li>
<li>import org.apache.lucene.search.*;</li>
<li>&nbsp;</li>
<li>public class Search</li>
<li>{</li>
<li>public static void main( String argv[] ) throws Exception</li>
<li>{</li>
<li>IndexReader reader = IndexReader.open(&quot;./index&quot;);</li>
<li>Searcher searcher = new IndexSearcher(reader);</li>
<li>SimpleAnalyzeranalyzer = new SimpleAnalyzer();</li>
<li>QueryParser parser = new QueryParser(&quot;post_content&quot;, analyzer);</li>
<li>Query query = parser.parse( argv[0] );</li>
<li>Hits hits = searcher.search(query);</li>
<li>System.out.println(hits.length() + &quot;个结果&quot;);</li>
<li>for(int i=0;i</li>
<li>{</li>
<li>System.out.println(hits.doc(i).get(&quot;guid&quot;));</li>
<li>}</li>
<li>}</li>
<li>}</li></ol></div>
<p>编译后，我们在命令行进行查询：</p>
<p>E:\java>java Search php<br />
40个结果<br />
http://www.sunboyu.cn/?p=332<br />
http://www.sunboyu.cn/?p=164<br />
http://www.sunboyu.cn/?p=213<br />
http://www.sunboyu.cn/?p=123<br />
http://www.sunboyu.cn/?p=124<br />
http://www.sunboyu.cn/?p=180<br />
http://www.sunboyu.cn/?p=283<br />
http://www.sunboyu.cn/?p=282<br />
http://www.sunboyu.cn/?p=234<br />
http://www.sunboyu.cn/?p=53<br />
http://www.sunboyu.cn/?p=159<br />
http://www.sunboyu.cn/?p=235<br />
http://www.sunboyu.cn/?p=221<br />
http://www.sunboyu.cn/?p=73<br />
http://www.sunboyu.cn/?p=11<br />
http://www.sunboyu.cn/?p=51<br />
http://www.sunboyu.cn/?p=240<br />
http://www.sunboyu.cn/?p=196<br />
http://www.sunboyu.cn/?p=52<br />
http://www.sunboyu.cn/?p=308<br />
http://www.sunboyu.cn/?p=298<br />
http://www.sunboyu.cn/?p=9<br />
http://www.sunboyu.cn/?page_id=38<br />
http://www.sunboyu.cn/?p=236<br />
http://www.sunboyu.cn/?p=320<br />
http://www.sunboyu.cn/?p=141<br />
http://www.sunboyu.cn/?p=78<br />
http://www.sunboyu.cn/?p=291<br />
http://www.sunboyu.cn/?p=218<br />
http://www.sunboyu.cn/?p=154<br />
http://www.sunboyu.cn/?p=121<br />
http://www.sunboyu.cn/?p=200<br />
http://www.sunboyu.cn/?p=244<br />
http://www.sunboyu.cn/?p=280<br />
http://www.sunboyu.cn/?page_id=112<br />
http://www.sunboyu.cn/?p=288<br />
http://www.sunboyu.cn/?p=292<br />
http://www.sunboyu.cn/?p=20<br />
http://www.sunboyu.cn/?p=130<br />
http://www.sunboyu.cn/?p=87</p>
<p>E:\java><br />
可以看到，当我们搜索关键词“php”，返回了所有存在php关键词的链接。</p>
<p>当然，这个只是个简单的演示，在创建索引的时候，我们使用了SimpleAnalyzer的方法，这个方法对中文，其实就是基于单字的分词，对于中文信息检索基本是没有意义的。Lucene提供了开发的源代码，因为，我们可以很方便得为其附加我们自己的中文分词方法。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/10/18/wordpress%e4%bd%bf%e7%94%a8lucene%e8%bf%9b%e8%a1%8c%e6%90%9c%e7%b4%a2.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>流程化管理与技术文档对企业的重要性分析</title>
		<link>http://www.sunboyu.cn/2008/10/17/%e6%b5%81%e7%a8%8b%e5%8c%96%e7%ae%a1%e7%90%86%e4%b8%8e%e6%8a%80%e6%9c%af%e6%96%87%e6%a1%a3%e5%af%b9%e4%bc%81%e4%b8%9a%e7%9a%84%e9%87%8d%e8%a6%81%e6%80%a7%e5%88%86%e6%9e%90.shtml</link>
		<comments>http://www.sunboyu.cn/2008/10/17/%e6%b5%81%e7%a8%8b%e5%8c%96%e7%ae%a1%e7%90%86%e4%b8%8e%e6%8a%80%e6%9c%af%e6%96%87%e6%a1%a3%e5%af%b9%e4%bc%81%e4%b8%9a%e7%9a%84%e9%87%8d%e8%a6%81%e6%80%a7%e5%88%86%e6%9e%90.shtml#comments</comments>
		<pubDate>Fri, 17 Oct 2008 02:52:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[感悟]]></category>

		<category><![CDATA[公司管理]]></category>

		<category><![CDATA[项目管理]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=353</guid>
		<description><![CDATA[原公司的系统，也就是本猿的开山作，也是本猿的败笔作，在我接班人的手上又出现了同样的问题，bug，严重的bug，足矣让老板杀人的bug。
这个bug曾经在公司技术上闹过很大的风波，虽然简单，但造成的影响是客户丢失，职员被辞，甚至更大（至于由于老板上火而造成的其他家庭社会影响暂时不计）。损失，不单是一行程序bug所能描述的。
其实问题发生，是不能简单追究责任的，因为此问题并非第一次造成，而且之前惨重的损失，并不能说不是一个教训。一个问题在同一个人身上发生，是不应该的，同样在一个公司内发生，这是有问题的。
制度，管理，流程，文档，知识库，这些都是公司在发展中逐步积累的无形财富。知识产品的产生，有前人的经验，很多问题都可以直接避免，新人进行开发，必然要熟悉公司的一些制度，规范性流程，这个过程更多的是对公司历史和现有产品的熟悉了解。
如果没有这个过程，新人可能还会从零考虑这个事情，而不是在一个阶段的基础上进行开发，而重复的事情降低了公司的效率和发展速度，人工开支过多产品进度缓慢造成投入产出比失调。
制度，流程化管理，产品文档化，在大型公司会非常完善，他们的每件作品都会是个产品，按照产品的标准来实行。而在中小企业，这方面是很弱化的。随着企业发展，小型公司也将会向中大型公司发展，规模的扩大，这方面问题会体现得非常突出。因为，当务之急，是知道在适当的时候做适当的事情。
]]></description>
			<content:encoded><![CDATA[<p>原公司的系统，也就是本猿的开山作，也是本猿的败笔作，在我接班人的手上又出现了同样的问题，bug，严重的bug，足矣让老板杀人的bug。</p>
<p>这个bug曾经在公司技术上闹过很大的风波，虽然简单，但造成的影响是客户丢失，职员被辞，甚至更大（至于由于老板上火而造成的其他家庭社会影响暂时不计）。损失，不单是一行程序bug所能描述的。</p>
<p>其实问题发生，是不能简单追究责任的，因为此问题并非第一次造成，而且之前惨重的损失，并不能说不是一个教训。一个问题在同一个人身上发生，是不应该的，同样在一个公司内发生，这是有问题的。</p>
<p>制度，管理，流程，文档，知识库，这些都是公司在发展中逐步积累的无形财富。知识产品的产生，有前人的经验，很多问题都可以直接避免，新人进行开发，必然要熟悉公司的一些制度，规范性流程，这个过程更多的是对公司历史和现有产品的熟悉了解。</p>
<p>如果没有这个过程，新人可能还会从零考虑这个事情，而不是在一个阶段的基础上进行开发，而重复的事情降低了公司的效率和发展速度，人工开支过多产品进度缓慢造成投入产出比失调。</p>
<p>制度，流程化管理，产品文档化，在大型公司会非常完善，他们的每件作品都会是个产品，按照产品的标准来实行。而在中小企业，这方面是很弱化的。随着企业发展，小型公司也将会向中大型公司发展，规模的扩大，这方面问题会体现得非常突出。因为，当务之急，是知道在适当的时候做适当的事情。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/10/17/%e6%b5%81%e7%a8%8b%e5%8c%96%e7%ae%a1%e7%90%86%e4%b8%8e%e6%8a%80%e6%9c%af%e6%96%87%e6%a1%a3%e5%af%b9%e4%bc%81%e4%b8%9a%e7%9a%84%e9%87%8d%e8%a6%81%e6%80%a7%e5%88%86%e6%9e%90.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>麻雀夫妻－幸福的情侣们</title>
		<link>http://www.sunboyu.cn/2008/10/16/%e9%ba%bb%e9%9b%80%e5%a4%ab%e5%a6%bb%ef%bc%8d%e5%b9%b8%e7%a6%8f%e7%9a%84%e6%83%85%e4%be%a3%e4%bb%ac.shtml</link>
		<comments>http://www.sunboyu.cn/2008/10/16/%e9%ba%bb%e9%9b%80%e5%a4%ab%e5%a6%bb%ef%bc%8d%e5%b9%b8%e7%a6%8f%e7%9a%84%e6%83%85%e4%be%a3%e4%bb%ac.shtml#comments</comments>
		<pubDate>Thu, 16 Oct 2008 02:50:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[相当拍砖]]></category>

		<category><![CDATA[北漂]]></category>

		<category><![CDATA[麻雀]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=347</guid>
		<description><![CDATA[我家屋子上有个空调管道的洞，因为没有装空调，所以那个洞从来没理过。但每天早晨的麻雀叫声总那么响，我开始关注那个地方。果然，我发现里边住着一对麻雀夫妻，天天早出晚归，不知道是否有了自己的宝宝。




]]></description>
			<content:encoded><![CDATA[<p>我家屋子上有个空调管道的洞，因为没有装空调，所以那个洞从来没理过。但每天早晨的麻雀叫声总那么响，我开始关注那个地方。果然，我发现里边住着一对麻雀夫妻，天天早出晚归，不知道是否有了自己的宝宝。</p>
<p><a href="http://www.sunboyu.cn/upfiles/2008/10/img_4068.jpg"><img class="aligncenter size-full wp-image-348" title="img_4068" src="http://www.sunboyu.cn/upfiles/2008/10/img_4068.jpg" alt="" width="500" height="375" /></a></p>
<p><a href="http://www.sunboyu.cn/upfiles/2008/10/img_4069.jpg"><img class="aligncenter size-full wp-image-349" title="img_4069" src="http://www.sunboyu.cn/upfiles/2008/10/img_4069.jpg" alt="" width="500" height="375" /></a></p>
<p><a href="http://www.sunboyu.cn/upfiles/2008/10/img_4071.jpg"><img class="aligncenter size-full wp-image-351" title="img_4071" src="http://www.sunboyu.cn/upfiles/2008/10/img_4071.jpg" alt="" width="500" height="375" /></a></p>
<p><a href="http://www.sunboyu.cn/upfiles/2008/10/img_4072.jpg"><img class="aligncenter size-full wp-image-352" title="img_4072" src="http://www.sunboyu.cn/upfiles/2008/10/img_4072.jpg" alt="" width="500" height="666" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/10/16/%e9%ba%bb%e9%9b%80%e5%a4%ab%e5%a6%bb%ef%bc%8d%e5%b9%b8%e7%a6%8f%e7%9a%84%e6%83%85%e4%be%a3%e4%bb%ac.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>使用Lucene为WordPress创建索引</title>
		<link>http://www.sunboyu.cn/2008/10/15/%e4%bd%bf%e7%94%a8lucene%e4%b8%bawordpress%e5%88%9b%e5%bb%ba%e7%b4%a2%e5%bc%95.shtml</link>
		<comments>http://www.sunboyu.cn/2008/10/15/%e4%bd%bf%e7%94%a8lucene%e4%b8%bawordpress%e5%88%9b%e5%bb%ba%e7%b4%a2%e5%bc%95.shtml#comments</comments>
		<pubDate>Wed, 15 Oct 2008 07:41:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Java]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[lucence]]></category>

		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=346</guid>
		<description><![CDATA[上次说到Lucene的Document模型，现在，我们使用WordPress为例，为其创建索引。
分析wordpress数据库结构，我们只需要为标题内容，即主要的文本内容创建索引即可。
具体语句为:  SELECT ID,post_title,post_content,guid FROM wp_posts ORDER BY ID DESC
如下代码，mysql连接类用的上文的mysql类，代码风格还是很PHP。生成的索引全保存在当前的index文件夹下
E:\java\index 的目录
2008-10-16  14:40
.
2008-10-16  14:40              ..
2008-10-16  14:40                20 segments.gen
2008-10-16  14:40       [...]]]></description>
			<content:encoded><![CDATA[<p>上次说到Lucene的Document模型，现在，我们使用WordPress为例，为其创建索引。</p>
<p>分析wordpress数据库结构，我们只需要为标题内容，即主要的文本内容创建索引即可。</p>
<p>具体语句为:  SELECT ID,post_title,post_content,guid FROM wp_posts ORDER BY ID DESC</p>
<p>如下代码，mysql连接类用的上文的mysql类，代码风格还是很PHP。生成的索引全保存在当前的index文件夹下</p>
<p>E:\java\index 的目录</p>
<p>2008-10-16  14:40</p>
<p>.<br />
2008-10-16  14:40              ..<br />
2008-10-16  14:40                20 segments.gen<br />
2008-10-16  14:40                98 segments_a4<br />
2008-10-16  14:40           268,174 _a0.fdt<br />
2008-10-16  14:40             2,600 _a0.fdx<br />
2008-10-16  14:40                37 _a0.fnm<br />
2008-10-16  14:40            20,990 _a0.frq<br />
2008-10-16  14:40             1,304 _a0.nrm<br />
2008-10-16  14:40            27,210 _a0.prx<br />
2008-10-16  14:40             1,281 _a0.tii<br />
2008-10-16  14:40           130,051 _a0.tis<br />
2008-10-16  14:40               356 _a1.fdt<br />
<span id="more-346"></span><br />
2008-10-16  14:40                 8 _a1.fdx<br />
2008-10-16  14:40                37 _a1.fnm<br />
2008-10-16  14:40                23 _a1.frq<br />
2008-10-16  14:40                 8 _a1.nrm<br />
2008-10-16  14:40                23 _a1.prx<br />
2008-10-16  14:40                35 _a1.tii<br />
2008-10-16  14:40               413 _a1.tis<br />
2008-10-16  14:40             1,362 _a2.fdt<br />
2008-10-16  14:40                 8 _a2.fdx<br />
2008-10-16  14:40                37 _a2.fnm<br />
2008-10-16  14:40                74 _a2.frq<br />
2008-10-16  14:40                 8 _a2.nrm<br />
2008-10-16  14:40                87 _a2.prx<br />
2008-10-16  14:40                35 _a2.tii<br />
2008-10-16  14:40             1,348 _a2.tis<br />
26 个文件        455,627 字节<br />
2 个目录 30,843,887,616 可用字节</p>
<p>E:\java\index</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">import java.io.*;</li>
<li>import org.apache.lucene.document.Document;</li>
<li>import org.apache.lucene.document.Field;</li>
<li>import org.apache.lucene.index.IndexWriter;</li>
<li>import org.apache.lucene.analysis.SimpleAnalyzer;</li>
<li>import org.apache.lucene.analysis.Analyzer;</li>
<li>public class Index</li>
<li>{</li>
<li>private MysqlConn Db = null;</li>
<li>//构造函数</li>
<li>public void Index()</li>
<li>{</li>
<li>}</li>
<li>//建立mysql连接</li>
<li>public void getConn( String conndsn )</li>
<li>{</li>
<li>this.Db = new MysqlConn();</li>
<li>this.Db.SetDsn( conndsn );</li>
<li>}</li>
<li>public static void main( String args[] )</li>
<li>{</li>
<li>Index index = new Index();</li>
<li>index.getConn( &quot;jdbc:mysql://localhost:3306/wp&quot; );</li>
<li>index.Db.SetUserPass( &quot;root&quot; , &quot;123456&quot; );</li>
<li>index.Db.Conn();</li>
<li>String sql = &quot;SELECT ID,post_title,post_content,guid FROM wp_posts ORDER BY ID DESC&quot;;</li>
<li>index.Db.sqlQuery( sql );</li>
<li>try</li>
<li>{</li>
<li>while( index.Db.rs.next() )</li>
<li>{</li>
<li>String ID = index.Db.rs.getString( &quot;ID&quot; );</li>
<li>String post_title = index.Db.rs.getString( &quot;post_title&quot; );</li>
<li>String post_content = index.Db.rs.getString( &quot;post_content&quot; );</li>
<li>String guid = index.Db.rs.getString( &quot;guid&quot; );</li>
<li>Document doc = new Document();</li>
<li>//注释1</li>
<li>Field f1 = new Field(&quot;ID&quot;,ID,Field.Store.YES,Field.Index.TOKENIZED);</li>
<li>Field f2 = new Field(&quot;post_title&quot;,post_title,Field.Store.YES,Field.Index.TOKENIZED);</li>
<li>Field f3 = new Field(&quot;post_content&quot;,post_content,Field.Store.YES,Field.Index.TOKENIZED);</li>
<li>Field f4 = new Field(&quot;guid&quot;,guid,Field.Store.YES,Field.Index.TOKENIZED);</li>
<li>doc.add( f1 );</li>
<li>doc.add( f2 );</li>
<li>doc.add( f3 );</li>
<li>doc.add( f4 );</li>
<li>System.out.println( ID );</li>
<li>try</li>
<li>{</li>
<li>IndexWriter writer = new IndexWriter( &quot;./index&quot; , new SimpleAnalyzer() );</li>
<li>writer.setUseCompoundFile(false);</li>
<li>writer.addDocument( doc );</li>
<li>writer.close();</li>
<li>}</li>
<li>catch (Exception e)</li>
<li>{</li>
<li>System.out.println(&quot;Error : &quot; + e.toString());</li>
<li>}</li>
<li>}</li>
<li>}</li>
<li>catch(Exception e)</li>
<li>{</li>
<li>System.out.println(&quot;Error : &quot; + e.toString());</li>
<li>}</li>
<li>&nbsp;</li>
<li>}</li>
<li>}</li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/10/15/%e4%bd%bf%e7%94%a8lucene%e4%b8%bawordpress%e5%88%9b%e5%bb%ba%e7%b4%a2%e5%bc%95.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>无级分类算法的实现与其可用性</title>
		<link>http://www.sunboyu.cn/2008/10/14/%e6%97%a0%e7%ba%a7%e5%88%86%e7%b1%bb%e7%ae%97%e6%b3%95%e7%9a%84%e5%ae%9e%e7%8e%b0%e4%b8%8e%e5%85%b6%e5%8f%af%e7%94%a8%e6%80%a7.shtml</link>
		<comments>http://www.sunboyu.cn/2008/10/14/%e6%97%a0%e7%ba%a7%e5%88%86%e7%b1%bb%e7%ae%97%e6%b3%95%e7%9a%84%e5%ae%9e%e7%8e%b0%e4%b8%8e%e5%85%b6%e5%8f%af%e7%94%a8%e6%80%a7.shtml#comments</comments>
		<pubDate>Tue, 14 Oct 2008 14:27:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[无级分类算法]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=343</guid>
		<description><![CDATA[根据动易ASP CMS的算法，简单实现了无级分类的算法，不过根据系统易用性原则，这种无级的分类很难在实际的CMS系统中应用，因此，这种算法在中小型信息管理系统中是不需要的，而大型的信息管理系统也要尽量避免分类深度过高而造成的系统效率问题。总结下来，这只能算自己连手的一个作品。

]]></description>
			<content:encoded><![CDATA[<p>根据动易ASP CMS的算法，简单实现了无级分类的算法，不过根据系统易用性原则，这种无级的分类很难在实际的CMS系统中应用，因此，这种算法在中小型信息管理系统中是不需要的，而大型的信息管理系统也要尽量避免分类深度过高而造成的系统效率问题。总结下来，这只能算自己连手的一个作品。</p>
<p><a href="http://www.sunboyu.cn/upfiles/2008/10/e69caae591bde5908d-1.jpg"><img class="aligncenter size-full wp-image-345" title="e69caae591bde5908d-1" src="http://www.sunboyu.cn/upfiles/2008/10/e69caae591bde5908d-1.jpg" alt="" width="500" height="274" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/10/14/%e6%97%a0%e7%ba%a7%e5%88%86%e7%b1%bb%e7%ae%97%e6%b3%95%e7%9a%84%e5%ae%9e%e7%8e%b0%e4%b8%8e%e5%85%b6%e5%8f%af%e7%94%a8%e6%80%a7.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>《web信息架构：设计大型网站》</title>
		<link>http://www.sunboyu.cn/2008/10/14/%e3%80%8aweb%e4%bf%a1%e6%81%af%e6%9e%b6%e6%9e%84%ef%bc%9a%e8%ae%be%e8%ae%a1%e5%a4%a7%e5%9e%8b%e7%bd%91%e7%ab%99%e3%80%8b.shtml</link>
		<comments>http://www.sunboyu.cn/2008/10/14/%e3%80%8aweb%e4%bf%a1%e6%81%af%e6%9e%b6%e6%9e%84%ef%bc%9a%e8%ae%be%e8%ae%a1%e5%a4%a7%e5%9e%8b%e7%bd%91%e7%ab%99%e3%80%8b.shtml#comments</comments>
		<pubDate>Tue, 14 Oct 2008 12:33:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[技术存档]]></category>

		<category><![CDATA[O]]></category>

		<category><![CDATA[reilly]]></category>

		<category><![CDATA[书]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=341</guid>
		<description><![CDATA[最近读书读疯了，疯狂得喜欢上了O,reilly的web2.0系列丛书。周末去书店，顺手买了这本《web信息架构：设计大型网站》。架构，本身就是个很宽泛的概念，信息架构，是干啥的，等我看完了再给大家解释。

]]></description>
			<content:encoded><![CDATA[<p>最近读书读疯了，疯狂得喜欢上了O,reilly的web2.0系列丛书。周末去书店，顺手买了这本《web信息架构：设计大型网站》。架构，本身就是个很宽泛的概念，信息架构，是干啥的，等我看完了再给大家解释。</p>
<p><a href="http://www.sunboyu.cn/upfiles/2008/10/shupi.jpg"><img class="alignleft size-medium wp-image-342" title="shupi" src="http://www.sunboyu.cn/upfiles/2008/10/shupi-229x300.jpg" alt="" width="229" height="300" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/10/14/%e3%80%8aweb%e4%bf%a1%e6%81%af%e6%9e%b6%e6%9e%84%ef%bc%9a%e8%ae%be%e8%ae%a1%e5%a4%a7%e5%9e%8b%e7%bd%91%e7%ab%99%e3%80%8b.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>《构建可扩展的Web站点》有感</title>
		<link>http://www.sunboyu.cn/2008/10/12/%e3%80%8a%e6%9e%84%e5%bb%ba%e5%8f%af%e6%89%a9%e5%b1%95%e7%9a%84web%e7%ab%99%e7%82%b9%e3%80%8b%e6%9c%89%e6%84%9f.shtml</link>
		<comments>http://www.sunboyu.cn/2008/10/12/%e3%80%8a%e6%9e%84%e5%bb%ba%e5%8f%af%e6%89%a9%e5%b1%95%e7%9a%84web%e7%ab%99%e7%82%b9%e3%80%8b%e6%9c%89%e6%84%9f.shtml#comments</comments>
		<pubDate>Sun, 12 Oct 2008 01:23:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[感悟]]></category>

		<category><![CDATA[LAMP]]></category>

		<category><![CDATA[读后感]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=340</guid>
		<description><![CDATA[草草读完了这本书，写下此文。
本书并不是某项技术的速成，或者一门语言的工具书，而是完全从一个项目管理者和设计者的角度来阐述一个大型项目的架构和技术实现。
作者以通俗手法介绍了一个大型网站从规划，设计，实现等角度，又细数了开发的环境，服务器搭建，开发过程中的一些跟踪调试，代码，数据完整性一致性，运营后的一些bug追踪，负载解决，idc方面的问题，以及一些预警等问题。
这里，作者没有从具体的技术入手，而是抓住了不同环节的一些典型应用，作为抛砖，给读者充分的空间去转移运用这些思路，进行架构的设计。
作者的系统构建在LAMP平台上，因此，非常推荐LAMPer和相关的技术经理来阅读，但作者更侧重于用此平台的一些经验来传达一种设计理念，因此，也推荐其他方面的设计者来学习。
希望大家读后多交流，同时希望更多有项目经验的开发者和设计者，管理者加入我们的LAMP msn群( lampper@live.cn )。
]]></description>
			<content:encoded><![CDATA[<p>草草读完了这本书，写下此文。</p>
<p>本书并不是某项技术的速成，或者一门语言的工具书，而是完全从一个项目管理者和设计者的角度来阐述一个大型项目的架构和技术实现。</p>
<p>作者以通俗手法介绍了一个大型网站从规划，设计，实现等角度，又细数了开发的环境，服务器搭建，开发过程中的一些跟踪调试，代码，数据完整性一致性，运营后的一些bug追踪，负载解决，idc方面的问题，以及一些预警等问题。</p>
<p>这里，作者没有从具体的技术入手，而是抓住了不同环节的一些典型应用，作为抛砖，给读者充分的空间去转移运用这些思路，进行架构的设计。</p>
<p>作者的系统构建在LAMP平台上，因此，非常推荐LAMPer和相关的技术经理来阅读，但作者更侧重于用此平台的一些经验来传达一种设计理念，因此，也推荐其他方面的设计者来学习。</p>
<p>希望大家读后多交流，同时希望更多有项目经验的开发者和设计者，管理者加入我们的LAMP msn群( lampper@live.cn )。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/10/12/%e3%80%8a%e6%9e%84%e5%bb%ba%e5%8f%af%e6%89%a9%e5%b1%95%e7%9a%84web%e7%ab%99%e7%82%b9%e3%80%8b%e6%9c%89%e6%84%9f.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>再议个人作品跟商业软件产品的价值区别</title>
		<link>http://www.sunboyu.cn/2008/10/10/%e5%86%8d%e8%ae%ae%e4%b8%aa%e4%ba%ba%e4%bd%9c%e5%93%81%e8%b7%9f%e5%95%86%e4%b8%9a%e8%bd%af%e4%bb%b6%e4%ba%a7%e5%93%81%e7%9a%84%e4%bb%b7%e5%80%bc%e5%8c%ba%e5%88%ab.shtml</link>
		<comments>http://www.sunboyu.cn/2008/10/10/%e5%86%8d%e8%ae%ae%e4%b8%aa%e4%ba%ba%e4%bd%9c%e5%93%81%e8%b7%9f%e5%95%86%e4%b8%9a%e8%bd%af%e4%bb%b6%e4%ba%a7%e5%93%81%e7%9a%84%e4%bb%b7%e5%80%bc%e5%8c%ba%e5%88%ab.shtml#comments</comments>
		<pubDate>Fri, 10 Oct 2008 12:51:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[感悟]]></category>

		<category><![CDATA[个人开发]]></category>

		<category><![CDATA[商业软件]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=339</guid>
		<description><![CDATA[很多时候，我们在讨论个人作品跟商业软件产品的区别。
至于这两种方式如何来运用，对一些计划采购的人们是个头疼的事情。
很多人崇尚量身定制，这类人大多是开发狂，或者被商业软件搞得头大的人。因为作为开发者，量身定制能满足个人开发欲，满足个人的成就感，而且，定制软件要比在一些开源上二次开发收费要高。作为这种选择的使用者，一般是没有找到适合自己的商业软件，种种原因，商业软件太贵，业务跟软件不能结合，导致软件屡屡的失败，从而要选择定制开发，而大公司的报价是基本不用考虑的，只能选择一些个人来开发。
对于一些简单的业务，个人开发的作品完全能满足业务的需求，但为什么还有价格高昂的商业开发队伍？
1、个人开发无法进行持续的维护。这里指大多数情况。很多人在一个阶段开发完成后，付款验收后就脱离了合作关系，甚至一些部署和初始化服务都没有，而使用者未必懂这些，造成使用成本的增加。
2、个人开发很少有文档的支持。这对一个需要发展的使用者来说是致命的隐患。业务的扩大，一定需要二次的开发，即使是重新开发，起码也得有个数据库说明文档，方便数据的迁移。再有的隐患，就是数据一旦出现问题，无从查起。
3、个人（也包括小团队）无法保证软件跟业务的紧密结合。一旦业务发展到一定阶段，软件更多的是根据业务的改变，个人很难在一个简单的应用上考虑大规模的业务压力，因此，软件是无法跟商业软件相比拟的。
以上是个人作品跟商业软件的区别。
其实个人作为也并非无益处。
1、个人用户能满足微小的业务需求，在一些应用极小的场合，个人开发的性价比是远远高于商业开发的。
2、个人开发能减少探索性发展前期的成本。
3、个人开发比较灵活，能满足一定规模内的定制。
……还有很多优势，暂不一一列举。
在项目中，选择哪种方式，还要根据情况进行深入的讨论，评估。不过要有这么强的评估团队，估计也有能力建立自己的开发队伍。
]]></description>
			<content:encoded><![CDATA[<p>很多时候，我们在讨论个人作品跟商业软件产品的区别。</p>
<p>至于这两种方式如何来运用，对一些计划采购的人们是个头疼的事情。</p>
<p>很多人崇尚量身定制，这类人大多是开发狂，或者被商业软件搞得头大的人。因为作为开发者，量身定制能满足个人开发欲，满足个人的成就感，而且，定制软件要比在一些开源上二次开发收费要高。作为这种选择的使用者，一般是没有找到适合自己的商业软件，种种原因，商业软件太贵，业务跟软件不能结合，导致软件屡屡的失败，从而要选择定制开发，而大公司的报价是基本不用考虑的，只能选择一些个人来开发。</p>
<p>对于一些简单的业务，个人开发的作品完全能满足业务的需求，但为什么还有价格高昂的商业开发队伍？</p>
<p>1、个人开发无法进行持续的维护。这里指大多数情况。很多人在一个阶段开发完成后，付款验收后就脱离了合作关系，甚至一些部署和初始化服务都没有，而使用者未必懂这些，造成使用成本的增加。</p>
<p>2、个人开发很少有文档的支持。这对一个需要发展的使用者来说是致命的隐患。业务的扩大，一定需要二次的开发，即使是重新开发，起码也得有个数据库说明文档，方便数据的迁移。再有的隐患，就是数据一旦出现问题，无从查起。</p>
<p>3、个人（也包括小团队）无法保证软件跟业务的紧密结合。一旦业务发展到一定阶段，软件更多的是根据业务的改变，个人很难在一个简单的应用上考虑大规模的业务压力，因此，软件是无法跟商业软件相比拟的。</p>
<p>以上是个人作品跟商业软件的区别。</p>
<p>其实个人作为也并非无益处。</p>
<p>1、个人用户能满足微小的业务需求，在一些应用极小的场合，个人开发的性价比是远远高于商业开发的。</p>
<p>2、个人开发能减少探索性发展前期的成本。</p>
<p>3、个人开发比较灵活，能满足一定规模内的定制。</p>
<p>……还有很多优势，暂不一一列举。</p>
<p>在项目中，选择哪种方式，还要根据情况进行深入的讨论，评估。不过要有这么强的评估团队，估计也有能力建立自己的开发队伍。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/10/10/%e5%86%8d%e8%ae%ae%e4%b8%aa%e4%ba%ba%e4%bd%9c%e5%93%81%e8%b7%9f%e5%95%86%e4%b8%9a%e8%bd%af%e4%bb%b6%e4%ba%a7%e5%93%81%e7%9a%84%e4%bb%b7%e5%80%bc%e5%8c%ba%e5%88%ab.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>新购两本图书</title>
		<link>http://www.sunboyu.cn/2008/10/10/%e6%96%b0%e8%b4%ad%e4%b8%a4%e6%9c%ac%e5%9b%be%e4%b9%a6.shtml</link>
		<comments>http://www.sunboyu.cn/2008/10/10/%e6%96%b0%e8%b4%ad%e4%b8%a4%e6%9c%ac%e5%9b%be%e4%b9%a6.shtml#comments</comments>
		<pubDate>Fri, 10 Oct 2008 01:24:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<category><![CDATA[图书]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=338</guid>
		<description><![CDATA[ 
特别喜欢这只大狗
]]></description>
			<content:encoded><![CDATA[<p><img src="http://otho.douban.com/mpic/s2008463.jpg" alt="" width="109" height="135" /> <img src="http://otho.douban.com/lpic/s3163855.jpg" alt="" width="150" height="200" /></p>
<p>特别喜欢这只大狗</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/10/10/%e6%96%b0%e8%b4%ad%e4%b8%a4%e6%9c%ac%e5%9b%be%e4%b9%a6.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>Lucene创建Document代码部分-循序渐进学Lucene</title>
		<link>http://www.sunboyu.cn/2008/10/08/lucene%e5%88%9b%e5%bb%badocument%e4%bb%a3%e7%a0%81%e9%83%a8%e5%88%86-%e5%be%aa%e5%ba%8f%e6%b8%90%e8%bf%9b%e5%ad%a6lucene.shtml</link>
		<comments>http://www.sunboyu.cn/2008/10/08/lucene%e5%88%9b%e5%bb%badocument%e4%bb%a3%e7%a0%81%e9%83%a8%e5%88%86-%e5%be%aa%e5%ba%8f%e6%b8%90%e8%bf%9b%e5%ad%a6lucene.shtml#comments</comments>
		<pubDate>Wed, 08 Oct 2008 10:47:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Java]]></category>

		<category><![CDATA[document]]></category>

		<category><![CDATA[lucene]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=337</guid>
		<description><![CDATA[import java.io.*;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.analysis.SimpleAnalyzer;
public class Index
{
	public static void main( String args[] )
	{
		Document doc = new Document();
		//注释1
		Field f1 = new Field(&#34;name1&#34;,&#34;value1&#34;,Field.Store.YES,Field.Index.TOKENIZED);
		Field f2 = new Field(&#34;name2&#34;,&#34;value2&#34;,Field.Store.YES,Field.Index.TOKENIZED);
		doc.add( f1 );
		doc.add( f2 );
		try
		{
			IndexWriter writer = new IndexWriter( &#34;./&#34; , new SimpleAnalyzer() , true );
			writer.addDocument( doc );
			writer.close();
		}
		catch (Exception e)
		{
&#160;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">import java.io.*;</li>
<li>import org.apache.lucene.document.Document;</li>
<li>import org.apache.lucene.document.Field;</li>
<li>import org.apache.lucene.index.IndexWriter;</li>
<li>import org.apache.lucene.analysis.SimpleAnalyzer;</li>
<li>public class Index</li>
<li>{</li>
<li>	public static void main( String args[] )</li>
<li>	{</li>
<li>		Document doc = new Document();</li>
<li>		//注释1</li>
<li>		Field f1 = new Field(&quot;name1&quot;,&quot;value1&quot;,Field.Store.YES,Field.Index.TOKENIZED);</li>
<li>		Field f2 = new Field(&quot;name2&quot;,&quot;value2&quot;,Field.Store.YES,Field.Index.TOKENIZED);</li>
<li>		doc.add( f1 );</li>
<li>		doc.add( f2 );</li>
<li>		try</li>
<li>		{</li>
<li>			IndexWriter writer = new IndexWriter( &quot;./&quot; , new SimpleAnalyzer() , true );</li>
<li>			writer.addDocument( doc );</li>
<li>			writer.close();</li>
<li>		}</li>
<li>		catch (Exception e)</li>
<li>		{</li>
<li>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; e.printStackTrace(); </li>
<li>		}</li>
<li>	}</li>
<li>}</li></ol></div>
<p>注释1：Field方法的在2.0.0版本中有5种方法，在2.3.2中增加到了7种，详细用法请参阅官方文档<br />
http://lucene.apache.org/java/2_0_0/api/org/apache/lucene/document/Field.html<br />
http://lucene.apache.org/java/2_3_2/api/org/apache/lucene/document/Field.html</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/10/08/lucene%e5%88%9b%e5%bb%badocument%e4%bb%a3%e7%a0%81%e9%83%a8%e5%88%86-%e5%be%aa%e5%ba%8f%e6%b8%90%e8%bf%9b%e5%ad%a6lucene.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>JS:setAttribute() getAttribute() 使用总结</title>
		<link>http://www.sunboyu.cn/2008/10/07/jssetattribute-getattribute-%e4%bd%bf%e7%94%a8%e6%80%bb%e7%bb%93.shtml</link>
		<comments>http://www.sunboyu.cn/2008/10/07/jssetattribute-getattribute-%e4%bd%bf%e7%94%a8%e6%80%bb%e7%bb%93.shtml#comments</comments>
		<pubDate>Tue, 07 Oct 2008 15:53:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[dom属性]]></category>

		<category><![CDATA[JS]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=336</guid>
		<description><![CDATA[setAttribute() getAttribute() 两个函数分别是设置DOM节点属性设置和修改的函数，比如
var a=document.getElementById(&#8217;link&#8217;);
a.setAttribute(&#8217;class&#8217;) = &#8216;mylinkstyle&#8217;;
可以设置一个元素的属性
同样，我们可以自定义元素的属性，比如 &#60;a href=&#8221;#&#8221; tips=&#8221;tipscontet&#8221; title=&#8221;testtitle&#8221;&#62;test&#60;/a&#62;
如此，给a标签增加一个新的属性，tips。而tips的值可以用getAttribute()获取。
]]></description>
			<content:encoded><![CDATA[<p>setAttribute() getAttribute() 两个函数分别是设置DOM节点属性设置和修改的函数，比如</p>
<p>var a=document.getElementById(&#8217;link&#8217;);</p>
<p>a.setAttribute(&#8217;class&#8217;) = &#8216;mylinkstyle&#8217;;</p>
<p>可以设置一个元素的属性</p>
<p>同样，我们可以自定义元素的属性，比如 &lt;a href=&#8221;#&#8221; tips=&#8221;tipscontet&#8221; title=&#8221;testtitle&#8221;&gt;test&lt;/a&gt;</p>
<p>如此，给a标签增加一个新的属性，tips。而tips的值可以用getAttribute()获取。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/10/07/jssetattribute-getattribute-%e4%bd%bf%e7%94%a8%e6%80%bb%e7%bb%93.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>节后综合征</title>
		<link>http://www.sunboyu.cn/2008/10/07/%e8%8a%82%e5%90%8e%e7%bb%bc%e5%90%88%e5%be%81.shtml</link>
		<comments>http://www.sunboyu.cn/2008/10/07/%e8%8a%82%e5%90%8e%e7%bb%bc%e5%90%88%e5%be%81.shtml#comments</comments>
		<pubDate>Tue, 07 Oct 2008 06:29:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[纯属蛋疼]]></category>

		<category><![CDATA[经济危机]]></category>

		<category><![CDATA[长假]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=335</guid>
		<description><![CDATA[长假过去了，人明显得懒了，晚上也懒得写程序，只是无聊得翻阅那几本书。公司很长时间不用mysql了，mysql技能几乎没什么进步。本本配置太差，模拟集群速度不行，懒得去做那些毫无实用价值的实验。真的改做点什么了，但没啥可做的，也没心情去找事情。
一个网友的公司被涮了，留下了一个烂摊子，中关村倒卖IT产品的生意都不景气。可怜的我居然收了张百元假钞。这是何等的世界啊～
PHPer不好找，公司也不想出钱，我们这些热心免费拉皮条的也不好干。兄弟们被涮了，公司依然找不到人，供需失衡，谁都在考虑自己的利益。
莫非这就是传说中的经济危机？
]]></description>
			<content:encoded><![CDATA[<p>长假过去了，人明显得懒了，晚上也懒得写程序，只是无聊得翻阅那几本书。公司很长时间不用mysql了，mysql技能几乎没什么进步。本本配置太差，模拟集群速度不行，懒得去做那些毫无实用价值的实验。真的改做点什么了，但没啥可做的，也没心情去找事情。</p>
<p>一个网友的公司被涮了，留下了一个烂摊子，中关村倒卖IT产品的生意都不景气。可怜的我居然收了张百元假钞。这是何等的世界啊～</p>
<p>PHPer不好找，公司也不想出钱，我们这些热心免费拉皮条的也不好干。兄弟们被涮了，公司依然找不到人，供需失衡，谁都在考虑自己的利益。</p>
<p>莫非这就是传说中的经济危机？</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/10/07/%e8%8a%82%e5%90%8e%e7%bb%bc%e5%90%88%e5%be%81.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>Lucene文档模型(Document)简解</title>
		<link>http://www.sunboyu.cn/2008/10/04/lucene%e6%96%87%e6%a1%a3%e6%a8%a1%e5%9e%8bdocument%e7%ae%80%e8%a7%a3.shtml</link>
		<comments>http://www.sunboyu.cn/2008/10/04/lucene%e6%96%87%e6%a1%a3%e6%a8%a1%e5%9e%8bdocument%e7%ae%80%e8%a7%a3.shtml#comments</comments>
		<pubDate>Sat, 04 Oct 2008 03:39:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Java]]></category>

		<category><![CDATA[lucene]]></category>

		<category><![CDATA[简介]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=334</guid>
		<description><![CDATA[最近仔细研究了Lucene的文档模式，现用通俗语言来解释。
Lucene的索引，基本结构为 Index-&#62;Document-&#62;Field 这样可以构建一个非关系型二维结构，由不同field构成的一个Document，由不同的Document构成的Index。
Lucene的Field方法很丰富，在2.0版本以后，由三种Field类型增加到了5种，支持三种数据流的传入方式（字符串，读取，二进制传入），支持数据的存储，索引，分词。
而我们使用Lucene的主要功能在于分词和生成索引。具体应用待详细使用后介绍。
]]></description>
			<content:encoded><![CDATA[<p>最近仔细研究了Lucene的文档模式，现用通俗语言来解释。</p>
<p>Lucene的索引，基本结构为 Index-&gt;Document-&gt;Field 这样可以构建一个非关系型二维结构，由不同field构成的一个Document，由不同的Document构成的Index。</p>
<p>Lucene的Field方法很丰富，在2.0版本以后，由三种Field类型增加到了5种，支持三种数据流的传入方式（字符串，读取，二进制传入），支持数据的存储，索引，分词。</p>
<p>而我们使用Lucene的主要功能在于分词和生成索引。具体应用待详细使用后介绍。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/10/04/lucene%e6%96%87%e6%a1%a3%e6%a8%a1%e5%9e%8bdocument%e7%ae%80%e8%a7%a3.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>我的一个Java程序</title>
		<link>http://www.sunboyu.cn/2008/10/03/%e6%88%91%e7%9a%84%e4%b8%80%e4%b8%aajava%e7%a8%8b%e5%ba%8f.shtml</link>
		<comments>http://www.sunboyu.cn/2008/10/03/%e6%88%91%e7%9a%84%e4%b8%80%e4%b8%aajava%e7%a8%8b%e5%ba%8f.shtml#comments</comments>
		<pubDate>Fri, 03 Oct 2008 09:42:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Java]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[mysql连接]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=333</guid>
		<description><![CDATA[PHP总有其局限性，比如解释型语言在速度上的弱点，制约了它在效率方面的发挥。facebook开放了源代码，其底层大都是c来编写，而我现在计划用Java为一些服务写后台，这是我的第一个Java程序，希望大家多批评，虽然上边依然有太多php的影子。
import java.sql.*;
/*
&#160;*&#160; Java Mysql数据库连接类
&#160;*&#160; 我的第一个java程序
&#160;*/
public class MysqlConn
{
	private String dsn = &#34;jdbc:mysql://localhost:3306/test&#34;;
	private String username = &#34;root&#34;;
	private String password = &#34;123456&#34;;
&#160;
	private Connection conn = null;
	private Statement stmt = null;
	private ResultSet rs = null;
&#160;
&#160;
&#160;
&#160;
&#160;&#160; &#160;public void MysqlConn()
	{
	}
&#160;&#160; &#160;//初始化连接参数
	public void SetDsn( String Dsn )
	{
		this.dsn = Dsn;
	}
	//初始化用户名密码
	public void SetUserPass( String Username , String Password )
	{
		this.username = Username;
		this.password = Password;
	}
	//连接函数
	public void [...]]]></description>
			<content:encoded><![CDATA[<p>PHP总有其局限性，比如解释型语言在速度上的弱点，制约了它在效率方面的发挥。facebook开放了源代码，其底层大都是c来编写，而我现在计划用Java为一些服务写后台，这是我的第一个Java程序，希望大家多批评，虽然上边依然有太多php的影子。</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">import java.sql.*;</li>
<li>/*</li>
<li>&nbsp;*&nbsp; Java Mysql数据库连接类</li>
<li>&nbsp;*&nbsp; 我的第一个java程序</li>
<li>&nbsp;*/</li>
<li>public class MysqlConn</li>
<li>{</li>
<li>	private String dsn = &quot;jdbc:mysql://localhost:3306/test&quot;;</li>
<li>	private String username = &quot;root&quot;;</li>
<li>	private String password = &quot;123456&quot;;</li>
<li>&nbsp;</li>
<li>	private Connection conn = null;</li>
<li>	private Statement stmt = null;</li>
<li>	private ResultSet rs = null;</li>
<li>&nbsp;</li>
<li>&nbsp;</li>
<li>&nbsp;</li>
<li>&nbsp;</li>
<li>&nbsp;&nbsp; &nbsp;public void MysqlConn()</li>
<li>	{</li>
<li>	}</li>
<li>&nbsp;&nbsp; &nbsp;//初始化连接参数</li>
<li>	public void SetDsn( String Dsn )</li>
<li>	{</li>
<li>		this.dsn = Dsn;</li>
<li>	}</li>
<li>	//初始化用户名密码</li>
<li>	public void SetUserPass( String Username , String Password )</li>
<li>	{</li>
<li>		this.username = Username;</li>
<li>		this.password = Password;</li>
<li>	}</li>
<li>	//连接函数</li>
<li>	public void Conn()</li>
<li>	{</li>
<li>		try</li>
<li>		{</li>
<li>			//加载Connetc/J驱动</li>
<li>			//Class.forName(&quot;com.mysql.jdbc.Driver&quot;);</li>
<li>			Class.forName(&quot;org.gjt.mm.mysql.Driver&quot;);</li>
<li>			//开始连接</li>
<li>			this.conn = DriverManager.getConnection( this.dsn , this.username , this.password );</li>
<li>			this.stmt = this.conn.createStatement( ResultSet.TYPE_SCROLL_SENSITIVE , ResultSet.CONCUR_UPDATABLE );</li>
<li>		}</li>
<li>		catch(SQLException ex)</li>
<li>		{</li>
<li>			System.out.println(&quot;Error : &quot; + ex.toString());</li>
<li>			System.out.println(&quot;没有找到JDBC/ODBC驱动程序！&quot;);</li>
<li>			System.exit(0);</li>
<li>		}</li>
<li>		catch(Exception e)</li>
<li>		{</li>
<li>			System.out.println(&quot;Errors: &quot; + e.toString());</li>
<li>			System.exit(0);</li>
<li>		}</li>
<li>		</li>
<li>	}</li>
<li>&nbsp;&nbsp; &nbsp;//返回结果集</li>
<li>	public ResultSet sqlQuery( String sql )</li>
<li>	{</li>
<li>		try</li>
<li>		{</li>
<li>			this.rs = this.stmt.executeQuery( sql );</li>
<li>		}</li>
<li>		catch (SQLException ex)</li>
<li>		{</li>
<li>			System.out.println(&quot;Error : &quot; + ex.toString());</li>
<li>			System.exit(0);</li>
<li>		}</li>
<li>		catch (Exception ex)</li>
<li>		{</li>
<li>			System.out.println(&quot;Error : &quot; + ex.toString());</li>
<li>			System.exit(0);</li>
<li>		}</li>
<li>		return rs;</li>
<li>	}</li>
<li>	//执行 update,insert之类</li>
<li>	public void Exec( String sql )</li>
<li>	{</li>
<li>		try</li>
<li>		{</li>
<li>			this.stmt.executeUpdate( sql )</li>
<li>		}</li>
<li>		catch (SQLException ex)</li>
<li>		{</li>
<li>			System.out.println(&quot;Error : &quot; + ex.toString());</li>
<li>			System.exit(0);</li>
<li>		}</li>
<li>		catch (Exception ex)</li>
<li>		{</li>
<li>			System.out.println(&quot;Error : &quot; + ex.toString());</li>
<li>			System.exit(0);</li>
<li>		}</li>
<li>	}</li>
<li>&nbsp;</li>
<li>}</li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/10/03/%e6%88%91%e7%9a%84%e4%b8%80%e4%b8%aajava%e7%a8%8b%e5%ba%8f.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>PHP缓存组件APC简介</title>
		<link>http://www.sunboyu.cn/2008/10/03/php%e7%bc%93%e5%ad%98%e7%bb%84%e4%bb%b6apc%e7%ae%80%e4%bb%8b.shtml</link>
		<comments>http://www.sunboyu.cn/2008/10/03/php%e7%bc%93%e5%ad%98%e7%bb%84%e4%bb%b6apc%e7%ae%80%e4%bb%8b.shtml#comments</comments>
		<pubDate>Fri, 03 Oct 2008 02:55:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[apc]]></category>

		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=332</guid>
		<description><![CDATA[php是解释型语言,比起编译型语言,速度自然会慢.每种语言基本都是 1、源代码-&#62;编译成二进制机器码 2、编译成二进制机器码-&#62;执行 编译型语言（如c，java）在执行一次步骤1后，多次执行步骤2，而asp，php之类的解释型语言每次访问，都重复步骤1，2，故效率低下。
PHP官方提供了一个编译php为二进制码的工具，Zend，价格昂贵，今天讨论免费的APC。
APC组件下载地址：http://pecl4win.php.net/ext.php/php_apc.dll  http://pecl.php.net/package/apc  根据自己的操作系统版本来下载安装。我这里使用的是windows系统，直接把php_apc.dll放在扩展文件路径里，在php.ini里增加extension=php_apc.dll，再查看phpinfo(),可看到apc安装成功的信息。具体配置信息在这里  http://cn2.php.net/manual/en/apc.configuration.php
其中的参数可以设定是否缓存php的编译文件，还有一些常用的限制。
除此之外，还有很多opcode缓存组件，如accelerator,xcache之类，详情可参见这里 http://en.wikipedia.org/wiki/Alternative_PHP_Cache#Alternative_PHP_Cache
]]></description>
			<content:encoded><![CDATA[<p>php是解释型语言,比起编译型语言,速度自然会慢.每种语言基本都是 1、源代码-&gt;编译成二进制机器码 2、编译成二进制机器码-&gt;执行 编译型语言（如c，java）在执行一次步骤1后，多次执行步骤2，而asp，php之类的解释型语言每次访问，都重复步骤1，2，故效率低下。</p>
<p>PHP官方提供了一个编译php为二进制码的工具，Zend，价格昂贵，今天讨论免费的APC。</p>
<p>APC组件下载地址：http://pecl4win.php.net/ext.php/php_apc.dll  http://pecl.php.net/package/apc  根据自己的操作系统版本来下载安装。我这里使用的是windows系统，直接把php_apc.dll放在扩展文件路径里，在php.ini里增加extension=php_apc.dll，再查看phpinfo(),可看到apc安装成功的信息。具体配置信息在这里  http://cn2.php.net/manual/en/apc.configuration.php</p>
<p>其中的参数可以设定是否缓存php的编译文件，还有一些常用的限制。</p>
<p>除此之外，还有很多opcode缓存组件，如accelerator,xcache之类，详情可参见这里 http://en.wikipedia.org/wiki/Alternative_PHP_Cache#Alternative_PHP_Cache</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/10/03/php%e7%bc%93%e5%ad%98%e7%bb%84%e4%bb%b6apc%e7%ae%80%e4%bb%8b.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>做公司,一定要做对社会有意义的事情</title>
		<link>http://www.sunboyu.cn/2008/09/29/%e5%81%9a%e5%85%ac%e5%8f%b8%e4%b8%80%e5%ae%9a%e8%a6%81%e5%81%9a%e5%af%b9%e7%a4%be%e4%bc%9a%e6%9c%89%e6%84%8f%e4%b9%89%e7%9a%84%e4%ba%8b%e6%83%85.shtml</link>
		<comments>http://www.sunboyu.cn/2008/09/29/%e5%81%9a%e5%85%ac%e5%8f%b8%e4%b8%80%e5%ae%9a%e8%a6%81%e5%81%9a%e5%af%b9%e7%a4%be%e4%bc%9a%e6%9c%89%e6%84%8f%e4%b9%89%e7%9a%84%e4%ba%8b%e6%83%85.shtml#comments</comments>
		<pubDate>Mon, 29 Sep 2008 13:41:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[相当拍砖]]></category>

		<category><![CDATA[企业]]></category>

		<category><![CDATA[社会责任]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=331</guid>
		<description><![CDATA[前些日子,在sohu大厦里听了一次讲座,大概是一个VC讲一些投资方面的事情.经营管理没多听,期间他说了重要的一点,我记忆尤深:&#8221;做公司,一定要做对社会有意义的事情&#8221;.
仔细一想,但凡有所发展的企业,他的盈利一定是建立在了服务社会,服务大众,有利于社会发展的事情之上.不管金融,科技还是生产加工企业,无一例外.
而一些投机倒把,危害人民利益的企业,势必会垮台.就如最近的三鹿事件(我家旁边的企业,很痛心),不管哪个环节出的问题,现在整个经济链条都崩溃了,老家的人们都开始喝五毛一斤的鲜奶了,而粮食饲料等没有降价,受损的何止厂商.
在IT方面,比较成功的企业,腾讯算一.腾讯的主产品IM,完全推动了社会的进步,改变了人们的生活方式,从电话到email,手机,im,这些功能完全推动了人们的生活,降低了人们的通讯效率和成本,完全符合社会发展的趋势,因此,这是一个对社会有意义的产品,腾讯成为了一个有意义的企业,他得以了发展和状态.(注:只针对IM系列的产品,本人对其网游等持反对态度)
而一些利润很好的企业,未必做了对社会有意义的事情.比如盛大,我一直很痛恨的公司.这种公司如果不转型,终究有一天,就像三鹿一样爆发.
]]></description>
			<content:encoded><![CDATA[<p>前些日子,在sohu大厦里听了一次讲座,大概是一个VC讲一些投资方面的事情.经营管理没多听,期间他说了重要的一点,我记忆尤深:&#8221;做公司,一定要做对社会有意义的事情&#8221;.</p>
<p>仔细一想,但凡有所发展的企业,他的盈利一定是建立在了服务社会,服务大众,有利于社会发展的事情之上.不管金融,科技还是生产加工企业,无一例外.</p>
<p>而一些投机倒把,危害人民利益的企业,势必会垮台.就如最近的三鹿事件(我家旁边的企业,很痛心),不管哪个环节出的问题,现在整个经济链条都崩溃了,老家的人们都开始喝五毛一斤的鲜奶了,而粮食饲料等没有降价,受损的何止厂商.</p>
<p>在IT方面,比较成功的企业,腾讯算一.腾讯的主产品IM,完全推动了社会的进步,改变了人们的生活方式,从电话到email,手机,im,这些功能完全推动了人们的生活,降低了人们的通讯效率和成本,完全符合社会发展的趋势,因此,这是一个对社会有意义的产品,腾讯成为了一个有意义的企业,他得以了发展和状态.(注:只针对IM系列的产品,本人对其网游等持反对态度)</p>
<p>而一些利润很好的企业,未必做了对社会有意义的事情.比如盛大,我一直很痛恨的公司.这种公司如果不转型,终究有一天,就像三鹿一样爆发.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/09/29/%e5%81%9a%e5%85%ac%e5%8f%b8%e4%b8%80%e5%ae%9a%e8%a6%81%e5%81%9a%e5%af%b9%e7%a4%be%e4%bc%9a%e6%9c%89%e6%84%8f%e4%b9%89%e7%9a%84%e4%ba%8b%e6%83%85.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>Linux提交命令至后台运行</title>
		<link>http://www.sunboyu.cn/2008/09/27/linux%e6%8f%90%e4%ba%a4%e5%91%bd%e4%bb%a4%e8%87%b3%e5%90%8e%e5%8f%b0%e8%bf%90%e8%a1%8c.shtml</link>
		<comments>http://www.sunboyu.cn/2008/09/27/linux%e6%8f%90%e4%ba%a4%e5%91%bd%e4%bb%a4%e8%87%b3%e5%90%8e%e5%8f%b0%e8%bf%90%e8%a1%8c.shtml#comments</comments>
		<pubDate>Sat, 27 Sep 2008 15:01:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[linux]]></category>

		<category><![CDATA[shell]]></category>

		<category><![CDATA[后台执行]]></category>

		<category><![CDATA[后台运行]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=330</guid>
		<description><![CDATA[我经常在putty里工作,有时候如果一个命令执行太长,不得已,我得开两个窗口,如果事情再多,可能开四个五个,不过有的ssh登陆工具可以开多个窗口,但难免会出点乱子.那么我们可以把命令隐藏再后台执行,使用linux下命令  &#8220;&#38;&#8221;  这个倒霉的符号.
比如我们要执行一个命令,(暂时没想到执行时间N长的命令,假设一个shell) test.sh , 现在提交并隐藏在后台
$./test.sh &#62;&#62; test.log &#38;
意思是,执行test.sh 反馈的结构输送至 test.log , &#38;表示这个命令提交至后台执行.
执行后,返回一个进程号,可以用ps来查看.
这样,我们可以连续在同一个终端窗口上运行多个持续的命令.
然后,问题又来.我们运行这些命令至后台后,如果想退出终端窗口,那么后台的命令也随之中断.我们得想办法让进程持续运行.这里得使用此命令 nohup
重新执行上边的操作,那么我们应该这样执行
$nohup ./test.sh &#62;&#62; test.log
然后敲logout,放心,再登陆试试ps,进程依然存在!
]]></description>
			<content:encoded><![CDATA[<p>我经常在putty里工作,有时候如果一个命令执行太长,不得已,我得开两个窗口,如果事情再多,可能开四个五个,不过有的ssh登陆工具可以开多个窗口,但难免会出点乱子.那么我们可以把命令隐藏再后台执行,使用linux下命令  &#8220;&amp;&#8221;  这个倒霉的符号.</p>
<p>比如我们要执行一个命令,(暂时没想到执行时间N长的命令,假设一个shell) test.sh , 现在提交并隐藏在后台</p>
<p>$./test.sh &gt;&gt; test.log &amp;</p>
<p>意思是,执行test.sh 反馈的结构输送至 test.log , &amp;表示这个命令提交至后台执行.</p>
<p>执行后,返回一个进程号,可以用ps来查看.</p>
<p>这样,我们可以连续在同一个终端窗口上运行多个持续的命令.</p>
<p>然后,问题又来.我们运行这些命令至后台后,如果想退出终端窗口,那么后台的命令也随之中断.我们得想办法让进程持续运行.这里得使用此命令 nohup</p>
<p>重新执行上边的操作,那么我们应该这样执行</p>
<p>$nohup ./test.sh &gt;&gt; test.log</p>
<p>然后敲logout,放心,再登陆试试ps,进程依然存在!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/09/27/linux%e6%8f%90%e4%ba%a4%e5%91%bd%e4%bb%a4%e8%87%b3%e5%90%8e%e5%8f%b0%e8%bf%90%e8%a1%8c.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>逃离海内</title>
		<link>http://www.sunboyu.cn/2008/09/26/%e9%80%83%e7%a6%bb%e6%b5%b7%e5%86%85.shtml</link>
		<comments>http://www.sunboyu.cn/2008/09/26/%e9%80%83%e7%a6%bb%e6%b5%b7%e5%86%85.shtml#comments</comments>
		<pubDate>Fri, 26 Sep 2008 14:21:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[感悟]]></category>

		<category><![CDATA[海内]]></category>

		<category><![CDATA[退出]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=329</guid>
		<description><![CDATA[突然发现海内今天改版了,我依然玩我的挣车位和好友买卖.看着我那一排轿车,其中还有一台宝马S600,突然有种失落:多日的努力其实只换来一种虚无缥缈的虚荣.虽然同事们都在开心网上玩得不亦乐乎,校内也有大量webgame,我依然坚守在海内.不是因为海内有多优秀,因为曾经我的简历连个简单的邮件回复都没有.最终我想知道这家公司究竟有着怎样的前途.海内终究没有留住我,因为没有什么理由能让我再留恋.汽车就先摆着,我开始上鲜果网,习惯了RSS,这是我上海内唯一的收获了.
我不知道国内sns都有什么样的前景,但我努力留恋的网站始终没有留住我.也许这是国内做服务的网站们始终在研究的一个问题.
]]></description>
			<content:encoded><![CDATA[<p>突然发现海内今天改版了,我依然玩我的挣车位和好友买卖.看着我那一排轿车,其中还有一台宝马S600,突然有种失落:多日的努力其实只换来一种虚无缥缈的虚荣.虽然同事们都在开心网上玩得不亦乐乎,校内也有大量webgame,我依然坚守在海内.不是因为海内有多优秀,因为曾经我的简历连个简单的邮件回复都没有.最终我想知道这家公司究竟有着怎样的前途.海内终究没有留住我,因为没有什么理由能让我再留恋.汽车就先摆着,我开始上鲜果网,习惯了RSS,这是我上海内唯一的收获了.</p>
<p>我不知道国内sns都有什么样的前景,但我努力留恋的网站始终没有留住我.也许这是国内做服务的网站们始终在研究的一个问题.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/09/26/%e9%80%83%e7%a6%bb%e6%b5%b7%e5%86%85.shtml/feed</wfw:commentRss>
		</item>
	</channel>
</rss>

