• 中国新一代百亿亿次超级计算机“天河三号”原型机首次亮相[组图] 2018-08-17
  • “动静”结合丨带你感受不一样的实爆训练场 2018-08-17
  • 侠客岛:拿什么拯救你,不学普通话的香港年轻人 2018-08-17
  • 机构改革是一场政治考验 2018-08-17
  • 简讯:韩国前总统朴槿惠一审被判24年有期徒刑 2018-08-16
  • 人民网评:走向大洋,呼唤现代化的中国海军 2018-08-16
  • 北京成立学生申诉处理委员会-地方新闻-时政频道-中工网 2018-08-16
  • 虽胜不足喜!鲁能一隐忧不治愈,恐高开低走 2018-08-16
  • 小鱼儿戴胡可帽子似贵妇 临睡之前表白妈妈嘴超甜 2018-08-16
  • “北京8分钟”融入人工智能 通过互联网与国人互动 2018-08-16
  • 四部门调整完善新能源汽车推广应用财政补贴政策 2018-08-15
  • 两男子在吉大美食城“百元找零”诈骗? 2018-08-12
  • 突破!郑鹏创中国队冬残奥会个人项目最好成绩 2018-08-12
  • 今年铜陵市将治理水土流失面积36平方公里 2018-08-11
  • 篮球投注技巧 2018-08-11
  • Kevensuu's Blog

    Mac 升级 Sierra 后 Zsh 更新失败

    Mac 升级 Mac Sierra 后,Oh My Zsh 升级失败,错误提示如下:

    xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
    

    解决方法:

    sudo xcode-select --install
    

    执行上面命令后,安装相应插件,即可。

    Laravel 框架使用

    1、安装
    1)、安装方法

    2)、项目目录结构
    

    2、路由

    1)、指向控制器

    2)、传递参数

    3)、指向视图

    3、控制器

    创建控制器:php artisan make:controller Home/IndexController

    1)、DB操作

    2)、指向视图、传递数据给视图

    4、视图

    1)、公共部分 怎么共用

    2)、数据传递给所有视图

    5、发布

    PHP 控制 API 接口请求频率限制

    这里我们使用 redis 来实现这个功能:

    方法1:

    function limit_api_call_1()
    {
        $redis = new Redis();
        $redis->connect('127.0.0.1', 6379);
    
        $key = "rate_control";
    
        // 判断请求次数是否超限    
        $rate_value_current = $redis->get($key);
        if($rate_value_current > 10)
        {
            return false;
        }
    
        // 请求次数+1
        $rate_value = $redis->incr($key);
        
        // 设置KEY有效期
        if($rate_value == 1)
        {
            $redis->expire($key, 1);
        }
    
        return $rate_value;
    
    }
    

    方法2:

    PHP 加解密函数

    PHP 加密

    function string2secret($str, $key)
    {
       $td = mcrypt_module_open(MCRYPT_DES,'','ecb','');
       $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
       $ks = mcrypt_enc_get_key_size($td);
    
       $key = substr(md5($key), 0, $ks);
       mcrypt_generic_init($td, $key, $iv);
       $secret = mcrypt_generic($td, $str);
       mcrypt_generic_deinit($td);
       mcrypt_module_close($td);
       return base64_encode($secret);
    }
    

    PHP 解密

    function secret2string($sec, $key)
    {
       $sec = base64_decode($sec);
       $td = mcrypt_module_open(MCRYPT_DES,'','ecb','');
       $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
       $ks = mcrypt_enc_get_key_size($td);
    
       $key = substr(md5($key), 0, $ks);
       mcrypt_generic_init($td, $key, $iv);
       $string = mdecrypt_generic($td, $sec);
       mcrypt_generic_deinit($td);
       mcrypt_module_close($td);
       return trim($string);
    }
    

    注意:这里需要 php ???mcrypt 支持

    mysql group_concat 用法

    需求:从一批数据中,按 live_id 分组取 id 最大的一个值,并按照 sort desc create_time 排序

    测试数据如下:

    可以看到有些 live_id 对应多条数据记录

    CodeIgniter 框架 出现 Access denied 错误

    在使用 CI 框架过程中会遇到 Access denied 的错误提示,出现这个错误的问题主要是 PHP 路径配置问题

    解决方法,修改 php 配置文件

    cgi.fix_pathinfo = 1
    

    composer 安装 Laravel 框架

    Composer 作为 PHP 管理依赖(dependency)关系的工具,在使用 Laravel 框架中使用得较为广泛。

    这里我们就来介绍一下通过 Composer 来安装 Laravel 框架的方法。


    安装 Composer

    curl -sS http://www.rocksun.cn/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
    

    解决 Vagrant 虚拟机用户权限问题

    通过 Vagrant 虚拟机开发过程经?;嵊龅接没ㄏ薏蛔愕奈侍?,解决方法只需要修改一下 Vagrantfile 配置信息即可。

    config.vm.synced_folder "/Users/sss/www/su_project/work_project/", "/data/src", create: true, owner: "root", group: "root"
    

    这里我们只是在配置镜像同步后面添加相关用户信息

    create: true, owner: "root", group: "root"
    

    MAC 设置环境编辑

    在 MAC 设置环境变量,尝试修改 /etc/profile.bash_profile 都不能全局生效,只在当前终端窗口有效,新建一个窗口就无效

    最终发现和 Zsh 有关,安装了 Oh My Zsh 插件后,需要修改 Zsh 自己的配置 .zshrc

    # 编辑 .zshrc
    vim .zshrc
    
    # 添加配置
    alias ll="ls -al"
    
    # 生效
    source .zshrc
    

    这样就可以全局使用自己新加的配置了。

    PHP 防并发 insert 多条记录

    方式1:通过 redis get|set 来实现

    if($this->user_baby_model->get_lock($params['uid'], $params['bbtype']))
    {
        $this->my_send_log->add(100012, array('add_baby_concurrent', date('Ymd-H:i:s'), $params), 1);
        return $this->error('Err.Unknown_error', 'the same request has exist');
    }
    else
    {
        $this->user_baby_model->set_lock($params['uid'], $params['bbtype']);
    }
    
    public function set_lock($uid, $bbtype)
    {
        $key = $this->set_lock_key($uid, $bbtype);
        return $this->my_redis->save_string('redis_bcache', $key, 1, 10);
    }
    
    public function get_lock($uid, $bbtype)
    {
        $key = $this->set_lock_key($uid, $bbtype);
        return $this->my_redis->get_string('redis_bcache', $key);
    }
    
    public function set_lock_key($uid, $bbtype)
    {
        return md5($uid.$bbtype);
    }