Está en la página 1de 33

TODOS LOS MODULOS PARA

SUS NECESIDADES CON PYTHON


NUMERO 2

Google App Engine el servidor de


aplicaciones que utiliza PYTHON

MUNDO PYTHON
MUNDO PYTHON
Contenido
• AUTOR

• PORQUE PYTHON

• TODOS LOS MODULOS PARA SUS NECESIDADES CON PYTHON

• WINK

• GOOGLE APP ENGINE

• PYGAME

• CODIGO FUENTE (SOCKETS EN PYTHON)

• CURSO PYTHON

• ENLACES

• CONTACTO

• PUBLICIDAD

Numero 2 www.aprenderpython.com 1
MUNDO PYTHON
Hola a todos
Autor
Bueno la verdad no soy muy bueno para escribir, cual es la idea de haber
comenzado esta revista, reunir la comunidad mas grande de Programadores de
Python de habla, Español.
Como empezo esta iniciativa pues al buscar documentacion de Python no
encotramos mucha, pero si hay una gran cantidad de personas con conocimientos en
Python muy grandes que pueden compartir a esta comunidad que inicia, si eres un
programador y te consideras excelente lo invito a hacer sus aportes para esta
comunidad que inicia, hay muchos que tal vez no tienen idea de programacion y
mucho menos en Python la idea es que por medio de este medio poder difundir la
enseñanza de este lenguaje "que por cierto no es muy dificil de aprender" por eso lo
invito amigo lector a hacer su contribucion.
Con esta introduccion quiero invitarlo a participar en esta gran comunidad que inicia
ya son muchos los que se han registrado en el foro, el foro es la manera en que invito
a dar sus contribuciones tenemos una gran biblioteca y estamos en inicio de un foro
dedicado a los codigos fuentes tambien preguntas frecuentes y mucho mas, otra
manera en que lo invito a participar es enviando alguna noticia o articulo que
considere importente para el crecimiento de esta revista puede enviar su aporte a
este correo y lo estudiaremos y si es bueno lo publicaremos.
Este es el correo para cualquier inquietud, sugerencia o aporte que quiera brindar:
aprenderpython@gmail.com
Bueno como les decia yo invito tanto a novatos como expertos en la programacion de
Python a contribuir a esta comunidad que inicia tal vez no somos muchos pero con
sus aportes podemos hacer grande esta comunidad de difusion de Python, gracias a
que es software libre seguimos sus filosofia de hacer libre esta revista.
Disculparan el diseño de la misma pero como ven estamos iniciando, un saludo a
todos y
Bienvenidos.
Daniel Bermudez.

Numero 2 www.aprenderpython.com 2
MUNDO PYTHON
¿Porque Python?
Python es un lenguaje que todo el Python es un lenguaje muy
mundo debería conocer. Su sintaxis expresivo, es decir, los programas
simple, clara y sencilla; el tipado Python son muy compactos: un
dinámico, el gestor de memoria, la gran programa Python suele ser
cantidad de librerías disponibles y la bastante más corto que su
potencia del lenguaje, entre otros, hacen equivalente en lenguajes como C.
que desarrollar una aplicación en Python (Python llega a ser considerado por
sea sencillo, muy rápido y lo que es más muchos un lenguaje de
importante, divertido. programación de muy alto nivel .)
La sintaxis de Python es tan sencilla y
2+2 en: Python
cercana al lenguaje natural que los
programas elaborados en Python print 2+2
parecen pseudocódigo. Por este motivo
se trata además de uno de los mejores 4
lenguajes para comenzar a programar.
Python no es adecuado sin embargo Python es muy legible. La sintaxis
para la programación de bajo nivel o de Python es muy elegante y
para aplicaciones en las que el permite la escritura de programas
rendimiento sea crítico. cuya lectura resulta más fácil que si
Algunos casos de éxito en el uso de utilizaremos otros lenguajes de
Python son Google, Yahoo, la NASA, programación. Python ofrece un
Industrias Ligh & Magic, y todas las entorno interactivo que facilita la
distribuciones Linux, en las que Python realización de pruebas y ayuda a
cada vez representa un tanto por ciento despejar dudas acerca de ciertas
mayor de los programas disponibles. características del lenguaje.

Python presenta una serie de ventajas El entorno de ejecución de Python


que lo hacen muy atractivo, tanto para detecta muchos de los errores de
su uso profesional como para el programación que escapan al
aprendizaje de la programación. Entre control de los compiladores y
las más interesantes desde el punto de proporciona información muy rica
vista didáctico tenemos: para detectarlos y corregirlos.

Numero 2 www.aprenderpython.com 3
MUNDO PYTHON
TODOS LOS MODULOS PARA
SUS NECESIDADES CON PYTHON
Python es un lenguaje potente,
seguro, flexible… pero con una
gran cantidad de modulos para
todas nuestras necesidades es
por eso que en esta ocacion
dejo algunos modulos que
pueden ser utiles a la hora de
programar con Python.

Interfaz Grafica pyGtk http://www.pygtk.org


