jueves, 6 de junio de 2013

LINUX - GRIVE


Una de las aplicaciones que mas uso es Google Drive, dado que me permite llevar todos los documentos, información y aplicaciones a todas partes, las puedo tener en mi smartphone, en el PC de casa, Netbook e incluso las puedo ver en el televisor o en el pc del vecino, como muchos sabéis, no existe la aplicación de escritorio para Linux, y la verdad es que me parece un poco vergonzoso que no lo hayan hecho todavía y mas aún teniendo en cuenta que los sistemas operativos de Google se basan en Linux, pero bueno, esto es otro tema y solo es mi opinión personal. 

A lo que vamos, buscando por la red, vi que existen alternativas, pero ninguna es tan buena como la oficial, pero de las que encontré opté por Grive. Para hacer la instalación debemos hacer abrir un terminal y ejecutar los siguientes comandos:

sudo add-apt-repository ppa:nilarimogard/webupd8
sudo apt-get update 
sudo apt-get install grive

Una vez instalado, desde el mismo terminal creamos un directorio en nuestro Home: 


mkdir .../Grive
Cuando ya esta creado el directorio accedemos a el y debemos darle autorización para que podamos sincronizar: 
sudo grive -a 
Ahora aparecerá una URL bastante larga en el terminal que deberemos copiar y pegar en el navegador y redireccionará a una página de Google donde nos pedirá la autorización de esta aplicación. Cuando aceptemos, nos dará un código que debemos copiar y pegar en el terminal. 
No es oro todo lo que reluce, dado que como he dicho anteriormente, ninguna es tan buena como la oficial, con esta aplicación el directorio no se actualiza automáticamente y debemos hacerlo desde el terminal cada vez que se realizan cambios siempre dentro del directorio creado, para ello solo es necesario escribir en el terminal:

grive 
No hace falta el parámetro -a dado que no vamos a autorizar otra vez. 
Para solucionar este pequeño contra que tiene esta aplicación, Ubuntu dispone de sus propias tareas programadas, para ello solo debemos agregar una pequeña linea en el archivo crontab, para ello abrimos un terminal y escribimos: crontab -e  y añadimos la siguiente linea  */10 * * * * cd /home/USER/grive && grive donde 10 es la frecuencia de la actualización. y USER ya lo sabes ;) 

Espero que haya ayudado!!!!



Consultas SQL - Cómo hacer un MAX() y no morir en el intento



Hace unos días me solicitaron hacer una selección de clientes lógica, pero algo complicada. En una misma tabla tenía varias fechas/horas asociadas a un mismo registro y necesitaba hacer una selección aleatoria con la última fecha de ese registro. Cuando empecé la consulta me pareció fácil, dado que ya había realizado alguna que otra consulta de este tipo, pero en SAS haciendo un PROC SQL. Cuando empecé la programación de la consulta, descubrí que no funcionaba de la misma manera, a pesar de que en SAS llamaba a un procedimiento SQL, finalmente pude realizar dicha consulta con el siguiente ejemplo: 


SELECT top 500 *

FROM

(       SELECT indice, MAX(FECHA) as maxdate
FROM   TABLA_LLAMADAS
WHERE CAMPAÑA= 'TEST' 
GROUP by INDICE) as z inner join  TABLA_LLAMADAS as a
         on a.Indice = z.indice and maxdate= a.FECHA
    
left join  TABLA_CLIENTES1 as b
on a.INDICE= b.INDICE
left join TABLA_DESCRIPCION  as c
on  c.INDICE= a.INDICE
left join TABLA_CLIENTES2 as d
on d.INDICE= b.INDICE

WHERE FECHA >= '2013-05-14 08:00:00.000' and FirstCampaign = 'TEST'
and STATUS = '1' and DETAIL = '1'

order by NEWID( )

Lo principal de esta consulta, es que se la tabla principal, se debe unir con una selección sobre la tabla inicial con el máximo que estamos buscando, con lo que así obtendremos la selección completa con todos los datos que necesitamos con solo los datos de la llamada con la última fecha (marcado en el gris)

Por otro lado, para poder hacer una consulta de x registros, en este caso 500 de forma aleatoria, simplemente hacemos un order by e invocamos la función newID( ). 

Espero que estas indicaciones hayan sido útiles a quien lo haya visto. 


Un saludo!



martes, 4 de junio de 2013

Cómo activar la nueva bandeja de GMAIL

Es muy sencillo simplemente debemos acceder a la configuración (tuerca que se encuentra en la parte superior de la pantalla en la zona derecha. Hacer clic en Configurar Recibidos



Seleccionar todas las pestañas que quieres habilitar (yo lo he habilitado todo) 



Acto seguido aparecerá un pequeño tutorial donde explica la nueva funcionalidad. una de las cosas que mas me ha gustado ha sido que ha reconocido muy bien, todo lo que son newsltetters, mensajes de notificaciones, redes sociales y mensajes de personas.. me ha sorprendido gratamente y es muy cómodo a la hora de realizar búsquedas de mensajes, recordemos que Google es el maestro en las búsquedas. 

Por otro lado, ayer mismo actualicé la app de Android de Gmail con la nueva interface, y hoy al actualizar mi  bandeja de entrada, también se ha actualizado en la APP.  

Un saludo!!!!

lunes, 3 de junio de 2013

Cómo encriptar el contenido de una consulta SAS



En ocasiones me habían pedido que encriptara la información de una consulta determinada, por ejemplo, debía hacer una consulta en una base de datos 2 millones de registros, que cumplieran una serie de requisitos, y una vez realizada la consulta, solo necesitaban las direcciones de correo electrónico. Hacer la consulta fue "fácil" dentro de lo que cabe.. ya sabemos como son los departamentos de marketing cuando necesitan hacer una acción comercial y necesitan una serie de requisitos que normalmente te preguntas: para qué? 

Buenos a lo que vamos, una vez realizada la extracción, debía enviarla de manera segura, con la información encriptada, para ello, todo el mundo sabe que hay cientos de páginas que pueden encriptar registros sueltos, pero cuando hablamos de una base de datos muy grande, este proceso puede ser tedioso, menos mal que, que logré dar con una solución mucho mas útil y práctica mediante SAS; 


data EMAILS_MD5 (keep = md5 email);
set EMAILS;
md5=put(md5(trim(email)),hex32.); 
run;

para los que no saben nada de SAS, data EMAILS_MD5 es la tabla a crear.  Con el keep seleccionamos el campo email y md5
set EMAILS es la tabla origen (la tabla que hemos generado con los requisitos de la consulta. 

Con esto, modificamos la variable md5 (inicialmente vacía) utilizando la funciona md5() sobre el campo email, sin espacios de por medio, para ello se utiliza el TRIM, y el resultado obtenido, se codifica en hexadecimal. El resultado obtenido es el campo MD5 con la información del campo email encriptada. 

Otra forma de hacerlo es directamente con algún valor en lugar de un campo específico: 

data TEST;
   y = md5('test1@altgrf4.com');
   put y= / y = hex32.;
   md5= put(y,hex32.); 
run;


Espero que haya sido de ayuda! 



Trucos del informático


Un pequeño truco para crear carpetas a diario y no tener que hacerlo manualmente es tan simple como crear una tarea programada en la que se ejecute un archivo .bat con los siguientes comandos: 

for /f "tokens=1-4 delims=/ " %%a in ('date /t') do (set ndia=%%a& set mes=%%b& set año=%%c& set dia=%%d)
set desal=%ndia%%mes%%año%

if 01==%mes% set carpmes=Enero%año%
if 02==%mes% set carpmes=Febrero%año%
if 03==%mes% set carpmes=Marzo%año%
if 04==%mes% set carpmes=Abril%año%
if 05==%mes% set carpmes=Mayo%año%
if 06==%mes% set carpmes=Junio%año%
if 07==%mes% set carpmes=Julio%año%
if 08==%mes% set carpmes=Agosto%año%
if 09==%mes% set carpmes=Septiembre%año%
if 10==%mes% set carpmes=Octubre%año%
if 11==%mes% set carpmes=Noviembre%año%
if 12==%mes% set carpmes=Diciembre%año%


md "C:\Users\USER1\Desktop\%carpmes%\%desal%"


Gracias a este pequeño programa, podemos crear directorios automatizados en la ruta que nosotros indiquemos, sin necesidad de preocuparnos de nada! 

Cada día se genera un directorio con el día actual y estos se crearán dentro de un directorio global con el nombre del mes y año. Recordad, que es interesante que esta tarea programada se ejecute a primera hora del día. 

Consultas SQL - Variable Fecha




Una de las necesidades que he tenido al automatizar procesos, es el tema de la fecha. Muchas veces, necesitamos que se hagan consultas automáticas del día anterior, pero claro, no es todo tan fácil como hacer fecha <= today ()-1 :-). 

Por poner un ejemplo, en el caso que tengamos una fecha del tipo: 2013-06-03 07:00:30.423 
debemos y queremos todos los datos del día anterior, la instrucción debe ser la siguiente: 


SELECT *
FROM TABLA
WHERE convert(VARCHAR (10),FECHA, 106) = convert(VARCHAR(10), GETDATE() -1, 106)  
ORDER BY FECHA

como he comentado antes, esta consulta sql es muy útil cuando tenemos tareas automatizadas. 


Google+ Hangouts


A finales del pasado año, Google hizo pública la API que permitía a los desarrolladores poder utilizar Google+ Hangouts para sus propias aplicaciones.

Qué permite al programador esta API? Muy resumido, podríamos decir que esta API nos permite interactuar (video, chat y voz) entre un grupo mientras estamos realizando cualquier tipo de tarea. 

Con esto podemos decir que mientras estamos trabajando un proyecto entre varias personas mediante Google Docs, por ejemplo, cada uno puede anotar a mano alzada este documento, para que el resto lo pueda ver, otra utilidad que veo es mas lúdica, ya que podemos jugar pudiendo ver la cara del oponente. En definitiva, esta API, permitirá crear aplicaciones mas sociales todavía. 

En breve voy a empezar un proyecto relacionado con esta funcionalidad que espero que sea útil. Iré comentando el desarrollo de este nuevo proyecto.