SlideShare ist ein Scribd-Unternehmen logo
1 von 49
Downloaden Sie, um offline zu lesen
< Tecnologías
                                  web />
                                Víctor R. Ruiz <rvr@linotipo.es>
                               Tenerife, 17 de noviembre de 2011




jueves 17 de noviembre de 11
Internet



jueves 17 de noviembre de 11
Internet




                               http://es.wikipedia.org/wiki/Archivo:Internet_map_1024.jpg



jueves 17 de noviembre de 11
Internet
                    • Red de redes global.
                    • Protocolo abierto: TCP/IP.
                    • Cada ordenador tiene una dirección (IP).
                    • Las comunicaciones se realizan por paquetes
                     • TCP/UDP.
                     • Protocolos.
                     • IP/Puerto.
                     • DNS.
jueves 17 de noviembre de 11
WWW



jueves 17 de noviembre de 11
WWW != Internet



jueves 17 de noviembre de 11
WWW



                    • Protocolo de comunicación: HTTP
                    • Formato de contenidos: HTML


jueves 17 de noviembre de 11
WWW




                               http://es.wikipedia.org/wiki/Archivo:First_Web_Server.jpg




jueves 17 de noviembre de 11
WWW: HTTP




                                http://es.wikipedia.org/wiki/Hypertext_Transfer_Protocol



jueves 17 de noviembre de 11
WWW: HTML




jueves 17 de noviembre de 11
WWW: HTML
                    •Etiquetas
                     •<div></div>
                    •Atributos
                     •<a href=””>linotipo.es</a>
                    •Hojas de estilo
                    •JavaScript
jueves 17 de noviembre de 11
Formatos de
                 intercambio de datos


jueves 17 de noviembre de 11
CSV
                               Valores separados por comas




                                       http://es.wikipedia.org/wiki/CSV




jueves 17 de noviembre de 11
XML




                               http://es.wikipedia.org/wiki/XML




jueves 17 de noviembre de 11
XML




jueves 17 de noviembre de 11
JSON
                               JavaScript Object Notation




                                      http://es.wikipedia.org/wiki/JSON




jueves 17 de noviembre de 11
Introducción
                                 a Python


jueves 17 de noviembre de 11
Python




                               http://www.tiraecol.net/modules/comic/




jueves 17 de noviembre de 11
Python
                    • Lenguaje interpretado.
                    • Fuertemente tipado.
                    • Fácil de acceder a librerías en C.
                    • Prototipado rápido de aplicaciones.
                    • Muy productivo.
                    • Librería estándar fácil de usar.
                    • Lenguaje oficial Google: Python, Java, C++
jueves 17 de noviembre de 11
Python


                    • En Python no hay corchetes para
                               indicar bloques.
                    • Los bloques se indican con identación.


jueves 17 de noviembre de 11
Python: Funciones

                def nombre_funcion():
                  ...
                  return




jueves 17 de noviembre de 11
Python: Parámetros

                def nombre_funcion(p1, p2):
                  ...
                  return p1




jueves 17 de noviembre de 11
Python: Doc string


                def primer_parametro(p1, p2):
                  “”” Esta función devuelve el primer parámetro ”””
                  return p1




jueves 17 de noviembre de 11
Python: print

                def imprimir(p1, p2):
                  “”” Imprime los parámetros “””
                  print p1, p2

                imprimir(“a”, “b”)




jueves 17 de noviembre de 11
Python: Formateo print

                def imprimir(p1, p2):
                  “”” Imprime los parámetros “””
                  print “%s - %s” % (p1, p2)

                imprimir(“a”, “b”)




jueves 17 de noviembre de 11
Python: if-else
                def imprimir_si(valor):
                  “”” Imprime los parámetros “””
                  if (valor == “a”):
                    print valor
                  else:
                    print “Parámetro no es ‘a’”

                imprimir_si(“a”)


jueves 17 de noviembre de 11
Python: Diccionarios



                dicc = { ‘peras’: 1, ‘manzanas’: 2 }
                print dicc[‘a’]




jueves 17 de noviembre de 11
Python: Diccionarios


                dicc = { ‘peras’: 1, ‘manzanas’: 2 }
                print dicc[‘peras’]
                dicc[‘naranjas’] = 20
                print dicc[‘naranjas’]




jueves 17 de noviembre de 11
Python: Diccionarios

                dicc = { ‘peras’: 1, ‘manzanas’: 2 }
                print dicc[‘peras’]
                dicc[‘naranjas’] = 20
                print dicc[‘naranjas’]

                for fruta in dicc:
                  print dicc[fruta]




