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 / 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
*/
@nicjansma
nicjansma / boomerang-duplicate-custom-timers-to-beacon.js
Last active April 20, 2022 13:20
Boomerang plugin that duplicates any mPulse Custom Timers that are logged in the beacon's t_other parameter into distinct beacon parameters
/**
* The `DuplicateTimersToBeacon` Boomerang plugin duplicates any mPulse Custom Timers
* that are logged in the beacon's `t_other` parameter into distinct beacon parameters.
*
* e.g:
*
* t_other=boomerang|17,boomr_fb|2516,boomr_ld|2351,boomr_lat|165,custom5|2112,custom0|27
*
* Will add two more beacon parameters:
*