六月, 2009 的归档

  • 今天看了GOOGLE的网站加速技巧,然后又看到了PHP小组针对上面技巧中的PHP部分做的反驳,受益匪浅啊。GOOGLE提出的一些PHP优化建议,之前在其他文章中也经常看到,所以在我脑海中就完全同意这些观点了;今天看到PHP小组的反驳后才知道,原来这些都是一些旧观点,基本是PHP4的优化建议,到PHP5中,这些所谓优化已经过时无效或已内置解决。连GOOGLE都不知道这些,相信大家知道的也不多,所以转来给大家看。 错误观点1. 没有原因尽量不要复制变量 PHP 4和5核心的Zend引擎使用了一个名为“copy-on-write”的内存管理系统。也就是说,无论你将一个变量的值赋值给另一个变量多少次,只要你不改变数值,数据是不会被复制的。范例: $data = str_repeat(“*”, 512 * 1024); // synthesize 512K of data $memory_used_before = memory_get_usage(); $more_data = $data; $memory_used_after = memory_get_usage(); print “Before: {$memory_used_before}\nAfter: {$memory_used_after}\n”; 有thread-safety及调试功能的PHP 5.3下: 之前:853968 之后:854236 没有thread-safety及调试功能的PHP 5.2下: 之前:581912 之后:581976 也就是,调试模式下有268字节的差别,正常模式下(普遍使用的)有64字节的差别。这和Google文中所述(51CTO编者注:Google原文的描述中,复制变量会“导致双倍的内存消耗”)相差甚远。 需要注意的是,PHP代码中坚决禁止在没有恰当过滤的情况下将用户提供的变量原本内容进行echo或者存储。 错误观点2. 为长字符串使用单引号...

    纠正所谓“优化PHP速度”的几个错误/过时观点

    今天看了GOOGLE的网站加速技巧,然后又看到了PHP小组针对上面技巧中的PHP部分做的反驳,受益匪浅啊。GOOGLE提出的一些PHP优化建议,之前在其他文章中也经常看到,所以在我脑海中就完全同意这些观点了;今天看到PHP小组的反驳后才知道,原来这些都是一些旧观点,基本是PHP4的优化建议,到PHP5中,这些所谓优化已经过时无效或已内置解决。连GOOGLE都不知道这些,相信大家知道的也不多,所以转来给大家看。 错误观点1. 没有原因尽量不要复制变量 PHP 4和5核心的Zend引擎使用了一个名为“copy-on-write”的内存管理系统。也就是说,无论你将一个变量的值赋值给另一个变量多少次,只要你不改变数值,数据是不会被复制的。范例: $data = str_repeat(“*”, 512 * 1024); // synthesize 512K of data $memory_used_before = memory_get_usage(); $more_data = $data; $memory_used_after = memory_get_usage(); print “Before: {$memory_used_before}\nAfter: {$memory_used_after}\n”; 有thread-safety及调试功能的PHP 5.3下: 之前:853968 之后:854236 没有thread-safety及调试功能的PHP 5.2下: 之前:581912 之后:581976 也就是,调试模式下有268字节的差别,正常模式下(普遍使用的)有64字节的差别。这和Google文中所述(51CTO编者注:Google原文的描述中,复制变量会“导致双倍的内存消耗”)相差甚远。 需要注意的是,PHP代码中坚决禁止在没有恰当过滤的情况下将用户提供的变量原本内容进行echo或者存储。 错误观点2. 为长字符串使用单引号...

    继续阅读...

  • 在MYSQL数据库查询时,排序是经常用到的一个功能。单纯按照某字段排序查询较为简单,无非就是order by `field` (DESC/ASC)。如: SELECT * FROM `table` ORDER BY `field` DESC 注:上面的table换成要查询的表名,field换成要排序的字段名,DESC表示从大到小,去掉则从小到大。 下面介绍几个复杂一点的应用: 自定义排序 需求:查询table表,取出id为1,5,9,7的记录,并按1597的顺序显示. 解决: SELECT * FROM `table` WHERE id in(1,5,7,9) ORDER BY FIELD(`id`,1,5,9,7) //注意FIELD后面无空格 文章置顶 需求一:查询文章表table,取出所有文章,但字段zj为1的记录置顶(均以time字段排序,time大的放在前面)。...

    MYSQL自定义排序,文章置顶等

    在MYSQL数据库查询时,排序是经常用到的一个功能。单纯按照某字段排序查询较为简单,无非就是order by `field` (DESC/ASC)。如: SELECT * FROM `table` ORDER BY `field` DESC 注:上面的table换成要查询的表名,field换成要排序的字段名,DESC表示从大到小,去掉则从小到大。 下面介绍几个复杂一点的应用: 自定义排序 需求:查询table表,取出id为1,5,9,7的记录,并按1597的顺序显示. 解决: SELECT * FROM `table` WHERE id in(1,5,7,9) ORDER BY FIELD(`id`,1,5,9,7) //注意FIELD后面无空格 文章置顶 需求一:查询文章表table,取出所有文章,但字段zj为1的记录置顶(均以time字段排序,time大的放在前面)。...

    继续阅读...

  • 在网页上放几个GOOGLE广告,又放了个DAITUI,又放个访问量统计。在网速慢的时候,加载这些代码的时候网页一直处于等等状态。但用户来网站是看内容的,所以我们应该让网页内容先显示,最后显示这些外加的东西。 当然还有一些其他的情况,我们希望网页的内容按我们设定的顺序加载。 进入正题(拿GOOGLE广告为例): 1.在要插入广告的地方,置一个元素,span、p、div都可以,如果表格中也可以给td赋个ID <span id="googleAd"> google广告加载中... </span> 2. 在页面底部,也就是</body>之前,放下面一段 <div id="googleAdContent" style='display:none'> 此处替换为google广告内容 </div> <script language="javascript"> document.getElementById('googleAd').innerHTML=document.getElementById('googleAdContent').innerHTML; document.getElementById('googleAdContent').innerHTML = ""; //这行可以有,也可以没有 </script> 效果展示就看本页右侧和文章下面的广告吧,可以右键看本页的源代码进行分析哦~

    增强用户体验之–广告后加载

    在网页上放几个GOOGLE广告,又放了个DAITUI,又放个访问量统计。在网速慢的时候,加载这些代码的时候网页一直处于等等状态。但用户来网站是看内容的,所以我们应该让网页内容先显示,最后显示这些外加的东西。 当然还有一些其他的情况,我们希望网页的内容按我们设定的顺序加载。 进入正题(拿GOOGLE广告为例): 1.在要插入广告的地方,置一个元素,span、p、div都可以,如果表格中也可以给td赋个ID <span id="googleAd"> google广告加载中... </span> 2. 在页面底部,也就是</body>之前,放下面一段 <div id="googleAdContent" style='display:none'> 此处替换为google广告内容 </div> <script language="javascript"> document.getElementById('googleAd').innerHTML=document.getElementById('googleAdContent').innerHTML; document.getElementById('googleAdContent').innerHTML = ""; //这行可以有,也可以没有 </script> 效果展示就看本页右侧和文章下面的广告吧,可以右键看本页的源代码进行分析哦~

    继续阅读...

  • WordPress 2.8出来了,看到增加了那么多不错的功能,我心动了。立即上马升级。鉴于以前的经验,只把博客备份了一下,然后就直接上传新版了,并没有关插件,结果传完后博客访问不了。  没办法,恢复备份,关闭插件,重新上传新版。能访问了! 结果发现模板不兼容了,真郁闷,只能换一款模板。 现在的模板是在RBcss基础上修改的,变动挺多的,毕竟是花了一下午时间,呵呵。 另外对插件也重新按需启用。现在用的有: SidXSpam(评论增加验证码) WordPress Related Posts(文章下面显示“相关文章”) WP-PageNavi(翻页) WP-PostViews(文章浏览数) WP-Syntax(语法高亮) 其他的暂时关闭

    花了一下午,把博客升级改版了

    WordPress 2.8出来了,看到增加了那么多不错的功能,我心动了。立即上马升级。鉴于以前的经验,只把博客备份了一下,然后就直接上传新版了,并没有关插件,结果传完后博客访问不了。  没办法,恢复备份,关闭插件,重新上传新版。能访问了! 结果发现模板不兼容了,真郁闷,只能换一款模板。 现在的模板是在RBcss基础上修改的,变动挺多的,毕竟是花了一下午时间,呵呵。 另外对插件也重新按需启用。现在用的有: SidXSpam(评论增加验证码) WordPress Related Posts(文章下面显示“相关文章”) WP-PageNavi(翻页) WP-PostViews(文章浏览数) WP-Syntax(语法高亮) 其他的暂时关闭

    继续阅读...

  • 在译言看到的一篇文章,觉得非常有用。就转载过来。 作为设计师,你的每个客户和项目都是独一无二的。有些事情,你需要了解或者熟知你的所有客户,才能为他们做出最好的设计。建设一个有效的解决具体业务需求的网站,需要设计人员准确理解很多业务的细节。 在这篇文章中,我们会看到9件设计师与客户在设计开始前需要讨论的事情,以增加成功的可能性。这些是围绕去了解客户业务与需求的话题,而不是像付款与最后期限这样的合同问题。 1. 商业目的 几乎所有的商业行为都有任务与远景声明。如果你想要设计出真实反映业务和对客户有效的网站,了解基本的商业存在原因与他的目标是绝对有必要的。 如果你不清楚客户的核心职责或者他们存在的原因,一定要在开始向目前把这些问题弄明白。虽然是很简单的资料,但是没有他们,项目很有可能误入歧途。 2. 具体产品与服务的业务 一旦清晰了业务存在原因,熟知具体事项与客户是如何从业务中得到收入也是非常重要的事情。无论是建立电子商务网站,还是普通的信息站,或者任何其他类型的网站,有必要知道客户准备为网站用户提供什么。 3. 客户的用户统计数据 讨论业务的产品和服务会让你获得有关为产品与服务付费的用户的更多信息,有效果的网站是以用户为中心,这个对身为设计师的你是至关重要的,你的客户需要准确的了解谁将使用这个网站,谁是有可能对提供的业务感兴趣。 尽可能多的获取这方面信息是非常好的做法。比如目标用户的年龄,性别,职业,收入等等,这些对确定网站的设计风格非常有帮助。此外,为搜集更多有关用户对产品与服务感兴趣的原因而建立网站,有利于提高潜能。 4. 企业文化

    设计项目开始前,9件需要了解客户的事情

    在译言看到的一篇文章,觉得非常有用。就转载过来。 作为设计师,你的每个客户和项目都是独一无二的。有些事情,你需要了解或者熟知你的所有客户,才能为他们做出最好的设计。建设一个有效的解决具体业务需求的网站,需要设计人员准确理解很多业务的细节。 在这篇文章中,我们会看到9件设计师与客户在设计开始前需要讨论的事情,以增加成功的可能性。这些是围绕去了解客户业务与需求的话题,而不是像付款与最后期限这样的合同问题。 1. 商业目的 几乎所有的商业行为都有任务与远景声明。如果你想要设计出真实反映业务和对客户有效的网站,了解基本的商业存在原因与他的目标是绝对有必要的。 如果你不清楚客户的核心职责或者他们存在的原因,一定要在开始向目前把这些问题弄明白。虽然是很简单的资料,但是没有他们,项目很有可能误入歧途。 2. 具体产品与服务的业务 一旦清晰了业务存在原因,熟知具体事项与客户是如何从业务中得到收入也是非常重要的事情。无论是建立电子商务网站,还是普通的信息站,或者任何其他类型的网站,有必要知道客户准备为网站用户提供什么。 3. 客户的用户统计数据 讨论业务的产品和服务会让你获得有关为产品与服务付费的用户的更多信息,有效果的网站是以用户为中心,这个对身为设计师的你是至关重要的,你的客户需要准确的了解谁将使用这个网站,谁是有可能对提供的业务感兴趣。 尽可能多的获取这方面信息是非常好的做法。比如目标用户的年龄,性别,职业,收入等等,这些对确定网站的设计风格非常有帮助。此外,为搜集更多有关用户对产品与服务感兴趣的原因而建立网站,有利于提高潜能。 4. 企业文化

    继续阅读...