• Linux使用ntpdate同步时间

    Linux里要同步时间特别简单,使用utpdate命令就可以

    CentOS可以

    yum install utpdate
    

    Ubuntu可以

    sudo apt-get install ntp
    

    同步时间

    ntpdate -u time.windows.com
    

    常用的服务器列表有以下

    • 210.72.145.44 (国家授时中心服务器IP地址)
    • ntp.sjtu.edu.cn 202.120.2.101 (上海交通大学网络中心NTP服务器地址)
    • s1a.time.edu.cn 北京邮电大学
    • s1b.time.edu.cn 清华大学
    • s1c.time.edu.cn 北京大学
    • s1d.time.edu.cn 东南大学
    • s1e.time.edu.cn 清华大学
    • s2a.time.edu.cn 清华大学
    • s2b.time.edu.cn 清华大学
    • s2c.time.edu.cn 北京邮电大学
    • s2d.time.edu.cn 西南地区网络中心
    • s2e.time.edu.cn 西北地区网络中心
    • s2f.time.edu.cn 东北地区网络中心
    • s2g.time.edu.cn 华东南地区网络中心
    • s2h.time.edu.cn 四川大学网络管理中心
    • s2j.time.edu.cn 大连理工大学网络中心
    • s2k.time.edu.cn CERNET桂林主节点
    • s2m.time.edu.cn 北京大学

    ...

    READ ALL

  • JavaScript日期时间类型(Y-m-d H:i:s)与时间戳互转

    JavaScript中没有类似PHP那样简便的函数可以直接将时间戳与日期类型格式相互转换,于是只好自己写一个函数,使用时方便调用。

    function datetime_to_unix(datetime){
      var tmp_datetime = datetime.replace(/:/g,'-');
      tmp_datetime = tmp_datetime.replace(/ /g,'-');
      var arr = tmp_datetime.split('-');
      var now = new Date(Date.UTC(arr[0], arr[1] - 1, arr[2], arr[3] - 8, arr[4], arr[5]));
      return parseInt(now.getTime()/1000);
    }
    
    function fillZero(num) {
      return num >= 10 ? num : '0' + String(num)
    }
     
    function unix_to_datetime(unix) {
      var now = new Date(parseInt(unix) * 1000);
      return [
        [
          now.getFullYear(),
          fillZero(now.getMonth() + 1),
          fillZero(now.getDate())
        ].join('-'),
        [
          fillZero(now.getHours()),
          fillZero(now.getMinutes()),
          fillZero(now.getSeconds())
        ].join(':'),
      ].join(' ')
    }
     
    var datetime = '2012-11-16 10:36:50';
    var unix = datetime_to_unix(datetime);
    console.log(datetime + ' 转换后的时间戳为: ' + unix);
     
    var unix = 1353033300;
    var datetime = unix_to_datetime(unix);
    console.log(unix + ' 转换后的日期为: ' + datetime);
    

    ...

    READ ALL

  • 解决IE8版本以下不支持HTML5标签

    HTML5新增不少比较有意思的标签,主流浏览器都支持了,包括IE9,10。

    然而IE8或以下版本不支持HTML5新增标签,导致HTML5构造页面在IE8或以下显示页面混乱出错,为了兼容IE8或以下IE浏览器支持HTML5标签,我们可以这么解决

    下载html5shiv.js

    页面引入html5shiv.js

    <script src="html5shiv.js"></script>
    

    并且对HTML标签声明样式

    section,
    article,
    aside,
    header,
    footer,
    nav,
    dialog,
    figure {
      display:block;
    }
    

    ...

    READ ALL

  • 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