Archivo

Archive for the ‘Javascript’ Category

Subir ficheros mediante Ajax, JQuery y HTML5

HTML 5

La quinta versión de HTML nos ha traído grandes novedades haciéndonos la vida mucho más fácil a los desarrolladores webs. Una de estas novedades es poder enviar ficheros mediante Ajax, algo que no era posible en versiones anteriores y requería recurrir a trucos como iframe oculto o usar flash.

Gracias a la clase FormData podremos crear un “pack” datos e enviarlos mediante Ajax de forma muy simple.

Os voy a enseñar como mandar un formulario con un fichero de forma muy sencilla usando JQuery y HTML5. Leer más…

Reutilizando objetos para ahorrar tiempo y memoria en Java

25 septiembre, 2011 3 comentarios

Aunque lo comento a raíz de una optimización que estoy realizando en una aplicación Android, es aplicable a Java y cualquier otro lenguaje.

Por lo general, estamos acostumbrados a crear objetos cada vez que lo necesitemos y a destruirlos una vez que ya no nos hagan falta, sin embargo, esto no es muy adecuado cuando vamos  a crear muchísimos objetos y a destruirlos tras un breve uso, pues el sistema tendrá que buscar un hueco de memoria, reservarlo, usarlo y borrarlo en cada ocasión.

Para solventarlo, lo mejor es reciclar objetos, lo cual se hace de una forma MUY sencilla.

Supongamos que tenemos un objeto Bala de un juego de disparos, del cual sabemos que crearemos miles y miles a lo largo de una partida. Podría ser algo así:


public class Bala {

    private int x;

    private int y;

    private float direccion;

    public Bala(int x, int y, float direccion) {

        this.x = x;

        this.y = y;

        this.direccion = direccion;

    }

}

Evidentemente necesitaría unos cuantos métodos más como el avanzar y tal, pero eso no nos concierne ahora, lo que nos preocupa es como poder volver a utilizar este objeto una vez no nos haga falta, como en nuestro caso, una vez choque contra el enemigo o salga de la pantalla.

El sistema es simple, una vez un objeto no lo necesitemos más, en vez de borrarlo, lo reciclamos y lo guardamos para cuando necesitemos uno nuevo.

Después, cuando necesitemos un objeto de este tipo, en vez de crearlo, miraremos si tenemos alguno guardado y si es así lo devolvemos, si no, creamos uno.

La clase finalmente podría quedar así:


public class Bala {

    private int x;

    private int y;

    private float direccion;

    private static LinkedList<Bala> balas = new LinkedList<Bala>();

    public Bala(int x, int y, float direccion) {

        this.x = x;

        this.y = y;

        this.direccion = direccion;

    }

         //Método estático que usaremos para obtener nuevas balas
         public static Bala getBala(int x, int y, float direccion) {

              //Si no tenemos elementos reciclados, creamos uno nuevo

           if (balas.isEmpty())

                 return new  Bala(x, y, direccion);

            //Si hay elementos, sacamos uno de la lista. Le ponemos los valores y lo devolvemos

            Bala bala = balas.removeFirst();
            bala.x = x;
            bala.y = y;
            bala.direccion = direccion;
            return bala;
     }

      //Una vez añadimos uno a reciclar NO debemos volver a usarlo, pues podríamos estar
      //usándolo en dos sitios distintos a la vez...
      public void reciclar() {
          balas.add(this);
      }
      //Cuando sepamos que no vamos a necesitar más ningún elemento, podemos borrar la lista
      //para no seguir almacenándolos en memoria.
      public static void borrarRecicladas() {
           balas.clear();
       }

}

Como podéis ver, la idea es muy simple y muy útil. Dependiendo de vuestras necesidades podéis modificarlo, como no guardar más de un máximo de elementos o borrarlos todos cada cierto tiempo.
En fin, espero que os sea de utilidad.

Android, PHP y JSON

Pues mi primer proyecto para Android fue la programación de un Tagboard para la web de Oberón, y para ello estuve viendo diferentes formas de realizar la comunicación con el servidor, y entre todas, me qué finalmente con el JSON.

Leer más…

Categorías:Android, Java, Javascript, PHP, Programación Etiquetas: , ,