<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ubunlog</title>
	<atom:link href="https://ubunlog.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://ubunlog.com/</link>
	<description>Tutoriales, escritorios y software para Ubuntu</description>
	<lastBuildDate>Tue, 05 May 2026 01:45:29 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://ubunlog.com/wp-content/uploads/2022/03/cropped-favicon-ubunlog-2022-32x32.jpg</url>
	<title>Ubunlog</title>
	<link>https://ubunlog.com/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>qBittorrent 5.2.0 mejora su interfaz web y añade cálculo asíncrono</title>
		<link>https://ubunlog.com/qbittorrent-5-2-0-lanzamiento-novedades-rendimiento-interfaz/</link>
		
		<dc:creator><![CDATA[Darkcrizt]]></dc:creator>
		<pubDate>Tue, 05 May 2026 01:45:29 +0000</pubDate>
				<category><![CDATA[Software]]></category>
		<guid isPermaLink="false">https://ubunlog.com/?p=57812</guid>

					<description><![CDATA[El popular cliente de intercambio de archivos P2P ha dado a conocer el lanzamiento oficial de «qBittorrent 5.2.0», una nueva...]]></description>
										<content:encoded><![CDATA[<p><a href="https://ubunlog.com/qbittorrent-5-0-llega-y-presenta-grandes-novedades-y-diversas-mejoras/qbittorrent-3/" rel="attachment wp-att-53843"><img fetchpriority="high" class="alignwide size-full wp-image-53843 first-post-image" src="https://ubunlog.com/wp-content/uploads/2024/10/qBittorrent.png" alt="qBittorrent el cliente de BitTorrent gratuito y de código abierto que permite compartir archivos utilizando el protocolo P2P" width="1200" height="790" srcset="https://ubunlog.com/wp-content/uploads/2024/10/qBittorrent.png 1200w, https://ubunlog.com/wp-content/uploads/2024/10/qBittorrent-500x329.png 500w, https://ubunlog.com/wp-content/uploads/2024/10/qBittorrent-1024x674.png 1024w, https://ubunlog.com/wp-content/uploads/2024/10/qBittorrent-768x506.png 768w, https://ubunlog.com/wp-content/uploads/2024/10/qBittorrent-400x263.png 400w, https://ubunlog.com/wp-content/uploads/2024/10/qBittorrent-456x300.png 456w, https://ubunlog.com/wp-content/uploads/2024/10/qBittorrent-420x277.png 420w, https://ubunlog.com/wp-content/uploads/2024/10/qBittorrent-840x553.png 840w, https://ubunlog.com/wp-content/uploads/2024/10/qBittorrent-150x99.png 150w" sizes="(max-width: 1024px) 100vw, 860px" data-no-lazy="true"></a></p>
<p></p>
<p>El popular cliente de intercambio de archivos P2P ha dado a conocer el<strong> lanzamiento oficial de «qBittorrent 5.2.0»,</strong> una nueva versión que no solo se centra en la estabilidad , sino que introduce mejoras en la capacidad de personalización visual. Los <strong>desarrolladores han escuchado a la comunidad,</strong> implementando desde controles mejorados para el rendimiento hasta la posibilidad de adaptar la paleta de colores y el estilo de la interfaz de manera uniforme en todas las plataformas soportadas. Más allá de la estética, esta actualización interviene directamente en los motores de búsqueda, la gestión de fuentes RSS y la administración remota a través de una interfaz web fuertemente modernizada.</p>
<p>Con la eliminación de dependencias obsoletas, como el soporte para la compilación con Qt 6.5, el proyecto asegura un código más limpio y preparado para el futuro. Todo esto convierte a esta iteración en una herramienta mucho más robusta, eficiente y adaptada a los exigentes flujos de trabajo de los usuarios avanzados.</p>
<h2>Principales novedades de qBittorrent 5.2.0</h2>
<p>La experiencia de usuario recibe mejoras al incorporar un <strong>sistema de tematización que permite personalizar los colores de los paneles de progreso</strong> y el mapa de bloques de descarga. Para facilitar la lectura rápida, se ha añadido una <strong>opción que vincula el color de la barra de progreso directamente con el estado actual del torrent</strong>, aunque los usuarios más conservadores disponen de un interruptor para desactivar por completo esta indicación.</p>
<p>La <strong>barra de herramientas también experimenta mejoras:</strong> los <strong>botones para añadir archivos y enlaces han intercambiado posiciones</strong>, y se ha introducido un <strong>nuevo icono con forma de paleta</strong> para acceder instantáneamente a la interfaz de creación de torrents. Adicionalmente, la barra de estado ahora muestra información crítica en tiempo real, indicando el espacio libre disponible en el dispositivo de almacenamiento. En cuanto a la gestión de datos y metadatos, el programa ahora permite copiar las rutas del contenido de los torrents seleccionados y transferir sus comentarios directamente a aplicaciones externas.</p>
<h3>Rendimiento asíncrono y control de categorías</h3>
<p>Bajo el capó, el <strong>motor de descargas ha optimizado sus procesos computacionales más pesados,</strong> destacando que el cálculo de los bloques de los archivos torrent ahora se ejecuta en modo asíncrono para evitar bloqueos en la interfaz. El <strong>sistema de reanudación también ha sido mejorado mediante la optimización de la cola de carga,</strong> reduciendo drásticamente el tiempo necesario para reactivar descargas pausadas al evitar la copia redundante de datos.</p>
<p>A nivel de organización de ficheros, las restricciones previas en las subcategorías han sido eliminadas, permitiendo su uso incondicional y habilitando la configuración de límites de subida de forma individual para cada una de ellas. Como medida de seguridad organizativa, si un administrador elimina una categoría, los torrents que albergaba no quedan huérfanos, sino que son trasladados automáticamente a su categoría principal.</p>
<p>Además, s<strong>e ha incorporado una función de automatización</strong> del sistema que <strong>permite reiniciar el equipo automáticamente una vez que todas las descargas activas han finalizado.</strong></p>
<h3>Evolución de la interfaz web, RSS y búsquedas</h3>
<p>La <strong>administración remota mediante la interfaz web ha sido reescrita</strong> para incluir herramientas de grado profesional, destacando el <strong>soporte para crear nuevos torrents directamente desde el navegador</strong> y la autenticación segura mediante claves API y credenciales básicas. Esta plataforma de control web reemplaza los antiguos iconos GIF por imágenes vectoriales SVG de alta calidad, permite el desplazamiento horizontal por pestañas y estrena una experiencia de usuario totalmente nueva para la adición de archivos y el filtrado de rastreadores por estado. En el ámbito de la automatización de contenidos, el lector RSS otorga un control absoluto al permitir personalizar el tiempo de actualización de forma independiente para cada fuente seleccionada e implementar filtros mediante el uso de máscaras o cadenas simples.</p>
<p>Por su parte, el motor de búsqueda integrado recibio mejoras de conexión y precisión al añadir<strong> soporte nativo para proxies SOCKS4 y SOCKS4a</strong>, junto con o<strong>pciones de filtrado de resultados de búsqueda mucho más avanzadas.</strong></p>
<h3>Ajustes específicos por sistema operativo y limpieza de código</h3>
<p>Los usuarios de Windows se benefician de una herramienta de creación de torrents que ahora comprende y permite el uso de enlaces simbólicos, mientras que los usarios de<strong> Linux, se ha decidido eliminar la antigua opción que limitaba el consumo de memoria RAM,</strong> confiando esta gestión puramente a los mecanismos modernos del núcleo del sistema operativo.</p>
<p>Mientras tanto, la <strong>versión de macOS recibe una lluvia de correcciones que solucionan bloqueos críticos</strong> al eliminar archivos o al cerrar la aplicación debido a interbloqueos de accesibilidad, junto con nuevos menús en la barra de estado para visualizar métricas de velocidad de subida y bajada.</p>
<p>Finalmente, si estas interesado en poder conocer mas al respecto, puedes consultar los detalles en <a href="https://github.com/qbittorrent/qBittorrent/releases/tag/release-5.2.0">el siguiente enlace.</a></p>
<h3>¿Cómo instalar qBittorrent en Ubuntu y derivados?</h3>
<p>Para quienes deseen instalar la nueva versión de qBittorrent, pueden seguir las instrucciones que detallamos a continuación.</p>
<p>En las distribuciones basadas en Ubuntu (como Linux Mint, Kubuntu, Zorin OS, Elementary, entre otras), la aplicación se encuentra disponible en los repositorios oficiales. Sin embargo, también existe un repositorio que ofrece actualizaciones más rápidas.</p>
<p>Para agregar este repositorio y obtener las versiones más recientes, abre una terminal (puedes hacerlo usando la combinación de teclas <strong>Ctrl + Alt + T</strong>) y ejecuta los siguientes comandos:</p>
<pre class="brush: bash; title: ; notranslate">sudo add-apt-repository ppa:qbittorrent-team/qbittorrent-stable -y</pre>
<p>Después proseguimos a instalar la aplicación:</p>
<pre class="brush: bash; title: ; notranslate">sudo apt-get install qbittorrent</pre>
<h3>Desinstalar qBittorrent</h3>
<p>Para eliminar qBittorrent simplemente tenemos que ejecutar los siguientes comandos:</p>
<pre class="brush: plain; title: ; notranslate">sudo add-apt-repository --remove ppa:qbittorrent-team/qbittorrent-stable</pre>
<pre class="brush: plain; title: ; notranslate">sudo apt remove --autoremove qbittorrent</pre>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Zorin OS 18.1 resucita la versión Lite y mejora el gestor de ventanas</title>
		<link>https://ubunlog.com/zorin-os-18-1-lanzamiento-novedades-lite-xfce-windows/</link>
		
		<dc:creator><![CDATA[Darkcrizt]]></dc:creator>
		<pubDate>Mon, 04 May 2026 21:45:37 +0000</pubDate>
				<category><![CDATA[Distribuciones basadas en Ubuntu]]></category>
		<guid isPermaLink="false">https://ubunlog.com/?p=57808</guid>

					<description><![CDATA[Hace ya algunos dias los desarrolladores del proyecto Zorin OS (conocido por ofrecer una de las transiciones más amigables para...]]></description>
										<content:encoded><![CDATA[<p><a href="https://ubunlog.com/zorin-os-18-1-lanzamiento-novedades-lite-xfce-windows/18-1-desktop/" rel="attachment wp-att-57811"><img class="alignwide size-full wp-image-57811 first-post-image" src="https://ubunlog.com/wp-content/uploads/2026/05/18.1-desktop.jpg" alt="Zorin OS 18.1 desktop" width="1200" height="750" srcset="https://ubunlog.com/wp-content/uploads/2026/05/18.1-desktop.jpg 1200w, https://ubunlog.com/wp-content/uploads/2026/05/18.1-desktop-500x313.jpg 500w, https://ubunlog.com/wp-content/uploads/2026/05/18.1-desktop-1024x640.jpg 1024w, https://ubunlog.com/wp-content/uploads/2026/05/18.1-desktop-768x480.jpg 768w, https://ubunlog.com/wp-content/uploads/2026/05/18.1-desktop-400x250.jpg 400w, https://ubunlog.com/wp-content/uploads/2026/05/18.1-desktop-480x300.jpg 480w, https://ubunlog.com/wp-content/uploads/2026/05/18.1-desktop-420x263.jpg 420w, https://ubunlog.com/wp-content/uploads/2026/05/18.1-desktop-840x525.jpg 840w, https://ubunlog.com/wp-content/uploads/2026/05/18.1-desktop-150x94.jpg 150w" sizes="(max-width: 1024px) 100vw, 860px" data-no-lazy="true"></a></p>
<p></p>
<p>Hace ya algunos dias los desarrolladores del proyecto Zorin OS (conocido por ofrecer una de las transiciones más amigables para los usuarios que migran desde Windows) dieron a conocer el <strong>lanzamiento oficial de su versión 18.1. </strong></p>
<p>Construida <strong>sobre la base de Ubuntu 24.04,</strong> esta actualización de medio ciclo llega apenas seis meses después de la version principal (18.0) para refinar la experiencia de usuario y ampliar masivamente su soporte de hardware. Lejos de conformarse con ajustes esteticos, esta entrega mejora la gestión de ventanas, potencia el ecosistema ofimático y resucita la esperada edición «Lite», diseñada específicamente para inyectar vida a equipos con recursos limitados.</p>
<h2>Principales novedades de Zorin OS 18.1</h2>
<p>La gran estrella de esta actualización es la <strong>mejora en el modo de mosaico de ventanas</strong> (Advanced Window Tiling), una característica <strong>diseñada para organizar el área de trabajo sin depender de atajos de teclado complejos</strong>. Ahora, al hacer clic en una aplicación acoplada desde la barra de tareas, el sistema trae automáticamente al primer plano todas las ventanas que conforman ese diseño de mosaico específico.</p>
<p>Además, <strong>se ha incorporado una herramienta visual para reordenar estos diseños directamente</strong> desde el cuadro de configuración, y se ha optimizado el acoplamiento a los bordes de la pantalla para que las ventanas respeten los diseños personalizados en lugar de limitarse a divisiones de media pantalla o cuartos.</p>
<p>Otra de las mejoras que presenta la nueva version es la ampliacion de la base de datos integrada, encargada de detectar instaladores .exe de Windows. Y es que ahora ha sido ampliada en un 40%, reconociendo ahora más de 240 aplicaciones populares. Si un usuario intenta instalar un programa como Plex desde su archivo ejecutable original, Zorin OS intercepta la acción y muestra un cuadro de diálogo sugiriendo la descarga de la versión nativa de Linux directamente desde la tienda de software. En el caso de aplicaciones exclusivas de Windows, el sistema recomendará alternativa, como Evolution Mail en sustitución de Microsoft Outlook.</p>
<h3>El regreso triunfal de la edición Lite con XFCE 4.20</h3>
<p>Para los usuarios con hardware modesto o portátiles antiguos, la gran noticia es el <strong>restablecimiento de la edición «Lite».</strong> Esta versión ligera abandona los entornos pesados para abrazar XFCE 4.20, garantizando fluidez sin sacrificar la estética. El a<strong>dministrador de archivos ha sido rediseñado hacia una interfaz mucho más compacta</strong>, ideal para pantallas de baja resolución. A pesar de su enfoque en el bajo consumo, la edición Lite estrena soporte nativo para lectores de huellas dactilares, permitiendo la autenticación biométrica desde el panel de ajustes.</p>
<p><a href="https://ubunlog.com/zorin-os-18-1-lanzamiento-novedades-lite-xfce-windows/edge-tiling-options/" rel="attachment wp-att-57809"><img decoding="async" class="alignwide size-full wp-image-57809" src="https://ubunlog.com/wp-content/uploads/2026/05/edge-tiling-options.png" alt="Zorin OS 18.1" width="1200" height="706" srcset="https://ubunlog.com/wp-content/uploads/2026/05/edge-tiling-options.png 1200w, https://ubunlog.com/wp-content/uploads/2026/05/edge-tiling-options-500x294.png 500w, https://ubunlog.com/wp-content/uploads/2026/05/edge-tiling-options-1024x602.png 1024w, https://ubunlog.com/wp-content/uploads/2026/05/edge-tiling-options-768x452.png 768w, https://ubunlog.com/wp-content/uploads/2026/05/edge-tiling-options-400x235.png 400w, https://ubunlog.com/wp-content/uploads/2026/05/edge-tiling-options-420x247.png 420w, https://ubunlog.com/wp-content/uploads/2026/05/edge-tiling-options-840x494.png 840w, https://ubunlog.com/wp-content/uploads/2026/05/edge-tiling-options-150x88.png 150w" sizes="(max-width: 1024px) 100vw, 860px"></a></p>
<p></p>
<p>El apartado visual también se ha renovado con<strong> temas de escritorio redondeados, paletas de colores de alto contraste para facilitar la lectura</strong> y la adición de los colores amarillo y marrón en la aplicación Zorin Appearance.</p>
<h3>Soporte extendido, núcleo 6.17 y LibreOffice 26.2</h3>
<p>Zorin OS 18.1 <strong>integra LibreOffice 26.2, la última versión de la suite ofimática</strong> que presume de una compatibilidad muy superior con los formatos cerrados de Microsoft Office 365, soporte nativo para Markdown y mejoras de rendimiento al gestionar hojas de cálculo complejas. El entorno general del <strong>escritorio ha recibido correcciones de errores</strong> que se traducen en una navegación más rápida y fluida, complementadas con detalles de usabilidad como la capacidad de desactivar los iconos de estado de las aplicaciones en la bandeja del panel o la correcta visualización de texto de derecha a izquierda para idiomas como el árabe o el hebreo.</p>
<p><a href="https://ubunlog.com/zorin-os-18-1-lanzamiento-novedades-lite-xfce-windows/libreoffice-10/" rel="attachment wp-att-57810"><img decoding="async" class="alignwide size-full wp-image-57810" src="https://ubunlog.com/wp-content/uploads/2026/05/libreoffice.jpg" alt="Zorin OS 18.1 libreoffice" width="1200" height="692" srcset="https://ubunlog.com/wp-content/uploads/2026/05/libreoffice.jpg 1200w, https://ubunlog.com/wp-content/uploads/2026/05/libreoffice-500x288.jpg 500w, https://ubunlog.com/wp-content/uploads/2026/05/libreoffice-1024x591.jpg 1024w, https://ubunlog.com/wp-content/uploads/2026/05/libreoffice-768x443.jpg 768w, https://ubunlog.com/wp-content/uploads/2026/05/libreoffice-400x231.jpg 400w, https://ubunlog.com/wp-content/uploads/2026/05/libreoffice-420x242.jpg 420w, https://ubunlog.com/wp-content/uploads/2026/05/libreoffice-840x484.jpg 840w, https://ubunlog.com/wp-content/uploads/2026/05/libreoffice-150x87.jpg 150w" sizes="(max-width: 1024px) 100vw, 860px"></a></p>
<p></p>
<p>Por la parte del corazon del sistema, esta nueva version a optato por la adopción del<strong> kernel Linux 6.17.</strong> Este nuevo núcleo expande enormemente el soporte de hardware, integrando<strong> controladores actualizados para las recientes tarjetas gráficas NVIDIA, soporte para gráficos Intel Xe3</strong> y una gestión mejorada para arquitecturas híbridas con GPU AMD.</p>
<p>La lista de periféricos ahora abarca sin problemas desde controladores de juego como el PlayStation 5 DualSense hasta consolas portátiles modernas como la ASUS ROG Ally y dispositivos Apple como el Magic Mouse 2. Con todo esto, Zorin OS 18.1 asegura soporte continuo y parches de seguridad garantizados hasta junio de 2029, consolidándose como una opción a considerar.</p>
<p>Finalmente, si estás interesado en poder conocer más al respecto, puedes consultar los detalles <a href="https://blog.zorin.com/2026/04/15/zorin-os-18.1-is-released/">en el siguiente enlace.</a></p>
<h2>Descargar y obtener Zorin OS 18.1</h2>
<p>Para los interesados en esta nueva versión, deben de saber que soló, tienen que <strong>dirigirse a la página web oficial</strong> de la distribución y en su sección de descargas podrán obtener la imagen del sistema. Las imágenes del sistema tienen un tamaño de 4 a 8GB y e<a href="https://zorin.com/os/download/">l enlace para poder descargar el sistema es este</a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Ataque DDoS masivo contra la infraestructura pública de Canonical y Ubuntu</title>
		<link>https://ubunlog.com/ataque-ddos-masivo-contra-la-infraestructura-publica-de-canonical-y-ubuntu/</link>
		
		<dc:creator><![CDATA[Pablinux]]></dc:creator>
		<pubDate>Mon, 04 May 2026 15:21:34 +0000</pubDate>
				<category><![CDATA[Noticias]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<guid isPermaLink="false">https://ubunlog.com/?p=57806</guid>

					<description><![CDATA[Un DDoS masivo paraliza servicios clave de Canonical y Ubuntu, afectando actualizaciones y seguridad. Claves del ataque y su impacto en Europa.]]></description>
										<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-57807 first-post-image" src="https://ubunlog.com/wp-content/uploads/2026/05/Ataque-DDoS-a-Canonical.avif" alt="Ataque DDoS a Canonical" width="1536" height="1024" srcset="https://ubunlog.com/wp-content/uploads/2026/05/Ataque-DDoS-a-Canonical.avif 1536w, https://ubunlog.com/wp-content/uploads/2026/05/Ataque-DDoS-a-Canonical-500x333.jpg 500w, https://ubunlog.com/wp-content/uploads/2026/05/Ataque-DDoS-a-Canonical-1024x683.jpg 1024w, https://ubunlog.com/wp-content/uploads/2026/05/Ataque-DDoS-a-Canonical-768x512.jpg 768w, https://ubunlog.com/wp-content/uploads/2026/05/Ataque-DDoS-a-Canonical-1200x800.jpg 1200w, https://ubunlog.com/wp-content/uploads/2026/05/Ataque-DDoS-a-Canonical-400x267.jpg 400w, https://ubunlog.com/wp-content/uploads/2026/05/Ataque-DDoS-a-Canonical-450x300.jpg 450w, https://ubunlog.com/wp-content/uploads/2026/05/Ataque-DDoS-a-Canonical-420x280.jpg 420w, https://ubunlog.com/wp-content/uploads/2026/05/Ataque-DDoS-a-Canonical-840x560.jpg 840w, https://ubunlog.com/wp-content/uploads/2026/05/Ataque-DDoS-a-Canonical-150x100.jpg 150w" sizes="(max-width: 1024px) 100vw, 860px" data-no-lazy="true"></p>
<p>La <strong>infraestructura pública de Canonical y los servicios de Ubuntu</strong>, una de las distribuciones de Linux más extendidas a nivel global, se han visto afectados por un ataque distribuido de denegación de servicio (DDoS) que ha dejado fuera de juego durante horas componentes esenciales del ecosistema. La ofensiva ha tenido impacto directo en la capacidad de muchos usuarios y organizaciones para instalar y actualizar el sistema operativo, algo especialmente delicado en entornos empresariales y de administración pública donde Ubuntu es una pieza clave en servidores y nubes privadas.</p>
<p>El incidente, descrito por la propia empresa como un <strong>ataque sostenido y de alcance transfronterizo</strong>, no se ha limitado a tumbar una web corporativa: ha comprometido repositorios, APIs de seguridad, plataformas de desarrollo y servicios de autenticación. Todo ello ha puesto de manifiesto hasta qué punto la infraestructura centralizada de proyectos open source puede convertirse en un cuello de botella crítico cuando se enfrenta a ataques de gran volumen.</p>
<h2>Un ataque DDoS prolongado que paraliza servicios críticos</h2>
<p>Canonical reconoció públicamente el problema a través de su página de estado oficial, de su sitio web <a href="https://x.com/ubuntu/status/2050112955132297652?s=20">e incluso redes sociales</a>, donde informó de que <strong>su infraestructura web estaba bajo un ataque DDoS persistente</strong> y que los equipos internos trabajaban contra reloj para recuperar la normalidad. En el momento de los primeros reportes, la caída acumulaba ya entre 15 y 20 horas de indisponibilidad en parte de los servicios, un intervalo considerable para una plataforma base utilizada de forma masiva por desarrolladores y empresas.</p>
<p>Para quienes no estén familiarizados con este tipo de incidentes, un ataque de denegación de servicio distribuido consiste en <strong>saturar los sistemas objetivo con grandes volúmenes de tráfico basura</strong>, procedente de miles o millones de dispositivos, hasta agotar sus recursos de red o de cómputo. Aunque se trata de una técnica considerada “clásica” frente a otros vectores más sofisticados, sigue siendo una herramienta muy eficaz para dejar fuera de servicio portales, APIs y repositorios de los que dependen infraestructuras críticas.</p>
<h2>Repositorios, API de seguridad y portales afectados</h2>
<p>La comunidad de desarrolladores de Ubuntu empezó a comentar los problemas en <strong>foros no oficiales y canales técnicos</strong> cuando detectaron que determinados servicios eran inaccesibles o funcionaban de forma intermitente. Entre los elementos más sensibles mencionados se encuentran la Ubuntu Security API, los repositorios de paquetes utilizados por el gestor apt, el portal principal ubuntu.com, la Snap Store, la plataforma de desarrollo Launchpad y servicios vinculados a Ubuntu Pro.</p>
<p>El hecho de que la <strong>API de seguridad y los repositorios</strong> se vieran comprometidos tuvo un efecto directo: muchos administradores de sistemas reportaron errores al intentar actualizar paquetes, aplicar parches de seguridad o instalar nuevas instancias del sistema. Pruebas realizadas por terceros en dispositivos con Ubuntu confirmaron que las actualizaciones fallaban mientras el ataque estaba en curso, algo que eleva el incidente muy por encima de una simple caída puntual de una página web.</p>
<p>En paralelo, se destacó que los administradores perdieron temporalmente el acceso a información actualizada sobre vulnerabilidades y parches, lo que complica todavía más la gestión de riesgos en entornos donde se exigen tiempos de reacción muy cortos. En empresas sujetas a normativa estricta de ciberseguridad, como NIS2, un bloqueo prolongado de estos canales puede traducirse en brechas de cumplimiento y en exposición adicional frente a otros tipos de ataques.</p>
<h2>El grupo 313 Team se atribuye el ataque DDoS</h2>
<p>La autoría de la ofensiva fue asumida por un grupo hacktivista que se presenta como <strong>The Islamic Cyber Resistance in Iraq 313 Team</strong>, también conocido simplemente como 313 Team. A través de su canal de Telegram, los atacantes se proclamaron responsables del derribo de la infraestructura pública de Ubuntu y Canonical, afirmando que habían dejado indisponibles servicios esenciales para millones de usuarios.</p>
<p>En algunos mensajes difundidos en ese canal, los atacantes fueron más allá de la reivindicación y <strong>amenazaron con prolongar el ataque</strong> si la compañía no se ponía en contacto con ellos, e incluso habrían llegado a plantear exigencias económicas. Aunque Canonical no confirmó públicamente detalles sobre posibles demandas o comunicaciones directas, la simple existencia de estas amenazas muestra hasta qué punto los DDoS se utilizan como palanca de presión y chantaje.</p>
<h2>Beamed: el servicio DDoS por encargo detrás de la ofensiva</h2>
<p>Uno de los puntos que más preocupa a los expertos es que, según la propia reivindicación, los atacantes no recurrieron a una botnet construida ad hoc, sino a un servicio comercial conocido como <strong>Beamed, una plataforma de DDoS por encargo</strong>. Este tipo de servicios, también llamados booters o stressers, permiten contratar capacidad de ataque como si se tratara de un servicio de suscripción más, rebajando drásticamente la barrera de entrada al cibercrimen.</p>
<p>Beamed asegura ser capaz de generar picos de tráfico de hasta <strong>3,5 terabits por segundo (Tbps)</strong>, una cifra que, aunque no ha sido verificada de forma independiente en este caso concreto, da una idea de la magnitud potencial de la infraestructura que se puede alquilar en el mercado negro. Para ponerlo en contexto, esa capacidad se aproxima a una fracción significativa de algunos de los mayores ataques DDoS jamás documentados por proveedores de mitigación como Cloudflare.</p>
<p>Al externalizar la “potencia de fuego” a estos servicios, los operadores de ataques pueden centrarse en <strong>elegir objetivos y coordinar campañas</strong>, sin necesidad de gestionar su propia red de dispositivos comprometidos. Esto acelera la profesionalización del fenómeno y complica la respuesta policial, ya que cada cierre o incautación va seguido, casi inmediatamente, por la aparición de nuevos servicios o por la migración de la infraestructura a otros dominios y jurisdicciones.</p>
<h2>Tendencia global: el auge de los DDoS comerciales</h2>
<p>El caso Canonical/Ubuntu encaja en una tendencia más amplia observada por empresas de ciberseguridad y organismos internacionales: el <strong>crecimiento explosivo del volumen y frecuencia de los ataques DDoS</strong>. Informes recientes de proveedores como Cloudflare, Nexusguard o Radware apuntan a decenas de millones de incidentes anuales, con incrementos de más del doble de un año para otro y picos históricos de tráfico malicioso en cuestión de segundos.</p>
<p>Buena parte de estos ataques se sitúan por debajo de 1 Gbps y se ejecutan en <strong>ráfagas muy cortas</strong>, diseñadas para pasar desapercibidas y desbordar mecanismos de defensa automatizados antes de que se activen. Sin embargo, episodios como el de Canonical demuestran que los atacantes también son capaces de sostener campañas más largas cuando el objetivo es visible, simbólico o estratégico, algo especialmente relevante para infraestructuras de software libre de referencia.</p>
<p>En los últimos años, agencias como el <strong>FBI y Europol han lanzado operaciones</strong> específicas para desmantelar redes de servicios DDoS por encargo, incautando dominios y deteniendo a algunos responsables. Pese a ello, la realidad es que el ecosistema de booters se comporta como un juego constante del gato y el ratón: por cada servicio clausurado, otros aparecen o se reorganizan, lo que mantiene vivo un mercado que alimenta ataques contra empresas, gobiernos y proyectos tecnológicos abiertos.</p>
<h2>Impacto en empresas, startups y administraciones</h2>
<p>Más allá del ruido mediático, el ataque a Canonical evidencia la <strong>dependencia estructural respecto a proyectos open source</strong> como Ubuntu. Muchas organizaciones públicas, universidades, centros de investigación y compañías privadas utilizan esta distribución como base de sus servidores, nubes híbridas y estaciones de trabajo de desarrollo. Cuando el proveedor central sufre un DDoS de este tipo, el efecto dominó puede sentirse en sectores muy distintos.</p>
<p>En el caso de las startups tecnológicas y las pymes digitales españolas, la caída de servicios como repositorios, Launchpad o la Snap Store se traduce en <strong>retrasos en despliegues, imposibilidad de aplicar parches</strong> y bloqueos en pipelines de integración continua. Esto puede afectar a contratos con clientes, acuerdos de nivel de servicio (SLA) y, en el peor de los escenarios, provocar incidentes de seguridad adicionales si los sistemas quedan sin actualizar durante demasiado tiempo.</p>
<p>La indisponibilidad de la infraestructura de Canonical plantea dudas adicionales sobre continuidad de negocio y cumplimiento normativo. La interrupción de la Ubuntu Security API, de los canales de parches y de la documentación oficial dificulta la gestión de vulnerabilidades, justo en un contexto en el que la presión regulatoria sobre la ciberseguridad va en aumento.</p>
<h2>Riesgo de cadena de suministro en el ecosistema open source</h2>
<p>El episodio también se interpreta como un recordatorio de la <strong>fragilidad de la cadena de suministro de software</strong> basada en proyectos de código abierto. Una parte enorme de la infraestructura tecnológica mundial se apoya en repositorios y servicios mantenidos por equipos relativamente reducidos. Cuando uno de estos nodos se satura o queda inoperativo, el efecto se propaga rápidamente hacia todos los productos y servicios que lo utilizan por debajo.</p>
<p>Casos recientes, como los ataques a repositorios de otras distribuciones Linux, han mostrado la misma debilidad: si se bloquean o comprometen los canales de actualización, las organizaciones quedan expuestas a <strong>vulnerabilidades no parcheadas</strong> y a la imposibilidad de desplegar versiones corregidas. En el escenario donde el uso de Linux en servidores públicos y privados es masivo, este tipo de incidentes se analiza ya como un riesgo sistémico más que como un problema puntual.</p>
<p>Como respuesta, muchos equipos técnicos en empresas y startups están empezando a implementar estrategias de <strong>resiliencia y diversificación</strong>: mirrors locales de paquetes, imágenes de contenedor preconstruidas y almacenadas en registros privados, y planes de contingencia que contemplan la caída temporal de proveedores clave. El objetivo es poder seguir operando con cierta normalidad aunque el proveedor upstream atraviese un episodio de DDoS prolongado.</p>
<h2>Lecciones para la comunidad técnica sobre este ataque DDoS</h2>
<p>En el entorno hispanohablante, donde abundan startups y scaleups que basan su infraestructura en Linux y servicios cloud, el incidente de Canonical sirve de toque de atención. Muchas compañías jóvenes siguen funcionando con la idea de que <strong>“a nosotros no nos van a atacar”</strong>, cuando las estadísticas muestran justo lo contrario: los ataques DDoS afectan cada vez más a empresas de todos los tamaños, y no solo a grandes corporaciones o plataformas globales.</p>
<p>Para los equipos técnicos, el caso subraya la importancia de contar con <strong>protecciones DDoS en capa de red y de aplicación</strong>, soluciones de DNS resilientes, sistemas de monitorización de tráfico y planes de comunicación de crisis preparados de antemano. Aunque gran parte de estas herramientas son de bajo coste o incluso open source, lo que suele faltar es la inversión de tiempo y la planificación previa para ponerlas en marcha antes de que llegue el problema.</p>
<p>Algunas empresas tecnológicas de referencia han reforzado de forma notable su infraestructura tras incidentes tempranos, entendiendo que la ciberseguridad no es un gasto superfluo, sino un <strong>habilitador de crecimiento y de confianza</strong>. El ataque a Canonical y Ubuntu encaja en esa narrativa: si una pieza tan central del ecosistema puede verse paralizada por un DDoS comercial, cualquier actor que construya sobre ella debe asumir la resiliencia como una prioridad.</p>
<p>Lo ocurrido con Canonical y Ubuntu deja claro que un <strong>ataque DDoS bien orquestado contra un proveedor crítico</strong> puede traducirse en problemas inmediatos para millones de sistemas repartidos por el mundo. La combinación de servicios DDoS por encargo, motivación ideológica y uso masivo de software libre convierte estos episodios en algo más que una anécdota técnica: son un recordatorio de que la infraestructura digital sobre la que trabajamos a diario es vulnerable y exige medidas de defensa, planificación y diversificación a la altura de su importancia.</p>

]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Linux 7.1-rc2 avanza con un kernel grande, «raro» y lleno de parches</title>
		<link>https://ubunlog.com/linux-7-1-rc2-avanza-con-un-kernel-grande-raro-y-lleno-de-parches/</link>
		
		<dc:creator><![CDATA[Pablinux]]></dc:creator>
		<pubDate>Mon, 04 May 2026 09:03:46 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Noticias]]></category>
		<guid isPermaLink="false">https://ubunlog.com/?p=57804</guid>

					<description><![CDATA[Linux 7.1-rc2 llega con mejoras clave en NTFS, KVM y drivers gráficos AMD/Intel, afinando estabilidad y soporte de hardware antes del lanzamiento final.]]></description>
										<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-57805 first-post-image" src="https://ubunlog.com/wp-content/uploads/2026/05/Linux-7.1-rc2.avif" alt="Linux 7.1-rc2" width="1024" height="469" srcset="https://ubunlog.com/wp-content/uploads/2026/05/Linux-7.1-rc2.avif 1024w, https://ubunlog.com/wp-content/uploads/2026/05/Linux-7.1-rc2-500x229.jpg 500w, https://ubunlog.com/wp-content/uploads/2026/05/Linux-7.1-rc2-768x352.jpg 768w, https://ubunlog.com/wp-content/uploads/2026/05/Linux-7.1-rc2-400x183.jpg 400w, https://ubunlog.com/wp-content/uploads/2026/05/Linux-7.1-rc2-420x192.jpg 420w, https://ubunlog.com/wp-content/uploads/2026/05/Linux-7.1-rc2-840x385.jpg 840w, https://ubunlog.com/wp-content/uploads/2026/05/Linux-7.1-rc2-150x69.jpg 150w" sizes="(max-width: 1024px) 100vw, 860px" data-no-lazy="true"></p>
<p>La segunda candidata a lanzamiento de <strong>Linux 7.1-rc2 </strong><a href="https://lore.kernel.org/lkml/CAHk-=wjcma=quWe1SsiHkETc6zmRG6HVLcSVchGjAMtn=iimZA@mail.gmail.com/T/#u">ya está disponible</a> para pruebas y llega con un paquete considerable de correcciones repartidas por todo el núcleo. Pese al tamaño del conjunto de cambios, Linus Torvalds ha descrito esta RC como “bastante normal”, lo que refuerza la previsión de un ciclo que termine, como de costumbre, alrededor de una séptima release candidate si no surge ningún contratiempo de última hora.</p>
<p>En esta fase del desarrollo, el foco está puesto menos en grandes novedades visibles y más en la <strong>estabilidad del kernel y el soporte de hardware real</strong>, algo especialmente relevante para usuarios y empresas europeas que dependen de Linux en servidores, equipos de escritorio y dispositivos móviles. La combinación de arreglos en virtualización KVM, controladores gráficos y el nuevo driver NTFS apunta a pulir los detalles antes de que la versión 7.1 estable llegue a las distribuciones, incluida la gestión de actualizaciones de firmware con herramientas como <a href="https://ubunlog.com/fwupd-la-herramienta-por-excelencia-para-la-gestion-de-actualizaciones-de-firmware-en-linux/">gestión de actualizaciones de firmware</a>.</p>
<h2>Linux 7.1-rc2 grande, comportamiento normal: el papel de KVM y la IA</h2>
<p>Uno de los aspectos que más ha llamado la atención de esta Linux 7.1-rc2 es que, en las cifras brutas, <strong>el diffstat parece inusualmente voluminoso</strong>. Torvalds ha explicado que cerca de la mitad de los cambios se concentran en los <em>selftests</em> de KVM, principalmente por una oleada de renombrados internos para que las pruebas sigan las mismas convenciones que el código principal del kernel, tanto en nombres de variables como de tipos.</p>
<p>Este tipo de limpieza no modifica el comportamiento funcional de la virtualización por sí mismo, pero sí tiene impacto en el mantenimiento a largo plazo. Al <strong>homogeneizar la estructura interna de las pruebas de KVM</strong>, los desarrolladores pueden validar mejor el comportamiento de las máquinas virtuales, algo crucial para centros de datos europeos, proveedores de nube y entornos de pruebas que confían en KVM para consolidar cargas de trabajo, al igual que proyectos de virtualización como <a href="https://ubunlog.com/virtualbox-7-2-8-lanzamiento-novedades-seguridad-linux-7/">VirtualBox 7.2.8</a>.</p>
<p>Torvalds ha señalado también que se sigue observando un <strong>patrón de más parches de lo habitual</strong>, tendencia que ya se vio en Linux 7.0 y que se atribuye en buena medida al uso de herramientas de inteligencia artificial para generar o asistir en los cambios de código. Ese incremento de volumen no implica necesariamente más inestabilidad, pero sí obliga a reforzar la revisión, el fuzzing y los sistemas de prueba automatizados, algo que ya se nota en áreas como el planificador <code>sched_ext</code>, donde se han incorporado varias correcciones adicionales.</p>
<h2>Nuevo controlador NTFS: estabilización antes de la versión final</h2>
<p>Otro frente relevante de Linux 7.1 y que afecta directamente a usuarios de escritorio en España y el resto de Europa es el <strong>nuevo controlador NTFS integrado en el kernel principal</strong>. Tras años de trabajo, el desarrollador Namjae Jeon ha logrado que este driver moderno, basado en el controlador NTFS original de solo lectura pero ampliamente mejorado, sustituya al NTFS3 de Paragon y deje obsoletas soluciones en espacio de usuario como NTFS-3G.</p>
<p>En esta Linux 7.1-rc2 se ha incorporado una nueva tanda de correcciones para el driver NTFS, fruto tanto del <strong>aumento de uso en entornos reales</strong> como de pruebas intensivas y fuzzing sobre el código C. Entre los arreglos se incluyen la resolución de posibles fugas de memoria y referencias de página, la prevención de desreferencias de punteros nulos y la rectificación de problemas menores de codificación que podían derivar en errores difíciles de rastrear.</p>
<p>Concretamente, se han ajustado funciones como <code>ntfs_index_walk_down()</code> mediante una <strong>validación más estricta de la asignación de bloques de índice</strong> para evitar accesos inválidos; se ha solucionado una fuga de memoria relacionada con el manejo de cadenas de destino de enlaces simbólicos en rutas de error; y se han introducido controles adicionales en <code>ntfs_mapping_pairs_decompress()</code> para prevenir desbordamientos de VCN y posibles corrupciones en las listas de asignación (<em>runlists</em>).</p>
<p>Además, el equipo ha corregido una <strong>mala utilización de <code>PTR_ERR()</code> sobre punteros de folio válidos</strong> en <code>__ntfs_bitmap_set_bits_in_run()</code>, se ha afinado el recuento de enlaces de directorio para alias WIN32/DOS ajustando el decremento de <em>nlink</em> únicamente cuando el contador de la MFT llega a cero, y se ha solucionado el uso de una variable no inicializada en el mismo proceso de descompresión de <em>mapping pairs</em>. Aunque ninguna de estas incidencias se ha catalogado como un fallo catastrófico, su corrección mejora la fiabilidad general del controlador, algo especialmente interesante para quienes usan particiones NTFS compartidas con Windows en equipos personales o de oficina.</p>
<p>Estas mejoras, fusionadas en el árbol principal del kernel durante el fin de semana, <strong>forman parte ya de Linux 7.1-rc2</strong> y servirán de base para la versión estable prevista para junio, si el calendario no sufre retrasos. Para la comunidad europea que maneja entornos mixtos Windows-Linux en empresas, centros educativos o administraciones públicas, un NTFS más robusto reduce el riesgo de corrupción de datos al alternar entre sistemas operativos.</p>
<h2>Correcciones gráficas: AMDGPU e Intel Xe bajo la lupa</h2>
<p>Junto al trabajo sobre NTFS y KVM, esta RC también incorpora un bloque significativo de <strong>arreglos en el subsistema gráfico DRM</strong>. El conjunto más amplio de cambios ha recaído en el controlador AMDGPU, con mejoras que abarcan desde las GPU más recientes hasta modelos más veteranos que siguen presentes en muchos equipos de usuario y profesionales.</p>
<p>Entre las novedades, hay numerosas <strong>correcciones para IP blocks GFX11.5.4 y otros componentes recientes</strong>, pero también ajustes que benefician a gráficas AMD de la generación GCN 1.0/1.1. Gracias al trabajo de Timur Kristóf, desarrollador vinculado a Valve, se ha habilitado de forma adecuada el soporte para configuraciones de GPU «harvested», como la Radeon HD 7870 XT (Tahiti LE) y modelos similares, que hasta ahora daban problemas con el kernel principal desde informes de hace más de una década.</p>
<p>Los cambios en AMDGPU incluyen además <strong>una corrección en la salida analógica de la capa DC</strong>, que se había visto afectada por una regresión, y mejoras en el soporte de conectores de pantalla integrados sin DDC, así como en la lectura de la EDID a partir de la información de panel embebida en la vBIOS. Este trabajo se traduce en un mejor comportamiento con pantallas LVDS/eDP de portátiles antiguos, un tipo de hardware que sigue siendo habitual en entornos domésticos y laborales donde se alarga la vida de los equipos.</p>
<p>En paralelo, el controlador Intel Xe también recibe <strong>retoces y soluciones específicas para GPUs Xe3P</strong>, con nuevos <em>workarounds</em> y ajustes de rendimiento. Estos parches contribuyen a estabilizar la experiencia en sistemas que están empezando a desplegar hardware gráfico de nueva generación de Intel, algo que puede ser relevante tanto para estaciones de trabajo como para equipos de desarrollo gráfico y multimedia dentro del ecosistema europeo.</p>
<h2>Impacto directo en dispositivos de consumo: Steam Deck OLED</h2>
<p>Más allá del hardware de escritorio clásico, Linux 7.1-rc2 introduce una corrección destacada para el <strong>audio de la Steam Deck OLED</strong>. Durante los últimos dos años, la versión principal del kernel había roto la compatibilidad de sonido en este dispositivo portátil, obligando a Valve y a varias distribuciones orientadas a consolas portátiles a mantener parches propios en sus ramas descendentes.</p>
<p>Con esta RC, el problema se corrige en el árbol oficial, lo que <strong>reduce la necesidad de soluciones específicas aguas abajo</strong> y facilita que distribuciones generalistas que se usen en España y Europa puedan ofrecer una mejor compatibilidad out-of-the-box con este tipo de hardware. Es un ejemplo claro de cómo regresiones aparentemente pequeñas pueden afectar de forma directa a la experiencia de juego y multimedia en dispositivos que se han popularizado entre usuarios de Linux.</p>
<h2>Pulido general del núcleo y disponibilidad</h2>
<p>Además de las áreas más visibles, Linux 7.1-rc2 acumula <strong>numerosos arreglos pequeños repartidos por todo el kernel</strong>: desde controladores de red y GPU (que vuelven a dominar el conjunto de cambios de drivers) hasta ajustes en el planificador <code>sched_ext</code> y otros componentes internos. La tónica general es la de una RC que no es especialmente pequeña, pero que mantiene un perfil estable y sin regresiones de gran calado conocidas hasta el momento.</p>
<p>Tal y como es habitual, <strong>el código fuente de Linux 7.1-rc2 puede obtenerse desde kernel.org</strong> para quienes necesiten probarlo en entornos de desarrollo, integrarlo en distribuciones de prueba o simplemente adelantarse a la versión estable, o incluso para quienes quieran instalar el kernel y evaluar su comportamiento en máquinas de prueba. Torvalds ha animado a continuar con las pruebas para detectar posibles regresiones, sobre todo teniendo en cuenta el incremento sostenido del volumen de parches asociados al uso de herramientas de IA.</p>
<p>La fotografía que deja Linux 7.1-rc2 es la de un núcleo en fase de afinado intensivo, con la virtualización KVM reordenando sus pruebas internas, un <strong>driver NTFS moderno que se afianza con correcciones específicas</strong>, y un bloque gráfico DRM que ajusta tanto GPUs AMD como Intel Xe, sin olvidar arreglos concretos para dispositivos como la Steam Deck OLED. Todo ello acerca a Linux 7.1 a su lanzamiento estable con un enfoque claro en la robustez y el soporte de hardware que, salvo sorpresas, deberían notar tanto usuarios domésticos como organizaciones en España y el resto de Europa.</p>

]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>KDE mejora el soporte con apps de GNOME, el zoom y Discover</title>
		<link>https://ubunlog.com/kde-mejora-el-soporte-con-apps-de-gnome-el-zoom-y-discover/</link>
		
		<dc:creator><![CDATA[Pablinux]]></dc:creator>
		<pubDate>Sat, 02 May 2026 08:18:41 +0000</pubDate>
				<category><![CDATA[KDE]]></category>
		<guid isPermaLink="false">https://ubunlog.com/?p=57798</guid>

					<description><![CDATA[KDE sigue incansable su trabajo por mejorar Plasma. Esta semana han seguido puliendo la serie 6.6, pero parecen estar más...]]></description>
										<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-57013 first-post-image" src="https://ubunlog.com/wp-content/uploads/2026/01/Plasma-6.6-pincel.webp" alt="KDE Plasma 6.6 pincel" width="1200" height="676" srcset="https://ubunlog.com/wp-content/uploads/2026/01/Plasma-6.6-pincel.webp 1200w, https://ubunlog.com/wp-content/uploads/2026/01/Plasma-6.6-pincel-500x282.webp 500w, https://ubunlog.com/wp-content/uploads/2026/01/Plasma-6.6-pincel-1024x577.webp 1024w, https://ubunlog.com/wp-content/uploads/2026/01/Plasma-6.6-pincel-768x433.webp 768w, https://ubunlog.com/wp-content/uploads/2026/01/Plasma-6.6-pincel-400x225.webp 400w, https://ubunlog.com/wp-content/uploads/2026/01/Plasma-6.6-pincel-170x96.webp 170w, https://ubunlog.com/wp-content/uploads/2026/01/Plasma-6.6-pincel-420x237.webp 420w, https://ubunlog.com/wp-content/uploads/2026/01/Plasma-6.6-pincel-840x473.webp 840w, https://ubunlog.com/wp-content/uploads/2026/01/Plasma-6.6-pincel-150x85.webp 150w" sizes="(max-width: 1024px) 100vw, 860px" data-no-lazy="true"></p>
<p><strong>KDE</strong> sigue incansable su trabajo por mejorar Plasma. Esta semana han seguido puliendo la serie 6.6, pero parecen estar más centrados en el Plasma 6.7 que llegará a mediados de 2026. Hace unos instantes han publicado una nueva nota semanal, y en ella se recogen nuevas funciones con las que saldremos beneficiados los usuarios de KDE. Por ejemplo, hay una que mejorará indirectamente el soporte para aplicaciones de GNOME, lo que hará que ganemos en consistencia.</p>
<p>También han aprovechado para seguir corrigiendo errores, parte de la lista que no incluimos en nuestros artículos para no alargarlos demasiado. Quien quiera saber qué han corregido, mejor que abra el artículo original al que enlazaremos al final del nuestro. Lo que sigue es la lista con las <strong>novedades más destacadas</strong> de la última semana.</p>
<h2>Nuevas funciones destacadas que llegarán a KDE</h2>
<h3>Plasma 6.7</h3>
<ul>
<li>Se ha implementado soporte para el portal “Background apps”, lo que permite que las aplicaciones (especialmente apps de GNOME más recientes) utilicen este portal para ejecutarse en segundo plano y aparecer como iconos en la bandeja del sistema, junto a las aplicaciones que ya usan la funcionalidad tradicional de la bandeja del sistema.</li>
<li>Se ha implementado una función de escalado de contenido en pantalla cuando se utiliza el efecto Zoom de KWin. El filtro intenta mejorar la nitidez y escalar el contenido, lo que resulta en una apariencia más suave y menos pixelada, especialmente en niveles de zoom altos. Esta función puede desactivarse si no se desea utilizarla.</li>
<li>El widget de impresoras ahora muestra una insignia con el número de trabajos de impresión activos y en cola.</li>
</ul>
<p><img decoding="async" class="aligncenter wp-image-57799" src="https://ubunlog.com/wp-content/uploads/2026/05/Numero-de-trabajos-pendients-en-la-impresora.webp" alt="Número de trabajos pendients en la impresora" width="488" height="140" srcset="https://ubunlog.com/wp-content/uploads/2026/05/Numero-de-trabajos-pendients-en-la-impresora.webp 488w, https://ubunlog.com/wp-content/uploads/2026/05/Numero-de-trabajos-pendients-en-la-impresora-400x115.webp 400w, https://ubunlog.com/wp-content/uploads/2026/05/Numero-de-trabajos-pendients-en-la-impresora-420x120.webp 420w, https://ubunlog.com/wp-content/uploads/2026/05/Numero-de-trabajos-pendients-en-la-impresora-150x43.webp 150w" sizes="(max-width: 488px) 100vw, 488px"></p>
<h2>Mejoras en la interfaz de KDE</h2>
<h3>Plasma 6.7</h3>
<ul>
<li>El software que usa XWayland y solicita enviar eventos sintéticos de teclado y ratón (como xdotool) ahora se identifica por nombre, permitiendo saber qué aplicación lo solicita. Además, se puede ver una lista de aplicaciones con este permiso y revocarlo posteriormente.</li>
</ul>
<p><img decoding="async" class="aligncenter size-full wp-image-57800" src="https://ubunlog.com/wp-content/uploads/2026/05/siempre-permitir-xdotool-en-KDE.webp" alt="siempre permitir xdotool en KDE" width="1152" height="698" srcset="https://ubunlog.com/wp-content/uploads/2026/05/siempre-permitir-xdotool-en-KDE.webp 1152w, https://ubunlog.com/wp-content/uploads/2026/05/siempre-permitir-xdotool-en-KDE-500x303.webp 500w, https://ubunlog.com/wp-content/uploads/2026/05/siempre-permitir-xdotool-en-KDE-1024x620.webp 1024w, https://ubunlog.com/wp-content/uploads/2026/05/siempre-permitir-xdotool-en-KDE-768x465.webp 768w, https://ubunlog.com/wp-content/uploads/2026/05/siempre-permitir-xdotool-en-KDE-400x242.webp 400w, https://ubunlog.com/wp-content/uploads/2026/05/siempre-permitir-xdotool-en-KDE-495x300.webp 495w, https://ubunlog.com/wp-content/uploads/2026/05/siempre-permitir-xdotool-en-KDE-420x254.webp 420w, https://ubunlog.com/wp-content/uploads/2026/05/siempre-permitir-xdotool-en-KDE-840x509.webp 840w, https://ubunlog.com/wp-content/uploads/2026/05/siempre-permitir-xdotool-en-KDE-150x91.webp 150w" sizes="(max-width: 1024px) 100vw, 860px"></p>
<ul>
<li>Se ha aplicado estilo visual de KDE al componente genérico MessageDialog de Qt, lo que corrige problemas de apariencia poco integrada en varios programas, incluyendo el diálogo de confirmación del widget de notas adhesivas.</li>
</ul>
<p><img decoding="async" class="aligncenter size-full wp-image-57801" src="https://ubunlog.com/wp-content/uploads/2026/05/delete-dialog-after.webp" alt="delete-dialog-after" width="791" height="576" srcset="https://ubunlog.com/wp-content/uploads/2026/05/delete-dialog-after.webp 791w, https://ubunlog.com/wp-content/uploads/2026/05/delete-dialog-after-500x364.webp 500w, https://ubunlog.com/wp-content/uploads/2026/05/delete-dialog-after-768x559.webp 768w, https://ubunlog.com/wp-content/uploads/2026/05/delete-dialog-after-400x291.webp 400w, https://ubunlog.com/wp-content/uploads/2026/05/delete-dialog-after-412x300.webp 412w, https://ubunlog.com/wp-content/uploads/2026/05/delete-dialog-after-420x306.webp 420w, https://ubunlog.com/wp-content/uploads/2026/05/delete-dialog-after-150x109.webp 150w" sizes="(max-width: 791px) 100vw, 791px"></p>
<ul>
<li>Se ha mejorado el comportamiento de Discover cuando se inicia sin conexión a internet.</li>
</ul>
<p><img decoding="async" class="aligncenter size-full wp-image-57802" src="https://ubunlog.com/wp-content/uploads/2026/05/Discover-esta-sin-conexion.webp" alt="Discover está sin conexión" width="1533" height="1219" srcset="https://ubunlog.com/wp-content/uploads/2026/05/Discover-esta-sin-conexion.webp 1533w, https://ubunlog.com/wp-content/uploads/2026/05/Discover-esta-sin-conexion-500x398.webp 500w, https://ubunlog.com/wp-content/uploads/2026/05/Discover-esta-sin-conexion-1024x814.webp 1024w, https://ubunlog.com/wp-content/uploads/2026/05/Discover-esta-sin-conexion-768x611.webp 768w, https://ubunlog.com/wp-content/uploads/2026/05/Discover-esta-sin-conexion-1200x954.webp 1200w, https://ubunlog.com/wp-content/uploads/2026/05/Discover-esta-sin-conexion-400x318.webp 400w, https://ubunlog.com/wp-content/uploads/2026/05/Discover-esta-sin-conexion-377x300.webp 377w, https://ubunlog.com/wp-content/uploads/2026/05/Discover-esta-sin-conexion-420x334.webp 420w, https://ubunlog.com/wp-content/uploads/2026/05/Discover-esta-sin-conexion-840x668.webp 840w, https://ubunlog.com/wp-content/uploads/2026/05/Discover-esta-sin-conexion-150x119.webp 150w" sizes="(max-width: 1024px) 100vw, 860px"></p>
<ul>
<li>Se ha mejorado la forma en la que Discover comunica que una actualización de firmware ha sido programada para instalarse tras el siguiente reinicio.</li>
<li>Se ha eliminado el efecto de “doble botón de retroceso” visible en el widget de redes al mostrar el código QR de una red.</li>
<li>La función de brillo automático de pantalla ahora tiene en cuenta más puntos de datos, lo que mejora su respuesta y reduce cambios bruscos en entornos con iluminación variable.</li>
<li>Los botones en la parte superior del panel del explorador de widgets ahora respetan la Ley de Fitts, permitiendo activarlos al llevar el puntero al borde de la pantalla y hacer clic.</li>
</ul>
<p><img decoding="async" class="aligncenter size-full wp-image-57803" src="https://ubunlog.com/wp-content/uploads/2026/05/botones-fitts-law-en-KDE.webp" alt="botones fitts law en KDE" width="1105" height="470" srcset="https://ubunlog.com/wp-content/uploads/2026/05/botones-fitts-law-en-KDE.webp 1105w, https://ubunlog.com/wp-content/uploads/2026/05/botones-fitts-law-en-KDE-500x213.webp 500w, https://ubunlog.com/wp-content/uploads/2026/05/botones-fitts-law-en-KDE-1024x436.webp 1024w, https://ubunlog.com/wp-content/uploads/2026/05/botones-fitts-law-en-KDE-768x327.webp 768w, https://ubunlog.com/wp-content/uploads/2026/05/botones-fitts-law-en-KDE-400x170.webp 400w, https://ubunlog.com/wp-content/uploads/2026/05/botones-fitts-law-en-KDE-420x179.webp 420w, https://ubunlog.com/wp-content/uploads/2026/05/botones-fitts-law-en-KDE-840x357.webp 840w, https://ubunlog.com/wp-content/uploads/2026/05/botones-fitts-law-en-KDE-150x64.webp 150w" sizes="(max-width: 1024px) 100vw, 860px"></p>
<ul>
<li>Se ha simplificado la notificación que indica que el teléfono conectado mediante KDE Connect tiene batería baja.</li>
<li>Ahora se dispone de más de 25 segundos para seleccionar un color al usar el widget Selector de color, permitiendo más tiempo para tomar decisiones.</li>
</ul>
<h3>Frameworks 6.26</h3>
<ul>
<li>Se ha mejorado la apariencia de la transición de fundido cruzado al cambiar entre páginas en muchas aplicaciones basadas en Kirigami.</li>
</ul>
<h2>Rendimiento y técnico de KDE</h2>
<h3>Plasma 6.6.5</h3>
<ul>
<li>Se han corregido problemas de rendimiento en varias GPU NVIDIA introducidos por la versión 595 del controlador propietario.</li>
</ul>
<h3>Plasma 6.7</h3>
<ul>
<li>Se ha añadido soporte para renombrar o mover la nueva carpeta estándar “Projects” que aparece en las carpetas de inicio de los usuarios.</li>
<li>Se ha implementado la versión 2 del portal “Input Capture”.</li>
</ul>
<h2>Pronto en tu distribución KDE</h2>
<p>Se espera que Plasma 6.6.5 llegue el martes el 12 de mayo de 2026, y Frameworks 6.26 el 8 del mismo mes. Aunque esto debería cambiar en algún momento, se espera que siga habiendo tres versiones de Plasma durante al menos todo 2026. Los planes futuros pasan por lanzar sólo dos versiones al año, para lo que saldría especialmente beneficiado Kubuntu.</p>
<p>Vía: <a href="https://blogs.kde.org/2026/05/02/this-week-in-plasma-background-apps-and-zoom-up-scaling/">Blog de KDE</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>GNOME celebra el día del trabajador con novedades en apps como Field Monitor, Casilda y nueva Gitte</title>
		<link>https://ubunlog.com/gnome-celebra-el-dia-del-trabajador-con-novedades-en-apps-como-field-monitor-casilda-y-nueva-gitte/</link>
		
		<dc:creator><![CDATA[Pablinux]]></dc:creator>
		<pubDate>Sat, 02 May 2026 08:00:46 +0000</pubDate>
				<category><![CDATA[Gnome]]></category>
		<guid isPermaLink="false">https://ubunlog.com/?p=57794</guid>

					<description><![CDATA[GNOME ha publicado su nota de novedades semanales, esta vez lo ocurrido del 24 de abril al 1 de mayo....]]></description>
										<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-42480 first-post-image" src="https://ubunlog.com/wp-content/uploads/2022/10/Esta-semana-en-GNOME.webp" alt="Esta semana en GNOME" width="1200" height="645" srcset="https://ubunlog.com/wp-content/uploads/2022/10/Esta-semana-en-GNOME.webp 1200w, https://ubunlog.com/wp-content/uploads/2022/10/Esta-semana-en-GNOME-500x269.webp 500w, https://ubunlog.com/wp-content/uploads/2022/10/Esta-semana-en-GNOME-1024x550.webp 1024w, https://ubunlog.com/wp-content/uploads/2022/10/Esta-semana-en-GNOME-768x413.webp 768w, https://ubunlog.com/wp-content/uploads/2022/10/Esta-semana-en-GNOME-400x215.webp 400w, https://ubunlog.com/wp-content/uploads/2022/10/Esta-semana-en-GNOME-420x226.webp 420w, https://ubunlog.com/wp-content/uploads/2022/10/Esta-semana-en-GNOME-840x452.webp 840w, https://ubunlog.com/wp-content/uploads/2022/10/Esta-semana-en-GNOME-150x81.webp 150w" sizes="(max-width: 1024px) 100vw, 860px" data-no-lazy="true"></p>
<p><strong>GNOME</strong> ha publicado su nota de novedades semanales, esta vez lo ocurrido del 24 de abril al 1 de mayo. Aunque de ayer tendrá el nombre del día y poco más, pues fue el día del trabajador en todo el mundo. Aún así, hay gente para la que su trabajo es muy importante o también un hobby, por lo que no todos paramos.</p>
<p>Eso sí, la lista de novedades no es muy extensa. Hay sospechosos habituales, como <a href="https://ubunlog.com/tube-converter-es-la-mejor-interfaz-grafica-para-yt-dlp-permite-hacer-de-todo-a-golpe-de-raton/">Parabolic</a>, y también otros nuevos, tanto que sólo ofrecen la primera versión pública, como es el caso de la aplicación Gitte. Lo que sigue es la lista con todas esas <strong>novedades</strong>.</p>
<h2>Esta semana en GNOME</h2>
<ul>
<li>Newsflash ahora permite deslizar entre artículos. Esto cierra una de las solicitudes de función más antiguas que seguían abiertas.</li>
<li>Casilda 1.2.4 ha sido lanzado. Esta versión incluye varias funciones nuevas como soporte de escalado fraccional, correcciones de errores y mejoras generales que hacen que empiece a sentirse como un compositor completo.</li>
</ul>
<p><img decoding="async" class="aligncenter size-full wp-image-57795" src="https://ubunlog.com/wp-content/uploads/2026/05/Casilda-1.2.4.webp" alt="Casilda 1.2.4" width="1315" height="996" srcset="https://ubunlog.com/wp-content/uploads/2026/05/Casilda-1.2.4.webp 1315w, https://ubunlog.com/wp-content/uploads/2026/05/Casilda-1.2.4-500x379.webp 500w, https://ubunlog.com/wp-content/uploads/2026/05/Casilda-1.2.4-1024x776.webp 1024w, https://ubunlog.com/wp-content/uploads/2026/05/Casilda-1.2.4-768x582.webp 768w, https://ubunlog.com/wp-content/uploads/2026/05/Casilda-1.2.4-1200x909.webp 1200w, https://ubunlog.com/wp-content/uploads/2026/05/Casilda-1.2.4-400x303.webp 400w, https://ubunlog.com/wp-content/uploads/2026/05/Casilda-1.2.4-396x300.webp 396w, https://ubunlog.com/wp-content/uploads/2026/05/Casilda-1.2.4-420x318.webp 420w, https://ubunlog.com/wp-content/uploads/2026/05/Casilda-1.2.4-840x636.webp 840w, https://ubunlog.com/wp-content/uploads/2026/05/Casilda-1.2.4-150x114.webp 150w" sizes="(max-width: 1024px) 100vw, 860px"></p>
<ul>
<li>Las versiones 0.11.0–0.12.7 de RustConn incorporan las tres mayores funciones desde el inicio del proyecto, además de una gran cantidad de mejoras impulsadas por el feedback de la comunidad.
<ul>
<li>Se ha incorporado sincronización en la nube. Ahora se pueden sincronizar configuraciones de conexión entre dispositivos y miembros del equipo a través de cualquier directorio compartido como Google Drive, Syncthing, Nextcloud, Dropbox o incluso una memoria USB. Incluye dos modos: sincronización por grupo (archivos .rcn por grupo con acceso Master/Import) y sincronización simple (fusión bidireccional en un solo archivo). Un monitor de archivos importa cambios automáticamente, y la nueva página de configuración muestra el estado, grupos sincronizados y archivos disponibles. La CLI añade comandos para estado, lista, exportación, importación y sincronización inmediata.</li>
<li>Se ha añadido un gestor de túneles SSH como ventana independiente para gestionar túneles de reenvío de puertos sin sesiones de terminal, incluyendo modos local, remoto y dinámico con inicio automático y reconexión. El soporte de host intermedio SSH se ha ampliado a conexiones RDP, VNC y SPICE, permitiendo tunelizar sesiones gráficas a través de un bastion host. Ctrl+T abre el gestor de túneles.</li>
<li>La gestión de pestañas ha sido completamente rediseñada en torno a AdwTabView. La vista general de pestañas (Ctrl+Shift+O) muestra una cuadrícula al estilo GNOME Web. La fijación de pestañas mantiene las importantes a la izquierda. Se añade un selector con búsqueda difusa en la paleta de comandos (%). El menú contextual incluye acciones para cerrar otras, izquierda, derecha, todas o no agrupadas.</li>
<li>Otros aspectos destacados incluyen temas de color de terminal personalizados con editor ANSI de 16 colores, barra de desplazamiento en terminal, zoom de fuente (Ctrl+Scroll), copia al seleccionar, modo Keep-Alive y verbose en SSH, proveedor Hoop.dev como undécimo Zero Trust, override de socket de agente SSH, “mouse jiggler” para RDP, monitor de actividad/silencio del terminal, comprobación de estado del host con autoconexión, reglas de resaltado con colores reales mediante Cairo y rediseño del diálogo de conexión siguiendo GNOME HIG.</li>
<li>El empaquetado ha crecido significativamente. RustConn está disponible como Flatpak en Flathub, Snap con confinamiento estricto, AppImage, paquetes .deb y .rpm mediante OBS (Debian 13, Ubuntu 24.04/26.04, Fedora 43/44, openSUSE Tumbleweed/Slowroll/Leap 16.0) y builds ARM64. También existen paquetes comunitarios para Arch Linux y FreeBSD, y una solicitud abierta para incluirlo en Debian.</li>
</ul>
</li>
</ul>
<p><img decoding="async" class="aligncenter size-full wp-image-57796" src="https://ubunlog.com/wp-content/uploads/2026/05/RustConn-en-GNOME.webp" alt="RustConn en GNOME" width="1300" height="1100" srcset="https://ubunlog.com/wp-content/uploads/2026/05/RustConn-en-GNOME.webp 1300w, https://ubunlog.com/wp-content/uploads/2026/05/RustConn-en-GNOME-500x423.webp 500w, https://ubunlog.com/wp-content/uploads/2026/05/RustConn-en-GNOME-1024x866.webp 1024w, https://ubunlog.com/wp-content/uploads/2026/05/RustConn-en-GNOME-768x650.webp 768w, https://ubunlog.com/wp-content/uploads/2026/05/RustConn-en-GNOME-1200x1015.webp 1200w, https://ubunlog.com/wp-content/uploads/2026/05/RustConn-en-GNOME-400x338.webp 400w, https://ubunlog.com/wp-content/uploads/2026/05/RustConn-en-GNOME-355x300.webp 355w, https://ubunlog.com/wp-content/uploads/2026/05/RustConn-en-GNOME-420x355.webp 420w, https://ubunlog.com/wp-content/uploads/2026/05/RustConn-en-GNOME-840x711.webp 840w, https://ubunlog.com/wp-content/uploads/2026/05/RustConn-en-GNOME-150x127.webp 150w" sizes="(max-width: 1024px) 100vw, 860px"></p>
<ul>
<li>Field Monitor, el visor de escritorio remoto enfocado en acceder a máquinas virtuales, ha sido actualizado a la versión 50.0:
<ul>
<li>Soporte para múltiples monitores en conexiones SPICE.</li>
<li>Soporte para compartir dispositivos USB con sesiones SPICE mediante el portal XDG USB, incluso en Flatpak.</li>
<li>Las máquinas virtuales KVM/QEMU ahora pueden usar renderizado GPU acelerado por hardware si está habilitado.</li>
<li>Field Monitor ahora valida certificados del servidor y solicita confirmación si no son confiables automáticamente.</li>
<li>Varias correcciones en sesiones RDP y SPICE, incluyendo problemas de cursor y rendimiento general.</li>
</ul>
</li>
<li>Se ha publicado la primera versión pública de Gitte, una interfaz gráfica Git basada en GTK4/libadwaita escrita en Rust y construida sobre Relm4 y git2. Incluye:
<ul>
<li>Navegación de repositorios con pantalla inicial de repositorios guardados.</li>
<li>Visualización del árbol de trabajo, staging y unstaging de cambios, commits y edición de commits.</li>
<li>Lectura del historial de commits e inspección de diferencias por archivo.</li>
<li>Gestión de ramas, etiquetas, remotos y stashes.</li>
<li>Push y pull con remotos, con auto-fetch en segundo plano.</li>
</ul>
</li>
</ul>
<p><img decoding="async" class="aligncenter size-full wp-image-57797" src="https://ubunlog.com/wp-content/uploads/2026/05/Gitte.webp" alt="Gitte" width="1035" height="563" srcset="https://ubunlog.com/wp-content/uploads/2026/05/Gitte.webp 1035w, https://ubunlog.com/wp-content/uploads/2026/05/Gitte-500x272.webp 500w, https://ubunlog.com/wp-content/uploads/2026/05/Gitte-1024x557.webp 1024w, https://ubunlog.com/wp-content/uploads/2026/05/Gitte-768x418.webp 768w, https://ubunlog.com/wp-content/uploads/2026/05/Gitte-400x218.webp 400w, https://ubunlog.com/wp-content/uploads/2026/05/Gitte-420x228.webp 420w, https://ubunlog.com/wp-content/uploads/2026/05/Gitte-840x457.webp 840w, https://ubunlog.com/wp-content/uploads/2026/05/Gitte-150x82.webp 150w" sizes="(max-width: 1024px) 100vw, 860px"></p>
<ul>
<li>Parabolic V2026.4.1 llega con numerosas correcciones de errores:
<ul>
<li>Corregido un problema donde algunos ajustes no se guardaban correctamente.</li>
<li>Corregido un problema donde descargas de listas con límite de resolución no tenían audio.</li>
<li>Corregido un problema donde vídeos verticales se descargaban con resolución incorrecta.</li>
<li>Corregido un problema donde descargas desde sitios con streams muxed fallaban.</li>
<li>Corregido un problema donde descargar un fragmento de un vídeo largo generaba resultados incompletos.</li>
<li>Corregido un problema donde descargas de fragmentos podían quedarse colgadas con aria2c.</li>
<li>Corregido un problema donde descargas de X/Twitter duplicaban el vídeo.</li>
<li>Corregido un problema donde deno no se podía actualizar en Linux.</li>
<li>Corregido un problema donde las cookies del navegador no se encontraban en Flatpak.</li>
<li>Corregido un problema donde Parabolic no iniciaba en KDE.</li>
<li>Corregido un problema donde no se abrían enlaces desde la extensión en Windows.</li>
</ul>
</li>
</ul>
<p>Y esto ha sido todo esta semana en GNOME.</p>
<p>Imágenes y contenido: <a href="https://thisweek.gnome.org/posts/2026/05/twig-247/">TWIG</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Curso de programación en Python usando Linux. Séptima parte</title>
		<link>https://ubunlog.com/curso-de-programacion-en-python-usando-linux-septima-parte/</link>
		
		<dc:creator><![CDATA[Diego Germán González]]></dc:creator>
		<pubDate>Thu, 30 Apr 2026 20:12:30 +0000</pubDate>
				<category><![CDATA[Ubuntu]]></category>
		<guid isPermaLink="false">https://ubunlog.com/?p=57790</guid>

					<description><![CDATA[En el artículo anterior de nuestro curso de programación en Python usando Linux (Enlace al final del artículo) comenzamos a...]]></description>
										<content:encoded><![CDATA[<p><a href="https://ubunlog.com/wp-content/uploads/2026/04/python.jpg"><img class="aligncenter size-full wp-image-57791 first-post-image" src="https://ubunlog.com/wp-content/uploads/2026/04/python.jpg" alt="Python puede usarse para hacer programas para teléfonos" width="1280" height="954" srcset="https://ubunlog.com/wp-content/uploads/2026/04/python.jpg 1280w, https://ubunlog.com/wp-content/uploads/2026/04/python-500x373.jpg 500w, https://ubunlog.com/wp-content/uploads/2026/04/python-1024x763.jpg 1024w, https://ubunlog.com/wp-content/uploads/2026/04/python-768x572.jpg 768w, https://ubunlog.com/wp-content/uploads/2026/04/python-1200x894.jpg 1200w, https://ubunlog.com/wp-content/uploads/2026/04/python-400x298.jpg 400w, https://ubunlog.com/wp-content/uploads/2026/04/python-403x300.jpg 403w, https://ubunlog.com/wp-content/uploads/2026/04/python-420x313.jpg 420w, https://ubunlog.com/wp-content/uploads/2026/04/python-840x626.jpg 840w, https://ubunlog.com/wp-content/uploads/2026/04/python-150x112.jpg 150w" sizes="(max-width: 1024px) 100vw, 860px" data-no-lazy="true"></a></p>
<p></p>
<p>En el artículo anterior de nuestro curso de programación en Python usando Linux (Enlace al final del artículo) <strong>comenzamos a hablar de los componentes que se usan para construir los programas.</strong> Aunque pueda parecer un tema excesivamente básico, son la base con la que pueden construirse cosas más complejas.</p>
<p><strong>Habíamos definido a las variables como contenedores</strong> en los que pueden almacenarse todo tipo de datos no permanentes, aora continuaremos explorando cuáles son las mejores prácticas para utilizarlas.</p>
<h2>Curso de programación en Python usando Linux</h2>
<h3>Más sobre las variables</h3>
<p>Salvo la lista de palabras no permitidas que dimos en el artículo anterior, <strong>Python nos ofrece bastante flexibilidad a la hora de elegir nombres de variables.</strong> Incluso podemos tener nombres similares utilizando distintas combinaciones de mayúsculas y minúsculas. Sin embargo, es bueno disfrutar de esa libertad con un poco de autoregulación.</p>
<p>Teniendo en cuenta que nosotros u otra persona tengamos que revisar ese código para corregir errores y actualizarlo  <strong>es importante que utilicemos nombres que sean significativos y descriptivos de los datos que vamos a almacenar en ellos.</strong> Por ejemplo, si vas a almacenar marcas de auto lo ideal sería <em>marca</em> o <em>marca_auto</em> en lugar de por ejemplo una letra o el nombre de uno de los personajes de los Simpson’s.  Si el nombre de la variable va a ser largo, por ejemplo usando dos o más palabras, se pueden separar con guiones bajos o alternando mayúsculas y minúsculas: <em>marca_auto</em> o <em>MarcaAuto</em>. Si recuerdas el código de ejemplo de los artículos anteriores habrás observado que el nombre de algunas variables empezaban con «-» esto es una convención que indica que esas variables son para uso interno de la clase.</p>
<h4>Tipos de datos</h4>
<p>Aunque no es necesario declarar que tipos de datos va a almacenar una variable al principio del programa, si al momento de asignarles un valor se debe escribir la instrucción de manera específica según el tipo. Python trabaja con los siguientes tipos de datos:</p>
<h5>Número entero (int)</h5>
<p>Son números positivos y negativos sin parte decimal que pueden usarse para realizar operaciones aritméticas.</p>
<p><code>año = 2026</code></p>
<h5>Número decimal (float)</h5>
<p>Son números que contienen una parte fraccionaria separada para un punto. Se usan para reflejar valores con una mayor precisión:</p>
<p><code>Precio = 2.99</code></p>
<h5>Cadena de caracteres (str)</h5>
<p>Almacena conjuntos de letras. Son los datos que se usan para almacenar texto. Nota que el texto a almacenar a entre comillas</p>
<p><code>Nombre = "Diego"</code></p>
<h5>Booleano (bool)</h5>
<p>Este tipo de datos solo admite dos valores: Verdadero (True) o Falso (False)</p>
<p><code>es_mayor_ que = True</code></p>
<p>es_menor_que = False</p>
<p>Es posible hacer la conversión entre tipos de datos</p>
<h5>Entero a decimal</h5>
<p><code>entero = 25<br>
</code><code>decimal = float(entero)</code><br>
Decimal a entero</p>
<p>decimal = 5.25<br>
entero = int(decimal)</p>
<h5>Conversión de números a cadena de caracteres</h5>
<p><code>siglo= 21<br>
mensaje = "Estamos en el siglo" + str(edad)</code></p>
<h5>Conversión de cadenas numéricas a números</h5>
<p><code>cadena_texto = "2025"<br>
numero = int(cadena_numerica)</code></p>
<h5>Conversión de booleano a formato numérico</h5>
<p>Dijimos que los datos booleanos solo admiten dos valores:  verdadero (True) y Falso (0)</p>
<p><code>Es_verdadero = True<br>
Es_falso = False<br>
print(int(E_verdadero))<br>
print(int(Es_falso))</code></p>
<h5>Conversor de dato numérico a booleano</h5>
<p><code>valor = 0<br>
print(bool(valor))<br>
valor = 1<br>
print(bool(valor))</code></p>
<h4>Operadores de comparación</h4>
<p>Los operadores de comparación, como su nombre lo indica, permite comparar valores devolviendo un dato booleano (Verdadero o falso) Son:</p>
<ul>
<li>==; Si, son dos signos iguales para no confundir con el de asignación de valores a las variables. Determina si dos expresiones son iguales</li>
<li>!=: No igual que. Determina si dos valores no son iguales.</li>
<li>&gt;: Determina si el valor de la izquierda es mayor que el de la derecha.</li>
<li>&lt;: Determina si el valor de la izquierda es menor que el de la derecha.</li>
<li>&gt;=: Determina si el valor de la izquierda es mayor o igual que el de la derecha.</li>
<li>&lt;=: Comprueba si el valor de la izquierda es menor o igual que el de la derecha.</li>
</ul>
<p>Además de valores núméricos Python puede comparar cadenas de caracteres comparando carácter por carácter  siguiendo un orden que se bassa en la codificación (ASCII o Unicode. Empieza de izquierda y derecha y para cuando encuentre diferencias o una de las dos se termine. La comparación diferencia entre mayúsculas y minúsuclas.</p>
<h4>Operadores lógicos</h4>
<p>Se usan para verificar el cumplimiento de varias condiciones</p>
<ul>
<li><strong>And</strong>: Devuelve el valor True si se cumplen todas las condiciones. En caso de que alguna no se cumple devuelve el valor False.</li>
<li><strong>Or: </strong>Devuelve True si una de las condiciones se cumple y False si no se cumple ninguna de ellas.</li>
<li><strong>Not</strong>: A la inversa de And devuelve True si no se cumple ninguna de las condiciones.</li>
</ul>
<h3>Mostrando información</h3>
<p>Con la instrucción<em> print()</em> podemos mostrar en pantalla los datos de variables o mensajes de texto incluidos en el código.  Los diferentes contenidos a imprimir se separan por comas.  Recuerda que el texto debe estar encerrado entre comillas.</p>
<p>Al final del texto se agrega un salto de línea y si se da la instrucción sin argumento se imprime una línea en blanco.</p>
<p><code>nombre = "Diego"<br>
print("Hola, mi nombre es: ", nombre)</code></p>
<p>Es posible agregar un salto de línea en una parte determinada del mensaje a mostrar.</p>
<p><code>print("Hola, mi nombre es.\nDiego")</code></p>
<p>El carácter especial .\t añade una cantidad de espacios predefinidos antes del texto<br>
<code><br>
print("Nombre:\tDiego\nApellido:\tGonzález")</code></p>
<p>\t es una forma básica pero no siempre efectiva de alinear el texto ya que la cantidad de espacios dependerá del sistema donde se corra el programa.</p>
<p>Es posible que en lugar de hacer un salto de línea al finalizar un mensaje se agregue otro carácter.<br>
<code><br>
print("Diego,", end='/')<br>
print("González")</code></p>
<h4>Ingresando datos</h4>
<p>Cuando se necesita que el usuario introduzca una información mediante el teclado se utiliza la función input() Esta función muestra un mensaje y detiene la ejecución del programa hasta que el usuairo ingresa la información pedida.</p>
<p><code>distribución = input("Introduce el nombre de tu distribución Linux preferida: ")<br>
print("Tu distribución Linux preferida es", distribución)</code></p>
<p>Recuerda que la función<em> input() </em>trabaja con cadenas de caracteres por lo que será necesario convertir la entrada a otros formatos encaso de que se necesite realizar operaciones numéricas.</p>
<p>Podemos hacerlo con las siguientes líneas de código</p>
<p><code>edad = input("¿Cuál es tu edad?: ")<br>
edad = int(edad)</code></p>
<p>Como vimos en artículos anteriores, también es posible ingresar datos por medio de archivos.</p>
<p>En el próximo artículo veremos como usar todos estos componentes creando funciones más complejas.</p>

]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Curso de programación en Python usando Linux. Parte 6</title>
		<link>https://ubunlog.com/curso-de-programacion-en-python-usando-linux-parte-6/</link>
		
		<dc:creator><![CDATA[Diego Germán González]]></dc:creator>
		<pubDate>Thu, 30 Apr 2026 18:07:48 +0000</pubDate>
				<category><![CDATA[Ubuntu]]></category>
		<guid isPermaLink="false">https://ubunlog.com/?p=57787</guid>

					<description><![CDATA[Estamos haciendo un pequeño curso de programación en Python usando Linux. Este lenguaje de programación multiplataforma es ideal para iniciarse...]]></description>
										<content:encoded><![CDATA[<p><a href="https://ubunlog.com/wp-content/uploads/2026/04/micropython.png"><img class="aligncenter size-full wp-image-57788 first-post-image" src="https://ubunlog.com/wp-content/uploads/2026/04/micropython.png" alt="Microsoft usa Python para crear scripts en sus aplicaciones." width="1200" height="675" srcset="https://ubunlog.com/wp-content/uploads/2026/04/micropython.png 1200w, https://ubunlog.com/wp-content/uploads/2026/04/micropython-500x281.png 500w, https://ubunlog.com/wp-content/uploads/2026/04/micropython-1024x576.png 1024w, https://ubunlog.com/wp-content/uploads/2026/04/micropython-768x432.png 768w, https://ubunlog.com/wp-content/uploads/2026/04/micropython-400x225.png 400w, https://ubunlog.com/wp-content/uploads/2026/04/micropython-170x96.png 170w, https://ubunlog.com/wp-content/uploads/2026/04/micropython-420x236.png 420w, https://ubunlog.com/wp-content/uploads/2026/04/micropython-840x473.png 840w, https://ubunlog.com/wp-content/uploads/2026/04/micropython-150x84.png 150w" sizes="(max-width: 1024px) 100vw, 860px" data-no-lazy="true"></a></p>
<p></p>
<p>Estamos haciendo un pequeño curso de programación en Python usando Linux. <strong>Este lenguaje de programación multiplataforma es ideal para iniciarse en el mundo de la programación</strong>, y seguirse usando a medida que vayamos adquiriendo conocimientos avanzados porque también es útil para la creación de aplicaciones más complejas.</p>
<p>En la actualidad, Pyhton es el lenguaje preferido para el uso de aplicaciones en Ciencias de datos, Inteligencia Artificial e incluso la propia Microsoft lo está usando  para reemplazar su propio lenguaje de macros en la planilla de cálculos Excel</p>
<h2>Curso de programación en Python usando Linux</h2>
<p>Nos habíamos quedado en el post anterior con los parámetros del comando open() cuando se trabajan con archivos.  Dependiendo del  tipo de archivos es conveniente indicarle al intérprete de Python como debe actuar con los caracteres especiales que indican salto de línea.</p>
<p><code>open("archivo.txt", newline=None)</code> Transforma \r\n y \r a \n (por defecto)<br>
<code>open("archivo.txt", newline="")</code> No hace ninguna transformación<br>
<code>open("archivo.txt", newline="\n") </code>Solo hace el salto de línea cuando detecta el caracter especial \n (Usado por Linux)<br>
<code>open("archivo.txt", newline="\r\n")</code> Solo hace el sato de línea cuando detecta el caracter especial \r\n (Usado por Windows)</p>
<p>Para resumir los parámetros  de la instrucción open()</p>
<ul>
<li style="list-style-type: none;">
<ul>
<li><strong>File</strong>: Indica el nombre del archivo (Si está en la misma carpeta) o la ruta donde encontrarlo.</li>
<li><strong>Mode:</strong> Parámetro opcional, indica si el archivo se abre en modo de lectura, escritura, ambos y si se borrará el contenido cuando se escriba nuevo.</li>
<li><strong>Buffering:</strong> Parámetro Opcional, determina el tamaño del buffer de memoria.</li>
</ul>
</li>
</ul>
<p>&lt;li<strong>&gt;Encoding:</strong> Parámetro Opcional, Indica la codificaicón del texto, por defecto se usa la del sistema operativo. Muy útil si se van a hacer aplicaciones para otros que utilicen caracteres especiales.</p>
<ul>
<li><strong>Errors:</strong> Indica como actuar en caso de que se detecten errores de codificación. También es un parámetro opcional.</li>
<li><strong>Newline:</strong> Determina como manejar los saltos de línea. También es un parámetro opcinal.</li>
</ul>
<p>Veamos el siguiente programa<br>
<iframe style="border: none; width: 100%;" src="https://pastebin.com/embed_iframe/KwwqfMUK?theme=dark"></iframe></p>
<p><code>class Sistemas:</code></p>
<p>Definimos la clase Sistemas que servirá para crear los objetos que representarán a los sistemas operativos.</p>
<p><code>def __init__(self, nombre, version, derivada):</code></p>
<p>Iniciamos el constructor y establecemos los parámetros.</p>
<p><code>self.nombre = nombre<br>
self.version = version<br>
self.derivada = derivada</code></p>
<p>Estás 3 líneas tomarán los valores a medida que ingresan y los almacenarán el el objeto.<br>
<code><br>
def mostrar_info(self):</code></p>
<p>Establece cómo se mostrarán los datos</p>
<p><code>print(f"Nombre: {self.nombre}")<br>
print(f"Versión: {self.version}")<br>
print(f"Derivada: {self.derivada}")<br>
print("-" * 20)</code></p>
<p>Imprime los parámetros y al final de cada grupo imprime guiones.</p>
<p><code>nombre = input("Nombre del sistema: ")<br>
version = input("Versión: ")<br>
derivada = input("Derivada: ")</code></p>
<p>Aquí se le indica al usuario que ingrese datos distribuciones.</p>
<p><code>with open("sistemas.txt", "a") as archivo:</code></p>
<p>Este comando comprueba si existe un archivo llamado sistemass.txt, lo crea si no existe y agrega los datos al final de los que están escritos.</p>
<p><code>archivo.write(nombre + "\n")<br>
archivo.write(version + "\n")<br>
archivo.write(derivada + "\n")</code></p>
<p>Imprime los datos almacenados con un salto de línea.</p>
<p><code>with open("sistemas.txt", "r") as archivo</code></p>
<p>Abre el archivo en modo de lectura-</p>
<p><code>lineas = [linea.strip() for linea in archivo.readlines()]</code></p>
<p>Esta instrucción lee todas las líneas del archivo y elimina los caracteres especiales que indican salto de línea.<br>
<code><br>
sistemas = []</code></p>
<p>Crea la lista vacía donde se guardan los objetos que se reconstruyan.</p>
<p><code>for i in range(0, len(lineas), 3):</code></p>
<p>Genera series de números de tres en tres. Esto es porque se almacenan 3 parámetros por cada instancia del objeto sistemas operativos.</p>
<p>Supongamos que tenemos 3 sistemas (9 parámetros)</p>
<p><code>range(0, 9, 3) → 0, 3, 6</code></p>
<p>i=0 → líneas 0, 1, 2 → primer sistema<br>
i=3 → líneas 3, 4, 5 → segundo sistema<br>
i=6 → líneas 6, 7, 8 → tercer sistema</p>
<p>if i + 2 &lt; len(lineas):</p>
<p>Esto es por seguridad. Se verifica que un grupo tenga 3 parámetros antes de hacer la lectura. Si no hay un grupo de 3 no hace la lectura.</p>
<div id="attachment_57789" style="width: 1210px" class="wp-caption aligncenter"><a href="https://ubunlog.com/wp-content/uploads/2026/04/archivos.png"><img decoding="async" aria-describedby="caption-attachment-57789" class="size-full wp-image-57789" src="https://ubunlog.com/wp-content/uploads/2026/04/archivos.png" alt="Programa que lee archivos y agrega datos" width="1200" height="676" srcset="https://ubunlog.com/wp-content/uploads/2026/04/archivos.png 1200w, https://ubunlog.com/wp-content/uploads/2026/04/archivos-500x282.png 500w, https://ubunlog.com/wp-content/uploads/2026/04/archivos-1024x577.png 1024w, https://ubunlog.com/wp-content/uploads/2026/04/archivos-768x433.png 768w, https://ubunlog.com/wp-content/uploads/2026/04/archivos-400x225.png 400w, https://ubunlog.com/wp-content/uploads/2026/04/archivos-170x96.png 170w, https://ubunlog.com/wp-content/uploads/2026/04/archivos-420x237.png 420w, https://ubunlog.com/wp-content/uploads/2026/04/archivos-840x473.png 840w, https://ubunlog.com/wp-content/uploads/2026/04/archivos-150x85.png 150w" sizes="(max-width: 1024px) 100vw, 860px"><p id="caption-attachment-57789" class="wp-caption-text"></p>
<p></p></a> Python dispone varias opciones para leer y escribir archivos.</div>
<p>Crea el objeto Sistemas</p>
<p>sistema <span class="token token">=</span> Sistemas<span class="token token">()</span></p>
<p>Incorpora los datos de las líneas que corresponde</p>
<p>lineas[i],<br>
lineas[i + 1],<br>
lineas[i + 2]<br>
Por ejemplo</p>
<p>i=0:<br>
lineas[0] → «Ubuntu» → nombre<br>
lineas[1] → «26.04» → version<br>
lineas[2] → «Debian» → derivada</p>
<p>i=3:<br>
lineas[3] → «Manjaro» → nombre<br>
lineas[4] → «44» → version<br>
lineas[5] → «Arch Linux»→ derivada</p>
<p>i=6:<br>
lineas[6] → «Linux Mint» → nombre<br>
lineas[7] → «22» → version<br>
lineas[8] → «Ubuntu»→ derivada</p>
<p><code>sistemas.append(sistema)</code></p>
<p>Agrega el objeto recién creado a la lista Sistemas. El bucle finaliza cuando se incorporen todos los objetos reconstruidos del archivo.</p>
<p><code>for s in sistemas:</code></p>
<p>Recorre el archivo recién creado.</p>
<p><code>s.mostrar_info()</code></p>
<p>Llama al método para mostrar los parámetros de cada objeto.</p>
<p>Hasta ahora estuvimos tocando de oído usando instrucciones cuyo uso no tenemos del todo claro. Llegó el momento  de ocuparnos de ellos.</p>
<p>Operaciones matemáticas básicas con Python</p>
<p>En los programas creados en Python pueden usarse las siguientes operaciones matemáticas</p>
<ul>
<li>Suma: a = 5 + 3 Asigna a la variable el valor 8</li>
<li>Resta: b = 10 – 2 Asigna a la variable el valor 8</li>
<li>Multiplicación: c = 4 * 2 ¿A que no adivinas el valor de la variable?</li>
<li>Division:  d = 5 /  3 Asigna a la variable el valor 1,6666…</li>
<li>División sin decimales: e = 21 // 7 Da como resultado 3.</li>
<li>Cálculo del resto de la división: f  =  5 % 3 Asigna a la variable el valor 2.</li>
<li> Potencia: g  =  2 ** 4 Le asigna a la variable el valor 16.</li>
</ul>
<p>Es posible hacer operaciones más complejas pero será necesario introducir el concepto de módulo del que hablaremos más adelante.</p>
<h3>Variables</h3>
<p>Tanto en los programas que usamos como ejemplo como en la lista que dimos recién de operaciones matemáticas, usamos variables. Las variables son contenedores en el que se almacenan datos que pueden ser introducidos por el código o en forma externa, modificarse y mostrarse cuando se necesite.  A diferencia de otros lenguajes de programación, en Python no es necesario declarar previamente a que tipo pertenece cada variable antes de usarlas.</p>
<p>Una variable se declara así<br>
<code><br>
Nombre = "Diego"</code></p>
<p>Donde nombre es el nombre de la variable y el texto entre comillas a la derecha del igual le asigna el valor Diego.</p>
<p>Es posible asignar el valor a distintas variables  en una sola línea de código</p>
<p>nombre, apellido, edad  = «Diego», «González», 55</p>
<h4>Reglas para el nombre de las variables</h4>
<ul>
<li><strong>Caracteres permitidos:</strong> SI bien se pueden usar letras, signos de puntuación y guiones bajos, el nombre debe empezar siempre con una letra o un guión bajo. No importan si las letras son mayúsculas o minúsculas.</li>
<li><strong>Sensibilidad a mayúsculas y minúsculas:</strong> El sistema diferencia palabras escritas con mayúsculas o minúsculas por lo que deben escribirse exactamente igual a como fueron declaradas.</li>
<li><strong>Palabras reservadas:</strong> Existen una serie de palabras que no pueden usarse porque se las reserva el intérprete</li>
</ul>
<p>Las palabra reservadas son:</p>
<p>False await else import pass None break except in raise True class finally is return and continue for lambda try as def from nonlocal while assert del global not with async elif if or yield match case<br>
En el próximo artículo continuaremos con los componentes del lenguaje de programación Python</p>

]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Curso de programación en Python usando Linux Quinta parte</title>
		<link>https://ubunlog.com/curso-de-programacion-en-python-usando-linux-quinta-parte/</link>
		
		<dc:creator><![CDATA[Diego Germán González]]></dc:creator>
		<pubDate>Thu, 30 Apr 2026 14:34:42 +0000</pubDate>
				<category><![CDATA[Ubuntu]]></category>
		<guid isPermaLink="false">https://ubunlog.com/?p=57785</guid>

					<description><![CDATA[En esta serie de post del curso de programación en Python usando Linux decidimos probar con un enfoque diferente. En...]]></description>
										<content:encoded><![CDATA[<p><a href="https://ubunlog.com/wp-content/uploads/2026/04/stocksnap-coding-924920_1280.jpg"><img class="aligncenter size-full wp-image-57786 first-post-image" src="https://ubunlog.com/wp-content/uploads/2026/04/stocksnap-coding-924920_1280.jpg" alt="Python es un muy popular lenguaje de programación." width="1280" height="853" srcset="https://ubunlog.com/wp-content/uploads/2026/04/stocksnap-coding-924920_1280.jpg 1280w, https://ubunlog.com/wp-content/uploads/2026/04/stocksnap-coding-924920_1280-500x333.jpg 500w, https://ubunlog.com/wp-content/uploads/2026/04/stocksnap-coding-924920_1280-1024x682.jpg 1024w, https://ubunlog.com/wp-content/uploads/2026/04/stocksnap-coding-924920_1280-768x512.jpg 768w, https://ubunlog.com/wp-content/uploads/2026/04/stocksnap-coding-924920_1280-1200x800.jpg 1200w, https://ubunlog.com/wp-content/uploads/2026/04/stocksnap-coding-924920_1280-400x267.jpg 400w, https://ubunlog.com/wp-content/uploads/2026/04/stocksnap-coding-924920_1280-450x300.jpg 450w, https://ubunlog.com/wp-content/uploads/2026/04/stocksnap-coding-924920_1280-420x280.jpg 420w, https://ubunlog.com/wp-content/uploads/2026/04/stocksnap-coding-924920_1280-840x560.jpg 840w, https://ubunlog.com/wp-content/uploads/2026/04/stocksnap-coding-924920_1280-150x100.jpg 150w" sizes="(max-width: 1024px) 100vw, 860px" data-no-lazy="true"></a></p>
<p><br>
En esta serie de post del curso de programación en Python usando Linux decidimos probar con un enfoque diferente. <strong>En lugar de empezar conlos conceptos básicos  (los ladrillos, por llamarlo de alguna manera)  empezamos por el edificio completo para después ocuparnos de sus partes.</strong></p>
<p>En este caso el edificio es el paradigma conocido como Programación Orientada a Objetos.  Para terminar con esta parte del curso analizaremos los conceptos claves  del paradigma aplicados a la programación en Python. Recuerda que el enlace al post anterior está al final del artículo.</p>
<h2>Curso de programación en Python usando Linux</h2>
<h3>Conceptos clave de la Programación Orientada a Objetos aplicados a Python</h3>
<h4>Clase</h4>
<p>Es la plantilla con la cuál se construyen los objetos. Se ocupa de definir cómo será un objeto y lo que puede hacer. Es algo así como una receta de cocina. Se define con el comando :<br>
<code><br>
class Nombre_de_la_clase</code></p>
<h4>Atributos</h4>
<p>Son las características que describen a un objeto.  Actúan como variables pertenecientes exclusivamente a la clase.<br>
<iframe style="border: none; width: 100%;" src="https://pastebin.com/embed_iframe/imS0FWVu?theme=dark"></iframe></p>
<h4>Constructor</h4>
<h4>Es un método especial que se ejecuta en forma automática al crear un objeto, Se encarga de inicializar los atributos del mismo.<br>
<iframe style="border: none; width: 100%;" src="https://pastebin.com/embed_iframe/zAqULTEL?theme=dark"></iframe>Métodos</h4>
<h4>Son funciones definidas dentro de una clase que determinan el comportamiento del objeto.<br>
<iframe style="border: none; width: 100%;" src="https://pastebin.com/embed_iframe/Zq23BDki?theme=dark"></iframe></h4>
<h4>Herencia</h4>
<p>Es la capacidad de una clase de tomar las características y comportamientos de otras que ya existen añadiendo y modificando lo que ya existen. La clase de la que se toman las características se llama clase padre y la que lo recibe, con una falta de originalidad enorme, clase hija.<br>
<iframe style="border: none; width: 100%;" src="https://pastebin.com/embed_iframe/mpVdB3fD?theme=dark"></iframe></p>
<h4>Polimorfismo</h4>
<h4>Hablando de falta de originalidad, esta característica significa que clases diferentes pueden tener métodos con el mismo nombre pero con comportamientos diferentes<br>
<iframe style="border: none; width: 100%;" src="https://pastebin.com/embed_iframe/3ehPKq0X?theme=dark"></iframe>Manejando archivos en Python</h4>
<p>En los ejemplos que proporcionamos anteriormente, la información se incluía dentro del código. Se trata de un método poco práctico ya que hay que modificarlo cada vez que haya que agregar o borrar una información. Por suerte, hay otras formas de hacerlo como la lectura de los datos dese un archivo.<br>
Creamos un archivo de texto simple con el título sistema.txt y el contenido</p>
<p>Ubuntu</p>
<p>26.04</p>
<p>Debian</p>
<p>Ahora veamos el programa.<br>
<iframe style="border: none; width: 100%;" src="https://pastebin.com/embed_iframe/A922R0U8?theme=dark"></iframe><br>
<code>class Sistemas:</code><br>
Definimos una clase con el nombre SIstemas como habíamos hecho antes.<br>
<code>def __init__(self, nombre, version, derivada):</code><br>
Iniciamos el constructor automático que se ocupa de asignar los parámetros.<br>
<code>self.nombre = nombre<br>
self.version = version<br>
self.derivada = derivada</code><br>
Con estas líneas se guardan los atributos recibidos como valores dle objeto.<br>
<code>def mostrar_info(self):</code><br>
Define la forma cómo se mostrara la información de los atributos.<br>
<code>print(f"Nombre: {self.nombre}")<br>
print(f"Versión: {self.version}")<br>
print(f"Derivada: {self.derivada}")</code><br>
Instrucciones para imprimir en pantalla los atributos del objeto. Las llaves insertan el valor de las variables dentro del texto.<br>
<code>with open("sistema.txt", "r") as archivo:</code><br>
Este comando abre el archivo en modo de lectura y lo cierra una vez que se termina el bloque<br>
<code>lineas = archivo.readlines()</code><br>
Lee todas las líneas de un archivo y las guarda en una lista. Hablaremos de las lsitas en archivos posteriores.<br>
<code>nombre = lineas[0].strip()<br>
version = lineas[1].strip()<br>
derivada = lineas[2].strip()</code><br>
Accede a cada línea por su posición y elimina saltos de línea y espacios con el comando strip.<br>
<code>sistema = Sistemas(nombre, version, derivada)</code><br>
Crea una instancia del objeto de la clase Sistemas con los parámetros que leyó del archivo.<br>
<code>sistema.mostrar_info()</code><br>
Llama al método encargado de imprimir en pantalla<br>
La función open()</p>
<h4>La función open() viene predefinida dentro de Python y requiere los siguientes parámetros:</h4>
<h4>File</h4>
<p>Es obligatorio y le indica al programa donde buscar el archivo. Si está dentro de la misma carpeta del programa solo se indica el nombre del archivo y la extensión. SI no es necesario también indicar la ruta de donde está almacenada.<br>
<code>open("archivo.txt")</code> Cuando el archivo está en la carpeta actual.<br>
<code>open("carpeta/archivo.txt")</code> Cuando el archivo está dentro de otra carpeta.<br>
<code>open("/home/usuario/archivo.txt")</code> Se indica la carpeta dentro de la carpeta personal de un usuario específico.<br>
<code>open(3);</code> Se indica un archivo por el identificador que le asigna el sistema operativo.<br>
Mode<br>
Es un parámetro opcional que indica la forma con la que se trabaja con el archivo.</p>
<ul>
<li style="list-style-type: none;">
<ul>
<li><strong>r</strong>: Modo de solo lectura. Da error si el archivo no fue creado previamente.</li>
</ul>
</li>
</ul>
<p>&lt;li<strong>&gt;w</strong>: Escribe el archivo y lo crea si no está. Borra el contenido existente.</p>
<ul>
<li><strong>a</strong>: Crea el archivo si no existe. SI hay contenido escribe al final de este.</li>
<li><strong>x</strong>: Crea el archivo. Da error si no existe.</li>
<li><strong>r+</strong>: Lee y escribe el archivo, da error si no se creo previamente.</li>
<li><strong>w+</strong>: Lee y escribe el archivo. Borra el contenido existente.</li>
<li><strong>a+</strong>: Lee y escribe al final del contenido.</li>
<li><strong>t</strong>: Es la opción por defecto, trabaja con cadenas de texto.</li>
<li><strong>b</strong>: Trabaja con bytes. Es ideal para el trabajo con imágenes o pdf.</li>
</ul>
<p>buffering</p>
<p>Es el control de la memoria temporal antes de escribir un archivo. No es necesario especificarlo, pero en algunos casos puede se rútil.</p>
<ul>
<li><strong>0</strong>: Sin buffer, se escribe directo a disco. Ideal para trabajar con el modo b.</li>
<li><strong>1</strong>; Es el modo por defecto.  Almacena el dato cargado hasta encontrar un salto de línea y entonces lo escribe en la variable. Se usa solo en el modo de texto.</li>
<li><strong>=</strong>: Despues del igual se establece un valor en bytes para indicar el tamaño que debe tener el buffer.</li>
<li><strong>-1</strong>: El sistema operativo determina el tamaño del buffer.</li>
</ul>
<p>Algunos ejemplos</p>
<p><code>open("archivo.txt", buffering=0)</code> No crea el buffer ya que estamos trabajando con el modo binario.<br>
<code>open("archivo.txt",</code> buffering=1)  El buffer trabaja con saltos de línea<br>
<code>open("archivo.txt",</code> buffering=4096) Establece un buffer de 4096 bytes<br>
<code>open("archivo.txt"</code>, buffering=-1) Utiliza el buffer por defecto del sistema operativo.</p>
<h4>encoding</h4>
<p>Establece la codificación de caracteres del proyecto. Si no se especifica se utiliza la del sistema.</p>
<h4>errors</h4>
<p>Otro parámetro opcional. Define que hacer cuando se encuentran errores de codificación.</p>
<ul>
<li><strong>Strict</strong>: Indica un error cuando lo encuentra.</li>
<li><strong>Ignore:</strong> Omite los caracteres que no puede decodificar.</li>
<li><strong>Replace:</strong> Sustituye los caracteres no identificados por signos de pregunta.</li>
<li><strong>backslashreplace:</strong> Sustituye los caracteres que ignora por la secuencia \xNN</li>
</ul>
<h4>Newline</h4>
<p>Otro parámetro opcional pero que puede resultar útil cuando se trabaja con archivos generados por diferentes sistemas operativos.  Un salto de línea es un carácter invisible que le indica al sistmea operativo que terminó una línea y comienza la siguiente.</p>
<p>Continuaremos desarrollando este tema y explicando nuevas instrucciones en el próximo artículo.</p>

]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Curso de programación en Python con Linux Parte 4</title>
		<link>https://ubunlog.com/curso-de-programacion-en-python-con-linux-parte-4/</link>
		
		<dc:creator><![CDATA[Diego Germán González]]></dc:creator>
		<pubDate>Thu, 30 Apr 2026 11:11:39 +0000</pubDate>
				<category><![CDATA[Ubuntu]]></category>
		<guid isPermaLink="false">https://ubunlog.com/?p=57783</guid>

					<description><![CDATA[En los tiempos del humo generado por las empresas de Inteligencia Artificial y sus propagandistas, aprender programación sigue siendo más...]]></description>
										<content:encoded><![CDATA[<p><a href="https://ubunlog.com/wp-content/uploads/2026/04/cuarto.png"><img class="aligncenter size-full wp-image-57784 first-post-image" src="https://ubunlog.com/wp-content/uploads/2026/04/cuarto.png" alt="Programa en Python ilustrando el concepto de herencia de clases" width="1200" height="675" srcset="https://ubunlog.com/wp-content/uploads/2026/04/cuarto.png 1200w, https://ubunlog.com/wp-content/uploads/2026/04/cuarto-500x281.png 500w, https://ubunlog.com/wp-content/uploads/2026/04/cuarto-1024x576.png 1024w, https://ubunlog.com/wp-content/uploads/2026/04/cuarto-768x432.png 768w, https://ubunlog.com/wp-content/uploads/2026/04/cuarto-400x225.png 400w, https://ubunlog.com/wp-content/uploads/2026/04/cuarto-170x96.png 170w, https://ubunlog.com/wp-content/uploads/2026/04/cuarto-420x236.png 420w, https://ubunlog.com/wp-content/uploads/2026/04/cuarto-840x473.png 840w, https://ubunlog.com/wp-content/uploads/2026/04/cuarto-150x84.png 150w" sizes="(max-width: 1024px) 100vw, 860px" data-no-lazy="true"></a></p>
<p></p>
<p>En los tiempos del humo generado por las empresas de Inteligencia Artificial y sus propagandistas, aprender programación sigue siendo más necesario que nunca.<strong> En esta cuarta parte del curso de programación en Python con Linux seguiremos explicando como entender el paradigma de Programación orientada a Objetos.</strong> Recuerda que el enlace a la lección anterior está al final del post.</p>
<p><strong>Aunque los agentes y modelos de Inteligencia Artificial sean capaces de entender y escribir código, todavía sigue siendo necesario que un humano sea capaz de darles instrucciones detalladas</strong> de lo que tiene que hacer. Para esto no solo hay que entender el problema que se quiere resolver con la aplicación sino también diseñar la solución teniendo en cuenta las características del lenguaje.</p>
<p>Vamos a ver si dejamos en claro esto con una analogía.</p>
<p>Los obreros construyen los rascacielos. Pero, antes de empezar la construcción se necesitan arquitectos que diseñen los planos, ingenieros que hagan los cálculos estructurales y diseñen las conexiones eléctricas, de gas y agua.  Cuando el edificio esté terminado otras personas deberán determinar el diseño de interiores . Por supuesto que, tal vez trabajadores de experiencia podrían hacer un trabajo competente, siempre que no se presenten complicaciones. Pero, en la práctica nadie quiere apostar a eso.</p>
<p><strong>La realidad es que el vibe coding da mejores resultados cuanto más detalladas son las instrucciones</strong> y, que grandes empresas han sufrido interrupciones de servicio y borrado bases de datos irreemplazables por agentes de Inteligencia Artificial demasiado emprendedores con instrucciones insuficientes.</p>
<h2>Curso de programación en Python con Linux</h2>
<p><strong>Habíamos visto en los artículos anteriores que el modelo de Programación Orientada a Objetos se basa en  4 pilares: objetos, clases, métodos y atributos.</strong> Las clases son las plantillas donde se modelan los objetos o entidades sobre las cuales trabajamos. Esas plantillas indican los atributos que tendrán los objetos mientras que los métodos marcan el comportamiento del objeto.</p>
<p><strong>A los diferentes elementos creados con el molde establecido en las clases se lo denominan instancias.</strong> Por ejemplo, dentro de la clase Sistemas Operativos tenemos las instancias: Linux, Windows, macOS. Ahora bien, es posible que nos interese crear clases que se diferencien poco de clases ya creadas. No es necesario volver a escribir código ya que podemos aprovechar una característica de la Programación Orientada a Objetos conocida como herencia.</p>
<p>Veamos el siguiente programa con una clase agregada.</p>
<p><iframe style="border: none; width: 100%;" src="https://pastebin.com/embed_iframe/KrbEWKbv?theme=dark"></iframe></p>
<p>El motivo por el cual no pego el código directamente en el artículo es, como ya expliqué, es que la plataforma que usamos para publicar el blog no soporta la indentación. <strong>Esta práctica consiste en agregar espacios o tabulaciones (nota lo de o tabulaciones ya que no pueden mezclarse) haciendo que el código sea más fácil de entender.</strong><br>
<strong><br>
Con la indentación es más fácil estructurar el código de manera jerárquica</strong> diferenciando bloques del código como bucles, funciones o clases. Además, si no indentas adecuadamente los programas en Python no funciona.</p>
<p>Ahora vamos al análisis del programa línea por línea.</p>
<p><code>class Sistemas:</code></p>
<p>Como vimos, este programa crea la plantilla sobre la cuál se van a crear las instancias de sistemas operativos.</p>
<p><code>def __init__(self, nombre, version, derivada):</code></p>
<p>Acá estamos construyendo la clase.<strong> La primera parte es un método automatizado que se utiliza cada vez que se crea una.</strong> Lo que está entre paréntesis son los parámetros que va a tener el objeto. Self se usa siempre y hace referencia al objeto. En todos los casos va primero.  Los otros parámetros son los que establecimos en clases anteriores, el nombre de la distribución Linux, la versión  y de cuál distribuicón es derivada.</p>
<p><code>self.nombre = nombre<br>
self.version = version<br>
self.derivada = derivada</code></p>
<p>Estas líneas se usan para crear los atributos del objeto. Son variables específicas del objeto que actúan como variables dentro del mismo y los conservarán para cuando se necesiten.</p>
<p><code>def mostrar_info(self):</code></p>
<p>Este método define cómo se mostrará la información de los atributos del objeto. El parámetro self indica que solo debe usar los parámetros guardados como atributos.<br>
<code><br>
print(f"Nombre: {self.nombre}")<br>
print(f"Versión: {self.version}")<br>
print(f"Derivada: {self.derivada}")</code></p>
<p>Estas 3 líneas indican que la forma de mostrar la información de los atributos es imprimiéndolas en pantalla.</p>
<p><code>class SistemaConPeso(Sistemas):</code></p>
<p>Acá es donde se modifica nuestro programa con respecto al anterior. Agregamos una nueva clase extendida construida a partir de la anterior. De ahí que al nombre de la clase se le agregue el nombre de la clase anterior entre paréntesis.</p>
<p><code>def __init__(self, nombre, version, derivada, peso):</code></p>
<p>Este es constructor de la clase hija, casi igual al que vimos antes pero agregando el parámetro peso.</p>
<p><code>super().__init__(nombre, version, derivada)</code></p>
<p>Para no repetir código le indicamos al programa con la instrucción super que la tarea de ocuparse de nombre, versión y derivada es de la clase padre.<br>
<code><br>
self.peso = peso</code></p>
<p>Todavía teníamos que ocuparnos de guardar el atributo peso.</p>
<p><code>def mostrar_info(self):</code></p>
<p>Como de lo que se trata es de no escribir código de más, en lugar de crear una nueva función que muestre el dato adicional vamos a modificar la que ya teníamos.<br>
<code>super().mostrar_info()</code></p>
<p>Llama al método de la clase padre para establecer como deben mostrarse los atributos guardados en ella.<br>
<code>print(f"Peso: {self.peso}</code></p>
<p>Agrega la información sobre cómo deben mostrarse los datos de la clase actual.</p>
<p><code>sistema = SistemaConPeso("Linux Mint", "22", "Ubuntu", "3GB")</code></p>
<p>Crea el objeto donde se guardará la información con el nuevo parámetro agregado y lo guarda en la variable sistema.<br>
<code><br>
sistema.mostrar_info()</code></p>
<p>Llama al método encargado de mostrar la información</p>
<p>Por supuesto, que este programa no tiene usos prácticos reales. No tendría ningún sentido tener que introducir los valores de los atributos en el código ya que se necesitaría un programador cada vez que es necesario modificar algo. Como vimos en el ejemplo del 3 en raya, Python puede recibir y guardar información ingresada por el usuario mediante el teclado. También puede hacerlo leyendo archivos o interactuadno con bases de datos.</p>
<p>Pero, tuvo su utilidad para hacer más claros conceptos claves de la programación orientada a objetos como clases, atributos, constructores, métodos, herencia y polimorfismo. Prometo que en el próximo artículo termino de hablar de la Programación Orientada a Objetos y empiezo a hablar de cómo se hacen las cosas en Python</p>

]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
