Pages (39) « Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Next »

jQuery autocomplete插件修改

如果你不知道什么是jQuery autocomplete插件,请看上图。你可以测试一下本站的搜索。当然也可以百度一下。

主要修改了两个地方:

一、上下选择与输入值同步问题。

  输入关键字后,当出现了下拉选项,用键盘的上下键选择时,关键字输入框的值,没有与你选择的值同步。插件是老外写的,可能他没有考虑到这一点。

二、修正了在firefox下中文输入,没有激活自动提交的问题。

  老外当然不会用到中文输入,这个bug存在也理所当然了。

另:附件里的实现了选择后自动提交,也就和google、百度的效果完全一样了。

下载地址:点击下载

PHP加密与解密的斗争

PHP代码的保护一直是许多公司关注的核心问题,例如知名的一些论坛vBulletin、Discuz!、PhpWind及近日很火的ShopEx等等,都采用Zend SafeGuard进行PHP代码加密,另外一些常用的加密产品还包括ionCube、SourceGuardian、phpCipher等等。 但是PHP反编译系统的出现却迅速引起了Zend公司甚至整个PHP用户群的恐慌,包括上述产品在内的几乎所有大型PHP产品全部出现了破解版本甚至出现了完整的源代码。如此一来,Zend不得不向Cracker们低头,承认所有的加密技术都有破解的办法,并承诺对加密产品进行改进以便提供更强的保护。

PHP加密技术可以追溯到01年,当时PHP已经很火爆,所以许多公司希望能推出商业化的PHP系统,于是PHP加密(编译)产品应运而生,随后PHP大颚Zend公司推出了自己的Zend Encoder,直到现在,Zend的加密产品依然是这个领域的领袖。


对squid中refresh_pattern的一些理解和建议

refresh_pattern的作用:

用于确定一个页面进入cache后,它在cache中停留的时间。refresh_pattern规则仅仅应用到没有明确过时期限的响应。原始服务器能使用Expires头部,或者Cache-Control:max-age指令来指定过时期限。

语法:refresh_pattern [-i] regexp min percent max [options]

min参数是分钟数量。它是过时响应的最低时间限制。如果某个响应驻留在cache里的时间没有超过这个最低限制,那么它不会过期。类似的,max参数是存活响应的最高时间限制。如果某个响应驻留在cache里的时间高于这个最高限制,那么它必须被刷新。

在最低和最高时间限制之间的响应,会面对squid的最后修改系数LM-factor算法LM-factor=(response age)/(resource age)。对这样的响应,squid计算响应的年龄和最后修改系数,然后将它作为百分比值进行比较。响应年龄简单的就是从原始服务器产生,或最后一次验证响应后,经历的时间数量。源年龄在Last-Modified和Date头部之间是不同的。LM-factor是响应年龄与源年龄的比率。

常用的几个参数的意思

override-expire

该选项导致squid在检查Expires头部之前,先检查min值。这样,一个非零的min时间让squid返回一个未确认的cache命中,即使该响应准备过期。


refresh_pattern参数对squid的影响

在squid.conf.default里面,refresh_pattern参数下面的注释是这样的:

TAG: refresh_pattern

usage: refresh_pattern [-i] regex min percent max [options]

Basically a cached object is:

FRESH if expires < now, else STALE

STALE if age > max

FRESH if lm-factor < percent, else STALE

FRESH if age < min

else STALE

以上所有的时间都是以分钟为单位计算。 很容易看懂是不是?

refresh_pattern指出的缓冲对象过期了,这个对象过期。(这不是废话嘛!)

refresh_pattern指出的缓冲对象在squid的cache缓冲的时间大于max的话,这个对象过期。

refresh_pattern指出的缓冲对象的lm-factor大于等于percent的话,这个对象过期。

refresh_pattern指出的缓冲对象在squid的cache缓冲的时间小于min的话,这个对象不过期。

