Skip to content

Instantly share code, notes, and snippets.

View dengjonathan's full-sized avatar

Jon Deng dengjonathan

View GitHub Profile
@dengjonathan
dengjonathan / plusOne.js
Created September 10, 2016 17:14
shows difference between a pure function and not pure
// this is better
function plusOne(number) {
return number++;
}
plusOne(5); // 6
// this is worse
var number = 5;
function plusOne() {
@dengjonathan
dengjonathan / each.js
Last active September 10, 2016 21:56
replaces for loop with each function
/* how do you encapsulate a for loop within a function
so that each(names, callback) will do the same thing as the for loop? */
// ensure that the all inputs are explicity declared in function signature
var each = function(array, callback) {
for (var i = 0; i < array.length; i++) {
callback(array[i]);
}
};
@dengjonathan
dengjonathan / forLoop.js
Last active September 10, 2016 15:48
for loop
var names = ['jon', 'jane', 'jack'];
// something we want to do with each item in array
var log = function(a) {
console.log(a);
}
// using for loop
for (var i = 0; i < names.length; i++) {
log(names[i]);
@dengjonathan
dengjonathan / routerHttpServer.js
Created September 1, 2016 03:54
Simple HTTP server with router for API endpoints
var http = require('http');
var fs = require('fs');
var url = require('url');
var streamMap = require('through2-map');
var port = process.argv[2];
var path = process.argv[3];
var server = http.createServer(function(request, response) {
var get = url.parse(request.url, true);
@dengjonathan
dengjonathan / simpleHTTPserver.js
Last active September 1, 2016 03:53
Create a basic HTTP server with node that returns the same file from a read stream on every request
var http = require('http');
var fs = require('fs');
var url = require('url');
var streamMap = require('through2-map');
var port = process.argv[2];
var path = process.argv[3];
var server = http.createServer(function(request, response) {
var get = url.parse(request.url, true);
@dengjonathan
dengjonathan / pipe.js
Last active August 29, 2016 00:00
An example of piping in output from an HTTP request into another function
var http = require('http');
var bl = require('bl');
// file path is from enviroment variable passed in through CLI
var urls = process.argv.slice(2);
var results = [];
var returned = 0;
function httpGet(index) {
@dengjonathan
dengjonathan / asynWithErrorHandling.js
Created August 28, 2016 18:19
Idiomatic Node async call with eror handling
// this is an idiomatic example of a Node async call with callbacks that
// handle both returned data and error
/***********This is the module defined for later use */
var fs = require('fs');
module.exports = function(file, ext, callback) {
fs.readdir(file, function(err, data) {
// if readdir returns error, call callback with error early
@dengjonathan
dengjonathan / asyncIO.js
Last active August 28, 2016 20:21
Node asyn I/O with callback after I/O returns
var http = require('http');
var bl = require('bl');
// file path is from enviroment variable passed in through CLI
var url = process.argv[2];
var consolidated = '';
var callback = function(data) {
consolidated += data;
var quickSort = function (arr) {
if (arr.length === 0) {
return [];
}
var left = [];
var right = [];
var pivot = arr[arr.length - 1]; // use right most value as pivot
_.each(arr.slice(0, arr.length - 1), function (each) {
// implementation of quicksort
var quickSort = function (arr) {
if (arr.length === 0) {
return [];
}
var left = [];
var right = [];
var pivot = arr[arr.length - 1]; // use right most value as pivot