Skip to content

Instantly share code, notes, and snippets.

@inian
inian / gist:4305b04f991529c67b5a
Created April 15, 2015 06:03
Set up a virtual display
export DISPLAY=:10
killall -9 Xvfb
Xvfb :10 -screen 0 1024x768x24 -extension RANDR > /dev/null 2>&1 &
@inian
inian / cookieinject.py
Created June 9, 2015 03:41
Mitmproxy cookie Inject Script
cookieFile = ""
def start(context, argv):
global cookieFile
cookieFile = argv[1]
def request(context, flow):
f = open(cookieFile)
cookie =f.read().strip()
f.close()
if cookie != "":
@inian
inian / firstpaint.js
Created July 20, 2015 10:03
First Paint
timing = !!(typeof window.performance !== "undefined" && typeof window.performance.timing !== "undefined");
if (timing && timing.msFirstPaint && window.t_pagestart) {
t_firstpaint = timing.msFirstPaint - window.t_pagestart;
} else if (window.chrome && typeof window.chrome.loadTimes === 'function') {
t_firstpaint = window.chrome.loadTimes().firstPaintTime - window.chrome.loadTimes().startLoadTime;
}
@inian
inian / download.sh
Last active October 8, 2018 09:56
Download webpage using wget
wget -E -H -k -K -p -t 2 -T 30 --user-agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36" -e robots=off http://example.com
@inian
inian / swapon.sh
Created January 7, 2016 06:08
enable swap on ubuntu 14.04
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
@inian
inian / brotli-sw.js
Last active February 27, 2024 00:40
Enabling Brotli on CDNs which don't support it yet
// MIT License
// Copyright (c) 2016 Dexecure
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
@inian
inian / unregister.js
Last active June 2, 2018 08:20
Unregister Dexecure Service Worker registrations
try {
navigator.serviceWorker.getRegistrations().then(function(registrations) {
registrations.forEach(function(registration) {
if (registration.active && registration.active.scriptURL.includes("dexecure")) {
console.log('removing registration', registration);
registration.unregister();
}
})
})
} catch (e) {
@inian
inian / http2-compatibility-api.js
Last active November 4, 2017 12:55
Creating a zero-dependency Node.js static file server
const http2 = require('http2');
const fs = require('fs');
const options = {
key: fs.readFileSync('./selfsigned.key'),
cert: fs.readFileSync('./selfsigned.crt'),
allowHTTP1: true
}
const server = http2.createSecureServer(options, (req, res) => {
@inian
inian / hapi.js
Last active August 30, 2019 04:15
Node Frameworks using http2
var fs = require('fs');
var Hapi = require('hapi');
var http2 = require('http2');
var options = {
key: fs.readFileSync('./selfsigned.key'),
cert: fs.readFileSync('./selfsigned.crt'),
};
var server = new Hapi.Server();
@inian
inian / network-aware-sw.js
Last active June 11, 2019 18:15
Network aware asset optimization
function modifyURL(url) {
// ect can be 'slow-2g', '2g', '3g', or '4g'.
const connectionType = navigator.connection.effectiveType;
if (connectionType === "slow-2g" || connectionType === "2g") {
return url + "?opt=aggressive";
} else if (connectionType === "4g") {
return url + "?opt=mild";
} else {
return url + "?opt=default";
}