Interfaz Grafica pyQT http://www.riverbankcomputing.co.uk/pyqt/
Interfaz Grafica Pmw http://pmw.sourceforge.net/
Interfaz Grafica Tkinter 3000 http://effbot.org/zone/wck.htm
Interfaz Grafica Tix http://tix.sourceforge.net/
Base de Datos MySQLdb http://sourceforge.net/projects/mysql-python
Base de Datos PyGreSQL http://www.pygresql.org/
Base de Datos Gadfly http://gadfly.sourceforge.net/
Base de Datos SQLAlchemy http://www.sqlalchemy.org/
Base de Datos psycopg http://www.initd.org/pub/software/psycopg/
Base de Datos kinterbasdb http://kinterbasdb.sourceforge.net/
Base de Datos cx_Oracle http://www.cxtools.net/default.aspx?nav=downloads
Base de Datos pySQLite http://initd.org/tracker/pysqlite
MSN Messenger msnlib http://auriga.wearlab.de/~alb/msnlib/
MSN Messenger pymsn http://telepathy.freedesktop.org/wiki/Pymsn
MSN Messenger msnp http://msnp.sourceforge.net/
Redes Twisted http://twistedmatrix.com/
Imagen PIL http://www.pythonware.com/products/pil/
Imagen gdmodule http://newcenturycomputers.net/projects/gdmodule.html
Imagen VideoCapture http://videocapture.sourceforge.net/

Numero 2 www.aprenderpython.com 4
MUNDO PYTHON
TODOS LOS MODULOS PARA
SUS NECESIDADES CON PYTHON
Ciencia y Matematicas scipy http://www.scipy.org/
Ciencia y Matematicas NumPy http://numpy.scipy.org//
Ciencia y Matematicas numarray http://www.stsci.edu/resources/software_hardware/numarray
Ciencia y Matematicas matplotlib http://matplotlib.sourceforge.net/
Juegos Pygame http://www.pygame.org/news.html
Juegos Pyglet http://www.pyglet.org/
Juegos PySoy http://www.pysoy.org/
Juegos pyOpenGL http://pyopengl.sourceforge.net/
Jabber jabberpy http://jabberpy.sourceforge.net/
Web scrape http://zesty.ca/python/scrape.html
Web Beautiful Soup http://crummy.com/software/BeautifulSoup
Web pythonweb http://www.pythonweb.org/
Web mechanize http://wwwsearch.sourceforge.net/mechanize/
Localizacion geoname.py http://www.zindep.com/blog-zindep/Geoname-python/
Puerto Serial pySerial http://pyserial.sourceforge.net/
Puerto Serial USPP http://ibarona.googlepages.com/uspp
Puerto Paralelo pyParallel http://pyserial.sourceforge.net/pyparallel.html
Puerto USB pyUSB http://bleyer.org/pyusb/
Windows ctypes http://starship.python.net/crew/theller/ctypes/
Windows pywin32 http://sourceforge.net/projects/pywin32/
Windows pywinauto http://www.openqa.org/pywinauto/
Windows pyrtf http://pyrtf.sourceforge.net/
Windows wmi http://timgolden.me.uk/python/wmi.html

Python es un lenguaje con pilas como


veran tiene una gran cantidad de modulos
y librerias, para todo, hay desde Base de
Datos, Web, Juegos, Sonido, Windows,
Matematicas y Ciencia, 3D, Redes, Interfaz
Grafica, Puerto Serial, etc.

Numero 2 www.aprenderpython.com 5
MUNDO PYTHON
TODOS LOS MODULOS PARA
SUS NECESIDADES CON PYTHON
Los módulos de la biblioteca estándar
pueden ser mejorados por módulos
personalizados escritos tanto en C o en
Python. Debido a la gran variedad de
herramientas incluidas en la biblioteca
estándar combinada con la habilidad de
usar lenguajes de bajo nivel como C y
C++, los cuales son capaces de
interactuar con otras bibliotecas, Python
es un lenguaje que combina su clara
sintaxis con el inmenso poder de
lenguajes menos elegantes.

PDA/GSM/Mobiles pymo http://www.awaretek.com/pymo.html


PDA/GSM/Mobiles pyS60 http://sourceforge.net/projects/pys60
Sonido pySoundic http://pysonic.sourceforge.net/
Sonido pyMedia http://pymedia.org/
Sonido FMOD http://www.fmod.org/
Sonido pyMIDI http://www.cs.unc.edu/Research/assist/developer.shtml
GMail libgmail http://libgmail.sourceforge.net/
Google pyGoogle http://pygoogle.sourceforge.net/
Expecto pyExpect http://pexpect.sourceforge.net/
WordNet pyWordNet http://osteele.com/projects/pywordnet/
Linea de Comandos cmd http://blog.doughellmann.com/2008/05/pymotw-cmd.html
Compiler backend llvm-py http://mdevan.nfshost.com/llvm-py/
3D VPython http://vpython.org

Numero 2 www.aprenderpython.com 6
MUNDO PYTHON
Wink
Destacar que es necesario para ver
las presentaciones resultantes
descargarse el software gratuito
Macromedia Flash Player, disponible
como un plugin para la mayoría de los
Introducción
navegadores.
A la hora de realizar demostraciones de
uso de un producto, ya sea como Requisitos e instalación de WinK
estrategia de ventas o como parte de un WinK es una aplicación que puede
curso en línea, resulta de gran utilidad ejecutarse tanto en Windows como en
poder seguir los pasos del profesor o Linux. No presenta ninguna exigencia
conferenciante de una manera visual, especial con respecto a procesador o
poder ver cómo elige una opción, cómo memoria, pero sí hace
despliega un menú o cómo arrastra una recomendaciones con respecto a la
ventana. De esta manera se refuerza el resolución de pantalla, aconsejando
aprendizaje y se mejora el conocimiento que sea igual o superior a 800x600.
del producto, puesto que estamos Sin embargo, se pueden hacer
observando cómo se comporta en la capturas de pantalla a 640x480, pero
realidad. Si además se pudiera distribuir se dispondrá de menor espacio para
la demostración a través de Internet, las trabajar.
posibilidades educativas serían La instalación no presenta ninguna
inmensas. dificultad. WinK se distribuye como un
La grabación en video de sesiones de fichero zip que incluye el instalador. Lo
trabajo es una opción, pero la edición de único que habrá que hacer será
la cinta para añadir comentarios, descomprimir el archivo en un
etiquetas o eliminar sobrante es una directorio temporal y ejecutar el
tarea compleja. La grabación por instalador. Posteriormente, se podrá
software es una solución más sencilla, borrar tanto el instalador como el
más barata y repleta de posibilidades. fichero zip.
La aplicación que se presenta a
Fuente
Fuente: :
continuación es una herramienta que
http://observatorio.cnice.mec.es/mo
http://observatorio.cnice.mec.es/mo
permite realizar presentaciones y
dules.php?op =modload&name=New
dules.php?op=modload&name=New
tutoriales y ofrecerlas en formato flash.
s&file =article&sid=406
s&file=article&sid=406

