Pensando en Python (y IV): XML, Java e IA

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Pensando en Python (y IV): XML, Java e IA"

Transcripción

1 XML define datos portables y Python define el código fuente Pensando en Python (y IV): XML, Java e IA DIEGO LZ. DE IPIÑA GZ. DE ARTAZA (profesor del Departamento de Ingeniería del Software de la Facultad de Ingeniería (ESIDE) de la Universidad de Deusto) Acabamos esta serie sobre Python examinando su capacidad para el procesamiento de XML e introduciendo Jython, la implementación Java de Python. También discutiremos una implementación más inteligente del juego de tres en raya que usa un algoritmo de inteligencia artificial. Introducción En los últimos años el estándar XML (extensible Markup Language) se ha establecido como el principal mecanismo para el intercambio de datos entre aplicaciones. XML es un metalenguaje que permite diseñar otros lenguajes. Algunos ejemplos de lenguajes derivados de XML son WML, MathML o XHTML. Con XML cualquiera puede desarrollar su propio lenguaje de etiquetas adecuado al tipo de aplicación que más le convenga. Un documento XML puede ser fácilmente procesado y sus datos manipulados, por medio de APIs estándar disponibles en lenguajes como Java, C, C++, C# y, por supuesto, Python. En esencia, XML define datos portables, al igual que Python o Java definen código portable. Por otra parte, el lenguaje de programación Java ha experimentado desde su nacimiento en 1995 un crecimiento extraordinario. En los últimos 10 años Java no sólo ha ido madurando como lenguaje de programación si no que gracias al ofrecimiento gratuito por parte de Sun de la JDK (Java Development Kit) su adopción ha sido espectacular. Como resultado ha habido numerosísimas contribuciones de código abierto que facilitan el desarrollo de cualquier problema informático que podamos concebir. Jython, la implementación Java de Python, fue creado para poder aprovechar todas estas contribuciones del mundo Java y tener acceso a su funcionalidad desde la elegante sintaxis de Python. En este artículo describiremos cómo programar aplicaciones que usan XML y acceden a paquetes desarrollados en Java desde Python. Concluiremos con una discusión del algoritmo de inteligencia artificial MiniMax que permitiría a la máquina ser un contrincante de entidad en el juego de tres en raya. XML En las próximas líneas vamos a hacer un repaso de la tecnología XML, aunque este tema ha sido tratado con profundidad en ediciones anteriores de Sólo Programadores. Si el lector quiere ampliar lo aquí expuesto, puede consultar los números 110, 111, 114, 115 y 116. XML no es sólo un lenguaje de lenguajes, es también un conjunto de tecnologías que permiten su representación y procesamiento, tales como XPath, XLink, XPointer o XML. La especificación de XML 1.0 puede encontrarse en la dirección de Internet Un documento XML está estructurado en los siguientes componentes: Instrucciones de procesamiento (processing instructions PI). Las PI son instrucciones para el procesador del documento XML. El prólogo del documento es una PI obligatoria: <?xml version= 1.0 encoding= iso ?> Declaraciones de tipo de documento. Especifican la estructura y sintaxis de un documento XML a través de una gramática bien en la forma de un DTD (Document Type Definition) o un Schema. Se declaran en un documento en el siguiente modo: <!DOCTYPE <elemento-raíz> SYSTEM <fichero-con-dtd > A través del DTD una instancia de un documento puede ser validada contra la gramática que define los elementos y posición de los mismos en un documento. Comentarios. Sirven para realizar anotaciones útiles al autor del documento. Un ejemplo sería: <! Esto es un comentario > Elementos. Aportan estructura semántica al documento. Se delimitan por etiquetas de apertura y cierre o vienen sin elementos interiores (etiquetas vacías como <br/>). Las etiquetas de apertura y las vacías suelen venir 36

