domingo, 27 de octubre de 2013

Ganar dinero por leer publicidad

Con Internet es posible ganar algo de dinero y aunque no se trate de grandes cantidades nunca viene mal algo de dinero extra. Es por ello que voy a comentar en este artículo algunas páginas que nos pagan por leer correos publicitarios o que en su defecto realizan sorteos cada cierto tiempo, ya sea de dinero o de premios.

ClickXti. Esta se trata de una página en la cual una vez que nos damos de alta nos empezarán a llegar correos, cuando estos nos llegan debemos visitar la web que nos indica, cada vez que hacemos esto ganaremos un cierto número de lo que denominan clicks. Cuando se alcanza un número de clicks puedes pedir que te realicen el pago. Esta es una de las páginas que yo he probado personalmente y he recibido ya un pago, por lo que en este caso puedo decir que su funcionamiento es correcto. Para darte de alta pulsa aquí. Hay que tener en cuenta que puedes invitar a amigos a apuntarse y por cada click que estos hagan tú también ganaras algo. Por cada 1000 puntos ganas 1 euro.

SumaClicks. Esta página funciona de manera exactamente igual a la anterior. Por mi parte la he probado, aunque aún estoy pendiente de obtener el número de puntos necesarios para pedir el primer pago, ya os contaré cuando cobre algo. Puedes darte de alta aquí. Al igual que en el anterior pudes invitar a amigos y ganar también con ello.

Es Facil. Acabo de darme de alta en esta página para probarla. En un principio parece que el funcionamiento es similar a los anteriores. Según la información de la web cada vez que pulsas sobre el anunciante de uno de los correos que te lleguen ganaras un mínimo de 0,003€. Como en los anteriores podrás ganar dinero también si tus amigos y conocidos también se apuntan. Para darte de alta pulsa aquí.

Consupermiso. Es similar a las ya vistas con anterioridad, pero este tiene una serie de características que son interesantes:
  • Puedes definir un tope de mensajes a recibir al mes.
  • Te da la posibilidad de recibir también publicidad a través del móvil.
  • Te permite seleccionar los temas sobre los cuales quieres recibir publicidad. 
  • Puedes recibir también encuestas de modo que ganaras hasta 1 euro por encuesta realizada. 
Para darse de alta pulsa aquí.

LeePubli. En este caso ganas dinero por:
  • 2 euros al registrarte.
  • Por leer correos.
  • Por visitar páginas web.
  • Por referidos hasta 4 niveles.
De momento me he dado de alta en la página y ya veremos cómo va. La primera impresión es que hay muchas maneras de ganar dinero con la página aunque su diseño, desde mi punto de vista y teniendo en cuenta que llevo bastantes años dedicándome al desarrollo de aplicaciones web para empresas, es un poco caótico (pero bueno para gustos los colores).

PremioFacil. En este caso no ganas dinero directamente sino que ganas participaciones para un sorteo para una tarjeta de regalo de 500 euros que se realiza cada cierto tiempo. Para darte de alta pulsa aquí

PremioOferta.  Su funcionamiento es igual que el de PremioFacil, en este caso se realizan sorteos de un cheque regalo de 250 euros. Puedes darte de alta aquí.

LatteScreen. En este caso se trata de una aplicación que sustituye la pantalla de bloqueo de tu móvil por un anuncio publicitario, el tipo de anuncio dependerá de tus preferencias, de modo que se adaptarán a tus gustos en lo posible. Cuando desbloquees el terminal se te dará la opción de visitar al anunciante o desbloquear el móvil normalmente, en cualquiera de los casos ganaras algo de dinero, aunque será mas si visitas al anunciante. De momento no me he dado de alta en este así que no os puedo comentar mucho más.

Iré añadiendo nuevos enlaces según vaya viendo.


sábado, 26 de octubre de 2013

Ejecución de procesos con crontab en linux

En la aterior entrada comenté como realizar la planificación de procesos a través de un EJB.  Sin embargo es posible que en ciertas ocasiones lo que necesitemos sea ejecutar periodicamente algún script o programa que realice una tarea. En ejemplo podría ser el ejecutar un script que cada cierto tiempo realice una limpieza de archivos temporales.

