Skip to content

Instantly share code, notes, and snippets.

View rajikaimal's full-sized avatar

Rajika Imal rajikaimal

View GitHub Profile
@rajikaimal
rajikaimal / index.js
Last active December 8, 2023 12:56
Entry point for github-followers
const httpFetcher = require('http-fetcher');
const ghURI = '/users/:username/followers';
module.exports = function(username) {
const URI = ghURI.replace(':username', username);
return httpFetcher('api.github.com', URI, { 'User-Agent': 'github-followers' }, 'https');
}
@rajikaimal
rajikaimal / abstract-factory-typescript.ts
Last active February 8, 2019 10:36
Abstract factory in TypeScript
interface PorscheModel {
engine: string;
tyreModel: string;
gears: number;
}
class PorscheCar implements PorscheModel {
engine: string;
tyreModel: string;
gears: number;
@rajikaimal
rajikaimal / abstract-factory-es6.js
Last active February 5, 2019 16:55
Abstract factory in ES6
class PorscheCar {
constructor(params) {
this.engine = params.engine;
this.tyreModel = params.tyreModel;
this.gears = params.gears;
}
}
class PorscheCarFactory {
createCar(params) {
@rajikaimal
rajikaimal / abstract-factory-es5.js
Last active February 5, 2019 14:07
Abstract factory in JavaScript
function porscheCar(params) {
this.engine = params.engine;
this.tyreModel = params.tyreModel;
this.gears = params.gears;
}
function porscheCarFactory() {
this.createCar = function(params) {
return new porscheCar(params);
}
@rajikaimal
rajikaimal / nextick-behaviour.js
Last active December 24, 2018 18:58
process.nextTick behaviour
function iter(num) {
if(num > 5) return;
setImmediate(() => {
console.log('SetImmediate');
});
process.nextTick(() => {
console.log(`NextTick, iteration ${num}`);
iter(num + 1);
@rajikaimal
rajikaimal / timeout-immediate.js
Last active December 24, 2018 18:58
setTimeout vs seteImmediate
setTimeout(() => {
console.log('SetTimeout callback');
}, 0);
setImmediate(() => {
console.log('SetImmediate callback');
});
// Output:
// SetImmediate callback
@rajikaimal
rajikaimal / io-setTimeout-setImmediate.js
Last active December 24, 2018 18:57
setTimeout vs setImmediate within an I/O cycle
const fs = require("fs");
fs.readFile(__filename, () => {
setTimeout(() => {
console.log('SetTimeout callback');
}, 0);
setImmediate(() => {
console.log('SetImmediate callback');
});
});
@rajikaimal
rajikaimal / nextick-setimmediate.js
Last active December 24, 2018 18:56
process.nexTick vs setImmediate
const fs = require('fs');
fs.readFile(__filename, () => {
setImmediate(() => {
console.log('SetImmediate callback');
});
process.nextTick(() => { console.log('NextTick callback') })
});
@rajikaimal
rajikaimal / set-tick.js
Last active December 24, 2018 18:55
setImmediate vs setTimeout vs process.nextTick
const fs = require('fs');
fs.readFile(__filename, () => {
setTimeout(() => {
console.log('SetTimeout callback');
}, 0);
setImmediate(() => {
console.log('SetImmediate callback');
});
@rajikaimal
rajikaimal / System Design.md
Created August 29, 2017 14:18 — forked from vasanthk/System Design.md
System Design Cheatsheet

System Design Cheatsheet

Picking the right architecture = Picking the right battles + Managing trade-offs

Basic Steps

  1. Clarify and agree on the scope of the system
  • User cases (description of sequences of events that, taken together, lead to a system doing something useful)
    • Who is going to use it?
    • How are they going to use it?