• JavaScript函数arguments数组获得实际传参数个数

    JavaScript与PHP在函数传参方面有点不同,PHP形参与实参个数要匹配,而JavaScript就灵活多了,可以随意传参,实参比形参少或多都不会报错。

    实参比形参多不会报错

    function say (a) {
      console.log(a); 
    }
     
    say('琼台博客', 'WEB技术博客'); // Output: 琼台博客
    

    我们再来看看形参比实参多的结果

    function say (a, b) {
      console.log('a 的值是 '+a+', b 的值是 '+b); 
    }
     
    say('琼台博客'); // Output: a 的值是 琼台博客, b 的值是 undefined
    

    ...

    READ ALL

  • 晒晒我曾经用过的杀毒软件

    几乎所有玩电脑的都要接触杀毒软件,在以前的网络环境中杀毒软件是必装的软件之一。U盘autorun.exe文件,熊猫烧香,IE主页被锁广告页等等更是历历在目。每次重装系统后第一件事就是把杀毒软件给装上,感觉给电脑装了杀毒软件就像是加了一层盔甲入侵无门。后来才感觉那时太天真了,病毒从来就不走正门的。

    诺顿杀毒

    full

    诺顿(Norton)是Symantec(赛门铁克)公司出品,国外杀毒软件。当时是我买了联想电脑后自带的,诺顿在业内口碑不错。当时好像是免费试用三个月,三个月后需要再续费才能使用,我那时比较穷所以三个月后就给卸了。现在诺顿貌似一直做的不错,还推出了网络安全特警。

    ...

    READ ALL

  • Linux系统邮件查看及清空

    在操作Linux命令时,时常出现以下这样一句话

    You have mail in /var/spool/mail/root

    这个是提示有最新的邮件,你可以使用mail命令阅读

    -bash-4.1# mail 
    Heirloom Mail version 12.4 7/29/08.  Type ? for help.
    "/var/spool/mail/root": 383 messages 381 unread
        1 user@localhost.local  Tue Apr 10 20:09 183/7743  "[abrt] full crash report"
        2 user@localhost.local  Tue Apr 10 20:15 183/7730  "[abrt] full crash report"
        3 user@localhost.local  Tue Apr 10 20:20 183/7730  "[abrt] full crash report"
        4 user@localhost.local  Tue Apr 10 20:22 183/7730  "[abrt] full crash report"
    

    ...

    READ ALL

  • JavaScript里弹出</script>标记出错解决方法

    在JavaScript里弹出</script>会让JavaScript误以为这是一个结束标签,而出现异常。

    如以下代码

    <script>
    alert('</script>');
    </script>
    

    我们在<script>块内使用alert弹出</script>字符串,结果被误以为是结束标签,vim还变了颜色。运行结果

    full

    由于把字符串里的当成了结束标签,所以就出现异常,显然这不是我们想要的结果。我们只需要把代码稍加处理一下即可实现。

    ...

    READ ALL

  • 设置Linux计划任务crontab容易出错的地方

    Linux的计划任务可以说是最常用也实用的系统程序了,Linux的计划任务设置也很简单,但稍有不注意就会出错。

    如:使用ntpdate命令每天凌晨自动对时,可能会这么写

    00 00 * * * ntpdate asia.pool.ntp.org;
    

    但这么写是出错的,你可能百思不得其解,在命令状态下执行看下结果

    -bash-4.1# ntpdate asia.pool.ntp.org
    25 Jul 14:00:21 ntpdate[5815]: step time server 212.26.18.43 offset 19.175301 sec
    

    ...

    READ ALL

  • PHP判断字符串是纯英文、纯汉字或汉英混合

    PHP没有直接函数来判断一个字符串是否是纯英文或纯汉字以及汉英混合,只能自己写函数。要想实现此功能就必需对字符集汉字编码占位进行了解,就目前国内比较常用的字符集当属UTF8与GBK了。

    • UTF8每个汉字等于3个长度;
    • GBK每个汉字等于2个长度;

    利用以上汉字与英文的差异,我们就可以利用mb_strlen()函数与strlen()函数分别计算出两组长度数字,然后根据规律进行运算即可判断出字符串的类型了。

    UTF8实例

    <?php
    /**
     * PHP判断字符串纯汉字 or 纯英文 or 汉英混合
     * 琼台博客 www.qttc.net
     */
    function utf8_str($str){
      $mb = mb_strlen($str,'utf-8');
      $st = strlen($str);
      if($st==$mb)
        return '纯英文';
      if($st%$mb==0 && $st%3==0)
        return '纯汉字';
      return '汉英混合';
    }
     
    $str = '琼台博客';
    echo utf8_str($str); // Output: 纯汉字
    
    $str = '琼台博客 www.qttc.net'
    echo utf8_str($str); // Output: 汉英混合
    

    ...

    READ ALL

  • 关于博客生成HTML静态化的一些看法

    这两周,忙着给自己的站点动手术,而且是大手术。五月份,我的小站写好了以后经过线上运行修修补补也已稳定,这个月我给小站生成HTML静态页一是缓解鸭梨,二是试试看。以下就总结这几天生成HTML的一些问题与分享。

    采用内容生成静态方式

    本来想着生成全页HTML,但由于页面上有动态信息,如随机博文与相关博文、评论以及浏览次数等,于是放弃全页HTML方式,采用部分内容生成静态方式。

    当然,也许会有些人会说全页生成HTML方式比较好。如果是全页生成HTML的方式那么就需要在动态内容的地方放入<script>标签指向一个PHP页面,然后由PHP来生成JavaScript写出动态内容,但这样种方式不利于SEO。

    ...

    READ ALL

  • 推荐一款带左右按钮无缝图片滑动JavaScript插件

    由于手上正好有一个需求,点击左右箭头可以滑动图片并且要求无缝效果,本来想自己写的但越写越发现貌似力不从心,于是从网上搜搜,结果找到了这一款插件。插件的作者以及相关信息我没有去关注,但下载过来用了一下,发现效果很不错,还支持自动滑动,非常完美的一款插件。

    插件的下载地址:ScrollPic.js

    使用方法

    // 先加载ScrollPic.js插件后再执行以下语句
    window.onload = function(){
      scrollPic_01 = new ScrollPic();
      scrollPic_01.scrollContId   = "pic"; //图片容器ID
      scrollPic_01.arrLeftId      = "left"; //左按钮ID
      scrollPic_01.arrRightId     = "right"; //右按钮ID
      scrollPic_01.frameWidth     = 840; //图片容器宽度
      scrollPic_01.pageWidth      = 210; //每张图片宽度
      scrollPic_01.speed          = 10; //移动速度(单位毫秒,越小越快)
      scrollPic_01.space          = 10; //每次移动像素(单位px,越大越快)
      scrollPic_01.autoPlay       = false; //自动播放
      scrollPic_01.autoPlayTime   = 3; //自动播放间隔时间(秒)
      scrollPic_01.initialize();  //初始化
    }
    

    ...

    READ ALL

  • Nginx设置proxy_cache缓存

    Nginx原先是没有proxy_cache功能的,貌似从0.8.x版本以后就加入了这个类似Squid缓存的功能,proxy_cache是吧URL当作Key,用md5编码哈希后保存在磁盘上,支持任意的URL,也支持非200状态码,如404/302等。这个功能已经可以取代Squid,特别是性能上,Nginx对多核CPU的利用就比Squid强很多。

    nginx.conf里的http块加入以下代码

    # proxy_temp_path和proxy_cache_path指定的路径必须在同一分区
    proxy_temp_path   /tmp/proxy_temp_dir;
    # 设置名称为nginx_cache,内存缓存空间大小为500MB,30天没有被访问的内容自动清除,硬盘缓存空间大小为30GB。
    proxy_cache_path  /tmp/proxy_cache_dir  levels=1:2   keys_zone=nginx_cache:200m inactive=3d max_size=30g;
    

    ...

    READ ALL

  • JavaScript写的一个石头剪子布游戏,大家进来玩玩吧!

    游戏通常都要做到以下两点

    • 电脑随机
    • 判断胜负

    首先是胜负算法,游戏规则

    • 石头 杀 剪子
    • 剪子 杀 抹布
    • 抹布 杀 石头
    • 石头 杀 剪子

    根据以上规则找出规律,写出算法即可。

    让电脑随机,这点比较容易,前面我有写过文章介绍,不明白的童鞋可以去看看。

    随机刷屏,其实这个效果不是游戏的关键性,但为了看起来更加互动,好玩,我就给加上了。这里用到了一个取模算法,根据余数去循环显示即可达到效果。

    完整代码

    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8" />
        <title>JS写的石头剪子布游戏 - 琼台博客</title>
        <style type="text/css">
          div{margin:20px auto;padding:10px;border:2px solid #999;width:200px;background:#ffe;}
          div#cu{font-weight:bold;font-size:30px;height:40px;color:red;}
          div#la{border:none;background:none;display:none;}
          span{color:red;font-weight:bold;}
        </style>
        <script type="text/javascript">
            var se = null,time=20,you=0,arr=['石头','抹布','剪子'];
            function p(n){
              you = n;
              document.getElementById('you').innerHTML=s(n);
              document.getElementById('st').disabled=true;
              document.getElementById('mb').disabled=true;
              document.getElementById('jz').disabled=true;
              document.getElementById('cu').innerHTML = '...';
              se = setInterval('t()',50);
            }
            function agin(){
              document.getElementById('st').disabled=false;
              document.getElementById('mb').disabled=false;
              document.getElementById('jz').disabled=false;       
              document.getElementById('la').style.display = 'none';
              document.getElementById('you').innerHTML = '';      
              document.getElementById('pc').innerHTML = '';
              document.getElementById('cu').innerHTML = '';
              document.getElementById('you').innerHTML= '请选择';        
            }
            function bt(){
              var pc = Math.floor(Math.random() * 3 + 1);
              document.getElementById('pc').innerHTML = s(pc);
              var str='';
              if(pc==you){
                  str += '平局';    
              }else{
                var b = pc-you;
                if(b>0){
                  if(b==1){
                    str += '电脑赢';   
                  }else{
                    str += '你赢啦';   
                  }               
                }else{
                  b = b*-1;   
                  if(b==1){
                    str += '你赢啦';   
                  }else{
                    str += '电脑赢';   
                  }   
                }       
              }
              document.getElementById('la').style.display = 'block';
              document.getElementById('cu').innerHTML = str;
            }
            function t(){
              if(time>0){
                document.getElementById('pc').innerHTML = arr[time%3];
                time--;
              }else{
                clearInterval(se);
                se = null;
                time = 20;
                bt();
              }
            }
            function s(n){
              if(n==1){
                return '石头';    
              }else if(n==2){
                return '抹布';    
              }else{
                return '剪子';    
              }
            }
        </script>
      </head>
      <body>
        <div>
          <p>你出什么?<span id="you">请选择</span></p>
          <p><button id="st" onclick="p(1);">石头</button></p>
          <p><button id="mb" onclick="p(2);">抹布</button></p>
          <p><button id="jz" onclick="p(3);">剪子</button></p>
        </div>
        <div>
          <p>电脑出?</p>
          <span style="" id="pc"></span>
        </div>
        <div id="cu"></div>
        <div id="la"><button id="agin" onclick="agin()">再来一次</button></div>
        <div><p><a href="https://www.qttc.net" target="_blank">琼台博客 www.qttc.net</a></p></div>
      </body>
    </html> 
    

    ...

    READ ALL