2 Pensando en Python (y IV): XML, Java e IA MIDDLEWARE acompañadas de atributos, que parametrizan el elemento. Referencias a entidades. Sirven para insertar un determinado contenido definido previamente. Por ejemplo: <!ENTITY Empresa Universidad de Deusto ><pie>creado por &Empresa; </pie> Secciones CDATA. Contienen texto que no queremos sea procesado por el parser de XML. Por ejemplo: <![CDATA[<saludo>Hola, mundo! </saludo>]]> Las razones fundamentales del éxito de XML son: Permite etiquetar los datos con su significado (self-describing data). Estructurar la información de acuerdo a las necesidades de la aplicación. Tratar automáticamente la información a través de procesadores libremente disponibles, que se ajustan a APIs estándar. XML es la base de una nueva generación de aplicaciones web, siendo un estándar para el intercambio de datos. Entre otras cosas XML se utiliza como formato de datos en sitios web para separar contenido y presentación, como medio de comunicación para el intercambio de datos entre organizaciones o para la transmisión de mensajes en servicios web (SOAP). Procesamiento XML La popularidad de XML estriba en no tener que crear un nuevo compilador por cada lenguaje de representación de datos que queremos diseñar. Las herramientas que llevan a cabo la validación léxica y sintáctica de los documentos y su transformación en una representación manejable por programas vienen ya dados. A cambio, los diseñadores de nuevos tipos de documentos XML sólo deben seguir las restricciones que un documento XML bien formado debe cumplir: Debe tener un prólogo. Debe tener una etiqueta (elemento) raíz. Las etiquetas se hallan correctamente anidadas. Se usan caracteres válidos y bien aplicados. Los valores de los atributos vienen encerrados entre comillas. La industria utiliza tres estándares principales para el procesamiento de documentos XML: SAX, DOM y XSL. A continuación, pasamos a describirlos en más detalle. Procesamiento de XML con SAX SAX es el estándar de facto para el procesamiento de XML basado en eventos. Fue definido por David Megginson, siendo su especificación disponible en No es un analizador XML, si no que define una interfaz común implementada por los analizadores XML SAX. Un analizador SAX genera un evento por cada componente significativo del documento detectado. Por ejemplo el comienzo o final del documento, o el comienzo y final del elemento. Un programador que usa SAX debe implementar manejadores de los eventos notificados. SAX opera sobre un documento leyendo secuencialmente de principio a fin, sin cargar todo el documento en memoria. Presenta como principal ventaja una gran eficiencia en cuanto al tiempo y la memoria empleados en el análisis. La principal desventaja de SAX es que tenemos que mantener estado intermedio, a diferencia de otros estándares como DOM. Procesamiento de XML con DOM Un documento XML es para DOM un árbol de nodos, donde cada nodo representa a un elemento XML. Los elementos hijos y el texto contenido dentro de un elemento son subnodos. La especificación DOM es un estándar W3C disponible en La principal ventaja de DOM es que permite acceder a datos en función de la jerarquía de elementos, así como modificar el contenido de los documentos e incluso crearlos desde cero. La principal desventaja es el coste en tiempo y memoria que conlleva construir el árbol. A diferencia de SAX que efectúa una pasada del documento de izquierda a derecha y de arriba abajo, carga todo el documento XML en memoria. Para documentos largos la demanda de memoria puede ser ingente. Como consecuencia de ello, DOM no es adecuado para efectuar procesamiento de XML en dispositivos empotrados con poca capacidad de cómputo y memoria. Procesamiento de XML con XSL Dada la diversidad de lenguajes de presentación (WML, HTML, chtml), existen dos alternativas para desarrollar aplicaciones basadas en páginas: Desarrollar versiones de los procesos de generación de presentación (JSP, ASP, CGI,..) para cada lenguaje de marcado final. Desarrollar sólo una versión que genere XML y conversores de XML a los lenguajes de presentación. El lenguaje de programación XSL fue diseñado para responder al segundo enfoque, y el lector debería ser conocedor de ello, pues XSL-FO es objeto de nuestro estudio desde hace unos meses. XSL consta de dos partes: XML Stylesheet Transformation Language (XSLT) XSL Formatting Language (XSL-FO) XSLT es el componente de XSL que transforma un documento XML en otro documento XML. XSL-FO formatea y estiliza documentos en varios modos. La especificación de XSLT se encuentra disponible en Las principales ventajas de XSLT son: No asume un único formato de salida de documentos. Permite manipular de muy diversas maneras un documento XML: reordenar elementos, filtrar, añadir, borrar, etc. Las desventajas de XSLT son: Su utilización es más compleja que un lenguaje de programación convencional. Consume bastante memoria y capacidad de proceso, usa DOM por debajo. Programación XML en Python Para ilustrar el poder de Python en la programación de aplicaciones XML vamos a considerar el fragmento de código XML del listado 1. Este listado corresponde a la cartelera de todos los cines en una ciudad. Por cada cine listado, incluimos las películas que se muestran en él y los horarios de sus sesiones. Procesamiento SAX en Python El soporte para SAX en Python es ofrecido por el módulo xml.sax de la librería estándar de Python ( Este módulo define una función principal, make_parser(), a través de la cual crea y devuelve un objeto de tipo XMLReader, que corresponde con un procesador SAX. La definición de esta clase se encuentra en el módulo xml.sax.xmlreader. El módulo xml.sax.handler define manejadores de eventos para SAX. Para asignar un manejador de eventos a un procesador SAX se invoca el método setcontenthandler(handler), donde handler es una referencia a un objeto que implementa la interfaz xml.sax.hander. ContentHandler. Esta interfaz define métodos tales como startdocument o endelement que son invocados cuándo se genera un even- 37

3 LISTADO 1 to al entrar en una parte significativa del documento. El listado 2 muestra un ejemplo de código Python que procesa el fichero Cartelera.xml para contar el número de elementos y atributos XML encontrados en él. Tanto el documento XML (Cartelera.xml) como el script Python (ElementCounterSAX.py) están disponibles en el CD-ROM que acompaña a la revista. La figura 1 muestra el resultado de la ejecución de este script. Procesamiento DOM en Python Documento Cartelera.xml <?xml version= 1.0 encoding= iso ?> <Cartelera> <Cine codigo= 1 nombre= Guridi Zinemak direccion= San Prudencio poblacion= Vitoria-Gasteiz > <Pelicula codigo= 1 titulo= Malena director= Santiago Segura actores= Bo Derek, Al Pacino, Robert Reford > <Sesion>16:00</Sesion> <Sesion>19:30</Sesion> <Sesion>22:00</Sesion> </Pelicula> <Pelicula codigo= 2 titulo= Los Otros director= Alejandro Amenabar actores= Nicole Kidman > <Sesion>16:30</Sesion> <Sesion>19:45</Sesion> <Sesion>22:30</Sesion> </Pelicula> </Cine> </Cartelera> Figura 1. Ejecución del programa ElementCounterSAX.py aplicado a Cartelera.xml. Python provee en el módulo xml.dom.minidom una implementación sencilla de DOM. La función parse de este modulo genera a partir de un fichero un objeto DOM. Este objeto tiene todos los métodos y atributos característicos del estándar DOM. Por ejemplo: haschildnodes(), childnodes o getelementsbytagname(). Para más información sobre procesamiento DOM XML en Python se recomienda visitar la página La distribución PyXML, no incluida por defecto en la distribución estándar de Python, implementa un procesador de DOM más completo. El listado 3 usa el estándar DOM para procesar el fichero Cartelera.xml y obtener la información correspondiente a las películas encontradas en el mismo. El método DOM principal que se utiliza es getelementsbytag Name(<nombre-elemento>), que dado el nombre de un elemento recupera todas las instancias del mismo encontradas en un árbol DOM. El atributo de un elemento DOM attributes se usa para recuperar los atributos de cada elemento película. Las sentencias en la forma: LISTADO 2 # Uso: python ElementCounterSAX.py Cartelera.xml import sys from xml.sax import make_parser, handler class ElementCounter(handler.ContentHandler): def init (self): self._elems = 0 self._attrs = 0 self._elem_types = {} self._attr_types = {} peliattribs.getnameditem( codigo ). nodevalue Permiten recuperar el contenido del atributo cuyo nombre se pasa al método getnameditem. La figura 2 muestra el resultado de tal procesamiento. Puede verse este ejemplo en el fichero ejemplodom.py incluido en el CD-ROM. Procesamiento XSLT en Python XSLT es un lenguaje de transformación de documentos XML muy potente y complejo que requeriría para comprenderlo una serie de artículos por si mismo. Hay varias implementaciones XSLT en Python. Para una discusión sobre las alternativas disponibles remitimos al lector a Nosotros nos hemos decantado por los bindings Python de las librerías XML de Gnome libxml2 y libxlt. Versiones Windows de las mismas pueden encontrarse en users.skynet.be/sbi/libxml-python/. Los rpms de estas librerías para su instalación en UNIX pueden encontrarse en linux/rpm2html/search.php?query=libxml2- python y search.php?query=libxslt-python, respectivamente. El Listado 4 muestra cómo transformar un documento XML en un documento HTML por medio de XSLT (documento xsltexample.py disponible en el CD-ROM). Al aplicar a Cartelera.xml la hoja de XSLT, Cartelera.xsl, incluida también en el CD-ROM, se obtiene la Procesamiento del fichero Cartelera.xml usando SAX def startelement(self, name, attrs): self._elems = self._elems + 1 self._attrs = self._attrs + len(attrs) self._elem_types[name] = self._elem_types.get(name, 0) + 1 for name in attrs.keys(): self._attr_types[name] = self._attr_types.get(name, 0) + 1 def enddocument(self): print There were, self._elems, elements. print There were, self._attrs, attributes. print -ELEMENT TYPES for pair in self._elem_types.items(): print %20s %d % pair print -ATTRIBUTE TYPES for pair in self._attr_types.items(): print %20s %d % pair parser = make_parser() parser.setcontenthandler(elementcounter()) parser.parse(sys.argv[1]) 38

4 Pensando en Python (y IV): XML, Java e IA MIDDLEWARE LISTADO 3 LISTADO 4 página web de la figura 3. El listado 5 contiene sólo un pequeño fragmento de la hoja de estilo Cartelera.xsl. Una hoja XSLT es un documento XML bien formado que tiene como elemento raíz el elemento xsl:stylesheet. Este elemento contiene un conjunto de xsl:templates, o plantillas de transformación que asocian un fragmento del documento XML de entrada con otro del documento XML de salida. En la especificación de XSLT puede encontrarse una minuciosa descripción de este lenguaje. Procesamiento del fichero Cartelera.xml usando DOM #!/usr/bin/env python # -*- coding: iso *- import xml.dom.minidom, sys class Pelicula: def init (self, codigo, titulo, director, actores): self.codigo = codigo self.titulo = titulo self.director = director self.actores = actores def repr (self): return Codigo: + str(self.codigo) + - titulo: + self.titulo + - director: + self.director + - actores: + self.actores class PeliculaDOMParser: def init (self, filename): self.dom = xml.dom.minidom.parse(filename) self.peliculas = [] def getpeliculas(self): # Si no hemos ya recuperado las películas en el documento if not self.peliculas: peliculanodes = self.dom.getelementsbytagname( Pelicula ) numpelis = len(peliculanodes) for i in range(numpelis): pelicula = peliculanodes.item(i) # Recuperar los attributes de cada nodo Pelicula peliattribs = pelicula.attributes codigo = peliattribs.getnameditem( codigo ).nodevalue titulo = peliattribs.getnameditem( titulo ).nodevalue director = peliattribs.getnameditem( director ).nodevalue actores = peliattribs.getnameditem( actores ).nodevalue # crear un nuevo objeto de tipo película self.peliculas.append(pelicula(codigo,titulo,director,actores)) return self.peliculas if name == main : domparser = PeliculaDOMParser(sys.argv[1]) for peli in domparser.getpeliculas(): print peli Procesamiento del fichero Cartelera. XSLT # Ejecuta: python xsltexample.py Cartelera.xml Cartelera.xsl Cartelera.html import libxslt import sys if len(sys.argv)!= 4: print Usage: python xsltexample <xml-file> <xslt-file> <output-file> sys.exit(0) else: styledoc = libxml2.parsefile(sys.argv[2]) style = libxslt.parsestylesheetdoc(styledoc) doc = libxml2.parsefile(sys.argv[1]) result = style.applystylesheet(doc, None) style.saveresulttofilename(sys.argv[3], result, 0) style.freestylesheet() doc.freedoc() result.freedoc() Programación en Jython Jython ( es una implementación Open Source en Java de Python que se integra de manera transparente con la plataforma Java. Jython complementa a Java y es especialmente indicada para las siguientes tareas: Empotrar scripts en aplicaciones Java, de modo que los usuarios finales puedan escribir scripts que añadan funcionalidad a la aplicación. Experimentación interactiva por medio del intérprete interactivo suministrado por Jython que permite interactuar con los paquetes Java o aplicaciones en ejecución. Desarrollo rápido de aplicaciones. Los programas en Python son típicamente entre 2 y 10 veces más cortos que los programas Java. Esto se traduce en una mayor productividad en la programación. La integración transparente de Jython y Java permite combinar estos dos lenguajes en productos. Existen otros lenguajes de scripting que se integran transparentemente con Java como Jacl, implementación en Java de Tcl, Rhino, implementación en Java de JavasScript o BeanShell. Sin embargo Jython se distingue de otras alternativas por: Compilación dinámica de Jython en bytecodes de Java (conduce al mayor rendimiento posible). Habilidad para extender las clases Java en Jython. Compilación estática opcional, que permite la creación de applets, servlets y beans. Lo hace a través de la herramienta jythonc que transforma ficheros.py en.class. Uso del lenguaje Python que combina poder con simplicidad sintáctica, soportando el modelo orientado a objetos de Java. Las herramientas de compilación/ejecución de Jython son disponibles en jython.org/download.html. Para instalarlo simplemente hay que ejecutar el comando java jython- 21, que lanzará el instalador de Jython. Como prerrequisito, la máquina donde se instale debe tener preinstalada una máquina virtual de Java. Si no se dispone de ella, puede ser obtenida desde Jython básico La figura 4 muestra una sesión interactiva de Jython. Para ejecutar el intérprete de Jython Figura 2. Ejecución del programa EjemploDOM.py aplicado a Cartelera.xml. 39

5 simplemente hay que escribir en la línea de comando jython. El ejemplo muestra cómo el usuario puede crear una instancia de la clase Java java.util.random para obtener una serie de números aleatorios. Este ejemplo ha sido prestado de html. Como observamos en la figura, para crear una instancia de una clase Java se usa la convención de Python, es decir una función con el nombre de la clase no precedida del operador new. En la invocación de métodos de clases Java desde Jython hay que tener en cuenta la conversión de los tipos de datos de Python a Java, y cuando se reciben resultados lo opuesto, es decir, la conversión de tipos de datos Java en Python. Dado que Python y Java definen casi los mismos tipos de datos primitivos, apenas hay nunca problemas durante esta tarea de coerción (conversión de tipos de datos). Transformando la aplicación Tres en Raya en una aplicación Jython Qué mejor manera de evaluar el potencial de Jython que retomar nuestra conocida aplicación del Tres en Raya y aplicar los cambios requeridos para poderla ejecutar en Jython. Vamos a dividir esta tarea de transformación en tres fases: 1.- Tres en Raya modo texto en Jython. 2.- Tres en Raya modo gráfico en Jython con acceso a mapa persistente. LISTADO Tres en Raya modo gráfico en Jython con acceso a base de datos MySQL. Tres en Raya modo texto en Jython Nuestra implementación original de Tres en Raya en modo texto, a la que llamamos tresenraya.py, requiere mínimos cambios para ser ejecutable en Jython. Tan solo debemos añadir dos variables globales True y False con los valores 1 y 0, respectivamente. Esto es debido a que Jython no soporta todavía el tipo booleano de Python. Hemos incluido la versión modificada de este script en el CD-ROM bajo el nombre tresenrayajython.py. Las dos únicas líneas que difieren del script original presentado en la primera entrega de este curso son: True = 1 False = 0 La ejecución de este script Jython se presenta en la figura 5. Tres en Raya modo gráfico en Jython El siguiente paso en la transformación del juego Tres en Raya en Jython es crear la interfaz gráfica del mismo usando el paquete Swing de Java. El Fragmento hoja de estilo Cartelera.xsl <?xml version= 1.0 encoding= iso ?> <xsl:stylesheet xmlns:xsl= version= 1.0 > <xsl:output method= html /> <xsl:template match= / > <html> <head> <style type= text/css > table {font-family: arial, sans serif ; margin-left: 15pt;} th,td {font-size: 80%;} th {background-color:#faebd7} </style> </head> <body> <table border= 1 > <xsl:apply-templates/> </table> </body> </html> </xsl:template> <xsl:template match= Cartelera > <xsl:for-each select= Cine > <tr> <th><xsl:text>cine</xsl:text></th> <th><xsl:text>dirección</xsl:text></th> <th><xsl:text>población</xsl:text></th> <th></th> </tr> </xsl:stylesheet> Figura 3. Página web resultante de aplicar Cartelera.xsl a Cartelera.xml. listado 6 muestra el constructor de la clase JuegoTresEnRayaJythonGUI, incluida en el CD- ROM bajo el nombre tresenrayajythongui.py, junto con la implementación del método onclick. La lógica principal de esta aplicación está gobernada por el método jugar no incluido por falta de espacio pero disponible también en el CD-ROM. La clase JuegoTresEnRayaJythonGUI hereda de tresenrayajython.juegotresenraya, que es la clase base del juego. En el constructor de esta clase: (1) se obtiene una instancia a la implementación de la clase del registro de jugadores que guarda datos en un mapa persistente, (2) se invoca al constructor de la clase base y (3) luego simplemente se crea un Frame donde se colocan los botones correspondientes a las casillas del tablero de tres en raya. Obsérvese lo sencillo que es en Jython asignar un manejador de eventos a un botón: button = swing.jbutton(self.icono Vacio, actionperformed=self.onclick) Si hubiéramos efectuado una traducción literal del código Java a Jython hubiéramos necesitado el siguiente código: class action(awt.event.actionlistener): def onclick(self,event): # la implementación del manejador button = swing.jbutton(self.iconovacio) button.addactionlistener(action()) Tres en Raya modo gráfico con acceso a BD en Jython El tercer y último ejercicio de transformación que hemos realizado ha sido convertir la clase RegistroJugadoresDB que vimos en la tercera entrega a Jython. En esta ocasión no usamos la 40

6 Python 121.qxd 17/12/04 01:06 Página 41 MIDDLEWARE Pensado en Python (y IV): XML, Java e IA Figura 4. Sesión interactiva de Jython. DB API de Python, si no que JDBC para acceder a la base de datos que creamos en la tercera entrega. El script SQL de creación de la base de datos tresenraya ha sido incluido en el CD-ROM junto con las instrucciones de cómo ejecutar este script en MySQL. El listado 7 muestra un fragmento de la clase transformada a la que hemos denominado RegistroJugadores DBJython. Como las otras variedades de registros de jugadores que hemos implementado deriva de la clase base RegistroJugadores. Si se desconoce la manera de interactuar con JDBC se recomienda al lector que repase los contenidos de los números 105, 106 y 107 de Sólo Programadores y/o que visite la página En pocas palabras, en el constructor de esta clase se carga el driver JDBC para MySQL (disponible en connector/j/) en memoria, se obtiene una conexión a la base de datos tresenraya y luego se utiliza esa conexión para ejecutar comandos LISTADO 6 (Statements) SQL. Las figuras 6 y 7 corresponden a pantallazos de la versión Jython del juego Tres en Raya en modo gráfico. IronPython: Python para.net En Marzo del 2004 en la conferencia PyCon fue pre- Figura 5. Sesión interactiva de tresenrayajython.py. sentado IronPython ( ironpython.com/), una implementación Python z Dinámico, soporta el modo de ejecución orientada a las plataformas.net y Mono. Las interactivo como Python. características principales de IronPython son: z Opcionalmente estático, se pueden comz Tan rápida como la versión estándar de pilar ficheros Python para producir ejecupython. tables (.EXE) que pueden ejecutarse direcz Integrada de modo transparente con la tamente o incluso DLLs. Common Language Runtime de.net. Desde z Soporta código gestionado (managed code). IronPython podemos usar las librerías de z No finalizado, todavía en versión alfa no clases.net y extender otras clases.net. puede ser utilizada para producción de software. Clase JuegoTresEnRayaJythonGUI En definitiva, IronPython parece una contribución prometedora que nos permitirá programar aplicaciones.net desde la cómoda y sencilla sintaxis de Python. Manténgase JOptionPane atento a los progresos en este proyecto. import java from java import awt from javax import swing from javax.swing import class JuegoTresEnRayaJythonGUI(tresenrayajython.JuegoTresEnRaya): def init (self): registro = tresenrayajython.registrojugadorespersistente() tresenrayajython.juegotresenraya. init (self, registro, solop, solop ) self.frame = swing.jframe( Juego Tres en Raya, visible=1, windowclosing=self.exit) gridsizer = awt.gridlayout(3,3) self.frame.getcontentpane().setlayout(gridsizer) self.iconomaquina = swing.imageicon( Images\\x.PNG ) self.iconousuario = swing.imageicon( Images\\o.PNG ) self.iconovacio = swing.imageicon( Images\\blank.PNG ) self.buttons = [] for i in range(9): button = swing.jbutton(self.iconovacio, actionperformed=self.onclick) button.setbackground(awt.color.white) self.frame.contentpane.add(button) self.buttons.append(button) self.frame.pack() def onclick(self, event): indexbuttonclicked = self. get_index_button_clicked(event.getsource()) if self.buttons[indexbuttonclicked].geticon() == self.iconovacio: if not self. jugar(indexbuttonclicked): self.resetgame() self. resettablero() El algoritmo MiniMax No quería concluir esta serie sobre Python, en la que el juego Tres en Raya nos ha ayudado a entender tantos conceptos, sin proponer un algoritmo más sofisticado referente a la elección de casillas por la máquina. En definitiva, muchos de vosotros os habréis preguntado cómo hacer que la máquina piense y elija la mejor casilla en cada momento. Este razonamiento es posible a través del algoritmo de inteligencia artificial, MiniMax. Figura 6. Jugando al Tres en Raya con la versión Jython. 41

7 LISTADO 7 Clase RegistroJugadoresDBJython.py from java import lang from java import sql import tresenrayajython, string, sys class RegistroJugadoresDBJython(tresenrayajython.RegistroJugadores): def init (self): tresenrayajython.registrojugadores. init (self) lang.class.forname( org.gjt.mm.mysql.driver ) except Exception, e: print Se ha producido un error en la carga del driver, e url = jdbc:mysql://localhost:3306/tresenraya self.con = sql.drivermanager.getconnection(url, tresenraya, tresenraya ) except Exception, e: print Se ha producido un error en el establecimiento de la conexion con la base de datos, e # Asegurarse que si no existe un usuario solop se añada usuariosolop = self._executesqlcommand( select * from usuario where nombreusuario= solop ) def _executesqlcommand(self, command): # si la consulta devuelve resultados lo hará como una lista de tuplas, # cada tupla es una fila de la tabla, y cada elemento de la tupla una columna resultado = [] command = string.strip(command) if len(command): stmt = self.con.createstatement() if string.lower(command).startswith( select ): # si es una select rs = stmt.executequery(command) metadata = rs.getmetadata() # recupera todas las filas while rs.next(): # recupera todas las columnas contenidofila = [] for i in range(1, metadata.getcolumncount()+1): columntype = metadata.getcolumntype(i) contenidocolumna = None if columntype == sql.types.integer: contenidocolumna = rs.getint(i) elif columntype == sql.types.varchar: contenidocolumna = rs.getstring(i) else: contenidocolumna = rs.getobject(i) contenidofila.append(contenidocolumna) except Exception, e: print e break resultado.append(tuple(contenidofila)) else: stmt.execute(command) except: raise u Excepcion producida en ejecucion de comando + command return resultado Antes de explicar el algoritmo es necesaria una breve introducción a árboles de búsqueda. Un árbol de búsqueda es una notación para representar búsquedas. La figura 8 representa uno de estos árboles. Los cuadrados son conocidos como nodos y representan puntos de decisión en la búsqueda. Los nodos están conectados por ramas. La búsqueda comienza en el nodo raíz, en la parte superior de la figura. En cada punto de decisión, los nodos para cada posible camino de búsqueda son generados, hasta que más decisiones no sean posibles. Los nodos al final de la búsqueda son los nodos raíz. El algoritmo MiniMax considera la existencia de dos jugadores, el MAX y el MIN. Un árbol de búsqueda es generado, depth-first, comenzando con la posición actual del juego hasta la posición final del juego. Luego, la posición final es evaluada desde el punto de vista de MAX. A continuación, los nodos interiores del árbol son rellenados de abajo a arriba con los valores evaluados. Los nodos que corresponden al jugador MAX reciben el Figura 7. Versión Jython de la pantalla de estadísticas. máximo valor de sus hijos. Los nodos del jugador MIN el mínimo de sus hijos. Los valores representan cómo de bueno es el movimiento. El jugador MAX tratará de elegir el movimiento que maximice el valor al final. Sin embargo, el jugador MIN, mientras tanto, seleccionará los movimientos que son mejores para él, minimizando en todo lo posible el resultado de MAX. Para más detalles sobre este algoritmo y otros basados en IA recomendamos permanecer atentos a las novedades que incluirá Sólo Programadores en los próximos meses. En el CD- ROM ofrecemos una implementación de la aplicación de Tres en Raya que hace uso de MiniMax. Conclusiones Aquí acabamos nuestro recorrido por el lenguaje de programación Python. Confío que a lo largo de estas cuatro entregas el lector haya podido descubrir el potencial de este gran lenguaje de scripting que combina a la vez potencia y sencillez. La aplicación de tres en raya que hemos ido desarrollando tan solo ha mostrado cómo implementar en Python la funcionalidad correspondiente a las tareas programáticas más típicas: programación gráfica, de acceso a bases de datos, web y XML. Por falta de tiempo no hemos podido descubrir otras muchas áreas en las que Python también juega un papel destacado. Espero que, tras lo descrito en esta serie, el poder de Python os acompañe en vuestras próximas tareas de programación. Figura 8. Ejemplo de árbol de búsqueda. 42

Capítulo 1 Documentos HTML5

Capítulo 1 Documentos HTML5 Capítulo 1 Documentos HTML5 1.1 Componentes básicos HTML5 provee básicamente tres características: estructura, estilo y funcionalidad. Nunca fue declarado oficialmente pero, incluso cuando algunas APIs

Más detalles

Práctica de introducción a

Práctica de introducción a Práctica de introducción a XML El trabajo consiste en una introducción al uso del lenguaje XML y su aplicación en documentos y sistemas de caracteristicas multimedia. 1.- Qué es XML? XML (extensible Markup

Más detalles

1 Introducción a XML

1 Introducción a XML 1 Introducción a XML Introducción (I)! Qué es XML?! Últimamente todo el mundo habla sobre XML!! Dicen que es un lenguaje etiquetado...es decir: Es un lenguaje como HTML, pero con nuevas etiquetas?! Dicen

Más detalles

La utilización de las diferentes aplicaciones o servicios de Internet se lleva a cabo respondiendo al llamado modelo cliente-servidor.

La utilización de las diferentes aplicaciones o servicios de Internet se lleva a cabo respondiendo al llamado modelo cliente-servidor. Procesamiento del lado del servidor La Programación del lado del servidor es una tecnología que consiste en el procesamiento de una petición de un usuario mediante la interpretación de un script en el

Más detalles

Introducción a la extensión de scripting en gvsig 2.0

Introducción a la extensión de scripting en gvsig 2.0 Introducción a la extensión de scripting en gvsig 2.0 2012 gvsig Association Este documento se distribuye con la licencia Creative Commons 1 2 Índice de contenido 1 Introducción... 3 Instalación de la

Más detalles

Transformación de documentos XML con

Transformación de documentos XML con Transformación de documentos XML con X S L T Necesidad de las transformaciones XML se presenta como un estándar para transmitir datos a través de Internet. Ante la posibilidad de que distintos centros

Más detalles

Ejercicios - Persistencia en Android: ficheros y SQLite

Ejercicios - Persistencia en Android: ficheros y SQLite Ejercicios - Persistencia en Android: ficheros y SQLite Índice 1 Uso de ficheros (0.5 puntos)...2 2 Persistencia con ficheros (0.5 puntos)...3 3 Base de datos: SQLiteOpenHelper (0.5 puntos)... 3 4 Base

Más detalles

Capítulo 9. Archivos de sintaxis

Capítulo 9. Archivos de sintaxis Capítulo 9 Archivos de sintaxis El SPSS permite generar y editar archivos de texto con sintaxis SPSS, es decir, archivos de texto con instrucciones de programación en un lenguaje propio del SPSS. Esta

Más detalles

GLOSARIO. Arquitectura: Funcionamiento, estructura y diseño de una plataforma de desarrollo.

GLOSARIO. Arquitectura: Funcionamiento, estructura y diseño de una plataforma de desarrollo. GLOSARIO Actor: Un actor es un usuario del sistema. Esto incluye usuarios humanos y otros sistemas computacionales. Un actor usa un Caso de Uso para ejecutar una porción de trabajo de valor para el negocio.

Más detalles

Arquitectura de Aplicaciones

Arquitectura de Aplicaciones 1 Capítulo 13: Arquitectura de aplicaciones. - Sommerville Contenidos del capítulo 13.1 Sistemas de procesamiento de datos 13.2 Sistemas de procesamiento de transacciones 13.3 Sistemas de procesamiento

Más detalles

Ejemplos básicos de webmathematica para profesores

Ejemplos básicos de webmathematica para profesores Ejemplos básicos de webmathematica para profesores Cualquier cálculo hecho dentro Mathematica puede ser realizado usando webmathematica con dos limitaciones significativas. Primero, al usar webmathematica,

Más detalles

Capítulo VI. Conclusiones. En este capítulo abordaremos la comparación de las características principales y

Capítulo VI. Conclusiones. En este capítulo abordaremos la comparación de las características principales y Capítulo VI Conclusiones En este capítulo abordaremos la comparación de las características principales y de las ventajas cada tecnología Web nos ofrece para el desarrollo de ciertas aplicaciones. También

Más detalles

Figura 4.1 Clasificación de los lenguajes de bases de datos

Figura 4.1 Clasificación de los lenguajes de bases de datos 1 Colección de Tesis Digitales Universidad de las Américas Puebla Romero Martínez, Modesto Este capítulo describen los distintos lenguajes para bases de datos, la forma en que se puede escribir un lenguaje

Más detalles

App para realizar consultas al Sistema de Información Estadística de Castilla y León

App para realizar consultas al Sistema de Información Estadística de Castilla y León App para realizar consultas al Sistema de Información Estadística de Castilla y León Jesús M. Rodríguez Rodríguez rodrodje@jcyl.es Dirección General de Presupuestos y Estadística Consejería de Hacienda

Más detalles

Manual de NetBeans y XAMPP

Manual de NetBeans y XAMPP Three Headed Monkey Manual de NetBeans y XAMPP Versión 1.0 Guillermo Montoro Delgado Raúl Nadal Burgos Juan María Ruiz Tinas Lunes, 22 de marzo de 2010 Contenido NetBeans... 2 Qué es NetBeans?... 2 Instalación

Más detalles

Mi propuesta consiste en crear un portal Web que contemple las siguientes funcionalidades:

Mi propuesta consiste en crear un portal Web que contemple las siguientes funcionalidades: Propósito del prototipo: Mi propuesta consiste en crear un portal Web que contemple las siguientes funcionalidades: 1º. Mostrar noticias y eventos propios del grupo de personas que administren la Web.

Más detalles

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES CASO PRÁCTICO DISTRIBUCIÓN DE COSTES Nuestra empresa tiene centros de distribución en tres ciudades europeas: Zaragoza, Milán y Burdeos. Hemos solicitado a los responsables de cada uno de los centros que

Más detalles

Capitulo 5. Implementación del sistema MDM

Capitulo 5. Implementación del sistema MDM Capitulo 5. Implementación del sistema MDM Una vez que se concluyeron las actividades de análisis y diseño se comenzó la implementación del sistema MDM (Manejador de Documentos de MoProSoft). En este capitulo

Más detalles

Unidad II. Interfaz Grafica (continuación ) Basado en clases de Ing. Carlos A. Aguilar

Unidad II. Interfaz Grafica (continuación ) Basado en clases de Ing. Carlos A. Aguilar Clase:005 1 Unidad II Interfaz Grafica (continuación ) Basado en clases de Ing. Carlos A. Aguilar 2 Agenda Desarrollo de Apps para Android Aplicaciones en Android Componentes Básicos de las Aplicaciones

Más detalles

Manual del Alumno de la plataforma de e-learning.

Manual del Alumno de la plataforma de e-learning. 2 Manual del Alumno de la Plataforma de E-learning 3 4 ÍNDICE 1. Página de Inicio...7 2. Opciones generales...8 2.1. Qué es el Campus...8 2.2. Nuestros Cursos...9 2.3. Cómo matricularme...9 2.4. Contactar...9

Más detalles

Introducción a Protégé

Introducción a Protégé FACULTAD DE INFORMÁTICA LICENCIATURA EN DOCUMENTACIÓN SISTEMAS DE REPRESENTACIÓN Y PROCESAMIENTO AUTOMÁTICO DEL CONOCIMIENTO Práctica 1 1ª Parte Introducción a Protégé Febrero 2003 1. Objetivo La presente

Más detalles

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.2 UML: Modelado de casos de uso

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.2 UML: Modelado de casos de uso PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación II MODELOS y HERRAMIENTAS UML 1 1 Modelado de casos de uso (I) Un caso de uso es una técnica de modelado usada para describir lo que debería hacer

Más detalles

Manual de usuario Versión: 1.3 Edición: 05/02/2015 1

Manual de usuario Versión: 1.3 Edición: 05/02/2015 1 Manual de usuario Versión: 1.3 Edición: 05/02/2015 1 Índice Formula Integration Manual de Usuario... 3 1. Introducción... 3 1.1. Funcionalidades... 3 2. Instalación... 3 2.1. Requisitos mínimos... 3 2.2.

Más detalles

Redes de área local: Aplicaciones y servicios WINDOWS

Redes de área local: Aplicaciones y servicios WINDOWS Redes de área local: Aplicaciones y servicios WINDOWS 4. Servidor DNS 1 Índice Definición de Servidor DNS... 3 Instalación del Servidor DNS... 5 Configuración del Servidor DNS... 8 2 Definición de Servidor

Más detalles

Entre los más conocidos editores con interfaz de desarrollo tenemos:

Entre los más conocidos editores con interfaz de desarrollo tenemos: Herramientas de programación Para poder programar en ensamblador se precisa de algunas herramientas básicas, como un editor para introducir el código, un ensamblador para traducir el código a lenguaje

Más detalles

NORMA 34.14(SEPA) 05/11/2013

NORMA 34.14(SEPA) 05/11/2013 NORMA 34.14(SEPA) 05/11/2013 1. Descripción La aplicación de generación de ficheros de transferencias permite generar fácilmente órdenes para que se efectúe el pago de transferencias a los beneficiarios

Más detalles

MATERIAL 2 EXCEL 2007

MATERIAL 2 EXCEL 2007 INTRODUCCIÓN A EXCEL 2007 MATERIAL 2 EXCEL 2007 Excel 2007 es una planilla de cálculo, un programa que permite manejar datos de diferente tipo, realizar cálculos, hacer gráficos y tablas; una herramienta

Más detalles

REDES DE ÁREA LOCAL. APLICACIONES Y SERVICIOS EN WINDOWS

REDES DE ÁREA LOCAL. APLICACIONES Y SERVICIOS EN WINDOWS REDES DE ÁREA LOCAL. APLICACIONES Y SERVICIOS EN WINDOWS Servicio DNS - 1 - Servicio DNS...- 3 - Definición... - 3 - Instalación... - 5 - Configuración del Servidor DNS...- 10 - - 2 - Servicio DNS Definición

Más detalles

GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD

GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD Manual de usuario 1 - ÍNDICE 1 - ÍNDICE... 2 2 - INTRODUCCIÓN... 3 3 - SELECCIÓN CARPETA TRABAJO... 4 3.1 CÓMO CAMBIAR DE EMPRESA O DE CARPETA DE TRABAJO?...

Más detalles

ESCUELA SUPERIOR DE INFORMATICA Prácticas de Estadística UNA SESIÓN EN SPSS

ESCUELA SUPERIOR DE INFORMATICA Prácticas de Estadística UNA SESIÓN EN SPSS UNA SESIÓN EN SPSS INTRODUCCIÓN. SPSS (Statistical Product and Service Solutions) es un paquete estadístico orientado, en principio, al ámbito de aplicación de las Ciencias sociales, es uno de las herramientas

Más detalles

MANUAL DE USUARIO APLICACIÓN SYSACTIVOS

MANUAL DE USUARIO APLICACIÓN SYSACTIVOS MANUAL DE USUARIO APLICACIÓN SYSACTIVOS Autor Edwar Orlando Amaya Diaz Analista de Desarrollo y Soporte Produce Sistemas y Soluciones Integradas S.A.S Versión 1.0 Fecha de Publicación 19 Diciembre 2014

Más detalles

Notas para la instalación de un lector de tarjetas inteligentes.

Notas para la instalación de un lector de tarjetas inteligentes. Notas para la instalación de un lector de tarjetas inteligentes. Índice 0. Obtención de todo lo necesario para la instalación. 3 1. Comprobación del estado del servicio Tarjeta inteligente. 4 2. Instalación

Más detalles

CONCLUISIONES Y RECOMENDACIONES

CONCLUISIONES Y RECOMENDACIONES CONCLUISIONES Y RECOMENDACIONES CONTENIDO 7.1 Verificación de Hipótesis 7.2 Conclusiones 7.3 Recomendaciones Mónica Cecilia Gallegos Varela - 145 - VERIFICACIÓN DE HIPÓTESIS La hipótesis planteada al inicio

Más detalles

Guía de uso del Cloud Datacenter de acens

Guía de uso del Cloud Datacenter de acens guíasdeuso Guía de uso del Cloud Datacenter de Calle San Rafael, 14 28108 Alcobendas (Madrid) 902 90 10 20 www..com Introducción Un Data Center o centro de datos físico es un espacio utilizado para alojar

Más detalles

Introducción a PHP. * No es necesario declarar previamente las variables.

Introducción a PHP. * No es necesario declarar previamente las variables. Introducción a PHP La programación de sitios web cada día está más orientada al desarrollo de páginas dinámicas y aplicaciones, o sea sitios donde el usuario pueda interactuar con la web. Dentro de los

Más detalles

INSTALACIÓ N A3ERP. Informática para empresas INTRODUCCIÓN CONSIDERACIONES GENERALES DE LA INSTALACIÓN PAQUETES DE INSTALACIÓN PREDEFINIDOS

INSTALACIÓ N A3ERP. Informática para empresas INTRODUCCIÓN CONSIDERACIONES GENERALES DE LA INSTALACIÓN PAQUETES DE INSTALACIÓN PREDEFINIDOS Página 1 de 20 INSTALACIÓ N A3ERP INTRODUCCIÓN La instalación de a3erp v9 ha sufrido una trasformación importante respecto a sus versiones anteriores. Cualquier instalación exige la existencia de un pc

Más detalles

Práctica 2: Instalación de un gestor de bases de datos relacionales y desarrollo de una aplicación Web con persistencia de datos

Práctica 2: Instalación de un gestor de bases de datos relacionales y desarrollo de una aplicación Web con persistencia de datos Práctica 2: Instalación de un gestor de bases de datos relacionales y desarrollo de una aplicación Web con persistencia de datos Sistemas de Información Grado de Informática Dpto. de Informática e Ingeniería

Más detalles

A continuación resolveremos parte de estas dudas, las no resueltas las trataremos adelante

A continuación resolveremos parte de estas dudas, las no resueltas las trataremos adelante Modulo 2. Inicio con Java Muchas veces encontramos en nuestro entorno referencias sobre Java, bien sea como lenguaje de programación o como plataforma, pero, que es en realidad Java?, cual es su historia?,

Más detalles

.NET y J2EE VALORACIÓN Y COMPARACIÓN DE LOS ELEMENTOS DE LAS DOS PLATAFORMAS. Definiciones...2 C# y Java...3 Similitudes...4 Ventajas...

.NET y J2EE VALORACIÓN Y COMPARACIÓN DE LOS ELEMENTOS DE LAS DOS PLATAFORMAS. Definiciones...2 C# y Java...3 Similitudes...4 Ventajas... .NET y J2EE VALORACIÓN Y COMPARACIÓN DE LOS ELEMENTOS DE LAS DOS PLATAFORMAS Definiciones...2 C# y Java.....3 Similitudes...4 Ventajas...4 Definiciones Sobre J2EE J2EE (Java 2 Platform Enterprise Edition)

Más detalles

Formularios. Formularios Diapositiva 1

Formularios. Formularios Diapositiva 1 Formularios Crear un formulario utilizando el Asistente para formularios Modificación en vista Diseño Adición de Controles a un Formulario Adición de un Subformulario a un formulario Formularios Diapositiva

Más detalles

GUÍA Nro. 1 TECNOLOGÍA DE INTERNET. TIII PIII

GUÍA Nro. 1 TECNOLOGÍA DE INTERNET. TIII PIII GUÍA Nro. 1 TECNOLOGÍA DE INTERNET. TIII PIII GUIA DISPONIBLE EN: http://preparadorivan.blogspot.com/ - http://preparadormssi.50webs.com/inicio.html La World Wide Web o la Web, es una de las múltiples

Más detalles

FUNDAMENTOS DE PROGRAMACION CON C#

FUNDAMENTOS DE PROGRAMACION CON C# Capítulo 1 FUNDAMENTOS DE PROGRAMACION CON C# El lenguaje C# C# (léase, en inglés C sharp, y en español C almohadilla) es un lenguaje de programación que permite el desarrollo de aplicaciones para Internet,

Más detalles

Correspondencias entre taxonomías XBRL y ontologías en OWL Unai Aguilera, Joseba Abaitua Universidad de Deusto, EmergiaTech

Correspondencias entre taxonomías XBRL y ontologías en OWL Unai Aguilera, Joseba Abaitua Universidad de Deusto, EmergiaTech Correspondencias entre taxonomías XBRL y ontologías en OWL Unai Aguilera, Joseba Abaitua Universidad de Deusto, EmergiaTech Resumen Todo documento XBRL contiene cierta información semántica que se representa

Más detalles

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo. CONSULTAS CON SQL 1. Qué es SQL? Debido a la diversidad de lenguajes y de bases de datos existentes, la manera de comunicar entre unos y otras sería realmente complicada a gestionar de no ser por la existencia

Más detalles

Ayuda para la instalación Componente Firma Digital INDICE. 1 Configuración previa...2. 1.1 Configuración Internet Explorer para ActiveX...

Ayuda para la instalación Componente Firma Digital INDICE. 1 Configuración previa...2. 1.1 Configuración Internet Explorer para ActiveX... INDICE 1 Configuración previa...2 1.1 Configuración Internet Explorer para ActiveX...2 1.2 Problemas comunes en sistema operativo Windows...8 1.2.1 Usuarios con sistema operativo Windows XP con el Service

Más detalles

extensible Markup Language

extensible Markup Language extensible Markup Language ISLN ISLN () XML 1 / 26 Librería LWP::Simple Bajarse el archivo de internet Para bajar archivos de internet se puede usar alguno de los módulos del CPAN http://search.cpan.org

Más detalles

INSTALACIÓN A3ERP INTRODUCCIÓN CONSIDERACIONES GENERALES DE LA INSTALACIÓN PAQUETES DE INSTALACIÓN PREDEFINIDOS

INSTALACIÓN A3ERP INTRODUCCIÓN CONSIDERACIONES GENERALES DE LA INSTALACIÓN PAQUETES DE INSTALACIÓN PREDEFINIDOS INSTALACIÓN A3ERP INTRODUCCIÓN La instalación de a3erp v9 ha sufrido una trasformación importante respecto a sus versiones anteriores. Cualquier instalación exige la existencia de un pc al que le asignaremos

Más detalles

JavaScript como Orientación a Objetos

JavaScript como Orientación a Objetos Gustavo Lacoste (gustavo@lacosox.org) October 2012 Resumen El objetivo de las siguientes notas es generar una estructura en JavaScript que nos permita reutilizar de manera limpia las funciones creadas

Más detalles

SiteAudit Knowledge Base Programación de Reportes en SiteAudit

SiteAudit Knowledge Base Programación de Reportes en SiteAudit SiteAudit Knowledge Base Programación de Reportes en SiteAudit De junio 2010 En Éste Artículo: Descripción de Funciones Qué Hay de Nuevo? Programación de Reportes SiteAudit 4.x proporciona una nueva interfaz

Más detalles

Objetivo: Introducción conceptual y aplicación básica de los lenguajes del lado del servidor.

Objetivo: Introducción conceptual y aplicación básica de los lenguajes del lado del servidor. Sesión 03: Lenguajes web del servidor Competencias a Conseguir: - Conocer el entorno de trabajo a nivel de servidores web. - Instalación del localhost (Servidor Local). - Repaso general de PHP y ejercicios

Más detalles

arquitectura que maneja. Encontraremos también los diferentes servidores que

arquitectura que maneja. Encontraremos también los diferentes servidores que 3.1 INTRODUCCIÓN A lo largo de este capitulo será descrito ArcIMS, así como las características y arquitectura que maneja. Encontraremos también los diferentes servidores que proporciona ArcIMS, además

Más detalles

Curso PHP Módulo 1 R-Luis

Curso PHP Módulo 1 R-Luis Lenguaje PHP Introducción Archivos HTML y PHP: Crear un archivo php es tan sencillo como cambiarle la extensión a un archivo html, por ejemplo podemos pasar de index.html a index.php sin ningún inconveniente.

Más detalles

La plantilla propone aprovechar esta estructura en común y sólo modificar el contenido del área del documento que sea diferente.

La plantilla propone aprovechar esta estructura en común y sólo modificar el contenido del área del documento que sea diferente. PLANTILLAS EN PHP El concepto de plantilla, es un criterio del desarrollo web que propone optimizar la cantidad de documentos HTML que se usan en el desarrollo de un sitio web. A lo largo de la navegación

Más detalles

Análisis de esquemas XML [1]

Análisis de esquemas XML [1] Análisis de esquemas XML [1] Dirigido a: Administradores de Bases de Datos Área: Bases de Datos Autor: Pablo F. Dueñas Servicios Profesionales Danysoft Resumen Un esquema XML describe la estructura de

Más detalles

VAST: Manual de usuario. Autores: Francisco J. Almeida-Martínez Jaime Urquiza-Fuentes

VAST: Manual de usuario. Autores: Francisco J. Almeida-Martínez Jaime Urquiza-Fuentes VAST: Manual de usuario Autores: Francisco J. Almeida-Martínez Jaime Urquiza-Fuentes Índice general Índice general 2 1. Introducción 4 2. Representación intermedia del AST 5 2.1. Funcionamiento del VAST

Más detalles

Adaptación al NPGC. Introducción. NPGC.doc. Qué cambios hay en el NPGC? Telf.: 93.410.92.92 Fax.: 93.419.86.49 e-mail:atcliente@websie.

Adaptación al NPGC. Introducción. NPGC.doc. Qué cambios hay en el NPGC? Telf.: 93.410.92.92 Fax.: 93.419.86.49 e-mail:atcliente@websie. Adaptación al NPGC Introducción Nexus 620, ya recoge el Nuevo Plan General Contable, que entrará en vigor el 1 de Enero de 2008. Este documento mostrará que debemos hacer a partir de esa fecha, según nuestra

Más detalles

Manual de uso de la plataforma para monitores. CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES -bilib

Manual de uso de la plataforma para monitores. CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES -bilib Manual de uso de la plataforma para monitores CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES -bilib [Manual de uso de la plataforma para monitores] 1. Licencia Autor del documento: Centro de Apoyo Tecnológico

Más detalles

La ventana de Microsoft Excel

La ventana de Microsoft Excel Actividad N 1 Conceptos básicos de Planilla de Cálculo La ventana del Microsoft Excel y sus partes. Movimiento del cursor. Tipos de datos. Metodología de trabajo con planillas. La ventana de Microsoft

Más detalles

Informática 4º ESO Tema 1: Sistemas Informáticos. Sistemas Operativos (Parte 2)

Informática 4º ESO Tema 1: Sistemas Informáticos. Sistemas Operativos (Parte 2) 1. Qué es un sistema operativo?...2 2. Funciones de los sistemas operativos...2 3. Windows...2 3.1. La interfaz gráfica...2 3.2. La administración y los usuarios...3 3.3. El sistema de archivos...3 3.4.

Más detalles

PHPMYADMIN Y MYSQL. Para gestionar la base de datos MySQL, lo haremos desde la aplicación PhpMyAdmin.

PHPMYADMIN Y MYSQL. Para gestionar la base de datos MySQL, lo haremos desde la aplicación PhpMyAdmin. PHPMYADMIN Y MYSQL Para gestionar la base de datos MySQL, lo haremos desde la aplicación PhpMyAdmin. PhpMyAdmin es una herramienta para la administración del servidor de base de datos MySQL que dispone

Más detalles

JAVA EE 5. Arquitectura, conceptos y ejemplos.

JAVA EE 5. Arquitectura, conceptos y ejemplos. JAVA EE 5. Arquitectura, conceptos y ejemplos. INTRODUCCIÓN. MODELO DE LA APLICACIÓN JEE5. El modelo de aplicación Java EE define una arquitectura para implementar servicios como lo hacen las aplicaciones

Más detalles

Introducción a los Servicios Web. Ing. José Luis Bugarin ILUMINATIC SAC jbugarin@consultorjava.com

Introducción a los Servicios Web. Ing. José Luis Bugarin ILUMINATIC SAC jbugarin@consultorjava.com Introducción a los Servicios Web Ing. José Luis Bugarin ILUMINATIC SAC jbugarin@consultorjava.com Servicios Web y Soa En un contexto SOA y los servicios web son una oportunidad de negocios en la actualidad.

Más detalles

MANUAL DE USUARIO CMS- PLONE www.trabajo.gob.hn

MANUAL DE USUARIO CMS- PLONE www.trabajo.gob.hn MANUAL DE USUARIO CMS- PLONE www.trabajo.gob.hn Tegucigalpa M. D. C., Junio de 2009 Que es un CMS Un sistema de administración de contenido (CMS por sus siglas en ingles) es un programa para organizar

Más detalles

Internet Information Server

Internet Information Server Internet Information Server Internet Information Server (IIS) es el servidor de páginas web avanzado de la plataforma Windows. Se distribuye gratuitamente junto con las versiones de Windows basadas en

Más detalles

El programa Minitab: breve introducción a su funcionamiento. Para mostrar la facilidad con la que se pueden realizar los gráficos y cálculos

El programa Minitab: breve introducción a su funcionamiento. Para mostrar la facilidad con la que se pueden realizar los gráficos y cálculos El programa Minitab: breve introducción a su funcionamiento Para mostrar la facilidad con la que se pueden realizar los gráficos y cálculos estadísticos en la actualidad, el libro se acompaña, en todo

Más detalles

Sistema de Facturación de Ventas WhitePaper Enero de 2007

Sistema de Facturación de Ventas WhitePaper Enero de 2007 Sistema de Facturación de Ventas WhitePaper Enero de 2007 Ronda Guglielmo Marconi, 9 Parque Tecnológico 46980 Paterna Valencia Spain T +34 96 338 99 66 ventas@preference.es Please Recycle PrefSuite Document

Más detalles

Bases de datos en Excel

Bases de datos en Excel Universidad Complutense de Madrid CURSOS DE FORMACIÓN EN INFORMÁTICA Bases de datos en Excel Hojas de cálculo Tema 5 Bases de datos en Excel Hasta ahora hemos usado Excel básicamente para realizar cálculos

Más detalles

Instalación del programa PSPP y obtención de una distribución de frecuencias.

Instalación del programa PSPP y obtención de una distribución de frecuencias. Práctica 2. Instalación del programa PSPP y obtención de una distribución de frecuencias. Con esta práctica instalaremos el programa PSPP. El programa es un software específico para el análisis estadístico

Más detalles

Trey-SAT Pag. 1. Manual de usuario

Trey-SAT Pag. 1. Manual de usuario Trey-SAT Pag. 1 Manual de usuario Trey-SAT Pag. 2 Modulo SAT : Servicio de asistencia técnica TREY-SAT es un potente módulo para el servicio de asistencia técnica, completamente integrado a la Gestión

Más detalles

MANUAL DE USUARIO DE LA APLICACIÓN DE ACREDITACION DE ACTIVIDADES DE FORMACION CONTINUADA. Perfil Entidad Proveedora

MANUAL DE USUARIO DE LA APLICACIÓN DE ACREDITACION DE ACTIVIDADES DE FORMACION CONTINUADA. Perfil Entidad Proveedora MANUAL DE USUARIO DE LA APLICACIÓN DE ACREDITACION DE ACTIVIDADES DE FORMACION CONTINUADA Perfil Entidad Proveedora El objetivo del módulo de Gestión de Solicitudes vía Internet es facilitar el trabajo

Más detalles

Modulo 1 El lenguaje Java

Modulo 1 El lenguaje Java Modulo 1 El lenguaje Java 13 - Codificación en Java Una de las grandes diferencias entre Java y Pascal en cuando a la codificación es que Java se trata de un lenguaje de los llamados case sensitive Esto

Más detalles

Hojas de Estilos XSLT en el aula. Nieves Carralero Colmenar I.E.S Ramón y Cajal. Albacete ncarralero@jccm.es

Hojas de Estilos XSLT en el aula. Nieves Carralero Colmenar I.E.S Ramón y Cajal. Albacete ncarralero@jccm.es Hojas de Estilos XSLT en el aula Nieves Carralero Colmenar I.E.S Ramón y Cajal. Albacete ncarralero@jccm.es Resumen Según la Orden EDU/2887/2010, de 2 de noviembre, por la que se establece el currículo

Más detalles

Desarrollo de Servicios Web con JBuilder

Desarrollo de Servicios Web con JBuilder Artículos técnicos Grupo Danysoft: Desarrollo de Servicios Web con JBuilder Segunda parte Oscar Cristobal Ruiz Departamento Java Equipo Grupo Danysoft Enero 2003 - (902) 123146 www.danysoft.com Desarrollo

Más detalles

INTRODUCCIÓN A PHP. Javier Enciso

INTRODUCCIÓN A PHP. Javier Enciso INTRODUCCIÓN A PHP Javier Enciso AGENDA Qué es PHP? Cómo funciona PHP? Instalación QUÉ ES PHP? QUÉ ES PHP? (1/7) PHP (acrónimo de "PHP: Hypertext Preprocessor"). Lenguaje interpretado de alto nivel embebido

Más detalles

Aplicateca. Manual de Usuario: Ilion Factura Electrónica. Espíritu de Servicio

Aplicateca. Manual de Usuario: Ilion Factura Electrónica. Espíritu de Servicio Aplicateca Manual de Usuario: Ilion Factura Electrónica Espíritu de Servicio Índice 1 Introducción... 4 1.1 Qué es Ilion Factura electrónica?... 4 1.2 Requisitos del sistema... 4 1.3 Configuración del

Más detalles

Capítulo I. Definición del problema y objetivos de la tesis. En la actualidad Internet se ha convertido en una herramienta necesaria para todas

Capítulo I. Definición del problema y objetivos de la tesis. En la actualidad Internet se ha convertido en una herramienta necesaria para todas Capítulo I Definición del problema y objetivos de la tesis 1.1 Introducción En la actualidad Internet se ha convertido en una herramienta necesaria para todas las personas ya que nos permite realizar diferentes

Más detalles

Centro de Capacitación en Informática

Centro de Capacitación en Informática Fórmulas y Funciones Las fórmulas constituyen el núcleo de cualquier hoja de cálculo, y por tanto de Excel. Mediante fórmulas, se llevan a cabo todos los cálculos que se necesitan en una hoja de cálculo.

Más detalles

1. DML. Las subconsultas

1. DML. Las subconsultas 1.1 Introducción 1. DML. Las subconsultas Una subconsulta es una consulta que aparece dentro de otra consulta o subconsulta en la lista de selección, en la cláusula WHERE o HAVING, originalmente no se

Más detalles

Proceso de cifrado. La fortaleza de los algoritmos es que son públicos, es decir, se conocen todas las transformaciones que se aplican al documento

Proceso de cifrado. La fortaleza de los algoritmos es que son públicos, es decir, se conocen todas las transformaciones que se aplican al documento Qué es AT-Encrypt nos permitirá dotar de contraseña a cualquier documento o carpeta. Este documento o carpeta sólo será legible por aquel que conozca la contraseña El funcionamiento del cifrado (o encriptación)

Más detalles

Roberto Gómez Cárdenas rogomez@itesm.mx http://homepage.cem.itesm.mx/rogomez. Qué es DOM?

Roberto Gómez Cárdenas rogomez@itesm.mx http://homepage.cem.itesm.mx/rogomez. Qué es DOM? DOM y PHP Roberto Gómez Cárdenas rogomez@itesm.mx http://homepage.cem.itesm.mx/rogomez mx/rogomez Lámina 1 Qué es DOM? Document Object Model Especificación de W3C http://www.w3.org/dom/ w3 Mecanismo para

Más detalles

Capítulo 12: Indexación y asociación

Capítulo 12: Indexación y asociación Capítulo 12: Indexación y asociación Conceptos básicos Índices ordenados Archivos de índice de árbol B+ Archivos de índice de árbol B Asociación estática Asociación dinámica Comparación entre indexación

Más detalles

Introducción a la programación orientada a objetos

Introducción a la programación orientada a objetos Introducción a la programación orientada a objetos 1. Introducción a la programación orientada a objetos 2. Las clases 3. El tipo Struct 4. Diferencias entre Class y Struct 5. Pilares de la Programación

Más detalles

Análisis de los datos

Análisis de los datos Universidad Complutense de Madrid CURSOS DE FORMACIÓN EN INFORMÁTICA Análisis de los datos Hojas de cálculo Tema 6 Análisis de los datos Una de las capacidades más interesantes de Excel es la actualización

Más detalles

Sistema Inteligente de Exploración

Sistema Inteligente de Exploración Observatorio Municipal de Estadística Sistema Inteligente de Exploración Capítulos 1. Consideraciones iniciales y requerimientos... 2 2. Navegación... 3 3. Consulta de indicadores... 5 3.1. Elaboración

Más detalles

Microsoft XML Core Services MSXML

Microsoft XML Core Services MSXML Microsoft XML Core Services MSXML Sergio Luján Mora sergio.lujan@ua.es http://gplsi.dlsi.ua.es/~slujan/ 1 MSXML... 3 Introducción... 3 Objetos del DOM... 5 Objeto XMLDOMDocument... 5 Construcción de un

Más detalles

ESOFT 3 Nice Screen Scraper: A simple scraper

ESOFT 3 Nice Screen Scraper: A simple scraper ESOFT 3 Nice Screen Scraper: A simple scraper Héctor López Sacanell hlopez1@alumnes.udl.cat 3 de diciembre de 2009 1. Introducción El objetivo de esta segunda entrega es la de crear una primera versión

Más detalles

LiLa Portal Guía para profesores

LiLa Portal Guía para profesores Library of Labs Lecturer s Guide LiLa Portal Guía para profesores Se espera que los profesores se encarguen de gestionar el aprendizaje de los alumnos, por lo que su objetivo es seleccionar de la lista

Más detalles

U.E JUAN DE VELASCO CREAR DATOS EN SQL

U.E JUAN DE VELASCO CREAR DATOS EN SQL NOMBRE:LILIAN CAUJA U.E JUAN DE VELASCO CREAR DATOS EN SQL Lo primero que necesitamos para conectarnos al Servidor es el administrador que por defecto en algunas instalaciones no viene incluido, se puede

Más detalles

Manual Oficina Web de Clubes (FBM)

Manual Oficina Web de Clubes (FBM) Manual Oficina Web de Clubes (FBM) INTRODUCCIÓN: La Oficina Web de Clubes de Intrafeb es la oficina virtual desde la que un club podrá realizar las siguientes operaciones durante la temporada: 1. Ver información

Más detalles

GUÍA RED SOCIAL FACEBOOK

GUÍA RED SOCIAL FACEBOOK GUÍA RED SOCIAL FACEBOOK Qué es una Red Social? Una Red Sociales un sitio en internet donde compartir información, mensajes, ideas, fotos, etc., con amigos, conocidos y desconocidos. Para acceder a una

Más detalles

UNIVERSIDAD DE SALAMANCA

UNIVERSIDAD DE SALAMANCA UNIVERSIDAD DE SALAMANCA FACULTAD DE CIENCIAS INGENIERÍA TÉCNICA EN INFORMÁTICA DE SISTEMAS Resumen del trabajo práctico realizado para la superación de la asignatura Proyecto Fin de Carrera. TÍTULO SISTEMA

Más detalles

Capítulo 5. Cliente-Servidor.

Capítulo 5. Cliente-Servidor. Capítulo 5. Cliente-Servidor. 5.1 Introducción En este capítulo hablaremos acerca de la arquitectura Cliente-Servidor, ya que para nuestra aplicación utilizamos ésta arquitectura al convertir en un servidor

Más detalles

Diseño de páginas web 2011

Diseño de páginas web 2011 Diseño de páginas web 2011 Al finalizar el curso, el alumno será capaz de planificar y diseñar correctamente desde sencillas páginas web hasta completos sitios web. Para ello, se le proporciona primero

Más detalles

Preliminares. Tipos de variables y Expresiones

Preliminares. Tipos de variables y Expresiones Preliminares. Tipos de variables y Expresiones Felipe Osorio Instituto de Estadística Pontificia Universidad Católica de Valparaíso Marzo 5, 2015 1 / 20 Preliminares Computadoras desarrollan tareas a un

Más detalles

Tutorial: Primeros Pasos con Subversion

Tutorial: Primeros Pasos con Subversion Tutorial: Primeros Pasos con Subversion Introducción Subversion es un sistema de control de versiones open source. Corre en distintos sistemas operativos y su principal interfaz con el usuario es a través

Más detalles

Práctica 1: Instalación de un servidor de aplicaciones web y diseño de la vista de una aplicación

Práctica 1: Instalación de un servidor de aplicaciones web y diseño de la vista de una aplicación Práctica 1: Instalación de un servidor de aplicaciones web y diseño de la vista de una aplicación Sistemas de Información Grado de Informática Dpto. de Informática e Ingeniería de Sistemas, Universidad

Más detalles

1 El trabajo expuesto está subvencionado por el proyecto de la URJC PGRAL-2001/14

1 El trabajo expuesto está subvencionado por el proyecto de la URJC PGRAL-2001/14 EVALUACIÓN A TRAVÉS DE LA WEB: EL SISTEMA TUTORMAP 1 R.Criado, D.Martín y S. Sánchez (GIEMATI, Dpto. de CC. Experimentales e Ingeniería de la URJC) Resumen En este trabajo se describen las características

Más detalles

ICARO MANUAL DE LA EMPRESA

ICARO MANUAL DE LA EMPRESA ICARO MANUAL DE LA EMPRESA 1. ENTRANDO EN ICARO Para acceder al Programa ICARO tendremos que entrar en http://icaro.ual.es Figura 1 A continuación os aparecerá la página de Inicio del aplicativo ICARO.

Más detalles