La web son páginas (En formato HTML, Imagen, JSON, XML ,etc) que se interconectan entre ellas por enlaces (urls).
Su estructura es la siguiente:
El navegador solicita por TCP/IP el recurso a obtener. El formato de como solicita ese recurso es por el protocolo HTTP. Y el servidor de TCP/IP responde usando el protocolo HTTP devolviendo los datos.
En el ejemplo podemos ver que se pide el recurso /index.html. Una vez obtenido , el navegador ve que hay enlaces a otros recursos que también solicita al servidor:
Con todo ello , muestra la página HTML+CSS+Imagen y ejecuta el código JavaScript sobre la página dentro del navegador.
En el host servidor se estaba ejecutando el servidor TCP/IP que entiende el protocolo HTTP. A ese software lo llamaremos servidor Web. El servidor es "personalizable" permitiendo que se ejecute código específico para nuestra aplicación. Ese código específico es el código de servidor que se suele escribir en Java, PHP, NodeJS, etc.
Por lo tanto en una app web hay 3 tipos de código:
En la siguiente imagen vemos un esquema similar en el que las peticiones van hacia varios servidores Web
Los navegadores suelen llevar herramientas para depurar las páginas web. En Chrome , si pulsamos F12 y pinchamos en la opción de "Network" (Menu superior), podemos ver todas las peticiones que hace el navegador al cargar una página.
Podemos ver en la página del CIPFP Mislata, como se han hecho 40 peticiones , siendo entre ellas:
Servidor | Ruta dentro del servidor |
---|---|
www.gstatic.com | /charts/loader.js |
www.fpmislata.com | /moodle/lib/javascript.php/1588418173/lib/requirejs/require.min.js |
www.fpmislata.com | /logos/amadeus.png |
www.fpmislata.com | /moodle/theme/image.php?theme=clean&component=core&image=help |
Para desplegar hay muchas cosas a tener en cuenta.
Herramientas que vamos a usar en clase:
Otras herramientas y Servicios:
En el siguiente diagrama se vería el ejemplo donde , el servidor web, la base de datos y el servidor de copias de seguridad son servidores distintos:
Ejemplo de PAAS en Java:
El IAAS es mas versátil ya que solo nos ofrecen el ordenador y nosotros nos montamos todo como queremos. El problema es que es mas complicado todo de hacer y tenemos que administrarlo todo: Sistema operativo, servidor web y aplicación
Por otro lado en el PAAS, solo nos tenemos que preocupar de nuestra aplicación lo que hace que sea mas sencillo. El problema es que ya no hay tanta versatilidad, ya que debemos ceñirnos al entorno que nos ofrece la empresa
NodeJS (o simplemente node) es un lenguaje de programación basado en JavaScript. Al ser un lenguaje interpretado, su forma de trabajar es mas similar a BASH que a Java. ¿Porque vamos a usar NodeJS? Porque muchas herramientas para el desarrollo web están hechas en node. Además del lenguaje de programación, node incluye un gestor de paquetes similar al de Linux (como apt) que se llama "npm" (Node package manager )
Antes de empezar, deberemos configurar el proxy que se usa en el CIPFP Mislata para la orden apt, para ello editar el fichero "/etc/apt/apt.conf" y añadir lo siguiente:
Acquire::http::proxy "http://172.16.0.9:8080/"; Acquire::https::proxy "http://172.16.0.9:8080/";
Ejecutar los siguientes comandos:
sudo apt update sudo apt install nodejs sudo apt install npm
Instalar NodeJS desde la página oficial de Node.JS
Ahora vamos a configurar el proxy para el gestor de paquetes de node.
Lanzar los siguientes comandos:
npm config set proxy http://172.16.0.9:8080 npm config set https-proxy http://172.16.0.9:8080
package.json
que es fundamental en node ya que contiene toda la información del proyecto
npm init
node_modules
Instalar la librería de JavaScript llamada "jQuery"
npm install jquery
npm install typescript -g
node_modules
npm install
Ahora vamos a ver como ejecutar código node.
El programa mas sencillo es hacer el "Hola Mundo". Para ello creamos un fichero llamado "index.js" con el contenido siguiente:
#!/usr/bin/env node console.log('Hola Mundo');
Para ejecutarlo hay que lanzar la orden:
node index.js
Y mostrará por consola el mensaje "Hola mundo"
Como en NodeJS se usa JavaScript, podemos usar todo lo que sabemos de JavaScript en un programa de node.
Unicode es un estándar de codificación que tiene como objetivo permitir la representación de todos los caracteres utilizados en los sistemas de escritura del mundo, además de símbolos y emojis. A diferencia del ASCII (7 bits ) y ANSI (8 bits), Unicode asigna a cada carácter un número único, denominado "punto de código" y los puntos de código son desde U+0000 hasta U+10FFFF (2.097.152 de caracteres).
Además de unicode están:
Página de código | ANSI | Similar en Windows |
---|---|---|
Latin 1 | ISO 8859-1 | Windows-1252 (Incluye el € como 0x80 ) |
Griego | ISO 8859-7 | Windows-1253 |
Cirílico | ISO 8859-5 | Windows-1251 |
Latin 9 | ISO 8859-15 (Incluye el € como 0xA4 ) |
Cambios de ISO-8859-1 a ISO 8859-15 | ||||||||
---|---|---|---|---|---|---|---|---|
Posición | 0xA4 | 0xA6 | 0xA8 | 0xB4 | 0xB8 | 0xBC | 0xBD | 0xBE |
8859-1 | ¤ | ¦ | ¨ | ´ | ¸ | ¼ | ½ | ¾ |
8859-15 | € | Š | š | Ž | ž | Œ | œ | Ÿ |
ISO 8859-1 | |
---|---|
Carácter | Code Point |
á | 0xE1 |
é | 0xE9 |
í | 0xED |
ó | 0xF3 |
ú | 0xFA |
ñ | 0xD1 |
Windows-1252 is commonly known as Windows Latin 1 or as Windows West European or something like that. It differs from ISO Latin 1, also known as ISO-8859-1 as a character encoding, so that the code range 0x80 to 0x9F is reserved for control characters in ISO-8859-1 (so-called C1 Controls), wheres in Windows-1252, some of the codes there are assigned to printable characters (mostly punctuation characters), others are left undefined.
ANSI comes here as a misnomer. Microsoft once submitted Windows-1252 to American National Standards Institute (ANSI) to be adopted as a standard; the proposal was rejected, but Microsoft still calls their code “ANSI”. For further confusion, they may use “ANSI” for different encodings (basically, the “native 8-bit encoding” of a Windows installation).
In the web context, declaring ISO-8859-1 will be taken as if you declared Windows-1252. The reason is that C1 Controls are not used, or useful, on the web, whereas the added characters are often used, even on pages mislabelled as ISO-8859-1. So in practical terms it does not matter which one you declare.
There might still be some browsers that actually interpret data as ISO-8859-1 if declared so, but they must be very rare (the last I remember seeing was a version of Opera about ten years ago).
UTF-8 (Unicode Transformation Format - 8 bits) es un esquema de codificación variable que utiliza entre 1 y 4 bytes para representar cada carácter Unicode. Es altamente eficiente para textos en idiomas que utilizan caracteres latinos comunes, ya que estos se representan en un solo byte. UTF-8 se ha convertido en la codificación más utilizada en la web debido a su compatibilidad con sistemas más antiguos que utilizan ASCII y su capacidad para codificar cualquier carácter Unicode. Además, es muy eficiente en términos de almacenamiento para la mayoría de los lenguajes occidentales.
Codificación UTF-8
Code point | Byte 1 | Byte 2 | Byte 3 | Byte 4 |
---|---|---|---|---|
U+0000..007F | 0xxxxxxx | |||
U+0080..07FF | 110xxxxx | 10xxxxxx | ||
U+0800..FFFF | 1110xxxx | 10xxxxxx | 10xxxxxx | |
U+10000..10FFFF | 11110xxx | 10xxxxxx | 10xxxxxx | 10xxxxxx |
Carácter | Code point | UTF-8 | Interpretacion erronea en ISO 8859-1 |
---|---|---|---|
á | U+00E1 | C3 A1 | á |
é | U+00E9 | C3 A9 | é |
í | U+00ED | C3 AD | ó |
ó | U+00F3 | C3 B3 | Ã- |
ú | U+00FA | C3 BA | ú |
ñ | U+00F1 | C3 B1 | ñ |
💩 | U+1F4A9 | F0 9F 92 A9 | 💩 |
En caso contrario , que tengamos un texto en ANSI y digamos que es utf-8
puede ocurrir que algunos carácteres no se puedan mostrar , en ese caso se muestra es carácter � U+FFFD
.
Mas información:
Navega a la página https://www.apache.org/ e indica:
Del apartado "Ejemplos de Tipos de Despliegue" de este tema, haz un diagrama del esquema de Hosts que se usan y que software se instalaría en cada uno de ellos. Pero solo para los ejemplos 2, 5 y 10
Imagina un nuevo ejemplo de despliegue que tenga al menos 4 servidores. Deberás explicarlo y hacer su esquema.
Busca por internet el nombre de 2 servidores web que permitan aplicaciones en Java y de 2 servidores web que permitan aplicaciones en PHP
Busca por internet el nombre de 2 balanceadores de carga y indica cuando usarías cada uno de ellos.
Busca por internet el nombre de dos empresas que ofrezcan servicios de tipo IAAS
Busca por internet el nombre de dos empresas que ofrezcan servicios de tipo PAAS
Busca por internet el nombre de dos empresas que ofrezcan servicios de tipo SAAS
Busca dos empresas de Hosting y comprara el precio de sus VPS, suponiendo características parecidas. ¿Cual elegirías?
Busca por internet una empresa con su precio y características para poder tener:
NodeJS tiene una librería llama Math.js que permite trabajar con números complejos.
Haz una aplicación en node que sume los números complejos (2+4i) y (-5+3i) y muestre el resultado por pantalla.Indica como ejecutar la aplicación
Crea una página HTML con el texto "contraseña€".
Paro añade al HEAD
la siguiente etiqueta:
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=ISO-8859-1">
Y usando el bloc de notas, al guardarla codifica la página como UTF-8
.
Comprueba que la página se ve mal o bien.¿Porqué?
Crea una página HTML con el texto "contraseña€".
Paro añade al HEAD
la siguiente etiqueta:
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=utf-8">
Y usando el bloc de notas, al guardarla codifica la página como ANSI
.
Comprueba que la página se ve mal o bien.¿Porqué?
Crea una página HTML con el texto "contraseña€".
Paro añade al HEAD
la siguiente etiqueta:
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=Windows-1252">
Y usando el bloc de notas, al guardarla codifica la página como ANSI
.
Comprueba que la página se ve mal o bien.¿Porqué?
Crea una página HTML con el texto "contraseña€".
Paro añade al HEAD
la siguiente etiqueta:
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=ISO-8859-1">
Y usando el bloc de notas, al guardarla codifica la página como ANSI
.
Comprueba que la página se ve mal o bien.¿Porqué?
Crea una página HTML con el texto "contraseña€".
Paro añade al HEAD
la siguiente etiqueta:
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=ISO-8859-15">
Y usando el bloc de notas, al guardarla codifica la página como ANSI
.
Comprueba que la página se ve mal o bien.¿Porqué?