Skip to content

Instantly share code, notes, and snippets.

View nicjansma's full-sized avatar

Nic Jansma nicjansma

View GitHub Profile
@nicjansma
nicjansma / ie8-date-now-support.js
Last active December 11, 2015 21:58
Adds Date.now() support for IE <= 8
if (!Date.now) {
Date.now = function() {
return new Date().valueOf();
}
}
@nicjansma
nicjansma / PngOutBatch.cmd
Created May 16, 2012 01:47
Runs a PNG through PngOut multiple times at different block sizes. Shows the file-size savings during and at the end. More details @ http://nicj.net/2012/05/15/pngoutbatch
@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.
@nicjansma
nicjansma / boomerang-xhr-whitelist.js
Last active September 5, 2017 20:36
Boomerang AutoXHR Whitelist (requires 1.420 or later)
/**
* Boomerang XHR whitelist
*/
function addWhitelistFilter() {
if (window.BOOMR &&
window.BOOMR.version &&
window.BOOMR.plugins &&
window.BOOMR.plugins.AutoXHR &&
typeof BOOMR.plugins.AutoXHR.addExcludeFilter === "function") {
@nicjansma
nicjansma / Keybase.md
Last active November 20, 2017 01:45
Keybase Proof

Keybase proof

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:

@nicjansma
nicjansma / resourcetiming-crawl.js
Last active July 23, 2018 15:27
Naive ResourceTiming crawl of all IFRAMEs
//
// 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;
@nicjansma
nicjansma / ie89-console-apply-support.js
Created January 29, 2013 17:42
Adds .apply() and .call() support to IE8/9's console object, which treates .log()/etc as Objects and not Functions. Requires jQuery for $.each().
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);
});
}
@nicjansma
nicjansma / resourcetiming-iframe.js
Last active May 30, 2020 21:23
ResourceTiming leak to parent frames
//
// 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) {
@nicjansma
nicjansma / fiddler-boomerang-helpers.js
Last active January 17, 2021 07:15
Fiddler FiddlerScript helpers for Boomerang
//
// 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
@nicjansma
nicjansma / check-apache-access-log-spammers.sh
Created January 25, 2012 04:19
Auto-ban website spammers via the Apache access_log
#!/bin/bash
#
# Config
#
# if more than the threshold, the IP will be banned
THRESHOLD=100
# search this many recent lines of the access log
@nicjansma
nicjansma / boomerang-beaconrepeater.js
Last active April 20, 2022 13:19
Boomerang plugin to repeat all beacons to a second URL.
/**
* 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
*/