elige tu idioma english spanish

archivearchivo del blog

todos los posts publicados en: febrero 2010

¡Aquí está por fin la nueva web de thecodefarm!

Parece que fue ayer cuando pusimos nuestro splash de "Web en construcción" pero ya ha pasado un año desde entonces. Como se suele decir, en casa de herrero cuchara de palo, y así ha sido en nuestro caso, nos ha costado sacar tiempo para dedicárselo a nuestra propia web, pero aquí está ¡al fin!

Como podéis ver, hemos integrado la web y el blog de tal manera que podáis estar al tanto de las últimas noticias pero también conocer mejor al equipo y los servicios en los que estamos trabajando.

Para los que aún no nos conocen, thecodefarm está formada por cuatro jóvenes emprendedores a los que nos encanta el desarrollo web y todo lo relacionado con él. Os dejamos una foto, para que podáis ponernos cara ;)

team

Hemos aprovechado esta oportunidad para crear un sistema de gestión de blogs propio de tal manera que a partir de una misma plataforma podamos crear aquellos blogs que vayamos necesitando para los servicios que ofrecemos. Fácil de gestionar, amigable y tremendamente adaptable a nuestras necesidades. Como siempre, aprovechamos la menor oportunidad para aprender y mejorar, esperemos que el resultado este a la altura.

Este va a ser un año de "estrenos" para thecodefarm, así que estad atentos a nuestra web y blog para no perder detalle.

Os agradecemos a todos el interés que habéis mostrado por nuestro proyecto y el apoyo que hemos recibido. Muy pronto conoceréis los nuevos servicios que nos han mantenido ocupados estos últimos meses, esperamos veros pronto disfrutando de ...

» seguir leyendo

Configurando debian 4.0 (etch) para usar geodjango

¿Qué es GIS?

GIS, sistema de información geográfica, su acrónimo inglés (Geographic Information System) se aplica a la integración necesaria para capturar, almacenar, manipular y analizar información geográficamente referenciada con el fin de resolver problemas complejos de otra manera imposibles de resolver.

¿Qué es geodjango?

Geodjango, inicialmente una extensión de django termino formando parte del core el 5 de agosto de 2008, tiene como objetivo facilitar lo máximo posible realizar aplicaciones web que utilicen información GIS.

A modo de ejemplo esta sería una query que podríamos ejecutar desde nuestro proyecto django:

Location.objects.distance(‘POINT (42.862376386912, 2.690448760986)’).order_by('distance')[:5]

Geodjango nos devolvería los cinco objetos más cercanos a esas cordenadas ordenados por su distancia.

Configurando el servidor

Si bien dispone de una excelente documentación vamos a resumir los pasos a seguir para configurar nuestro servidor debian Etch 4.0 para utilizar postgis la extension de postgres necesaria para trabajar con bases de datos gis usando geodjango. Necesitamos instalar unos cuantos paquetes:

sudo apt-get install binutils bzip2 gcc g++ flex make postgresql-8.1 postgresql-server-dev-8.1 python-ctypes python-psycopg2 python-setuptools postgresql-8.3-postgis

Antes de nada vamos a crear lo siguientes vínculos logicos:

ln -s /usr/share/postgresql-8.3-postgis/{lwpostgis,spatial_ref_sys}.sql /usr/share/postgresql/8.3

A continuación vamos a crear la template GIS necesaria, para ello nos identificamos como postgres utilizando:su - postgres y a continuación creamos y ejecutamos el siguiente script:

