<?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>Bring煮义</title>
	<atom:link href="http://www.bringsir.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.bringsir.com</link>
	<description>php,mysql,apache,smarty,codeigniter,jquery,css,zendframework,最佳软件,etc</description>
	<lastBuildDate>Wed, 10 Mar 2010 09:07:24 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</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.bringsir.com/archives/798</link>
		<comments>http://www.bringsir.com/archives/798#comments</comments>
		<pubDate>Wed, 10 Mar 2010 08:54:46 +0000</pubDate>
		<dc:creator>kazaff</dc:creator>
				<category><![CDATA[W(L)AMP]]></category>
		<category><![CDATA[下拉菜单]]></category>
		<category><![CDATA[无限分类]]></category>

		<guid isPermaLink="false">http://www.bringsir.com/?p=798</guid>
		<description><![CDATA[


 

	header('Content-type: text/html; charset=gb2312');

	//以下是接收的数据格式
	//$array[0] = array("id"=>1,"pid"=>0,"name"=>"诛求");
	//$array[1] = array("id"=>2,"pid"=>0,"name"=>"2");
	//$array[2] = array("id"=>3,"pid"=>1,"name"=>"3");
	//$array[3] = array("id"=>4,"pid"=>1,"name"=>"4");
	//$array[4] = array("id"=>5,"pid"=>2,"name"=>"5");
	//$array[5] = array("id"=>6,"pid"=>4,"name"=>"6");
	//$array[6] = array("id"=>7,"name"=>"66","pid"=>6);

	draw($array);//执行，已经改成下拉菜单形式
	function draw($array){
	//tree array -- copy some codes from joomla
	$tree = array();
	if( $array ){
	foreach ( $array as $v ){
	$pt = $v['pid'];
	$list = @$tree[$pt] ? $tree[$pt] : array();
	array_push( $list, $v );
	$tree[$pt] = $list;
	}
	}

	//foreach root node
	echo $sel="
作为根栏目";
	foreach($tree[0] as $k=>$v)
	{
	echo "$v[name]";
	if($tree[$v['id']]) drawTree($tree[$v['id']],$tree,0);

	}
	echo [...]]]></description>
		<wfw:commentRss>http://www.bringsir.com/archives/798/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[转]《代码之道》书评</title>
		<link>http://www.bringsir.com/archives/795</link>
		<comments>http://www.bringsir.com/archives/795#comments</comments>
		<pubDate>Wed, 10 Mar 2010 00:43:30 +0000</pubDate>
		<dc:creator>kazaff</dc:creator>
				<category><![CDATA[读书心得]]></category>

		<guid isPermaLink="false">http://www.bringsir.com/?p=795</guid>
		<description><![CDATA[


 乍一看书名——《代码之道》——呵呵，好大的口气！何为道？道家 创始人老子认为“道”是宇宙的本原和普遍规律。这样一本仅仅200页的薄书能担得起“道”之名吗？笔者带着一丝怀疑翻开这本备受瞩目的书，细细的阅读，不 知不觉中已是豁然开朗——书的内容言简意赅，每个话题占用仅仅数页，却清晰明白的讲述了若干个道理，笔者不由得感慨：在我们身心疲惫的或是斗志昂扬的追逐 于各种丛出不穷的新技术、新概念的时候，我们能否暂停脚步，想一想走过的路，看一看类似《代码之道》这样的非技术书呢？
《代码之道》英文原书名为《I.M.Wright&#8217;s &#8220;Hard Code&#8221;》，属于微软核心技术丛书之一，作者Eric  Brechner，现任微软公司部门总监，在软件行业拥有超过20年的工作经验，从2001年起在微软内部刊物上采用I.M.Wright的笔名撰写 “Hard Code”栏目，其中讨论软件开发过程和职业生涯的种种问题，这本书就是对这个栏目的总结，话题包括：


项目管理
过程改进
软件质量
软件设计
提高效率
职业发展
自我完善
&#8230;&#8230;


针对每一个话题，I.M.Wright都根据丰富的工作经验提出了自己的观点，并介绍了来龙去脉，令人信服。笔者认为，大多数程序员，过于关注新技 术和新概念，往往忽略这种对工作的思考和总结——现在，技术更新换代的速度令人咋舌，虽然提倡终身学习，但我们的有限精力应该放在“核心竞争力”上。不论 技术如何发展，有一些能力是可以应用于各种环境的：

解决问题的能力
时间的安排
事务优先级的处理
工作与生活的平衡原则

《代码之道》对“核心竞争力”的各个方面也提出了自己的观点。对这本200页的精炼小书来说，笔者很难像写普通的书评那样对这49个主题再加以概括 总结，因此，笔者挑选了几个有关“核心竞争力”的主题，结合自己的实际体会，谈一谈《代码之道》提供的经验。

1. 如何集中精力、避免打扰？
在日常工作中，电子邮件、即时通讯工具、口头交流等等都会在你埋头苦干的时候打扰你，如何应对呢？《代码之道》引用了两个研究成果（p131）：


沉重的情境切换与抽大麻相比，会导致更多的智商下降。
员工在刚好的两个项目同时工作时最富有生产力。


I.M.Wright提倡的方法是：在工作时，把邮件通知提示等都尽量关闭，然后安心做自己的工作；定期的（比如，每隔半小时）浏览收到的邮件，并 且在查  看邮件时尽力把它完整处理掉，避免情境的切换。你可能会认为这样会导致某些低优先级的邮件浪费时间，但I.M.Wright却认为你在过后再次切换到这封 邮件所消耗的精力和时间要比即时处理还要多。
笔者也一直受到工作时被打断的困扰。特别是，一看到新邮件的提示，总是放下手中的活，冲动的打开新邮件先看大体内容，殊不知，这就导致了一次情境切 换，有时候暂时不想处理，于是关掉邮件，继续手中的工作，又一次情境切换。就这样白白浪费了自己的精力和时间。笔者猜想，有相当数量的程序员在日常工作中 被各种各样的事情打断，每天的有效工作时间逐渐压缩，这是否也是导致程序员经常加班的原因之一呢？
I.M.Wright  提出要想避免被打扰，还可以“让自己消失”，去一个没人能找到你的地方，使用笔记本电脑和远程桌面安心工作，或者选择一个其他人不在的时候工作，比如早上 早一点来公司，晚上回家用远程桌面工作。在这样一个安静的地方和时刻，你就可以抛开不必要的困扰，集中精力做一些工作。
笔者对这个观点非常赞同，也是自己之前亲身实践过的。一段时间以来，笔者坚持早上八点半到公司，此时偌大的办公区基本空无一人，然后带上笔记本电 脑，找一个小会议室，一直工作到上午10点钟才回到自己的办公桌。这段时间非常的安静，不论上班的同事如何来来往往，笔者都不受干扰，集中处理一些事情， 效率很高，  即使在平常工作时间，也会尽量多呆在安静的地方。同时，笔者发现一个有趣的现象：当我呆在办公桌的时候，时不时的就会有同事询问各种各样的问题，小到一个 域名对应的IP地址，大到项目计划的制定。但是，一旦我呆在会议室工作时，这些口头的问题就不翼而飞了，小的问题同事们可以独立解决，大的问题会通过正式  的邮件和会议进行交流，这样大家的工作效率都会有所提高——因为极大减少了彼此的情境切换次数。
2. 平衡工作和生活
这个话题对程序员来说有些沉重和苦涩，软件开发似乎是个工作和生活严重失衡的职业。不过，I.M.Wright认为这不是命运注定，他在应聘微软的 时候，就向未来的上司提出，他非常顾家，需要保证正常的工作时间，早上送孩子上学，晚上回家用餐，而老板完全同意了他的要求，并且说话算话。 I.M.Wright提出了一个平衡工作和生活的五步原则：

了解并接受你选择的生活方式。
跟你的管理者一起设置一些基本原则。
不要默默妥协。
必要的时候使用“远程访问服务”和远程桌面访问。
抛开分离造成的精神分裂错觉。

具体的说，你需要了解你自己，好好思考一下你的工作目的是什么，事业和生活的优先级是什么，你的忍耐程度是多大，一旦把这些问题想明白了，你就会在 平衡问题上做出正确的选择；把自己制定的原则告诉你的上司，不要担心你的工作和前途，在第一步时你已经把这些问题和限度考虑清楚。I.M.Wright发 现这种交流反倒会使你赢得上司的尊重，因为你具有强烈的自信和清晰的价值观；在工作中，偶尔的破例是可以容忍的，但是如果经常出现超出原则的情况，你就需 要找机会重申你的态度，因为一旦你很容易就妥协了，上司会认为你并不在意你自己指定的原则（如果连你自己都不在乎，又能指望谁来在乎呢？）。他可能会提出 越来越多的要求，直到你的原则一退再退，你原先的努力就白费了；如果你热爱自己的工作而且的确很重要，可以在家里通过远程访问等方式访问；不要试图把工作 和生活分开，保持一个统一的心态，避免情景切换。
笔者在平衡方面也是个菜鸟，很少思考自己的原则问题，平常也是迁就工作，压缩生活空间，《代码之道》这方面给了很多启示，我们需要严肃的、正式的考 虑一下平衡问题，有类似需求的程序员朋友们可以参考I.M.Wright提出的五步原则。
《代码之道》谈论的主题很多，不是一篇短短的书评可以全部覆盖到的，笔者觉得这本书很适合程序员们阅读，不是丰富我们的技术水平，而是为了让我们工 作和生活更有效率、更有意义。
附：华章授权InfoQ中文站独家为大家提供额外的样章进行试读：欢迎下载第3章、第9章。
]]></description>
		<wfw:commentRss>http://www.bringsir.com/archives/795/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FirePHP：像Firebug那样调试你的PHP代码</title>
		<link>http://www.bringsir.com/archives/793</link>
		<comments>http://www.bringsir.com/archives/793#comments</comments>
		<pubDate>Mon, 08 Mar 2010 06:58:51 +0000</pubDate>
		<dc:creator>kazaff</dc:creator>
				<category><![CDATA[牛X软件]]></category>
		<category><![CDATA[firephp]]></category>

		<guid isPermaLink="false">http://www.bringsir.com/?p=793</guid>
		<description><![CDATA[


 如果你经常使用Firebug调试HTML、CSS、JavaScript和Ajax代码，一定会对Firebug爱不释手，它方便快速且直观。但 你是否想过用Firebug调试PHP程序？Firefox还有一个扩展叫FirePHP，一个可以像Firebug一样方便的调试PHP程序。

这个在Firebug之上运行的扩展，结合一个服务器端的库，就可以让你的PHP代码向浏览 器发送调试信息，该信息以HTTP响应头（HTTP  headers）的方式编码。经过设置，你可以像在Firebug控制台调试JavaScript代码一样得到PHP脚本的警告和错误提示。下面我们来看 看具体步骤。
首先，我们需要从Mozilla的Firefox扩展组件页面下 载FirePHP插件；在此之前，要确保我们已经安装了Firebug。完成FirePHP插件的安装后，再次打开Firebug面板，我们可以 看到除Firebug按钮之外，还有一个蓝色的按钮，那就是我们的FirePHP了。点击这个按钮，会出现一个菜单，提示您启用或禁用FirePHP。如 图：

FirePHP的Firebug控制台界面


这样我们基本完成了FirePHP的安装，但我们还需要一个FirePHP的服务器端的库，点击这里下载。 这是一个使用PEAR的版本，可以手动下载安装。
之后，我们需要将这个库include到我们的代码中。FirePHP还有一些版本是针对框 架和CMS设计的，比如WP-FirePHP是为WordPress定制的，JFirePHP是专为Joomla定制的。为了足够通用，这篇文章里我们将 把重点放在一些通用的功能上。
当我们的服务器上有了FirePHP  library，我们需要使用下面一条简单的语句将它包含进来。


require_once('FirePHPCore/fb.php');


因为FirePHP使用HTTP  headers的形式发送数据，我们需要缓冲一下脚本的输出，这样可以确保响应请求可以包含生成的脚本。在PHP中，通过在代码顶部调用ob_start 方法来实现。


ob_start();


完成了上面的步骤，我们就可以开始使用FirePHP。所要做的只剩下调用fb函数，无论是一个单独的标记还是一个定义的常量，都会生成一个标准的 记录，无论是警告、错误还是其他信息。如下图：

这段代码将会在Firebug控制台产生如下输出：

我们还可以使用FirePHP来跟踪程序的执行过程：通过FirePHP::TRACE常量，你可以看到行号、类名、函数名等。示例代码如下:

将会产生如下输出;

使用这个跟踪功能，可以愉快的调试代码，因为他让你知道真正的问题出现在那里。当然，我们还需要记住在代码交付之前删除这些FirePHP调试语 句。
FirePHP所能做的要比上面介绍的多得多，51CTO.com在这里只是简单的展示FirePHP的一般功能。FirePHP还有一些附件功能 和面向对象的API值得我们去发现和探索。更多介绍可以通过FirePHP官网来了解。
]]></description>
		<wfw:commentRss>http://www.bringsir.com/archives/793/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>妈的，全忘了</title>
		<link>http://www.bringsir.com/archives/790</link>
		<comments>http://www.bringsir.com/archives/790#comments</comments>
		<pubDate>Fri, 05 Mar 2010 03:04:10 +0000</pubDate>
		<dc:creator>kazaff</dc:creator>
				<category><![CDATA[日记类]]></category>

		<guid isPermaLink="false">http://www.bringsir.com/?p=790</guid>
		<description><![CDATA[好像失忆了一样，PHP的很多内置函数的用法一下子都忘记了……只能完全依赖搜索引擎！苦闷啊！这要是考试或者面试，我肯定歇菜了啊！
不知道这问题是不是我脑袋的事儿！还是正常？
找个时间在看一遍PHP函数手册吧！
]]></description>
		<wfw:commentRss>http://www.bringsir.com/archives/790/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>这几天</title>
		<link>http://www.bringsir.com/archives/783</link>
		<comments>http://www.bringsir.com/archives/783#comments</comments>
		<pubDate>Mon, 01 Mar 2010 03:56:01 +0000</pubDate>
		<dc:creator>kazaff</dc:creator>
				<category><![CDATA[日记类]]></category>

		<guid isPermaLink="false">http://www.bringsir.com/?p=783</guid>
		<description><![CDATA[这几天天气很不稳定，忽冷忽热！搞得我每天早上对着衣柜无所适从！
当然，也有值的兴奋的事儿，那就是等了一段时间的《战地：叛逆连队2》终于出来了，虽然没有汉化！
所以周末中午起来，就迅速投入战斗，花了将近4个多小时的游戏时间，通关了！个人感觉整体效果并没有《现代战争2》好，我的机器配置很高，2个游戏全部都效果全开，比起来还是现代2更胜一筹！不过老实说，这款叛逆连队2的故事情节要胜过现代2，游戏场景也多，沙漠，古堡，丛林，都市等等！而且某些现代2中的场景它也包含，感觉很爽！不过枪的种类个人感觉太少，而且游戏场景中的一些皮肤不是很精细！和孤岛惊魂的丛林比起来，差了一大截！

说了一大段的游戏，下面来说一下工作吧，最近马上就要做个项目，很小，预计1-2个礼拜吧，不过不知道客户那边是个什么情况，总之目前打算用公司的源码二次开发一下！希望能一切顺利，别再让我碰到类似上一个客户那样的人了！那我就疯了！！
]]></description>
		<wfw:commentRss>http://www.bringsir.com/archives/783/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>IE6、 IE7、IE8、Firefox兼容性问题</title>
		<link>http://www.bringsir.com/archives/781</link>
		<comments>http://www.bringsir.com/archives/781#comments</comments>
		<pubDate>Wed, 24 Feb 2010 05:54:30 +0000</pubDate>
		<dc:creator>kazaff</dc:creator>
				<category><![CDATA[jQuery+Css]]></category>
		<category><![CDATA[css hack]]></category>

		<guid isPermaLink="false">http://www.bringsir.com/?p=781</guid>
		<description><![CDATA[1.区别IE和非IE浏览器 

#tip {
background:blue; /*非IE 背景藍色*/
background:red \9; /*IE6、IE7、IE8背景紅色*/
}


2.区别IE6,IE7,IE8,FF 
【区别符号】：「\9」、「*」、「_」
【示例】：
#tip {
background:blue; /*Firefox 背景变蓝色*/
background:red \9; /*IE8 背景变红色*/
*background:black; /*IE7 背景变黑色*/
_background:orange; /*IE6 背景变橘色*/
}
【说明】：因为IE系列浏览器可读「\9」，而IE6和IE7可读「*」(米字号)，另外IE6可辨识「_」(底线)，因此可以依照顺序写下来，就会让浏 览器正确的读取到自己看得懂得CSS语法，所以就可以有效区分IE各版本和非IE浏览器(像是Firefox、Opera、Google  Chrome、Safari等)。

3.区别IE6、IE7、Firefox (方法 1) 
【区别符号】：「*」、「_」
【示例】：
#tip {
background:blue; /*Firefox背景变蓝色*/
*background:black; /*IE7 背景变黑色*/
_background:orange; /*IE6 背景变橘色*/
}
【说明】：IE7和IE6可读「*」(米字号)，IE6又可以读「_」(底线)，但是IE7却无法读取「_」，至于Firefox(非IE浏览器)则完全 无法辨识「*」和「_」，因此就可以透过这样的差异性来区分IE6、IE7、Firefox

