TALLER RUBY ON RAILS
Que es Ruby Ruby es un lenguaje de programación interpretado, reflexivo y orientado a objetos, creado por el programador japonés Yukihiro "Matz" Matsumoto, quien comenzó a trabajar en Ruby en 1993, y lo presentó públicamente en 1995. Ruby es un lenguaje de programación interpretado en una sola pasada y su implementación oficial es distribuida bajo una licencia de software libre.
Que es rails Rails es un framework para el desarrollo de aplicaciones web, software libre por naturaleza, está basado en el patrón de diseño Modelo Vista Controlador (MVC). 3. Defina la arquitectura MVC, ayúdese con una gráfica y explique sus componentes Rails está basado en estos principios de desarrollo; Modelo/Vista/Controlador
Definición de las partes: El Modelo: Es el objeto que representa los datos del programa. Maneja los datos y controla todas sus transformaciones. El Modelo no tiene conocimiento específico de los Controladores o de las Vistas, ni siquiera contiene referencias a ellos. Es el propio sistema el que tiene encomendada la responsabilidad de mantener enlaces entre el Modelo y sus Vistas, y notificar a las Vistas cuando cambia el Modelo. La Vista: Es el objeto que maneja la presentación visual de los datos representados por el Modelo. Genera una representación visual del Modelo y muestra los datos al usuario. Interactúa con el Modelo a través de una referencia al propio Modelo. El Controlador: Es el objeto que proporciona significado a las órdenes del usuario, actuando sobre los datos representados por el Modelo. Cuando se realiza algún cambio, entra en acción, bien sea por cambios en la información del Modelo o por alteraciones de la Vista. Interactúa con el Modelo a través de una re ferencia al propio Modelo.
Que es un IDE (programación) Un IDE es un entorno de programación que ha sido empaquetado como un programa de aplicación, es decir, consiste en un editor de código, un compilador, un depurador y un constructor de interfaz gráfica (GUI). Los IDEs pueden ser aplicaciones por sí solas o pueden ser parte de aplicaciones existentes. Los IDE proveen un marco de trabajo amigable para la mayoría de los lenguajes de programación tales como C++, Python, Java, C#, Delphi, Visual Basic, etc.
Framework Un framework es una estructura conceptual y tecnológica de soporte definida, normalmente con artefactos o módulos de software concretos, con base en la cual otro proyecto de software puede ser organizado y desarrollado. Típicamente, puede incluir soporte de programas, bibliotecas y un lenguaje interpretado entre otros programas para ayudar a desarrollar y unir los diferentes componentes de un proyecto. Representa una arquitectura de software que modela las relaciones generales de las entidades del dominio. Provee una estructura y una metodología de trabajo la cual extiende o utiliza las aplicaciones del dominio.
GEM (administrador de ejecución de gráficos) gr áficos) Es una unidad de manejo de memoria moderna, especializada para uso en controladores de dispositivo para chipsets gráficos. El GEM se asegura de que no existan conflictos en la compartición de datos entre aplicaciones, administrando la sincronización de la memoria.
Clase En la programación orientada a objetos, una clase es una construcción que se utiliza como un modelo (o plantilla) para crear objetos de ese tipo. El modelo describe el estado y el comportamiento que todos los objetos de la clase comparten. Un objeto de una determinada clase se denomina una instancia de la clase. La clase que contiene (y se utilizó para crear) esa instancia se puede considerar como del tipo de ese objeto, por ejemplo, una instancia del objeto de la clase "Personas" sería del de l tipo "Personas". Una clase por lo general representa un sustantivo, como una persona, lugar o (posiblemente bastante abstracta) cosa - es el modelo de un concepto dentro de un programa de computadora. Fundamentalmente, encapsula el estado y el comportamiento del concepto que representa. Encapsula el estado a través de marcadores de datos llamados atributos (o variable miembro o variables de instancia), encapsula el comportamiento a través de secciones de código reutilizables llamados métodos.
8. Defina la estructura de un proyecto rails (versión 3)
La característica más destacable de un proyecto Rails es la división física de los archivos, para fortalecer la división de sus funciones siguiendo el patrón Modelo-Vista-Controlador. Veamos los directorios más empleados de los que componen esta estructura.
App Esta carpeta contiene los archivos que forman el sitio, repartidos según sus características en los subdirectorios controllers, helpers, models y views.
Models : la función principal de los modelos es la obtención de datos, almacenados en una base de datos, un fichero, etc., y de controlar la integridad de estos datos.
Views: en una página web, las vistas son las distintas interfaces del usuario. A su vez, contiene una carpeta denominada Layout. Aquí, están unos ficheros que incluyen, básicamente, el apartado head de un archivo html. Después, por medio de bloques Ruby, se añade el cuerpo de las vistas para conformar el fichero completo.
Controllers: guarda los archivos correspondientes a los controladores del sistema. Su trabajo consiste en recibir eventos del usuario (envío de formulario, pulsación de un enlace), invocar al modelo para recuperar los datos que necesita, y trasladarlos a la vista, para que los muestre. Cuando se definen las acciones de un controlador, se debe crear una vista para cada una de estas acciones. Cuando se invocan estos métodos, tras su ejecución, se muestra automáticamente la vista correspondiente al método ejecutado. A su vez, si es necesario, se puede crear un modelo para el controlador.
config En esta carpeta, se almacenan los archivos de configuración del proyecto. Los archivos que nosotros solemos modificar son routes.rb y database.yml. En el primero, es posible modificar el controlador y su acción que se ejecutarán al acceder al sitio. En el otro, podemos modificar el nombre de la base de datos asociada al proyecto.
db Principalmente, esta carpeta incluye las migraciones, es decir, los archivos de creacion y edición de la base de datos relacionada con el proyecto.
doc Aquí se almacena la documentación del proyect o.
Los log Archivos guardados en este directorio son registros de la ejecución del sitio. public Este directorio tiene las imágenes que se muestran en las distintas vistas del proyecto, así como las hojas de estilo empleadas. DEFINICION DE CONCEPTOS SOBRE RUBY ON RAIL
Imagen de una estructura de un proyecto rails (versión 3)
9. Defina la arquitectura Cliente Servidor La arquitectura cliente-servidor consiste básicamente en un cliente que realiza peticiones a otro programa (el servidor) que le da respuesta. Aunque esta idea se puede aplicar a programas que se ejecutan sobre una sola computadora es más ventajosa en un sistema operativo multiusuario distribuido a través de una red de computadoras. En esta arquitectura la capacidad de proceso está repartida entre los clientes y los servidores, aunque son más importantes las ventajas de tipo organizativo debidas a la centralización de la gestión de la información y la separación de responsabilidades, lo que facilita y clarifica el diseño del sistema. La separación entre cliente y servidor es una separación de tipo lógico, donde el servidor no se ejecuta necesariamente sobre una sola máquina ni es necesariamente un sólo programa. Los tipos específicos de servidores incluyen los servidores web, los servidores de archivo, los servidores del correo, etc. Mientras que sus propósitos varían de unos servicios a otros, la arquitectura básica seguirá siendo la misma. Una disposición muy común son los sistemas multicapa en los que el servidor se descompone en diferentes programas que pueden ser ejecutados por diferentes computadoras aumentando así el grado de distribución del sistema. La arquitectura cliente-servidor sustituye a la arquitectura monolítica en la que no hay distribución, tanto a nivel físico como a nivel lógico. La red cliente-servidor es aquella red de comunicaciones en la que todos los clientes están conectados a un servidor, en el que se centralizan los diversos recursos y aplicaciones con que se cuenta; y que los pone a disposición de los clientes cada vez que estos son solicitados. Esto significa que todas las gestiones que se realizan se concentran en el servidor, de manera que en él
se disponen los requerimientos provenientes de los clientes que tienen prioridad, los archivos que son de uso público y los que son de uso restringido, los archivos que son de sólo lectura y los que, por el contrario, pueden ser modificados, etc. Este tipo de red puede utilizarse conjuntamente en caso de que se esté utilizando en una red mixta.
Que es una arquitectura Una arquitectura es un entramado de componentes funcionales que aprovechando diferentes estándares, convenciones, reglas y procesos, permite integrar una amplia gama de productos y servicios informáticos, de manera que pueden ser utilizados eficazmente dentro de la organización. Debemos señalar que para seleccionar el modelo de una arquitectura, hay que partir del contexto tecnológico y organizativo del momento y, que la arquitectura Cliente/Servidor requiere una determinada especialización de cada uno de los diferentes componentes que la integran.
Que es un cliente Es el que inicia un requerimiento de servicio. El requerimiento inicial puede convertirse en múltiples requerimientos de trabajo a través de redes LAN o WAN. La ubicación de los datos o de las aplicaciones es totalmente transparente para el cliente.
Que es un servidor Es cualquier recurso de cómputo dedicado a responder a los requerimientos del cliente. Los servidores pueden estar conectados a los clientes a través de redes LANs o WANs, para proveer de múltiples servicios a los clientes y ciudadanos tales como impresión, acceso a bases de datos, fax, procesamiento de imágenes, etc.
Como se llama el archivo de configuración de la base de datos en rails Para configurar la conexión a la base de datos, rails pone a nuestra disposición el archivo “database.yml” ubicado en config -> database.yml. Este archivo nos permite configurar la conexión a tres bases de datos. Tres bases de de datos para tres entornos: development (desarrollo), test (prueba) y production (producción).
Haga una conexión de base de datos en sqlite3 y rails Haga una conexión de base de datos en mysql y rails
Que es scaffold La palabra Scaffold está en inglés y en español significa Andamio, pero en programación el scaffolding es un método para construir aplicaciones basadas en bases de datos, esta técnica está soportada por algunos frameworks del tipo MVC en el cuál el programador escribe una especificación que describe cómo debe ser usada la base de datos. Luego el compilador utiliza esa especificación para generar el código que la aplicación usará para crear, leer, actualizar y eliminar registros de la base de datos, esto es conocido como CRUD (create, read, update, delete).El Scaffolding fue popularizado por el framework Ruby on Rails y ahora es utilizado por otros frameworks también cómo CakePHP, Symfony.
Que son las rutas REST en rails Es un paradigma para definir rutas en aplicaciones web. En base a REST, las aplicaciones de Rails determinan qué parte de aplicación mostrar y cómo responder a las solicitudes del usuario.
Que va en la capa model
Que es ORM (object-relational ( object-relational mapping) El ORM es un componente de software que me permite trabajar con los datos persistidos como si ellos fueran parte de una base de datos orientada a objetos (en este caso virtual). Debido a que lo standard es trabajar con BD relacionales, se deben realizar operaciones que permitan transformar un registro en objeto y viceversa. A esta funcionalidad se la llama Mapeo objeto-relacional (ORM).
Que es Active Record Es un objeto que representa una fila en una tabla de una base de datos, encapsula su acceso a la base de datos y añade lógica de negocio. Es la aproximación más obvia, poniendo el acceso a la base datos en el propio objeto de negocio. De este modo es evidente como manipular la persistencia a través del mi smo.
Que es CSS y en que capa del modelo m odelo mvc se usa CSS, es una tecnología que nos permite crear páginas web de una manera más exacta. Gracias a las CSS somos mucho más dueños de los resultados finales de la página, pudiendo hacer muchas cosas que no se podía hacer utilizando solamente HTML, como incluir márgenes, tipos de letra, fondos, colores... CSS son las siglas de Cascading Style Sheets, en español Hojas de estilo en Cascada. En este reportaje vamos a ver algunos de los efectos que se pueden crear con las CSS sin necesidad de conocer la tecnología entera.
EL Modelo Vista Controlador (MVC) es un patrón de arquitectura de software que separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos. El patrón MVC se ve frecuentemente en aplicaciones web, donde la vista es la página HTML y el código que provee de datos dinámicos a la página, el modelo es el Sistema de Gestión de Base de Datos y la Lógica de negocio y el controlador es el responsable de recibir los eventos de entrada desde la vista.
Que es jquery y para qué sirve jQuery es una biblioteca o framework de JavaScript, creada inicialmente por John Resig, que permite simplificar la manera de interactuar con los documentos HTML, manipular el árbol DOM, manejar eventos, desarrollar animaciones y agregar interacción con la técnica AJAX a páginas web. jQuery es software libre y de código abierto.
Defina los 3 entornos rails y para que se usa cada uno. •
•
•
El entorno de desarrollo: (development) optimiza la productividad del desarrollador. Las caches apenas operan, así que los cambios en el código de la aplicación se aprecian rápidamente, sin tener que recompilar o volver a desplegar nada. Sólo hay que recargar la página del navegador. Por esta razón Ruby on Rails es más rápido en el desarrollo que, por ejemplo, la plataforma Java 2. El entorno de pruebas: (test) está optimizado para ejecutar pruebas unitarias, de integración y funcionales. Cada vez que se ejecuta una prueba, la base de datos se limpia de todos sus datos. Ruby on Rails se encarga de poblar la base de datos con datos de prueba antes de cada test, a través de las fixtures. El entorno de producción : (production) es donde se despliega la aplicación final. Este entorno está optmizado para rendimiento, lo que significa, por ejemplo, que las clases están en cache.
Como se llama el archivo donde se visualizan los errores Un log es un registro oficial de eventos durante un rango de tiempo en particular. Para los profesionales en seguridad informática es usado para registrar datos o información sobre quién, qué, cuándo, dónde y por qué (who, what, when, where y why) un evento ocurre para un dispositivo en particular o aplicación.
Que es Migracion y en que carpeta van dentro de un proyecto rails Para los no iniciados en Ruby on rails, las migraciones permiten establecer el esqueleto de una base de datos, tablas y campos, al igual que hacemos con sentencias de SQL, sin utilizar directamente SQL. Además Ruby on rails, nos permite tener un control de las versiones de migraciones a ejecutar. Una vez que hemos hecho rails proyecto (siendo proyecto el nombre del proyecto rails) rails) y cd proyecto (para colocarnos dentro dentro del proyecto de de rails recién creado) creamos nuestras migraciones.
Comentar para recordar, un proyecto rails tiene tres tipos de entornos: desarrollo, pruebas y producción. El entorno Rails llamado “desarrollo” vuelve a cargar las clases cada vez que llame a una nueva acción, por lo que siempre tiene una copia actualizada de las clases incluyendo los cambios más recientes. Mientras que en el entorno de producción carga las clases una vez. Cuando se crea un nuevo proyecto rails, se crea un archivo database.yml, con los tres entornos desarrollo, pruebas y producción, dicho archivo se e ncuentra dentro de la carpeta config. c onfig.
En que capa se acostumbra hacer las validaciones en rails (validates) Modelo
Que es el layout El layout es un esquema de distribución de los elementos dentro de nuestro diseño, el cual presentaremos al cliente para vender la idea y, a partir de su aceptación, realizar el trabajo final en base a éste. Se trata de un conjunto de herramientas que facilitan la creación de presentaciones de diseños que incluyan modelos de SketchUp
Que son los partials Partial indica que otras partes de la clase, estructura o interfaz se pueden definir dentro del espacio de nombres. Todas las partes deben utilizar la palabra clave partial. Todas las partes deben estar disponibles en tiempo de c ompilación para formar el tipo final. Todas las partes de ben tener la misma accesibilidad, ya sea public, private, etc. Si alguna de las partes se declara abstracta, todo el tipo se considera abstracto. Si alguna de las partes se declara sellada, todo el tipo se considera sellado. Si alguna de las partes declara un tipo base, todo el tipo hereda esa clase. Todas las partes que especifican una clase base deben concordar, pero las partes que omiten una clase base heredan igualmente el tipo base. Las partes pueden especificar diferentes interfaces base, pero el tipo final implementa todas las interfaces mostradas por todas las declaraciones parciales. Cualquier miembro de clase, estructura o interfaz declarados en una definición parcial está disponible para todas las demás partes. El tipo final es la combinación de todas las partes en tiempo de compilación
En que capa se mapean las relaciones entre las tablas Capa de enlace de datos.
Explique los tipos de relaciones entre modelos rails
Defina los términos Front-end y back-end Front-end y back-end son términos que se relacionan con el principio y el final de un proceso. Estos términos adquieren una relevancia mayor en ciertas áreas particulares
Enuncie y explique brevemente metodologías de desarrollo una ágil y otra tradicional Teniendo en cuenta la filosofía de desarrollo de las metodologías, aquellas con mayor énfasis en la planificación y control del proyecto, en especificación precisa de requisitos y modelado, reciben el apelativo de Metodologías Tradicionales o Pesadas. [27] Estas metodologías tradicionales imponen una disciplina de trabajo sobre el proceso de desarrollo del software, con el fin de conseguir un software más eficiente. Para ello, se hace énfasis en la planificación total de todo el trabajo a realizar y una vez que está todo detallado, comienza el ciclo de desarrollo del producto software. Se centran especialmente en el control del proceso, mediante una rigurosa definición de roles, actividades, artefactos, herramientas y notaciones para el modelado y documentación detallada [42]. Además, las metodologías tradicionales no se adaptan adecuadamente a los cambios, por lo que no son métodos adecuados cuando se trabaja en un entorno, donde los requisitos no pueden predecirse o bien pueden variar. Entre las metodologías tradicionales o pesadas podemos cita r: • RUP (Rational Unified Process) • MSF (Microsoft Solution Framework) • Win-Win Spiral Model • Iconix Las metodologías ágiles proporcionan una serie de pautas y principios junto a técnicas pragmáticas que puede que no curen todos los males pero harán la entrega del proyecto menos complicada y más satisfactoria tanto para los clientes c omo para los equipos de entrega.
Entre las metodologías ágiles más destacadas hasta el momento se pueden nombrar: • XP (Extreme Programming) • Scrum • Crystal Clear • DSDM (Dynamic Systems Development Method) • FDD (Feature Driven Development) • ASD (Adaptive Software Development)
• XBreed • Extreme Modeling
Que metodología de desarrollo de software emplearía para rails? Justifíquelo Incremental por: El concepto inicial de software, análisis de las necesidades, y el diseño de la arquitectura y colectiva básicas se definen utilizando el enfoque de cascada, seguida por iterativo de prototipos, que culmina en la i nstalación del prototipo final.
Que es un plugins Rails (Plug-in) Programa que puede anexarse a otro para aumentar sus funcionalidades (generalmente sin afectar otras funciones ni afectar la aplicación principal). No se trata de un parche ni de una actualización, es un módulo aparte que se incluye opcionalmente en una aplicación. El plugin crea una lista de tareas, notas, ideas, etc. desde el código de nuestra aplicación.
32. Investigue las convenciones rails sobre sus objetos y construyan una entre todo el grupo ADSI. 33. Cree el esqueleto de un proyecto rails con sqlite3 34. Arranque el servidor de aplicaciones webrick Ruby on Rails tiene su propio servidor web, llamado WEBrick, preparado para alojar aplicaciones Ruby. El servidor está pensado para desarrollo y pruebas, pero no para producción. Se arranca con script/server. $> cd $HOME/proyectos/emporium $> script/server
El servidor escucha por defecto en el puerto 3000. El contenido estátido (html, hojas de estilo y javascript) es servido desde el directorio public de la aplicación. Las peticiones de contenido dinámico son despachadas y manejadas por Ruby R uby on Rails. Hay que abrir la dirección http://localhost:3000/ http://localhost:3000/ para para ver la pantalla de bienvenida de la aplicación Emporium (la del fichero index.html). El enlace About your appli cation's environment... lleva a un conjunto de información técnica sobre la aplicación. Otras maneras de arrancar el servidor:
Arranca en el entorno de pruebas:
script/server -e test
Arranca como demonio en el entorno de pruebas y escuchando en el puerto 80
script/server -d -p 80 -e test
Ahora borremos el fichero index.html, lo cual no impedirá impe dirá que el controlador del contexto raíz reciba peticiones, aunque la vista no se mostrará: $> rm $HOME/projects/emporium/public/index.html
Si recargamos la página en el navegador obtendremos un error porque no hay acción configurada en el controlador para manejar la petición recibida.
La arquitectura MVC de Ruby on Rails Una petición HTTP es encaminada desde el browser hacia la implementación de MVC de Ruby on Rails de la forma siguiente: http://server/controller/action/id class Controller < ActionController::Base def action params[:id] end end
Como ejemplo implementaremos una historia de usuario sencilla: la página About de la aplicación. Tan sencilla que sólo involucra a controlador y v ista.
Generar el esqueleto El script generate sirve para generar una implementación básica de c ontroladores, modelos y vistas que hay que modificar posteriormente para adaptarla a las necesidades de nuestra aplicación. Vamos a ejecutar el srcipt generate para crear un controlador about, una acción index y los ficheros necesarios. $> cd $HOME/projects/emporium $> script/generate controller about index
Este comando genera un controlador, una vista, un helper (código auxiliar) y un test funcional. El controlador tiene una acción index a la que se llamará por defecto si no se especifica acción alguna en la URL. Tras volver a arrancar el servidor WEBrick, W EBrick, al abrir la URL http://localhost:3000/about se debe ver la página recién creada, desprovista de contenido. Las clases helper son rutinas útiles para mantener el código de las vistas limpias y legibles. Las vistas no deberían contener una lógica y algoritmos complejos, sino que habría que refactorizarlas para trasladar el código complejo a clases helper.
Modificar la vista generada Las vistas son donde se sitúa el código del nivel de presentación que genera, por ejemplo, HTML o XML. Las vistas están escritas en un lenguaje de plantillas de nombre Embedded Ruby (ERB). El siguiente ejemplo imprime un texto en el navegador a través de una vista ERB: <%# Esto es un comentario y no se muestra al usuario %> <% text = "Esto es código empotrado Ruby" %> <%= text %>
ERB permite evitar la inyección de código HTML mediante el método h, que es una abreviatura de html_escape. El siguiente ejemplo imprime por pantalla el texto &
') %>
Vamos a modificar la vista about, situada en el directorio app/views, que es la raíz de todas las vistas. Cada vista se guarda en un directorio con el nombre del controlador. Por ejemplo, si el controlador se llama app/controllers/about_controller.rb, la ruta de las vistas de este controlador será app/views/about. Cambia la vista app/views/about/index.html.erb para que contenga lo siguiente: Tienda virtual situada en Cádiz
Dirección postal
Emporium
C/ Chile 1
11002 Cádiz, España
Ahora recarga la página about en el navegador para comprobar los c ambios.
Definir el formato
Los formatos o layouts de Ruby on Rails sirven para rodear el contenido de las páginas con una cabecera y un pie de página. Se puede conseguir el mismo efecto insertando la cabecera y el pie en todas las páginas, pero esto atentaría contra el principio DRY de "No te repitas" (Don't Repeat Yourself), por el que hay que evitar la duplicación de código c ódigo tanto como sea posible. Considera el código HTML siguiente generado por Rails: Emporium Page content
Todo el contenido situado fuera de los comentarios procede de un fichero de layout. La vista sólo contiene el texto '"Page content". Un layout minimalista sería el siguiente: <%= @page_title || 'Emporium' %> <%= stylesheet_link_tag "style" %> <%= "#{@page_title}
" if @page_title %> <%= yield %>
Edita el código anterior y guárdalo en app/views/layouts/application.html.erb. Este layout contiene varias expresiones Ruby:
La primera expresión define el título de la página por medio de la variable de instancia page_title de los controladores; si ésta no está definida, proporciona un título por defecto.
La segunda expresión incluye la hoja de estilos.
La tercera expresión sirve para usar el título de la página como encabezado.
la última expresión inserta la vista de la l a página en el layout mediante una llamada al método yield.
Hojas de estilo Las hojas de estilo se guardan en public/stylesheet. Descarga esta la de estilos style.css y cambia la generada por defecto para la aplicación Emporium.
Formatos múltiples Una aplicación puede tener múltiples formatos (por ejemplo, uno para las páginas normales y otro para los pop-up). Puede indicarse a Ruby como manejar un layout específico de muchas formas. Por ejemplo:
class EternalLifeController < ApplicationController # Option 1 layout 'default' # Option 2 layout :determine_layout def index # Uses app/views/layouts/default.rhtml end def popup # Uses app/views/layouts/popup.rhtml # Option 3 render :layout => 'popup' end def determine_layout if params[:id].nil? return "fancy_layout" else return "default" end end
35. Ingrese por un browser a la aplicación que acaba de crear y poner a correr, copie el pantallazo e insértelo en este documento
Explique los fundamentos de la web El éxito de la web se basa en dos factores fundamentales: el protocolo HTTP y el lenguaje HTML. El primero permite una implementación sencilla de un sistema de comunicaciones que permite enviar cualquier fichero de forma fácil, simplificando el funcionamiento del servidor y posibilitando que servidores poco potentes atiendan cientos o miles de peticiones y reduzcan de
este modo los costes de despliegue. El segundo, el lenguaje HTML, proporciona un mecanismo sencillo y muy eficiente de cre ación de páginas enlazadas.
El protocolo HTTP El protocolo HTTP (Hypertext Tranfer Protocol) es el protocolo principal de la World Wide Web. Es un protocolo simple, orientado a conexión y sin estado. Está orientado a conexión porque emplea para su funcionamiento un protocolo de comunicaciones (TCP, o Transport Control Protocol) de modo conectado, que establece un canal de comunicaciones entre el cliente y el servidor, por el cual pasan los bytes que constituyen los datos de la transferencia, en contraposición a los protocolos denominados de datagrama (o no orientados a conexión) que dividen la serie de datos en pequeños paquetes (o datagramas) antes de enviarlos, pudiendo llegar por diversas vías del servidor al cliente. Este protocolo no mantiene estado o, dicho de otro modo, cada transferencia de datos es una conexión diferente a la anterior, sin relación entre ellas. Por ejemplo, para transferir una página web debemos enviar el código HTML del texto, por un lado, y las imágenes que la componen por otro, pues en la especificación inicial 1.0 del protocolo HTTP se abrían y utilizaban tantas conexiones como componentes tenía la página, trasfiriendo cada componente por conexiones diferentes . Existe una variante de HTTP denominada HTTPS (S significa "secure", o "seguro") que utiliza el protocolo de seguridad SSL (o "Secure Socket Layer") para cifrar y autenticar el tráfico de datos, muy utilizada por los servidores web orientados al comercio electrónico o por aquellos que albergan información de tipo personal o confidencial. De forma esquemática, el funcionamiento de HTTP es como sigue: el cliente establece una conexión TCP con el servidor, hacia el puerto por defecto para el protocolo HTTP (o el indicado expresamente en la conexión), envía una orden HTTP de solicitud de un recurso (añadiendo algunas cabeceras con información) y, utilizando la misma conexión, el servidor responde enviando los datos solicitados y, además, añadiendo algunas cabeceras con información.
El lenguaje HTML El otro factor principal del éxito del World Wide Web ha sido el lenguaje HTML ("Hypertext Markup Language", o "Lenguaje de Marcado de Hipertexto"), que es un lenguaje de marcas (se insertan marcas o etiquetas en el texto) que permite representar de forma rica el contenido y referenciar otros recursos (por ejemplo, imágenes), o enlaces a otros documentos (que es, precisamente, la característica más destacada de la web), mostrar formularios para su posterior procesamiento, etc. El lenguaje HTML se encuentra en la actualidad en la versión 4.01 y empieza a proporcionar algunas funcionalidades más avanzadas. Se ha definido una especificación compatible con HTML,
llamada XHTML ("Extensible Hypertext Markup Language" o "Lenguaje Extensible de Marcado de Hipertexto") que se define a menudo como una versión XML validable de HTML, que proporciona un "XML Schema" contra el cual es posible validar el documento con el objeto de comprobar si está bien formado.
37. Defina la estructura de un documento HTML Un documento H TML está definido de finido por una etiqueta de apertura y una etiqueta e tiqueta de cierre . Dentro de este se dividen dos partes fundamentales la cabecera, delimitada por la etiqueta y el cuerpo, delimitado por la etiqueta . Por tanto la estructura de un documento HTML será:
Definiciones de la cabecera Instrucciones HTML Ninguno de estos elementos es obligatorio, pudiendo componer documentos HTML que se muestren sin ningún problema sin incluir estas etiquetas de identificación. Si se utilizan elementos que forzosamente deban ser incluidos en la cabecera (como la etiqueta de título), no serán reconocidos correctamente si no se incluyen entre las etiquetas de .