Cuestiones básicas

Jordi Funollet jordi.f en ati.es
Jue Jun 7 15:41:30 CEST 2007


Javier Castrillo dixit:
> Generalmente mis alumnos (soy docente de adultos en FP) no quieren
> preguntar porque sienten que su pregunta es tan boba que temen que los
> tomen por tontos, lo cual, desde ya, es una actitud errónea y que
> tratamos de cambiar.

Si, yo también trato de cambiarla... en mi. ;-) Pero cuesta.

> Por eso creo que preguntaré las cuestiones más 
> básicas de esta lista sin ponerme colorado. Allí va:
> Anteriormente desarrollé unas cositas en PHP con Apache como webserver
> y MySQL, o sea un trío clásico como JJ, Merlo y Alonso.
>
> Ahora, en Python:

Para simplificar, vamos a poner aparte Zope (solo conceptualmente; no discuto 
sus méritos). Zope es todo un mundo (o por lo menos, un par de continentes). 
En su momento fueron pioneros y se lo implementaron todo: el webserver, las 
plantillas, la infrastructura de aplicaciones web e incluso su propia base de 
datos orientada a objetos.

> Zope sería el webserver??? En tal caso, que diferencia habría con
> Apache + Mod_python

Apache, Lighttpd, ngix, Cherokee,... Son webservers, el programa que queda más 
cerca del usuario. Recibe peticiones del navegador y devuelve "documentos". 
Estos "documentos" pueden ser archivos html, o imágenes, o pdfs... o 
documentos que no existen en el disco duro, sino que los genera un programa: 
un CGI.

Aquí entra tu 'mod_python'. Arrancar y parar un programa de Python (una CGI) 
cada vez que te piden un "documento" es muy costoso. Sale mas a cuenta 
tenerlo cargado en memoria *dentro* del servidor web, que es lo que 
hace 'mod_python'.

Pero esto es un poco rígido y te ata a un servidor web concreto. Otras 
opciones más ligeras y flexibles són FastCGI y SCGI, que mantienen tu 
programa arrancado todo el tiempo y responden a las peticiones que les pasa 
el servidor web (el que tu prefieras).

> Y la db más usada, cuál es???

Por números, Mysql y PostgreSQL se llevan el gato al agua. La primera siempre 
ha "vendido" más velocidad a costa de no comprobar que los datos sean 
coherentes. En algunas aplicaciones no lo necesitas (aunque personalmente no 
se me ocurre ninguna). Ahora ya puedes tener coherencia... pero tiene un 
coste en velocidad.

PostgreSQL siempre ha sido indiscutiblemente robusta. Los últimos años han 
trabajado mucho en la velocidad y parece que es comparable a Mysql. Pero que 
nadie se tome esto muy a pecho, no quiero iniciar un "flame". :-)

Si te dedicas a la docencia dale un vistazo a SQLite. No necesita tener un 
servidor arrancado y va toda la base de datos en un solo fichero. Vamos, que 
tus alumnos pueden tener la base de datos en un USB.

> Plone, Turbogears y Django... qué son????

Plone está hecho sobre Zope; es un gestor de contenidos, una aplicación web 
para editar y publicar documentos web.

> Porque para mi modesto entender " framework" es una palabra
> tan amplia como inexpugnable...

No se quién decía: un framework es un programa que "tapa agujeros". Hay que 
escoger que agujeros tapar y cuales no.

Por ejemplo: yo no tengo ningún interés en aprender a gestionar las cookies 
del navegador: que lo haga Django (o Turbogears, o Pylons, o Webpy). Ni ganas 
de saber como se genera una página en HTML a partir del contenido de mi base 
de datos. Que lo haga el framework.

Y yo, la mar de feliz, me centro en las partes de la aplicación que me 
interesan, las que no son comunes a todas las aplicaciones web y no se pueden 
extrapolar. Por ejemplo, la lógica de publicaciones y des-publicaciones de un 
calendario.

> sqlobject y sqlalchemy, son bibliotecas?, Son formas de enlazar a db
> varias?

Son traductores: traducen tus objetos Python a querys comprensibles para la 
base de datos. Generalmente, para unas cuantas bases de datos distintas.

> Y el lenguaje SQL, dónde entra en todo esto??? Va camino a 
> desaparcer???

No, pero no hace falta escribir a mano un aburrido "SELECT" típico y tópico; 
eso, que lo hagan los "object relational mappers". Si necesitas una query 
fuera de lo habitual también terminarás escribiendo SQL.

> Gracias por tanto, perdón por tan poco

Se nota que te has esforzado por hacer preguntas claras y ordenadas. Se 
agradece.

-- 
##############################
### Jordi Funollet
### http://www.terraquis.net




Más información sobre la lista de distribución Python-es