4.区别IE6、IE7、Firefox (方法 2) 
【区别符号】：「*」、「!important」
【示例】：
#tip {
background:blue; /*Firefox 背景变蓝色*/
*background:green !important; /*IE7 背景变绿色*/
*background:orange; /*IE6 背景变橘色*/
}
【说明】：IE7可以辨识「*」和「!important」，但是IE6只可以辨识「*」，却无法辨识「!important」，至于Firefox可以 读取「!important」但不能辨识「*」因此可以透过这样的差异来有效区隔IE6、IE7、Firefox。

5.区别IE7、Firefox 
【区别符号】：「*」、「!important」
【示例】：
#tip {
background:blue; /*Firefox 背景变蓝色*/
*background:green !important; /*IE7 背景变绿色*/
}
【说明】：因为Firefox可以辨识「!important」但却无法辨识「*」，而IE7则可以同时看懂「*」、「!important」，因此可以 两个辨识符号来区隔IE7和Firefox。

6.区别IE6、IE7 (方法 1) 
【区别符号】：「*」、「_」
【示例】：
#tip {
*background:black; /*IE7 背景变黑色*/
_background:orange; /*IE6 背景变橘色*/
}
【说明】：IE7和IE6都可以辨识「*」(米字号)，但IE6可以辨识「_」(底线)，IE7却无法辨识，透过IE7无法读取「_」的特性就能轻鬆区隔 IE6和IE7之间的差异。

