Antología: Programación Web ITSLCH
Antología: Programación Web ITSLCH
Antología de la Materia
“Programación Web”
“AEB-1055”
Desarrollada por:
MTI. Alejandrina Isabel Cruz Rodríguez
i
AGRADECIMIENTOS
Antes que todo mi eterno agradecimiento a Dios por toda su Misericordia y bondad en mi
vida.
A través de estas líneas quiero expresar mi más sincero agradecimiento a todas las
personas que me han apoyado profesional y humanamente en la realización de esta
antología.
ii
RESUMEN
El segundo, aborda los lenguajes de marcado, como lo es HTML, XML en sus versiones
más recientes, de la misma forma se aborda el tema de lenguaje de presentación CSS para
la creación de hojas de estilo en cascada, en donde se obtenga una comprensión de su
estructura y forma de trabajar con los elementos que la integran.
En el cuarto tema, se aborda la programación del lado del servidor en donde se logre la
manipulación de objetos y el acceso a datos para la presentación de procesos dinámicos y
sus resultados en una aplicación web.
iii
INTRODUCCION
iv
Tabla de contenido
AUTORIDADES .................................................................................................................. i
AGRADECIMIENTOS ......................................................................................................... ii
RESUMEN......................................................................................................................... iii
INTRODUCCION ............................................................................................................... iv
UNIDAD I (INTRODUCCIÓN A LAS APLICACIONES WEB) ............................................. 1
COMPETENCIA(S) A DESARROLLAR.......................................................................... 2
COMPETENCIAS PREVIAS .......................................................................................... 2
TÉCNICAS DE AUTOESTUDIO Y MOTIVACIÓN. ......................................................... 2
1.1 Evolución de las aplicaciones web. .......................................................................... 4
1.2. Arquitectura de las aplicaciones web ..................................................................... 11
1.3 Tecnologías para el desarrollo de aplicaciones web ............................................... 16
1.4 Planificación de aplicaciones web .......................................................................... 21
Actividades de aprendizaje ....................................................................................... 24
Materiales y recursos didácticos. .............................................................................. 24
ORIENTACIONES SOBRE LA EVALUACIÓN. ............................................................ 25
UNIDAD II (HTML, XML Y CSS) ...................................................................................... 26
COMPETENCIA(S) A DESARROLLAR........................................................................ 27
COMPETENCIAS PREVIAS ........................................................................................ 27
TÉCNICAS DE AUTOESTUDIO Y MOTIVACIÓN. ....................................................... 27
2.1 Introducción............................................................................................................ 29
2.2 Estructura global de un documento Web. ............................................................... 30
2.3 Elementos básicos: texto, vínculos, listas, tablas, objetos, imágenes y aplicaciones.
..................................................................................................................................... 31
2.4 Formularios ............................................................................................................ 35
2.5 Lenguajes de presentación en documentos Web. .................................................. 39
2.6 Selectores. ............................................................................................................. 41
2.7 Modelo de caja. ...................................................................................................... 45
Actividades de aprendizaje ....................................................................................... 80
Prácticas ................................................................................................................... 81
Materiales y recursos didácticos. ............................................................................ 101
ORIENTACIONES SOBRE LA EVALUACIÓN. .......................................................... 102
v
UNIDAD III (PROGRAMACIÓN DEL LADO DEL CLIENTE) .......................................... 103
COMPETENCIA(S) A DESARROLLAR...................................................................... 104
COMPETENCIAS PREVIAS ...................................................................................... 104
TÉCNICAS DE AUTOESTUDIO Y MOTIVACIÓN. ..................................................... 104
3.1 Introducción al lenguaje........................................................................................ 106
3.2 Manejo de Frameworks ........................................................................................ 109
3.3 Estructuras de Control. ......................................................................................... 111
3.4 Manipulación de objetos. ...................................................................................... 117
Actividades de aprendizaje ..................................................................................... 120
Prácticas ................................................................................................................. 120
ORIENTACIONES SOBRE LA EVALUACIÓN. .......................................................... 121
UNIDAD IV (PROGRAMACIÓN DEL LADO DEL SERVIDOR) ...................................... 122
COMPETENCIA(S) A DESARROLLAR...................................................................... 123
COMPETENCIAS PREVIAS ...................................................................................... 123
TÉCNICAS DE AUTOESTUDIO Y MOTIVACIÓN. ..................................................... 123
4.1 Introducción al lenguaje........................................................................................ 125
4.2 Estructuras de Control. ......................................................................................... 128
4.3 Tratamiento de Formularios.................................................................................. 130
4.4 Manejo de objetos del servidor ............................................................................. 139
4.5 Creación de clases. .............................................................................................. 144
4.6 Acceso a datos. .................................................................................................... 145
Actividades de aprendizaje ..................................................................................... 149
Prácticas ................................................................................................................. 149
ORIENTACIONES SOBRE LA EVALUACIÓN. .......................................................... 169
UNIDAD V (CÓMPUTO EN LA NUBE Y SERVICIOS) ................................................... 170
COMPETENCIA(S) A DESARROLLAR...................................................................... 171
COMPETENCIAS PREVIAS ...................................................................................... 171
TÉCNICAS DE AUTOESTUDIO Y MOTIVACIÓN. ..................................................... 171
5.1 Conceptos generales............................................................................................ 173
5.2 Tipos de Servicios en la nube............................................................................... 176
5.3 Patrones de diseño. ............................................................................................. 181
5.4 Estándares en servicios. ...................................................................................... 187
5.5 Plataformas tecnológicas ..................................................................................... 191
vi
5.6 Seguridad e interoperabilidad. .............................................................................. 195
Actividades de aprendizaje ..................................................................................... 198
Prácticas ................................................................................................................. 198
ORIENTACIONES SOBRE LA EVALUACIÓN. .......................................................... 199
PROYECTO DE ASIGNATURA ..................................................................................... 200
REFERENCIAS ............................................................................................................. 201
ANEXOS........................................................................................................................ 203
vii
Indice de Figuras
viii
Figura 40. Árbol de nodos generado automáticamente por DOM a partir del código XHTML
de la página ................................................................................................................... 118
Figura 41. Imprime Hola Mundo en pantalla. ................................................................. 126
Figura 42. Imprime Adiós Mundo en pantalla. ................................................................ 127
Figura 43. Formulario sencillo ........................................................................................ 130
Figura 44. Uso de POST................................................................................................ 131
Figura 45. Formulario con uso de GET .......................................................................... 131
Figura 46. Uso de GET .................................................................................................. 131
Figura [Link] más importantes para los formularios HTML con PHP ................. 132
Figura 48. Ejemplo de formulario ................................................................................... 133
Figura [Link]ón filtrado(): ........................................................................................... 134
Figura 50 Aplicación de la función filtrado(): a cada campo ........................................... 134
Figura 51. Mostrar datos ................................................................................................ 134
Figura 52. Filtros de PHP ............................................................................................... 135
Figura 53. Array de errores ............................................................................................ 135
Figura 54. Ejemplo en un archivo [Link] .................................................................. 136
Figura 55. Función move_uploaded_file() ...................................................................... 137
Figura 56. Mensajes de errores ..................................................................................... 137
Figura 57. Atributo múltiple ............................................................................................ 138
Figura 58. Forma de omitir validaciones ........................................................................ 138
Figura 59. Clase destinada a sumar dos números. ........................................................ 145
Figura 60 Tipos de cómputo en la nube ......................................................................... 175
Figura 61. Pilares de la nube ......................................................................................... 178
Figura 62. Catálogo de Patrones ................................................................................... 187
ix
Indice de Tablas
x
Unidad I (Introducción a las aplicaciones web)
1
Unidad I (Introducción a las aplicaciones web)
COMPETENCIA(S) A DESARROLLAR
COMPETENCIAS PREVIAS
➢ Aula Invertida
➢ Aprendizaje Semipresencial
➢ Aprendizaje Colaborativo
➢ Hiper-personalización
➢ Aprendizaje Experiencial
➢ Micro aprendizaje
➢ Entrenamiento Educativo
➢ Otras…
2
Unidad I (Introducción a las aplicaciones web)
3
Unidad I (Introducción a las aplicaciones web)
De acuerdo Carles Mateu (2004) Internet, la red de redes, nace a mediados de la década
de los setenta, bajo los auspicios de DARPA, la Agencia de Proyectos Avanzados para la
Defensa de Estados Unidos. DARPA inició un programa de investigación de técnicas y
tecnologías para unir diversas redes de conmutación de paquetes, permitiendo así a los
ordenadores conectados a estas redes comunicarse entre sí de forma fácil y transparente.
HTML, HyperText Markup Languaje: Permite mostrar páginas con hipertexto (texto
en forma estructurada mediante enlaces).
URL, Localizador de Recursos Uniforme: Se refiere a la dirección única que
identifica una página web. Permite localizar o acceder de forma sencilla a cualquier
4
Unidad I (Introducción a las aplicaciones web)
El protocolo HTTP
Existe una variante de HTTP llamada HTTPS (S por secure) que utiliza el protocolo de
seguridad SSL (secure socket layer) para cifrar y autenticar el tráfico entre cliente y servidor,
siendo ésta muy usada por los servidores web de comercio electrónico, así como por
aquellos que contienen información personal o confidencial. (Mateu, 2004).
(Mateu, 2004)
5
Unidad I (Introducción a las aplicaciones web)
Las peticiones en HTTP pueden realizarse usando dos métodos. El método GET, en caso
de enviar parámetros junto a la petición, las enviaría codificadas en la URL. Por su parte, el
método POST, en caso de enviarlos, lo haría como parte del cuerpo de la petición.
Inicialmente la web era simplemente una colección de páginas estáticas, documentos, etc.,
que podían consultarse o descargarse. El siguiente paso en su evolución fue la inclusión
de un método para confeccionar páginas dinámicas que permitiesen que lo mostrado fuese
dinámico (generado o calculado a partir de los datos de la petición). Dicho método fue
conocido como CGI (common gateway interface) y definía un mecanismo mediante el cual
podíamos pasar información entre el servidor HTTP y programas externos. (Mateu, 2004).
Hemos pasado de una web 1.0 a la 2.0, 3.0 y ahora llega la web 4.0.
De acuerdo al artículo del Dr. Latorre Ariño (2018) plasma la web de la siguiente manera:
✓ La web 1.0, fue la primera (apareció hacia 1990) y en ella solo se podía consumir
contenido. Se trataba de información a la que se podía acceder, pero sin posibilidad
de interactuar; era unidireccional.
✓ La web 2.0, (apareció en 2004) y contiene los foros, los blogs, los comentarios y
después las redes sociales. La web 2.0 permite compartir información. Y aquí
estamos, de momento la mayor parte de los consumidores.
✓ La web 3.0 (fue operativa en el 2010) y se asocia a la web semántica, un concepto
que se refiere al uso de un lenguaje en la red. Por ejemplo, la búsqueda de
contenidos utilizando palabras clave.
✓ La web 4.0. empezó en el 2016 y se centra en ofrecer un comportamiento más
inteligente y más predictivo, de modo que podamos, con sólo realizar una afirmación
o una llamada, poner en marcha un conjunto de acciones que tendrán como
resultando aquello que pedimos, deseamos o decimos.
6
Unidad I (Introducción a las aplicaciones web)
La web 1.0 es la forma más básica que existe de navegadores de solo texto. Apareció hacia
1990 y es muy primitiva para lo que hoy ofrece la web. La web 1.0 la utilizan personas
conectadas a la web utilizando Internet y es de solo lectura y el usuario es, básicamente,
un sujeto pasivo que recibe la información o la pública, sin que existan posibilidades para
que se genere la interacción con el contenido de la página; está totalmente limitada a lo que
el webmaster –el experto que administra los contenidos-- sube a la página web. Esta web
primitiva es estática, centralizada, secuencial, de solo lectura, y es no interactiva. Sirve para
utilizar el correo electrónico, navegadores, motores de búsqueda, etc. Una página web que
se limita a mostrar información y que ni siquiera se actualiza, forma parte de la generación
1.0. En cambio, cuando las páginas ofrecen un nivel considerable de interacción y se
actualizan con los aportes de los usuarios, se llaman la web 2.0. Cabe mencionar que lo
que diferencia a la web 1.0 y la 2.0 no es el nivel tecnológico en los servidores, --aunque
naturalmente se ha dado un considerable avance en el hardware--, es, sobre todo, la
finalidad de la red, los objetivos y la forma en la que los usuarios perciben y utilizan la
información en línea; este cambio tuvo lugar silenciosa pero velozmente, a comienzos del
nuevo milenio. Hasta entonces, Internet era un universo de datos mayoritariamente
estáticos, una fuente de consulta revolucionaria que atraía a millones de personas a
contemplarla pasivamente. Si bien los foros y el chat datan de la web 1.0, éstos se
encontraban bien diferenciados de los sitios tradicionales (tal y como ocurre en la
actualidad); navegar por la web 1.0 era similar a visitar un gran centro comercial, con
infinidad de tiendas, en el cual era posible comprar productos, pero no alterar sus vidrieras
ni probarse las prendas de vestir.
El término web 2.0 fue acuñado por O’Reilly en 2004 para referirse a una segunda
generación de tecnología web basada en comunidades de usuarios y una gama especial
de servicios, como las redes sociales, los blogs, los wikis, los chat, foros, álbumes de
fotografía, presentaciones en red, etc., que fomentan la colaboración y el intercambio ágil
de información entre los usuarios de una comunidad o red social. La web 2 posibilita la
conexión de personas con personas –redes sociales, wikis, colaboración, con posibilidad
de compartir--. Es dinámica, interactiva, de lectura y escritura, desarrolla la inteligencia
colectiva y favorece el trabajo colaborativo, etc. La web 2.0 se vincula a los servicios que
permiten compartir datos e interactuar con gran facilidad. Las redes sociales y las
plataformas de colaboración constituyen la base de esta evolución de Internet. La web 2.0
es también llamada web social por el enfoque colaborativo y de interacción social de esta
herramienta. El web 2.0 es una actitud ante la comunicación que utiliza la tecnología. El uso
de la web 2.0 está orientado a la interacción en redes sociales, que pueden proporcionar
contenido, creando webs interactivas y visuales. Es decir, los sitios web 2.0 actúan como
puntos de encuentro de los usuarios, pues son bidireccionales, en contraposición de la web
1.0, que es unidireccional.
7
Unidad I (Introducción a las aplicaciones web)
Con la llegada de la web 2.0, se produjo un fenómeno social que cambió para siempre
nuestra relación con la información y la comunicación, principalmente porque nos hizo parte
de ella; en la actualidad, una noticia acerca de una manifestación en contra del maltrato
animal no está completa sin mostrar cuántos usuarios de Facebook leyeron y participaron
de la misma, qué porcentaje de lectores está a favor del movimiento y los comentarios que
hicieron, que, en muchas ocasiones, aportan datos o señalan errores.
Para que todo lo indicado hasta aquí sea técnicamente posible estas aplicaciones utilizan
un gestor de contenidos, (CMS), que permite la creación y administración de contenidos en
páginas web. Consiste en una interfaz que controla una o varias bases de datos donde se
aloja el contenido de la web. El sistema permite manejar de manera independiente el
contenido por una parte y el diseño por otra. Así, es posible manejar el contenido y darle,
cuando se quiere, un diseño distinto, sin tener que darle un formato nuevo al contenido,
además de permitir a varios editores la publicación en el sitio, fácil y controlada. Un ejemplo
clásico es el de editores que cargan el contenido al sistema y otro de nivel superior que
permite que estos contenidos sean visibles al público que deseen en cada momento. Con
estos gestores de contenidos pueden realizarse diversas aplicaciones en la web 2.0;
destacamos las siguientes: blog, wiki, twitter, facebook, plataforma de redes sociales, los
portales de alojamiento de fotos, audio o vídeos (flick, youtube), foros, el instagram, el
snapchat, el storytelling, etc.
El término web 3.0 apareció por primera vez en 2006 en un artículo de Zeldman, crítico de
la web 2.0. Esta web fue operativa desde el 2010. La web 3.0, es un salto tecnológico que
tiene importantes consecuencias en los usuarios de la red. Web 3.0, son aplicaciones web
conectadas a aplicaciones web, a fin de enriquecer la experiencia de las personas; a esto
agrega conocimiento del contexto en la web geoespacial, la autonomía respecto del
navegador y la construcción de la web semántica. La web 3.0 es conocida como la “web
semántica” porque utiliza de forma más eficiente de los datos: “data web”. Es inter-operativa
y el usuario tiene el control para hacer los cambios que desee modificando directamente
las bases de datos. La web semántica incluye metadatos semánticos u ontológicos (que
describen los contenidos y las relaciones entre los datos) para que puedan ser rastreados
por sistemas de procesamiento. Mientras la web 2.0 está gestionada por el propio usuario
humano, la web 3.0 está gestionada en la nube y ejecutada desde cualquier dispositivo con
un alto grado de complejidad y personalización; constituye un nuevo tipo de web en la que
se añade contenido semántico a los documentos que la forman y ello conlleva que la
ejecución de la misma sea realizada por máquinas que, basándose en nuestros perfiles en
la red, descubren información relevante para nosotros. La web 3.0 está muy asociada al
concepto de personalización. Ofrece un flujo de información y de contenidos adaptados a
nuestros gustos y preferencias. ¿De dónde sacarán los motores de gestión de datos,
información sobre nuestros gustos? De nuestra actividad en la red que, como sabemos,
deja un importante rastro a modo de fotos, opiniones, tendencia de búsqueda, viajes, etc.
Como vemos, algunos elementos de Web 3.0, ya estaban presenten, al menos en fase
inicial, en la web 2.0. y otros se han ampliado en la web 4.0. En la actualidad, si precisamos
8
Unidad I (Introducción a las aplicaciones web)
un hotel para unas vacaciones debemos navegar entre varias páginas analizando diferentes
opciones. La web 3.0 nos ofrecerá el mejor hotel adaptado a nuestros gustos y necesidades.
Esta web omnisciente, --casi divina--, que dibujan algunos analistas, asusta un poco. Suena
bien, pero un poco siniestro también. En definitiva, la web 3.0 se expandirá con toda su
potencia cuando exista la tecnología que lo permita. Y cuando lo haga, nos ofrecerá nuevas
opciones de personalización y una búsqueda a través de la red más natural, accediendo en
menor tiempo a información relevante para cada usuario. Habremos llegado a la web 4.0.
La web 3.0 apunta a que todos podamos disfrutar de la información y de las herramientas
de Internet sin importar el aparato a través del cual nos conectemos, ya que busca una
flexibilidad y una versatilidad que superen las barreras del formato y la estructura.
La web 4.0
En el 2016 empezó la web 4.0, que es el próximo gran avance y se centrará en ofrecer un
comportamiento más inteligente, más predictivo, de modo que podamos, con sólo realizar
una afirmación o petición, poner en marcha un conjunto de acciones que tendrán como
resultando aquello que pedimos o decimos. ¿Cómo llegamos a la Web 4?0.? Gracias a la
propia evolución de la tecnología. Empresas como Google, Microsoft o Facebook, entre
otras, están desarrollando nuevos sistemas que gracias al Deep Learning y Machine
Learning serán capaces de procesar información de forma similar a como lo haría el cerebro
humano. Tenemos los avances que los asistentes de voz están logrando. Siri, Google Now
o Cortana entienden cada vez de forma más precisa y correcta lo que les decimos o
solicitamos. Es más, ya hay smartphones que siempre están “escuchando” para activarse
en el preciso momento que oigan “Oye, Siri” u “Hola, Google Now”, etc. para contestar de
inmediato. Otro indicador de hacia dónde vamos son los bots. Son programas interacción
que traerá la web 4.0. Por ahora dependen de la introducción de texto, pero, con la
evolución en tecnologías de “hablar al texto” (Speech to text), seremos capaces de
conversar con ellos de igual modo que lo haríamos con un amigo en una cafetería. En la
web 3.0 los buscadores son elementos esenciales en el día a día. Cuando se entra en
Google, Bing, Go, etc. e introduces palabras clave, aparecen muchos resultados que hay
que revisar hasta encontrar lo que se desea. Pues bien, la web 4.0 mejora esa experiencia
mediante el uso de nuevas tecnologías que permiten un nivel de interacción más completo
y personalizado. Es decir, se puede decir verbalmente al dispositivo digital --que puede ser
un smartphone, computadora, etc.--: “Compra un boleto de avión con tales características”,
“Pide un taxi para la hora y tal lugar” y automáticamente ejecutará la acción sin más
intervención propia. Así, pasamos de una web que nos proporciona información a la web
que nos proporciona soluciones. Como se puede observar la web 4.0 ofrece soluciones a
partir de toda la información que le damos y que existe en la web.
• La comprensión del lenguaje natural hablado, escrito y tecnologías (de voz a texto
y viceversa)
• Nuevos sistemas de comunicación máquina a máquina (M2M)
• Uso de la información del contexto. Por ejemplo, ubicación que aporta el GPS, ritmo
cardíaco que registra el smartwatch, etc.
9
Unidad I (Introducción a las aplicaciones web)
La Web 4.0 permite adelantarse a situaciones cotidianas, como ver que llegas tarde al
trabajo y enviar un mensaje avisando de lo que sucede, tomar una ruta alternativa a la
habitual porque está colapsada, etc. Si tu smartwatch detecta que el ritmo cardíaco es
elevado y tienes registrado que sufres problemas de corazón, avisará a la asistencia
sanitaria y aparecerá una ambulancia. La web 4.0 permite la computación cognitiva. A
través de potentes ordenadores se almacenan en la nube y procesan los datos, peticiones,
etc. permitiendo, no sólo que cualquier dispositivo con conexión a internet nos ayude a
aprovecharnos de ellos, sino también sirviendo cada uno de nosotros como suministradores
de datos a las máquinas. (Latorre Ariño, 2018).
Fuente: Moravec, J. (2008). Moving beyond Educationb 2.0., completado por el autor.
10
Unidad I (Introducción a las aplicaciones web)
Las aplicaciones web utilizan lo que se conoce como clientes livianos (light clients) los
cuales no ejecutan demasiadas labores de procesamiento para la ejecución de la aplicación
misma. Desde el punto de vista de la arquitectura se distinguen dos lados; uno es el cliente,
donde se encuentra el usuario final utilizando la aplicación por medio de un navegador
(como Internet Explorer o Mozilla Firefox). A través de este cliente web, el usuario interactúa
con la aplicación localizada al otro lado, en el servidor, que es donde residen realmente los
datos, reglas y lógica de la aplicación.
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 solo
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.
11
Unidad I (Introducción a las aplicaciones web)
Fuente: [Link]
Características
Ventajas
Centralización del control: los accesos, recursos y la integridad de los datos son
controlados por el servidor, de forma que un programa cliente defectuoso o no autorizado
no pueda dañar el sistema. Esta centralización también facilita la tarea de poner al día datos
u otros recursos (mejor que en las redes P2P).
12
Unidad I (Introducción a las aplicaciones web)
Desventajas
La congestión del tráfico ha sido siempre un problema en el paradigma de C/S. Cuando una
gran cantidad de clientes envían peticiones simultaneas al mismo servidor, puede ser que
cause muchos problemas para éste (a mayor número de clientes, más problemas para el
servidor). Al contrario, en las redes P2P, como cada nodo en la red hace también de
servidor, cuantos más nodos hay, mejor es el ancho de banda que se tiene.
El paradigma de C/S clásico no tiene la robustez de una red P2P. Cuando un servidor está
caído las peticiones de los clientes no pueden ser satisfechas. En la mayor parte de redes
P2P, los recursos están generalmente distribuidos en varios nodos de la red. Aunque
algunos salgan o abandonen la descarga; otros pueden todavía acabar de descargar
consiguiendo datos del resto de los nodos en la red.
El cliente no dispone de los recursos que puedan existir en el servidor. Por ejemplo, si la
aplicación es una Web no podemos escribir en el disco duro del cliente o imprimir
directamente sobre las impresoras sin sacar antes la ventana previa de impresión de los
navegadores.
Ejemplos.
13
Unidad I (Introducción a las aplicaciones web)
Otro ejemplo podría ser el funcionamiento de un juego on line. Si existen dos servidores de
juego, cuando un usuario lo descarga y lo instala en su computadora pasa a ser un cliente.
Si tres personas juegan en un solo computador existirían dos servidores, un cliente y tres
usuarios. Si cada usuario instala el juego en su propio ordenador existirían dos servidores,
tres clientes y tres usuarios.
• Un cliente, es decir, el equipo que solicita los recursos, equipado con una interfaz
de usuario (generalmente un navegador web) para la presentación.
• El servidor de aplicaciones (también denominado software intermedio), cuya tarea
es proporcionar los recursos solicitados, pero que requiere de otro servidor para
hacerlo.
• El servidor de datos, que proporciona al servidor de aplicaciones los datos que éste
le solicitó.
Figura 3. Arquitectura de tres capas
Fuente: [Link]
El uso masivo del término arquitectura en tres niveles también denota las siguientes
arquitecturas:
La arquitectura en dos niveles es, por tanto, una arquitectura cliente-servidor en la que el
servidor es polivalente, es decir, puede responder directamente a todas las solicitudes de
recursos del cliente.
Sin embargo, en la arquitectura en tres niveles las aplicaciones al nivel del servidor son
descentralizadas de uno a otro, es decir, cada servidor se especializa en una determinada
14
Unidad I (Introducción a las aplicaciones web)
Hay que tener en cuenta que los distintos niveles representados como equipos físicos
distintos podrían ser llevados a cabo por programas “servidores” dentro de un mismo
servidor físico. Es decir, un software que funcionase como servidor de aplicaciones y otro
software como servidor de bases de datos. (Ferrer Martínez, 2015).
15
Unidad I (Introducción a las aplicaciones web)
JavaScript
o Es un lenguaje interpretado.
o No necesita compilación.
o Multiplataforma.
o Lenguaje de alto nivel.
o Admite programación estructurada.
o Basado en objetos.
o Maneja la mayoría de los eventos que se pueden producir sobre la página
web.
o No se necesita ningún kit o entorno de desarrollo.
Java
16
Unidad I (Introducción a las aplicaciones web)
17
Unidad I (Introducción a las aplicaciones web)
Por supuesto, Java es un lenguaje con unas altas prestaciones, mucho mayores que las de
lenguajes interpretados.
VBScript
VBScript es, al igual que JavaScript, un lenguaje basado en guiones que permite integrar
programas directamente en el código HTML. Admite un doble uso, por un lado, como
lenguaje del lado del cliente, pero también como lenguaje del lado del servidor para la
generación de páginas ASP.
Programación CGI
CGI son las siglas de Common Gateway Interface (Interfaz de Pasarela Común) y lo que
define es un estándar para establecer la comunicación entre un servidor web y un programa.
Esta interfaz define una forma cómoda y simple de ejecutar programas que se encuentran
en la máquina en la que se aloja el servidor, a través de la definición de una serie de reglas
que deben cumplir tanto las aplicaciones como los servidores para hacer posible la
ejecución de los programas. Al tratarse de una interfaz, no existe ningún tipo de
dependencia con el lenguaje de programación empleado. Para desarrollar programas CGI
se puede utilizar cualquier lenguaje. Los más habituales son: C, C++, Fortran, Perl, Tcl,
18
Unidad I (Introducción a las aplicaciones web)
Visual Basic, AppleScript. Los lenguajes interpretados como Tcl y Perl, tienen mayor
facilidad de mantenimiento y depuración, presentan ventajas de seguridad, pero resultan
más lentos. Los lenguajes compilados (C, C++,...), por su parte, son mucho más rápidos.
En el caso de CGI la velocidad de ejecución es importante, ya que habrá que sumar el
tiempo de ejecución al tiempo de espera de red y a la velocidad de transmisión.
ASP (Active Server Pages) es la tecnología diseñada por Microsoft para facilitar la creación
de sitios web con una mayor sencillez que la empleada en la programación CGI. El principal
inconveniente es la fuerte dependencia del entorno Microsoft, ya que requiere un servidor
web de Microsoft, como puede ser el Internet Information Server (IIS) o el Personal Web
Server (PWS).
Para utilizar la tecnología ASP sobre otros servidores, por ejemplo, servidores Unix, se
necesita un software intérprete (Chilisoft, Instant ASP).
El núcleo de funcionamiento de ASP es una aplicación ISAPI (Internet Server API). Una
aplicación ISAPI es una DLL de Windows que se ejecuta en el mismo espacio de
direcciones que el servidor web y que puede soportar varias peticiones simultáneas.
ASP no es realmente un lenguaje como tal, el lenguaje usado en realidad para programar
ASP es Visual Basic Script o Jscript (versión Microsoft de JavaScript).
Los servlets y Java Server Pages (JSPs) son dos métodos de creación de páginas web
dinámicas en servidor usando el lenguaje Java. Se trata de tecnologías desarrolladas por
la empresa Sun Microsystems.
Las JSP se diferencian de otras tecnologías del lado del servidor como los CGI o las ASP
en dos aspectos principalmente: por un lado, los JSP y servlets se ejecutan en una máquina
virtual Java, lo cual permite que, en principio, se puedan usar en cualquier tipo de
ordenador, siempre que tenga instalado esa máquina virtual. Por otro lado, un programa
JSP se compila a un programa en Java la primera vez que se invoca, y del programa en
Java se crea una clase que se empieza a ejecutar en el servidor como un servlet. De esta
manera los servlets no se ejecutan cada vez que se recibe una petición, sino que persisten
de una petición a la siguiente, lo que permite realizar operaciones como la conexión a bases
de datos o manejo de sesiones de una manera más eficiente.
Un JSP es una página web con etiquetas especiales y código Java incrustado, mientras
que un servlet es un programa que recibe peticiones y genera a partir de ellas una página
web. En ambos casos se necesita un programa servidor que se encargue de recibir las
peticiones, distribuirlas entre los servlets y realizar las tareas de gestión propias de un
servidor web. Estos programas suelen llamarse contenedores de servlets o servlet engines,
y, entre otros, podrían citarse como ejemplos Resin, BEA Weblogic, JRun de Macromedia,
Lutris Hendirá, o, quizás el más popular y conocido: Toncat.
19
Unidad I (Introducción a las aplicaciones web)
ColdFusion
Básicamente ColdFusion está formado por tres componentes: una aplicación servidor, un
lenguaje de marcación (ColdFusion Markup Language, CFML) y un programa
administrador. La aplicación servidor es la encargada de leer e interpretar las instrucciones
que le son pasadas a través de páginas ColdFusion. Estas páginas se identifican por tener
la extensión .cfm o .cfc y contienen etiquetas HTML y etiquetas específicas del lenguaje
propio de ColdFusion: CFML.
Las etiquetas del lenguaje CFML tienen una sintaxis similar a las de HTML y se distinguen
del resto por tener nombres que siempre comienzan con cf. Además de las etiquetas
predefinidas, el programador puede crear nuevas etiquetas e incluso puede integrar código
en otros lenguajes como C, C++ o Java.
Las aplicaciones ColdFusion pueden interactuar con cualquier base de datos que soporte
ODBC o JDBC.
PHP
PHP es un lenguaje interpretado del lado del servidor que surge dentro de la corriente
denominada código abierto (open source). Se caracteriza por su potencia, versatilidad,
robustez y modularidad. Al igual que ocurre con tecnologías similares, los programas son
integrados directamente dentro del código HTML.
Comparado con ASP, la principal ventaja de PHP es su carácter multiplataforma. Por otro
lado, los programas en ASP resultan más lentos y pesados, y también menos estables. En
los entornos Microsoft la ventaja de ASP es que los servidores web de Microsoft soportan
directamente ASP sin necesidad de ninguna instalación adicional.
En comparación con ColdFusion, PHP es más rápido y eficiente para tareas complejas de
programación, además PHP resulta más estable y usa una menor cantidad de recursos.
Por el contrario, ColdFusion posee un mejor gestor de errores, un buen motor de
búsquedas, abstracciones de bases de datos y un gran número de funcionalidades para el
procesamiento de fechas. Finalmente, ColdFusion no está disponible para todas las
plataformas.
20
Unidad I (Introducción a las aplicaciones web)
Las metodologías o también llamados métodos, están compuestos por un número de fases
que cambia dependiendo de las metodologías que se utilice, pero si el método es más
complejo en sus pasos mayormente se tiene un menor número de errores en relación a la
calidad y consistencia de datos.
Las metodologías para aplicaciones Web contienen fases para el desarrollo de software
que pueden aumentar o disminuir dependiendo del método que utilicen, la mayoría de los
métodos coinciden en las siguientes etapas:
Según Soto, Palma & Roncagliolo OOHDM es una metodología orientada a objetos que
propone un proceso de desarrollo de cinco fases donde se combinan notaciones gráficas
UML con otras propias de la metodología. Cuando internet no era accesible para todas las
personas OOHDM simplemente era utilizado para aplicaciones hipermedia, pero gracias al
auge del internet en la actualidad se adaptó dicha metodología para el desarrollo de
21
Unidad I (Introducción a las aplicaciones web)
aplicaciones hipermedias orientadas a la Web, como por ejemplo bibliotecas virtuales, sitios
educativos, motores de búsqueda, entretenimiento, etc. Esta metodología permite
desarrollar aplicaciones Web a partir de la utilización de modelos especializados como:
conceptual, navegación e interfaz de usuario teniendo como objetivo simplificar y hacer más
eficaz el diseño de aplicaciones.
Fuente: [Link]
Diseño navegacional: representa los diferentes caminos que puede ejecutar la aplicación
dependiendo del tipo de usuario. Es decir, brinda un contexto navegacional capaz de
realizar acciones a través de enlaces, vínculos o índices que están relacionados dentro de
la aplicación Web dependiendo del perfil de usuario para mostrar sus vistas
correspondientes.
Es importante mencionar que el desarrollador y diseñador son los encargados del lado
técnico del sistema y su apariencia final, mientras que el cliente verifica que funcione
22
Unidad I (Introducción a las aplicaciones web)
Fuente: [Link]
23
Unidad I (Introducción a las aplicaciones web)
Actividades de aprendizaje
Actividad 1: Realizar una línea del tiempo sobre la evolución de las aplicaciones web.
Elaborarla en digital, revisar rúbrica.
Actividad 2: Realizar un mapa mental en el cual incluyas los temas: 1.2, 1.3,1.4. Elaborarlo
en digital, revisar rúbrica.
[Link]
bd8PK
24
Unidad I (Introducción a las aplicaciones web)
Semana 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
TP Evaluación
Unidad I
TR
Rúbrica a utilizar:
25
UNIDAD II (HTML, XML Y CSS)
Unidad II (HTML, XML y CSS)
COMPETENCIA(S) A DESARROLLAR
Conoce y aplica las herramientas para construir páginas web, considerando la interfaz
gráfica de usuario, un lenguaje de marcado y de presentación.
COMPETENCIAS PREVIAS
➢ Aula Invertida
➢ Aprendizaje Semipresencial
➢ Aprendizaje Colaborativo
➢ Hiper-personalización
➢ Aprendizaje Experiencial
➢ Micro aprendizaje
➢ Entrenamiento Educativo
➢ Otras…
27
Unidad II (HTML, XML y CSS)
28
Unidad II (HTML, XML y CSS)
2.1 Introducción.
Los lenguajes de marcado o lenguajes de marcas se pueden definir como una manera de
codificar documentos donde, junto con el texto, se establecen etiquetas, marcas o
anotaciones que contienen información relacionada con la estructura de dicho texto, su
forma de visualización, etc. Aunque HTML es el lenguaje de marcas que se utiliza para
crear páginas web, no es el único lenguaje de este tipo que existe. (Guerrero Pérez, 2015).
Las llamadas hojas de estilo en cascada, CSS o Cascading Style Sheets abren un nuevo
abanico de posibilidades para los creadores de páginas web. La idea que se encuentra
detrás del desarrollo de CSS es separar la estructura de un documento de su presentación
o aspecto, como, por ejemplo, la combinación de XHTML y CSS.
XHTML (eXtensible Hyper Text Markup Language) es el lenguaje de marcas creado para
sustituir al lenguaje HTML (Hyper Text Markup Language). Se podría decir que el XHTML
es la versión XML de HTML, ya que tiene básicamente las mismas funcionalidades,
cumpliendo las especificaciones más estrictas de XML. Su objetivo es avanzar en el
proyecto del W3C (World Wide Web Consortium), de lograr páginas web donde la
información y la forma de presentarla estén claramente separadas. XHTML es, por lo tanto,
un lenguaje semántico, que quiere decir que no definimos el aspecto de las cosas sino lo
que significan. Esta característica se aprecia claramente en su estructuración semántica,
ya que XHTML sirve únicamente para transmitir la información que contiene un documento,
dejando el aspecto y el diseño para las hojas de estilo (CSS), y la interactividad y
funcionalidad para JavaScript, por ejemplo. (Orós Cabello, 2014).
29
Unidad II (HTML, XML y CSS)
(Guerrero Pérez, 2015) menciona que en un documento escrito con un lenguaje de marcas
se pueden distinguir las siguientes partes fundamentales:
■ Etiquetas o marcas.
■ Elementos.
■ Atributos.
■ Comentarios.
El autor (Zofío Jiménez, 2013) menciona en su libre que un documento escrito en HTML
debe tener una estructuración que con tenga los siguientes elementos básicos o etiquetas
fundamentales:
— Doctype: Es la primera línea de código que tiene que estar en cualquier documento
HTML. Esta línea indica al navegador qué especificación de HTML se está
utilizando. Suele ser la siguiente:
— HTML: El par de etiquetas <html> y </html> se encuentran al principio y al final de
todo documento HTML y sirve para indicar a todos las aplicaciones que pueden
analizar texto sin formato (no solamente a los navegadores) que esa página utiliza
HTML.
— Head: Las etiquetas <head> y </head> delimitan el contenido de la cabecera del
documento, es decir, el título de la página y una información que no aparece en la
pantalla. Title: El par de etiquetas <title> y </title> rodea el texto del título. El título
30
Unidad II (HTML, XML y CSS)
Figura 5. Representación visual de un ejemplo de diseño de página web muy genérico y habitual
Fuente: [Link]
2.3 Elementos básicos: texto, vínculos, listas, tablas, objetos, imágenes y aplicaciones.
Comentarios: <! -- comentarios -->: Para escribir anotaciones que sirven para ayudar a
la comprensión del código. Lo que se escribe dentro de esta etiqueta es ignorado por el
navegador y no se muestra en la página.
Formato de Textos
• <b>...</b> : Aplica negrita al texto incluido entre las etiquetas (es equivalente usar
<strong>… </strong>)
31
Unidad II (HTML, XML y CSS)
• <i>...</i>: Aplica cursiva al texto incluido entre las etiquetas (es equivalente usar
<em>…</em>)
• <u> </u>: Aplica subrayado
• <font>...</font>: Delimita un texto con un formato de fuente determinado definido
por sus propiedades:
❖ <font size=”X”>… </font>: Indica el tamaño del texto.
❖ <font color=”#RRGGBB”>… </font>: Define el color del texto, donde cada
letra RRGGBB es un valor hexadecimal (de 0 a F) que indica el color.
❖ <font face=”arial”>… </font>: Determina el tipo de fuente de texto, es decir,
la tipografía.
La etiqueta <font> puede incluir los tres parámetros (tamaño, fuente y color): <font size=X
color=#XXYYZZ face=fuente escogida> …… </font>
• h1, h2, h3, h4, h5, h6: Indican 6 niveles de formato de encabezados, en los que
<h1>...</h1> delimitaría el tipo de fuente de mayor tamaño.
Creación de Enlaces
Creación de Listas
▪ Lista no numerada:
▪ Lista numerada:
Tablas
32
Unidad II (HTML, XML y CSS)
Dentro de cada celda se puede alinear el texto o cualquier contenido, cambiar el color de
fondo, con las etiquetas habituales para texto, párrafos o imágenes.
Objetos
La etiqueta <object> permite insertar cualquier tipo de documentos (no solamente de texto)
dentro de un documento html. Para poder mostrar esos archivos, el navegador suele
necesitar plug-ins. Algunos tipos de documentos necesitan información adicional que se
proporciona mediante la etiqueta vacía <param>.
Ejemplo de objetos
Los vídeos de YouTube pueden obtenerse en formato Flash, por lo que se pueden insertar
en una página web mediante la etiqueta <object>, como muestra el siguiente ejemplo. Para
insertar otro vídeo habría que sustituir el código del vídeo en el atributo data (en el ejemplo,
el código del vídeo es vZV-t3KzTpw).
<object
type="application/x-shockwave-flash"
data="[Link]
style="width: 425px; height:350px;">
<param
name="movie"
value="[Link]
ERROR (no puede mostrarse el objeto)
</object>
Imágenes
33
Unidad II (HTML, XML y CSS)
Aplicaciones
Una API (del inglés Application Programming Interface), es una biblioteca de utilidades que
añade funcionalidades a la programación web.
HTML5 permite la incorporación de varias APIs que van a permitir llevar a cabo actividades
desde el navegador web y dispositivos móviles compatibles que no eran posibles con las
versiones anteriores de HTML.
Uno de los objetivos principales de una API es el de normalizar el modo de trabajo de ciertos
mecanismos y simplificar tareas de programación, que, de lo contrario, serían bastante
complejas.
La API Web Storage es básicamente una mejora de las Cookies. Las cookies permiten que
los sitios web puedan guardar una pequeña información en los equipos de los usuarios,
datos que normalmente sirven para volver a utilizarlos en momentos posteriores, y de esta
manera, por ejemplo, ciertos sitios web recuerdan la información del usuario desde el último
acceso.
La API Offline Application Catching permite que una página web pueda ser consultada aun
cuando no se tenga conexión a internet, ya que todo o parte de su contenido quedará
almacenado en la memoria caché del ordenador.
Drag and Drop significa Arrastrar y Soltar, es decir, mediante esta API se puede arrastrar y
mover prácticamente cualquier tipo de elemento de elemento de una página web. Esta
funcionalidad puede ser muy útil en infinidad de aplicaciones web, por ejemplo, en un juego
de ajedrez, para poder mover con el ratón las piezas por el tablero. (Celaya Luna, 2014).
34
Unidad II (HTML, XML y CSS)
Atributo Significado
class: permite definir la clase.
id crea un identificador del elemento.
contextmenu permite asociar un menú de contexto que deberá estar definido en
una etiqueta MENU.
contenteditable: valor booleano que indica si el contenido delimitado por la etiqueta
se puede modificar. dir: dirección del elemento d.
lang: especifica el idioma
draggable: indica si el elemento puede ser arrastrado y soltado.
dropzone: especifica si los datos arrastrados serán copiados, movidos o
vinculados, cuando se suelta un elemento tras arrastrarlo.
hidden: elemento oculto que podrá visualizarse con código JavaScript.
accesskey: acceso directo de teclado que activa un elemento.
translate: modo de traducción.
spellcheck: para comprobar la gramá- tica y ortografía. style: para definir el
estilo.
tabindex: orden de tabulación.
title: información de ayuda.
eventos: en HTML son sucesos que ocurren en la interfaz de usuario y que
se asocian a un programa, por ejemplo, de JavaScript. Pueden ser
asociados a los elementos de HTML para ejecutar el script
relacionado cuando se produzca el evento, por ejemplo, onclick,
ondbl- click, onmouseup, onmouseover, on- focus, onplay, onreset,
ondrop, etc.
2.4 Formularios
Los formularios son secciones interactivas de una página web que los auto- res insertan en
la mismas para permitir que el usuario pueda enviar informa- ción al servidor donde esté
alojado el sitio. (Guerrero Pérez, 2015).
HTML5 incorpora nuevas etiquetas, atributos y tipos de entradas que facilitan el trabajo con
formularios.
35
Unidad II (HTML, XML y CSS)
método post, y target, que especifica dónde se debe mostrar la respuesta que se recibe
después de enviar el formulario. También se utiliza el atributo name, para asociarle un
nombre unívoco que permita diferenciarle entre otros formularios. Veamos ahora los
elementos que pueden contener los formularios.
Entre los nuevos atributos para las etiquetas de tipo <input> se encuentran:
36
Unidad II (HTML, XML y CSS)
37
Unidad II (HTML, XML y CSS)
38
Unidad II (HTML, XML y CSS)
El lenguaje de presentación es aquel que indica el formato del texto. Este tipo de marcado
es útil para maquetar la presentación de un documento para su lectura, pero resulta
insuficiente para el procesamiento automático de la información.
El marcado de presentación resulta más fácil de elaborar, sobre todo para cantidades
pequeñas de información. Sin embargo, resulta complicado de mantener o modificar, por lo
que su uso se ha ido reduciendo en proyectos grandes en favor de otros tipos de marcado
más estructurados.
Funciona por medio de reglas específicas las cuales presentan un soporte adecuado para
la correcta interpretación y estructuración de un documento en el que se exprese la
información necesaria solicitada.
En este lenguaje se expresan los atributos de los elementos de tal forma que se definen los
diseños y contenidos, por ejemplo:
• Márgenes
• Tipo de títulos
• Color de fondo
• Tipo de letra
39
Unidad II (HTML, XML y CSS)
Las hojas de estilo en cascada (Cascading Style Sheets, CSS) son un lenguaje formal
usado para definir la presentación de un documento estructurado escrito en HTML o XML
y por extensión en XHTML. El W3C (World Wide Web Consortium) es el encargado de
formular la especificación de las hojas de estilo que servirá de estándar para los agentes
de usuario o navegadores.
Las hojas de estilo representan un avance importante para los diseñadores de páginas web,
al darles un mayor rango de posibilidades para mejorar la apariencia de sus páginas. En
los entornos científicos en que la Web fue concebida, la gente estaba más preocupada por
el contenido de sus páginas que por su presentación.
La idea que se encuentra detrás del desarrollo de CSS es separar la estructura
de un documento de su presentación.
Estructura CSS
40
Unidad II (HTML, XML y CSS)
2.6 Selectores.
De acuerdo al autor (Contreras Castañeda, 2016), las reglas de estilo serán los diseños
aplicados a cada etiqueta HTML de nuestro documento, pero en un documento pueden
existir muchas etiquetas, y en determinados casos queremos aplicar nuestro diseño a sólo
una parte.
❖ Selectores de elemento.
❖ Selectores de ID.
❖ Selectores de Clase.
❖ Selector Universal
❖ Selectores descendentes y adyacentes
Selector de elemento.
Un selector de elemento nos va a permitir aplicar una regla de estilo sobre un tipo de
elemento concreto de HTML. Para ello tenemos que poner el tag o etiqueta seguido de los
pares de propiedad: valor, separadas por “;”, todo ello cerrado entre corchetes. Es muy
importante seguir estrictamente el formato porque si no tendremos errores difíciles de
detectar.
Ejemplo:
Figura 6. Selector de Elemento
/* Podemos añadir comentarios opcionalmente, y pueden ocupar una o varias líneas. Estos
comentarios los verá un usuario avanzado, por lo que no se debe poner información transcendental.
*/
etiquetaHTML {
propiedad1: valor1;
propiedad2: valor2;
propiedad3:
valor3;
}
Por ejemplo, si queremos aplicar a la etiqueta <h3> el color Azul y a la etiqueta de párrafo
<p>, el color Rojo y cursiva tendremos que escribir lo siguiente:
Ejemplo:
Figura 7. Aplicar estilos a la etiqueta h3
h3 {
color: blue;
}
/* Comentario para la etiqueta h3*/
p{
color: red;
font-style: italic;
41
}
Unidad II (HTML, XML y CSS)
Selector de ID.
Los selectores de ID, seleccionarán aquellas etiquetas que coincidan con el identificador
asociado id=”nombre_identificador”. Estas etiquetas serán distinguidas en el fichero o estilo
CSS, porque les preceden una #, usándose de la siguiente forma:
Ejemplo:
Figura 8. Selector ID
/* En este caso seleccionamos todos los elementos que hay en documento que corresponde al
identificador dado. Solo se puede usar una vez en el documento CSS y debe ser declarado una
única vez en el CSS. Por lo que se suele usar para secciones bien diferenciadas, tipo menú
superior, contenido, barra lateral, etc. Aunque se puede usar para cualquier otra etiqueta como
párrafos, títulos, tablas, etc.
*/
#nombre_identificador {
propiedad1: valor1;
propiedad2: valor2;
propiedad3: valor3;
}
Selector de Clase.
Los selectores de Clase, seleccionan los elementos dados por un nombre de clase, esta se
puede utilizar al contrario de los selectores de ID varias veces, comienzan con punto ‘.’,
seguido del nombre que queramos darle a la clase. Esta regla afectará a todos los
elementos HTML que pongamos su atributo ‘class’.
Ejemplo:
Figura 9. Selector de Clase
/* En este caso seleccionamos todos los elementos que correspondan a la clase con el nombre
dado. */
nombre_clase {
propiedad1: valor1;
propiedad2: valor2;
propiedad3: valor3;
}
42
Unidad II (HTML, XML y CSS)
1° Selector de ID
2° Selector de Clase
3° Selector de Elemento
Fuente: [Link]
Es decir, si a un elemento lo seleccionamos por el elemento, por la clase y por el ID, el valor
que prevalecerá siempre será el del ID y luego la Clase.
Ejemplo:
Figura 10. Aplicando jerarquías
<p class=”desdeClase” id=”desdeID”>¿De qué color soy?, tengo ID= azul, Clase= rojo y elemento
= verde. Solución= AZUL
</p> <p class=”desdeClase”>¿De qué color soy?, No tengo ID, Clase= rojo y Elemento = verde.
Solución= ROJO</p>
<p>¿De qué color soy?, No tengo ID ni Clase pero si Elemento = verde. Solución= VERDE</p>
Selector Universal
Ejemplo:
Figura 11. Selector Universal
*{
margin: 0;
font-family: Verdana;
}
Como puedes ver en el ejemplo, suele utilizarse para configurar los márgenes, la fuente y
poco más.
43
Unidad II (HTML, XML y CSS)
Ejemplo:
Figura 12. Descendientes del primer selector
section p {
text-font: Verdada;
}
Este selector se aplica a todos los elementos <p> que son descendientes de un elemento
<section> (recuerda que pueden ser descendientes de cualquier nivel).
Ejemplo:
Figura 13. Mezclar selectores descendentes
section .error {
color: red;
En este caso, se escribirá en rojo cualquier elemento de la clase error que sea descendiente
de un elemento <section>. Aquí vemos la importancia de usar correctamente los espacios
en blanco.
Ejemplo:
Figura 14. Descendientes directos
section>p {
text-font: Verdana;
En este caso, la fuente Verdana solo se usa en los elementos <p> que son descendientes
directos de <section>.
44
Unidad II (HTML, XML y CSS)
Ejemplo:
Figura 15. Seleccionar elementos hermanos
h1 + p {
text-indent: 1.5em;
}
}
Este selector indenta el primer párrafo que aparece justo después de un encabezado <h1>.
(Recio García, 2016).
Las cajas de una página se crean automáticamente. Cada vez que se inserta una etiqueta
HTML, se crea una nueva caja rectangular que encierra los contenidos de ese elemento.
La siguiente imagen muestra las tres cajas rectangulares que crean las tres etiquetas HTML
que incluye la página:
Figura 16. Las cajas se crean automáticamente al definir cada elemento HTML
Fuente: [Link]
4#:~:text=El%20modelo%20de%20cajas%20o,se%20representen%20mediante%20cajas%20rectangular
es.
45
Unidad II (HTML, XML y CSS)
Las cajas de las páginas no son visibles a simple vista porque inicialmente no muestran
ningún color de fondo ni ningún borde.
Fuente: [Link]
4#:~:text=El%20modelo%20de%20cajas%20o,se%20representen%20mediante%20cajas%20rectangular
es.
Los navegadores crean y colocan las cajas de forma automática, pero CSS permite
modificar todas sus características.
Cada una de las cajas está formada por seis partes, tal y como muestra la siguiente imagen:
46
Unidad II (HTML, XML y CSS)
Fuente: [Link]
4#:~:text=El%20modelo%20de%20cajas%20o,se%20representen%20mediante%20cajas%20rectangular
es.
Las partes que componen cada caja y su orden de visualización desde el punto de vista del
usuario son las siguientes:
• Contenido (content): se trata del contenido HTML del elemento (las palabras de
un párrafo, una imagen, el texto de una lista de elementos, etc.)
• Relleno (padding): espacio libre opcional existente entre el contenido y el borde.
• Borde (border): línea que encierra completamente el contenido y su relleno.
• Imagen de fondo (background image): imagen que se muestra por detrás del
contenido y el espacio de relleno.
• Color de fondo (background color): color que se muestra por detrás del contenido
y el espacio de relleno.
• Margen (margin): separación opcional existente entre la caja y el resto de cajas
adyacentes.
El relleno y el margen son transparentes, por lo que en el espacio ocupado por el relleno
se muestra el color o imagen de fondo (si están definidos) y en el espacio ocupado por el
margen se muestra el color o imagen de fondo de su elemento padre (si están definidos).
47
Unidad II (HTML, XML y CSS)
Si ningún elemento padre tiene definido un color o imagen de fondo, se muestra el color o
imagen de fondo de la propia página (si están definidos).
Si una caja define tanto un color como una imagen de fondo, la imagen tiene más prioridad
y es la que se visualiza. No obstante, si la imagen de fondo no cubre totalmente la caja del
elemento o si la imagen tiene zonas transparentes, también se visualiza el color de fondo.
Combinando imágenes transparentes y colores de fondo se pueden lograr efectos gráficos
muy interesantes.
Anchura
La propiedad CSS que controla la anchura de la caja de los elementos se denomina width.
Propiedad Width
48
Unidad II (HTML, XML y CSS)
Altura
Propiedad height
Al igual que sucede con width, la propiedad height no admite valores negativos. Si se indica
un porcentaje, se toma como referencia la altura del elemento padre. Si el elemento padre
no tiene una altura definida explícitamente, se asigna el valor auto a la altura.
El valor inherit indica que la altura del elemento se hereda de su elemento padre. El
valor auto, que es el que se utiliza si no se establece de forma explícita un valor a esta
propiedad, indica que el navegador debe calcular automáticamente la altura del elemento,
teniendo en cuenta sus contenidos y el sitio disponible en la página.
49
Unidad II (HTML, XML y CSS)
Margen
CSS define cuatro propiedades para controlar cada uno de los márgenes horizontales y
verticales de un elemento.
Valor inicial 0
Cada una de las propiedades establece la separación entre el borde lateral de la caja y el
resto de cajas adyacentes:
Las unidades más utilizadas para indicar los márgenes de un elemento son los píxeles
(cuando se requiere una precisión total), los em (para hacer diseños que mantengan las
proporciones) y los porcentajes (para hacer diseños líquidos o fluidos).
50
Unidad II (HTML, XML y CSS)
.destacado {
margin-left: 2em;
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nam et elit.
Vivamus placerat lorem. Maecenas sapien. Integer ut massa. Cras diam ipsum,
cursus vel, tellus. Etiam placerat erat non sem. Nulla molestie odio non
egestas massa vehicula nonummy. Morbi posuere, nibh ultricies consectetuer tincidunt,
51
Unidad II (HTML, XML y CSS)
Algunos diseñadores web utilizan la etiqueta <blockquote> para tabular los contenidos de
los párrafos. Se trata de un error grave porque HTML no debe utilizarse para controlar el
aspecto de los elementos. CSS es el único responsable de establecer el estilo de los
elementos, por lo que en vez de utilizar la etiqueta <blockquote> de HTML, debería
utilizarse la propiedad margin-left de CSS.
Figura 21 Los márgenes verticales sólo se aplican a los elementos de bloque e imágenes
La imagen anterior muestra el resultado de aplicar los mismos márgenes a varios enlaces
(elementos en línea) y varios párrafos (elementos de bloque). En los elementos en línea los
márgenes verticales no tienen ningún efecto, por lo que los enlaces no muestran ninguna
separación vertical, al contrario de lo que sucede con los párrafos. Sin embargo, los
márgenes laterales funcionan sobre cualquier tipo de elemento, por lo que los enlaces se
muestran separados entre sí y los párrafos aumentan su separación con los bordes
laterales de su elemento contenedor.
Además de las cuatro propiedades que controlan cada uno de los márgenes del elemento,
CSS define una propiedad especial que permite establecer los cuatro márgenes de forma
simultánea. Estas propiedades especiales se denominan "propiedades shorthand".
52
Unidad II (HTML, XML y CSS)
Propiedad Margin
Valor inicial -
La notación {1, 4} de la definición anterior significa que la propiedad margin admite entre
uno y cuatro valores, con el siguiente significado:
div img {
margin-top: .5em;
margin-bottom: .5em;
margin-left: 1em;
margin-right: .5em;
53
Unidad II (HTML, XML y CSS)
Alternativa directa:
div img {
Otra alternativa:
div img {
margin: .5em;
margin-left: 1em;
De la misma forma, si un elemento está contenido dentro de otro elemento, sus márgenes
verticales se fusionan y resultan en un nuevo margen de la misma altura que el mayor
margen de los que se han fusionado:
54
Unidad II (HTML, XML y CSS)
55
Unidad II (HTML, XML y CSS)
Relleno
CSS define cuatro propiedades para controlar cada uno de los espacios de relleno
horizontales y verticales de un elemento.
Valor inicial 0
Cada una de estas propiedades establece la separación entre el contenido y los bordes
laterales de la caja del elemento:
Como sucede con los márgenes, CSS también define una propiedad de
tipo "shorthand" llamada padding para establecer los cuatro rellenos de un elemento de
forma simultánea.
56
Unidad II (HTML, XML y CSS)
Propiedad Padding
Valor inicial -
La notación {1, 4} de la definición anterior significa que la propiedad padding admite entre
uno y cuatro valores, con el mismo significado que el de la propiedad margin. Ejemplo:
body {padding: 1em 2em} /* Superior e inferior = 1em, Izquierdo y derecho = 2em */
body {padding: 1em 2em 3em} /* Superior = 1em, derecho = 2em, inferior = 3em, izquierdo
= 2em */
body {padding: 1em 2em 3em 4em} /* Superior = 1em, derecho = 2em, inferior = 3em, izqu
ierdo = 4em */
Bordes
CSS permite modificar el aspecto de cada uno de los cuatro bordes de la caja de un
elemento. Para cada borde se puede establecer su anchura o grosor, su color y su estilo,
por lo que en total CSS define 20 propiedades relacionadas con los bordes.
57
Unidad II (HTML, XML y CSS)
Anchura
Descripción Establece la anchura de cada uno de los cuatro bordes de los elementos
La anchura de los bordes se indica mediante una medida (en cualquier unidad de medida
absoluta o relativa) o mediante las palabras clave thin (borde delgado), medium (borde
normal) y thick (borde ancho).
La unidad de medida más habitual para establecer el grosor de los bordes es el píxel, ya
que es la que permite un control más preciso sobre el grosor. Las palabras clave apenas
se utilizan, ya que el estándar CSS no indica explícitamente el grosor al que equivale cada
palabra clave, por lo que pueden producirse diferencias visuales entre navegadores. Así
por ejemplo, el grosor medium equivale a 4px en algunas versiones de Internet Explorer y
a 3px en el resto de navegadores.
58
Unidad II (HTML, XML y CSS)
div {
border-top-width: 10px;
border-right-width: 1em;
border-bottom-width: thick;
border-left-width: thin;
}
Si se quiere establecer de forma simultánea la anchura de todos los bordes de una caja, es
necesario utilizar una propiedad "shorthand" llamada border-width:
Propiedad border-width
La propiedad border-width permite indicar entre uno y cuatro valores. El significado de cada
caso es el habitual de las propiedades "shorthand":
Si se indica un solo valor, se aplica a los cuatro bordes. Si se indican dos valores, el primero
se aplica al borde superior e inferior y el segundo valor se aplica al borde izquierdo y
derecho.
59
Unidad II (HTML, XML y CSS)
Color
Valor inicial -
Descripción Establece el color de cada uno de los cuatro bordes de los elementos
El ejemplo anterior se puede modificar para mostrar cada uno de los bordes de un color
diferente:
60
Unidad II (HTML, XML y CSS)
Las reglas CSS necesarias para mostrar los colores anteriores son las siguientes:
div {
border-top-color: #CC0000;
border-right-color: blue;
border-bottom-color: #00FF00;
border-left-color: #CCC;
}
CSS incluye una propiedad "shorthand" llamada border-color para establecer de forma
simultánea el color de todos los bordes de una caja:
Propiedad border-color
Valor inicial -
En este caso, al igual que sucede con la propiedad border-width, es posible indicar de uno
a cuatro valores y las reglas de aplicación son idénticas a las de la propiedad border-width.
61
Unidad II (HTML, XML y CSS)
Estilo
Por último, CSS permite establecer el estilo de cada uno de los bordes mediante las
siguientes propiedades:
Descripción Establece el estilo de cada uno de los cuatro bordes de los elementos
El estilo de los bordes sólo se puede indicar mediante alguna de las palabras reservadas
definidas por CSS. Como el valor por defecto de esta propiedad es none, los elementos no
muestran ningún borde visible a menos que se establezca explícitamente un estilo de borde.
Siguiendo el ejemplo anterior, se puede modificar el estilo de cada uno de los bordes:
62
Unidad II (HTML, XML y CSS)
Las reglas CSS necesarias para mostrar los estilos anteriores son las siguientes:
div {
border-top-style: dashed;
border-right-style: double;
border-bottom-style: dotted;
border-left-style: solid;
}
El aspecto con el que los navegadores muestran los diferentes tipos de borde se muestra
a continuación:
Figura 30 Tipos de bordes definidos por CSS
Los bordes más utilizados son solid y dashed, seguidos de double y dotted. Los
estilos none y hidden son idénticos visualmente, pero se diferencian en la forma que los
navegadores resuelven los conflictos entre los bordes de las celdas adyacentes en las
tablas.
63
Unidad II (HTML, XML y CSS)
Para establecer de forma simultánea los estilos de todos los bordes de una caja, es
necesario utilizar la propiedad "shorthand" llamada border-style:
Propiedad border-style
(none | hidden | dotted | dashed | solid | double | groove | ridge | inset | outset
Valores
) {1, 4} | inherit
Valor inicial -
Como es habitual, la propiedad permite indicar de uno a cuatro valores diferentes y las
reglas de aplicación son las habituales de las propiedades "shorthand".
Propiedades shorthand
Como sucede con los márgenes y los rellenos, CSS define una serie de propiedades de
tipo "shorthand" que permiten establecer todos los atributos de los bordes de forma
simultánea. CSS incluye una propiedad "shorthand" para cada uno de los cuatro bordes y
una propiedad "shorthand" global.
Valor inicial -
64
Unidad II (HTML, XML y CSS)
h1 {
border-bottom: solid red;
}
En el ejemplo anterior, la anchura del borde será la correspondiente al valor por defecto
(medium). Este otro ejemplo muestra la forma habitual utilizada para establecer el estilo de
cada borde:
div {
border-top: 1px solid #369;
border-bottom: 3px double #369;
}
Por último, CSS define una propiedad de tipo "shorthand" global para establecer el valor de
todos los atributos de todos los bordes de forma directa:
Propiedad Border
Valor inicial -
65
Unidad II (HTML, XML y CSS)
div {
border-top: 1px solid red;
border-right: 1px solid red;
border-bottom: 1px solid red;
border-left: 1px solid red;
}
Cuando los cuatro bordes no son idénticos, pero sí muy parecidos, se puede utilizar la
propiedad border para establecer de forma directa los atributos comunes de todos los
bordes y posteriormente especificar para cada uno de los cuatro bordes sus propiedades
particulares:
h1 {
border: solid #000;
border-top-width: 6px;
border-left-width: 8px;
}
66
Unidad II (HTML, XML y CSS)
div {
width: 300px;
padding-left: 50px;
padding-right: 50px;
margin-left: 30px;
margin-right: 30px;
border: 10px solid black;
}
La anchura total con la que se muestra el elemento no son los 300 píxel indicados en la
propiedad width, sino que también se añaden todos sus márgenes, rellenos y bordes:
Figura 31 La anchura total de un elemento tiene en cuenta los márgenes, rellenos y bordes
De esta forma, la anchura del elemento en pantalla sería igual a la suma de la anchura
original, los márgenes, los bordes y los rellenos:
Así, la anchura/altura establecida con CSS siempre hace referencia a la anchura/altura del
contenido. La anchura/altura total del elemento debe tener en cuenta además los valores
del resto de partes que componen la caja del box model.
Por otra parte, la guerra de navegadores que se produjo en los años 90 provocó que cada
fabricante (Microsoft y Netscape) añadiera sus propias extensiones y mejoras en sus
productos. Posteriormente, aparecieron los estándares publicados por el W3C y los
fabricantes se encontraron con el problema de la incompatibilidad entre sus
67
Unidad II (HTML, XML y CSS)
La diferencia más notable entre los dos modos es el tratamiento del "box model", lo que
puede afectar gravemente al diseño de las páginas HTML. Los navegadores seleccionan
automáticamente el modo en el que muestran las páginas en función
del DOCTYPE definido por el documento. En general, los siguientes tipos
de DOCTYPE activan el modo quirks en los navegadores:
Se pueden consultar todos los casos concretos que activan el modo quirks para cada
navegador en la página [Link]
La versión 5.5 y anteriores de Internet Explorer y las versiones 6 y 7 en modo quirks siguen
su propio modelo de cálculo de anchuras y alturas que es muy diferente al método definido
por el estándar.
68
Unidad II (HTML, XML y CSS)
69
Unidad II (HTML, XML y CSS)
Por lo tanto, en este caso la anchura total del elemento (sin contar los márgenes laterales)
es de 300 píxel, el mismo valor que se indica en la propiedad width. El espacio ocupado por
los bordes del elemento (2 x 10) y sus rellenos (2 x 50) se resta de la anchura de su
contenido.
Para evitar este problema y crear diseños con el mismo aspecto en cualquier navegador,
es necesario evitar el modo quirks de Internet Explorer. Por tanto, todas las páginas deben
incluir la declaración apropiada de DOCTYPE.
Fondos
El último elemento que forma el box model es el fondo de la caja del elemento. El fondo
puede ser un color simple o una imagen. El fondo solamente se visualiza en el área ocupada
por el contenido y su relleno, ya que el color de los bordes se controla directamente desde
los bordes y las zonas de los márgenes siempre son transparentes.
CSS define cinco propiedades para establecer el fondo de cada elemento (background-
color, background-image, background-repeat, background-attachment, background-
position) y otra propiedad de tipo "shorthand" (background).
Propiedad background-color
70
Unidad II (HTML, XML y CSS)
El siguiente ejemplo muestra una página web con un color gris claro de fondo:
body {
background-color: #F5F5F5;
}
Propiedad background-image
CSS permite establecer de forma simultánea un color y una imagen de fondo. En este caso,
la imagen se muestra delante del color, por lo que solamente si la imagen contiene zonas
transparentes es posible ver el color de fondo.
Las imágenes de fondo se indican a través de su URL, que puede ser absoluta o relativa.
Suele ser recomendable crear una carpeta de imágenes que se encuentre en el mismo
directorio que los archivos CSS y que almacene todas las imágenes utilizadas en el diseño
de las páginas.
Por otra parte, suele ser habitual indicar un color de fondo siempre que se muestra una
imagen de fondo. En caso de que la imagen no se pueda mostrar o contenga errores, el
navegador mostrará el color indicado (que debería ser, en lo posible, similar a la imagen) y
la página no parecerá que contiene errores.
71
Unidad II (HTML, XML y CSS)
Si la imagen que se quiere mostrar es demasiado grande para el fondo del elemento,
solamente se muestra la parte de imagen comprendida en el tamaño del elemento. Si la
imagen es más pequeña que el elemento, CSS la repite horizontal y verticalmente hasta
llenar el fondo del elemento.
Este comportamiento es útil para establecer un fondo complejo a una página web entera.
El siguiente ejemplo utiliza una imagen muy pequeña para establecer un fondo complejo a
toda una página:
Imagen original
Reglas CSS
body {
background-image:url(imagenes/[Link]);
}
Resultado
Con una imagen muy pequeña (y que, por tanto, se puede descargar en muy poco tiempo)
se consigue cubrir completamente el fondo de la página, con lo que se consigue un gran
ahorro de ancho de banda.
72
Unidad II (HTML, XML y CSS)
Propiedad background-repeat
El valor repeat indica que la imagen se debe repetir en todas direcciones y por tanto, es el
comportamiento por defecto. El valor no-repeat muestra una sola vez la imagen y no se
repite en ninguna dirección. El valor repeat-x repite la imagen sólo horizontalmente y el
valor repeat-y repite la imagen solamente de forma vertical.
El sitio web [Link] utiliza el valor repeat-x para mostrar una imagen de fondo
en la cabecera de la página:
73
Unidad II (HTML, XML y CSS)
#hdr {
background: url("/images/[Link]") repeat-x;
width: 100%;
text-align: center;
}
74
Unidad II (HTML, XML y CSS)
Por otra parte, el sitio web [Link] utiliza el valor repeat-y para mostrar el
fondo de una columna de contenidos:
.wide #content-secondary {
width: 272px;
margin: 13px 0 0 0;
position: relative;
margin-left: -8px;
background: url("./graphics/wide/[Link]") repeat-y;
}
75
Unidad II (HTML, XML y CSS)
Propiedad background-position
Valor inicial 0% 0%
Las palabras clave permitidas son equivalentes a algunos porcentajes significativos: top =
0%, left = 0%, center = 50%, bottom = 100%, right = 100%.
CSS permite mezclar porcentajes y palabras clave, como por ejemplo 50% 2cm, center
2cm, center 10%.
76
Unidad II (HTML, XML y CSS)
El siguiente ejemplo muestra una misma imagen de fondo posicionada de tres formas
diferentes:
#caja1 {
background-image: url("images/[Link]");
background-repeat: no-repeat;
background-position: bottom left;
}
#caja2 {
background-image: url("images/[Link]");
background-repeat: no-repeat;
background-position: right top;
}
#caja3 {
background-image: url("images/[Link]");
background-repeat: no-repeat;
background-position: 50% 50%;
}
77
Unidad II (HTML, XML y CSS)
Opcionalmente, se puede indicar que el fondo permanezca fijo cuando la ventana del
navegador se desplaza mediante las barras de scroll. Se trata de un comportamiento que
en general no es deseable y que algunos navegadores no soportan correctamente. La
propiedad que controla este comportamiento es background-attachment.
Propiedad background-attachment
Para hacer que una imagen de fondo se muestre fija al desplazar la ventana del navegador,
se debe añadir la propiedad background-attachment: fixed.
Por último, CSS define una propiedad de tipo "shorthand" para indicar todas las
propiedades de los colores e imágenes de fondo de forma directa. La propiedad se
denomina background y es la que generalmente se utiliza para establecer las propiedades
del fondo de los elementos.
Propiedad Background
Valor inicial -
78
Unidad II (HTML, XML y CSS)
La propiedad background permite asignar todos o sólo algunos de todos los valores que se
pueden definir para los fondos de los elementos:
background: none;
79
Unidad II (HTML, XML y CSS)
Actividades de aprendizaje
Actividad 1:
❑ Lenguajes de Marcas
➢ Hoja de Presentación
➢ Índice
➢ Introducción
➢ Desarrollo de los temas con imágenes y ejemplos
➢ Conclusión
➢ Referencias
El estudiante deberá entregar un avance de su proyecto en el cual aplicará los temas vistos
en esta unidad.
80
Unidad II (HTML, XML y CSS)
Prácticas
El alumno deberá desarrollar una práctica en la cual emplee todos los temas vistos en esta
unidad.
Xampp es una herramienta de desarrollo que te permite probar tu trabajo (páginas web o
programación, por ejemplo) en tu propia computadora sin necesidad de tener que acceder
a internet.
Sublime y Brackets son editores de texto de código abierto que te permitirán desarrollar tus
proyectos web.
81
Unidad II (HTML, XML y CSS)
<!DOCTYPE html>
<html ">
<head>
<meta charset="utf-8">
<title>Blog de Viajes</title>
<link rel="stylesheet" type="text/css" href="css/[Link]">
</head>
<body>
</body>
</html>
<header>
<div class="contenedor">
<div class="logo">
</div>
</div>
</header>
</body>
82
Unidad II (HTML, XML y CSS)
------------------------------------------------------------------------------------------------------------------------
-----------<div class="navegacion">
<nav>
<ul>
<li><a href="#">Inicio</a></li>
<li><a href="#">Nosotros</a></li>
<li><a href="#">Blog</a></li>
<li><a href="#">Tienda</a></li>
<li><a href="#">Contacto</a></li>
</ul>
</nav>
</div>
83
Unidad II (HTML, XML y CSS)
11) Añadiremos una lista sin ordenar anidada en el apartado Nosotros y en Blog,
quedando el código de la siguiente manera:
Nota: La etiqueta <a href=””> nos permite crear enlaces.
<div class="navegacion">
<nav>
<ul>
<li><a href="#">Inicio</a></li>
<li><a href="#">Nosotros</a>
<ul>
<li><a href="#">Misión</a></li>
<li><a href="#">Visión</a></li>
<li><a href="#">Valores</a></li>
</ul>
</li>
<li><a href="#">Blog</a>
<ul>
<li><a href="#">Consejos</a></li>
<li><a href="#">Ciudades</a></li>
<li><a href="#">Promociones</a></li>
</ul>
</li>
<li><a href="#">Tienda</a></li>
<li><a href="#">Contacto</a></li>
</ul>
</nav>
</div>
84
Unidad II (HTML, XML y CSS)
13) Procederemos a crear las entradas de nuestro blog, dentro de las etiquetas:
<div> Contenedor
< main> Contenido Principal
< article> Se ocupa para noticias o artículos.
</article>
</main>
</div>
14) Dentro de las etiquetas article, añadiremos una etiqueta h2, una imagen, dos
párrafos y un vínculo, quedando de la siguiente manera:
Nota: Recuerda que las etiquetas h, nos permiten asignar un determinado tamaño
al texto.
Para generar un párrafo automáticamente puedes escribir la palabra lorem y dar un
enter, en caso que tu párrafo creado esté desbordado puedes dar clic en la pestaña
view y das clic en la opción Word Wrap.
<article>
<h2>Viajar a Londres</h2>
85
Unidad II (HTML, XML y CSS)
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit ese cillum dolore eu fugiat
nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui
officia deserunt mollit anim id est laborum.
</p>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit ese cillum dolore eu fugiat
nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui
officia deserunt mollit anim id est laborum.
</p>
</article>
Nota: Como puedes darte cuenta la etiqueta <a< href=” ”> tiene asignada una clase de tipo
botón.
86
Unidad II (HTML, XML y CSS)
16) Puedes copiar el código del artículo que acabas de crear y pegarlo dos veces, ya
que tendremos tres entradas de blog. Solo recuerda cambiar el texto
correspondiente a la etiqueta <h2> y su respectiva imagen.
<article>
<h2>Viajar a Londres</h2>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit ese cillum dolore eu fugiat
nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui
officia deserunt mollit anim id est laborum.
</p>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit ese cillum dolore eu fugiat
87
Unidad II (HTML, XML y CSS)
nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui
officia deserunt mollit anim id est laborum.
</p>
</article>
<article>
<h2>Puente de la torre</h2>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit ese cillum dolore eu fugiat
nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui
officia deserunt mollit anim id est laborum.
</p>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit ese cillum dolore eu fugiat
nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui
officia deserunt mollit anim id est laborum.
</p>
</article>
<article>
<h2>Metro de Londres</h2>
<p>
88
Unidad II (HTML, XML y CSS)
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit ese cillum dolore eu fugiat
nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui
officia deserunt mollit anim id est laborum.
</p>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit ese cillum dolore eu fugiat
nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui
officia deserunt mollit anim id est laborum.
</p>
</article>
Vista en el navegador:
17) Procederemos a crear una etiqueta <aside> asignándole una clase llamada sidebar,
asi como una lista sin ordenar. Sidebar hace referencia a una barra lateral.
Nota: La etiqueta <aside> “indica un contenido a un lado” y debe estar relacionado
con el contenido circundante. Este <aside> debe ir antes de finalizar la etiqueta
<div> del contenido <div class="contenido contenedor">.
89
Unidad II (HTML, XML y CSS)
<aside class="sidebar">
<h2>Otros Posts</h2>
<ul>
</ul>
</aside>:
Nota: Este código deberá ir después de finalizar la etiqueta </main> y recuerda que la
etiqueta main la asignamos para crear nuestros artículos dentro de nuestro <div
class=”contenido”>
Visualizar en el navegador:
90
Unidad II (HTML, XML y CSS)
.
.
.
</body>
</html>
19) Procedemos a crear el pie de nuestra página, asignando un footer con su respectivo
contenedor, creamos una etiqueta <h2>, un párrafo y un comentario:
<footer>
<div class="contenedor">
<div class="nosotros">
<h2>Sobre Nosotros</h2>
<p> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim
ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
aliquip ex ea commodo consequat. </p>
</div> <!--.nosotros-->
</div> <!--.contenido-->
</footer>
20) Dentro del mismo footer y antes de finalizar el <div> de la clase contenedor,
crearemos otro contenedor para añadir un menú, recuerda que siempre debemos
crearlo dentro de un contenedor.
Deberá quedar de la siguiente manera:
<div class="menu">
<nav>
<ul>
<li><a href="#">Inicio</a></li>
<li><a href="#">Nosotros</a></li>
91
Unidad II (HTML, XML y CSS)
<li><a href="#">Blog</a></li>
<li><a href="#">Tienda</a></li>
<li><a href="#">Contacto</a></li>
</ul>
</nav>
</div> <!--.menu-->
</div> <!--.contenido-->
<p class="copyright">
</p>
92
Unidad II (HTML, XML y CSS)
box-sizing: border-box; /* Nos permite trabajar con el modelo caja, por ejemplo, cuando
mantendra en 600px*/
*{
padding: 0;
body{
header{
padding: 20px 0;
/*el padding establece el espacio de relleno requerido por todos los lados de un elemento.
Estructura: (padding-top, padding-right, padding-bottom, padding-left).*/
width: 1200px;
margin: 0 auto;
93
Unidad II (HTML, XML y CSS)
background-color: #db008d;
width: 1200px;
margin: 0 auto;
nav ul{
nav > ul > li{ /*Añadimos un selector con el signo > para hacer referencia al primer nivel de ul y
el primer nivel de li, esto permitira que no se vea afectado nuestro submenu*/
float: left;
nav ul::after { /*limpiar el float con clear para que no distorcione la posicion de nuestro div de
navegacion*/
content: '';
display: block;
/* display es la propiedad más importante para controlar estructuras, El valor por defecto para
la mayoría de los elementos es usualmente block (de bloque) */
clear: both; /*La propiedad clear indica el lado o lados de una caja que no debe ser adyacente
a un elemento posicionado de forma flotante con la propiedad float*/
color: #ffffff;
94
Unidad II (HTML, XML y CSS)
text-decoration: none;
nav ul li a:hover{ /*Permite que el enlace de navegacion cambie de color al posicionar el cursor
sobre el*/
background-color: #00b8e4;
nav ul ul{
position: absolute;
top: 100%;
background-color: rgb(0, 128, 228, 0.7); /*La función rgba () define los colores usando el
modelo Rojo-verde-azul-alfa (RGBA).*/
display: none;
display: block;
nav ul li:hover { /*Permite que el menu principal aparezca seleccionado con el color de los items
del submenu*/
95
Unidad II (HTML, XML y CSS)
content: '';
display: block;
clear: both;
width: 70%;
float: left;
padding-right: 40px;
color: #00b8e4;
margin-bottom: 20px;
float: left;
width: 300px;
margin-right: 30px;
text-align: justify;
background-color: #00b8e4;
96
Unidad II (HTML, XML y CSS)
margin-top: 10px;
color: #ffffff;
/*SIDEBAR*/
float: right;
width: 20%;
margin-top: 30px;
aside ul{
aside ul li{
background-color: #00b8e4;
cursor: pointer; /*Permite que el cursor aparezca con una manita en cada enlace*/
aside ul li a{
color: #00b8e4;
97
Unidad II (HTML, XML y CSS)
color: #ffffff;
/*ESTILOS AL FOOTER*/
footer{
background-color: #db008d;
color: #ffffff;
footer .contenedor::after{
content: '';
display: block;
clear: both;
float: left;
width: 30%;
color: #ffffff;
footer p{
text-align: justify;
98
Unidad II (HTML, XML y CSS)
float: right;
width: 40%;
text-align: right;
footer nav{
width: auto;
footer nav a{
width: auto;
footer nav ul li a{
width: auto;
padding: 20px 0;
text-align: center;
color: white;
99
Unidad II (HTML, XML y CSS)
100
Unidad II (HTML, XML y CSS)
[Link]
kIlp5JZBR3dYMq?usp=sharing
Tutorial de Genially:
[Link]
[Link]
[Link]
[Link]
[Link]
101
Unidad II (HTML, XML y CSS)
Semana 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
TP Evaluación
Unidad II
TR
102
UNIDAD III (PROGRAMACIÓN DEL LADO DEL CLIENTE)
Unidad III
COMPETENCIA(S) A DESARROLLAR
COMPETENCIAS PREVIAS
Describir las competencias que el estudiante debe de poseer para poder abordar los
contenidos de la presente unidad.
➢ Aula Invertida
➢ Aprendizaje Semipresencial
➢ Aprendizaje Colaborativo
➢ Hiper-personalización
➢ Aprendizaje Experiencial
➢ Micro aprendizaje
➢ Entrenamiento Educativo
➢ Otras…
104
Unidad III
105
Unidad III
En cuanto al lado del servidor, los scripts se ejecutan en el propio servidor, de forma que
se reducen de forma considerable el número de errores a raíz de la compatibilidad; el código
se ejecuta en un determinado servidor haciendo uso de un lenguaje y un software.
Los scripts resultan más seguros en comparación con los del lado del cliente.
La programación del lado del cliente se caracteriza por ejecutarse en el equipo de los
usuarios. A pesar de ser una opción muy ventajosa, presenta una serie de límites de control,
así como determinados problemas tanto con los sistemas operativos como con los
navegadores web. (axarnet, s.f.).
La programación del lado del cliente tiene como principal ventaja que la ejecución de la
aplicación se delega al cliente, con lo cual se evita recargar al servidor de trabajo. El servidor
solo envía el código, y es tarea del browser interpretarlo. El navegador es una especie de
aplicación capaz de interpretar las órdenes recibidas en forma de código HTML
fundamentalmente y convertirlas en las páginas que son el resultado de dicha orden.
(HOPELCHEN, s.f.).
Cuando nosotros pinchamos sobre un enlace hipertexto, en realidad lo que pasa es que
establecemos una petición de un archivo HTML residente en el servidor (un ordenador que
se encuentra continuamente conectado a la red) el cual es enviado e interpretado por
nuestro navegador (el cliente). Así pues, podemos hablar de lenguajes de lado servidor que
son aquellos lenguajes que son reconocidos, ejecutados e interpretados por el propio
servidor y que se envían al cliente en un formato comprensible para él.
Por otro lado, los lenguajes de lado cliente (entre los cuales no sólo se encuentra el HTML
sino también el Java y el Java Script los cuales son simplemente incluidos en el código
HTML) son aquellos que pueden ser directamente “digeridos” por el navegador y no
106
Unidad III
necesitan un pretratamiento. Cada uno de estos tipos tiene por supuesto sus ventajas y sus
inconvenientes. Así, por ejemplo, un lenguaje de lado cliente es totalmente independiente
del servidor, lo cual permite que la página pueda ser albergada en cualquier sitio sin
necesidad de pagar más ya que, por regla general, los servidores que aceptan páginas con
scripts de lado servidor son en su mayoría de pago o sus prestaciones son muy limitadas.
Inversamente, un lenguaje de lado servidor es independiente del cliente por lo que es
mucho menos rígido respecto al cambio de un navegador a otro o respecto a las versiones
del mismo.
HTML
El lenguaje llamado HTML indica al navegador donde colocar cada texto, cada imagen o
cada video y la forma que tendrán estos al ser colocados en la página.
HTML no es más que una serie de etiquetas que se utilizan para definir la forma o estilo
que queremos aplicar a nuestro documento.
JAVASCRIPT
APPLETS DE JAVA
Es otra manera de incluir código a ejecutar en los clientes que visualizan una página web.
Se trata de pequeños programas hechos en Java, que se transfieren con las páginas web
y que el navegador ejecuta en el espacio de la página. Los applets de Java están
programados en Java y precompilados, es por ello que la manera de trabajar de éstos varía
un poco con respecto a los lenguajes de script como JavaScript. Los applets son más
difíciles de programar que los scripts en JavaScript y requerirán unos conocimientos
básicos o medios del lenguaje Java. La principal ventaja de utilizar applets consiste en que
son mucho menos dependientes del navegador que los scripts en JavaScript, incluso
independientes del sistema operativo del ordenador donde se ejecutan. Además, Java es
más potente que JavaScript, por lo que el número de aplicaciones de los applets podrá ser
mayor.
Como desventajas en relación con JavaScript cabe señalar que los applets son más lentos
de procesar y que tienen espacio muy delimitado en la página donde se ejecutan, es decir,
107
Unidad III
no se mezclan con todos los componentes de la página ni tienen acceso a ellos. Es por ello
que con los applets de Java no podremos hacer directamente cosas como abrir ventanas
secundarias, controlar Frames, formularios, capas, etc.
Es un lenguaje de programación de scripts del lado del cliente, pero sólo compatible con
Internet Explorer. Es por ello que su utilización está desaconsejada a favor de JavaScript.
Está basado en Visual Basic, un popular lenguaje para crear aplicaciones Windows. Tanto
su sintaxis como la manera de trabajar están muy inspirados en él. Sin embargo, no todo lo
que se puede hacer en Visual Basic lo podremos hacer en Visual Basic Script, pues este
último es una versión reducida del primero. El modo de funcionamiento de Visual Basic
Script para construir efectos especiales en páginas web es muy similar al utilizado en
Javascript y los recursos a los que se puede acceder también son los mismos: el navegador.
CSS 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… Incluso podemos definir nuestros propios
estilos en un archivo externo a nuestras páginas; así, si en algún momento queremos
cambiar alguno de ellos, automáticamente se nos actualizarán todas las páginas vinculadas
de nuestro sitio.
DHTML
108
Unidad III
En inglés framework se puede traducir como estructura. En el sentido que nos ocupa un
framework sería un marco de trabajo. MVC son las siglas del Modelo- Vista-Controlador, un
paradigma de programación de aplicaciones que separa en tres niveles el trabajo:
➢ El controlador. Es la parte que controla las acciones del usuario y las comunica a
los dos niveles anteriores. (Pérez Martínez, 2015).
109
Unidad III
MVC es, en definitiva, un modelo de trabajo que facilita la creación de aplicaciones web
complejas. Hoy en día esta separación en tres capas de las aplicaciones se realiza con
marcos o plantillas de trabajo (más conocidas como frameworks por su uso en inglés) que
facilitan la creación de aplicaciones MVC generando casi sin esfuerzo el núcleo de las
aplicaciones.
➢ Ruby on Rails. Se trata de un marco de trabajo muy exitoso por la facilidad que tiene
de programar y optimizado para la creación de aplicaciones Web. Se puede ejecutar
en casi cualquier servidor web, basta con instalar el componente correspondiente.
➢ Apache Struts. Uno de los primeros frameworks MVC que existieron para la
plataforma J2EE.
➢ Django. Escrito en Python y pensado para utilizar en ese lenguaje que facilita la
creación de aplicaciones web.
➢ Symfony. Framework escrito para PHP. Uno de los más populares para este
lenguaje.
110
Unidad III
Los programas que se pueden realizar utilizando solamente variables y operadores son una
simple sucesión lineal de instrucciones básicas.
Sin embargo, no se pueden realizar programas que muestren un mensaje si el valor de una
variable es igual a un valor determinado y no muestren el mensaje en el resto de casos.
Tampoco se puede repetir de forma eficiente una misma instrucción, como por ejemplo
sumar un determinado valor a todos los elementos de un array.
Para realizar este tipo de programas son necesarias las estructuras de control de flujo, que
son instrucciones del tipo "si se cumple esta condición, hazlo; si no se cumple, haz esto
otro". También existen instrucciones del tipo "repite esto mientras se cumpla esta
condición".
Si se utilizan estructuras de control de flujo, los programas dejan de ser una sucesión lineal
de instrucciones para convertirse en programas inteligentes que pueden tomar decisiones
en función del valor de las variables. (Uniwebsidad, s.f.)
Estructura if
if(condicion) {
...
}
Si la condición se cumple (es decir, si su valor es true) se ejecutan todas las instrucciones
que se encuentran dentro de {...}. Si la condición no se cumple (es decir, si su valor es false)
no se ejecuta ninguna instrucción contenida en {...} y el programa continúa ejecutando el
resto de instrucciones del script.
Ejemplo:
if(mostrarMensaje) {
alert("Hola Mundo");
}
111
Unidad III
if(mostrarMensaje == true) {
alert("Hola Mundo");
}
La condición que controla el if() puede combinar los diferentes operadores lógicos y
relacionales mostrados anteriormente:
if(!mostrado) {
alert("Es la primera vez que se muestra el mensaje");
}
Los operadores AND y OR permiten encadenar varias condiciones simples para construir
condiciones complejas:
112
Unidad III
La condición anterior está formada por una operación AND sobre dos variables. A su vez,
a la primera variable se le aplica el operador de negación antes de realizar la
operación AND. De esta forma, como el valor de mostrado es false, ¡el valor!
mostrado sería true. Como la variable usuarioPermiteMensajes vale true, el resultado
de !mostrado && usuarioPermiteMensajes sería igual a true && true, por lo que el resultado
final de la condición del if() sería true y por tanto, se ejecutan las instrucciones que se
encuentran dentro del bloque del if().
Estructura if...else
En ocasiones, las decisiones que se deben realizar no son del tipo "si se cumple la
condición, hazlo; si no se cumple, no hagas nada". Normalmente las condiciones suelen
ser del tipo "si se cumple esta condición, hazlo; si no se cumple, haz esto otro".
if(condicion) {
...
}
else {
...
}
Si la condición se cumple (es decir, si su valor es true) se ejecutan todas las instrucciones
que se encuentran dentro del if(). Si la condición no se cumple (es decir, si su valor es false)
se ejecutan todas las instrucciones contenidas en else { }.
Ejemplo:
Si el valor de la variable edad es mayor o igual que el valor numérico 18, la condición
del if() se cumple y por tanto, se ejecutan sus instrucciones y se muestra el mensaje "Eres
mayor de edad". Sin embargo, cuando el valor de la variable edad no es igual o mayor
113
Unidad III
que 18, la condición del if() no se cumple, por lo que automáticamente se ejecutan todas
las instrucciones del bloque else { }. En este caso, se mostraría el mensaje "Todavía eres
menor de edad".
if(nombre == "") {
alert("Aún no nos has dicho tu nombre");
}
else {
alert("Hemos guardado tu nombre");
}
La condición del if() anterior se construye mediante el operador ==, que es el que se emplea
para comparar dos valores (no confundir con el operador = que se utiliza para asignar
valores). En el ejemplo anterior, si la cadena de texto almacenada en la variable nombre es
vacía (es decir, es igual a "") se muestra el mensaje definido en el if(). En otro caso, se
muestra el mensaje definido en el bloque else { }.
Estructura for
Las estructuras if y if...else no son muy eficientes cuando se desea ejecutar de forma
repetitiva una instrucción. Por ejemplo, si se quiere mostrar un mensaje cinco veces, se
podría pensar en utilizar el siguiente if:
var veces = 0;
114
Unidad III
if(veces < 4) {
alert("Mensaje");
veces++;
}
Se comprueba si la variable veces es menor que 4. Si se cumple, se entra dentro del if(),
se muestra el mensaje y se incrementa el valor de la variable veces. Así se debería seguir
ejecutando hasta mostrar el mensaje las cinco veces deseadas.
Sin embargo, el funcionamiento real del script anterior es muy diferente al deseado, ya que
solamente se muestra una vez el mensaje por pantalla. La razón es que la ejecución de la
estructura if() no se repite y la comprobación de la condición sólo se realiza una vez,
independientemente de que dentro del if() se modifique el valor de la variable utilizada en
la condición.
La estructura for permite realizar este tipo de repeticiones (también llamadas bucles) de una
forma muy sencilla. No obstante, su definición formal no es tan sencilla como la de if():
var i = 0;
115
Unidad III
Por tanto, en primer lugar se crea la variable i y se le asigna el valor de 0. Esta zona de
inicialización solamente se tiene en consideración justo antes de comenzar a ejecutar el
bucle. Las siguientes repeticiones no tienen en cuenta esta parte de inicialización.
i<5
i++
Normalmente, la variable que controla los bucles for se llama i, ya que recuerda a la palabra
índice y su nombre tan corto ahorra mucho tiempo y espacio.
El ejemplo anterior que mostraba los días de la semana contenidos en un array se puede
rehacer de forma más sencilla utilizando la estructura for:
Estructura for…in
116
Unidad III
for(indice in array) {
...
}
Si se quieren recorrer todos los elementos que forman un array, la estructura for...in es la
forma más eficiente de hacerlo, como se muestra en el siguiente ejemplo:
for(i in dias) {
alert(dias[i]);
}
La variable que se indica como indice es la que se puede utilizar dentro del
bucle for...in para acceder a los elementos del array. De esta forma, en la primera repetición
del bucle la variable i vale 0 y en la última vale 6.
Esta estructura de control es la más adecuada para recorrer arrays (y objetos), ya que evita
tener que indicar la inicialización y las condiciones del bucle for simple y funciona
correctamente cualquiera que sea la longitud del array. De hecho, sigue funcionando igual
aunque varíe el número de elementos del array.
La creación del Document Object Model o DOM es una de las innovaciones que más ha
influido en el desarrollo de las páginas web dinámicas y de las aplicaciones web más
complejas. DOM permite a los programadores web acceder y manipular las páginas XHTML
como si fueran documentos XML. De hecho, DOM se diseñó originalmente para manipular
de forma sencilla los documentos XML. A pesar de sus orígenes, DOM se ha convertido en
una utilidad disponible para la mayoría de lenguajes de programación (Java, PHP,
JavaScript) y cuyas únicas diferencias se encuentran en la forma de implementarlo.
Árboles de Nodos
117
Unidad III
sucesión de caracteres, por lo que es un formato muy difícil de manipular. Por ello, los
navegadores web transforman automáticamente todas las páginas web en una estructura más
eficiente de manipular. Esta transformación la realizan todos los navegadores de forma
automática y nos permite utilizar las herramientas de DOM de forma muy sencilla. El motivo
por el que se muestra el funcionamiento de esta transformación interna es que condiciona el
comportamiento de DOM y por tanto, la forma en la que se manipulan las páginas. DOM
transforma todos los documentos XHTML en un conjunto de elementos llamados nodos, que
están interconectados y que representan los contenidos de las páginas web y las relaciones
entre ellos. Por su aspecto, la unión de todos los nodos se llama "árbol de nodos".
La siguiente página XHTML sencilla:
Figura 40. Árbol de nodos generado automáticamente por DOM a partir del código XHTML de la página
En el esquema anterior, cada rectángulo representa un nodo DOM y las flechas indican las
relaciones entre nodos. Dentro de cada nodo, se ha incluido su tipo (que se verá más
adelante) y su contenido. La raíz del árbol de nodos de cualquier página XHTML siempre
es la misma: un nodo de tipo especial denominado "Documento". A partir de ese nodo raíz,
cada etiqueta XHTML se transforma en un nodo de tipo "Elemento". La conversión de
118
Unidad III
etiquetas en nodos se realiza de forma jerárquica. De esta forma, del nodo raíz solamente
pueden derivar los nodos HEAD y BODY. A partir de esta derivación inicial, cada etiqueta
XHTML se transforma en un nodo que deriva del nodo correspondiente a su "etiqueta
padre". La transformación de las etiquetas XHTML habituales genera dos nodos: el primero
es el nodo de tipo "Elemento" (correspondiente a la propia etiqueta XHTML) y el segundo
es un nodo de tipo "Texto" que contiene el texto encerrado por esa etiqueta XHTML.
Tipos de Nodos
La especificación completa de DOM define 12 tipos de nodos, aunque las páginas XHTML
habituales se pueden manipular manejando solamente cuatro o cinco tipos de nodos:
▪ Document, nodo raíz del que derivan todos los demás nodos del árbol. ▪ Element,
representa cada una de las etiquetas XHTML. Se trata del único nodo que puede contener
atributos y el único del que pueden derivar otros nodos.
▪ Attr, se define un nodo de este tipo para representar cada uno de los atributos de las
etiquetas XHTML, es decir, uno por cada par atributo=valor.
▪ Text, nodo que contiene el texto encerrado por una etiqueta XHTML.
119
Unidad III
Actividades de aprendizaje
Actividad 1:
Prácticas
Práctica 2: Realizar ejercicios con elementos básicos de texto, vínculos, listas, tablas,
objetos, imágenes, aplicaciones que reaccione a eventos y validarlos con rutinas del lado
del cliente mediante el Framework instalado, mostrando los resultados mediante un reporte
de práctica.
Valor: 30%
120
Unidad III
Semana 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
TP Evaluación
Unidad III
TR
121
UNIDAD IV (PROGRAMACIÓN DEL LADO DEL SERVIDOR)
COMPETENCIA(S) A DESARROLLAR
COMPETENCIAS PREVIAS
➢ Aula Invertida
➢ Aprendizaje Semipresencial
➢ Aprendizaje Colaborativo
➢ Hiper-personalización
➢ Aprendizaje Experiencial
➢ Micro aprendizaje
➢ Entrenamiento Educativo
➢ Otras…
PHP es un lenguaje interpretado del lado del servidor que se caracteriza por su potencia,
versatilidad, robustez y modularidad. Los programas escritos en PHP son embebidos
directamente en el código HTML y ejecutados por el servidor web a través de un intérprete
antes de transferir al cliente que lo ha solicitado un resultado en forma de código HTML
puro. Al ser un lenguaje que sigue la corriente open source, tanto el intérprete como su
código fuente son totalmente accesibles de forma gratuita en la red. (Bahit, 2010).
Por su flexibilidad, PHP resulta un lenguaje muy sencillo de aprender; especialmente para
programadores familiarizados con lenguajes como C, Perl o Java, debido a las similitudes
de sintaxis entre ellos. Por supuesto, es un lenguaje multiplataforma; los programas
funcionan igual sobre diferentes plataformas, trabajando sobre la mayoría de servidores
web y estando preparado para interactuar con más de 20 tipos de bases de datos.
Opción #1 (recomendada):
Por otro lado, la utilización de esta alternativa, trae aparejadas las siguientes ventajas:
Opción #2:
<?
?>
Esta alternativa, representa una forma abreviada de las etiquetas anteriores. Utilizarla,
requiere de configurar el archivo [Link], estableciendo el valor de short_open_tag a
On.
Impresión en pantalla
En PHP, existen varias funciones para imprimir contenido en pantalla. Las dos funciones
básicas son echo y print.
<?php
?>
?>
Una variable es elemento destinado a almacenar datos. Ésta, puede almacenar datos
numéricos (enteros o flotantes), cadenes de texto, booleano (verdadero [true] o falso
[false]), etc.
Una variable se define (es decir, se crea), se le asigna un valor (es decir, se almacenan
datos), puede modificarse (cambiar de valor) y eliminarse.
Definición de una variable: Las variables en PHP se definen anteponiendo el sigo dólar
($) seguido del nombre que se le quiera dar a esta.
Asignación de valores: para asignar valor a una variable, se coloca el sigo igual (=)
segudio del valor.
Tipos de datos: cuando el valor de una variable, es una cadena de texto, éste, debe
escribirse entre comillas dobles ("), aunque también entre comillas simples (').
El autor (López Quijado, 2014) menciona que los condicionales se emplean para determinar
si una determinada sentencia o grupo de sentencias se ejecutarán o no, en base al
cumplimiento de determinadas condiciones. La estructura condicional más simple obedece
al siguiente esquema:
if (condición) {
sentencias;
La palabra reservada if () evalúa la condición que aparece entre paréntesis. Si ésta resulta
ser cierta, se ejecuta el conjunto de sentencias que aparecen entre { y }. Si la condición no
es cierta, estas sentencias no se ejecutan.
Mire el ejemplo:
<?php
$edad=34;
?>
Fíjese en que, en primer lugar, declaramos una variable asignándole un valor. En realidad,
esta variable podría proceder de cualquier otro proceso en este script o en cualquier otro,
pero para los efectos didácticos, así nos vale. A continuación, tenemos dos condicionales.
En el primero se evalúa si el valor de la variable es mayor que 18 (observe que se usa el
operador comparativo > -mayor que-). Como la condición resulta ser cierta, la sentencia
que muestra el texto correspondiente se ejecuta. En el segundo condicional se comprueba
si el valor es mayor que 65. Como no lo es, la sentencia comprendida en el condicional no
se ejecuta.
Bubles
Los bucles son unas estructuras de control que permiten que una secuencia determinada
de instrucciones, conocida genéricamente como cuerpo del bucle, se ejecute más de una
vez. Estas estructuras son muy útiles para repasar el contenido de un fichero, una matriz,
una base de datos, etc. Dentro de los bucles se consideran dos tipos principales: aquéllos
que se ejecutan atendiendo a una condición numérica y aquéllos que se ejecutan en función
de una condición no necesariamente numérica. A continuación, vemos los dos tipos
detalladamente.
En este esquema, inicio es el valor inicial que se le asigna a la variable de control, condición
establece el valor que se debe alcanzar para que se deje de ejecutar el bucle, y paso es la
forma en que se modifica la variable de control.
while (condición) {
El bucle foreach
Desde la versión 4 de PHP se incluyó una instrucción específica para crear un bucle que
permita recorrer una matriz completamente de una forma más fácil. Se trata de foreach ().
Este bucle se repite para cada elemento de la matriz (en inglés las palabras “for each”
significan “para cada uno”).
Interrupciones y reiteraciones
Existen dos sentencias específicas para alterar la ejecución de un bucle. Se trata de break
y continue.
El uso de break aquí, en los bucles, interrumpe la ejecución del bucle aunque éste no se
haya completado. La sentencia continue, por el contrario, interrumpe la ejecución de la
iteración actual, pasando a la siguiente.
Un formulario sencillo con dos campos a rellenar y un botón para enviar en HTML es de la
siguiente forma:
Cuando un usuario rellena los datos y hace click en enviar, los datos del formulario se
envían para ser procesados al archivo [Link]. Los datos se envían a través de HTTP
con el método HTTP Post.
Una vez los datos están en [Link] pueden mostrarse, guardarse en una base de
datos o lo que se necesite.
Estos han sido dos ejemplos muy sencillos para ver el funcionamiento básico de un
formulario. Siempre que se crean formularios hay que tener muy en cuenta la seguridad, y
para ello se utiliza la validación de formularios.
Las superglobals $_GET y $_POST sirven para coleccionar datos de formularios, y vamos
a ver las diferencias a continuación.
GET y POST
$_GET y $_POST son variables superglobales que forman arrays de keys y values, donde
los keys son los nombres del formulario (atributo "name") y los values son los datos de
entrada de los usuarios. El hecho de que sean superglobals hace que sean accesibles
desde el script independientemente del ámbito.
$_GET es un array de variables que se pasan al script a través de los parámetros de URL.
La información que se envía es visible para todo el mundo y tiene limitada la cantidad de
información que se puede enviar a 2000 caracteres. Las URLs con los datos enviados
pueden guardarse en marcadores, lo que puede ser útil en ciertos casos. $_GET sólo se
emplea para el envío de información reducida y no sensible.
$_POST es un array de variables que se pasan al script a través del método HTTP POST.
La información que se envía no es visible para los demás ya que los nombres y variables
van embebidas en el body del HTTP request. No tiene límites en la cantidad de información
a enviar. Soporta datos de entrada multi-part binary a la hora se subir archivos al servidor
(lo que permite subir múltiples archivos a la vez).
Tipos de elementos
Los 10 tipos de elementos más importantes para los formularios HTML con PHP son:
Figura [Link] más importantes para los formularios HTML con PHP
Validación
Existen dos formas de validación de formularios: en el lado del cliente y en el lado del
servidor. En el lado del cliente la validación suele ser mediante JavaScript, es más rápida y
evita enviar más trabajo al servidor.
En el lado del servidor se emplea PHP para verificar que se envían valores correctos, es
más seguro, pero es más lento y da un poco de trabajo al servidor. En este artículo vamos
a ver algún ejemplo de esta segunda forma.
El siguiente es un sencillo formulario algo más complejo con los siguientes datos: Nombre,
Contraseña, Educación, Nacionalidad, Idiomas, Email y Sitio web:
En este ejemplo todas las acciones de validar, enviar y recibir datos se hacen en el mismo
archivo [Link].
Primero vamos a crear un filtrado común para todos los campos con la función filtrado():
El array de errores $errores guarda cada uno de los errores que se registran para luego
mostrarlos. Si el array tiene algún elemento, el formulario no será aceptado. Para mostrarlos
podemos hacerlo así:
Se incluye un input del tipo hidden que limita el tamaño máximo del archivo que se puede
subir (en bytes).
Una subida múltiple de archivos en PHP en la práctica se hace normalmente con ayuda
de JavaScript. Una buena librería para subir archivos es DropzoneJS.
En el formulario HTML lo único que cambia es que se añade un atributo múltiple y que en
el atributo name del input file se añade corchetes para indicar que es un array:
En cuanto al backend, omitiendo validaciones esta puede ser una forma de hacerlo:
Clase
Una clase es un modelo que se utiliza para crear objetos que comparten un mismo
comportamiento, estado e identidad.
Metáfora
Persona es la metáfora de una clase (la abstracción de Juan, Pedro, Ana y María), cuyo
comportamiento puede ser caminar, correr, estudiar, leer, etc. Puede estar en estado
despierto, dormido, etc. Sus características (propiedades) pueden ser el color de ojos, color
de pelo, su estado civil, etc.
class Persona {
# Propiedades
#Métodos
Objeto
Método
Es el algoritmo asociado a un objeto que indica la capacidad de lo que éste puede hacer.
function caminar() {
#...
Evento y Mensaje
Las propiedades y atributos, son variables que contienen datos asociados a un objeto.
$nombre = 'Juan';
Abstracción
Encapsulamiento
Reúne al mismo nivel de abstracción, a todos los elementos que puedan considerarse
pertenecientes a una misma entidad.
Modularidad
Característica que permite dividir una aplicación en varias partes más pequeñas
(denominadas módulos), independientes unas de otras.
Ocultación (aislamiento)
Los objetos están aislados del exterior, protegiendo a sus propiedades para no ser
modificadas por aquellos que no tengan derecho a acceder a las mismas.
Polimorfismo
Herencia
Es la relación existente entre dos o más clases, donde una es la principal (madre) y otras
son secundarias y dependen (heredan) de ellas (clases “hijas”), donde a la vez, los objetos
heredan las características de los objetos de los cuales heredan.
Recolección de basura
Objetos en PHP 5
Una vez que las clases han sido declaradas, será necesario crear los objetos y utilizarlos,
aunque hemos visto que algunas clases, como las clases abstractas son solo modelos para
otras, y por lo tanto no necesitan instanciar al objeto.
Para instanciar una clase, solo es necesario utilizar la palabra clave new. El objeto será
creado, asignando esta instancia a una variable (la cual, adoptará la forma de objeto).
Lógicamente, la clase debe haber sido declarada antes de ser instanciada, como se
muestra a continuación:
# declaro la clase
class Persona {
#...
Propiedades en PHP 5
class Persona {
var $nombre;
var $edad;
var $genero;
Propiedades públicas
class Persona {
public $nombre;
public $genero;
}
Propiedades privadas
Éstas solo pueden ser accedidas por la clase que las definió.
class Persona {
public $nombre;
$edad;
Propiedades protegidas
Las propiedades protegidas pueden ser accedidas por la propia clase que la definió, así
como por las clases que la heredan, pero no, desde otras partes de la aplicación. Éstas, se
definen anteponiendo la palabra clave protected al nombre de la variable:
class Persona {
public $nombre;
public $genero;
private $edad;
protected $pasaporte;
Propiedades estáticas
}
Accediendo a la propiedad de un objeto
Para acceder a las propiedad de un objeto, existen varias maneras de hacerlo. Todas ellas,
dependerán del ámbito desde el cual se las invoque así como de su condición y visibilidad.
return $this->nombre;
print $persona_a_positivo->nombre;
Para acceder a una propiedad pública y estática el objeto no necesita ser instanciado,
permitiendo así, el acceso a dicha variable mediante la siguiente sintáxis:
Clase::$variable_estática
print PersonaAPositivo::$tipo_sangre;
El autor (López Quijado, 2014) menciona que para crear un objeto necesitamos tener lo
que se llama una clase. Podemos considerar las clases como moldes, a partir de los que
se crean los objetos. Volviendo a las analogías con el mundo real, su coche está formado
por una carrocería, que ha sido fabricada en unos moldes de estampación. Otros
elementos, como el bloque del motor o el volante, han sido fabricados en unos moldes de
fusión. Estos moldes existen también en el mundo de la programación. A partir de estos
moldes se crean los objetos.
Su coche tiene unas características que lo definen. Usa tal o cual combustible, es de un
determinado color, tiene un tamaño concreto, etc. Los objetos de software también tienen
unas características, en forma de variables, que se llaman propiedades. El coche
implementa determinadas funcionalidades. Usted puede poner el motor en marcha,
acelerar, frenar, girar las ruedas, etc. Los objetos hacen uso de unas funciones para lograr
su objetivo. Éstas se llaman métodos. Cuando se fabricó su coche, las piezas de la
carrocería, de la mecánica y del interior salieron con la misma forma que tenían los
respectivos moldes. Esto se conoce, en programación, como herencia. Los objetos tienen
las mismas propiedades y métodos que las clases a partir de las que han sido creados.
Además, a partir de una clase, se pueden crear otras. Estas clases, creadas a partir de
otras, también heredan sus propiedades y métodos.
CREACIÓN Y USO
class nombreDeLaClase {
propiedades
métodos
A partir de que la clase haya sido definida podemos crear todos los objetos que necesitemos
de dicha clase. Para ello usamos el operador new, tal como se ve en la siguiente sintaxis
genérica:
Ejemplo:
Figura 59. Clase destinada a sumar dos números.
Sintaxis:
);
Ejemplo:
);
Explicación:
CREATE TABLE productos
Crear un campo llamado producto, de tipo cadena de texto de longitud variable, con una
longitud máxima de 125 caracteres
descripcion BLOB,
Crear un campo precio de tipo numérico de longitud máxima de 6 digítos de los cuales, solo
2 pueden ser decimales
en_stock BOOL
INSERT INTO
Ejemplo:
INSERT INTO
Explicación:
INSERT INTO
Insertar un nuevo registro en los campos producto, precio y en stock de la tabla productos
Con los valores “Bolsa de dormir para alta montaña”, 234.65 y verdadero, respectivamente
en cada uno de los campos indicado.
Seleccionar registros
Sintaxis:
FROM tabla;
Ejemplo:
FROM productos;
Explicación:
SELECT producto, precio
De la tabla productos
Modificar registros
Sintaxis:
UPDATE tabla
Ejemplo:
UPDATE productos
SET en_stock = FALSE,
precio = 0;
UPDATE productos
Explicación:
precio = 0;
y el campo precio a 0
Eliminar registros
Sintaxis:
Ejemplo:
Explicación:
Actividades de aprendizaje
Realizar un cuadro sinóptico de forma digital sobre la unidad 3, apoyándote en este material
de lectura proporcionado, puedes complementar con otras fuentes bibliográficas.
Valor: 30%
Prácticas
Valor: 40%
assets/css e img
paginas/
149
Unidad IV
Separar código
[Link]
[Link]
150
Unidad IV
[Link]
[Link]
151
Unidad IV
MODIFICACIONES EN [Link]
Eliminar la tabla
Modificar botón
[Link]
152
Unidad IV
[Link]
Crear BD en phpmyadmin
153
Unidad IV
con_bd.php
[Link]
154
Unidad IV
Modificar [Link]
if(isset($_POST['registrar'])){
$nombre = trim($_POST['nombre']);
$email = trim($_POST['email']);
$tel = trim($_POST['tel']);
$mensaje = trim($_POST['mensaje']);
trim elimina espacios en blanco u otro caracter al inicio y final de cada cadena
155
Unidad IV
Modificar estilos
156
Unidad IV
php/artí[Link]
php/agregar_articulo.php
157
Unidad IV
MODIFICACION EN ESTILOS
ASIDE
158
Unidad IV
php/mostrar_articulos.php
159
Unidad IV
[Link]
php/modificar_articulo.php
160
Unidad IV
php/proceso_modificar.php
161
Unidad IV
php/eliminar_articulo.php
162
Unidad IV
INICIO DE SESION
Tabla login
163
Unidad IV
php/[Link]
164
Unidad IV
php/[Link]
php/bienvenido_admin.php
165
Unidad IV
MODIFICACIONES EN [Link]
Eliminar la tabla
Modificar botón
166
Unidad IV
Modificar [Link]
if(isset($_POST['registrar'])){
$nombre = trim($_POST['nombre']);
$email = trim($_POST['email']);
$tel = trim($_POST['tel']);
$mensaje = trim($_POST['mensaje']);
trim elimina espacios en blanco u otro caracter al inicio y final de cada cadena
167
Unidad IV
Modificar estilos
168
Unidad IV
Semana 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
TP Evaluación
Unidad IV
TR
169
UNIDAD V (CÓMPUTO EN LA NUBE Y SERVICIOS)
Unidad V
COMPETENCIA(S) A DESARROLLAR
COMPETENCIAS PREVIAS
➢ Aula Invertida
➢ Aprendizaje Semipresencial
➢ Aprendizaje Colaborativo
➢ Hiper-personalización
➢ Aprendizaje Experiencial
➢ Micro aprendizaje
➢ Entrenamiento Educativo
➢ Otras…
171
Unidad V
172
Unidad V
173
Unidad V
del ciclo de vida del almacenamiento en la nube, puede realizar potentes tareas
de administración de la información, incluida la separación por niveles
automatizada o el bloqueo de datos para cumplir con los requisitos de
conformidad.
Garantizar que los datos críticos de su empresa se mantienen seguros, a salvo y disponibles
es algo fundamental. A la hora de considerar el almacenamiento de datos en la nube,
existen varios requisitos fundamentales.
Durabilidad. Los datos deberían almacenarse de forma redundante, a poder ser en varias
instalaciones y en varios dispositivos de cada instalación. Los desastres naturales, los
errores humanos o los fallos mecánicos no deberían provocar una pérdida de los datos.
Disponibilidad. Todos los datos deberían estar disponibles cuando es necesario, pero existe
una diferencia entre los datos de producción y los archivos. El almacenamiento en la nube
ideal aporta el equilibrio ideal entre tiempos de recuperación y costo.
Seguridad. Lo ideal es cifrar todos los datos, tanto si están en reposo como en tránsito. Los
permisos y los controles de acceso deberían funcionar del mismo modo en la nube que en
el almacenamiento on-premise.
174
Unidad V
Hay tres tipos diferentes de nubes: pública, privada e híbrida. Todos ellas varían en términos
del nivel de administración que se requiere por parte del cliente, así como el nivel de
seguridad que proporcionan.
Nube pública
Nube privada
Una nube privada es aquella utilizada exclusivamente por una organización. Podría estar
alojada en las instalaciones de la organización o en el centro de datos del proveedor de la
nube. Una nube privada proporciona el más alto nivel de seguridad y control.
Nube híbrida
Como su nombre lo indica, una nube híbrida es una combinación de las nubes pública y
privada. En general, el cliente alojará las aplicaciones críticas para su empresa en sus
propios servidores a fin de tener mayor seguridad y control, mientras que sus aplicaciones
secundarias se almacenarán en las instalaciones del proveedor de la nube.
175
Unidad V
Nubes múltiples
(Oracle, 2021)
Los servicios de nube son infraestructuras, plataformas o sistemas de software que los
proveedores externos alojan y que se ponen a disposición de los usuarios a través de
Internet. Estos facilitan el flujo de datos de los usuarios a través de Internet, desde los
clientes de front-end (p. ej.: los servidores, las tabletas y las computadoras de escritorio o
portátiles, es decir, cualquier sistema de hardware en los extremos de los usuarios) hasta
los sistemas de los proveedores, y viceversa. Para acceder a los servicios de nube, los
usuarios no necesitan más que una computadora, un sistema operativo y una conexión de
red a Internet.
Todas las infraestructuras, las plataformas, los sistemas de software o las tecnologías a los
que acceden los usuarios a través de Internet sin tener que descargar sistemas de software
adicionales se consideran servicios de nube, al igual que las siguientes soluciones como
servicio.
Tipos de servicios
• IaaS
• PaaS
La Plataforma como servicio (PaaS) es una modalidad del cloud computing en la cual un
tercero brinda el sistema de hardware y una plataforma de software de aplicaciones. La
PaaS es ideal principalmente para los desarrolladores y los programadores, ya que permite
que el usuario desarrolle, ejecute y gestione sus propias aplicaciones sin tener que diseñar
ni mantener la infraestructura ni la plataforma que suelen estar relacionadas con el proceso.
176
Unidad V
Por ejemplo, supongamos que tiene una gran innovación en mente y escribió el código de
una aplicación que facilitará nuestras vidas y ejecutará ciertas tareas. Está entusiasmado
con la idea, con lo que puede hacer y cómo podría evolucionar. Para evitar el estrés
adicional de instalar el hardware on-premise, realizar mantenimiento en los servidores,
mantener actualizado el software de la infraestructura y configurar una plataforma
personalizada sobre la cual se puede diseñar la aplicación, puede recurrir a un proveedor
de PaaS que aloje la plataforma y le ofrezca el entorno necesario para ejecutar su código.
• SaaS
El software como servicio (SaaS) es una forma de cloud computing que ofrece a los
usuarios una aplicación en la nube junto con toda su infraestructura de TI y plataformas
subyacentes. Puede ser la solución ideal para las empresas, ya sean grandes o pequeñas,
o las personas con las siguientes características:
La implementación de SaaS permite reducir los costos iniciales de los usuarios. Esto se
debe a que ya no es necesario adquirir sistemas de software todo el tiempo ni invertir en
una infraestructura de TI sólida y on-premise, como sí ocurre con el software tradicional.
Sin embargo, se recomienda que los usuarios inviertan en sistemas de hardware de red
rápidos, ya que la velocidad de conexión a Internet determina el rendimiento del servicio.
Algunos ejemplos de SaaS son los servicios orientados a los consumidores, como
Google Docs y Microsoft Office 365, y los servicios empresariales que ofrecen sistemas de
software de gestión de recursos humanos, sistemas de gestión de contenido, herramientas
de gestión de las relaciones con los clientes y entornos de desarrollo integrado (IDE).
177
Unidad V
• FaaS
Gracias a la FaaS, los desarrolladores pueden diseñar, ejecutar y gestionar esos paquetes
de aplicaciones como funciones, sin tener que mantener su propia infraestructura.
La FaaS es una forma de implementar la informática sin servidor, donde los desarrolladores
escriben la lógica empresarial que luego se ejecuta en los contenedores de Linux totalmente
gestionados por una plataforma.
Por lo general, esa plataforma se encuentra en la nube, pero el modelo se está expandiendo
para incluir implementaciones on-premise e híbridas.
Una función es una parte del sistema de software que ejecuta la lógica empresarial. Las
aplicaciones pueden estar compuestas por varias funciones.
El uso de un modelo FaaS es una forma de diseñar aplicaciones con una arquitectura sin
servidor. Sin embargo, debido a que el paradigma de la informática sin servidor es cada vez
más popular, los desarrolladores buscan soluciones que admitan el desarrollo de
microservicios de este tipo y de contenedores sin estado.
178
Unidad V
• AWS Lambda
• Google Cloud Functions
• Microsoft Azure Functions (open source)
• OpenFaaS (open source)
La FaaS ofrece a los desarrolladores una abstracción para que ejecuten las aplicaciones
en respuesta a ciertos eventos, sin tener que gestionar servidores. Por ejemplo, al cargar
un archivo podría activarse un código personalizado que transcodifique el archivo a varios
formatos.
Las soluciones de PaaS modernas ofrecen capacidades sin servidor como parte de los
flujos de trabajo comunes que los desarrolladores pueden utilizar para implementar
aplicaciones, lo cual atenúa las diferencias entre la PaaS y la FaaS.
De hecho, las aplicaciones modernas estarán compuestas por una combinación de estas
soluciones: funciones, microservicios y servicios de ejecución prolongada.
Hay limitaciones arquitectónicas que impiden obtener algunos de estos beneficios, como
los límites de tiempo en la ejecución de una función, por lo cual una función debe ser un
elemento que pueda iniciarse y ejecutarse rápidamente.
179
Unidad V
Un servicio basado en eventos que necesita escalar horizontalmente puede funcionar bien
como una función, así como aplicaciones de RESTful.
La FaaS funciona correctamente para las operaciones de gran volumen, las cargas de
trabajo que solo ocurren de vez en cuando, como la elaboración de informes, el
procesamiento de imágenes o cualquier tarea programada. Los casos de uso comunes de
FaaS son el procesamiento de datos, los servicios de IoT y las aplicaciones móviles o web.
Puede diseñar una aplicación completamente sin servidor utilizando la FaaS, o conformar
una aplicación de microservicios parcialmente sin servidor y parcialmente tradicionales.
Beneficios de la FaaS
180
Unidad V
Estos patrones de diseño son útiles para crear aplicaciones confiables, escalables y
seguras en la nube. (Microsoft, 2018).
Cada patrón describe el problema al que hace frente, las consideraciones sobre su
aplicación y un ejemplo basado en Microsoft Azure. La mayoría incluye ejemplos de código
o fragmentos de código que muestran cómo implementar el patrón en Azure. Sin embargo,
la mayoría de los patrones es importante para todos los sistemas distribuidos, tanto si están
hospedados en Azure como en otras plataformas en la nube.
Administración de datos
Diseño e implementación
Mensajería
181
Unidad V
Catálogo de Patrones
CATÁLOGO DE PATRONES
Circuit Breaker Controla los errores que pueden tardar una Confiabilidad
cantidad variable de tiempo en
182
Unidad V
CATÁLOGO DE PATRONES
183
Unidad V
CATÁLOGO DE PATRONES
Excelencia operativa
184
Unidad V
CATÁLOGO DE PATRONES
Leader Election Coordina las acciones realizadas por una Diseño e implementación,
colección de instancias de tareas de
colaboración de una aplicación
distribuida mediante la elección de una Confiabilidad
instancia como líder que asume la
responsabilidad de administrar las
demás instancias.
Pipes and Filters Desglosa una tarea que realiza un Diseño e implementación,
procesamiento complejo en una serie de
elementos independientes que se
pueden volver a utilizar. Mensajería
185
Unidad V
CATÁLOGO DE PATRONES
Queue-Based Usa una cola que actúa como búfer entre Confiabilidad
Load Leveling una tarea y un servicio que invoca para
equilibrar cargas pesadas intermitentes.
Mensajería,
Resistencia,
186
Unidad V
CATÁLOGO DE PATRONES
Valet Key Usa un token o clave que proporciona a los Administración de datos,
clientes acceso directo restringido a un
recurso o servicio específico.
Seguridad
Figura 62. Catálogo de Patrones
Los estándares para los servicios de Computación en la Nube, pueden ser divididos en dos
clases: estándares prescriptivos y estándares evaluativos. Los primeros se refieren a los
estándares de comunicaciones, tales como los protocolos TCP, IP, SNMP, HTTP, etc. De
otra parte, los estándares evaluativos se refieren a estándares de Calidad de los sistemas
de Cloud Computing, los cuales se encargan de describir y evaluar los procedimientos
seguidos en los procesos en general, como es el caso de la familia de estándares ISO 9000,
y procedimientos específicos para seguridad de la información como los de la familia ISO
27000. Algunos aspectos de Calidad de los proveedores de Servicios de Cloud Computing
incluyen características medibles como: el tiempo de actividad, el rendimiento, la
187
Unidad V
• UIT-T Y.3510: Esta Recomendación identifica los requisitos para las capacidades de
infraestructura en la nube para apoyar los servicios de nube. El alcance de esta
Recomendación incluye: visión general de la infraestructura de la nube, los requisitos para
los recursos informáticos, los requisitos de recursos de la red, los requisitos de recursos de
almacenamiento, y los requisitos para la abstracción y control de recursos. La abstracción
y control de los recursos físicos son medios esenciales para alcanzar a la carta y las
características elásticas de infraestructura Cloud.
188
Unidad V
• UIT-T [Link] | ISO / IEC 17788: Información general y vocabulario de Cloud Computing.
Esta Recomendación proporciona una visión general de la computación en nube, junto con
un conjunto de términos, definiciones y conceptos. Es aplicable a todo tipo de organización
(por ejemplo, empresas comerciales, agencias gubernamentales, organizaciones sin fines
de lucro).
• UIT-T [Link] | ISO / IEC 17789: Esta Norma Internacional especifica la arquitectura de
referencia de Cloud Computing.
• Aplicación / CDMI-objeto
• Aplicación / CDMI-contenedor
• Aplicación / CDMI-dominio
• Aplicación / CDMI-capacidad
• Aplicación / CDMI-cola
189
Unidad V
La CDMI propone un grupo de interfaces funcionales entre datos y la gestión de los mismos
(control) para crear, editar, actualizar y borrar los datos en un almacenamiento en la nube.
Otro concepto es el estándar de metadatos, Los metadatos facilitan el flujo de trabajo
convirtiendo datos automáticamente de un formato a otro. Para eso es necesario que los
metadatos describan el contenido y estructura de los datos. Algunos metadatos hacen
posible una compresión de datos más eficaz. Por ejemplo, si en un vídeo el software sabe
distinguir el primer plano del fondo puede usar algoritmos de compresión diferentes y así
mejorar la cuota de compresión.
• Open Grid Forum (OGF): Es una comunidad abierta comprometida en ir con la rápida
evolución y la adopción de Computación distribuida aplicada. El propósito de este grupo es
la creación de una solución práctica para interconectarse con Infraestructuras de Nubes
expuestas como Servicio (IaaS). Esta comunidad complementa su trabajo con foros
abiertos que construye la comunidad, explora tendencias, comparte buenas prácticas y
consolida estas prácticas en estándares.
• Open Cloud Consortium (OCC): Es una organización sin ánimo de lucro establecida y
dirigida por la Universidad de Illinois en Chicago, que está investigando la creación de
interfaces entre nubes con el objetivo de desarrollar estándares de Compatibilidad. El
objetivo de tales estándares es permitir las transiciones suaves de un servicio Cloud a otro.
Esta organización también está investigando sobre el uso del protocolo UDP-Based Data
Transfer (UDT) en la capa de transporte para lograr el volcado de transferencia de datos de
alta velocidad.
• Cloud Security Alliance: Es una organización sin ánimo de lucro formada para promover
el uso de mejores prácticas para proveer aseguramiento de la seguridad dentro de sistemas
190
Unidad V
Amazon Elastic Compute Cloud (Amazon EC2) es un servicio web que proporciona
capacidad informática con tamaño modificable en la nube. Está diseñado para facilitar a los
desarrolladores recursos informáticos escalables y basados en web. Amazon EC2 reduce
el tiempo necesario para obtener y arrancar nuevas instancias de servidor en minutos, lo
que permite escalar rápidamente la capacidad, ya sea aumentándola o reduciéndola, según
cambien sus necesidades. Amazon EC2 cambia el modelo económico de la informática, al
permitir pagar sólo por la capacidad que utiliza realmente. Amazon EC2 presenta un
auténtico entorno informático virtual, que permite utilizar interfaces de servicio web para
iniciar instancias con distintos sistemas operativos, cargarlas con su entorno de
aplicaciones personalizadas, gestionar sus permisos de acceso a la red y ejecutar su
imagen utilizando los sistemas que desee.
Windows Azure
Windows Azure es una plataforma de nube abierta y flexible que permite compilar,
implementar y administrar aplicaciones rápidamente en una red global de centros de datos
administrados por Microsoft. Puede compilar aplicaciones en cualquier lenguaje,
herramienta o marco, permitiendo además integrar sus aplicaciones de nube públicas con
el entorno de TI existente.
Google App Engine permite crear y alojar aplicaciones web en los mismos sistemas
escalables con los que funcionan las aplicaciones de Google. Google App Engine ofrece
procesos de desarrollo y de implementación rápidos, y una administración sencilla, sin
necesidad de preocuparse por el hardware, las revisiones o las copias de seguridad y una
ampliación sin esfuerzos. Las aplicaciones Google App Engine son fáciles de crear, fáciles
de mantener y fáciles de escalar a medida que el tráfico y las necesidades de
191
Unidad V
IBM SmartCloud
SmartCloud ofrece una gestión de cloud con el valor agregado que permite la elección y la
automatización más allá del aprovisionamiento de máquinas virtuales. IBM SmartCloud
Enterprise+ es un entorno Cloud seguro, totalmente administrado y listo para producción,
diseñado para garantizar una alta performance y disponibilidad. SmartCloud Enterprise+
ofrece un control completo de «governance», administración y gestión, permitiendo definir
acuerdos de nivel de servicio (SLA) para alinear las necesidades de negocio y los requisitos
de uso. Ofrece además múltiples opciones de seguridad y aislamiento, integrados en la
infraestructura virtual y de red, manteniendo el cloud separado de otros entornos cloud.
VM Cloud Suite
Openstack
192
Unidad V
En la instancia de diseño del cuadro comparativo que puede descargarse desde aquí, se
seleccionaron un conjunto de características que por diversas razones fueron consideradas
relevantes. A continuación, se define cada una de ellas.
Las imágenes o blueprints son máquinas virtuales que ya disponen de un sistema operativo
y de los aplicativos o marcos de trabajo (frameworks) instalados y preconfigurados, para
que sea más rápido comenzar a trabajar en la plataforma, permitiendo al usuario final
focalizarse en la construcción o despliegue de sus aplicaciones. Un ejemplo popular de
blueprint es llamado “LAMP”, imagen de máquina virtual conformada por Linux Apache
MySQL y PHP.
Esta característica permite definir cuáles son los lenguajes soportados por las distintas
plataformas en análisis.
193
Unidad V
Define cuáles son los medios físicos que ofrecen las plataformas analizadas para la
persistencia de datos.
Define cuáles son los soportes para colas brindados por las diferentes plataformas. Una
cola es una estructura de datos, caracterizada por ser una secuencia de elementos en la
que la operación de inserción push se realiza por un extremo y la operación de extracción
pop por el otro. También se le llama estructura FIFO (del inglés First In First Out), debido a
que el primer elemento en entrar será también el primero en salir.
Servidor Web
Esta característica permite evaluar cuáles son las opciones de servidores web (del inglés
web server) ofrecidas por cada proveedor. Un servidor web o servidor HTTP es un programa
informático que procesa una aplicación del lado del servidor realizando conexiones
bidireccionales y/o unidireccionales, y síncronas o asíncronas con el cliente generando o
cediendo una respuesta en cualquier lenguaje o Aplicación del lado del cliente.
Alternativas de hipervisor
Permite evaluar cuáles son los hipervisores disponibles ofrecidos por cada plataforma. Un
hipervisor (del inglés hypervisor) o monitor de máquina virtual (virtual machine monitor) es
una plataforma que permite aplicar diversas técnicas de control de virtualización para utilizar
al mismo tiempo diferentes sistemas operativos en una misma computadora.
Los caches distribuidos o datagrids son frecuentemente implementados por tablas de hash
distribuidas. Las tablas de hash distribuidas (en inglés, Distributed Hash Tables, DHT) son
una clase de sistemas distribuidos descentralizados que proveen un servicio de búsqueda
similar al de las tablas de hash, donde pares (clave, valor) son almacenados en el DHT, y
cualquier nodo participante puede recuperar de forma eficiente el valor asociado con una
clave dada.
Esta clase de productos ofrecen el beneficio de mejorar los tiempos de respuesta para la
búsqueda de datos, con respecto a los mecanismos de persistencia tradicionales, tales
como base de datos relacionales (BDR), puesto que para acceder a un set de datos alojado
en una BDR generalmente se debe establecer una comunicación TCP y luego acceder al
dato realizando una lectura de disco, lo cual es menos eficiente que los caches distribuidos,
a los cuales generalmente se accede por protocolo TCP y luego se accede al dato
almacenado en memoria RAM (Random Access memory).
194
Unidad V
Las tecnologías Big Data (del idioma inglés grandes datos) hace referencia a los sistemas
que manipulan grandes conjuntos de datos (o data sets). Las dificultades más habituales
en estos casos se centran en la captura, el almacenado, búsqueda, compartición, análisis,
y visualización. La tendencia a manipular ingentes cantidades de datos se debe en muchos
casos a la necesidad de incluir los datos del análisis en un gran conjunto de datos
relacionado, tal es el ejemplo de los análisis de negocio, los datos de enfermedades
infecciosas, la lucha contra el crimen organizado, etc.
(Bocchio, 2015).
▪ Es necesario asegurar que existe una autenticación mutua entre el cliente que
accede a los servicios web y el proveedor de dichos servicios.
▪ Se debe mantener una política de autorización del acceso a recursos y, más
importante, a operaciones y procesos en un entorno en el que debe administrarse y
controlarse el acceso de clientes, proveedores, vendedores, competidores y los
posibles ataques que reciban de personal externo.
▪ Mantener al cliente identificado, de manera que se identifique una sola vez y pueda
acceder a servicios en diversos sistemas, sin que resulte necesario identificarse
nuevamente en cada uno de ellos.
195
Unidad V
A continuación, se ofrece una tabla resumen con los principales elementos de seguridad
dentro de los servicios Web, así como las recomendaciones de madeja al respecto.
196
Unidad V
Los protocolos de seguridad para servicios web comienzan por la especificación WS-
Security que define una arquitectura basada en señales para comunicaciones seguras.
Existen seis principales especificaciones de componentes construidas sobre esa base:
WS-I ha definido su primer Basic Profile 1.0 para servicios web y también ha lanzado sus
casos de ejemplo, ejemplos de aplicaciones y herramientas de prueba para evaluar y
comparar resultados de varias implementaciones de acuerdo con los casos de ejemplo.
Además de WS-I, una buena parte del trabajo de los estándares está siendo realizado por
la Organización para el Avance de Estándares de Informaciones Estructuradas (OASIS), el
World Wide Web Consortium (W3C) y el Grupo de Trabajo de Ingeniería de Internet (IETF).
197
Unidad V
Actividades de aprendizaje
Realizar un mapa mental sobre la unidad V de forma digital, puede apoyarse en este
material de lectura y si gusta complementar con otra fuente bibliográfica.
Valor: 25%
Prácticas
Valor: 15%
198
Unidad V
Semana 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
TP Evaluación
Unidad V
TR
199
Proyecto de Asignatura
PROYECTO DE ASIGNATURA
Planeación: con base en el diagnóstico en esta fase se realiza el diseño del proyecto
por parte de los estudiantes con asesoría del docente; implica planificar un proceso: de
intervención empresarial, social o comunitario, el diseño de un modelo, entre otros, según
el tipo de proyecto, las actividades a realizar los recursos requeridos y el cronograma de
trabajo.
El proyecto a realizar debe ser un sitio web dinámico, el alumno puede elegir la temática.
El sitio web a realizar debe cumplir con todo lo que se vaya realizando en las prácticas de
cada unidad de la asignatura:
*Uso de php
*Uso de css
Los tiempos de revisión del proyecto serán en cada unidad entregando un avance de
acuerdo a los temas correspondientes por unidad.
200
REFERENCIAS
López Quijado, J. (2014). Domine PHP y MySQL, 2a. ed. (R.-M. Editorial, Editor) Obtenido
de [Link]
Mateu, C. (2004). Software Libre. Desarrollo de aplicaciones web. (Primera Edición ed.).
Barcelona: Eureca Media. Obtenido de
[Link]
aplicaciones%[Link]
Molina Rios, J., Zea Ordóñez, M. P., Contento Segarra, M. J., & García Zerda, F. G. (14 de
Marzo de 2018). 3ciencias. Recuperado el 23 de Abril de 2021, de
[Link]
Orós Cabello, J. C. (2014). Diseño de páginas web con XHTML, JavaScript y CSS. Madrid:
RA-MA Editorial. Obtenido de [Link]
Padilla Aguilar, J., & Pinzón Castellanos, J. (2015). ESTÁNDARES PARA CLOUD
COMPUTING: ESTADO DEL ARTE Y ANÁLISIS DE PROTOCOLOS PARA
VARIAS NUBES. Obtenido de
[Link]
DARES%20PARA%20CLOUD%[Link]?sequence=1&isAllowed=y
Pérez, D., & Cobo, A. (2007). PHP y MySQL: Tecnologías para el desarrollo de aplicaciones
web. Madrid, Spain: Ediciones Díaz de Santos. Obtenido de
[Link]
Recio García, J. A. (2016). HTML5, CSS3 y JQuery: Curso práctico. Paracuellos de Jarama,
Madrid: RA-MA. Obtenido de [Link]
Zofío Jiménez, J. (2013). Aplicaciones web. Madrid, Spain: Mcmillan Iberia, S.A. Obtenido
de [Link]
ANEXOS
Anexos
1. Está compuesto por los módulos que incrementa la capa de presentación y que ( )ARPANET
se ejecuta en un servidor web:
2. Permite el intercambio de información en las páginas web. Opera por petición y ( )TCP/IP
respuesta entre el cliente y el servidor:
3. Es en donde se tienen las direcciones IP con sus correspondientes URL, este ( ) MOSAIC
proceso es el que se lleva a cabo entre la comunicación de las computadoras:
4. Red creada en 1969, con un inicio de 4 computadoras: ( )Tim Berners-Lee
5. También es conocida como arquitectura Cliente/ Servidor: ( ) HTML
6. Está compuesto por el servidor de BD que maneja la aplicación web: ( )HTTP
7. Permite la comunicación entre las computadoras: ( )URL
8. Está compuesta por las páginas HTML que el usuario solicita a un servidor web ( )DNS
y se visualiza mediante un navegador:
9. Fue el primer navegador y es así como evoluciona la web: ( )ARQUITECTURA
DE DOS CAPAS
10. Se refiere a la dirección única que identifica una página web: ( ) CAPA DE
PRESENTACIÓN
11. Es conocido como el Padre de la Web: ( ) LOGICA DE
NEGOCIO
12. Permite mostrar páginas con hipertexto ( ) NIVEL DE
DATOS
204
Anexos
10. Explica los pasos y la estructura de las carpetas para crear nuestro primer sitio
usando xampp
205
Anexos
206
Anexos
6.- Menciona 1 ejemplo de empresa que ofrecen servicio IAAS, SAAS, PAAS:
207