Cargando UBUNTU CORE v24.04 LTS
ISSD // ARG - ANALISTA DE SISTEMAS
UBUNTU 24.04 LTS Explorando el Mundo de Linux
Navegación Móvil

SISTEMAS OPERATIVOS 2

ISSD // SEGUNDO DESEMPEÑO

Instalación

Documentación del proceso

1. Creación del Droplet en Digital Ocean

Una vez dentro de nuestra cuenta de Digital Ocean, en la sección Create Droplet, seleccionamos en la región del Datacenter, uno localizado en Estados Unidos (punto intermedio para todos los integrantes del grupo). El SO elegido fue Linux con distribución Ubuntu 24.04 LTS.

Captura Paso 1

Seleccionamos la “máquina que vamos a alquilar” (plan que detalla CPU, RAM, Disco, ancho de banda)

Captura Paso 1

Acto seguido, cada integrante creó una llave SSH que cargamos para poder tener acceso (por motivos de seguridad este paso fue recreado con datos falsos y luego la llave fue eliminada)

Captura Paso 1
Captura Paso 1

Por último, le dimos nombre a nuestro Droplet

Captura Paso 1

Así queda una vez funcional

Captura Paso 1

2. Conexión por SSH

En el buscador de VS Code ponemos >Remote-SSH (extensión previamente descargada) => Configurar Host SSH... => C:\Users\Sofia(en mi caso, sino el usuario)\.ssh \config y ponemos los datos del host (primeramente, configuramos todos los usuarios como root para comprobar a conexión sin problemas, luego los cambiaremos y otorgaremos los permisos pertinentes a cada usuario)

Captura Paso 1

Una vez guardado, en el buscador de VS Code ponemos >Remote-SSH => Conectar al Host... => IntegradorSO2 . Saldrá un aviso de que la conexión se está estableciendo, y finalmente se conectará. Podemos comprobarlo en la esquina inferior izquierda de la ventana de VS Code:

Captura Paso 1

A partir de este momento estamos navegando en un entorno Linux, usando la máquina virtual a través de VS Code, podemos comprobarlo al ver la estructura de archivos del entorno Unix

Captura Paso 1

3. Creación de usuarios y asignación de grupos

Después de comprobar que todos pudimos establecer la conexión correctamente, procedemos a crear los usuarios. El usuario root agrega el comando: adduser “usuario” (en nuestro ejemplo: adduser rami)

Captura Paso 1

Automáticamente se le otorga número de id, se crea por defecto un grupo para el usuario, le crea un directorio “home”, y le copia los archivos de etc/skel (carpeta de plantillas del sistema, para poder establecer su entorno base predefinido)


Luego continua pidiendo contraseña, nombre completo, y otros datos personales, que podrían servir, por ejemplo, para firmas o logs (por eso con los nombres de usuario decidimos utilizar camelCase y nombres sencillos). Por último pide corroborar os datos.


Con todos los usuarios generados, procedemos a la creación del grupo. Para ello, escribimos el comando groupadd “nombre del equipo” (en nuestro caso escribimos: groupadd equipo-trabajo) y agregamos a este los usuarios con el comando: usermod –aG equipo-trabajo rami ( podemos leerlo como: modificar usuario addgroup (agregar al grupo) nombre del grupo usuario)

(Nota:


En este momento podría aplicarse


chown –R root:equipo-trabajo / opt/ ( cambiar el dueño recursivamente, root es el dueño y el grupo asignado es equipo-trabajo, sobre ese directorio y todo lo que haya dentro)


este comando aplica el grupo y dueño a todo lo que ya existe en /opt en este momento. Si se ejecuta al principio antes de crear cualquier subcarpeta, se pueden omitir los comandos chown posteriores en la mayoría de los casos, salvo un comando específico que omite los permisos heredados, que se verá en su momento.)


