Está en la página 1de 493

@lexpinonline

Introducción

Curso de programación web


1. Introducción al curso

Felicidades por tomar la decisión de adentrarte al mundo del desarrollo web, es un


mundo realmente amplio.

En este curso aprenderás desde los conceptos más básicos hasta los más
avanzados. Este es un curso distinto, donde aprender será lo más importante. No
hay notas, pero sí proyectos. recuerda que entre más tiempo dediques mejor será
tu desenvolvimiento por este motivo es importante que inviertas tiempo en
practicar fuera del horario de clases.
1. Introducción al curso

Contarás con toda la ayuda y buena disposición de tu profesor para ayudarte con
cualquier duda.

También te dejo aquí el primer consejo para este curso:

“Aprenderás muchas cosas, y está bien no recordarlo todo, pero siempre quedate
con el por qué aprendes y para qué sirve lo que aprendes”.
2. La importancia de la web

Hoy en día nos conectamos a la web en todo momento, hemos desarrollado


conceptos como el “internet of things”, esto ha convertido a la programación web
uno de los sectores más demandados en la actualidad.

Nuevamente te felicito personalmente por elegir conocer más de esta área.


3. Programas a descargar

CMDER (Solo si tienes windows, version FULL):


https://cmder.app

Microsoft Visual Studio Code:


https://code.visualstudio.com/download

GitHub:
https://desktop.github.com
3. Programas a descargar

NodeJs (Descargar versión LTS):


https://nodejs.org/es/download/

XAMPP (descargar la última opción):


https://www.apachefriends.org/es/download.html
Módulo I

Conceptos manejados en la industria


1. Tecnología

La tecnología un término amplio que se refiere al conjunto de herramientas,


procesos y técnicas que se utilizan para hacer cosas de manera más eficiente y
con menos esfuerzo, esto puede tener un impacto significativo en la sociedad y la
cultura, y a medida que avanza, se desarrollan nuevas formas de hacer cosas de
manera más eficiente

Abaco - ENIAC - App


2. Hardware

El hardware es el conjunto de componentes físicos de un dispositivo electrónico,


como la placa madre, el procesador, la memoria, por mencionar algunos.

Es esencial para el funcionamiento de un dispositivo electrónico ya que le permite


recibir, procesar y almacenar información para realizar tareas.

R-C
3. Software

El software es un término que se refiere a los programas y sistemas informáticos


que controlan todo el funcionamiento de un ordenador y que permiten a los
usuarios realizar tareas específicas.

Es la parte lógica y no física de un sistema informático, en contraposición con el


hardware, que es la parte física del sistema.

ctrl
3. Información

La información es un conjunto de datos que tienen un significado o propósito


específico. Puede ser cualquier cosa, desde una simple cifra hasta una historia
compleja.

Ejemplos:
"El gobierno Israelí recibió información acerca de dos de sus siete soldados
desaparecidos"
"Programar es el proceso de diseñar y escribir instrucciones para que una
computadora realice tareas específicas."
4. Bit

Un bit es la unidad más pequeña de información digital que puede almacenarse o


transmitirse. Se utiliza para representar la contraposición entre dos valores
(apagado y encendido, falso y verdadero, 0 y 1, existe y no existe).

La palabra "bit" es un acrónimo de "binary digit", que significa dígito binario en


inglés. Por ejemplo, un estatus apagado se representa con el 0, mientras que su
contraparte encendido se representa con el 1 (Binario)
5. Byte

Es la unidad de medida de información estándar utilizada en la informática y


telecomunicaciones, equivale a un conjunto ordenado de 8 bits.

Existe por IBM desde la década de los 50 's como una forma de representar
caracteres y símbolos en una computadora.

1 byte equivale a 8 bits, y en 1 byte podemos representar cualquier carácter

Por ejemplo, la palabra “hola” ocupa 4 bytes y se representa de la


siguiente forma: 01101000 - 01101111 - 01101100 - 01100001
6. Red

Una red informática, es un conjunto de equipos interconectados por medio de


cables, señales, ondas o cualquier otro método de transporte de datos, estos
comparten información (archivos) y/o recursos (CD-ROM, impresoras, HDD/SSD,
etc.)
7. IP

La IP (Internet Protocol) es una dirección única que identifica a un dispositivo en


Internet o en una red local.
8. Puerto

Un puerto es una interfaz o conector ya sea interno o externo que se utiliza para
comunicar diferentes tipos de elementos de hardware o elementos de software que
nos permitan enviar y recibir datos de un equipo a otro.
9. O.S. (Operating System)

Un sistema operativo (Operating System) es el software que controla y coordina el


uso de los recursos de una computadora, como el hardware, el software y los
datos.

Es el "cerebro" de la computadora y se encarga de gestionar todas las tareas y


procesos que se ejecutan en ella.

Existen diferentes sistemas operativos


para computadoras: Windows, MacOS, Linux (y sus diversas distribuciones)
para equipos móviles: IOS, Android, Windows Phone
10. WWW

La World Wide Web, red mundial o simplemente WWW es un sistema lógico de


acceso y búsqueda de información cuyas unidades son las páginas web.

Es decir, todos los sitios a los que podemos acceder desde nuestros dispositivos a
través de un navegador web, como Google Chrome, Mozilla Firefox o Safari.
10. Sitio web

Un sitio web, ​portal​o cibersitio es una colección de páginas web relacionadas


entre sí y comunes a un dominio de internet el cual forma parte de la WWW dentro
de la red de redes (Internet).​​

Hola
11. Frontend

El frontend es la parte de una aplicación o sitio web que el usuario final ve y con la
cual interactúa de forma digital usando HTML, CSS y JavaScript.
12. Backend

El Back-End es la parte de una aplicación o sitio web que el usuario final no ve y


que se encarga de procesar y almacenar la información y los datos necesarios
para que la aplicación o el sitio web funcione correctamente.
13. Fullstack

Un Full Stack es la persona responsable de la creación y el mantenimiento de una


aplicación web. Por este motivo, es importante que el Full Stack tenga
conocimientos de desarrollo Front-End y Back-End.
13. DevOps

DevOps es un acrónimo inglés de development (Desarrollo/Dev) operations


(Operaciones/Ops), consiste en una filosofía y un conjunto de prácticas que
buscan mejorar la comunicación y la colaboración entre los equipos de desarrollo
de software y de operaciones de TI.

Su objetivo es hacer más rápido el ciclo de vida del desarrollo de software y


proporcionar una entrega continua de alta calidad.
14. Editor de texto

Editor de texto es un programa informático que permite crear y modificar archivos


digitales compuestos únicamente por textos sin formato, conocidos comúnmente
como archivos de texto o “texto plano”. El programa lee el archivo e interpreta los
bytes leídos según el código de caracteres que usa el editor.
15. Entorno de desarrollo

Es una aplicación informática que proporciona servicios integrales para facilitar al


desarrollador o programador el desarrollo de software.
16. SEO

El posicionamiento en buscadores, optimización en motores de búsqueda o SEO,


es un conjunto de acciones orientadas a mejorar el posicionamiento de un sitio
web en la lista de resultados de Google, Bing, u otros buscadores de internet

Tools - SEO
17. HTTP

HTTP (Hypertext Transfer Protocol), o Protocolo de transferencia de hipertexto,


es el protocolo de comunicación que permite las transferencias de información a
través de archivos en la World Wide Web.

En pocas palabras, HTTP define cómo las páginas web, imágenes, videos, audio y
otros contenidos son transferidos a través de Internet, desde servidores web hasta
navegadores web, mediante el uso de un conjunto de reglas y convenciones
(Petición y respuesta, Códigos de respuesta, Encabezados).
18. SSL

SSL (Secure Sockets Layer) es un protocolo de seguridad que se utiliza para


asegurar la privacidad y la integridad de la información que se transfiere a través
de Internet gracias a la encriptación de los datos que se transmiten entre
servidores web y navegadores web
19. UI

La interfaz de usuario es el medio con que el usuario puede comunicarse con una
máquina, equipo, computadora o dispositivo, y comprende todos los puntos de
contacto entre el usuario y el equipo.
20. UX

La experiencia de usuario es el conjunto de factores y elementos relativos a la


interacción del usuario con un entorno o dispositivo concretos, dando como
resultado una percepción positiva o negativa de dicho servicio, producto o
dispositivo.

(Heinz)
21. CDN

Un CDN (Content Delivery Network) es una red de distribución de contenido


conformada por servidores ubicados en diferentes partes del mundo, que
contienen copias de los mismos datos.

Se encarga de entregar estos archivos, como imágenes, videos, audio y código, a


los usuarios finales con el fin de maximizar el ancho de banda para el acceso a los
datos de clientes por la red.

(Fastly-21)
22. W3C

El World Wide Web Consortium (W3C) es una organización internacional que se


dedica a la estandarización de la tecnología y la estructura de la World Wide Web
(WWW)
23. Responsive

Cuando utilizamos el término “responsive” (adaptable), nos referimos


principalmente a “responsive design” (diseño web adaptable). Esto significa hacer
que un sitio web sea accesible y adaptable en todos los dispositivos: smartphones,
tablets, notebooks, etc.
24. Cliente

Es el demandante de un servicio

Ejemplo:
- Yo cuando voy al médico
- Yo cuando ingreso a youtube.com
25. Servidor

Es el proveedor de recursos o servicios

Ejemplo:
- El médico realizando un chequeo
- El computador (servidor) donde está alojado Youtube enviando la informacion
que pedi
26. Buscador web

Los buscadores web, también conocidos como motores de búsqueda, son


sistemas informáticos que trabajan recopilando información en Internet con el
objetivo principal de mostrar la información previamente solicitada a los usuarios.
27. Seguridad informática

La seguridad informática es una disciplina que se encarga de proteger la integridad


y la privacidad de la información almacenada en un sistema informático.
Sin embargo no existe técnica alguna que permita asegurar la inviolabilidad total
de un sistema.

google
28. Código

El código es un conjunto de instrucciones escritas en un lenguaje de programación


con el fin de crear y controlar aplicaciones y sistemas informáticos. El código se
escribe utilizando un lenguaje de programación, como JavaScript, Python o C++
con esto nos referimos al lenguaje por el cual funcionan las computadoras.

Mapa de instrucciones
29. Hosting

Hosting es el uso y provecho que se hace de los servidores web y de los recursos
que disponen.
30. Dominio

Un dominio es un nombre único y exclusivo que se utiliza para enmascarar una


dirección IP e identificar a un sitio web en Internet. Facilita el acceso a los sitios
web y ayuda al usuario a recordar mejor como llegar a ellos.
31. URL

URL son las siglas en inglés de Uniform Resource Locator, que en español
significa Localizador Uniforme de Recursos.

Como tal, el URL es la dirección específica que se asigna a cada uno de los
recursos disponibles en la red con la finalidad de que estos puedan ser
identificados y localizados. Por esto existe un URL para cada uno de los recursos
(páginas, sitios, imágenes, documentos, carpetas) que hay en la World Wide Web.
32. API

La interfaz de programación de aplicaciones, en inglés, application programming


interface, conocida también por las siglas API, es un conjunto de subrutinas y
procedimientos que permite la comunicación y realización de procesos entre
softwares como una capa de abstracción.

Existen diferentes tipos de APIs, por ejemplo de logueo, geolocalización, servicios


de pago etc…

Las APIs ofrecen grandes beneficios como ahorro de dinero y tiempo en desarrollo
de software.
32. API
33. Plugin

Los plugins son pequeños programas complementarios que amplían las funciones
de aplicaciones web y programas de escritorio.
34. Framework

En programación un framework es un conjunto de herramientas que se utilizan


para facilitar el desarrollo de aplicaciones y sistemas informáticos. Proporciona una
estructura de trabajo para el desarrollo de software y permite a los programadores
enfocarse en la lógica de la aplicación en lugar de construir la estructura básica
desde cero.
34. Framework
35. CMS

Un CMS (Content Management System) o Sistema de Gestión de Contenidos es


una aplicación de software que permite a los usuarios colaborar en la creación,
edición y producción de contenido digital: páginas web, blogs, etc.

Un CMS funciona con un panel de administración. Se accede a través del


navegador y tiene una interfaz simplificada que permite crear contenidos de forma
sencilla.
35. CMS
Módulo II

Puestos de trabajo en la industria


1. Desarrollador Front-end

El desarrollador Front-end se enfoca en crear la interfaz de un sistema para


permitir la interacción del usuario con la web. Su trabajo consiste en convertir los
documentos de diseño en código y diseñar la apariencia visual de la página web,
incluyendo la estructura, la tipografía y las imágenes.

Es fundamental que el Front-end tenga en cuenta la usabilidad y la legibilidad de la


página para asegurar una experiencia satisfactoria para el usuario.

Front-end
2. Desarrollador Back-end

El desarrollador Back-end es el encargado de implementar la interacción entre el


usuario y el sitio web. Utiliza lenguajes de programación para desarrollar módulos
de procesamiento que otorguen a los usuarios contenido dinámico basado en las
peticiones de entrada.

Back-end
3. Desarrollador full-stack

Un “Full-stack developer” es un programador con un perfil técnico muy completo


que conoce bien tanto lo referente a Back-end como lo referente a Front-end.
Se trata de un perfil cada vez más demandado y bien remunerado, se suelen
encontrar habitualmente en startups.

Full-Stack
4. DevOps

DevOps es un acrónimo inglés de development (desarrollo) y operaciones


(operaciones), consiste en un conjunto de prácticas que agrupan el desarrollo de
software y las operaciones de TI. Su objetivo es hacer más rápido el ciclo de vida
del desarrollo de software y proporcionar una entrega continua de alta calidad.

DevOps
Fuente: nubity.com
5. Diseñador UI/UX

UX (User Experience) hace referencia a la forma en la que los usuarios interactúan


con un producto o servicio. Es decir, cómo y para qué el usuario utiliza un objeto o
interactúa con una web o app.

Por otro lado, el diseño UI o User Interface se centra en la parte visual. Es decir, si
UX se encarga de que un producto sea útil para los usuarios, UI lo hace atractivo y
visual.

UI/UX - airbnb
6. SEO specialist

Un SEO specialist es: un profesional con amplia experiencia en la optimización de


páginas web, cuya labor diaria se centra en el análisis, la revisión y la aplicación
de técnicas que favorezcan un mejor posicionamiento en los motores de
búsqueda.

SEO
Módulo III

Herramientas utilizadas para desarrollos


1. Computadora y especificaciones

Procesador: La unidad central de procesamiento o procesador es el hardware


dentro de un computador, teléfonos inteligentes y otros dispositivos programables.
Su trabajo es interpretar las instrucciones de un programa informático mediante la
realización de las operaciones básicas aritméticas, lógicas y externas. (Min: intel
i3-3240T (3ra Gen) / AMD Athlon II X4 - Rec: Intel i5 7400 (7ma Gen)/ AMD FX-
4300)
1. Computadora y especificaciones

RAM: Memoria principal de la computadora, donde residen programas y datos,


sobre la que se pueden efectuar operaciones de lectura y escritura. (Min: 4Gb -
Rec: 8 Gb)

GPU: Es el acrónimo en inglés de “Unidad de Procesamiento de Gráficos”. En


términos generales, es un tipo de procesador que maneja y acelera la
representación de gráficos (la generación de las imágenes que verá en las
pantallas de las computadoras)
1. Computadora y especificaciones

HDD: disco duro o unidad de disco rígido es un dispositivo de almacenamiento de


datos mecánico que emplea un sistema de grabación magnética u óptica para
almacenar y recuperar archivos digitales.

SSD (Solid State Disk): un SSD es una nueva generación de dispositivos de


almacenamiento que se emplea en equipos. Los SSD reemplazan los discos duros
mecánicos tradicionales con una memoria basada en flash, significativamente más
rápida.(Rec: SSD 500 Gb)
1. Computadora y especificaciones

Fuente poder: Fuente de poder es un componente del computador que se encarga


de transformar una corriente eléctrica alterna en una corriente eléctrica continua
transmitiendo la corriente eléctrica imprescindible y necesaria a los ordenadores
para el buen funcionamiento y protección de estos. (500w certificada)

Teclado: En informática, un teclado es un dispositivo o periférico de entrada, en


parte inspirado en el teclado de las máquinas de escribir, que utiliza un sistema de
puntadas o márgenes, para que actúen como palancas mecánicas o interruptores
electrónicos que envían toda la información a la computadora o al teléfono móvil.
(Teclado mecanico)
1. Computadora y especificaciones

Mouse: Dispositivo de la computadora que se maneja con una sola mano y permite
dirigir el movimiento del puntero sobre la pantalla para transmitir órdenes diversas.

Tarjeta madre: La placa base, también conocida como tarjeta madre, placa madre
o placa principal, es una tarjeta de circuito impreso a la que se conectan los
componentes que constituyen la computadora. Es una parte fundamental para
montar cualquier computadora personal de escritorio o portátil o algún dispositivo.
2. Editores de texto

Sublime text
2. Editores de texto

NotePad++
3. Entornos de desarrollo

Microsoft visual studio code


3. Entornos de desarrollo

Eclipse
3. Entornos de desarrollo

NetBeans
3. Entornos de desarrollo

Theia
4. Extensiones de utilidad
5. Navegadores

- Firefox
- Opera
- Google chrome
- Brave
- Safari
6. API

- https://rickandmortyapi.com
- https://rickandmortyapi.com/api/
- https://rickandmortyapi.com/api/character
- https://rickandmortyapi.com/api/episode
7. Librerías

Son procedimientos que pueden ser utilizados por otro código para realizar tareas
específicas. Por lo general, las librerías se escriben en un lenguaje de
programación y se distribuyen en archivos que pueden ser enlazados a un
proyecto.

- D3.js
- AnimeJS
- Hammer.js
8. Frameworks

- Laravel
- Tailwind
- Express.js
- Angular
- Vue.js
9. Controlador de versiones

Se llama control de versiones a la gestión de los diversos cambios que se realizan


sobre los elementos de algún producto o una configuración del mismo. Una
versión, revisión o edición de un producto, es el estado en el que se encuentra el
mismo en un momento dado de su desarrollo o modificación.

My App v 1.0.0
9.1 Git

Es una de las mejores herramientas de control de versiones disponible en el


mercado actual. Es un modelo de repositorio distribuido compatible con sistemas y
protocolos existentes como HTTP, FTP, SSH y es capaz de manejar eficientemente
proyectos pequeños a grandes.
9.2 Mercurial

Es una herramienta de control de versiones que está escrita en Python y destinada


a desarrolladores de software. Los sistemas operativos que admite son similares a
Unix, Windows y macOS. Tiene un alto rendimiento y escalabilidad con
capacidades avanzadas de ramificación y fusión y un desarrollo colaborativo
totalmente distribuido. Además, posee una interfaz web integrada.
Módulo IV