En el caso de linux tenemos el comando crontab que nos permite registrar la ejecución de un proceso cada cierto tiempo a través de expresiones cron.

Una expresión cron es un estandar para definir momentos periodicos en lo que lanzar un proceso. 

El funcionamiento del comando crontab es muy sencillo. Por un lado tenemos:

 
$ crontab -l
 

El cual nos mostrará una lista de lista de tareas registradas mediante el comando crontab asociados al usuario activo en el momento. En el caso de que el usuario con tenga ningún proceso registrado entonces aparecerá el mensaje no crontab for usuario.


 
$ crontab -l
$ no crontab for luis
 

por otro lado para añdir un nuevo proceso a ejecutar tenemos:

 
$ crontab -e
 




Esto abrirá un editor donde poder introducir un nuevo proceso. Simplemente será necesario añadir una nueva línea con una expresión cron y el comando a ejecutar.



  Minuto    Hora    Día_Mes    Mes    Día_de_la_semana    Comando
   *     *     *     *       *        comando_a_ejecutar


Veamos algunos ejemplos de expresiones cron:

Ejecutar un proceso todos los días a las 12:30 horas



 20 12 * * * comando_a_ejecutar
 

 Ejecutar un proceso cada 15 minutos


 Opción 1:

  0,15,30,45 * * * * comando_a_ejecutar

 Opción 2:

  */15 * * * * comando_a_ejecutar
 

Ejecutar un proceso todos los lunes a las 12:30


 20 12 * * 1 comando_a_ejecutar
 

Como he comenatdo con anterioridad con crontab -e se nos abre un editor para añadir o modificar la lista de procesos registrados. Sin embargo también es posible tener un archivo con los procesos que se desemos que ejecute el crontab y registrarlos. Para ello usar:


 $ crontab nombre_archivo
 

Existe un archivo de ejemplo: /etc/crontab


 

martes, 22 de octubre de 2013

Planificador de tareas a través de EJB

En ciertas ocaciones necesitamos que ciertas tareas se ejeuten cada cierto tiempo o en monentos determinados.

Supongamos por ejemplo que tenemos que guardar la imagen de la base de datos del stock de un almacén todas las noches. En este caso lo que haríamos es tener una aplicación que se ejecute de modo automático todas las noches.

En EJB tenemos dos modos de realizar esto:
Usando las anotaciones @Schedule y @Schedulers. 

En este caso se añade la anotación @Shedules a cada función que se quiera añadir al planificador, dentro de esta anotación se añade una o mas anotaciones del tipo @Shedule. Cada anotación Shedule va a permitir  que la tarea se ejecute en los momentos indicados pudiéndose indica las siguientes opciones:
  • second. Indica en que segunda se ejecutará el proceso.
  • minute. Indica el minuto dentro de la hora.
  • hour. Hora de ejecución.
  • dayOfMonth. Día dentro del mes en que se ejecutará el proceso. Aquí se permiten los siguientes valores:
    • Un número del 0 al 31
    • Un valor negativo entre -1 y -7. En este caso le estamos diciendo que se ejecute -n días antes del último día del mes.
    • Last. Para indicar el último día del mes.
    • {"1st", "2nd", "3rd", "4th", "5th", "Last"} {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat". Para indicar si se quiere que se ejecute el primer lunes o martes, etc del mes.
  • month. Indica uno o varios meses. Sus posibles bvalores son un número de 1 a 12 o los textos: "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", Dec".
  •  dayOfWeek. Que día de la semana se realizará la ejecución. Los posibles valores son un valor numérico de 0 a 7 o los textos: "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat".
  • year. Un año indicado con cuatro dígitos.
A continuación os pongo un ejemplo en el que se ejecuta una tarea todos los días de la semana de Lunes a Viernes a las 17:30 horas.

package com.blogspot.ejb;

import javax.ejb.Lock;
import javax.ejb.LockType;
import javax.ejb.Schedule;
import javax.ejb.Schedules;
import javax.ejb.Singleton;

@Singleton
@Lock(LockType.READ)
public class ScheduleEJB
{
     @Schedules({
         @Schedule(dayOfWeek = "Mon, Tue, Wed, Thu, Fri", hour = "17", minute = "30" , second = "0")
     })   
     private void guardarStock()
     {
         // Tarea a realizar
     }
}

Creando una ScheduleExpressiony usando TimerService.


En el siguiente ejemplo lo que hacemos es crear una SchedulerExpresion prácticamente lo que se hace es inicializar la clase con las mismas opciones de la anotación @Schedule. La diferencia es que en este caso estamos inicializando la expresión programaticamente en la función que se ejecutará tras la creación de una instancia de la clase (de ahí el uso de la anotación @PostConstruct).



package com.blogspot.ejb;

import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import javax.ejb.Lock;
import javax.ejb.LockType;
import javax.ejb.ScheduleExpression;
import javax.ejb.Singleton;
import javax.ejb.Startup;
import javax.ejb.Timeout;
import javax.ejb.Timer;
import javax.ejb.TimerConfig;
import javax.ejb.TimerService;

/**
 *
 * @author <a href="mailto:ljlosadag@gmail.com">LJLG</a>
 */
@Singleton
@Lock(LockType.READ)
@Startup
public class ScheduleExpresionEJB {

    @Resource
    private TimerService timerService;
   
    @PostConstruct
    private void construct() {
        final TimerConfig guardarStock = new TimerConfig("guardarStock", false);
        timerService.createCalendarTimer(new ScheduleExpression().dayOfWeek("Mon, Tue, Wed, Thu, Fri")
                .hour("17").minute("30").second("0"),
                guardarStock);
    }
   
    @Timeout
    public void timeout(Timer timer)
    {
        guardarStock();
    }
   
     private void guardarStock()
     {
         // Tarea a realizar
     }
   }

Antes de decidirnos por que método usar se deben tener en cuenta las diferencias entre ambos:

@Shedule:
  • Son configurados de modo estático.
  • Es posible definir multiples metodos cada uno con su propio sheduler.
  • No es posible pasar ningún tipo de argumento.
  • No puede ser cancelado.
ScheduleExpression:
  • Es creado dinamicamente. Esto nos permite cambios, por ejemplo podrían tomarse los valores de un fichero de propiedades, de modo que no se necesitarían cambios en el código para cambiar el momento de ejecución.
  • Todas las expresiones que se definan dentro del ejb deben ser tratadas por una única función, aquella que se encuentra anotada con @Timeout.
  •  Es posible pasar argumentos. El constructor de TimerConfig permite pasar un objeto que sea serializable. Este objeto puede ser recuperado del Timer con la función Timer.getInfo().
  • La ejecución puede ser cancelada.

viernes, 18 de octubre de 2013

Un vistazo a las subastas online



Hace poco vi un anuncio en televisión de una página de subastas online Wellbid, sentí curiosidad y me dio por probar. Así pues os voy a contar un poco como funciona esta web.

Se trata de un sistema de pujas en el que todo lo que se subasta es nuevo, el usuario se registra y adquiere una serie de créditos que son los llamados BIDs, cada vez que alguien puja gasta un número de BIDs (en la mayoría de las pujas entre 3 y 9 BIDs) y la puja sube una pequeña cantidad (menos de un céntimo) aquel que se mantenga en la puja más tiempo más posibilidades tiene de ganar. Si transcurrido el tiempo de puja hay nuevas pujas se añaden unos 15 segundos al tiempo de puja por si alguien quiere volver a pujar.

Aunque parezca extraño se encuentran productos de más de 100 euros subastados por unos cuantos euros. Cuando me di de alta al principio desconfiaba un poco, pero después de hacer algunos cálculos vi que los productos en la mayoría de los casos están más que amortizados a través del gasto en BIDs que realiza la gente, por lo que si son posibles los precios a los cuales son adquiridos por la gente.

Hay algunas consideraciones que debéis tener en cuenta:
  • Hay pujas para debutantes, en estas pujas sólo pueden pujar usuarios que aún no han ganado ninguna puja, por lo que es bueno que optéis por estas las primeras veces.
  • Existen pujas para obtener BIDs de manera que podáis recargar vuestra cuenta a menor importe.
  • Cada usuario pude ganar al día una puja por BIDs, para el resto de las pujas se permiten ganar 5 en 30 días. Esto es algo interesante pues permite que todos los usuarios tengan más oportunidades.
  • Cuando ganas una puja puedes pedir que te lo cambien por dinero, de modo que no pagas nada pero podrás ganar dinero.
  • Es posible obtener BIDs por escribir en el blog de la página o por subir una foto y un comentario cuando os llega el artículo de una subasta ganada.
Algunos consejos sobre las pujas:
  • Existe un sistema de autopujas, este puja por ti de modo automático cuando se acaba el tiempo de puja. Si activáis la autopuja para un artículo debéis tener en cuenta que se debe indicar un número de veces que se va a pujar y que cada puja gastará un cierto número de BIDs.
  • No es recomendable entrar en la puja desde el principio, después de vigilar algunas pujas he visto que lo normal es que siempre puje alguien y después empiece la gente con autopujas. Debéis esperar al momento adecuado para entrar a pujar.
  • Antes de empezar a pujar por objetos es mejor intentar obtener un buen puñado de BIDs
Personalmente lo veo más como un entretenimiento en el que gastar algunos euros de vez en cuando, teniendo la posibilidad de obtener productos a un gran precio, eso sí, resulta bastante adictivo  por lo que debéis controlaos y poneos un límite de gasto.

domingo, 13 de octubre de 2013

Carrusel de imágenes con javascript

Hay ciertas ocasiones en que alguien nos pide un carrusel de imágenes en su página web. Si buscamos un poco es posible que encontremos diferentes librerías que nos permitan crear nuestro carrusel de manera sencilla. Aunque no todas tienen la suficiente flexibilidad. A continuación os voy a mostrar una librería muy flexible en cuanto a sus opciones, lo que nos va a permitir crear interesantes carruseles para nuestros desarrollos web. Esta librería es: carouFredSel.

Lo primero que debemos hacer es descargarnos la librería desde aquí
 
Una vez que hemos descargado la librería al descomprimir el archivo nos encontramos con varios archivos JavaScript y un archivo HTML con diferentes ejemplos y que nos pueden servir como guía para crear nuestro carrusel.

Vamos pues a crear un carrusel de ejemplo. Primero debemos crear nuestra página web y en la cabecera añadir la inclusión de las librerías. 

<html>

  <head>
    <script type="text/javascript" language="javascript" src="jquery-1.8.2.min.js"></script>
    <script type="text/javascript" language="javascript" src="jquery.carouFredSel-6.2.1-packed.js"></script>

  </head>

</html>

A continuación debemos añadir el bloque donde se encontrará nuestro carrusel:

<html>

  <head>
    <script type="text/javascript" language="javascript" src="jquery-1.8.2.min.js"></script>
    <script type="text/javascript" language="javascript" src="jquery.carouFredSel-6.2.1-packed.js"></script>

  </head>

  <body>
    <div id="carrusel">
      <img src="img01.jpg" alt="building1" width="990" height="450" />
      <img src="img02.jpg" alt="building2" width="990" height="450" />
      <img src="img03.jpg" alt="building3" width="990" height="450" />
      <img src="img04.jpg" alt="building4" width="990" height="450" />
      <img src="img05.jpg" alt="building5" width="990" height="450" />
      <img src="img6.jpg" alt="building6" width="990" height="450" />
    </div>

  </body>

</html>

En este caso lo único que hemos hecho ha sido añadir un div al que le debemos asignar un identificador único, en este caso le hemos puesto como identificador carrusel. Y dentro del mismo hemos añadido los elementos que se van a mostrar en el carrusel (en este caso son imágenes pero si examináis el ejemplo que viene con la librería vemos que es posible realizar un carrusel de bloques HTML, lo que resulta bastante interesante).

Finalmente es necesario añadir el código JavasSript necesario para que nuestro carrusel se ejecute:

<html>

  <head>
    <script type="text/javascript" language="javascript" src="jquery-1.8.2.min.js"></script>
    <script type="text/javascript" language="javascript" src="jquery.carouFredSel-6.2.1-packed.js"></script>


    <script type="text/javascript" language="javascript">
        $(function()
        {           
            $('#carrusel').carouFredSel();
        })
    </script>
 

  </head>

  <body>
    <div id="carrusel">
      <img src="img01.jpg" alt="building1" width="990" height="450" />
      <img src="img02.jpg" alt="building2" width="990" height="450" />
      <img src="img03.jpg" alt="building3" width="990" height="450" />
      <img src="img04.jpg" alt="building4" width="990" height="450" />
      <img src="img05.jpg" alt="building5" width="990" height="450" />
      <img src="img6.jpg" alt="building6" width="990" height="450" />
    </div>

  </body>


</html>

Como veis se trata de un sencillo JavaScript que usa JQuery (para aquellos que no han usado nunca JQuery es recomendable que se den una vuelta por la web de la librería pues se trata de una de las librerías más usadas por los desarrolladores de páginas web).


Lo único que estamos haciendo aquí es tomar el elemento definido con el nombre carrusel y le decimos a la librería que nos muestre su contenido como un carrusel. Sin embargo esto nos muestra el carrusel más básico posible es posible inicializar la librería con múltiples parámetros. Como ejemplo vamos a mostrar cómo hacer que se muestren tres imágenes a la vez:
<html>

  <head>
    <script type="text/javascript" language="javascript" src="jquery-1.8.2.min.js"></script>
    <script type="text/javascript" language="javascript" src="jquery.carouFredSel-6.2.1-packed.js"></script>


    <script type="text/javascript" language="javascript">
        $(function()
        {           
        $(function()
        {          
            $('#carrusel').carouFredSel({
                    width: '100%',
                    items: {
                        visible: 3,
                        start: -1
                    },
                    scroll: {
                        items: 1,
                        duration: 1000

                    }
                    }
                );
        })
        })
    </script>
 

  </head>

  <body>
    <div id="carrusel">
      <img src="img01.jpg" alt="building1" width="990" height="450" />
      <img src="img02.jpg" alt="building2" width="990" height="450" />
      <img src="img03.jpg" alt="building3" width="990" height="450" />
      <img src="img04.jpg" alt="building4" width="990" height="450" />
      <img src="img05.jpg" alt="building5" width="990" height="450" />
      <img src="img6.jpg" alt="building6" width="990" height="450" />
    </div>

  </body>


</html>

Como puede verse hemos cambiado ligeramente nuestro JavaScript de modo que hemos inicializado diferentes parámetros:
  • width. Indicamos que el carrusel usara todo el ancho de la página.
  • items. Se trata de un objeto que nos permite definir que elementos se van a mostrar. con visible le indicamos que nos muestre cuantos elementos se muestran al mismo tiempo y start nos indica con que elemento se comienza.
  • scroll. Nos permite indicar como se va a realizar el cambio de imágenes. En este caso items nos indica el número de elementos que se van a desplazar con cada movimiento, si no se pone se toma como valor el valor indicado anteriormente en el campo items.visible. Para indicar el tiempo que dura la transición se usa el campo duration donde se indican los milisegundos que se tartará en la misma.
Existen muchas mas opciones que pueden configurarse. Si queréis una lista completa de la misma podéis ir a la siguiente página donde se encuentra la documentación de la librería.

Si queréis ver múltiples ejemplos de que es posible hacer con esta librería, podéis encontrarlos en este enlace. Seguro que aquí encontráis alguna configuración que se ajusta a vuestras necesidades.

viernes, 11 de enero de 2013

Actualizando a Skype desde Messenger Live

Esta mañana como otro días me he encontrado un correo con la necesidad de actualizar mi Messenger a Skype. Como mucha gente he actualizado al mismo y me he encontrado con la sorpresa de que mis contactos habían desaparecido.
Tras investigar un poco he encontrado una solución al algún foro, así que os la pongo aquí.

  • Antes de nada debemos cerrar nuestra Skype totalmente (no basta con cerrar sesión).
  • Vamos al menú de inicio y ejecutamos el comando %appData%.
  • Esto abrirá una ventana del explorador de archivos. En esta carpeta entontramos una carpeta con el nombre Skype. Así pues renombraremos esta carpeta de Skype a Skype.back
  • Reiniciamos el equipo y volvemos a entrar, en este momento deben de aparecer ya nuestros contactos perdidos.