Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Desiresportal

#21
Si. La maquina tiene puertos usb, pero no sé tampoco si se puede acceder a la bios para indicarle que inicie desde ahí.

Sé que tiene un conmutador para indicarle que inicie desde la tarjeta SD que se le mete quitando una tapita. Hace tiempo lo hice para reinstalar el sistema operativo del fabricante. Pero ahora no encuentro en internet nada al respecto. Tiene pinta que el fabricante ya no da soporte a estos aparatos.

He probado a ver si podía iniciar la instalacion con un usb booteable, pero no. Lo ha detectado como un usb normal y corriente.

¿Y ahora? Desde la tarjeta SD con el conmutador para que cargue desde ella ya sé que se apaga él solito al ver que la tarjeta SD no tiene lo que él se espera.
#22
Despues de haberlo abandonado al olvido cuando adquirí un portatil mas potente hace ya años, me acordé hace tan solo unos dias de que tenía por casa una maquina de consumo electrico relativamente bajo.

Hace unas semanas terminé escribiendo un programa que no requiere potencia, sino tiempo para llevar a cabo sus tareas. Fue entonces, cuando buscando la forma de dejar funcionando el programa durante horas con el menor consumo electrico posible, recordé tener a mano algo similar a una raspberry pi.

Esta maquina se le parece bastante en especificaciones si no contamos con pantalla, teclado, touchpad, bateria....

El caso es que despues de mas de 5 años el fabricante ya no parece darle soporte. Cuando ejecuto un "sudo apt-get update" me aparecen un porron de alertas diciendo que no puede descargar los paquetes desde una web que tiene pinta de ser del fabricante. Eso claramente es un problemon.

Aparte de intentar instalar el compilador g++ y no conseguirlo, he conseguido compilar en otra maquina el programa para este portatil y que "funcione". El tema es que ahora me aparece como que no tengo instalado el paquete "libstdc++6". Lo he intentado instalar y nada. Me dice que no hay nada que descargar ni instalar.

Hasta ahora he manejado varias opciones que no consigo saber como llevarlas a cabo y cada cual me gusta menos pero tiene pinta de que voy a tener que hacerlas para solucionar los problemas que se me presentan. ¿Que hago?
- Instalarle otro sistema operativo linux no tan capado como el que incluyó el fabricante.
- Cambiar las direcciones de busqueda de paquetes con "sudo apt-get install" para instalar desde las fuentes originales de linux.
- Solucionar solo los problemas que me presenta por ahora el sistema operativo capado y solucionar mas adelante los que se me vayan presentando.

Como comprendereis, prefiero instalar un sistema operativo linux sin limitaciones del fabricante para poder usar la maquina sin muchos mas problemas en el futuro.

¿Me podeis ayudar? ¿Que debería hacer? ¿Por donde debería empezar?

Ya intenté instalar una version de Ubuntu para ARM desde una tarjeta SD booteable. No conseguí nada. La maquina se apagaba automaticamente al no encontrar ningun sistema operativo para cargar.
#23
Gracias al detalle que has mencionado ("elf") he encontrado la solucion en internet.

Todo lo que hacía falta era añadir "-no-pie" en la orden de compilado.

Muchas gracias por la ayuda. Doy el tema por cerrado.
#24
Como he dicho, una vez lo conseguí hacer desde la terminar con g++.

Entiendo lo del numero magico. Algo leí sobre el formato ejecutable de windows y la estructura de los datos internos que contiene un programa.

Seguiré intentando encontrar la forma de hacerlo. Lo de la extension no esperaba que fuese a funcionar.

Gracias de todos modos.
#25
Estoy familiarizado con el comilador g++ que trae Ubuntu. Sé que puedo ejecutar un programa compilado con la terminal desde la propia terminal.

El caso es que lo quiero tener tan facil como hacer doble click. Por el programa que por fin he terminado, por el programa que estoy haciendo ahora y los programas que vaya a hacer en el futuro.

Sé que puedo hacerlo con g++. Compilar en la terminal y obtener un programa que se vé como un rombo morado es algo que hice a modo de pruebas y a dia de hoy no recuerdo cual fue la orden que utilice. Ni siquiera recuerdo donde encontré las instrucciones al respecto. Solo sé que no he vuelto a encontrarlo ni a compilarlo obteniendo un ejecutable con el icono del rombo morado.

¿Cual es el parametro que tengo que poner a g++ para que compile mi codigo C++ creandome un ejecutable que aparece como un rombo morado en el explorador de archivos? ¿Es indispensable hacer la compilacion en dos ordenes haciendo primero el archivo ".o"?

Por ahora solo son programas de consola. No sé si esto es un problema. ¿Puede que una actualizacion haya cambiado algo de g++ impidiendo hacer ejecutables tan facil como antes?
#26
La funcion es simple: teniendo un objeto le quiero aplicar un frame de animacion.

Dado que el motor aún es 2D, la funcion solo recibe el frame a aplicar como argumento y segun la animacion total del objeto hace calculos de interpolacion en todos sus parametros y los aplica para mostrar el frame exigido. Devuelve un booleano para indicar si todo ha ido bien o si algo ha fallado y añade un codigo de error a la lista. Esto ultimo, la gestion de errores por medio de codigos y listas donde se van añadiendo no está listo aún, pero implicarían mas operaciones por funcion y por posible error.

El caso es que las animaciones por ahora solo pueden ser lineales y si añado animaciones curvadas el codigo se va a complicar mas aún.