Lenguajes de programación
1. Lenguaje de programación

Es un lenguaje formal que, mediante una serie de instrucciones, le permite a un


programador escribir un conjunto de órdenes, acciones consecutivas, datos y
algoritmos para, de esa forma, crear programas que controlen el comportamiento
físico y lógico de una máquina.
2. Lenguaje de bajo nivel

Un lenguaje de programación de bajo nivel, es aquel en el que sus instrucciones


ejercen un control directo sobre el hardware y por lo tanto están condicionados por
la estructura física de las computadoras que lo soportan.

Ejemplos:
- Código binario
- Lenguaje Máquina
- Lenguajes ensambladores
3. Lenguajes de alto nivel

Cuando hablamos de un lenguaje de alto nivel nos referimos al tipo de lenguaje de


programación que no expresa los algoritmos teniendo en cuenta la capacidad que
tienen las máquinas para ejecutar órdenes, sino al que se utiliza teniendo en cuenta las
capacidades cognitivas de los seres humanos.

Ejemplos:
- Python
- Javascript
- PHP
- Java
- Ruby
4. Lenguajes compilados

Un lenguaje compilado es un lenguaje de programación cuyas implementaciones


son normalmente compiladores y no intérpretes. El término es un tanto vago. En
principio, cualquier lenguaje puede ser implementado con un compilador o un
intérprete.

Los lenguajes compilados tienen la particularidad que su código es leído en


totalidad, y luego se ejecuta todo completamente. De forma que, si existe algún
error. El programa no se ejecutará.
5. Lenguajes interpretados

Un lenguaje interpretado es un lenguaje de programación para el que la mayoría


de sus implementaciones ejecuta las instrucciones directamente, sin una previa
compilación del programa a instrucciones en lenguaje máquina.

Estos lenguajes tienen la particularidad que se ejecutan línea por línea, y en caso
de error. Puede haber un mal funcionamiento, pero el código se ejecutará línea por
línea.
Módulo V

Entorno web y su historia


1. Origen

El origen se remonta a los años 60 cuando el gobierno de Estados Unidos, el


britanico y una empresa privada buscaban una forma de comunicación informática
segura. En 1969 es cuando se creó el proyecto ARPANET el cual podía comunicar
una serie de ordenadores para enviar mensajes. Fue creada por el Dep. de
Defensa de los Estados Unidos como una red de investigación y desarrollo para
compartir información y recursos entre distintas instituciones y universidades.
2. La web 1.0

Web 1.0 se refiere a un estado de la World Wide Web. Es en general un término


usado para describir la Web antes del impacto de la fiebre punto com en 2001, que
es visto por muchos como el momento en que el internet dio un giro.

Algunos elementos de diseño típicos de un sitio Web 1.0 incluyen:


- Páginas estáticas en vez de dinámicas por el usuario que la visitan
- El uso de framesets o marcos.
- Extensiones propias del HTML como <blink> y <marquee>, etiquetas
introducidas durante la guerra de navegadores web.
2. La web 1.0

- Libros de visitas en línea o guestbooks


- Botones GIF, casi siempre a una resolución típica de 88x31 pixels
- Formularios HTML enviados vía correo electrónico. Un usuario llenaba un
formulario y después de hacer clic se enviaba a través de un cliente de correo
electrónico, con el problema que en el código se podía observar los detalles
del envío del correo electrónico. (Inseguro)
- Todas sus páginas se creaban de forma fija y muy pocas veces se
actualizaban.
3. La web 2.0

El término 'Web 2.0' o 'Web social'​es el término que describe la segunda generación de
sitios web, comprende aquellos sitios que facilitan compartir información, el diseño
centrado en el usuario y la colaboración en la World Wide Web. esta web permitió a los
usuarios interactuar y colaborar entre sí, como creadores de contenido.

En este salto la web pasa de ser un simple contenedor o fuente de información y se


convierte en una plataforma de trabajo colaborativo. Ejemplos de la Web 2.0 son las
comunidades web, los servicios web, las aplicaciones Web, los servicios de red social,
los servicios de alojamiento de videos, las wikis, blogs, mashups.
4. La web 3.0

La Web 3.0 o Web Semántica es un término que se ha utilizado para hacer


referencia a una versión de la World Wide Web que se caracterizaría por ser más
inteligente, personalizada y adaptativa. Aunque no existe un consenso sobre qué
características tendría exactamente la Web 3.0, algunas de las características que
se han mencionado como posibles incluyen:

● Uso de tecnologías de inteligencia artificial: La Web 3.0 podría utilizar


tecnologías de inteligencia artificial, como el aprendizaje automático, para
proporcionar una experiencia de usuario más personalizada y adaptativa.
● Mayor integración de la realidad aumentada y virtual: La Web 3.0 podría
utilizar la realidad aumentada y virtual para mejorar la experiencia de usuario
y hacer que sea más inmersiva y realista.
4. La web 3.0

● Mayor uso de la semántica y el etiquetado: La Web 3.0 podría utilizar


tecnologías de procesamiento del lenguaje natural y etiquetado para mejorar
la capacidad de la web para comprender el contenido y ofrecer una
experiencia de búsqueda más precisa y relevante.
● Mayor seguridad y privacidad: La Web 3.0 podría incluir mejoras en la
seguridad y la privacidad para proteger a los usuarios de los riesgos en línea,
como el phishing y el malware.

Esta expresión Web 3.0 apareció por primera vez en 2006


5. La web 4.0

La web 4.0 es como denominamos a la internet de las máquinas que entienden a


los humanos y que aprenden cuanto más se usan (machine learning). Es la
internet de los pequeños bots, de los agentes inteligentes que chatean con los
humanos, de las casas inteligentes, de las smart cities.

Nota: El machine learning es una rama de la inteligencia artificial que se centra en


algoritmos que permiten a las máquinas aprender de manera autónoma a partir de
la experiencia.
6. Resumen

- La web 1.0 sería la web de los catálogos online.


- La web 2.0 sería la web de las webs bidireccionales, las redes sociales y el
despliegue de la nube.
- La web 3.0 es la internet móvil, con todo lo que conlleva: geolocalización,
realidad aumentada, realidad virtual, la internet de las cosas (IOT), el big
data, etc.
- La web 4.0 es la de las máquinas inteligentes.
- La web 5.0 ¿La web de la realidad virtual?
Módulo VI

Terminal de Linux
1. Terminal de linux

La Terminal de Linux es una consola, similar a CMD o PowerShell(pero mucho


más avanzada que ambas), utilizada para permitir a los usuarios más avanzados y
técnicos controlar hasta el más mínimo detalle del sistema operativo.

Terminal linux para windows: https://cmder.net


2. Terminal de linux, CMD y PowerShell

La terminal de Linux es una aplicación que permite a un usuario interactuar con el


sistema operativo a través de líneas de comandos.

El CMD (Command Prompt) es una aplicación de línea de comandos en Windows que


le permite a un usuario interactuar con el sistema operativo de la misma manera que
lo haría en la terminal de Linux (Pero utiliza comandos distintos).

PowerShell es una aplicación de línea de comandos y entorno de script de Windows y


ofrece una mayor funcionalidad que el CMD.

Nota: La terminal de linux es la herramienta más poderosa


3. cd (change directory)

Para navegar por los archivos y directorios de Linux, usa el comando cd. Te pedirá la
ruta completa o el nombre del directorio, dependiendo del directorio de trabajo actual en
el que te encuentres.

Supongamos que estás en /home/nombredeusuario/Documentos y deseas ir a Fotos,


un subdirectorio de Documentos. Para hacerlo, simplemente escribe el siguiente
comando: cd Fotos.

Otro escenario es si deseas ir a un directorio completamente nuevo, por ejemplo,


/home/nombredeusuario/Películas. En este caso, debes escribir cd seguido de la ruta
absoluta del directorio: cd /home/ nombredeusuario/Películas.
3. cd (change directory)

Hay algunos atajos para ayudarte a navegar rápidamente:

cd .. (con dos puntos) para ir un directorio hacia arriba/atrás


cd para ir directamente a la carpeta de inicio
cd- (con un guión) para ir al directorio anterior
4. ls (list)

El comando ls se usa para ver el contenido de un directorio. Por defecto, este comando
mostrará el contenido de tu directorio de trabajo actual.

Si deseas ver el contenido de otros directorios, escribe ls y luego la ruta del directorio. Por
ejemplo, ingresa ls/home/nombredeusuario/Documentos para ver el contenido de
Documentos.

Hay variaciones que puedes usar con el comando ls:

ls -R también listará todos los archivos en los subdirectorios (tip - movies)


ls -a mostrará los archivos ocultos
ls -al listará los archivos y directorios con información detallada como los permisos,
el tamaño, el propietario, etc.
5. cp (copy)

Usa el comando cp para copiar archivos del directorio actual a un directorio


diferente. Por ejemplo, el comando cp escenario.jpg
/home/nombredeusuario/Imágenes crearía una copia de escenario.jpg (desde tu
directorio actual) en el directorio de Imágenes.

Si quieres una carpeta completa tienes que usar el parámetro -r


ejemplo: cp -r /carpeta
6. mv (move)

El uso principal del comando mv es mover archivos, aunque también se puede usar para
cambiar el nombre de los archivos.

Los argumentos en mv son similares al comando cp. Debes escribir mv, el nombre del
archivo y el directorio destino.
Por ejemplo: mv archivo.txt /home/nombredeusuario/Documentos.

Para cambiar el nombre de los archivos, el comando de Linux es:


mv nombreviejo.ext nombrenuevo.ext

También puedes usar la opción -f para sobrescribir cualquier archivo con el mismo nombre
que ya exista en la carpeta de destino:
mv -f archivo.txt nueva_carpeta
7. mkdir (Make Directory)

Usa el comando mkdir para crear un nuevo directorio: si escribes mkdir Música,
creará un directorio llamado Música.
8. rmdir (Remove Directory)

Si necesitas eliminar un directorio, usa el comando rmdir. Sin embargo,

Nota: rmdir solo te permite eliminar directorios vacíos.


9. rm (Remove)

El comando rm se usa para eliminar directorios y el contenido dentro de ellos. Si


solo deseas eliminar el directorio, como alternativa a rmdir, usa rm -r.

Nota: Ten mucho cuidado con este comando y verifica en qué directorio te
encuentras. Este comando elimina todo y no se puede deshacer.
10. touch (Tocar / Crear)

El comando touch te permite crear un nuevo archivo en blanco a través de la línea


de comando de Linux.
Por ejemplo, ingresa touch home/nombredeusuario/Documentos/Web.html para
crear un archivo HTML titulado Web en el directorio Documentos.
11. sudo

Abreviatura de «SuperUser Do» (SuperUsuario hace), este comando te permite


realizar tareas que requieren permisos administrativos o raíz. Sin embargo, no es
aconsejable usar este comando para el uso diario, ya que podría ser fácil que
ocurra un error si haces algo mal.

Nota: cmder no puede emular todos los comandos de linux en windows y sudo
usualmente es uno de ellos
12. df (Disk Free)

Usa el comando df para obtener un informe sobre el espacio libre en el disco del
sistema, que se muestra en porcentaje y KB. Si deseas ver el informe en
megabytes, escribe df -m.
también puedes usar df -h
13. du (Disk Use)

Si deseas verificar cuánto espacio ocupa un archivo o un directorio (Carpeta),


el comando du (Uso del disco, en inglés) es la respuesta. Sin embargo, el resumen
de uso del disco mostrará números de bloque de disco en lugar del formato de
tamaño habitual. Si deseas verlo en bytes, kilobytes y megabytes, agrega el
argumento -h a la línea de comando.
14. history

Cuando hayas estado utilizando Linux durante un cierto período de tiempo, notarás
rápidamente que puedes ejecutar cientos de comandos todos los días. Como tal,
ejecutar el comando history es particularmente útil si deseas revisar los comandos
que ingresaste anteriormente.
15. Ejercicios extras

- Crea una carpeta en tu escritorio llamada “Proyecto Terminal”, en esta crea


los siguiente archivos: “index.html”, la carpeta “estilos”, dentro de la carpeta
estilos crea el archivo “estilos.css”.
- Crea una copia de la carpeta realizada en el ejercicio anterior con todos sus
archivos en la carpeta “Mis documentos”
- Crea un archivo llamado “hola.txt”, e ingresa manualmente un texto en este (A
tu preferencia). Investiga cómo poder ver el contenido de este archivo de
texto en la terminal
- Muestra el contenido de tu carpeta de “Mis documentos” en forma de árbol
(Investiga el comando “tree”
- Elimina la carpeta creada en el segundo ejercicio con todos sus archivos
Módulo VII

Github
1. Github

GitHub es una forja para alojar proyectos utilizando el sistema de control de


versiones Git. Se utiliza principalmente para la creación de código fuente de
programas de ordenador. El software que opera GitHub fue escrito en Ruby on
Rails. Desde enero de 2010, GitHub opera bajo el nombre de GitHub, Inc.
2. Git

Git es un software de control de versiones diseñado por Linus Torvalds, pensando


en la eficiencia, la confiabilidad y compatibilidad del mantenimiento de versiones
de aplicaciones cuando estas tienen un gran número de archivos de código fuente.

https://git-scm.com
3. GitHub Desktop

GitHub Desktop es una herramienta que ejecuta los comandos de GIT por ti de
forma fácil. Y te permite comunicar con la nube de GitHub
4. Repositorio

Un repositorio es un espacio centralizado donde se almacena, organiza, mantiene


y difunde información digital, habitualmente archivos informáticos, que pueden
contener trabajos científicos, conjuntos de datos o software.
5. git Init

git init es un comando que se utiliza una sola vez durante la configuración inicial de
un repositorio nuevo. Al ejecutar este comando, se creará un nuevo subdirectorio .
git en tu directorio de trabajo actual. También se creará una nueva rama principal.
6. git publish

Este comando publica tu repositorio en la página de GitHub


7. Git commit

El comando git commit guardará todos los cambios hechos en la zona de montaje
o área de preparación (staging area), junto con una breve descripción del usuario,
en un "commit" al repositorio local.
8. Git push

git push se suele usar para publicar y cargar cambios locales a un repositorio
central (en la nube) después de modificar el repositorio local, se ejecuta un
comando push para compartir las modificaciones con miembros remotos del
equipo.
9. Git pull

git pull es un comando de Git utilizado para actualizar la versión local de un


repositorio desde otro remoto.
10. Git clone

git clone se utiliza principalmente para apuntar a un repositorio existente y clonar o


copiar dicho repositorio en un nuevo directorio, en otra ubicación.
11. Crear una rama

La rama se crea directamente en el repositorio de github


12. Crear un pull request

El pull request puede ser generado desde github una vez creada una rama para
posteriormente ser denegada o hacer merge
13. Merge

La fusión es la forma que tiene Git de volver a unir un historial bifurcado. El


comando git merge permite tomar las líneas independientes de desarrollo creadas
por git branch e integrarlas en una sola rama.
14. Fork

Un fork (en español, "bifurcación") es una copia de un repositorio que se crea bajo
la cuenta de otro usuario. Es decir, una instancia de un repositorio original, pero sin
dejar de mantener un vínculo con éste.

Cuando haces un fork de un repositorio, obtienes una copia idéntica del repositorio
original en tu propia cuenta de GitHub, que puedes modificar y trabajar de manera
independiente.

Es especialmente útil cuando quieres contribuir al desarrollo de un proyecto pero


no tienes permiso para hacer cambios directamente en el repositorio original.
15. Git Ignore

El archivo especial .gitignore le indica a Git qué archivos o carpetas no deben ser
incluidos en un repositorio mediante patrones de nombres que Git debe ignorar al
realizar seguimiento de los cambios en un repositorio.

Notaras que cuando creas un repositorio, es común tener ciertos archivos o


carpetas que no se deben versionar, como archivos de configuración, archivos
temporales, registros y archivos binarios, entre otros, es aquí donde se utiliza un
archivo .gitignore.
16. Convenciones

Las convenciones son reglas o pautas que se suelen seguir en la plataforma para hacer que el trabajo en
proyectos de código sea más eficiente y sencillo.Algunas de estas convenciones son:

- Usar una estructura de carpetas clara y lógica para organizar el código.

- Usar un archivo README.md en la raíz del repositorio para proporcionar información general sobre el
proyecto y cómo utilizarlo.

- Usar etiquetas (tags) para marcar versiones estables del código y hacer referencia a ellas en el archivo
CHANGELOG.md.

- Usar ramas (branches) para separar el desarrollo en curso del código estable. Por ejemplo, se suele
usar una rama master para el código estable y ramas develop o feature para el desarrollo en curso.
- Usar solicitudes de pull (pull requests) para revisar y aprobar los cambios antes de que se integren al
código estable.
- Usar un archivo .gitignore para excluir archivos que no se deben incluir en el control de versiones (como
archivos binarios o archivos de configuración local).
- Usar un archivo LICENSE para especificar los términos de uso y distribución del código.
17. Ejercicios extras

- Crear un repositorio privado que contenga un archivo.html y un archivo.css e


invitar al profesor como colaborador.
- Investigar sobre el archivo .gitignore, crear un nuevo archivo llamado
prueba.js e ignorar todos los archivos js para futuras actualizaciones.
- Crear una nueva rama prueba agregando un archivo hola.html y hacer un pull
request
- Aceptar el pull request anterior
- Investigar como crear un conflicto en tu propio proyecto y arreglar el conflicto
Módulo VIII

HTML
1. HTML

HTML es un lenguaje de marcado que se utiliza para el desarrollo de páginas de


Internet. Se trata de la sigla que corresponde a HyperText Markup Language, es
decir, Lenguaje de Marcas de Hipertexto, que podría ser traducido como Lenguaje
de Formato de Documentos para Hipertexto.
2. Etiquetas

Las etiquetas HTML son pequeños bloques de código, que indican al navegador
cómo debe interpretar el contenido recogido entre dichas etiquetas. Por ejemplo, si
queremos «pintar» un párrafo de texto, hay una etiqueta específica para que el
navegador interprete ese texto como un párrafo.
3. Sintaxis de HTML

<p> Prueba </p>

<p>: Etiqueta de apertura, lo que se encuentra entre el signo de menor y mayor es


el nombre de la etiqueta

Prueba: Contenido de la etiqueta (En este caso es simplemente un texto que dice
Prueba), el contenido de una etiqueta siempre va entre su etiqueta de apertura y
etiqueta de cierre

</p>: Etiqueta de cierre, indica donde finaliza la etiqueta. Siempre lleva un / antes
del nombre

Nota: la etiqueta <p> </p> es la etiqueta utilizada para imprimir párrafos


4. Etiquetas auto-conclusivas

Ejemplo: <img />

Esta es una etiqueta auto conclusiva, debido a que como que puedes se conforma
de una sola etiqueta. Solo hay un par de etiquetas que son autoconclusivas. Y el
motivo de esto es porque son etiquetas que no contienen información.

En este ejemplo es una etiqueta de imagen. Una imagen no suele contener


información dentro. Solo sirve para mostrar una imagen.
5. Atributos o propiedades

Ejemplo: <img src=”imagen.png” />

En este caso la etiqueta HTML tiene una propiedad o también llamado atributo.
Esta sirve para agregar una funcionalidad o brindar más información.

En este ejemplo estamos utilizando el atributo “src”, que en caso de la etiqueta


imagen sirve para hacer referencia a un recurso (Imagen en este caso)
6. Etiquetas HTML

Existe una gran variedad de etiquetas HTML, por lo cual puedes utilizar la
siguiente documentación para tener una referencia de todas las etiquetas HTML
disponibles.

https://www.w3schools.com/tags/default.asp
7. Estructura de una página web
7. Estructura de una página web

<!DOCTYPE html>
Esta etiqueta es única, y su función es decirle a los navegadores que este es un
documento HTML
<html lang="en">
Esta etiqueta contiene todo el HTML interior de la página, contiene una propiedad
lang para definir el lenguaje de la página.
<head>
La etiqueta head se utiliza para contener información no visible directamente en el
contenido de la página, como el título de la página.
<title>Document</title>
Esta etiqueta define el título de una página.
<body>
Contiene el contenido de la página web.
8. Etiquetas importantes

<p>, <img/>,<h1>, <h2>, <h3>, <button>,


<a>, <ol>, <li>, <ul>, <iframe>,
<br>, <input>, <span>, <div>

Etiquetas de HTML semántico:


<main>, <form>, <nav>, <footer>,
<aside>, <section>, <header>, <article>
9. Ejercicios extras

1) Realiza la estructura base de una página web coloca el título de la página como como
‘Prueba’ y con en h1 dentro del body escribe tu nombre.
2) Agrega una imagen de internet de 500px de ancho debajo del título que muestre
“Imagen no encontrada” al colocar mal la ruta.
3) Crear una carpeta llamada “Imagenes”, guardar una imagen de 300px de ancho y
añadirla a la página
4) Crea una lista organizada debajo de la imagen. Que contenga tres pasos:
1. Estudiar HTML, 2. Practicar HTML, 3. Repetir.
5) Agregar un párrafo con un Lorem Ipsum redirija a Youtube
6) Agregar 5 saltos de línea y luego coloca otro párrafo con un Lorem Ipsum
7) Añade un botón que diga “Presioname” que te lleve a Google en una nueva pestaña
8) Añade un input de texto que muestre el texto “Usuario” y otro de contraseña que
muestre el texto “Password”
9) Crea un formulario que solicite: Nombre de usuario, contraseña, email,fecha de
nacimiento, dirección, país.
Módulo IX

