Mar 052014
 

Perl está disponible para múltimples plataformas, pueden descargarlo desde acá o desde el sistema de paquetes que utilicen. Para verificar si tienen instalado perl, en la terminal escriban perl -v, si hay salida ya lo tienen instalado.

Para la instalación de librerías se utiliza CPAN, que es una colección de módulos libres para Perl. Pueden descargar este script o sino instalarlo desde los repositorios, por ejemplo, en un Linux basado en Debian basta correr:

Una vez instalado, para instalar módulos deben correr desde la consola el siguiente comando (teniendo en cuenta que el nombre del módulo es case-sensitive):

Variables
Perl maneja tres tipos de variables:

  • Scalar
  • Array
  • Hash

Scalar
Las variables escalares representan un valor simple. Los valores escalares pueden ser cadenas, enteros o números de coma flotante y se definen anteponiendo el signo $ al nombre de la variable.
No hay necesidad de pre-declarar sus tipos de variables , Perl los convertirá automáticamente entre ellos según sea necesario.

Array
Las variables de tipo Array representan una lista de valores. Se declaran anteponiendo el signo @ al nombre de la variable

Los Arrays son indexados a cero. Se puede acceder a los valores de la siguiente manera:

La variable especial $#nombrearray nos indica el índice del último elemento.

Si utilizamos @mixed en contexto escalar, obtendremos el tamaño de nuestro Array:

Para obtener múltiples valores de nuestro Array:

Hash
Un hash representa un conjunto de pares clave / valor. En realidad hash son tipo de Arrays, con la excepción de que el índice puede ser un número o una cadena. Están precedidos por el signo % de la siguiente manera:

Se pueden utilizar los espacios en blanco y el operador => para dejarlo mas claro:

Para obtener un elemento del hash:

Podemos obtener una lista con las claves o valores con las funciones predefinidas keys() y values():

Alcance de las variables

En la sección anterior declaramos:

El modificador my no es necesario, también se puede usar:

Sin embargo, el uso anterior creará variables globales a través de su programa, que es mala práctica de programación. my crea variables con ámbito local. Las variables locales están disponibles en el ámbito del bloque (es decir, un grupo de estados rodeadas de llaves) en el que están definidos.

Tabla de conversiones de tipos

(1,2,3) [1,2,3] {a=>x} (a=>1) “pepe”
Arity Lista Scalar Hash Ref. Hash Scalar
Elemento $x[0] $x->[1] $x->{a} $x{a} $x
Lista @x @{$x} %{$x} %x ($x)
Hash - - %{$x} %x {e=> $x}
Ref. \@x $x $x \%x \$x
Ref. Copia [@x] [@{$x}] {%{$x}} {%x} [$x]



Sintaxis básica
if, elsif, else, unless

while, do while, until

for, for each

Funciones
En realidad las funciones son subrutinas, quizás sea porque el lenguaje es viejo :P … la sintáxis es también bastante común.

Para pasar parámetros se hace de esta forma

Variables privadas

TDD con Perl
TDD
Para hacer TDD en necesario bajar un paquete de CPAN, Test::More.
Acá un ejemplo de como correr un test, sobre una función específica.

Próximo post: Expresiones regulares en Perl. O sea: Perl.

Feb 272014
 

Humble Bundle
The Humble Bundlehttp://humblebundle.com/
Por lejos el más conocido de todos, no hace falta que explique como funciona :D


bundlestars2
Bundle Starbundlestars.com
Este sitio está bueno por varios motivos. Primero tiene una buena cantidad de bundles, suele tener entre 8-10 al mismo tiempo, todos muy diferentes y suelen ser con alguna temática o tipo de juego similar, no es tan aleatorio como otros. Rondan entre los 3 y 5 USD.
Por otro lado, también tiene un Store de juegos individuales y DLCs, con descuentos entre 35% y 70%.


Indie Gala
The Indie Galawww.indiegala.com
Sistema parecido al de Humble Bundle, con unos juegos desbloqueables a 1 USD, las primeras 12 horas del bundle se paga 3.99 USD para desbloquear los juegos, después 5.99 USD. También tiene 2 juegos que se muestran más adelante, para los que pagaron el precio del desbloqueo. Dato a tener en cuenta, algunas keys son para Desura.


Groupees
Groupeesgroupees.com
Este tiene un sistema raro. Te da 8 juegos para elegir y te regala 3 más, de esos 8 podés elegir entra 4 y 8. Te sugiere un valor aproximado para pagar pero podés optar por 2 USD como mínimo. Además tenés la opción de donar 20% a Friends of the Animal Shelter y bundles que no son de juegos (epbus, comics, etc)
Venden juegos que salen de Steam Greenlight, es una buena forma de apoyar desarrolladores indie.


