今天收到客户那边发过的一个函...

客户一个项目被上级查到有安全漏洞,源码都能被人家拉下来!!!
函中明确写明了是通过.git这个文件夹,使用脚本将源码拉下来了...

第一反应是这是什么操作,细想之后确实是可以的,每次commit都会在.git这个文件夹中记录,对这些提交进行解析
那轻轻松松得到源码了.

不过解决这个问题还是有很多办法的

  • 将这个文件夹删除,不建议,代码维护起来艰难.
  • 给这个文件夹减权,使web软件如Nginx无法访问,给个600这类的权限.
  • 将web入口文件放到里层目录中去(Laravel就是如此).

使用 usort()对一个二维数组中的某一个键值进行排序.文档

$arr = [
    [
        'name' => '小明',
        'age'  => 18,
        'sex'  => '男'
    ],
    [
        'name' => '小园',
        'age'  => 18,
        'sex'  => '男'
    ],
    [
        'name' => '小花',
        'age'  => 19,
        'sex'  => '男'
    ],
    [
        'name' => '婷婷',
        'age'  => 28,
        'sex'  => '女'
    ],
    [
        'name' => '嘻嘻',
        'age'  => 28,
        'sex'  => '男'
    ]
]

$new_arr = usort($arr,function($a,$b){
        if($a['age'] == $b['age']){
            return 0;
        }
        return ($a['age'] > $b['age']) ? 1 : -1;
});
# 依据返回值-1,0,1来对$arr升降序排序

重点是usort使用了什么排序算法呢?文档中有个例子提出这一疑问

$priorities = array(5, 8, 3, 7, 3);

usort($priorities, function($a, $b)
{
    if ($a == $b)
    {
        echo "a ($a) is same priority as b ($b), keeping the same\n";
        return 0;
    }
    else if ($a > $b)
    {
        echo "a ($a) is higher priority than b ($b), moving b down array\n";
        return -1;
    }
    else {
        echo "b ($b) is higher priority than a ($a), moving b up array\n";
        return 1;
    }
});

echo "Sorted priorities:\n";
var_dump($priorities);
?>

Output:

b (8) is higher priority than a (3), moving b up array
b (5) is higher priority than a (3), moving b up array
b (7) is higher priority than a (3), moving b up array
a (3) is same priority as b (3), keeping the same
a (8) is higher priority than b (3), moving b down array
b (8) is higher priority than a (7), moving b up array
b (8) is higher priority than a (5), moving b up array
b (8) is higher priority than a (3), moving b up array
a (5) is higher priority than b (3), moving b down array
a (7) is higher priority than b (5), moving b down array

Sorted priorities:
array(5) {
  [0]=> int(8)
  [1]=> int(7)
  [2]=> int(5)
  [3]=> int(3)
  [4]=> int(3)
}

好像是快速排序的方式。

好了该抛的"砖"也已经抛了,现在该把我们的"玉"引出来啦!

排序算法

先贴个参考链接!

以后补上心得!

一篇文章标题有时候会有空格存入数据库,在搜索的时候需要对空格进行过滤,
使用 mysqlTRIM()REPLACE()函数对字符串处理。

SELECT title FROM article WHERE TRIM(REPLACE(`title`,' ','')) = ?

首尾去空格可以在后端代码中存储过程实现.

多字段搜索 CONCAT

CONCAT(str1,str2,...)

返回由全体参数合并在一起而得到的字符串,只要有一个参数为NULL那就返回NULL

crontab命令小记

使用crontab命令时,最好填写绝对路径,命令和文件都最好写绝对路径.
否则很容易出现command not foundfile not found

man crontab

让我们来使用男人这个命令查看下crontab.呀!都是英文!不喜!

Options

每个用户拥有自己的crontab, 配置文件在/var下面.

  • -e 设置计时器
  • -l 列出当前计时器的设置
  • -r 删除计时器设置
  • -i 交互模式,删除计时器设置时要询问

* 表示任意时间, - 表示取值范围

* * * * * echo 'crontab test' >> /home/test/test.txt
* * * * * /bin/sh /home/test/test.sh
  • 第一列分钟, 每分钟用*或者*/1表示
  • 第二列小时, 1~23, 6则表示6小时,0表示0点
  • 第三列日期, 1~31, 同上
  • 第四列月份, 1~12, 同上
  • 第五列星期, 0~6, 0代表星期天

### 举些茄子 #

30 21 * * * /usr/local/etc/rc.d/lighttpd restart
//表示每晚的21:30重启lighttpd.

45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
//表示每月1、10、22日的4:45重启lighttpd.

0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
//每天18 : 00至23 : 00之间每隔30分钟重启lighttpd.

0 * * * * /usr/local/etc/rc.d/lighttpd restart
//每一小时重启lighttpd

*/5 * * * *    #每五分钟执行
0 * * * *      #每小时执行
0 0 * * *      #每天执行
0 0 * * 0      #每周日执行

5 4 * * 6 /var/www/test.sh    #每周六凌晨4:05执行
0 4 * * 6 /var/www/test.sh    #每周六凌晨4:00执行
31 10-23/2 * * *   /var/www/test.sh    #在每天的10:31开始,每隔2小时重复一次

echarts自定义图形颜色

使用echarts图表自定义图表颜色(图形颜色),依据文档中找到series这个配置项中有一个属性itemStyle.链接

series: [
                {
                    name: '订单数',
                    type: 'bar',
                    //自定义图形颜色
                    itemStyle:{
                        normal:{
                            color:'#4ad2ff'
                        }
                    },
                    data: [
                        {{ $orders_4 }},
                        {{ $orders_3 }},
                        {{ $orders_2 }},
                        {{ $last_orders }},
                        {{ $orders_now }},
                    ]
                }
            ]

Laravel前端模板中渲染X轴注意不能直接赋值,需要加双引号"".

  xAxis: {
            data: [
                "{{ $month_4 }}",
                "{{ $month_3 }}",
                "{{ $month_2 }}",
                "{{ $month_1 }}",
                "{{ $current_month }}",
            ]
        },