Hot For Coding
JavaScript URLdecode函数

JavaScript中urldecode有相应的函数,使用方便。但urldecode就需要一些处理,直接上代码

function UrlDecode(zipStr){ 
  var uzipStr = ''; 
  for (var i = 0; i < zipStr.length; i += 1) {
    var chr = zipStr.charAt(i); 
    if (chr === '+') { 
      uzipStr += ' ';
    } else if (chr === '%') { 
      var asc = zipStr.substring(i + 1, i + 3); 
      if (parseInt('0x' + asc) > 0x7f) {
        uzipStr += decodeURI('%' + asc.toString() + zipStr.substring(i+3, i+9).toString()); 
        i += 8;
      }else{ 
        uzipStr += AsciiToString(parseInt('0x' + asc)); 
        i += 2;
      } 
    }else{ 
      uzipStr += chr; 
    } 
  } 

  return uzipStr; 
} 
 
function StringToAscii(str){ 
  return str.charCodeAt(0).toString(16); 
}

function AsciiToString(asccode){ 
  return String.fromCharCode(asccode); 
}

...

READ ALL

JavaScript数组拼接

在JavaScript中数组拼接有几种方式

遍历拼接

var arr1 = ['a', 'b', 'c'];
var arr2 = ['d', 'e', 'f'];

for (var i = 0; i < arr2.length; i += 1) {
  arr1.push(arr2[i]);
}

console.log(arr1); // Output: (6) ["a", "b", "c", "d", "e", "f"]

这种方式比较灵活控制,比如去重

var arr1 = ['a', 'b', 'c'];
var arr2 = ['c', 'd', 'e'];

for (var i = 0; i < arr2.length; i += 1) {
  if (arr1.indexOf(arr2[i]) === -1) {
    arr1.push(arr2[i]);
  }
}

console.log(arr1); // Output: (5) ["a", "b", "c", "d", "e"]

...

READ ALL

PDO_MYSQL make *** [pdo_mysql.lo] Error 1

编译安装PDO_MYSQL拓展模块,总是提示

In file included from /data0/software/PDO_MYSQL-1.0.2/pdo_mysql.c:31:
/data0/software/PDO_MYSQL-1.0.2/php_pdo_mysql_int.h:25:19: error: mysql.h: No such file or directory
In file included from /data0/software/PDO_MYSQL-1.0.2/pdo_mysql.c:31:
/data0/software/PDO_MYSQL-1.0.2/php_pdo_mysql_int.h:36: error: expected specifier-qualifier-list before ‘MYSQL’
/data0/software/PDO_MYSQL-1.0.2/php_pdo_mysql_int.h:48: error: expected specifier-qualifier-list before ‘MYSQL_FIELD’
/data0/software/PDO_MYSQL-1.0.2/php_pdo_mysql_int.h:53: error: expected specifier-qualifier-list before ‘MYSQL_RES’
make: *** [pdo_mysql.lo] Error 1

...

READ ALL

PHP configure error Cannot find ldap libraries in /usr/lib

今天在CentOS 64位下编译安装PHP5.4.8。结果在configure的时候提示

configure: error: Cannot find ldap libraries in /usr/lib

提示在/usr/lib下找不到相关模块,这是因为64位的Linux默认把以上文件都存在/usr/lib64文件夹下。

解决方法

cp -frp /usr/lib64/libldap* /usr/lib/

重新configure即可

...

READ ALL

Error Package glibc-headers-2.12-1.80.el6_3.6.x86_64

阿里云报错

使用阿里云的yum源安装软件,总是提示

Error: Package: glibc-headers-2.12-1.80.el6_3.6.x86_64 (updates)
           Requires: kernel-headers >= 2.2.1
Error: Package: glibc-headers-2.12-1.80.el6_3.6.x86_64 (updates)
           Requires: kernel-headers
 You could try using --skip-broken to work around the problem
** Found 1 pre-existing rpmdb problem(s), 'yum check' output follows:
kernel-2.6.32-220.13.1.el6.x86_64 has missing requires of kernel-firmware >= ('0', '2.6.32', '220.13.1.el6')

...

READ ALL

解决IE不支持getElementsByClassName

在DOM3里已经加入了getElementsByClassName()这个方法,然而IE9、10以外的其它版本均不支持,这是一块伤痛啊!

目前可以这么解决,判断浏览器支不支持这个方法,如果支持就不管。如果不支持,就在document对象里加入getElementsByClassName这个方法,这样的写法有一个好处,即不管有没有原生函数你都不用去修改代码。

网上部分人直接定义一个getElementsByClassName函数,但是这样的话就需要把代码中所有使用document.getElementsByClassName改写成getElementsByClassName。多少有点不方便,也不通用。

...

READ ALL

IE6标签事件动态绑定导致崩溃

报错原因

前两天做一个用户列表的应用,右键用户头像弹出一个菜单选项。这应该是JavaScript最容易实现的一个功能的,使用JavaScript事件即可实现。但是测试的时候,其它浏览器都没有问题,唯独IE6报错:

full

这个问题,有点棘手。因为它不是单纯的JavaScript报错。因为用户列表是动态创建的,即可能有一个用户进入房间就在列表里增加一个用户,离开一个用户就从列表里删除这个用户,不好调试,我改成静态的测试。发现没有崩溃,也没有报错。

正在左思右想,感觉IE6容错性能很低,就怀疑是JavaScript动态创建绑定用户列表事件导致内存占用过多。因为用户列表是动态创建的,而绑定右键的方法是写在一个函数里。如:

...

READ ALL

Linux根据节点删除特殊符号以及乱码文件

今天执行发现项目下有一个文件竟然是\,怎么删都删除不掉

[root@CPB-Docker test]# ll
total 4
drwxr-xr-x 2 root root 4096 Jun 24 09:59 \
-rw-r--r-- 1 root root    0 Jun 24 10:00 settng.ini

使用命令删除

[root@CPB-Docker test]# rm '\'
rm: cannot remove ‘\\’: Is a directory
[root@CPB-Docker test]# rm '\\'
rm: cannot remove ‘\\\\’: No such file or directory

...

READ ALL

jQuery获取容器实际宽度的误区

jQuery获取容器的实际宽度去实现一些简单的动画效果,已是众多网站青睐的手法。

近日一同事问我怎么jQuery获取容器宽度是NaN值?我看了一下他获取容器宽度的写法:

parseInt($('div').css('width'))

我改成

$('div').css('width')

打印获取的值,结果是

auto

怪不得转整型的时候变成了NaN,根本就没有取到容器的实际宽度,而是取到了CSS里的设置值!改成:

$('div').width()

问题解决,而且取到的值是整型,省了parseInt函数。

...

READ ALL

Linux下.vimrc配置不生效

为方便开发我修改了root帐号的宿主目录,过了一段时间,我发现vim编辑器没有高亮,以为是vim编辑器问题,重装了vim编辑器还是一样。到/root目录下之前创建的.vimrc文件也存在,并且配置内容没有改变。

一下子就陷入僵局~~!

偶然操作一次宿主目录时,发现一个奇怪的现象。

[root@qttc /] vim ~/.vimrc

打开的竟然是一个新文件?可明明/root下有.vimrc文件啊!忽然想起是不是修改了宿主目录导致,于是打开/etc/passwd文件,果然发现宿主目录被修改了,恢复到root以后vim配置文件.vimrc生效。否则就要拷贝.vimrc一份到修改后的宿主目录下。

...

READ ALL