CSS
1. CSS

CSS es un mecanismo complementario del lenguaje HTML que permite indicarle al


navegador el estilo visual que debe darle a los distintos elementos al desplegar la
información de un sitio web.

CSS significa: Cascade Style Sheets, que se traduce al español como “Hojas de
Estilo en Cascada”.

Documentación: w3schools
2. Cómo aplicar CSS

1. El CSS puede ser agregado a una etiqueta HTML utilizando la propiedad


style.
Ejemplo: <p style=”color:red;”>Esta es una prueba</p>

2. El CSS puede ser agregado también dentro de la etiqueta style.


Ejemplo: <style> p{color:red;} </style>

3. El CSS también puede ser agregado dentro de un archivo CSS. Para esto
primeramente debemos crear un archivo con extensión CSS ejemplo:
archivo.css.
Una vez creado se debe llamar al archivo CSS dentro del archivo HTML a
través de la siguiente etiqueta: <link rel="stylesheet" href="archivo.css">
3. Sintaxis de CSS

p {
color: red;
}
- “p”, este es el primer elemento en el ejemplo. Y este es un selector. Es decir,
estamos nombrando al elemento al cual le queremos agregar estilos. (Un
párrafo)

- { }, luego de colocar un selector tenemos que colocar la apertura y cierre de


llaves para dentro de estas indicar los estilos que queremos darle al selector

- color: red, color es una propiedad, esta modifica el color del texto. Una vez
colocada una propiedad debemos colocar dos puntos, para luego indicar un
valor, en este caso es rojo (red). Es importante destacar que una vez
terminemos de colocar un valor, se debe terminar con punto y coma.
4. Tipos de selectores en CSS

1. Etiquetas HTML: son las etiquetas disponibles en HTML, para seleccionarlas solo
tenemos que nombrarlas como en el ejemplo anteriormente mostrado.

2. Selector de ID: El ID es una propiedad que podemos agregar a un elemento HTML, para
hacerlo único y poder seleccionar únicamente a ese elemento. Para seleccionar un ID
se debe hacer con un numeral.
Ejemplo:
En HTML: <p id="prueba"> hola </p>
En CSS: #prueba

3. Selector de clases: la clase es una propiedad que podemos agregar un elemento HTML,
para asignarlo a un grupo de elementos. Para seleccionar una clase se debe hacer con
un punto.
Ejemplo:
En HTML: <p class="prueba"> hola </p>
En CSS: .prueba
5. Propiedades básicas

Existe una gran variedad de propiedades CSS, algunas son más utilizadas que
otras.
Por aquí dejo la lista de todas las propiedades CSS que existen.

https://www.w3schools.com/cssref/default.asp
6. Algunas propiedades de CSS

A continuación se enlistan los puntos de CSS que veremos en este curso

- color (color de letra)


- background-color
- comentarios
- Cómo manejar colores (Hexadecimal, rgb, rgba, nombre)
- width (ancho)
- height (alto)
- background-image
- text-align
- font-size
- font-weight
- font-family
- font-style
6. Algunas propiedades de CSS
- overflow
- unidades de medidas
- pseudo clases
- margin
- pseudo elementos
- padding
- transiciones
- border (border-width, border-style, border-color)
- transformaciones
- variables
- animaciones
- display
- responsive
- flex (flex-direction)
- justify-content, align-items
- gap
- grid (grid-template-columns, grid-template-rows)
PROYECTO
8. Responsive

El término responsive hace alusión a un elemento adaptable


9. Ejercicios extras

- Crear 4 columnas en donde cada una contenga una imagen que ocupe el
100% del ancho de su respectiva columna.
- Volver responsive el paso anterior
- Crear 5 botones redondeados y azules en línea que cuando el mouse esté
sobre de alguno, el botón cambie su color de fondo a naranja.
- Crea una clase que haga los textos rojos, y un id que haga los textos bold y
aplicarlas sobre un H1
- Agregar el color de fondo beige de forma hexadecimal a la etiqueta body
Módulo X

Lógica de programación
1. Algoritmos

Un algoritmo es un conjunto de pasos que se siguen para resolver un problema o


para realizar una tarea en particular. Se trata de una especie de receta o
instrucciones que deben seguirse de forma precisa y en el orden indicado para
obtener un resultado esperado.
1. Algoritmos
2. Diagrama de flujo de datos (DFD)

Un diagrama de flujo es una representación gráfica de un algoritmo o proceso.


Se trata de una herramienta muy útil para explicar de manera clara y sencilla cómo

funciona algo o cómo deben seguirse ciertos pasos para llegar a un resultado
determinado.

Descarga: https://dfd.waxoo.com/descargar
o
https://pseint.sourceforge.net/index.php?page=descargas.php
3. Lenguajes de programación

Es un lenguaje formal que, mediante una serie de instrucciones, le permite a un


programador escribir un conjunto de órdenes, acciones consecutivas, datos y
algoritmos para, de esa forma, crear programas que controlen el comportamiento
físico y lógico de una máquina.

https://www.redusers.com/noticias/wp-content/uploads/2022/05/leng.jpg

https://www.talent-republic.tv/wp-content/uploads/2020/07/lenguajes-desarrolladore
s.png
4. Pensamiento abstracto

El pensamiento abstracto o pensamiento formal consiste en la capacidad para


pensar de forma independiente a la realidad que se nos muestra de forma
concreta. Permite al ser humano pensar en diferentes escenarios y posibilidades
entre los que, por supuesto, también se encuentra la realidad concreta.
En pocas palabras pensar en más allá de lo que percibimos, esto significa, pensar
en lo que es, en lo que no es… y en lo que podría ser.

Ej: Al ver un gato negro podríamos ponernos a pensar sobre los distintos tipos de
gatos que hay, sobre felinos en general, o sobre por qué la gente es supersticiosa.

https://www.lifeder.com/pensamiento-abstracto/
5. Proceso de realización de un software
5. Proceso de realización de un software
Módulo XI

Pre-Procesadores
1. Pre-procesadores

Un preprocesador es una herramienta que se utiliza para modificar o "preprocesar"


el código fuente de un programa antes de que éste sea compilado. Los
preprocesadores suelen utilizarse para añadir funcionalidades a un lenguaje de
programación, para facilitar la escritura de código o para realizar tareas de
configuración y personalización.

Un ejemplo de preprocesador es el que se utiliza en el lenguaje CSS (SASS).


Este preprocesador permite a los desarrolladores trabajar de manera más rápida y
eficiente, y con menor esfuerzo.
2. SASS

Sass (Syntactically Awesome StyleSheets) es un preprocesador CSS.

Un preprocesador CSS es una herramienta que nos permite generar, de manera


automática, hojas de estilo, añadiendoles características que no tiene CSS, y que
son propias de los lenguajes de programación, como pueden ser variables,
funciones, selectores anidados, herencia, etcétera.

Los archivos tienen terminación .scss o .sass


3. Ventajas de SASS

- Reduce el tiempo para crear y mantener el CSS.


- Permite tener una organización modular de los estilos, lo cual es vital para
proyectos grandes.
- Proporciona estructuras avanzadas propias de los lenguajes de
programación, como variables, listas, funciones y estructuras de control.
- Permite generar distintos tipos de salida, comprimida, normal o minimizada,
trabajando tanto en desarrollo como en producción, además se hace una
forma muy fácil.
- Permite vigilar los ficheros, de tal manera que, si ha habido un cambio en la
hoja de estilos, se regenera automáticamente (modo watch).
- Existen muchas herramientas asociadas, muchas librerías hechas con Sass y
una comunidad muy importante de usuarios.
4. Documentación de SASS

Documentación oficial: https://sass-lang.com/documentation


5. Instalar SASS

Debes ejecutar en la terminal el siguiente comando:


- npm install -g sass

Si tienes linux o macOS entonces ejecuta lo siguiente:


- sudo npm install -g sass

Nota: este comando puedes ejecutarlo desde cualquier carpeta.

npm: Node Package Manager (Gestor de paquetes de Node)


install: Instalar
-g: parámetro para indicar una instalación global
sass: nombre del paquete a instalar
5. Instalar SASS

Para verificar si está instalado SASS utiliza el siguiente comando:

sass --version

Deberías ver algo similar a este texto:

1.57.1 compiled with dart2js 2.18.6


6. Puntos importantes de SASS

- Sintaxis
- Como cambia SASS el código y porque es diferente a CSS
- $Variables
- Comentarios
- @mixin (con o sin parámetro)
- BEM (Block, Element, Modifier)
- @extend
- @each
- funciones
- @import (Modularización)
Módulo XII

Librerías
7. Qué son las librerías

Una librería es uno o varios archivos escritos en un lenguaje de programación


determinado, que proporcionan diversas funcionalidades.

Pero estas funcionalidades siempre cumplen con un solo objetivo, ej: realizar
operaciones matemáticas complejas, crear una interfaz, realizar animaciones,
estilizar.
8. Qué son los frameworks

Un framework es un esquema o marco de trabajo que ofrece una estructura base


para elaborar un proyecto con objetivos específicos, una especie de plantilla que
sirve como punto de partida para la organización y desarrollo de software.
8. Bootstrap

Bootstrap es una biblioteca multiplataforma o conjunto de herramientas de código


abierto para diseño de sitios web 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.
8. Bootstrap

Documentación oficial:

https://getbootstrap.com/docs/5.1/getting-started/introduction/
9. Tailwind

Tailwind CSS es un framework CSS que permite un desarrollo ágil, basado en


clases de utilidad que se pueden aplicar con facilidad en el código HTML y unos
flujos de desarrollo que permiten optimizar mucho el peso del código CSS.
9. Tailwind

Documentación oficial:
https://tailwindcss.com/docs/installation
10. Puntos importantes de Tailwind

- Cómo usar Tailwind con CDN


- Cómo utilizar Tailwind
Otras Librerías

AOS

Animate.css

CSShake
9. Ejercicios extras

- Crea una copia de la página principal de Amazon


- Crea tu propia página web que represente tu portafolio
(Te recomiendo buscar referencias de portafolios que han hecho otras
personas)
- Crea una copia de Google
- Realiza un Blog
- Realiza una página empresarial que aplique efecto parallax y animaciones

(Todas estas páginas tienen que ser responsive)


Módulo XIII

JavaScript
1. ¿Qué es Javascript?

JavaScript (abreviado comúnmente JS) es un lenguaje de programación


interpretado, es un dialecto del estándar ECMAScript. Se define como orientado a
objetos, basado en prototipos, imperativo, débilmente tipado y dinámico.
2. JavaScript en palabras sencillas

JavaScript es un lenguaje de programación para el FrontEnd, los navegadores


entienden JavaScript cómo entienden en CSS y HTML, pero este sirve para
brindar una interacción más profunda con los elementos HTML.
3. Documentación de javascript

Javascript tiene un contenido bastante extenso. Utilizar documentación de


internet siempre resulta útil para aprender todo lo que ofrece un lenguaje de
programación o recordar cosas.

https://www.w3schools.com/js/js_syntax.asp
4. ¿Cómo escribir JS?

Este se puede implementar de tres maneras.

La primera es a través de la etiqueta <script></script> dentro de ella podemos


escribir javascript. Intenta escribiendo dentro lo siguiente:
console.log('prueba');
5. ¿Cómo escribir JS?

Otra forma de escribir javascript es a través de propiedades en las etiquetas de


HTML, sin embargo. Estas serán explicadas más a profundidad más adelante.
6. ¿Cómo escribir JS?

La última forma es escribir javascript dentro de un archivo con extensión .js,


ejemplo: prueba.js

Una vez creamos el archivo tenemos que llamarlo en nuestro archivo HTML con la
siguiente etiqueta:

<script src="prueba.js"></script>
7. Variables

Una variable no es más que un dato guardado en un espacio reservado en la


memoría RAM. Este dato puede ser un mensaje, un número, un proceso, una
función o literalmente cualquier cosa.

En javascript existen tres tipos de variables: variables locales, globales y


constantes.
8. Variables globales

Las variables globales se pueden utilizar en todo el archivo y su valor siempre


queda guardado en la memoria ram mientras el programa se esté ejecutando.

Para declarar una variable global solo tienes que utilizar la palabra “var” luego
darle un nombre a la variable como en el ejemplo: “variableGlobal” y luego
asignarle (con el signo de igualdad ) un valor.
9. Variables locales

Las variables locales solo se pueden utilizar al nivel de sección de código donde
se haya definido (scope). Y una vez que las variables terminan su propósito, esta
es borrada de la memoria RAM aligerando los recursos consumidos por el
programa.

Para declarar una variable local hay que utilizar la palabra “let”, seguido del
nombre de la variable y le asignamos un valor.
10. Constantes

Las constantes funcionan de la misma forma que una variable local, pero con la
particularidad de que una vez le asignamos un valor, este no puede ser
modificado.
Un valor constante en la vida real podría ser el número PI.
11. Imprimir un mensaje en consola

Puedes imprimir un mensaje, una variable o varias variables utilizando


console.log()
A continuación un ejemplo:
12. Tipos de datos

string, array, numero (int, float), bool, objeto, undefined, null


13. Puntos importantes de js
Sección 1 Sección 2
- Cómo escribir JS - Función sin parámetros
- Tipos de datos - Función con parámetros
- Variables - Recursividad
- Tipos de variables - Métodos de strings
- Comentarios - Arrays
- Operadores comparativos - Métodos de array
- Operadores aritméticos (Que es iterar, length, push, unshift, pop, shift, slice)
- Operadores de asignación - Objetos
- Operadores lógicos - Funciones Constructoras
- Condicionales - Loops (for, for in, for of, while)
- PRÁCTICA - PRÁCTICA
13. Puntos importantes de js

Sección 3 Sección 4
- ES6 (.map, arrow functions) - Try-Catch
- DOM - Funciones asíncronas (setInterval, setTimeout)
- Selectores (id, className, tagName) - Asincronismo (Callbacks, Promesas, Async-Await)
- Eventos - JSON
- Clases - Fetch / Axios
- Regex (Expresiones regulares) - PROYECTO
- PRÁCTICA
14. Ejercicios extras

1) Crea un reloj digital que de la hora, minuto y segundo actual de tu pc.


2) Crea un juego de tres en raya.
3) Crea un personaje (imagen) que se mueva en la dirección que presiones en
las teclas direccionales.
4) Realiza una función que cada segundo imprima un mensaje en consola que
diga hola.
5) Realiza un botón que al presionarlo haga aparecer una ventana en la mitad
de la pantalla que diga hola y que tenga un botón para cerrarla.
6) Realiza una barra de navegación funcional de forma responsive.
Módulo XIV

Servidores locales
1. Servidores locales

Un servidor web local es aquel servidor instalado en un equipo determinado con el


fin de trabajar offline y online. Es una alternativa especialmente útil si lo que
buscamos es un entorno en el que desarrollar un sitio web o una aplicación y que
nos permita realizar todo tipo de pruebas sin correr riesgos.
2. Algunos servidores locales

- XAMPP:
https://www.apachefriends.org/es/index.html
- MAMP:
https://www.mamp.info
- WampServer:
https://www.wampserver.com/
Módulo XV

WordPress
1. WordPress

WordPress es un sistema de gestión de contenidos web (CMS o content


management system), que en pocas palabras es un sistema para publicar
contenido en la web de forma sencilla. Tan común es ya, que es el líder absoluto a
nivel mundial para la creación de webs desde hace muchísimos años.
2. Ventajas de usar WordPress

- NO REQUIERE CONOCIMIENTO PREVIO en programación


- Código abierto
- Gratuito
- Fácil instalación
- Sencilla configuración inicial
- Fácil instalación de Temas
- Facilidad en su administración
- Mejora tu Posicionamiento SEO
- Migración de hosting fácil
- Compatible con SSL, lo que permite manejar el protocolo HTTPS
3. Desventajas de usar WordPress

- Demasiado consumo de recursos


