js 倒计时插件

    /**
     * [setCountDown description]
     * @type {Object}
     * @Author xiege
     * @param init  入口函数
     * @param opt{
     *              endtime:'',
     *              done:function(){},
     *              callback:function(){}
     *           }[endtime:结束时间,done:操作函数,callback:倒计时归零时回调函数]
     */
    var setCountDown = {
            timer:null,
            init:function(opt){
                var _this = this;
                this.setShowTime(opt.endtime,opt.done);
                this.timer = setInterval(function(){
                    _this.setShowTime(opt.endtime,opt.done,opt.callback)
                },1000)
            },
            getCountdown:function(time){
                var curShowTimeSecondsVal = this.getSecond(time) - this.getSecond();
                if(curShowTimeSecondsVal<0) return [0,'00','00','00'];
                // console.log(curShowTimeSecondsVal)
                // 剩余秒数
                var curShowTimeSeconds = parseInt(curShowTimeSecondsVal%60);
                // 计算剩余天数
                var curShowTimeDays = parseInt(curShowTimeSecondsVal/3600/24);
                // 计算剩余小时
                var curShowTimeHours = parseInt((curShowTimeSecondsVal/3600)) - curShowTimeDays*24;
                // 计算剩余分钟
                var curShowTimeMinutes = parseInt((curShowTimeSecondsVal - parseInt((curShowTimeSecondsVal/3600))*3600)/60);
                curShowTimeHours = curShowTimeHours > 9 ? curShowTimeHours : '0' + curShowTimeHours;
                curShowTimeSeconds = curShowTimeSeconds > 9 ? curShowTimeSeconds : '0' + curShowTimeSeconds;
                curShowTimeMinutes = curShowTimeMinutes > 9 ? curShowTimeMinutes : '0' + curShowTimeMinutes;
                return [curShowTimeDays,curShowTimeHours,curShowTimeMinutes,curShowTimeSeconds];
            },
            getSecond:function(times){
                if(times){
                    var year = parseInt(times.slice(0,4)),
                        month = parseInt(times.match(/-\d*/gi)[0].replace('-','')-1),
                        day = parseInt(times.match(/-\d*/gi)[1].replace('-','')),
                        hour = parseInt(times.match(/\d*:/)[0].replace(':','')),
                        minute = parseInt(times.match(/:\d*/)[0].replace(':',''));
                    return (new Date(year,month,day,hour,minute,0)).getTime()/1000;
                }
                return (new Date()).getTime()/1000;
            },
            setShowTime:function(endtime,done,callback){
                var _this = this;
                // var oSetTime = document.getElementById('time');
                var day = this.getCountdown(endtime)[0],
                    hour = this.getCountdown(endtime)[1],
                    minute = this.getCountdown(endtime)[2],
                    second = this.getCountdown(endtime)[3];
                done([day,hour,minute,second])
                // oSetTime.innerHTML = '剩余时间:'+day+'天'+hour+'小时'+minute+'分'+second+'秒';
                if(day==0&&hour=='00'&&minute=='00'&&second=='00'){
                    clearInterval(_this.timer);
                    _this.timer = null;
                    if(callback) callback();
                }
            }
        };
    setCountDown.init({
        endtime:start, //结束时间  2017-08-13 02:00
        done:function(data){
            // console.log(data)
            document.getElementById('time').innerHTML = '剩余时间:'+data[0]+'天'+data[1]+'小时'+data[2]+'分'+data[3]+'秒';
        },
        callback:function(){
            // window.location.reload()
            //callback –> 回调函数,用于当倒计时结束时的回调,作相应的操作
        }
    })

 

laravel Cookie使用

1、首先引入

use Illuminate\Support\Facades\Cookie;

2、写入数据

Cookie::queue('test','hello',20);    //队列
Cookie::make('test','hello',20);    //写入

3、获取数据,依赖于 Request,所以我们需要首先引入

use Symfony\Component\HttpFoundation\Request;

4、获取数据

$request->cookie('test');

5、清除cookie

Cookie::forget('test');

 

laravel Eloquent in 查询

whereIn 方法验证指定字段的值包含在指定的数组之内:

$users = DB::table('users')
                    ->whereIn('id', [1, 2, 3])
                    ->get();

whereNotIn 方法验证指定字段的值包含在指定的数组之内:

$users = DB::table('users')
                    ->whereNotIn('id', [1, 2, 3])
                    ->get();

 

centos 清理日志文件

1、查看日志文件命令:

last -f

比如查看可疑ip登陆

last -f /var/log/wtmp

为了方便清理。找了个清理日志的脚本(clearLog.sh):

#!/bin/sh
cat /dev/null > /var/log/syslog
cat /dev/null > /var/adm/sylog
cat /dev/null > /var/log/wtmp
cat /dev/null > /var/log/maillog
cat /dev/null > /var/log/messages
cat /dev/null > /var/log/openwebmail.log
cat /dev/null > /var/log/maillog
cat /dev/null > /var/log/secure
cat /dev/null > /var/log/httpd/error_log
cat /dev/null > /var/log/httpd/ssl_error_log
cat /dev/null > /var/log/httpd/ssl_request_log
cat /dev/null > /var/log/httpd/ssl_access_log

另外清理linux系统垃圾还有以下命令

sudo apt-get autoclean 清理旧版本的软件缓存

sudo apt-get clean 清理所有软件缓存

sudo apt-get autoremove 删除系统不再使用的孤立软件

 

