diff --git a/.gitattributes b/.gitattributes index 6e96e9b25cad73cd28172b0c7e712d17bfe33905..cc5613b0351ca7271dbfffcc3e0f3466cf8447c1 100644 --- a/.gitattributes +++ b/.gitattributes @@ -91,3 +91,17 @@ subir/fixed/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]Inge subir/fixed/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]Ingeniería[[:space:]]de[[:space:]]Software/01-Computación[[:space:]]Básica/06-Cómo[[:space:]]funciona[[:space:]]internet.mp4 filter=lfs diff=lfs merge=lfs -text subir/fixed/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]Ingeniería[[:space:]]de[[:space:]]Software/01-Computación[[:space:]]Básica/07-Cómo[[:space:]]las[[:space:]]computadoras[[:space:]]guardan[[:space:]]datos.mp4 filter=lfs diff=lfs merge=lfs -text subir/fixed/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]Ingeniería[[:space:]]de[[:space:]]Software/01-Computación[[:space:]]Básica/08-Cómo[[:space:]]se[[:space:]]organizan[[:space:]]los[[:space:]]archivos.mp4 filter=lfs diff=lfs merge=lfs -text +subir/fixed/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]Ingeniería[[:space:]]de[[:space:]]Software/01-Computación[[:space:]]Básica/09-Teléfonos[[:space:]]y[[:space:]]sus[[:space:]]System[[:space:]]on[[:space:]]a[[:space:]]Chip[[:space:]]o[[:space:]]SOC.mp4 filter=lfs diff=lfs merge=lfs -text +subir/fixed/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]Ingeniería[[:space:]]de[[:space:]]Software/01-Computación[[:space:]]Básica/10-GPUs[[:space:]]Procesadores[[:space:]]gráficos[[:space:]]y[[:space:]]de[[:space:]]AI.mp4 filter=lfs diff=lfs merge=lfs -text +subir/fixed/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]Ingeniería[[:space:]]de[[:space:]]Software/01-Computación[[:space:]]Básica/11-Qué[[:space:]]es[[:space:]]un[[:space:]]algoritmo[[:space:]]y[[:space:]]qué[[:space:]]es[[:space:]]un[[:space:]]lenguaje[[:space:]]de[[:space:]]programación.mp4 filter=lfs diff=lfs merge=lfs -text +subir/fixed/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]Ingeniería[[:space:]]de[[:space:]]Software/02-Redes[[:space:]]e[[:space:]]Internet/01-Direcciones[[:space:]]IP[[:space:]]y[[:space:]]el[[:space:]]protocolo[[:space:]]de[[:space:]]Internet.mp4 filter=lfs diff=lfs merge=lfs -text +subir/fixed/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]Ingeniería[[:space:]]de[[:space:]]Software/02-Redes[[:space:]]e[[:space:]]Internet/02-Nombres[[:space:]]de[[:space:]]dominio[[:space:]]DNS[[:space:]]y[[:space:]]cómo[[:space:]]obtener[[:space:]]un[[:space:]]com.mp4 filter=lfs diff=lfs merge=lfs -text +subir/fixed/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]Ingeniería[[:space:]]de[[:space:]]Software/02-Redes[[:space:]]e[[:space:]]Internet/03-Modelo[[:space:]]ClienteServidor[[:space:]]Cómo[[:space:]]funciona[[:space:]]un[[:space:]]sitio[[:space:]]web.mp4 filter=lfs diff=lfs merge=lfs -text +subir/fixed/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]Ingeniería[[:space:]]de[[:space:]]Software/03-Sistemas[[:space:]]Operativos[[:space:]]y[[:space:]]Almacenamiento/01-Diferencias[[:space:]]entre[[:space:]]Windows[[:space:]]Linux[[:space:]]y[[:space:]]MacOS.mp4 filter=lfs diff=lfs merge=lfs -text +subir/fixed/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]Ingeniería[[:space:]]de[[:space:]]Software/03-Sistemas[[:space:]]Operativos[[:space:]]y[[:space:]]Almacenamiento/02-Permisos[[:space:]]niveles[[:space:]]de[[:space:]]procesos[[:space:]]y[[:space:]]privilegios[[:space:]]de[[:space:]]ejecución.mp4 filter=lfs diff=lfs merge=lfs -text +subir/fixed/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]Ingeniería[[:space:]]de[[:space:]]Software/03-Sistemas[[:space:]]Operativos[[:space:]]y[[:space:]]Almacenamiento/03-Archivos[[:space:]]Metadatos[[:space:]]cabeceras[[:space:]]y[[:space:]]extensiones.mp4 filter=lfs diff=lfs merge=lfs -text +subir/fixed/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]Ingeniería[[:space:]]de[[:space:]]Software/04-Archivos[[:space:]]y[[:space:]]estructuras[[:space:]]de[[:space:]]datos/01-Qué[[:space:]]son[[:space:]]las[[:space:]]bases[[:space:]]de[[:space:]]datos.mp4 filter=lfs diff=lfs merge=lfs -text +subir/fixed/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]Ingeniería[[:space:]]de[[:space:]]Software/04-Archivos[[:space:]]y[[:space:]]estructuras[[:space:]]de[[:space:]]datos/02-Cómo[[:space:]]funciona[[:space:]]el[[:space:]]formato[[:space:]]JPG.mp4 filter=lfs diff=lfs merge=lfs -text +subir/fixed/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]Ingeniería[[:space:]]de[[:space:]]Software/04-Archivos[[:space:]]y[[:space:]]estructuras[[:space:]]de[[:space:]]datos/03-Videos[[:space:]]contenedores[[:space:]]codecs[[:space:]]y[[:space:]]protocolos.mp4 filter=lfs diff=lfs merge=lfs -text +subir/fixed/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]Ingeniería[[:space:]]de[[:space:]]Software/04-Archivos[[:space:]]y[[:space:]]estructuras[[:space:]]de[[:space:]]datos/04-Cómo[[:space:]]Funciona[[:space:]]un[[:space:]]zip.mp4 filter=lfs diff=lfs merge=lfs -text +subir/fixed/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]Ingeniería[[:space:]]de[[:space:]]Software/05-Introducción[[:space:]]a[[:space:]]Blockchain[[:space:]]e[[:space:]]Inteligencia[[:space:]]Artificial/01-Arquitectura[[:space:]]y[[:space:]]funcionamiento[[:space:]]interno[[:space:]]de[[:space:]]Blockchain.mp4 filter=lfs diff=lfs merge=lfs -text diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/01-Computaci\303\263n B\303\241sica/08-Resumen.html" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/01-Computaci\303\263n B\303\241sica/08-Resumen.html" new file mode 100644 index 0000000000000000000000000000000000000000..426b6e3d531945898fadcf674971df05fe2d032b --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/01-Computaci\303\263n B\303\241sica/08-Resumen.html" @@ -0,0 +1,127 @@ + + + + + + + Cómo se organizan los archivos + + + +
+
+

Resumen

La organización del sistema de archivos es un concepto fundamental en la tecnología que muchas personas, especialmente aquellas acostumbradas a dispositivos móviles, suelen encontrar confuso. Aunque en teléfonos inteligentes solemos usar aplicaciones específicas sin notar dicha organización, los computadores manejan archivos organizados en estructuras de carpetas claras y visibles. Entender esto es crucial para el desarrollo de software y alfabetización tecnológica.

+

¿Qué es realmente un sistema de archivos?

+

Un sistema de archivos es la manera que tiene un sistema operativo de organizar, almacenar y acceder a los archivos. Esta estructura generalmente se representa en forma de árbol con una carpeta principal llamada raíz, que varía según el sistema operativo:

+
    +
  • Windows: La raíz suele ser el disco duro llamado C:; las carpetas están organizadas desde esta unidad con nombres como C:\Usuarios\NombreDeUsuario.
  • +
  • Unix, Linux, macOS, Android e iOS: La raíz se representa con /. A partir de allí, encontramos carpetas como /home/nombredeusuario.
  • +
+

Es importante destacar tres tipos principales de carpetas:

+
    +
  • Carpeta de usuarios: contiene carpetas personales, accesibles solo a su usuario específico.
  • +
  • Carpeta del sistema operativo: almacena configuración global, controladores (drivers) y elementos esenciales para funcionar.
  • +
  • Carpeta de aplicaciones: organiza los archivos relacionados con las aplicaciones instaladas.
  • +
+

¿Cuáles son las extensiones de archivos más comunes?

+

Las extensiones nos indican con qué tipo de archivo estamos trabajando y qué aplicación debería abrirlo. Algunos ejemplos comunes incluyen:

+
    +
  • Documentos Word: .doc o .docx
  • +
  • Archivos de Excel: .xls o .xlsx
  • +
  • Páginas web: .html o .htm
  • +
  • Imágenes: .jpg (fotografías) o .png (imágenes de alta fidelidad o ilustraciones)
  • +
+

Estas extensiones, aunque a veces se ocultan en sistemas modernos por facilidad, siguen siendo esenciales para entender cómo funcionan los archivos internamente.

+

¿Qué significa una ruta de archivo y cómo se usa en internet?

+

Una ruta es la dirección exacta donde se puede encontrar un archivo dentro del sistema. Por ejemplo, un archivo en Unix podría tener esta ruta: /home/freddy/documentos/foto.jpg, mientras que en Windows sería algo como C:\Usuarios\Freddy\Documentos\foto.jpg.

+

Curiosamente, las páginas web siguen este mismo esquema. Por ejemplo, la ruta https://platzi.com/imagenes/fundamentos/protocolos.png indica que existe un servidor llamado Platzi (platzi.com), una carpeta llamada imágenes, otra llamada fundamentos, y finalmente el archivo protocolos.png.

+

Las URL también incluyen protocolos que indican cómo se transfieren datos: +- HTTP: Protocolo de transferencia de hipertexto. +- HTTPS: Versión segura de HTTP, que usa cifrado. +- WSS Web Sockets: Utilizado para aplicaciones en tiempo real, como chats.

+

¿Por qué es importante ver claramente las extensiones y rutas?

+

Sistemas operativos modernos como Windows o macOS tienden a ocultar extensiones y rutas para simplificar la experiencia, pero al hacerlo limitan el aprendizaje sobre el funcionamiento interno. Activar la visualización de estas extensiones y rutas es clave para quienes buscan profundizar en desarrollo de software y entender a fondo cómo interactúan aplicaciones y archivos.

+

Además, aunque almacenar en la nube facilita acceder a archivos desde cualquier dispositivo, depender únicamente de dicho sistema puede limitar el conocimiento respecto a la autonomía de almacenamiento local.

+

Te invito a experimentar y activar estas visualizaciones en tu propio sistema operativo. ¿Ya practicas el uso consciente de las rutas y extensiones de archivos en tu día a día? Comparte tus experiencias y dudas con nuestra comunidad para profundizar en este conocimiento esencial.

+
+
+ + \ No newline at end of file diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/01-Computaci\303\263n B\303\241sica/09-Resumen.html" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/01-Computaci\303\263n B\303\241sica/09-Resumen.html" new file mode 100644 index 0000000000000000000000000000000000000000..6e2b6effe6b4b956c3a001559034549675938b6a --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/01-Computaci\303\263n B\303\241sica/09-Resumen.html" @@ -0,0 +1,120 @@ + + + + + + + Teléfonos y sus "System on a Chip" o SOC + + + +
+
+

Resumen

La evolución tecnológica ha cambiado radicalmente la manera en que utilizamos nuestros dispositivos electrónicos día con día. Entre estas transformaciones, destacan especialmente los System on a Chip (SoC), una innovación esencial que permite tener varios componentes electrónicos clave integrados en un solo chip. A lo largo de los años, esta evolución logró reducir considerablemente el tamaño y consumo energético de teléfonos y computadoras, mejorando significativamente su eficiencia.

+

¿Qué impulsó la creación de los System on a Chip?

+

Al comienzo, la electrónica funcionaba con grandes tubos de vacío y posteriormente con múltiples chips separados, resultando en equipos voluminosos y alto gasto energético. La demanda de dispositivos más pequeños, portátiles y eficientes llevó al desarrollo del concepto SoC. El objetivo principal fue integrar diversas funcionalidades, como CPU, GPU, memoria RAM y hasta dispositivos periféricos (Wi-Fi, módems) en un mismo chip, reduciendo así tanto el espacio físico utilizado como el consumo energético.

+

¿Por qué es importante reducir el consumo energético?

+

Existen dos razones fundamentales:

+
    +
  • Mayor duración de batería: Los usuarios esperan dispositivos que duren al menos todo un día funcionando intensivamente sin preocuparse por cargar la batería constantemente.
  • +
  • Prevención de sobrecalentamiento: Evita riesgos de explosión por baterías excesivamente calientes, situación crítica experimentada previamente con algunos modelos de teléfonos.
  • +
+

¿Cómo funciona en realidad un System on a Chip?

+

Es importante aclarar que un SoC no significa que el mismo grupo de transistores realice múltiples funciones simultáneamente. En realidad, los fabricantes colocan diferentes grupos de transistores muy cerca unos de otros en una oblea de silicona, asignando cada grupo a una función específica (CPU, GPU, módem, entre otros). Lo esencial aquí es la cercanía física entre estos componentes, que facilita la rapidez en la comunicación y disminuye el uso de energía.

+

¿Cuál es la diferencia entre un SoC y una computadora tradicional?

+

Mientras que en las computadoras convencionales la GPU tiene su memoria dedicada (VRAM), en un SoC se utiliza una "memoria unificada"; tanto CPU como GPU y otros componentes pueden acceder a una misma memoria RAM común. Esta característica, especialmente destacable en los chips creados por Apple, permite manejo eficiente de recursos, adaptándose dinámicamente según necesidades particulares en tiempo real.

+

¿Qué ventajas ofrecen para los teléfonos inteligentes y otros dispositivos?

+

El diseño integrado permite funciones estándar altamente eficientes:

+
    +
  • CPU y GPU cercanas y colaborativas: Permiten velocidad óptima para aplicaciones gráficas y de procesamiento.
  • +
  • Integración de módems y conexiones: Facilitan interacciones rápidas y eficientes con redes celulares y Wi-Fi.
  • +
  • Incorporación de nuevas tecnologías como Inteligencia Artificial (IA):
  • +
  • Unidades de procesamiento neuronal (NPU).
  • +
  • Procesamiento paralelo dentro del mismo chip para aplicaciones avanzadas como reconocimiento de voz, filtros de imagen o dictado inteligente.
  • +
+

La integración también estandarizó componentes periféricos (cámaras, micrófonos, sensores ambientales), facilitando actualizaciones de hardware y software por fabricantes específicos sin necesidad de múltiples drivers distintos.

+

¿Qué papel juega la inteligencia artificial en System on a Chip?

+

El aumento de la inteligencia artificial reforzó aún más la necesidad y eficiencia de los SoC, pues permiten compartir recursos como memoria y capacidad de cálculo para tareas específicas de aprendizaje automático y procesamiento neuronal. Empresas como Huawei, Google y Apple lideran este campo, ofreciendo innovaciones notables como introducir módems 5G o unidades específicas para IA (TPU/NPU).

+

En síntesis, los System on a Chip son una evolución fundamental para una electrónica más pequeña, rápida y eficiente, indispensable en teléfonos inteligentes, computadoras portátiles modernas y dispositivos portátiles como relojes inteligentes y anillos de salud.

+
+
+ + \ No newline at end of file diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/01-Computaci\303\263n B\303\241sica/09-Tel\303\251fonos y sus System on a Chip o SOC.mp4" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/01-Computaci\303\263n B\303\241sica/09-Tel\303\251fonos y sus System on a Chip o SOC.mp4" new file mode 100644 index 0000000000000000000000000000000000000000..e5ad12fb433bc788cc15acd476c73956cf9869a2 --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/01-Computaci\303\263n B\303\241sica/09-Tel\303\251fonos y sus System on a Chip o SOC.mp4" @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f7f5301228570c0684a7c28430b4eb7c6b88cda8b10c3f219498f2a6652ca76 +size 265860513 diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/01-Computaci\303\263n B\303\241sica/09-Tel\303\251fonos y sus System on a Chip o SOC.vtt" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/01-Computaci\303\263n B\303\241sica/09-Tel\303\251fonos y sus System on a Chip o SOC.vtt" new file mode 100644 index 0000000000000000000000000000000000000000..40ce8f9d1e890774928db22e865d057f9167a8da --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/01-Computaci\303\263n B\303\241sica/09-Tel\303\251fonos y sus System on a Chip o SOC.vtt" @@ -0,0 +1,725 @@ +WEBVTT + +00:00:00.000 --> 00:00:03.800 +Los circuitos integrados, los chips, la forma en la que funciona la electrónica moderna, + +00:00:03.800 --> 00:00:09.120 +empezaron como unos tubos de vacío que ocupaban inmensas cantidades de espacio + +00:00:09.120 --> 00:00:14.400 +y que así fue como empezaron las primeras computadoras, los televisores, muchísimas otras mecánicas + +00:00:14.400 --> 00:00:17.000 +de la forma en la que se construía la electrónica moderna. + +00:00:17.000 --> 00:00:21.320 +Pero lentamente nuestros dispositivos se fueron haciendo más pequeños y más pequeños y más pequeños + +00:00:21.320 --> 00:00:24.840 +porque empezamos a empacar transistores en formas más cortas + +00:00:24.840 --> 00:00:28.840 +y porque el consumidor quería dispositivos más pequeños que usaran menos electricidad + +00:00:28.840 --> 00:00:30.400 +y que fueran más portátiles. + +00:00:30.400 --> 00:00:35.480 +La electricidad funcionaba inicialmente con baterías AA, AAA o esas baterías grandotas de 9 voltios + +00:00:35.480 --> 00:00:38.840 +con las que podíamos usar cosas como una grabadora de cassette, + +00:00:38.840 --> 00:00:42.760 +una de las que llamaban boombox, y de esa manera tenemos música o un Walkman + +00:00:42.760 --> 00:00:48.360 +o tantos otros dispositivos que quemaban y quemaban esas baterías a muy alta velocidad + +00:00:48.360 --> 00:00:53.680 +y eran muy costosas, así que había un incentivo natural de los fabricantes de reducir las baterías. + +00:00:53.680 --> 00:00:58.040 +Y luego llegaron los smartphones y antes de eso los teléfonos móviles, entre muchas otras cosas. + +00:00:58.040 --> 00:01:02.880 +Esa necesidad de reducir el gasto de electricidad y reducir el espacio + +00:01:02.880 --> 00:01:07.240 +empezó a hacer que los chips se volvieran más y más y más especializados. + +00:01:07.240 --> 00:01:10.080 +Luego la computación hizo que nuestras computadoras + +00:01:10.080 --> 00:01:12.640 +cupieran en una caja gigante y luego en un laptop, + +00:01:12.640 --> 00:01:15.160 +pero con el pasar del tiempo nos pusimos a pensar + +00:01:15.160 --> 00:01:16.760 +¿Por qué tenemos chips para todo? + +00:01:16.760 --> 00:01:21.560 +¿Por qué hay un chip que es la CPU y otra tarjeta distinta es la tarjeta gráfica + +00:01:21.560 --> 00:01:23.760 +y otra tarjeta distinta es la tarjeta de sonido? + +00:01:23.800 --> 00:01:28.160 +¿Por qué a medida que especializamos todo, no pegamos todo en un solo chip? + +00:01:28.160 --> 00:01:30.640 +Estos son conocidos como System on a Chip. + +00:01:30.640 --> 00:01:34.440 +Los dos problemas más grandes son de electricidad y de espacio. + +00:01:34.440 --> 00:01:39.360 +Entre más chips hay, más gastan batería porque más largo tienen que viajar los electrones + +00:01:39.360 --> 00:01:41.880 +dentro de la tarjeta en cada uno de los ciclos + +00:01:41.880 --> 00:01:45.360 +que nos permiten jugar un videojuego en el teléfono o atender una llamada. + +00:01:45.360 --> 00:01:48.520 +El segundo problema es que los teléfonos eran un ladrillo gigante + +00:01:48.520 --> 00:01:51.840 +y queríamos que fueran cada vez más pequeños, y no solo eran teléfonos, + +00:01:51.880 --> 00:01:56.720 +eran cámaras digitales, eran iPods, Walkmans, televisores. + +00:01:56.720 --> 00:01:59.240 +Ahora que todo vive en un teléfono, pues lo vemos más claro, + +00:01:59.240 --> 00:02:01.760 +pero antes eran todo tipo de dispositivos. + +00:02:01.760 --> 00:02:04.640 +Así que empezamos a pensar qué podemos integrar. + +00:02:04.640 --> 00:02:06.520 +En el caso de los teléfonos, por ejemplo, + +00:02:06.520 --> 00:02:09.640 +un teléfono es básicamente una pantalla gigante, + +00:02:09.640 --> 00:02:15.160 +así que necesita un procesador gráfico que sea muy eficiente y que no se sienta lento, + +00:02:15.160 --> 00:02:18.160 +porque si un teléfono se siente lento, no se puede usar. + +00:02:18.160 --> 00:02:21.800 +Los seres humanos estamos conscientes y aceptamos que una computadora se pone lenta, + +00:02:21.800 --> 00:02:24.040 +pero no aceptamos que un teléfono se ponga lento. + +00:02:24.040 --> 00:02:26.720 +Y por supuesto necesitamos el procesamiento normal de una computadora + +00:02:26.720 --> 00:02:29.920 +para navegar en internet, mandar correos, hacer juegos, etc. + +00:02:29.920 --> 00:02:33.240 +Así que necesitamos una CPU y una GPU en el mismo lugar. + +00:02:33.240 --> 00:02:37.640 +Combinar en un solo chip la CPU y la GPU fue el primer paso en System on a Chip. + +00:02:37.640 --> 00:02:42.400 +Quiero aclarar que no es como que el mismo chip sea CPU y GPU al mismo tiempo + +00:02:42.400 --> 00:02:44.040 +con los mismos transistores. + +00:02:44.040 --> 00:02:50.000 +Realmente es que en la oblea de silicio, en el wafer, en donde hacen el chip, + +00:02:50.000 --> 00:02:54.280 +ahí dentro, colocan en un ladito los transistores que funcionan como CPU + +00:02:54.280 --> 00:02:56.800 +y en otro ladito, muy pegadito, muy cerca, + +00:02:56.800 --> 00:03:00.040 +en el mismo mecanismo de circuito integrado, rodeado de baquelita, + +00:03:00.040 --> 00:03:01.160 +los chips de la GPU. + +00:03:01.160 --> 00:03:04.360 +Y así empezaron a pensar en otros chips, porque esto es un computador completo, ¿no? + +00:03:04.360 --> 00:03:07.800 +Cuando uno armó una computadora, uno tenía estos tabletas de memoria + +00:03:07.800 --> 00:03:11.200 +que hemos visto antes, la memoria RAM, o estos discos duros externos. + +00:03:11.200 --> 00:03:13.800 +Pues la memoria RAM, ¿por qué no la pegamos ahí también? + +00:03:13.800 --> 00:03:15.840 +¿Y por qué no pegamos el modem? + +00:03:15.840 --> 00:03:19.320 +Porque cuando uno hace una llamada, los teléfonos internamente tienen un chip + +00:03:19.320 --> 00:03:23.360 +que es un modem, que es el que tiene que hablar con la central telefónica + +00:03:23.360 --> 00:03:24.640 +y procesar la llamada. + +00:03:24.640 --> 00:03:28.240 +El modem se conecta a las antenas 3G y 4G y los chips también necesitan + +00:03:28.240 --> 00:03:29.360 +conectarse a Wi-Fi. + +00:03:29.360 --> 00:03:33.440 +Entonces, el Wi-Fi es otro módulo que antes era un circuito aparte en un chip + +00:03:33.440 --> 00:03:34.320 +aparte. + +00:03:34.320 --> 00:03:37.760 +Como los teléfonos se estandarizaron y todos los teléfonos tienen que procesar + +00:03:37.760 --> 00:03:41.440 +video a través de la cámara, capturar audio del micrófono, + +00:03:41.440 --> 00:03:46.280 +generar imágenes, todas esas funciones estándar que antes eran periféricos + +00:03:46.280 --> 00:03:48.880 +adicionales, fueron creándose en un solo chip. + +00:03:48.880 --> 00:03:52.760 +Porque la otra ventaja es que estos dispositivos pues mantenían el mismo + +00:03:52.760 --> 00:03:54.200 +hardware constantemente. + +00:03:54.200 --> 00:03:58.760 +Si tienes una computadora, te lo puedes conectar mil marcas de webcam, + +00:03:58.760 --> 00:04:03.160 +pero en tu teléfono, tu marca como Samsung o Apple o Google, + +00:04:03.160 --> 00:04:06.480 +tú sabes exactamente qué lente y qué cámara le estás poniendo a tus + +00:04:06.480 --> 00:04:10.000 +teléfonos, exactamente qué tipo de micrófono y qué tipo de parlante. + +00:04:10.000 --> 00:04:14.360 +Esa estandarización también ayudó a que los chips sean mucho más sencillos. + +00:04:14.360 --> 00:04:19.520 +Huawei, por cierto, es la primera marca en integrar un módem de tecnología 5G + +00:04:19.520 --> 00:04:20.360 +en un chip. + +00:04:20.360 --> 00:04:24.520 +Aquí en mis notas veo que fue el chip Huawei Kirin 990. + +00:04:24.520 --> 00:04:26.200 +La innovación viene de todas partes. + +00:04:26.200 --> 00:04:28.680 +Cuando compras tu teléfono y lo enciendes, + +00:04:28.680 --> 00:04:33.680 +tu dedo prime el botón de encendido, lo cual conecta dos contactos que hacen un + +00:04:33.680 --> 00:04:37.640 +paso de electricidad de la batería al circuito que llega a una señal en el + +00:04:37.640 --> 00:04:38.760 +System on a Chip. + +00:04:38.760 --> 00:04:41.640 +El primer circuito de un System on a Chip es la BIOS. + +00:04:41.640 --> 00:04:44.160 +Es ese sistema de arranque que, por ejemplo, + +00:04:44.160 --> 00:04:48.400 +en el caso de iPod y de los dispositivos de Apple como el iPhone, + +00:04:48.400 --> 00:04:51.560 +el iPad, etcétera, se llama iBoot. + +00:04:51.560 --> 00:04:54.160 +O lo mismo que habría en la BIOS de un computador normal, + +00:04:54.160 --> 00:04:55.800 +solamente que aquí está en el chip. + +00:04:55.800 --> 00:04:58.480 +Y ahí dentro del chip empieza a arrancar todo. + +00:04:58.480 --> 00:05:00.520 +Ese pecito de chip prende la CPU. + +00:05:00.520 --> 00:05:03.880 +La CPU va a la memoria flash, que es la memoria, + +00:05:03.880 --> 00:05:06.080 +llamémosla permanente o el equivalente al disco duro. + +00:05:06.080 --> 00:05:10.680 +Eso sí está aparte porque es un circuito más grande y de una química diferente. + +00:05:10.680 --> 00:05:14.840 +Y ahí van y buscan el código del sistema operativo y el resto es igual que una + +00:05:14.840 --> 00:05:15.720 +computadora. + +00:05:15.720 --> 00:05:18.040 +Pero en vez de estar viajando entre diferentes chips, + +00:05:18.040 --> 00:05:19.800 +todo está viajando en el mismo chip. + +00:05:19.800 --> 00:05:21.720 +La CPU y la GPU están muy cerca. + +00:05:21.720 --> 00:05:26.440 +Y la CPU y la GPU lo que hacen es que la CPU arranca los computadores en cuanto a + +00:05:26.440 --> 00:05:29.840 +su sistema operativo y la GPU arranca los pixeles de la pantalla, + +00:05:29.840 --> 00:05:33.320 +trabajando en conjunto y compartiendo memoria. + +00:05:33.320 --> 00:05:36.000 +Eso es una de las cosas únicas de un System on a Chip. + +00:05:36.000 --> 00:05:40.640 +En una computadora, la GPU tiene su propia memoria y es la memoria que usa para + +00:05:40.640 --> 00:05:43.840 +representar cosas en pantalla o hacer cálculos paralelos como cálculos de + +00:05:43.840 --> 00:05:45.400 +criptomonedas o AI. + +00:05:45.400 --> 00:05:48.840 +Y la CPU usa la memoria RAM para ejecutar los computadores. + +00:05:48.840 --> 00:05:52.560 +En un System on a Chip, en particular en la arquitectura que creó Apple, + +00:05:52.560 --> 00:05:56.880 +se usa una memoria unificada que lo comparte en todas las necesidades del + +00:05:56.880 --> 00:05:57.760 +sistema operativo. + +00:05:57.760 --> 00:06:01.280 +Ahí carga el kernel y el kernel son los drivers que prenden los periféricos. + +00:06:01.280 --> 00:06:05.080 +Pero el periférico, que típicamente sería un circuito con sus mecanismos + +00:06:05.080 --> 00:06:08.720 +químicos y mecánicos, como la membrana del micrófono, + +00:06:08.720 --> 00:06:11.720 +como los sensores digitales de luz que tiene una cámara, + +00:06:11.720 --> 00:06:13.720 +son simplemente la parte de hardware. + +00:06:13.720 --> 00:06:16.600 +Y el circuito, toda realmente la operación, + +00:06:16.600 --> 00:06:18.720 +está metida en ese System on a Chip. + +00:06:18.720 --> 00:06:21.600 +Hace todo más sencillo, mucho más eficiente, + +00:06:21.600 --> 00:06:24.560 +con menos generación de calor, con menos gasto de batería. + +00:06:24.560 --> 00:06:29.600 +Por eso un teléfono que tiene 8 GB de RAM y una CPU muy pequeña hace muchas más + +00:06:29.600 --> 00:06:33.800 +cosas que una computadora con una CPU más grande y los mismos 8 GB de RAM. + +00:06:33.800 --> 00:06:37.560 +Un teléfono, además, es básicamente un experimento de física. + +00:06:37.560 --> 00:06:40.560 +Por dentro de tu teléfono hay un barómetro que detecta la presión + +00:06:40.560 --> 00:06:41.440 +ambiental. + +00:06:41.440 --> 00:06:42.720 +Hay un termómetro. + +00:06:42.720 --> 00:06:45.800 +A veces te habrá salido una alerta que tu teléfono está muy caliente y de + +00:06:45.800 --> 00:06:48.440 +pronto se apaga porque está detectando la temperatura. + +00:06:48.440 --> 00:06:52.600 +Todos esos son mecanismos físicos que usando electrónica, + +00:06:52.600 --> 00:06:58.640 +mecánica o química hacen que llegue una señal digital al procesador. + +00:06:58.640 --> 00:07:00.880 +Pero en vez de tener chips individuales, + +00:07:00.880 --> 00:07:04.600 +le delegan el procesamiento de chips a ese System on a Chip que tiene los + +00:07:04.600 --> 00:07:06.880 +transistores necesarios para que funcione. + +00:07:06.880 --> 00:07:11.160 +Y como son tan similares, entonces muchas de las marcas no tienen que + +00:07:11.160 --> 00:07:14.160 +programar sus teléfonos para soportar un montón de drivers, + +00:07:14.160 --> 00:07:17.440 +como si le toca hacer a Microsoft con Windows en una computadora, + +00:07:17.440 --> 00:07:20.560 +o a Apple con Mac, o a los sistemas operativos Linux. + +00:07:20.560 --> 00:07:23.280 +Todo eso apoya a la eficiencia de estos sistemas. + +00:07:23.280 --> 00:07:28.400 +Un dato curioso, la cámara de los teléfonos modernos han notado que se + +00:07:28.400 --> 00:07:31.680 +estabiliza a pesar de que uno está a veces temblándole las manos al tomar la + +00:07:31.680 --> 00:07:34.600 +foto, hay una estabilización que funciona con software, + +00:07:34.600 --> 00:07:39.400 +pero hay ciertas cámaras de los teléfonos más costosos donde el lente + +00:07:39.400 --> 00:07:42.200 +está flotando en un tipo de aceite, + +00:07:42.200 --> 00:07:46.160 +que hace que cuando ustedes estén temblando el lente se mantenga fijo. + +00:07:46.160 --> 00:07:50.920 +En otros casos está flotando con electroimanes que lo mantienen fijo o + +00:07:50.920 --> 00:07:52.480 +con pequeños sistemas de resortes. + +00:07:52.480 --> 00:07:54.520 +Es fascinante y súper chiquito. + +00:07:54.520 --> 00:07:59.320 +¿Has notado que a los teléfonos casi siempre les dura 24 horas la batería a + +00:07:59.320 --> 00:08:01.720 +pesar de que la tecnología crece y crece y crece? + +00:08:01.720 --> 00:08:02.320 +¿Por qué será? + +00:08:02.320 --> 00:08:04.160 +Están mejorando las tecnologías de las baterías, + +00:08:04.160 --> 00:08:08.760 +pero las baterías están limitadas por los límites químicos de lo que hemos + +00:08:08.760 --> 00:08:13.120 +descubierto que es la mayor cantidad de densidad de electricidad que podemos + +00:08:13.120 --> 00:08:15.240 +meter en la batería de un teléfono moderno. + +00:08:15.240 --> 00:08:17.640 +Lo que realmente está pasando son dos mecanismos. + +00:08:17.640 --> 00:08:22.040 +Uno es que el mercado, nosotros que compramos teléfonos, + +00:08:22.040 --> 00:08:26.000 +aceptamos teléfonos que duren un día, pero no aceptamos teléfonos que duren 6 + +00:08:26.000 --> 00:08:30.240 +horas y no recompensamos tanto a nivel financiero los teléfonos que duran dos + +00:08:30.240 --> 00:08:31.760 +días. Ese mercado es más pequeño. + +00:08:31.760 --> 00:08:32.360 +Existe. + +00:08:32.360 --> 00:08:37.000 +Son esos teléfonos grandotototes como el iPhone Pro o como los Samsung Galaxy + +00:08:37.000 --> 00:08:38.720 +Node o Ultra, etc. + +00:08:38.720 --> 00:08:41.440 +Es un mercado que existe, pero no es tan grande. + +00:08:41.440 --> 00:08:45.800 +Lo otro es que los fabricantes de chips son muy conscientes de que cada + +00:08:45.800 --> 00:08:50.200 +generación de chip nuevo tiene que gastar menos electricidad y a veces tienen + +00:08:50.200 --> 00:08:51.800 +saltos espectaculares. + +00:08:51.800 --> 00:08:57.560 +Por eso los MacBook Pros, desde la generación de los chips Apple M, M1, M2, + +00:08:57.560 --> 00:09:03.640 +M3 y M4, han ido aumentando de una manera fuerte la duración de la batería de los + +00:09:03.640 --> 00:09:07.200 +laptops y ahora es normal que un laptop tenga batería de 12 horas. + +00:09:07.200 --> 00:09:10.960 +Los teléfonos, lo que pasa es que siguen exigiéndose cada vez más porque las apps + +00:09:10.960 --> 00:09:14.640 +son cada vez más complejas y sofisticadas, pero esa es parte de la razón por la que + +00:09:14.640 --> 00:09:16.600 +la batería tiende a durar esto. + +00:09:16.600 --> 00:09:21.800 +Súmenle que hay un dato más y es que el uso intensivo de tu teléfono lo calienta + +00:09:21.800 --> 00:09:25.280 +y el calor, al estar tan cerca de la batería, puede causar un efecto de + +00:09:25.280 --> 00:09:26.080 +explosión. + +00:09:26.080 --> 00:09:29.280 +Esto le pasó a una marca de Galaxy Nodes, que básicamente solvían granadas en el + +00:09:29.280 --> 00:09:30.120 +bolsillo. + +00:09:30.120 --> 00:09:33.840 +Así que los fabricantes de teléfonos tienen que ser muy cuidadosos de no + +00:09:33.840 --> 00:09:37.680 +pasarse de cierta cantidad de flujo eléctrico para que no se caliente el + +00:09:37.680 --> 00:09:38.920 +teléfono y no explote. + +00:09:38.920 --> 00:09:41.560 +La realidad es que en el día de hoy esto casi no es un problema. + +00:09:41.560 --> 00:09:44.360 +¿Recuerdan cuando hablamos de la arquitectura de las CPUs? + +00:09:44.360 --> 00:09:47.240 +X86, RISC, ARM. + +00:09:47.240 --> 00:09:52.680 +ARM domina la arquitectura de los chips de los teléfonos y de los system on a + +00:09:52.680 --> 00:09:53.280 +chip. + +00:09:53.280 --> 00:09:57.440 +ARM, una empresa inglesa adquirida por una empresa japonesa, Softbank, y en la + +00:09:57.440 --> 00:10:00.240 +cual ese diseño es en el que están basados los chips de Apple. + +00:10:00.240 --> 00:10:03.680 +La industria de tecnología está mudando casi todo a un system on a chip debido a + +00:10:03.680 --> 00:10:05.080 +que son más eficientes. + +00:10:05.080 --> 00:10:09.160 +Por ejemplo, acá adentro en un teléfono inteligente o en un smartwatch va a haber + +00:10:09.160 --> 00:10:10.340 +un system on a chip. + +00:10:10.340 --> 00:10:14.560 +En esos anillos que son sensores de salud hay un system on a chip. + +00:10:14.560 --> 00:10:18.200 +En tu automóvil, en el sistema de entretenimiento hay un system on a chip. + +00:10:18.200 --> 00:10:21.600 +Y la arquitectura de estos chips en ocasiones agrega cosas completamente + +00:10:21.600 --> 00:10:25.080 +nuevas que no existen en la computación de escritorio, + +00:10:25.080 --> 00:10:29.520 +como las unidades de procesamiento neuronal, las NPUs o Neural Processing + +00:10:29.520 --> 00:10:30.280 +Units. + +00:10:30.280 --> 00:10:33.720 +Apple es un pionero de esto, pero ahora todos los fabricantes lo están haciendo. + +00:10:33.720 --> 00:10:37.320 +Es un chip que, como la GPU, hace procesamiento paralelo. + +00:10:37.320 --> 00:10:40.240 +Pero recuerda que GPU significa Graphic Processing Unit, + +00:10:40.240 --> 00:10:41.760 +la unidad de procesamiento gráfico. + +00:10:41.760 --> 00:10:43.240 +No fue diseñada para eso. + +00:10:43.240 --> 00:10:46.680 +Hay nuevos chips, inicialmente inventados por Google para servidores, + +00:10:46.680 --> 00:10:51.440 +llamados TPU, Tensor Processor Units, que también se están colocando dentro de los + +00:10:51.440 --> 00:10:54.320 +teléfonos porque los teléfonos empiezan a necesitar hacer uso de inteligencia + +00:10:54.320 --> 00:10:55.280 +artificial. + +00:10:55.280 --> 00:10:59.200 +Cuando tú haces un dictado de voz en el teléfono, cuando usas asistentes, + +00:10:59.200 --> 00:11:02.600 +estás haciendo un uso de Machine Learning, de inteligencia artificial. + +00:11:02.600 --> 00:11:07.120 +Cuando el teléfono te coloca filtros en WhatsApp o en Instagram o en Snapchat, + +00:11:07.120 --> 00:11:08.720 +esto es inteligencia artificial. + +00:11:08.720 --> 00:11:12.720 +Y usan estas NPUs que vienen integradas en el chip completo. + +00:11:12.720 --> 00:11:17.200 +Las CPUs que están dentro de un sistema de chip son muy similares a la CPU de una + +00:11:17.200 --> 00:11:18.440 +computadora normal. + +00:11:18.440 --> 00:11:22.040 +Tienen igual procesamiento por gigahertz, tienen las mismas unidades, + +00:11:22.040 --> 00:11:23.440 +incluso tienen núcleos. + +00:11:23.440 --> 00:11:27.720 +De hecho, hoy en día es mucho más común ver multinúcleos en el chip de un + +00:11:27.720 --> 00:11:29.840 +teléfono que en el chip de una computadora. + +00:11:29.840 --> 00:11:32.640 +Los sistemas de chip tienen que tener hasta 16 núcleos, + +00:11:32.640 --> 00:11:36.840 +donde típicamente en las computadoras de arquitectura x86 veamos cuatro a ocho + +00:11:36.840 --> 00:11:37.440 +núcleos. + +00:11:37.440 --> 00:11:40.040 +A medida que la inteligencia artificial captura todo el planeta, + +00:11:40.040 --> 00:11:43.520 +empezamos a tener una hiper optimización de cosas distintas. + +00:11:43.520 --> 00:11:46.320 +La inteligencia artificial está conectada directamente a plantas de energía + +00:11:46.320 --> 00:11:49.960 +nuclear, así que el problema de la energía no es el problema que creemos. + +00:11:49.960 --> 00:11:53.560 +Nuestro problema es más de memoria y de velocidad de procesamiento. + +00:11:53.560 --> 00:11:56.760 +Resulta que los sistemas de chip también son ideales para esto, + +00:11:56.760 --> 00:12:02.520 +porque en el modelo anterior la GPU y la memoria estaban aparte y en el modelo + +00:12:02.520 --> 00:12:08.320 +nuevo el procesador de un iPhone comparte la memoria entre la CPU, + +00:12:08.320 --> 00:12:12.400 +la GPU y la NPU, el procesador neural de inteligencia artificial. + +00:12:12.400 --> 00:12:15.480 +Así que cuando el sistema operativo no necesita tanta RAM, + +00:12:15.480 --> 00:12:19.600 +esa RAM la puede aprovechar por completo la inteligencia artificial, + +00:12:19.600 --> 00:12:21.920 +haciendo estos sistemas mucho más eficientes. + +00:12:21.920 --> 00:12:27.240 +Durante el 2025, China tuvo un momento en el que venció a OpenAI, + +00:12:27.240 --> 00:12:31.120 +aprovechándose de esta característica para poder crear modelos de inteligencia + +00:12:31.120 --> 00:12:33.880 +artificial que corran en local en laptops. + +00:12:33.880 --> 00:12:35.640 +Y es parte de la razón por la que Apple, + +00:12:35.640 --> 00:12:38.560 +a pesar de estar atrás en la carrera de inteligencia artificial, + +00:12:38.560 --> 00:12:41.040 +sigue constantemente liderando el desarrollo de inteligencia artificial + +00:12:41.040 --> 00:12:44.640 +local por los system on a chip y su arquitectura de memoria unificada. + +00:12:44.640 --> 00:12:46.640 +De inteligencia artificial se puede hablar mucho más. + +00:12:46.640 --> 00:12:49.960 +El system on a chip es solo un componente de una gran cantidad de cosas, + +00:12:49.960 --> 00:12:52.160 +pero eso viene dentro de poco en el curso de Fundamentos de Ingeniería de + +00:12:52.160 --> 00:12:53.720 +Software. + diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/01-Computaci\303\263n B\303\241sica/10-GPUs Procesadores gr\303\241ficos y de AI.mp4" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/01-Computaci\303\263n B\303\241sica/10-GPUs Procesadores gr\303\241ficos y de AI.mp4" new file mode 100644 index 0000000000000000000000000000000000000000..769da2149290f2529f01714abbb54489d16e2d3a --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/01-Computaci\303\263n B\303\241sica/10-GPUs Procesadores gr\303\241ficos y de AI.mp4" @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f5324bf6c5224bee5ae827dcd9d716f5b15f11c2143c4faca4688d9895adc36a +size 316565371 diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/01-Computaci\303\263n B\303\241sica/10-GPUs Procesadores gr\303\241ficos y de AI.vtt" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/01-Computaci\303\263n B\303\241sica/10-GPUs Procesadores gr\303\241ficos y de AI.vtt" new file mode 100644 index 0000000000000000000000000000000000000000..1736af773f6d55162d095e7fcc3b2e4e95bc448d --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/01-Computaci\303\263n B\303\241sica/10-GPUs Procesadores gr\303\241ficos y de AI.vtt" @@ -0,0 +1,620 @@ +WEBVTT + +00:00:00.000 --> 00:00:08.760 +Las primeras computadoras no tenían pantalla, las primeras computadoras cuando tú les colocabas datos y hacías cálculos de cómputo, te imprimían los cálculos. + +00:00:08.760 --> 00:00:17.320 +Las primeras pantallas realmente no eran de computadoras, eran un instrumento electrónico para ver las ondas electromagnéticas llamada osciloscopio. + +00:00:17.320 --> 00:00:27.560 +Y unos ingenieros encontraron cómo usar la imagen del osciloscopio para colocar dos palitos y una bolita que rebotaba y así nace el primer videojuego de la historia, Pong. + +00:00:27.560 --> 00:00:35.240 +Desde ese momento, los videojuegos empezaron a usar la computación para empujar cada vez más lo que era posible a nivel gráfico. + +00:00:35.240 --> 00:00:39.240 +Primero hubo gráficos de videojuego antes de que hubieran sistemas operativos gráficos. + +00:00:39.240 --> 00:00:47.440 +En sistemas UNIX o en DOS, uno podía jugar juegos como Tetris, Prince of Persia, sin necesidad de tener todavía ventanas, + +00:00:47.440 --> 00:00:54.240 +porque cargaban cada una de estas pantallas y eran juegos muy sencillos que llevaban al máximo la capacidad de los chips. + +00:00:54.240 --> 00:00:59.520 +Por décadas, si no fuera por los videojuegos, no habríamos llevado los chips a su máximo nivel. + +00:00:59.520 --> 00:01:08.480 +Y como estábamos llevando estos chips a su máximo nivel, empezó a existir una industria que creaba chips específicamente para poner a correr esos gráficos, + +00:01:08.480 --> 00:01:14.880 +para diseño gráfico, para producción audiovisual de efectos especiales, pero sobre todo para videojuegos. + +00:01:14.880 --> 00:01:18.800 +Esos chips se llaman Unidades de Procesamiento Gráfico o GPUs. + +00:01:18.800 --> 00:01:21.160 +¿Cuál es la diferencia entre una CPU y una GPU? + +00:01:21.160 --> 00:01:26.680 +Como ya hemos visto en este curso, las CPUs procesan de manera seria la información a través de ciclos, + +00:01:26.680 --> 00:01:31.240 +y tienen millones de transistores que hacen cálculos matemáticos hipercomplejos, + +00:01:31.240 --> 00:01:34.600 +porque eso es lo que se necesita para correr una hoja de cálculo en Excel, + +00:01:34.600 --> 00:01:38.000 +eso es lo que se necesita para los cálculos que necesitan navegar una página web, + +00:01:38.000 --> 00:01:40.680 +y todo lo que hacemos en una computadora normal. + +00:01:40.680 --> 00:01:47.840 +Una GPU realmente son muchísimos, muchísimos núcleos de procesadores chiquitos, + +00:01:47.840 --> 00:01:55.760 +que hacen muchos menos cálculos con mucho menos poder, pero como son muchísimos núcleos, los hacen al mismo tiempo. + +00:01:55.760 --> 00:02:04.400 +Representar una imagen en pantalla es representar un cálculo de una matriz de millones de puntos de luz, conocida como pixeles. + +00:02:04.400 --> 00:02:12.760 +Cada uno de esos puntos tiene que calcular cuánto va a ser el brillo que tienen a partir de prender el rojo, el verde o el azul, + +00:02:12.760 --> 00:02:15.320 +y ese brillo tiene que calcularse al mismo tiempo. + +00:02:15.320 --> 00:02:20.440 +¿Recuerdan en el pasado que algunas imágenes cargaban como si fuera una línea detrás de otra? + +00:02:20.440 --> 00:02:23.360 +Eso es procesamiento serial, lo que haría una CPU. + +00:02:23.360 --> 00:02:30.000 +Que la imagen de repente cargue y vaya cambiando dinámicamente es procesamiento paralelo, esa es la magia de una GPU. + +00:02:30.000 --> 00:02:34.520 +Tú puedes ver los pixeles, los pixeles de un teléfono, sobre todo un teléfono moderno, + +00:02:34.520 --> 00:02:40.920 +ese rojo, verde y azul, son muy chiquitos porque son microscópicos, por más de que acerques el ojo, no los vas a alcanzar a ver. + +00:02:40.960 --> 00:02:45.480 +Pero si tienes un monitor de toda la vida, uno de estos monitores que no tiene tanta resolución, + +00:02:45.480 --> 00:02:50.760 +puedes agarrar el monitor y acercar los ojos mucho, mucho, mucho a la pantalla mientras está prendida + +00:02:50.760 --> 00:02:54.640 +y vas a alcanzar a ver las líneas de rojo, verde y azul con tus ojos humanos. + +00:02:54.640 --> 00:03:01.600 +NVIDIA y ATI, que luego fue adquirida por AMD, crearon esta industria de las tarjetas gráficas. + +00:03:01.600 --> 00:03:06.440 +De hecho, si no fuera por esa industria, no habría crecido la industria de las consolas de videojuegos. + +00:03:06.440 --> 00:03:11.680 +Una consola de videojuegos, en esencia, es una computadora que tiene todas las partes de una computadora por dentro, + +00:03:11.680 --> 00:03:17.200 +pero cuyo sistema operativo está específicamente optimizado para la reproducción de videojuegos, + +00:03:17.200 --> 00:03:19.800 +y sus chips incluyen GPUs, por supuesto. + +00:03:19.800 --> 00:03:24.000 +Cuando tuvimos la clase de sistemas operativos, aprendimos de interrupciones, + +00:03:24.000 --> 00:03:28.480 +estos mecanismos que tiene el sistema operativo para darle prioridad a algunos procesos contra otros. + +00:03:28.480 --> 00:03:32.800 +Por eso, por ejemplo, cuando tu computadora está muy colgada haciendo un proceso muy complejo, + +00:03:32.800 --> 00:03:37.920 +tu mouse se puede mover a alta velocidad, porque el mouse tiene una alta prioridad en la jerarquía. + +00:03:37.920 --> 00:03:44.920 +Cuando se procesa una pantalla, imagínate que la GPU se cuelgue y solamente tengas imagen en el 75% de la pantalla + +00:03:44.920 --> 00:03:47.640 +y el resto se quede quieto. Sería extraño, ¿verdad? + +00:03:47.640 --> 00:03:52.880 +Así que las GPUs fueron originalmente diseñadas para que toda la pantalla tenga la misma prioridad, + +00:03:52.880 --> 00:03:55.320 +a través de un sistema que se conoce como pipelines. + +00:03:55.320 --> 00:03:59.160 +En resumen, los primeros circuitos de GPU eran circuitos sencillos, + +00:03:59.160 --> 00:04:02.160 +donde simplemente estaban encargados de sectores de la pantalla. + +00:04:02.160 --> 00:04:06.440 +Todos los sectores de la pantalla tienen la misma prioridad y todos tienen que representar una imagen. + +00:04:06.440 --> 00:04:09.480 +No eran nada versátiles de programar, pero por la ley de Moore, + +00:04:09.480 --> 00:04:13.080 +a medida que aumentaba exponencialmente la complejidad de los transistores, + +00:04:13.080 --> 00:04:19.520 +empezaron a emerger características como la característica de generar texturas + +00:04:19.520 --> 00:04:24.320 +y se programaron shaders y luces y cálculos de física, + +00:04:24.320 --> 00:04:28.760 +porque todo lo que necesitaba procesamiento paralelo, como pasa mucho en los videojuegos, + +00:04:28.760 --> 00:04:35.000 +se podía pasar por estos cientos de miles de núcleos que hacen cálculos paralelos de alta velocidad. + +00:04:35.000 --> 00:04:37.440 +Y emergió un nuevo tipo de computación paralela, + +00:04:37.440 --> 00:04:41.280 +que es la forma en la que funciona toda la industria de los efectos especiales, + +00:04:41.280 --> 00:04:42.880 +de los videojuegos, de la animación. + +00:04:42.880 --> 00:04:47.520 +Pero como necesita nunca trabarse, no puede usar la memoria RAM tradicional + +00:04:47.520 --> 00:04:49.880 +que en una computadora está muy lejos del chip. + +00:04:49.880 --> 00:04:53.080 +Esto es mucho antes de los System on a Chip, que tienen todo integrado. + +00:04:53.080 --> 00:04:58.120 +Así que las GPUs son tarjetas que, además de tener estos procesadores gráficos, + +00:04:58.120 --> 00:05:01.120 +tienen una memoria especial independiente. + +00:05:01.120 --> 00:05:05.840 +Esa memoria se conoce como VRAM y es la memoria de RAM de video, + +00:05:05.840 --> 00:05:09.920 +una memoria volátil específicamente para esa computación paralela. + +00:05:09.920 --> 00:05:13.680 +Así que cuando uno empieza a jugar videojuegos, uno carga datos en la VRAM. + +00:05:13.680 --> 00:05:18.840 +Ahí es donde se cargan las texturas de tu videojuego, los polígonos y todos esos cálculos de física que vas a usar + +00:05:18.840 --> 00:05:20.480 +cuando estás jugando un juego tridimensional. + +00:05:20.480 --> 00:05:23.000 +¿Qué otras cosas requieren procesamiento paralelo? + +00:05:23.000 --> 00:05:24.840 +Por ejemplo, el mundo. + +00:05:24.840 --> 00:05:30.520 +Cuando tú quieres modelar el sistema de las nubes para poder predecir el clima, + +00:05:30.520 --> 00:05:34.040 +pues eso es el procesamiento paralelo de muchísimas variables al mismo tiempo. + +00:05:34.040 --> 00:05:37.320 +Así que las GPUs eran ideales para simulación. + +00:05:37.320 --> 00:05:43.360 +Hubo una época en la que investigadores que creaban supercomputadoras para simulaciones de física, + +00:05:43.360 --> 00:05:49.560 +de estrellas, agujeros negros, etcétera, se dieron cuenta que el chip del PlayStation 3, + +00:05:49.560 --> 00:05:54.400 +un chip creado por IBM que combinaba CPU y GPU para los videojuegos de PlayStation 3, + +00:05:54.400 --> 00:05:56.600 +era increíblemente eficiente. + +00:05:56.600 --> 00:05:59.880 +Y como en el PlayStation 3 se puede instalar Linux de toda la vida, + +00:05:59.880 --> 00:06:06.040 +empezaron a comprar PlayStation 3 en masa y a crear clústeres de PlayStation con Linux + +00:06:06.040 --> 00:06:09.520 +para hacer simulaciones y fabricar supercomputadoras. + +00:06:09.520 --> 00:06:12.120 +Mucho más barato de lo que cuesta una supercomputadora. + +00:06:12.120 --> 00:06:16.840 +Porque al final del día, un videojuego no es más que una simulación del mundo real. + +00:06:16.840 --> 00:06:19.160 +Así que me servía perfecto para la física. + +00:06:19.160 --> 00:06:23.200 +Porque el dinero, Sony, Microsoft con el Xbox o Nintendo con... + +00:06:23.200 --> 00:06:26.880 +Bueno, Nintendo es una excepción, la verdad, Nintendo sí hace plata con las consolas. + +00:06:26.880 --> 00:06:30.480 +Pero Sony y Microsoft no hacen dinero con el PlayStation o con el Xbox. + +00:06:30.480 --> 00:06:34.600 +Lo venden a pérdida porque ganan dinero con la venta de los videojuegos. + +00:06:34.600 --> 00:06:36.840 +PlayStation 3 era vendido a pérdida. + +00:06:36.840 --> 00:06:40.560 +Así que PlayStation estaba perdiendo dinero haciendo todas estas consolas + +00:06:40.560 --> 00:06:44.480 +para las que nunca se iban a comprar videojuegos porque las estaban usando científicos + +00:06:44.480 --> 00:06:47.440 +y pues cerraron el chorro y dejaron de permitir esto. + +00:06:47.440 --> 00:06:50.360 +Pero por un momento mágico, por un momento mágico, + +00:06:50.360 --> 00:06:52.800 +la computación científica corría en PlayStation. + +00:06:52.800 --> 00:06:56.280 +La inteligencia artificial también es procesamiento paralelo. + +00:06:56.280 --> 00:07:00.720 +Cuando tú usas un modelo de lenguaje de inteligencia artificial para generar un texto, + +00:07:00.720 --> 00:07:05.040 +el modelo de lenguaje empieza a recorrer un árbol gigantesco + +00:07:05.040 --> 00:07:08.560 +de la estructura del lenguaje humano con el que fue entrenado. + +00:07:08.560 --> 00:07:11.800 +Y trata de encontrar diferentes caminos para responder una pregunta + +00:07:11.800 --> 00:07:15.640 +que tú le haces a ChatGPT o a DeepSeek o a Cloud o a Gemini + +00:07:15.640 --> 00:07:18.360 +o al modelo que estés usando en el momento en el que estés viendo este curso. + +00:07:18.360 --> 00:07:24.440 +El punto es que ese procesamiento paralelo ocurre en GPUs originalmente, + +00:07:24.440 --> 00:07:26.800 +pero luego hemos empezado a usar chips especializados, + +00:07:26.800 --> 00:07:28.160 +pero eso viene más adelante. + +00:07:28.160 --> 00:07:31.440 +Inicialmente, los primeros modelos de inteligencia artificial + +00:07:31.440 --> 00:07:34.680 +antes de la superinteligencia fueron entrenados en GPUs. + +00:07:34.680 --> 00:07:40.120 +Los autónomos autónomos como los Tesla o Waymo de Google usan GPUs + +00:07:40.120 --> 00:07:45.080 +porque así como una GPU tiene que procesar al mismo tiempo cada píxel de una pantalla, + +00:07:45.080 --> 00:07:50.520 +un automóvil usa las cámaras y los radares que tiene en el marco del automóvil, + +00:07:50.520 --> 00:07:53.920 +en su estructura, para capturar imágenes del mundo exterior. + +00:07:53.920 --> 00:07:56.720 +Esa captura de imágenes tiene que ser procesada en tiempo real + +00:07:56.720 --> 00:07:59.560 +para convertirla en los ponígonos tridimensionales + +00:07:59.560 --> 00:08:02.280 +que le permiten a un algoritmo de inteligencia artificial + +00:08:02.280 --> 00:08:05.440 +decidir si el auto va a frenar, acelerar o moverse. + +00:08:05.440 --> 00:08:09.000 +Sin GPUs, ese procesamiento paralelo de alta velocidad, + +00:08:09.000 --> 00:08:12.320 +de cálculos relativamente simples, pero millones al mismo tiempo, + +00:08:12.320 --> 00:08:13.200 +no sería posible. + +00:08:13.200 --> 00:08:17.640 +Las CPUs normales se programan con un lenguaje ensamblador. + +00:08:17.640 --> 00:08:21.480 +Ese lenguaje es el que arranca el kernel y el que habla el sistema operativo. + +00:08:21.480 --> 00:08:27.080 +Las aplicaciones se programan en lenguajes como C++, Python, Visual Basic, entre otros. + +00:08:27.080 --> 00:08:30.720 +Pero todos esos lenguajes compilan al lenguaje ensamblador de la CPU. + +00:08:30.720 --> 00:08:32.800 +Las GPUs tienen algo muy parecido. + +00:08:32.800 --> 00:08:36.560 +Y fabricantes como Nvidia han creado lenguajes intermedios + +00:08:36.560 --> 00:08:39.760 +para que los programadores le hablen al metal, + +00:08:39.760 --> 00:08:42.440 +para que puedan programar el chip de la GPU. + +00:08:42.440 --> 00:08:46.200 +El más popular en este momento se llama CUDA de Nvidia. + +00:08:46.200 --> 00:08:48.480 +Inicialmente pensaba para videojuegos, + +00:08:48.480 --> 00:08:52.840 +CUDA es parte de la razón por la que la revolución de la inteligencia artificial es posible. + +00:08:52.840 --> 00:08:55.720 +Porque permite hacer estos cálculos masivos + +00:08:55.720 --> 00:08:59.880 +reprogramando el comportamiento de chips que originalmente fueron pensados + +00:08:59.880 --> 00:09:00.840 +para mover pixeles. + +00:09:00.840 --> 00:09:05.520 +Las GPUs también se programan y se diseñan a nivel físico de hardware + +00:09:05.520 --> 00:09:07.600 +con consideraciones distintas. + +00:09:07.600 --> 00:09:09.880 +La CPU, que es el procesador que arranca el sistema operativo, + +00:09:09.880 --> 00:09:13.800 +está en el corazón de la tarjeta madre de una computadora + +00:09:13.800 --> 00:09:16.200 +o de la tarjeta central de un teléfono. + +00:09:16.200 --> 00:09:21.440 +Pero la GPU se conecta a alta velocidad a través de un puerto que se llama PCI-E, + +00:09:21.440 --> 00:09:24.080 +que es un puerto, es una serie de muesquitas + +00:09:24.080 --> 00:09:27.680 +que se conectan directamente a la electrónica de la tarjeta madre. + +00:09:27.680 --> 00:09:31.440 +En un teléfono o en una computadora de Apple que tienen System on a Chip, + +00:09:31.440 --> 00:09:35.400 +las GPUs directamente están pegadas a la CPU en el System on a Chip, + +00:09:35.400 --> 00:09:36.880 +como lo vimos en la clase anterior. + +00:09:36.880 --> 00:09:40.920 +En una computadora normal, la CPU tiene un ventilador o un sistema + +00:09:40.920 --> 00:09:43.840 +de refrigeramiento por agua que enfría la CPU. + +00:09:43.840 --> 00:09:47.480 +Pero las GPUs también se calientan, así que tienen sus propios sistemas + +00:09:47.480 --> 00:09:50.680 +de enfriamiento paralelo, sus propios ventiladores o su propia + +00:09:50.680 --> 00:09:51.920 +refrigeración de agua. + +00:09:51.920 --> 00:09:54.840 +En algunos casos, como en las computadoras de videojuegos más + +00:09:54.840 --> 00:09:57.920 +poderosas, o en las computadoras de render de efectos especiales, + +00:09:57.920 --> 00:10:02.160 +o en las supercomputadoras de simulación para efectos científicos, + +00:10:02.160 --> 00:10:04.440 +llegan a enfriarlas con aceite. + +00:10:04.440 --> 00:10:06.400 +El aceite no conduce la electricidad. + +00:10:06.400 --> 00:10:10.080 +Así que hay computadoras que se hunden en aceite para que el aceite + +00:10:10.080 --> 00:10:11.000 +disipe el calor. + +00:10:11.000 --> 00:10:13.840 +Más adelante vamos a hablar de codecs, que son codificadores de + +00:10:13.840 --> 00:10:17.160 +codificadores, un tipo de algoritmo de compresión y descompresión que + +00:10:17.160 --> 00:10:19.880 +es, por ejemplo, la forma en la que funciona el video. + +00:10:19.880 --> 00:10:24.040 +Los videos antes eran súper pesados y ahora son mucho más livianos. + +00:10:24.040 --> 00:10:26.960 +Antes teníamos Blu-rays y ahora tenemos YouTube y Netflix. + +00:10:26.960 --> 00:10:31.720 +Pero esos son algoritmos que gastan muchísimo de el chip. + +00:10:31.720 --> 00:10:34.320 +Y antes usaban la GPU y mucho antes la CPU. + +00:10:34.320 --> 00:10:39.360 +Ahora usan transistores especializados dentro de la GPU como instrucciones + +00:10:39.360 --> 00:10:42.760 +que solamente se encargan de codificar y decodificar video, + +00:10:42.760 --> 00:10:44.880 +usando mucho menos electricidad. + +00:10:44.880 --> 00:10:47.200 +Lo mismo pasa con la simulación de ciertos videojuegos. + +00:10:47.200 --> 00:10:48.520 +Los videojuegos empezaron, por ejemplo, + +00:10:48.520 --> 00:10:51.480 +a simular el comportamiento de los fotones del mundo real, + +00:10:51.480 --> 00:10:55.040 +el comportamiento de la luz, con una técnica llamada ray tracing, + +00:10:55.040 --> 00:10:57.640 +que inicialmente se programaba en código, + +00:10:57.640 --> 00:11:02.440 +pero ahora se crean el transistor en los chips y la GPU tiene unidades + +00:11:02.440 --> 00:11:04.440 +específicamente diseñadas para ray tracing. + +00:11:04.440 --> 00:11:06.440 +Con la inteligencia artificial pasa lo mismo. + +00:11:06.440 --> 00:11:08.160 +La inteligencia artificial es, en esencia, + +00:11:08.160 --> 00:11:11.760 +multiplicación de matrices y recorrido de árboles. + +00:11:11.760 --> 00:11:15.600 +Eso se puede programar en el chip y es la esencia de las unidades de + +00:11:15.600 --> 00:11:17.040 +procesamiento neural. + +00:11:17.040 --> 00:11:19.680 +Nvidia, por ejemplo, tiene unos chips que solo hacen eso, + +00:11:19.680 --> 00:11:20.800 +que vamos a ver más adelante. + +00:11:20.800 --> 00:11:24.400 +Antes de que la inteligencia artificial consumiera masivas cantidades de chips + +00:11:24.400 --> 00:11:27.600 +gráficos, lo hizo las criptomonedas. + +00:11:27.600 --> 00:11:31.800 +Bitcoin y casi todas las monedas que usan blockchain requieren hacer un tipo de + +00:11:31.800 --> 00:11:35.520 +cálculo matemático muy particular para que el blockchain funcione de manera + +00:11:35.520 --> 00:11:36.440 +cifrada. + +00:11:36.440 --> 00:11:40.040 +Ese cálculo es más amigable en procesamiento paralelo que en + +00:11:40.040 --> 00:11:41.280 +procesamiento serial. + +00:11:41.280 --> 00:11:43.160 +Así que aprovecha las GPUs. + +00:11:43.160 --> 00:11:47.560 +Y como Bitcoin recompensa con criptomonedas a las personas que hacen + +00:11:47.560 --> 00:11:50.320 +este proceso de ejecutar las ecuaciones matemáticas, + +00:11:50.320 --> 00:11:54.200 +llamado criptominería, se creó toda una industria de minería de Bitcoin, + +00:11:54.200 --> 00:11:58.600 +que es poner a correr estas GPUs al máximo en grandes granjas de servidores + +00:11:58.600 --> 00:12:02.200 +pegadas a granjas de hidroeléctricas, plantas de energía nuclear, + +00:12:02.200 --> 00:12:04.280 +energía basada en gas, etcétera. + +00:12:04.280 --> 00:12:07.800 +Hay países enteros que tienen cosas así, como por ejemplo El Salvador. + +00:12:07.800 --> 00:12:11.800 +Eso hizo que la demanda de chips aumentara justo antes de que llegara la + +00:12:11.800 --> 00:12:12.880 +inteligencia artificial. + +00:12:12.880 --> 00:12:16.880 +No es como que las GPUs hayan abandonado la industria de los videojuegos. + +00:12:16.880 --> 00:12:18.400 +Todavía hay mucha innovación. + +00:12:18.400 --> 00:12:22.840 +Valve, la empresa detrás de juegos como Portal, Half-Life y el sistema Steam, + +00:12:22.840 --> 00:12:26.840 +tiene un sistema operativo llamado SteamOS que reemplaza el sistema operativo que + +00:12:26.880 --> 00:12:30.480 +estás creando en tu computadora para maximizar el uso de recursos para un + +00:12:30.480 --> 00:12:31.320 +videojuego, + +00:12:31.320 --> 00:12:34.840 +de tal manera que tu computadora se vuelve en esencia una consola de videojuegos. + +00:12:34.840 --> 00:12:39.800 +También la realidad aumentada y la realidad virtual han aumentado la necesidad + +00:12:39.800 --> 00:12:44.360 +de procesadores gráficos porque en cada ojo estás procesando dos pantallas + +00:12:44.360 --> 00:12:48.800 +distintas para crear esa sensación de tridimensionalidad y presencia que tiene + +00:12:48.800 --> 00:12:49.840 +la realidad virtual. + +00:12:49.840 --> 00:12:53.640 +Así que aún sigue habiendo mucha innovación gráfica, + +00:12:53.640 --> 00:12:57.200 +solo que la inteligencia artificial lo absorbió mucho y todavía tenemos mucho + +00:12:57.200 --> 00:12:58.680 +de procesamiento científico que hacer. + +00:12:58.680 --> 00:13:03.000 +Las GPUs son un procesador revolucionario que avanzó la ciencia humana. + diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/01-Computaci\303\263n B\303\241sica/10-Resumen.html" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/01-Computaci\303\263n B\303\241sica/10-Resumen.html" new file mode 100644 index 0000000000000000000000000000000000000000..b147ccc3fe0599480d28acd411ac6f938b78733c --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/01-Computaci\303\263n B\303\241sica/10-Resumen.html" @@ -0,0 +1,124 @@ + + + + + + + GPUs: Procesadores gráficos y de AI + + + +
+
+

Resumen

Las GPUs (Graphics Processing Units) transformaron la computación al permitir gráficos avanzados y procesamiento paralelo, cambiando desde los primeros videojuegos como Pong hasta aplicaciones modernas de inteligencia artificial y criptomonedas. Entender cómo funcionan las GPUs nos muestra cómo la tecnología gráfica afectó positivamente múltiples industrias y nuestra vida cotidiana.

+

¿Qué fueron las primeras computadoras y cómo aparecieron las GPUs?

+

Al inicio, las computadoras no contaban con pantallas, sus resultados se imprimían en papel. Las primeras pantallas surgieron del oscilloscope, un instrumento electrónico que mostraba ondas electromagnéticas. Ingenieros adaptaron el osciloscopio y nació el primer videojuego: Pong, marcando así el comienzo de gráficos digitales antes de sistemas operativos visuales.

+

Luego, juegos simples como Tetris y Prince of Persia usaban capacidades gráficas mínimas en plataformas como UNIX o DOS. Gracias a esto, la computación aprovechó al máximo los chips disponibles impulsando una industria específica, las GPUs.

+

¿Cuál es la diferencia entre CPU y GPU?

+

Una CPU realiza cálculos complejos, pero en ciclos secuenciales, adecuados para programas cotidianos como Excel o navegación web. La GPU, por su parte, tiene muchos núcleos más pequeños que ejecutan cálculos más simples pero de manera simultánea, ideales para generar gráficos formados por millones de píxeles al mismo tiempo.

+

Por ejemplo:

+
    +
  • Procesamiento serial (CPU): cuando una imagen carga lentamente línea por línea.
  • +
  • Procesamiento paralelo (GPU): cuando una imagen se actualiza rápidamente, ideal para videojuegos y animación.
  • +
+

¿Qué son la VRAM y CUDA y cómo impulsaron la computación paralela?

+

Las GPUs poseen una memoria especializada llamada VRAM (Video RAM), diseñada para ejecutar tareas gráficas paralelas como texturas en videojuegos y simulaciones complejas. Esta capacidad hizo posible aplicaciones científicas, creando supercomputadoras a precios más bajos como ocurrió con PlayStation 3 y Linux.

+

CUDA, de NVIDIA, es un lenguaje intermedio que permite programar la GPU directamente para tareas más allá de gráficos, como simulaciones en física, inteligencia artificial y procesamiento de datos en criptominería.

+

¿Cómo influyeron las GPUs en la inteligencia artificial y otras industrias?

+

El procesamiento paralelo de las GPUs es esencial también en:

+
    +
  • Inteligencia Artificial: entrenamiento de modelos como ChatGPT, donde exploran simultáneamente múltiples posibilidades para responder preguntas.
  • +
  • Automóviles autónomos: analizando simultáneamente información visual para tomar decisiones rápidas y seguras.
  • +
  • Criptomonedas: realizando cálculos criptográficos en paralelo que son básicos para blockchain, llevando a la creación de enormes granjas de minería.
  • +
  • Simulaciones climáticas y científicas: procesando múltiples variables simultáneamente para modelar fenómenos complejos.
  • +
+

Esto provocó gran crecimiento en la demanda de GPUs.

+

¿Qué tecnologías recientes aumentaron la necesidad de GPUs?

+

Actualmente, tecnologías como la realidad virtual y aumentada impulsan innovaciones gráficas importantes. Cada ojo requiere representaciones gráficas separadas, demandando un procesamiento gráfico intensivo y eficiente. Valve desarrolló SteamOS, optimizando recursos de PC para juegos y realidad virtual.

+

Empresas de animación, efectos especiales y contenidos audiovisuales también dependen de GPUs avanzadas, especialmente equipadas con unidades específicas para procesar algoritmos gráficos tales como ray tracing (simulación física de luz) y códecs multimedia (video).

+

¿Cómo afecta el diseño de hardware de las GPUs a su desempeño?

+

Las GPUs tienen consideraciones especiales de hardware. A menudo están conectadas directamente a la tarjeta madre mediante puertos PCI-E. Debido al intenso procesamiento paralelo, requieren sistemas eficientes de refrigeración dedicados: ventiladores, refrigeración líquida e incluso inmersión en aceite, técnica usada para efectivamente dispersar calor en tareas exigentes.

+

En dispositivos móviles y computadoras Apple con System on a Chip, GPUs y CPUs están integradas en mismos chips aumentando eficiencia energética y desempeño gráfico.

+

Te invitamos a compartir tu experiencia con el uso de GPUs o alguna duda sobre su funcionamiento.

+
+
+ + \ No newline at end of file diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/01-Computaci\303\263n B\303\241sica/11-Lecturas recomendadas.txt" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/01-Computaci\303\263n B\303\241sica/11-Lecturas recomendadas.txt" new file mode 100644 index 0000000000000000000000000000000000000000..b7a7154d164a309c99e798f1630901daeea4b8bc --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/01-Computaci\303\263n B\303\241sica/11-Lecturas recomendadas.txt" @@ -0,0 +1,3 @@ +https://platzi.com/cursos/programacion-basica/ +https://platzi.com/cursos/python/ +https://platzi.com/cursos/javascript/ diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/01-Computaci\303\263n B\303\241sica/11-Qu\303\251 es un algoritmo y qu\303\251 es un lenguaje de programaci\303\263n.mp4" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/01-Computaci\303\263n B\303\241sica/11-Qu\303\251 es un algoritmo y qu\303\251 es un lenguaje de programaci\303\263n.mp4" new file mode 100644 index 0000000000000000000000000000000000000000..1a094c13c73229c6e4e93da2401c5f005e065365 --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/01-Computaci\303\263n B\303\241sica/11-Qu\303\251 es un algoritmo y qu\303\251 es un lenguaje de programaci\303\263n.mp4" @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:82efbc8c241e28e08dd893d1b2376012093e10e95014cfe307b0898b98f1281d +size 167399896 diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/01-Computaci\303\263n B\303\241sica/11-Qu\303\251 es un algoritmo y qu\303\251 es un lenguaje de programaci\303\263n.vtt" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/01-Computaci\303\263n B\303\241sica/11-Qu\303\251 es un algoritmo y qu\303\251 es un lenguaje de programaci\303\263n.vtt" new file mode 100644 index 0000000000000000000000000000000000000000..33ffc938fa306e9866c3e5f212a12805d08ad177 --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/01-Computaci\303\263n B\303\241sica/11-Qu\303\251 es un algoritmo y qu\303\251 es un lenguaje de programaci\303\263n.vtt" @@ -0,0 +1,469 @@ +WEBVTT + +00:00:00.240 --> 00:00:02.820 +Un algoritmo es un conjunto de pasos lógicos + +00:00:03.199 --> 00:00:06.879 +claramente definidos de una manera no ambigua para + +00:00:06.879 --> 00:00:09.139 +resolver un problema o para lograr un objetivo. + +00:00:09.280 --> 00:00:11.679 +En este caso, vamos a imaginarnos un sistema + +00:00:11.679 --> 00:00:15.045 +de aire acondicionado. Un aire acondicionado, muy simplificado, + +00:00:15.145 --> 00:00:18.485 +es un sistema relativamente simple. Los aires acondicionados + +00:00:18.545 --> 00:00:22.705 +hacen 2 cosas, calientan el aire o enfrían + +00:00:22.705 --> 00:00:24.465 +el aire, pero una vez el aire está + +00:00:24.465 --> 00:00:27.445 +caliente o frío, el siguiente paso es distribuirlo + +00:00:27.585 --> 00:00:30.530 +alrededor del área que quieres condicionar, así que + +00:00:30.530 --> 00:00:33.090 +tienes que ventilar el aire. Y si el + +00:00:33.090 --> 00:00:35.570 +aire ya está a la temperatura deseada por + +00:00:35.570 --> 00:00:37.730 +el usuario, tienes que dejar de ventilar el + +00:00:37.730 --> 00:00:39.670 +aire, o si no, vas a perder esa + +00:00:39.810 --> 00:00:42.210 +temperatura. Para ello, los aires acondicionados usan un + +00:00:42.210 --> 00:00:47.435 +termostato. El termostato está constantemente midiendo la temperatura + +00:00:47.435 --> 00:00:49.755 +del aire comparada con la temperatura que el + +00:00:49.755 --> 00:00:52.795 +usuario tiene. ¿Cómo expresamos, entonces, todas estas funciones + +00:00:52.795 --> 00:00:55.855 +de una manera algorítmica? Primero, tenemos que definir + +00:00:55.915 --> 00:00:59.010 +unas variables. Tenemos nuestro termostato y nuestro termostato + +00:00:59.070 --> 00:01:02.270 +sabe 2 cosas, la temperatura actual, definida como + +00:01:02.270 --> 00:01:04.830 +la variable temperatura, y la temperatura que el + +00:01:04.830 --> 00:01:08.990 +usuario quiere, definida como la variable usuario. Asumamos + +00:01:08.990 --> 00:01:11.470 +para este ejercicio que la temperatura actual del + +00:01:11.470 --> 00:01:14.105 +lugar donde estamos es de 20 grados, y + +00:01:14.105 --> 00:01:15.865 +la temperatura que el usuario quiere es de + +00:01:15.865 --> 00:01:19.145 +24 grados. Lo siguiente que tenemos que hacer + +00:01:19.145 --> 00:01:22.025 +es definir si lo que tenemos que hacer + +00:01:22.025 --> 00:01:26.045 +es calentar o enfriar. Así que creamos una + +00:01:26.425 --> 00:01:29.860 +condición, y la condición es si la temperatura + +00:01:29.860 --> 00:01:32.100 +es menor que la que el usuario quiere, + +00:01:32.100 --> 00:01:34.020 +¿qué tenemos que hacer? Es decir, si la + +00:01:34.020 --> 00:01:35.780 +temperatura, que en este caso es 20, es + +00:01:35.780 --> 00:01:37.500 +menor a la que el usuario quiere, que + +00:01:37.500 --> 00:01:40.500 +es 24, significa que está más frío. Así + +00:01:40.500 --> 00:01:43.615 +que tenemos que encender el aire acondicionado en + +00:01:43.615 --> 00:01:47.255 +modo de calentamiento, tenemos que calentar el aire. + +00:01:47.255 --> 00:01:50.094 +Y luego deberíamos ventilar, pero eso no es + +00:01:50.094 --> 00:01:53.454 +suficiente, porque ¿en qué momento logramos parar de + +00:01:53.454 --> 00:01:55.935 +ventilar? Digamos que la ventilación es un proceso + +00:01:55.935 --> 00:01:58.729 +que ocurre cada segundo y digamos que nuestro + +00:01:58.729 --> 00:02:02.270 +sistema está corriendo un ciclo de cada segundo, + +00:02:02.650 --> 00:02:04.890 +cada segundo y un ciclo que evalúa esto. + +00:02:04.890 --> 00:02:08.009 +Entonces, cada segundo es un ciclo que se + +00:02:08.009 --> 00:02:10.845 +tiene que expresar en el algoritmo. Decimos que + +00:02:10.845 --> 00:02:15.004 +cada segundo, si la temperatura es menor que + +00:02:15.004 --> 00:02:17.724 +la que pide el usuario, calentamos. Y si + +00:02:17.724 --> 00:02:20.385 +no, entonces lo que deberíamos hacer es enfriar. + +00:02:20.605 --> 00:02:23.325 +Y todo esto, ¿siempre debemos estar ventilando? Claro + +00:02:23.325 --> 00:02:25.084 +que no. ¿Qué pasa si la temperatura está + +00:02:25.084 --> 00:02:27.640 +perfecta? Pues, ventilar sería un problema para el + +00:02:27.640 --> 00:02:31.500 +usuario. Solamente tenemos que ventilar cuando la temperatura + +00:02:31.560 --> 00:02:35.560 +sea distinta. Por ende, necesitamos otra estructura, un + +00:02:35.560 --> 00:02:38.855 +ciclo que ocurra en cada segundo, donde preguntemos + +00:02:39.075 --> 00:02:41.395 +si la temperatura es diferente a la del + +00:02:41.395 --> 00:02:44.515 +usuario. Así que podemos colocar que mientras la + +00:02:44.515 --> 00:02:47.555 +temperatura actual sea diferente a la del usuario, + +00:02:47.555 --> 00:02:49.955 +hacemos la condición. Mientras la temperatura sea diferente + +00:02:49.955 --> 00:02:52.504 +a la del usuario, si temperatura es menor + +00:02:52.504 --> 00:02:55.099 +que el usuario, calentamos y, si no, enfriamos. + +00:02:55.239 --> 00:02:57.080 +Y, sin importar cualquiera de las 2 que + +00:02:57.080 --> 00:02:59.239 +pase, sabemos que la temperatura es diferente, así + +00:02:59.239 --> 00:03:02.200 +que le decimos ventilar. Y este ciclo solamente + +00:03:02.200 --> 00:03:03.799 +va a ocurrir en los casos en los + +00:03:03.799 --> 00:03:06.120 +que la temperatura sea diferente y, si no, + +00:03:06.120 --> 00:03:08.945 +lo sacamos, y esto ocurre cada segundo en + +00:03:08.945 --> 00:03:11.505 +el ciclo de un aire acondicionado. Hay algoritmos + +00:03:11.505 --> 00:03:13.505 +más simples. Si tienes un hervidor que tiene + +00:03:13.505 --> 00:03:15.685 +que hervir el agua hasta 100 grados centígrados, + +00:03:15.985 --> 00:03:17.345 +lo que hace es que, una vez está + +00:03:17.345 --> 00:03:19.550 +lleno de agua, al oprimir el botón, muy + +00:03:19.550 --> 00:03:22.350 +probablemente lo que pasa es que internamente la + +00:03:22.350 --> 00:03:26.670 +electrónica de tu hervidor dice, mientras el agua + +00:03:26.670 --> 00:03:29.950 +sea de menor temperatura a 100 grados, mantén + +00:03:29.950 --> 00:03:32.834 +el elemento de calor calentando, de tal manera + +00:03:32.834 --> 00:03:34.835 +que, cuando sea mayor de 100 grados, ese + +00:03:34.835 --> 00:03:37.555 +mientras deja de funcionar y, al terminar de + +00:03:37.555 --> 00:03:40.115 +funcionar el ciclo, se apaga. Esa función de + +00:03:40.115 --> 00:03:42.275 +apagarse cuando el agua sea mayor de 100 + +00:03:42.275 --> 00:03:45.115 +grados, o calentar mientras el agua sea menor + +00:03:45.115 --> 00:03:47.489 +a 100 grados, es un algoritmo. Un algoritmo + +00:03:47.870 --> 00:03:50.690 +es, entonces, una serie de instrucciones, una expresión + +00:03:50.830 --> 00:03:53.230 +matemática de las órdenes que se le puede + +00:03:53.230 --> 00:03:55.629 +dar a un sistema. Un lenguaje de programación + +00:03:55.629 --> 00:03:58.989 +no es necesariamente un algoritmo. Los lenguajes de + +00:03:58.989 --> 00:04:01.504 +programación son un lenguaje a través del cual + +00:04:01.504 --> 00:04:04.144 +los algoritmos se expresan, pero tú puedes expresar + +00:04:04.144 --> 00:04:06.305 +un algoritmo como quieras. Cuando te dan una + +00:04:06.305 --> 00:04:08.625 +serie de instrucciones para completar una tarea, una + +00:04:08.625 --> 00:04:10.465 +serie de procesos que tienes que hacer en + +00:04:10.465 --> 00:04:12.944 +tu trabajo, esos que están haciendo es darte + +00:04:12.944 --> 00:04:15.000 +un algoritmo para que tú ejecutes, y tú + +00:04:15.000 --> 00:04:18.621 +no eres un lenguaje de programación. Los lenguajes + +00:04:18.621 --> 00:04:21.880 +de programación son mecanismos escritos típicamente en un + +00:04:21.880 --> 00:04:25.400 +lenguaje inglés adaptado, como por ejemplo JavaScript, Python, + +00:04:25.400 --> 00:04:28.474 +C más más Visual Basic, que transforman estas + +00:04:28.474 --> 00:04:31.275 +instrucciones en el lenguaje de la máquina. El + +00:04:31.275 --> 00:04:33.115 +lenguaje de la máquina es el lenguaje que + +00:04:33.115 --> 00:04:35.615 +usan los chips para hacer estas operaciones matemáticas. + +00:04:35.914 --> 00:04:37.675 +Este lenguaje, lo hemos visto en otras clases, + +00:04:37.675 --> 00:04:40.955 +es conocido como assembler o lenguaje ensamblado o + +00:04:40.955 --> 00:04:45.040 +ensamblador. En nuestra era moderna, los lenguajes corren + +00:04:45.040 --> 00:04:47.440 +en el chip de 2 maneras. Hay un + +00:04:47.440 --> 00:04:50.400 +tipo de lenguajes, como por ejemplo Java 0C0C + +00:04:50.400 --> 00:04:53.600 +más más, que cuando se transforman al lenguaje + +00:04:53.600 --> 00:04:56.255 +de máquina, pasan por un proceso llamado compilación. + +00:04:57.035 --> 00:05:00.155 +La compilación es transformar ese lenguaje legible por + +00:05:00.155 --> 00:05:02.315 +humanos en el lenguaje de ceros y unos + +00:05:02.315 --> 00:05:04.895 +de la CPU. El resultado de la compilación + +00:05:05.115 --> 00:05:07.970 +es un archivo ejecutable. En Windows son los + +00:05:07.970 --> 00:05:11.490 +archivos que tienen extensión punto exe. En Linux + +00:05:11.490 --> 00:05:13.570 +o en Mac son los archivos que tienen + +00:05:13.570 --> 00:05:17.009 +permisos de ejecución, y son los ejecutables, las + +00:05:17.009 --> 00:05:19.889 +aplicaciones que arrancan como una app que corren + +00:05:19.889 --> 00:05:22.285 +como un mecanismo del sistema. El otro mecanismo + +00:05:22.285 --> 00:05:24.305 +de ejecución de un lenguaje se llaman lenguajes + +00:05:24.685 --> 00:05:28.525 +interpretados o interpretación. Cuando tú corres JavaScript en + +00:05:28.525 --> 00:05:30.685 +el navegador o cuando usas algunos lenguajes de + +00:05:30.685 --> 00:05:33.885 +scripting, como por ejemplo Python, estos lenguajes llamados + +00:05:33.885 --> 00:05:36.870 +de scripting son lenguajes que se interpretan sobre + +00:05:36.870 --> 00:05:38.789 +la marcha, es decir, se van leyendo línea + +00:05:38.789 --> 00:05:40.949 +a línea, y en la memoria RAM la + +00:05:40.949 --> 00:05:44.069 +computadora y su intérprete, el intérprete de JavaScript, + +00:05:44.069 --> 00:05:46.229 +por ejemplo, es el navegador, o el intérprete + +00:05:46.229 --> 00:05:49.125 +de Python es el sistema de ejecución en + +00:05:49.125 --> 00:05:51.305 +tiempo real de Python, que se llama Python. + +00:05:51.764 --> 00:05:53.764 +Ellos lo que hacen es transformar línea en + +00:05:53.764 --> 00:05:55.525 +línea el código a código que corre en + +00:05:55.525 --> 00:05:58.405 +el chip, pero sin compilarlo. De hecho, existe + +00:05:58.405 --> 00:06:00.585 +una técnica muy interesante que se llama JIT, + +00:06:00.725 --> 00:06:02.949 +Just in Time Compilling, que lo que hace + +00:06:02.949 --> 00:06:06.870 +es compilar justo antes de ejecutar, corriéndolo todo + +00:06:06.870 --> 00:06:08.789 +en la memoria RAM de una manera segura, + +00:06:08.789 --> 00:06:10.710 +pero esos son términos avanzados de programación que + +00:06:10.710 --> 00:06:13.030 +vas a ir aprendiendo después. Te recomiendo mucho + +00:06:13.030 --> 00:06:15.750 +que empieces con cualquier lenguaje. Tenemos 3 cursos + +00:06:15.750 --> 00:06:17.430 +que te convienen en este momento, el curso + +00:06:17.430 --> 00:06:19.965 +de programación básica, el curso de Python o + +00:06:19.965 --> 00:06:22.965 +el curso de JavaScript. Sea el que sea, + +00:06:22.965 --> 00:06:24.445 +aprender un lenguaje de programación te va a + +00:06:24.445 --> 00:06:26.764 +convenir mucho. Solamente recuerda que no se trata + +00:06:26.764 --> 00:06:29.164 +de casarte con un lenguaje. Los lenguajes de + +00:06:29.164 --> 00:06:31.425 +programación cambian. No hay un lenguaje de programación + +00:06:31.485 --> 00:06:33.360 +mejor que otro, no porque tú sepas 2, + +00:06:33.360 --> 00:06:35.280 +3, 5, 10 lenguajes te hace mejor o + +00:06:35.280 --> 00:06:37.520 +peor ingeniero, es lo que haces con los + +00:06:37.520 --> 00:06:41.220 +lenguajes y aprender lenguajes es trivial, realmente trivial. + +00:06:41.360 --> 00:06:43.300 +En el momento en el que dominas 2 + +00:06:43.360 --> 00:06:45.600 +lenguajes, puedes dominar 3, 4, 5 o 10 + +00:06:45.600 --> 00:06:48.105 +o los que quieras. No se trata de + +00:06:48.105 --> 00:06:49.945 +aprender muchos lenguajes y no hay lenguajes que + +00:06:49.945 --> 00:06:52.925 +paguen mejor que otros, es simplemente que sepas + +00:06:52.985 --> 00:06:55.785 +cómo solucionar cualquier problema a través de algoritmos + +00:06:55.785 --> 00:06:58.745 +y que esos algoritmos sepas expresarlos en diferentes + +00:06:58.745 --> 00:07:01.953 +lenguajes. Ten curiosidad intelectual y no te cases + +00:07:01.953 --> 00:07:03.253 +con ningún lenguaje. diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/01-Computaci\303\263n B\303\241sica/11-Resumen.html" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/01-Computaci\303\263n B\303\241sica/11-Resumen.html" new file mode 100644 index 0000000000000000000000000000000000000000..aceb7d416e50f9e3b3dfcba52ed9abfa44c7dd0f --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/01-Computaci\303\263n B\303\241sica/11-Resumen.html" @@ -0,0 +1,156 @@ + + + + + + + Qué es un algoritmo y qué es un lenguaje de programación + + + +
+
+

Resumen

La programación es el arte de resolver problemas mediante instrucciones precisas. Los algoritmos son la base fundamental de cualquier solución computacional, permitiéndonos transformar problemas complejos en secuencias lógicas de pasos. Comprender qué son los algoritmos y cómo se implementan en diferentes lenguajes de programación es esencial para cualquier persona interesada en el mundo tecnológico actual.

+

¿Qué es un algoritmo y cómo funciona en sistemas cotidianos?

+

Un algoritmo es un conjunto de pasos lógicos claramente definidos de manera no ambigua para resolver un problema o lograr un objetivo específico. Estos procedimientos están presentes en muchos dispositivos que utilizamos diariamente, aunque no siempre somos conscientes de ello.

+

Para entender mejor este concepto, podemos analizar el funcionamiento de un sistema de aire acondicionado. Este dispositivo, aunque parece complejo, opera siguiendo un algoritmo relativamente simple:

+
    +
  1. Mide constantemente la temperatura actual mediante un termostato.
  2. +
  3. Compara esta temperatura con la deseada por el usuario.
  4. +
  5. Decide si debe calentar o enfriar el aire.
  6. +
  7. Ventila el aire acondicionado cuando sea necesario.
  8. +
+

Expresado de forma algorítmica, podríamos definirlo así:

+
Variables:
+- temperatura (temperatura actual, ejemplo: 20°C)
+- usuario (temperatura deseada, ejemplo: 24°C)
+
+Ciclo (cada segundo):
+  Mientras temperatura ≠ usuario:
+    Si temperatura < usuario:
+      Calentar aire
+    Si no:
+      Enfriar aire
+    Ventilar
+
+

Este algoritmo simple ilustra cómo un sistema toma decisiones basadas en condiciones específicas. El ciclo continuará ejecutándose hasta que la temperatura actual coincida con la deseada, momento en el cual dejará de ventilar para mantener la temperatura estable.

+

Algoritmos en otros dispositivos cotidianos

+

Los algoritmos están presentes en muchos otros dispositivos que usamos diariamente. Por ejemplo, un hervidor eléctrico utiliza un algoritmo muy sencillo:

+
Mientras temperatura_agua < 100°C:
+  Mantener elemento calentador encendido
+Si temperatura_agua ≥ 100°C:
+  Apagar elemento calentador
+
+

Este ejemplo demuestra que un algoritmo es esencialmente una serie de instrucciones o una expresión matemática de órdenes que se le puede dar a un sistema. La belleza de los algoritmos radica en su capacidad para resolver problemas complejos mediante pasos simples y lógicos.

+

¿Cuál es la diferencia entre algoritmos y lenguajes de programación?

+

Es importante distinguir entre algoritmos y lenguajes de programación, ya que son conceptos relacionados pero diferentes:

+
    +
  • Algoritmo: Es la serie de instrucciones lógicas para resolver un problema, independiente del lenguaje en que se exprese.
  • +
  • Lenguaje de programación: Es el medio a través del cual expresamos los algoritmos para que las computadoras puedan entenderlos.
  • +
+

Los lenguajes de programación son mecanismos escritos típicamente en un lenguaje inglés adaptado (como JavaScript, Python, C++, Visual Basic) que transforman las instrucciones algorítmicas en lenguaje de máquina, que es el que realmente entienden los chips de computadora.

+

Un algoritmo puede expresarse de muchas formas, no necesariamente en código. Cuando recibes instrucciones para completar una tarea en tu trabajo, esencialmente te están dando un algoritmo para que ejecutes, y tú no eres un lenguaje de programación.

+

Formas de ejecución de los lenguajes de programación

+

En la era moderna, los lenguajes de programación se ejecutan en los procesadores principalmente de dos maneras:

+
    +
  1. +

    Lenguajes compilados: Lenguajes como C, C++ o Java pasan por un proceso llamado compilación, que transforma el código legible por humanos en lenguaje de máquina (ceros y unos). El resultado es un archivo ejecutable (.exe en Windows o archivos con permisos de ejecución en Linux/Mac).

    +
  2. +
  3. +

    Lenguajes interpretados: Lenguajes como JavaScript o Python se interpretan sobre la marcha. Un intérprete (como el navegador para JavaScript) lee el código línea por línea y lo transforma en instrucciones que el procesador puede ejecutar, sin crear un archivo ejecutable separado.

    +
  4. +
+

Existe también una técnica avanzada llamada JIT (Just-In-Time Compiling), que compila el código justo antes de ejecutarlo, todo en la memoria RAM, combinando ventajas de ambos enfoques.

+

¿Por qué es importante no "casarse" con un lenguaje de programación?

+

Al iniciar en el mundo de la programación, es recomendable comenzar con cualquier lenguaje que te resulte accesible, ya sea a través de cursos de programación básica, Python o JavaScript. Sin embargo, es fundamental entender que lo importante no es el lenguaje en sí, sino la capacidad de resolver problemas mediante algoritmos.

+

Los lenguajes de programación cambian y evolucionan constantemente. No existe un "mejor" lenguaje, y dominar muchos lenguajes no necesariamente te hace mejor programador. Lo verdaderamente valioso es:

+
    +
  • Saber cómo solucionar problemas a través de algoritmos
  • +
  • Poder expresar esos algoritmos en diferentes lenguajes
  • +
  • Mantener la curiosidad intelectual
  • +
+

Una vez que dominas un par de lenguajes, aprender otros se vuelve significativamente más sencillo, ya que los conceptos fundamentales son transferibles. Lo que realmente importa es tu capacidad para pensar de manera lógica y algorítmica, no la sintaxis específica de un lenguaje particular.

+

La programación es un campo en constante evolución, y los profesionales más exitosos son aquellos que se adaptan y aprenden continuamente, sin aferrarse a una única herramienta o tecnología.

+

Los algoritmos son el corazón de la programación, permitiéndonos resolver problemas complejos mediante instrucciones precisas. Comprender esta base te ayudará enormemente en tu camino como programador, independientemente del lenguaje que elijas para expresar tus soluciones. ¿Qué algoritmos utilizas en tu vida diaria sin darte cuenta? ¿Has intentado expresarlos de manera formal? Comparte tus experiencias y sigamos aprendiendo juntos.

+
+
+ + \ No newline at end of file diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/02-Redes e Internet/01-Direcciones IP y el protocolo de Internet.mp4" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/02-Redes e Internet/01-Direcciones IP y el protocolo de Internet.mp4" new file mode 100644 index 0000000000000000000000000000000000000000..24b403d070b1e27540524919c9e981982e2db777 --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/02-Redes e Internet/01-Direcciones IP y el protocolo de Internet.mp4" @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:369764b4ef017a4bd110fc6b81b8feee76339aa7e4f2723625072237520690df +size 223927229 diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/02-Redes e Internet/01-Direcciones IP y el protocolo de Internet.vtt" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/02-Redes e Internet/01-Direcciones IP y el protocolo de Internet.vtt" new file mode 100644 index 0000000000000000000000000000000000000000..a9c8922e9e1043ed1aaf623d3fb12a7b90ba4d72 --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/02-Redes e Internet/01-Direcciones IP y el protocolo de Internet.vtt" @@ -0,0 +1,577 @@ +WEBVTT + +00:00:00.160 --> 00:00:01.920 +Así como tu casa tiene una dirección como + +00:00:01.920 --> 00:00:04.120 +carrera un 2 3 de la calle 8, + +00:00:04.120 --> 00:00:06.319 +todas las computadoras en Internet y en una + +00:00:06.319 --> 00:00:08.320 +red local también tienen una dirección. Estas se + +00:00:08.320 --> 00:00:11.920 +conocen como direcciones IP y, típicamente, vienen como + +00:00:11.920 --> 00:00:14.275 +números, que son 4 grupos de números, como + +00:00:14.275 --> 00:00:18.675 +128.10 0.2 0.5. ¿Por qué son 4 números? + +00:00:18.675 --> 00:00:20.275 +¿Por qué no son 5? ¿Por qué no + +00:00:20.275 --> 00:00:21.875 +son 6? ¿Y por qué cada 1 de + +00:00:21.875 --> 00:00:24.595 +estos números va de 0 a 255 y + +00:00:24.595 --> 00:00:26.429 +no más allá? ¿Y por qué ya no + +00:00:26.429 --> 00:00:28.750 +podemos usar estos 4 números fuera de una + +00:00:28.750 --> 00:00:31.550 +red local porque en Internet necesitamos usar otro + +00:00:31.550 --> 00:00:33.710 +tipo de números? Son cosas que, con el + +00:00:33.710 --> 00:00:35.430 +conocimiento que se obtenía en este curso Fundamentos + +00:00:35.430 --> 00:00:38.210 +de Ingeniería de Software, ya deberías poder extraer, + +00:00:38.315 --> 00:00:40.395 +pero observa. Recuerda que en una computadora todos + +00:00:40.395 --> 00:00:42.475 +los números son ceros y unos, un 0 + +00:00:42.475 --> 00:00:45.055 +o un 1 es un bit, y un + +00:00:45.275 --> 00:00:48.315 +grupo de esos bits es un byte. Los + +00:00:48.315 --> 00:00:51.195 +bytes son grupos de 8 bits, y hasta + +00:00:51.195 --> 00:00:53.579 +ahora así funcionan las computadoras, todo en la + +00:00:53.579 --> 00:00:56.460 +computación funciona muy parecido. En un número IP, + +00:00:56.460 --> 00:00:59.519 +en una dirección IP, IP significa Internet Protocol + +00:00:59.660 --> 00:01:02.379 +o protocolo de Internet, lo que hacíamos fue + +00:01:02.379 --> 00:01:05.280 +organizar estos números en grupos de 4 numeritos. + +00:01:05.685 --> 00:01:08.725 +Estos 4 numeritos tienen diferentes significados, pero principalmente + +00:01:08.725 --> 00:01:12.485 +son dónde está ubicada nuestra computadora. ¿Por qué + +00:01:12.485 --> 00:01:16.025 +son entonces estos números? Porque son 4 bytes, + +00:01:16.405 --> 00:01:20.100 +4 números de 8 bits. Con 8 bits, + +00:01:20.100 --> 00:01:22.580 +¿cuál es el máximo número que podemos representar? + +00:01:22.580 --> 00:01:26.520 +Es un 255. Son números del 0 al + +00:01:26.740 --> 00:01:30.420 +255, 256 números. El 0 es un número + +00:01:30.420 --> 00:01:32.274 +y también cuenta. Esa es la razón por + +00:01:32.274 --> 00:01:36.435 +la que tú solamente tienes 255, 155, 155, + +00:01:36.435 --> 00:01:38.914 +155 como el máximo número dentro de una + +00:01:38.914 --> 00:01:41.954 +IP. Si nosotros tomáramos esos 4 números, que + +00:01:41.954 --> 00:01:44.755 +son 4 bytes, y los expandiéramos solamente a + +00:01:44.755 --> 00:01:47.149 +ceros y unos, ¿cuántos ceros y uniamos tendríamos? + +00:01:47.450 --> 00:01:50.009 +Si son cada 1 8 bits y son + +00:01:50.009 --> 00:01:52.409 +4 grupos, es 8 por 4. Es decir, + +00:01:52.409 --> 00:01:55.530 +tendríamos 32 bits. Eso significa que las direcciones + +00:01:55.530 --> 00:01:58.490 +y p tienen un máximo de 32 bits, + +00:01:58.490 --> 00:02:02.855 +32 ceros y unos, que visualmente agrupamos en + +00:02:02.855 --> 00:02:06.775 +4 números decimales normales expresados por su valor + +00:02:06.775 --> 00:02:09.975 +en bytes divididos por un punto. Están separados + +00:02:09.975 --> 00:02:12.640 +cada 1 por un 0.32 bits. Todo esto + +00:02:12.640 --> 00:02:14.080 +fue construido en la época en la que + +00:02:14.080 --> 00:02:16.880 +Internet todavía era un experimento militar de una + +00:02:16.880 --> 00:02:18.900 +organización que es la Agencia para el Desarrollo + +00:02:19.040 --> 00:02:21.520 +y de Investigación Avanzado de la Defensa, conocida + +00:02:21.520 --> 00:02:24.400 +como DARPA. DARPA se inventa esta estructura como + +00:02:24.400 --> 00:02:26.720 +la estructura de prueba para Internet, pero luego + +00:02:26.720 --> 00:02:29.755 +Internet se vuelve súper popular y simplemente lo + +00:02:29.755 --> 00:02:33.035 +mantienen hasta que los números se acaban. Con + +00:02:33.035 --> 00:02:35.035 +32 bits, ¿cuánto es la máxima cantidad de + +00:02:35.035 --> 00:02:39.855 +números que podemos guardar? Son 300004000 de números. + +00:02:40.140 --> 00:02:43.099 +Y como cada dispositivo conectado a Internet tiene + +00:02:43.099 --> 00:02:44.939 +que tener un número único, pues ya hace + +00:02:44.939 --> 00:02:47.739 +rato que tenemos más de 300004000 de dispositivos + +00:02:47.739 --> 00:02:51.260 +conectados a Internet. Eso significa cada servidor, cada + +00:02:51.260 --> 00:02:55.125 +teléfono, cada computadora, cada teléfono inteligente, cada reloj + +00:02:55.225 --> 00:03:00.125 +inteligente, cada todo requiere una dirección IP única. + +00:03:00.345 --> 00:03:03.145 +Y en Internet en particular, esas direcciones IP + +00:03:03.145 --> 00:03:05.465 +no simplemente cuando apago un computador tengo una + +00:03:05.465 --> 00:03:07.545 +y cuando prendo el computador tengo otra. Algunas, + +00:03:07.545 --> 00:03:09.840 +cuando son sobre todo servidores, tienen que ser + +00:03:10.160 --> 00:03:14.180 +únicas y persistentes, ese es parte del problema. + +00:03:14.319 --> 00:03:16.640 +Entonces, se nos acabaron esas direcciones. El problema + +00:03:16.640 --> 00:03:18.000 +que se nos iban a acabar las direcciones + +00:03:18.000 --> 00:03:20.480 +lo conocemos más o menos desde el 98. + +00:03:20.480 --> 00:03:23.375 +En el 98 encontramos que había la necesidad + +00:03:23.375 --> 00:03:26.175 +de crear otro estándar y se crea el + +00:03:26.175 --> 00:03:28.975 +estándar IPV 6, así como la anterior era + +00:03:28.975 --> 00:03:33.075 +IPV 4, de 4 bytes ahora tenemos 6. + +00:03:33.215 --> 00:03:35.010 +No exactamente, pero ya lo van a ver. + +00:03:35.250 --> 00:03:36.930 +El cuento es que, sabiendo que esto era + +00:03:36.930 --> 00:03:39.569 +un problema, desarrollamos este estándar, y ese estándar + +00:03:39.569 --> 00:03:42.930 +fue ratificado en el 2017. El estándar IPV + +00:03:42.930 --> 00:03:46.209 +6 fue diseñado para tener muchos órdenes de + +00:03:46.209 --> 00:03:49.185 +magnitud más espacio. En vez de tener 32 + +00:03:49.185 --> 00:03:54.004 +bits, lo cuadruplicamos, y ahora tenemos 128 bits. + +00:03:54.305 --> 00:03:57.105 +Al tener muchos 2 bits 4 veces más, + +00:03:57.105 --> 00:03:59.345 +tenemos una mayor cantidad de números porque es + +00:03:59.345 --> 00:04:02.310 +un número mucho más grande. 128 bits representan + +00:04:02.310 --> 00:04:04.923 +muchos más números allá afuera, y las direcciones + +00:04:04.923 --> 00:04:08.049 +también se ven distintas. Una dirección IPB 6, + +00:04:08.049 --> 00:04:11.109 +que es la nueva versión, tiene 8 grupos + +00:04:11.329 --> 00:04:14.310 +de números que se representan con 4 dígitos + +00:04:14.609 --> 00:04:18.315 +hexadecimales. Recuerden que los números hexadecimales son una + +00:04:18.315 --> 00:04:20.955 +base numérica, así como nosotros tenemos la base + +00:04:20.955 --> 00:04:23.195 +binaria, que solamente tiene 0 o 1, o + +00:04:23.195 --> 00:04:25.995 +la base decimal, que tiene dígitos del 0 + +00:04:25.995 --> 00:04:28.875 +al 9. La base hexadecimal tiene dígitos del + +00:04:28.875 --> 00:04:30.980 +0 a la f. Es decir, 0 a + +00:04:30.980 --> 00:04:33.780 +la 9 es 9, la letra a es + +00:04:33.780 --> 00:04:36.420 +10, la letra b es 11, c es + +00:04:36.420 --> 00:04:40.020 +12, d es 13, e es 14 y + +00:04:40.020 --> 00:04:42.100 +f es 15. En IPB 6, o la + +00:04:42.100 --> 00:04:44.251 +versión 6 de las direcciones IP, pasa algo + +00:04:44.251 --> 00:04:45.705 +curioso y es que a veces esos números + +00:04:45.705 --> 00:04:48.505 +son tan grandes que hay pedazos de los + +00:04:48.505 --> 00:04:50.185 +grupos que no se usan, que son puros + +00:04:50.185 --> 00:04:53.705 +ceros. Cuando pasa eso, tendemos a comprimir la + +00:04:53.705 --> 00:04:56.789 +dirección colocando 2 puntos entre esos grupos. Ahí + +00:04:56.789 --> 00:04:58.870 +se puede comprimir y no tener que mostrar + +00:04:58.870 --> 00:05:02.150 +todos esos números 0. DarPPA realmente no creía + +00:05:02.150 --> 00:05:04.470 +que fuera a ser Internet tan popular y + +00:05:04.470 --> 00:05:08.150 +nunca cambiaron la configuración de los números IP + +00:05:08.150 --> 00:05:12.255 +hasta que empezamos a tener demasiadas computadoras conectadas. + +00:05:12.415 --> 00:05:14.175 +Lo largo de los años se han construido + +00:05:14.175 --> 00:05:17.695 +varias organizaciones y autoridades que se dedican a + +00:05:17.695 --> 00:05:21.135 +regular Internet. Una de estas es IAN A, + +00:05:21.135 --> 00:05:24.495 +Internet Assign Numbers Authority, o la Autoridad de + +00:05:24.495 --> 00:05:27.180 +Asignación de Números de Internet. Esta autoridad es + +00:05:27.180 --> 00:05:30.720 +la que termina asignando las direcciones IP permanentes + +00:05:31.180 --> 00:05:34.060 +de diferentes computadoras en el mundo. Recuerden que + +00:05:34.060 --> 00:05:36.060 +todo dispositivo que se conecte a Internet es, + +00:05:36.060 --> 00:05:39.420 +por definición, una computadora. En ocasiones, necesitamos que + +00:05:39.420 --> 00:05:42.085 +estos números IP sean fijos para que siempre + +00:05:42.085 --> 00:05:44.724 +apunten al mismo lugar. Estos números se pueden + +00:05:44.724 --> 00:05:48.085 +comprar y diferentes organizaciones los compran para que, + +00:05:48.085 --> 00:05:50.205 +a partir de ahí, los tengan de una + +00:05:50.205 --> 00:05:52.164 +manera fija. Entonces, por ejemplo, cuando ustedes entran + +00:05:52.164 --> 00:05:53.604 +a Google punto com, ellos siempre van a + +00:05:53.604 --> 00:05:56.485 +tener la misma IP. Diferentes computadoras tienen diferentes + +00:05:56.485 --> 00:05:59.949 +IPs en Internet, pero hay una diferencia entre + +00:05:59.949 --> 00:06:02.509 +tener números IP en Internet y tener números + +00:06:02.509 --> 00:06:05.310 +IP en tu red local. Internet es una + +00:06:05.310 --> 00:06:07.949 +red global, así como la conexión de tu + +00:06:07.949 --> 00:06:09.870 +casa que se conecta a tu router WiFi + +00:06:09.870 --> 00:06:12.645 +es una red local, y ambas redes usan + +00:06:12.705 --> 00:06:15.425 +números IP de una manera distinta. Hay más + +00:06:15.425 --> 00:06:17.585 +detalles de esto en nuestro curso de redes + +00:06:17.585 --> 00:06:19.824 +informáticas que puedes tomar acá mismo y que + +00:06:19.824 --> 00:06:21.824 +están los recursos de la clase, donde puedes + +00:06:21.824 --> 00:06:24.085 +ahondar en más detalles. Pero para hacerlo relativamente + +00:06:24.225 --> 00:06:27.000 +simple, los las conexiones de Internet de tu + +00:06:27.000 --> 00:06:29.900 +casa se conectan al Internet de allá afuera, + +00:06:30.040 --> 00:06:32.860 +al Internet global donde están los servidores y + +00:06:33.240 --> 00:06:35.660 +las diferentes redes sociales, los sistemas de mensajería, + +00:06:35.720 --> 00:06:37.000 +las páginas web, a todo lo que tú + +00:06:37.000 --> 00:06:40.135 +conectas, pero internamente dentro de tu casa, cuando + +00:06:40.135 --> 00:06:42.935 +te conectas a WiFi, tu teléfono, tu computadora, + +00:06:42.935 --> 00:06:45.655 +tu televisor, cada dispositivo que se conecte a + +00:06:45.655 --> 00:06:49.835 +Internet tiene que tener una IP única. La + +00:06:50.135 --> 00:06:52.855 +IP de tu red local es distinta a + +00:06:52.855 --> 00:06:55.870 +la IP de Internet. En tu red local + +00:06:55.870 --> 00:06:57.310 +puedes tener una IP que en otra red + +00:06:57.310 --> 00:07:00.289 +local sea exactamente igual, pero como solamente ocurre + +00:07:00.830 --> 00:07:03.550 +dentro del dominio, dentro del ámbito de tu + +00:07:03.550 --> 00:07:05.870 +red local, es el único lugar donde realmente + +00:07:05.870 --> 00:07:08.085 +importa ese número, así que te vas a + +00:07:08.085 --> 00:07:10.645 +estar corriendo una IP local. Probablemente tú has + +00:07:10.645 --> 00:07:15.465 +visto una IP que dice 127 0 0.1. + +00:07:15.485 --> 00:07:20.165 +Esta IP es internacionalmente estandarizada como la IP + +00:07:20.165 --> 00:07:20.695 +de tu propio dispositivo, también conocida como local + +00:07:20.695 --> 00:07:22.650 +host. Esto es básicamente una dispositivo, también conocida + +00:07:22.650 --> 00:07:26.010 +como local host. Esto es básicamente un apuntador + +00:07:26.010 --> 00:07:27.930 +de dirección de Internet que, sin importar en + +00:07:27.930 --> 00:07:31.290 +la computadora donde estés, siempre apunta a tu + +00:07:31.290 --> 00:07:35.944 +misma computadora desde donde estás usando ese 127 + +00:07:35.944 --> 00:07:39.224 +0 0.1. Sin importar las diferentes IPs que + +00:07:39.224 --> 00:07:41.865 +tenga tu red local, cuando tu televisor, tu + +00:07:41.865 --> 00:07:44.525 +teléfono o tu computadora necesitan conectarse a Internet, + +00:07:44.664 --> 00:07:47.740 +usan sus direcciones de IP local para ir + +00:07:47.740 --> 00:07:49.940 +al router WiFi de tu casa y al + +00:07:49.940 --> 00:07:52.440 +módem que se conecte a Internet, y eso + +00:07:53.300 --> 00:07:56.600 +transforma la petición en la IP de Internet + +00:07:56.660 --> 00:07:58.980 +de tu casa. Ese paquete de la IP + +00:07:58.980 --> 00:08:01.975 +de Internet de tu casa sale a Internet, + +00:08:02.115 --> 00:08:06.035 +recupera el dato y tu router WiFi sabe + +00:08:06.035 --> 00:08:07.715 +de dónde vino la petición de ese paquete + +00:08:07.715 --> 00:08:10.595 +y lo redirecciona a la IP interna de + +00:08:10.595 --> 00:08:13.635 +tu casa. Esto lo hace internamente a través + +00:08:13.635 --> 00:08:17.189 +de algo llamado un NAT. NAT significa Network + +00:08:17.330 --> 00:08:20.289 +address translation, y es una tecnología interna de + +00:08:20.289 --> 00:08:23.729 +todos los enrutadores o routers para transformar las + +00:08:23.729 --> 00:08:26.050 +peticiones de una red local hacia las peticiones + +00:08:26.050 --> 00:08:28.689 +de otra red externa, que típicamente es Internet. + +00:08:28.689 --> 00:08:31.125 +Es importante cuando estás desarrollando software que entiendas + +00:08:31.125 --> 00:08:33.205 +los números IP, porque de esa manera tú + +00:08:33.205 --> 00:08:35.044 +puedes saber de dónde viene un mensaje, si + +00:08:35.044 --> 00:08:37.145 +tienes un problema en el desarrollo del software, + +00:08:37.285 --> 00:08:40.505 +y simplemente es conocimiento básico de depuración y + +00:08:40.565 --> 00:08:42.405 +entendimiento de sistemas conectados, que hoy en día + +00:08:42.405 --> 00:08:44.345 +son la gran mayoría de sistemas que programamos. + +00:08:44.640 --> 00:08:47.360 +Por otro lado, nosotros cuando programamos casi nunca + +00:08:47.360 --> 00:08:49.840 +usamos realmente los números IP, sino que a + +00:08:49.840 --> 00:08:52.400 +cada IP le asignamos un nombre. Estos se + +00:08:52.400 --> 00:08:54.240 +conocen como nombre de dominio y es lo + +00:08:54.240 --> 00:08:55.540 +que viene en la próxima clase. diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/02-Redes e Internet/01-Lecturas recomendadas.txt" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/02-Redes e Internet/01-Lecturas recomendadas.txt" new file mode 100644 index 0000000000000000000000000000000000000000..7f542cc1fb1450f2ab7e33a51fe2b5e1ae1778b0 --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/02-Redes e Internet/01-Lecturas recomendadas.txt" @@ -0,0 +1 @@ +https://platzi.com/cursos/redes/ diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/02-Redes e Internet/01-Resumen.html" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/02-Redes e Internet/01-Resumen.html" new file mode 100644 index 0000000000000000000000000000000000000000..381cd8f53afc7b0c589a1b1d63651738ac049ab0 --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/02-Redes e Internet/01-Resumen.html" @@ -0,0 +1,151 @@ + + + + + + + Direcciones IP y el protocolo de Internet + + + +
+
+

Resumen

La comprensión de las direcciones IP es fundamental para cualquier persona interesada en el mundo de la tecnología y la programación. Estas direcciones son como el "DNI" de cada dispositivo conectado a una red, permitiendo la comunicación entre ellos. A medida que Internet ha evolucionado, también lo han hecho los sistemas de direccionamiento, pasando de un modelo limitado a uno con capacidad prácticamente ilimitada.

+

¿Qué son las direcciones IP y cómo funcionan?

+

Las direcciones IP (Internet Protocol) son identificadores numéricos que permiten ubicar dispositivos en una red. Así como tu casa tiene una dirección física (carrera, calle, número), cada computadora conectada a Internet o a una red local posee una dirección IP única.

+

En su formato tradicional (IPv4), estas direcciones se componen de cuatro grupos de números separados por puntos, como por ejemplo: 128.100.20.5. Cada uno de estos grupos puede contener un valor entre 0 y 255.

+

¿Por qué este formato específico?

+

La estructura de las direcciones IPv4 no es arbitraria, sino que está fundamentada en la forma en que las computadoras procesan la información:

+
    +
  • Cada grupo representa un byte (8 bits)
  • +
  • Con 8 bits solo se pueden representar 256 valores diferentes (0-255)
  • +
  • En total, una dirección IPv4 utiliza 32 bits (4 bytes)
  • +
  • Matemáticamente, esto permite aproximadamente 4.300 millones de direcciones únicas
  • +
+

Esta arquitectura fue diseñada cuando Internet era apenas un experimento militar desarrollado por DARPA (Agencia para el Desarrollo y de Investigación Avanzado de la Defensa). En ese momento, nadie imaginó que Internet crecería hasta necesitar más de 4.300 millones de direcciones.

+

El problema del agotamiento de direcciones

+

A finales de los años 90, se hizo evidente que las direcciones IPv4 se agotarían. Cada dispositivo conectado a Internet requiere una dirección única: servidores, computadoras, teléfonos inteligentes, relojes inteligentes y una creciente variedad de dispositivos IoT.

+

Para solucionar este problema, se desarrolló un nuevo estándar: IPv6, que fue ratificado en 2017. Este nuevo protocolo amplía dramáticamente el espacio de direcciones disponibles:

+
    +
  • Utiliza 128 bits (cuatro veces más que IPv4)
  • +
  • Se representa con 8 grupos de 4 dígitos hexadecimales
  • +
  • Ejemplo: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
  • +
  • Para simplificar, los grupos de ceros pueden comprimirse: 2001:0db8:85a3::8a2e:0370:7334
  • +
+

Con IPv6, el número de direcciones disponibles es astronómicamente mayor, suficiente para asignar múltiples direcciones a cada átomo en la superficie de la Tierra.

+

¿Cómo se administran las direcciones IP?

+

La asignación de direcciones IP no es un proceso aleatorio. Existe una organización llamada IANA (Internet Assigned Numbers Authority) que se encarga de distribuir y administrar estos recursos.

+

Direcciones públicas vs. direcciones privadas

+

Es importante distinguir entre dos tipos de direcciones IP:

+
    +
  1. +

    Direcciones públicas: Son visibles en Internet y deben ser únicas a nivel global. Estas direcciones son asignadas por proveedores de servicios de Internet (ISP) o pueden ser compradas por organizaciones.

    +
  2. +
  3. +

    Direcciones privadas: Se utilizan dentro de redes locales (como tu red WiFi doméstica) y pueden repetirse en diferentes redes locales sin causar conflictos.

    +
  4. +
+

Dentro de una red local, cada dispositivo (teléfono, computadora, televisor) recibe una dirección IP privada. Cuando estos dispositivos necesitan comunicarse con Internet, utilizan un proceso llamado NAT (Network Address Translation).

+

El papel del NAT en las redes modernas

+

El NAT es una tecnología implementada en los routers que permite:

+
    +
  • Traducir direcciones IP privadas a la dirección IP pública de tu conexión a Internet
  • +
  • Rastrear qué dispositivo interno realizó cada solicitud
  • +
  • Dirigir las respuestas al dispositivo correcto dentro de la red local
  • +
+

Este mecanismo ha sido fundamental para extender la vida útil de IPv4, ya que permite que múltiples dispositivos compartan una única dirección IP pública.

+

La dirección especial: 127.0.0.1

+

Existe una dirección IP especial que todo programador debe conocer: 127.0.0.1, también conocida como "localhost". Esta dirección siempre apunta al propio dispositivo, independientemente de qué computadora estés utilizando. Es extremadamente útil durante el desarrollo de software para probar aplicaciones localmente.

+

¿Por qué es importante entender las direcciones IP?

+

Para los desarrolladores de software, comprender el funcionamiento de las direcciones IP es esencial por varias razones:

+
    +
  • Depuración: Identificar el origen de mensajes o problemas en aplicaciones conectadas
  • +
  • Seguridad: Implementar restricciones basadas en direcciones IP
  • +
  • Configuración: Establecer correctamente servidores y servicios en red
  • +
  • Optimización: Mejorar el rendimiento de aplicaciones distribuidas
  • +
+

Aunque en la programación moderna rara vez se trabaja directamente con direcciones IP (se utilizan nombres de dominio), el conocimiento subyacente sigue siendo valioso para cualquier ingeniero de software.

+

Entender cómo funcionan las direcciones IP es solo el primer paso. En el desarrollo de aplicaciones modernas, estas direcciones numéricas suelen ocultarse detrás de nombres de dominio más amigables, un tema que se abordará en próximas lecciones.

+

¿Has tenido alguna experiencia configurando redes o trabajando con direcciones IP en tus proyectos? Comparte tus experiencias en los comentarios y continúa aprendiendo sobre estos fundamentos esenciales de la ingeniería de software.

+
+
+ + \ No newline at end of file diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/02-Redes e Internet/02-Lecturas recomendadas.txt" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/02-Redes e Internet/02-Lecturas recomendadas.txt" new file mode 100644 index 0000000000000000000000000000000000000000..adc69828be66519bb8420504b3eb2fb4b1c6523b --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/02-Redes e Internet/02-Lecturas recomendadas.txt" @@ -0,0 +1 @@ +https://www.namecheap.com/ diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/02-Redes e Internet/02-Nombres de dominio DNS y c\303\263mo obtener un com.mp4" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/02-Redes e Internet/02-Nombres de dominio DNS y c\303\263mo obtener un com.mp4" new file mode 100644 index 0000000000000000000000000000000000000000..a76f020e890f5acf09f0a12e2a8fad686e092943 --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/02-Redes e Internet/02-Nombres de dominio DNS y c\303\263mo obtener un com.mp4" @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d935f1cada37d04672f0b6c7423500af6b6e4d6515b4c89f5e31086d94e7f677 +size 193600810 diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/02-Redes e Internet/02-Nombres de dominio DNS y c\303\263mo obtener un com.vtt" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/02-Redes e Internet/02-Nombres de dominio DNS y c\303\263mo obtener un com.vtt" new file mode 100644 index 0000000000000000000000000000000000000000..363f05a2a4d3f0609f4eae9a4e7bc91ef4739baa --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/02-Redes e Internet/02-Nombres de dominio DNS y c\303\263mo obtener un com.vtt" @@ -0,0 +1,703 @@ +WEBVTT + +00:00:00.399 --> 00:00:02.960 +Como todas las computadoras, servidores y sistemas que + +00:00:02.960 --> 00:00:05.200 +están conectados a Internet tienen un número IP, + +00:00:05.200 --> 00:00:07.839 +y ese número es una larga cantidad de + +00:00:07.839 --> 00:00:10.719 +números que nadie se acuerda. Necesitamos una base + +00:00:10.719 --> 00:00:13.595 +de datos donde ponerles nombre. Así, a estos + +00:00:13.595 --> 00:00:15.435 +números, que son un montón de numeritos, les + +00:00:15.435 --> 00:00:20.235 +asignamos un nombre específico. Esos nombres inicialmente venían + +00:00:20.235 --> 00:00:22.395 +en un archivo que se compartía en los + +00:00:22.395 --> 00:00:25.215 +diferentes proveedores de Internet, un archivo llamado hosts. + +00:00:25.370 --> 00:00:28.570 +Pero eso no escala, porque ahora tenemos 1000000 + +00:00:28.570 --> 00:00:30.570 +y 1000000 y 1000000 de estos nombres. Así + +00:00:30.570 --> 00:00:33.770 +que construimos una base de datos distribuida que + +00:00:33.770 --> 00:00:36.730 +está dominada por una serie de estándares y + +00:00:36.730 --> 00:00:39.705 +mecanismos internacionales. Esa base de datos se conoce + +00:00:39.705 --> 00:00:43.725 +como los nombres de dominio o DNS, Domain + +00:00:43.785 --> 00:00:46.265 +Name Servers. El sistema de nombres de dominio, + +00:00:46.265 --> 00:00:48.285 +o Domain Name System, es lo que permite + +00:00:48.345 --> 00:00:51.465 +que un número prácticamente aleatorio con las reglas + +00:00:51.465 --> 00:00:54.390 +de IPB 4 o IPB 6 sea exactamente + +00:00:54.390 --> 00:00:57.110 +equivalente a cosas como platzi punto com. Los + +00:00:57.110 --> 00:00:59.850 +nombres de dominio siguen algunas reglas, típicamente solo + +00:01:00.470 --> 00:01:04.470 +permiten letras del idioma inglés, aunque últimamente se + +00:01:04.470 --> 00:01:07.190 +pueden agregar eñes o tildes, aunque muy poca + +00:01:07.190 --> 00:01:10.465 +gente lo usa. Típicamente un nombre de dominio + +00:01:10.465 --> 00:01:12.225 +no empieza con un número, tiene que empezar + +00:01:12.225 --> 00:01:13.905 +con una letra, pero de nuevo también en + +00:01:13.905 --> 00:01:16.564 +ocasiones es posible, y los nombres de dominio + +00:01:17.024 --> 00:01:20.064 +no distinguen entre mayúsculas y minúsculas. En ese + +00:01:20.064 --> 00:01:22.579 +sentido son relativamente similares a los nombres de + +00:01:22.579 --> 00:01:25.539 +variable en varios lenguajes de programación. Una vez + +00:01:25.539 --> 00:01:27.299 +tienes tu nombre de dominio, necesitas lo que + +00:01:27.299 --> 00:01:29.560 +se llama un top level domain o tld, + +00:01:29.700 --> 00:01:31.700 +que es el sufijo que se le agrega + +00:01:31.700 --> 00:01:33.939 +a estos dominios. Los más conocidos son punto + +00:01:33.939 --> 00:01:36.795 +com, punto DDG0 punto net. Existen algunos sufijos + +00:01:36.795 --> 00:01:38.635 +o top level domains que son de uso + +00:01:38.635 --> 00:01:41.355 +exclusivo. Entonces, el punto gov tiende a ser + +00:01:41.355 --> 00:01:43.835 +usado para gobierno y en América Latina está + +00:01:43.835 --> 00:01:46.235 +el punto gov con b larga, el punto + +00:01:46.235 --> 00:01:49.035 +1000 tiende a ser usado para ejército militar, + +00:01:49.035 --> 00:01:51.450 +el punto edu tiende a ser exclusivo de + +00:01:51.450 --> 00:01:56.509 +instituciones educativas acreditadas. Y luego están los TLDs + +00:01:56.570 --> 00:01:58.970 +que son exclusivos de países, punto co siendo + +00:01:58.970 --> 00:02:01.369 +de Colombia, punto j p de Japón, punto + +00:02:01.369 --> 00:02:03.450 +es de España. Cada país lo usa de + +00:02:03.450 --> 00:02:06.566 +maneras distintas. Por ejemplo, en el caso de + +00:02:06.566 --> 00:02:09.225 +Inglaterra, típicamente es punto co punto u k, + +00:02:09.225 --> 00:02:11.145 +donde en el caso de España es punto + +00:02:11.145 --> 00:02:12.825 +es, y en el caso de Colombia es + +00:02:12.825 --> 00:02:15.065 +punto com punto co. Pues, la diferencia que + +00:02:15.065 --> 00:02:16.705 +determina si 1 usa 1 o el otro + +00:02:16.705 --> 00:02:19.161 +es aleatorio, depende de cada país, y cada + +00:02:19.161 --> 00:02:19.289 +país toma decisiones respecto a cómo lo quiere + +00:02:19.289 --> 00:02:20.135 +usar. En los últimos años, debido a la + +00:02:26.319 --> 00:02:28.560 +top level domains, han empezado a aparecer top + +00:02:28.560 --> 00:02:32.420 +level domains larguísimos. Entonces, existe el punto promo, + +00:02:32.800 --> 00:02:36.435 +el punto info, el punto love, entre muchos, + +00:02:36.435 --> 00:02:38.995 +muchos otros. Tú puedes tener el que quieras. + +00:02:38.995 --> 00:02:41.475 +Pero en negocios, típicamente, 1 tiende a respetar + +00:02:41.475 --> 00:02:44.115 +mucho más los dominios punto com. Hay dominios + +00:02:44.115 --> 00:02:45.715 +que antes no tenían valor y ahora tienen + +00:02:45.715 --> 00:02:48.035 +mucho valor, como por ejemplo, punto AI, de + +00:02:48.035 --> 00:02:50.750 +inteligencia artificial, o en su momento el punto + +00:02:50.750 --> 00:02:54.390 +co. Colombia hizo una gran campaña para decir + +00:02:54.390 --> 00:02:56.349 +que el punto CO era un reemplazo al + +00:02:56.349 --> 00:02:58.430 +punto COM, y en vez de referirse a + +00:02:58.430 --> 00:03:01.069 +estos dominios como un dominio colombiano, son simplemente + +00:03:01.069 --> 00:03:04.365 +una alternativa al COM mucho más interesante que + +00:03:04.365 --> 00:03:07.405 +el punto org. Comprar un dominio, como un + +00:03:07.405 --> 00:03:09.325 +punto com, un punto org, un punto lo + +00:03:09.325 --> 00:03:11.485 +que sea, no es lo mismo que tener + +00:03:11.485 --> 00:03:14.045 +una página web. Recuerda que un dominio es + +00:03:14.045 --> 00:03:17.140 +simplemente comprar el derecho a que un número + +00:03:17.140 --> 00:03:20.840 +IP apunte a un nombre. Es como construir + +00:03:20.900 --> 00:03:23.620 +una casa y luego comprar la dirección de + +00:03:23.620 --> 00:03:25.459 +tu casa. Eso es lo que significa tener + +00:03:25.459 --> 00:03:28.465 +ese dominio punto com. Sin embargo, sin tener + +00:03:28.465 --> 00:03:30.465 +un dominio no puedes tener una página web, + +00:03:30.465 --> 00:03:32.065 +o sí puedes, pero tendrías que contarle a + +00:03:32.065 --> 00:03:33.825 +todo el mundo cuál es la dirección IP + +00:03:33.825 --> 00:03:35.025 +de tu página web, lo cual no es + +00:03:35.025 --> 00:03:37.425 +tan chévere como decir mi propia página web + +00:03:37.425 --> 00:03:39.825 +punto com. Internet está tan maduro que hoy + +00:03:39.825 --> 00:03:42.880 +en día casi que no hay disponibles nombres + +00:03:42.940 --> 00:03:45.260 +punto com, y muchas personas tienen que comprar + +00:03:45.260 --> 00:03:49.660 +nombres alternativos. Como dato anecdótico, Platzi punto com + +00:03:49.660 --> 00:03:52.060 +es un dominio que yo no quería pagar + +00:03:52.060 --> 00:03:53.819 +demasiado por él, así que me puse a + +00:03:53.819 --> 00:03:56.700 +buscar profundamente por allá en el año 2012, + +00:03:56.700 --> 00:04:01.045 +2013, diferentes configuraciones de dominio hasta que encontré + +00:04:01.045 --> 00:04:03.444 +4 que me gustaron. Al equipo de la + +00:04:03.444 --> 00:04:05.045 +época les dije que votaran por el dominio + +00:04:05.045 --> 00:04:06.805 +que más les gustara y todos votaron por + +00:04:06.805 --> 00:04:09.924 +Platzi punto com. Pero hoy en día mucha + +00:04:09.924 --> 00:04:11.525 +gente que quiere comprar un dominio, que ya + +00:04:11.525 --> 00:04:14.400 +está capturado, le toca pagarle a personas que + +00:04:14.400 --> 00:04:16.800 +son dueñas de grandes cantidades de dominios. Esto + +00:04:16.800 --> 00:04:20.080 +es todo un negocio, el comprar muchísimos dominios + +00:04:20.080 --> 00:04:23.520 +DNS para luego revenderlos. Como dato, 1 de + +00:04:23.520 --> 00:04:24.980 +los dominios más caros de la historia es + +00:04:25.600 --> 00:04:27.935 +business punto com, negocios punto com, que fue + +00:04:27.935 --> 00:04:30.815 +vendido por 345000000 de dólares. Y en el + +00:04:30.815 --> 00:04:34.095 +2015, un exempleado de Google se dio cuenta + +00:04:34.095 --> 00:04:35.615 +de que el dominio Google punto com estaba + +00:04:35.615 --> 00:04:37.294 +a punto de expirar y lo compró por + +00:04:37.294 --> 00:04:41.070 +12 dólares, por el precio normal. Google le + +00:04:41.070 --> 00:04:43.190 +agradeció haberlo comprado porque el empleado se los + +00:04:43.190 --> 00:04:45.750 +devolvió y le dio un bono de 10000 + +00:04:45.750 --> 00:04:49.510 +dólares como una recompensa por haber encontrado este + +00:04:49.510 --> 00:04:51.510 +problema. Pero no porque tú compres un dominio + +00:04:51.510 --> 00:04:53.698 +significa que lo puedes revender. Por ejemplo, una + +00:04:53.698 --> 00:04:56.365 +persona terminó comprando Google punto com punto ar + +00:04:56.365 --> 00:04:58.625 +en Argentina y, en vez de recibir recompensa, + +00:04:59.005 --> 00:05:01.805 +recibió una demanda, porque también las leyes de + +00:05:01.805 --> 00:05:04.765 +copyright y de marcas registradas aplican, y si + +00:05:04.765 --> 00:05:06.525 +tú como empresa eres dueño de una marca + +00:05:06.525 --> 00:05:08.765 +registrada, puedes ir a la corte para obtener + +00:05:08.765 --> 00:05:11.590 +tu punto com. Vamos a comprar dominios. Yo + +00:05:11.590 --> 00:05:13.850 +personalmente uso un sitio que se llama Nameship + +00:05:14.070 --> 00:05:15.750 +punto com, tú puedes usar el que quieras. + +00:05:15.750 --> 00:05:17.850 +El único que no recomiendo es usar GoDaddy + +00:05:17.990 --> 00:05:20.950 +punto com. GoDaddy tiene malas prácticas en la + +00:05:20.950 --> 00:05:22.950 +que, cuando tú empiezas a buscar un dominio, + +00:05:22.950 --> 00:05:24.875 +GoDaddy se va a dar cuenta, Y si + +00:05:24.875 --> 00:05:27.435 +el dominio que buscas está disponible, GoDaddy lo + +00:05:27.435 --> 00:05:30.074 +va automáticamente a comprar, de tal manera que + +00:05:30.074 --> 00:05:32.074 +si decides comprarlo luego, te lo va a + +00:05:32.074 --> 00:05:35.275 +cobrar mucho más caro, porque automáticamente se va + +00:05:35.275 --> 00:05:36.715 +a apropiar del dominio y no te va + +00:05:36.715 --> 00:05:38.470 +a permitir comprarlo en otro lado. Es una + +00:05:38.470 --> 00:05:42.150 +técnica muy peligrosa. GoDaddy ha sido muy perseguido + +00:05:42.150 --> 00:05:44.150 +por sus malas prácticas y, en general, no + +00:05:44.150 --> 00:05:46.630 +recomendamos usarlo. Registrar un dominio es tan simple + +00:05:46.630 --> 00:05:48.550 +como empezar a colocarle el nombre que quieras. + +00:05:48.550 --> 00:05:50.470 +Yo, personalmente, le voy a colocar un nombre + +00:05:50.470 --> 00:05:52.230 +que creo que va a estar no disponible, + +00:05:52.230 --> 00:05:54.205 +pero seguro que alguno de ustedes estudiantes lo + +00:05:54.205 --> 00:05:55.724 +va a comprar. Mi sugerencia es que no + +00:05:55.724 --> 00:05:57.324 +lo hagan, van a perder el dinero, pero + +00:05:57.324 --> 00:05:58.764 +si lo quieren hacer, por lo menos hagan + +00:05:58.764 --> 00:06:01.245 +algo creativo con el dominio, ¿listos? Voy a + +00:06:01.245 --> 00:06:05.724 +colocarle prueba de curso de fundamentos y le + +00:06:05.724 --> 00:06:09.680 +doy buscar. Me empieza a buscar y, efectivamente, + +00:06:09.900 --> 00:06:12.440 +aquí está prueba de curso de fundamentos punto + +00:06:12.539 --> 00:06:17.500 +com y me cuesta simplemente 11.28 dólares al + +00:06:17.500 --> 00:06:20.060 +año. Me salen otras opciones como el punto + +00:06:20.060 --> 00:06:22.250 +fon, punto Miami, punto net, punto ORG, pero + +00:06:22.544 --> 00:06:24.065 +solamente necesito este, así que lo que voy + +00:06:24.065 --> 00:06:26.384 +a hacer es añadirlo al carrito, ahí lo + +00:06:26.384 --> 00:06:27.905 +tengo en mi carrito, y en el caso + +00:06:27.905 --> 00:06:29.824 +de NameShip, miren que me empieza a vender + +00:06:29.824 --> 00:06:32.485 +otras cosas. Me vende hosting de sitios web, + +00:06:32.785 --> 00:06:35.205 +WordPress, que es un mecanismo para crear sitios + +00:06:35.264 --> 00:06:36.945 +web automatizados, es un sistema de manejo de + +00:06:36.945 --> 00:06:39.740 +contenido, SSL, que es la forma de tener + +00:06:41.080 --> 00:06:44.120 +cifrado en las transmisiones de los datos cuando + +00:06:44.120 --> 00:06:47.560 +le sale HTTPS. Premium DNS es algo que + +00:06:47.560 --> 00:06:50.600 +ustedes no necesitan. Y correo electrónico, el hecho + +00:06:50.600 --> 00:06:51.800 +de tener un dominio no es lo mismo + +00:06:51.800 --> 00:06:54.165 +que tener correo electrónico, eso son cosas aparte. + +00:06:54.165 --> 00:06:56.405 +El dominio solamente es un apuntador a una + +00:06:56.405 --> 00:06:59.125 +IP, el correo electrónico sería un servidor, etcétera, + +00:06:59.125 --> 00:07:01.285 +etcétera. Yo solamente necesito el dominio, así que + +00:07:01.285 --> 00:07:03.925 +le voy a dar aquí check out y + +00:07:03.925 --> 00:07:05.205 +ya está. Con esto lo que voy a + +00:07:05.205 --> 00:07:07.490 +hacer es comprarlo. Esto es un proceso de + +00:07:07.490 --> 00:07:09.250 +compra de toda la vida. Yo puedo comprar + +00:07:09.250 --> 00:07:10.930 +un dominio por un año, por 5 años + +00:07:10.930 --> 00:07:13.169 +o por 10 años. Un dato importante es + +00:07:13.169 --> 00:07:17.030 +que sistemas como Google usan la longevidad del + +00:07:17.250 --> 00:07:19.729 +dominio para determinar qué tan serio es un + +00:07:19.729 --> 00:07:22.255 +sitio web. Entonces, si tú quieres proyectar seriedad, + +00:07:22.255 --> 00:07:23.775 +compra dominios a 10 años, que en este + +00:07:23.775 --> 00:07:26.735 +caso costaría 146 dólares. Aquí voy a simular + +00:07:26.735 --> 00:07:28.835 +que lo voy a comprar por un año. + +00:07:29.295 --> 00:07:31.855 +Y con eso simplemente privacidad de dominio es + +00:07:31.855 --> 00:07:33.907 +una cosa muy interesante, lo estoy apagando acá, + +00:07:33.907 --> 00:07:35.800 +porque resulta que los dominios 1 tiene que + +00:07:35.800 --> 00:07:38.120 +colocar su nombre y quién es el dueño, + +00:07:38.120 --> 00:07:40.620 +que es la dirección donde la dirección postal + +00:07:40.840 --> 00:07:43.160 +a la que llegan las cartas, porque todo + +00:07:43.160 --> 00:07:45.000 +dominio tiene que estar conectado con un ser + +00:07:45.000 --> 00:07:46.780 +humano real. Pero no puede activar la privacidad + +00:07:46.919 --> 00:07:48.520 +y de esa manera nadie sabe de quién + +00:07:48.520 --> 00:07:51.025 +es este sistema. Es completamente gratuito, yo lo + +00:07:51.025 --> 00:08:04.500 +puedo, AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Una vez comprado el dominio, lo + +00:08:04.500 --> 00:08:07.460 +que hay que hacer es configurarlo. Las configuraciones + +00:08:07.460 --> 00:08:10.180 +tienen diferentes nombres. Los más importantes que ustedes + +00:08:10.180 --> 00:08:13.220 +necesitan tener en mente son estos llamados a + +00:08:13.220 --> 00:08:16.655 +Records. El a Record es una variable dentro + +00:08:16.655 --> 00:08:18.335 +de la base de datos del sistema de + +00:08:18.335 --> 00:08:20.655 +nombres de dominio que apunta a donde está + +00:08:20.655 --> 00:08:22.574 +el servidor. Entonces, en este caso, para el + +00:08:22.574 --> 00:08:24.574 +dominio Freddy Vega punto com, yo tengo un + +00:08:24.574 --> 00:08:30.275 +servidor en 209.97 punto 145.61 hacia donde apunta + +00:08:30.980 --> 00:08:34.500 +mi nombre de dominio, Fredy punto com. Luego + +00:08:34.500 --> 00:08:37.299 +están los c name records. Tú probablemente has + +00:08:37.299 --> 00:08:40.740 +visto que algunos dominios tienen palabras atrás del + +00:08:40.740 --> 00:08:43.460 +dominio con un punto. Por ejemplo, Google Docs + +00:08:43.460 --> 00:08:46.685 +está en docs punto Google punto com. En + +00:08:46.685 --> 00:08:49.185 +ese caso, Google punto com es el dominio + +00:08:49.404 --> 00:08:53.645 +y docs, D0CS, es el subdominio. En este + +00:08:53.645 --> 00:08:57.745 +caso, el récord siname de FTP, mail YWW + +00:08:58.045 --> 00:09:00.125 +son subdominios que yo le estoy apuntando a + +00:09:00.125 --> 00:09:02.650 +Freddie Vega punto com, o sea, al dominio + +00:09:02.650 --> 00:09:05.210 +a, a la raíz del dominio. Yo podría + +00:09:05.210 --> 00:09:07.130 +tener c name records que apunten a una + +00:09:07.130 --> 00:09:10.590 +IP diferente y, de esa manera, subdominios distintos, + +00:09:10.730 --> 00:09:13.450 +por ejemplo, correo punto Freddy Vega punto com, + +00:09:13.450 --> 00:09:16.475 +podría apuntar a un servidor completamente distinto. Y + +00:09:16.475 --> 00:09:19.695 +por último, están estos TXT Records, que son + +00:09:20.075 --> 00:09:22.235 +básicamente variables de texto que yo agrego en + +00:09:22.235 --> 00:09:24.795 +ocasiones como una señal a otros sitios web. + +00:09:24.795 --> 00:09:26.235 +En este caso, por ejemplo, le estoy diciendo + +00:09:26.235 --> 00:09:28.590 +a Google que Freddy-G punto com es mío, + +00:09:28.590 --> 00:09:30.510 +y lo hago con una variable que Google + +00:09:30.510 --> 00:09:32.110 +me dio. No se preocupen por esto, esto + +00:09:32.110 --> 00:09:33.950 +son cosas avanzadas que luego van a tener + +00:09:33.950 --> 00:09:36.510 +que usar. Una vez tienes tu dominio y + +00:09:36.510 --> 00:09:38.750 +le está apuntando una IP, ahora necesitas tener + +00:09:38.750 --> 00:09:40.910 +una IP. El solo hecho de tener un + +00:09:40.910 --> 00:09:42.995 +dominio no significa tener una página web. Una + +00:09:42.995 --> 00:09:47.075 +página web es una computadora en Internet a + +00:09:47.075 --> 00:09:50.675 +la que tu dominio le apunta sirviendo un + +00:09:50.675 --> 00:09:54.274 +servicio, típicamente un sitio web. Eso es una + +00:09:54.274 --> 00:09:55.840 +computadora conectada a Internet, que es lo que + +00:09:55.840 --> 00:09:58.160 +la gente llama la nube. La nube es + +00:09:58.160 --> 00:10:01.360 +rentar una computadora en un data center de + +00:10:01.360 --> 00:10:03.600 +otra empresa. O puede ser tu propia computadora + +00:10:03.600 --> 00:10:05.360 +en tu propia conexión, pero eso es un + +00:10:05.360 --> 00:10:07.280 +poco complicado y no vamos a hablar de + +00:10:07.280 --> 00:10:09.731 +eso. Vamos a hablar del modelo cliente servidor, + +00:10:09.731 --> 00:10:10.931 +que es lo que viene en la próxima + +00:10:10.931 --> 00:10:11.431 +clase. diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/02-Redes e Internet/02-Resumen.html" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/02-Redes e Internet/02-Resumen.html" new file mode 100644 index 0000000000000000000000000000000000000000..aa0b90fd67555fef67c61118ff54b142b2f4b8df --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/02-Redes e Internet/02-Resumen.html" @@ -0,0 +1,153 @@ + + + + + + + Nombres de dominio, DNS y cómo obtener un .com + + + +
+
+

Resumen

La infraestructura digital que permite navegar por Internet de manera intuitiva se basa en un sistema complejo pero fascinante. Detrás de cada sitio web que visitamos existe un entramado de nombres de dominio, direcciones IP y servidores que trabajan en conjunto para brindarnos una experiencia fluida. Entender cómo funcionan los nombres de dominio es fundamental para cualquier persona interesada en crear su presencia en línea, ya sea para un proyecto personal o profesional.

+

¿Qué son los nombres de dominio y por qué son importantes?

+

Los nombres de dominio surgieron como solución a un problema práctico: las computadoras conectadas a Internet se identifican mediante direcciones IP (largas secuencias numéricas) que son difíciles de recordar para los humanos. Inicialmente, estas equivalencias entre nombres y números se almacenaban en un archivo llamado "hosts" que se compartía entre proveedores de Internet.

+

Sin embargo, con el crecimiento exponencial de Internet, este sistema no podía escalar adecuadamente. Como solución, se desarrolló una base de datos distribuida conocida como Sistema de Nombres de Dominio (DNS - Domain Name System), que permite traducir nombres amigables como "platzi.com" a direcciones IP.

+

Los nombres de dominio siguen ciertas reglas:

+
    +
  • Tradicionalmente solo permiten letras del idioma inglés (aunque actualmente se pueden incluir caracteres como la "ñ" o letras con tilde)
  • +
  • Generalmente comienzan con una letra, no con un número
  • +
  • No distinguen entre mayúsculas y minúsculas
  • +
  • Requieren un sufijo o Top Level Domain (TLD)
  • +
+

¿Qué son los Top Level Domains (TLD) y cómo se utilizan?

+

Los TLD son los sufijos que se agregan a los nombres de dominio. Entre los más conocidos están:

+
    +
  • .com: el más popular, utilizado principalmente para sitios comerciales
  • +
  • .org: originalmente para organizaciones sin fines de lucro
  • +
  • .net: inicialmente para proveedores de servicios de red
  • +
+

Existen TLD de uso exclusivo:

+
    +
  • .gov/.gob: para entidades gubernamentales
  • +
  • .mil: para organizaciones militares
  • +
  • .edu: para instituciones educativas acreditadas
  • +
+

También hay TLD específicos para países:

+
    +
  • .co: Colombia
  • +
  • .es: España
  • +
  • .jp: Japón
  • +
+

Cada país maneja sus dominios de manera diferente. Por ejemplo, Reino Unido utiliza ".co.uk", mientras que España simplemente usa ".es".

+

En años recientes han surgido numerosos TLD nuevos como ".promo", ".info", ".love" o ".ai" (este último ha ganado mucho valor con el auge de la inteligencia artificial).

+

¿Cómo adquirir y gestionar un nombre de dominio?

+

Comprar un dominio no es lo mismo que tener una página web. Un dominio es simplemente el derecho a que un nombre apunte a una dirección IP específica. Es comparable a comprar la dirección de una casa, pero sin la casa en sí.

+

Para adquirir un dominio, existen numerosos registradores. El proceso es relativamente sencillo:

+
    +
  1. Buscar la disponibilidad del nombre deseado
  2. +
  3. Seleccionar el TLD (.com, .org, etc.)
  4. +
  5. Completar la compra (generalmente por un período de 1 a 10 años)
  6. +
+
Nota importante: Se recomienda evitar GoDaddy debido a prácticas cuestionables, como comprar automáticamente dominios que los usuarios buscan para luego venderlos a precios más altos.
+
+

Al comprar un dominio, puedes optar por la privacidad de dominio, que oculta tu información personal del registro público WHOIS. Sin esta protección, cualquiera podría ver tu nombre y dirección postal.

+

¿Cómo configurar un dominio correctamente?

+

Una vez adquirido el dominio, es necesario configurarlo mediante diferentes tipos de registros:

+
    +
  • +

    Registros A (A Records): Apuntan el dominio a una dirección IP específica. Por ejemplo, "freddyvega.com" podría apuntar a "209.97.145.61".

    +
  • +
  • +

    Registros CNAME (CNAME Records): Permiten crear subdominios que apuntan al dominio principal o a otras direcciones. Por ejemplo, "docs.google.com" donde "docs" es un subdominio de "google.com".

    +
  • +
  • +

    Registros TXT (TXT Records): Son variables de texto que se utilizan para verificar la propiedad del dominio o para configuraciones específicas.

    +
  • +
+

Es importante recordar que tener un dominio no significa automáticamente tener una página web. Para ello, necesitas un servidor (una computadora conectada a Internet) al que tu dominio apunte y que aloje tu sitio web.

+

Los dominios más antiguos o registrados por períodos más largos (como 10 años) suelen ser considerados más serios por los motores de búsqueda como Google, lo que puede influir positivamente en el posicionamiento SEO.

+

El fascinante mundo de los nombres de dominio es apenas la puerta de entrada al universo de la presencia digital. Comprender estos conceptos fundamentales te permitirá tomar mejores decisiones al momento de establecer tu identidad en línea. ¿Ya tienes pensado qué nombre de dominio utilizarías para tu próximo proyecto? Comparte tus ideas en los comentarios.

+
+
+ + \ No newline at end of file diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/02-Redes e Internet/03-Modelo ClienteServidor C\303\263mo funciona un sitio web.mp4" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/02-Redes e Internet/03-Modelo ClienteServidor C\303\263mo funciona un sitio web.mp4" new file mode 100644 index 0000000000000000000000000000000000000000..d6ae2185e08c82acd822138819a698f519772ba0 --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/02-Redes e Internet/03-Modelo ClienteServidor C\303\263mo funciona un sitio web.mp4" @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0114b6471aa15a0870dd871384b1282f46607d422b66f8b93f4b1c3a4e6e846e +size 201033439 diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/02-Redes e Internet/03-Modelo ClienteServidor C\303\263mo funciona un sitio web.vtt" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/02-Redes e Internet/03-Modelo ClienteServidor C\303\263mo funciona un sitio web.vtt" new file mode 100644 index 0000000000000000000000000000000000000000..1d252e688cc214b38a7aee214c0a3e06a2144c73 --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/02-Redes e Internet/03-Modelo ClienteServidor C\303\263mo funciona un sitio web.vtt" @@ -0,0 +1,580 @@ +WEBVTT + +00:00:00.160 --> 00:00:02.260 +Estás en tu computadora y en tu navegador + +00:00:02.399 --> 00:00:05.920 +escribes platzi punto com. Al darle enter, tu + +00:00:05.920 --> 00:00:10.099 +navegador es el cliente. Ese cliente manda platzi + +00:00:10.160 --> 00:00:12.240 +punto com al router que lo transforma a + +00:00:12.240 --> 00:00:14.000 +una IP, esa es la IP del servidor + +00:00:14.000 --> 00:00:17.045 +platzi punto com, y allá está el servidor. + +00:00:17.185 --> 00:00:18.785 +El servidor es donde están los datos de + +00:00:18.785 --> 00:00:21.045 +Platzi punto com. Así que tu cliente envía + +00:00:21.185 --> 00:00:23.505 +ese dato a Platzi punto com, esa petición + +00:00:23.505 --> 00:00:25.131 +de mándeme la página web de Platzi. El + +00:00:25.131 --> 00:00:25.985 +servidor recibe la petición y responde con los + +00:00:25.985 --> 00:00:31.640 +datos, recibe la petición y responde con los + +00:00:31.640 --> 00:00:34.040 +datos de Platzi punto com, que los envía + +00:00:34.040 --> 00:00:37.280 +por HTTP, por HyperText Transfer Protocol, o el + +00:00:37.280 --> 00:00:40.075 +protocolo de transferencia de hipertexto. Y como vivimos + +00:00:40.075 --> 00:00:42.815 +en el futuro, ahora es el protocolo HTTPS, + +00:00:43.515 --> 00:00:46.155 +donde la s significa seguro, es decir, cifra + +00:00:46.155 --> 00:00:48.955 +los datos. Y esos datos cifrados llegan a + +00:00:48.955 --> 00:00:51.195 +tu computadora, que es el cliente. Eso es + +00:00:51.195 --> 00:00:54.100 +todo el modelo cliente servidor. Pero por detrás + +00:00:54.100 --> 00:00:56.660 +no solamente pasa esto. Por ejemplo, ¿cómo le + +00:00:56.660 --> 00:00:59.560 +hacen los sitios web? Para mostrarte versiones de + +00:00:59.940 --> 00:01:03.240 +teléfonos móviles y versiones de computadoras de escritorio. + +00:01:03.460 --> 00:01:05.640 +Esto es porque cuando tú escribes una URL + +00:01:05.775 --> 00:01:07.535 +o cuando le das clic a una página + +00:01:07.535 --> 00:01:09.695 +web, el cargar una página web en tu + +00:01:09.695 --> 00:01:13.215 +computadora hace que tu computadora envíe en la + +00:01:13.215 --> 00:01:16.175 +petición datos de quién eres tú. 1 de + +00:01:16.175 --> 00:01:18.495 +esos datos es cuál es tu navegador, tu + +00:01:18.495 --> 00:01:21.700 +sistema operativo y tu computadora. Ahí dice, yo + +00:01:21.700 --> 00:01:23.700 +soy un iPhone, yo soy un Android, yo + +00:01:23.700 --> 00:01:25.380 +soy un laptop, yo soy una computadora de + +00:01:25.380 --> 00:01:28.500 +escritorio, el tamaño de tu pantalla, entre muchos + +00:01:28.500 --> 00:01:30.900 +otros datos que le permiten al servidor enviarte + +00:01:30.900 --> 00:01:31.016 +los datos correctos. Estos datos van invisibles al + +00:01:31.016 --> 00:01:32.489 +usuario en la capa de entre muchos otros + +00:01:32.489 --> 00:01:34.766 +datos que le permiten al servidor enviarte los + +00:01:34.766 --> 00:01:37.044 +datos correctos. Estos datos van invisibles al usuario + +00:01:37.044 --> 00:01:39.321 +en la capa de protocolo que envía la + +00:01:39.321 --> 00:01:41.599 +petición del cliente, tú, al servidor. Esto va + +00:01:41.599 --> 00:01:43.877 +en los headers de la conexión o en + +00:01:43.877 --> 00:01:46.350 +los headers HTTP, en la cabecera HTTP. Este + +00:01:46.350 --> 00:01:48.910 +dato, por ejemplo, donde están describiendo quién es + +00:01:48.910 --> 00:01:51.230 +tu navegador, quién es tu computadora, se llama + +00:01:51.230 --> 00:01:54.110 +agente de usuario o user agent. Por ejemplo, + +00:01:54.110 --> 00:01:56.350 +cuando tú abres Gmail punto com para entrar + +00:01:56.350 --> 00:01:58.750 +a tu correo, no siempre tienes que colocar + +00:01:58.750 --> 00:02:00.350 +tu nombre de usuario y contraseña, a veces + +00:02:00.350 --> 00:02:03.185 +ya sabe quién eres tú y carga exactamente + +00:02:03.325 --> 00:02:06.284 +tus emails. ¿Cómo hace eso? Eso lo hace + +00:02:06.284 --> 00:02:07.965 +porque ya sabe quién eres tú, porque la + +00:02:07.965 --> 00:02:09.965 +última vez que te logueaste el servidor te + +00:02:09.965 --> 00:02:13.405 +dejó unos datos en tu computadora guardados que + +00:02:13.405 --> 00:02:16.970 +indican e identifican que tú eres tú. Esos + +00:02:16.970 --> 00:02:19.209 +datos se llaman cookies. Una cookie o una + +00:02:19.209 --> 00:02:21.849 +galleta son unos datos que quedan guardados en + +00:02:21.849 --> 00:02:25.930 +tu computadora asignados al dominio de la petición + +00:02:25.930 --> 00:02:28.170 +que estás haciendo, Google punto com, Gmail punto + +00:02:28.170 --> 00:02:31.545 +com, Platzi punto com. Y esas variables, esas + +00:02:31.545 --> 00:02:34.685 +cookies, siempre viajan en la cabecera del protocolo + +00:02:34.745 --> 00:02:36.584 +cuando vas a pedirle algo. Así, si tú + +00:02:36.584 --> 00:02:38.424 +entras a Platzi punto com y ya eres + +00:02:38.424 --> 00:02:40.905 +un estudiante de Platzi, Platzi punto com lo + +00:02:40.905 --> 00:02:43.500 +sabe porque en las cookies están tus datos + +00:02:43.500 --> 00:02:45.379 +de identificación de la última vez que colocaste + +00:02:45.379 --> 00:02:47.739 +tu nombre de usuario y contraseña. Entonces, en + +00:02:47.739 --> 00:02:50.780 +vez de responderle del servidor al cliente con + +00:02:50.780 --> 00:02:52.939 +el sitio web normal de Platzi punto com, + +00:02:52.939 --> 00:02:55.919 +te respondemos con el home de estudiante donde + +00:02:55.980 --> 00:02:59.315 +están tus clases y tus cursos. Es una + +00:02:59.315 --> 00:03:03.394 +respuesta única y especial derivada de esa petición + +00:03:03.394 --> 00:03:06.455 +porque tiene esas cookies. Pero no responde inmediatamente + +00:03:06.675 --> 00:03:11.175 +con todo. Primero envía el código HTML, hypertext + +00:03:11.710 --> 00:03:14.770 +Markup Language, o lenguaje de etiquetas de hipertexto, + +00:03:15.070 --> 00:03:17.070 +que es la estructura de datos de una + +00:03:17.070 --> 00:03:19.890 +página web. Es texto plano, es puro texto, + +00:03:19.950 --> 00:03:22.610 +y en ese texto hay referencias a otros + +00:03:22.830 --> 00:03:24.590 +archivos. Por ejemplo, hay referencias a la a + +00:03:24.590 --> 00:03:28.745 +cargar hojas de estilo o CSS, Cascade Stylesheets, + +00:03:28.885 --> 00:03:30.885 +hojas de estilo en cascada. Este es un + +00:03:30.885 --> 00:03:34.165 +lenguaje que define el diseño gráfico del sitio + +00:03:34.165 --> 00:03:36.525 +web. Entonces, el navegador va y lo carga, + +00:03:36.525 --> 00:03:38.665 +y eso es lo que carga el diseño + +00:03:38.805 --> 00:03:40.739 +web de toda la página web. Pero también + +00:03:40.739 --> 00:03:43.239 +necesitas componentes interactivos, lo que hace que los + +00:03:43.239 --> 00:03:45.299 +botones reaccionen al dar clic, lo que mueve + +00:03:45.299 --> 00:03:47.379 +todo el sitio web. Este código se llama + +00:03:47.379 --> 00:03:50.420 +JavaScript y también está referenciado en el HTML. + +00:03:50.420 --> 00:03:53.319 +Estas son peticiones adicionales al servidor que regresan + +00:03:53.379 --> 00:03:55.435 +al navegador y es lo que va construyendo + +00:03:55.435 --> 00:03:57.754 +la representación de una página web, sea en + +00:03:57.754 --> 00:03:59.595 +el navegador de tu teléfono o en el + +00:03:59.595 --> 00:04:01.834 +navegador de tu escritorio o en donde sea. + +00:04:01.834 --> 00:04:04.495 +Por ejemplo, si estás buscando algo en Platzi + +00:04:04.555 --> 00:04:07.114 +y colocas un término de búsqueda, notarás que + +00:04:07.114 --> 00:04:09.030 +la URL o la dirección de Internet que + +00:04:09.030 --> 00:04:10.750 +se ve allá arriba en el navegador dice + +00:04:10.750 --> 00:04:14.894 +platzi punto com slash buscar slash signo de + +00:04:14.894 --> 00:04:18.606 +interrogación search igual chat GPT. Ese signo de + +00:04:18.606 --> 00:04:21.410 +interrogación significa, voy a enviarle variables al servidor + +00:04:21.694 --> 00:04:24.514 +a través de un método llamado el método + +00:04:25.215 --> 00:04:28.175 +get, GET. El método get son variables que + +00:04:28.175 --> 00:04:30.655 +viajan por la URL. La variable se llama + +00:04:30.655 --> 00:04:32.895 +search y el valor de la variable, en + +00:04:32.895 --> 00:04:34.770 +este caso, es chat GPT. Sin embargo, tú + +00:04:34.770 --> 00:04:36.290 +no puedes enviar tu nombre de usuario y + +00:04:36.290 --> 00:04:38.290 +tu contraseña por ahí, porque resulta que todo + +00:04:38.290 --> 00:04:39.970 +lo que envíes por get queda en el + +00:04:39.970 --> 00:04:42.290 +historial del navegador, así que sería un problema + +00:04:42.290 --> 00:04:46.130 +de seguridad que tu contraseña estuviera en texto + +00:04:46.130 --> 00:04:48.615 +plano guardada en el historial del navegador, ¿verdad? + +00:04:48.854 --> 00:04:51.615 +Hay un método para enviar estas variables de + +00:04:51.615 --> 00:04:55.974 +forma escondida, empaquetada en la cabecera de los + +00:04:55.974 --> 00:04:58.134 +envíos, de tal manera que nadie lo pueda + +00:04:58.134 --> 00:05:00.375 +ver cuando estén accediendo al historial. Imagina, por + +00:05:00.375 --> 00:05:01.895 +ejemplo, que estás en un café Internet o + +00:05:01.895 --> 00:05:04.215 +cosas por el estilo. Entonces, si tú tienes + +00:05:04.215 --> 00:05:05.949 +una una formulario que tiene un usuario y + +00:05:05.949 --> 00:05:08.590 +contraseña y le das el botón de login, + +00:05:08.590 --> 00:05:11.949 +tienes un método llamado post, P0ST. En el + +00:05:11.949 --> 00:05:15.710 +método post, ese formulario se encapsula en un + +00:05:15.710 --> 00:05:18.110 +paquetico que va en el header similar al + +00:05:18.110 --> 00:05:20.685 +user agent, los datos de tu navegador. Así + +00:05:20.685 --> 00:05:22.444 +el servidor se da cuenta, ah, este es + +00:05:22.444 --> 00:05:24.465 +el nombre de usuario Freddy y la contraseña + +00:05:24.925 --> 00:05:28.044 +tal, y la respuesta es una respuesta exclusiva + +00:05:28.044 --> 00:05:29.884 +para el nombre de usuario y contraseña que + +00:05:29.884 --> 00:05:32.604 +el servidor obtuvo. Los servidores pueden dar diferentes + +00:05:32.604 --> 00:05:35.164 +tipos de respuesta dependiendo de la petición que + +00:05:35.164 --> 00:05:37.789 +hagas. La respuesta más típica es que todo + +00:05:37.789 --> 00:05:40.669 +está bien. Estas respuestas son unos números que + +00:05:40.669 --> 00:05:43.490 +van en la cabecera de la respuesta. 200 + +00:05:43.710 --> 00:05:46.430 +ok significa todo está bien. Pero seguro que + +00:05:46.430 --> 00:05:49.735 +tú has escuchado el error 404, ¿verdad? Cuando + +00:05:49.735 --> 00:05:51.574 +intentas acceder a un sitio web que no + +00:05:51.574 --> 00:05:53.574 +existe, a una dirección dentro del servidor que + +00:05:53.574 --> 00:05:56.775 +no existe, los servidores HTTP tienden a responder + +00:05:56.775 --> 00:06:00.474 +con not found, no existe, 404. Si el + +00:06:00.535 --> 00:06:03.014 +servidor está ocupado o el servidor está trabado + +00:06:03.014 --> 00:06:04.294 +o hay un error de configuración en el + +00:06:04.294 --> 00:06:06.370 +servidor, el error típico de error es el + +00:06:06.370 --> 00:06:09.410 +error 500. Y por último, cuando una dirección + +00:06:09.410 --> 00:06:12.050 +existía y ya no existe, pero apunta a + +00:06:12.050 --> 00:06:14.690 +un nuevo lugar, eso es una redirección, y + +00:06:14.690 --> 00:06:17.349 +eso se hace con la respuesta 300 redirect. + +00:06:17.645 --> 00:06:19.565 +Todo esto es verdad para páginas web, pero + +00:06:19.565 --> 00:06:23.185 +¿cómo funcionan los APIs? ¿Cómo funciona el mover + +00:06:23.325 --> 00:06:26.925 +archivos? ¿Cómo funciona el enviar correo? Con diferentes + +00:06:26.925 --> 00:06:30.285 +protocolos. Estos son los protocolos SMTP o Simple + +00:06:30.285 --> 00:06:32.478 +Message Transfer Protocol, que realmente está en desuso, + +00:06:32.478 --> 00:06:32.745 +el protocolo POP 3 o PostOffice Protocol 3, + +00:06:32.745 --> 00:06:39.630 +y por último, el protocolo o Internet Message + +00:06:39.810 --> 00:06:43.450 +Access Protocol. Estos son protocolos del formato de + +00:06:43.450 --> 00:06:45.975 +envío y recepción de correo electrónico. La realidad + +00:06:45.975 --> 00:06:48.535 +es que hoy en día muy pocas empresas + +00:06:48.535 --> 00:06:51.014 +manejan sus propios servidores de correo electrónico. Solo + +00:06:51.014 --> 00:06:53.014 +las empresas más grandes lo pueden hacer porque + +00:06:53.014 --> 00:06:55.655 +el correo electrónico se ha vuelto increíblemente complejo, + +00:06:55.655 --> 00:06:57.335 +y la gran mayoría de las compañías le + +00:06:57.335 --> 00:06:59.540 +delegan la gestión de su correo electrónico a + +00:06:59.540 --> 00:07:02.420 +2 empresas, a Microsoft con Outlook o a + +00:07:02.420 --> 00:07:05.060 +Google con Gmail. Pero ¿qué pasa cuando tengo + +00:07:05.060 --> 00:07:08.260 +un teléfono y tengo una aplicación móvil que + +00:07:08.260 --> 00:07:10.580 +tiene que cargarme unos datos? Para que los + +00:07:10.580 --> 00:07:13.705 +datos de esta app en este teléfono lleguen + +00:07:13.705 --> 00:07:16.525 +y sean representados, tengo que ir al servidor + +00:07:16.585 --> 00:07:19.251 +a buscar esos datos. Pero las aplicaciones no + +00:07:19.251 --> 00:07:24.185 +usan HTML, CSS ni JavaScript, usan lenguajes propios + +00:07:24.185 --> 00:07:27.590 +de aplicaciones nativas. En el caso de Android + +00:07:27.590 --> 00:07:29.750 +usan Java o Kotlin, y en el caso + +00:07:29.750 --> 00:07:33.430 +de iOS usan SWIFT o Object C. Entonces, + +00:07:33.430 --> 00:07:35.350 +al cargar los datos no necesitan cargar los + +00:07:35.350 --> 00:07:38.630 +típicos datos HTML, usan otras cosas. Usan unas + +00:07:38.630 --> 00:07:41.905 +estructuras de datos entre servidor y aplicación que + +00:07:41.905 --> 00:07:45.604 +se conocen como JSON o como XML. JSON + +00:07:45.745 --> 00:07:48.945 +significa JavaScript Object Notation, y es una forma + +00:07:48.945 --> 00:07:51.104 +de guardar datos. Puedes saber más en nuestros + +00:07:51.104 --> 00:07:54.305 +cursos de JavaScript en Platzi, y XML significa + +00:07:54.305 --> 00:07:57.285 +Extended Market Language, que es parecido a HTML, + +00:07:57.740 --> 00:08:00.780 +pero en vez de expresar etiquetas de representación + +00:08:00.780 --> 00:08:05.260 +de información visual, como títulos, cabeceras, etcétera, expresa + +00:08:05.260 --> 00:08:07.980 +cualquier tipo de estructura de datos normal. Solo + +00:08:07.980 --> 00:08:10.480 +ten en mente que aunque sea XML, JSON, + +00:08:10.620 --> 00:08:14.115 +HTML, JavaScript, CSS o lo que sea, sigue + +00:08:14.115 --> 00:08:16.595 +siendo lo mismo. Un cliente, una app, un + +00:08:16.595 --> 00:08:18.755 +navegador o lo que sea, hace una petición + +00:08:18.755 --> 00:08:21.315 +a través de un protocolo, típicamente el protocolo + +00:08:21.315 --> 00:08:24.035 +HTTP con la s de seguro, eso significa + +00:08:24.035 --> 00:08:26.355 +que se intercambiaron llaves de cifrado, como vimos + +00:08:26.355 --> 00:08:29.770 +en la clase de WhatsApp, que envía, entiende + +00:08:29.770 --> 00:08:32.650 +los datos y los devuelve de regreso al + +00:08:32.650 --> 00:08:34.970 +cliente. Y ese completo es el modelo cliente + +00:08:34.970 --> 00:08:35.470 +servidor. diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/02-Redes e Internet/03-Resumen.html" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/02-Redes e Internet/03-Resumen.html" new file mode 100644 index 0000000000000000000000000000000000000000..efd71d2267dd916d84480656411c3c04e17f3d45 --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/02-Redes e Internet/03-Resumen.html" @@ -0,0 +1,157 @@ + + + + + + + Modelo Cliente/Servidor: ¿Cómo funciona un sitio web? + + + +
+
+

Resumen

La arquitectura cliente-servidor es el fundamento de la web moderna, permitiendo que millones de dispositivos se conecten e intercambien información de manera eficiente. Entender cómo funciona este modelo es esencial para cualquier persona interesada en tecnología, desarrollo web o simplemente para comprender mejor el mundo digital que nos rodea. Veamos en detalle cómo opera este sistema y qué ocurre realmente cuando navegamos por internet.

+

¿Cómo funciona el modelo cliente-servidor?

+

Cuando escribes una dirección web como platzi.com en tu navegador y presionas Enter, se inicia un proceso fascinante. Tu navegador actúa como cliente y envía una solicitud al servidor de Platzi. Pero antes, esta solicitud pasa por tu router, que convierte el nombre de dominio en una dirección IP específica del servidor.

+

El servidor, que almacena todos los datos del sitio web, recibe esta petición y responde enviando la información solicitada. Esta comunicación se realiza mediante el protocolo HTTP (HyperText Transfer Protocol) o, más comúnmente hoy en día, HTTPS, donde la "S" significa "seguro", indicando que los datos viajan cifrados.

+

Este intercambio de información es la base del funcionamiento de internet, pero hay mucho más sucediendo tras bambalinas:

+
    +
  • Identificación del dispositivo: Tu navegador envía información sobre tu dispositivo y sistema operativo.
  • +
  • Adaptación de contenido: El servidor utiliza estos datos para enviar la versión adecuada del sitio (móvil o escritorio).
  • +
  • Personalización: Las cookies almacenadas en tu dispositivo permiten que el servidor te reconozca y personalice tu experiencia.
  • +
+

¿Qué información viaja en las peticiones HTTP?

+

Cuando realizas una petición web, tu navegador envía datos adicionales que no son visibles para ti como usuario. Estos datos viajan en los "headers" o cabeceras HTTP:

+
    +
  • User Agent: Identifica tu navegador, sistema operativo y dispositivo.
  • +
  • Cookies: Pequeños archivos de datos almacenados en tu dispositivo que identifican tu sesión.
  • +
+

Gracias a estos datos, los sitios web pueden reconocerte. Por ejemplo, cuando abres Gmail, el servidor puede identificarte mediante las cookies guardadas de sesiones anteriores, mostrándote directamente tu bandeja de entrada sin necesidad de iniciar sesión nuevamente.

+

¿Cómo se construye una página web en tu navegador?

+

Cuando un servidor responde a tu petición, no envía toda la página web de una vez. El proceso sigue estos pasos:

+
    +
  1. Primero envía el HTML (HyperText Markup Language), que es la estructura básica de la página en texto plano.
  2. +
  3. El HTML contiene referencias a otros archivos como CSS (Cascade Style Sheets), que define el diseño visual.
  4. +
  5. También incluye referencias a archivos JavaScript, que proporcionan la interactividad.
  6. +
+

Tu navegador realiza peticiones adicionales para cada uno de estos archivos, construyendo progresivamente la representación completa de la página web.

+

¿Cómo se envían los datos entre cliente y servidor?

+

Existen diferentes métodos para enviar información desde el cliente al servidor:

+

¿Qué es el método GET?

+

Cuando realizas una búsqueda en un sitio web, notarás que la URL cambia para incluir tu término de búsqueda. Por ejemplo: platzi.com/buscar?search=chatGPT. El signo de interrogación indica que se están enviando variables al servidor mediante el método GET.

+

Características del método GET:

+
    +
  • Las variables viajan visibles en la URL
  • +
  • Quedan registradas en el historial del navegador
  • +
  • No es adecuado para información sensible
  • +
+

¿Qué es el método POST?

+

Para información confidencial como nombres de usuario y contraseñas, se utiliza el método POST. Este método encapsula los datos en la cabecera de la petición HTTP, ocultándolos del historial del navegador y haciéndolos más seguros.

+

¿Qué significan los códigos de respuesta HTTP?

+

Los servidores responden con códigos numéricos que indican el estado de la petición:

+
    +
  • 200 OK: Todo está bien, la petición fue exitosa
  • +
  • 404 Not Found: La página o recurso solicitado no existe
  • +
  • 500 Server Error: Hay un problema en el servidor
  • +
  • 300 Redirect: La dirección ha cambiado y apunta a un nuevo lugar
  • +
+

¿Cómo funcionan otros protocolos y formatos de datos?

+

El modelo cliente-servidor no se limita a páginas web. Existen diferentes protocolos para distintos tipos de comunicación:

+

¿Qué protocolos se usan para el correo electrónico?

+

Para el correo electrónico se utilizan protocolos como:

+
    +
  • SMTP (Simple Message Transfer Protocol)
  • +
  • POP3 (Post Office Protocol 3)
  • +
  • IMAP (Internet Message Access Protocol)
  • +
+

Actualmente, pocas empresas gestionan sus propios servidores de correo debido a la complejidad que implica, delegando esta tarea principalmente a Microsoft (Outlook) o Google (Gmail).

+

¿Cómo se comunican las aplicaciones móviles con los servidores?

+

Las aplicaciones móviles no utilizan HTML, CSS o JavaScript como los navegadores. En su lugar:

+
    +
  • Usan lenguajes nativos como Java o Kotlin (Android) y Swift o Objective-C (iOS)
  • +
  • Para intercambiar datos con los servidores utilizan formatos como JSON (JavaScript Object Notation) o XML (Extended Markup Language)
  • +
+

A pesar de estas diferencias, el modelo básico sigue siendo el mismo: un cliente (la aplicación) realiza una petición a un servidor, que procesa la solicitud y devuelve una respuesta.

+

El modelo cliente-servidor es la columna vertebral de nuestra experiencia digital, permitiendo que dispositivos de todo tipo se comuniquen eficientemente a través de internet. Comprender estos conceptos fundamentales nos ayuda a navegar con mayor conocimiento por el mundo digital y a entender mejor cómo funcionan las tecnologías que usamos diariamente. ¿Qué otros aspectos de la comunicación cliente-servidor te gustaría explorar? Comparte tus inquietudes en los comentarios.

+
+
+ + \ No newline at end of file diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/03-Sistemas Operativos y Almacenamiento/01-Diferencias entre Windows Linux y MacOS.mp4" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/03-Sistemas Operativos y Almacenamiento/01-Diferencias entre Windows Linux y MacOS.mp4" new file mode 100644 index 0000000000000000000000000000000000000000..eb03f96df1e0b97a78c41244c616952c9fd3e56c --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/03-Sistemas Operativos y Almacenamiento/01-Diferencias entre Windows Linux y MacOS.mp4" @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e43431492a87fc00cc6eb8d012889f7f1b8d9e40735dc22894f32ca39b4eaef +size 200114412 diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/03-Sistemas Operativos y Almacenamiento/01-Diferencias entre Windows Linux y MacOS.vtt" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/03-Sistemas Operativos y Almacenamiento/01-Diferencias entre Windows Linux y MacOS.vtt" new file mode 100644 index 0000000000000000000000000000000000000000..f36daa8147d1aa9907459fb471e9f3e35ce27e6d --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/03-Sistemas Operativos y Almacenamiento/01-Diferencias entre Windows Linux y MacOS.vtt" @@ -0,0 +1,529 @@ +WEBVTT + +00:00:00.160 --> 00:00:03.120 +Las primeras computadoras no tenían sistemas operativos. Tú + +00:00:03.120 --> 00:00:06.100 +llegabas con tu programa, que eran una serie + +00:00:06.240 --> 00:00:09.679 +de tarjetas perforadas donde cada huequito significaba algo + +00:00:09.679 --> 00:00:12.320 +en el lenguaje ensamblador de la unidad de + +00:00:12.320 --> 00:00:15.245 +procesamiento central o CPU. La insertaba a ser + +00:00:15.245 --> 00:00:18.045 +un escáner que escaneaba los datos, procesaba y + +00:00:18.045 --> 00:00:20.765 +luego entregaba el resultado en una impresora de + +00:00:20.765 --> 00:00:23.244 +matriz de punto. Luego terminó pasando que estas + +00:00:23.244 --> 00:00:27.390 +computadoras querían poder correr múltiples diferentes programas, así + +00:00:27.390 --> 00:00:30.029 +que empezó la primera generación de sistemas operativos + +00:00:30.029 --> 00:00:33.790 +que eran capaces de cargar diferentes programas y + +00:00:33.790 --> 00:00:36.350 +representarlos de maneras distintas. Con el pasar del + +00:00:36.350 --> 00:00:38.670 +tiempo, se empezaron a necesitar que estos programas + +00:00:38.670 --> 00:00:41.835 +ocurrieran en paralelo o que 1 pudiera acceder + +00:00:41.835 --> 00:00:44.395 +con su propio nombre de usuario y tener + +00:00:44.395 --> 00:00:46.795 +su propia definición de permisos, y esto fue + +00:00:46.795 --> 00:00:48.875 +lo que fue construyendo el concepto que hoy + +00:00:48.875 --> 00:00:52.235 +en día conocemos como sistema operativo. La historia + +00:00:52.235 --> 00:00:55.289 +de los sistemas operativos empieza en varios diferentes + +00:00:55.289 --> 00:00:57.949 +lugares del mundo y realmente en varias compañías. + +00:00:58.170 --> 00:01:01.309 +Los primeros sistemas operativos evolucionaron de algo llamado + +00:01:01.370 --> 00:01:04.509 +Unix, UNIX, que fue 1 de los primeros + +00:01:04.650 --> 00:01:07.369 +grandes sistemas operativos del lado del servidor. Toda + +00:01:07.369 --> 00:01:10.005 +la computación inicia en servidores porque primero las + +00:01:10.005 --> 00:01:12.725 +computadoras eran unas cosas gigantescas que tenían que + +00:01:12.725 --> 00:01:16.104 +ser guardadas en edificios grandísimos y que ocupaban + +00:01:16.244 --> 00:01:19.045 +múltiples cuartos. Unix es un sistema que permitía + +00:01:19.045 --> 00:01:22.020 +tener múltiples diferentes usuarios y que divide las + +00:01:22.020 --> 00:01:23.960 +cosas, como lo hemos visto en clases anteriores, + +00:01:24.020 --> 00:01:26.180 +en un kernel, en un sistema de archivos + +00:01:26.180 --> 00:01:30.439 +con usuarios, etcétera. Estos Unix se fueron fragmentando + +00:01:30.740 --> 00:01:33.780 +y teniendo diferentes mecanismos. 1 de los mecanismos + +00:01:33.780 --> 00:01:36.600 +más populares de Unix lo conocemos como BSD, + +00:01:37.185 --> 00:01:39.505 +que tiene un iconito de un diablito. Los + +00:01:39.505 --> 00:01:42.305 +sistemas BSD, que inicialmente fueron sistemas de investigación + +00:01:42.305 --> 00:01:45.025 +en la Universidad de Berkeley, luego fueron creciendo + +00:01:45.025 --> 00:01:47.265 +y aumentándose, y esto lleva a la creación + +00:01:47.265 --> 00:01:49.240 +de empresas como son Micro Systems o a + +00:01:49.240 --> 00:01:52.479 +sistemas gratuitos como Free BSD. Con el pasar + +00:01:52.479 --> 00:01:54.560 +del tiempo, de aquí va a salir el + +00:01:54.560 --> 00:01:57.380 +sistema operativo que hoy conocemos como Mac OS + +00:01:57.920 --> 00:02:00.440 +X. Luego está la otra rama de Unix, + +00:02:00.440 --> 00:02:03.195 +que es la rama que se volvió Linux. + +00:02:03.355 --> 00:02:05.915 +Unix, como sistema, creó una serie de reglas + +00:02:05.915 --> 00:02:08.975 +que luego varios investigadores, entre ellos Linux Torvalds, + +00:02:09.435 --> 00:02:11.715 +crearon y construyeron de una manera de software + +00:02:11.715 --> 00:02:16.620 +completamente abierto, montado sobre una teoría de que + +00:02:16.620 --> 00:02:20.140 +el software tenía que ser gratuito, abierto y + +00:02:20.140 --> 00:02:22.160 +completamente libre para todo el mundo, creada originalmente + +00:02:22.220 --> 00:02:24.660 +por alguien llamado Richard Stallmann, en una fundación + +00:02:24.660 --> 00:02:28.495 +llamada GNU, con una licencia especial llamada la + +00:02:28.875 --> 00:02:31.614 +licencia GPL, que era una licencia de software + +00:02:32.075 --> 00:02:34.315 +libre. De aquí nace toda una revolución que + +00:02:34.315 --> 00:02:36.715 +termina creando Linux, el sistema operativo más popular + +00:02:36.715 --> 00:02:39.114 +de la tierra. La gran mayoría de servidores + +00:02:39.114 --> 00:02:41.390 +allá afuera usan Linux, la gran mayoría de + +00:02:41.390 --> 00:02:44.990 +desarrolladores de software profesionales terminan usando Linux o + +00:02:44.990 --> 00:02:47.390 +Unix, de alguna manera, en sus carreras. Y + +00:02:47.390 --> 00:02:50.610 +de Linux nacen también varias compañías muy grandes, + +00:02:51.070 --> 00:02:55.310 +RedHat, Debian, Ubuntu y probablemente la versión de + +00:02:55.310 --> 00:02:58.195 +Linux más popular del mundo, que es Android, + +00:02:58.195 --> 00:02:59.875 +en la que corren la gran mayoría de + +00:02:59.875 --> 00:03:02.515 +teléfonos del planeta. El Mac viene de un + +00:03:02.515 --> 00:03:05.395 +lugar muy único. En los años setentas había + +00:03:05.395 --> 00:03:08.375 +un laboratorio en Silicon Valley llamado el laboratorio + +00:03:08.515 --> 00:03:11.519 +Zerox Park, en Palo Alto. Palo Alto es + +00:03:11.519 --> 00:03:13.519 +un pueblito al sur de San Francisco que, + +00:03:13.519 --> 00:03:16.739 +si ustedes van, eso parece un pueblito latinoamericano + +00:03:17.200 --> 00:03:19.599 +de piscinas balneario. Pero ahí también está muy + +00:03:19.599 --> 00:03:22.080 +cerca Stanford y otras universidades grandes, y estaba + +00:03:22.080 --> 00:03:24.525 +el laboratorio de Xerox. Hoy conocemos a Xerox + +00:03:24.525 --> 00:03:26.605 +como la empresa que hace impresoras, pero en + +00:03:26.605 --> 00:03:28.685 +la época Xerox tenían los laboratorios de computación + +00:03:28.685 --> 00:03:31.245 +más avanzados del mundo. En ese laboratorio, ellos + +00:03:31.245 --> 00:03:35.084 +construyeron la primera computadora con una interfaz gráfica + +00:03:35.084 --> 00:03:38.590 +basada en ventanas, y crearon el concepto que + +00:03:38.590 --> 00:03:41.010 +hoy en día todos usamos llamado el mouse. + +00:03:41.390 --> 00:03:44.030 +Le dieron un paseo a una persona que + +00:03:44.030 --> 00:03:47.329 +estaba construyendo en las primeras empresas de computación + +00:03:47.709 --> 00:03:50.275 +personal en la época, Steve Jobs y Steve + +00:03:50.275 --> 00:03:52.935 +Bostiack. Ellos vieron lo que estaba haciendo Zerox + +00:03:53.155 --> 00:03:56.114 +y, básicamente, se lo robaron y construyeron una + +00:03:56.114 --> 00:03:59.094 +versión del sistema operativo de Zerox de distribución + +00:03:59.234 --> 00:04:02.594 +masiva. Esta es la computadora Lisa. Lisa no + +00:04:02.594 --> 00:04:04.819 +fue un éxito comercial, pero las teorías de + +00:04:04.819 --> 00:04:07.060 +Lisa luego se aplicaron de una manera con + +00:04:07.060 --> 00:04:10.760 +mucho éxito comercial en el Macintosh, o Mac, + +00:04:10.980 --> 00:04:13.640 +que es la primera computadora con interfaz gráfica + +00:04:13.700 --> 00:04:16.019 +de distribución masiva en el planeta. Al tiempo + +00:04:16.019 --> 00:04:18.019 +que el laboratorio ZeroX Park había creado este + +00:04:18.019 --> 00:04:21.964 +sistema operativo visual, otra empresa creó un sistema + +00:04:21.964 --> 00:04:25.565 +operativo basado completamente en texto y controlado por + +00:04:25.565 --> 00:04:28.605 +disquetes, esos discos de plástico. Este sistema es + +00:04:28.605 --> 00:04:31.645 +conocido como CPM, Control Program Monitor, y fue + +00:04:31.645 --> 00:04:35.030 +construido por una empresa llamada Digital Research. Ellos + +00:04:35.890 --> 00:04:38.210 +desarrollan esta teoría de los sistemas operativos basados + +00:04:38.210 --> 00:04:42.290 +en texto controlados por disket en paralelo distinto + +00:04:42.290 --> 00:04:45.570 +a Unix. Unix también era controlado por texto, + +00:04:45.570 --> 00:04:47.510 +por una terminal y una línea de comandos, + +00:04:47.695 --> 00:04:50.655 +pero Unix estaba hecho para servidores. CPM es + +00:04:50.655 --> 00:04:53.455 +el padre de los sistemas operativos basados en + +00:04:53.455 --> 00:04:56.815 +computadoras. Otra persona decidió crear una versión más + +00:04:56.815 --> 00:05:00.330 +simple de este sistema operativo llamado 2, o + +00:05:00.790 --> 00:05:04.870 +2. Famosamente, Bill Gates, a través de la + +00:05:04.870 --> 00:05:07.670 +conexión que su mamá tenía como asistente del + +00:05:07.670 --> 00:05:10.390 +CEO de IBM, le vende a IBM la + +00:05:10.390 --> 00:05:11.830 +idea de que ellos ya tienen un sistema + +00:05:11.830 --> 00:05:14.485 +operativo, pero no la tenían. Fueron, le compraron + +00:05:14.485 --> 00:05:17.125 +2 a otra persona, y esa persona que + +00:05:17.125 --> 00:05:20.245 +les vende 2 termina vendiéndoles la cosa que + +00:05:20.245 --> 00:05:23.525 +se convierte en Microsoft 2, que por 50000 + +00:05:23.525 --> 00:05:25.685 +dólares construye la semilla de 1 de los + +00:05:25.685 --> 00:05:28.150 +imperios más grandes de la historia, Microsoft. Similar + +00:05:28.150 --> 00:05:30.150 +a cuando en Zedox Park en Palo Alto + +00:05:30.150 --> 00:05:32.390 +los investigadores le dieron un paseo al equipo + +00:05:32.390 --> 00:05:35.190 +de Steve Jobs, Steve Jobs en Apple le + +00:05:35.190 --> 00:05:37.510 +dio un paseo a Bill Gates y al + +00:05:37.510 --> 00:05:39.910 +agente de Microsoft, y cuando Microsoft se dio + +00:05:39.910 --> 00:05:41.350 +cuenta de lo que Apple está haciendo con + +00:05:41.350 --> 00:05:43.764 +Mac, se fueron de regreso a la empresa + +00:05:43.764 --> 00:05:47.044 +y empezaron a alta velocidad a desarrollar un + +00:05:47.044 --> 00:05:50.264 +clon de este sistema operativo para computadoras IBM + +00:05:50.405 --> 00:05:52.885 +y para computadoras de escritorio genéricas que otros + +00:05:52.885 --> 00:05:57.030 +fabricantes pudieran fabricar. Mac, Apple fabricaba su propia + +00:05:57.030 --> 00:05:59.669 +computadora y su propio sistema operativo. Microsoft no + +00:05:59.669 --> 00:06:01.990 +fabricaba computadoras. Ese negocio se lo dejaba a + +00:06:01.990 --> 00:06:04.550 +Compact, a IBM y a otros fabricantes. Ellos + +00:06:04.550 --> 00:06:07.030 +solamente hacían sistemas operativos. Y con lo que + +00:06:07.030 --> 00:06:10.395 +aprendieron del Mac, crearon un sistema operativo gráfico + +00:06:11.014 --> 00:06:14.375 +clonando las ideas que habían extraído del Mac + +00:06:14.375 --> 00:06:16.935 +y este lo llamaron Windows. De ahí nace + +00:06:16.935 --> 00:06:18.775 +Windows 3, que eventualmente el más popular se + +00:06:18.775 --> 00:06:21.180 +vuelve Windows 3.1, y esto le da inicio + +00:06:21.180 --> 00:06:22.700 +a una de las guerras de la época + +00:06:22.700 --> 00:06:25.180 +que fue la guerra de los sistemas operativos. + +00:06:25.180 --> 00:06:28.960 +Windows 3.1, Windows 95, Windows Millenium, Windows 2000 + +00:06:29.420 --> 00:06:31.760 +Professional, antes de eso el Windows que tenía + +00:06:31.980 --> 00:06:35.425 +Internet, Windows NT, entre muchos, muchos otros. Hoy + +00:06:35.425 --> 00:06:37.745 +en día tenemos 3 grandes sistemas operativos que + +00:06:37.745 --> 00:06:40.145 +dominan nuestra computación. Windows, que es la gran + +00:06:40.145 --> 00:06:42.384 +mayoría de las personas, Linux, que es la + +00:06:42.384 --> 00:06:45.264 +gran mayoría de los servidores, y MacOS. Estos + +00:06:45.264 --> 00:06:48.465 +3 sistemas operativos compiten y tienen, pues, diferentes + +00:06:48.465 --> 00:06:50.860 +usos. Windows es el sistema operativo de Microsoft, + +00:06:50.919 --> 00:06:53.160 +es la interfaz gráfica por excelencia, es el + +00:06:53.160 --> 00:06:54.520 +que más usan los gamers y es el + +00:06:54.520 --> 00:06:56.680 +más común. Linux es el más usado por + +00:06:56.680 --> 00:07:00.120 +desarrolladores de software profesionales, seguido de Mac, que + +00:07:00.120 --> 00:07:02.632 +también, al ser un sistema Unix, se parece + +00:07:02.632 --> 00:07:05.890 +mucho a Linux, son sistemas que tienen filosofías + +00:07:05.890 --> 00:07:07.745 +muy similares, y la diferencia es que Linux + +00:07:07.745 --> 00:07:09.825 +es un sistema operativo abierto donde Mac, a + +00:07:09.825 --> 00:07:13.044 +pesar de que usa el núcleo abierto de + +00:07:13.105 --> 00:07:16.280 +BSD, es un sistema cerrado. En sistemas operativos + +00:07:16.280 --> 00:07:19.400 +móviles también hay 2 grandes versiones, iOS, iPhone, + +00:07:19.400 --> 00:07:22.280 +que por cierto, iOS internamente es el mismo + +00:07:22.280 --> 00:07:24.919 +núcleo de un Mac, es VSD, es un + +00:07:24.919 --> 00:07:28.099 +sistema Unix como VSD. Y luego está Android, + +00:07:28.199 --> 00:07:31.354 +que internamente es un Linux. Hay diferentes versiones + +00:07:31.354 --> 00:07:34.074 +de Android, dependiendo del teléfono que compres, hay + +00:07:34.074 --> 00:07:37.435 +un solo iOS, porque es de Apple. Uses + +00:07:37.435 --> 00:07:39.775 +el que uses, mi sugerencia es que aprendas + +00:07:39.835 --> 00:07:42.555 +Linux. Toma ya mismo el curso de Linux + +00:07:42.555 --> 00:07:44.889 +de Platzi y determina línea de comandos. Los + +00:07:44.889 --> 00:07:48.410 +desarrolladores de software profesionales usan Linux, por lo + +00:07:48.410 --> 00:07:50.009 +menos en algún punto de sus vidas, y + +00:07:50.009 --> 00:07:53.470 +dominan Linux. Aprender Linux me cambió la vida. + +00:07:53.770 --> 00:07:56.650 +Todas las súper computadoras del planeta usan Linux, + +00:07:56.650 --> 00:07:59.050 +todos los servidores del planeta usan una versión + +00:07:59.050 --> 00:08:02.645 +de Linux. Linux es un conocimiento fundamental. Si + +00:08:02.645 --> 00:08:04.565 +esto te interesa y esto debe interesarte, no + +00:08:04.565 --> 00:08:06.905 +estarías en este punto de la clase, aprende + +00:08:07.044 --> 00:08:09.125 +Linux, hazlo por mí, hazlo por ti que + +00:08:09.125 --> 00:08:11.445 +cree en mí. Aprende Linux hoy, toma el + +00:08:11.445 --> 00:08:14.645 +curso Linux de Platzi, aprende Linux, Linux te + +00:08:14.645 --> 00:08:15.243 +cambia la vida. diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/03-Sistemas Operativos y Almacenamiento/01-Lecturas recomendadas.txt" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/03-Sistemas Operativos y Almacenamiento/01-Lecturas recomendadas.txt" new file mode 100644 index 0000000000000000000000000000000000000000..53671cfd93dc639c68c280d4aa9dde74e84b4c4e --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/03-Sistemas Operativos y Almacenamiento/01-Lecturas recomendadas.txt" @@ -0,0 +1,3 @@ +https://platzi.com/cursos/prework-linux/ +https://platzi.com/cursos/servidores-linux/ +https://platzi.com/cursos/terminal diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/03-Sistemas Operativos y Almacenamiento/01-Resumen.html" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/03-Sistemas Operativos y Almacenamiento/01-Resumen.html" new file mode 100644 index 0000000000000000000000000000000000000000..1ef01d6ac34525543e100d2d82cb8e25184bb32d --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/03-Sistemas Operativos y Almacenamiento/01-Resumen.html" @@ -0,0 +1,162 @@ + + + + + + + Diferencias entre Windows, Linux y MacOS + + + +
+
+

Resumen

La evolución de los sistemas operativos ha transformado radicalmente nuestra interacción con la tecnología, pasando de simples tarjetas perforadas a sofisticados sistemas que gestionan múltiples tareas simultáneamente. Este viaje fascinante a través de la historia de la computación nos muestra cómo los sistemas operativos se han convertido en el corazón de nuestros dispositivos, definiendo no solo su funcionamiento sino también las posibilidades que ofrecen a usuarios y desarrolladores.

+

¿Cómo nacieron los sistemas operativos?

+

Las primeras computadoras operaban sin sistemas operativos. El proceso era rudimentario: los programadores llegaban con tarjetas perforadas que contenían instrucciones en lenguaje ensamblador para la CPU. Estas tarjetas se escaneaban, la computadora procesaba la información y finalmente entregaba los resultados a través de una impresora de matriz de puntos.

+

Con el tiempo, surgió la necesidad de ejecutar múltiples programas en una misma máquina, lo que dio origen a la primera generación de sistemas operativos. Estos sistemas evolucionaron para permitir:

+
    +
  • La ejecución de programas en paralelo.
  • +
  • El acceso mediante nombres de usuario individuales.
  • +
  • La definición de permisos específicos para cada usuario.
  • +
+

Esta evolución sentó las bases de lo que hoy conocemos como sistemas operativos modernos, capaces de gestionar recursos, programas y usuarios de manera eficiente.

+

El nacimiento de Unix y su legado

+

Unix representa uno de los pilares fundamentales en la historia de los sistemas operativos. Desarrollado inicialmente para servidores (cuando las computadoras ocupaban edificios enteros), Unix introdujo conceptos revolucionarios como:

+
    +
  • La división en kernel (núcleo del sistema)
  • +
  • Un sistema de archivos organizado
  • +
  • Gestión de múltiples usuarios
  • +
+

A partir de Unix, surgieron dos grandes ramas que definirían el futuro de la computación:

+
    +
  1. +

    BSD (Berkeley Software Distribution): Desarrollado en la Universidad de Berkeley, reconocible por su icónico diablito. De esta rama eventualmente surgiría macOS.

    +
  2. +
  3. +

    Linux: Creado por Linus Torvalds sobre los principios de software libre establecidos por Richard Stallman y la Fundación GNU con su licencia GPL. Linux se convertiría en el sistema operativo más popular del planeta, especialmente en servidores.

    +
  4. +
+

Linux ha dado origen a distribuciones importantes como RedHat, Debian, Ubuntu y, quizás la más utilizada globalmente, Android, que impulsa la mayoría de los teléfonos inteligentes actuales.

+

¿Cómo surgieron las interfaces gráficas?

+

La revolución de las interfaces gráficas tiene su origen en un lugar inesperado: los laboratorios Xerox PARC en Palo Alto, California. Aunque hoy conocemos a Xerox principalmente por sus impresoras, en los años 70 poseían los laboratorios de computación más avanzados del mundo.

+

En estos laboratorios se desarrollaron dos conceptos revolucionarios:

+
    +
  • La primera interfaz gráfica basada en ventanas
  • +
  • El mouse como dispositivo de entrada
  • +
+

Steve Jobs y Steve Wozniak, fundadores de Apple, visitaron estos laboratorios y, inspirados por lo que vieron, adaptaron estos conceptos para crear sus propios sistemas. Aunque su primera computadora con interfaz gráfica, Lisa, no tuvo éxito comercial, sentó las bases para el Macintosh (Mac), que se convertiría en la primera computadora con interfaz gráfica de distribución masiva.

+

Windows y la democratización de la interfaz gráfica

+

Paralelamente al desarrollo de interfaces gráficas, existían sistemas operativos basados completamente en texto, como CPM (Control Program Monitor) de Digital Research, diseñado para computadoras personales y controlado mediante disquetes.

+

Bill Gates, aprovechando las conexiones familiares con IBM, vendió la idea de un sistema operativo que aún no poseía. Tras adquirir un sistema similar llamado QDOS, Microsoft lo transformó en MS-DOS, estableciendo los cimientos de uno de los imperios tecnológicos más grandes de la historia.

+

Cuando Bill Gates visitó Apple y vio el Macintosh, regresó a Microsoft determinado a crear un sistema operativo gráfico similar para computadoras IBM y compatibles. Así nació Windows, que evolucionaría a través de versiones como:

+
    +
  • Windows 3.1
  • +
  • Windows 95
  • +
  • Windows Millennium
  • +
  • Windows NT
  • +
  • Windows 2000 Professional
  • +
+

Esta evolución desencadenó la famosa "guerra de los sistemas operativos" que definiría el panorama tecnológico durante décadas.

+

¿Cuál es el panorama actual de los sistemas operativos?

+

Actualmente, tres grandes sistemas operativos dominan el mercado de computadoras personales:

+
    +
  1. +

    Windows: El más utilizado por usuarios comunes y gamers, destacado por su interfaz gráfica accesible.

    +
  2. +
  3. +

    Linux: Preferido por desarrolladores de software profesionales y utilizado en la mayoría de servidores del mundo. Es un sistema abierto y gratuito.

    +
  4. +
  5. +

    macOS: Basado en Unix (específicamente en BSD), combina la potencia de los sistemas Unix con una interfaz refinada, aunque es un sistema cerrado.

    +
  6. +
+

En el ámbito móvil, dos sistemas dominan el mercado:

+
    +
  • iOS: El sistema de Apple para iPhone, que internamente comparte el mismo núcleo BSD de macOS.
  • +
  • Android: Basado en Linux, con diferentes versiones según el fabricante del dispositivo.
  • +
+

Independientemente del sistema que utilices, dominar Linux representa una ventaja significativa para cualquier profesional de la tecnología. Todas las supercomputadoras y la mayoría de servidores del mundo utilizan Linux, convirtiéndolo en un conocimiento fundamental para desarrolladores.

+

El viaje de los sistemas operativos continúa evolucionando, adaptándose a nuevas tecnologías y necesidades. Comprender su historia nos ayuda a apreciar mejor las herramientas que utilizamos diariamente y a tomar decisiones más informadas sobre qué sistemas utilizar según nuestros objetivos profesionales.

+

¿Has experimentado con diferentes sistemas operativos? ¿Cuál ha sido tu experiencia con Linux? Comparte tus experiencias en los comentarios y continúa explorando este fascinante mundo de la tecnología que define nuestra interacción digital.

+
+
+ + \ No newline at end of file diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/03-Sistemas Operativos y Almacenamiento/02-Permisos niveles de procesos y privilegios de ejecuci\303\263n.mp4" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/03-Sistemas Operativos y Almacenamiento/02-Permisos niveles de procesos y privilegios de ejecuci\303\263n.mp4" new file mode 100644 index 0000000000000000000000000000000000000000..5ac17835478dcae904fb704a6232dbcd54092a8d --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/03-Sistemas Operativos y Almacenamiento/02-Permisos niveles de procesos y privilegios de ejecuci\303\263n.mp4" @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a41be1ee616d245af48737286cc0e0ebefc3ac092f523727a8b18c57a81b56e2 +size 153911323 diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/03-Sistemas Operativos y Almacenamiento/02-Permisos niveles de procesos y privilegios de ejecuci\303\263n.vtt" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/03-Sistemas Operativos y Almacenamiento/02-Permisos niveles de procesos y privilegios de ejecuci\303\263n.vtt" new file mode 100644 index 0000000000000000000000000000000000000000..6df1bf47df1da73b52267b1350933dda79cb3b72 --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/03-Sistemas Operativos y Almacenamiento/02-Permisos niveles de procesos y privilegios de ejecuci\303\263n.vtt" @@ -0,0 +1,415 @@ +WEBVTT + +00:00:00.160 --> 00:00:03.620 +Es muy normal que tengamos archivos en servidores + +00:00:03.679 --> 00:00:05.440 +o en computadoras que no son nuestras o + +00:00:05.440 --> 00:00:08.500 +que estamos compartiendo con otras personas. Por ejemplo, + +00:00:08.559 --> 00:00:12.240 +cuando tú compras un hosting de Digital Ocean, + +00:00:12.240 --> 00:00:14.705 +en Amazon Web Services, en donde sea, que + +00:00:14.705 --> 00:00:17.265 +realmente estás comprando es un pedacito de un + +00:00:17.265 --> 00:00:19.744 +computador que estás compartiendo con 10, 100000 o + +00:00:19.744 --> 00:00:22.545 +1000000 de otros usuarios. Así que necesitas una + +00:00:22.545 --> 00:00:25.665 +forma de gestionar los permisos, los accesos, los + +00:00:25.665 --> 00:00:28.930 +privilegios de ejecución, entre muchas otras cosas. Vamos + +00:00:28.930 --> 00:00:31.150 +a asumir, por ejemplo, que tenemos un archivo + +00:00:31.570 --> 00:00:35.610 +nómina punto HTML, y ese archivo queremos que + +00:00:35.610 --> 00:00:38.250 +tú, como el administrador, tengas permisos para todo, + +00:00:38.250 --> 00:00:40.250 +porque el administrador lo puede todo. El administrador + +00:00:40.250 --> 00:00:42.410 +es el dueño de la computadora, que es + +00:00:42.410 --> 00:00:45.155 +básicamente quien tiene el nombre de usuario de + +00:00:45.155 --> 00:00:48.995 +administrador y la contraseña administrador que permite acceder + +00:00:48.995 --> 00:00:51.714 +a toda la computadora. Luego tienes grupos de + +00:00:51.714 --> 00:00:53.635 +usuarios, entonces imagina que tienes un equipo de + +00:00:53.635 --> 00:00:56.020 +desarrolladores, lo vamos a llamar devs. Y por + +00:00:56.020 --> 00:00:59.219 +último está el público general, quienes deberían acceder + +00:00:59.219 --> 00:01:02.920 +al archivo. ¿Qué debería poder hacer el público? + +00:01:02.980 --> 00:01:05.319 +Leer el archivo, pero no lo pueden modificar, + +00:01:05.780 --> 00:01:08.259 +no lo pueden borrar, no lo pueden volver + +00:01:08.259 --> 00:01:11.475 +un ejecutable, es decir, que cuyo código corra + +00:01:11.475 --> 00:01:13.875 +en la CPU. Eso no lo puede hacer + +00:01:13.875 --> 00:01:15.795 +el público, solamente lo pueden leer. ¿Qué deberían + +00:01:15.795 --> 00:01:18.455 +poder hacer los devs? Los devs, los desarrolladores + +00:01:18.674 --> 00:01:21.955 +del equipo, deberían poder leerlo y escribirlo. Y, + +00:01:21.955 --> 00:01:24.115 +por último, el administrador debería poder hacer cualquier + +00:01:24.115 --> 00:01:26.660 +cosa. En los sistemas tipo Unix, como Linux, + +00:01:27.280 --> 00:01:31.440 +Mac, etcétera, típicamente hay 3 grandes permisos. El + +00:01:31.440 --> 00:01:33.680 +permiso de lectura, que se escribe con letra + +00:01:33.680 --> 00:01:36.500 +r minúscula, el de escritura, con la w + +00:01:36.720 --> 00:01:39.525 +minúscula, o el de ejecución, con la x. + +00:01:39.845 --> 00:01:42.505 +La ejecución es la capacidad de que el + +00:01:42.805 --> 00:01:46.085 +contenido de ese archivo corra como un archivo + +00:01:46.085 --> 00:01:48.965 +ejecutable, como una aplicación. En Windows, por ejemplo, + +00:01:48.965 --> 00:01:51.285 +eso se logra cambiando la extensión del archivo + +00:01:51.285 --> 00:01:54.000 +a una extensión punto exe. Cuando tú la + +00:01:54.000 --> 00:01:56.560 +corres, te va a sacar un anuncio del + +00:01:56.560 --> 00:01:58.479 +sistema operativo de Microsoft Windows, que te va + +00:01:58.479 --> 00:02:00.079 +a decir, ¿estás seguro que quieres correr esta + +00:02:00.079 --> 00:02:03.360 +aplicación? Algunos desarrolladores de software le piden permiso + +00:02:03.360 --> 00:02:05.360 +a Microsoft para que Microsoft les dé una + +00:02:05.360 --> 00:02:07.439 +llave especial de cifrado que le pueden pegar + +00:02:07.439 --> 00:02:09.595 +a sus aplicaciones, de tal manera que esa + +00:02:09.595 --> 00:02:12.475 +advertencia no ocurra. En Mac pasa lo mismo + +00:02:12.475 --> 00:02:15.035 +con Apple, cuando, por ejemplo, ustedes corren una + +00:02:15.035 --> 00:02:18.875 +aplicación descargada de la tienda de aplicaciones de + +00:02:18.875 --> 00:02:21.675 +Mac, la App Store. En los sistemas operativos + +00:02:21.675 --> 00:02:23.995 +móviles, como Android o iPhone, esto no es + +00:02:23.995 --> 00:02:27.750 +necesario porque tanto Google como Apple revisaron las + +00:02:28.129 --> 00:02:30.150 +aplicaciones antes de que salieran a la luz. + +00:02:30.690 --> 00:02:32.290 +Pero en Linux, la forma en la que + +00:02:32.290 --> 00:02:35.370 +se hace es colocándole la x en los + +00:02:35.370 --> 00:02:38.230 +permisos del archivo. ¿Cómo funciona esto? Esto funciona + +00:02:38.450 --> 00:02:40.935 +en el sistema operativo. Cuando tú estás, por + +00:02:40.935 --> 00:02:42.855 +ejemplo, en la terminal o línea de comandos, + +00:02:42.855 --> 00:02:44.615 +te recomiendo que tomes el curso de terminal + +00:02:44.615 --> 00:02:47.735 +línea de comandos y que aprendas Linux. Vas + +00:02:47.735 --> 00:02:49.255 +a ver que en la lista de los + +00:02:49.255 --> 00:02:52.135 +archivos a veces salen estas letras, RWX, en + +00:02:52.135 --> 00:02:54.500 +diferentes grupos. Entonces, yo podría decir que el + +00:02:54.500 --> 00:02:58.260 +administrador tiene permisos RWX para el archivo nómina + +00:02:58.260 --> 00:03:00.420 +punto HTML, o sea, que lo puede leer, + +00:03:00.420 --> 00:03:02.420 +escribir y que lo puede volver un ejecutable. + +00:03:02.420 --> 00:03:05.700 +Pero el equipo devs solamente tiene permisos RW, + +00:03:05.700 --> 00:03:08.445 +de lectura y de escritura. Y por último, + +00:03:08.445 --> 00:03:10.605 +que el equipo del público, o sea, la + +00:03:10.605 --> 00:03:13.085 +gente pública, cualquier persona que accede al servidor, + +00:03:13.085 --> 00:03:15.885 +lo puede leer, pero nada más. Existen diferentes + +00:03:15.885 --> 00:03:17.805 +comandos en el mundo de Linux o de + +00:03:17.805 --> 00:03:20.060 +Unix que permiten hacer este cambio. 1 de + +00:03:20.060 --> 00:03:22.560 +los comandos más populares es el comando CHMOD, + +00:03:24.140 --> 00:03:27.740 +o change mode, CHMOD. CHMOD es un comando + +00:03:27.740 --> 00:03:29.660 +al que yo le agrego unos números y + +00:03:29.660 --> 00:03:33.055 +esos números representan el RWX. Para saber cómo + +00:03:33.055 --> 00:03:35.295 +funcionan esos números, mi recomendación toma el curso + +00:03:35.295 --> 00:03:37.295 +de Linux, eso es mucho más profundo. Lo + +00:03:37.295 --> 00:03:38.575 +que tienes que saber en este momento es + +00:03:38.575 --> 00:03:40.835 +que existen grupos de usuario que tienen diferentes + +00:03:41.055 --> 00:03:43.935 +permisos de lectura, escritura y ejecución de archivos, + +00:03:43.935 --> 00:03:46.580 +y esos permisos los determina el administrador. Como + +00:03:46.580 --> 00:03:49.159 +dato curioso, en los sistemas Unix o Linux, + +00:03:49.379 --> 00:03:51.379 +los permisos de administrador se pueden invocar en + +00:03:51.379 --> 00:03:53.780 +cualquier momento agregando antes de la ejecución de + +00:03:53.780 --> 00:03:56.040 +un comando un comando que se llama sudo, + +00:03:56.180 --> 00:03:59.700 +SUD0. Siempre que colocas sudo, espacio, y un + +00:03:59.700 --> 00:04:01.555 +comando, el sistema operativo te va a preguntar + +00:04:01.555 --> 00:04:04.875 +la contraseña del administrador, y una vez la + +00:04:04.875 --> 00:04:07.195 +colocas, todos los comandos que coloques después de + +00:04:07.195 --> 00:04:10.075 +la palabra sudo se ejecutan como administrador. Esa + +00:04:10.075 --> 00:04:12.075 +es una forma de ejecutar comandos como administrador + +00:04:12.075 --> 00:04:16.110 +sin entrar el usuario de administrador, desde cualquier + +00:04:16.110 --> 00:04:18.350 +usuario. En Windows o en Mac lo puedes + +00:04:18.350 --> 00:04:20.750 +hacer en la interfaz gráfica, le das clic + +00:04:20.750 --> 00:04:23.230 +derecho a un archivo, le des información y + +00:04:23.230 --> 00:04:26.130 +vas a encontrar diferentes interfaces que te indican + +00:04:26.350 --> 00:04:28.190 +cuáles son los permisos de acceso a cada + +00:04:28.190 --> 00:04:30.705 +archivo y su nivel de privilegios. Un privilegio + +00:04:30.764 --> 00:04:33.005 +es el poder ejecutarse como aplicación o el + +00:04:33.005 --> 00:04:36.785 +no ejecutarse, el poder editarlo o solamente acceder + +00:04:36.845 --> 00:04:39.805 +él en modo lectura. Los archivos típicamente son + +00:04:39.805 --> 00:04:42.044 +de un dueño, el dueño es el usuario + +00:04:42.044 --> 00:04:43.965 +que lo creó. Si los devs crearon el + +00:04:43.965 --> 00:04:45.720 +archivo, el dueño va a ser los devs. + +00:04:45.800 --> 00:04:47.880 +Si tenemos otro tipo de usuario que crea + +00:04:47.880 --> 00:04:49.160 +un archivo, pues ese va a ser el + +00:04:49.160 --> 00:04:51.800 +dueño. Dependiendo del dueño del archivo, es la + +00:04:51.800 --> 00:04:53.720 +capacidad de acceso al archivo y va a + +00:04:53.720 --> 00:04:55.660 +depender de quién tenga el usuario y contraseña + +00:04:56.120 --> 00:04:58.725 +dentro del sistema operativo que acceda al archivo. + +00:04:58.965 --> 00:05:00.985 +Es posible cambiar los dueños de los archivos. + +00:05:01.205 --> 00:05:03.525 +En Linux se hace con CHO 1, en + +00:05:03.525 --> 00:05:05.205 +Windows y en Mac se hacen la interfaz + +00:05:05.205 --> 00:05:08.245 +gráfica dándole clic derecho al archivo y cambiando + +00:05:08.245 --> 00:05:11.045 +sus propiedades. Como práctica general de seguridad, 1 + +00:05:11.045 --> 00:05:13.960 +debería asegurarse que los archivos siempre tengan la + +00:05:13.960 --> 00:05:17.480 +mínima cantidad de permisos y privilegios. Entre más + +00:05:17.480 --> 00:05:19.880 +permisos y privilegios tenga un archivo, más problemas + +00:05:19.880 --> 00:05:22.940 +de seguridad puede traer ese archivo. Realmente aquí + +00:05:23.240 --> 00:05:26.415 +la única excepción es Windows. Windows, 1 le + +00:05:26.415 --> 00:05:28.014 +puede dar clic derecho a un archivo y + +00:05:28.014 --> 00:05:31.074 +decirle correr el archivo como administrador, es el + +00:05:31.215 --> 00:05:33.935 +equivalente al comando sudo en Linux o en + +00:05:33.935 --> 00:05:36.495 +Mac. En Windows casi nada ocurre en la + +00:05:36.495 --> 00:05:38.735 +terminal y casi todo ocurre en la interfaz + +00:05:38.735 --> 00:05:41.360 +gráfica. Y en Windows los ejecutables tienen que + +00:05:41.360 --> 00:05:43.940 +tener un formato especial conocido como el .exe, + +00:05:44.240 --> 00:05:46.080 +donde en Linux o en Mac tú puedes + +00:05:46.080 --> 00:05:48.080 +tener un script de Python que se puede + +00:05:48.080 --> 00:05:50.479 +volver un ejecutable perfectamente a pesar de que + +00:05:50.479 --> 00:05:52.575 +internamente sea un archivo de texto. Esto va + +00:05:52.575 --> 00:05:55.135 +a depender mucho del formato interno del archivo + +00:05:55.135 --> 00:05:56.655 +de lo cual vamos a hablar más a + +00:05:56.655 --> 00:05:58.495 +fondo en la próxima clase, nuestra clase de + +00:05:58.495 --> 00:05:59.555 +formatos de archivos. diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/03-Sistemas Operativos y Almacenamiento/02-Resumen.html" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/03-Sistemas Operativos y Almacenamiento/02-Resumen.html" new file mode 100644 index 0000000000000000000000000000000000000000..5ece4e863753b1efa603e9787e81585cf4a10b70 --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/03-Sistemas Operativos y Almacenamiento/02-Resumen.html" @@ -0,0 +1,157 @@ + + + + + + + Permisos, niveles de procesos y privilegios de ejecución + + + +
+
+

Resumen

La gestión de permisos y privilegios en sistemas operativos es un componente fundamental para mantener la seguridad y el control de acceso a nuestros archivos. Cuando trabajamos en entornos compartidos, como servidores en la nube o equipos de desarrollo, entender cómo funcionan estos mecanismos nos permite proteger nuestra información y establecer flujos de trabajo eficientes. Veamos cómo se manejan estos permisos en diferentes sistemas y por qué son tan importantes.

+

¿Cómo funcionan los permisos de archivos en sistemas tipo Unix?

+

En sistemas operativos basados en Unix, como Linux o macOS, existe un sistema de permisos que permite controlar quién puede hacer qué con cada archivo. Este sistema se basa en tres tipos principales de permisos:

+
    +
  • Lectura (r): Permite ver el contenido del archivo.
  • +
  • Escritura (w): Permite modificar o eliminar el archivo.
  • +
  • Ejecución (x): Permite ejecutar el archivo como un programa.
  • +
+

Estos permisos se asignan a tres categorías de usuarios:

+
    +
  1. El propietario del archivo (quien lo creó)
  2. +
  3. El grupo al que pertenece el archivo
  4. +
  5. Todos los demás usuarios (público)
  6. +
+

Por ejemplo, imaginemos un archivo llamado "nomina.html" en un servidor compartido. Podríamos configurar los permisos de la siguiente manera:

+
    +
  • Administrador: permisos rwx (puede leer, escribir y ejecutar)
  • +
  • Equipo de desarrolladores (devs): permisos rw (pueden leer y escribir, pero no ejecutar)
  • +
  • Público: permiso r (solo pueden leer)
  • +
+

Esta configuración garantiza que cada tipo de usuario tenga exactamente los privilegios que necesita, ni más ni menos.

+

¿Cómo modificar los permisos en Linux?

+

En Linux, el comando principal para modificar permisos es chmod (change mode). Este comando utiliza una notación numérica para representar los permisos:

+
chmod 754 nomina.html
+
+

Aunque la explicación detallada de la notación numérica requiere un estudio más profundo de Linux, lo importante es entender que estos números representan combinaciones de los permisos r, w y x para cada categoría de usuario.

+

Otro comando importante es chown, que permite cambiar el propietario de un archivo:

+
chown nuevodueno nomina.html
+
+

El comando sudo y los privilegios de administrador

+

En sistemas Unix/Linux, existe una forma especial de ejecutar comandos con privilegios de administrador sin necesidad de iniciar sesión como tal. Esto se logra mediante el comando sudo:

+
sudo chmod 777 nomina.html
+
+

Al ejecutar un comando con sudo, el sistema solicitará la contraseña de administrador y, una vez proporcionada, el comando se ejecutará con todos los privilegios de administrador. Esta herramienta es extremadamente poderosa y debe usarse con precaución.

+

¿Cómo se manejan los permisos en Windows?

+

Windows maneja los permisos de manera diferente a los sistemas Unix. En lugar de usar comandos en la terminal, la mayoría de las operaciones se realizan a través de la interfaz gráfica:

+
    +
  1. Clic derecho en el archivo
  2. +
  3. Seleccionar "Propiedades"
  4. +
  5. Ir a la pestaña "Seguridad"
  6. +
  7. Modificar los permisos según sea necesario
  8. +
+

Una diferencia notable en Windows es el manejo de los archivos ejecutables. Mientras que en Linux cualquier archivo puede convertirse en ejecutable simplemente asignándole el permiso "x", en Windows los programas ejecutables deben tener la extensión .exe.

+

Para ejecutar un programa con privilegios de administrador en Windows, se puede hacer clic derecho en el archivo y seleccionar "Ejecutar como administrador", lo que es equivalente al comando sudo en sistemas Unix.

+

Permisos en macOS

+

macOS, al ser un sistema basado en Unix, comparte muchas similitudes con Linux en cuanto a la gestión de permisos. Sin embargo, también ofrece una interfaz gráfica similar a Windows:

+
    +
  1. Clic derecho en el archivo
  2. +
  3. Seleccionar "Obtener información"
  4. +
  5. Expandir la sección "Compartir y permisos"
  6. +
  7. Modificar los permisos según sea necesario
  8. +
+

¿Por qué es importante la gestión adecuada de permisos?

+

La seguridad es la razón principal para gestionar correctamente los permisos. Como regla general, siempre debemos asignar la mínima cantidad de permisos necesarios para que un usuario pueda realizar su trabajo. Esto se conoce como el "principio del mínimo privilegio".

+

Algunos beneficios de una correcta gestión de permisos incluyen:

+
    +
  • Prevención de modificaciones no autorizadas
  • +
  • Protección contra la ejecución de código malicioso
  • +
  • Control sobre quién puede acceder a información sensible
  • +
  • Prevención de eliminación accidental de archivos importantes
  • +
+

En entornos de desarrollo compartidos, los permisos adecuados también facilitan la colaboración al permitir que diferentes equipos trabajen en los mismos archivos sin interferir unos con otros.

+

La gestión de permisos y privilegios es un aspecto fundamental de la administración de sistemas que todo profesional de la tecnología debería comprender. Ya sea que trabajes con servidores Linux, equipos Windows o dispositivos macOS, entender cómo funcionan estos mecanismos te ayudará a mantener tus sistemas seguros y eficientes. ¿Has tenido alguna experiencia configurando permisos en diferentes sistemas operativos? Comparte tus experiencias en los comentarios.

+
+
+ + \ No newline at end of file diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/03-Sistemas Operativos y Almacenamiento/03-Archivos Metadatos cabeceras y extensiones.mp4" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/03-Sistemas Operativos y Almacenamiento/03-Archivos Metadatos cabeceras y extensiones.mp4" new file mode 100644 index 0000000000000000000000000000000000000000..3c5b736ad4dae9b55a03ae8be6e8f1d4bca3160d --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/03-Sistemas Operativos y Almacenamiento/03-Archivos Metadatos cabeceras y extensiones.mp4" @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:edc97f357b10c0a32cf695dc7db263bda1c9bdfd2f18212638d0a60846c450d5 +size 211910594 diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/03-Sistemas Operativos y Almacenamiento/03-Archivos Metadatos cabeceras y extensiones.vtt" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/03-Sistemas Operativos y Almacenamiento/03-Archivos Metadatos cabeceras y extensiones.vtt" new file mode 100644 index 0000000000000000000000000000000000000000..03a85a8238e8dc43d3c4d6637fa9383e8b4adb69 --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/03-Sistemas Operativos y Almacenamiento/03-Archivos Metadatos cabeceras y extensiones.vtt" @@ -0,0 +1,610 @@ +WEBVTT + +00:00:00.080 --> 00:00:01.920 +Los formatos de archivos son la forma en + +00:00:01.920 --> 00:00:04.160 +la que dentro de los sistemas operativos se + +00:00:04.160 --> 00:00:06.420 +identifica qué es lo que es un archivo, + +00:00:06.480 --> 00:00:09.120 +porque algunos son una imagen, un archivo de + +00:00:09.120 --> 00:00:12.320 +Word, un archivo de Excel, un video, un + +00:00:12.320 --> 00:00:14.799 +PDF, un archivo de texto, y no es + +00:00:14.799 --> 00:00:18.935 +necesariamente claro. Existen múltiples mecanismos para definir qué + +00:00:18.935 --> 00:00:20.855 +es un tipo de archivo por dentro. El + +00:00:20.855 --> 00:00:23.275 +más común es usar la extensión del archivo. + +00:00:23.335 --> 00:00:25.175 +Si en el nombre del archivo termina en + +00:00:25.175 --> 00:00:27.815 +punto TXT, es un texto. Punto doc es + +00:00:27.815 --> 00:00:30.535 +un archivo de Word, punto HTML es un + +00:00:30.535 --> 00:00:34.340 +HTML. Sin embargo, esto no es un método + +00:00:34.340 --> 00:00:36.420 +muy efectivo. En los últimos años, los sistemas + +00:00:36.420 --> 00:00:39.700 +operativos están escondiendo las extensiones de los sistemas + +00:00:39.700 --> 00:00:42.280 +de archivos, hay que trabajar para poder mostrarlas. + +00:00:42.580 --> 00:00:44.420 +Te recomiendo, si eres una persona que está + +00:00:44.420 --> 00:00:46.545 +tomando este curso, que vayas ya mismo a + +00:00:46.545 --> 00:00:49.825 +tu sistema operativo y muestres las extensiones. Esto + +00:00:49.825 --> 00:00:50.865 +no lo vas a poder hacer en un + +00:00:50.865 --> 00:00:52.785 +teléfono, pero sí se puede hacer en Windows, + +00:00:52.785 --> 00:00:54.545 +en Linux o en Mac. Si ya estás + +00:00:54.545 --> 00:00:56.325 +en este punto del curso, no hay ninguna + +00:00:56.545 --> 00:00:58.405 +excusa que haga que tú no puedas lograrlo, + +00:00:58.465 --> 00:01:01.010 +ve y lógralo. La segunda forma de saber + +00:01:01.010 --> 00:01:03.010 +cómo está estructurado un archivo por dentro es + +00:01:03.010 --> 00:01:07.730 +leyendo las primeras 4 letras del archivo. Cuando + +00:01:07.730 --> 00:01:09.490 +ustedes abren un archivo, si es un archivo + +00:01:09.490 --> 00:01:11.330 +de texto, puede que las primeras 4 letras + +00:01:11.330 --> 00:01:13.994 +sean un texto cualquiera. En ese caso, el + +00:01:13.994 --> 00:01:16.715 +sistema operativo simplemente asume esto es texto o + +00:01:16.715 --> 00:01:19.455 +no sé qué es, pero con archivos estructurados, + +00:01:19.994 --> 00:01:24.494 +como imágenes, como PDFs, las 4 primeras letras + +00:01:24.595 --> 00:01:27.274 +tienden a ser una definición de lo que + +00:01:27.274 --> 00:01:28.700 +el archivo es. Esto que ustedes están viendo + +00:01:28.700 --> 00:01:31.660 +en pantalla es cómo un archivo binario se + +00:01:31.660 --> 00:01:34.540 +ve por dentro. Del lado derecho ustedes ven + +00:01:34.540 --> 00:01:36.540 +un texto que es medio ilegible, esa es + +00:01:36.540 --> 00:01:39.820 +la representación ASCII o la representación en texto + +00:01:39.820 --> 00:01:42.348 +normal del archivo binario. Y luego en el + +00:01:42.348 --> 00:01:44.135 +centro ustedes están viendo lo que se llama + +00:01:44.135 --> 00:01:48.615 +una representación hexadecimal. Cada byte se expresa como + +00:01:48.615 --> 00:01:51.335 +un par de números hexadecimales, porque con 2 + +00:01:51.335 --> 00:01:55.120 +números hexadecimales, 2 números de 16 dígitos, puedo + +00:01:55.120 --> 00:01:57.200 +expresar el contenido de un byte. Ahí van + +00:01:57.200 --> 00:01:59.280 +a encontrar que los 4 primeros bytes, o + +00:01:59.280 --> 00:02:01.040 +las 4 primeras letras, en el caso de + +00:02:01.040 --> 00:02:05.620 +un PNG, son punto PNG. Esos 4 primeros + +00:02:05.920 --> 00:02:09.275 +caracteres, esos 4 primeros bytes son la cabecera + +00:02:09.275 --> 00:02:11.275 +del archivo y son el número mágico que + +00:02:11.275 --> 00:02:13.755 +me indica, esto es un PNG. Así sería + +00:02:13.755 --> 00:02:16.075 +un archivo punto doc o the word, y + +00:02:16.075 --> 00:02:18.715 +así se vería un PDF. La otra forma + +00:02:18.715 --> 00:02:20.815 +es que en los servidores web existen tipos + +00:02:20.815 --> 00:02:21.260 +y subtipos de archivo, entonces los tipos pueden + +00:02:21.260 --> 00:02:23.090 +ser texto, imagen, aplicación, entre otros, y archivo. + +00:02:23.090 --> 00:02:25.870 +Entonces, los tipos pueden ser texto, imagen, aplicación, + +00:02:25.970 --> 00:02:28.530 +entre otros, y los subtipos pueden ser texto + +00:02:28.530 --> 00:02:31.910 +plano, texto en CSV, imagen PNG, imagen JPG, + +00:02:32.210 --> 00:02:35.990 +aplicación PDF, etcétera. Estos se llaman tipos MIME, + +00:02:36.210 --> 00:02:39.015 +MIME types. Los MIME types son una forma + +00:02:39.015 --> 00:02:41.735 +para que los servidores web sepan, en general + +00:02:41.735 --> 00:02:44.135 +cualquier tipo de servidor en Internet, sepa cuál + +00:02:44.135 --> 00:02:46.135 +es el tipo de archivo que estás sirviendo. + +00:02:46.135 --> 00:02:48.375 +Es una base de datos interna donde ciertas + +00:02:48.375 --> 00:02:51.255 +extensiones o ciertas cabeceras equivalen a un cierto + +00:02:51.255 --> 00:02:53.400 +tipo de archivo y se usan muy comúnmente + +00:02:53.400 --> 00:02:55.959 +en los servidores web. Sin embargo, el servidor + +00:02:55.959 --> 00:02:57.720 +tiene que saber cuál es cada tipo de + +00:02:57.720 --> 00:03:00.040 +archivo y no es tan perfecto. La forma + +00:03:00.040 --> 00:03:02.040 +más común en que los sistemas operativos definen + +00:03:02.040 --> 00:03:04.400 +un archivo es a través de las primeros + +00:03:04.400 --> 00:03:06.599 +4 bytes, este número mágico, y de la + +00:03:06.599 --> 00:03:09.064 +estructura de la cabecera. Un archivo de texto + +00:03:09.064 --> 00:03:12.345 +plano es, como dice su nombre, texto. El + +00:03:12.345 --> 00:03:15.385 +HTML, por ejemplo, o JavaScript o Python son + +00:03:15.385 --> 00:03:18.745 +archivos de texto plano, cuyas extensiones puntopy punto + +00:03:18.745 --> 00:03:22.269 +js punto HTML indican esto es texto plano, + +00:03:22.269 --> 00:03:25.030 +pero por dentro de una estructura lógica, la + +00:03:25.030 --> 00:03:28.030 +estructura HTML, JavaScript o Python. Existe una estructura + +00:03:28.030 --> 00:03:30.989 +de texto plano que me permite expresar datos + +00:03:30.989 --> 00:03:33.150 +como si fueran una tabla. Esa estructura se + +00:03:33.150 --> 00:03:36.915 +llama CSV o coma separated values. Por ejemplo, + +00:03:36.915 --> 00:03:39.215 +en los archivos de esta clase vas a + +00:03:39.215 --> 00:03:41.895 +encontrar un archivo CSV que se llama empleados + +00:03:42.115 --> 00:03:44.935 +punto CSV. Ahí tenemos los datos de 50 + +00:03:44.955 --> 00:03:47.335 +empleados de una empresa de desarrollo de software + +00:03:47.475 --> 00:03:50.615 +con 5 diferentes columnas, nombre, cargo, edad, salario + +00:03:50.835 --> 00:03:53.060 +y país. Si lo abres con un editor + +00:03:53.060 --> 00:03:54.980 +de texto plano normal, con un editor de + +00:03:54.980 --> 00:03:57.299 +código, ahí vas a encontrar en texto plano + +00:03:57.299 --> 00:03:59.640 +estos archivos, pero si lo abres en Excel, + +00:03:59.780 --> 00:04:01.219 +vas a verlo como si fuera una tabla + +00:04:01.219 --> 00:04:02.980 +de Excel. Esto no significa que ese es + +00:04:02.980 --> 00:04:04.900 +el formato de archivos de Excel, Excel es + +00:04:04.900 --> 00:04:08.224 +un formato de archivo internamente mucho más complejo, + +00:04:08.224 --> 00:04:10.565 +pero sí significa que esta es la versión + +00:04:11.025 --> 00:04:13.845 +más simple de una forma de transmitir datos + +00:04:14.025 --> 00:04:17.824 +separados por comas, como si fueran datos estructurados + +00:04:17.824 --> 00:04:19.839 +en una tabla. Cuando abrimos un archivo de + +00:04:19.839 --> 00:04:21.919 +Word, por ejemplo, un punto doc x, vamos + +00:04:21.919 --> 00:04:23.760 +a encontrar que su cabecera está llena de + +00:04:23.760 --> 00:04:26.340 +unos números ceros. Esa cabecera es el espacio + +00:04:26.480 --> 00:04:29.360 +donde se guardan metadatos del archivo, lo cual + +00:04:29.360 --> 00:04:30.960 +vamos a ver en un segundo. Y luego + +00:04:30.960 --> 00:04:33.485 +abajo tengo la estructura. Van a notar si + +00:04:33.485 --> 00:04:36.125 +ustedes abren con un editor hexadecimal, que son + +00:04:36.125 --> 00:04:38.925 +estos editores que permiten abrir archivos binarios, este + +00:04:38.925 --> 00:04:40.685 +tipo de archivos que tienden a tener una + +00:04:40.685 --> 00:04:43.885 +estructura muy parecida. Por ejemplo, cuando comparamos 2 + +00:04:43.885 --> 00:04:46.440 +PDFs, los abrimos los 2 de un archivo + +00:04:46.440 --> 00:04:48.360 +hexadecimal, van a notar que, a pesar de + +00:04:48.360 --> 00:04:52.360 +que son bastante diferentes, esta primera estructura inicial + +00:04:52.360 --> 00:04:55.880 +de bytes es muy similar, porque esta estructura + +00:04:55.880 --> 00:04:58.460 +indica esto es un archivo PDF, fue construido + +00:04:58.600 --> 00:05:00.475 +con este mecanismo y a partir de acá + +00:05:00.475 --> 00:05:02.475 +es que empiezan a cambiar las cosas. Esta + +00:05:02.475 --> 00:05:05.675 +es la estructura interna del archivo PDF. Ustedes + +00:05:05.675 --> 00:05:07.835 +no tienen por qué entender esto, excepto que + +00:05:07.835 --> 00:05:10.155 +sean el tipo de programador que va a + +00:05:10.155 --> 00:05:12.949 +programar la estructura de estos datos. Solamente sepan + +00:05:12.949 --> 00:05:16.070 +que estas estructuras son arbitrarias, alguien las decidió + +00:05:16.070 --> 00:05:17.830 +porque sí, porque encontró que esta era la + +00:05:17.830 --> 00:05:19.990 +forma más eficiente de guardar los archivos de + +00:05:19.990 --> 00:05:23.110 +esta manera. Hay muchos tipos de archivo y + +00:05:23.110 --> 00:05:25.850 +algunas veces esos archivos tienen por dentro datos + +00:05:27.465 --> 00:05:30.505 +escondidos que se pueden ver en sistemas operativos. + +00:05:30.505 --> 00:05:33.305 +Por ejemplo, los videos tienden a tener por + +00:05:33.305 --> 00:05:36.425 +dentro cuándo fueron grabados, cuál es su tamaño, + +00:05:36.425 --> 00:05:38.265 +cuál es el códec que usan, cosas que + +00:05:38.265 --> 00:05:40.840 +vamos a ver más adelante. Las imágenes también + +00:05:40.840 --> 00:05:43.080 +tienen datos únicos. Por ejemplo, esta foto que + +00:05:43.080 --> 00:05:45.160 +yo tomé cuando le di una conferencia al + +00:05:45.160 --> 00:05:47.400 +ejército, si le damos clic, de hecho, y + +00:05:47.400 --> 00:05:49.480 +obtenemos su información en un sistema operativo como + +00:05:49.480 --> 00:05:51.560 +Windows o como Mac, vamos a acceder a + +00:05:51.560 --> 00:05:53.755 +los metadatos de la fotografía. Aquí, en los + +00:05:53.755 --> 00:05:56.315 +metadatos, van a encontrar varias cosas muy únicas. + +00:05:56.315 --> 00:05:58.635 +Por ejemplo, van a encontrar que fue tomada + +00:05:58.635 --> 00:06:00.475 +con un iPhone 16 Pro, cuál fue la + +00:06:00.475 --> 00:06:02.715 +dimensión original del archivo, la última fecha en + +00:06:02.715 --> 00:06:05.595 +la que fue abierta, etcétera. Los PDFs guardan + +00:06:05.595 --> 00:06:07.900 +muchos metadatos. Le dan clic derecho a un + +00:06:07.900 --> 00:06:10.139 +PDF y ven sus metadatos, van a ver + +00:06:10.139 --> 00:06:12.780 +el título original del archivo de donde vino. + +00:06:12.780 --> 00:06:14.300 +La mayoría de los PDFs no eran un + +00:06:14.300 --> 00:06:16.940 +PDF originalmente, sino fueron construidos en otro lugar, + +00:06:16.940 --> 00:06:20.139 +como por ejemplo en Adobe Illustrator o, en + +00:06:20.139 --> 00:06:22.095 +este caso, en Word. Este archivo originalmente se + +00:06:22.095 --> 00:06:25.775 +llamaba capítulo 2 guión correcciones punto docx, y + +00:06:25.775 --> 00:06:28.495 +luego fue transformado a través de Google Docs + +00:06:28.495 --> 00:06:30.514 +en un PDF. Hay un caso muy chistoso + +00:06:30.655 --> 00:06:33.210 +de la Universidad Tecnológica Nacional de Buenos Aires, + +00:06:33.530 --> 00:06:37.289 +donde enviaron un PDF con un aviso de + +00:06:37.289 --> 00:06:39.050 +deuda a los estudiantes que no habían pagado + +00:06:39.050 --> 00:06:41.229 +la cuota mensual, que al ver los metadatos + +00:06:42.169 --> 00:06:44.729 +estructurado internamente estaba el nombre original del archivo + +00:06:44.729 --> 00:06:46.935 +que decía paga ratón. Así que hay que + +00:06:46.935 --> 00:06:49.414 +tener mucho cuidado con los metadatos cuando 1 + +00:06:49.414 --> 00:06:51.895 +envía archivos. Los metadatos de los archivos en + +00:06:51.895 --> 00:06:54.474 +ocasiones también te explican cuál es la versión + +00:06:54.534 --> 00:06:56.935 +mínima de una aplicación para poder abrirlo o + +00:06:56.935 --> 00:06:59.800 +los archivos que necesitas para poder ejecutarlo. Por + +00:06:59.800 --> 00:07:02.840 +ejemplo, los videos son comprimidos y descomprimidos con + +00:07:02.840 --> 00:07:05.720 +unas técnicas especiales que se llaman códecs. Eso + +00:07:05.720 --> 00:07:07.880 +tiende a estar incluido en la cabecera de + +00:07:07.880 --> 00:07:10.635 +los archivos de video, incluyendo su resolución, el + +00:07:10.635 --> 00:07:13.565 +formato que tienen, la calidad, etcétera. También existen + +00:07:13.625 --> 00:07:16.205 +otros tipos de archivos que en sus cabeceras + +00:07:16.665 --> 00:07:19.145 +están aglomerados otros datos, por ejemplo, en un + +00:07:19.145 --> 00:07:21.625 +archivo punto zip, un archivo comprimido, en los + +00:07:21.625 --> 00:07:24.105 +metadatos y en la cabecera del archivo está + +00:07:24.105 --> 00:07:26.025 +la lista de los archivos que por dentro + +00:07:26.025 --> 00:07:28.160 +tiene el punto zip antes de ser descomprimida. + +00:07:28.540 --> 00:07:30.860 +Cuando los archivos se dañan en la parte + +00:07:30.860 --> 00:07:32.460 +de arriba, con dónde les cambia las cabeceras, + +00:07:32.460 --> 00:07:34.860 +es completamente posible que se vuelvan ilegibles y + +00:07:34.860 --> 00:07:36.300 +que ya no se puedan volver a abrir, + +00:07:36.300 --> 00:07:38.300 +excepto que se reparen, pero eso son técnicas + +00:07:38.300 --> 00:07:40.895 +muy avanzadas que rara vez son utilizadas. También, + +00:07:40.895 --> 00:07:43.215 +archivos que se descargan mal, 1 los puede + +00:07:43.215 --> 00:07:46.255 +verificar. Existen mecanismos de verificación como el check + +00:07:46.255 --> 00:07:47.854 +zoom. Esto lo vamos a ver después, no + +00:07:47.854 --> 00:07:49.615 +se preocupen por ello. Lo más importante a + +00:07:49.615 --> 00:07:51.775 +recordar son 2 cosas. 1, un archivo no + +00:07:51.775 --> 00:07:53.215 +es una base de datos. Las bases de + +00:07:53.215 --> 00:07:55.455 +datos son cosas distintas, es la próxima clase + +00:07:55.455 --> 00:07:57.950 +que viene a continuación de esta. Un archivo + +00:07:57.950 --> 00:07:59.870 +puede tener datos, un archivo puede ser una + +00:07:59.870 --> 00:08:01.950 +base de datos, pero típicamente no lo es. + +00:08:01.950 --> 00:08:04.050 +Las bases de datos son un concepto completamente + +00:08:04.270 --> 00:08:07.510 +diferente. Y existe una técnica avanzada de seguridad + +00:08:07.510 --> 00:08:09.790 +informática para esconder datos dentro de archivos, se + +00:08:09.790 --> 00:08:12.875 +llama esteganografía. Por ejemplo, imagina que tienes una + +00:08:12.875 --> 00:08:15.675 +imagen JPG que por dentro guarda un archivo + +00:08:15.675 --> 00:08:18.235 +de Excel de manera secreta. Esto es porque + +00:08:18.235 --> 00:08:20.175 +se sabe cómo es la estructura del JPG + +00:08:20.395 --> 00:08:22.235 +y de esa manera se esconde el archivo + +00:08:22.235 --> 00:08:24.520 +de Excel dentro del JPG. Es una técnica + +00:08:24.520 --> 00:08:27.480 +avanzada muy común en distribución de virus, en + +00:08:27.480 --> 00:08:30.620 +el mundo de inteligencia militar, entre otros universos. + +00:08:30.760 --> 00:08:33.799 +Esteganografía. Este mundo es un mundo maravilloso. Aprendamos + +00:08:33.799 --> 00:08:35.500 +bases de datos en la próxima clase. diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/03-Sistemas Operativos y Almacenamiento/03-Resumen.html" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/03-Sistemas Operativos y Almacenamiento/03-Resumen.html" new file mode 100644 index 0000000000000000000000000000000000000000..d611216cce452f626c1cd8165e3371c886236b9e --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/03-Sistemas Operativos y Almacenamiento/03-Resumen.html" @@ -0,0 +1,178 @@ + + + + + + + Archivos: Metadatos, cabeceras y extensiones + + + +
+
+

Resumen

La comprensión de los formatos de archivos es fundamental para cualquier persona que trabaje con computadoras. Estos formatos determinan cómo se almacena y se interpreta la información digital, permitiendo a los sistemas operativos identificar correctamente cada tipo de archivo. Conocer estos conceptos no solo mejora nuestra experiencia digital, sino que también nos ayuda a entender mejor cómo funcionan nuestros dispositivos y cómo se organiza la información en ellos.

+

¿Cómo identifican los sistemas operativos los tipos de archivos?

+

Los sistemas operativos utilizan varios mecanismos para determinar qué tipo de archivo están manejando. Esto es crucial para saber qué programa debe abrirlo y cómo debe procesarse la información contenida en él.

+

Extensiones de archivo

+

El método más común y visible es mediante las extensiones de archivo. Estas son las letras que aparecen después del punto en el nombre del archivo:

+
    +
  • .txt para archivos de texto plano
  • +
  • .doc o .docx para documentos de Word
  • +
  • .html para páginas web
  • +
  • .jpg o .png para imágenes
  • +
+

Sin embargo, este método no es completamente confiable, ya que las extensiones pueden cambiarse fácilmente. Además, los sistemas operativos modernos tienden a ocultar estas extensiones por defecto, lo que puede generar confusión.

+

Si estás siguiendo este curso, es altamente recomendable que configures tu sistema operativo para mostrar las extensiones de archivo. Esta opción está disponible en Windows, Linux y Mac, y te ayudará a identificar mejor los archivos con los que trabajas.

+

Números mágicos y cabeceras de archivo

+

Una forma más técnica y confiable de identificar archivos es mediante los números mágicos. Estos son los primeros bytes de un archivo que actúan como una firma digital, indicando qué tipo de archivo es.

+

Por ejemplo:

+
    +
  • Los archivos PNG comienzan con los caracteres ".PNG"
  • +
  • Los archivos PDF comienzan con "%PDF"
  • +
+

Cuando abrimos un archivo binario con un editor hexadecimal, podemos ver esta representación:

+
89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52
+
+

En la representación ASCII, estos primeros bytes se verían como ".PNG", lo que identifica inmediatamente el tipo de archivo.

+

MIME types

+

En el contexto de Internet, los servidores web utilizan los MIME types (Multipurpose Internet Mail Extensions) para identificar qué tipo de contenido están enviando. Estos se dividen en tipos y subtipos:

+
    +
  • Tipos: text, image, application, audio, video
  • +
  • Subtipos: plain, html, jpeg, png, pdf, etc.
  • +
+

Por ejemplo, un archivo HTML tendría el MIME type "text/html", mientras que una imagen PNG sería "image/png". Esto permite a los navegadores web saber cómo interpretar y mostrar correctamente el contenido recibido.

+

¿Qué son los archivos de texto plano y estructurados?

+

Archivos de texto plano

+

Los archivos de texto plano contienen únicamente caracteres legibles sin formato especial. Ejemplos comunes incluyen:

+
    +
  • Archivos .txt
  • +
  • Código fuente (.py, .js, .html)
  • +
  • Archivos de configuración
  • +
+

A pesar de su simplicidad, estos archivos pueden seguir estructuras lógicas específicas, como la sintaxis de Python o HTML.

+

CSV: datos tabulares en texto plano

+

Un formato particularmente útil es el CSV (Comma-Separated Values), que permite representar datos tabulares en texto plano. Por ejemplo:

+
nombre,cargo,edad,salario,país
+Juan Pérez,Desarrollador,28,45000,México
+Ana García,Diseñadora,32,52000,Colombia
+
+

Este formato puede abrirse tanto en un editor de texto como en Excel, donde se visualizará como una tabla. Es importante destacar que CSV no es el formato nativo de Excel, sino una forma simple de intercambiar datos tabulares.

+

Archivos binarios estructurados

+

Los archivos como documentos de Word (.docx) o PDFs tienen estructuras binarias complejas. Al abrirlos con un editor hexadecimal, veremos patrones específicos:

+
    +
  • Cabeceras que identifican el tipo de archivo
  • +
  • Metadatos sobre el contenido
  • +
  • Estructuras internas que organizan la información
  • +
+

Estas estructuras son diseñadas por los desarrolladores del formato y no necesitas entenderlas a menos que estés programando aplicaciones que las procesen directamente.

+

¿Qué son los metadatos y por qué son importantes?

+

Los metadatos son datos sobre los datos, información adicional que describe características del archivo pero no forma parte de su contenido principal.

+

Metadatos en imágenes

+

Las fotografías digitales contienen abundantes metadatos, como:

+
    +
  • Modelo de cámara utilizado
  • +
  • Fecha y hora de captura
  • +
  • Configuración de la cámara (apertura, velocidad, ISO)
  • +
  • Ubicación GPS (si está habilitado)
  • +
  • Dimensiones originales
  • +
+

Metadatos en documentos

+

Los documentos como PDFs también almacenan metadatos importantes:

+
    +
  • Título original del documento
  • +
  • Aplicación que lo creó
  • +
  • Autor
  • +
  • Fecha de creación y modificación
  • +
+

Es crucial tener cuidado con los metadatos al compartir archivos, ya que pueden revelar información sensible. Un caso anecdótico es el de una universidad que envió un PDF de cobro a estudiantes cuyo nombre original del archivo era "paga ratón", visible en los metadatos.

+

Otros usos de los metadatos

+

Los metadatos también pueden indicar:

+
    +
  • Versión mínima de software necesaria para abrir el archivo
  • +
  • Códecs necesarios para reproducir videos
  • +
  • Contenido de archivos comprimidos (como .zip)
  • +
+

Si la cabecera de un archivo se daña, es posible que todo el archivo se vuelva ilegible, ya que el sistema no podrá identificar correctamente su estructura.

+

Los formatos de archivos son fundamentales para entender cómo se organiza la información digital. Desde las simples extensiones hasta las complejas estructuras internas y metadatos, cada elemento cumple una función específica en el ecosistema digital. Recuerda que los archivos no son bases de datos (aunque pueden contener datos), y que existen técnicas avanzadas como la esteganografía que permiten ocultar información dentro de otros archivos. ¿Qué otros aspectos de los formatos de archivos te gustaría explorar? Comparte tus inquietudes en los comentarios.

+
+
+ + \ No newline at end of file diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/03-Sistemas Operativos y Almacenamiento/03-empleados_prueba_325d0f23-d597-444f-a5e0-acb9d34cac7a.csv" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/03-Sistemas Operativos y Almacenamiento/03-empleados_prueba_325d0f23-d597-444f-a5e0-acb9d34cac7a.csv" new file mode 100644 index 0000000000000000000000000000000000000000..408e3dcc486774bc7a1c5e9eab2dea820d857bd7 --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/03-Sistemas Operativos y Almacenamiento/03-empleados_prueba_325d0f23-d597-444f-a5e0-acb9d34cac7a.csv" @@ -0,0 +1,51 @@ +Nombre,Cargo,Edad,Salario,País +Daniela,Diseñador/a,49,100357,Argentina +María,Desarrollador/a,41,61793,Uruguay +Julián,QA Tester,30,90644,Colombia +María,DevOps,58,148266,Perú +Nicolás,Diseñador/a,48,148313,Colombia +Andrés,DevOps,28,117981,España +Sebastián,Project Manager,26,130749,Argentina +Thiago,DevOps,35,139541,España +Pablo,Desarrollador/a,59,123053,México +Nicolás,Analista de Datos,41,145223,México +José,Diseñador/a,48,106907,España +Brenda,DevOps,46,103674,Perú +Iván,Diseñador/a,42,115111,España +Matías,Project Manager,34,100161,México +Brenda,DevOps,43,96517,Argentina +Andrés,Desarrollador/a,52,72690,Chile +Melina,Diseñador/a,29,119705,Argentina +Tomás,Project Manager,38,111237,Argentina +Matías,Desarrollador/a,25,81185,Perú +Romina,Desarrollador/a,42,102983,España +Daniela,Analista de Datos,24,78141,Colombia +Ana,Project Manager,34,105756,Colombia +Diego,Analista de Datos,29,58830,México +Martín,Diseñador/a,40,115329,Argentina +Bruno,Desarrollador/a,41,110035,Uruguay +Bruno,Product Owner,60,90747,España +Ana,Diseñador/a,24,148926,España +Diego,Diseñador/a,49,122342,Chile +Lucas,Diseñador/a,47,89289,México +Noelia,Project Manager,47,118391,Perú +Agustina,Analista de Datos,23,121718,Argentina +Ezequiel,Product Owner,50,62730,Uruguay +Santiago,Product Owner,48,58308,Perú +Melina,QA Tester,49,62935,Argentina +Sebastián,QA Tester,58,80805,Perú +Franco,QA Tester,46,64570,Perú +Thiago,Product Owner,25,108770,México +Micaela,Analista de Datos,34,88236,Chile +Sofía,DevOps,27,126252,Colombia +Brenda,Project Manager,28,56872,Chile +Melina,DevOps,54,131136,Perú +Leandro,Desarrollador/a,54,133799,Argentina +Andrés,Diseñador/a,53,141480,Perú +Carla,Project Manager,25,56137,Uruguay +Martina,Product Owner,47,131402,Colombia +Julián,Analista de Datos,52,143878,México +Carla,Product Owner,24,102562,Perú +Iván,Diseñador/a,34,145629,Argentina +Benjamín,Desarrollador/a,35,106617,Argentina +Noelia,Product Owner,23,93278,Colombia diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/01-Lecturas recomendadas.txt" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/01-Lecturas recomendadas.txt" new file mode 100644 index 0000000000000000000000000000000000000000..6f5197e7330cc36cc159d38616d4eeae5032348d --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/01-Lecturas recomendadas.txt" @@ -0,0 +1,2 @@ +https://platzi.com/cursos/dbsql/ +https://platzi.com/cursos/db-nosql/ diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/01-Qu\303\251 son las bases de datos.mp4" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/01-Qu\303\251 son las bases de datos.mp4" new file mode 100644 index 0000000000000000000000000000000000000000..43cfea1e3c24f528748913bfaa1b798317f35c11 --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/01-Qu\303\251 son las bases de datos.mp4" @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab306e883de4877ad6336714c968a420a0ca776a93c738033a75aa188d1b2968 +size 210871161 diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/01-Qu\303\251 son las bases de datos.vtt" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/01-Qu\303\251 son las bases de datos.vtt" new file mode 100644 index 0000000000000000000000000000000000000000..de2c10b628bbeca021c961b8fa008738e480aa60 --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/01-Qu\303\251 son las bases de datos.vtt" @@ -0,0 +1,658 @@ +WEBVTT + +00:00:00.080 --> 00:00:02.399 +Las bases de datos muchos creen que son + +00:00:02.399 --> 00:00:04.560 +como tablas de Excel. En un ejemplo anterior + +00:00:04.560 --> 00:00:07.919 +vimos esta tabla de empleados donde tenemos un, + +00:00:07.919 --> 00:00:10.980 +2, 3, 4 y 5 campos. El campo + +00:00:11.280 --> 00:00:13.920 +nombre, cargo, edad, salario y país. Y esto + +00:00:13.920 --> 00:00:15.940 +sería igual que un archivo de Excel, ¿cierto? + +00:00:16.055 --> 00:00:18.775 +En nombre coloco cualquier cosa, encargo también, edad + +00:00:18.775 --> 00:00:21.035 +es un número, salario también es un número + +00:00:21.095 --> 00:00:23.415 +y país, pues, es un letras. Para la + +00:00:23.415 --> 00:00:25.015 +gran mayoría de las personas allá afuera, las + +00:00:25.015 --> 00:00:27.735 +bases de datos son simplemente tablas de Excel. + +00:00:27.735 --> 00:00:30.135 +Pero Excel no es una base de datos, + +00:00:30.135 --> 00:00:33.990 +Excel es una hoja cuadriculada donde coloco cualquier + +00:00:34.450 --> 00:00:37.730 +cosa. Las bases de datos son estrictas respecto + +00:00:37.730 --> 00:00:40.690 +a los datos que guardan, son variables de + +00:00:40.690 --> 00:00:44.495 +tipos específicos que tienen reglas. La regla más + +00:00:44.495 --> 00:00:46.535 +importante de las bases de datos es que + +00:00:46.535 --> 00:00:50.175 +no deben tener redundancia. Los datos tienen que + +00:00:50.175 --> 00:00:53.215 +ser únicos para mantener integridad. Esto es importante + +00:00:53.215 --> 00:00:54.735 +porque las bases de datos son de las + +00:00:54.735 --> 00:00:57.110 +que depende un negocio. Entonces, por ejemplo, no + +00:00:57.110 --> 00:00:59.670 +pueden haber diferentes tipos de transacción cuando mueves + +00:00:59.670 --> 00:01:01.430 +dinero de un banco a otro. No pueden + +00:01:01.430 --> 00:01:04.150 +haber diferentes tipos de contraseña o de usuarios + +00:01:04.150 --> 00:01:06.550 +cuando estás guardando tu nombre de usuario o + +00:01:06.550 --> 00:01:10.045 +tu contraseña para un sistema único. No pueden + +00:01:10.045 --> 00:01:12.924 +haber diferentes formatos de vuelo cuando estás guardando + +00:01:12.924 --> 00:01:15.985 +los vuelos de un avión. Estos sistemas requieren + +00:01:16.445 --> 00:01:20.604 +sistemas estrictos, características estrictas de almacenamiento de los + +00:01:20.604 --> 00:01:22.045 +datos, y para eso son las bases de + +00:01:22.045 --> 00:01:25.390 +datos. Para evitar redundancia, las bases de datos + +00:01:25.390 --> 00:01:28.049 +se estructuran pensando en cuáles son las tablas + +00:01:28.430 --> 00:01:32.270 +necesarias para representar cada categoría de datos y + +00:01:32.270 --> 00:01:35.295 +luego se conectan entre sí. Por ejemplo, imagina + +00:01:35.295 --> 00:01:38.244 +que estamos haciendo la tabla de una red + +00:01:38.244 --> 00:01:41.194 +social. Entonces, en una red social tú tienes + +00:01:41.194 --> 00:01:43.895 +una serie de posts en el timeline y + +00:01:43.895 --> 00:01:46.255 +esos posts, que son creados por usuarios, necesitan + +00:01:46.255 --> 00:01:48.575 +tener su nombre de usuario, quién lo creó + +00:01:48.575 --> 00:01:51.070 +como contenido y por dentro pueden tener comentarios. + +00:01:51.290 --> 00:01:54.770 +El post puede tener likes y los comentarios + +00:01:54.810 --> 00:01:56.730 +también pueden tener likes porque alguien le puede + +00:01:56.730 --> 00:01:59.210 +dar like. Pensemos en la forma más simple + +00:01:59.210 --> 00:02:01.170 +en la que esta base de datos ocurriría, + +00:02:01.170 --> 00:02:03.850 +que es lo primero que necesitamos entender. Probablemente + +00:02:03.850 --> 00:02:06.105 +lo primero que necesitamos entender es que hay + +00:02:06.245 --> 00:02:09.285 +usuarios. Los usuarios tienen un nombre de usuario + +00:02:09.285 --> 00:02:11.685 +y, por supuesto, para poder entrar y ser + +00:02:11.685 --> 00:02:14.085 +identificados de una manera única, van a necesitar + +00:02:14.085 --> 00:02:17.045 +también una contraseña. En una base de datos + +00:02:17.045 --> 00:02:19.385 +esto no es lo único que se necesita. + +00:02:19.605 --> 00:02:22.879 +También necesitamos un número único que los identifique, + +00:02:23.260 --> 00:02:26.700 +porque los números son variables muy simples. Así + +00:02:26.700 --> 00:02:29.099 +como, por ejemplo, cuando un país te asigna + +00:02:29.099 --> 00:02:31.500 +un número que te identifica como ciudadano de + +00:02:31.500 --> 00:02:34.265 +ese país, como la cédula, el documento de + +00:02:35.445 --> 00:02:38.405 +votación, el pasaporte, entre otros. Y es una + +00:02:38.405 --> 00:02:40.285 +buena idea que guardemos la fecha en la + +00:02:40.285 --> 00:02:42.965 +que este usuario se registró. Estas son 4 + +00:02:42.965 --> 00:02:45.700 +variables que tienen 4 tipos distintos. El ID + +00:02:45.700 --> 00:02:47.740 +del usuario sería un número entero, el nombre + +00:02:47.740 --> 00:02:49.620 +de usuario y la contraseña serían textos, que + +00:02:49.620 --> 00:02:52.420 +en programación se llaman strings, y la fecha + +00:02:52.420 --> 00:02:54.580 +de registro sería una variable de tipo fecha. + +00:02:54.580 --> 00:02:57.160 +Esta sería una tabla, la tabla de usuarios. + +00:02:57.380 --> 00:02:59.460 +Si estuviéramos en Excel, sería una hoja aparte + +00:02:59.460 --> 00:03:01.815 +y ahora que tenemos esta tabla, ahora necesitamos + +00:03:01.815 --> 00:03:04.795 +guardar todos los posts que hacen diferentes usuarios. + +00:03:05.175 --> 00:03:07.175 +Entonces, imagina que tenemos un post, como estos + +00:03:07.175 --> 00:03:09.735 +posts que salen en nuestro timeland de nuestra + +00:03:09.735 --> 00:03:12.795 +red social. Los posts son creados por usuarios, + +00:03:13.015 --> 00:03:14.775 +¿verdad? Entonces necesitamos el ID del usuario que + +00:03:14.775 --> 00:03:16.990 +creó el post. Como estoy trayéndome el ID + +00:03:16.990 --> 00:03:20.590 +del usuario, no necesito agregar acá el nombre + +00:03:20.590 --> 00:03:22.510 +del usuario porque lo puedo ir a buscar + +00:03:22.510 --> 00:03:24.110 +a través del ID de usuario que estoy + +00:03:24.110 --> 00:03:26.990 +guardando en la tabla de los posts. Pero + +00:03:26.990 --> 00:03:29.205 +cada post es único, así que voy a + +00:03:29.205 --> 00:03:32.084 +necesitar un ID del post, un ID, un + +00:03:32.084 --> 00:03:33.765 +número que identifique a cada 1 de estos + +00:03:33.765 --> 00:03:35.685 +posts. Por supuesto que voy a necesitar un + +00:03:35.685 --> 00:03:37.685 +contenido y esto es una texto, es un + +00:03:37.685 --> 00:03:39.605 +string, es una variable de tipo string, una + +00:03:39.605 --> 00:03:41.924 +fecha de publicación, entonces eso es una variable + +00:03:41.924 --> 00:03:43.290 +de tipo fecha. Y si le vamos a + +00:03:43.290 --> 00:03:46.730 +poner likes, me gustaría tener una variable numérica + +00:03:46.730 --> 00:03:48.810 +que vaya contando los likes, un contador de + +00:03:48.810 --> 00:03:50.410 +cuántos likes tiene. Y a medida que la + +00:03:50.410 --> 00:03:52.569 +gente guarde comentarios, también puedo tener un contador + +00:03:52.569 --> 00:03:54.569 +de cuántos comentarios. De esa manera no tengo + +00:03:54.569 --> 00:03:56.650 +que ponerme a contar los comentarios dentro de + +00:03:56.650 --> 00:03:58.905 +la tabla, sino simplemente ir a buscar ese + +00:03:58.905 --> 00:04:00.745 +número. En el caso de la tabla donde + +00:04:00.745 --> 00:04:04.505 +tengo a mis usuarios con el usuario ID, + +00:04:04.505 --> 00:04:07.085 +esta es la llave primaria de esa tabla. + +00:04:07.225 --> 00:04:10.265 +Una llave primaria es el identificador único de + +00:04:10.265 --> 00:04:12.570 +cada 1 de los registros de la tabla. + +00:04:12.730 --> 00:04:14.810 +Esa llave primaria es la que me conecta + +00:04:14.810 --> 00:04:17.390 +con la tabla de post. En los post, + +00:04:17.610 --> 00:04:20.010 +la llave primaria es el post, porque cada + +00:04:20.010 --> 00:04:22.330 +1 tiene un post único. Pero también tengo + +00:04:22.330 --> 00:04:25.290 +una llave especial única de otra tabla que + +00:04:25.290 --> 00:04:26.730 +es la que me conecta con los datos + +00:04:26.730 --> 00:04:29.165 +del usuario. Eso se llama aquí una llave + +00:04:29.165 --> 00:04:31.325 +foránea y es la llave primaria de otra + +00:04:31.325 --> 00:04:33.325 +tabla que me puede traer esos datos que + +00:04:33.325 --> 00:04:36.285 +son únicos. En este caso es único saber + +00:04:36.285 --> 00:04:37.965 +quién es el tipo de usuario que colocó + +00:04:37.965 --> 00:04:40.730 +un post. Ahora, ¿dónde guardo los comentarios? Los + +00:04:40.730 --> 00:04:43.690 +comentarios son otra cosa aparte que guardaría en + +00:04:43.690 --> 00:04:47.050 +una tabla llamada comentarios. ¿Qué necesitaría para esta + +00:04:47.050 --> 00:04:49.530 +tabla? Ustedes ya con esto deberían saber por + +00:04:49.530 --> 00:04:52.250 +completo cómo construir la tabla de comentarios, así + +00:04:52.250 --> 00:04:55.965 +que los animo a dejar en los comentarios + +00:04:55.965 --> 00:04:58.625 +de este clase cómo crearían la tabla comentarios + +00:04:58.925 --> 00:05:01.325 +antes de que yo continúe, vayan. No, en + +00:05:01.325 --> 00:05:07.425 +serio, vayan. Tienen 5, 4, 3, 2, 1. + +00:05:07.725 --> 00:05:09.509 +Pero para el resto de gente perezosa que + +00:05:09.509 --> 00:05:12.229 +decidió continuar sin publicar nada, que entiendo son + +00:05:12.229 --> 00:05:15.990 +el 85 por 100, primero, muy mal. Y + +00:05:15.990 --> 00:05:17.110 +segundo, esta es la forma en la que + +00:05:17.110 --> 00:05:18.229 +yo lo haría, pero esta no es la + +00:05:18.229 --> 00:05:20.150 +única forma de hacerlo. Por supuesto que tengo + +00:05:20.150 --> 00:05:23.145 +que tener un comentario ID, es el indicador + +00:05:24.085 --> 00:05:26.245 +único identificador de comentario, ese sería un número + +00:05:26.245 --> 00:05:27.845 +que se va generando a medida que publico + +00:05:27.845 --> 00:05:30.165 +cada comentario. Tengo que conectarlo con quién es + +00:05:30.165 --> 00:05:33.125 +el post, donde estoy dejando el comentario. Entonces, + +00:05:33.125 --> 00:05:36.330 +comentario ID es mi llave primaria. Post ID + +00:05:36.490 --> 00:05:38.970 +sería mi llave foránea conectándome a la tabla + +00:05:38.970 --> 00:05:40.490 +post y ahí está el post en el + +00:05:40.490 --> 00:05:42.409 +que estoy dejando el comentario. Luego tengo que + +00:05:42.409 --> 00:05:43.930 +saber quién es el usuario que deja el + +00:05:43.930 --> 00:05:46.650 +comentario. Entonces, usuario ID para conectar con la + +00:05:46.650 --> 00:05:49.229 +tabla de usuarios también sería una llave foránea. + +00:05:49.689 --> 00:05:51.689 +Y por último, muy similar a la tabla + +00:05:51.689 --> 00:05:54.965 +de post. Tengo el contenido, la fecha, el + +00:05:54.965 --> 00:05:57.544 +contador de me gusta y con eso estoy. + +00:05:57.685 --> 00:06:00.405 +Tengo ya completa mi tabla de comentarios y + +00:06:00.405 --> 00:06:02.485 +tengo toda la conexión en esta pequeña base + +00:06:02.485 --> 00:06:04.725 +de datos. Estas bases de datos son más + +00:06:04.725 --> 00:06:06.585 +complejas de lo que les acabo de mostrar. + +00:06:06.920 --> 00:06:09.000 +Aquí les estoy mostrando de una manera muy + +00:06:09.000 --> 00:06:10.920 +simple los componentes básicos de una base de + +00:06:10.920 --> 00:06:13.320 +datos. Hay diferentes herramientas de software que construyen + +00:06:13.320 --> 00:06:15.320 +esas bases de datos. Ustedes, por ejemplo, en + +00:06:15.320 --> 00:06:17.560 +Microsoft han visto una herramienta llamada Access, que + +00:06:17.560 --> 00:06:19.854 +ya casi no se usa. Existen programación lo + +00:06:19.854 --> 00:06:22.535 +que se llama SQL Lite o SQL Lite. + +00:06:22.535 --> 00:06:24.134 +La base de datos más común usada en + +00:06:24.134 --> 00:06:27.574 +el mundo es MySQL o MySQL, y también + +00:06:27.574 --> 00:06:30.634 +existe SQL Server del lado de Microsoft Oracle + +00:06:30.919 --> 00:06:33.240 +a nivel profesional, y la gran mayoría de + +00:06:33.240 --> 00:06:37.160 +las grandes y profesionales proyectos, incluyendo Platzi.com, usamos + +00:06:37.160 --> 00:06:38.840 +una base de datos de alto rendimiento que + +00:06:38.840 --> 00:06:41.400 +se llama Postgress. Estos sistemas son conocidos como + +00:06:41.400 --> 00:06:43.240 +motores de bases de datos. Los motores de + +00:06:43.240 --> 00:06:46.375 +bases de datos son pequeños servidores, herramientas de + +00:06:46.375 --> 00:06:48.854 +software que en el disco duro almacenan en + +00:06:48.854 --> 00:06:51.655 +diferentes archivos estas estructuras. Las bases de datos + +00:06:51.655 --> 00:06:54.535 +no son un archivo porque en una gran + +00:06:54.535 --> 00:06:57.574 +compañía, 1000 de personas, en ocasiones 1000000 de + +00:06:57.574 --> 00:07:00.289 +personas, tienen que acceder a leer, editar y + +00:07:00.289 --> 00:07:02.530 +modificar estas bases de datos en tiempo real, + +00:07:02.530 --> 00:07:05.569 +y eso requiere reglas específicas. También existe un + +00:07:05.569 --> 00:07:09.490 +lenguaje de programación construido específicamente para consultar la + +00:07:09.490 --> 00:07:11.634 +base de datos. Este lenguaje es conocido como + +00:07:11.634 --> 00:07:14.275 +SQL. Ustedes deberían tomar los cursos de SQL + +00:07:14.275 --> 00:07:15.955 +de Platzi, simplemente vayan acá arriba en el + +00:07:15.955 --> 00:07:18.354 +buscador y escriben la palabra SQL y van + +00:07:18.354 --> 00:07:21.955 +a encontrar varios cursos. SQL significa structured quity + +00:07:21.955 --> 00:07:23.950 +language y, por cierto, cuando la gente le + +00:07:23.950 --> 00:07:26.910 +dice mySQL, en vez de MySQL, es porque + +00:07:26.910 --> 00:07:28.430 +una de las primeras bases de datos del + +00:07:28.430 --> 00:07:31.470 +mundo se llamaba secuela o SQL. Entonces, se + +00:07:31.470 --> 00:07:33.870 +volvió parte de la industria llamarle SQL a + +00:07:33.870 --> 00:07:37.490 +SQL, pero realmente es SQL, Structure Query Language. + +00:07:37.775 --> 00:07:40.655 +En SQL, por ejemplo, si quisiéramos seleccionar todos + +00:07:40.655 --> 00:07:44.255 +los comentarios de usuarios cuyo nombre de usuario + +00:07:44.255 --> 00:07:46.575 +empiece por la letra f, escribimos un código + +00:07:46.575 --> 00:07:48.895 +como este. No te preocupes por entender este + +00:07:48.895 --> 00:07:50.699 +código, es un código distinto al código de + +00:07:50.699 --> 00:07:53.979 +programación normal. Select es elegir, asterisco es que + +00:07:53.979 --> 00:07:56.620 +elige todas las tablas, aquí estamos agarrando diferentes + +00:07:56.620 --> 00:07:58.860 +cosas de una tabla, like es una forma + +00:07:58.860 --> 00:08:01.419 +de comparación, el signo de porcentaje es un + +00:08:01.419 --> 00:08:04.130 +comodín. Estas cosas las explicamos mejor en el + +00:08:04.130 --> 00:08:06.175 +curso de SQL, Pero aquí te das una + +00:08:06.175 --> 00:08:08.514 +idea de cómo funciona el lenguaje que hace + +00:08:08.655 --> 00:08:10.095 +consultas a bases de datos. Y esto es + +00:08:10.095 --> 00:08:12.675 +toda una profesión, una profesión muy bien pagada. + +00:08:12.815 --> 00:08:15.134 +Las bases de datos se conectan con los + +00:08:15.134 --> 00:08:16.815 +lenguajes de programación y con las aplicaciones que + +00:08:16.815 --> 00:08:18.810 +haces de una manera distinta a los archivos. + +00:08:18.889 --> 00:08:21.450 +Un archivo se abre, se puede escribir, se + +00:08:21.450 --> 00:08:23.450 +puede guardar, pero las bases de datos tienen + +00:08:23.450 --> 00:08:27.050 +reglas específicas para guardar, para editar, etcétera. Es + +00:08:27.050 --> 00:08:29.770 +la forma más fácil de manejar datos dentro + +00:08:29.770 --> 00:08:31.745 +de una aplicación, y es lo más común + +00:08:31.745 --> 00:08:33.584 +que tú aprendes cuando aprendes un lenguaje de + +00:08:33.584 --> 00:08:36.325 +backend o un lenguaje de desarrollo de aplicaciones + +00:08:36.385 --> 00:08:39.664 +móviles, etcétera. Es extremadamente común y necesario para + +00:08:39.664 --> 00:08:42.304 +prácticamente cualquier empleo de desarrollo de software. Existen + +00:08:42.304 --> 00:08:43.745 +otros tipos de bases de datos que no + +00:08:43.745 --> 00:08:46.860 +son relacionales, se conocen como no SQL. La + +00:08:46.860 --> 00:08:48.880 +más común son las bases de datos documentales, + +00:08:49.180 --> 00:08:53.020 +que son básicamente, irónicamente, como tablitas de Excel + +00:08:53.020 --> 00:08:56.380 +que tienen diferentes variables que van cambiando. También + +00:08:56.380 --> 00:08:58.540 +existen bases de datos que son gráficos o + +00:08:58.540 --> 00:09:00.765 +grafos, y bases de datos que son llave + +00:09:00.765 --> 00:09:03.085 +valor, que simplemente guardan una variable con un + +00:09:03.085 --> 00:09:06.125 +valor. Típicamente cuando 1 hace caché, que es + +00:09:06.125 --> 00:09:08.685 +guardar en memoria RAM los datos de algo + +00:09:08.685 --> 00:09:11.405 +que 1 usa constantemente, 1 usa una base + +00:09:11.405 --> 00:09:13.690 +de datos llave valor. La más común de + +00:09:13.690 --> 00:09:16.170 +ellas se llama Redis. De esto tampoco te + +00:09:16.170 --> 00:09:18.910 +tienes que preocupar. Tenemos cursos de no SQL, + +00:09:18.970 --> 00:09:21.390 +lo puedes buscar ahí arriba, puedes buscar MongoDB + +00:09:21.529 --> 00:09:22.910 +o puedes buscar Redis. diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/01-Resumen.html" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/01-Resumen.html" new file mode 100644 index 0000000000000000000000000000000000000000..d8ceebb049a87c336fbc7344e85f61f6ab412464 --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/01-Resumen.html" @@ -0,0 +1,176 @@ + + + + + + + Qué son las bases de datos + + + +
+
+

Resumen

Las bases de datos son fundamentales en el desarrollo de software moderno, constituyendo la columna vertebral de prácticamente cualquier aplicación que manejamos diariamente. Aunque muchos las confunden con simples hojas de cálculo, su estructura, reglas y capacidades van mucho más allá. Entender cómo funcionan y cómo se relacionan entre sí es esencial para cualquier persona interesada en la programación o el manejo de datos a nivel profesional.

+

¿Qué son realmente las bases de datos y por qué no son como Excel?

+

Muchas personas creen erróneamente que las bases de datos son simplemente tablas similares a Excel, donde se pueden colocar datos de cualquier tipo sin restricciones. Sin embargo, las bases de datos son sistemas estrictos que manejan tipos específicos de datos bajo reglas claras.

+

La diferencia fundamental radica en que Excel es una hoja cuadriculada flexible donde puedes colocar cualquier información sin restricciones, mientras que las bases de datos están diseñadas para mantener la integridad y evitar la redundancia de los datos. Esta característica es crucial porque de ellas dependen operaciones críticas de negocios como:

+
    +
  • Transacciones bancarias
  • +
  • Sistemas de autenticación de usuarios
  • +
  • Registros de vuelos
  • +
  • Operaciones comerciales
  • +
+

Estos sistemas requieren estructuras estrictas de almacenamiento para garantizar la consistencia y confiabilidad de la información.

+

¿Cómo se estructuran las bases de datos para evitar redundancia?

+

Para evitar la redundancia, las bases de datos se organizan en tablas que representan categorías específicas de datos, las cuales se conectan entre sí mediante relaciones bien definidas.

+

Ejemplo práctico: estructura de una red social

+

Imaginemos que estamos diseñando la base de datos para una red social. Necesitaríamos, como mínimo, tres tablas principales:

+
    +
  1. +

    Tabla de Usuarios:

    +
      +
    • ID de usuario (número entero, llave primaria)
    • +
    • Nombre de usuario (texto)
    • +
    • Contraseña (texto)
    • +
    • Fecha de registro (fecha)
    • +
    +
  2. +
  3. +

    Tabla de Posts:

    +
      +
    • ID del post (número entero, llave primaria)
    • +
    • ID del usuario (número entero, llave foránea)
    • +
    • Contenido (texto)
    • +
    • Fecha de publicación (fecha)
    • +
    • Contador de likes (número)
    • +
    • Contador de comentarios (número)
    • +
    +
  4. +
  5. +

    Tabla de Comentarios:

    +
      +
    • ID del comentario (número entero, llave primaria)
    • +
    • ID del post (número entero, llave foránea)
    • +
    • ID del usuario (número entero, llave foránea)
    • +
    • Contenido (texto)
    • +
    • Fecha (fecha)
    • +
    • Contador de likes (número)
    • +
    +
  6. +
+

En esta estructura, cada tabla tiene una llave primaria que identifica de manera única cada registro. Además, utilizamos llaves foráneas para establecer relaciones entre tablas, permitiendo conectar, por ejemplo, un comentario con el post al que pertenece y con el usuario que lo creó.

+

Conceptos clave en la estructura

+
    +
  • Llave primaria: Identificador único para cada registro en una tabla.
  • +
  • Llave foránea: Campo que establece una relación con la llave primaria de otra tabla.
  • +
  • Tipos de datos: Cada campo tiene un tipo específico (número, texto, fecha) que determina qué información puede contener.
  • +
+

¿Qué tecnologías se utilizan para implementar bases de datos?

+

Existen diferentes motores de bases de datos, que son herramientas de software especializadas en almacenar y gestionar estas estructuras:

+
    +
  • MySQL: La base de datos relacional más común en el mundo
  • +
  • PostgreSQL: Base de datos de alto rendimiento utilizada en proyectos profesionales grandes
  • +
  • SQL Server: Solución de Microsoft para bases de datos empresariales
  • +
  • Oracle: Sistema de bases de datos para aplicaciones corporativas
  • +
  • SQLite: Versión ligera para aplicaciones más pequeñas
  • +
+

Estos motores de bases de datos funcionan como servidores que permiten que múltiples usuarios accedan, lean y modifiquen la información simultáneamente bajo reglas específicas.

+

SQL: el lenguaje de las bases de datos

+

Para interactuar con bases de datos relacionales, se utiliza un lenguaje específico llamado SQL (Structured Query Language). Este lenguaje permite realizar consultas como la siguiente:

+
SELECT comentarios.* 
+FROM comentarios 
+JOIN usuarios ON comentarios.usuario_id = usuarios.id 
+WHERE usuarios.nombre_usuario LIKE 'f%';
+
+

Esta consulta seleccionaría todos los comentarios de usuarios cuyo nombre comienza con la letra "f". El dominio de SQL es una habilidad muy valorada y bien remunerada en el mercado laboral.

+

Bases de datos no relacionales (NoSQL)

+

Además de las bases de datos relacionales, existen otros tipos:

+
    +
  • Bases de datos documentales: Almacenan datos en formato similar a JSON (MongoDB)
  • +
  • Bases de datos de grafos: Optimizadas para relaciones complejas entre entidades
  • +
  • Bases de datos llave-valor: Almacenan pares simples de llave y valor (Redis)
  • +
+

Estas alternativas son útiles para casos específicos donde las bases de datos relacionales tradicionales no son la mejor opción.

+

Las bases de datos son componentes esenciales en el desarrollo de software moderno, y su comprensión es fundamental para cualquier profesional de la tecnología. Más allá de simples tablas, representan sistemas complejos diseñados para mantener la integridad y eficiencia de los datos que sustentan aplicaciones de todo tipo. ¿Qué experiencia tienes con bases de datos? ¿Has trabajado con SQL o prefieres soluciones NoSQL? Comparte tu experiencia en los comentarios.

+
+
+ + \ No newline at end of file diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/02-C\303\263mo funciona el formato JPG.mp4" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/02-C\303\263mo funciona el formato JPG.mp4" new file mode 100644 index 0000000000000000000000000000000000000000..44069be7c9f58d778d6304c5a12426bbcea206ce --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/02-C\303\263mo funciona el formato JPG.mp4" @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:561e47b45e6f357d0bee9499103234fc22a5ff16be297fecb1e3ebff42b63377 +size 174453175 diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/02-C\303\263mo funciona el formato JPG.vtt" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/02-C\303\263mo funciona el formato JPG.vtt" new file mode 100644 index 0000000000000000000000000000000000000000..e95350f870a0d2731aa3cafd58a0b4c8f9390ee0 --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/02-C\303\263mo funciona el formato JPG.vtt" @@ -0,0 +1,457 @@ +WEBVTT + +00:00:00.080 --> 00:00:02.879 +El ojo humano no puede ver todos los + +00:00:02.879 --> 00:00:05.920 +colores. Hay varias cosas que son imperceptibles en + +00:00:05.920 --> 00:00:08.559 +nuestro ojo, pero cuando tomamos una fotografía, los + +00:00:08.559 --> 00:00:11.599 +sensores fotográficos guardan mucho más detalle en los + +00:00:11.599 --> 00:00:14.725 +formatos normales. En 1992, un grupo llamado el + +00:00:14.725 --> 00:00:18.165 +Join Photography Experse Group, o JPG, creó el + +00:00:18.165 --> 00:00:22.005 +formato JPG, un formato especial de compresión de + +00:00:22.005 --> 00:00:25.260 +imágenes que aprovecha esta característica del ojo humano + +00:00:25.420 --> 00:00:27.820 +para comprimir las fotos de una manera muy + +00:00:27.820 --> 00:00:30.740 +profunda. Primero tenemos que entender la diferencia entre + +00:00:30.740 --> 00:00:33.500 +una pantalla y el medio impreso. Cuando tú + +00:00:33.500 --> 00:00:35.340 +imprimes una foto, cuando tú ves una foto + +00:00:35.340 --> 00:00:37.440 +en el mundo real, esta foto está dividida + +00:00:37.500 --> 00:00:40.807 +realmente en 4 grandes colores, 4 grandes tintas, + +00:00:40.807 --> 00:00:42.995 +que son típicamente las 4 tintas que tiene + +00:00:42.995 --> 00:00:48.215 +una impresora, CMYK, cian, magenta, amarillo y negro. + +00:00:48.274 --> 00:00:50.355 +La combinación de cian, magenta, amarillo y negro + +00:00:50.355 --> 00:00:52.675 +da todos los colores que se pueden expresar + +00:00:52.675 --> 00:00:55.000 +en un papel, en un medio impreso. Pero + +00:00:55.000 --> 00:00:58.300 +en una pantalla funciona distinto, la luz tiene + +00:00:58.760 --> 00:01:01.160 +total color, que es el blanco, u ausencia + +00:01:01.160 --> 00:01:03.800 +absoluta de color, que es el negro. Entonces, + +00:01:03.800 --> 00:01:06.840 +¿cómo hacemos los puntos intermedios? Una pantalla tiene + +00:01:06.840 --> 00:01:08.280 +una serie de puntos que hemos visto en + +00:01:08.280 --> 00:01:10.645 +otras clases que se llaman pixeles. Cada 1 + +00:01:10.645 --> 00:01:12.845 +de estos pixeles tiene 3 colores, el rojo, + +00:01:12.845 --> 00:01:15.825 +el verde y el azul. Son 3 lámparas + +00:01:15.965 --> 00:01:18.125 +de estos 3 colores y dependiendo de su + +00:01:18.125 --> 00:01:20.765 +intensidad de brillo hay total rojo, total verde, + +00:01:20.765 --> 00:01:22.860 +total azul o ausencia de algunos de ellos. + +00:01:23.020 --> 00:01:24.940 +Esa intensidad de brillo es lo que genera + +00:01:24.940 --> 00:01:27.100 +el color en nuestras pantallas. La mayoría de + +00:01:27.100 --> 00:01:29.900 +formatos de captura de imagen completos, como los + +00:01:29.900 --> 00:01:32.140 +mapas de bits conocidos como BMP o como + +00:01:32.140 --> 00:01:35.200 +los PNGs, que son otro formato de compresión, + +00:01:35.705 --> 00:01:38.425 +guardan toda la información de cada píxel en + +00:01:38.425 --> 00:01:40.985 +cada punto, cuál es su total a rojo, + +00:01:40.985 --> 00:01:42.585 +verde y azul, que es la intensidad del + +00:01:42.585 --> 00:01:45.565 +brillo. Lo primero que hace JPG es transformarlo + +00:01:45.625 --> 00:01:49.130 +a otro formato que se llama YCVCR. La + +00:01:49.130 --> 00:01:52.250 +y es la cantidad de luz YCBCR es + +00:01:52.250 --> 00:01:54.409 +un plano cartesiano en un eje x y + +00:01:54.409 --> 00:01:56.329 +en un eje y que muestra, así como + +00:01:56.329 --> 00:01:58.409 +lo están viendo en este momento en pantalla, + +00:01:58.409 --> 00:02:01.289 +todo el arcoiris de color que existe dependiendo + +00:02:01.289 --> 00:02:03.805 +de un punto en el plano cartesiano. Esto + +00:02:03.805 --> 00:02:06.125 +es porque el ojo humano es menos sensible + +00:02:06.125 --> 00:02:07.805 +al color que a la luz y, de + +00:02:07.805 --> 00:02:10.785 +esa manera, guardando la luminancia de una fotografía, + +00:02:10.925 --> 00:02:13.725 +es más fácil poder comprimir el resto de + +00:02:13.725 --> 00:02:15.830 +los datos de su posición de color. Así + +00:02:15.830 --> 00:02:19.110 +que lo primero que hace JPG es agarrar + +00:02:19.110 --> 00:02:20.629 +esta foto, como esta foto que tengo acá + +00:02:20.629 --> 00:02:22.950 +de las montañas y cabaña, y luego pasar + +00:02:22.950 --> 00:02:26.390 +al plano de solamente iluminación o iluminación, que + +00:02:26.390 --> 00:02:28.150 +es este plano que me muestra la cantidad + +00:02:28.150 --> 00:02:30.045 +de brillo en cada 1 de los puntos. + +00:02:30.285 --> 00:02:33.985 +Y luego tengo un plano del croma azul + +00:02:34.045 --> 00:02:36.765 +y otro plano del croma rojo. Esto me + +00:02:36.765 --> 00:02:39.565 +construye todos los colores dependiendo de ese plano. + +00:02:39.565 --> 00:02:41.805 +Esta foto tendría esto en el croma azul + +00:02:41.805 --> 00:02:43.659 +y esto en el croma rojo. Yo entiendo + +00:02:43.659 --> 00:02:45.019 +que esto puede ser un poco extraño, pero + +00:02:45.019 --> 00:02:47.500 +así ha funcionado la fotografía, la impresión y + +00:02:47.500 --> 00:02:50.379 +muchos otros medios gráficos por mucho tiempo, son + +00:02:50.379 --> 00:02:53.099 +simplemente estándares. Ahora que tenemos la imagen dividida + +00:02:53.099 --> 00:02:55.439 +en estas 3 opciones, lo siguiente es crear + +00:02:55.500 --> 00:02:58.379 +bloques, cuadritos de la imagen, porque en ocasiones + +00:02:58.379 --> 00:03:00.915 +no necesitamos tanto detalle a nivel de píxel. + +00:03:00.915 --> 00:03:03.155 +Entonces, vamos a fragmentar la imagen en mini + +00:03:03.155 --> 00:03:06.275 +cuadritos. Típicamente, en JPG cada 1 de estos + +00:03:06.275 --> 00:03:09.235 +cuadritos es de 8 por 8 píxeles, pero + +00:03:09.235 --> 00:03:10.995 +los cuadritos pueden ser mucho más grandes y + +00:03:10.995 --> 00:03:13.235 +mucho más pequeños dependiendo de la calidad de + +00:03:13.235 --> 00:03:16.330 +exportación del JPG que quiero. Entre más pequeños + +00:03:16.330 --> 00:03:20.090 +los cuadritos, más resolución y más detalle tengo. + +00:03:20.090 --> 00:03:22.250 +Entre más grandes los cuadritos, pues más voy + +00:03:22.250 --> 00:03:24.570 +a tener pérdida. Por ejemplo, en esta foto + +00:03:24.570 --> 00:03:26.170 +de un gato, entre más me voy a + +00:03:26.170 --> 00:03:29.610 +la esquina superior derecha, más pixeles tengo porque + +00:03:29.610 --> 00:03:31.985 +tengo bloques más pequeños, y entre más me + +00:03:31.985 --> 00:03:34.385 +voy hacia la izquierda, los bloques son mucho + +00:03:34.385 --> 00:03:37.505 +más grandotes, entonces tengo mucha más pérdida. Algo + +00:03:37.505 --> 00:03:39.505 +interesante es que el JPG reduce más o + +00:03:39.505 --> 00:03:42.405 +menos a una cuarta parte la cantidad de + +00:03:42.465 --> 00:03:45.970 +detalle en los canales de color, sin remover + +00:03:45.970 --> 00:03:48.610 +la iluminación. De nuevo, porque el ojo humano + +00:03:48.610 --> 00:03:50.590 +no le importa tanto el color como la + +00:03:50.590 --> 00:03:53.030 +iluminación. Ahora, sin ir tan profundamente en detalle, + +00:03:53.250 --> 00:03:56.049 +se aplica una onda de coseno y la + +00:03:56.049 --> 00:03:58.209 +transformada del coseno. ¿Recuerdan la ecuación del coseno? + +00:03:58.209 --> 00:03:59.730 +La ecuación del coseno es esa que funciona + +00:03:59.730 --> 00:04:01.465 +como una onda, onda, y lo que hace + +00:04:01.465 --> 00:04:03.465 +es ir a la frecuencia de cada 1 + +00:04:03.465 --> 00:04:05.645 +de los bloques de 8 píxeles y convertirlo + +00:04:06.345 --> 00:04:08.665 +en una expresión matemática mucho más simple en + +00:04:08.665 --> 00:04:11.385 +una matriz. Estos son muchos detalles, si quieres + +00:04:11.385 --> 00:04:13.705 +en los recursos explicamos cada 1 de los + +00:04:13.705 --> 00:04:16.240 +componentes matemáticos. Lo único que tienes que entender + +00:04:16.240 --> 00:04:19.060 +es que, de toda la resolución de información + +00:04:19.680 --> 00:04:21.279 +matemática de cada 1 de los pixeles en + +00:04:21.279 --> 00:04:22.800 +cada 1 de estos bloques de 8 por + +00:04:22.800 --> 00:04:25.760 +8, se convierte en una ecuación matemática de + +00:04:25.760 --> 00:04:29.220 +onda de coseno para expresarlo en menos bytes. + +00:04:29.345 --> 00:04:32.785 +Luego se aplican diferentes mecanismos matemáticos de algebra + +00:04:32.785 --> 00:04:35.345 +lineal para comprimir los datos que ya existen. + +00:04:35.345 --> 00:04:38.305 +Estos mecanismos se conocen como cuantización. 1 de + +00:04:38.305 --> 00:04:39.665 +ellos, por ejemplo, es que se va a + +00:04:39.665 --> 00:04:42.145 +ir en zigzag por los diferentes componentes de + +00:04:42.145 --> 00:04:45.349 +los pixeles para ir agrupando cada 1 de + +00:04:45.349 --> 00:04:47.750 +los elementos de la matriz. Hacemos esto en + +00:04:47.750 --> 00:04:50.870 +grupos de 8 bloques para la iluminación, el + +00:04:50.870 --> 00:04:53.610 +cromo azul, el croma rojo, y luego agarramos + +00:04:53.750 --> 00:04:56.505 +esos 3 componentes que han sido comprimidos matemáticamente, + +00:04:57.125 --> 00:04:59.765 +los volvemos a convertir a RGB, a rojo, + +00:04:59.765 --> 00:05:01.685 +verde y azul, y eso lo volvemos a + +00:05:01.685 --> 00:05:03.685 +meter en un solo archivo y tienes tu + +00:05:03.685 --> 00:05:06.085 +imagen JPG. Lo más importante que tienes que + +00:05:06.085 --> 00:05:09.445 +recordar es que JPG elimina las cosas que + +00:05:09.445 --> 00:05:12.220 +el ojo humano no puede ver, cambia el + +00:05:12.220 --> 00:05:14.460 +formato de un formato rojo, verde, azul a + +00:05:14.460 --> 00:05:17.440 +un formato iluminancia, croma azul y croma rojo. + +00:05:17.700 --> 00:05:20.700 +Luego vuelve la imagen en pequeños bloques de + +00:05:20.700 --> 00:05:24.264 +8 píxeles por 8 píxeles, donde busca una + +00:05:24.264 --> 00:05:27.485 +especie de promedio de los colores expresados matemáticamente + +00:05:28.504 --> 00:05:30.664 +para luego expresarlo más chiquito en un archivo + +00:05:30.664 --> 00:05:33.065 +más pequeño con menos necesidad de bytes y + +00:05:33.065 --> 00:05:35.705 +volverlo a combinar y volver a comprimir en + +00:05:35.705 --> 00:05:38.479 +un archivo RGB final, que es la imagen + +00:05:38.479 --> 00:05:40.800 +que terminamos viendo como JPG. JPG no es + +00:05:40.800 --> 00:05:43.539 +el único formato, existe un formato llamado PNG + +00:05:43.759 --> 00:05:48.080 +o Portable Network Graphics, que no comprime las + +00:05:48.080 --> 00:05:51.675 +imágenes como las comprime JPG. Este formato retiene + +00:05:51.675 --> 00:05:54.655 +la calidad y funciona de una manera completamente + +00:05:54.715 --> 00:05:56.914 +distinta, pero tiende a tener formatos de archivo + +00:05:56.914 --> 00:05:59.675 +mucho más grandes por eso. PNG viene en + +00:05:59.675 --> 00:06:03.115 +2 sabores, PNG 8 y PNG 32. Si + +00:06:03.115 --> 00:06:04.715 +has tomado el curso de fundamentos de ingeniería + +00:06:04.715 --> 00:06:06.510 +software, sabes que el 8 y el 32 + +00:06:06.510 --> 00:06:08.990 +tienen que ver con cantidad de bits, que + +00:06:08.990 --> 00:06:11.070 +es la cantidad de información que tienes. Para + +00:06:11.070 --> 00:06:13.550 +que te hagas una idea, PNG 8 tiene + +00:06:13.550 --> 00:06:15.950 +muy poquitos colores porque solamente es 8 bits, + +00:06:15.950 --> 00:06:19.044 +donde PNG 32 tiene 1000000 de colores. PNG + +00:06:19.044 --> 00:06:23.044 +32 puede tener transparencias perfectas, donde los archivos + +00:06:23.044 --> 00:06:25.305 +JPG no tienen la capacidad de ser transparentes. + +00:06:25.764 --> 00:06:28.245 +PNG 8 también puede tener transparencia, pero solamente + +00:06:28.245 --> 00:06:30.245 +tiene un color para la transparencia, así que + +00:06:30.245 --> 00:06:32.790 +lo transparente ve como si fuera un hueco + +00:06:32.790 --> 00:06:36.470 +pixelado, donde las transparencias de PNG 32 tienen + +00:06:36.470 --> 00:06:39.930 +todo el arcoiris de transparencia, incluyendo bordes completamente + +00:06:39.990 --> 00:06:40.490 +suaves. diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/02-Lecturas recomendadas.txt" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/02-Lecturas recomendadas.txt" new file mode 100644 index 0000000000000000000000000000000000000000..5217d963c1a399d66238af9a33b144065908a644 --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/02-Lecturas recomendadas.txt" @@ -0,0 +1 @@ +https://www.freecodecamp.org/news/how-jpg-works-a4dbd2316f35/ diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/02-Resumen.html" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/02-Resumen.html" new file mode 100644 index 0000000000000000000000000000000000000000..f566d3498d887002a876b80ded3908adb61efb83 --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/02-Resumen.html" @@ -0,0 +1,158 @@ + + + + + + + Cómo funciona el formato .JPG + + + +
+
+

Resumen

La compresión de imágenes es un proceso fascinante que aprovecha las limitaciones de la percepción humana para optimizar el almacenamiento digital. Entender cómo funcionan formatos como JPG y PNG nos permite tomar decisiones más informadas sobre qué formato utilizar según nuestras necesidades, ya sea para fotografía, diseño web o cualquier otro uso digital donde las imágenes juegan un papel fundamental.

+

¿Cómo funciona la compresión JPG y por qué es tan efectiva?

+

El formato JPG (Joint Photography Experts Group) revolucionó la fotografía digital desde su creación en 1992. Su efectividad radica en un principio simple pero poderoso: el ojo humano no puede percibir todos los colores con la misma sensibilidad. Los sensores fotográficos capturan mucho más detalle del que podemos apreciar, y JPG aprovecha esta característica para comprimir imágenes de manera eficiente.

+

El proceso de compresión JPG sigue varios pasos fundamentales:

+
    +
  1. +

    Conversión de RGB a YCbCr: Primero transforma la imagen del formato RGB (rojo, verde, azul) a YCbCr, donde:

    +
      +
    • Y representa la luminancia (cantidad de luz)
    • +
    • Cb representa el croma azul
    • +
    • Cr representa el croma rojo
    • +
    +
  2. +
  3. +

    División en bloques: La imagen se fragmenta en pequeños cuadros, típicamente de 8×8 píxeles.

    +
  4. +
  5. +

    Aplicación de la transformada de coseno: Se utiliza una expresión matemática basada en la función coseno para simplificar la información de cada bloque.

    +
  6. +
  7. +

    Cuantización: Se aplican mecanismos de álgebra lineal para comprimir aún más los datos, recorriendo en zigzag los componentes de los píxeles.

    +
  8. +
  9. +

    Reconversión y compresión final: Los componentes comprimidos se vuelven a convertir a RGB y se empaquetan en un archivo final.

    +
  10. +
+

Lo más importante es entender que JPG elimina información que el ojo humano no puede percibir, priorizando la luminancia sobre el color, ya que somos más sensibles a los cambios de luz que a los cambios cromáticos.

+

¿Qué determina la calidad de un JPG?

+

El tamaño de los bloques en los que se divide la imagen es crucial para determinar la calidad final:

+
    +
  • Bloques más pequeños = mayor resolución y detalle
  • +
  • Bloques más grandes = mayor pérdida de información
  • +
+

Por ejemplo, en una imagen podemos tener zonas con bloques pequeños (mayor detalle) y otras con bloques grandes (mayor compresión). Esta flexibilidad permite que JPG reduzca aproximadamente a una cuarta parte la cantidad de detalle en los canales de color, manteniendo la información de iluminación que es más importante para nuestra percepción.

+

¿Cuáles son las diferencias entre JPG y PNG?

+

El formato PNG (Portable Network Graphics) ofrece una alternativa con características distintas al JPG:

+
    +
  1. +

    Compresión sin pérdida: A diferencia del JPG, el PNG no elimina información, lo que resulta en archivos de mayor tamaño pero con mejor calidad.

    +
  2. +
  3. +

    Soporte para transparencia: Una ventaja significativa del PNG es su capacidad para manejar transparencias, algo imposible en JPG.

    +
  4. +
  5. +

    Variantes según profundidad de color:

    +
      +
    • PNG-8: Utiliza 8 bits, lo que limita su paleta a pocos colores. Puede tener transparencia, pero solo de un color, resultando en bordes pixelados.
    • +
    • PNG-32: Utiliza 32 bits, permitiendo millones de colores y transparencias perfectas con bordes suaves.
    • +
    +
  6. +
+

¿Cómo se relacionan los formatos con los medios de visualización?

+

Es importante entender la diferencia entre cómo se representan los colores en diferentes medios:

+
    +
  • +

    Medio impreso (CMYK): Utiliza cuatro tintas (cian, magenta, amarillo y negro) que se combinan para crear todos los colores posibles en papel.

    +
  • +
  • +

    Pantallas digitales (RGB): Funcionan con tres colores de luz (rojo, verde y azul) que varían en intensidad para crear el espectro completo, desde la ausencia total de color (negro) hasta la presencia total (blanco).

    +
  • +
+

Esta diferencia fundamental explica por qué los formatos digitales como JPG y PNG están optimizados para visualización en pantalla, mientras que para impresión profesional se requieren otros procesos de conversión.

+

La elección entre JPG y PNG dependerá siempre del uso específico que queramos dar a nuestras imágenes, considerando factores como la necesidad de transparencia, la calidad requerida y las limitaciones de almacenamiento o ancho de banda.

+

¿Has notado la diferencia de calidad entre imágenes JPG y PNG en tus proyectos? Comparte tu experiencia y cuéntanos qué formato prefieres para diferentes situaciones.

+
+
+ + \ No newline at end of file diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/03-Resumen.html" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/03-Resumen.html" new file mode 100644 index 0000000000000000000000000000000000000000..c20d80e1c707446bcb69d41020f8611d951b13d1 --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/03-Resumen.html" @@ -0,0 +1,153 @@ + + + + + + + Videos: contenedores, codecs y protocolos + + + +
+
+

Resumen

La compresión de video es un campo fascinante que combina matemáticas avanzadas, ciencia computacional y tecnología de hardware para permitirnos disfrutar de contenido audiovisual en nuestros dispositivos. Sin esta tecnología, sería prácticamente imposible almacenar o transmitir videos digitales debido al enorme volumen de datos que representan. Veamos cómo funciona este proceso esencial en nuestra vida digital cotidiana.

+

¿Cómo funciona la compresión de video?

+

La compresión de video surge de una necesidad práctica: una película no es más que una secuencia de imágenes mostradas en sucesión rápida, típicamente a 24 frames por segundo. Sin compresión, el tamaño de estos archivos sería inmanejable.

+

Los algoritmos de compresión de video funcionan identificando patrones y redundancias a lo largo del tiempo. Por ejemplo, en un video de una persona corriendo, el fondo permanece mayormente estático mientras solo la persona se mueve. Los códecs (compresores/descompresores) identifican estas áreas estáticas y las convierten en bloques tridimensionales que permanecen constantes hasta que cambia completamente la escena.

+

Esta técnica permite reducir drásticamente el tamaño del archivo sin perder calidad visual perceptible, aunque requiere operaciones matemáticas complejas que demandan considerable potencia de procesamiento.

+

Anatomía de un archivo de video digital

+

Un video digital moderno está compuesto por varios elementos clave:

+
    +
  • Contenedor: Es el formato de archivo donde se almacena todo el contenido (.mp4, .mkv, .avi, .MOV, etc.)
  • +
  • Pistas de video: La información visual comprimida mediante un códec específico
  • +
  • Pistas de audio: El sonido comprimido con su propio códec
  • +
  • Subtítulos: Texto sincronizado que aparece en momentos específicos
  • +
+

Un mismo contenedor puede albergar múltiples pistas de cada tipo, permitiendo diferentes idiomas de audio, subtítulos o incluso ángulos de cámara.

+

Códecs: el corazón de la compresión

+

Los códecs son algoritmos especializados que comprimen y descomprimen el contenido audiovisual. Entre más comprimido esté un video, más recursos computacionales se necesitan para reproducirlo en tiempo real.

+

Los códecs de video más comunes actualmente son:

+
    +
  • H.264: El estándar más extendido, propiedad del consorcio MPEG-LA
  • +
  • H.265: Una versión más eficiente, popular en dispositivos Apple
  • +
  • VP9: Desarrollado por Google como alternativa abierta
  • +
  • AV1: Un códec más reciente y eficiente
  • +
+

Es importante destacar que H.264 es un códec propietario cuyo uso requiere el pago de licencias por parte de los fabricantes de dispositivos. Como respuesta, Google adquirió la empresa ON2 y desarrolló VP9 como alternativa de código abierto. Paralelamente, la comunidad de software libre creó X264, una implementación abierta del algoritmo H.264.

+

La compresión de audio y su evolución

+

El audio en los videos también requiere compresión. El formato MP3 revolucionó este campo en los años 90 aplicando un principio similar al JPG: eliminar componentes que el oído humano no puede percibir.

+

Los códecs de audio más utilizados actualmente son:

+
    +
  • AAC: Comúnmente usado junto con H.264 en contenedores MP4
  • +
  • MP3: Ampliamente utilizado por su compatibilidad universal
  • +
  • Opus: Un códec más moderno y eficiente
  • +
+

Aunque existen audiófilos que afirman percibir diferencias sutiles entre formatos de alta fidelidad, para la mayoría de usuarios las diferencias entre códecs de audio de calidad similar son imperceptibles.

+

Transmisión de video por internet: protocolos especializados

+

La transmisión de video por internet presenta desafíos únicos. Cuando accedemos a un punto específico de un video (como saltar al minuto 5 en YouTube), necesitamos información de la cabecera del archivo para reproducirlo correctamente.

+

Para solucionar este problema, existen protocolos de transmisión especializados:

+
    +
  • HLS (HTTP Live Streaming): El más popular actualmente
  • +
  • MPEG-DASH: Una alternativa estandarizada
  • +
  • RTMP: Un protocolo más antiguo de la era Flash
  • +
+

Estos protocolos dividen el video en segmentos pequeños, cada uno con su propia cabecera, permitiendo acceder a cualquier punto del video sin necesidad de descargarlo completo.

+

Adaptación de calidad y bitrate

+

Los servidores modernos de video monitorizan constantemente el ancho de banda disponible entre el usuario y el servidor, ajustando dinámicamente la calidad del video para evitar interrupciones.

+

Es importante distinguir entre resolución y bitrate:

+
    +
  • Resolución: Número de píxeles (como 1080p, 720p)
  • +
  • Bitrate: Cantidad de datos por segundo (medido en bits/segundo)
  • +
+

Contrario a lo que muchos creen debido a la interfaz de YouTube, resolución y bitrate no están necesariamente vinculados. Es posible tener un video 1080p con diferentes bitrates, resultando en distintos niveles de calidad visual dentro de la misma resolución.

+

Los servicios como Netflix o Twitch utilizan procesadores avanzados para recomprimir videos en tiempo real, adaptándose a las condiciones de red de cada usuario.

+

Para máxima compatibilidad al exportar videos, se recomienda usar:

+
    +
  • Contenedor: MP4
  • +
  • Códec de video: H.264
  • +
  • Códec de audio: AAC
  • +
+

Los subtítulos también siguen estándares, siendo SRT y VTT los formatos más comunes, que básicamente son archivos de texto con marcas de tiempo que indican cuándo debe mostrarse cada línea.

+

La compresión de video es un campo en constante evolución que ha transformado nuestra forma de consumir contenido audiovisual. ¿Has notado cómo ha mejorado la calidad de streaming en los últimos años a pesar de usar el mismo ancho de banda? Comparte tu experiencia en los comentarios.

+
+
+ + \ No newline at end of file diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/03-Videos contenedores codecs y protocolos.mp4" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/03-Videos contenedores codecs y protocolos.mp4" new file mode 100644 index 0000000000000000000000000000000000000000..5e320116522f05231e291dbe8c3f832717ccab78 --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/03-Videos contenedores codecs y protocolos.mp4" @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fb873924e477c6a1da9d77d52ba5ed6e37a99480548e918aa657d85ea51b113a +size 264338212 diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/04-C\303\263mo Funciona un zip.mp4" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/04-C\303\263mo Funciona un zip.mp4" new file mode 100644 index 0000000000000000000000000000000000000000..3a80730215c484a6ddc0a362dd6fbe9770cbac0a --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/04-C\303\263mo Funciona un zip.mp4" @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e2b83ffa4e9d32fd44088b03c347997005eac16bf71f4c83038a79f06d5da7ff +size 192800425 diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/04-C\303\263mo Funciona un zip.vtt" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/04-C\303\263mo Funciona un zip.vtt" new file mode 100644 index 0000000000000000000000000000000000000000..97182c9771fab1f5371d5c517dfe25f229d021aa --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/04-C\303\263mo Funciona un zip.vtt" @@ -0,0 +1,562 @@ +WEBVTT + +00:00:00.160 --> 00:00:02.159 +Archivos punto ZIP los conoces como los archivos + +00:00:02.159 --> 00:00:04.560 +comprimidos. La forma en la que comprimen se + +00:00:04.560 --> 00:00:07.600 +puede entender, es una ecuación matemática interesante. Vamos + +00:00:07.600 --> 00:00:10.500 +a comprimir una palabra y a entender matemáticamente + +00:00:10.600 --> 00:00:13.094 +esa palabra, cómo se comprime. La palabra que + +00:00:13.094 --> 00:00:16.535 +vamos a comprimir se llama manzanas amarillas de + +00:00:16.535 --> 00:00:18.855 +Ana. Para efectos de la clase, vamos a + +00:00:18.855 --> 00:00:21.654 +imaginar que toda la palabra es una palabra + +00:00:21.654 --> 00:00:24.055 +en mayúscula, entonces no tenemos letras mayúsculas o + +00:00:24.055 --> 00:00:26.380 +minúsculas, en la práctica sí lo tendríamos. Manzanas + +00:00:26.380 --> 00:00:29.580 +amarillas de Ana. Ahora que tenemos la palabra, + +00:00:29.580 --> 00:00:32.940 +tenemos que entender cuántas letras tiene y cuáles + +00:00:32.940 --> 00:00:35.980 +son las letras más frecuentes de la palabra + +00:00:35.980 --> 00:00:38.220 +manzanas de Ana. Así que lo que vamos + +00:00:38.220 --> 00:00:39.739 +a hacer es que vamos a analizar esta + +00:00:39.739 --> 00:00:41.995 +palabra. La letra más frecuente es la letra + +00:00:41.995 --> 00:00:45.055 +a. Hay 8 letras a, hay 3 letras + +00:00:45.195 --> 00:00:48.555 +n, hay 3 espacios. El espacio es una + +00:00:48.555 --> 00:00:51.035 +letra, el espacio es un byte. Tú guardas + +00:00:51.035 --> 00:00:53.594 +en tu computadora cuando escribes un espacio, un + +00:00:53.594 --> 00:00:56.597 +byte, cuyo valor es espacio. La m tiene + +00:00:56.597 --> 00:00:59.506 +2, tiene 2 s, 2 l, una z, + +00:00:59.506 --> 00:01:02.030 +una r, una I, una d y una + +00:01:02.030 --> 00:01:04.430 +e. Ahora que tengo clara la frecuencia de + +00:01:04.430 --> 00:01:07.250 +las palabras, puedo empezar a comprimir. Tú sabes + +00:01:07.630 --> 00:01:10.655 +que las letras dentro de una computadora son + +00:01:10.655 --> 00:01:13.454 +bytes, es decir, 8 bits, 8 grupos de + +00:01:13.454 --> 00:01:16.414 +0 y 1, y estos representan un número, + +00:01:16.414 --> 00:01:17.935 +y ese número es la forma en la + +00:01:17.935 --> 00:01:19.534 +que se guarda en el computador cada una + +00:01:19.534 --> 00:01:21.854 +de las letras. Los números corresponden a una + +00:01:21.854 --> 00:01:24.280 +tabla que se llama la tabla ASCII, o + +00:01:24.659 --> 00:01:27.539 +ASCII. La letra m, por ejemplo, es el + +00:01:27.539 --> 00:01:31.380 +número 77 en ASCII, y la letra a + +00:01:31.380 --> 00:01:34.840 +es el 65. Así que internamente entre una + +00:01:34.979 --> 00:01:37.675 +computadora, una letra a es el número en + +00:01:37.675 --> 00:01:40.475 +bytes que equivale a 65. Manzanas amarillas de + +00:01:40.475 --> 00:01:43.995 +Ana son 25 letras, es decir, se van + +00:01:43.995 --> 00:01:46.955 +a almacenar 25 bytes de información en la + +00:01:46.955 --> 00:01:50.575 +computadora. Cada byte son 8 bits. Entonces, multiplicamos + +00:01:51.035 --> 00:01:53.250 +25 por 8 y entendemos que en total + +00:01:53.250 --> 00:01:55.569 +la cantidad de datos que tiene Manzanas amarillas + +00:01:55.569 --> 00:01:58.450 +de Ana son 200 bits. La idea de + +00:01:58.450 --> 00:02:02.789 +la compresión es que necesitemos la menor cantidad + +00:02:03.090 --> 00:02:07.365 +de bits para expresar las letras más comunes + +00:02:07.365 --> 00:02:09.625 +de las palabras que están en un archivo. + +00:02:10.405 --> 00:02:12.425 +Entonces, en el caso de nuestra palabra manzanas + +00:02:12.485 --> 00:02:15.205 +amarillas de Ana, la letra a es la + +00:02:15.205 --> 00:02:17.910 +que más se representa. Por ende, debería haber + +00:02:17.910 --> 00:02:19.310 +una forma en la que en vez de + +00:02:19.310 --> 00:02:21.950 +que usáramos 8 bits, 8 ceros y unos + +00:02:21.950 --> 00:02:25.970 +para representar la letra a, usáramos solamente un + +00:02:26.030 --> 00:02:28.030 +bit. Y si la segunda letra más común + +00:02:28.030 --> 00:02:30.965 +es la letra n, que tiene 3 apariciones + +00:02:30.965 --> 00:02:33.385 +en nuestro archivo, o el espacio que aparece + +00:02:33.445 --> 00:02:35.925 +3 veces en el archivo Manzanas amarilles de + +00:02:35.925 --> 00:02:38.085 +Ana, pues debería requerir un máximo de 2 + +00:02:38.085 --> 00:02:41.445 +bits o de 3 bits para representarse. Esto + +00:02:41.445 --> 00:02:44.390 +existe. Nosotros podemos crear algo que se llama + +00:02:44.390 --> 00:02:47.350 +un árbol binario. Un árbol binario es una + +00:02:47.350 --> 00:02:49.430 +estructura de datos que tiene una raíz y + +00:02:49.430 --> 00:02:52.150 +esa raíz tiene 2 caminos. Si agarro para + +00:02:52.150 --> 00:02:54.069 +la derecha es un 1 y si agarro + +00:02:54.069 --> 00:02:56.069 +para la izquierda es un 0. Y cada + +00:02:56.069 --> 00:02:58.150 +1 de estos nodos tiene máximo 2 caminos, + +00:02:58.150 --> 00:03:01.185 +por eso se llaman árboles binarios, porque cada + +00:03:01.405 --> 00:03:04.205 +punto o cada nodo del árbol solamente agarra + +00:03:04.205 --> 00:03:07.805 +hacia 2 lados. Esto es una representación gráfica + +00:03:07.805 --> 00:03:10.205 +de una estructura matemática. Por ahora no te + +00:03:10.205 --> 00:03:13.190 +preocupes, simplemente piensa que hay una raíz. Y + +00:03:13.190 --> 00:03:15.909 +la raíz, siempre donde agarro, es el inicio + +00:03:15.909 --> 00:03:18.310 +del archivo. Vamos a imaginar que cuando en + +00:03:18.310 --> 00:03:20.709 +mi raíz voy para la derecha, es un + +00:03:20.709 --> 00:03:22.790 +1 y cuando voy para la izquierda es + +00:03:22.790 --> 00:03:25.030 +un 0. Y vamos a asumir que cada + +00:03:25.030 --> 00:03:27.605 +vez que digo 1 es una letra, y + +00:03:28.145 --> 00:03:30.945 +cada vez que digo 0 estoy bajando en + +00:03:30.945 --> 00:03:34.405 +mi árbol. Entonces, la letra que más frecuencia + +00:03:34.465 --> 00:03:36.465 +tiene en mi archivo la voy a colocar + +00:03:36.465 --> 00:03:38.640 +en la primera ramita que tiene un 1. + +00:03:38.880 --> 00:03:40.819 +Así que de la raíz de mi árbol + +00:03:40.960 --> 00:03:43.520 +1, ahí voy a colocar letra a, y + +00:03:43.520 --> 00:03:46.000 +luego hago un 0 a la izquierda de + +00:03:46.000 --> 00:03:47.840 +la primera del primer nodo de mi árbol, + +00:03:47.840 --> 00:03:49.780 +esa primera raíz, y luego hago otro nodo + +00:03:49.840 --> 00:03:52.400 +de 1. La segunda letra más frecuente sería + +00:03:52.400 --> 00:03:54.625 +la n, y luego vuelvo a hacer otro + +00:03:54.625 --> 00:03:57.345 +0 y otro 1. La siguiente letra más + +00:03:57.345 --> 00:03:59.825 +frecuente es el espacio, otro 0 y otro + +00:03:59.825 --> 00:04:01.905 +1 es la m, otro 0 y otro + +00:04:01.905 --> 00:04:04.225 +1 es la s, otro 0 otro 1 + +00:04:04.225 --> 00:04:06.210 +es la l, otro 0 otro 1 es + +00:04:06.450 --> 00:04:08.470 +z, otro 0, otro 1 es la r, + +00:04:08.530 --> 00:04:11.090 +0 1 I, 0 1 d y 0 + +00:04:11.090 --> 00:04:14.150 +1 e. Lo único que hice fue organizarlos + +00:04:14.770 --> 00:04:17.970 +de mayor frecuencia a menor frecuencia, de acuerdo + +00:04:17.970 --> 00:04:20.524 +a la tabla de frecuencias. Ahora que tengo + +00:04:20.524 --> 00:04:24.044 +el árbol organizado, donde yo siempre sé que + +00:04:24.044 --> 00:04:26.685 +0 significa moverme a la izquierda, bajar un + +00:04:26.685 --> 00:04:28.925 +nivel en mi árbol y que 1 significa + +00:04:28.925 --> 00:04:31.405 +encontrar una letra, ahora voy a tratar de + +00:04:31.405 --> 00:04:36.890 +representar la palabra manzanas amarillas de Ana, expresada + +00:04:37.350 --> 00:04:40.150 +como los bits a donde llego a cada + +00:04:40.150 --> 00:04:42.630 +letra. Por ejemplo, la primera letra es la + +00:04:42.630 --> 00:04:46.550 +letra m. M está bajando 3 veces en + +00:04:46.550 --> 00:04:48.630 +el árbol y yendo a la derecha una + +00:04:48.630 --> 00:04:50.715 +sola vez. O sea, si yo fuera a + +00:04:50.715 --> 00:04:52.875 +expresar en movimientos de ceros y unos, la + +00:04:52.875 --> 00:04:56.395 +m sería 0 0 0 1. Entonces, esa + +00:04:56.395 --> 00:04:59.455 +m es 0 0 0 1. La letra + +00:04:59.514 --> 00:05:02.014 +a de manzanas, me sigue la letra a, + +00:05:02.270 --> 00:05:05.310 +sería simplemente un 1, porque es la primera + +00:05:05.310 --> 00:05:07.550 +letra de la raíz del árbol hacia abajo. + +00:05:07.550 --> 00:05:10.850 +Entonces, solamente necesito un bit para expresar a. + +00:05:10.910 --> 00:05:13.950 +¿Cuántos bits necesito para expresar n? 2, un + +00:05:13.950 --> 00:05:15.870 +0 y un 1, de acuerdo al árbol. + +00:05:15.870 --> 00:05:17.775 +Man. Hagamos lo mismo para el resto de + +00:05:17.775 --> 00:05:20.495 +las letras. Z, que está bastante lejos, es + +00:05:20.495 --> 00:05:23.455 +un 0 0 0 0 0 1, y + +00:05:23.455 --> 00:05:25.375 +ahí tengo la z. Otras tengo la a, + +00:05:25.375 --> 00:05:26.974 +que es un 1, la n, que es + +00:05:26.974 --> 00:05:29.969 +0 1, a un 1, y por último + +00:05:29.969 --> 00:05:32.910 +s, que es un 0 0 0 0 + +00:05:33.290 --> 00:05:35.290 +1, bajo 4 veces en el árbol y + +00:05:35.290 --> 00:05:37.210 +un 1. Y con este tengo la palabra + +00:05:37.210 --> 00:05:40.410 +manzanas. Ahora hagamos todo el resto de la + +00:05:40.410 --> 00:05:42.510 +del árbol, todo el resto de las palabras. + +00:05:42.810 --> 00:05:53.435 +Manzanas, espacio, AMARILLAS espacio d e espacio ANA. + +00:05:53.975 --> 00:05:56.295 +Como ven acá, tengo un gran grupo de + +00:05:56.295 --> 00:05:59.335 +ceros y unos. Algunos son más grandes que + +00:05:59.335 --> 00:06:02.480 +un byte. Por ejemplo, la letra d tiene + +00:06:02.480 --> 00:06:04.620 +0 0 0 0 0 0 0 0 + +00:06:04.620 --> 00:06:08.800 +0 1. Estos son 10 bits, mucho más + +00:06:08.800 --> 00:06:11.200 +grande que los 8 que normalmente tendría un + +00:06:11.200 --> 00:06:13.780 +byte, y la letra e tiene un 0 + +00:06:14.000 --> 00:06:16.665 +adicional, son 11 bits. Sin embargo, cuando yo + +00:06:16.665 --> 00:06:19.145 +cuento todos estos bits, me doy cuenta que + +00:06:19.145 --> 00:06:22.745 +son tan solo 98 bits. La palabra original, + +00:06:22.745 --> 00:06:25.945 +manzanas amarillas de Ana, que son 25 letras, + +00:06:25.945 --> 00:06:29.165 +me habría tomado 25 bytes o 200 bits. + +00:06:29.460 --> 00:06:32.420 +Organizada con nuestro árbol, logré comprimirla en más + +00:06:32.420 --> 00:06:34.740 +de un 50 por 100 y logré hacer + +00:06:34.740 --> 00:06:37.620 +98 bits. Si la palabra fuera mucho más + +00:06:37.620 --> 00:06:39.700 +grande, si tuviera una frase más larga, la + +00:06:39.700 --> 00:06:43.395 +habría logrado comprimir aún más, porque entre más + +00:06:43.395 --> 00:06:47.555 +letras se comporten con alta frecuencia, entonces más + +00:06:47.555 --> 00:06:49.395 +fácil va a ser comprimir. Y esto es + +00:06:49.395 --> 00:06:51.635 +todo lo que tuve que hacer para comprimir + +00:06:51.635 --> 00:06:55.055 +mi archivo. Pero contémoslo, si agarramos todos estos + +00:06:55.055 --> 00:06:55.551 +ceros y unos en la versión comprimida y + +00:06:55.551 --> 00:06:55.625 +los dividimos en grupos de 8, como sería + +00:06:55.625 --> 00:06:58.430 +guardarlo en comprimida y los dividimos en grupos + +00:06:58.430 --> 00:07:01.150 +de 8, como sería guardarlo en bytes, tendría + +00:07:01.150 --> 00:07:05.890 +12.25, o sea, 12 bytes y un pedacito + +00:07:06.190 --> 00:07:08.370 +de otro byte, que para efectos prácticos podemos + +00:07:08.510 --> 00:07:09.950 +colocarle un montón de ceros al final para + +00:07:09.950 --> 00:07:13.895 +completarlo y serían en total 13 bytes. Son + +00:07:13.895 --> 00:07:16.935 +bytes normales, son letras normales. Por eso, Condor + +00:07:16.935 --> 00:07:18.615 +es un archivo punto ZIP está lleno de + +00:07:18.615 --> 00:07:21.015 +letras raras que no tienen sentido, porque si + +00:07:21.015 --> 00:07:22.775 +yo convierto cada 1 de esto en una + +00:07:22.775 --> 00:07:24.780 +letra para poder guardarlo en mi disco duro, + +00:07:24.860 --> 00:07:26.380 +voy a encontrar que cada 1 de estos + +00:07:26.380 --> 00:07:28.300 +números corresponde a una letra en la tabla + +00:07:28.300 --> 00:07:31.260 +ASCII, pero son números aleatorios que simplemente se + +00:07:31.260 --> 00:07:33.660 +ven como basura. Sin embargo, si yo agarro + +00:07:33.660 --> 00:07:35.740 +todos estos ceros y unos, que son 98 + +00:07:35.740 --> 00:07:37.469 +bits, y también tengo, por ejemplo, en la + +00:07:37.469 --> 00:07:37.567 +cabecera del archivo guardado de algún formato, mi + +00:07:37.567 --> 00:07:40.824 +árbol donde tengo archivo guardado de algún formato + +00:07:41.365 --> 00:07:44.324 +mi árbol donde tengo la estructura de a + +00:07:44.324 --> 00:07:46.745 +qué letra corresponde cada 1 de los movimientos, + +00:07:47.125 --> 00:07:50.085 +entonces yo puedo descomprimir el archivo y volver + +00:07:50.085 --> 00:07:52.645 +a recrearlo y tener una vez más Manzanas + +00:07:52.645 --> 00:07:55.270 +amarillas de Ana. Ese proceso es el proceso + +00:07:55.270 --> 00:07:56.950 +a través del cual se comprime y se + +00:07:56.950 --> 00:07:59.210 +descomprime un archivo. No es el único algoritmo, + +00:07:59.350 --> 00:08:02.310 +hay varios algoritmos de compresión y descompresión, pero + +00:08:02.310 --> 00:08:04.390 +esta es una de las técnicas. Esto te + +00:08:04.390 --> 00:08:06.470 +recuerda que a pesar de que guardamos en + +00:08:06.470 --> 00:08:10.215 +grupos de bytes en nuestra computadora todo tipo + +00:08:10.515 --> 00:08:12.675 +de datos, podemos acceder bit por bit a + +00:08:12.675 --> 00:08:14.935 +cada 1 de ellos usando lenguajes de programación. + +00:08:14.995 --> 00:08:17.155 +De hecho, les dejo de reto que ustedes + +00:08:17.155 --> 00:08:20.435 +publiquen en los comentarios de esta clase algún + +00:08:20.435 --> 00:08:23.235 +código en cualquier lenguaje de programación donde implementen + +00:08:23.235 --> 00:08:24.935 +este algoritmo. Me encantará leerlo. diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/04-Resumen.html" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/04-Resumen.html" new file mode 100644 index 0000000000000000000000000000000000000000..502414595fe2e2c7f1a235bfd508a0a54121e115 --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/04-Archivos y estructuras de datos/04-Resumen.html" @@ -0,0 +1,160 @@ + + + + + + + Cómo Funciona un .zip + + + +
+
+

Resumen

La compresión de archivos es un proceso fascinante que utilizamos a diario sin entender realmente cómo funciona. Detrás de cada archivo ZIP hay una serie de algoritmos matemáticos que permiten reducir significativamente el tamaño de nuestros datos sin perder información. Comprender estos mecanismos no solo satisface nuestra curiosidad, sino que nos ayuda a entender mejor cómo funcionan nuestras computadoras a nivel fundamental.

+

¿Cómo funciona la compresión de archivos?

+

La compresión de archivos es un proceso matemático que busca representar la misma información utilizando menos bits. Para entender este concepto, analizaremos un ejemplo práctico comprimiendo la frase "MANZANAS AMARILLAS DE ANA".

+

Esta frase contiene 25 caracteres (incluyendo espacios), lo que normalmente ocuparía 25 bytes o 200 bits en una computadora (cada byte son 8 bits). Sin embargo, mediante técnicas de compresión, podemos reducir significativamente este tamaño.

+

El primer paso es analizar la frecuencia de cada letra en nuestra frase:

+
    +
  • A: 8 veces
  • +
  • N: 3 veces
  • +
  • Espacio: 3 veces
  • +
  • M: 2 veces
  • +
  • S: 2 veces
  • +
  • L: 2 veces
  • +
  • Z, R, I, D, E: 1 vez cada una
  • +
+

La clave de la compresión está en asignar códigos más cortos a los caracteres que aparecen con mayor frecuencia, y códigos más largos a los que aparecen menos veces.

+

Creación del árbol binario para la compresión

+

Para implementar esta idea, utilizamos una estructura llamada árbol binario. En este árbol:

+
    +
  • Cada nodo puede tener máximo dos caminos (por eso se llama binario)
  • +
  • Ir a la izquierda representa un 0
  • +
  • Ir a la derecha representa un 1
  • +
  • Las letras más frecuentes se colocan más cerca de la raíz
  • +
+

Siguiendo el orden de frecuencia, construimos nuestro árbol:

+
    +
  1. A (la más frecuente): se representa con un solo bit (1)
  2. +
  3. N (segunda más frecuente): se representa con dos bits (01)
  4. +
  5. Espacio: se representa con tres bits (001)
  6. +
  7. M: se representa con cuatro bits (0001)
  8. +
  9. Y así sucesivamente...
  10. +
+

Proceso de codificación

+

Una vez construido el árbol, podemos codificar nuestra frase. Por ejemplo, la palabra "MANZANAS" se codificaría así:

+
    +
  • M: 0001
  • +
  • A: 1
  • +
  • N: 01
  • +
  • Z: 000001
  • +
  • A: 1
  • +
  • N: 01
  • +
  • A: 1
  • +
  • S: 00001
  • +
+

Al codificar toda la frase "MANZANAS AMARILLAS DE ANA", obtenemos una secuencia de 98 bits, en lugar de los 200 bits originales. Esto representa una compresión de más del 50%, lo cual es bastante significativo.

+

¿Por qué los archivos ZIP contienen caracteres extraños?

+

Cuando abrimos un archivo ZIP con un editor de texto, vemos caracteres sin sentido. Esto ocurre porque:

+
    +
  1. Los bits comprimidos se agrupan en bytes (grupos de 8 bits)
  2. +
  3. Cada byte representa un número según la tabla ASCII
  4. +
  5. Muchos de estos números corresponden a caracteres no imprimibles o símbolos extraños
  6. +
+

Por ejemplo, nuestros 98 bits comprimidos se agruparían en aproximadamente 13 bytes. Estos bytes, interpretados como caracteres ASCII, producirían una secuencia aparentemente aleatoria y sin sentido para el ojo humano.

+

Además de los datos comprimidos, un archivo ZIP también contiene información sobre la estructura del árbol utilizado para la compresión. Esta información es esencial para poder descomprimir correctamente el archivo y recuperar los datos originales.

+

Aplicaciones y algoritmos de compresión

+

El ejemplo que hemos analizado es una versión simplificada de la codificación Huffman, uno de los algoritmos de compresión más conocidos. Sin embargo, existen muchos otros algoritmos con diferentes características:

+
    +
  • Algoritmos sin pérdida: Como el que hemos visto, permiten recuperar exactamente la información original (ZIP, GZIP, BZIP2)
  • +
  • Algoritmos con pérdida: Sacrifican cierta información para lograr mayores tasas de compresión (JPEG para imágenes, MP3 para audio)
  • +
+

La elección del algoritmo depende del tipo de datos y de las necesidades específicas:

+
    +
  • Para documentos de texto, código fuente o datos críticos: algoritmos sin pérdida
  • +
  • Para multimedia donde pequeñas pérdidas son aceptables: algoritmos con pérdida
  • +
+

La compresión de datos es fundamental en la era digital, permitiendo almacenar y transmitir grandes cantidades de información de manera eficiente. Desde las imágenes que compartimos en redes sociales hasta los archivos que enviamos por correo electrónico, la compresión está presente en casi todas nuestras interacciones digitales.

+

La próxima vez que comprimas un archivo, recuerda que detrás de ese simple clic hay un fascinante proceso matemático trabajando para optimizar tus datos. ¿Te animas a implementar este algoritmo en tu lenguaje de programación favorito? Comparte tu código en los comentarios y exploremos juntos el mundo de la compresión de datos.

+
+
+ + \ No newline at end of file diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/01-Arquitectura y funcionamiento interno de Blockchain.mp4" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/01-Arquitectura y funcionamiento interno de Blockchain.mp4" new file mode 100644 index 0000000000000000000000000000000000000000..0f9a028c64669283ae1be94ccc7e8f393dea5700 --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/01-Arquitectura y funcionamiento interno de Blockchain.mp4" @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c877255a9b173f261196c8c1ed6e5385978f415a7905bec418490e618ab752d +size 465096382 diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/01-Arquitectura y funcionamiento interno de Blockchain.vtt" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/01-Arquitectura y funcionamiento interno de Blockchain.vtt" new file mode 100644 index 0000000000000000000000000000000000000000..2f0706bda429a3560faa6e47b5fddef82b6381e2 --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/01-Arquitectura y funcionamiento interno de Blockchain.vtt" @@ -0,0 +1,925 @@ +WEBVTT + +00:00:00.080 --> 00:00:03.040 +Tú entiendes el dinero porque si tienes 10 + +00:00:03.040 --> 00:00:04.240 +dólares y si los quieres dar a un + +00:00:04.240 --> 00:00:06.480 +amigo, simplemente se los entregas. Y si tú + +00:00:06.480 --> 00:00:09.120 +le envías ese dinero de tu banco al + +00:00:09.120 --> 00:00:10.840 +banco de la persona, tú das un clic + +00:00:10.840 --> 00:00:12.320 +y ese dinero se resta de tu cuenta + +00:00:12.320 --> 00:00:13.440 +y se suma a la cuenta de él, + +00:00:13.440 --> 00:00:15.475 +¿verdad? Aquí es donde necesito que pares a + +00:00:15.475 --> 00:00:18.355 +pensar un minuto. Cuando tú envías 10 dólares + +00:00:18.355 --> 00:00:20.135 +de tu banco al banco de otra persona, + +00:00:20.355 --> 00:00:23.235 +no hubo una transacción de billetes hechos de + +00:00:23.235 --> 00:00:25.634 +papel de algodón. Lo que pasó fue que + +00:00:25.634 --> 00:00:27.634 +una variable en la base de datos de + +00:00:27.634 --> 00:00:30.090 +un banco restó 10, y una variable en + +00:00:30.090 --> 00:00:32.189 +la base de datos de otro banco sumó + +00:00:32.329 --> 00:00:35.850 +10. Entonces, ¿qué es el dinero? Porque esos + +00:00:35.850 --> 00:00:39.129 +10 dólares no están soportados por oro en + +00:00:39.129 --> 00:00:41.449 +una bóveda ni por ninguna otra cosa. Esos + +00:00:41.449 --> 00:00:43.210 +10 dólares son la resta en una base + +00:00:43.210 --> 00:00:44.730 +de datos y la suma en otra base + +00:00:44.730 --> 00:00:48.704 +de datos, producto de que el gobierno de + +00:00:48.704 --> 00:00:52.945 +un país confía en el sistema bancario a + +00:00:52.945 --> 00:00:55.985 +través de mecanismos de verificación, donde el gobierno + +00:00:55.985 --> 00:00:59.445 +le hace auditoría a estos bancos, incluyendo mecanismos + +00:00:59.504 --> 00:01:03.080 +como los bancos centrales, para mantener un balance + +00:01:03.080 --> 00:01:05.880 +de la cantidad total de dinero que hay. + +00:01:05.880 --> 00:01:08.280 +Y los gobiernos pueden elegir que haya más + +00:01:08.280 --> 00:01:11.260 +dinero al imprimir dinero, y eso crea inflación, + +00:01:11.720 --> 00:01:14.040 +reduciendo el valor de ese dinero. El dinero + +00:01:14.040 --> 00:01:18.015 +es simplemente una historia que contamos, sostenida por + +00:01:18.015 --> 00:01:20.095 +las leyes y mecanismos de control de un + +00:01:20.095 --> 00:01:21.855 +gobierno, no es nada más. Así que si + +00:01:21.855 --> 00:01:25.055 +yo quisiera enviarle dinero a alguien, pero no + +00:01:25.055 --> 00:01:27.375 +tener a un gobierno, a un banco u + +00:01:27.375 --> 00:01:31.370 +otra institución central lidiando con ese dinero, sino + +00:01:31.370 --> 00:01:36.550 +que sea un proceso confiable, mundial, global y + +00:01:36.550 --> 00:01:39.210 +descentralizado, lo que necesitaría es tener la misma + +00:01:39.210 --> 00:01:41.930 +base de datos donde una variable resta 10 + +00:01:41.930 --> 00:01:44.335 +y otra variable suma 10, pero que esa + +00:01:44.335 --> 00:01:46.975 +base de datos fuera de todos y no + +00:01:46.975 --> 00:01:49.475 +de una sola persona. Una base de datos + +00:01:49.534 --> 00:01:52.895 +así necesita ciertas características. La base de datos + +00:01:52.895 --> 00:01:56.975 +tendría que estar copiada en múltiples computadores, tantos + +00:01:56.975 --> 00:01:59.580 +como 1 quiera, y todas las copias tienen + +00:01:59.580 --> 00:02:01.820 +que ser iguales. Es decir, cada vez que + +00:02:01.820 --> 00:02:04.220 +hay una transacción, todas las copias de la + +00:02:04.220 --> 00:02:06.060 +base de datos se tienen que actualizar. Y + +00:02:06.060 --> 00:02:08.060 +como no hay un banco central o un + +00:02:08.060 --> 00:02:11.405 +gobierno que determine la fuente de verdad, Necesito + +00:02:12.025 --> 00:02:16.505 +un mecanismo matemático que me permita confirmar entre + +00:02:16.505 --> 00:02:18.265 +todas las personas que tienen una copia de + +00:02:18.265 --> 00:02:19.865 +la base de datos que la base de + +00:02:19.865 --> 00:02:22.845 +datos es legítima, y esto tiene que ocurrir + +00:02:23.065 --> 00:02:24.925 +cada vez que la base de datos cambie. + +00:02:25.070 --> 00:02:27.390 +¿Cuándo cambia la base de datos? Cuando se + +00:02:27.390 --> 00:02:29.790 +resta de una variable para sumarle a otra + +00:02:29.790 --> 00:02:32.110 +variable, es decir, cuando hay una transacción. Y + +00:02:32.110 --> 00:02:34.350 +el dinero, para que tenga valor, tiene que + +00:02:34.350 --> 00:02:37.330 +ser finito. Hay una cantidad máxima de pesos + +00:02:37.470 --> 00:02:40.095 +colombianos, hay una cantidad máxima de soles peruanos + +00:02:40.095 --> 00:02:42.915 +y hay una cantidad máxima de dólares estadounidenses. + +00:02:43.615 --> 00:02:46.035 +Así que tiene que haber una cantidad finita + +00:02:47.135 --> 00:02:49.955 +máxima de la moneda digital que estamos construyendo. + +00:02:50.095 --> 00:02:53.900 +Esto se puede expresar en ecuaciones matemáticas en + +00:02:53.900 --> 00:02:56.940 +las que todos los miembros de la red, + +00:02:56.940 --> 00:02:59.100 +que son las computadoras que tienen una copia + +00:02:59.100 --> 00:03:01.500 +de la base de datos, de las transacciones, + +00:03:01.500 --> 00:03:05.340 +estén de acuerdo. ¿Y cómo sé cuáles de + +00:03:05.340 --> 00:03:09.055 +esos números son míos y cuáles de esas + +00:03:09.055 --> 00:03:11.215 +transacciones son de otras personas. En el mundo + +00:03:11.215 --> 00:03:13.615 +real, yo tengo una cuenta bancaria y mi + +00:03:13.615 --> 00:03:15.635 +acceso a esa cuenta bancaria es con usuarios, + +00:03:15.695 --> 00:03:19.715 +contraseñas, con mi rostro biométricos, con mis datos + +00:03:19.935 --> 00:03:22.360 +oficiales de gobierno. Pero en el mundo digital + +00:03:22.580 --> 00:03:25.860 +yo necesitaría lo mismo, usuarios, contraseñas, pero sobre + +00:03:25.860 --> 00:03:29.940 +todo llaves de cifrado, una forma criptográfica de + +00:03:29.940 --> 00:03:31.700 +acceder a estos datos. ¿Y cuál es el + +00:03:31.700 --> 00:03:35.674 +mecanismo cuando quiero que otros encripten mensajes que + +00:03:35.674 --> 00:03:37.435 +me envíen a mí y yo pueda encriptar + +00:03:37.435 --> 00:03:39.194 +mensajes que envíen a otros? En la clase + +00:03:39.194 --> 00:03:41.995 +de WhatsApp aprendimos que existen llaves públicas y + +00:03:41.995 --> 00:03:44.635 +llaves privadas. Hagamos un repaso muy rápido. Si + +00:03:44.635 --> 00:03:46.075 +yo tengo 2 personas a las que les + +00:03:46.075 --> 00:03:48.360 +quiero enviar mensajes encriptados sin que los intermediarios + +00:03:48.360 --> 00:03:51.480 +de Internet, como WhatsApp, se enteren del contenido + +00:03:51.480 --> 00:03:53.400 +del mensaje, lo que yo hago es que + +00:03:53.400 --> 00:03:57.160 +tengo 2 llaves. Tengo una llave pública que + +00:03:57.160 --> 00:03:58.680 +se la envío a quien me va a + +00:03:58.680 --> 00:04:02.235 +enviar un mensaje. Esa llave pública cifra el + +00:04:02.235 --> 00:04:05.515 +mensaje. Entonces, a mi amigo yo le digo, + +00:04:05.515 --> 00:04:08.715 +ciframe ese mensaje con mi llave pública. Mi + +00:04:08.715 --> 00:04:10.754 +amigo tiene mi llave pública que le envié + +00:04:10.754 --> 00:04:13.275 +por Internet normal que se puede interceptar, pero + +00:04:13.275 --> 00:04:16.110 +esa llave solamente sirve para cifrar el mensaje. + +00:04:16.110 --> 00:04:18.189 +Con la llave pública, el amigo cifra el + +00:04:18.189 --> 00:04:20.349 +mensaje y me envía el mensaje cifrado a + +00:04:20.349 --> 00:04:22.430 +mí, y yo tengo una llave privada que + +00:04:22.430 --> 00:04:24.270 +yo no envié por Internet, que solo vive + +00:04:24.270 --> 00:04:27.389 +en mi computadora. Con esa llave privada, lo + +00:04:27.389 --> 00:04:30.354 +único que puedo hacer es descifrar los mensajes + +00:04:30.354 --> 00:04:33.074 +que fueron cifrados con la llave pública. Como + +00:04:33.074 --> 00:04:35.155 +nadie la tiene, solo yo puedo ver el + +00:04:35.155 --> 00:04:38.035 +contenido de ese mensaje. Entonces, todo el mundo + +00:04:38.035 --> 00:04:40.435 +puede cifrar mensajes para mí cuando tienen mi + +00:04:40.435 --> 00:04:42.675 +llave pública, pero solo yo tengo mi llave + +00:04:42.675 --> 00:04:44.610 +privada, y esos mensajes cifrados solo yo los + +00:04:44.610 --> 00:04:46.850 +puedo abrir. Si yo quiero enviarle un mensaje + +00:04:46.850 --> 00:04:49.170 +cifrado a mi amigo, él me manda su + +00:04:49.170 --> 00:04:52.050 +llave pública, yo lo cifro, se lo envío + +00:04:52.050 --> 00:04:53.890 +y él solo lo puede descifrar con la + +00:04:53.890 --> 00:04:55.890 +llave privada, que ni yo ni nadie tiene + +00:04:55.890 --> 00:04:58.690 +acceso, solamente él. Pues, en nuestra red puede + +00:04:58.690 --> 00:05:02.465 +funcionar exactamente igual. Acceder a una red de + +00:05:02.465 --> 00:05:06.245 +dinero descentralizado haría que yo tenga que crear + +00:05:06.305 --> 00:05:10.065 +una llave privada y una llave pública. La + +00:05:10.065 --> 00:05:12.145 +llave pública se la doy a todo el + +00:05:12.145 --> 00:05:14.570 +mundo para que me envíen dinero, y la + +00:05:14.570 --> 00:05:16.850 +llave privada es la única forma en la + +00:05:16.850 --> 00:05:19.230 +que yo accedo al dinero que yo tengo. + +00:05:19.370 --> 00:05:22.970 +Además de eso, yo tendría un número especial + +00:05:22.970 --> 00:05:25.610 +en la base de datos de transacciones donde + +00:05:25.610 --> 00:05:28.715 +guardo mis transacciones. Ese número especial se podría + +00:05:28.715 --> 00:05:31.275 +llamar una billetera, sería el equivalente a una + +00:05:31.275 --> 00:05:33.835 +cuenta bancaria, y esa dirección de billetera es + +00:05:33.835 --> 00:05:36.314 +donde están todas mis transacciones. Pero hagamos una + +00:05:36.314 --> 00:05:39.275 +pausa. Entonces, ¿qué es el dinero? El dinero + +00:05:39.275 --> 00:05:41.835 +son las transacciones, esta es la cosa difícil + +00:05:41.835 --> 00:05:45.500 +de entender. Hay una cantidad máxima de numeritos + +00:05:45.500 --> 00:05:48.139 +de dinero, una cantidad máxima de billetes, y + +00:05:48.139 --> 00:05:50.780 +las transacciones que hay entre esos billetes, es + +00:05:50.780 --> 00:05:53.100 +decir, los dueños de esos números, eso es + +00:05:53.100 --> 00:05:55.500 +el dinero. Cuando yo le resto a mi + +00:05:55.500 --> 00:05:57.419 +variable de números y le sumo a otro + +00:05:57.419 --> 00:06:00.294 +lado, estoy moviendo dinero, pero el dinero es + +00:06:00.294 --> 00:06:03.514 +un número finito. Todo esto que estoy explicando + +00:06:04.055 --> 00:06:06.854 +está escrito en un documento, que es el + +00:06:06.854 --> 00:06:11.420 +paper de Blockchain y bitcoin, creado por Satoshi + +00:06:11.560 --> 00:06:14.600 +Nakamoto, que construyó el protocolo que hoy conocemos + +00:06:14.600 --> 00:06:17.800 +como bitcoin. Dato interesante. Al día de hoy + +00:06:17.800 --> 00:06:20.360 +nadie sabe quién es Satoshi Nakamoto. Quizás es + +00:06:20.360 --> 00:06:22.540 +una persona, quizás es un grupo de personas, + +00:06:22.600 --> 00:06:25.320 +quizás fue una inteligencia artificial, no lo sabemos, + +00:06:25.320 --> 00:06:28.115 +pero en el año 2009 una persona anónima + +00:06:28.175 --> 00:06:31.855 +publicó este paper. Entonces, ¿por qué bitcoin vale + +00:06:31.855 --> 00:06:33.855 +dinero? ¿Por qué sabemos que un bitcoin vale + +00:06:33.855 --> 00:06:36.575 +10000 o 100000 dólares o 15000 dólares o + +00:06:36.575 --> 00:06:39.900 +300000 dólares? Porque alguien lo intercambió por dólares. + +00:06:39.979 --> 00:06:42.620 +Esa es la única respuesta. Las cosas valen + +00:06:42.620 --> 00:06:44.540 +porque alguien más les da valor. En el + +00:06:44.540 --> 00:06:46.620 +año 2009 hubo una persona que con un + +00:06:46.620 --> 00:06:48.780 +bitcoin compró una pizza y, a partir de + +00:06:48.780 --> 00:06:50.699 +ahí, han pasado muchos años en los que + +00:06:50.699 --> 00:06:53.979 +diferentes personas han intercambiado las llaves privadas de + +00:06:53.979 --> 00:06:57.965 +estas direcciones por dólares del gobierno, y esto + +00:06:57.965 --> 00:07:00.765 +ha creado un mercado que terminó construyendo el + +00:07:00.765 --> 00:07:04.365 +valor de bitcoin expresado en dinero de gobierno. + +00:07:04.365 --> 00:07:07.085 +¿Pero por qué se llama Blockchain, cadena de + +00:07:07.085 --> 00:07:10.400 +bloques? La base de datos distribuida de las + +00:07:10.400 --> 00:07:15.280 +transacciones realmente son varios pequeños bloques de transacciones, + +00:07:15.280 --> 00:07:19.120 +como si fueran libros de contabilidad digitales. Y + +00:07:19.120 --> 00:07:21.840 +esos libros tienen una cantidad de transacciones máxima + +00:07:21.840 --> 00:07:24.215 +y una cantidad máxima de bitcoin. Los bitcoin, + +00:07:24.215 --> 00:07:26.455 +por cierto, se dividen en fracciones conocidas como + +00:07:26.455 --> 00:07:28.055 +satoshis, pero eso no es lo que importa + +00:07:28.055 --> 00:07:29.895 +en este momento. Lo que importa es que + +00:07:29.895 --> 00:07:34.235 +esos bloques son descubiertos. ¿Cómo así que descubiertos? + +00:07:34.455 --> 00:07:36.695 +Aquí es donde muchas personas se confunden. Yo + +00:07:36.695 --> 00:07:39.449 +me confundía mucho. Parte del problema de las + +00:07:39.449 --> 00:07:42.569 +criptomonedas es que tiene que haber un límite + +00:07:42.569 --> 00:07:45.690 +máximo de la cantidad de dinero que se + +00:07:45.690 --> 00:07:48.569 +puede crear, que se puede emitir. Lo que + +00:07:48.569 --> 00:07:51.835 +se inventó Satoshi Nakamoto es unas ecuaciones matemáticas + +00:07:51.835 --> 00:07:54.955 +que hacen un uso muy intensivo de procesador + +00:07:54.955 --> 00:07:58.335 +y de energía eléctrica para descubrir unos números + +00:07:58.395 --> 00:08:02.875 +cifrados únicos. Esas estructuras matemáticas numéricas únicas es + +00:08:02.875 --> 00:08:06.120 +lo que compone los bloques de bitcoin. Y, + +00:08:06.120 --> 00:08:08.920 +en esencia, un bloque de bitcoin es como + +00:08:08.920 --> 00:08:11.240 +imprimir un montón de billetes de papel de + +00:08:11.240 --> 00:08:15.260 +algodón, es plata. Parte del proceso de minar + +00:08:15.560 --> 00:08:18.920 +bitcoin, de generar estas ecuaciones matemáticas, es insertar + +00:08:18.920 --> 00:08:21.420 +en las diferentes bases de datos las transacciones. + +00:08:22.104 --> 00:08:24.444 +Y el paper determina que hay una cantidad + +00:08:24.664 --> 00:08:27.064 +máxima de transacciones que cada bloque puede tener. + +00:08:27.064 --> 00:08:29.064 +¿Qué pasa cuando un bloque se llenó y + +00:08:29.064 --> 00:08:31.224 +ya descubrí todo el tamaño del bloque? Pues + +00:08:31.224 --> 00:08:34.445 +lo cierro y construyo otro bloque, pero necesito + +00:08:34.584 --> 00:08:37.380 +hacer que cada bloque esté relacionado entre sí. + +00:08:37.539 --> 00:08:39.980 +Ahí entra otro proceso matemático que se conoce + +00:08:39.980 --> 00:08:44.900 +como hashing, HASH. Un hash es una ecuación + +00:08:44.900 --> 00:08:48.900 +matemática que lee el contenido de un archivo + +00:08:48.900 --> 00:08:52.708 +y genera un código único para cada 1 + +00:08:52.708 --> 00:08:54.972 +de esos archivos. Entonces, un archivo que puede + +00:08:54.972 --> 00:08:57.785 +pesar un megabyte o 30 gigabytes o 100 + +00:08:57.785 --> 00:09:01.065 +gigabytes o 300 bytes, no importa, cada 1 + +00:09:01.065 --> 00:09:04.185 +de esos va a tener un código único, + +00:09:04.185 --> 00:09:06.605 +como si fuera una firma digital, una huella. + +00:09:06.850 --> 00:09:09.410 +Esa huella son unos pequeños caracteres que pueden + +00:09:09.410 --> 00:09:13.330 +tener 10 caracteres, 50 caracteres, 30 caracteres, pero + +00:09:13.330 --> 00:09:16.130 +es único, eso es un hash. Los hash + +00:09:16.130 --> 00:09:18.924 +o huellas son súper importantes porque garantizan la + +00:09:18.924 --> 00:09:19.223 +integridad del contenido del archivo. Si el archivo + +00:09:19.223 --> 00:09:22.985 +cambia, el hash cambia. Entonces, fue manipulado, archivo. + +00:09:22.985 --> 00:09:25.785 +Si el archivo cambia, el hash cambia, entonces + +00:09:25.785 --> 00:09:28.505 +fue manipulado. De esa manera, cada vez que + +00:09:28.505 --> 00:09:32.205 +calculas el hash de un bloque, estás verificando, + +00:09:33.065 --> 00:09:36.265 +este bloque es legítimo y su movimiento de + +00:09:36.265 --> 00:09:39.110 +transacciones no cambió. Eso significa que en cada + +00:09:39.110 --> 00:09:41.850 +1 de los bloques de bitcoin quedan registrados + +00:09:41.910 --> 00:09:44.230 +desde el inicio de la red todos los + +00:09:44.230 --> 00:09:48.150 +movimientos del inicio de la historia humana de + +00:09:48.150 --> 00:09:51.835 +bitcoin en adelante de las diferentes transacciones de + +00:09:51.835 --> 00:09:54.315 +dinero que hay, porque nadie puede cambiar los + +00:09:54.315 --> 00:09:56.875 +bloques, porque entonces tendrían que cambiar el hash. + +00:09:56.875 --> 00:09:59.115 +Y la magia es que el hash de + +00:09:59.115 --> 00:10:02.235 +un bloque anterior va en el bloque siguiente, + +00:10:02.235 --> 00:10:05.920 +en su estructura. Entonces, el siguiente bloque va + +00:10:05.920 --> 00:10:08.420 +y busca si el bloque anterior tiene ese + +00:10:08.880 --> 00:10:10.640 +mismo hash, y de esa manera sabe que + +00:10:10.640 --> 00:10:15.040 +están interconectados de una manera legítima. Esa cadena + +00:10:15.040 --> 00:10:18.020 +de bloques conectado por hash es el Blockchain. + +00:10:18.705 --> 00:10:21.925 +Las operaciones matemáticas de la minería es lo + +00:10:22.225 --> 00:10:25.025 +que calcula las transacciones de la red, lo + +00:10:25.025 --> 00:10:27.745 +que distribuye copias de la base de datos + +00:10:27.745 --> 00:10:30.545 +de esa red a otros computadores de minería, + +00:10:30.545 --> 00:10:33.000 +esa es la red de bitcoin, porque tienen + +00:10:33.000 --> 00:10:35.900 +diferentes copias del Blockchain, que son las transacciones, + +00:10:36.520 --> 00:10:38.920 +y lo que descubre nuevos bloques a través + +00:10:38.920 --> 00:10:42.280 +de estos procesamientos matemáticos. Ese procesamiento matemático con + +00:10:42.280 --> 00:10:44.540 +un gasto energético muy fuerte se conoce como + +00:10:44.840 --> 00:10:48.345 +P OW, o Proof of Work. Pero otras + +00:10:48.345 --> 00:10:50.665 +redes, como Ethereum, que también es un tipo + +00:10:50.665 --> 00:10:54.745 +de criptomoneda, usan otro sistema llamado Proof of + +00:10:54.745 --> 00:10:57.465 +Stake. Proof of Stake es muy interesante porque + +00:10:57.465 --> 00:10:59.945 +usa mucha menos electricidad. En vez de hacer + +00:10:59.945 --> 00:11:02.839 +cálculos matemáticos muy complejos, lo que hace es + +00:11:02.839 --> 00:11:06.600 +que genera una apuesta. Varios miembros de la + +00:11:06.600 --> 00:11:10.220 +red de Ethereum apuestan algunas de sus monedas + +00:11:10.360 --> 00:11:12.839 +y, de manera aleatoria, 1 de ellos se + +00:11:12.839 --> 00:11:16.185 +gana el derecho a construir el próximo bloque, + +00:11:16.185 --> 00:11:18.765 +lo que gasta mucho menos energía. El resto + +00:11:19.225 --> 00:11:21.485 +pierden las monedas que apostaron y se las + +00:11:21.865 --> 00:11:24.925 +queda el que le quedó la la generación + +00:11:24.985 --> 00:11:28.220 +del nuevo bloque. Es distinto, es una filosofía + +00:11:28.680 --> 00:11:30.360 +diferente, y la verdad que la más popular + +00:11:30.360 --> 00:11:32.040 +el día de hoy es la más segura, + +00:11:32.040 --> 00:11:33.240 +que es la que genera la mayor cantidad + +00:11:33.240 --> 00:11:35.320 +de gasto energético, que es proof of work, + +00:11:35.320 --> 00:11:37.800 +como la que tiene Blockchain de bitcoin. Lo + +00:11:37.800 --> 00:11:41.100 +más importante es que todos estos mecanismos criptográficos + +00:11:41.805 --> 00:11:44.385 +hacen que toda la red se pueda verificar + +00:11:44.845 --> 00:11:48.465 +entre sí, sin necesidad de tener un mecanismo + +00:11:48.605 --> 00:11:53.345 +central de criptografía o llaves, sino simplemente una + +00:11:53.965 --> 00:11:56.225 +distribución del trabajo de CPU o de GPUs + +00:11:56.720 --> 00:11:59.920 +y una verificación de la integridad de los + +00:11:59.920 --> 00:12:03.200 +datos. De esta manera, tenemos un algoritmo que + +00:12:03.200 --> 00:12:05.520 +hace el trabajo que haría un banco central + +00:12:05.520 --> 00:12:07.700 +o los sistemas de confianza de los bancos + +00:12:07.760 --> 00:12:10.042 +regulados. Parte de la razón por la que + +00:12:10.042 --> 00:12:12.815 +bitcoin es tan poderoso es porque, para hackearlo, + +00:12:13.115 --> 00:12:15.514 +necesitarías tener más poder de cómputo que toda + +00:12:15.514 --> 00:12:18.555 +la red de minería. Necesitarías tener un 51 + +00:12:18.555 --> 00:12:20.634 +por 100 de más poder de cómputo que + +00:12:20.634 --> 00:12:23.759 +la red de minería para recalcular los bloques + +00:12:23.759 --> 00:12:25.680 +y tener un voto más fuerte en el + +00:12:25.680 --> 00:12:28.319 +consenso que distribuye la versión actualizada de las + +00:12:28.319 --> 00:12:31.940 +transacciones. Esto ha pasado en criptomonedas más pequeñas + +00:12:32.240 --> 00:12:35.120 +que bitcoin, pero con bitcoin, ethereum, Solana, las + +00:12:35.120 --> 00:12:38.488 +monedas grandes es prácticamente imposible. Parte del problema + +00:12:38.488 --> 00:12:41.305 +de la inflación, bitcoin lo controla haciendo que + +00:12:41.305 --> 00:12:45.645 +en la ecuación matemática de bitcoin como criptomoneda + +00:12:46.505 --> 00:12:48.985 +exista un límite. Tiene un límite máximo de + +00:12:48.985 --> 00:12:51.785 +21000000 de bitcoin al que, a la fecha + +00:12:51.785 --> 00:12:53.290 +de grabación de este curso, todavía no hemos + +00:12:53.290 --> 00:12:56.090 +llegado. Otro de los problemas para no poder + +00:12:56.090 --> 00:12:58.250 +hackear bitcoin es la cantidad de energía que + +00:12:58.250 --> 00:13:00.570 +necesitarías. Para que se hagan una idea, al + +00:13:00.570 --> 00:13:02.970 +día de hoy, la red de bitcoin usa + +00:13:02.970 --> 00:13:06.730 +130 terawatts por hora de energía. Esto es + +00:13:06.730 --> 00:13:08.750 +el equivalente a la energía entera de Suecia. + +00:13:09.845 --> 00:13:13.524 +Algunos protocolos de criptomonedas, aparte del sistema de + +00:13:13.524 --> 00:13:17.285 +transacciones, los wallets, las llaves privadas, agregan la + +00:13:17.285 --> 00:13:20.665 +capacidad de ejecutar órdenes de código de programación + +00:13:20.805 --> 00:13:24.520 +bajo ciertas condiciones, como por ejemplo, si estos + +00:13:24.520 --> 00:13:27.080 +servidores tienen estos datos o si estos usuarios + +00:13:27.080 --> 00:13:30.120 +colocan estas llaves en una configuración particular, entonces + +00:13:30.120 --> 00:13:32.120 +dispara estas transacciones de esta manera o de + +00:13:32.120 --> 00:13:35.420 +esta otra manera. Eso significa que contratos legales + +00:13:35.815 --> 00:13:38.295 +u otro tipo de mecanismos de compañía se + +00:13:38.295 --> 00:13:41.095 +pueden expresar en código y distribuir de manera + +00:13:41.095 --> 00:13:44.135 +descentralizada. Esto es lo que permiten redes como + +00:13:44.135 --> 00:13:46.135 +Ethereum o Solana, y es lo que ha + +00:13:46.135 --> 00:13:47.910 +permitido la creación de lo que se llama + +00:13:47.910 --> 00:13:51.670 +tokenización, que es convertir ciertos activos del mundo + +00:13:51.670 --> 00:13:55.029 +real en expresiones de criptomonedas. Los NFTs, por + +00:13:55.029 --> 00:13:57.510 +ejemplo, son una expresión de este estilo. Aún + +00:13:57.510 --> 00:13:59.910 +ninguno ha triunfado en el mundo real, pero + +00:13:59.910 --> 00:14:02.550 +es muy prometedor y probablemente inevitable para el + +00:14:02.550 --> 00:14:05.225 +futuro. Platzi tiene muchos cursos técnicos que te + +00:14:05.225 --> 00:14:07.865 +enseñan desde mucho más básico hasta mucho más + +00:14:07.865 --> 00:14:10.505 +complejo cómo programar tus propias redes, cómo ser + +00:14:10.505 --> 00:14:13.385 +minero, cómo tener una granja de bitcoin en + +00:14:13.385 --> 00:14:15.704 +tu casa, cómo hacer Ethereum, Solana, lo que + +00:14:15.704 --> 00:14:17.930 +quieras. Solamente ve al buscador de Platzi y + +00:14:17.930 --> 00:14:21.290 +escribe Ethereum, Blockchain o bitcoin, o aquí abajo, + +00:14:21.290 --> 00:14:22.570 +en los recursos de la clase, te voy + +00:14:22.570 --> 00:14:24.649 +a colocar varios enlaces. Este es un mundo + +00:14:24.649 --> 00:14:27.290 +muy grande que fluctúa mucho con el precio, + +00:14:27.290 --> 00:14:29.950 +pero que desde una perspectiva tecnológica es fascinante. diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/01-Lecturas recomendadas.txt" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/01-Lecturas recomendadas.txt" new file mode 100644 index 0000000000000000000000000000000000000000..36852a5fb7d886b2ca66819be6eaa205b75e1e36 --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/01-Lecturas recomendadas.txt" @@ -0,0 +1,2 @@ +https://platzi.com/home/ruta/ethereum-blockchain-developer/ +https://platzi.com/home/ruta/bitcoin-developer/ diff --git "a/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/01-Resumen.html" "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/01-Resumen.html" new file mode 100644 index 0000000000000000000000000000000000000000..02ffd305bbb0718d3a4750e291d56b6e02e8f3af --- /dev/null +++ "b/subir/fixed/Curso de Fundamentos de Ingenier\303\255a de Software/05-Introducci\303\263n a Blockchain e Inteligencia Artificial/01-Resumen.html" @@ -0,0 +1,146 @@ + + + + + + + Arquitectura y funcionamiento interno de Blockchain + + + +
+
+

Resumen

El mundo de las criptomonedas y la tecnología blockchain representa una revolución en nuestra comprensión del dinero y las transacciones financieras. Más allá de ser simplemente una moda tecnológica, estas innovaciones están redefiniendo conceptos fundamentales sobre el valor, la confianza y la descentralización. En este artículo, exploraremos los fundamentos de esta fascinante tecnología, desde sus principios básicos hasta sus aplicaciones más prometedoras, desentrañando los misterios que rodean a bitcoin y otras criptomonedas.

+

¿Qué es realmente el dinero en la era digital?

+

El dinero, tal como lo conocemos hoy, es principalmente una construcción social basada en la confianza. Cuando transferimos 10 dólares de nuestra cuenta bancaria a la de un amigo, no hay billetes físicos moviéndose de un lugar a otro. Lo que ocurre es simplemente un cambio en bases de datos: una variable resta 10 en un banco y otra suma 10 en otro.

+

El dinero moderno no está respaldado por oro ni por bienes tangibles. Es una historia que contamos colectivamente, sostenida por leyes y mecanismos de control gubernamentales. Los bancos centrales y las instituciones financieras actúan como intermediarios de confianza, verificando y validando estas transacciones.

+

Esta realidad plantea una pregunta fascinante: ¿podríamos crear un sistema de transferencia de valor que funcione sin intermediarios centralizados? Aquí es donde entra blockchain, una tecnología que permite:

+
    +
  • Mantener una base de datos distribuida en múltiples computadoras.
  • +
  • Garantizar que todas las copias sean idénticas.
  • +
  • Verificar matemáticamente la legitimidad de cada transacción.
  • +
  • Operar sin necesidad de una autoridad central.
  • +
+

El nacimiento de bitcoin y la revolución blockchain

+

En 2009, una entidad anónima conocida como Satoshi Nakamoto publicó un documento técnico que sentó las bases de bitcoin. Hasta el día de hoy, la verdadera identidad de Nakamoto sigue siendo un misterio: podría ser una persona, un grupo o incluso una inteligencia artificial.

+

El valor de bitcoin no viene determinado por ningún gobierno o institución. Su precio se establece únicamente por lo que las personas están dispuestas a pagar por él. El primer uso documentado de bitcoin como medio de intercambio fue la compra de una pizza, estableciendo un precedente que eventualmente evolucionaría hacia el mercado de criptomonedas que conocemos hoy.

+

La estructura de blockchain, o cadena de bloques, funciona como una serie de libros contables digitales. Cada bloque contiene:

+
    +
  1. Un conjunto limitado de transacciones.
  2. +
  3. Una referencia criptográfica (hash) al bloque anterior.
  4. +
  5. Una solución a un complejo problema matemático.
  6. +
+

Esta estructura garantiza que la cadena sea inmutable: si alguien intentara modificar una transacción pasada, tendría que recalcular todos los bloques subsiguientes, lo que requeriría un poder computacional prácticamente imposible de conseguir.

+

¿Cómo funcionan las transacciones en una red blockchain?

+

Las transacciones en una red blockchain utilizan criptografía de clave pública y privada, similar a la que emplea WhatsApp para proteger nuestras comunicaciones.

+

El sistema de claves y billeteras digitales

+

Cuando participamos en una red blockchain, generamos dos elementos esenciales:

+
    +
  • Una clave pública: Funciona como nuestra dirección o número de cuenta. La podemos compartir con cualquiera que quiera enviarnos criptomonedas.
  • +
  • Una clave privada: Es nuestro acceso exclusivo a los fondos. Nunca debe compartirse, pues quien la posea puede disponer de nuestros activos digitales.
  • +
+

Este sistema criptográfico permite que cualquiera pueda verificar que una transacción fue autorizada por el propietario legítimo de los fondos, sin necesidad de revelar la clave privada.

+

La billetera digital es simplemente una dirección en la base de datos distribuida donde se registran todas nuestras transacciones. A diferencia de una cuenta bancaria tradicional, no "contiene" dinero en el sentido convencional, sino que registra nuestro derecho sobre cierta cantidad de la criptomoneda.

+

Minería y consenso: manteniendo la integridad de la red

+

Para que una red descentralizada funcione, necesita un mecanismo que determine qué versión de la base de datos es la correcta. En bitcoin, este mecanismo se conoce como "minería" y utiliza el protocolo de Prueba de Trabajo (Proof of Work o PoW).

+

La minería implica:

+
    +
  • Resolver complejos problemas matemáticos que requieren gran poder computacional.
  • +
  • Verificar la legitimidad de las transacciones pendientes.
  • +
  • Agrupar estas transacciones en un nuevo bloque.
  • +
  • Añadir este bloque a la cadena existente.
  • +
+

Este proceso consume enormes cantidades de energía. De hecho, la red bitcoin utiliza aproximadamente 130 teravatios por hora, equivalente al consumo energético de toda Suecia.

+

Otras criptomonedas, como Ethereum, han adoptado sistemas alternativos como la Prueba de Participación (Proof of Stake o PoS), donde los validadores son seleccionados para crear nuevos bloques en función de la cantidad de criptomonedas que están dispuestos a "apostar" como garantía, reduciendo significativamente el consumo energético.

+

Más allá de las transacciones: contratos inteligentes y tokenización

+

Las redes blockchain modernas han evolucionado más allá de simples sistemas de transferencia de valor. Plataformas como Ethereum y Solana permiten la ejecución de "contratos inteligentes" – programas que se ejecutan automáticamente cuando se cumplen ciertas condiciones predefinidas.

+

Estos contratos inteligentes han abierto la puerta a:

+
    +
  • Tokenización de activos: Representación digital de activos del mundo real en la blockchain.
  • +
  • NFTs (Tokens No Fungibles): Certificados digitales únicos de propiedad.
  • +
  • DeFi (Finanzas Descentralizadas): Servicios financieros sin intermediarios tradicionales.
  • +
+

Aunque muchas de estas aplicaciones aún están en etapas tempranas de desarrollo y adopción, representan un potencial transformador para numerosos sectores económicos.

+

La tecnología blockchain está redefiniendo nuestra comprensión del dinero y las transacciones de valor. Ya sea que te interese como inversión, como innovación tecnológica o como fenómeno socioeconómico, comprender sus fundamentos es esencial para navegar el futuro financiero que se está construyendo ante nuestros ojos. ¿Qué aplicaciones de blockchain te parecen más prometedoras? ¿Crees que eventualmente reemplazará a los sistemas financieros tradicionales? Comparte tus ideas en los comentarios.

+
+
+ + \ No newline at end of file