http://www.makepovertyhistory.org

sábado, mayo 05, 2007

Probando suerte en otros lares

Ahora estaré acá : http://dvst.wordpress.com , veamos por cuanto tiempo (en realidad es mi tercer blog, primero este, luego mi pc (bloxsom) y ahora wordpress), lo que he visto me gusta mucho mas que blogspot.
  • Me permite subir varios tipos de archivos, no solo imagenes (he notado que blogspot no muestra las animaciones .gif, raro y un punto importante para mudarme)
  • Siempre que quiero subir una foto en el editor de blogspot, se jala la imagen y cuando hago clic en el editor la pega, ya veces pierdo parte de lo que escribía.
  • Desde hace un tiempo he querido probar wordpress, y desde hace un tiempo no veo motivos para usar blogspot.
Nos vemos entonces.

PD: No creo que estén muertos, a locke lo van a engañar, kate no tuvo que haberle dicho algo a jack, menos frente a juliet, por un momento pensé que el papá de locke era el mismo james en el futuro :P


Etiquetas:

martes, abril 24, 2007

Yo tomé el exame de diseñadores web, tu deberías


A list apart está realizando un examen para llevar unas estadísticas de los diseñadores/desarrolladores/etc web a nivel mundial.

En el examen hay preguntas como: "cuanto ganas", "que tareas haces en tu trabajo?", "que te exigen en el trabajo", "donde te vez en 5 años", en fin, yo lo tomé y estoy participando en un concurso, me enteré después de hacerlo :P


toma el examen

Etiquetas: , ,

domingo, abril 15, 2007

Generando PDF's usando Catalyst y PDF::CreateSimple




Esto es algo que me he dispuesto hacer desde hace un tiempo para darle mejor formato de salida a los reportes que genera mi tesis, pero no hallaba la forma de como hacerlo, acá el resultado después de un tiempo.

Los pasos son:
  1. Crear un proyecto.
  2. Al controlador que llamaremos, le agregamos el modulo a usar y agregamos una acción que será la que genere el pdf.
  3. Llamamos el controlador desde el navegador para obtener de respuesta el pdf.
1
catalyst.pl pdfSimple

2
Editamos el controlador "Root.pm" (nuestro caso) para que quede con estos cambios
--- Root.pm
+++ Root-new.pm
@@ -1,5 +1,6 @@
package pdfSimple::Controller::Root;

+use PDF::CreateSimple;
use strict;
use warnings;
use base 'Catalyst::Controller';
@@ -39,6 +40,17 @@

=cut

+sub pdf : Local {
+ my ($self,$c,$mensaje) = @_;
+
+ my $pdfFile = PDF::CreateSimple->new("root/reporte.pdf",undef,'LETTER');
+ $pdfFile->drawText($mensaje,'Verdana',10,200,450,'black',3);
+ $pdfFile->drawText('Generado con http://www.catalystframework.org/','Verdana',10,200,400,'black',3);
+ $pdfFile->drawImage('root/images/catalyst-logo.png',250,300);
+ $pdfFile->closeFile; # <- esto no envía el pdf para descargar, sino que lo guarda en el disco
+ $c->res->redirect("/archivo.pdf"); # <- acá enviamos al navegador a que muestre el archivo recién guardado
+}
+
+
sub end : ActionClass('RenderView') {}

Es una forma poco elegante, pero funciona en el caso que se quiera usar PDF::CreateSimple (es el modulo que conseguí que se parece mas a fpdf de php)

3
Luego con colocar http://localhost:3000/pdf/clave-123456 en el navegador, debe mandarnos a descargar el archivo pdf, la desventaja de usar este método es que generamos un archivo dentro del proyecto, pero igual podemos lidiar con ello, ya sea eliminándolo con una tarea usando cron o ubicándolo en un directorio y cada vez que se llame el reporte... sobreescribir este.

Material extra:
Artículo de como generar PDF's usando Catalyst, sólo conseguí este http://www.catalystframework.org/calendar/2006/12 Pero el hecho que no es recomendable usarlo en un servidor en producción (porque se altera el módulo agregándole unos parámetros) y la forma como advierten me pusieron a buscar otra alternativa. En eso después de buscar y buscar [1] y no conseguir "esa" forma, entro al canal oficial de irc del proyecto (irc.perl.org #catalyst) donde jshirley, mts y zamolxes me abrieron un poco los ojos al decirme que:

"<> there's nothing magical about catalyst, it doesn't get in your way, it just dispatches urls to actions"

=> No hay algo mágico en catalyst, no se atraviesa en tu camino, el solo despacha url's a acciones.

y me pasaron este ejemplo:

use PDF::CreateSimple;
$pdf = PDF::CreateSimple::idontknowtheapi();
$c->res->body($pdf);
$c->res->content_type('application/pdf');

El cual no aplica fielmente a lo que terminé haciendo, pero es porque el módulo PDF-CreateSimple trabaja diferente.

Espero que esto sea de ayuda para cualquiera, un post mas.