laravel ftp 驱动上传文件

1、因为laravel默认filesystems文件是没有ftp配置的,所以我们先配置一下。

filePath: /config/filesystems.php

'ftp' => [
            'driver'   => 'ftp',
            'host'     => 'FTP地址',
            'username' => 'FTP 用户名',
            'password' => 'FTP密码',
            'port'     => 21,  //ftp端口
            'root'     => '/',  //ftp目录
        ],

2、在控制器进行上传操作

            $file = $request->file('img');   //img 是input 的name值

            //判断文件是否上传成功
            if ($file->isValid()) {

                //原文件名称
                $originName = $file->getClientOriginalName();

                //文件扩展名
                $ext = $file->getClientOriginalExtension();

                //文件类型
                $type = $file->getClientMimeType();

                //临时绝对路径
                $realPath = $file->getRealPath();

                //存储文件名
                $filenName = date("Y-m-d").'-'.uniqid().'.'.$ext;

                //执行上传文件
                $bool = Storage::disk('ftp')->put($filenName,file_get_contents($realPath));

            }

 

laravel ORM 遍历一对一关联数据

laravel中两个表做数据关联,这里是一个实际例子,一个产品表products,一个产品视频介绍二维码表pqrcodes,两个表中数据一对一关系,在产品详细信息展示页面想将产品的二维码信息同时展示出来,比如二维码过期时间等,这样就需要对两个表进行数据关联。

Product模型


namespace App;

use Illuminate\Database\Eloquent\Model;

class Product extends Model
{

   protected $table='products';
   //关联Pqrcode表
   public function pqrcode(){
       //id是pqrcodes的主键,qid是products中pqrcodes的外键
       return $this->hasOne('App\Pqrcode','id','qid');
   }
}

Pqrcode模型

namespace App;

use Illuminate\Database\Eloquent\Model;

class Pqrcode extends Model
{
    protected $table = 'pqrcodes';
}

控制器中调用

$products = Product::with('pqrcode')->where('uid','=',Auth::user()->id)->get();

我采用的是预加载方法with(),这样可以加快速度。

将$products变量注册到前端页面

return view('home.member.index')->with('products',$products);

前端页面中调用关联表中的数据

@foreach($products as $item)
<tr>
    <td>{{$item['id']}}</td>
    <td>{{$item['name']}}</td>
    <td>状态</td>
    <td>{{$item['pqrcode']['expired_at']}}</td>
    <td><button class="btn btn-primary show-qrcode" id="show-qrcode-{{$item['id']}}">查看二维码</button></td>
</tr>
@endforeach

 

apt出现no public key available for the following key IDs

今天使用apt-get update更新时出现了报错:

Reading package lists... Done
W: There is no public key available for the following key IDs:
6FB2A1C265FFB764

 

出现没有key的问题。

骨骼了下。解决记录下

apt-get install debian-keyring debian-archive-keyring
安装key源
apt-key update
更新key

接着apt-get update
解决

 

laravel 中间件添加、注册、使用

添加:

在app/Http/Middleware/下面新增中间件例如:app/Http/Middleware/Huodong.php

namespace App\Http\Middleware;

use Closure;

class Huodong
{

    //handle 是固定方法。
    public function handle($request,Closure $next)
    {
       if (time() < strtotime('2017-06-28')) {
            return redirect('member/huodong');
       }
       return $next($request);

       //$next 后面执行的逻辑 叫后置操作。
    }


}

中间件注册

app/Http/Kernel.php

 protected $routeMiddleware = [
        'auth' => \App\Http\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'can' => \Illuminate\Foundation\Http\Middleware\Authorize::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        'huodong'  => \App\Http\Middleware\Huodong::class,   //这个是新增
    ];
}

中间件使用,在路由中增加

Route::get('member/huodong',['uses' => [email protected]']);

//这个是中间件
Route::group(['middleware' => ['huodong']],function(){
    Route::get('member/huodong1',['uses' => [email protected]']);
});

 

laravel 输出json以及重定向

$data = ['name'=>'xiaobai','age'=>18,'sex'=>'男'];
        //返回json类型数据
        return response()->json($data);


        //重定向,页面跳转
        //传入网址跳转
        return redirect('muban');

        //带参数跳转
        return redirect('muban')->with('message','这里是数据');

        //跳转到指定方法里面
        return redirect()->action([email protected]');
        //跳转到指定别名
        return redirect()->route('session1')->with('message','这里是数据');
        //返回来源页
        return redirect()->back();

 

Laravel session

//1.http request session
        $request->session()->put('key1','value1');
        $request->session()->get('key1');

        //2.session()帮助函数
        session()->put('key2','value2');
        session()->get('key2');

        //3.session 需要引入use Illuminate\Support\Facades\Session;
        Session::put('key3','value3');
        //如果key3不存在则返回default
        echo Session::get('key3','default');
        //以数组的形式存数据
        Session::put(['key4'    =>  'value4']);

        //存入数组

        Session::push('name','xiaobai');
        $res = Session::get('name');
        //取出数据后删除该条数据
       $res = Session::pull('age',18);
        //取出所有记录
        $res = Session::all();
        //判断key是否存在
        if (Session::has('key1')) {
            echo '存在';
        }else{
            echo '不存在';
        }
        //删除指定key
        Session::forget('key1');
        //清空session
        Session::flush();
        //暂存数据  存储后,只要访问一次就会自动销毁
        Session::flash('num','2');