lunes, 19 de abril de 2021

Establecer por defecto la última versión de Python en Ubuntu

Estamos en Ubuntu 20.04 y actualmente la versión más actual de Python es la 3.9.4. Nos gustaría que por defecto esta fuera la versión que utilizamos y la que se mustra al pedir por consola que nos de la versión de Python que tenemos.


Para conseguir este objetivo tenemos que realizar dos fases.
  1. Fase 1: Instalar la nueva versión de Python en Ubuntu
  2. Fase 2: Establecer la nueva versión de Python como versión por defecto

Fase 1

Vamos a actualizar Python a la última versión usando apt.

Paso 1

 sudo apt update  
 sudo apt upgrade -y  

Paso 2

Instalamos la versión 3.9 de Python.

 sudo apt install software-properties-common  
 sudo add-apt-repository ppa:deadsnakes/ppa  
 sudo apt install python3.9  

Paso 3

Verificamos las versiones que nos proporcionan estas preguntas.

 python3.9 --version  
 python3 --version  
 python --version  

Fase 2

Ahora deseamos que la versión de Python por defecto sea la última instalada, en nuestro caso, la 3.9.

Paso 1


Esto se consigue tecleando en la terminal el siguiente comando.

alias python=python3.9  

Paso 2

Veamos si se ha conseguido el objetivo.

python3 --version  

Objetivo conseguido, pero ...

Paso 3

La anterior asignación de un alias para Python no es permanante y si se reinicia el sistema operativo perderíamos la asignación.

Para hacer permanente la asignación debemos escribir esa línea de código al final del siguiente archivo que vamos a editar con nano.

nano ~/.bash_aliases  

Y en la última línea de ese archivo escribimos:

alias python=python3.9  

Paso 4

Rebotamos el sistema.

 reboot  

Paso 5

Ahora ya podemos ver que es permanente.

 python3 --version  


domingo, 18 de abril de 2021

Flask en Heroku usando GitHub

Flask es un framework para crear páginas web usando Python. Otro framework similar es Django, pero hemos elegido Flask por su sencillez a la hora de desplegar nuestra primera página web con Python.

Disponemos de varios recursos para aprender Flask.

Para realizar el despliegue obtendremos una cuenta de Heroku.

Comencemos ...

Paso 0

Estamos en Linux, en un Ubuntu 20.04.
Comprobemoslo.
lsb_release -a


Paso 1

Actualizamos el sistema.

sudo apt update -y && sudo apt full-upgrade -y && sudo apt autoremove -y && sudo apt clean -y && sudo apt autoclean -y


Paso 2

Comprobar que está instalado Python 3 o en caso contrario instalarlo.


python --version

Paso 3

Instalar el entorno virtual (virtual environment). Si usamos Python 3 viene con venv que es la nueva forma de instalar el entorno virtual. Si usas Python 2 debes usar el sistema antiguo con virtualenv. En nuestro caso como usamos Python3, usaremos venv que es más sencillo de instalar, demás es el que se recomienda en la instalación de Flask (Instalación 1.1.x).

Actualmente no es necesario instalar virtualenv ya que existe

 sudo apt install python3-venv  
 python3 -m venv venv  

La segunda venv es el nombre del entorno virtual, podemos asignar el nombre que queramos.

Paso 4

Activación del entorno virtual.

El entorno virtual se activa así:

. venv/bin/activate

Dentro del entorno virtual no es necesario poner python3, si ponemos simplemente python ya se sabe que es la versión 3, tal y como se ve en la imagen anterior.

Paso 5

Creación de un "Hola mundo". Se puede crear con tu editor de código favorito y se ha de llamar app.py

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

if __name__ == '__main__':
    app.run()

Paso 6

Lanzar el servidor de Flask.

python app.py


Deja la ventana de esta terminal abierta corriendo el servidor Flask.

Paso 7

Ver la página web.

Abre una pestaña de tu navegador y teclea la url donde podrás ver la página web ejecutándose.
http://127.0.0.1:5000  
La página que solicitamos es la de LocalHost con el puerto 5000.






Paso 8

Despliegue en Heroku.

Sacamos una cuenta gratuita de Heroku.

Elegimos crear un nuevo proyecto.




Elegimos un nombre de proyecto que esté disponible.


Cuando tengamos nuestra aplicación desplegada la podremos ver en https://holamundi.herokuapp.com


Paso 9

