Category: Desarrollo

Diseño para agentes de usuario: El auge de la IUA

2025-08-11
Diseño para agentes de usuario: El auge de la IUA

Este artículo analiza la importancia de diseñar para tres interfaces distintas al crear aplicaciones: Interfaz de usuario (UI), Interfaz de programación de aplicaciones (API) e Interfaz de agente de usuario (UAI). Con el auge de los agentes de IA, la IUA se vuelve crucial. Para garantizar una funcionalidad consistente en las tres, el autor destaca la necesidad de separar la lógica de negocio central de los patrones de presentación e interacción específicos de la interfaz. Las funciones deben definirse en la lógica de la aplicación subyacente y exponerse a través de las interfaces, evitando la degradación no intencional de ninguna interfaz al agregar nuevas funciones.

Desarrollo

Microrim y la rápida portabilidad de R:BASE System V a OS/2

2025-08-11

A finales de 1986, Microrim, una empresa de software de bases de datos, se enfrentó a una tarea monumental: portar su producto estrella, R:BASE System V, al nuevo sistema operativo OS/2 de IBM antes de su lanzamiento oficial. Aprovechando su diseño de software modular y su experiencia, convirtieron sistemáticamente la aplicación, en gran parte basada en FORTRAN, a C utilizando una herramienta de traducción, y luego la portaron eficientemente a OS/2 aislando las llamadas específicas del sistema operativo. Esta hazaña, lograda en un tiempo increíblemente corto, mostró la destreza de Microrim y ofreció valiosas lecciones para otros desarrolladores que enfrentan desafíos similares. La versión resultante de OS/2 se benefició del espacio de memoria expandido y de las capacidades de multitarea de OS/2, mejorando el rendimiento y la experiencia del usuario.

Dumac: Mejoras significativas del rendimiento en una herramienta de uso de disco macOS

2025-08-11

Dumac, una utilidad de uso de disco macOS más rápida que `du -sh`, aprovecha la llamada al sistema `getattrlistbulk` específica de macOS. Después de incorporar los comentarios de la comunidad, el autor aumentó el rendimiento en aproximadamente un 33 % cambiando de Tokio a Rayon para un mejor paralelismo y optimizando el particionamiento del conjunto hash de inode. Resolver la contención de inode mediante una estrategia de particionamiento refinada produjo mayores ganancias de velocidad.

Desarrollo

Una Filosofía del Diseño de Software: Domando la Complejidad para el Mantenimiento

2025-08-11
Una Filosofía del Diseño de Software: Domando la Complejidad para el Mantenimiento

Este artículo resume las ideas principales del libro "Una Filosofía del Diseño de Software", que enfatiza la reducción de la complejidad del sistema de software para mejorar el mantenimiento. La complejidad surge de las dependencias y la oscuridad, manifestándose como amplificación de cambios, alta carga cognitiva y desconocidos desconocidos. Las dependencias surgen principalmente de la duplicación, las excepciones, la herencia y la descomposición temporal; la oscuridad resulta de nombres vagos, inconsistencia y documentación inadecuada. El autor aboga por la programación estratégica, que implica invertir tiempo en diseños limpios y resolución de problemas junto con la implementación de nuevas funciones, evitando así la acumulación de complejidad. El objetivo final es escribir software que no solo sea funcional, sino también fácilmente mantenible.

Desarrollo

Herramienta de gestión de proyectos todo en uno: Rastrea todo, domina todo

2025-08-11

Esta herramienta cubre todos los aspectos de la gestión de proyectos, desde el seguimiento del embudo de ventas, la gestión de clientes potenciales, la planificación de la hoja de ruta y la programación de reuniones hasta la gestión de tareas, el seguimiento de la investigación, la gestión del calendario, la presupuestación y la formación de incorporación de empleados. También incluye investigación de mercado, planificación de contenido, análisis de rendimiento, gestión de redes sociales, gestión de proveedores, control de calidad, gestión del cumplimiento, gestión de inventario, creación de redes y desarrollo e innovación de productos. Es como un asistente de gestión de proyectos omnipotente, que te ayuda a rastrear cada paso importante, dominar la situación general y, finalmente, lograr tus objetivos de proyecto.

Construyendo cosas con Claude Code: Desde un clasificador de comentarios de Hacker News hasta un creador de pósters

2025-08-11