[1] http://www.gossamer-threads.com/lists/catalyst/users/8028

domingo, abril 08, 2007

Debian GNU/Linux 4.0 (Etch) Liberado hoy


Esta mañana leyendo mi cuenta de netvibes, me entero que finalmente etch es estable oficialmente.

Acá el anuncio oficial traducido.

Debian GNU/Linux 4.0 publicada

8 de abril de 2007

El proyecto Debian se complace en anunciar la publicación oficial de
la versión 4.0 de Debian GNU/Linux, nombre en clave "etch", tras 21
meses de desarrollo constante. Debian GNU/Linux es un sistema
operativo libre que soporta un total de once arquitecturas de
procesador e incluye los entornos KDE, GNOME y Xfce. También incluye
programas criptográficos, es compatible con la versión 2.3 del FHS y
con aquellos programas desarrollados para la versión 3.1 de la LSB.

Debian GNU/Linux 4.0 incluye un proceso de instalación totalmente
integrado, incluyendo soporte de creación de usar particiones
cifradas. Esta publicación introduce una nueva interfaz gráfica del
sistema de instalación que soporta tanto grafías que utilizan
caracteres compuestos como lenguas complejas. El sistema de
instalación de Debian GNU/Linux ahora está traducido a 58 idiomas.

A partir de Debian GNU/Linux 4.0, se ha mejorado la seguridad y la
eficiencia del sistema de gestión de paquetes. «APT seguro» («secure
APT») hace posible verificar la integridad de los paquetes descargados
desde un servidor réplica. Además, no se actualizan los índices de los
paquetes descargando un fichero completo, sino parcheándolo con
archivos más pequeños que contienen sólo las diferencias con las
versiones anteriores.

Debian GNU/Linux se ejecuta en ordenadores que van desde PDA y
sistemas de bolsillo a supercomputadores, pasando por prácticamente
cualquier sistema intermedio. Hay mantenimiento para un total de once
arquitecturas: Sun SPARC (sparc), HP Alpha (alpha), Motorola/IBM
PowerPC (powerpc), Intel IA-32 (i386) e IA-64 (ia64), HP PA-RISC
(hppa), MIPS (mips, mipsel), ARM (arm), IBM S/390 (s390) y (por
primera vez introducido en Debian GNU/Linux 4.0) AMD64 e Intel EM64T
(amd64).

Se puede instalar Debian GNU/Linux de varias formas: desde DVD, CD,
memorias USB y disquetes, o utilizando una red. El entorno de
escritorio predeterminado es GNOME y se distribuye en el primer CD, se
pueden instalar los entornos de escritorio K (KDE) y Xfce usando las
dos nuevas imágenes de escritorio alternativas. También, por primera
vez en Debian GNU/Linux 4.0, se proporcionan CDs y DVDs
multiarquitectura que permiten la instalación de múltiples
arquitecturas desde un único disco.