Crear un repositorio en GitHub denominado flaskholamundi o con el nombre que quieras.
De momento no creamos ni el read.me, ni la licencia, ya que lo queremos vacío.



Paso 10

Copiamos la dirección del repositorio para luego poder clonarlo.



Paso 11

Nos vamos en la terminal, a nuestro directorio, donde queramos tener clonados los archivos del repositorio y tecleamos lo siguiente.

Ojo: sustituye la URL que aparece por la de tu repositorio.

git clone https://github.com/pythonfinanciero/flaskholamundi.git


Si aparece, como en la imagen anterior, una advertencia indicando que el repositorio está vacío es normal, ya que efectivamente, de momento está vacío porque no hemos creado ni siquiera el archivo read.me.

Paso 12

Vamos a nuestro editor de código, en nuestro caso utilizaremos Visual Studio Code (VSC). Podemos abrir el VSCode tecleando en la terminal:
 
code .


Paso 13

De momento no hay archivos en nuestro repositorio. Crearemos el archivo app.py que es similar al archivo que se creo anteriormente con el editor nano.



#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
  return 'Hello there from Flask!'
if __name__ == '__main__':
  port = int(os.environ.get("PORT", 5000))
  app.run(host='0.0.0.0', debug=True, port=port)

Paso 14

Ahora tenemos que subir el archivo a GitHub.

git add --all
git commit -m "Primera version funcional"
git push
Si es la primera vez que hacemos un push a GitHub nos pedirá el usuario y la contraseña.



Paso 15

Comprueba en GitHub que el archivo se ha subido bien.


Paso 16

Conectamos Heroku a GitHub.


Creamos una pipeline llamada holamundigit.





Paso 17

Automatizar el despliegue. En algún momento también hemos pedido que el despliegue se haga para producción.






Paso 18

Añadir el Buildpack.

En Heroku, en la pestaña Settings de nuestro proyecto, encontraremos abajo Buildpacks





Paso 19

Instalamos heroku en Ubuntu.


En nuestra terminal de Linux instalamos heroku.

sudo snap install heroku --classic

Paso 20

Nos logeamos en heroku.

heroku login
Esto abrirá una pestaña de nuestro navegador y nos tendremos que logear en heroku con usuario y contraseña.

Otra forma de hacerlo, únicamente desde la terminal es teclerar:
heroku login -i

Paso 21

Flask lleva incluido un servidor HTTP pero muy simple que permite atender unicamente una petición cada vez. Heroku precisa para funcionar de un servidor como gunicorn que permite atender múltiples peticiones HTTP. Necesitamos instalar gunicorn ya que en caso contrario Heroku no funcionará.

pip install gunicorn


Paso 22

Cree el archivo Procfile:
  • es un archivo sin extensión
  • la primera letra (P) es mayúscula
  • es una archivo de texto con la siguiente línea

web: gunicorn app:app

Nuestra aplicación se llama app.py pero si se llamara main.py la línea anteriror debería ser:

web: gunicorn main:app

Paso 23

El archivo requirements.txt indica las librerías que son necesarias cargar incluyendo sus versiones.

En nuestro caso cargaremos la siguientes.

Flask==1.1.1
gunicorn==19.9.0

Paso 24

Comprobar que la página esta funcionando correctamente y se encuentra desplegada.

Estando en la página de Heroku, en deploy, pulsamos sobre el botón denominado Open app que se encuentra en la equina superior derecha.



Paso 25

Si todo ha ido bien veremos desplegada nustra página en





sábado, 17 de abril de 2021

Calculadora de opciones en JavaScript

Veamos cómo programar una calculadora en Java Script para obtener el precio teórico de la prima de una opción financiera europea.

Esta entrada forma parte de una serie de post publicados.

  1. Calculadora sencilla en JavaScript
  2. Calculadora de opciones en JavaScript

Continuaremos desde donde lo dejamos y realizaremos los siguientes pasos.

Paso 1

Vamos a nuestro Visual Studio Code (VSC) y duplicamos el archivo index.html. Para ello, situamos el cursor sobre el nombre de archivo, en el panel de la izquierda y pulsamos Control+C para copiar. Luego, pulsamos Control+V para pegar la copia. Esto genera un nuevo archivo denominado index copy.html.

Renombramos el archivo index copy.html con el nombre sumados.html. Para renombrar lo que hacemos es pulsar con el botón derecho del ratón sobre el nombre de archivo y en el menú contextual que se obtiene elegimos rename.

