A crazy guy
  • 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报错。因为用户列表是动态创建的,即可能有一个用户进入房间就在列表里增加一个用户,离开一个用户就从列表里删除这个用户,不好调试,我改成静态的测试。发现没有崩溃,也没有报错。

    ...

    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