7.区别IE6、IE7 (方法 2) 
【区别符号】：「!important」
【示例】：
#tip {
background:black !important; /*IE7 背景变黑色*/
background:orange; /*IE6 背景变橘色*/
}
【说明】：因为IE7可读取「!important;」但IE6却不行，而CSS的读取步骤是从上到下，因此IE6读取时因无法辨识 「!important」而直接跳到下一行读取CSS，所以背景色会呈现橘色。

8.区别IE6、Firefox 
【区别符号】：「_」
【示例】：
#tip {
background:black; /*Firefox 背景变黑色*/
_background:orange; /*IE6 背景变橘色*/
}
【说明】：因为IE6可以辨识「_」(底线)，但是Firefox却不行，因此可以透过这样的差异来区隔Firefox和IE6，有效达成CSS  hack。

]]></description>
		<wfw:commentRss>http://www.bringsir.com/archives/781/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Go back for work</title>
		<link>http://www.bringsir.com/archives/778</link>
		<comments>http://www.bringsir.com/archives/778#comments</comments>
		<pubDate>Sun, 21 Feb 2010 03:50:00 +0000</pubDate>
		<dc:creator>kazaff</dc:creator>
				<category><![CDATA[日记类]]></category>

		<guid isPermaLink="false">http://www.bringsir.com/?p=778</guid>
		<description><![CDATA[今天是初八，上班的第一天！
事儿很多，多半都是年前留下来的善后工作！琐碎而且繁杂！
十天的假期，基本上迫使我忘记了很多东西！还快速的恢复这些记忆！
更可恨的是，打开电脑，竟然发现FF不能用了，不仅是它，chrome也不能用！只能打开IE，其他都免谈！这我还杂活啊！折腾了半天，也没头绪！卸载了很多猜测可能是问题的软件，还是不行！最最后下载了个安装版的FF，总算搞定了！恢复了我的U盘版FF的收藏夹，世界总算恢复了平静！
接下来就是想办法恢复记忆了！呵呵~~希望一切顺利！加油！你们也是啊！一起努力吧！
]]></description>
		<wfw:commentRss>http://www.bringsir.com/archives/778/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>波士顿大照片：狗拉雪橇</title>
		<link>http://www.bringsir.com/archives/772</link>
		<comments>http://www.bringsir.com/archives/772#comments</comments>
		<pubDate>Wed, 10 Feb 2010 00:38:12 +0000</pubDate>
		<dc:creator>kazaff</dc:creator>
				<category><![CDATA[资讯]]></category>
		<category><![CDATA[雪橇狗]]></category>

		<guid isPermaLink="false">http://www.bringsir.com/?p=772</guid>
		<description><![CDATA[最近是狗拉雪橇比赛的高峰期，阿拉斯加、英国、加拿大、德国等地都有各种规模的狗拉雪橇比赛，让我们来看看这些可爱的哈士奇们吧!
这只正在嗷嗷叫的是3岁的J-Sun Inti，他是波士顿Snowdogs 雪橇队的一员，正在等着前往麻省参赛。


这是一群加拿大因纽特狗在拉传统型雪橇，多么销魂的背影……



现在的许多装备都先进了很多，驾驶雪橇的人打扮得跟马术骑师一样酷

狗狗和主人的感情也自然是好的不得了，比如像这两位如胶似漆……

看看谁最上镜?

当然是我

]]></description>
		<wfw:commentRss>http://www.bringsir.com/archives/772/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Zend framework处理一个http请求的流程分析</title>
		<link>http://www.bringsir.com/archives/769</link>
		<comments>http://www.bringsir.com/archives/769#comments</comments>
		<pubDate>Tue, 09 Feb 2010 06:01:01 +0000</pubDate>
		<dc:creator>kazaff</dc:creator>
				<category><![CDATA[ZendFramework]]></category>

		<guid isPermaLink="false">http://www.bringsir.com/?p=769</guid>
		<description><![CDATA[

1, 首先是bootstrap过程，初始化程序里用到的资源
2, 创建一个Zend_Controller_Front实体，实现front controller模式，这个实体类会负责将http请求派遣到恰当的controller的action里。
3, Front controller会创建俩个对象来封装http请求和http回复，分别是Zend_Controller_Request_Http和Zend_Controller_Response_Http
4, Front controller会创建俩个对象来实现url寻路和派遣，分别是routing和dispatcher, 分别负责找到指定url应该执行的控制器和动作，和载入对应的程序文件并执行对应的方法。
5, 通过controller的plugin机制，Zend_Controller_Action_ViewRenderer会为controller的实体 类创建一个view属性，这个view是一个Zend_View的实体对象。它还负责在controller action请求处理完成后，将相应的template文件render呈现到http response对象里。最后response对象的内容会由Front Controller输出到浏览器。
6, 在第五步中，虽然template文件是由ViewRender助手对象来定位的，但是是由Zend_VIew的一个成员函数执行的(include进这 个template文件)，所以在Controller里属性里view对象的所有属性和成员函数在template文件里都可以被使用。
这样一个http请求的生命周期就结束了，浏览器获得了内容。在controller的action给view指定要呈现的变量时，它一般会通过Zend_Db_Table与数据库交互，获得数据。
与数据库交互处理数据称为business logic, template文件里也会包涵简单的循环等逻辑，这个称为display logic。
在MVC实现中，Model负责处理business logic， View负责处理display logic，而Controller则负责协调这俩部分，从而Controller的代码应该尽量简洁，它只是作为一个agent存在的。
]]></description>
		<wfw:commentRss>http://www.bringsir.com/archives/769/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>22个所见即所得在线 Web 编辑器</title>
		<link>http://www.bringsir.com/archives/766</link>
		<comments>http://www.bringsir.com/archives/766#comments</comments>
		<pubDate>Wed, 03 Feb 2010 12:19:56 +0000</pubDate>
		<dc:creator>kazaff</dc:creator>
				<category><![CDATA[牛X软件]]></category>
		<category><![CDATA[web编辑器]]></category>

		<guid isPermaLink="false">http://www.bringsir.com/?p=766</guid>
		<description><![CDATA[我们曾介绍过 10 个基于 JavaScript 的 WYSIWYG（所见即所得） 编辑器，这些 Web 编辑器可以在线编辑和处理富 Web 内容，包括格式文本，表格，图片，媒体，链接等等，非常适合集成到 CMS 网站内容管理系统中使用。本文又搜集了 22 个 Web 在线编辑器，它们基本代表了当前 Web 编辑器的现状。

1. TinyMCE
免费，开源，轻量，基于 JavaScript，高度可定制，跨平台。
2. FCKEditor
免费，开源，用户量庞大，有良好的社区支持。
3. YUI Editor
属于 Yahoo! YUI 的一部分，能输出纯净 XHTML 代码。
4. NicEdit
简单，易用，轻量，外观漂亮。
5. Kupu
开源，支持 Ajax 保存，跨平台，易于集成，由 OSCOM 推出。

6. Free Rich Text  Editor
非常容易部署，输出 XHTML 代码，功能丰富。
7. WebWiz  RichTextEditor
这是一个商业产品，并不免费，但功能非常丰富，基于 ASP，JavaScript 和 DHTML。
8. XStandard
故名思意，这个编辑器会生成符合标准的纯净 XHTML 代码。
9. Damn Small Rich Text [...]]]></description>
		<wfw:commentRss>http://www.bringsir.com/archives/766/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
	</channel>
</rss>
