分类目录归档:Web开发

关于“预留退路”的思考

在支付宝UED博客上看到了老鱼的“浅谈产品设计中的可用性和可访问性”。全文中心思想是“国内大部分Web产品在设计时往往忽略可用性和可访问性问题”,对于这点我基本上是认同的,但是对于文章里举的例子,一个“支付宝登录界面如果禁用JS就无法正常工作”的例子,也就是一个“预留退路”的例子,我有话要说。

“预留退路”这个概念我最早是从《网站重构》上看到的,简单来说,预留退路是指当访问者禁用CSS或JavaScript时,网页仍然能正常显示内容。当时对这个概念印象深刻,并且在之后一段时间内也一直以此为标杆。但随着对互联网、对web的理解越来越深,随着项目开发越做越多,我逐渐开始动摇。不可否认,“预留退路”在安全性方面是十分必须的,服务器端必须把好最后一道关,不能相信客户端、不能相信任何用户输入。但在用户体验方面,在可用行方面,我认为预留退路的重要性远不如许多UE设计师们声称的那么重要。

首先,目前的网站,已经不再是以前那种“网页文档”的集合了。以前的网页的主体是内容,单向性很强。JS等交互功能只是内容上的调料。而现在大量兴起的web应用,已经把网站推向了“软件”的境界。浏览器只是一个容器,网页只是一种呈现方式,交互才是真正的重头戏。虽然交互的目的仍然是内容,但这里的内容已不再是传统意义上的html代码,而是数据,交互是获得数据的必经手段,缺少交互,数据(内容)无从谈起。在这种情况下,预留退路显然不是一条不可打破的禁忌。

其次,预留退路的提出是在浏览器大战的年代。在那个时候,主流浏览器对JS的支持十分混乱,保证一个网站在所有浏览器上都做出正常的表现很难。开发者们在恶劣的开发环境下学会了自我约束,限制js的使用,预留退路作为下策,以防万一。而在现在,web标准日趋普及,浏览器们的支持标准也渐渐统一,跨浏览器平台的交互功能实现将越来越简单。虽然移动设备那边可能还不是很完善,但统一的标准必然是未来的趋势。

最后,尽管如老鱼所说,“很多交互设计师都会想当然的认为,类似这样的应用场景受重群体是很小的,也许真实的数据会让你大吃一惊!”,可我至今没有见过实际的统计数据。我身边有用Opera的,有用Linux的,可至今没有禁用JS上网的。倒是在豆瓣上见过一个,不过他是个Geek,关闭JS是有他自己的目的的,并且他也很清楚这样做的后果。相信那些不开JS上网的人,大部分都是像这个豆瓣用户那样的中高级用户,他们很清楚自己在做什么,以及这样做之后可能会遇到的情况。而预留退路真正需要照顾到的,那些无法使用JS自己却一无所知的无助的用户们,我绝不认为其总量会是个“让人大吃一惊”的数字。

综上,我认为“预留退路”不是个应该鼓吹的概念,更不是个不可打破的标准。中国没有408条例,所以更多的时候要根据实际需要来抉择,不要一味迷信传统。

最后,感谢土豆网的Dexter.YY,您的回信让我受益匪浅。

解决Xdebug与Zend Optmizer不兼容问题的方法

xdebug的官方手册中指出xdebug应当作为zend extension加载:

zend_extension_ts=”c:/php/modules/php_xdebug-4.4.1-2.0.2.dll”

但这样的话xdebug就会与ZendOptmizer冲突,导致Apache无法启动。

如何让xdebug与ZendOptmizer共存呢?解决方法就是不以zend extension的形式加载xdebug,用加载常规扩展的方法。把xdebug的dll文件放入php的ext文件夹中,然后在php.ini中加入:

extension=php_xdebug-4.4.1-2.0.2.dll

这样xdebug就能与ZendOptmizer共存了。

虽然phpinfo()里会提示:XDEBUG NOT LOADED AS ZEND EXTENSION,但据我观察这样并不影响xdebug的正常使用。

以上方法在WinXP,Apache2.2,PHP5.2,Xdebug2.0.3下试验成功。

最常用和最不常用的10个HTML标签

Opera最新发表的一份统计结果中给出了最常用和最不常用的10个HTML标签,一起来看看吧。

最常用的10个HTML标签:

  1. head (嗯,一定要有头)
  2. title (标题自然也少不了)
  3. html (缺了这个标签还算html吗?)
  4. body (有了头还要有身子)
  5. a (超文本的核心自然是链接)
  6. meta (大家都很注意SEO嘛O(∩_∩)O)
  7. img (多媒体最基本的形式——图片)
  8. table (网页常常被用来显示大量数据?还是表格布局依然盛行?)
  9. td
  10. tr

而最不常用的10个HTML标签是:

  1. tfoot
  2. dfn
  3. menu
  4. q
  5. samp
  6. ins
  7. kbd
  8. var
  9. del
  10. bdo

此外,该统计显示中国网页的Flash最高,高达67%;土耳其以59%位居第二;而美国和日本的使用率均在31%左右。

最后,很遗憾的是,只有4.3%的网页符合Web标准…

几个主流网站系统的引用结构图

引用结构图描述了一个系统中各个部分的关联性:哪个文件与那个文件相关联、哪个系统是另一个系统的子系统。

在研究一个系统之前,最好先把它的引用结构图画出来,这将非常有用。Federico Cargnelutti为我们带来了几个主流网站系统的引用结构图。