El autor construyó varios proyectos usando Claude Code de Anthropic, incluyendo un plugin clasificador de comentarios de Hacker News y un reemplazo minimalista de Canva: un creador de pósters. El primero tiene como objetivo filtrar comentarios irrelevantes, mientras que el segundo proporciona una interfaz sencilla para combinar imágenes y texto para generar PDFs A4. El autor también aprovechó Claude Code para la gestión de archivos y el procesamiento de datos, como renombrar archivos de extractos bancarios y fusionarlos en un CSV. A pesar de encontrar desafíos, como las limitaciones de Claude Code en el manejo de interfaces de usuario complejas y la exportación de PDFs, el autor sigue impresionado por el potencial de Claude Code para la creación rápida de prototipos y la mejora de la productividad.

Desarrollo

De Notion a .txt: Mi viaje hacia la productividad simple

2025-08-11

Después de años probando varias aplicaciones de productividad como Notion, Todoist y OmniFocus, el autor volvió a un simple archivo todo.txt. Las aplicaciones complejas, descubrió, se convirtieron en sumideros de tiempo, mientras que un archivo de texto simple resultó mucho más eficiente. Él llena el archivo todas las noches con las tareas del día siguiente, actualizándolo a lo largo del día. El sistema es simple, buscable, persistente e independiente de cualquier aplicación o plataforma específica. El autor argumenta que la verdadera productividad depende de: enumerar tareas, verificarlas regularmente y ejecutarlas, no de perseguir la aplicación perfecta.

Desarrollo archivo de texto

Restricciones de Aplicación de Sugerencias de Código de GitHub: Cuándo tus Sugerencias no se Aplicarán

2025-08-11
Restricciones de Aplicación de Sugerencias de Código de GitHub: Cuándo tus Sugerencias no se Aplicarán

Este texto conciso describe varios escenarios en los que las sugerencias de código no se pueden aplicar en el sistema de revisión de código de GitHub. Esto incluye ningún cambio de código, solicitudes de extracción cerradas, visualización de subconjuntos de cambios, varias sugerencias por línea, sugerencias en líneas eliminadas, sugerencias inválidas, sugerencias ya aplicadas o resueltas, sugerencias de revisiones pendientes, sugerencias en comentarios multilínea, solicitudes de extracción en cola para fusionar y indisponibilidad temporal del sistema. En resumen, GitHub impone limitaciones estrictas a la aplicación de sugerencias de código para garantizar la integridad y la eficiencia de la revisión de código.

Desarrollo

¿Por qué se subestima el rendimiento web?

2025-08-11

A pesar de que los consumidores valoran la velocidad de los sitios web, muchas empresas ignoran el rendimiento web, lo que lleva a sitios web lentos y a pérdidas financieras significativas. El artículo analiza por qué las empresas B2B y las grandes empresas B2C descuidan la optimización debido a los altos costes de cambio y la falta de métricas de rendimiento, y por qué las pequeñas empresas B2C tienen problemas de rendimiento derivados de frameworks como React, que priorizan la experiencia del desarrollador en lugar de la experiencia del usuario. El autor sugiere que Core Web Vitals y el aumento de los generadores de sitios web estáticos ofrecen esperanza, pero las empresas deben superar el obstáculo de cambiar las pilas de tecnología.

Desarrollo

Mejorar el analizador de enteros: adoptar la notación científica

2025-08-11

Este artículo propone una mejora en los analizadores de enteros para admitir la notación científica (por ejemplo, 1E9 para mil millones). El autor argumenta que los analizadores de enteros actuales a menudo rechazan entradas como "1E9", lo que dificulta la introducción de enteros grandes. Al permitir que los analizadores reconozcan y procesen la notación científica, la introducción de números grandes puede simplificarse y hacerse más eficiente. El artículo también analiza los posibles problemas de compatibilidad con esta mejora y cómo solucionarlos.

Promesas Autogarantizadas: Asegurando tus Datos en la Era de la Tecnología Cambiante

2025-08-11
Promesas Autogarantizadas: Asegurando tus Datos en la Era de la Tecnología Cambiante