blink bundle blink-bundle
Blink Bundleblinkbundle.com
Un piso de 1.99 USD para 4 juegos, el resto se desbloquean con 4.99 y tiene un juego extra bonus. Todos para Windows, Linux, Mac, Steam. Suele tener juegos interesantes.


bbbLogo
Big Bad Bundlebigbadbundle.bundledragon.com
Tiene 3 niveles de compra progresivos y cada nivel contiene 4 juegos. Los valores mínimos para desbloquear cada nivel sería 1 USD, 5 USD y 8 USD. Todos disponibles para Steam.


Flyingbundle1
Flying Bundleflyingbundle.com
Constra de varios juegos, con clave Steam y/o Desura y hay que pagar mínimo 3 USD para desbloquarlos. Tiene un juego sorpresa pero no se si lo sacás una vez que pagás o después de un tiempo.


Daily Royale
Daily Royaledailyroyale.com/
Tiene un sistema diferente, en lugar de ofrecer un paquete de juegos, es uno solo con un descuento alto y cantidad de keys limitadas para vender.


Indie Game Stand
Indie Game Standindiegamestand.com
Este sitio vende un solo juego a la vez, con un mínimo de 1 USD para la clave de Steam. Agregando un poco te ganás la OST, con 10 USD te ganás el juego anterior que vendían más otro juego sorpresa y si están entre los top 3 de contribuidores ganan una remera de la página. Además, fuera de la oferta diaria, tiene un store.


ikoid_black
Ikoidikoid.com/
También tiene un sistema diferente, tiene 3 juegos bastante baratos (menos de 2 USD) y se desbloquean más juegos dependiendo de la cantidad de shares en FB o +1 en Google+ o tweets, depende del bundle. Buena forma de hacerse promoción.


Bundle in a box
DickBundle in a box – bundle-in-a-box.com/
Tiene varios juegos desbloqueables con 0.99 USD y varios que se desbloquean pasando el promedio a lo Humble Bundle (también incluye OST). Detalle, algunos juegos se descargan, otros tienen clave Steam, otros Desura; para Windows y/o Mac y/o Linux.

Feb 262014
 

Voy a poner esto acá, haciendo las veces de ayudamemoria. Además para el que no sepa, siempre viene bien tener un listado e investigarlos.
Selectores/Traversing (que no encontré una traducción buena) en jQuery.

Selectores básicos

Selectores “avanzados”

Traversing

Dec 232013
 
wow

Hace unos días había liberado un plugin de jQuery bastante tonto, y ahora hice un update del mismo con unos cuantos bugs corregidos y además ahora pemite parametrizarlo, así pasa a estar un poco mas usable de lo que estaba antes.
Es mi primer plugin así que quizás no está tan optimizado… aunque considero que no es tan inestable como pensé que podía quedar :)

Pueden descargarlo desde GitHub o ver un ejemplo del funcionamiento desde esta demo

El uso básico es el siguiente, solo deben pasarle un listado de palabras a mostrar, ya incluye algunas por defecto (wow, so doge y asi):

También se puede parametrizar un poco, con estas opciones:

Jul 012013
 

Así como existe una licencia para conducir que te permite manejar un vehículo debería existir un carnet que te habilite la entrada a los cines. La deberías sacar con un exámen previo con normas de convivencia y reglas básicas.
Este carnet se renovaría, podrías sacar entradas con un ID único y asi llevar un registro.

Se podría imponer un sistema de puntos, que te descuenten por:

  • Hablar: 3 puntos
  • Hablar por teléfono: 5 puntos.
  • Spoilear: 10 puntos.
  • Revolver el pochoclo: 1 punto.
  • Abrir caramelos: 2 puntos.
  • Tomar gaseosa cuando ya no hay nada: 2 puntos.
  • Ir con un bebé: 5 puntos.

Al perder x cantidad de puntos, se te revoca la licencia por unos meses y para renovarla hay que hacer un curso.

No aseguraríamos que, al ir al cine, no renegaríamos con pelotudos que no saben comportarse :D

Oct 212012
 

Hace unos días me puse a portar la barra de progreso que tiene el sistema de paquetes de Arch Linux (activando la opción ILoveCandy) a Python 3 3.X y 2.7. De momento está en fase de prueba, pero es dentro de todo funcional, prometo ir actualizándola cuando pueda.

Para poder instalarlo, pueden bajarse los fuentes desde GitHub (es licencia Beer-ware, una adaptación de BSD) o mejor aún directamente desde PyPi:

La utilización es la siguiente (proximamente voy a hacer que se pueda iterar directamente):

Una vez instanciada la clase, tiene dos métodos públicos:

  • update([value]), actualiza el progreso sumándole el valor del parámetro, por defecto suma 1.
  • progress(value), en vez de sumarizar, se le pasa directamente el valor del progreso.

La salida en consola sería más o menos como esta: