作为OOP,我已经解决了这个Ruby挑战,我不确定如何解决它,你们能帮助我将其拆分为小部分/任务吗?:
“编写一个红宝石脚本,
接收日志作为参数(提供了webserver.log)
e.g.: ./parser.rb webserver.log
返回以下内容:
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
...(还有很多)...
非常感谢您的帮助!!! :)
答案 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}
我会将完整的代码发布在这里,但是我不愿意为您做功课!