Las empresas rompen promesas todo el tiempo. Este artículo introduce el concepto de una 'promesa autogarantizada', un compromiso verificable por el usuario, independientemente de la confianza en la empresa. 'Archivo sobre aplicación' es un ejemplo; los usuarios mantienen el control y pueden usar sus archivos en otras aplicaciones. 'Acero inoxidable' es otro: sus propiedades son independientemente comprobables. En contraste, los términos y las políticas no son autogarantizadas; las empresas pueden cambiarlas retroactivamente, afectando los datos del usuario (por ejemplo, Google, Zoom). Una verdadera promesa de privacidad autogarantizada asegura que la herramienta no tenga acceso a los datos del usuario en primer lugar. El artículo advierte que codificar valores en la gobernanza o confiar únicamente en código abierto no es una protección confiable. Elegir herramientas con promesas autogarantizadas ayuda a mitigar las incertidumbres del futuro de una herramienta, como cierres de negocios o adquisiciones.

Búsqueda de subcadenas un 60% más rápida en Zig usando SIMD

2025-08-11
Búsqueda de subcadenas un 60% más rápida en Zig usando SIMD

Este artículo describe cómo el autor logró una aceleración de aproximadamente el 60% en la búsqueda de subcadenas en el lenguaje de programación Zig utilizando instrucciones SIMD. Se implementó un algoritmo compatible con SIMD, extrayendo el primer y el último carácter de la subcadena objetivo y aprovechando las comparaciones paralelas SIMD para reducir significativamente los accesos a la memoria. Los benchmarks muestran una reducción del 80% en los ciclos de CPU y mejoras sustanciales en la velocidad, especialmente con textos grandes. Si bien las ganancias son menos significativas con textos más pequeños, el potencial de SIMD se demuestra claramente. El artículo también explora variaciones en el rendimiento con diferentes selecciones de caracteres y conjuntos de instrucciones SIMD (AVX2, AVX-512), y analiza por qué esta optimización no se integró en la biblioteca estándar de Zig.

Informe técnico de la Fundación Rust 2025: Seguridad, escalabilidad y facilidad para desarrolladores

2025-08-11
Informe técnico de la Fundación Rust 2025: Seguridad, escalabilidad y facilidad para desarrolladores

La Fundación Rust publicó su Informe Técnico 2025, que resume un año de avances significativos en el soporte del lenguaje de programación Rust y su ecosistema. El informe destaca el trabajo de la Fundación en asegurar la cadena de suministro de Rust, mejorar la infraestructura crítica, aumentar la preparación de Rust para usos críticos de seguridad y fomentar la interoperabilidad con C++. Los logros clave incluyen: el lanzamiento completo de Trusted Publishing en crates.io; un progreso importante en la infraestructura de firma de paquetes basada en TUF; la integración de la Especificación de Lenguaje Ferrocene en el Proyecto Rust; una reducción del 75% en los costos de infraestructura de CI; la expansión del Consorcio Rust para Seguridad Crítica; y la participación directa con los organismos de estándares ISO C++. Estos esfuerzos garantizan que Rust siga siendo seguro, confiable y esté listo para las demandas del desarrollo de software moderno.

Desarrollo Informe Técnico

Python Resuelve el Problema de la 'Dependencia Fantasma': PEP 770 y SBOMs Triunfan

2025-08-11
Python Resuelve el Problema de la 'Dependencia Fantasma': PEP 770 y SBOMs Triunfan

Seth Larson, Desarrollador Residente de Seguridad de la Fundación de Software Python, en colaboración con Alpha-Omega, publicó un documento técnico que detalla la solución al problema de la 'dependencia fantasma'. Esta solución, que aprovecha PEP 770 y las Listas de Materiales de Software (SBOM), mejora la capacidad de medición de los paquetes de Python. Esto permite que sistemas automatizados, como los escáneres de vulnerabilidades, proporcionen resultados precisos incluso en gráficos complejos de dependencias comunes en la computación científica, la computación de alto rendimiento y la IA. Proyectos clave como NumPy, criptografía y pip ya están evaluando la adopción de PEP 770.

Desarrollo

Genéricos en tiempo de compilación de PHP: un compromiso pragmático

2025-08-11
Genéricos en tiempo de compilación de PHP: un compromiso pragmático

Los genéricos han sido durante mucho tiempo una característica deseable para PHP, pero la implementación en tiempo de ejecución ha demostrado ser increíblemente difícil. El equipo de la Fundación PHP propone un enfoque diferente: genéricos en tiempo de compilación limitados a interfaces y clases abstractas. Esto ofrece la mayoría de los beneficios de los genéricos, evitando muchas dificultades. Al realizar la verificación de tipos en tiempo de compilación, mejora significativamente la eficiencia y reduce errores. Si bien los genéricos en tiempo de ejecución siguen siendo imposibles con este enfoque, representa una mejora sustancial, lo que justifica una seria consideración por parte de la comunidad.

