No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Qu茅 es Stack overflow

10/13
Recursos

Stack overflow es un t茅rmino empleado para referirse al desbordamiento de tareas en el Call Stack del motor de JavaScript. Esto ocurre por ciclos infinitos, funciones recursivas sin control, cambios de estado continuo, o alg煤n programa que exceda las tareas que puede ejecutar el navegador.

Representaci贸n gr谩fica de Stack overflow

Anteriormente, los navegadores no estaban preparados para manejar un stack overflow, por lo que la p谩gina web colapsaba y cerraba la aplicaci贸n. En la actualidad, si el navegador encuentra este problema, detiene la ejecuci贸n del c贸digo evitando que colapse la p谩gina web.

Error del navegador debido al stack overflow

Stack overflow tambi茅n es un sitio de preguntas y respuestas de ingenier铆a de software, uno de tus mejores aliados en tu carrera de estudios.

Contribuci贸n creada por Andr茅s Guano.

Aportes 97

Preguntas 14

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.


Ahora entiendo el porqu茅 se llama as铆 y el significado de su logo 馃く

De forma gr谩fica esto es lo que ocurre con Stack overflow

El stack overflow se genera cuando el call stack se llena completamente (pila de tareas) .Esto pasa cuando se genera o se trabaja con bucles infinitos, recurcividad y funciones.Entonces este entra en stack overflow , tenemos que tener cuidado de ocacionar estos stack!!!

Chrome nos manda un mensaje: 鈥淥YE, TRANQUILO VIEJO!鈥

Como cuando est谩s en React usando el useEffect y a煤n no lo sabes usar bien y generas un loop infinito y el chrome hace crash!! 馃槷

Que curioso que justo en esta clase, hablando de recursividad y overflow el video desborde de empat铆a

Tenemos nuestro Call Stack donde tenemos nuestra lista de tareas, empezando por el Global Object, se va agregando a la pila todo el c贸digo nuestro. Puede pasar que tengamos alguna funci贸n que haga que desbordemos esa pila del Call Stack, a esto se le llama Stack overflow, y se crashear谩 el navegador. En versiones anteriores de Chrome se cerraba por completo el navegador, ahora detectan ese desbordamiento y lo bloquean para evitar que se bloque茅 todo el navegador.

function overflow() {
	overflow();
}

overflow(); // Uncaught RangeError: Maximum call stack size exceeded```

Esto es otro nivel para saber como trabajar con JavaScript, se puede decir que hasta ahora es mi curso preferido.

Y con esto aprendimos algo nuevo y debemos repetir esto siempre antes de irnos a dormir: 鈥淣o voy a desbordar la pila de tareas鈥 jaja

鈾ワ笍 3:08 鈾ワ笍

Cuando trabajamos en microcontroladores con muy poca memoria, solo deja manejar un stack m谩ximo de 8 niveles, pero maneja una arquitectura similar.

Un desbordamiento de pila ocurre cuando hay una funci贸n recursiva (una funci贸n que se llama a s铆 misma) sin un punto de salida. El navegador (entorno de alojamiento) tiene una llamada de pila m谩xima que puede acomodar antes de lanzar un error de pila.

Aqu铆 hay un ejemplo:

function callMyself(){  callMyself();}callMyself();```

驴Est谩 el curso completo? Despues de esta clase salta el examen pero no parece que haya finalizado鈥 驴No est谩 lanzado el curso 鈥渙ficialmente鈥? Gracias!

La primera vez que realic茅 un 鈥渃iclo for鈥, me pas贸 esto! Cuando no sabes de d贸nde procede el 鈥渓oop鈥, causa estr茅s.

驴Qu茅 es el Stack overflow?
El Stack overflow es un error que ocurre cuando el call stack pointer pasa por encima de su l铆mite de pila. En otras palabras, se llaman demasiadas funciones.

驴Que lo causa?
Un Stack overflow ocurre cuando hay una funci贸n recursiva (una funci贸n que se llama a s铆 misma) sin un punto de salida. El navegador (entorno de alojamiento) tiene una stack call m谩xima que puede acomodar antes de lanzar un error de pila.

Aqu铆 hay un ejemplo:

function callMyself(){
  callMyself();
}

callMyself();

Una pregunta que el stackoverflow no puede responder

function gallina() {
  return huevo()
}
function huevo() {
  return gallina()
}
console.log("Vino primero " + gallina());

3:08 Ejemplo claro de un stack overflow

Claro, causen epilepsia!

Stack Overflow = sobre-flujo de tareas en el stack. 馃槃

Recuerdo que en el curso de programaci贸n b谩sica dec铆an que se colgaba el navegador cuando hac铆as una proceso infinito. Ahora no, que buena actualizaci贸n

Entendido y puesto en practica

function overflow(){
    overflow();
}
overflow();

Comparto con mis compa帽eros que este curso me esta dejando asi 馃く馃く
jajaja

Es como cuando tu pareja te llena de preguntas del porque no apareciste anoche y el cerebro te hace Crash! 馃槈

Crash: Bloquear/cuando una aplicaci贸n deja de funcionar por completo.
Stack overflow: Desbordamiento de pila(call stack)

Ojal谩 todo lo entendiera tan f谩cil como esta clase 馃槂

Momento historico para mi, siempre usaba esa pagina para buscar respuestas, pero hace poco publique una respuesta y los amino ustedes a que tambien se animen a contribuir si no lo han echo ya.

STACK OVERFLOW.
Stack overflow is the situation when the petitions made are massive so it can collapse the memory of the browser. Nowadays with V8 there is a limit of duties in the call-stack avoiding with it crashes issues.
Also 鈥淪tack Overflow鈥 it is a platform for coders to ask and resolve questions about programming issues.

aqu铆 les dejo la pagina de stack overflow en espa帽ol para que puedan preguntar sus dudas y les puedan responder en espa帽ol, para mi es excelente pens茅 que solamente este sitio web estaba solo en ingles pero ya salio para espa帽ol, si ya lo sab铆an bien por ustedes pero en mi caso yo no lo sabia y reci茅n me entero, super ahora si tenemos a la mejor comunidad de programadores en este sitio web -> https://es.stackoverflow.com/

STACK OVERFLOW
Se tiene el Call STACK, la lista de tareas, en su base esta el GLOBAL OBJECT.
todo el codigo se va agregando en la pila
y el global object, en su base va evacuando uno a uno
puede ocurrir que una funcion desborde de tareas la pila. esto es -> stack overflow
Cuando esto ocurria, el navegador se cerraba
Actualmente cuando alguna funcion empieza a llenar la pila el navegador detecta este comportamiento
y detiene la funci貌n que esta ocacionando esto.

// esta funcion genera un stack overflow
function overflow() {
    overflow();
};

overflow();

// VM198:1 Uncaught RangeError: Maximum call stack size exceeded
//     at overflow (<anonymous>:1:18)
//     at overflow (<anonymous>:2:5)
//     at overflow (<anonymous>:2:5)
//     at overflow (<anonymous>:2:5)
//     at overflow (<anonymous>:2:5)
//     at overflow (<anonymous>:2:5)
//     at overflow (<anonymous>:2:5)
//     at overflow (<anonymous>:2:5)
//     at overflow (<anonymous>:2:5)
//     at overflow (<anonymous>:2:5)

//Esto es lo que se ve en pantalla pero al parecer alcanza a ejecutarlo mas de 250 veces

//control de loop infinitos
// o funcione recursivas

Estoy como loco!!! disfrutando tanta informaci贸n 馃槂

function factorial(num){
    let result = 1
    if(num == 0){
        return result
    }else{
        result = num * factorial(num-1)
        return result
    }
    
}

debugger;

console.log(factorial(6))

// 720
Escribi este algoritmo con la clase anterior y ahora en lo comparto en esta otra.

Es interesante observar el callstack llenarse con una llamada recursiva y otra vez vaciarse de la forma First In Last Out.

Alrededor de computaci贸n conocer estos detalles en el lenguaje me abre los ojos a entender los componentes que forma la web de manera m谩s clara.

Los invito a participar en el reto de Javascript que comienza el 1 marzo 2023.
https://platzi.com/retos/30-dias-js/

Les comparto un blogpost en ingl茅s de FreeCodeCamp que habla acerca del Call Stack y el Stack Overflow.
.
https://www.freecodecamp.org/news/understanding-the-javascript-call-stack-861e41ae61d4/

Stack overflow es cuando tenemos m谩s tareas de las que podemos procesar en el call stack.

Tantas veces que visite la pagina de stackoverflow, la reconoc铆a por el logo y hasta ahora entiendo su significado, me ha gustado muchisismo este curso, entender el funcionamiento del navegador es super importante y enriquecedor

驴Qu茅 es crash?

El analisis que hace chrome para que no crashee el codigo, es increible.

entonces jamas podre crear un loops infinito?

en espa帽ol 鈥淒esbordamiento de pila鈥

馃し Stack overflow

<h4>Apuntes</h4>
  • Es cuando la pila de ejecuci贸n alcanza su maxima capacidad
  • Causando que el navegador se crashe茅
  • Se debe tener bastante cuidado cuando
    • Hacemos funciones recursivas

MY NOTES FOR STACK OVERFLOW

Es una pagina a la cual vas para ver preguntas acerca de c贸digo y otros desarrolladores se encargan de responderlas.

Como ya hablamos del call stack es donde hay una pila de tareas y se comienzan acumular

Si existe una funcion que hace que esta pila de tareas se muy larga a eso se le conoce como stack overflow

Chrome cambio esto porque esto afectaba el navegador por tanta sobre carga y lo que hacia era cerrar el navegador entonces google lo cambio para que identificara cuando esto pudiera suceder y lo evitara.

No sab铆a que Chrome detenia este tipo de casos, funcionara en Firefox, probare鈥

Si tambien lo detecta y detiene, maravilloso 馃槏

Con un arreglo gigante tambi茅n 鈥淐rashea鈥 el navegador y la consola.

<
let data = []
function loop() {
for (let i = 0; i < 10000000000; i++) {
data.push(i);
}
}
loop();
> 

Chrome detecta cuando se puede llegar a un Stack Overflow, procede a detener la ejecuci贸n del c贸digo y genera un error.

el concepto de recursividad se aplica a la mayor铆a de lenguajes de programaci贸n. Lo m谩s importante es pensar bien el caso base que acaba con las llamadas recursivas.
https://es.qwe.wiki/wiki/Stack_Overflow

Estupenda clase y ejemplo sobre stack overflow instructor Diego, interesante ese efecto que generaba anteriormente al navegador Chrome.

STACK OVERFLOW

- Cuando tenemos un ciclo, funcion o algo que hace que desbordemos nuestro Call Stack
- Chrome hizo modificaciones para que en caso de que haya un cierto numero de peticiones de algo que nos puede
  llevar a un stack overflow deja de ejecutar ese codigo
  - Cuando pasa esto Chrome manda un error de "Hubo un m谩ximo de llamadas, te excediste no vamos a continuar con esto"
  NOTA: esto hacia que el navegador se cerrara y nos termin谩ramos la memoria

Recursion es un cuando una funcion se manda a llamar a si misma

con este curso me quedan claro muchos conceptos ademas de que es como la tercera vez que repaso los conceptos ya que en multiples cursos los e visto , muy bueno el curso

AAAHHH ES VERDAD, en el pasado me supo pasar bastante que los sitios se me cerraban, intuyo que por un stack overflow y es algo que simplemente dejo de pasar hace unos a帽os, me hab铆a olvidado jeje

Cuando hablamos de Stack overflow se habla de cuando tenemos nuestra call stack donde tenemos nuestra lista de tareas empezando por nuestro Global Object. Pero que pasa cuando tenemos muchas tareas y agregamos una donde ya llenamos toda nuestra pila de tareas? Pues a esto se le conoce como Stack Overflow. Esto rompe nuestro navegador y usualmente los cierra. Chrome esta trabajando con varias funciones para evitar esto, actualmente esto solo muestra un mensaje de error para evitar cerrarse.

馃槃 otra forma de hacer un bug en el navegador era hacer un ciclo infinito 馃槃 ahora entiendo todo es maravilloso 馃槂

stackoverflow suena cool,

Stack overflow = desbordamiento de tareas en el motor de JavaScript llamado Call Stack. Tambi茅n, es un sitio de聽preguntas y respuestas de ingenier铆a de software

cuando a煤n me costaba entender el ciclo While.. over chrome sufri贸 mucho!! haha ya entendi贸 que pasaba internamente

Stack Overflow es tu amigo 鉂わ笍

La recursi贸n es una caracter铆stica de la programaci贸n de computadores que se refiere a la capacidad de una funci贸n para llamarse a s铆 misma en lugar de procesar sus argumentos directamente. Esto les permite a los programadores escribir c贸digos m谩s cortos y 谩giles.
En HTML y CSS, la recursi贸n se usa para crear documentos y estilos que se basan en patrones repetitivos. Por ejemplo, un programador de HTML puede usar la recursi贸n para crear una estructura jer谩rquica de elementos HTML, donde cada elemento se divide en partes m谩s peque帽as.

// bloque de c贸digo 1
<html>
 <head>
  <title>T铆tulo de la p谩gina</title>
 </head>
 <body>
  <div>
   <!-- bloque de c贸digo recursivo -->
   <div>
    <!-- bloque de c贸digo recursivo -->
    <div>
     <!-- c贸digo HTML aqu铆 -->
    </div>
   </div>
  </div>
 </body>
</html>

// bloque de c贸digo 2
<style>
 div {
  margin: 10px;
 }

 div div {
  margin: 5px;
 }

 div div div {
  margin: 2px;
 }
</style>

// bloque de c贸digo 3
function recursiva(valor) {
	if (valor < 0) {
		return;
	}
	console.log(valor);
	recursiva(valor - 1);
}

// bloque de c贸digo 4
function factorial(valor) {
	if (valor === 0) {
		return 1;
	}
	return valor * factorial(valor - 1);
}

// bloque de c贸digo 5
function fibonacci(valor) {
	if (valor === 0 || valor === 1) {
		return 1;
	}
	return fibonacci(valor - 1) + fibonacci(valor - 2);
}

// bloque de c贸digo 6
function imprimirNumeros(valor) {
	if (valor === 0) {
		return;
	}
	console.log(valor);
	imprimirNumeros(valor - 1);
}

// bloque de c贸digo 7
function escribirNumeros(valor) {
	if (valor === 0) {
		return;
	}
	document.write(valor);
	escribirNumeros(valor - 1);
}

// bloque de c贸digo 8
function imprimirMensaje(mensaje, numero) {
	if (numero === 0) {
		return;
	}
	console.log(mensaje);
	imprimirMensaje(mensaje, numero - 1);
}

// bloque de c贸digo 9
function imprimirMatriz(matriz, fila, columna) {
	if (fila === matriz.length) {
		return;
	}
	if (columna === matriz[fila].length) {
		console.log();
		imprimirMatriz(matriz, fila + 1, 0);
		return;
	}
	console.log(matriz[fila][columna]);
	imprimirMatriz(matriz, fila, columna + 1);
}

// bloque de c贸digo 10
function crearVista(lista, nivel) {
	if (nivel === lista.length) {
		return;
	}
	let elemento = document.createElement('div');
	elemento.innerHTML = lista[nivel];
	document.body.appendChild(elemento);
	crearVista(lista, nivel + 1);
}

馃槂 I hope you鈥檒l be happy this New Year until the overflow!
function happyNewYear() {
happyNewYear();
}
happyNewYear();

Si ejecutamos esto podemos ver en su maximo explendor el Stack Overflow XD mi navegador se cerro en el 2000.

function llamar(){
console.log(Pueba de funcion);
llamar();
}

llamar();

Buenos d铆as compa帽eros, disculpe no me queda claro si lo que estoy entendiendo es correcto o no, cuando yo mando llamar una funci贸n el computador me aparta un pedacito de memoria para que la use la funci贸n y si yo la llamo recursivamente voy a agotar la memoria porque va a apartar muchas veces espacio de memoria para esa funci贸n y por eso es que se agota la memoria y ah铆 es cuando, sin espacio para ejecutar m谩s cosas, se crashea el navegador y al Crashearse se reinician los procesos que ten铆a dejando limpio el memory heap y el call stack? gracias por su ayuda.

Deseo terminar mi jornada de trabajo y empezar a cerrar mis ventanas de StackOverflow en el navegador, okno

el stack overflow se genera cuando el call stack se llena completamente generalmente ocacuonado por loop infinitos que 鈥渃rashean鈥 el navegador.

Buenas, como estan! Les comparto mi carpeta de Google Docs para que entre todos podamos seguir aportando a la toma de notas de un mont贸n de los cursos de Platzi. Hagamos una comunidad!!!

https://drive.google.com/drive/folders/1SWGMgTMPbwgasbzcivcpcnIudc2vk_v0?usp=sharing

La primera vez que me dio Stack Overflow, crei que me habia hechado todo el programa y tenia que volver a hacer todo xD

https://www.youtube.com/watch?v=-PX0BV9hGZY Dejo esta maravilla por aca.

Entonces yo he logrado stack overflow con mi c贸digo entonces XD, obvio no fue en Chrome, fue FireFox hahahahaha.

Ahora entiendo el significado del Nombre de la Web y el de si LOGO - Siempre se aprende algo nuevo

El Stack Overflow es una sobrecarga de la pila de ejecuci贸n que ocurre cuando dentro del c贸digo por error generamos un bucle infinito cuando estamos trabajando con ciclos y funciones recursivas (que se llaman a s铆 mismas)

Esto significa que si tenemos un c贸digo que no se pueda parar de ejecutar las tareas ser谩n infinitas, por lo que la pila de ejecuci贸n se sobrecarga, ocupar谩 todo el espacio de la memoria y se crashear谩 el programa.

Me ha pasado que sin querer creo loops infinitos y el navegador leaguea toda la PC hasta que se cierra con el maravilloso Alt + F4. 馃槄

El Pobre Chrome con el Stack Overflow

Stack Overflow

Es lo que ocurre cuando una funci贸n desborda la pila de ejecuci贸n (Call Stack) y se le llama Stack Overflow.

Lo que hacen los navegadores actualmente para solucionar este problema es que tan pronto se ve que una funci贸n hace cierto n煤mero de peticiones o llamados que puedan crear un Stack Overflow, se dentenga la ejecuci贸n para evitar que ocurra.

Con esta clase tambi茅n aprend铆 que mandando a llamar a una funci贸n a s铆 misma creas un loop infinito 馃槃

Muy interesante el concepto.

Por eso es importante que cuando se hace uso de la recursividad se debe tener un caso base donde la ejecuci贸n termine y te saque de la funci贸n.

Stackoverflow, es cuando la pila de tareas se desborda.

Vaya muy interesante


df

El stack overflow se genera cuando el call stack se llena completamente (pila de tareas) .Esto pasa cuando se genera o se trabaja con bucles infinitos, recurcividad y funciones.Entonces este entra en stack overflow , tenemos que tener cuidado de ocacionar estos stack!!!

Genial

Que buen recurso el del navegador para evitar el stack overflow!

Stack overflow -> desvordamiento de datos en la memoria

Muy interesante ver de forma practica y sencilla como se da el stack overflow! 馃槂

Muy claro

Entendido lo de stack overflow. 馃槃

Muy claro el tema

Jajajaj excelente.

Me mato ver una funci贸n recursiva sin condici贸n de salida.馃槀馃ぃ馃槀馃槀

Grande Stack Overflow

Ahora la vida tiene sentido ajaaj

MY NOTES FOR STACK OVERFLOW

Cuando hablamos de stackoverflow nos referimos a el desbordamiendo del Call Stack. (el cual funciona como una pila)
NOTA: Anteriormente el navegador se cerraba con este problema sin embargo en la actualidad Chrome implemento la modalidad de saltar un mensaje cuando encuentra una funci贸n que puede ocasionar el problema.

Un 鈥淒esbordamiento de Pila - Stack Overflow鈥 ocurre cuando hay una funci贸n recursiva (una funci贸n que se llama a s铆 misma) sin un punto de salida. El navegador (hoisting environment) tiene una llamada de pila m谩xima (Maximum call stack ) que puede acomodar antes de lanzar un error de pila.

Entre en el estado nirvana鈥 ahora lo entiendo todo jaja Stack overflow

馃槷

Ya conocemos entonces el porque del nombre de stack overflow y el significado de su logo. Sirve bastante ya que a medida que avanzamos en el curso nos vamos dando cuenta de informaci贸n que ajena al curso.

Al minuto 0:56 se da el origen del logo de Stack Overflow. Ahora ya se cual es su siginificado