martes, 9 de octubre de 2012

Tutorial de PDL::Graphics::Gnuplot

Me encontré con un video de youtube donde explican cómo usar PDL::Graphics::Gnuplot. Interesante!! 15 minutos.

domingo, 23 de septiembre de 2012

Creciendo con Mojolicious

Una vez que nuestro proyecto con Mojolicious va creciendo, esto de tenerlo en un solo archivo se vuelve incómodo. Para separar los templates del código, ejecutamos:
./myapp inflate
Esto creará un directorio "templates" y pondrá los templates en el lugar indicado. A partir de ahí se pueden seguir agregando templates y haciéndo referencia a ellos como siempre:
$self->render('login');

viernes, 10 de agosto de 2012

Como instalar perl+mojolicious sin root

Quiero empezar un proyecto nuevo, y quiero que el proyecto viva completamente en un directorio. Asi, cuando quiera ponerlo en producción, puedo copiar todo el directorio y listo. Vamos a ver si podemos hacer eso ( o terminaré con algo tipo PAR o FatApp ) pero el primer paso es instalar un nuevo perl y un nuevo Mojolicious en mi $HOME. NOTA: Todos estos pasos se van a hacer como usuario, NO como root. Primero instalaremos perlbrew:
curl -kL http://install.perlbrew.pl | bash
Luego editarmos el archivo .bashrc y agregamos lo siguiente:
source ~/perl5/perlbrew/etc/bashrc
Salimos de la sesión y volvemos a entrar, o ejecutamos "bash" para que se apliquen los cambios. Instamos la última versión de perl
perlbrew install perl-5.16.0
La ponemos como default
perlbrew switch perl-5.16.0
Opcionalmente podemos instalar cpanm, que es una versión menos verborrágica de cpan. Si no lo instalamos, cambiar cpanm por cpan en todo este tutorial
cpan App::cpanminus
Y ahora, instalar Mojolicious
cpanm Mojolicious

miércoles, 25 de julio de 2012

use FindBin;

Hola Encontré este módulo útil que viene con perl (osea, no hay que bajarlo aparte, ya está instalado) llamado FindBin. Sirve para saber dónde está instalado el script que estamos ejecutando. Por ejemplo, si queremos distribuir un programa que tiene un /bin con el script y un /lib con los modulos que usa ese script, podríamos poner en el script:
use lib '../lib'
Pero eso funciona solo si ejecutamos el script desde el /bin.
cd /opt/donde_instalamos_el_programa/bin
./programa.pl
Si queremos que el programa se pueda ejecutar desde cualquier lado (como cualquier programa) se usa FindBin:
use FindBin;
use lib "$FindBin::Bin/../lib";
Espero que les sea útil!

miércoles, 18 de julio de 2012

Consistent Ring Hashing

Acá hay un artículo donde se entiende qué es "Consistent Hashing" o "Consistent Ring Hashing". Básicamente es una forma de saber en qué servidor puede estar un objeto de cache, mejor que hacer Numero de servidor % cantidad de servidores.

domingo, 15 de julio de 2012

Fatpacker

Otro bookmark: App:FatPacker mete las dependencias dentro de tu script. Todavía no vi cuán distinto es a PAR.

sábado, 14 de julio de 2012

Datatables: tablas para jquery

Bookmark para http://datatables.net/ , js para hacer tablas con una cantidad de plugins y extras.

jueves, 12 de julio de 2012

Jugando con tecnologías web

Acá hay un artículo de una persona que está haciendo un CMS con perl y un montón de javascript. Queda acá para que me acuerde de HumaneJS y PageDown.

domingo, 8 de julio de 2012

Codificación de headers MIME

Estaba mejorando mi programa que me canta los emails nuevos (por si me quiero desenchufar un poco, pero igual estoy esperando un email importante) y me encontré con que algunos asuntos están codificados con tipo:
Re: [CaFe-pm] =?utf-8?q?Blogs_en_Espa=C3=B1ol?=
Rápidamente encontré un link donde dice qué módulo (estándard de perl desde 5.8 -- osea, desde hace mil años ) usar para descodificar:
use Encode qw/decode/;
$utf8 = decode('MIME-Header', "Re: [CaFe-pm] =?utf-8?q?Blogs_en_Espa=C3=B1ol?=");
Devuelve "Re: [CaFe-pm] Blogs en Español" como debe ser.

Estadísticas con PDL

Muy interesante presentación sobre estadísticas y minería de datos con PDL.

viernes, 6 de julio de 2012

Módulo útil: Template::Extract

