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

<channel>
	<title>Mzsh &#187; shishirui</title>
	<atom:link href="http://www.phpblog.cn/archives/author/admin/feed" rel="self" type="application/rss+xml" />
	<link>http://www.phpblog.cn</link>
	<description>昨夜的火光，今天的迷茫， 有情的背叛，无情的死亡。 山水远，只影向谁去？ 曼珠沙华，开在火中央....</description>
	<lastBuildDate>Wed, 19 May 2010 13:49:18 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Discuz! X1.0正式版发布</title>
		<link>http://www.phpblog.cn/archives/486</link>
		<comments>http://www.phpblog.cn/archives/486#comments</comments>
		<pubDate>Wed, 19 May 2010 13:48:25 +0000</pubDate>
		<dc:creator>shishirui</dc:creator>
				<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.phpblog.cn/?p=486</guid>
		<description><![CDATA[
Discuz! 一直以来是公司的核心产品，这次的X系列，更是 Discuz! 历史上的一个里程碑，希望大家支持。
专题页面：http://www.discuz.net/topic-x1.html]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.phpblog.cn/wp-content/uploads/2010/05/8.jpg" rel="lightbox[486]"><img class="size-full wp-image-489 alignnone" title="8" src="http://www.phpblog.cn/wp-content/uploads/2010/05/8.jpg" alt="" width="500" height="242" /></a></p>
<p>Discuz! 一直以来是公司的核心产品，这次的X系列，更是 Discuz! 历史上的一个里程碑，希望大家支持。</p>
<p>专题页面：<a href="http://www.discuz.net/topic-x1.html" target="_blank">http://www.discuz.net/topic-x1.html</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.phpblog.cn/archives/486/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>正则表达式技巧分享PPT</title>
		<link>http://www.phpblog.cn/archives/479</link>
		<comments>http://www.phpblog.cn/archives/479#comments</comments>
		<pubDate>Fri, 14 May 2010 15:56:10 +0000</pubDate>
		<dc:creator>shishirui</dc:creator>
				<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.phpblog.cn/?p=479</guid>
		<description><![CDATA[我们manyou部门每两周会做一次技术交流会，这次轮到我，这是我今天为部门的同事们分享的一些关于正则表达式的使用技巧，这是分享时用到的PPT文档，在这里一起分享给大家。
下载：正则表达式技巧分享]]></description>
			<content:encoded><![CDATA[<p>我们manyou部门每两周会做一次技术交流会，这次轮到我，这是我今天为部门的同事们分享的一些关于正则表达式的使用技巧，这是分享时用到的PPT文档，在这里一起分享给大家。</p>
<p>下载：<a href="http://www.phpblog.cn/wp-content/uploads/2010/05/正则表达式技巧分享.pptx">正则表达式技巧分享</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.phpblog.cn/archives/479/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>监控宝招聘</title>
		<link>http://www.phpblog.cn/archives/473</link>
		<comments>http://www.phpblog.cn/archives/473#comments</comments>
		<pubDate>Thu, 15 Apr 2010 03:11:03 +0000</pubDate>
		<dc:creator>shishirui</dc:creator>
				<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.phpblog.cn/?p=473</guid>
		<description><![CDATA[朋友的公司在招人，工作地点在北京中关村，条件很不错，感兴趣的朋友可以去尝试一下。
监控宝：http://www.jiankongbao.com/
联系方式：job#jiankongbao.com
以下是职位信息：
PHP开发工程师（高级）
职位要求：
有深入研究复杂问题、得到较好解决方案并最终解决问题的能力。
精通PHP，能够编写出正确简洁并且有效的Web程序。
对你的工作保持热情。
熟悉HTML/CSS/Javascript/Ajax/jQuery，精通其他技术优先考虑。
精通网络协议如HTTP,TCP/IP和DNS。
有两年以上的PHP开发经验。
Linux系统管理员
职位要求：
熟悉Linux/Unix常用服务的安装配置与使用。
对网站安全结构，系统漏洞、入侵检测、病毒防护、防火墙等有丰富的实践经验。
能深入探究复杂问题以及提供简洁并且务实的解决方法。
具有服务的态度, 对于能完整地解决别人的问题感到很刺激。
能在较大压力下工作，具有良好的团队精神和工作热情。
对于各种主流服务器，了解性能监控和优化。
增值业务产品经理
职位要求：
熟悉互联网基础服务产品，有过相关的工作经验。
有技术专家背景优先考虑。
自认为对互联网产品设计有特别的直觉。
精通互联网营销规则。]]></description>
			<content:encoded><![CDATA[<p>朋友的公司在招人，工作地点在北京中关村，条件很不错，感兴趣的朋友可以去尝试一下。</p>
<p>监控宝：<a href="http://www.jiankongbao.com/" target="_blank">http://www.jiankongbao.com/</a><br />
联系方式：job#jiankongbao.com</p>
<p>以下是职位信息：</p>
<p><strong>PHP开发工程师（高级）</strong></p>
<p>职位要求：<br />
有深入研究复杂问题、得到较好解决方案并最终解决问题的能力。<br />
精通PHP，能够编写出正确简洁并且有效的Web程序。<br />
对你的工作保持热情。<br />
熟悉HTML/CSS/Javascript/Ajax/jQuery，精通其他技术优先考虑。<br />
精通网络协议如HTTP,TCP/IP和DNS。<br />
有两年以上的PHP开发经验。</p>
<p><strong>Linux系统管理员</strong></p>
<p>职位要求：<br />
熟悉Linux/Unix常用服务的安装配置与使用。<br />
对网站安全结构，系统漏洞、入侵检测、病毒防护、防火墙等有丰富的实践经验。<br />
能深入探究复杂问题以及提供简洁并且务实的解决方法。<br />
具有服务的态度, 对于能完整地解决别人的问题感到很刺激。<br />
能在较大压力下工作，具有良好的团队精神和工作热情。<br />
对于各种主流服务器，了解性能监控和优化。</p>
<p><strong>增值业务产品经理</strong></p>
<p>职位要求：<br />
熟悉互联网基础服务产品，有过相关的工作经验。<br />
有技术专家背景优先考虑。<br />
自认为对互联网产品设计有特别的直觉。<br />
精通互联网营销规则。</p>]]></content:encoded>
			<wfw:commentRss>http://www.phpblog.cn/archives/473/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>摄影常用技巧</title>
		<link>http://www.phpblog.cn/archives/456</link>
		<comments>http://www.phpblog.cn/archives/456#comments</comments>
		<pubDate>Sun, 11 Apr 2010 09:57:21 +0000</pubDate>
		<dc:creator>shishirui</dc:creator>
				<category><![CDATA[photogragh]]></category>

		<guid isPermaLink="false">http://www.phpblog.cn/?p=456</guid>
		<description><![CDATA[通用技巧

 拍摄时使用RAW格式，然后在电脑上使用软件显像。
 尝试使用较低的视角拍摄。
 改变光圈和焦距控制景深。
 使用广角镜头来强调透视感。
 使用对焦锁定实现任何位置对焦。
 使用D-lighting还原自然亮度。
 强光下使用遮光罩，并避免光线直接射入镜头。
 使用虚化效果减少照片中的干扰元素。
将重要元素放在相机基准线的相交点。
关闭防抖功能时，安全快门的速度大约为“1/焦距”秒。
拍摄时身体倚靠在墙上，或将相机顶在固定的物体上，也是防止照片抖动的好方法。
拍摄微距时，尝试虚化前景，有时效果更好。

人像技巧

 多使用反光板。
 使用85mm-135mm的焦距拍摄，减轻变形程度。
 合焦于眼睛。
 使用面部自动对焦功能。
 使用正向曝光补偿使皮肤看起来更加白皙。
 将优化校准设置为“人像”，使皮肤看起来更自然。
 大胆利用逆光拍摄，使用负向曝光补偿和闪光灯得到正确曝光。
 挑战逆光情况下，头发顶部被阳光照亮的炫目表现。

风景技巧

 在黄昏或清晨，尝试将白平衡设置为“阴影”或“阴天”，并使用负向曝光补偿。
 优化校准设置为“风景”。

其他

拍摄宠物时，尝试将相机置于宠物视线高度。
拍摄食物时，尝试将视角放低，并使用微距。
尝试黑白照片，去掉鲜艳颜色的干扰元素，使照片表现出娴静淡定的感觉。
]]></description>
			<content:encoded><![CDATA[<p><strong>通用技巧</strong></p>
<ol>
<li> 拍摄时使用RAW格式，然后在电脑上使用软件显像。</li>
<li> 尝试使用较低的视角拍摄。</li>
<li> 改变光圈和焦距控制景深。</li>
<li> 使用广角镜头来强调透视感。</li>
<li> 使用对焦锁定实现任何位置对焦。</li>
<li> 使用D-lighting还原自然亮度。</li>
<li> 强光下使用遮光罩，并避免光线直接射入镜头。</li>
<li> 使用虚化效果减少照片中的干扰元素。</li>
<li>将重要元素放在相机基准线的相交点。</li>
<li>关闭防抖功能时，安全快门的速度大约为“1/焦距”秒。</li>
<li>拍摄时身体倚靠在墙上，或将相机顶在固定的物体上，也是防止照片抖动的好方法。</li>
<li>拍摄微距时，尝试虚化前景，有时效果更好。</li>
</ol>
<p><strong>人像技巧</strong></p>
<ol>
<li> 多使用反光板。</li>
<li> 使用85mm-135mm的焦距拍摄，减轻变形程度。</li>
<li> 合焦于眼睛。</li>
<li> 使用面部自动对焦功能。</li>
<li> 使用正向曝光补偿使皮肤看起来更加白皙。</li>
<li> 将优化校准设置为“人像”，使皮肤看起来更自然。</li>
<li> 大胆利用逆光拍摄，使用负向曝光补偿和闪光灯得到正确曝光。</li>
<li> 挑战逆光情况下，头发顶部被阳光照亮的炫目表现。</li>
</ol>
<p><strong>风景技巧</strong></p>
<ol>
<li> 在黄昏或清晨，尝试将白平衡设置为“阴影”或“阴天”，并使用负向曝光补偿。</li>
<li> 优化校准设置为“风景”。</li>
</ol>
<p><strong>其他</strong></p>
<ol>
<li>拍摄宠物时，尝试将相机置于宠物视线高度。</li>
<li>拍摄食物时，尝试将视角放低，并使用微距。</li>
<li>尝试黑白照片，去掉鲜艳颜色的干扰元素，使照片表现出娴静淡定的感觉。</li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://www.phpblog.cn/archives/456/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>玉渊潭樱花节</title>
		<link>http://www.phpblog.cn/archives/443</link>
		<comments>http://www.phpblog.cn/archives/443#comments</comments>
		<pubDate>Sat, 03 Apr 2010 15:57:09 +0000</pubDate>
		<dc:creator>shishirui</dc:creator>
				<category><![CDATA[life]]></category>

		<guid isPermaLink="false">http://www.phpblog.cn/?p=443</guid>
		<description><![CDATA[一年一度的玉渊潭樱花节又来到了，虽然现在樱花开的还不是很多，但因为正好放假，我也去玉渊潭转了一下。当然，既然去了，肯定要拍点照片的，这是今天的部分成果：











在玩的过程中，正好看到有摄影爱好者组织的人像外拍活动：



]]></description>
			<content:encoded><![CDATA[<p>一年一度的玉渊潭樱花节又来到了，虽然现在樱花开的还不是很多，但因为正好放假，我也去玉渊潭转了一下。当然，既然去了，肯定要拍点照片的，这是今天的部分成果：</p>
<p><a href="http://www.phpblog.cn/wp-content/uploads/2010/04/DSC_0100.jpg" rel="lightbox[443]"><img class="alignnone size-thumbnail wp-image-429" title="DSC_0100" src="http://www.phpblog.cn/wp-content/uploads/2010/04/DSC_0100-500x331.jpg" alt="" width="500" height="331" /></a></p>
<p><a href="http://www.phpblog.cn/wp-content/uploads/2010/04/DSC_0416.jpg" rel="lightbox[443]"><img class="alignnone size-thumbnail wp-image-442" title="DSC_0416" src="http://www.phpblog.cn/wp-content/uploads/2010/04/DSC_0416-500x331.jpg" alt="" width="500" height="331" /></a></p>
<p><a href="http://www.phpblog.cn/wp-content/uploads/2010/04/DSC_0415.jpg" rel="lightbox[443]"><img class="alignnone size-thumbnail wp-image-441" title="DSC_0415" src="http://www.phpblog.cn/wp-content/uploads/2010/04/DSC_0415-500x331.jpg" alt="" width="500" height="331" /></a></p>
<p><a href="http://www.phpblog.cn/wp-content/uploads/2010/04/DSC_0414.jpg" rel="lightbox[443]"><img class="alignnone size-thumbnail wp-image-440" title="DSC_0414" src="http://www.phpblog.cn/wp-content/uploads/2010/04/DSC_0414-500x331.jpg" alt="" width="500" height="331" /></a></p>
<p><a href="http://www.phpblog.cn/wp-content/uploads/2010/04/DSC_0413.jpg" rel="lightbox[443]"><img class="alignnone size-thumbnail wp-image-439" title="DSC_0413" src="http://www.phpblog.cn/wp-content/uploads/2010/04/DSC_0413-500x331.jpg" alt="" width="500" height="331" /></a></p>
<p><a href="http://www.phpblog.cn/wp-content/uploads/2010/04/DSC_0402.jpg" rel="lightbox[443]"><img class="alignnone size-thumbnail wp-image-438" title="DSC_0402" src="http://www.phpblog.cn/wp-content/uploads/2010/04/DSC_0402-500x331.jpg" alt="" width="500" height="331" /></a></p>
<p><a href="http://www.phpblog.cn/wp-content/uploads/2010/04/DSC_0400.jpg" rel="lightbox[443]"><img class="alignnone size-thumbnail wp-image-437" title="DSC_0400" src="http://www.phpblog.cn/wp-content/uploads/2010/04/DSC_0400-500x331.jpg" alt="" width="500" height="331" /></a></p>
<p><a href="http://www.phpblog.cn/wp-content/uploads/2010/04/DSC_0402.jpg" rel="lightbox[443]"><img class="alignnone size-thumbnail wp-image-438" title="DSC_0402" src="http://www.phpblog.cn/wp-content/uploads/2010/04/DSC_0402-500x331.jpg" alt="" width="500" height="331" /></a></p>
<p><a href="http://www.phpblog.cn/wp-content/uploads/2010/04/DSC_0162.jpg" rel="lightbox[443]"><img class="alignnone size-thumbnail wp-image-436" title="DSC_0162" src="http://www.phpblog.cn/wp-content/uploads/2010/04/DSC_0162-500x331.jpg" alt="" width="500" height="331" /></a></p>
<p><a href="http://www.phpblog.cn/wp-content/uploads/2010/04/DSC_0160.jpg" rel="lightbox[443]"><img class="alignnone size-thumbnail wp-image-435" title="DSC_0160" src="http://www.phpblog.cn/wp-content/uploads/2010/04/DSC_0160-500x331.jpg" alt="" width="500" height="331" /></a></p>
<p><a href="http://www.phpblog.cn/wp-content/uploads/2010/04/DSC_0155.jpg" rel="lightbox[443]"><img class="alignnone size-thumbnail wp-image-434" title="DSC_0155" src="http://www.phpblog.cn/wp-content/uploads/2010/04/DSC_0155-500x331.jpg" alt="" width="500" height="331" /></a></p>
<p>在玩的过程中，正好看到有摄影爱好者组织的人像外拍活动：</p>
<p><a href="http://www.phpblog.cn/wp-content/uploads/2010/04/DSC_0135.jpg" rel="lightbox[443]"><img class="alignnone size-thumbnail wp-image-432" title="DSC_0135" src="http://www.phpblog.cn/wp-content/uploads/2010/04/DSC_0135-331x500.jpg" alt="" width="331" height="500" /></a></p>
<p><a href="http://www.phpblog.cn/wp-content/uploads/2010/04/DSC_0127.jpg" rel="lightbox[443]"><img class="alignnone size-thumbnail wp-image-431" title="DSC_0127" src="http://www.phpblog.cn/wp-content/uploads/2010/04/DSC_0127-500x331.jpg" alt="" width="500" height="331" /></a></p>
<p><a href="http://www.phpblog.cn/wp-content/uploads/2010/04/DSC_0108.jpg" rel="lightbox[443]"><img class="alignnone size-thumbnail wp-image-430" title="DSC_0108" src="http://www.phpblog.cn/wp-content/uploads/2010/04/DSC_0108-500x331.jpg" alt="" width="500" height="331" /></a></p>
<p><a href="http://www.phpblog.cn/wp-content/uploads/2010/04/DSC_0072.jpg" rel="lightbox[443]"><img class="alignnone size-thumbnail wp-image-428" title="DSC_0072" src="http://www.phpblog.cn/wp-content/uploads/2010/04/DSC_0072-500x331.jpg" alt="" width="500" height="331" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.phpblog.cn/archives/443/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[转]先吃得苦中苦再说，能不能成为人上人那是以后的事情</title>
		<link>http://www.phpblog.cn/archives/423</link>
		<comments>http://www.phpblog.cn/archives/423#comments</comments>
		<pubDate>Thu, 25 Mar 2010 14:23:38 +0000</pubDate>
		<dc:creator>shishirui</dc:creator>
				<category><![CDATA[life]]></category>

		<guid isPermaLink="false">http://www.phpblog.cn/?p=423</guid>
		<description><![CDATA[这是我以前的同事机器马最近写的一篇文章，说的非常好，分享给大家。
一个很要好的朋友，今年刚研究生毕业，进入了一家不错的大公司，拿了一份相当不错起薪。今天打电话给我，问我说：“很郁闷，这家公司不给解决户口的问题。……还有，好头痛买房的问题，你是怎么考虑这个事情的”。
这个事情让我挺诧异的，说实话，我还真的没有为这个事情真正发愁和琢磨过。虽然偶尔也有考虑到这些事情，但是这些毕竟离我们太遥远，与其纠结这个无解的事情，不如把精力放到工作上。
当然，如果说有这个买房的条件，有申请拿户口的机会，那么考虑这些事情，并作出必要的努力，当然是应该。在这个过程中遇到困难，由此产生出郁闷和抱怨也正常。
但是像我这位朋友，家里没有这种条件。也就是说压根就没有这样的机会，而去为此事情发愁，我觉得就完全没有必要。作为一个刚毕业的学生，不管你基础多么扎实，知识多么丰富。你的实际工作经验，以及在自己领域里的人脉、影响力都还远远不够。不把精力花在如何提高自己，建立起自己的事业上，而去考虑和发愁这些没有边的事情，是完全不合适的。
其实，我挺诧异他问我这些问题的；同样，他也很诧异我竟然不怎么考虑这些问题。他说他身边全都是在讨论这些事情的人。
我想也许是大家的起点不一样吧，我是草根出生，我身边的大多数朋友也都是草根出生。没有很厚的家底，没有很高的文凭，咱们光脚不怕穿鞋的，先吃得苦中苦再说，能不能成为人上人那是以后的事情。
原文链接：http://blog.sina.com.cn/s/blog_60a610850100iezp.html]]></description>
			<content:encoded><![CDATA[<p>这是我以前的同事机器马最近写的一篇文章，说的非常好，分享给大家。</p>
<blockquote><p>一个很要好的朋友，今年刚研究生毕业，进入了一家不错的大公司，拿了一份相当不错起薪。今天打电话给我，问我说：“很郁闷，这家公司不给解决户口的问题。……还有，好头痛买房的问题，你是怎么考虑这个事情的”。</p>
<p>这个事情让我挺诧异的，说实话，我还真的没有为这个事情真正发愁和琢磨过。虽然偶尔也有考虑到这些事情，但是这些毕竟离我们太遥远，与其纠结这个无解的事情，不如把精力放到工作上。</p>
<p>当然，如果说有这个买房的条件，有申请拿户口的机会，那么考虑这些事情，并作出必要的努力，当然是应该。在这个过程中遇到困难，由此产生出郁闷和抱怨也正常。</p>
<p>但是像我这位朋友，家里没有这种条件。也就是说压根就没有这样的机会，而去为此事情发愁，我觉得就完全没有必要。作为一个刚毕业的学生，不管你基础多么扎实，知识多么丰富。你的实际工作经验，以及在自己领域里的人脉、影响力都还远远不够。不把精力花在如何提高自己，建立起自己的事业上，而去考虑和发愁这些没有边的事情，是完全不合适的。</p>
<p>其实，我挺诧异他问我这些问题的；同样，他也很诧异我竟然不怎么考虑这些问题。他说他身边全都是在讨论这些事情的人。</p>
<p>我想也许是大家的起点不一样吧，我是草根出生，我身边的大多数朋友也都是草根出生。没有很厚的家底，没有很高的文凭，咱们光脚不怕穿鞋的，先吃得苦中苦再说，能不能成为人上人那是以后的事情。</p></blockquote>
<p>原文链接：<a href="http://blog.sina.com.cn/s/blog_60a610850100iezp.html" target="_blank">http://blog.sina.com.cn/s/blog_60a610850100iezp.html</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.phpblog.cn/archives/423/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>《Linux操作系统之奥秘》</title>
		<link>http://www.phpblog.cn/archives/416</link>
		<comments>http://www.phpblog.cn/archives/416#comments</comments>
		<pubDate>Thu, 25 Mar 2010 12:34:45 +0000</pubDate>
		<dc:creator>shishirui</dc:creator>
				<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.phpblog.cn/?p=416</guid>
		<description><![CDATA[
前段时间看到同事买了此书，我当时随意翻了一会儿，也挺有兴趣，于是也买了一本，最近看了一些，觉得此书挺不错，分享给大家，感兴趣的朋友可以看看。
PS：此书讲的比较深奥，需要读者有一定的Linux基础，总之我看的是云里雾里的。
豆瓣地址：http://book.douban.com/subject/3078298/]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-417" title="s3414472" src="http://www.phpblog.cn/wp-content/uploads/2010/03/s3414472.jpg" alt="" width="200" height="248" /></p>
<p>前段时间看到同事买了此书，我当时随意翻了一会儿，也挺有兴趣，于是也买了一本，最近看了一些，觉得此书挺不错，分享给大家，感兴趣的朋友可以看看。</p>
<p>PS：此书讲的比较深奥，需要读者有一定的Linux基础，总之我看的是云里雾里的。</p>
<p>豆瓣地址：<a href="http://book.douban.com/subject/3078298/" target="_blank">http://book.douban.com/subject/3078298/</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.phpblog.cn/archives/416/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>周末天津随拍</title>
		<link>http://www.phpblog.cn/archives/351</link>
		<comments>http://www.phpblog.cn/archives/351#comments</comments>
		<pubDate>Mon, 15 Mar 2010 13:28:36 +0000</pubDate>
		<dc:creator>shishirui</dc:creator>
				<category><![CDATA[life]]></category>

		<guid isPermaLink="false">http://www.phpblog.cn/?p=351</guid>
		<description><![CDATA[
海河

滨江道

解放桥

火车站旁边的大钟]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.phpblog.cn/wp-content/uploads/2010/03/DSC_0190.jpg" rel="lightbox[351]"><img class="size-thumbnail wp-image-387 alignnone" title="DSC_0190" src="http://www.phpblog.cn/wp-content/uploads/2010/03/DSC_0190-500x331.jpg" alt="" width="500" height="331" /></a></p>
<p>海河</p>
<p><a href="http://www.phpblog.cn/wp-content/uploads/2010/03/DSC_0256.jpg" rel="lightbox[351]"><img class="size-thumbnail wp-image-388 alignnone" title="DSC_0256" src="http://www.phpblog.cn/wp-content/uploads/2010/03/DSC_0256-500x331.jpg" alt="" width="500" height="331" /></a></p>
<p>滨江道</p>
<p><a href="http://www.phpblog.cn/wp-content/uploads/2010/03/DSC_0157.jpg" rel="lightbox[351]"><img class="size-thumbnail wp-image-385 alignnone" title="DSC_0157" src="http://www.phpblog.cn/wp-content/uploads/2010/03/DSC_0157-500x331.jpg" alt="" width="500" height="331" /></a></p>
<p>解放桥</p>
<p><a href="http://www.phpblog.cn/wp-content/uploads/2010/03/DSC_0175.jpg" rel="lightbox[351]"><img class="size-thumbnail wp-image-386 alignnone" title="DSC_0175" src="http://www.phpblog.cn/wp-content/uploads/2010/03/DSC_0175-500x331.jpg" alt="" width="500" height="331" /></a></p>
<p>火车站旁边的大钟</p>]]></content:encoded>
			<wfw:commentRss>http://www.phpblog.cn/archives/351/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Javascript常用优化方法</title>
		<link>http://www.phpblog.cn/archives/328</link>
		<comments>http://www.phpblog.cn/archives/328#comments</comments>
		<pubDate>Sat, 06 Mar 2010 04:07:28 +0000</pubDate>
		<dc:creator>shishirui</dc:creator>
				<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.phpblog.cn/?p=328</guid>
		<description><![CDATA[对于Javascript的代码速度，我们一般可以将它分为下载时间和执行速度两部分，所以，要做优化的话，我们可以从这两部分来入手。
一、优化代码下载速度

在单个TCP-IP包中，最多能放入的字节数是1160，所以每个js文件的字节大小，最好不要超过这个数，以便获得最优的下载时间。
合并js文件。如果一个页面中存在加载多个js外部文件的情况，则最好将它们合并为一个，这样可以有效减少HTTP请求数，从而节省下载时间。
为外部js使用不同的域名。我们知道，浏览器在下载页面时，对于同一个域名下的最大并发数是一定的（例如IE6/7在HTTP1.0下是2个，而Firefox3是6个），所以，假如前端页面的域名是www.phpblog.cn的话，外部js文件的域名可以改为js.phpblog.cn，这样做就可以使浏览器在js.phpblog.cn域名上也使用最大并发数下载，从而加快下载速度。（以上只是拿我的域名作为例子，目前我的站点还没有这样做）
浏览器缓存。在页面中引用的外部js文件是可以被浏览器缓存的，缓存时间由服务器发给客户端代理头部中的Last-modified、Etag或者Expires决定，所以缓存的时间长短，也成了优化速度的一个方面。我建议将js的缓存时间设置的较长，而如果一旦更改了js文件后，可以在引用url的js文件后加个自定义参数，来强迫客户端重新下载js。例如：
&#60;script src="http://js.phpblog.cn/jquery.js?var=2.0" type="text/javascript"&#62;&#60;/script&#62;

删除代码中的注释、制表符、空格、换行，这样做可以有效减小 js文件的体积。我们可以使用现成的工具来做这件事情，例如我之前介绍过的Google  Closure Compiler。
替换变量名，将较长的变量名替换为较短的变量名，以减少js文件体积。这方面，用Google Closure Compiler也可以完成。
替换布尔值。我们知道，对于比较来说，true等于1，false等于0。因此，在脚本中的true、false都可以用1和0来代替，这样可以减少几个字节。
使用数组和对象字面量。例如，定义数组时，使用var o = new []而不使用var o = new Array；定义对象时，使用var o = {}而不使用var o = new Object，它们是完全等价的。

二、优化代码执行时间

关注变量范围。在js中，变量范围是很重要的。我们可以认为变量的范围在浏览器中是一个树状层级，查找一个变量时，浏览器首先会在最近的范围中查找，如果没有找到，则会到它的父范围中查找，如果还没有找到，则再去父父的范围中查找，直到查找到window对象范围（浏览器默认的全局变量属于window对象）。这就说明，让浏览器最快的找到变量，就可以加快代码的执行速度。在js中，使用var定义的变量为局部范围变量，而不使用var定义的变量属于全局范围变量，所以，如果我们在某个方法中用到的变量，一定要将它定义成局部变量，这样就不会使浏览器一直找到window对象才获得该变量。和变量范围有关的另一个优化技巧就是，不使用with语句。因为with语句会创建另一个范围，增加了不必要的查找。
 反转循环。在使用for循环时，我们经常这样用：
for(i=0; i&#60;100; i++) {}
但是，你需要知道，将循环反转后，它的速度将更快：
for(i=100; i&#62;=0; i--) {}
这是因为，使用常数0来做为判断依据速度更快。当然，使用while循环也可以反转（变换成do..while），具体方法，我就在这里不再赘述。
 除了反转循环，我们还可以使用循环合并，来进一步提高循环的速度。关于循环合并的具体方法，我在这篇文章里已经介绍过。这里要特别说明的是，while循环也可以合并，方法和反转循环一样，也是使用do...while来替。
使用js的内置方法。例如，我们要计算一个数的阶乘，假如你不知道Math对象有个pow()方法的话，你很可能会自己写一个阶乘计算函数，但是要知道，这样做的效率是远远不如直接调用内置方法Math.pow()的，因为内置方法是用C++或C语言编译过的，速度要远远高于解释运行的js。
字符串连接优化。使用"+"来连接字符串的效率是很差的，尤其表现在一次连接多个字符串时，例如：
var s = "a" + "b" + "c" + "d";
因为此时js内部会进行多次连接操作，从而导致效率的下降。为了避免这个问题，我们可以使用Array.join()方法来代替：
var a = ["a", "b", "c", "d"];
var s = a.join();

存储常用的值。在js中，访问某个对象的属性，从效率上来说，都是非常昂贵的操作。所以可以将多次用到的值存储到一个变量里。例如，下面这个代码速度较慢：
o1.style.left = document.body.clientWidth;
o2.style.left = document.body.clientWidth;
而下面的代码速度较快：
var left [...]]]></description>
			<content:encoded><![CDATA[<p>对于Javascript的代码速度，我们一般可以将它分为下载时间和执行速度两部分，所以，要做优化的话，我们可以从这两部分来入手。</p>
<p>一、优化代码下载速度</p>
<ol>
<li>在单个TCP-IP包中，最多能放入的字节数是1160，所以每个js文件的字节大小，最好不要超过这个数，以便获得最优的下载时间。</li>
<li>合并js文件。如果一个页面中存在加载多个js外部文件的情况，则最好将它们合并为一个，这样可以有效减少HTTP请求数，从而节省下载时间。</li>
<li>为外部js使用不同的域名。我们知道，浏览器在下载页面时，对于同一个域名下的最大并发数是一定的（例如IE6/7在HTTP1.0下是2个，而Firefox3是6个），所以，假如前端页面的域名是www.phpblog.cn的话，外部js文件的域名可以改为js.phpblog.cn，这样做就可以使浏览器在js.phpblog.cn域名上也使用最大并发数下载，从而加快下载速度。（以上只是拿我的域名作为例子，目前我的站点还没有这样做）</li>
<li>浏览器缓存。在页面中引用的外部js文件是可以被浏览器缓存的，缓存时间由服务器发给客户端代理头部中的Last-modified、Etag或者Expires决定，所以缓存的时间长短，也成了优化速度的一个方面。我建议将js的缓存时间设置的较长，而如果一旦更改了js文件后，可以在引用url的js文件后加个自定义参数，来强迫客户端重新下载js。例如：<br />
<blockquote><p>&lt;script src="http://js.phpblog.cn/jquery.js?var=2.0" type="text/javascript"&gt;&lt;/script&gt;</p></blockquote>
</li>
<li>删除代码中的注释、制表符、空格、换行，这样做可以有效减小 js文件的体积。我们可以使用现成的工具来做这件事情，例如我之前介绍过的<a href="../archives/242" target="_blank">Google  Closure Compiler</a>。</li>
<li>替换变量名，将较长的变量名替换为较短的变量名，以减少js文件体积。这方面，用<a href="../archives/242" target="_blank">Google Closure Compiler</a>也可以完成。</li>
<li>替换布尔值。我们知道，对于比较来说，true等于1，false等于0。因此，在脚本中的true、false都可以用1和0来代替，这样可以减少几个字节。</li>
<li>使用数组和对象字面量。例如，定义数组时，使用var o = new []而不使用var o = new Array；定义对象时，使用var o = {}而不使用var o = new Object，它们是完全等价的。</li>
</ol>
<p>二、优化代码执行时间</p>
<ol>
<li>关注变量范围。在js中，变量范围是很重要的。我们可以认为变量的范围在浏览器中是一个树状层级，查找一个变量时，浏览器首先会在最近的范围中查找，如果没有找到，则会到它的父范围中查找，如果还没有找到，则再去父父的范围中查找，直到查找到window对象范围（浏览器默认的全局变量属于window对象）。这就说明，让浏览器最快的找到变量，就可以加快代码的执行速度。在js中，使用var定义的变量为局部范围变量，而不使用var定义的变量属于全局范围变量，所以，如果我们在某个方法中用到的变量，一定要将它定义成局部变量，这样就不会使浏览器一直找到window对象才获得该变量。和变量范围有关的另一个优化技巧就是，不使用with语句。因为with语句会创建另一个范围，增加了不必要的查找。</li>
<li> 反转循环。在使用for循环时，我们经常这样用：<br />
<blockquote><p>for(i=0; i&lt;100; i++) {}</p></blockquote>
<p>但是，你需要知道，将循环反转后，它的速度将更快：</p>
<blockquote><p>for(i=100; i&gt;=0; i--) {}</p></blockquote>
<p>这是因为，使用常数0来做为判断依据速度更快。当然，使用while循环也可以反转（变换成do..while），具体方法，我就在这里不再赘述。</li>
<li> 除了反转循环，我们还可以使用循环合并，来进一步提高循环的速度。关于循环合并的具体方法，我在<a href="http://www.phpblog.cn/archives/324" target="_blank">这篇文章</a>里已经介绍过。这里要特别说明的是，while循环也可以合并，方法和反转循环一样，也是使用do...while来替。</li>
<li>使用js的内置方法。例如，我们要计算一个数的阶乘，假如你不知道Math对象有个pow()方法的话，你很可能会自己写一个阶乘计算函数，但是要知道，这样做的效率是远远不如直接调用内置方法Math.pow()的，因为内置方法是用C++或C语言编译过的，速度要远远高于解释运行的js。</li>
<li>字符串连接优化。使用"+"来连接字符串的效率是很差的，尤其表现在一次连接多个字符串时，例如：<br />
<blockquote><p>var s = "a" + "b" + "c" + "d";</p></blockquote>
<p>因为此时js内部会进行多次连接操作，从而导致效率的下降。为了避免这个问题，我们可以使用Array.join()方法来代替：</p>
<blockquote><p>var a = ["a", "b", "c", "d"];<br />
var s = a.join();</p></blockquote>
</li>
<li>存储常用的值。在js中，访问某个对象的属性，从效率上来说，都是非常昂贵的操作。所以可以将多次用到的值存储到一个变量里。例如，下面这个代码速度较慢：<br />
<blockquote><p>o1.style.left = document.body.clientWidth;<br />
o2.style.left = document.body.clientWidth;</p></blockquote>
<p>而下面的代码速度较快：</p>
<blockquote><p>var left = document.body.clientWidth;<br />
o1.style.left = left;<br />
o2.style.left = left;</p></blockquote>
</li>
<li>在js中，脚本中的语句越少，执行速度越快。基于这个原则，我们可以知道，使用一个var来定义多个变量，要快于多个var定义。例如：<br />
<blockquote><p>var a = 1, b = 2, c = 3;</p></blockquote>
<p>要快于：</p>
<blockquote><p>var a = 1;<br />
var b = 2;<br />
var c = 3;</p></blockquote>
<p>同样，以下的代码：</p>
<blockquote><p>var s = a[i++];</p></blockquote>
<p>要快于：</p>
<blockquote><p>var s = a[i];<br />
i++;</p></blockquote>
</li>
<li>节约使用DOM。在用js改变页面上任何一个元素的样式时（或者增加删除元素），都会导致浏览器重新渲染页面，这个开销是不小的。因此，在连续多次操作DOM时，我们可以先将所有变化保存到DOM碎片（fragment）中，然后再一次性操作页面DOM。例如：<br />
<blockquote><p>var arrText=["1","2","3","4","5","6","7","8","9","10"];<br />
var oFrag=document.createDocumentFragment();<br />
for(var i=0;i<br />
{<br />
var op=document.createElement("P");<br />
var oText=document.createTextNode(arrText[i]);<br />
op.appendChild(oText);<br />
oFrag.appendChild(op);</p>
<p>}<br />
document.body.appendChild(oFrag);</p></blockquote>
</li>
</ol>
<p>以上这些，只是我知道的一些优化方法，当然，js中的优化方法肯定不止这一些，我只能是抛砖引玉，更多的方法，还需要大家一起补充。</p>
<p>转载请注明出处：http://www.phpblog.cn/archives/328</p>]]></content:encoded>
			<wfw:commentRss>http://www.phpblog.cn/archives/328/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用for循环合并提高效率</title>
		<link>http://www.phpblog.cn/archives/324</link>
		<comments>http://www.phpblog.cn/archives/324#comments</comments>
		<pubDate>Sun, 28 Feb 2010 04:35:47 +0000</pubDate>
		<dc:creator>shishirui</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.phpblog.cn/?p=324</guid>
		<description><![CDATA[在使用大量次的for循环时，往往由于循环次数较多而严重影响程序执行效率，这时，我们可以使用循环合并来解决这个问题。
首先看一个普通的for循环，这个循环用于计算50000000次e的指数。
&#60;?php
for ($i = 0; $i &#60; 50000000; $i++) {
exp(12);
}
我们看一下执行时间：
$ time php for.php
real    0m49.217s
user    0m32.522s
sys     0m0.280s
可以看到，总共需要49s。这时，我们对for循环做一点改动：
&#60;?php
for ($i = 0; $i &#60; 50000000; $i++) {
exp(12);
$i++;
exp(12);
$i++;
exp(12);
$i++;
exp(12);
$i++;
exp(12);
}
这样改动后，exp()函数依然被执行了50000000次，但for只会循环50000000 / 5 = 10000000 次。这时，再来看一下执行时间：
$ time php for.php
real    0m28.755s
user    0m23.953s
sys     0m0.204s
可以看到，现在只需要28s，效率提高了大约42%，还是比较明显的。]]></description>
			<content:encoded><![CDATA[<p>在使用大量次的for循环时，往往由于循环次数较多而严重影响程序执行效率，这时，我们可以使用循环合并来解决这个问题。</p>
<p>首先看一个普通的for循环，这个循环用于计算50000000次e的指数。</p>
<blockquote><p>&lt;?php<br />
for ($i = 0; $i &lt; 50000000; $i++) {<br />
exp(12);<br />
}</p></blockquote>
<p>我们看一下执行时间：</p>
<blockquote><p>$ time php for.php<br />
real    0m49.217s<br />
user    0m32.522s<br />
sys     0m0.280s</p></blockquote>
<p>可以看到，总共需要49s。这时，我们对for循环做一点改动：</p>
<blockquote><p>&lt;?php<br />
for ($i = 0; $i &lt; 50000000; $i++) {<br />
exp(12);<br />
$i++;<br />
exp(12);<br />
$i++;<br />
exp(12);<br />
$i++;<br />
exp(12);<br />
$i++;<br />
exp(12);<br />
}</p></blockquote>
<p>这样改动后，exp()函数依然被执行了50000000次，但for只会循环50000000 / 5 = 10000000 次。这时，再来看一下执行时间：</p>
<blockquote><p>$ time php for.php<br />
real    0m28.755s<br />
user    0m23.953s<br />
sys     0m0.204s</p></blockquote>
<p>可以看到，现在只需要28s，效率提高了大约42%，还是比较明显的。</p>]]></content:encoded>
			<wfw:commentRss>http://www.phpblog.cn/archives/324/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