WordPress 2.2.1

Zend Framework 1.5.2

CakePHP

CodeIgniter

MediaWiki 1.12

phpBB 3.0

phpMyAdmin 2.9.1.1

Symfony 1.1

WordPress垃圾评论清理器

分得清WordPress里对评论的“删除”操作和“垃圾评论”操作有什么区别吗?

尽管这两个操作都能让评论消失,不过“删除”是从数据库中彻底清除评论,而“垃圾评论”只是让评论不在后台中显示,其内容仍然保留在数据库中。

本插件能检查WordPress数据库中被标记为“垃圾评论”的评论数,并提供全部删除的功能,帮助数据库瘦身。

截图:

wp-spam-cleaner-snapshot.gif

下载地址:WordPress垃圾评论清理器

如果你在插件使用中遇到问题,请在日志后面给我留言。

========================

题外话:

写这个插件的念头源于自己曾经把所有评论都标为“垃圾评论”,结果造成数据库撑爆、网站停止服务的一次经历。

并没有太多的考虑过这个插件“到底有多少实用性”的问题,更多的只是想学习一下wp插件的写法。

By the way, this is my first time to write a wp plugin 🙂

用PHP生成随机数(另附PHP随机函数)

通常情况下,当我们要生成一个随机字符串时,总是先创建一个字符池,然后用一个循环和mt_rand()或rand()生成php随机数,从字符池中随机选取字符,最后拼凑出需要的长度。

function randomkeys($length)
{
	$pattern = '1234567890abcdefghijklmnopqrstuvwxyz
                ABCDEFGHIJKLOMNOPQRSTUVWXYZ,./&l
                t;>?;#:@~[]{}-_=+)(*&^%$£"!';    //字符池
	for($i=0;$i<$length;$i++)
	{
		$key .= $pattern{mt_rand(0,35)};    //生成php随机数
	}
	return $key;
}
echo randomkeys(8);

这个php随机函数能生成XC*=z~7L这样的字符串,够随机!

现在介绍另一种用PHP生成随机数的方法:利用chr()函数,省去创建字符池的步骤。

function randomkeys($length)
{
	$output='';
	for ($a = 0; $a < $length; $a++) {
		$output .= chr(mt_rand(33, 126));    //生成php随机数
	}
	return $output;
}
echo randomkeys(8);

在第二个php随机函数里,先用mt_rand()生成一个介于33到126之间的php随机数,然后用chr()函数转化成字符。查看ascii码表就会发现,33到126代表的正是第一个函数中字符池里的所有字符。第二个函数和第一个函数功能相同,而且更简洁。

2008年8月8日——PHP4最后一次更新

 GoPHP5

2008年8月8日是什么日子?北京奥运会开幕!没错!但如果你是一位PHP的使用者,你还必须知道——那天是PHP4最后一次更新的日子。

去年12月,php社区已经宣布停止对PHP4的支持,不过这只意味着PHP4不会添加新的功能,而对安全问题的修复仍然会继续(即中版本号不变,停留在4.4,而小版本号会继续增加,现在已经发布到4.4.8)。如果不出意外的话,29天后,对PHP4的安全问题修复也将不再提供,社区将完全放弃对PHP4的支持。

如果你仍然在用PHP4进行开发,那么在2008年8月8日后,你可能就惨了。Ivo Jansch描述了一幅可怕的情景:

  • 如果在2个月的时间里,黑客发现了PHP4暴露出的bug该怎么办?
  • 如果他们编写蜘蛛在互联网上搜寻PHP4程序该怎么办?
  • 如果他们用恶意代码攻击这些网站该怎么办?
  • 如果真的没有任何补丁来修补这些漏洞该怎么办?
  • 你那时候该怎么办?(除了像个没头苍蝇一样到处乱撞)

黑客可能已经发现了某些可以利用的漏洞,而他们故意等到8月8日以后,PHP4不再发布安全补丁后才进行攻击,从而让影响最大化。

开源软件的作者们早就开始积极转向PHP5了,其中包括著名的PEAR, phpMyAdmin, Drupal, Gallery和Zen Cart等。目前在GoPHP5上登记的开源项目已超过100个,而且仍然在不断增加中。长远来看,越来越多的开源软件将放弃使用PHP4。对于使用开源程序架设网站的经营者来说,继续停留在PHP4上,意味着更窄的软件选择面和无法获得软件的最新版本。

So,赶快阅读PHP4转移到PHP5的文章,让你的主机服务商给你更换PHP5的主机。你只有29天的时间。

Nexen发布08年6月的PHP统计数据

Nexen发布08年6月的PHP统计数据,该统计的数据源于对三千万个域名的跟踪调查。

统计数据显示:

  • PHP5.2.6市场份额增长迅速(因为PHP5.3仍未发布)。
  • PHP5在整个PHP市场中的份额达到38.93%,上升2%。
  • 份额最高的PHP版本是PHP4.4,占到39%;其次为PHP5.2的30%,PHP4.3位居第三,占19%。
  • 中国市场的PHP占有率仅为17.16。
  • 在国内各省中,PHP占有率最高的是澳门,89.61%;其次是广州,53.92%;青海第三,46.67%。

查看详细的统计数据信息,请访问:http://www.nexen.net/chiffres_cles/phpversion/18519-php_statistics_for_june_2008.php