jueves 17 de noviembre de 11
Python: Tuplas
                                Listas inmutables




                lista = (1, 20, 300, 4000)
                print lista[0]




jueves 17 de noviembre de 11
Python: Tuplas
                                Listas inmutables



                lista = (1, 20, 300, 4000)
                print lista[0] # Primer elemento
                print lista[-1] # Último elemento




jueves 17 de noviembre de 11
Python: Tuplas
                                Listas inmutables


                lista = (1, 20, 300, 4000)
                print lista[0] # Primer elemento
                print lista[-1] # Último elemento

                # Subconjuntos
                lista[:2] # Del 1er al 3er elemento




jueves 17 de noviembre de 11
Python: Tuplas
                                Listas inmutables



                lista = (1, 20, 300, 4000)

                # Recorrer tupla
                for elemento in lista:
                  print elemento




jueves 17 de noviembre de 11
Python: Listas
                                Listas mutables


                lista = [1, 20, 300, 4000]
                print lista[0]
                print lista[-1]

                # Añadir elementos
                lista.append(50000)




jueves 17 de noviembre de 11
Python: Librerías



                import lib
                from lib import objeto




jueves 17 de noviembre de 11
Python: Objetos
                class Fruta:
                  def __init__(self, nombre_fruta):
                     “”” Constructor “””
                     self.nombre = nombre_fruta

                       def imprimir_nombre(self):
                         print self.nombre

                f = Fruta(“manzana”)
                f.imprimir_nombre()


jueves 17 de noviembre de 11
Python: Ficheros
                                  Modo lectura
                # Abrir fichero
                leer = open(“nombre.txt”, “r”)

                # Imprimir todas las líneas
                linea = leer.readline()
                while (linea):
                  print linea
                  linea = leer.readline()

                # Cerrar fichero
                escribir.close()


jueves 17 de noviembre de 11
Python: Ficheros
                                  Modo escritura

                # Abrir fichero
                escribir = open(“fichero.txt”, “w”)

                # Escribir contenido
                linea = “”
                escribir.write(linea)

                # Cerrar fichero
                escribir.close()



jueves 17 de noviembre de 11
Python: SQLite
                               Crear/Abrir base de datos


                # Abrir
                conn = sqlite3.connect(“bbdd.sql”)
                cursor = conn.cursor()

                # Cerrar
                cursor.close()




jueves 17 de noviembre de 11
Python: SQLite
                                    Crear tablas
                # Abrir
                conn = sqlite3.connect(“bbdd.sql”)
                cursor = conn.cursor()

                # Crear tabla
                cursor.execute(“””
                CREATE TABLE usuarios (
                  usuario TEXT,
                  twitter TEXT,
                  facebook TEXT,
                  plus TEXT
                )“””)

                # Guardar cambios
                conn.commit()
                cursor.close()



jueves 17 de noviembre de 11
Python: SQLite
                                      Insertar datos
                       # Abrir
                       conn = sqlite3.connect(“bbdd.sql”)
                       cursor = conn.cursor()

                       # Crear tabla
                       cursor.execute(“””
                       INSERT INTO usuarios VALUES (
                         ‘rvr’,
                         ‘http://twitter.com/vrruiz’,
                         ‘http://facebook.com/vrruiz/’,
                         ‘https://plus.google.com/115241315008695484224/posts’
                       )
                       “””)

                       # Guardar cambios
                       conn.commit()



jueves 17 de noviembre de 11
Python: SQLite
                                Consultar tablas

              # Abrir
              conn = sqlite3.connect(“bbdd.sql”)
              cursor = conn.cursor()

              # Consultar datos
              cursor.execute(“””SELECT * FROM usuarios“””)
              for usuario in cursor:
                print usuario

              # Cerrar cursor
              cursor.close()




jueves 17 de noviembre de 11
Python: HTTP

                import urllib2

                # Abrir conexión http
                pagina = urllib2.open(“http://twitter.com/vrruiz”)

                # Leer contenidos
                contenidos = pagina.read()
                print contenidos

                # Cerrar conexión
                pagina.close()




jueves 17 de noviembre de 11
Python: JSON


                from simplejson import json

                # Codificar estructura de datos a JSON
                codificado = json.dumps({‘usuario’ : ‘rvr’ })
                print codificado




jueves 17 de noviembre de 11
Python: JSON


                from simplejson import json

                # Decodificar JSON a estructura de datos
                decodificado = json.loads(“{ ‘usuario’ : ‘rvr’ }”)
                print decodificado




jueves 17 de noviembre de 11
Python: Recursos



                    • Inmersión en Python
                    • Documentación oficial: Librerías


jueves 17 de noviembre de 11
¡Gracias por su
                                 atención!


jueves 17 de noviembre de 11
Contacto

                                           Víctor R. Ruiz
                                 twitter.com/vrruiz · rvr.linotipo.es

                               > Otras presentaciones disponibles en <
                                         http://linotipo.es/




jueves 17 de noviembre de 11
Cómo obtener
                                 información
                               en redes sociales
                                  Víctor R. Ruiz <rvr@linotipo.es>
                               Tenerife, 14-18 de noviembre de 2011




jueves 17 de noviembre de 11

Weitere ähnliche Inhalte

Mehr von Víctor R. Ruiz

Introducción a Arduino - Parte I
Introducción a Arduino - Parte IIntroducción a Arduino - Parte I
Introducción a Arduino - Parte I
Víctor R. Ruiz
 
¿Quién vigila a los vigilantes? Privacidad en la Era de Internet
¿Quién vigila a los vigilantes? Privacidad en la Era de Internet¿Quién vigila a los vigilantes? Privacidad en la Era de Internet
¿Quién vigila a los vigilantes? Privacidad en la Era de Internet
Víctor R. Ruiz
 
Software libre como futuro profesional
Software libre como futuro profesionalSoftware libre como futuro profesional
Software libre como futuro profesional
Víctor R. Ruiz
 

Mehr von Víctor R. Ruiz (20)

Pseudociencia y desinformación
Pseudociencia y desinformaciónPseudociencia y desinformación
Pseudociencia y desinformación
 
MicroPython y ESP32
MicroPython y ESP32MicroPython y ESP32
MicroPython y ESP32
 
MicroPython en el ESP8266
MicroPython en el ESP8266MicroPython en el ESP8266
MicroPython en el ESP8266
 
Programación del ESP8266 con el IDE de Arduino
Programación del ESP8266 con el IDE de ArduinoProgramación del ESP8266 con el IDE de Arduino
Programación del ESP8266 con el IDE de Arduino
 
Raspberry Pi 2: Instalación y configuración
Raspberry Pi 2: Instalación y configuraciónRaspberry Pi 2: Instalación y configuración
Raspberry Pi 2: Instalación y configuración
 
Visión artificial con Processing y OpenCV
Visión artificial con Processing y OpenCVVisión artificial con Processing y OpenCV
Visión artificial con Processing y OpenCV
 
Vídeo en tiempo real con Processing
Vídeo en tiempo real con Processing Vídeo en tiempo real con Processing
Vídeo en tiempo real con Processing
 
Raspberry Pi + Arduino
Raspberry Pi + ArduinoRaspberry Pi + Arduino
Raspberry Pi + Arduino
 
Control remoto de Arduino con Firmata y Processing
Control remoto de Arduino con Firmata y ProcessingControl remoto de Arduino con Firmata y Processing
Control remoto de Arduino con Firmata y Processing
 
Cómo hacer librerías en Arduino
Cómo hacer librerías en ArduinoCómo hacer librerías en Arduino
Cómo hacer librerías en Arduino
 
Guía de Visualino
Guía de VisualinoGuía de Visualino
Guía de Visualino
 
Arduino y series de datos
Arduino y series de datosArduino y series de datos
Arduino y series de datos
 
Introducción a Fritzing
Introducción a FritzingIntroducción a Fritzing
Introducción a Fritzing
 
Introducción a los 'time-lapses' astronómicos
Introducción a los 'time-lapses' astronómicosIntroducción a los 'time-lapses' astronómicos
Introducción a los 'time-lapses' astronómicos
 
Introducción a Arduino (II)
Introducción a Arduino (II)Introducción a Arduino (II)
Introducción a Arduino (II)
 
Introducción a Arduino - Parte I
Introducción a Arduino - Parte IIntroducción a Arduino - Parte I
Introducción a Arduino - Parte I
 
¿Quién vigila a los vigilantes? Privacidad en la Era de Internet
¿Quién vigila a los vigilantes? Privacidad en la Era de Internet¿Quién vigila a los vigilantes? Privacidad en la Era de Internet
¿Quién vigila a los vigilantes? Privacidad en la Era de Internet
 
La isla de Pascua y la estructura del Universo
La isla de Pascua y la estructura del UniversoLa isla de Pascua y la estructura del Universo
La isla de Pascua y la estructura del Universo
 
Fin: Apocalipsis celestes
Fin: Apocalipsis celestesFin: Apocalipsis celestes
Fin: Apocalipsis celestes
 
Software libre como futuro profesional
Software libre como futuro profesionalSoftware libre como futuro profesional
Software libre como futuro profesional
 

Kürzlich hochgeladen

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Kürzlich hochgeladen (11)

EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 

Tecnologías web + Python

  • 1. < Tecnologías web /> Víctor R. Ruiz <rvr@linotipo.es> Tenerife, 17 de noviembre de 2011 jueves 17 de noviembre de 11
  • 2. Internet jueves 17 de noviembre de 11
  • 3. Internet http://es.wikipedia.org/wiki/Archivo:Internet_map_1024.jpg jueves 17 de noviembre de 11
  • 4. Internet • Red de redes global. • Protocolo abierto: TCP/IP. • Cada ordenador tiene una dirección (IP). • Las comunicaciones se realizan por paquetes • TCP/UDP. • Protocolos. • IP/Puerto. • DNS. jueves 17 de noviembre de 11
  • 5. WWW jueves 17 de noviembre de 11
  • 6. WWW != Internet jueves 17 de noviembre de 11
  • 7. WWW • Protocolo de comunicación: HTTP • Formato de contenidos: HTML jueves 17 de noviembre de 11
  • 8. WWW http://es.wikipedia.org/wiki/Archivo:First_Web_Server.jpg jueves 17 de noviembre de 11
  • 9. WWW: HTTP http://es.wikipedia.org/wiki/Hypertext_Transfer_Protocol jueves 17 de noviembre de 11
  • 10. WWW: HTML jueves 17 de noviembre de 11
  • 11. WWW: HTML •Etiquetas •<div></div> •Atributos •<a href=””>linotipo.es</a> •Hojas de estilo •JavaScript jueves 17 de noviembre de 11
  • 12. Formatos de intercambio de datos jueves 17 de noviembre de 11
  • 13. CSV Valores separados por comas http://es.wikipedia.org/wiki/CSV jueves 17 de noviembre de 11
  • 14. XML http://es.wikipedia.org/wiki/XML jueves 17 de noviembre de 11
  • 15. XML jueves 17 de noviembre de 11
  • 16. JSON JavaScript Object Notation http://es.wikipedia.org/wiki/JSON jueves 17 de noviembre de 11
  • 17. Introducción a Python jueves 17 de noviembre de 11
  • 18. Python http://www.tiraecol.net/modules/comic/ jueves 17 de noviembre de 11
  • 19. Python • Lenguaje interpretado. • Fuertemente tipado. • Fácil de acceder a librerías en C. • Prototipado rápido de aplicaciones. • Muy productivo. • Librería estándar fácil de usar. • Lenguaje oficial Google: Python, Java, C++ jueves 17 de noviembre de 11
  • 20. Python • En Python no hay corchetes para indicar bloques. • Los bloques se indican con identación. jueves 17 de noviembre de 11
  • 21. Python: Funciones def nombre_funcion(): ... return jueves 17 de noviembre de 11
  • 22. Python: Parámetros def nombre_funcion(p1, p2): ... return p1 jueves 17 de noviembre de 11
  • 23. Python: Doc string def primer_parametro(p1, p2): “”” Esta función devuelve el primer parámetro ””” return p1 jueves 17 de noviembre de 11
  • 24. Python: print def imprimir(p1, p2): “”” Imprime los parámetros “”” print p1, p2 imprimir(“a”, “b”) jueves 17 de noviembre de 11
  • 25. Python: Formateo print def imprimir(p1, p2): “”” Imprime los parámetros “”” print “%s - %s” % (p1, p2) imprimir(“a”, “b”) jueves 17 de noviembre de 11
  • 26. Python: if-else def imprimir_si(valor): “”” Imprime los parámetros “”” if (valor == “a”): print valor else: print “Parámetro no es ‘a’” imprimir_si(“a”) jueves 17 de noviembre de 11
  • 27. Python: Diccionarios dicc = { ‘peras’: 1, ‘manzanas’: 2 } print dicc[‘a’] jueves 17 de noviembre de 11
  • 28. Python: Diccionarios dicc = { ‘peras’: 1, ‘manzanas’: 2 } print dicc[‘peras’] dicc[‘naranjas’] = 20 print dicc[‘naranjas’] jueves 17 de noviembre de 11
  • 29. Python: Diccionarios dicc = { ‘peras’: 1, ‘manzanas’: 2 } print dicc[‘peras’] dicc[‘naranjas’] = 20 print dicc[‘naranjas’] for fruta in dicc: print dicc[fruta] jueves 17 de noviembre de 11
  • 30. Python: Tuplas Listas inmutables lista = (1, 20, 300, 4000) print lista[0] jueves 17 de noviembre de 11
  • 31. Python: Tuplas Listas inmutables lista = (1, 20, 300, 4000) print lista[0] # Primer elemento print lista[-1] # Último elemento jueves 17 de noviembre de 11
  • 32. Python: Tuplas Listas inmutables lista = (1, 20, 300, 4000) print lista[0] # Primer elemento print lista[-1] # Último elemento # Subconjuntos lista[:2] # Del 1er al 3er elemento jueves 17 de noviembre de 11
  • 33. Python: Tuplas Listas inmutables lista = (1, 20, 300, 4000) # Recorrer tupla for elemento in lista: print elemento jueves 17 de noviembre de 11
  • 34. Python: Listas Listas mutables lista = [1, 20, 300, 4000] print lista[0] print lista[-1] # Añadir elementos lista.append(50000) jueves 17 de noviembre de 11
  • 35. Python: Librerías import lib from lib import objeto jueves 17 de noviembre de 11
  • 36. Python: Objetos class Fruta: def __init__(self, nombre_fruta): “”” Constructor “”” self.nombre = nombre_fruta def imprimir_nombre(self): print self.nombre f = Fruta(“manzana”) f.imprimir_nombre() jueves 17 de noviembre de 11
  • 37. Python: Ficheros Modo lectura # Abrir fichero leer = open(“nombre.txt”, “r”) # Imprimir todas las líneas linea = leer.readline() while (linea): print linea linea = leer.readline() # Cerrar fichero escribir.close() jueves 17 de noviembre de 11
  • 38. Python: Ficheros Modo escritura # Abrir fichero escribir = open(“fichero.txt”, “w”) # Escribir contenido linea = “” escribir.write(linea) # Cerrar fichero escribir.close() jueves 17 de noviembre de 11
  • 39. Python: SQLite Crear/Abrir base de datos # Abrir conn = sqlite3.connect(“bbdd.sql”) cursor = conn.cursor() # Cerrar cursor.close() jueves 17 de noviembre de 11
  • 40. Python: SQLite Crear tablas # Abrir conn = sqlite3.connect(“bbdd.sql”) cursor = conn.cursor() # Crear tabla cursor.execute(“”” CREATE TABLE usuarios ( usuario TEXT, twitter TEXT, facebook TEXT, plus TEXT )“””) # Guardar cambios conn.commit() cursor.close() jueves 17 de noviembre de 11
  • 41. Python: SQLite Insertar datos # Abrir conn = sqlite3.connect(“bbdd.sql”) cursor = conn.cursor() # Crear tabla cursor.execute(“”” INSERT INTO usuarios VALUES ( ‘rvr’, ‘http://twitter.com/vrruiz’, ‘http://facebook.com/vrruiz/’, ‘https://plus.google.com/115241315008695484224/posts’ ) “””) # Guardar cambios conn.commit() jueves 17 de noviembre de 11
  • 42. Python: SQLite Consultar tablas # Abrir conn = sqlite3.connect(“bbdd.sql”) cursor = conn.cursor() # Consultar datos cursor.execute(“””SELECT * FROM usuarios“””) for usuario in cursor: print usuario # Cerrar cursor cursor.close() jueves 17 de noviembre de 11
  • 43. Python: HTTP import urllib2 # Abrir conexión http pagina = urllib2.open(“http://twitter.com/vrruiz”) # Leer contenidos contenidos = pagina.read() print contenidos # Cerrar conexión pagina.close() jueves 17 de noviembre de 11
  • 44. Python: JSON from simplejson import json # Codificar estructura de datos a JSON codificado = json.dumps({‘usuario’ : ‘rvr’ }) print codificado jueves 17 de noviembre de 11
  • 45. Python: JSON from simplejson import json # Decodificar JSON a estructura de datos decodificado = json.loads(“{ ‘usuario’ : ‘rvr’ }”) print decodificado jueves 17 de noviembre de 11
  • 46. Python: Recursos • Inmersión en Python • Documentación oficial: Librerías jueves 17 de noviembre de 11
  • 47. ¡Gracias por su atención! jueves 17 de noviembre de 11
  • 48. Contacto Víctor R. Ruiz twitter.com/vrruiz · rvr.linotipo.es > Otras presentaciones disponibles en < http://linotipo.es/ jueves 17 de noviembre de 11
  • 49. Cómo obtener información en redes sociales Víctor R. Ruiz <rvr@linotipo.es> Tenerife, 14-18 de noviembre de 2011 jueves 17 de noviembre de 11