Aumento del Rendimiento de eBPF: Descubriendo el Mecanismo de Trampolim

2025-08-11

Esta publicación de blog profundiza en el mecanismo de trampolín eBPF, una optimización de rendimiento crucial. Con el uso creciente de eBPF en la monitorización de sistemas y otras áreas, la ejecución eficiente de programas es crítica. El trampolín evita la sobrecarga del manejo de excepciones en los métodos tradicionales de kprobe, llamando directamente a los programas eBPF. El artículo detalla el funcionamiento interno del trampolín, cubriendo casos de uso avanzados, como el manejo de puntos de entrada y salida de funciones, la transmisión de múltiples argumentos y las optimizaciones de implementación en ARM64.

Desarrollo trampolín

Bolt: Un lenguaje integrable ultrarrápido

2025-08-11
Bolt: Un lenguaje integrable ultrarrápido

Bolt es un lenguaje integrable ligero, ultrarrápido y con seguridad de tipos, diseñado para aplicaciones en tiempo real. Destaca por su rendimiento excepcional, superando a otros lenguajes de su clase; una implementación compacta que minimiza el tamaño de la compilación; una compilación extremadamente rápida (más de 500kloc/thread/segundo); facilidad de integración (solo unas pocas líneas de código); un sistema de tipos rico para detectar errores antes de la ejecución; y un diseño priorizando la integración, enfocado en el rendimiento y la agilidad entre lenguajes. Actualmente, Bolt se compila en x64 y se ha probado en los compiladores MSVC, GCC y Clang, pero aún se encuentra en desarrollo activo y no es estable.

Un compilador Python de 300 líneas: Conversión de cierres explicada

2025-08-11
Un compilador Python de 300 líneas: Conversión de cierres explicada

Mientras trabajaba en el tutorial de Ghuloum, el autor reimplementó un compilador originalmente escrito en C, logrando una concisa versión en Python de 300 líneas (incluyendo pruebas). Este compilador realiza la conversión de cierres, manejando la vinculación de variables, el seguimiento de variables libres y la gestión de objetos de código. El artículo detalla la implementación, cubriendo las expresiones lambda y let, las llamadas a funciones y proporcionando casos de prueba y ejemplos de código ensamblador. El resultado es un compilador sorprendentemente compacto capaz de manejar cierres y llamadas a funciones indirectas, mostrando soluciones elegantes para problemas complejos.

División Segura en C con Maybe

2025-08-11

Este artículo detalla la implementación de contenedores genéricos seguros para tipos y límites en C. El autor introduce un tipo `Maybe`, inspirado en Haskell, para manejar funciones que pueden devolver ningún valor (por ejemplo, división por cero). Se crea una función de división segura usando macros para definir `Maybe`, tratando la división por cero y el caso límite de dividir el entero representativo más pequeño por -1. Se analiza el código ensamblador generado por GCC para verificar la seguridad de la función. El autor concluye señalando las limitaciones de este enfoque para probar la seguridad completa de los programas C.

Desarrollo

Más rápido que memcpy: Un benchmark de métodos de copia de memoria personalizados

2025-08-11

Durante el perfilado, el autor descubrió que `memcpy` era un cuello de botella para mensajes binarios grandes. Se implementaron y se compararon varios métodos personalizados de copia de memoria, incluyendo variaciones que usan instrucciones REP MOVSB y AVX (alineado, alineado en stream y alineado en stream con prefetch). Para mensajes de tamaño pequeño a mediano, la versión AVX con bucle desplegado tuvo el mejor rendimiento. Para mensajes grandes (> 1 MB), la versión AVX alineada en stream con prefetch fue la más rápida, pero su rendimiento en mensajes pequeños fue pésimo. ¿La conclusión? `std::memcpy` ofrece un buen equilibrio entre rendimiento y adaptabilidad; los métodos personalizados son innecesarios a menos que el rendimiento sea primordial.

MCP: El protocolo que accidentalmente está creando un ecosistema universal de plugins

2025-08-10
MCP: El protocolo que accidentalmente está creando un ecosistema universal de plugins

