Curso Programación Web
Curso Programación Web
Introducción
Curso de programación web
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
R-C
3. Software
ctrl
3. Información
Ejemplos:
"El gobierno Israelí recibió información acerca de dos de sus siete soldados
desaparecidos"
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 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
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
Tools - SEO
17. HTTP
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
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
(Fastly-21)
21. CDN
22. W3C
Es el demandante de un servicio
Ejemplo:
- Yo cuando voy al médico
- Yo cuando ingreso a youtube.com
25. Servidor
Ejemplo:
- El médico realizando un chequeo
- El computador (servidor) donde está alojado Youtube enviando la informacion
que pedi
26. Buscador web
google
28. Código
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
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.
(Analogía)
33. Plugin
Front-end
2. Desarrollador Back-end
Back-end
3. Desarrollador Full-Stack
Full-Stack
4. DevOps
DevOps
Fuente: nubity.com
4. Data Scientist
https://www.talent.com/es/salary?job=remote+data+scientist
5. Diseñador UI/UX
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
SEO
Módulo III
Herramientas utilizadas para desarrollos
1. Computadora y especificaciones
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
Eclipse
3. Entornos de desarrollo
NetBeans
3. Entornos de desarrollo
Theia
4. Extensiones de utilidad
5. Navegadores
- Firefox
- Edge
- Opera
- Brave
- Google chrome
- 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
- Flask
9. Controlador de versiones
My App v 1.0.0
9.1 Git
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
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
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.
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)
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)
Abreviatura de «Super User Do» (Super Usuario 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.
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. Git
https://git-scm.com
2. Github
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.
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
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
¿Que es .gitignore?
Es un archivo especial .gitignore que 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 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. Puntos importantes
- Qué es Git - Git Ignore
- Qué es Github - Interfaz de GitHub (Web)
- Instalación - GitHub Pages
- Que es un repositorio
- Git Init
- Git Publish
- Git Commit
- Git Push
- Git Pull
- Git Clone
- Fork
- Pull Request
- Merge
18. 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
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
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
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 caso la etiqueta HTML tiene una propiedad o también llamado atributo.
Esta sirve para agregar una funcionalidad o brindar más información.
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>Mi Titulo</title>
Esta etiqueta define el título de una página.
<body>
Contiene el contenido de la página web.
8. Etiquetas importantes
Etiquetas más usadas:
<p>, </img>, <h1>, <h2>, <h3>, <button>,
<a>, <ol>, <li>, <ul>, <br>, <input>, <label>,
<span>,<div>,<iframe>, <video>, <select>,
<option>
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
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)
- 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
Puntos a tratar:
● color (color de letra)
● background-color
● background-image
● background (gradient)
● comentarios
● Cómo manejar colores (Hexadecimal, rgb, rgba, nombre)
● width (ancho)
● height (alto)
● text-align
● font-size
● font-weight
● font-family
● font-style
6. Algunas propiedades de CSS
● nesting
● unidades de medidas ● overflow
● display ● pseudo-clases
● flex (modelo de caja) ● pseudo-elementos
● justify-content, align-items ● transiciones
● margin ● transformaciones
● padding ● animaciones
● border (width, style, color, radius) ● responsive
● gap
● grid (columns, rows, areas)
● variables
PROYECTO
8. Responsive
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
2. Diagrama de flujo de datos (DFD)
2. Diagrama de flujo de datos (DFD)
3. Lenguajes de programación
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 (SASS)
1. Pre-procesadores
Pero estas funcionalidades siempre cumplen con un solo objetivo, ej: realizar
operaciones matemáticas complejas, crear una interfaz, realizar animaciones,
estilizar.
2. Qué son los frameworks
Documentación oficial:
https://getbootstrap.com/docs/5.2/getting-started/introduction/
5. Tailwind
Documentación oficial:
https://tailwindcss.com/docs/installation
6. Otras Librerías
AOS
Animate.css
CSShake
7. Puntos importantes
- ¿Qué es Tailwind?
- Como instalar Tailwind (CDN e Instalación)
- Cómo utilizar Tailwind
- Clases variables en Tailwind
- Responsive en Tailwind
- Otras librerias
- PROYECTO
8. 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
https://www.w3schools.com/js/js_syntax.asp
4. ¿Cómo escribir JS?
Una vez creamos el archivo tenemos que llamarlo en nuestro archivo HTML con la
siguiente etiqueta:
<script src="prueba.js"></script>
7. Variables
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
En este módulo veremos que debemos conocer como desarrolladores web y cómo lo
aplicaremos en nuestro dia a dia.
3. Conceptos manejados
Conceptos relacionados con la programación web son los siguientes:
● Redes LAN (Local Área Network): Una red LAN se encuentra en un área geográfica pequeña,
como un edificio, una oficina o un campus universitario. Suelen utilizar cables para conectar los
dispositivos, pero también pueden utilizar tecnologías inalámbricas.
● Redes MAN (Metropolitan Área Network): Una red MAN es una red de computadoras que cubre
un área geográfica más grande que una LAN, pero más pequeña que una WAN. Suelen utilizar
cables para conectar los dispositivos, pero también pueden utilizar tecnologías inalámbricas.
● Redes WAN (Wide Área Network): Una red WAN es una red de computadoras que cubre un área
geográfica muy grande, como un país o un continente. Suelen utilizar tecnologías inalámbricas o
satelitales para conectar los dispositivos.
3. Conceptos manejados
Dirección IP: Es un número único que identifica a un dispositivo en una red y se utilizan para enviar y recibir datos. Una
dirección IP consta de cuatro números separados por puntos. Cada número puede estar entre 0 y 255. Por ejemplo, la
dirección IP 192.168.1.1 es una dirección IP válida, comúnmente la vemos como dirección de IP local establecida por defecto.
Protocolos de comunicación: Son un conjunto de reglas que definen cómo se comunican dos dispositivos en una red. Los
protocolos de comunicación definen cómo se empaquetan, envían y reciben los datos.
● HTTP (Hypertext Transfer Protocol): es un protocolo de comunicación que se utiliza para transferir páginas web entre
un servidor web y un navegador web. HTTP es un protocolo de transferencia sin estado, lo que significa que no
mantiene información sobre las solicitudes anteriores.
● HTTPS (Hypertext Transfer Protocol Secure): es una versión segura de HTTP que utiliza el protocolo de seguridad
de la capa de transporte (TLS) para cifrar los datos que se transmiten entre un servidor web y un navegador web.
● TCP/IP (Transmission Control Protocol/Internet Protocol): es un conjunto de protocolos que se utilizan para
conectar dispositivos en una red. TCP/IP es el protocolo de comunicación subyacente que se utiliza para HTTP y
HTTPS.
● FTP (File Transfer Protocol): es un protocolo de red que permite la transferencia de archivos entre sistemas
conectados a una red TCP/IP (Transmission Control Protocol/Internet Protocol), basado en la arquitectura cliente-
servidor. Se utiliza comúnmente para transferir archivos entre servidores web y computadoras locales. También se
utiliza para transferir archivos entre servidores en diferentes redes.
3. Conceptos manejados
Puertos: Un puerto es un punto de acceso a un servicio en un dispositivo. Se utilizan para
identificar el servicio al que se está accediendo a través de una red, debido a esto se
clasifican en 2 familias:
● Puertos Fisicos
● Puertos Virtuales
3. Conceptos manejados
Puertos Físicos: Estos se encuentran en un dispositivo físico, como una computadora, una
impresora o un router. Se utilizan para conectar dispositivos a una red o a otros dispositivos.
Ejemplo: un puerto USB, HDMI, Thunderbolt, Audio, Red (RJ-45) etc.
3. Conceptos manejados
Puertos Virtuales: Son puertos que se encuentran en un dispositivo virtual, como un servidor
web o un programa de software. Se utilizan para conectar aplicaciones a servicios.
1. Puertos reservados: Son puertos que se utilizan para servicios estándar, como HTTP,
HTTPS y FTP, van desde el 0 al 1023.
Algunos ejemplos de puertos reservados son:
● HTTP: Puerto 80
● HTTPS: Puerto 443
● FTP: Puerto 21
1. Puertos registrados: Se utilizan para servicios específicos, como correo electrónico,
juegos y mensajería instantánea. van desde el 1024 al 49151.
2. Puertos dinámicos: Se utilizan para servicios temporales, como la transferencia de
archivos. van desde el 49152 al 65535.
3. Conceptos manejados
Enrutamiento: Es el proceso de determinar la ruta más eficiente para enviar datos de un origen a
un destino. Se realiza mediante enrutadores, que son dispositivos de red que conectan dos o más
redes. Los enrutadores utilizan tablas de enrutamiento para almacenar información sobre las rutas
disponibles entre las redes. Cuando un enrutador recibe un paquete de datos, utiliza su tabla de
enrutamiento para determinar la ruta más eficiente para enviar el paquete al destino.
Servidor web: Es un programa informático que almacena y sirve páginas web a los usuarios.
Están conectados a Internet y utilizan el protocolo HTTP (Hypertext Transfer Protocol) para
comunicarse con los usuarios. Cuando un usuario abre un navegador web y escribe una dirección
URL (comúnmente conocido como Link), el navegador envía una solicitud al servidor web, Este
responde a la solicitud enviando la página web al navegador web.
Cliente web: Es un programa informático que solicita y recibe páginas web de un servidor web.
Son utilizados por los usuarios para navegar por Internet. Los clientes web más comunes son los
navegadores web, como Chrome, Firefox y Edge, Brave, Opera, por mencionar algunos. Los
navegadores web utilizan los protocolo HTTP y HTTPS para comunicarse con los servidores web.
Módulo XV
Servidores locales
1. Servidores locales
- MAMP:
https://www.mamp.info
- WampServer:
https://www.wampserver.com/
Módulo XVI
WordPress
1. WordPress
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.
WEBP:
https://www.adslzone.net/reportajes/foto-video/webp-formato-ventajas/
Optimización de imágenes:
https://kinsta.com/es/blog/optimizar-imagenes-para-la-web/
2. Imágenes
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 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/
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.
https://aws.amazon.com/es/caching/
6. Optimización de código
- 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 caché
- 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 XVIII
SEO
1. 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/
https://fullseo.es/blog/meta-tags/
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> <main> </main>
<article> </article> 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
https://www.hostinger.es/tutoriales/que-es-schema-markup
https://technicalseo.com/tools/schema-markup-generator/
6. Plugins para aplicar esto en Wordpress
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 (Backend)
- Nuestros paneles de administración
- Los servidores en sí
- La propia interacción humana
4. ¿Cómo evitar las fallas de seguridad?
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
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 módulo, 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.
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.
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.
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
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
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. Oratoria
¿Que es la Oratoria?
Es el arte de hablar en público de forma clara, concisa y persuasiva. Es una
habilidad de gran utilidad que se puede aprender y mejorar con la práctica y la
experiencia.
Sin embargo, una vez queremos profundizar y vivir de trabajos freelancer tenemos
que expandir nuestro alcance utilizando todo medio posible para atrapar trabajos.
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.
12. freelancer.es
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
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), CapCut (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 (X), 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
Para determinar cuánto cobrar por un trabajo te recomiendo realizar los siguientes
pasos…
21. ¿Cuánto puedo cobrar por mi trabajo?
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 XXI
Briefing
1. Briefing
Un briefing es una reunión o documento utilizado en el ámbito empresarial o creativo para
proporcionar información esencial y relevante sobre un proyecto, tarea o situación específica.
También se conoce como "sesión informativa" o "informe preliminar". El objetivo principal de
un briefing es comunicar de manera clara y concisa los detalles importantes y los objetivos del
proyecto a todas las partes involucradas, como el equipo de trabajo, los empleados, los
proveedores o los clientes.
2. Temas tratados
En esta reunión se suelen tratar temas como:
● Propósito del proyecto: El propósito del proyecto es la declaración general que define el motivo o la
razón detrás de su ejecución. Describe la meta general que se pretende lograr con el proyecto.
● Objetivos específicos a alcanzar: Los objetivos específicos son las metas detalladas y concretas que
se deben alcanzar para cumplir con el propósito del proyecto. Estos objetivos son medibles y
proporcionan una guía clara para evaluar el progreso y el éxito del proyecto.
● Plazos y fechas importantes: Los plazos y fechas importantes son los períodos de tiempo específicos
en los que se deben completar ciertas etapas o hitos clave del proyecto. Estas fechas son cruciales
para garantizar un progreso adecuado y cumplir con los plazos establecidos.
● Recursos disponibles: Los recursos disponibles son los activos, tanto humanos como materiales, que
están a disposición del proyecto. Esto puede incluir personal, presupuesto, equipo, tecnología u otras
herramientas necesarias para llevar a cabo el proyecto.
2. Temas tratados
● Limitaciones y restricciones: Las limitaciones y restricciones son los factores que pueden afectar o
restringir la ejecución del proyecto. Estos pueden incluir restricciones de tiempo, presupuesto, recursos
limitados, regulaciones legales, limitaciones tecnológicas o cualquier otro factor que pueda limitar el
alcance o el éxito del proyecto.
● Roles y responsabilidades de cada persona o equipo: Los roles y responsabilidades definen las
tareas y responsabilidades asignadas a cada persona o equipo involucrado en el proyecto. Establecen
claramente quién es responsable de qué y cómo se divide el trabajo para lograr los objetivos del proyecto
de manera eficiente.
● Expectativas y requisitos: Estas son las expectativas y demandas específicas que se establecen para
el proyecto. Pueden incluir requisitos del cliente, estándares de calidad, expectativas de rendimiento,
requisitos legales o cualquier otro criterio que deba cumplirse para que el proyecto sea considerado
exitoso.
3. Preguntas
Veamos algunas preguntas agrupadas por categoría que puedes considerar al realizar un briefing:
Objetivos y Audiencia:
● ¿Cuáles son los principales objetivos que desea lograr con este proyecto?
● ¿A quién está dirigido el producto/servicio?
● ¿Cuál es el perfil de la audiencia objetivo?
● ¿Cuáles son las necesidades y deseos clave de la audiencia objetivo?
● ¿Qué mensaje o propuesta de valor desea transmitir a la audiencia objetivo?
Producto/Servicio:
● ¿Cuál es el producto/servicio que se va a desarrollar/promocionar?
● ¿Cuáles son las características y funcionalidades clave del producto/servicio?
● ¿Existen requisitos o limitaciones técnicas específicas a tener en cuenta?
● ¿Hay aspectos legales o normativos que deban considerarse para el desarrollo o promoción del
producto/servicio?
3. Preguntas
Competencia y Mercado:
● ¿Quiénes son los principales competidores en el mercado?
● ¿Qué ventajas competitivas ofrece el producto/servicio en comparación con la competencia?
● ¿Cuáles son las tendencias actuales en el mercado que podrían influir en el proyecto?
Diseño y Estilo:
● ¿Tiene alguna preferencia en cuanto al estilo visual del proyecto? (corporativo, moderno, minimalista,
etc.)
● ¿Existen colores, logotipos o elementos de marca específicos que deban incluirse?
● ¿Hay algún sitio web, diseño o referencia visual que le guste en términos de diseño y experiencia de
usuario?
Contenido y Mensajes:
● ¿Quién se encargará de proporcionar el contenido (texto, imágenes, videos, etc.)?
● ¿Existe algún mensaje clave que se deba transmitir a través del contenido?
● ¿Necesita servicios de redacción o traducción para el contenido?
3. Preguntas
Presupuesto y Plazos:
● ¿Cuál es el presupuesto asignado para el proyecto?
● ¿Existen plazos o fechas límite específicas que deban tenerse en cuenta?
● ¿Hay alguna restricción o limitación financiera que deba considerarse?
Fuente
Fuente
4. Cuando realizar un Briefing
El briefing es necesario en diferentes situaciones, como:
● Inicio de un proyecto: Antes de comenzar un proyecto, ya sea un desarrollo web, un evento, una campaña de
marketing, etc., es importante realizar un briefing para establecer los objetivos, las expectativas y los requisitos
del proyecto.
● Comunicación interna: En entornos empresariales, el briefing se utiliza para comunicar y alinear a los equipos
internos sobre nuevos proyectos, cambios estratégicos o iniciativas importantes.
● Reuniones creativas: En el ámbito creativo, como en agencias de publicidad o diseño, el briefing se utiliza para
proporcionar información y guía sobre proyectos específicos a los equipos creativos.
● Lanzamiento de productos: Antes del lanzamiento de un nuevo producto o servicio, se puede realizar un
briefing para asegurarse de que todos los aspectos relacionados con el lanzamiento se hayan considerado y se
estén comunicando correctamente.
Módulo XXII
Manejo de facturación
1. Facturación
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:
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.
Esto lo podemos lograr en una reunión previa con el cliente llamada Briefing.
3. Preguntas
Aquí te dejo algunas preguntas que es importante que realices durante el briefing 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?
● ¿Su página web tendrá login/register?
● ¿Cuáles son los roles que tendrá su sitio web? (Ejemplo: Administrador, usuario, editor,
etc…)
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.
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
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
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).
Ejemplo:
3. Dominio
Tipo (Type): Se refiere al tipo de registro DNS que estás configurando. Los registros DNS son
utilizados para mapear nombres de dominio a direcciones IP.
Tipos existentes:
El uso del símbolo "@" es una forma abreviada de referirse al nombre de dominio principal, puedes
utilizar el símbolo "@" para referirse a este de manera más concisa.
3. Dominio
Datos: Son los datos asociados con el registro DNS en cuestión. El formato de los
datos varía según el tipo de registro. Por ejemplo, para un registro A, los datos
serían la dirección IP a la que se mapea el nombre de dominio. Para un registro
MX, los datos serían los servidores de correo electrónico asociados.
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.
Es decir, el tiempo en segundos que indica durante cuánto tiempo los servidores DNS y otros dispositivos
deben almacenar en caché la información del registro antes de buscar una actualización. Un valor típico para
TTL es 3600 segundos (1 hora), pero puede ajustarse según las necesidades.
Esto evita que la información se mueva indefinidamente por Internet, favoreciendo la privacidad y el
rendimiento.
4. Hosting
● VPS: Servidor virtualizado con recursos dedicados y aislados para mayor flexibilidad y
control.
● Dedicado: Servidor físico dedicado para una sola cuenta con control total y recursos
dedicados.
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.
La razón por la que se mencionan Azure y AWS como experiencia relevante al buscar trabajo,
se debe a que son dos de los proveedores líderes en el mercado de servicios en la nube.
Muchas empresas, tanto grandes como pequeñas, utilizan Azure y AWS para alojar sus
aplicaciones y servicios, lo que crea una demanda de profesionales con experiencia en estas
plataformas.
7. Cómo acceder a un servidor
SSH, FTPS y Panel de control son diferentes métodos de acceso utilizados para administrar y
gestionar un servidor o hosting.
● 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 permite conectarse de forma segura con socios de Negocio, clientes y usuarios.
● Panel de control: Es una interfaz de control de hosting popular que proporciona una plataforma
gráfica para administrar y controlar un servidor web. Permite realizar tareas de gestión de
dominios, configurar cuentas de correo electrónico, gestionar bases de datos, instalar
aplicaciones web y realizar otras configuraciones relacionadas con el hosting.
7. Cómo acceder a un servidor
● SSH: Para acceder por este medio una terminal funciona.
Cabe destacar que todos los servidores suelen tener una carpeta 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, por ejemplo si es un hosting PHP la carpeta setia HTDOCS
Módulo XXIV
Mejoramiento de Perfil (GitHub)
¿Por qué mejorar el perfil de GitHub?
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 estas plantillas:
https://dev.to/envoy_/150-badges-for-github-pnk
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 XXV
DevTools
¿Qué son las DevTools?
La nueva era de las IA´s se caracteriza por el auge de los modelos de lenguaje grandes (LLM / Large
Language Models) y el aprendizaje profundo (Deep learning). Los LLM se entrenan en grandes conjuntos de
datos, texto y código, y pueden generar texto, traducir idiomas, escribir diferentes tipos de contenido creativo y
responder preguntas de manera informativa. El aprendizaje profundo es un tipo de aprendizaje automático
que permite a los sistemas aprender de los datos sin ser programados explícitamente. Los sistemas de
aprendizaje profundo se entrenan en grandes conjuntos de datos, y luego pueden utilizar esos datos para
hacer predicciones o tomar decisiones.
1. Introducción a las IA
La nueva era de la IA aún está en sus primeras etapas, pero tiene el potencial de revolucionar muchas
industrias. Por ejemplo, los LLM se pueden utilizar para generar contenido de marketing personalizado,
traducir documentos a varios idiomas y escribir diferentes tipos de contenido creativo. El aprendizaje profundo
se puede utilizar para desarrollar automóviles sin conductor, mejorar los diagnósticos de salud y crear nuevos
productos financieros.
La nueva era de la IA es un momento de gran oportunidad y gran desafío. A medida que la tecnología de IA
continúe desarrollándose, debemos ser conscientes de los posibles riesgos, como el desplazamiento laboral y
el uso indebido de la IA para fines maliciosos. Sin embargo, si usamos la IA de manera responsable, tiene el
potencial de hacer un mundo mejor.
2. Características
● Inteligencia artificial (IA): Es una rama de la informática que se ocupa de la creación de
agentes inteligentes, que son sistemas que pueden razonar, aprender y actuar de forma
autónoma.
● Aprendizaje automático: Es un tipo de IA que permite a los sistemas aprender sin ser
programados explícitamente. Los sistemas de aprendizaje automático se entrenan con datos, y
luego pueden usar esos datos para hacer predicciones o tomar decisiones cada vez más
precisas.
● Comprensión del lenguaje natural: La comprensión del lenguaje natural se centra en comprender el
significado del texto. Por ejemplo, un modelo de comprensión del lenguaje natural podría ser capaz de
comprender la pregunta "¿Cuál es la capital de Francia?" y responder con la respuesta correcta,
"París". La comprensión del lenguaje natural se utiliza en una variedad de aplicaciones, como los
chatbots, la traducción automática y los sistemas de recomendación.
● Chat GPT: Chat GPT es un chatbot con un modelo de lenguaje de gran tamaño desarrollado por
OpenAI. Se entrena en un conjunto de datos masivo de texto y código, y puede generar texto, traducir
idiomas, escribir diferentes tipos de contenido creativo y responder a tus preguntas de manera
informativa.
● Codeium: Es una extensión de autocompletado y una plataforma online que proporciona un entorno de
aprendizaje interactivo. Utiliza el aprendizaje automático para sugerir código, completar código y
detectar errores.
● Blackbox: Es una extensión de código que utiliza el aprendizaje automático para generar código a
partir de una descripción natural del problema. Puede generar código para una variedad de lenguajes
de programación, incluidos Python, Java, C++ y JavaScript.
● GitHub Copilot: Es una extensión de código que utiliza el aprendizaje automático para sugerir código.
Está disponible para los usuarios de GitHub que tienen una suscripción a GitHub Pro o GitHub Team.
3. Herramientas
Comparativa de herramientas:
Tipo de herramienta Generador de texto Plataforma de aprendizaje Extensión / Herramienta de Extensión / Herramienta de
conversacional (Chatbot) interactivo / Extensión de código / autocompletado de código autocompletado de código
Generador de texto
conversacional (Chatbot)
Lenguajes de programación Python, Java, C++, JavaScript, Python, Java, C++, JavaScript, Python, Java, C++, JavaScript, Go, Python, Java, C++, JavaScript, Go,
soportados Go, Ruby, C#, PHP, CSS, y 51 HTML, CSS y 64 más Ruby, C#, PHP y 42 más Ruby, C#, PHP y 24 más
más
Acción o trámite que, junto con otros, se lleva a cabo para conseguir o resolver
una cosa.
2. Metodología de trabajo
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
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
Hay distintas herramientas que te pueden servir con una pizarra para compartir
todas tus ideas como:
- https://excalidraw.com
- https://app.milanote.com
- https://notion.so
3. Alcance
Consta de definir hasta dónde planeas llegar con el software, todo lo que se
propone y se debe realizar.
Entregables:
- Diseño y desarrollo de la aplicación web.
- Integración con un sistema de gestión de contenidos (CMS) para que la
empresa pueda actualizar el catálogo de productos.
- Integración con un sistema de pago seguro.
- Manual de usuario para la aplicación.
3. Alcance
Exclusiones:
- La aplicación no incluirá un sistema de gestión de inventario.
- La aplicación no incluirá un sistema de gestión de envíos.
- La empresa se encargará de la promoción y marketing de la aplicación.
3. Alcance
Restricciones:
- La aplicación debe ser compatible con los navegadores web más comunes
(Chrome, Firefox, Safari, Edge).
- La aplicación debe ser segura y proteger la información personal de los
clientes.
- La aplicación debe estar disponible 24/7.
Cronograma:
El desarrollo de la aplicación se completará en 3 meses.
La aplicación se lanzará al público en 4 meses.
Presupuesto:
El presupuesto total del proyecto es de $10.000.
4. Roles
Si tu aplicación tendrá roles como cliente, administrador, editor, etc. Debes definir
qué cosas podrá realizar cada uno de estos roles y que cosas no podrá hacer.
Ejemplo:
5. Estructura de datos
Debes definir cuáles son los datos que tu sistema almacenará y como están
estructurados, ejemplo:
5. Estructura de datos
6. Páginas
Tienes que tener en claro todas las páginas que tu sitio web tendrá, como por
ejemplo:
7. Mapa de relaciones
Debes definir cómo se relacionan los datos, esto cobra más utilidad especialmente
cuando tienes un software con una cierta complejidad de datos. Por ejemplo:
8. Estándares de código
Cuando trabajas en equipo, debe haber unos estándares en al momento de crear
código para que todo pueda tener una misma lógica al momento de nombrar los
archivos, variables, funciones, crear comentarios, etc.
9. Estándares de diseño
Se deben definir los colores, tipografías, tamaños que serán utilizados y que
tendrán propósitos específicos y situaciones para usar cada uno de estos
elementos
10. Diagramas de flujo
Los diagramas de flujo te ayudarán a entender cuales son los pasos a realizar para
que un usuario pueda realizar una cierta acción y esto aclarara aún mejor como
debe ser el diseño y funcionalidad del software
10. Diagramas de flujo
11. Tareas
Debes crear una lista con todas las tareas del proyecto, de forma que se
identifique cada una de las cosas que se deben de realizar
12. Estructura de carpetas
Debes definir cómo estará estructurado tu proyecto y además de ello, indicar cual
es la utilidad de cada una de las carpetas
Módulo XXIX
React JS
1. ¿Qué es React.js?
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 Meta y la comunidad de software libre.
https://es.reactjs.org
2. ¿Qué es Vite?
https://vitejs.dev/
3. WebPack y Rollup
Aquí vamos a seleccionar el framework, en este caso nos movemos hacia abajo con las
flechitas y seleccionamos React y damos enter.
6.1 Crear una aplicación de Vite + React
Luego nos preguntará qué lenguaje deseamos usar, en este caso seleccionamos
JavaScript.
Al seleccionarlo creará una aplicación de react, una vez creada puedes acceder a ella y
ejecutarla de la siguiente manera (en este caso, nuestro proyecto se llama my-app).
cd my-app
npm install o también npm i
npm run dev
7. 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.
8. Qué son los componentes
Pero dicho de forma más sencilla. Es simplemente una función de JavaScript con
la particularidad de que retorna HTML.
9. 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.
10. 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
11. React Router
https://www.w3schools.com/REACT/react_router.asp
12. 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.
13. useState()
https://www.w3schools.com/REACT/react_useeffect.asp
15. useRef()
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
16. DOM
https://lenguajejs.com/javascript/dom/que-es/
17. Hooks personalizados
Cuando tienes una lógica que necesita ser utilizada varias veces en varios
componentes, podemos crear un hook personalizado.
18. Consumo de una API
Existen varios tipos de API, algunas son bastante sencillas, para utilizar algunas
API necesitas tener permisos ya sea a través de un código o utilizar la API a través
de una IP permitida.
}, []); //Sin dependencias para solo cargar la API una sola vez.
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
21. Consumo de una API con KEY
/*Inicialmente 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'
}
};
22. 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 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
https://kinsta.com/es/blog/mejores-practicas-diseno-web/
5. Cómo funcionan estas herramientas
- 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
- 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
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
Documentación:
https://www.w3schools.com/typescript/
2. Opiniones sobre TypeScript
npm init -y
luego de ello instala todos los paquetes de Node Js con el siguiente comando:
npm i
Y finalmente, cuando quieras compilar los archivos TypeScript puedes hacerlo con
el comando:
npx tsc
5. Puntos importantes
● Introducción
● ¿Que es un Superset?
● Tipado de datos Estático vs Dinámico
● Tipos de datos
● Compilación
● Funciones de tipo
● Manejo del DOM
● Interfaces
Módulo XXXII
Python
1. Python
link 1: https://www.w3schools.com/python/
link 2: https://docs.python.org/es/3/tutorial/index.html
Puntos importantes
Sección 1 Sección 2
● Comentarios ● Función sin parámetros
● Variables ● Función con parámetros
● Tipos de datos ● Métodos (Strings, Listas, Tuplas, Diccionarios)
● Operadores de asignación ● Loops (for, while)
● Operadores aritméticos ● Funciones de tiempo
● Operadores comparativos ● Clases
● Operadores lógicos ● Try-Except
● Input y Print ● Manejo de Archivos
● Concatenación y F-Strings ● Regex
● Condicionales ● Envío de Email / WhatsApp
(if, elif, else, ternario, match-case) ● PROYECTO
● 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 XXXIII
Base de datos SQL
1. ¿Qué es una base de datos?
link: https://www.w3schools.com/mysql/default.asp
5. Puntos Importantes
● Simplicidad: Flask es muy fácil de aprender y utilizar, siendo ideal para proyectos
pequeños y medianos.
● Flexibilidad: No impone una estructura de proyecto rígida, permitiendo elegir entre tus
herramientas y bibliotecas favoritas.
● Amplia Gama de Extensiones: Existen numerosas extensiones que facilitan mucho el
desarrollo de características adicionales como conexión a bases de datos y más.
2. Ventajas y Desventajas
Sin embargo, también cuenta con ciertas desventajas:
● Menos Estructura: Para proyectos grandes, puede requerir una mayor planificación y
estructura personalizada.
● No es una Opción Full-Stack: Si necesitas un marco que aborde tanto el frontend
como el backend, Flask solo se enfoca en el backend.
3. Instalación
Para instalar Flask en Python, sigue los siguientes pasos:
Notas:
● Pip es el gestor de paquetes de Python y se encargará de descargar e instalar Flask y
todas las dependencias (Librerias) necesarias.
● Para actualizar pip debes ejecutar la consola con permisos de administrador y ejecutar
python.exe -m pip install --upgrade pip
4. Ejecución
Para ejecutar Flask pulsa clic derecho en cualquier área del documento y selecciona "Ejecutar
archivo Python en la terminal" o "Run Python file in terminal"
5. Conceptos importantes
Puntero: Un puntero es una variable especial en programación que almacena la dirección de memoria
de otra variable. En otras palabras, un puntero "apunta" a una ubicación específica en la memoria
donde se encuentra almacenado un valor.
Cursor: Un cursor es una herramienta que permite a las aplicaciones interactuar con bases de datos
mediante consultas SQL. Funciona como un puntero que apunta a los datos en la base de datos y se
utiliza para ejecutar consultas, recuperar resultados y realizar operaciones de lectura y escritura.
Cabeceras: Son datos adicionales que acompañan a las solicitudes y respuestas en la comunicación
entre clientes y servidores web. Proporcionan detalles importantes, como el tipo de contenido, la
autenticación, las cookies y la codificación de caracteres.
Traza de pila: La "traza de pila" (stack trace en inglés) es una herramienta para rastrear y depurar
errores o excepciones que ocurren durante la ejecución de un programa. Brinda información detallada
sobre la secuencia de llamadas a funciones o métodos que llevaron al error, ayudando a identificar la
causa del problema y solucionarlo.
6. Primeros pasos
# Importar Flask
from flask import Flask
# Ejecutar Flask
# NOTA: El argumento __name__ es un parámetro que se utiliza para determinar la ubicación de la aplicación.
# Flask utiliza __name__ que es una variable especial en Python, la cual se refiere al nombre del módulo(archivo)
# en el que se está ejecutando el código.
app = Flask(__name__)
Una vez que se tienen estos elementos, se puede empezar a escribir código PHP.
Link: https://www.w3schools.com/php/
4. Sintaxis
La sintaxis básica de PHP se basa en gran medida en la sintaxis de C, JavaScript y otros
lenguajes de programación similares.
Variables:
5. Puntos importantes
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 aparecer una pantalla en donde pueda visualizar sus datos.
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 página que traiga todos los datos de una tabla de la base de datos
Módulo XXXVI
Paradigmas de Programación
1. ¿Que es un Paradigma?
● Programación Imperativa
● Programación Funcional
● Programación Declarativa
● Programación Procedural
● Programación Estructurada
● Programación Lógica
● Programación Concurrente
● Programación Reactiva
● Programación Reactiva Funcional (FRP)
● Programación Basada en Actores
● Programación Orientada a Objetos (Object-Oriented Programming, o POO)
● Programación Basada en Aspectos (Aspect-oriented programming, o POA)
Veamos solo algunos, sin embargo encontrarás la descripción de cada uno de ellos en la documentación de este módulo
que te será suministrada.
3. Tipos de Paradigmas de Programación
Existen varios paradigmas o enfoques que guían la forma de resolver problemas y crear software. Cada uno presenta un
conjunto único de conceptos, estructuras y técnicas que influyen en la organización y escritura del código.
● Programación Imperativa
● Programación Funcional
● Programación Declarativa
● Programación Procedural
● Programación Estructurada
● Programación Lógica
● Programación Concurrente
● Programación Reactiva
● Programación Reactiva Funcional (FRP)
● Programación Basada en Actores
● Programación Orientada a Objetos (Object-Oriented Programming, o POO)
● Programación Basada en Aspectos (Aspect-oriented programming, o POA)
Veamos solo algunos, sin embargo encontrarás la descripción de cada uno de ellos en la documentación de este módulo
que te será suministrada.
3.1. Programación imperativa
Programación Imperativa
3.2 . Programación orientada a objetos
Programación Funcional
3.4. Programación Declarativa
Programación Procedural
3.6. Programación reactiva
Se basa en el principio de que los sistemas deben ser reactivos, es decir, capaces
de adaptarse dinámicamente a las condiciones cambiantes del entorno.
Los diagramas UML (Unified Modeling Language) son un conjunto de símbolos que se
utilizan para representar los diferentes aspectos de un sistema de software.
1. ¿Que es un Diagrama UML?
Los diagramas UML son un conjunto de representaciones gráficas que se emplean para
visualizar y expresar distintos elementos y características de un sistema de software.
Arquitecto de Software
2. Tipos de Diagramas UML
Hay distintos tipos de representaciones gráficas en UML, siendo los más frecuentes:
Nota: Al ser una relación de composición, si la clase “Automovil” deja de existir, las
otras clases también dejarán de hacerlo ya que su composición depende de la
existencia de la clase “Automovil”.
3. ¿Cómo se representan?
Módulo XXXVIII
Patrones de Diseño de Software
1. ¿Que son Patrones de Diseño?
Los patrones de diseño son enfoques y soluciones que han sido ampliamente probados
y aceptados para resolver problemas que surgen repetidamente en el diseño de
software.
2. Conceptos Básicos
Antes de saber más, es esencial familiarizarnos con algunos conceptos fundamentales que nos
ayudarán a entenderlos mejor:
Imagen
4.2. Factory Method
Permite crear objetos sin especificar su clase exacta, delegando la decisión de qué
clase concreta instanciar a las subclases.
Imagen
4.3. Builder
Imagen
4.4. Prototype
Imagen
5. Patrones de diseño de comportamiento
Imagen
5.2. State
Permite que un objeto cambie su comportamiento en función de su estado interno,
creando diferentes objetos de estado para cada estado posible.
Imagen
6. Patrones de diseño arquitectónicos
Se utilizan para estructurar y organizar la arquitectura de un sistema de software a gran escala,
abordando aspectos como la distribución de responsabilidades, la comunicación entre
componentes, la escalabilidad y mantenibilidad del sistema.
6.1. Model-View-Controller (MVC)
Divide una aplicación en tres componentes principales: el modelo de datos, la vista de la interfaz
de usuario y el controlador que maneja la interacción entre ambos.
6.2. Model-View-View-Model (MVVM)
Similar al MVC, pero con una separación más clara entre la lógica de presentación y la lógica de
negocio.
6.3. Front-Controller
Centraliza y gestiona el manejo de las solicitudes de entrada de una aplicación web, utilizando un
componente central llamado "Front Controller" como punto de entrada único.
6.4. Middleware
Intercepta solicitudes y respuestas HTTP, permitiendo ejecutar acciones antes y después
del procesamiento, facilitando la adición de funcionalidades en capas intermedias de una
aplicación.
6.5. Representación Gráfica
Para poder interpretar los patrones de diseño de manera gráfica se usan diagramas
UML.
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”}]})
5. 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})
5. 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)
5. 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: "nombre",
foreignField: "nombre_empresa",
as: "empleados de empresa"
}}]);
6. Ejercicios extras
- Crea una colección 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 XL
Node.js
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,
permitiendo 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?
Para utilizar o iniciar un proyecto en NodeJs primero crea una carpeta y en esta
ejecuta el comando:
npm init -y
"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
npm i express
5. Express.js
Métodos:
● Get: Obtener
● Post: Crear
● Put: Modificar/Actualizar (Todo un elemento)
● Patch: Modificar/Actualizar (Parcialmente un elemento)
● 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:
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).
class ProductsService {
constructor(){
///Variables goblales o metodos que deben inicializar al inicio
}
}
module.exports = ProductsService;
8. Iniciar un proyecto de NodeJs
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.
Paquete que sirve para poder manejar una lista de conexiones a nuestra API
instalación:
- npm i cors
13. FAKER
- 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
Módulo XLI
Pruebas unitarias con JEST
1. ¿Qué es un test?
Cómo developers tenemos que garantizar que el código escrito cumpla con ciertos
requisitos/expectativas. Esto lo hacemos por medio de una prueba (test).
JEST
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?
Documentación:
https://jestjs.io/docs/getting-started
Instalación:
npm install --save-dev jest
4. Utilización de JEST
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 XLII
Desarrollo en otras áreas
1. Desarrollo Mobile
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
1) C++
2) C#
3) Java
4) Javascript
5) Python
6) Unity
7) Unreal Engine
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.
CNC
8. Tecnologías utilizadas
1) CNC
2) C
3) C++
4) C#
5) Python
6) Ensamblador
7) Software CAM
Módulo XLIII
Machine Learning
1. ¿Qué es la inteligencia artificial?
La inteligencia artificial (IA) es la capacidad de una computadora o sistema para realizar
tareas que habitualmente requieren inteligencia humana.
Documentacion:
https://www.w3schools.com/python/python_ml_getting_started.asp
3. En resumen
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, lo cual veremos luego de conocer algunas librerías
necesarias.
4. Librerías
También es utilizado como base para otras librerías de cálculo científico en Python,
como SciPy y scikit-learn.
6. 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.
Esto nos ahorra tener que instalar tantas librerías y herramientas en nuestra PC,
además de que nos ahorra usar los recursos.
8. Promedio o Media (Mean)
Calcular promedio:
Para calcular el promedio en estos datos necesitamos sumar todos los datos y
dividirlos por la cantidad de datos
1167/13 = 89.769
7. Promedio o Media (Mean)
import numpy
speed = [99,86,87,88,111,86,103,87,94,78,77,85,86]
x = numpy.mean(speed)
print(x)
8. Mediana (Median)
La mediana es 87
8. Mediana (Median)
import numpy
speed = [99,86,87,88,111,86,103,87,94,78,77,85,86]
x = numpy.median(speed)
print(x)
9. La moda (Mode)
[99,86,87,88,111,86,103,87,94,78,77,85,86]
[99,86,87,88,111,86,103,87,94,78,77,85,86]
9. La moda (Mode)
speed = [99,86,87,88,111,86,103,87,94,78,77,85,86]
x = stats.mode(speed)
print(x)
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í.
10. Desviación estándar
Dado el siguiente array: [32, 111, 138, 28, 59, 77, 97]
def saludar(nombre):
print(f”Hola, {nombre}!”)
saludar(”Diego”)
def convertir(km):
metros = km * 1000
return metros
print(f”Total: {convertir(4.6)}”)
13. Machine learning VS Programación regular
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.
17. Capas de una red neuronal
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.
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.
20. Cosas que involucra el peso
Algunas de las cosas que involucran los pesos de las conexiones son:
Existen varias librerías populares para machine learning en Python, algunas de las
más comunes son:
- Tensorflow: https://www.tensorflow.org/learn
- Keras: https://keras.io/getting_started/
- scikit learn: https://scikit-learn.org/stable/user_guide.html
25. TensorFlow
https://colab.research.google.com/drive/1ehETBOVtCqe7G6HOvm84hfXba8Gd9IL
W?usp=sharing
Módulo XLIV
Big Data
1. Conceptos importantes
● Data Warehouse
● On premise Data System
● Cloud computing
Su principal objetivo es permitir a las organizaciones tomar decisiones basadas en la información contenida
en los datos históricos y actuales.
Representación Ilustrada
1. Conceptos importantes
On Premise Data System: Un sistema de datos on-premise, “sistema local” o “en sitio”, es la infraestructura
informática y de almacenamiento de datos que se encuentra físicamente dentro de las instalaciones de una
organización o empresa.
En otras palabras, todos los componentes del sistema, como servidores, almacenamiento, redes y otros
equipos, que se mantienen y gestionan internamente en la organización.
1. Conceptos importantes
Cloud Computing: El cloud computing o computación en la nube, es un modelo de entrega de servicios
informáticos a través de internet.
En lugar de tener que adquirir y mantener hardware y software localmente, las organizaciones pueden
acceder a recursos informáticos como servidores, almacenamiento, bases de datos, redes, software y más a
través de proveedores de servicios en la nube como por ejemplo AWS (Amazon Web Services) y más.
Representación Ilustrada
2. ¿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.
2. ¿Qué es big data?
También incluye
La Big data
La Big data incluye datos menos
siempre ha existido
datos de la banca, conocido como
pero no ha habido
casas de acciones, cadenas de
una manera de
email y post en suministro, Código
reunir y analizar
redes sociales de barra o torres
los grandes datos
de telefonía
3. Ciclo de vida de los datos
El ciclo de vida de los datos es un marco conceptual que describe las diversas etapas por las
que pasan los datos:
● Extracción o Recopilación
● Almacenamiento
● Procesamiento y Análisis
● Visualización
4. Las siete V’s del big data
Las 7 V's del big data son un marco que se utiliza para describir las características clave de los datos
masivos.
01
. Volumen: El tamaño de los datos (terabytes de datos de la banca).
02
. Velocidad: Cuán rápido los datos entran (El GPS y los sensores en autos envían datos cada segundo).
03
. Variedad: Diferentes fuentes y formatos de datos (post, fotos y estados en apps y redes sociales).
04
. Veracidad: La credibilidad de los datos (Los datos de redes sociales pueden ser inexactos o engañosos).
05
. Viabilidad: Dificultad de almacenar y analizar los datos (requerimientos de infraestructura, costos, etc.).
06
. Visualización: Presentación de los datos de manera comprensible (gráficos, mapas, etc.).
07
. Valor: Beneficios al aprovechar los datos (mejora la toma de decisiones, innovación, el serv. al cliente, etc.).
5. Herramientas empleadas
IBM Cognos, SAP Business Objects, MicroStrategy, ZoomData, Qlik, PowerBI, Tableau
Visualización
y Analítica
Hadoop MapReduce, HIVE, TEZ, Apache Drill, Apache Storm, Google BigQuery, Flink, Spark
Streaming, Kafka
Computación
Pivotal, Oracle EXADATA, TERADATA, GreenPlum, MAPR, NETEZZA, HortonWorks, Cloudera, Azure
Distribución y HDInsight,
Almacén de
Amazon EMR
datos
6. Desafíos del big data
Los Jupyter Notebooks es 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.
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/
10. Google Colab
Google Colab, también conocido como Colaboratory, es un servicio de Google Research que permite a cualquier
persona escribir y ejecutar código Python en el navegador. Es ideal para proyectos de aprendizaje automático, análisis
de datos y educación.
En términos técnicos, Colab es un servicio de notebooks de Jupyter alojados que no requiere instalación para usarlo y
brinda acceso sin costo a recursos computacionales, incluidas GPU.
● No requiere configuración: Puedes comenzar a usar Colab inmediatamente, sin necesidad de instalar ningún
software adicional.
● Acceso a GPUs sin costo adicional: Colab ofrece acceso a GPUs gratuitas para que puedas acelerar tus
tareas de aprendizaje automático.
● Permite compartir contenido fácilmente: Puedes compartir tus notebooks de Colab con otros usuarios, lo que
los hace ideales para la colaboración y la enseñanza.
Es una herramienta poderosa que puede ser utilizada por personas de todos los niveles de experiencia, Siendo una
excelente manera de comenzar a aprender sobre aprendizaje automático, análisis de datos o programación en Python.
Documentación: https://colab.research.google.com/
11. Estructuras de datos
Serie: Una serie es una estructura de datos unidimensional que puede contener
datos de un solo tipo (por ejemplo, números, cadenas, fechas, etc.). Es decir, una
forma de llamar a los arrays o listas.
Este es un algoritmo usado para modelar la relación entre dos variables o más.
La Y es variable dependiente
La X es variable independiente
13. 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.
14. Gráfico de regresión lineal
15. 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)