- Baja velocidad
- Es el CMS más atacado
- Plugins inestables
- Avanza muy rápido
4. Puntos importantes de Wordpress
- Descarga
- Configuración inicial (Creación de base de datos y configuracion basica del sitio)
- Instalación
- Panel de administración
- Plugins
- Qué son los temas, y los tipos de temas que puede haber
- Qué son los plugins que tipos de plugins puede haber
- Instalar el tema Astra
- Utilizacion de elementor
- Configuración de un formulario
- Crear Menús
- Configuración de un sitio web e-commerce (Woocommerce)
- Editor de plugins
- Editor de temas
- Problemas de editar estos
5. Descarga de WordPress

- link: https://ve.wordpress.org/download/
6. Instalación de WordPress

- 1er paso: Instalar xampp


- 2do paso: ejecutar los servicios de apache y mysql en XAMPP
- 3er paso: crear una base de datos de http://localhost/phpmyadmin/ (Una vez
ingreses, le das a new, colocas un nombre y le das a crear)
- 4to paso: ir a C://xampp/htdocs y borrar todo lo que se encuentre allí (esto
solo se realiza la primera vez).
- 5to paso: dejar la carpeta de tu proyecto wordpress en la carpeta htdocs
- 6to paso: entrar en el navegador y colocar “localhost/(nombre de tu carpeta)”
- 7mo paso: Cuando wordpress te pida los datos de tu base de datos, en el
usuario colocar “root” y la contrase;a dejarla vacía
- 8vo paso: Comenzar con el desarrollo
7. Secciones del panel de administración

- Escritorio: este es básicamente un dashboard con información resumida


- Entradas: En esta parte puedes manejar los blogs de tu sitio
- Medios: Banco de imágenes/videos del sitio
- Páginas: Te permite manejar todas las páginas de tu sitio web
- Comentarios: te permite regular todos los comentarios de tu sitio web
- Apariencia: permite gestionar los temas (visuales) del sitio
- Plugins: permite gestionar las funcionalidades de tu sitio (extensiones)
- Usuarios: Permite visualizar y gestionar todos los usuarios de tu sitio web
- Herramientas: herramientas básicas que ofrece wordpress
- Ajustes: configuraciones básicas de wordpress
8. Hosting gratuito para Wordpress

A continuación, se presentan dos opciones gratuitas para que puedas realizar


pruebas con una página web wordpress online:

https://www.000webhost.com
https://infinityfree.net
9. Ejercicios extras

- Desarrolla un sitio multi-idioma


- Desarrolla un sitio web e-commerce multi-moneda
- Crea un tema para wordpress (sencillo)
- Crea una landing page que tenga una carga totalmente optimizada (Lazy
Load, Imágenes optimizadas, cache)
- Crea un plugin
- Crea el SEO de una página
- Protege los formularios de una página de contacto
Módulo XVI

Optimización web
1. La optimización web

La optimización web ha ido ganando terreno en los últimos años, tanto es así que
se ha creado una disciplina dentro del mundo online llamada WPO, ‘Web
Performance Optimization‘. Esta disciplina consiste en hacer llegar las webs al
usuario en el menor tiempo posible, dentro de un margen razonable.

La optimización web comprende todas aquellas técnicas y tecnologías que se


pueden emplear en cada una de las partes que intervienen en la web, con el
objetivo de optimizar dichos procesos y obtener la mejor velocidad posible de
carga.
2. Imágenes

JPG, PNG, GIF:


https://blogthinkbig.com/diferencia-entre-png-jpg-y-gif

WEBP:
https://www.adslzone.net/reportajes/foto-video/webp-formato-ventajas/

SVG:
https://es.wikipedia.org/wiki/Gráficos_vectoriales_escalables

Optimización de imágenes:
https://kinsta.com/es/blog/optimizar-imagenes-para-la-web/
2. Imágenes

Herramienta para comprimir:


https://tinypng.com
3. Minificar archivos

En Ciencias de la Computación, la minificación es el proceso de eliminar


elementos innecesarios y reescribir el código para reducir el tamaño del archivo.
Se hace comúnmente para página web, recursos como HTML, CSS y JavaScript.
La reducción del tamaño de los recursos web permite que los archivos se
transfieran más rápidamente, haciendo que las páginas web se carguen más
rápido.

Herramientas para minificar:


https://carontestudio.com/blog/minificar-css-js-html-acelera-tu-pagina-web/

Herramienta para revertir minificado:


https://herramientas-online.com/unminify-javascript-beautifier.html
4. CDN

Una red de distribución de contenido (CDN) es un grupo de servidores repartidos


en distintas zonas geográficas que aceleran la entrega del contenido web al
acercarlo a los usuarios. Los centros de datos de todo el mundo utilizan el
almacenamiento en caché, un proceso que almacena temporalmente copias de
archivos, de modo que pueda acceder al contenido de Internet con un dispositivo o
navegador web de forma más rápida a través de un servidor cercano. Las CDN
almacenan en caché contenido, como sitios web, imágenes y vídeos, en
servidores proxy cerca de su ubicación física. Esto le permite ver una película,
descargar software, revisar el saldo de su cuenta bancaria, publicar en redes
sociales o comprar artículos sin tener que esperar a que se cargue el contenido.
4. Algunos CDN

Cloudflare: es una empresa que ofrece servicios de seguridad y rendimiento en


línea para sitios web y aplicaciones. Su plataforma proporciona una variedad de
servicios, incluyendo la protección contra ataques DDoS, la optimización del
rendimiento del sitio web, el equilibrio de carga y administración de DNS.
https://www.cloudflare.com/es-es/

ImgBB: es un servicio gratuito de alojamiento y carga de imágenes en línea.


https://es.imgbb.com
5. Cache

En informática, la memoria caché, es un componente que guarda datos para que


las solicitudes futuras de esos datos se puedan atender con mayor rapidez; los
datos almacenados en una caché pueden ser el resultado de un cálculo anterior o
una copia de datos almacenados en otro lugar.
Existe con la finalidad de dar velocidad de acceso. Se produce un acierto de caché
cuando los datos solicitados existen en esta, mientras que un fallo de caché ocurre
cuando no están dichos datos. La lectura de la caché es más rápida que volver a
calcular un resultado o leer desde un almacén de datos más lento; por lo tanto,
cuantas más solicitudes se puedan atender desde la memoria caché, más rápido
funcionará el sistema.

https://aws.amazon.com/es/caching/
6. Optimización de código

La optimización de código se refiere a la práctica de mejorar el rendimiento y la


eficiencia de un sitio web o aplicación mediante la escritura de código más
eficiente y la optimización de los recursos utilizados.
7. Plugins para aplicar esto en Wordpress

Existen muchos plugins para optimizar el rendimiento de tu sitio WordPress


uno de ellos es:

- wp-optimize
7. Cómo aplicar esto en código

- Agregando loading=”lazy” a las imágenes y videos en el html


- Optimizando las imágenes (comprimir y trabajar con formatos modernos
como SVG o WEBP)
- Aplicando cache
- Utilizando CDNs
- Utilizar tamaño de imágenes adecuados para el espacio donde se mostrarán
7. Herramientas para medir el rendimiento

https://gtmetrix.com

https://pagespeed.web.dev
Módulo XVII

SEO
1. SEO

El SEO (siglas de Search Engine Optimization, que significa optimización de los


motores de búsqueda) son todas las técnicas o acciones destinadas a aumentar el
tráfico de una web gracias a mejorar su posicionamiento en los diferentes
buscadores.
2. Como crear SEO

Realmente el SEO no es más que metadatos recolectados por los buscadores, es


decir. Simplemente información. El seo se coloca en las etiquetas de HTML
3. Etiquetas importantes en el SEO

En si la etiqueta más relevante para hacer seo podría ser la etiqueta <meta/> que
es utilizada para contener metadatos como las descripciones del sitio web o si
debe ser indexado o no a los buscadores.

https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/los-meta-tags-mas-i
mportantes-y-su-funcion/
4. HTML semántico

Sin embargo, los metadatos no es lo único que los buscadores evalúan. Hay
motivos por los cuales nuestro HTML, CSS y JS son públicos. Y es que estos son
analizados en los buscadores, para obtener mejores resultados en SEO es
importante utilizar HTML semántico.

Es decir, usar las etiquetas de forma correcta, etiquetas como <nav></nav>


<footer></footer> <aside></aside> <section></section> puede que sean poco
utilizadas, pero debemos utilizarla y utilizar cada etiqueta cuando corresponde.
existe una etiqueta para cada cosa en HTML, y debemos utilizar adecuadas.

Además es importante acotar que siempre es positivo tener en cuenta las prácticas
de usabilidad.
5. Marcado de esquemas

Schema Markup es un vocabulario semántico que se puede agregar al HTML de tu


sitio. Ayuda a los principales motores de búsqueda (Google, Yahoo, Bing) a
comprender y resaltar la información detallada del contenido de un sitio web.
Puede soportar eficazmente el rendimiento de los motores de búsqueda, ya que
tiene como objetivo ayudarnos a rastrear e indexar mejor los sitios web.

https://www.hostinger.es/tutoriales/que-es-schema-markup

https://technicalseo.com/tools/schema-markup-generator/
6. Plugins para aplicar esto en Wordpress

- Yoast SEO
6. Cómo aplicar esto al código

- Usar las etiqueta META


- Utilizar la etiqueta title
- Utilizar esquemas
- Utilizar la propiedad ALT en tus imágenes
6. Ejercicios extras

- Realiza una página web con una shema de recipe


- Realiza una página con un schema de review
- Realiza un SEO simple para una página web (Título, descripción,autor,
copyright que concuerden con el contenido de la página)
Módulo XVIII

Seguridad informática
1. ¿Qué es la seguridad informática?

Es cualquier medida que impida la ejecución de operaciones no autorizadas sobre


un sistema o red informática cuyos efectos puedan conllevar daños sobre la
información, equipo o software
2. ¿Por qué debemos proteger los sistemas?

Las razones son simples, las fallas en nuestros sistemas pueden causar:

- Caída de servicios
- Robo de datos
- Modificación malintencionada de información
- Estafas
3. ¿Cuáles son los elementos más inseguros?

En una página web o aplicación web los elementos más vulnerables son los
siguientes:

- Imágenes
- Cualquier lugar donde el usuario pueda enviar información a nuestro servidor
- Nuestros paneles de administración
- Los servidores en sí
- La propia interacción humana
4. ¿Cómo evitar las fallas de seguridad?

Ten en cuenta que los ciber delincuentes son como ladrones.

El mejor robo es aquel que nadie sabe qué ocurrió.

Puede llegar a ser difícil detectar las fallas en tus sistemas, pero solo uno es
suficiente para hacer mucho daño. Sin embargo, dependiendo del tamaño de tu
proyecto trata de tomar en cuenta lo siguiente:

- Siempre válida cualquier lugar donde el usuario pueda interactuar con tu


backend y cualquier dato.
- Cuidado con el hotlink
- Validación de roles y permisos
6. Plugins para aplicar esto en Wordpress

- WPS Hide Login (ocultar pagina de login)


- Advanced Google reCAPTCHA (Defensa contra los bots)
- All In One WP Security (Seguridad general de Wordpress)
4. ¿Cómo evitar las fallas de seguridad?

- Validar rutas de tu proyecto


- No acceder a paneles de administración o servidor desde una pc que utilices
para entrar en páginas inseguras
- Utiliza herramientas de seguridad (Si quieres ser súper cuidadoso), antivirus,
VPN, Proxy o navegadores como Tor.
Módulo XIX

Encontrando trabajo
1. Introducción

Probablemente buscas cambiar de trabajo, obtener más clientes, o quizás te


encuentres en búsqueda de tu primer trabajo. Sea cual sea la razón, en este curso
se tocarán puntos de como conseguir trabajo en una empresa, freelancer y una
base para el emprendimiento.

Por otra parte, entiende que los participantes pueden ser de distintas áreas de
trabajo, desde desarrolladores (programadores), diseñadores, mercadólogos,
abogados y hasta estudiantes. Toma de este curso lo que veas más útil para ti.
2. Trabajar en una empresa

Cuando pensamos en trabajo, muchas personas piensan en una empresa. Por eso
este es el primer punto del curso, y aunque es innegable que la industria de la
tecnología produce una gran cantidad de trabajos. Según tu área puede haber
ciertas ventajas y desventajas, también puede ser más o menos la facilidad para
encontrar trabajo.

Pero ten en cuenta lo siguiente: No te preocupes si no encuentras trabajo a la


primera, realmente es cosa de perseverancia y mostrar cuánto vales.

Nota: Tu trabajo, tu tiempo y tu conocimiento vale. Que las empresas no te escojan


a ti, tu escoge a la empresa y no tengas miedo al cambio.
2. Trabajo en startups (Empresas pequeñas)

Una startup es una organización humana con gran capacidad de cambio, que
desarrolla productos o servicios de gran innovación, altamente deseados o
requeridos por el mercado, donde su diseño y comercialización están orientados
completamente al cliente.
Esta estructura suele operar con costos mínimos, pero obtiene ganancias que
crecen exponencialmente, mantiene una comunicación continua y abierta con los
clientes, y se orienta a la masificación de las ventas.

Si escoges bien puedes ganar poco y a la vez mucho.

Como puedes suponer, estas empresas pagan poco debido a que son empresas
nuevas pero que pueden tener un retorno de inversión agresivo si las cosas se
hacen bien.
2. Trabajo en startups (Empresas pequeñas)

Sin embargo, pagar poco no quiere decir que debes regalar tu trabajo, ten eso en
claro. Usualmente aunque en estas empresas puedes ganar poco
monetariamente, son en las que más experiencia y roles puedes ganar.

Sé cuidadoso al elegir participar en una startup, entiende que no todas triunfan, y


que el componente humano lo es todo en una empresa.
3. Empresas grandes

Son empresas totalmente establecidas en su área, con reconocimiento y mejores


remuneraciones. Sin embargo, los requisitos pueden llegar a ser altos y muy
específicos. Y es que las empresas grandes no buscan gente que sepa mucho de
muchas cosas, sino que buscan la especialización, alguien que sepa mucho de
algo en especifico. Además, es muy común que los procesos de selección de
empresas grandes puedan ser mucho más largos, desde pruebas de selección,
entrevistas, además de experiencia comprobable.

Las empresas grandes pueden pagar mejor, pero aprenderás menos que en una
empresa pequeña, debido a que solo te centraras en una cosa en específico.
4. Medios de reclutamiento en una empresa

Las empresas pueden variar mucho sus formas de captación de personal.


Se aconseja investigar las empresas, buscandolas en redes sociales y haciendo
networking para saber cual de las siguientes maneras utilizan:

- Solo contratar por Networking (Debes ser recomendado para trabajar en la


empresa)
- A través de reclutadores
- Por medio de páginas web dedicadas al reclutamiento (LinkedIn)
- Por redes sociales (Instagram, Twitter)
- Contactando directamente a la empresa
5. CV (Curriculum Vitae)

Es un documento que resume la educación, experiencia laboral, habilidades y logros de


una persona con el fin de proporcionar al empleador una visión general de un candidato
para determinar si es adecuado para un trabajo en particular.

Tienes que ver el CV como una carta de presentación, y estás pueden ir en dos tipos, las
tipo “wow” y las tipo estándar, y ambos están bien puesto que hay empresas en donde
debes dejar tu CV con un formato específico, esto pasa especialmente en empresas
Europeas y Estadounidenses.

Trata de ser realmente relevante con esta carta de presentación. Coloca lo qué más
destaque de tus experiencias y es importante que sea relevante para el puesto al que
aplicas.
Por ejemplo, si aplicas para un trabajo sobre diseño gráfico o desarrollo de software, no
pongas tu experiencia en repostería, esto no es relevante para estos puestos.
Cabe destacar que aunque el CV es una herramienta estándar, hay algunas que generan
mucho más impacto, y las veremos a continuación…
6. Portafolio

Este es un elemento muy importante, independientemente si eres freelancer o


buscas trabajo en una empresa.

Un portafolio es básicamente una colección de las cosas que hayas hecho o


proyectos en los que has trabajado. Sí cuentas con un portafolio te podrás
posicionar muy fácilmente por encima de todas las personas que no tengan uno.

¿Dónde o cómo realizar un portafolio?, realmente es algo que puede variar


demasiado dependiendo de qué formas te quieras vender a ti mismo.
7. No todo es técnico

Hoy en día las empresas más modernas entienden que hay algo más importante
que las habilidades técnicas y son las habilidades blandas.

Las empresas prefieren contratar a personas que tengan una buena capacidad de
resolución de problemas, honestidad, imaginación, responsabilidad antes que a
una persona que conozca todo lo técnico.

Esto debido a que lo técnico es relativamente fácil de aprender, pero cosas como
las mencionadas anteriormente no se pueden aprender tan fácil en un curso.
8. Trabajo freelance

Freelance es un anglicismo usado comúnmente para designar un trabajo


independiente, autónomo o por cuenta propia.

El trabajo de freelancer presenta diversas ventajas y desventajas.


Al ser independiente puedes disfrutar de algunos beneficios, como poner tus
propios horarios, ser tu propio jefe, incluso llegar a ganar más que en una
empresa, pero esto por un lado, la otra cara de la moneda que también es una
realidad del trabajador freelancer es que tendrás que estar en la búsqueda
constante de trabajo, lo que significa inestabilidad, además serás quien esté a
cargo de todas las facturaciones y cobros sobre el proyecto realizado. Sin
embargo, los beneficios podrían llegar a ser mucho mayores que trabajando en
una empresa para muchas personas, todo depende de las preferencias y
prioridades de cada individuo.
9. ¿Cómo comenzar como freelancer?

La forma más natural para comenzar como freelancer es a través de familiares,


amigos o conocidos que requieren de nuestros servicios.

Sin embargo, una vez queremos profundizar y vivir de trabajos freelancer tenemos
que expandir nuestro alcance utilizando todo medio posible para atrapar trabajos.

A continuación veremos algunas páginas web para trabajar como freelancer y la


realidad de utilizarlas.
10. Páginas web para freelancers

Existen múltiples páginas web para obtener trabajo, sin embargo para su
utilización hay que tener ciertos puntos claros:

- Estas páginas retendrán el dinero que cobres por cada trabajo y solo lo
liberaran pasado un tiempo, si el cliente confirma el trabajo hecho o tras
acumular cierta cantidad.
- Se quedarán con un % del trabajo.
- En un inicio puede ser difícil conseguir los primeros trabajos.
- Puede haber una gran competencia, de hecho para cada trabajo tendrás que
competir con una gran cantidad de personas.
11. freelancer.es

Freelancer.es o freelancer.com es la plataforma de freelancers más grande del


mundo, por lo cual hay una gran competencia pero también muchos trabajos.
Link: https://www.freelancer.es
12. Fiverr

Página israeli que también está muy bien posicionada a nivel internacional y
cuenta con una gran comunidad hispano y anglo parlantes, es un mercado de
subcontratación de servicios freelance en línea. La plataforma permite a los
empleadores conectarse con trabajadores independientes y de una amplia gama
de industrias en todo el mundo.

Link: https://es.fiverr.com
14. Nota

Es importante acotar que no sirve de mucho simplemente estar registrado en estas


páginas, es necesario ser proactivo y estar en constante búsqueda de trabajo.

Si quieres ver más páginas para freelance haz click aqui.


15. Redes sociales

Todos utilizamos redes sociales, pero si eres freelancer o simplemente quieres


darte a conocer, deberías empezar a utilizarlas como una herramienta de
promoción. Y no se trata de ser un nuevo “influencer”, simplemente de mostrarle al
mundo tu trabajo o lo que te apasiona.

Son una herramienta verdaderamente poderosa y promocionar tu trabajo puede


ser de gran ayuda y muy fácil de hacer.
16. ¿Qué red social utilizar?

Esto dependerá del tipo de trabajo que realizas. ¿Diseño gráfico? ¡Instagram y
dribble! son buenas opciones, pero la respuesta es un poco relativa. Piensa a qué
clase de gente quieres llamar la atención. Por ejemplo, la gente de Ecuador
probablemente utiliza más facebook que otras redes sociales, pero en España
probablemente sea WhatsApp la más utilizada.

Una vez que tengas claro a qué países y medios quieres llamar la atención, solo te
queda mostrarle al mundo lo que haces. Esto se dice fácil, pero la verdad requiere
de mucha constancia.
17. Herramientas para redes sociales

Esta sección está para ayudar un poco a las personas que de repente tienen poco
o nada de conocimientos sobre cómo crear contenido y facilitar al menos un poco
esta tarea.

Diseño:
Canva (Imagen), InShot (Video)

Organización:
Google slides
18. Campañas publicitarias

Esta es una herramienta que todos disponemos hoy en día pues todas las redes
sociales tienen servicios de promoción de fácil adquisición y manejo. Puedes
invertir desde pequeñas a grandes cantidades de dinero y obtener resultados muy
positivos según el área de interés y forma de promocionar.

Fuera de instagram, facebook, twitter, linkedin y otras redes sociales también hay
servicios de promoción en Google o Youtube, que según el público y método
configurado puede brindarnos resultados más acertados.
19. Networking

El networking es sin duda la herramienta más importante de todas debido a que


esta te puede traer muchos beneficios. Y te preguntarás ¿Qué es el networking?
pues en resumidas palabras es tu red de contactos, por eso siempre que tengas la
oportunidad de conocer personas, tomala. Nunca conoces las suficientes, y
siempre puedes conocer a alguien interesante con el cual compartir intereses.
20. Emprendimiento

Ser freelancer es ciertamente “emprender”, sin embargo llamamos emprendimiento


a formalizar un negocio legalmente y tener personas contratadas. Este es un punto
que puedes tener en cuenta para expandir tus fronteras una vez tengas un tiempo
acumulando experiencia. Y debo recalcar el punto de tiempo y la experiencia.

La gran mayoría de los emprendimientos fracasan. Se recomienda empezar


realizando algo personal como freelancer y una vez que tengas una cartera de
clientes, experiencia y una producción de recursos constante, entonces formaliza
un emprendimiento.
20. ¿Cuánto puedo cobrar por mi trabajo?

Al ser freelancer, probablemente esta es la pregunta que más te harás al conseguir


tu primera cotización. Y realmente no es una pregunta simple, pues depende de
muchos factores. Pero desde la experiencia puedo decirte que… ¡Todo es relativo!.
No importa cual sea el trabajo que tengas que hacer, siempre habrá personas que
por lo mismo que harás cobrarán más o menos.

Para determinar cuánto cobrar por un trabajo te recomiendo realizar los siguientes
pasos…
21. ¿Cuánto puedo cobrar por mi trabajo?

1. Evaluar costos de otras empresas o personas alrededor del mundo (para


tener una idea)
2. Tener en claro ¿Para quién estoy haciendo el trabajo?, No es lo mismo
realizar un trabajo para un vecino humilde que para una mega corporación.
Incluso aunque el trabajo pueda ser el mismo, hasta la exposición tiene un
precio.
3. Preguntarte ¿Cuánto vale tu tiempo?
4. Tener en mente tus costes operativos, es decir ¿Cuanto vale el
mantenimiento de tus herramientas de trabajo? y ¿Cuánto cuestan los
servicios asociados a tu trabajo?, etc.
5. Entrar en el contexto adecuado: No es lo mismo realizar un trabajo para
alguien de Venezuela que para alguien de Hong Kong (Las economías muy
son diferentes).
22. Nota

Una vez determines el precio para el trabajo por experiencia, muchas cosas
podrían ocurrir. Confía en lo que determinaste. Sí, habrá más gente que lo podrá
hacer más barato e incluso gente que cobrará más. Pero ten confianza en ti mismo
y estudia más cada día, volverte mejor en lo que haces te dará más posibilidades
de encontrar buenas ofertas o trabajos.
23. Consejo extra

Siempre antes de dar algún precio, asegúrate de que realmente estás evaluando
todo lo que el trabajo involucra.
Módulo XX

Deploy de un proyecto a un servidor


1. Deploy

La palabra deploy proviene del inglés y significa desplegar o lanzar en español y


en términos de desarrollo de software se conoce como deploy a la actividad de
llevar tu código a producción .

Te preguntarás ¿Qué es producción?, y es poner la aplicación, sistema o servicio a


funcionar en un ambiente real, de cara a usuarios reales.

Es la fase final de cualquier proceso de desarrollo.


2. Puede ser distinto

Cabe destacar que aunque aquí aprenderás una base sobre como hacer deploy de
algunas aplicaciones, puede ocurrir que ciertas tecnologías requieren de pasos
extras o servicios especializados.
3. Dominio

Es algo que ya hemos definido anteriormente, pero supongamos que compras un


dominio ¿Y ahora qué? bueno, ese punto será solventado aquí.

Una vez adquirido el dominio necesitamos realizar una configuración de los DNS
(Domain name system), esto lo harás en el sitio donde compraste el dominio. Y lo
que haremos es que el dominio apunte a una IP (Y esta IP será la de nuestro
servidor). Aquí tienes un ejemplo:
3. Dominio

A continuación se define cada uno de los elementos que conforma la imagen:

El “tipo” este hace referencia al tipo de registro, estos sirven para agregar
información sobre el dominio, subdominio, servidor de correos y otras
configuración. Aquí puedes leer más sobre cada tipo de registro:
https://support.google.com/a/answer/48090
3. Dominio

Nombre, en este caso, hablando de un registro tipo A, este se utiliza para


determinar el dominio o subdominio. En este ejemplo se utiliza “@” para apuntar al
dominio principal. Ejemplo: mipagina.com

Si se colocara “email” entonces este funcionaria


como un subdominio, Ejemplo: email.dominio.com
3. Dominio

Datos, esta es la IP del servidor.


3 Dominio

El TTL o Tiempo de vida (Time to live) es un mecanismo que se usa para limitar la
duración de la información que circula por la red. Esto evita que la información se
mueva indefinidamente por Internet, favoreciendo la privacidad y el rendimiento.
4. Hosting

El alojamiento web es el servicio que provee a los usuarios de Internet un espacio


de almacenamiento en línea, también conocido como webspace, que permite
publicar todo el contenido relacionado con un sitio web.​

En resumidas palabras, es donde se guarda un sitio web.


5. Tipos de hosting

- Compartido: servicio que contiene múltiples sitios web alojados en un solo


servidor compartiendo recursos.
- VPS: Servidor virtualizado con recursos dedicados y aislados para mayor
flexibilidad y control.
- Completo: Servidor físico dedicado para una sola cuenta con control total y
recursos dedicados.
- En la nube: El alojamiento en la nube se refiere a la entrega de servicios de
alojamiento web en una red de servidores distribuidos y conectados a través
de Internet. En lugar de alojar su sitio web en un único servidor físico, el
alojamiento en la nube permite que los recursos de varios servidores se
combinen para proporcionar una mayor flexibilidad, confiabilidad y
escalabilidad (Capacidad de un sistema para manejar y adaptarse a un
aumento o disminución en la demanda o carga de trabajo).
6. Tipos de hosting con los que se consigue trabajo

- Azure (Microsoft)
- AWS (Amazon)

Azure y AWS son plataformas de servicios en la nube que ofrecen una amplia
gama de servicios de alojamiento, almacenamiento, computación y otros servicios
relacionados en la nube. Estas plataformas se enmarcan en la categoría de
proveedores de servicios de infraestructura en la nube.
7. Cómo acceder a un servidor

- SSH: Secure Shield (SSH) es un protocolo que garantiza que tanto el cliente
como el servidor remoto intercambien informaciones de manera segura y
dinámica. El proceso es capaz de encriptar los archivos enviados al directorio
del servidor, garantizando que las alteraciones y el envío de datos sean
realizados de la mejor forma.
- FTPS: En esencia, FTPS (FTP sobre SSL) es un protocolo seguro de
transferencia de archivos que le permite conectarse de forma segura con sus
socios de Negocio, clientes y usuarios.
- Panel de control: Interfaz instalado en el servidor para interactuar con el
servidor
7. Cómo acceder a un servidor

- SSH: Para acceder por este medio una terminal funciona.

- FTPS: Un software como Filezilla funciona para esto.

- Panel de control: Se accede a través del propio navegador (C-Panel)


8. Deploy de aplicaciones

- Cada destacar que todos los servidores suelen tener una carpeta en donde
se encuentran todos los archivos públicos de un cierto dominio, usualmente
esa carpeta suele ser llamada public_html, aunque que quizás puede que
tenga un nombre distinto
Módulo XXI

Manejo de facturación
1. Facturación

Es el proceso para realizar un cobro. Muchas personas sin experiencia tienen


problemas para realizar procesos de facturación, de hecho. No tienen en claro
cómo hacerlo.

Así que aquí se te dejará distintas recomendaciones


2. Cosas a tomar en cuenta

Si te pidieran una cotización para realizar una página web, debes tener en claro
todos los elementos por los cuales cobraras. Pues, no puedes simplemente decir
una cantidad de dinero por un trabajo que se define como “Realizar una página
web”. Algunos de estos elementos son:

- Compra del dominio y hosting


- Configuración del dominio
- Configuración del servidor
- Instalación de wordpress (En caso de que sea wordpress)
- Realización del front-end (visualización)
- Realización del SEO (Posicionamiento en buscadores)
2. Cosas a tomar en cuenta

- Realización de la seguridad del sistema


- Optimización de imágenes y recursos para mejorar el rendimiento
- Agregación de elementos específicos como: Chat, Formularios, Multi-idioma
- Configuración de correos empresariales
- Resumen de información (Mejora de redacción)
- Cantidad de páginas (Ejemplo: inicio, nosotros, productos, servicios, carrito)
- Creación de Google Business (Esto es un elemento opcional para locales
físicos)
- Agregación de certificado SSL (Página segura)
- Retoque fotográfico para las fotos de la página web
3. Preguntas

Para poder cotizar un proyecto, necesitas tener en claro todo lo que harás. Pero
además, entender que tú eres el profesional en el área, el cliente muchas veces
puede que no sepa lo que quiere o lo que necesite, y que cosas conllevan hacer
ese trabajo. Aquí te dejo algunas preguntas que es importante que realices para
poder brindar una mejor cotización

- ¿Qué tipo de página web quiere? Puede ser: empresarial (página web
estándar), e-commerce (tienda en línea), blog, etc
- ¿Cual es su objetivo principal con la página web?
- ¿Cuáles son sus objetivos secundarios?
- ¿Cuáles son las referencias para su sitio web?
3. Preguntas

- ¿Su página web tendrá login/register?


- ¿Cuales son los roles que tendra su sitio web? (Ejemplo: Administrador,
usuario, editor de blog, etc)

Y realizar tantas preguntas como sean necesarias


4. En caso de errores

En caso de que no realices las preguntas necesarias y envíes un presupuesto,


puede llegar a ocurrir que el cliente presupone que harás alguna cosa que nunca
se comunicó de forma explícita.

Esto solo puede llevar a la incomodidad de alguna de las dos partes. O comunicas
que lo que él expresa no se incluyó en el presupuesto y que realizar esa tarea
costaría más dinero o decides realizarlo sin cobrar por ello.
5. Cómo presentar una cotización

Muchas personas pueden llegar a ser algo liberales o informales sobre esto,
enviando por ejemplo: la cotización por whatsapp. Esto es una muy mala práctica,
debido a que la cotización es algo que especifica todo lo que harás y te respalda
en el caso de cualquier mal entendido, por ello. Aunque si puedes enviar la
cotización por esa vía, se recomienda siempre enviarla por correo también.

Recuerda que tu teléfono siempre se puede extraviar o dañar. Dando como


resultado la posible pérdida de esta información.

Además recuerda dar los detalles de TODO lo que harás, para de esa forma
justificar el precio de tu trabajo, pues algunas personas pueden pensar:
5. Cómo presentar una cotización

“Hacer ese trabajo es fácil y rápido” o pensar de forma muy simplificada sobre tu
trabajo.

También intenta presentar la cotización lo más formal que se pueda, a


continuación te dejo algunas imagenes de cotizaciones reales:
Módulo XXII

Mejoramiento de Perfil (GitHub)


¿Por qué mejorar el perfil de GitHub?

GitHub es la plataforma de repositorios más grande del mundo, múltiples


empresas internacionales de software alojan sus proyectos aquí, y sus
reclutadores periódicamente buscan nuevos talentos para sumar a sus equipos de
trabajo, debido a esto es importante mejorar tu perfil para incrementar la
posibilidad de encontrar una buena oferta.
¿Cómo mejorar el perfil?

Para mejorar el perfil de GitHub puedes agregar un archivo readme.md que


contendrá información detallada sobre ti, como tus conocimientos y habilidades,
herramientas manejadas, estudios realizados, proyectos elaborados, estadísticas
de lenguajes manejados entre otras cosas.
¿Cómo agregar un readme.md al perfil?

Para añadir un archivo readme.md puedes seguir los siguientes pasos:

● Enlazar un correo principal: Agrega un correo principal y colócalo público.


● Personalizar el perfil: Dirígete a settings (Ajustes) y modifica la información
básica, Agrega una buena foto personal, una breve biografía, información de
contacto, ubicación, y redes sociales.
● Crear un repositorio: Crea un nuevo repositorio (en GitHub Web) con el
mismo nombre de usuario, este repositorio debe inicializarse con un
readme.md y debe ser público.
Nota: Cuando hagas esto aparecerá un mensaje diciendo: “Descubriste un
secreto, el repositorio nombreDeUsuario es un repositorio especial”.
¿Cómo editar un archivo readme.md?

Para editar este archivo sigue estos pasos:

● Markup language o HTML: Puedes editar un archivo readme utilizando


“Markup language” o HTML. (si no estás familiarizado con Markup Lang.
puedes usar HTML)

● Utiliza Herramientas de edición de textos online: Puedes agregar textos


animados mediante el uso de diferentes herramientas, una de ella es:
Readme Typing SVG, puedes ver más información sobre esta herramienta en
su documentación.
¿Cómo editar un archivo readme.md?

Agrega Estadísticas: Puedes agregar estadísticas para mostrar los lenguajes


más usados, estas estadísticas son totalmente personalizables, haz clic en el
vínculo para ver la configuración de colores.
¿Cómo editar un archivo readme.md?

Agrega imágenes: Puedes agregar imágenes sobre tus proyectos y dar una
reseña sobre lo que es y los lenguajes y herramientas empleados para el
desarrollo del mismo.

Nota: Si deseas crear una cuadrícula con estos elementos puedes usar la etiqueta
<table> para definir la cuadrícula, <tr> para las filas y <td> para las columnas de la
cuadrícula en la fila insertada.
¿Cómo editar un archivo readme.md?

Añade botones personalizados: Para hacer más atractivo tu perfil utiliza imagen
personalizadas para tus botones, también puedes usar un generador de botones
personalizados como shields.io

NOTA: Al ser un documento .md las propiedades de CSS son nulas, es por eso
que se toman ciertos atajos para la organización y estilizado de este documento.
¿Cómo editar un archivo readme.md?

NOTA: Al ser un documento .md las propiedades de CSS son nulas, es por eso
que se toman ciertos atajos para la organización y estilizado de este documento.

● Agrupar elementos: Para agrupar elementos utiliza la etiqueta <p> en lugar


de <div>, ¿Por qué?, por la propiedad align que poseen los elementos de
cadenas de texto, esto te permitirá alinear (left, center, rigth) el contenido en
su interior como lo necesites (imágenes, texto).
● Anclas como botones: Utiliza anclas (<a>) para agregar las imágenes que
desees mostrar como botones, recuerda que al ser un documento .md no se
mostrará un botón como en un documento .html.
Destaca tus repositorios más preciados

Una práctica adicional, pero no menos importante para tener un buen perfil es
destacar los repositorios (proyectos) más elaborados fuera del archivo .md
Módulo XXIII

DevTools
¿Qué son las DevTools?

Las DevTools, o herramientas de desarrollador, son un conjunto de herramientas


integradas en la mayoría de los navegadores web modernos que permiten a los
desarrolladores web analizar y depurar sus aplicaciones web.
¿Cuáles son las DevTools?

Algunas de las DevTools que podemos encontrar en los navegadores son:

•Inspector de elementos: una herramienta que permite a los desarrolladores


inspeccionar/analizar y modificar el código HTML, CSS y JavaScript de una página
web.
¿Cuáles son las DevTools?

•Consola: una herramienta que permite a los desarrolladores ejecutar código


JavaScript en tiempo real y ver los resultados
en la consola, se utiliza comúnmente con la función console.log() durante el
desarrollo de webs y apps, para ver información en consola.
¿Cuáles son las DevTools?

•Red/Network: Es una herramienta que permite a los desarrolladores ver y


analizar las solicitudes de red que se realizan al cargar una página web, y durante
el tiempo que permanezca abierta, Se puede observar desde el tiempo de carga
hasta los detalles de las solicitudes, se utiliza comúnmente para detectar fallos en
la carga de elementos o durante la optimización de tiempo de carga de una web.
¿Cuáles son las DevTools?

•Fuentes/Sources: Es una herramienta que permite a los desarrolladores ver los


archivos que componen un sitio o página, con la finalidad de depurarlos.
¿Cuáles son las DevTools?

•Rendimiento/Performance: una herramienta que permite a los desarrolladores