Puede descargar Debian GNU/Linux usando bittorrent (ahora es el método
recomendado), jigdo o HTTP. Para más información consulte
<http://www.debian.org/CD/>. Además, pronto estará disponible en DVD y CD-ROM a
través de numerosos distribuidores (más información en
<http://www.debian.org/CD/vendors/>)

Esta publicación incluye varias actualizaciones de los paquetes de
programas, como el entorno de escritorio K 3.5.5a (KDE), una versión
actualizada del entorno de escritorio GNOME 2.14, el entorno de
escritorio Xfce 4.4, el escritorio GNUstep 5.2, X.Org 7.1,
OpenOffice.org 2.0.4a, GIMP 2.2.13, Iceweasel (una versión de Mozilla
Firefox 2.0.0.3 que no utiliza la marca registrada), Icedove (una
versión de Mozilla Thunderbird 1.5 sin la marca registrada), Iceape
(una versión de Mozilla Seamonkey 1.0.8 sin la marca registrada),
PostgreSQL 8.1.8, MySQL 5.0.32, la colección de compiladores de GNU
4.1.1, la versión 2.6.18 del núcleo Linux, Apache 2.2.3, Samba 3.0.24,
Python 2.4.4 y 2.5, Perl 5.8.8, PHP 4.4.4 y 5.2.0, Asterisk 1.2.13, y
más de otros 18.000 paquetes listos para usarse.

La herramienta de gestión de paquetes «aptitude» gestiona la
actualización a Debian GNU/Linux 4.0 desde la versión anterior, Debian
GNU/Linux 3.1, nombre en clave "sarge", de forma automática para para
la mayoría de las configuraciones. Esta actualización se puede hacer
en cierta medida también a través de la herramienta de gestión de
paquetes «apt-get». Como siempre, los sistemas Debian GNU/Linux se
pueden actualizar practicamente sin miedo, en el momento, sin forzar
ninguna caída del sistema, pero se ruega encarecidamente la lectura de
las notas de publicación para anticipar cualquier problema. Si desea
las instrucciones detalladas sobre instalar o actualizar Debian
GNU/Linux, por favor, lea las notas de publicación disponibles en
<http://www.debian.org/releases/etch/releasenotes>. Por favor, tenga en
cuenta que las notas de publicación se mejorarán y traducirán a otros
idiomas en las próximas semanas.

[N. del T.: la traducción al español está ya disponible ]

Sobre Debian

Debian GNU/Linux es un sistema operativo libre, desarrollado por más
de mil voluntarios de todo el mundo que colaboran mediante Internet.
La dedicación de Debian al software libre, su naturaleza no comercial,
y su modelo de desarrollo abierto la hacen única entre las
distribuciones de GNU/Linux.

Los puntos fuertes del proyecto Debian son su enorme base de
voluntarios, su dedicación al contrato social de Debian y su
compromiso de ofrecer el mejor sistema operativo posible. Debian 4.0
es otro paso importante en esa dirección.


http://lists.debian.org/debian-announce/debian-announce-2007/msg00002.html

jueves, abril 05, 2007

Shocker Rider


Shocker Rider

Combinación de un Shocker y Ghost rider. Ahora solo falta ver la película (Hoy espero ver 300)

miércoles, abril 04, 2007

css naked day

Con este post (y posterior eliminación de estilo durante un día) me uno a la iniciativa del "css naked day" para difundir y mostrar la importancia de usar estandares web (en este caso css)

domingo, marzo 25, 2007

marcar varios checkbox con tecla shift

Bueno, volvemos con este blog, tuve que dejar bloxsom que lo tenía en mi equipo hasta conseguir un equipo que pueda dedicar para postear (y tener control total del blog) , no me gusta mucho la idea de usar blogspot.

Hace unos días vi el articulo Check it, don't select it, donde recomiendan por usabilidad y accesibilidad, usar listas de checkbox en caso de selección múltiple en vez de un select con el atributo "multiple", el resultado me gustó. Conversando con grunch discutíamos las ventajas/desventajas, en esa salio el hecho de que con el select multiple, al usar la tecla shift, se pueden marcar varias opciones sin mucho esfuerzo, solo marcando un "desde" y "hasta", recordé que ese es el comportamiento de gmail y decidí hacerlo a mi manera con jquery, una librería de javascript que me está gustando bastante (de las que he usado... la que considero mas intuitiva, y el hecho que trabaje gran cantidad de plugins (algunos los llaman widgets) y sea muy ligera, le da puntos a favor).


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html dir="ltr" lang="es">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="librerias/jquery/jquery-1.1.2.js"> </script>
<script type="text/javascript" >
$(document).ready(function(){
var checkAnterior;
$("input").click(function(event){

// se toma el valor actual del check marcado
checkActual = parseInt(this.id.substr(2));

// se guarda el estado de la tecla shift (devuelve un booleano)
eventoShift = event.shiftKey;

if (eventoShift){ // si presiono shift
if (checkAnterior < checkActual ){

// si el anterior es meno que el actual se hace un marcado en forma acendente
for ( i = checkAnterior ; i <= checkActual ; i++ ){

// concateno la cadena fija del nombre del check con su variable
elemento = "#w_"+i;

// usando jquery, le asigno el atributo checked=true para marcarlo
$(elemento).attr("checked","true");
}
}else if(checkAnterior > checkActual){
// si el anterior es mayor que el actual se hace un marcado en forma decreciente
for ( i = checkAnterior ; i >= checkActual ; i-- ){
elemento = "#w_"+i;
$(elemento).attr("checked","true");
}
}
}
checkAnterior = parseInt(this.id.substr(2));

});
});

</script>
<title> dvst @ vim </title>
</head>
<body>

<form action="" method="post" name="form1" id="form1"><br>
<label for="w_1"><input type="checkbox" id="w_1" name="w_1" /> Elemento 1 </label><br>
<label for="w_2"><input type="checkbox" id="w_2" name="w_2" /> Elemento 2</label><br>
<label for="w_3"><input type="checkbox" id="w_3" name="w_3" /> Elemento 3</label><br>
<label for="w_4"><input type="checkbox" id="w_4" name="w_4" /> Elemento 4</label><br>
<label for="w_5"><input type="checkbox" id="w_5" name="w_5" /> Elemento 5</label><br>
<label for="w_6"><input type="checkbox" id="w_6" name="w_6" /> Elemento 6</label><br>
<label for="w_7"><input type="checkbox" id="w_7" name="w_7" /> Elemento 7</label><br>
</form>
</body>
</html>

El efecto se ve mejor si se hace click sobre los checks, al darle click en las etiquetas funciona también, pero estas se sombrean.

Referencias: DOM:event.shiftKey

Este es uno de los tantos scripts que se me ocurren a diario y quisiera compartir, espero algún día llegar a tener un SOTD (script of the day). Si tienes una idea interesante (y mas aún... útil) para algún script (javascript mas que todo) y no sabes como hacerlo, enviarla a templeofdvst AT NOSPAM gmail (dot) com , así, si me parece interesante (y si lo resuelvo :P) lo publico por acá :)

Saludos.