lunes, 15 de noviembre de 2010

Debugueo en Python

En python se puede debuguear usando la librería pdb

Al inicio del script en python, poner:
import pdb
Luego donde se quiera que empiece el debug, poner:
pdb.set_trace()
Si estás corriendo el script en consola, la consola se detendrá en el punto donde pusiste el comando de arriba. Si estás usando Django, y estás usando el servidor de prueba, en la consola donde corriste el servidor podrás hacer el debug.
Con los siguientes comandos podrás controlar el flujo de tu programa:
n: next: siguiente
ENTER: para repetir el último comando
q: quit: para salir (sale del programa)
p: print: para imprimir variables (se usa p )
c: continue: para continuar con el programa (dejando el debuguer)
l: list: para listar que linea del codigo se está ejecutando
s: step into: para entrar en la subrutina
r: return: para salir de la subrutina
En este link hay una buena guía detallada de cómo usar el debuguer:

viernes, 7 de mayo de 2010

Agregando un script que parta en el boteo para Ubuntu

Es re-palta, pero es de las cosas típicas que siempre se me olvidan, así que ahí va.

user@server:~$ cd /etc/init.d/
user@server:/etc/init.d$ sudo vim initscript

** Poner lo que va a hacer el script **


user@server:/etc/init.d$ sudo chmod 755 initscript
user@server:/etc/init.d$ sudo update-rc.d initscript defaults

Eso no más sería.

Aquí un Link con más información:

http://embraceubuntu.com/2005/09/07/adding-a-startup-script-to-be-run-at-bootup/


martes, 18 de agosto de 2009

psycopg2.ProgrammingError: there is no unique constraint

Al estar creando un modelo con 2 ForeignKeys, y hacer python manage.py syncdb
me ocurrió el siguiente error:
psycopg2.ProgrammingError: there is no unique constraint matching given keys for
referenced table "app_orderdetail"

Tuve un buen rato cabeceándome con esta cuestioncita, y el problema era el siguiente:
Me faltaba una clave primaria en la tabla a la cual estaba haciendo referencia con el ForeignKey (app_orderdetail). Y supongo que me pasó por ocupar bases de datos respaldadas desde sistemas que ya llevaban un tiempo corriendo.

La solución:
Agregar la clave primaria via SQL o bien borrar la tabla para que el syncdb vuelva a crearla nuevamente.
El SQL para agregar la clave primaria es:

ALTER TABLE app_orderdetail ADD PRIMARY KEY (id);

viernes, 24 de julio de 2009

SVN local obstruction, incoming add upon merge

Que es esto!!!!!!!!!!... tranquilo papa.
Si hiciste un merge con SVN desde un branche al trunk en y te ocurre algo como esto:

U code/proj/coredb/models.py
U code/proj/coredb/gateway.py
C code/proj/utils/win_keys.py
C code/proj/utils/keys.py

Y después haces un svn st, y dice

M trunk/code/proj/coredb/models.py
M trunk/code/proj/coredb/gateway.py
C trunk/code/proj/utils/win_keys.py
> local obstruction, incoming add upon merge
C trunk/code/proj/utils/keys.py
> local obstruction, incoming add upon merge

Probablemente pueda deberse a que tenías versiones idénticas en el trunk respecto del branche al momento de hacer el merge.
Como son versiones idénticas, la solución es simplemente resolver el conflicto, con:

svn resolved trunk/code/proj/utils/win_keys.py
svn resolved trunk/code/proj/utils/keys.py


Aqui hay un buen link con información, al respecto:
http://little418.com/2009/05/svn-local-obstruction-incoming-add-upon-merge.html


miércoles, 22 de abril de 2009

CSS y la co#$%%$^@!

Siempre me ha costado el diseño cuando hago sitios, supongo porque nunca me he dado el tiempo de estudiadiar CSS a fondo, bueno, mientras peleaba con unos formatos para IE, me pille con esto:
http://www.sitepoint.com/article/style-web-forms-css/

No es un estudio muy profundo, es más bien básico y bien específico. Pero me parecio bueno, cómo hacer Formularios estilizados con CSS.

jueves, 12 de marzo de 2009

PyCon 2009, Chicago

El 25 de marzo comienza esta nueva edición de la PyCon en Chicago.

Esta vez veo muchas conferencias muy interesantes, con temas como: Testing, Inteligencia Artificial, multiproceso, Google App Engine, Testing AJAX, patrones de diseño, Jython, PyOpenGL, Django, Python en las empresas, metaprograming y mucho más...

Que ganas de estar por ahí...

Aqui está el link oficial:
http://us.pycon.org/2009/about/

lunes, 29 de diciembre de 2008

Proxy CGI en Python

Usando OpenLayers, se me hizo necesario usar un script proxy para solicitar url's a través de AJAX que no están en el mismo dominio. En la documentación de OpenLayers ponen un ejemplo de un script en python para hacer el proxy, y está bien bueno para aplicaciones sencillas donde no se necesite mucha seguridad, acá está el link:

http://trac.openlayers.org/browser/trunk/openlayers/examples/proxy.cgi