可是,这个lm-factor到底是怎么算的?有什么具体意义?估计好多同学搞不清楚了吧。来,look,下面的图:

上面这张图来自于《Squid.Definitive.Guide》第七章,对squid的LM-factor算法作出了一个很直观的描述。

请注意这张图的起始时间坐标:

Last-Modified,这个是由squid读取的原始web数据所规定的。

然后就是Date,这个是原始数据进入squid的缓冲的时间。

最后就是Expires,这个就是原始数据在squid中的缓冲过期时间。

可以很容易的得出结论,对于LM-factor算法来说,原始数据在squid中的缓冲时间为

(原始数据进入squid的缓冲的时间-原始web数据所规定的Last-Modified时间)*percent

所以,我们可以郑重得出结论,在squid的refresh_pattern设置中,percent与Min、Max两个值是完全没有关系!

最后总结一下,对于squid来说,缓冲的数据在cache中的存活时间是这样决定的:

如果有定义refresh_pattern:只要满足以下两个条件之一,缓冲对象过期

缓冲对象在squid的cache缓冲的时间大于refresh_pattern定义的max

缓冲对象在squid的cache缓冲的时间大于(原始数据进入squid的缓冲的时间-原始web数据所规定的Last-Modified时间)*percent

如果符合多个refresh_pattern定义,以第一条符合定义的refresh_pattern为准

如果没有符合定义的refresh_pattern,则按squid的默认处理规则

fckeditor php上传文件重命名的设置

我使用的fckeditor版本是fckeditor2.6.4.

fckeditor默认上传文件不没有重命名的,这样的话就很麻烦,有时上传中文的文件或者名称重复的文件就很恼火。

这里经过摸索:找到了一个重命名的方法,大家看看好不好使。

首先:我希望上传的文件根据日期来组织文件夹

请修改editor\editor\filemanager\connectors\php文件夹下的:config.php文件

找到如下的内容:

// Path to user files relative to the document root.

$Config['UserFilesPath'] =

修改为:

// Path to user files relative to the document root.

$Config['UserFilesPath'] = '/uploadfiles/'.date("Ym")."/" ;

这样上传的文件就按照日期存放了。

其次:重命名

请修改该文件夹下的io.php文件

找到:

// Do a cleanup of the file name to avoid possible problems

function SanitizeFileName( $sNewFileName )

{

global $Config ;

$sNewFileName = stripslashes( $sNewFileName ) ;

// Replace dots in the name with underscores (only one dot can be there... security issue).

if ( $Config['ForceSingleExtension'] )

 $sNewFileName = preg_replace( '/\\.(?![^.]*$)/', '_', $sNewFileName ) ;

// Remove \ / | : ? * " < >

$sNewFileName = preg_replace( '/\\\\|\\/|\\||\\:|\\?|\\*|"|<|>/', '_', $sNewFileName );

return $sNewFileName ;

}

修改为:

// Do a cleanup of the file name to avoid possible problems

function SanitizeFileName( $sNewFileName )

{

global $Config ;

$sNewFileName = stripslashes( $sNewFileName ) ;

// Replace dots in the name with underscores (only one dot can be there... security issue).

if ( $Config['ForceSingleExtension'] )

 $sNewFileName = preg_replace( '/\\.(?![^.]*$)/', '_', $sNewFileName ) ;

$sExtension = substr( $sNewFileName, ( strrpos($sNewFileName, '.') + 1 ) ) ;

$sNewFileName = my_setfilename().'.'.$sExtension;

return $sNewFileName ;

}

function my_setfilename(){

$gettime = explode(' ',microtime());

$string = 'abcdefghijklmnopgrstuvwxyz0123456789';

$rand = '';

for ($x=0;$x<12;$x++)

 $rand .= substr($string,mt_rand(0,strlen($string)-1),1);

return date("ymdHis").substr($gettime[0],2,6).$rand;

}

这样上传的文件就可以实现重命名了。

Pages (39) « Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Next »