medir el rendimiento de su aplicación web y analizar la causa de cualquier retraso,
esta herramienta permite capturar el comportamiento de un sitio durante un tiempo
estimado en el que se realizarán las acciones a evaluar, para luego al finalizar la
captura, obtener un análisis detallado de todo lo ocurrido, de esta manera
podemos detectar el comportamiento de un sitio o aplicación web.
¿Cómo se accede a ellas?

Para abrir las herramientas de desarrollador, normalmente se puede hacer clic con
el botón derecho en cualquier parte de la página y seleccionar "Inspeccionar" o
presionando F12 en el teclado.

Cada herramienta de desarrollador tiene su propia interfaz y conjunto de opciones,


pero en general, la mayoría de las herramientas son fáciles de usar y con un poco
de práctica pueden ayudarte a mejorar significativamente tu flujo de trabajo y
eficiencia.
Módulo XXIV

React JS
1. ¿Qué es ReactJS?

React es una biblioteca Javascript de código abierto diseñada para crear interfaces
de usuario con el objetivo de facilitar el desarrollo de aplicaciones en una sola
página. Es mantenido por Facebook y la comunidad de software libre.

https://es.reactjs.org
2. Crear una aplicación de react

Puedes crear una aplicación de React con los siguiente comando

npx create-react-app my-app

Este comando creará una aplicación en react por default, una vez creada puedes
acceder a ella y ejecutar de la siguiente manera (en este caso, nuestro proyecto se
llama my-app)

cd my-app
npm run start

Create React App es un ambiente cómodo para aprender React, y es la mejor


manera de comenzar a construir una nueva aplicación de página única usando
React.
3. JSX

Es una tecnología implementada en React, la sintaxis de JavaScript no reconoce


el HTML, pero el jsx nos facilita la escritura de HTML en javascript.
4. Qué son los componentes

Los componentes permiten separar la interfaz de usuario en piezas


independientes, reutilizables y pensar en cada pieza de forma aislada.

Pero dicho de forma más sencilla. Es simplemente una función de JavaScript con
la particularidad de que retorna HTML.
5. Creando un componente

Para crear un componente solo crea un nuevo archivo jsx, en este caso crearemos
un archivo llamado Test.jsx. Este contendrá una función que retornará un h1 con
un Hola Mundo. Y permitiremos la exportación de este.
5. Creando un componente

Una vez creado el componente, debemos llamarlo en alguna parte. En este caso
importamos el componente Test y lo renderizamos de la siguiente forma en el
archivo index.js
6. React Router

Biblioteca que nos permitirá el manejo de rutas en nuestro proyectos.

https://www.w3schools.com/REACT/react_router.asp
7. Hooks

Los Hooks son funciones que te permiten “enganchar” el estado de React y el ciclo
de vida desde componentes de función.

Nota: Los hooks no funcionan dentro de las clases, pero puedes usar React sin
clases.
8. useState()

Nos permite mantener seguimiento del estado de una información en nuestra


función.
Para utilizarlo tenemos que importarlo, y utilizar la sintaxis mostrada. setColor es
una función que nos permitirá cambiar el valor, y color nos permite acceder al valor
guardado.
9. useEffect()

Nos permite realizar efectos secundarios en nuestros componentes.

https://www.w3schools.com/REACT/react_useeffect.asp
11. useRef()

Este hook permite persistir valores entre renderizaciones.

Puede ser utilizado para guardar un valor que cambiara y no causar una
renderización cuando sea actualizado.

https://www.w3schools.com/REACT/react_useref.asp
12. DOM

https://lenguajejs.com/javascript/dom/que-es/
13. Hooks personalizados

Los hooks en sí son funciones reutilizables. (como los componentes)

Cuando tienes una lógica que necesita ser utilizada varias veces en varios
componentes, podemos crear un hook personalizado.
14. Consumo de una API

Existen varios tipos de API, algunas son bastante sencillas, para utilizar algunas
API necesitas tener permisos para utilizarla ya sea a través de un código o utilizar
la API a través de una IP permitida.

Primero te enseñare como traer datos de una API simple


14. Consumo de una API
const [data, setData] = useState(null); //Creamos una variable

//Utilizamos un useEffect para consumir la API en segundo plano


useEffect(() => {
//Fetch es una función integrada a JS para traer datos de una URL
fetch("https://jsonplaceholder.typicode.com/todos") //Esta es una URL de prueba
.then((res) => res.json()) //Una vez cargada la información, la cargamos como
JSON
.then((data) => setData(data)); //Guardamos la data en la variable DATA

}, []); //Sin dependencias para solo cargar la API una sola vez.

if(data){ console.log(data) } //El if es para ejecutar el código únicamente si la


API trae datos

//Imprimir la data en consola (Felicidades, ya has traido los datos de la API,


están en la variable data
15. Consumo de una API con KEY

Hay ciertas API que para interactuar con ellas necesita tener una KEY, esta es
básicamente una contraseña. A veces para obtener una KEY necesitas pagar o
simplemente registrarte en alguna página. A continuación se te mostrará un
ejemplo de cómo interactuar con una API con Key
15. Consumo de una API con KEY

/*Primeramente crearemos una constante con todas las opciones de conexión a


la API, por ejemplo el método ‘GET’ es para obtener datos. Y los headers
contienen información como el servidor de la api y la KEY, por motivos de
seguridad quite la KEY de la API.*/

const options = {
method: 'GET',
headers: {
'X-RapidAPI-Key': 'xxxxx',
'X-RapidAPI-Host': 'airbnb13.p.rapidapi.com'
}
};
15. Consumo de una API con KEY
const [data, setData] = useState(null);

useEffect(() => {
//Ingresamos el URL como primer parámetro y como segunda la constante de
opciones
fetch("link", options)
.then((res) => res.json())
.then((data) => setData(data));

}, []);

//El if es para ejecutar el código únicamente si la API trae datos


if(data){ console.log(data) }
16. Ejercicios extras

- Realizar el juego de 3 en raya


- Realizar un buscador de tareas
- Realiza un carrito de compra funcional donde puedas agregar productos
- Realiza una calculadora
- Realiza un personaje que se mueva a través del navegador con las teclas de
navegación
- Realiza una pagina con informacion real consumiendo una API
Módulo XXV

Diseño web
1. ¿Qué es el diseño web?

El diseño web implica trabajo relacionado con el layout y diseño de páginas online,
así como la producción de contenido, aunque generalmente se aplica a la creación
de sitios web.
2. Wireframes

Un wireframe, también conocido como un esquema de página o plano de pantalla,


es una guía visual que representa la estructura esquelética de un sitio web. Los
wireframes se crean con el propósito de organizar los elementos para que estos
lleven a cabo mejor su propósito particular.
3. Mockups

Un mockup es un modelo o un prototipo que se utiliza para exhibir o probar un


diseño. El término, que no forma parte del diccionario de la Real Academia
Española (RAE) y procede del inglés mock-up, suele ser desarrollado para conocer
la opinión de usuarios o consumidores
4. Buenas prácticas de diseño

A continuación conseguirás un artículo que habla sobre distintas buenas prácticas


de diseño, que se recomiendan seguir para tener una interfaz de usuario que se
sienta y se vea más profesional.

Estos puntos es importante tenerlos en clase antes de ir a la práctica.

https://kinsta.com/es/blog/mejores-practicas-diseno-web/
5. Cómo funcionan estas herramientas

Estas herramientas suelen estar compuestas en tres etapas o secciones:

- Diseño: esta sección es para que puedas modificar todos los elementos,
formas, colores, tamaños, textos, etc. De cada una de las páginas de tu
diseño

- Prototipado: en esta sección puedes realizar cada una de las conexiones


entre páginas/elementos de tu diseño

- Prueba: Aquí podrás tener la experiencia más cercana a una aplicación, pues
podrás visualizar tu diseño como si fuera una página web/app
5. Cómo funcionan estas herramientas

Las herramientas de diseño UI/UX suelen ser bastante intuitivas y fáciles de usar,
debido a que realmente estas simulan bastante bien lo que podrías hacer en HTML
y CSS, si eres conocedor de estas tecnologías. Será bastante fácil entender todo
lo que puedes hacer en estas herramientas de diseño
6. Figma

Figma es una herramienta de prototipado web y editor de gráficos vectorial, que a


diferencia de las otras herramientas, se aloja en la web.

Además, una de las características que tiene Figma es que, al estar basada en el
navegador, puedes compartir el proyecto con tu equipo y hacer modificaciones en
la misma mesa de trabajo.

Link a figma:

https://www.figma.com
7. Ejercicios extras

- Investigar y diseñar alguna animación en figma

- Diseña una barra de navegación en su versión de desktop y mobile, esta


debe tener el logo de alguna empresa, párrafos con las opciones: inicio,
nosotros, contacto. Además de tener un botón de registro. Esta barra debe
contar con animaciones (animaciones al darle click a algún boton,
animaciones al abrir un menú hamburguesa)

- Crear un mock-up (diseño y prototipado) de un sitio web para McDonalds, en


donde se destaquen sus productos y estos puedan ser de fácil adquisición.
Este sitio debe contener las páginas: inicio, menú, carrito de compra,
checkout, página de contacto
Módulo XXVI

TypeScript
1. ¿Qué es TypeScript?

TypeScript es un lenguaje de programación libre y de código abierto desarrollado y


mantenido por Microsoft. Es un superconjunto de JavaScript, que esencialmente
añade tipos estáticos y objetos basados en clases.

Documentación:
https://www.w3schools.com/typescript/
2. Opiniones sobre TypeScript

TypeScript es básicamente javascript con características agregadas, y similar a un


preprocesador.
3. Instalación de TypeScript

Ejecuta el siguiente comando en la terminal, ubicandote en la carpeta donde


trabajaras para inicializar un proyecto de NodeJs:

npm init -y

luego de ello instala todos los paquetes de Node Js con el siguiente comando:

npm i

luego ejecuta finalmente el siguiente comando para instalar TypeScript

npm i typescript --save-dev


4. Ejecución de TypeScript

Ejecuta el siguiente comando para crear el archivo de configuración de TypeScript:

npx tsc --init

Y finalmente, cuando quieras compilar los archivos TypeScript puedes hacerlo con
el comando:

npx tsc
Módulo XXVI

Python
1. Python

Python es un lenguaje de programación interpretado cuya filosofía hace hincapié


en la legibilidad de su código.​Se trata de un lenguaje de programación
multiparadigma, ya que soporta parcialmente la orientación a objetos,
programación imperativa y, en menor medida, programación funcional.
2. Instalación

Link de descarga: https://www.python.org/downloads/


3. Documentación de Python

link: https://www.w3schools.com/python/
Puntos importantes

Sección 1 Sección 2
- Comentarios - Scope y Variables
- Tipos de datos - Función sin parámetros
- Operadores comparativos - Función con parámetros
- Operadores aritméticos - Métodos (Strings, Listas, Tuplas, Diccionarios)
- Operadores de asignación - Loops (for, while)
- Operadores lógicos - Clases
- Input y Print - Try-Except
- Concatenación y F-Strings - Manejo de Archivos
- Condicionales - PRÁCTICA
(if,elif,else,ternario,match-case)
- PRÁCTICA
4. Ejercicios extras

- Crea un programa que permita enviarle mensajes al profesor cada 10


segundos diciéndole “Hola, Esto es un mensaje enviado con Python” por
whatsapp
- Crea un programa que permita guardar la información principal de un artículo
de wikipedia en un archivo .txt
- Crea un programa que sirva como un asistente personal en python al cual
puedas darle órdenes desde la terminal
- Crea un formulario validado que pida nombre completo, correo, mensaje y
que esta información sea enviada a tu correo
- Crea un programa que sea capaz de reconocer rostros en python
Módulo XXVII

Base de datos SQL


1. ¿Qué es una base de datos?

Programa capaz de almacenar gran cantidad de datos, relacionados y


estructurados, que pueden ser consultados rápidamente de acuerdo con las
características selectivas que se deseen.
2. SQL

SQL es un lenguaje de computación para trabajar con conjuntos de datos y las


relaciones entre ellos. Los programas de bases de datos relacionales, como
Microsoft Office Access, usan SQL para trabajar con datos.
3. MySQL

MySQL es un sistema de gestión de bases de datos relacionales (RDBMS) de


código abierto respaldado por Oracle y basado en el lenguaje de consulta
estructurado (SQL). MySQL funciona prácticamente en todas las plataformas,
incluyendo Linux, UNIX y Windows. Aunque puede utilizarse en una amplia gama
de aplicaciones, MySQL se asocia más a menudo con las aplicaciones web y la
publicación en línea.
4. Documentación de SQL

link: https://www.w3schools.com/mysql/default.asp
5. Ejercicios extras

1) Realizar un query que traiga datos de 3 tablas distintas al mismo tiempo.


2) Crea dos columnas llamada created_at y updated_at, en donde created_at
contenga el timestamp en el cual se crea un dato. Y updated_at que contenga
el timestamp de la última vez que se actualizo ese elemento.
3) Investiga qué son los triggers y crea uno que actualice una tabla una vez que
insertes un dato en una tabla distinta.
Módulo XXVIII

PHP
1. Qué es PHP

PHP (acrónimo recursivo de PHP: Hypertext Preprocessor) es un lenguaje de


código abierto muy popular especialmente adecuado para el desarrollo web y que
puede ser incrustado en HTML.
2. Utilizar PHP

El navegador no entiende PHP, este se tiene que correr por parte del server. Para
ello necesitamos que el servidor local ejecute el código PHP
3. Documentación PHP

Link: https://www.w3schools.com/php/
4. Puntos importantes

Sección 1 Sección 2 Sección 3

- - Funciones sin parámetros - COOKIES


Comentarios
- - Funciones con parámetros - Regex
Variables
- - Loops (for, while, foreach) - Modularización
Tipos de datos
- - Métodos (strings, arrays,) - PROYECTO
Operadores comparativos
- Operadores aritméticos - Asoc. Arrays, Clases y Objetos
- Operadores de asignación - Try-Catch
- Operadores lógicos - Conexión a Base de Datos (MySQL)
- Echo y Concatenación - Crear Tabla
- Condicionales - Métodos HTTP
(if, elseif, else, ternario, switch-case) - Realizar consultas (CRUD)
- PRÁCTICA - Isset
- PRÁCTICA
5. Ejercicios de PHP

1) Realizar un formulario de registro con sus respectivas validaciones. El


formulario guardará:
- Nombre
- País (List con options)
- Correo
- ¿Eres empresa? (Radio button)
- ¿De donde escuchaste de nosotros? (Checkbox)
- Contraseña

Una vez el usuario se registre, debe aparecerte una pantalla en donde pueda
visualizar sus datos
6. Ejercicios de PHP

OPCIONAL:

- Enviar los datos por correo electrónico


- Guardar los datos en un archivo
- Guarda en una base de datos SQL
7. Ejercicios extras

- Crea un formulario que envie datos por correo


- Crea un formulario que guarde datos en la base de datos
- Crea un formulario para actualizar un elemento en la base de datos
- Crea un botón que elimine un elemento de la base de datos
- Crea una pagina que traiga todos los datos de una tabla de la base de datos
Módulo XXIX

Modelo MVC
1. Modelo MVC

Modelo Vista Controlador (MVC) es un estilo de arquitectura de software que


separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en
tres componentes distintos.

Se trata de un modelo muy maduro y que ha demostrado su validez a lo largo de


los años en todo tipo de aplicaciones, y sobre multitud de lenguajes y plataformas
de desarrollo.
1. Modelo MVC

El Modelo contiene una representación de los datos que maneja el sistema, su


lógica de negocio, y sus mecanismos de persistencia.

La vista, o interfaz de usuario, que compone la información que se envía al cliente


y los mecanismos de interacción con éste.

El Controlador, que actúa como intermediario entre el Modelo y la Vista, gestiona el


flujo de información entre ellos y las transformaciones para adaptar los datos a las
necesidades de cada uno.
1. Modelo MVC
Módulo XXX

Laravel
1. Laravel

Laravel es un framework de código abierto para desarrollar aplicaciones y servicios


web con PHP 5, PHP 7 y PHP 8. Su filosofía es desarrollar código PHP de forma
elegante y simple, evitando el "código espagueti". Fue creado en 2011 y tiene una
gran influencia de frameworks como Ruby on Rails, Sinatra y ASP.NET MVC.
2. Documentación de Laravel

https://laravel.com/docs/9.x/installation
3. Cosas que necesitamos para instalar Laravel

Composer:
https://getcomposer.org/download/
4. Instalar instalador de laravel

Una vez instalado composer, tenemos acceso a instalar paquetes que formen
parte de este gestor de paquetes. Ingresa el siguiente comando para instalar un
instalador de laravel:

composer global require laravel/installer

Una vez instalado puedes hacer uso de este creando tu primer proyecto en Laravel
con el siguiente comando

laravel new (nombre de la aplicación) O laravel new --jet (login/register incluido) (nombre de la
aplicación)

Nota: esto instalará una versión de Laravel óptima para tu PC según la versión de
PHP que tengas instalado.
4. Instalar instalador de laravel

Luego de instalar JetStream, tenemos que instalar todos los paquetes de NODE
necesarios.
Con el comando:
- npm install
o en su versión corta
- npm i

para ejecutar un proyecto de Laravel, necesitamos ejecutar el siguiente comando:


- php artisan serve
5. Estructura de carpetas de laravel

Cabe destacar que cada versión de laravel puede tener una estructura de carpetas
un poco diferente. La destacada a continuación es la versión 9.

https://laravel.com/docs/9.x/structure
5. Estructura de carpetas de laravel

- App: Tiene toda la lógica de nuestra aplicación


- Bootstrap: contiene bootstrap y archivos de caché, usualmente no se suele
tocar esta carpeta
- Config: contiene los archivos de configuración de la aplicación
- Database: contiene la estructura y funcionamiento de la base de datos así
como también la estructura de datos falsos
- Node_modules: contiene los paquetes de Node necesarios para que la
aplicación funcione.
- Public: contiene los archivos públicos como Javascript, Imágenes, CSS, y
también el archivo index el cual inicializa toda la aplicación.
- resources: contiene las vistas así como archivos no compilados de css o js en
caso de utilizar un pre-procesador
5. Estructura de carpetas de laravel

- routes: contiene todas las rutas de la aplicación


- storage: contiene archivos de registros de la aplicación así como archivos
blade compilados
- tests: carpeta para realizar unit testing en laravel
- vendor: carpeta que contiene los paquetes de composer para que la
aplicación funcione.
7. archivo .env

El archivo .env es el archivo que contiene las variables de entorno, esto significa
que tiene variables que son de importancia para la aplicación y que quizás
necesitan ser resguardadas en un archivo privado que no se suba a GitHub.

Aquí puedes encontrar por ejemplo, credenciales de la conexión de la base de


datos.
8. controlador de rutas

