lunes, octubre 29, 2007

rpm

rpm.org es el SITIO de referencia para documentarse sobre rpm.
Para comenzar el tutorial de gurulabs está realmente bien; además incluye un ejercicio para practicar...
He visto también que hay unos bindings para python.

Actualización
  • El ejercicio de gurulabs (aunque no lo he hecho) tiene realmente muy buena pinta. Es amplio (tiempo estimado 1.5 horas).
  • En el tutorial vienen también urls de recursos varios.
  • Ya en plan documentación lo mejor que he visto por ahí es:
  • Y por supuesto siempre nos quedará la wikipedia.

FHS

En linux la estructura de directorios sigue un estandar, el cual es conocido por Filesystem Hierarchy Standard (FHS). Es interesante entender esa estructura, para saber a la hora de desplegar una aplicación que estemos desarrollando donde tiene que ir cada fichero.

Otras siglas sobre estandarización relacionadas: POSIX (Portable Operating System Interface) y LSB (Linux Standard Base).

jueves, octubre 25, 2007

Probando distutils

Sobre distutils ya había hablado en: Instalando con Python.

Recientemente hemos cambiado tanto la estructura del proyecto en el subversion como en la instalación, con lo cual los antiguos setup.py ya no nos sirven (hechos para distutils).

Pero no solo queda ahí la cosa, sino que vamos a instalar con rpms. Una opción hubira sido el crear ls 'specs' de los rpms a manubrio, pero me han recomendado hacerlo con distutils, y luego si hay que modificar algo, pues hacerlo, pero de esta manera no las tienes que crear desde cero.

La verdad.... me parece una muy buena idea, pero no sólo por ese posible ahorre de trabajo, sino que ademas podemos seguir desplegando de la manera normal (directamente) o generar un tar.gz.

Todo son ventajas...

Tras hacer el setup.py he mirado a ver que diferencias hay con setuptools [ibm article]. Por lo que parece son similares; siendo la mayor ventaja que ofrece setuptools, que te busca los paquetes a instalar y se asegura de resolver las dependencias.
Otra cosa que permite setuptools es generar 'eggs files'; y contiene EasyInstall.

Volviendo al tema que nos ocupa... cuando tienes una estructura un poco complicada no te queda mas remedio que meter en el setup.py funciones de utilidad para tu problemática concreta.

En mi caso, el mayor problemilla que he tenido es que las rutas de instalación y del SVN no son exactas, con lo cual tengo que hacer un mapeo entre el paquete que se instala, y la ruta donde está el código.

Esto se solventa con los parametros packages y package_dir, lo que hago es recorrer recursivamente el arbol del SVN para obtener las rutas a los paquetes, para a partir de ellas generar el nombre del paquete destino y definir a que directorio del SVN se corresponde.

En el caso de los datos, el parametro data_files, permite resolver esta problemática sin necesidad de ningun parámetro adicional.

Como documentación, el artículo que enlacé antes (Spreading python applications) está muy bien; asi como la documentación estándar.

Un par de notas finales:
  • para pruebas podeis usar la opción --dry-run
  • con --verbose os indica si os faltan ficheros __init__.py

viernes, octubre 19, 2007

Ver correctamente todos los caracteres con vi

Si os pasa que no veis correctamente algunos caracteres en vi, como por ejemplo los acentos, estais ante un problema con el encoding.

Puede ser porque no tengais correctamente definida la variable LAN, es valor correcto para el español es 'es_ES'.

jueves, octubre 11, 2007

Han linked in, han creado un grupo de python. Mas info aquí.

jueves, octubre 04, 2007

Ultraedit

Ahora para currar utilizo Windows XP Pro, lo cual me forzó a migrar a la version 13 de ultraedit, ya que la anterior que tenía no funcionaba correctamente.
Pues bien... la version que tengo ahora mismo delante, la 13.10a+1 me ha sorprendido muy gratamente. Han mejorado y mucho el ya util menú FTP/TELNET.

El soporte a ftp lo llevan teniendo desde hace siglos, luego metieron el de sftp, y ahora puedes establecer conexiones a ssh. No se si ya estaba y no me había dado cuenta o es nuevo. Yo creo que es nuevo.
Lo que si que es seguro es que han metido la opciones 'account manager' y 'ftp browser'. La segunda está genial, ya que nos evitará el instalar un cliente de ftp/sftp.

miércoles, octubre 03, 2007

Remote Diff

Lo mas relevante en google sobre como hacer un remote diff.
La mejor solución en un comentario, que es usando ssh: ' ssh remotehost ‘cat remotefile’ | diff - localfile'.

miércoles, septiembre 26, 2007

Fijar variables de entorno de la shell desde python

Para algo que tengo que hacer necesitaría fijar el entorno de la shell desde python, pero en principio esto no es posible.
Quiero decir, que desde python tal cual no se puede, ya que en UNIX desde un proceso hijo no se puede modificar el entorno del padre.

Una opción sería hacer un 'shell script' en el que se invoque un script python con cada variable a configurar, y que el script devuelva el valor para esa variable.
Pero en mi caso me interesaria mas otra cosa, y es que el script de la shell, el que invoca a python, no sepa nada de que variables de entorno hay que configurar.
La solución es parecida: el script python generar el codigo shell a ejecutar sacandolo por stdout y la shell lo ejecuta.

Mas info aquí.

Y ahora la solución que voy a aplicar, mostrada con un ejemplo muy tonto.
Código python que define las variables (prueba.py):

print "KK1=kk1"
print "KK2=kk2"

La shell que lo invoca:

for cmd in `python $PWD/prueba.py`; do
export $cmd
done

Sencillo ¿verdad?

vim

Post para reagrupar 3 posts que tenía sobre vi: [manual][mas][yMas].

Para saber mas.... aquí.
Y la FAQ.

Con esta entrada inaguro la categoría 'tools'. Podría crear la subsección editores, pero de momento dejemoslo ahí.

Editores de texto

Tenía una versión de ultraedit de evaluación, que me ha caducado. Esto me ha motivado a usar vim (a ver si lo aprendo un poco mejor...).
Anteriormente usaba ultraedit, accediendo a las maquinas por SFTP...

Hablando con Marcos me comenta de dos editores que están bien, que el usa:
  • scite [wikipedia].
  • ulipad. Es un editor de python, y que tiene buena pinta. Puede acceder por ftp, pero parece que no por stp. Ha sido llevado a code.google.
A través de la wikipedia veo que existe un notepad++, y buscando en google, veo que hay por ahí editores con soporte a SFTP. Ejemplos: [1][2].

Básicamente mientras pase esta temporada con vim, lo que necesito es un editor (ligero) para editar ficheros en local (y super importante, que tenga pestañas)

Actualización
Tras haber escrito lo anterior he buscado por comparativas, y paginas con listado de editores. Ahí van mas links:
Lo anterior ha sido una recopilación rápida de lo que he encontrado por la web, pero tras ver la comparativa de la wikipedia, os puedo decir que es el LINK a mira.
Lo que no se (en la comparativa no viene) si hay alguno que soporte edición en modo columna (aparte de ultraedit).

NetWinShit

Otro post para mostrar carencias de windows bastante irritantes. Esta vez relacionadas va de temas de red.
  • Imposiblidad de poder tener perfiles de red. Aunque debe de haber aplicaciones externas que lo permitan... O en caso contrario siempre se puede usar una aplicación de testeo, que imite a un usuario.
  • Imposibilidad de tener configurado mas de un dominio. Para poder conectarte a un dominio, necesitas una cuenta de administración del dominio, por lo que normalmente no lo harás tu, como usuario que eres. Lo hará un administrdor por tí. Pues bien, imaginate que con tu portatil megachulo estas unos días en un edificio y otros en otro, y esos tienen dominios diferentes... Pues bien, no puedes tener ambos configurados y que cuando te salga la ventana de login, selecciones el que te interesa...

martes, septiembre 25, 2007

Python-es FAQ.

domingo, septiembre 23, 2007

El porqué del __name__ == "__main__"

En python.es posteé lo siguiente:

"Si tengo un modulo apps.py que tiene:


import debug

def programBegin():
debug.init()



Y si tengo un modulo debug.py que tiene:

DEBUG = 0

def init():
global DEBUG
DEBUG=1

if ( __name__ == "__main__") :
import apps
apps.programBegin()
print DEBUG



¿Porque al ejecutar como comando el modulo debug.py, me imprime 0? Mi no entender..."

La respuesta (por parte de Gabriel Genellina):

"La clave está en que al ejecutar debug.py directamente, se crean DOS
copias del MISMO modulo.

1) El script que estas ejecutando (debug.py) se carga como modulo
'__main__' (es decir, en sys.modules se inserta un nuevo item con
clave='__main__' y valor=el modulo debug.py).

2) Cuando apps ejecuta "import debug", Python se fija si el modulo ya esta
importado (mirando las claves de sys.modules) y como no lo encuentra, lo
lee de disco y lo inserta con clave='debug'

O sea que debug.py fue importado DOS veces. Cuando programBegin llama a
debug.init, lo que se modifica es el valor de la variable DEBUG que esta
en el modulo llamado "debug". Cuando haces el print estando dentro del
script principal (que coincide con debug.py) lo que estas imprimiendo es
la variable DEBUG que esta en el modulo llamado "__main__".

De paso, esta es justamente la razon por la que funciona la condicion:

if __name__ == "__main__":

que más de uno escribe sin tener ni idea de porqué se hace así."

viernes, septiembre 21, 2007

Me ha parecido interesante a la par que friki: hacer CV en latex.

lunes, septiembre 17, 2007

Via slashdot: Guido and Bruce Eckel Discuss Python 3000.
Debería ser de obligada lectura para los que curramos con python.
Bruce comenta que en Ruby también van a hacer ruptura hacia atrás, y que van a eliminar los 'perl-isms'. Muy interesante.... era una de las cosas que no me gustó de Ruby cuando le eché un vistazo.

lunes, septiembre 10, 2007

Metaclases en python.

viernes, septiembre 07, 2007

Que guapo!!! Un proyecto OpenSource de plantillas para generar documentacion: ReadySet.
Column-oriented DBMS [wikipedia].
En la siguiente noticia de slashdot hablan sobre el tema: Are relational databases obsolete?
Un sitio al que voy a tener que echar un vistazo con calma: en High Scalability.
Via barrapunto: ¿Qué plataforma usan los sitios más populares?.

miércoles, agosto 15, 2007

Primera noticias tras la vuelta de las minivacaciones de verano, windowsue deja de existir.