Created
June 25, 2017 18:34
-
-
Save jasongonzales23/eea09bf3a7fb33a5dd4f8063b01af696 to your computer and use it in GitHub Desktop.
JS Bin [log sort algo] // source https://jsbin.com/devepog
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html> | |
<head> | |
<meta name="description" content="[log sort algo]"> | |
<meta charset="utf-8"> | |
<meta name="viewport" content="width=device-width"> | |
<title>JS Bin</title> | |
</head> | |
<body> | |
<script id="jsbin-javascript"> | |
'use strict'; | |
var log = ['\[01/Aug/1995:00:54:59 -0400\] "GET /images/opf-logo.gif HTTP/1.0" 200 32511', '\[01/Aug/1995:00:55:04 -0400\] "GET /images/ksclogosmall.gif HTTP/1.0" 200 3635', '\[01/Aug/1995:00:55:06 -0400\] "GET /images/ksclogosmall.gif HTTP/1.0" 403 298', '\[01/Aug/1995:00:55:09 -0400\] "GET /images/ksclogosmall.gif HTTP/1.0" 200 3635', '\[01/Aug/1995:00:55:18 -0400\] "GET /images/opf-logo.gif HTTP/1.0" 200 32511', '\[01/Aug/1995:00:56:52 -0400\] "GET /images/ksclogosmall.gif HTTP/1.0" 200 3635', '\[01/Aug/1995:00:56:52 -0400\] "GET /images/foo.gif HTTP/1.0" 200 999', '\[01/Aug/1995:00:56:52 -0400\] "GET /images/foo.gif HTTP/1.0" 200 111', '\[01/Aug/1995:00:56:52 -0400\] "GET /images/bar.gif HTTP/1.0" 200 777']; | |
var successRgx = new RegExp(/"([A-Z]+)[^"]*" (2\d\d)/); | |
var objByteRgx = new RegExp(/"[A-Z]+[^"]* ([\/+].*) .*" \d+ (\d+)/); | |
var getAllDemLogz = function getAllDemLogz(log) { | |
var logMap = {}; | |
var logArr = []; | |
for (var i = 0; i < log.length; i++) { | |
if (successRgx.test(log[i])) { | |
var logGrp = objByteRgx.exec(log[i]); | |
var requestedObj = logGrp[1]; | |
var bytes = parseInt(logGrp[2]); | |
if (logMap[requestedObj]) { | |
logArr[logMap[requestedObj].index].count += 1; | |
logArr[logMap[requestedObj].index].bytes += bytes; | |
} else { | |
logMap[requestedObj] = { | |
index: logArr.length | |
}; | |
logArr.push({ | |
requestedObj: requestedObj, | |
count: 1, | |
bytes: bytes | |
}); | |
} | |
} | |
} | |
logArr.sort(function (a, b) { | |
return b.count - a.count; | |
}); | |
var top10 = logArr.slice(0, 10); | |
return top10; | |
}; | |
console.log(getAllDemLogz(log)); | |
</script> | |
<script id="jsbin-source-javascript" type="text/javascript">var log = [ | |
'\[01/Aug/1995:00:54:59 -0400\] "GET /images/opf-logo.gif HTTP/1.0" 200 32511', | |
'\[01/Aug/1995:00:55:04 -0400\] "GET /images/ksclogosmall.gif HTTP/1.0" 200 3635', | |
'\[01/Aug/1995:00:55:06 -0400\] "GET /images/ksclogosmall.gif HTTP/1.0" 403 298', | |
'\[01/Aug/1995:00:55:09 -0400\] "GET /images/ksclogosmall.gif HTTP/1.0" 200 3635', | |
'\[01/Aug/1995:00:55:18 -0400\] "GET /images/opf-logo.gif HTTP/1.0" 200 32511', | |
'\[01/Aug/1995:00:56:52 -0400\] "GET /images/ksclogosmall.gif HTTP/1.0" 200 3635', | |
'\[01/Aug/1995:00:56:52 -0400\] "GET /images/foo.gif HTTP/1.0" 200 999', | |
'\[01/Aug/1995:00:56:52 -0400\] "GET /images/foo.gif HTTP/1.0" 200 111', | |
'\[01/Aug/1995:00:56:52 -0400\] "GET /images/bar.gif HTTP/1.0" 200 777' | |
] | |
var successRgx = new RegExp(/"([A-Z]+)[^"]*" (2\d\d)/) | |
var objByteRgx = new RegExp(/"[A-Z]+[^"]* ([\/+].*) .*" \d+ (\d+)/) | |
var getAllDemLogz = (log) => { | |
var logMap = {} | |
var logArr = [] | |
for (var i = 0; i < log.length; i++) { | |
if (successRgx.test(log[i])) { | |
var logGrp = objByteRgx.exec(log[i]) | |
var requestedObj = logGrp[1] | |
var bytes = parseInt(logGrp[2]) | |
if (logMap[requestedObj]) { | |
logArr[logMap[requestedObj].index].count += 1 | |
logArr[logMap[requestedObj].index].bytes += bytes | |
} else { | |
logMap[requestedObj] = { | |
index: logArr.length | |
} | |
logArr.push({ | |
requestedObj: requestedObj, | |
count: 1, | |
bytes: bytes | |
}) | |
} | |
} | |
} | |
logArr.sort((a,b) => | |
b.count - a.count | |
) | |
var top10 = logArr.slice(0,10) | |
return top10 | |
} | |
console.log(getAllDemLogz(log))</script></body> | |
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
'use strict'; | |
var log = ['\[01/Aug/1995:00:54:59 -0400\] "GET /images/opf-logo.gif HTTP/1.0" 200 32511', '\[01/Aug/1995:00:55:04 -0400\] "GET /images/ksclogosmall.gif HTTP/1.0" 200 3635', '\[01/Aug/1995:00:55:06 -0400\] "GET /images/ksclogosmall.gif HTTP/1.0" 403 298', '\[01/Aug/1995:00:55:09 -0400\] "GET /images/ksclogosmall.gif HTTP/1.0" 200 3635', '\[01/Aug/1995:00:55:18 -0400\] "GET /images/opf-logo.gif HTTP/1.0" 200 32511', '\[01/Aug/1995:00:56:52 -0400\] "GET /images/ksclogosmall.gif HTTP/1.0" 200 3635', '\[01/Aug/1995:00:56:52 -0400\] "GET /images/foo.gif HTTP/1.0" 200 999', '\[01/Aug/1995:00:56:52 -0400\] "GET /images/foo.gif HTTP/1.0" 200 111', '\[01/Aug/1995:00:56:52 -0400\] "GET /images/bar.gif HTTP/1.0" 200 777']; | |
var successRgx = new RegExp(/"([A-Z]+)[^"]*" (2\d\d)/); | |
var objByteRgx = new RegExp(/"[A-Z]+[^"]* ([\/+].*) .*" \d+ (\d+)/); | |
var getAllDemLogz = function getAllDemLogz(log) { | |
var logMap = {}; | |
var logArr = []; | |
for (var i = 0; i < log.length; i++) { | |
if (successRgx.test(log[i])) { | |
var logGrp = objByteRgx.exec(log[i]); | |
var requestedObj = logGrp[1]; | |
var bytes = parseInt(logGrp[2]); | |
if (logMap[requestedObj]) { | |
logArr[logMap[requestedObj].index].count += 1; | |
logArr[logMap[requestedObj].index].bytes += bytes; | |
} else { | |
logMap[requestedObj] = { | |
index: logArr.length | |
}; | |
logArr.push({ | |
requestedObj: requestedObj, | |
count: 1, | |
bytes: bytes | |
}); | |
} | |
} | |
} | |
logArr.sort(function (a, b) { | |
return b.count - a.count; | |
}); | |
var top10 = logArr.slice(0, 10); | |
return top10; | |
}; | |
console.log(getAllDemLogz(log)); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment