Submitted by gouki on 2010, May 11, 9:06 AM
这篇文章我一直在纠结,是否要摘录过来,但我还是最终决定放上来了。
其实大家都知道,在网页中,可见的按钮有三种,一种是input,一种是button,最后一种,其实也不能管是按钮,它是由img转化而来的。最最常用的还是input和button,在以前的日子里,大家都习惯于用input,因为他直接拥有type=submit,而button没有,它更适合于表达button。
然而。。。
XML/HTML代码
- 首先,在IE6里,如果一个表单里有多个button形式的提交按钮,那么不管你点击其中哪个按钮,所有的button按钮都会被提交,而在IE7,8里则点击哪个按钮,才提交哪个button按钮。此时,如果想在服务端判断用户点击了哪个按钮,只能使用Javascript来处理。
这点,在不同浏览器对回车提交表单的处理办法已经提过,但老王说的这个是变量的传递,以及在指定name的时候,POST变量的值的变化。不废话看原文:
最近写代码,处理很多表单,里面的Submit按钮有两种形式,分别是input和button,有点区别,做个试验:
先创建一个php文件demo.php, 用来接收表单数据:
<?php
var_dump($_POST);
?>
再创建一个html文件demo.html, 用来显示表单:
<form method="post" action="demo.php">
<input type="submit" name="foo" value="提交">
<input type="submit" name="bar" value="保存">
</form>
<form method="post" action="demo.php">
<button type="submit" name="foo" value="foo_value">提交</button>
<button type="submit" name="bar" value="bar_value">保存</button>
</form>
使用Firefox依次浏览,就能看到input和button的区别:input提交按钮显示的文字就是value,而button提交按钮显示的文字 和value是独立的,从这个意义上来看,button更有表现力,是更值得推荐的提交按钮实现方式。
可惜IE总是拖后腿,使用IETester里的 IE6,7,8分别浏览,就会发现button提交按钮在IE下有Bug:
首先,在IE6里,如果一个表单里有多个button形式的提交按钮,那么不管你点击其中哪个按钮,所有的button按钮都会被提交,而在IE7,8里 则点击哪个按钮,才提交哪个button按钮。此时,如果想在服务端判断用户点击了哪个按钮,只能使用Javascript来 处理。
另外,在IE6,7,8里,button形式的按钮在提交后,value属性都失效了,显示文字取代了value。
总结:从理论上来看,button形式的提交按钮优于input形式的提交按钮。但如果考虑浏览器通用性,很多时候还是只能使用input形式的提交按 钮。
参考:http://www.w3.org/TR/html401/interact/forms.html
老王的文章在:表 单提交按钮input和button的取舍
Tags: form, input, button
PHP | 评论:0
| 阅读:28390
Submitted by gouki on 2010, April 21, 11:42 AM
看到这篇文章,我还是觉得上海人均年收入21.9万算是低的了。怎么着也应该人均百万吧?
智联招聘的统计数据:上海人均年收入 21.7万(详见下面的图片)
已知:操作工2万1,初级专员3万8,专员6万8,主管12万,经理21万,总监38万,高管68万
现在出个题,人均收入应该怎么算?
请看专业计算求解过程:
根据各种职位人口比例1:1:1:1:1:1:1
得 => (2.1+3.8+6.8+12+21+38+68) / 7=21.7w
问:你服不服?

原文来自yhustc的QQ博客,不方便透露他的QQ号,怕一些暗恋他的MM冲过去频加好友,想了想,还是透露一下他的博客地址吧:http://yhustc.com
Tags: 人均收入
Misc | 评论:1
| 阅读:16709
Submitted by gouki on 2010, April 5, 9:18 PM
说实话,如果不是必要,真不是特别推荐采用proxy方法。特别是在PHP中,采用proxy势必会造成include文件过多。IO的消耗非常恐怖,如果又采用openbasedir,那么还要恐怖 。性能会下降的很厉害。。。
下面是老王的文章:
模式是程序员之间的交流语言,代理(Proxy)和委派(Delegate)是模式中常见的词汇,不过很多人把他们混淆了,甚至等同起来,这会造成很多沟通交流上的误解,下面说说他们的区别,先看一个UML图:

图形已经表述的很直白了,如果还不清晰,可以看看下面的代码:
PHP代码
- interface Subject
- {
- public function DoAction();
- }
-
- class RealSubject implements Subject
- {
- public function DoAction()
- {
- echo '_RealSubject::DoAction_';
- }
- }
-
- class Proxy implements Subject
- {
- public function __construct()
- {
- $this->subject = new RealSubject();
- }
-
- public function DoAction()
- {
- echo 'Proxy::DoAction';
- $this->subject->DoAction();
- echo 'Proxy::DoAction';
- }
- }
-
- $proxy = new Proxy();
- $proxy->DoAction();
运行结果输出:Proxy::DoAction_RealSubject::DoAction_Proxy::DoAction
如果你还没有看出端倪,我就再废话几句:首先从词性来看,代理(Proxy)是名词,委派(Delegate)是动词,其次代理说明了若干个对象实现了一个共同的接口,而委派只是说明一个对象引用了另一个对象,并不牵扯接口。
既然说到这了,就再唠叨几句:什么时候适合使用Proxy模式呢?对PHP而言,一般是当需要给对象附加额外的逻辑时,而这些逻辑和原有逻辑又分属不同的 层次,此时就可以考虑使用Proxy模式。听起来有点拗口,说一个实际的例子,比如说我们实现了Article对象,里面封装了CRUD方法,现在我们要 加入权限判断,控制CRUD的访问限制,这些新加入的逻辑属于应用逻辑,而原有的逻辑属于持久化逻辑,从分层角度看它们不应该放在一个对象里,此时就可以 创建一个ArticleProxy代理对象,用来实现权限判断,至于CRUD操作,则通过委派给Article对象来完成。
当年的JIVE论坛大量使用了此类方法,不过现在JIVE论坛早已销声匿迹,但思想还是可以借鉴的。通过使用代理模式,可以把不同侧重点的逻辑分别封装到 不同的对象里去(和装饰模式有点像,至于如何区分就是另一个话题了),从而避免God Class的产生,不过这样设计的结果会产生大量的类,孰重孰轻还得视客观情况而定。
原文来自:http://hi.baidu.com/thinkinginlamp/blog/item/2297a7efcb52a31afdfa3cc2.html
老王一天到晚在研究新奇玩意,上次说在PC下安装object-C,也是我挺喜欢的。
Tags: proxy, delegate
PHP | 评论:0
| 阅读:21936
Submitted by gouki on 2010, March 30, 6:28 AM
目前还不知道为什么,只是这两天访问可能会有点问题。请大家谅解。
已经联系机房在查原因了。一两天内可以解决这个问题。
希望不是ARP吧。否则就需要一一做IP/MAC绑定。有点烦。
Misc | 评论:0
| 阅读:15833
Submitted by gouki on 2010, March 29, 7:15 AM
读书的时候,偶尔也和同学们玩过xxx号是星期几的游戏。但那也是十几年前的事情了。
如今在程序时代,什么都用程序来解决。那当然是很方便的。因此,你问我2003年10月1日是星期几,我很可能就会直接用程序来告诉你。
PHP代码
- <?php
- echo date('w',strtotime('2003-10-1'));
但事实上,我们也都知道,PHP的date函数是有时间范围区间的,即只能从1970~2038年,因此在这个区间范围之外的算法都是不准的。那倒底怎么算呢?其实是有一个公式的:
蔡勒(Zeller)公式:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1
公 式中的符号含义如下,w:星期;c:世纪-1;y:年(两位数);m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的 13、14月来计算,比如2003年1月1日要看作2002年的13月1日来计算);d:日;[ ]代表取整,即只要整数部分。(C是世纪数减一,y是年份后两位,M是月份,d是日数。1月和2月要按上一年的13月和 14月来算,这时C和y均按上一年取值。)
算出来的W除以7,余数是几就是星期几。如果余数是0,则为星期日。
以2049年10月1日(100周年国庆)为例,用蔡勒(Zeller)公式进行计算,过程如下:
蔡勒(Zeller)公式:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1
=49+[49/4]+[20/4]-2×20+[26× (10+1)/10]+1-1
=49+[12.25]+5-40+[28.6]
=49+12+5-40+28
=54 (除以7余5)
即2049年10月1日(100周年国庆)是星期5。
你的生日(出生时、今年、明年)是星期几?不妨试一试。
--EOF--
上面的公式和部分内容来自于http://www.cnblogs.com/chingho/archive/2010/03/26/1697282.html,只要有公式,什么都可以解决。
PHP | 评论:2
| 阅读:21890