Quiero hacerlo simple para que llamando una funcion se haga todo. Sino tendría funciones para orientar segun la animacion, para deformar segun la animacion, para mover el UV segun la animacion y eso solo serían tres llamadas en el codigo final cuando con una sería suficiente.

Supongo que puedo dividir las funciones y llamarlas todas una por una con la funcion que tengo ahora. El tema es que no uso funciones publicas y privadas. Eso significa que si hago esas subfunciones me van a aparecer mas sugerencias cuando esté programando el juego que quiera hacer y podría acabar liandome.

De todos modos, fragmentar la funcion general en funciones que despues van a ser llamadas por esta, ¿no supone tambien superar ese limite de instrucciones antes de finalizar la funcion general?

Ahora estoy finalizando un pequeño programa en C++. En cuanto lo termine volveré a tocar Android Studio y pondré a prueba lo de la fragmentacion de las funciones. En cuanto sepa el resultado te comento y si me surgen mas dudas vuelvo a preguntar aqui mismo.

Gracias.
#27
Hace ya bastante tiempo desarrollé una version de pruebas de mi motor de juegos para Android. La idea era comprobar la viabilidad de desarrollar un motor de juegos en Android Studio cuyo funcionamiento fuese muy similar al que ya logré en C++ o en javascript.

Por supuesto encontré algunos obstaculos y algunas capacidades extra que por ejemplo javascript no me podía ofrecer (al menos en entorno web).

Una de las partes que me chocó fue hacer una funcion (o metodo) tan larga que me saltó el siguiente mensaje al compilarlo: "I/art: Method exceeds compiler instruction limit: 17940 in boolean miFuncion(int)". Al parecer no salta siempre. Solo cuando la funcion supera cierto punto en la ejecucion de sus instrucciones.

Al final el juego se ejecuta, pero hay ciertas instrucciones de la funcion que jamas llegarán a cumplir su objetivo. ¿Alguna sugerencia? ¿Alguna que no implique hacer un conjunto de funciones mas pequeñas y complicar mas aún el codigo fuente?

Supongo que se puede configurar el compilador para no tener ese limite ya que si se tratase de un error propiamente dicho ni siquiera me daría el juego compilado.

Debo añadir que en lugar de crear clases y metodos me lié a hacerlo todo con un solo script y como consecuencia tengo un codigo fuente de mas de 5000 lineas que a Android Studio le cuesta un poco procesar con un Core i3 para colorear las fuentes y demas. ¿Eso puede ser un problema? Aunque la programacion podría considerarse que no esta orientada a objetos, el funcionamiento del motor es simple ya que funciona casi como una maquina de estados. Me basé en OpenGL ya que así lo veia mas facil.

En resumen: me alarma mucho que una funcion larga impida el correcto funcionamiento del juego final. ¿Hay alguna forma de evitarlo? ¿Alguna que sea facil, no implique dividir la funcion en funciones mas pequeñas y que tampoco implique crear un proceso en segundo plano?

Un saludo y gracias.
#28
Acabo de programar una solucion al respecto. No es bonita, pero es mejor que no tener nada.


timeval lastCorrectRecv;
timeval currentTime;
unsigned int timeToLoseConnection;

/* Cuando se detecta que se han leido datos */
gettimeofday(&lastCorrectRecv, NULL);

/* En cada vuelta del bucle que comprueba "select()" */
gettimeofday(&currentTime, NULL);

/* Yo lo uso justo despues de la linea anterior */
if (currentTime.tv_sec - lastCorrectRecv.tv_sec > timeToLoseConnection) {
     // Conexion supuestamente perdida.
}


Por supuesto, tambien hago las comprobaciones de que "select()" confirme la desconexion del socket para no tener que esperar los 120 segundos (2 minutos) que pongo como margen por defecto.

De todos modos. Sigo a la espera de una forma mas limpia y rapida de detectarlo.


PD: Si me he equivocado en algun caracter al escribir, lo siento. Estoy haciendo esto con prisas y con el movil, de modo que se me puede haber colado algo.
#29
Buenos dias.

Estoy tratando de hacer un programa para conectarse a internet y recibir los datos de una URL por medio de los sockets. Todo programado a lo "bestia". (Usando los sockets directamente sin librerias que me lo faciliten)

El caso es que haciendo pruebas me he dado cuenta que el programa tarda muchisimo en darse cuenta que la conexion se ha perdido. Supongo que eso es bueno para conexiones lentas. Para que la espera prolongada de una respuesta con una conexion lenta no sea sinonimo de desconexion. Pero yo quiero que no tarde tanto. Sobre todo cuando descargo una pagina web desde una URL cuyo header no indica el tamaño de lo que va a descargar.

¿Como detecto la desconexion del socket o la perdida de la conexion del equipo a internet?

Para las pruebas uso ubuntu, programo en C++, uso el comando "select()" para usar sockets no bloqueantes (este comando es totalmente nuevo para mi) y uso el movil para dar wifi al portatil. Para forzar la perdida de conexion del programa apago la zona wifi del movil. Aún no he logrado que esta forma de forzar la desconexion haga que mi programa deje de intentar seguir recibiendo datos. (Lo he dejado en bucle con "select()" y un contador durante mas de 10 minutos. No se ha bloqueado, pero tampoco ha detectado la perdida de la conexion.)

Un saludo y gracias de antemano.
#30
Java / Re: Duda: ¿Como hago esto en Java?
14 Marzo 2018, 12:12 PM
Me ha funcionado a la perfección. Muchas gracias por la ayuda. Seguro que vuelvo con mas dudas otro día.

De nuevo: gracias.