0% encontró este documento útil (0 votos)
49 vistas21 páginas

1 Conceptos de La Programacion

Este documento presenta una introducción general a los conceptos básicos de la programación, incluyendo lenguajes de programación, paradigmas, niveles de lenguajes, IDEs, control de versiones, desarrollo web y móvil. Explica los diferentes tipos de lenguajes de programación, paradigmas como la programación estructurada y orientada a objetos, y conceptos clave del desarrollo web como front-end, back-end, frameworks, librerías y más.

Cargado por

Ivon Mendoza
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
49 vistas21 páginas

1 Conceptos de La Programacion

Este documento presenta una introducción general a los conceptos básicos de la programación, incluyendo lenguajes de programación, paradigmas, niveles de lenguajes, IDEs, control de versiones, desarrollo web y móvil. Explica los diferentes tipos de lenguajes de programación, paradigmas como la programación estructurada y orientada a objetos, y conceptos clave del desarrollo web como front-end, back-end, frameworks, librerías y más.

Cargado por

Ivon Mendoza
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 21

Open bootcam ruta de desarrollo full stak

Nivel inicial

Conceptos de la programación

1- Introducción al ecosistema de la programación

1.1- ¿Qué es un lenguaje de programación?

Es un lenguaje con reglas gramaticales bien definidas que permite al programador escribir
instrucciones en formas de algoritmos para controlar el comportamiento de un sistema en
general.

1.2- Paradigmas de la programación.

Imperativo: es el paradigma más antiguo, crea una secuencia de instrucciones definiendo todo
paso por paso.

Declarativo: a diferencia del imperativo el declarativo se centra en el resultado final y no en los


pasos a seguir para llegar a este.

Funcionales: consiste en escribir conjuntos de funciones o bloques de código para introducir un


parámetro y obtener otro y asi ir creando un programa

Procedimentales: consiste en escribir línea por línea para formar una instrucción.

1.3- niveles de lenguajes de la programación

Los lenguajes de programación se agrupan por niveles dependiendo de sus capacidades


especificas, mientras más bajo el nivel más características especificas podemos tocar en el
ordenador.

0- Lenguaje maquina: es el lenguaje que entiende las maquinas pero que al mismo tiempo es
ilegible al ser humano.
1- Lenguaje ensamblador : copila la información en forma de código del programador y lo
transforma a lenguaje de maquina
2- Bajo nivel: están directamente relacionados con las características del hardware y la
arquitectura (aquí también estarían incluidos el lenguaje de máquina y el ensamblador)
3- Medio-bajo nivel: tienen capacidades de alto nivel, C, C++ por ejemplo tiene acceso a la
memoria del procesador que estemos utilizando, son lenguajes modernos que tienen la
capacidad de relacionar con el propio hardware con el que estén tratando.
4- Medio-alto nivel: son lenguajes modernos por ejemplo java scrip, C#, php, python, etc.
5- Alto nivel: son frameworks, paradigmas y librerías basados en lenguajes de medio nivel.
1.4- proceso de conversión.

Entendemos como proceso de conversión la ejecución de código en algún tipo de lenguaje


moderno traducida al lenguaje de máquina. Hay dos tipos de maneras de llevar a cabo esta
traducción con un lenguaje compilador por ejemplo C++, o un lenguaje interprete por ejemplo
JavaScript o Python.

1.5- IDEs.

Desarrollo de código (programación)

Entorno de desarrollo integrado IDE: son programas especialmente diseñados para escribir código
ya que cuanta con herramientas específicas para un mejor desempeño alguno de los más usados
son; visual studio code, atom, sublime text, pycharm, notepad++.

1.6- Control de versiones: es una manera de editar código tanto individuamente o como equipo,
consiste en copiar un bloque de código identificarlo para diferenciarlo del otro y escribir o editar
sobre la copia, hay plataformas que son más ideales para estas tareas como por ejemplo SVN
(SubVersion), CVS (Concurret Version System), Git, GitHub & GitLab, siendo estos últimos los más
usados.

2- Lenguajes de programación

2.1- introducción a los lenguajes de programación

2.2- lenguajes y usos

2.3- lenguajes actuales

2.4- lenguajes más demandados

3- paradigmas de la programación

En la programación Los paradigmas son maneras diferentes de resolver un problema, hay dos
tipos de paradigmas, imperativos y declarativos, una programación imperativa es aquella que se
basa en instrucciones detalladas, mientras que la declarativa se basa en dar instrucciones no
detalladas con una intención especifica

3.1- programación estructurada: Consiste en dar instrucciones de manera ordenada al programa o


hardware para que ejecute órdenes en forma de secuencia

3.2- Programación orientada a objetos: consiste en establecer funciones a objetos específicos que
se relacionen entre si dentro de un sistema, estos poseen dos propiedades, datos > atributos
(nombre, nombre de usuario, apellido, edad, Email, etc) funcionalidad > métodos (login, registro,
editar perfil, logout, comprar, etc).
Nota: Como se crean los objetos? Tomando y uniendo atributos y métodos creamos un plantilla y
en función de esta podemos crear objetos diferentes.

Conceptos clave de la programación orientada a objetos:

Abstracción: identifica los atributos de cada usuario y la funcionalidad de cada objeto

Encapsulamiento: reúne todos los atributos y métodos dentro de un mismo objeto para tratar ese
objeto como una variable o un registro dentro de una memoria mientras que cada uno de ellos
tienen sus propios atributos y sus propios métodos.

Herencia: toma un objeto para sacar de este otro igual y añadirle nuevos atributos que no tendrá
el primero.

Polimorfismo: significa que una misma función puede tener distintas formas en función del
atributo del propio objeto

3.3- Programación Funcional: significa encapsular funciones para reutilizarlas en un futuro, es un


paradigma que se puede usar tanto programación estructurada como en programación orientada
a objetos, sus características son las siguientes:

Funciones puras: son funciones cuyo resultado siempre es el mismo independientemente de


cuantas veces se vuelvan a llamar.

Funciones sin estado: no poseen variables internas o estado interno que se estén utilizando dentro
de las mismas funciones.

Recursividad: se trata de una función que se llama así misma de nuevo.

4- Desarrollo Web

4.1 Frontend y Backend

Front End: es el lado del cliente, es la cara visible de un sistema.

Back End: es el lado del servidor, encargado de proveer la información que necesite el Front End.

Full Stack: es el desarrollador que se especializa tanto en FrontEnd como en BackEnd.

4.2 lenguajes de servidor y cliente

Lenguajes del lado del servidor: los más comunes son los siguientes: Java, Ruby, PHP, Python, C#,
ASP.NET, perl, node JS.
Lenguajes del lado del cliente: los más utilizados JavaScrip, HTML, CSS, TypeScrip, AJAX.

4.3 CMS (Content Management System)

Es un software que tiene funciones de FrontEnd y BackEnd, se crearon para volver más fácil la
creación de ciertas categorías de páginas web bastante comunes, como blogs o tiendas de
Ecomerce, los más conocidos son los siguientes: WordPress, Joomla. Drupal, Magento, Prestashop,
Shopify, odoo, todos ellos programados en PHP y JS.

4.4 Frameworks

En programación, un framework es un marco de trabajo que tiene como objetivo facilitar la


solución de problemas que pueden surgir al programar. Los frameworks aceleran el proceso de
programar facilitando tareas como la organización del código o el trabajo en equipo dentro de un
proyecto, por ejemplo. 

Los frameworks son propios de cada lenguaje, de manera que como existen gran variedad de
lenguajes también existen gran variedad de frameworks, por ejemplo AngularJS, VueJS, y reactJS
son frameworks de JavaScript.

Frameworks de pruebas unitarias: se usan para realizar pruebas unitarias y asegurarnos que cada
cambio que hagamos dentro del software ni afecte la funcionalidad ya existente. Como ejemplo
tenemos Jest para JS, JUnit para Java, PHP Unit para PHP, N Unit para .NET, Pytest para Python.

4.5 Librerías

Según EDteam es un conjunto de funcionalidades empaquetadas y reutilizables que resuelven


necesidades especificas de un proyecto, la diferencia más notable con un framework es que la
librería es una herramienta con una sola utilidad específica y un framework es un conjunto de
herramientas que trabajan en un proyecto completo bajo ciertas reglas, a continuación veremos
una tabla comparativa con otras diferencias

Tienen funcionalidades integradas para que no Eres libre de usar las librerías que desees en la
necesites librerías externas. estructura que quieras
La compatibilidad de sus funcionalidades está Debes controlar la compatibilidad de cada
asegurada. librería con las demás.
El framework define la forma en la debes Puedes usar varias librerías según tus
desarrollar el proyecto. necesidades

Las librerías de programación son conjuntos de archivos de código que se utilizan para


desarrollar software. Su objetivo es facilitar la programación, al proporcionar funcionalidades
comunes, que ya han sido resueltas previamente por otros programadores. Las librerías mas
comunes del lado del cliente son JQuery, React, Boostrap.
4.6 servidores web

Un servidor es un programa informático que proporciona servicios a otros programas


informáticos (y sus usuarios) en el mismo equipo de cómputo o en otros. La computadora en la
que se ejecuta un programa de servidor también se conoce con frecuencia como un servidor,
algunos de los más comunes son: APACHE, NGINX, OpenLitenSpeed, Apache Tomcat, node JS,
Microsoft IIS.

4.7 navegadores web:

Introducción. Un navegador web es un programa que permite ver la información que contiene
una página web. El navegador interpreta el código, HTML generalmente, en el que está escrita la
página web y lo presenta en pantalla permitiendo al usuario interactuar con su contenido y
navegar. Entre los más conocidos están Edge, Chrome, Firefox, Brave, Opera y Safari exclusivo de
Apple.

4.8 Stacks

Es un conjunto de servicios tecnológicos utilizados para construir y ejecutar una sola


aplicación.

5- Desarrollo móvil

5.1 introducción al desarrollo móvil

-plataformas móviles: al día de hoy android ocupa aproximadamente el 75% de los dispositivos a
nivel mundial y IOS el 23% aproximadamente,

-IDEs y Emuladores para desarrollo móvil: XCode para IOS con Swift como lenguaje y Android
Studio para Android con Kotlin y Java como lenguajes.

-Frameworks y Librerías para desarrollo móvil: IONIC con este framework podemos crear una
aplicación web que se pueda ejecutar en un dispositivo móvil a través de un emulador web
(WebView), usando un puente llamado bridge (apache cordova) para acceder a las funciones
nativas de nuestro móvil. Xamarin que se usa en el entorno de C# y .NET, Flutter en el entorno de
Dart y React Native en el entorno de JavaScript y React.

6- Desarrollo multiplataforma

6.1 introducción al Desarrollo multiplataforma


-El desarrollo multiplataforma se trata crear un solo código para que al compilarlo cree diferentes
tipos de archivo para diferentes tipos de sistemas operativos.

- Los lenguajes más utilizados para este tipo de desarrollo al día de hoy son los siguientes; Java
Script, Java, Python, C#, Ruby y Dart, al combinar estos lenguajes con librerías de diferentes
frameworks lograremos desarrollar aplicaciones multiplataforma.

-algunos de los frameworks de desarrollo multiplataforma más usados son los siguientes; Cordova,
React Native, Native Script, Appcelerator que se utilizan con JS, Kivy y BeeWare que se usan con
Python, Flutter se usa con Dart, Codename One se usa con Java, y Ruby Motion que se usa con
Ruby.

-a continuación una lista de los frameworks más demandados en el mercado: Flutter, Ionic, React
Native, Xamarin, Native Script, Appcelerator.

7- Code Review

7.1 introducción al Code Review

Un Code Review consiste en tomar una versión de código que conlleve una edición y compararla
con la versión anterior para verificar que este siga funcionando y así evitar posibles errores.

Existen Plataformas online que nos ayudan a revisar nuestros códigos tanto de forma manual
como automática algunos de los más conocidos son los siguientes; CodeFactor, Collaborator,
GitLab, CodeStriker, , sonarqube, GitHub y Gerrit, para hacer una revisión de código solo debemos
tener la versión antigua y nueva de nuestro código y a través de ayudas visuales podremos ver si
nuevas líneas se han añadido, modificado o eliminado.

8- Bases de datos

8.1- Bases de Datos y Procesos de desarrollo

Una base de datos es un conjunto de información y consultada sistemáticamente. Ahora, como se


llevan las bases de datos tradicionales en papel a una base de datos digital controlado por
software? A través de un sistema gestor de bases de datos, cabe recalcar que no se debe
confundir “base de datos” con “sistema gestor de base de datos” ya que el primero es la
información y el segundo es el software.

SQL : significa structured query language también conocida como base de datos relacionales, nos
sirve para consultar y escribir información entre otras cosas, dicho lenguaje se divide en 3 más.
DDL (data definition language) que define las estructuras, DML (data manipulation language) con
el cual se usa para llenar de información las tablas, leer, actualizar, borrar datos, etc. DCL (data
control language) con el cual se controla el acceso a la base de datos.
NoSQL: son bases de datos no relacionales, porque no se necesita el modelo entidad relación.
tienen como prioridad la accesibilidad de los datos más que la integridad, las usan las grandes
empresas para acceder rápidamente a millones de datos

Que podemos hacer con un sistema gestor de base de datos?: Podemos crear la estructura de la
base de datos, podemos escribir información y consultarla, asegurar la integridad de la base de
datos e incluso definir los permisos de quien puede acceder a esta información.

continuación veremos cuáles son los pasos a seguir para crear una base de datos

a) Diseño conceptual: se trata de crear toda la idea de la base de datos

b) Diseño lógico: se trata de escoger las tecnologías necesarias para trasladar el concepto de la
idea a la realidad.

c) diseño físico: se trata de crear cada una de las tablas (modelos) en la plataforma que hayamos
creado la base de datos.

8.2- Bases de datos SQL y NoSQL

Las bases de datos de datos de SQL son de tipo relacionales ya que podemos crear relaciones en
base a claves con otras tablas

Proveedores de bases de datos MySQL, PostgreSQL, MariaDB, Oracle DATABASE.

Bases de datos NoSQL: las bases de datos kay-value son usadas comúnmente para aplicaciones
rápidas con bases de datos no muy grandes, las bases de datos NoSQL mas usadas son mongoDB y
Cloud Firestore que trabajan con documentos, cassandra y redis que son tipo key-value, y por
ultimo GrapgQl que se dedica a las bases de datos con grafos .

9- DevOps/CI/CD

9.1 DevOps: Es una metodología de desarrollo que consiste en ir desarrollando y publicando


código poco a poco.

Según EDteam DevOps es un conjunto de cultura, procesos y herramientas que permiten entregar
actualizaciones de software a alta velocidad, garantizando la calidad del código, la estabilidad de la
aplicación y evitando el aislamiento de los equipos, a continuación veremos las etapas a seguir
para poner en práctica esta metodología,
a) Planeación: es la etapa donde se analizan los requerimientos del proyecto o de la funcionalidad
que se está solicitando, se planifica como desarrollarla según la metodología que se está
utilizando. Las herramientas más populares para llevar a cabo este paso son Jira, Asana, Trello y
Notion.

b) code: se le asignan las tareas a los programadores para escribir el código según el objetivo
solicitado. . Las herramientas más populares para llevar a cabo este paso son GitHub, GitLab,

c) build: se juntan los códigos de los programadores y se integran en máster para luego hacer una
compilación que entrega un paquete o ejecutable luego de pasar los test de integración, Las
herramientas más populares para llevar a cabo este paso son Apache Maven, Gradle

d) test: se prueba el software para garantizar que funciona según los requerimientos que se
pidieron en el paso inicial. Las herramientas más populares para llevar a cabo este paso son
Selenium, Gremlin

e) release: consiste en que luego de pasar los test de aplicación se cree una imagen, artefacto o
ejecutable (dependiendo de la metodología de desarrollo y el tipo de aplicación) listo para pasar a
producción. Las herramientas más populares para llevar a cabo este paso son Jenkins, GitHub
Actions, Gitlab

f) deploy: consiste en enviar esta imagen, paquete o ejecutable a los servidores de producción
para ser usado por los usuarios finales. Las herramientas más populares para llevar a cabo este
paso son Jenkins, GitHub Actions, Gitlab

g) operate: engloba todas las tareas de configuración, sistemas, optimización, implementación de


infraestructura, servidores, bases de datos, replicas, cache, temas complejos que son manejados
por arquitectos Cloud. Las herramientas más populares para llevar a cabo este paso son chef,
ansemble, peapep, terrafore para la parte que consiste en configurar y dar mantenimiento a toda
la infraestructura como código. Y para el tema de los contenedores y micro servicios los más
usados son Docker y Kubernetes.

h) monitor: consiste en usar herramientas que están siempre mirando la aplicación para saber si
está en riesgo de caerse o fallar, para atender la falla y resolverla lo más rápido posible, Las
herramientas más populares para llevar a cabo este paso son New Realy, amazon cloub watch,
graphana y prometeus

DevOps es un marco de trabajo y una filosofía en constante evolución que promueve un mejor
desarrollo de aplicaciones en menos tiempo y la rápida publicación de nuevas o revisadas
funciones de software o productos para los clientes.

9.2 CI/CD es un conjunto de técnicas que nos permiten pasar por el siclo de vida DevOps de
manera automática.
CI (Continuous Integratión) consiste en crear pruebas automatizadas, que cada vez que un
programador envíe su código este corra de manera automática revisando que este cumpla con
ciertos estándares o políticas establecidas previamente, y si no entra en conflicto con otro código
ya existente será aprobado.

CD (Continuous Delivery/ Deployment/Distribution) Continuous Delivery consiste en tomar un


código que ya paso los test de integración y crear un ejecutable listo para producción, Continuous
Deployment es la siguiente etapa es decir consiste en mandar el código a producción
directamente y Continuous Distribution es una forma de agrupar a los dos últimos.

9.4 Herramientas y servicios más conocidos en el mercado que brindan el soporte CI/CD

Ansible, Helms, Jenkins, GitLab (CI), GitHub (GitHub Actions) y Bitbucket Pipelines.

10- Contenedores y Orquestacion.

10.1 contenedores: es un entorno de ejecución para un software que contiene todas las
dependencias que necesita dicho software, contiene todo lo que necesita el sistema operativo
para funcionar, lo interesante es que es un paquete aislado del sistema que puede tener versiones
distintas de múltiples aplicaciones sin que hagan conflicto con las que tenemos en nuestro
ordenador.

Docker es un gestor de contenedores que básicamente lo que hace es simplificar la gestión de


estos, el trabajo con docker tiene 3 etapas;

Docker File: es un documento de texto que contiene todos los comandos e instrucciones para
instalar todas las dependencias de una aplicación, con ese docker file se crea una imagen.

Docker Image: básicamente es un ejecutable que ya contiene todas las dependencias y el software
que vamos a correr allí, a partir de esa imagen se puede crear un contenedor.

Docker Container: es la imagen ya funcionando.

Tomando en cuenta que la imagen se crea a partir de un docker file que es un documento de texto
nosotros podemos llevar el registro de versiones utilizando Git, a esta acción se le llama registro
de docker y es la manera en la que podemos asegurarnos que nuestro equipo de desarrollo y
nosotros estamos en la versión correcta del contenedor cada quien en su entorno.

10.2 Orquestacion: se trata de organizar y gestionar contenedores, lo que hace Kubernetes es


automatizar los procesos con los contenedores, la asignación de recursos y el despliegue, y todo
esto lo hace manera declarativa es prácticamente lo que hace docker con el docker file pero en el
caso de Kubernetes esta función se llama plano de control donde deben estar todas las
instrucciones que deben de tener una implementación de Kubernetes y cada implementación se
llama kloster
Nota: Las aplicaciones pueden crearse de dos maneras, monolítica que significa que todas las
funciones de la aplicación están en un solo paquete o con arquitectura de micro servicios en el
cual cada micro servicio es como una mini aplicación con una función específica.

11- Cloud

11.1 cloud computing: se trata de un conjunto de recursos computacionales de gran escala


conectados a través de una red de alta velocidad que se pueden consumir bajo demanda.

lo que conocemos como cloud (nube) básicamente es computación por internet, es decir que en
lugar de usar la velocidad, almacenamiento y procesamiento de nuestra computadora usaremos
los recursos de otro ordenador al cual nos conectaremos vía internet.

Existen 3 pilares que permiten que la nube funcione

1- Vitalización: consiste en tener varios sistemas operativos funcionando en simultáneo


sobre el mismo hardware.
2- Uso bajo demanda: consiste en aumentar o disminuir el uso de la nube según nuestras
necesidades.
3- Despliegue rápido y escalable: consiste en acceder a una mayor capacidad y acceso de la
nube rápidamente al ritmo que vaya aumentando nuestras necesidades para así acceder a
un despliegue rápido sin comprometer la continuidad de nuestra aplicación.

Existen 3 tipos de nube

1- Privada: es cuando una empresa despliega su propia infraestructura, computadoras y


tecnología de red para que estos recursos estén disponibles solo para dicha empresa.
2- Publica: es cuando una empresa crea esta misma infraestructura pero la alquila al uso
público cobrando un monto mensual por esta.
3- Hibrida: consiste una mescla de nube pública y probada.

Existen diferentes servicios que se entregan a través de la nube algunos de los más comunes son
los siguientes

 Software as a Service (SaaS) significa software entregado como servicio, va dirigido a


usuarios finales para que hagan uso de algún sistema digital sin la necesidad de
instalar o configurar algo.
 Platform as a Service (PaaS) significa plataforma entregada como servicio, va dirigido
a desarrolladores que necesiten una infraestructura para desplegar una aplicación en
desarrollo para poder probarla en un entorno real de producción.
 Infrastructure as a Service (IaaS) significa infraestructura entregada como servicio
consiste en construir una infraestructura específica según los requerimientos
específicos de algún cliente, los desarrolladores que hacen este tipo de trabajo se les
conoce como arquitectos en nube o cloub architec en ingles.
Algunas de Las empresas de servicios cloud mas usadas son aws, Google Cloud y Azure

12 Testing

12.1- Quality Assurance: es un departamento de control de calidad de todo lo relacionado al


software, es el encargado de testear el sistema operativo creado por una empresa para asegurarse
de que funciona cumpliendo los estándares previamente establecidos

12.2- Test de cajas y tipos de test

a) Test de cajas: Son técnicas de testeo compatibles

b) Tipos de test:

Funcionales:

 Funcionalidad
 Test de errores
 Apoyo en los requerimientos del usuario final/cliente

Test no Funcionales:

 Rendimiento
 Tiempos de carga
 Stress test
 Escalabilidad
 Accesibilidad
 UX/UI
 Test de seguridad

12.3 Modelos de testing:

Modelo en cascada (lineal): se caracteriza por testear cada fase con respecto a la anterior
Modelo iterativo – repetitivo: se caracteriza por tratar cada fase del testing como un incremento
cada fase suele estar definidas por sprints.

Modelo de testing en V: este modelo es una especie de evolución del testing en cascada.

Modelo de testing en espiral:


13- introducción a las colas de mensajes

La cola de mensajes o Message Queuing (en ingles) consiste en establecer una conexión desde el
FrondEnt al BackEnd pare hacer una solicitud esperando una respuesta con la información
solicitada, como todos sabemos los servidores a los que está conectado el BackEnd tienen recursos
finitos, y en un uso masivo de nuestra aplicación donde tendríamos múltiples solicitudes del
FrontEnd al BackEnd estos recursos llegarían a su límite, ¿que tendríamos que hacer si los recursos
del BackEnd llegaran a colapsar? En ese caso la solución sería hacer una cola de mensajes la cual es
una interfaz intermedia que nos permite almacenar en cache los mensajes que van llegando y
después llevarlos de forma ordenada al BackEnd para no colapsar el sistema.

Tipos de colas de mensajes más usadas en el desarrollo Web

Estructura punto a punto: se caracteriza por gestionar la información de manera simple y


ordenada, se divide en tres partes

 Producer: es el emisor de la información.


 Queue: es el gestor de la información, la ordena y simplifica.
 Consumer: es el consumidor de la información.

Estructura Publicador - Suscriptor

Tipos de proveedores de gestores de colas de mensajes: RabbitMQ y Redis.

14- Cliente-Servidor

14.1 Definiciones: consiste en conectar un dispositivo a través de internet con un servidor para
solicitar una información específica, la página a solicitar se conecta con sus servidores, accede a
una base de datos, realiza una serie de cálculos y devuelve la información al dispositivo que la
solicito previamente.

Una aplicación cliente es un sistema a través del cual podemos visitar distintas páginas web e
interpretar esos HTML, CSS y JavaScript que nos envían los servidores que alojan esas páginas
web. Las aplicaciones cliente más usadas a día de hoy son los navegadores chrome de google y
safari de Apple, sin embargo algunas aplicaciones como PhotoShop también acceden a internet
tanto para hacer actualizaciones, descargar recursos, etc, eso también se consideraría una
aplicación cliente.

14.2 estructuras de cliente-servidor por niveles

* Estructuras de 1 nivel: consiste en tener todo en un mismo dispositivo (cliente, servidor, base de
datos

* Estructura de 2 niveles: consiste en tener un dispositivo cliente conectado a través de internet a


otro dispositivo en el cual están almacenados los servidores que gestionan las peticiones que
llegan del cliente a través de internet y que en ese mismo dispositivo también este la base de
datos. El hecho de que el servidor y la base de datos tengan la misma ubicación hace que la
conexión entre estos sea más rápida sin la necesidad de intermediarios ente si.

* Estructura de 3 niveles: consiste en tener un dispositivo que a través de internet conecte a un


servidor sin la necesidad de acceder a una base de datos o en caso de tener la necesidad, el propio
servidor se encargara de a través de internet acceder a un servicio que le dirija a la base de datos,
la base de datos le devuelve la información al servidor y el servidor al dispositivo cliente todo a
través de internet.

* estructura N niveles: consiste en acceder desde el dispositivo cliente a todos los niveles que haga
falta para obtener la información solicitada incluso a múltiples servidores.

14.3- tipos de servidores modelo P2P

Servidores Web: son aquellas aplicaciones de servidor que nos sirven todos los archivos necesarios
para que podamos renderisar una web a través de una navegador moderno.

File Servers o FTP (file transfer protocole): la información que se intercambia en este tipo de
servidores son solo archivos, MEGA o Google Drive son de este tipo.

Email Servers: como su nombre lo indica son aplicaciones que nos permiten tener un servicio de
Email.

VPN Servers: Significa Virtual Points of Network, nos permiten acceder a diferentes servicios que
están alojados de forma local pero remota.

Proxy Servers: es similar al VPN con la diferencia que este nos permite acceder a ciertas
direcciones haciéndonos pasar como si estuviéramos en otra dirección IP.

Modelo P2P (Peer to peer)

Es un modelo decentralizado donde el modelo cliente-servidor ya no existe se asemeja al sistema


BlockChain.

15- MVC

15.1 Modelo Vista Controlador

Se trata del patrón de diseño y arquitectura de aplicaciones más utilizado actualmente sobretodo
en desarrollo web, cada sigla representa una función específica dentro del desarrollo de nuestra
aplicación

M (modelo): su función es acceder y manipular los datos.

V (vista): su función es mostrar los datos del modelo y proporcionar la interactividad al usuario.

C (controlador): su función es coordinar al modelo y a la vista.


16- Protocolo HTTP

¿Porque es importante conocer los protocolos HTTP? Todas las peticiones de web necesitan un
protocolo. La web se basa en el protocolo HTTP y es este protocolo el que nos permite
intercambiar información en esta.

¿Qué es un protocolo? Es un conjunto de reglas que tenemos que seguir para obtener un
resultado.

16.1 Introducción a HTTP: son las siglas de Hyper Text Transfer Protocol y es el estándar de
comunicaciones vía Web, hace referencia a la conexión vía internet para obtener Datos, permite la
transferencia de HTML, CSS y JS para el comportamiento visual de la web, archivos, videos, etc

A continuación veremos un ejemplo con el método GET de cómo obtenemos diferentes partes que
conforman nuestra página web, incluso partes que no son indispensables pero si complementarias
como podría ser una imagen, un video incluso un anuncio:

¿Qué es un protocolo? Es un conjunto de reglas estandarizadas con el fin de que diferentes


dispositivos, lenguajes y tecnologías sean capaces de conectarse entre si.

Mensaje y estructura

16.2 Versiones de HTTP

HTTP 0.9-1991 Primera versión, solo soporta GET. No soporta Headers


HTTP 1.0-1996 Se usa sobre todo en servidores proxy. Métodos GET, HEAD y POST
HTTP 1.1-2001, Más utilizado a día de hoy. Conexiones persistentes activadas por defecto.
2006, 2011 Pipelining
HTTP 2.0-2015 Misma semántica que la V1 mejoras en el empaquetamiento de datos
HTTP 3.0-2021 Ultima versión, sustituye protocolo TCP por UDP

16.3 métodos en HTTP


Los tipos de peticiones son sugerencias que cada servidor las tiene que tratar como mejor le
convenga, Vamos a dividir las peticiones en dos grupos separando las que se utilizan
constantemente de las que se ocupan solo en casos muy específicos.

Peticiones más usadas


GET obtener datos a través de un request y de una response
POST enviar datos y crear nuevos recursos
PUT enviar datos y editar recursos ya existentes
DELETE Eliminar recursos existentes
PATCH Enviar datos y editar recursos existentes de forma parcial

Peticiones no tan usadas


TRACE Solicita al servidor que introduzca en la respuesta todos los datos que reciba en la
petición
HEAD Igual que el GET, pero solo obtiene los encabezados, más rápido que GET
OPTIONS Devuelve los métodos HTTP que el servidor soporta para una URL especifico
CONNECT Se usa para saber si se tiene acceso a un host
UPDATE Modifica el contenido y las propiedades “obsoletas” de un recurso
versionado/actualiza
MOVE Mover un recurso a un URL especificado en el header
MKCOL Crea una conexión en el URL especificado
PROPFIND Obtiene las propiedades de un recurso especificado en el URL
PROPPATCH Modifica las propiedades de un recurso especificado en el URL
MERGE fusiona dos recursos especificados en la petición – los convierte en uno
LABEL Sirve para modificar la etiqueta de un recurso

17 API RESTFul

17.1 API: La interfaz de programación de aplicaciones, conocida también por la sigla API, en inglés,
application programming interface, es un conjunto de subrutinas, funciones y procedimientos que
ofrece cierta biblioteca para ser utilizada por otro software como una capa de abstracción. A
continuación veremos una serie de términos que se usan en esta área de las APIs.

* Interfaz: es una capa de abstracción para que dos sistemas se comuniquen entre ellos.

* API: es una interfaz para que se comuniquen aplicaciones y programas de software para
compartir datos entre ellos.
* Arquitectura de software: es la forma en la que está diseñado un sistema, su organización,
comunicación y las funciones que cumplen cada uno de ellos.

* Servicio Web: es un sistema que permite la comunicación entre equipos que estén en una red,
tienen que seguir ciertos estándares, seguir el protocolo HTTP y es la base de las APIS remotas.

* Rest: es una arquitectura, las APIs pueden ser de varios tipos uno de estos es la APIRest, la
arquitectura Rest significa Representational State Transfer (representación de transferencia de
estado) con esta arquitectura podemos guardar datos en cache, impedir que el estado se envíe en
las peticiones, definir qué datos permitimos que otra aplicación acceda, revise o manipule de
nuestra aplicación, cuando se crea un servicio web usando la arquitectura Rest se está hablando
de ResteFul .

* XML: significa Extensible Markup Language, es un formato para enviar datos que se ha usado
casi siempre ya que es un formato tradicional.

* JSON: son las siglas de JavaScript Object Notation, es el formato más usado a día de hoy para
transferir información ya que es fácil de entender y manipular.

* Token: es un objeto que contiene todos los datos de autenticación que se le otorgan cuando
iniciamos sesión en alguna web por medio de una APIRest privada por primera vez. Cada vez que
iniciemos sesión la API nos devolverá este objeto y cada vez que solicitemos una información
adicional el servidor verificara si el token está vigente y ya no nos pedirá una nueva autenticación,
el formato más común para los tokens en APIs Rests es JWT.

Tipos de API
Desarrollar una API Rest

 Consultar recursos (URI): cada recurso e información que consultamos tiene un


identificador llamado URI y consultamos y la consultamos por algo llamado endpoint
que es la URL completa, esa URI permite consultar directamente un recurso.
 Códigos de estado: cuando solicitamos una información a través de una API el servidor
puede contestarnos con distintos códigos y con estos podemos saber que paso con
nuestra petición por ejemplo:
Los códigos 2xx indican éxito.
Los 3xx indican redirecciones.
Los 4xx indican si nuestra consulta es inválida.
Los 5xx indican errores del servidor. Todos estos códigos los podemos encontrar en
HTTP.cat.
 Métodos HTTP: estos métodos nos permiten interactuar con la API, por ejemplo:
El método GET sirve para solicitar información.
POST sirve para enviar nueva información.
PUT sirve para actualizar información ya existente.
DELETE sirve para borrar un recursos y hay muchos mas pero estos son los más
usados.
 Formatos: Json es el más común, XML dependiendo de la empresa que lo solicite,
Texto plano que a veces son solicitadas por entidades del estado.
 Buenas prácticas: cuando desarrollamos una API Rest existen algunas prácticas que
debemos seguir. A continuación veremos algunas de ellas
HATEOS: significa que la API se auto reescribe, cada recurso tiene información de cuál
es el recurso siguiente o de la cantidad de recursos totales que hay.
 Seguridad: ya que existen APIs públicas y privadas en tal caso de desarrollar la
segunda hay que protegerla para impedir la entrada a la base de datos o cualquier tipo
de información confidencial-
 Testear: verificaremos que todo esté funcionando correctamente.
 Documentar

17.2 Mensaje y ejemplo con Postman

18 SOAP

18.1 significa Simple Object Acces Protocol (protocolo de acceso simple a objetos) es un protocolo
bien definido, es stateless es decir que no funciona con sesiones dentro del servidor aunque
puede configurarse a stateful para que mantenga ciertas sesiones dentro del propio servidor.

a diferencia de Rest aquí solo podemos manejar archivos XML, al ser un protocolo bien definido
este tipo de reglas los hace que sea menos flexible y solicite más recursos para enviar y recibir
datos.

A diferencia de Rest que solo usa el protocolo HTTP Soat usa HTTP, SMPT, UDP y otros

19 introducciones a gRPC

19.1 gRPC significa Google Remote Procedure Call es una arquitectura y/o un framework de
comunicación entre diferentes servicios a contunuacion veremos unas características de esta
tecnología

 Tecnología de transmisión de datos serializada


 Creado por Google
 Bi-direccional Streaming
 Multilenguaje y plataforma

19.2 gRPC Stub y Protobuffer

El Stub es una parte de nuestra aplicación que nos proporciona los mismos métodos y/o funciones
que nos brinda el servidor gRPC

El PrococolBuffer es un mecanismo de socialización de datos que nos permite que el peso de la


comunicación sea mucho menor y mucho más rápido ya que son datos serializados y están
transcritos a código binario.

20 licencias

20.1 licencias de software es un contrato a través del cual una persona que es el titular de los
derechos de explotación de un determinado software, establece las condiciones a través de las
cuales otra u otras personas pueden acceder a usar ese software de acuerdo con las condiciones
que el mismo estableció.

Ver Estudiar Modificar Compartir Compartir las Uso Utilizarlo


código el el código el código modificaciones comercial para
fuente código fuente fuente cualquier
fuente fin
comercial
y
propósito
Software si si si si si si si
libre
Open si si No No No siempre no limitado
source siempre siempre
propietaria no no no no no no Con
permiso
del
fabricante
Freeware Son programas gratuitos pero no podemos acceder a su código
Shareware Software distribuido gratuitamente para su prueba, modo trial versión, es una
estrategia de marketing muy difundida en los últimos tiempos.

Licencias de código abierto

 Licencias de código abierto permisivas: se puede crear una obra derivada sin que esta
sin que esta tenga obligación de protección alguna. Como ejemplo tenemos las
licencias de Apache, PHP, BSD, PSFL (Python Software Fundation License), MIT
(Massachusetts Institute of Technology)
 Licencias de código abierto robustas débiles: contiene una clausula que obliga a que
las obras derivadas o modificaciones que se realicen al software original se deban
licenciar bajo los mismos términos y condiciones de la licencia original Pero NO OBRAS
DERIVADAS. Como ejemplo tenemos MPL (Mozilla Public License), CDDL (Common
Development and Distribution License) y APSL (Apple Source License).
 Licencias de código abierto robustas fuertes: contiene una clausula que obliga a que
las obras derivadas o modificaciones que se realicen al software original se deban
licenciar bajo los mismos términos y condiciones de la licencia original. Como ejemplos
tenemos las licencias de EPL (Eclipse Public License), GPL (GNU Public License) y AGPL
(GNU Affero General Public License)
21- Proteccion de Datos

21.1 MD5 SHA: son algoritmos sifrados de hash seguro, nos sirven para codificar mensajes

El MD5 se creo en 1991 reemplazando al MD4 pero fue vulnerado ese mismo año y hasta el dia de
hoy se considera inseguro por lo tanto no se utiliza salvo en algunos casos para asegurar la
integridad de alicaciones que descarguemos.

El SHA es el mas utilizado a dia de hoy, ha tenido varias verciones, SHA-0, SHA-1, SHA-2. SHA-3
pero el que se usa a dia de hoy es el SHA-256.

21.2 Criptografia simetrica y asimetrica

Simetrica: La criptografía de clave simétrica, también llamada criptografía de clave secreta o


criptografía de una clave, es un método criptográfico en el cual se usa una misma clave para cifrar
y descifrar mensajes en el emisor y el receptor.

Asimetrica: La criptografía de clave pública, o criptografía asimétrica, es el campo de los sistemas


criptográficos que utilizan pares de claves relacionadas. Cada par de claves consta de una clave
pública y una clave privada correspondiente.

21.3 Protocolos de seguridad en internet

SSL/TLS significan Secure Sockets Layer y Transport Layer Security siendo la segunda su version
mas moderna. Utiliza certificados X 509 y Criptografia asimetrica, es un protocolo de seguridad
que se utiliza en internet para conexiones entre cliente-servidor o servidor-servidor.

SSH significa Secure Shell es el protocolo que usamos hoy en dia para conectarnos con un servidor
remoto y ya esta cifrado por defecto.

PGP significa Pretty Good Privacy es un software que se suele utilizar en la dark wed para
intercambiar datos personales, es sistema tambien usa criptografia asimetrica.

También podría gustarte