I hereby claim:
- I am nicjansma on github.
- I am nicj (https://keybase.io/nicj) on keybase.
- I have a public key ASDmvrFSwHxuJExmJfUoAyj8hLpx7-hKaa83bHOg-hu5oAo
To claim this, I am signing this object:
if (!Date.now) { | |
Date.now = function() { | |
return new Date().valueOf(); | |
} | |
} |
@echo off | |
setlocal enabledelayedexpansion | |
REM | |
REM PngOutBatch | |
REM | |
REM Nic Jansma - nic@nicj.net | |
REM | |
REM Runs a PNG through PngOut multiple times at different block sizes. Shows the | |
REM file-size savings during and at the end. |
/** | |
* Boomerang XHR whitelist | |
*/ | |
function addWhitelistFilter() { | |
if (window.BOOMR && | |
window.BOOMR.version && | |
window.BOOMR.plugins && | |
window.BOOMR.plugins.AutoXHR && | |
typeof BOOMR.plugins.AutoXHR.addExcludeFilter === "function") { |
I hereby claim:
To claim this, I am signing this object:
// | |
// Naive ResourceTiming crawl of all IFRAMEs. | |
// | |
// Based on https://github.com/SOASTA/boomerang/blob/master/plugins/restiming.js | |
// which you should use to deal with all of the caveats (e.g. startTime adjusting) | |
// | |
function isFrameAccessible(frame) { | |
var dummy; |
if (Function.prototype.bind && typeof console == "object" && typeof console.log == "object") { | |
var logFns = ["log", "info", "warn", "error", "assert", "dir", "clear", "profile", "profileEnd"]; | |
$.each(logFns, function (i, method) { | |
console[method] = Function.prototype.call.bind(console[method], console); | |
}); | |
} |
// | |
// Placed in any cross-origin IFRAMEs | |
// | |
if (window !== window.top) { | |
if (typeof window.PerformanceObserver !== "function") { | |
return; | |
} | |
// Listen for all ResourceTimings, repeating them to the parent window | |
var observer = new PerformanceObserver(function(entries) { |
// | |
// Helper Functions | |
// | |
// Gets a parameter from the URL | |
static function extractGetParameter(name, query) { | |
return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(query) || [,""])[1].replace(/\+/g, '%20')) || null; | |
} | |
// Gets a POST or GET parameter |
#!/bin/bash | |
# | |
# Config | |
# | |
# if more than the threshold, the IP will be banned | |
THRESHOLD=100 | |
# search this many recent lines of the access log |
/** | |
* Repeats all beacons to a second URL. | |
* | |
* To configure, update BEACON_URL. | |
* | |
* This code repeats some code from Boomerang. If you only need to send | |
* XHR beacons, or only image beacons, or not sendBeacon(), it could be trimmed down. | |
* | |
* @class BOOMR.plugins.BeaconRepeater | |
*/ |