Demrit

Miguel Vazquez Gocobachi



Mail body decoded

Una manera funcional de obtener el body de un mensaje de correo que quizá quiera ser analizado para otras tareas es la siguiente manera. Cabe aclarar que es una solución que generé por necesidad, claro esta, puede ser mejorado inclusive con mucho menos código... aunque, por el momento es útil para adaptarlo a nuestras aplicaciones.
use strict;
use Mail::Message;
use HTML::Entities;
my $rfc2822 = "";
{local $/; $rfc2822 = <STDIN>;}
sub getBody
{
    my $data = shift;
    my $ret  = '';
    my $type = 'plain';
    my $obj  = Mail::Message->read($data->{mail});
    my $body = $obj->body;
    if ($body->isMultipart) {
        $type = 'html';
        my @matches = $body->decoded->string =~ m/charset=\"PERL\"\n{2}(.*?)--(?:[0-9a-zA-Z]+)/gsc;
        $ret  = encode_entities($matches[1]);
        $ret =~ s/^\s//;
        $ret =~ s/\s$//;
        $ret =~ s/^\n//;
        $ret =~ s/\n$//;
        $ret =~ s/\n\s*\n/<wbr \/>/g;
        $ret =~ s/\n/ /g;
        $ret =~ s/<wbr \/>/\n/g;
    } else {
        $ret = encode_entities($body->decoded->string);
    }
    $ret =~ s/& lt;/</g;
    $ret =~ s/& gt;/>/g;
    $ret =~ s/& quot;/"/g;
    $ret =~ s/& amp;quot;/& quot;/g;
    $ret =~ s/& amp;nbsp;/& nbsp;/g;
    my $result = {body => $ret, type => $type};
    return $result;
}

print getBody({mail => $rfc2822});
 
Simple y funcional, si tienes una idea mejor por favor compartela face-smile.png
Happy hacking!

¡Es niño!

Estoy muy contento por fin nos dijeron el sexo del bebe, y si... es niño! Me da mucho gusto por que yo quiero un niño para que sea quien cuide a sus hermanitos face-wink.png ....
Les dejo la imagen para que lo conoscan face-smile-big.png ....
bebe

Subject encoding

Una manera simple y sencilla de decodificar un subject cuando estamos trabajando con mensajes de correo es de la siguiente manera. Aunque, en este ejemplo se utiliza el package Email::Simple se puede utilizar Mail::Message u otro.
use strict;
use Email::Simple;
use Encode qw(decode);
use HTML::Entities;
my $msg = "";
{
    local $/ = undef;
    $msg     = <STDIN>;
}

my $email    = Email::Simple->new($msg);
my $subject  = decode('MIME-Header', $email->header('subject'));
$subject = encode_entities($subject);
print $subject, "\n";
 
Muy simple y lo que es mejor, funcional. Me ha sacado de un gran problema. Pronto publicaré una forma sencilla de obtener el body del mensaje ya con su codificación interpretada.

Feliz año 2009, un año se va. Una nueva era comienza.

En este año sucedieron muchas cosas muy interesantes, entre ellas que me case con Michel Verduzco Sanchez, y ahora estamos esperando a nuestro primer bebe. Estoy muy contento, muchas cosas sucedieron en tan poco, tiempo.
Esta vez, mirando hacia enfrente, de nueva cuenta sera un año mucho mas interesante, la llegada de mi primogenito, el enfrentamiento con la crisis que tenemos encima y que estoy seguro que tranquilamente estaremos bien y saldremos adelante con excelentes posibilidades de crecimiento economico, cultural y personal.
En este año me mude a la casa que compre en Agaves Residencial, y feliz de crecer con mi nueva familia, proximamente uno mas estara acompañandonos en nuestra casita y nos hara mas feliz cada momento.
A todos y cada uno de ustedes les deseo lo mejor, recuerden. Siempre trabajen mucho por ustedes, por aquellos que dependen de ustedes y ante todo, sonreir cada momento, ya que es una forma de alimentar nuestros momentos y disfrutar de nuestra vida....
Feliz año a todos de nueva cuenta face-smile.png happy hacking!
bebe te espero pronto! face-smile-big.png

Hiakim framework

