Skip to content

Instantly share code, notes, and snippets.

View rjbultitude's full-sized avatar

Rich rjbultitude

View GitHub Profile
navigator.serviceWorker.getRegistrations()
.then(function(registrations) {
for(let registration of registrations) {
registration.unregister()
.then(function() {
return self.clients.matchAll();
})
.then(function(clients) {
clients.forEach(client => {
if (client.url && "navigate" in client) {
# Apache 2 rewrite rule for single page apps
RewriteCond %{REQUEST_URI} (?<!\.mpeg|\.html|\.mp4|.\json|\.css|\.xml|\.eot|\.gif|\.ico|\.jpeg|\.jpg|\.JPEG|\.JPG|\.js|\.gif|\.GIF|\.png|\.PNG|\.svg|\.swf|\.ttf|\.woff|\.woff2|\.jsonp|\.webp|\.svgz|\.ttc|\.mp3|\.m4a|\.f4a|\.f4v|\.webm|\.m4v|\.f4v|\.f4p|\.ogv|\.ogg|\.oga)$
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule . /index.html
@rjbultitude
rjbultitude / package.json
Created December 18, 2019 14:52
Lint staged config
"name": "xt-boilerplate",
"version": "1.0.0",
"private": true,
"description": "An unopinionated boilerplate for creating web applications",
"main": "src/index.js",
"lint-staged": {
"linters": {
"*.{ts,js,tsx,t.ds}": [
"prettier --write",
"eslint --fix",
@rjbultitude
rjbultitude / deploy.sh
Created November 19, 2019 12:22
Feature environments deploy script
#/bin/bash
npm run build
# get the current branch name and create a directory destination using it
dest_dir="project-dir/$(git rev-parse --abbrev-ref HEAD)"
# make the destination directory
mkdir -p $dest_dir
# copy the web build
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
function generateRandomNumbers(length) {
var numArray = [];
for (var i = 0; i < length; i++) {
numArray[i] = getRandomInt(1, 10000);
}
return numArray;
// Example use of $.globalEval
$.globalEval(data)
// Refactor for CSP
eval.call(null, data)
@rjbultitude
rjbultitude / worker-draw-loop.js
Created August 8, 2017 18:02
Web worker draw loop (for canvas animations)
// Main thread
var test = document.getElementById('test');
drawWorker = work(require('./draw-worker.js'));
drawWorker.addEventListener('message', function(e) {
if (e.data.msg === 'tick') {
sketchUpdateFn();
}
});
drawWorker.postMessage({draw: true, rate: appFrameRate});
drawWorker.onerror = function(e) {
@rjbultitude
rjbultitude / largest-neg-num-in-array.js
Created June 26, 2017 21:16
Largest negative number in array
/**
* returns the largest negative number in a given array
* @param {Array} arr [the array to act on]
* @return {Number} [the largest negative number]
*/
function getLargestNegNumInArr(arr) {
return arr.reduce(function(prevVal, curVal) {
if (curVal < prevVal) {
prevVal = curVal;
}
@rjbultitude
rjbultitude / largest-pos-num-in-array.js
Created June 26, 2017 21:15
Get the largest number in an array
/**
* returns the largest positive number in a given array
* @param {Array} arr [the array to act on]
* @return {Array} [the largest number]
*/
function getLargestPosNumInArr(arr) {
return arr.reduce(function(prevVal, curVal) {
if (curVal > prevVal) {
prevVal = curVal;
}
p5.SoundFile.prototype.setVolume = function (vol, rampTime, tFromNow, volFrom, volTo) {
if (typeof vol === 'number') {
var rampTime = rampTime || 0;
var tFromNow = tFromNow || 0;
var now = p5sound.audiocontext.currentTime;
var currentVol = this.output.gain.value;
this.output.gain.cancelScheduledValues(now + tFromNow);
// Attack
if (typeof volFrom === 'number' && volFrom >= 0) {
this.output.gain.linearRampToValueAtTime(volFrom, now + tFromNow);