Hot For Coding
  • NodeJS读写文件

    NodeJS中读写文件基本都是用fs模块,应该是file system的缩写

    读文件

    读文件有两个API,差别就是一个是同步另一个异步

    • fs.readFile
    • fs.readFileSync
    // 琼台博客 www.qttc.net
    
    // fs.readFile
    var fs = require('fs'),
      path = require('path'),    
      filePath = path.join(__dirname, 'index.md');
    
    fs.readFile(filePath, {encoding: 'utf-8'}, function(err,data){
      if (!err) {
        console.log('received data: ' + data);
      } else {
        console.log(err);
      }
    });
    
    // fs.readFileSync
    var data = fs.readFileSync(filePath, {encoding: 'utf-8'});
    console.log('received data: ' + data);
    

    ...

    READ ALL

  • JavaScript常用遍历循环方法

    for

    使用for循环是最常见的一种方式

    // 琼台博客 www.qttc.net
    
    for (let i=0; i<1000; i++) {
      console.log(i)
    }
    

    while

    while循环,比较简单

    // 琼台博客 www.qttc.net
    
    let i = 0
    while (i<1000) {
      console.log(i)
      i++
    }
    

    do while

    跟while循环一样,只不过先执行一次

    // 琼台博客 www.qttc.net
    
    let i = 0
    do {
      console.log(i)
      i++
    } while (i < 1000)
    

    ...

    READ ALL

  • Linux计划任务crontab

    在Linux中,也有类似Windows一样的计划任务,并且更直观,更方便

    在命令状态下敲入

    crontab -e
    

    回车即可进入计划任务编辑状态。

    一共分为六列值,如

    */2 * * * * echo 'Hello world!'
    

    表示每两分钟执行一次echo命令

    由此看出前五列表示时间,最后一列表示命令

    第一列 分 0-59
    第二列 时 0-23
    第三列 日 1-31
    第四列 月 1-12 (或者用jan/feb等名字)
    第五列 星期 0-7 (0或7是周日,也可以用mon,tue等表示)
    第六列 命令/脚本

    编辑好了以后直接保存退出即可!

    如每天凌晨两点执行某任务

    ...

    READ ALL

  • MySQL中replace into的用法

    在向表中插入数据的时候,经常遇到这样的情况:

    • 首先判断数据是否存在
    • 如果不存在,则插入
    • 如果存在,则更新

    在SQLServer中可以这样写:

    if not exists (select 1 from table where id = 1) insert into table(id, update_time) values(1, getdate()) else update table set update_time = getdate() where id = 1
    

    在MySQL 中也可以先select,判断是否存在,存在则update否则insert

    ...

    READ ALL

  • 在PHP中用sleep导致诡异事件

    近日,由于项目需求

    需要用到sleep()函数定时从数据库取一堆数据出来去执行某些操作。

    sleep()等待的时间至少有一个小时以上

    此前做过测试

    sleep()函数去完成数小时后执行的操作是可行的

    可邪门的问题出来了

    程序用sleep()后发现不能从数据库取到相应的信息

    sleep()去掉

    结果正常

    郁闷中。。。

    难道sleep()影响读库操作!!!

    于是为了方便测试

    直接来个sleep(10)十秒后执行

    结果能从数据库读取信息

    可为什么sleep()一个小时后不能读取信息呢?

    为了测试方便我直接在sleep()语句前读库一次,sleep()后再读一次库

    ...

    READ ALL

  • 谈谈HTML5中的服务器发送事件Server-Sent Events

    HTML5加了许多新功能,其中服务器发送事件Server-Sent Events是一个亮点,以下直接贴上代码示例

    index.html

    <!DOCTYPE html> 
    <html> 
      <head>
        <meta charset="utf-8" />
        <title>服务器推送SSE</title>
        <script type="text/javascript"> 
          $(document).ready(function(){ 
            //检查浏览器支持情况
            if(typeof(EventSource)!=="undefined") { 
              //定义个对象,用于初始化事件源,这里用c.php这个页面实现 
              var eSource = new EventSource("c.php"); 
              //detect message receipt 
              eSource.onmessage = function(event) { 
                //将收到的数据展示到页面的ID=content元素中 
                document.getElementById("content").innerHTML += event.data+'<br />'; 
              }; 
            }else { 
              document.getElementById("content").innerHTML="没有收到服务端Server-Sent数据."; 
            }
          });
        </script>
      </head>
      <body> 
        <div id="content"></div>
      </body> 
    </html>
    

    ...

    READ ALL

  • JavaScript清除Cookie

    使用JavaScript能写Cookie当然也就能清除Cookie

    代码

    // 琼台博客 www.qttc.net
    
    function deleteAllCookies() {
      var cookies = document.cookie.split(";");
    
      for (var i = 0; i < cookies.length; i++) {
        var cookie = cookies[i];
        var eqPos = cookie.indexOf("=");
        var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
        document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT";
      }
    }
    

    ...

    READ ALL

  • CSS3实现阴影效果原来那么简单

    在CSS2中,要弄阴影效果几乎要靠图片完成

    在CSS3中,阴影只需要一句话,并且文字也可以加上阴影

    box-shadow

    语法

    box-shadow: none|h-offset v-offset blur spread color |inset|initial|inherit;

    Code

    div {
      box-shadow:5px 6px 3px #999;
    }
    

    以上代码即可给页面所有div加上阴影效果。现在来解析下各个参数的使用

    • 第一个参数5px,代表上下偏移,正数往下,负数往上,值越大偏移距离越大
    • 第二个参数6px,代表左右偏移,正数往右,负数往左,值越大偏移距离越大
    • 第三个参数3px,代表模糊程度,值越大,越模糊
    • 第四个参数#999,代表阴影颜色

    ...

    READ ALL

  • HTML5给搜索框中加一个放大镜

    小站刚加上搜索功能,由于懒惰就没有给搜索框加上样式,直接input标签了事。

    昨天看HTML5相关介绍的时候发现在HTML5中的input标签有search类型,于是赶紧试用了一下

    <input type="search"  />
    

    type中的text类型改成search值后,其实也没有多大改变,只不过在搜索框右侧多了一个删除按钮,点击删除可以清楚搜索框里的内容

    于是又是根据资料加了一个results属性

    <input results="s" type="search" />
    

    ...

    READ ALL

  • 一个自己写的PHP验证码生成类

    此验证码类直接拿去就可以用,也可以参考!

    此验证码特性:

    • 可以定义宽高
    • 可以定义字数
    • 可以定义画布类型

    其中类成员codestr是生成的验证码字符串,默认每一个子的宽度为20像素,依赖GD图像库,请先安装

    <?php
    /**
     * 验证码
     * 琼台博客 www.qttc.net
     */
    class Code{
    
      // 1. 定义各个成员 有宽、高、画布、字数、类型、画类型
      private $width; //宽度
      private $height; //高度
      private $num;  //验证码字数
      private $imgType; //生成图片类型
      private $Type; //字串类型 1,2,3 三个选项  1 纯数字  2 纯小写字母 3 大小写数字混合
      private $hb; //画布
      public $codestr; // 验证码字串
    
      public function __construct($height=20,$num=4,$imgType="jpeg",$Type=1){
        $this->width = $num*20;
        $this->height = $height;
        $this->num = $num;
        $this->imgType = $imgType;   
        $this->Type = $Type; 
        $this->codestr = $this->codestr();
        $this->zuhe();
      }
    
      // 2. 定义随机获取字符串函数
      private function codestr(){
        switch($this->Type){
          
          case 1:     // 类型为1  获取1-9随机数
            $str = implode("",array_rand(range(0,9),$this->num));
            break;
          case 2:     // 类型为2  获取a-z随机小写字母
            $str = implode("",array_rand(array_flip(range(a,z)),$this->num));
            break;
          case 3:     // 类型为3  获取数字,小写字母,大写字母 混合
            for($i=0;$i<$this->num;$i++){
              $m = rand(0,2);
              switch($m){
                case 0:
                  $o = rand(48,57);
                  break;
                case 1:
                  $o = rand(65,90);
                  break;
                case 2:
                  $o = rand(97,122);
                  break;  
              }
              $str .= sprintf("%c",$o);
            }
            break;          
        }
    
          
        return $str;    
      }
    
    
      // 3. 初始化画布图像资源
      private function Hb(){
        $this->hb = imagecreatetruecolor($this->width,$this->height);  
      }
    
      // 4. 生成背景颜色
      private function Bg(){
        return imagecolorallocate($this->hb,rand(130,250),rand(130,250),rand(130,250));  
      }
    
      // 5. 生成字体颜色
      private function Font(){
        return imagecolorallocate($this->hb,rand(0,100),rand(0,100),rand(0,100));    
      }
    
      // 6. 填充背景颜色
      private function BgColor(){
        imagefilledrectangle($this->hb,0,0,$this->width,$this->height,$this->Bg()); 
      }
    
      // 7. 干扰点
      private function ganrao(){
        $sum=floor(($this->width)*($this->height)/3);
        for($i=0;$i<$sum;$i++){
          imagesetpixel($this->hb,rand(0,$this->width),rand(0,$this->height),$this->Bg());    
        }
      }
    
      // 8. 随机直线 弧线
      private function huxian(){
        for($i=0;$i<$this->num;$i++){
          imageArc($this->hb,rand(0,$this->width),rand(0,$this->height),rand(0,$this->width),rand(0,$this->height),rand(0,360),rand(0,360),$this->Bg());        
        }   
      }
    
      // 9. 写字
      private function xiezi(){
        for($i=0;$i<$this->num;$i++){
          $x=ceil($this->width/$this->num)*$i;  
          $y=rand(1,$this->height-15);
          imagechar($this->hb,5,$x+4,$y,$this->codestr[$i],$this->Font());
        }   
      }
    
      // 10. 输出
      private function OutImg(){
        $shuchu="image".$this->imgType;  
        $header="Content-type:image/".$this->imgType;
        if(function_exists($shuchu)){
          header($header);
          $shuchu($this->hb);
        }else{
          exit("GD库没有此类图像");  
        }
      }
    
      // 11. 拼装
      private function zuhe(){
        $this->Hb();
        $this->BgColor();
        $this->ganrao();
        $this->huxian();
        $this->xiezi();
        $this->OutImg(); 
      }   
    
      public function getCodeStr(){
        return $this->codestr;       
      }
    }
    
    

    ...

    READ ALL