A Django site.
Noviembre 21, 2008
» sobre los skins de gmail.

SON UNOS SKINS Y PUNTO. NO HAY NADA DE MAGICO O INNOVADOR CON PONERLE SKINS A UNA APLICACION WEB (de codigo cerrado).

Espero leerlos/escucharlos tambien cuando lancen la version 1.5 de SquirrelMail que tendra soporte para templates, con el mismo enfasis.

Noviembre 3, 2008
» Imetal gray para xfce.

Desde hace un tiempo estoy usando un theme para xfce (y gnome) que se llama “imetal“, que es del tipo que me gustan a mi: minimalista.
Sin embargo este theme tenia algo que no me terminaba de convencer (?), asi que puse manos a la obra y empece a editarlo para que quede a tono con el otro tema de gtk-2.0 que estaba usando: Clearlooks-compact+ClearlooksMetallico.
El resultado de la edicion del tema imetal termino en dos themes basados en el imetal original: imetal-gray-dark e imetal-gray-light.
Ahora como se acostumbra, un screenshot:

Aca estoy utilizando al theme imetal-gray-light para los bordes de las ventanas y a Clearlooks-compact+ClearlooksMetallico para la interfaz en general.

Por cierto, como hice para utilizar dos themes al mismo tiempo? Uno lo seleccione desde las settings desde xfce y el otro lo agregue a mi ~/.gtkrc-2.0 con la siguiente linea:
include "/home/USUARIO/.themes/Clearlooks-compact/gtk-2.0/gtkrc"

Para descargar a imetal-gray-light, click aca.
Para descargar a imetal-gray-dark, click aca.
Para descargar a Clearlooks-compact, click aca.
Para descargar a ClearlooksMetallico, click aca.

Agosto 5, 2008
» custom tags en django

Luego de combatir durante un rato largo y encontrar poca documentacion los custom tags en django, paso a escribir un resumen de como crearlos:

Antes que nada los custom tags son una suerte de funciones que aplicamos a las variables que queremos imprimir en los templates
Ej en PHP:

strtoupper($variable);

Ej en Django:

{{ variable|upper }}

Se entendio la idea? Continuemos

Digamos que tenemos la aplicacion “contenido” la cual vendria a ser una suerte de tabla de un blog.
Y el tree se veria algo asi:

/djangoapp
 __init__.py
 settings.py
 urls.py
 manage.py
 templates/
   base.html
 contenido/
   __init__.py
   models.py
   views.py

En el archivo templates/base.html tenemos todo lo que vamos a mostrar, que podria verse de la siguiente manera:

{{ titulo }}
{{ texto }}

Que al intentar visualizarlo, veremos algo asi:

este es el titulo
este es el texto

Cuando en realidad, lo que queremos es que el resultado final sea el siguiente:

<h1>este es el titulo</h1>
<p>este es el texto</p>

Nota: si bien podriamos escribir los condenados tags HTML, vamos a hacer que se auto-escriban como un custom tag.

Bien, para lograr esto primero debemos crear un directorio llamado ‘templatetags’ dentro de nuestra aplicacion ‘contenido’ y dentro del nuevo directorio, creamos dos archivos mas:
* __init__.py : Este archivo lo debemos crear para que el directorio funcione como un modulo y podamos utilizarlo.
* custom_tags.py : Aca vamos a escribir nuestros tags.

Luego de haber hecho esto, el tree de nuestra djangoapp deberia ser algo similar a esto:

/djangoapp
 __init__.py
 settings.py
 urls.py
 manage.py
 templates/
   base.html
 contenido/
   __init__.py
   models.py
   views.py
   templatetags/
     __init__.py
     custom_tags.py

Escribimos los custom tags en el archivo custom_tags.py:

from django import template
register = template.Library()

@register.filter
def str_to_h1(s):
    return u'<h1>%s</h1>' % s

@register.filter
def str_to_p(s):
    return u'<p>%s</p>' % s

Ahora que ya tenemos todo listo, solamente resta cargar nuestros nuevos tags al principio del template (lease ‘base.html’ o cualquier archivo que utilicemos para mostrar contenido):

{% load custom_tags %}

{{ titulo|str_to_h1|safe }}
{{ texto|str_to_p|safe }}

Nota: El tag ’safe’ que agregue es para que Django no escape al HTML.

Ya habiendo realizado todo eso, deberiamos poder visualizar nuestro ejemplito como queriamos al principio.

Por cierto, si por alguna razon no esta funcionando, asegurense de que en la tupla INSTALLED_APPS en el archivo settings.py este incluida la aplicacion a la cual le agregamos los custom tags.
Ej:
INSTALLED_APPS = (’djangoapp.contenido’,)

Junio 25, 2008
» ssh

ssh

SSH!
DON’T GIVE AWAY YOUR PASSWORD TO ANYWONE WHO MIGHT BE LISTENING!

Always use SSH (Secure SHell) when connecting
to Computer Science Department hosts, instead of
telnet of rsh. For more information:
http://www.cs.umd.edu/faq/ssh.html

nose, la encontre el otro dia ‘por ahi’ y me cayo simpatica.