Instalar Piwik - Web analytics open source



   Hoy os traigo una herramienta de analítica web open source (gratuita y código abierto). Esta herramienta se llama piwik y su punto fuerte es que da el control absoluto de todos los datos, además de respetar la privacidad.



   En esta entrada os voy a explicar su instalación. Es una instalación muy sencilla como podréis comprobar al final.

   Nos descargamos piwik de la página oficial y descomprimimos la carpeta. Los archivos que hay en la carpeta piwik tenemos que copiarlos en una carpeta que se llame analytics en la raíz principal donde esté nuestra web. Si lo tenemos en un hosting subiremos los archivos por ftp (utilizando filezilla por ejemplo).


   Ahora escribimos en el navegador la dirección de nuestra web más /analytics (www.webejemplo.com/analytics) y nos saltará en instalador.


   En el siguiente paso se comprueban los requisitos del sistema. Si está todo OK, aparecerán con la flecha en verde. Si alguno falla nos saldrá como solucionarlo. Los requisitos principales para instalar piwik son:

  • PHP 5.3.3 o superior.
  • MySQL 4.1 o superior.
  • Servidor web Apache, Nginx,IIS, etc.
  • PHP extensión pdo y pdo_mysql.
  • Extensiones recomendadas: php5-curl, php5-gd, php5-cli, php5-geoip.
  • Se recomienda crear una BD sólo para piwik (si no hay más remedio puede ser la misma que la de la web).
  • Crear un usuario y password de la BD MySQL con permisos para crear y modificar datos de la BD.


   A continuación nos pide el servidor de la base de datos y el usuario y contraseña que hemos tenido que crear para tener acceso a las tablas de piwik y el nombre de la base de datos.



   Ahora nos pide crear un super usuario. Este usuario es distinto al de la base de datos, es un usuario para gestionar piwik y con el que nos vamos a loguear para ver las analíticas.


   Indicamos el nombre del sitio web, la url, la zona horaria y si se trata de un sitio ecommerce o no.


  Para finalizar nos aparece el script configurado para poner en nuestra web. Tenemos que ponerlo en la cabecera de la página principal. Este código sirve para que piwik rastree nuestra web y genere todos los datos y estadísticas que más tarde podemos consultar.



   En la última pantalla nos dice si ha ido todo correctamente. También hay dos casillas marcadas, que son para habilitar el soporte Do Not Track ( que si un usuario tiene configurado en el navegador que no quiere ser rastreado, piwik no rastreará a ese usuario); y la otra opción es para ocultar la dirección IP del visitante.


   Si le damos a Ir a Piwik nos salta la pantalla para loguearnos.


   Después de autenticarnos nos aparecen la vistas de piwik con todos los datos analizados. Aquí tenéis la demo que facilita piwik para observar como serían las vistas:


   Piwik dispone de una api, para configurar los parámetros para configurar las estadísticas como queramos y también para el rastreador. Además dispone de una API para desarrolladores y podemos crear nuestras propias consultas a la BD.

Reportes con JasperReports e iReport: pasar parámetros con Datasources sin conexión a una BBDD - Netbeans 8



   En este post vamos a ver como se pasan parámetros desde java al reporte sin necesidad de una conexión a una BBDD, es decir, podemos pasar los parámetros que queramos.

   Vamos a comenzar creando un proyecto nuevo (File/New Project) y una clase en java que utilizaremos para instanciar objetos ( botón derecho en el paquete y New/java Class) y así pasar los datos al datasource. Para usar de ejemplo, hemos creado la clase Asistentes.

public class Asistentes {
    
    private Integer id;
    private String nombre;
    private String apellidos;
    private String dni;

    public Asistentes(){        
    }    
   
    public Asistentes(int id, String nombre, String apellidos, String dni) {
        this.id = id;
        this.nombre = nombre;
        this.apellidos = apellidos;
        this.dni = dni;
    }

