├── .obsidian ├── appearance.json ├── community-plugins.json ├── themes │ └── Obsidianite │ │ └── manifest.json ├── app.json ├── plugins │ └── obsidian-excalidraw-plugin │ │ └── manifest.json ├── graph.json └── core-plugins.json ├── Programación ├── Sistemas Operativos │ └── Linux │ │ ├── Otros │ │ ├── Nextcloud │ │ │ ├── Imagen1.png │ │ │ ├── Imagen2.png │ │ │ └── Imagen3.png │ │ ├── Cliente NO-IP │ │ │ ├── Imagen1.png │ │ │ └── Cliente NO-IP.md │ │ ├── Red virtual │ │ │ ├── Imagen1.png │ │ │ ├── Imagen2.png │ │ │ ├── Imagen3.png │ │ │ ├── Red Virtual.md │ │ │ └── Red NAT.md │ │ └── Router Linux │ │ │ ├── Imagen1.png │ │ │ ├── Imagen2.png │ │ │ ├── Imagen3.png │ │ │ └── Router Linux.md │ │ ├── Configuraciónes │ │ └── IP Estática │ │ │ └── IP Estática.md │ │ ├── Paquetes │ │ └── PHP Instalación │ │ │ └── PHP Instalación.md │ │ └── Fundamentos │ │ ├── 3. El uso de Linux.md │ │ ├── 1. Introducción a Linux.md │ │ └── 2. Aplicaciones de código abierto y Licencias.md ├── DevOps │ ├── Administración de Servidores Linux │ │ ├── Servidor DNS │ │ │ ├── Imagen1.png │ │ │ ├── Imagen2.png │ │ │ ├── Imagen3.png │ │ │ ├── Imagen4.png │ │ │ ├── Imagen5.png │ │ │ ├── Imagen6.png │ │ │ └── Servidor DNS.md │ │ ├── Servidor FTP │ │ │ ├── Imagen1.png │ │ │ └── Servidor FTP.md │ │ ├── Servidor VPN │ │ │ ├── Imagen1.png │ │ │ ├── Imagen2.png │ │ │ ├── Imagen3.png │ │ │ ├── Imagen4.png │ │ │ ├── Imagen5.png │ │ │ └── Servidor VPN PPTPD.md │ │ ├── Servidor Web │ │ │ └── Imagen1.png │ │ ├── Servidor MySQL │ │ │ ├── Imagen1.png │ │ │ └── Servidor MySQL.md │ │ ├── Servidor Proxy │ │ │ ├── Imagen1.png │ │ │ ├── Imagen2.png │ │ │ └── Servidor Proxy.md │ │ ├── Servidor Samba │ │ │ ├── Imagen1.png │ │ │ ├── Imagen2.png │ │ │ └── Servidor Samba.md │ │ └── Servidor DHCP │ │ │ └── Servidor DHCP.md │ └── Bash Scripting │ │ ├── 5. Funciones.md │ │ ├── 4. Operadores.md │ │ ├── 6. Bucles.md │ │ ├── 3. Entrada y Salida de la Información.md │ │ ├── 1. Fundamentos.md │ │ └── 2. Lectura y Escritura de las Variables.md ├── C Sharp │ ├── Cuestionario.md │ ├── Cuestionario 2.md │ ├── 6. Concatenación.md │ ├── 2. Diferencia entre Write y WriteLine.md │ ├── 10. Constantes.md │ ├── 1. Fundamentos.md │ ├── 4. Tipos de Datos.md │ ├── 9. Toma de Decisiones.md │ ├── 8. Métodos de Escritura.md │ └── 7. Tipos de Conversión.md ├── Bash Scripting │ ├── 1. Fundamentos.md │ ├── 2. Hola Mundo.md │ ├── 5. Variables del Sistema y Entorno.md │ ├── 4. Variables y Tipos de Datos.md │ ├── 3. Entrada y Salida de Información.md │ ├── 7. Estructuras de Control.md │ ├── 9. Funciones.md │ ├── 11. Expresiones Regulares.md │ ├── 8. Bucles.md │ ├── 12. Manejo de Errores.md │ ├── 10. Manejo de Archivos y Directorios.md │ └── 6. Operadores.md ├── Kotlin │ ├── 2. Variables y Constantes.md │ ├── 1. Fundamentos.md │ ├── 5. Colecciones.md │ ├── 11. Programación Asíncrona.md │ └── 3. Tipos de Datos y Conversión de Tipos.md ├── Desarrollo Web │ └── Front-End │ │ └── Javascript │ │ ├── 14. Objeto JSON.md │ │ ├── 3. Objetos Integrados.md │ │ ├── 18. Try Cach.md │ │ ├── 4. Tipos de Datos.md │ │ ├── Librerías │ │ └── jQuery │ │ │ └── 2. Selectores de Id y Clase.md │ │ ├── 15. Almacenamiento Web.md │ │ ├── 16. Fetch.md │ │ ├── 19. Objeto Date.md │ │ ├── 7. Bucles.md │ │ └── 10. Plantillas e Interpolación de Variables.md ├── Python │ ├── 9. Condicionales.md │ └── 1. Fundamentos.md └── Elixir │ ├── 2. Pattern Matching.md │ └── 1. Fundamentos.md ├── LICENSE ├── Ciencias de la Computación ├── Base de Datos │ ├── SQL │ │ └── MySQL │ │ │ ├── 2. MySQL Workbench.md │ │ │ ├── 1. Fundamentos.md │ │ │ ├── 4. Lenguaje de Manipulación de Datos (DML).md │ │ │ └── 3. Lenguaje de Definición de Datos (DDL).md │ ├── Fundamentos.md │ └── NoSQL │ │ └── Redis │ │ └── 1. Fundamentos.md ├── Inteligencia Artificial │ ├── Fundamentos │ │ ├── Procesamiento │ │ │ ├── 4. La IA clasifica las imágenes.md │ │ │ ├── 3. NLP convierte señales en significado.md │ │ │ └── 2. La IA realiza el procesamiento del lenguaje natural.md │ │ ├── Introducción │ │ │ ├── 4. El aprendizaje automático.md │ │ │ ├── 3. Problema de los datos no estructurados.md │ │ │ └── 1. Que es la IA.md │ │ ├── Aprendizaje Automático y Profundo │ │ │ └── 5. Tendencias Futuras de la IA.md │ │ └── Ética de la IA │ │ │ └── 3. Que es la Solidez.md │ ├── IA Generativa │ │ ├── 1. Qué es la IA Generativa.md │ │ ├── 5. Análisis de Archivos.md │ │ ├── 3. El Futuro de la IA.md │ │ └── 6. Ingeniería de Prompt.md │ └── Ingeniería de Prompts │ │ ├── 3. Generación de Código con LLMs y Hugging Face.md │ │ ├── 2. LLM Multimodales.md │ │ └── 4. Fine-Tuning y RAG para LLMs.md ├── Big Data │ └── Apache Spark I │ │ ├── 1. Fundamentos.md │ │ ├── 4. Instalación y Configuración de Spark.md │ │ ├── 2. Spark Core y Módulos.md │ │ ├── 5. Lenguajes de Programación en Spark.md │ │ ├── 3. Conjunto de Datos Distribuidos Resilientes (RDD).md │ │ ├── 6. Uso de Shells Interactivos.md │ │ ├── 7. RDD y DataFrames.md │ │ └── 8. Operaciones sobre RDD.md ├── Data Engineering │ └── Databricks │ │ ├── 1. The Databricks Story.md │ │ ├── 4. Databricks Security and Governance.md │ │ ├── 2. Data Lakehouses and Data Intelligence.md │ │ ├── 5. Databricks Products and Features.md │ │ └── 3. Databricks Architecture.md └── Computación Cuántica │ ├── 2. El Laboratorio de Superposición.md │ └── 1. El Salón de las Maravillas.md └── README.md /.obsidian/appearance.json: -------------------------------------------------------------------------------- 1 | { 2 | "cssTheme": "Obsidianite" 3 | } -------------------------------------------------------------------------------- /.obsidian/community-plugins.json: -------------------------------------------------------------------------------- 1 | [ 2 | "obsidian-excalidraw-plugin" 3 | ] -------------------------------------------------------------------------------- /Programación/Sistemas Operativos/Linux/Otros/Nextcloud/Imagen1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Devsebastian44/Programacion/HEAD/Programación/Sistemas Operativos/Linux/Otros/Nextcloud/Imagen1.png -------------------------------------------------------------------------------- /Programación/Sistemas Operativos/Linux/Otros/Nextcloud/Imagen2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Devsebastian44/Programacion/HEAD/Programación/Sistemas Operativos/Linux/Otros/Nextcloud/Imagen2.png -------------------------------------------------------------------------------- /Programación/Sistemas Operativos/Linux/Otros/Nextcloud/Imagen3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Devsebastian44/Programacion/HEAD/Programación/Sistemas Operativos/Linux/Otros/Nextcloud/Imagen3.png -------------------------------------------------------------------------------- /Programación/Sistemas Operativos/Linux/Otros/Cliente NO-IP/Imagen1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Devsebastian44/Programacion/HEAD/Programación/Sistemas Operativos/Linux/Otros/Cliente NO-IP/Imagen1.png -------------------------------------------------------------------------------- /Programación/Sistemas Operativos/Linux/Otros/Red virtual/Imagen1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Devsebastian44/Programacion/HEAD/Programación/Sistemas Operativos/Linux/Otros/Red virtual/Imagen1.png -------------------------------------------------------------------------------- /Programación/Sistemas Operativos/Linux/Otros/Red virtual/Imagen2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Devsebastian44/Programacion/HEAD/Programación/Sistemas Operativos/Linux/Otros/Red virtual/Imagen2.png -------------------------------------------------------------------------------- /Programación/Sistemas Operativos/Linux/Otros/Red virtual/Imagen3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Devsebastian44/Programacion/HEAD/Programación/Sistemas Operativos/Linux/Otros/Red virtual/Imagen3.png -------------------------------------------------------------------------------- /Programación/Sistemas Operativos/Linux/Otros/Router Linux/Imagen1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Devsebastian44/Programacion/HEAD/Programación/Sistemas Operativos/Linux/Otros/Router Linux/Imagen1.png -------------------------------------------------------------------------------- /Programación/Sistemas Operativos/Linux/Otros/Router Linux/Imagen2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Devsebastian44/Programacion/HEAD/Programación/Sistemas Operativos/Linux/Otros/Router Linux/Imagen2.png -------------------------------------------------------------------------------- /Programación/Sistemas Operativos/Linux/Otros/Router Linux/Imagen3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Devsebastian44/Programacion/HEAD/Programación/Sistemas Operativos/Linux/Otros/Router Linux/Imagen3.png -------------------------------------------------------------------------------- /.obsidian/themes/Obsidianite/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Obsidianite", 3 | "version": "2.0.2", 4 | "minAppVersion": "1.1.0", 5 | "author": "@bennyxguo", 6 | "authorUrl": "https://github.com/bennyxguo" 7 | } 8 | -------------------------------------------------------------------------------- /Programación/DevOps/Administración de Servidores Linux/Servidor DNS/Imagen1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Devsebastian44/Programacion/HEAD/Programación/DevOps/Administración de Servidores Linux/Servidor DNS/Imagen1.png -------------------------------------------------------------------------------- /Programación/DevOps/Administración de Servidores Linux/Servidor DNS/Imagen2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Devsebastian44/Programacion/HEAD/Programación/DevOps/Administración de Servidores Linux/Servidor DNS/Imagen2.png -------------------------------------------------------------------------------- /Programación/DevOps/Administración de Servidores Linux/Servidor DNS/Imagen3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Devsebastian44/Programacion/HEAD/Programación/DevOps/Administración de Servidores Linux/Servidor DNS/Imagen3.png -------------------------------------------------------------------------------- /Programación/DevOps/Administración de Servidores Linux/Servidor DNS/Imagen4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Devsebastian44/Programacion/HEAD/Programación/DevOps/Administración de Servidores Linux/Servidor DNS/Imagen4.png -------------------------------------------------------------------------------- /Programación/DevOps/Administración de Servidores Linux/Servidor DNS/Imagen5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Devsebastian44/Programacion/HEAD/Programación/DevOps/Administración de Servidores Linux/Servidor DNS/Imagen5.png -------------------------------------------------------------------------------- /Programación/DevOps/Administración de Servidores Linux/Servidor DNS/Imagen6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Devsebastian44/Programacion/HEAD/Programación/DevOps/Administración de Servidores Linux/Servidor DNS/Imagen6.png -------------------------------------------------------------------------------- /Programación/DevOps/Administración de Servidores Linux/Servidor FTP/Imagen1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Devsebastian44/Programacion/HEAD/Programación/DevOps/Administración de Servidores Linux/Servidor FTP/Imagen1.png -------------------------------------------------------------------------------- /Programación/DevOps/Administración de Servidores Linux/Servidor VPN/Imagen1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Devsebastian44/Programacion/HEAD/Programación/DevOps/Administración de Servidores Linux/Servidor VPN/Imagen1.png -------------------------------------------------------------------------------- /Programación/DevOps/Administración de Servidores Linux/Servidor VPN/Imagen2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Devsebastian44/Programacion/HEAD/Programación/DevOps/Administración de Servidores Linux/Servidor VPN/Imagen2.png -------------------------------------------------------------------------------- /Programación/DevOps/Administración de Servidores Linux/Servidor VPN/Imagen3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Devsebastian44/Programacion/HEAD/Programación/DevOps/Administración de Servidores Linux/Servidor VPN/Imagen3.png -------------------------------------------------------------------------------- /Programación/DevOps/Administración de Servidores Linux/Servidor VPN/Imagen4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Devsebastian44/Programacion/HEAD/Programación/DevOps/Administración de Servidores Linux/Servidor VPN/Imagen4.png -------------------------------------------------------------------------------- /Programación/DevOps/Administración de Servidores Linux/Servidor VPN/Imagen5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Devsebastian44/Programacion/HEAD/Programación/DevOps/Administración de Servidores Linux/Servidor VPN/Imagen5.png -------------------------------------------------------------------------------- /Programación/DevOps/Administración de Servidores Linux/Servidor Web/Imagen1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Devsebastian44/Programacion/HEAD/Programación/DevOps/Administración de Servidores Linux/Servidor Web/Imagen1.png -------------------------------------------------------------------------------- /Programación/DevOps/Administración de Servidores Linux/Servidor MySQL/Imagen1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Devsebastian44/Programacion/HEAD/Programación/DevOps/Administración de Servidores Linux/Servidor MySQL/Imagen1.png -------------------------------------------------------------------------------- /Programación/DevOps/Administración de Servidores Linux/Servidor Proxy/Imagen1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Devsebastian44/Programacion/HEAD/Programación/DevOps/Administración de Servidores Linux/Servidor Proxy/Imagen1.png -------------------------------------------------------------------------------- /Programación/DevOps/Administración de Servidores Linux/Servidor Proxy/Imagen2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Devsebastian44/Programacion/HEAD/Programación/DevOps/Administración de Servidores Linux/Servidor Proxy/Imagen2.png -------------------------------------------------------------------------------- /Programación/DevOps/Administración de Servidores Linux/Servidor Samba/Imagen1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Devsebastian44/Programacion/HEAD/Programación/DevOps/Administración de Servidores Linux/Servidor Samba/Imagen1.png -------------------------------------------------------------------------------- /Programación/DevOps/Administración de Servidores Linux/Servidor Samba/Imagen2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Devsebastian44/Programacion/HEAD/Programación/DevOps/Administración de Servidores Linux/Servidor Samba/Imagen2.png -------------------------------------------------------------------------------- /.obsidian/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "pdfExportSettings": { 3 | "includeName": true, 4 | "pageSize": "A4", 5 | "landscape": false, 6 | "margin": "0", 7 | "downscalePercent": 100 8 | }, 9 | "promptDelete": false, 10 | "alwaysUpdateLinks": true 11 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. 2 | 3 | To view a copy of this license, visit: 4 | https://creativecommons.org/licenses/by-nc-sa/4.0/ 5 | 6 | Copyright 2025 Sebastián Zhunaula (Devsebastian44) 7 | -------------------------------------------------------------------------------- /Programación/DevOps/Bash Scripting/5. Funciones.md: -------------------------------------------------------------------------------- 1 | Funciones 2 | 3 | En Bash, una función es un conjunto de comandos agrupados bajo un nombre que se puede llamar y ejecutar en cualquier parte de un script o en la línea de comandos. 4 | 5 | ```bash 6 | #!/bin/bash 7 | 8 | # Definir una función 9 | mi_funcion() { 10 | echo "¡Hola desde la función!" 11 | } 12 | 13 | # Llamar a la función 14 | mi_funcion 15 | ``` 16 | -------------------------------------------------------------------------------- /.obsidian/plugins/obsidian-excalidraw-plugin/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "obsidian-excalidraw-plugin", 3 | "name": "Excalidraw", 4 | "version": "2.12.4", 5 | "minAppVersion": "1.1.6", 6 | "description": "An Obsidian plugin to edit and view Excalidraw drawings", 7 | "author": "Zsolt Viczian", 8 | "authorUrl": "https://excalidraw-obsidian.online", 9 | "fundingUrl": "https://ko-fi.com/zsolt", 10 | "helpUrl": "https://github.com/zsviczian/obsidian-excalidraw-plugin#readme", 11 | "isDesktopOnly": false 12 | } 13 | -------------------------------------------------------------------------------- /Programación/C Sharp/Cuestionario.md: -------------------------------------------------------------------------------- 1 | ## Son dos componentes principales de las implementaciones de .NET 2 | 3 | - Son dos componentes principales de las implementaciones de .NET 4 | 5 | ## Son lenguajes que pertenecen a .NET 6 | 7 | - C#, F# y Visual Basic 8 | 9 | ## Son dos IDE's para desarrollar y compilar aplicaciones en .NET 10 | 11 | - Visual Studio y Visual Studio Code 12 | 13 | ## Para que sirve `;` 14 | 15 | - Sirve para finalizar sentencias 16 | 17 | ### TIP: Mostrar mensajes muy grandes en el editor 18 | Ir a opciones > Editor de Texto > Todos los lenguajes > Ajuste de línea -------------------------------------------------------------------------------- /Programación/Sistemas Operativos/Linux/Configuraciónes/IP Estática/IP Estática.md: -------------------------------------------------------------------------------- 1 | Editar el siguiente archivo 2 | 3 | ```bash 4 | sudo nano /etc/netplan/00-installer-config.yaml 5 | ``` 6 | 7 | Copiar el siguiente código: 8 | 9 | ```bash 10 | network: 11 |   version: 2 12 |   renderer: networkd 13 |   ethernets: 14 |     enp0s3: 15 |       addresses: [192.168.1.16/24] 16 |       gateway4: 192.168.1.1 17 |       nameservers: 18 |         addresses: [8.8.8.8, 8.8.4.4] 19 | ``` 20 | 21 | Luego aplicamos cambios 22 | 23 | ```bash 24 | sudo netplan apply 25 | 26 | sudo netplan generate 27 | ``` 28 | 29 | 30 | -------------------------------------------------------------------------------- /.obsidian/graph.json: -------------------------------------------------------------------------------- 1 | { 2 | "collapse-filter": true, 3 | "search": "", 4 | "showTags": false, 5 | "showAttachments": false, 6 | "hideUnresolved": false, 7 | "showOrphans": true, 8 | "collapse-color-groups": false, 9 | "colorGroups": [], 10 | "collapse-display": true, 11 | "showArrow": false, 12 | "textFadeMultiplier": 0, 13 | "nodeSizeMultiplier": 1, 14 | "lineSizeMultiplier": 1, 15 | "collapse-forces": true, 16 | "centerStrength": 0.518713248970312, 17 | "repelStrength": 10, 18 | "linkStrength": 1, 19 | "linkDistance": 250, 20 | "scale": 1.4769860980686706, 21 | "close": true 22 | } -------------------------------------------------------------------------------- /Programación/DevOps/Bash Scripting/4. Operadores.md: -------------------------------------------------------------------------------- 1 | Existen operadores específicos para trabajar con cadenas y archivos. 2 | 3 | **Operadores de cadenas** 4 | 5 | ```bash 6 | # Longitud de una cadena 7 | cadena="Bash" 8 | echo "La longitud de la cadena es ${#cadena}" 9 | 10 | # Concatenar cadenas 11 | cadena1="Hola" 12 | cadena2="Mundo" 13 | concatenacion="${cadena1}, ${cadena2}" 14 | echo $concatenacion 15 | ``` 16 | 17 | **Operadores con Archivos** 18 | 19 | ```bash 20 | # Verificar si un archivo existe 21 | if [ -e archivo.txt ]; then 22 | echo "El archivo existe" 23 | fi 24 | 25 | # Leer líneas de un archivo 26 | while IFS= read -r linea; do 27 | echo "$linea" 28 | done < archivo.txt 29 | ``` 30 | -------------------------------------------------------------------------------- /Programación/DevOps/Bash Scripting/6. Bucles.md: -------------------------------------------------------------------------------- 1 | Los bucles son estructuras de control que permiten repetir un conjunto de instrucciones varias veces. Aquí te presento dos tipos de bucles comunes en Bash: el bucle **for** y el bucle **while**. 2 | 3 | ## Bucle for 4 | 5 | El bucle for se utiliza para iterar sobre un rango de valores o elementos en una lista. 6 | 7 | ### Ejemplo: 8 | 9 | ```bash 10 | # Bucle for 11 | for i in {1..5}; do 12 | echo $i 13 | done 14 | ``` 15 | 16 | ## Bucle while 17 | 18 | El bucle while se utiliza para repetir un bloque de código mientras una condición sea verdadera. 19 | 20 | ### Ejemplo: 21 | 22 | ```bash 23 | # Bucle while 24 | contador=0 25 | while [ $contador -lt 5 ]; do 26 | echo $contador 27 | ((contador++)) 28 | done 29 | ``` -------------------------------------------------------------------------------- /.obsidian/core-plugins.json: -------------------------------------------------------------------------------- 1 | { 2 | "file-explorer": true, 3 | "global-search": true, 4 | "switcher": true, 5 | "graph": true, 6 | "backlink": true, 7 | "canvas": true, 8 | "outgoing-link": true, 9 | "tag-pane": true, 10 | "properties": false, 11 | "page-preview": true, 12 | "daily-notes": true, 13 | "templates": true, 14 | "note-composer": true, 15 | "command-palette": true, 16 | "slash-command": false, 17 | "editor-status": true, 18 | "bookmarks": true, 19 | "markdown-importer": false, 20 | "zk-prefixer": false, 21 | "random-note": false, 22 | "outline": true, 23 | "word-count": true, 24 | "slides": false, 25 | "audio-recorder": false, 26 | "workspaces": false, 27 | "file-recovery": true, 28 | "publish": false, 29 | "sync": true, 30 | "webviewer": false 31 | } -------------------------------------------------------------------------------- /Ciencias de la Computación/Base de Datos/SQL/MySQL/2. MySQL Workbench.md: -------------------------------------------------------------------------------- 1 | ## ¿Qué es MySQL Workbench? 2 | 3 | **MySQL Workbench** es una herramienta visual para administración y diseño de bases de datos MySQL. 4 | 5 | ### Funcionalidades 6 | 7 | - Modelado de bases de datos (ERD) 8 | - Ejecución de consultas SQL 9 | - Administración de usuarios y permisos 10 | - Backups y monitoreo 11 | 12 | --- 13 | 14 | ## Leer la base de datos Sakila 15 | 16 | **Sakila** es una base de datos de ejemplo que simula un videoclub. 17 | Es ideal para practicar consultas SQL reales. 18 | 19 | ### Consultas de ejemplo 20 | 21 | ```sql 22 | -- Ver todas las películas 23 | SELECT * FROM film; 24 | 25 | -- Listar películas y su categoría 26 | SELECT f.title, c.name 27 | FROM film f 28 | JOIN film_category fc ON f.film_id = fc.film_id 29 | JOIN category c ON fc.category_id = c.category_id; 30 | ``` 31 | 32 | --- 33 | -------------------------------------------------------------------------------- /Programación/DevOps/Administración de Servidores Linux/Servidor FTP/Servidor FTP.md: -------------------------------------------------------------------------------- 1 | Un **servidor FTP (File Transfer Protocol)** es un sistema que permite la **transferencia de archivos** entre un cliente y un servidor a través del protocolo FTP. Se usa para **subir, descargar y gestionar archivos de manera remota** en una red local o en internet. 2 | 3 | ## Instalamos FTP Server 4 | 5 | ```bash 6 | sudo apt-get install vsftpd -y 7 | ``` 8 | 9 | ## Configuración 10 | 11 | ```bash 12 | sudo nano /etc/vsftpd.conf 13 | ``` 14 | 15 | Editamos la siguiente línea de código 16 | 17 | ![[Programación/DevOps/Administración de Servidores Linux/Servidor FTP/Imagen1.png]] 18 | 19 | ## Reiniciamos 20 | 21 | ```bash 22 | sudo service vsftpd restart 23 | 24 | sudo service vftpd status 25 | ``` 26 | 27 | Luego para acceder a nuestro servidor podemos usar FileZilla, para acceder usamos el usuario y contraseña de nuestra máquina. -------------------------------------------------------------------------------- /Programación/Sistemas Operativos/Linux/Paquetes/PHP Instalación/PHP Instalación.md: -------------------------------------------------------------------------------- 1 | 2 | ## Instalar PHP 7.4: 3 | 4 | ```bash 5 | sudo apt install -y php-cli php-fpm php-json php-intl php-imagick php-pdo php-mysql php-zip php-gd php-mbstring php-curl php-xml php-pear php-bcmath 6 | ``` 7 | 8 | ## Instalar PHP 8.0 9 | 10 | ```bash 11 | sudo add-apt-repository ppa:ondrej/php 12 | 13 | sudo apt-get install php8.0 14 | 15 | sudo apt update 16 | 17 | sudo apt install php8.0 php8.0-fpm php8.0-cli php8.0-gd php8.0-mysql php8.0-curl php8.0-mbstring php8.0-intl php8.0-gmp php8.0-bcmath php8.0-xml php8.0-zip 18 | ``` 19 | 20 | ## Instalar PHP 8.1 21 | 22 | ```bash 23 | sudo add-apt-repository ppa:ondrej/php 24 | 25 | sudo apt-get install php8.1 26 | 27 | sudo apt-get update 28 | 29 | sudo apt-get install php8.1 php8.1-common php8.1-mysql php8.1-pgsql php8.1-xml php8.1-mbstring php8.1-curl php8.1-gd php8.1-zip php8.1-intl 30 | ``` -------------------------------------------------------------------------------- /Programación/Bash Scripting/1. Fundamentos.md: -------------------------------------------------------------------------------- 1 | # ¿Qué es un Shell Script? 2 | 3 | Un **Shell Script** es un archivo de texto que contiene una serie de comandos que el intérprete de comandos (shell) ejecuta secuencialmente. Su principal objetivo es automatizar tareas repetitivas y conseguir objetivos complejos con un solo comando. 4 | 5 | --- 6 | 7 | ## ¿Por qué usar Bash Scripting? 8 | 9 | - **Automatización**: Elimina tareas repetitivas 10 | - **Eficiencia**: Ahorra tiempo en administración de sistemas 11 | - **Consistencia**: Reduce errores humanos 12 | - **Flexibilidad**: Permite crear herramientas personalizadas 13 | - **Integración**: Conecta diferentes programas y servicios 14 | 15 | --- 16 | 17 | ## Conceptos Básicos 18 | 19 | - **Bash**: Bourne Again Shell, el intérprete más común en Linux 20 | - **Script**: Archivo con extensión `.sh` que contiene comandos 21 | - **Intérprete**: Programa que ejecuta los comandos del script 22 | 23 | --- 24 | -------------------------------------------------------------------------------- /Programación/Sistemas Operativos/Linux/Otros/Red virtual/Red Virtual.md: -------------------------------------------------------------------------------- 1 | # Configurar dos tarjetas de red en una máquina virtual 2 | 3 | ## Configuramos el siguiente archivo 4 | 5 | ```bash 6 | sudo nano /etc/netplan/00-installer-config.yaml 7 | ``` 8 | 9 | Y copiamos el siguiente código: 10 | 11 | ```bash 12 | network: 13 | ethernets: 14 | enp0s3: 15 | addresses: [192.168.1.18/24] 16 | gateway4: 192.168.1.1 17 | nameservers: 18 | addresses: [8.8.8.8, 8.8.4.4] 19 | enp0s8: 20 | addresses: [10.0.2.15/24] 21 | gateway4: 10.0.2.1 22 | nameservers: 23 | addresses: [8.8.8.8, 8.8.4.4] 24 | version: 2 25 | ``` 26 | 27 | ## Configuración en Debian 28 | 29 | ```bash 30 | auto eth0 31 | iface eth0 inet static 32 | address 192.168.1.20 33 | netmask 255.255.255.0 34 | gateway 192.168.1.1 35 | 36 | auto eth1 37 | iface eth1 inet static 38 | address 10.0.2.17 39 | netmask 255.255.255.0 40 | ``` 41 | 42 | 43 | -------------------------------------------------------------------------------- /Programación/Sistemas Operativos/Linux/Otros/Red virtual/Red NAT.md: -------------------------------------------------------------------------------- 1 | En VirtualBox podemos conectar las interfaces de red virtuales de una maquina virtual a distintos tipos de redes. 2 | 3 | ![[Programación/Sistemas Operativos/Linux/Otros/Red virtual/Imagen1.png]] 4 | 5 | Una red NAT es una red que crea VirtualBox que permite compartir dicha red con varias máquinas virtuales. Además, VirtualBox con este tipo de red va a proporcionar una puerta de enlace con salida a internet en la dirección de host numero 1 de la red. 6 | 7 | ## Creando una red NAT 8 | 9 | Primero vamos al menú de VirtualBox Archivo Herramientas Network Manager y creamos una nueva red NAT. 10 | 11 | ![[Programación/Sistemas Operativos/Linux/Otros/Red virtual/Imagen2.png]] 12 | 13 | ## Configurando las Máquinas Virtuales 14 | 15 | Ahora vamos a configurar las interfaces de red virtuales de las maquinas virtuales y poder conectar entre si a través de la red NAT. 16 | 17 | ![[Programación/Sistemas Operativos/Linux/Otros/Red virtual/Imagen3.png]] -------------------------------------------------------------------------------- /Programación/Bash Scripting/2. Hola Mundo.md: -------------------------------------------------------------------------------- 1 | # Estructura Básica 2 | 3 | Todo script de Bash debe comenzar con el **shebang** (`#!`) que indica qué intérprete usar: 4 | 5 | ```bash 6 | #!/bin/bash 7 | 8 | # Este es un comentario 9 | echo "Hola Mundo" 10 | ``` 11 | 12 | --- 13 | 14 | ## Creación y Ejecución 15 | 16 | 1. **Crear el archivo**: 17 | 18 | ```bash 19 | nano mundo.sh 20 | ``` 21 | 22 | 2. **Escribir el contenido**: 23 | 24 | ```bash 25 | #!/bin/bash 26 | 27 | echo "Hola Mundo" 28 | ``` 29 | 30 | 3. **Dar permisos de ejecución**: 31 | 32 | ```bash 33 | chmod +x mundo.sh 34 | ``` 35 | 36 | 4. **Ejecutar el script**: 37 | 38 | ```bash 39 | ./mundo.sh 40 | # o 41 | bash mundo.sh 42 | ``` 43 | 44 | --- 45 | 46 | ## Comentarios 47 | 48 | Los comentarios son fundamentales para documentar el código: 49 | 50 | ```bash 51 | #!/bin/bash 52 | 53 | # Esto es un comentario de una línea 54 | echo "Hola Mundo" 55 | 56 | : ' 57 | Esto es un comentario 58 | de múltiples líneas 59 | ' 60 | ``` 61 | 62 | --- 63 | -------------------------------------------------------------------------------- /Programación/C Sharp/Cuestionario 2.md: -------------------------------------------------------------------------------- 1 | La jerarquía de un programa de C# es: 2 | 3 | - Namespace, Clase, Métodos(Main) 4 | 5 | ## La diferencia entre el método Write y WriteLine, es: 6 | 7 | - El primero no da un salto de línea, y el segundo si 8 | 9 | ## ¿Qué es declarar una variable? 10 | 11 | - Escribirla por primera vez en nuestro código 12 | 13 | ## Las variables pueden llevar un nombre de identificador que empiece con número 14 | 15 | - Falso 16 | 17 | ### Nombrar variables con mayúsculas y minúsculas no importa, porque C# no diferencia 18 | 19 | - Falso 20 | 21 | ### Las variables son... 22 | 23 | - Tipo de valor 24 | 25 | 26 | ### Concatenar una cadena es prácticamente... 27 | 28 | - Sumarla con otra 29 | 30 | ### El método ReadLine() obtiene... 31 | 32 | - String 33 | 34 | ### Para convertir una cadena en un tipo numérico es necesario conocer... 35 | 36 | - El tipo .NET 37 | 38 | ### La diferencia entre usar la clase Convert y el método Parse() es... 39 | 40 | - Convert devuelve un valor de cero en caso de que haya un error, y Parse genera una excepción deteniendo la ejecución 41 | -------------------------------------------------------------------------------- /Programación/Bash Scripting/5. Variables del Sistema y Entorno.md: -------------------------------------------------------------------------------- 1 | # Variables Predefinidas 2 | 3 | ```bash 4 | #!/bin/bash 5 | 6 | echo "Nombre del script: $0" 7 | echo "PID del proceso: $$" 8 | echo "Código de salida del último comando: $?" 9 | echo "Directorio actual: $PWD" 10 | echo "Directorio home: $HOME" 11 | echo "Usuario actual: $USER" 12 | echo "Shell actual: $SHELL" 13 | ``` 14 | 15 | --- 16 | 17 | # Variables de Entorno Importantes 18 | 19 | ```bash 20 | #!/bin/bash 21 | 22 | # Variables de entorno comunes 23 | echo "PATH: $PATH" 24 | echo "HOME: $HOME" 25 | echo "USER: $USER" 26 | echo "SHELL: $SHELL" 27 | echo "TERM: $TERM" 28 | echo "LANG: $LANG" 29 | 30 | # Crear variables de entorno 31 | export MI_VARIABLE="valor" 32 | export PATH="$PATH:/mi/directorio" 33 | ``` 34 | 35 | --- 36 | 37 | # Ejemplo Práctico 38 | 39 | ```bash 40 | #!/bin/bash 41 | 42 | echo "=== Información del Sistema ===" 43 | echo "Script: $0" 44 | echo "Usuario: $USER" 45 | echo "PID: $$" 46 | echo "Directorio: $PWD" 47 | echo "Parámetros recibidos: $#" 48 | 49 | if [ $# -gt 0 ]; then 50 | echo "Primer parámetro: $1" 51 | fi 52 | ``` 53 | 54 | --- 55 | -------------------------------------------------------------------------------- /Programación/Sistemas Operativos/Linux/Fundamentos/3. El uso de Linux.md: -------------------------------------------------------------------------------- 1 | # Entornos de uso 2 | 3 | ## Servidores 4 | 5 | - **Servidores web**: Apache, Nginx 6 | - **Servidores de base de datos**: MySQL, PostgreSQL 7 | - **Servidores de aplicaciones**: Tomcat, JBoss 8 | - **Servidores de archivos**: Samba, NFS 9 | 10 | ## Escritorio 11 | 12 | - **Entornos gráficos**: GNOME, KDE, XFCE 13 | - **Aplicaciones de oficina**: LibreOffice, OnlyOffice 14 | - **Desarrollo**: IDEs, editores de texto, compiladores 15 | 16 | ## Dispositivos embebidos 17 | 18 | - **Routers y switches** 19 | - **Dispositivos IoT** 20 | - **Sistemas de entretenimiento** 21 | - **Dispositivos médicos** 22 | 23 | ## Ventajas de usar Linux 24 | 25 | 1. **Seguridad**: Sistema robusto de permisos 26 | 2. **Estabilidad**: Menos propenso a fallos 27 | 3. **Rendimiento**: Eficiente uso de recursos 28 | 4. **Personalización**: Altamente configurable 29 | 5. **Costo**: Sin licencias costosas 30 | 6. **Comunidad**: Amplio soporte de la comunidad 31 | 32 | ## Casos de uso empresariales 33 | 34 | - **Infraestructura de TI**: Centros de datos 35 | - **Desarrollo de software**: Entornos de desarrollo 36 | - **Análisis de datos**: Procesamiento de big data 37 | - **Virtualización**: Plataformas de virtualización 38 | - **Contenedores**: Docker, Kubernetes -------------------------------------------------------------------------------- /Ciencias de la Computación/Base de Datos/Fundamentos.md: -------------------------------------------------------------------------------- 1 | ## ¿Qué es una Base de Datos? 2 | 3 | Una **base de datos** es un conjunto organizado de información o datos estructurados, típicamente almacenados electrónicamente en un sistema informático. 4 | Permiten el almacenamiento, modificación y acceso eficiente a los datos. 5 | 6 | - Ejemplos: sistemas bancarios, plataformas de streaming, redes sociales 7 | - Tipos: 8 | - Relacionales (SQL) 9 | - No relacionales (NoSQL) 10 | 11 | --- 12 | 13 | ## ¿Qué es SQL? 14 | 15 | **SQL (Structured Query Language)** es un lenguaje estándar para el manejo de bases de datos relacionales. 16 | Permite realizar operaciones como: 17 | 18 | - Crear estructuras (tablas, vistas) 19 | - Insertar, consultar, actualizar y eliminar datos (CRUD) 20 | - Controlar acceso a los datos 21 | 22 | --- 23 | 24 | ## ¿Qué es NoSQL? 25 | 26 | **NoSQL (Not Only SQL)** es un conjunto de tecnologías de bases de datos no relacionales diseñadas para trabajar con datos de forma flexible y escalable. 27 | 28 | Características principales: 29 | 30 | - Almacenar datos en modelos flexibles (documentos, clave-valor, columnas, grafos) 31 | - Escalar horizontalmente añadiendo más servidores 32 | - Procesar grandes volúmenes de datos en tiempo real 33 | - Trabajar con datos estructurados, semiestructurados o no estructurados 34 | 35 | --- 36 | -------------------------------------------------------------------------------- /Ciencias de la Computación/Inteligencia Artificial/Fundamentos/Procesamiento/4. La IA clasifica las imágenes.md: -------------------------------------------------------------------------------- 1 | ## Redes neuronales convolucionales (CNN) 2 | 3 | ### Fundamentos de la visión por computadora 4 | 5 | - Cómo “ve” una computadora 6 | - Desafíos de la percepción visual 7 | 8 | ### Arquitectura de las CNN 9 | 10 | - Capas convolucionales 11 | - Pooling (submuestreo) 12 | - Capas totalmente conectadas 13 | 14 | ### Evolución de las arquitecturas CNN 15 | 16 | - LeNet-5 (1998) 17 | - AlexNet (2012) 18 | - VGG (2014) 19 | - ResNet (2015) 20 | - Arquitecturas modernas: EfficientNet, Vision Transformer (ViT) 21 | 22 | ### Aplicaciones prácticas de clasificación de imágenes 23 | 24 | - Diagnóstico médico automatizado (cáncer de piel, radiografías) 25 | - Vehículos autónomos y visión artificial 26 | - Retail y e-commerce inteligente 27 | - Agricultura de precisión 28 | 29 | --- 30 | 31 | ## Redes generativas adversariales (GAN) 32 | 33 | ### Conceptos fundamentales 34 | 35 | - Generador vs. Discriminador 36 | - Equilibrio de Nash en GAN 37 | 38 | ### Evolución de las arquitecturas GAN 39 | 40 | - GAN originales (2014) 41 | - DCGAN (2015) 42 | - StyleGAN (2018-2020) 43 | - Diffusion Models (2020+) 44 | 45 | ### Aplicaciones revolucionarias de generación de imágenes 46 | 47 | - Arte y diseño creativo 48 | - Diseño arquitectónico generativo 49 | 50 | --- 51 | -------------------------------------------------------------------------------- /Programación/C Sharp/6. Concatenación.md: -------------------------------------------------------------------------------- 1 | La concatenación en C# se refiere a la unión de cadenas de texto (`string`). Existen varias formas de concatenar cadenas en C#: 2 | 3 | --- 4 | 5 | ## Usando el operador `+` 6 | 7 | ```csharp 8 | string nombre = "Sebastian"; 9 | string saludo = "Hola, " + nombre + "!"; 10 | Console.WriteLine(saludo); // Salida: Hola, Sebastian! 11 | ``` 12 | 13 | --- 14 | 15 | ## Usando `string.Concat()` 16 | 17 | ```csharp 18 | string nombre = "Sebastian"; 19 | string saludo = string.Concat("Hola, ", nombre, "!"); 20 | Console.WriteLine(saludo); // Salida: Hola, Sebastian! 21 | ``` 22 | 23 | --- 24 | 25 | ## Usando `string.Format()` 26 | 27 | ```csharp 28 | string nombre = "Sebastian"; 29 | string saludo = string.Format("Hola, {0}!", nombre); 30 | Console.WriteLine(saludo); // Salida: Hola, Sebastian! 31 | ``` 32 | 33 | --- 34 | 35 | ## Usando Interpolación de cadenas `$` 36 | 37 | ```csharp 38 | string nombre = "Sebastian"; 39 | string saludo = $"Hola, {nombre}!"; 40 | Console.WriteLine(saludo); // Salida: Hola, Sebastian! 41 | ``` 42 | 43 | --- 44 | 45 | ## Usando `StringBuilder` (para concatenaciones grandes) 46 | 47 | ```csharp 48 | using System.Text; 49 | 50 | StringBuilder sb = new StringBuilder(); 51 | sb.Append("Hola, "); 52 | sb.Append("Sebastian!"); 53 | Console.WriteLine(sb.ToString()); // Salida: Hola, Sebastian! 54 | ``` 55 | 56 | --- 57 | -------------------------------------------------------------------------------- /Ciencias de la Computación/Base de Datos/SQL/MySQL/1. Fundamentos.md: -------------------------------------------------------------------------------- 1 | ## ¿Qué es MySQL? 2 | 3 | **MySQL** es un sistema de gestión de bases de datos relacional (RDBMS) de código abierto basado en SQL. 4 | Es ampliamente usado por su velocidad, confiabilidad y facilidad de uso. 5 | 6 | - Licencia dual: GPL (gratuita) y comercial (Oracle) 7 | - Muy utilizado en aplicaciones web 8 | 9 | --- 10 | 11 | ## Descarga e Instalación de MySQL 12 | 13 | ### Windows 14 | 15 | Tutorial: 16 | [Instalación en Windows](https://www.youtube.com/watch?v=tPPFPC86XnQ) 17 | 18 | ### Linux (Ubuntu/Debian) 19 | 20 | Tutorial: 21 | [Instalación en Linux](https://www.youtube.com/watch?v=KM2y_BeDxGg&t=450s) 22 | 23 | --- 24 | 25 | ## ¿Qué es MySQL Workbench? 26 | 27 | **MySQL Workbench** es una herramienta visual para administración y diseño de bases de datos MySQL. 28 | 29 | ### Funcionalidades 30 | 31 | - Modelado de bases de datos (ERD) 32 | - Ejecución de consultas SQL 33 | - Administración de usuarios y permisos 34 | - Backups y monitoreo 35 | 36 | --- 37 | 38 | ✅ Ahora tu archivo está listo para Obsidian: 39 | 40 | - Sin título repetido al inicio. 41 | - Con jerarquía clara y progresiva. 42 | - Bloques y listas organizados para máxima legibilidad. 43 | 44 | ¿Quieres que te prepare también un **índice automático (tabla de contenidos)** al inicio de este archivo para navegar rápido entre fundamentos, instalación y Workbench en Obsidian? -------------------------------------------------------------------------------- /Ciencias de la Computación/Big Data/Apache Spark I/1. Fundamentos.md: -------------------------------------------------------------------------------- 1 | ## ¿Qué es Spark y cuál es su propósito? 2 | 3 | **Apache Spark** es un motor de análisis unificado para procesamiento de datos a gran escala. 4 | Fue desarrollado en la Universidad de California, Berkeley, y donado a la Apache Software Foundation. 5 | 6 | --- 7 | 8 | ## Características principales 9 | 10 | - **Velocidad**: hasta 100 veces más rápido que Hadoop MapReduce en memoria 11 | - **Facilidad de uso**: APIs en Java, Scala, Python y R 12 | - **Generalidad**: combina SQL, streaming, machine learning y grafos 13 | - **Compatibilidad**: funciona con diversas fuentes de datos y sistemas de almacenamiento 14 | 15 | --- 16 | 17 | ## Propósitos principales 18 | 19 | 1. Procesamiento por lotes (datos históricos) 20 | 2. Streaming en tiempo real 21 | 3. Machine Learning escalable 22 | 4. Análisis de grafos 23 | 5. Análisis interactivo con SQL ad-hoc 24 | 25 | --- 26 | 27 | ## Ventajas sobre sistemas tradicionales 28 | 29 | - Procesamiento en memoria (menor latencia) 30 | - Tolerancia a fallos (recuperación automática) 31 | - Escalabilidad horizontal (añadir nodos al clúster) 32 | - Abstracción de alto nivel (APIs simples para operaciones complejas) 33 | 34 | --- 35 | 36 | ## Componentes de la pila unificada de Spark 37 | 38 | La arquitectura de Spark está diseñada como una pila unificada que proporciona múltiples capacidades sobre un motor central común. 39 | 40 | --- 41 | -------------------------------------------------------------------------------- /Programación/DevOps/Administración de Servidores Linux/Servidor DHCP/Servidor DHCP.md: -------------------------------------------------------------------------------- 1 | Un **servidor DHCP (Dynamic Host Configuration Protocol)** es un servicio que **asigna automáticamente direcciones IP** y otros parámetros de red a dispositivos dentro de una red. Esto evita la necesidad de configurar manualmente cada dispositivo. 2 | 3 | Primero debemos instalar el paquete en el Router Linux 4 | 5 | Instalamos el paquete: 6 | 7 | ```bash 8 | sudo apt-get install isc-dhcp-server 9 | ``` 10 | 11 | ## Configuración 12 | 13 | sudo nano /etc/dhcp/dhcpd.conf   y copiamos el siguiente código 14 | 15 | ```bash 16 | #DHCP PARA EL ROUTER LINUX 17 | group router{ 18 | subnet 10.10.10.0 netmask 255.255.255.0 { 19 |   range 10.10.10.1 10.10.10.20; 20 |   option domain-name-servers 10.10.10.1; 21 |   option domain-name "router.local"; 22 |   option subnet-mask 255.255.255.0; 23 |   option routers 10.10.10.1; 24 |   option broadcast-address 10.10.10.255; 25 |    } 26 | host router{ 27 |           hardware ethernet 08:00:27:0B:E4:AB; 28 |           fixed-address 10.10.10.4; 29 |    } 30 | } 31 | ``` 32 | 33 | ## Configuramos el siguiente archivo 34 | 35 | sudo nano /etc/default/isc-dhcp-server en la carpeta DHCP 36 | 37 | ```bash 38 | INTERFACESv4="enp0s8" (El segundo adaptador de red) 39 | ``` 40 | 41 | ## Aplicamos los cambios y reiniciamos el servicio 42 | 43 | ```bash 44 | sudo dhcpd -t -cf /etc/dhcp/dhcpd.conf 45 | 46 | sudo service isc-dhcp-server restart 47 | 48 | sudo service isc-dhcp-server status 49 | ``` -------------------------------------------------------------------------------- /Programación/DevOps/Bash Scripting/3. Entrada y Salida de la Información.md: -------------------------------------------------------------------------------- 1 | ## Uso de los parametros 2 | 3 | Es un script para resivir información mediante parámetros, que serán cadenas de texto que pondremos después del nombre del script. 4 | 5 | Dentro del Script podemos acceder a ellos mediante variables predefinidas del sistema: 6 | 7 | * **$n** La información de un parámetro en concreto, siendo **n** un numero del parámetro. 8 | 9 | * **$*** Todos los parámetros. Se presentan en una sola cadena de caracteres. 10 | 11 | * **$@** Todos los parámetros. En una lista con un elemento por cada parámetro recibido 12 | 13 | * **$#** EL número de parámetros con los que se ha invocado el script. Sera una cifra 14 | 15 | A continuación crearemos un script con el nombre de **ejemplo.sh** y escribiremos lo siguiente: 16 | 17 | ```bash 18 | #!/bin/bash 19 | 20 | echo El primer parametro es $1 # Cuando se ejecute en la terminal debes escribir el paremetro de cada uno 21 | echo EL numero de parametros ha sido $# 22 | echo Todos los parametros son: $* 23 | ``` 24 | 25 | ```bash 26 | # Leer entrada del usuario 27 | echo -ne "¿Cuál es tu nombre? " && read nombre 28 | echo "Hola, $nombre" 29 | 30 | read -p "Nombre" -s nombre2 31 | echo "Hola $nombre2" 32 | 33 | echo "Hola, mundo" > salida.txt 34 | cat archivo.txt 35 | ``` 36 | 37 | luego daremos permisos de ejecución: 38 | 39 | ``` 40 | chmod +x ejemplo.sh 41 | ``` 42 | 43 | ahora para ejecutar el script usaremos el siguiente comando: 44 | 45 | ``` 46 | bash ejemplo.sh param1 param2 param3 47 | ``` 48 | -------------------------------------------------------------------------------- /Ciencias de la Computación/Big Data/Apache Spark I/4. Instalación y Configuración de Spark.md: -------------------------------------------------------------------------------- 1 | ## Requisitos del sistema 2 | 3 | - **Java**: JDK 8 o superior 4 | - **Scala**: 2.12.x (incluido con Spark) 5 | - **Python**: 2.7+ o 3.4+ (para PySpark) 6 | - **Memoria**: mínimo 2GB RAM recomendados 7 | - **Espacio en disco**: 1GB para instalación básica 8 | 9 | --- 10 | 11 | ## Pasos de instalación 12 | 13 | ### 1. Descargar Spark 14 | 15 | ```bash 16 | wget https://downloads.apache.org/spark/spark-3.4.0/spark-3.4.0-bin-hadoop3.tgz 17 | tar -xzf spark-3.4.0-bin-hadoop3.tgz 18 | sudo mv spark-3.4.0-bin-hadoop3 /opt/spark 19 | ``` 20 | 21 | ### 2. Configurar variables de entorno 22 | 23 | ```bash 24 | # Agregar al ~/.bashrc o ~/.zshrc 25 | export SPARK_HOME=/opt/spark 26 | export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin 27 | export PYSPARK_PYTHON=python3 28 | ``` 29 | 30 | ### 3. Verificar instalación 31 | 32 | ```bash 33 | spark-submit --version 34 | run-example SparkPi 10 35 | ``` 36 | 37 | --- 38 | 39 | ## Estructura de directorios de Spark 40 | 41 | ``` 42 | spark/ 43 | ├── bin/ # Scripts ejecutables 44 | ├── conf/ # Archivos de configuración 45 | ├── data/ # Datos de ejemplo 46 | ├── examples/ # Aplicaciones de ejemplo 47 | ├── jars/ # Archivos JAR de Spark 48 | ├── python/ # Código fuente de PySpark 49 | ├── R/ # Código fuente de SparkR 50 | ├── sbin/ # Scripts de administración del clúster 51 | └── yarn/ # Archivos para integración con YARN 52 | ``` 53 | 54 | --- 55 | -------------------------------------------------------------------------------- /Ciencias de la Computación/Inteligencia Artificial/IA Generativa/1. Qué es la IA Generativa.md: -------------------------------------------------------------------------------- 1 | ## Definición 2 | 3 | La **Inteligencia Artificial Generativa** es una rama de la IA que se especializa en crear contenido nuevo y original a partir de datos de entrenamiento existentes. A diferencia de la IA tradicional que se enfoca en reconocer patrones y clasificar información, la IA generativa produce contenido completamente nuevo como texto, imágenes, audio, video y código. 4 | 5 | --- 6 | 7 | ## La Importancia de la IA Generativa 8 | 9 | ### Transformación Digital Acelerada 10 | - Democratización de la creatividad 11 | - Eficiencia operacional 12 | - Innovación empresarial 13 | 14 | ### Impacto Económico 15 | - Reducción de costos 16 | - Nuevos mercados 17 | - Prototipado rápido 18 | 19 | ### Avances Científicos y Educativos 20 | - Aprendizaje personalizado 21 | - Investigación acelerada 22 | - Accesibilidad mejorada 23 | 24 | ### Diferencias con IA Tradicional 25 | | Aspecto | IA Generativa | IA Tradicional | 26 | |---------|---------------|----------------| 27 | | Objetivo | Crear contenido | Clasificar o predecir | 28 | | Salida | Texto, imágenes, audio | Etiquetas, predicciones | 29 | | Ejemplos | GPT, DALL-E | Sistemas de recomendación | 30 | 31 | --- 32 | 33 | ## Cómo Funciona la IA Generativa 34 | 35 | ### Proceso Fundamental 36 | 1. Entrenamiento 37 | 2. Codificación 38 | 3. Procesamiento 39 | 4. Decodificación 40 | 5. Refinamiento 41 | 42 | ### Arquitecturas Clave 43 | - Transformers 44 | - CNN 45 | - GANs 46 | - VAE 47 | -------------------------------------------------------------------------------- /Programación/DevOps/Bash Scripting/1. Fundamentos.md: -------------------------------------------------------------------------------- 1 | Bash scripting es la fusión perfecta entre programación y el intérprete de comandos más común de Linux. El uso de Bash scripting permite: Automatizar acciones repetitivas, gracias al uso de expresiones matemáticas, como condiciones, bucles puertas lógicas, etc. 2 | 3 | ## Introducción a los Scripts 4 | 5 | **Que es un Shell Script?** 6 | 7 | Un Archivó de Texto que contiene varios comandos para que el Shell (intérprete) los ejecute seguidos. 8 | 9 | Su principal objetivo es automatizar tareas o conseguir objetivos con un solo comando. 10 | 11 | ## Hola Mundo 12 | 13 | ```bash 14 | #!/bin/bash 15 | 16 | # Este es un comentario 17 | ``` 18 | 19 | La primera línea indica la **ruta del interprete** le estamos diciendo a la terminal que vamos a trabajar con un archivo **bash**, siempre debe estar **#!** en un archivo **bash**. 20 | 21 | En la seguna linea de comandos estamos escribiendo un comentario o un mensaje con **#**, con esto la terminal no toma en cuenta el mensaje. 22 | 23 | En esta primera parte haremos un simple script con un mensaje de "Hola Mundo", abriremos nuestra terminal y crearemos un nuevo archivo **mundo.sh** dentro de este archivo escribiremos: 24 | 25 | ```bash 26 | #!/bin/bash 27 | 28 | echo "Hola Mundo" 29 | ``` 30 | 31 | luego de esto le daremos permisos de ejecución con: 32 | 33 | ```bash 34 | chmod +x mundo.sh 35 | ``` 36 | 37 | Y listo para ejecutar el archivo **Bash**: 38 | 39 | ```bash 40 | bash mundo.sh 41 | ``` 42 | 43 | Y obtendremos un mensaje de **Hola Mundo** en nuestra terminal. -------------------------------------------------------------------------------- /Programación/Kotlin/2. Variables y Constantes.md: -------------------------------------------------------------------------------- 1 | En Kotlin, podemos declarar **variables mutables** (que pueden cambiar su valor) y **constantes** o **variables inmutables** (cuyo valor no puede cambiar una vez asignado). 2 | 3 | ## Conceptos Clave 4 | 5 | - `var`: declara una **variable mutable**. 6 | - `val`: declara una **constante** o **variable inmutable**. 7 | - Kotlin es un lenguaje **estáticamente tipado**, pero permite **inferencia de tipos**. 8 | 9 | ### Ejemplo: 10 | 11 | ```kotlin 12 | fun main() { 13 | var nombre = "Sebastián" 14 | val edad = 19 15 | 16 | println("Nombre: $nombre") 17 | println("Edad: $edad") 18 | 19 | nombre = "Devsebastian44" 20 | // edad = 20 // Error: no se puede reasignar una val 21 | 22 | println("Nuevo nombre: $nombre") 23 | } 24 | ``` 25 | 26 | - `var nombre = "Sebastián"`: la variable `nombre` puede cambiar. 27 | - `val edad = 19`: la variable `edad` **no se puede modificar** después de su asignación inicial. 28 | - `$variable`: se usa para interpolar el valor dentro de un `println`. 29 | 30 | ### Buenas Prácticas 31 | 32 | - Usa `val` siempre que no necesites cambiar el valor. 33 | - Solo usa `var` si sabes que el valor va a modificarse. 34 | - Esto ayuda a escribir código **más seguro e inmutable**. 35 | 36 | ### Tipos de Datos Básicos 37 | 38 | | Tipo | Ejemplo | 39 | | --------- | --------------- | 40 | | `Int` | 1, 42, -7 | 41 | | `Double` | 3.14, -0.1 | 42 | | `Boolean` | `true`, `false` | 43 | | `String` | "Hola", "123" | 44 | | `Char` | 'A', 'z' | 45 | -------------------------------------------------------------------------------- /Programación/DevOps/Administración de Servidores Linux/Servidor MySQL/Servidor MySQL.md: -------------------------------------------------------------------------------- 1 | Un **servidor MySQL** es un sistema de gestión de bases de datos **relacional y de código abierto**, utilizado para almacenar, organizar y gestionar grandes volúmenes de datos. MySQL permite **crear, modificar, eliminar y consultar bases de datos** de manera eficiente. 2 | 3 | ## Instalamos el paquete 4 | 5 | ```bash 6 | sudo apt update 7 | 8 | sudo apt-get install mysql-server 9 | 10 | sudo mysql 11 | ``` 12 | 13 | Luego cambiar la autenticación y los privilegios usuario 14 | 15 | ```mysql 16 | ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'Password444@'; 17 | 18 | exit 19 | ``` 20 | 21 | ```bash 22 | sudo mysql -u root -p   (Y ponemos las contraseña) 23 | ``` 24 | 25 | Para acceder a una base de datos remota 26 | 27 | ```mysql 28 | CREATE USER 'usuario'@'%' IDENTIFIED BY 'Password444@'; 29 | 30 | GRANT ALL PRIVILEGES ON *.* TO 'usuario'@'%' WITH GRANT OPTION; 31 | 32 | DROP USER 'root'@'localhost'; 33 | 34 | CREATE USER 'root'@'localhost' IDENTIFIED BY 'python 444'; 35 | ``` 36 | 37 | sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf   y editamos la siguiente línea de código 38 | 39 | ![[Programación/DevOps/Administración de Servidores Linux/Servidor MySQL/Imagen1.png]] 40 | 41 | ```bash 42 | sudo service mysql restart 43 | ``` 44 | 45 | Ahora desde nuestra PC accedemos al servidor remoto 46 | 47 | ```bash 48 | sudo mysql -h 192.168.1.16 -u root -p 49 | ``` 50 | 51 | ![https://www.youtube.com/watch?v=uxocMv-AtaU&t=572s](https://www.youtube.com/watch?v=uxocMv-AtaU&t=572s) 52 | -------------------------------------------------------------------------------- /Programación/DevOps/Administración de Servidores Linux/Servidor Proxy/Servidor Proxy.md: -------------------------------------------------------------------------------- 1 | Un **servidor Proxy** es un intermediario entre un cliente (usuario) e internet. Actúa como un **puente entre el usuario y los servidores a los que accede**, gestionando y filtrando las solicitudes de conexión. 2 | 3 | ## Instalacion 4 | 5 | ```bash 6 | sudo apt-get install squid 7 | ``` 8 | 9 | ## Configuración 10 | 11 | ```bash 12 | sudo systemctl start squid 13 | 14 | sudo systemctl enable squid 15 | ``` 16 | 17 | sudo nano /etc/squid/squid.conf  y pulsamos CTRL + W y buscamos http_access deny all y modificamos la siguiente parte 18 | 19 | ![[Programación/DevOps/Administración de Servidores Linux/Servidor Proxy/Imagen1.png]] 20 | 21 | ```bash 22 | sudo systemctl restart squid 23 | ``` 24 | 25 | # Configuración de Sitios 26 | 27 | ## Creamos un archivo con los sitios que vamos a bloquear 28 | 29 | sudo nano /etc/squid/blocked.acl  y escribimos los sitos que vamos a bloquear 30 | 31 | ``` 32 | .facebook.com 33 | 34 | .youtube.com 35 | ``` 36 | 37 | ## Luego configuramos el archivo de squid 38 | 39 | sudo nano /etc/squid/squid.conf  y pulsamos CTRL + W y buscamos acl localnet y copiamos el siguiente código 40 | 41 | ```bash 42 | acl blocked_websites dstdomain "/etc/squid/blocked.acl" 43 | 44 | http_access deny blocked_websites 45 | ``` 46 | 47 | ![[Programación/DevOps/Administración de Servidores Linux/Servidor Proxy/Imagen2.png]] 48 | 49 | ```bash 50 | sudo systemctl restart squid 51 | ``` 52 | 53 | Luego configuramos el la maquina cliente el proxy y ponemos como puerto 3128 54 | 55 | 56 | -------------------------------------------------------------------------------- /Programación/Bash Scripting/4. Variables y Tipos de Datos.md: -------------------------------------------------------------------------------- 1 | # Declaración y Uso de Variables 2 | 3 | ```bash 4 | #!/bin/bash 5 | 6 | # Declaración básica (sin espacios alrededor del =) 7 | nombre="Juan" 8 | edad=25 9 | precio=19.99 10 | 11 | # Acceso a variables 12 | echo "Nombre: $nombre" 13 | echo "Edad: ${edad}" # Recomendado usar llaves 14 | echo "Precio: $precio" 15 | 16 | # Variables con espacios 17 | mensaje="Hola mundo desde Bash" 18 | echo "$mensaje" 19 | ``` 20 | 21 | --- 22 | 23 | # Tipos de Variables 24 | 25 | ```bash 26 | #!/bin/bash 27 | 28 | # Cadenas de texto 29 | cadena="Esto es una cadena" 30 | cadena_vacia="" 31 | 32 | # Números enteros 33 | numero=42 34 | negativo=-10 35 | 36 | # Arrays 37 | frutas=("manzana" "banana" "naranja") 38 | echo "Primera fruta: ${frutas[0]}" 39 | echo "Todas las frutas: ${frutas[@]}" 40 | 41 | # Variables de solo lectura 42 | readonly PI=3.14159 43 | # PI=3.14 # Esto causaría un error 44 | 45 | # Variables locales (dentro de funciones) 46 | function ejemplo() { 47 | local var_local="Solo visible aquí" 48 | echo "$var_local" 49 | } 50 | ``` 51 | 52 | --- 53 | 54 | # Operaciones con Variables 55 | 56 | ```bash 57 | #!/bin/bash 58 | 59 | # Longitud de cadena 60 | texto="Hola mundo" 61 | echo "Longitud: ${#texto}" 62 | 63 | # Concatenación 64 | nombre="Juan" 65 | apellido="Pérez" 66 | nombre_completo="${nombre} ${apellido}" 67 | echo "$nombre_completo" 68 | 69 | # Sustitución de cadenas 70 | archivo="documento.txt" 71 | sin_extension="${archivo%.txt}" # documento 72 | echo "Sin extensión: $sin_extension" 73 | 74 | # Valores por defecto 75 | echo "Usuario: ${USER:-'desconocido'}" 76 | ``` 77 | 78 | --- 79 | -------------------------------------------------------------------------------- /Programación/Desarrollo Web/Front-End/Javascript/14. Objeto JSON.md: -------------------------------------------------------------------------------- 1 | **JSON** (JavaScript Object Notation) es un **formato ligero** para almacenar e intercambiar datos. 2 | Es muy utilizado para **comunicarse entre el frontend y el backend**, y se basa en la **sintaxis de objetos de JavaScript**. 3 | 4 | ### Ejemplo: 5 | 6 | ```javascript 7 | { 8 | "nombre": "Sebastián", 9 | "edad": 25, 10 | "activo": true 11 | } 12 | ``` 13 | 14 | Un objeto JSON está compuesto por: 15 | 16 | - Claves (keys) en **strings**. 17 | - Valores que pueden ser: `string`, `number`, `boolean`, `array`, `object`, o `null`. 18 | 19 | ### Crear un objeto JavaScript: 20 | 21 | ```javascript 22 | let persona = { 23 | nombre: "Sebastián", 24 | edad: 25, 25 | activo: true 26 | }; 27 | ``` 28 | 29 | ### Convertir de Objeto JS a JSON string 30 | 31 | ```javascript 32 | let jsonString = JSON.stringify(persona); 33 | console.log(jsonString); 34 | // Resultado: {"nombre":"Sebastián","edad":25,"activo":true} 35 | ``` 36 | 37 | ### Convertir de JSON string a Objeto JS 38 | 39 | ```javascript 40 | let texto = '{"nombre":"Sebastián","edad":25,"activo":true}'; 41 | let objeto = JSON.parse(texto); 42 | console.log(objeto.nombre); // Resultado: Sebastián 43 | ``` 44 | 45 | ### JSON con arrays 46 | 47 | ```javascript 48 | { 49 | "usuarios": [ 50 | { "nombre": "Ana", "edad": 30 }, 51 | { "nombre": "Luis", "edad": 25 } 52 | ] 53 | } 54 | ``` 55 | 56 | Y en JavaScript: 57 | 58 | ```javascript 59 | let datos = { 60 | usuarios: [ 61 | { nombre: "Ana", edad: 30 }, 62 | { nombre: "Luis", edad: 25 } 63 | ] 64 | }; 65 | 66 | console.log(datos.usuarios[1].nombre); // Luis 67 | ``` 68 | -------------------------------------------------------------------------------- /Programación/DevOps/Administración de Servidores Linux/Servidor Samba/Servidor Samba.md: -------------------------------------------------------------------------------- 1 | Un **servidor Samba** es un software que permite compartir archivos e impresoras entre sistemas **Windows y Linux** dentro de una red. Implementa el protocolo **SMB (Server Message Block)**, utilizado por Windows para compartir recursos. 2 | 3 | ## Instalamos el paquete 4 | 5 | ```bash 6 | sudo apt-get install samba -y 7 | ``` 8 | ## Configuración 9 | 10 | sudo nano /etc/samba/smb.conf    y copiaremos el siguiente código en la última línea de comando 11 | 12 | ```bash 13 | [servidor] 14 | path = /home/usuario/servidor 15 | browseable = yes 16 | create mask = 0777 17 | directory mask = 0777 18 | writable = yes 19 | hosts allow = 10.10.10.14  esto es opcional ya que sirve para seleccionar las IP que quiero que se conecte 20 | ``` 21 | 22 | ![[Programación/DevOps/Administración de Servidores Linux/Servidor Samba/Imagen1.png]] 23 | 24 | ## Configuración de red en SAMBA 25 | 26 | En caso de tener dos adaptadores de red y queremos configurar para que SAMBA escuche a uno solo debemos configurar lo siguiente 27 | 28 | sudo nano /etc/samba/smb.conf    y configuramos el nombre del adaptador y descomentamos 29 | 30 | ![[Programación/DevOps/Administración de Servidores Linux/Servidor Samba/Imagen2.png]] 31 | 32 | ## Creamos el directorio donde se va alojar los archivos 33 | 34 | ```bash 35 | sudo mkdir servidor 36 | 37 | sudo chmod 777 servidor 38 | ``` 39 | 40 | ## Configuramos usuarios para acceder al servidor 41 | 42 | ```bash 43 | sudo useradd Usuario 44 | 45 | sudo smbpasswd -a Usuario 46 | ``` 47 | 48 | ## Reiniciamos el servicio Samba 49 | 50 | ```bash 51 | sudo service smbd restart 52 | ``` 53 | -------------------------------------------------------------------------------- /Programación/Sistemas Operativos/Linux/Fundamentos/1. Introducción a Linux.md: -------------------------------------------------------------------------------- 1 | # ¿Qué es Linux? 2 | 3 | Linux es un sistema operativo de código abierto basado en Unix, desarrollado inicialmente por Linus Torvalds en 1991. Es conocido por su estabilidad, seguridad y flexibilidad. 4 | 5 | ## Historia de Linux 6 | 7 | - **1991**: Linus Torvalds comienza el desarrollo del kernel Linux 8 | - **1992**: Se adopta la licencia GPL (General Public License) 9 | - **1993**: Se lanzan las primeras distribuciones comerciales 10 | - **Actualidad**: Linux es el sistema operativo más utilizado en servidores y dispositivos móviles 11 | 12 | ## Características principales 13 | 14 | - **Código abierto**: El código fuente está disponible para todos 15 | - **Multitarea**: Puede ejecutar múltiples procesos simultáneamente 16 | - **Multiusuario**: Permite múltiples usuarios trabajando al mismo tiempo 17 | - **Portabilidad**: Funciona en diversas arquitecturas de hardware 18 | - **Seguridad**: Sistema robusto de permisos y control de acceso 19 | - **Estabilidad**: Conocido por su confiabilidad y tiempo de actividad 20 | 21 | ## Componentes del sistema Linux 22 | 23 | 1. **Kernel**: El núcleo del sistema operativo 24 | 2. **Shell**: Interfaz de línea de comandos 25 | 3. **Sistema de archivos**: Estructura jerárquica de directorios 26 | 4. **Utilidades del sistema**: Programas para administración y uso del sistema 27 | 28 | ## Distribuciones populares 29 | 30 | - **Ubuntu**: Fácil de usar, ideal para principiantes 31 | - **CentOS/RHEL**: Enfocado en servidores empresariales 32 | - **Debian**: Estable y confiable 33 | - **Fedora**: Tecnología de vanguardia 34 | - **openSUSE**: Herramientas de administración avanzadas -------------------------------------------------------------------------------- /Ciencias de la Computación/Big Data/Apache Spark I/2. Spark Core y Módulos.md: -------------------------------------------------------------------------------- 1 | ## Spark Core 2 | 3 | Motor de ejecución subyacente que proporciona: 4 | 5 | - Gestión de memoria distribuida 6 | - Programación de tareas 7 | - Recuperación ante fallos 8 | - Interacción con sistemas de almacenamiento 9 | 10 | --- 11 | 12 | ## Spark SQL 13 | 14 | Módulo para trabajar con datos estructurados: 15 | 16 | - **DataFrame API**: abstracción de datos estructurados 17 | - **Catalyst Optimizer**: optimizador de consultas 18 | - **Soporte SQL**: sintaxis estándar 19 | - **Conectores**: integración con diversas fuentes de datos 20 | 21 | ```sql 22 | SELECT department, AVG(salary) as avg_salary 23 | FROM employees 24 | WHERE age > 25 25 | GROUP BY department 26 | ORDER BY avg_salary DESC; 27 | ``` 28 | 29 | --- 30 | 31 | ## Spark Streaming 32 | 33 | Procesamiento de flujos de datos en tiempo real: 34 | 35 | - **DStreams**: Discretized Streams por micro-lotes 36 | - **Structured Streaming**: API de alto nivel 37 | - **Integración**: Kafka, Flume, TCP sockets, etc. 38 | 39 | --- 40 | 41 | ## MLlib (Machine Learning Library) 42 | 43 | Biblioteca de machine learning escalable: 44 | 45 | - **Algoritmos**: clasificación, regresión, clustering, filtrado colaborativo 46 | - **Utilidades**: evaluación de modelos, pipelines de ML 47 | - **Optimización**: algoritmos distribuidos para grandes datasets 48 | 49 | --- 50 | 51 | ## GraphX 52 | 53 | Procesamiento y computación paralela de grafos: 54 | 55 | - **Graph abstraction**: representación distribuida de grafos 56 | - **Algoritmos**: PageRank, Connected Components, Triangle Counting 57 | - **Transformaciones**: operaciones sobre vértices y aristas 58 | 59 | --- 60 | -------------------------------------------------------------------------------- /Ciencias de la Computación/Base de Datos/SQL/MySQL/4. Lenguaje de Manipulación de Datos (DML).md: -------------------------------------------------------------------------------- 1 | ## Lenguaje de Manipulación de Datos (DML) 2 | 3 | El **DML (Data Manipulation Language)** permite trabajar directamente con los datos dentro de las tablas: insertar, actualizar y eliminar registros. 4 | 5 | --- 6 | 7 | ## Insertar datos en una tabla 8 | 9 | Se utiliza el comando `INSERT INTO`. 10 | 11 | ### Insertar valores en todas las columnas 12 | 13 | ```sql 14 | INSERT INTO personas (id, nombre, email) 15 | VALUES (1, 'Carlos Pérez', 'carlos@mail.com'); 16 | ``` 17 | 18 | ### Insertar varios registros 19 | 20 | ```sql 21 | INSERT INTO personas (id, nombre, email) 22 | VALUES 23 | (2, 'Ana Torres', 'ana@mail.com'), 24 | (3, 'Luis Gómez', 'luis@mail.com'); 25 | ``` 26 | 27 | --- 28 | 29 | ## Actualizar datos de una tabla 30 | 31 | Se utiliza el comando `UPDATE` junto con `SET` y una cláusula `WHERE`. 32 | 33 | ### Actualizar una fila específica 34 | 35 | ```sql 36 | UPDATE personas 37 | SET email = 'nuevo_correo@mail.com' 38 | WHERE id = 1; 39 | ``` 40 | 41 | ### Actualizar múltiples columnas 42 | 43 | ```sql 44 | UPDATE personas 45 | SET nombre = 'Carlos P. Díaz', email = 'carlos.diaz@mail.com' 46 | WHERE id = 1; 47 | ``` 48 | 49 | ⚠️ Si omites el `WHERE`, se actualizan **todas** las filas de la tabla. 50 | 51 | --- 52 | 53 | ## Borrar datos de una tabla 54 | 55 | Se utiliza el comando `DELETE`. 56 | 57 | ### Borrar una fila específica 58 | 59 | ```sql 60 | DELETE FROM personas 61 | WHERE id = 2; 62 | ``` 63 | 64 | ### Borrar todas las filas 65 | 66 | ```sql 67 | DELETE FROM personas; 68 | ``` 69 | 70 | Esto elimina todos los registros, pero **no** la estructura de la tabla (para eso se usa `TRUNCATE`). 71 | 72 | --- 73 | -------------------------------------------------------------------------------- /Programación/Bash Scripting/3. Entrada y Salida de Información.md: -------------------------------------------------------------------------------- 1 | # Parámetros de Entrada 2 | 3 | Los scripts pueden recibir información mediante parámetros: 4 | 5 | ```bash 6 | #!/bin/bash 7 | 8 | echo "El primer parámetro es: $1" 9 | echo "El segundo parámetro es: $2" 10 | echo "El número de parámetros es: $#" 11 | echo "Todos los parámetros son: $*" 12 | echo "Parámetros como array: $@" 13 | echo "Nombre del script: $0" 14 | ``` 15 | 16 | Variables de parámetros: 17 | 18 | - `$1, $2, $3...`: Parámetros individuales 19 | - `$#`: Número total de parámetros 20 | - `$*`: Todos los parámetros como una cadena 21 | - `$@`: Todos los parámetros como array 22 | - `$0`: Nombre del script 23 | 24 | --- 25 | 26 | ## Lectura de Entrada del Usuario 27 | 28 | ```bash 29 | #!/bin/bash 30 | 31 | # Lectura básica 32 | echo -n "¿Cuál es tu nombre? " 33 | read nombre 34 | echo "Hola, $nombre" 35 | 36 | # Lectura con prompt 37 | read -p "Ingresa tu edad: " edad 38 | echo "Tienes $edad años" 39 | 40 | # Lectura silenciosa (para contraseñas) 41 | read -s -p "Ingresa tu contraseña: " password 42 | echo -e "\nContraseña ingresada" 43 | 44 | # Lectura con timeout 45 | if read -t 10 -p "Tienes 10 segundos para responder: " respuesta; then 46 | echo "Respondiste: $respuesta" 47 | else 48 | echo "Se agotó el tiempo" 49 | fi 50 | ``` 51 | 52 | --- 53 | 54 | ## Salida de Información 55 | 56 | ```bash 57 | #!/bin/bash 58 | 59 | # Salida estándar 60 | echo "Mensaje normal" 61 | 62 | # Salida con formato 63 | printf "Nombre: %s, Edad: %d\n" "Juan" 25 64 | 65 | # Redirección a archivo 66 | echo "Contenido" > archivo.txt # Sobrescribir 67 | echo "Más contenido" >> archivo.txt # Agregar 68 | 69 | # Salida de error 70 | echo "Error: Algo salió mal" >&2 71 | ``` 72 | 73 | --- 74 | -------------------------------------------------------------------------------- /Programación/Bash Scripting/7. Estructuras de Control.md: -------------------------------------------------------------------------------- 1 | # Condicionales - if/else 2 | 3 | ```bash 4 | #!/bin/bash 5 | 6 | # Estructura básica if 7 | numero=15 8 | 9 | if [ $numero -gt 10 ]; then 10 | echo "El número es mayor que 10" 11 | fi 12 | 13 | # if-else 14 | if [ $numero -eq 10 ]; then 15 | echo "El número es 10" 16 | else 17 | echo "El número no es 10" 18 | fi 19 | 20 | # if-elif-else 21 | if [ $numero -lt 10 ]; then 22 | echo "Menor que 10" 23 | elif [ $numero -eq 10 ]; then 24 | echo "Igual a 10" 25 | else 26 | echo "Mayor que 10" 27 | fi 28 | ``` 29 | 30 | --- 31 | 32 | # Condicionales - case 33 | 34 | ```bash 35 | #!/bin/bash 36 | 37 | opcion=$1 38 | 39 | case $opcion in 40 | "1") 41 | echo "Seleccionaste la opción 1" 42 | ;; 43 | "2") 44 | echo "Seleccionaste la opción 2" 45 | ;; 46 | "3"|"tres") 47 | echo "Seleccionaste la opción 3 o 'tres'" 48 | ;; 49 | *) 50 | echo "Opción no válida" 51 | ;; 52 | esac 53 | ``` 54 | 55 | --- 56 | 57 | # Ejemplo Práctico de Menú 58 | 59 | ```bash 60 | #!/bin/bash 61 | 62 | echo "=== MENÚ PRINCIPAL ===" 63 | echo "1. Mostrar fecha" 64 | echo "2. Mostrar usuarios" 65 | echo "3. Mostrar espacio en disco" 66 | echo "4. Salir" 67 | read -p "Selecciona una opción: " opcion 68 | 69 | case $opcion in 70 | 1) 71 | echo "Fecha actual: $(date)" 72 | ;; 73 | 2) 74 | echo "Usuarios conectados:" 75 | who 76 | ;; 77 | 3) 78 | echo "Espacio en disco:" 79 | df -h 80 | ;; 81 | 4) 82 | echo "¡Hasta luego!" 83 | exit 0 84 | ;; 85 | *) 86 | echo "Opción no válida" 87 | exit 1 88 | ;; 89 | esac 90 | ``` 91 | 92 | --- 93 | -------------------------------------------------------------------------------- /Programación/Sistemas Operativos/Linux/Otros/Cliente NO-IP/Cliente NO-IP.md: -------------------------------------------------------------------------------- 1 | **NO-IP** es un servicio de **DNS dinámico (Dynamic DNS o DDNS)** que permite asignar un **nombre de dominio fijo** a una dirección IP que cambia constantemente, como las que asignan la mayoría de los proveedores de Internet residencial. 2 | # Requisitos previos 3 | 4 | **NOTA**: Primero debemos crear un host en NO-IP. 5 | Si queremos configurar otro cliente en otra máquina, debemos desactivar el puerto 80. 6 | 7 | # Instalación 8 | 9 | ### Iniciar sesión como root 10 | 11 | ```bash 12 | sudo -i 13 | ``` 14 | 15 | ## Descargar el Cliente 16 | 17 | ```bash 18 | cd /usr/local/src 19 | wget https://www.noip.com/client/linux/noip-duc-linux.tar.gz 20 | tar xzf noip-duc-linux.tar.gz 21 | cd noip-2.1.9-1/ 22 | ``` 23 | 24 | ## Instalar el Cliente 25 | 26 | ```bash 27 | sudo apt-get install build-essential -y 28 | sudo apt-get install make 29 | make 30 | make install 31 | ``` 32 | 33 | Ingresamos el usuario y contraseña de nuestra cuenta NO-IP y ponemos `30` y `N` en las preguntas. 34 | 35 | ## Activar el cliente 36 | 37 | ```bash 38 | noip2 -S 39 | ``` 40 | 41 | ## Configuración en Nextcloud 42 | 43 | ```bash 44 | cd /var/www/html/nextcloud/nextcloud/ 45 | nano config/config.php 46 | ``` 47 | 48 | Agregar: 49 | 50 | ```bash 51 | 1 => 'nubeprivada.hopto.org', // Dirección del cliente NO-IP 52 | 'overwrite.cli.url' => 'http://192.168.1.15/nextcloud', // IP del servidor 53 | 'overwrite.cli.url' => 'nubeprivada.hopto.org/nextcloud', // Cliente NO-IP 54 | 'overwrite.cli.url' => 'http://186.71.81.5/nextcloud', // Acceso desde Internet 55 | ``` 56 | 57 | ![[Programación/Sistemas Operativos/Linux/Otros/Cliente NO-IP/Imagen1.png]] 58 | 59 | ## Reiniciar Apache 60 | 61 | ```bash 62 | sudo service apache2 restart 63 | ``` -------------------------------------------------------------------------------- /Programación/Bash Scripting/9. Funciones.md: -------------------------------------------------------------------------------- 1 | # Declaración y Uso Básico 2 | 3 | ```bash 4 | #!/bin/bash 5 | 6 | # Función básica 7 | saludar() { 8 | echo "¡Hola desde la función!" 9 | } 10 | 11 | # Función con parámetros 12 | saludar_usuario() { 13 | local nombre=$1 14 | local edad=$2 15 | echo "Hola $nombre, tienes $edad años" 16 | } 17 | 18 | # Función con valor de retorno 19 | sumar() { 20 | local a=$1 21 | local b=$2 22 | local resultado=$((a + b)) 23 | echo $resultado 24 | } 25 | 26 | # Llamadas a funciones 27 | saludar 28 | saludar_usuario "Juan" 25 29 | resultado=$(sumar 5 3) 30 | echo "5 + 3 = $resultado" 31 | ``` 32 | 33 | --- 34 | 35 | # Funciones Avanzadas 36 | 37 | ```bash 38 | #!/bin/bash 39 | 40 | # Función con variables locales 41 | procesar_datos() { 42 | local datos=$1 43 | local procesados="" 44 | 45 | echo "Procesando: $datos" 46 | # Lógica de procesamiento aquí 47 | procesados="Datos procesados: $datos" 48 | echo "$procesados" 49 | } 50 | 51 | # Función con múltiples valores de retorno 52 | obtener_info_sistema() { 53 | local usuario=$(whoami) 54 | local fecha=$(date) 55 | local directorio=$(pwd) 56 | 57 | echo "$usuario|$fecha|$directorio" 58 | } 59 | 60 | # Función recursiva (factorial) 61 | factorial() { 62 | local n=$1 63 | if [ $n -le 1 ]; then 64 | echo 1 65 | else 66 | local temp=$((n - 1)) 67 | local temp_result=$(factorial $temp) 68 | echo $((n * temp_result)) 69 | fi 70 | } 71 | 72 | # Uso de las funciones 73 | procesar_datos "mis datos" 74 | 75 | IFS='|' read -r usuario fecha directorio <<< "$(obtener_info_sistema)" 76 | echo "Usuario: $usuario" 77 | echo "Fecha: $fecha" 78 | echo "Directorio: $directorio" 79 | 80 | echo "Factorial de 5: $(factorial 5)" 81 | ``` 82 | 83 | --- 84 | -------------------------------------------------------------------------------- /Programación/C Sharp/2. Diferencia entre Write y WriteLine.md: -------------------------------------------------------------------------------- 1 | 1. **`Console.Write`** 2 | 3 | - Imprime el texto en la consola **sin saltar a la siguiente línea**. 4 | - El siguiente texto se mostrará inmediatamente después del anterior, en la misma línea. 5 | 2. **`Console.WriteLine`** 6 | 7 | - Imprime el texto en la consola y luego **salta a la siguiente línea**. 8 | - El siguiente texto comenzará en una nueva línea. 9 | 10 | --- 11 | 12 | ## Ejemplo práctico en el código 13 | 14 | - **`Console.Write("1. Precalentar el horno");`** 15 | - El texto se imprimirá en la consola, pero el cursor no saltará a la siguiente línea. 16 | - **`Console.WriteLine("2. Mezclar Arina y Mantequilla");`** 17 | - El texto se imprimirá en una nueva línea porque `WriteLine` realiza un salto de línea automáticamente. 18 | 19 | ```csharp 20 | using System; 21 | using System.Collections.Generic; 22 | using System.Linq; 23 | using System.Text; 24 | using System.Threading.Tasks; 25 | 26 | namespace Seccion2 27 | { 28 | internal class Program 29 | { 30 | static void Main(string[] args) 31 | { 32 | Console.Write("1. Precalentar el horno"); 33 | Console.WriteLine("2. Mezclar Arina y Mantequilla"); 34 | Console.WriteLine("3. Agregar azucar y 1 huevo"); 35 | Console.WriteLine("4. Amazar la mezcla"); 36 | Console.WriteLine("5. Darles forma y colocar en charola"); 37 | Console.WriteLine("6. Hornear durante 10 minutos"); 38 | } 39 | } 40 | } 41 | ``` 42 | 43 | --- 44 | 45 | ## Resultado del programa en la consola 46 | 47 | ```plaintext 48 | 1. Precalentar el horno2. Mezclar Arina y Mantequilla 49 | 2. Agregar azucar y 1 huevo 50 | 3. Amazar la mezcla 51 | 4. Darles forma y colocar en charola 52 | 5. Hornear durante 10 minutos 53 | ``` 54 | 55 | --- 56 | -------------------------------------------------------------------------------- /Ciencias de la Computación/Big Data/Apache Spark I/5. Lenguajes de Programación en Spark.md: -------------------------------------------------------------------------------- 1 | ## Scala en Spark 2 | 3 | Scala es el lenguaje nativo de Spark y ofrece el mejor rendimiento. 4 | 5 | ### Ventajas 6 | 7 | - Rendimiento óptimo (sin overhead) 8 | - Acceso completo a la API de Spark 9 | - Compilación estática reduce errores 10 | - Interoperabilidad con Java 11 | 12 | ### Sintaxis básica 13 | 14 | ```scala 15 | // Variables 16 | val immutableVar = "Hello" 17 | var mutableVar = "World" 18 | 19 | // Funciones 20 | def add(x: Int, y: Int): Int = x + y 21 | 22 | // Colecciones 23 | val numbers = List(1, 2, 3, 4, 5) 24 | val doubled = numbers.map(_ * 2) 25 | 26 | // Pattern matching 27 | val message = numbers.length match { 28 | case 0 => "Empty list" 29 | case 1 => "Single element" 30 | case _ => "Multiple elements" 31 | } 32 | ``` 33 | 34 | --- 35 | 36 | ## Python en Spark (PySpark) 37 | 38 | Python ofrece facilidad de uso y gran ecosistema. 39 | 40 | ### Ventajas 41 | 42 | - Sintaxis simple y legible 43 | - Gran ecosistema de librerías 44 | - Popularidad en ciencia de datos 45 | - Integración con pandas, numpy, matplotlib 46 | 47 | ### Configuración de PySpark 48 | 49 | ```python 50 | from pyspark.sql import SparkSession 51 | from pyspark import SparkContext, SparkConf 52 | 53 | # Crear SparkSession 54 | spark = SparkSession.builder \ 55 | .appName("MyApp") \ 56 | .config("spark.executor.memory", "2g") \ 57 | .getOrCreate() 58 | 59 | # Obtener SparkContext 60 | sc = spark.sparkContext 61 | ``` 62 | 63 | --- 64 | 65 | ## Comparación de rendimiento 66 | 67 | |Aspecto|Scala|Python| 68 | |---|---|---| 69 | |Velocidad|Excelente|Bueno (con overhead)| 70 | |Facilidad|Moderado|Excelente| 71 | |Ecosistema|Java/Scala|Python científico| 72 | |Debugging|Compilación|Runtime| 73 | |Curva de aprendizaje|Pronunciada|Suave| 74 | 75 | --- 76 | 77 | -------------------------------------------------------------------------------- /Programación/Desarrollo Web/Front-End/Javascript/3. Objetos Integrados.md: -------------------------------------------------------------------------------- 1 | # Objeto `Math` en JavaScript 2 | 3 | ## ¿Qué es? 4 | 5 | `Math` es un **objeto integrado (built-in)** en JavaScript que proporciona propiedades y métodos para realizar operaciones matemáticas. 6 | 7 | > Es un objeto **estático**: no se instancia (no se usa `new Math()`), simplemente se usa como `Math.función()`. 8 | 9 | 10 | # Propiedades comunes 11 | 12 | | Propiedad | Descripción | 13 | |----------------|-------------------------------------| 14 | | `Math.PI` | Valor de π (pi ≈ 3.14159...) | 15 | | `Math.E` | Base del logaritmo natural (≈ 2.718)| 16 | | `Math.LN2` | Logaritmo natural de 2 | 17 | | `Math.LN10` | Logaritmo natural de 10 | 18 | | `Math.SQRT2` | Raíz cuadrada de 2 | 19 | 20 | 21 | # Métodos más usados 22 | 23 | ## Redondeo 24 | 25 | ```javascript 26 | Math.round(4.5); // 5 → redondea al entero más cercano 27 | Math.floor(4.9); // 4 → redondea hacia abajo 28 | Math.ceil(4.1); // 5 → redondea hacia arriba 29 | Math.trunc(4.7); // 4 → elimina decimales 30 | ``` 31 | 32 | ## Mínimo y máximo 33 | 34 | ```javascript 35 | Math.max(3, 7, 1); // 7 36 | Math.min(3, 7, 1); // 1 37 | ``` 38 | 39 | ## Aleatorios 40 | 41 | ```javascript 42 | Math.random(); // número aleatorio entre 0 y 1 43 | Math.floor(Math.random() * 10); // número aleatorio entre 0 y 9 44 | ``` 45 | 46 | ## Potencias y raíces 47 | 48 | ```javascript 49 | Math.pow(2, 3); // 8 (2^3) 50 | Math.sqrt(16); // 4 51 | Math.cbrt(27); // 3 (raíz cúbica) 52 | ``` 53 | 54 | ## Valores absolutos 55 | 56 | ```javascript 57 | Math.abs(-10); // 10 58 | ``` 59 | 60 | ## Trigonometría 61 | 62 | ```javascript 63 | Math.sin(0); // 0 64 | Math.cos(Math.PI); // -1 65 | Math.tan(Math.PI / 4); // ≈ 1 66 | ``` -------------------------------------------------------------------------------- /Ciencias de la Computación/Inteligencia Artificial/Fundamentos/Introducción/4. El aprendizaje automático.md: -------------------------------------------------------------------------------- 1 | ## Definición General de Datos 2 | 3 | Los **datos** son representaciones simbólicas de hechos, conceptos o instrucciones… 4 | 5 | --- 6 | 7 | ## Clasificación de Datos por Estructura 8 | 9 | La clasificación más fundamental se basa en su nivel de estructura y organización. 10 | 11 | ### Datos Estructurados 12 | 13 | - Definición 14 | - Características principales 15 | - Ejemplos: bases de datos relacionales, hojas de cálculo, CSV/TSV, sensores IoT 16 | - Ventajas 17 | - Limitaciones 18 | 19 | ### Datos Semiestructurados 20 | 21 | - Definición 22 | - Características principales 23 | - Ejemplos: XML, JSON, YAML, datos de redes sociales 24 | - Ventajas 25 | - Desafíos 26 | 27 | ### Datos No Estructurados 28 | 29 | - Definición 30 | - Características principales 31 | - Categorías: texto libre, multimedia, contenido web, datos científicos 32 | - Volumen y distribución 33 | - Crecimiento exponencial 34 | 35 | --- 36 | 37 | ## Análisis de datos no estructurados 38 | 39 | ### La Complejidad del Procesamiento 40 | 41 | Los datos no estructurados presentan desafíos únicos. 42 | 43 | ### Desafíos Principales 44 | 45 | - Ausencia de esquema predefinido 46 | - Ambigüedad semántica 47 | - Variabilidad lingüística 48 | - Ruido y calidad variable 49 | - Escalabilidad y volumen 50 | - Contextualización temporal y cultural 51 | 52 | ### Limitaciones de Herramientas Tradicionales 53 | 54 | - Bases de datos relacionales 55 | - Hojas de cálculo tradicionales 56 | - Herramientas de BI tradicionales 57 | 58 | ### Oportunidades y Valor en Datos No Estructurados 59 | 60 | - Insights únicos disponibles: sentimiento, contexto detallado, tendencias emergentes 61 | - Ventajas competitivas: comprensión profunda del cliente, innovación basada en insights, detección temprana de tendencias 62 | 63 | --- 64 | -------------------------------------------------------------------------------- /Ciencias de la Computación/Inteligencia Artificial/Fundamentos/Introducción/3. Problema de los datos no estructurados.md: -------------------------------------------------------------------------------- 1 | ## Definición General de Datos 2 | 3 | Los **datos** son representaciones simbólicas de hechos, conceptos o instrucciones… 4 | 5 | --- 6 | 7 | ## Clasificación de Datos por Estructura 8 | 9 | La clasificación más fundamental se basa en su nivel de estructura y organización. 10 | 11 | ### Datos Estructurados 12 | 13 | - Definición 14 | - Características principales 15 | - Ejemplos: bases de datos relacionales, hojas de cálculo, CSV/TSV, sensores IoT 16 | - Ventajas 17 | - Limitaciones 18 | 19 | ### Datos Semiestructurados 20 | 21 | - Definición 22 | - Características principales 23 | - Ejemplos: XML, JSON, YAML, datos de redes sociales 24 | - Ventajas 25 | - Desafíos 26 | 27 | ### Datos No Estructurados 28 | 29 | - Definición 30 | - Características principales 31 | - Categorías: texto libre, multimedia, contenido web, datos científicos 32 | - Volumen y distribución 33 | - Crecimiento exponencial 34 | 35 | --- 36 | 37 | ## Análisis de datos no estructurados 38 | 39 | ### La Complejidad del Procesamiento 40 | 41 | Los datos no estructurados presentan desafíos únicos. 42 | 43 | ### Desafíos Principales 44 | 45 | - Ausencia de esquema predefinido 46 | - Ambigüedad semántica 47 | - Variabilidad lingüística 48 | - Ruido y calidad variable 49 | - Escalabilidad y volumen 50 | - Contextualización temporal y cultural 51 | 52 | ### Limitaciones de Herramientas Tradicionales 53 | 54 | - Bases de datos relacionales 55 | - Hojas de cálculo tradicionales 56 | - Herramientas de BI tradicionales 57 | 58 | ### Oportunidades y Valor en Datos No Estructurados 59 | 60 | - Insights únicos disponibles: sentimiento, contexto detallado, tendencias emergentes 61 | - Ventajas competitivas: comprensión profunda del cliente, innovación basada en insights, detección temprana de tendencias 62 | 63 | --- 64 | -------------------------------------------------------------------------------- /Programación/Sistemas Operativos/Linux/Otros/Router Linux/Router Linux.md: -------------------------------------------------------------------------------- 1 | ## Configuración de las tarjetas de red 2 | 3 | Configurar dos tarjetas de red en la máquina virtual: 4 | 5 | - **Adaptador Puente** 6 | - **Red Interna** 7 | 8 | ![[Programación/Sistemas Operativos/Linux/Otros/Router Linux/Imagen1.png]] 9 | 10 | Luego, editamos el siguiente archivo: 11 | 12 | ```bash 13 | sudo nano /etc/netplan/00-installer-config.yaml 14 | ``` 15 | 16 | Y copiamos el siguiente código: 17 | 18 | ```bash 19 | network: 20 | ethernets: 21 | enp0s3: 22 | dhcp4: true 23 | enp0s8: 24 | addresses: [10.10.10.1/24] 25 | #gateway4: 192.168.1.1 26 | nameservers: 27 | addresses: [8.8.8.8, 8.8.4.4] 28 | version: 2 29 | ``` 30 | 31 | ![[Programación/Sistemas Operativos/Linux/Otros/Router Linux/Imagen2.png]] 32 | 33 | Aplicamos los cambios: 34 | 35 | ```bash 36 | sudo netplan apply 37 | ip rou 38 | ``` 39 | 40 | ## Habilitar IP Forwarding 41 | 42 | ```bash 43 | sudo cat /proc/sys/net/ipv4/ip_forward 44 | sudo nano /etc/sysctl.conf # 45 | ``` 46 | 47 | descomentamos la siguiente línea de código 48 | 49 | ![[Programación/Sistemas Operativos/Linux/Otros/Router Linux/Imagen3.png]] 50 | 51 | aplicamos los cambios: 52 | 53 | ```bash 54 | sudo sysctl -p /etc/sysctl.conf 55 | sudo cat /proc/sys/net/ipv4/ip_forward 56 | ``` 57 | 58 | ## Configuración de Iptables 59 | 60 | ```bash 61 | sudo iptables -L 62 | sudo iptables -L -nv -t nat 63 | sudo iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE 64 | sudo apt-get install iptables-persistent 65 | sudo netfilter-persistent save 66 | ``` 67 | 68 | Luego de esto configurar otra máquina virtual con red interna y poner la puerta de enlace la IP de la red interna del router Linux. 69 | 70 | ```bash 71 | auto eth2 72 | iface eth2 inet static 73 | address 10.10.10.2 74 | netmask 255.255.255.0 75 | gateway 10.10.10.1 76 | ``` -------------------------------------------------------------------------------- /Programación/Kotlin/1. Fundamentos.md: -------------------------------------------------------------------------------- 1 | El programa más básico en cualquier lenguaje es el famoso **Hola Mundo**. En Kotlin, este programa sirve para familiarizarnos con la estructura básica del lenguaje y cómo ejecutar código. 2 | 3 | ## Conceptos Clave 4 | 5 | - Kotlin tiene una función principal llamada `main`, que es el punto de entrada de la aplicación. 6 | - `println()` se usa para imprimir texto en la consola. 7 | - `readLine()` permite capturar entrada del usuario desde la consola. 8 | 9 | ### Ejemplo: 10 | 11 | ```kotlin 12 | fun main() { 13 | println("Hola, mundo!") 14 | } 15 | ``` 16 | 17 | - `fun` es la palabra clave para definir una función. 18 | - `main()` es la función principal. Kotlin no necesita parámetros obligatorios para esta función, pero puedes usarlos si lo deseas. 19 | - `println()` imprime texto en la consola y hace un salto de línea al final. 20 | 21 | ### Ejemplo con entrada del usuario 22 | 23 | ```kotlin 24 | fun main() { 25 | print("¿Cómo te llamas? ") 26 | val nombre = readLine() 27 | println("Hola, $nombre!") 28 | } 29 | ``` 30 | 31 | - `readLine()` lee una línea desde la entrada estándar (teclado). 32 | - La entrada siempre se interpreta como `String?` (puede ser `null`), por lo que si haces operaciones más complejas, es recomendable validarla o convertirla. 33 | 34 | ### Cómo Ejecutarlo 35 | 36 | Si tienes el compilador de Kotlin instalado y agregado al `PATH`, guarda el archivo como `HolaMundo.kt` y ejecútalo con: 37 | 38 | ```bash 39 | kotlinc HolaMundo.kt -include-runtime -d HolaMundo.jar 40 | java -jar HolaMundo.jar 41 | ``` 42 | 43 | ### Alternativa (Kotlin Script) 44 | 45 | También puedes ejecutarlo directamente como script: 46 | 47 | ```bash 48 | kotlinc -script HolaMundo.kts 49 | ``` 50 | 51 | En ese caso, usa extensión `.kts` y no necesitas `fun main()`, por ejemplo: 52 | 53 | ```kotlin 54 | print("Ingresa tu nombre: ") 55 | val nombre = readLine() 56 | println("¡Hola, $nombre!") 57 | ``` -------------------------------------------------------------------------------- /Ciencias de la Computación/Data Engineering/Databricks/1. The Databricks Story.md: -------------------------------------------------------------------------------- 1 | ## Historia y Fundación 2 | 3 | **Databricks** fue fundada en 2013 por los creadores originales de Apache Spark en UC Berkeley. 4 | Fundadores: 5 | 6 | - Ali Ghodsi (CEO) 7 | - Matei Zaharia (CTO) 8 | - Ion Stoica 9 | - Patrick Wendell 10 | - Reynold Xin 11 | - Andy Konwinski 12 | - Scott Shenker 13 | 14 | --- 15 | 16 | ## Misión y Visión 17 | 18 | - **Misión**: Democratizar la inteligencia artificial y el análisis de datos para todas las organizaciones. 19 | - **Visión**: Crear una plataforma unificada que permita extraer valor de los datos de manera eficiente y escalable. 20 | 21 | --- 22 | 23 | ## Evolución Tecnológica 24 | 25 | ### Fase 1: Apache Spark (2009–2013) 26 | 27 | - Desarrollo del motor de procesamiento distribuido 28 | - Superación de limitaciones de Hadoop MapReduce 29 | - Procesamiento en memoria para mayor velocidad 30 | 31 | ### Fase 2: Databricks Platform (2013–2018) 32 | 33 | - Creación de la plataforma en la nube 34 | - Integración con AWS, Azure y GCP 35 | - Desarrollo de notebooks colaborativos 36 | 37 | ### Fase 3: Lakehouse Architecture (2018–presente) 38 | 39 | - Introducción del concepto de **Data Lakehouse** 40 | - Unificación de data warehouses y data lakes 41 | - Desarrollo de **Delta Lake** 42 | 43 | --- 44 | 45 | ## Impacto en la Industria 46 | 47 | - **Simplicidad**: reducción de la complejidad en big data 48 | - **Colaboración**: notebooks para trabajo en equipo 49 | - **Rendimiento**: optimizaciones automáticas y caching inteligente 50 | - **Escalabilidad**: manejo de petabytes de datos 51 | 52 | --- 53 | 54 | ✅ Ahora tu archivo está listo para Obsidian: 55 | 56 | - Sin título repetido al inicio. 57 | - Con jerarquía clara y progresiva. 58 | - Bloques y listas organizados para máxima legibilidad. 59 | 60 | ¿Quieres que te prepare también un **índice automático (tabla de contenidos)** al inicio de este archivo para navegar rápido entre historia, misión, evolución e impacto en Obsidian? 61 | -------------------------------------------------------------------------------- /Programación/Bash Scripting/11. Expresiones Regulares.md: -------------------------------------------------------------------------------- 1 | # Uso con grep 2 | 3 | ```bash 4 | #!/bin/bash 5 | 6 | # Búsqueda básica 7 | grep "patrón" archivo.txt 8 | 9 | # Búsqueda con expresiones regulares 10 | grep -E "^[0-9]+$" archivo.txt # Solo números 11 | grep -E "^[a-zA-Z]+@[a-zA-Z]+\.[a-zA-Z]+$" archivo.txt # Email básico 12 | grep -E "^[0-9]{3}-[0-9]{3}-[0-9]{4}$" archivo.txt # Teléfono 13 | 14 | # Función para validar email 15 | validar_email() { 16 | local email=$1 17 | if [[ $email =~ ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ ]]; then 18 | echo "Email válido: $email" 19 | return 0 20 | else 21 | echo "Email inválido: $email" 22 | return 1 23 | fi 24 | } 25 | 26 | # Función para validar teléfono 27 | validar_telefono() { 28 | local telefono=$1 29 | if [[ $telefono =~ ^[0-9]{3}-[0-9]{3}-[0-9]{4}$ ]]; then 30 | echo "Teléfono válido: $telefono" 31 | return 0 32 | else 33 | echo "Teléfono inválido: $telefono" 34 | return 1 35 | fi 36 | } 37 | 38 | # Ejemplos de uso 39 | validar_email "usuario@ejemplo.com" 40 | validar_email "email_invalido" 41 | validar_telefono "123-456-7890" 42 | validar_telefono "123456789" 43 | ``` 44 | 45 | --- 46 | 47 | # Manipulación de Texto 48 | 49 | ```bash 50 | #!/bin/bash 51 | 52 | # Reemplazar texto 53 | sed 's/antiguo/nuevo/g' archivo.txt 54 | 55 | # Extraer información específica 56 | awk '{print $1}' archivo.txt # Primera columna 57 | awk -F',' '{print $2}' archivo.csv # Segunda columna de CSV 58 | 59 | # Función para limpiar datos 60 | limpiar_datos() { 61 | local archivo=$1 62 | 63 | # Eliminar líneas vacías 64 | sed -i '/^$/d' "$archivo" 65 | 66 | # Eliminar espacios al inicio y final 67 | sed -i 's/^[ \t]*//;s/[ \t]*$//' "$archivo" 68 | 69 | echo "Datos limpiados en $archivo" 70 | } 71 | 72 | # Función para extraer URLs 73 | extraer_urls() { 74 | local archivo=$1 75 | grep -oE 'https?://[^[:space:]]+' "$archivo" 76 | } 77 | ``` 78 | 79 | --- 80 | 81 | -------------------------------------------------------------------------------- /Programación/Bash Scripting/8. Bucles.md: -------------------------------------------------------------------------------- 1 | # Bucle for 2 | 3 | ```bash 4 | #!/bin/bash 5 | 6 | # Bucle for con rango 7 | echo "Contando del 1 al 5:" 8 | for i in {1..5}; do 9 | echo "Número: $i" 10 | done 11 | 12 | # Bucle for con lista 13 | echo "Frutas:" 14 | for fruta in manzana banana naranja; do 15 | echo "- $fruta" 16 | done 17 | 18 | # Bucle for con archivos 19 | echo "Archivos .txt en el directorio:" 20 | for archivo in *.txt; do 21 | if [ -f "$archivo" ]; then 22 | echo "- $archivo" 23 | fi 24 | done 25 | 26 | # Bucle for estilo C 27 | echo "Bucle estilo C:" 28 | for ((i=1; i<=5; i++)); do 29 | echo "Iteración $i" 30 | done 31 | ``` 32 | 33 | --- 34 | 35 | # Bucle while 36 | 37 | ```bash 38 | #!/bin/bash 39 | 40 | # Bucle while básico 41 | contador=1 42 | while [ $contador -le 5 ]; do 43 | echo "Contador: $contador" 44 | ((contador++)) 45 | done 46 | 47 | # Bucle while con lectura de archivo 48 | echo "Leyendo archivo línea por línea:" 49 | while IFS= read -r linea; do 50 | echo "Línea: $linea" 51 | done < archivo.txt 52 | 53 | # Bucle while infinito con break 54 | contador=1 55 | while true; do 56 | echo "Iteración $contador" 57 | if [ $contador -eq 3 ]; then 58 | echo "Saliendo del bucle" 59 | break 60 | fi 61 | ((contador++)) 62 | done 63 | ``` 64 | 65 | --- 66 | 67 | # Bucle until 68 | 69 | ```bash 70 | #!/bin/bash 71 | 72 | # Bucle until (contrario a while) 73 | contador=1 74 | until [ $contador -gt 5 ]; do 75 | echo "Contador: $contador" 76 | ((contador++)) 77 | done 78 | ``` 79 | 80 | --- 81 | 82 | # Control de Bucles 83 | 84 | ```bash 85 | #!/bin/bash 86 | 87 | # Uso de break y continue 88 | for i in {1..10}; do 89 | if [ $i -eq 5 ]; then 90 | echo "Saltando el 5" 91 | continue 92 | fi 93 | 94 | if [ $i -eq 8 ]; then 95 | echo "Terminando en 8" 96 | break 97 | fi 98 | 99 | echo "Número: $i" 100 | done 101 | ``` 102 | 103 | --- 104 | -------------------------------------------------------------------------------- /Programación/C Sharp/10. Constantes.md: -------------------------------------------------------------------------------- 1 | En C#, una **constante** es una variable cuyo valor **no puede cambiar durante la ejecución del programa**. Se usa cuando un dato es **fijo e inmutable** (ej. el número PI, días de la semana, IVA). 2 | 3 | --- 4 | 5 | ## Sintaxis 6 | 7 | ```csharp 8 | const NOMBRE = valor; 9 | ``` 10 | 11 | - `const` → palabra clave para declarar la constante. 12 | - `tipo` → tipo de dato (`int`, `double`, `string`, etc.). 13 | - `NOMBRE` → el nombre de la constante, por convención en **MAYÚSCULAS**. 14 | - `valor` → debe asignarse al momento de la declaración. 15 | 16 | --- 17 | 18 | ## Ejemplo básico 19 | 20 | ```csharp 21 | const double PI = 3.1416; 22 | const int DIAS_SEMANA = 7; 23 | const string MENSAJE = "Bienvenido"; 24 | 25 | Console.WriteLine("El valor de PI es: " + PI); 26 | Console.WriteLine("Una semana tiene " + DIAS_SEMANA + " días."); 27 | Console.WriteLine(MENSAJE); 28 | ``` 29 | 30 | --- 31 | 32 | ## Reglas importantes 33 | 34 | 1. **Siempre deben inicializarse** al declararse. 35 | 36 | ```csharp 37 | const int x; // ❌ Error 38 | const int y = 10; // ✅ Correcto 39 | ``` 40 | 41 | 2. **No se pueden modificar después**. 42 | 43 | ```csharp 44 | const int EDAD = 18; 45 | // EDAD = 20; ❌ Error 46 | ``` 47 | 48 | 3. Pueden ser de **tipos primitivos o string**. 49 | 50 | ```csharp 51 | const bool ACTIVO = true; 52 | const char INICIAL = 'A'; 53 | ``` 54 | 55 | 4. Se recomiendan para valores **universales e inmutables**. 56 | 57 | --- 58 | 59 | ## Constantes en Clases 60 | 61 | ```csharp 62 | class Matematica 63 | { 64 | public const double PI = 3.1416; 65 | public const double E = 2.718; 66 | } 67 | ``` 68 | 69 | Uso: 70 | 71 | ```csharp 72 | Console.WriteLine(Matematica.PI); // 3.1416 73 | ``` 74 | 75 | --- 76 | 77 | ## Diferencia entre const y readonly 78 | 79 | - `const` → valor fijo en **tiempo de compilación**. 80 | - `readonly` → valor fijo en **tiempo de ejecución**. 81 | 82 | ```csharp 83 | readonly int anio = DateTime.Now.Year; // ✅ válido 84 | const int anio = DateTime.Now.Year; // ❌ Error 85 | ``` 86 | 87 | --- 88 | -------------------------------------------------------------------------------- /Programación/Sistemas Operativos/Linux/Fundamentos/2. Aplicaciones de código abierto y Licencias.md: -------------------------------------------------------------------------------- 1 | # ¿Qué es el código abierto? 2 | 3 | El software de código abierto es aquel cuyo código fuente está disponible públicamente para ser estudiado, modificado y distribuido por cualquier persona. 4 | 5 | ## Principios del código abierto 6 | 7 | 1. **Libertad de uso**: Usar el software para cualquier propósito 8 | 2. **Libertad de estudio**: Acceder y estudiar el código fuente 9 | 3. **Libertad de modificación**: Modificar el software según necesidades 10 | 4. **Libertad de distribución**: Compartir copias del software original o modificado 11 | 12 | ## Tipos de licencias 13 | 14 | ### Licencias Copyleft 15 | 16 | **GPL (General Public License)** 17 | 18 | - Garantiza que el software y sus derivados permanezcan libres 19 | - Cualquier trabajo derivado debe distribuirse bajo la misma licencia 20 | - Versiones: GPLv2, GPLv3 21 | 22 | **LGPL (Lesser General Public License)** 23 | 24 | - Permite vincular con software propietario 25 | - Menos restrictiva que GPL 26 | 27 | ### Licencias Permisivas 28 | 29 | **MIT License** 30 | 31 | - Muy permisiva 32 | - Permite uso comercial sin restricciones 33 | - Solo requiere mantener el aviso de copyright 34 | 35 | **Apache License** 36 | 37 | - Permite uso comercial 38 | - Incluye protección de patentes 39 | - Requiere mantener avisos de copyright 40 | 41 | **BSD License** 42 | 43 | - Muy permisiva 44 | - Permite redistribución con o sin modificaciones 45 | - Versiones: 2-clause, 3-clause 46 | 47 | ## Ventajas del código abierto 48 | 49 | - **Transparencia**: Código visible para auditoría 50 | - **Colaboración**: Desarrollo comunitario 51 | - **Personalización**: Adaptable a necesidades específicas 52 | - **Costo**: Generalmente gratuito 53 | - **Innovación**: Desarrollo rápido y creativo 54 | 55 | ## Aplicaciones de código abierto populares 56 | 57 | - **Navegadores**: Firefox, Chromium 58 | - **Editores**: Visual Studio Code, Vim, Emacs 59 | - **Servidores web**: Apache, Nginx 60 | - **Bases de datos**: MySQL, PostgreSQL 61 | - **Oficina**: LibreOffice 62 | - **Multimedia**: VLC, GIMP -------------------------------------------------------------------------------- /Ciencias de la Computación/Inteligencia Artificial/Fundamentos/Aprendizaje Automático y Profundo/5. Tendencias Futuras de la IA.md: -------------------------------------------------------------------------------- 1 | ## ¿Adónde va la IA desde aquí? 2 | 3 | ### El estado actual: Punto de inflexión histórico 4 | 5 | #### Revolución en marcha 6 | 7 | Indicadores de aceleración: 8 | 9 | - Capacidades emergentes 10 | - Convergencia multimodal 11 | - Generalización sorprendente 12 | - Escalabilidad exponencial 13 | 14 | #### El efecto de las "leyes de escala" 15 | 16 | - Más parámetros 17 | - Más datos 18 | - Más computación 19 | 20 | ### Direcciones principales de investigación 21 | 22 | - Hacia la Inteligencia Artificial General (AGI) 23 | - Investigación en eficiencia y escalabilidad 24 | - Multimodalidad y comprensión holística 25 | - Razonamiento y planificación avanzada 26 | 27 | ### Predicciones temporales de los investigadores 28 | 29 | - Próximos 2–5 años (2025–2028) 30 | - Mediano plazo: 5–15 años (2028–2038) 31 | - Largo plazo: 15+ años (2038+) 32 | 33 | ### Factores que influencian la velocidad de desarrollo 34 | 35 | - Avances en hardware 36 | - Disponibilidad de datos 37 | - Inversión y recursos 38 | - Talento y colaboración 39 | 40 | --- 41 | 42 | ## ¿Qué nos depara el futuro? 43 | 44 | ### Transformación de sectores clave 45 | 46 | - Salud y medicina 47 | - Educación 48 | - Trabajo y productividad 49 | 50 | ### Mejora de la calidad de vida cotidiana 51 | 52 | - Hogares inteligentes 53 | - Transporte revolucionado 54 | - Entretenimiento inmersivo 55 | 56 | ### Solución de problemas globales 57 | 58 | - Crisis climática y sostenibilidad 59 | - Pobreza y desigualdad 60 | - Exploración espacial y fronteras científicas 61 | 62 | --- 63 | 64 | ## ¿Qué hay de su futuro? 65 | 66 | ### Impacto personal de la IA avanzada 67 | 68 | - Tu vida profesional transformada 69 | - Habilidades del futuro personal 70 | - Tu vida personal enriquecida 71 | 72 | ### Preparándote para el futuro IA 73 | 74 | - Estrategias de adaptación personal 75 | - Planificación de carrera inteligente 76 | 77 | ### El aspecto social de tu futuro con IA 78 | 79 | - Relaciones en la era IA 80 | - Ciudadanía en sociedad IA 81 | 82 | --- 83 | -------------------------------------------------------------------------------- /Programación/Desarrollo Web/Front-End/Javascript/18. Try Cach.md: -------------------------------------------------------------------------------- 1 | El bloque **`try...catch`** se utiliza para manejar errores en JavaScript y evitar que el programa se detenga cuando ocurre una excepción. 2 | 3 | ## Sintaxis básica 4 | 5 | ```javascript 6 | try { 7 | // Código que puede causar un error 8 | } catch (error) { 9 | // Código que maneja el error 10 | } 11 | ``` 12 | 13 | Ejemplo básico 14 | 15 | ```javascript 16 | try { 17 | let x = y + 5; // ❌ Error: y no está definida 18 | } catch (error) { 19 | console.log("Ocurrió un error:", error.message); 20 | } 21 | ``` 22 | 23 | Salida en consola: 24 | 25 | ```vbnet 26 | Ocurrió un error: y is not defined 27 | ``` 28 | 29 | ## Ejemplo con finally 30 | 31 | El bloque **`finally`** se ejecuta siempre, haya o no error. 32 | 33 | ```javascript 34 | try { 35 | console.log("Intentando ejecutar código..."); 36 | let resultado = 10 / 2; 37 | console.log("Resultado:", resultado); 38 | } catch (error) { 39 | console.log("Error detectado:", error.message); 40 | } finally { 41 | console.log("Finalizó el bloque try...catch"); 42 | } 43 | ``` 44 | 45 | Salida: 46 | 47 | ```vbnet 48 | Intentando ejecutar código... 49 | Resultado: 5 50 | Finalizó el bloque try...catch 51 | ``` 52 | 53 | ## Lanzar errores con `throw` 54 | 55 | Puedes lanzar tus propios errores con `throw`. 56 | 57 | ```javascript 58 | function dividir(a, b) { 59 | if (b === 0) { 60 | throw new Error("No se puede dividir entre 0 ❌"); 61 | } 62 | return a / b; 63 | } 64 | 65 | try { 66 | console.log(dividir(10, 0)); 67 | } catch (error) { 68 | console.error("Error atrapado:", error.message); 69 | } 70 | ``` 71 | 72 | Salida: 73 | 74 | ```yaml 75 | Error atrapado: No se puede dividir entre 0 ❌ 76 | ``` 77 | 78 | Ejemplo con JSON y error de parseo 79 | 80 | ```javascript 81 | let texto = "{ nombre: 'Juan' }"; // ❌ JSON inválido 82 | 83 | try { 84 | let datos = JSON.parse(texto); 85 | console.log(datos.nombre); 86 | } catch (error) { 87 | console.error("Error al parsear JSON:", error.message); 88 | } 89 | ``` 90 | 91 | Salida: 92 | 93 | ```javascript 94 | Error al parsear JSON: Unexpected token n in JSON at position 2 95 | ``` 96 | -------------------------------------------------------------------------------- /Ciencias de la Computación/Inteligencia Artificial/Fundamentos/Procesamiento/3. NLP convierte señales en significado.md: -------------------------------------------------------------------------------- 1 | ## Estructura de un chatbot 2 | 3 | ### ¿Qué es un chatbot inteligente? 4 | 5 | Un chatbot inteligente utiliza NLP para mantener conversaciones coherentes con usuarios humanos. 6 | 7 | ### Arquitectura general 8 | 9 | - Usuario → Interfaz → NLU → Gestor de diálogo → NLG → Interfaz → Usuario 10 | 11 | ### Tipos de chatbots 12 | 13 | - Basados en reglas 14 | - Basados en machine learning 15 | - Híbridos 16 | 17 | ### Componentes detallados 18 | 19 | - Frontend: interfaz de usuario 20 | - Middleware: procesamiento de diálogo 21 | - Backend: servicios y datos 22 | 23 | --- 24 | 25 | ## El backend del chatbot 26 | 27 | ### Arquitectura técnica 28 | 29 | - Módulo de preprocesamiento 30 | - Módulo NLU (intenciones, entidades, sentimientos) 31 | - Gestor de diálogo 32 | - Motor de lógica de negocio 33 | - Módulo NLG (plantillas y generación neuronal) 34 | - Sistema de aprendizaje y mejora continua 35 | 36 | ### Integración con sistemas externos 37 | 38 | - APIs y microservicios 39 | - Bases de datos y almacenamiento 40 | 41 | --- 42 | 43 | ## Intenciones, entidades y diálogo 44 | 45 | ### Comprensión profunda de intenciones 46 | 47 | - Informativas 48 | - Transaccionales 49 | - Conversacionales 50 | - De soporte 51 | 52 | ### Extracción avanzada de entidades 53 | 54 | - Simples 55 | - Compuestas 56 | - Relacionales 57 | - Técnicas avanzadas: NER contextual, entity linking 58 | 59 | ### Gestión avanzada del diálogo 60 | 61 | - Estados: inicial, recolección de información, confirmación, ejecución 62 | - Estrategias: slot filling, manejo de interrupciones, recuperación de errores 63 | 64 | --- 65 | 66 | ## Ejemplo de análisis NLP 67 | 68 | ### Caso práctico: reservas de restaurante 69 | 70 | - Conversación paso a paso 71 | - Preprocesamiento 72 | - Análisis NLU (intenciones y entidades) 73 | - Gestión de diálogo 74 | - Generación de respuesta (NLG) 75 | - Procesamiento temporal y preferencias 76 | - Motor de búsqueda semántica 77 | - Scoring multifactorial 78 | - Generación de respuesta final personalizada 79 | - Métricas de evaluación (NLU y diálogo) 80 | 81 | --- -------------------------------------------------------------------------------- /Programación/Desarrollo Web/Front-End/Javascript/4. Tipos de Datos.md: -------------------------------------------------------------------------------- 1 | JavaScript tiene diferentes tipos de datos, que se pueden clasificar en dos categorías principales: **tipos primitivos** y **tipos no primitivos** (objetos). 2 | 3 | ## Tipos Primitivos 4 | 5 | Los tipos primitivos son valores inmutables. Cuando se asigna un valor a una variable, el valor es copiado directamente. 6 | 7 | ### **`String`** 8 | 9 | - **Qué es**: Representa secuencias de caracteres (texto). 10 | - **Ejemplo**: 11 | 12 | ```javascript 13 | let saludo = "Hola, mundo"; 14 | console.log(saludo); // "Hola, mundo" 15 | ``` 16 | 17 | 18 | ### **`Number`** 19 | 20 | - **Qué es**: Representa valores numéricos, tanto enteros como decimales. 21 | - **Ejemplo**: 22 | 23 | ```javascript 24 | let edad = 25; 25 | let precio = 19.99; 26 | console.log(edad); // 25 27 | console.log(precio); // 19.99 28 | ``` 29 | 30 | 31 | ### **`Boolean`** 32 | 33 | - **Qué es**: Representa un valor de verdad, puede ser `true` o `false`. 34 | - **Ejemplo**: 35 | 36 | ```javascript 37 | let esMayorDeEdad = true; 38 | console.log(esMayorDeEdad); // true 39 | ``` 40 | 41 | 42 | ### **`Undefined`** 43 | 44 | - **Qué es**: Indica que una variable ha sido declarada pero no tiene valor asignado. 45 | - **Ejemplo**: 46 | 47 | ```javascript 48 | let nombre; 49 | console.log(nombre); // undefined 50 | ``` 51 | 52 | 53 | ### **`Null`** 54 | 55 | - **Qué es**: Representa la ausencia intencional de valor o la falta de objeto. 56 | - **Ejemplo**: 57 | 58 | ```javascript 59 | let persona = null; 60 | console.log(persona); // null 61 | ``` 62 | 63 | 64 | ### **`Symbol`** 65 | 66 | - **Qué es**: Representa un valor único e inmutable. Usado para crear identificadores únicos para propiedades de objetos. 67 | - **Ejemplo**: 68 | 69 | ```javascript 70 | let simbolo = Symbol("identificador"); 71 | console.log(simbolo); // Symbol(identificador) 72 | ``` 73 | 74 | 75 | ### **`BigInt`** 76 | 77 | - **Qué es**: Representa números enteros muy grandes que no pueden ser representados por el tipo `Number`. 78 | - **Ejemplo**: 79 | 80 | ```javascript 81 | let numeroGrande = 1234567890123456789012345678901234567890n; 82 | console.log(numeroGrande); // 1234567890123456789012345678901234567890n 83 | ``` -------------------------------------------------------------------------------- /Ciencias de la Computación/Big Data/Apache Spark I/3. Conjunto de Datos Distribuidos Resilientes (RDD).md: -------------------------------------------------------------------------------- 1 | ## Conjunto de Datos Distribuidos Resilientes (RDD) 2 | 3 | Los **RDD (Resilient Distributed Datasets)** son la abstracción fundamental de datos en Spark. 4 | 5 | --- 6 | 7 | ## Características 8 | 9 | 1. **Resilientes**: tolerantes a fallos mediante linaje de transformaciones 10 | 2. **Distribuidos**: particionados a través del clúster 11 | 3. **Inmutables**: no se pueden modificar una vez creados 12 | 4. **Evaluación perezosa**: las transformaciones se evalúan solo cuando se necesitan 13 | 14 | --- 15 | 16 | ## Creación de RDD 17 | 18 | ```python 19 | # Parallelizar una colección 20 | data = [1, 2, 3, 4, 5] 21 | rdd = sc.parallelize(data) 22 | 23 | # Desde archivo de texto 24 | rdd = sc.textFile("path/to/file.txt") 25 | 26 | # Desde archivo CSV 27 | rdd = sc.textFile("data.csv").map(lambda line: line.split(",")) 28 | ``` 29 | 30 | --- 31 | 32 | ## Operaciones sobre RDD 33 | 34 | ### Transformaciones (lazy evaluation) 35 | 36 | - `map()` → aplica una función a cada elemento 37 | - `filter()` → filtra elementos según condición 38 | - `flatMap()` → aplica función y aplana resultado 39 | - `union()` → une dos RDD 40 | - `distinct()` → elimina duplicados 41 | 42 | ### Acciones (trigger evaluation) 43 | 44 | - `collect()` → retorna todos los elementos al driver 45 | - `count()` → cuenta elementos 46 | - `first()` → retorna el primer elemento 47 | - `take(n)` → retorna los primeros n elementos 48 | - `reduce()` → agrega elementos con una función 49 | 50 | ```python 51 | numbers = sc.parallelize([1,2,3,4,5,6,7,8,9,10]) 52 | 53 | # Transformaciones 54 | even_numbers = numbers.filter(lambda x: x % 2 == 0) 55 | squared_numbers = even_numbers.map(lambda x: x ** 2) 56 | 57 | # Acción 58 | result = squared_numbers.collect() # [4, 16, 36, 64, 100] 59 | ``` 60 | 61 | --- 62 | 63 | ## Particionamiento de RDD 64 | 65 | El particionamiento afecta el rendimiento y la distribución de datos. 66 | 67 | ```python 68 | # Crear RDD con particiones específicas 69 | rdd = sc.parallelize(data, numSlices=4) 70 | 71 | # Verificar número de particiones 72 | print(rdd.getNumPartitions()) 73 | 74 | # Reparticionar 75 | rdd_repartitioned = rdd.repartition(8) 76 | ``` 77 | 78 | --- 79 | -------------------------------------------------------------------------------- /Ciencias de la Computación/Base de Datos/NoSQL/Redis/1. Fundamentos.md: -------------------------------------------------------------------------------- 1 | ## Introducción a Redis 2 | 3 | **Redis** (Remote Dictionary Server) es una base de datos en memoria, tipo **clave-valor**, de código abierto y con persistencia opcional. 4 | Se utiliza como base de datos, sistema de caché y broker de mensajes. 5 | 6 | --- 7 | 8 | ## Instalación de Redis 9 | 10 | ### Debian/Ubuntu 11 | 12 | ```bash 13 | sudo apt update 14 | sudo apt install redis-server 15 | ``` 16 | 17 | Verificar instalación: 18 | 19 | ```bash 20 | redis-cli ping 21 | # Respuesta esperada: PONG 22 | ``` 23 | 24 | ### Fedora/CentOS 25 | 26 | ```bash 27 | sudo dnf install redis 28 | sudo systemctl enable --now redis 29 | ``` 30 | 31 | ### macOS (Homebrew) 32 | 33 | ```bash 34 | brew install redis 35 | brew services start redis 36 | ``` 37 | 38 | --- 39 | 40 | ## Redis con Docker 41 | 42 | ### Imagen oficial 43 | 44 | ```bash 45 | docker run --name redis -p 6379:6379 -d redis 46 | ``` 47 | 48 | ### Con persistencia 49 | 50 | ```bash 51 | docker run --name redis \ 52 | -p 6379:6379 \ 53 | -v redis-data:/data \ 54 | -d redis redis-server --save 60 1 --loglevel warning 55 | ``` 56 | 57 | ### Probar conexión 58 | 59 | ```bash 60 | docker exec -it redis redis-cli 61 | ``` 62 | 63 | --- 64 | 65 | ## Conceptos Básicos de Redis 66 | 67 | |Concepto|Descripción| 68 | |---|---| 69 | |**Clave-Valor**|Almacena datos como pares clave/valor| 70 | |**In-Memory**|Los datos residen en RAM (muy rápido)| 71 | |**Persistencia**|Puede guardar datos en disco (RDB o AOF)| 72 | |**Tipos de datos**|Soporta múltiples estructuras más allá de strings| 73 | |**Monohilo**|Corre en un solo hilo, optimizado| 74 | 75 | --- 76 | 77 | ## Tipos de Datos en Redis 78 | 79 | |Tipo|Descripción|Ejemplo comando| 80 | |---|---|---| 81 | |`string`|Texto, número, binario|`SET clave valor` / `GET clave`| 82 | |`list`|Lista enlazada de strings|`LPUSH`, `RPUSH`, `LRANGE`| 83 | |`set`|Conjunto no ordenado de elementos únicos|`SADD`, `SMEMBERS`, `SREM`| 84 | |`hash`|Diccionario de pares campo-valor|`HSET`, `HGET`, `HGETALL`| 85 | |`zset`|Set ordenado con puntuación (score)|`ZADD`, `ZRANGE`, `ZREM`| 86 | |`bitmap`|Secuencia de bits|`SETBIT`, `GETBIT`| 87 | |`hyperloglog`|Conteo probabilístico de elementos|`PFADD`, `PFCOUNT`| 88 | 89 | --- 90 | -------------------------------------------------------------------------------- /Programación/Kotlin/5. Colecciones.md: -------------------------------------------------------------------------------- 1 | Kotlin proporciona un conjunto robusto de estructuras de datos llamadas **colecciones**. Estas se dividen principalmente en tres tipos: 2 | 3 | ## `List`: Lista ordenada 4 | 5 | Una `List` contiene elementos en un orden específico y puede tener duplicados. 6 | 7 | ### Inmutable (`listOf`) 8 | 9 | ```kotlin 10 | val frutas = listOf("Manzana", "Banana", "Uva") 11 | println(frutas[0]) // Manzana 12 | println("Total: ${frutas.size}") // 3 13 | ``` 14 | 15 | ### Mutable (`mutableListOf`) 16 | 17 | ```kotlin 18 | val numeros = mutableListOf(1, 2, 3) 19 | numeros.add(4) 20 | numeros.remove(2) 21 | println(numeros) // [1, 3, 4] 22 | ``` 23 | 24 | ## `Set`: Conjunto sin duplicados 25 | 26 | Un `Set` no permite elementos repetidos y no garantiza un orden específico. 27 | 28 | ### Inmutable (`listOf`) 29 | 30 | ```kotlin 31 | val letras = setOf("A", "B", "C", "A") 32 | println(letras) // [A, B, C] 33 | ``` 34 | 35 | ### Mutable (`mutableSetOf`) 36 | 37 | ```kotlin 38 | val set = mutableSetOf(1, 2, 3) 39 | set.add(3) // No se agrega porque ya existe 40 | set.add(4) 41 | println(set) // [1, 2, 3, 4] 42 | ``` 43 | 44 | ## `Map`: Pares clave - valor 45 | 46 | Un `Map` guarda pares `clave - valor`, como un diccionario. 47 | 48 | ### Inmutable (`mapOf`) 49 | 50 | ```kotlin 51 | val edades = mapOf("Sebastián" to 19, "Ana" to 21) 52 | println(edades["Sebastián"]) // 19 53 | ``` 54 | 55 | ### Mutable (`mutableMapOf`) 56 | 57 | ```kotlin 58 | val personas = mutableMapOf("Juan" to 30) 59 | personas["Lucía"] = 25 60 | personas.remove("Juan") 61 | println(personas) // {Lucía=25} 62 | ``` 63 | 64 | ### Recorrer colecciones 65 | 66 | Con `for`: 67 | 68 | ```kotlin 69 | val frutas = listOf("Manzana", "Banana", "Uva") 70 | for (fruta in frutas) { 71 | println(fruta) 72 | } 73 | ``` 74 | 75 | Con `forEach`: 76 | 77 | ```kotlin 78 | frutas.forEach { fruta -> 79 | println(fruta.uppercase()) 80 | } 81 | ``` 82 | 83 | ## Métodos útiles 84 | 85 | |Método|Tipo|Descripción| 86 | |---|---|---| 87 | |`.add()`|mutable|Agrega elemento| 88 | |`.remove()`|mutable|Elimina elemento| 89 | |`.contains(x)`|ambos|¿Contiene elemento?| 90 | |`.isEmpty()`|ambos|¿Está vacía?| 91 | |`.size`|ambos|Tamaño de la colección| 92 | |`.keys` / `.values`|Map|Devuelve claves o valores| 93 | -------------------------------------------------------------------------------- /Ciencias de la Computación/Inteligencia Artificial/Fundamentos/Introducción/1. Que es la IA.md: -------------------------------------------------------------------------------- 1 | ## Definición General 2 | 3 | La **Inteligencia Artificial (IA)** es una rama de la ciencia de la computación que se enfoca en crear sistemas capaces de realizar tareas que tradicionalmente requieren inteligencia humana. 4 | 5 | --- 6 | 7 | ## Características Principales de la IA 8 | 9 | - Aprendizaje automático 10 | - Procesamiento de información 11 | - Toma de decisiones 12 | - Interacción natural 13 | 14 | --- 15 | 16 | ## Diferencia entre IA e inteligencia aumentada 17 | 18 | ### Inteligencia Artificial (IA) 19 | 20 | - Definición y características 21 | - Ejemplos 22 | 23 | ### Inteligencia Aumentada 24 | 25 | - Definición y características 26 | - Ejemplos 27 | 28 | ### Comparación Directa 29 | 30 | |Aspecto|IA|Inteligencia Aumentada| 31 | |---|---|---| 32 | |Rol humano|Mínimo o inexistente|Central y activo| 33 | |Toma de decisiones|Automatizada|Humana con apoyo tecnológico| 34 | |Objetivo|Reemplazar tareas humanas|Potenciar capacidades humanas| 35 | |Control|Sistema autónomo|Usuario tiene control final| 36 | |Aplicación|Procesos rutinarios y definidos|Tareas complejas que requieren juicio| 37 | 38 | --- 39 | 40 | ## ¿Qué hace la IA? 41 | 42 | ### Aplicaciones por Sectores 43 | 44 | - Salud y medicina 45 | - Transporte y movilidad 46 | - Finanzas y banca 47 | - Educación 48 | - Entretenimiento y medios 49 | - Manufactura e industria 50 | 51 | --- 52 | 53 | ## ¿Qué predicciones puede hacer la IA? 54 | 55 | ### Tipos de Predicciones 56 | 57 | - Basadas en patrones 58 | - En tiempo real 59 | - Probabilísticas 60 | 61 | ### Aplicaciones Específicas 62 | 63 | - Clima y meteorología 64 | - Mercados financieros 65 | - Salud pública 66 | - Comportamiento del consumidor 67 | 68 | ### Limitaciones 69 | 70 | - Calidad de los datos 71 | - Cambios en patrones 72 | - Complejidad del mundo real 73 | 74 | --- 75 | 76 | ## ¿Cómo está evolucionando la IA? 77 | 78 | ### Los Tres Niveles de Predicción 79 | 80 | - IA Estrecha (Narrow AI) 81 | - IA Amplia (Broad AI) 82 | - IA General (AGI) 83 | 84 | ### Factores que impulsan la evolución 85 | 86 | - Tecnológicos 87 | - Económicos 88 | - Sociales 89 | 90 | ### Desafíos en la evolución 91 | 92 | - Técnicos 93 | - Éticos 94 | - Sociales 95 | 96 | --- 97 | -------------------------------------------------------------------------------- /Ciencias de la Computación/Inteligencia Artificial/Ingeniería de Prompts/3. Generación de Código con LLMs y Hugging Face.md: -------------------------------------------------------------------------------- 1 | ## Capacidades de Generación de Código 2 | 3 | ### Funcionalidades Principales 4 | 5 | - Generar código en múltiples lenguajes (Python, JavaScript, SQL, etc.) 6 | - Crear templates de prompts con variables 7 | - Explicar código existente 8 | - Optimizar y refactorizar código 9 | - Detectar errores y vulnerabilidades 10 | 11 | ### Ejemplo de Prompt para Código 12 | 13 | ``` 14 | Escribe un código en Python para encontrar la mediana de una lista de números. 15 | Explica tu razonamiento paso a paso antes de escribir el código. 16 | ``` 17 | 18 | ### Ventajas del Prompting de Código 19 | 20 | - **Ahorro de tiempo:** Evita escribir código desde cero 21 | - **Automatización:** Tareas repetitivas 22 | - **Accesibilidad:** Ayuda a principiantes (Copilot) 23 | - **Optimización:** Mejora código existente 24 | - **Compatibilidad:** Múltiples lenguajes de programación 25 | 26 | ### Desafíos y Limitaciones 27 | 28 | - **Código incorrecto:** Posibles alucinaciones 29 | - **Seguridad:** Vulnerabilidades potenciales 30 | - **Depuración:** Dificultad para encontrar errores 31 | - **Dependencia excesiva:** Riesgo de perder habilidades 32 | - **Limitaciones:** Código complejo puede ser problemático 33 | 34 | --- 35 | 36 | ## Modelos que Razonan 37 | 38 | ### Gemini 2.0 Flash Thinking 39 | 40 | - Capacidad de seguir lógica step-by-step 41 | - Resolución de problemas complejos 42 | - Comprensión de patrones avanzados 43 | 44 | **Ejemplo:** 45 | 46 | ``` 47 | Escribe un código en Python para encontrar la mediana de una lista de números. 48 | Explica tu razonamiento paso a paso antes de escribir el código. 49 | ``` 50 | 51 | --- 52 | 53 | ## Hugging Face 54 | 55 | ### ¿Qué es Hugging Face? 56 | 57 | - Plataforma y comunidad de Machine Learning Open Source 58 | - Acceso a modelos preentrenados (GPT, BERT, T5, Stable Diffusion) 59 | - Biblioteca Transformers 60 | - Integración con Google AI Studio, OpenAI, etc. 61 | 62 | ### Ventajas de Hugging Face 63 | 64 | - Acceso a los mejores modelos 65 | - Optimización y despliegue fácil 66 | - Fine-Tuning sencillo 67 | - Código abierto 68 | - Gran compatibilidad 69 | 70 | **Facilita el uso de IA avanzada** sin ser experto en deep learning. 71 | 72 | --- 73 | -------------------------------------------------------------------------------- /Ciencias de la Computación/Inteligencia Artificial/IA Generativa/5. Análisis de Archivos.md: -------------------------------------------------------------------------------- 1 | ## Análisis de Tablas Excel/CSV con IA 2 | 3 | ### Herramientas 4 | 5 | - **Pandas + OpenAI / LLMs**: Interpretación y consulta sobre DataFrames 6 | - **LangChain** o **ChatGPT Code Interpreter** para analizar archivos 7 | - Plataformas como: 8 | - ChatGPT con archivos cargados 9 | - Notebooks (Jupyter / Google Colab) con código asistido por IA 10 | 11 | ### Ejemplo de uso 12 | 13 | ```python 14 | import pandas as pd 15 | 16 | df = pd.read_csv("ventas.csv") 17 | print(df.describe()) 18 | 19 | # Luego preguntar a la IA: 20 | # "¿Cuál fue el producto más vendido en 2023?" 21 | ``` 22 | 23 | --- 24 | 25 | ## Análisis de PDFs con IA 26 | 27 | ### Herramientas 28 | 29 | - **PDFReader + LLM (ChatGPT, Claude, etc.)** 30 | - Bibliotecas de Python como `PyMuPDF`, `pdfplumber` o `LangChain` + `PDFLoader` 31 | - Plataformas con carga directa de PDFs (ChatGPT con opción de subir archivos) 32 | 33 | ### Ejemplo de uso 34 | 35 | ```python 36 | from langchain.document_loaders import PyPDFLoader 37 | 38 | loader = PyPDFLoader("contrato.pdf") 39 | pages = loader.load_and_split() 40 | 41 | # Consulta: 42 | # "Resume los puntos clave del contrato" o "¿Cuáles son las cláusulas de pago?" 43 | ``` 44 | 45 | --- 46 | 47 | ## Análisis de Imágenes con IA 48 | 49 | ### Herramientas 50 | 51 | - **GPT-4 con visión (multimodal)** 52 | - **CLIP (Contrastive Language-Image Pretraining)** 53 | - Plataformas como: 54 | - **DALL·E**, **Stable Diffusion** 55 | - **ChatGPT con entrada de imágenes** 56 | 57 | ### Ejemplo de uso 58 | 59 | > Subir una imagen y preguntar: 60 | > "¿Qué está ocurriendo en esta imagen?" 61 | > "Describe los objetos y posibles acciones" 62 | 63 | --- 64 | 65 | ## Análisis de Audios con IA 66 | 67 | ### Herramientas utilizadas 68 | 69 | - **Whisper (de OpenAI)** para transcripción de audio 70 | - **Speech-to-Text APIs** (Google, Azure, AssemblyAI, etc.) 71 | - Integración con LLMs para resumir o consultar la transcripción 72 | 73 | ### Ejemplo de uso 74 | 75 | ```bash 76 | # Usando Whisper en línea de comandos 77 | whisper archivo.mp3 --model medium --language Spanish 78 | ``` 79 | 80 | > Preguntar a la IA: 81 | > "Resume el audio en 3 frases" 82 | > "¿Qué temas se mencionan en la reunión?" 83 | 84 | --- 85 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 🧠 Vault de Conocimiento 2 | 3 | Repositorio personal de estudio y documentación autodidacta. Aquí organizo todo lo que aprendo en distintas áreas como programación, ciberseguridad, ciencia de datos, entre otros. 4 | 5 | ## ⚙️ Recomendación de uso 6 | 7 | Este repositorio fue estructurado para visualizarse y organizarse correctamente utilizando [**Obsidian**](https://obsidian.md/), una herramienta gratuita de notas basada en Markdown que permite crear conexiones entre ideas y navegar de forma eficiente por el conocimiento. 8 | 9 | ### ¿Cómo empezar? 10 | 11 | 1. Descarga **Obsidian** desde su sitio oficial: [https://obsidian.md](https://obsidian.md) 12 | 2. Abre la aplicación y selecciona la opción `Abrir carpeta como Vault`. 13 | 3. Elige la carpeta clonada de este repositorio para explorar todas las notas, conexiones y secciones. 14 | 15 | > También puedes ver los archivos directamente desde GitHub, pero se recomienda usar Obsidian para aprovechar al máximo su estructura, enlaces internos, visualización de gráficos y experiencia de navegación. 16 | 17 | --- 18 | 19 | ## 📚 Índice General 20 | 21 | ### Ciencias de la Computación 22 | 23 | Conocimientos técnicos y teóricos que forman la base del pensamiento computacional. 24 | 25 | #### Subcategorías: 26 | 27 | - **Big Data** 28 | - Fundamentos de Apache Spark I 29 | - Fundamentos de Big Data 30 | - Hadoop 31 | 32 | - **Base de Datos** 33 | - Redis 34 | - SQL 35 | 36 | - **Computación Cuántica** 37 | - Introducción a la Computación Cuántica 38 | 39 | - **Ciencia de Datos** 40 | - Pandas 41 | 42 | - **Data Engineering** 43 | - Databricks 44 | 45 | - **Inteligencia Artifical** 46 | - Fundamentos 47 | - AI Generativa 48 | - Ingeniería de Prompts 49 | 50 | --- 51 | 52 | 53 | ### Programación 54 | 55 | Lenguajes, paradigmas, buenas prácticas y proyectos prácticos. 56 | 57 | #### Subcategorías: 58 | 59 | - **Control de Versiones** 60 | - Git 61 | - GitHub Actions 62 | 63 | #### Desarrollo Web: 64 | 65 | - **Front End** 66 | - HTML 67 | - CSS 68 | - Bootstrap 69 | - JavaScript 70 | 71 | - **Back End** 72 | - Microservicios 73 | 74 | - **Lenguajes** 75 | - C# 76 | - Python 77 | - Elixir 78 | - Kotlin 79 | 80 | - **DevOps** 81 | - Administración de Servidores Linux 82 | - Bash Scripting 83 | - Contenedores 84 | 85 | - **Sistemas Operativos** 86 | - Linux -------------------------------------------------------------------------------- /Ciencias de la Computación/Inteligencia Artificial/Ingeniería de Prompts/2. LLM Multimodales.md: -------------------------------------------------------------------------------- 1 | ## Capacidades Multimodales 2 | 3 | Los modelos multimodales pueden procesar y generar diferentes tipos de contenido: 4 | 5 | - **Texto** 6 | - **Imágenes** 7 | - **Audio** 8 | - **Video** 9 | - **Código** 10 | 11 | ### Ventajas de la Multimodalidad 12 | 13 | - Comprensión de contexto visual y textual 14 | - Mejora en la interacción con IA 15 | - Aplicaciones en generación de imágenes 16 | - Búsqueda por imagen 17 | - Mejoras en accesibilidad 18 | 19 | --- 20 | 21 | ## Prompting con Imágenes 22 | 23 | ### Ejemplo de Prompt Multimodal 24 | 25 | ``` 26 | Actúa como un tutor de inglés para principiantes. Aquí tienes una imagen. 27 | Describe la escena en la imagen usando palabras sencillas para que un estudiante 28 | de inglés pueda entenderla. Usa oraciones cortas y simples. 29 | ``` 30 | 31 | ### Implementación con API 32 | 33 | ```python 34 | from google import genai 35 | from PIL import Image 36 | 37 | # Cliente 38 | client = genai.Client(api_key=GEMINI_API_KEY) 39 | 40 | # Cargar imagen 41 | image = Image.open("/path/to/imagen.png") 42 | 43 | # Generar contenido multimodal 44 | response = client.models.generate_content( 45 | model='gemini-2.0-flash', 46 | contents=[image, "Describe la escena en la imagen usando palabras sencillas"] 47 | ) 48 | 49 | print(response.text) 50 | ``` 51 | 52 | --- 53 | 54 | ## Prompting con Audio 55 | 56 | **Ejemplo:** 57 | 58 | ``` 59 | Actúa como un tutor de inglés para principiantes. Escucha el siguiente archivo 60 | de audio en inglés y transcribe lo que se dice. Luego, analiza el sentimiento 61 | de la conversación y explica si es positivo, negativo o neutral. 62 | ``` 63 | 64 | --- 65 | 66 | ## Configuración de Parámetros 67 | 68 | ```python 69 | response = client.models.generate_content( 70 | model='gemini-2.0-flash', 71 | contents=["Explica el pasado simple"], 72 | config=types.GenerateContentConfig( 73 | max_output_tokens=500, 74 | temperature=0.1 # Controla la creatividad 75 | ) 76 | ) 77 | ``` 78 | 79 | ### Parámetros Importantes 80 | 81 | - **Temperature:** Controla la aleatoriedad (0.0 = determinista, 1.0 = creativo) 82 | - **Max tokens:** Límite de longitud de respuesta 83 | - **Top-p:** Sampling núcleo para diversidad 84 | - **Tools:** Funciones adicionales disponibles 85 | 86 | --- 87 | -------------------------------------------------------------------------------- /Ciencias de la Computación/Data Engineering/Databricks/4. Databricks Security and Governance.md: -------------------------------------------------------------------------------- 1 | ## Modelo de Seguridad 2 | 3 | ### Principios Fundamentales 4 | 5 | 1. **Defense in Depth**: múltiples capas de seguridad 6 | 2. **Least Privilege**: acceso mínimo necesario 7 | 3. **Zero Trust**: verificación continua 8 | 4. **Compliance**: cumplimiento regulatorio 9 | 10 | --- 11 | 12 | ## Autenticación y Autorización 13 | 14 | ### Métodos de Autenticación 15 | 16 | - Single Sign-On (SSO): SAML, OAuth 17 | - Personal Access Tokens: para APIs 18 | - Service Principals: para aplicaciones 19 | - Multi-Factor Authentication (MFA): seguridad adicional 20 | 21 | ### Modelo de Autorización 22 | 23 | ``` 24 | User/Service Principal 25 | ↓ 26 | Workspace Access 27 | ↓ 28 | Resource Permissions 29 | ↓ 30 | Data Access Controls 31 | ``` 32 | 33 | --- 34 | 35 | ## Unity Catalog 36 | 37 | ### Características 38 | 39 | - Gobernanza centralizada 40 | - Control de acceso granular (nivel de columna) 41 | - Data lineage end-to-end 42 | - Audit logging completo 43 | 44 | ### Jerarquía de Objetos 45 | 46 | ``` 47 | Metastore 48 | ├── Catalog 49 | │ ├── Schema 50 | │ │ ├── Table 51 | │ │ ├── View 52 | │ │ └── Function 53 | │ └── Volume 54 | └── External Location 55 | ``` 56 | 57 | --- 58 | 59 | ## Encriptación 60 | 61 | ### Datos en Reposo 62 | 63 | - Encriptación nativa del proveedor cloud 64 | - BYOK (Bring Your Own Key) 65 | - Integración con HSMs 66 | 67 | ### Datos en Tránsito 68 | 69 | - TLS 1.2+ en todas las comunicaciones 70 | - Certificate Pinning 71 | - VPN/Private Link para conectividad privada 72 | 73 | --- 74 | 75 | ## Compliance y Auditoría 76 | 77 | ### Certificaciones 78 | 79 | - SOC 2 Type II 80 | - ISO 27001 81 | - GDPR 82 | - HIPAA 83 | - FedRAMP 84 | 85 | ### Auditoría 86 | 87 | - Audit logs detallados 88 | - Data lineage de transformaciones 89 | - Monitoreo de accesos 90 | - Reportes automatizados de compliance 91 | 92 | --- 93 | 94 | ## Seguridad en Redes 95 | 96 | ### Aislamiento de Red 97 | 98 | - VPC/VNet 99 | - Private Endpoints 100 | - Firewall rules 101 | - NAT Gateways 102 | 103 | ### Monitoreo de Seguridad 104 | 105 | - Integración con SIEM 106 | - Detección de amenazas 107 | - Respuesta a incidentes 108 | - Gestión de vulnerabilidades 109 | 110 | --- 111 | -------------------------------------------------------------------------------- /Ciencias de la Computación/Big Data/Apache Spark I/6. Uso de Shells Interactivos.md: -------------------------------------------------------------------------------- 1 | ## Spark Shell (Scala) 2 | 3 | El shell de Scala proporciona una interfaz interactiva REPL. 4 | 5 | ```bash 6 | spark-shell 7 | spark-shell --master local[4] --driver-memory 2g 8 | ``` 9 | 10 | ### Comandos básicos 11 | 12 | ```scala 13 | // SparkContext disponible como 'sc' 14 | // SparkSession disponible como 'spark' 15 | 16 | // Crear RDD 17 | val data = sc.parallelize(1 to 100) 18 | 19 | // Operaciones 20 | val filtered = data.filter(_ % 2 == 0) 21 | val result = filtered.collect() 22 | 23 | // Leer archivo 24 | val textFile = sc.textFile("README.md") 25 | val wordCounts = textFile.flatMap(_.split(" ")) 26 | .map((_, 1)) 27 | .reduceByKey(_ + _) 28 | ``` 29 | 30 | --- 31 | 32 | ## PySpark Shell 33 | 34 | El shell de Python ofrece interfaz interactiva similar. 35 | 36 | ```bash 37 | pyspark 38 | pyspark --master local[4] --driver-memory 2g 39 | ``` 40 | 41 | ### Comandos básicos 42 | 43 | ```python 44 | # SparkContext disponible como 'sc' 45 | # SparkSession disponible como 'spark' 46 | 47 | # Crear RDD 48 | data = sc.parallelize(range(1, 101)) 49 | 50 | # Operaciones 51 | filtered = data.filter(lambda x: x % 2 == 0) 52 | result = filtered.collect() 53 | 54 | # Leer archivo 55 | text_file = sc.textFile("README.md") 56 | word_counts = text_file.flatMap(lambda line: line.split(" ")) \ 57 | .map(lambda word: (word, 1)) \ 58 | .reduceByKey(lambda a, b: a + b) 59 | ``` 60 | 61 | --- 62 | 63 | ## Jupyter Notebook con PySpark 64 | 65 | Configurar PySpark para trabajar con Jupyter. 66 | 67 | ```python 68 | pip install findspark 69 | 70 | import findspark 71 | findspark.init() 72 | 73 | import pyspark 74 | from pyspark.sql import SparkSession 75 | 76 | spark = SparkSession.builder.appName("JupyterApp").getOrCreate() 77 | ``` 78 | 79 | --- 80 | 81 | ## Comandos útiles del shell 82 | 83 | ### Scala 84 | 85 | ```scala 86 | :help // Ayuda 87 | :quit // Salir 88 | :type expr // Mostrar tipo de expresión 89 | :load file // Cargar archivo Scala 90 | ``` 91 | 92 | ### Python 93 | 94 | ```python 95 | help() # Ayuda 96 | exit() # Salir 97 | %timeit # Medir tiempo de ejecución (en Jupyter) 98 | ``` 99 | 100 | --- 101 | -------------------------------------------------------------------------------- /Programación/Bash Scripting/12. Manejo de Errores.md: -------------------------------------------------------------------------------- 1 | # Códigos de Salida 2 | 3 | ```bash 4 | #!/bin/bash 5 | 6 | # Función que puede fallar 7 | operacion_riesgosa() { 8 | local archivo=$1 9 | 10 | if [ ! -f "$archivo" ]; then 11 | echo "Error: El archivo $archivo no existe" >&2 12 | return 1 13 | fi 14 | 15 | # Realizar operación 16 | echo "Operación exitosa en $archivo" 17 | return 0 18 | } 19 | 20 | # Manejo de errores 21 | if operacion_riesgosa "archivo_inexistente.txt"; then 22 | echo "Operación completada exitosamente" 23 | else 24 | echo "La operación falló" 25 | exit 1 26 | fi 27 | ``` 28 | 29 | --- 30 | 31 | # Trap para Manejo de Señales 32 | 33 | ```bash 34 | #!/bin/bash 35 | 36 | # Función de limpieza 37 | cleanup() { 38 | echo "Limpiando archivos temporales..." 39 | rm -f /tmp/mi_script_$$* 40 | echo "Limpieza completada" 41 | exit 0 42 | } 43 | 44 | # Configurar trap 45 | trap cleanup EXIT INT TERM 46 | 47 | # Crear archivo temporal 48 | temp_file="/tmp/mi_script_$$" 49 | echo "Trabajando con archivo temporal: $temp_file" 50 | touch "$temp_file" 51 | 52 | # Simular trabajo 53 | echo "Ejecutando operación larga..." 54 | sleep 5 55 | 56 | echo "Operación completada" 57 | ``` 58 | 59 | --- 60 | 61 | # Logging 62 | 63 | ```bash 64 | #!/bin/bash 65 | 66 | # Configuración de logging 67 | LOG_FILE="/var/log/mi_script.log" 68 | DEBUG=true 69 | 70 | # Función de logging 71 | log() { 72 | local level=$1 73 | local message=$2 74 | local timestamp=$(date '+%Y-%m-%d %H:%M:%S') 75 | 76 | echo "[$timestamp] [$level] $message" >> "$LOG_FILE" 77 | 78 | if [ "$DEBUG" = true ]; then 79 | echo "[$timestamp] [$level] $message" >&2 80 | fi 81 | } 82 | 83 | # Funciones de logging específicas 84 | log_info() { 85 | log "INFO" "$1" 86 | } 87 | 88 | log_error() { 89 | log "ERROR" "$1" 90 | } 91 | 92 | log_debug() { 93 | if [ "$DEBUG" = true ]; then 94 | log "DEBUG" "$1" 95 | fi 96 | } 97 | 98 | # Uso del logging 99 | log_info "Script iniciado" 100 | log_debug "Procesando archivo de configuración" 101 | 102 | if [ ! -f "config.txt" ]; then 103 | log_error "Archivo de configuración no encontrado" 104 | exit 1 105 | fi 106 | 107 | log_info "Script completado exitosamente" 108 | ``` 109 | 110 | --- 111 | -------------------------------------------------------------------------------- /Programación/C Sharp/1. Fundamentos.md: -------------------------------------------------------------------------------- 1 | # Programa Hola Mundo en C# 2 | 3 | Este es un programa simple en C# que imprime el mensaje **"Hola Mundo"** en la consola. 4 | 5 | --- 6 | 7 | ## Explicación del Código 8 | 9 | 1. **`using System;`** → Importa el espacio de nombres `System`, que contiene clases fundamentales como `Console`. 10 | 2. **`namespace HolaMundo`** → Define un espacio de nombres llamado `HolaMundo` para organizar el código. 11 | 3. **`internal class Program`** → Clase llamada `Program` dentro del espacio de nombres `HolaMundo`. `internal` indica que solo puede ser accedida dentro del mismo ensamblado. 12 | 4. **`static void Main(string[] args)`** → Método principal, punto de entrada de la aplicación. 13 | 5. **`Console.WriteLine("Hola Mundo");`** → Imprime el texto en la consola. 14 | 15 | ```csharp 16 | using System; 17 | using System.Collections.Generic; 18 | using System.Linq; 19 | using System.Text; 20 | using System.Threading.Tasks; 21 | 22 | namespace HolaMundo 23 | { 24 | internal class Program 25 | { 26 | static void Main(string[] args) 27 | { 28 | Console.WriteLine("Hola Mundo"); 29 | } 30 | } 31 | } 32 | ``` 33 | 34 | --- 35 | 36 | ## ¿Para qué sirve? 37 | 38 | Este código muestra cómo crear una aplicación básica en C# que imprima un mensaje en la consola. Es el ejemplo introductorio más común para aprender los fundamentos de la programación en C#. 39 | 40 | --- 41 | 42 | # Compilar y Ejecutar una Aplicación de Consola 43 | 44 | ## Compilar 45 | 46 | Ir a **Compilar > Compilar solución**. 47 | Después, abrir **Ver > Otras Ventanas > Salida** para revisar el resultado. 48 | 49 | --- 50 | 51 | ## Ejecutar 52 | 53 | Ir a **Depurar > Iniciar sin Depurar**. 54 | Esto permite ver el programa en ejecución sin cerrar la consola inmediatamente. 55 | 56 | --- 57 | 58 | ## Compilar y Ejecutar con Depuración 59 | 60 | 6. **`Console.ReadKey();`** → Detiene la ejecución hasta que el usuario presione una tecla, evitando que la ventana se cierre de inmediato. 61 | 62 | ```csharp 63 | using System; 64 | using System.Collections.Generic; 65 | using System.Linq; 66 | using System.Text; 67 | using System.Threading.Tasks; 68 | 69 | namespace HolaMundo 70 | { 71 | internal class Program 72 | { 73 | static void Main(string[] args) 74 | { 75 | Console.WriteLine("Hola Mundo"); 76 | 77 | Console.ReadKey(); 78 | } 79 | } 80 | } 81 | ``` 82 | 83 | --- 84 | -------------------------------------------------------------------------------- /Programación/Python/9. Condicionales.md: -------------------------------------------------------------------------------- 1 | Los condicionales son estructuras de control que permiten ejecutar diferentes bloques de código según se cumplan o no ciertas condiciones. Python proporciona las estructuras `if`, `elif` y `else` 2 | para implementar la lógica condicional. 3 | 4 | # Estructura if 5 | 6 | La estructura `if` ejecuta un bloque de código solo si la condición evaluada es verdadera (`True`). 7 | 8 | ## Sintaxis 9 | 10 | ```python 11 | if condición: 12 | # Código a ejecutar si la condición es True 13 | instrucción1 14 | instrucción2 15 | ``` 16 | 17 | ## Ejemplo 18 | 19 | ```python 20 | edad = 18 21 | if edad >= 18: 22 | print("Eres mayor de edad") 23 | ``` 24 | 25 | **Salida:** 26 | 27 | ``` 28 | Eres mayor de edad 29 | ``` 30 | 31 | 32 | # Estructura if-else 33 | 34 | La estructura `if-else` permite ejecutar un bloque de código cuando la condición es verdadera, y otro bloque diferente cuando es falsa. 35 | 36 | ## Sintaxis 37 | 38 | ```python 39 | if condición: 40 | # Código si la condición es True 41 | instrucciones_si_verdadero 42 | else: 43 | # Código si la condición es False 44 | instrucciones_si_falso 45 | ``` 46 | 47 | ## Ejemplo 48 | 49 | ```python 50 | numero = 7 51 | 52 | if numero % 2 == 0: 53 | print("El número es par") 54 | else: 55 | print("El número es impar") 56 | ``` 57 | 58 | **Salida:** 59 | 60 | ``` 61 | El número es impar 62 | ``` 63 | 64 | 65 | # Estructura if-elif-else 66 | 67 | La estructura `if-elif-else` permite evaluar múltiples condiciones en secuencia. Se ejecuta el bloque de código de la primera condición que sea verdadera. 68 | 69 | ## Sintaxis 70 | 71 | ```python 72 | if condición1: 73 | # Código si condición1 es True 74 | instrucciones1 75 | elif condición2: 76 | # Código si condición2 es True 77 | instrucciones2 78 | elif condición3: 79 | # Código si condición3 es True 80 | instrucciones3 81 | else: 82 | # Código si ninguna condición anterior es True 83 | instrucciones_por_defecto 84 | ``` 85 | 86 | ## Ejemplo 87 | 88 | ```python 89 | calificacion = 85 90 | 91 | if calificacion >= 90: 92 | print("Calificación: A") 93 | elif calificacion >= 80: 94 | print("Calificación: B") 95 | elif calificacion >= 70: 96 | print("Calificación: C") 97 | elif calificacion >= 60: 98 | print("Calificación: D") 99 | else: 100 | print("Calificación: F") 101 | ``` 102 | 103 | **Salida:** 104 | 105 | ``` 106 | Calificación: B 107 | ``` -------------------------------------------------------------------------------- /Programación/C Sharp/4. Tipos de Datos.md: -------------------------------------------------------------------------------- 1 | C# incluye varios tipos de datos divididos en **tipos de valor**, **tipos de referencia**, y **tipos nulos**. 2 | 3 | --- 4 | 5 | ## Tipos de Valor (Primitivos) 6 | 7 | ### Enteros (Para números sin decimales) 8 | 9 | |Tipo|Tamaño|Rango|Uso| 10 | |---|---|---|---| 11 | |`byte`|8 bits|0 a 255|Valores pequeños sin signo (ej. RGB)| 12 | |`sbyte`|8 bits|-128 a 127|Valores pequeños con signo| 13 | |`short`|16 bits|-32,768 a 32,767|Números enteros pequeños| 14 | |`ushort`|16 bits|0 a 65,535|Enteros positivos más grandes| 15 | |`int`|32 bits|-2,147,483,648 a 2,147,483,647|Enteros comunes en cálculos| 16 | |`uint`|32 bits|0 a 4,294,967,295|Conteo de objetos sin negativos| 17 | |`long`|64 bits|-9E18 a 9E18|Números enteros muy grandes| 18 | |`ulong`|64 bits|0 a 18E18|Solo positivos extremadamente grandes| 19 | 20 | #### ¿Cuándo usarlos? 21 | 22 | - `int` es el más común para enteros. 23 | - `long` se usa para números muy grandes (ej. distancias astronómicas). 24 | - `byte` es ideal para valores entre 0 y 255, como datos en imágenes. 25 | 26 | --- 27 | 28 | ### Números Decimales (Para valores con punto flotante) 29 | 30 | |Tipo|Tamaño|Rango|Uso| 31 | |---|---|---|---| 32 | |`float`|32 bits|±1.5E−45 a ±3.4E38|Cálculos aproximados (gráficos)| 33 | |`double`|64 bits|±5E−324 a ±1.7E308|Matemáticas avanzadas| 34 | |`decimal`|128 bits|±1E−28 a ±7.9E28|Finanzas con precisión alta| 35 | 36 | #### ¿Cuándo usarlos? 37 | 38 | - `float` para gráficos y videojuegos (ej. Unity usa `float`). 39 | - `double` para cálculos matemáticos. 40 | - `decimal` para dinero y finanzas. 41 | 42 | ```csharp 43 | float valorFloat = 3.14f; 44 | double valorDouble = 3.14; 45 | decimal valorDecimal = 3.14m; 46 | ``` 47 | 48 | --- 49 | 50 | ### Booleanos (Verdadero o falso) 51 | 52 | |Tipo|Tamaño|Valores|Uso| 53 | |---|---|---|---| 54 | |`bool`|8 bits|`true` o `false`|Condiciones (`if`, `while`)| 55 | 56 | --- 57 | 58 | ### Caracteres y Cadenas (Texto) 59 | 60 | |Tipo|Tamaño|Uso| 61 | |---|---|---| 62 | |`char`|16 bits|Almacenar un solo carácter Unicode| 63 | |`string`|Variable|Almacenar texto completo| 64 | 65 | --- 66 | 67 | ## Tipos de Referencia 68 | 69 | ### `object` (Cualquier tipo de dato) 70 | 71 | - Puede almacenar cualquier tipo de dato. 72 | - Útil cuando no se sabe qué tipo se manejará. 73 | 74 | --- 75 | 76 | ### `dynamic` (Flexible) 77 | 78 | - Cambia de tipo en tiempo de ejecución. 79 | - Permite flexibilidad, pero puede generar errores. 80 | 81 | --- 82 | 83 | ### Tipos Nullable (Valores opcionales) 84 | 85 | |Tipo|Uso| 86 | |---|---| 87 | |`int?`|Permite `null` en tipos de valor| 88 | 89 | --- 90 | -------------------------------------------------------------------------------- /Programación/DevOps/Administración de Servidores Linux/Servidor VPN/Servidor VPN PPTPD.md: -------------------------------------------------------------------------------- 1 | PPTPD (**Point-to-Point Tunneling Protocol Daemon**) es un servidor que implementa el protocolo **PPTP (Point-to-Point Tunneling Protocol)** en sistemas Linux y Unix. PPTP es un protocolo de red que permite establecer **redes privadas virtuales (VPN)** mediante el encapsulamiento del tráfico de red en túneles seguros. 2 | 3 | ## Instalar el paquete 4 | 5 | ```bash 6 | sudo apt-get install pptpd -y 7 | ``` 8 | 9 | ## Configuración 10 | 11 | ```bash 12 | sudo systemctl enable pptpd 13 | ``` 14 | 15 | sudo nano /etc/pptpd.conf  y luego configuramos la siguiente línea de código 16 | 17 | ![[Programación/DevOps/Administración de Servidores Linux/Servidor VPN/Imagen1.png]] 18 | 19 | sudo nano /etc/ppp/pptpd-options  para cambiar el nombre y DNS del servidor 20 | 21 | ![[Programación/DevOps/Administración de Servidores Linux/Servidor VPN/Imagen3.png]] 22 | 23 | ![[Programación/DevOps/Administración de Servidores Linux/Servidor VPN/Imagen3.png]] 24 | 25 | sudo nano /etc/ppp/chap-secrets   para cambiar usuario y contraseña 26 | 27 | ![[Programación/DevOps/Administración de Servidores Linux/Servidor VPN/Imagen4.png]] 28 | 29 | sudo nano /etc/sysctl.conf  y descomentamos la siguiente línea de comandos 30 | 31 | ![[Programación/DevOps/Administración de Servidores Linux/Servidor VPN/Imagen5.png]] 32 | 33 | sudo nano /etc/systemd/system/rc-local.service   y copíamos el siguiente código 34 | 35 | ```bash 36 | [Unit] 37 | Description=/etc/rc.local Compatibility 38 | ConditionPathExists=/etc/rc.local 39 | 40 | [Service] 41 | Type=forking 42 | ExecStart=/etc/rc.local start 43 | TimeoutSec=0 44 | StandardOutput=tty 45 | RemainAfterExit=yes 46 | SysVStartPriority=99 47 | 48 | [Install] 49 | WantedBy=multi-user.target[Unit] 50 | Description=/etc/rc.local Compatibility 51 | ConditionPathExists=/etc/rc.local 52 | 53 | [Service] 54 | Type=forking 55 | ExecStart=/etc/rc.local start 56 | TimeoutSec=0 57 | StandardOutput=tty 58 | RemainAfterExit=yes 59 | SysVStartPriority=99 60 | 61 | [Install] 62 | WantedBy=multi-user.target 63 | ``` 64 | 65 | sudo nano /etc/rc.local   y copiamos el siguiente código 66 | 67 | ```bash 68 | #!/bin/bash 69 | 70 | iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o enp0s3 -j MASQUERADE 71 | ``` 72 | 73 | ```bash 74 | sudo service pptpd status 75 | 76 | sudo service pptpd start 77 | ``` 78 | 79 | Por último si al conectarte al tu servidor VPN se cae el internet te recomiendo ver el video 80 | 81 | ![https://www.youtube.com/watch?v=NU5-wX4z5lQ](https://www.youtube.com/watch?v=NU5-wX4z5lQ) 82 | 83 | 84 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /Ciencias de la Computación/Data Engineering/Databricks/2. Data Lakehouses and Data Intelligence.md: -------------------------------------------------------------------------------- 1 | ## Concepto de Data Lakehouse 2 | 3 | El **Data Lakehouse** combina lo mejor de los data lakes y data warehouses. 4 | 5 | --- 6 | 7 | ## Características Principales 8 | 9 | - **Flexibilidad de Data Lakes**: soporta datos estructurados y no estructurados 10 | - **Rendimiento de Data Warehouses**: consultas rápidas y confiables 11 | - **Transacciones ACID**: consistencia e integridad de datos 12 | - **Schema Evolution**: cambios de esquemas sin downtime 13 | 14 | --- 15 | 16 | ## Arquitectura del Data Lakehouse 17 | 18 | ``` 19 | ┌─────────────────────────────────────────────────────────────┐ 20 | │ Data Intelligence Layer │ 21 | ├─────────────────────────────────────────────────────────────┤ 22 | │ Analytics & ML Layer │ 23 | ├─────────────────────────────────────────────────────────────┤ 24 | │ Data Processing Layer │ 25 | ├─────────────────────────────────────────────────────────────┤ 26 | │ Data Storage Layer │ 27 | └─────────────────────────────────────────────────────────────┘ 28 | ``` 29 | 30 | --- 31 | 32 | ## Componentes Clave 33 | 34 | ### Delta Lake 35 | 36 | - Formato de almacenamiento open source 37 | - Transacciones ACID 38 | - **Time Travel**: acceso a versiones históricas 39 | - **Schema Enforcement**: validación automática de esquemas 40 | 41 | ### Apache Spark 42 | 43 | - Motor de procesamiento distribuido en memoria 44 | - APIs en SQL, Python, Scala, R 45 | - Streaming en tiempo real 46 | - MLlib para machine learning 47 | 48 | --- 49 | 50 | ## Data Intelligence 51 | 52 | ### Definición 53 | 54 | Capacidad de extraer insights accionables mediante: 55 | 56 | - Análisis avanzado 57 | - Machine Learning 58 | - Inteligencia Artificial 59 | - Visualización de datos 60 | 61 | ### Componentes 62 | 63 | 1. **Data Ingestion**: captura de datos 64 | 2. **Data Processing**: limpieza y transformación 65 | 3. **Data Analysis**: exploración y análisis 66 | 4. **Data Visualization**: dashboards y reportes 67 | 5. **Machine Learning**: modelos predictivos 68 | 69 | --- 70 | 71 | ## Beneficios del Data Lakehouse 72 | 73 | ### Técnicos 74 | 75 | - Consultas 10–100x más rápidas 76 | - Escalabilidad a petabytes 77 | - Flexibilidad en múltiples formatos 78 | - Integración con APIs y conectores 79 | 80 | ### Económicos 81 | 82 | - Reducción de costos por eliminación de sistemas redundantes 83 | - Implementación más rápida (time to market) 84 | - Mayor ROI en proyectos de datos 85 | 86 | --- 87 | -------------------------------------------------------------------------------- /Programación/Desarrollo Web/Front-End/Javascript/Librerías/jQuery/2. Selectores de Id y Clase.md: -------------------------------------------------------------------------------- 1 | # Selectores en jQuery 2 | 3 | Los **selectores en jQuery** permiten acceder a elementos del DOM de forma sencilla para manipularlos. Los más comunes son los **selectores de ID** y los **selectores de Clase**. 4 | 5 | # Selector de ID 6 | 7 | Se utiliza para seleccionar un **único elemento** con un identificador único en el documento. En jQuery, se usa el símbolo `#` seguido del nombre del ID. 8 | 9 | ## Sintaxis 10 | 11 | ```javascript 12 | $("#idElemento") 13 | ``` 14 | 15 | ## Ejemplo 16 | 17 | ```html 18 | 19 | 20 | 21 | Ejemplo Selector ID 22 | 23 | 28 | 29 | 30 |

Hola Mundo

31 | 32 | 33 | ``` 34 | 35 | En este ejemplo, el texto del `h1` con ID `titulo` se mostrará en **azul**. 36 | 37 | # Selector de Clase 38 | 39 | Se utiliza para seleccionar **uno o varios elementos** que comparten la misma clase. En jQuery, se usa el símbolo `.` seguido del nombre de la clase. 40 | 41 | ## Sintaxis 42 | 43 | ```javascript 44 | $(".nombreClase") 45 | ``` 46 | 47 | ## Ejemplo 48 | 49 | ```html 50 | 51 | 52 | 53 | Ejemplo Selector Clase 54 | 55 | 60 | 61 | 62 |

Este párrafo está resaltado.

63 |

Este también tiene la clase resaltado.

64 |

Este párrafo no tiene clase.

65 | 66 | 67 | ``` 68 | 69 | Todos los elementos con la clase `resaltado` tendrán **fondo amarillo**. 70 | 71 | # Diferencias entre ID y Clase 72 | 73 | |Característica|Selector ID (`#`)|Selector Clase (`.`)| 74 | |---|---|---| 75 | |**Unicidad**|Debe ser único en el documento|Puede repetirse en múltiples elementos| 76 | |**Símbolo en jQuery**|`#`|`.`| 77 | |**Uso recomendado**|Identificar un único elemento|Agrupar varios elementos con estilo o comportamiento común| 78 | 79 | # Combinación de Selectores 80 | 81 | jQuery permite combinar selectores para mayor precisión. 82 | 83 | ## Ejemplo: ID + Clase 84 | 85 | ```javascript 86 | $("#contenedor .item").hide(); 87 | ``` 88 | 89 | Selecciona todos los elementos con clase `item` que estén dentro del elemento con ID `contenedor`. -------------------------------------------------------------------------------- /Programación/Bash Scripting/10. Manejo de Archivos y Directorios.md: -------------------------------------------------------------------------------- 1 | # Operaciones Básicas con Archivos 2 | 3 | ```bash 4 | #!/bin/bash 5 | 6 | # Crear archivo 7 | touch archivo.txt 8 | 9 | # Escribir en archivo 10 | echo "Contenido inicial" > archivo.txt 11 | echo "Línea adicional" >> archivo.txt 12 | 13 | # Leer archivo 14 | while IFS= read -r linea; do 15 | echo "Línea: $linea" 16 | done < archivo.txt 17 | 18 | # Verificar existencia 19 | if [ -f "archivo.txt" ]; then 20 | echo "El archivo existe" 21 | 22 | # Obtener información del archivo 23 | echo "Tamaño: $(wc -c < archivo.txt) bytes" 24 | echo "Líneas: $(wc -l < archivo.txt)" 25 | echo "Permisos: $(ls -l archivo.txt | cut -d' ' -f1)" 26 | fi 27 | ``` 28 | 29 | --- 30 | 31 | # Operaciones con Directorios 32 | 33 | ```bash 34 | #!/bin/bash 35 | 36 | # Crear directorio 37 | mkdir -p mi_directorio/subdirectorio 38 | 39 | # Listar contenido 40 | echo "Contenido del directorio actual:" 41 | ls -la 42 | 43 | # Navegar entre directorios 44 | cd mi_directorio 45 | echo "Ahora estoy en: $(pwd)" 46 | cd .. 47 | 48 | # Encontrar archivos 49 | echo "Archivos .txt en el directorio:" 50 | find . -name "*.txt" -type f 51 | 52 | # Copiar y mover archivos 53 | cp archivo.txt copia_archivo.txt 54 | mv copia_archivo.txt mi_directorio/ 55 | 56 | # Eliminar archivos y directorios 57 | rm -f archivo_temporal.txt 58 | rmdir directorio_vacio 59 | rm -rf directorio_con_contenido 60 | ``` 61 | 62 | --- 63 | 64 | # Procesamiento de Archivos 65 | 66 | ```bash 67 | #!/bin/bash 68 | 69 | # Función para procesar archivos CSV 70 | procesar_csv() { 71 | local archivo=$1 72 | local contador=0 73 | 74 | while IFS=, read -r col1 col2 col3; do 75 | if [ $contador -eq 0 ]; then 76 | echo "Encabezados: $col1, $col2, $col3" 77 | else 78 | echo "Fila $contador: $col1 | $col2 | $col3" 79 | fi 80 | ((contador++)) 81 | done < "$archivo" 82 | } 83 | 84 | # Función para hacer backup de archivos 85 | hacer_backup() { 86 | local archivo=$1 87 | local backup_dir="backup_$(date +%Y%m%d)" 88 | 89 | mkdir -p "$backup_dir" 90 | 91 | if [ -f "$archivo" ]; then 92 | cp "$archivo" "$backup_dir/" 93 | echo "Backup creado: $backup_dir/$archivo" 94 | else 95 | echo "Error: El archivo $archivo no existe" 96 | fi 97 | } 98 | 99 | # Uso de las funciones 100 | if [ -f "datos.csv" ]; then 101 | procesar_csv "datos.csv" 102 | fi 103 | 104 | hacer_backup "archivo_importante.txt" 105 | ``` 106 | 107 | --- 108 | -------------------------------------------------------------------------------- /Programación/Python/1. Fundamentos.md: -------------------------------------------------------------------------------- 1 | # Crear un nuevo proyecto en PyCharm 2 | 3 | Primero, abrimos PyCharm y seguimos estos pasos: 4 | 5 | 1. Damos clic en **New Project** 6 | 2. Le asignamos el nombre `ProyectoInicial` 7 | 3. Lo guardamos en la ruta: 8 | 9 | ``` 10 | C:\Cursos\Python\ProyectoInicial 11 | ``` 12 | 13 | 4. Seleccionamos la versión de Python instalada (por ejemplo, desde `C:\Program Files\PythonXX\python.exe`) 14 | 5. Finalmente damos clic en **Crear** 15 | 16 | Esto generará la estructura básica del proyecto con carpetas y librerías que se configuran automáticamente. No modificaremos nada de esto por ahora. 17 | 18 | ## Crear el archivo Python 19 | 20 | Sobre el proyecto creado: 21 | 22 | 1. Damos clic derecho sobre el proyecto 23 | 2. Seleccionamos **New → Python File** 24 | 3. Nombramos el archivo como `hola_mundo` 25 | 26 | Esto crea nuestro primer archivo `.py` (Python) donde escribiremos el código. 27 | 28 | ## Escribir el código del programa 29 | 30 | ### Descripción 31 | 32 | A continuación, escribiremos un comentario inicial y utilizaremos la función `print` para mostrar un mensaje en la consola. Luego añadiremos una segunda línea que imprime otro mensaje con diferente tipo de comillas. 33 | 34 | ### Archivo y ruta 35 | 36 | ``` 37 | ProyectoInicial/hola_mundo_proyecto/01-04-00-HolaMundo-UP.py 38 | ``` 39 | 40 | ### Código 41 | 42 | ```python 43 | # Programa de Hola Mundo con Python 44 | print("Hola mundo con Python") 45 | print('Saludos') 46 | ``` 47 | 48 | ### Explicación 49 | 50 | - La primera línea es un **comentario**. Comienza con `#` y no se ejecuta 51 | - La función `print()` se usa para mostrar texto en la consola 52 | - `"Hola mundo con Python"` se imprime usando comillas dobles 53 | - `'Saludos'` se imprime con comillas simples, también válidas en Python 54 | - **Importante:** Si abres una cadena con comilla simple o doble, debes cerrarla igual 55 | 56 | ## Ejecutar el programa 57 | 58 | Para ver el resultado: 59 | 60 | 1. Haz clic derecho sobre el archivo `hola_mundo.py` 61 | 2. Selecciona **Run 'hola_mundo'** 62 | 63 | ### Resultado esperado 64 | 65 | Verás en la consola los siguientes resultados: 66 | 67 | ``` 68 | Hola mundo con Python 69 | Saludos 70 | 71 | Process finished with exit code 0 72 | ``` 73 | 74 | El mensaje `Process finished with exit code 0` indica que el programa se ejecutó correctamente. 75 | 76 | ## Conceptos clave aprendidos 77 | 78 | |Concepto|Descripción| 79 | |---|---| 80 | |`print()`|Función para imprimir mensajes en la consola| 81 | |`#`|Símbolo para escribir comentarios (no se ejecutan)| 82 | |Comillas simples `'` y dobles `"`|Ambas son válidas para definir cadenas de texto| 83 | |`.py`|Extensión de archivos Python| 84 | -------------------------------------------------------------------------------- /Programación/C Sharp/9. Toma de Decisiones.md: -------------------------------------------------------------------------------- 1 | 2 | En C#, la toma de decisiones se basa en **estructuras condicionales** que permiten ejecutar diferentes bloques de código dependiendo de una condición. 3 | 4 | --- 5 | 6 | ## if (Condición Simple) 7 | 8 | ```csharp 9 | int edad = 18; 10 | 11 | if (edad >= 18) 12 | { 13 | Console.WriteLine("Eres mayor de edad."); 14 | } 15 | ``` 16 | 17 | --- 18 | 19 | ## if-else (Condición Alternativa) 20 | 21 | ```csharp 22 | int edad = 16; 23 | 24 | if (edad >= 18) 25 | { 26 | Console.WriteLine("Eres mayor de edad."); 27 | } 28 | else 29 | { 30 | Console.WriteLine("Eres menor de edad."); 31 | } 32 | ``` 33 | 34 | --- 35 | 36 | ## if-else if-else (Múltiples Condiciones) 37 | 38 | ```csharp 39 | int nota = 85; 40 | 41 | if (nota >= 90) 42 | { 43 | Console.WriteLine("Excelente"); 44 | } 45 | else if (nota >= 70) 46 | { 47 | Console.WriteLine("Aprobado"); 48 | } 49 | else 50 | { 51 | Console.WriteLine("Reprobado"); 52 | } 53 | ``` 54 | 55 | --- 56 | 57 | ## switch (Múltiples Casos) 58 | 59 | ```csharp 60 | int opcion = 2; 61 | 62 | switch (opcion) 63 | { 64 | case 1: 65 | Console.WriteLine("Seleccionaste la opción 1."); 66 | break; 67 | case 2: 68 | Console.WriteLine("Seleccionaste la opción 2."); 69 | break; 70 | case 3: 71 | Console.WriteLine("Seleccionaste la opción 3."); 72 | break; 73 | default: 74 | Console.WriteLine("Opción no válida."); 75 | break; 76 | } 77 | ``` 78 | 79 | --- 80 | 81 | ## switch con Expresiones (C# 8+) 82 | 83 | ```csharp 84 | int dia = 3; 85 | 86 | string nombreDia = dia switch 87 | { 88 | 1 => "Lunes", 89 | 2 => "Martes", 90 | 3 => "Miércoles", 91 | 4 => "Jueves", 92 | 5 => "Viernes", 93 | 6 => "Sábado", 94 | 7 => "Domingo", 95 | _ => "Día no válido" 96 | }; 97 | 98 | Console.WriteLine(nombreDia); // Salida: Miércoles 99 | ``` 100 | 101 | --- 102 | 103 | ## Operador Ternario (? :) 104 | 105 | ```csharp 106 | int edad = 20; 107 | string mensaje = (edad >= 18) ? "Eres mayor de edad." : "Eres menor de edad."; 108 | Console.WriteLine(mensaje); 109 | ``` 110 | 111 | --- 112 | 113 | ## if Anidados 114 | 115 | ```csharp 116 | bool tieneUsuario = true; 117 | bool tieneContraseña = false; 118 | 119 | if (tieneUsuario) 120 | { 121 | if (tieneContraseña) 122 | { 123 | Console.WriteLine("Inicio de sesión exitoso."); 124 | } 125 | else 126 | { 127 | Console.WriteLine("Falta la contraseña."); 128 | } 129 | } 130 | else 131 | { 132 | Console.WriteLine("Falta el usuario."); 133 | } 134 | ``` 135 | 136 | --- 137 | -------------------------------------------------------------------------------- /Programación/Bash Scripting/6. Operadores.md: -------------------------------------------------------------------------------- 1 | # Operadores Aritméticos 2 | 3 | ```bash 4 | #!/bin/bash 5 | 6 | a=10 7 | b=3 8 | 9 | # Operaciones básicas 10 | echo "Suma: $((a + b))" 11 | echo "Resta: $((a - b))" 12 | echo "Multiplicación: $((a * b))" 13 | echo "División: $((a / b))" 14 | echo "Módulo: $((a % b))" 15 | echo "Potencia: $((a ** 2))" 16 | 17 | # Incremento y decremento 18 | ((a++)) 19 | echo "a después de incremento: $a" 20 | ((b--)) 21 | echo "b después de decremento: $b" 22 | ``` 23 | 24 | --- 25 | 26 | # Operadores de Comparación 27 | 28 | ```bash 29 | #!/bin/bash 30 | 31 | # Comparaciones numéricas 32 | a=10 33 | b=20 34 | 35 | if [ $a -eq $b ]; then echo "a es igual a b"; fi 36 | if [ $a -ne $b ]; then echo "a no es igual a b"; fi 37 | if [ $a -lt $b ]; then echo "a es menor que b"; fi 38 | if [ $a -le $b ]; then echo "a es menor o igual que b"; fi 39 | if [ $a -gt $b ]; then echo "a es mayor que b"; fi 40 | if [ $a -ge $b ]; then echo "a es mayor o igual que b"; fi 41 | ``` 42 | 43 | --- 44 | 45 | # Operadores de Cadenas 46 | 47 | ```bash 48 | #!/bin/bash 49 | 50 | cadena1="Hola" 51 | cadena2="Mundo" 52 | cadena3="" 53 | 54 | # Comparaciones de cadenas 55 | if [ "$cadena1" = "$cadena2" ]; then echo "Cadenas iguales"; fi 56 | if [ "$cadena1" != "$cadena2" ]; then echo "Cadenas diferentes"; fi 57 | if [ -z "$cadena3" ]; then echo "Cadena vacía"; fi 58 | if [ -n "$cadena1" ]; then echo "Cadena no vacía"; fi 59 | 60 | # Longitud de cadena 61 | echo "Longitud de '$cadena1': ${#cadena1}" 62 | 63 | # Concatenación 64 | resultado="${cadena1} ${cadena2}" 65 | echo "Concatenación: $resultado" 66 | ``` 67 | 68 | --- 69 | 70 | # Operadores de Archivos 71 | 72 | ```bash 73 | #!/bin/bash 74 | 75 | archivo="test.txt" 76 | 77 | # Verificaciones de archivos 78 | if [ -e "$archivo" ]; then echo "El archivo existe"; fi 79 | if [ -f "$archivo" ]; then echo "Es un archivo regular"; fi 80 | if [ -d "$archivo" ]; then echo "Es un directorio"; fi 81 | if [ -r "$archivo" ]; then echo "Es legible"; fi 82 | if [ -w "$archivo" ]; then echo "Es escribible"; fi 83 | if [ -x "$archivo" ]; then echo "Es ejecutable"; fi 84 | if [ -s "$archivo" ]; then echo "El archivo no está vacío"; fi 85 | ``` 86 | 87 | --- 88 | 89 | # Operadores Lógicos 90 | 91 | ```bash 92 | #!/bin/bash 93 | 94 | a=5 95 | b=10 96 | 97 | # AND lógico 98 | if [ $a -lt 10 ] && [ $b -gt 5 ]; then 99 | echo "Ambas condiciones son verdaderas" 100 | fi 101 | 102 | # OR lógico 103 | if [ $a -eq 5 ] || [ $b -eq 5 ]; then 104 | echo "Al menos una condición es verdadera" 105 | fi 106 | 107 | # NOT lógico 108 | if ! [ $a -eq $b ]; then 109 | echo "a no es igual a b" 110 | fi 111 | ``` 112 | 113 | --- 114 | -------------------------------------------------------------------------------- /Ciencias de la Computación/Inteligencia Artificial/Fundamentos/Procesamiento/2. La IA realiza el procesamiento del lenguaje natural.md: -------------------------------------------------------------------------------- 1 | ## Segmentación de oraciones y señales en NLP 2 | 3 | ### ¿Qué es la segmentación en NLP? 4 | 5 | La segmentación es el proceso mediante el cual los sistemas de NLP dividen el texto en unidades más pequeñas. 6 | 7 | ### Niveles de segmentación 8 | 9 | - Segmentación de documentos 10 | - Tokenización avanzada 11 | 12 | ### Técnicas de segmentación 13 | 14 | - Basada en reglas 15 | - Basada en aprendizaje automático 16 | 17 | ### Señales lingüísticas importantes 18 | 19 | - Sintácticas 20 | - Semánticas 21 | 22 | --- 23 | 24 | ## Detección de emociones y análisis de opinión 25 | 26 | ### Diferencias fundamentales: emociones vs sentimientos 27 | 28 | - Emociones: estados afectivos específicos (alegría, tristeza, miedo, ira, sorpresa, asco) 29 | - Sentimientos: evaluaciones cognitivas más duraderas (polaridad positiva, negativa, neutra) 30 | 31 | ### Técnicas de detección 32 | 33 | - Análisis léxico 34 | - Análisis basado en características 35 | - Aprendizaje automático supervisado 36 | - Modelos de deep learning 37 | 38 | ### Desafíos 39 | 40 | - Ambigüedad contextual 41 | - Expresiones culturales 42 | - Emociones mixtas 43 | 44 | --- 45 | 46 | ## El problema de la clasificación 47 | 48 | ### ¿Por qué es complejo clasificar el lenguaje natural? 49 | 50 | - Ambigüedad léxica 51 | - Ambigüedad sintáctica 52 | - Ambigüedad semántica 53 | - Ambigüedad pragmática 54 | 55 | ### Técnicas de resolución 56 | 57 | - Análisis contextual 58 | - Word Sense Disambiguation (WSD) 59 | - Análisis de dependencias sintácticas 60 | 61 | ### Problemas específicos 62 | 63 | - Clasificación de temas/categorías 64 | - Detección de spam/contenido malicioso 65 | - Clasificación de sentimientos en dominios específicos 66 | 67 | --- 68 | 69 | ## NLP y Jeopardy! 70 | 71 | ### El desafío de Watson en Jeopardy! 72 | 73 | IBM Watson revolucionó el NLP al ganar Jeopardy! en 2011. 74 | 75 | ### Características únicas del reto 76 | 77 | - Formato inverso de preguntas 78 | - Lenguaje complejo y juegos de palabras 79 | 80 | ### Procesamiento de Watson 81 | 82 | - Análisis de la pista 83 | - Generación de hipótesis 84 | - Validación de evidencia 85 | - Evaluación de confianza y apuesta 86 | 87 | ### Desafíos resueltos 88 | 89 | - Resolución de ambigüedades 90 | - Comprensión de referencias culturales 91 | - Manejo de juegos de palabras 92 | 93 | ### Tecnologías clave 94 | 95 | - DeepQA 96 | - UIMA 97 | - Múltiples fuentes de conocimiento 98 | 99 | ### Lecciones aprendidas 100 | 101 | - Importancia de la confianza 102 | - Combinación de múltiples enfoques 103 | 104 | --- 105 | -------------------------------------------------------------------------------- /Programación/Desarrollo Web/Front-End/Javascript/15. Almacenamiento Web.md: -------------------------------------------------------------------------------- 1 | ## ¿Qué es `localStorage`? 2 | 3 | El **`localStorage`** es una **API del navegador** que permite **almacenar datos de forma persistente** en el navegador del usuario. 4 | Los datos **no se eliminan** al cerrar la pestaña o reiniciar el navegador. 5 | 6 | ## Características 7 | 8 | - Almacena datos en forma de **clave-valor** (`key: value`) 9 | - Solo admite datos en formato **string** 10 | - Tiene una capacidad aproximada de **5 MB** 11 | - Persiste incluso si se cierra el navegador 12 | 13 | | Método | Descripción | 14 | | --------------------- | --------------------------------- | 15 | | `setItem(key, value)` | Guarda un valor | 16 | | `getItem(key)` | Obtiene un valor | 17 | | `removeItem(key)` | Elimina un valor | 18 | | `clear()` | Elimina todos los valores | 19 | | `key(index)` | Devuelve la clave en una posición | 20 | 21 | ```javascript 22 | localStorage.setItem("nombre", "Sebastián"); 23 | localStorage.setItem("edad", "25"); 24 | ``` 25 | 26 | ### Obtener datos: 27 | 28 | ```javascript 29 | let nombre = localStorage.getItem("nombre"); 30 | console.log(nombre); // Sebastián 31 | ``` 32 | 33 | ### Eliminar un dato: 34 | 35 | ```javascript 36 | localStorage.removeItem("edad"); 37 | ``` 38 | 39 | ### Limpiar todo el almacenamiento: 40 | 41 | ```javascript 42 | localStorage.clear(); 43 | ``` 44 | 45 | ## Almacenar objetos 46 | 47 | Recuerda: `localStorage` solo admite **strings**, así que debes usar `JSON.stringify` para guardar objetos, y `JSON.parse` para leerlos. 48 | 49 | ```javascript 50 | let usuario = { 51 | nombre: "Ana", 52 | edad: 30 53 | }; 54 | 55 | // Guardar objeto 56 | localStorage.setItem("usuario", JSON.stringify(usuario)); 57 | 58 | // Recuperar objeto 59 | let datos = JSON.parse(localStorage.getItem("usuario")); 60 | console.log(datos.nombre); // Ana 61 | ``` 62 | 63 | ### Verifica si el navegador soporta `localStorage`: 64 | 65 | ```javascript 66 | if (typeof(Storage) !== "undefined") { 67 | console.log("localStorage soportado"); 68 | } else { 69 | console.log("No soportado"); 70 | } 71 | ``` 72 | 73 | Convierte correctamente los objetos con `JSON.stringify()` y `JSON.parse()` 74 | 75 | ## Ver localStorage en el navegador 76 | 77 | 1. Abrir las herramientas del desarrollador (F12 o clic derecho → Inspeccionar) 78 | 2. Ir a la pestaña **Application (Aplicación)** 79 | 3. En el menú izquierdo, elige **Local Storage** > tu dominio 80 | 81 | ## ¿Cuándo usar `localStorage`? 82 | 83 | - Guardar **preferencias del usuario** 84 | - Almacenar **estado temporal de formularios** 85 | - Recordar elementos de un **carrito de compras** 86 | - Guardar **temas (oscuro/claro)** -------------------------------------------------------------------------------- /Ciencias de la Computación/Inteligencia Artificial/Ingeniería de Prompts/4. Fine-Tuning y RAG para LLMs.md: -------------------------------------------------------------------------------- 1 | ## Benchmarking de Modelos 2 | 3 | ### Importancia del Benchmarking 4 | 5 | - Evaluar rendimiento de diferentes modelos 6 | - Comparar capacidades específicas 7 | - Seleccionar el modelo adecuado para cada tarea 8 | 9 | **Recursos:** 10 | 11 | - LLM Arena Leaderboard 12 | - HuggingFace Arena 13 | - Benchmarks específicos por dominio 14 | 15 | --- 16 | 17 | ## Fine-Tuning 18 | 19 | ### ¿Qué es Fine-Tuning? 20 | 21 | Proceso de adaptación de un modelo preentrenado a necesidades específicas mediante entrenamiento adicional con datos curados. 22 | 23 | ### ¿Cuándo usar Fine-Tuning? 24 | 25 | - Necesitas que el modelo aprenda patrones nuevos 26 | - Especialización en un dominio específico 27 | - Mejora de precisión en tareas particulares 28 | - Consistencia en estilo de respuesta 29 | 30 | ### Datos Requeridos 31 | 32 | - Conjunto de datos curado 33 | - Ejemplos específicos para entrenamiento 34 | - Datos de calidad y relevantes 35 | 36 | ### Implementación 37 | 38 | ```python 39 | # Google AI Studio proporciona herramientas de Fine-Tuning 40 | # https://aistudio.google.com/app/library 41 | ``` 42 | 43 | --- 44 | 45 | ## RAG (Retrieval Augmented Generation) 46 | 47 | ### ¿Qué es RAG? 48 | 49 | Técnica que combina la generación de texto con la recuperación de información externa para proporcionar respuestas más precisas y actualizadas. 50 | 51 | ### Arquitectura RAG 52 | 53 | 1. **Base de Conocimiento** → Vector Database 54 | 2. **Query** → Embedding del usuario 55 | 3. **Retrieval** → Búsqueda de documentos relevantes 56 | 4. **Augmentation** → Combinación con el prompt 57 | 5. **Generation** → Respuesta final del LLM 58 | 59 | ### ¿Cuándo usar RAG? 60 | 61 | - Necesitas respuestas actualizadas 62 | - No quieres modificar el modelo base 63 | - Integrar información externa o privada 64 | - Información que cambia frecuentemente 65 | 66 | ### Datos Requeridos 67 | 68 | - Base de datos de documentos 69 | - Sistema de embeddings 70 | - Índice vectorial para búsqueda 71 | 72 | ### Fine-Tuning vs RAG 73 | 74 | |Aspecto|Fine-Tuning|RAG| 75 | |---|---|---| 76 | |**Ventajas**|• Mejora precisión en tareas específicas
• Reduce dependencia de documentos externos
• Mejora coherencia del estilo|• No requiere modificar modelo base
• Información en tiempo real
• Más eficiente y económico| 77 | |**Desventajas**|• Requiere tiempo y recursos computacionales
• Puede volverse obsoleto
• Necesita reentrenamiento|• Depende de calidad de documentos
• Respuestas menos coherentes si información inconsistente| 78 | 79 | ### Vector Databases 80 | 81 | - Almacenan embeddings de documentos 82 | - Permiten búsqueda semántica eficiente 83 | - Ejemplos: Pinecone, Weaviate, Chroma 84 | 85 | --- 86 | -------------------------------------------------------------------------------- /Ciencias de la Computación/Big Data/Apache Spark I/7. RDD y DataFrames.md: -------------------------------------------------------------------------------- 1 | ## Colecciones Paralelizadas 2 | 3 | Las colecciones paralelizadas permiten convertir colecciones locales en RDD distribuidos. 4 | 5 | ### Ejemplos en Python 6 | 7 | ```python 8 | # Crear RDD desde listas 9 | numbers = sc.parallelize([1, 2, 3, 4, 5]) 10 | strings = sc.parallelize(["hello", "world", "spark"]) 11 | 12 | # Especificar número de particiones 13 | data = sc.parallelize(range(1000), numSlices=10) 14 | 15 | # Desde tuplas 16 | pairs = sc.parallelize([("a", 1), ("b", 2), ("c", 3)]) 17 | ``` 18 | 19 | ### Ejemplos en Scala 20 | 21 | ```scala 22 | val numbers = sc.parallelize(List(1, 2, 3, 4, 5)) 23 | val data = sc.parallelize(1 to 1000, numSlices = 10) 24 | ``` 25 | 26 | --- 27 | 28 | ## Control de Particionamiento 29 | 30 | ```python 31 | # Verificar particiones 32 | print(f"Número de particiones: {rdd.getNumPartitions()}") 33 | 34 | # Ver contenido de cada partición 35 | def print_partition_content(index, iterator): 36 | print(f"Partición {index}: {list(iterator)}") 37 | 38 | rdd.mapPartitionsWithIndex(print_partition_content).collect() 39 | ``` 40 | 41 | --- 42 | 43 | ## Conjuntos de Datos Externos 44 | 45 | ### Archivos de texto 46 | 47 | ```python 48 | # Archivo único 49 | text_rdd = sc.textFile("file:///path/to/file.txt") 50 | 51 | # Múltiples archivos 52 | text_rdd = sc.textFile("file:///path/to/directory/*.txt") 53 | 54 | # Desde HDFS 55 | hdfs_rdd = sc.textFile("hdfs://namenode:port/path/to/file") 56 | 57 | # Desde S3 58 | s3_rdd = sc.textFile("s3a://bucket/path/to/file") 59 | ``` 60 | 61 | ### Archivos estructurados 62 | 63 | ```python 64 | # JSON 65 | json_rdd = sc.textFile("data.json").map(lambda x: json.loads(x)) 66 | 67 | # CSV 68 | csv_rdd = sc.textFile("data.csv") \ 69 | .map(lambda line: line.split(",")) \ 70 | .filter(lambda row: len(row) > 1) 71 | 72 | # Parquet (usando DataFrame) 73 | df = spark.read.parquet("data.parquet") 74 | parquet_rdd = df.rdd 75 | ``` 76 | 77 | ### Bases de datos 78 | 79 | ```python 80 | # JDBC 81 | df = spark.read \ 82 | .format("jdbc") \ 83 | .option("url", "jdbc:postgresql://localhost/test") \ 84 | .option("dbtable", "employees") \ 85 | .option("user", "username") \ 86 | .option("password", "password") \ 87 | .load() 88 | 89 | jdbc_rdd = df.rdd 90 | ``` 91 | 92 | --- 93 | 94 | ## Configuraciones Avanzadas 95 | 96 | ```python 97 | # Configurar compresión 98 | spark.conf.set("spark.sql.files.compressionCodecName", "gzip") 99 | 100 | # Configurar encoding 101 | text_rdd = sc.textFile("file.txt", use_unicode=True) 102 | 103 | # Mínimo de particiones 104 | text_rdd = sc.textFile("file.txt", minPartitions=8) 105 | ``` 106 | 107 | --- 108 | -------------------------------------------------------------------------------- /Programación/Kotlin/11. Programación Asíncrona.md: -------------------------------------------------------------------------------- 1 | # Programación Sincrónica 2 | 3 | Ejecuta las tareas en un orden predeterminado, donde cada operación espera a que la anterior se complete antes de continuar. 4 | 5 | ## Características clave: 6 | 7 | 1. El código se ejecuta en orden secuencial 8 | 2. Cada instrucción espera a que la anterior termine antes de ejecutarse 9 | 3. Las tareas bloquean el hilo principal hasta su finalización 10 | 4. Los errores son más fáciles de rastrear y solucionar 11 | 12 | ```kotlin 13 | fun tarea1Sincrona() { 14 | println("Obtener datos") 15 | Thread.sleep(10000) 16 | } 17 | 18 | fun tarea2Sincrona() { 19 | println("Calcular IVA") 20 | } 21 | 22 | tarea1Sincrona() // Se ejecuta y esperamos 10 segundos 23 | tarea2Sincrona() 24 | ``` 25 | 26 | ## Programación Asíncrona 27 | 28 | Las tareas se ejecutan sin esperar a que finalicen las tareas anteriores. 29 | 30 | ### Características clave: 31 | 32 | 1. Las tareas se ejecutan sin esperar a que finalicen las tareas anteriores 33 | 2. Se pueden ejecutar varias tareas simultáneamente, mejorando la eficiencia 34 | 3. Ideal para gestionar tareas de larga duración (solicitudes de red) 35 | 4. Sin bloqueo para un mejor rendimiento 36 | 5. La ejecución no lineal dificulta el seguimiento de errores 37 | 38 | ## Enfoques de Programación Asíncrona en Kotlin 39 | 40 | 1. **Thread** 41 | 2. **Callbacks** 42 | 3. **Future y Promesas** 43 | 4. **Corrutinas** 44 | 45 | ### Thread 46 | 47 | Cuando iniciamos cualquier programa Kotlin, inmediatamente comienza a ejecutarse un Thread, llamado Thread Principal. 48 | 49 | ```kotlin 50 | val thread = Thread { 51 | Thread.sleep(10000) 52 | System.out.println("Obtuve datos") 53 | } 54 | thread.start() 55 | ``` 56 | 57 | ### Callbacks 58 | 59 | Los callbacks son funciones que se pasan como argumentos a otras funciones y se ejecutan después de que se completa la primera función. 60 | 61 | **Problema**: Callback hell - cuando hay demasiadas callbacks anidadas, el código se vuelve difícil de leer y manejar excepciones. 62 | 63 | ### Multithreading vs Programación Asíncrona 64 | 65 | **Multithreading - Tareas limitadas por la CPU:** 66 | 67 | - Procesamiento de grandes conjuntos de datos 68 | - Representación o transformación de imágenes 69 | - Cálculos matemáticos complejos 70 | - Operaciones en segundo plano 71 | 72 | **Programación asíncrona - Tareas vinculadas a E/S:** 73 | 74 | - Consultas de bases de datos 75 | - Comunicación de red (solicitudes HTTP, llamadas API) 76 | - E/S de archivo 77 | - Operaciones basadas en retardos (temporizadores) 78 | 79 | ### Future y Promise 80 | 81 | La idea detrás de los futuros o promesas es que cuando hacemos una llamada, se nos promete que en algún momento la llamada devolverá un objeto Promise. En Kotlin, se implementan mediante `CompletableFuture` en Java. -------------------------------------------------------------------------------- /Ciencias de la Computación/Big Data/Apache Spark I/8. Operaciones sobre RDD.md: -------------------------------------------------------------------------------- 1 | ## Transformaciones comunes 2 | 3 | Las transformaciones crean nuevos RDD sin ejecutarse inmediatamente. 4 | 5 | ```python 6 | # map 7 | numbers = sc.parallelize([1, 2, 3, 4, 5]) 8 | squared = numbers.map(lambda x: x ** 2) # [1, 4, 9, 16, 25] 9 | 10 | # filter 11 | evens = numbers.filter(lambda x: x % 2 == 0) # [2, 4] 12 | 13 | # flatMap 14 | words = sc.parallelize(["hello world", "spark is great"]) 15 | all_words = words.flatMap(lambda line: line.split(" ")) 16 | 17 | # distinct 18 | data = sc.parallelize([1, 2, 2, 3, 3, 3]) 19 | unique = data.distinct() # [1, 2, 3] 20 | 21 | # union 22 | rdd1 = sc.parallelize([1, 2, 3]) 23 | rdd2 = sc.parallelize([4, 5, 6]) 24 | combined = rdd1.union(rdd2) 25 | 26 | # intersection 27 | rdd1 = sc.parallelize([1, 2, 3, 4]) 28 | rdd2 = sc.parallelize([3, 4, 5, 6]) 29 | common = rdd1.intersection(rdd2) 30 | 31 | # subtract 32 | diff = rdd1.subtract(rdd2) # [1, 2] 33 | ``` 34 | 35 | --- 36 | 37 | ## Transformaciones de agrupación 38 | 39 | ```python 40 | # groupBy 41 | data = sc.parallelize([1, 2, 3, 4, 5, 6]) 42 | grouped = data.groupBy(lambda x: x % 2) 43 | 44 | # sample 45 | sample_data = data.sample(withReplacement=False, fraction=0.5, seed=42) 46 | 47 | # coalesce 48 | coalesced = data.coalesce(2) 49 | 50 | # repartition 51 | repartitioned = data.repartition(10) 52 | ``` 53 | 54 | --- 55 | 56 | ## Acciones principales 57 | 58 | Las acciones disparan la evaluación y retornan resultados. 59 | 60 | ```python 61 | # collect 62 | result = numbers.collect() 63 | 64 | # count 65 | total = numbers.count() 66 | 67 | # first 68 | first_elem = numbers.first() 69 | 70 | # take 71 | first_three = numbers.take(3) 72 | 73 | # takeSample 74 | sample = numbers.takeSample(withReplacement=False, num=3) 75 | 76 | # reduce 77 | sum_all = numbers.reduce(lambda a, b: a + b) 78 | 79 | # fold 80 | sum_with_initial = numbers.fold(0, lambda a, b: a + b) 81 | 82 | # aggregate 83 | def seq_op(acc, value): 84 | return (acc[0] + value, acc[1] + 1) 85 | 86 | def comb_op(acc1, acc2): 87 | return (acc1[0] + acc2[0], acc1[1] + acc2[1]) 88 | 89 | sum_count = numbers.aggregate((0, 0), seq_op, comb_op) 90 | average = sum_count[0] / sum_count[1] 91 | ``` 92 | 93 | --- 94 | 95 | ## Operaciones de guardado 96 | 97 | ```python 98 | # Guardar como archivo de texto 99 | numbers.saveAsTextFile("output/numbers") 100 | 101 | # Guardar como archivo de secuencia 102 | pairs = numbers.map(lambda x: (x, x**2)) 103 | pairs.saveAsSequenceFile("output/pairs") 104 | 105 | # Guardar con compresión 106 | numbers.saveAsTextFile("output/compressed", 107 | compressionCodecClass="org.apache.hadoop.io.compress.GzipCodec") 108 | ``` 109 | 110 | --- 111 | -------------------------------------------------------------------------------- /Programación/Desarrollo Web/Front-End/Javascript/16. Fetch.md: -------------------------------------------------------------------------------- 1 | El método **`fetch()`** se utiliza para hacer **peticiones HTTP** (GET, POST, PUT, DELETE, etc.) de manera sencilla en JavaScript. 2 | Devuelve una **Promise** que se resuelve con la respuesta de la petición. 3 | 4 | ## Sintaxis básica 5 | 6 | ```javascript 7 | fetch(url, opciones) 8 | .then(response => { 9 | // Manejar la respuesta 10 | }) 11 | .catch(error => { 12 | // Manejar errores 13 | }); 14 | ``` 15 | 16 | - **url** → la dirección a la que se hace la petición. 17 | - **opciones** → objeto opcional para configurar el método, cabeceras, body, etc. 18 | 19 | ### Ejemplo GET (obtener datos) 20 | 21 | ```javascript 22 | fetch("https://jsonplaceholder.typicode.com/posts/1") 23 | .then(response => response.json()) // Convertimos la respuesta a JSON 24 | .then(data => { 25 | console.log(data); // Mostramos el objeto recibido 26 | }) 27 | 28 | .catch(error => { 29 | console.error("Error en la petición:", error); 30 | }); 31 | ``` 32 | 33 | Salida esperada en consola: 34 | 35 | ```json 36 | { 37 | "userId": 1, 38 | "id": 1, 39 | "title": "sunt aut facere repellat provident occaecati", 40 | "body": "quia et suscipit..." 41 | } 42 | ``` 43 | 44 | ### Ejemplo POST (enviar datos) 45 | 46 | ```javascript 47 | fetch("https://jsonplaceholder.typicode.com/posts", { 48 | method: "POST", 49 | headers: { 50 | "Content-Type": "application/json" 51 | }, 52 | 53 | body: JSON.stringify({ 54 | title: "Nuevo post", 55 | body: "Contenido del post", 56 | userId: 1 57 | }) 58 | }) 59 | 60 | .then(response => response.json()) 61 | .then(data => { 62 | console.log("Post creado:", data); 63 | }) 64 | 65 | .catch(error => { 66 | console.error("Error en la petición:", error); 67 | }); 68 | ``` 69 | 70 | Se envía un objeto y el servidor responde con el recurso creado. 71 | 72 | ### Ejemplo con **async / await** 73 | 74 | ```javascript 75 | async function obtenerDatos() { 76 | try { 77 | let response = await fetch("https://jsonplaceholder.typicode.com/users"); 78 | let usuarios = await response.json(); 79 | console.log(usuarios); 80 | } catch (error) { 81 | console.error("Error al obtener usuarios:", error); 82 | } 83 | } 84 | 85 | obtenerDatos(); 86 | ``` 87 | 88 | ### Ejemplo mostrando en HTML 89 | 90 | 91 | ```html 92 |
93 | 94 | 103 | ``` 104 | 105 | 106 | 107 | -------------------------------------------------------------------------------- /Programación/Elixir/2. Pattern Matching.md: -------------------------------------------------------------------------------- 1 | # Signo Igual en Elixir 2 | 3 | En Elixir, el signo `=` no es un operador de asignación tradicional, sino un **operador de match** (coincidencia). Esto significa que Elixir trata de hacer coincidir el lado izquierdo con el lado derecho. 4 | 5 | ```elixir 6 | # Esto no es asignación, es pattern matching 7 | x = 1 8 | 1 = x # Esto funciona porque x vale 1 9 | 2 = x # Esto falla: ** (MatchError) no match of right hand side value: 1 10 | ``` 11 | 12 | #### Comportamiento del operador de match: 13 | 14 | ```elixir 15 | # Si la variable no existe, se "asigna" el valor 16 | a = 1 17 | 18 | # Si la variable existe, se verifica la coincidencia 19 | 1 = a # Funciona 20 | 2 = a # Falla 21 | 22 | # Con estructuras de datos 23 | {x, y} = {1, 2} # x = 1, y = 2 24 | {1, z} = {1, 3} # z = 3 25 | {2, w} = {1, 3} # Falla: no coinciden 26 | ``` 27 | 28 | 29 | # Pattern Matching 30 | 31 | Pattern matching es una característica fundamental de Elixir que permite desestructurar datos y hacer coincidir patrones específicos. 32 | 33 | #### Pattern Matching básico: 34 | 35 | elixir 36 | 37 | ```elixir 38 | # Con tuplas 39 | {a, b, c} = {1, 2, 3} 40 | # a = 1, b = 2, c = 3 41 | 42 | # Con listas 43 | [head | tail] = [1, 2, 3, 4] 44 | # head = 1, tail = [2, 3, 4] 45 | 46 | [first, second | rest] = [1, 2, 3, 4, 5] 47 | # first = 1, second = 2, rest = [3, 4, 5] 48 | ``` 49 | 50 | #### Pattern Matching con valores específicos: 51 | 52 | ```elixir 53 | # Hacer match con valores específicos 54 | {:ok, result} = {:ok, "success"} 55 | # result = "success" 56 | 57 | {:error, _reason} = {:error, "file not found"} 58 | # _reason es ignorado con el guión bajo 59 | 60 | # Con maps 61 | %{name: person_name} = %{name: "Juan", age: 30} 62 | # person_name = "Juan" 63 | ``` 64 | 65 | #### Pattern Matching en funciones: 66 | 67 | 68 | ```elixir 69 | defmodule Calculator do 70 | def divide({:ok, a}, {:ok, b}) do 71 | {:ok, a / b} 72 | end 73 | 74 | def divide({:error, reason}, _) do 75 | {:error, reason} 76 | end 77 | 78 | def divide(_, {:error, reason}) do 79 | {:error, reason} 80 | end 81 | end 82 | 83 | # Uso 84 | Calculator.divide({:ok, 10}, {:ok, 2}) # {:ok, 5.0} 85 | Calculator.divide({:error, "invalid"}, {:ok, 2}) # {:error, "invalid"} 86 | ``` 87 | 88 | #### El operador pin (^): 89 | 90 | ```elixir 91 | # El operador ^ fuerza el match con el valor actual de la variable 92 | x = 1 93 | {^x, y} = {1, 2} # y = 2, funciona porque x ya vale 1 94 | {^x, z} = {2, 3} # Falla porque x vale 1, no 2 95 | ``` 96 | 97 | #### Pattern Matching con guardas: 98 | 99 | ```elixir 100 | case {1, 2, 3} do 101 | {a, b, c} when a + b == c -> "suma correcta" 102 | {a, b, c} when a * b == c -> "multiplicación correcta" 103 | _ -> "ningún patrón coincide" 104 | end 105 | ``` -------------------------------------------------------------------------------- /Programación/DevOps/Bash Scripting/2. Lectura y Escritura de las Variables.md: -------------------------------------------------------------------------------- 1 | ### Variables 2 | 3 | Sirven para guardar información y acceder a ella posteriormente. 4 | 5 | Para referirnos a ellas utlizaremos un identificador que estará compuesto por caracteres alfa numéricos o guión bajo, pero empezar por un número. 6 | 7 | Se distingue entre mayúsculas y minúsculas. $VAR no es igual que $var. 8 | 9 | **Lectura y Escritura de Variables** 10 | 11 | Para guardar datos en una variable simplemente tendremos que asignar un valor, utilizando su identificador SIN el símbolo de dólar. 12 | 13 | ```bash 14 | variable="Hola" (Es importante que todo esté junto, sin espacios) 15 | ``` 16 | Y para acceder a su contenido usaremos el símbolo de dólar seguido de su identificador: 17 | 18 | ```bash 19 | echo variable o llaves: echo ${variable} 20 | ``` 21 | 22 | Creamos un archivo con nombre **variable.sh** y escribimos lo siguiente: 23 | 24 | ```bash 25 | #!/bin/bash 26 | 27 | v1="Hola" # Aqui estamos difiniendo la variable v1 28 | echo $v1 Mundo # Aqui $v1 significa Hola 29 | ``` 30 | 31 | luego le damos permisos de ejecución: 32 | 33 | ```bash 34 | chmod +x variable.sh 35 | ``` 36 | 37 | Y ejecutamos con: 38 | 39 | ```bash 40 | bash variable.sh 41 | ``` 42 | 43 | Luego en el mismo script agregaremos las siguientes variables: 44 | 45 | ```bash 46 | #!/bin/bash 47 | 48 | v1="Hola" # Aqui estamos difiniendo la variable v1 49 | echo $v1 Mundo # Aqui $v1 significa Hola 50 | 51 | v2="Hola" 52 | v3="Como estas?" 53 | 54 | echo $v2 $v3 55 | ``` 56 | 57 | Y ejecutamos con: 58 | 59 | ```bash 60 | bash variable.sh 61 | ``` 62 | 63 | 64 | ## Variables del Sistema 65 | 66 | **Variables Predefinidas** 67 | 68 | Además de las variables para consultar los parámetros, disponemos de algunas similares pero que contiene otra tipo de información: 69 | 70 | * **$0** El nombre del Script 71 | 72 | * **`$`** PID del proceso que se le ha asignado al script en ejecución 73 | 74 | * **$?** Resultado devuelto por el último proceso ejecutado 75 | 76 | **Variables de Entorno** 77 | 78 | Son variables que están definidas en el sistema y que podemos usar si la necesitamos. 79 | 80 | Son usados por el propio sistema para su funcionamiento, por ejemplo **$PATH** 81 | 82 | A continuación crearemos un script con nombre **variable2.sh** y escribiremos el siguiente comando: 83 | 84 | ```bash 85 | #!/bin/bash 86 | 87 | echo El script $0 # Nombre del Script 88 | echo Lo esta ejecutando $USER # Variable de entorno 89 | echo Y se le esta asignando el PID:$$ # PID del proceso 90 | echo Usamos el parametro $1 91 | 92 | mensaje="Hola mundo" 93 | 94 | echo Para decir....$mensaje 95 | ``` 96 | 97 | luego le damos permisos de ejecución: 98 | 99 | ```bash 100 | chmod +x variable2.sh 101 | ``` 102 | 103 | Y ejecutamos con: 104 | 105 | ```bash 106 | bash variable2.sh 107 | ``` 108 | -------------------------------------------------------------------------------- /Programación/Kotlin/3. Tipos de Datos y Conversión de Tipos.md: -------------------------------------------------------------------------------- 1 | Kotlin es un lenguaje **estáticamente tipado**, lo que significa que el tipo de cada variable se determina en tiempo de compilación. Aunque permite inferencia de tipos, es importante conocer los tipos básicos y cómo convertir entre ellos. 2 | 3 | ### Tipos de Datos Primitivos 4 | 5 | | Tipo | Descripción | Ejemplo | 6 | |-----------|------------------------------|----------------| 7 | | `Byte` | 8 bits, enteros pequeños | `val x: Byte = 1` | 8 | | `Short` | 16 bits | `val x: Short = 2` | 9 | | `Int` | 32 bits (por defecto entero) | `val x: Int = 10` | 10 | | `Long` | 64 bits | `val x: Long = 100L` | 11 | | `Float` | 32 bits con punto flotante | `val x: Float = 3.14f` | 12 | | `Double` | 64 bits con punto flotante | `val x: Double = 2.718` | 13 | | `Char` | Carácter Unicode | `val x: Char = 'A'` | 14 | | `Boolean` | Verdadero o falso | `val x: Boolean = true` | 15 | | `String` | Cadena de texto | `val x: String = "Hola"` | 16 | 17 | ### Ejemplo Básico 18 | 19 | ```kotlin 20 | fun main() { 21 | val entero: Int = 42 22 | val decimal: Double = 3.14 23 | val letra: Char = 'K' 24 | val mensaje: String = "Kotlin" 25 | val logico: Boolean = true 26 | 27 | println("Entero: $entero") 28 | println("Decimal: $decimal") 29 | println("Letra: $letra") 30 | println("Mensaje: $mensaje") 31 | println("Lógico: $logico") 32 | } 33 | ``` 34 | 35 | ## Conversión de Tipos 36 | 37 | En Kotlin **no hay conversión implícita entre tipos numéricos**, por lo tanto debes hacer conversiones explícitas con funciones como: 38 | 39 | - `toInt()` 40 | - `toDouble()` 41 | - `toFloat()` 42 | - `toLong()` 43 | - `toString()` 44 | - `toBoolean()` 45 | 46 | ### Ejemplo de Conversión 47 | 48 | ```kotlin 49 | fun main() { 50 | val numeroComoString = "123" 51 | val numero: Int = numeroComoString.toInt() 52 | val decimal: Double = numero.toDouble() 53 | 54 | println("Número como String: $numeroComoString") 55 | println("Convertido a Int: $numero") 56 | println("Convertido a Double: $decimal") 57 | } 58 | ``` 59 | 60 | ### Conversión y Nulos 61 | 62 | Cuando conviertes cadenas a números, asegúrate de que la cadena contenga un valor válido. Si no, el programa lanzará una excepción. 63 | 64 | ```kotlin 65 | val entrada = readLine() 66 | val numero = entrada?.toIntOrNull() // Devuelve null si falla 67 | if (numero != null) { 68 | println("Número ingresado: $numero") 69 | } else { 70 | println("No ingresaste un número válido.") 71 | } 72 | ``` 73 | 74 | ### Buenas Prácticas 75 | 76 | - Usa `toIntOrNull()`, `toDoubleOrNull()`, etc., para evitar errores en tiempo de ejecución. 77 | - Evita conversiones innecesarias para mantener el rendimiento. 78 | - Prefiere `val` para inmutabilidad a menos que necesites cambiar el valor. 79 | -------------------------------------------------------------------------------- /Ciencias de la Computación/Base de Datos/SQL/MySQL/3. Lenguaje de Definición de Datos (DDL).md: -------------------------------------------------------------------------------- 1 | ## Lenguaje de Definición de Datos (DDL) 2 | 3 | El **DDL (Data Definition Language)** permite definir, modificar y eliminar la estructura de las bases de datos (tablas, columnas, llaves, etc.). 4 | 5 | --- 6 | 7 | ## Tipos de Datos en SQL 8 | 9 | ### Numéricos 10 | 11 | - `INT` / `INTEGER`: Entero 12 | - `DECIMAL(p,s)` / `NUMERIC`: Decimales exactos 13 | - `FLOAT`, `DOUBLE`: Reales de punto flotante 14 | 15 | ### Texto 16 | 17 | - `CHAR(n)`: Cadena de longitud fija 18 | - `VARCHAR(n)`: Cadena de longitud variable 19 | - `TEXT`: Texto largo 20 | 21 | ### Fechas y Tiempos 22 | 23 | - `DATE`: Fecha (YYYY-MM-DD) 24 | - `DATETIME`: Fecha y hora (YYYY-MM-DD HH:MM:SS) 25 | - `TIMESTAMP`: Marca de tiempo 26 | 27 | ### Booleano 28 | 29 | - `BOOLEAN` / `TINYINT(1)`: Verdadero (1) o Falso (0) 30 | 31 | --- 32 | 33 | ## Primary Key 34 | 35 | Una **Primary Key** identifica de forma única cada fila de una tabla. 36 | 37 | - No puede ser `NULL` 38 | - Debe ser única 39 | - Una tabla solo puede tener una clave primaria 40 | 41 | ```sql 42 | CREATE TABLE empleados ( 43 | id INT PRIMARY KEY, 44 | nombre VARCHAR(100) 45 | ); 46 | ``` 47 | 48 | --- 49 | 50 | ## Foreign Key 51 | 52 | Una **Foreign Key** establece una relación entre dos tablas. 53 | 54 | - Enlaza la columna de una tabla con la clave primaria de otra 55 | - Mantiene la integridad referencial 56 | 57 | ```sql 58 | CREATE TABLE pedidos ( 59 | id INT PRIMARY KEY, 60 | empleado_id INT, 61 | FOREIGN KEY (empleado_id) REFERENCES empleados(id) 62 | ); 63 | ``` 64 | 65 | --- 66 | 67 | ## Alterar Tablas 68 | 69 | ### Agregar/Quitar columnas 70 | 71 | ```sql 72 | ALTER TABLE empleados ADD correo VARCHAR(100); 73 | ALTER TABLE empleados DROP COLUMN correo; 74 | ``` 75 | 76 | ### Eliminar tablas 77 | 78 | ```sql 79 | DROP TABLE empleados; 80 | ``` 81 | 82 | ### Truncar tablas 83 | 84 | ```sql 85 | TRUNCATE TABLE empleados; 86 | ``` 87 | 88 | --- 89 | 90 | ## ALTER TABLE 91 | 92 | ### Agregar/Quitar PRIMARY KEY 93 | 94 | ```sql 95 | ALTER TABLE empleados ADD PRIMARY KEY (id); 96 | ALTER TABLE empleados DROP PRIMARY KEY; 97 | ``` 98 | 99 | ### Agregar/Quitar FOREIGN KEY 100 | 101 | ```sql 102 | ALTER TABLE pedidos 103 | ADD CONSTRAINT fk_empleado 104 | FOREIGN KEY (empleado_id) REFERENCES empleados(id); 105 | 106 | ALTER TABLE pedidos DROP FOREIGN KEY fk_empleado; 107 | ``` 108 | 109 | ### Agregar UNIQUE 110 | 111 | ```sql 112 | ALTER TABLE empleados ADD CONSTRAINT unique_correo UNIQUE (correo); 113 | ``` 114 | 115 | ### Cambiar nombre de columna 116 | 117 | ```sql 118 | ALTER TABLE empleados CHANGE nombre nombre_completo VARCHAR(100); 119 | ``` 120 | 121 | ### Cambiar tipo de dato 122 | 123 | ```sql 124 | ALTER TABLE empleados MODIFY nombre_completo TEXT; 125 | ``` 126 | 127 | --- 128 | -------------------------------------------------------------------------------- /Programación/Desarrollo Web/Front-End/Javascript/19. Objeto Date.md: -------------------------------------------------------------------------------- 1 | El objeto **`Date`** en JavaScript se utiliza para trabajar con fechas y horas. 2 | Permite crear, obtener y modificar fechas. 3 | 4 | ## Crear un objeto Date 5 | 6 | ```javascript 7 | let fechaActual = new Date(); 8 | console.log(fechaActual); 9 | ``` 10 | 11 | Muestra la fecha y hora actual. 12 | 13 | ## Crear fechas específicas 14 | 15 | ```javascript 16 | let fecha1 = new Date("2025-09-15"); 17 | let fecha2 = new Date(2025, 8, 15); // Año, Mes (0=Enero), Día 18 | let fecha3 = new Date(2025, 8, 15, 10, 30, 0); // Año, Mes, Día, Hora, Min, Seg 19 | 20 | console.log(fecha1); 21 | console.log(fecha2); 22 | console.log(fecha3); 23 | ``` 24 | 25 | ## Métodos para obtener información 26 | 27 | ```javascript 28 | let fecha = new Date(); 29 | 30 | console.log("Año:", fecha.getFullYear()); // 2025 31 | console.log("Mes:", fecha.getMonth()); // 0-11 (0 = enero) 32 | console.log("Día del mes:", fecha.getDate()); // 1-31 33 | console.log("Día de la semana:", fecha.getDay()); // 0=domingo, 6=sábado 34 | console.log("Horas:", fecha.getHours()); // 0-23 35 | console.log("Minutos:", fecha.getMinutes()); // 0-59 36 | console.log("Segundos:", fecha.getSeconds()); // 0-59 37 | console.log("Milisegundos:", fecha.getMilliseconds()); // 0-999 38 | console.log("Timestamp:", fecha.getTime()); // ms desde 1970 39 | ``` 40 | 41 | ## Métodos para establecer valores 42 | 43 | ```javascript 44 | let fecha = new Date(); 45 | 46 | fecha.setFullYear(2030); 47 | fecha.setMonth(5); // Junio 48 | fecha.setDate(10); 49 | fecha.setHours(14); 50 | fecha.setMinutes(45); 51 | 52 | console.log(fecha); 53 | ``` 54 | 55 | ## Formatos de fecha 56 | 57 | ```javascript 58 | let fecha = new Date(); 59 | 60 | console.log("Formato local:", fecha.toLocaleDateString()); // 15/9/2025 61 | console.log("Formato ISO:", fecha.toISOString()); // 2025-09-15T14:30:00.000Z 62 | console.log("Formato string:", fecha.toString()); // Mon Sep 15 2025 ... 63 | ``` 64 | 65 | ## Comparar fechas 66 | 67 | ```javascript 68 | let hoy = new Date(); 69 | let navidad = new Date("2025-12-25"); 70 | 71 | if (hoy < navidad) { 72 | console.log("Aún falta para Navidad 🎄"); 73 | } else { 74 | console.log("Ya pasó Navidad 🎅"); 75 | } 76 | ``` 77 | 78 | ## Calcular diferencia entre fechas 79 | 80 | ```javascript 81 | // Creamos la fecha de inicio 82 | let inicio = new Date("2025-01-01"); // Objeto Date → 1 de enero de 2025 83 | 84 | // Creamos la fecha de fin 85 | let fin = new Date("2025-09-15"); // Objeto Date → 15 de septiembre de 2025 86 | 87 | // Restamos las fechas → resultado en milisegundos 88 | let diferenciaMs = fin - inicio; // Ej: 22291200000 ms 89 | 90 | // Convertimos milisegundos a días 91 | let dias = diferenciaMs / (1000 * 60 * 60 * 24); 92 | // 1000 ms = 1s, 60s = 1min, 60min = 1h, 24h = 1 día 93 | 94 | // Mostramos el resultado en consola 95 | console.log("Días entre fechas:", dias); // 257 96 | ``` 97 | -------------------------------------------------------------------------------- /Ciencias de la Computación/Inteligencia Artificial/IA Generativa/3. El Futuro de la IA.md: -------------------------------------------------------------------------------- 1 | ## Predicciones Futuras 2 | 3 | ### Avances Tecnológicos Esperados (2025-2030) 4 | 5 | **Modelos Multimodales Avanzados:** 6 | 7 | - Integración completa de texto, imagen, audio y video 8 | - Comprensión contextual entre modalidades 9 | - Capacidades de razonamiento visual-textual mejoradas 10 | 11 | **IA Generativa Especializada:** 12 | 13 | - Modelos específicos por industria 14 | - Personalización extrema basada en datos del usuario 15 | - Generación en tiempo real con latencia ultra-baja 16 | 17 | **Eficiencia Computacional:** 18 | 19 | - Modelos más pequeños con igual o mejor rendimiento 20 | - Optimización para dispositivos móviles y edge computing 21 | - Reducción significativa en consumo energético 22 | 23 | --- 24 | 25 | ## Integración en Sectores Clave 26 | 27 | **Educación:** 28 | 29 | - Tutores personalizados impulsados por IA 30 | - Creación automática de material educativo 31 | - Evaluación y retroalimentación instantánea 32 | 33 | **Salud:** 34 | 35 | - Diagnóstico médico asistido por IA 36 | - Generación de tratamientos personalizados 37 | - Investigación acelerada de medicamentos 38 | 39 | **Entretenimiento:** 40 | 41 | - Creación de contenido interactivo personalizado 42 | - Videojuegos con narrativas generadas dinámicamente 43 | - Producción cinematográfica automatizada 44 | 45 | --- 46 | 47 | ## El Futuro del Trabajo 48 | 49 | ### Transformación del Mercado Laboral 50 | 51 | **Empleos en Evolución:** 52 | 53 | - Roles híbridos 54 | - Supervisión de IA 55 | - Creatividad aumentada 56 | 57 | --- 58 | 59 | ### Nuevas Profesiones Emergentes 60 | 61 | **Especialistas en IA Generativa:** 62 | 63 | - Ingenieros de prompts 64 | - Curadores de datasets 65 | - Especialistas en ética de IA 66 | - Auditores de algoritmos 67 | 68 | **Roles de Gestión:** 69 | 70 | - Gerentes de transformación digital 71 | - Consultores en implementación de IA 72 | - Especialistas en cambio organizacional 73 | 74 | --- 75 | 76 | ### Habilidades del Futuro 77 | 78 | **Habilidades Técnicas:** 79 | 80 | - Comprensión básica de IA y ML 81 | - Capacidad de trabajar con herramientas de IA 82 | - Pensamiento computacional 83 | - Análisis de datos 84 | 85 | **Habilidades Blandas:** 86 | 87 | - Creatividad y pensamiento crítico 88 | - Adaptabilidad y aprendizaje continuo 89 | - Colaboración humano-IA 90 | - Comunicación efectiva 91 | - Resolución de problemas complejos 92 | 93 | --- 94 | 95 | ### Estrategias de Adaptación 96 | 97 | **Para Profesionales:** 98 | 99 | 1. Aprendizaje continuo 100 | 2. Experimentación práctica 101 | 3. Desarrollo de habilidades complementarias 102 | 4. Networking 103 | 104 | **Para Organizaciones:** 105 | 106 | 1. Inversión en capacitación 107 | 2. Cultura de innovación 108 | 3. Rediseño de procesos 109 | 4. Planificación estratégica 110 | 111 | --- 112 | -------------------------------------------------------------------------------- /Ciencias de la Computación/Computación Cuántica/2. El Laboratorio de Superposición.md: -------------------------------------------------------------------------------- 1 | ## Conceptos Fundamentales 2 | 3 | La **superposición cuántica** permite a un qubit existir en múltiples estados simultáneamente. 4 | Es el primer "superpoder" de la computación cuántica y la base de su ventaja. 5 | 6 | --- 7 | 8 | ## Definición Matemática 9 | 10 | Un qubit en superposición se describe como: 11 | 12 | [ |\psi⟩ = α|0⟩ + β|1⟩ ] 13 | 14 | - α y β son amplitudes complejas 15 | - |α|² → probabilidad de medir |0⟩ 16 | - |β|² → probabilidad de medir |1⟩ 17 | - Normalización: |α|² + |β|² = 1 18 | 19 | --- 20 | 21 | ## Representación Geométrica: Esfera de Bloch 22 | 23 | Visualización tridimensional del estado de un qubit. 24 | 25 | - **Polo Norte**: |0⟩ 26 | - **Polo Sur**: |1⟩ 27 | - **Ecuador**: superposición máxima 28 | - **Puntos internos**: estados mixtos (con decoherencia) 29 | 30 | [ |\psi⟩ = \cos(\theta/2)|0⟩ + e^{iφ}\sin(\theta/2)|1⟩ ] 31 | 32 | - θ: ángulo polar (0 ≤ θ ≤ π) 33 | - φ: ángulo azimutal (0 ≤ φ < 2π) 34 | 35 | --- 36 | 37 | ## Creación de Superposición 38 | 39 | ### Compuerta Hadamard (H) 40 | 41 | La más importante para crear superposición. 42 | 43 | [ H|0⟩ = \frac{|0⟩ + |1⟩}{\sqrt{2}}, \quad H|1⟩ = \frac{|0⟩ - |1⟩}{\sqrt{2}} ] 44 | 45 | Matriz: [ H = \frac{1}{\sqrt{2}} \begin{bmatrix} 1 & 1 \ 1 & -1 \end{bmatrix} ] 46 | 47 | --- 48 | 49 | ## Ejemplos Prácticos 50 | 51 | ### Moneda Cuántica 52 | 53 | - Estado inicial: |0⟩ (cara) 54 | - Aplicar H → (|0⟩ + |1⟩)/√2 55 | - Resultado: 50% cara, 50% cruz 56 | 57 | ### Superposición de n Qubits 58 | 59 | - n qubits → representan 2ⁿ estados simultáneamente 60 | - Ejemplo con 3 qubits: 61 | |000⟩ + |001⟩ + |010⟩ + |011⟩ + |100⟩ + |101⟩ + |110⟩ + |111⟩ 62 | 63 | --- 64 | 65 | ## Medición y Colapso 66 | 67 | - La medición colapsa el estado cuántico 68 | - Probabilidades determinadas por |amplitud|² 69 | - Proceso irreversible en sistemas ideales 70 | 71 | ### Bases de Medición 72 | 73 | - **Computacional**: {|0⟩, |1⟩} 74 | - **Hadamard**: {|+⟩, |-⟩} 75 | - **Circular**: {|↻⟩, |↺⟩} 76 | 77 | --- 78 | 79 | ## Interferencia Cuántica 80 | 81 | - **Constructiva**: fases iguales → aumentan probabilidad 82 | - **Destructiva**: fases opuestas → cancelan probabilidad 83 | 84 | --- 85 | 86 | ## Aplicaciones de la Superposición 87 | 88 | - **Deutsch**: determina funciones en una consulta 89 | - **Grover**: búsqueda más rápida cuadráticamente 90 | - **Transformada de Fourier Cuántica**: base de muchos algoritmos 91 | 92 | ### Paralelismo Cuántico 93 | 94 | - Evaluación simultánea de múltiples entradas 95 | - Exponencial ventaja en problemas específicos 96 | 97 | --- 98 | 99 | ## Experimentos Mentales 100 | 101 | ### El Gato de Schrödinger 102 | 103 | - Analogía con el experimento mental clásico 104 | - Ilustra superposición macroscópica 105 | - Señala límites entre mundo cuántico y clásico 106 | 107 | --- 108 | -------------------------------------------------------------------------------- /Programación/C Sharp/8. Métodos de Escritura.md: -------------------------------------------------------------------------------- 1 | En C#, la clase `Console` proporciona varios métodos **`Write()`** para escribir datos en la consola. 2 | 3 | --- 4 | 5 | ## Console.Write() 6 | 7 | - Escribe el texto o valor especificado en la consola **sin salto de línea**. 8 | 9 | ```csharp 10 | Console.Write(valor); 11 | ``` 12 | 13 | --- 14 | 15 | ## Console.WriteLine() 16 | 17 | - Similar a `Write()`, pero **agrega un salto de línea** al final. 18 | 19 | ```csharp 20 | Console.WriteLine(valor); 21 | ``` 22 | 23 | --- 24 | 25 | ## Console.Write(char[] buffer) 26 | 27 | - Escribe un arreglo de caracteres en la consola. 28 | 29 | ```csharp 30 | char[] mensaje = {'H', 'o', 'l', 'a'}; 31 | Console.Write(mensaje); // Escribe "Hola" 32 | ``` 33 | 34 | --- 35 | 36 | ## Console.Write(string format, params object[] args) 37 | 38 | - Escribe texto formateado con placeholders `{}`. 39 | 40 | ```csharp 41 | int edad = 25; 42 | string nombre = "Juan"; 43 | Console.Write("Mi nombre es {0} y tengo {1} años.", nombre, edad); 44 | ``` 45 | 46 | --- 47 | 48 | ## Console.Write(object obj) 49 | 50 | - Escribe un objeto en la consola usando su método `ToString()`. 51 | 52 | ```csharp 53 | object obj = 12345; 54 | Console.Write(obj); // Convierte el objeto a texto y lo escribe 55 | ``` 56 | 57 | --- 58 | 59 | # Pedir y Leer Datos del Usuario con ReadLine() 60 | 61 | El método `ReadLine()` permite leer una línea completa de texto ingresada por el usuario. 62 | 63 | --- 64 | 65 | ## Sintaxis 66 | 67 | ```csharp 68 | string input = Console.ReadLine(); 69 | ``` 70 | 71 | --- 72 | 73 | ## Ejemplo 74 | 75 | ```csharp 76 | using System; 77 | 78 | class Program 79 | { 80 | static void Main() 81 | { 82 | Console.WriteLine("¿Cuál es tu nombre?"); 83 | string nombre = Console.ReadLine(); 84 | Console.WriteLine("Hola, " + nombre + "!"); 85 | } 86 | } 87 | ``` 88 | 89 | --- 90 | 91 | ## Convertir Datos Ingresados 92 | 93 | El valor obtenido con `ReadLine()` siempre es un **string**, por lo que debe convertirse si se requiere otro tipo. 94 | 95 | --- 96 | 97 | ### Convertir a Entero 98 | 99 | ```csharp 100 | using System; 101 | 102 | class Program 103 | { 104 | static void Main() 105 | { 106 | Console.WriteLine("Introduce tu edad:"); 107 | string input = Console.ReadLine(); 108 | int edad = int.Parse(input); 109 | Console.WriteLine("Tu edad es: " + edad); 110 | } 111 | } 112 | ``` 113 | 114 | --- 115 | 116 | ### Convertir a Número Decimal 117 | 118 | ```csharp 119 | using System; 120 | 121 | class Program 122 | { 123 | static void Main() 124 | { 125 | Console.WriteLine("Introduce el precio:"); 126 | string input = Console.ReadLine(); 127 | double precio = double.Parse(input); 128 | Console.WriteLine("El precio es: " + precio); 129 | } 130 | } 131 | ``` 132 | 133 | --- 134 | -------------------------------------------------------------------------------- /Programación/C Sharp/7. Tipos de Conversión.md: -------------------------------------------------------------------------------- 1 | 2 | En C#, la clase `Console` proporciona varios métodos **`Write()`** para escribir datos en la consola. 3 | 4 | --- 5 | 6 | ## Console.Write() 7 | 8 | - Escribe el texto o valor especificado en la consola **sin salto de línea**. 9 | 10 | ```csharp 11 | Console.Write(valor); 12 | ``` 13 | 14 | --- 15 | 16 | ## Console.WriteLine() 17 | 18 | - Similar a `Write()`, pero **agrega un salto de línea** al final. 19 | 20 | ```csharp 21 | Console.WriteLine(valor); 22 | ``` 23 | 24 | --- 25 | 26 | ## Console.Write(char[] buffer) 27 | 28 | - Escribe un arreglo de caracteres en la consola. 29 | 30 | ```csharp 31 | char[] mensaje = {'H', 'o', 'l', 'a'}; 32 | Console.Write(mensaje); // Escribe "Hola" 33 | ``` 34 | 35 | --- 36 | 37 | ## Console.Write(string format, params object[] args) 38 | 39 | - Escribe texto formateado con placeholders `{}`. 40 | 41 | ```csharp 42 | int edad = 25; 43 | string nombre = "Juan"; 44 | Console.Write("Mi nombre es {0} y tengo {1} años.", nombre, edad); 45 | ``` 46 | 47 | --- 48 | 49 | ## Console.Write(object obj) 50 | 51 | - Escribe un objeto en la consola usando su método `ToString()`. 52 | 53 | ```csharp 54 | object obj = 12345; 55 | Console.Write(obj); // Convierte el objeto a texto y lo escribe 56 | ``` 57 | 58 | --- 59 | 60 | # Pedir y Leer Datos del Usuario con ReadLine() 61 | 62 | El método `ReadLine()` permite leer una línea completa de texto ingresada por el usuario. 63 | 64 | --- 65 | 66 | ## Sintaxis 67 | 68 | ```csharp 69 | string input = Console.ReadLine(); 70 | ``` 71 | 72 | --- 73 | 74 | ## Ejemplo 75 | 76 | ```csharp 77 | using System; 78 | 79 | class Program 80 | { 81 | static void Main() 82 | { 83 | Console.WriteLine("¿Cuál es tu nombre?"); 84 | string nombre = Console.ReadLine(); 85 | Console.WriteLine("Hola, " + nombre + "!"); 86 | } 87 | } 88 | ``` 89 | 90 | --- 91 | 92 | ## Convertir Datos Ingresados 93 | 94 | El valor obtenido con `ReadLine()` siempre es un **string**, por lo que debe convertirse si se requiere otro tipo. 95 | 96 | --- 97 | 98 | ### Convertir a Entero 99 | 100 | ```csharp 101 | using System; 102 | 103 | class Program 104 | { 105 | static void Main() 106 | { 107 | Console.WriteLine("Introduce tu edad:"); 108 | string input = Console.ReadLine(); 109 | int edad = int.Parse(input); 110 | Console.WriteLine("Tu edad es: " + edad); 111 | } 112 | } 113 | ``` 114 | 115 | --- 116 | 117 | ### Convertir a Número Decimal 118 | 119 | ```csharp 120 | using System; 121 | 122 | class Program 123 | { 124 | static void Main() 125 | { 126 | Console.WriteLine("Introduce el precio:"); 127 | string input = Console.ReadLine(); 128 | double precio = double.Parse(input); 129 | Console.WriteLine("El precio es: " + precio); 130 | } 131 | } 132 | ``` 133 | 134 | --- 135 | -------------------------------------------------------------------------------- /Programación/DevOps/Administración de Servidores Linux/Servidor DNS/Servidor DNS.md: -------------------------------------------------------------------------------- 1 | Un **servidor DNS (Domain Name System)** es un sistema que traduce los nombres de dominio (como `google.com`) en direcciones IP (como `142.250.217.78`). Esto es necesario porque los dispositivos en la red se comunican a través de direcciones IP, pero los nombres de dominio son más fáciles de recordar para los humanos. 2 | ## Instalamos el paquete 3 | 4 | ```bash 5 | sudo apt install bind9 bind9-utils -y 6 | ``` 7 | 8 | ## Configuración 9 | 10 | ```bash 11 | sudo ufw status 12 | 13 | sudo ufw allow bind9 14 | 15 | sudo systemctl status bind9 16 | ``` 17 | 18 | sudo nano /etc/bind/named.conf.options y copiamos el siguiente código 19 | 20 | ```bash 21 | listen-on { any; }; 22 | allow-query { localhost; 10.10.10.0/24; };   aquí ponemos la IP de la subred 23 | ``` 24 | 25 | ![[Programación/DevOps/Administración de Servidores Linux/Servidor DNS/Imagen1.png]] 26 | 27 | sudo nano /etc/default/named 28 | 29 | ![[Programación/DevOps/Administración de Servidores Linux/Servidor DNS/Imagen2.png]] 30 | 31 | ```bash 32 | sudo named-checkconf 33 | 34 | sudo systemctl restart bind9 35 | ``` 36 | 37 | sudo nano /etc/bind/named.conf.local y copiamos el siguiente código 38 | 39 | ```bash 40 | zone "router.local" IN { 41 |         type master; 42 |         file "/etc/bind/zonas/db.router.local"; 43 | 44 | }; 45 | 46 | zone "10.10.10.in-addr-.arpa" { aquí debe ir la dirección IP inversa 47 |        type master; 48 |        file "/etc/bind/zonas/db.10.10.10"; aquí debe ir la dirección IP inversa 49 | 50 | }; 51 | ``` 52 | 53 | ![[Programación/DevOps/Administración de Servidores Linux/Servidor DNS/Imagen3.png]] 54 | 55 | Guardamos y escribimos los siguientes comandos 56 | 57 | ```bash 58 | sudo mkdir /etc/bind/zonas 59 | 60 | sudo cp /etc/bind/db.local /etc/bind/zonas/db.router.local 61 | ``` 62 | 63 | sudo nano /etc/bind/zonas/db.router.local y nos debe quedar así 64 | 65 | ![[Programación/DevOps/Administración de Servidores Linux/Servidor DNS/Imagen4.png]] 66 | 67 | ```bash 68 | sudo cp /etc/bind/zonas/db.router.local /etc/bind/zonas/db.10.10.10 69 | 70 | sudo nano /etc/bind/zonas/db.10.10.10 71 | ``` 72 | 73 | ![[Programación/DevOps/Administración de Servidores Linux/Servidor DNS/Imagen5.png]] 74 | 75 | ```bash 76 | sudo named-checkzone router.local /etc/bind/zonas/db.router.local 77 | 78 | sudo named-checkzone 10.10.10.in-addr.arpa /etc/bind/zonas/db.10.10.10 aquí debe ir la dirección IP inversa 79 | 80 | sudo systemctl restart bind9 81 | ``` 82 | 83 | sudo nano /etc/resolv.conf   y nos debe quedar así 84 | 85 | ![[Imagen6.png]] 86 | 87 | ## Creamos el backup y hacemos permanente los cambios 88 | 89 | ```bash 90 | sudo cp /etc/resolv.conf /etc/resolv.conf.bak 91 | 92 | sudo chattr +i /etc/resolv.conf.bak 93 | 94 | sudo rm /etc/resolv.conf 95 | 96 | sudo cp /etc/resolv.conf.bak /etc/resolv.conf 97 | ``` 98 | 99 | ![https://www.youtube.com/watch?v=jq5potgQ7_k](https://www.youtube.com/watch?v=jq5potgQ7_k) -------------------------------------------------------------------------------- /Ciencias de la Computación/Inteligencia Artificial/IA Generativa/6. Ingeniería de Prompt.md: -------------------------------------------------------------------------------- 1 | ## Fundamentos de los Modelos de Lenguaje 2 | 3 | ### Tokenización 4 | 5 | Los **tokens** son las unidades básicas que procesa el modelo: 6 | 7 | - Palabras completas 8 | - Subpalabras 9 | - Caracteres especiales 10 | 11 | ### Parámetro de Temperatura 12 | 13 | La **temperatura** controla la aleatoriedad en la selección de tokens: 14 | 15 | - Temp = 0 → determinista 16 | - Temp < 1 → conservador 17 | - Temp = 1 → natural 18 | - Temp > 1 → creativo 19 | 20 | #### Configuraciones Recomendadas 21 | 22 | 1. Análisis factual: 0.1–0.3 23 | 2. Conversación natural: 0.7–0.9 24 | 3. Escritura creativa: 1.0–1.5 25 | 26 | --- 27 | 28 | ## Ingeniería de Prompts 29 | 30 | ### ¿Qué es? 31 | 32 | Diseñar, optimizar y refinar instrucciones para obtener respuestas precisas y útiles. 33 | 34 | ### Principales Recomendaciones 35 | 36 | **Claridad y Especificidad** 37 | ❌ Prompt vago 38 | ✅ Prompt específico 39 | 40 | **Estructura Clara** 41 | Plantilla: CONTEXTO, TAREA, FORMATO, RESTRICCIONES 42 | 43 | **Proporcionar Ejemplos** 44 | Ejemplo de clasificación de sentimientos 45 | 46 | **Definir el Rol** 47 | Ejemplo: “Actúa como analista financiero…” 48 | 49 | **Pedir Razonamiento Explícito** 50 | Ejemplo: “Explica tu razonamiento paso a paso…” 51 | 52 | **Usar Instrucciones Negativas** 53 | Ejemplo: “NO incluyas información especulativa…” 54 | 55 | --- 56 | 57 | ## Técnicas Zero-shot y Few-shot 58 | 59 | ### Zero-shot Prompting 60 | 61 | Tarea sin ejemplos previos. 62 | 63 | ### Few-shot Prompting 64 | 65 | Proporcionar 1–5 ejemplos antes de la tarea. 66 | 67 | ### Chain of Thought (CoT) 68 | 69 | - Zero-shot CoT: añadir “piensa paso a paso” 70 | - Few-shot CoT: ejemplos con razonamiento explícito 71 | 72 | --- 73 | 74 | ## Técnicas Avanzadas 75 | 76 | ### Least-to-Most Prompting 77 | 78 | Descomponer problemas complejos en pasos simples. 79 | 80 | ### Self-Consistency 81 | 82 | Generar múltiples razonamientos y elegir el más frecuente. 83 | 84 | ### Chain of Verification (CoVe) 85 | 86 | Proceso de verificación en pasos: respuesta inicial, preguntas de verificación, corrección final. 87 | 88 | --- 89 | 90 | ## Mejores Prácticas Generales 91 | 92 | ### Checklist para Prompts Efectivos 93 | 94 | - Objetivo claro 95 | - Contexto suficiente 96 | - Formato especificado 97 | - Ejemplos incluidos 98 | - Casos extremos considerados 99 | 100 | ### Principios Fundamentales 101 | 102 | 1. Claridad sobre creatividad 103 | 2. Iteración constante 104 | 3. Contexto es clave 105 | 4. Validación sistemática 106 | 107 | ### Cuándo Usar Cada Técnica 108 | 109 | - **Zero-shot**: tareas simples y generales 110 | - **Few-shot**: tareas complejas o especializadas 111 | - **Chain of Thought**: problemas matemáticos o lógicos 112 | - **Avanzadas**: problemas muy complejos, alta precisión 113 | 114 | --- 115 | -------------------------------------------------------------------------------- /Programación/Elixir/1. Fundamentos.md: -------------------------------------------------------------------------------- 1 | # ¿Qué es Elixir? 2 | 3 | Elixir es un lenguaje de programación dinámico y funcional diseñado para crear aplicaciones mantenibles y escalables. Fue creado por José Valim en 2011 y se ejecuta sobre la máquina virtual de Erlang (BEAM). 4 | 5 | ## Características principales: 6 | 7 | - **Concurrencia**: Elixir utiliza el modelo de actores de Erlang, permitiendo miles de procesos ligeros 8 | - **Tolerancia a fallos**: Filosofía "let it crash" con supervisión de procesos 9 | - **Inmutabilidad**: Los datos son inmutables por defecto 10 | - **Pattern matching**: Potente sistema de coincidencia de patrones 11 | - **Programación funcional**: Paradigma funcional con funciones de primera clase 12 | 13 | ## Ventajas de Elixir: 14 | 15 | - Alto rendimiento y escalabilidad 16 | - Excelente para sistemas distribuidos 17 | - Sintaxis limpia y expresiva 18 | - Comunidad activa y ecosistema robusto 19 | - Herramientas de desarrollo excepcionales 20 | 21 | 22 | # Instalación de Elixir en Linux 23 | 24 | ## Método 1: Usando el gestor de paquetes del sistema 25 | 26 | Ubuntu/Debian: 27 | 28 | ```bash 29 | # Actualizar repositorios 30 | sudo apt update 31 | 32 | # Instalar Elixir 33 | sudo apt install elixir 34 | 35 | # Verificar instalación 36 | elixir --version 37 | ``` 38 | 39 | CentOS/RHEL/Fedora: 40 | 41 | ```bash 42 | # Fedora 43 | sudo dnf install elixir 44 | 45 | # CentOS/RHEL (requiere EPEL) 46 | sudo yum install epel-release 47 | sudo yum install elixir 48 | 49 | # Verificar instalación 50 | elixir --version 51 | ``` 52 | 53 | ## Método 2: Usando ASDF (Recomendado para desarrollo) 54 | 55 | ASDF es un gestor de versiones que permite manejar múltiples versiones de Elixir. 56 | 57 | ```bash 58 | # Instalar ASDF 59 | git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.10.2 60 | 61 | # Agregar a shell (bash) 62 | echo '. $HOME/.asdf/asdf.sh' >> ~/.bashrc 63 | echo '. $HOME/.asdf/completions/asdf.bash' >> ~/.bashrc 64 | 65 | # Recargar shell 66 | source ~/.bashrc 67 | 68 | # Agregar plugin de Erlang y Elixir 69 | asdf plugin add erlang 70 | asdf plugin add elixir 71 | 72 | # Instalar Erlang (prerequisito) 73 | asdf install erlang latest 74 | 75 | # Instalar Elixir 76 | asdf install elixir latest 77 | 78 | # Establecer versiones globales 79 | asdf global erlang [version] 80 | asdf global elixir [version] 81 | ``` 82 | 83 | ## Método 3: Compilación desde código fuente 84 | 85 | ```bash 86 | # Dependencias necesarias 87 | sudo apt install build-essential git 88 | 89 | # Clonar repositorio 90 | git clone https://github.com/elixir-lang/elixir.git 91 | cd elixir 92 | 93 | # Compilar 94 | make clean test 95 | 96 | # Agregar al PATH 97 | export PATH="$PWD/bin:$PATH" 98 | ``` 99 | 100 | ## Verificación de instalación 101 | 102 | ```bash 103 | # Verificar versiones 104 | elixir --version 105 | iex --version 106 | 107 | # Iniciar shell interactivo 108 | iex 109 | ``` -------------------------------------------------------------------------------- /Programación/Desarrollo Web/Front-End/Javascript/7. Bucles.md: -------------------------------------------------------------------------------- 1 | Los bucles en JavaScript permiten ejecutar un bloque de código repetidamente, mientras se cumpla una condición. A continuación, se describen los bucles más comunes. 2 | ## Bucle `for` 3 | 4 | El bucle `for` se utiliza cuando sabes cuántas veces debe ejecutarse el código. 5 | 6 | ### Sintaxis 7 | 8 | ```javascript 9 | for (inicialización; condición; actualización) { 10 | // Código a ejecutar 11 | } 12 | ``` 13 | 14 | ### Ejemplo: 15 | 16 | ```javascript 17 | for (let i = 1; i <= 5; i++) { 18 | console.log("Número:", i); 19 | } 20 | ``` 21 | 22 | ## Bucle `while` 23 | 24 | El bucle `while` ejecuta el código mientras la condición sea `true`. 25 | 26 | ### Sintaxis 27 | 28 | ```javascript 29 | while (condición) { 30 | // Código a ejecutar 31 | } 32 | ``` 33 | 34 | ### Ejemplo: 35 | 36 | ```javascript 37 | let i = 1; 38 | 39 | while (i <= 5) { 40 | console.log("Número:", i); 41 | i++; 42 | } 43 | ``` 44 | 45 | ## Bucle `do while` 46 | 47 | El bucle `do...while` ejecuta el código al menos una vez, y luego repite mientras la condición sea `true`. 48 | 49 | ### Sintaxis 50 | 51 | ```javascript 52 | do { 53 | // Código a ejecutar 54 | } while (condición); 55 | ``` 56 | 57 | ### Ejemplo: 58 | 59 | ```javascript 60 | let i = 1; 61 | 62 | do { 63 | console.log("Número:", i); 64 | i++; 65 | } while (i <= 5); 66 | ``` 67 | 68 | ## Bucle `for of` 69 | 70 | El bucle `for...of` se utiliza para recorrer elementos de un iterable, como arreglos o cadenas. 71 | 72 | ### Sintaxis 73 | 74 | ```javascript 75 | for (variable of iterable) { 76 | // Código a ejecutar 77 | } 78 | ``` 79 | 80 | ### Ejemplo: 81 | 82 | ```javascript 83 | let frutas = ["manzana", "naranja", "uva"]; 84 | 85 | for (let fruta of frutas) { 86 | console.log("Fruta:", fruta); 87 | } 88 | ``` 89 | 90 | ## Bucle `for in` 91 | 92 | El bucle `for...in` se utiliza para recorrer las propiedades de un objeto. 93 | 94 | ### Sintaxis 95 | 96 | ```javascript 97 | for (clave in objeto) { 98 | // Código a ejecutar 99 | } 100 | ``` 101 | 102 | ### Ejemplo: 103 | 104 | ```javascript 105 | let persona = { nombre: "Sebastián", edad: 25, país: "México" }; 106 | 107 | for (let clave in persona) { 108 | console.log(clave + ":", persona[clave]); 109 | } 110 | ``` 111 | 112 | ## Uso de las palabras clave `break` y `continue` 113 | 114 | ## `break` 115 | 116 | Finaliza la ejecución del bucle. 117 | ### Sintaxis 118 | 119 | ```javascript 120 | for (let i = 1; i <= 5; i++) { 121 | if (i === 3) { 122 | break; // Sale del bucle cuando i es 3 123 | } 124 | console.log(i); 125 | } 126 | ``` 127 | 128 | ## `continue` 129 | 130 | Salta a la siguiente iteración sin ejecutar el resto del código. 131 | 132 | ```javascript 133 | for (let i = 1; i <= 5; i++) { 134 | if (i === 3) { 135 | continue; // Salta cuando i es 3 136 | } 137 | console.log(i); 138 | } 139 | ``` 140 | -------------------------------------------------------------------------------- /Ciencias de la Computación/Data Engineering/Databricks/5. Databricks Products and Features.md: -------------------------------------------------------------------------------- 1 | ## Databricks Workspace 2 | 3 | ### Notebooks 4 | 5 | - Colaboración en tiempo real 6 | - Múltiples lenguajes: Python, SQL, Scala, R 7 | - Visualización con gráficos interactivos 8 | - Control de versiones integrado 9 | 10 | ### Dashboards 11 | 12 | - Dashboards SQL interactivos 13 | - Actualización automática 14 | - Compartir con stakeholders 15 | - Notificaciones automáticas 16 | 17 | --- 18 | 19 | ## Databricks SQL 20 | 21 | ### Características 22 | 23 | - SQL Warehouses optimizados 24 | - Editor SQL avanzado 25 | - Historial de consultas 26 | - Optimización automática de rendimiento 27 | 28 | ### Funcionalidades 29 | 30 | - Serverless compute 31 | - Auto-scaling 32 | - Caché inteligente de resultados 33 | - Photon Engine (motor vectorizado) 34 | 35 | --- 36 | 37 | ## Databricks Machine Learning 38 | 39 | ### MLflow 40 | 41 | - Seguimiento de experimentos 42 | - Registro de modelos 43 | - Despliegue de modelos 44 | - Monitoreo de rendimiento 45 | 46 | ### AutoML 47 | 48 | - Ingeniería de características automática 49 | - Selección de algoritmos 50 | - Optimización de hiperparámetros 51 | - Explicabilidad de modelos 52 | 53 | --- 54 | 55 | ## Databricks Data Engineering 56 | 57 | ### Delta Live Tables 58 | 59 | - Pipelines declarativos (ETL) 60 | - Procesamiento incremental 61 | - Validación automática de calidad de datos 62 | - Monitoreo en tiempo real 63 | 64 | ### Workflows 65 | 66 | - Orquestación de trabajos 67 | - Gestión de dependencias 68 | - Programación avanzada 69 | - Lógica de reintentos 70 | 71 | --- 72 | 73 | ## Databricks Data Science 74 | 75 | ### Collaborative Notebooks 76 | 77 | - Colaboración en tiempo real 78 | - Sistema de comentarios 79 | - Control de versiones 80 | - Integración con Git 81 | 82 | ### Repos 83 | 84 | - Integración nativa con Git 85 | - Manejo de ramas 86 | - Pull requests 87 | - CI/CD 88 | 89 | --- 90 | 91 | ## Databricks Lakehouse Platform 92 | 93 | ### Unity Catalog 94 | 95 | - Descubrimiento de datos 96 | - Gobernanza centralizada 97 | - Control de acceso granular 98 | - Registro de auditoría 99 | 100 | ### Delta Sharing 101 | 102 | - Compartir datos de forma segura 103 | - Actualizaciones en tiempo real 104 | - Compatibilidad multiplataforma 105 | - Seguimiento de accesos 106 | 107 | --- 108 | 109 | ## Conectores e Integraciones 110 | 111 | ### Conectores Nativos 112 | 113 | - Kafka (streaming) 114 | - Kinesis (AWS) 115 | - Event Hubs (Azure) 116 | - BigQuery (Google) 117 | 118 | ### Integraciones de Terceros 119 | 120 | - Tableau 121 | - Power BI 122 | - Looker 123 | - Fivetran 124 | 125 | --- 126 | 127 | ## APIs y SDKs 128 | 129 | ### REST APIs 130 | 131 | - Workspace API 132 | - Clusters API 133 | - Jobs API 134 | - DBFS API 135 | 136 | ### SDKs 137 | 138 | - Python SDK 139 | - Java SDK 140 | - Terraform Provider 141 | - CLI 142 | 143 | --- 144 | -------------------------------------------------------------------------------- /Ciencias de la Computación/Inteligencia Artificial/Fundamentos/Ética de la IA/3. Que es la Solidez.md: -------------------------------------------------------------------------------- 1 | ## La importancia de equipos de seguridad en IA 2 | 3 | ### ¿Por qué necesitamos especialistas en seguridad adversarial? 4 | 5 | - Mentalidad de atacante 6 | - Conocimiento de vulnerabilidades 7 | - Experiencia en ciberseguridad 8 | - Comprensión matemática 9 | 10 | ### Roles especializados en equipos de seguridad IA 11 | 12 | - Red Team (Equipo Rojo) 13 | - Blue Team (Equipo Azul) 14 | - Investigadores de robustez 15 | - Especialistas en dominio con enfoque de seguridad 16 | 17 | ### Cultivando mentalidad de seguridad 18 | 19 | - Pensamiento adversarial 20 | - Principio de “Falla Segura” 21 | - Evaluación continua de amenazas 22 | 23 | --- 24 | 25 | ## Colaboración interdisciplinaria 26 | 27 | ### Integrando seguridad con desarrollo 28 | 29 | - Security by design 30 | - Comunicación efectiva con desarrolladores, management, usuarios y reguladores 31 | 32 | --- 33 | 34 | ## Identificar el problema 35 | 36 | ### Definiendo solidez adversarial 37 | 38 | - Solidez a perturbaciones naturales 39 | - Solidez adversarial 40 | 41 | #### Vulnerabilidades únicas de sistemas de ML 42 | 43 | - Opacidad de decision boundaries 44 | - Dependencia de datos estadísticos 45 | - Falta de garantías formales 46 | 47 | #### El panorama de amenazas en IA 48 | 49 | - Ganancia económica 50 | - Evasión de detección 51 | - Sabotaje y disrupción 52 | - Espionaje y reconocimiento 53 | 54 | ### Manifestaciones de vulnerabilidades 55 | 56 | - Comportamiento errático 57 | - Susceptibilidad a manipulación 58 | - Falta de conciencia situacional 59 | 60 | #### Casos emblemáticos 61 | 62 | - Ataques a sistemas de reconocimiento de imágenes 63 | - Manipulación de sistemas de recomendación 64 | - Evasión en sistemas de detección 65 | 66 | --- 67 | 68 | ## Explicar el problema 69 | 70 | ### Fundamentos teóricos de vulnerabilidades adversariales 71 | 72 | - Naturaleza de los espacios de alta dimensión 73 | - Tipos de conocimiento de adversarios (white-box, black-box, gray-box) 74 | - Matemáticas de ataques adversariales 75 | 76 | ### Vectores de ataque específicos 77 | 78 | - Ataques de evasión 79 | - Ataques de envenenamiento 80 | - Ataques de extracción de información 81 | 82 | ### Factores que influencian vulnerabilidad 83 | 84 | - Arquitectura del modelo 85 | - Proceso de entrenamiento 86 | - Contexto de despliegue 87 | 88 | --- 89 | 90 | ## Abordar el problema 91 | 92 | ### Clasificación de ataques adversariales 93 | 94 | - Taxonomía por objetivo del atacante 95 | - Taxonomía por conocimiento del atacante 96 | - Taxonomía por momento del ataque 97 | 98 | ### Estrategias de defensa 99 | 100 | - Entrenamiento adversarial 101 | - Técnicas de detección 102 | - Arquitecturas defensivas 103 | 104 | ### Evaluación de robustez 105 | 106 | - Métricas de robustez 107 | - Benchmarks y competencias 108 | - Consideraciones para evaluación realista 109 | 110 | --- 111 | -------------------------------------------------------------------------------- /Ciencias de la Computación/Computación Cuántica/1. El Salón de las Maravillas.md: -------------------------------------------------------------------------------- 1 | ## Introducción al mundo cuántico 2 | 3 | La computación cuántica representa un paradigma radicalmente diferente a la computación clásica. 4 | Mientras que los ordenadores tradicionales operan con bits binarios (0 o 1), los sistemas cuánticos utilizan **qubits** que pueden existir en superposición de estados. 5 | 6 | --- 7 | 8 | ## ¿Qué es la Computación Cuántica? 9 | 10 | La computación cuántica aprovecha fenómenos de la mecánica cuántica para realizar cálculos de manera distinta a las computadoras clásicas. 11 | 12 | - Los ordenadores clásicos procesan bits (0 o 1). 13 | - Los ordenadores cuánticos utilizan **qubits**, que pueden existir en múltiples estados simultáneamente. 14 | 15 | --- 16 | 17 | ## Principios fundamentales 18 | 19 | - **Naturaleza probabilística**: las partículas no tienen propiedades definidas hasta ser medidas 20 | - **No localidad**: efectos cuánticos pueden manifestarse instantáneamente a distancia 21 | - **Complementariedad**: posición y momento no pueden conocerse simultáneamente con precisión arbitraria 22 | 23 | ### El Qubit 24 | 25 | - Puede estar en estado |0⟩, |1⟩ o en **superposición** 26 | - Representación: |ψ⟩ = α|0⟩ + β|1⟩ 27 | - Condición: |α|² + |β|² = 1 28 | 29 | ### Diferencia cuántica 30 | 31 | - **Computación clásica**: procesa información secuencialmente 32 | - **Computación cuántica**: procesa múltiples posibilidades simultáneamente 33 | 34 | ### Ventajas potenciales 35 | 36 | - Aceleración exponencial en problemas específicos 37 | - Resolución de problemas intratables clásicamente 38 | - Nuevas formas de criptografía y seguridad 39 | 40 | --- 41 | 42 | ## Historia y Contexto 43 | 44 | - **1900**: Planck introduce la cuantización de la energía 45 | - **1925-1927**: Heisenberg y Schrödinger desarrollan la mecánica cuántica 46 | - **1980s**: Feynman propone usar sistemas cuánticos para computación 47 | 48 | --- 49 | 50 | ## Aplicaciones Prometedoras 51 | 52 | ### Simulación molecular 53 | 54 | - Diseño de medicamentos 55 | - Desarrollo de materiales 56 | - Catálisis química 57 | 58 | ### Criptografía 59 | 60 | - Algoritmo de Shor para factorización 61 | - Criptografía cuántica 62 | - Distribución de claves cuánticas 63 | 64 | ### Optimización 65 | 66 | - Problemas de logística 67 | - Optimización financiera 68 | - Machine learning cuántico 69 | 70 | ### Inteligencia Artificial 71 | 72 | - Algoritmos de aprendizaje cuántico 73 | - Procesamiento de patrones complejos 74 | - Redes neuronales cuánticas 75 | 76 | --- 77 | 78 | ## Hardware Cuántico 79 | 80 | ### Tecnologías principales 81 | 82 | 1. **Circuitos superconductores** (IBM, Google) 83 | 2. **Iones atrapados** (IonQ, Honeywell) 84 | 3. **Fotónica** (Xanadu, PsiQuantum) 85 | 4. **Átomos neutros** (Atom Computing) 86 | 87 | ### Desafíos actuales 88 | 89 | - **Decoherencia**: pérdida de información cuántica 90 | - **Ruido**: interferencias en cálculos 91 | - **Escalabilidad**: sistemas con más qubits 92 | - **Corrección de errores**: mantener fidelidad cuántica 93 | 94 | --- 95 | -------------------------------------------------------------------------------- /Programación/Desarrollo Web/Front-End/Javascript/10. Plantillas e Interpolación de Variables.md: -------------------------------------------------------------------------------- 1 | En JavaScript, las plantillas de texto (Template Strings) permiten incluir variables dentro de cadenas de texto de forma sencilla y legible. Se utilizan las **comillas invertidas (` `)** en lugar de las comillas simples (`' '`) o dobles (`" "`). 2 | 3 | ## ¿Qué son las plantillas de texto en JavaScript? 4 | 5 | Las **Template Strings** permiten: 6 | - Insertar variables sin concatenación manual. 7 | - Usar saltos de línea directamente en la cadena. 8 | - Incluir expresiones dentro de la cadena. 9 | 10 | ```javascript 11 | const nombre = "Sebastian"; 12 | const edad = 25; 13 | 14 | // Concatenación tradicional 15 | console.log("Hola, mi nombre es " + nombre + " y tengo " + edad + " años."); 16 | 17 | // Uso de Template Strings 18 | console.log(`Hola, mi nombre es ${nombre} y tengo ${edad} años.`); 19 | ``` 20 | 21 | **Ventajas de Template Strings**: Código más limpio y legible. Se pueden usar múltiples líneas sin necesidad de `\n`. 22 | 23 | ## Interpolación de Variables 24 | 25 | La interpolación en JavaScript se logra con **`${variable}`** dentro de las **comillas invertidas**. 26 | 27 | ```javascript 28 | const producto = "Laptop"; 29 | const precio = 1200; 30 | 31 | console.log(`El producto ${producto} cuesta $${precio}.`); 32 | ``` 33 | 34 | También podemos hacer cálculos directamente dentro de `${ }`: 35 | 36 | ```javascript 37 | const precioConIVA = precio * 1.21; 38 | console.log(`El precio con IVA es $${precioConIVA}.`); 39 | ``` 40 | 41 | ## Uso de Saltos de Línea 42 | 43 | Con Template Strings podemos escribir cadenas multilínea fácilmente: 44 | 45 | ```javascript 46 | const mensaje = `Hola, 47 | Este es un mensaje 48 | en varias líneas.`; 49 | 50 | console.log(mensaje); 51 | ``` 52 | 53 | Esto es mucho más cómodo que usar `\n` en concatenaciones tradicionales. 54 | 55 | ## Plantillas con Funciones 56 | 57 | Podemos retornar una cadena interpolada dentro de una función: 58 | 59 | ```javascript 60 | function saludo(nombre) { 61 | return `Hola ${nombre}, bienvenido a JavaScript.`; 62 | } 63 | 64 | console.log(saludo("Sebastian")); 65 | ``` 66 | 67 | ## Uso con Objetos 68 | 69 | Podemos extraer valores de un objeto y usarlos en una plantilla: 70 | 71 | ```javascript 72 | const usuario = { 73 | nombre: "Sebastian", 74 | edad: 25, 75 | profesion: "Desarrollador" 76 | }; 77 | 78 | console.log(`Nombre: ${usuario.nombre} 79 | Edad: ${usuario.edad} 80 | Profesión: ${usuario.profesion}`); 81 | ``` 82 | 83 | ## Uso con Arrays 84 | 85 | Podemos recorrer un array dentro de una plantilla de texto: 86 | 87 | ```javascript 88 | const lenguajes = ["JavaScript", "Python", "Java"]; 89 | 90 | console.log(`Lenguajes de programación: 91 | - ${lenguajes[0]} 92 | - ${lenguajes[1]} 93 | - ${lenguajes[2]}`); 94 | ``` 95 | 96 | O con **map()** para recorrer dinámicamente: 97 | 98 | ```javascript 99 | console.log(`Lenguajes disponibles:\n${lenguajes.map(lang => `- ${lang}`).join("\n")}`); 100 | ``` 101 | -------------------------------------------------------------------------------- /Ciencias de la Computación/Data Engineering/Databricks/3. Databricks Architecture.md: -------------------------------------------------------------------------------- 1 | ## Arquitectura General 2 | 3 | La arquitectura de Databricks se basa en dos planos principales. 4 | 5 | ### Control Plane 6 | 7 | - Gestión de servicios: notebooks, clusters, jobs 8 | - Interfaz web: Databricks workspace 9 | - Seguridad: autenticación y autorización 10 | - Monitoreo: métricas y logging 11 | 12 | ### Data Plane 13 | 14 | - Compute: clusters de Apache Spark 15 | - Storage: integración con sistemas de almacenamiento 16 | - Networking: conectividad segura 17 | - Runtime: entorno de ejecución optimizado 18 | 19 | --- 20 | 21 | ## Componentes Arquitectónicos 22 | 23 | ### Databricks Workspace 24 | 25 | ``` 26 | ┌─────────────────────────────────────────────┐ 27 | │ Workspace │ 28 | ├─────────────────────────────────────────────┤ 29 | │ Notebooks │ Dashboards │ Experiments │ 30 | ├─────────────────────────────────────────────┤ 31 | │ Jobs │ Clusters │ Libraries │ 32 | ├─────────────────────────────────────────────┤ 33 | │ Data │ Models │ Repos │ 34 | └─────────────────────────────────────────────┘ 35 | ``` 36 | 37 | ### Databricks Runtime 38 | 39 | - Optimized Spark: versión mejorada de Apache Spark 40 | - Auto-scaling: escalado automático de clusters 41 | - Caching: sistema de caché inteligente 42 | - Photon: motor de consultas vectorizado 43 | 44 | --- 45 | 46 | ## Tipos de Clusters 47 | 48 | ### All-Purpose Clusters 49 | 50 | - Uso: desarrollo interactivo 51 | - Características: compartidos por múltiples usuarios 52 | - Ciclo de vida: manual o programado 53 | 54 | ### Job Clusters 55 | 56 | - Uso: ejecución de jobs automatizados 57 | - Características: efímeros, creados y destruidos automáticamente 58 | - Optimización: configuración específica para la tarea 59 | 60 | ### SQL Warehouses 61 | 62 | - Uso: consultas SQL y análisis 63 | - Características: optimizados para consultas analíticas 64 | - Escalabilidad: auto-scaling según demanda 65 | 66 | --- 67 | 68 | ## Databricks File System (DBFS) 69 | 70 | ### Características 71 | 72 | - Abstracción: interfaz unificada para múltiples sistemas de almacenamiento 73 | - Integración: soporte nativo para S3, ADLS, GCS 74 | - Optimización: caching y pre-fetching automático 75 | - Seguridad: encriptación y control de acceso 76 | 77 | ### Estructura 78 | 79 | ``` 80 | / 81 | ├── FileStore/ 82 | ├── databricks-datasets/ 83 | ├── user/ 84 | ├── tmp/ 85 | └── mnt/ 86 | ``` 87 | 88 | --- 89 | 90 | ## Integración con Proveedores Cloud 91 | 92 | ### AWS 93 | 94 | - EC2: instancias para compute 95 | - S3: almacenamiento de datos 96 | - IAM: gestión de identidades 97 | - VPC: networking privado 98 | 99 | ### Azure 100 | 101 | - Virtual Machines: recursos de compute 102 | - Azure Data Lake: almacenamiento 103 | - Azure AD: autenticación 104 | - VNet: networking 105 | 106 | ### Google Cloud 107 | 108 | - Compute Engine: instancias 109 | - Cloud Storage: almacenamiento de objetos 110 | - Cloud IAM: gestión de acceso 111 | - VPC: networking privado 112 | 113 | --- 114 | --------------------------------------------------------------------------------