18
4月
2012
vmee

提高php代码质量 36计

1.不要使用相对路径

常常会看到:

1    require_once('../../lib/some_class.php');

该方法有很多缺点:

它首先查找指定的php包含路径, 然后查找当前目录.

因此会检查过多路径.

如果该脚本被另一目录的脚本包含, 它的基本目录变成了另一脚本所在的目录.

另一问题, 当定时任务运行该脚本, 它的上级目录可能就不是工作目录了.

因此最佳选择是使用绝对路径:

1    define('ROOT' , '/var/www/project/');
2    require_once(ROOT . '../../lib/some_class.php');
3    
4    //rest of the code

 我们定义了一个绝对路径, 值被写死了. 我们还可以改进它. 路径 /var/www/project 也可能会改变, 那么我们每次都要改变它吗? 不是的, 我们可以使用__FILE__常量, 如:

04
3月
2012
vmee

phpcmsV9中表单向导在js调用里日期控件在IE下报Calendar未定义的解决办法

最近在phpcmsV9里用表单向导弄个的提交表单,但用了日期和时间类型时,用

<script language='javascript' src='{APP_PATH}index.php?m=formguide&c=index&a=show&formid=11&action=js&siteid=1'></script>

调用时在IE下报  “Calendar”未定义  的错误,致使日期控件无法使用
 
原因是由在IE下,calendar.js文件加载没有阻塞Calendar.setup()方法的运行,Calendar.setup()在calendar.js未加载的情况,就开始执行了,所以就报出“Calendar”未定义  的错误

解决办法:
找到phpcms/libs/class/form.class.php文件

在174到182行

 

27
2月
2012
vmee

yiiframework类关系图

最近一直在yii,想详细了解框架内的类以及类的关系,也想做出一个文档,弄一览yii的全貌。

前几天在gg上发现了这张图,很是高兴,正是我要,感谢牛人,在这里给大家分享下

由于图片较大还有格式限制,下载后,把名字后缀改成.rar,解压了就可以看到了

这是一张缩略图:

下载yii类关系图

12
12月
2011
vmee

PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep, __wakeup, __toString, __set_state, __clone and __autoload

PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep, __wakeup, __toString, __set_state, __clone and __autoload

1、__get、__set
这两个方法是为在类和他们的父类中没有声明的属性而设计的
__get( $property ) 当调用一个未定义的属性时访问此方法
__set( $property, $value ) 给一个未定义的属性赋值时调用
这里的没有声明包括当使用对象调用时,访问控制为proteced,private的属性(即没有权限访问的属性)

01
11月
2011
vmee
01
11月
2011
vmee

ubuntu下unzip解压文件中文乱码解决方法

在windows上压缩的文件,是以系统默认编码中文来压缩文件。由于zip文件中没有声明其编码,所以 linux上的unzip一般以默认编码解压,中文文件名会出现乱码。
虽然2005年就有人把这报告为bug, 但是info-zip的官方网站没有把自动识别编码列入计划,可能他们不认为这是个问题。Sun对java中存在N年的zip编码问题,采用了同样的处理方式。

有2种方式解决问题:

1. 通过unzip行命令解压,指定字符集
unzip -O CP936 xxx.zip (用GBK, GB18030也可以)
有趣的是unzip的manual中并无这个选项的说明, unzip --help对这个参数有一行简单的说明。

2. 在环境变量中,指定unzip参数,总是以指定的字符集显示和解压文件
/etc/environment中加入2行
UNZIP="-O CP936"
ZIPINFO="-O CP936"

这样Gnome桌面的归档文件管理器(file-roller)可以正常使用unzip解压中文,但是file-roller本身并不能设置编码传递给 unzip。

以上我用了第一种不管用,依然乱码,还有下面的解决方法

 

29
10月
2011
vmee

Python网路资源

要取得 Pyhton 的相关资源,除了到各大书店里去寻找现成的书籍外,在网路上寻求更新的文件资讯,绝对是聪明的选择,列举几个重要的网址,值得参考看看:

Python 的官方网站

http://www.python.org/

Pyhton 资源的大本营,不论是与 Python 相关的文件资源及程式,大部份都可以由此取得。

24
10月
2011
vmee

动态内容的缓存技术 CSI,SSI,ESI

CDN 中动态内容是不太好解决的,通常需要很麻烦的技术和方法来实现这些功能,比如我设计过一种动态缓存的方法,基于 session 栏接,然后根据热点来做动态缓存时间的控制。目前开放的实现 Cache 的技术主要有 CSI,SSI,ESI 之类几种。在一个动态网页中,内容不断更新和变化,但这并不意味不能缓存,其实还是有 90% 的内容都可以做到 CDN  中的。只要花点心思。但这些都对客户有更加高的要需求。下面是这向种技术的介绍。

动态 Cache 页面有如下一些方案:

   1、Client Side Includes(CSI):

通过iframe、javascript、ajax 等方式将另外一个页面的内容动态包含进来。这样来实现动态化。

      优点:能够利用浏览器客户端并行处理及装载的机制;这种技术基本不需要服务器支持和修改,计算和操作放在客户端,能够降低服务器端压力

      缺点:搜索引擎优化问题;javascript兼容性问题;客户端缓存可能导致服务器端内容更新后不能及时生效。常常通过加 js version 来解决.

   2、Server Side Includes(SSI):

SSI它就是HTML文件中,可以通过注释行调用的命令或指针。实现整个网站的内容更新。SSI需要特殊的文件后缀(shtml,inc).

       优点:SSI技术是通用技术,不受具体语言限制,只需要Web服务器或应用服务器支持即可,Ngnix、Apache、Tomcat、Jboss等对此都有较好的支持,目前 Squid 不支持。

23
10月
2011
vmee

ubuntu 11.10 输入法

Ubuntu11.10下如何使用中文输入法
为什么最新版 ubuntu 11.10 没有输入法切换啊

默认是安装了ibus输入法的,原因是输入法没有启动

你只要在 dash home 输入 ibus 找到ibus点击,启动在右上角,就可以看到键盘图标,点击键盘图标找到perferences 首选项

这里就可以找到你要的输入法,默认列表可能没有,但你可以添加,这里面已经包含了几种拼音输入法,还有一款86五笔,

其他的快捷键可以自行设置,选好就可以使用了

13
10月
2011
vmee

centos下svn和memecached自动启动

etc/rc.local 在此文件中加入 如下代码

/usr/bin/svnserve -d --listen-port 10002 -r /opt/svndata
/usr/local/bin/memcached -d -m 10 -u root -l 192.168.1.106 -p 11211 -c 256 -P /tmp/memcached.pid

页面

订阅微米 RSS