自己写的Zend Framework密码校验类
Zend Framework提供了一些常用的校验类(Validators),不过都是针对单个的输入域的。但常见的注册表单上往往有两个密码输入框,只有两次输入相同的密码才算验证通过,这需要比较两个输入域的内容是不是相同,不过Zend Framework里并没有提供这样一个现成的校验类。但提供了一种机制可以让我们自己去实现这种功能。 Read more…
Zend Framework提供了一些常用的校验类(Validators),不过都是针对单个的输入域的。但常见的注册表单上往往有两个密码输入框,只有两次输入相同的密码才算验证通过,这需要比较两个输入域的内容是不是相同,不过Zend Framework里并没有提供这样一个现成的校验类。但提供了一种机制可以让我们自己去实现这种功能。 Read more…
在上一篇Hello World的例子中,Zend Framework在调用完一个Action后,会自动去寻找并且显示相应的视图文件。因此在第一个Hello World的例子中,为了直接在控制器的Action中输出“Hello World”,在echo语句后用了一个die(),显得很不美观:
<?php class IndexController extends Zend_Controller_Action{ public function indexAction(){ echo 'Hello World!'; die(); } } ?>
显然,有些时候并不需要Zend Framework这样“自作主张”,因此需要取消它自动加载视图的功能。
Zend_Controller_Front类有一个setParam方法可以用来设置前端控制器的一些参数。要取消Zend Framework的自动加载视图的功能,可以在整个应用程序的入口文件处设置“noViewRenderer”参数的值为“true”:
$frontController=Zend_Controller_Front::getInstance(); // .... $frontController->setParam('noViewRenderer',true);
这样,所有的Action方法在执行完后都不会自己去加载视图。
如果只是要在某一个控制器内取消这个特性,可以在控制器的init方法或者preDispatch方法内调用
$this->_helper->viewRenderer->setNoRender();
例如:
public function preDispatch(){ $this->_helper->viewRenderer->setNoRender(); }
再进一步,如果只是想在某个Action方法中取消自动加载视图,把上面的setNoRender()放在相应的函数里面就行了。
以前写过一篇Zend Framework之Hello World,不过那个例子是针对Zend Framework 0.2的,在目前的1.6版下不能用。今天用了好几个小时的功夫终于算是把一个最简单的Zend Framework程序运行出来了,真不容易,比CodeIgniter麻烦一些。 Read more…
这是一家公司招收新职员时的一个测试问题……
你开着一辆车。
在一个暴风雨的晚上。
你经过一个车站。
有三个人正在等公共汽车。
一个是快要死的老人,好可怜的。
一个是医生,他曾救过你的命,是大恩人,你做梦都想报答他。
还有一个女人/男人,她/他是那种你做梦都想娶/嫁的人,也许错过就没有了。
但你的车只能坐一个人,你会如何选择呢?
请解释一下你的理由。
这种问题吃完饭后拿来开个玩笑还可以,我强烈讨厌拿这种问题去用于招聘时的面试。当然故事还没完,据说在200多个人中只有一个人通过了它的考验,那个人是这样回答的:
“给医生车钥匙,让他带着老人去医院,而我则留下来陪我的梦中情人一起等公车!”
很创新,很有想象力,很浪漫,一般人想不到。但我不得不说句风凉话——太不现实了。我提几个问题:
想想那些教你“面试技巧”的东西,其实大部分都是在教你怎么去欺骗面试官。看多了也就会变得麻木,进而欺骗所有的人而自己全然不知。所以面试官才会不好做,因为有太多擅长做假的人了。对于你个人来说,最终会丢掉真实的自己;对于整个社会来说,最终社会的信用体系会被摧毁……
FeedBurner FeedSmith用来把原来的feed地址定向到FeedBurner上的feed。不过原始的FeedSmith会引发浏览器的重定向动作,由于众所周知的原因,一些地方的上网用户无法连接到FeedBurner上的feed地址,例如http://feedproxy.google.com/….。我修改FeedSmith的目的就是为了既能使用FeedBurner提供一部分服务,比如用AdSense添加feed里面的广告,同时不损失原来的订阅者,而且不用访问者掌握某些特殊的网络技术。
大体原理就是利用PHP的cURL来实现用服务器直接从FeedBurner上抓取RSS的内容,然后由你的服务器转发给访问者。这样,只要你的服务器所在的地理位置能访问FeedBurner上的feed,这个插件就可以正常工作。
默认情况下,FeedBurner生成的Feed里,每一项的标题的链接指向的是一个FeedBurner上的地址,点击它的时候先连接到FeedBurner然后浏览器再重定向到原始的地址。这主要是为了统计feed内的点击情况,不过如果FeedBurner无法访问的话,这也就没用了。所以需要让FeedBurner的feed里的链接直接指向原始的文章链接。这个需要登录FeedBurner账号去设置,见下图:
最后再提醒一下,如果你的服务器在国内,就不必用这个插件了。
下载FeedBurner FeedSmith无重定向插件:
请看这个网页,这是灵格斯词典的下载页面,上面放了AdSense广告。我一直认为这种放法混淆了下载软件与广告链接,在AdSense里应该是不被允许的。可奇怪的是,我在半年前在AdSense支持论坛里提出了这个问题后,直到现在仍然没有改变。 Read more…
过些日子打算在这里贴一些Python代码。Python代码有个特点,就是用缩进来表示代码的结构,不像C++一样用大括号,因此缩进在Python程序中极其重要。然后我写代码的习惯是用Tab来缩进,以前贴在这里的代码绝大部分都是使用Tab缩进的。不过这有什么问题呢?问题是我使用WP-Syntax对代码进行一些格式化,而WP-Syntax的输出是用pre标签包裹起来的。在pre标签里,Tab的显示宽度取决于用户的浏览器,通常是8个字符宽度。这实在是太多了,如果能设置Tab的宽度为4个字符就好了。 Read more…
Google的App Engine(GAE)提供了一个非常好的支持Python的Web环境。近期我打算在上面做一个类似于WordPress的Blog,为此,需要考虑很多地方。 Read more…