Como enviar correos desde Perl usando Gmail

En esta entrada tendremos realizaremos el envió de correo desde el SMTP de Gmail usando el lenguaje de programación Perl para realizar esta tarea, específicamente usando el modulo Email::Sender.

Perl es un lenguaje muy común para escribir scripts, por lo cual, es muy útil poder enviar de correos electrónico desde el.

Enviar correos perl gmail

En Perl existen varias opciones de módulos para trabajar con emails algunos de ellos son:
Net::SMTP
Mail::Sendmail
Email::Sender
Email::MIME
MIME::Lite

En esta entrada usaremos el modulo de cpan Email::Sender el cual es una de las alternativas para envió de email mas moderna en Perl para enviar correos sobre smtp con o sin capas de seguridad SSL/TLS.

(más…)

Continuar leyendoComo enviar correos desde Perl usando Gmail

Instalación de OTRS en Debian Wheezy + PostgreSQL + Apache

OTRS (Open-source Ticket Request System) es un software Help Desk de Código Abierto y de Gestión de Servicios de TI escrito en Perl y licenciado bajo AGPL.

-Instalar paquetes necesarios:

root@k8:/home/leninmhs#aptitude install libapache2-mod-perl2 libdbd-pg-perl libtimedate-perl libnet-dns-perl libnet-ldap-perl libio-socket-ssl-perl libpdf-api2-perl libsoap-lite-perl libgd-text-perl libtext-csv-xs-perl libjson-xs-perl libgd-graph-perl libapache-dbi-perl libyaml-libyaml-perl postgres apache2

Descargar OTRS: http://www.otrs.com/try/

OTRS Help Desk 3.3.9.tar.gz

root@k8:/home/leninmhs# tar xf otrs-3.3.9.tar.gz
root@k8:/home/leninmhs# mv otrs-3.3.9 /opt/otrs
root@k8:/home/leninmhs# cd /opt/

 

-Se configuran los usuarios:

root@k8:/opt# useradd -r -d /opt/otrs/ -c ‘OTRS user’ otrs
root@k8:/opt# usermod -G nogroup otrs

-Chequeamos que tenengamos todos los módulos Perl necesarios:

root@k8:/opt# cd/otrs/bin

root@k8:/opt/otrs/bin# ./otrs.CheckModules.pl
o Archive::Tar…………………ok (v1.90)
o Crypt::Eksblowfish::Bcrypt…….Not installed! (optional – For strong password hashing.)
o Crypt::SSLeay………………..ok (v0.58) (más…)

Continuar leyendoInstalación de OTRS en Debian Wheezy + PostgreSQL + Apache
perl_frase
perl_frase

Generar código QR desde postgreSQL con Perl

qr-leninmhsComo practica para probar y conocer como generar códigos QR en Perl, realizaremos el siguiente ejercicio: conectarnos a una base de datos, consultar el identificador único de cada producto en una tabla de nuestra base de datos postgres, generar el código QR de cada uno de los productos. Cada QR direccionara a un url compuesto por una pagina web + el identificador, con lo cual suponemos que en ese url hubiera la información con mas detalle del producto. La practica sera realizada en Debian GNU/Linux

Usaremos el modulo de CPAN Imager::QRCode para generar nuestros QR. Mas información: http://search.cpan.org/~kurihara/Imager-QRCode/lib/Imager/QRCode.pm

Para conectarnos y consultar la base de datos, usaremos la extensión para postgres de Class::DBI. Mas información: http://search.cpan.org/~rudy/DBD-Pg/Pg.pm

Código QR desde postgreSQL con Perl

Ambos módulos los tendremos disponibles en nuestro Debian con: #aptitude install libimager-qrcode-perl libclass-dbi-pg-perl

Crearemos un archivo de texto con extensión .pl colocaremos y adaptaremos lo siguiente:

Código Fuente

#!/usr/bin/perl -w
use Imager::QRCode;
use DBI;

my $bd = DBI->connect("DBI:Pg:dbname=bd_ventas;host=192.168.0.1", "usuario_bd", "clave_bd", {'RaiseError' => 1});
my (@consulta, $sth);

$sth=$bd->prepare("SELECT id_producto FROM productos");
$sth->execute();

my $qrcode = Imager::QRCode->new(
size          => 8,
margin        => 1,
version       => 4,
level         => 'L',
casesensitive => 1,
lightcolor    => Imager::Color->new(255, 255, 255),
darkcolor     => Imager::Color->new(0, 0, 0),
);

while(@consulta = $sth->fetchrow_array() ){
$img = $qrcode->plot("http://paginaweb.com.ve/$consulta[0]", \%params);
$img->write(file => "$consulta[0].gif");
}#fin while

Explicación del código fuente

Nota: La numeración presentada a continuación corresponde a las lineas de código presentadas anteriormente.

(más…)

Continuar leyendoGenerar código QR desde postgreSQL con Perl
base de datos database memoria ram redis nosql
base de datos database memoria ram redis nosql

Redis – Tu base de datos libre en memoria

redis logo base de datos instalar debian
Logo de Base de Datos Redis

Redis es un motor de base de datos libre de tipo clave-valor (key-value) persistententes que residen en memoria ram y posteriormente vuelca el conjunto de datos almacenados al disco duro. Redis es cliente/servidor por lo que levanta su servicio y responde peticiones, cuenta con interfaz de red lo cual hace posible conectar clientes o nodos desde otros host.

Redis es key/value esto significa que solo entiende Claves y Valores, es decir, cadenas, listas, hash, conjuntos y conjuntos ordenados, de igual manera Redis provee mecanismos para manipular y consultar estas estructuras de datos. Al no pertenecer al mundo relacional automáticamente entra en el grupo de bases de datos libres de tipo NoSQL (Not Only SQL).

Se puede ejecutar operaciones atómicas sobre estos tipos, como agregar elementos a una cadena; incrementar el valor de un hash, empujando a una lista; intersección de conjuntos de computación, unión y diferencia, o conseguir el miembro de más alto rango en un conjunto ordenado.

Redis resuelve de manera sencilla y eficiente problemas que no necesitan la complejidad de las bases de datos relacionales, como lo es en la mayoría de los casos de usos el almacén y gestión de estructuras de datos temporales, por lo cual redis es mayoritariamente usado para incorporar soluciones sofisticadas de cache de datos ó como backend de operaciones en linea en escenarios de alta demanda. Redis no pierde tiempo pensando  en relaciones, restricciones ni tipos de datos, se enfoca en hacer eficientemente su trabajo que es establecer y recuperar (set y get) datos sobre las estructuras con las que cuenta.

base de datos database memoria ram redis nosql
base de datos database memoria ram redis nosql

Ahora bien, todo esto suena excelente, pero ¿para que querría alguien usar esto en la vida real?

  • Su compleja y mimada base de datos relacional que soporta toda la carga de sus operaciones, recientemente se le incorporo mensajería instantánea (si sus usuarios chatean entre si, con clientes y publico en general ) a la aplicación que hace uso de ella, se dio cuenta que esto que no es lo mas importante en su modelo de negocios, le esta colapsando su servicio. Pues transfiera la gestión de chat a Redis y luego totaliza la mensajería del día y la manda como histórico a su base de datos principal.
  • Suponga que tiene un portal web con mucha trayectoria y miles de millones de contenidos, así como millones de visitas diarias, cuya pagina de inicio abarca el 90% de las visitas de su web, su pagina de inicio solo son 30 contenidos y otros elementos, pues en vez de recorrer su base de datos tradicional con los millones de contenidos en busca de los 30, simplemente los pone a disposición de la manera mas rápida posible.
  • Para análisis y procesamiento en tiempo real. Su país necesita implementar un sistema integral de atención a sus ciudadanos, ideal seria que la carga de consultas de los tickets vigentes resida en una solución como redis, y que el análisis y monitoreo del comportamiento de los usuarios en linea en el sistema también.
  • Gestión de sesiones de usuarios y soluciones de cache, entre muchas otras.

Actualmente Redis es usado por: Twitter, Instagram, GitHub, Flickr, DiggHeroku lo oferta en sus servicios, es soportado por muchos de los proveedores de plataforma como servicio, entre muchos otros de los grandes en internet.

(más…)

Continuar leyendoRedis – Tu base de datos libre en memoria
perl_frase
perl_frase

Recorriendo y generando archivo de texto en Perl

perl-pdfComo bien deben saber Perl aunque siendo un lenguaje de propósito general, es especialmente bueno trabajando con manipulación de texto y archivos por lo que es un lenguaje de programación que los administradores de sistemas (sysadmin) aprecian mucho y con regularidad tienen que recurrir a el.

En las siguientes pocas lineas se realiza un proceso de lectura de un archivo.csv (texto plano delimitado por algún carácter) con los campos separado por «;» de ahí generamos una contraseña basada en MD5 a partir de uno de los campos del .csv , luego guardar estos valores incluyendo el nuevo campo que sera el hash MD5 del primer campo en un segundo archivo2.csv.

El trozo de código quedo en 19 lineas, pudiendo haber sido menos.

(más…)

Continuar leyendoRecorriendo y generando archivo de texto en Perl

Generando pdf con Perl + PDF::Report

Aprende a generar un archivo PDF directamente programando con el lenguaje de programación Perl. Comienza a crear fichas y repores PDF.

Usando el modulo de cpan PDF::Report de Perl para generar pdf, si usan Debian, Canaima o algún derivado debería bastar con:
#aptitude install libpdf-report-perl
Para probar el script crean un archivo con extensión .pl y copian el código.

Luego en consola: leninmhs@one:~/perl$perl pdf.pl
ó: leninmhs@one:~/perl$./pdf.pl

Se realizo énfasis en asignar las propiedades del pdf generado (autor, fecha, creador, etc..) y añadir imágenes y algo de texto dentro del pdf a generar.
La documentación oficial de PDF::Report

 

Perl PDF

Código cortesía de la casa hecho en Linux (Debian Squeeze):

(más…)

Continuar leyendoGenerando pdf con Perl + PDF::Report