Template::Extract es como Template::Toolkit pero a la inversa: uno pone un template y un documento, y el módulo asigna las variables. Hermoso. En cualquier momento lo uso.

Programación lateral :)

Acá hay otra charla de YAPC::NA, esta vez de chromatic, hablando sobre no programar de la forma correcta. Osea, no tomar la solución "correcta" sino una alternativa. Algo así como "programación lateral"? :P

domingo, 1 de julio de 2012

Introducción a Perl Data Language

Perl Data Language es un conjunto de módulos de Perl para ciencia. Permite:
  • Manipular matrices N-dimensionales fácil y rápidamente
  • Leer distinots formatos de archivos (FITS, NetCDF, Fortran Unformatted, etc)
  • Plotear imágenes (PGPlot, GnuPlot)
  • Usar métodos numéricos (FFT, Simplex)
  • Usar algunas funciones de las GNU Scientific Libraries
  • Usar funciones de fitting
  Hay varias fuentes para aprender PDL:  

sábado, 30 de junio de 2012

PDL y Big Data

En este artículo en inglés (en español gracias a Google Translate), David Mertens propone que PDL (el conjunto de módulos para física, astronomía y demás ciencias) bien puede ser usado para Big Data.

Ojalá tuviera un proyecto de esos para trabajar. Nom nom nom :)

martes, 26 de junio de 2012

Mojolicious 3.0

Salió la nueva versión de Mojolicious

There are many new features, here are the highlights:
  • TLS and IPv6: Support for both has been greatly improved.
  • Commands: The command system has been completely revamped
  • Plugins: Generator and CPAN upload commands make extending Mojolicious easier than ever
  • Event loops: Mojolicious no longer needs to control the event loop
  • Content negotiation: Write more RESTful web services
  • JSON Pointers: Many features dealing with JSON got a lot smarter
  • Flexible router: Routes can now be rearranged
  • Flexible renderer: Serve templates and static files from as many DATA sections and paths as you like
  • Asset plugins: Easily bundle assets such templates and static files with plugins
  • Not found page: Is now actually a development tool.
  • Hypnotoad: Doesn't require a separate configuration file anymore
  • WebSockets: Fully RFC 6455 compliant
  • Relaxed placeholders: Now look like "/#foo" instead of "/(.foo)"
  • I18N plugin: Maintained as a separate distribution

sábado, 23 de junio de 2012

Stacktraces en perl

Mirando un video sobre debugging en perl de YAPC::NA, encontré el módulo App::Stacktrace. Una vez instalado, este módulo trae una herramienta de línea de comando llamada "perl-stacktrace", que genera un programa de gdb. Este programa de gdb nos permite ver stacktraces de un proceso de perl que está ejecutándose:

* perl-stacktrace -c <pid_de_perl>

Devuelve:

0x00007fb779b3b8e7 in flock () from /lib64/libc.so.6
#0  0x00007fb779b3b8e7 in flock () from /lib64/libc.so.6
#1  0x00007fb77ac88a8f in Perl_pp_flock () from /usr/lib64/perl5/CORE/libperl.so
#2  0x00007fb77ac39916 in Perl_runops_standard () from /usr/lib64/perl5/CORE/libperl.so
#3  0x00007fb77abd53e6 in perl_run () from /usr/lib64/perl5/CORE/libperl.so
#4  0x0000000000400f39 in main ()
proxy.pl:27
/usr/local/share/perl5/HTTP/Proxy.pm:216
/usr/local/share/perl5/HTTP/Proxy/Engine/ScoreBoard.pm:126


viernes, 22 de junio de 2012

Instalación de Mojolicious

Instalación de Mojolicious

Este mini-tutorial da los pasos para instalar Mojolicious y hacer una primera aplicación web.

* Crear un directorio
mkdir proyecto
cd proyecto

* Instalar Mojolicious
cpan Mojolicious

* Crear una aplicación "Lite" (Mojolicious::Lite)
mojo generate lite_app "holamundo"

Genera un archivo myapp.pl.

* Probar que todo funciona, ejecutando la aplicación y visitándola con un navegador:
morbo ./holamundo

jueves, 21 de junio de 2012

Regexp::Debugger


Miren este video de Damian Conway explicando su nuevo proyecto: un debugger para Regexps. Útil para perl, python o lo que sea que las use!

Cómo me hubiera gustado estar en YAPC::NA !

viernes, 15 de junio de 2012

Bienvenidos

Soy dvadell y pienso poner programas, módulos y cosas útiles que se hacen con Perl.