Volvemos a duplicar el archivo index.html y renombramos la copia como valorOpcion.html.


Paso 2

Editamos el archivo index.html de forma que ahora quedará así.

<!DOCTYPE html>
<html lang="es">
<head>
  <meta charset="UTF-8">
  <link rel="stylesheet" href="./style.css">
  <title>Calculadoras</title>
</head>
<body>
  <h1>Calculadoras en JavaScript</h1>
  <ul>
    <li><a href="./sumados.html">Sumar dos números</a></li>
    <li><a href="./valorOpcion.html">Valoración de opciones por Black-Scholes</a></li>
  <ul>
</body>
</html>


Paso 3

Editamos el archivo style.css que ahora quedará así.

 body {  
   background-color: LightCyan;  
  }  
 #resultH2{  
   color: blue;  
 }  
 .main{  
  width: 600px;  
  display: flex;  
  justify-content: space-between;  
  margin: 10px 0px 10px 0px;  
 }  
 input {   
  text-align: right;   
 }  

Paso 4

Editamos el archivo valorOpcion.html que quedará así.
 <!DOCTYPE html>  
 <html lang="es">  
 <head>  
   <meta charset="UTF-8">  
   <link rel="stylesheet" href="./style.css">  
   <script src="./blackscholes.js"></script>  
   <title>Black-Scholes</title>  
 </head>  
 <body>  
   <h1>Black-Scholes</h1>  
   <p>Valor de una opción CALL europea por el método de Black-Scholes.</p>  
   <h2>Variables de entrada</h2>  
   <ul>  
     <li class="main">Precio Spot del activo subyacente: S <input type="number" value="100" id="S"></li>  
     <li class="main">Precio de ejercicio (Strike): E <input type="number" value="110" id="E"></li>  
     <li class="main">Volatilidad (en tanto por uno): &sigma; <input type="number" value="0.2" id="sigma"> </li>  
     <li class="main">Rentabilidad libre de riesgo:<br></li>  
     <li class="main"><p style="margin: 0px;">Tanto efectivo anual en tanto por uno: <i>i</i></p> <input type="number" value="0.07" id="tanto"></li>  
     <li class="main">Duración hasta vencimiento en años: T <input type="number" value="2" id="T"> </li>  
   </ul>  
   <p>Pulse el botón para obtener el precio teórico de un CALL europeo.</p>  
   <input type="button" value="CALL por Black-Scholes" onclick="CALLeuropea()">  
   <h2 id="resultH2">Resultado</h2>  
   <p id="total"></p>  
 </body>  
 </html>  

Paso 5

Creamos el archivo blackscholes.js. La función de la distribución  Normal acumulada programada en JavaScript se puede ver en una respuesta de Stackoverflow.

En JS no es tan sencillo obtener la distribución Normal acumulada como en otros lenguajes más orientados a los cálculos científicos o a manejar datos, por ejemplo:
  • Python 
    • from statistics import NormalDist
    • NormalDist(mu=100, sigma=10).cdf(100)
  • R
    • print(pnorm(q = 110, mean = 100, sd = 10))
  • Excel
    • =NORM.DIST(110,100,10,TRUE)
En todos los ejemplos obtenemos el mismo valor de la normal acumulada: 0.8413447460685429.
 function Normal(z) {  
   var j, k, kMax, m, values, total, subtotal, item, z2, z4, a, b;  
   if (z < -6) { return 0; }  
   if (z > 6) { return 1; }  
   m   = 1;  
   b   = z;  
   z2   = z * z;  
   z4   = z2 * z2;  
   values = [];  
   for (k=0; k<100; k+=2) {  
     a = 2*k + 1;  
     item = b / (a*m);  
     item *= (1 - (a*z2)/((a+1)*(a+2)));  
     values.push(item);  
     m *= (4*(k+1)*(k+2));  
     b *= z4;  
   }  
   total = 0;  
   for (k=49; k>=0; k--) {  
     total += values[k];  
   }  
   return 0.5 + 0.3989422804014327 * total;  
 }  
 function CALLeuropea(){  
   let S=parseFloat(document.getElementById("S").value);  
   let E=parseFloat(document.getElementById("E").value);  
   let sigma=parseFloat(document.getElementById("sigma").value);  
   let tanto=parseFloat(document.getElementById("tanto").value);  
   let T=parseFloat(document.getElementById("T").value);  
   let myTotal=document.getElementById("total");  
   //Primero convertimos el tanto efectivo anual en un tanto instantáneo  
   let r= Math.log(1+tanto); //log es el neperiano  
   console.log("r=",r)  
   //Calculamos d1, d2, y la prima  
   let d1 = (Math.log(S/E)+(r+sigma**2/2)*T)/(sigma*Math.sqrt(T));  
   let d2 = (Math.log(S/E)+(r-sigma**2/2)*T)/(sigma*Math.sqrt(T));  
   let primaCALL=S*Normal(d1)-E*Math.E**(-r*T)*Normal(d2);  
   myTotal.innerText="La prima estimada del CALL es: "+ primaCALL;  
 }  
El código para obtener el valor de la opción CALL europera por el método de Black-Scholes está basado en el post siguiente.


Paso 6

Podemos ver el resultado en nuestro Localhost.



Paso 7

Subimos los cambios a GitHub.

Paso 8

Paso 9

Podemos ver el código en el repositorio de GitHub:










tamaño de fuente: 24px;

Crear un proceso bash en Linux

Estamos en Ubuntu 20.04 y deseamos crear un proceso Batch de procesamiento por lotes en Linux. El objetivo es lanzar de forma rápida un entorno virtual para ejecutar Jupyter Notebook en nuestro Local Host.

La extensión de los procesos batch en Windows es .bat y en Linux es .sh, aunque en Linux podría ser cualquiera.


Paso 1

Estamos en el directorio raiz.

Creamos el archivo .sh con el nombre runme.sh con el comando

 nano runme.sh  

Paso 2

El texto que incorpora nustro archivo es el siguiente.

 #!/bin/bash  
 echo "Activando el entorno virtual y lanzando Jupyter Notebook"  
 source Documents/pyApa/calisto/calisto_env/bin/activate  
 jupyter notebook  

Salimos del editor nano grabando el archivo.
Nuestro entorno virtual se llama calisto aunque muchas veces es habitual denominarlo env.

Paso 3

Hacemos ejecutable el archivo.

 chmod +x runme.sh  

Paso 4

Ya podemos ejecutar el archivo desde la terminal.

 ./runme.sh  


Después, si se desea salir del entorno virtual se ha de teclear deactivate.

Nota

Para instalar el entorno virtual y Jutyper Notebook en Ubuntu 20.04 he seguido las indicaciones del siguiente artículo:

Activación de venv y lanzar Jupyter con un script bash

Estamos en Ubuntu 20.04. Tenemos la siguiente estructura de directorios.




Queremos crear un script de bash linux para:
  1. activar el entorno virtual
  2. lanzar Jupyter Notebook en el directorio pyCourse/jupyter

Estamos con el siguiente prompt de linux.
mag@zero:~$


Creamos nuestro archivo .sh que hemos llamado jupy.sh. Se puede crear con el editor nano.

#!/bin/bash
# el script se lanza desde mag@zero:~$ tecleando . jupy.sh
# tambien se lanza tecleando source jupy.sh
echo "Activando el entorno virtual y lanzando Jupyter Notebook"
source ~/github/venv/bin/activate
cd github/pyCourse/jupyter
jupyter notebook

Para lanzar el script tenemos que estar en el siguiente prompt de linux.
mag@zero:~$

Y luego hemos de teclear en la terminal:

source jupy.sh

O bien, como alternativa, se puede lanzar el script tecleando:

. jupy.sh

Donde el punto y el espacio son importantes.

sábado, 10 de abril de 2021

Calculadora sencilla en JavaScript

Esta entrada forma parte de una serie de post publicados.

  1. Calculadora sencilla en JavaScript
  2. Calculadora de opciones en JavaScript

 Vamos a utilizar:

  • Git para el control de versiones
  • GitHub para almacenar los ficheros en la nube y usarlos para el despliegue contínuo
  • Visual Studio Code como editor de nuestros archivos:
    • HTML
    • JS
  • Algunos complementos para VSCode:
    • marcamos el 'Auto Save' para la grabación contínua de archivos
    • HTML Snippets para mejorar las sugerencias de etiquetas en HTML
    • Live Server para hacer un despliegue contínuo en nuestro local host
  • Netlify para desplegar la página web

Paso Cero

  1. Sacamos una cuenta de GitHub si no la tenemos.
  2. Instalamos el software de control de versiones Git en nuestro PC (Windows, Linux, Mac). Mirar a ver si ya lo tenemos instalado, y en caso afirmativo mirar a ver si lo tenemos actualizado.
  3. Instalamos Visual Studio Code
  4. Sacamos una cuenta de Netlify.

