18 de abril de 2015

Web hosting with Google Drive


Nota: esto ya no es posible hacerlo, Google desactivo esta opción de montar un sitio web estático.

Google Drive es un servicio de alojamiento de archivos, que permite hacer varias cosas como:

  • Crea y editar documentos en linea (tipo word, excell...).
  • Alojar archivos.
  • Compartir documentos.

Pero la opción de compartir documentos tiene una opción extra, permite crear un simple web hosting, aclarando que solo es para paginas html, no para script del lado del servidor como PHP y otros.


Pasos para crear el sitio:


  1. Tener un cuenta de Google para acceder a Drive.
  2. Crear una carpeta que alojara los archivos.
  3. Copiar todo el contenido del sitio a la carpeta creada.
  4. Compartir la carpeta,  en opciones avanzadas, se da la opción de   "Publico en la Web" (Public on the web). 
    Shared settings - Google Drive
  5. Copiamos el ID del documento (carpeta)  y formamos la url:  https://googledrive.com/host/[ID] (Ejemplo: https://googledrive.com/host/0B1UuN47iU4Usfjh0a3ZDOFhlLS1meXpCcXptWWlRYVYzWm44eElqRkh3ODZQb3l4bFVlYjA ).
  6. Usar un acortador de url, para tener una dirección mas corta como el de Google url shortener y la dirección de nuestro sitio quedaría así:  https://goo.gl/rTZYyJ
Ejemplo con Bootstrap



Notas y referencias





15 de marzo de 2015

Java Thread


Thread: Crear aplicaciones cocurrentes.

La implementacion de hilos en Java se puede hacer de dos formas:
  • Heredando de la clase Thread
  • Implementando la interface Runnable
 La forma recomendad para hacerlo es implementando la interface Runnable. Pero esto genera dos dudas:
  • Como iniciarlo.
  • Como detenerlo.
 El inicio es sencillo:

        Thread myThread = new Thread(new MyThread());
        myThread.start();
       

 Como detenerlo es lo complicado, pero no lo es, la clase Thread proporciona un metodo stop(), pero este ya no se debe usar, es inseguro y puede que no detenga el hilo de forma apropiada.

Una forma recomendada es usar el metodo interrupt(), pero hay que implementarlo bien, para que el hilo se pueda detener. Se deben tener en cuenta lo siguiente:
  • Tener una variable (flag) para saber cuando se debe detener el hilo.
  • Controlar las excepciones tipo InterruptedException
  • Estar preguntando si el hilo donde se esta ejecutando fue interunpido.

Ejemplo:

 public class MyThread implements Runnable {

    private volatile boolean stop = true;

    @Override
    public void run() {
        stop = false;
        while (!stop) {
          
            try{
                Thread.sleep(1000);
            }catch(InterruptedException interruptedException){
                stop = true;
            }

            if (Thread.currentThread().isInterrupted()) {
                stop = true;
            }
        }//End While

    }//End run

}//End class

Tenemos la varible "stop" de tipo boolean y "volatil", con la cual vamos a detener el while y parar el hilo.

Si tenemos un Thread.sleep, se debe controlar la excepcion arrojada, porque si el hilo fue interrumpido la excepcion es arroja, y esto quiere decir que el hilo lo estan intentado detener.

Se esta preguntando con el llamado "Thread.currentThread().isInterrupted()", para saber si fue interrumpido, si este fue interrumpido, se debe controlar la terminacion del hilo. Tener en cuenta que es posible usar "Thread.interrupted()" para saber si fue interrumpido,  pero cambia el valor de la bandera (flag) interna del la clase Thread y puede afectar posteriores llamados, Thread.currentThread().isInterrupted() solo obtiene el valor mas no lo cambia.

Y para terminar el hilo solo se debe llamar:

myThread.interrupt();

Hilo Terminado.


Referencias:

8 de febrero de 2015

Ctrl+C (SIGINT) in Java


Capturando el evento de apagado (shuts down) de la maquina virtual de Java.

Esto sucede cuando:

* Un programa finaliza normalmente  o  System.exit
* O cuando se presiona Ctrl + C  (^C), equivalente a la señal SIGINT

Java proporciona una forma de obtener este evento:

De la clase Runtime el método:


public void addShutdownHook(Thread hook)

Proporciona una forma de ejecutar una porción de código antes que termine el programa.

Recibe como parámetro un Thread instanciado sin iniciar.

Una forma sencilla de hacerlo es:


Runtime.getRuntime().addShutdownHook(new Thread() {
      public void run() {
              /* 
my shutdown code here */.
    }
});


Nota: Solo se puede obtener una vez, así que antes de terminar el aplicativo se debió escribir esa linea de código.

Referencias: