Last active
August 29, 2015 14:20
-
-
Save fcaravana/43b11b5806e4b0e39581 to your computer and use it in GitHub Desktop.
learnyounode
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* challenges */ | |
// HELLO WORLD | |
// __________________________________________ | |
/* COMPLETED: | |
console.log('HELLO WORLD'); | |
*/ | |
// BABY STEPS | |
// __________________________________________ | |
/* COMPLETED: | |
var result = 0 | |
for (var i = 2; i < process.argv.length; i++) { | |
result += Number(process.argv[i]); | |
} | |
console.log(result) | |
*/ | |
// MY FIRST I/O! | |
// __________________________________________ | |
/* COMPLETED: | |
var fs = require('fs'); | |
var contents = fs.readFileSync(process.argv[2]); | |
var lines = contents.toString().split('\n').length - 1; | |
console.log(lines); | |
*/ | |
// MY FIRST ASYNC I/O! | |
// __________________________________________ | |
/* COMPLETED: | |
var fs = require('fs'); | |
var file = process.argv[2]; | |
fs.readFile(file, function (err, contents) { | |
var lines = contents.toString().split('\n').length - 1; | |
console.log(lines); | |
}); | |
*/ | |
// FILTERED LS | |
// __________________________________________ | |
/* COMPLETED: | |
var fs = require('fs'); | |
var path = require('path'); | |
fs.readdir(process.argv[2], function (err, list) { | |
list.forEach(function (file) { | |
if (path.extname(file) === '.' + process.argv[3]) { | |
console.log(file); | |
} | |
}) | |
}); | |
*/ | |
// MAKE IT MODULAR | |
// __________________________________________ | |
/* COMPLETED: | |
var filterFn = require('./lessonsmodule.js'); | |
var dir = process.argv[2]; | |
var filterStr = process.argv[3]; | |
filterFn(dir, filterStr, function (err, list) { | |
if (err) { | |
return console.error('There was an error:', err); | |
} | |
list.forEach(function (file) { | |
console.log(file); | |
}); | |
}); | |
*/ | |
// HTTP CLIENT | |
// __________________________________________ | |
/* COMPLETED: | |
var http = require('http'); | |
http.get(process.argv[2], function (response) { | |
response.setEncoding('utf8'); | |
response.on('data', console.log); | |
response.on('error', console.error); | |
}); | |
*/ | |
// HTTP COLLECT | |
// __________________________________________ | |
/* COMPLETED: | |
var http = require('http'); | |
var bl = require('bl'); | |
http.get(process.argv[2], function (response) { | |
response.pipe(bl(function (err, data) { | |
if (err) { | |
return console.error(err); | |
} | |
data = data.toString(); | |
console.log(data.length); | |
console.log(data); | |
})); | |
}); | |
*/ | |
// JUGGLING ASYNC | |
// __________________________________________ | |
/* COMPLETED: | |
var http = require('http'); | |
var bl = require('bl'); | |
var results = []; | |
var count = 0; | |
function printResults () { | |
for (var i = 0; i < 3; i++) { | |
console.log(results[i]); | |
} | |
}; | |
function httpGet (index) { | |
http.get(process.argv[2 + index], function (response) { | |
response.pipe(bl(function (err, data) { | |
if (err) { | |
return console.error(err); | |
} | |
results[index] = data.toString(); | |
count++; | |
if (count == 3) { | |
printResults(); | |
} | |
})); | |
}); | |
} | |
for (var i = 0; i < 3; i++) { | |
httpGet(i); | |
} | |
*/ | |
// TIME SERVER | |
// __________________________________________ | |
/* COMPLETED: | |
var net = require('net'); | |
function zeroFill(i) { | |
return (i < 10 ? '0' : '') + i; | |
} | |
function now () { | |
var d = new Date(); | |
return d.getFullYear() + '-' | |
+ zeroFill(d.getMonth() + 1) + '-' | |
+ zeroFill(d.getDate()) + ' ' | |
+ zeroFill(d.getHours()) + ':' | |
+ zeroFill(d.getMinutes()); | |
} | |
var server = net.createServer(function (socket) { | |
socket.end(now() + '\n'); | |
}) | |
server.listen(Number(process.argv[2])); | |
*/ | |
// HTTP FILE SERVER | |
// __________________________________________ | |
/* COMPLETED: | |
var http = require('http'); | |
var fs = require('fs'); | |
var server = http.createServer(function (req, res) { | |
res.writeHead(200, { 'content-type': 'text/plain' }); | |
fs.createReadStream(process.argv[3]).pipe(res); | |
}) | |
server.listen(Number(process.argv[2])); | |
*/ | |
// HTTP UPPERCASERER | |
// __________________________________________ | |
/* COMPLETED: | |
var http = require('http'); | |
var map = require('through2-map'); | |
var server = http.createServer(function (req, res) { | |
if (req.method != 'POST') { | |
return res.end('send me a POST\n'); | |
} | |
req.pipe(map(function (chunk) { | |
return chunk.toString().toUpperCase(); | |
})).pipe(res); | |
}); | |
server.listen(Number(process.argv[2])); | |
*/ | |
// HTTP JSON API SERVER | |
// __________________________________________ | |
/* COMPLETED: | |
var http = require('http'); | |
var url = require('url'); | |
function parsetime (time) { | |
return { | |
hour: time.getHours(), | |
minute: time.getMinutes(), | |
second: time.getSeconds() | |
}; | |
}; | |
function unixtime (time) { | |
return { unixtime : time.getTime() }; | |
}; | |
var server = http.createServer(function (req, res) { | |
var parsedUrl = url.parse(req.url, true); | |
var time = new Date(parsedUrl.query.iso); | |
var result = null; | |
if (/^\/api\/parsetime/.test(req.url)) { | |
result = parsetime(time); | |
} | |
else if (/^\/api\/unixtime/.test(req.url)) { | |
result = unixtime(time); | |
} | |
if (result) { | |
res.writeHead(200, { 'Content-Type': 'application/json' }); | |
res.end(JSON.stringify(result)); | |
} else { | |
res.writeHead(404); | |
res.end(); | |
} | |
}); | |
server.listen(Number(process.argv[2])); | |
*/ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* challenges module */ | |
// MAKE IT MODULAR | |
// __________________________________________ | |
/* COMPLETED: | |
var fs = require('fs'); | |
var path = require('path'); | |
module.exports = function (dir, filterStr, callback) { | |
fs.readdir(dir, function (err, list) { | |
if (err) { | |
return callback(err); | |
} | |
list = list.filter(function (file) { | |
return path.extname(file) === '.' + filterStr; | |
}); | |
callback(null, list); | |
}); | |
} | |
*/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment