Mostrando entradas con la etiqueta nota. Mostrar todas las entradas
Mostrando entradas con la etiqueta nota. Mostrar todas las entradas

sábado, 14 de enero de 2012

[Git] - Moviendo trabajo pendiente

En mis desarrollos, tanto personales como los profesionales, uso git. Tengo varias máquinas y a veces necesito mover trabajo inacabado de una a otra. No se debería hacer un commit con código que no funciona o sin terminar, o por lo menos este código no debería quedar almacenado en el arbol una vez terminado el trabajo. A continuación voy a poner la secuencia de comandos que sigo para subir al repo código sin terminar de manera temporal y como lo integro en la rama final una vez terminado.

Partimos de la máquina #1 con modificaciones de código pero incompletas, hacemos lo siguiente:

git stash
git checkout -b working-branch
git stash pop
git commit  -m 'working'
git push oringin working-branch


Maquina #2
Actualizamos  el código código con git pull
nos ubicamos en la rama que deseemos seguir con el trabajo que estabamos realizando y compiamos el commit que hemos llamado 'working'
git cherry-pick  <commit-ish>
seguimos trabajando hasta tener el código terminado y hacemos un nuevo commit con la opción --amend
git commit --amend -m 'mensaje definitivo'



miércoles, 27 de octubre de 2010

Nota Django: sobreescribiendo métodos

http://docs.djangoproject.com/en/dev/topics/db/models/#overriding-predefined-model-methods

En el ejemplo siguiente se muestra como sobreescribir el método save() de un modelo. Lo importante es poder añadir más código al función pero sin perder la funcionalidad primitiva.


class Model(models.Model):
pass

def save(self, *args, **kwargs):
#add some functionality
super(Model, self).save(*args, **kwargs) # Call the "real" save() method.
#add some functionality

martes, 21 de septiembre de 2010

Nota python: Eliminar elementos repetidos de una lista

Necesitaba eliminar elementos repetidos de una lista, la primera aproximación sería recorrer la lista e ir comprobando si los elementos están repetidos. Decidí buscar otras opciones y he encontrado dos formas de eliminar elementos repetidos de una lista. Ninguno de estas dos formas respeta el orden inicial de la lista.

Uso del tipo de dato set (conjunto de datos mutable, sin orden, que no contiene duplicados). Convertimos primero la lista a tipo set y luego volvemos a convertir el tipo set en lista.

>>>lst = [1, 1, 3, 2]
>>> lst
[1, 1, 3, 2]
>>> lst = list(set(lst))
>>> lst
[1, 2, 3]

En el siguiente ejemplo hacemos uso de los diccionarios para eliminar los elementos repetidos. Primero creamos un diccionrio donde las claves están almacenadas en la lista. Depués obtenemos las claves del diccionario que acabamos de crear.

>>> lst = [1, 1, 3, 2]
>>> lst
[1, 1, 3, 2]
>>> lst = dict.fromkeys(lst)
>>> lst
{1: None, 2: None, 3: None}
>>> lst = lst.keys()
>>> lst
[1, 2, 3]

lunes, 23 de agosto de 2010

Django: Restaurar una tabla borrada a mano de una aplicación gestionada con South

Estaba haciendo unas pruebas con la base de datos y necesitaba limpiar una tabla, por error, en vez de borrar el contenido, eliminé la tabla de la base de datos.

Si se intenta migrar la aplicación, South no restaura la tabla, ya que no se comprueba si las tablas están creadas en la base de datos. Si por el contrario, al ejecutar el comando "python manage.py syncdb", tampoco crea la tabla ya que detecta la tabla está gestionada por south. Para poder generar la tabla, se hace con el comando syncdb, pero además hay que incluir el parámetro -all.
python manage.py syncdb -all