Numero 2 www.aprenderpython.com 7
MUNDO PYTHON
Wink
Cómo realizar una presentación con WinK

Para realizar una presentació


presentación con WinK,
WinK, se ejecuta el software objetivo de la
presentació
presentación y se van capturando pantallas de las acciones que se quieren mostrar. mostrar.
Posteriormente WinK uniráunirá cada una de estas pantallas en una pelípelícula continua.
La edició
edición de la pelí
película permitirá
permitirá añadir o eliminar pantallas (tambié
(también llamadas marcos
en la aplicació
aplicación) en cualquier punto, añañadir comentarios, botones de anterior, siguiente o
incluso saltar de un marco a otro cualquiera. Se pueden realizar presentaciones todo lo
complejas que se quieran, o simplemente dejar que grabe mientras se trabaje.
A las presentaciones que se crean con esta aplicació aplicación se les puede añ añadir fondos
personalizados y tambié
también se puede grabar el aspecto general de una presentació
presentación como
una plantilla, pudiendo de esta forma aplicar el aspecto al restoresto de los proyectos en los
que trabajemos.
Una vez terminada una presentació
presentación se exporta a formato flash, y será será éste el que se
distribuya a travé
través de la red o de cualquier otro medio de distribució
distribución. La presentació
presentación
tambié
también se podrá
podrá exportar como HTML, PDF o Postcript,
Postcript, que servirá
servirá como complemento
al fichero flash.
Para crear un primer proyecto de ejemplo con WinK,WinK, se seguirá
seguirán los siguientes pasos:
1. Abrir la aplicació
aplicación destino de la presentació
presentación y el programa WinK.
WinK. A modo de ejemplo,
usaremos el explorador de Windows para demostrar có cómo se muestran los archivos con
la vista en miniatura.

Numero 2 www.aprenderpython.com 8
MUNDO PYTHON
Wink
Ventana del asistente
Ventana principal de WinK 3. La primera pantalla del asistente
2. Creamos un proyecto nuevo en WinK pregunta si se quiere grabar sonido
desde el menú
menú Archivo à Nuevo. Aparecerá
Aparecerá mientras se realiza la presentació
presentación o no
un asistente que nos guiará
guiará en los (para este proyecto desactivaremos la
siguientes pasos. opció
opción), se ocultará
ocultará la ventana de WinK
durante la presentació
presentación y se elige quéqué
es lo que se quiere capturar. Se puede
elegir entre capturar la pantalla
completa, una ventana concreta o
cualquier regió
región. Para este ejemplo se
elegirá
elegirá la opció
opción Ventana para capturar
la ventana del explorador de Windows.
Una vez elegida esta opció opción, y
habiendo marcado la de ocultar la
ventana de WinK,
WinK, se pulsará
pulsará sobre el
botó
botó n Seleccionar. Pinchando con el
rató
ratón en la barra de tí títulos del
explorador, quedará
quedará seleccionada la
ventana. Ahora simplemente se pulsa
OK.

Numero 2 www.aprenderpython.com 9
MUNDO PYTHON
Wink
Elección de ventana de trabajo Comienzo de captura de pantallas
4. Lo siguiente es proceder a capturar 5. Siguiendo con el ejemplo, en la
las pantallas de la presentación. Existen ventana del explorador de Windows,
tres maneras de hacerlo: o bien se pulsar sobre detalles y después vistas
capturan sólo las pantallas deseadas en miniatura. Una vez hecho esto, se
pulsando Pause en cada una de ellas, o hace doble clic sobre el icono
bien se capturan todas las pantallas y minimizado del WinK y se pulsa el
movimientos en un intervalo de tiempo o botón Finalizar
bien se capturan todas las pantallas y
movimientos desde que se pulsa una
combinación de teclas determinada
hasta que se vuelve a pulsar la misma
combinación. Será esta última opción la
que elegiremos para el ejemplo, por lo
que a continuación se pulsa el botón y
se procede a la captura pulsando
Alt+Pause. A partir de ese momento,
todo lo que se realice sobre la pantalla
será capturado.

Fin de capturas de pantallas


6. Cuando se pulsa el botón Finalizar,
aparece la ventana principal de WinK
con el proyecto abierto y las ventanas
capturadas listas para trabajar con
ellas. En este momento se puede ver
si se han capturado pantallas
repetidas o si sobran pantallas,
pudiendo proceder a eliminarlas si se
desea

Numero 2 www.aprenderpython.com 10
MUNDO PYTHON
Wink

Ventana principal del WinK con un proyecto

7. Una vez elegidas las pantallas definitivas que van a formar parte del proyecto,
se podrá trabajar sobre cada marco por separado. Se pueden añadir comentarios
de texto, de audio, botones de avance o retroceso, imágenes de fondo. En el área
de selección aparecen las pantallas definitivas.

Numero 2 www.aprenderpython.com 11
MUNDO PYTHON
Wink
Área de selección de pantallas Ventana de propiedades del marco
8. Para seguir con el ejemplo, se va a 9. Al pulsar el botón de cuadro de
poner un comentario de texto en una de texto, aparece un globo de texto en la
las pantallas. Para ello, se selecciona la pantalla que podremos mover, cambiar
pantalla deseada (en este caso la de forma o de color, añadir o eliminar
primera). Luego, se elige la opción de texto, etc.
cuadro de texto en la pantalla de
propiedades de marco que aparece a la
derecha. En esa ventana aparecen las
características del marco, como el título,
los segundos que debe aparecer el
marco en la presentación, los botones
que se le han añadido, etc.

Cuadro de texto
10. Lo siguiente que vamos a hacer en
la presentación de ejemplo es añadir
un botón de avance. Normalmente, los
marcos de la película avanzarán de
manera automática con el retardo que
se especifica en las propiedades de la
ventana. Sin embargo, en muchas
ocasiones es conveniente que sea el
propio usuario el que avance o
retroceda. Para añadir un botón de
avance, se pulsa en el icono
correspondiente.

Numero 2 www.aprenderpython.com 12
MUNDO PYTHON
Wink
Botón de avance
12. Además de cuadros de texto o
botones de avance o retroceso, se
pueden añadir archivos de audio (para
poner comentarios sobre lo que se
está haciendo), formas diversas,
enlaces a páginas web o incluso
botones para ir desde cualquier marco
a cualquier otro.

13. Cuando no se quieren poner


botones de avance, sino que lo que se
quiere es que alguno (o todos) los
marcos avancen de manera
automática, se debe temporizar el
marco, añadiendo un tiempo de
permanencia del marco.

Icono de botón de avance


11. Cuando se pulsa el icono de botón
de avance, aparece el icono en el marco Tiempo de permanencia del frame
activo, que se podrá colocar dónde se 14. Otra característica que puede ser
desee. de mucha utilidad es la posibilidad de
añadir una gran cantidad de formas
predefinidas e incluso añadir formas
creadas por el usuario para dar más
contenido a las presentaciones. Entre
las formas predefinidas, destacan los
signos de interrogación, las marcas de
correcto o equivocado, etc.

Numero 2 www.aprenderpython.com 13
MUNDO PYTHON
Wink
Icono de forma predefinida

Ventana de forma predefinida


15. Todas las modificaciones que se Selección de los componentes del
hayan añadido a un marco podrán ser marco
activadas o desactivadas a voluntad. De
El último paso es generar la
esta manera, se puede eliminar
presentación en formato flash. Para
cualquier elemento que no haya
ello, se debe pulsar en el botón de
quedado como se deseaba y se puede
generar . Una vez generada la
volver a activar en el futuro.
presentación, se puede visualizar en el
navegador predeterminado pulsando
el botón previsualizar . Los archivos
generados serán los que se pueden
ver en la figura siguiente.

Numero 2 www.aprenderpython.com 14
MUNDO PYTHON
Wink

Archivos generados del WinK

17. Por último y como ya se ha comentado, además de generar la salida en


formato flash se puede obtener la presentación en HTML, en PDF o incluso en
postcript. Para ello, se elige la opción correspondiente desde el menú archivo.

Fuente
Fuente: :
http://observatorio.cnice.mec.es/modules.php?op=modload&name=News&file=articl
http://observatorio.cnice.mec.es/modules.php?op=modload&name=News&file=articl
e&sid =406
e&sid=406

Numero 2 www.aprenderpython.com 15
MUNDO PYTHON
Google App Engine
Google App Engine es un servicio
que nos permite ejecutar nuestras
aplicaciones web en los servidores
de Google. Este servicio ofrece,
además de la ejecución de
aplicaciones, un sistema de bases
de datos no relacionales y espacio
de almacenamiento, el ya
comentado BigTable.

http://code.google.com/appengine/

Pero más importante, permite el desarrollo En una aplicación como esta, si el


de aplicaciones web con un coste reducido número de usuarios crece mucho
y con una infraestructura solvente, como necesitaremos optimizar código y
es la de los servidores de Google. Esto añadir nuevos servidores, con el
implica un ratio de funcionamiento muy consiguiente gasto. Con Google App
alto y la posibilidad de escalar, es decir de Engine no debemos preocuparnos
aumentar los recursos utilizados, de forma de ello, ya que el servicio se
sencilla. redimensiona automáticamente.
¿Qué implica esto para nosotros como
usuarios?
Pues que podremos encontrar cada día
más servicios web que funcionen rápido y
sin problemas de escalabilidad. Por poner
un ejemplo, Twitter, en sus inicios tenía
serios problemas de este tipo, cayéndose
el servicio cada dos por tres debido al alto
número de usuarios y a una cantidad de
servidores no dimensionada a lo
necesario.
Numero 2 www.aprenderpython.com 16
MUNDO PYTHON
Google App Engine
De momento, y como todo lo que
lanza Google se encuentra en beta,
limitada a 10000 desarrolladores y no
parece ya haber más “plazas libres”.
Los que han conseguido registrarse
ya pueden empezar a probar sus
aplicaciones, que deben estar
programadas en Python, aunque
esperan aumentar el número de
lenguajes soportados en un futuro.

Aunque todavía no han anunciado


cual será el precio del servicio,
sabemos que dispondremos de hasta
500 MB de espacio de
¿Qué implica para desarrolladores?
almacenamiento, 200 millones de
Pues básicamente lo mismo, pero visto
megaciclos de CPU por día y 10 GB
desde el otro lado. Nuestra aplicación web
de transferencia diarios. Según
puede empezar siendo muy pequeña y con
Google esto debería bastar para sitios
un coste muy bajo (o cero, como veremos
que sirvan hasta cinco millones de
ahora), pero con posibilidad de crecer
páginas diarias. Dentro de estos
mucho sin que debamos preocuparnos de la
límites, el uso será gratuito y solo
infraestructura que tenemos por detrás. De
habrá que pagar si los superamos.
hecho, dispondremos además de otros
servicios, como la descarga de páginas web
Por cierto, los servicios estarán
o el envío de correo electrónico que
alojados bajo un subdominio de
aprovechan las infraestructuras existentes
appspot.com o, mediante Google
de Google. También dispondremos de APIs
Apps, en nuestro propio dominio.
para la identificación de usuarios con
tenemos el primer ejemplo de
cuentas Google, punto que a mi no me
aplicación funcional en Huddle Chat,
acaba de convencer, aunque de todos
aunque en estos momentos no parece
modos no es de obligada implantación
estar funcionando del todo bien.

Numero 2 www.aprenderpython.com 17
MUNDO PYTHON
Google App Engine

Para comenzar a utilizar 'Google App Nosotros nos hemos descargado


Engine', lo primero que debéis hacer es este SDK (requiere una versión de
descargaros este kit de desarrollo SDK, Python mayor o igual que 2.5), y
disponible para diversos Sistemas hemos hecho algunos de los
Operativos como Linux, MS Windows o Mac ejemplos de código que se explican
OS X. Este SDK está implementado en en este pequeño tutorial. Cuando se
Python, el lenguaje de programación creado desarrolla en local, la aplicación
por Guido van Rossum, ingeniero que fue 'habla' por el puerto 8080 de nuestro
contratado por Google en octubre de 2005. PC (http://localhost:8080), y es
De hecho, el sistema de gestión de código necesario hacer un 'deploy' a los
de programación que se utiliza internamente servidores de Google. Esto se hace
dentro de la compañía, llamado 'Google mediante el script
Mondrian', ha sido desarrollado por el propio 'google_appengine.py', que nos
van Rossum utilizando Python y los pedirá nuestro usuario y contraseña
primeros prototipos de 'Google App Engine' de Google para subir la aplicación al
(ver vídeo en el grupo de Facebook). espacio de 'Google App Engine' que
nos han facilitado.

Numero 2 www.aprenderpython.com 18
MUNDO PYTHON
Google App Engine
Nosotros hemos creado la aplicación
de ejemplo que permite experiementar
con los 'Requests' de peticiones de los
usuarios, y que simula un pequeño
libro de visitas. Lo podéis encontrar en
este enlace y, como podéis comprobar,
se encuentra alojado en el subdominio
'dirson1.appspot.com'. Google nos
ofrece la posibilidad de alojar las
aplicaciones de 'Google App Engine'
bajo el dominio 'appspot.com', pero
también podemos utilizar nuestro
Se trata de un ejemplo muy sencillo el propio dominio, siempre y cuando
que hemos hecho, porque el punto nuestra empresa esté utilizando
fuerte de 'Google App Engine' es su 'Google Apps'
capacidad de almacenamiento de datos Otro punto muy interesante de este
en los servidores de Google a través de nuevo 'Google App Engine' es que se
la tecnología de BigTable y GFS. Para pueden integrar las aplicaciones que
ello, utiliza la nomenclatura del modelo vayamos creando con el sistema de
de API de gestión de datos del cuentas personales de Google, en lo que
framework Django, modelo que podéis se ha llamado 'User Service' (ver
consultar en este enlace. Para realizar referencia de API). Además, también se
las queries a BigTable, los ingenieros de proporciona un pequeño sistema de
Google han creado un lenguaje de plantillas, que permite utilizar motores de
consultas, llamado GQL (Google Query templates de Python ya existentes.
Language), muy similar al conocido Las aplicaciones de App Engine son
SQL. Tenéis un documentación de fáciles de crear, de mantener y de
referencia en esta página. redimensionar a medida que aumenta su
tráfico.
FUENTES: http://code.google.com/appengine
http://code.google.com/appengine/,
/, http://www.genbeta.com/2008/04/08-
http://www.genbeta.com/2008/04/08-google-
google-
app-
app-engine, http://google.dirson.com/post/3944-
http://google.dirson.com/post/3944-google-
google-app-
app-engine, http://programa-
http://programa-con-
con-
google.blogspot.com/2008/05/ms-
google.blogspot.com/2008/05/ms-sobre-
sobre-el-
el-google-
google-app-
app-engine.html

Numero 2 www.aprenderpython.com 19
MUNDO PYTHON

Historia
Pygame comenzó en el verano del
2000. Siendo un programador C por
muchos años, descubrí Python y SDL
casi al mismo tiempo. Usted ya está
familiarizado con Python, que estaba
en su versión 1.5.2, por lo tanto
podría necesitar una introducción a
SDL, que significa Simple
Directmedia Layer. Creada por Sam
Lantinga, es una biblioteca
multiplataforma para controlar
multimedia, comparable a DirectX. A
sido usada para cientos de juegos
comerciales y de código abierto.

Estaba impresionado por lo nítidos y directos que eran ambos proyectos y no pasó
mucho tiempo antes que me diera cuenta que mezclar Python y SDL era una
propuesta interesante.
Descubrí un pequeño proyecto ya en curso con exactamente la misma idea,
PySDL. Creada por Mark Baker,
PySDL era una implementación directa de SDL como una extensión de Python. La
interfase era mas limpia que una envoltura genérica SWIG, pero forzaba un "estilo
C" al código. La muerte repentina de PySDL se incito a empezar un nuevo
proyecto por mi cuenta.
Quería generar un proyecto que realmente tomara ventaja de Python. Mi meta era
hacer muy simple realizar las cosas sencillas, y directo para hacer las cosas
difíciles. Pygame empezó en Octubre del 2000. Seis meses mas tarde la versión
1.0 de Pygame fue lanzado.

FUENTES: http://es.wikipedia.org/wiki/Pygame

Numero 2 www.aprenderpython.com 20
MUNDO PYTHON

Python y los juegos


¿Es Python conveniente para juegos?
La respuesta es, "Depende del juego".
Python es realmente bastante capaz
de correr juegos. Probablemente hasta
lo sorprenda cuanto se puede hacer en
menos de 30 milisegundos.
Aún así, no es difícil llegar al techo una
vez que su juego se haga mas
complejo. Cualquier juego
ejecutándose en tiempo real hará uso
completo de la computadora.
Durante los últimos años ha existido
una tendencia interesante en el
Al comienzo del 2001, el desarrollador
desarrollo de juegos, que se acerca a
Rebel Act Studios terminó su juego,
lenguajes de mas alto nivel.
Severance: Blade of Darkness. Usado
Usualmente un juegos se divide en 2
su propio motor de 3D a medida, el
grandes partes. El motor del juego, el
resto del juego está escrito en Python.
cual tiene que ser lo mas rápido
El juego es en tercera persona de
posible, y la lógica del juego, que le
acción sangrienta. Usted controla a
indica al motor que debe realizar. No
guerreros medievales en intrincadas
hace mucho tiempo que el motor de un
combinaciones de ataques
juego se escribía en Assembler, con
"decapitantes" mientras explora
porciones escritas en lenguaje C. Hoy
calabozos y castillos. Puede
en día, C se ha trasladado al motor del
descargar agregados creados por
juego, mientras que el juego mismo es
terceras partes para este juego, y
escrito en un lenguaje de Scripts de
encontrar que no son nada mas que
mas alto nivel. Juegos como Quake 3 y
archivos fuente de Python.
Unreal ejecutan estos Scripts como
código binario portable. http://www.pygame.org/news.html

Numero 2 www.aprenderpython.com 21
MUNDO PYTHON

Pygame y SDL sirven como excelentes motores C para juegos 2D. Los juegos
igualmente pasarán la mayor parte del tiempo de ejecución dentro de SDL
manejando sus gráficos. SDL puede tomar ventaja de la aceleración de hardware
de gráficos. Habilitando esto, se puede elevar el rendimiento de un juego que
corre aproximadamente a 40 cuadros por segundo hasta 200 cuadros por
segundos. Cuando se ve a un juego de Python ejecutando a 200 cuadros por
segundos, se puede ver que Python y los juegos pueden funcionar juntos.
Es impresionante cuan bien funcionan Python y SDL en múltiples plataformas.
Por ejemplo, en Mayo del 2001 lance mi propio proyecto Pygame completo,
SolarWolf, un juego de acción del estilo Arcade.
Una cosa que me ha sorprendido es que un año mas tarde, no ha existido la
necesidad de parches, arreglo de Bugs, o actualizaciones. El juego fue
desarrollado enteramente en Windows, pero corre en Linux, Mac OSX y muchos
Unix sin la necesidad de trabajo extra por mi lado.
Aún así, hay limitaciones muy claras. La mejor manera de manejar gráficos de
aceleradoras de video no es siempre la forma de obtener resultados rápidos del
Software que procesa gráficos. El soporte de hardware no está disponible en
todas las plataformas. Cuando un juego se hace mas complejo, usualmente se
tiene que comprometer con uno u otro. SDL tiene otras limitaciones de diseño,
cosas como los desplazamientos de pantalla completa pueden llevar rápidamente
a su juego a velocidades injugables.

Libro que
encontrara
s en el foro
de
Aorender
Python
dentro de
los niveles
avanzados.

Numero 2 www.aprenderpython.com 22
MUNDO PYTHON

Mientras SDL no es conveniente para


todo tipo de juegos, recuerde que
compañías como Loki usaron SDL para
ejecutar una gran variedad de títulos de
calidad de ventas por menor.
Pygame es de bajo nivel cuando se
trata de escribir juegos. Se encontrará
rápidamente en la necesidad de
envolver funciones comunes en su
propio ambiente de juego. La gran Resumen de módulos Pygame
ventaja de esto es que no hay nada en
Pygame que le impida seguir su camino. » cdrom:
cdrom: administra los dispositivos CDROM y
Su programa está en total control de la reproducció
reproducción de CDs de audio.
todo. El efecto colateral de esto es que » cursors:
cursors: carga imá
imágenes de cursor,
se encontrará pidiendo prestado mucho incluyendo los cursores por defecto.
código para realizar un marco de trabajo » display: controla la ventana principal o
mas avanzado. Necesitará un mejor pantalla.
» draw:
draw: dibuja figuras simples sobre objetos
entendimiento de lo que está haciendo.
Surface.
Surface.
» event:
event: administra eventos y la cola de
eventos.
» font:
font: genera e imprime fuentes tipográ
tipográficas
Truetype.
Truetype.
» image:
image: lee y graba imá
imágenes.
» joystick: administra dispositivos de joystick.
key: administra el teclado.
» key:
» mouse:
mouse: permite controlar el mouse
» movie:
movie: reproduce pelí
películas en formato
MPEG.
» sndarray:
sndarray: manipula sonidos con Numeric.
Numeric.
» surfarray:
surfarray: manipula imá
imágenes con Numeric.
Numeric.
» time: controlador de tiempo.
Fuente:www.losersjuegos.com.ar » transform:
transform: puede escalar, rotar e invertir
imá
imágenes

Numero 2 www.aprenderpython.com 23
MUNDO PYTHON
Codigo Fuente Sockets en
Python
Primero que nada vamos a ver de
que ablamos cuando decimos
socket. Se dice socket a un
mecanismo de comunicación
general entre dos procesos
cualquiera que pertenezcan a un
mismo sistema o a dos sistemas
diferentes.
Esta conexión se puede entablar por
diferentes dominios pero nosotros
explicaremos el AF_INET, el cual,
se utiliza para comunicaciones
TCP(UDP)/IP.
Para entender esta definición
necesitamos tener algunos
2) Puerto : Los puertos IP son numerados
conceptos claros:
del 0 al 65536 usados para dirigir los
1) Dirección IP: La dirección IP es
distintos tipos de actividad existente en
una serie de números asociadas a
Internet, al software apropiado en el
un dispositivo (generalmente una
ordenador local. Piensa en tu ordenador
computadora), con la cual es posible
como una oficina de un edificio, con varias
identificarlo dentro de una red
salas y habitaciones para desempeñar
configurada específicamente para
diferentes funciones. La dirección IP que
utilizar este tipo de direcciones. Es
utilizamos para navegar por Internet
Decir es la direccion de tu
correspondería con el nombre de la calle del
computadora dentro de esta red. Es
edificio, y los puertos IP serían los números
importante saber la ip del equipo
de las habitaciones. Pero ten en cuenta que
remoto para asi poder entablar la
no se pueden entablar dos conexiones por
conexión, ya que , de lo contrario el
el mismo puerto por lo tanto es conveniente
programa no sabria donde
utilizar puertos grandes como 12345 que no
conectarse.
son utilizados por otros programas.