Este artículo explora el potencial inesperado del MCP (Protocolo de Contexto de Modelo), argumentando que es mucho más que un simple potenciador de IA. Trazando un paralelo con la versatilidad del USB-C, que conecta desde teléfonos hasta tostadoras, el autor sugiere que el potencial del MCP se extiende más allá de la IA, actuando como una forma estandarizada de conectar diversas fuentes de datos y herramientas. Su aplicación, APM, utiliza servidores MCP para la extensibilidad, ofreciendo funciones como corrección ortográfica, gestión de tareas e incluso respuestas de agentes de IA similares a las de Warcraft 3. En definitiva, el artículo postula el surgimiento del MCP como un poderoso e imprevisto ecosistema universal de plugins.

Desarrollo

Arrancando 5000 VMs Erlang en un servidor Ampere One de 192 núcleos

2025-08-10
Arrancando 5000 VMs Erlang en un servidor Ampere One de 192 núcleos

Underjord, una consultora especializada en Elixir y Nerves, logró ejecutar 5000 máquinas virtuales Erlang en un servidor Ampere One de 192 núcleos. Cada VM ejecuta un dispositivo IoT Linux utilizando el framework Nerves. Esto se logró utilizando un nuevo gestor de arranque, little_loader, simplificando el arranque de VMs ARM64 QEMU y aprovechando la aceleración KVM. Los desafíos incluyeron problemas de compilación y optimización de memoria, pero se superaron ajustando los asignadores de VM BEAM, los modos de lanzamiento de Erlang y los parámetros del kernel de Linux. Se ejecutaron con éxito más de 5000 VMs, abriendo nuevas posibilidades para las pruebas y el desarrollo del framework Nerves y potencialmente integrándose en futuras herramientas de Nerves.

Desarrollo

OS/2: La ambiciosa apuesta de Microsoft por los sistemas operativos

2025-08-10

Un artículo de la revista Computer Language de 1987 describió detalladamente el entonces nuevo sistema operativo de Microsoft, OS/2, prediciendo su potencial para dominar los microordenadores Intel 80286/80386 en la próxima década. Sus capacidades de multitarea, API completa y extensibilidad de hardware se destacaron como puntos fuertes. La arquitectura de OS/2 presentaba tres capas: el núcleo y los servicios del sistema, el Windows Presentation Manager (WPM) y el OS/2 LAN Manager. El artículo se centró en el núcleo y sus servicios del sistema, cubriendo la gestión de procesos, la gestión de memoria (incluida la memoria virtual), los controladores de dispositivos, la gestión de archivos y la comunicación entre procesos (IPC). OS/2 utilizaba una planificación preemptiva y la división de tiempo, admitía modos protegido y real, y ofrecía compatibilidad con MS-DOS. La vinculación dinámica era un elemento crucial, mejorando la reutilización del código y la protección de las aplicaciones para el futuro. El artículo concluyó especulando sobre las mejoras futuras de OS/2 y el soporte para 80386.

Desarrollo

Configuración de claves API para la creación de aplicaciones de IA

2025-08-10
Configuración de claves API para la creación de aplicaciones de IA

Este documento describe la configuración necesaria de las claves API para construir aplicaciones de IA. Las claves API de E2B y Firecrawl son obligatorias, proporcionando [añadir descripción de la funcionalidad E2B aquí] y capacidades de web scraping, respectivamente. Opcionalmente, puede configurar las claves API de Anthropic, OpenAI o Groq para aprovechar sus potentes modelos de IA para la inferencia; se recomienda el modelo Kimi K2 de Groq para una inferencia rápida.

Mejorando el autocompletado con tabulación en Bash y Zsh: mostrando descripciones para palabras completas

2025-08-10

Este artículo describe una mejora en el autocompletado con tabulación de Bash y Zsh, permitiendo mostrar descripciones incluso para palabras ya completas. Anteriormente, el autocompletado solo mostraba descripciones cuando coincidían varias opciones, lo que dificultaba la visualización de descripciones de comandos únicos. El autor soluciona esto de forma ingeniosa añadiendo opciones de autocompletado 'ficticias', permitiendo a los usuarios ver las descripciones con una sola pulsación de Tab. Esto mejora significativamente la experiencia del usuario, a pesar de una pequeña imperfección en la IU por la duplicación de palabras.

