﻿
<?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>好易阁&#124;免费杀毒软件&#124;Web技术 &#187; 网页设计</title>
	<atom:link href="http://www.helloyi.cn/index.php/tag/websing/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.helloyi.cn</link>
	<description></description>
	<lastBuildDate>Fri, 20 Aug 2010 11:00:00 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.3</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>资深专家对于学好PHP的十点建议</title>
		<link>http://www.helloyi.cn/index.php/2009/08/14/expert-to-study-php-10-advise/</link>
		<comments>http://www.helloyi.cn/index.php/2009/08/14/expert-to-study-php-10-advise/#comments</comments>
		<pubDate>Fri, 14 Aug 2009 07:57:49 +0000</pubDate>
		<dc:creator>好易阁</dc:creator>
				<category><![CDATA[WEB编程技术]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[网络知识]]></category>
		<category><![CDATA[网页设计]]></category>

		<guid isPermaLink="false">http://www.helloyi.cn/?p=2863</guid>
		<description><![CDATA[1. 在合适的时候使用PHP &#8211; Rasmus Lerdorf
没有谁比PHP的创建者Rasmus Lerdorf明白PHP用在什么地方是更合理的， 他于1995年发布了PHP这门语言，从那时起，PHP就像燎原之火，烧遍了整个开发阵营，改变了互联网的世界。 可是，Rasmus并不是因此而创建PHP的。PHP是为了解决web开发者的实际问题而诞生的。
和许多开源项目一样，PHP变得流行，流行的动机并不能用正常的哲学来进行解释，甚至流行得有些孤芳自赏。它完全可以作为一个案例，一个解决各种web问题的工具需求所引起的案例，因此当PHP刚出现的时候，这种工具需求全部聚焦到PHP的身上。
但是，你不能奢望PHP可以解决所有问题。Lerdorf是第一个承认PHP只是一种工具的人，并且PHP也有很多力所不能及的情况。
根据工作的不同来选择合适的工具。我跑了很多家公司，为了说服他们部署和使用PHP，但是这并不意味着PHP对所有问题都适用。它只是可以一个解决大部分问题的front－end脚步语言。
作为一个web开发者，尝试用PHP解决所有问题是不科学的，同时也会浪费你的时间。当PHP玩不转的时候，不要犹豫，试用一下其他的语言吧。
2. 使用多表存储提高规模伸缩性 &#8211; Matt Mullenweg
没有人愿意质疑Matt Mullenweg在PHP方面的权威性，他开发了这个星球上最流行的blog系统,(依靠一个强大的社区力量支持)：Wordpress. 创建Wordpress以后，Matt和他的团队启动了Wordpress.com平台，一个基于Wordpress MU的免费blog站点。现在，Wordpress.com已经拥有大约400万用户， 这些用户每天提供超过 140,000篇的日志。 (要查看更多Wordpress.com的统计情况，请点击这里.)
如果有人知道如何让网站的规模伸缩自如，这个人一定是Matt Mullenweg。2006年的时候Matt对Wordpress的数据结构进行了前瞻性的改进，并且解释了为什么Wordpress MU对每个blog使用独立的MYSQL表格， 而不是把所有的blog数据都塞进一个巨大的表格。
我们测试过这个方法，但是发现如果要扩展它的伸缩性，代价太高。如果用一个整体的数据结构，在大流量面前，你将会面临服务器硬件的问题。在MU里面。用户们都被分布到独立的表格当中，并且可以轻易地组织起来。举个例子，WordPress.com把用户的数据分散存储到4096个数据库中，这些数据库可以分散大规模的数据访问，实现流量和压力分流。
数据表的可迁移性让代码（blog）可以运行得更快，并且让系统具备更强的伸缩性。依靠强大的缓存策略和灵活的数据库运用策略， Matt向人们展示了时下最流行的Facebook和Wordpress.com都可以在PHP下稳定运行，并且处理惊人的访问量。
3. 千万不要相信用户 &#8211; Dave Child
Dave Child是Added Bytes(previouslyilovejackdaniels.com) 网站的核心人物，这个网站以他出色的《cheat sheets for many programming languages》而闻名。 Dave为很多英国的公司服务，并且已经在编程世界里树立起相当的权威。
Dave为PHP开发者提供了很多深谋远虑的建议，并总结成了《writing secure code in PHP》：千万不要相信你的用户，他们甚至可能会伤害你。
有一条web开发的基本原则，我重复多少遍都觉得不够，那就是：千万不要相信你的用户，同时要假设你网站中的每个数据单元都是从用户那里收集来的恶意代码。很多时候，你必须用javascript在客户端检验表单提交过来的内容，如果你习惯了如此，那么，这是一个好习惯。如果安全性对你来说很重要，这就是最重要最需要学习的原则。
Dave目前正致力于为它的《Writing Secure PHP》系列书籍整理实例，书的最后他说:
最后，变得偏执一点吧。除非你认为你的站点永远不会受到攻击，否则就正视所有的问题，当问题真正发生的时候，你的情况会变得很糟。你需要把每个用户都看成会带来一场攻防站的黑客，想尽一切办法来保护站点的安全，同时想好相应问题的解决方案。
4. 多使用PHP缓存 &#8211; Ben Balbo
Ben Balbo开发了Site Point，一个为developers和designers提供指导的网站。他是墨尔本PHP开发和开源俱乐部的成员， 因此他对PHP有一定的了解，同时对PHP caching有一定的想法和经验。
如果你拥有一个访问量很大，但更新并不频繁的站点（比如blog，基于某种CMS），或许它需要进行一些改造，这些改造不会花费太多的时间，但是对性能有突出的贡献。 如果要为一个复杂／更新频率很快的站点建立缓存机制，过程可能会很曲折，但是好处也是显而易见的。
PHP缓存技术有很多种，Ben为我们推荐了如下一些:
缓存函数的运行结果
设置过期时间
缓存IE下载的文件
模板缓存技术
Cache_Lite
由于PHP作为动态语言的特性，缓存机制对于更新频率并不快的站点来说非常重要。
5. 使用IDE, Templates和Snippets加速PHP开发 &#8211; Chad Kieffer
当Chad [...]]]></description>
			<content:encoded><![CDATA[<p style="text-indent: 2em;"><strong><span style="color: #3366ff;">1. 在合适的时候使用<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a> &#8211; Rasmus Lerdorf</span></strong></p>
<p style="text-indent: 2em;">没有谁比<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>的创建者Rasmus Lerdorf明白<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>用在什么地方是更合理的， 他于1995年发布了<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>这门语言，从那时起，<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>就像燎原之火，烧遍了整个开发阵营，改变了互联网的世界。 可是，Rasmus并不是因此而创建<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>的。<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>是为了解决web开发者的实际问题而诞生的。</p>
<p style="text-indent: 2em;"><span id="more-2863"></span>和许多开源项目一样，<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>变得流行，流行的动机并不能用正常的哲学来进行解释，甚至流行得有些孤芳自赏。它完全可以作为一个案例，一个解决各种web问题的工具需求所引起的案例，因此当<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>刚出现的时候，这种工具需求全部聚焦到<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>的身上。</p>
<p style="text-indent: 2em;">但是，你不能奢望<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>可以解决所有问题。Lerdorf是第一个承认<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>只是一种工具的人，并且<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>也有很多力所不能及的情况。</p>
<p style="text-indent: 2em;">根据工作的不同来选择合适的工具。我跑了很多家公司，为了说服他们部署和使用<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>，但是这并不意味着<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>对所有问题都适用。它只是可以一个解决大部分问题的front－end脚步语言。</p>
<p style="text-indent: 2em;">作为一个web开发者，尝试用<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>解决所有问题是不科学的，同时也会浪费你的时间。当<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>玩不转的时候，不要犹豫，试用一下其他的语言吧。</p>
<p style="text-indent: 2em;"><strong><span style="color: #3366ff;">2. 使用多表存储提高规模伸缩性 &#8211; Matt Mullenweg</span></strong></p>
<p style="text-indent: 2em;">没有人愿意质疑Matt Mullenweg在<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>方面的权威性，他开发了这个星球上最流行的blog系统,(依靠一个强大的社区力量支持)：Wordpress. 创建Wordpress以后，Matt和他的团队启动了Wordpress.com平台，一个基于Wordpress MU的免费blog站点。现在，Wordpress.com已经拥有大约400万用户， 这些用户每天提供超过 140,000篇的日志。 (要查看更多Wordpress.com的统计情况，请点击这里.)</p>
<p style="text-indent: 2em;">如果有人知道如何让网站的规模伸缩自如，这个人一定是Matt Mullenweg。2006年的时候Matt对Wordpress的数据结构进行了前瞻性的改进，并且解释了为什么Wordpress MU对每个blog使用独立的MYSQL表格， 而不是把所有的blog数据都塞进一个巨大的表格。</p>
<p style="text-indent: 2em;">我们测试过这个方法，但是发现如果要扩展它的伸缩性，代价太高。如果用一个整体的数据结构，在大流量面前，你将会面临服务器硬件的问题。在MU里面。用户们都被分布到独立的表格当中，并且可以轻易地组织起来。举个例子，WordPress.com把用户的数据分散存储到4096个数据库中，这些数据库可以分散大规模的数据访问，实现流量和压力分流。</p>
<p style="text-indent: 2em;">数据表的可迁移性让代码（blog）可以运行得更快，并且让系统具备更强的伸缩性。依靠强大的缓存策略和灵活的数据库运用策略， Matt向人们展示了时下最流行的Facebook和Wordpress.com都可以在<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>下稳定运行，并且处理惊人的访问量。</p>
<p style="text-indent: 2em;"><strong><span style="color: #3366ff;">3. 千万不要相信用户 &#8211; Dave Child</span></strong></p>
<p style="text-indent: 2em;">Dave Child是Added Bytes(previouslyilovejackdaniels.com) 网站的核心人物，这个网站以他出色的《cheat sheets for many programming languages》而闻名。 Dave为很多英国的公司服务，并且已经在编程世界里树立起相当的权威。</p>
<p style="text-indent: 2em;">Dave为<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>开发者提供了很多深谋远虑的建议，并总结成了《writing secure code in <a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>》：千万不要相信你的用户，他们甚至可能会伤害你。</p>
<p style="text-indent: 2em;">有一条web开发的基本原则，我重复多少遍都觉得不够，那就是：千万不要相信你的用户，同时要假设你网站中的每个数据单元都是从用户那里收集来的恶意代码。很多时候，你必须用javascript在客户端检验表单提交过来的内容，如果你习惯了如此，那么，这是一个好习惯。如果安全性对你来说很重要，这就是最重要最需要学习的原则。</p>
<p style="text-indent: 2em;">Dave目前正致力于为它的《Writing Secure <a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>》系列书籍整理实例，书的最后他说:</p>
<p style="text-indent: 2em;">最后，变得偏执一点吧。除非你认为你的站点永远不会受到攻击，否则就正视所有的问题，当问题真正发生的时候，你的情况会变得很糟。你需要把每个用户都看成会带来一场攻防站的黑客，想尽一切办法来保护站点的安全，同时想好相应问题的解决方案。</p>
<p style="text-indent: 2em;"><strong><span style="color: #3366ff;">4. 多使用<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>缓存 &#8211; Ben Balbo</span></strong></p>
<p style="text-indent: 2em;">Ben Balbo开发了Site Point，一个为developers和designers提供指导的网站。他是墨尔本<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>开发和开源俱乐部的成员， 因此他对<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>有一定的了解，同时对<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a> caching有一定的想法和经验。</p>
<p style="text-indent: 2em;">如果你拥有一个访问量很大，但更新并不频繁的站点（比如blog，基于某种CMS），或许它需要进行一些改造，这些改造不会花费太多的时间，但是对性能有突出的贡献。 如果要为一个复杂／更新频率很快的站点建立缓存机制，过程可能会很曲折，但是好处也是显而易见的。</p>
<p style="text-indent: 2em;"><a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>缓存技术有很多种，Ben为我们推荐了如下一些:</p>
<p style="text-indent: 2em;">缓存函数的运行结果</p>
<p style="text-indent: 2em;">设置过期时间</p>
<p style="text-indent: 2em;">缓存IE下载的文件</p>
<p style="text-indent: 2em;">模板缓存技术</p>
<p style="text-indent: 2em;">Cache_Lite</p>
<p style="text-indent: 2em;">由于<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>作为动态语言的特性，缓存机制对于更新频率并不快的站点来说非常重要。</p>
<p style="text-indent: 2em;"><strong><span style="color: #3366ff;">5. 使用IDE, Templates和Snippets加速<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>开发 &#8211; Chad Kieffer</span></strong></p>
<p style="text-indent: 2em;">当Chad Kieffer从UI设计和数据库优化的工作中抽身出来的时候，他会在他的博客2 tablespoons上分享很多技术经验。由于Chad多方面的全面发展，他经常可以发现其他程序员不能发现的问题，并形成相关经验，尤其是他开发网站的方法。他参与了网站开发的各个环节，因此他的建议对于提高网站开发的大局观非常有用。</p>
<p style="text-indent: 2em;">Chad认为使用Eclipse PDT</p>
<p style="text-indent: 2em;">(Eclipse&#8217;s <a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a> development package) 这样的IDE，同时使用一些模板技术和开源项目可以有效地提高<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>的开发速度。</p>
<p style="text-indent: 2em;">紧凑的计划，长长的to do lists以及deadlines让开发人员非常苦闷。不过有些功能，比如Eclipse Templates，可以有效减少编码的时间和出错的几率。</p>
<p style="text-indent: 2em;">通常来说，任何项目都可以自动化，自动化程度越高，你完成项目的时间就越短。花时间来开发使用频率很高的框架和模板，将会节省你以后更多时间。同时，使用像Eclipse and the PDT package这样的IDE，你会发现效率得到明显提高，IDE可以自动闭合，补全分号并且可以在本地debug。</p>
<p style="text-indent: 2em;">Related posts:</p>
<p style="text-indent: 2em;">wordpress成功升级到2.3.2虽然tag对我来说没什么用，但是着眼于安全性，我还是升级了，从两年前的2.0.5升级到现在的2.3.2，着实需要一份勇气和决心，幸好在本地跑升级的时候没有出现任何问题，只是模板上的功能需要一些简单的修改。 线上的升级一切顺利，很多人会纳闷，你刚才不是还发post求助升级办法么？嗯，我已经找到了最好的工具，WordPress Automatic Upgrade plugin 这款wordpress的自动升级插件真正让你升级无忧，因为它会在升级之前为你备份所有的文件和数据，用起来也是“一路next”型，相信很适合那些不想为升级烦心的blogger们，不过有个问题，升级以后的export功能出现问题，提示找不到wp-config.<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">php</a>，不知道是普遍有此问题还是我blog的问题，遇到同样问题的朋友请给我留言，我来研究一下解决办法。（经过研究发现，原来是coolcode插件中访问路径的问题，只要取消此插件的激活，Export功能就可以正常使用了） &#8230;</p>
<p style="text-indent: 2em;">谁有从Wordpress2.0升级的经历今天下载了wordpress-2.3.2，本来想升级，但是发现版本跨越不小，数据结构变化貌似不小，升级比较麻烦，风险太大，所以暂时放弃，哪位朋友有从wordpress2.0升到2.3的经验，分享一下吧，感激不尽。 &#8230;</p>
<p style="text-indent: 2em;">翻译：《14个绝佳的站长工具》（下）原文：<a href="http://www.conversion-rate-experts.com/articles/understanding-your">http://www.conversion-rate-experts.com/articles/understanding-your</a>- visitors/ 此文是由Andrew(<a href="http://www.achome.cn/">http://www.achome.cn</a>)自主翻译的，如需转载请注明出处。用户是最好的宣传和销售人员，来听听他们是如何宣传的吧，Tell-a-Friend King—立即体验! 你是否拥有一个用户推荐的系统？一个可以让用户发信邀请朋友的系统。我们可以看到, 这些用户发的信里面包含“为什么用户在您的网站上消费”这个问题的答案。很多人花费大量的时间来进行自我定位和制定吸引人的广告词，但通过用户的推荐信，你就可以找到用户为什么青睐你的原因。 轻松收集用户反馈， Kampyle—立即体验! Kampyle可以让用户在你的网站上提交用户反馈（通过页面底部的一个小button），点击以后会弹出一个窗口让用户填写他们的意见和建议。站长们可以登录Kampyle的官网去查看和管理收集到的用户反馈，如果用户留下了email地址，站长们还可以轻易地通知用户，他们已经收到反馈并将进行相应的改进。&#8230;</p>
<p style="text-indent: 2em;"><strong><span style="color: #3366ff;">6. 利用好<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>的过滤函数 &#8211; Joey Sochacki</span></strong></p>
<p style="text-indent: 2em;">或许Joey Sochacki并不像Matt Mullenweg那样有名 ，但他也是一个经验丰富的开发者，并且通过他的博客Devolio分享了很多技术经验</p>
<p style="text-indent: 2em;">Joey发现在编写<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">php</a>代码的过程中有很多地方需要进行过滤，但却并没有太多的coder关注<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">php</a>的内置过滤函数。</p>
<p style="text-indent: 2em;">过滤数据是我们经常需要做的事情，但是很多功能丰富的<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>内置过滤函数却不为人知。使用类似filter_* 的<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>内置函数，我们几乎可以处理所有的过滤任务，包括数据类型验证／URL／email和IP地址验证／特殊字符处理等等。</p>
<p style="text-indent: 2em;">过滤是一件复杂的事情，但是我相信joey的发现会给你很多启发，让你认识到<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>强大的过滤功能。</p>
<p style="text-indent: 2em;"><strong><span style="color: #3366ff;">7. 使用<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>框架 &#8211; Josh Sharp</span></strong></p>
<p style="text-indent: 2em;">对于是否应该使用Zend,CakePHP,Code Igniter, 或者其他<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>框架，一直存在着很多争议，但是在web开发者的心中，他们有自己衡量的标准。</p>
<p style="text-indent: 2em;">Josh Sharp自己创建了一家提供面包和黄油服务的网站，因此他对于使用<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>框架来开发网站有一定的经验。他认为使用一个<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>框架来进行项目开发（use a <a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a> framework），可以有效地节省时间，并且减少出错的几率。为什么？因为他觉得<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>实在是太好上手了。</p>
<p style="text-indent: 2em;"><a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>的易于使用有时候也有缺陷，因为并不严格的语法，经常会导致很多错误代码的诞生。但如果使用一个<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>框架，出错的几率就会大大减少。</p>
<p style="text-indent: 2em;"><a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>框架可以让你的代码结构更加规范，并且节省大量时间，你可以阅读《benefit of using a <a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a> framework》来获得更多相关信息。</p>
<p style="text-indent: 2em;"><strong><span style="color: #3366ff;">8. 不要使用<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>框架 &#8211; Rasmus Lerdorf</span></strong></p>
<p style="text-indent: 2em;">与Josh的观点恰恰相反， <a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>的鼻祖Rasmus Lerdorf却认为最好不要使用<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>框架，为什么？因为不基于框架的<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>性能更好。</p>
<p style="text-indent: 2em;">Rasmus在Drupalcon 2008的演讲上，用“Hello World”的例子来对比了一些框架<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>和简单<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>之间的性能，结果显示框架<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>的性能要远远落后。</p>
<p style="text-indent: 2em;"><strong><span style="color: #3366ff;">9. 使用批处理 &#8211; Jack D. Herrington</span></strong></p>
<p style="text-indent: 2em;">Jack Herrington对<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>世界并不陌生， 并且为大名鼎鼎的IBM developerWorks贡献过超过30篇的专搞， 同时出版过《<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a> Hacks》的书，因此他是一个真正的专家。</p>
<p style="text-indent: 2em;">Herrington 推荐使用批处理和Cron来代替那些可以运行在后台的程序脚步，web用户并不愿意在线等待你的处理过程，所以有些事情更适合放到后台来处理。</p>
<p style="text-indent: 2em;">诚然，在某些情况下，这有点大材小用了，但是你可以清楚地看到，使用Cron, MySQL, <a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>面向对象的方法以及Pear::DB这些便捷的工具来创建一个批处理工具并不是一件复杂的事情。</p>
<p style="text-indent: 2em;">Jack认为使用cron, <a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>和MySQL在后台处理一些任务，比起多进程的业务逻辑要划算得多。</p>
<p style="text-indent: 2em;">两种方法我都尝试过，我认为Cron非常符合”Keep It Simple, Stupid” (KISS) 的原则，它让后台处理变得简单。与多进程的业务逻辑相比，它没有内存溢出的风险。你可以创建一个简单的批处理脚本，并且在cron中运行，这个脚本会定时检查是否有任务需要处理，处理完之后就会自动退出，因此你不用担心是否有进程卡壳，或者陷入死循环。</p>
<p style="text-indent: 2em;"><strong><span style="color: #3366ff;">10. 及时启用错误报告 &#8211; David Cummings</span></strong></p>
<p style="text-indent: 2em;">David Cummings有一个专门提供CMS软件服务的公司，并且获得过几次奖，他有非常丰富的<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>开发经验。</p>
<p style="text-indent: 2em;">David曾经写过《two <a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a> tips he wished he’d learned in the beginning》，其中一点就是：及时启用错误报告，这会节省大量的时间。</p>
<p style="text-indent: 2em;">我告诉人们，最重要的事情就是最大程度地开启<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>的错误报告，为什么？因为<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>可能会隐藏很多小问题：</p>
<p style="text-indent: 2em;">变量没有预定义</p>
<p style="text-indent: 2em;">在代码片段中引用了不可用的变量</p>
<p style="text-indent: 2em;">使用了未定义的常量</p>
<p style="text-indent: 2em;">这些因素看起来并不是什么大事，除非你在使用面向对象的方法编写一些类库。通常，关闭错误报告将可能使你付出更大的成本来维护你的代码。</p>
<p style="text-indent: 2em;">错误报告可以帮你轻易地找到代码的问题所在，如果错误报告的等级够高，细微的错误都能被立即发现，帮助你节省整体debug的时间。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.helloyi.cn/index.php/2009/08/14/expert-to-study-php-10-advise/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>30个漂亮的Photoshop按钮和徽章制作</title>
		<link>http://www.helloyi.cn/index.php/2009/08/12/30-useful-photoshop-buttons-and-badges-tutorials/</link>
		<comments>http://www.helloyi.cn/index.php/2009/08/12/30-useful-photoshop-buttons-and-badges-tutorials/#comments</comments>
		<pubDate>Tue, 11 Aug 2009 16:00:43 +0000</pubDate>
		<dc:creator>好易阁</dc:creator>
				<category><![CDATA[WEB前端应用]]></category>
		<category><![CDATA[Adobe系列]]></category>
		<category><![CDATA[网站素材]]></category>
		<category><![CDATA[网页设计]]></category>

		<guid isPermaLink="false">http://www.helloyi.cn/?p=2827</guid>
		<description><![CDATA[有时你的网站设计，会因为一个简单的按钮，而带来不好的用户体验，所以你使其适合您的网站按钮和布局和设计，这样可以帮助你的读者轻松浏览。下面收集了30按钮制作教程希望可以帮助您创建出漂亮的网站界面按钮。
Slick and Clean Button in Photoshop

Glassy Button or Enamel Badge

Micro Bevel Button

Flexible Buttons

Glossy Button

Simple Yet Effective, Clean and Shining Button

Social Networking Chicklets in Photoshop

Small Colorful Buttons

Modern Button in Photoshop

Cool Blue Buttons Tutorial

Pill Button

RSS Button

Clean Web Button

iPhone-like Button

Call To Action Button

Web 2.0 Button

Modern Looking Navigation Button

Create Glassy Button

Photoshop Calculater Button

Simple Button

Simple Button

Basic Sleek Button

Vista Styled Button

Panic [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-thumbnail wp-image-2830 alignleft" title="psbutton1" src="http://www.helloyi.cn/index.php?feedimage=wp-content/uploads/2009/08/psbutton1-150x150.jpg" alt="psbutton1" width="150" height="150" />有时你的网站设计，会因为一个简单的按钮，而带来不好的用户体验，所以你使其适合您的网站按钮和布局和设计，这样可以帮助你的读者轻松浏览。下面收集了30按钮制作教程希望可以帮助您创建出漂亮的网站界面按钮。</p>
<p><span id="more-2827"></span><a href="http://sixrevisions.com/tutorials/photoshop-tutorials/how-to-create-a-slick-and-clean-button-in-photoshop/">Slick and Clean Button in Photoshop</a></p>
<p><a href="http://sixrevisions.com/tutorials/photoshop-tutorials/how-to-create-a-slick-and-clean-button-in-photoshop/"><img src="http://speckyboy.com/wp-content/uploads/2009/08/psbutton1.jpg" alt="Photoshop Buttons and Badges Tutorials" width="448" height="249" /></a></p>
<h5><a href="http://www.graphic-design-employment.com/glassy-button-or-enamel-badge.html">Glassy Button or Enamel Badge</a></h5>
<p><a href="http://www.graphic-design-employment.com/glassy-button-or-enamel-badge.html"><img src="http://speckyboy.com/wp-content/uploads/2009/08/psbutton2.jpg" alt="Photoshop Buttons and Badges Tutorials" width="446" height="250" /></a></p>
<h5><a href="http://www.supadupawebdesign.co.uk/tutorials/Adobe-Photoshop-2/Micro-Bevel-Button-28">Micro Bevel Button</a></h5>
<p><a href="http://www.supadupawebdesign.co.uk/tutorials/Adobe-Photoshop-2/Micro-Bevel-Button-28"><img src="http://speckyboy.com/wp-content/uploads/2009/08/psbutton3.jpg" alt="Photoshop Buttons and Badges Tutorials" width="424" height="232" /></a></p>
<h5><a href="http://veerle.duoh.com/blog/comments/creating_flexible_buttons_using_photoshop_shapes_and_styles/">Flexible Buttons</a></h5>
<p><a href="http://veerle.duoh.com/blog/comments/creating_flexible_buttons_using_photoshop_shapes_and_styles/"><img src="http://speckyboy.com/wp-content/uploads/2009/08/psbutton4.jpg" alt="Photoshop Buttons and Badges Tutorials" width="383" height="247" /></a></p>
<h5><a href="http://nobstutorials.deviantart.com/art/Glossy-Button-Tutorial-65670723">Glossy Button</a></h5>
<p><a href="http://nobstutorials.deviantart.com/art/Glossy-Button-Tutorial-65670723"><img src="http://speckyboy.com/wp-content/uploads/2009/08/psbutton5.jpg" alt="Photoshop Buttons and Badges Tutorials" width="414" height="247" /></a></p>
<h5><a href="http://www.psdvault.com/web-graphics/design-a-simple-yet-effective-clean-and-shining-button-for-your-website-in-photoshop/">Simple Yet Effective, Clean and Shining Button</a></h5>
<p><a href="http://www.psdvault.com/web-graphics/design-a-simple-yet-effective-clean-and-shining-button-for-your-website-in-photoshop/"><img src="http://speckyboy.com/wp-content/uploads/2009/08/psbutton6.jpg" alt="Photoshop Buttons and Badges Tutorials" width="421" height="240" /></a></p>
<h5><a href="http://blulob.com/2009/05/17/create-social-networking-chiclets-photoshop/">Social Networking Chicklets in Photoshop</a></h5>
<p><a href="http://blulob.com/2009/05/17/create-social-networking-chiclets-photoshop/"><img src="http://speckyboy.com/wp-content/uploads/2009/08/psbutton7.jpg" alt="Photoshop Buttons and Badges Tutorials" width="422" height="243" /></a></p>
<h5><a href="http://coregfx.org/tutorials/create-small-colorful-buttons-in-photoshop/">Small Colorful Buttons</a></h5>
<p><a href="http://coregfx.org/tutorials/create-small-colorful-buttons-in-photoshop/"><img src="http://speckyboy.com/wp-content/uploads/2009/08/psbutton8.jpg" alt="Photoshop Buttons and Badges Tutorials" width="415" height="250" /></a></p>
<h5><a href="http://www.toxiclab.org/tutorial.asp?ID=314">Modern Button in Photoshop</a></h5>
<p><a href="http://www.toxiclab.org/tutorial.asp?ID=314"><img src="http://speckyboy.com/wp-content/uploads/2009/08/psbutton9.jpg" alt="Photoshop Buttons and Badges Tutorials" width="409" height="250" /></a></p>
<h5><a href="http://www.freedivs.com/tutorials/Cool%20Blue%20Buttons/">Cool Blue Buttons Tutorial</a></h5>
<p><a href="http://www.freedivs.com/tutorials/Cool%20Blue%20Buttons/"><img src="http://speckyboy.com/wp-content/uploads/2009/08/psbutton10.jpg" alt="Photoshop Buttons and Badges Tutorials" width="394" height="251" /></a></p>
<h5><a href="http://tutorialqueen.com/photoshop-tutorials/photoshop-tutorial-website-pill-button-icon-design-in-photoshop">Pill Button</a></h5>
<p><a href="http://tutorialqueen.com/photoshop-tutorials/photoshop-tutorial-website-pill-button-icon-design-in-photoshop"><img src="http://speckyboy.com/wp-content/uploads/2009/08/psbutton11.jpg" alt="Photoshop Buttons and Badges Tutorials" width="401" height="249" /></a></p>
<h5><a href="http://www.adobetutorialz.com/articles/3008/1/RSS-button">RSS Button</a></h5>
<p><a href="http://www.adobetutorialz.com/articles/3008/1/RSS-button"><img src="http://speckyboy.com/wp-content/uploads/2009/08/psbutton12.jpg" alt="Photoshop Buttons and Badges Tutorials" width="396" height="247" /></a></p>
<h5><a href="http://tutorialtab.net/?p=82">Clean Web Button</a></h5>
<p><a href="http://tutorialtab.net/?p=82"><img src="http://speckyboy.com/wp-content/uploads/2009/08/psbutton13.jpg" alt="Photoshop Buttons and Badges Tutorials" width="411" height="248" /></a></p>
<h5><a href="http://yesterdayishere.com/now/log/iphone-like-button-in-photoshop/">iPhone-like Button</a></h5>
<p><a href="http://yesterdayishere.com/now/log/iphone-like-button-in-photoshop/"><img src="http://speckyboy.com/wp-content/uploads/2009/08/psbutton14.jpg" alt="Photoshop Buttons and Badges Tutorials" /></a></p>
<h5><a href="http://www.blog.exxcorpio.com/2009/06/18/beginner-photoshop-tutorial-create-a-call-to-action-button/">Call To Action Button</a></h5>
<p><a href="http://www.blog.exxcorpio.com/2009/06/18/beginner-photoshop-tutorial-create-a-call-to-action-button/"><img src="http://speckyboy.com/wp-content/uploads/2009/08/psbutton15.jpg" alt="Photoshop Buttons and Badges Tutorials" /></a></p>
<h5><a href="http://tips.bexinh.cn/photoshop-create-web-20-button/173/">Web 2.0 Button</a></h5>
<p><a href="http://tips.bexinh.cn/photoshop-create-web-20-button/173/"><img src="http://speckyboy.com/wp-content/uploads/2009/08/psbutton16.jpg" alt="Photoshop Buttons and Badges Tutorials" width="449" height="249" /></a></p>
<h5><a href="http://www.online-photoshoptutorials.com/2008/04/making-modern-looking-navigation-button.html">Modern Looking Navigation Button</a></h5>
<p><a href="http://www.online-photoshoptutorials.com/2008/04/making-modern-looking-navigation-button.html"><img src="http://speckyboy.com/wp-content/uploads/2009/08/psbutton17.jpg" alt="Photoshop Buttons and Badges Tutorials" width="434" height="250" /></a></p>
<h5><a href="http://digicraft.blogspot.com/2008/04/learn-how-to-creatively-create-glass.html">Create Glassy Button</a></h5>
<p><a href="http://digicraft.blogspot.com/2008/04/learn-how-to-creatively-create-glass.html"><img src="http://speckyboy.com/wp-content/uploads/2009/08/psbutton18.jpg" alt="Photoshop Buttons and Badges Tutorials" /></a></p>
<h5><a href="http://adobeperson.com/photoshop-basic-drawings/photoshop-calculater-button-logo-icon">Photoshop Calculater Button</a></h5>
<p><a href="http://adobeperson.com/photoshop-basic-drawings/photoshop-calculater-button-logo-icon"><img src="http://speckyboy.com/wp-content/uploads/2009/08/psbutton19.jpg" alt="Photoshop Buttons and Badges Tutorials" width="443" height="252" /></a></p>
<h5><a href="http://www.photoshop-garden.com/view_tut.php?id=32">Simple Button</a></h5>
<p><a href="http://www.photoshop-garden.com/view_tut.php?id=32"><img src="http://speckyboy.com/wp-content/uploads/2009/08/psbutton20.jpg" alt="Photoshop Buttons and Badges Tutorials" width="444" height="461" /></a></p>
<h5><a href="http://adobeperson.com/photoshop-basic-drawings/photoshop-business-print-button-logo-icon">Simple Button</a></h5>
<p><a href="http://adobeperson.com/photoshop-basic-drawings/photoshop-business-print-button-logo-icon"><img src="http://speckyboy.com/wp-content/uploads/2009/08/psbutton21.jpg" alt="Photoshop Buttons and Badges Tutorials" width="426" height="232" /></a></p>
<h5><a href="http://psfreak.com/2008/02/13/basic-sleek-button/">Basic Sleek Button</a></h5>
<p><a href="http://psfreak.com/2008/02/13/basic-sleek-button/"><img src="http://speckyboy.com/wp-content/uploads/2009/08/psbutton22.jpg" alt="Photoshop Buttons and Badges Tutorials" width="432" height="245" /></a></p>
<h5><a href="http://psfreak.com/2008/02/10/vista-styled-button/">Vista Styled Button</a></h5>
<p><a href="http://psfreak.com/2008/02/10/vista-styled-button/"><img src="http://speckyboy.com/wp-content/uploads/2009/08/psbutton23.jpg" alt="Photoshop Buttons and Badges Tutorials" width="427" height="250" /></a></p>
<h5><a href="http://adobeperson.com/photoshop-basic-drawings/design-panic-button-logo-icon-in-photoshop">Panic Button</a></h5>
<p><a href="http://adobeperson.com/photoshop-basic-drawings/design-panic-button-logo-icon-in-photoshop"><img src="http://speckyboy.com/wp-content/uploads/2009/08/psbutton24.jpg" alt="Photoshop Buttons and Badges Tutorials" width="428" height="320" /></a></p>
<h5><a href="http://tutorialagent.com/best-photoshop-tutorials/photoshop-buzline-button-logo-icon">Buzline Button</a></h5>
<p><a href="http://tutorialagent.com/best-photoshop-tutorials/photoshop-buzline-button-logo-icon"><img src="http://speckyboy.com/wp-content/uploads/2009/08/psbutton25.jpg" alt="Photoshop Buttons and Badges Tutorials" width="419" height="243" /></a></p>
<h5><a href="http://www.designtutorials.info/volume-control-widget/">Volume Control Widget</a></h5>
<p><a href="http://www.designtutorials.info/volume-control-widget/"><img src="http://speckyboy.com/wp-content/uploads/2009/08/psbutton26.jpg" alt="Photoshop Buttons and Badges Tutorials" width="426" height="254" /></a></p>
<h5><a href="http://psd.tutsplus.com/tutorials/photo-effects-tutorials/photoshop-button-maker/">Photoshop Button Maker</a></h5>
<p><a href="http://psd.tutsplus.com/tutorials/photo-effects-tutorials/photoshop-button-maker/"><img src="http://speckyboy.com/wp-content/uploads/2009/08/psbutton27.jpg" alt="Photoshop Buttons and Badges Tutorials" width="422" height="500" /></a></p>
<h5><a href="http://www.photoshopstar.com/web-graphics/nice-simple-subscribe-badges/">Nice ‘n’ Simple Subscribe Badges</a></h5>
<p><a href="http://www.photoshopstar.com/web-graphics/nice-simple-subscribe-badges/"><img src="http://speckyboy.com/wp-content/uploads/2009/08/psbutton28.jpg" alt="Photoshop Buttons and Badges Tutorials" width="402" height="199" /></a></p>
<h5><a href="http://www.photoshopstar.com/web-graphics/satisfaction-guaranteed-seal-or-badge/">100% Satisfaction Guaranteed Seal/Badge</a></h5>
<p><a href="http://www.photoshopstar.com/web-graphics/satisfaction-guaranteed-seal-or-badge/"><img src="http://speckyboy.com/wp-content/uploads/2009/08/psbutton29.jpg" alt="Photoshop Buttons and Badges Tutorials" width="372" height="190" /></a></p>
<h5><a href="http://www.floatingcitydesigns.com/magazine/2009/01/trendy-sticker-tutorial.html">Trendy Sticker Tutorial</a></h5>
<p><a href="http://www.floatingcitydesigns.com/magazine/2009/01/trendy-sticker-tutorial.html"><img src="http://speckyboy.com/wp-content/uploads/2009/08/psbutton30.jpg" alt="Photoshop Buttons and Badges Tutorials" width="365" height="200" /></a></p>
<h5><a href="http://www.estrellastudios.com/blog/blog-print/print-design-creating-buttons-in-photoshop/">Creating buttons in Photoshop</a></h5>
<p><a href="http://www.estrellastudios.com/blog/blog-print/print-design-creating-buttons-in-photoshop/"><img src="http://speckyboy.com/wp-content/uploads/2009/08/psbutton31.jpg" alt="Photoshop Buttons and Badges Tutorials" width="341" height="199" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.helloyi.cn/index.php/2009/08/12/30-useful-photoshop-buttons-and-badges-tutorials/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>提高内容类网站粘度的常见方法</title>
		<link>http://www.helloyi.cn/index.php/2009/08/07/website-niedu/</link>
		<comments>http://www.helloyi.cn/index.php/2009/08/07/website-niedu/#comments</comments>
		<pubDate>Thu, 06 Aug 2009 16:18:45 +0000</pubDate>
		<dc:creator>好易阁</dc:creator>
				<category><![CDATA[网页设计]]></category>

		<guid isPermaLink="false">http://www.helloyi.cn/?p=2752</guid>
		<description><![CDATA[网站粘度，指的是用户对网站的重复使用度（依赖度、忠诚度），网站粘度越高，越能体现网站价值。众所周知，服务类（例如游戏、工具等）网站的粘度通常都非常高，而内容类网站（例如博客）的粘度就相对较低，我们知道，网站的运营推广可以获得外部流量，但如何降低其弹出率，提高独立用户每次访问页数，提高网站粘度，是一门很值得研究的问题，下面是我总结的一些内容类网站提高网站粘度的常见方法。

　　1、内容建设
　　“内容为王”一直是互联网行业奉行的不二法则，提供高质量的内容是产生用户“粘性”的最重要因素。如果一个网站能够长期提供独特而高质量的内容，则必然会吸引大量的读者来阅读和分享。
　　不过，内容网站的建设最好是“自己的内容”，而不是“别人的内容”，一些聚合网站采用聚合别人的优秀内容来吸引读者，往往会引起版权上的争议。
　　2、浏览体验
　　提高访问者的浏览体验，而不是“吓跑”用户，也是提高粘度的重要方法，浏览体验首先是浏览速度的问题，主要有两个方面需要关注。
　　首先是网站服务器的性能，如果访问量较大，网站不宜使用虚拟主机，如果有能力的话建议租用独立服务器来解决这个问题，例如我的月光博客网站采用托管电信机房的独立1U服务器，共享100M带宽（峰值5M），最大每天可以应付10万IP的访问量，这样的带宽通常访问速度就很快了。否则的话，如果用户发现几分钟都打不开一个页面，往往会关掉浏览器不再继续访问。
　　其次是WEB服务器的性能优化，内容类网站最好使用生成静态HTML页面的方式处理，具有这种功能的CMS和博客非常多。在Windows服务器下，可以通过修改IIS配置来实现网站性能的优化，
　　3、网站结构和界面
　　网站除了优化以外，UI设计（User Interface/用户界面）也非常关键，好的网站UI设计，会兼顾网站的美观，同时网站的结构也清晰，让用户能够快速找到信息。例如月光博客的所有页面顶部都有导航栏信息，每篇文章的底部都有“相关文章”栏目，这些设计都能够让用户更容易浏览和阅读。
　　另外，用户的浏览体验也很重要，不要给用户太多搔扰，例如有些网站一打开就是弹窗，然后广告满天飞，这些都会降低用户的粘度，让用户不想继续浏览。
　　4、增强交互性
　　通常具有交互性服务的网站都有不错的粘度，内容类网站可以通过增加文章评论来提高交互性，除此以外，还要鼓励读者进行评论，很多博客都有一些第三方插件可以增强读者的评论体验，例如不注册即可评论（降低评论难度）、得到回复时邮件通知、给评论打分等等，都是不错和鼓励用户发表意见的方法。多和读者交流，对于保持长期稳定的流量有一定好处。
　　5、推广RSS订阅方式
　　通过全文RSS Feed输出的方法来推广内容类网站的RSS订阅方式，虽然读者通过阅读器订阅RSS，会减少内容类网站的实际浏览量，但对于增加网站粘度却具有重大意义，因为读者订阅之后，就可以在阅读器中长期的跟踪网站内容的更新，相当于一个长期的浏览者，在未来会带来持久的流量。
转载自月光博客 [ http://www.williamlong.info/ ]
]]></description>
			<content:encoded><![CDATA[<p>网站粘度，指的是用户对网站的重复使用度（依赖度、忠诚度），网站粘度越高，越能体现网站价值。众所周知，服务类（例如游戏、工具等）网站的粘度通常都非常高，而内容类网站（例如博客）的粘度就相对较低，我们知道，网站的运营推广可以获得外部流量，但如何降低其弹出率，提高独立用户每次访问页数，提高网站粘度，是一门很值得研究的问题，下面是我总结的一些内容类网站提高网站粘度的常见方法。</p>
<p><span id="more-2752"></span></p>
<p>　　1、内容建设</p>
<p>　　“内容为王”一直是互联网行业奉行的不二法则，提供高质量的内容是产生用户“粘性”的最重要因素。如果一个网站能够长期提供独特而高质量的内容，则必然会吸引大量的读者来阅读和分享。</p>
<p>　　不过，内容网站的建设最好是“自己的内容”，而不是“别人的内容”，一些聚合网站采用聚合别人的优秀内容来吸引读者，往往会引起版权上的争议。</p>
<p>　　2、浏览体验</p>
<p>　　提高访问者的浏览体验，而不是“吓跑”用户，也是提高粘度的重要方法，浏览体验首先是浏览速度的问题，主要有两个方面需要关注。</p>
<p>　　首先是网站服务器的性能，如果访问量较大，网站不宜使用虚拟主机，如果有能力的话建议租用独立服务器来解决这个问题，例如我的月光博客网站采用托管电信机房的独立1U服务器，共享100M带宽（峰值5M），最大每天可以应付10万IP的访问量，这样的带宽通常访问速度就很快了。否则的话，如果用户发现几分钟都打不开一个页面，往往会关掉浏览器不再继续访问。</p>
<p>　　其次是WEB服务器的性能优化，内容类网站最好使用生成静态HTML页面的方式处理，具有这种功能的CMS和博客非常多。在Windows服务器下，可以通过修改IIS配置来实现网站性能的优化，</p>
<p>　　3、网站结构和界面</p>
<p>　　网站除了优化以外，UI设计（User Interface/用户界面）也非常关键，好的网站UI设计，会兼顾网站的美观，同时网站的结构也清晰，让用户能够快速找到信息。例如月光博客的所有页面顶部都有导航栏信息，每篇文章的底部都有“相关文章”栏目，这些设计都能够让用户更容易浏览和阅读。</p>
<p>　　另外，用户的浏览体验也很重要，不要给用户太多搔扰，例如有些网站一打开就是弹窗，然后广告满天飞，这些都会降低用户的粘度，让用户不想继续浏览。</p>
<p>　　4、增强交互性</p>
<p>　　通常具有交互性服务的网站都有不错的粘度，内容类网站可以通过增加文章评论来提高交互性，除此以外，还要鼓励读者进行评论，很多博客都有一些第三方插件可以增强读者的评论体验，例如不注册即可评论（降低评论难度）、得到回复时邮件通知、给评论打分等等，都是不错和鼓励用户发表意见的方法。多和读者交流，对于保持长期稳定的流量有一定好处。</p>
<p>　　5、推广RSS订阅方式</p>
<p>　　通过全文RSS Feed输出的方法来推广内容类网站的RSS订阅方式，虽然读者通过阅读器订阅RSS，会减少内容类网站的实际浏览量，但对于增加网站粘度却具有重大意义，因为读者订阅之后，就可以在阅读器中长期的跟踪网站内容的更新，相当于一个长期的浏览者，在未来会带来持久的流量。</p>
<p>转载自<a href="http://www.williamlong.info/"><span style="color: #670e1a;">月光博客</span></a> [ <a href="http://www.williamlong.info/"><span style="color: #670e1a;">http://www.williamlong.info/</span></a> ]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.helloyi.cn/index.php/2009/08/07/website-niedu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress-网站模板设计软件</title>
		<link>http://www.helloyi.cn/index.php/2009/08/07/wordpress-artisteer/</link>
		<comments>http://www.helloyi.cn/index.php/2009/08/07/wordpress-artisteer/#comments</comments>
		<pubDate>Thu, 06 Aug 2009 16:04:04 +0000</pubDate>
		<dc:creator>好易阁</dc:creator>
				<category><![CDATA[网页设计]]></category>

		<guid isPermaLink="false">http://www.helloyi.cn/?p=2739</guid>
		<description><![CDATA[Artisteer是一个网站模板设计工具.让你可以创建WordPress的博客主题和专业水准的网站模板。它采用独特的方法，不需要任何编码或CSS的知识来设计的模板，该计划包括各种背景图片，纹理，照片剪贴画，字体的主题和其他设计元素，以帮助您创建您的模板，而不需要额外的资源。成品模板可以导出为WordPress的主题或内容管理系统模板.


破解方法:安装后运行artisteer.2.2.0.17376-loader.exe,在对话框中指向安装路径中X:\ &#8230;..\Artisteer 2\bin\Artisteer.exe 再次运行artisteer.2.2.0.17376-loader.exe即为标准版
点击下载
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.helloyi.cn/index.php/2009/08/06/wordpress-artisteer"><img class="size-medium wp-image-2741 alignleft" title="artisteer" src="http://www.helloyi.cn/index.php?feedimage=wp-content/uploads/2009/08/artisteer-196x300.jpg" alt="" width="94" height="65" /></a>Artisteer是一个网站模板设计工具.让你可以创建WordPress的博客主题和专业水准的网站模板。它采用独特的方法，不需要任何编码或CSS的知识来设计的模板，该计划包括各种背景图片，纹理，照片剪贴画，字体的主题和其他设计元素，以帮助您创建您的模板，而不需要额外的资源。成品模板可以导出为WordPress的主题或内容管理系统模板.</p>
<p><span id="more-2739"></span></p>
<p><a href="http://www.helloyi.cn/index.php/2009/08/06/wordpress-artisteer"><img class="alignnone size-full wp-image-2740" title="artisteer1" src="http://www.helloyi.cn/index.php?feedimage=wp-content/uploads/2009/08/16361u2h-0.gif" alt="" width="440" height="313" /></a></p>
<p>破解方法:安装后运行artisteer.2.2.0.17376-loader.exe,在对话框中指向安装路径中X:\ &#8230;..\Artisteer 2\bin\Artisteer.exe 再次运行artisteer.2.2.0.17376-loader.exe即为标准版</p>
<p><a href="http://www.verycd.com/topics/2760976/">点击下载</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.helloyi.cn/index.php/2009/08/07/wordpress-artisteer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>微软视频0day漏洞专防-金山贝壳</title>
		<link>http://www.helloyi.cn/index.php/2009/08/06/0day-kingbeike/</link>
		<comments>http://www.helloyi.cn/index.php/2009/08/06/0day-kingbeike/#comments</comments>
		<pubDate>Thu, 06 Aug 2009 15:31:10 +0000</pubDate>
		<dc:creator>好易阁</dc:creator>
				<category><![CDATA[网页设计]]></category>

		<guid isPermaLink="false">http://www.helloyi.cn/?p=2692</guid>
		<description><![CDATA[2009年7月5日，微软视频0day漏洞(DirectShow 0day)爆发，由于此漏洞利用简单，触发率高，并已经被国内挂马集团大规模利用，迅速成为今年最严重网络安全威胁。金山毒霸第一时间发现微软视频漏洞后，现又针对该漏洞全球首发安全补丁。安装金山-贝壳补丁后，网民将获得相应“免疫”能力。
 由于没有官方补丁的修复，微软视频漏洞已引发大面积网络攻击，受攻击网民近百万，目前危害有进一步加剧的趋势。一旦用户访问携带该漏洞的恶意网站后，将被下载宝马下载器，并出现IE主页被修改，网游账号丢失、假冒的QQ中奖信息等现象。金山毒霸反病毒专家强烈建议用户，及时下载金山-贝壳安全补丁，避免损失。
漏洞相关说明
此漏洞会影响到Windows 2000/XP/2003系列共12个版本的操作系统。
IE6和IE7浏览器，及其它使用IE内核的浏览器（如TT、Maxthon等）均会受到影响.
下载官方页面:http://www.duba.net/zt/2009/DirectShow0day/


]]></description>
			<content:encoded><![CDATA[<p>2009年7月5日，微软视频0day漏洞(DirectShow 0day)爆发，由于此漏洞利用简单，触发率高，并已经被国内挂马集团大规模利用，迅速成为今年最严重网络安全威胁。金山毒霸第一时间发现微软视频漏洞后，现又针对该漏洞全球首发安全补丁。安装金山-贝壳补丁后，网民将获得相应“免疫”能力。<br />
<span id="more-2692"></span> 由于没有官方补丁的修复，微软视频漏洞已引发大面积网络攻击，受攻击网民近百万，目前危害有进一步加剧的趋势。一旦用户访问携带该漏洞的恶意网站后，将被下载宝马下载器，并出现IE主页被修改，网游账号丢失、假冒的QQ中奖信息等现象。金山毒霸反病毒专家强烈建议用户，及时下载金山-贝壳安全补丁，避免损失。</p>
<p>漏洞相关说明<br />
此漏洞会影响到Windows 2000/XP/2003系列共12个版本的操作系统。<br />
IE6和IE7浏览器，及其它使用IE内核的浏览器（如TT、Maxthon等）均会受到影响.</p>
<p>下载官方页面:http://www.duba.net/zt/2009/DirectShow0day/</p>
<p><a href="http://www.helloyi.cn/wp-content/uploads/2009/07/kingbeike.jpg"><br />
</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.helloyi.cn/index.php/2009/08/06/0day-kingbeike/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>暑期游香港购物最新打折资讯(2009年7月10日更新)</title>
		<link>http://www.helloyi.cn/index.php/2009/07/10/hk-shoping-dazhe/</link>
		<comments>http://www.helloyi.cn/index.php/2009/07/10/hk-shoping-dazhe/#comments</comments>
		<pubDate>Fri, 10 Jul 2009 07:57:32 +0000</pubDate>
		<dc:creator>好易阁</dc:creator>
				<category><![CDATA[网页设计]]></category>

		<guid isPermaLink="false">http://www.helloyi.cn/?p=2686</guid>
		<description><![CDATA[打折信息按发布时间由新到旧排列，最上面的是最新的。请大家注意讯息的时效性。
→ 海港城夏天休闲服饰所有货品低至1折(7月8-12日)
→ 香港尖沙咀Clarins特别6折优惠(7月6-19日)
→ 香港Summer Sale Easy Shop全线6间分店低至3折(7月31日止)
→ 香港铜锣湾Shine春夏货品低至1折(7月6-12日)
→ 香港The Swank国际高级名牌专卖店大减价，低至三折。
→ 置地广场各种名牌7月减价优惠！（最低5折）
→ 香港铜锣湾SOGO各种优惠(7月8日-14日)
→ 香港卓悦化妆品空前大优惠(7月4日-10日)
→ 香港Sephora (丝芙兰) 7月-9月的优惠及活动
→ 香港Columbia 东荟城名店仓特惠 (7月10日止)
→ 香港湾仔道Triumph Factory Outlet低至二折(7月31日止)
→ 香港雅施名牌破天荒2折起(至7月16日)
→ 香港西武买$1,000送$900大礼(7月6-19日)
→ 香港妈子厨房私房菜7月特价$108位
→ 香港agnes b. 旅行袋礼品优惠(送外即止)
→ 香港adidas长期outlet全场货品低至3折 (2009年12月31日止)
→ 香港又一城Columbia折上折!(7月31日止 )
→ 香港 H2O 最新优惠 (7月31日止)
→ 香港Uniqlo夏季大减价 低至4折(6月30日至7月19日)
→ 香港FITTER OUTLET名牌開倉大割引低至一折
→ 香港Durance夏日美肌修身展销会8折优惠再送现金券(7月31日止)
→ 香港国际金融中心商场(IFC)部分金饰钻饰低至六折(7月31日止)
→ 化妆品开仓YSL,Christian Dior,Guerlain等等二折起(至7月5日)
→ DFS的GUCCI开始6折了，有卡还可以再85折
→ 香港屈臣氏JOVEES专柜礼品赠送活动（7月31日止）
→ SEIBU西武further sale,低至六折
→ 山顶凌霄阁优惠大放送-商户优惠(9月30日止)
→ 香港ICE FIRE夏天开仓大减价(WareHouse Bargain)(至7月4-11日)
→ 香港世贸中心运动家 All About [...]]]></description>
			<content:encoded><![CDATA[<p>打折信息按发布时间由新到旧排列，最上面的是最新的。请大家注意讯息的时效性。</p>
<p>→ 海港城夏天休闲服饰所有货品低至1折(7月8-12日)</p>
<p>→ 香港尖沙咀Clarins特别6折优惠(7月6-19日)</p>
<p><span id="more-2686"></span>→ 香港Summer Sale Easy Shop全线6间分店低至3折(7月31日止)</p>
<p>→ 香港铜锣湾Shine春夏货品低至1折(7月6-12日)</p>
<p>→ 香港The Swank国际高级名牌专卖店大减价，低至三折。</p>
<p>→ 置地广场各种名牌7月减价优惠！（最低5折）</p>
<p>→ 香港铜锣湾SOGO各种优惠(7月8日-14日)</p>
<p>→ 香港卓悦化妆品空前大优惠(7月4日-10日)</p>
<p>→ 香港Sephora (丝芙兰) 7月-9月的优惠及活动</p>
<p>→ 香港Columbia 东荟城名店仓特惠 (7月10日止)</p>
<p>→ 香港湾仔道Triumph Factory Outlet低至二折(7月31日止)</p>
<p>→ 香港雅施名牌破天荒2折起(至7月16日)</p>
<p>→ 香港西武买$1,000送$900大礼(7月6-19日)</p>
<p>→ 香港妈子厨房私房菜7月特价$108位</p>
<p>→ 香港agnes b. 旅行袋礼品优惠(送外即止)</p>
<p>→ 香港adidas长期outlet全场货品低至3折 (2009年12月31日止)</p>
<p>→ 香港又一城Columbia折上折!(7月31日止 )</p>
<p>→ 香港 H2O 最新优惠 (7月31日止)</p>
<p>→ 香港Uniqlo夏季大减价 低至4折(6月30日至7月19日)</p>
<p>→ 香港FITTER OUTLET名牌開倉大割引低至一折</p>
<p>→ 香港Durance夏日美肌修身展销会8折优惠再送现金券(7月31日止)</p>
<p>→ 香港国际金融中心商场(IFC)部分金饰钻饰低至六折(7月31日止)</p>
<p>→ 化妆品开仓YSL,Christian Dior,Guerlain等等二折起(至7月5日)</p>
<p>→ DFS的GUCCI开始6折了，有卡还可以再85折</p>
<p>→ 香港屈臣氏JOVEES专柜礼品赠送活动（7月31日止）</p>
<p>→ SEIBU西武further sale,低至六折</p>
<p>→ 山顶凌霄阁优惠大放送-商户优惠(9月30日止)</p>
<p>→ 香港ICE FIRE夏天开仓大减价(WareHouse Bargain)(至7月4-11日)</p>
<p>→ 香港世贸中心运动家 All About Canvas低至4折(至7月13日)</p>
<p>→ 香港SKINFOOD全线面膜买2送1 (至7月31)</p>
<p>→ 香港时代广场Joy and Peace 国内游客特享优惠(7月5日止)</p>
<p>→ 香港Agnes B. 减价优惠至7月5日</p>
<p>→ 香港卓悦每周精选(6月26日-7月2日)</p>
<p>→ 香港卓悦最新优惠（6月27日-7月3日）</p>
<p>→ 太古广场 最新店铺打折信息(6月27日发现的)</p>
<p>→ [万宁优惠]买OLAY产品送Häagen-Dazs单球雪糕礼券2张&amp;精美水晶笔</p>
<p>→ 香港D-Mop 开仓特卖低至1折(6月26日-30日)</p>
<p>→ 铜锣湾崇光百货女装优惠，低至2折。(6月24日至28日)</p>
<p>→ Demeter Fragrance Library 低至六折开仓特卖(6月25日-27日)</p>
<p>→ 香港永安百货4店同时 超低特别优惠(6月25日-28日)</p>
<p>→ 香港The body shop店内优惠(7月9日止)</p>
<p>→ 香香港6月金价（6月23日）</p>
<p>→ 香港IFC国际金融中心 最新优惠（6月23日起）</p>
<p>→ 香港Issey Miyake 购买满HK$600m即送男士香水礼品</p>
<p>→ 东荟城 商铺打折信息(6月19日现场收集)</p>
<p>→ Jurlique 抗菌精华油优惠</p>
<p>→ Lush雪糕面膜夏日优惠(7月1日止)</p>
<p>→ 香港Juicy Couture 低至半价(6月19日开始)</p>
<p>→ 香港 The Swank 打折优惠低至四折</p>
<p>→ 香港 Le Saunda 大减价 低至四折</p>
<p>→ 香港Columbia父亲节减价优惠 低至三折</p>
<p>→ 香港Zadig &amp; Voltaire 低至5折</p>
<p>→ 香港卓悦男士香水低至3折(6月15-21日)</p>
<p>→ 香港 agnès b. 父亲节特惠 (6月21日止)</p>
<p>→ 名牌polo(中环置地)pre-sale大减价~低至一折</p>
<p>→ Quiksilver买HK$600即减HK$300(7月26日止)</p>
<p>→ 香港 VICHY 专门店会员6月尊贵礼遇(6月28日止)</p>
<p>→ SASA 精选护肤品牌低至4折(至6月21日)</p>
<p>→ 香港 UNIQLO 夏季优惠大减价，低至五折！</p>
<p>→ Vichy薇姿免费体验及优惠信息(至6月30日)</p>
<p>→ IPSA 邀你免费体验“日中补妆服务”(7月15日止)</p>
<p>→ Club Monaco6月12日起全店做底至二折优惠</p>
<p>→ bread n butter Outlet Sale 时装皮鞋打折低至一折</p>
<p>→ Prada门市，部分鞋衫五折，够爽快。</p>
<p>→ LANCOME夏日心动礼遇(直接送保湿啫喱霜5ml)6月21日止</p>
<p>→ 帝景酒店美食自助餐低至65折起(至6月30日)</p>
<p>→ 父亲节香港各大酒店自助餐优惠一览(6月21日)</p>
<p>→ Calvin Klein 开仓特卖 低至1折（6月4日至25日）</p>
<p>→ 6月5日一线品牌已经开始打折(到7月中旬)</p>
<p>→ 香港置地广场 名牌打折优惠（这几天正在进行ing）</p>
<p>→ SKINFOOD 三周年庆 6月购物优惠</p>
<p>→ the body shop店内优惠(6月11日止)</p>
<p>→ 朗壕坊 6月最新商铺打折优惠</p>
<p>→ Jurlique 6月份特别优惠</p>
<p>→ Crocs 购物奖赏！免费送Clinique 礼品包！(6.1-6.30)</p>
<p>→ DFS Galleria环球免税店 &#8211; 季终优惠</p>
<p>→ 香港雅施 新货劲减(5月29日-6月11日)</p>
<p>→ 香港太古城中心 夏季打折优惠信息</p>
<p>→ 香港Club Monaco搬迁大减价(6月1日起)</p>
<p>→ Venilla Suite 6月最新优惠信息</p>
<p>→ 海港城 Bazaar集市欧日服饰、皮鞋及手袋展(6月3日至7日)</p>
<p>→ Joy &amp; Peace 夏季最新优惠.<br />
所有信息都是收集的十六番上网友的分享，也希望大家多多分享打折讯息投递:helloyid@gmail.com</p>
]]></content:encoded>
			<wfw:commentRss>http://www.helloyi.cn/index.php/2009/07/10/hk-shoping-dazhe/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>php中cookie用法详解</title>
		<link>http://www.helloyi.cn/index.php/2009/07/08/php-cookie/</link>
		<comments>http://www.helloyi.cn/index.php/2009/07/08/php-cookie/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 09:17:20 +0000</pubDate>
		<dc:creator>好易阁</dc:creator>
				<category><![CDATA[网页设计]]></category>

		<guid isPermaLink="false">http://www.helloyi.cn/?p=2673</guid>
		<description><![CDATA[cookie 是由服务器发送到浏览器的变量。cookie 通常是服务器嵌入到用户计算机中的小文本文件。每当计算机通过浏览器请求一个页面，就会发送这个 cookie。cookie 的名称指定为相同名称的变量。例如，如果被发送的 cookie 名为 &#8220;name&#8221;，会自动创建名为 $user 的变量，包含 cookie 的值。
必须在任何其他输出发送前对 cookie 进行赋值。
如果成功，则该函数返回 true，否则返回 false
在PHP中要创件cookie就需要用setcookie函数,setcookie()最多可有六个参数
setcookie函数是向客户端发送一个 HTTP cookie.
语法
setcookie(name,value,expire,path,domain,secure)



参数
描述


name
必需。规定 cookie 的名称。


value
必需。规定 cookie 的值。


expire
可选。规定 cookie 的有效期。


path
可选。规定 cookie 的服务器路径。


domain
可选。规定 cookie 的域名。


secure
可选。规定是否通过安全的 HTTPS 连接来传输 cookie。



提示和注释
注释：可以通过 $HTTP_COOKIE_VARS["user"] 或 $_COOKIE["user"] 来访问名为 &#8220;user&#8221; 的 cookie 的值。
注释：在发送 cookie 时，cookie 的值会自动进行 URL 编码。接收时会进行 URL 解码。如果你不需要这样，可以使用setrawcookie()代替.
如果希望用户关闭其浏览器后，仍保留此cookie，则必须传递第三个参数给setcookie()函数，即设定此cookie的有效日期。由于PHP的背 景完全源于Unix的思想，这个有效期限需要以从1970年1月1日起算的总秒数来代表。如果作为Unix程序员，这种算法对你而言可能是合情合理的。但 如果来自Windows或Macintosh阵营，你可能只能摇头叹息，无法理解那些古怪的Unix家伙们。
不过无需害怕。PHP提供一个很好用的函数mktime()。你只要按顺序传送给mktime()你希望表示的小时，分钟，秒数，月份，日期，及年份，mktime()就会返回该日期自1970年1月1日的总秒数.
如果需要模拟 Y2K 问题：
&#60;?php
$y2k = mktime(0,0,0,1,1,2000);
setcookie(&#8217;name&#8217;, &#8216;bret&#8217;, $y2k);
?&#62;
现在，你的cookie将会在2000年失效。
如果需要更新cookie以让其储存新值，只需要将其原值覆盖即可。因此，即使你已经在之前的页面中刚刚发送cookie，仍可以将你的名字改为“jeff”。
&#60;?php
$y2k = [...]]]></description>
			<content:encoded><![CDATA[<p>cookie 是由服务器发送到浏览器的变量。cookie 通常是服务器嵌入到用户计算机中的小文本文件。每当计算机通过浏览器请求一个页面，就会发送这个 cookie。cookie 的名称指定为相同名称的变量。例如，如果被发送的 cookie 名为 &#8220;name&#8221;，会自动创建名为 $user 的变量，包含 cookie 的值。</p>
<p><span id="more-2673"></span>必须在任何其他输出发送前对 cookie 进行赋值。</p>
<p>如果成功，则该函数返回 true，否则返回 false</p>
<p>在<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>中要创件cookie就需要用<span style="color: #0000ff;">setcookie</span>函数,<span style="color: #0000ff;">setcookie()最多可有六个参数</span></p>
<p>setcookie函数是向客户端发送一个 HTTP cookie.</p>
<h3>语法</h3>
<pre>setcookie(name,value,expire,path,domain,secure)</pre>
<table class="dataintable" border="0">
<tbody>
<tr>
<th>参数</th>
<th>描述</th>
</tr>
<tr>
<td>name</td>
<td>必需。规定 cookie 的名称。</td>
</tr>
<tr>
<td>value</td>
<td>必需。规定 cookie 的值。</td>
</tr>
<tr>
<td>expire</td>
<td>可选。规定 cookie 的有效期。</td>
</tr>
<tr>
<td>path</td>
<td>可选。规定 cookie 的服务器路径。</td>
</tr>
<tr>
<td>domain</td>
<td>可选。规定 cookie 的域名。</td>
</tr>
<tr>
<td>secure</td>
<td>可选。规定是否通过安全的 HTTPS 连接来传输 cookie。</td>
</tr>
</tbody>
</table>
<h2>提示和注释</h2>
<p class="note"><span>注释：</span>可以通过 $HTTP_COOKIE_VARS["user"] 或 $_COOKIE["user"] 来访问名为 &#8220;user&#8221; 的 cookie 的值。</p>
<p class="note"><span>注释：</span>在发送 cookie 时，cookie 的值会自动进行 URL 编码。接收时会进行 URL 解码。如果你不需要这样，可以使用setrawcookie()代替.</p>
<p>如果希望用户关闭其浏览器后，仍保留此cookie，则必须传递第三个参数给setcookie()函数，即设定此cookie的有效日期。由于<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>的背 景完全源于Unix的思想，这个有效期限需要以从1970年1月1日起算的总秒数来代表。如果作为Unix程序员，这种算法对你而言可能是合情合理的。但 如果来自<a onclick="tagshow(event, 'Windows');" href="javascript:;" target="_self"><span style="text-decoration: underline;"><strong><span style="color: #009999;">Windows</span></strong></span></a>或Macintosh阵营，你可能只能摇头叹息，无法理解那些古怪的Unix家伙们。</p>
<p>不过无需害怕。<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>提供一个很好用的函数mktime()。你只要按顺序传送给mktime()你希望表示的小时，分钟，秒数，月份，日期，及年份，mktime()就会返回该日期自1970年1月1日的总秒数.</p>
<p>如果需要模拟 Y2K 问题：</p>
<p>&lt;?<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">php</a></p>
<p>$y2k = mktime(0,0,0,1,1,2000);</p>
<p>setcookie(&#8217;name&#8217;, &#8216;bret&#8217;, $y2k);</p>
<p>?&gt;</p>
<p>现在，你的cookie将会在2000年失效。</p>
<p>如果需要更新cookie以让其储存新值，只需要将其原值覆盖即可。因此，即使你已经在之前的页面中刚刚发送cookie，仍可以将你的名字改为“jeff”。</p>
<p>&lt;?<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">php</a></p>
<p>$y2k = mktime(0,0,0,1,1,2000);</p>
<p>setcookie(&#8217;name&#8217;, &#8216;jeff&#8217;, $y2k);</p>
<p>?&gt;<br />
注意这样做并不会改变变量$name的值。在页面载入的时候，其值就已经确定。如果希望总是同时确定二者，可以编写如下<a onclick="tagshow(event, '%B4%FA%C2%EB');" href="javascript:;" target="_self"><span style="text-decoration: underline;"><strong><span style="color: #009999;">代码</span></strong></span></a>：</p>
<p>&lt;?<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">php</a></p>
<p>$name = &#8216;jeff&#8217;;</p>
<p>$y2k = mktime(0,0,0,1,1,2000);</p>
<p>setcookie(&#8217;name&#8217;, $name, $y2k);</p>
<p>?&gt;</p>
<p>setcookie ()的下两个参数可以控制读取cookie的程序的域及目录路径。默认设定为仅在与送出cookie的服务器相同且在同级或以下的目录结构内的页面才可以 读取其值。这是出于网络安全方面的考虑。然而，如果你有一个帐号“www.domain.com”但同时也是“other.domain.com”，且帐 户允许从~/myhome目录处理页面，则应更改setcookie()如下：</p>
<p>&lt;?<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">php</a></p>
<p>setcookie(&#8217;name&#8217;, &#8216;jeff&#8217;, $y2k, &#8216;~/myhome&#8217;, &#8216;.domain.com&#8217;);</p>
<p>?&gt;</p>
<p>我们还未使用过的setcookie()最后一个参数是设定cookie只传送给实行诸如SSL的安全连接的Web服务器。要使用此功能，将第六个值设置为1。</p>
<p>删除cookie非常简单，仅需简单地将cookie的名传送给setcookie()，<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>就会将其删除掉。</p>
<p>&lt;?<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">php</a> setcookie(&#8217;name&#8217;); ?&gt;</p>
<p>最后还有一个关于使用cookie的重要事项。由于cookie与HTTP的特定<a onclick="tagshow(event, '%B9%A4%D7%F7');" href="javascript:;" target="_self"><span style="text-decoration: underline;"><strong><span style="color: #009999;">工作</span></strong></span></a>方式，你必须在你输出任何文本前，传送出所有的cookie。否则<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>会给出警告，并且cookie也不会被传送。因此，这样做是正确的<a onclick="tagshow(event, '%B7%BD%B7%A8');" href="javascript:;" target="_self"><span style="text-decoration: underline;"><strong><span style="color: #009999;">方法</span></strong></span></a>：</p>
<p>&lt;?<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">php</a></p>
<p>setcookie(&#8217;name&#8217;, &#8216;jeff&#8217;);</p>
<p>echo &#8220;Hello Everyone!&#8221;;</p>
<p>?&gt;</p>
<p>以下是错误地：</p>
<p>&lt;?<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">php</a></p>
<p>echo &#8220;Hello Everyone!&#8221;;</p>
<p>setcookie(&#8217;name&#8217;, &#8216;jeff&#8217;);</p>
<p>?&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.helloyi.cn/index.php/2009/07/08/php-cookie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP和Python/Ruby运行机制的本质区别</title>
		<link>http://www.helloyi.cn/index.php/2009/06/24/php-python-ruby/</link>
		<comments>http://www.helloyi.cn/index.php/2009/06/24/php-python-ruby/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 04:05:02 +0000</pubDate>
		<dc:creator>好易阁</dc:creator>
				<category><![CDATA[WEB编程技术]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[网络知识]]></category>
		<category><![CDATA[网页设计]]></category>

		<guid isPermaLink="false">http://www.helloyi.cn/?p=2654</guid>
		<description><![CDATA[PHP和Python/Ruby的运行机制有一个本质区别：PHP是每次HTTP请求过来以后，初始化全部资源（例如创建数据库链接、加载系统类库，创建缓存等等），处理完毕，释放全部资源，这不像Python/Ruby之类带有GC的脚本语言，Python/Ruby是初次启动的时候初始化资源，随后的请求就不必再次初始化资源了。
这种机制的差异带来的区别就是：
1、PHP极难出现严重的内存泄露问题，随便你代码写的多烂，反正每个请求一执行完毕，所有资源统统释放光。而Python/Ruby则需要依赖GC来回收内存，因此稍有不慎，还是会出现GC无法释放的内存泄露问题。
2、PHP每次请求都要初始化资源，这个开销非常大。所以尽管PHP解析器本身的运行速度是极快的，但是一旦使用复杂的PHP框架，那么由于需要每次请求的时候初始化整个框架，性能的下降非常厉害，你用一个很复杂的PHP框架的结果就是整体性能被Ruby远远甩开。这也是为什么PHP社区这么多年来，并不怎么倾向于使用框架的原因之一。
3、由于PHP这种每请求初始化资源的机制，也造成了PHP添加跨请求的高级特性相当困难，这是PHP本身一个很大的限制，但是反过来说，正是这种限制使得PHP始终保持在一个比较简单的web语言上面，而正是这一点才是PHP得以成为互联网第一Web编程语言的原因，因此也未必就不好。
总之，PHP和Ruby的差异还是很大的，不适合放在一起比较，其实应该比较的是Ruby和Python才对。
所以我觉得Rails这种框架性做法被PHP跟风以后，其实是把PHP带上了邪路，所以不如说是Rails在误导PHP的发展。顺便多说一句：DHH在编写basecamp之前，一直是用PHP的，并且自己还写了一个PHP的快速开发框架，他改用ruby以后，把当初自己写的PHP框架也移植过来了，这个框架实际上是Rails最初的原型。那么为什么DHH当初不直接基于PHP做Rails呢?非要改用ruby以后，才发表rails呢？你看看PHP这种运行机制就知道了，PHP做复杂的web开发框架并不是一条光明的道路。
转自：http://www.javaeye.com/post/853931?page=1
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>和Python/Ruby的运行机制有一个本质区别：<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>是每次HTTP请求过来以后，初始化全部资源（例如创建数据库链接、加载系统类库，创建缓存等等），处理完毕，释放全部资源，这不像Python/Ruby之类带有GC的脚本语言，Python/Ruby是初次启动的时候初始化资源，随后的请求就不必再次初始化资源了。<br />
这种机制的差异带来的区别就是：</p>
<p><span id="more-2654"></span>1、<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>极难出现严重的内存泄露问题，随便你代码写的多烂，反正每个请求一执行完毕，所有资源统统释放光。而Python/Ruby则需要依赖GC来回收内存，因此稍有不慎，还是会出现GC无法释放的内存泄露问题。</p>
<p>2、<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>每次请求都要初始化资源，这个开销非常大。所以尽管<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>解析器本身的运行速度是极快的，但是一旦使用复杂的<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>框架，那么由于需要每次请求的时候初始化整个框架，性能的下降非常厉害，你用一个很复杂的<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>框架的结果就是整体性能被Ruby远远甩开。这也是为什么<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>社区这么多年来，并不怎么倾向于使用框架的原因之一。</p>
<p>3、由于<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>这种每请求初始化资源的机制，也造成了<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>添加跨请求的高级特性相当困难，这是<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>本身一个很大的限制，但是反过来说，正是这种限制使得<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>始终保持在一个比较简单的web语言上面，而正是这一点才是<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>得以成为互联网第一Web编程语言的原因，因此也未必就不好。</p>
<p>总之，<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>和Ruby的差异还是很大的，不适合放在一起比较，其实应该比较的是Ruby和Python才对。</p>
<p>所以我觉得Rails这种框架性做法被<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>跟风以后，其实是把<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>带上了邪路，所以不如说是Rails在误导<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>的发展。顺便多说一句：DHH在编写basecamp之前，一直是用<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>的，并且自己还写了一个<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>的快速开发框架，他改用ruby以后，把当初自己写的<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>框架也移植过来了，这个框架实际上是Rails最初的原型。那么为什么DHH当初不直接基于<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>做Rails呢?非要改用ruby以后，才发表rails呢？你看看<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>这种运行机制就知道了，<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>做复杂的web开发框架并不是一条光明的道路。</p>
<p><a href="http://www.javaeye.com/post/853931?page=1"><span style="color: #000000;">转自：</span>http://www.javaeye.com/post/853931?page=1</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.helloyi.cn/index.php/2009/06/24/php-python-ruby/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XHTML编辑器xhEditor 0.9.5发布</title>
		<link>http://www.helloyi.cn/index.php/2009/06/09/xheditor/</link>
		<comments>http://www.helloyi.cn/index.php/2009/06/09/xheditor/#comments</comments>
		<pubDate>Tue, 09 Jun 2009 05:25:14 +0000</pubDate>
		<dc:creator>好易阁</dc:creator>
				<category><![CDATA[网页设计]]></category>
		<category><![CDATA[站长工具]]></category>

		<guid isPermaLink="false">http://www.helloyi.cn/?p=2599</guid>
		<description><![CDATA[xhEditor是一个基于jQuery开发的简单迷你并且高效的可视化XHTML编辑器，基于网络访问并且兼容IE 6.0-8.0,Firefox 3.0,Opera 9.6,Chrome 1.0,Safari 3.22。
最新0.9.5版添加了Ajax式的图片上传功能，并更新了大量功能修正。
XHTML编辑器 ver 0.9.5 Change(ver 0.9.5更新)：
1, 添加：jQuery事件层接管textarea的focus事件，以解决某些表单校验组件由于textarea隐藏后，对textarea的聚焦错误问题(必需要使用jQuery的focus方法)
2, 添加：JS接口添加appendHTML函数，用来向编辑器内部结尾添加HTML代码
3, 添加：过滤类似无意义HTML代码：前后标签完全一样且不带任何属性和样式，中间没必要结束并新开
4, 添加：图片上传功能，可以在编辑器初始化时设置uploadUrl参数开启
5, 添加：UBB模式增加背景色和删除线功能，至此支持了全部的标签，删除ubb按钮集
6, 添加：编辑器的focus和blur接口，可在编辑器初始化时指定
7, 添加：添加初始化参数：编辑器初始化默认为源代码模式:sourceMode
8, 修正：某些不支持盒模型的页面标准可能无法全屏的问题，比如不带任何标准定义的html头
9, 修正：JS文件调用的时候若在结尾加上类似?v=0.9.4这样的代码，会引起编辑器初始严重错误的问题
编辑器组件采用LGPL协议开放源代码，您可以任意修改，并使用在您商业或者非商业系统中。同样，您也可以任意的学习和参考我们的源代码。若您对本编辑器代码进行改动或者再开发并对外发布的话，请您也使用LGPL协议来开放您的源代码，谢谢。
在大家的支持下，我们的xhEditor会越来越完善，在此我们邀请大家一起来参加和见证xhEditor的成长之路。
最新0.9.5版程序下载：http://code.google.com/p/xheditor/downloads/list
演示程序：
默认模式：http://static.pirate9.com/js/xheditor_demos/demo1.html
自定义按钮：http://static.pirate9.com/js/xheditor_demos/demo2.html
皮肤选择：http://static.pirate9.com/js/xheditor_demos/demo3.html
其它选项：http://static.pirate9.com/js/xheditor_demos/demo4.html
Javascript交互：http://static.pirate9.com/js/xheditor_demos/demo5.html
非utf-8编码网页调用：http://static.pirate9.com/js/xheditor_demos/demo6.html
UBB可视化编辑：http://static.pirate9.com/js/xheditor_demos/demo7.html
Ajax图片上传：http://static.pirate9.com/js/xheditor_demos/demo8.html
]]></description>
			<content:encoded><![CDATA[<p>xhEditor是一个基于jQuery开发的简单迷你并且高效的可视化XHTML编辑器，基于网络访问并且兼容IE 6.0-8.0,Firefox 3.0,Opera 9.6,Chrome 1.0,Safari 3.22。</p>
<p><span id="more-2599"></span>最新0.9.5版添加了Ajax式的图片上传功能，并更新了大量功能修正。</p>
<p><strong>XHTML编辑器 ver 0.9.5 Change(ver 0.9.5更新)：</strong></p>
<p>1, 添加：jQuery事件层接管textarea的focus事件，以解决某些表单校验组件由于textarea隐藏后，对textarea的聚焦错误问题(必需要使用jQuery的focus方法)</p>
<p>2, 添加：JS接口添加appendHTML函数，用来向编辑器内部结尾添加HTML代码</p>
<p>3, 添加：过滤类似无意义HTML代码：前后标签完全一样且不带任何属性和样式，中间没必要结束并新开</p>
<p>4, 添加：图片上传功能，可以在编辑器初始化时设置uploadUrl参数开启</p>
<p>5, 添加：UBB模式增加背景色和删除线功能，至此支持了全部的标签，删除ubb按钮集</p>
<p>6, 添加：编辑器的focus和blur接口，可在编辑器初始化时指定</p>
<p>7, 添加：添加初始化参数：编辑器初始化默认为源代码模式:sourceMode</p>
<p>8, 修正：某些不支持盒模型的页面标准可能无法全屏的问题，比如不带任何标准定义的html头</p>
<p>9, 修正：JS文件调用的时候若在结尾加上类似?v=0.9.4这样的代码，会引起编辑器初始严重错误的问题</p>
<p>编辑器组件采用LGPL协议开放源代码，您可以任意修改，并使用在您商业或者非商业系统中。同样，您也可以任意的学习和参考我们的源代码。若您对本编辑器代码进行改动或者再开发并对外发布的话，请您也使用LGPL协议来开放您的源代码，谢谢。</p>
<p>在大家的支持下，我们的xhEditor会越来越完善，在此我们邀请大家一起来参加和见证xhEditor的成长之路。</p>
<p>最新0.9.5版程序下载：http://code.google.com/p/xheditor/downloads/list<br />
演示程序：</p>
<p>默认模式：http://static.pirate9.com/js/xheditor_demos/demo1.html</p>
<p>自定义按钮：http://static.pirate9.com/js/xheditor_demos/demo2.html</p>
<p>皮肤选择：http://static.pirate9.com/js/xheditor_demos/demo3.html</p>
<p>其它选项：http://static.pirate9.com/js/xheditor_demos/demo4.html</p>
<p>Javascript交互：http://static.pirate9.com/js/xheditor_demos/demo5.html</p>
<p>非utf-8编码网页调用：http://static.pirate9.com/js/xheditor_demos/demo6.html</p>
<p>UBB可视化编辑：http://static.pirate9.com/js/xheditor_demos/demo7.html</p>
<p>Ajax图片上传：http://static.pirate9.com/js/xheditor_demos/demo8.html</p>
]]></content:encoded>
			<wfw:commentRss>http://www.helloyi.cn/index.php/2009/06/09/xheditor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTML5令人期待的5项功能</title>
		<link>http://www.helloyi.cn/index.php/2009/06/01/html5-5-function/</link>
		<comments>http://www.helloyi.cn/index.php/2009/06/01/html5-5-function/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 02:49:26 +0000</pubDate>
		<dc:creator>好易阁</dc:creator>
				<category><![CDATA[网页设计]]></category>
		<category><![CDATA[网络知识]]></category>

		<guid isPermaLink="false">http://www.helloyi.cn/?p=2590</guid>
		<description><![CDATA[HTML 5 是超文本置标语言下一个重要版本，HTML 自1999年发布 HTML 4.01 以来，其开发一直处于停顿状态，而1999年至今正好是 Web 飞速发展的时间，现在的 HTML 版本已经无法适应现在的 Web 内容与应用。HTML 5 旨在提高 HTML 的交互行，支持当前多样的，复杂的 Web 内容。同时，它也会解决 HTML 4 Web 应用功能上的欠缺。
一点历史背景
HTML 5 的讨论开始于2003年，当时，W3C 对由 Web Hypertext Application Technology Working Group (WHATWG) 开发的 HTML 5 草案表示出兴趣，WHATWG 创始于2004年，由苹果，Mozilla 基金会，以及 Opera 公司的 代表组成。此后，W3C HTML Working Group 于2007年成立并着手开发 HTML 5。目前，开发工作仍在进行中，并将于2012年向 W3C 提交初步意见，不过现在已经有不少浏览器部分支持 HTML 5。本文介绍 HTML 5 的5大令人激动的新功能。

1. [...]]]></description>
			<content:encoded><![CDATA[<p>HTML 5 是超文本置标语言下一个重要版本，HTML 自1999年发布 HTML 4.01 以来，其开发一直处于停顿状态，而1999年至今正好是 Web 飞速发展的时间，现在的 HTML 版本已经无法适应现在的 Web 内容与应用。HTML 5 旨在提高 HTML 的交互行，支持当前多样的，复杂的 Web 内容。同时，它也会解决 HTML 4 Web 应用功能上的欠缺。</p>
<p><span id="more-2590"></span>一点历史背景</p>
<p>HTML 5 的讨论开始于2003年，当时，<a href="http://www.w3.org/">W3C</a> 对由 <a href="http://www.whatwg.org/">Web Hypertext Application Technology Working Group</a> (WHATWG) 开发的 HTML 5 草案表示出兴趣，WHATWG 创始于2004年，由苹果，Mozilla 基金会，以及 Opera 公司的 代表组成。此后，<a href="http://www.w3.org/html/wg/">W3C HTML Working Group</a> 于2007年成立并着手开发 HTML 5。目前，开发工作仍在进行中，并将于2012年向 W3C 提交初步意见，不过现在已经有不少浏览器部分支持 HTML 5。本文介绍 HTML 5 的5大令人激动的新功能。</p>
<h2></h2>
<h2><strong>1. 一些帮助我们描述内容的新标签<br />
</strong></h2>
<p>Web 内容的多样性让 HTML4 力不从心，在描述一个网页时，HTML4 如下 表现：</p>
<p><img style="border: black 1px solid;" src="http://www.readwriteweb.com/images/html5_dec08c.jpg" alt="" width="531" height="380" /></p>
<p> </p>
<p>HTML 5 将如下表现：</p>
<p><img style="border: black 1px solid;" src="http://www.readwriteweb.com/images/html5_dec08d.jpg" alt="" width="534" height="385" /></p>
<p> </p>
<p>这样，浏览器就知道一个网页的各个部分各代表什么，比如 <span>&lt;</span>nav&gt; 部分是导航，而 <span>&lt;</span>article&gt; 部分是主要内容 。除了更漂亮的 代码与语义标签，这种改变还带来更多好处，比如，搜索引擎可以更准确地知道一个网页的哪部分内容更重要。关于 HTML 5 新标签，<a href="http://www.ibm.com/developerworks/library/x-html5/">IBM有详细的论述</a>。</p>
<h2><strong>2. 改进的 Web 表单处理</strong></h2>
<p>HTML 5 推出 <a href="http://www.whatwg.org/specs/web-forms/current-work/">Web Forms 2.0</a>，为开发提供许多新选项和新功能，以更简单更有效地处理表单的输入与发布。Web Form 2.0 最令人兴奋的功能是输入验证。目前，我们需要通过 JavaScript 或服务器端的逻辑，实现同样的功能。</p>
<p>比如有下面这样一个表单:</p>
<p><img src="http://www.readwriteweb.com/images/html5_dec08e.jpg" alt="" width="261" height="203" /></p>
<p>在 HTML4 我们需要这样写代码，然后使用 JavaScript 或服务器端的脚本进行验证：</p>
<p><img src="http://www.readwriteweb.com/images/html5_dec08f.jpg" alt="" width="511" height="175" /></p>
<p> </p>
<p>而 HTML5 中的  <code><a href="http://www.whatwg.org/specs/web-forms/current-work/#required0">required</a></code> <code>与 <a href="http://www.whatwg.org/specs/web-forms/current-work/#email">email</a></code> 属性可以直接实现验证，如下：</p>
<p><img src="http://www.readwriteweb.com/images/html5_dec08g.jpg" alt="" width="511" height="175" /></p>
<h2><strong>3. 为 Web 开发提供 API</strong></h2>
<p>HTML 5 将提供多个 <a href="http://en.wikipedia.org/wiki/API">API</a>，如音频和 视频标签可以让开发者不借助第三方工具直接播放 Web 视频和音频：</p>
<p><img src="http://www.readwriteweb.com/images/html5_dec08h.jpg" alt="" width="533" height="84" /></p>
<p><a href="http://dev.opera.com/articles/view/a-call-for-video-on-the-web-opera-vid/">Opera 在者方面有不少研究</a>并有<a href="http://people.opera.com/howcome/2007/video/simple.html">视频播放 demo</a> 推出</p>
<p> </p>
<h2><strong>4. <span>&lt;</span>canvas&gt;标签将允许直接在上面用脚本绘图</strong></h2>
<p>人更容易从图片获得信息，如，下面的信息通过表格和圆饼图两种方式显示，效果明显不一样：</p>
<p><img src="http://www.readwriteweb.com/images/html5_dec08i.jpg" alt="" width="511" height="233" /></p>
<p>然而以往要实现这种效果，只能使用静态图片，无法对图片进行调整。使用 <a href="http://www.whatwg.org/specs/web-apps/current-work/#canvas"><span>&lt;</span>canvas&gt;</a> 标签，你可以实时修改参数对图形进行修改，比如，根据用户的投票，实时生成圆饼图。</p>
<h2><strong>5. 用户可以编辑网页的部分内容并实现同网页的交互</strong></h2>
<p> </p>
<p>HTML 5 将支持用户的<a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/editing.html">交互</a>，<code>contenteditable</code>属性允许你设定网页的哪一部分可以编辑，在基于 Wiki 的 站点，这非常实用。</p>
<h2>延伸阅读</h2>
<ul>
<li>You can read the <a href="http://www.w3.org/TR/html5/">latest working draft of HTML 5 specifications</a> on the W3C website （HTML 5最新工作草案）.</li>
<li>Learn about the <a href="http://www.w3.org/TR/html5-diff/">major differences</a> between HTML 4 and HTML 5 on the W3C website（HTML4/5的主要区别）.</li>
<li>IBM developerWorks has an excellent in-depth article on <a href="http://www.ibm.com/developerworks/library/x-html5/">new elements in HTML 5</a>.（IBM有一篇关于 HTML 5 的 深度 研究文章）</li>
<li>Read about the people in charge of developing HTML 5 specifications on the <a href="http://www.w3.org/html/wg/">W3C HTML Working Group website</a>.（W3C HTML 工作组成员）</li>
<li>Find out <a href="http://wiki.whatwg.org/wiki/What_you_can_do">what you can do</a> to help HTML 5 development on the WHATWG wiki website.（如何为 HTML 5 提供帮助）</li>
</ul>
<p>本文国际来源：http://www.readwriteweb.com/archives/5_exciting_things_in_html_5.<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">php</a><br />
中文翻译来源：<a href="http://www.helloyi.cn/">COMSHARP CMS</a> 官方网站</p>
]]></content:encoded>
			<wfw:commentRss>http://www.helloyi.cn/index.php/2009/06/01/html5-5-function/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>大型网站架构不得不考虑的10个问题</title>
		<link>http://www.helloyi.cn/index.php/2009/05/20/10-web-structure/</link>
		<comments>http://www.helloyi.cn/index.php/2009/05/20/10-web-structure/#comments</comments>
		<pubDate>Wed, 20 May 2009 08:50:37 +0000</pubDate>
		<dc:creator>好易阁</dc:creator>
				<category><![CDATA[网页设计]]></category>
		<category><![CDATA[qq技巧]]></category>
		<category><![CDATA[网络知识]]></category>

		<guid isPermaLink="false">http://www.helloyi.cn/?p=2572</guid>
		<description><![CDATA[这里的大型网站架构只包括高互动性高交互性的数据型大型网站，基于大家众所周知的原因，我们就不谈新闻类和一些依靠HTML静态化就可以实现的架构了，我们以高负载高数据交换高数据流动性的网站为例，比如海内，开心网等类似的web2.0系列架构。我们这里不讨论是PHP还是JSP或者.NET环境，我们从架构的方面去看问题，实现语言方面并不是问题，语言的优势在于实现而不是好坏，不论你选择任何语言，架构都是必须要面对的。
&#62;这里讨论一下大型网站需要注意和考虑的问题:
1、海量数据的处理
众所周知，对于一些相对小的站点来说，数据量并不是很大，select和update就可以解决我们面对的问题，本身负载量不是很大，最多再加几个索引就可以搞定。对于大型网站，每天的数据量可能就上百万，如果一个设计不好的多对多关系，在前期是没有任何问题的，但是随着用户的增长，数据量会是几何级的增长的。在这个时候我们对于一个表的select和update的时候(还不说多表联合查询)的成本的非常高的。
2、数据并发的处理
在一些时候，2.0的CTO都有个尚方宝剑，就是缓存。对于缓存，在高并发高处理的时候也是个大问题。在整个应用程序下，缓存是全局共享的，然而在我们进行修改的时候就，如果两个或者多个请求同时对缓存有更新的要求的情况下，应用程序会直接的死掉。这个时候，就需要一个好的数据并发处理策略以及缓存策略。
另外，就是数据库的死锁问题，也许平时我们感觉不到，死锁在高并发的情况下的出现的概率是非常高的，磁盘缓存就是一个大问题。
3、文件存贮的问题
对于一些支持文件上传的2.0的站点，在庆幸硬盘容量越来越大的时候我们更多的应该考虑的是文件应该如何被存储并且被有效的索引。常见的方案是对文件按照日期和类型进行存贮。但是当文件量是海量的数据的情况下，如果一块硬盘存贮了500个G的琐碎文件，那么维护的时候和使用的时候磁盘的Io就是一个巨大的问题，哪怕你的带宽足够，但是你的磁盘也未必响应过来。如果这个时候还涉及上传，磁盘很容易就over了。
也许用raid和专用存贮服务器能解决眼下的问题，但是还有个问题就是各地的访问问题，也许我们的服务器在北京，可能在云南或者新疆的访问速度如何解决?如果做分布式，那么我们的文件索引以及架构该如何规划。
所以我们不得不承认，文件存贮是个很不容易的问题
4、数据关系的处理
我们可以很容易的规划出一个符合第三范式的数据库，里面布满了多对多关系，还能用GUID来替换INDENTIFY COLUMN 但是，多对多关系充斥的2.0时代，第三范式是第一个应该被抛弃的。必须有效的把多表联合查询降到最低。
5、数据索引的问题
众所周知，索引是提高数据库效率查询的最方面最廉价最容易实现的方案。但是，在高UPDATE的情况下，update和delete付出的成本会高的无法想想，笔者遇到过一个情况，在更新一个聚焦索引的时候需要10分钟来完成，那么对于站点来说，这些基本上是不可忍受的。
索引和更新是一对天生的冤家，问题A，D，E这些是我们在做架构的时候不得不考虑的问题，并且也可能是花费时间最多的问题，
6、分布式处理
对于2.0网站由于其高互动性，CDN实现的效果基本上为0，内容是实时更新的，我们常规的处理。为了保证各地的访问速度，我们就需要面对一个绝大的问题，就是如何有效的实现数据同步和更新，实现各地服务器的实时通讯有是一个不得不需要考虑的问题。
7、Ajax的利弊分析
成也AJAX，败也AJAX，AJAX成为了主流趋势，突然发现基于XMLHTTP的post和get是如此的容易。客户端get或者post 到服务器数据，服务器接到数据请求之后返回来，这是一个很正常的AJAX请求。但是在AJAX处理的时候，如果我们使用一个抓包工具的话，对数据返回和处理是一目了然。对于一些计算量大的AJAX请求的话，我们可以构造一个发包机，很容易就可以把一个webserver干掉。
8、数据安全性的分析
对于HTTP协议来说，数据包都是明文传输的，也许我们可以说我们可以用加密啊，但是对于G问题来说的话，加密的过程就可能是明文了(比如我们知道的QQ，可以很容易的判断他的加密，并有效的写一个跟他一样的加密和解密方法出来的)。当你站点流量不是很大的时候没有人会在乎你，但是当你流量上来之后，那么所谓的外挂，所谓的群发就会接踵而来(从qq一开始的群发可见端倪)。也许我们可以很的意的说，我们可以采用更高级别的判断甚至HTTPS来实现，注意，当你做这些处理的时候付出的将是海量的database，io以及CPU的成本。对于一些群发，基本上是不可能的。笔者已经可以实现对于百度空间和qq空间的群发了。大家愿意试试，实际上并不是很难。
9、数据同步和集群的处理的问题
当我们的一台databaseserver不堪重负的时候，这个时候我们就需要做基于数据库的负载和集群了。而这个时候可能是最让人困扰的的问题了，数据基于网络传输根据数据库的设计的不同，数据延迟是很可怕的问题，也是不可避免的问题，这样的话，我们就需要通过另外的手段来保证在这延迟的几秒或者更长的几分钟时间内，实现有效的交互。比如数据散列，分割，内容处理等等问题
10、数据共享的渠道以及OPENAPI趋势
Openapi已经成为一个不可避免的趋势，从google，facebook，myspace到海内校内，都在考虑这个问题，它可以更有效的留住用户并激发用户的更多的兴趣以及让更多的人帮助你做最有效的开发。这个时候一个有效的数据共享平台，数据开放平台就成为必不可少的途径了，而在开放的接口的情况保证数据的安全性和性能，又是一个我们必须要认真思考的问题了。
]]></description>
			<content:encoded><![CDATA[<p>这里的大型网站架构只包括高互动性高交互性的数据型大型网站，基于大家众所周知的原因，我们就不谈新闻类和一些依靠HTML静态化就可以实现的架构了，我们以高负载高数据交换高数据流动性的网站为例，比如海内，开心网等类似的web2.0系列架构。我们这里不讨论是<a href="http://www.helloyi.cn/index.php/tag/php/" class="st_tag internal_tag" rel="tag nofollow" title="标签 PHP 下的日志">PHP</a>还是JSP或者.NET环境，我们从架构的方面去看问题，实现语言方面并不是问题，语言的优势在于实现而不是好坏，不论你选择任何语言，架构都是必须要面对的。</p>
<p>&gt;这里讨论一下大型网站需要注意和考虑的问题:</p>
<p><span id="more-2572"></span><strong><span style="color: #0000ff;">1、海量数据的处理</span></strong></p>
<p>众所周知，对于一些相对小的站点来说，数据量并不是很大，select和update就可以解决我们面对的问题，本身负载量不是很大，最多再加几个索引就可以搞定。对于大型网站，每天的数据量可能就上百万，如果一个设计不好的多对多关系，在前期是没有任何问题的，但是随着用户的增长，数据量会是几何级的增长的。在这个时候我们对于一个表的select和update的时候(还不说多表联合查询)的成本的非常高的。</p>
<p><strong><span style="color: #0000ff;">2、数据并发的处理</span></strong></p>
<p>在一些时候，2.0的CTO都有个尚方宝剑，就是缓存。对于缓存，在高并发高处理的时候也是个大问题。在整个应用程序下，缓存是全局共享的，然而在我们进行修改的时候就，如果两个或者多个请求同时对缓存有更新的要求的情况下，应用程序会直接的死掉。这个时候，就需要一个好的数据并发处理策略以及缓存策略。</p>
<p>另外，就是数据库的死锁问题，也许平时我们感觉不到，死锁在高并发的情况下的出现的概率是非常高的，磁盘缓存就是一个大问题。</p>
<p><strong><span style="color: #0000ff;">3、文件存贮的问题</span></strong></p>
<p>对于一些支持文件上传的2.0的站点，在庆幸硬盘容量越来越大的时候我们更多的应该考虑的是文件应该如何被存储并且被有效的索引。常见的方案是对文件按照日期和类型进行存贮。但是当文件量是海量的数据的情况下，如果一块硬盘存贮了500个G的琐碎文件，那么维护的时候和使用的时候磁盘的Io就是一个巨大的问题，哪怕你的带宽足够，但是你的磁盘也未必响应过来。如果这个时候还涉及上传，磁盘很容易就over了。</p>
<p>也许用raid和专用存贮服务器能解决眼下的问题，但是还有个问题就是各地的访问问题，也许我们的服务器在北京，可能在云南或者新疆的访问速度如何解决?如果做分布式，那么我们的文件索引以及架构该如何规划。</p>
<p>所以我们不得不承认，文件存贮是个很不容易的问题</p>
<p><strong><span style="color: #0000ff;">4、数据关系的处理</span></strong></p>
<p>我们可以很容易的规划出一个符合第三范式的数据库，里面布满了多对多关系，还能用GUID来替换INDENTIFY COLUMN 但是，多对多关系充斥的2.0时代，第三范式是第一个应该被抛弃的。必须有效的把多表联合查询降到最低。</p>
<p><strong><span style="color: #0000ff;">5、数据索引的问题</span></strong></p>
<p>众所周知，索引是提高数据库效率查询的最方面最廉价最容易实现的方案。但是，在高UPDATE的情况下，update和delete付出的成本会高的无法想想，笔者遇到过一个情况，在更新一个聚焦索引的时候需要10分钟来完成，那么对于站点来说，这些基本上是不可忍受的。</p>
<p>索引和更新是一对天生的冤家，问题A，D，E这些是我们在做架构的时候不得不考虑的问题，并且也可能是花费时间最多的问题，</p>
<p><strong><span style="color: #0000ff;">6、分布式处理</span></strong></p>
<p>对于2.0网站由于其高互动性，CDN实现的效果基本上为0，内容是实时更新的，我们常规的处理。为了保证各地的访问速度，我们就需要面对一个绝大的问题，就是如何有效的实现数据同步和更新，实现各地服务器的实时通讯有是一个不得不需要考虑的问题。</p>
<p><strong><span style="color: #0000ff;">7、Ajax的利弊分析</span></strong></p>
<p>成也AJAX，败也AJAX，AJAX成为了主流趋势，突然发现基于XMLHTTP的post和get是如此的容易。客户端get或者post 到服务器数据，服务器接到数据请求之后返回来，这是一个很正常的AJAX请求。但是在AJAX处理的时候，如果我们使用一个抓包工具的话，对数据返回和处理是一目了然。对于一些计算量大的AJAX请求的话，我们可以构造一个发包机，很容易就可以把一个webserver干掉。</p>
<p><strong><span style="color: #0000ff;">8、数据安全性的分析</span></strong></p>
<p>对于HTTP协议来说，数据包都是明文传输的，也许我们可以说我们可以用加密啊，但是对于G问题来说的话，加密的过程就可能是明文了(比如我们知道的QQ，可以很容易的判断他的加密，并有效的写一个跟他一样的加密和解密方法出来的)。当你站点流量不是很大的时候没有人会在乎你，但是当你流量上来之后，那么所谓的外挂，所谓的群发就会接踵而来(从qq一开始的群发可见端倪)。也许我们可以很的意的说，我们可以采用更高级别的判断甚至HTTPS来实现，注意，当你做这些处理的时候付出的将是海量的database，io以及CPU的成本。对于一些群发，基本上是不可能的。笔者已经可以实现对于百度空间和qq空间的群发了。大家愿意试试，实际上并不是很难。</p>
<p><strong><span style="color: #0000ff;">9、数据同步和集群的处理的问题</span></strong></p>
<p>当我们的一台databaseserver不堪重负的时候，这个时候我们就需要做基于数据库的负载和集群了。而这个时候可能是最让人困扰的的问题了，数据基于网络传输根据数据库的设计的不同，数据延迟是很可怕的问题，也是不可避免的问题，这样的话，我们就需要通过另外的手段来保证在这延迟的几秒或者更长的几分钟时间内，实现有效的交互。比如数据散列，分割，内容处理等等问题</p>
<p><strong><span style="color: #0000ff;">10、数据共享的渠道以及OPENAPI趋势</span></strong></p>
<p>Openapi已经成为一个不可避免的趋势，从google，facebook，myspace到海内校内，都在考虑这个问题，它可以更有效的留住用户并激发用户的更多的兴趣以及让更多的人帮助你做最有效的开发。这个时候一个有效的数据共享平台，数据开放平台就成为必不可少的途径了，而在开放的接口的情况保证数据的安全性和性能，又是一个我们必须要认真思考的问题了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.helloyi.cn/index.php/2009/05/20/10-web-structure/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>网页UTF8编码开发中空白的问题</title>
		<link>http://www.helloyi.cn/index.php/2009/04/29/utf8-blank-question/</link>
		<comments>http://www.helloyi.cn/index.php/2009/04/29/utf8-blank-question/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 03:11:40 +0000</pubDate>
		<dc:creator>好易阁</dc:creator>
				<category><![CDATA[网页设计]]></category>
		<category><![CDATA[网络知识]]></category>

		<guid isPermaLink="false">http://www.helloyi.cn/?p=2525</guid>
		<description><![CDATA[开发中一直没办法解决的一个问题
　　页面采用UTF8编码，头部和尾部用了模板包含文件的方法，结果头部和尾部无端端各多出一个约10px的空行，什么也没有。
　　原因是全部采用utf8编码，包含文件的时候，最后的二进制流中包含了多次UTF8 BOM标记，IE不能正常解析包含多个UTF8 BOM 标记的页面，直接替换成实际显示的回车，这样导致一个空行，而firefox却没有这个问题。
　　故如果模板采用包含的方法包含多个utf8文件需要用ultraedit保存时另存为功能 选择utf8 无bom格式保存即可。
另外，如果中文页面在html head标记中将title标记放在&#60;meta http-equiv=”content-type” content=”text/html; charset=UTF-8″ /&#62;前面会导致页面空白。
　　所以utf8页面应该使用标准顺序
&#60;meta http-equiv=”content-type” content=”text/html; charset=UTF-8″ /&#62;
&#60;meta http-equiv=”content-language” content=”zh-CN” /&#62;
&#60;meta name=”robots” content=”index,follow” /&#62;
&#60;meta name=”keywords” content=”&#8221; /&#62;
&#60;meta name=”description” content=”&#8221; /&#62;
&#60;meta name=”rating” content=”general” /&#62;
&#60;meta name=”author” content=”&#8221; /&#62;
&#60;meta name=”copyright” content=”&#8221; /&#62;
&#60;meta name=”generator” content=”&#8221; /&#62;
&#60;title&#62;&#60;/title&#62;
BOM头：\xEF\xBB\xBF，PHP4、5尚对BOM无视，所以在解析前直接输出。
对此 w3.org 标准 FAQ 中对此问题有一个专门的描述：
http://www.w3.org/International/questions/qa-utf8-bom
具体如下:
在UCS 编码中有一个叫做”ZERO WIDTH NO-BREAK SPACE”的字符，它的编码是FEFF。而FFFE在UCS中是不存在的字符，所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前，先传输字符”ZERO WIDTH NO-BREAK SPACE”。这样如果接收者收到FEFF，就表明这个字节流是Big-Endian的；如果收到FFFE，就表明这个字节流是Little- Endian的。因此字符”ZERO WIDTH NO-BREAK SPACE”又被称作BOM。
UTF-8不需要BOM来表明字节顺序，但可以用BOM来表明编码方式。字符”ZERO WIDTH [...]]]></description>
			<content:encoded><![CDATA[<p><a onclick="tagshow(event, '%BF%AA%B7%A2');" href="javascript:;" target="_self"><span style="text-decoration: underline;"><strong><span style="color: #07519a;">开发</span></strong></span></a>中一直没办法解决的一个问题<br />
　　页面采用UTF8编码，头部和尾部用了<a onclick="tagshow(event, '%C4%A3%B0%E5');" href="javascript:;" target="_self"><span style="text-decoration: underline;"><strong><span style="color: #07519a;">模板</span></strong></span></a>包含文件的<a onclick="tagshow(event, '%B7%BD%B7%A8');" href="javascript:;" target="_self"><span style="text-decoration: underline;"><strong><span style="color: #07519a;">方法</span></strong></span></a>，结果头部和尾部无端端各多出一个约10px的空行，什么也没有。<br />
　　原因是全部采用utf8编码，包含文件的时候，最后的二进制流中包含了多次UTF8 BOM标记，IE不能正常解析包含多个UTF8 BOM 标记的页面，直接替换成实际显示的回车，这样导致一个空行，而firefox却没有这个问题。<br />
　　故如果模板采用包含的方法包含多个utf8文件需要用ultraedit保存时另存为功能 选择utf8 无bom格式保存即可。</p>
<p><span id="more-2525"></span>另外，如果中文页面在html head标记中将title标记放在&lt;meta http-equiv=”content-type” content=”text/html; charset=UTF-8″ /&gt;前面会导致页面<a onclick="tagshow(event, '%BF%D5%B0%D7');" href="javascript:;" target="_self"><span style="text-decoration: underline;"><strong><span style="color: #07519a;">空白</span></strong></span></a>。<br />
　　所以utf8页面应该使用标准顺序</p>
<p>&lt;meta http-equiv=”content-type” content=”text/html; charset=UTF-8″ /&gt;<br />
&lt;meta http-equiv=”content-language” content=”zh-CN” /&gt;<br />
&lt;meta name=”robots” content=”index,follow” /&gt;<br />
&lt;meta name=”keywords” content=”&#8221; /&gt;<br />
&lt;meta name=”description” content=”&#8221; /&gt;<br />
&lt;meta name=”rating” content=”general” /&gt;<br />
&lt;meta name=”author” content=”&#8221; /&gt;<br />
&lt;meta name=”copyright” content=”&#8221; /&gt;<br />
&lt;meta name=”generator” content=”&#8221; /&gt;<br />
&lt;title&gt;&lt;/title&gt;</p>
<p>BOM头：\xEF\xBB\xBF，PHP4、5尚对BOM无视，所以在解析前直接输出。<br />
对此 w3.org 标准 FAQ 中对此问题有一个专门的描述：</p>
<p><a href="http://www.w3.org/International/questions/qa-utf8-bom"><span style="color: #07519a;">http://www.w3.org/International/questions/qa-utf8-bom</span></a></p>
<p>具体如下:</p>
<p>在UCS <a onclick="tagshow(event, '%B1%E0%C2%EB');" href="javascript:;" target="_self"><span style="text-decoration: underline;"><strong><span style="color: #07519a;">编码</span></strong></span></a>中有一个叫做”ZERO WIDTH NO-BREAK SPACE”的字符，它的编码是FEFF。而FFFE在UCS中是不存在的字符，所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前，先传输字符”ZERO WIDTH NO-BREAK SPACE”。这样如果接收者收到FEFF，就表明这个字节流是Big-Endian的；如果收到FFFE，就表明这个字节流是Little- Endian的。因此字符”ZERO WIDTH NO-BREAK SPACE”又被称作BOM。</p>
<p>UTF-8不需要BOM来表明字节顺序，但可以用BOM来表明编码方式。字符”ZERO WIDTH NO-BREAK SPACE”的UTF-8编码是EF BB BF。所以如果接收者收到以EF BB BF开头的字节流，就知道这是UTF-8编码了。</p>
<p><a onclick="tagshow(event, 'Windows');" href="javascript:;" target="_self"><span style="text-decoration: underline;"><strong><span style="color: #07519a;">Windows</span></strong></span></a>就是使用BOM来标记文本文件的编码方式的操作系统: WindowsXP Professional , 缺省字符集：中文</p>
<p>1） notepad ： 可以自动识别出没有带 bom 的 utf-8 编码格式文件，但不可以控制保存文件时是否添加 bom ， 如果保存文件，那么会统一添加 bom 。</p>
<p>2）editplus ： 不能自动识别出没有 bom 的 utf-8 编码格式文件，文件保存时，选择UTF-8 格式，不会在文件头写上 BOM header.</p>
<p>3） UltraEdit ： 对于字符编码的功能最为强大， 可以自动识别带 bom 和不带 bom 的 utf-8 文件 （可以配置） ； 保存的时候可以通过配置选择是否添加 bom.</p>
<p>（特别需要注意的是，保存一个新建立的文件时，需要选择另存为 utf-8 no bom 格式）</p>
<p>后来发现 Notepad ++ 也对于 utf-8 bom 支持比较好，推荐大家使用。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.helloyi.cn/index.php/2009/04/29/utf8-blank-question/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