chmod -R 2775 /opt (cambiar permisos recursivo (para la carpeta y todo lo que haya dentro) 2=todo archivo nuevo que se crea hereda el grupo de a carpeta, 7=permisos del dueño (root) de lectura, escritura y ejecución, 7= permisos del grupo de lectura, escritura y ejecución, 5= permiso de otros de lectura y ejecución, sobre la carpeta opt)

newgrp equipo-trabajo ( aplicá el grupo equipo-trabajo a mi sesión actual sin necesidad de cerrar y volver a abrir sesión)


Para cada usuario, en el directorio home/ se crea el directorio .ssh , y en él el fichero authorized_keys con el contenido de la llave de cada uno.


Con esto último hecho, ya podemos poner nuestros usuarios en la configuración, y entrar con estos. Nos damos cuenta porque en la terminal vemos el nombre del usuario y de la computadora:

Captura Paso 1

El directorio /opt sobre el que hemos otorgado los permisos será sobre el cual trabajaremos con el repositorio que es uno de los objetivos de este trabajo.

4. Conexión con GitHub y Descargas

Como tenemos nuestro repositorio privado, vamos a establecer una conexión entre Droplet y GitHub por medio de SSH. Para ello, crearemos una llave para nuestra “computadora” remota (esto sera para el root, lugo cada uno tendrá una particular repitiendo los pasos)

Para esto usamos el comando:

ssh-keygen -t rsa -b 4096 –f /opt/shared_key ( generá un par de claves SSH (pública y privada) el tipo de cifrado será RSA la cantidad de bits de la clave, y guarda el fichero en opt con el nombre de shared_key)

(se adjunta la imagen incompleta por temas de seguridad)

Captura Paso 1
Captura Paso 1

Luego hay que dar permisos al grupo:

chown root:equipo-trabajo /opt/shared_key ( cambiar el dueño, root es el dueño del archivo, y el grupo asignado al archivo es equipo-trabajo, el archivo al que se le aplica es shared_key)

chmod 660 /opt/shared_key (cambiar permisos 6 = dueño (root): lectura + escritura, 6 = grupo (equipo-trabajo): lectura + escritura, 0 = otros: sin ningún permiso, quiere decir que el dueño y el grupo pueden leer y escribir la clave, cualquier otro usuario no puede ni verla, por seguridad) shared_key)

¿Pero opt no tenía ya definidos los permisos? En teoría sí, porque /opt ya tiene el grupo equipo-trabajo y el setgid (el 2 de 2775) que hace que los archivos nuevos hereden el grupo automáticamente.

Pero hay una trampa: ssh-keygen es un programa especial que crea el archivo con permisos muy restrictivos por defecto (600, solo el dueño puede leerlo) justamente por seguridad, ignorando el setgid de la carpeta.

Para asegurarnos de que utilice esa llave, vamos al /.ssh de a máquina virtual y creamos un fichero “config” con los datos de la llave que va a utilizar y donde lo hará (esto o hacemos en cada usuario)

Captura Paso 1

Con la llave creada, vamos a nuestro repositorio, Perfil => Settings => SSH and GPG Keys, y allí nombramos la llave y pegamos la llave pública generada

Captura Paso 1

Por último, clonamos el repositorio entrando en la terminal el comando:

git clone git@github.com:TPI-Sistemas-4/mundodigital-api.git

Si todo está bien, se descarga el repositorio. Esto es suficiente que lo haga un solo integrante del equipo, no es necesario repetirlo

Captura Paso 1

Ahora tenemos que instalar las dependencias. Podemos o no verificar si ya están instaladas en el proyecto haciendo

npm -v

En nuestro caso no estaba instalado, por lo que lo hicimos con

sudo apt install npm

Verificamos la versión nuevamente

npm -v

Y tenemos la 9.2.0. Ahora instalamos node mánager de la siguiente manera en la carpeta compartida del proyecto

export NVM_DIR="/opt/nvm" (creá una variable llamada NVM_DIR con el valor /opt/nvm y hacela disponible para toda la sesión)

sudo mkdir -p /opt/nvm ( ejecutá el comando como superusuario, creá una carpeta, si las carpetas del camino no existen, crealas también (En este caso si /opt no existiera lo crearía también, sin dar error),la carpeta a crear es nvm)