POML: Revolucionando la Ingeniería de Prompts para LLMs

2025-08-10
POML: Revolucionando la Ingeniería de Prompts para LLMs

POML (Prompt Orchestration Markup Language) es un nuevo lenguaje de marcado diseñado para aportar estructura, mantenibilidad y versatilidad a la ingeniería de prompts avanzada para Modelos de Lenguaje Grandes (LLMs). Abordando desafíos comunes como la falta de estructura, la integración compleja de datos y la sensibilidad al formato, POML proporciona un enfoque sistemático para organizar componentes de prompts, integrando a la perfección diversos tipos de datos y gestionando variaciones de presentación. Esto permite a los desarrolladores crear aplicaciones LLM más sofisticadas y fiables. Un completo kit de herramientas de desarrollo, que incluye una extensión de VS Code y SDKs de Node.js/Python, simplifica el desarrollo y la integración.

Desarrollo

Trie p-fast mejorado: Un algoritmo de coincidencia de prefijos altamente eficiente

2025-08-10

Este artículo presenta una estructura de datos trie p-fast mejorada, un algoritmo altamente eficiente para encontrar el prefijo coincidente más largo o el predecesor/sucesor más cercano de una cadena de consulta en un conjunto de cadenas. En comparación con versiones anteriores, esta versión mejorada es más concisa y eficiente en espacio. Utiliza una tabla hash para almacenar cada prefijo único y un mapa de bits para representar los posibles caracteres siguientes para cada prefijo, logrando una complejidad de tiempo O(log k) (donde k es la longitud de la clave). Si bien las búsquedas de predecesores pueden requerir más sondeos, su rendimiento aún supera a las tries qp tradicionales.

Depuración interactiva en GitHub Actions: Adiós a la caja negra

2025-08-10
Depuración interactiva en GitHub Actions: Adiós a la caja negra

Depurar flujos de trabajo fallidos de GitHub Actions puede ser una pesadilla. Esta publicación detalla un método inteligente: usar netcat y ngrok para crear un shell inverso, lo que te proporciona acceso interactivo al shell del runner. Al configurar comandos netcat y el reenvío de puertos ngrok en tu flujo de trabajo de GitHub Actions, puedes escuchar en un puerto local y obtener un shell conectado al runner para facilitar la depuración. Si bien es un poco complejo, este método es increíblemente eficaz para la resolución de problemas, lo que mejora significativamente la eficiencia del desarrollador. También se presenta una alternativa más simple que usa la acción `mxschmitt/action-tmate`.

Desarrollo Shell inverso

Framework Desktop: Pequeño tamaño, gran potencia para Linux

2025-08-10
Framework Desktop: Pequeño tamaño, gran potencia para Linux

El Framework Desktop es una máquina sorprendentemente potente. Su pequeño tamaño esconde un rendimiento impresionante, gracias al procesador AMD Ryzen AI Max 395+. Los benchmarks muestran que supera significativamente a la competencia en tareas multinúcleo, especialmente relevantes para desarrolladores que usan Docker. Si bien es más caro que algunas alternativas, ofrece un valor excepcional, especialmente en comparación con el Mac Studio, ofreciendo un rendimiento superior a un coste menor. Su funcionamiento silencioso, estética personalizable y gran capacidad para juegos lo convierten en una opción atractiva para desarrolladores Linux y jugadores.

Desarrollo

Lanzamiento de Debian 13 Trixie: Un SO Universal Más Estable y Potente

2025-08-10

Tras más de dos años de desarrollo, ¡Debian 13 Trixie ya está aquí! Esta versión cuenta con más de 69.830 paquetes, admite siete arquitecturas (amd64, arm64, armel, armhf, ppc64el, riscv64 y s390x) y admite oficialmente la arquitectura riscv64 por primera vez. Trixie incluye numerosos paquetes de software actualizados, como el kernel de Linux 6.12 LTS, OpenJDK 21 y Python 3.13, junto con una mejor compatibilidad con el hardware y un instalador mejorado. La actualización a Trixie desde Debian 12 Bookworm se realiza automáticamente mediante APT, pero se recomienda encarecidamente realizar una copia de seguridad de los datos importantes. Con cinco años de soporte, Trixie es ideal para escritorios, servidores y entornos en la nube.

Desarrollo
1 2 26 27 28 30 32 33 34 214 215