Paso Uno

  1. Creamos un nuevo repositorio en nuestra cuenta de GiHub. En nuestro caso le hemos llamado JS_improve
  2. Copiamos la URL del repositorio
     

  3. Abrimos una terminal en la carpeta Documentos (Documents)
    • En Windows se puede ir al Exploarador de archivos, ir a la carpeta Documentos y luego poner arriba cmd. Al pulsar Enter se nos abrirá la terminal en el directorio Documents.
    • En Linux podemos ir a Files, ir a la carpeta elegida y pulsando con el botón derecho del ratón veremos la opción 'Open in Terminal'.
    • En cualquier caso podemos abrir una terminal e ir a la carpeta deseada
  4. Clonamos el repositorio con el comando
     git clone https://github.com/financieras/JS_improve.git  
    
    donde la url debe ser la de vuestro repositorio.
  5. Si queremos, podemos ver que se han creado los mismos archivos que en el repositorio de GitHub más un archivo oculto .git
  6. Abrir VSCode. También se puede abrir estando en la terminal, en la carpeta deseada y tecleando 
     code .  
    
    y al pulsar Enter se abrirá el editor de código.

Paso Dos

  1. Estamos en VSCode y vamos a crear un nuevo archivo denominado index.html
  2. Lo primero que escribimos en nuestro nuevo archivo es html:5 y al pulsar Enter veremos ya un código básico para nuestro fichero html. Es el siguiente.
     <!DOCTYPE html>  
     <html lang="en">  
     <head>  
       <meta charset="UTF-8">  
       <meta http-equiv="X-UA-Compatible" content="IE=edge">  
       <meta name="viewport" content="width=device-width, initial-scale=1.0">  
       <title>Document</title>  
     </head>  
     <body>  
     </body>  
     </html>  
    
  3. Ahora podemos crear ya nuestro código del archivo index.html en su primera versión funcional, que es el siguiente.
     <!DOCTYPE html>  
     <html lang="es">  
     <head>  
       <meta charset="UTF-8">  
       <script src="./calcula.js"></script>  
       <title>Calculadora en JavaScript</title>  
     </head>  
     <body>  
       <h1>Calculadora en JavaScript</h1>  
       <h2>Variables de entrada</h2>  
       <p>Primer número: </p>  
       <input type="number" value="2" id="n1">  
       <p>Segundo número: </p>  
       <input type="number" value="5" id="n2">  
       <p>Pulse el botón para sumar.</p>  
       <input type="button" value="Sumar" onclick="sumar()">  
       <h2>Resultado</h2>  
       <p id="total"></p>  
     </body>  
     </html>  
    
  4. Ahora vamos a crear nuestro archivo calcula.js
     function sumar(){  
       let uno=document.getElementById("n1");  
       let dos=document.getElementById("n2");  
       let myTotal=document.getElementById("total");  
       let laSuma=parseInt(uno.value) + parseInt(dos.value);  
       myTotal.innerText="El resultado es: "+ laSuma;  
     }  

Paso Tres

  1. Dividimos la pantalla en dos partes, a la izquierda ponemos el VSCode y a la derecha nuestro navegador por defecto.
  2. Estando en VSCode veremos abajo un icono que pone 'Go Live'. Este existe debido a que previamente hemos instalado el complemento 'Live Server'. Pulsamos con el ratón sobre 'Go Live' y veremos que en el navegador se abre nuestra página de Local Host. En mi caso uso el puerto 5500 y cualquiera de estas dos páginas funcionará
    1. http://127.0.0.1:5500/index.html
    2. http://localhost:5500/index.html

  3. Si todo ha ido bien veremos nuestra aplicación funcionando. También podemos ver en el navegador la ayuda para desarrolladores pulsando F12, en Chrome y otros navegadores.

Paso Cuatro

  1. Ahora vamos a subir los cambios a GitHub. Podemos usar la terminal integrada en Visual Studio Code.
  2. Abrimos la terminal desde el propio Visual Studio Code con Terminal / New Terminal
  3. En mi caso operando desde Ubuntu tengo la terminal que se ve en la siguiente imagen.


  4. El propio VSCode nos avisará si hay cambios sin subir a GitHub. En la siguiente imagen vemos que aparece a la izquierda un 2 indicando que existen dos cambios sin subir.


  5. Veamos cómo subir los cambios desde la terminal con comandos de Git.
    • git add --all
    • git commit -m "Primera version funcional"
    • git push

    Nota: con git status podemos comprobar si nuestra copia local está actualizada y sin cambios respecto a la copia en la nube.


  6. Ahora comprobamos en GitHub que se han subido bien los cambios. Recargamos la página de GitHub y vemos que los cambios son recientes.

Paso Cinco

  1. Vamos a utilizar GitHub Pages para conseguir que nuestra página web se vea en internet y no solo en nuestro Local Host.
  2. Vamos a nuestro repositorio y en el menú superior pulsamos sobre 'Settings', el icono es una rueda dentada.
  3. En el menú vertical elegimos 'Pages'.


  4. En la rama elegimos 'main' y en la carpeta elegimos 'root'.


  5. Pulsamos sobre el botón 'Save'.
  6. Ya tenemos página web desplegada en GitHub Pages. Nos informan con un mensaje que primero es azul y luego verde cuando ya es operativa. Puede tardar unos minutos en ponerse verde.


  7. El resultado obtenido ya es funcional y tiene su propia página web.

    https://financieras.github.io/JS_improve

Paso nueve

  1. Vamos a desplegar la página web creada en Netlify.
  2. En mi caso ya tengo otro proyecto corriendo en Netlyfy pero podemos crear uno nuevo pulsando en el botón denominada 'New Site from Git'.

  3. Creamos un nuevo sitio con despliegue contínuo utilizando los archivos que tenemos subidos a un repositorio de GitHub.
  4. Tenemos que indicar a Netlify el nombre del repositorio de GitHub que deseamos desplegar. Para ello tenemos que configurar Netlify con GitHub: 'Configure Netlify on GitHub'.
  5. Nos muestra una lista con la cuenta y las organizaciones asociadas a esa cuenta. Elegiremos aquella en la que está el repositorio que deseamos desplegar.
  6. Damos acceso a todos los repositorios de esa cuenta o bien a uno concreto. En mi caso, he elegido 'All repositories'.

  7. Elegimos el repositorio deseado.

  8. Vemos abajo, en verde, que aparece la palabra 'Published', que nos indica que ya está publicada nuestra página web. El despliegue ya se ha producido. La dirección web (url) que nos han asignado aparece arriba y tiene un nombre que no es amigable, ni sencillo de recordar, pero puede ser cambiado.

  9. Vemos que la página está desplegada en nuestra extraña url.

  10. Vamos a cambiar el nombre de la url por uno más amigable, pulsando 'Change site name'.

  11. Ahora vemos que nuestra web está desplegada en https://calculadoraprima.netlify.app

Paso once

  1. Vamos a añadir un archivo css para los estilos. El archivo se denominará style.css.

     body {  
       background-color: LightCyan;  
       font-size: 24px;  
      }  
     #resultH2{  
       color: blue;  
     }  
    
  2. El archivo index.html también requiere un par de cambios, la fila donde llamamos al archivo css y al final hemos añadido la etiqueta resultH2.

     <!DOCTYPE html>  
     <html lang="es">  
     <head>  
       <meta charset="UTF-8">  
       <link rel="stylesheet" href="./style.css">  
       <script src="./calcula.js"></script>  
       <title>Calculadora en JavaScript</title>  
     </head>  
     <body>  
       <h1>Calculadora en JavaScript</h1>  
       <h2>Variables de entrada</h2>  
       <p>Primer número: </p>  
       <input type="number" value="2" id="n1">  
       <p>Segundo número: </p>  
       <input type="number" value="5" id="n2">  
       <p>Pulse el botón para sumar.</p>  
       <input type="button" value="Sumar" onclick="sumar()">  
       <h2 id="resultH2">Resultado</h2>  
       <p id="total"></p>  
     </body>  
     </html>  
    
  3. Podemos ver el resultado en nuestro Local Host.


  4. Subimos los cambios a GitHub usando comandos de consola.
    • git add --all
    • git commit -m "incluimos estilos css"
    • git push
  5. Miramos los cambios en GitHub Pages https://financieras.github.io/JS_improve


  6. Miramos los cambios en Netlify https://calculadoraprima.netlify.app

 

Gracias la despliegue contínuo hemos conseguido que los cambios realizados de forma local en nuestro ordenador se suban, haciendo el push en git, tanto a GitHub Pages como a Netlify.

¡Una maravilla, esto del despliegue contínuo!