Numero 2 www.aprenderpython.com 24
MUNDO PYTHON
Codigo Fuente Sockets en
Python
No es muy complejo adaptarse a la
manera en que trabajan los sockets,
primero que nada se necesita una
aplicación que haga el trabajo de
servidor, las principales cosas que
hace un servidor son las siguientes:

- Ser creado.
- Ser asignado a una dirección y
darle un puerto.
- Esperar por nuevas conexiones.
- Aceptar nuevas conexiones.
Un Código Básico de un servidor
seria:

import socket #Importamos el modulo


serversocket = socket.socket(socket.AF_INET,
socket.SOCK_STREAM) # Creamos el socket
serversocket.bind(('localhost', 8000)) #Le asignamos una dirección y un
puerto al servidor, por medio de una tupla (add, host).
serversocket.listen(1) #Esperamos 1 coneccion
clientsocket, clientaddress = serversocket.accept() #si llega alguna
conexión la aceptamos
print 'Conexión desde: ', clientaddress
while 1: #Creamos un bucle infinito
data = clientsocket.recv(1024) #recibimos el mensaje
if not data: break #si no hay mensaje se corta el bucle infinito y
cortamos la conexión
clientsocket.close() #se cierra la conexión

Numero 2 www.aprenderpython.com 25
MUNDO PYTHON
Codigo Fuente Sockets en
Python

