├── herramientas
├── automatizacion
│ ├── www
│ │ └── index.html
│ ├── package.json
│ └── gulpfile.js
└── scrapping
│ ├── index.js
│ └── package-lock.json
├── memoria
├── input.txt
├── buffer.js
└── stream.js
├── modulos
├── archivo.txt
├── nativos
│ ├── index.js
│ ├── build
│ │ ├── Release
│ │ │ ├── addon.node
│ │ │ ├── .deps
│ │ │ │ └── Release
│ │ │ │ │ ├── addon.node.d
│ │ │ │ │ └── obj.target
│ │ │ │ │ ├── addon.node.d
│ │ │ │ │ └── addon
│ │ │ │ │ └── hola.o.d
│ │ │ └── obj.target
│ │ │ │ ├── addon.node
│ │ │ │ └── addon
│ │ │ │ └── hola.o
│ │ ├── binding.Makefile
│ │ ├── config.gypi
│ │ ├── addon.target.mk
│ │ └── Makefile
│ ├── binding.gyp
│ ├── hola.cc
│ └── README.md
├── globales.js
├── procesoHijo.js
├── os.js
├── fs.js
├── errores.js
├── process.js
├── consola.js
└── http.js
├── README.md
├── paquetes
├── npm
│ ├── index.js
│ ├── package.json
│ └── package-lock.json
├── modulo
│ ├── es6
│ │ ├── index.mjs
│ │ └── modulo.mjs
│ ├── modulo.js
│ └── index.js
└── utiles
│ ├── original.png
│ ├── resized.png
│ ├── sharp.js
│ ├── moment.js
│ ├── bcrypt.js
│ ├── package.json
│ └── package-lock.json
├── conceptos
├── entorno.js
└── monohilo.js
├── trucos
├── errorFirst.js
└── benchmarking.js
├── async
├── callback.js
├── asyncAwait.js
├── promises.js
└── callbackHell.js
└── .gitignore
/herramientas/automatizacion/www/index.html:
--------------------------------------------------------------------------------
1 |
Hola mundo Node
--------------------------------------------------------------------------------
/memoria/input.txt:
--------------------------------------------------------------------------------
1 | soy
2 | un
3 | archiv
4 | que
5 | vamos
6 | a
7 | leer
--------------------------------------------------------------------------------
/modulos/archivo.txt:
--------------------------------------------------------------------------------
1 | Hola, yo soy un archivo
2 |
3 | Y tengo varias lineas!
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # fundamentos-node-platzi
2 | Curso de fundamentos de NodeJS en Platzi
3 |
--------------------------------------------------------------------------------
/paquetes/npm/index.js:
--------------------------------------------------------------------------------
1 | const isOdd = require('is-odd');
2 |
3 | console.log(isOdd(2));
4 |
--------------------------------------------------------------------------------
/modulos/nativos/index.js:
--------------------------------------------------------------------------------
1 | const miAddon = require('./build/Release/addon');
2 |
3 | console.log(miAddon.hola());
--------------------------------------------------------------------------------
/paquetes/modulo/es6/index.mjs:
--------------------------------------------------------------------------------
1 | import modulo from './modulo.mjs'
2 |
3 | console.log(modulo.prop1);
4 | modulo.saludar();
--------------------------------------------------------------------------------
/paquetes/utiles/original.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CodingCarlos/fundamentos-node-platzi/HEAD/paquetes/utiles/original.png
--------------------------------------------------------------------------------
/paquetes/utiles/resized.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CodingCarlos/fundamentos-node-platzi/HEAD/paquetes/utiles/resized.png
--------------------------------------------------------------------------------
/modulos/nativos/build/Release/addon.node:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CodingCarlos/fundamentos-node-platzi/HEAD/modulos/nativos/build/Release/addon.node
--------------------------------------------------------------------------------
/paquetes/utiles/sharp.js:
--------------------------------------------------------------------------------
1 | const sharp = require('sharp');
2 |
3 | sharp('original.png')
4 | .resize(80)
5 | .grayscale()
6 | .toFile('resized.png');
--------------------------------------------------------------------------------
/modulos/nativos/binding.gyp:
--------------------------------------------------------------------------------
1 | {
2 | "targets": [
3 | {
4 | "target_name": "addon",
5 | "sources": [ "hola.cc" ]
6 | }
7 | ]
8 | }
--------------------------------------------------------------------------------
/modulos/nativos/build/Release/.deps/Release/addon.node.d:
--------------------------------------------------------------------------------
1 | cmd_Release/addon.node := rm -rf "Release/addon.node" && cp -af "Release/obj.target/addon.node" "Release/addon.node"
2 |
--------------------------------------------------------------------------------
/modulos/nativos/build/Release/obj.target/addon.node:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CodingCarlos/fundamentos-node-platzi/HEAD/modulos/nativos/build/Release/obj.target/addon.node
--------------------------------------------------------------------------------
/modulos/nativos/build/Release/obj.target/addon/hola.o:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CodingCarlos/fundamentos-node-platzi/HEAD/modulos/nativos/build/Release/obj.target/addon/hola.o
--------------------------------------------------------------------------------
/modulos/nativos/build/binding.Makefile:
--------------------------------------------------------------------------------
1 | # This file is generated by gyp; do not edit.
2 |
3 | export builddir_name ?= ./build/.
4 | .PHONY: all
5 | all:
6 | $(MAKE) addon
7 |
--------------------------------------------------------------------------------
/paquetes/modulo/modulo.js:
--------------------------------------------------------------------------------
1 | function saludar() {
2 | console.log('Hola mundo!!');
3 | }
4 |
5 | module.exports = {
6 | saludar,
7 | prop1: 'Hola que tal'
8 | };
9 |
--------------------------------------------------------------------------------
/paquetes/modulo/es6/modulo.mjs:
--------------------------------------------------------------------------------
1 | function saludar() {
2 | console.log('Hola mundo!!');
3 | }
4 |
5 | export default {
6 | saludar,
7 | prop1: "Soy un modulo experimental",
8 | };
--------------------------------------------------------------------------------
/paquetes/modulo/index.js:
--------------------------------------------------------------------------------
1 | // Traer nuestro modulo
2 | const modulo = require('./modulo');
3 |
4 | // ejecutar una funcion del modulo
5 | console.log(modulo.prop1);
6 | modulo.saludar();
--------------------------------------------------------------------------------
/paquetes/utiles/moment.js:
--------------------------------------------------------------------------------
1 | const moment = require('moment');
2 |
3 | let ahora = moment();
4 |
5 | // console.log(ahora.toString());
6 | console.log(ahora.format('YYYY/MM/DD - HH:mm'));
--------------------------------------------------------------------------------
/conceptos/entorno.js:
--------------------------------------------------------------------------------
1 | let nombre = process.env.NOMBRE || 'Sin nombre';
2 | let web = process.env.MI_WEB || 'no tengo web';
3 |
4 | console.log('Hola '+ nombre);
5 | console.log('Mi web es '+ web);
6 |
--------------------------------------------------------------------------------
/modulos/nativos/build/Release/.deps/Release/obj.target/addon.node.d:
--------------------------------------------------------------------------------
1 | cmd_Release/obj.target/addon.node := g++ -shared -pthread -rdynamic -m64 -Wl,-soname=addon.node -o Release/obj.target/addon.node -Wl,--start-group Release/obj.target/addon/hola.o -Wl,--end-group
2 |
--------------------------------------------------------------------------------
/conceptos/monohilo.js:
--------------------------------------------------------------------------------
1 | console.log('Hola mundo');
2 | let i = 0;
3 | setInterval(function() {
4 | console.log(i);
5 | i++;
6 |
7 | // if (i === 5) {
8 | // console.log('forzamos error');
9 | // var a = 3 + z;
10 | // }
11 | }, 1000);
12 |
13 | console.log('Segunda instrucción');
14 |
--------------------------------------------------------------------------------
/paquetes/npm/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "npm",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "author": "",
10 | "license": "ISC",
11 | "dependencies": {
12 | "is-odd": "^3.0.1"
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/paquetes/utiles/bcrypt.js:
--------------------------------------------------------------------------------
1 | const bcrypt = require('bcrypt');
2 |
3 | const password = '1234Segura!';
4 |
5 | bcrypt.hash(password, 5, function(err, hash) {
6 | console.log(hash);
7 |
8 | bcrypt.compare('password', hash, function(err, res) {
9 | // console.log(err)
10 | console.log(res)
11 | })
12 | });
--------------------------------------------------------------------------------
/memoria/buffer.js:
--------------------------------------------------------------------------------
1 | // let buffer = Buffer.alloc(4);
2 | // let buffer = Buffer.from([1, 2, 5]);
3 | let buffer = Buffer.from('Hola');
4 |
5 | // console.log(buffer);
6 |
7 | // --
8 |
9 | let abc = Buffer.alloc(26);
10 | console.log(abc);
11 |
12 | for (let i = 0; i < 26; i++) {
13 | abc[i] = i + 97;
14 | }
15 |
16 | console.log(abc.toString());
17 |
--------------------------------------------------------------------------------
/paquetes/utiles/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "utiles",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "keywords": [],
10 | "author": "",
11 | "license": "ISC",
12 | "dependencies": {
13 | "bcrypt": "^3.0.7",
14 | "moment": "^2.24.0",
15 | "sharp": "^0.23.3"
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/herramientas/automatizacion/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "automatizacion",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1",
8 | "start": "gulp",
9 | "build": "gulp build",
10 | "serve": "gulp serve"
11 | },
12 | "author": "",
13 | "license": "ISC",
14 | "dependencies": {
15 | "gulp": "^4.0.2",
16 | "gulp-server-livereload": "^1.9.2"
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/herramientas/automatizacion/gulpfile.js:
--------------------------------------------------------------------------------
1 | const gulp = require('gulp');
2 | const server = require('gulp-server-livereload');
3 |
4 | gulp.task('build', function(cb) {
5 | console.log('Construyendo el sitio');
6 | setTimeout(cb, 1200);
7 | });
8 |
9 | gulp.task('serve', function(cb) {
10 | gulp.src('www')
11 | .pipe(server({
12 | livereload: true,
13 | open: true,
14 | }));
15 | });
16 |
17 | gulp.task('default', gulp.series('build', 'serve'));
--------------------------------------------------------------------------------
/modulos/globales.js:
--------------------------------------------------------------------------------
1 | // Ubicación de ficheros
2 | // console.log(__dirname);
3 | // console.log(__filename);
4 |
5 | // Timers
6 | // console.log(setInterval);)
7 | // console.log(clearInterval);
8 | // console.log(setTimeout);
9 | // console.log(clearTimeout);
10 | // console.log(setInmediate);
11 |
12 | // Modules
13 | // console.log(exports);
14 | // console.log(module);
15 | // console.log(require);
16 |
17 | // Seteando variables globales
18 | // global.test = 'Ejemplo';
19 | // console.log(test);
20 | // console.log(global.test);
21 |
--------------------------------------------------------------------------------
/trucos/errorFirst.js:
--------------------------------------------------------------------------------
1 | function asincrona(callback) {
2 | setTimeout(function() {
3 | try {
4 | let a = 3 + z;
5 | callback(null, a);
6 | } catch (e) {
7 | callback(e);
8 | }
9 | }, 1000);
10 | }
11 |
12 |
13 | asincrona(function (err, dato) {
14 | if (err) {
15 | console.error('Tenemos un error');
16 | console.error(err);
17 | return false;
18 | // throw err; // NO VA A FUNCIONAR
19 | }
20 |
21 | console.log('todo ha ido bien, mi data es', dato);
22 | })
--------------------------------------------------------------------------------
/async/callback.js:
--------------------------------------------------------------------------------
1 | function hola(nombre, miCallback) {
2 | setTimeout(function () {
3 | console.log('Hola, '+ nombre);
4 | miCallback(nombre);
5 | }, 1500);
6 | }
7 |
8 | function adios(nombre, otroCallback) {
9 | setTimeout(function() {
10 | console.log('Adios', nombre);
11 | otroCallback();
12 | }, 1000);
13 | }
14 |
15 | console.log('Iniciando proceso...');
16 | hola('Carlos', function (nombre) {
17 | adios(nombre, function() {
18 | console.log('Terminando proceso...');
19 | });
20 | });
21 |
22 | // hola('Carlos', function () {});
23 | // adios('Carlos', function () {});
--------------------------------------------------------------------------------
/modulos/nativos/hola.cc:
--------------------------------------------------------------------------------
1 | // hello.cc
2 | #include
3 |
4 | namespace demo {
5 |
6 | using v8::FunctionCallbackInfo;
7 | using v8::Isolate;
8 | using v8::Local;
9 | using v8::NewStringType;
10 | using v8::Object;
11 | using v8::String;
12 | using v8::Value;
13 |
14 | void Method(const FunctionCallbackInfo& args) {
15 | Isolate* isolate = args.GetIsolate();
16 | args.GetReturnValue().Set(String::NewFromUtf8(
17 | isolate, "mundo", NewStringType::kNormal).ToLocalChecked());
18 | }
19 |
20 | void Initialize(Local