Underc0de

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: iGreentick en Junio 22, 2016, 10:11:38 PM

Título: [SOLUCIONADO] ¿Por que este código de ruby congela Kali Linux completamente?
Publicado por: iGreentick en Junio 22, 2016, 10:11:38 PM
Buenas a todos. Antes de comenzar (Por si desvarío un poco) cabe destacar que comencé mi primera guía de Ruby hace 4 días literalmente; y es mi primer lenguaje de programación; con lo que todavía soy demasiado noob. (Tiempo al tiempo....)

El caso; he estado siguiendo unas practicas; y yo.. que soy muy curioso; he querido probar cosas por mi cuenta.. he creado un código muy muy muy básico (No sabria crear nada mas) en el que una parte de él, creaba una matriz vacía, y seguídamente hacía un while con la condición de que si dentro de la matriz no está X objeto (En este caso 0 ), en la misma matriz se le añadirá un objeto (En este caso 1) esto por lo que entiendo hace que se cree un bucle infinito añadiendo ese mismo objeto todo el rato.

El código no era sólo eso; pero me di cuenta que al llegar a ese paso; el ordenador se me CONGELABA y no me dejaba hacer nada. (incluso entrar a modo comandas con CTRL + ALT + F1) . He intentado lanzar ese código 3 veces y las 3; he tenido que apagar el equipo de manera forzada.

Al ver que me pasaba eso; he intentado sacar esa parte del código y hacerla más simple. He querido comprobar si DE VERDAD ese código congela mi ordenador; y sí, lo hace cada vez que lo inicio.

Me gustaría que alguien más probase el código y me diga si le ocurre lo mismo. También; si alguien (Que seguro que alguien habrá) Sabe por qué pasa esto; me gustaría que me lo explicase, para así, poder entenderlo todo bien.

PD: Si no se os congela cuando lancéis el codigo; intentad usar un poco vuestro equipo (Entrar a alguna carpeta, abrir navegador..)

Citar
x = []
while x != '0'
x.push '1'
end
puts 'si el texto sale; algo ha ido mal'


PD2: ¿Es correcto usar la terminación 'Lanzar' para ejecutar un archivo ruby? en caso contrario; como se diría correctamente?.
Gracias!
Título: Re:¿Por que este código de ruby congela Kali Linux completamente?
Publicado por: noxonsoftwares en Junio 22, 2016, 11:01:04 PM
No entiendo ruby pero supongo que es una sobrecarga de la memoria.
Si no colocas una parada while se hará infinito sobrecargado la memoria.
Título: Re:¿Por que este código de ruby congela Kali Linux completamente?
Publicado por: iGreentick en Junio 22, 2016, 11:09:48 PM
Hmmm, dos cositas.
1- ¿Una qué while? No se apenas de progamación.. qué es eso y cómo se pone.
2- Entonces.. si este código sobrecarga la memoria;  encuentro algo que este escrito con ruby., le meto ese trozo de código dentro.. y podría decirse que he modificado eso para que sea una especie de "programa que te deja el ordenador colapsado?"
Título: Re:¿Por que este código de ruby congela Kali Linux completamente?
Publicado por: noxonsoftwares en Junio 23, 2016, 01:43:47 AM
Acá tienes una definición . no puedo escribir mucho porque se me complica desde el smartphone

http://codigoprogramacion.com/cursos/programacion-ruby/ciclo-while-en-ruby.html#.V2totRkn7qA
Título: Re:¿Por que este código de ruby congela Kali Linux completamente?
Publicado por: coke951 en Junio 23, 2016, 03:07:40 AM
Es como una bomba fork... ¿no?

https://es.wikipedia.org/wiki/Bomba_fork

Título: Re:¿Por que este código de ruby congela Kali Linux completamente?
Publicado por: iGreentick en Junio 23, 2016, 09:39:42 AM
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
Es como una bomba fork... ¿no?

https://es.wikipedia.org/wiki/Bomba_fork

Buenas; Por lo que me he informado.. (Como siempre repito.. no sé si lo que digo es bien bien cierto, ya que todavía estoy aprendiendo) quizás, no es bien bien como una bomba fork; pero se le parece un poco...

El caso es; la bomba fork por lo que he leido; es un proceso, que crea a su vez dos procesos que a su vez cada proceso crea otros dos.. bla bla bla bla BOOM.

pero... con ese código, lo que haces es crear una matriz (Un baul, por asi decirlo) y añadir un objeto repetidas veces en ese baúl.. con lo que el baul va creciendo.. y creciendo.. y llenando la ram.. y creciendo.. y llenando al ram.. y creciendo más.. hasta que la ram llega a su tope. pero TODO eso se hace desde un único proceso.


¿ME EQUIVOCO?! (espero que sí, es muy raro que pille las cosas tan rapidamente)
Título: Re:[Resuelto] ¿Por que este código de ruby congela Kali Linux completamente?
Publicado por: Matabarras en Junio 23, 2016, 10:23:46 AM
Es normal que si empiezas a llenar la ram todo el rato y siga y siga, deje de responder el ordenador, igual que cuando haces un bucle infinito en php seguramente te colapse el navegador.

Es algo lógico es como si me pongo a darte puñetazos infinitamente en algun momento te caeras.
O como cuando realizan un ataque ddos si el servidor no deja de recibir muchas peticiones en breve tiempo en algun momento caera.
Título: Re:[Resuelto] ¿Por que este código de ruby congela Kali Linux completamente?
Publicado por: rush en Junio 23, 2016, 11:54:08 AM
Es como si hicieras esto para windows

Citar:start
start calc.exe
goto start

Aunque tengas una computadora veloz llegara un punto en que se saturara la memoria y moriras!