Eso es lo básico que hace un servidor, claro que también es importante que
mande y reciba información.
Después se crean los clientes, lo que realizan los o el cliente es:
- Ser creado.
- Conectarse a una dirección y puerto dado.
El código básico de un cliente seria:

import socket #Importamos el modulo


clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #
Creamos el socket
clientsocket.connect(('localhost',8000)) #conectamos al servidor por medio
de una tupla (ip, puerto).
while 1: #Creamos bucle infinito
data = raw_input('>') #pedimos el mensaje a enviar
clientsocket.send(data) #enviamos el mensaje
if not data: break #si no hay mensaje se corta el bucle infinito y
cortamos la conexión
clientsocket.close() #cerramos la conexión

Fuente: Maximo Lionello

Numero 2 www.aprenderpython.com 26
MUNDO PYTHON
Curso Python

Introduccion Comenzando a programar


Python (como se observará a lo largo del El primer ejemplo que se muestra a
presente curso) cumple unos continuación es el tradicional programa
requerimientos ideales como lenguaje de “hola, mundo”, que en una versión en
programación, es decir, Python es general el lenguaje de programación C++, es:
y funciona en cualquier sistema operativo #include <iostream.h>
(bien sea en Linux, Windows o Macintosh) void main()
para que cualquier usuario lo pueda {
instalar en cualquier máquina. Por otra cout << “Hola, mundo” << endl;
parte, Python es un lenguaje de código }
abierto, de manera que cualquier usuario dicho código en Python es únicamente:
puede emplearlo sin necesidad de tener >>> print “Hola, mundo”
que comprar una licencia para emplear el Aunque es un ejemplo trivial, destaca
mismo. Por otra parte, esta orientado a la principal ventaja de Python que
objetos. Y finalmente comentar que es posteriormente discutiremos con más
fácil de aprender y de entender. calma, al ser un lenguaje de muy alto
nivel, así como Perl y Java.

