elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Tutorial básico de Quickjs


  Mostrar Mensajes
Páginas: 1 ... 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 [22] 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 ... 102
211  Foros Generales / Sugerencias y dudas sobre el Foro / Re: Problema de visualización de la Portada/Inicio en: 28 Noviembre 2020, 09:54 am
Efectivamente es Chrome pero siempre he utilizado este navegador y nunca me había pasado esto.
Además en ambos ordenadores estoy utilizando Chrome y en uno se ve bien pero en el otro no.
Si alguien sabe por qué puede ser... :-X

EDIT: He descubierto que si accedía en modo incógnito la página se veía correctamente así que he borrado todos los datos de navegación y ya ha vuelto a la normalidad.
212  Comunicaciones / Redes / Re: [VirtualBox] Adaptadores de Red en: 28 Noviembre 2020, 09:50 am
He intentado probar todo desde una máquina virtual inmutable para tener siempre el mismo estado inicial pero tenía problemas para virtualizar dispositivos con Genymotion (que es lo que me da problemas). Así que al final he desinstalado VirtualBox y Genymotion de mi sistema anfitrión y he hecho todas las pruebas en este último.

Durante todo el proceso he ido mirando los registros del Visor de eventos pero no daban mucha información ni en la parte de detalles así que al final he sacado más información de los logs de cada programa (que no significa que la haya entendido toda  :rolleyes:).

La instalación de VirtualBox ha ido todo bien. La he realizado generando también los logs de instalación y no he visto nada raro. Se crea un adaptador host-only network (como es normal).
Sin embargo, al instalar Genymotion es cuando empiezan a crearse adaptadores nuevos. He revisado los logs de Genymotion también y las siguientes líneas son las que me resultan extrañas:
Código:
//...
[Genymotion:5412] [debug] [VBox] get "" from host.only.interface
[Genymotion:5412] [debug] [VBox] [findHostOnlyInterface] Looking for compatible host-only interface
[Genymotion:5412] [debug] [VBox] Call: ("list", "hostonlyifs")
[Genymotion:5412] [debug] [VBox] Return code: 0
[Genymotion:5412] [debug] [VBox] [getSavedHostOnlyInterface] Checking "VirtualBox Host-Only Ethernet Adapter" interface status ( QHostAddress("192.168.56.1") )
[Genymotion:5412] [debug] [VBox] Empty interface name
[Genymotion:5412] [debug] [VBox] [createHostOnlyInterface] Creating new host-only interface
[Genymotion:5412] [debug] [VBox] Call: ("hostonlyif", "create")
[Genymotion:5412] [debug] [VBox] Return code: 0
[Genymotion:5412] [debug] [VBox] [createHostOnlyInterface] Interface "VirtualBox Host-Only Ethernet Adapter #2" created with success
[Genymotion:5412] [debug] [VBox] Call: ("list", "hostonlyifs")
[Genymotion:5412] [debug] [VBox] Return code: 0
[Genymotion:5412] [debug] [VBox] Call: ("hostonlyif", "ipconfig", "VirtualBox Host-Only Ethernet Adapter #2", "--ip", "192.168.225.1", "--netmask", "255.255.255.0")
[Genymotion:5412] [debug] [VBox] Return code: 0
[Genymotion:5412] [debug] [VBox] Call: ("hostonlyif", "ipconfig", "VirtualBox Host-Only Ethernet Adapter #2", "--ip", "192.168.225.2", "--netmask", "255.255.255.0")
[Genymotion:5412] [debug] [VBox] Return code: 0
[Genymotion:5412] [debug] [VBox] Call: ("dhcpserver", "remove", "--ifname", "VirtualBox Host-Only Ethernet Adapter #2")
[Genymotion:5412] [critical] [VBox] Return code: 1
[Genymotion:5412] [critical] [VBox] Output command: "VBoxManage.exe: error: Failed to find DHCP server for host-only interface 'VirtualBox Host-Only Ethernet Adapter #2' (network 'HostInterfaceNetworking-VirtualBox Host-Only Ethernet Adapter #2')"
[Genymotion:5412] [warning] [VBox] 1 "VBoxManage.exe: error: Failed to find DHCP server for host-only interface 'VirtualBox Host-Only Ethernet Adapter #2' (network 'HostInterfaceNetworking-VirtualBox Host-Only Ethernet Adapter #2')\r\n" ""
[Genymotion:5412] [debug] [VBox] Call: ("dhcpserver", "add", "--ifname", "VirtualBox Host-Only Ethernet Adapter #2", "--ip", "192.168.225.100", "--netmask", "255.255.255.0", "--lowerip", "192.168.225.101", "--upperip", "192.168.225.254", "--enable")
[Genymotion:5412] [debug] [VBox] Return code: 0
[Genymotion:5412] [debug] [VBox] [createHostOnlyInterface] DHCP server created with success
[Genymotion:5412] [debug] [VBox] set "VirtualBox Host-Only Ethernet Adapter #2" to host.only.interface
[Genymotion:5412] [debug] [VBox] [createHostOnlyInterface] "VirtualBox Host-Only Ethernet Adapter #2" host-only interface is ready to use
[Genymotion:5412] [debug] [VBox] Restart adapter "VirtualBox Host-Only Ethernet Adapter #2"
[Genymotion:5412] [debug] [VBox] Execute "powershell" ("-WindowStyle", "Hidden", "-command", "start-process -verb RunAs -filepath wmic -argumentlist 'path', 'win32_networkadapter', 'where name=\"VirtualBox Host-Only Ethernet Adapter #2\"', 'call', 'Disable'")
No sé muy bien a qué hace referencia el host.only.interface de la primera línea del log pero parece que no obtiene ningún adaptador de ahí y por eso aparecen varias ventanas de control de cuentas de usuarios para permitir la ejecución de VirtualBoxInterface (que es lo que crea el nuevo adaptador). Aparecen 3 ventanas seguidas de VirtualBoxInterface y después una de WMI (última línea del log anterior) y si das permiso a esta última vuelven a aparecer otras 3 ventanas de VirtualBoxInterface.

