Skip to content

Instantly share code, notes, and snippets.

View mr21's full-sized avatar
💭
"What I produce is 99.1% pure" - Walter White

Thomas Tortorini mr21

💭
"What I produce is 99.1% pure" - Walter White
View GitHub Profile
@mr21
mr21 / checkNaN.js
Created August 7, 2018 00:53
Math.min/max/round/... check for NaN
( function() {
const _Math = {
min: Math.min,
max: Math.max,
abs: Math.abs,
ceil: Math.ceil,
floor: Math.floor,
round: Math.round,
};
@mr21
mr21 / MapTypeCheck.js
Created July 29, 2018 20:55
Avoid (by alerting) stringified number used as key into Map
( function() {
const
protoHas = Map.prototype.has,
protoGet = Map.prototype.get,
protoSet = Map.prototype.set,
protoDelete = Map.prototype.delete;
Map.prototype.has = function( id ) {
if ( typeof id === "string" && !isNaN( +id ) ) {
console.warn( `Map.has( "${ id }" )` );
@mr21
mr21 / random.js
Created July 5, 2018 15:10
A better random if needed
function Random() {
return crypto.getRandomValues( Random.arr )[ 0 ] / Random.limit;
}
Random.limit = 2 ** 32;
Random.arr = new Uint32Array( 1 );
@mr21
mr21 / calc_schwarzschild_radius.js
Created May 14, 2018 12:25
Function to calcul the Schwarzschild radius with a mass
const lightSpeed = 299792458; // meter (per second)
const solarMass = 1.98855 * Math.pow( 10, 30 ); // kilograms
const gravity = 6.67408 * Math.pow( 10, -11 );
function calcSchwarzschildRadius( nbSolarMass ) {
return ( 2 * gravity * nbSolarMass * solarMass ) / ( lightSpeed * lightSpeed );
}
{
"Mr. Robot": {
"originalNetwork": "USA Network",
"seasons": [
{ "nb": 1, "nbEpisodes": 10, "firstAired": "June 24, 2015", "lastAired": "September 2, 2015" },
{ "nb": 2, "nbEpisodes": 12, "firstAired": "July 13, 2016", "lastAired": "September 21, 2016" },
{ "nb": 3, "nbEpisodes": 10, "firstAired": "October 11, 2017", "lastAired": "December 13, 2017" },
]
},
"Breaking Bad": {
"use strict";
function diffObjects( a, b ) {
var ak, diff = {};
Object.entries( b ).forEach( ( [ k, val ] ) => {
ak = a[ k ];
if ( ak !== val ) {
if ( !val || typeof val !== "object" ) {
diff[ k ] = val;
@mr21
mr21 / shrinkArray.js
Last active March 23, 2017 00:12
A function to shrink an Array of numbers, example: shrinkArray( [ 10, 20, 200, 250 ], 2 ) -> [ 15, 225 ]
function shrinkArray( arr, newlen ) {
var avg,
avglenj,
i = 0,
j = 0,
len = arr.length,
avglen = ~~( len / newlen ),
newarr = [];
for ( ; i < newlen; ++i ) {
@mr21
mr21 / analyserNode.html
Last active January 20, 2017 19:49
http://crbug.com/683188; http://thomastortorini.free.fr/bug-analysernode; A different behaviour between Chrome and Firefox :/
<!DOCTYPE html>
<html>
<head>
<title>bug-analyserNode</title>
<meta charset="UTF-8"/>
</head>
<body>
<canvas width="512" height="128" id="gsuiOscilloscope"></canvas>
@mr21
mr21 / regexp.js
Last active April 14, 2017 03:08
JavaScript: some regexp
/[^/]*$/.exec( "https://asd.x/file.wav" )[ 0 ]; // "file.wav"
/[^/]*$/.exec( "file.wav" )[ 0 ]; // "file.wav"
/[^/]*$/.exec( "qwe.rty/" )[ 0 ]; // ""
/(?:([^/]*)\.([a-zA-Z\d]*))?$/.exec( "" ); // [ "", undefined, undefined ]
/(?:([^/]*)\.([a-zA-Z\d]*))?$/.exec( ".wav" ); // [ ".wav", "", "wav" ]
/(?:([^/]*)\.([a-zA-Z\d]*))?$/.exec( "://a.b/q/a.b.mp3" ); // [ "a.b.mp3", "a.b", "mp3" ]
@mr21
mr21 / diacriticsReplace.js
Last active June 1, 2021 08:18
JavaScript function to remove every special char on strings (to sort them, search them, etc.).
"use strict";
function diacriticsReplace( str ) {
return str.replace( /[^A-Za-z0-9\s]+/g, function( a ) {
return diacriticsMap[ a ] || a;
} );
}
var diacriticsMap = {
"\u00C0": "A", // À