Skip to content

Instantly share code, notes, and snippets.

View jbsouvestre's full-sized avatar

Jean-Baptiste Souvestre jbsouvestre

  • Checkout.com
  • Paris
View GitHub Profile
@jbsouvestre
jbsouvestre / timeout-sort.ts
Created November 29, 2018 15:08
timeoutSort
function timeoutSort(list: number[]): Promise<number[]> {
const sortedList = [];
const timers: Promise<any>[] = [];
for (let t of list) {
const timerPromise = new Promise((resolve) => {
setTimeout(() => {
sortedList.push(t);
resolve(null);
}, t);
})
@jbsouvestre
jbsouvestre / html_test.html
Created December 15, 2016 17:00 — forked from rwestergren/html_test.html
HTML Email Filter Test
<a onafterprint="console.log(244599)" onbeforeprint="console.log(309354)" onbeforeunload="console.log(879813)" onerror="console.log(949564)" onhashchange="console.log(575242)" onload="console.log(301053)" onmessage="console.log(976974)" onoffline="console.log(796090)" ononline="console.log(432638)" onpagehide="console.log(504345)" onpageshow="console.log(696619)" onpopstate="console.log(398418)" onresize="console.log(943097)" onstorage="console.log(882233)" onunload="console.log(929443)" onblur="console.log(932104)" onchange="console.log(102339)" oncontextmenu="console.log(761265)" onfocus="console.log(188946)" oninput="console.log(143653)" oninvalid="console.log(304208)" onreset="console.log(318472)" onsearch="console.log(778420)" onselect="console.log(942035)" onsubmit="console.log(603589)" onkeydown="console.log(650647)" onkeypress="console.log(579383)" onkeyup="console.log(821763)" onclick="console.log(284098)" ondblclick="console.log(477370)" ondrag="console.log(439095)" ondragend="console.log(546684)" o
class ScriptTagNode(template.Node):
def __init__(self, src, bust):
self.src = src
self.bust = bust
def render(self, context):
return "<script src={}{} async></script>".format(self.src, self.bust)
@jbsouvestre
jbsouvestre / pascal-triangle.js
Created November 16, 2015 14:55
Pascal Triangle
function getNextLine(previousLine){
let line = [];
for(let i = 0; i < previousLine.length + 1; i++){
let prevValue = previousLine[i-1],
value = previousLine[i];
line.push(prevValue + value || 1);
}
}
function triangle(n){
@jbsouvestre
jbsouvestre / re.js
Last active August 29, 2015 14:22
Args parser
// the magic
var re = new RegExp(/([^\s"']+)|"([^"]*)"|'([^']*)'/);
/**
* parse a command line argument and returns sit as a splitted array
* @param {String} input
**/
function parseArgs(input){
var args = input.split(re);
var parsed = [];
@jbsouvestre
jbsouvestre / app.js
Created March 27, 2015 22:26
require.config
define('bitsnut', ["backbone", "marionette"], function(Backbone, Marionette){
"use strict";
console.log("bitsnut!");
var App = new Backbone.Marionette.Application();
App.addInitializer(function(){
console.log("hello world!");
Backbone.history.start();
@jbsouvestre
jbsouvestre / ouput.md
Last active August 29, 2015 14:17
Sweet JS macro for arguments object optimization

With Macro

[deoptimize context: 147d32f14679]
[optimizing: test / 147d32fc5e69 - took 0.093, 0.115, 0.000 ms]
Function is optimized

With [].slice.call(arguments)

[deoptimize context: 241c2cf14679]
[disabled optimization for test, reason: bad value context for arguments value]
Function is not optimized
@jbsouvestre
jbsouvestre / relations.js
Created March 14, 2015 02:11
Many-to-Many Relation with Backbone Relational
require([
'backbone',
'relational'
], function(){
var store = {};
function baseParse(response){
console.log('PARSING :: ', response);
return response.results;
@jbsouvestre
jbsouvestre / hj.js
Last active November 2, 2018 10:39
console hijack
'use strict';
var Hijax = (function() {
var previousConsole = window.console;
function Hijax() {
this.setup();
}
Hijax.prototype.setup = function() {
@jbsouvestre
jbsouvestre / tokm.js
Created February 19, 2015 19:53
Miles to km
function tokm(str){
var re = /(\d+)([\.,]{1}\d+)?(\s)?(miles)/gi
function converted(token, miles, rest, space, unit){
var magic = 0.62137;
if(rest){
rest = rest.replace(',','.');
miles = +(miles+rest)