Numero 2 www.aprenderpython.com 27
MUNDO PYTHON
Curso Python
Está demás indicar que también existen Los programas escritos en lenguajes
lenguajes de bajo nivel, o lenguaje de de bajo nivel sólo pueden ser
máquina. Es interesante comentar que los ejecutados en un tipo de computador
computadores sólo ejecutan programas específico y deben reescribirse cuando
escritos en lenguajes de bajo nivel. Los se desea importar dicho código a otra
programas de alto nivel tienen que máquina. Debido a esta desventaja,
traducirse antes de ejecutarse, y por casi todos los programa se escriben en
ende, esta traducción lleva tiempo, lo cual un lenguaje de alto nivel para evitar re-
es una pequeña desventaja de los escribir el mismo. Los lenguajes de
lenguajes de alto nivel como es el caso de bajo nivel sólo se usan para unas
Python. pocas aplicaciones especiales.
Sin embargo, dicha ventaja es Hay dos tipos de programas que
compensada por el hecho que los traducen lenguajes de alto nivel a
lenguajes de alto nivel son más sencillos lenguajes de bajo nivel: intérpretes y
y/o fáciles de escribir, de entender y de compiladores. Un intérprete lee un
depurar. De manera que los programas de programa de alto nivel y lo ejecuta, lo
alto nivel toman menos tiempo en diseñar, que significa que lleva a cabo lo que
y eliminando probablemente errores en el indica el programa. Traduce el
mismo. En segundo lugar, los lenguajes programa poco a poco, leyendo y
de alto nivel son portables, lo que significa ejecutando cada comando.
que pueden ejecutarse en tipos diferentes
de computadores sin modificación alguna
o con pocas modificaciones.