Después de muchas pruebas he descubierto que para que funcione tengo que permitir la ejecución de las ventanas de VirtualBoxInterface y cuando aparece la de WMI cancelar esta última (porque vi que estaba deshabilitando el adaptador). Así ya no aparecen más ventanas de permisos de ejecución y el dispositivo virtual se inicia correctamente.
Logs generados en una ejecución correcta:
Código:
[Genymotion Player:8316] [debug] [VBox] get "VirtualBox Host-Only Ethernet Adapter #3" from host.only.interface
[Genymotion Player:8316] [debug] [VBox] [findHostOnlyInterface] Looking for compatible host-only interface
[Genymotion Player:8316] [debug] [VBox] Call: ("list", "hostonlyifs")
[Genymotion Player:8316] [debug] [VBox] Return code: 0
[Genymotion Player:8316] [debug] [VBox] [getSavedHostOnlyInterface] Checking "VirtualBox Host-Only Ethernet Adapter #3" interface status ( QHostAddress("192.168.157.2") )
[Genymotion Player:8316] [debug] [VBox] [getSavedHostOnlyInterface] "VirtualBox Host-Only Ethernet Adapter #3" Interface seems compatible
[Genymotion Player:8316] [debug] [VBox] Call: ("list", "dhcpservers")
[Genymotion Player:8316] [debug] [VBox] Return code: 0
[Genymotion Player:8316] [debug] [VBox] [checkIfInterfaceHasValidDhcp] "HostInterfaceNetworking-VirtualBox Host-Only Ethernet Adapter #3" DHCP server is associated with "VirtualBox Host-Only Ethernet Adapter #3" interface
[Genymotion Player:8316] [debug] [VBox] [checkIfInterfaceHasValidDhcp] "VirtualBox Host-Only Ethernet Adapter #3" interface is compatible
Como se puede ver en este caso, la primera entrada obtiene el adaptador #3 de host.only.interface y entonces ya no tiene que crear más adaptadores y funciona todo bien.
Al momento de hacer las pruebas, noté que el adaptador #3 no aparecía en los adaptadores como Host-Only Network #3 (Host-Only Adapter #3) sino como Ethernet #3 (Host-Only Adapter #3). Pero ahora sí aparece como Host-Only Network #3.

He borrado todos los adaptadores de VirtualBox que se me habían ido creando durante las pruebas y he dejado únicamente el primero que se crea al instalar VirtualBox y este (el #3) que es el que funciona.
No entiendo por qué con el primer adaptador falla y con este funciona bien. He comprobado que el adaptador 1 estuviese habilitado y con el DHCP habilitado (resumiendo: misma configuración que el #3).
213  Foros Generales / Sugerencias y dudas sobre el Foro / Problema de visualización de la Portada/Inicio en: 28 Noviembre 2020, 09:17 am
Desde que he accedido al foro (hace unas 12 horas) he notado que en mi ordenador no se visualiza bien la página principal (portada) de elhacker.net. La barra superior de: Inicio | Foro | Blog | WarZone |... se ven correctamente pero la imagen superior aparece cortada (solo se ve "cker net").
Además el contenido central de la página aparece dispuesto en vertical (primero la parte que aparecía normalmente a la izquierda: elhacker.NET | Servicios | Descargas | Participa |..., debajo de lo anterior: el tablón de novedades | últimas entradas... | últimas noticias... |..., y debajo de estos últimos: Buscador | Boletín mensual | Estadísticas del Foro |...).

He probado a recargar la página varias veces y siempre se ve igual.
Me parece raro puesto que no he modificado ninguna configuración de mi ordenador. Sin embargo, si bajo el zoom del navegador al 80%, se vuelve a ver como siempre pero si lo dejo al 100% (como lo he tenido siempre) se ve como menciono arriba.

He accedido desde otro ordenador y en este se ve todo correctamente.
¿Alguien sabe por qué puede ser?
214  Programación / Programación C/C++ / Re: Necesito ayuda con un for en: 27 Noviembre 2020, 01:53 am
Bueno, echando un vistazo por encima, veo que ya está algo mejor.
De todas formas empiezo desde el principio:

CABECERAS: Sólo tienes que incluir las cabeceras necesarias, es decir, las que contengan las funciones que tú vas a utilizar. En este caso tienes:
  • stdio.h -> Contiene las funciones de entrada/salida típicas de C (printf()/scanf() /Funciones sobre ficheros en C/...) -> No lo utilizas.
  • iostream -> Contiene las "funciones" de entrada/salida típicas de C++ (cout <</cin >>/...) -> Sí la utilizas.
  • string -> Contiene el tipo de dato std::string, entre otras cosas. -> Sí la utilizas.
  • conio.h -> Contiene entre otras cosas la función getch(). Esta librería no pertenece al estándar y está desaconsejado su uso. Un buen sustituto de getch() en C++ es cin.get() (que pertenece a <iostream>) y en C es getchar() (que pertenece a <stdio.h>). -> No la utilizas y no creo que lo necesites.
  • stdlib.h -> Contiene funciones como system()/srand()/rand() /conversores de tipos/... -> No la utilizas.
Todas las bibliotecas que no utilizas es mejor eliminarlas. Primero para ahorrar espacio ya que cada include lo que hace es copiar el contenido de cada uno de esos ficheros. Y segundo, para sabe cuándo necesitas una u otra biblioteca.
Además todas las que terminan en ".h" son propias de C. Estas también funcionan en C++ pero las propias de C++ se denominan igual pero quitando el ".h" del final y añadiendo una "c" al principio -> cstdio/cstdlib/...

VARIABLES/CONSTANTES GLOBALES/LOCALES
No es recomendable utilizar variables globales. Las variables es mejor crearlas locales a una función y utilizar los parámetros cuando sea necesario para enviarlas a otras funciones.
Sin embargo, es mejor creas constantes globales como si fueran valores de configuración antes que colocar números sueltos por ahí. Así es más fácil modificar el programa. Aunque si se va a inicializar un array al momento de la declaración, no es necesario determinar su longitud ya que esta será la que tenga una vez inicializado.
Además el método tradicional de crear arrays en C/C++ dice que si son estáticas, deben declararse con constantes y no se permiten variables. Para crear arrays con tamaños definidos en tiempo de ejecución hay que usar memoria dinámica.

Por convenio, los nombres de variables/funciones se definen en lowerCamelCase (primera palabra en minúsculas y a partir de ahí cada palabra con la primera letra en mayúsculas) y los nombres de constantes en SCREAMING_SNAKE_CASE (todas las letras en mayúsculas y las palabras separadas por guión bajo _).
Código
  1. const int NUM_ALUMNOS = 2; // Este valor deberia usarse tambien para el array de nombres para asegurar la misma longitud
  2. const int NUM_MATERIAS = 4;

FILTRO DE DATOS
Cuando se quiere pedir un dato hasta que éste sea válido se suele utilizar un filtro do-while(). La estructura do-while() primero ejecuta lo que hay dentro y luego comprueba la condición. Se diferencia del while() en que el código que hay dentro del do{} al menos se ejecutará una vez.
Código
  1. int numero;
  2. bool valido;
  3. do { // Hacer esto...
  4.  cout << "Introduce un numero positivo: ";
  5.  cin >> numero;
  6.  // Si se quiere mostrar un mensaje es mejor crear una variable para guardar la comprobacion
  7.  // Sino tambien se puede poner la condicion directamente en los parentesis del while()
  8.  valido = (numero >= 0);
  9.  if(!valido)
  10.    cout << "El numero debe ser positivo" << endl;
  11. } while(!valido); // ...mientras el numero introducido no sea valido

OTROS ERRORES
  • Las variables i y j de la línea 14 nunca se utilizan. En los bucles de las líneas 20 y 32 estás declarando otras dos que solo existen hasta que acabe cada uno de los for().
  • El bucle de la línea 32 está dentro del if() de la línea 24 por lo que solo se ejecutará bien si de primeras introduces un número de materias no válido. Cuando apliques el filtro do-while() tendrás que poner el for() de la línea 32 después del do-while() para que se ejecute siempre que se tenga ya un número válido.
  • No estás utilizando la matriz notas[][]. Deberías utilizarla para guardar en cada fila las notas de un alumno y en cada columna la nota de una materia. Esto se haría así:
Código
  1. for(int i = 0; i < NUM_ALUMNOS; ++i){
  2.  for(int j = 0; j < NUM_MATERIAS; ++j){
  3.    cout << "Introduce la nota " << (j+1) << " del alumno " << (i+1) << ": ";
  4.    cin >> notas[i][j];
  5.  }
  6. }

Ahora tienes que revisar todas estas cosas que no son pocas e introducirlas en tu programa correctamente.
Suerte. :-X

PD: El bucle for() de la línea 32 debería estar identado al mismo nivel que el bucle while() de la línea 27. No se trata de identar cada fragmento de código más a la derecha sino de mantener una estructura de orden para saber qué cosas están dentro de qué otras cosas y cuáles están al mismo nivel.
215  Programación / Programación C/C++ / Re: Necesito ayuda con un for en: 26 Noviembre 2020, 23:38 pm
Lo primero de todo, el código debes publicarlo entre etiquetas de Código GeSHi. Para ello debes seleccionar el código e ir al desplegable que dice Código GeSHi (encima del cuadro de texto) para seleccionar el lenguaje correspondiente.
También puedes agregar las etiquetas manualmente.

Ese fragmento es una locura de código y la identación de las llaves lo hace todavía más complicado:
  • Líneas 4/5/8/11 -> Utilizas una variable j que no aparece por ningún sitio.
  • Línea 13 -> Declaras una variable j que interferirá con la que tenías antes declarada (en caso de que así fuese).
  • Línea 13 -> Utilizas una variable <materias> que tiene toda la pinta de no estar declarada o inicializada. -> Esto da que pensar que la variable <alumnos> igual tampoco lo está.
  • Utilizas la matriz notas[][] tanto para guardar el número de materias como las notas. Unos datos están sobrescribiendo los otros.
  • El bucle de la línea 13 solo se ejecuta cuando se cumple la condición de la línea 5.
  • La condición de la línea 5 y el bucle de la línea 8 son redundantes. Ese funcionamiento se puede conseguir tan solo con un bloque do-while()

Ahí tienes los errores que veo en ese fragmento.
Intenta solucionarlo y si no lo consigues coloca el código completo (al menos el de esa función) para poder ver lo que está bien y lo que no. Recuerda publicar el código entre etiquetas de Código GeSHi. También puedes explicar con detalles lo que estás intentando hacer.
216  Programación / Programación C/C++ / Re: ayuda con vectores en: 26 Noviembre 2020, 21:19 pm
Esto es porque el prototipo de la función posicion() no tiene parámetros.
La función posicion(string, vector<string>) está implementada después de main() y no está definida antes por lo que no puedes utilizarla dentro del main().

EDIT: En vez de utilizar una variable global <lugar>, haz que la función posicion() devuelva la posición:
Código
  1. int posicion(string, vector<string>);
217  Programación / Programación C/C++ / Re: Arreglos y rangos en: 26 Noviembre 2020, 01:16 am
No entiendo muy bien lo que quieres hacer.
Tienes una serie de notas de 0 a 10 y quieres que el usuario introduzca un valor que será la longitud de cada rango de notas?? Es eso lo que quieres hacer??
De ser así, hay varios factores a tener en cuenta:
  • Lenguaje de programación (C o C++)
  • Qué vas a hacer con esos valores? Basta con mostrarlos o hay que guardarlos para trabajar con ellos más adelante?
  • Qué es la forma más simple posible? En programación hay muchas formas de hacer las cosas y cada una tiene sus cosas buenas y sus cosas malas.

Añade el código de lo que lleves hecho o lo que no consigas hacer para tenerlo más claro.
218  Programación / Programación C/C++ / Re: Código de inventario en C en: 25 Noviembre 2020, 06:30 am
No lo ordena al revés, eso ha sido casualidad por el orden en que los has introducido tú.
Lo que hace en realidad es intercambiar siempre el último con el penúltimo y fin. Esto ocurre principalmente por dos errores:
  • Llaves.
  • Error en la condición del bucle interno.

Tu código (resumido) bien identado para que lo veas es:
Código
  1. void menuOrdenDescrp(){
  2.    // declaraciones y otros...
  3.    // parte del if...
  4.    } else {
  5.        for (i = 0; i<numeroProductos-1; i++){
  6.            strcpy(min, productos[i].descripcion);
  7.            pos=i;
  8.            for (j=i+1; j<numeroProductos-1; j++) // No utilizas llaves. Este bucle solo comprende el bloque del if()
  9.                if (strcmp(productos[j].descripcion , min) < 0){
  10.                    strcpy(min, productos[j].descripcion);
  11.                    pos=j;
  12.                }
  13.        } // este no cierra el for interno porque no usas llaves. Cierra el bucle externo
  14.        temp=productos[i];
  15.        productos[i]=productos[pos];
  16.        productos[pos]=temp;
  17.  
  18.        printf("\n\tDatos ordenados:\n");
  19.        for(i=0; i<numeroProductos; i++){
  20.            printf("\n\t%s\n",productos[i].descripcion);
  21.        }
  22.    } // Cierre del else{}
  23.    getchar();
  24. }
Por lo tanto la ejecución sería:
Código:
i = 0 -> i < productos-1 (2)?? Si -> min = productos[0] (dosis) y pos = 0
  j = 1 -> j < productos-1 (2)?? Si -> productos[1] (botella) < min (dosis) ?? Si -> min = productos[1] y pos = 1
  j = 2 -> j < productos-1 (2)?? No
i = 1 -> i < productos-1 (2)?? Si -> min = productos[1] (botella) y pos = 1
  j = 2 -> j < productos-1 (2)?? No
i = 2 -> i < productos-1 (2)?? No
//FINALIZAN LOS BUCLES Y SE HACE UN SOLO CAMBIO:
temp = productos[2] (caja)
productos[2] = productos[1] (botella)
productos[1] = temp (caja)

Como ves, ahí está el problema. Para encontrar estos errores la gente suele recurrir a un depurador que te muestra el estado de las variables en cada momento y qué instrucción se va a ejecutar. Y sino pues lápiz y papel y a mano como acabo de hacer.

PD: Cuando arregles eso, ten cuidado con el último for() porque al usar la misma variable (i) que en el primero, como metas uno dentro del otro tendrás problemas.
219  Comunicaciones / Redes / Re: [VirtualBox] Adaptadores de Red en: 24 Noviembre 2020, 14:15 pm
Efectivamente en las herramientas de VirtualBox me aparecen los dos adaptadores que veo también desde Configuración - Red e Internet - Estado - Cambiar opciones del adaptador.

Y respecto a lo de que algún programa/extensión puede que me agregue estos adaptadores; hasta ahora pensaba que era Genymotion el único que lo hacía y suponía que sería para asignar dicho adaptador al dispositivo creado desde aquí. Sin embargo, en esta última ocasión ha sido el propio VBox el que me ha creado el adaptador extra.
He comprobado todas las máquinas virtuales por si se hubiese asignado dicho adaptador a alguna de ellas y no es así. Todas las máquinas las tengo configuradas con un único adaptador y están conectados a NAT, no a host-only adapter.

Hay alguna manera de averiguar por qué se están creando más adaptadores??
220  Comunicaciones / Redes / [VirtualBox] Adaptadores de Red en: 24 Noviembre 2020, 00:52 am
He instalado en varias ocasiones VirtualBox en una máquina Windows 10. Me he dado cuenta de que cada vez que instalo VBox, se crea un adaptador de red: <VirtualBox Host-Only Network> (Habilitado). Hasta aquí creo que todo normal.

Sin embargo; en ocasiones, cuando ejecuto VBox, me aparece varias ventanas seguidas solicitando permisos para VBox y en caso de que acepte, me crea otro/s adaptador/es <VirtualBox Host-Only Network #X> (donde X es un número {2, 3, 4, ...}) (Habilitado) y después se inicia el programa en sí.
En cambio si cancelo las ventanas de permisos de VBox, el programa se inicia con normalidad sin crear más adaptadores.
No me queda muy claro por qué se crean más adaptadores de red y por qué esto sólo ocurre en algunas ocasiones.

Empecé a notar esto después de instalar en varias ocasiones Genymotion. La primera vez que lo instalé me pidió permisos de ejecución para VBox y se los concedí porque sino fallaba. Después de eso estuvo una temporada que funcionaba bien y de repente me empezó a pasar como con VBox: en ocasiones cuando ejecuto Genymotion me pide permisos para ejecutar VBox y si no se los doy no puedo iniciarlo. Sin embargo; si se los doy, me salen varias ventanas seguidas seguidas de permisos y me crea un adaptador de red nuevo cada vez que acepto los permisos. Lo peor de todo es que cuando los acepto, Genymotion arranca correctamente pero cuando voy a iniciar un dispositivo virtual, este se queda cargando y nunca llega a iniciar (o salta un error).

He buscado documentación en las páginas tanto de VBox como de Genymotion y en otras páginas pero siempre te explican los tipos de conexión de las VMs y no he encontrado nada sobre este tema. Además no tengo muchos conocimientos de redes por lo que espero que alguien pueda ayudarme con este tema.

PD: Necesito instalar Genymotion pero actualmente lo tengo desinstalado tras haber tenido estos problemas.
Páginas: 1 ... 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 [22] 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 ... 102
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines