Skip to content

Instantly share code, notes, and snippets.

View anubhavsrivastava's full-sized avatar

Anubhav Srivastava anubhavsrivastava

View GitHub Profile
function fixCurry(fn, totalArgs){
totalArgs = totalArgs ||fn.length
return function recursor(){
return arguments.length<fn.length?recursor.bind(this, ...arguments): fn.call(this, ...arguments);
}
}
var add = fixCurry((a,b,c)=>a+b+c);
console.log('Add')
for i in */; do zip -r "${i%/}.zip" "$i"; done
function add(x){
let sum = x;
return function resultFn(y){
sum +=y;
resultFn.result = sum;
return resultFn;
}
}
@anubhavsrivastava
anubhavsrivastava / Chrome
Created March 12, 2020 13:15
Disable web security to make CORS request
open -a Google\ Chrome\ Canary --args --disable-web-security
on its own does not work anymore. You need to use it with --user-data-dir:
open -a Google\ Chrome\ Canary --args --disable-web-security --user-data-dir=$HOME/profile-folder-name
http://stackoverflow.com/a/34680023/368691
@anubhavsrivastava
anubhavsrivastava / looseEquality.js
Created November 7, 2018 18:54
Can (a==1 && a==2 && a==3) ever evaluate to true?
const a = { value : 0 };
a.valueOf = function() {
return this.value += 1;
};
console.log(a==1 && a==2 && a==3); //true
@anubhavsrivastava
anubhavsrivastava / getterDescriptor.js
Last active February 6, 2020 04:12
Can (a===1 && a===2 && a===3) ever evaluate to true?
var value = 0; //window.value
Object.defineProperty(window, 'a', {
get: function() {
return this.value += 1;
}
});
console.log(a===1 && a===2 && a===3) //true
@anubhavsrivastava
anubhavsrivastava / generate_releasenotes
Created December 27, 2019 14:28
bash script to generate release notes from github repo
#!/usr/bin/env bash
set -e
usage() {
echo "$0 <repo> <tag> [<release name>]" >&2;
}
if [ "$1" = "-h" -o "$1" = "--help" ]; then
usage
@anubhavsrivastava
anubhavsrivastava / update_changelogs
Created December 27, 2019 14:27
Script to generate changelogs from Git Repo
#!/usr/bin/env bash
set -e
usage() {
echo "$0 <tag> <repo>" >&2;
}
if [ "$1" = "-h" -o "$1" = "--help" ]; then
usage
function add(){
let args = [].slice.apply(arguments);
function resultFn(){
args = args.concat([].slice.apply(arguments));
if(args.length>=3){
return args.slice(0,3).reduce(function(acc,next){ return acc+next},0)
}
return resultFn
function add(x){
let sum = x;
return function resultFn(y){
if(arguments.length){ //not relying on falsy value
sum += y;
return resultFn;
}
return sum;
}
}