Numero 2 www.aprenderpython.com 28
MUNDO PYTHON
Curso Python
La mayoría de ejemplos indicados en
esta revista se pueden ejecutar desde
comandos en líneas. La línea de
comando es muy apropiada para el
desarrollo de programas y para
pruebas rápidas porque se pueden
teclear las instrucciones de Python e
inmediatamente después se puede
ejecutar dicha instrucción. Una vez que
un programa está completo, puede
archivarse en un guión para ejecutarlo
o modificarlo en el futuro.
La primera línea de este ejemplo es el
comando que pone en marcha el
intérprete Python. Las dos líneas
siguientes son mensajes del intérprete. La
tercera línea comienza con >>>, que es la
invitación del intérprete para indicar que
está listo. Cuando se escribe “print 1 + 1”
y el intérprete contesta “2”.
Alternativamente, se puede escribir el
programa en un archivo y usar el
intérprete para ejecutar el contenido de
dicho archivo. Dicho programa se escribe
en un editor de texto que contenga la
línea: print 1 + 1 (nótese que los
programas en Python poseen por defecto
la extensión terminal “.py”)
Para ejecutar el programa, se le tiene que
indicar el nombre del guión al intérprete. Visita: http:www.aprenderpython.com
$ python primer-ejemplo.py
2