    public int getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }
  
    public String getApellidos() {
        return apellidos;
    }
  
    public void setApellidos(String apellidos) {
        this.apellidos = apellidos;
    }
   
    public String getDni() {
        return dni;
    }

    public void setDni(String dni) {
        this.dni = dni;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
    
}

   Esta clase tiene cuatro atributos, constructor por defecto y constructor parametrizado. También debemos incluir los getters and setters ya que los atributos son privados y necesitaremos asignar esos valores.

   A continuación vamos a crear el reporte. Para ello botón derecho en el paquete y nuevo Empty report.


   Para editar el reporte vamos a utilizar el programa de iReport, que previamente lo tenemos que tener instalado ( a parte del plugin de iReport para netbeans). Os lo podéis descargar del siguiente enlace:



   En nuestro reporte vamos a asignar etiquetas para las columnas y para el nombre del reporte. Esto se hace con Static Text (Paleta que está a la derecha).


   Para asignar los valores que van a ir rellenando las diferentes columnas tenemos que crear unas variables y unos campos. Estos campos se crean pinchando botón derecho en Fields/Agregar Field. Hay que asignarles el tipo de dato (java.lang.String, java.lang.Integer o el que sea), y debe de coincidir con el tipo de dato que le pasemos en el programa principal, en este caso con el tipo de datos de las variables de nuestra clase Asistentes.



   Una vez creados todos, pinchamos y los arrastramos al reporte. Así quedaría el nuestro:



   Muy bien, ahora hay que crear la clase para pasar estos datos. Esta clase tiene que implementar la clase JRDataSource, y tiene dos métodos que son obligatorios sobreescribir, el método next() y getFieldValue(JRField jrf). En el método next incrementará el contador y JasperReport sabrá cuantos Asistentes van a existir. El método getFieldValue asignará los valores a los Fields correspondientes.

   A parte en esta clase vamos a crear una variable que será una lista de Asistentes y también un método para ir agregando cada asistente a la lista. La clase quedaría así:

public class AsistentesDataSource implements JRDataSource{

    private List<Asistentes> listaAsistentes = new ArrayList<Asistentes>();
    private int indiceParticipanteActual = -1;
 
    @Override
    public boolean next() throws JRException {
       return ++indiceParticipanteActual < listaAsistentes.size();
    }
 
    public void addAsistente(Asistentes Asistente){

        this.listaAsistentes.add(Asistente);

    }

    @Override
    public Object getFieldValue(JRField jrf) throws JRException {
       Object valor = null;

        if ("id".equals(jrf.getName())){

            valor = listaAsistentes.get(indiceParticipanteActual).getId();

        }
        else if ("nombre".equals(jrf.getName())){

            valor = listaAsistentes.get(indiceParticipanteActual).getNombre();

        }
        else if ("apellidos".equals(jrf.getName())){

            valor = listaAsistentes.get(indiceParticipanteActual).getApellidos();

        }
        else if ("dni".equals(jrf.getName())){
            valor = listaAsistentes.get(indiceParticipanteActual).getDni();
        }

        return valor;
    }
 
}

   En el main() tenemos que inicializar jasperreport y la clase Asistentes. También crear los objetos y pasarlos al datasource además de crear el reporte. El método main() quedaría de la siguiente forma:

public static void main(String[] args) {
        // TODO code application logic here
       
        InputStream inputStream = null;
        JasperPrint jasperPrint= null;
        AsistentesDataSource datasource = new AsistentesDataSource();
       
       
        for(int i = 0; i<=5; i++){
           
            Asistentes asist;
            asist = new Asistentes(i, "AsistenteNombre de "+i,"AsistenteApellidos de "+i, "Asistente dni de "+i);
            datasource.addAsistente(asist);
           
        }
       
       try {
            inputStream = new FileInputStream ("src/reportes/reporte01.jrxml");
        } catch (FileNotFoundException ex) {
           JOptionPane.showMessageDialog(null,"Error al leer el fichero de carga jasper report "+ex.getMessage());
        }
       
        try{
            JasperDesign jasperDesign = JRXmlLoader.load(inputStream);
            JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
            jasperPrint = JasperFillManager.fillReport(jasperReport, null, datasource);

            JasperExportManager.exportReportToPdfFile(jasperPrint, "src/reportes/reporte01.pdf");
           
         
        }catch (JRException e){
            JOptionPane.showMessageDialog(null,"Error al cargar fichero jrml jasper report "+e.getMessage());
        }
       

    }

      Ejecutamos el proyecto ya tenemos nuestro reporte:


   Hay problemas con la versión de iReport y Windows. Al ejecutar el proyecto  nos puede aparecer dos tipos de errores.

  • Error uuid: no está permitido que el atributo uuid aparezca en el elemento jasperreport
  • Error cast: can not cast from Integer to String.



   Para el error del uuid simplemente en la vista del xml del reporte hay que borrar todos los campos donde venga el uuid. Para el error del cast, hay que añadir en los <textFieldExpressions> la clase correspondiente (String, Integer,Float,...)


   Podéis descargaros el proyecto en GitHub -> Reportes GitHub