Laravel tiene un sistema de rutas implementados, estas retornan directamente una


vista a través de una función

Ejemplo de retornar vista

Route::get('/', function () { return view('welcome'); });


9. Migrations

En Laravel nunca tocamos la base de datos directamente, sino que lo hacemos a través
de laravel. De esta forma todos los desarrolladores pueden tener la misma estructura
de base de datos en cualquier momento. Un migration representa a una tabla de la
base de datos (SQL) que es código y puede ser ejecutado para crear la estructura de
base de datos en cualquier pc. Aquí puedes conseguir más documentación al respecto:
https://laravel.com/docs/9.x/migrations#main-content

Para ejecutar las migrations una vez realizadas:


php artisan migrate

Para ejecutar las migrations con los factory:


php artisan migrate –seed

Puedes encontrar las migrations en la carpeta database/migrations


9. Migrations

Aquí puedes encontrar un ejemplo de una migración (tabla) de usuarios:


10. Factory

Un factory es la estructura de datos que creamos con FAKER una librería para
crear datos falsos, una vez creada la estructura podemos ejecutar el archivo
seeder para ejecutar estos.

Puedes conseguir mas informacion aqui:


https://laravel.com/docs/9.x/database-testing

Los factory están ubicados en la carpeta database/factories


10. Factory

Aquí puedes ver un ejemplo de un Factory que funciona para la tabla usuarios,
crea nombres, emails, verificaciones, contraseñas y tokens aleatorios
11. Archivos blade

Blade es un gestor de plantillas que nos permite utilizar HTML con funcionalidades
de un lenguaje de programación con condicionales, switches, loops y más.

Puedes conseguir gran información sobre esta tecnología en la documentación


oficial:
https://laravel.com/docs/9.x/blade

Los archivos que utilizan blade siempre tienen la extensión .blade.php, estos se
encuentran dentro de la carpeta resources/views
12. Componentes de blade

Un componente es un archivo o bloque de código reutilizable en tu proyecto

La utilización de componentes nos permite tener un código más modular en donde


no repitamos un trabajo que ya realizamos anteriormente.

Blade nos permite crear componentes con el siguiente comando:

php artisan make:component (Nombre)

Estos estarán en la carpeta components dentro resources, para llamar un


componente lo puedes hacer de la siguiente manera:

<x-(nombre) />
13. livewire

Livewire es un framework para Laravel que te permite crear interfaces dinámicas de


forma simple, sin dejar de lado la comodidad de Blade.
Livewire nos permitirá crear componentes, pero a diferencia de los componentes de
blade, los componentes de livewire tendrán una parte lógica en la carpeta app y una
parte visual en la carpeta resources/views

Para crear un componente livewire:


php artisan make:livewire (nombre)
los componentes de Livewire pueden ser llamados de la siguientes forma
<livewire:(nombre)>
Documentacion de livewire: https://laravel-livewire.com/docs/2.x/quickstart
13. livewire
13. livewire

Lo que acabas de visualizar es un controlador de un componente livewire el cual


retorno una vista con un conjunto de datos que se traen del modelo de cursos, esto
trae los últimos 9 cursos con la información de cada usuario que los creó
13. livewire
13. livewire

Lo que acabas de visualizar es un componente Livewire que utiliza los datos


enviados por el controlador y que imprime un componente Blade con esos datos
14. Modelos

Los modelos son la base de la interacción entre la base de datos y la aplicación,


así que cada elemento de la base de datos necesita su propio modelo para poder
llamar a los datos.

para crear un modelo puedes utilizar el siguiente comando:


php artisan make:model Video(singular)

Para crear un modelo con un factory y una migration puedes utilizar el siguiente
comando
php artisan make:model Video(singular) -mcf

https://laravel.com/docs/9.x/eloquent-serialization
14. Modelos
14. Modelos

Lo que acabas de ver es un modelo el cual contiene funciones para realizar


asociaciones entre tablas y además crea campos virtuales (datos extras
construidos directamente en la aplicación, estos no se encuentran en la base de
datos, sino que suelen ser construidos a partir de estos)
15. Controlador

Los controladores son archivos que mantienen un orden lógico de nuestra


aplicación, estos pueden ser archivos que están entre el medio de la vista y el
modelo, y pueden ser funciones para manejar lógica de la app.
16. Ejercicios extras

- Realiza una aplicación de blogs (donde puedas ver todos los blogsy un blog),
crear 100 blogs falsos
- Crear un formulario donde puedas crear datos.
- Crear un formulario donde puedas actualizar un blog.
- Crea un botón para eliminar un blog.
- Crea un sistema para manejar un inventario de comida
Módulo XXXI

Base de datos NOSQL


1. Base de datos NoSQL

NoSQL se refiere a una base de datos no relacional o no SQL. Una base de datos
relacional es un formato de bases de datos muy estructurado basado en una tabla,
como MySQL u Oracle. Las bases de datos NoSQL están orientadas a los
documentos y le permiten almacenar y recuperar datos en formatos que no sean
tablas. Algunas de las plataformas NoSQL más conocidas son MongoDB,
Elasticsearch® y Redis®.
2. ¿Qué es MongoDB?

MongoDB es una base de datos de documentos que ofrece una gran escalabilidad
y flexibilidad, y un modelo de consultas e indexación avanzado.

Link de descarga: https://www.mongodb.com/try/download/community

Descarga de gestor de base de datos (ROBO3T): https://robomongo.org/download


3. Documentación/ejercicios de MongoDB

link: https://www.w3resource.com/mongodb-exercises/
4. Algunos comando a utilizar

db.(colección).find()
db.(colección).insert({nombre:”Juan Rodriguez”, edad: 24})
db.(colección).insertOne({nombre:”Juan Rodriguez”, edad: 24})
db.(colección).insert(variable)
db.(colección).insertMany([{nombre:”Juan Rodriguez”, edad: 24},{nombre:”Juan
Rodriguez”, edad: 24}])

db.(colección).remove({})
db.(colección).remove({‘_id’:ObjectId(“****”)})
db.(colección).remove({‘$or’:[{“nombre”:”juan”},{“nombre”:”carlos”}]})
db.(colección).deleteOne({‘$or’:[{“nombre”:”juan”},{“nombre”:”carlos”}]})
db.(colección).deleteMany({‘$or’:[{“nombre”:”juan”},{“nombre”:”carlos”}]})
db.(colección).deleteMany({‘$and’:[{“nombre”:”juan”},{“ciudad”:”Maracaibo”}]})
4. Algunos comando a utilizar

$lt menor qué


$lte menor igual qué
$gt mayor qué
$gte mayor igual qué
$ne no igual qué
db.(colección).deleteMany({‘$and’:[{“nombre”:”juan”},{“edad”:{$gte:30}}]})

db.(colección).update({‘_id’:ObjectId(“****”)}, {$set:{nombre:”hola”}})
db.(colección).update({‘_id’:ObjectId(“****”)}, {$set:
{fechaDeNacimiento:ISODate(‘1998-05-26’)}})
db.(colección).update({‘_id’:ObjectId(“****”)}, {$unset:{edad:1}})
db.(colección).update({“edad”:{$gte:30}}, {$set:{edad:30}})
db.(colección).update({“edad”:{$gte:30}}, {$set:{edad:30}, {multi:true})
4. Algunos comando a utilizar

db.(colección).update({“sexo”:”f”}, {$set:{bono:30}, {multi:true})


db.(colección).update({$and: [{edad:{$gte:30, $lte:40}}]}, {$set: {extra:5000}},
{multi:true})
db.(colección).find({}).sort({nombre:-1,edad:1})
db.(colección).find({edad:30}, {nombre:-1,edad:1,sexo:1})
db.(colección).find({edad:{$gte:30}},{nombre:-1,edad:1,sexo:1}.sort({edad:1})
db.(colección).find({edad:{$gte:30, $lte:50}})

db.(colección).find({nombre:/^J/i})
db.(colección).find({nombre:/^J$/i})
db.(colección).countDocuments({nombre:/a/i})
db.(colección).find({edad: {$gte:40}}).count()
db.(colección).find({area:{$in:['compras','ventas']},sexo:'F'}).sort({edad:-1}).limit(1)
4. Algunos comando a utilizar

db.(colección).update({‘_id’:ObjectId(“****”)}, {$push:{telefono:'04146012659'}})
db.(colección).update({‘_id’:ObjectId(“****”)},{$push:{deportes:
{'pelota':'futbol','acuaticos':'natacion'}}})
db.(colección).aggregate([{$match:{genero:'F',edad:{$gte:20}}},{$group:
{_id:'$area',total:{$sum:'$salario'}}}])
db.createCollection('test');
db.getCollection(colección).drop()
db.empresa.aggregate([{
$lookup: {
from: "users",
localField: "edad",
foreignField: "edad",
as: "edades"
}}]);
5. Ejercicios extras

- Crea una colección de de ventas la cual contenga un array llamado factura


con 3 elementos vendidos
- Elimina solo un elemento del array anterior

Algunos ejercicios:
https://gist.github.com/AlejoJamC/eb91b093d98b82a2a05ac330e20ead28
Módulo XXXII

NodeJs
1. ¿Qué es NodeJs?

Node.js, es un entorno en tiempo de ejecución multiplataforma para la capa del


servidor (en el lado del servidor) basado en JavaScript.

Node.js es un entorno controlado por eventos diseñado para crear aplicaciones


escalables, permitiéndote establecer y gestionar múltiples conexiones al mismo
tiempo. Gracias a esta característica, no tienes que preocuparte con el bloqueo de
procesos, pues no hay bloqueos.

https://www.w3schools.com/nodejs/default.asp
2. ¿Quienes utilizan NodeJs?

- Netflix
- PayPal
- Uber
- Linkedin
- Ebay
3. ¿Que necesito para utilizar NodeJs?

- Instalar NodeJs: https://nodejs.org/es/download/


3. ¿Qué es API?

Una API o interfaz de programación de aplicaciones es un conjunto de definiciones


y protocolos que se usan para diseñar e integrar el software de las aplicaciones.
4. Utilización de NodeJs

Para utilizar o iniciar un proyecto en NodeJs primero crea una carpeta y en esta
ejecuta el comando:

npm init -y

una vez realizado esto, crea un archivo index.js e ir al archivo package.json y


cambiar “test” por ‘“dev” y ponerle el siguiente valor:

"nodemon index.js"
4. Utilización de NodeJs

Luego instalar nodemon para poder ejecutar un entorno de desarrollo con el


siguiente comando:

npm i nodemon -D

Instalar express también

npm i express
5. ExpressJs

Express.js, o simplemente Express, es un marco de aplicación web de back-end


para Node.js, lanzado como software gratuito y de código abierto bajo la licencia
MIT. Está diseñado para crear aplicaciones web y API. Se le ha llamado el marco
de servidor estándar de facto para Node.js.
6. API REST: Representational State Transfer

Es una convención que se refiere a servicios web por protocolo HTTP

Métodos:

Get: Obtener
Put: Modificar/Actualizar (Todo un elemento)
Patch: Modificar/Actualizar (Parcialmente un elemento)
Post: Crear
Delete: Eliminar
6. API REST: Representational State Transfer
7. ENDPOINTS

Los endpoints son las URLs de un API o un backend que responden a una
petición. Los mismos entrypoints tienen que calzar con un endpoint para existir.
Algo debe responder para que se renderice un sitio con sentido para el visitante.
8. Iniciar un proyecto de NodeJs

una vez realizado los pasos anteriores crear un archivo index.js, en donde puedes agregar lo
siguiente:

const express = require('express'); //requerir express


const app = express(); //ejecutar express
const port = 3000; //crear un puerto
//mi primera ruta
app.get('/', (req,res) => {
res.send('Hola Mundo');
});
//escucho al puerto que cree
app.listen(port, () => {
console.log('Mi port ' + port);
});
8. Iniciar un proyecto de NodeJs

Una vez realizado esto, puedes ejecutar el comando

npm run dev

Una vez tengas creadas algunas rutas para tu proyecto, debemos recordar que
cada archivo debe tener su propia y única funcionalidad. Por ello, crea una carpeta
de “routes” donde trabajes todas las rutas de tus proyectos

La carpeta de rutas solo se debe ocupar de las rutas de tus proyectos, mas no de
su funcionalidad.
8. Iniciar un proyecto de NodeJs

Para la funcionalidad de cada ruta del proyecto debes crear la carpeta “services” y alli
trabajar los servicios de API (La funcionalidades de todas tus rutas y el proyecto).

Formato para iniciar un servicio:

class ProductsService {
constructor(){
///Variables goblales o metodos que deben inicializar al inicio
}

}
module.exports = ProductsService;
8. Iniciar un proyecto de NodeJs

en los servicios es en donde agregamos funcionalidades a cada una de las rutas


como: agregar un elemento, actualizar un elemento, eliminar un elemento,
9. INSOMNIA

Es una aplicación que nos permite realizar pruebas API. Es un cliente HTTP que
nos da la posibilidad de testear 'HTTP requests' a través de una interfaz gráfica de
usuario, por medio de la cual obtendremos diferentes tipos de respuesta que
posteriormente deberán ser validados.

Link de descarga: https://insomnia.rest/download


12. CORS

Paquete que sirve para poder manejar una lista de conexiones a nuestra API

instalación:

- npm i cors
13. FAKER

Crear datos falsos

comando para instalar faker: npm i faker@5.5.3

https://fakerjs.dev/guide/#browser
14. Ejercicios extras

- Realizar una API CRUD con una ruta que funcione como un buscador
- Realiza una ruta que cree 100 datos falsos
- Crea una ruta que borre toda una colección
- Crea una ruta que traiga datos relacionales de dos colecciones
Módulo XXXIII

Pruebas unitarias con JEST


1. ¿Qué es un test?

Como developers tenemos que garantizar que el codigo escrito cumpla con ciertos
requisitos/expectativas. Esto lo hacemos por medio de una prueba (test).

Esto nos asegura:

● Que nuestro código cumple con los estándares.


● Enviamos a producción sin errores.
2. ¿Qué es el unit testing?

Este consta de probar pequeñas partes de nuestro código asegurándonos así que
cumplen con lo que se desea. (En una página web las pruebas se traducen a
probar cada sección de la página y todas las interacciones en ellas).
3. ¿Qué es JEST?

Framework de JavaScript para realizar unit testing en JavaScript

Documentación:
https://jestjs.io/docs/getting-started

Instalación:
npm install --save-dev jest
4. Utilización de JEST

1 - Crea un proyecto de NodeJs creando una carpeta y ejecutando en esta el


comando “npm init -y”
2 - Instalar JEST como dependencia de desarrollo con el comando “npm i --save-
dev jest”
3 - Crear una carpeta src y un archivo index.js dentro en donde en esta
oportunidad trabajaremos
4 - Crear una carpeta llamada “__test__” dentro de src, esta carpeta contendra
los archivos de testing de nuestra app
5 - Modificar el archivo packgage.json, mas especificamente la propiedad test y
colocarle el valor “jest”
5 - Crear un archivo global.test.js
5. Haciendo mi primer test

En esta oportunidad tenemos una constante llamada text. Luego ejecutamos la


función test, esta tiene dos parámetros:
1) Un texto indicativo del test
2) Una función anónima en donde evaluaremos una variable.
En este caso evaluamos que el string contenga la palabra ‘Mundo’
6. NOTA

Jest es sumamente fácil de aprender, sin embargo tiene importancia pues las
empresas más grandes exigen que tu código este testeado antes de ser
implementado.
Módulo XXXIV

Gestión de un proyecto de software


1. Gestión

Acción o trámite que, junto con otros, se lleva a cabo para conseguir o resolver
una cosa.
2. Metodología de trabajo

La metodología es una de las etapas específicas de un trabajo o proyecto que


parte de una posición teórica y conduce una selección de técnicas concretas (o
métodos) acerca del procedimiento destinado a la realización de tareas vinculadas
a la investigación, el trabajo o el proyecto.
2. Metodología ágil de trabajo

Estas metodologías ayudan en el desarrollo de proyectos que necesitan mayor


enfoque para adecuarse a las necesidades del cliente.

Es decir, una metodología ágil es una innovadora forma de trabajar y organizar


flujos, que divide los proyectos en partes, permite adaptarse sobre la marcha,
complementa y resuelve etapas en poco tiempo.

Con las metodologías ágiles, no se planifica ni se diseña el proyecto por


adelantado, es decir, a medida que ellas se van desarrollando se va definiendo el
proyecto. Siendo así, los involucrados trabajan por períodos específicos, mientras
que cada miembro del equipo debe ejecutar una serie de tareas.
3. Algunas metodologías de trabajo

- Programación extrema (XP)


- SCRUM
- Kanban
3. Algunas metodologías de trabajo
4. SCRUM

Scrum es un marco que permite el trabajo colaborativo entre equipos. Al igual que
un equipo de rugby (de donde proviene su nombre) cuando entrena para un gran
partido, scrum anima a los equipos a aprender a través de las experiencias, a
auto-organizarse mientras aborda un problema y a reflexionar sobre sus victorias
y derrotas para mejorar continuamente.
5. Roles en SCRUM

- Product owner: Dueño de la idea o proyecto


- SCRUM Master: Conoce la metodología y se encarga de que se cumpla la
metodología
- Equipo: El equipo que ejecuta el proyecto
6. Product owner

Tiene la responsabilidad de decidir qué trabajo necesita hacerse y maximizar el


valor del producto o proyecto que esté llevando a cabo.
7. SCRUM Master

actúa como un líder servicial, ayudando al equipo y a la organización a usar lo


mejor posible la Metodología Scrum, se focaliza en la parte de negocio y es
responsable del ROI del proyecto. Traslada la visión del proyecto al equipo,
formaliza las prestaciones en historias a incorporar en el Product Backlog y las
prioriza de forma regular.
8. Equipo

Grupo de profesionales con los conocimientos técnicos necesarios y que


desarrollan el proyecto de manera conjunta llevando a cabo las historias a las que
se comprometen al inicio de cada sprint. Sprint es una serie de periodos de
tiempos pequeños, cuya duración es de 1 a 4 semanas, con preferencia por los
intervalos más cortos. En cada Sprint, el equipo construye y entrega un incremento
del producto. Cada incremento es un subconjunto del producto, reconocible y
visualmente mejorado, que cumple con el criterio de aceptación y está construido
con un nivel de calidad llamado definición de terminado.
9. Software para ayudarnos a gestionar

Existen una gran variedad de software para distintos fines que nos pueden ayudar
a gestionar mejor las cosas. Los que recomiendo son:

- JIRA
- Trello (Si necesitas algo mucho más simple)
- Slack (Para la comunicación)
- Discord (Para la comunicación)
- Google slides
- Google Drive
10. Consejos importantes para gestionar

Algunos consejos para realizar una mejor gestión:

- Si un proceso no es dependiente de ti, delegalo.


- Conoce a tu equipo.
- Comunicación constante.
- Deja los procesos y reglas tan claros y transparentes a la mano de todos, que
todos puedan seguirlos de forma simple.
- El tiempo es lo más importante, si algo se puede automatizar, hazlo.
- Se un líder, no un jefe.
Módulo XXXV

Desarrollo en otras áreas


1. Desarrollo mobile

El desarrollo de aplicaciones móviles es el conjunto de procesos y procedimientos


involucrados en la escritura de software para dispositivos informáticos pequeños e
inalámbricos, como teléfonos inteligentes y otros dispositivos portátiles.
2. Tecnologías utilizadas

1) Dart
2) Java
3) Kotlin
4) Python
5) Javascript
6) Swift
7) Flutter
3. Desarrollo Desktop

Una app de desktop (también llamada de Escritorio) es aquella que está instalada
en el ordenador del Usuario, que es ejecutada directamente por el sistema
operativo, ya sea Microsoft Windows, Mac OS X, Linux o Solaris, y cuyo
rendimiento depende de diversas configuraciones de hardware como memoria
RAM, disco duro, memoria de video, etc.
4. Tecnologías utilizadas

1) C
2) C++
3) C#
4) Java
5) Swift
5. Desarrollo de videojuegos

El desarrollo de videojuegos es el proceso de creación de un videojuego, desde el


concepto inicial hasta el videojuego en su versión final. Es una actividad
multidisciplinaria, que involucra profesionales de la programación, diseño gráfico,
animación, sonido, música, actuación, etc.
6. Tecnologías utilizadas

1) C++
2) C#
3) Java
4) Javascript
5) Python
7. Desarrollo de sistemas de control

Dentro de la ingeniería de sistemas, un sistema de control es un conjunto de


dispositivos encargados de administrar, ordenar, dirigir o regular el comportamiento
de otro sistema, con el fin de reducir las probabilidades de fallo y obtener los
resultados deseados.
8. Tecnologías utilizadas

Realmente puede ser cualquiera


Módulo XXXVI

Machine Learning
1. ¿Qué es la inteligencia artificial?
La inteligencia artificial (IA) es la capacidad de una computadora o un sistema para
realizar tareas que normalmente requieren inteligencia humana, como aprender,
razonar y entender el lenguaje. En pocas palabras, Inteligencia Artificial es la
capacidad de una máquina para simular la inteligencia humana.
2. ¿Qué es el machine learning?

Machine learning es una técnica de inteligencia artificial que permite a las


computadoras aprender y mejorar automáticamente a partir de datos, sin ser
programadas explícitamente. En resumen Machine Learning es una técnica que
permite a las computadoras aprender automáticamente y mejorar su rendimiento
sin ser programadas de forma específica.

Documentacion:
https://www.w3schools.com/python/python_ml_getting_started.asp
3. En resumen

El machine learning es una técnica de aprendizaje para la computadora basada en


datos y estadísticas.

Estos datos pueden venir en cualquier forma desde arrays o una base de datos
completa

Ejemplo: [99,86,87,88,111,86,103,87,94,78,77,85,86]

De este array podrás sacar cual es el valor más alto, el más pequeño y el
promedio, entre otros datos
4. Promedio (Mean)

El promedio es el valor que se obtiene al sumar todos los números de un conjunto


y dividirlos entre la cantidad de elementos

Dado el siguiente array:


[99,86,87,88,111,86,103,87,94,78,77,85,86]

Calcular promedio:

Para calcular el promedio en estos datos necesitamos sumar todos los datos y
dividirlos por la cantidad de datos

1167/13 = 89.77
4. Promedio, Mediana, Moda

En python se veria asi:

import numpy

speed = [99,86,87,88,111,86,103,87,94,78,77,85,86]

x = numpy.mean(speed)

print(x)
5. Mediana (Median)

La mediana es el valor que se encuentra en la mitad de un conjunto de números


una vez organizados. En caso de que el conjunto de los elementos sea un número
par, los dos números en el medio se suman y se dividen entre dos

Dado el siguiente array:


[99,86,87,88,111,86,103,87,94,78,77,85,86]

Al organizarlo se veria asi:


[77, 78, 85, 86, 86, 86, 87, 87, 88, 94, 99, 103, 111]

La mediana es 87
5. Mediana (Median)

El python se veria asi:

import numpy

speed = [99,86,87,88,111,86,103,87,94,78,77,85,86]

x = numpy.median(speed)

print(x)
6. La moda (Mode)

La moda es el numero que mas se presenta en un conjunto de números

Utilizaremos el siguiente array para un ejemplo:

[99,86,87,88,111,86,103,87,94,78,77,85,86]

Verificamos la cantidad de números repetidos y notamos lo siguiente:

[99,86,87,88,111,86,103,87,94,78,77,85,86]
6. La moda (Mode)

En python se veria asi:

from scipy import stats

speed = [99,86,87,88,111,86,103,87,94,78,77,85,86]

x = stats.mode(speed)

print(x)
7. Librerías

Quizás hayas notado que para los ejemplos anteriores en python se utilizaron
librerías, a continuación encontrarás láminas que hablen un poco sobre estas:
8. Numpy

NumPy es una librería de Python que proporciona un objeto de matriz de alto


rendimiento y herramientas para trabajar con ellas. Sirve para realizar operaciones
matemáticas en arreglos multidimensionales de manera eficiente, como por
ejemplo, álgebra lineal, transformaciones de Fourier y generación de números
aleatorios.

También es utilizado como base para otras librerías de cálculo científico en Python,
como SciPy y scikit-learn.
9. SciPy

SciPy es una librería de Python que se basa en NumPy y proporciona una amplia
variedad de algoritmos y herramientas científicas avanzadas. Sirve para hacer
tareas específicas como optimización, integración, interpolación, procesamiento de
señales e imágenes, entre otras.

En resumen, SciPy extiende a NumPy, brindando una amplia variedad de


herramientas y algoritmos para la resolución de problemas científicos y técnicos de
manera eficiente.
10. Desviación estándar

La desviación estándar es un número que nos dice cuánto varían los números en
un conjunto de datos.

Es como una medida de "dispersión" de los números. Si los números son muy
parecidos entre sí, la desviación estándar será pequeña. Si los números son muy
diferentes entre sí, la desviación estándar será grande.

Es una forma de medir cuán "alejados" están los números de un conjunto de datos
entre sí.
11. Desviación estándar

Un ejemplo de esto dado el siguiente array:


[86,87,88,86,87,85,86]

La desviación estándar es: 0.9

Dado el siguiente array: [32,111,138,28,59,77,97]

la desviación estándar es: 37.85

A mayor diferencia entre los números, mayor es la desviación estándar


12. Programación estándar

Usualmente cuando realizamos un software, tenemos unos inputs, creamos una


lógica y eso retorna una salida
13. Ejemplo de programación estándar

Transforma 5 centímetros a pulgadas.

Para realizar este ejercicio necesitamos dividir 5 entre 2.54

5/2.54= 1.96 pulgadas


14. Aprendizaje automático

Cuando hablamos de un software de aprendizaje automático tenemos un software


que tiene unos inputs, y el software, a través de un proceso que desconocemos
retornara output.
15. Ejemplo de aprendizaje automático

Convierte 5 centímetros a pulgadas

Para realizar este ejercicio primero necesitamos suministrar distintas conversiones


para que el software aprenda la relación entre centímetros y pulgadas y de esa
forma pueda deducir una fórmula para realizar el ejercicio.
16. Que es una red neuronal

Una red neuronal es un sistema de computación inspirado en el cerebro


humano. Consta de capas de "neuronas" conectadas entre sí, las cuales
reciben entradas, realizan cálculos matemáticos y producen salidas.

Estas redes son capaces de aprender a partir de ejemplos y realizar tareas


complejas, como el reconocimiento de imágenes o el procesamiento de
lenguaje natural.

Resumen: Una red neuronal es como un sistema de computadora que puede


aprender y hacer cosas complejas. Es como un cerebro artificial.
17. Neurona

Una neurona es una unidad básica de procesamiento en una red neuronal. Cada
neurona recibe entradas de otras neuronas o de los datos de entrada, realiza un
cálculo matemático simple en esas entradas, y luego envía una salida a otras
neuronas o a la capa de salida.
18. Capas de una red neuronal

Una capa es un conjunto de neuronas que están conectadas entre sí y procesan


los datos de entrada. En una red neuronal con múltiples capas, las capas se
encuentran jerárquicamente una sobre la otra. La primera capa se conoce como la
capa de entrada, la última capa se conoce como la capa de salida, y las capas
intermedias se conocen como capas ocultas.
19. Más capas o neuronas

Ambas son importantes en una red neuronal. La cantidad de capas en una red
neuronal se refiere a la profundidad de la red, es decir, cuántas veces los datos se
procesan a través de las capas ocultas antes de llegar a la capa de salida. Una red
neuronal con más capas ocultas puede aprender patrones más complejos en los
datos, pero también puede ser más propensa a sobreajuste.

La cantidad de neuronas en una capa se refiere al número de unidades de


procesamiento en esa capa. Una capa con más neuronas tiene mayor capacidad
para aprender patrones complejos, pero también requiere más datos de
entrenamiento para evitar el sobreajuste.
19. Más capas o neuronas

En general, se recomienda una buena cantidad de capas y neuronas para lograr


un buen rendimiento en una red neuronal. Sin embargo, la elección óptima
dependerá del problema específico que se esté tratando de resolver. La mejor
manera de determinar el número óptimo de capas y neuronas es a través del
experimento y la validación.
20. Peso entre conexiones neuronales

En una red neuronal, el peso de las conexiones se refiere a los valores numéricos
asociados a las conexiones entre las neuronas en la red. Estos valores indican la
importancia o el impacto de cada conexión en la propagación de la información a
través de la red.

Los pesos de las conexiones son uno de los aspectos más importantes de una red
neuronal, ya que tienen un gran impacto en su rendimiento y capacidad para
aprender y generalizar patrones. Los pesos se ajustan durante el proceso de
entrenamiento de la red mediante algoritmos de optimización, como el gradiente
descendente, para minimizar el error entre los resultados esperados y los
resultados reales.
21. Cosas que involucra el peso

Algunas de las cosas que involucran los pesos de las conexiones son:

- La cantidad de información que se transmite a través de una conexión es


proporcional al peso de la conexión.
- Los pesos pueden ser positivos o negativos, lo que significa que pueden
aumentar o disminuir el impacto de una conexión en la propagación de la
información.
- Un peso cero indica que una conexión no tiene ningún impacto en la
propagación de la información.
21. Cosas que involucra el peso

- Los pesos son los parámetros que se ajustan durante el entrenamiento de


una red neuronal para mejorar su rendimiento.
- Los pesos iniciales son esenciales para el proceso de aprendizaje, ya que
pueden afectar significativamente el rendimiento de la red.
22. Librerías para machine learning

Existen varias librerías populares para machine learning en Python, algunas de las
más comunes son:

- scikit-learn: Es una librería de aprendizaje automático de código abierto para


Python que proporciona una amplia variedad de herramientas de aprendizaje
automático, incluyendo clasificación, regresión y clustering.
22. Librerías para machine learning

- TensorFlow: Es una librería de código abierto desarrollada por Google que se


utiliza para la implementación de redes neuronales y deep learning. Es
ampliamente utilizado en investigación y producción.

- Keras: Es una librería de alto nivel para la construcción de redes neuronales


en Python. Es fácil de usar y es compatible con TensorFlow, Microsoft
Cognitive Toolkit (CNTK) y Theano.
23. Documentación

- Tensorflow: https://www.tensorflow.org/learn
- Keras: https://keras.io/getting_started/
- scikit learn: https://scikit-learn.org/stable/user_guide.html
24. Google Colab

Colaboratory, o "Colab" para abreviar, es un producto de Google Research.


Permite a cualquier usuario escribir y ejecutar código arbitrario de Python en el
navegador. Es especialmente adecuado para tareas de aprendizaje automático,
análisis de datos y educación.

Esto nos ahorra tener que instalar tantas librerías y herramientas en nuestra PC,
además de que nos ahorra usar los recursos.
25. TensorFlow

Esta es una librería para manejar el tipo de dato llamado Tensor

En programación, un array es una estructura de datos lineal que contiene


elementos del mismo tipo de datos y se almacena en la memoria. Por otro lado, un
tensor es una estructura de datos multi-dimensional que generaliza la idea de un
array a cualquier número de dimensiones.
26. Keras

Keras es una librería que funciona con TensorFlow

Esta proporciona una amplia variedad de modelos de redes neuronales


predefinidos, incluyendo modelos para clasificación de imágenes, procesamiento
de lenguaje natural, modelos generativos y más. Además, permite la creación de
modelos personalizados a través de una API de alto nivel, lo que permite a los
usuarios crear modelos complejos con relativamente poco código.

De forma resumida, esta librería sirve para la construcción y entrenamiento de


redes neuronales
27. Scikit-learn

Scikit-learn está diseñada para una amplia variedad de problemas de aprendizaje


automático, incluyendo clasificación, regresión, agrupamiento, selección de
características y reducción de dimensionalidad.
28. Ejemplo

El siguiente codigo aprende a transformar de

https://colab.research.google.com/drive/1ehETBOVtCqe7G6HOvm84hfXba8Gd9IL
W?usp=sharing
Módulo XXXVII

Big Data
1. ¿Qué es la big data?
Los macrodatos, ​también llamados datos masivos, inteligencia de datos,
datos a gran escala o big data es un término que hace referencia a conjuntos
de datos tan grandes y complejos que precisan de aplicaciones informáticas
no tradicionales de procesamiento de datos para tratarlos adecuadamente.
1. ¿Qué es big data?

Big data También


Big data siempre
Big data incluye incluye datos
ha existido pero no
datos de la banca, menos conocido
ha habido una
casas de acciones, como cadenas de
manera de reunir y
email y post en suministro, Código
analizar los
redes sociales de barra o torres
grandes datos
de telefonía
2. Las cuatros Ves de big data

Volumen: El tamaño de los datos (terabytes de datos de la banca).


01.

02. Velocidad: cuán rápido los datos entran (sensores de carros que
envían información cada segundo).

03. Variedad: diferentes formas de datos (post de social media, fotos,


comentarios).
Veracidad: incertidumbre de los datos (datos de social media puede
04. ser no precisa, vienes de bots, etc ).
3. Descripción general de Big Data
IBM Cognos
SAP Business Objects
Visualización MicroStrategy
y Analítica ZoomData
Qlik
PowerBI
Hadoop MapReduce
Tableau
HIVE
TEZ
Computación Apache Drill
Apache Storm
Google BigQuery
FlinkGPFS
IBM
Spark
HadoopStreaming
Depósito Kafka Tables
MAPR
Apache HBASE
KUDU
MEMSQL

Distribución y Pivotal
Almacen de Oracle EXADATA
datos TERADATA
GreenPlum
MAPR
NETEZZA
HortonWorks
Cloudera
Azure HDInsight
Amazon EMR
4. Problemas del big data

Conjuntos de datos extremadamente grandes

1 Necesita un lugar para almacenar


cantidades masivas de datos

2 Necesita una forma de acceder a los


datos rápidamente

3 Necesita un lugar para almacenar


cantidades masivas de datos

4 Necesita copias de seguridad por falla de


hardware
5. Anaconda

Anaconda es una distribución de los lenguajes de programación Python y R para


computación científica (ciencia de datos, aplicaciones de Machine Learning,
procesamiento de datos a gran escala, análisis predictivo, etc.).

Tiene como ventaja simplificar la gestión e implementación de paquetes. La


distribución incluye paquetes de “data science” adecuados para Windows, Linux y
macOS.

Link de descarga: https://www.anaconda.com/products/distribution


6. Jupyter

Los Jupyter Notebooks son una aplicación web, también de código abierto que nos
va a permitir crear y compartir documentos con código en vivo, ecuaciones,
visualizaciones y texto explicativo. Estos documentos registran todo el proceso de
desarrollo y, lo más interesante, pueden ser compartidos fácilmente con otras
personas a través de correo electrónico, Dropbox, sistemas de control de
versiones como git/GitHub y nbviewer.

Este viene incluido con Anaconda


7. Pandas

Pandas es una muy popular librería de código abierto dentro de los desarrolladores
de Python, y sobre todo dentro del ámbito de Data Science y Machine Learning, ya
que ofrece unas estructuras muy poderosas y flexibles que facilitan la
manipulación y tratamiento de datos.

Pandas surgió como necesidad de aunar en una única librería todo lo necesario
para que un analista de datos pudiese tener en una misma herramienta todas las
funcionalidades que necesitaba en su día a día, como son: cargar datos, modelar,
analizar, manipular y prepararlos.

Documentación: https://pandas.pydata.org/docs/
8. Series

Una forma de llamar a los arrays o listas


9. DataFrames

Array bidimensionales u objetos


10. Regresión lineal (Machine learning)

Este es un algoritmo usado para modelar la relación entre dos variables o más.

Y = B0 + B1x1 + B2x2 + B3x3…

La Y es variable dependiente

La X es variable independiente
11. Para qué sirve la regresión lineal

Nos sirve para hacer predicciones simples tales como las notas de un examen
basado en la cantidad de horas estudiadas o el salario de una persona basado en
la cantidad de años de trabajo, etc.
12. Gráfico de regresión lineal
13. Libro y Páginas recomendadas
• Libro: Python Natural Language Processing Techniques (
https://www.amazon.com/Python-Natural-Language-Processing-techniques/dp/1787121429)
• Natural Language Toolkit (https://www.nltk.org/)
• NLP for Big Data: What Everyone Should Know (http://www.expertsystem.com/nlp-big-data-everyone-know
• What Is Natural Language Processing?](https://machinelearningmastery.com/natural-language-processing/)
• [7 Applications of Deep Learning for Natural Language Processing](
https://machinelearningmastery.com/applications-of-deep-learning-for-natural-language-processing/)
• The Art of Tokenization (https://www.ibm.com/developerworks/community/blogs/nlp/entry/tokenization?lang=en)
• What does tf-idf mean? (http://www.tfidf.com/)
• TD-IDF Explained (https://www.elephate.com/blog/what-is-tf-idf/)
• TD-IDF in Apache Spark (https://mingchen0919.github.io/learning-apache-spark/tf-idf.html)
• 6 Easy Steps to Learn Naive Bayes Algorithm (with codes in Python and R) (
https://www.analyticsvidhya.com/blog/2017/09/naive-bayes-explained/)
• Feature Extraction and Transformation in Adobe Spark – Documentation (
https://spark.apache.org/docs/2.2.0/mllib-feature-extraction.html#tf-idf)

También podría gustarte