Numero 2 www.aprenderpython.com 29
MUNDO PYTHON
ENLACES
• FAQ PYTHON ES: http://python-es-faq.wikidot.com/start

• UN JUEGO EN 7 DIAS:
http://www.alecu.com.ar/juegos/presentacion/

• VJUEGOS.ORG:
http://www.vjuegos.org/index.php?option=com_frontpage&Itemid=1

• BLOG: MUNDO PYTHON

• WINK: http://www.debugmode.com/wink/

• GOOGLE APP ENGINE:


http://code.google.com/intl/es/appengine/

• PYGAME: http://www.pygame.org/news.html

• Programación con GvR:


https://www.gfc.edu.co/traduccion/GvrLessonsIndice

Numero 2 www.aprenderpython.com 30
MUNDO PYTHON
CONTACTO
HOLA
SI TIENES ALGUNA SUGERENCIA O ARTICULO QUE QUIERAS
QUE SE PUBLIQUE EN LA PROXIMA EDICION, CON
RESPECTO A LA REVISTA PUEDES ESCRIBIR AL CORREO
QUE APACERECE ENSEGUIDA.
PARA LA PUBLICIDAD SI DESEAS ANUNCIARTE CON
NOSOTROS SOLO DEBES ESCRIBIR AL CORREO,
¿PREGUNTARAS POR QUE ANUNCIAR CON NOSOTROS?
• ES UNA REVISTA LIBRE
• MUCHAS PERSONAS DESCARGAN LA REVISTA
• LOS COSTOS NO SON ALTOS
• DISPONEMOS DE PAGINA WEB
AUTORES:
• DANIEL BERMUDEZ
PAGINA WEB: HTTP:WWW.APRENDERPYTHON.COM
• CORREO ELECTRONICO: APRENDERPYTHON@GMAIL.COM
• FORO: WWW.APRENDERPYTHON.COM.SMF/
• PUBLICIDAD: APRENDERPYTHON@GMAIL.COM
• BLOG: MUNDO PYTHON

Numero 2 www.aprenderpython.com 31
MUNDO PYTHON
PUBLICIDAD
http://web.educah
ome.com/shop/in
dex.asp?vendedo
rid=12

http://web.educahome.com/shop/index.asp?vendedorid=12

http://web.educahome.com/shop/index.asp?vendedorid=12

Numero 2 www.aprenderpython.com 32