Cuando se cambia de workspace en Eclipse, aparece una lista con los últimos workspaces con los que has trabajado. Aunque estos workspaces se hayan borrado del disco duro, la lista no se actualiza, y puede aparecer alguno que ya no existe. Para modificar esta lista, es necesario editar el fichero 'org.eclipse.ui.ide.prefs'
En mi Ubuntu, este fichero se encuentra en ~/.eclipse/org.eclipse.platform_3.5.0_155965261/configuration/.settings/org.eclipse.ui.ide.prefs
Hay que modificar "RECENT_WORKSPACES"
Mostrando entradas con la etiqueta trucos. Mostrar todas las entradas
Mostrando entradas con la etiqueta trucos. Mostrar todas las entradas
martes, 3 de mayo de 2011
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.
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.
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.
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
Borrar el historial de South.
Para reiniciar completamente el historial de South hay que hacer lo siguiente:
Este comando borra todo el historial de South.
A continuación se tienen que borrar los ficheros.
En este momento ya tenemos el historial de South completamente limpio por lo que es necesario crear las nuevas migraciones:
Si solamente queremos borrar el historial hasta un lugar concreto, hay que hacer lo siguiente:
El atributo --fake, indica que solamente se borran las migraciones de la base de datos, no afecta a lo que contiene la base de datos, es decir, no se aplican los cambios.
A continuación hay que borrar todos los archivos posteriores a la migración desde la que queremos partir que se encuentran en :
A continuación creamos una nueva migración para guardar los cambios que hay en la base de datos. Al haber hecho "python manage.py migrate appname --fake MIGRATION_NUMBER", simplemente se han borrado las migraciones de la base de datos pero no se han aplicado los cambios, ahora lo que nos indica South y lo que hay en la base de datos es diferente por lo que es necesario hacer una nueva migración:
El siguiente paso que debemos hacer, es aplicar la migración:
python manage.py migrate appname --fake zeroEste comando borra todo el historial de South.
A continuación se tienen que borrar los ficheros.
rm appname/migrations/*En este momento ya tenemos el historial de South completamente limpio por lo que es necesario crear las nuevas migraciones:
python manage.py schemamigration appname --initial
python manage.py migrate appnameSi solamente queremos borrar el historial hasta un lugar concreto, hay que hacer lo siguiente:
python manage.py migrate appname --fake MIGRATION_NUMBEREl atributo --fake, indica que solamente se borran las migraciones de la base de datos, no afecta a lo que contiene la base de datos, es decir, no se aplican los cambios.
A continuación hay que borrar todos los archivos posteriores a la migración desde la que queremos partir que se encuentran en :
appname/migrationsA continuación creamos una nueva migración para guardar los cambios que hay en la base de datos. Al haber hecho "python manage.py migrate appname --fake MIGRATION_NUMBER", simplemente se han borrado las migraciones de la base de datos pero no se han aplicado los cambios, ahora lo que nos indica South y lo que hay en la base de datos es diferente por lo que es necesario hacer una nueva migración:
python manage.py schemamigration appname --autoEl siguiente paso que debemos hacer, es aplicar la migración:
python manage.py migrate appname
Suscribirse a:
Entradas (Atom)