domingo, 16 de diciembre de 2018

Clase 6: Jueves 13 de Diciembre

HTML CSS JavaScript

Para este artículo primero se dará una explicación y luego un ejemplo

HTML

HTML es un lenguaje de programación que se utiliza para el desarrollo de páginas de Internet. Se trata de la siglas que corresponden a HyperText Markup Language, es decir, Lenguaje de Marcas de Hipertexto. Se puede decir que HTML se encarga de de crear la estructura básica de la página web.
ejemplo.

El consorcio de W3(World Wide Web) dicta diferentes estándares para la creación de sitios web en los cuales se tiene por ejemplo

  • HTML & CSS
  • JavaScript Web APIs
  • Gráficos
  • Audio y Video
  • Accesibilidad
  • Internacionalización
  • Web móviles
  • Privacidad
  • Matemática en la web

CSS

Es un lenguaje de diseño gráfico para definir y crear la presentación de un documento estructurado escrito en un lenguaje de marcado. Es muy usado para establecer el diseño visual de los documentos web e interfaces de usuario escritas en HTML.

JavaScript

Es un lenguaje de programación interpretado, dialecto del estándar ECMAScript. Se define como orientado a objetos, basado en prototipos, imperativo, débilmente tipado y dinámico. Se utiliza principalmente en su forma del lado del cliente o frontend,  implementado como parte de un navegador web permitiendo mejoras en la interfaz de usuario y páginas web dinámicas. También se puede utilizar en la parte del Servidor como por ejemplo al utilizar NodeJS.

Bootstrap

Es una biblioteca multiplataforma o conjunto de herramientas de código abierto para diseño de sitios y aplicaciones web. Contiene plantillas de diseño con tipografía, formularios, botones, cuadros, menús de navegación y otros elementos de diseño basado en HTML y CSS, así como extensiones de JavaScript adicionales. A diferencia de muchos frameworks web, solo se ocupa del desarrollo front-end.

Ejemplo

Se hará un pequeño ejemplo el cual incluirá los 4 conceptos ya explicados.

index.html


<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Calculadora</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link rel="stylesheet" type="text/css" href="index.css">
<script src="index.js"></script>
</head>
<body>
<div class="mydiv">
<h1>Calculadora</h1>
<h2>Esta es una pequeña calculadora de sumas</h2>
<form>
<div><span><p>valor: </p></span><span><input type="number" name="sum1" id="sum1"></span></div>
<div><span><p>valor: </p></span><span><input type="number" name="sum2" id="sum2"></span></div>
<div><input type="button" name="but1" id="but1" onclick="sumar();" value="Sumar"></div>
</form>
<h2 id="resultado"></h2>
</div>
</body>
</html>

_________________________________________________________________________________

Hasta este punto se puede tener el siguiente resultado



index.css


body{
background-image: url("bg.jpg");
}

.mydiv{
  width: 500px;
  height: 500px;
    margin: auto;
      border-color: #fff;
      border-style: dashed;
background-color: #000;
color: #fff;
}

h1, h2 {
text-align: center;
}

div{
margin: 10px;
}

form{
margin-left: 50px;
    margin-right: 50px;
}

input{
color: #000;
}

_________________________________________________________________________________

Hasta este punto se puede tener el siguiente resultado, además se añade la biblioteca de estilos de Bootstrap


index.js

function sumar(){
var sum1 = document.getElementById("sum1");
var sum2 = document.getElementById("sum2");
        var resultado = document.getElementById("resultado");
var result = parseInt(sum1.value) + parseInt(sum2.value);
resultado.innerHTML= ""+result;
}

_________________________________________________________________________________

Finalmente la página tiene la posibilidad de sumar números





jueves, 13 de diciembre de 2018

Clase 5: Miercoles 12 de Diciembre

Ciclo de Desarrollo de Aplicaciones Web


Análisis

Análisis de los requerimientos que son necesarios para la creación de la aplicación web.

Wireframes

Creación de un prototipo para una visualización de ejemplo de la página web

Diseño

Aparte del diseño visual brindado por los wireframes, se debe hacer la arquitectura interna de la aplicación, recordar patrones de diseño como n-capas anteriormente explicado en una clase anterior

Desarrollo

Se inicia la creación de la aplicación

Mantenimiento

Se utilizan las diferentes herramientas de mantenimiento de la aplicación.

________________________________________________________________________

Modelos de Programación y Web Stack tools


Modelo Tradicional

Importa el lenguaje y el sistema operativo en el cual se desea correr la aplicación

Modelo Web

No importa el sistema operativo y se puede usar cualquier lenguaje que permita la creación de aplicaciones web.

Web Stack Tools

Pila de etapas que se requieren para la creación de una aplicación Web
  • Interfaz de Usuario: herramientas como sketch o similares para creación de prototipos web o wireframes. Se encarga el UX Designer
  • Frontend: HTML, JavaScript, CSS. Se encarga el Junior Developer
  • Backend: NodeJS, RubyOnRails, Django.. Se encarga el Web Developer
  • Ops and Data: SQL, manejo de bases de datos. Se encarga el administrador de bases de datos.



En una arquitectura Cliente-Servidor se puede decir que la parte que puede ver el cliente es el FRONTEND y la parte del servidor es el BACKEND.

Para ser un desarrollador de Frontend es necesario el aprendizaje de 3 lenguajes diferentes como lo son:

HTML: lenguaje de marcado de hipertexto, se encarga de la estructura de las páginas web.
CSS: Se encarga de la estética de la estructura HTML.
JavaScript: Se encarga de la programación dinámica a nivel del cliente, da comportamiento al HTML.



Criterios para elegir un framework o tecnología de desarrollo sobre otra.

Si tienes que crear una aplicación web y aún estás pensando en que framework utilizar para crearla, puedes tomar en cuenta los siguientes tips antes de empezar.

  • Tipo de aplicación: Pensar en el nivel de dificultad de la aplicación.
  • Costo de desarrollo: Pensar en el presupuesto que se tiene para la aplicación.
  • Escalabilidad: Pensar en la escabilidad que se necesite, ya sea vertical u horizontal.
  • Time to market: El tiempo que se tiene antes de salir al mercado.
  • Seguridad: Pensar en las vulnerabilidades de las tecnologías y el nivel de seguridad que necesite su aplicación.

viernes, 7 de diciembre de 2018

Clase 3: Jueves 6 de Diciembre

Java Servlets

Los servlets son una forma de comunicar información desde la capa de presentación a la capa de lógica en una aplicación web. Normalmente los archivos HTML envían información mediante forms, está información es enviada a los servlets los cuales se encargan de procesar la información y tomar decisiones con base en la información.

Las funciones más utilizadas por los servlets son las siguientes.

@WebServlet(urlPatterns = {"/svrLogin"}) //Se encarga de mostrar la url que activa el servlet

    @Override
    public void init() throws ServletException {
        super.init(); //Método que se ejecuta cuando se crea el servlet
    }

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //Método para procesar las solicitudes
    }
    
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
        //Método utilizado cuando se tiene una solicitud GET
    }
    
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
        //Método utilizado cuando se tiene una solicitud POST
    }

    @Override
    public void destroy() {
        super.destroy(); //Método que se ejecuta cuando se destruye el servlet
    }

Java Server Pages(JSP)

Los JSP son archivos que se procesan como HTML, pero tiene ciertas funcionalidades adicionales. El problema que recaía en los archivos HTML era que eran estáticos, por lo cual su información interna no podía ser codificada. A diferencia de estos, los JSP pueden mostrar información dinámica mediante diversos comandos adicionales que será mostrados.

<% se ejecutan scriptlets java %>

<%= Despliega información a la salida %>

<%! se insertan en el cuerpo de la clase del servlet, fuera de cualquier método existente.>

Sesiones

Una parte importante de los servlets y los servidores web en java son las sesiones y como almacenar información global de la sesión en estos.

HttpSession session = request.getSession(); //Crear un objeto con la sesión
session.setAttribute("key", value); //Agregar un valor a una llave.
session.invalidate(); //Invalidar una sesión

Abrir sesión en el JSP

<% HttpSession session= request.getSession(; %>
<p><%= session.getAttribute("error") %></p>





Clase 2: Miercoles 5 de Diciembre

Modelo Arquitectónico básico

El modelo arquitectónico actual de las redes se compone de dos partes muy importantes, el cliente y el servidor.


Servidor

Se encarga de responder a las diversas consultas creadas por diferentes clientes, se encarga de alojar toda la información que vaya a ser consultada.

Cliente

Funciona como una terminal tonta o browser la cual se encarga de hacer peticiones al servidor para luego mostrar esa información al usuario.

Conexión

La conexión del cliente y el servidor se hace mediante la red, la cual mediante varios protocolos pueden comunicar la información. Uno de esos protocolos es el protocolo de transferencia de hipertexto o HTTP el cual permite la transferencia de información en la World Wide Web.
La idea principal era poder enviar ciertos recursos que pudieran ser procesados y entendidos por ambas partes, ya sea el cliente o el servidor, normalmente el servidor envia recursos como HTMLs y otros recursos que pudieran ser entendidos.

A estos recursos se les llama hipermedia, estos pueden ser texto, imágenes, videos, colores...
Normalmente los archivos HTML o sus diferentes variaciones como JSP, EJS, JADE... se componen de hipermedia e hipervínculos, los cuales son conexiones o direcciones a otras páginas web.

World Wide Web

Sistema de distribución de documentos de hipertexto o hipermedia interconectados y accesibles vía Internet. Con un navegador web, un usuario visualiza sitios web compuestos de páginas web que pueden contener textos, imágenes, vídeos u otros contenidos multimedia, y navega a través de esas páginas usando hipervínculos.

Con el uso de la world wide web también se buscaba poder tener los siguientes beneficios para los usuarios.

Ubicuidad

La cual es la posibilidad de tener un browser navegador de la world wide desde casi cualquier dispositivo en red, para que todos los usuarios tuvieran accesibilidad.

Compatibilidad cruzada e inherente entre plataformas

Sin importar los diferentes dispositivos y sus sistemas operativos, cualquier usuario puede entrar a la World Wide Web y mirar el contenido de la misma forma que los demás usuarios.

Actualización

Capacidad de actualizar el contenido sin tener que tocar el software de los millones de usuarios.

Ventajas 

Aparte de la disponibilidad que nos da la World Wide Web, también se le puede agregar la seguridad que reciben los datos ya que estos la mayoría de veces se encuentran de forma disponible, la integridad de los datos no fue alterada y son confidenciales los datos del usuario.

Vista del desarrollador

Para el desarrollador la creación de una aplicación web es compleja así como su depuración. Entre las complejidades que se encuentran se puede decir la cantidad de lenguajes que se deben considerar para la creación de esta ya que la creación de un sitio web como los actuales necesitan muchos lenguajes como los siguientes: HTML, CSS, JavaScript, Bootstrap, en la parte de Frontend y Java, Php, Python, Ruby, Javascript... en la parte de Backend añadiendo SQL para las bases de datos. Además se debe comprender la arquitectura de N capas de la aplicación web.

Desventajas

Además de la complejidad al crear las aplicaciones, también es una desventaja el mantenimiento y la ampliación de está tecnología, además la cantidad de protocolos y tecnologías que se necesitan para el funcionamiento de un sitio web.

Patrones de diseño

Abstracción

Se busca evitar la complejidad al abstraer solo las características esenciales del diseño de la aplicación web.

Cliente servidor

Se espera seguir el diseño arquitectónico de tener un servidor al cual se le pueden conectar una n cantidad de clientes para hacer peticiones de contenido.

Arquitectura N capas

La idea principal es separar la aplicación web en diferentes partes para que estás pueden ser creadas aparte y así poder tener un bajo acoplamiento en el diseño.

  • Separación de ocupaciones

La idea es al separar las partes del diseño poder trabajarlas por separado, por lo cual los desarrolladores pueden algunos trabajar en una parte mientras otros en otra parte, también a nivel de diseño estás partes solo tienen una funcionalidad y no ser multifuncionales.

  • Arquitectura de 3 capas

Uno de los diseños más utilizados es el modelo de tres capas el cual se conforman por capa de presentación, capa de lógica y capa de datos, existen ciertos patrones de diseño como el MVC que utilizan esta técnica de tres capas. Estás capas se pueden explicar como:


  1. Presentación: Se encarga de la interfaz del cliente.
  2. Datos: Se encarga de el almacenamiento de datos, normalmente se utilizan bases de datos y contenedores de contenido multimedia.
  3. Lógica: se encarga de la lógica del programa, como el procesamiento de los datos, funcionalidades de la aplicación y también como puente entre la capa de datos y presentación.

jueves, 6 de diciembre de 2018

Clase 1: Martes 4 de Diciembre


Contexto Histórico


Detalles de la creación del desarrollo Web La internet inició despues de la era militar con ARPANET o Advanced Research Projects Agency Network

con la creación del protocolo de comunicación TCP/IP se logró la creación de redes locales de comunicación en universidades estatáles y luego entre ellas lo que dio inicio a las redes globales WWW y al internet. 

Existieron 3 versiones del desarrollo web según sus caracteristicas principales.

Web 1.0

La web 1.0 era estática por lo cual las páginas web solo podían mostrar datos que eran ingresados por algún administrador. Su única función era mostrar información estática.

Arquitectura

La arquitectura era muy simple, un cliente en una terminal tonta o browser recibía  información de páginas web en el servidor.

Web 2.0

A diferencia con la Web 1.0, la 2.0 tenía la capacidad de añadir contenido dinámico y solicitar información.  Los usuarios interactuan y colaborar entre sí, como creadores de contenido. Se popularizaron sitios como blogs, wikis, redes sociales y entornos de recursos compartidos.

Web 3.0

Además de lo incorporado en web 2.0 se añadieron diferentes caracteristicas como bases de datos, inteligencia artificial, creación de APIs para contenido móvil y la posibilidad de páginas web con diseños responsive.

Arquitectura web 2.0, 3.0

Se añadieron diferentes servicios como bases de datos para poder almacenar datos dinámicos. Y la posibilidad de crear scripts para el procesamiento de estos datos.



Concepto de Red

La red se puede definir como una conexión entre muchas computadoras, cada una computadora en red tiene una dirección física MAC y una lógica llamada IP, con estás se pueden comunicar mediante protocolos de comunicación.



Protocolos de comunicación

Los protocolos se encargan de comunicar información entre las diferentes capas del modelo de red TCP/IP

manejan enrutamiento, seguridad y traducción de los datos comunicados.













Temas relacionados

Neutralidad de la red

Todo el tráfico en red debe tratarse por igual, ninguna empresa puede cobrar por un servicio de red en especial a menos que sea un proveedor de servicios.

Big data

Análisis de grandes cantidades de datos para descubrir hechos.

Computación en la nube

Recursos compartidos almacenados en internet los cuales pueden ser accesados desde cualquier computadora o dispositivo en red.

Privacidad y seguridad

Manejo seguro de los datos como integridad, confidencialidad y disponibilidad, se busca que los datos en red no puedan ser hackeados y alterados de forma malintencionada.