Hiakim es un proyecto de software para aplicaciones Web escrito en PHP5. La idea o meta de este proyecto/framework es facilitar (a mi personalmente) el desarrollo de aplicaciones Web con el único fin de mejorar la facilidad de desarrollo, desarrollar en el menor tiempo posible, pero con la potencia de un sistema de punta, WebServices, AJAX, OpenId, entre otras cosas.
El uso de la libreria Zend framework que es el corazón de Hiakim tiene implementado el uso de Dojo Toolkit que combinado con ZF es una herramienta muy potente, aunque con Hiakim trataremos de simplificar aún más esa tecnología y los servicios que presta esta potente libreria. Claro, lo más importante que tenemos en cuenta con Hiakim es el rendimiento en el uso de memoria y tiempo de ejecución, cada vez que el código sea modificado para una nueva versión deberá de contar con dos cosas de mayor prioridad:
1.- Menor uso de memoria y tiempo
2.- Nuevas caracteristicas para utilizar en nuestra AppWeb
Cualquier persona es bienvenida, testers, developers, End-users. Espero su interes y claro, la ayuda que ofrescan.
Para ver el código pueden visitar esté sitio

Voy a ser apa!

¡Feliz Feliz Feliz!
¿Qué puedo decir? Simplemente estoy muy muy pero muy feliz, una noticia que me emociona, el solo hecho de recordar el momento en que la doctora me dijo "Si fijese, si hay embarazo...", me puse super feliz, un momento inolvidable! ahora tengo que cuidar a mi esposa y mi hijo, por que va a ser niño eh! haha... bueno, yo digo que será pero igual, si es niño o niña será informático como su padre y desde pequeño usará GNU/Linux o FreeBSD. Le diré que Window$ es un pecado muy grave! haha, es broma... face-smile-big.png
Gracias por las personas que me han apoyado, inclusive las que pensamos que iban a tomar la noticia muy mal tongue.png , gracias!
DSCF0002

¿Cómo tener autoincrement en PostgreSQL?

Este es un punto interesante, si utilizas MySQL y en cierto momento te ves obligado a usar PostgreSQL o simplemente por gusto te encontraras con algunas diferencias ligeramente importantes, una de ellas es el autoincrement que manejas en MySQL y que en PostgreSQL requieres hacer algo diferente face-smile.png
Hay dos maneras de utilizar esta funcionalidad en PostgreSQL, la primera es crear una secuencia y la tabla, y la otra es asignarle directamente el tipo al campo de la tabla. En el ejemplo la tabla se llama "foo".
1.- Creando la secuencia y la tabla
CREATE SEQUENCE foo_id_seq;
CREATE  TABLE foo (
    id integer DEFAULT  NEXTVAL('foo_id_seq') NOT  NULL,
    name character varying(8)  NOT  NULL
);
 
2.- Creando la tabla con el tipo "serial" para el campo "id".
CREATE  TABLE foo (
    id serial,
    name character varying(8)  NOT  NULL
);
 
Interesante, ¿verdad? face-smile-big.png

Trim en Perl


Muchas veces he utilizado la función trim() en PHP para eliminar espacios al principio y final de una linea. Esto se vuelve un problema cuando deseas hacer lo mismo en Perl, ¿por qué? Porque no existe función en perl que haga tal cosa, asi que aquí tenemos un ejemplo de como implementarlo en nuestras aplicaciones de Perl.
sub trim {
    my  $str = shift;
    $str =~ s/^\s+//;
    $str =~ s/\s+$//;
    return  $str;
}
 
Y su uso es tan simple como lo siguiente:
my  $string = trim(' Foo bar ');
 
Happy hacking!

Serialización en Perl


Una de las cosas que utilizo con mayor frecuencia es la serialización de datos en PHP. Ahora, trabajando con Perl he decidido utilizar dicha funcionalidad para el almacenamiento de cierta información en un sistema Web, así que utilizando el grandioso CPAN he obtenido el módulo correspondiente.
Para poder serializar datos es necesario contar con el modulo PHP::Serialization, el cual puede ser instalado por medio del shell de perl para CPAN. A continuación, un sencillo ejemplo de su uso:
use strict;
use PHP::Serialization  qw(serialize unserialize);
my  $serialized   = serialize({a => [1,2,3], b => 5});
my  $deserialized = deserialize($serialized);
print  $deserialized->{b};
 
Su uso es muy simple, asi se que solo basta almacenar la información de $serialized en un campo text de SQL.

Calendario del Blog

Marzo 2010
Dom Lun Mar Mie Jue Vie Sab
28 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 1 2 3
rss
atom