sudo chown root:equipo-trabajo /opt/nvm (igual que vimos antes, el dueño es root y el grupo es equipo-trabajo)

sudo chmod 775 /opt/nvm (dueño y grupo pueden hacer todo, otros solo leer y ejecutar)

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | NVM_DIR=/opt/nvm bash (descarga el contenido de la URL y mostralo en pantalla, el script de instalación de NVM, | el pipe tomá lo que salió del comando anterior y pasáselo al siguiente, antes de ejecutar, establecé esta variable de entorno para que NVM sepa dónde instalarse, ejecutá lo que recibiste como script)

Luego, abrimos nano:

sudo nano /etc/profile.d/nvm.sh

/etc/profile.d/ es una carpeta especial de Linux donde los scripts que pongas se ejecutan automáticamente para todos los usuarios cuando abren una sesión.

En nano ponemos

export NVM_DIR="/opt/nvm"

[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

export PATH="/opt/nvm/versions/node/v22.22.3/bin:$PATH"

Así todos los usuarios del grupo tienen NVM disponible automáticamente al conectarse, sin tener que configurar nada en cada uno por separado.

Instalamos la versión de nvm que usamos en el proyecto

nvm i 22.22.3

Y por ultimo, instalamos npm

npm i

Para terminar con la preparación de proyecto, copiamos las variables de entorno que estábamos usando en local (pegamos el archivo directamente en el explorador de archivos de VS Code para simplificar)

Para asegurarnos de que todo esté correcto hacemos una build

npm run build

Y por último, ya podemos arrancar el servidor

npm run start:dev

Captura Paso 1

Y en el navegador probamos con

162.243.174.168:3001/api

Captura Paso 1

Y podemos ver el swagger al que anteriormente teníamos acceso cuando corríamos en local.

5. Implementación de PM2

Instalamos PM2 de manera global (toda la máquina virtual) haciendo:

sudo npm install -g pm2

Captura Paso 1

Para que todos los usuarios tengan acceso, creamos un directorio para pm2 en el directorio compartido

mkdir -p /opt/pm2

sudo chown root:equipo-trabajo /opt/pm2

chmod 775 /opt/pm2


Y en nano agregamos el path del home de pm2

sudo nano /etc/profile.d/nvm.sh

export PM2_HOME=/opt/pm2


Y actualizamos la autoreferenciaidad del archivo (“sourcear”)

source /etc/profile.d/nvm.sh


E iniciaizamos con

sudo pm2 startup

Captura Paso 1

El propio pm2 genera un comando que modificamos, basándonos en la documentación oficial de PM2, para que se instale donde queríamos y no donde lo sugería, así funcione en una sola instalación para todos los usuarios:


sudo env PATH=$PATH:/opt/nvm/versions/node/v22.22.3/bin

/opt/nvm/versions/node/v22.22.3/lib/node_modules/pm2/bin/pm2 startup systemd -u

root --hp /root


Levantamos la app:

pm2 start npm --name "api" -- run start:dev

Captura Paso 1

Si ponemos pm2 log api podemos ver el estado del servicio:

Captura Paso 1

Y lo comprobamos:

Captura Paso 1

Y guardamos con

pm2 save


Ahora, aunque cerremos la consola, si hacemos pm2 list podemos ver el servicio que corre y no se detuvo

Captura Paso 1

6. Implementación de Nginx

Nginx se configuró para actuar como "recepcionista" o proxy inverso, recibiendo todos los pedidos HTTP y derivándolos a la app Node en el puerto 3001. Se establecieron también las reglas del firewall con UFW.

# Instalación y Firewall
root@integrador-so2:~# sudo apt install nginx
root@integrador-so2:~# sudo ufw allow 'Nginx HTTP'

# Creación de bloque de servidor y enlace simbólico
root@integrador-so2:~# sudo mkdir -p /var/www/app.mundodigitalso2.company/html
root@integrador-so2:~# sudo ln -s /etc/nginx/sites-available/app... /etc/nginx/sites-enabled/

7. Configuración del certificado SSL con Certbot

Por defecto, el sitio funciona con HTTP, lo que significa que la comunicación entre el usuario y el servidor viaja sin cifrar. Certbot es LA herramienta que permite obtener e instalar automáticamente un certificado SSL gratuito de Let's Encrypt, habilitando HTTPS en el sitio. Esto cifra toda la comunicación, protege los datos de los usuarios y además es requerido por la mayoría de los navegadores modernos que muestran advertencias de "sitio no seguro" cuando no hay certificado. (O mejor explicado en palabras de nuestro compañero: es como el certificado de SENASA pero para sitios webs, y lo que estamos haciendo es que nuestro sitio esté “blanqueado”, va a tener papeles, y se pueda comunicar con otros sitios que están en iguales condiciones) Empezamos por instalar Cerbot: sudo snap install core; sudo snap refresh core Luego, confirmamos si la configuración de nuestro firewall permite la comunicacion del tipo que necesitamos: sudo ufw status

# Instalación y asignación de certificado
root@integrador-so2:~# sudo snap install core
root@integrador-so2:~# sudo ufw allow 'Nginx Full'
root@integrador-so2:~# sudo certbot --nginx -d app.mundodigitalso2.company

8. Conclusión y Droplet Implementado

Tras aproximadamente 6 horas de configuración, correcciones y aprendizaje, logramos tener el servidor corriendo en la máquina virtual remota, con el Swagger del backend de nuestra aplicación disponible y accesible desde cualquier lugar.

[Aquí irá la captura final_1.jpg]

[Aquí irá la captura final_2.jpg]

Consigna 1

Investigación – El Fin de una Era

Windows 10 llegará al final de su soporte en octubre de 2025, lo que significa que Microsoft dejará de ofrecer actualizaciones de seguridad, correcciones de errores y soporte técnico oficial. Aunque el sistema continuará funcionando, quedará completamente desprotegido frente a nuevas amenazas informáticas.

Fecha límite oficial

Octubre de 2025

Microsoft cesa todo soporte, parches y actualizaciones de seguridad para Windows 10.

Principales Riesgos

Exposición a Amenazas

Sin parches de seguridad, los equipos quedan vulnerables a virus, malware, ransomware y accesos no autorizados de forma permanente.

Incompatibilidad de Software

Con el tiempo, programas y aplicaciones dejarán de soportar Windows 10, generando errores, fallas de rendimiento y bloqueos funcionales.

Abandono de Drivers

Los fabricantes dejarán de desarrollar drivers y soporte para hardware compatible con este sistema, acelerando su obsolescencia.

Conexión con el Material de SO2

Los sistemas operativos necesitan mantenimiento y actualización constante para garantizar estabilidad y seguridad. Tal como se explica en el material bibliográfico de la materia, el kernel es el encargado de administrar los recursos del hardware y coordinar el funcionamiento del sistema, y también se destaca la importancia de los mecanismos de seguridad y del cifrado de contraseñas para proteger la información de los usuarios.

Por lo tanto, mantener un sistema sin soporte implica operar sobre una base cada vez más vulnerable y menos confiable, razón por la cual se recomienda migrar a una versión moderna o a un sistema operativo que continúe recibiendo soporte activo.

Bibliografía de Referencia

Consigna 3

Eficiencia y Bajos Requisitos en Linux

El ecosistema Linux se destaca globalmente por su excelente optimización y su capacidad para operar eficientemente sobre plataformas con bajos requisitos de hardware. A diferencia de los sistemas operativos comerciales contemporáneos, cuyas crecientes demandas obligan a descartar equipos útiles, Linux permite prolongar la vida útil de computadoras antiguas, garantizando que la mayor parte de los recursos de CPU y memoria se reserven de forma íntegra para las aplicaciones de programación del usuario.

Prioridades de un Entorno de Desarrollo

Para un programador el sistema operativo constituye la base de sus herramientas de trabajo y es por esta razón que hay detalles primordiales que no se pueden desatender, a saber:

Estabilidad y Fiabilidad

Un entorno predictivo que no interrumpa los flujos de trabajo.

Software Actualizado

Acceso directo a las últimas versiones de compiladores y librerías.

Seguridad

Aislamiento nativo de procesos y protección robusta de datos.

Comparativa de Distribuciones y Requisitos

Dentro del gran abanico de opciones disponibles dentro de Linux, Fedora se posiciona como la alternativa idónea frente a sus competidores gracias a su balance tecnológico:

Fedora Workstation

Min: 1 CPU, 1 GB RAM, 10 GB disco

El equilibrio perfecto al ofrecer software moderno e innovador respaldado por una estabilidad semestral rigurosamente testeada.

Ubuntu Desktop

Min: Dual-Core 2 GHz, 4 GB RAM, 25 GB disco

Tiende a la obsolescencia de paquetes en sus versiones estables y ralentiza herramientas debido a su formato de empaquetado.

Arch Linux

Min: x86-64 CPU, 512 MB RAM, 2 GB disco

Ofrece software al día, pero exige un alto mantenimiento manual que pone en riesgo la estabilidad laboral.

Debian GNU/Linux

Min: 1 GHz CPU, 1 GB RAM, 10 GB disco

Extremadamente estable, pero sus herramientas de programación son muy antiguas.

openSUSE Leap

Min: Dual-Core 1.6 GHz, 2 GB RAM, 40 GB disco

Excelente integración empresarial, pero ralentiza la adopción de nuevas tecnologías de desarrollo.

Cualidades Principales de Fedora Workstation

La documentación oficial define a Fedora como una plataforma orientada a satisfacer las necesidades de los desarrolladores, fundamentando su éxito en las siguientes ventajas:

Soporte Multi-Arquitectura

Dispone de imágenes nativas para procesadores x86_64 e Intel/AMD/ARM (aarch64).

Gestión Inteligente de Recursos

Incorpora “zRAM” (compresión de intercambio en memoria para acelerar el multitasking) y control de presión de memoria para prevenir congelamientos del sistema.

Almacenamiento Avanzado (Btrfs)

Implementa un sistema de archivos que comprime automáticamente los datos en disco, protegiendo las unidades y acelerando lecturas.

Estructura Protegida contra Fallos

Sus componentes esenciales de red, arranque e interfaz gráfica (como “NetworkManager” o “grub”) están blindados como “no removibles”, impidiendo que errores accidentales en la terminal rompan el sistema.

Impacto en la Práctica Diaria de un Desarrollador

El beneficio real de Fedora en el día a día de un programador es la tranquilidad operativa: el sistema mitiga los errores de consumo de recursos y protege la integridad de la estación de trabajo frente a fallas imprevistas.

Situémonos en un día cualquiera de un desarrollador y veamos como las características de Fedora juegan un rol decisivo. Si un programador está compilando un proyecto de software de gran escala mientras descarga dependencias de red, y la memoria RAM lega a su límite físico, Fedora no congelará la pantalla. La tecnología “zRAM” comprimirá los datos en la memoria instantáneamente y, de ser necesario, el sistema detendrá de forma aislada el proceso secundario causante del desborde. Esto permite que el entorno de desarrollo principal siga respondiendo, protegiendo las líneas de código recién escritas y evitando pérdidas de tiempo valiosas en reinicios del sistema.

Junto a este ejemplo, sumado a las características y datos ya mencionados podemos concluir que Fedora, es la distribución ideal para un entorno orientado al desarrollo ya que además de estar orientada a esta funcionalidad, posee todo un conjunto de cualidades que la hacen segura, confiable y optima para un entono de desarrollo.

Consigna 4

Linux, el Motor de la Inteligencia Artificial

4.1 ¿Por qué Linux domina la inteligencia artificial?

Cuando hablamos de inteligencia artificial, muchas veces pensamos en modelos como ChatGPT, reconocimiento de imágenes, autos autónomos o sistemas que aprenden a partir de grandes cantidades de datos. Pero detrás de todo eso hay algo menos visible y muy importante: el sistema operativo donde se entrena y se ejecuta esa IA, y ahí Linux tiene una ventaja enorme.

No es que en Windows no se pueda trabajar con inteligencia artificial, porque sí se puede, pero cuando el trabajo se vuelve más pesado, más profesional o más cercano a servidores reales, Linux suele ser el sistema preferido por desarrolladores, empresas y centros de investigación.

Esto se debe a varias razones técnicas, pero hay dos que ayudan a entenderlo de forma bastante clara: por un lado, Linux permite aprovechar mejor la potencia de las GPU, que son fundamentales para entrenar modelos de IA; y por otro, ofrece un entorno de trabajo muy cómodo para programar, automatizar tareas, usar Docker y desplegar sistemas en servidores.

Linux aprovecha mejor la potencia de las GPU

En inteligencia artificial, la GPU es una pieza clave. Aunque muchas personas la asocian con videojuegos, en realidad una GPU sirve para hacer miles de cálculos al mismo tiempo, fundamental para entrenar modelos con enormes cantidades de datos y operaciones matemáticas.

Acá aparece CUDA, tecnología de NVIDIA que funciona como puente entre la IA y la placa de video para el cálculo intensivo. Linux maneja esto muy bien por su fuerte relación con los drivers de NVIDIA y frameworks como PyTorch o TensorFlow.

En servidores profesionales sin interfaz gráfica, Linux destaca al ser administrado por terminal, permitiendo sacar más jugo al hardware (memoria eficiente, menos trabas). Si la GPU es el motor, Linux es el taller donde mejor se ajusta.

Ideal para terminales, Docker y servidores

Linux está orientado a la terminal, una enorme ventaja para automatizar tareas repetitivas: instalar librerías, ejecutar scripts, descargar datasets y levantar servicios de forma rápida y ordenada.

Funciona excelente con Docker para crear contenedores aislados con las dependencias exactas (Python, CUDA, PyTorch). En Linux, estos contenedores corren de forma natural, sin las capas extra que Windows requiere (como WSL2) que consumen memoria y rendimiento.

Por eso Linux reina en centros de datos y la nube, creando entornos estables y automatizables que replican fielmente el destino final de producción del modelo de IA.

Resumiendo

Linux domina la inteligencia artificial porque combina dos ventajas clave: aprovecha al máximo el hardware (especialmente las GPU) y ofrece un entorno inigualable para programar, automatizar y desplegar proyectos. Mientras Windows sirve perfectamente para aprender o realizar proyectos pequeños, cuando hablamos de IA a gran escala con modelos pesados, servidores, Docker y CUDA, Linux es la opción más fuerte, potente y conectada con las herramientas del mundo real.

Herramienta Clave en IA

Jupyter Notebook

Origen e historia

Proyecto sin fines de lucro nacido en 2014 a partir de IPython. Su nombre hace referencia a Julia, Python y R, y rinde homenaje a los cuadernos de Galileo.

El Proyecto Jupyter es una organización sin fines de lucro creada para desarrollar software de código abierto para computación interactiva en docenas de lenguajes de programación. Fue creado en 2014 por Fernando Pérez a partir del proyecto IPython.

Para entender bien qué es Jupyter Notebook, hay que remontarse a finales de 2001, cuando Fernando Pérez comenzó a desarrollar IPython. En 2005, Pérez y Robert Kern intentaron construir un sistema de notebook, aunque ese prototipo nunca llegó a ser completamente funcional. En 2007 retomaron el intento, y para octubre de 2010 ya existía un prototipo de notebook web que fue lanzado oficialmente en diciembre de 2011. Finalmente, en 2014, el Proyecto Jupyter nació como una derivación de IPython.

El nombre del proyecto es una referencia a los tres lenguajes de programación principales que soporta: Julia, Python y R. Además, es un homenaje a los cuadernos de Galileo en los que documentó el descubrimiento de las lunas de Júpiter.

¿Qué es y cómo funciona?

Jupyter Notebook es una aplicación web en la que se pueden crear y compartir documentos que contienen código en vivo, ecuaciones, visualizaciones y texto. Es una de las herramientas más utilizadas en ciencia de datos porque permite combinar el análisis, su descripción y sus resultados en un mismo lugar, ejecutándolo todo en tiempo real.

Su unidad básica es la celda, y hay dos tipos principales. Las celdas de código permiten escribir y ejecutar, mostrando el resultado justo debajo. Las celdas de Markdown permiten agregar texto explicativo, títulos y ecuaciones matemáticas.

Técnicamente es una aplicación cliente‑servidor. Sus dos componentes principales son el kernel, que es el programa que ejecuta el código del usuario, y el dashboard, que muestra los documentos disponibles y permite gestionar los kernels en ejecución.

El archivo resultante tiene extensión .ipynb y es un documento JSON que puede convertirse a múltiples formatos estándar como HTML, PDF, LaTeX, Markdown o Python a través de la interfaz web.

¿Para qué se usa?

Jupyter Notebook no es solo un entorno de desarrollo, sino un espacio de trabajo, aprendizaje y colaboración. Permite visualizar gráficos directamente, guardar todo en un archivo .ipynb que se puede reabrir o compartir, y trabajar con datos analizándolos y documentando todo de forma clara.

Es especialmente popular en investigación y enseñanza porque permite documentar todo el proceso junto al código. Esto lo convierte en una herramienta ideal para construir portfolios de ciencia de datos, hacer exploraciones rápidas, participar en desafíos de datos, reportar investigaciones o construir flujos de procesamiento de datos.

Es además compatible con herramientas como TensorFlow, PyTorch y Scikit‑learn, las otras opciones de esta consigna, lo que lo convierte en el entorno de trabajo más común para quienes las utilizan.

Jupyter vs Script Tradicional

La diferencia principal con escribir un script de Python convencional es la interactividad. A diferencia de un script tradicional donde hay que reescribir y volver a correr todo el programa cada vez que se hace un cambio, en Jupyter se puede modificar una sola celda y ejecutarla de manera aislada, viendo el resultado al instante.

Además, las buenas prácticas recomiendan importar las librerías necesarias en la primera celda del notebook, mantener las celdas simples y no muy extensas, y agregar texto explicativo entre el código para que el notebook sea comprensible para otros. Esto agiliza enormemente el proceso de exploración y análisis.

Nota: Detractores de la Herramienta

Me gustaría aclarar que más allá de las virtudes que principalmente cité, hay muchos detractores de esta herramienta de IA. Sobre todo, los artículos que he leído en towardsdatascience.com citan grandes limitaciones para implementar las investigaciones en el mercado, e incentivan el uso de herramientas de Python.

Me pareció pertinente hacer la aclaración porque en este momento, la IA misma pasa por un proceso de amor/odio en todos los rubros, y este no es la excepción.

Bitácora Final

Conclusiones de Caso de Estudio

Reflexiones sobre la viabilidad académica y despliegues técnicos sustentables y soberanos.

SISTEMAS DE COMPUTACIÓN // PONENCIA EXCELENTE

"Migración a Ubuntu 24.04 y Abandono de Windows 10"

Reproductor interactivo simulado. Haz click en cualquier parte del marco para iniciar/pausar la duración.

00:00 / 03:30

"Al finalizar la indagación técnica, la adopción de Ubuntu Desktop 24.04 LTS "Noble Numbat" con entorno GNOME probó de manera contundente ser una opción viable y de alto desempeño. Ofrece control local sólido de los recursos de cómputo, bajo consumo de memoria idle y la re-utilización de equipos heredados sin obsolescencias inducidas por TPM o DRM."

— Facultad de Ingeniería FIUBA Computación

CALIFICACIÓN DE CÁTEDRA

Calificación definitiva: 10/10 Sobresaliente