CursosEmpresasBlogLiveConfPrecios

Monohilo: implicaciones en diseño y seguridad

Clase 4 de 31 • Curso de Fundamentos de Node.js

Clase anteriorSiguiente clase

Contenido del curso

Conocer los conceptos básicos de NodeJS
  • 1

    Instalación de Node.js

    00:53
  • 2
    Node: orígenes y filosofía

    Node: orígenes y filosofía

    04:40
  • 3
    EventLoop: asíncrona por diseño

    EventLoop: asíncrona por diseño

    04:38
  • 4
    Monohilo: implicaciones en diseño y seguridad

    Monohilo: implicaciones en diseño y seguridad

    09:41
  • 5
    Configurar las variables de entorno en Node.js

    Configurar las variables de entorno en Node.js

    07:23
  • 6
    Herramientas para ser más felices: Nodemon y PM2

    Herramientas para ser más felices: Nodemon y PM2

    09:56
Cómo manejar la asincronía
  • 7
    Callbacks

    Callbacks

    10:12
  • 8
    Callback Hell: refactorizar o sufrir

    Callback Hell: refactorizar o sufrir

    11:37
  • 9
    Promesas

    Promesas

    10:01
  • 10
    Async/await

    Async/await

    08:34
Entender los módulos del core
  • 11
    Globals

    Globals

    10:11
  • 12
    File system

    File system

    10:48
  • 13
    Console

    Console

    10:34
  • 14
    Errores (try / catch)

    Errores (try / catch)

    10:08
  • 15
    Procesos hijo

    Procesos hijo

    10:03
  • 16
    Módulos nativos en C++

    Módulos nativos en C++

    09:32
  • 17
    HTTP

    HTTP

    09:40
  • 18
    OS

    OS

    09:46
  • 19
    Process

    Process

    09:36
Utilizar los módulos y paquetes externos
  • 20
    Gestión de paquetes: NPM y package.json

    Gestión de paquetes: NPM y package.json

    09:28
  • 21
    Construyendo módulos: Require e Import

    Construyendo módulos: Require e Import

    09:47
  • 22
    Módulos útiles

    Módulos útiles

    12:35
  • 23
    Datos almacenados vs en memoria

    Datos almacenados vs en memoria

    03:39
  • 24
    Buffers

    Buffers

    07:47
  • 25
    Streams

    Streams

    11:50
Conocer trucos que no quieren que sepas
  • 26
    Benchmarking (console time y timeEnd)

    Benchmarking (console time y timeEnd)

    07:48
  • 27
    Debugger

    Debugger

    09:41
  • 28
    Error First Callbacks

    Error First Callbacks

    09:33