Oculus Rift DK2: no enciende LED Positional Tracking

   

   Mucha gente que se ha comprado las oculus rift tiene problemas con el positional tracking, es decir, no se les enciende el led por lo que no parece que no funciona o no lo detecta el ordenador. No tiene por que ser así, lo que ocurre es que ha habido algún tipo de problema en el registro y no la detecta.

   A mi me ha pasado. Al principio si se me encendía pero ha llegado un momento en el que dejó de hacerlo y no sé por qué. Buscando en internet encontré con una solución en el foro de las oculus rift (inglés) para windows, así que en esta entrada os lo voy a explicar en español.

   Podéis probar las Oculus en otro equipo por si queréis comprobar que el positional tracking funciona

      PASOS A SEGUIR      

1 - Desenchufar las oculus del equipo, desinstalar el runtime, los drivers y reiniciar el equipo.


2 - Reinstalar el runtime sin enchufar las oculus al equipo. Es importante que no las enchuféis todavía.

3 - Reiniciar el equipo de nuevo.

4 - Ir al siguiente directorio: C:\Windows\System32\DriverStore\FileRepository\riftenabler.inf_amd64_neutral_91395412451e34f6

5 - Click derecho en Riftenabler.inf y elegir instalar.


6 - Ir al registro y localizar: @ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E968-E325-11CE-BFC1-08002BE10318}
Ponemos en el inicio "regedit" y se nos abre el registro.


7 - Tiene que poner UpperFilters ... RiftEnabler y no tiene que venir ninguna clave con "LowerFilters". Si acaso pone algo con LowerFilters, hay que borrarlo.

8 - Reiniciar de nuevo.

9 - Conectar las Oculus Rift al equipo, pero sin conectar la cámara-tracking, es decir, el cable del tracking tiene que estar desconectado tanto de las Oculus como del equipo, únicamente hay que conectar las Oculus Rift al PC.

10 - Abrir Rift Display Mode de las Oculus Rift y elegir el modo de escritorio extendido. El ordenador debería de reconocerlas como otro monitor.


11 - En administrador de dispositivos (Propiedades-Equipo) expandimos Monitores y nos tiene que aparecer como Monitor PnP genérico. Le damos con el botón derecho/propiedades/Drivers y nos debería de aparecer el autor Microsoft. Si hay otro autor (por ejemplo logmein o teamviewer) hay que darle a Actualizar drivers/Buscar en el computador y elegir vosotros el de PnP genérico.


12 - En Configuration Utility de las Oculus os tiene que reconocer el número de serie de éstas. Si os pone HMD no conectado pueden pasar varias cosas. O bien no habéis hecho los pasos correctamente o hay que conectar las Oculus en otro puerto usb. Si no os las reconoce ahora no sigáis con las instrucciones.


13 - Una vez que las Oculus Rift están conectadas correctamente, tenemos que conectar la cámara-tracking en el equipo. Sólo en el ordenador, NO conectéis el cable sync en las Oculus.

14 - Volver al administrador de dispositivos, localizar la cámara en los dispositivos de imagen y pinchar con el botón derecho y elegir propiedades/administrador de energía. Hay que desmarcar la casilla que pone: permitir que el equipo apague este dispositivo para ahorrar energía.


15 - Si no os lo muestra como conectado (no confundir con que se encienda la luz), hay que reiniciar el servicio.


16 - Si sigue sin mostrarla como conectada, hay que probar en otro puerto usb o no se han seguido los pasos bien. Si no hay manera de que os la muestre como conectada, no podéis seguir los pasos que quedan.

17 - Lanzar la demo de las oculus dentro de Configuration Utility.

18 - Mientras estamos en la demo, enchufar el cable sync de la cámara-tracking en las Oculus. Positional tracking debería funcionar. Si no es así, hay que salir de la demo y volver a entrar. Si aún no se enciende, reiniciar los servicios y a probar otra vez.



Este es el enlace original del foro de las Oculus Rift:  Blue LED

Configurar Cobian Backup 11 para realizar copias de seguridad



   En la entrada anterior expliqué como instalar el programa. Ahora vamos a configurarlo para realizar copias de seguridad periódicas.

Instalación Cobian Backup

   Abrimos Cobian Backup 11 que estará en el menú de inicio rápido. Le daremos al botón + para crear una nueva tarea.


   En la primera pestaña, General, le daremos un nombre a la tarea y elegiremos unas opciones generales. He desactivado la casilla Usar Volume Shadow Copy.


   Después, en la pestaña de ficheros seleccionaremos los ficheros o carpetas de los que queremos crear la copia de seguridad y el destino dónde queremos guardarla.


   A continuación elegimos el horario, es decir, el tipo de copia (semanal, mensual, sólo una vez...), los días y la hora de realización de la copia de seguridad.


   En la pestaña Dinámica podemos elegir la prioridad que queremos darle a nuestra copia de seguridad.


   La última pestaña que vamos a ver es la de Archivo. Podemos elegir si queremos comprimir la copia y también el tipo de cifrado. El cifrado que realiza cobian backup es el cifrado AES con diferente tamaño de bits. El tipo de compresión puede ser zip o 7zip.


   En el resto de opciones (Filtro, Eventos y Avanzado) podemos configurar otras opciones como por ejemplo si queremos excluir ciertos archivos.

   Ya tenemos creada nuestra tarea. Podemos esperar a que se ejecute en la hora indicado o si queremos comprobar que funciona correctamente se puede lanzar de forma manual pulsando en el botón azul de play.



Pintar Escena de Super Mario Bross en la pared

   Hace dos veranos decidí pintar en el muro de mi jardín una escena de Super Mario Bross. Me gusta mucho Super Mario, sobretodo el personaje de Yoshi (le puse el nombre a mi perro), y por eso tenía ganas de pintar algo sobre el juego. Tenía muchas ideas para pintar y muchas escenas, pero evidentemente no coge todo en el muro jeje.

   Los personajes elegidos fueron yoshi, dos goomba, una planta carnívora y por supuesto a super Mario.

   La pintura elegida para hacerlo fue pintura acrílica porque resiste mejor el agua y se deteriora menos. Si supiese pintar con sprays lo hubiese hecho como un graffiti, pero todavía no sé hacer de eso así que lo hice con pinceles.


   Una vez compradas todas las pinturas y pinceles, lo primero que hice fue marcar el dibujo que quería con tiza en el muro/pared. Hay que decir que el muro no consiste en una pared blanca sino que son ladrillos de estos pequeños, por lo que pintar se complicaba un poco.




   Después pinté el cielo y la parte de abajo y dejé solo las siluetas de los muñecos.


   A continuación tocó pintar los muñecos.


   Por último pinté los detalles y los bordes en negro de todos los personajes.


   Tardé tiempo en hacerlo todo pero ha merecido la pena. Espero que os guste :) .

Guía de instalación de Cobian Backup 11


 
   Cobian Backup es un programa para Windows para realizar copias de seguridad de nuestro equipo o una red local. Consume muy pocos recursos y se ejecuta en segundo plano. Soporta diferentes métodos de cifrado y compresión y nos lo podemos descargar gratuitamente en el siguiente enlace:

Descargar Cobian Backup 11 (Gravity)

   Una vez descargado procedemos a instalarlo. Las primeras pantallas son de selección de idiomas, condiciones y directorio donde instalar.





   El programa nos ofrece tres tipos de instalación:

  1. Aplicación (auto-inicio para todos los usuarios).
  2. Servicio.
  3. Aplicación (sin auto-inicio.).
   Deberemos escoger la opción que más nos convenza. Si vamos a realizar tareas de copia de seguridad periódicas elegiremos una de las dos primeras opciones (yo elegí como servicio). Si sólo vamos a realizar copias de manera exporádica elegiremos la última opción (aplicación sin auto-inicio).  También te pregunta por usar una cuenta del sistema local o poner nombre del dominio.


   Si elegimos la opción de usar cuenta de Sistema Local nos sale un mensaje de advertencia. Le indicamos qué si. De todos modos esta opción se puede cambiar después en la configuración del programa.



   Ya tenemos listo nuestro programa para realizar copias de seguridad.