<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_真的骄傲梦想家园</title><subtitle type="text">专业源于兴趣和努力</subtitle><id>http://feed.cnblogs.com/blog/u/43173/rss</id><updated>2012-02-08T05:51:52Z</updated><author><name>真的骄傲</name><uri>http://www.cnblogs.com/reallypride/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/reallypride/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/43173/rss"/><entry><id>http://www.cnblogs.com/reallypride/archive/2012/02/08/2342600.html</id><title type="text">Erlang求素数算法</title><summary type="text">1 -module(libs). 2 -export([qsort/1, isPrime/1, findPrime/2]). 3 4 qsort([H|T]) -&amp;gt; 5 qsort([X || X &amp;lt;- T, X &amp;lt; H]) 6 ++ [H] ++ 7 qsort([X || X &amp;lt;- T, X &amp;gt;= H]); 8 qsort([]) -&amp;gt; []. 9 10 isPrime(1) -&amp;gt; false;11 isPrime(2) -&amp;gt; true;12 isPrime(X) when X rem 2 =:= 0 -&amp;gt; false;13 isPri</summary><published>2012-02-08T05:52:00Z</published><updated>2012-02-08T05:52:00Z</updated><author><name>真的骄傲</name><uri>http://www.cnblogs.com/reallypride/</uri></author><link rel="alternate" href="http://www.cnblogs.com/reallypride/archive/2012/02/08/2342600.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/reallypride/archive/2012/02/08/2342600.html"/><content type="html">&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;span style="color: #008080;"&gt; 1&lt;/span&gt; -&lt;span style="color: #0000ff;"&gt;module&lt;/span&gt;(libs).&lt;br /&gt;&lt;span style="color: #008080;"&gt; 2&lt;/span&gt; -export([qsort/&lt;span style="color: #800080;"&gt;1&lt;/span&gt;, isPrime/&lt;span style="color: #800080;"&gt;1&lt;/span&gt;, findPrime/&lt;span style="color: #800080;"&gt;2&lt;/span&gt;]).&lt;br /&gt;&lt;span style="color: #008080;"&gt; 3&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #008080;"&gt; 4&lt;/span&gt; qsort([H|T]) -&amp;gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt; 5&lt;/span&gt;     qsort([X || X &amp;lt;- T, X &amp;lt; H])&lt;br /&gt;&lt;span style="color: #008080;"&gt; 6&lt;/span&gt;     ++ [H] ++&lt;br /&gt;&lt;span style="color: #008080;"&gt; 7&lt;/span&gt;     qsort([X || X &amp;lt;- T, X &amp;gt;= H]);&lt;br /&gt;&lt;span style="color: #008080;"&gt; 8&lt;/span&gt; qsort([]) -&amp;gt; [].&lt;br /&gt;&lt;span style="color: #008080;"&gt; 9&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt; isPrime(&lt;span style="color: #800080;"&gt;1&lt;/span&gt;) -&amp;gt; &lt;span style="color: #0000ff;"&gt;false&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt; isPrime(&lt;span style="color: #800080;"&gt;2&lt;/span&gt;) -&amp;gt; &lt;span style="color: #0000ff;"&gt;true&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008080;"&gt;12&lt;/span&gt; isPrime(X) &lt;span style="color: #0000ff;"&gt;when&lt;/span&gt; X rem &lt;span style="color: #800080;"&gt;2&lt;/span&gt; =:= &lt;span style="color: #800080;"&gt;0&lt;/span&gt; -&amp;gt; &lt;span style="color: #0000ff;"&gt;false&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008080;"&gt;13&lt;/span&gt; isPrime(X) -&amp;gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;14&lt;/span&gt;     N = &lt;span style="color: #800080;"&gt;2&lt;/span&gt;, E = math:sqrt(X) + &lt;span style="color: #800080;"&gt;1&lt;/span&gt;,&lt;br /&gt;&lt;span style="color: #008080;"&gt;15&lt;/span&gt;     isPrime(X, N, E).&lt;br /&gt;&lt;span style="color: #008080;"&gt;16&lt;/span&gt; isPrime(X, N, E) &lt;span style="color: #0000ff;"&gt;when&lt;/span&gt; N =&amp;lt; E -&amp;gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;17&lt;/span&gt;     case X rem N &lt;span style="color: #0000ff;"&gt;of&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;18&lt;/span&gt;         &lt;span style="color: #800080;"&gt;0&lt;/span&gt; -&amp;gt; &lt;span style="color: #0000ff;"&gt;false&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008080;"&gt;19&lt;/span&gt;         _ -&amp;gt; isPrime(X, N+&lt;span style="color: #800080;"&gt;1&lt;/span&gt;, E)&lt;br /&gt;&lt;span style="color: #008080;"&gt;20&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;end&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008080;"&gt;21&lt;/span&gt; isPrime(_, _, _) -&amp;gt; &lt;span style="color: #0000ff;"&gt;true&lt;/span&gt;.&lt;br /&gt;&lt;span style="color: #008080;"&gt;22&lt;/span&gt; findPrime(S, E) -&amp;gt; findPrime(S, E, []).&lt;br /&gt;&lt;span style="color: #008080;"&gt;23&lt;/span&gt; findPrime(S, E, L) &lt;span style="color: #0000ff;"&gt;when&lt;/span&gt; S &amp;gt;= E -&amp;gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;24&lt;/span&gt;     case isPrime(S) &lt;span style="color: #0000ff;"&gt;of&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;25&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;true&lt;/span&gt; -&amp;gt; findPrime(S - &lt;span style="color: #800080;"&gt;1&lt;/span&gt;, E, [S|L]);&lt;br /&gt;&lt;span style="color: #008080;"&gt;26&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;false&lt;/span&gt; -&amp;gt; findPrime(S - &lt;span style="color: #800080;"&gt;1&lt;/span&gt;, E, L)&lt;br /&gt;&lt;span style="color: #008080;"&gt;27&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;end&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008080;"&gt;28&lt;/span&gt; findPrime(_, _, L) -&amp;gt; L.&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;在命令行输入libs:findPrime(100,1).&lt;/p&gt;&#xD;
&lt;p&gt;将输出100内的素数。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/reallypride/aggbug/2342600.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/reallypride/archive/2012/02/08/2342600.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/reallypride/archive/2011/09/17/2179875.html</id><title type="text">项目过程中发现Django的一个实用类F</title><summary type="text">F类的全称是from django.db.models.expressions import F用于取得指定字段的值，通常用于数据库数字字段的自增自减等更新操作，如：Post.objects.all().update(clicks=F(&amp;#39;clicks&amp;#39;)+1)。</summary><published>2011-09-17T13:41:00Z</published><updated>2011-09-17T13:41:00Z</updated><author><name>真的骄傲</name><uri>http://www.cnblogs.com/reallypride/</uri></author><link rel="alternate" href="http://www.cnblogs.com/reallypride/archive/2011/09/17/2179875.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/reallypride/archive/2011/09/17/2179875.html"/><content type="html">&lt;p&gt;F类的全称是from django.db.models.expressions import F&lt;/p&gt;&#xD;
&lt;p&gt;用于取得指定字段的值，通常用于数据库数字字段的自增自减等更新操作，如：&lt;/p&gt;&#xD;
&lt;p&gt;Post.objects.all().update(clicks=F('clicks')+1)。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/reallypride/aggbug/2179875.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/reallypride/archive/2011/09/17/2179875.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/reallypride/archive/2011/09/01/2162382.html</id><title type="text">网页代码优化小结一</title><summary type="text">页面中有几个flash的广告，严重影响了页面的加载速度，怎么办呢，在页面代码的底部通过javascript把flash插入到对应的位置当中，当访问时，页面加载完成了才开始加载flash，既保证了速度，也保留了flash，哈。</summary><published>2011-09-01T12:02:00Z</published><updated>2011-09-01T12:02:00Z</updated><author><name>真的骄傲</name><uri>http://www.cnblogs.com/reallypride/</uri></author><link rel="alternate" href="http://www.cnblogs.com/reallypride/archive/2011/09/01/2162382.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/reallypride/archive/2011/09/01/2162382.html"/><content type="html">&lt;p&gt;页面中有几个flash的广告，严重影响了页面的加载速度，怎么办呢，&lt;/p&gt;&#xD;
&lt;p&gt;在页面代码的底部通过javascript把flash插入到对应的位置当中，&lt;/p&gt;&#xD;
&lt;p&gt;当访问时，页面加载完成了才开始加载flash，既保证了速度，也保留了flash，哈。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/reallypride/aggbug/2162382.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/reallypride/archive/2011/09/01/2162382.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/reallypride/archive/2011/09/01/2162381.html</id><title type="text">网站小问题总结一</title><summary type="text">今天老板被叫去，问这广告已经更换了几天了，怎么现在还是显示以前的广告。我一看，是一个flash的广告，迅速判断是浏览器缓存造成的问题。打开代码，把调用的flash的地址后面加上随机数，问题解决了。这是个老问题了，就不解释了，项目中容易被忽略，哈。</summary><published>2011-09-01T11:58:00Z</published><updated>2011-09-01T11:58:00Z</updated><author><name>真的骄傲</name><uri>http://www.cnblogs.com/reallypride/</uri></author><link rel="alternate" href="http://www.cnblogs.com/reallypride/archive/2011/09/01/2162381.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/reallypride/archive/2011/09/01/2162381.html"/><content type="html">&lt;p&gt;今天老板被叫去，问这广告已经更换了几天了，怎么现在还是显示以前的广告。我一看，是一个flash的广告，迅速判断是浏览器缓存造成的问题。&lt;/p&gt;&#xD;
&lt;p&gt;打开代码，把调用的flash的地址后面加上随机数，问题解决了。这是个老问题了，就不解释了，项目中容易被忽略，哈。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/reallypride/aggbug/2162381.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/reallypride/archive/2011/09/01/2162381.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/reallypride/archive/2011/08/30/2160118.html</id><title type="text">正在开发的Python网站之自定义后台一</title><summary type="text">新建一个ceshi的应用（app），功能是开发一个心理测试系统，后台增加测试(ceshi)，点保存的时候需要跳转到增加问题(question)的界面，然而默认的操作没有这个功能，需要重写admin.ModelAdmin的response_add方法，重写的代码如下：class CeshiAdmin(admin.ModelAdmin): fields = (&amp;#39;type&amp;#39;, &amp;#39;title&amp;#39;, &amp;#39;content&amp;#39;, &amp;#39;cover&amp;#39;, &amp;#39;tags&amp;#39;) def response_add(self, request, obj,</summary><published>2011-08-30T14:44:00Z</published><updated>2011-08-30T14:44:00Z</updated><author><name>真的骄傲</name><uri>http://www.cnblogs.com/reallypride/</uri></author><link rel="alternate" href="http://www.cnblogs.com/reallypride/archive/2011/08/30/2160118.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/reallypride/archive/2011/08/30/2160118.html"/><content type="html">&lt;p&gt;新建一个ceshi的应用（app），功能是开发一个心理测试系统，后台增加测试(ceshi)，点保存的时候需要跳转到增加问题(question)的界面，然而默认的操作没有这个功能，需要重写admin.ModelAdmin的response_add方法，重写的代码如下：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;class CeshiAdmin(admin.ModelAdmin):&#xD;
    fields = ('type', 'title', 'content', 'cover', 'tags')&#xD;
    &#xD;
    def response_add(self, request, obj, post_url_continue='../%s/'):&#xD;
        path = 'http://www.cnblogs.com/ceshijumpquestion/add/?ceshi_id=%s' % obj._get_pk_val()&#xD;
        super(CeshiAdmin, self).response_add(request, obj, post_url_continue=post_url_continue)&#xD;
        return HttpResponseRedirect(path)&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;调用父类的方法，然后重定向到我们需要的地址，这样，增加ceshi后页面就会跳转到增加question的界面了&lt;/p&gt;&#xD;
&lt;p&gt;在增加question的界面中，我们需要知道是为哪个ceshi增加question，于是重写add_view方法：&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;class CeshiJumpQuestionAdmin(admin.ModelAdmin):&#xD;
    fields = ['question']&#xD;
    inlines = [CeshiJumpChoiceInline]&#xD;
    list_display = ['ceshi', 'question']&#xD;
    &#xD;
    def add_view(self, request, form_url='', extra_context=None):&#xD;
        ceshi = Ceshi.objects.get(pk=request.GET['ceshi_id'])&#xD;
        return super(CeshiJumpQuestionAdmin, self).add_view(request, form_url=form_url, &#xD;
                                                            extra_context={'ceshi': ceshi})&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;这样在增加question的模板中，就多了一个ceshi的对象了&lt;/p&gt;&#xD;
&lt;p&gt;在保存question的时候，我们希望它把引用的ceshi也一起保存，重写save_model方法&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;class CeshiJumpQuestionAdmin(admin.ModelAdmin):&#xD;
    def save_model(self, request, obj, form, change):&#xD;
        obj.ceshi = Ceshi.objects.get(pk=request.POST['ceshi'])&#xD;
        super(CeshiJumpQuestionAdmin, self).save_model(request, obj, form, change)&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;当然，还需要重写模板，把django的模板复制到应用的相应目录下即可。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/reallypride/aggbug/2160118.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/reallypride/archive/2011/08/30/2160118.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/reallypride/archive/2011/08/26/2154948.html</id><title type="text">静态化技术页面另类更新方法</title><summary type="text">网站静态化技术是个很常用的技术了，但是静态化带来的很大一个问题是静态化页面无法比较好的控制它更新。在这里，我介绍一下我的方法。假设我的静态化页面1小时更新一次，在生产的静态化页面中插入一个生成的时间和一小段javascript的代码。javascript每次都用当前时间和页面内的生成时间比较，如果超过了1小时，则通过ajax通知后台重新生成这个静态页面。我们还可以在不同的静态页面插入不同的更新时间，灵活的调整它们的更新频率。</summary><published>2011-08-26T09:24:00Z</published><updated>2011-08-26T09:24:00Z</updated><author><name>真的骄傲</name><uri>http://www.cnblogs.com/reallypride/</uri></author><link rel="alternate" href="http://www.cnblogs.com/reallypride/archive/2011/08/26/2154948.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/reallypride/archive/2011/08/26/2154948.html"/><content type="html">&lt;div style="font-size: 14px;" id="blogDetailDiv"&gt;&#xD;
&lt;p&gt;网站静态化技术是个很常用的技术了，但是静态化带来的很大一个问题是静态化页面无法比较好的控制它更新。在这里，我介绍一下我的方法。&lt;/p&gt;&#xD;
&lt;p&gt;假设我的静态化页面1小时更新一次，在生产的静态化页面中插入一个生成的时间和一小段javascript的代码。javascript每次都用当前时间和页面内的生成时间比较，如果超过了1小时，则通过ajax通知后台重新生成这个静态页面。我们还可以在不同的静态页面插入不同的更新时间，灵活的调整它们的更新频率。&lt;/p&gt;&#xD;
&lt;/div&gt;&lt;img src="http://www.cnblogs.com/reallypride/aggbug/2154948.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/reallypride/archive/2011/08/26/2154948.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/reallypride/archive/2011/04/14/2016522.html</id><title type="text">最好最经典最实用的Zend Framework个人博客源码</title><summary type="text">Zend Framework是个很优秀的框架，在国外的项目中使用的很广泛，然而在国内却有点水土不服，虽然家喻户晓，却鲜少人使用，最大的原因应该是中文文档和教程比较少吧，这点我深有同感。Zend Framework的手册是挺完整的，也有中文版，但是中文版没有翻译全，只翻译了一大部分。而且手册的列子也比较少，有些词语也不太符合我们的常识习惯。如：Breadcrumbs，面包屑？？？，NO，是导航，我倒。这个博客Demo，花了我10多天的空余时间精心编写的，个人不是很强大，只有博客基本的功能。编写这个博客的目的是为了让大家展示如何使用Zend Framework开发一个完整的实际项目，同时它也是一个</summary><published>2011-04-14T14:54:00Z</published><updated>2011-04-14T14:54:00Z</updated><author><name>真的骄傲</name><uri>http://www.cnblogs.com/reallypride/</uri></author><link rel="alternate" href="http://www.cnblogs.com/reallypride/archive/2011/04/14/2016522.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/reallypride/archive/2011/04/14/2016522.html"/><content type="html">&lt;p&gt;Zend Framework是个很优秀的框架，在国外的项目中使用的很广泛，然而在国内却有点水土不服，虽然家喻户晓，却鲜少人使用，最大的原因应该是中文文档和教程比较少吧，这点我深有同感。&lt;/p&gt;&#xD;
&lt;p&gt;Zend&amp;nbsp; Framework的手册是挺完整的，也有中文版，但是中文版没有翻译全，只翻译了一大部分。而且手册的列子也比较少，有些词语也不太符合我们的常识习惯。如：Breadcrumbs，面包屑？？？，NO，是导航，我倒。&lt;/p&gt;&#xD;
&lt;p&gt;这个博客Demo，花了我10多天的空余时间精心编写的，个人不是很强大，只有博客基本的功能。编写这个博客的目的是为了让大家展示如何使用Zend Framework开发一个完整的实际项目，同时它也是一个教程，是一个使用心得，是一个设计模式，介绍Zend Framework主要的类的功能和使用方法，介绍如何使用Zend Framework开发优雅的项目，介绍如何自定义和扩展Zend Framework的功能。如扩展Zend_Db_Table_Row_Abstract，实现插入和更新数据时自动填充插入时间和更新时间，读取数据时自动读取关联的数据等待。&lt;/p&gt;&#xD;
&lt;p&gt;这个博客尽量使用原汁原味Zend Framework的功能，让大家了解这些它们的功能和使用方法，在什么情况下使用。介绍了Zend Framework强大的视图功能，缓存功能，导航功能，菜单功能，标签云功能等等。&lt;/p&gt;&#xD;
&lt;p&gt;原文：&lt;a href="http://www.reallypride.com/archives/77"&gt;http://www.reallypride.com/archives/77&lt;/a&gt; 最好最经典最实用的Zend Framework个人博客源码&lt;/p&gt;&#xD;
&lt;p&gt;源码下载：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.reallypride.com/wp-content/uploads/2011/04/zfblog.zip"&gt;Zend Framework Blog Demo&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/reallypride/aggbug/2016522.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/reallypride/archive/2011/04/14/2016522.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/reallypride/archive/2010/08/30/1812733.html</id><title type="text">支持C#的在线评测系统</title><summary type="text">计算机程序在线评测系统，国内首个支持C#语言的评测系统。</summary><published>2010-08-30T08:49:00Z</published><updated>2010-08-30T08:49:00Z</updated><author><name>真的骄傲</name><uri>http://www.cnblogs.com/reallypride/</uri></author><link rel="alternate" href="http://www.cnblogs.com/reallypride/archive/2010/08/30/1812733.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/reallypride/archive/2010/08/30/1812733.html"/><content type="html">&lt;p&gt;&lt;span  style="widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font: medium Simsun; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px;"&gt;&#xD;
&lt;div style="text-align: left; background-color: #ffffff; margin: 0px; font: 12px/1.6em 微软雅黑, Tahoma, Verdana, Helvetica, Arial, sans-serif; word-wrap: break-word; color: #444444; background-origin: initial; background-clip: initial; border-width: 0px !important; padding: 0px;"&gt;&#xD;
&lt;p align="left" style="line-height: normal; margin: 0px; word-wrap: break-word; padding: 0px;"&gt;&lt;span style="font-family: Simsun;"&gt;http://oj.reallypride.com 计算机程序在线评测系统，国内首个支持C#语言的评测系统。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/reallypride/aggbug/1812733.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/reallypride/archive/2010/08/30/1812733.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/reallypride/archive/2010/07/17/1779602.html</id><title type="text">灵活的Zend Framework之使用自定义的Frontcontroller</title><summary type="text">Zend Framework是一个非常灵活的框架，几乎什么都可以扩展和自定义，框架是通用的，没自定义的好用。现在我要让他使用我自定义的Frontcontroller。</summary><published>2010-07-17T07:00:00Z</published><updated>2010-07-17T07:00:00Z</updated><author><name>真的骄傲</name><uri>http://www.cnblogs.com/reallypride/</uri></author><link rel="alternate" href="http://www.cnblogs.com/reallypride/archive/2010/07/17/1779602.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/reallypride/archive/2010/07/17/1779602.html"/><content type="html">&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;Zend Framework是一个非常灵活的框架，几乎什么都可以扩展和自定义，框架是通用的，没自定义的好用。现在我要让他使用我自定义的Frontcontroller。&lt;/p&gt;&#xD;
&lt;p&gt;在application.ini中添加代码：pluginpaths.Flora_Application_Resource = Flora/Application/Resource&lt;/p&gt;&#xD;
&lt;p&gt;在library/Flora/Application/Resource/下新建Frontcontroller.php:&lt;/p&gt;&#xD;
&lt;pre &gt;&amp;lt;?php&#xD;
/**&#xD;
 * @see Flora_Controller_Front&#xD;
 */&#xD;
require_once 'Flora/Controller/Front.php';&#xD;
&#xD;
/**&#xD;
 * Flora_Application_Resource_Frontcontroller&#xD;
 *&#xD;
 * @author reallypride&#xD;
 */&#xD;
class Flora_Application_Resource_Frontcontroller extends Zend_Application_Resource_Frontcontroller {&#xD;
&#xD;
    /**&#xD;
     * Retrieve front controller instance&#xD;
     *&#xD;
     * @return Zend_Controller_Front&#xD;
     */&#xD;
    public function getFrontController()&#xD;
    {&#xD;
        if (null === $this-&amp;gt;_front) {&#xD;
            $this-&amp;gt;_front = Flora_Controller_Front::getInstance();&#xD;
        }&#xD;
        return $this-&amp;gt;_front;&#xD;
    }&#xD;
}&#xD;
?&amp;gt;&#xD;
&#xD;
&lt;/pre&gt;&#xD;
&lt;p&gt;在library/Flora/Controller/下新建Front.php:&lt;/p&gt;&#xD;
&lt;pre &gt;&amp;lt;?php&#xD;
/**&#xD;
 * Flora_Controller_Front&#xD;
 *&#xD;
 * @author reallypride&#xD;
 */&#xD;
class Flora_Controller_Front extends Zend_Controller_Front {&#xD;
&#xD;
    protected function __construct() {&#xD;
        parent::__construct();&#xD;
        echo 'Flora_Controller_Front';&#xD;
    }&#xD;
&#xD;
    /**&#xD;
     * Singleton instance&#xD;
     *&#xD;
     * @return Zend_Controller_Front&#xD;
     */&#xD;
    public static function getInstance()&#xD;
    {&#xD;
        if (null === self::$_instance) {&#xD;
            self::$_instance = new self();&#xD;
        }&#xD;
&#xD;
        return self::$_instance;&#xD;
    }&#xD;
}&#xD;
?&amp;gt;&#xD;
&#xD;
运行程序检验一下，有没有成功啊？哈，自定义Zend Framework就是这么简单。&lt;/pre&gt;&lt;img src="http://www.cnblogs.com/reallypride/aggbug/1779602.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/reallypride/archive/2010/07/17/1779602.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/reallypride/archive/2010/07/11/1775271.html</id><title type="text">Zend Framework+Smarty搭建高性能的企业级应用——路由匹配篇</title><summary type="text">但是一个厨师级的锅和一把厨师级的刀并不一定就能炒出厨师级的菜来。</summary><published>2010-07-11T09:10:00Z</published><updated>2010-07-11T09:10:00Z</updated><author><name>真的骄傲</name><uri>http://www.cnblogs.com/reallypride/</uri></author><link rel="alternate" href="http://www.cnblogs.com/reallypride/archive/2010/07/11/1775271.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/reallypride/archive/2010/07/11/1775271.html"/><content type="html">&lt;p&gt;许多人以为，使用了Zend Framework，使用了Smarty，网站就是企业级的了。Zend Framework是一个企业级的框架，Smarty也是一个企业级的模板引擎，但是一个厨师级的锅和一把厨师级的刀并不一定就能炒出厨师级的菜来。&lt;/p&gt;&#xD;
&lt;p&gt;Zend Framework的路由功能很强大，很灵活，能满足各种复杂的路由需求，但是，它的性能损耗也是挺大的。每一次请求都要遍历匹配一遍所有的路由规则，尤其是正则表达式的匹配，都是一次很大的开销。那么，怎样才能减少这方面的开销呢？&lt;/p&gt;&#xD;
&lt;p&gt;我的解决方案是，在第一次请求时，把请求的地址和路由规则匹配的结果保存起来，可以保存在文件了，可以保存在数据库里，还可以保存在内存中，根据不同的需求和硬件条件进行选择。一般的中小型企业，可以保存在文件里就行了，实现起来也简单方便。等到下一次有相同地址的请求时，直接读取已保存的匹配结果，这样就能跳过了路由规则匹配的庞大开销，直接执行业务逻辑。&lt;/p&gt;&#xD;
&lt;p&gt;我在这里只是给出了优化的方法，具体的代码实现就要各位读者自己研究了哦，这个方法不仅适用于Zend Framework，对于其他类似的框架也是适用的。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/reallypride/aggbug/1775271.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/reallypride/archive/2010/07/11/1775271.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
