Publicado en Python el 5 de August, 2010 por Fran. (1 comentario)
Después de ver las vistas de django y los modelos de django, toca ver cómo crear formularios web para poder interactuar con los datos de la aplicación.
La clase Forms de django
Los formularios en django son clases que heredan la clase Forms del módulo django.forms, las partes más interesantes de este módulo son los:
- Widgets: son los elementos que forman un formulario, por ejemplo: un cuadro para la introducción de texto (
<input type="text">).
- Campos: Son clases que representan el tipo de datos que tendrán las diferentes partes del formulario, de modo que al enviar el formulario se validarán que se introducirán ese tipo de datos. Por ejemplo:
CharField indicará un campo de texto (como se puede ver es similar a los datos de los modelos).
Además, los campos se transforman automáticamente en widgets que tienen asociados de forma predeterminada, o indicándoles el widget que se quiere usar.
En el caso que se ha venido realizando en estos posts, un formulario para introducir los datos del usuario podría ser:
# forms.py
#-*- coding: utf-8 -*-
from django import forms
class FormularioUsuario (forms.Form):
"""Formulario para guardar un usuario en la base de datos."""
nombre = forms.CharField (max_length=40)
apellidos = forms.CharField (max_length=40)
email = forms.EmailField ()
Este formulario se podrá utilizar en la vista correspondiente de modo que cualquiera pueda introducir los datos de un usuario y que la vista los procese para guardarlos en la base de datos.
Leer el resto »
Publicado en Linux, Recursos el 20 de April, 2010 por Fran. (4 comentarios)
La mejor funcionalidad de SSH es poder usar pares de claves (pública/privada) para autenticarse en una máquina sin necesidad de introducir una contraseña. El problema radica cuando necesitas usar varios pares de claves, por ejemplo: para acceder diferentes máquinas sin compartir un mismo par de claves. Pero como con todo, siempre hay una solución para poder usar varios pares de claves distintos.
Partiendo de que se han generado dos pares de claves:
$ ssh-keygen -t rsa -f ~/.ssh/id_rsa.work -C "fran@trabajo"
$ ssh-keygen -t rsa -f ~/.ssh/id_rsa.home -C "fran@casa"
La forma sencilla es crear el archivo «~/.ssh/config», añadiéndole las siguientes líneas:
IdentityFile ~/.ssh/id_rsa.work
IdentityFile ~/.ssh/id_rsa.home
De este modo, cada vez que SSH conecte con una máquina intentará usar alguna de esas dos claves. Sin embargo, SSH permite realizar un control más granular sobre las claves, para ello habría que tener un archivo «~/.ssh/config» similar al siguiente:
Host 192.168.0.100
IdentityFile ~/.ssh/id_dsa.home
User franchukelly
Host ssh.trabajo.com
IdentityFile ~/.ssh/id_rsa.work
User fran
Port 2211
Dónde cada campo Host permite definir una pequeña configuración que se usará de forma predeterminada cuando se realice una conexión a la dirección indicada. Por ejemplo:
$ ssh ssh.trabajo.com
SSH usaría la clave «id_rsa.work», junto al usuario «fran» y el puerto 2211.
Basado en Multiple ssh private keys.
Publicado en General, Windows el 12 de April, 2010 por Lek. (2 comentarios)
No todo en la programación es programar. Además hay que instalar en los servidores de los clientes. Supongo que la mayoría estáis familiarizados con el Terminal Server, un componente de control remoto que viene incluido en Windows y que es lo que en mi caso utilizo masivamente con los servidores de esta plataforma (junto al VNC).
El problema del TS es que utiliza un sistema de sesiones que impide que haya más de 2 sesiones de administrador en el equipo. Si la gente no tiene costumbre de cerrar correctamente su sesión nos podemos encontrar con que no podemos conectar a pesar de que nadie esté trabajando con el servidor remotamente. Pues atención, niños y niñas, que nada es imposible en esta vida. A continuación se lista lo que hay que hacer para desbloquear esas sesiones colgadas (al menos para los que trabajéis con Windows):
- Abrid un terminal de línea de comandos (Inicio -> ejecutar -> cmd)
- Ejecutad la siguiente orden (cambiando los valores), pedirá la contraseña del usuario:
> net use /user:[usuario] \\[ip servidor]\c$
El 99% de los Windows con los que he trabajado tienen compartido de forma predeterminada todo el disco C a través de C$.
- Después hay que ejecutar:
> query session /server:[ip servidor]
Nunca me ha funcionado así, sino poniendo la ruta completa, esto es, c:\Winnt\system32\dllcache\query ...
- Mostrará un listado con las sesiones. Habrá que mirar que la que se quiere desconectar no esté activa (esté en Listen, o Disconnected o algo así). Una vez seleccionada la sesión, hay que ejecutar:
> reset session [ID] /server:[ip servidor]
Voilá. Ya podemos ir a nuestro cliente de Terminal y conectarnos al servidor.
Traducido del original en How-To Geek, donde además os pone capturas de lo que veréis por pantalla, por si a alguno no le ha quedado clara mi espartana explicación.
Publicado en Git, Linux, Script, Subversion el 6 de April, 2010 por Fran. (5 comentarios)
Hace unos días tuve que convertir un repositorio de subversion a un repositorio de Git. Después de buscar un poco por Google, encontré la manera de hacerlo en una web del wiki de Debian sobre cómo configurar Git en su web de proyectos Alioth.
Antes de nada, hay que crear un archivo con los nombres de los desarrolladores que han usado el repositorio de subversion, el archivo tendrá el siguiente formato:
pepe = Pepe Garcia <pepe@garcia.es>
juan = Juan Gonzalez <juan@gonzalez.es>
Los nombres de los desarrolladores del repositorio de subversion se pueden conseguir ejecutando:
$ svn log "svn://REPOSITORIO-SVN/" | awk -F'|' '/^r[0-9]+/ { print $2 }' | sort -u
Este archivo se debe guardar como «authors.txt» para que mi script lo localice, aunque no sería muy difícil cambiar mi script para que se le pase la ruta como pará.
Mi script «svn2git.sh»
Este script se descarga el repositorio indicado (usando git-svn) y convierte y/o borra todos los datos relativos a subversion, como las ramas, los tags, …
#!/bin/sh
# Converts a subversion repository to a Git one.
# git-svn must be installed.
if [ $# -lt 2 ]; then
echo "Usage: $0 SVN-REPOSITORY LOCAL-PATH"
exit 1
fi
git svn clone $1 --stdlayout --authors-file=authors.txt --no-metadata $2
cd $2 > /dev/null
for t in `git branch -r | grep 'tags/' | sed s_tags/__`; do
git tag $t tags/$t^
git branch -d -r tags/$t
done
git branch -d -r trunk
git config --remove-section svn-remote.svn
rm -fr .git/svn .git/{logs/,}refs/remotes/tags/
cd - > /dev/null
exit 0
Publicado en Git, Linux el 5 de April, 2010 por Fran. (6 comentarios)
Para todos aquellos que tengan que configurar un servidor de repositorios de Git y lo quieran hacer a mano, como me pasó a mí hace unos días, aquí tienen un pequeño manual:
- Instalar git:
# apt-get install git-core
- Crear la estructura de los directorios dónde se almacenarán los repositorios de Git:
# install -d -m 0755 /srv/algo/git /srv/algo/git/repos /srv/algo/git/.ssh
- Crear el usuario de Git (llamado git):
# adduser --system --home /srv/algo/git --no-create-home \
--shell /usr/bin/git-shell --gecos 'git version control' --group \
--disabled-password git
- Crear un repositorio:
$ cd /srv/algo/git/repos
# install -d -o git -g git -m 0700 PROYECTO.git
# sudo -H -u git env GIT_DIR=PROYECTO.git git --bare init
- Añadir una clave pública de SSH para poder acceder al repositorio:
$ cd /srv/algo/git/.ssh
# cat CLAVE >> authorized_keys
- Para clonar el repositorio hará falta tener la clave privada de la clave pública usada, y ejecutar:
$ git clone git@SERVIDOR:repos/PROYECTO.git
Basado en Howto host git on your Linux box.