如何应对这一挑战

时间:2019-06-27 22:03:50

标签: ruby parsing logging

作为OOP,我已经解决了这个Ruby挑战,我不确定如何解决它,你们能帮助我将其拆分为小部分/任务吗?:

“编写一个红宝石脚本,

  1. 接收日志作为参数(提供了webserver.log)

    e.g.: ./parser.rb webserver.log
    
  2. 返回以下内容:

    a。网页浏览量最多的网页列表,从大多数网页浏览量到较少的网页浏览量。

    e.g.:
    
    /home 90 visits
    /index 80 visits  etc...
    

    b。具有最大唯一浏览量的网页列表也已订购。

    例如:

    /about/2 8 unique views
    /index 5 unique views  etc..."
    

请注意, webserver.log 提供的文件包含以下数据:

/ help_page / 1 126.318.035.038

/联系184.123.665.067

/ home 184.123.665.067

/大约/ 2 444.701.448.104

/ help_page / 1 929.398.951.889

/索引444.701.448.104

/ help_page / 1 722.247.931.582

/大约061.945.150.735

/ help_page / 1 646.865.545.408

/ home 235.313.352.950

/联系184.123.665.067

/ help_page / 1 543.910.244.929

/ home 316.433.849.805

/大约/ 2 444.701.448.104

/联系543.910.244.929

/大约126.318.035.038

/大约/ 2 836.973.694.403

/索引316.433.849.805

/索引802.683.925.780

/ help_page / 1 929.398.951.889

/联系555.576.836.194

...(还有很多)...

非常感谢您的帮助!!! :)

2 个答案:

答案 0 :(得分:5)

不要期望代码,这取决于您。 读取文件,处理每一行并拆分页面,然后寻址部分,将其存储在数组数组中。 然后使用该数组通过计算访问页面的次数来生成两个列表。您可以通过创建带有计数器(值)的页面(键)的哈希并通过仅过滤一次访问的哈希来存储结果。

成功完成任务。

答案 1 :(得分:-1)

我将创建一个名为“ WebserverLog”的类。

在此类的initialize方法中,使用`File.readlines('webserver.log')读取文件,并将输出分配给变量(用attr_accessor声明,它将是webserver.log行的数组) )。

也在attr_accessor中,声明一个名为“ visit_count”的变量。在初始化程序中将其初始化为Hash.new(0)。

然后创建一个称为“ count”的实例方法,在该方法中,您将在各行上进行迭代,将它们拆分为空格字符以获取页面,并增加与该页面相对应的属性的值。

然后您将获得一个“ visit_count”,例如:

    {"/help_page/1"=>6, "/contact"=>4, "/home"=>3, "/about/2"=>3, "/index"=>3, "/about"=>2}

我会将完整的代码发布在这里,但是我不愿意为您做功课!