#!/usr/bin/env bash
createdb -E UTF8 template_postgis
createlang -d template_postgis plpgsql
psql -d template_postgis -f `pg_config ...

» seguir leyendo

SASS con Compass, una nueva manera de entender las CSS

SASS, una manera diferente de trabajar con CSS. Para los que están acostumbrados a programar en lenguajes de alto nivel, les resultará mucho más cercano y versátil que la edición de CSS tradicional. Su principal reclamo es la simplicidad y la legibilidad del código que generamos.

Compass, sin embargo, es la herramienta que nos permitirá generar en tiempo real nuestras CSS a partir de los archivos en SASS, de una manera totalmente transparente.

¿Qué es SASS?

SASS es un meta-lenguaje mediante el cuál podremos describir los estilos de nuestros documentos de una manera más clara y estructurada. Lo que se hace después es interpretar ese meta código y generar una CSS válida con los valores declarados en nuestros archivos SASS.

Primero vamos a intentar familiarizarnos con la sintaxis de SASS.

	#container
		width: 1000px
		height: 100%

	#header
		width: 100%
		height: 50px
		color: #171717

Como podéis ver en ejemplo anterior no hay apertura ni cierres de selectores, tampoco hay indicación de fin de sentencia con ;. Este lenguaje al igual que Python, entre otros, se basa en la tabulación del código. Interpreta el final de una sentencia mediante el salto de línea y la herencia según la tabulación. Con lo que el resultado que obtendríamos de este código en CSS sería el siguiente.

	#container { width: 1000px; height: 100%; }

	#container #header { width:100%; height:50px; color:#171717; }

¿Por qué usar SASS?

Hay claramente dos motivos que pueden hacer decantarnos por empezar a utilizar SASS. Por un lado está la ganancia en legibilidad. Es mucho ...

» seguir leyendo

Pasarela, de bajo coste, para envío de SMS (Primera parte)

Hoy en día, muchos de los servicios web de los que hacemos un uso cotidiano, tienen la posibilidad de enviar notificaciones vía SMS a nuestros teléfonos móviles. De esta forma, podemos recibir los últimos tweets, o nuestras próximas citas en nuestro terminal sin la necesidad de disponer de una tarifa de datos asociada a nuestro móvil. Un servicio gratuito que, sin ninguna duda, aporta un gran valor y es de mucha utilidad para casi todos usuarios.

Es evidente, que para dar servicio a cientos de usuarios, lo mejor es hacer uso de uno de los cientos de servicios de pasarelas SMS que existen por internet, que ofrecen gran variedad de servicios tanto de envío de SMS como para efectuar micropagos así como de sofisticadas APIs que se adaptarán a nuestro proyecto, a un precio asequible. ¿Pero que ocurre cuando el volumen de SMS que vamos a enviar es relativamente bajo?

La respuesta es obvia, el precio se dispara, o al menos la inversión inicial es relativamente alta. Por eso en thecodefarm labs hemos decidido montar una pasarela SMS de bajo coste con múltiples propósitos, reciclando material obsoleto y porque no, simplemente para divertirnos. Así que vamos... ¡Manos a la obra!

Primero, hemos de diferenciar tres partes en este proceso, donde necesitaremos diferentes conocimientos y que rondarán diversas áreas, como son las del software, el hardware y conocer un poco el mercado de las telecomunicaciones. Además necesitaremos lo siguiente:

  • Un teléfono móvil compatible con Gammu.
  • Un cable de datos para conectar ...

» seguir leyendo

Manejo de formularios en Django (Primera Parte)

Una vez más Django acude a salvarnos la vida, esta vez, mediante el manejo de formularios. A nadie le gusta tener que meter a mano todos los campos dentro de un form al estilo de:

cuando tienes la opción de, simplemente, sustituirlo por

{{ form }}

Imaginemos que queremos realizar un formulario que interactúe con la siguiente clase:

class ExampleUser(models.Model):
    
    user = models.ForeignKey(User,unique=True)
    email = models.EmailField(max_length=40,blank=False,unique=True)
    edad = models.IntegerField(blank=False, null=False, default=333)

El caso más sencillo sería desarrollar nuestro propio formulario en python, en un fichero llamado forms.py.

Lo primero de todo es importar los formularios de django, y la clase de la que queremos realizar un formulario.

from django import form.
from example.models import ExampleUser

Y después programar el formulario en sí (en este ejemplo queremos interactuar con el email y la edad de un usuario dado).

class ExampleUserForm(forms.Form):
   
    email = forms.EmailField(max_length=40, required=True)
    edad = forms.IntegerField(required=False)

Este ejemplo es sencillo, y se ve a simple vista la facilidad y potencia que nos otorga Django, pero imaginemos que en lugar de ser una clase con dos ó tres campos, es una clase con cuarenta (o con doscientos). Si no necesitamos realizar grandes alteraciones sobre los campos del modelo (lo que es en el modelo, va a ser en el formulario) podemos echar mano de los modelforms, con lo que nuestra clase quedaría del siguiente modo:

class ExampleUserForm(forms.ModelForm ...

» seguir leyendo

Localización en Django (Internationalization)

En un mercado tan competitivo como el de internet, es prácticamente imprescindible ofrecer nuestros productos en el idioma propio del usuario.

Esta labor de traducción puede resultar bastante tediosa, pero gracias a Django y su soporte para i18n, este trabajo es mucho más llevadero.

Antes de nada, debemos instalar en nuestro sistema las librería gettext, necesaria para compilar los ficheros que contengan las cadenas de texto a traducir.

Simplemente hay que descargarla

curl -O ftp://ftp.gnu.org/gnu/gettext/gettext-0.17.tar.gz

Descomprimimos, y seguimos los pasos habituales:

./configure
make
sudo make install

Mientras nos encontramos desarrollando nuestra aplicación, debemos importar la librería ugettext (dentro de las utilidades de traducción del propio django).

from django.utils.translation import ugettext as _

Para indicar a django que queremos traducir alguna cadena de texto, simplemente tenemos que invocar la función (en este caso "_"):

value = _(u'Texto a traducir')

send_message(user, _('texto que quiero enviar'))

En caso de que vayamos a tratar con contenido dinámico, resulta mucho más interesante utilizar la versión "perezosa" de ugettext (ugettext_lazy), ya que traduce cuando se accede al valor, en vez de hacerlo cuando la función es invocada. Esto nos permitirá, por ejemplo, cargar traducciones dinámicamente en un ChoiceField de un formulario.

from django.utils.translation import ugettext_lazy as _

Si lo que queremos es traducir texto propio de las templates, tenemos que cargar los tags de las traducciones, incluyendo al principio del archivo:

{% load i18n %}

A partir de aquí, para insertar alguna ...

» seguir leyendo