• ...

  • 第十期_SQL_20190704 at July 04, 2019

    wangjianqingdeMacBook-Air:~ wangjianqing$ mysql -h docker.testing-studio.com -P 3306 -u hogwarts -phogwarts -D employees -e "select AVG(salary) from (select * from salaries order by salary desc limit 100) as NewTable;"
    mysql: [Warning] Using a password on the command line interface can be insecure.
    +-------------+
    | AVG(salary) |
    +-------------+
    | 148999.9600 |
    +-------------+

  • 走心了

  • 第十期 bash 学习笔记 at June 24, 2019

    什么时候出三剑客的笔记啊 👺

  • 练习1:
    1、提取 https://testing-studio.com/ 中的所有连接
    curl https://testing-studio.com | grep -oE "http[s]://[^ '\"]"
    正则解释:-o匹配出符合条件的内容 -E使用扩展 [s] 中括号表示范围 表示匹配http或者https [^ '\"] 表示以空格 单引号或双引号结尾的(直到匹配到这三个中的字符 即结束)
    2、去掉链接中的数字,给出一个所有的不带数字的连接
    curl https://testing-studio.com | grep -oE "http[s]://[^ '\"]
    “ | sed -e's/[0-9]//g' -e's/%.%.//g'
    ‘s/[0-9]//g’ 表示把0-9数字用空替换

    练习2:
    1、从shell服务器上的/tmp/nginx.log中找出所有404 500的报错数据,并去除其中的url
    ①找出所有404 500的报错数据
    awk '$9~/404/ || $9~/500/' /tmp/nginx.log |less
    匹配log文件中第九列为404 或500的行
    less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻,
    只能往后面看,但若使用了 less 时,就可以使用 [pageup] [pagedown] 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!除此之外,在 less 里头可以拥有更多的搜索功能,
    不止可以向下搜,也可以向上搜。
    更多:https://www.cnblogs.com/peida/archive/2012/11/05/2754477.html
    ②去除其中的url
    awk '$9~/404/ || $9~/500/' /tmp/nginx.log | sed 's/"GET.*HTTP\/[0-9].[0-9]"//g'

    练习3:
    1、找出访问量最高的ip
    awk '{print $1}' /tmp/nginx.log |sort |uniq -c | sort -n |tail -10
    筛选出log日志中的第一列$1 ip

    sort 它将文件进行排序,并将排序结果标准输出
    sort(选项)(参数)
    -n:依照数值的大小排序;
    -r:以相反的顺序来排序;
    -d:排序时,处理英文字母、数字及空格字符外,忽略其他的字符;
    uniq命令用于报告或忽略文件中的重复行,一般与sort命令结合使用。
    uniq(选项)(参数)
    -c或——count:在每列旁边显示该行重复出现的次数;
    -d或--repeated:仅显示重复出现的行列;

    练习4:
    1、找出访问量最高的页面,/topics/1234 topics/4567 视为一个页面
    awk '{print $7}' /tmp/nginx.log |sort | sed 's/\/[0-9].*//g' |uniq -c |sort -n | tail -1

    练习5:
    提取 https://testing-studio.com/ 中的所有链接
    找出不能被访问的连接(已完成)
    封装为函数,传入一个网站,自动检查这个网站上的链接(已完成)
    #设计一个函数,传入一个字符串或文件 根据判断其中的链接返回code码,找出其中的错误链接
    #!/bin/bash
    #author:Frank
    findFailedUrl(){
    urls=$(curl $1 | grep -o -E "http[s]://[^ ?'\"]" | uniq -c);
    for url in $urls;do
    code=$(curl -I -m 10 -o /dev/null -s -w %{http_code} $url);
    if ((${code}>=400));then echo "${url}访问失败!";fi
    done
    }
    findFailedUrl https://testing-studio.com
    #$(curl -I -m 10 -o /dev/null -s -w %{http_code} $url)
    #-I 仅测试HTTP头
    #-m 10 最多查询10s
    #-o /dev/null 屏蔽原有输出信息
    #-s silent 模式,不输出任何东西
    #-w %{http_code} 控制额外输出

  • #第一题:
    seeds=$(while read line; do echo ${line// /..} ; done < babys );
    count=0;
    index=0;
    while ((count!=1)); do
    ((index+=1));
    luckys=$seeds
    seeds=$( for line in $seeds; do ((RANDOM%2==1)) && echo $line ; done);
    [ -z "$seeds" ]&&seeds=$luckys&&continue
    count=$(echo "$seeds" | wc -l );
    echo 第 $index 轮:$seeds;
    done

    #第二三题:
    seeds=$(while read line; do echo ${line// /..} ; done < babys );
    array=();
    index=0;
    for line in $seeds;do
    ((index+=1));
    array[$index]=$line;
    done
    for ((i=1;i<9;i++));do
    del_index=RANDOM%${#array[*]};
    echo "第 $i 位中奖的人是:"${array[$del_index]}
    unset array[$del_index];
    done

    疑问: 第三题我的执行结果里怎么会有空值的情况 ? unset array[del_index] 也没有生效....

  • STF 集成 iOS 之 开源了 at June 20, 2019

    作者帅的一P 👍

  • 可以作为检测开发自测的一种手段了😷

  • Author only
  • 😾 滴。。。迟到打卡!