Manejar herramientas con Node
  • 29
    Scraping

    Scraping

    10:13
  • 30
    Automatización de procesos

    Automatización de procesos

    11:16
  • 31
    Aplicaciones de escritorio

    Aplicaciones de escritorio

    10:16
    Buzu B

    Buzu B

    student•
    hace 6 años

    Me encanta cuando les salen errores a los profesores. Refleja muy bien el flujo de trabajo real. Y aun que hay quienes critican a los profesores por esto, yo creo que es genial que no editen esas partes de la clase. Creo que a la gente que apenas inicia le va a servir mucho darse cuenta que el flujo de trabajo es de esa manera y les ayudará a evitar sentirse frustrados y con sindreome de impostor. Ademas, sin querer aprendes como puedes resolver esos problemitas, como en ete caso con el

    console.log('forzamos error');

    para asegurarse de que el bloque del if se ejecuta.

      Juan Jose Vega

      Juan Jose Vega

      student•
      hace 6 años

      Muy cierto.

      Yeiner Andres

      Yeiner Andres

      student•
      hace 5 años

      Eso es cierto.

    Jesús Miguel Quinto Teran

    Jesús Miguel Quinto Teran

    student•
    hace 6 años

    Importante: Cuando ocurre un error dentro de alguno de los hilos y no se controla apropiadamente (catch); Node detiene todos los hilos ejecución. Esto puede ser muy peligroso, debido a que es dificil determinar fue el origen del problema y en que punto de ejecución se encontraba cada hilo cuando fue detenido.

      Juan Jose Vega

      Juan Jose Vega

      student•
      hace 6 años

      La importancia de manejar bien el try y catch.

      KEVIN Cordon

      KEVIN Cordon

      student•
      hace 3 años

      en este caso siempre es necesario hacer manejo de errores con mensajes luego de la ejecucion

    Alejandro Giraldo Londoño

    Alejandro Giraldo Londoño

    student•
    hace 6 años

    RESUMEN :


    El hecho de que sea monohilo lo hace delicado en el sentido de que puede ejecutarse algo que corte el código y detenga el programa, como la ausencia de sintaxis o una variable pendiente por definir.

    Aquí se pueden ver los problemas de seguridad y los Updates en este tema. Muy interesante leerlo para entender cómo atacan y saltan el código y cómo lo resolvieron.

    • Security Issues

    A continuación dejo el código escrito con algunos comentarios de utilidad:

    console.log('Hola mundo'); // SetInterval me permtie ejecutar una función cada n cantidad de tiempo, por lo que quiere que recibe como argumentos: Función a ejecutarse, intervalo de tiempo. //A tener en cuenta esta función no se detiene y continúa su ejecución ad infinitum. // Detener ejecución con ctrl+ alt + m en Run Code, o con Ctrl +c en la terminal. setInterval(function(){console.log('Voy a contar hasta infinito, detén mi ejecución o consumo tu memoria'),1000}); // Esta instrucción es asíncrona, por lo que se ejecuta en n momento. let i = 0; setInterval(function() { console.log(i); i++; // Al ser monohilo el peligro recae en que si el código se ejectua y no tenemos cuidado el no asignar una variable de manera correcta me puede arrojar un error. //Hay que escuchar los errores, es muy imporante de todo lo que pase en el código. Comprobar funciones y revisar lo que posiblmente puede fallar. //Es clave estar pendiente de todos los errores que pueda cortar la ejecución, lo que se corta corta todo. // Todo lo que sea asíncono y lo pueda llevar a ello, pues llevarlo, y todo lo que no, revisar que no corte el programa. // if (i === 5) { // console.log('forzamos error'); // var a = 3 + z; // } }, 1000); console.log('Segunda instrucción');
      ANTHONY JEAMPIER RANGEL RODRIGUEZ

      ANTHONY JEAMPIER RANGEL RODRIGUEZ

      student•
      hace 5 años

      gracias por el aporte

      Matías Wasiak

      Matías Wasiak

      student•
      hace 5 años

      Muy buen aporte!

    Roberto Shirásago Domínguez

    Roberto Shirásago Domínguez

    student•
    hace 6 años

    MONOHILO

    PROCESO DE NODE 1.- Va a abrirse un proceso, ese proceso es un proceso de node 2.- Interpreta todo el archivo 3.- Convertirlo a código maquina 4.- Prepara todo lo que necesita para ejecutarse 5.- Se ejecuta 6.- Se cierra el proceso, y termina DESVENTAJAS MONOHILO - Si no se manejan bien los errores y uno truena, ya no continua con los procesos posteriores - Debes estar pendiente de todo el código
      María Jimena Rodríguez Contreras

      María Jimena Rodríguez Contreras

      student•
      hace 4 años

      gracias

      Mauricio Gonzalez Falcon

      Mauricio Gonzalez Falcon

      student•
      hace 4 años

      Buen aporte!

    Alejandro Luján

    Alejandro Luján

    student•
    hace 6 años

    Segunda clase del curso, y aparte de los dos cursos que ya tome con Freedy, este maestro es el que siento yo, mejor explica y mejor da a entender las cosas :D

      Omar Gabriel Aguilar Moscoso

      Omar Gabriel Aguilar Moscoso

      student•
      hace 4 años

      aun no llevas con Jonathan alvarez seguro

    Jorge Trad

    Jorge Trad

    student•
    hace 4 años

    Les dejo mis notas hechas con Notion de la clase ^^

    Screen Shot 2021-08-12 at 14.30.03.png
    Daniel Lombardero Calzón

    Daniel Lombardero Calzón

    student•
    hace 6 años

    Si, y si pones un timeout de 0 seguiría ejecutándose primero la "segundo instrucción", porque hasta que no acabe el hilo principal no empiezan a ejecutarse las instrucciones que has enviado al event loop. Pero si explicara esto ya tendria que meterse a explicar otras cosas como las pilas de eventos etc

      Carlos Rivas

      Carlos Rivas

      student•
      hace 5 años

      Es fundamental que él tenga que explicar eso para evitar confuciones, ya que las pilas de evento siguen siendo parte de Node.

      Edwin Cáceres Silva

      Edwin Cáceres Silva

      student•
      hace 5 años

      Por eso recomiendan aprender asincronismo en Js para empezar con Node. Supongo que lo tocará más adelante.

    Santiago Lopera Naranjo

    Santiago Lopera Naranjo

    student•
    hace 5 años

    Es algo interesante cuando los profesores cometen errores, dan a entender que no estan copiando y pegando codigo de otra parte, si no que enseñan con sus propias lineas :D

    Leonel Moyano

    Leonel Moyano

    student•
    hace 5 años

    Si quieren evitar que un error les corte el programa pueden usar TRY CATCH de la siguiente manera:

    let i = 0; setInterval(function () { console.log(i++); try { if (i === 5) { var a = 3 + z; } } catch (error) { console.error(error) } }, 1000)
    Joseph Manuel Salen Pantoja

    Joseph Manuel Salen Pantoja

    student•
    hace 4 años
    Andres Roberto Coello Goyes

    Andres Roberto Coello Goyes

    student•
    hace 6 años

    https://carlosazaustre.es/manejando-la-asincronia-en-javascript/

    Andres Roberto Coello Goyes

    Andres Roberto Coello Goyes

    student•
    hace 6 años
    var i = 0; setTimeout( () => { console.log(i++); },1000);

    setTimeout solo se ejecuta en cierto tiempo a diferencia de SetInterval que se ejecuta cada cierto tiempo

    Edison Manrique

    Edison Manrique

    student•
    hace 4 años

    Como aporte, quisiera aclarar que el setInterval no se ejecuta de último porque dure 1000ms, podemos ponerlo en 0 y va a seguirse empezando a imprimir de último. La razón de que esto suceda es que el Event Loop no deja que nada asíncrono empiece siquiera a ejecutarse hasta que el CallStack, en donde están todos los procesos síncronos y “normales”, no se quede vacío. Por eso, aunque le pongamos 0ms, el resultado va a ser el mismo si hay funciones o procesos síncronos a la espera. Desde una funcion super compleja hasta un simple console.log()

    Omar García Betanzos

    Omar García Betanzos

    student•
    hace 6 años

    A todos nos ha pasado más de una vez que se nos olvida guardar y pensamos que fallo algo, para mí funciono el hecho de cambiar el shortcut de Save a teclas que fueran más cómodas. Para acceder a la lista de shotcuts donde pueden editar Ctrl + K + S.

      Roberto Shirásago Domínguez

      Roberto Shirásago Domínguez

      student•
      hace 6 años

      excelente consejo, a mi me caía mal porque no me dejaba borrar lineas como normalmente las borraba en el IDE (Ctrl + D) ya lo edite y volví a lo tradicional

    Jorge Arribas Castañeyra

    Jorge Arribas Castañeyra

    student•
    hace 5 años
    4.JPG
    Nestor Julian Murphy

    Nestor Julian Murphy

    student•
    hace 5 años

    Y a mi por qué me nombran? :P

      Diego Alejandro Moreno Pedroza

      Diego Alejandro Moreno Pedroza

      student•
      hace 3 años

      Porque al parecer, tienes una ley jaja

    Karl Behrens Gil

    Karl Behrens Gil

    student•
    hace 6 años

    En Node la ejecución de eventos es asíncrona, por lo que retornara los resultados apenas pueda hacerlo en cada evento. Es muy importante saber que si uno de estos eventos fallan, todo va a detenerse, por lo que hay que comprobar rigurosamente nuestro código ante los fallos que puedan suceder.

    Jessie Buckland Pérez

    Jessie Buckland Pérez

    student•
    hace 6 años

    "Ahhhh... es que no había guardado , muy bien Carlos" , la de veces que me ha pasado eso :D, lo conseguí solucionar activando el AUTOSAVE en VSCODE, ¿es esto una mala práctica? ¿puede afectar al flujo de trabajo con git, github, gitlab?

      Gabriel De Andrade

      Gabriel De Andrade

      student•
      hace 6 años

      No te preocupes, el autosave no debería afectar tu flujo de trabajo, si es la manera más cómoda que tienes para hacer código sigue así, con el tiempo verás que tanto afecta tu flujo de trabajo :D

      Carlos Hernández

      Carlos Hernández

      teacher•
      hace 6 años

      Yo suelo trabajar con Sublime, y tengo el auto-save activado cada vez que la ventana pierde el foco. Lo peor que te puede pasar es esto que me pasa a mi 🙈

    Andrés Castellanos

    Andrés Castellanos

    student•
    hace 4 años

    El monohilo es como una cinta de producción en un fábrica de cajas, cada proceso es una caja bien hecha pero un error es una caja enorme... mal hecha. Cuando la caja va a salir para su venta atasca el mecanismo ya que es muy grande. Por lo que las cajas que vienen detrás nunca llegan a "salir" (procesarse en el caso del código).

    funcionamiento de monohilo.png
      Alex hernandez mitre

      Alex hernandez mitre

      student•
      hace 4 años

      excelente analogía.

    Emmi Raffo

    Emmi Raffo

    student•
    hace 4 años

    con la cara que dice que este pendiente de mis programas !!! se nota que lo dice desde la experiencia. Gracias!

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads